From f3b19a5dc3cf57cc1f5b617f9ee6a232b8ce8eea Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 7 Feb 2017 12:26:00 +0700 Subject: skeleton for srarb --- src/mame/machine/interpro_srarb.cpp | 45 +++++++++++++++++++++++++++++++ src/mame/machine/interpro_srarb.h | 54 +++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 src/mame/machine/interpro_srarb.cpp create mode 100644 src/mame/machine/interpro_srarb.h diff --git a/src/mame/machine/interpro_srarb.cpp b/src/mame/machine/interpro_srarb.cpp new file mode 100644 index 00000000000..8624da0eb1c --- /dev/null +++ b/src/mame/machine/interpro_srarb.cpp @@ -0,0 +1,45 @@ +// license:BSD-3-Clause +// copyright-holders:Patrick Mackinlay + +/* +* An implementation of the SRX Abiter Gate Array device found on Intergraph InterPro family workstations. There is no +* public documentation on this device, so the implementation is being built to follow the logic of the +* system boot ROM and its diagnostic tests. +* +* Please be aware that code in here is not only broken, it's likely wrong in many cases. +* +* TODO +* - too long to list +*/ +#include "interpro_srarb.h" + +#define VERBOSE 0 + +DEVICE_ADDRESS_MAP_START(map, 32, interpro_srarb_device) + AM_RANGE(0x00, 0x03) AM_READWRITE(sdepid_r, sdepid_w) + AM_RANGE(0x04, 0x07) AM_READWRITE(snapid_r, snapid_w) + AM_RANGE(0x08, 0x0b) AM_READWRITE(prilo_r, prilo_w) + AM_RANGE(0x0c, 0x0f) AM_READWRITE(prihi_r, prihi_w) + AM_RANGE(0x10, 0x13) AM_READWRITE(errdomlo_r, errdomlo_w) + AM_RANGE(0x14, 0x17) AM_READWRITE(errdomhi_r, errdomhi_w) + AM_RANGE(0x18, 0x1b) AM_READWRITE(tmctrl_r, tmctrl_w) + + AM_RANGE(0x24, 0x27) AM_READWRITE(tmsrnem_r, tmsrnem_w) + AM_RANGE(0x28, 0x2b) AM_READWRITE(tmsrhog_r, tmsrhog_w) + AM_RANGE(0x2c, 0x2f) AM_READWRITE(tmscale_r, tmscale_w) +ADDRESS_MAP_END + +const device_type INTERPRO_SRARB = &device_creator; + +interpro_srarb_device::interpro_srarb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, INTERPRO_SRARB, "InterPro SRARB", tag, owner, clock, "srarb", __FILE__) +{ +} + +void interpro_srarb_device::device_start() +{ +} + +void interpro_srarb_device::device_reset() +{ +} \ No newline at end of file diff --git a/src/mame/machine/interpro_srarb.h b/src/mame/machine/interpro_srarb.h new file mode 100644 index 00000000000..20678e3cf3d --- /dev/null +++ b/src/mame/machine/interpro_srarb.h @@ -0,0 +1,54 @@ +// license:BSD-3-Clause +// copyright-holders:Patrick Mackinlay + +#pragma once + +#ifndef INTERPRO_SRARB_H_ +#define INTERPRO_SRARB_H_ + +#include "emu.h" + +class interpro_srarb_device : public device_t +{ +public: + interpro_srarb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + virtual DECLARE_ADDRESS_MAP(map, 32); + + DECLARE_READ32_MEMBER(sdepid_r) { return sdepid; } + DECLARE_WRITE32_MEMBER(sdepid_w) { sdepid = data; } + DECLARE_READ32_MEMBER(snapid_r) { return snapid; } + DECLARE_WRITE32_MEMBER(snapid_w) { snapid = data; } + DECLARE_READ32_MEMBER(prilo_r) { return prilo; } + DECLARE_WRITE32_MEMBER(prilo_w) { prilo = data; } + DECLARE_READ32_MEMBER(prihi_r) { return prihi; } + DECLARE_WRITE32_MEMBER(prihi_w) { prihi = data; } + + DECLARE_READ32_MEMBER(errdomlo_r) { return errdomlo; } + DECLARE_WRITE32_MEMBER(errdomlo_w) { errdomlo = data; } + DECLARE_READ32_MEMBER(errdomhi_r) { return errdomhi; } + DECLARE_WRITE32_MEMBER(errdomhi_w) { errdomhi = data; } + + DECLARE_READ32_MEMBER(tmctrl_r) { return tmctrl; } + DECLARE_WRITE32_MEMBER(tmctrl_w) { tmctrl = data; } + DECLARE_READ32_MEMBER(tmsrnem_r) { return tmsrnem; } + DECLARE_WRITE32_MEMBER(tmsrnem_w) { tmsrnem = data; } + DECLARE_READ32_MEMBER(tmsrhog_r) { return tmsrhog; } + DECLARE_WRITE32_MEMBER(tmsrhog_w) { tmsrhog = data; } + DECLARE_READ32_MEMBER(tmscale_r) { return tmscale; } + DECLARE_WRITE32_MEMBER(tmscale_w) { tmscale = data; } + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + u32 sdepid, snapid, prilo, prihi; + u32 errdomlo, errdomhi; + u32 tmctrl, tmsrnem, tmsrhog, tmscale; +}; + +// device type definition +extern const device_type INTERPRO_SRARB; + +#endif \ No newline at end of file -- cgit v1.2.3 From 5963478743503183711cad06fac5173a2b266824 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 7 Feb 2017 12:30:22 +0700 Subject: improved mcga/fmcc skeleton --- src/mame/machine/interpro_mcga.cpp | 89 ----------------------------------- src/mame/machine/interpro_mcga.h | 45 ------------------ src/mame/machine/interpro_mctl.cpp | 96 ++++++++++++++++++++++++++++++++++++++ src/mame/machine/interpro_mctl.h | 86 ++++++++++++++++++++++++++++++++++ 4 files changed, 182 insertions(+), 134 deletions(-) delete mode 100644 src/mame/machine/interpro_mcga.cpp delete mode 100644 src/mame/machine/interpro_mcga.h create mode 100644 src/mame/machine/interpro_mctl.cpp create mode 100644 src/mame/machine/interpro_mctl.h diff --git a/src/mame/machine/interpro_mcga.cpp b/src/mame/machine/interpro_mcga.cpp deleted file mode 100644 index d807f571bab..00000000000 --- a/src/mame/machine/interpro_mcga.cpp +++ /dev/null @@ -1,89 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Patrick Mackinlay - -/* -* An implementation of the MCGA device found on Intergraph InterPro family workstations. There is no -* public documentation on this device, so the implementation is being built to follow the logic of the -* system boot ROM and its diagnostic tests. -* -* Please be aware that code in here is not only broken, it's likely wrong in many cases. -* -* TODO -* - too long to list -*/ -#include "interpro_mcga.h" - -#define VERBOSE 0 -#if VERBOSE -#define LOG_MCGA(...) logerror(__VA_ARGS__) -#else -#define LOG_MCGA(...) {} -#endif - -DEVICE_ADDRESS_MAP_START(map, 16, interpro_mcga_device) - AM_RANGE(0x00, 0x3f) AM_READWRITE16(read, write, 0xffff) -ADDRESS_MAP_END - -const device_type INTERPRO_MCGA = &device_creator; - -interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INTERPRO_MCGA, "InterPro MCGA", tag, owner, clock, "mcga", __FILE__) -{ -} - -void interpro_mcga_device::device_start() -{ -} - -void interpro_mcga_device::device_reset() -{ - m_reg[0] = 0x00ff; // 0x00 - m_reg[2] = MCGA_CTRL_ENREFRESH | MCGA_CTRL_CBITFRCSUB | MCGA_CTRL_CBITFRCRD; // 0x08 ctrl - //m_mcga[4] = 0x8000; // 0x10 error - m_reg[10] = 0x00ff; // 0x28 - m_reg[14] = 0x0340; // 0x38 memsize -} - -WRITE16_MEMBER(interpro_mcga_device::write) -{ - /* - read MEMSIZE 0x38 mask 0xffff - read 0x00 mask 0x0000 - write CBSUB 0x20 mask 0x00ff data 0 - write FRCRD 0x18 mask 0x00ff data 0 - read ERROR 0x10 mask 0xffff - read 0x00 mask 0xffff - - (0x38 >> 8) & 0xF == 3? - - if (0x00 != 0xFF) -> register reset error - - 0x00 = 0x0055 (test value & 0xff) - r7 = 0x00 & 0xff - */ - LOG_MCGA("mcga write offset = 0x%08x, mask = 0x%08x, data = 0x%08x, pc = 0x%08x\n", offset, mem_mask, data, space.device().safe_pc()); - switch (offset) - { - case 0x02: // MCGA_CTRL - // HACK: set or clear error status depending on ENMMBE bit - if (data & MCGA_CTRL_ENMMBE) - m_reg[4] |= MCGA_ERROR_VALID; - // else - // m_reg[4] &= ~MCGA_ERROR_VALID; - - default: - m_reg[offset] = data; - break; - } -} - -READ16_MEMBER(interpro_mcga_device::read) -{ - LOG_MCGA("mcga read offset = 0x%08x, mask = 0x%08x, pc = 0x%08x\n", offset, mem_mask, space.device().safe_pc()); - - switch (offset) - { - default: - return m_reg[offset]; - } -} \ No newline at end of file diff --git a/src/mame/machine/interpro_mcga.h b/src/mame/machine/interpro_mcga.h deleted file mode 100644 index 4f3ecde78cc..00000000000 --- a/src/mame/machine/interpro_mcga.h +++ /dev/null @@ -1,45 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Patrick Mackinlay - -#pragma once - -#ifndef INTERPRO_MCGA_H_ -#define INTERPRO_MCGA_H_ - -#include "emu.h" - -// mcga control register -#define MCGA_CTRL_OPTMASK 0x00000003 -#define MCGA_CTRL_CBITFRCRD 0x00000004 -#define MCGA_CTRL_CBITFRCSUB 0x00000008 -#define MCGA_CTRL_ENREFRESH 0x00000010 -#define MCGA_CTRL_ENMSBE 0x00000100 -#define MCGA_CTRL_ENMMBE 0x00000200 -#define MCGA_CTRL_ENECC 0x00000400 -#define MCGA_CTRL_WRPROT 0x00008000 - -// mcga error register -#define MCGA_ERROR_VALID 0x00008000 - -class interpro_mcga_device : public device_t -{ -public: - interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual DECLARE_ADDRESS_MAP(map, 32); - - DECLARE_WRITE16_MEMBER(write); - DECLARE_READ16_MEMBER(read); - -protected: - virtual void device_start() override; - virtual void device_reset() override; - -private: - uint16_t m_reg[32]; -}; - -// device type definition -extern const device_type INTERPRO_MCGA; - -#endif \ No newline at end of file diff --git a/src/mame/machine/interpro_mctl.cpp b/src/mame/machine/interpro_mctl.cpp new file mode 100644 index 00000000000..ea28a86c593 --- /dev/null +++ b/src/mame/machine/interpro_mctl.cpp @@ -0,0 +1,96 @@ +// license:BSD-3-Clause +// copyright-holders:Patrick Mackinlay + +/* +* An implementation of the MCGA device found on Intergraph InterPro family workstations. There is no +* public documentation on this device, so the implementation is being built to follow the logic of the +* system boot ROM and its diagnostic tests. +* +* Please be aware that code in here is not only broken, it's likely wrong in many cases. +* +* TODO +* - too long to list +*/ +#include "interpro_mcga.h" + +#define VERBOSE 0 +#if VERBOSE +#define LOG_MCGA(...) logerror(__VA_ARGS__) +#else +#define LOG_MCGA(...) {} +#endif + +DEVICE_ADDRESS_MAP_START(map, 32, interpro_mcga_device) + AM_RANGE(0x00, 0x03) AM_READWRITE16(reg00_r, reg00_w, 0xffff) + AM_RANGE(0x08, 0x0b) AM_READWRITE16(control_r, control_w, 0xffff) + AM_RANGE(0x10, 0x13) AM_READWRITE16(error_r, error_w, 0xffff) + AM_RANGE(0x18, 0x1b) AM_READWRITE8(frcrd_r, frcrd_w, 0xff) + AM_RANGE(0x20, 0x23) AM_READWRITE8(cbsub_r, cbsub_w, 0xff) + AM_RANGE(0x28, 0x2b) AM_READWRITE16(reg28_r, reg28_w, 0xffff) + AM_RANGE(0x30, 0x33) AM_READWRITE16(reg30_r, reg30_w, 0xffff) + AM_RANGE(0x38, 0x3b) AM_READWRITE16(memsize_r, memsize_w, 0xffff) +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START(map, 32, interpro_fmcc_device) + AM_RANGE(0x00, 0x03) AM_READWRITE16(reg00_r, reg00_w, 0xffff) + AM_RANGE(0x08, 0x0b) AM_READWRITE16(control_r, control_w, 0xffff) + AM_RANGE(0x10, 0x13) AM_READWRITE16(error_r, error_w, 0xffff) + AM_RANGE(0x18, 0x1b) AM_READWRITE8(frcrd_r, frcrd_w, 0xff) + AM_RANGE(0x20, 0x23) AM_READWRITE8(cbsub_r, cbsub_w, 0xff) + AM_RANGE(0x28, 0x2b) AM_READWRITE16(reg28_r, reg28_w, 0xffff) + AM_RANGE(0x30, 0x33) AM_READWRITE16(reg30_r, reg30_w, 0xffff) + AM_RANGE(0x38, 0x3b) AM_READWRITE16(memsize_r, memsize_w, 0xffff) + AM_RANGE(0x48, 0x4b) AM_READWRITE16(error_control_r, error_control_w, 0xffff) +ADDRESS_MAP_END + +const device_type INTERPRO_MCGA = &device_creator; +const device_type INTERPRO_FMCC = &device_creator; + +interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +{ +} + +interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : interpro_mcga_device(mconfig, INTERPRO_MCGA, "InterPro MCGA", tag, owner, clock, "mcga", __FILE__) +{ +} + +interpro_fmcc_device::interpro_fmcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : interpro_mcga_device(mconfig, INTERPRO_FMCC, "InterPro FMCC", tag, owner, clock, "fmcc", __FILE__) +{ +} + +void interpro_mcga_device::device_start() +{ +} + +void interpro_mcga_device::device_reset() +{ + m_reg[0] = 0x00ff; + m_control = MCGA_CTRL_ENREFRESH | MCGA_CTRL_CBITFRCSUB | MCGA_CTRL_CBITFRCRD; + m_reg[1] = 0x00ff; + m_memsize = 0x0340; +} + +WRITE16_MEMBER(interpro_mcga_device::control_w) +{ + m_control = data & MCGA_CTRL_MASK; + + // HACK: set or clear error status depending on ENMMBE bit + if (data & MCGA_CTRL_ENMMBE) + m_error |= MCGA_ERROR_VALID; + // else + // error &= ~MCGA_ERROR_VALID; +} + +WRITE16_MEMBER(interpro_fmcc_device::control_w) +{ + m_control = data & FMCC_CTRL_MASK; + + // HACK: set or clear error status depending on ENMMBE bit + if (data & MCGA_CTRL_ENMMBE) + m_error |= MCGA_ERROR_VALID; + // else + // error &= ~MCGA_ERROR_VALID; +} \ No newline at end of file diff --git a/src/mame/machine/interpro_mctl.h b/src/mame/machine/interpro_mctl.h new file mode 100644 index 00000000000..744b2dc80c3 --- /dev/null +++ b/src/mame/machine/interpro_mctl.h @@ -0,0 +1,86 @@ +// license:BSD-3-Clause +// copyright-holders:Patrick Mackinlay + +#pragma once + +#ifndef INTERPRO_MCGA_H_ +#define INTERPRO_MCGA_H_ + +#include "emu.h" + +// mcga control register +#define MCGA_CTRL_OPTMASK 0x0003 +#define MCGA_CTRL_CBITFRCRD 0x0004 +#define MCGA_CTRL_CBITFRCSUB 0x0008 +#define MCGA_CTRL_ENREFRESH 0x0010 +#define MCGA_CTRL_ENMSBE 0x0100 +#define MCGA_CTRL_ENMMBE 0x0200 +#define MCGA_CTRL_ENECC 0x0400 +#define MCGA_CTRL_WRPROT 0x8000 + +// rom writes bit 0x80 to test if fmcc or mcga +#define MCGA_CTRL_MASK 0x871f +#define FMCC_CTRL_MASK 0x8fff + +// mcga error register +#define MCGA_ERROR_VALID 0x00008000 + +class interpro_mcga_device : public device_t +{ +public: + interpro_mcga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + virtual DECLARE_ADDRESS_MAP(map, 32); + + DECLARE_READ16_MEMBER(reg00_r) { return m_reg[0]; } + DECLARE_WRITE16_MEMBER(reg00_w) { m_reg[0] = data; } + DECLARE_READ16_MEMBER(control_r) { return m_control; } + DECLARE_WRITE16_MEMBER(control_w); + DECLARE_READ16_MEMBER(error_r) { return m_error; } + DECLARE_WRITE16_MEMBER(error_w) { m_error = data; } + DECLARE_READ8_MEMBER(frcrd_r) { return m_frcrd; } + DECLARE_WRITE8_MEMBER(frcrd_w) { m_frcrd = data; } + DECLARE_READ8_MEMBER(cbsub_r) { return m_cbsub; } + DECLARE_WRITE8_MEMBER(cbsub_w) { m_cbsub = data; } + DECLARE_READ16_MEMBER(reg28_r) { return m_reg[1]; } + DECLARE_WRITE16_MEMBER(reg28_w) { m_reg[1] = data; } + DECLARE_READ16_MEMBER(reg30_r) { return m_reg[2]; } + DECLARE_WRITE16_MEMBER(reg30_w) { m_reg[2] = data; } + DECLARE_READ16_MEMBER(memsize_r) { return m_memsize; } + DECLARE_WRITE16_MEMBER(memsize_w) { m_memsize = data; } + +protected: + virtual void device_start() override; + virtual void device_reset() override; + + u16 m_control, m_error, m_memsize; + u8 m_frcrd, m_cbsub; + + u16 m_reg[3]; + +private: + +}; + +class interpro_fmcc_device : public interpro_mcga_device +{ +public: + interpro_fmcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + virtual DECLARE_ADDRESS_MAP(map, 32) override; + + DECLARE_WRITE16_MEMBER(control_w) override; + + DECLARE_READ16_MEMBER(error_control_r) { return m_error_control; } + DECLARE_WRITE16_MEMBER(error_control_w) { m_error_control = data; } + +private: + u16 m_error_control; +}; + +// device type definition +extern const device_type INTERPRO_MCGA; +extern const device_type INTERPRO_FMCC; + +#endif \ No newline at end of file -- cgit v1.2.3 From 37ff97a5263c652106fce0c2039487501972a235 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 7 Feb 2017 12:34:25 +0700 Subject: correct header file name --- src/mame/machine/interpro_mctl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/machine/interpro_mctl.cpp b/src/mame/machine/interpro_mctl.cpp index ea28a86c593..b882cbe7724 100644 --- a/src/mame/machine/interpro_mctl.cpp +++ b/src/mame/machine/interpro_mctl.cpp @@ -11,7 +11,7 @@ * TODO * - too long to list */ -#include "interpro_mcga.h" +#include "interpro_mctl.h" #define VERBOSE 0 #if VERBOSE -- cgit v1.2.3 From f7de9a203ae858675f78f81672c690ba76fc9a29 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 7 Feb 2017 16:17:55 +0700 Subject: expanded skeleton --- src/mame/machine/interpro_sga.cpp | 74 ++++++++++++++------- src/mame/machine/interpro_sga.h | 134 +++++++++++++++++++++++++++++++------- 2 files changed, 160 insertions(+), 48 deletions(-) diff --git a/src/mame/machine/interpro_sga.cpp b/src/mame/machine/interpro_sga.cpp index 102c58a2f0b..053ed6da2c9 100644 --- a/src/mame/machine/interpro_sga.cpp +++ b/src/mame/machine/interpro_sga.cpp @@ -16,33 +16,62 @@ #define VERBOSE 0 DEVICE_ADDRESS_MAP_START(map, 32, interpro_sga_device) - AM_RANGE(0x00, 0x03) AM_READWRITE(gcs_r, gcs_w) + AM_RANGE(0x00, 0x03) AM_READWRITE(gcsr_r, gcsr_w) AM_RANGE(0x04, 0x07) AM_READWRITE(ipoll_r, ipoll_w) AM_RANGE(0x08, 0x0b) AM_READWRITE(imask_r, imask_w) AM_RANGE(0x0c, 0x0f) AM_READWRITE(range_base_r, range_base_w) AM_RANGE(0x10, 0x13) AM_READWRITE(range_end_r, range_end_w) - AM_RANGE(0x14, 0x17) AM_READWRITE(cttag_r, cttag_w) - AM_RANGE(0x18, 0x1b) AM_READWRITE(address_r, address_w) - AM_RANGE(0x1c, 0x1f) AM_READWRITE(dmacs_r, dmacs_w) - AM_RANGE(0x20, 0x23) AM_READWRITE(edmacs_r, edmacs_w) + AM_RANGE(0x14, 0x17) AM_READWRITE(cttag_r, cttag_w) // aka diag1 + AM_RANGE(0x18, 0x1b) AM_READWRITE(address_r, address_w) // aka diag0 + AM_RANGE(0x1c, 0x1f) AM_READWRITE(dmacsr_r, dmacsr_w) + AM_RANGE(0x20, 0x23) AM_READWRITE(edmacsr_r, edmacsr_w) // esga + AM_RANGE(0x24, 0x27) AM_READWRITE(reg6_range_r, reg6_range_w) // esga - AM_RANGE(0xa4, 0xa7) AM_READWRITE(dspad1_r, dspad1_w) - AM_RANGE(0xa8, 0xab) AM_READWRITE(dsoff1_r, dsoff1_w) + AM_RANGE(0x80, 0x83) AM_READWRITE(ddpta0_r, ddpta0_w) // dma 0 device page table address (esga) + AM_RANGE(0x84, 0x87) AM_READWRITE(ddpad0_r, ddpad0_w) // dma 0 device page address + AM_RANGE(0x88, 0x8b) AM_READWRITE(ddoff0_r, ddoff0_w) // dma 0 device page offset + AM_RANGE(0x8c, 0x8f) AM_READWRITE(ddtc0_r, ddtc0_w) // dma 0 device transfer context - AM_RANGE(0xb4, 0xb7) AM_READWRITE(unknown1_r, unknown1_w) - AM_RANGE(0xb8, 0xbb) AM_READWRITE(unknown2_r, unknown2_w) - AM_RANGE(0xbc, 0xbf) AM_READWRITE(ddtc1_r, ddtc1_w) + AM_RANGE(0x90, 0x93) AM_READWRITE(dspta0_r, dspta0_w) // dma 0 SRX page table address (esga) + AM_RANGE(0x94, 0x97) AM_READWRITE(dspad0_r, dspad0_w) // dma 0 SRX page address + AM_RANGE(0x98, 0x9b) AM_READWRITE(dsoff0_r, dsoff0_w) // dma 0 SRX page offset + AM_RANGE(0x9c, 0x9f) AM_READWRITE(dstc0_r, dstc0_w) // dma 0 SRX transfer context + + AM_RANGE(0xa4, 0xa7) AM_READWRITE(dspad1_r, dspad1_w) // dma 1 source page address + AM_RANGE(0xa8, 0xab) AM_READWRITE(dsoff1_r, dsoff1_w) // dma 1 source page offset + AM_RANGE(0xac, 0xaf) AM_READWRITE(dstc1_r, dstc1_w) // dma 1 source transfer count + + AM_RANGE(0xb4, 0xb7) AM_READWRITE(ddpad1_r, ddpad1_w) // dma 1 destination page address + AM_RANGE(0xb8, 0xbb) AM_READWRITE(ddoff1_r, ddoff1_w) // dma 1 destination page offset + AM_RANGE(0xbc, 0xbf) AM_READWRITE(ddtc1_r, ddtc1_w) // dma 1 destination transfer count + + AM_RANGE(0xc0, 0xc3) AM_READWRITE(ddpta2_r, ddpta2_w) // dma 2 device page table address (esga) + AM_RANGE(0xc4, 0xc7) AM_READWRITE(ddpad2_r, ddpad2_w) // dma 2 device page address + AM_RANGE(0xc8, 0xcb) AM_READWRITE(ddoff2_r, ddoff2_w) // dma 2 device page offset + AM_RANGE(0xcc, 0xcf) AM_READWRITE(ddtc2_r, ddtc2_w) // dma 2 device transfer context + + AM_RANGE(0xd0, 0xd3) AM_READWRITE(dspta2_r, dspta2_w) // dma 2 SRX page table address (esga) + AM_RANGE(0xd4, 0xd7) AM_READWRITE(dspad2_r, dspad2_w) // dma 2 SRX page address + AM_RANGE(0xd8, 0xdb) AM_READWRITE(dsoff2_r, dsoff2_w) // dma 2 SRX page offset + AM_RANGE(0xdc, 0xdf) AM_READWRITE(dstc2_r, dstc2_w) // dma 2 SRX transfer context + + AM_RANGE(0xe0, 0xe3) AM_READWRITE(ddrd2_r, ddrd2_w) // dma 2 device record descriptor (esga) + AM_RANGE(0xe4, 0xe7) AM_READWRITE(dsrd2_r, dsrd2_w) // dma 2 SRX record descriptor (esga) + AM_RANGE(0xe8, 0xeb) AM_READWRITE(dcksum0_r, dcksum0_w) // dma 1 device checksum register 0 (esga) + AM_RANGE(0xec, 0xef) AM_READWRITE(dcksum1_r, dcksum1_w) // dma 1 device checksum register 1 (esga) ADDRESS_MAP_END const device_type INTERPRO_SGA = &device_creator; interpro_sga_device::interpro_sga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INTERPRO_SGA, "InterPro SGA", tag, owner, clock, "sga", __FILE__) + : device_t(mconfig, INTERPRO_SGA, "InterPro SGA", tag, owner, clock, "sga", __FILE__), + out_berr_func(*this) { } void interpro_sga_device::device_start() { + out_berr_func.resolve(); } void interpro_sga_device::device_reset() @@ -51,16 +80,15 @@ void interpro_sga_device::device_reset() WRITE32_MEMBER(interpro_sga_device::ddtc1_w) { - // we assume that when this register is written, we should start a + m_ddtc1 = data; + + // assume that when this register is written, we should start a // memory to memory dma transfer - logerror(" gcs = 0x%08x dmacs = 0x%08x\n", m_gcs, m_dmacs); + logerror(" gcsr = 0x%08x dmacsr = 0x%08x\n", m_gcsr, m_dmacsr); logerror(" ipoll = 0x%08x imask = 0x%08x\n", m_ipoll, m_imask); - logerror("dspad1 = 0x%08x dsoff1 = 0x%08x\n", m_dspad1, m_dsoff1); - logerror(" unk1 = 0x%08x unk2 = 0x%08x\n", m_unknown1, m_unknown2); - logerror(" ddtc1 = 0x%08x\n", data); - - m_ddtc1 = data; + logerror("dspad1 = 0x%08x dsoff1 = 0x%08x dstc1 = 0x%08x\n", m_dspad1, m_dsoff1, m_dstc1); + logerror("ddpad1 = 0x%08x ddoff1 = 0x%08x ddtc1 = 0x%08x\n", m_ddpad1, m_ddoff1, m_ddtc1); // when complete, we indicate by setting DMAEND(2) - 2 is probably the channel // we also turn off the INTBERR and INTMMBE flags @@ -68,19 +96,17 @@ WRITE32_MEMBER(interpro_sga_device::ddtc1_w) m_ipoll |= 0x200; // if the address is invalid, fake a bus error - if (m_dspad1 == 0x40000000 || m_unknown1 == 0x40000000 - || m_dspad1 == 0x40000200 || m_unknown1 == 0x40000200) + if ((m_dspad1 & 0xfffff000) == 0x40000000 || (m_ddpad1 & 0xfffff) == 0x40000000) { m_ipoll |= 0x10000; // error cycle - bit 0x10 indicates source address error (dspad1) // now expecting 0x5463? -#if 0 if ((m_dspad1 & 0xfffff000) == 0x40000000) - m_ioga->bus_error(m_dspad1, 0x5433); + out_berr_func(space, 0x5433, m_dspad1); else - m_ioga->bus_error(m_unknown1, 0x5423); -#endif + out_berr_func(space, 0x5423, m_ddpad1); + // 0x5423 = BERR|SNAPOK | BG(ICAMMU)? | CT(23) // 0x5433 = BERR|SNAPOK | BG(ICAMMU)? | CT(33) // 0x5463 = BERR|SNAPOK | BG(ICAMMU)? | TAG(1) | CT(23) diff --git a/src/mame/machine/interpro_sga.h b/src/mame/machine/interpro_sga.h index 06c2d1fba8f..6e75ce2b1c8 100644 --- a/src/mame/machine/interpro_sga.h +++ b/src/mame/machine/interpro_sga.h @@ -8,15 +8,20 @@ #include "emu.h" +#define MCFG_INTERPRO_SGA_BERR_CB(_out_berr) \ + devcb = &interpro_sga_device::static_set_out_berr_callback(*device, DEVCB_##_out_berr); + class interpro_sga_device : public device_t { public: interpro_sga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + template static devcb_base &static_set_out_berr_callback(device_t &device, _Object object) { return downcast(device).out_berr_func.set_callback(object); } + virtual DECLARE_ADDRESS_MAP(map, 32); - DECLARE_READ32_MEMBER(gcs_r) { return m_gcs; } - DECLARE_WRITE32_MEMBER(gcs_w) { m_gcs = data; } + DECLARE_READ32_MEMBER(gcsr_r) { return m_gcsr; } + DECLARE_WRITE32_MEMBER(gcsr_w) { m_gcsr = data; } DECLARE_READ32_MEMBER(ipoll_r) { return m_ipoll; } DECLARE_WRITE32_MEMBER(ipoll_w) { m_ipoll = data; } DECLARE_READ32_MEMBER(imask_r) { return m_imask; } @@ -29,40 +34,121 @@ public: DECLARE_WRITE32_MEMBER(cttag_w) { m_cttag = data; } DECLARE_READ32_MEMBER(address_r) { return m_address; } DECLARE_WRITE32_MEMBER(address_w) { m_address = data; } - DECLARE_READ32_MEMBER(dmacs_r) { return m_dmacs; } - DECLARE_WRITE32_MEMBER(dmacs_w) { m_dmacs = data; } - DECLARE_READ32_MEMBER(edmacs_r) { return m_edmacs; } - DECLARE_WRITE32_MEMBER(edmacs_w) { m_edmacs = data; } + DECLARE_READ32_MEMBER(dmacsr_r) { return m_dmacsr; } + DECLARE_WRITE32_MEMBER(dmacsr_w) { m_dmacsr = data; } + + DECLARE_READ32_MEMBER(edmacsr_r) { return m_edmacsr; } + DECLARE_WRITE32_MEMBER(edmacsr_w) { m_edmacsr = data; } + DECLARE_READ32_MEMBER(reg6_range_r) { return m_reg6_range; } + DECLARE_WRITE32_MEMBER(reg6_range_w) { m_reg6_range = data; } + + DECLARE_READ32_MEMBER(ddpta0_r) { return m_ddpta0; } + DECLARE_WRITE32_MEMBER(ddpta0_w) { m_ddpta0 = data; } + DECLARE_READ32_MEMBER(ddpad0_r) { return m_ddpad0; } + DECLARE_WRITE32_MEMBER(ddpad0_w) { m_ddpad0 = data; } + DECLARE_READ32_MEMBER(ddoff0_r) { return m_ddoff0; } + DECLARE_WRITE32_MEMBER(ddoff0_w) { m_ddoff0 = data; } + DECLARE_READ32_MEMBER(ddtc0_r) { return m_ddtc0; } + DECLARE_WRITE32_MEMBER(ddtc0_w) { m_ddtc0 = data; } + + DECLARE_READ32_MEMBER(dspta0_r) { return m_dspta0; } + DECLARE_WRITE32_MEMBER(dspta0_w) { m_dspta0 = data; } + DECLARE_READ32_MEMBER(dspad0_r) { return m_dspad0; } + DECLARE_WRITE32_MEMBER(dspad0_w) { m_dspad0 = data; } + DECLARE_READ32_MEMBER(dsoff0_r) { return m_dsoff0; } + DECLARE_WRITE32_MEMBER(dsoff0_w) { m_dsoff0 = data; } + DECLARE_READ32_MEMBER(dstc0_r) { return m_dstc0; } + DECLARE_WRITE32_MEMBER(dstc0_w) { m_dstc0 = data; } + DECLARE_READ32_MEMBER(dspad1_r) { return m_dspad1; } DECLARE_WRITE32_MEMBER(dspad1_w) { m_dspad1 = data; } DECLARE_READ32_MEMBER(dsoff1_r) { return m_dsoff1; } DECLARE_WRITE32_MEMBER(dsoff1_w) { m_dsoff1 = data; } - DECLARE_READ32_MEMBER(unknown1_r) { return m_unknown1; } - DECLARE_WRITE32_MEMBER(unknown1_w) { m_unknown1 = data; } - DECLARE_READ32_MEMBER(unknown2_r) { return m_unknown2; } - DECLARE_WRITE32_MEMBER(unknown2_w) { m_unknown2 = data; } + DECLARE_READ32_MEMBER(dstc1_r) { return m_dstc1; } + DECLARE_WRITE32_MEMBER(dstc1_w) { m_dstc1 = data; } + + DECLARE_READ32_MEMBER(ddpad1_r) { return m_ddpad1; } + DECLARE_WRITE32_MEMBER(ddpad1_w) { m_ddpad1 = data; } + DECLARE_READ32_MEMBER(ddoff1_r) { return m_ddoff1; } + DECLARE_WRITE32_MEMBER(ddoff1_w) { m_ddoff1 = data; } DECLARE_READ32_MEMBER(ddtc1_r) { return m_ddtc1; } DECLARE_WRITE32_MEMBER(ddtc1_w); + DECLARE_READ32_MEMBER(ddpta2_r) { return m_ddpta2; } + DECLARE_WRITE32_MEMBER(ddpta2_w) { m_ddpta2 = data; } + DECLARE_READ32_MEMBER(ddpad2_r) { return m_ddpad2; } + DECLARE_WRITE32_MEMBER(ddpad2_w) { m_ddpad2 = data; } + DECLARE_READ32_MEMBER(ddoff2_r) { return m_ddoff2; } + DECLARE_WRITE32_MEMBER(ddoff2_w) { m_ddoff2 = data; } + DECLARE_READ32_MEMBER(ddtc2_r) { return m_ddtc2; } + DECLARE_WRITE32_MEMBER(ddtc2_w) { m_ddtc2 = data; } + + DECLARE_READ32_MEMBER(dspta2_r) { return m_dspta2; } + DECLARE_WRITE32_MEMBER(dspta2_w) { m_dspta2 = data; } + DECLARE_READ32_MEMBER(dspad2_r) { return m_dspad2; } + DECLARE_WRITE32_MEMBER(dspad2_w) { m_dspad2 = data; } + DECLARE_READ32_MEMBER(dsoff2_r) { return m_dsoff2; } + DECLARE_WRITE32_MEMBER(dsoff2_w) { m_dsoff2 = data; } + DECLARE_READ32_MEMBER(dstc2_r) { return m_dstc2; } + DECLARE_WRITE32_MEMBER(dstc2_w) { m_dstc2 = data; } + + DECLARE_READ32_MEMBER(ddrd2_r) { return m_ddrd2; } + DECLARE_WRITE32_MEMBER(ddrd2_w) { m_ddrd2 = data; } + DECLARE_READ32_MEMBER(dsrd2_r) { return m_dsrd2; } + DECLARE_WRITE32_MEMBER(dsrd2_w) { m_dsrd2 = data; } + DECLARE_READ32_MEMBER(dcksum0_r) { return m_dcksum0; } + DECLARE_WRITE32_MEMBER(dcksum0_w) { m_dcksum0 = data; } + DECLARE_READ32_MEMBER(dcksum1_r) { return m_dcksum1; } + DECLARE_WRITE32_MEMBER(dcksum1_w) { m_dcksum1 = data; } + protected: virtual void device_start() override; virtual void device_reset() override; private: - uint32_t m_gcs; // general control/status - uint32_t m_ipoll; // interrupt poll - uint32_t m_imask; // interrupt mask - uint32_t m_range_base; - uint32_t m_range_end; - uint32_t m_cttag; // error cycletype/tag - uint32_t m_address; - uint32_t m_dmacs; // dma control/status - uint32_t m_edmacs; // extended dma control/status - uint32_t m_dspad1; - uint32_t m_dsoff1; - uint32_t m_unknown1; - uint32_t m_unknown2; - uint32_t m_ddtc1; + u32 m_gcsr; // general control/status + u32 m_ipoll; // interrupt poll + u32 m_imask; // interrupt mask + u32 m_range_base; + u32 m_range_end; + u32 m_cttag; // error cycletype/tag, aka diag1 + u32 m_address; // aka diag0 + u32 m_dmacsr; // dma control/status + + u32 m_edmacsr; // extended dma control/status + u32 m_reg6_range; // region 6 range + + u32 m_ddpta0; // dma 0 device page table address + u32 m_ddpad0; // dma 0 device page address + u32 m_ddoff0; // dma 0 device page offset + u32 m_ddtc0; // dma 0 device transfer context + u32 m_dspta0; // dma 0 SRX page table address + u32 m_dspad0; // dma 0 SRX page address + u32 m_dsoff0; // dma 0 SRX page offset + u32 m_dstc0; // dma 0 SRX transfer context + + u32 m_dspad1; // dma 1 source page address + u32 m_dsoff1; // dma 1 source page offset + u32 m_dstc1; // dma 1 source transfer count + u32 m_ddpad1; // dma 1 destination page address + u32 m_ddoff1; // dma 1 destination page offset + u32 m_ddtc1; // dma 1 destination transfer count + + u32 m_ddpta2; // dma 2 device page table address + u32 m_ddpad2; // dma 2 device page address + u32 m_ddoff2; // dma 2 device page offset + u32 m_ddtc2; // dma 2 device transfer context + u32 m_dspta2; // dma 2 SRX page table address + u32 m_dspad2; // dma 2 SRX page address + u32 m_dsoff2; // dma 2 SRX page offset + u32 m_dstc2; // dma 2 SRX transfer context + + u32 m_ddrd2; // dma 2 device record descriptor + u32 m_dsrd2; // dma 2 SRX record descriptor + u32 m_dcksum0; // dma 1 device checksum register 0 + u32 m_dcksum1; // dma 1 device checksum register 1 + + devcb_write32 out_berr_func; }; // device type definition -- cgit v1.2.3 From b319e00e61558bc82a4a5de1c89ec9ddd91bdcd0 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 7 Feb 2017 16:18:16 +0700 Subject: fix mcga/fmcc detection --- src/mame/machine/interpro_mctl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/machine/interpro_mctl.h b/src/mame/machine/interpro_mctl.h index 744b2dc80c3..67b4a10b2b1 100644 --- a/src/mame/machine/interpro_mctl.h +++ b/src/mame/machine/interpro_mctl.h @@ -36,7 +36,7 @@ public: DECLARE_READ16_MEMBER(reg00_r) { return m_reg[0]; } DECLARE_WRITE16_MEMBER(reg00_w) { m_reg[0] = data; } DECLARE_READ16_MEMBER(control_r) { return m_control; } - DECLARE_WRITE16_MEMBER(control_w); + virtual DECLARE_WRITE16_MEMBER(control_w); DECLARE_READ16_MEMBER(error_r) { return m_error; } DECLARE_WRITE16_MEMBER(error_w) { m_error = data; } DECLARE_READ8_MEMBER(frcrd_r) { return m_frcrd; } -- cgit v1.2.3 From 0e269bc906cb65a15410ee044b7361e1bd659fca Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 7 Feb 2017 17:09:44 +0700 Subject: expand cammu skeletons --- src/devices/cpu/clipper/clipper.h | 2 +- src/mame/machine/cammu.cpp | 383 ++++++++++++++++++++++++++++++++++---- src/mame/machine/cammu.h | 197 +++++++++++++++++++- 3 files changed, 535 insertions(+), 47 deletions(-) diff --git a/src/devices/cpu/clipper/clipper.h b/src/devices/cpu/clipper/clipper.h index 037b6549195..d2b58ee848a 100644 --- a/src/devices/cpu/clipper/clipper.h +++ b/src/devices/cpu/clipper/clipper.h @@ -191,7 +191,7 @@ class clipper_device : public cpu_device public: clipper_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source); - DECLARE_READ_LINE_MEMBER(ssw) { return m_ssw; } + DECLARE_READ32_MEMBER(ssw) { return m_ssw; } protected: // device-level overrides diff --git a/src/mame/machine/cammu.cpp b/src/mame/machine/cammu.cpp index 1ee7cdab38a..6a8cbbd6b6a 100644 --- a/src/mame/machine/cammu.cpp +++ b/src/mame/machine/cammu.cpp @@ -11,9 +11,7 @@ * * TODO * - almost everything - * - map registers * - refactor hardware tlb - * - address translation * - faults * - tlb * - cache @@ -23,19 +21,80 @@ #include "cammu.h" #define VERBOSE 0 +#define DTU 1 // each variant of the cammu has different registers and a different addressing map // TODO: decode the cammu registers properly DEVICE_ADDRESS_MAP_START(map, 32, cammu_c4t_device) - AM_RANGE(0x000, 0xfff) AM_READWRITE(cammu_r, cammu_w) + AM_RANGE(0x008, 0x00b) AM_READWRITE(ram_line_r, ram_line_w) + AM_RANGE(0x010, 0x013) AM_READWRITE(s_pdo_r, s_pdo_w) + AM_RANGE(0x018, 0x01b) AM_READWRITE(u_pdo_r, u_pdo_w) + AM_RANGE(0x020, 0x023) AM_READWRITE(htlb_offset_r, htlb_offset_w) + AM_RANGE(0x028, 0x02b) AM_READWRITE(i_fault_r, i_fault_w) + AM_RANGE(0x030, 0x033) AM_READWRITE(fault_address_1_r, fault_address_1_w) + AM_RANGE(0x038, 0x03b) AM_READWRITE(fault_address_2_r, fault_address_2_w) + AM_RANGE(0x040, 0x043) AM_READWRITE(fault_data_1_lo_r, fault_data_1_lo_w) + AM_RANGE(0x048, 0x04b) AM_READWRITE(fault_data_1_hi_r, fault_data_1_hi_w) + AM_RANGE(0x050, 0x053) AM_READWRITE(fault_data_2_lo_r, fault_data_2_lo_w) + AM_RANGE(0x058, 0x05b) AM_READWRITE(fault_data_2_hi_r, fault_data_2_hi_w) + AM_RANGE(0x060, 0x063) AM_READWRITE(c4_bus_poll_r, c4_bus_poll_w) + AM_RANGE(0x068, 0x06b) AM_READWRITE(control_r, control_w) + AM_RANGE(0x070, 0x073) AM_READWRITE(bio_control_r, bio_control_w) + AM_RANGE(0x078, 0x07b) AM_READWRITE(bio_address_tag_r, bio_address_tag_w) + + AM_RANGE(0x100, 0x103) AM_READWRITE(cache_data_lo_r, cache_data_lo_w) + AM_RANGE(0x104, 0x107) AM_READWRITE(cache_data_hi_r, cache_data_hi_w) + AM_RANGE(0x108, 0x10b) AM_READWRITE(cache_cpu_tag_r, cache_cpu_tag_w) + AM_RANGE(0x10c, 0x10f) AM_READWRITE(cache_system_tag_valid_r, cache_system_tag_valid_w) + AM_RANGE(0x110, 0x113) AM_READWRITE(cache_system_tag_r, cache_system_tag_w) + AM_RANGE(0x118, 0x11b) AM_READWRITE(tlb_va_line_r, tlb_va_line_w) + AM_RANGE(0x11c, 0x11f) AM_READWRITE(tlb_ra_line_r, tlb_ra_line_w) ADDRESS_MAP_END DEVICE_ADDRESS_MAP_START(map, 32, cammu_c4i_device) - AM_RANGE(0x000, 0xfff) AM_READWRITE(cammu_r, cammu_w) + AM_RANGE(0x000, 0x003) AM_READWRITE(reset_r, reset_w) + AM_RANGE(0x010, 0x013) AM_READWRITE(s_pdo_r, s_pdo_w) + AM_RANGE(0x018, 0x01b) AM_READWRITE(u_pdo_r, u_pdo_w) + AM_RANGE(0x020, 0x023) AM_READWRITE(clr_s_data_tlb_r, clr_s_data_tlb_w) + AM_RANGE(0x028, 0x02b) AM_READWRITE(clr_u_data_tlb_r, clr_u_data_tlb_w) + AM_RANGE(0x030, 0x033) AM_READWRITE(clr_s_insn_tlb_r, clr_s_insn_tlb_w) + AM_RANGE(0x038, 0x03b) AM_READWRITE(clr_u_insn_tlb_r, clr_u_insn_tlb_w) + + AM_RANGE(0x068, 0x06b) AM_READWRITE(control_r, control_w) + + AM_RANGE(0x080, 0x083) AM_READWRITE(test_data_r, test_data_w) + AM_RANGE(0x088, 0x08b) AM_READWRITE(i_fault_r, i_fault_w) + AM_RANGE(0x090, 0x093) AM_READWRITE(fault_address_1_r, fault_address_1_w) + AM_RANGE(0x098, 0x09b) AM_READWRITE(fault_address_2_r, fault_address_2_w) + AM_RANGE(0x0a0, 0x0a3) AM_READWRITE(fault_data_1_lo_r, fault_data_1_lo_w) + AM_RANGE(0x0a8, 0x0ab) AM_READWRITE(fault_data_1_hi_r, fault_data_1_hi_w) + AM_RANGE(0x0b0, 0x0b3) AM_READWRITE(fault_data_2_lo_r, fault_data_2_lo_w) + AM_RANGE(0x0b8, 0x0bb) AM_READWRITE(fault_data_2_hi_r, fault_data_2_hi_w) + AM_RANGE(0x0c0, 0x0c3) AM_READWRITE(test_address_r, test_address_w) ADDRESS_MAP_END DEVICE_ADDRESS_MAP_START(map, 32, cammu_c3_device) - AM_RANGE(0x000, 0xfff) AM_READWRITE(cammu_r, cammu_w) + // following is actually tlb + AM_RANGE(0x800, 0x8ff) AM_NOP + AM_RANGE(0x904, 0x907) AM_READWRITE(d_s_pdo_r, d_s_pdo_w) + AM_RANGE(0x908, 0x90b) AM_READWRITE(d_u_pdo_r, d_u_pdo_w) + AM_RANGE(0x910, 0x913) AM_READWRITE(d_fault_r, d_fault_w) + AM_RANGE(0x940, 0x943) AM_READWRITE(d_control_r, d_control_w) + AM_RANGE(0x980, 0x983) AM_READWRITE(d_reset_r, d_reset_w) + + AM_RANGE(0xa00, 0xaff) AM_NOP + AM_RANGE(0xb04, 0xb07) AM_READWRITE(i_s_pdo_r, i_s_pdo_w) + AM_RANGE(0xb08, 0xb0b) AM_READWRITE(i_u_pdo_r, i_u_pdo_w) + AM_RANGE(0xb10, 0xb13) AM_READWRITE(i_fault_r, i_fault_w) + AM_RANGE(0xb40, 0xb43) AM_READWRITE(i_control_r, i_control_w) + AM_RANGE(0xb80, 0xb83) AM_READWRITE(i_reset_r, i_reset_w) + + AM_RANGE(0xc00, 0xcff) AM_NOP + AM_RANGE(0xd04, 0xd07) AM_WRITE(g_s_pdo_w) + AM_RANGE(0xd08, 0xd0b) AM_WRITE(g_u_pdo_w) + AM_RANGE(0xd10, 0xd13) AM_WRITE(g_fault_w) + AM_RANGE(0xd40, 0xd43) AM_WRITE(g_control_w) + AM_RANGE(0xd80, 0xd83) AM_WRITE(g_reset_w) ADDRESS_MAP_END const device_type CAMMU_C4T = &device_creator; @@ -43,10 +102,13 @@ const device_type CAMMU_C4I = &device_creator; const device_type CAMMU_C3 = &device_creator; cammu_c4t_device::cammu_c4t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cammu_device(mconfig, CAMMU_C4T, "C4E/C4T CAMMU", tag, owner, clock, "C4T", __FILE__) { } + : cammu_c4_device(mconfig, CAMMU_C4T, "C4E/C4T CAMMU", tag, owner, clock, "C4T", __FILE__) { } cammu_c4i_device::cammu_c4i_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cammu_device(mconfig, CAMMU_C4I, "C4I CAMMU", tag, owner, clock, "C4I", __FILE__) { } + : cammu_c4_device(mconfig, CAMMU_C4I, "C4I CAMMU", tag, owner, clock, "C4I", __FILE__) { } + +cammu_c4_device::cammu_c4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) + : cammu_device(mconfig, type, name, tag, owner, clock, shortname, source) { } cammu_c3_device::cammu_c3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : cammu_device(mconfig, CAMMU_C4T, "C1/C3 CAMMU", tag, owner, clock, "C3", __FILE__) { } @@ -65,7 +127,7 @@ cammu_device::cammu_device(const machine_config &mconfig, device_type type, cons void cammu_device::device_start() { - m_ssw_func.resolve_safe(0); + m_ssw_func.resolve(); m_main_space = &space(AS_0); m_io_space = &space(AS_1); @@ -89,93 +151,340 @@ const address_space_config *cammu_device::memory_space_config (address_spacenum return nullptr; } -READ32_MEMBER(cammu_device::mmu_r) +READ32_MEMBER(cammu_device::insn_r) { u32 ssw = m_ssw_func(); - u32 address = offset << 2; + u32 va = offset << 2; // in supervisor mode, the first 8 pages are always mapped via the hard-wired tlb - if ((ssw & 0x40000000) == 0 && (address & ~0x7fff) == 0) + if ((ssw & 0x40000000) == 0 && (va & ~0x7fff) == 0) { - switch (address & 0xf000) + switch (va & 0xf000) { case 0x0000: case 0x1000: case 0x2000: case 0x3000: // pages 0-3: main space pages 0-3 - return m_main_space->read_dword(address, mem_mask); + return m_main_space->read_dword(va, mem_mask); case 0x4000: case 0x5000: // pages 4-5: i/o space pages 0-1 - return m_io_space->read_dword(address & 0x1fff, mem_mask); + return m_io_space->read_dword(va & 0x1fff, mem_mask); case 0x6000: case 0x7000: // pages 6-7: boot space pages 0-1 - return m_boot_space->read_dword(address & 0x1fff, mem_mask); + return m_boot_space->read_dword(va & 0x1fff, mem_mask); + } + } + + // if not in mapped mode, default to main memory space + if ((ssw & 0x04000000) == 0) + return m_main_space->read_dword(va); +#if DTU + // get the page table entry + u32 pte = get_pte(va, ssw & 0x40000000, false); + + // translate the address + u32 ra = (pte & 0xfffff000) | (va & 0xfff); + + // execute the read based on the system tag + switch ((pte & 0xe00) >> 9) + { + case 0: + case 1: + case 2: + case 3: +#if ICACHE_ENTRIES + { + const u16 slot = offset & (ICACHE_ENTRIES - 1); + + if (m_icache[slot].offset != offset) + { + m_icache[slot].offset = offset; + m_icache[slot].data = m_main_space->read_dword(ra); + } + + return m_icache[slot].data; } +#else + return m_main_space->read_dword(ra, mem_mask); +#endif + + case 4: + return m_io_space->read_dword(ra, mem_mask); + + case 5: + return m_boot_space->read_dword(ra, mem_mask); + + case 6: // cache purge + case 7: // main memory, slave mode + fatalerror("system tag %d not supported %s\n", (pte & 0xe00) >> 9, machine().describe_context()); } + return 0; + +#else // FIXME: currently maps addresses with upper bits 0x00 or 0x7f1 to main memory and everything else to I/O - if ((address & 0xff000000) == 0x00000000 || (address & 0xfff00000) == 0x7f100000) + if ((va & 0xff000000) == 0x00000000 || (va & 0xfff00000) == 0x7f100000) + { +#if ICACHE_ENTRIES + const u16 slot = offset & (ICACHE_ENTRIES - 1); + + if (m_icache[slot].offset != offset) + { + m_icache[slot].offset = offset; + m_icache[slot].data = m_main_space->read_dword(va); + } + + return m_icache[slot].data; +#else + return m_main_space->read_dword(va, mem_mask); +#endif + } + else + return m_io_space->read_dword(va, mem_mask); +#endif +} + +READ32_MEMBER(cammu_device::data_r) +{ + u32 ssw = m_ssw_func(); + u32 va = offset << 2; + + // in supervisor mode (and not user data mode), the first 8 pages are always mapped via the hard-wired tlb + if (((ssw & 0x50000000) == 0) && ((va & ~0x7fff) == 0)) { -#ifdef ICACHE_ENTRIES - // if this is an instruction fetch, check the cache first - if (space.spacenum() == AS_PROGRAM) + switch (va & 0xf000) { - if (m_icache[offset & (ICACHE_ENTRIES-1)].offset != offset) + case 0x0000: + case 0x1000: + case 0x2000: + case 0x3000: + // pages 0-3: main space pages 0-3 + return m_main_space->read_dword(va, mem_mask); + + case 0x4000: + case 0x5000: + // pages 4-5: i/o space pages 0-1 + return m_io_space->read_dword(va & 0x1fff, mem_mask); + + case 0x6000: + case 0x7000: + // pages 6-7: boot space pages 0-1 + return m_boot_space->read_dword(va & 0x1fff, mem_mask); + } + } + + // if not in mapped mode, default to main memory space + if ((ssw & 0x04000000) == 0) + return m_main_space->read_dword(va); + +#if DTU + // get the page table entry + u32 pte = get_pte(va, ssw & 0x50000000, space.spacenum() == AS_DATA); + + // translate the address + u32 ra = (pte & 0xfffff000) | (va & 0xfff); + + // execute the read based on the system tag + switch ((pte & 0xe00) >> 9) + { + case 0: + case 1: + case 2: + case 3: +#if DCACHE_ENTRIES + { + const u16 slot = offset & (DCACHE_ENTRIES - 1); + + if (m_dcache[slot].offset != offset) { - m_icache[offset & (ICACHE_ENTRIES - 1)].offset = offset; - m_icache[offset & (ICACHE_ENTRIES - 1)].data = m_main_space->read_dword(address, mem_mask); + m_dcache[slot].offset = offset; + m_dcache[slot].data = m_main_space->read_dword(ra); } - return m_icache[offset & (ICACHE_ENTRIES - 1)].data; + return m_dcache[slot].data; } - else +#else + return m_main_space->read_dword(ra, mem_mask); +#endif + + case 4: + return m_io_space->read_dword(ra, mem_mask); + + case 5: + return m_boot_space->read_dword(ra, mem_mask); + + case 6: // cache purge + case 7: // main memory, slave mode + fatalerror("data_r: system tag %d not supported at %s\n", (pte & 0xe00) >> 9, machine().describe_context()); + } + + return 0; +#else + // FIXME: currently maps addresses with upper bits 0x00 or 0x7f1 to main memory and everything else to I/O + if ((va & 0xff000000) == 0x00000000 || (va & 0xfff00000) == 0x7f100000) + { +#if DCACHE_ENTRIES + const u16 slot = offset & (DCACHE_ENTRIES - 1); + + if (m_dcache[slot].offset != offset) + { + m_dcache[slot].offset = offset; + m_dcache[slot].data = m_main_space->read_dword(va); + } + + return m_dcache[slot].data; #endif - return m_main_space->read_dword(address, mem_mask); + return m_main_space->read_dword(va, mem_mask); } else - return m_io_space->read_dword(address, mem_mask); + return m_io_space->read_dword(va, mem_mask); +#endif } -WRITE32_MEMBER(cammu_device::mmu_w) +WRITE32_MEMBER(cammu_device::data_w) { u32 ssw = m_ssw_func(); - u32 address = offset << 2; + u32 va = offset << 2; - // in supervisor mode, the first 8 pages are always mapped via the hard-wired tlb - if ((ssw & 0x40000000) == 0 && (address & ~0x7fff) == 0) + // in supervisor mode (and not user data mode), the first 8 pages are always mapped via the hard-wired tlb + if (((ssw & 0x50000000) == 0) && ((va & ~0x7fff) == 0)) { - switch (address & 0xf000) + switch (va & 0xf000) { case 0x0000: case 0x1000: case 0x2000: case 0x3000: // pages 0-3: main space pages 0-3 - m_main_space->write_dword(address, data, mem_mask); + m_main_space->write_dword(va, data, mem_mask); return; case 0x4000: case 0x5000: // pages 4-5: i/o space pages 0-1 - m_io_space->write_dword(address & 0x1fff, data, mem_mask); + m_io_space->write_dword(va & 0x1fff, data, mem_mask); return; case 0x6000: case 0x7000: // pages 6-7: boot space pages 0-1 - m_boot_space->write_dword(address & 0x1fff, data, mem_mask); + m_boot_space->write_dword(va & 0x1fff, data, mem_mask); return; } } + // if not in mapped mode, default to main memory space + if ((ssw & 0x04000000) == 0) + { + m_main_space->write_dword(va, data, mem_mask); + return; + } + +#if DTU + // get the page table entry + u32 pte = get_pte(va, ssw & 0x50000000, space.spacenum() == AS_DATA); + + // translate the address + u32 ra = (pte & 0xfffff000) | (va & 0xfff); + + // execute the read based on the system tag + switch ((pte & 0xe00) >> 9) + { + case 0: + case 1: + case 2: + case 3: +#if DCACHE_ENTRIES + { + const u16 slot = offset & (DCACHE_ENTRIES - 1); + + if (mem_mask == 0xffffffff) + { + m_dcache[slot].offset = offset; + m_dcache[slot].data = data; + } + else + m_dcache[slot].offset = 0; + } +#endif + m_main_space->write_dword(ra, data, mem_mask); + break; + + case 4: + m_io_space->write_dword(ra, data, mem_mask); + break; + + case 5: + m_boot_space->write_dword(ra, data, mem_mask); + break; + + case 6: // cache purge + case 7: // main memory, slave mode + fatalerror("data_w: system tag %d not supported at %s\n", (pte & 0xe00) >> 9, machine().describe_context()); + break; + } +#else // FIXME: currently maps addresses with upper bits 0x00 or 0x7f1 to main memory and everything else to I/O - if ((address & 0xff000000) == 0x00000000 || (address & 0xfff00000) == 0x7f100000) - m_main_space->write_dword(address, data, mem_mask); + if ((va & 0xff000000) == 0x00000000 || (va & 0xfff00000) == 0x7f100000) + { +#if DCACHE_ENTRIES + const u16 slot = offset & (DCACHE_ENTRIES - 1); + + if (mem_mask == 0xffffffff) + { + m_dcache[slot].offset = offset; + m_dcache[slot].data = data; + } + else + m_dcache[slot].offset = 0; +#endif + m_main_space->write_dword(va, data, mem_mask); + } else - m_io_space->write_dword(address, data, mem_mask); + m_io_space->write_dword(va, data, mem_mask); +#endif } + +u32 cammu_c4_device::get_pte(u32 va, int user, bool data) +{ + u32 tlb_index = (user ? 2 : 0) + (data ? 1 : 0); + if ((va & 0xfffff000) != m_tlb[tlb_index].va) + { + // return the page table entry for a given virtual address + u32 pdo = user ? m_u_pdo : m_s_pdo; + + u32 pto = m_main_space->read_dword(pdo | (va & 0xffc00000) >> 20); + if (pto & 0x1) + fatalerror("can't deal with pto faults va 0x%08x %s\n", va, machine().describe_context()); + + u32 pte = m_main_space->read_dword((pto & 0xfffff000) | (va & 0x003ff000) >> 10); + if (pte & 0x1) + fatalerror("can't deal with pte faults va 0x%08x %s\n", va, machine().describe_context()); + + m_tlb[tlb_index].va = va & 0xfffff000; + m_tlb[tlb_index].pte = pte; + } + + return m_tlb[tlb_index].pte; +} + +u32 cammu_c3_device::get_pte(u32 va, int user, bool data) +{ + // return the page table entry for a given virtual address + u32 pdo = user ? (data ? m_d_u_pdo : m_i_u_pdo) : (data ? m_d_s_pdo : m_i_s_pdo); + + u32 pto = m_main_space->read_dword(pdo | (va & 0xffc00000) >> 20); + if (pto & 0x1) + fatalerror("can't deal with pto faults va 0x%08x %s\n", va, machine().describe_context()); + + u32 pte = m_main_space->read_dword((pto & 0xfffff000) | (va & 0x003ff000) >> 10); + if (pte & 0x1) + fatalerror("can't deal with pte faults va 0x%08x %s\n", va, machine().describe_context()); + + return pte; +} \ No newline at end of file diff --git a/src/mame/machine/cammu.h b/src/mame/machine/cammu.h index a00208efbb5..41397c54c63 100644 --- a/src/mame/machine/cammu.h +++ b/src/mame/machine/cammu.h @@ -12,6 +12,7 @@ // problems, but speeds up cpu execution quite noticeably in the short term by // avoiding some of the delays in the mame memory subsystem #define ICACHE_ENTRIES 32768 +#define DCACHE_ENTRIES 32768 #define MCFG_CAMMU_SSW_CB(_sswcb) \ devcb = &cammu_device::static_set_ssw_callback(*device, DEVCB_##_sswcb); @@ -25,11 +26,10 @@ public: virtual DECLARE_ADDRESS_MAP(map, 32) = 0; - DECLARE_READ32_MEMBER(mmu_r); - DECLARE_WRITE32_MEMBER(mmu_w); + DECLARE_READ32_MEMBER(insn_r); - DECLARE_READ32_MEMBER(cammu_r) { return m_cammu[offset]; } - DECLARE_WRITE32_MEMBER(cammu_w) { m_cammu[offset] = data; } + DECLARE_READ32_MEMBER(data_r); + DECLARE_WRITE32_MEMBER(data_w); protected: // device-level overrides @@ -39,40 +39,176 @@ protected: // device_memory_interface overrides virtual const address_space_config *memory_space_config (address_spacenum spacenum) const override; + virtual u32 get_pte(u32 va, int user, bool data) = 0; + private: address_space_config m_main_space_config; address_space_config m_io_space_config; address_space_config m_boot_space_config; + +protected: address_space *m_main_space; address_space *m_io_space; address_space *m_boot_space; - devcb_read32 m_ssw_func; - u32 m_cammu[1024]; + struct + { + u32 va; + u32 pte; + } m_tlb[4]; -#ifdef ICACHE_ENTRIES +private: + devcb_read32 m_ssw_func; + +#if ICACHE_ENTRIES struct icache { u32 offset; u32 data; } m_icache[ICACHE_ENTRIES]; #endif +#if DCACHE_ENTRIES + struct dcache + { + u32 offset; + u32 data; + } m_dcache[DCACHE_ENTRIES]; +#endif +}; + +class cammu_c4_device : public cammu_device +{ +public: + cammu_c4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + + DECLARE_READ32_MEMBER(s_pdo_r) { return m_s_pdo; } + DECLARE_WRITE32_MEMBER(s_pdo_w) { m_s_pdo = data; } + DECLARE_READ32_MEMBER(u_pdo_r) { return m_u_pdo; } + DECLARE_WRITE32_MEMBER(u_pdo_w) { m_u_pdo = data; } + + virtual DECLARE_READ32_MEMBER(control_r) = 0; + virtual DECLARE_WRITE32_MEMBER(control_w) = 0; + + DECLARE_READ32_MEMBER(i_fault_r) { return m_i_fault; } + DECLARE_WRITE32_MEMBER(i_fault_w) { m_i_fault = data; } + DECLARE_READ32_MEMBER(fault_address_1_r) { return m_fault_address_1; } + DECLARE_WRITE32_MEMBER(fault_address_1_w) { m_fault_address_1 = data; } + DECLARE_READ32_MEMBER(fault_address_2_r) { return m_fault_address_2; } + DECLARE_WRITE32_MEMBER(fault_address_2_w) { m_fault_address_2 = data; } + DECLARE_READ32_MEMBER(fault_data_1_lo_r) { return m_fault_data_1_lo; } + DECLARE_WRITE32_MEMBER(fault_data_1_lo_w) { m_fault_data_1_lo = data; } + DECLARE_READ32_MEMBER(fault_data_1_hi_r) { return m_fault_data_1_hi; } + DECLARE_WRITE32_MEMBER(fault_data_1_hi_w) { m_fault_data_1_hi = data; } + DECLARE_READ32_MEMBER(fault_data_2_lo_r) { return m_fault_data_2_lo; } + DECLARE_WRITE32_MEMBER(fault_data_2_lo_w) { m_fault_data_2_lo = data; } + DECLARE_READ32_MEMBER(fault_data_2_hi_r) { return m_fault_data_2_hi; } + DECLARE_WRITE32_MEMBER(fault_data_2_hi_w) { m_fault_data_2_hi = data; } + +protected: + u32 get_pte(u32 va, int user, bool data) override; + + u32 m_s_pdo; + u32 m_u_pdo; + u32 m_control; + + u32 m_i_fault; + u32 m_fault_address_1; + u32 m_fault_address_2; + u32 m_fault_data_1_lo; + u32 m_fault_data_1_hi; + u32 m_fault_data_2_lo; + u32 m_fault_data_2_hi; }; -class cammu_c4t_device : public cammu_device +class cammu_c4t_device : public cammu_c4_device { public: cammu_c4t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual DECLARE_ADDRESS_MAP(map, 32) override; + + DECLARE_READ32_MEMBER(ram_line_r) { return m_ram_line; } + DECLARE_WRITE32_MEMBER(ram_line_w) { m_ram_line = data; } + + DECLARE_READ32_MEMBER(htlb_offset_r) { return m_htlb_offset; } + DECLARE_WRITE32_MEMBER(htlb_offset_w) { m_htlb_offset = data; } + + DECLARE_READ32_MEMBER(c4_bus_poll_r) { return m_c4_bus_poll; } + DECLARE_WRITE32_MEMBER(c4_bus_poll_w) { m_c4_bus_poll = data; } + virtual DECLARE_READ32_MEMBER(control_r) override { return m_control | 0x00000000; } + virtual DECLARE_WRITE32_MEMBER(control_w) override { m_control = data & 0x00ffffff; } + DECLARE_READ32_MEMBER(bio_control_r) { return m_bio_control; } + DECLARE_WRITE32_MEMBER(bio_control_w) { m_bio_control = data; } + DECLARE_READ32_MEMBER(bio_address_tag_r) { return m_bio_address_tag; } + DECLARE_WRITE32_MEMBER(bio_address_tag_w) { m_bio_address_tag = data; } + + DECLARE_READ32_MEMBER(cache_data_lo_r) { return m_cache_data_lo; } + DECLARE_WRITE32_MEMBER(cache_data_lo_w) { m_cache_data_lo = data; } + DECLARE_READ32_MEMBER(cache_data_hi_r) { return m_cache_data_hi; } + DECLARE_WRITE32_MEMBER(cache_data_hi_w) { m_cache_data_hi = data; } + DECLARE_READ32_MEMBER(cache_cpu_tag_r) { return m_cache_cpu_tag; } + DECLARE_WRITE32_MEMBER(cache_cpu_tag_w) { m_cache_cpu_tag = data; } + DECLARE_READ32_MEMBER(cache_system_tag_valid_r) { return m_cache_system_tag_valid; } + DECLARE_WRITE32_MEMBER(cache_system_tag_valid_w) { m_cache_system_tag_valid = data; } + DECLARE_READ32_MEMBER(cache_system_tag_r) { return m_cache_system_tag; } + DECLARE_WRITE32_MEMBER(cache_system_tag_w) { m_cache_system_tag = data; } + DECLARE_READ32_MEMBER(tlb_va_line_r) { return m_tlb_va_line; } + DECLARE_WRITE32_MEMBER(tlb_va_line_w) { m_tlb_va_line = data; } + DECLARE_READ32_MEMBER(tlb_ra_line_r) { return m_tlb_ra_line; } + DECLARE_WRITE32_MEMBER(tlb_ra_line_w) { m_tlb_ra_line = data; } + +private: + u32 m_ram_line; + u32 m_htlb_offset; + u32 m_c4_bus_poll; + u32 m_bio_control; + u32 m_bio_address_tag; + + u32 m_cache_data_lo; + u32 m_cache_data_hi; + u32 m_cache_cpu_tag; + u32 m_cache_system_tag_valid; + u32 m_cache_system_tag; + u32 m_tlb_va_line; + u32 m_tlb_ra_line; }; -class cammu_c4i_device : public cammu_device +class cammu_c4i_device : public cammu_c4_device { public: cammu_c4i_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual DECLARE_ADDRESS_MAP(map, 32) override; + + virtual DECLARE_READ32_MEMBER(control_r) override { return m_control | 0x02000000; } + virtual DECLARE_WRITE32_MEMBER(control_w) override { m_control = data & 0x00ffffff; } + + DECLARE_READ32_MEMBER(reset_r) { return m_reset; } + DECLARE_WRITE32_MEMBER(reset_w) { m_reset = data; } + + DECLARE_READ32_MEMBER(clr_s_data_tlb_r) { return m_clr_s_data_tlb; } + DECLARE_WRITE32_MEMBER(clr_s_data_tlb_w) { m_clr_s_data_tlb = data; } + DECLARE_READ32_MEMBER(clr_u_data_tlb_r) { return m_clr_u_data_tlb; } + DECLARE_WRITE32_MEMBER(clr_u_data_tlb_w) { m_clr_u_data_tlb = data; } + DECLARE_READ32_MEMBER(clr_s_insn_tlb_r) { return m_clr_s_insn_tlb; } + DECLARE_WRITE32_MEMBER(clr_s_insn_tlb_w) { m_clr_s_insn_tlb = data; } + DECLARE_READ32_MEMBER(clr_u_insn_tlb_r) { return m_clr_u_insn_tlb; } + DECLARE_WRITE32_MEMBER(clr_u_insn_tlb_w) { m_clr_u_insn_tlb = data; } + + DECLARE_READ32_MEMBER(test_data_r) { return m_test_data; } + DECLARE_WRITE32_MEMBER(test_data_w) { m_test_data = data; } + + DECLARE_READ32_MEMBER(test_address_r) { return m_test_address; } + DECLARE_WRITE32_MEMBER(test_address_w) { m_test_address = data; } + +private: + u32 m_reset; + u32 m_clr_s_data_tlb; + u32 m_clr_u_data_tlb; + u32 m_clr_s_insn_tlb; + u32 m_clr_u_insn_tlb; + u32 m_test_data; + u32 m_test_address; }; class cammu_c3_device : public cammu_device @@ -81,6 +217,49 @@ public: cammu_c3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual DECLARE_ADDRESS_MAP(map, 32) override; + + DECLARE_READ32_MEMBER(d_s_pdo_r) { return m_d_s_pdo; } + DECLARE_WRITE32_MEMBER(d_s_pdo_w) { m_d_s_pdo = data; } + DECLARE_READ32_MEMBER(d_u_pdo_r) { return m_d_u_pdo; } + DECLARE_WRITE32_MEMBER(d_u_pdo_w) { m_d_u_pdo = data; } + DECLARE_READ32_MEMBER(d_fault_r) { return m_d_fault; } + DECLARE_WRITE32_MEMBER(d_fault_w) { m_d_fault = data; } + DECLARE_READ32_MEMBER(d_control_r) { return m_d_control; } + DECLARE_WRITE32_MEMBER(d_control_w) { m_d_control = data; } + DECLARE_READ32_MEMBER(d_reset_r) { return m_d_reset; } + DECLARE_WRITE32_MEMBER(d_reset_w) { m_d_reset = data; } + + DECLARE_READ32_MEMBER(i_s_pdo_r) { return m_i_s_pdo; } + DECLARE_WRITE32_MEMBER(i_s_pdo_w) { m_i_s_pdo = data; } + DECLARE_READ32_MEMBER(i_u_pdo_r) { return m_i_u_pdo; } + DECLARE_WRITE32_MEMBER(i_u_pdo_w) { m_i_u_pdo = data; } + DECLARE_READ32_MEMBER(i_fault_r) { return m_i_fault; } + DECLARE_WRITE32_MEMBER(i_fault_w) { m_i_fault = data; } + DECLARE_READ32_MEMBER(i_control_r) { return m_i_control; } + DECLARE_WRITE32_MEMBER(i_control_w) { m_i_control = data; } + DECLARE_READ32_MEMBER(i_reset_r) { return m_i_reset; } + DECLARE_WRITE32_MEMBER(i_reset_w) { m_i_reset = data; } + + DECLARE_WRITE32_MEMBER(g_s_pdo_w) { d_s_pdo_w(space, offset, data, mem_mask); i_s_pdo_w(space, offset, data, mem_mask); } + DECLARE_WRITE32_MEMBER(g_u_pdo_w) { d_u_pdo_w(space, offset, data, mem_mask); i_u_pdo_w(space, offset, data, mem_mask); } + DECLARE_WRITE32_MEMBER(g_fault_w) { d_fault_w(space, offset, data, mem_mask); i_fault_w(space, offset, data, mem_mask); } + DECLARE_WRITE32_MEMBER(g_control_w) { d_control_w(space, offset, data, mem_mask); i_control_w(space, offset, data, mem_mask); } + DECLARE_WRITE32_MEMBER(g_reset_w) { d_reset_w(space, offset, data, mem_mask); i_reset_w(space, offset, data, mem_mask); } + +protected: + u32 get_pte(u32 va, int user, bool data) override; + +private: + u32 m_d_s_pdo; + u32 m_d_u_pdo; + u32 m_d_fault; + u32 m_d_control; + u32 m_d_reset; + u32 m_i_s_pdo; + u32 m_i_u_pdo; + u32 m_i_fault; + u32 m_i_control; + u32 m_i_reset; }; // device type definitions -- cgit v1.2.3 From 840fa1f1fd2a62b663f3bf285869fc5c1588c059 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 7 Feb 2017 17:11:43 +0700 Subject: logging fixes, new scsi --- src/mame/drivers/interpro.cpp | 160 ++++++++++++++++++++++++++++++++---------- src/mame/includes/interpro.h | 45 +++++++++--- 2 files changed, 159 insertions(+), 46 deletions(-) diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 9cc9264f608..56316f493a3 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -32,14 +32,14 @@ WRITE16_MEMBER(interpro_state::system_w) switch (offset) { case SREG_LED: - LOG_SYSTEM("LED value %d at pc 0x%08x\n", data, space.device().safe_pc()); + LOG_SYSTEM("LED value %d at %s\n", data, machine().describe_context()); break; case SREG_STATUS: // not sure if writable? break; case SREG_CTRL1: - LOG_SYSTEM("system control register 1 write data 0x%x pc 0x%08x\n", data, space.device().safe_pc()); + LOG_SYSTEM("system control register 1 write data 0x%x pc %s\n", data, machine().describe_context()); if ((data ^ m_system_reg[offset]) & CTRL1_LEDDP) LOG_SYSTEM("LED decimal point %s\n", data & CTRL1_LEDDP ? "on" : "off"); @@ -48,7 +48,7 @@ WRITE16_MEMBER(interpro_state::system_w) break; case SREG_CTRL2: - LOG_SYSTEM("system control register 2 write data 0x%x pc 0x%08x\n", data, space.device().safe_pc()); + LOG_SYSTEM("system control register 2 write data 0x%x at %s\n", data, machine().describe_context()); if (data & CTRL2_RESET) { m_system_reg[SREG_CTRL2] &= ~CTRL2_COLDSTART; @@ -63,7 +63,7 @@ WRITE16_MEMBER(interpro_state::system_w) READ16_MEMBER(interpro_state::system_r) { - LOG_SYSTEM("system register read offset %d pc 0x%08x\n", offset, space.device().safe_pc()); + LOG_SYSTEM("system register read offset %d at %s\n", offset, machine().describe_context()); switch (offset) { case SREG_ERROR: @@ -78,10 +78,10 @@ READ16_MEMBER(interpro_state::system_r) READ32_MEMBER(interpro_state::idprom_r) { - LOG_IDPROM("idprom read offset 0x%x mask 0x%08x at 0x%08x\n", offset, mem_mask, space.device().safe_pc()); + LOG_IDPROM("idprom read offset 0x%x mask 0x%08x at %s\n", offset, mem_mask, machine().describe_context()); // abitrary fake number for now, not working properly - u32 speed = 70000000; + u32 speed = 20000000; u32 speed1 = speed >> 24; u32 speed2 = speed >> 16; u32 speed3 = speed >> 8; @@ -89,7 +89,7 @@ READ32_MEMBER(interpro_state::idprom_r) static uint8_t idprom[] = { // module type id 'M', 'P', 'C', 'B', - '*', '*', '*', '*', + '0', '1', '4', '5', // ECO bytes 0x87, 0x65, 0x43, 0x21, @@ -100,7 +100,7 @@ READ32_MEMBER(interpro_state::idprom_r) // if they're empty, a default value of 50 000 000 is used // perhaps this is a system speed (50MHz)? 0x2, 0x34, 0x56, 0x78, - (u8)speed1, (u8)speed2, (u8)speed3, (u8)speed, + (u8)speed, (u8)speed3, (u8)speed2, (u8)speed1, // reserved bytes 0xff, 0xff, @@ -109,8 +109,8 @@ READ32_MEMBER(interpro_state::idprom_r) // boot rom tests for family == 0x41 or 0x42 // if so, speed read from feature bytes 2 & 3 // if not, read speed from feature bytes 4-7 - //0x41, 0x00, // 2800-series CPU - 0x24, 0x00, // 2000-series system board + 0x41, 0x00, // 2800-series CPU + //0x24, 0x00, // 2000-series system board // footprint and checksum 0x55, 0xaa, 0x55, 0x00 @@ -164,7 +164,7 @@ WRITE8_MEMBER(interpro_state::rtc_w) break; default: - logerror("rtc: write to unknown offset 0x%02x data 0x%02x at pc 0x%08x\n", offset, data, space.device().safe_pc()); + logerror("rtc: write to unknown offset 0x%02x data 0x%02x at %s\n", offset, data, machine().describe_context()); break; } } @@ -183,54 +183,125 @@ READ8_MEMBER(interpro_state::rtc_r) case 0x42: return 0x56; default: - logerror("rtc: read from unknown offset 0x%02x at pc 0x%08x\n", offset, space.device().safe_pc()); + logerror("rtc: read from unknown offset 0x%02x at %s\n", offset, machine().describe_context()); return 0xff; } } READ8_MEMBER(interpro_state::scsi_r) { +#if NEW_SCSI + u8 temp; + + switch (offset >> 6) + { + case 0x0: return m_scsi->tcount_lo_r(space, 0); + case 0x1: return m_scsi->tcount_hi_r(space, 0); + case 0x2: temp = m_scsi->fifo_r(space, 0); logerror("fifo_r 0x%02x at %s\n", temp, machine().describe_context()); return temp; + case 0x3: return m_scsi->command_r(space, 0); + case 0x4: return m_scsi->status_r(space, 0); + case 0x5: return m_scsi->istatus_r(space, 0); + case 0x6: return m_scsi->seq_step_r(space, 0); + case 0x7: return m_scsi->fifo_flags_r(space, 0); + case 0x8: return m_scsi->conf_r(space, 0); + case 0xb: return m_scsi->conf2_r(space, 0); + case 0xc: return m_scsi->conf3_r(space, 0); + } + + logerror("read unmapped scsi adapter register 0x%x\n", offset >> 6); + return 0x00; +#else return m_scsi->read(space, offset >> 6, mem_mask); +#endif } WRITE8_MEMBER(interpro_state::scsi_w) { +#if NEW_SCSI + switch (offset >> 6) + { + case 0: m_scsi->tcount_lo_w(space, 0, data); return; + case 1: m_scsi->tcount_hi_w(space, 0, data); return; + case 2: logerror("fifo_w 0x%02x at %s\n", data, machine().describe_context()); m_scsi->fifo_w(space, 0, data); return; + case 3: m_scsi->command_w(space, 0, data); return; + case 4: m_scsi->bus_id_w(space, 0, data); return; + case 5: m_scsi->timeout_w(space, 0, data); return; + case 6: m_scsi->sync_period_w(space, 0, data); return; + case 7: m_scsi->sync_offset_w(space, 0, data); return; + case 8: m_scsi->conf_w(space, 0, data); return; + case 9: m_scsi->clock_w(space, 0, data); return; + case 0xa: m_scsi->test_w(space, 0, data); return; + case 0xb: m_scsi->conf2_w(space, 0, data); return; + case 0xc: m_scsi->conf3_w(space, 0, data); return; + case 0xf: m_scsi->fifo_align_w(space, 0, data); return; + } + + logerror("unmapped scsi register write 0x%02x data 0x%02x\n", offset >> 6, data); +#else m_scsi->write(space, offset >> 6, data, mem_mask); +#endif } -// driver init DRIVER_INIT_MEMBER(interpro_state, ip2800) { - //address_space &as = m_mmu->space(AS_1); } +#if NEW_SCSI +static SLOT_INTERFACE_START(interpro_scsi_devices) + SLOT_INTERFACE("harddisk", NSCSI_HARDDISK) + SLOT_INTERFACE("cdrom", NSCSI_CDROM) + SLOT_INTERFACE_INTERNAL(INTERPRO_SCSI_ADAPTER_TAG, NCR5390) +SLOT_INTERFACE_END + +static MACHINE_CONFIG_FRAGMENT(interpro_scsi_adapter) + MCFG_DEVICE_CLOCK(XTAL_12_5MHz) + MCFG_NCR5390_IRQ_HANDLER(DEVWRITELINE(":" INTERPRO_IOGA_TAG, interpro_ioga_device, ir0_w)) + MCFG_NCR5390_DRQ_HANDLER(DEVWRITELINE(":" INTERPRO_IOGA_TAG, interpro_ioga_device, drq_scsi)) +MACHINE_CONFIG_END +#endif + // these maps point the cpu virtual addresses to the mmu static ADDRESS_MAP_START(clipper_insn_map, AS_PROGRAM, 32, interpro_state) - AM_RANGE(0x00000000, 0xffffffff) AM_DEVREAD32(INTERPRO_MMU_TAG, cammu_device, mmu_r, 0xffffffff) + AM_RANGE(0x00000000, 0xffffffff) AM_DEVREAD32(INTERPRO_MMU_TAG, cammu_device, insn_r, 0xffffffff) ADDRESS_MAP_END static ADDRESS_MAP_START(clipper_data_map, AS_DATA, 32, interpro_state) -AM_RANGE(0x00000000, 0xffffffff) AM_DEVREADWRITE32(INTERPRO_MMU_TAG, cammu_device, mmu_r, mmu_w, 0xffffffff) + AM_RANGE(0x00000000, 0xffffffff) AM_DEVREADWRITE32(INTERPRO_MMU_TAG, cammu_device, data_r, data_w, 0xffffffff) ADDRESS_MAP_END // these maps represent the real main, i/o and boot spaces of the system static ADDRESS_MAP_START(interpro_main_map, AS_0, 32, interpro_state) AM_RANGE(0x00000000, 0x00ffffff) AM_RAM // 16M RAM - AM_RANGE(0x7f100000, 0x7f11ffff) AM_ROM AM_REGION(INTERPRO_ROM_TAG, 0) - AM_RANGE(0x7f180000, 0x7f1bffff) AM_ROM AM_REGION(INTERPRO_EEPROM_TAG, 0) -ADDRESS_MAP_END + AM_RANGE(0x40000000, 0x4000003f) AM_DEVICE(INTERPRO_MCTL_TAG, interpro_fmcc_device, map) + AM_RANGE(0x4f007e00, 0x4f007eff) AM_DEVICE(INTERPRO_SGA_TAG, interpro_sga_device, map) + + AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, n82077aa_device, map, 0xff) + AM_RANGE(0x7f000200, 0x7f0002ff) AM_DEVICE(INTERPRO_SRARB_TAG, interpro_srarb_device, map) + AM_RANGE(0x7f000300, 0x7f00030f) AM_READWRITE16(system_r, system_w, 0xffff) + AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, scc85C30_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) + AM_RANGE(0x7f000410, 0x7f00041f) AM_DEVREADWRITE8(INTERPRO_SCC2_TAG, scc85230_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) + AM_RANGE(0x7f000500, 0x7f0006ff) AM_READWRITE8(rtc_r, rtc_w, 0xff) + AM_RANGE(0x7f000700, 0x7f00077f) AM_READ(idprom_r) + AM_RANGE(0x7f001000, 0x7f001fff) AM_READWRITE8(scsi_r, scsi_w, 0x0000ff00) + + AM_RANGE(0x7f0fff00, 0x7f0fffff) AM_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, map) + + AM_RANGE(0x7f100000, 0x7f11ffff) AM_ROM AM_REGION(INTERPRO_EPROM_TAG, 0) + AM_RANGE(0x7f180000, 0x7f1bffff) AM_ROM AM_REGION(INTERPRO_FLASH_TAG, 0) + + AM_RANGE(0x08000000, 0x08000fff) AM_NOP // bogus + AM_RANGE(0x8f000000, 0x8f0fffff) AM_NOP // AM_READ(slot0_r) + ADDRESS_MAP_END static ADDRESS_MAP_START(interpro_io_map, AS_1, 32, interpro_state) - AM_RANGE(0x00000000, 0x00000fff) AM_DEVICE(INTERPRO_MMU_TAG, cammu_device, map) - AM_RANGE(0x00001000, 0x00001fff) AM_RAM + AM_RANGE(0x00000000, 0x00001fff) AM_DEVICE(INTERPRO_MMU_TAG, cammu_device, map) - AM_RANGE(0x40000000, 0x4000003f) AM_DEVICE16(INTERPRO_MCGA_TAG, interpro_mcga_device, map, 0xffff) + AM_RANGE(0x40000000, 0x4000004f) AM_DEVICE(INTERPRO_MCTL_TAG, interpro_fmcc_device, map) AM_RANGE(0x4f007e00, 0x4f007eff) AM_DEVICE(INTERPRO_SGA_TAG, interpro_sga_device, map) AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, n82077aa_device, map, 0xff) - // this is probably the srx arbiter ga - AM_RANGE(0x7f000200, 0x7f0002ff) AM_RAM + AM_RANGE(0x7f000200, 0x7f0002ff) AM_DEVICE(INTERPRO_SRARB_TAG, interpro_srarb_device, map) AM_RANGE(0x7f000300, 0x7f00030f) AM_READWRITE16(system_r, system_w, 0xffff) AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, scc85C30_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) AM_RANGE(0x7f000410, 0x7f00041f) AM_DEVREADWRITE8(INTERPRO_SCC2_TAG, scc85230_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) @@ -238,10 +309,10 @@ static ADDRESS_MAP_START(interpro_io_map, AS_1, 32, interpro_state) AM_RANGE(0x7f000700, 0x7f00077f) AM_READ(idprom_r) AM_RANGE(0x7f001000, 0x7f001fff) AM_READWRITE8(scsi_r, scsi_w, 0x0000ff00) - AM_RANGE(0x7f0fff00, 0x7f0fffff) AM_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, map) + AM_RANGE(0x7f0fff00, 0x7f0fffff) AM_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, map) AM_RANGE(0x08000000, 0x08000fff) AM_NOP // bogus - AM_RANGE(0x8f000000, 0x8f0fffff) AM_READ(slot0_r) + AM_RANGE(0x8f000000, 0x8f0fffff) AM_NOP // AM_READ(slot0_r) ADDRESS_MAP_END static ADDRESS_MAP_START(interpro_boot_map, AS_2, 32, interpro_state) @@ -262,7 +333,7 @@ static INPUT_PORTS_START(ip2800) INPUT_PORTS_END static MACHINE_CONFIG_START(ip2800, interpro_state) - MCFG_CPU_ADD(INTERPRO_CPU_TAG, CLIPPER_C400, XTAL_10MHz) + MCFG_CPU_ADD(INTERPRO_CPU_TAG, CLIPPER_C400, XTAL_12_5MHz) MCFG_CPU_PROGRAM_MAP(clipper_insn_map) MCFG_CPU_DATA_MAP(clipper_data_map) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, inta_cb) @@ -271,7 +342,7 @@ static MACHINE_CONFIG_START(ip2800, interpro_state) MCFG_DEVICE_ADDRESS_MAP(AS_0, interpro_main_map) MCFG_DEVICE_ADDRESS_MAP(AS_1, interpro_io_map) MCFG_DEVICE_ADDRESS_MAP(AS_2, interpro_boot_map) - MCFG_CAMMU_SSW_CB(DEVREADLINE(INTERPRO_CPU_TAG, clipper_device, ssw)) + MCFG_CAMMU_SSW_CB(DEVREAD32(INTERPRO_CPU_TAG, clipper_device, ssw)) // serial controllers and rs232 bus MCFG_SCC85C30_ADD(INTERPRO_SCC1_TAG, XTAL_4_9152MHz, 0, 0, 0, 0) @@ -307,14 +378,27 @@ static MACHINE_CONFIG_START(ip2800, interpro_state) MCFG_FLOPPY_DRIVE_SOUND(false) // scsi +#if NEW_SCSI + MCFG_NSCSI_BUS_ADD(INTERPRO_SCSI_TAG) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":0", interpro_scsi_devices, "harddisk", false) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":1", interpro_scsi_devices, "cdrom", false) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":2", interpro_scsi_devices, nullptr, false) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":3", interpro_scsi_devices, nullptr, false) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":4", interpro_scsi_devices, nullptr, false) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":5", interpro_scsi_devices, nullptr, false) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":6", interpro_scsi_devices, nullptr, false) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":7", interpro_scsi_devices, INTERPRO_SCSI_ADAPTER_TAG, true) + MCFG_DEVICE_CARD_MACHINE_CONFIG(INTERPRO_SCSI_ADAPTER_TAG, interpro_scsi_adapter) +#else MCFG_DEVICE_ADD(INTERPRO_SCSI_TAG, SCSI_PORT, 0) MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0) MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE2, "cdrom", SCSICD, SCSI_ID_3) - MCFG_DEVICE_ADD(INTERPRO_SCSI_ADAPTER_TAG, NCR539X, XTAL_12_5MHz) + MCFG_DEVICE_ADD(INTERPRO_SCSI_HA_TAG, NCR539X, XTAL_12_5MHz) MCFG_LEGACY_SCSI_PORT(INTERPRO_SCSI_TAG) MCFG_NCR539X_OUT_IRQ_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir0_w)) MCFG_NCR539X_OUT_DRQ_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_scsi)) +#endif // i/o gate array MCFG_INTERPRO_IOGA_ADD(INTERPRO_IOGA_TAG) @@ -327,22 +411,26 @@ static MACHINE_CONFIG_START(ip2800, interpro_state) MCFG_INTERPRO_IOGA_FDCTC_CB(DEVWRITELINE(INTERPRO_FDC_TAG, n82077aa_device, tc_line_w)) MCFG_INTERPRO_IOGA_DMA_BUS(INTERPRO_CAMMU_TAG, AS_0) - // memory control gate array - MCFG_DEVICE_ADD(INTERPRO_MCGA_TAG, INTERPRO_MCGA, 0) + // memory controller + MCFG_DEVICE_ADD(INTERPRO_MCTL_TAG, INTERPRO_FMCC, 0) // srx gate array MCFG_DEVICE_ADD(INTERPRO_SGA_TAG, INTERPRO_SGA, 0) + MCFG_INTERPRO_SGA_BERR_CB(DEVWRITE32(INTERPRO_IOGA_TAG, interpro_ioga_device, bus_error)) + + // srx arbiter gate array + MCFG_DEVICE_ADD(INTERPRO_SRARB_TAG, INTERPRO_SRARB, 0) MACHINE_CONFIG_END ROM_START(ip2800) - ROM_REGION(0x0020000, INTERPRO_ROM_TAG, 0) + ROM_REGION(0x0020000, INTERPRO_EPROM_TAG, 0) ROM_SYSTEM_BIOS(0, "IP2830", "IP2830") - ROMX_LOAD("ip2830_rom.bin", 0x00000, 0x20000, CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(1)) + ROMX_LOAD("ip2830_eprom.bin", 0x00000, 0x20000, CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(1)) - ROM_REGION(0x0040000, INTERPRO_EEPROM_TAG, 0) - ROM_LOAD_OPTIONAL("ip2830_eeprom.bin", 0x00000, 0x40000, CRC(a0c0899f) SHA1(dda6fbca81f9885a1a76ca3c25e80463a83a0ef7)) + ROM_REGION(0x0040000, INTERPRO_FLASH_TAG, 0) + ROM_LOAD_OPTIONAL("ip2830_flash.bin", 0x00000, 0x40000, CRC(a0c0899f) SHA1(dda6fbca81f9885a1a76ca3c25e80463a83a0ef7)) ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1990, ip2800, 0, 0, ip2800, ip2800, interpro_state, ip2800, "Intergraph", "InterPro 2800", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1993, ip2800, 0, 0, ip2800, ip2800, interpro_state, ip2800, "Intergraph", "InterPro 2800", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/includes/interpro.h b/src/mame/includes/interpro.h index 6ae135b552c..edabd4f8f86 100644 --- a/src/mame/includes/interpro.h +++ b/src/mame/includes/interpro.h @@ -6,23 +6,34 @@ #ifndef INTERPRO_H_ #define INTERPRO_H_ +#define NEW_SCSI 0 + #include "emu.h" #include "cpu/clipper/clipper.h" #include "machine/cammu.h" #include "machine/interpro_ioga.h" -#include "machine/interpro_mcga.h" +#include "machine/interpro_mctl.h" #include "machine/interpro_sga.h" +#include "machine/interpro_srarb.h" #include "machine/z80scc.h" #include "machine/mc146818.h" #include "machine/upd765.h" +#if NEW_SCSI +#include "machine/ncr5390.h" + +#include "machine/nscsi_bus.h" +#include "machine/nscsi_cd.h" +#include "machine/nscsi_hd.h" +#else #include "machine/ncr539x.h" #include "bus/scsi/scsi.h" #include "bus/scsi/scsicd.h" #include "bus/scsi/scsihd.h" +#endif #include "bus/rs232/rs232.h" #include "formats/pc_dsk.h" @@ -33,15 +44,17 @@ #define INTERPRO_RTC_TAG "rtc" #define INTERPRO_SCC1_TAG "scc1" #define INTERPRO_SCC2_TAG "scc2" -#define INTERPRO_ROM_TAG "rom" -#define INTERPRO_EEPROM_TAG "eeprom" +#define INTERPRO_EPROM_TAG "eprom" +#define INTERPRO_FLASH_TAG "flash" #define INTERPRO_TERMINAL_TAG "terminal" #define INTERPRO_FDC_TAG "fdc" #define INTERPRO_SCSI_TAG "scsi" +#define INTERPRO_SCSI_HA_TAG "adapter" + #define INTERPRO_IOGA_TAG "ioga" -#define INTERPRO_MCGA_TAG "mcga" +#define INTERPRO_MCTL_TAG "fmcc" #define INTERPRO_SGA_TAG "sga" -#define INTERPRO_SCSI_ADAPTER_TAG "adapter" +#define INTERPRO_SRARB_TAG "srarb" // system board register offsets #define SREG_LED 0 @@ -84,10 +97,16 @@ public: m_scc2(*this, INTERPRO_SCC2_TAG), m_rtc(*this, INTERPRO_RTC_TAG), m_fdc(*this, INTERPRO_FDC_TAG), - m_scsi(*this, INTERPRO_SCSI_ADAPTER_TAG), +#if NEW_SCSI + m_scsibus(*this, INTERPRO_SCSI_TAG), + m_scsi(*this, INTERPRO_SCSI_TAG ":7:" INTERPRO_SCSI_HA_TAG), +#else + m_scsi(*this, INTERPRO_SCSI_HA_TAG), +#endif m_ioga(*this, INTERPRO_IOGA_TAG), - m_mcga(*this, INTERPRO_MCGA_TAG), - m_sga(*this, INTERPRO_SGA_TAG) + m_mctl(*this, INTERPRO_MCTL_TAG), + m_sga(*this, INTERPRO_SGA_TAG), + m_srarb(*this, INTERPRO_SRARB_TAG) { } required_device m_maincpu; @@ -98,11 +117,17 @@ public: required_device m_scc2; required_device m_rtc; required_device m_fdc; +#if NEW_SCSI + required_device m_scsibus; + required_device m_scsi; +#else required_device m_scsi; +#endif required_device m_ioga; - required_device m_mcga; + required_device m_mctl; required_device m_sga; + required_device m_srarb; DECLARE_DRIVER_INIT(ip2800); @@ -125,7 +150,7 @@ protected: virtual void machine_reset() override; private: - uint16_t m_system_reg[4]; + u16 m_system_reg[4]; }; #endif \ No newline at end of file -- cgit v1.2.3 From e67636b0126eb6ad319740c211a250cbd1f360b1 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Wed, 15 Mar 2017 15:48:37 +0700 Subject: clock based ioga interrupts --- src/mame/machine/interpro_ioga.cpp | 468 ++++++++++++++++++++++--------------- src/mame/machine/interpro_ioga.h | 95 +++++--- 2 files changed, 344 insertions(+), 219 deletions(-) diff --git a/src/mame/machine/interpro_ioga.cpp b/src/mame/machine/interpro_ioga.cpp index 67a47f2cfd0..53073ecf44f 100644 --- a/src/mame/machine/interpro_ioga.cpp +++ b/src/mame/machine/interpro_ioga.cpp @@ -17,19 +17,26 @@ */ #include "interpro_ioga.h" +#define LOG_HWINT_ENABLE ((1<<2) | LOG_GENERAL) +#define LOG_DMA_ENABLE ((1<<2) | LOG_GENERAL) + +#define LOG_GENERAL (1 << 31) + +#define LOG_HWINT(interrupt, ...) if (LOG_HWINT_ENABLE & (1 << interrupt)) logerror(__VA_ARGS__) +#define LOG_DMA(channel, ...) if (LOG_DMA_ENABLE & (1 << channel)) logerror(__VA_ARGS__) + #define VERBOSE 0 + #if VERBOSE #define LOG_TIMER_MASK 0xff #define LOG_TIMER(timer, ...) if (LOG_TIMER_MASK & (1 << timer)) logerror(__VA_ARGS__) #define LOG_INTERRUPT(...) logerror(__VA_ARGS__) #define LOG_IOGA(...) logerror(__VA_ARGS__) -#define LOG_DMA(...) logerror(__VA_ARGS__) #else #define LOG_TIMER_MASK 0x00 #define LOG_TIMER(timer, ...) #define LOG_INTERRUPT(...) #define LOG_IOGA(...) -#define LOG_DMA(...) #endif DEVICE_ADDRESS_MAP_START(map, 32, interpro_ioga_device) @@ -60,7 +67,7 @@ const device_type INTERPRO_IOGA = &device_creator; interpro_ioga_device::interpro_ioga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, INTERPRO_IOGA, "InterPro IOGA", tag, owner, clock, "ioga", __FILE__), m_out_nmi_func(*this), - m_out_int_func(*this), + m_out_irq_func(*this), m_memory_space(nullptr), m_dma_channel{ { 0,0,0,0,false, 0, {*this}, {*this} }, @@ -71,11 +78,39 @@ interpro_ioga_device::interpro_ioga_device(const machine_config &mconfig, const { } +#if LOG_HWINT_ENABLE +static const char *interrupt_source[IOGA_INTERRUPT_COUNT] = { + // internal + "timer 2", + "timer 3", + // external + "SCSI", + "floppy", + "plotter", + "SRX / CBUS 0", + "SRX / CBUS 1", + "SRX / CBUS 2", + "VB", + "", + "CBUS 3", + "clock / calendar", + "clock / SGA", + // internal + "mouse", + "timer 0", + "timer 1", + "serial DMA", + // external + "serial", + "Ethernet", +}; +#endif + void interpro_ioga_device::device_start() { // resolve callbacks m_out_nmi_func.resolve(); - m_out_int_func.resolve(); + m_out_irq_func.resolve(); // TODO: parameterise the cammu name and space number // grab the main memory space from the mmu so we can do DMA to/from it @@ -103,18 +138,26 @@ void interpro_ioga_device::device_start() // allocate timer for DMA controller m_dma_timer = timer_alloc(IOGA_TIMER_DMA); m_dma_timer->adjust(attotime::never); + + m_ioga_clock = timer_alloc(IOGA_CLOCK); + m_ioga_clock->adjust(attotime::never); } void interpro_ioga_device::device_reset() { - m_nmi_pending = false; - - m_interrupt_active = 0; - m_irq_forced = 0; + // initialise interrupt state + m_active_interrupt_type = IOGA_INTERRUPT_NONE; + m_hwint_forced = 0; + m_nmi_state = CLEAR_LINE; + m_irq_state = CLEAR_LINE; + m_int_line = 0; // configure timer 0 at 60Hz m_timer_reg[0] = 0; - m_timer[0]->adjust(attotime::zero, IOGA_TIMER_0, attotime::from_hz(60)); + //m_timer[0]->adjust(attotime::zero, IOGA_TIMER_0, attotime::from_hz(60)); + + // configure ioga clock timer + m_ioga_clock->adjust(attotime::zero, IOGA_CLOCK, attotime::from_hz(clock())); } /****************************************************************************** @@ -145,7 +188,7 @@ READ32_MEMBER(interpro_ioga_device::timer3_r) return result; } -void interpro_ioga_device::write_timer(int timer, uint32_t value, device_timer_id id) +void interpro_ioga_device::write_timer(int timer, u32 value, device_timer_id id) { switch (id) { @@ -239,59 +282,20 @@ void interpro_ioga_device::device_timer(emu_timer &timer, device_timer_id id, in break; case IOGA_TIMER_DMA: - // transfer data between device and main memory - - // TODO: figure out what indicates dma write (memory -> device) - // TODO: implement multiple dma channels - // TODO: virtual memory? - - if (!m_dma_channel[param].dma_active) - { - LOG_DMA("dma: transfer started, channel = %d, control 0x%08x, real address 0x%08x count 0x%08x\n", - param, m_dma_channel[param].control, m_dma_channel[param].real_address, m_dma_channel[param].transfer_count); - m_dma_channel[param].dma_active = true; - } - - // while the device is requesting a data transfer and the transfer count is not zero - while (m_dma_channel[param].drq_state && m_dma_channel[param].transfer_count) - { - // transfer a byte between device and memory - if (true) - m_memory_space->write_byte(m_dma_channel[param].real_address, m_dma_channel[param].device_r()); - else - m_dma_channel[param].device_w(m_memory_space->read_byte(m_dma_channel[param].real_address)); - - // increment addresses and decrement count - m_dma_channel[param].real_address++; - m_dma_channel[param].virtual_address++; - m_dma_channel[param].transfer_count--; - } - - // if there are no more bytes remaining, terminate the transfer - if (m_dma_channel[param].transfer_count == 0) - { - LOG_DMA("dma: transfer stopped, control 0x%08x, real address 0x%08x count 0x%08x\n", - m_dma_channel[param].control, m_dma_channel[param].fdc_real_address, m_dma_channel[param].transfer_count); - - if (param == IOGA_DMA_FLOPPY) - { - LOG_DMA("dma: asserting fdc terminal count line\n"); - - m_fdc_tc_func(ASSERT_LINE); - m_fdc_tc_func(CLEAR_LINE); - } - - m_dma_channel[param].dma_active = false; - } + dma_clock(param); + break; break; + + case IOGA_CLOCK: + interrupt_clock(); + break; } } /****************************************************************************** Interrupts ******************************************************************************/ - -static const uint16_t irq_enable_mask[IOGA_INTERRUPT_COUNT] = +static const u16 irq_enable_mask[IOGA_INTERRUPT_COUNT] = { IOGA_INTERRUPT_ENABLE_EXTERNAL, IOGA_INTERRUPT_ENABLE_EXTERNAL, @@ -317,56 +321,70 @@ static const uint16_t irq_enable_mask[IOGA_INTERRUPT_COUNT] = IOGA_INTERRUPT_ENABLE_EXTERNAL | IOGA_INTERRUPT_ENABLE_INTERNAL // external interrupt 12: Ethernet }; +bool interpro_ioga_device::nmi(int state) +{ + if (m_nmi_state != state) + { + m_nmi_state = state; + m_out_nmi_func(m_nmi_state); + + return true; + } + else + return false; +} + +bool interpro_ioga_device::irq(int state) +{ + if (m_irq_state != state) + { + m_irq_state = state; + m_out_irq_func(m_irq_state); + + return true; + } + else + return false; +} + void interpro_ioga_device::set_nmi_line(int state) { + LOG_INTERRUPT("set_nmi_line(%d)\n", state); switch (state) { case ASSERT_LINE: - - LOG_INTERRUPT("nmi: ctrl = 0x%02x\n", m_nmictrl); - +#if 0 if ((m_nmictrl & IOGA_NMI_ENABLE) == IOGA_NMI_ENABLE) { // if edge triggered mode, clear enable in if (m_nmictrl & IOGA_NMI_EDGE) m_nmictrl &= ~IOGA_NMI_ENABLE_IN; - - m_nmi_pending = true; - update_interrupt(ASSERT_LINE); } +#endif + m_nmictrl |= IOGA_NMI_PENDING; break; case CLEAR_LINE: - m_nmi_pending = false; - update_interrupt(ASSERT_LINE); + m_nmictrl &= ~IOGA_NMI_PENDING; break; } } void interpro_ioga_device::set_irq_line(int irq, int state) { - LOG_INTERRUPT("set_irq_line(%d, %d)\n", irq, state); + LOG_HWINT(irq, "set_irq_line(%d, %d)\n", irq, state); switch (state) { case ASSERT_LINE: - if (m_int_vector[irq] & irq_enable_mask[irq]) - { - // set pending bit - m_int_vector[irq] |= IOGA_INTERRUPT_PENDING; - - // update irq line state - update_interrupt(state); - } - else - LOG_INTERRUPT("received disabled interrupt irq %d vector 0x%04x\n", irq, m_int_vector[irq]); + // set pending bit + m_int_line |= (1 << irq); + m_hwicr[irq] |= IOGA_INTERRUPT_PENDING; break; case CLEAR_LINE: // clear pending bit - m_int_vector[irq] &= ~IOGA_INTERRUPT_PENDING; - - // update irq line state - update_interrupt(state); + m_int_line &= (1 << irq); + m_hwicr[irq] &= ~IOGA_INTERRUPT_PENDING; break; } } @@ -381,9 +399,7 @@ void interpro_ioga_device::set_irq_soft(int irq, int state) if (irq < 8) m_softint |= 1 << irq; else - m_softint_vector[irq - 8] |= IOGA_INTERRUPT_PENDING; - - update_interrupt(state); + m_swicr[irq - 8] |= IOGA_INTERRUPT_PENDING; break; case CLEAR_LINE: @@ -391,170 +407,180 @@ void interpro_ioga_device::set_irq_soft(int irq, int state) if (irq < 8) m_softint &= ~(1 << irq); else - m_softint_vector[irq - 8] &= ~IOGA_INTERRUPT_PENDING; - - // update irq line state - update_interrupt(state); + m_swicr[irq - 8] &= ~IOGA_INTERRUPT_PENDING; break; } } IRQ_CALLBACK_MEMBER(interpro_ioga_device::inta_cb) { + int vector = 0; + switch (irqline) { case INPUT_LINE_IRQ0: // FIXME: clear pending bit - can't rely on device callbacks - switch (m_interrupt_active) + switch (m_active_interrupt_type) { case IOGA_INTERRUPT_INTERNAL: case IOGA_INTERRUPT_EXTERNAL: - m_int_vector[m_irq_current] &= ~IOGA_INTERRUPT_PENDING; + m_hwicr[m_active_interrupt_number] &= ~IOGA_INTERRUPT_PENDING; break; case IOGA_INTERRUPT_SOFT_LO: - m_softint &= ~(1 << m_irq_current); + m_softint &= ~(1 << m_active_interrupt_number); break; case IOGA_INTERRUPT_SOFT_HI: - m_softint_vector[m_irq_current] &= ~IOGA_INTERRUPT_PENDING; + m_swicr[m_active_interrupt_number] &= ~IOGA_INTERRUPT_PENDING; break; } - // clear irq line - update_interrupt(CLEAR_LINE); - // fall through to return interrupt vector case -1: // return vector for current interrupt without clearing irq line - switch (m_interrupt_active) + switch (m_active_interrupt_type) { - case IOGA_INTERRUPT_EXTERNAL: case IOGA_INTERRUPT_INTERNAL: - return m_int_vector[m_irq_current] & 0xff; + case IOGA_INTERRUPT_EXTERNAL: + vector = m_hwicr[m_active_interrupt_number] & 0xff; + break; case IOGA_INTERRUPT_SOFT_LO: - return 0x8f + m_irq_current * 0x10; + vector = 0x8f + m_active_interrupt_number * 0x10; + break; case IOGA_INTERRUPT_SOFT_HI: - return m_softint_vector[m_irq_current] & 0xff; + vector = m_swicr[m_active_interrupt_number] & 0xff; + break; } + + // interrupt is acknowledged + if (irqline == INPUT_LINE_IRQ0) + m_active_interrupt_type = IOGA_INTERRUPT_NONE; break; case INPUT_LINE_NMI: // clear pending flag - m_nmi_pending = false; - - // clear line - update_interrupt(CLEAR_LINE); - - // return vector - return 0; + m_nmictrl &= ~IOGA_NMI_PENDING; + m_active_interrupt_type = IOGA_INTERRUPT_NONE; + break; } - return 0; + return vector; } -void interpro_ioga_device::update_interrupt(int state) +void interpro_ioga_device::interrupt_clock() { - switch (state) + // called on every ioga clock cycle + // if there are no active interrupts, raise the next pending one + + // don't do anything if any interrupts are currently being serviced + if (m_active_interrupt_type != IOGA_INTERRUPT_NONE) + return; + + // if nmi line is asserted, clear it + if (nmi(CLEAR_LINE)) + return; + + // if irq line is asserted, clear it + if (irq(CLEAR_LINE)) + return; + + // check for pending nmi + if (m_nmictrl & IOGA_NMI_PENDING) { - case CLEAR_LINE: - if (m_interrupt_active) + m_active_interrupt_type = IOGA_INTERRUPT_NMI; + nmi(ASSERT_LINE); + return; + } + + // check for any pending and enabled hardware interrupts + for (int i = 0; i < IOGA_INTERRUPT_COUNT; i++) + { + if ((m_hwicr[i] & irq_enable_mask[i]) && (m_hwicr[i] & IOGA_INTERRUPT_PENDING)) { - // the cpu has acknowledged the active interrupt, deassert the nmi/irq line - m_interrupt_active == IOGA_INTERRUPT_NMI ? m_out_nmi_func(CLEAR_LINE) : m_out_int_func(CLEAR_LINE); + LOG_HWINT(i, "accepting interrupt %d - %s (%s)\n", i, interrupt_source[i], m_int_line & (1 << i) ? "real" : "forced"); + + m_active_interrupt_type = IOGA_INTERRUPT_EXTERNAL; // TODO: flag internal/external + m_active_interrupt_number = i; - // clear the active status - m_interrupt_active = 0; + irq(ASSERT_LINE); + return; } - // fall through to handle any pending interrupts + } - case ASSERT_LINE: - // if an interrupt is currently active, don't do anything - if (m_interrupt_active == 0) + // check for any pending soft interrupts (low type) + for (int i = 0; i < 8; i++) + { + if (m_softint & (1 << i)) { - // check for pending nmi - if (m_nmi_pending) - { - m_interrupt_active = IOGA_INTERRUPT_NMI; + m_active_interrupt_type = IOGA_INTERRUPT_SOFT_LO; + m_active_interrupt_number = i; - m_out_nmi_func(ASSERT_LINE); - return; - } - - // check for any pending irq - for (int i = 0; i < IOGA_INTERRUPT_COUNT; i++) - { - if (m_int_vector[i] & IOGA_INTERRUPT_PENDING) - { - m_interrupt_active = IOGA_INTERRUPT_INTERNAL; // TODO: flag internal/external - m_irq_current = i; - - m_out_int_func(ASSERT_LINE); - return; - } - } + irq(ASSERT_LINE); + return; + } + } - // check for any pending soft interrupts (low type) - for (int i = 0; i < 8; i++) - { - if (m_softint & (1 << i)) - { - m_interrupt_active = IOGA_INTERRUPT_SOFT_LO; - m_irq_current = i; - - m_out_int_func(ASSERT_LINE); - return; - } - } + // check for any pending soft interrupts (high type) + for (int i = 0; i < 8; i++) + { + if (m_swicr[i] & IOGA_INTERRUPT_PENDING) + { + m_active_interrupt_type = IOGA_INTERRUPT_SOFT_HI; + m_active_interrupt_number = i; - // check for any pending soft interrupts (high type) - for (int i = 0; i < 8; i++) - { - if (m_softint_vector[i] & IOGA_INTERRUPT_PENDING) - { - m_interrupt_active = IOGA_INTERRUPT_SOFT_HI; - m_irq_current = i; - - m_out_int_func(ASSERT_LINE); - return; - } - } + irq(ASSERT_LINE); + return; } - break; } } WRITE16_MEMBER(interpro_ioga_device::icr_w) { - LOG_INTERRUPT("interrupt vector %d set to 0x%04x at pc 0x%08x\n", offset, data, space.device().safe_pc()); - - // FIXME: now that the interrupt handling only depends on IOGA_INTERRUPT_PENDING, we might be able - // to avoid this hack + /* + * It appears that writing the pending flag high and then low again is intended to + * "force" an interrupt to be generated. We record the initial write in m_hwint_forced, + * and when a subsequent write occurrs, turn the pending bit on to trigger the interrupt. + * + * FIXME: should we only flag a forced interrupt if pending is written high from low? + */ + + LOG_HWINT(offset, "interrupt vector %d set to 0x%04x at %s\n", offset, data, machine().describe_context()); +#if 1 if (data & IOGA_INTERRUPT_PENDING) { - m_irq_forced |= 1 << offset; - m_int_vector[offset] = data & ~IOGA_INTERRUPT_PENDING; + m_hwint_forced |= 1 << offset; + m_hwicr[offset] = (m_hwicr[offset] & IOGA_INTERRUPT_PENDING) | (data & ~IOGA_INTERRUPT_PENDING); } - else if (m_irq_forced & 1 << offset) + else if (m_hwint_forced & 1 << offset) { - m_int_vector[offset] = data; + m_hwicr[offset] = data; // clear forced flag - m_irq_forced &= ~(1 << offset); + m_hwint_forced &= ~(1 << offset); // force an interrupt - set_irq_line(offset, ASSERT_LINE); + m_hwicr[offset] |= IOGA_INTERRUPT_PENDING; } else - m_int_vector[offset] = data; + m_hwicr[offset] = data; +#else + if (data & IOGA_INTERRUPT_PENDING) + m_hwint_forced |= 1 << offset; + + if (data & IOGA_INTERRUPT_ENABLE_EXTERNAL) + m_hwicr[offset] = data; + else + m_hwicr[offset] = data & ~IOGA_INTERRUPT_PENDING; +#endif } WRITE8_MEMBER(interpro_ioga_device::softint_w) { // save the existing value - uint8_t previous = m_softint; + u8 previous = m_softint; // store the written value m_softint = data; @@ -562,7 +588,7 @@ WRITE8_MEMBER(interpro_ioga_device::softint_w) // force soft interrupt for any bit written from 1 to 0 for (int i = 0; i < 8; i++) { - uint8_t mask = 1 << i; + u8 mask = 1 << i; // check for transition from 1 to 0 and force a soft interrupt if (previous & mask && !(data & mask)) @@ -572,6 +598,7 @@ WRITE8_MEMBER(interpro_ioga_device::softint_w) WRITE8_MEMBER(interpro_ioga_device::nmictrl_w) { +#if 0 // save the existing value uint8_t previous = m_nmictrl; @@ -581,15 +608,18 @@ WRITE8_MEMBER(interpro_ioga_device::nmictrl_w) // force an nmi when pending bit is written low if (previous & IOGA_NMI_PENDING && !(data & IOGA_NMI_PENDING)) set_nmi_line(ASSERT_LINE); +#else + m_nmictrl = data & ~IOGA_NMI_PENDING; +#endif } WRITE16_MEMBER(interpro_ioga_device::softint_vector_w) { // save the existing value - uint16_t previous = m_softint_vector[offset]; + u16 previous = m_swicr[offset]; // store the written value - m_softint_vector[offset] = data; + m_swicr[offset] = data; // check for transition from 1 to 0 and force a soft interrupt if (previous & IOGA_INTERRUPT_PENDING && !(data & IOGA_INTERRUPT_PENDING)) @@ -599,6 +629,54 @@ WRITE16_MEMBER(interpro_ioga_device::softint_vector_w) /****************************************************************************** DMA ******************************************************************************/ +void interpro_ioga_device::dma_clock(int channel) +{ + // transfer data between device and main memory + + // TODO: figure out what indicates dma write (memory -> device) + // TODO: implement multiple dma channels + // TODO: virtual memory? + + if (!m_dma_channel[channel].dma_active) + { + LOG_DMA(channel, "dma: transfer started, channel = %d, control 0x%08x, real address 0x%08x count 0x%08x\n", + channel, m_dma_channel[channel].control, m_dma_channel[channel].real_address, m_dma_channel[channel].transfer_count); + m_dma_channel[channel].dma_active = true; + } + + // while the device is requesting a data transfer and the transfer count is not zero + while (m_dma_channel[channel].drq_state && m_dma_channel[channel].transfer_count) + { + // transfer a byte between device and memory + if (true) + m_memory_space->write_byte(m_dma_channel[channel].real_address, m_dma_channel[channel].device_r()); + else + m_dma_channel[channel].device_w(m_memory_space->read_byte(m_dma_channel[channel].real_address)); + + // increment addresses and decrement count + m_dma_channel[channel].real_address++; + m_dma_channel[channel].virtual_address++; + m_dma_channel[channel].transfer_count--; + } + + // if there are no more bytes remaining, terminate the transfer + if (m_dma_channel[channel].transfer_count == 0) + { + LOG_DMA(channel, "dma: transfer completed, control 0x%08x, real address 0x%08x count 0x%08x\n", + m_dma_channel[channel].control, m_dma_channel[channel].real_address, m_dma_channel[channel].transfer_count); + + if (channel == IOGA_DMA_FLOPPY) + { + LOG_DMA(channel, "dma: asserting fdc terminal count line\n"); + + m_fdc_tc_func(ASSERT_LINE); + m_fdc_tc_func(CLEAR_LINE); + } + + m_dma_channel[channel].dma_active = false; + } +} + void interpro_ioga_device::drq(int state, int channel) { // this member is called when the device has data ready for reading via dma @@ -606,6 +684,8 @@ void interpro_ioga_device::drq(int state, int channel) if (state) { + LOG_DMA(channel, "dma: recieved drq for channel %d\n", channel); + // TODO: check if dma is enabled m_dma_timer->adjust(attotime::zero, channel); } @@ -619,7 +699,7 @@ void interpro_ioga_device::drq(int state, int channel) */ // TODO: 7.0266 - forced BERR not working -uint32_t interpro_ioga_device::dma_r(address_space &space, offs_t offset, uint32_t mem_mask, int channel) +u32 interpro_ioga_device::dma_r(address_space &space, offs_t offset, u32 mem_mask, int channel) { switch (offset) { @@ -640,7 +720,7 @@ uint32_t interpro_ioga_device::dma_r(address_space &space, offs_t offset, uint32 return 0; } -void interpro_ioga_device::dma_w(address_space &space, offs_t offset, uint32_t data, uint32_t mem_mask, int channel) +void interpro_ioga_device::dma_w(address_space &space, offs_t offset, u32 data, u32 mem_mask, int channel) { switch (offset) { @@ -659,11 +739,24 @@ void interpro_ioga_device::dma_w(address_space &space, offs_t offset, uint32_t d case 3: m_dma_channel[channel].control = data & IOGA_DMA_CTRL_WMASK; - logerror("dma: channel = %d, control = 0x%08x, ra = 0x%08x, va = 0x%08x, tc = 0x%08x\n", - channel, data, m_dma_channel[channel].real_address, m_dma_channel[channel].virtual_address, m_dma_channel[channel].transfer_count); + logerror("dma: channel = %d, control = 0x%08x, ra = 0x%08x, va = 0x%08x, tc = 0x%08x at %s\n", + channel, data, m_dma_channel[channel].real_address, m_dma_channel[channel].virtual_address, m_dma_channel[channel].transfer_count, machine().describe_context()); + + // scsidiag + // dma ctrl = 0xbf000600 + // = 0xff000600 + // = 0x63xxxxxx + // 600 = scsi channel? + // b = 1011 + // f = 1111 + // 6 = 0101 + // -> bit 0x4 = read/write? + + + // mask // iogadiag test 7.0265 - if (data == IOGA_DMA_CTRL_START) + if (data & IOGA_DMA_CTRL_START) { uint32_t mask = 0; @@ -685,7 +778,16 @@ void interpro_ioga_device::dma_w(address_space &space, offs_t offset, uint32_t d // if bus grant is not enabled, set the busy flag if (!(m_arbctl & mask)) m_dma_channel[channel].control |= IOGA_DMA_CTRL_BUSY; +#if 0 + // flip transfer count zero on immediately if needed + if (m_dma_channel[channel].transfer_count == 0) + { + m_dma_channel[channel].control |= IOGA_DMA_CTRL_TCZERO; + set_irq_line(2, ASSERT_LINE); + } +#endif } break; } } + diff --git a/src/mame/machine/interpro_ioga.h b/src/mame/machine/interpro_ioga.h index 2809601d98e..3b8df6c9500 100644 --- a/src/mame/machine/interpro_ioga.h +++ b/src/mame/machine/interpro_ioga.h @@ -9,13 +9,13 @@ #include "emu.h" #define MCFG_INTERPRO_IOGA_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, INTERPRO_IOGA, 0) + MCFG_DEVICE_ADD(_tag, INTERPRO_IOGA, XTAL_12_5MHz) #define MCFG_INTERPRO_IOGA_NMI_CB(_out_nmi) \ devcb = &interpro_ioga_device::static_set_out_nmi_callback(*device, DEVCB_##_out_nmi); -#define MCFG_INTERPRO_IOGA_IRQ_CB(_out_int) \ - devcb = &interpro_ioga_device::static_set_out_int_callback(*device, DEVCB_##_out_int); +#define MCFG_INTERPRO_IOGA_IRQ_CB(_out_irq) \ + devcb = &interpro_ioga_device::static_set_out_irq_callback(*device, DEVCB_##_out_irq); #define MCFG_INTERPRO_IOGA_DMA_CB(_channel, _dma_r, _dma_w) \ devcb = &interpro_ioga_device::static_set_dma_r_callback(*device, _channel, DEVCB_##_dma_r); \ @@ -54,6 +54,7 @@ #define IOGA_NMI_ENABLE_IN 0x10 #define IOGA_NMI_ENABLE (IOGA_NMI_EDGE | IOGA_NMI_ENABLE_IN) +#define IOGA_INTERRUPT_NONE 0 #define IOGA_INTERRUPT_NMI 1 #define IOGA_INTERRUPT_INTERNAL 2 #define IOGA_INTERRUPT_EXTERNAL 3 @@ -71,13 +72,23 @@ #define IOGA_DMA_CTRL_RESET_L 0x61000000 // do not clear bus error bit #define IOGA_DMA_CTRL_RESET 0x60400000 // clear bus error bit -#define IOGA_DMA_CTRL_START 0x63000800 // perhaps start a transfer? - maybe the 8 is the channel? +#define IOGA_DMA_CTRL_START 0x10000000 +#define IOGA_DMA_CTRL_WRITE 0x40000000 // indicates memory to device transfer +#define IOGA_DMA_CTRL_BUSY 0x02000000 +#define IOGA_DMA_CTRL_BERR 0x00400000 // iogadiag code expects 0x60400000 on bus error +#define IOGA_DMA_CTRL_X 0x00800000 // another error bit? +#define IOGA_DMA_CTRL_Y 0x01000000 // turned off if either of two above are found +#define IOGA_DMA_CTRL_TCZERO 0x00000001 + +// DMA_ENABLE, INT_ENABLE, + +//#define IOGA_DMA_CTRL_START 0x63000800 // perhaps start a transfer? - maybe the 8 is the channel? #define IOGA_DMA_CTRL_UNK1 0x60000000 // don't know yet #define IOGA_DMA_CTRL_UNK2 0x67000600 // forced berr with nmi and interrupts disabled +#define IOGA_DMA_CTRL_UNK3 0xbf000600 // set by scsidiag before executing scsi "transfer information" command + // read values -#define IOGA_DMA_CTRL_BUSY 0x02000000 -#define IOGA_DMA_CTRL_BERR 0x00400000 // iogadiag code expects 0x60400000 on bus error // iogadiag expects 0x64400800 after forced berr with nmi/interrupts disabled @@ -98,7 +109,7 @@ public: interpro_ioga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); template static devcb_base &static_set_out_nmi_callback(device_t &device, _Object object) { return downcast(device).m_out_nmi_func.set_callback(object); } - template static devcb_base &static_set_out_int_callback(device_t &device, _Object object) { return downcast(device).m_out_int_func.set_callback(object); } + template static devcb_base &static_set_out_irq_callback(device_t &device, _Object object) { return downcast(device).m_out_irq_func.set_callback(object); } template static devcb_base &static_set_dma_r_callback(device_t &device, int channel, _Object object) { return downcast(device).m_dma_channel[channel].device_r.set_callback(object); } template static devcb_base &static_set_dma_w_callback(device_t &device, int channel, _Object object) { return downcast(device).m_dma_channel[channel].device_w.set_callback(object); } @@ -151,7 +162,7 @@ public: DECLARE_WRITE32_MEMBER(timer2_w) { write_timer(2, data, IOGA_TIMER_2); } DECLARE_WRITE32_MEMBER(timer3_w) { write_timer(3, data, IOGA_TIMER_3); } - DECLARE_READ16_MEMBER(icr_r) { return m_int_vector[offset]; } + DECLARE_READ16_MEMBER(icr_r) { return m_hwicr[offset]; } DECLARE_WRITE16_MEMBER(icr_w); DECLARE_READ16_MEMBER(icr18_r) { return icr_r(space, 18, mem_mask); } DECLARE_WRITE16_MEMBER(icr18_w) { icr_w(space, 18, data, mem_mask); } @@ -161,7 +172,7 @@ public: DECLARE_READ8_MEMBER(nmictrl_r) { return m_nmictrl; } DECLARE_WRITE8_MEMBER(nmictrl_w); - DECLARE_READ16_MEMBER(softint_vector_r) { return m_softint_vector[offset]; } + DECLARE_READ16_MEMBER(softint_vector_r) { return m_swicr[offset]; } DECLARE_WRITE16_MEMBER(softint_vector_w); DECLARE_READ32_MEMBER(dma_plotter_r) { return dma_r(space, offset, mem_mask, IOGA_DMA_PLOTTER); } @@ -176,7 +187,9 @@ public: DECLARE_READ32_MEMBER(error_address_r) { return m_error_address; } DECLARE_READ32_MEMBER(error_businfo_r) { return m_error_businfo; } - void bus_error(uint32_t address, uint32_t cycle_type) { m_error_address = address; m_error_businfo = cycle_type; } + + DECLARE_WRITE32_MEMBER(bus_error) { m_error_address = data; m_error_businfo = offset; } + //void bus_error(uint32_t address, uint32_t cycle_type) { m_error_address = address; m_error_businfo = cycle_type; } protected: // device-level overrides @@ -189,64 +202,74 @@ private: static const device_timer_id IOGA_TIMER_1 = 1; static const device_timer_id IOGA_TIMER_2 = 2; static const device_timer_id IOGA_TIMER_3 = 3; - static const device_timer_id IOGA_TIMER_DMA = 4; + static const device_timer_id IOGA_CLOCK = 5; void set_nmi_line(int state); void set_irq_line(int irq, int state); void set_irq_soft(int irq, int state); - void write_timer(int timer, uint32_t value, device_timer_id id); + void write_timer(int timer, u32 value, device_timer_id id); - void update_interrupt(int state); + void interrupt_clock(); + void dma_clock(int channel); void drq(int state, int channel); devcb_write_line m_out_nmi_func; - devcb_write_line m_out_int_func; + devcb_write_line m_out_irq_func; address_space *m_memory_space; // dma channels struct dma { - uint32_t real_address; - uint32_t virtual_address; - uint32_t transfer_count; - uint32_t control; + u32 real_address; + u32 virtual_address; + u32 transfer_count; + u32 control; bool dma_active; int drq_state; devcb_read8 device_r; devcb_write8 device_w; } m_dma_channel[IOGA_DMA_CHANNELS]; - uint32_t m_dma_plotter_eosl; + u32 m_dma_plotter_eosl; devcb_write_line m_fdc_tc_func; - bool m_nmi_pending; - uint32_t m_interrupt_active; - uint32_t m_irq_current; - uint32_t m_irq_forced; + u32 m_active_interrupt_type; + u32 m_active_interrupt_number; - uint16_t m_int_vector[IOGA_INTERRUPT_COUNT]; - uint8_t m_softint; - uint8_t m_nmictrl; - uint16_t m_softint_vector[8]; + u32 m_hwint_forced; - uint32_t m_prescaler; - uint32_t m_timer_reg[3]; - uint16_t m_timer1_count; - uint32_t m_timer3_count; + u16 m_hwicr[IOGA_INTERRUPT_COUNT]; + u8 m_softint; + u8 m_nmictrl; + u16 m_swicr[8]; + + u32 m_prescaler; + u32 m_timer_reg[3]; + u16 m_timer1_count; + u32 m_timer3_count; emu_timer *m_timer[4]; // dma state emu_timer *m_dma_timer; - uint32_t dma_r(address_space &space, offs_t offset, uint32_t mem_mask, int channel); - void dma_w(address_space &space, offs_t offset, uint32_t data, uint32_t mem_mask, int channel); + u32 dma_r(address_space &space, offs_t offset, u32 mem_mask, int channel); + void dma_w(address_space &space, offs_t offset, u32 data, u32 mem_mask, int channel); + + u16 m_arbctl; + + u32 m_error_address; + u32 m_error_businfo; + + emu_timer *m_ioga_clock; + int m_nmi_state; + int m_irq_state; - uint16_t m_arbctl; + u32 m_int_line; - uint32_t m_error_address; - uint32_t m_error_businfo; + bool nmi(int state); + bool irq(int state); }; // device type definition -- cgit v1.2.3 From b1829e2e376b213ed0b0fdb6d1d2c6b27c0596da Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Thu, 18 May 2017 16:03:58 +0700 Subject: basic 53c94 support --- src/devices/machine/ncr5390.cpp | 21 ++++++++++++++++++++- src/devices/machine/ncr5390.h | 12 ++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/devices/machine/ncr5390.cpp b/src/devices/machine/ncr5390.cpp index 4fc9257a009..c9c0624c0e3 100644 --- a/src/devices/machine/ncr5390.cpp +++ b/src/devices/machine/ncr5390.cpp @@ -19,13 +19,20 @@ DEVICE_ADDRESS_MAP_START(map, 8, ncr5390_device) AM_RANGE(0x7, 0x7) AM_READWRITE(fifo_flags_r, sync_offset_w) AM_RANGE(0x8, 0x8) AM_READWRITE(conf_r, conf_w) AM_RANGE(0x9, 0x9) AM_WRITE(clock_w) + AM_RANGE(0xa, 0xa) AM_WRITE(test_w) + AM_RANGE(0xb, 0xb) AM_READWRITE(conf2_r, conf2_w) + AM_RANGE(0xc, 0xc) AM_READWRITE(conf3_r, conf3_w) + AM_RANGE(0xf, 0xf) AM_WRITE(fifo_align_w) ADDRESS_MAP_END ncr5390_device::ncr5390_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : nscsi_device(mconfig, NCR5390, "5390 SCSI", tag, owner, clock, "ncr5390", __FILE__), tm(nullptr), config(0), status(0), istatus(0), clock_conv(0), sync_offset(0), sync_period(0), bus_id(0), select_timeout(0), seq(0), tcount(0), mode(0), fifo_pos(0), command_pos(0), state(0), xfr_phase(0), command_length(0), dma_dir(0), irq(false), drq(false), m_irq_handler(*this), - m_drq_handler(*this) + m_drq_handler(*this), + test_mode(false), + config2(0), + config3(0) { } @@ -89,6 +96,9 @@ void ncr5390_device::reset_soft() scsi_bus->ctrl_wait(scsi_refid, S_SEL|S_BSY|S_RST, S_ALL); status &= 0xef; drq = false; + test_mode = false; + config2 = 0; + config3 = 0; m_drq_handler(drq); reset_disconnect(); } @@ -815,6 +825,10 @@ WRITE8_MEMBER(ncr5390_device::conf_w) { config = data; scsi_id = data & 7; + + // test mode can only be cleared by hard/soft reset + if (data & 0x8) + test_mode = true; } WRITE8_MEMBER(ncr5390_device::clock_w) @@ -822,6 +836,11 @@ WRITE8_MEMBER(ncr5390_device::clock_w) clock_conv = data & 0x07; } +WRITE8_MEMBER(ncr5390_device::test_w) +{ + if (test_mode) + logerror("%s: test_w %d (%08x) - test mode not implemented\n", tag(), data, space.device().safe_pc()); +} void ncr5390_device::dma_set(int dir) { dma_dir = dir; diff --git a/src/devices/machine/ncr5390.h b/src/devices/machine/ncr5390.h index 200e1acb57e..ce921b3e1da 100644 --- a/src/devices/machine/ncr5390.h +++ b/src/devices/machine/ncr5390.h @@ -42,6 +42,13 @@ public: DECLARE_WRITE8_MEMBER(conf_w); DECLARE_WRITE8_MEMBER(clock_w); + DECLARE_WRITE8_MEMBER(test_w); + DECLARE_READ8_MEMBER(conf2_r) { return config2; }; + DECLARE_WRITE8_MEMBER(conf2_w) { config2 = data; }; + DECLARE_READ8_MEMBER(conf3_r) { return config3; }; + DECLARE_WRITE8_MEMBER(conf3_w) { config3 = data; }; + DECLARE_WRITE8_MEMBER(fifo_align_w) { m_fifo_align = data; }; + virtual void scsi_ctrl_changed() override; uint8_t dma_r(); @@ -225,6 +232,11 @@ private: devcb_write_line m_irq_handler; devcb_write_line m_drq_handler; + + bool test_mode; + u8 config2; + u8 config3; + u8 m_fifo_align; }; extern const device_type NCR5390; -- cgit v1.2.3 From 4a2527039ec732debf44730659c900a979268fee Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Thu, 18 May 2017 16:04:15 +0700 Subject: added missing start/stop unit command --- src/devices/machine/t10spc.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/devices/machine/t10spc.cpp b/src/devices/machine/t10spc.cpp index 59547374f58..26fafdd8b0c 100644 --- a/src/devices/machine/t10spc.cpp +++ b/src/devices/machine/t10spc.cpp @@ -66,6 +66,12 @@ void t10spc::ExecCommand() } break; + case T10SPC_CMD_START_STOP_UNIT: + m_phase = SCSI_PHASE_STATUS; + m_status_code = SCSI_STATUS_CODE_GOOD; + m_transfer_length = 0; + break; + case T10SPC_CMD_SEND_DIAGNOSTIC: m_phase = SCSI_PHASE_DATAOUT; m_status_code = SCSI_STATUS_CODE_GOOD; -- cgit v1.2.3 From 9009af54e9addfba0159f17b6d8456cf58e794a9 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Thu, 18 May 2017 16:04:29 +0700 Subject: forced nmi handling --- src/mame/machine/interpro_ioga.cpp | 16 +++++++++++++++- src/mame/machine/interpro_ioga.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/mame/machine/interpro_ioga.cpp b/src/mame/machine/interpro_ioga.cpp index 53073ecf44f..09c94e263b5 100644 --- a/src/mame/machine/interpro_ioga.cpp +++ b/src/mame/machine/interpro_ioga.cpp @@ -609,7 +609,21 @@ WRITE8_MEMBER(interpro_ioga_device::nmictrl_w) if (previous & IOGA_NMI_PENDING && !(data & IOGA_NMI_PENDING)) set_nmi_line(ASSERT_LINE); #else - m_nmictrl = data & ~IOGA_NMI_PENDING; + if (data & IOGA_NMI_PENDING) + { + m_nmi_forced = true; + m_nmictrl = (m_nmictrl & IOGA_NMI_PENDING) | (data & ~IOGA_NMI_PENDING); + } + else if (m_nmi_forced) + { + m_nmi_forced = false; + + m_nmictrl = data | IOGA_NMI_PENDING; + } + else + m_nmictrl = data; + + //m_nmictrl = data & ~IOGA_NMI_PENDING; #endif } diff --git a/src/mame/machine/interpro_ioga.h b/src/mame/machine/interpro_ioga.h index 3b8df6c9500..17d43eb16ca 100644 --- a/src/mame/machine/interpro_ioga.h +++ b/src/mame/machine/interpro_ioga.h @@ -239,6 +239,7 @@ private: u32 m_active_interrupt_number; u32 m_hwint_forced; + bool m_nmi_forced; u16 m_hwicr[IOGA_INTERRUPT_COUNT]; u8 m_softint; -- cgit v1.2.3 From 66fc4b0a44ad35bbb8561d1bf5a316a998f202b6 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 08:26:42 +0700 Subject: merge cleanups --- 3rdparty/bgfx/examples/common/entry/dbg.cpp | 87 ---------- 3rdparty/bx/include/bx/foreach.h | 71 -------- 3rdparty/bx/include/bx/process.h | 80 --------- 3rdparty/bx/include/bx/tokenizecmd.h | 146 ---------------- 3rdparty/bx/tests/dbg.cpp | 87 ---------- 3rdparty/bx/tests/misc_test.cpp | 8 - 3rdparty/catch/projects/CMake/CMakeLists.txt | 68 -------- .../iTchRunner/internal/iTchRunnerMainView.h | 189 --------------------- 8 files changed, 736 deletions(-) delete mode 100644 3rdparty/bgfx/examples/common/entry/dbg.cpp delete mode 100644 3rdparty/bx/include/bx/foreach.h delete mode 100644 3rdparty/bx/include/bx/process.h delete mode 100644 3rdparty/bx/include/bx/tokenizecmd.h delete mode 100644 3rdparty/bx/tests/dbg.cpp delete mode 100644 3rdparty/bx/tests/misc_test.cpp delete mode 100644 3rdparty/catch/projects/CMake/CMakeLists.txt delete mode 100644 3rdparty/catch/projects/runners/iTchRunner/internal/iTchRunnerMainView.h diff --git a/3rdparty/bgfx/examples/common/entry/dbg.cpp b/3rdparty/bgfx/examples/common/entry/dbg.cpp deleted file mode 100644 index c99610b2c95..00000000000 --- a/3rdparty/bgfx/examples/common/entry/dbg.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2011-2017 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause - */ - -#include -#include -#include -#include // isprint - -#include "dbg.h" -#include -#include - -void dbgPrintfVargs(const char* _format, va_list _argList) -{ - char temp[8192]; - char* out = temp; - int32_t len = bx::vsnprintf(out, sizeof(temp), _format, _argList); - if ( (int32_t)sizeof(temp) < len) - { - out = (char*)alloca(len+1); - len = bx::vsnprintf(out, len, _format, _argList); - } - out[len] = '\0'; - bx::debugOutput(out); -} - -void dbgPrintf(const char* _format, ...) -{ - va_list argList; - va_start(argList, _format); - dbgPrintfVargs(_format, argList); - va_end(argList); -} - -#define DBG_ADDRESS "%" PRIxPTR - -void dbgPrintfData(const void* _data, uint32_t _size, const char* _format, ...) -{ -#define HEX_DUMP_WIDTH 16 -#define HEX_DUMP_SPACE_WIDTH 48 -#define HEX_DUMP_FORMAT "%-" DBG_STRINGIZE(HEX_DUMP_SPACE_WIDTH) "." DBG_STRINGIZE(HEX_DUMP_SPACE_WIDTH) "s" - - va_list argList; - va_start(argList, _format); - dbgPrintfVargs(_format, argList); - va_end(argList); - - dbgPrintf("\ndata: " DBG_ADDRESS ", size: %d\n", _data, _size); - - if (NULL != _data) - { - const uint8_t* data = reinterpret_cast(_data); - char hex[HEX_DUMP_WIDTH*3+1]; - char ascii[HEX_DUMP_WIDTH+1]; - uint32_t hexPos = 0; - uint32_t asciiPos = 0; - for (uint32_t ii = 0; ii < _size; ++ii) - { - bx::snprintf(&hex[hexPos], sizeof(hex)-hexPos, "%02x ", data[asciiPos]); - hexPos += 3; - - ascii[asciiPos] = isprint(data[asciiPos]) ? data[asciiPos] : '.'; - asciiPos++; - - if (HEX_DUMP_WIDTH == asciiPos) - { - ascii[asciiPos] = '\0'; - dbgPrintf("\t" DBG_ADDRESS "\t" HEX_DUMP_FORMAT "\t%s\n", data, hex, ascii); - data += asciiPos; - hexPos = 0; - asciiPos = 0; - } - } - - if (0 != asciiPos) - { - ascii[asciiPos] = '\0'; - dbgPrintf("\t" DBG_ADDRESS "\t" HEX_DUMP_FORMAT "\t%s\n", data, hex, ascii); - } - } - -#undef HEX_DUMP_WIDTH -#undef HEX_DUMP_SPACE_WIDTH -#undef HEX_DUMP_FORMAT -} diff --git a/3rdparty/bx/include/bx/foreach.h b/3rdparty/bx/include/bx/foreach.h deleted file mode 100644 index 53a6dde7265..00000000000 --- a/3rdparty/bx/include/bx/foreach.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2010-2017 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#ifndef BX_FOREACH_H_HEADER_GUARD -#define BX_FOREACH_H_HEADER_GUARD - -#include "bx.h" - -namespace bx -{ - namespace foreach_ns - { - struct ContainerBase - { - }; - - template - class Container : public ContainerBase - { - public: - inline Container(const Ty& _container) - : m_container(_container) - , m_break(0) - , m_it( _container.begin() ) - , m_itEnd( _container.end() ) - { - } - - inline bool condition() const - { - return (!m_break++ && m_it != m_itEnd); - } - - const Ty& m_container; - mutable int m_break; - mutable typename Ty::const_iterator m_it; - mutable typename Ty::const_iterator m_itEnd; - }; - - template - inline Ty* pointer(const Ty&) - { - return 0; - } - - template - inline Container containerNew(const Ty& _container) - { - return Container(_container); - } - - template - inline const Container* container(const ContainerBase* _base, const Ty*) - { - return static_cast*>(_base); - } - } // namespace foreach_ns - -#define foreach(_variable, _container) \ - for (const bx::foreach_ns::ContainerBase &__temp_container__ = bx::foreach_ns::containerNew(_container); \ - bx::foreach_ns::container(&__temp_container__, true ? 0 : bx::foreach_ns::pointer(_container) )->condition(); \ - ++bx::foreach_ns::container(&__temp_container__, true ? 0 : bx::foreach_ns::pointer(_container) )->m_it) \ - for (_variable = *container(&__temp_container__, true ? 0 : bx::foreach_ns::pointer(_container) )->m_it; \ - bx::foreach_ns::container(&__temp_container__, true ? 0 : bx::foreach_ns::pointer(_container) )->m_break; \ - --bx::foreach_ns::container(&__temp_container__, true ? 0 : bx::foreach_ns::pointer(_container) )->m_break) - -} // namespace bx - -#endif // BX_FOREACH_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/process.h b/3rdparty/bx/include/bx/process.h deleted file mode 100644 index 03c8f120624..00000000000 --- a/3rdparty/bx/include/bx/process.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2010-2017 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#ifndef BX_PROCESS_H_HEADER_GUARD -#define BX_PROCESS_H_HEADER_GUARD - -#include "string.h" -#include "uint32_t.h" - -#if BX_PLATFORM_LINUX || BX_PLATFORM_HURD -# include -#endif // BX_PLATFORM_LINUX || BX_PLATFORM_HURD - -namespace bx -{ - /// - inline void* exec(const char* const* _argv) - { -#if BX_PLATFORM_LINUX || BX_PLATFORM_HURD - pid_t pid = fork(); - - if (0 == pid) - { - int result = execvp(_argv[0], const_cast(&_argv[1]) ); - BX_UNUSED(result); - return NULL; - } - - return (void*)uintptr_t(pid); -#elif BX_PLATFORM_WINDOWS - STARTUPINFO si; - memset(&si, 0, sizeof(STARTUPINFO) ); - si.cb = sizeof(STARTUPINFO); - - PROCESS_INFORMATION pi; - memset(&pi, 0, sizeof(PROCESS_INFORMATION) ); - - int32_t total = 0; - for (uint32_t ii = 0; NULL != _argv[ii]; ++ii) - { - total += (int32_t)strlen(_argv[ii]) + 1; - } - - char* temp = (char*)alloca(total); - int32_t len = 0; - for(uint32_t ii = 0; NULL != _argv[ii]; ++ii) - { - len += snprintf(&temp[len], bx::uint32_imax(0, total-len) - , "%s " - , _argv[ii] - ); - } - - bool ok = CreateProcessA(_argv[0] - , temp - , NULL - , NULL - , false - , 0 - , NULL - , NULL - , &si - , &pi - ); - if (ok) - { - return pi.hProcess; - } - - return NULL; -#else - return NULL; -#endif // BX_PLATFORM_LINUX || BX_PLATFORM_HURD - } - -} // namespace bx - -#endif // BX_PROCESS_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/tokenizecmd.h b/3rdparty/bx/include/bx/tokenizecmd.h deleted file mode 100644 index 0fe2e00b67a..00000000000 --- a/3rdparty/bx/include/bx/tokenizecmd.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2012-2017 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#ifndef BX_TOKENIZE_CMD_H_HEADER_GUARD -#define BX_TOKENIZE_CMD_H_HEADER_GUARD - -#include -#include -#include - -namespace bx -{ - // Reference: - // http://msdn.microsoft.com/en-us/library/a1y7w461.aspx - static inline const char* tokenizeCommandLine(const char* _commandLine, char* _buffer, uint32_t& _bufferSize, int& _argc, char* _argv[], int _maxArgvs, char _term = '\0') - { - int argc = 0; - const char* curr = _commandLine; - char* currOut = _buffer; - char term = ' '; - bool sub = false; - - enum ParserState - { - SkipWhitespace, - SetTerm, - Copy, - Escape, - End, - }; - - ParserState state = SkipWhitespace; - - while ('\0' != *curr - && _term != *curr - && argc < _maxArgvs) - { - switch (state) - { - case SkipWhitespace: - for (; isspace(*curr); ++curr) {}; // skip whitespace - state = SetTerm; - break; - - case SetTerm: - if ('"' == *curr) - { - term = '"'; - ++curr; // skip begining quote - } - else - { - term = ' '; - } - - _argv[argc] = currOut; - ++argc; - - state = Copy; - break; - - case Copy: - if ('\\' == *curr) - { - state = Escape; - } - else if ('"' == *curr - && '"' != term) - { - sub = !sub; - } - else if (isspace(*curr) && !sub) - { - state = End; - } - else if (term != *curr || sub) - { - *currOut = *curr; - ++currOut; - } - else - { - state = End; - } - ++curr; - break; - - case Escape: - { - const char* start = --curr; - for (; '\\' == *curr; ++curr) {}; - - if ('"' != *curr) - { - int count = (int)(curr-start); - - curr = start; - for (int ii = 0; ii < count; ++ii) - { - *currOut = *curr; - ++currOut; - ++curr; - } - } - else - { - curr = start+1; - *currOut = *curr; - ++currOut; - ++curr; - } - } - state = Copy; - break; - - case End: - *currOut = '\0'; - ++currOut; - state = SkipWhitespace; - break; - } - } - - *currOut = '\0'; - if (0 < argc - && '\0' == _argv[argc-1][0]) - { - --argc; - } - - _bufferSize = (uint32_t)(currOut - _buffer); - _argc = argc; - - if ('\0' != *curr) - { - ++curr; - } - - return curr; - } - -} // namespace bx - -#endif // TOKENIZE_CMD_H_HEADER_GUARD diff --git a/3rdparty/bx/tests/dbg.cpp b/3rdparty/bx/tests/dbg.cpp deleted file mode 100644 index 58e3f034a86..00000000000 --- a/3rdparty/bx/tests/dbg.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2011-2017 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#include -#include -#include -#include // isprint - -#include "dbg.h" -#include -#include - -void dbgPrintfVargs(const char* _format, va_list _argList) -{ - char temp[8192]; - char* out = temp; - int32_t len = bx::vsnprintf(out, sizeof(temp), _format, _argList); - if ( (int32_t)sizeof(temp) < len) - { - out = (char*)alloca(len+1); - len = bx::vsnprintf(out, len, _format, _argList); - } - out[len] = '\0'; - bx::debugOutput(out); -} - -void dbgPrintf(const char* _format, ...) -{ - va_list argList; - va_start(argList, _format); - dbgPrintfVargs(_format, argList); - va_end(argList); -} - -#define DBG_ADDRESS "%" PRIxPTR - -void dbgPrintfData(const void* _data, uint32_t _size, const char* _format, ...) -{ -#define HEX_DUMP_WIDTH 16 -#define HEX_DUMP_SPACE_WIDTH 48 -#define HEX_DUMP_FORMAT "%-" DBG_STRINGIZE(HEX_DUMP_SPACE_WIDTH) "." DBG_STRINGIZE(HEX_DUMP_SPACE_WIDTH) "s" - - va_list argList; - va_start(argList, _format); - dbgPrintfVargs(_format, argList); - va_end(argList); - - dbgPrintf("\ndata: " DBG_ADDRESS ", size: %d\n", _data, _size); - - if (NULL != _data) - { - const uint8_t* data = reinterpret_cast(_data); - char hex[HEX_DUMP_WIDTH*3+1]; - char ascii[HEX_DUMP_WIDTH+1]; - uint32_t hexPos = 0; - uint32_t asciiPos = 0; - for (uint32_t ii = 0; ii < _size; ++ii) - { - bx::snprintf(&hex[hexPos], sizeof(hex)-hexPos, "%02x ", data[asciiPos]); - hexPos += 3; - - ascii[asciiPos] = isprint(data[asciiPos]) ? data[asciiPos] : '.'; - asciiPos++; - - if (HEX_DUMP_WIDTH == asciiPos) - { - ascii[asciiPos] = '\0'; - dbgPrintf("\t" DBG_ADDRESS "\t" HEX_DUMP_FORMAT "\t%s\n", data, hex, ascii); - data += asciiPos; - hexPos = 0; - asciiPos = 0; - } - } - - if (0 != asciiPos) - { - ascii[asciiPos] = '\0'; - dbgPrintf("\t" DBG_ADDRESS "\t" HEX_DUMP_FORMAT "\t%s\n", data, hex, ascii); - } - } - -#undef HEX_DUMP_WIDTH -#undef HEX_DUMP_SPACE_WIDTH -#undef HEX_DUMP_FORMAT -} diff --git a/3rdparty/bx/tests/misc_test.cpp b/3rdparty/bx/tests/misc_test.cpp deleted file mode 100644 index aec1067a022..00000000000 --- a/3rdparty/bx/tests/misc_test.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "test.h" -#include - -TEST(getProcessMemoryUsed) -{ - CHECK(0 != bx::getProcessMemoryUsed() ); -// DBG("bx::getProcessMemoryUsed %d", bx::getProcessMemoryUsed() ); -} diff --git a/3rdparty/catch/projects/CMake/CMakeLists.txt b/3rdparty/catch/projects/CMake/CMakeLists.txt deleted file mode 100644 index f4fb704f1a6..00000000000 --- a/3rdparty/catch/projects/CMake/CMakeLists.txt +++ /dev/null @@ -1,68 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -project(Catch) - -# define some folders -get_filename_component(CATCH_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PATH) -get_filename_component(CATCH_DIR "${CATCH_DIR}" PATH) -set(SELF_TEST_DIR ${CATCH_DIR}/projects/SelfTest) -if(USE_CPP11) - ## We can't turn this on by default, since it breaks on travis - message(STATUS "Enabling C++11") - set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") -endif() - -# define the sources of the self test -set(SOURCES - ${SELF_TEST_DIR}/ApproxTests.cpp - ${SELF_TEST_DIR}/BDDTests.cpp - ${SELF_TEST_DIR}/ClassTests.cpp - ${SELF_TEST_DIR}/ConditionTests.cpp - ${SELF_TEST_DIR}/ExceptionTests.cpp - ${SELF_TEST_DIR}/GeneratorTests.cpp - ${SELF_TEST_DIR}/MessageTests.cpp - ${SELF_TEST_DIR}/MiscTests.cpp - ${SELF_TEST_DIR}/PartTrackerTests.cpp - ${SELF_TEST_DIR}/TestMain.cpp - ${SELF_TEST_DIR}/TrickyTests.cpp - ${SELF_TEST_DIR}/VariadicMacrosTests.cpp - ${SELF_TEST_DIR}/EnumToString.cpp - ${SELF_TEST_DIR}/ToStringPair.cpp - ${SELF_TEST_DIR}/ToStringVector.cpp - ${SELF_TEST_DIR}/ToStringWhich.cpp - ${SELF_TEST_DIR}/ToStringTuple.cpp - ${SELF_TEST_DIR}/CmdLineTests.cpp - ${SELF_TEST_DIR}/TagAliasTests.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_common.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_console_colour.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_debugger.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_capture.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_config.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_exception.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_generators.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_registry_hub.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_reporter.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_runner.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_testcase.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_message.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_option.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_ptr.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_stream.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_streambuf.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_test_spec.cpp - ${SELF_TEST_DIR}/SurrogateCpps/catch_xmlwriter.cpp - ) - -# configure the executable -include_directories(${CATCH_DIR}/include) -add_executable(SelfTest ${SOURCES}) - -# configure unit tests via CTest -enable_testing() -add_test(NAME RunTests COMMAND SelfTest) - -add_test(NAME ListTests COMMAND SelfTest --list-tests) -set_tests_properties(ListTests PROPERTIES PASS_REGULAR_EXPRESSION "[0-9]+ test cases") - -add_test(NAME ListTags COMMAND SelfTest --list-tags) -set_tests_properties(ListTags PROPERTIES PASS_REGULAR_EXPRESSION "[0-9]+ tags") diff --git a/3rdparty/catch/projects/runners/iTchRunner/internal/iTchRunnerMainView.h b/3rdparty/catch/projects/runners/iTchRunner/internal/iTchRunnerMainView.h deleted file mode 100644 index c6a6394ea57..00000000000 --- a/3rdparty/catch/projects/runners/iTchRunner/internal/iTchRunnerMainView.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * iTchRunnerMainView.h - * iTchRunner - * - * Created by Phil on 07/02/2011. - * Copyright 2011 Two Blue Cubes Ltd. All rights reserved. - * - */ -#ifndef TWOBLUECUBES_ITCHRUNNERMAINVIEW_H_INCLUDED -#define TWOBLUECUBES_ITCHRUNNERMAINVIEW_H_INCLUDED - -#include "internal/catch_config.hpp" -#include "internal/catch_runner_impl.hpp" -#include "internal/catch_context_impl.hpp" -#include "catch.hpp" - -#include "iTchRunnerReporter.h" - -#import - -@interface iTchRunnerMainView : UIView -{ - UITextField* appName; -} - --(void) showAlert; - -@end - -@implementation iTchRunnerMainView - - -/////////////////////////////////////////////////////////////////////////////// --(id) initWithFrame:(CGRect)frame -{ - if ((self = [super initWithFrame:frame])) - { - // Initialization code - self.backgroundColor = [UIColor blackColor]; - - appName = [[UITextField alloc] initWithFrame: CGRectMake( 0, 50, 320, 50 )]; - [self addSubview: appName]; - arcSafeRelease( appName ); - appName.textColor = [[UIColor alloc] initWithRed:0.35 green:0.35 blue:1 alpha:1]; - arcSafeRelease( appName.textColor ); - appName.textAlignment = NSTextAlignmentCenter; - - appName.text = [NSString stringWithFormat:@"CATCH tests"]; -// [self performSelector: @selector(showAlert) withObject:nil afterDelay:0.1]; - [self performSelectorOnMainThread:@selector(showAlert) withObject:nil waitUntilDone:NO]; - - } - return self; -} - -/////////////////////////////////////////////////////////////////////////////// --(void) dealloc -{ - [appName removeFromSuperview]; -#if !CATCH_ARC_ENABLED - [super dealloc]; -#endif -} - -/////////////////////////////////////////////////////////////////////////////// --(void) showAlert -{ - UIActionSheet* menu = [[UIActionSheet alloc] initWithTitle:@"Options" - delegate:self - cancelButtonTitle:nil - destructiveButtonTitle:nil - otherButtonTitles:@"Run all tests", nil]; - [menu showInView: self]; - arcSafeRelease( menu ); - -} - -// This is a copy & paste from Catch::Runner2 to get us bootstrapped (this is due to all be -// replaced anyway) -inline Catch::Totals runTestsForGroup( Catch::RunContext& context, const Catch::TestCaseFilters& filterGroup ) { - using namespace Catch; - Totals totals; - std::vector::const_iterator it = getRegistryHub().getTestCaseRegistry().getAllTests().begin(); - std::vector::const_iterator itEnd = getRegistryHub().getTestCaseRegistry().getAllTests().end(); - int testsRunForGroup = 0; - for(; it != itEnd; ++it ) { - if( filterGroup.shouldInclude( *it ) ) { - testsRunForGroup++; - - if( context.aborting() ) - break; - - totals += context.runTest( *it ); - } - } - if( testsRunForGroup == 0 ) - std::cerr << "\n[No test cases matched with: " << filterGroup.getName() << "]" << std::endl; - return totals; - -} - -/////////////////////////////////////////////////////////////////////////////// --(void) actionSheet: (UIActionSheet*) sheet clickedButtonAtIndex: (NSInteger) index -{ - Catch::Ptr config = new Catch::Config(); - Catch::IReporter* reporter = new Catch::iTchRunnerReporter( self ); - Catch::LegacyReporterAdapter* reporterAdapter = new Catch::LegacyReporterAdapter( reporter ); - Catch::RunContext runner( config.get(), reporterAdapter ); - - - std::vector filterGroups; - Catch::TestCaseFilters filterGroup( "" ); - filterGroups.push_back( filterGroup ); - - Catch::Totals totals; - - std::vector::const_iterator it = filterGroups.begin(); - std::vector::const_iterator itEnd = filterGroups.end(); - - std::size_t groupCount = filterGroups.size(); - std::size_t groupIndex = 0; - for(; it != itEnd && !runner.aborting(); ++it, ++index ) { - runner.testGroupStarting( it->getName(), groupIndex, groupCount ); - totals += runTestsForGroup( runner, *it ); - runner.testGroupEnded( it->getName(), totals, groupIndex, groupCount ); - } - - - if( totals.assertions.failed == 0 ) - { - NSLog( @"no failures" ); - if( totals.assertions.passed > 0 ) - appName.textColor = [[UIColor alloc] initWithRed:0.35 green:1 blue:0.35 alpha:1]; - } - else - { - NSLog( @"%lu failures", totals.assertions.failed ); - appName.textColor = [[UIColor alloc] initWithRed:1 green:0.35 blue:0.35 alpha:1]; - } -} - -/////////////////////////////////////////////////////////////////////////////// --(void) testWasRun: (const Catch::AssertionResult*) pResultInfo -{ - const Catch::AssertionResult& resultInfo = *pResultInfo; - std::ostringstream oss; - - if( resultInfo.hasExpression() ) - { - oss << resultInfo.getExpression(); - if( resultInfo.isOk() ) - oss << " succeeded"; - else - oss << " failed"; - } - switch( resultInfo.getResultType() ) - { - case Catch::ResultWas::ThrewException: - if( resultInfo.hasExpression() ) - oss << " with unexpected"; - else - oss << "Unexpected"; - oss << " exception with message: '" << resultInfo.getMessage() << "'"; - break; - case Catch::ResultWas::Info: - oss << "info: '" << resultInfo.getMessage() << "'"; - break; - case Catch::ResultWas::Warning: - oss << "warning: '" << resultInfo.getMessage() << "'"; - break; - case Catch::ResultWas::ExplicitFailure: - oss << "failed with message: '" << resultInfo.getMessage() << "'"; - break; - default: - break; - } - - if( resultInfo.hasExpression() ) - { - oss << " for: " << resultInfo.getExpandedExpression(); - } - oss << std::endl; - NSLog( @"%s", oss.str().c_str() ); -} - - -@end - -#endif // TWOBLUECUBES_ITCHRUNNERMAINVIEW_H_INCLUDED -- cgit v1.2.3 From 9e1428179e7568339676b0d025bba421a2fe1f72 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 08:50:26 +0700 Subject: fix file modes --- src/lib/netlist/buildVS/netlist.sln | 0 src/lib/netlist/buildVS/netlistlib.vcxproj | 0 src/lib/netlist/buildVS/netlistlib.vcxproj.filters | 0 src/lib/netlist/buildVS/netlistlib.vcxproj.user | 0 src/lib/netlist/buildVS/nltool.vcxproj | 0 src/lib/netlist/buildVS/nltool.vcxproj.filters | 0 src/lib/netlist/nl_factory.cpp | 0 src/lib/netlist/nl_factory.h | 0 src/lib/netlist/plib/palloc.cpp | 0 src/lib/netlist/plib/pconfig.h | 0 src/lib/netlist/plib/putil.h | 0 src/lib/netlist/solver/vector_base.h | 0 12 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 src/lib/netlist/buildVS/netlist.sln mode change 100644 => 100755 src/lib/netlist/buildVS/netlistlib.vcxproj mode change 100644 => 100755 src/lib/netlist/buildVS/netlistlib.vcxproj.filters mode change 100644 => 100755 src/lib/netlist/buildVS/netlistlib.vcxproj.user mode change 100644 => 100755 src/lib/netlist/buildVS/nltool.vcxproj mode change 100644 => 100755 src/lib/netlist/buildVS/nltool.vcxproj.filters mode change 100644 => 100755 src/lib/netlist/nl_factory.cpp mode change 100644 => 100755 src/lib/netlist/nl_factory.h mode change 100644 => 100755 src/lib/netlist/plib/palloc.cpp mode change 100644 => 100755 src/lib/netlist/plib/pconfig.h mode change 100644 => 100755 src/lib/netlist/plib/putil.h mode change 100644 => 100755 src/lib/netlist/solver/vector_base.h diff --git a/src/lib/netlist/buildVS/netlist.sln b/src/lib/netlist/buildVS/netlist.sln old mode 100644 new mode 100755 diff --git a/src/lib/netlist/buildVS/netlistlib.vcxproj b/src/lib/netlist/buildVS/netlistlib.vcxproj old mode 100644 new mode 100755 diff --git a/src/lib/netlist/buildVS/netlistlib.vcxproj.filters b/src/lib/netlist/buildVS/netlistlib.vcxproj.filters old mode 100644 new mode 100755 diff --git a/src/lib/netlist/buildVS/netlistlib.vcxproj.user b/src/lib/netlist/buildVS/netlistlib.vcxproj.user old mode 100644 new mode 100755 diff --git a/src/lib/netlist/buildVS/nltool.vcxproj b/src/lib/netlist/buildVS/nltool.vcxproj old mode 100644 new mode 100755 diff --git a/src/lib/netlist/buildVS/nltool.vcxproj.filters b/src/lib/netlist/buildVS/nltool.vcxproj.filters old mode 100644 new mode 100755 diff --git a/src/lib/netlist/nl_factory.cpp b/src/lib/netlist/nl_factory.cpp old mode 100644 new mode 100755 diff --git a/src/lib/netlist/nl_factory.h b/src/lib/netlist/nl_factory.h old mode 100644 new mode 100755 diff --git a/src/lib/netlist/plib/palloc.cpp b/src/lib/netlist/plib/palloc.cpp old mode 100644 new mode 100755 diff --git a/src/lib/netlist/plib/pconfig.h b/src/lib/netlist/plib/pconfig.h old mode 100644 new mode 100755 diff --git a/src/lib/netlist/plib/putil.h b/src/lib/netlist/plib/putil.h old mode 100644 new mode 100755 diff --git a/src/lib/netlist/solver/vector_base.h b/src/lib/netlist/solver/vector_base.h old mode 100644 new mode 100755 -- cgit v1.2.3 From 09e7f997fbc74e491b36d5ec513de7137c7cdabe Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 09:58:42 +0700 Subject: revert to mcga, fix headers --- src/devices/cpu/clipper/clipper.h | 9 ++-- src/mame/drivers/interpro.cpp | 6 +-- src/mame/includes/interpro.h | 18 +++---- src/mame/machine/cammu.h | 9 ++-- src/mame/machine/interpro_ioga.h | 9 ++-- src/mame/machine/interpro_mcga.cpp | 97 ++++++++++++++++++++----------------- src/mame/machine/interpro_mcga.h | 74 +++++++++++++++++++++------- src/mame/machine/interpro_mctl.cpp | 96 ------------------------------------ src/mame/machine/interpro_mctl.h | 86 -------------------------------- src/mame/machine/interpro_sga.h | 9 ++-- src/mame/machine/interpro_srarb.cpp | 3 +- src/mame/machine/interpro_srarb.h | 10 ++-- 12 files changed, 143 insertions(+), 283 deletions(-) delete mode 100644 src/mame/machine/interpro_mctl.cpp delete mode 100644 src/mame/machine/interpro_mctl.h diff --git a/src/devices/cpu/clipper/clipper.h b/src/devices/cpu/clipper/clipper.h index 990f337889d..6d63b8bc9dc 100644 --- a/src/devices/cpu/clipper/clipper.h +++ b/src/devices/cpu/clipper/clipper.h @@ -1,9 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay -#pragma once -#ifndef __CLIPPER_H__ -#define __CLIPPER_H__ +#ifndef MAME_DEVICES_CPU_CLIPPER_H +#define MAME_DEVICES_CPU_CLIPPER_H + +#pragma once #include @@ -293,4 +294,4 @@ extern const device_type CLIPPER_C300; extern const device_type CLIPPER_C400; extern CPU_DISASSEMBLE(clipper); -#endif /* __CLIPPER_H__ */ +#endif // MAME_DEVICES_CPU_CLIPPER_H diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index afeb6d2b194..ad16c88538b 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -274,7 +274,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(interpro_main_map, AS_0, 32, interpro_state) AM_RANGE(0x00000000, 0x00ffffff) AM_RAM // 16M RAM - AM_RANGE(0x40000000, 0x4000003f) AM_DEVICE(INTERPRO_MCTL_TAG, interpro_fmcc_device, map) + AM_RANGE(0x40000000, 0x4000003f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_fmcc_device, map) AM_RANGE(0x4f007e00, 0x4f007eff) AM_DEVICE(INTERPRO_SGA_TAG, interpro_sga_device, map) AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, n82077aa_device, map, 0xff) @@ -298,7 +298,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(interpro_io_map, AS_1, 32, interpro_state) AM_RANGE(0x00000000, 0x00001fff) AM_DEVICE(INTERPRO_MMU_TAG, cammu_device, map) - AM_RANGE(0x40000000, 0x4000004f) AM_DEVICE(INTERPRO_MCTL_TAG, interpro_fmcc_device, map) + AM_RANGE(0x40000000, 0x4000004f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_fmcc_device, map) AM_RANGE(0x4f007e00, 0x4f007eff) AM_DEVICE(INTERPRO_SGA_TAG, interpro_sga_device, map) AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, n82077aa_device, map, 0xff) @@ -413,7 +413,7 @@ static MACHINE_CONFIG_START(ip2800, interpro_state) MCFG_INTERPRO_IOGA_DMA_BUS(INTERPRO_CAMMU_TAG, AS_0) // memory controller - MCFG_DEVICE_ADD(INTERPRO_MCTL_TAG, INTERPRO_FMCC, 0) + MCFG_DEVICE_ADD(INTERPRO_MCGA_TAG, INTERPRO_FMCC, 0) // srx gate array MCFG_DEVICE_ADD(INTERPRO_SGA_TAG, INTERPRO_SGA, 0) diff --git a/src/mame/includes/interpro.h b/src/mame/includes/interpro.h index 59fe185341a..851e745a949 100644 --- a/src/mame/includes/interpro.h +++ b/src/mame/includes/interpro.h @@ -1,20 +1,18 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay -#pragma once +#ifndef MAME_INCLUDES_INTERPRO_H +#define MAME_INCLUDES_INTERPRO_H -#ifndef INTERPRO_H_ -#define INTERPRO_H_ +#pragma once #define NEW_SCSI 0 -#include "emu.h" - #include "cpu/clipper/clipper.h" #include "machine/cammu.h" #include "machine/interpro_ioga.h" -#include "machine/interpro_mctl.h" +#include "machine/interpro_mcga.h" #include "machine/interpro_sga.h" #include "machine/interpro_srarb.h" @@ -52,7 +50,7 @@ #define INTERPRO_SCSI_HA_TAG "adapter" #define INTERPRO_IOGA_TAG "ioga" -#define INTERPRO_MCTL_TAG "fmcc" +#define INTERPRO_MCGA_TAG "fmcc" #define INTERPRO_SGA_TAG "sga" #define INTERPRO_SRARB_TAG "srarb" @@ -104,7 +102,7 @@ public: m_scsi(*this, INTERPRO_SCSI_HA_TAG), #endif m_ioga(*this, INTERPRO_IOGA_TAG), - m_mctl(*this, INTERPRO_MCTL_TAG), + m_mcga(*this, INTERPRO_MCGA_TAG), m_sga(*this, INTERPRO_SGA_TAG), m_srarb(*this, INTERPRO_SRARB_TAG) { } @@ -125,7 +123,7 @@ public: #endif required_device m_ioga; - required_device m_mctl; + required_device m_mcga; required_device m_sga; required_device m_srarb; @@ -153,4 +151,4 @@ private: u16 m_system_reg[4]; }; -#endif +#endif //MAME_INCLUDES_INTERPRO_H diff --git a/src/mame/machine/cammu.h b/src/mame/machine/cammu.h index 3c57e473657..36d707ad071 100644 --- a/src/mame/machine/cammu.h +++ b/src/mame/machine/cammu.h @@ -1,11 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay -#pragma once - -#ifndef CAMMU_H_ -#define CAMMU_H_ +#ifndef MAME_MACHINE_CAMMU_H +#define MAME_MACHINE_CAMMU_H +#pragma once // the following enables a very crude instruction cache - it has known (future) // problems, but speeds up cpu execution quite noticeably in the short term by @@ -266,4 +265,4 @@ extern const device_type CAMMU_C4T; extern const device_type CAMMU_C4I; extern const device_type CAMMU_C3; -#endif +#endif // MAME_MACHINE_CAMMU_H diff --git a/src/mame/machine/interpro_ioga.h b/src/mame/machine/interpro_ioga.h index b92fa12c479..c3973bc295a 100644 --- a/src/mame/machine/interpro_ioga.h +++ b/src/mame/machine/interpro_ioga.h @@ -1,11 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay -#pragma once - -#ifndef INTERPRO_IOGA_H_ -#define INTERPRO_IOGA_H_ +#ifndef MAME_MACHINE_INTERPRO_IOGA_H +#define MAME_MACHINE_INTERPRO_IOGA_H +#pragma once #define MCFG_INTERPRO_IOGA_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, INTERPRO_IOGA, XTAL_12_5MHz) @@ -275,4 +274,4 @@ private: // device type definition extern const device_type INTERPRO_IOGA; -#endif +#endif // MAME_MACHINE_INTERPRO_IOGA_H \ No newline at end of file diff --git a/src/mame/machine/interpro_mcga.cpp b/src/mame/machine/interpro_mcga.cpp index e049a76f5ef..8d4d6dd4b1a 100644 --- a/src/mame/machine/interpro_mcga.cpp +++ b/src/mame/machine/interpro_mcga.cpp @@ -21,14 +21,44 @@ #define LOG_MCGA(...) {} #endif -DEVICE_ADDRESS_MAP_START(map, 16, interpro_mcga_device) - AM_RANGE(0x00, 0x3f) AM_READWRITE16(read, write, 0xffff) +DEVICE_ADDRESS_MAP_START(map, 32, interpro_mcga_device) + AM_RANGE(0x00, 0x03) AM_READWRITE16(reg00_r, reg00_w, 0xffff) + AM_RANGE(0x08, 0x0b) AM_READWRITE16(control_r, control_w, 0xffff) + AM_RANGE(0x10, 0x13) AM_READWRITE16(error_r, error_w, 0xffff) + AM_RANGE(0x18, 0x1b) AM_READWRITE8(frcrd_r, frcrd_w, 0xff) + AM_RANGE(0x20, 0x23) AM_READWRITE8(cbsub_r, cbsub_w, 0xff) + AM_RANGE(0x28, 0x2b) AM_READWRITE16(reg28_r, reg28_w, 0xffff) + AM_RANGE(0x30, 0x33) AM_READWRITE16(reg30_r, reg30_w, 0xffff) + AM_RANGE(0x38, 0x3b) AM_READWRITE16(memsize_r, memsize_w, 0xffff) +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START(map, 32, interpro_fmcc_device) + AM_RANGE(0x00, 0x03) AM_READWRITE16(reg00_r, reg00_w, 0xffff) + AM_RANGE(0x08, 0x0b) AM_READWRITE16(control_r, control_w, 0xffff) + AM_RANGE(0x10, 0x13) AM_READWRITE16(error_r, error_w, 0xffff) + AM_RANGE(0x18, 0x1b) AM_READWRITE8(frcrd_r, frcrd_w, 0xff) + AM_RANGE(0x20, 0x23) AM_READWRITE8(cbsub_r, cbsub_w, 0xff) + AM_RANGE(0x28, 0x2b) AM_READWRITE16(reg28_r, reg28_w, 0xffff) + AM_RANGE(0x30, 0x33) AM_READWRITE16(reg30_r, reg30_w, 0xffff) + AM_RANGE(0x38, 0x3b) AM_READWRITE16(memsize_r, memsize_w, 0xffff) + AM_RANGE(0x48, 0x4b) AM_READWRITE16(error_control_r, error_control_w, 0xffff) ADDRESS_MAP_END const device_type INTERPRO_MCGA = device_creator; +const device_type INTERPRO_FMCC = device_creator; + +interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +{ +} interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INTERPRO_MCGA, "InterPro MCGA", tag, owner, clock, "mcga", __FILE__) + : interpro_mcga_device(mconfig, INTERPRO_MCGA, "InterPro MCGA", tag, owner, clock, "mcga", __FILE__) +{ +} + +interpro_fmcc_device::interpro_fmcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : interpro_mcga_device(mconfig, INTERPRO_FMCC, "InterPro FMCC", tag, owner, clock, "fmcc", __FILE__) { } @@ -38,53 +68,30 @@ void interpro_mcga_device::device_start() void interpro_mcga_device::device_reset() { - m_reg[0] = 0x00ff; // 0x00 - m_reg[2] = MCGA_CTRL_ENREFRESH | MCGA_CTRL_CBITFRCSUB | MCGA_CTRL_CBITFRCRD; // 0x08 ctrl - //m_mcga[4] = 0x8000; // 0x10 error - m_reg[10] = 0x00ff; // 0x28 - m_reg[14] = 0x0340; // 0x38 memsize + m_reg[0] = 0x00ff; + m_control = MCGA_CTRL_ENREFRESH | MCGA_CTRL_CBITFRCSUB | MCGA_CTRL_CBITFRCRD; + m_reg[1] = 0x00ff; + m_memsize = 0x0340; } -WRITE16_MEMBER(interpro_mcga_device::write) +WRITE16_MEMBER(interpro_mcga_device::control_w) { - /* - read MEMSIZE 0x38 mask 0xffff - read 0x00 mask 0x0000 - write CBSUB 0x20 mask 0x00ff data 0 - write FRCRD 0x18 mask 0x00ff data 0 - read ERROR 0x10 mask 0xffff - read 0x00 mask 0xffff - - (0x38 >> 8) & 0xF == 3? + m_control = data & MCGA_CTRL_MASK; - if (0x00 != 0xFF) -> register reset error - - 0x00 = 0x0055 (test value & 0xff) - r7 = 0x00 & 0xff - */ - LOG_MCGA("mcga write offset = 0x%08x, mask = 0x%08x, data = 0x%08x, pc = 0x%08x\n", offset, mem_mask, data, space.device().safe_pc()); - switch (offset) - { - case 0x02: // MCGA_CTRL - // HACK: set or clear error status depending on ENMMBE bit - if (data & MCGA_CTRL_ENMMBE) - m_reg[4] |= MCGA_ERROR_VALID; - // else - // m_reg[4] &= ~MCGA_ERROR_VALID; - - default: - m_reg[offset] = data; - break; - } + // HACK: set or clear error status depending on ENMMBE bit + if (data & MCGA_CTRL_ENMMBE) + m_error |= MCGA_ERROR_VALID; + // else + // error &= ~MCGA_ERROR_VALID; } -READ16_MEMBER(interpro_mcga_device::read) +WRITE16_MEMBER(interpro_fmcc_device::control_w) { - LOG_MCGA("mcga read offset = 0x%08x, mask = 0x%08x, pc = 0x%08x\n", offset, mem_mask, space.device().safe_pc()); + m_control = data & FMCC_CTRL_MASK; - switch (offset) - { - default: - return m_reg[offset]; - } -} + // HACK: set or clear error status depending on ENMMBE bit + if (data & MCGA_CTRL_ENMMBE) + m_error |= MCGA_ERROR_VALID; + // else + // error &= ~MCGA_ERROR_VALID; +} \ No newline at end of file diff --git a/src/mame/machine/interpro_mcga.h b/src/mame/machine/interpro_mcga.h index 3f2dd2f489d..7b57963e5ba 100644 --- a/src/mame/machine/interpro_mcga.h +++ b/src/mame/machine/interpro_mcga.h @@ -1,44 +1,84 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay -#pragma once - -#ifndef INTERPRO_MCGA_H_ -#define INTERPRO_MCGA_H_ +#ifndef MAME_MACHINE_INTERPRO_MCGA_H +#define MAME_MACHINE_INTERPRO_MCGA_H +#pragma once // mcga control register -#define MCGA_CTRL_OPTMASK 0x00000003 -#define MCGA_CTRL_CBITFRCRD 0x00000004 -#define MCGA_CTRL_CBITFRCSUB 0x00000008 -#define MCGA_CTRL_ENREFRESH 0x00000010 -#define MCGA_CTRL_ENMSBE 0x00000100 -#define MCGA_CTRL_ENMMBE 0x00000200 -#define MCGA_CTRL_ENECC 0x00000400 -#define MCGA_CTRL_WRPROT 0x00008000 +#define MCGA_CTRL_OPTMASK 0x0003 +#define MCGA_CTRL_CBITFRCRD 0x0004 +#define MCGA_CTRL_CBITFRCSUB 0x0008 +#define MCGA_CTRL_ENREFRESH 0x0010 +#define MCGA_CTRL_ENMSBE 0x0100 +#define MCGA_CTRL_ENMMBE 0x0200 +#define MCGA_CTRL_ENECC 0x0400 +#define MCGA_CTRL_WRPROT 0x8000 + +// rom writes bit 0x80 to test if fmcc or mcga +#define MCGA_CTRL_MASK 0x871f +#define FMCC_CTRL_MASK 0x8fff // mcga error register -#define MCGA_ERROR_VALID 0x00008000 +#define MCGA_ERROR_VALID 0x00008000 class interpro_mcga_device : public device_t { public: + interpro_mcga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual DECLARE_ADDRESS_MAP(map, 32); - DECLARE_WRITE16_MEMBER(write); - DECLARE_READ16_MEMBER(read); + DECLARE_READ16_MEMBER(reg00_r) { return m_reg[0]; } + DECLARE_WRITE16_MEMBER(reg00_w) { m_reg[0] = data; } + DECLARE_READ16_MEMBER(control_r) { return m_control; } + virtual DECLARE_WRITE16_MEMBER(control_w); + DECLARE_READ16_MEMBER(error_r) { return m_error; } + DECLARE_WRITE16_MEMBER(error_w) { m_error = data; } + DECLARE_READ8_MEMBER(frcrd_r) { return m_frcrd; } + DECLARE_WRITE8_MEMBER(frcrd_w) { m_frcrd = data; } + DECLARE_READ8_MEMBER(cbsub_r) { return m_cbsub; } + DECLARE_WRITE8_MEMBER(cbsub_w) { m_cbsub = data; } + DECLARE_READ16_MEMBER(reg28_r) { return m_reg[1]; } + DECLARE_WRITE16_MEMBER(reg28_w) { m_reg[1] = data; } + DECLARE_READ16_MEMBER(reg30_r) { return m_reg[2]; } + DECLARE_WRITE16_MEMBER(reg30_w) { m_reg[2] = data; } + DECLARE_READ16_MEMBER(memsize_r) { return m_memsize; } + DECLARE_WRITE16_MEMBER(memsize_w) { m_memsize = data; } protected: virtual void device_start() override; virtual void device_reset() override; + u16 m_control, m_error, m_memsize; + u8 m_frcrd, m_cbsub; + + u16 m_reg[3]; + +private: + +}; + +class interpro_fmcc_device : public interpro_mcga_device +{ +public: + interpro_fmcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + virtual DECLARE_ADDRESS_MAP(map, 32) override; + + DECLARE_WRITE16_MEMBER(control_w) override; + + DECLARE_READ16_MEMBER(error_control_r) { return m_error_control; } + DECLARE_WRITE16_MEMBER(error_control_w) { m_error_control = data; } + private: - uint16_t m_reg[32]; + u16 m_error_control; }; // device type definition extern const device_type INTERPRO_MCGA; +extern const device_type INTERPRO_FMCC; -#endif +#endif // MAME_MACHINE_INTERPRO_MCGA_H \ No newline at end of file diff --git a/src/mame/machine/interpro_mctl.cpp b/src/mame/machine/interpro_mctl.cpp deleted file mode 100644 index b882cbe7724..00000000000 --- a/src/mame/machine/interpro_mctl.cpp +++ /dev/null @@ -1,96 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Patrick Mackinlay - -/* -* An implementation of the MCGA device found on Intergraph InterPro family workstations. There is no -* public documentation on this device, so the implementation is being built to follow the logic of the -* system boot ROM and its diagnostic tests. -* -* Please be aware that code in here is not only broken, it's likely wrong in many cases. -* -* TODO -* - too long to list -*/ -#include "interpro_mctl.h" - -#define VERBOSE 0 -#if VERBOSE -#define LOG_MCGA(...) logerror(__VA_ARGS__) -#else -#define LOG_MCGA(...) {} -#endif - -DEVICE_ADDRESS_MAP_START(map, 32, interpro_mcga_device) - AM_RANGE(0x00, 0x03) AM_READWRITE16(reg00_r, reg00_w, 0xffff) - AM_RANGE(0x08, 0x0b) AM_READWRITE16(control_r, control_w, 0xffff) - AM_RANGE(0x10, 0x13) AM_READWRITE16(error_r, error_w, 0xffff) - AM_RANGE(0x18, 0x1b) AM_READWRITE8(frcrd_r, frcrd_w, 0xff) - AM_RANGE(0x20, 0x23) AM_READWRITE8(cbsub_r, cbsub_w, 0xff) - AM_RANGE(0x28, 0x2b) AM_READWRITE16(reg28_r, reg28_w, 0xffff) - AM_RANGE(0x30, 0x33) AM_READWRITE16(reg30_r, reg30_w, 0xffff) - AM_RANGE(0x38, 0x3b) AM_READWRITE16(memsize_r, memsize_w, 0xffff) -ADDRESS_MAP_END - -DEVICE_ADDRESS_MAP_START(map, 32, interpro_fmcc_device) - AM_RANGE(0x00, 0x03) AM_READWRITE16(reg00_r, reg00_w, 0xffff) - AM_RANGE(0x08, 0x0b) AM_READWRITE16(control_r, control_w, 0xffff) - AM_RANGE(0x10, 0x13) AM_READWRITE16(error_r, error_w, 0xffff) - AM_RANGE(0x18, 0x1b) AM_READWRITE8(frcrd_r, frcrd_w, 0xff) - AM_RANGE(0x20, 0x23) AM_READWRITE8(cbsub_r, cbsub_w, 0xff) - AM_RANGE(0x28, 0x2b) AM_READWRITE16(reg28_r, reg28_w, 0xffff) - AM_RANGE(0x30, 0x33) AM_READWRITE16(reg30_r, reg30_w, 0xffff) - AM_RANGE(0x38, 0x3b) AM_READWRITE16(memsize_r, memsize_w, 0xffff) - AM_RANGE(0x48, 0x4b) AM_READWRITE16(error_control_r, error_control_w, 0xffff) -ADDRESS_MAP_END - -const device_type INTERPRO_MCGA = &device_creator; -const device_type INTERPRO_FMCC = &device_creator; - -interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) -{ -} - -interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : interpro_mcga_device(mconfig, INTERPRO_MCGA, "InterPro MCGA", tag, owner, clock, "mcga", __FILE__) -{ -} - -interpro_fmcc_device::interpro_fmcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : interpro_mcga_device(mconfig, INTERPRO_FMCC, "InterPro FMCC", tag, owner, clock, "fmcc", __FILE__) -{ -} - -void interpro_mcga_device::device_start() -{ -} - -void interpro_mcga_device::device_reset() -{ - m_reg[0] = 0x00ff; - m_control = MCGA_CTRL_ENREFRESH | MCGA_CTRL_CBITFRCSUB | MCGA_CTRL_CBITFRCRD; - m_reg[1] = 0x00ff; - m_memsize = 0x0340; -} - -WRITE16_MEMBER(interpro_mcga_device::control_w) -{ - m_control = data & MCGA_CTRL_MASK; - - // HACK: set or clear error status depending on ENMMBE bit - if (data & MCGA_CTRL_ENMMBE) - m_error |= MCGA_ERROR_VALID; - // else - // error &= ~MCGA_ERROR_VALID; -} - -WRITE16_MEMBER(interpro_fmcc_device::control_w) -{ - m_control = data & FMCC_CTRL_MASK; - - // HACK: set or clear error status depending on ENMMBE bit - if (data & MCGA_CTRL_ENMMBE) - m_error |= MCGA_ERROR_VALID; - // else - // error &= ~MCGA_ERROR_VALID; -} \ No newline at end of file diff --git a/src/mame/machine/interpro_mctl.h b/src/mame/machine/interpro_mctl.h deleted file mode 100644 index 67b4a10b2b1..00000000000 --- a/src/mame/machine/interpro_mctl.h +++ /dev/null @@ -1,86 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Patrick Mackinlay - -#pragma once - -#ifndef INTERPRO_MCGA_H_ -#define INTERPRO_MCGA_H_ - -#include "emu.h" - -// mcga control register -#define MCGA_CTRL_OPTMASK 0x0003 -#define MCGA_CTRL_CBITFRCRD 0x0004 -#define MCGA_CTRL_CBITFRCSUB 0x0008 -#define MCGA_CTRL_ENREFRESH 0x0010 -#define MCGA_CTRL_ENMSBE 0x0100 -#define MCGA_CTRL_ENMMBE 0x0200 -#define MCGA_CTRL_ENECC 0x0400 -#define MCGA_CTRL_WRPROT 0x8000 - -// rom writes bit 0x80 to test if fmcc or mcga -#define MCGA_CTRL_MASK 0x871f -#define FMCC_CTRL_MASK 0x8fff - -// mcga error register -#define MCGA_ERROR_VALID 0x00008000 - -class interpro_mcga_device : public device_t -{ -public: - interpro_mcga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual DECLARE_ADDRESS_MAP(map, 32); - - DECLARE_READ16_MEMBER(reg00_r) { return m_reg[0]; } - DECLARE_WRITE16_MEMBER(reg00_w) { m_reg[0] = data; } - DECLARE_READ16_MEMBER(control_r) { return m_control; } - virtual DECLARE_WRITE16_MEMBER(control_w); - DECLARE_READ16_MEMBER(error_r) { return m_error; } - DECLARE_WRITE16_MEMBER(error_w) { m_error = data; } - DECLARE_READ8_MEMBER(frcrd_r) { return m_frcrd; } - DECLARE_WRITE8_MEMBER(frcrd_w) { m_frcrd = data; } - DECLARE_READ8_MEMBER(cbsub_r) { return m_cbsub; } - DECLARE_WRITE8_MEMBER(cbsub_w) { m_cbsub = data; } - DECLARE_READ16_MEMBER(reg28_r) { return m_reg[1]; } - DECLARE_WRITE16_MEMBER(reg28_w) { m_reg[1] = data; } - DECLARE_READ16_MEMBER(reg30_r) { return m_reg[2]; } - DECLARE_WRITE16_MEMBER(reg30_w) { m_reg[2] = data; } - DECLARE_READ16_MEMBER(memsize_r) { return m_memsize; } - DECLARE_WRITE16_MEMBER(memsize_w) { m_memsize = data; } - -protected: - virtual void device_start() override; - virtual void device_reset() override; - - u16 m_control, m_error, m_memsize; - u8 m_frcrd, m_cbsub; - - u16 m_reg[3]; - -private: - -}; - -class interpro_fmcc_device : public interpro_mcga_device -{ -public: - interpro_fmcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual DECLARE_ADDRESS_MAP(map, 32) override; - - DECLARE_WRITE16_MEMBER(control_w) override; - - DECLARE_READ16_MEMBER(error_control_r) { return m_error_control; } - DECLARE_WRITE16_MEMBER(error_control_w) { m_error_control = data; } - -private: - u16 m_error_control; -}; - -// device type definition -extern const device_type INTERPRO_MCGA; -extern const device_type INTERPRO_FMCC; - -#endif \ No newline at end of file diff --git a/src/mame/machine/interpro_sga.h b/src/mame/machine/interpro_sga.h index b9e5c48d3ba..996faf534c7 100644 --- a/src/mame/machine/interpro_sga.h +++ b/src/mame/machine/interpro_sga.h @@ -1,11 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay -#pragma once - -#ifndef INTERPRO_SGA_H_ -#define INTERPRO_SGA_H_ +#ifndef MAME_MACHINE_INTERPRO_SGA_H +#define MAME_MACHINE_INTERPRO_SGA_H +#pragma once #define MCFG_INTERPRO_SGA_BERR_CB(_out_berr) \ devcb = &interpro_sga_device::static_set_out_berr_callback(*device, DEVCB_##_out_berr); @@ -153,4 +152,4 @@ private: // device type definition extern const device_type INTERPRO_SGA; -#endif +#endif // MAME_MACHINE_INTERPRO_SGA_H diff --git a/src/mame/machine/interpro_srarb.cpp b/src/mame/machine/interpro_srarb.cpp index 8624da0eb1c..5e5b40d6db1 100644 --- a/src/mame/machine/interpro_srarb.cpp +++ b/src/mame/machine/interpro_srarb.cpp @@ -11,6 +11,7 @@ * TODO * - too long to list */ +#include "emu.h" #include "interpro_srarb.h" #define VERBOSE 0 @@ -29,7 +30,7 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_srarb_device) AM_RANGE(0x2c, 0x2f) AM_READWRITE(tmscale_r, tmscale_w) ADDRESS_MAP_END -const device_type INTERPRO_SRARB = &device_creator; +const device_type INTERPRO_SRARB = device_creator; interpro_srarb_device::interpro_srarb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, INTERPRO_SRARB, "InterPro SRARB", tag, owner, clock, "srarb", __FILE__) diff --git a/src/mame/machine/interpro_srarb.h b/src/mame/machine/interpro_srarb.h index 20678e3cf3d..7b7cc7d0bcc 100644 --- a/src/mame/machine/interpro_srarb.h +++ b/src/mame/machine/interpro_srarb.h @@ -1,12 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay -#pragma once - -#ifndef INTERPRO_SRARB_H_ -#define INTERPRO_SRARB_H_ +#ifndef MAME_MACHINE_INTERPRO_SRARB_H +#define MAME_MACHINE_INTERPRO_SRARB_H -#include "emu.h" +#pragma once class interpro_srarb_device : public device_t { @@ -51,4 +49,4 @@ private: // device type definition extern const device_type INTERPRO_SRARB; -#endif \ No newline at end of file +#endif // MAME_MACHINE_INTERPRO_SRARB_H \ No newline at end of file -- cgit v1.2.3 From c156ec6e9268e56e3a9c23d1ee94a9bbef9dcbd9 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 11:47:14 +0700 Subject: merge --- src/devices/sound/pci-ac97.cpp | 4 +- src/devices/sound/pci-ac97.h | 12 +- src/devices/sound/pokey.cpp | 214 +- src/devices/sound/pokey.h | 83 +- src/devices/sound/qs1000.cpp | 4 +- src/devices/sound/qs1000.h | 61 +- src/devices/sound/qsound.cpp | 28 +- src/devices/sound/qsound.h | 15 +- src/devices/sound/rf5c400.cpp | 275 ++- src/devices/sound/rf5c400.h | 121 +- src/devices/sound/rf5c68.cpp | 53 +- src/devices/sound/rf5c68.h | 73 +- src/devices/sound/s14001a.cpp | 193 +- src/devices/sound/s14001a.h | 38 +- src/devices/sound/saa1099.cpp | 34 +- src/devices/sound/saa1099.h | 88 +- src/devices/sound/samples.cpp | 21 +- src/devices/sound/samples.h | 38 +- src/devices/sound/sb0400.cpp | 4 +- src/devices/sound/sb0400.h | 8 +- src/devices/sound/scsp.cpp | 41 +- src/devices/sound/scsp.h | 116 +- src/devices/sound/scspdsp.cpp | 417 ++-- src/devices/sound/scspdsp.h | 18 +- src/devices/sound/segapcm.cpp | 4 +- src/devices/sound/segapcm.h | 42 +- src/devices/sound/sid.cpp | 325 +-- src/devices/sound/sid.h | 24 +- src/devices/sound/side6581.h | 8 +- src/devices/sound/sidenvel.cpp | 7 +- src/devices/sound/sidenvel.h | 8 +- src/devices/sound/sidvoice.cpp | 520 +++-- src/devices/sound/sidvoice.h | 49 +- src/devices/sound/sidw6581.h | 8 +- src/devices/sound/sidw8580.h | 9 +- src/devices/sound/sn76477.cpp | 123 +- src/devices/sound/sn76477.h | 14 +- src/devices/sound/sn76496.cpp | 116 +- src/devices/sound/sn76496.h | 51 +- src/devices/sound/snkwave.cpp | 19 +- src/devices/sound/snkwave.h | 25 +- src/devices/sound/sp0250.cpp | 7 +- src/devices/sound/sp0250.h | 19 +- src/devices/sound/sp0256.cpp | 257 ++- src/devices/sound/sp0256.h | 111 +- src/devices/sound/spkrdev.cpp | 11 +- src/devices/sound/spkrdev.h | 23 +- src/devices/sound/spu.cpp | 54 +- src/devices/sound/spu.h | 47 +- src/devices/sound/spu_tables.cpp | 33 +- src/devices/sound/spureverb.cpp | 20 +- src/devices/sound/spureverb.h | 131 +- src/devices/sound/st0016.cpp | 26 +- src/devices/sound/st0016.h | 24 +- src/devices/sound/t6721a.cpp | 13 +- src/devices/sound/t6721a.h | 20 +- src/devices/sound/t6w28.cpp | 7 +- src/devices/sound/t6w28.h | 14 +- src/devices/sound/tc8830f.cpp | 4 +- src/devices/sound/tc8830f.h | 14 +- src/devices/sound/tiaintf.cpp | 4 +- src/devices/sound/tiaintf.h | 20 +- src/devices/sound/tiasound.cpp | 6 +- src/devices/sound/tiasound.h | 10 +- src/devices/sound/tms3615.cpp | 28 +- src/devices/sound/tms3615.h | 44 +- src/devices/sound/tms36xx.cpp | 36 +- src/devices/sound/tms36xx.h | 50 +- src/devices/sound/tms5110.cpp | 250 +-- src/devices/sound/tms5110.h | 132 +- src/devices/sound/tms5110r.hxx | 11 +- src/devices/sound/tms5220.cpp | 227 +- src/devices/sound/tms5220.h | 99 +- src/devices/sound/upd1771.cpp | 25 +- src/devices/sound/upd1771.h | 20 +- src/devices/sound/upd7752.cpp | 12 +- src/devices/sound/upd7752.h | 39 +- src/devices/sound/upd7759.cpp | 21 +- src/devices/sound/upd7759.h | 79 +- src/devices/sound/vlm5030.cpp | 6 +- src/devices/sound/vlm5030.h | 21 +- src/devices/sound/volt_reg.cpp | 5 +- src/devices/sound/volt_reg.h | 14 +- src/devices/sound/votrax.cpp | 4 +- src/devices/sound/votrax.h | 11 +- src/devices/sound/vrc6.cpp | 12 +- src/devices/sound/vrc6.h | 9 +- src/devices/sound/vrender0.cpp | 4 +- src/devices/sound/vrender0.h | 12 +- src/devices/sound/wave.cpp | 9 +- src/devices/sound/wave.h | 13 +- src/devices/sound/x1_010.cpp | 45 +- src/devices/sound/x1_010.h | 24 +- src/devices/sound/ym2151.cpp | 4 +- src/devices/sound/ym2151.h | 14 +- src/devices/sound/ym2413.cpp | 6 +- src/devices/sound/ym2413.h | 15 +- src/devices/sound/ymdeltat.cpp | 307 ++- src/devices/sound/ymdeltat.h | 34 +- src/devices/sound/ymf262.cpp | 277 ++- src/devices/sound/ymf262.h | 32 +- src/devices/sound/ymf271.cpp | 4 +- src/devices/sound/ymf271.h | 18 +- src/devices/sound/ymf278b.cpp | 40 +- src/devices/sound/ymf278b.h | 25 +- src/devices/sound/ymz280b.cpp | 48 +- src/devices/sound/ymz280b.h | 26 +- src/devices/sound/ymz770.cpp | 21 +- src/devices/sound/ymz770.h | 65 +- src/devices/sound/zsg2.cpp | 12 +- src/devices/sound/zsg2.h | 14 +- src/devices/video/315_5124.cpp | 76 +- src/devices/video/315_5124.h | 143 +- src/devices/video/315_5313.cpp | 152 +- src/devices/video/315_5313.h | 177 +- src/devices/video/bufsprite.cpp | 35 +- src/devices/video/bufsprite.h | 53 +- src/devices/video/cdp1861.cpp | 40 +- src/devices/video/cdp1861.h | 71 +- src/devices/video/cdp1862.cpp | 6 +- src/devices/video/cdp1862.h | 18 +- src/devices/video/cesblit.cpp | 74 +- src/devices/video/cesblit.h | 15 +- src/devices/video/cgapal.h | 10 +- src/devices/video/clgd542x.cpp | 12 +- src/devices/video/clgd542x.h | 17 +- src/devices/video/crt9007.cpp | 190 +- src/devices/video/crt9007.h | 77 +- src/devices/video/crt9021.cpp | 30 +- src/devices/video/crt9021.h | 29 +- src/devices/video/crt9212.cpp | 35 +- src/devices/video/crt9212.h | 40 +- src/devices/video/crtc_ega.cpp | 14 +- src/devices/video/crtc_ega.h | 73 +- src/devices/video/dl1416.cpp | 26 +- src/devices/video/dl1416.h | 22 +- src/devices/video/dm9368.cpp | 19 +- src/devices/video/dm9368.h | 14 +- src/devices/video/ef9340_1.cpp | 6 +- src/devices/video/ef9340_1.h | 12 +- src/devices/video/ef9345.cpp | 94 +- src/devices/video/ef9345.h | 30 +- src/devices/video/ef9364.cpp | 64 +- src/devices/video/ef9364.h | 23 +- src/devices/video/ef9365.cpp | 156 +- src/devices/video/ef9365.h | 67 +- src/devices/video/ef9369.cpp | 9 +- src/devices/video/ef9369.h | 21 +- src/devices/video/epic12.cpp | 78 +- src/devices/video/epic12.h | 357 ++-- src/devices/video/epic12in.hxx | 14 +- src/devices/video/epic12pixel.hxx | 106 +- src/devices/video/fixfreq.cpp | 47 +- src/devices/video/fixfreq.h | 14 +- src/devices/video/gb_lcd.cpp | 140 +- src/devices/video/gb_lcd.h | 49 +- src/devices/video/gba_lcd.cpp | 4 +- src/devices/video/gba_lcd.h | 31 +- src/devices/video/gf4500.cpp | 6 +- src/devices/video/gf4500.h | 12 +- src/devices/video/gf7600gs.cpp | 4 +- src/devices/video/gf7600gs.h | 10 +- src/devices/video/hd44102.cpp | 52 +- src/devices/video/hd44102.h | 12 +- src/devices/video/hd44352.cpp | 4 +- src/devices/video/hd44352.h | 15 +- src/devices/video/hd44780.cpp | 38 +- src/devices/video/hd44780.h | 30 +- src/devices/video/hd61830.cpp | 95 +- src/devices/video/hd61830.h | 20 +- src/devices/video/hd63484.cpp | 4 +- src/devices/video/hd63484.h | 24 +- src/devices/video/hd66421.cpp | 27 +- src/devices/video/hd66421.h | 26 +- src/devices/video/hlcd0515.cpp | 15 +- src/devices/video/hlcd0515.h | 41 +- src/devices/video/hlcd0538.cpp | 22 +- src/devices/video/hlcd0538.h | 38 +- src/devices/video/hp1ll3.cpp | 805 +++++++ src/devices/video/hp1ll3.h | 82 + src/devices/video/huc6202.cpp | 32 +- src/devices/video/huc6202.h | 34 +- src/devices/video/huc6260.cpp | 27 +- src/devices/video/huc6260.h | 33 +- src/devices/video/huc6261.cpp | 25 +- src/devices/video/huc6261.h | 19 +- src/devices/video/huc6270.cpp | 47 +- src/devices/video/huc6270.h | 18 +- src/devices/video/huc6271.cpp | 8 +- src/devices/video/huc6271.h | 25 +- src/devices/video/huc6272.cpp | 4 +- src/devices/video/huc6272.h | 34 +- src/devices/video/i8244.cpp | 19 +- src/devices/video/i8244.h | 106 +- src/devices/video/i82730.cpp | 18 +- src/devices/video/i82730.h | 26 +- src/devices/video/i8275.cpp | 61 +- src/devices/video/i8275.h | 30 +- src/devices/video/jangou_blitter.cpp | 4 +- src/devices/video/jangou_blitter.h | 25 +- src/devices/video/m50458.cpp | 10 +- src/devices/video/m50458.h | 32 +- src/devices/video/mb90082.cpp | 8 +- src/devices/video/mb90082.h | 32 +- src/devices/video/mb_vcu.cpp | 4 +- src/devices/video/mb_vcu.h | 13 +- src/devices/video/mc6845.cpp | 158 +- src/devices/video/mc6845.h | 114 +- src/devices/video/mc6847.cpp | 70 +- src/devices/video/mc6847.h | 111 +- src/devices/video/mga2064w.cpp | 4 +- src/devices/video/mga2064w.h | 12 +- src/devices/video/mos6566.cpp | 56 +- src/devices/video/mos6566.h | 61 +- src/devices/video/msm6222b.cpp | 17 +- src/devices/video/msm6222b.h | 27 +- src/devices/video/msm6255.cpp | 9 +- src/devices/video/msm6255.h | 15 +- src/devices/video/pc_vga.cpp | 92 +- src/devices/video/pc_vga.h | 96 +- src/devices/video/pcd8544.cpp | 23 +- src/devices/video/pcd8544.h | 19 +- src/devices/video/poly.h | 98 +- src/devices/video/polylgcy.cpp | 32 +- src/devices/video/polylgcy.h | 24 +- src/devices/video/ppu2c0x.cpp | 76 +- src/devices/video/ppu2c0x.h | 235 ++- src/devices/video/psx.cpp | 117 +- src/devices/video/psx.h | 333 +-- src/devices/video/ramdac.cpp | 4 +- src/devices/video/ramdac.h | 11 +- src/devices/video/saa5050.cpp | 56 +- src/devices/video/saa5050.h | 33 +- src/devices/video/scn2674.cpp | 225 +- src/devices/video/scn2674.h | 16 +- src/devices/video/sed1200.cpp | 20 +- src/devices/video/sed1200.h | 20 +- src/devices/video/sed1330.cpp | 177 +- src/devices/video/sed1330.h | 14 +- src/devices/video/sed1520.cpp | 4 +- src/devices/video/sed1520.h | 17 +- src/devices/video/snes_ppu.cpp | 20 +- src/devices/video/snes_ppu.h | 110 +- src/devices/video/sprite.h | 22 +- src/devices/video/stvvdp2.cpp | 9 +- src/devices/video/t6a04.cpp | 12 +- src/devices/video/t6a04.h | 10 +- src/devices/video/tea1002.cpp | 4 +- src/devices/video/tea1002.h | 9 +- src/devices/video/tlc34076.cpp | 6 +- src/devices/video/tlc34076.h | 34 +- src/devices/video/tms34061.cpp | 21 +- src/devices/video/tms34061.h | 94 +- src/devices/video/tms3556.cpp | 174 +- src/devices/video/tms3556.h | 56 +- src/devices/video/tms9927.cpp | 27 +- src/devices/video/tms9927.h | 34 +- src/devices/video/tms9928a.cpp | 132 +- src/devices/video/tms9928a.h | 66 +- src/devices/video/upd3301.cpp | 77 +- src/devices/video/upd3301.h | 31 +- src/devices/video/upd7220.cpp | 128 +- src/devices/video/upd7220.h | 41 +- src/devices/video/upd7227.cpp | 27 +- src/devices/video/upd7227.h | 15 +- src/devices/video/v9938.cpp | 258 +-- src/devices/video/v9938.h | 102 +- src/devices/video/vector.cpp | 4 +- src/devices/video/vector.h | 44 +- src/devices/video/vic4567.cpp | 48 +- src/devices/video/vic4567.h | 108 +- src/devices/video/vooddefs.h | 190 +- src/devices/video/voodoo.cpp | 635 +++--- src/devices/video/voodoo.h | 684 +++--- src/devices/video/voodoo_pci.cpp | 36 +- src/devices/video/voodoo_pci.h | 15 +- src/devices/video/zeus2.cpp | 1713 ++++++++------- src/devices/video/zeus2.h | 95 +- src/emu/addrmap.cpp | 53 +- src/emu/addrmap.h | 4 +- src/emu/config.cpp | 8 +- src/emu/debug/debugcmd.cpp | 46 +- src/emu/debug/debugcon.cpp | 2 +- src/emu/debug/debugcpu.cpp | 104 +- src/emu/debug/debugcpu.h | 5 +- src/emu/debug/dvdisasm.cpp | 1 + src/emu/debug/express.cpp | 25 +- src/emu/debug/express.h | 12 +- src/emu/devcpu.cpp | 4 +- src/emu/devcpu.h | 2 +- src/emu/device.cpp | 109 +- src/emu/device.h | 129 +- src/emu/device.ipp | 6 + src/emu/digfx.cpp | 36 +- src/emu/digfx.h | 6 +- src/emu/diimage.cpp | 220 +- src/emu/diimage.h | 22 +- src/emu/dipalette.cpp | 516 +++++ src/emu/dipalette.h | 145 ++ src/emu/diserial.cpp | 1 + src/emu/dislot.cpp | 97 +- src/emu/dislot.h | 40 +- src/emu/divideo.cpp | 16 +- src/emu/drawgfx.cpp | 8 +- src/emu/drawgfx.h | 10 +- src/emu/drivenum.cpp | 2 +- src/emu/driver.cpp | 11 +- src/emu/driver.h | 9 - src/emu/drivers/empty.cpp | 4 +- src/emu/drivers/xtal.h | 18 +- src/emu/emu.h | 7 + src/emu/emumem.cpp | 66 +- src/emu/emumem.h | 24 +- src/emu/emuopts.cpp | 194 +- src/emu/emuopts.h | 74 +- src/emu/emupal.cpp | 483 +---- src/emu/emupal.h | 111 +- src/emu/gamedrv.h | 75 +- src/emu/hashfile.cpp | 29 +- src/emu/hashfile.h | 1 + src/emu/http.cpp | 213 ++ src/emu/http.h | 57 + src/emu/image.cpp | 76 +- src/emu/layout/ie15.lay | 125 ++ src/emu/machine.cpp | 66 +- src/emu/machine.h | 34 +- src/emu/main.cpp | 186 +- src/emu/main.h | 26 +- src/emu/mconfig.cpp | 42 +- src/emu/mconfig.h | 23 +- src/emu/render.h | 2 +- src/emu/romload.cpp | 57 +- src/emu/schedule.cpp | 5 +- src/emu/screen.cpp | 87 +- src/emu/screen.h | 30 +- src/emu/softlist.cpp | 11 +- src/emu/softlist_dev.cpp | 36 +- src/emu/softlist_dev.h | 3 +- src/emu/speaker.cpp | 22 +- src/emu/speaker.h | 5 +- src/emu/tilemap.cpp | 12 +- src/emu/tilemap.h | 34 +- src/emu/timer.cpp | 4 +- src/emu/validity.cpp | 61 +- src/emu/validity.h | 4 + src/emu/video.cpp | 4 +- src/frontend/mame/clifront.cpp | 399 ++-- src/frontend/mame/clifront.h | 41 +- src/frontend/mame/info.cpp | 237 ++- src/frontend/mame/info.h | 31 +- src/frontend/mame/luaengine.cpp | 7 +- src/frontend/mame/luaengine.h | 4 + src/frontend/mame/mame.cpp | 9 +- src/frontend/mame/mame.h | 2 +- src/frontend/mame/mameopts.cpp | 141 +- src/frontend/mame/mameopts.h | 28 +- src/frontend/mame/media_ident.cpp | 434 ++-- src/frontend/mame/media_ident.h | 100 +- src/frontend/mame/ui/auditmenu.cpp | 12 +- src/frontend/mame/ui/custui.cpp | 13 +- src/frontend/mame/ui/datmenu.cpp | 2 +- src/frontend/mame/ui/dirmenu.cpp | 4 +- src/frontend/mame/ui/dirmenu.h | 2 +- src/frontend/mame/ui/imgcntrl.cpp | 1 - src/frontend/mame/ui/info.cpp | 22 +- src/frontend/mame/ui/inifile.cpp | 4 +- src/frontend/mame/ui/inifile.h | 4 +- src/frontend/mame/ui/inputmap.cpp | 2 +- src/frontend/mame/ui/inputmap.h | 2 +- src/frontend/mame/ui/miscmenu.cpp | 148 +- src/frontend/mame/ui/selector.cpp | 6 +- src/frontend/mame/ui/selector.h | 2 +- src/frontend/mame/ui/selgame.cpp | 42 +- src/frontend/mame/ui/selgame.h | 2 +- src/frontend/mame/ui/selmenu.cpp | 2 +- src/frontend/mame/ui/selsoft.cpp | 24 +- src/frontend/mame/ui/selsoft.h | 2 +- src/frontend/mame/ui/simpleselgame.cpp | 14 +- src/frontend/mame/ui/simpleselgame.h | 2 +- src/frontend/mame/ui/slotopt.cpp | 213 +- src/frontend/mame/ui/slotopt.h | 10 +- src/frontend/mame/ui/submenu.cpp | 4 +- src/frontend/mame/ui/swlist.cpp | 12 +- src/frontend/mame/ui/ui.cpp | 21 +- src/frontend/mame/ui/utils.h | 13 +- src/frontend/mame/ui/viewgfx.cpp | 59 +- src/lib/formats/apd_dsk.cpp | 58 +- src/lib/formats/asst128_dsk.cpp | 4 +- src/lib/formats/asst128_dsk.h | 4 +- src/lib/formats/atom_tap.cpp | 2 + src/lib/formats/csw_cas.cpp | 38 +- src/lib/formats/csw_cas.h | 2 + src/lib/formats/hp_ipc_dsk.cpp | 42 + src/lib/formats/hp_ipc_dsk.h | 30 + src/lib/formats/hpi_dsk.cpp | 430 ++++ src/lib/formats/hpi_dsk.h | 55 + src/lib/formats/jfd_dsk.cpp | 365 ++++ src/lib/formats/jfd_dsk.h | 31 + src/lib/formats/thom_dsk.cpp | 123 +- src/lib/netlist/analog/nlid_twoterm.cpp | 2 +- src/lib/netlist/build/makefile | 5 +- src/lib/netlist/devices/net_lib.h | 10 +- src/lib/netlist/devices/nld_74107.cpp | 4 +- src/lib/netlist/devices/nld_74161.cpp | 11 +- src/lib/netlist/devices/nld_74175.cpp | 100 +- src/lib/netlist/devices/nld_74192.cpp | 10 +- src/lib/netlist/devices/nld_74193.cpp | 10 +- src/lib/netlist/devices/nld_7448.cpp | 51 +- src/lib/netlist/devices/nld_7490.cpp | 2 +- src/lib/netlist/devices/nld_7493.cpp | 8 +- src/lib/netlist/devices/nld_9310.cpp | 2 +- src/lib/netlist/devices/nld_9316.cpp | 102 +- src/lib/netlist/devices/nld_log.cpp | 4 +- src/lib/netlist/devices/nld_mm5837.cpp | 4 +- src/lib/netlist/devices/nld_system.cpp | 3 +- src/lib/netlist/devices/nlid_system.h | 2 +- src/lib/netlist/devices/nlid_truthtable.cpp | 30 +- src/lib/netlist/devices/nlid_truthtable.h | 113 +- src/lib/netlist/nl_base.cpp | 99 +- src/lib/netlist/nl_base.h | 188 +- src/lib/netlist/nl_lists.h | 44 +- src/lib/netlist/nl_parser.cpp | 1 + src/lib/netlist/nl_setup.cpp | 32 +- src/lib/netlist/nl_setup.h | 4 +- src/lib/netlist/nl_time.h | 49 +- src/lib/netlist/plib/pconfig.h | 32 + src/lib/netlist/plib/pdynlib.h | 29 + src/lib/netlist/plib/pexception.h | 13 +- src/lib/netlist/plib/pfmtlog.cpp | 131 +- src/lib/netlist/plib/pfmtlog.h | 247 ++- src/lib/netlist/plib/pfunction.cpp | 4 +- src/lib/netlist/plib/poptions.cpp | 16 +- src/lib/netlist/plib/pparser.cpp | 36 +- src/lib/netlist/plib/pparser.h | 4 +- src/lib/netlist/plib/ppmf.h | 12 +- src/lib/netlist/plib/pstate.cpp | 2 +- src/lib/netlist/plib/pstream.cpp | 2 +- src/lib/netlist/plib/pstream.h | 30 +- src/lib/netlist/plib/pstring.cpp | 442 +--- src/lib/netlist/plib/pstring.h | 585 ++++-- src/lib/netlist/plib/putil.cpp | 30 +- src/lib/netlist/prg/nltool.cpp | 34 +- src/lib/netlist/solver/nld_matrix_solver.cpp | 7 +- src/lib/netlist/solver/nld_matrix_solver.h | 2 +- src/lib/netlist/solver/nld_ms_direct.h | 4 +- src/lib/netlist/solver/nld_ms_gcr.h | 18 +- src/lib/netlist/solver/nld_ms_sm.h | 4 +- src/lib/netlist/solver/nld_ms_w.h | 2 +- src/lib/netlist/solver/nld_solver.cpp | 8 +- src/lib/netlist/tools/nl_convert.cpp | 20 +- src/lib/netlist/tools/nl_convert.h | 2 +- src/lib/util/cdrom.cpp | 6 + src/lib/util/chd.cpp | 8 +- src/lib/util/corestr.cpp | 10 + src/lib/util/corestr.h | 1 + src/lib/util/coreutil.cpp | 33 - src/lib/util/coreutil.h | 44 +- src/lib/util/options.cpp | 133 +- src/lib/util/options.h | 27 +- src/lib/util/server_http.hpp | 4 + src/lib/util/timeconv.cpp | 31 +- src/lib/util/timeconv.h | 214 ++ src/mame/arcade.flt | 13 +- src/mame/audio/8080bw.cpp | 4 +- src/mame/audio/alesis.cpp | 8 +- src/mame/audio/arcadia.cpp | 6 +- src/mame/audio/arcadia.h | 11 +- src/mame/audio/atarijsa.cpp | 33 +- src/mame/audio/atarijsa.h | 26 +- src/mame/audio/cage.cpp | 15 +- src/mame/audio/cage.h | 17 +- src/mame/audio/carnival.cpp | 12 +- src/mame/audio/cclimber.cpp | 7 +- src/mame/audio/cclimber.h | 10 +- src/mame/audio/channelf.cpp | 4 +- src/mame/audio/channelf.h | 12 +- src/mame/audio/cinemat.cpp | 2 +- src/mame/audio/cps3.cpp | 12 +- src/mame/audio/cps3.h | 11 +- src/mame/audio/csd.cpp | 4 +- src/mame/audio/csd.h | 6 +- src/mame/audio/dai_snd.cpp | 22 +- src/mame/audio/dai_snd.h | 11 +- src/mame/audio/dcs.cpp | 40 +- src/mame/audio/dcs.h | 36 +- src/mame/audio/decobsmt.cpp | 17 +- src/mame/audio/decobsmt.h | 49 +- src/mame/audio/dkong.cpp | 84 +- src/mame/audio/dsbz80.cpp | 60 +- src/mame/audio/dsbz80.h | 26 +- src/mame/audio/efo_zsu.cpp | 32 +- src/mame/audio/efo_zsu.h | 21 +- src/mame/audio/exidy.cpp | 20 +- src/mame/audio/exidy.h | 16 +- src/mame/audio/exidy440.cpp | 4 +- src/mame/audio/exidy440.h | 73 +- src/mame/audio/galaxian.cpp | 8 +- src/mame/audio/galaxian.h | 13 +- src/mame/audio/gamate.cpp | 9 +- src/mame/audio/gamate.h | 96 + src/mame/audio/geebee.cpp | 4 +- src/mame/audio/geebee.h | 11 +- src/mame/audio/gomoku.cpp | 14 +- src/mame/audio/gomoku.h | 73 + src/mame/audio/gottlieb.cpp | 23 +- src/mame/audio/gottlieb.h | 13 +- src/mame/audio/gridlee.cpp | 4 +- src/mame/audio/harddriv.cpp | 7 +- src/mame/audio/hyprolyb.cpp | 16 +- src/mame/audio/hyprolyb.h | 11 +- src/mame/audio/irem.cpp | 97 +- src/mame/audio/irem.h | 33 +- src/mame/audio/leland.cpp | 43 +- src/mame/audio/leland.h | 135 ++ src/mame/audio/lynx.cpp | 19 +- src/mame/audio/lynx.h | 63 +- src/mame/audio/m72.cpp | 4 +- src/mame/audio/m72.h | 11 +- src/mame/audio/mario.cpp | 18 +- src/mame/audio/micro3d.cpp | 181 +- src/mame/audio/micro3d.h | 78 + src/mame/audio/midway.cpp | 16 +- src/mame/audio/midway.h | 14 +- src/mame/audio/n8080.cpp | 39 +- src/mame/audio/namco52.cpp | 9 +- src/mame/audio/namco52.h | 13 +- src/mame/audio/namco54.cpp | 4 +- src/mame/audio/namco54.h | 8 +- src/mame/audio/phoenix.cpp | 8 +- src/mame/audio/phoenix.h | 62 + src/mame/audio/pleiads.cpp | 23 +- src/mame/audio/pleiads.h | 89 +- src/mame/audio/polepos.cpp | 11 +- src/mame/audio/rax.cpp | 14 +- src/mame/audio/rax.h | 24 +- src/mame/audio/redbaron.cpp | 11 +- src/mame/audio/redbaron.h | 10 +- src/mame/audio/s11c_bg.cpp | 16 +- src/mame/audio/s11c_bg.h | 14 +- src/mame/audio/scramble.cpp | 9 +- src/mame/audio/segag80r.cpp | 46 +- src/mame/audio/segam1audio.cpp | 104 +- src/mame/audio/segam1audio.h | 60 +- src/mame/audio/segasnd.cpp | 175 +- src/mame/audio/segasnd.h | 193 +- src/mame/audio/seibu.cpp | 12 +- src/mame/audio/seibu.h | 12 +- src/mame/audio/snes_snd.cpp | 6 +- src/mame/audio/snes_snd.h | 71 +- src/mame/audio/snk6502.cpp | 12 +- src/mame/audio/snk6502.h | 86 + src/mame/audio/socrates.cpp | 6 +- src/mame/audio/socrates.h | 10 +- src/mame/audio/spacefb.cpp | 8 +- src/mame/audio/special.cpp | 10 +- src/mame/audio/special.h | 14 +- src/mame/audio/sprint8.cpp | 8 +- src/mame/audio/svis_snd.cpp | 65 +- src/mame/audio/svis_snd.h | 167 +- src/mame/audio/t5182.cpp | 4 +- src/mame/audio/t5182.h | 10 +- src/mame/audio/taito_en.cpp | 4 +- src/mame/audio/taito_en.h | 9 +- src/mame/audio/taito_zm.cpp | 4 +- src/mame/audio/taito_zm.h | 9 +- src/mame/audio/taitosnd.cpp | 7 +- src/mame/audio/taitosnd.h | 9 +- src/mame/audio/tiamc1.cpp | 6 +- src/mame/audio/tiamc1.h | 67 + src/mame/audio/timeplt.cpp | 10 +- src/mame/audio/timeplt.h | 13 +- src/mame/audio/trackfld.cpp | 10 +- src/mame/audio/trackfld.h | 13 +- src/mame/audio/triplhnt.cpp | 2 +- src/mame/audio/turrett.cpp | 10 +- src/mame/audio/tvc.cpp | 4 +- src/mame/audio/tvc.h | 14 +- src/mame/audio/tx1.cpp | 16 +- src/mame/audio/vboy.cpp | 6 +- src/mame/audio/vboy.h | 91 +- src/mame/audio/vc4000.cpp | 16 +- src/mame/audio/vc4000.h | 12 +- src/mame/audio/vicdual-97271p.cpp | 207 ++ src/mame/audio/vicdual-97271p.h | 43 + src/mame/audio/warpwarp.cpp | 4 +- src/mame/audio/warpwarp.h | 12 +- src/mame/audio/williams.cpp | 14 +- src/mame/audio/williams.h | 6 +- src/mame/audio/wiping.cpp | 10 +- src/mame/audio/wiping.h | 37 +- src/mame/audio/wpcsnd.cpp | 20 +- src/mame/audio/wpcsnd.h | 12 +- src/mame/audio/wswan.cpp | 4 +- src/mame/audio/wswan.h | 10 +- src/mame/audio/zaccaria.cpp | 26 +- src/mame/audio/zaccaria.h | 43 +- src/mame/drivers/1942.cpp | 4 +- src/mame/drivers/1943.cpp | 2 +- src/mame/drivers/1945kiii.cpp | 15 +- src/mame/drivers/20pacgal.cpp | 20 +- src/mame/drivers/24cdjuke.cpp | 4 +- src/mame/drivers/2mindril.cpp | 4 +- src/mame/drivers/30test.cpp | 6 +- src/mame/drivers/39in1.cpp | 16 +- src/mame/drivers/3do.cpp | 14 +- src/mame/drivers/3x3puzzl.cpp | 10 +- src/mame/drivers/4004clk.cpp | 6 +- src/mame/drivers/40love.cpp | 8 +- src/mame/drivers/4dpi.cpp | 6 +- src/mame/drivers/4enlinea.cpp | 10 +- src/mame/drivers/4enraya.cpp | 6 +- src/mame/drivers/4roses.cpp | 4 +- src/mame/drivers/5clown.cpp | 6 +- src/mame/drivers/68ksbc.cpp | 6 +- src/mame/drivers/8080bw.cpp | 372 ++-- src/mame/drivers/88games.cpp | 8 +- src/mame/drivers/a1supply.cpp | 10 +- src/mame/drivers/a2600.cpp | 10 +- src/mame/drivers/a5105.cpp | 6 +- src/mame/drivers/a51xx.cpp | 8 +- src/mame/drivers/a6809.cpp | 24 +- src/mame/drivers/a7150.cpp | 28 +- src/mame/drivers/a7800.cpp | 16 +- src/mame/drivers/aa310.cpp | 8 +- src/mame/drivers/abc1600.cpp | 14 +- src/mame/drivers/abc80.cpp | 59 +- src/mame/drivers/abc80x.cpp | 192 +- src/mame/drivers/ac1.cpp | 10 +- src/mame/drivers/ace.cpp | 4 +- src/mame/drivers/aceex.cpp | 6 +- src/mame/drivers/acefruit.cpp | 8 +- src/mame/drivers/aces1.cpp | 96 +- src/mame/drivers/acesp.cpp | 2 +- src/mame/drivers/acommand.cpp | 475 ++--- src/mame/drivers/acrnsys1.cpp | 6 +- src/mame/drivers/actfancr.cpp | 18 +- src/mame/drivers/adam.cpp | 6 +- src/mame/drivers/adp.cpp | 20 +- src/mame/drivers/advision.cpp | 13 +- src/mame/drivers/aeroboto.cpp | 6 +- src/mame/drivers/aerofgt.cpp | 306 +-- src/mame/drivers/agat.cpp | 1115 ++++++++++ src/mame/drivers/age_candy.cpp | 4 +- src/mame/drivers/aim65.cpp | 12 +- src/mame/drivers/aim65_40.cpp | 6 +- src/mame/drivers/airbustr.cpp | 12 +- src/mame/drivers/airraid.cpp | 6 +- src/mame/drivers/ajax.cpp | 8 +- src/mame/drivers/akaiax80.cpp | 4 +- src/mame/drivers/albazc.cpp | 16 +- src/mame/drivers/albazg.cpp | 4 +- src/mame/drivers/aleck64.cpp | 40 +- src/mame/drivers/aleisttl.cpp | 6 +- src/mame/drivers/alesis.cpp | 12 +- src/mame/drivers/alesis_qs.cpp | 6 +- src/mame/drivers/alg.cpp | 20 +- src/mame/drivers/alien.cpp | 4 +- src/mame/drivers/aliens.cpp | 16 +- src/mame/drivers/alinvade.cpp | 4 +- src/mame/drivers/allied.cpp | 26 +- src/mame/drivers/alpha68k.cpp | 57 +- src/mame/drivers/alphasma.cpp | 10 +- src/mame/drivers/alphatro.cpp | 4 +- src/mame/drivers/altair.cpp | 8 +- src/mame/drivers/alto2.cpp | 2 +- src/mame/drivers/altos486.cpp | 4 +- src/mame/drivers/altos5.cpp | 10 +- src/mame/drivers/alvg.cpp | 39 +- src/mame/drivers/amaticmg.cpp | 12 +- src/mame/drivers/amazonlf.cpp | 92 - src/mame/drivers/ambush.cpp | 16 +- src/mame/drivers/amerihok.cpp | 4 +- src/mame/drivers/amico2k.cpp | 6 +- src/mame/drivers/amiga.cpp | 108 +- src/mame/drivers/ampoker2.cpp | 62 +- src/mame/drivers/ampro.cpp | 10 +- src/mame/drivers/amspdwy.cpp | 6 +- src/mame/drivers/amstr_pc.cpp | 23 +- src/mame/drivers/amstrad.cpp | 34 +- src/mame/drivers/amusco.cpp | 21 +- src/mame/drivers/amust.cpp | 12 +- src/mame/drivers/angelkds.cpp | 2 +- src/mame/drivers/anzterm.cpp | 4 +- src/mame/drivers/apc.cpp | 2 +- src/mame/drivers/apexc.cpp | 22 +- src/mame/drivers/apf.cpp | 14 +- src/mame/drivers/apogee.cpp | 6 +- src/mame/drivers/apollo.cpp | 36 +- src/mame/drivers/apple1.cpp | 6 +- src/mame/drivers/apple2.cpp | 79 +- src/mame/drivers/apple2e.cpp | 60 +- src/mame/drivers/apple2gs.cpp | 16 +- src/mame/drivers/apple3.cpp | 6 +- src/mame/drivers/applix.cpp | 8 +- src/mame/drivers/appoooh.cpp | 10 +- src/mame/drivers/apricot.cpp | 10 +- src/mame/drivers/apricotf.cpp | 16 +- src/mame/drivers/apricotp.cpp | 14 +- src/mame/drivers/aquarium.cpp | 4 +- src/mame/drivers/aquarius.cpp | 8 +- src/mame/drivers/arabian.cpp | 6 +- src/mame/drivers/arachnid.cpp | 8 +- src/mame/drivers/arcadecl.cpp | 8 +- src/mame/drivers/arcadia.cpp | 4 +- src/mame/drivers/argo.cpp | 8 +- src/mame/drivers/argox.cpp | 6 +- src/mame/drivers/argus.cpp | 16 +- src/mame/drivers/aristmk4.cpp | 267 ++- src/mame/drivers/aristmk5.cpp | 839 +++++++- src/mame/drivers/aristmk6.cpp | 1210 +++++------ src/mame/drivers/arkanoid.cpp | 62 +- src/mame/drivers/armedf.cpp | 36 +- src/mame/drivers/arsystems.cpp | 40 +- src/mame/drivers/artmagic.cpp | 8 +- src/mame/drivers/ashnojoe.cpp | 4 +- src/mame/drivers/asst128.cpp | 17 +- src/mame/drivers/asterix.cpp | 2 +- src/mame/drivers/asteroid.cpp | 30 +- src/mame/drivers/astinvad.cpp | 50 +- src/mame/drivers/astrafr.cpp | 378 ++-- src/mame/drivers/astrcorp.cpp | 24 +- src/mame/drivers/astrocde.cpp | 26 +- src/mame/drivers/astrof.cpp | 38 +- src/mame/drivers/astrohome.cpp | 10 +- src/mame/drivers/astropc.cpp | 2 +- src/mame/drivers/asuka.cpp | 78 +- src/mame/drivers/at.cpp | 20 +- src/mame/drivers/atari400.cpp | 72 +- src/mame/drivers/atari_s1.cpp | 12 +- src/mame/drivers/atari_s2.cpp | 10 +- src/mame/drivers/atarifb.cpp | 16 +- src/mame/drivers/atarig1.cpp | 8 +- src/mame/drivers/atarig42.cpp | 2 +- src/mame/drivers/atarigt.cpp | 19 +- src/mame/drivers/atarigx2.cpp | 17 +- src/mame/drivers/atarist.cpp | 90 +- src/mame/drivers/atarisy1.cpp | 34 +- src/mame/drivers/atarisy2.cpp | 76 +- src/mame/drivers/atarisy4.cpp | 4 +- src/mame/drivers/atarittl.cpp | 72 +- src/mame/drivers/atetris.cpp | 14 +- src/mame/drivers/atlantis.cpp | 309 ++- src/mame/drivers/atm.cpp | 12 +- src/mame/drivers/atom.cpp | 14 +- src/mame/drivers/atpci.cpp | 11 +- src/mame/drivers/atronic.cpp | 62 +- src/mame/drivers/attache.cpp | 14 +- src/mame/drivers/attckufo.cpp | 6 +- src/mame/drivers/atvtrack.cpp | 12 +- src/mame/drivers/aussiebyte.cpp | 6 +- src/mame/drivers/avalnche.cpp | 8 +- src/mame/drivers/avigo.cpp | 14 +- src/mame/drivers/avt.cpp | 12 +- src/mame/drivers/ax20.cpp | 6 +- src/mame/drivers/aztarac.cpp | 4 +- src/mame/drivers/b16.cpp | 6 +- src/mame/drivers/b2m.cpp | 8 +- src/mame/drivers/babbage.cpp | 6 +- src/mame/drivers/backfire.cpp | 2 +- src/mame/drivers/badlands.cpp | 151 +- src/mame/drivers/bagman.cpp | 82 +- src/mame/drivers/bailey.cpp | 8 +- src/mame/drivers/balsente.cpp | 2 +- src/mame/drivers/banctec.cpp | 6 +- src/mame/drivers/bankp.cpp | 6 +- src/mame/drivers/baraduke.cpp | 4 +- src/mame/drivers/barata.cpp | 4 +- src/mame/drivers/barni.cpp | 4 +- src/mame/drivers/bartop52.cpp | 17 +- src/mame/drivers/basic52.cpp | 14 +- src/mame/drivers/batman.cpp | 4 +- src/mame/drivers/battlane.cpp | 8 +- src/mame/drivers/battlera.cpp | 12 +- src/mame/drivers/battlex.cpp | 95 +- src/mame/drivers/battlnts.cpp | 14 +- src/mame/drivers/bbc.cpp | 8 +- src/mame/drivers/bbcbc.cpp | 6 +- src/mame/drivers/bbusters.cpp | 33 +- src/mame/drivers/bcs3.cpp | 12 +- src/mame/drivers/beaminv.cpp | 6 +- src/mame/drivers/beathead.cpp | 58 +- src/mame/drivers/bebox.cpp | 10 +- src/mame/drivers/beehive.cpp | 6 +- src/mame/drivers/beezer.cpp | 8 +- src/mame/drivers/belatra.cpp | 16 +- src/mame/drivers/berzerk.cpp | 14 +- src/mame/drivers/besta.cpp | 25 +- src/mame/drivers/bestleag.cpp | 8 +- src/mame/drivers/beta.cpp | 12 +- src/mame/drivers/bfcobra.cpp | 2 +- src/mame/drivers/bfm_ad5.cpp | 2 +- src/mame/drivers/bfm_sc1.cpp | 4 +- src/mame/drivers/bfm_sc2.cpp | 16 +- src/mame/drivers/bfm_sc4.cpp | 70 +- src/mame/drivers/bfm_sc5.cpp | 2 +- src/mame/drivers/bfm_swp.cpp | 12 +- src/mame/drivers/bfmsys83.cpp | 6 +- src/mame/drivers/bfmsys85.cpp | 4 +- src/mame/drivers/bgt.cpp | 10 +- src/mame/drivers/big10.cpp | 6 +- src/mame/drivers/bigbord2.cpp | 16 +- src/mame/drivers/bigevglf.cpp | 6 +- src/mame/drivers/bigstrkb.cpp | 10 +- src/mame/drivers/binbug.cpp | 28 +- src/mame/drivers/bingo.cpp | 56 +- src/mame/drivers/bingoc.cpp | 33 +- src/mame/drivers/bingoman.cpp | 6 +- src/mame/drivers/bingor.cpp | 200 +- src/mame/drivers/bionicc.cpp | 80 +- src/mame/drivers/bishi.cpp | 10 +- src/mame/drivers/bitgraph.cpp | 111 +- src/mame/drivers/bk.cpp | 12 +- src/mame/drivers/bking.cpp | 10 +- src/mame/drivers/blackt96.cpp | 8 +- src/mame/drivers/bladestl.cpp | 14 +- src/mame/drivers/blitz.cpp | 8 +- src/mame/drivers/blitz68k.cpp | 34 +- src/mame/drivers/blktiger.cpp | 16 +- src/mame/drivers/blmbycar.cpp | 8 +- src/mame/drivers/blockade.cpp | 16 +- src/mame/drivers/blockhl.cpp | 6 +- src/mame/drivers/blockout.cpp | 14 +- src/mame/drivers/bloodbro.cpp | 24 +- src/mame/drivers/blstroid.cpp | 2 +- src/mame/drivers/blueprnt.cpp | 10 +- src/mame/drivers/bmcbowl.cpp | 4 +- src/mame/drivers/bmcpokr.cpp | 10 +- src/mame/drivers/bmjr.cpp | 8 +- src/mame/drivers/bml3.cpp | 10 +- src/mame/drivers/bnstars.cpp | 2 +- src/mame/drivers/bntyhunt.cpp | 4 +- src/mame/drivers/bob85.cpp | 6 +- src/mame/drivers/bogeyman.cpp | 4 +- src/mame/drivers/bombjack.cpp | 8 +- src/mame/drivers/boogwing.cpp | 6 +- src/mame/drivers/bottom9.cpp | 8 +- src/mame/drivers/bowltry.cpp | 4 +- src/mame/drivers/boxer.cpp | 75 +- src/mame/drivers/bpmmicro.cpp | 417 ++++ src/mame/drivers/br8641.cpp | 4 +- src/mame/drivers/brkthru.cpp | 8 +- src/mame/drivers/bsktball.cpp | 4 +- src/mame/drivers/btime.cpp | 40 +- src/mame/drivers/btoads.cpp | 4 +- src/mame/drivers/bublbobl.cpp | 49 +- src/mame/drivers/buggychl.cpp | 6 +- src/mame/drivers/bullet.cpp | 15 +- src/mame/drivers/busicom.cpp | 6 +- src/mame/drivers/buster.cpp | 4 +- src/mame/drivers/bw12.cpp | 8 +- src/mame/drivers/bw2.cpp | 8 +- src/mame/drivers/bwidow.cpp | 22 +- src/mame/drivers/bwing.cpp | 2 +- src/mame/drivers/by17.cpp | 20 +- src/mame/drivers/by35.cpp | 138 +- src/mame/drivers/by6803.cpp | 50 +- src/mame/drivers/by68701.cpp | 10 +- src/mame/drivers/byvid.cpp | 12 +- src/mame/drivers/bzone.cpp | 14 +- src/mame/drivers/c10.cpp | 6 +- src/mame/drivers/c128.cpp | 42 +- src/mame/drivers/c64.cpp | 52 +- src/mame/drivers/c64dtv.cpp | 4 +- src/mame/drivers/c65.cpp | 2 +- src/mame/drivers/c80.cpp | 6 +- src/mame/drivers/c900.cpp | 13 +- src/mame/drivers/cabal.cpp | 22 +- src/mame/drivers/cabaret.cpp | 2 +- src/mame/drivers/calchase.cpp | 8 +- src/mame/drivers/calomega.cpp | 4 +- src/mame/drivers/calorie.cpp | 4 +- src/mame/drivers/camplynx.cpp | 20 +- src/mame/drivers/canon_s80.cpp | 9 +- src/mame/drivers/canyon.cpp | 6 +- src/mame/drivers/capbowl.cpp | 4 +- src/mame/drivers/capcom.cpp | 2 +- src/mame/drivers/capr1.cpp | 6 +- src/mame/drivers/caprcyc.cpp | 4 +- src/mame/drivers/cardline.cpp | 6 +- src/mame/drivers/carjmbre.cpp | 4 +- src/mame/drivers/carpolo.cpp | 4 +- src/mame/drivers/carrera.cpp | 4 +- src/mame/drivers/casloopy.cpp | 2 +- src/mame/drivers/castle.cpp | 8 +- src/mame/drivers/caswin.cpp | 10 +- src/mame/drivers/cat.cpp | 4 +- src/mame/drivers/cave.cpp | 345 ++- src/mame/drivers/cavepc.cpp | 2 +- src/mame/drivers/cb2001.cpp | 6 +- src/mame/drivers/cball.cpp | 4 +- src/mame/drivers/cbasebal.cpp | 4 +- src/mame/drivers/cbm2.cpp | 42 +- src/mame/drivers/cbuster.cpp | 6 +- src/mame/drivers/cc40.cpp | 15 +- src/mame/drivers/ccastles.cpp | 18 +- src/mame/drivers/cchance.cpp | 6 +- src/mame/drivers/cchasm.cpp | 6 +- src/mame/drivers/cclimber.cpp | 52 +- src/mame/drivers/ccs2810.cpp | 21 +- src/mame/drivers/ccs300.cpp | 11 +- src/mame/drivers/cd2650.cpp | 12 +- src/mame/drivers/cdc721.cpp | 4 +- src/mame/drivers/cdi.cpp | 42 +- src/mame/drivers/cedar_magnet.cpp | 8 +- src/mame/drivers/centiped.cpp | 32 +- src/mame/drivers/cesclass.cpp | 10 +- src/mame/drivers/cfx9850.cpp | 217 +- src/mame/drivers/cgc7900.cpp | 25 +- src/mame/drivers/cgenie.cpp | 18 +- src/mame/drivers/chaknpop.cpp | 6 +- src/mame/drivers/cham24.cpp | 19 +- src/mame/drivers/champbas.cpp | 12 +- src/mame/drivers/champbwl.cpp | 20 +- src/mame/drivers/chanbara.cpp | 2 +- src/mame/drivers/chance32.cpp | 8 +- src/mame/drivers/changela.cpp | 4 +- src/mame/drivers/channelf.cpp | 26 +- src/mame/drivers/chaos.cpp | 12 +- src/mame/drivers/cheekyms.cpp | 4 +- src/mame/drivers/chessmst.cpp | 14 +- src/mame/drivers/chesstrv.cpp | 10 +- src/mame/drivers/chexx.cpp | 6 +- src/mame/drivers/chicago.cpp | 6 +- src/mame/drivers/chihiro.cpp | 627 ++++-- src/mame/drivers/chinagat.cpp | 55 +- src/mame/drivers/chinsan.cpp | 968 ++++----- src/mame/drivers/chqflag.cpp | 8 +- src/mame/drivers/chsuper.cpp | 2 +- src/mame/drivers/cidelsa.cpp | 16 +- src/mame/drivers/cinemat.cpp | 48 +- src/mame/drivers/circus.cpp | 18 +- src/mame/drivers/circusc.cpp | 2 +- src/mame/drivers/cischeat.cpp | 40 +- src/mame/drivers/citycon.cpp | 2 +- src/mame/drivers/clayshoo.cpp | 4 +- src/mame/drivers/clcd.cpp | 6 +- src/mame/drivers/cliffhgr.cpp | 14 +- src/mame/drivers/cloak.cpp | 18 +- src/mame/drivers/cloud9.cpp | 6 +- src/mame/drivers/clowndwn.cpp | 4 +- src/mame/drivers/clpoker.cpp | 311 +++ src/mame/drivers/clshroad.cpp | 40 +- src/mame/drivers/cm1800.cpp | 23 +- src/mame/drivers/cmi.cpp | 9 +- src/mame/drivers/cmmb.cpp | 4 +- src/mame/drivers/cninja.cpp | 80 +- src/mame/drivers/cntsteer.cpp | 10 +- src/mame/drivers/cobra.cpp | 146 +- src/mame/drivers/coco12.cpp | 34 +- src/mame/drivers/coco3.cpp | 17 +- src/mame/drivers/cocoloco.cpp | 8 +- src/mame/drivers/codata.cpp | 13 +- src/mame/drivers/coinmstr.cpp | 10 +- src/mame/drivers/coinmvga.cpp | 10 +- src/mame/drivers/coleco.cpp | 16 +- src/mame/drivers/combatsc.cpp | 18 +- src/mame/drivers/comebaby.cpp | 4 +- src/mame/drivers/commando.cpp | 4 +- src/mame/drivers/compgolf.cpp | 2 +- src/mame/drivers/compis.cpp | 12 +- src/mame/drivers/compucolor.cpp | 4 +- src/mame/drivers/comquest.cpp | 6 +- src/mame/drivers/comx35.cpp | 18 +- src/mame/drivers/concept.cpp | 6 +- src/mame/drivers/contra.cpp | 22 +- src/mame/drivers/coolpool.cpp | 18 +- src/mame/drivers/coolridr.cpp | 6 +- src/mame/drivers/cop01.cpp | 10 +- src/mame/drivers/cops.cpp | 8 +- src/mame/drivers/copsnrob.cpp | 4 +- src/mame/drivers/corona.cpp | 30 +- src/mame/drivers/cortex.cpp | 6 +- src/mame/drivers/cosmic.cpp | 32 +- src/mame/drivers/cosmicos.cpp | 6 +- src/mame/drivers/cp1.cpp | 46 +- src/mame/drivers/cps1.cpp | 105 +- src/mame/drivers/cps2.cpp | 45 +- src/mame/drivers/cps3.cpp | 20 +- src/mame/drivers/craft.cpp | 4 +- src/mame/drivers/crbaloon.cpp | 6 +- src/mame/drivers/crgolf.cpp | 18 +- src/mame/drivers/crimfght.cpp | 8 +- src/mame/drivers/crospang.cpp | 4 +- src/mame/drivers/crshrace.cpp | 7 +- src/mame/drivers/crvision.cpp | 32 +- src/mame/drivers/crystal.cpp | 158 +- src/mame/drivers/csplayh5.cpp | 2 +- src/mame/drivers/cswat.cpp | 6 +- src/mame/drivers/ct486.cpp | 15 +- src/mame/drivers/cubeqst.cpp | 10 +- src/mame/drivers/cubo.cpp | 2 +- src/mame/drivers/cultures.cpp | 8 +- src/mame/drivers/cupidon.cpp | 18 +- src/mame/drivers/cv1k.cpp | 2 +- src/mame/drivers/cvicny.cpp | 6 +- src/mame/drivers/cvs.cpp | 46 +- src/mame/drivers/cxgz80.cpp | 10 +- src/mame/drivers/cxhumax.cpp | 6 +- src/mame/drivers/cyberbal.cpp | 26 +- src/mame/drivers/cybertnk.cpp | 2 +- src/mame/drivers/cybiko.cpp | 12 +- src/mame/drivers/cyclemb.cpp | 4 +- src/mame/drivers/czk80.cpp | 12 +- src/mame/drivers/d6800.cpp | 6 +- src/mame/drivers/d6809.cpp | 12 +- src/mame/drivers/d9final.cpp | 4 +- src/mame/drivers/dacholer.cpp | 10 +- src/mame/drivers/dai.cpp | 7 +- src/mame/drivers/dai3wksi.cpp | 4 +- src/mame/drivers/dambustr.cpp | 8 +- src/mame/drivers/darius.cpp | 14 +- src/mame/drivers/darkmist.cpp | 2 +- src/mame/drivers/darkseal.cpp | 6 +- src/mame/drivers/daruma.cpp | 6 +- src/mame/drivers/dassault.cpp | 6 +- src/mame/drivers/datum.cpp | 6 +- src/mame/drivers/dblcrown.cpp | 6 +- src/mame/drivers/dblewing.cpp | 4 +- src/mame/drivers/dbz.cpp | 8 +- src/mame/drivers/dccons.cpp | 19 +- src/mame/drivers/dcheese.cpp | 20 +- src/mame/drivers/dcon.cpp | 10 +- src/mame/drivers/dct11em.cpp | 6 +- src/mame/drivers/dday.cpp | 9 +- src/mame/drivers/ddayjlc.cpp | 2 +- src/mame/drivers/ddealer.cpp | 24 +- src/mame/drivers/ddenlovr.cpp | 157 +- src/mame/drivers/ddragon.cpp | 35 +- src/mame/drivers/ddragon3.cpp | 46 +- src/mame/drivers/ddribble.cpp | 12 +- src/mame/drivers/de_2.cpp | 70 +- src/mame/drivers/de_3.cpp | 19 +- src/mame/drivers/de_3b.cpp | 64 +- src/mame/drivers/deadang.cpp | 6 +- src/mame/drivers/dec0.cpp | 28 +- src/mame/drivers/dec8.cpp | 170 +- src/mame/drivers/deco156.cpp | 8 +- src/mame/drivers/deco32.cpp | 40 +- src/mame/drivers/deco_ld.cpp | 12 +- src/mame/drivers/deco_mlc.cpp | 8 +- src/mame/drivers/decocass.cpp | 16 +- src/mame/drivers/dectalk.cpp | 6 +- src/mame/drivers/decwritr.cpp | 6 +- src/mame/drivers/deniam.cpp | 16 +- src/mame/drivers/deshoros.cpp | 4 +- src/mame/drivers/destroyr.cpp | 8 +- src/mame/drivers/dfruit.cpp | 10 +- src/mame/drivers/dgn_beta.cpp | 105 +- src/mame/drivers/dgpix.cpp | 2 +- src/mame/drivers/didact.cpp | 29 +- src/mame/drivers/dietgo.cpp | 4 +- src/mame/drivers/digel804.cpp | 10 +- src/mame/drivers/digijet.cpp | 6 +- src/mame/drivers/dim68k.cpp | 14 +- src/mame/drivers/discoboy.cpp | 137 +- src/mame/drivers/divebomb.cpp | 4 +- src/mame/drivers/diverboy.cpp | 6 +- src/mame/drivers/djboy.cpp | 8 +- src/mame/drivers/djmain.cpp | 2 +- src/mame/drivers/dkong.cpp | 145 +- src/mame/drivers/dlair.cpp | 4 +- src/mame/drivers/dlair2.cpp | 34 +- src/mame/drivers/dm7000.cpp | 14 +- src/mame/drivers/dmax8000.cpp | 8 +- src/mame/drivers/dmndrby.cpp | 8 +- src/mame/drivers/dms5000.cpp | 6 +- src/mame/drivers/dms86.cpp | 18 +- src/mame/drivers/dmv.cpp | 21 +- src/mame/drivers/docastle.cpp | 58 +- src/mame/drivers/dogfgt.cpp | 8 +- src/mame/drivers/dolphunk.cpp | 6 +- src/mame/drivers/dominob.cpp | 6 +- src/mame/drivers/dooyong.cpp | 826 +++++++- src/mame/drivers/dorachan.cpp | 4 +- src/mame/drivers/dotrikun.cpp | 6 +- src/mame/drivers/dps1.cpp | 8 +- src/mame/drivers/dragon.cpp | 144 +- src/mame/drivers/dragrace.cpp | 4 +- src/mame/drivers/dreambal.cpp | 4 +- src/mame/drivers/dreamwld.cpp | 26 +- src/mame/drivers/drgnmst.cpp | 6 +- src/mame/drivers/dribling.cpp | 8 +- src/mame/drivers/drmicro.cpp | 6 +- src/mame/drivers/drtomy.cpp | 6 +- src/mame/drivers/drw80pkr.cpp | 58 +- src/mame/drivers/dsb46.cpp | 8 +- src/mame/drivers/dual68.cpp | 19 +- src/mame/drivers/dunhuang.cpp | 6 +- src/mame/drivers/dvk_kcgd.cpp | 6 +- src/mame/drivers/dvk_ksm.cpp | 128 +- src/mame/drivers/dwarfd.cpp | 18 +- src/mame/drivers/dynadice.cpp | 2 +- src/mame/drivers/dynax.cpp | 170 +- src/mame/drivers/dynduke.cpp | 48 +- src/mame/drivers/eacc.cpp | 6 +- src/mame/drivers/ec184x.cpp | 20 +- src/mame/drivers/ec65.cpp | 32 +- src/mame/drivers/ecoinf1.cpp | 20 +- src/mame/drivers/ecoinf2.cpp | 24 +- src/mame/drivers/ecoinf3.cpp | 26 +- src/mame/drivers/ecoinfr.cpp | 36 +- src/mame/drivers/egghunt.cpp | 6 +- src/mame/drivers/einstein.cpp | 50 +- src/mame/drivers/electra.cpp | 6 +- src/mame/drivers/electron.cpp | 8 +- src/mame/drivers/elekscmp.cpp | 6 +- src/mame/drivers/elf.cpp | 6 +- src/mame/drivers/elwro800.cpp | 8 +- src/mame/drivers/embargo.cpp | 4 +- src/mame/drivers/enigma2.cpp | 10 +- src/mame/drivers/enmirage.cpp | 59 +- src/mame/drivers/eolith.cpp | 2 +- src/mame/drivers/eolith16.cpp | 4 +- src/mame/drivers/ep64.cpp | 10 +- src/mame/drivers/epos.cpp | 213 +- src/mame/drivers/eprom.cpp | 8 +- src/mame/drivers/equites.cpp | 7 +- src/mame/drivers/ertictac.cpp | 10 +- src/mame/drivers/esd16.cpp | 49 +- src/mame/drivers/esh.cpp | 10 +- src/mame/drivers/espial.cpp | 8 +- src/mame/drivers/esq1.cpp | 18 +- src/mame/drivers/esq5505.cpp | 42 +- src/mame/drivers/esqasr.cpp | 10 +- src/mame/drivers/esqkt.cpp | 4 +- src/mame/drivers/esqmr.cpp | 8 +- src/mame/drivers/esripsys.cpp | 2 +- src/mame/drivers/et3400.cpp | 4 +- src/mame/drivers/eti660.cpp | 10 +- src/mame/drivers/ettrivia.cpp | 24 +- src/mame/drivers/eurocom2.cpp | 75 +- src/mame/drivers/europc.cpp | 9 +- src/mame/drivers/evmbug.cpp | 14 +- src/mame/drivers/excali64.cpp | 10 +- src/mame/drivers/exedexes.cpp | 8 +- src/mame/drivers/exelv.cpp | 26 +- src/mame/drivers/exerion.cpp | 2 +- src/mame/drivers/exidy.cpp | 113 +- src/mame/drivers/exidy440.cpp | 30 +- src/mame/drivers/exidyttl.cpp | 12 +- src/mame/drivers/exp85.cpp | 6 +- src/mame/drivers/expro02.cpp | 64 +- src/mame/drivers/exprraid.cpp | 2 +- src/mame/drivers/exterm.cpp | 4 +- src/mame/drivers/extrema.cpp | 22 +- src/mame/drivers/exzisus.cpp | 8 +- src/mame/drivers/f-32.cpp | 12 +- src/mame/drivers/f1gp.cpp | 22 +- src/mame/drivers/famibox.cpp | 6 +- src/mame/drivers/fantland.cpp | 26 +- src/mame/drivers/fanucs15.cpp | 6 +- src/mame/drivers/fanucspmg.cpp | 8 +- src/mame/drivers/fastfred.cpp | 14 +- src/mame/drivers/fastinvaders.cpp | 6 +- src/mame/drivers/fastlane.cpp | 4 +- src/mame/drivers/fb01.cpp | 6 +- src/mame/drivers/fc100.cpp | 8 +- src/mame/drivers/fccpu20.cpp | 28 +- src/mame/drivers/fccpu30.cpp | 34 +- src/mame/drivers/fcombat.cpp | 2 +- src/mame/drivers/fcrash.cpp | 66 +- src/mame/drivers/feversoc.cpp | 4 +- src/mame/drivers/fgoal.cpp | 6 +- src/mame/drivers/fidel6502.cpp | 356 +--- src/mame/drivers/fidel68k.cpp | 189 +- src/mame/drivers/fidelmcs48.cpp | 186 ++ src/mame/drivers/fidelz80.cpp | 369 +++- src/mame/drivers/finalizr.cpp | 16 +- src/mame/drivers/fireball.cpp | 6 +- src/mame/drivers/firebeat.cpp | 4 +- src/mame/drivers/firefox.cpp | 6 +- src/mame/drivers/firetrap.cpp | 16 +- src/mame/drivers/firetrk.cpp | 8 +- src/mame/drivers/fitfight.cpp | 16 +- src/mame/drivers/fk1.cpp | 6 +- src/mame/drivers/flicker.cpp | 6 +- src/mame/drivers/flipjack.cpp | 4 +- src/mame/drivers/flkatck.cpp | 8 +- src/mame/drivers/flower.cpp | 187 +- src/mame/drivers/flstory.cpp | 20 +- src/mame/drivers/flyball.cpp | 11 +- src/mame/drivers/fm7.cpp | 28 +- src/mame/drivers/fmtowns.cpp | 28 +- src/mame/drivers/foodf.cpp | 10 +- src/mame/drivers/force68k.cpp | 26 +- src/mame/drivers/forte2.cpp | 2 +- src/mame/drivers/fortecar.cpp | 4 +- src/mame/drivers/fp1100.cpp | 4 +- src/mame/drivers/fp200.cpp | 4 +- src/mame/drivers/fp6000.cpp | 6 +- src/mame/drivers/freekick.cpp | 75 +- src/mame/drivers/fresh.cpp | 80 +- src/mame/drivers/fromanc2.cpp | 10 +- src/mame/drivers/fromance.cpp | 53 +- src/mame/drivers/fruitpc.cpp | 20 +- src/mame/drivers/ft68m.cpp | 15 +- src/mame/drivers/fungames.cpp | 8 +- src/mame/drivers/funkball.cpp | 6 +- src/mame/drivers/funkybee.cpp | 10 +- src/mame/drivers/funkyjet.cpp | 4 +- src/mame/drivers/funtech.cpp | 4 +- src/mame/drivers/funworld.cpp | 144 +- src/mame/drivers/funybubl.cpp | 8 +- src/mame/drivers/fuukifg2.cpp | 10 +- src/mame/drivers/fuukifg3.cpp | 10 +- src/mame/drivers/g627.cpp | 2 +- src/mame/drivers/gaelco.cpp | 28 +- src/mame/drivers/gaelco2.cpp | 34 +- src/mame/drivers/gaelco3d.cpp | 38 +- src/mame/drivers/gaelcopc.cpp | 137 ++ src/mame/drivers/gaiden.cpp | 44 +- src/mame/drivers/gal3.cpp | 12 +- src/mame/drivers/galaga.cpp | 86 +- src/mame/drivers/galastrm.cpp | 14 +- src/mame/drivers/galaxi.cpp | 12 +- src/mame/drivers/galaxia.cpp | 14 +- src/mame/drivers/galaxian.cpp | 5 +- src/mame/drivers/galaxold.cpp | 74 +- src/mame/drivers/galaxy.cpp | 10 +- src/mame/drivers/galeb.cpp | 6 +- src/mame/drivers/galgame.cpp | 2 +- src/mame/drivers/galgames.cpp | 89 +- src/mame/drivers/galivan.cpp | 30 +- src/mame/drivers/galpani2.cpp | 26 +- src/mame/drivers/galpani3.cpp | 10 +- src/mame/drivers/galpanic.cpp | 53 +- src/mame/drivers/galspnbl.cpp | 8 +- src/mame/drivers/gamate.cpp | 11 +- src/mame/drivers/gambl186.cpp | 8 +- src/mame/drivers/gamecom.cpp | 6 +- src/mame/drivers/gamecstl.cpp | 4 +- src/mame/drivers/gameking.cpp | 6 +- src/mame/drivers/gameplan.cpp | 38 +- src/mame/drivers/gamepock.cpp | 4 +- src/mame/drivers/gammagic.cpp | 8 +- src/mame/drivers/gamtor.cpp | 2 +- src/mame/drivers/gaplus.cpp | 51 +- src/mame/drivers/gatron.cpp | 10 +- src/mame/drivers/gauntlet.cpp | 66 +- src/mame/drivers/gb.cpp | 22 +- src/mame/drivers/gba.cpp | 6 +- src/mame/drivers/gberet.cpp | 10 +- src/mame/drivers/gcpinbal.cpp | 14 +- src/mame/drivers/gei.cpp | 128 +- src/mame/drivers/geneve.cpp | 69 +- src/mame/drivers/geniusiq.cpp | 22 +- src/mame/drivers/genpc.cpp | 14 +- src/mame/drivers/ggconnie.cpp | 8 +- src/mame/drivers/ghosteo.cpp | 8 +- src/mame/drivers/giclassic.cpp | 377 ++++ src/mame/drivers/gijoe.cpp | 36 +- src/mame/drivers/gimix.cpp | 6 +- src/mame/drivers/ginganin.cpp | 2 +- src/mame/drivers/gizmondo.cpp | 2 +- src/mame/drivers/gkigt.cpp | 26 +- src/mame/drivers/gladiatr.cpp | 76 +- src/mame/drivers/glasgow.cpp | 16 +- src/mame/drivers/glass.cpp | 4 +- src/mame/drivers/globalfr.cpp | 50 +- src/mame/drivers/globalvr.cpp | 24 +- src/mame/drivers/gluck2.cpp | 6 +- src/mame/drivers/gmaster.cpp | 2 +- src/mame/drivers/gng.cpp | 26 +- src/mame/drivers/go2000.cpp | 4 +- src/mame/drivers/goal92.cpp | 8 +- src/mame/drivers/goindol.cpp | 4 +- src/mame/drivers/goldngam.cpp | 8 +- src/mame/drivers/goldnpkr.cpp | 206 +- src/mame/drivers/goldstar.cpp | 185 +- src/mame/drivers/gomoku.cpp | 7 +- src/mame/drivers/good.cpp | 10 +- src/mame/drivers/goodejan.cpp | 16 +- src/mame/drivers/gotcha.cpp | 8 +- src/mame/drivers/gottlieb.cpp | 8 +- src/mame/drivers/gotya.cpp | 6 +- src/mame/drivers/goupil.cpp | 10 +- src/mame/drivers/gp2x.cpp | 4 +- src/mame/drivers/gp32.cpp | 4 +- src/mame/drivers/gp_1.cpp | 22 +- src/mame/drivers/gp_2.cpp | 32 +- src/mame/drivers/gpworld.cpp | 32 +- src/mame/drivers/gradius3.cpp | 10 +- src/mame/drivers/grchamp.cpp | 4 +- src/mame/drivers/grfd2301.cpp | 4 +- src/mame/drivers/gridlee.cpp | 4 +- src/mame/drivers/groundfx.cpp | 53 +- src/mame/drivers/gstream.cpp | 14 +- src/mame/drivers/gstriker.cpp | 363 ++-- src/mame/drivers/gsword.cpp | 38 +- src/mame/drivers/gticlub.cpp | 8 +- src/mame/drivers/gts1.cpp | 4 +- src/mame/drivers/gts3.cpp | 2 +- src/mame/drivers/gts3a.cpp | 80 +- src/mame/drivers/gts80.cpp | 50 +- src/mame/drivers/gts80a.cpp | 62 +- src/mame/drivers/gts80b.cpp | 136 +- src/mame/drivers/guab.cpp | 14 +- src/mame/drivers/gumbo.cpp | 18 +- src/mame/drivers/gunbustr.cpp | 16 +- src/mame/drivers/gundealr.cpp | 16 +- src/mame/drivers/gunpey.cpp | 98 +- src/mame/drivers/gunsmoke.cpp | 14 +- src/mame/drivers/gyruss.cpp | 12 +- src/mame/drivers/h19.cpp | 124 +- src/mame/drivers/h8.cpp | 8 +- src/mame/drivers/h89.cpp | 6 +- src/mame/drivers/halleys.cpp | 12 +- src/mame/drivers/hanaawas.cpp | 4 +- src/mame/drivers/hankin.cpp | 12 +- src/mame/drivers/hapyfish.cpp | 5 +- src/mame/drivers/harddriv.cpp | 268 +-- src/mame/drivers/harriet.cpp | 25 +- src/mame/drivers/hazelgr.cpp | 4 +- src/mame/drivers/hazeltin.cpp | 66 +- src/mame/drivers/hcastle.cpp | 12 +- src/mame/drivers/headonb.cpp | 4 +- src/mame/drivers/hec2hrp.cpp | 30 +- src/mame/drivers/hexion.cpp | 10 +- src/mame/drivers/hh_amis2k.cpp | 5 +- src/mame/drivers/hh_cop400.cpp | 48 +- src/mame/drivers/hh_hmcs40.cpp | 188 +- src/mame/drivers/hh_melps4.cpp | 10 +- src/mame/drivers/hh_pic16.cpp | 240 ++- src/mame/drivers/hh_sm500.cpp | 130 ++ src/mame/drivers/hh_sm510.cpp | 541 ++++- src/mame/drivers/hh_tms1k.cpp | 310 +-- src/mame/drivers/hh_ucom4.cpp | 97 +- src/mame/drivers/hideseek.cpp | 2 +- src/mame/drivers/higemaru.cpp | 4 +- src/mame/drivers/highvdeo.cpp | 42 +- src/mame/drivers/hikaru.cpp | 18 +- src/mame/drivers/himesiki.cpp | 8 +- src/mame/drivers/hitme.cpp | 14 +- src/mame/drivers/hitpoker.cpp | 2 +- src/mame/drivers/hk68v10.cpp | 6 +- src/mame/drivers/hnayayoi.cpp | 8 +- src/mame/drivers/hng64.cpp | 4 +- src/mame/drivers/holeland.cpp | 14 +- src/mame/drivers/homedata.cpp | 122 +- src/mame/drivers/homelab.cpp | 18 +- src/mame/drivers/homerun.cpp | 8 +- src/mame/drivers/homez80.cpp | 6 +- src/mame/drivers/horizon.cpp | 8 +- src/mame/drivers/hornet.cpp | 6 +- src/mame/drivers/hotblock.cpp | 4 +- src/mame/drivers/hotstuff.cpp | 4 +- src/mame/drivers/hp16500.cpp | 16 +- src/mame/drivers/hp48.cpp | 12 +- src/mame/drivers/hp49gp.cpp | 2 +- src/mame/drivers/hp64k.cpp | 1175 ++++++----- src/mame/drivers/hp9845.cpp | 1985 ++++++++++++++---- src/mame/drivers/hp9k.cpp | 6 +- src/mame/drivers/hp9k_3xx.cpp | 30 +- src/mame/drivers/hp_ipc.cpp | 476 ++++- src/mame/drivers/hprot1.cpp | 4 +- src/mame/drivers/hpz80unk.cpp | 12 +- src/mame/drivers/ht68k.cpp | 10 +- src/mame/drivers/huebler.cpp | 6 +- src/mame/drivers/hunter2.cpp | 4 +- src/mame/drivers/hvyunit.cpp | 16 +- src/mame/drivers/hx20.cpp | 8 +- src/mame/drivers/hyhoo.cpp | 6 +- src/mame/drivers/hyperscan.cpp | 12 +- src/mame/drivers/hyperspt.cpp | 14 +- src/mame/drivers/hyprduel.cpp | 89 +- src/mame/drivers/i7000.cpp | 9 +- src/mame/drivers/ibm3153.cpp | 6 +- src/mame/drivers/ibm6580.cpp | 84 +- src/mame/drivers/ibmpc.cpp | 14 +- src/mame/drivers/ibmpcjr.cpp | 4 +- src/mame/drivers/icatel.cpp | 6 +- src/mame/drivers/ice_bozopail.cpp | 12 +- src/mame/drivers/ice_tbd.cpp | 8 +- src/mame/drivers/icecold.cpp | 6 +- src/mame/drivers/ichiban.cpp | 4 +- src/mame/drivers/idsa.cpp | 6 +- src/mame/drivers/ie15.cpp | 678 +----- src/mame/drivers/if800.cpp | 6 +- src/mame/drivers/igs009.cpp | 6 +- src/mame/drivers/igs011.cpp | 10 +- src/mame/drivers/igs017.cpp | 36 +- src/mame/drivers/igs_fear.cpp | 2 +- src/mame/drivers/igs_m027.cpp | 4 +- src/mame/drivers/igs_m036.cpp | 12 +- src/mame/drivers/igspc.cpp | 6 +- src/mame/drivers/igspoker.cpp | 18 +- src/mame/drivers/ikki.cpp | 6 +- src/mame/drivers/imds.cpp | 12 +- src/mame/drivers/imds2.cpp | 32 +- src/mame/drivers/imolagp.cpp | 8 +- src/mame/drivers/imsai.cpp | 12 +- src/mame/drivers/inder.cpp | 18 +- src/mame/drivers/inderp.cpp | 6 +- src/mame/drivers/indiana.cpp | 10 +- src/mame/drivers/indigo.cpp | 8 +- src/mame/drivers/indy_indigo2.cpp | 36 +- src/mame/drivers/instantm.cpp | 4 +- src/mame/drivers/instruct.cpp | 6 +- src/mame/drivers/interact.cpp | 10 +- src/mame/drivers/intrscti.cpp | 2 +- src/mame/drivers/intv.cpp | 14 +- src/mame/drivers/inufuku.cpp | 8 +- src/mame/drivers/invqix.cpp | 6 +- src/mame/drivers/ipc.cpp | 16 +- src/mame/drivers/ipds.cpp | 12 +- src/mame/drivers/iq151.cpp | 6 +- src/mame/drivers/iqblock.cpp | 2 +- src/mame/drivers/iris3130.cpp | 4 +- src/mame/drivers/irisha.cpp | 10 +- src/mame/drivers/irobot.cpp | 2 +- src/mame/drivers/ironhors.cpp | 8 +- src/mame/drivers/isbc.cpp | 168 +- src/mame/drivers/isbc8010.cpp | 10 +- src/mame/drivers/isbc8030.cpp | 6 +- src/mame/drivers/iskr103x.cpp | 22 +- src/mame/drivers/istellar.cpp | 6 +- src/mame/drivers/istrebiteli.cpp | 12 +- src/mame/drivers/iteagle.cpp | 38 +- src/mame/drivers/itech32.cpp | 2 +- src/mame/drivers/itech8.cpp | 73 +- src/mame/drivers/itgambl2.cpp | 44 +- src/mame/drivers/itgambl3.cpp | 18 +- src/mame/drivers/itgamble.cpp | 30 +- src/mame/drivers/itt3030.cpp | 70 +- src/mame/drivers/jack.cpp | 2 +- src/mame/drivers/jackal.cpp | 58 +- src/mame/drivers/jackie.cpp | 18 +- src/mame/drivers/jackpool.cpp | 4 +- src/mame/drivers/jade.cpp | 12 +- src/mame/drivers/jaguar.cpp | 14 +- src/mame/drivers/jailbrek.cpp | 8 +- src/mame/drivers/jalmah.cpp | 14 +- src/mame/drivers/jangou.cpp | 38 +- src/mame/drivers/jankenmn.cpp | 8 +- src/mame/drivers/jantotsu.cpp | 6 +- src/mame/drivers/jchan.cpp | 6 +- src/mame/drivers/jclub2.cpp | 2021 ++++++++++-------- src/mame/drivers/jedi.cpp | 4 +- src/mame/drivers/jeutel.cpp | 11 +- src/mame/drivers/joctronic.cpp | 14 +- src/mame/drivers/jokrwild.cpp | 4 +- src/mame/drivers/jollyjgr.cpp | 9 +- src/mame/drivers/jongkyo.cpp | 2 +- src/mame/drivers/jonos.cpp | 6 +- src/mame/drivers/joystand.cpp | 6 +- src/mame/drivers/jp.cpp | 26 +- src/mame/drivers/jpmimpct.cpp | 38 +- src/mame/drivers/jpmimpctsw.cpp | 2212 ++++++++++---------- src/mame/drivers/jpmmps.cpp | 418 ++-- src/mame/drivers/jpms80.cpp | 18 +- src/mame/drivers/jpmsru.cpp | 28 +- src/mame/drivers/jpmsys5.cpp | 16 +- src/mame/drivers/jpmsys5sw.cpp | 372 ++-- src/mame/drivers/jpmsys7.cpp | 26 +- src/mame/drivers/jr100.cpp | 8 +- src/mame/drivers/jr200.cpp | 8 +- src/mame/drivers/jrpacman.cpp | 2 +- src/mame/drivers/jtc.cpp | 18 +- src/mame/drivers/jubilee.cpp | 6 +- src/mame/drivers/juicebox.cpp | 4 +- src/mame/drivers/jungleyo.cpp | 6 +- src/mame/drivers/junior.cpp | 23 +- src/mame/drivers/junofrst.cpp | 8 +- src/mame/drivers/jupace.cpp | 6 +- src/mame/drivers/jupiter.cpp | 16 +- src/mame/drivers/jvh.cpp | 4 +- src/mame/drivers/k1003.cpp | 6 +- src/mame/drivers/k28.cpp | 27 +- src/mame/drivers/k8915.cpp | 12 +- src/mame/drivers/kaneko16.cpp | 36 +- src/mame/drivers/kangaroo.cpp | 10 +- src/mame/drivers/karnov.cpp | 26 +- src/mame/drivers/kas89.cpp | 4 +- src/mame/drivers/kaypro.cpp | 26 +- src/mame/drivers/kc.cpp | 14 +- src/mame/drivers/kchamp.cpp | 10 +- src/mame/drivers/kenseim.cpp | 2 +- src/mame/drivers/kickgoal.cpp | 12 +- src/mame/drivers/kim1.cpp | 6 +- src/mame/drivers/kingdrby.cpp | 12 +- src/mame/drivers/kingobox.cpp | 235 ++- src/mame/drivers/kingpin.cpp | 6 +- src/mame/drivers/kinst.cpp | 9 +- src/mame/drivers/kissproto.cpp | 4 +- src/mame/drivers/klax.cpp | 32 +- src/mame/drivers/kncljoe.cpp | 8 +- src/mame/drivers/koftball.cpp | 8 +- src/mame/drivers/koikoi.cpp | 4 +- src/mame/drivers/konamigq.cpp | 6 +- src/mame/drivers/konamigv.cpp | 36 +- src/mame/drivers/konamigx.cpp | 26 +- src/mame/drivers/konamim2.cpp | 6 +- src/mame/drivers/konendev.cpp | 2 +- src/mame/drivers/konin.cpp | 6 +- src/mame/drivers/konmedal.cpp | 8 +- src/mame/drivers/kontest.cpp | 4 +- src/mame/drivers/kopunch.cpp | 4 +- src/mame/drivers/kramermc.cpp | 6 +- src/mame/drivers/kron.cpp | 6 +- src/mame/drivers/ksayakyu.cpp | 7 +- src/mame/drivers/ksys573.cpp | 236 +-- src/mame/drivers/kungfur.cpp | 8 +- src/mame/drivers/kurukuru.cpp | 14 +- src/mame/drivers/kyocera.cpp | 28 +- src/mame/drivers/kyugo.cpp | 42 +- src/mame/drivers/labyrunr.cpp | 8 +- src/mame/drivers/ladybug.cpp | 16 +- src/mame/drivers/ladyfrog.cpp | 8 +- src/mame/drivers/laser3k.cpp | 6 +- src/mame/drivers/laserbas.cpp | 8 +- src/mame/drivers/laserbat.cpp | 18 +- src/mame/drivers/lasso.cpp | 16 +- src/mame/drivers/lastbank.cpp | 14 +- src/mame/drivers/lastduel.cpp | 28 +- src/mame/drivers/lastfght.cpp | 2 +- src/mame/drivers/laz_aftrshok.cpp | 8 +- src/mame/drivers/laz_awetoss.cpp | 6 +- src/mame/drivers/laz_ribrac.cpp | 6 +- src/mame/drivers/lazercmd.cpp | 6 +- src/mame/drivers/lb186.cpp | 21 +- src/mame/drivers/lbeach.cpp | 4 +- src/mame/drivers/lc80.cpp | 12 +- src/mame/drivers/lcmate2.cpp | 6 +- src/mame/drivers/ldplayer.cpp | 14 +- src/mame/drivers/leapster.cpp | 8 +- src/mame/drivers/legionna.cpp | 86 +- src/mame/drivers/leland.cpp | 6 +- src/mame/drivers/lemmings.cpp | 8 +- src/mame/drivers/lethal.cpp | 39 +- src/mame/drivers/lethalj.cpp | 24 +- src/mame/drivers/lft.cpp | 17 +- src/mame/drivers/lg-dvd.cpp | 12 +- src/mame/drivers/lgp.cpp | 8 +- src/mame/drivers/liberate.cpp | 4 +- src/mame/drivers/liberatr.cpp | 6 +- src/mame/drivers/limenko.cpp | 16 +- src/mame/drivers/lindbergh.cpp | 40 +- src/mame/drivers/lisa.cpp | 12 +- src/mame/drivers/littlerb.cpp | 4 +- src/mame/drivers/lkage.cpp | 18 +- src/mame/drivers/llc.cpp | 29 +- src/mame/drivers/lockon.cpp | 8 +- src/mame/drivers/lola8a.cpp | 6 +- src/mame/drivers/looping.cpp | 2 +- src/mame/drivers/lordgun.cpp | 16 +- src/mame/drivers/lsasquad.cpp | 10 +- src/mame/drivers/ltcasino.cpp | 8 +- src/mame/drivers/ltd.cpp | 11 +- src/mame/drivers/luckgrln.cpp | 206 +- src/mame/drivers/lucky74.cpp | 16 +- src/mame/drivers/lvcards.cpp | 8 +- src/mame/drivers/lviv.cpp | 6 +- src/mame/drivers/lwings.cpp | 42 +- src/mame/drivers/lwriter.cpp | 6 +- src/mame/drivers/lynx.cpp | 8 +- src/mame/drivers/m10.cpp | 26 +- src/mame/drivers/m107.cpp | 36 +- src/mame/drivers/m14.cpp | 135 +- src/mame/drivers/m20.cpp | 16 +- src/mame/drivers/m24.cpp | 15 +- src/mame/drivers/m5.cpp | 14 +- src/mame/drivers/m52.cpp | 10 +- src/mame/drivers/m57.cpp | 6 +- src/mame/drivers/m58.cpp | 16 +- src/mame/drivers/m62.cpp | 46 +- src/mame/drivers/m63.cpp | 14 +- src/mame/drivers/m6805evs.cpp | 6 +- src/mame/drivers/m68705prg.cpp | 20 +- src/mame/drivers/m72.cpp | 68 +- src/mame/drivers/m79152pc.cpp | 6 +- src/mame/drivers/m79amb.cpp | 2 +- src/mame/drivers/m90.cpp | 38 +- src/mame/drivers/m92.cpp | 4 +- src/mame/drivers/mac.cpp | 106 +- src/mame/drivers/mac128.cpp | 47 +- src/mame/drivers/macp.cpp | 34 +- src/mame/drivers/macpci.cpp | 6 +- src/mame/drivers/macrossp.cpp | 4 +- src/mame/drivers/macs.cpp | 16 +- src/mame/drivers/madalien.cpp | 8 +- src/mame/drivers/madmotor.cpp | 6 +- src/mame/drivers/magic10.cpp | 6 +- src/mame/drivers/magicard.cpp | 4 +- src/mame/drivers/magicfly.cpp | 10 +- src/mame/drivers/magictg.cpp | 6 +- src/mame/drivers/magmax.cpp | 4 +- src/mame/drivers/magnum.cpp | 19 +- src/mame/drivers/magtouch.cpp | 4 +- src/mame/drivers/mainevt.cpp | 20 +- src/mame/drivers/mainsnk.cpp | 6 +- src/mame/drivers/majorpkr.cpp | 4 +- src/mame/drivers/malzak.cpp | 6 +- src/mame/drivers/manohman.cpp | 12 +- src/mame/drivers/mappy.cpp | 78 +- src/mame/drivers/marineb.cpp | 22 +- src/mame/drivers/marinedt.cpp | 4 +- src/mame/drivers/mario.cpp | 12 +- src/mame/drivers/markham.cpp | 4 +- src/mame/drivers/marywu.cpp | 6 +- src/mame/drivers/mastboy.cpp | 10 +- src/mame/drivers/matmania.cpp | 12 +- src/mame/drivers/maxaflex.cpp | 22 +- src/mame/drivers/maygay1b.cpp | 2 +- src/mame/drivers/maygayep.cpp | 2 +- src/mame/drivers/maygaysw.cpp | 22 +- src/mame/drivers/maygayv1.cpp | 8 +- src/mame/drivers/mayumi.cpp | 440 ---- src/mame/drivers/mazerbla.cpp | 12 +- src/mame/drivers/mbc200.cpp | 16 +- src/mame/drivers/mbc55x.cpp | 8 +- src/mame/drivers/mbee.cpp | 12 +- src/mame/drivers/mc10.cpp | 14 +- src/mame/drivers/mc1000.cpp | 6 +- src/mame/drivers/mc1502.cpp | 22 +- src/mame/drivers/mc80.cpp | 10 +- src/mame/drivers/mcatadv.cpp | 16 +- src/mame/drivers/mcb216.cpp | 18 +- src/mame/drivers/mccpm.cpp | 12 +- src/mame/drivers/mcr.cpp | 2 +- src/mame/drivers/mcr3.cpp | 2 +- src/mame/drivers/mcr68.cpp | 2 +- src/mame/drivers/meadows.cpp | 12 +- src/mame/drivers/meadwttl.cpp | 12 +- src/mame/drivers/mediagx.cpp | 2 +- src/mame/drivers/megadriv.cpp | 41 +- src/mame/drivers/megadrvb.cpp | 6 +- src/mame/drivers/megaphx.cpp | 452 ++-- src/mame/drivers/megaplay.cpp | 92 +- src/mame/drivers/megasys1.cpp | 46 +- src/mame/drivers/megatech.cpp | 85 +- src/mame/drivers/megazone.cpp | 18 +- src/mame/drivers/meijinsn.cpp | 4 +- src/mame/drivers/mekd2.cpp | 6 +- src/mame/drivers/mephisto.cpp | 4 +- src/mame/drivers/mephistp.cpp | 8 +- src/mame/drivers/merit.cpp | 52 +- src/mame/drivers/meritm.cpp | 112 +- src/mame/drivers/mermaid.cpp | 12 +- src/mame/drivers/mes.cpp | 8 +- src/mame/drivers/metalmx.cpp | 2 +- src/mame/drivers/metlclsh.cpp | 4 +- src/mame/drivers/metlfrzr.cpp | 2 +- src/mame/drivers/metro.cpp | 228 +- src/mame/drivers/mexico86.cpp | 14 +- src/mame/drivers/meyc8080.cpp | 12 +- src/mame/drivers/meyc8088.cpp | 10 +- src/mame/drivers/mgames.cpp | 6 +- src/mame/drivers/mgavegas.cpp | 16 +- src/mame/drivers/mgolf.cpp | 4 +- src/mame/drivers/mhavoc.cpp | 12 +- src/mame/drivers/mice.cpp | 19 +- src/mame/drivers/micral.cpp | 6 +- src/mame/drivers/micro20.cpp | 14 +- src/mame/drivers/micro3d.cpp | 13 +- src/mame/drivers/microdec.cpp | 10 +- src/mame/drivers/microkit.cpp | 6 +- src/mame/drivers/micronic.cpp | 6 +- src/mame/drivers/micropin.cpp | 4 +- src/mame/drivers/microtan.cpp | 6 +- src/mame/drivers/microvsn.cpp | 26 +- src/mame/drivers/midas.cpp | 14 +- src/mame/drivers/midqslvr.cpp | 12 +- src/mame/drivers/midtunit.cpp | 2 +- src/mame/drivers/midvunit.cpp | 6 +- src/mame/drivers/midwunit.cpp | 2 +- src/mame/drivers/midxunit.cpp | 2 +- src/mame/drivers/midyunit.cpp | 71 +- src/mame/drivers/midzeus.cpp | 465 ++-- src/mame/drivers/mikie.cpp | 8 +- src/mame/drivers/mikro80.cpp | 10 +- src/mame/drivers/mikromik.cpp | 12 +- src/mame/drivers/mikrosha.cpp | 8 +- src/mame/drivers/mil4000.cpp | 18 +- src/mame/drivers/mini2440.cpp | 4 +- src/mame/drivers/miniboy7.cpp | 8 +- src/mame/drivers/minicom.cpp | 8 +- src/mame/drivers/miniforce.cpp | 6 +- src/mame/drivers/minitel_2_rpic.cpp | 449 ++++ src/mame/drivers/minivadr.cpp | 4 +- src/mame/drivers/mirage.cpp | 8 +- src/mame/drivers/mirax.cpp | 4 +- src/mame/drivers/missb2.cpp | 21 +- src/mame/drivers/missile.cpp | 20 +- src/mame/drivers/mitchell.cpp | 87 +- src/mame/drivers/mits680b.cpp | 21 +- src/mame/drivers/mjkjidai.cpp | 6 +- src/mame/drivers/mjsenpu.cpp | 4 +- src/mame/drivers/mjsister.cpp | 10 +- src/mame/drivers/mk1.cpp | 6 +- src/mame/drivers/mk14.cpp | 6 +- src/mame/drivers/mk2.cpp | 6 +- src/mame/drivers/mk85.cpp | 6 +- src/mame/drivers/mk90.cpp | 6 +- src/mame/drivers/mkit09.cpp | 10 +- src/mame/drivers/mlanding.cpp | 13 +- src/mame/drivers/mmagic.cpp | 6 +- src/mame/drivers/mmd1.cpp | 14 +- src/mame/drivers/mmm.cpp | 4 +- src/mame/drivers/mmodular.cpp | 52 +- src/mame/drivers/mod8.cpp | 12 +- src/mame/drivers/model1.cpp | 161 +- src/mame/drivers/model2.cpp | 416 ++-- src/mame/drivers/model3.cpp | 77 +- src/mame/drivers/modellot.cpp | 10 +- src/mame/drivers/mogura.cpp | 4 +- src/mame/drivers/mole.cpp | 4 +- src/mame/drivers/molecular.cpp | 4 +- src/mame/drivers/momoko.cpp | 8 +- src/mame/drivers/monacogp.cpp | 76 +- src/mame/drivers/monty.cpp | 8 +- src/mame/drivers/monzagp.cpp | 11 +- src/mame/drivers/moo.cpp | 99 +- src/mame/drivers/mosaic.cpp | 8 +- src/mame/drivers/mouser.cpp | 4 +- src/mame/drivers/mpf1.cpp | 12 +- src/mame/drivers/mps1230.cpp | 8 +- src/mame/drivers/mpu12wbk.cpp | 4 +- src/mame/drivers/mpu2.cpp | 6 +- src/mame/drivers/mpu3.cpp | 80 +- src/mame/drivers/mpu4.cpp | 2 +- src/mame/drivers/mpu4dealem.cpp | 4 +- src/mame/drivers/mpu4plasma.cpp | 16 +- src/mame/drivers/mpu4vid.cpp | 110 +- src/mame/drivers/mpu5.cpp | 4 +- src/mame/drivers/mpu5.hxx | 1260 +++++------ src/mame/drivers/mpz80.cpp | 6 +- src/mame/drivers/mquake.cpp | 2 +- src/mame/drivers/mrdo.cpp | 16 +- src/mame/drivers/mrflea.cpp | 4 +- src/mame/drivers/mrgame.cpp | 8 +- src/mame/drivers/mrjong.cpp | 8 +- src/mame/drivers/ms0515.cpp | 48 +- src/mame/drivers/ms32.cpp | 22 +- src/mame/drivers/ms9540.cpp | 12 +- src/mame/drivers/msbc1.cpp | 6 +- src/mame/drivers/msisaac.cpp | 4 +- src/mame/drivers/mstation.cpp | 6 +- src/mame/drivers/msx.cpp | 500 ++--- src/mame/drivers/mt735.cpp | 4 +- src/mame/drivers/mtouchxl.cpp | 382 ++++ src/mame/drivers/mtx.cpp | 12 +- src/mame/drivers/mugsmash.cpp | 6 +- src/mame/drivers/multfish.cpp | 230 +- src/mame/drivers/multfish_boot.cpp | 248 +-- src/mame/drivers/multi16.cpp | 6 +- src/mame/drivers/multi8.cpp | 6 +- src/mame/drivers/multigam.cpp | 18 +- src/mame/drivers/munchmo.cpp | 12 +- src/mame/drivers/murogem.cpp | 10 +- src/mame/drivers/murogmbl.cpp | 4 +- src/mame/drivers/mustache.cpp | 2 +- src/mame/drivers/mvme147.cpp | 18 +- src/mame/drivers/mw18w.cpp | 6 +- src/mame/drivers/mw8080bw.cpp | 65 +- src/mame/drivers/mwarr.cpp | 8 +- src/mame/drivers/mwsub.cpp | 4 +- src/mame/drivers/mx2178.cpp | 12 +- src/mame/drivers/myb3k.cpp | 39 +- src/mame/drivers/mycom.cpp | 10 +- src/mame/drivers/mystston.cpp | 8 +- src/mame/drivers/mystwarr.cpp | 150 +- src/mame/drivers/myvision.cpp | 6 +- src/mame/drivers/mz2000.cpp | 12 +- src/mame/drivers/mz2500.cpp | 8 +- src/mame/drivers/mz3500.cpp | 4 +- src/mame/drivers/mz6500.cpp | 6 +- src/mame/drivers/mz700.cpp | 10 +- src/mame/drivers/mz80.cpp | 8 +- src/mame/drivers/mzr8105.cpp | 6 +- src/mame/drivers/n64.cpp | 8 +- src/mame/drivers/n8080.cpp | 34 +- src/mame/drivers/nakajies.cpp | 18 +- src/mame/drivers/namcofl.cpp | 64 +- src/mame/drivers/namcona1.cpp | 44 +- src/mame/drivers/namconb1.cpp | 151 +- src/mame/drivers/namcond1.cpp | 12 +- src/mame/drivers/namcops2.cpp | 106 +- src/mame/drivers/namcos1.cpp | 4 +- src/mame/drivers/namcos10.cpp | 4 +- src/mame/drivers/namcos11.cpp | 111 +- src/mame/drivers/namcos12.cpp | 214 +- src/mame/drivers/namcos2.cpp | 70 +- src/mame/drivers/namcos21.cpp | 16 +- src/mame/drivers/namcos22.cpp | 4 +- src/mame/drivers/namcos23.cpp | 22 +- src/mame/drivers/namcos86.cpp | 4 +- src/mame/drivers/nanos.cpp | 6 +- src/mame/drivers/naomi.cpp | 171 +- src/mame/drivers/nascom1.cpp | 32 +- src/mame/drivers/naughtyb.cpp | 26 +- src/mame/drivers/nbmj8688.cpp | 84 +- src/mame/drivers/nbmj8891.cpp | 87 +- src/mame/drivers/nbmj8900.cpp | 2 +- src/mame/drivers/nbmj8991.cpp | 34 +- src/mame/drivers/nbmj9195.cpp | 74 +- src/mame/drivers/nc.cpp | 4 +- src/mame/drivers/nemesis.cpp | 66 +- src/mame/drivers/neogeo.cpp | 11 +- src/mame/drivers/neogeocd.cpp | 11 +- src/mame/drivers/neopcb.cpp | 2 +- src/mame/drivers/neoprint.cpp | 15 +- src/mame/drivers/neptunp2.cpp | 4 +- src/mame/drivers/nes.cpp | 132 +- src/mame/drivers/newbrain.cpp | 10 +- src/mame/drivers/news.cpp | 8 +- src/mame/drivers/next.cpp | 28 +- src/mame/drivers/nexus3d.cpp | 6 +- src/mame/drivers/ngen.cpp | 12 +- src/mame/drivers/ngp.cpp | 8 +- src/mame/drivers/nibble.cpp | 6 +- src/mame/drivers/nightgal.cpp | 23 +- src/mame/drivers/ninjakd2.cpp | 33 +- src/mame/drivers/ninjaw.cpp | 14 +- src/mame/drivers/nitedrvr.cpp | 4 +- src/mame/drivers/niyanpai.cpp | 2 +- src/mame/drivers/nmg5.cpp | 4 +- src/mame/drivers/nmk16.cpp | 286 +-- src/mame/drivers/nokia_3310.cpp | 28 +- src/mame/drivers/norautp.cpp | 82 +- src/mame/drivers/notetaker.cpp | 11 +- src/mame/drivers/nova2001.cpp | 22 +- src/mame/drivers/novag6502.cpp | 46 +- src/mame/drivers/novag68k.cpp | 91 +- src/mame/drivers/novagmcs48.cpp | 196 ++ src/mame/drivers/nsm.cpp | 4 +- src/mame/drivers/nsmpoker.cpp | 6 +- src/mame/drivers/nss.cpp | 4 +- src/mame/drivers/nwk-tr.cpp | 12 +- src/mame/drivers/nycaptor.cpp | 12 +- src/mame/drivers/nyny.cpp | 32 +- src/mame/drivers/ob68k1a.cpp | 6 +- src/mame/drivers/octopus.cpp | 14 +- src/mame/drivers/odyssey2.cpp | 67 +- src/mame/drivers/offtwall.cpp | 2 +- src/mame/drivers/ohmygod.cpp | 8 +- src/mame/drivers/ojankohs.cpp | 55 +- src/mame/drivers/okean240.cpp | 39 +- src/mame/drivers/olibochu.cpp | 4 +- src/mame/drivers/omegrace.cpp | 2 +- src/mame/drivers/ondra.cpp | 8 +- src/mame/drivers/oneshot.cpp | 29 +- src/mame/drivers/onetwo.cpp | 8 +- src/mame/drivers/onyx.cpp | 12 +- src/mame/drivers/opwolf.cpp | 28 +- src/mame/drivers/orao.cpp | 8 +- src/mame/drivers/orbit.cpp | 4 +- src/mame/drivers/oric.cpp | 26 +- src/mame/drivers/orion.cpp | 22 +- src/mame/drivers/osbexec.cpp | 108 +- src/mame/drivers/osborne1.cpp | 10 +- src/mame/drivers/osi.cpp | 20 +- src/mame/drivers/othello.cpp | 29 +- src/mame/drivers/othunder.cpp | 16 +- src/mame/drivers/otomedius.cpp | 97 + src/mame/drivers/overdriv.cpp | 12 +- src/mame/drivers/p112.cpp | 6 +- src/mame/drivers/p2000t.cpp | 10 +- src/mame/drivers/p8k.cpp | 22 +- src/mame/drivers/pachifev.cpp | 4 +- src/mame/drivers/pacland.cpp | 12 +- src/mame/drivers/pacman.cpp | 136 +- src/mame/drivers/palm.cpp | 36 +- src/mame/drivers/palmz22.cpp | 4 +- src/mame/drivers/pandoras.cpp | 8 +- src/mame/drivers/pangofun.cpp | 2 +- src/mame/drivers/panicr.cpp | 2 +- src/mame/drivers/paradise.cpp | 71 +- src/mame/drivers/paranoia.cpp | 6 +- src/mame/drivers/parodius.cpp | 10 +- src/mame/drivers/partner.cpp | 10 +- src/mame/drivers/pasha2.cpp | 35 +- src/mame/drivers/paso1600.cpp | 6 +- src/mame/drivers/pasogo.cpp | 7 +- src/mame/drivers/pasopia.cpp | 10 +- src/mame/drivers/pasopia7.cpp | 11 +- src/mame/drivers/pass.cpp | 6 +- src/mame/drivers/pastelg.cpp | 10 +- src/mame/drivers/patapata.cpp | 343 +++ src/mame/drivers/patinho_feio.cpp | 30 +- src/mame/drivers/pb1000.cpp | 10 +- src/mame/drivers/pbaction.cpp | 10 +- src/mame/drivers/pc.cpp | 62 +- src/mame/drivers/pc100.cpp | 6 +- src/mame/drivers/pc1500.cpp | 6 +- src/mame/drivers/pc1512.cpp | 30 +- src/mame/drivers/pc2000.cpp | 44 +- src/mame/drivers/pc4.cpp | 6 +- src/mame/drivers/pc6001.cpp | 14 +- src/mame/drivers/pc8001.cpp | 10 +- src/mame/drivers/pc8401a.cpp | 10 +- src/mame/drivers/pc8801.cpp | 38 +- src/mame/drivers/pc88va.cpp | 8 +- src/mame/drivers/pc9801.cpp | 36 +- src/mame/drivers/pcat_dyn.cpp | 6 +- src/mame/drivers/pcat_nit.cpp | 4 +- src/mame/drivers/pcd.cpp | 12 +- src/mame/drivers/pce.cpp | 14 +- src/mame/drivers/pce220.cpp | 14 +- src/mame/drivers/pcfx.cpp | 10 +- src/mame/drivers/pcipc.cpp | 8 +- src/mame/drivers/pcktgal.cpp | 6 +- src/mame/drivers/pcm.cpp | 6 +- src/mame/drivers/pcw.cpp | 65 +- src/mame/drivers/pcw16.cpp | 6 +- src/mame/drivers/pcxt.cpp | 17 +- src/mame/drivers/pda600.cpp | 6 +- src/mame/drivers/pdp1.cpp | 36 +- src/mame/drivers/pdp11.cpp | 18 +- src/mame/drivers/pecom.cpp | 10 +- src/mame/drivers/pegasus.cpp | 8 +- src/mame/drivers/pencil2.cpp | 6 +- src/mame/drivers/pengadvb.cpp | 4 +- src/mame/drivers/pengo.cpp | 18 +- src/mame/drivers/pentagon.cpp | 8 +- src/mame/drivers/peoplepc.cpp | 4 +- src/mame/drivers/peplus.cpp | 33 +- src/mame/drivers/pes.cpp | 10 +- src/mame/drivers/pet.cpp | 84 +- src/mame/drivers/peyper.cpp | 28 +- src/mame/drivers/pg685.cpp | 20 +- src/mame/drivers/pgm.cpp | 72 +- src/mame/drivers/pgm2.cpp | 8 +- src/mame/drivers/pgm3.cpp | 19 +- src/mame/drivers/phc25.cpp | 24 +- src/mame/drivers/phoenix.cpp | 111 +- src/mame/drivers/photon.cpp | 8 +- src/mame/drivers/photon2.cpp | 14 +- src/mame/drivers/photoply.cpp | 2 +- src/mame/drivers/phunsy.cpp | 10 +- src/mame/drivers/piggypas.cpp | 18 +- src/mame/drivers/pimps.cpp | 12 +- src/mame/drivers/pinball2k.cpp | 2 +- src/mame/drivers/pingpong.cpp | 8 +- src/mame/drivers/pinkiri8.cpp | 16 +- src/mame/drivers/pipbug.cpp | 6 +- src/mame/drivers/pipedrm.cpp | 29 +- src/mame/drivers/pipeline.cpp | 4 +- src/mame/drivers/pirates.cpp | 8 +- src/mame/drivers/piratesh.cpp | 679 ++++++ src/mame/drivers/pitagjr.cpp | 6 +- src/mame/drivers/pitnrun.cpp | 6 +- src/mame/drivers/pk8000.cpp | 10 +- src/mame/drivers/pk8020.cpp | 12 +- src/mame/drivers/pkscram.cpp | 4 +- src/mame/drivers/pktgaldx.cpp | 14 +- src/mame/drivers/plan80.cpp | 6 +- src/mame/drivers/play_1.cpp | 12 +- src/mame/drivers/play_2.cpp | 24 +- src/mame/drivers/play_3.cpp | 48 +- src/mame/drivers/playch10.cpp | 8 +- src/mame/drivers/playmark.cpp | 38 +- src/mame/drivers/plus4.cpp | 32 +- src/mame/drivers/pluto5.cpp | 4 +- src/mame/drivers/plygonet.cpp | 10 +- src/mame/drivers/pm68k.cpp | 12 +- src/mame/drivers/pmd85.cpp | 22 +- src/mame/drivers/pmi80.cpp | 6 +- src/mame/drivers/pntnpuzl.cpp | 2 +- src/mame/drivers/pockchal.cpp | 6 +- src/mame/drivers/pocketc.cpp | 46 +- src/mame/drivers/pockstat.cpp | 6 +- src/mame/drivers/pofo.cpp | 12 +- src/mame/drivers/poisk1.cpp | 53 +- src/mame/drivers/pokechmp.cpp | 4 +- src/mame/drivers/pokemini.cpp | 4 +- src/mame/drivers/poker72.cpp | 2 +- src/mame/drivers/polepos.cpp | 26 +- src/mame/drivers/policetr.cpp | 24 +- src/mame/drivers/poly.cpp | 12 +- src/mame/drivers/poly88.cpp | 8 +- src/mame/drivers/poly880.cpp | 6 +- src/mame/drivers/polyplay.cpp | 10 +- src/mame/drivers/pong.cpp | 38 +- src/mame/drivers/poolshrk.cpp | 2 +- src/mame/drivers/pooyan.cpp | 8 +- src/mame/drivers/popeye.cpp | 14 +- src/mame/drivers/popobear.cpp | 6 +- src/mame/drivers/popper.cpp | 156 +- src/mame/drivers/portrait.cpp | 6 +- src/mame/drivers/potgoldu.cpp | 6 +- src/mame/drivers/powerbal.cpp | 12 +- src/mame/drivers/powerins.cpp | 16 +- src/mame/drivers/pp01.cpp | 6 +- src/mame/drivers/ppmast93.cpp | 4 +- src/mame/drivers/prehisle.cpp | 57 +- src/mame/drivers/prestige.cpp | 44 +- src/mame/drivers/primo.cpp | 18 +- src/mame/drivers/pro80.cpp | 6 +- src/mame/drivers/proconn.cpp | 4 +- src/mame/drivers/prodigy.cpp | 12 +- src/mame/drivers/prof180x.cpp | 8 +- src/mame/drivers/prof80.cpp | 6 +- src/mame/drivers/progolf.cpp | 6 +- src/mame/drivers/prophet600.cpp | 2 +- src/mame/drivers/proteus3.cpp | 12 +- src/mame/drivers/ps2.cpp | 22 +- src/mame/drivers/pse.cpp | 18 +- src/mame/drivers/psikyo.cpp | 50 +- src/mame/drivers/psikyo4.cpp | 20 +- src/mame/drivers/psikyosh.cpp | 32 +- src/mame/drivers/psion.cpp | 28 +- src/mame/drivers/psx.cpp | 22 +- src/mame/drivers/psychic5.cpp | 10 +- src/mame/drivers/pt68k4.cpp | 22 +- src/mame/drivers/ptcsol.cpp | 10 +- src/mame/drivers/pturn.cpp | 2 +- src/mame/drivers/puckpkmn.cpp | 6 +- src/mame/drivers/pulsar.cpp | 10 +- src/mame/drivers/punchout.cpp | 22 +- src/mame/drivers/pv1000.cpp | 14 +- src/mame/drivers/pv2000.cpp | 6 +- src/mame/drivers/pv9234.cpp | 22 +- src/mame/drivers/pve500.cpp | 6 +- src/mame/drivers/pwrview.cpp | 150 +- src/mame/drivers/px4.cpp | 4 +- src/mame/drivers/px8.cpp | 6 +- src/mame/drivers/pyl601.cpp | 6 +- src/mame/drivers/pyson.cpp | 8 +- src/mame/drivers/pzletime.cpp | 6 +- src/mame/drivers/qdrmfgp.cpp | 13 +- src/mame/drivers/qix.cpp | 38 +- src/mame/drivers/ql.cpp | 45 +- src/mame/drivers/qtsbc.cpp | 12 +- src/mame/drivers/quakeat.cpp | 4 +- src/mame/drivers/quantum.cpp | 8 +- src/mame/drivers/quasar.cpp | 14 +- src/mame/drivers/queen.cpp | 4 +- src/mame/drivers/quizdna.cpp | 10 +- src/mame/drivers/quizo.cpp | 2 +- src/mame/drivers/quizpani.cpp | 6 +- src/mame/drivers/quizpun2.cpp | 6 +- src/mame/drivers/quizshow.cpp | 2 +- src/mame/drivers/qx10.cpp | 6 +- src/mame/drivers/r2dtank.cpp | 4 +- src/mame/drivers/r2dx_v33.cpp | 8 +- src/mame/drivers/r9751.cpp | 14 +- src/mame/drivers/rabbit.cpp | 7 +- src/mame/drivers/radio86.cpp | 26 +- src/mame/drivers/raiden.cpp | 37 +- src/mame/drivers/raiden2.cpp | 10 +- src/mame/drivers/rainbow.cpp | 20 +- src/mame/drivers/rallyx.cpp | 38 +- src/mame/drivers/rambo.cpp | 6 +- src/mame/drivers/rampart.cpp | 6 +- src/mame/drivers/ramtek.cpp | 18 +- src/mame/drivers/rastan.cpp | 79 +- src/mame/drivers/rastersp.cpp | 6 +- src/mame/drivers/ravens.cpp | 16 +- src/mame/drivers/rbisland.cpp | 12 +- src/mame/drivers/rbmk.cpp | 6 +- src/mame/drivers/rc702.cpp | 12 +- src/mame/drivers/rc759.cpp | 64 +- src/mame/drivers/rcorsair.cpp | 4 +- src/mame/drivers/rd100.cpp | 6 +- src/mame/drivers/rd110.cpp | 4 +- src/mame/drivers/re900.cpp | 8 +- src/mame/drivers/realbrk.cpp | 24 +- src/mame/drivers/redalert.cpp | 16 +- src/mame/drivers/redclash.cpp | 24 +- src/mame/drivers/relief.cpp | 4 +- src/mame/drivers/renegade.cpp | 4 +- src/mame/drivers/replicator.cpp | 6 +- src/mame/drivers/retofinv.cpp | 8 +- src/mame/drivers/rex6000.cpp | 12 +- src/mame/drivers/rgum.cpp | 4 +- src/mame/drivers/risc2500.cpp | 10 +- src/mame/drivers/riscpc.cpp | 24 +- src/mame/drivers/rltennis.cpp | 4 +- src/mame/drivers/rm380z.cpp | 22 +- src/mame/drivers/rmhaihai.cpp | 73 +- src/mame/drivers/rmnimbus.cpp | 14 +- src/mame/drivers/rmt32.cpp | 6 +- src/mame/drivers/rockrage.cpp | 8 +- src/mame/drivers/rocnrope.cpp | 4 +- src/mame/drivers/rohga.cpp | 36 +- src/mame/drivers/rollerg.cpp | 10 +- src/mame/drivers/rollext.cpp | 2 +- src/mame/drivers/rollrace.cpp | 8 +- src/mame/drivers/rotaryf.cpp | 4 +- src/mame/drivers/roul.cpp | 4 +- src/mame/drivers/route16.cpp | 34 +- src/mame/drivers/rowamet.cpp | 6 +- src/mame/drivers/royalmah.cpp | 504 +++-- src/mame/drivers/rpunch.cpp | 26 +- src/mame/drivers/rsc55.cpp | 4 +- src/mame/drivers/rt1715.cpp | 30 +- src/mame/drivers/runaway.cpp | 6 +- src/mame/drivers/rungun.cpp | 58 +- src/mame/drivers/rvoice.cpp | 12 +- src/mame/drivers/rx78.cpp | 2 +- src/mame/drivers/s11.cpp | 20 +- src/mame/drivers/s11a.cpp | 26 +- src/mame/drivers/s11b.cpp | 110 +- src/mame/drivers/s11c.cpp | 2 +- src/mame/drivers/s3.cpp | 16 +- src/mame/drivers/s4.cpp | 36 +- src/mame/drivers/s6.cpp | 24 +- src/mame/drivers/s6a.cpp | 10 +- src/mame/drivers/s7.cpp | 52 +- src/mame/drivers/s8.cpp | 6 +- src/mame/drivers/s8a.cpp | 4 +- src/mame/drivers/s9.cpp | 18 +- src/mame/drivers/sacstate.cpp | 12 +- src/mame/drivers/safarir.cpp | 6 +- src/mame/drivers/sage2.cpp | 6 +- src/mame/drivers/sam.cpp | 398 ++-- src/mame/drivers/samcoupe.cpp | 6 +- src/mame/drivers/sandscrp.cpp | 16 +- src/mame/drivers/sangho.cpp | 16 +- src/mame/drivers/sanremmg.cpp | 4 +- src/mame/drivers/sanremo.cpp | 6 +- src/mame/drivers/sansa_fuze.cpp | 6 +- src/mame/drivers/sapi1.cpp | 24 +- src/mame/drivers/saturn.cpp | 4 +- src/mame/drivers/sauro.cpp | 12 +- src/mame/drivers/savia84.cpp | 6 +- src/mame/drivers/savquest.cpp | 4 +- src/mame/drivers/sbasketb.cpp | 10 +- src/mame/drivers/sbc6510.cpp | 6 +- src/mame/drivers/sbowling.cpp | 4 +- src/mame/drivers/sbrain.cpp | 6 +- src/mame/drivers/sbrkout.cpp | 10 +- src/mame/drivers/sbugger.cpp | 6 +- src/mame/drivers/sc1.cpp | 6 +- src/mame/drivers/sc2.cpp | 6 +- src/mame/drivers/scm_500.cpp | 4 +- src/mame/drivers/scobra.cpp | 44 +- src/mame/drivers/scorpion.cpp | 14 +- src/mame/drivers/scotrsht.cpp | 4 +- src/mame/drivers/scramble.cpp | 6 +- src/mame/drivers/scregg.cpp | 10 +- src/mame/drivers/scv.cpp | 8 +- src/mame/drivers/scyclone.cpp | 690 ++++++ src/mame/drivers/sderby.cpp | 127 +- src/mame/drivers/sdk80.cpp | 6 +- src/mame/drivers/sdk85.cpp | 6 +- src/mame/drivers/sdk86.cpp | 6 +- src/mame/drivers/seabattl.cpp | 6 +- src/mame/drivers/sealy.cpp | 6 +- src/mame/drivers/seattle.cpp | 1387 +++--------- src/mame/drivers/seattlecmp.cpp | 13 +- src/mame/drivers/sega_sawatte.cpp | 4 +- src/mame/drivers/segac2.cpp | 37 +- src/mame/drivers/segacoin.cpp | 4 +- src/mame/drivers/segae.cpp | 126 +- src/mame/drivers/segag80r.cpp | 21 +- src/mame/drivers/segag80v.cpp | 26 +- src/mame/drivers/segahang.cpp | 2 +- src/mame/drivers/segajw.cpp | 143 +- src/mame/drivers/segald.cpp | 14 +- src/mame/drivers/segam1.cpp | 354 +++- src/mame/drivers/segaorun.cpp | 6 +- src/mame/drivers/segapico.cpp | 17 +- src/mame/drivers/segapm.cpp | 6 +- src/mame/drivers/segas16a.cpp | 37 +- src/mame/drivers/segas16b.cpp | 40 +- src/mame/drivers/segas18.cpp | 2 +- src/mame/drivers/segas24.cpp | 387 ++-- src/mame/drivers/segas32.cpp | 1089 +++++----- src/mame/drivers/segasp.cpp | 22 +- src/mame/drivers/segaufo.cpp | 16 +- src/mame/drivers/segaxbd.cpp | 515 ++--- src/mame/drivers/segaybd.cpp | 227 +- src/mame/drivers/seibuspi.cpp | 40 +- src/mame/drivers/seicross.cpp | 16 +- src/mame/drivers/seicupbl.cpp | 10 +- src/mame/drivers/selz80.cpp | 8 +- src/mame/drivers/sengokmj.cpp | 6 +- src/mame/drivers/senjyo.cpp | 198 +- src/mame/drivers/seta.cpp | 222 +- src/mame/drivers/seta2.cpp | 76 +- src/mame/drivers/sf.cpp | 18 +- src/mame/drivers/sfbonus.cpp | 4 +- src/mame/drivers/sfcbox.cpp | 12 +- src/mame/drivers/sfkick.cpp | 2 +- src/mame/drivers/sg1000.cpp | 28 +- src/mame/drivers/sg1000a.cpp | 218 +- src/mame/drivers/sh4robot.cpp | 6 +- src/mame/drivers/shadfrce.cpp | 12 +- src/mame/drivers/shangha3.cpp | 38 +- src/mame/drivers/shanghai.cpp | 16 +- src/mame/drivers/shangkid.cpp | 18 +- src/mame/drivers/shaolins.cpp | 10 +- src/mame/drivers/shisen.cpp | 12 +- src/mame/drivers/shootout.cpp | 4 +- src/mame/drivers/shougi.cpp | 8 +- src/mame/drivers/shtzone.cpp | 4 +- src/mame/drivers/shuuz.cpp | 8 +- src/mame/drivers/sidearms.cpp | 12 +- src/mame/drivers/sidepckt.cpp | 4 +- src/mame/drivers/sigmab52.cpp | 2 +- src/mame/drivers/sigmab98.cpp | 18 +- src/mame/drivers/silkroad.cpp | 10 +- src/mame/drivers/silvmil.cpp | 6 +- src/mame/drivers/simpl156.cpp | 8 +- src/mame/drivers/simple_st0016.cpp | 12 +- src/mame/drivers/simpsons.cpp | 16 +- src/mame/drivers/sitcom.cpp | 10 +- src/mame/drivers/skeetsht.cpp | 6 +- src/mame/drivers/skimaxx.cpp | 12 +- src/mame/drivers/skullxbo.cpp | 2 +- src/mame/drivers/skyarmy.cpp | 4 +- src/mame/drivers/skydiver.cpp | 4 +- src/mame/drivers/skyfox.cpp | 2 +- src/mame/drivers/skykid.cpp | 2 +- src/mame/drivers/skylncr.cpp | 22 +- src/mame/drivers/skyraid.cpp | 4 +- src/mame/drivers/slapfght.cpp | 28 +- src/mame/drivers/slapshot.cpp | 14 +- src/mame/drivers/slc1.cpp | 6 +- src/mame/drivers/sleic.cpp | 10 +- src/mame/drivers/slicer.cpp | 44 +- src/mame/drivers/sliver.cpp | 8 +- src/mame/drivers/slotcarn.cpp | 10 +- src/mame/drivers/sm1800.cpp | 6 +- src/mame/drivers/sm7238.cpp | 14 +- src/mame/drivers/smc777.cpp | 26 +- src/mame/drivers/sms.cpp | 56 +- src/mame/drivers/sms_bootleg.cpp | 8 +- src/mame/drivers/smsmcorp.cpp | 10 +- src/mame/drivers/snes.cpp | 14 +- src/mame/drivers/snesb.cpp | 12 +- src/mame/drivers/snk.cpp | 120 +- src/mame/drivers/snk6502.cpp | 77 +- src/mame/drivers/snk68.cpp | 28 +- src/mame/drivers/snookr10.cpp | 16 +- src/mame/drivers/snowbros.cpp | 92 +- src/mame/drivers/socrates.cpp | 16 +- src/mame/drivers/softbox.cpp | 12 +- src/mame/drivers/solomon.cpp | 6 +- src/mame/drivers/sonson.cpp | 6 +- src/mame/drivers/sorcerer.cpp | 8 +- src/mame/drivers/sothello.cpp | 6 +- src/mame/drivers/spacefb.cpp | 33 +- src/mame/drivers/spaceg.cpp | 4 +- src/mame/drivers/spartanxtec.cpp | 4 +- src/mame/drivers/spbactn.cpp | 14 +- src/mame/drivers/spc1000.cpp | 8 +- src/mame/drivers/spc1500.cpp | 6 +- src/mame/drivers/spcforce.cpp | 25 +- src/mame/drivers/spdodgeb.cpp | 12 +- src/mame/drivers/spec128.cpp | 10 +- src/mame/drivers/special.cpp | 22 +- src/mame/drivers/spectra.cpp | 4 +- src/mame/drivers/spectrum.cpp | 70 +- src/mame/drivers/speedatk.cpp | 4 +- src/mame/drivers/speedbal.cpp | 2 +- src/mame/drivers/speedspn.cpp | 6 +- src/mame/drivers/speglsht.cpp | 2 +- src/mame/drivers/spiders.cpp | 10 +- src/mame/drivers/spinb.cpp | 10 +- src/mame/drivers/splash.cpp | 28 +- src/mame/drivers/splus.cpp | 4 +- src/mame/drivers/spoker.cpp | 71 +- src/mame/drivers/spool99.cpp | 4 +- src/mame/drivers/sprcros2.cpp | 6 +- src/mame/drivers/sprint2.cpp | 4 +- src/mame/drivers/sprint4.cpp | 99 +- src/mame/drivers/sprint8.cpp | 50 +- src/mame/drivers/spy.cpp | 6 +- src/mame/drivers/spyhuntertec.cpp | 2 +- src/mame/drivers/squale.cpp | 13 +- src/mame/drivers/srmp2.cpp | 28 +- src/mame/drivers/srmp5.cpp | 2 +- src/mame/drivers/srmp6.cpp | 4 +- src/mame/drivers/srumbler.cpp | 12 +- src/mame/drivers/ssem.cpp | 6 +- src/mame/drivers/ssfindo.cpp | 8 +- src/mame/drivers/sshangha.cpp | 4 +- src/mame/drivers/sshot.cpp | 6 +- src/mame/drivers/ssingles.cpp | 2 +- src/mame/drivers/sslam.cpp | 14 +- src/mame/drivers/ssozumo.cpp | 4 +- src/mame/drivers/sspeedr.cpp | 6 +- src/mame/drivers/ssrj.cpp | 6 +- src/mame/drivers/sstrangr.cpp | 6 +- src/mame/drivers/ssv.cpp | 8 +- src/mame/drivers/ssystem3.cpp | 4 +- src/mame/drivers/st17xx.cpp | 24 +- src/mame/drivers/st_mp100.cpp | 26 +- src/mame/drivers/st_mp200.cpp | 46 +- src/mame/drivers/stactics.cpp | 4 +- src/mame/drivers/stadhero.cpp | 6 +- src/mame/drivers/starcrus.cpp | 4 +- src/mame/drivers/starfire.cpp | 2 +- src/mame/drivers/stargame.cpp | 8 +- src/mame/drivers/starshp1.cpp | 8 +- src/mame/drivers/starwars.cpp | 2 +- src/mame/drivers/statriv2.cpp | 32 +- src/mame/drivers/stellafr.cpp | 6 +- src/mame/drivers/stfight.cpp | 4 +- src/mame/drivers/stlforce.cpp | 4 +- src/mame/drivers/stratos.cpp | 2 +- src/mame/drivers/strnskil.cpp | 10 +- src/mame/drivers/studio2.cpp | 24 +- src/mame/drivers/stuntair.cpp | 4 +- src/mame/drivers/stv.cpp | 335 ++- src/mame/drivers/su2000.cpp | 4 +- src/mame/drivers/sub.cpp | 4 +- src/mame/drivers/subhuntr.cpp | 4 +- src/mame/drivers/subs.cpp | 4 +- src/mame/drivers/subsino.cpp | 14 +- src/mame/drivers/subsino2.cpp | 16 +- src/mame/drivers/summit.cpp | 4 +- src/mame/drivers/sumt8035.cpp | 6 +- src/mame/drivers/sun1.cpp | 19 +- src/mame/drivers/sun2.cpp | 10 +- src/mame/drivers/sun3.cpp | 18 +- src/mame/drivers/sun3x.cpp | 10 +- src/mame/drivers/sun4.cpp | 39 +- src/mame/drivers/suna16.cpp | 18 +- src/mame/drivers/suna8.cpp | 12 +- src/mame/drivers/supbtime.cpp | 16 +- src/mame/drivers/supdrapo.cpp | 10 +- src/mame/drivers/supduck.cpp | 24 +- src/mame/drivers/super6.cpp | 8 +- src/mame/drivers/super80.cpp | 10 +- src/mame/drivers/superchs.cpp | 4 +- src/mame/drivers/supercrd.cpp | 8 +- src/mame/drivers/superdq.cpp | 8 +- src/mame/drivers/superqix.cpp | 26 +- src/mame/drivers/superslave.cpp | 6 +- src/mame/drivers/supertnk.cpp | 2 +- src/mame/drivers/superwng.cpp | 4 +- src/mame/drivers/supracan.cpp | 6 +- src/mame/drivers/suprgolf.cpp | 10 +- src/mame/drivers/suprloco.cpp | 4 +- src/mame/drivers/suprnova.cpp | 55 +- src/mame/drivers/suprridr.cpp | 4 +- src/mame/drivers/suprslam.cpp | 162 +- src/mame/drivers/supstarf.cpp | 248 +++ src/mame/drivers/surpratk.cpp | 8 +- src/mame/drivers/sv8000.cpp | 6 +- src/mame/drivers/svi318.cpp | 12 +- src/mame/drivers/svision.cpp | 14 +- src/mame/drivers/svmu.cpp | 6 +- src/mame/drivers/swtpc.cpp | 21 +- src/mame/drivers/swtpc09.cpp | 16 +- src/mame/drivers/swyft.cpp | 6 +- src/mame/drivers/sym1.cpp | 6 +- src/mame/drivers/symbolics.cpp | 4 +- src/mame/drivers/sys2900.cpp | 4 +- src/mame/drivers/systec.cpp | 12 +- src/mame/drivers/system1.cpp | 174 +- src/mame/drivers/system16.cpp | 70 +- src/mame/drivers/tagteam.cpp | 6 +- src/mame/drivers/tail2nos.cpp | 19 +- src/mame/drivers/taito.cpp | 72 +- src/mame/drivers/taito_b.cpp | 160 +- src/mame/drivers/taito_f2.cpp | 166 +- src/mame/drivers/taito_f3.cpp | 21 +- src/mame/drivers/taito_h.cpp | 22 +- src/mame/drivers/taito_l.cpp | 88 +- src/mame/drivers/taito_o.cpp | 4 +- src/mame/drivers/taito_x.cpp | 28 +- src/mame/drivers/taito_z.cpp | 88 +- src/mame/drivers/taitoair.cpp | 58 +- src/mame/drivers/taitogn.cpp | 58 +- src/mame/drivers/taitojc.cpp | 4 +- src/mame/drivers/taitopjc.cpp | 4 +- src/mame/drivers/taitosj.cpp | 26 +- src/mame/drivers/taitottl.cpp | 12 +- src/mame/drivers/taitotx.cpp | 8 +- src/mame/drivers/taitotz.cpp | 22 +- src/mame/drivers/taitowlf.cpp | 2 +- src/mame/drivers/tamag1.cpp | 9 +- src/mame/drivers/tandy1t.cpp | 29 +- src/mame/drivers/tandy2k.cpp | 14 +- src/mame/drivers/tank8.cpp | 10 +- src/mame/drivers/tankbatt.cpp | 6 +- src/mame/drivers/tankbust.cpp | 4 +- src/mame/drivers/taotaido.cpp | 56 +- src/mame/drivers/tapatune.cpp | 8 +- src/mame/drivers/targeth.cpp | 8 +- src/mame/drivers/tasman.cpp | 12 +- src/mame/drivers/tatsumi.cpp | 532 ++--- src/mame/drivers/tattack.cpp | 2 +- src/mame/drivers/tavernie.cpp | 18 +- src/mame/drivers/taxidriv.cpp | 4 +- src/mame/drivers/tb303.cpp | 4 +- src/mame/drivers/tbowl.cpp | 12 +- src/mame/drivers/tceptor.cpp | 10 +- src/mame/drivers/tcl.cpp | 16 +- src/mame/drivers/tdv2324.cpp | 6 +- src/mame/drivers/tec1.cpp | 10 +- src/mame/drivers/techno.cpp | 6 +- src/mame/drivers/tecmo.cpp | 22 +- src/mame/drivers/tecmo16.cpp | 12 +- src/mame/drivers/tecmosys.cpp | 6 +- src/mame/drivers/tecnbras.cpp | 6 +- src/mame/drivers/tehkanwc.cpp | 18 +- src/mame/drivers/tek405x.cpp | 14 +- src/mame/drivers/tek410x.cpp | 8 +- src/mame/drivers/tek440x.cpp | 6 +- src/mame/drivers/tekxp33x.cpp | 6 +- src/mame/drivers/tempest.cpp | 14 +- src/mame/drivers/terak.cpp | 6 +- src/mame/drivers/terracre.cpp | 40 +- src/mame/drivers/test_t400.cpp | 8 +- src/mame/drivers/testconsole.cpp | 4 +- src/mame/drivers/tetrisp2.cpp | 38 +- src/mame/drivers/tgtpanic.cpp | 4 +- src/mame/drivers/thayers.cpp | 8 +- src/mame/drivers/thedealr.cpp | 10 +- src/mame/drivers/thedeep.cpp | 6 +- src/mame/drivers/thepit.cpp | 44 +- src/mame/drivers/thief.cpp | 186 +- src/mame/drivers/thomson.cpp | 40 +- src/mame/drivers/thoop2.cpp | 6 +- src/mame/drivers/thunderj.cpp | 2 +- src/mame/drivers/thunderx.cpp | 26 +- src/mame/drivers/ti630.cpp | 6 +- src/mame/drivers/ti74.cpp | 9 +- src/mame/drivers/ti85.cpp | 26 +- src/mame/drivers/ti89.cpp | 14 +- src/mame/drivers/ti990_10.cpp | 8 +- src/mame/drivers/ti990_4.cpp | 18 +- src/mame/drivers/ti99_2.cpp | 8 +- src/mame/drivers/ti99_4p.cpp | 22 +- src/mame/drivers/ti99_4x.cpp | 44 +- src/mame/drivers/ti99_8.cpp | 30 +- src/mame/drivers/tiamc1.cpp | 15 +- src/mame/drivers/ticalc1x.cpp | 184 +- src/mame/drivers/tickee.cpp | 26 +- src/mame/drivers/tigeroad.cpp | 68 +- src/mame/drivers/tiki100.cpp | 8 +- src/mame/drivers/tim011.cpp | 6 +- src/mame/drivers/tim100.cpp | 4 +- src/mame/drivers/timelimt.cpp | 6 +- src/mame/drivers/timeplt.cpp | 16 +- src/mame/drivers/timetrv.cpp | 6 +- src/mame/drivers/timex.cpp | 12 +- src/mame/drivers/tispeak.cpp | 18 +- src/mame/drivers/tispellb.cpp | 12 +- src/mame/drivers/tk2000.cpp | 6 +- src/mame/drivers/tk80.cpp | 16 +- src/mame/drivers/tk80bs.cpp | 12 +- src/mame/drivers/tm990189.cpp | 20 +- src/mame/drivers/tmaster.cpp | 108 +- src/mame/drivers/tmc1800.cpp | 18 +- src/mame/drivers/tmc2000e.cpp | 6 +- src/mame/drivers/tmc600.cpp | 8 +- src/mame/drivers/tmmjprd.cpp | 6 +- src/mame/drivers/tmnt.cpp | 162 +- src/mame/drivers/tmspoker.cpp | 4 +- src/mame/drivers/tnzs.cpp | 109 +- src/mame/drivers/toaplan1.cpp | 96 +- src/mame/drivers/toaplan2.cpp | 297 ++- src/mame/drivers/toki.cpp | 38 +- src/mame/drivers/tokyocop.cpp | 94 - src/mame/drivers/tomcat.cpp | 4 +- src/mame/drivers/tonton.cpp | 6 +- src/mame/drivers/toobin.cpp | 14 +- src/mame/drivers/topspeed.cpp | 12 +- src/mame/drivers/toratora.cpp | 10 +- src/mame/drivers/tosh1000.cpp | 10 +- src/mame/drivers/tourtabl.cpp | 6 +- src/mame/drivers/tourvis.cpp | 8 +- src/mame/drivers/toypop.cpp | 15 +- src/mame/drivers/tp84.cpp | 14 +- src/mame/drivers/tr606.cpp | 4 +- src/mame/drivers/trackfld.cpp | 30 +- src/mame/drivers/tranz330.cpp | 6 +- src/mame/drivers/travrusa.cpp | 12 +- src/mame/drivers/tricep.cpp | 35 +- src/mame/drivers/triforce.cpp | 142 +- src/mame/drivers/triplhnt.cpp | 32 +- src/mame/drivers/trs80.cpp | 70 +- src/mame/drivers/trs80m2.cpp | 22 +- src/mame/drivers/truco.cpp | 6 +- src/mame/drivers/trucocl.cpp | 9 +- src/mame/drivers/trvmadns.cpp | 6 +- src/mame/drivers/trvquest.cpp | 4 +- src/mame/drivers/tryout.cpp | 4 +- src/mame/drivers/ts802.cpp | 12 +- src/mame/drivers/ts803.cpp | 17 +- src/mame/drivers/ts816.cpp | 12 +- src/mame/drivers/tsamurai.cpp | 32 +- src/mame/drivers/tsispch.cpp | 17 +- src/mame/drivers/ttchamp.cpp | 8 +- src/mame/drivers/tubep.cpp | 24 +- src/mame/drivers/tugboat.cpp | 8 +- src/mame/drivers/tumbleb.cpp | 30 +- src/mame/drivers/tumblep.cpp | 4 +- src/mame/drivers/tunhunt.cpp | 8 +- src/mame/drivers/turbo.cpp | 28 +- src/mame/drivers/turrett.cpp | 13 +- src/mame/drivers/tutankhm.cpp | 6 +- src/mame/drivers/tutor.cpp | 10 +- src/mame/drivers/tv910.cpp | 6 +- src/mame/drivers/tv950.cpp | 6 +- src/mame/drivers/tv990.cpp | 9 +- src/mame/drivers/tvc.cpp | 10 +- src/mame/drivers/tvcapcom.cpp | 4 +- src/mame/drivers/tvgame.cpp | 6 +- src/mame/drivers/twin16.cpp | 42 +- src/mame/drivers/twincobr.cpp | 4 +- src/mame/drivers/twinkle.cpp | 40 +- src/mame/drivers/twins.cpp | 12 +- src/mame/drivers/tx0.cpp | 34 +- src/mame/drivers/tx1.cpp | 23 +- src/mame/drivers/uapce.cpp | 12 +- src/mame/drivers/uknc.cpp | 6 +- src/mame/drivers/ultraman.cpp | 6 +- src/mame/drivers/ultratnk.cpp | 87 +- src/mame/drivers/ultrsprt.cpp | 4 +- src/mame/drivers/umipoker.cpp | 6 +- src/mame/drivers/undrfire.cpp | 14 +- src/mame/drivers/unichamp.cpp | 25 +- src/mame/drivers/unico.cpp | 24 +- src/mame/drivers/unior.cpp | 8 +- src/mame/drivers/unistar.cpp | 6 +- src/mame/drivers/univac.cpp | 6 +- src/mame/drivers/unixpc.cpp | 10 +- src/mame/drivers/unkhorse.cpp | 4 +- src/mame/drivers/upscope.cpp | 65 +- src/mame/drivers/usbilliards.cpp | 138 ++ src/mame/drivers/usgames.cpp | 18 +- src/mame/drivers/ut88.cpp | 8 +- src/mame/drivers/uzebox.cpp | 6 +- src/mame/drivers/v1050.cpp | 8 +- src/mame/drivers/v6809.cpp | 16 +- src/mame/drivers/vamphalf.cpp | 60 +- src/mame/drivers/vaportra.cpp | 6 +- src/mame/drivers/vastar.cpp | 12 +- src/mame/drivers/vax11.cpp | 12 +- src/mame/drivers/vball.cpp | 12 +- src/mame/drivers/vboy.cpp | 6 +- src/mame/drivers/vc4000.cpp | 54 +- src/mame/drivers/vcombat.cpp | 8 +- src/mame/drivers/vcs80.cpp | 6 +- src/mame/drivers/vd.cpp | 6 +- src/mame/drivers/vector06.cpp | 20 +- src/mame/drivers/vector4.cpp | 21 +- src/mame/drivers/vectrex.cpp | 8 +- src/mame/drivers/vega.cpp | 27 +- src/mame/drivers/vegaeo.cpp | 2 +- src/mame/drivers/vegas.cpp | 1646 +++------------ src/mame/drivers/vendetta.cpp | 24 +- src/mame/drivers/vertigo.cpp | 4 +- src/mame/drivers/vg5k.cpp | 8 +- src/mame/drivers/vgmplay.cpp | 11 +- src/mame/drivers/vic10.cpp | 4 +- src/mame/drivers/vic20.cpp | 12 +- src/mame/drivers/vicdual.cpp | 155 +- src/mame/drivers/victor9k.cpp | 18 +- src/mame/drivers/victory.cpp | 6 +- src/mame/drivers/vidbrain.cpp | 6 +- src/mame/drivers/videopin.cpp | 6 +- src/mame/drivers/videopkr.cpp | 52 +- src/mame/drivers/vigilant.cpp | 42 +- src/mame/drivers/vii.cpp | 125 +- src/mame/drivers/vindictr.cpp | 2 +- src/mame/drivers/vip.cpp | 8 +- src/mame/drivers/viper.cpp | 588 ++++-- src/mame/drivers/vis.cpp | 13 +- src/mame/drivers/vixen.cpp | 6 +- src/mame/drivers/vk100.cpp | 4 +- src/mame/drivers/vlc.cpp | 73 +- src/mame/drivers/volfied.cpp | 39 +- src/mame/drivers/votrpss.cpp | 13 +- src/mame/drivers/votrtnt.cpp | 6 +- src/mame/drivers/voyager.cpp | 24 +- src/mame/drivers/vp101.cpp | 373 +++- src/mame/drivers/vpoker.cpp | 8 +- src/mame/drivers/vroulet.cpp | 4 +- src/mame/drivers/vsmilepro.cpp | 6 +- src/mame/drivers/vsnes.cpp | 124 +- src/mame/drivers/vt100.cpp | 26 +- src/mame/drivers/vt220.cpp | 6 +- src/mame/drivers/vt240.cpp | 8 +- src/mame/drivers/vt320.cpp | 12 +- src/mame/drivers/vt520.cpp | 10 +- src/mame/drivers/vta2000.cpp | 6 +- src/mame/drivers/vtech1.cpp | 16 +- src/mame/drivers/vtech2.cpp | 10 +- src/mame/drivers/vulgus.cpp | 8 +- src/mame/drivers/wacky_gator.cpp | 4 +- src/mame/drivers/wallc.cpp | 10 +- src/mame/drivers/wangpc.cpp | 6 +- src/mame/drivers/wardner.cpp | 10 +- src/mame/drivers/warpsped.cpp | 4 +- src/mame/drivers/warpwarp.cpp | 4 +- src/mame/drivers/warriorb.cpp | 14 +- src/mame/drivers/wc90.cpp | 12 +- src/mame/drivers/wc90b.cpp | 10 +- src/mame/drivers/wecleman.cpp | 4 +- src/mame/drivers/welltris.cpp | 14 +- src/mame/drivers/wgp.cpp | 12 +- src/mame/drivers/wheelfir.cpp | 12 +- src/mame/drivers/white_mod.cpp | 308 +-- src/mame/drivers/whitestar.cpp | 390 ++-- src/mame/drivers/wicat.cpp | 24 +- src/mame/drivers/wico.cpp | 4 +- src/mame/drivers/wildpkr.cpp | 8 +- src/mame/drivers/williams.cpp | 130 +- src/mame/drivers/wink.cpp | 2 +- src/mame/drivers/wiping.cpp | 6 +- src/mame/drivers/witch.cpp | 2 +- src/mame/drivers/wiz.cpp | 20 +- src/mame/drivers/wmg.cpp | 4 +- src/mame/drivers/wms.cpp | 2 +- src/mame/drivers/wolfpack.cpp | 110 +- src/mame/drivers/wpc_95.cpp | 2 +- src/mame/drivers/wpc_an.cpp | 40 +- src/mame/drivers/wpc_dcs.cpp | 2 +- src/mame/drivers/wpc_dot.cpp | 2 +- src/mame/drivers/wpc_flip1.cpp | 2 +- src/mame/drivers/wpc_flip2.cpp | 100 +- src/mame/drivers/wpc_s.cpp | 2 +- src/mame/drivers/wrally.cpp | 12 +- src/mame/drivers/wswan.cpp | 8 +- src/mame/drivers/wwfsstar.cpp | 14 +- src/mame/drivers/wyvernf0.cpp | 4 +- src/mame/drivers/x07.cpp | 2 +- src/mame/drivers/x1.cpp | 8 +- src/mame/drivers/x1twin.cpp | 6 +- src/mame/drivers/x68k.cpp | 26 +- src/mame/drivers/xain.cpp | 12 +- src/mame/drivers/xavix.cpp | 4 +- src/mame/drivers/xbox.cpp | 29 +- src/mame/drivers/xerox820.cpp | 20 +- src/mame/drivers/xexex.cpp | 40 +- src/mame/drivers/xmen.cpp | 73 +- src/mame/drivers/xor100.cpp | 6 +- src/mame/drivers/xorworld.cpp | 2 +- src/mame/drivers/xtheball.cpp | 4 +- src/mame/drivers/xtom3d.cpp | 4 +- src/mame/drivers/xxmissio.cpp | 4 +- src/mame/drivers/xybots.cpp | 2 +- src/mame/drivers/xyonix.cpp | 4 +- src/mame/drivers/yiear.cpp | 6 +- src/mame/drivers/ymmu100.cpp | 9 +- src/mame/drivers/yunsun16.cpp | 22 +- src/mame/drivers/yunsung8.cpp | 14 +- src/mame/drivers/z100.cpp | 10 +- src/mame/drivers/z1013.cpp | 14 +- src/mame/drivers/z80dev.cpp | 6 +- src/mame/drivers/z80ne.cpp | 33 +- src/mame/drivers/z88.cpp | 27 +- src/mame/drivers/z9001.cpp | 22 +- src/mame/drivers/zac2650.cpp | 8 +- src/mame/drivers/zac_1.cpp | 26 +- src/mame/drivers/zac_2.cpp | 84 +- src/mame/drivers/zac_proto.cpp | 8 +- src/mame/drivers/zaccaria.cpp | 10 +- src/mame/drivers/zapcomputer.cpp | 6 +- src/mame/drivers/zaurus.cpp | 14 +- src/mame/drivers/zaxxon.cpp | 26 +- src/mame/drivers/zerozone.cpp | 8 +- src/mame/drivers/zexall.cpp | 6 +- src/mame/drivers/zn.cpp | 243 ++- src/mame/drivers/zodiack.cpp | 12 +- src/mame/drivers/zorba.cpp | 6 +- src/mame/drivers/zr107.cpp | 8 +- src/mame/drivers/zrt80.cpp | 12 +- src/mame/drivers/zsbc3.cpp | 13 +- src/mame/drivers/zwackery.cpp | 6 +- src/mame/drivers/zx.cpp | 4 +- src/mame/etc/template_cpu.cpp | 35 +- src/mame/etc/template_cpu.h | 14 +- src/mame/etc/template_device.cpp | 6 +- src/mame/etc/template_device.h | 20 +- src/mame/etc/template_driver.cpp | 20 +- src/mame/includes/abc1600.h | 10 +- src/mame/includes/abc80.h | 12 +- src/mame/includes/abc80x.h | 10 - src/mame/includes/advision.h | 2 +- src/mame/includes/aerofgt.h | 1 + src/mame/includes/airbustr.h | 2 +- src/mame/includes/alesis.h | 10 +- src/mame/includes/amiga.h | 11 +- src/mame/includes/amstrad.h | 2 +- src/mame/includes/apollo.h | 40 +- src/mame/includes/apple3.h | 2 +- src/mame/includes/arcadia.h | 6 +- src/mame/includes/archimds.h | 2 +- src/mame/includes/artmagic.h | 1 + src/mame/includes/asuka.h | 5 +- src/mame/includes/atarigt.h | 3 +- src/mame/includes/atarigx2.h | 16 +- src/mame/includes/atarist.h | 10 +- src/mame/includes/aussiebyte.h | 2 +- src/mame/includes/b2m.h | 74 +- src/mame/includes/badlands.h | 12 +- src/mame/includes/baraduke.h | 2 +- src/mame/includes/bbc.h | 6 +- src/mame/includes/bbusters.h | 1 - src/mame/includes/beathead.h | 21 +- src/mame/includes/bfm_sc4.h | 14 +- src/mame/includes/bionicc.h | 16 +- src/mame/includes/bk.h | 1 + src/mame/includes/bking.h | 2 +- src/mame/includes/blstroid.h | 3 + src/mame/includes/bosco.h | 2 +- src/mame/includes/bullet.h | 85 +- src/mame/includes/bw2.h | 10 +- src/mame/includes/capbowl.h | 8 +- src/mame/includes/carpolo.h | 2 +- src/mame/includes/cave.h | 1 + src/mame/includes/cidelsa.h | 20 +- src/mame/includes/coco.h | 1 + src/mame/includes/cps1.h | 2 +- src/mame/includes/crshrace.h | 1 - src/mame/includes/cyberbal.h | 2 + src/mame/includes/dcheese.h | 1 + src/mame/includes/dday.h | 7 +- src/mame/includes/dec8.h | 2 +- src/mame/includes/deco_mlc.h | 2 +- src/mame/includes/dgn_beta.h | 31 +- src/mame/includes/dgnalpha.h | 24 +- src/mame/includes/djboy.h | 2 +- src/mame/includes/dkong.h | 3 +- src/mame/includes/dm7000.h | 10 +- src/mame/includes/dooyong.h | 297 --- src/mame/includes/dragon.h | 40 +- src/mame/includes/einstein.h | 102 +- src/mame/includes/epos.h | 17 +- src/mame/includes/exidy440.h | 2 + src/mame/includes/fidelbase.h | 12 + src/mame/includes/finalizr.h | 2 +- src/mame/includes/fm7.h | 23 +- src/mame/includes/fmtowns.h | 2 +- src/mame/includes/fromance.h | 9 +- src/mame/includes/fuukifg3.h | 2 +- src/mame/includes/galaga.h | 2 +- src/mame/includes/galastrm.h | 2 + src/mame/includes/galpanic.h | 2 +- src/mame/includes/gamate.h | 100 - src/mame/includes/gaplus.h | 10 +- src/mame/includes/gcpinbal.h | 2 + src/mame/includes/gijoe.h | 10 +- src/mame/includes/gladiatr.h | 8 +- src/mame/includes/goal92.h | 2 +- src/mame/includes/gomoku.h | 76 +- src/mame/includes/gridlee.h | 7 +- src/mame/includes/groundfx.h | 13 +- src/mame/includes/gstriker.h | 5 +- src/mame/includes/gsword.h | 1 - src/mame/includes/gunbustr.h | 1 + src/mame/includes/harddriv.h | 80 +- src/mame/includes/hec2hrp.h | 8 +- src/mame/includes/hng64.h | 2 +- src/mame/includes/homedata.h | 2 +- src/mame/includes/hp48.h | 12 +- src/mame/includes/hp9845.h | 7 +- src/mame/includes/hyhoo.h | 1 + src/mame/includes/hyprduel.h | 38 +- src/mame/includes/imds2.h | 4 +- src/mame/includes/inufuku.h | 2 +- src/mame/includes/jpmimpct.h | 2 +- src/mame/includes/jpmsys5.h | 2 +- src/mame/includes/jupiter.h | 18 +- src/mame/includes/kaypro.h | 9 +- src/mame/includes/leland.h | 125 +- src/mame/includes/lemmings.h | 2 +- src/mame/includes/lethal.h | 5 +- src/mame/includes/lethalj.h | 4 +- src/mame/includes/lisa.h | 1 + src/mame/includes/llc.h | 5 +- src/mame/includes/lockon.h | 2 +- src/mame/includes/m10.h | 1 + src/mame/includes/m5.h | 75 +- src/mame/includes/m92.h | 1 + src/mame/includes/macrossp.h | 2 +- src/mame/includes/marineb.h | 2 +- src/mame/includes/mario.h | 12 +- src/mame/includes/maygay1b.h | 2 +- src/mame/includes/mbc55x.h | 54 +- src/mame/includes/mbee.h | 4 +- src/mame/includes/mcatadv.h | 2 +- src/mame/includes/megadriv.h | 4 +- src/mame/includes/megasys1.h | 2 +- src/mame/includes/mermaid.h | 2 +- src/mame/includes/metro.h | 5 +- src/mame/includes/micro3d.h | 76 +- src/mame/includes/midtunit.h | 2 + src/mame/includes/midvunit.h | 1 + src/mame/includes/midyunit.h | 2 + src/mame/includes/midzeus.h | 20 +- src/mame/includes/mitchell.h | 1 - src/mame/includes/model1.h | 13 +- src/mame/includes/model2.h | 9 +- src/mame/includes/model3.h | 3 + src/mame/includes/moo.h | 13 +- src/mame/includes/mpu4.h | 2 +- src/mame/includes/mpz80.h | 10 +- src/mame/includes/munchmo.h | 2 +- src/mame/includes/mw8080bw.h | 5 +- src/mame/includes/mystwarr.h | 16 +- src/mame/includes/n64.h | 12 +- src/mame/includes/n8080.h | 10 +- src/mame/includes/namcofl.h | 8 +- src/mame/includes/namcoic.h | 107 - src/mame/includes/namconb1.h | 2 + src/mame/includes/namcos1.h | 2 +- src/mame/includes/namcos2.h | 41 +- src/mame/includes/namcos86.h | 2 +- src/mame/includes/nb1413m3.h | 7 + src/mame/includes/nb1414m4.h | 13 +- src/mame/includes/nes.h | 66 +- src/mame/includes/newbrain.h | 2 +- src/mame/includes/next.h | 2 +- src/mame/includes/ninjakd2.h | 2 +- src/mame/includes/novagbase.h | 17 +- src/mame/includes/ondra.h | 1 + src/mame/includes/opwolf.h | 2 + src/mame/includes/orion.h | 42 +- src/mame/includes/osborne1.h | 2 +- src/mame/includes/othunder.h | 1 + src/mame/includes/overdriv.h | 1 + src/mame/includes/partner.h | 12 +- src/mame/includes/pastelg.h | 1 + src/mame/includes/patinhofeio.h | 22 +- src/mame/includes/pc1512.h | 2 +- src/mame/includes/pcw.h | 14 +- src/mame/includes/pdp1.h | 2 +- src/mame/includes/pes.h | 2 +- src/mame/includes/pgm.h | 2 +- src/mame/includes/phoenix.h | 104 +- src/mame/includes/pk8020.h | 2 +- src/mame/includes/plygonet.h | 8 +- src/mame/includes/polepos.h | 8 +- src/mame/includes/policetr.h | 2 + src/mame/includes/psikyo.h | 2 +- src/mame/includes/qdrmfgp.h | 1 + src/mame/includes/quasar.h | 2 +- src/mame/includes/rbisland.h | 1 + src/mame/includes/redclash.h | 4 +- src/mame/includes/rm380z.h | 15 +- src/mame/includes/rmnimbus.h | 11 +- src/mame/includes/rollerg.h | 1 + src/mame/includes/rpunch.h | 8 +- src/mame/includes/rungun.h | 8 +- src/mame/includes/samcoupe.h | 2 +- src/mame/includes/saturn.h | 2 + src/mame/includes/segag80r.h | 11 +- src/mame/includes/segaorun.h | 1 + src/mame/includes/segas16a.h | 1 - src/mame/includes/segas16b.h | 2 +- src/mame/includes/segas24.h | 44 +- src/mame/includes/segas32.h | 152 +- src/mame/includes/segaxbd.h | 96 +- src/mame/includes/segaybd.h | 38 +- src/mame/includes/seta.h | 4 +- src/mame/includes/seta2.h | 2 +- src/mame/includes/shadfrce.h | 2 +- src/mame/includes/slapshot.h | 2 +- src/mame/includes/slapstic.h | 30 +- src/mame/includes/sms.h | 2 +- src/mame/includes/snk6502.h | 81 +- src/mame/includes/snowbros.h | 2 +- src/mame/includes/softbox.h | 2 +- src/mame/includes/spacefb.h | 4 +- src/mame/includes/spcforce.h | 2 +- src/mame/includes/special.h | 10 +- src/mame/includes/spectrum.h | 4 +- src/mame/includes/sprint2.h | 2 +- src/mame/includes/sprint4.h | 61 +- src/mame/includes/sprint8.h | 70 +- src/mame/includes/sspeedr.h | 2 +- src/mame/includes/ssrj.h | 2 +- src/mame/includes/starshp1.h | 2 +- src/mame/includes/stfight.h | 2 + src/mame/includes/stv.h | 8 +- src/mame/includes/super6.h | 52 +- src/mame/includes/super80.h | 4 +- src/mame/includes/suprslam.h | 4 +- src/mame/includes/swtpc09.h | 76 +- src/mame/includes/taito_b.h | 2 +- src/mame/includes/taito_f2.h | 10 +- src/mame/includes/taito_f3.h | 5 +- src/mame/includes/taito_l.h | 2 +- src/mame/includes/tandy2k.h | 8 +- src/mame/includes/tank8.h | 2 +- src/mame/includes/taotaido.h | 5 +- src/mame/includes/tatsumi.h | 10 +- src/mame/includes/tceptor.h | 2 +- src/mame/includes/tehkanwc.h | 1 + src/mame/includes/tetrisp2.h | 2 + src/mame/includes/thomson.h | 12 +- src/mame/includes/thunderx.h | 2 + src/mame/includes/ti85.h | 4 +- src/mame/includes/tiamc1.h | 76 - src/mame/includes/tiki100.h | 53 +- src/mame/includes/tmnt.h | 2 +- src/mame/includes/tnzs.h | 2 +- src/mame/includes/toaplan1.h | 6 +- src/mame/includes/toaplan2.h | 6 +- src/mame/includes/tranz330.h | 2 +- src/mame/includes/triplhnt.h | 61 +- src/mame/includes/trs80.h | 2 +- src/mame/includes/trs80m2.h | 92 +- src/mame/includes/trucocl.h | 2 + src/mame/includes/tsispch.h | 31 +- src/mame/includes/tubep.h | 5 +- src/mame/includes/turrett.h | 8 +- src/mame/includes/twin16.h | 2 +- src/mame/includes/tx0.h | 2 +- src/mame/includes/tx1.h | 17 +- src/mame/includes/ultratnk.h | 61 +- src/mame/includes/v1050.h | 13 +- src/mame/includes/vector06.h | 3 +- src/mame/includes/vicdual.h | 42 +- src/mame/includes/victory.h | 1 + src/mame/includes/vixen.h | 10 +- src/mame/includes/volfied.h | 31 +- src/mame/includes/vsnes.h | 62 +- src/mame/includes/williams.h | 16 +- src/mame/includes/wolfpack.h | 69 +- src/mame/includes/x1.h | 58 +- src/mame/includes/xbox.h | 71 +- src/mame/includes/xbox_nv2a.h | 6 +- src/mame/includes/xbox_pci.h | 341 +++ src/mame/includes/xbox_usb.h | 62 +- src/mame/includes/xerox820.h | 59 +- src/mame/includes/xexex.h | 13 +- src/mame/includes/xmen.h | 12 +- src/mame/includes/xor100.h | 62 +- src/mame/includes/z80ne.h | 11 +- src/mame/includes/zorba.h | 8 +- src/mame/layout/3bagflnz.lay | 67 +- src/mame/layout/3bagflvt.lay | 77 +- src/mame/layout/7smash.lay | 80 + src/mame/layout/acommand.lay | 39 + src/mame/layout/arcwins.lay | 81 +- src/mame/layout/arimk4nz.lay | 81 +- src/mame/layout/aristmk4.lay | 81 +- src/mame/layout/aristmk5.lay | 3 +- src/mame/layout/cgold2.lay | 71 +- src/mame/layout/cnfball2.lay | 7 +- src/mame/layout/cqback.lay | 8 +- src/mame/layout/cuckoou.lay | 2 +- src/mame/layout/eforest.lay | 83 +- src/mame/layout/fhunter.lay | 71 +- src/mame/layout/fidel_chesster.lay | 4 +- src/mame/layout/fidel_csc.lay | 4 +- src/mame/layout/fidel_desdis.lay | 4 +- src/mame/layout/fidel_dsc.lay | 531 +++++ src/mame/layout/fidel_sc12.lay | 4 +- src/mame/layout/fidel_sc6.lay | 362 ++++ src/mame/layout/fidel_sc8.lay | 398 ++++ src/mame/layout/fidel_sc9.lay | 4 +- src/mame/layout/fidel_su9.lay | 4 +- src/mame/layout/fidel_vsc.lay | 4 +- src/mame/layout/fvrpitch.lay | 93 +- src/mame/layout/gldnpkr.lay | 65 +- src/mame/layout/goldenc.lay | 81 +- src/mame/layout/gotcha.lay | 2 +- src/mame/layout/gunnrose.lay | 122 +- src/mame/layout/h2hfootb.lay | 7 +- src/mame/layout/ie15.lay | 125 -- src/mame/layout/jclub2.lay | 635 ++++++ src/mame/layout/jclub2o.lay | 605 ++++++ src/mame/layout/kgbird.lay | 81 +- src/mame/layout/magimaska.lay | 2 +- src/mame/layout/novag_presto.lay | 335 +++ src/mame/layout/novag_supercon.lay | 8 +- src/mame/layout/one4all.lay | 343 +++ src/mame/layout/pasha2.lay | 134 ++ src/mame/layout/qnilecea.lay | 2 +- src/mame/layout/qnilenl.lay | 265 +++ src/mame/layout/sbuk2.lay | 6 +- src/mame/layout/tbreakup.lay | 111 +- src/mame/layout/ti25503.lay | 27 + src/mame/layout/topgear.lay | 51 +- src/mame/layout/toutangonl.lay | 265 +++ src/mame/layout/us2pfball.lay | 195 ++ src/mame/layout/wildone.lay | 70 +- src/mame/machine/315-5838_317-0229_comp.cpp | 4 +- src/mame/machine/315-5838_317-0229_comp.h | 19 +- src/mame/machine/315-5881_crypt.cpp | 4 +- src/mame/machine/315-5881_crypt.h | 8 +- src/mame/machine/315_5296.cpp | 7 +- src/mame/machine/315_5296.h | 10 +- src/mame/machine/6883sam.cpp | 8 +- src/mame/machine/6883sam.h | 16 +- src/mame/machine/abc1600mac.cpp | 4 +- src/mame/machine/abc1600mac.h | 9 +- src/mame/machine/abc80kb.cpp | 10 +- src/mame/machine/abc80kb.h | 11 +- src/mame/machine/advision.cpp | 2 +- src/mame/machine/alpha8201.cpp | 8 +- src/mame/machine/alpha8201.h | 8 +- src/mame/machine/amiga.cpp | 5 +- src/mame/machine/amstrad.cpp | 12 +- src/mame/machine/apollo.cpp | 31 +- src/mame/machine/apollo_dbg.h | 8 +- src/mame/machine/apollo_kbd.cpp | 11 +- src/mame/machine/apollo_kbd.h | 12 +- src/mame/machine/apricotkb.cpp | 4 +- src/mame/machine/apricotkb.h | 10 +- src/mame/machine/asic65.cpp | 4 +- src/mame/machine/asic65.h | 12 +- src/mame/machine/at.cpp | 4 +- src/mame/machine/at.h | 2 +- src/mame/machine/atari_vg.cpp | 4 +- src/mame/machine/atari_vg.h | 20 +- src/mame/machine/atarifdc.cpp | 15 +- src/mame/machine/atarifdc.h | 8 +- src/mame/machine/atarigen.cpp | 20 +- src/mame/machine/atarigen.h | 12 +- src/mame/machine/atarixga.cpp | 8 +- src/mame/machine/atarixga.h | 22 +- src/mame/machine/awboard.cpp | 4 +- src/mame/machine/awboard.h | 10 +- src/mame/machine/b2m.cpp | 3 - src/mame/machine/balsente.cpp | 28 +- src/mame/machine/bbc.cpp | 61 - src/mame/machine/bebox.cpp | 32 +- src/mame/machine/beta.cpp | 7 +- src/mame/machine/beta.h | 17 +- src/mame/machine/bfm_bd1.cpp | 34 +- src/mame/machine/bfm_bd1.h | 17 +- src/mame/machine/bfm_bda.cpp | 28 +- src/mame/machine/bfm_bda.h | 17 +- src/mame/machine/bk.cpp | 3 +- src/mame/machine/c117.cpp | 4 +- src/mame/machine/c117.h | 8 +- src/mame/machine/cammu.cpp | 31 +- src/mame/machine/cammu.h | 14 +- src/mame/machine/cat702.cpp | 4 +- src/mame/machine/cat702.h | 12 +- src/mame/machine/cdi070.cpp | 7 +- src/mame/machine/cdi070.h | 10 +- src/mame/machine/cdicdic.cpp | 10 +- src/mame/machine/cdicdic.h | 10 +- src/mame/machine/cdislave.cpp | 8 +- src/mame/machine/cdislave.h | 6 +- src/mame/machine/cedar_magnet_board.h | 6 +- src/mame/machine/cedar_magnet_flop.cpp | 6 +- src/mame/machine/cedar_magnet_flop.h | 28 +- src/mame/machine/cedar_magnet_plane.cpp | 6 +- src/mame/machine/cedar_magnet_plane.h | 21 +- src/mame/machine/cedar_magnet_sprite.cpp | 6 +- src/mame/machine/cedar_magnet_sprite.h | 44 +- src/mame/machine/coco.cpp | 2 +- src/mame/machine/coco_vhd.cpp | 6 +- src/mame/machine/coco_vhd.h | 10 +- src/mame/machine/compiskb.cpp | 24 +- src/mame/machine/compiskb.h | 9 +- src/mame/machine/cuda.cpp | 4 +- src/mame/machine/cuda.h | 2 +- src/mame/machine/dc-ctrl.cpp | 4 +- src/mame/machine/dc-ctrl.h | 10 +- src/mame/machine/dec_lk201.cpp | 4 +- src/mame/machine/dec_lk201.h | 10 +- src/mame/machine/deco104.cpp | 10 +- src/mame/machine/deco104.h | 24 +- src/mame/machine/deco146.cpp | 29 +- src/mame/machine/deco146.h | 32 +- src/mame/machine/deco156.h | 6 + src/mame/machine/deco222.cpp | 8 +- src/mame/machine/deco222.h | 10 +- src/mame/machine/decocass_tape.cpp | 7 +- src/mame/machine/decocass_tape.h | 10 +- src/mame/machine/decocpu6.cpp | 4 +- src/mame/machine/decocpu6.h | 7 +- src/mame/machine/decocpu7.cpp | 4 +- src/mame/machine/decocpu7.h | 8 +- src/mame/machine/decopincpu.cpp | 43 +- src/mame/machine/decopincpu.h | 60 +- src/mame/machine/dgn_beta.cpp | 89 +- src/mame/machine/dmv_keyb.cpp | 14 +- src/mame/machine/dmv_keyb.h | 11 +- src/mame/machine/docg3.cpp | 6 +- src/mame/machine/docg3.h | 15 +- src/mame/machine/egret.cpp | 4 +- src/mame/machine/egret.h | 11 +- src/mame/machine/einstein.cpp | 18 +- src/mame/machine/esqlcd.cpp | 62 +- src/mame/machine/esqlcd.h | 34 +- src/mame/machine/esqpanel.cpp | 22 +- src/mame/machine/esqpanel.h | 93 +- src/mame/machine/esqvfd.cpp | 55 +- src/mame/machine/esqvfd.h | 60 +- src/mame/machine/fd1089.cpp | 15 +- src/mame/machine/fd1089.h | 18 +- src/mame/machine/fd1094.cpp | 7 +- src/mame/machine/fd1094.h | 8 +- src/mame/machine/fm_scsi.cpp | 24 +- src/mame/machine/fm_scsi.h | 32 +- src/mame/machine/fmt_icmem.cpp | 4 +- src/mame/machine/fmt_icmem.h | 13 +- src/mame/machine/gaelco3d.cpp | 32 +- src/mame/machine/gaelco3d.h | 73 +- src/mame/machine/gdrom.cpp | 4 +- src/mame/machine/gdrom.h | 11 +- src/mame/machine/hp48.cpp | 16 +- src/mame/machine/ibm6580_fdc.cpp | 25 +- src/mame/machine/ibm6580_fdc.h | 21 +- src/mame/machine/ibm6580_kbd.cpp | 27 +- src/mame/machine/ibm6580_kbd.h | 21 +- src/mame/machine/ie15_kbd.cpp | 303 --- src/mame/machine/ie15_kbd.h | 76 - src/mame/machine/igs022.cpp | 4 +- src/mame/machine/igs022.h | 4 +- src/mame/machine/igs025.cpp | 8 +- src/mame/machine/igs025.h | 3 +- src/mame/machine/igs028.cpp | 4 +- src/mame/machine/igs028.h | 4 +- src/mame/machine/inder_sb.cpp | 10 +- src/mame/machine/inder_sb.h | 23 +- src/mame/machine/inder_vid.cpp | 4 +- src/mame/machine/inder_vid.h | 22 +- src/mame/machine/interpro_ioga.cpp | 4 +- src/mame/machine/interpro_ioga.h | 2 +- src/mame/machine/interpro_mcga.cpp | 12 +- src/mame/machine/interpro_mcga.h | 9 +- src/mame/machine/interpro_sga.cpp | 4 +- src/mame/machine/interpro_sga.h | 2 +- src/mame/machine/interpro_srarb.cpp | 4 +- src/mame/machine/intv.cpp | 20 +- src/mame/machine/isbc_208.cpp | 7 +- src/mame/machine/isbc_208.h | 13 +- src/mame/machine/isbc_215g.cpp | 4 +- src/mame/machine/isbc_215g.h | 10 +- src/mame/machine/iteagle_fpga.cpp | 45 +- src/mame/machine/iteagle_fpga.h | 14 +- src/mame/machine/jvs13551.cpp | 69 +- src/mame/machine/jvs13551.h | 38 +- src/mame/machine/k573cass.cpp | 44 +- src/mame/machine/k573cass.h | 30 +- src/mame/machine/k573dio.cpp | 4 +- src/mame/machine/k573dio.h | 10 +- src/mame/machine/k573mcr.cpp | 4 +- src/mame/machine/k573mcr.h | 8 +- src/mame/machine/k573msu.cpp | 4 +- src/mame/machine/k573msu.h | 8 +- src/mame/machine/k573npu.cpp | 4 +- src/mame/machine/k573npu.h | 8 +- src/mame/machine/k7659kb.cpp | 4 +- src/mame/machine/k7659kb.h | 11 +- src/mame/machine/kaneko_calc3.cpp | 7 +- src/mame/machine/kaneko_calc3.h | 9 +- src/mame/machine/kaneko_hit.cpp | 4 +- src/mame/machine/kaneko_hit.h | 70 +- src/mame/machine/kaneko_toybox.cpp | 325 ++- src/mame/machine/kaneko_toybox.h | 346 +-- src/mame/machine/kc_keyb.cpp | 12 +- src/mame/machine/kc_keyb.h | 24 +- src/mame/machine/km035.cpp | 24 +- src/mame/machine/km035.h | 14 +- src/mame/machine/konami1.cpp | 4 +- src/mame/machine/konami1.h | 9 +- src/mame/machine/konppc.cpp | 4 +- src/mame/machine/konppc.h | 26 +- src/mame/machine/leland.cpp | 4 +- src/mame/machine/lisa.cpp | 3 +- src/mame/machine/lviv.cpp | 30 +- src/mame/machine/m1comm.cpp | 65 +- src/mame/machine/m1comm.h | 12 +- src/mame/machine/m20_8086.cpp | 4 +- src/mame/machine/m20_8086.h | 14 +- src/mame/machine/m20_kbd.cpp | 4 +- src/mame/machine/m20_kbd.h | 2 +- src/mame/machine/m24_kbd.cpp | 23 +- src/mame/machine/m24_kbd.h | 26 +- src/mame/machine/m24_z8000.cpp | 4 +- src/mame/machine/m24_z8000.h | 19 +- src/mame/machine/m2comm.cpp | 29 +- src/mame/machine/m2comm.h | 14 +- src/mame/machine/m3comm.cpp | 4 +- src/mame/machine/m3comm.h | 10 +- src/mame/machine/mac.cpp | 7 +- src/mame/machine/macadb.cpp | 16 +- src/mame/machine/mackbd.cpp | 19 +- src/mame/machine/mackbd.h | 12 +- src/mame/machine/macrtc.cpp | 4 +- src/mame/machine/macrtc.h | 10 +- src/mame/machine/maple-dc.cpp | 4 +- src/mame/machine/maple-dc.h | 10 +- src/mame/machine/mapledev.cpp | 2 +- src/mame/machine/mapledev.h | 10 +- src/mame/machine/mathbox.cpp | 4 +- src/mame/machine/mathbox.h | 8 +- src/mame/machine/mc8123.cpp | 43 +- src/mame/machine/mc8123.h | 38 +- src/mame/machine/mega32x.cpp | 36 +- src/mame/machine/mega32x.h | 85 +- src/mame/machine/megacd.cpp | 50 +- src/mame/machine/megacd.h | 244 +-- src/mame/machine/megacdcd.cpp | 127 +- src/mame/machine/megacdcd.h | 236 +-- src/mame/machine/megadriv.cpp | 6 +- src/mame/machine/meters.cpp | 6 +- src/mame/machine/meters.h | 19 +- src/mame/machine/micro3d.cpp | 72 +- src/mame/machine/microdrv.cpp | 4 +- src/mame/machine/microdrv.h | 14 +- src/mame/machine/micropolis.cpp | 11 +- src/mame/machine/micropolis.h | 17 +- src/mame/machine/midikbd.cpp | 4 +- src/mame/machine/midikbd.h | 15 +- src/mame/machine/midwayic.cpp | 101 +- src/mame/machine/midwayic.h | 33 +- src/mame/machine/mie.cpp | 8 +- src/mame/machine/mie.h | 14 +- src/mame/machine/mm1kb.cpp | 24 +- src/mame/machine/mm1kb.h | 18 +- src/mame/machine/ms7004.cpp | 20 +- src/mame/machine/ms7004.h | 16 +- src/mame/machine/msx_matsushita.cpp | 4 +- src/mame/machine/msx_matsushita.h | 11 +- src/mame/machine/msx_s1985.cpp | 4 +- src/mame/machine/msx_s1985.h | 8 +- src/mame/machine/msx_systemflags.cpp | 4 +- src/mame/machine/msx_systemflags.h | 8 +- src/mame/machine/n64.cpp | 6 +- src/mame/machine/namco06.cpp | 85 +- src/mame/machine/namco06.h | 66 +- src/mame/machine/namco50.cpp | 4 +- src/mame/machine/namco50.h | 10 +- src/mame/machine/namco51.cpp | 32 +- src/mame/machine/namco51.h | 39 +- src/mame/machine/namco53.cpp | 27 +- src/mame/machine/namco53.h | 33 +- src/mame/machine/namco62.cpp | 24 +- src/mame/machine/namco62.h | 36 +- src/mame/machine/namco_c139.cpp | 4 +- src/mame/machine/namco_c139.h | 8 +- src/mame/machine/namco_c148.cpp | 18 +- src/mame/machine/namco_c148.h | 8 +- src/mame/machine/namco_settings.cpp | 4 +- src/mame/machine/namco_settings.h | 10 +- src/mame/machine/namcoic.cpp | 154 +- src/mame/machine/namcoic.h | 102 + src/mame/machine/namcoio.cpp | 130 +- src/mame/machine/namcoio.h | 76 +- src/mame/machine/namcoio_gearbox.cpp | 4 +- src/mame/machine/namcoio_gearbox.h | 8 +- src/mame/machine/namcomcu.cpp | 20 +- src/mame/machine/namcomcu.h | 18 +- src/mame/machine/naomibd.cpp | 4 +- src/mame/machine/naomibd.h | 12 +- src/mame/machine/naomig1.cpp | 6 +- src/mame/machine/naomig1.h | 15 +- src/mame/machine/naomigd.cpp | 10 +- src/mame/machine/naomigd.h | 9 +- src/mame/machine/naomim1.cpp | 6 +- src/mame/machine/naomim1.h | 10 +- src/mame/machine/naomim2.cpp | 8 +- src/mame/machine/naomim2.h | 10 +- src/mame/machine/naomim4.cpp | 4 +- src/mame/machine/naomim4.h | 8 +- src/mame/machine/naomirom.cpp | 6 +- src/mame/machine/naomirom.h | 8 +- src/mame/machine/nb1413m3.cpp | 7 +- src/mame/machine/nb1414m4.cpp | 4 +- src/mame/machine/nes.cpp | 6 +- src/mame/machine/nextkbd.cpp | 4 +- src/mame/machine/nextkbd.h | 16 +- src/mame/machine/nextmo.cpp | 4 +- src/mame/machine/nextmo.h | 12 +- src/mame/machine/ng_memcard.cpp | 8 +- src/mame/machine/ng_memcard.h | 8 +- src/mame/machine/ngen_kb.cpp | 4 +- src/mame/machine/ngen_kb.h | 4 +- src/mame/machine/nl_breakout.cpp | 2 +- src/mame/machine/nmk004.cpp | 14 +- src/mame/machine/nmk004.h | 37 +- src/mame/machine/nmk112.cpp | 4 +- src/mame/machine/nmk112.h | 11 +- src/mame/machine/ns10crypt.cpp | 90 +- src/mame/machine/ns10crypt.h | 75 +- src/mame/machine/ns11prot.cpp | 40 +- src/mame/machine/ns11prot.h | 27 +- src/mame/machine/octo_kbd.cpp | 6 +- src/mame/machine/octo_kbd.h | 10 +- src/mame/machine/ondra.cpp | 3 +- src/mame/machine/opwolf.cpp | 2 +- src/mame/machine/pc1512kb.cpp | 60 +- src/mame/machine/pc1512kb.h | 29 +- src/mame/machine/pc9801_118.cpp | 4 +- src/mame/machine/pc9801_118.h | 14 +- src/mame/machine/pc9801_26.cpp | 4 +- src/mame/machine/pc9801_26.h | 14 +- src/mame/machine/pc9801_86.cpp | 4 +- src/mame/machine/pc9801_86.h | 8 +- src/mame/machine/pc9801_cbus.cpp | 6 +- src/mame/machine/pc9801_cbus.h | 14 +- src/mame/machine/pc9801_cd.cpp | 4 +- src/mame/machine/pc9801_cd.h | 8 +- src/mame/machine/pc9801_kbd.cpp | 4 +- src/mame/machine/pc9801_kbd.h | 10 +- src/mame/machine/pcd_kbd.cpp | 17 +- src/mame/machine/pcd_kbd.h | 6 +- src/mame/machine/pce220_ser.cpp | 6 +- src/mame/machine/pce220_ser.h | 11 +- src/mame/machine/pce_cd.cpp | 16 +- src/mame/machine/pce_cd.h | 11 +- src/mame/machine/pecom.cpp | 2 +- src/mame/machine/pgmprot_igs025_igs012.cpp | 2 +- src/mame/machine/pgmprot_igs025_igs022.cpp | 2 +- src/mame/machine/pgmprot_igs025_igs028.cpp | 2 +- src/mame/machine/pgmprot_igs027a_type1.cpp | 2 +- src/mame/machine/pgmprot_igs027a_type2.cpp | 2 +- src/mame/machine/pgmprot_igs027a_type3.cpp | 2 +- src/mame/machine/pgmprot_orlegend.cpp | 2 +- src/mame/machine/playch10.cpp | 8 +- src/mame/machine/poly88.cpp | 2 +- src/mame/machine/prof80mmu.cpp | 8 +- src/mame/machine/prof80mmu.h | 13 +- src/mame/machine/psion_pack.cpp | 6 +- src/mame/machine/psion_pack.h | 9 +- src/mame/machine/psxcd.cpp | 4 +- src/mame/machine/psxcd.h | 16 +- src/mame/machine/qimi.cpp | 26 +- src/mame/machine/qimi.h | 20 +- src/mame/machine/qx10kbd.cpp | 4 +- src/mame/machine/qx10kbd.h | 8 +- src/mame/machine/radio86.cpp | 3 +- src/mame/machine/rbisland.cpp | 7 +- src/mame/machine/rm380z.cpp | 5 +- src/mame/machine/rmnimbus.cpp | 2 +- src/mame/machine/rmnkbd.cpp | 5 +- src/mame/machine/rmnkbd.h | 1 + src/mame/machine/rx01.cpp | 4 +- src/mame/machine/rx01.h | 10 +- src/mame/machine/s32comm.cpp | 29 +- src/mame/machine/s32comm.h | 16 +- src/mame/machine/segabb.cpp | 4 +- src/mame/machine/segabb.h | 10 +- src/mame/machine/segacrp2_device.cpp | 48 +- src/mame/machine/segacrp2_device.h | 32 +- src/mame/machine/segacrpt_device.cpp | 116 +- src/mame/machine/segacrpt_device.h | 86 +- src/mame/machine/segaic16.cpp | 16 +- src/mame/machine/segaic16.h | 14 +- src/mame/machine/segas32.cpp | 10 - src/mame/machine/seibucop/seibucop.cpp | 18 +- src/mame/machine/seibucop/seibucop.h | 6 +- src/mame/machine/seibucop/seibucop_cmd.hxx | 22 +- src/mame/machine/seicop.cpp | 4 +- src/mame/machine/seicop.h | 10 +- src/mame/machine/sgi.cpp | 4 +- src/mame/machine/sgi.h | 15 +- src/mame/machine/slapstic.cpp | 14 +- src/mame/machine/sms.cpp | 34 +- src/mame/machine/snes.cpp | 58 +- src/mame/machine/st0016.cpp | 74 +- src/mame/machine/st0016.h | 48 +- src/mame/machine/stfight.cpp | 4 +- src/mame/machine/swim.cpp | 4 +- src/mame/machine/swim.h | 8 +- src/mame/machine/swtpc09.cpp | 10 +- src/mame/machine/tait8741.cpp | 16 +- src/mame/machine/tait8741.h | 54 +- src/mame/machine/taito68705interface.cpp | 34 +- src/mame/machine/taito68705interface.h | 26 +- src/mame/machine/taitoio.cpp | 12 +- src/mame/machine/taitoio.h | 47 +- src/mame/machine/tandy2kb.cpp | 19 +- src/mame/machine/tandy2kb.h | 16 +- src/mame/machine/tatsumi.cpp | 12 +- src/mame/machine/teleprinter.cpp | 30 +- src/mame/machine/teleprinter.h | 22 +- src/mame/machine/thomflop.cpp | 6 +- src/mame/machine/thomson.cpp | 6 +- src/mame/machine/ti85.cpp | 39 +- src/mame/machine/ticket.cpp | 4 +- src/mame/machine/ticket.h | 6 +- src/mame/machine/trs80.cpp | 8 +- src/mame/machine/trs80m2kb.cpp | 23 +- src/mame/machine/trs80m2kb.h | 14 +- src/mame/machine/upd65031.cpp | 4 +- src/mame/machine/upd65031.h | 11 +- src/mame/machine/v1050kb.cpp | 18 +- src/mame/machine/v1050kb.h | 14 +- src/mame/machine/vector06.cpp | 9 +- src/mame/machine/victor9k_fdc.cpp | 187 +- src/mame/machine/victor9k_fdc.h | 33 +- src/mame/machine/victor9k_kb.cpp | 678 ++++++ src/mame/machine/victor9k_kb.h | 84 + src/mame/machine/victor9kb.cpp | 686 ------ src/mame/machine/victor9kb.h | 84 - src/mame/machine/volfied.cpp | 29 +- src/mame/machine/vs9209.cpp | 157 ++ src/mame/machine/vs9209.h | 102 + src/mame/machine/vsnes.cpp | 8 +- src/mame/machine/wangpckb.cpp | 48 +- src/mame/machine/wangpckb.h | 22 +- src/mame/machine/williams.cpp | 61 +- src/mame/machine/wpc.cpp | 4 +- src/mame/machine/wpc.h | 42 +- src/mame/machine/wpc_lamp.cpp | 4 +- src/mame/machine/wpc_lamp.h | 10 +- src/mame/machine/wpc_out.cpp | 4 +- src/mame/machine/wpc_out.h | 10 +- src/mame/machine/wpc_pic.cpp | 4 +- src/mame/machine/wpc_pic.h | 10 +- src/mame/machine/wpc_shift.cpp | 4 +- src/mame/machine/wpc_shift.h | 8 +- src/mame/machine/x1.cpp | 6 +- src/mame/machine/x68k_hdc.cpp | 75 +- src/mame/machine/x68k_hdc.h | 85 +- src/mame/machine/x68k_kbd.cpp | 4 +- src/mame/machine/x68k_kbd.h | 2 +- src/mame/machine/x820kb.cpp | 52 +- src/mame/machine/x820kb.h | 25 +- src/mame/machine/xbox.cpp | 604 +----- src/mame/machine/xbox_pci.cpp | 788 +++++++ src/mame/machine/xbox_usb.cpp | 89 +- src/mame/machine/z80bin.cpp | 2 +- src/mame/machine/z80bin.h | 10 +- src/mame/machine/z80ne.cpp | 59 +- src/mame/machine/znmcu.cpp | 4 +- src/mame/machine/znmcu.h | 20 +- src/mame/machine/zorbakbd.cpp | 12 +- src/mame/machine/zorbakbd.h | 8 +- src/mame/machine/zs01.cpp | 4 +- src/mame/machine/zs01.h | 8 +- src/mame/machine/zx8302.cpp | 10 +- src/mame/machine/zx8302.h | 36 +- src/mame/mame.lst | 800 ++++--- src/mame/mess.flt | 6 + src/mame/nl.lst | 3 + src/mame/video/733_asr.cpp | 4 +- src/mame/video/733_asr.h | 30 +- src/mame/video/911_vdt.cpp | 86 +- src/mame/video/911_vdt.h | 80 +- src/mame/video/abc1600.cpp | 4 +- src/mame/video/abc1600.h | 8 +- src/mame/video/abc80.cpp | 2 +- src/mame/video/agat7.cpp | 376 ++++ src/mame/video/agat7.h | 74 + src/mame/video/airbustr.cpp | 2 +- src/mame/video/airraid_dev.cpp | 4 +- src/mame/video/airraid_dev.h | 2 +- src/mame/video/antic.cpp | 335 ++- src/mame/video/antic.h | 452 +--- src/mame/video/apollo.cpp | 16 +- src/mame/video/apple2.cpp | 4 +- src/mame/video/apple2.h | 2 +- src/mame/video/asterix.cpp | 10 +- src/mame/video/astrocde.cpp | 4 +- src/mame/video/atari400.cpp | 2 +- src/mame/video/atarig1.cpp | 4 +- src/mame/video/atarig42.cpp | 4 +- src/mame/video/atarigt.cpp | 4 +- src/mame/video/atarigx2.cpp | 4 +- src/mame/video/atarimo.cpp | 4 +- src/mame/video/atarimo.h | 8 +- src/mame/video/atarirle.cpp | 4 +- src/mame/video/atarirle.h | 10 +- src/mame/video/atarisy1.cpp | 4 +- src/mame/video/atarisy2.cpp | 4 +- src/mame/video/avgdvg.cpp | 50 +- src/mame/video/avgdvg.h | 64 +- src/mame/video/aztarac.cpp | 4 +- src/mame/video/badlands.cpp | 2 +- src/mame/video/baraduke.cpp | 2 +- src/mame/video/batman.cpp | 10 +- src/mame/video/battlex.cpp | 9 +- src/mame/video/bfm_adr2.cpp | 10 +- src/mame/video/bfm_adr2.h | 11 +- src/mame/video/bfm_dm01.cpp | 50 +- src/mame/video/bfm_dm01.h | 29 +- src/mame/video/bionicc.cpp | 12 +- src/mame/video/bking.cpp | 4 +- src/mame/video/blstroid.cpp | 8 +- src/mame/video/bosco.cpp | 2 +- src/mame/video/c45.cpp | 4 +- src/mame/video/c45.h | 28 +- src/mame/video/capbowl.cpp | 6 +- src/mame/video/carpolo.cpp | 2 +- src/mame/video/cchasm.cpp | 2 +- src/mame/video/cinemat.cpp | 16 +- src/mame/video/comx35.cpp | 12 +- src/mame/video/cps1.cpp | 6 +- src/mame/video/crshrace.cpp | 6 - src/mame/video/crt.cpp | 4 +- src/mame/video/crt.h | 31 +- src/mame/video/cyberbal.cpp | 23 +- src/mame/video/dbz.cpp | 14 +- src/mame/video/dcheese.cpp | 7 +- src/mame/video/dday.cpp | 4 +- src/mame/video/decbac06.cpp | 4 +- src/mame/video/decbac06.h | 11 +- src/mame/video/deckarn.cpp | 4 +- src/mame/video/deckarn.h | 8 +- src/mame/video/decmxc06.cpp | 4 +- src/mame/video/decmxc06.h | 12 +- src/mame/video/deco16ic.cpp | 4 +- src/mame/video/deco16ic.h | 8 +- src/mame/video/deco_mlc.cpp | 2 +- src/mame/video/deco_zoomspr.cpp | 4 +- src/mame/video/deco_zoomspr.h | 8 +- src/mame/video/decocass.cpp | 35 +- src/mame/video/decocomn.cpp | 4 +- src/mame/video/decocomn.h | 9 +- src/mame/video/decodmd1.cpp | 6 +- src/mame/video/decodmd1.h | 18 +- src/mame/video/decodmd2.cpp | 4 +- src/mame/video/decodmd2.h | 31 +- src/mame/video/decodmd3.cpp | 4 +- src/mame/video/decodmd3.h | 28 +- src/mame/video/decospr.cpp | 4 +- src/mame/video/decospr.h | 11 +- src/mame/video/dgn_beta.cpp | 34 +- src/mame/video/djboy.cpp | 2 +- src/mame/video/dkong.cpp | 5 +- src/mame/video/dooyong.cpp | 552 +---- src/mame/video/dooyong.h | 145 ++ src/mame/video/epos.cpp | 59 +- src/mame/video/eprom.cpp | 10 +- src/mame/video/excellent_spr.cpp | 6 +- src/mame/video/excellent_spr.h | 12 +- src/mame/video/exidy440.cpp | 9 +- src/mame/video/exterm.cpp | 2 +- src/mame/video/foodf.cpp | 2 +- src/mame/video/fromance.cpp | 20 +- src/mame/video/fuukifg.cpp | 4 +- src/mame/video/fuukifg.h | 7 +- src/mame/video/fuukifg3.cpp | 2 +- src/mame/video/galaga.cpp | 2 +- src/mame/video/gaplus.cpp | 2 +- src/mame/video/gauntlet.cpp | 4 +- src/mame/video/gic.cpp | 31 +- src/mame/video/gic.h | 42 +- src/mame/video/gijoe.cpp | 12 +- src/mame/video/gime.cpp | 96 +- src/mame/video/gime.h | 28 +- src/mame/video/goal92.cpp | 2 +- src/mame/video/gp9001.cpp | 174 +- src/mame/video/gp9001.h | 154 +- src/mame/video/groundfx.cpp | 2 +- src/mame/video/gstriker.cpp | 6 +- src/mame/video/gtia.cpp | 8 +- src/mame/video/gtia.h | 211 +- src/mame/video/hng64.cpp | 2 +- src/mame/video/homedata.cpp | 2 +- src/mame/video/hyhoo.cpp | 4 +- src/mame/video/hyprduel.cpp | 42 +- src/mame/video/igs017_igs031.cpp | 4 +- src/mame/video/igs017_igs031.h | 46 +- src/mame/video/intv.cpp | 4 +- src/mame/video/inufuku.cpp | 2 +- src/mame/video/itech8.cpp | 14 +- src/mame/video/jalblend.cpp | 6 +- src/mame/video/jalblend.h | 9 +- src/mame/video/k001005.cpp | 6 +- src/mame/video/k001005.h | 38 +- src/mame/video/k001006.cpp | 4 +- src/mame/video/k001006.h | 8 +- src/mame/video/k001604.cpp | 7 +- src/mame/video/k001604.h | 10 +- src/mame/video/k007121.cpp | 8 +- src/mame/video/k007121.h | 13 +- src/mame/video/k007342.cpp | 4 +- src/mame/video/k007342.h | 11 +- src/mame/video/k007420.cpp | 4 +- src/mame/video/k007420.h | 11 +- src/mame/video/k037122.cpp | 7 +- src/mame/video/k037122.h | 11 +- src/mame/video/k051316.cpp | 10 +- src/mame/video/k051316.h | 14 +- src/mame/video/k051733.cpp | 7 +- src/mame/video/k051733.h | 11 +- src/mame/video/k051960.cpp | 9 +- src/mame/video/k051960.h | 14 +- src/mame/video/k052109.cpp | 7 +- src/mame/video/k052109.h | 7 +- src/mame/video/k053244_k053245.cpp | 10 +- src/mame/video/k053244_k053245.h | 15 +- src/mame/video/k053246_k053247_k055673.cpp | 58 +- src/mame/video/k053246_k053247_k055673.h | 23 +- src/mame/video/k053250.cpp | 4 +- src/mame/video/k053250.h | 10 +- src/mame/video/k053250_ps.cpp | 597 ++++++ src/mame/video/k053250_ps.h | 82 + src/mame/video/k053251.cpp | 7 +- src/mame/video/k053251.h | 26 +- src/mame/video/k053936.cpp | 6 +- src/mame/video/k053936.h | 9 +- src/mame/video/k054000.cpp | 7 +- src/mame/video/k054000.h | 12 +- src/mame/video/k054156_k054157_k056832.cpp | 24 +- src/mame/video/k054156_k054157_k056832.h | 23 +- src/mame/video/k054338.cpp | 8 +- src/mame/video/k054338.h | 10 +- src/mame/video/k055555.cpp | 11 +- src/mame/video/k055555.h | 9 +- src/mame/video/k057714.cpp | 6 +- src/mame/video/k057714.h | 11 +- src/mame/video/k1ge.cpp | 15 +- src/mame/video/k1ge.h | 25 +- src/mame/video/kan_pand.cpp | 4 +- src/mame/video/kan_pand.h | 11 +- src/mame/video/kaneko_grap2.cpp | 4 +- src/mame/video/kaneko_grap2.h | 8 +- src/mame/video/kaneko_spr.cpp | 15 +- src/mame/video/kaneko_spr.h | 15 +- src/mame/video/kaneko_tmap.cpp | 4 +- src/mame/video/kaneko_tmap.h | 31 +- src/mame/video/klax.cpp | 4 +- src/mame/video/konami_helper.cpp | 2 +- src/mame/video/ksayakyu.cpp | 7 +- src/mame/video/leland.cpp | 1 + src/mame/video/lemmings.cpp | 2 +- src/mame/video/lethalj.cpp | 4 +- src/mame/video/lockon.cpp | 2 +- src/mame/video/m92.cpp | 10 +- src/mame/video/macrossp.cpp | 2 +- src/mame/video/maria.cpp | 4 +- src/mame/video/maria.h | 10 +- src/mame/video/mb60553.cpp | 38 +- src/mame/video/mb60553.h | 43 +- src/mame/video/mbc55x.cpp | 4 +- src/mame/video/mcatadv.cpp | 2 +- src/mame/video/mcd212.cpp | 6 +- src/mame/video/mcd212.h | 10 +- src/mame/video/megasys1.cpp | 2 +- src/mame/video/mermaid.cpp | 6 +- src/mame/video/micro3d.cpp | 4 +- src/mame/video/midtunit.cpp | 4 +- src/mame/video/midyunit.cpp | 7 +- src/mame/video/model1.cpp | 2 +- src/mame/video/model2.cpp | 2 +- src/mame/video/moo.cpp | 12 +- src/mame/video/ms1_tmap.cpp | 4 +- src/mame/video/ms1_tmap.h | 8 +- src/mame/video/msisaac.cpp | 2 +- src/mame/video/mw8080bw.cpp | 2 +- src/mame/video/n64.cpp | 10 +- src/mame/video/n8080.cpp | 2 +- src/mame/video/namco_c116.cpp | 4 +- src/mame/video/namco_c116.h | 8 +- src/mame/video/namcofl.cpp | 18 +- src/mame/video/namconb1.cpp | 24 +- src/mame/video/namcos1.cpp | 2 +- src/mame/video/namcos2.cpp | 29 +- src/mame/video/namcos21.cpp | 4 +- src/mame/video/namcos86.cpp | 2 +- src/mame/video/neogeo.cpp | 3 + src/mame/video/neogeo_spr.cpp | 19 +- src/mame/video/neogeo_spr.h | 23 +- src/mame/video/nes.cpp | 2 +- src/mame/video/newport.cpp | 4 +- src/mame/video/newport.h | 213 +- src/mame/video/nick.cpp | 4 +- src/mame/video/nick.h | 2 +- src/mame/video/ninjakd2.cpp | 4 +- src/mame/video/offtwall.cpp | 4 +- src/mame/video/overdriv.cpp | 10 +- src/mame/video/parodius.cpp | 16 +- src/mame/video/pastelg.cpp | 4 +- src/mame/video/pc080sn.cpp | 4 +- src/mame/video/pc080sn.h | 11 +- src/mame/video/pc090oj.cpp | 4 +- src/mame/video/pc090oj.h | 11 +- src/mame/video/pc4.cpp | 2 +- src/mame/video/pc_t1t.cpp | 12 +- src/mame/video/pc_t1t.h | 65 +- src/mame/video/pcd.cpp | 24 +- src/mame/video/pcd.h | 20 +- src/mame/video/pdp1.cpp | 2 +- src/mame/video/pecom.cpp | 6 +- src/mame/video/pgm.cpp | 2 +- src/mame/video/powervr2.cpp | 8 +- src/mame/video/powervr2.h | 10 +- src/mame/video/psikyo.cpp | 2 +- src/mame/video/rdpblend.cpp | 2 +- src/mame/video/redclash.cpp | 6 +- src/mame/video/relief.cpp | 8 +- src/mame/video/rollerg.cpp | 8 +- src/mame/video/rpunch.cpp | 33 +- src/mame/video/sega16sp.cpp | 51 +- src/mame/video/sega16sp.h | 28 +- src/mame/video/segag80r.cpp | 2 +- src/mame/video/segag80v.cpp | 2 +- src/mame/video/segahang.cpp | 20 +- src/mame/video/segaic16.cpp | 26 +- src/mame/video/segaic16.h | 143 +- src/mame/video/segaic16_road.cpp | 40 +- src/mame/video/segaic16_road.h | 63 +- src/mame/video/segaic24.cpp | 93 +- src/mame/video/segaic24.h | 28 +- src/mame/video/segaorun.cpp | 40 +- src/mame/video/segas16a.cpp | 18 +- src/mame/video/segas16b.cpp | 16 +- src/mame/video/segas18.cpp | 18 +- src/mame/video/segas24.cpp | 4 +- src/mame/video/segas32.cpp | 5 +- src/mame/video/segaxbd.cpp | 22 +- src/mame/video/segaybd.cpp | 2 +- src/mame/video/seibu_crtc.cpp | 4 +- src/mame/video/seibu_crtc.h | 20 +- src/mame/video/seta.cpp | 2 +- src/mame/video/seta001.cpp | 4 +- src/mame/video/seta001.h | 8 +- src/mame/video/seta2.cpp | 2 +- src/mame/video/shadfrce.cpp | 2 +- src/mame/video/shuuz.cpp | 4 +- src/mame/video/simpsons.cpp | 16 +- src/mame/video/sknsspr.cpp | 6 +- src/mame/video/sknsspr.h | 9 +- src/mame/video/skullxbo.cpp | 6 +- src/mame/video/slapshot.cpp | 2 +- src/mame/video/snk6502.cpp | 7 + src/mame/video/snk68_spr.cpp | 4 +- src/mame/video/snk68_spr.h | 9 +- src/mame/video/spectrum.cpp | 2 +- src/mame/video/sprint2.cpp | 6 +- src/mame/video/sprint4.cpp | 57 +- src/mame/video/sprint8.cpp | 36 +- src/mame/video/sspeedr.cpp | 2 +- src/mame/video/ssrj.cpp | 2 +- src/mame/video/ssv.cpp | 2 +- src/mame/video/st0020.cpp | 684 ++++-- src/mame/video/st0020.h | 79 +- src/mame/video/starshp1.cpp | 12 +- src/mame/video/stfight_dev.cpp | 4 +- src/mame/video/stfight_dev.h | 8 +- src/mame/video/stic.cpp | 711 +++++-- src/mame/video/stic.h | 512 +---- src/mame/video/super80.cpp | 2 +- src/mame/video/suprslam.cpp | 10 +- src/mame/video/surpratk.cpp | 16 +- src/mame/video/taito_b.cpp | 8 +- src/mame/video/taito_f2.cpp | 10 +- src/mame/video/taito_f3.cpp | 2 +- src/mame/video/taito_l.cpp | 2 +- src/mame/video/tank8.cpp | 6 +- src/mame/video/tankbust.cpp | 6 +- src/mame/video/taotaido.cpp | 2 +- src/mame/video/tatsumi.cpp | 2 +- src/mame/video/tc0080vco.cpp | 4 +- src/mame/video/tc0080vco.h | 11 +- src/mame/video/tc0100scn.cpp | 4 +- src/mame/video/tc0100scn.h | 13 +- src/mame/video/tc0110pcr.cpp | 4 +- src/mame/video/tc0110pcr.h | 11 +- src/mame/video/tc0150rod.cpp | 6 +- src/mame/video/tc0150rod.h | 11 +- src/mame/video/tc0180vcu.cpp | 4 +- src/mame/video/tc0180vcu.h | 11 +- src/mame/video/tc0280grd.cpp | 4 +- src/mame/video/tc0280grd.h | 12 +- src/mame/video/tc0360pri.cpp | 4 +- src/mame/video/tc0360pri.h | 11 +- src/mame/video/tc0480scp.cpp | 4 +- src/mame/video/tc0480scp.h | 11 +- src/mame/video/tc0780fpa.cpp | 6 +- src/mame/video/tc0780fpa.h | 11 +- src/mame/video/tceptor.cpp | 2 +- src/mame/video/tecmo_mix.cpp | 16 +- src/mame/video/tecmo_mix.h | 10 +- src/mame/video/tecmo_spr.cpp | 10 +- src/mame/video/tecmo_spr.h | 9 +- src/mame/video/thomson.cpp | 2 +- src/mame/video/thunderj.cpp | 10 +- src/mame/video/tia.cpp | 20 +- src/mame/video/tia.h | 14 +- src/mame/video/tigeroad_spr.cpp | 4 +- src/mame/video/tigeroad_spr.h | 8 +- src/mame/video/timex.cpp | 2 +- src/mame/video/tmc600.cpp | 6 +- src/mame/video/tmnt.cpp | 70 +- src/mame/video/tnzs.cpp | 2 +- src/mame/video/toaplan1.cpp | 6 +- src/mame/video/toaplan2.cpp | 30 +- src/mame/video/toaplan_scu.cpp | 6 +- src/mame/video/toaplan_scu.h | 13 +- src/mame/video/toobin.cpp | 4 +- src/mame/video/triplhnt.cpp | 20 +- src/mame/video/tubep.cpp | 8 +- src/mame/video/twin16.cpp | 2 +- src/mame/video/tx0.cpp | 2 +- src/mame/video/tx1.cpp | 4 +- src/mame/video/ultratnk.cpp | 52 +- src/mame/video/uv201.cpp | 4 +- src/mame/video/uv201.h | 7 +- src/mame/video/vc4000.cpp | 1 + src/mame/video/vendetta.cpp | 14 +- src/mame/video/vertigo.cpp | 2 +- src/mame/video/vicdual-97269pb.cpp | 157 ++ src/mame/video/vicdual-97269pb.h | 42 + src/mame/video/vicdual.cpp | 30 +- src/mame/video/victory.cpp | 3 +- src/mame/video/vindictr.cpp | 4 +- src/mame/video/volfied.cpp | 20 +- src/mame/video/vrender0.cpp | 4 +- src/mame/video/vrender0.h | 58 +- src/mame/video/vs920a.cpp | 26 +- src/mame/video/vs920a.h | 26 +- src/mame/video/vsystem_gga.cpp | 69 + src/mame/video/vsystem_gga.h | 57 + src/mame/video/vsystem_spr.cpp | 59 +- src/mame/video/vsystem_spr.h | 65 +- src/mame/video/vsystem_spr2.cpp | 123 +- src/mame/video/vsystem_spr2.h | 76 +- src/mame/video/vtvideo.cpp | 15 +- src/mame/video/vtvideo.h | 21 +- src/mame/video/williams.cpp | 67 +- src/mame/video/wolfpack.cpp | 51 +- src/mame/video/wpc_dmd.cpp | 4 +- src/mame/video/wpc_dmd.h | 10 +- src/mame/video/wswan.cpp | 6 +- src/mame/video/wswan.h | 10 +- src/mame/video/xbox_nv2a.cpp | 20 +- src/mame/video/xexex.cpp | 14 +- src/mame/video/xmen.cpp | 34 +- src/mame/video/xybots.cpp | 4 +- src/mame/video/ygv608.cpp | 193 +- src/mame/video/ygv608.h | 378 +--- src/mame/video/zx8301.cpp | 4 +- src/mame/video/zx8301.h | 12 +- src/osd/modules/debugger/osx/errorlogviewer.mm | 2 +- src/osd/modules/debugger/osx/memoryviewer.mm | 2 +- src/osd/modules/debugger/win/logwininfo.cpp | 2 +- src/osd/modules/render/bgfx/chainmanager.cpp | 10 +- src/osd/modules/render/bgfx/effectmanager.cpp | 4 +- src/osd/modules/render/bgfx/shadermanager.cpp | 19 +- .../render/bgfx/shaders/chains/hqx/fs_hq2x.sc | 20 +- .../render/bgfx/shaders/chains/hqx/fs_hq3x.sc | 20 +- .../render/bgfx/shaders/chains/hqx/fs_hq4x.sc | 20 +- src/osd/modules/render/d3d/d3dhlsl.cpp | 2 +- src/osd/sdl/sdlmain.cpp | 10 +- src/osd/sdl/window.cpp | 4 +- src/osd/windows/window.cpp | 4 +- src/osd/windows/winmain.cpp | 4 +- src/tools/chdman.cpp | 2 +- src/tools/floptool.cpp | 4 + src/tools/imgtool/filtbas.cpp | 2 +- src/tools/imgtool/imghd.cpp | 5 +- src/tools/imgtool/imghd.h | 4 +- src/tools/imgtool/imgtool.cpp | 54 +- src/tools/imgtool/imgtool.h | 2 +- src/tools/imgtool/main.cpp | 4 +- src/tools/imgtool/modules/macutil.cpp | 15 +- src/tools/imgtool/stream.cpp | 2 +- src/tools/imgtool/stream.h | 2 +- src/tools/romcmp.cpp | 95 +- src/tools/unidasm.cpp | 2 +- src/zexall/main.cpp | 10 +- 3836 files changed, 84985 insertions(+), 63881 deletions(-) create mode 100644 src/devices/video/hp1ll3.cpp create mode 100644 src/devices/video/hp1ll3.h create mode 100644 src/emu/dipalette.cpp create mode 100644 src/emu/dipalette.h create mode 100644 src/emu/http.cpp create mode 100644 src/emu/http.h create mode 100644 src/emu/layout/ie15.lay create mode 100644 src/lib/formats/hp_ipc_dsk.cpp create mode 100644 src/lib/formats/hp_ipc_dsk.h create mode 100644 src/lib/formats/hpi_dsk.cpp create mode 100644 src/lib/formats/hpi_dsk.h create mode 100644 src/lib/formats/jfd_dsk.cpp create mode 100644 src/lib/formats/jfd_dsk.h create mode 100644 src/mame/audio/gamate.h create mode 100644 src/mame/audio/gomoku.h create mode 100644 src/mame/audio/leland.h create mode 100644 src/mame/audio/micro3d.h create mode 100644 src/mame/audio/phoenix.h create mode 100644 src/mame/audio/snk6502.h create mode 100644 src/mame/audio/tiamc1.h create mode 100644 src/mame/audio/vicdual-97271p.cpp create mode 100644 src/mame/audio/vicdual-97271p.h create mode 100644 src/mame/drivers/agat.cpp delete mode 100644 src/mame/drivers/amazonlf.cpp create mode 100644 src/mame/drivers/bpmmicro.cpp create mode 100644 src/mame/drivers/clpoker.cpp create mode 100644 src/mame/drivers/fidelmcs48.cpp create mode 100644 src/mame/drivers/gaelcopc.cpp create mode 100644 src/mame/drivers/giclassic.cpp create mode 100644 src/mame/drivers/hh_sm500.cpp delete mode 100644 src/mame/drivers/mayumi.cpp create mode 100644 src/mame/drivers/minitel_2_rpic.cpp create mode 100644 src/mame/drivers/mtouchxl.cpp create mode 100644 src/mame/drivers/novagmcs48.cpp create mode 100644 src/mame/drivers/otomedius.cpp create mode 100644 src/mame/drivers/patapata.cpp create mode 100644 src/mame/drivers/piratesh.cpp create mode 100644 src/mame/drivers/scyclone.cpp create mode 100644 src/mame/drivers/supstarf.cpp delete mode 100644 src/mame/drivers/tokyocop.cpp create mode 100644 src/mame/drivers/usbilliards.cpp delete mode 100644 src/mame/includes/dooyong.h delete mode 100644 src/mame/includes/gamate.h delete mode 100644 src/mame/includes/namcoic.h create mode 100644 src/mame/includes/xbox_pci.h create mode 100644 src/mame/layout/7smash.lay create mode 100644 src/mame/layout/acommand.lay create mode 100644 src/mame/layout/fidel_dsc.lay create mode 100644 src/mame/layout/fidel_sc6.lay create mode 100644 src/mame/layout/fidel_sc8.lay delete mode 100644 src/mame/layout/ie15.lay create mode 100644 src/mame/layout/jclub2.lay create mode 100644 src/mame/layout/jclub2o.lay create mode 100644 src/mame/layout/novag_presto.lay create mode 100644 src/mame/layout/one4all.lay create mode 100644 src/mame/layout/pasha2.lay create mode 100644 src/mame/layout/qnilenl.lay create mode 100644 src/mame/layout/ti25503.lay create mode 100644 src/mame/layout/toutangonl.lay create mode 100644 src/mame/layout/us2pfball.lay delete mode 100644 src/mame/machine/ie15_kbd.cpp delete mode 100644 src/mame/machine/ie15_kbd.h create mode 100644 src/mame/machine/namcoic.h create mode 100644 src/mame/machine/victor9k_kb.cpp create mode 100644 src/mame/machine/victor9k_kb.h delete mode 100644 src/mame/machine/victor9kb.cpp delete mode 100644 src/mame/machine/victor9kb.h create mode 100644 src/mame/machine/vs9209.cpp create mode 100644 src/mame/machine/vs9209.h create mode 100644 src/mame/machine/xbox_pci.cpp create mode 100644 src/mame/video/agat7.cpp create mode 100644 src/mame/video/agat7.h create mode 100644 src/mame/video/dooyong.h create mode 100644 src/mame/video/k053250_ps.cpp create mode 100644 src/mame/video/k053250_ps.h create mode 100644 src/mame/video/vicdual-97269pb.cpp create mode 100644 src/mame/video/vicdual-97269pb.h create mode 100644 src/mame/video/vsystem_gga.cpp create mode 100644 src/mame/video/vsystem_gga.h diff --git a/src/devices/sound/pci-ac97.cpp b/src/devices/sound/pci-ac97.cpp index b263c50b803..daee927bc6b 100644 --- a/src/devices/sound/pci-ac97.cpp +++ b/src/devices/sound/pci-ac97.cpp @@ -3,7 +3,7 @@ #include "emu.h" #include "pci-ac97.h" -const device_type AC97 = device_creator; +DEFINE_DEVICE_TYPE(AC97, ac97_device, "ac97", "AC'97 Audio") DEVICE_ADDRESS_MAP_START(native_audio_mixer_map, 32, ac97_device) ADDRESS_MAP_END @@ -18,7 +18,7 @@ DEVICE_ADDRESS_MAP_START(bus_mastering_map, 32, ac97_device) ADDRESS_MAP_END ac97_device::ac97_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pci_device(mconfig, AC97, "AC97 audio", tag, owner, clock, "ac97", __FILE__) + : pci_device(mconfig, AC97, tag, owner, clock) { } diff --git a/src/devices/sound/pci-ac97.h b/src/devices/sound/pci-ac97.h index 00cddfd29ef..0f88f10f338 100644 --- a/src/devices/sound/pci-ac97.h +++ b/src/devices/sound/pci-ac97.h @@ -1,12 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef PCI_AC97_H -#define PCI_AC97_H +#ifndef MAME_SOUND_PCI_AC97_H +#define MAME_SOUND_PCI_AC97_H + +#pragma once #include "machine/pci.h" #define MCFG_AC97_ADD(_tag, _main_id, _revision, _subdevice_id) \ - MCFG_PCI_DEVICE_ADD(_tag, AC97, _main_id, _revision, 0x040300, _subdevice_id) + MCFG_PCI_DEVICE_ADD(_tag, AC97, _main_id, _revision, 0x040300, _subdevice_id) class ac97_device : public pci_device { public: @@ -23,6 +25,6 @@ private: DECLARE_ADDRESS_MAP(bus_mastering_map, 32); }; -extern const device_type AC97; +DECLARE_DEVICE_TYPE(AC97, ac97_device) -#endif +#endif // MAME_SOUND_PCI_AC97_H diff --git a/src/devices/sound/pokey.cpp b/src/devices/sound/pokey.cpp index 61cd505a28e..adb4fe8dd42 100644 --- a/src/devices/sound/pokey.cpp +++ b/src/devices/sound/pokey.cpp @@ -167,7 +167,7 @@ static const int clock_divisors[3] = {1, DIV_64, DIV_15}; // device type definition -const device_type POKEY = device_creator; +DEFINE_DEVICE_TYPE(POKEY, pokey_device, "pokey", "Atari C012294 POKEY") //************************************************************************** // LIVE DEVICE @@ -178,21 +178,14 @@ const device_type POKEY = device_creator; //------------------------------------------------- pokey_device::pokey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, POKEY, "POKEY", tag, owner, clock, "pokey", __FILE__), + : device_t(mconfig, POKEY, tag, owner, clock), device_sound_interface(mconfig, *this), device_execute_interface(mconfig, *this), device_state_interface(mconfig, *this), m_output_type(LEGACY_LINEAR), m_icount(0), m_stream(nullptr), - m_pot0_r_cb(*this), - m_pot1_r_cb(*this), - m_pot2_r_cb(*this), - m_pot3_r_cb(*this), - m_pot4_r_cb(*this), - m_pot5_r_cb(*this), - m_pot6_r_cb(*this), - m_pot7_r_cb(*this), + m_pot_r_cb{ {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this} }, m_allpot_r_cb(*this), m_serin_r_cb(*this), m_serout_w_cb(*this) @@ -275,14 +268,8 @@ void pokey_device::device_start() m_POTx[i] = 0; } - m_pot0_r_cb.resolve(); - m_pot1_r_cb.resolve(); - m_pot2_r_cb.resolve(); - m_pot3_r_cb.resolve(); - m_pot4_r_cb.resolve(); - m_pot5_r_cb.resolve(); - m_pot6_r_cb.resolve(); - m_pot7_r_cb.resolve(); + for (devcb_read8 &cb : m_pot_r_cb) + cb.resolve(); m_allpot_r_cb.resolve(); m_serin_r_cb.resolve(); m_serout_w_cb.resolve_safe(); @@ -1113,184 +1100,25 @@ void pokey_device::pokey_potgo(void) for( pot = 0; pot < 8; pot++ ) { m_POTx[pot] = 228; - switch (pot) + if( !m_pot_r_cb[pot].isnull() ) { - case 0: - if( !m_pot0_r_cb.isnull() ) - { - int r = m_pot0_r_cb(pot); - - LOG(("POKEY %s pot_r(%d) returned $%02x\n", tag(), pot, r)); - if (r >= 228) - { - r = 228; - } - if (r == 0) - { - /* immediately set the ready - bit of m_ALLPOT - * In this case, most likely no capacitor is connected - */ - m_ALLPOT |= (1<= 228) - { - r = 228; - } - if (r == 0) - { - /* immediately set the ready - bit of m_ALLPOT - * In this case, most likely no capacitor is connected - */ - m_ALLPOT |= (1<= 228) - { - r = 228; - } - if (r == 0) - { - /* immediately set the ready - bit of m_ALLPOT - * In this case, most likely no capacitor is connected - */ - m_ALLPOT |= (1<= 228) - { - r = 228; - } - if (r == 0) - { - /* immediately set the ready - bit of m_ALLPOT - * In this case, most likely no capacitor is connected - */ - m_ALLPOT |= (1<= 228) - { - r = 228; - } - if (r == 0) - { - /* immediately set the ready - bit of m_ALLPOT - * In this case, most likely no capacitor is connected - */ - m_ALLPOT |= (1<= 228) - { - r = 228; - } - if (r == 0) - { - /* immediately set the ready - bit of m_ALLPOT - * In this case, most likely no capacitor is connected - */ - m_ALLPOT |= (1<= 228) - { - r = 228; - } - if (r == 0) - { - /* immediately set the ready - bit of m_ALLPOT - * In this case, most likely no capacitor is connected - */ - m_ALLPOT |= (1<= 228) - { - r = 228; - } - if (r == 0) - { - /* immediately set the ready - bit of m_ALLPOT - * In this case, most likely no capacitor is connected - */ - m_ALLPOT |= (1<= 228) + { + r = 228; + } + if (r == 0) + { + /* immediately set the ready - bit of m_ALLPOT + * In this case, most likely no capacitor is connected + */ + m_ALLPOT |= (1< pokey_kb_cb_delegate; -typedef device_delegate pokey_int_cb_delegate; - #define POKEY_KEYBOARD_CB_MEMBER(_name) uint8_t _name(uint8_t k543210) #define POKEY_INTERRUPT_CB_MEMBER(_name) void _name(int mask) @@ -67,28 +59,28 @@ typedef device_delegate pokey_int_cb_delegate; //************************************************************************** #define MCFG_POKEY_POT0_R_CB(_devcb) \ - devcb = &pokey_device::set_pot0_r_callback(*device, DEVCB_##_devcb); + devcb = &pokey_device::set_pot_r_callback<0>(*device, DEVCB_##_devcb); #define MCFG_POKEY_POT1_R_CB(_devcb) \ - devcb = &pokey_device::set_pot1_r_callback(*device, DEVCB_##_devcb); + devcb = &pokey_device::set_pot_r_callback<1>(*device, DEVCB_##_devcb); #define MCFG_POKEY_POT2_R_CB(_devcb) \ - devcb = &pokey_device::set_pot2_r_callback(*device, DEVCB_##_devcb); + devcb = &pokey_device::set_pot_r_callback<2>(*device, DEVCB_##_devcb); #define MCFG_POKEY_POT3_R_CB(_devcb) \ - devcb = &pokey_device::set_pot3_r_callback(*device, DEVCB_##_devcb); + devcb = &pokey_device::set_pot_r_callback<3>(*device, DEVCB_##_devcb); #define MCFG_POKEY_POT4_R_CB(_devcb) \ - devcb = &pokey_device::set_pot4_r_callback(*device, DEVCB_##_devcb); + devcb = &pokey_device::set_pot_r_callback<4>(*device, DEVCB_##_devcb); #define MCFG_POKEY_POT5_R_CB(_devcb) \ - devcb = &pokey_device::set_pot5_r_callback(*device, DEVCB_##_devcb); + devcb = &pokey_device::set_pot_r_callback<5>(*device, DEVCB_##_devcb); #define MCFG_POKEY_POT6_R_CB(_devcb) \ - devcb = &pokey_device::set_pot6_r_callback(*device, DEVCB_##_devcb); + devcb = &pokey_device::set_pot_r_callback<6>(*device, DEVCB_##_devcb); #define MCFG_POKEY_POT7_R_CB(_devcb) \ - devcb = &pokey_device::set_pot7_r_callback(*device, DEVCB_##_devcb); + devcb = &pokey_device::set_pot_r_callback<7>(*device, DEVCB_##_devcb); #define MCFG_POKEY_ALLPOT_R_CB(_devcb) \ devcb = &pokey_device::set_allpot_r_callback(*device, DEVCB_##_devcb); @@ -102,10 +94,10 @@ typedef device_delegate pokey_int_cb_delegate; /* k543210 = k5 ... k0 returns bit0: kr1, bit1: kr2 */ /* all are, in contrast to actual hardware, ACTIVE_HIGH */ #define MCFG_POKEY_KEYBOARD_CB(_class, _method) \ - pokey_device::set_keyboard_callback(*device, pokey_kb_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + pokey_device::set_keyboard_callback(*device, pokey_device::kb_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_POKEY_INTERRUPT_CB(_class, _method) \ - pokey_device::set_interrupt_callback(*device, pokey_int_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + pokey_device::set_interrupt_callback(*device, pokey_device::int_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_POKEY_OUTPUT_RC(_R, _C, _V) \ @@ -144,6 +136,14 @@ class pokey_device : public device_t, { public: + typedef device_delegate kb_cb_delegate; + typedef device_delegate int_cb_delegate; + + /* CONSTANT DEFINITIONS */ + + /* exact 1.79 MHz clock freq (of the Atari 800 that is) */ + static constexpr unsigned FREQ_17_EXACT = 1789790; + enum { POK_KEY_BREAK = 0x30, @@ -210,20 +210,13 @@ public: // construction/destruction pokey_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_pot0_r_callback(device_t &device, _Object object) { return downcast(device).m_pot0_r_cb.set_callback(object); } - template static devcb_base &set_pot1_r_callback(device_t &device, _Object object) { return downcast(device).m_pot1_r_cb.set_callback(object); } - template static devcb_base &set_pot2_r_callback(device_t &device, _Object object) { return downcast(device).m_pot2_r_cb.set_callback(object); } - template static devcb_base &set_pot3_r_callback(device_t &device, _Object object) { return downcast(device).m_pot3_r_cb.set_callback(object); } - template static devcb_base &set_pot4_r_callback(device_t &device, _Object object) { return downcast(device).m_pot4_r_cb.set_callback(object); } - template static devcb_base &set_pot5_r_callback(device_t &device, _Object object) { return downcast(device).m_pot5_r_cb.set_callback(object); } - template static devcb_base &set_pot6_r_callback(device_t &device, _Object object) { return downcast(device).m_pot6_r_cb.set_callback(object); } - template static devcb_base &set_pot7_r_callback(device_t &device, _Object object) { return downcast(device).m_pot7_r_cb.set_callback(object); } - template static devcb_base &set_allpot_r_callback(device_t &device, _Object object) { return downcast(device).m_allpot_r_cb.set_callback(object); } - template static devcb_base &set_serin_r_callback(device_t &device, _Object object) { return downcast(device).m_serin_r_cb.set_callback(object); } - template static devcb_base &set_serout_w_callback(device_t &device, _Object object) { return downcast(device).m_serout_w_cb.set_callback(object); } - - static void set_keyboard_callback(device_t &device, pokey_kb_cb_delegate callback) { downcast(device).m_keyboard_r = callback; } - static void set_interrupt_callback(device_t &device, pokey_int_cb_delegate callback) { downcast(device).m_irq_f = callback; } + template static devcb_base &set_pot_r_callback(device_t &device, Object &&cb) { return downcast(device).m_pot_r_cb[N].set_callback(std::forward(cb)); } + template static devcb_base &set_allpot_r_callback(device_t &device, Object &&cb) { return downcast(device).m_allpot_r_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_serin_r_callback(device_t &device, Object &&cb) { return downcast(device).m_serin_r_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_serout_w_callback(device_t &device, Object &&cb) { return downcast(device).m_serout_w_cb.set_callback(std::forward(cb)); } + + static void set_keyboard_callback(device_t &device, kb_cb_delegate &&cb) { downcast(device).m_keyboard_r = std::move(cb); } + static void set_interrupt_callback(device_t &device, int_cb_delegate &&cb) { downcast(device).m_irq_f = std::move(cb); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -260,7 +253,6 @@ protected: private: - class pokey_channel { public: @@ -303,7 +295,7 @@ private: } }; - static const int POKEY_CHANNELS = 4; + static constexpr int POKEY_CHANNELS = 4; uint32_t step_one_clock(); void step_keyboard(); @@ -334,20 +326,13 @@ private: uint32_t m_p9; /* poly9 index */ uint32_t m_p17; /* poly17 index */ - devcb_read8 m_pot0_r_cb; - devcb_read8 m_pot1_r_cb; - devcb_read8 m_pot2_r_cb; - devcb_read8 m_pot3_r_cb; - devcb_read8 m_pot4_r_cb; - devcb_read8 m_pot5_r_cb; - devcb_read8 m_pot6_r_cb; - devcb_read8 m_pot7_r_cb; + devcb_read8 m_pot_r_cb[8]; devcb_read8 m_allpot_r_cb; devcb_read8 m_serin_r_cb; devcb_write8 m_serout_w_cb; - pokey_kb_cb_delegate m_keyboard_r; - pokey_int_cb_delegate m_irq_f; + kb_cb_delegate m_keyboard_r; + int_cb_delegate m_irq_f; uint8_t m_POTx[8]; /* POTx (R/D200-D207) */ uint8_t m_AUDCTL; /* AUDCTL (W/D208) */ @@ -376,6 +361,6 @@ private: // device type definition -extern const device_type POKEY; +DECLARE_DEVICE_TYPE(POKEY, pokey_device) -#endif /* __POKEY_H__ */ +#endif // MAME_SOUND_POKEY_H diff --git a/src/devices/sound/qs1000.cpp b/src/devices/sound/qs1000.cpp index c34171e39c6..f5b365451be 100644 --- a/src/devices/sound/qs1000.cpp +++ b/src/devices/sound/qs1000.cpp @@ -131,7 +131,7 @@ // device type definition -const device_type QS1000 = device_creator; +DEFINE_DEVICE_TYPE(QS1000, qs1000_device, "qs1000", "QS1000") //************************************************************************** // GLOBAL VARIABLES @@ -175,7 +175,7 @@ ROM_END // qs1000_device - constructor //------------------------------------------------- qs1000_device::qs1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, QS1000, "QS1000", tag, owner, clock, "qs1000", __FILE__), + : device_t(mconfig, QS1000, tag, owner, clock), device_sound_interface(mconfig, *this), device_rom_interface(mconfig, *this, 24), m_external_rom(false), diff --git a/src/devices/sound/qs1000.h b/src/devices/sound/qs1000.h index b7f2f07b45e..16201ea2424 100644 --- a/src/devices/sound/qs1000.h +++ b/src/devices/sound/qs1000.h @@ -8,10 +8,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_SOUND_QS1000_H +#define MAME_SOUND_QS1000_H -#ifndef __QS1000_H__ -#define __QS1000_H__ +#pragma once #include "cpu/mcs51/mcs51.h" #include "sound/okiadpcm.h" @@ -48,9 +48,6 @@ // TYPE DEFINITIONS //************************************************************************** -#define QS1000_CHANNELS 32 -#define QS1000_ADDRESS_MASK 0xffffff - // ======================> qs1000_device class qs1000_device : public device_t, @@ -62,33 +59,18 @@ public: qs1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void set_external_rom(device_t &device, bool external_rom) { downcast(device).m_external_rom = external_rom; } - template static devcb_base &set_in_p1_callback(device_t &device, _Object object) { return downcast(device).m_in_p1_cb.set_callback(object); } - template static devcb_base &set_in_p2_callback(device_t &device, _Object object) { return downcast(device).m_in_p2_cb.set_callback(object); } - template static devcb_base &set_in_p3_callback(device_t &device, _Object object) { return downcast(device).m_in_p3_cb.set_callback(object); } - template static devcb_base &set_out_p1_callback(device_t &device, _Object object) { return downcast(device).m_out_p1_cb.set_callback(object); } - template static devcb_base &set_out_p2_callback(device_t &device, _Object object) { return downcast(device).m_out_p2_cb.set_callback(object); } - template static devcb_base &set_out_p3_callback(device_t &device, _Object object) { return downcast(device).m_out_p3_cb.set_callback(object); } - //template static devcb_base &set_serial_w_callback(device_t &device, _Object object) { return downcast(device).m_serial_w_cb.set_callback(object); } + template static devcb_base &set_in_p1_callback(device_t &device, Object &&cb) { return downcast(device).m_in_p1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_in_p2_callback(device_t &device, Object &&cb) { return downcast(device).m_in_p2_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_in_p3_callback(device_t &device, Object &&cb) { return downcast(device).m_in_p3_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_p1_callback(device_t &device, Object &&cb) { return downcast(device).m_out_p1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_p2_callback(device_t &device, Object &&cb) { return downcast(device).m_out_p2_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_p3_callback(device_t &device, Object &&cb) { return downcast(device).m_out_p3_cb.set_callback(std::forward(cb)); } + //template static devcb_base &set_serial_w_callback(device_t &device, Object &&cb) { return downcast(device).m_serial_w_cb.set_callback(std::forward(cb)); } // external void serial_in(uint8_t data); void set_irq(int state); -protected: - // device-level overrides - virtual const tiny_rom_entry *device_rom_region() const override; - virtual machine_config_constructor device_mconfig_additions() const override; - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - - // device_sound_interface overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - - // device_rom_interface overrides - virtual void rom_bank_updated() override; - -public: DECLARE_WRITE8_MEMBER( wave_w ); DECLARE_READ8_MEMBER( p0_r ); @@ -105,6 +87,24 @@ public: DECLARE_READ8_MEMBER( data_to_i8052 ); +protected: + // device-level overrides + virtual const tiny_rom_entry *device_rom_region() const override; + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; + virtual void device_reset() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + + // device_sound_interface overrides + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + + // device_rom_interface overrides + virtual void rom_bank_updated() override; + +private: + static constexpr unsigned QS1000_CHANNELS = 32; + static constexpr offs_t QS1000_ADDRESS_MASK = 0x00ffffff; + enum { QS1000_KEYON = 1, @@ -157,7 +157,6 @@ public: // device type definition -extern const device_type QS1000; - +DECLARE_DEVICE_TYPE(QS1000, qs1000_device) -#endif /* __QS1000_H__ */ +#endif // MAME_SOUND_QS1000_H diff --git a/src/devices/sound/qsound.cpp b/src/devices/sound/qsound.cpp index 6b69f69e9aa..06fdfad684b 100644 --- a/src/devices/sound/qsound.cpp +++ b/src/devices/sound/qsound.cpp @@ -21,22 +21,35 @@ - understand reg 9 - understand other writes to $90-$ff area + Links: + https://siliconpr0n.org/map/capcom/dl-1425 + ***************************************************************************/ #include "emu.h" #include "qsound.h" // device type definition -const device_type QSOUND = device_creator; +DEFINE_DEVICE_TYPE(QSOUND, qsound_device, "qsound", "Q-Sound") -// program map for the DSP (points to internal 4096 words of internal ROM) +// program map for the DSP16A; note that apparently Western Electric/AT&T +// expanded the size of the available mask ROM on the DSP16A over time after +// it was released. +// As originally released, the DSP16A had 4096 words of ROM, but the DL-1425 +// chip decapped by siliconpr0n clearly shows 3x as much ROM as that, a total +// of 12288 words of internal ROM. +// The older DSP16 non-a part has 2048 words of ROM. static ADDRESS_MAP_START( dsp16_program_map, AS_PROGRAM, 16, qsound_device ) - AM_RANGE(0x0000, 0x0fff) AM_ROM + AM_RANGE(0x0000, 0x2fff) AM_ROM ADDRESS_MAP_END -// data map for the DSP (the dsp16 appears to use 2048 words of internal RAM) +// data map for the DSP16A; again, Western Electric/AT&T expanded the size of +// the ram over time. +// As originally released, the DSP16A had 1024 words of internal RAM, +// but this was expanded to 2048 words in the DL-1425 decap. +// The older DSP16 non-a part has 512 words of RAM. static ADDRESS_MAP_START( dsp16_data_map, AS_DATA, 16, qsound_device ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x07ff) AM_RAM @@ -52,10 +65,9 @@ MACHINE_CONFIG_END // ROM definition for the Qsound program ROM -// NOTE: ROM is marked as bad since a handful of questionable bits haven't been fully examined. ROM_START( qsound ) - ROM_REGION( 0x2000, "qsound", 0 ) - ROM_LOAD16_WORD( "qsound.bin", 0x0000, 0x2000, BAD_DUMP CRC(059c847d) SHA1(229cead1be2f86733dd80573d4983ba482355ece) ) + ROM_REGION( 0x6000, "qsound", 0 ) + ROM_LOAD16_WORD( "dl-1425.bin", 0x0000, 0x6000, CRC(d6cf5ef5) SHA1(555f50fe5cdf127619da7d854c03f4a244a0c501) ) ROM_END @@ -68,7 +80,7 @@ ROM_END //------------------------------------------------- qsound_device::qsound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, QSOUND, "Q-Sound", tag, owner, clock, "qsound", __FILE__), + : device_t(mconfig, QSOUND, tag, owner, clock), device_sound_interface(mconfig, *this), m_cpu(*this, "qsound"), m_sample_rom(*this, DEVICE_SELF), diff --git a/src/devices/sound/qsound.h b/src/devices/sound/qsound.h index 7c73b4ddf63..fa5732dab1f 100644 --- a/src/devices/sound/qsound.h +++ b/src/devices/sound/qsound.h @@ -6,10 +6,10 @@ *********************************************************/ -#pragma once +#ifndef MAME_SOUND_QSOUND_H +#define MAME_SOUND_QSOUND_H -#ifndef __QSOUND_H__ -#define __QSOUND_H__ +#pragma once #include "cpu/dsp16/dsp16.h" @@ -28,12 +28,10 @@ // ======================> qsound_device -class qsound_device : public device_t, - public device_sound_interface +class qsound_device : public device_t, public device_sound_interface { public: qsound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~qsound_device() { } DECLARE_WRITE8_MEMBER(qsound_w); DECLARE_READ8_MEMBER(qsound_r); @@ -75,7 +73,6 @@ private: void write_data(uint8_t address, uint16_t data); }; -extern const device_type QSOUND; - +DECLARE_DEVICE_TYPE(QSOUND, qsound_device) -#endif /* __QSOUND_H__ */ +#endif // MAME_SOUND_QSOUND_H diff --git a/src/devices/sound/rf5c400.cpp b/src/devices/sound/rf5c400.cpp index df355b5a03c..39440c66991 100644 --- a/src/devices/sound/rf5c400.cpp +++ b/src/devices/sound/rf5c400.cpp @@ -20,19 +20,27 @@ #include "emu.h" #include "rf5c400.h" -static int volume_table[256]; -static double pan_table[0x64]; - -/* envelope parameter (experimental) */ -#define ENV_AR_SPEED 0.1 -#define ENV_MIN_AR 0x02 -#define ENV_MAX_AR 0x80 -#define ENV_DR_SPEED 2.0 -#define ENV_MIN_DR 0x20 -#define ENV_MAX_DR 0x73 -#define ENV_RR_SPEED 0.7 -#define ENV_MIN_RR 0x20 -#define ENV_MAX_RR 0x54 +namespace { + +int volume_table[256]; +double pan_table[0x64]; + +void init_static_tables() +{ + // init volume/pan tables + double max = 255.0; + for (int i = 0; i < 256; i++) { + volume_table[i] = uint16_t(max); + max /= pow(10.0, double((4.5 / (256.0 / 16.0)) / 20)); + } + for (int i = 0; i < 0x48; i++) { + pan_table[i] = sqrt(double(0x47 - i)) / sqrt(double(0x47)); + } + for (int i = 0x48; i < 0x64; i++) { + pan_table[i] = 0.0; + } +} + /* PCM type */ enum @@ -52,9 +60,62 @@ enum PHASE_RELEASE }; +} // anonymous namespace + // device type definition -const device_type RF5C400 = device_creator; +DEFINE_DEVICE_TYPE(RF5C400, rf5c400_device, "rf5c400", "Ricoh RF5C400") + + +rf5c400_device::envelope_tables::envelope_tables() +{ + std::fill(std::begin(m_ar), std::end(m_ar), 0.0); + std::fill(std::begin(m_dr), std::end(m_dr), 0.0); + std::fill(std::begin(m_rr), std::end(m_rr), 0.0); +} + +void rf5c400_device::envelope_tables::init(uint32_t clock) +{ + /* envelope parameter (experimental) */ + static constexpr double ENV_AR_SPEED = 0.1; + static constexpr int ENV_MIN_AR = 0x02; + static constexpr int ENV_MAX_AR = 0x80; + static constexpr double ENV_DR_SPEED = 2.0; + static constexpr int ENV_MIN_DR = 0x20; + static constexpr int ENV_MAX_DR = 0x73; + static constexpr double ENV_RR_SPEED = 0.7; + static constexpr int ENV_MIN_RR = 0x20; + static constexpr int ENV_MAX_RR = 0x54; + + double r; + + // attack + r = 1.0 / (ENV_AR_SPEED * (clock / 384)); + for (int i = 0; i < ENV_MIN_AR; i++) + m_ar[i] = 1.0; + for (int i = ENV_MIN_AR; i < ENV_MAX_AR; i++) + m_ar[i] = r * (ENV_MAX_AR - i) / (ENV_MAX_AR - ENV_MIN_AR); + for (int i = ENV_MAX_AR; i < 0x9f; i++) + m_ar[i] = 0.0; + + // decay + r = -5.0 / (ENV_DR_SPEED * (clock / 384)); + for (int i = 0; i < ENV_MIN_DR; i++) + m_dr[i] = r; + for (int i = ENV_MIN_DR; i < ENV_MAX_DR; i++) + m_dr[i] = r * (ENV_MAX_DR - i) / (ENV_MAX_DR - ENV_MIN_DR); + for (int i = ENV_MAX_DR; i < 0x9f; i++) + m_dr[i] = 0.0; + + // release + r = -5.0 / (ENV_RR_SPEED * (clock / 384)); + for (int i = 0; i < ENV_MIN_RR; i++) + m_rr[i] = r; + for (int i = ENV_MIN_RR; i < ENV_MAX_RR; i++) + m_rr[i] = r * (ENV_MAX_RR - i) / (ENV_MAX_RR - ENV_MIN_RR); + for (int i = ENV_MAX_RR; i < 0x9f; i++) + m_rr[i] = 0.0; +} //************************************************************************** @@ -66,14 +127,12 @@ const device_type RF5C400 = device_creator; //------------------------------------------------- rf5c400_device::rf5c400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, RF5C400, "RF5C400", tag, owner, clock, "rf5c400", __FILE__), - device_sound_interface(mconfig, *this), - m_rom(*this, DEVICE_SELF), - m_stream(nullptr) + : device_t(mconfig, RF5C400, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_rom(*this, DEVICE_SELF) + , m_stream(nullptr) + , m_env_tables() { - memset(m_env_ar_table, 0, sizeof(double)*0x9f); - memset(m_env_dr_table, 0, sizeof(double)*0x9f); - memset(m_env_rr_table, 0, sizeof(double)*0x9f); } @@ -84,7 +143,45 @@ rf5c400_device::rf5c400_device(const machine_config &mconfig, const char *tag, d void rf5c400_device::device_start() { - rf5c400_init_chip(); + init_static_tables(); + m_env_tables.init(clock()); + + // init channel info + for (rf5c400_channel &chan : m_channels) + { + chan.env_phase = PHASE_NONE; + chan.env_level = 0.0; + chan.env_step = 0.0; + chan.env_scale = 1.0; + } + + for (int i = 0; i < ARRAY_LENGTH(m_channels); i++) + { + save_item(NAME(m_channels[i].startH), i); + save_item(NAME(m_channels[i].startL), i); + save_item(NAME(m_channels[i].freq), i); + save_item(NAME(m_channels[i].endL), i); + save_item(NAME(m_channels[i].endHloopH), i); + save_item(NAME(m_channels[i].loopL), i); + save_item(NAME(m_channels[i].pan), i); + save_item(NAME(m_channels[i].effect), i); + save_item(NAME(m_channels[i].volume), i); + save_item(NAME(m_channels[i].attack), i); + save_item(NAME(m_channels[i].decay), i); + save_item(NAME(m_channels[i].release), i); + save_item(NAME(m_channels[i].cutoff), i); + save_item(NAME(m_channels[i].pos), i); + save_item(NAME(m_channels[i].step), i); + save_item(NAME(m_channels[i].keyon), i); + save_item(NAME(m_channels[i].env_phase), i); + save_item(NAME(m_channels[i].env_level), i); + save_item(NAME(m_channels[i].env_step), i); + save_item(NAME(m_channels[i].env_scale), i); + } + + m_stream = stream_alloc(0, 2, clock() / 384); + + m_rommask = m_rom.length() - 1; } //------------------------------------------------- @@ -167,8 +264,7 @@ void rf5c400_device::sound_stream_update(sound_stream &stream, stream_sample_t * } else { - env_step = - m_env_dr_table[decode80(channel->decay >> 8)]; + env_step = m_env_tables.dr(*channel); } env_rstep = env_step * channel->env_scale; } @@ -217,130 +313,7 @@ void rf5c400_device::sound_stream_update(sound_stream &stream, stream_sample_t * /*****************************************************************************/ -uint8_t rf5c400_device::decode80(uint8_t val) -{ - if (val & 0x80) - { - val = (val & 0x7f) + 0x1f; - } - - return val; -} - -void rf5c400_device::rf5c400_init_chip() -{ - int i; - - // init volume table - { - double max=255.0; - for (i = 0; i < 256; i++) { - volume_table[i]=(uint16_t)max; - max /= pow(10.0,(double)((4.5/(256.0/16.0))/20)); - } - for(i = 0; i < 0x48; i++) { - pan_table[i] = sqrt( (double)(0x47 - i) ) / sqrt( (double)0x47 ); - } - for(i = 0x48; i < 0x64; i++) { - pan_table[i] = 0.0; - } - } - - // init envelope table - { - double r; - - // attack - r = 1.0 / (ENV_AR_SPEED * (clock() / 384)); - for (i = 0; i < ENV_MIN_AR; i++) - { - m_env_ar_table[i] = 1.0; - } - for (i = ENV_MIN_AR; i < ENV_MAX_AR; i++) - { - m_env_ar_table[i] = - r * (ENV_MAX_AR - i) / (ENV_MAX_AR - ENV_MIN_AR); - } - for (i = ENV_MAX_AR; i < 0x9f; i++) - { - m_env_ar_table[i] = 0.0; - } - - // decay - r = -5.0 / (ENV_DR_SPEED * (clock() / 384)); - for (i = 0; i < ENV_MIN_DR; i++) - { - m_env_dr_table[i] = r; - } - for (i = ENV_MIN_DR; i < ENV_MAX_DR; i++) - { - m_env_dr_table[i] = - r * (ENV_MAX_DR - i) / (ENV_MAX_DR - ENV_MIN_DR); - } - for (i = ENV_MAX_DR; i < 0x9f; i++) - { - m_env_dr_table[i] = 0.0; - } - - // release - r = -5.0 / (ENV_RR_SPEED * (clock() / 384)); - for (i = 0; i < ENV_MIN_RR; i++) - { - m_env_rr_table[i] = r; - } - for (i = ENV_MIN_RR; i < ENV_MAX_RR; i++) - { - m_env_rr_table[i] = - r * (ENV_MAX_RR - i) / (ENV_MAX_RR - ENV_MIN_RR); - } - for (i = ENV_MAX_RR; i < 0x9f; i++) - { - m_env_rr_table[i] = 0.0; - } - } - - // init channel info - for (i = 0; i < 32; i++) - { - m_channels[i].env_phase = PHASE_NONE; - m_channels[i].env_level = 0.0; - m_channels[i].env_step = 0.0; - m_channels[i].env_scale = 1.0; - } - - for (i = 0; i < ARRAY_LENGTH(m_channels); i++) - { - save_item(NAME(m_channels[i].startH), i); - save_item(NAME(m_channels[i].startL), i); - save_item(NAME(m_channels[i].freq), i); - save_item(NAME(m_channels[i].endL), i); - save_item(NAME(m_channels[i].endHloopH), i); - save_item(NAME(m_channels[i].loopL), i); - save_item(NAME(m_channels[i].pan), i); - save_item(NAME(m_channels[i].effect), i); - save_item(NAME(m_channels[i].volume), i); - save_item(NAME(m_channels[i].attack), i); - save_item(NAME(m_channels[i].decay), i); - save_item(NAME(m_channels[i].release), i); - save_item(NAME(m_channels[i].cutoff), i); - save_item(NAME(m_channels[i].pos), i); - save_item(NAME(m_channels[i].step), i); - save_item(NAME(m_channels[i].keyon), i); - save_item(NAME(m_channels[i].env_phase), i); - save_item(NAME(m_channels[i].env_level), i); - save_item(NAME(m_channels[i].env_step), i); - save_item(NAME(m_channels[i].env_scale), i); - } - - m_stream = stream_alloc(0, 2, clock()/384); - - m_rommask = m_rom.length() - 1; -} - - -/*****************************************************************************/ - -static uint16_t rf5c400_status = 0; +static uint16_t rf5c400_status = 0; // a static one of these for all instances of the chip? how does that work? READ16_MEMBER( rf5c400_device::rf5c400_r ) { switch(offset) @@ -388,8 +361,7 @@ WRITE16_MEMBER( rf5c400_device::rf5c400_w ) m_channels[ch].env_phase = PHASE_ATTACK; m_channels[ch].env_level = 0.0; - m_channels[ch].env_step = - m_env_ar_table[decode80(m_channels[ch].attack >> 8)]; + m_channels[ch].env_step = m_env_tables.ar(m_channels[ch]); break; case 0x40: if (m_channels[ch].env_phase != PHASE_NONE) @@ -401,8 +373,7 @@ WRITE16_MEMBER( rf5c400_device::rf5c400_w ) } else { - m_channels[ch].env_step = - m_env_rr_table[decode80(m_channels[ch].release >> 8)]; + m_channels[ch].env_step = m_env_tables.rr(m_channels[ch]); } } break; diff --git a/src/devices/sound/rf5c400.h b/src/devices/sound/rf5c400.h index 5ec45d35baf..6fe27863f70 100644 --- a/src/devices/sound/rf5c400.h +++ b/src/devices/sound/rf5c400.h @@ -2,10 +2,10 @@ // copyright-holders:Ville Linde /* Ricoh RF5C400 emulator */ -#pragma once +#ifndef MAME_SOUND_RF5C400_H +#define MAME_SOUND_RF5C400_H -#ifndef __RF5C400_H__ -#define __RF5C400_H__ +#pragma once //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -21,57 +21,6 @@ // TYPE DEFINITIONS //************************************************************************** -struct rf5c400_channel -{ - rf5c400_channel() : - startH(0), - startL(0), - freq(0), - endL(0), - endHloopH(0), - loopL(0), - pan(0), - effect(0), - volume(0), - attack(0), - decay(0), - release(0), - cutoff(0), - pos(0), - step(0), - keyon(0), - env_phase(0), - env_level(0.0), - env_step(0.0), - env_scale(0.0) - { } - - uint16_t startH; - uint16_t startL; - uint16_t freq; - uint16_t endL; - uint16_t endHloopH; - uint16_t loopL; - uint16_t pan; - uint16_t effect; - uint16_t volume; - - uint16_t attack; - uint16_t decay; - uint16_t release; - - uint16_t cutoff; - - uint64_t pos; - uint64_t step; - uint16_t keyon; - - uint8_t env_phase; - double env_level; - double env_step; - double env_scale; -}; - // ======================> rf5c400_device @@ -80,7 +29,9 @@ class rf5c400_device : public device_t, { public: rf5c400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~rf5c400_device() { } + + DECLARE_READ16_MEMBER( rf5c400_r ); + DECLARE_WRITE16_MEMBER( rf5c400_w ); protected: // device-level overrides @@ -89,24 +40,61 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -public: - DECLARE_READ16_MEMBER( rf5c400_r ); - DECLARE_WRITE16_MEMBER( rf5c400_w ); - private: - void rf5c400_init_chip(); + struct rf5c400_channel + { + rf5c400_channel() { } + + uint16_t startH = 0; + uint16_t startL = 0; + uint16_t freq = 0; + uint16_t endL = 0; + uint16_t endHloopH = 0; + uint16_t loopL = 0; + uint16_t pan = 0; + uint16_t effect = 0; + uint16_t volume = 0; + + uint16_t attack = 0; + uint16_t decay = 0; + uint16_t release = 0; + + uint16_t cutoff = 0; + + uint64_t pos = 0; + uint64_t step = 0; + uint16_t keyon = 0; + + uint8_t env_phase = 0; + double env_level = 0.0; + double env_step = 0.0; + double env_scale = 0.0; + }; + + class envelope_tables + { + public: + envelope_tables(); + void init(uint32_t clock); + double ar(rf5c400_channel const &chan) const { return m_ar[decode80(chan.attack >> 8)]; } + double dr(rf5c400_channel const &chan) const { return m_dr[decode80(chan.decay >> 8)]; } + double rr(rf5c400_channel const &chan) const { return m_rr[decode80(chan.release >> 8)]; } + private: + static constexpr uint8_t decode80(uint8_t val) { return (val & 0x80) ? ((val & 0x7f) + 0x1f) : val; } + double m_ar[0x9f]; + double m_dr[0x9f]; + double m_rr[0x9f]; + }; + uint8_t decode80(uint8_t val); -private: required_region_ptr m_rom; uint32_t m_rommask; sound_stream *m_stream; - double m_env_ar_table[0x9f]; - double m_env_dr_table[0x9f]; - double m_env_rr_table[0x9f]; + envelope_tables m_env_tables; rf5c400_channel m_channels[32]; @@ -114,7 +102,6 @@ private: uint16_t m_ext_mem_data; }; -extern const device_type RF5C400; - +DECLARE_DEVICE_TYPE(RF5C400, rf5c400_device) -#endif /* __RF5C400_H__ */ +#endif // MAME_SOUND_RF5C400_H diff --git a/src/devices/sound/rf5c68.cpp b/src/devices/sound/rf5c68.cpp index 532e3dcaf26..05366f3b968 100644 --- a/src/devices/sound/rf5c68.cpp +++ b/src/devices/sound/rf5c68.cpp @@ -9,7 +9,7 @@ // device type definition -const device_type RF5C68 = device_creator; +DEFINE_DEVICE_TYPE(RF5C68, rf5c68_device, "rf5c68", "Ricoh RF5C68") //************************************************************************** @@ -21,14 +21,14 @@ const device_type RF5C68 = device_creator; //------------------------------------------------- rf5c68_device::rf5c68_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, RF5C68, "RF5C68", tag, owner, clock, "rf5c68", __FILE__), + : device_t(mconfig, RF5C68, tag, owner, clock), device_sound_interface(mconfig, *this), m_stream(nullptr), m_cbank(0), m_wbank(0), m_enable(0) { - memset(m_data, 0, sizeof(uint8_t)*0x10000); + std::fill(std::begin(m_data), std::end(m_data), 0); } @@ -56,7 +56,6 @@ void rf5c68_device::sound_stream_update(sound_stream &stream, stream_sample_t ** { stream_sample_t *left = outputs[0]; stream_sample_t *right = outputs[1]; - int i, j; /* start with clean buffers */ memset(left, 0, samples * sizeof(*left)); @@ -67,40 +66,38 @@ void rf5c68_device::sound_stream_update(sound_stream &stream, stream_sample_t ** return; /* loop over channels */ - for (i = 0; i < RF5C68_NUM_CHANNELS; i++) + for (pcm_channel &chan : m_chan) { - rf5c68_pcm_channel *chan = &m_chan[i]; - /* if this channel is active, accumulate samples */ - if (chan->enable) + if (chan.enable) { - int lv = (chan->pan & 0x0f) * chan->env; - int rv = ((chan->pan >> 4) & 0x0f) * chan->env; + int lv = (chan.pan & 0x0f) * chan.env; + int rv = ((chan.pan >> 4) & 0x0f) * chan.env; /* loop over the sample buffer */ - for (j = 0; j < samples; j++) + for (int j = 0; j < samples; j++) { int sample; /* trigger sample callback */ if(!m_sample_end_cb.isnull()) { - if(((chan->addr >> 11) & 0xfff) == 0xfff) - m_sample_end_cb((chan->addr >> 11)/0x2000); + if(((chan.addr >> 11) & 0xfff) == 0xfff) + m_sample_end_cb((chan.addr >> 11)/0x2000); } /* fetch the sample and handle looping */ - sample = m_data[(chan->addr >> 11) & 0xffff]; + sample = m_data[(chan.addr >> 11) & 0xffff]; if (sample == 0xff) { - chan->addr = chan->loopst << 11; - sample = m_data[(chan->addr >> 11) & 0xffff]; + chan.addr = chan.loopst << 11; + sample = m_data[(chan.addr >> 11) & 0xffff]; /* if we loop to a loop point, we're effectively dead */ if (sample == 0xff) break; } - chan->addr += chan->step; + chan.addr += chan.step; /* add to the buffer */ if (sample & 0x80) @@ -119,7 +116,7 @@ void rf5c68_device::sound_stream_update(sound_stream &stream, stream_sample_t ** } /* now clamp and shift the result (output is only 10 bits) */ - for (j = 0; j < samples; j++) + for (int j = 0; j < samples; j++) { stream_sample_t temp; @@ -154,7 +151,7 @@ READ8_MEMBER( rf5c68_device::rf5c68_r ) WRITE8_MEMBER( rf5c68_device::rf5c68_w ) { - rf5c68_pcm_channel *chan = &m_chan[m_cbank]; + pcm_channel &chan = m_chan[m_cbank]; int i; /* force the stream to update first */ @@ -164,33 +161,33 @@ WRITE8_MEMBER( rf5c68_device::rf5c68_w ) switch (offset) { case 0x00: /* envelope */ - chan->env = data; + chan.env = data; break; case 0x01: /* pan */ - chan->pan = data; + chan.pan = data; break; case 0x02: /* FDL */ - chan->step = (chan->step & 0xff00) | (data & 0x00ff); + chan.step = (chan.step & 0xff00) | (data & 0x00ff); break; case 0x03: /* FDH */ - chan->step = (chan->step & 0x00ff) | ((data << 8) & 0xff00); + chan.step = (chan.step & 0x00ff) | ((data << 8) & 0xff00); break; case 0x04: /* LSL */ - chan->loopst = (chan->loopst & 0xff00) | (data & 0x00ff); + chan.loopst = (chan.loopst & 0xff00) | (data & 0x00ff); break; case 0x05: /* LSH */ - chan->loopst = (chan->loopst & 0x00ff) | ((data << 8) & 0xff00); + chan.loopst = (chan.loopst & 0x00ff) | ((data << 8) & 0xff00); break; case 0x06: /* ST */ - chan->start = data; - if (!chan->enable) - chan->addr = chan->start << (8 + 11); + chan.start = data; + if (!chan.enable) + chan.addr = chan.start << (8 + 11); break; case 0x07: /* control reg */ diff --git a/src/devices/sound/rf5c68.h b/src/devices/sound/rf5c68.h index f16271f1518..2354f874209 100644 --- a/src/devices/sound/rf5c68.h +++ b/src/devices/sound/rf5c68.h @@ -4,12 +4,10 @@ /* ricoh RF5C68(or clone) PCM controller */ /*********************************************************/ -#pragma once - -#ifndef __RF5C68_H__ -#define __RF5C68_H__ +#ifndef MAME_SOUND_RF5C68_H +#define MAME_SOUND_RF5C68_H -#define RF5C68_NUM_CHANNELS (8) +#pragma once //************************************************************************** @@ -22,48 +20,32 @@ MCFG_DEVICE_REPLACE(_tag, RF5C68, _clock) #define MCFG_RF5C68_SAMPLE_END_CB(_class, _method) \ - rf5c68_device::set_end_callback(*device, rf5c68_sample_end_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + rf5c68_device::set_end_callback(*device, rf5c68_device::sample_end_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate rf5c68_sample_end_cb_delegate; - #define RF5C68_SAMPLE_END_CB_MEMBER(_name) void _name(int channel) -struct rf5c68_pcm_channel -{ - rf5c68_pcm_channel() : - enable(0), - env(0), - pan(0), - start(0), - addr(0), - step(0), - loopst(0) {} - - uint8_t enable; - uint8_t env; - uint8_t pan; - uint8_t start; - uint32_t addr; - uint16_t step; - uint16_t loopst; -}; - - // ======================> rf5c68_device class rf5c68_device : public device_t, public device_sound_interface { public: + typedef device_delegate sample_end_cb_delegate; + rf5c68_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~rf5c68_device() { } - static void set_end_callback(device_t &device, rf5c68_sample_end_cb_delegate callback) { downcast(device).m_sample_end_cb = callback; } + static void set_end_callback(device_t &device, sample_end_cb_delegate &&cb) { downcast(device).m_sample_end_cb = std::move(cb); } + + DECLARE_READ8_MEMBER( rf5c68_r ); + DECLARE_WRITE8_MEMBER( rf5c68_w ); + + DECLARE_READ8_MEMBER( rf5c68_mem_r ); + DECLARE_WRITE8_MEMBER( rf5c68_mem_w ); protected: // device-level overrides @@ -72,25 +54,32 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -public: - DECLARE_READ8_MEMBER( rf5c68_r ); - DECLARE_WRITE8_MEMBER( rf5c68_w ); +private: + static constexpr unsigned NUM_CHANNELS = 8; - DECLARE_READ8_MEMBER( rf5c68_mem_r ); - DECLARE_WRITE8_MEMBER( rf5c68_mem_w ); + struct pcm_channel + { + pcm_channel() { } + + uint8_t enable = 0; + uint8_t env = 0; + uint8_t pan = 0; + uint8_t start = 0; + uint32_t addr = 0; + uint16_t step = 0; + uint16_t loopst = 0; + }; -private: sound_stream* m_stream; - rf5c68_pcm_channel m_chan[RF5C68_NUM_CHANNELS]; + pcm_channel m_chan[NUM_CHANNELS]; uint8_t m_cbank; uint8_t m_wbank; uint8_t m_enable; uint8_t m_data[0x10000]; - rf5c68_sample_end_cb_delegate m_sample_end_cb; + sample_end_cb_delegate m_sample_end_cb; }; -extern const device_type RF5C68; - +DECLARE_DEVICE_TYPE(RF5C68, rf5c68_device) -#endif /* __RF5C68_H__ */ +#endif // MAME_SOUND_RF5C68_H diff --git a/src/devices/sound/s14001a.cpp b/src/devices/sound/s14001a.cpp index 9bc112232f2..68bf81212d8 100644 --- a/src/devices/sound/s14001a.cpp +++ b/src/devices/sound/s14001a.cpp @@ -106,11 +106,110 @@ and off as it normally does during speech). Once START has gone low-high-low, th #include "emu.h" #include "s14001a.h" +namespace { + +uint8_t Mux8To2(bool bVoicedP2, uint8_t uPPQtrP2, uint8_t uDeltaAdrP2, uint8_t uRomDataP2) +{ + // pick two bits of rom data as delta + + if (bVoicedP2 && (uPPQtrP2 & 0x01)) // mirroring + uDeltaAdrP2 ^= 0x03; // count backwards + + // emulate 8 to 2 mux to obtain delta from byte (bigendian) + switch (uDeltaAdrP2) + { + case 0x00: + return (uRomDataP2 & 0xC0) >> 6; + case 0x01: + return (uRomDataP2 & 0x30) >> 4; + case 0x02: + return (uRomDataP2 & 0x0C) >> 2; + case 0x03: + return (uRomDataP2 & 0x03) >> 0; + default: + return 0xFF; + } +} + + +void CalculateIncrement(bool bVoicedP2, uint8_t uPPQtrP2, bool bPPQStartP2, uint8_t uDelta, uint8_t uDeltaOldP2, uint8_t &uDeltaOldP1, uint8_t &uIncrementP2, bool &bAddP2) +{ + // uPPQtr, pitch period quarter counter; 2 lsb of uLength + // bPPStart, start of a pitch period + // implemented to mimic silicon (a bit) + + // beginning of a pitch period + if ((uPPQtrP2 == 0x00) && bPPQStartP2) // note this is done for voiced and unvoiced + uDeltaOldP2 = 0x02; + + static constexpr uint8_t uIncrements[4][4] = + { + // 00 01 10 11 + { 3, 3, 1, 1,}, // 00 + { 1, 1, 0, 0,}, // 01 + { 0, 0, 1, 1,}, // 10 + { 1, 1, 3, 3 }, // 11 + }; + + bool const MIRROR = BIT(uPPQtrP2, 0); + + // calculate increment from delta, always done even if silent to update uDeltaOld + // in silicon a PLA determined 0,1,3 and add/subtract and passed uDelta to uDeltaOld + if (!bVoicedP2 || !MIRROR) + { + uIncrementP2 = uIncrements[uDelta][uDeltaOldP2]; + bAddP2 = uDelta >= 0x02; + } + else + { + uIncrementP2 = uIncrements[uDeltaOldP2][uDelta]; + bAddP2 = uDeltaOldP2 < 0x02; + } + uDeltaOldP1 = uDelta; + if (bVoicedP2 && bPPQStartP2 && MIRROR) + uIncrementP2 = 0; // no change when first starting mirroring +} + + +uint8_t CalculateOutput(bool bVoiced, bool bXSilence, uint8_t uPPQtr, bool bPPQStart, uint8_t uLOutput, uint8_t uIncrementP2, bool bAddP2) +{ + // implemented to mimic silicon (a bit) + // limits output to 0x00 and 0x0f + + bool const SILENCE = BIT(uPPQtr, 1); + + // determine output + if (bXSilence || (bVoiced && SILENCE)) + return 7; + + // beginning of a pitch period + if ((uPPQtr == 0x00) && bPPQStart) // note this is done for voiced and nonvoiced + uLOutput = 7; + + // adder + uint8_t uTmp = uLOutput; + if (!bAddP2) + uTmp ^= 0x0F; // turns subtraction into addition + + // add 0, 1, 3; limit at 15 + uTmp += uIncrementP2; + if (uTmp > 15) + uTmp = 15; + + if (!bAddP2) + uTmp ^= 0x0F; // turns addition back to subtraction + + return uTmp; +} + +} // anonymous namespace + + // device definition -const device_type S14001A = device_creator; +DEFINE_DEVICE_TYPE(S14001A, s14001a_device, "s14001a", "SSi TSI S14001A") s14001a_device::s14001a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, S14001A, "S14001A", tag, owner, clock, "s14001a", __FILE__), + : device_t(mconfig, S14001A, tag, owner, clock), device_sound_interface(mconfig, *this), m_SpeechRom(*this, DEVICE_SELF), m_stream(nullptr), @@ -471,96 +570,6 @@ bool s14001a_device::Clock() return true; } -uint8_t s14001a_device::Mux8To2(bool bVoicedP2, uint8_t uPPQtrP2, uint8_t uDeltaAdrP2, uint8_t uRomDataP2) -{ - // pick two bits of rom data as delta - - if (bVoicedP2 && uPPQtrP2&0x01) // mirroring - { - uDeltaAdrP2 ^= 0x03; // count backwards - } - // emulate 8 to 2 mux to obtain delta from byte (bigendian) - switch (uDeltaAdrP2) - { - case 0x00: - return (uRomDataP2&0xC0)>>6; - case 0x01: - return (uRomDataP2&0x30)>>4; - case 0x02: - return (uRomDataP2&0x0C)>>2; - case 0x03: - return (uRomDataP2&0x03)>>0; - } - return 0xFF; -} - -void s14001a_device::CalculateIncrement(bool bVoicedP2, uint8_t uPPQtrP2, bool bPPQStartP2, uint8_t uDelta, uint8_t uDeltaOldP2, uint8_t &uDeltaOldP1, uint8_t &uIncrementP2, bool &bAddP2) -{ - // uPPQtr, pitch period quarter counter; 2 lsb of uLength - // bPPStart, start of a pitch period - // implemented to mimic silicon (a bit) - - // beginning of a pitch period - if (uPPQtrP2 == 0x00 && bPPQStartP2) // note this is done for voiced and unvoiced - { - uDeltaOldP2 = 0x02; - } - static const uint8_t uIncrements[4][4] = - { - // 00 01 10 11 - { 3, 3, 1, 1,}, // 00 - { 1, 1, 0, 0,}, // 01 - { 0, 0, 1, 1,}, // 10 - { 1, 1, 3, 3 }, // 11 - }; - -#define MIRROR (uPPQtrP2&0x01) - - // calculate increment from delta, always done even if silent to update uDeltaOld - // in silicon a PLA determined 0,1,3 and add/subtract and passed uDelta to uDeltaOld - if (!bVoicedP2 || !MIRROR) - { - uIncrementP2 = uIncrements[uDelta][uDeltaOldP2]; - bAddP2 = uDelta >= 0x02; - } - else - { - uIncrementP2 = uIncrements[uDeltaOldP2][uDelta]; - bAddP2 = uDeltaOldP2 < 0x02; - } - uDeltaOldP1 = uDelta; - if (bVoicedP2 && bPPQStartP2 && MIRROR) uIncrementP2 = 0; // no change when first starting mirroring -} - -uint8_t s14001a_device::CalculateOutput(bool bVoiced, bool bXSilence, uint8_t uPPQtr, bool bPPQStart, uint8_t uLOutput, uint8_t uIncrementP2, bool bAddP2) -{ - // implemented to mimic silicon (a bit) - // limits output to 0x00 and 0x0f - uint8_t uTmp; // used for subtraction - -#define SILENCE (uPPQtr&0x02) - - // determine output - if (bXSilence || (bVoiced && SILENCE)) return 7; - - // beginning of a pitch period - if (uPPQtr == 0x00 && bPPQStart) // note this is done for voiced and nonvoiced - { - uLOutput = 7; - } - - // adder - uTmp = uLOutput; - if (!bAddP2) uTmp ^= 0x0F; // turns subtraction into addition - - // add 0, 1, 3; limit at 15 - uTmp += uIncrementP2; - if (uTmp > 15) uTmp = 15; - - if (!bAddP2) uTmp ^= 0x0F; // turns addition back to subtraction - return uTmp; -} - void s14001a_device::ClearStatistics() { m_uNPitchPeriods = 0; diff --git a/src/devices/sound/s14001a.h b/src/devices/sound/s14001a.h index f73840102d9..c16d7e0aa75 100644 --- a/src/devices/sound/s14001a.h +++ b/src/devices/sound/s14001a.h @@ -5,8 +5,8 @@ SSi TSI S14001A speech IC emulator */ -#ifndef __S14001A_H__ -#define __S14001A_H__ +#ifndef MAME_SOUND_S14001A_H +#define MAME_SOUND_S14001A_H #define MCFG_S14001A_BSY_HANDLER(_devcb) \ devcb = &s14001a_device::set_bsy_handler(*device, DEVCB_##_devcb); @@ -15,16 +15,14 @@ devcb = &s14001a_device::set_ext_read_handler(*device, DEVCB_##_devcb); -class s14001a_device : public device_t, - public device_sound_interface +class s14001a_device : public device_t, public device_sound_interface { public: s14001a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~s14001a_device() {} // static configuration helpers - template static devcb_base &set_bsy_handler(device_t &device, _Object object) { return downcast(device).m_bsy_handler.set_callback(object); } - template static devcb_base &set_ext_read_handler(device_t &device, _Object object) { return downcast(device).m_ext_read_handler.set_callback(object); } + template static devcb_base &set_bsy_handler(device_t &device, Object &&cb) { return downcast(device).m_bsy_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast(device).m_ext_read_handler.set_callback(std::forward(cb)); } DECLARE_READ_LINE_MEMBER(busy_r); // /BUSY (pin 40) DECLARE_READ_LINE_MEMBER(romen_r); // ROM /EN (pin 9) @@ -42,26 +40,14 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: - required_region_ptr m_SpeechRom; - sound_stream * m_stream; - - devcb_write_line m_bsy_handler; - devcb_read8 m_ext_read_handler; - uint8_t readmem(uint16_t offset, bool phase); bool Clock(); // called once to toggle external clock twice // emulator helper functions - uint8_t Mux8To2(bool bVoicedP2, uint8_t uPPQtrP2, uint8_t uDeltaAdrP2, uint8_t uRomDataP2); - void CalculateIncrement(bool bVoicedP2, uint8_t uPPQtrP2, bool bPPQStartP2, uint8_t uDeltaP2, uint8_t uDeltaOldP2, uint8_t &uDeltaOldP1, uint8_t &uIncrementP2, bool &bAddP2); - uint8_t CalculateOutput(bool bVoicedP2, bool bXSilenceP2, uint8_t uPPQtrP2, bool bPPQStartP2, uint8_t uLOutputP2, uint8_t uIncrementP2, bool bAddP2); void ClearStatistics(); void GetStatistics(uint32_t &uNPitchPeriods, uint32_t &uNVoiced, uint32_t &uNControlWords); void SetPrintLevel(uint32_t uPrintLevel) { m_uPrintLevel = uPrintLevel; } - // internal state - bool m_bPhase1; // 1 bit internal clock - enum states { IDLE = 0, @@ -74,6 +60,15 @@ private: DELAY }; + required_region_ptr m_SpeechRom; + sound_stream * m_stream; + + devcb_write_line m_bsy_handler; + devcb_read8 m_ext_read_handler; + + // internal state + bool m_bPhase1; // 1 bit internal clock + // registers states m_uStateP1; // 3 bits states m_uStateP2; @@ -132,7 +127,6 @@ private: uint32_t m_uPrintLevel; }; -extern const device_type S14001A; - +DECLARE_DEVICE_TYPE(S14001A, s14001a_device) -#endif /* __S14001A_H__ */ +#endif // MAME_SOUND_S14001A_H diff --git a/src/devices/sound/saa1099.cpp b/src/devices/sound/saa1099.cpp index c1ce05f5a2a..9f58367da5b 100644 --- a/src/devices/sound/saa1099.cpp +++ b/src/devices/sound/saa1099.cpp @@ -71,14 +71,14 @@ #define LEFT 0x00 #define RIGHT 0x01 -static const int amplitude_lookup[16] = { +static constexpr int amplitude_lookup[16] = { 0*32767/16, 1*32767/16, 2*32767/16, 3*32767/16, 4*32767/16, 5*32767/16, 6*32767/16, 7*32767/16, 8*32767/16, 9*32767/16, 10*32767/16, 11*32767/16, 12*32767/16, 13*32767/16, 14*32767/16, 15*32767/16 }; -static const uint8_t envelope[8][64] = { +static constexpr uint8_t envelope[8][64] = { /* zero amplitude */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -123,7 +123,7 @@ static const uint8_t envelope[8][64] = { // device type definition -const device_type SAA1099 = device_creator; +DEFINE_DEVICE_TYPE(SAA1099, saa1099_device, "saa1099", "Philips SAA1099") //************************************************************************** // LIVE DEVICE @@ -134,21 +134,21 @@ const device_type SAA1099 = device_creator; //------------------------------------------------- saa1099_device::saa1099_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SAA1099, "SAA1099", tag, owner, clock, "saa1099", __FILE__), - device_sound_interface(mconfig, *this), - m_stream(nullptr), - m_all_ch_enable(0), - m_sync_state(0), - m_selected_reg(0), - m_sample_rate(0.0) + : device_t(mconfig, SAA1099, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_stream(nullptr) + , m_noise_params{ 0, 0 } + , m_env_enable{ 0, 0 } + , m_env_reverse_right{ 0, 0 } + , m_env_mode{ 0, 0 } + , m_env_bits{ 0, 0 } + , m_env_clock{ 0, 0 } + , m_env_step{ 0, 0 } + , m_all_ch_enable(0) + , m_sync_state(0) + , m_selected_reg(0) + , m_sample_rate(0.0) { - memset(m_noise_params, 0, sizeof(int)*2); - memset(m_env_enable, 0, sizeof(int)*2); - memset(m_env_reverse_right, 0, sizeof(int)*2); - memset(m_env_mode, 0, sizeof(int)*2); - memset(m_env_bits, 0, sizeof(int)*2); - memset(m_env_clock, 0, sizeof(int)*2); - memset(m_env_step, 0, sizeof(int)*2); } diff --git a/src/devices/sound/saa1099.h b/src/devices/sound/saa1099.h index 6863bd73e76..db89f8ccbd1 100644 --- a/src/devices/sound/saa1099.h +++ b/src/devices/sound/saa1099.h @@ -4,10 +4,10 @@ Philips SAA1099 Sound driver **********************************************/ -#pragma once +#ifndef MAME_SOUND_SAA1099_H +#define MAME_SOUND_SAA1099_H -#ifndef __SAA1099_H__ -#define __SAA1099_H__ +#pragma once //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -23,47 +23,6 @@ // TYPE DEFINITIONS //************************************************************************** -struct saa1099_channel -{ - saa1099_channel() : - frequency(0), - freq_enable(0), - noise_enable(0), - octave(0), - counter(0.0), - freq(0.0), - level(0) - { - memset(amplitude, 0, sizeof(int)*2); - memset(envelope, 0, sizeof(int)*2); - } - - int frequency; /* frequency (0x00..0xff) */ - int freq_enable; /* frequency enable */ - int noise_enable; /* noise enable */ - int octave; /* octave (0x00..0x07) */ - int amplitude[2]; /* amplitude (0x00..0x0f) */ - int envelope[2]; /* envelope (0x00..0x0f or 0x10 == off) */ - - /* vars to simulate the square wave */ - double counter; - double freq; - int level; -}; - -struct saa1099_noise -{ - saa1099_noise() : - counter(0.0), - freq(0.0), - level(0xFFFFFFFF) {} - - /* vars to simulate the noise generator output */ - double counter; - double freq; - uint32_t level; /* noise polynomial shifter */ -}; - // ======================> saa1099_device @@ -72,7 +31,9 @@ class saa1099_device : public device_t, { public: saa1099_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~saa1099_device() { } + + DECLARE_WRITE8_MEMBER( control_w ); + DECLARE_WRITE8_MEMBER( data_w ); protected: // device-level overrides @@ -81,14 +42,36 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -public: - DECLARE_WRITE8_MEMBER( control_w ); - DECLARE_WRITE8_MEMBER( data_w ); - private: + struct saa1099_channel + { + saa1099_channel() : amplitude{ 0, 0 }, envelope{ 0, 0 } { } + + int frequency = 0; /* frequency (0x00..0xff) */ + int freq_enable = 0; /* frequency enable */ + int noise_enable = 0; /* noise enable */ + int octave = 0; /* octave (0x00..0x07) */ + int amplitude[2]; /* amplitude (0x00..0x0f) */ + int envelope[2]; /* envelope (0x00..0x0f or 0x10 == off) */ + + /* vars to simulate the square wave */ + double counter = 0.0; + double freq = 0.0; + int level = 0; + }; + + struct saa1099_noise + { + saa1099_noise() { } + + /* vars to simulate the noise generator output */ + double counter = 0.0; + double freq = 0.0; + uint32_t level = 0xFFFFFFFF; /* noise polynomial shifter */ + }; + void envelope_w(int ch); -private: sound_stream *m_stream; /* our stream */ int m_noise_params[2]; /* noise generators parameters */ int m_env_enable[2]; /* envelope generators enable */ @@ -106,7 +89,6 @@ private: int m_master_clock; }; -extern const device_type SAA1099; - +DECLARE_DEVICE_TYPE(SAA1099, saa1099_device) -#endif /* __SAA1099_H__ */ +#endif // MAME_SOUND_SAA1099_H diff --git a/src/devices/sound/samples.cpp b/src/devices/sound/samples.cpp index 3363d8ad026..40ff619cdce 100644 --- a/src/devices/sound/samples.cpp +++ b/src/devices/sound/samples.cpp @@ -23,8 +23,10 @@ ***************************************************************************/ #include "emu.h" -#include "emuopts.h" #include "samples.h" + +#include "emuopts.h" + #include "flac.h" @@ -33,7 +35,7 @@ //************************************************************************** // device type definition -const device_type SAMPLES = device_creator; +DEFINE_DEVICE_TYPE(SAMPLES, samples_device, "samples", "Samples") @@ -46,18 +48,15 @@ const device_type SAMPLES = device_creator; //------------------------------------------------- samples_device::samples_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SAMPLES, "Samples", tag, owner, clock, "samples", __FILE__), - device_sound_interface(mconfig, *this), - m_channels(0), - m_names(nullptr) + : samples_device(mconfig, SAMPLES, tag, owner, clock) { } -samples_device::samples_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - device_sound_interface(mconfig, *this), - m_channels(0), - m_names(nullptr) +samples_device::samples_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_channels(0) + , m_names(nullptr) { } diff --git a/src/devices/sound/samples.h b/src/devices/sound/samples.h index 798dccc588f..7b0c4cc3446 100644 --- a/src/devices/sound/samples.h +++ b/src/devices/sound/samples.h @@ -8,8 +8,8 @@ ***************************************************************************/ -#ifndef MAME_DEVICES_SOUND_SAMPLES_H -#define MAME_DEVICES_SOUND_SAMPLES_H +#ifndef MAME_SOUND_SAMPLES_H +#define MAME_SOUND_SAMPLES_H #pragma once @@ -19,7 +19,7 @@ //************************************************************************** // device type definition -extern const device_type SAMPLES; +DECLARE_DEVICE_TYPE(SAMPLES, samples_device) @@ -33,12 +33,10 @@ extern const device_type SAMPLES; #define MCFG_SAMPLES_NAMES(_names) \ samples_device::static_set_samples_names(*device, _names); -typedef device_delegate samples_start_cb_delegate; - #define SAMPLES_START_CB_MEMBER(_name) void _name() #define MCFG_SAMPLES_START_CB(_class, _method) \ - samples_device::set_samples_start_callback(*device, samples_start_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + samples_device::set_samples_start_callback(*device, samples_device::start_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); //************************************************************************** // TYPE DEFINITIONS @@ -50,13 +48,15 @@ class samples_device : public device_t, public device_sound_interface { public: + typedef device_delegate start_cb_delegate; + // construction/destruction samples_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers static void static_set_channels(device_t &device, uint8_t channels) { downcast(device).m_channels = channels; } static void static_set_samples_names(device_t &device, const char *const *names) { downcast(device).m_names = names; } - static void set_samples_start_callback(device_t &device, samples_start_cb_delegate callback) { downcast(device).m_samples_start_cb = callback; } + static void set_samples_start_callback(device_t &device, start_cb_delegate &&cb) { downcast(device).m_samples_start_cb = std::move(cb); } // getters bool playing(uint8_t channel) const; @@ -87,11 +87,10 @@ public: // interface uint8_t m_channels; // number of discrete audio channels needed const char *const *m_names; // array of sample names - samples_start_cb_delegate m_samples_start_cb; // optional callback protected: // subclasses can do it this way - samples_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + samples_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); // device-level overrides virtual void device_start() override; @@ -121,14 +120,16 @@ protected: static bool read_flac_sample(emu_file &file, sample_t &sample); bool load_samples(); + start_cb_delegate m_samples_start_cb; // optional callback + // internal state std::vector m_channel; std::vector m_sample; // internal constants - static const uint8_t FRAC_BITS = 24; - static const uint32_t FRAC_ONE = 1 << FRAC_BITS; - static const uint32_t FRAC_MASK = FRAC_ONE - 1; + static constexpr uint8_t FRAC_BITS = 24; + static constexpr uint32_t FRAC_ONE = 1 << FRAC_BITS; + static constexpr uint32_t FRAC_MASK = FRAC_ONE - 1; }; // iterator, since lots of people are interested in these devices @@ -148,12 +149,12 @@ public: } // getters - const char *altbasename() const { return (m_samples.m_names != nullptr && m_samples.m_names[0] != nullptr && m_samples.m_names[0][0] == '*') ? &m_samples.m_names[0][1] : nullptr; } + const char *altbasename() const { return (m_samples.m_names && m_samples.m_names[0] && m_samples.m_names[0][0] == '*') ? &m_samples.m_names[0][1] : nullptr; } // iteration const char *first() { - if (m_samples.m_names == nullptr || m_samples.m_names[0] == nullptr) + if (!m_samples.m_names || !m_samples.m_names[0]) return nullptr; m_current = 0; if (m_samples.m_names[0][0] == '*') @@ -163,7 +164,7 @@ public: const char *next() { - if (m_current == -1 || m_samples.m_names[m_current] == nullptr) + if (m_current == -1 || !m_samples.m_names[m_current]) return nullptr; return m_samples.m_names[m_current++]; } @@ -171,9 +172,9 @@ public: // counting int count() { - int save = m_current; + int const save = m_current; int result = 0; - for (const char *scan = first(); scan != nullptr; scan = next()) + for (const char *scan = first(); scan; scan = next()) result++; m_current = save; return result; @@ -185,5 +186,4 @@ private: int m_current; }; - -#endif // MAME_DEVICES_SOUND_SAMPLES_H +#endif // MAME_SOUND_SAMPLES_H diff --git a/src/devices/sound/sb0400.cpp b/src/devices/sound/sb0400.cpp index 6fbbf0a2f85..22b256ccfbe 100644 --- a/src/devices/sound/sb0400.cpp +++ b/src/devices/sound/sb0400.cpp @@ -3,13 +3,13 @@ #include "emu.h" #include "sb0400.h" -const device_type SB0400 = device_creator; +DEFINE_DEVICE_TYPE(SB0400, sb0400_device, "sb0400", "Creative Labs SB0400 Audigy2 Value") DEVICE_ADDRESS_MAP_START(map, 32, sb0400_device) ADDRESS_MAP_END sb0400_device::sb0400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pci_device(mconfig, SB0400, "Creative Labs SB0400 Audigy2 Value", tag, owner, clock, "sb0400", __FILE__) + : pci_device(mconfig, SB0400, tag, owner, clock) { } diff --git a/src/devices/sound/sb0400.h b/src/devices/sound/sb0400.h index cf4c899b9ee..b2d612a6dc9 100644 --- a/src/devices/sound/sb0400.h +++ b/src/devices/sound/sb0400.h @@ -2,8 +2,8 @@ // copyright-holders:Olivier Galibert // Creative labs SB0400 Audigy2 Value -#ifndef SB0400_H -#define SB0400_H +#ifndef MAME_SOUND_SB0400_H +#define MAME_SOUND_SB0400_H #include "machine/pci.h" @@ -22,6 +22,6 @@ private: DECLARE_ADDRESS_MAP(map, 32); }; -extern const device_type SB0400; +DECLARE_DEVICE_TYPE(SB0400, sb0400_device) -#endif +#endif // MAME_SOUND_SB0400_H diff --git a/src/devices/sound/scsp.cpp b/src/devices/sound/scsp.cpp index 41bcaf13c8d..9ca21c9db55 100644 --- a/src/devices/sound/scsp.cpp +++ b/src/devices/sound/scsp.cpp @@ -31,9 +31,10 @@ */ #include "emu.h" -#include "sound/cdda.h" #include "scsp.h" +#include "sound/cdda.h" + #define ICLIP16(x) (x<-32768)?-32768:((x>32767)?32767:x) @@ -111,19 +112,19 @@ static const double DRTimes[64]={100000/*infinity*/,100000/*infinity*/,118200.0, 28.0,25.0,22.0,18.0,14.0,12.0,11.0,8.5,7.1,6.1,5.4,4.3,3.6,3.1}; #define MEM4B() ((m_udata.data[0]>>0x0)&0x0200) -#define DAC18B() ((m_udata.data[0]>>0x0)&0x0100) +#define DAC18B() ((m_udata.data[0]>>0x0)&0x0100) #define MVOL() ((m_udata.data[0]>>0x0)&0x000F) #define RBL() ((m_udata.data[1]>>0x7)&0x0003) #define RBP() ((m_udata.data[1]>>0x0)&0x003F) -#define MOFULL() ((m_udata.data[2]>>0x0)&0x1000) -#define MOEMPTY() ((m_udata.data[2]>>0x0)&0x0800) +#define MOFULL() ((m_udata.data[2]>>0x0)&0x1000) +#define MOEMPTY() ((m_udata.data[2]>>0x0)&0x0800) #define MIOVF() ((m_udata.data[2]>>0x0)&0x0400) -#define MIFULL() ((m_udata.data[2]>>0x0)&0x0200) -#define MIEMPTY() ((m_udata.data[2]>>0x0)&0x0100) +#define MIFULL() ((m_udata.data[2]>>0x0)&0x0200) +#define MIEMPTY() ((m_udata.data[2]>>0x0)&0x0100) -#define SCILV0() ((m_udata.data[0x24/2]>>0x0)&0xff) -#define SCILV1() ((m_udata.data[0x26/2]>>0x0)&0xff) -#define SCILV2() ((m_udata.data[0x28/2]>>0x0)&0xff) +#define SCILV0() ((m_udata.data[0x24/2]>>0x0)&0xff) +#define SCILV1() ((m_udata.data[0x26/2]>>0x0)&0xff) +#define SCILV2() ((m_udata.data[0x28/2]>>0x0)&0xff) #define SCIEX0 0 #define SCIEX1 1 @@ -141,10 +142,10 @@ static const double DRTimes[64]={100000/*infinity*/,100000/*infinity*/,118200.0, static const float SDLT[8]={-1000000.0f,-36.0f,-30.0f,-24.0f,-18.0f,-12.0f,-6.0f,0.0f}; -const device_type SCSP = device_creator; +DEFINE_DEVICE_TYPE(SCSP, scsp_device, "scsp", "YMF292-F SCSP") scsp_device::scsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SCSP, "SCSP", tag, owner, clock, "scsp", __FILE__), + : device_t(mconfig, SCSP, tag, owner, clock), device_sound_interface(mconfig, *this), m_roffset(0), m_irq_cb(*this), @@ -499,7 +500,7 @@ void scsp_device::init() { int i; - SCSPDSP_Init(&m_DSP); + m_DSP.Init(); m_IrqTimA = m_IrqTimBC = m_IrqMidi = 0; m_MidiR=m_MidiW = 0; @@ -954,7 +955,7 @@ void scsp_device::w16(address_space &space,unsigned int addr,unsigned short val) if(addr==0xBF0) { - SCSPDSP_Start(&m_DSP); + m_DSP.Start(); } } } @@ -1241,7 +1242,7 @@ void scsp_device::DoMasterSamples(int nsamples) for(sl=0;sl<32;++sl) { -#if FM_DELAY +#if SCSP_FM_DELAY m_RBUFDST=m_DELAYBUF+m_DELAYPTR; #else m_RBUFDST=m_RINGBUF+m_BUFPTR; @@ -1255,7 +1256,7 @@ void scsp_device::DoMasterSamples(int nsamples) sample=UpdateSlot(slot); Enc=((TL(slot))<<0x0)|((IMXL(slot))<<0xd); - SCSPDSP_SetSample(&m_DSP,(sample*m_LPANTABLE[Enc])>>(SHIFT-2),ISEL(slot),IMXL(slot)); + m_DSP.SetSample((sample*m_LPANTABLE[Enc])>>(SHIFT-2),ISEL(slot),IMXL(slot)); Enc=((TL(slot))<<0x0)|((DIPAN(slot))<<0x8)|((DISDL(slot))<<0xd); { smpl+=(sample*m_LPANTABLE[Enc])>>SHIFT; @@ -1263,18 +1264,18 @@ void scsp_device::DoMasterSamples(int nsamples) } } -#if FM_DELAY - m_RINGBUF[(m_BUFPTR+64-(FM_DELAY-1))&63] = m_DELAYBUF[(m_DELAYPTR+FM_DELAY-(FM_DELAY-1))%FM_DELAY]; +#if SCSP_FM_DELAY + m_RINGBUF[(m_BUFPTR+64-(SCSP_FM_DELAY-1))&63] = m_DELAYBUF[(m_DELAYPTR+SCSP_FM_DELAY-(SCSP_FM_DELAY-1))%SCSP_FM_DELAY]; #endif ++m_BUFPTR; m_BUFPTR&=63; -#if FM_DELAY +#if SCSP_FM_DELAY ++m_DELAYPTR; - if(m_DELAYPTR>FM_DELAY-1) m_DELAYPTR=0; + if(m_DELAYPTR>SCSP_FM_DELAY-1) m_DELAYPTR=0; #endif } - SCSPDSP_Step(&m_DSP); + m_DSP.Step(); for(i=0;i<16;++i) { diff --git a/src/devices/sound/scsp.h b/src/devices/sound/scsp.h index fe3101b7827..54aad08ae5e 100644 --- a/src/devices/sound/scsp.h +++ b/src/devices/sound/scsp.h @@ -4,14 +4,14 @@ SCSP (YMF292-F) header */ -#pragma once +#ifndef MAME_SOUND_SCSP_H +#define MAME_SOUND_SCSP_H -#ifndef __SCSP_H__ -#define __SCSP_H__ +#pragma once #include "scspdsp.h" -#define FM_DELAY 0 // delay in number of slots processed before samples are written to the FM ring buffer +#define SCSP_FM_DELAY 0 // delay in number of slots processed before samples are written to the FM ring buffer // driver code indicates should be 4, but sounds distorted then @@ -25,54 +25,6 @@ devcb = &scsp_device::set_main_irq_callback(*device, DEVCB_##_devcb); -enum SCSP_STATE {SCSP_ATTACK,SCSP_DECAY1,SCSP_DECAY2,SCSP_RELEASE}; - -struct SCSP_EG_t -{ - int volume; // - SCSP_STATE state; - int step; - //step vals - int AR; //Attack - int D1R; //Decay1 - int D2R; //Decay2 - int RR; //Release - - int DL; //Decay level - uint8_t EGHOLD; - uint8_t LPLINK; -}; - -struct SCSP_LFO_t -{ - uint16_t phase; - uint32_t phase_step; - int *table; - int *scale; -}; - -struct SCSP_SLOT -{ - union - { - uint16_t data[0x10]; //only 0x1a bytes used - uint8_t datab[0x20]; - } udata; - - uint8_t Backwards; //the wave is playing backwards - uint8_t active; //this slot is currently playing - uint8_t *base; //samples base address - uint32_t cur_addr; //current play address (24.8) - uint32_t nxt_addr; //next play address - uint32_t step; //pitch step (24.8) - SCSP_EG_t EG; //Envelope - SCSP_LFO_t PLFO; //Phase LFO - SCSP_LFO_t ALFO; //Amplitude LFO - int slot; - int16_t Prev; //Previous sample (for interpolation) -}; - - class scsp_device : public device_t, public device_sound_interface { @@ -80,8 +32,8 @@ public: scsp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void set_roffset(device_t &device, int roffset) { downcast(device).m_roffset = roffset; } - template static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast(device).m_irq_cb.set_callback(object); } - template static devcb_base &set_main_irq_callback(device_t &device, _Object object) { return downcast(device).m_main_irq_cb.set_callback(object); } + template static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast(device).m_irq_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_main_irq_callback(device_t &device, Object &&cb) { return downcast(device).m_main_irq_cb.set_callback(std::forward(cb)); } // SCSP register access DECLARE_READ16_MEMBER( read ); @@ -101,6 +53,53 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: + enum SCSP_STATE { SCSP_ATTACK, SCSP_DECAY1, SCSP_DECAY2, SCSP_RELEASE }; + + struct SCSP_EG_t + { + int volume; // + SCSP_STATE state; + int step; + //step vals + int AR; //Attack + int D1R; //Decay1 + int D2R; //Decay2 + int RR; //Release + + int DL; //Decay level + uint8_t EGHOLD; + uint8_t LPLINK; + }; + + struct SCSP_LFO_t + { + uint16_t phase; + uint32_t phase_step; + int *table; + int *scale; + }; + + struct SCSP_SLOT + { + union + { + uint16_t data[0x10]; //only 0x1a bytes used + uint8_t datab[0x20]; + } udata; + + uint8_t Backwards; //the wave is playing backwards + uint8_t active; //this slot is currently playing + uint8_t *base; //samples base address + uint32_t cur_addr; //current play address (24.8) + uint32_t nxt_addr; //next play address + uint32_t step; //pitch step (24.8) + SCSP_EG_t EG; //Envelope + SCSP_LFO_t PLFO; //Phase LFO + SCSP_LFO_t ALFO; //Amplitude LFO + int slot; + int16_t Prev; //Previous sample (for interpolation) + }; + int m_roffset; /* offset in the region */ devcb_write8 m_irq_cb; /* irq callback */ devcb_write_line m_main_irq_cb; @@ -114,8 +113,8 @@ private: SCSP_SLOT m_Slots[32]; int16_t m_RINGBUF[128]; uint8_t m_BUFPTR; -#if FM_DELAY - int16_t m_DELAYBUF[FM_DELAY]; +#if SCSP_FM_DELAY + int16_t m_DELAYBUF[SCSP_FM_DELAY]; uint8_t m_DELAYPTR; #endif uint8_t *m_SCSPRAM; @@ -209,7 +208,6 @@ private: void LFO_ComputeStep(SCSP_LFO_t *LFO, uint32_t LFOF, uint32_t LFOWS, uint32_t LFOS, int ALFO); }; -extern const device_type SCSP; - +DECLARE_DEVICE_TYPE(SCSP, scsp_device) -#endif /* __SCSP_H__ */ +#endif // MAME_SOUND_SCSP_H diff --git a/src/devices/sound/scspdsp.cpp b/src/devices/sound/scspdsp.cpp index aa98600577e..de1a33534d0 100644 --- a/src/devices/sound/scspdsp.cpp +++ b/src/devices/sound/scspdsp.cpp @@ -3,15 +3,17 @@ #include "emu.h" #include "scspdsp.h" -static uint16_t PACK(int32_t val) -{ - uint32_t temp; - int sign,exponent,k; +#include + + +namespace { - sign = (val >> 23) & 0x1; - temp = (val ^ (val << 1)) & 0xFFFFFF; - exponent = 0; - for (k=0; k<12; k++) +uint16_t PACK(int32_t val) +{ + int const sign = BIT(val, 23); + uint32_t temp = (val ^ (val << 1)) & 0xFFFFFF; + int exponent = 0; + for (int k = 0; k < 12; k++) { if (temp & 0x800000) break; @@ -27,25 +29,24 @@ static uint16_t PACK(int32_t val) val |= sign << 15; val |= exponent << 11; - return (uint16_t)val; + return uint16_t(val); } static int32_t UNPACK(uint16_t val) { - int sign,exponent,mantissa; - int32_t uval; - - sign = (val >> 15) & 0x1; - exponent = (val >> 11) & 0xF; - mantissa = val & 0x7FF; - uval = mantissa << 11; + int const sign = BIT(val, 15); + int exponent = (val >> 11) & 0xF; + int const mantissa = val & 0x7FF; + int32_t uval = mantissa << 11; if (exponent > 11) { exponent = 11; uval |= sign << 22; } else + { uval |= (sign ^ 1) << 22; + } uval |= sign << 23; uval <<= 8; uval >>= 8; @@ -54,91 +55,88 @@ static int32_t UNPACK(uint16_t val) return uval; } -void SCSPDSP_Init(SCSPDSP *DSP) +} // anonymous namespace + + +void SCSPDSP::Init() { - memset(DSP,0,sizeof(SCSPDSP)); - DSP->RBL=0x8000; - DSP->Stopped=1; + std::memset(this, 0, sizeof(*this)); + RBL = 0x8000; + Stopped = 1; } -void SCSPDSP_Step(SCSPDSP *DSP) +void SCSPDSP::Step() { - int32_t ACC=0; //26 bit - int32_t SHIFTED=0; //24 bit - int32_t X; //24 bit - int32_t Y=0; //13 bit - int32_t B; //26 bit - int32_t INPUTS; //24 bit - int32_t MEMVAL=0; - int32_t FRC_REG=0; //13 bit - int32_t Y_REG=0; //24 bit - uint32_t ADDR; - uint32_t ADRS_REG=0; //13 bit - int step; - - if(DSP->Stopped) + if (Stopped) return; - memset(DSP->EFREG,0,2*16); + std::fill(std::begin(EFREG), std::end(EFREG), 0); + #if 0 int dump=0; FILE *f=nullptr; if(dump) f=fopen("dsp.txt","wt"); #endif - for(step=0;stepLastStep;++step) + + int32_t ACC = 0; //26 bit + int32_t SHIFTED = 0; //24 bit + int32_t Y = 0; //13 bit + int32_t MEMVAL = 0; + int32_t FRC_REG = 0; //13 bit + int32_t Y_REG = 0; //24 bit + uint32_t ADRS_REG = 0; //13 bit + + for (int step = 0; step < /*128*/LastStep; ++step) { - uint16_t *IPtr=DSP->MPRO+step*4; - -// if(IPtr[0]==0 && IPtr[1]==0 && IPtr[2]==0 && IPtr[3]==0) -// break; - - uint32_t TRA=(IPtr[0]>>8)&0x7F; - uint32_t TWT=(IPtr[0]>>7)&0x01; - uint32_t TWA=(IPtr[0]>>0)&0x7F; - - uint32_t XSEL=(IPtr[1]>>15)&0x01; - uint32_t YSEL=(IPtr[1]>>13)&0x03; - uint32_t IRA=(IPtr[1]>>6)&0x3F; - uint32_t IWT=(IPtr[1]>>5)&0x01; - uint32_t IWA=(IPtr[1]>>0)&0x1F; - - uint32_t TABLE=(IPtr[2]>>15)&0x01; - uint32_t MWT=(IPtr[2]>>14)&0x01; - uint32_t MRD=(IPtr[2]>>13)&0x01; - uint32_t EWT=(IPtr[2]>>12)&0x01; - uint32_t EWA=(IPtr[2]>>8)&0x0F; - uint32_t ADRL=(IPtr[2]>>7)&0x01; - uint32_t FRCL=(IPtr[2]>>6)&0x01; - uint32_t SHIFT=(IPtr[2]>>4)&0x03; - uint32_t YRL=(IPtr[2]>>3)&0x01; - uint32_t NEGB=(IPtr[2]>>2)&0x01; - uint32_t ZERO=(IPtr[2]>>1)&0x01; - uint32_t BSEL=(IPtr[2]>>0)&0x01; - - uint32_t NOFL=(IPtr[3]>>15)&1; //???? - uint32_t COEF=(IPtr[3]>>9)&0x3f; - - uint32_t MASA=(IPtr[3]>>2)&0x1f; //??? - uint32_t ADREB=(IPtr[3]>>1)&0x1; - uint32_t NXADR=(IPtr[3]>>0)&0x1; - - int64_t v; + uint16_t *const IPtr = MPRO + (step * 4); + + //if (!IPtr[0] && !IPtr[1] && !IPtr[2] && !IPtr[3]) + //break; + + uint32_t const TRA = (IPtr[0] >> 8) & 0x7F; + uint32_t const TWT = (IPtr[0] >> 7) & 0x01; + uint32_t const TWA = (IPtr[0] >> 0) & 0x7F; + + uint32_t const XSEL = (IPtr[1] >> 15) & 0x01; + uint32_t const YSEL = (IPtr[1] >> 13) & 0x03; + uint32_t const IRA = (IPtr[1] >> 6) & 0x3F; + uint32_t const IWT = (IPtr[1] >> 5) & 0x01; + uint32_t const IWA = (IPtr[1] >> 0) & 0x1F; + + uint32_t const TABLE = (IPtr[2] >> 15) & 0x01; + uint32_t const MWT = (IPtr[2] >> 14) & 0x01; + uint32_t const MRD = (IPtr[2] >> 13) & 0x01; + uint32_t const EWT = (IPtr[2] >> 12) & 0x01; + uint32_t const EWA = (IPtr[2] >> 8) & 0x0F; + uint32_t const ADRL = (IPtr[2] >> 7) & 0x01; + uint32_t const FRCL = (IPtr[2] >> 6) & 0x01; + uint32_t const SHIFT = (IPtr[2] >> 4) & 0x03; + uint32_t const YRL = (IPtr[2] >> 3) & 0x01; + uint32_t const NEGB = (IPtr[2] >> 2) & 0x01; + uint32_t const ZERO = (IPtr[2] >> 1) & 0x01; + uint32_t const BSEL = (IPtr[2] >> 0) & 0x01; + + uint32_t const NOFL = (IPtr[3] >> 15) & 0x01; //???? + uint32_t const COEF = (IPtr[3] >> 9) & 0x3f; + + uint32_t const MASA = (IPtr[3] >> 2) & 0x1f; //??? + uint32_t const ADREB = (IPtr[3] >> 1) & 0x01; + uint32_t const NXADR = (IPtr[3] >> 0) & 0x01; //operations are done at 24 bit precision #if 0 - if(MASA) + if (MASA) int a=1; - if(NOFL) + if (NOFL) int a=1; -// int dump=0; + //int dump=0; - if(f) + if (f) { -#define DUMP(v) fprintf(f," " #v ": %04X",v); - - fprintf(f,"%d: ",step); +#define DUMP(v) fprintf(f, " " #v ": %04X", v); + fprintf(f, "%d: ", step); DUMP(ACC); DUMP(SHIFTED); DUMP(X); @@ -150,206 +148,193 @@ void SCSPDSP_Step(SCSPDSP *DSP) DUMP(Y_REG); DUMP(ADDR); DUMP(ADRS_REG); - fprintf(f,"\n"); + fprintf(f, "\n"); +#undef DUMP } #endif + //INPUTS RW -// colmns97 hits this -// assert(IRA<0x32); - if(IRA<=0x1f) - INPUTS=DSP->MEMS[IRA]; - else if(IRA<=0x2F) - INPUTS=DSP->MIXS[IRA-0x20]<<4; //MIXS is 20 bit - else if(IRA<=0x31) - INPUTS=0; + // colmns97 hits this + //assert(IRA < 0x32); + int32_t INPUTS; // 24-bit + if (IRA <= 0x1f) + INPUTS = MEMS[IRA]; + else if (IRA <= 0x2F) + INPUTS = MIXS[IRA - 0x20] << 4; //MIXS is 20 bit + else if (IRA <= 0x31) + INPUTS = 0; else return; - INPUTS<<=8; - INPUTS>>=8; - //if(INPUTS&0x00800000) - // INPUTS|=0xFF000000; + INPUTS <<= 8; + INPUTS >>= 8; + //if(INPUTS & 0x00800000) + //INPUTS |= 0xFF000000; - if(IWT) + if (IWT) { - DSP->MEMS[IWA]=MEMVAL; //MEMVAL was selected in previous MRD - if(IRA==IWA) - INPUTS=MEMVAL; + MEMS[IWA] = MEMVAL; // MEMVAL was selected in previous MRD + if (IRA == IWA) + INPUTS = MEMVAL; } //Operand sel - //B - if(!ZERO) + int32_t B; // 26-bit + if (!ZERO) { - if(BSEL) - B=ACC; + if (BSEL) + B = ACC; else { - B=DSP->TEMP[(TRA+DSP->DEC)&0x7F]; - B<<=8; - B>>=8; - //if(B&0x00800000) - // B|=0xFF000000; //Sign extend + B = TEMP[(TRA + DEC) & 0x7F]; + B <<= 8; + B >>= 8; + //if (B & 0x00800000) + //B |= 0xFF000000; //Sign extend } - if(NEGB) - B=0-B; + if (NEGB) + B = 0 - B; } else - B=0; + B = 0; - //X - if(XSEL) - X=INPUTS; + int32_t X; // 24-bit + if (XSEL) + X = INPUTS; else { - X=DSP->TEMP[(TRA+DSP->DEC)&0x7F]; - X<<=8; - X>>=8; - //if(X&0x00800000) - // X|=0xFF000000; + X = TEMP[(TRA + DEC) & 0x7F]; + X <<= 8; + X >>= 8; + //if (X & 0x00800000) + //X |= 0xFF000000; } - //Y - if(YSEL==0) - Y=FRC_REG; - else if(YSEL==1) - Y=DSP->COEF[COEF]>>3; //COEF is 16 bits - else if(YSEL==2) - Y=(Y_REG>>11)&0x1FFF; - else if(YSEL==3) - Y=(Y_REG>>4)&0x0FFF; + if (YSEL == 0) + Y = FRC_REG; + else if (YSEL == 1) + Y = this->COEF[COEF] >> 3; //COEF is 16 bits + else if (YSEL == 2) + Y = (Y_REG >> 11) & 0x1FFF; + else if (YSEL == 3) + Y = (Y_REG >> 4) & 0x0FFF; - if(YRL) - Y_REG=INPUTS; + if (YRL) + Y_REG = INPUTS; //Shifter - if(SHIFT==0) - { - SHIFTED=ACC; - if(SHIFTED>0x007FFFFF) - SHIFTED=0x007FFFFF; - if(SHIFTED<(-0x00800000)) - SHIFTED=-0x00800000; - } - else if(SHIFT==1) + if (SHIFT == 0) + SHIFTED = std::max(std::min(ACC, 0x007FFFFF), -0x00800000); + else if (SHIFT == 1) + SHIFTED = std::max(std::min(ACC * 2, 0x007FFFFF), -0x00800000); + else if (SHIFT == 2) { - SHIFTED=ACC*2; - if(SHIFTED>0x007FFFFF) - SHIFTED=0x007FFFFF; - if(SHIFTED<(-0x00800000)) - SHIFTED=-0x00800000; - } - else if(SHIFT==2) - { - SHIFTED=ACC*2; - SHIFTED<<=8; - SHIFTED>>=8; - //SHIFTED&=0x00FFFFFF; - //if(SHIFTED&0x00800000) - // SHIFTED|=0xFF000000; + SHIFTED = ACC * 2; + SHIFTED <<= 8; + SHIFTED >>= 8; + //SHIFTED &= 0x00FFFFFF; + //if (SHIFTED & 0x00800000) + //SHIFTED |= 0xFF000000; } else if(SHIFT==3) { - SHIFTED=ACC; - SHIFTED<<=8; - SHIFTED>>=8; - //SHIFTED&=0x00FFFFFF; - //if(SHIFTED&0x00800000) - // SHIFTED|=0xFF000000; + SHIFTED = ACC; + SHIFTED <<= 8; + SHIFTED >>= 8; + //SHIFTED &= 0x00FFFFFF; + //if (SHIFTED & 0x00800000) + //SHIFTED |= 0xFF000000; } //ACCUM - Y<<=19; - Y>>=19; - //if(Y&0x1000) - // Y|=0xFFFFF000; + Y <<= 19; + Y >>= 19; + //if (Y & 0x1000) + //Y |= 0xFFFFF000; - v=(((int64_t) X*(int64_t) Y)>>12); - ACC=(int) v+B; + int64_t const v = (int64_t(X) * int64_t(Y)) >> 12; + ACC = int(v + B); - if(TWT) - DSP->TEMP[(TWA+DSP->DEC)&0x7F]=SHIFTED; + if (TWT) + TEMP[(TWA + DEC) & 0x7F] = SHIFTED; - if(FRCL) + if (FRCL) { - if(SHIFT==3) - FRC_REG=SHIFTED&0x0FFF; + if (SHIFT == 3) + FRC_REG = SHIFTED & 0x0FFF; else - FRC_REG=(SHIFTED>>11)&0x1FFF; + FRC_REG = (SHIFTED >> 11) & 0x1FFF; } - if(MRD || MWT) - //if(0) + if (MRD || MWT) + //if (0) { - ADDR=DSP->MADRS[MASA]; - if(!TABLE) - ADDR+=DSP->DEC; - if(ADREB) - ADDR+=ADRS_REG&0x0FFF; - if(NXADR) + uint32_t ADDR = MADRS[MASA]; + if (!TABLE) + ADDR += DEC; + if (ADREB) + ADDR += ADRS_REG & 0x0FFF; + if (NXADR) ADDR++; - if(!TABLE) - ADDR&=DSP->RBL-1; + if (!TABLE) + ADDR &= RBL - 1; else - ADDR&=0xFFFF; - //ADDR<<=1; - //ADDR+=DSP->RBP<<13; - //MEMVAL=DSP->SCSPRAM[ADDR>>1]; - ADDR+=DSP->RBP<<12; + ADDR &= 0xFFFF; + //ADDR <<= 1; + //ADDR += RBP << 13; + //MEMVAL = SCSPRAM[ADDR >> 1]; + ADDR += RBP << 12; if (ADDR > 0x7ffff) ADDR = 0; - if(MRD && (step&1)) //memory only allowed on odd? DoA inserts NOPs on even + if (MRD && (step & 1)) //memory only allowed on odd? DoA inserts NOPs on even { - if(NOFL) - MEMVAL=DSP->SCSPRAM[ADDR]<<8; + if (NOFL) + MEMVAL = SCSPRAM[ADDR] << 8; else - MEMVAL=UNPACK(DSP->SCSPRAM[ADDR]); + MEMVAL = UNPACK(SCSPRAM[ADDR]); } - if(MWT && (step&1)) + if (MWT && (step & 1)) { - if(NOFL) - DSP->SCSPRAM[ADDR]=SHIFTED>>8; + if (NOFL) + SCSPRAM[ADDR] = SHIFTED >> 8; else - DSP->SCSPRAM[ADDR]=PACK(SHIFTED); + SCSPRAM[ADDR] = PACK(SHIFTED); } } - if(ADRL) + if (ADRL) { - if(SHIFT==3) - ADRS_REG=(SHIFTED>>12)&0xFFF; + if (SHIFT == 3) + ADRS_REG = (SHIFTED >> 12) & 0xFFF; else - ADRS_REG=(INPUTS>>16); + ADRS_REG = INPUTS >> 16; } - if(EWT) - DSP->EFREG[EWA]+=SHIFTED>>8; - + if (EWT) + EFREG[EWA] += SHIFTED >> 8; } - --DSP->DEC; - memset(DSP->MIXS,0,4*16); -// if(f) -// fclose(f); + --DEC; + std::fill(std::begin(MIXS), std::end(MIXS), 0); + //if (f) + //fclose(f); } -void SCSPDSP_SetSample(SCSPDSP *DSP,int32_t sample,int SEL,int MXL) +void SCSPDSP::SetSample(int32_t sample, int SEL, int MXL) { - //DSP->MIXS[SEL]+=sample<<(MXL+1)/*7*/; - DSP->MIXS[SEL]+=sample; -// if(MXL) -// int a=1; + //MIXS[SEL] += sample << (MXL + 1)/*7*/; + MIXS[SEL] += sample; + //if (MXL) + //int a = 1; } -void SCSPDSP_Start(SCSPDSP *DSP) +void SCSPDSP::Start() { + Stopped = 0; int i; - DSP->Stopped=0; - for(i=127;i>=0;--i) + for (i = 127; i >= 0; --i) { - uint16_t *IPtr=DSP->MPRO+i*4; - - if(IPtr[0]!=0 || IPtr[1]!=0 || IPtr[2]!=0 || IPtr[3]!=0) + uint16_t const *const IPtr = MPRO + (i * 4); + if (IPtr[0] || IPtr[1] || IPtr[2] || IPtr[3]) break; } - DSP->LastStep=i+1; - + LastStep = i + 1; } diff --git a/src/devices/sound/scspdsp.h b/src/devices/sound/scspdsp.h index 7b8e4eda2dc..29bcb43c241 100644 --- a/src/devices/sound/scspdsp.h +++ b/src/devices/sound/scspdsp.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:ElSemi, R. Belmont -#pragma once +#ifndef MAME_SOUND_SCSPDSP_H +#define MAME_SOUND_SCSPDSP_H -#ifndef __SCSPDSP_H__ -#define __SCSPDSP_H__ +#pragma once //the DSP Context struct SCSPDSP @@ -32,11 +32,11 @@ struct SCSPDSP int Stopped; int LastStep; -}; -void SCSPDSP_Init(SCSPDSP *DSP); -void SCSPDSP_SetSample(SCSPDSP *DSP, int32_t sample, int32_t SEL, int32_t MXL); -void SCSPDSP_Step(SCSPDSP *DSP); -void SCSPDSP_Start(SCSPDSP *DSP); + void Init(); + void SetSample(int32_t sample, int32_t SEL, int32_t MXL); + void Step(); + void Start(); +}; -#endif /* __SCSPDSP_H__ */ +#endif // MAME_SOUND_SCSPDSP_H diff --git a/src/devices/sound/segapcm.cpp b/src/devices/sound/segapcm.cpp index 9068dd262d0..86fdedfb206 100644 --- a/src/devices/sound/segapcm.cpp +++ b/src/devices/sound/segapcm.cpp @@ -9,7 +9,7 @@ // device type definition -const device_type SEGAPCM = device_creator; +DEFINE_DEVICE_TYPE(SEGAPCM, segapcm_device, "segapcm", "Sega PCM") //------------------------------------------------- @@ -17,7 +17,7 @@ const device_type SEGAPCM = device_creator; //------------------------------------------------- segapcm_device::segapcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGAPCM, "Sega PCM", tag, owner, clock, "segapcm", __FILE__), + : device_t(mconfig, SEGAPCM, tag, owner, clock), device_sound_interface(mconfig, *this), device_rom_interface(mconfig, *this, 21), m_ram(nullptr), diff --git a/src/devices/sound/segapcm.h b/src/devices/sound/segapcm.h index 2ba7769f7d9..ec3e8d2dbfa 100644 --- a/src/devices/sound/segapcm.h +++ b/src/devices/sound/segapcm.h @@ -4,30 +4,27 @@ /* SEGA 8bit PCM */ /*********************************************************/ -#pragma once - -#ifndef __SEGAPCM_H__ -#define __SEGAPCM_H__ +#ifndef MAMESOUND_SEGAPCM_H +#define MAMESOUND_SEGAPCM_H -#define BANK_256 (11) -#define BANK_512 (12) -#define BANK_12M (13) -#define BANK_MASK7 (0x70<<16) -#define BANK_MASKF (0xf0<<16) -#define BANK_MASKF8 (0xf8<<16) +#pragma once //************************************************************************** // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_SEGAPCM_ADD(_tag, _clock) \ - MCFG_DEVICE_ADD(_tag, SEGAPCM, _clock) -#define MCFG_SEGAPCM_REPLACE(_tag, _clock) \ - MCFG_DEVICE_REPLACE(_tag, SEGAPCM, _clock) +#define MCFG_SEGAPCM_ADD(tag, clock) \ + MCFG_DEVICE_ADD((tag), SEGAPCM, (clock)) + +#define MCFG_SEGAPCM_REPLACE(tag, clock) \ + MCFG_DEVICE_REPLACE((tag), SEGAPCM, (clock)) -#define MCFG_SEGAPCM_BANK(_bank) \ - segapcm_device::set_bank(*device, _bank); +#define MCFG_SEGAPCM_BANK(bank) \ + segapcm_device::set_bank(*device, (segapcm_device::bank)); + +#define MCFG_SEGAPCM_BANK_MASK(bank, mask) \ + segapcm_device::set_bank(*device, (segapcm_device::bank) | (segapcm_device::mask)); //************************************************************************** @@ -39,8 +36,14 @@ class segapcm_device : public device_t, public device_rom_interface { public: + static constexpr int BANK_256 = 11; + static constexpr int BANK_512 = 12; + static constexpr int BANK_12M = 13; + static constexpr int BANK_MASK7 = 0x70 << 16; + static constexpr int BANK_MASKF = 0xf0 << 16; + static constexpr int BANK_MASKF8 = 0xf8 << 16; + segapcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~segapcm_device() { } // static configuration static void set_bank(device_t &device, int bank) { downcast(device).m_bank = bank; } @@ -67,7 +70,6 @@ private: sound_stream* m_stream; }; -extern const device_type SEGAPCM; - +DECLARE_DEVICE_TYPE(SEGAPCM, segapcm_device) -#endif /* __SEGAPCM_H__ */ +#endif // MAMESOUND_SEGAPCM_H diff --git a/src/devices/sound/sid.cpp b/src/devices/sound/sid.cpp index d39bc0ed037..1535c56a69e 100644 --- a/src/devices/sound/sid.cpp +++ b/src/devices/sound/sid.cpp @@ -15,24 +15,27 @@ */ #include "emu.h" -#include "sidvoice.h" -#include "sidenvel.h" #include "sid.h" -static std::unique_ptr filterTable; -static std::unique_ptr bandPassParam; +#include "sidenvel.h" + + +namespace { + +std::unique_ptr filterTable; +std::unique_ptr bandPassParam; #define lowPassParam filterTable -static float filterResTable[16]; +float filterResTable[16]; #define maxLogicalVoices 4 -static const int mix16monoMiddleIndex = 256*maxLogicalVoices/2; -static uint16_t mix16mono[256*maxLogicalVoices]; +const int mix16monoMiddleIndex = 256*maxLogicalVoices/2; +uint16_t mix16mono[256*maxLogicalVoices]; -static uint16_t zero16bit=0; /* either signed or unsigned */ +uint16_t zero16bit=0; /* either signed or unsigned */ //uint32_t splitBufferLen; -static void MixerInit(int threeVoiceAmplify) +void MixerInit(int threeVoiceAmplify) { long si; uint16_t ui; @@ -54,67 +57,69 @@ static void MixerInit(int threeVoiceAmplify) } +} // anonymous namespace -static inline void syncEm(SID6581_t *This) + +inline void SID6581_t::syncEm() { - int sync1 = (This->optr1.modulator->cycleLenCount <= 0); - int sync2 = (This->optr2.modulator->cycleLenCount <= 0); - int sync3 = (This->optr3.modulator->cycleLenCount <= 0); + bool const sync1(optr1.modulator->cycleLenCount <= 0); + bool const sync2(optr2.modulator->cycleLenCount <= 0); + bool const sync3(optr3.modulator->cycleLenCount <= 0); - This->optr1.cycleLenCount--; - This->optr2.cycleLenCount--; - This->optr3.cycleLenCount--; + optr1.cycleLenCount--; + optr2.cycleLenCount--; + optr3.cycleLenCount--; - if (This->optr1.sync && sync1) + if (optr1.sync && sync1) { - This->optr1.cycleLenCount = 0; - This->optr1.outProc = &sidWaveCalcNormal; + optr1.cycleLenCount = 0; + optr1.outProc = &sidOperator::wave_calc_normal; #if defined(DIRECT_FIXPOINT) optr1.waveStep.l = 0; #else - This->optr1.waveStep = (This->optr1.waveStepPnt = 0); + optr1.waveStep = optr1.waveStepPnt = 0; #endif } - if (This->optr2.sync && sync2) + if (optr2.sync && sync2) { - This->optr2.cycleLenCount = 0; - This->optr2.outProc = &sidWaveCalcNormal; + optr2.cycleLenCount = 0; + optr2.outProc = &sidOperator::wave_calc_normal; #if defined(DIRECT_FIXPOINT) - This->optr2.waveStep.l = 0; + optr2.waveStep.l = 0; #else - This->optr2.waveStep = (This->optr2.waveStepPnt = 0); + optr2.waveStep = optr2.waveStepPnt = 0; #endif } - if (This->optr3.sync && sync3) + if (optr3.sync && sync3) { - This->optr3.cycleLenCount = 0; - This->optr3.outProc = &sidWaveCalcNormal; + optr3.cycleLenCount = 0; + optr3.outProc = &sidOperator::wave_calc_normal; #if defined(DIRECT_FIXPOINT) optr3.waveStep.l = 0; #else - This->optr3.waveStep = (This->optr3.waveStepPnt = 0); + optr3.waveStep = optr3.waveStepPnt = 0; #endif } } -void sidEmuFillBuffer(SID6581_t *This, stream_sample_t *buffer, uint32_t bufferLen ) +void SID6581_t::fill_buffer(stream_sample_t *buffer, uint32_t bufferLen) { -//void* fill16bitMono( SID6581_t *This, void* buffer, uint32_t numberOfSamples ) +//void* SID6581_t::fill16bitMono(void* buffer, uint32_t numberOfSamples) for ( ; bufferLen > 0; bufferLen-- ) { - *buffer++ = (int16_t) mix16mono[(unsigned)(mix16monoMiddleIndex - +(*This->optr1.outProc)(&This->optr1) - +(*This->optr2.outProc)(&This->optr2) - +(This->optr3.outProc(&This->optr3)&This->optr3_outputmask) + *buffer++ = (int16_t) mix16mono[unsigned(mix16monoMiddleIndex + +(*optr1.outProc)(&optr1) + +(*optr2.outProc)(&optr2) + +(optr3.outProc(&optr3)&optr3_outputmask) /* hack for digi sounds does n't seam to come from a tone operator ghostbusters and goldrunner everything except volume zeroed */ - +(This->masterVolume<<2) + +(masterVolume<<2) // +(*sampleEmuRout)() )]; - syncEm(This); + syncEm(); } } @@ -123,29 +128,29 @@ void sidEmuFillBuffer(SID6581_t *This, stream_sample_t *buffer, uint32_t bufferL /* Reset. */ -int sidEmuReset(SID6581_t *This) +bool SID6581_t::reset() { - sidClearOperator( &This->optr1 ); - enveEmuResetOperator( &This->optr1 ); - sidClearOperator( &This->optr2 ); - enveEmuResetOperator( &This->optr2 ); - sidClearOperator( &This->optr3 ); - enveEmuResetOperator( &This->optr3 ); - This->optr3_outputmask = ~0; /* on */ + optr1.clear(); + enveEmuResetOperator( &optr1 ); + optr2.clear(); + enveEmuResetOperator( &optr2 ); + optr3.clear(); + enveEmuResetOperator( &optr3 ); + optr3_outputmask = ~0; /* on */ -// sampleEmuReset(); + //sampleEmuReset(); - This->filter.Type = (This->filter.CurType = 0); - This->filter.Value = 0; - This->filter.Dy = (This->filter.ResDy = 0); + filter.Type = filter.CurType = 0; + filter.Value = 0; + filter.Dy = filter.ResDy = 0; - sidEmuSet( &This->optr1 ); - sidEmuSet( &This->optr2 ); - sidEmuSet( &This->optr3 ); + optr1.set(); + optr2.set(); + optr3.set(); - sidEmuSet2( &This->optr1 ); - sidEmuSet2( &This->optr2 ); - sidEmuSet2( &This->optr3 ); + optr1.set2(); + optr2.set2(); + optr3.set2(); return true; } @@ -210,143 +215,147 @@ static void filterTableInit(running_machine &machine) filterResTable[15] = resDyMax; } -void sid6581_init (SID6581_t *This) +void SID6581_t::init() { - This->optr1.sid=This; - This->optr2.sid=This; - This->optr3.sid=This; - - This->optr1.modulator = &This->optr3; - This->optr3.carrier = &This->optr1; - This->optr1.filtVoiceMask = 1; + optr1.sid = this; + optr2.sid = this; + optr3.sid = this; - This->optr2.modulator = &This->optr1; - This->optr1.carrier = &This->optr2; - This->optr2.filtVoiceMask = 2; + optr1.modulator = &optr3; + optr3.carrier = &optr1; + optr1.filtVoiceMask = 1; - This->optr3.modulator = &This->optr2; - This->optr2.carrier = &This->optr3; - This->optr3.filtVoiceMask = 4; + optr2.modulator = &optr1; + optr1.carrier = &optr2; + optr2.filtVoiceMask = 2; + optr3.modulator = &optr2; + optr2.carrier = &optr3; + optr3.filtVoiceMask = 4; - This->PCMsid = (uint32_t)(This->PCMfreq * (16777216.0 / This->clock)); - This->PCMsidNoise = (uint32_t)((This->clock*256.0)/This->PCMfreq); + PCMsid = uint32_t(PCMfreq * (16777216.0 / clock)); + PCMsidNoise = uint32_t((clock * 256.0) / PCMfreq); - This->filter.Enabled = true; + filter.Enabled = true; - sidInitMixerEngine(This->device->machine()); - filterTableInit(This->device->machine()); + sidInitMixerEngine(device->machine()); + filterTableInit(device->machine()); - sidInitWaveformTables(This->type); + sidInitWaveformTables(type); - enveEmuInit(This->PCMfreq, true); + enveEmuInit(PCMfreq, true); MixerInit(0); - sidEmuReset(This); + reset(); } -void sid6581_port_w (SID6581_t *This, int offset, int data) + +void SID6581_t::port_w(int offset, int data) { offset &= 0x1f; - switch (offset) { - case 0x19: case 0x1a: case 0x1b: case 0x1c: - case 0x1d: - case 0x1e: - case 0x1f: - break; - case 0x15: case 0x16: case 0x17: - case 0x18: - This->mixer_channel->update(); - This->reg[offset] = data; - This->masterVolume = ( This->reg[0x18] & 15 ); - This->masterVolumeAmplIndex = This->masterVolume << 8; - - if ((This->reg[0x18]&0x80) && - ((This->reg[0x17]&This->optr3.filtVoiceMask)==0)) - This->optr3_outputmask = 0; /* off */ + case 0x19: + case 0x1a: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + break; + + case 0x15: + case 0x16: + case 0x17: + case 0x18: + mixer_channel->update(); + reg[offset] = data; + masterVolume = reg[0x18] & 15; + masterVolumeAmplIndex = masterVolume << 8; + + if ((reg[0x18] & 0x80) && !(reg[0x17] & optr3.filtVoiceMask)) + optr3_outputmask = 0; /* off */ + else + optr3_outputmask = ~0; /* on */ + + filter.Type = reg[0x18] & 0x70; + if (filter.Type != filter.CurType) + { + filter.CurType = filter.Type; + optr1.filtLow = optr1.filtRef = 0; + optr2.filtLow = optr2.filtRef = 0; + optr3.filtLow = optr3.filtRef = 0; + } + if (filter.Enabled ) + { + filter.Value = 0x7ff & ((reg[0x15] & 7) | (uint16_t(reg[0x16]) << 3)); + if (filter.Type == 0x20) + filter.Dy = bandPassParam ? bandPassParam[filter.Value] : 0.0f; else - This->optr3_outputmask = ~0; /* on */ - - This->filter.Type = This->reg[0x18] & 0x70; - if (This->filter.Type != This->filter.CurType) - { - This->filter.CurType = This->filter.Type; - This->optr1.filtLow = (This->optr1.filtRef = 0); - This->optr2.filtLow = (This->optr2.filtRef = 0); - This->optr3.filtLow = (This->optr3.filtRef = 0); - } - if ( This->filter.Enabled ) - { - This->filter.Value = 0x7ff & ( (This->reg[0x15]&7) | ( (uint16_t)This->reg[0x16] << 3 )); - if (This->filter.Type == 0x20) - This->filter.Dy = bandPassParam ? bandPassParam[This->filter.Value] : 0.0f; - else - This->filter.Dy = lowPassParam ? lowPassParam[This->filter.Value] : 0.0f; - This->filter.ResDy = filterResTable[This->reg[0x17] >> 4] - This->filter.Dy; - if ( This->filter.ResDy < 1.0f ) - This->filter.ResDy = 1.0f; - } - - sidEmuSet( &This->optr1 ); - sidEmuSet( &This->optr3 ); - sidEmuSet( &This->optr2 ); - - // relies on sidEmuSet also for other channels! - sidEmuSet2( &This->optr1 ); - sidEmuSet2( &This->optr2 ); - sidEmuSet2( &This->optr3 ); - break; - - default: - This->mixer_channel->update(); - This->reg[offset] = data; - - if (offset<7) { - This->optr1.reg[offset] = data; - } else if (offset<14) { - This->optr2.reg[offset-7] = data; - } else if (offset<21) { - This->optr3.reg[offset-14] = data; - } - - sidEmuSet( &This->optr1 ); - sidEmuSet( &This->optr3 ); - sidEmuSet( &This->optr2 ); - - // relies on sidEmuSet also for other channels! - sidEmuSet2( &This->optr1 ); - sidEmuSet2( &This->optr2 ); - sidEmuSet2( &This->optr3 ); - break; + filter.Dy = lowPassParam ? lowPassParam[filter.Value] : 0.0f; + filter.ResDy = filterResTable[reg[0x17] >> 4] - filter.Dy; + if (filter.ResDy < 1.0f) + filter.ResDy = 1.0f; + } + + optr1.set(); + optr3.set(); + optr2.set(); + + // relies on sidEmuSet also for other channels! + optr1.set2(); + optr2.set2(); + optr3.set2(); + break; + + default: + mixer_channel->update(); + reg[offset] = data; + + if (offset < 7) + optr1.reg[offset] = data; + else if (offset < 14) + optr2.reg[offset - 7] = data; + else if (offset < 21) + optr3.reg[offset - 14] = data; + + optr1.set(); + optr3.set(); + optr2.set(); + + // relies on sidEmuSet also for other channels! + optr1.set2(); + optr2.set2(); + optr3.set2(); + break; } } -int sid6581_port_r (running_machine &machine, SID6581_t *This, int offset) + +int SID6581_t::port_r(running_machine &machine, int offset) { + /* SIDPLAY reads last written at a sid address value */ int data; -/* SIDPLAY reads last written at a sid address value */ offset &= 0x1f; switch (offset) { case 0x1d: case 0x1e: case 0x1f: - data=0xff; - break; + data = 0xff; + break; case 0x1b: - This->mixer_channel->update(); - data = This->optr3.output; - break; + mixer_channel->update(); + data = optr3.output; + break; case 0x1c: - This->mixer_channel->update(); - data = This->optr3.enveVol; - break; + mixer_channel->update(); + data = optr3.enveVol; + break; default: - data=This->reg[offset]; + data = reg[offset]; } return data; } diff --git a/src/devices/sound/sid.h b/src/devices/sound/sid.h index 095f711bdc8..a57f2ff6b5f 100644 --- a/src/devices/sound/sid.h +++ b/src/devices/sound/sid.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Peter Trauner -#pragma once +#ifndef MAME_SOUND_SID_H +#define MAME_SOUND_SID_H -#ifndef __SID_H__ -#define __SID_H__ +#pragma once /* approximation of the sid6581 chip @@ -41,7 +41,6 @@ struct SID6581_t uint8_t masterVolume; uint16_t masterVolumeAmplIndex; - struct { int Enabled; @@ -52,15 +51,18 @@ struct SID6581_t sidOperator optr1, optr2, optr3; int optr3_outputmask; -}; -void sid6581_init (SID6581_t *This); + void init(); + + bool reset(); -int sidEmuReset(SID6581_t *This); + int port_r(running_machine &machine, int offset); + void port_w(int offset, int data); -int sid6581_port_r (running_machine &machine, SID6581_t *This, int offset); -void sid6581_port_w (SID6581_t *This, int offset, int data); + void fill_buffer(stream_sample_t *buffer, uint32_t bufferLen); -void sidEmuFillBuffer(SID6581_t *This, stream_sample_t *buffer, uint32_t bufferLen ); +private: + void syncEm(); +}; -#endif /* __SID_H__ */ +#endif // MAME_SOUND_SID_H diff --git a/src/devices/sound/side6581.h b/src/devices/sound/side6581.h index 4870d96008c..c1a25c2a525 100644 --- a/src/devices/sound/side6581.h +++ b/src/devices/sound/side6581.h @@ -4,10 +4,10 @@ // /home/ms/source/sidplay/libsidplay/emu/RCS/enve_dl.h,v // -#pragma once +#ifndef MAME_SOUND_SIDE6581_H +#define MAME_SOUND_SIDE6581_H -#ifndef __SIDE6581_H__ -#define __SIDE6581_H__ +#pragma once // @@ -125,4 +125,4 @@ static const uint8_t releaseTab[] = }; -#endif /* __SIDE6581_H__ */ +#endif // MAME_SOUND_SIDE6581_H diff --git a/src/devices/sound/sidenvel.cpp b/src/devices/sound/sidenvel.cpp index e998558bdf5..2dc805797d1 100644 --- a/src/devices/sound/sidenvel.cpp +++ b/src/devices/sound/sidenvel.cpp @@ -33,11 +33,12 @@ /*========================================================================= */ #include "emu.h" -#include "sidvoice.h" -#include "sid.h" +#include "sidenvel.h" +#include "sid.h" #include "side6581.h" -#include "sidenvel.h" +#include "sidvoice.h" + const uint8_t masterVolumeLevels[16] = { diff --git a/src/devices/sound/sidenvel.h b/src/devices/sound/sidenvel.h index 61bd57b20e8..224b4967f20 100644 --- a/src/devices/sound/sidenvel.h +++ b/src/devices/sound/sidenvel.h @@ -4,10 +4,12 @@ // /home/ms/source/sidplay/libsidplay/emu/RCS/envelope.h,v // +#ifndef MAME_SOUND_SIDENVEL_H +#define MAME_SOUND_SIDENVEL_H + #pragma once -#ifndef __SIDENVEL_H__ -#define __SIDENVEL_H__ +#include "sidvoice.h" extern void enveEmuInit(uint32_t updateFreq, int measuredValues); @@ -36,4 +38,4 @@ enum }; -#endif /* __SIDENVEL_H__ */ +#endif // MAME_SOUND_SIDENVEL_H diff --git a/src/devices/sound/sidvoice.cpp b/src/devices/sound/sidvoice.cpp index de521a63e2f..9bc9a720ca7 100644 --- a/src/devices/sound/sidvoice.cpp +++ b/src/devices/sound/sidvoice.cpp @@ -2,11 +2,15 @@ // copyright-holders:Peter Trauner #include "emu.h" #include "sidvoice.h" + #include "sid.h" #include "sidenvel.h" #include "sidw6581.h" #include "sidw8580.h" +#include "sound/mos6581.h" + + static uint8_t triangleTable[4096]; static uint8_t sawtoothTable[4096]; static uint8_t squareTable[2*4096]; @@ -23,6 +27,7 @@ static const uint8_t* waveform70; static uint8_t noiseTableLSB[1<<8]; #endif + static std::unique_ptr ampMod1x8; static const uint32_t noiseSeed = 0x7ffff8; @@ -274,58 +279,6 @@ static void sidMode74(sidOperator* pVoice) { /* */ /* */ -static inline void waveCalcCycleLen(sidOperator* pVoice) -{ -#if defined(DIRECT_FIXPOINT) - pVoice->cycleAddLen.w[HI] = 0; - pVoice->cycleAddLen.l += pVoice->cycleLen.l; - pVoice->cycleLenCount = pVoice->cycleAddLen.w[HI]; -#else - pVoice->cycleAddLenPnt += pVoice->cycleLenPnt; - pVoice->cycleLenCount = pVoice->cycleLen; - if ( pVoice->cycleAddLenPnt > 65535 ) pVoice->cycleLenCount++; - pVoice->cycleAddLenPnt &= 0xFFFF; -#endif - /* If we keep the value cycleLen between 1 <= x <= 65535, */ - /* the following check is not required. */ -/* if ( pVoice->cycleLenCount == 0 ) */ -/* { */ -/*#if defined(DIRECT_FIXPOINT) */ -/* pVoice->waveStep.l = 0; */ -/*#else */ -/* pVoice->waveStep = (pVoice->waveStepPnt = 0); */ -/*#endif */ -/* pVoice->cycleLenCount = 0; */ -/* } */ -/* else */ - { -#if defined(DIRECT_FIXPOINT) - uint16_t diff = pVoice->cycleLenCount - pVoice->cycleLen.w[HI]; -#else - uint16_t diff = pVoice->cycleLenCount - pVoice->cycleLen; -#endif - if ( pVoice->wavePre[diff].len != pVoice->cycleLenCount ) - { - pVoice->wavePre[diff].len = pVoice->cycleLenCount; -#if defined(DIRECT_FIXPOINT) - pVoice->wavePre[diff].stp = (pVoice->waveStepAdd.l = (4096UL*65536UL) / pVoice->cycleLenCount); -#else - pVoice->wavePre[diff].stp = (pVoice->waveStepAdd = 4096UL / pVoice->cycleLenCount); - pVoice->wavePre[diff].pnt = (pVoice->waveStepAddPnt = ((4096UL % pVoice->cycleLenCount) * 65536UL) / pVoice->cycleLenCount); -#endif - } - else - { -#if defined(DIRECT_FIXPOINT) - pVoice->waveStepAdd.l = pVoice->wavePre[diff].stp; -#else - pVoice->waveStepAdd = pVoice->wavePre[diff].stp; - pVoice->waveStepAddPnt = pVoice->wavePre[diff].pnt; -#endif - } - } /* see above (opening bracket) */ -} - static inline void waveCalcFilter(sidOperator* pVoice) { if ( pVoice->filtEnabled ) @@ -402,32 +355,6 @@ static int8_t waveCalcMute(sidOperator* pVoice) } -int8_t sidWaveCalcNormal(sidOperator* pVoice) -{ - if ( pVoice->cycleLenCount <= 0 ) - { - waveCalcCycleLen(pVoice); - if (( pVoice->SIDctrl & 0x40 ) == 0x40 ) - { - pVoice->pulseIndex = pVoice->newPulseIndex; - if ( pVoice->pulseIndex > 2048 ) - { -#if defined(DIRECT_FIXPOINT) - pVoice->waveStep.w[HI] = 0; -#else - pVoice->waveStep = 0; -#endif - } - } - } - (*pVoice->waveProc)(pVoice); - pVoice->filtIO = ampMod1x8[(*pVoice->ADSRproc)(pVoice)|pVoice->output]; -// pVoice->filtIO = pVoice->sid->masterVolume; // test for digi sound - waveCalcFilter(pVoice); - return pVoice->filtIO;//&pVoice->outputMask; -} - - static int8_t waveCalcRangeCheck(sidOperator* pVoice) { #if defined(DIRECT_FIXPOINT) @@ -442,7 +369,7 @@ static int8_t waveCalcRangeCheck(sidOperator* pVoice) { /* Next step switch back to normal calculation. */ pVoice->cycleLenCount = 0; - pVoice->outProc = &sidWaveCalcNormal; + pVoice->outProc = &sidOperator::wave_calc_normal; #if defined(DIRECT_FIXPOINT) pVoice->waveStep.w[HI] = 4095; #else @@ -454,262 +381,325 @@ static int8_t waveCalcRangeCheck(sidOperator* pVoice) return pVoice->filtIO;//&pVoice->outputMask; } -/* -------------------------------------------------- Operator frame set-up 1 */ +/* MOS-8580, MOS-6581 (no 70) */ +static ptr2sidVoidFunc sidModeNormalTable[16] = +{ + sidMode00, sidMode10, sidMode20, sidMode30, sidMode40, sidMode50, sidMode60, sidMode70, + sidMode80, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock +}; -void sidEmuSet(sidOperator* pVoice) +/* MOS-8580, MOS-6581 (no 74) */ +static ptr2sidVoidFunc sidModeRingTable[16] = { - uint8_t enveTemp, newWave, oldWave; - uint8_t ADtemp; - uint8_t SRtemp; - uint8_t tmpSusVol; + sidMode00, sidMode14, sidMode00, sidMode34, sidMode00, sidMode54, sidMode00, sidMode74, + sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock +}; + + +void sidOperator::clear() +{ + SIDfreq = 0; + SIDctrl = 0; + SIDAD = 0; + SIDSR = 0; + + sync = false; + + pulseIndex = newPulseIndex = SIDpulseWidth = 0; + curSIDfreq = curNoiseFreq = 0; + + output = noiseOutput = 0; + filtIO = 0; + + filtEnabled = false; + filtLow = filtRef = 0; + + cycleLenCount = 0; +#if defined(DIRECT_FIXPOINT) + cycleLen.l = cycleAddLen.l = 0; +#else + cycleLen = cycleLenPnt = 0; + cycleAddLenPnt = 0; +#endif + + outProc = waveCalcMute; - pVoice->SIDfreq = pVoice->reg[0]|(pVoice->reg[1]<<8); +#if defined(DIRECT_FIXPOINT) + waveStepAdd.l = waveStep.l = 0; + wavePre[0].len = (wavePre[0].stp = 0); + wavePre[1].len = (wavePre[1].stp = 0); +#else + waveStepAdd = waveStepAddPnt = 0; + waveStep = waveStepPnt = 0; + wavePre[0].len = 0; + wavePre[0].stp = wavePre[0].pnt = 0; + wavePre[1].len = 0; + wavePre[1].stp = wavePre[1].pnt = 0; +#endif + waveStepOld = 0; - pVoice->SIDpulseWidth = (pVoice->reg[2]|(pVoice->reg[3]<<8)) & 0x0FFF; - pVoice->newPulseIndex = 4096 - pVoice->SIDpulseWidth; #if defined(DIRECT_FIXPOINT) - if ( ((pVoice->waveStep.w[HI] + pVoice->pulseIndex) >= 0x1000) - && ((pVoice->waveStep.w[HI] + pVoice->newPulseIndex) >= 0x1000) ) + noiseReg.l = noiseSeed; +#else + noiseReg = noiseSeed; +#endif + noiseStepAdd = noiseStep = 0; + noiseIsLocked = false; +} + + +/* -------------------------------------------------- Operator frame set-up 1 */ + +void sidOperator::set() +{ + SIDfreq = reg[0] | (reg[1] << 8); + + SIDpulseWidth = (reg[2] | (reg[3] << 8)) & 0x0FFF; + newPulseIndex = 4096 - SIDpulseWidth; +#if defined(DIRECT_FIXPOINT) + if (((waveStep.w[HI] + pulseIndex) >= 0x1000) && ((waveStep.w[HI] + newPulseIndex) >= 0x1000)) { - pVoice->pulseIndex = pVoice->newPulseIndex; + pulseIndex = newPulseIndex; } - else if ( ((pVoice->waveStep.w[HI] + pVoice->pulseIndex) < 0x1000) - && ((pVoice->waveStep.w[HI] + pVoice->newPulseIndex) < 0x1000) ) + else if (((waveStep.w[HI] + pulseIndex) < 0x1000) && ((waveStep.w[HI] + newPulseIndex) < 0x1000)) { - pVoice->pulseIndex = pVoice->newPulseIndex; + pulseIndex = newPulseIndex; } #else - if ( ((pVoice->waveStep + pVoice->pulseIndex) >= 0x1000) - && ((pVoice->waveStep + pVoice->newPulseIndex) >= 0x1000) ) + if (((waveStep + pulseIndex) >= 0x1000) && ((waveStep + newPulseIndex) >= 0x1000)) { - pVoice->pulseIndex = pVoice->newPulseIndex; + pulseIndex = newPulseIndex; } - else if ( ((pVoice->waveStep + pVoice->pulseIndex) < 0x1000) - && ((pVoice->waveStep + pVoice->newPulseIndex) < 0x1000) ) + else if (((waveStep + pulseIndex) < 0x1000) && ((waveStep + newPulseIndex) < 0x1000)) { - pVoice->pulseIndex = pVoice->newPulseIndex; + pulseIndex = newPulseIndex; } #endif + uint8_t const oldWave = SIDctrl; + uint8_t const newWave = reg[4] | (reg[5] << 8); // FIXME: what's actually supposed to happen here? + uint8_t enveTemp = ADSRctrl; + SIDctrl = newWave; - oldWave = pVoice->SIDctrl; - enveTemp = pVoice->ADSRctrl; - pVoice->SIDctrl = (newWave = pVoice->reg[4]|(pVoice->reg[5]<<8)); - - if (( newWave & 1 ) ==0 ) + if (!(newWave & 1)) { - if (( oldWave & 1 ) !=0 ) + if (oldWave & 1) enveTemp = ENVE_STARTRELEASE; -/* else if ( pVoice->gateOnCtrl ) */ -/* { */ -/* enveTemp = ENVE_STARTSHORTATTACK; */ -/* } */ +#if 0 + else if (gateOnCtrl) + enveTemp = ENVE_STARTSHORTATTACK; +#endif } - else if ( /*pVoice->gateOffCtrl || */((oldWave&1)==0) ) + else if (/*gateOffCtrl || */!(oldWave & 1)) { enveTemp = ENVE_STARTATTACK; } - if ((( oldWave ^ newWave ) & 0xF0 ) != 0 ) - { - pVoice->cycleLenCount = 0; - } + if ((oldWave ^ newWave) & 0xF0) + cycleLenCount = 0; - ADtemp = pVoice->reg[5]; - SRtemp = pVoice->reg[6]; - if ( pVoice->SIDAD != ADtemp ) - { + uint8_t const ADtemp = reg[5]; + uint8_t const SRtemp = reg[6]; + if (SIDAD != ADtemp) enveTemp |= ENVE_ALTER; - } - else if ( pVoice->SIDSR != SRtemp ) - { + else if (SIDSR != SRtemp) enveTemp |= ENVE_ALTER; - } - pVoice->SIDAD = ADtemp; - pVoice->SIDSR = SRtemp; - tmpSusVol = masterVolumeLevels[SRtemp >> 4]; - if (pVoice->ADSRctrl != ENVE_SUSTAIN) /* !!! */ - { - pVoice->enveSusVol = tmpSusVol; - } + + SIDAD = ADtemp; + SIDSR = SRtemp; + uint8_t const tmpSusVol = masterVolumeLevels[SRtemp >> 4]; + if (ADSRctrl != ENVE_SUSTAIN) // !!! + enveSusVol = tmpSusVol; + else if (enveSusVol > enveVol) + enveSusVol = 0; else - { - if ( pVoice->enveSusVol > pVoice->enveVol ) - pVoice->enveSusVol = 0; - else - pVoice->enveSusVol = tmpSusVol; - } + enveSusVol = tmpSusVol; - pVoice->ADSRproc = enveModeTable[enveTemp>>1]; /* shifting out the KEY-bit */ - pVoice->ADSRctrl = enveTemp & (255-ENVE_ALTER-1); + ADSRproc = enveModeTable[enveTemp >> 1]; // shifting out the KEY-bit + ADSRctrl = enveTemp & (255 - ENVE_ALTER - 1); - pVoice->filtEnabled = pVoice->sid->filter.Enabled && - ((pVoice->sid->reg[0x17] & pVoice->filtVoiceMask)!=0); + filtEnabled = sid->filter.Enabled && (sid->reg[0x17] & filtVoiceMask); } -/* -------------------------------------------------- Operator frame set-up 2 */ -/* MOS-8580, MOS-6581 (no 70) */ -static ptr2sidVoidFunc sidModeNormalTable[16] = -{ - sidMode00, sidMode10, sidMode20, sidMode30, sidMode40, sidMode50, sidMode60, sidMode70, - sidMode80, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock -}; - -/* MOS-8580, MOS-6581 (no 74) */ -static ptr2sidVoidFunc sidModeRingTable[16] = -{ - sidMode00, sidMode14, sidMode00, sidMode34, sidMode00, sidMode54, sidMode00, sidMode74, - sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock, sidModeLock -}; +/* -------------------------------------------------- Operator frame set-up 2 */ -void sidClearOperator( sidOperator* pVoice ) +void sidOperator::set2() { - pVoice->SIDfreq = 0; - pVoice->SIDctrl = 0; - pVoice->SIDAD = 0; - pVoice->SIDSR = 0; - - pVoice->sync = false; - - pVoice->pulseIndex = (pVoice->newPulseIndex = (pVoice->SIDpulseWidth = 0)); - pVoice->curSIDfreq = (pVoice->curNoiseFreq = 0); - - pVoice->output = (pVoice->noiseOutput = 0); - pVoice->filtIO = 0; + outProc = &sidOperator::wave_calc_normal; + sync = false; - pVoice->filtEnabled = false; - pVoice->filtLow = (pVoice->filtRef = 0); - - pVoice->cycleLenCount = 0; + if ((SIDfreq < 16) || (SIDctrl & 8)) + //if (/*(SIDfreq < 16) || */(SIDctrl & 8)) + { + outProc = waveCalcMute; + if (SIDfreq == 0) + { #if defined(DIRECT_FIXPOINT) - pVoice->cycleLen.l = (pVoice->cycleAddLen.l = 0); + cycleLen.l = cycleAddLen.l = 0; + waveStep.l = 0; #else - pVoice->cycleLen = (pVoice->cycleLenPnt = 0); - pVoice->cycleAddLenPnt = 0; + cycleLen = cycleLenPnt = 0; + cycleAddLenPnt = 0; + waveStep = 0; + waveStepPnt = 0; #endif - - pVoice->outProc = waveCalcMute; - + curSIDfreq = curNoiseFreq = 0; + noiseStepAdd = 0; + cycleLenCount = 0; + } + if (SIDctrl & 8) + { + if (noiseIsLocked) + { + noiseIsLocked = false; #if defined(DIRECT_FIXPOINT) - pVoice->waveStepAdd.l = (pVoice->waveStep.l = 0); - pVoice->wavePre[0].len = (pVoice->wavePre[0].stp = 0); - pVoice->wavePre[1].len = (pVoice->wavePre[1].stp = 0); + noiseReg.l = noiseSeed; #else - pVoice->waveStepAdd = (pVoice->waveStepAddPnt = 0); - pVoice->waveStep = (pVoice->waveStepPnt = 0); - pVoice->wavePre[0].len = 0; - pVoice->wavePre[0].stp = (pVoice->wavePre[0].pnt = 0); - pVoice->wavePre[1].len = 0; - pVoice->wavePre[1].stp = (pVoice->wavePre[1].pnt = 0); + noiseReg = noiseSeed; #endif - pVoice->waveStepOld = 0; - + } + } + } + else + { + if (curSIDfreq != SIDfreq) + { + curSIDfreq = SIDfreq; + // We keep the value cycleLen between 1 <= x <= 65535. + // This makes a range-check in wave_calc_cycle_len() unrequired. #if defined(DIRECT_FIXPOINT) - pVoice->noiseReg.l = noiseSeed; + cycleLen.l = ((sid->PCMsid << 12) / SIDfreq) << 4; + if (cycleLenCount > 0) + { + wave_calc_cycle_len(); + outProc = &waveCalcRangeCheck; + } #else - pVoice->noiseReg = noiseSeed; + cycleLen = sid->PCMsid / SIDfreq; + cycleLenPnt = ((sid->PCMsid % SIDfreq) * 65536UL) / SIDfreq; + if (cycleLenCount > 0) + { + wave_calc_cycle_len(); + outProc = &waveCalcRangeCheck; + } #endif - pVoice->noiseStepAdd = (pVoice->noiseStep = 0); - pVoice->noiseIsLocked = false; + } + + if ((SIDctrl & 0x80) && (curNoiseFreq != SIDfreq)) + { + curNoiseFreq = SIDfreq; + noiseStepAdd = (sid->PCMsidNoise * SIDfreq) >> 8; + if (noiseStepAdd >= (1L << 21)) + sidModeNormalTable[8] = sidMode80hp; + else + sidModeNormalTable[8] = sidMode80; + } + + if (SIDctrl & 2) + { + if (!modulator->SIDfreq || (modulator->SIDctrl & 8 )) + { + } + else if ((carrier->SIDctrl & 2) && (modulator->SIDfreq >= (SIDfreq << 1))) + { + } + else + { + sync = true; + } + } + + if (((SIDctrl & 0x14 ) == 0x14) && modulator->SIDfreq) + waveProc = sidModeRingTable[SIDctrl >> 4]; + else + waveProc = sidModeNormalTable[SIDctrl >> 4]; + } } -void sidEmuSet2(sidOperator* pVoice) -{ - pVoice->outProc = &sidWaveCalcNormal; - pVoice->sync = false; - if ( (pVoice->SIDfreq < 16) || ((pVoice->SIDctrl & 8) != 0) ) -// if ( /*(pVoice->SIDfreq < 16) || */((pVoice->SIDctrl & 8) != 0) ) - { - pVoice->outProc = waveCalcMute; - if (pVoice->SIDfreq == 0) +int8_t sidOperator::wave_calc_normal(sidOperator* pVoice) +{ + if (pVoice->cycleLenCount <= 0) { + pVoice->wave_calc_cycle_len(); + if (pVoice->SIDctrl & 0x40) + { + pVoice->pulseIndex = pVoice->newPulseIndex; + if (pVoice->pulseIndex > 2048) + { #if defined(DIRECT_FIXPOINT) - pVoice->cycleLen.l = (pVoice->cycleAddLen.l = 0); - pVoice->waveStep.l = 0; + pVoice->waveStep.w[HI] = 0; #else - pVoice->cycleLen = (pVoice->cycleLenPnt = 0); - pVoice->cycleAddLenPnt = 0; - pVoice->waveStep = 0; - pVoice->waveStepPnt = 0; + pVoice->waveStep = 0; #endif - pVoice->curSIDfreq = (pVoice->curNoiseFreq = 0); - pVoice->noiseStepAdd = 0; - pVoice->cycleLenCount = 0; + } + } } - if ((pVoice->SIDctrl & 8) != 0) + + (*pVoice->waveProc)(pVoice); + pVoice->filtIO = ampMod1x8[(*pVoice->ADSRproc)(pVoice) | pVoice->output]; + //pVoice->filtIO = pVoice->sid->masterVolume; // test for digi sound + waveCalcFilter(pVoice); + return pVoice->filtIO;//&pVoice->outputMask; +} + + +inline void sidOperator::wave_calc_cycle_len() +{ +#if defined(DIRECT_FIXPOINT) + cycleAddLen.w[HI] = 0; + cycleAddLen.l += cycleLen.l; + cycleLenCount = cycleAddLen.w[HI]; +#else + cycleAddLenPnt += cycleLenPnt; + cycleLenCount = cycleLen; + if (cycleAddLenPnt > 65535) + cycleLenCount++; + cycleAddLenPnt &= 0xFFFF; +#endif + // If we keep the value cycleLen between 1 <= x <= 65535, the following check is not required. +#if 0 + if (!cycleLenCount) { - if (pVoice->noiseIsLocked) - { - pVoice->noiseIsLocked = false; #if defined(DIRECT_FIXPOINT) - pVoice->noiseReg.l = noiseSeed; + waveStep.l = 0; #else - pVoice->noiseReg = noiseSeed; + waveStep = waveStepPnt = 0; #endif - } - } + cycleLenCount = 0; } else +#endif { - if ( pVoice->curSIDfreq != pVoice->SIDfreq ) - { - pVoice->curSIDfreq = pVoice->SIDfreq; - /* We keep the value cycleLen between 1 <= x <= 65535. */ - /* This makes a range-check in waveCalcCycleLen() unrequired. */ #if defined(DIRECT_FIXPOINT) - pVoice->cycleLen.l = ((pVoice->sid->PCMsid << 12) / pVoice->SIDfreq) << 4; - if (pVoice->cycleLenCount > 0) - { - waveCalcCycleLen(pVoice); - pVoice->outProc = &waveCalcRangeCheck; - } + uint16_t diff = cycleLenCount - cycleLen.w[HI]; #else - pVoice->cycleLen = pVoice->sid->PCMsid / pVoice->SIDfreq; - pVoice->cycleLenPnt = (( pVoice->sid->PCMsid % pVoice->SIDfreq ) * 65536UL ) / pVoice->SIDfreq; - if (pVoice->cycleLenCount > 0) - { - waveCalcCycleLen(pVoice); - pVoice->outProc = &waveCalcRangeCheck; - } + uint16_t diff = cycleLenCount - cycleLen; #endif - } - - if ((( pVoice->SIDctrl & 0x80 ) == 0x80 ) && ( pVoice->curNoiseFreq != pVoice->SIDfreq )) - { - pVoice->curNoiseFreq = pVoice->SIDfreq; - pVoice->noiseStepAdd = (pVoice->sid->PCMsidNoise * pVoice->SIDfreq) >> 8; - if (pVoice->noiseStepAdd >= (1L<<21)) - sidModeNormalTable[8] = sidMode80hp; - else - sidModeNormalTable[8] = sidMode80; - } - - if (( pVoice->SIDctrl & 2 ) != 0 ) - { - if ( ( pVoice->modulator->SIDfreq == 0 ) || (( pVoice->modulator->SIDctrl & 8 ) != 0 ) ) + if (wavePre[diff].len != cycleLenCount) { - ; - } - else if ( (( pVoice->carrier->SIDctrl & 2 ) != 0 ) && - ( pVoice->modulator->SIDfreq >= ( pVoice->SIDfreq << 1 )) ) - { - ; + wavePre[diff].len = cycleLenCount; +#if defined(DIRECT_FIXPOINT) + wavePre[diff].stp = waveStepAdd.l = (4096UL*65536UL) / cycleLenCount; +#else + wavePre[diff].stp = waveStepAdd = 4096UL / cycleLenCount; + wavePre[diff].pnt = waveStepAddPnt = ((4096UL % cycleLenCount) * 65536UL) / cycleLenCount; +#endif } else { - pVoice->sync = true; +#if defined(DIRECT_FIXPOINT) + waveStepAdd.l = wavePre[diff].stp; +#else + waveStepAdd = wavePre[diff].stp; + waveStepAddPnt = wavePre[diff].pnt; +#endif } - } - - if ((( pVoice->SIDctrl & 0x14 ) == 0x14 ) && ( pVoice->modulator->SIDfreq != 0 )) - pVoice->waveProc = sidModeRingTable[pVoice->SIDctrl >> 4]; - else - pVoice->waveProc = sidModeNormalTable[pVoice->SIDctrl >> 4]; - } + } // see above (opening bracket) } + void sidInitWaveformTables(int type) { int i,j; diff --git a/src/devices/sound/sidvoice.h b/src/devices/sound/sidvoice.h index cf32eb7f066..c2cb00a5225 100644 --- a/src/devices/sound/sidvoice.h +++ b/src/devices/sound/sidvoice.h @@ -1,32 +1,30 @@ // license:BSD-3-Clause // copyright-holders:Peter Trauner -#pragma once +#ifndef MAME_SOUND_SIDVOICE_H +#define MAME_SOUND_SIDVOICE_H -#ifndef __SIDVOICE_H__ -#define __SIDVOICE_H__ +#pragma once /* approximation of the sid6581 chip this part is for 1 (of the 3) voices of a chip */ -#include "sound/mos6581.h" +struct SID6581_t; -struct sw_storage +struct sidOperator { - uint16_t len; + struct sw_storage + { + uint16_t len; #if defined(DIRECT_FIXPOINT) - uint32_t stp; + uint32_t stp; #else - uint32_t pnt; - int16_t stp; + uint32_t pnt; + int16_t stp; #endif -}; - -struct SID6581_t; + }; -struct sidOperator -{ SID6581_t *sid; uint8_t reg[7]; uint32_t SIDfreq; @@ -57,8 +55,8 @@ struct sidOperator uint16_t cycleLen, cycleLenPnt; #endif - int8_t(*outProc)(sidOperator *); - void(*waveProc)(sidOperator *); + int8_t (*outProc)(sidOperator *); + void (*waveProc)(sidOperator *); #if defined(DIRECT_FIXPOINT) cpuLword waveStep, waveStepAdd; @@ -67,7 +65,7 @@ struct sidOperator uint32_t waveStepPnt, waveStepAddPnt; #endif uint16_t waveStepOld; - struct sw_storage wavePre[2]; + sw_storage wavePre[2]; #if defined(DIRECT_FIXPOINT) && defined(LARGE_NOISE_TABLE) cpuLword noiseReg; @@ -95,18 +93,21 @@ struct sidOperator #endif uint8_t enveVol, enveSusVol; uint16_t enveShortAttackCount; + + void clear(); + + void set(); + void set2(); + static int8_t wave_calc_normal(sidOperator *pVoice); + +private: + void wave_calc_cycle_len(); }; typedef int8_t (*ptr2sidFunc)(sidOperator *); typedef uint16_t (*ptr2sidUwordFunc)(sidOperator *); typedef void (*ptr2sidVoidFunc)(sidOperator *); -void sidClearOperator( sidOperator* pVoice ); - -void sidEmuSet(sidOperator* pVoice); -void sidEmuSet2(sidOperator* pVoice); -int8_t sidWaveCalcNormal(sidOperator* pVoice); - void sidInitWaveformTables(int type); void sidInitMixerEngine(running_machine &machine); @@ -117,4 +118,4 @@ extern ptr2sidVoidFunc sid8580ModeNormalTable[16]; extern ptr2sidVoidFunc sid8580ModeRingTable[16]; #endif -#endif /* __SIDVOICE_H__ */ +#endif // MAME_SOUND_SIDVOICE_H diff --git a/src/devices/sound/sidw6581.h b/src/devices/sound/sidw6581.h index 2f9a79d2fcf..16c6a4a630f 100644 --- a/src/devices/sound/sidw6581.h +++ b/src/devices/sound/sidw6581.h @@ -1,7 +1,9 @@ // license:GPL-2.0+ // copyright-holders:Dag Lem -#ifndef WAVE6581_h -#define WAVE6581_h +#ifndef MAME_SOUND_SIDW6581_H +#define MAME_SOUND_SIDW6581_H + +#pragma once /* * MOS-6581 R1, R3, R4 @@ -1050,4 +1052,4 @@ static const uint8_t waveform70_6581[4096+4096] = 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,0x30, 0x0, 0x0, 0x0,0x78,0x78,0x7e,0x7f,0x7f }; -#endif // WAVE6581_h +#endif // MAME_SOUND_SIDW6581_H diff --git a/src/devices/sound/sidw8580.h b/src/devices/sound/sidw8580.h index cb5b4a1c6ab..13159b51c5a 100644 --- a/src/devices/sound/sidw8580.h +++ b/src/devices/sound/sidw8580.h @@ -1,9 +1,9 @@ // license:GPL-2.0+ // copyright-holders:Dag Lem -#pragma once +#ifndef MAME_SOUND_SIDW8580_H +#define MAME_SOUND_SIDW8580_H -#ifndef __SIDW8580_H__ -#define __SIDW8580_H__ +#pragma once /* MOS-8580 R5 waveforms $30,$50,$60,$70 @@ -1395,5 +1395,4 @@ static const uint8_t waveform70_8580[4096+4096] = 0xff,0xff,0xff,0xff }; - -#endif /* __SIDW8580_H__ */ +#endif // MAME_SOUND_SIDW8580_H diff --git a/src/devices/sound/sn76477.cpp b/src/devices/sound/sn76477.cpp index c7c1e0596b2..c259b3cb0ed 100644 --- a/src/devices/sound/sn76477.cpp +++ b/src/devices/sound/sn76477.cpp @@ -38,9 +38,10 @@ *****************************************************************************/ #include "emu.h" -#include "wavwrite.h" #include "sn76477.h" +#include "wavwrite.h" + /***************************************************************************** * @@ -74,12 +75,12 @@ #define LOG_WAV_FILE_NAME "sn76477_%s.wav" -#define LOG(n,x) do { if (VERBOSE >= (n)) logerror x; } while (0) +#define LOG(n,...) do { if (VERBOSE >= (n)) logerror(__VA_ARGS__); } while (0) #define CHECK_BOOLEAN assert((state & 0x01) == state) #define CHECK_POSITIVE assert(data >= 0.0) #define CHECK_VOLTAGE assert((data >= 0.0) && (data <= 5.0)) -#define CHECK_CAP_VOLTAGE assert(((data >= 0.0) && (data <= 5.0)) || (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)) +#define CHECK_CAP_VOLTAGE assert(((data >= 0.0) && (data <= 5.0)) || (data == EXTERNAL_VOLTAGE_DISCONNECT)) /***************************************************************************** * @@ -121,7 +122,7 @@ #define OUT_LOW_CLIP_THRESHOLD (0.715) /* the minimum voltage that can be put out (measured) */ /* gain factors for OUT voltage in 0.1V increments (measured) */ -static const double out_pos_gain[] = +static constexpr double out_pos_gain[] = { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.01, /* 0.0 - 0.9V */ 0.03, 0.11, 0.15, 0.19, 0.21, 0.23, 0.26, 0.29, 0.31, 0.33, /* 1.0 - 1.9V */ @@ -130,9 +131,9 @@ static const double out_pos_gain[] = 0.90, 0.93, 0.96, 0.98, 1.00 /* 4.0 - 4.4V */ }; -static const double out_neg_gain[] = +static constexpr double out_neg_gain[] = { - 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, -0.01, /* 0.0 - 0.9V */ + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, -0.01, /* 0.0 - 0.9V */ -0.02, -0.09, -0.13, -0.15, -0.17, -0.19, -0.22, -0.24, -0.26, -0.28, /* 1.0 - 1.9V */ -0.30, -0.32, -0.34, -0.37, -0.39, -0.41, -0.44, -0.46, -0.48, -0.51, /* 2.0 - 2.9V */ -0.53, -0.56, -0.58, -0.60, -0.62, -0.65, -0.67, -0.69, -0.72, -0.74, /* 3.0 - 3.9V */ @@ -140,10 +141,10 @@ static const double out_neg_gain[] = }; -const device_type SN76477 = device_creator; +DEFINE_DEVICE_TYPE(SN76477, sn76477_device, "sn76477", "TI SN76477 CSG") sn76477_device::sn76477_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SN76477, "SN76477", tag, owner, clock, "sn76477", __FILE__), + : device_t(mconfig, SN76477, tag, owner, clock), device_sound_interface(mconfig, *this), m_enable(0), m_envelope_mode(0), @@ -626,7 +627,7 @@ void sn76477_device::log_enable_line() "Enabled", "Inhibited" }; - LOG(1, ("SN76477 '%s': Enable line (9): %d [%s]\n", tag(), m_enable, desc[m_enable])); + LOG(1, "SN76477: Enable line (9): %d [%s]\n", m_enable, desc[m_enable]); } @@ -638,7 +639,7 @@ void sn76477_device::log_mixer_mode() "SLF/Noise", "SLF/VCO/Noise", "SLF/VCO", "Inhibit" }; - LOG(1, ("SN76477 '%s': Mixer mode (25-27): %d [%s]\n", tag(), m_mixer_mode, desc[m_mixer_mode])); + LOG(1, "SN76477: Mixer mode (25-27): %d [%s]\n", m_mixer_mode, desc[m_mixer_mode]); } @@ -649,7 +650,7 @@ void sn76477_device::log_envelope_mode() "VCO", "One-Shot", "Mixer Only", "VCO with Alternating Polarity" }; - LOG(1, ("SN76477 '%s': Envelope mode (1,28): %d [%s]\n", tag(), m_envelope_mode, desc[m_envelope_mode])); + LOG(1, "SN76477: Envelope mode (1,28): %d [%s]\n", m_envelope_mode, desc[m_envelope_mode]); } @@ -660,7 +661,7 @@ void sn76477_device::log_vco_mode() "External (Pin 16)", "Internal (SLF)" }; - LOG(1, ("SN76477 '%s': VCO mode (22): %d [%s]\n", tag(), m_vco_mode, desc[m_vco_mode])); + LOG(1, "SN76477: VCO mode (22): %d [%s]\n", m_vco_mode, desc[m_vco_mode]); } @@ -670,16 +671,16 @@ void sn76477_device::log_one_shot_time() { if (compute_one_shot_cap_charging_rate() > 0) { - LOG(1, ("SN76477 '%s': One-shot time (23,24): %.4f sec\n", tag(), ONE_SHOT_CAP_VOLTAGE_RANGE * (1 / compute_one_shot_cap_charging_rate()))); + LOG(1, "SN76477: One-shot time (23,24): %.4f sec\n", ONE_SHOT_CAP_VOLTAGE_RANGE * (1 / compute_one_shot_cap_charging_rate())); } else { - LOG(1, ("SN76477 '%s': One-shot time (23,24): N/A\n", tag())); + LOG(1, "SN76477: One-shot time (23,24): N/A\n"); } } else { - LOG(1, ("SN76477 '%s': One-shot time (23,24): External (cap = %.2fV)\n", tag(), m_one_shot_cap_voltage)); + LOG(1, "SN76477: One-shot time (23,24): External (cap = %.2fV)\n", m_one_shot_cap_voltage); } } @@ -693,29 +694,29 @@ void sn76477_device::log_slf_freq() double charging_time = (1 / compute_slf_cap_charging_rate()) * SLF_CAP_VOLTAGE_RANGE; double discharging_time = (1 / compute_slf_cap_discharging_rate()) * SLF_CAP_VOLTAGE_RANGE; - LOG(1, ("SN76477 '%s': SLF frequency (20,21): %.2f Hz\n", tag(), 1 / (charging_time + discharging_time))); + LOG(1, "SN76477: SLF frequency (20,21): %.2f Hz\n", 1 / (charging_time + discharging_time)); } else { - LOG(1, ("SN76477 '%s': SLF frequency (20,21): N/A\n", tag())); + LOG(1, "SN76477: SLF frequency (20,21): N/A\n"); } } else { - LOG(1, ("SN76477 '%s': SLF frequency (20,21): External (cap = %.2fV)\n", tag(), m_slf_cap_voltage)); + LOG(1, "SN76477: SLF frequency (20,21): External (cap = %.2fV)\n", m_slf_cap_voltage); } } void sn76477_device::log_vco_pitch_voltage() { - LOG(1, ("SN76477 '%s': VCO pitch voltage (19): %.2fV\n", tag(), m_pitch_voltage)); + LOG(1, "SN76477: VCO pitch voltage (19): %.2fV\n", m_pitch_voltage); } void sn76477_device::log_vco_duty_cycle() { - LOG(1, ("SN76477 '%s': VCO duty cycle (16,19): %.0f%%\n", tag(), compute_vco_duty_cycle() * 100.0)); + LOG(1, "SN76477: VCO duty cycle (16,19): %.0f%%\n", compute_vco_duty_cycle() * 100.0); } @@ -728,16 +729,16 @@ void sn76477_device::log_vco_freq() double min_freq = compute_vco_cap_charging_discharging_rate() / (2 * VCO_CAP_VOLTAGE_RANGE); double max_freq = compute_vco_cap_charging_discharging_rate() / (2 * VCO_TO_SLF_VOLTAGE_DIFF); - LOG(1, ("SN76477 '%s': VCO frequency (17,18): %.2f Hz - %.1f Hz\n", tag(), min_freq, max_freq)); + LOG(1, "SN76477: VCO frequency (17,18): %.2f Hz - %.1f Hz\n", min_freq, max_freq); } else { - LOG(1, ("SN76477 '%s': VCO frequency (17,18): N/A\n", tag())); + LOG(1, "SN76477: VCO frequency (17,18): N/A\n"); } } else { - LOG(1, ("SN76477 '%s': VCO frequency (17,18): External (cap = %.2fV)\n", tag(), m_vco_cap_voltage)); + LOG(1, "SN76477: VCO frequency (17,18): External (cap = %.2fV)\n", m_vco_cap_voltage); } } @@ -749,13 +750,13 @@ void sn76477_device::log_vco_ext_voltage() double min_freq = compute_vco_cap_charging_discharging_rate() / (2 * VCO_CAP_VOLTAGE_RANGE); double max_freq = compute_vco_cap_charging_discharging_rate() / (2 * VCO_TO_SLF_VOLTAGE_DIFF); - LOG(1, ("SN76477 '%s': VCO ext. voltage (16): %.2fV (%.2f Hz)\n", tag(), + LOG(1, "SN76477: VCO ext. voltage (16): %.2fV (%.2f Hz)\n", m_vco_voltage, - min_freq + ((max_freq - min_freq) * m_vco_voltage / VCO_MAX_EXT_VOLTAGE))); + min_freq + ((max_freq - min_freq) * m_vco_voltage / VCO_MAX_EXT_VOLTAGE)); } else { - LOG(1, ("SN76477 '%s': VCO ext. voltage (16): %.2fV (saturated, no output)\n", tag(), m_vco_voltage)); + LOG(1, "SN76477: VCO ext. voltage (16): %.2fV (saturated, no output)\n", m_vco_voltage); } } @@ -764,17 +765,17 @@ void sn76477_device::log_noise_gen_freq() { if (m_noise_clock_ext) { - LOG(1, ("SN76477 '%s': Noise gen frequency (4): External\n", tag())); + LOG(1, "SN76477: Noise gen frequency (4): External\n"); } else { if (compute_noise_gen_freq() > 0) { - LOG(1, ("SN76477 '%s': Noise gen frequency (4): %d Hz\n", tag(), compute_noise_gen_freq())); + LOG(1, "SN76477: Noise gen frequency (4): %d Hz\n", compute_noise_gen_freq()); } else { - LOG(1, ("SN76477 '%s': Noise gen frequency (4): N/A\n", tag())); + LOG(1, "SN76477: Noise gen frequency (4): N/A\n"); } } } @@ -793,21 +794,21 @@ void sn76477_device::log_noise_filter_freq() double charging_time = (1 / charging_rate) * NOISE_CAP_VOLTAGE_RANGE; double discharging_time = (1 / charging_rate) * NOISE_CAP_VOLTAGE_RANGE; - LOG(1, ("SN76477 '%s': Noise filter frequency (5,6): %.0f Hz\n", tag(), 1 / (charging_time + discharging_time))); + LOG(1, "SN76477: Noise filter frequency (5,6): %.0f Hz\n", 1 / (charging_time + discharging_time)); } else { - LOG(1, ("SN76477 '%s': Noise filter frequency (5,6): Very Large (Filtering Disabled)\n", tag())); + LOG(1, "SN76477: Noise filter frequency (5,6): Very Large (Filtering Disabled)\n"); } } else { - LOG(1, ("SN76477 '%s': Noise filter frequency (5,6): N/A\n", tag())); + LOG(1, "SN76477: Noise filter frequency (5,6): N/A\n"); } } else { - LOG(1, ("SN76477 '%s': Noise filter frequency (5,6): External (cap = %.2fV)\n", tag(), m_noise_filter_cap)); + LOG(1, "SN76477: Noise filter frequency (5,6): External (cap = %.2fV)\n", m_noise_filter_cap); } } @@ -818,16 +819,16 @@ void sn76477_device::log_attack_time() { if (compute_attack_decay_cap_charging_rate() > 0) { - LOG(1, ("SN76477 '%s': Attack time (8,10): %.4f sec\n", tag(), AD_CAP_VOLTAGE_RANGE * (1 / compute_attack_decay_cap_charging_rate()))); + LOG(1, "SN76477: Attack time (8,10): %.4f sec\n", AD_CAP_VOLTAGE_RANGE * (1 / compute_attack_decay_cap_charging_rate())); } else { - LOG(1, ("SN76477 '%s': Attack time (8,10): N/A\n", tag())); + LOG(1, "SN76477: Attack time (8,10): N/A\n"); } } else { - LOG(1, ("SN76477 '%s': Attack time (8,10): External (cap = %.2fV)\n", tag(), m_attack_decay_cap_voltage)); + LOG(1, "SN76477: Attack time (8,10): External (cap = %.2fV)\n", m_attack_decay_cap_voltage); } } @@ -838,27 +839,26 @@ void sn76477_device::log_decay_time() { if (compute_attack_decay_cap_discharging_rate() > 0) { - LOG(1, ("SN76477 '%s': Decay time (7,8): %.4f sec\n", tag(), AD_CAP_VOLTAGE_RANGE * (1 / compute_attack_decay_cap_discharging_rate()))); + LOG(1, "SN76477: Decay time (7,8): %.4f sec\n", AD_CAP_VOLTAGE_RANGE * (1 / compute_attack_decay_cap_discharging_rate())); } else { - LOG(1, ("SN76477 '%s': Decay time (8,10): N/A\n", tag())); + LOG(1, "SN76477: Decay time (8,10): N/A\n"); } } else { - LOG(1, ("SN76477 '%s': Decay time (7, 8): External (cap = %.2fV)\n", tag(), m_attack_decay_cap_voltage)); + LOG(1, "SN76477: Decay time (7, 8): External (cap = %.2fV)\n", m_attack_decay_cap_voltage); } } void sn76477_device::log_voltage_out() { - LOG(1, ("SN76477 '%s': Voltage OUT range (11,12): %.2fV - %.2fV (clips above %.2fV)\n", - tag(), + LOG(1, "SN76477: Voltage OUT range (11,12): %.2fV - %.2fV (clips above %.2fV)\n", OUT_CENTER_LEVEL_VOLTAGE + compute_center_to_peak_voltage_out() * out_neg_gain[(int)(AD_CAP_VOLTAGE_MAX * 10)], OUT_CENTER_LEVEL_VOLTAGE + compute_center_to_peak_voltage_out() * out_pos_gain[(int)(AD_CAP_VOLTAGE_MAX * 10)], - OUT_HIGH_CLIP_THRESHOLD)); + OUT_HIGH_CLIP_THRESHOLD); } @@ -897,7 +897,7 @@ void sn76477_device::open_wav_file() sprintf(wav_file_name, LOG_WAV_FILE_NAME, tag()); m_file = wav_open(wav_file_name, m_our_sample_rate, 2); - LOG(1, ("SN76477 '%s': Logging output: %s\n", tag(), wav_file_name)); + LOG(1, "SN76477: Logging output: %s\n", wav_file_name); } @@ -1085,7 +1085,8 @@ WRITE_LINE_MEMBER( sn76477_device::vco_w ) void sn76477_device::one_shot_res_w(double data) { - CHECK_POSITIVE; + if (data != RES_INF) + CHECK_POSITIVE; if (data != m_one_shot_res) { @@ -1127,7 +1128,7 @@ void sn76477_device::one_shot_cap_voltage_w(double data) { CHECK_CAP_VOLTAGE; - if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) + if (data == EXTERNAL_VOLTAGE_DISCONNECT) { /* switch to internal, if not already */ if (m_one_shot_cap_voltage_ext) @@ -1162,7 +1163,8 @@ void sn76477_device::one_shot_cap_voltage_w(double data) void sn76477_device::slf_res_w(double data) { - CHECK_POSITIVE; + if (data != RES_INF) + CHECK_POSITIVE; if (data != m_slf_res) { @@ -1206,7 +1208,7 @@ void sn76477_device::slf_cap_voltage_w(double data) { CHECK_CAP_VOLTAGE; - if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) + if (data == EXTERNAL_VOLTAGE_DISCONNECT) { /* switch to internal, if not already */ if (m_slf_cap_voltage_ext) @@ -1241,7 +1243,8 @@ void sn76477_device::slf_cap_voltage_w(double data) void sn76477_device::vco_res_w(double data) { - CHECK_POSITIVE; + if (data != RES_INF) + CHECK_POSITIVE; if (data != m_vco_res) { @@ -1283,7 +1286,7 @@ void sn76477_device::vco_cap_voltage_w(double data) { CHECK_CAP_VOLTAGE; - if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) + if (data == EXTERNAL_VOLTAGE_DISCONNECT) { /* switch to internal, if not already */ if (m_vco_cap_voltage_ext) @@ -1385,7 +1388,8 @@ WRITE_LINE_MEMBER( sn76477_device::noise_clock_w ) void sn76477_device::noise_clock_res_w(double data) { - CHECK_POSITIVE; + if (data != RES_INF) + CHECK_POSITIVE; if (((data == 0) && !m_noise_clock_ext) || ((data != 0) && (data != m_noise_clock_res))) @@ -1415,7 +1419,8 @@ void sn76477_device::noise_clock_res_w(double data) void sn76477_device::noise_filter_res_w(double data) { - CHECK_POSITIVE; + if (data != RES_INF) + CHECK_POSITIVE; if (data != m_noise_filter_res) { @@ -1457,7 +1462,7 @@ void sn76477_device::noise_filter_cap_voltage_w(double data) { CHECK_CAP_VOLTAGE; - if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) + if (data == EXTERNAL_VOLTAGE_DISCONNECT) { /* switch to internal, if not already */ if (m_noise_filter_cap_voltage_ext) @@ -1492,7 +1497,8 @@ void sn76477_device::noise_filter_cap_voltage_w(double data) void sn76477_device::attack_res_w(double data) { - CHECK_POSITIVE; + if (data != RES_INF) + CHECK_POSITIVE; if (data != m_attack_res) { @@ -1512,7 +1518,8 @@ void sn76477_device::attack_res_w(double data) void sn76477_device::decay_res_w(double data) { - CHECK_POSITIVE; + if (data != RES_INF) + CHECK_POSITIVE; if (data != m_decay_res) { @@ -1555,7 +1562,7 @@ void sn76477_device::attack_decay_cap_voltage_w(double data) { CHECK_CAP_VOLTAGE; - if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) + if (data == EXTERNAL_VOLTAGE_DISCONNECT) { /* switch to internal, if not already */ if (m_attack_decay_cap_voltage_ext) @@ -1592,7 +1599,8 @@ void sn76477_device::attack_decay_cap_voltage_w(double data) void sn76477_device::amplitude_res_w(double data) { - CHECK_POSITIVE; + if (data != RES_INF) + CHECK_POSITIVE; if (data != m_amplitude_res) { @@ -1612,7 +1620,8 @@ void sn76477_device::amplitude_res_w(double data) void sn76477_device::feedback_res_w(double data) { - CHECK_POSITIVE; + if (data != RES_INF) + CHECK_POSITIVE; if (data != m_feedback_res) { diff --git a/src/devices/sound/sn76477.h b/src/devices/sound/sn76477.h index 19b331bacdf..a785fc936d6 100644 --- a/src/devices/sound/sn76477.h +++ b/src/devices/sound/sn76477.h @@ -35,10 +35,10 @@ *****************************************************************************/ -#pragma once +#ifndef MAME_SOUND_SN76477_H +#define MAME_SOUND_SN76477_H -#ifndef __SN76477_H__ -#define __SN76477_H__ +#pragma once #include "machine/rescap.h" @@ -94,7 +94,6 @@ class sn76477_device : public device_t, { public: sn76477_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~sn76477_device() {} static void set_noise_params(device_t &device, double clock_res, double filter_res, double filter_cap) { @@ -171,7 +170,7 @@ public: void feedback_res_w(double data); /* these functions take a capacitor value in Farads or the voltage on it in Volts */ - #define SN76477_EXTERNAL_VOLTAGE_DISCONNECT (-1.0) /* indicates that the voltage is internally computed, + static constexpr double EXTERNAL_VOLTAGE_DISCONNECT = -1.0; /* indicates that the voltage is internally computed, can be used in all the functions that take a voltage on a capacitor */ void one_shot_cap_w(double data); @@ -306,7 +305,6 @@ private: void state_save_register(); }; -extern const device_type SN76477; - +DECLARE_DEVICE_TYPE(SN76477, sn76477_device) -#endif/* __SN76477_H__ */ +#endif // MAME_SOUND_SN76477_H diff --git a/src/devices/sound/sn76496.cpp b/src/devices/sound/sn76496.cpp index c60b587f3a5..bccb53c27bb 100644 --- a/src/devices/sound/sn76496.cpp +++ b/src/devices/sound/sn76496.cpp @@ -130,53 +130,81 @@ #define MAX_OUTPUT 0x7fff -sn76496_base_device::sn76496_base_device(const machine_config &mconfig, device_type type, const char *name, - const char *tag, int feedbackmask, int noisetap1, int noisetap2, bool negate, bool stereo, int clockdivider, int sega, - device_t *owner, uint32_t clock, const char *shortname, const char *source) - - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - device_sound_interface(mconfig, *this), - m_ready_handler(*this), - m_feedback_mask(feedbackmask), - m_whitenoise_tap1(noisetap1), - m_whitenoise_tap2(noisetap2), - m_negate(negate), - m_stereo(stereo), - m_clock_divider(clockdivider), - m_sega_style_psg(sega) +sn76496_base_device::sn76496_base_device( + const machine_config &mconfig, + device_type type, + const char *tag, + int feedbackmask, + int noisetap1, + int noisetap2, + bool negate, + bool stereo, + int clockdivider, + bool sega, + device_t *owner, + uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_ready_handler(*this) + , m_feedback_mask(feedbackmask) + , m_whitenoise_tap1(noisetap1) + , m_whitenoise_tap2(noisetap2) + , m_negate(negate) + , m_stereo(stereo) + , m_clock_divider(clockdivider) + , m_sega_style_psg(sega) { } sn76496_device::sn76496_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, SN76496, "SN76496", tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock, "sn76496", __FILE__) - { } + : sn76496_base_device(mconfig, SN76496, tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock) +{ +} + u8106_device::u8106_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, U8106, "U8106", tag, 0x4000, 0x01, 0x02, true, false, 8, true, owner, clock, "u8106", __FILE__) - { } + : sn76496_base_device(mconfig, U8106, tag, 0x4000, 0x01, 0x02, true, false, 8, true, owner, clock) +{ +} + y2404_device::y2404_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, Y2404, "Y2404", tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock, "y2404", __FILE__) - { } + : sn76496_base_device(mconfig, Y2404, tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock) +{ +} + sn76489_device::sn76489_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, SN76489, "SN76489", tag, 0x4000, 0x01, 0x02, true, false, 8, true, owner, clock, "sn76489", __FILE__) - { } + : sn76496_base_device(mconfig, SN76489, tag, 0x4000, 0x01, 0x02, true, false, 8, true, owner, clock) +{ +} + sn76489a_device::sn76489a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, SN76489A, "SN76489A", tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock, "sn76489a", __FILE__) - { } + : sn76496_base_device(mconfig, SN76489A, tag, 0x10000, 0x04, 0x08, false, false, 8, true, owner, clock) +{ +} + sn76494_device::sn76494_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, SN76494, "SN76494", tag, 0x10000, 0x04, 0x08, false, false, 1, true, owner, clock, "sn76494", __FILE__) - { } + : sn76496_base_device(mconfig, SN76494, tag, 0x10000, 0x04, 0x08, false, false, 1, true, owner, clock) +{ +} + sn94624_device::sn94624_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, SN94624, "SN94624", tag, 0x4000, 0x01, 0x02, true, false, 1, true, owner, clock, "sn94624", __FILE__) - { } + : sn76496_base_device(mconfig, SN94624, tag, 0x4000, 0x01, 0x02, true, false, 1, true, owner, clock) +{ +} + ncr7496_device::ncr7496_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, NCR7496, "NCR7496", tag, 0x8000, 0x02, 0x20, false, false, 8, true, owner, clock, "ncr7496", __FILE__) - { } + : sn76496_base_device(mconfig, NCR7496, tag, 0x8000, 0x02, 0x20, false, false, 8, true, owner, clock) +{ +} + gamegear_device::gamegear_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, GAMEGEAR, "Game Gear PSG", tag, 0x8000, 0x01, 0x08, true, true, 8, false, owner, clock, "gamegear_psg", __FILE__) - { } + : sn76496_base_device(mconfig, GAMEGEAR, tag, 0x8000, 0x01, 0x08, true, true, 8, false, owner, clock) +{ +} + segapsg_device::segapsg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sn76496_base_device(mconfig, SEGAPSG, "SEGA VDP PSG", tag, 0x8000, 0x01, 0x08, true, false, 8, false, owner, clock, "segapsg", __FILE__) - { } + : sn76496_base_device(mconfig, SEGAPSG, tag, 0x8000, 0x01, 0x08, true, false, 8, false, owner, clock) +{ +} void sn76496_base_device::device_start() @@ -434,13 +462,13 @@ void sn76496_base_device::register_for_save_states() // save_item(NAME(m_sega_style_psg)); } -const device_type SN76496 = device_creator; -const device_type U8106 = device_creator; -const device_type Y2404 = device_creator; -const device_type SN76489 = device_creator; -const device_type SN76489A = device_creator; -const device_type SN76494 = device_creator; -const device_type SN94624 = device_creator; -const device_type NCR7496 = device_creator; -const device_type GAMEGEAR = device_creator; -const device_type SEGAPSG = device_creator; +DEFINE_DEVICE_TYPE(SN76496, sn76496_device, "sn76496", "SN76496") +DEFINE_DEVICE_TYPE(U8106, u8106_device, "u8106", "U8106") +DEFINE_DEVICE_TYPE(Y2404, y2404_device, "y2404", "Y2404") +DEFINE_DEVICE_TYPE(SN76489, sn76489_device, "sn76489", "SN76489") +DEFINE_DEVICE_TYPE(SN76489A, sn76489a_device, "sn76489a", "SN76489A") +DEFINE_DEVICE_TYPE(SN76494, sn76494_device, "sn76494", "SN76494") +DEFINE_DEVICE_TYPE(SN94624, sn94624_device, "sn94624", "SN94624") +DEFINE_DEVICE_TYPE(NCR7496, ncr7496_device, "ncr7496", "NCR7496") +DEFINE_DEVICE_TYPE(GAMEGEAR, gamegear_device, "gamegear_psg", "Game Gear PSG") +DEFINE_DEVICE_TYPE(SEGAPSG, segapsg_device, "segapsg", "Sega VDP PSG") diff --git a/src/devices/sound/sn76496.h b/src/devices/sound/sn76496.h index 936df36ea24..22ad524e308 100644 --- a/src/devices/sound/sn76496.h +++ b/src/devices/sound/sn76496.h @@ -1,34 +1,31 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria +#ifndef MAME_SOUND_SN76496_H +#define MAME_SOUND_SN76496_H + #pragma once -#ifndef __SN76496_H__ -#define __SN76496_H__ +DECLARE_DEVICE_TYPE(SN76496, sn76496_device) +DECLARE_DEVICE_TYPE(U8106, u8106_device) +DECLARE_DEVICE_TYPE(Y2404, y2404_device) +DECLARE_DEVICE_TYPE(SN76489, sn76489_device) +DECLARE_DEVICE_TYPE(SN76489A, sn76489a_device) +DECLARE_DEVICE_TYPE(SN76494, sn76494_device) +DECLARE_DEVICE_TYPE(SN94624, sn94624_device) +DECLARE_DEVICE_TYPE(NCR7496, ncr7496_device) +DECLARE_DEVICE_TYPE(GAMEGEAR, gamegear_device) +DECLARE_DEVICE_TYPE(SEGAPSG, segapsg_device) -extern const device_type SN76496; -extern const device_type U8106; -extern const device_type Y2404; -extern const device_type SN76489; -extern const device_type SN76489A; -extern const device_type SN76494; -extern const device_type SN94624; -extern const device_type NCR7496; -extern const device_type GAMEGEAR; -extern const device_type SEGAPSG; -#define MCFG_SN76496_READY_HANDLER(_devcb) \ - devcb = &sn76496_base_device::set_ready_handler(*device, DEVCB_##_devcb); +#define MCFG_SN76496_READY_HANDLER(cb) \ + devcb = &sn76496_base_device::set_ready_handler(*device, (DEVCB_##cb)); class sn76496_base_device : public device_t, public device_sound_interface { public: - sn76496_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, - int feedbackmask, int noisetap1, int noisetap2, bool negate, bool stereo, int clockdivider, int sega, - device_t *owner, uint32_t clock, const char *shortname, const char *source); - // static configuration helpers - template static devcb_base &set_ready_handler(device_t &device, _Object object) { return downcast(device).m_ready_handler.set_callback(object); } + template static devcb_base &set_ready_handler(device_t &device, Object &&cb) { return downcast(device).m_ready_handler.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER( stereo_w ); void write(uint8_t data); @@ -36,6 +33,20 @@ public: DECLARE_READ_LINE_MEMBER( ready_r ) { return m_ready_state ? 1 : 0; } protected: + sn76496_base_device( + const machine_config &mconfig, + device_type type, + const char *tag, + int feedbackmask, + int noisetap1, + int noisetap2, + bool negate, + bool stereo, + int clockdivider, + bool sega, + device_t *owner, + uint32_t clock); + virtual void device_start() override; virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; @@ -141,4 +152,4 @@ public: segapsg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; -#endif /* __SN76496_H__ */ +#endif // MAME_SOUND_SN76496_H diff --git a/src/devices/sound/snkwave.cpp b/src/devices/sound/snkwave.cpp index c7b4ff4ef5a..4a16946199b 100644 --- a/src/devices/sound/snkwave.cpp +++ b/src/devices/sound/snkwave.cpp @@ -12,17 +12,14 @@ #include "snkwave.h" -#define CLOCK_SHIFT 8 - - -const device_type SNKWAVE = device_creator; +DEFINE_DEVICE_TYPE(SNKWAVE, snkwave_device, "snkwave", "SNK Wave") //------------------------------------------------- // snkwave_device - constructor //------------------------------------------------- snkwave_device::snkwave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SNKWAVE, "SNK Wave", tag, owner, clock, "snkwave", __FILE__), + : device_t(mconfig, SNKWAVE, tag, owner, clock), device_sound_interface(mconfig, *this), m_stream(nullptr), m_external_clock(0), @@ -31,7 +28,7 @@ snkwave_device::snkwave_device(const machine_config &mconfig, const char *tag, d m_counter(0), m_waveform_position(0) { - memset(m_waveform, 0, sizeof(m_waveform)); + std::fill(std::begin(m_waveform), std::end(m_waveform), 0); } //------------------------------------------------- @@ -58,7 +55,7 @@ void snkwave_device::device_start() save_item(NAME(m_frequency)); save_item(NAME(m_counter)); save_item(NAME(m_waveform_position)); - save_pointer(NAME(m_waveform), SNKWAVE_WAVEFORM_LENGTH); + save_pointer(NAME(m_waveform), WAVEFORM_LENGTH); } @@ -96,7 +93,7 @@ void snkwave_device::sound_stream_update(sound_stream &stream, stream_sample_t * { out += m_waveform[m_waveform_position] * steps; m_counter = m_frequency; - m_waveform_position = (m_waveform_position + 1) & (SNKWAVE_WAVEFORM_LENGTH-1); + m_waveform_position = (m_waveform_position + 1) & (WAVEFORM_LENGTH-1); loops -= steps; } else @@ -144,10 +141,10 @@ WRITE8_MEMBER( snkwave_device::snkwave_w ) */ void snkwave_device::update_waveform(unsigned int offset, uint8_t data) { - assert(offset < SNKWAVE_WAVEFORM_LENGTH/4); + assert(offset < WAVEFORM_LENGTH/4); m_waveform[offset * 2] = ((data & 0x38) >> 3) << (12-CLOCK_SHIFT); m_waveform[offset * 2 + 1] = ((data & 0x07) >> 0) << (12-CLOCK_SHIFT); - m_waveform[SNKWAVE_WAVEFORM_LENGTH-2 - offset * 2] = ~m_waveform[offset * 2 + 1]; - m_waveform[SNKWAVE_WAVEFORM_LENGTH-1 - offset * 2] = ~m_waveform[offset * 2]; + m_waveform[WAVEFORM_LENGTH-2 - offset * 2] = ~m_waveform[offset * 2 + 1]; + m_waveform[WAVEFORM_LENGTH-1 - offset * 2] = ~m_waveform[offset * 2]; } diff --git a/src/devices/sound/snkwave.h b/src/devices/sound/snkwave.h index f825cbab2b4..b05f483139d 100644 --- a/src/devices/sound/snkwave.h +++ b/src/devices/sound/snkwave.h @@ -1,11 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#pragma once - -#ifndef __SNKWAVE_H__ -#define __SNKWAVE_H__ +#ifndef MAME_SOUND_SNKWAVE_H +#define MAME_SOUND_SNKWAVE_H -#define SNKWAVE_WAVEFORM_LENGTH 16 +#pragma once //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -29,7 +27,8 @@ class snkwave_device : public device_t, { public: snkwave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~snkwave_device() { } + + DECLARE_WRITE8_MEMBER( snkwave_w ); protected: // device-level overrides @@ -38,13 +37,12 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -public: - DECLARE_WRITE8_MEMBER( snkwave_w ); - private: + static constexpr unsigned WAVEFORM_LENGTH = 16; + static constexpr unsigned CLOCK_SHIFT = 8; + void update_waveform(unsigned int offset, uint8_t data); -private: sound_stream *m_stream; int m_external_clock; int m_sample_rate; @@ -55,10 +53,9 @@ private: int m_waveform_position; // decoded waveform table - int16_t m_waveform[SNKWAVE_WAVEFORM_LENGTH]; + int16_t m_waveform[WAVEFORM_LENGTH]; }; -extern const device_type SNKWAVE; - +DECLARE_DEVICE_TYPE(SNKWAVE, snkwave_device) -#endif /* __SNKWAVE_H__ */ +#endif // MAME_SOUND_SNKWAVE_H diff --git a/src/devices/sound/sp0250.cpp b/src/devices/sound/sp0250.cpp index e4dcd28249d..4b2ae39af27 100644 --- a/src/devices/sound/sp0250.cpp +++ b/src/devices/sound/sp0250.cpp @@ -34,10 +34,10 @@ should be 312, but 312 = 39*8 so it doesn't look right because a divider by 39 i */ #define CLOCK_DIVIDER (7*6*8) -const device_type SP0250 = device_creator; +DEFINE_DEVICE_TYPE(SP0250, sp0250_device, "sp0250", "GI SP0250 LPC") sp0250_device::sp0250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SP0250, "SP0250", tag, owner, clock, "sp0250", __FILE__), + : device_t(mconfig, SP0250, tag, owner, clock), device_sound_interface(mconfig, *this), m_amp(0), m_pitch(0), @@ -76,7 +76,8 @@ void sp0250_device::device_start() if (!m_drq.isnull()) { m_drq( ASSERT_LINE); - machine().scheduler().timer_pulse(attotime::from_hz(clock()) * CLOCK_DIVIDER, timer_expired_delegate(FUNC(sp0250_device::timer_tick), this)); + m_tick_timer= machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sp0250_device::timer_tick), this)); + m_tick_timer->adjust(attotime::from_hz(clock()) * CLOCK_DIVIDER, 0, attotime::from_hz(clock()) * CLOCK_DIVIDER); } m_stream = machine().sound().stream_alloc(*this, 0, 1, clock() / CLOCK_DIVIDER); diff --git a/src/devices/sound/sp0250.h b/src/devices/sound/sp0250.h index e9f8e40829a..13fc7973f0f 100644 --- a/src/devices/sound/sp0250.h +++ b/src/devices/sound/sp0250.h @@ -1,18 +1,16 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#pragma once +#ifndef MAME_SOUND_SP0250_H +#define MAME_SOUND_SP0250_H -#ifndef __SP0250_H__ -#define __SP0250_H__ +#pragma once -class sp0250_device : public device_t, - public device_sound_interface +class sp0250_device : public device_t, public device_sound_interface { public: sp0250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~sp0250_device() {} - template static devcb_base &set_drq_callback(device_t &device, _Object object) { return downcast(device).m_drq.set_callback(object); } + template static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast(device).m_drq.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER( write ); uint8_t drq_r(); @@ -46,13 +44,12 @@ private: void load_values(); TIMER_CALLBACK_MEMBER( timer_tick ); + emu_timer * m_tick_timer; }; -extern const device_type SP0250; +DECLARE_DEVICE_TYPE(SP0250, sp0250_device) #define MCFG_SP0250_DRQ_CALLBACK(_write) \ devcb = &sp0250_device::set_drq_callback(*device, DEVCB_##_write); - - -#endif /* __SP0250_H__ */ +#endif // MAME_SOUND_SP0250_H diff --git a/src/devices/sound/sp0256.cpp b/src/devices/sound/sp0256.cpp index 5e8777e8de2..0dfe8194cc7 100644 --- a/src/devices/sound/sp0256.cpp +++ b/src/devices/sound/sp0256.cpp @@ -23,6 +23,15 @@ #include "emu.h" #include "sp0256.h" +#define LOG_GENERAL (1U << 0) +#define LOG_FIFO (1U << 1) + +//#define VERBOSE (LOG_GENERAL | LOG_FIFO) +#include "logmacro.h" + +#define LOGFIFO(...) LOGMASKED(LOG_FIFO, __VA_ARGS__) + + #define CLOCK_DIVIDER (7*6*8) #define HIGH_QUALITY @@ -33,49 +42,9 @@ #define FIFO_ADDR (0x1800 << 3) /* SP0256 address of SPB260 speech FIFO. */ -#define VERBOSE 0 -#define DEBUG_FIFO 0 - -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) - -#define LOG_FIFO(x) do { if (DEBUG_FIFO) logerror x; } while (0) - -#define SET_SBY(line_state) { \ - if (m_sby_line != line_state) \ - { \ - m_sby_line = line_state; \ - m_sby_cb(m_sby_line); \ - } \ -} - -/* ======================================================================== */ -/* qtbl -- Coefficient Quantization Table. This comes from a */ -/* SP0250 data sheet, and should be correct for SP0256. */ -/* ======================================================================== */ -static const int16_t qtbl[128] = -{ - 0, 9, 17, 25, 33, 41, 49, 57, - 65, 73, 81, 89, 97, 105, 113, 121, - 129, 137, 145, 153, 161, 169, 177, 185, - 193, 201, 209, 217, 225, 233, 241, 249, - 257, 265, 273, 281, 289, 297, 301, 305, - 309, 313, 317, 321, 325, 329, 333, 337, - 341, 345, 349, 353, 357, 361, 365, 369, - 373, 377, 381, 385, 389, 393, 397, 401, - 405, 409, 413, 417, 421, 425, 427, 429, - 431, 433, 435, 437, 439, 441, 443, 445, - 447, 449, 451, 453, 455, 457, 459, 461, - 463, 465, 467, 469, 471, 473, 475, 477, - 479, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511 -}; - - // device type definition -const device_type SP0256 = device_creator; +DEFINE_DEVICE_TYPE(SP0256, sp0256_device, "sp0256", "GI SP0256 Narrator Speech Processor") //************************************************************************** @@ -83,11 +52,14 @@ const device_type SP0256 = device_creator; //************************************************************************** sp0256_device::sp0256_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SP0256, "SP0256", tag, owner, clock, "sp0256", __FILE__), - device_sound_interface(mconfig, *this), - m_rom(*this, DEVICE_SELF), - m_drq_cb(*this), - m_sby_cb(*this) + : device_t(mconfig, SP0256, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_rom(*this, DEVICE_SELF) + , m_stream(nullptr) + , m_drq_cb(*this) + , m_sby_cb(*this) + , m_scratch() + , m_lrq_timer(nullptr) { } @@ -191,7 +163,7 @@ void sp0256_device::device_reset() m_silent = 1; m_sby_line = 0; m_drq_cb(1); - SET_SBY(1) + SET_SBY(1); m_lrq = 0; m_lrq_timer->adjust(attotime::from_ticks(50, m_clock)); @@ -202,7 +174,7 @@ void sp0256_device::device_reset() /* ======================================================================== */ /* LIMIT -- Limiter function for digital sample output. */ /* ======================================================================== */ -static inline int16_t limit(int16_t s) +inline int16_t sp0256_device::lpc12_t::limit(int16_t s) { #ifdef HIGH_QUALITY /* Higher quality than the original, but who cares? */ if (s > 8191) return 8191; @@ -217,11 +189,9 @@ static inline int16_t limit(int16_t s) /* ======================================================================== */ /* LPC12_UPDATE -- Update the 12-pole filter, outputting samples. */ /* ======================================================================== */ -static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, uint32_t *optr) +inline int sp0256_device::lpc12_t::update(int num_samp, int16_t *out, uint32_t *optr) { - int i, j; - int16_t samp; - int do_int; + int i; int oidx = *optr; /* -------------------------------------------------------------------- */ @@ -233,44 +203,41 @@ static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, ui /* ---------------------------------------------------------------- */ /* Generate a series of periodic impulses, or random noise. */ /* ---------------------------------------------------------------- */ - do_int = 0; - samp = 0; - if (f->per) + bool do_int = false; + uint16_t samp = 0; + if (per) { - if (f->cnt <= 0) + if (cnt <= 0) { - f->cnt += f->per; - samp = f->amp; - f->rpt--; - do_int = f->interp; + cnt += per; + samp = amp; + rpt--; + do_int = interp; - for (j = 0; j < 6; j++) - f->z_data[j][1] = f->z_data[j][0] = 0; - - } else + for (int j = 0; j < 6; j++) + z_data[j][1] = z_data[j][0] = 0; + } + else { samp = 0; - f->cnt--; + cnt--; } - - } else + } + else { - int bit; - - if (--f->cnt <= 0) + if (--cnt <= 0) { - do_int = f->interp; - f->cnt = PER_NOISE; - f->rpt--; - for (j = 0; j < 6; j++) - f->z_data[j][0] = f->z_data[j][1] = 0; + do_int = interp; + cnt = PER_NOISE; + rpt--; + for (int j = 0; j < 6; j++) + z_data[j][0] = z_data[j][1] = 0; } - bit = f->rng & 1; - f->rng = (f->rng >> 1) ^ (bit ? 0x4001 : 0); + const bool bit(rng & 1); + rng = (rng >> 1) ^ (bit ? 0x4001 : 0); - if (bit) { samp = f->amp; } - else { samp = -f->amp; } + samp = bit ? amp : -amp; } /* ---------------------------------------------------------------- */ @@ -278,20 +245,19 @@ static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, ui /* ---------------------------------------------------------------- */ if (do_int) { - f->r[0] += f->r[14]; - f->r[1] += f->r[15]; + r[0] += r[14]; + r[1] += r[15]; - f->amp = (f->r[0] & 0x1F) << (((f->r[0] & 0xE0) >> 5) + 0); - f->per = f->r[1]; - - do_int = 0; + amp = (r[0] & 0x1F) << (((r[0] & 0xE0) >> 5) + 0); + per = r[1]; } /* ---------------------------------------------------------------- */ /* Stop if we expire our repeat counter and return the actual */ /* number of samples we did. */ /* ---------------------------------------------------------------- */ - if (f->rpt <= 0) break; + if (rpt <= 0) + break; /* ---------------------------------------------------------------- */ /* Each 2nd order stage looks like one of these. The App. Manual */ @@ -321,19 +287,19 @@ static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, ui /* +-----------[B]<---------+ */ /* */ /* ---------------------------------------------------------------- */ - for (j = 0; j < 6; j++) + for (int j = 0; j < 6; j++) { - samp += (((int)f->b_coef[j] * (int)f->z_data[j][1]) >> 9); - samp += (((int)f->f_coef[j] * (int)f->z_data[j][0]) >> 8); + samp += (int(b_coef[j]) * int(z_data[j][1])) >> 9; + samp += (int(f_coef[j]) * int(z_data[j][0])) >> 8; - f->z_data[j][1] = f->z_data[j][0]; - f->z_data[j][0] = samp; + z_data[j][1] = z_data[j][0]; + z_data[j][0] = samp; } #ifdef HIGH_QUALITY /* Higher quality than the original, but who cares? */ out[oidx++ & SCBUF_MASK] = limit(samp) << 2; #else - out[oidx++ & SCBUF_MASK] = (limit(samp >> 4) << 8); + out[oidx++ & SCBUF_MASK] = limit(samp >> 4) << 8; #endif } @@ -342,41 +308,61 @@ static inline int lpc12_update(struct lpc12_t *f, int num_samp, int16_t *out, ui return i; } -static const int stage_map[6] = { 0, 1, 2, 3, 4, 5 }; - /* ======================================================================== */ /* LPC12_REGDEC -- Decode the register set in the filter bank. */ /* ======================================================================== */ -static inline void lpc12_regdec(struct lpc12_t *f) +inline void sp0256_device::lpc12_t::regdec() { - int i; - /* -------------------------------------------------------------------- */ /* Decode the Amplitude and Period registers. Force the 'cnt' to 0 */ /* to get an initial impulse. We compensate elsewhere by setting */ /* the repeat count to "repeat + 1". */ /* -------------------------------------------------------------------- */ - f->amp = (f->r[0] & 0x1F) << (((f->r[0] & 0xE0) >> 5) + 0); - f->cnt = 0; - f->per = f->r[1]; + amp = (r[0] & 0x1F) << (((r[0] & 0xE0) >> 5) + 0); + cnt = 0; + per = r[1]; /* -------------------------------------------------------------------- */ /* Decode the filter coefficients from the quant table. */ /* -------------------------------------------------------------------- */ - for (i = 0; i < 6; i++) + for (int i = 0; i < 6; i++) { - #define IQ(x) (((x) & 0x80) ? qtbl[0x7F & -(x)] : -qtbl[(x)]) - - f->b_coef[stage_map[i]] = IQ(f->r[2 + 2*i]); - f->f_coef[stage_map[i]] = IQ(f->r[3 + 2*i]); + /* ======================================================================== */ + /* qtbl -- Coefficient Quantization Table. This comes from a */ + /* SP0250 data sheet, and should be correct for SP0256. */ + /* ======================================================================== */ + static constexpr int16_t qtbl[128] = + { + 0, 9, 17, 25, 33, 41, 49, 57, + 65, 73, 81, 89, 97, 105, 113, 121, + 129, 137, 145, 153, 161, 169, 177, 185, + 193, 201, 209, 217, 225, 233, 241, 249, + 257, 265, 273, 281, 289, 297, 301, 305, + 309, 313, 317, 321, 325, 329, 333, 337, + 341, 345, 349, 353, 357, 361, 365, 369, + 373, 377, 381, 385, 389, 393, 397, 401, + 405, 409, 413, 417, 421, 425, 427, 429, + 431, 433, 435, 437, 439, 441, 443, 445, + 447, 449, 451, 453, 455, 457, 459, 461, + 463, 465, 467, 469, 471, 473, 475, 477, + 479, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 508, 509, 510, 511 + }; + + static constexpr int stage_map[6] = { 0, 1, 2, 3, 4, 5 }; + + auto IQ = [] (uint8_t x) { return (x & 0x80) ? qtbl[0x7F & -x] : -qtbl[x]; }; + + b_coef[stage_map[i]] = IQ(r[2 + 2*i]); + f_coef[stage_map[i]] = IQ(r[3 + 2*i]); } /* -------------------------------------------------------------------- */ /* Set the Interp flag based on whether we have interpolation parms */ /* -------------------------------------------------------------------- */ - f->interp = f->r[14] || f->r[15]; - - return; + interp = r[14] || r[15]; } /* ======================================================================== */ @@ -759,8 +745,8 @@ uint32_t sp0256_device::getb( int len ) data = ((d1 << 10) | d0) >> m_fifo_bitp; - LOG_FIFO(("sp0256: RD_FIFO %.3X %d.%d %d\n", data & ((1 << len) - 1), - m_fifo_tail, m_fifo_bitp, m_fifo_head)); + LOGFIFO("sp0256: RD_FIFO %.3X %d.%d %d\n", data & ((1 << len) - 1), + m_fifo_tail, m_fifo_bitp, m_fifo_head); /* ---------------------------------------------------------------- */ /* Note the PC doesn't advance when we execute from FIFO. */ @@ -845,7 +831,7 @@ void sp0256_device::micro() for (i = 0; i < 16; i++) m_filt.r[i] = 0; - SET_SBY(1) + SET_SBY(1); return; } @@ -859,11 +845,11 @@ void sp0256_device::micro() repeat = 0; ctrl_xfer = 0; - LOG(("$%.4X.%.1X: OPCODE %d%d%d%d.%d%d\n", + LOG("$%.4X.%.1X: OPCODE %d%d%d%d.%d%d\n", (m_pc >> 3) - 1, m_pc & 7, !!(opcode & 1), !!(opcode & 2), !!(opcode & 4), !!(opcode & 8), - !!(m_mode&4), !!(m_mode&2))); + !!(m_mode&4), !!(m_mode&2)); /* ---------------------------------------------------------------- */ /* Handle the special cases for specific opcodes. */ @@ -982,7 +968,7 @@ void sp0256_device::micro() /* ---------------------------------------------------------------- */ if (ctrl_xfer) { - LOG(("jumping to $%.4X.%.1X: ", m_pc >> 3, m_pc & 7)); + LOG("jumping to $%.4X.%.1X: ", m_pc >> 3, m_pc & 7); /* ------------------------------------------------------------ */ /* Set our "FIFO Selected" flag based on whether we're going */ @@ -990,7 +976,7 @@ void sp0256_device::micro() /* ------------------------------------------------------------ */ m_fifo_sel = m_pc == FIFO_ADDR; - LOG(("%s ", m_fifo_sel ? "FIFO" : "ROM")); + LOG("%s ", m_fifo_sel ? "FIFO" : "ROM"); /* ------------------------------------------------------------ */ /* Control transfers to the FIFO cause it to discard the */ @@ -998,14 +984,14 @@ void sp0256_device::micro() /* ------------------------------------------------------------ */ if (m_fifo_sel && m_fifo_bitp) { - LOG(("bitp = %d -> Flush", m_fifo_bitp)); + LOG("bitp = %d -> Flush", m_fifo_bitp); /* Discard partially-read decle. */ if (m_fifo_tail < m_fifo_head) m_fifo_tail++; m_fifo_bitp = 0; } - LOG(("\n")); + LOG("\n"); continue; } @@ -1017,7 +1003,7 @@ void sp0256_device::micro() if (!repeat) continue; m_filt.rpt = repeat + 1; - LOG(("repeat = %d\n", repeat)); + LOG("repeat = %d\n", repeat); i = (opcode << 3) | (m_mode & 6); idx0 = sp0256_df_idx[i++]; @@ -1047,8 +1033,8 @@ void sp0256_device::micro() field = cr & CR_FIELD; value = 0; - LOG(("$%.4X.%.1X: len=%2d shf=%2d prm=%2d d=%d f=%d ", - m_pc >> 3, m_pc & 7, len, shf, prm, !!delta, !!field)); + LOG("$%.4X.%.1X: len=%2d shf=%2d prm=%2d d=%d f=%d ", + m_pc >> 3, m_pc & 7, len, shf, prm, !!delta, !!field); /* ------------------------------------------------------------ */ /* Clear any registers that were requested to be cleared. */ /* ------------------------------------------------------------ */ @@ -1072,7 +1058,7 @@ void sp0256_device::micro() } else { - LOG((" (no update)\n")); + LOG(" (no update)\n"); continue; } @@ -1090,9 +1076,9 @@ void sp0256_device::micro() if (shf) value <<= shf; - LOG(("v=%.2X (%c%.2X) ", value & 0xFF, + LOG("v=%.2X (%c%.2X) ", value & 0xFF, value & 0x80 ? '-' : '+', - 0xFF & (value & 0x80 ? -value : value))); + 0xFF & (value & 0x80 ? -value : value)); m_silent = 0; @@ -1101,12 +1087,12 @@ void sp0256_device::micro() /* ------------------------------------------------------------ */ if (field) { - LOG(("--field-> r[%2d] = %.2X -> ", prm, m_filt.r[prm])); + LOG("--field-> r[%2d] = %.2X -> ", prm, m_filt.r[prm]); m_filt.r[prm] &= ~(~0 << shf); /* Clear the old bits. */ m_filt.r[prm] |= value; /* Merge in the new bits. */ - LOG(("%.2X\n", m_filt.r[prm])); + LOG("%.2X\n", m_filt.r[prm]); continue; } @@ -1116,11 +1102,11 @@ void sp0256_device::micro() /* ------------------------------------------------------------ */ if (delta) { - LOG(("--delta-> r[%2d] = %.2X -> ", prm, m_filt.r[prm])); + LOG("--delta-> r[%2d] = %.2X -> ", prm, m_filt.r[prm]); m_filt.r[prm] += value; - LOG(("%.2X\n", m_filt.r[prm])); + LOG("%.2X\n", m_filt.r[prm]); continue; } @@ -1129,7 +1115,7 @@ void sp0256_device::micro() /* Otherwise, just write the new value. */ /* ------------------------------------------------------------ */ m_filt.r[prm] = value; - LOG(("--value-> r[%2d] = %.2X\n", prm, m_filt.r[prm])); + LOG("--value-> r[%2d] = %.2X\n", prm, m_filt.r[prm]); } /* ---------------------------------------------------------------- */ @@ -1144,7 +1130,7 @@ void sp0256_device::micro() /* ---------------------------------------------------------------- */ /* Now that we've updated the registers, go decode them. */ /* ---------------------------------------------------------------- */ - lpc12_regdec(&m_filt); + m_filt.regdec(); /* ---------------------------------------------------------------- */ /* Break out since we now have a repeat count. */ @@ -1162,7 +1148,7 @@ WRITE8_MEMBER( sp0256_device::ald_w ) /* ---------------------------------------------------------------- */ if (!m_lrq) { - LOG(("sp0256: Dropped ALD write\n")); + LOG("sp0256: Dropped ALD write\n"); return; } @@ -1174,7 +1160,7 @@ WRITE8_MEMBER( sp0256_device::ald_w ) m_lrq = 0; m_ald = (0xff & data) << 4; m_drq_cb(0); - SET_SBY(0) + SET_SBY(0); return; } @@ -1244,7 +1230,7 @@ WRITE16_MEMBER( sp0256_device::spb640_w ) /* ---------------------------------------------------------------- */ if ((m_fifo_head - m_fifo_tail) >= 64) { - LOG(("spb640: Dropped FIFO write\n")); + LOG("spb640: Dropped FIFO write\n"); return; } @@ -1252,8 +1238,8 @@ WRITE16_MEMBER( sp0256_device::spb640_w ) /* FIFO up the lower 10 bits of the data. */ /* ---------------------------------------------------------------- */ - LOG(("spb640: WR_FIFO %.3X %d.%d %d\n", data & 0x3ff, - m_fifo_tail, m_fifo_bitp, m_fifo_head)); + LOG("spb640: WR_FIFO %.3X %d.%d %d\n", data & 0x3ff, + m_fifo_tail, m_fifo_bitp, m_fifo_head); m_fifo[m_fifo_head++ & 63] = data & 0x3ff; @@ -1343,8 +1329,7 @@ void sp0256_device::sound_stream_update(sound_stream &stream, stream_sample_t ** } else { - did_samp += lpc12_update(&m_filt, do_samp, - m_scratch.get(), &m_sc_head); + did_samp += m_filt.update(do_samp, m_scratch.get(), &m_sc_head); } m_sc_head &= SCBUF_MASK; diff --git a/src/devices/sound/sp0256.h b/src/devices/sound/sp0256.h index 4b13885e92c..b7c08e72a46 100644 --- a/src/devices/sound/sp0256.h +++ b/src/devices/sound/sp0256.h @@ -30,10 +30,10 @@ */ -#pragma once +#ifndef MAME_SOUND_SP0256_H +#define MAME_SOUND_SP0256_H -#ifndef __SP0256_H__ -#define __SP0256_H__ +#pragma once #define MCFG_SP0256_DATA_REQUEST_CB(_devcb) \ devcb = &sp0256_device::set_data_request_callback(*device, DEVCB_##_devcb); @@ -42,27 +42,14 @@ devcb = &sp0256_device::set_standby_callback(*device, DEVCB_##_devcb); -struct lpc12_t -{ - int rpt, cnt; /* Repeat counter, Period down-counter. */ - uint32_t per, rng; /* Period, Amplitude, Random Number Generator */ - int amp; - int16_t f_coef[6]; /* F0 through F5. */ - int16_t b_coef[6]; /* B0 through B5. */ - int16_t z_data[6][2]; /* Time-delay data for the filter stages. */ - uint8_t r[16]; /* The encoded register set. */ - int interp; -}; - class sp0256_device : public device_t, public device_sound_interface { public: sp0256_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~sp0256_device() { } - template static devcb_base &set_data_request_callback(device_t &device, _Object object) { return downcast(device).m_drq_cb.set_callback(object); } - template static devcb_base &set_standby_callback(device_t &device, _Object object) { return downcast(device).m_sby_cb.set_callback(object); } + template static devcb_base &set_data_request_callback(device_t &device, Object &&cb) { return downcast(device).m_drq_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_standby_callback(device_t &device, Object &&cb) { return downcast(device).m_sby_cb.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER(ald_w); DECLARE_READ_LINE_MEMBER(lrq_r); @@ -83,41 +70,69 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: + struct lpc12_t + { + int update(int num_samp, int16_t *out, uint32_t *optr); + void regdec(); + + int rpt, cnt; // Repeat counter, Period down-counter. + uint32_t per, rng; // Period, Amplitude, Random Number Generator + int amp; + int16_t f_coef[6]; // F0 through F5. + int16_t b_coef[6]; // B0 through B5. + int16_t z_data[6][2]; // Time-delay data for the filter stages. + uint8_t r[16]; // The encoded register set. + int interp; + + private: + static int16_t limit(int16_t s); + }; + uint32_t getb(int len); void micro(); - required_region_ptr m_rom; /* 64K ROM. */ - sound_stream *m_stream; /* MAME core sound stream */ - devcb_write_line m_drq_cb; /* Data request callback */ - devcb_write_line m_sby_cb; /* Standby callback */ - - int m_sby_line; /* Standby line state */ - int m_cur_len; /* Fullness of current sound buffer. */ - - int m_silent; /* Flag: SP0256 is silent. */ - - std::unique_ptr m_scratch; /* Scratch buffer for audio. */ - uint32_t m_sc_head; /* Head pointer into scratch circular buf */ - uint32_t m_sc_tail; /* Tail pointer into scratch circular buf */ - - struct lpc12_t m_filt; /* 12-pole filter */ - int m_lrq; /* Load ReQuest. == 0 if we can accept a load */ - int m_ald; /* Address LoaD. < 0 if no command pending. */ - int m_pc; /* Microcontroller's PC value. */ - int m_stack; /* Microcontroller's PC stack. */ - int m_fifo_sel; /* True when executing from FIFO. */ - int m_halted; /* True when CPU is halted. */ - uint32_t m_mode; /* Mode register. */ - uint32_t m_page; /* Page set by SETPAGE */ - - uint32_t m_fifo_head; /* FIFO head pointer (where new data goes). */ - uint32_t m_fifo_tail; /* FIFO tail pointer (where data comes from). */ - uint32_t m_fifo_bitp; /* FIFO bit-pointer (for partial decles). */ - uint16_t m_fifo[64]; /* The 64-decle FIFO. */ + + void SET_SBY(int line_state) + { + if (m_sby_line != line_state) + { + m_sby_line = line_state; + m_sby_cb(m_sby_line); + } + } + + required_region_ptr m_rom; // 64K ROM. + sound_stream *m_stream; // MAME core sound stream + devcb_write_line m_drq_cb; // Data request callback + devcb_write_line m_sby_cb; // Standby callback + + int m_sby_line; // Standby line state + int m_cur_len; // Fullness of current sound buffer. + + int m_silent; // Flag: SP0256 is silent. + + std::unique_ptr m_scratch; // Scratch buffer for audio. + uint32_t m_sc_head; // Head pointer into scratch circular buf + uint32_t m_sc_tail; // Tail pointer into scratch circular buf + + lpc12_t m_filt; // 12-pole filter + int m_lrq; // Load ReQuest. == 0 if we can accept a load + int m_ald; // Address LoaD. < 0 if no command pending. + int m_pc; // Microcontroller's PC value. + int m_stack; // Microcontroller's PC stack. + int m_fifo_sel; // True when executing from FIFO. + int m_halted; // True when CPU is halted. + uint32_t m_mode; // Mode register. + uint32_t m_page; // Page set by SETPAGE + + uint32_t m_fifo_head; // FIFO head pointer (where new data goes). + uint32_t m_fifo_tail; // FIFO tail pointer (where data comes from). + uint32_t m_fifo_bitp; // FIFO bit-pointer (for partial decles). + uint16_t m_fifo[64]; // The 64-decle FIFO. emu_timer *m_lrq_timer; }; -extern const device_type SP0256; +DECLARE_DEVICE_TYPE(SP0256, sp0256_device) -#endif /* __SP0256_H__ */ +#endif // MAME_SOUND_SP0256_H diff --git a/src/devices/sound/spkrdev.cpp b/src/devices/sound/spkrdev.cpp index 4af44791921..fc912fbd367 100644 --- a/src/devices/sound/spkrdev.cpp +++ b/src/devices/sound/spkrdev.cpp @@ -76,20 +76,17 @@ #include "sound/spkrdev.h" -static const int16_t default_levels[2] = {0, 32767}; +static constexpr int16_t default_levels[2] = {0, 32767}; // Internal oversampling factor (interm. samples vs stream samples) -static const int RATE_MULTIPLIER = 4; +static constexpr int RATE_MULTIPLIER = 4; -const device_type SPEAKER_SOUND = device_creator; - -template class device_finder; -template class device_finder; +DEFINE_DEVICE_TYPE(SPEAKER_SOUND, speaker_sound_device, "speaker_sound_device", "Filtered 1-bit DAC") speaker_sound_device::speaker_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SPEAKER_SOUND, "Filtered 1-bit DAC", tag, owner, clock, "speaker_sound", __FILE__) + : device_t(mconfig, SPEAKER_SOUND, tag, owner, clock) , device_sound_interface(mconfig, *this) , m_num_levels(2) , m_levels(default_levels) diff --git a/src/devices/sound/spkrdev.h b/src/devices/sound/spkrdev.h index 4fdb0a92ff6..42bf3625876 100644 --- a/src/devices/sound/spkrdev.h +++ b/src/devices/sound/spkrdev.h @@ -7,18 +7,12 @@ driven by one or more output bits **********************************************************************/ -#ifndef MAME_DEVICES_SOUND_SPKRDEV_H -#define MAME_DEVICES_SOUND_SPKRDEV_H +#ifndef MAME_SOUND_SPKRDEV_H +#define MAME_SOUND_SPKRDEV_H #pragma once -// Length of anti-aliasing filter kernel, measured in number of intermediate samples -enum -{ - FILTER_LENGTH = 64 -}; - #define MCFG_SPEAKER_LEVELS(_num, _levels) \ speaker_sound_device::static_set_levels(*device, _num, _levels); @@ -43,6 +37,12 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: + // Length of anti-aliasing filter kernel, measured in number of intermediate samples + enum + { + FILTER_LENGTH = 64 + }; + // internal state // Updates the composed volume array according to time @@ -87,9 +87,6 @@ private: const int16_t *m_levels; /* optional: pointer to level lookup table */ }; -extern const device_type SPEAKER_SOUND; - -extern template class device_finder; -extern template class device_finder; +DECLARE_DEVICE_TYPE(SPEAKER_SOUND, speaker_sound_device) -#endif // MAME_DEVICES_SOUND_SPKRDEV_H +#endif // MAME_SOUND_SPKRDEV_H diff --git a/src/devices/sound/spu.cpp b/src/devices/sound/spu.cpp index 755717f1fc9..383287b9114 100644 --- a/src/devices/sound/spu.cpp +++ b/src/devices/sound/spu.cpp @@ -34,31 +34,11 @@ #endif // device type definition -const device_type SPU = device_creator; +DEFINE_DEVICE_TYPE(SPU, spu_device, "psxspu", "PlayStation SPU") // // // -static inline unsigned int min(unsigned int a, unsigned int b) -{ - return (a > b) ? b : a; -} - -static inline unsigned int max(unsigned int a, unsigned int b) -{ - return (a > b) ? a : b; -} - -static inline double mindb(double a, double b) -{ - return (a > b) ? b : a; -} - -static inline double maxdb(double a, double b) -{ - return (a > b) ? a : b; -} - enum spu_registers { spureg_voice=0, @@ -240,7 +220,7 @@ static const int filter_coef[5][2]= // GLOBAL VARIABLES //************************************************************************** -reverb_params *spu_reverb_cfg=nullptr; +spu_device::reverb_params *spu_device::spu_reverb_cfg=nullptr; float spu_device::freq_multiplier=1.0f; @@ -955,7 +935,7 @@ static int shift_register15(int &shift) //------------------------------------------------- spu_device::spu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, SPU, "SPU", tag, owner, clock, "spu", __FILE__), + device_t(mconfig, SPU, tag, owner, clock), device_sound_interface(mconfig, *this), m_irq_handler(*this), dirty_flags(-1), @@ -1316,8 +1296,8 @@ void spu_device::flush_cache(sample_cache *sc, sc->start, sc->end);*/ - sc->invalid_start=min(sc->invalid_start,istart); - sc->invalid_end=max(sc->invalid_end,iend); + sc->invalid_start=(std::min)(sc->invalid_start,istart); + sc->invalid_end=(std::max)(sc->invalid_end,iend); sc->valid=false; sc->remove_ref(); } @@ -1364,7 +1344,7 @@ spu_device::sample_cache *spu_device::get_sample_cache(const unsigned int addr) if ((a < 0x80000) && (ap->flags&adpcmflag_loop)) sc->is_loop=true; - sc->end=min(spu_ram_size,a+16); + sc->end=(std::min)(spu_ram_size,a+16); unsigned int sz=((sc->end-sc->start)>>4)*28; sc->data=new signed short [sz]; @@ -1461,7 +1441,7 @@ void spu_device::update_voice_events(voiceinfo *vi) // Voice is inside loop cache, return time until end of that if lower assert(vi->lcptrloop_cache->len); - vi->samplestoend=min(vi->samplestoend, + vi->samplestoend=(std::min)(vi->samplestoend, (unsigned int)((((int64_t)(vi->loop_cache->len-vi->lcptr)<<12)-vi->dptr)+(vi->pitch-1))/vi->pitch); } @@ -1675,9 +1655,9 @@ bool spu_device::process_voice(const unsigned int v, // Play up to end of sample, envelope event, or IRQ, whichever comes first unsigned int ntoplay=fm?1:num, - nextevent=min(vi->samplestoend, - min(vi->samplestoirq,vi->envsamples)); - ntoplay=min(ntoplay,nextevent); + nextevent=(std::min)(vi->samplestoend, + (std::min)(vi->samplestoirq,vi->envsamples)); + ntoplay=(std::min)(ntoplay,nextevent); if (ntoplay) { @@ -1968,7 +1948,7 @@ void spu_device::generate_voice(const unsigned int v, if (((sp+end)>=ep) && (vi->pitch)) { - num_stitch=min(n,max(0x1fff/vi->pitch,1)); + num_stitch=(std::min)(n,(std::max)(0x1fffU/vi->pitch,1U)); n-=num_stitch; } @@ -2214,7 +2194,7 @@ bool spu_device::update_envelope(const int v) break; case 4: // release - voice[v].env_level=mindb(1.0f,maxdb(0.0f,voice[v].env_level)); + voice[v].env_level=(std::min)(1.0f,(std::max)(0.0f,voice[v].env_level)); voice[v].env_delta=voice[v].env_rr; if (voice[v].env_rr == -0.0f) // 0.0 release means infinite time { @@ -2421,7 +2401,7 @@ void spu_device::generate_xa(void *ptr, const unsigned int sz) if (ss) { ss<<=xa_channels; - ss=min(ss,(int)xa_buffer->get_bytes_in()); + ss=(std::min)(ss,(int)xa_buffer->get_bytes_in()); xa_buffer->increment_tail(ss); sp=(signed short *)xa_buffer->get_tail_ptr(); @@ -2583,7 +2563,7 @@ void spu_device::generate(void *ptr, const unsigned int sz) while ((left) && (output_size)) { - unsigned int n=min(min(left,output_buffer_size-output_head),output_size); + unsigned int n=(std::min)((std::min)(left,output_buffer_size-output_head),output_size); memcpy(dp,output_buf[0]+output_head,n); rev->process((signed short *)dp, @@ -2629,7 +2609,7 @@ void spu_device::update_irq_event() voice[i].hitirq=true; } else { - samplestoirq=min(samplestoirq,voice[i].samplestoirq); + samplestoirq=(std::min)(samplestoirq,voice[i].samplestoirq); } } } @@ -2675,7 +2655,7 @@ void spu_device::process_until(const unsigned int tsample) // Drop samples from the head of the queue if its full - process_samples=min(process_samples,output_buffer_size>>2); + process_samples=(std::min)(process_samples,output_buffer_size>>2); unsigned int nsz=output_size+(process_samples<<2); if (nsz>output_buffer_size) { @@ -2689,7 +2669,7 @@ void spu_device::process_until(const unsigned int tsample) // Decide how many samples to process taking into account buffer // wrap in output queue. Get pointers to the queues. - process_samples=min(process_samples, + process_samples=(std::min)(process_samples, (output_buffer_size-output_tail)>>2); unsigned char *outptr=output_buf[0]+output_tail, diff --git a/src/devices/sound/spu.h b/src/devices/sound/spu.h index a04b45b439d..fe55ce98ab0 100644 --- a/src/devices/sound/spu.h +++ b/src/devices/sound/spu.h @@ -1,11 +1,9 @@ // license:BSD-3-Clause // copyright-holders:pSXAuthor, R. Belmont -#pragma once - -#ifndef __SPU_H__ -#define __SPU_H__ +#ifndef MAME_SOUND_SPU_H +#define MAME_SOUND_SPU_H -#include "spureverb.h" +#pragma once //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -20,13 +18,11 @@ MCFG_PSX_SPU_WRITE_HANDLER(DEVWRITE16(_tag, spu_device, write)) \ MCFG_DEVICE_ADD(_tag, SPU, _clock) \ MCFG_SPU_IRQ_HANDLER(DEVWRITELINE("maincpu:irq", psxirq_device, intin9)) \ - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 4, psx_dma_read_delegate(&spu_device::dma_read, (spu_device *) device ) ) \ - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 4, psx_dma_write_delegate(&spu_device::dma_write, (spu_device *) device ) ) + MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 4, psxdma_device::read_delegate(&spu_device::dma_read, (spu_device *) device ) ) \ + MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 4, psxdma_device::write_delegate(&spu_device::dma_write, (spu_device *) device ) ) // ======================> spu_device -const unsigned int spu_base_frequency_hz=44100; - class stream_buffer; class spu_device : public device_t, public device_sound_interface @@ -45,6 +41,9 @@ class spu_device : public device_t, public device_sound_interface }; protected: + static constexpr unsigned int spu_base_frequency_hz=44100; + class reverb; + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -53,6 +52,15 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + static constexpr float ms_to_rate(float ms) { return 1.0f / (ms * (float(spu_base_frequency_hz) / 1000.0f)); } + static constexpr float s_to_rate(float s) { return ms_to_rate(s * 1000.0f); } + static const float linear_rate[]; + static const float pos_exp_rate[]; + static const float neg_exp_rate[]; + static const float decay_rate[]; + static const float linear_release_rate[]; + static const float exp_release_rate[]; + // internal state devcb_write_line m_irq_handler; @@ -137,16 +145,15 @@ protected: #pragma pack(pop,spureg) - struct reverb_preset - { - const char *name; - unsigned short param[32]; - reverb_params cfg; - }; + struct reverb_params; + struct reverb_preset; reverb_preset *cur_reverb_preset; + sound_stream *m_stream; + static reverb_preset reverb_presets[]; + static reverb_params *spu_reverb_cfg; void key_on(const int v); void key_off(const int v); @@ -224,7 +231,7 @@ public: spu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast(device).m_irq_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } void dma_read( uint32_t *ram, uint32_t n_address, int32_t n_size ); void dma_write( uint32_t *ram, uint32_t n_address, int32_t n_size ); @@ -238,15 +245,11 @@ public: void flush_xa(const unsigned int sector=0); void flush_cdda(const unsigned int sector=0); - sound_stream *m_stream; - DECLARE_READ16_MEMBER( read ); DECLARE_WRITE16_MEMBER( write ); }; -extern reverb_params *spu_reverb_cfg; - // device type definition -extern const device_type SPU; +DECLARE_DEVICE_TYPE(SPU, spu_device) -#endif +#endif // MAME_SOUND_SPU_H diff --git a/src/devices/sound/spu_tables.cpp b/src/devices/sound/spu_tables.cpp index d41286df115..922f2c2bccb 100644 --- a/src/devices/sound/spu_tables.cpp +++ b/src/devices/sound/spu_tables.cpp @@ -2,18 +2,9 @@ // copyright-holders:pSXAuthor, R. Belmont #include "emu.h" #include "spu.h" +#include "spureverb.h" -static inline float ms_to_rate(const float ms) -{ - return 1.0f/(ms*((float)spu_base_frequency_hz/1000.0f)); -} - -static inline float s_to_rate(const float s) -{ - return ms_to_rate(s*1000.0f); -} - -static float linear_rate[]= +const float spu_device::linear_rate[]= { ms_to_rate(0.05f), ms_to_rate(0.06f), @@ -125,9 +116,8 @@ static float linear_rate[]= s_to_rate(6080.0f) }; -static const int num_linear_rates=ARRAY_LENGTH(linear_rate); -static const float pos_exp_rate[]= +const float spu_device::pos_exp_rate[]= { ms_to_rate(0.09f), ms_to_rate(0.11f), @@ -231,9 +221,8 @@ static const float pos_exp_rate[]= s_to_rate(2664.0f) }; -static const int num_pos_exp_rates=ARRAY_LENGTH(pos_exp_rate); -static const float neg_exp_rate[]= +const float spu_device::neg_exp_rate[]= { ms_to_rate(0.07f), ms_to_rate(0.09f), @@ -345,9 +334,8 @@ static const float neg_exp_rate[]= s_to_rate(11200.0f) }; -static const int num_neg_exp_rates=ARRAY_LENGTH(neg_exp_rate); -static const float decay_rate[16]= +const float spu_device::decay_rate[16]= { ms_to_rate(0.07f), ms_to_rate(0.18f), @@ -367,7 +355,7 @@ static const float decay_rate[16]= s_to_rate(3.4f), }; -static const float linear_release_rate[]= +const float spu_device::linear_release_rate[]= { ms_to_rate(0.04f), ms_to_rate(0.09f), @@ -398,9 +386,8 @@ static const float linear_release_rate[]= s_to_rate(3040.0f) }; -static const int num_linear_release_rates=ARRAY_LENGTH(linear_release_rate); -static const float exp_release_rate[]= +const float spu_device::exp_release_rate[]= { ms_to_rate(0.07f), ms_to_rate(0.18f), @@ -431,7 +418,6 @@ static const float exp_release_rate[]= s_to_rate(7008.0f) }; -static const int num_exp_release_rates=ARRAY_LENGTH(exp_release_rate); // // @@ -631,6 +617,7 @@ spu_device::reverb_preset spu_device::reverb_presets[]= float spu_device::get_linear_rate(const int n) { + static constexpr int num_linear_rates=ARRAY_LENGTH(linear_rate); if (n>=num_linear_rates) return 0.0f; return linear_rate[n]*freq_multiplier; } @@ -643,6 +630,7 @@ float spu_device::get_linear_rate_neg_phase(const int n) float spu_device::get_pos_exp_rate(const int n) { + static constexpr int num_pos_exp_rates=ARRAY_LENGTH(pos_exp_rate); if (n>=num_pos_exp_rates) return 0.0f; return pos_exp_rate[n]*freq_multiplier; } @@ -655,6 +643,7 @@ float spu_device::get_pos_exp_rate_neg_phase(const int n) float spu_device::get_neg_exp_rate(const int n) { + static constexpr int num_neg_exp_rates=ARRAY_LENGTH(neg_exp_rate); if (n>=num_neg_exp_rates) return 0.0f; return -neg_exp_rate[n]*freq_multiplier; } @@ -677,12 +666,14 @@ float spu_device::get_sustain_level(const int n) float spu_device::get_linear_release_rate(const int n) { + static constexpr int num_linear_release_rates=ARRAY_LENGTH(linear_release_rate); if (n>=num_linear_release_rates) return 0.0f; return linear_release_rate[n]*freq_multiplier; } float spu_device::get_exp_release_rate(const int n) { + static constexpr int num_exp_release_rates=ARRAY_LENGTH(exp_release_rate); if (n>=num_exp_release_rates) return 0.0f; return exp_release_rate[n]*freq_multiplier; } diff --git a/src/devices/sound/spureverb.cpp b/src/devices/sound/spureverb.cpp index 3c784acbbee..cf747af1acb 100644 --- a/src/devices/sound/spureverb.cpp +++ b/src/devices/sound/spureverb.cpp @@ -17,18 +17,16 @@ // // -static inline int clamp(int v) +static constexpr int clamp(int v) { - if (v<-32768) return -32768; - if (v>32767) return 32767; - return v; + return (v<-32768) ? -32768 : (v>32767) ? 32767 : v; } // // // -reverb::reverb(const int hz, const int maxdelay) +spu_device::reverb::reverb(const int hz, const int maxdelay) : yp(0), max_delay(maxdelay), sound_hz(hz) @@ -54,7 +52,7 @@ reverb::reverb(const int hz, const int maxdelay) // // -reverb::~reverb() +spu_device::reverb::~reverb() { for (int c=0; c<2; c++) { @@ -70,7 +68,7 @@ reverb::~reverb() // // -void reverb::bandpass(signed short *sp, +void spu_device::reverb::bandpass(signed short *sp, const reverb_params *rp, const unsigned int sz) { @@ -98,7 +96,7 @@ void reverb::bandpass(signed short *sp, } } -void reverb::comb_allpass1(signed short *sp, +void spu_device::reverb::comb_allpass1(signed short *sp, signed short *dp, const comb_param &comb_delay, const int comb_gain, @@ -148,7 +146,7 @@ void reverb::comb_allpass1(signed short *sp, // // -void reverb::comb_allpass4(signed short *sp, +void spu_device::reverb::comb_allpass4(signed short *sp, signed short *dp, const comb_param &comb_delay, const int comb_gain, @@ -235,7 +233,7 @@ void reverb::comb_allpass4(signed short *sp, // // -void reverb::comb_allpass(signed short *sp, +void spu_device::reverb::comb_allpass(signed short *sp, signed short *dp, const reverb_params *rp, const int wetvol_l, @@ -312,7 +310,7 @@ void reverb::comb_allpass(signed short *sp, // // -void reverb::process(signed short *output, +void spu_device::reverb::process(signed short *output, signed short *reverb_input, const reverb_params *rp, const int wetvol_l, diff --git a/src/devices/sound/spureverb.h b/src/devices/sound/spureverb.h index 9f64c5c7f19..64b174bcfb6 100644 --- a/src/devices/sound/spureverb.h +++ b/src/devices/sound/spureverb.h @@ -1,71 +1,86 @@ // license:BSD-3-Clause // copyright-holders:pSXAuthor, R. Belmont -#ifndef _included_reverb_ - #define _included_reverb_ +#ifndef MAME_SOUND_SPUREVERB_H +#define MAME_SOUND_SPUREVERB_H - struct reverb_params - { - float band_pole, - band_gain, +#pragma once - comb_delay[2][4], - comb_gain, +#include "spu.h" - allpass_delay, - allpass_gain; - }; - class reverb - { - signed short *y[2][4], - *x[2], - *ax[2], - *ay[2], - bx1[2][2],by1[2]; - int yp, - max_delay, - sound_hz; - typedef int comb_param[2][4]; +struct spu_device::reverb_params +{ + float band_pole, + band_gain, + comb_delay[2][4], + comb_gain, + allpass_delay, + allpass_gain; +}; - void comb_allpass(signed short *sp, - signed short *dp, - const reverb_params *rp, - const int wetvol_l, - const int wetvol_r, - const unsigned int _sz); - void comb_allpass4(signed short *sp, - signed short *dp, - const comb_param &comb_delay, - const int comb_gain, - const int allpass_delay, - const int allpass_gain, - const int *rvol, - const unsigned int sz); - void comb_allpass1(signed short *sp, - signed short *dp, - const comb_param &comb_delay, - const int comb_gain, - const int allpass_delay, - const int allpass_gain, - const int *rvol, - const unsigned int sz); - void bandpass(signed short *sp, - const reverb_params *rp, - const unsigned int sz); +struct spu_device::reverb_preset +{ + const char *name; + unsigned short param[32]; + reverb_params cfg; +}; - public: - reverb(const int hz, const int maxdelay=65536); - ~reverb(); +class spu_device::reverb +{ + signed short + *y[2][4], + *x[2], + *ax[2], + *ay[2], + bx1[2][2],by1[2]; + int yp, max_delay, sound_hz; + typedef int comb_param[2][4]; - void process(signed short *output, - signed short *reverb_input, - const reverb_params *rp, - const int wetvol_l, - const int wetvol_r, - const unsigned int sz); - }; -#endif + void comb_allpass( + signed short *sp, + signed short *dp, + const reverb_params *rp, + const int wetvol_l, + const int wetvol_r, + const unsigned int _sz); + void comb_allpass4( + signed short *sp, + signed short *dp, + const comb_param &comb_delay, + const int comb_gain, + const int allpass_delay, + const int allpass_gain, + const int *rvol, + const unsigned int sz); + void comb_allpass1( + signed short *sp, + signed short *dp, + const comb_param &comb_delay, + const int comb_gain, + const int allpass_delay, + const int allpass_gain, + const int *rvol, + const unsigned int sz); + void bandpass(signed short *sp, + const reverb_params *rp, + const unsigned int sz); + +public: + reverb(const int hz, const int maxdelay=65536); + ~reverb(); + + void process( + signed short *output, + signed short *reverb_input, + const reverb_params *rp, + const int wetvol_l, + const int wetvol_r, + const unsigned int sz); + +}; + +#endif // MAME_SOUND_SPUREVERB_H diff --git a/src/devices/sound/st0016.cpp b/src/devices/sound/st0016.cpp index 9f186fa03e0..d2f0653364a 100644 --- a/src/devices/sound/st0016.cpp +++ b/src/devices/sound/st0016.cpp @@ -8,12 +8,12 @@ #include "emu.h" #include "st0016.h" -#define VERBOSE (0) -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +//#define VERBOSE 1 +#include "logmacro.h" // device type definition -const device_type ST0016 = device_creator; +DEFINE_DEVICE_TYPE(ST0016, st0016_device, "st0016", "Seta ST0016 (Audio)") //************************************************************************** @@ -25,15 +25,15 @@ const device_type ST0016 = device_creator; //------------------------------------------------- st0016_device::st0016_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ST0016, "ST0016 (Audio)", tag, owner, clock, "st0016_audio", __FILE__), - device_sound_interface(mconfig, *this), - m_stream(nullptr), - m_ram_read_cb(*this) + : device_t(mconfig, ST0016, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_stream(nullptr) + , m_ram_read_cb(*this) + , m_vpos{ 0, 0, 0, 0, 0, 0, 0, 0 } + , m_frac{ 0, 0, 0, 0, 0, 0, 0, 0 } + , m_lponce{ 0, 0, 0, 0, 0, 0, 0, 0 } { - memset(m_vpos, 0, sizeof(int)*8); - memset(m_frac, 0, sizeof(int)*8); - memset(m_lponce, 0, sizeof(int)*8); - memset(m_regs, 0, sizeof(uint8_t)*0x100); + std::fill(std::begin(m_regs), std::end(m_regs), 0); } @@ -152,13 +152,13 @@ WRITE8_MEMBER( st0016_device::st0016_snd_w ) { m_vpos[voice] = m_frac[voice] = m_lponce[voice] = 0; - LOG(("Key on V%02d: st %06x-%06x lp %06x-%06x frq %x flg %x\n", voice, + LOG("Key on V%02d: st %06x-%06x lp %06x-%06x frq %x flg %x\n", voice, m_regs[vbase+2]<<16 | m_regs[vbase+1]<<8 | m_regs[vbase+2], m_regs[vbase+0xe]<<16 | m_regs[vbase+0xd]<<8 | m_regs[vbase+0xc], m_regs[vbase+6]<<16 | m_regs[vbase+5]<<8 | m_regs[vbase+4], m_regs[vbase+0xa]<<16 | m_regs[vbase+0x9]<<8 | m_regs[vbase+0x8], m_regs[vbase+0x11]<<8 | m_regs[vbase+0x10], - m_regs[vbase+0x16])); + m_regs[vbase+0x16]); } } } diff --git a/src/devices/sound/st0016.h b/src/devices/sound/st0016.h index 8a621d0114a..6138e352368 100644 --- a/src/devices/sound/st0016.h +++ b/src/devices/sound/st0016.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont, Tomasz Slanina, David Haywood -#pragma once +#ifndef MAME_SOUND_ST0016_H +#define MAME_SOUND_ST0016_H -#ifndef __ST0016_H__ -#define __ST0016_H__ +#pragma once //************************************************************************** @@ -19,14 +19,15 @@ // ======================> st0016_device -class st0016_device : public device_t, - public device_sound_interface +class st0016_device : public device_t, public device_sound_interface { public: st0016_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~st0016_device() { } - template static devcb_base &set_soundram_callback(device_t &device, _Object object) { return downcast(device).m_ram_read_cb.set_callback(object); } + template static devcb_base &set_soundram_callback(device_t &device, Object &&cb) { return downcast(device).m_ram_read_cb.set_callback(std::forward(cb)); } + + DECLARE_READ8_MEMBER( st0016_snd_r ); + DECLARE_WRITE8_MEMBER( st0016_snd_w ); protected: // device-level overrides @@ -35,10 +36,6 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -public: - DECLARE_READ8_MEMBER( st0016_snd_r ); - DECLARE_WRITE8_MEMBER( st0016_snd_w ); - private: sound_stream *m_stream; devcb_read8 m_ram_read_cb; @@ -48,7 +45,6 @@ private: uint8_t m_regs[0x100]; }; -extern const device_type ST0016; - +DECLARE_DEVICE_TYPE(ST0016, st0016_device) -#endif /* __ST0016_H__ */ +#endif // MAME_SOUND_ST0016_H diff --git a/src/devices/sound/t6721a.cpp b/src/devices/sound/t6721a.cpp index 4cf3d2914c2..f4ea65a92b5 100644 --- a/src/devices/sound/t6721a.cpp +++ b/src/devices/sound/t6721a.cpp @@ -9,13 +9,8 @@ #include "emu.h" #include "t6721a.h" - - -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define LOG 0 +//#define VERBOSE 1 +#include "logmacro.h" @@ -24,7 +19,7 @@ //************************************************************************** // device type definition -const device_type T6721A = device_creator; +DEFINE_DEVICE_TYPE(T6721A, t6721a_device, "t6721a", "Toshiba T6721A") @@ -37,7 +32,7 @@ const device_type T6721A = device_creator; //------------------------------------------------- t6721a_device::t6721a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, T6721A, "T6721A", tag, owner, clock, "t6721a", __FILE__), + : device_t(mconfig, T6721A, tag, owner, clock), device_sound_interface(mconfig, *this), m_write_eos(*this), m_write_phi2(*this), diff --git a/src/devices/sound/t6721a.h b/src/devices/sound/t6721a.h index f9d45ffb2d4..81157e4c47f 100644 --- a/src/devices/sound/t6721a.h +++ b/src/devices/sound/t6721a.h @@ -30,10 +30,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_SOUND_T6721A_H +#define MAME_SOUND_T6721A_H -#ifndef __T6721__ -#define __T6721__ +#pragma once @@ -69,10 +69,10 @@ public: t6721a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template devcb_base &set_eos_callback(_eos eos) { return m_write_eos.set_callback(eos); } - template devcb_base &set_phi2_callback(_phi2 phi2) { return m_write_phi2.set_callback(phi2); } - template devcb_base &set_dtrd_callback(_dtrd dtrd) { return m_write_dtrd.set_callback(dtrd); } - template devcb_base &set_apd_callback(_apd apd) { return m_write_apd.set_callback(apd); } + template devcb_base &set_eos_callback(Object &&eos) { return m_write_eos.set_callback(std::forward(eos)); } + template devcb_base &set_phi2_callback(Object &&phi2) { return m_write_phi2.set_callback(std::forward(phi2)); } + template devcb_base &set_dtrd_callback(Object &&dtrd) { return m_write_dtrd.set_callback(std::forward(dtrd)); } + template devcb_base &set_apd_callback(Object &&apd) { return m_write_apd.set_callback(std::forward(apd)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -115,8 +115,6 @@ private: // device type definition -extern const device_type T6721A; - - +DECLARE_DEVICE_TYPE(T6721A, t6721a_device) -#endif +#endif // MAME_SOUND_T6721A_H diff --git a/src/devices/sound/t6w28.cpp b/src/devices/sound/t6w28.cpp index ffc966d0720..2f155644c5c 100644 --- a/src/devices/sound/t6w28.cpp +++ b/src/devices/sound/t6w28.cpp @@ -347,10 +347,11 @@ void t6w28_device::set_enable(bool enable) m_enabled = enable; } -const device_type T6W28 = device_creator; +DEFINE_DEVICE_TYPE(T6W28, t6w28_device, "t6w28", "T6W28") t6w28_device::t6w28_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, T6W28, "T6W28", tag, owner, clock, "t6w28", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, T6W28, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_channel(nullptr) { } diff --git a/src/devices/sound/t6w28.h b/src/devices/sound/t6w28.h index e40a41e4401..e62852e77b6 100644 --- a/src/devices/sound/t6w28.h +++ b/src/devices/sound/t6w28.h @@ -1,12 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol -#pragma once +#ifndef MAME_SOUND_T6W28_H +#define MAME_SOUND_T6W28_H -#ifndef __T6W28_H__ -#define __T6W28_H__ +#pragma once -class t6w28_device : public device_t, - public device_sound_interface +class t6w28_device : public device_t, public device_sound_interface { public: t6w28_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -41,7 +40,6 @@ private: bool m_enabled; }; -extern const device_type T6W28; - +DECLARE_DEVICE_TYPE(T6W28, t6w28_device) -#endif /* __T6W28_H__ */ +#endif // MAME_SOUND_T6W28_H diff --git a/src/devices/sound/tc8830f.cpp b/src/devices/sound/tc8830f.cpp index 7a997d9d19f..37a6fecdbe3 100644 --- a/src/devices/sound/tc8830f.cpp +++ b/src/devices/sound/tc8830f.cpp @@ -22,10 +22,10 @@ // device type definition -const device_type TC8830F = device_creator; +DEFINE_DEVICE_TYPE(TC8830F, tc8830f_device, "tc8830f", "Toshiba TC8830F") tc8830f_device::tc8830f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC8830F, "TC8830F", tag, owner, clock, "tc8830f", __FILE__), + : device_t(mconfig, TC8830F, tag, owner, clock), device_sound_interface(mconfig, *this), m_stream(nullptr), m_playing(false), m_address(0), diff --git a/src/devices/sound/tc8830f.h b/src/devices/sound/tc8830f.h index b34c9c35110..43784fd8f1f 100644 --- a/src/devices/sound/tc8830f.h +++ b/src/devices/sound/tc8830f.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_SOUND_TC8830F_H +#define MAME_SOUND_TC8830F_H -#ifndef __TC8830F_H__ -#define __TC8830F_H__ +#pragma once //************************************************************************** @@ -37,8 +37,6 @@ public: void reset(); void write_p(uint8_t data); - sound_stream *m_stream; - protected: // device-level overrides virtual void device_start() override; @@ -48,6 +46,8 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: + sound_stream *m_stream; + bool m_playing; uint32_t m_address; uint32_t m_stop_address; @@ -65,6 +65,6 @@ private: // device type definition -extern const device_type TC8830F; +DECLARE_DEVICE_TYPE(TC8830F, tc8830f_device) -#endif /* __TC8830F_H__ */ +#endif // MAME_SOUND_TC8830F_H diff --git a/src/devices/sound/tiaintf.cpp b/src/devices/sound/tiaintf.cpp index ea473c535c0..9df0166ca86 100644 --- a/src/devices/sound/tiaintf.cpp +++ b/src/devices/sound/tiaintf.cpp @@ -5,7 +5,7 @@ #include "tiasound.h" // device type definition -const device_type TIA = device_creator; +DEFINE_DEVICE_TYPE(TIA, tia_device, "tia_sound", "Atari TIA (Sound)") //************************************************************************** @@ -17,7 +17,7 @@ const device_type TIA = device_creator; //------------------------------------------------- tia_device::tia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TIA, "TIA", tag, owner, clock, "tia_sound", __FILE__), + : device_t(mconfig, TIA, tag, owner, clock), device_sound_interface(mconfig, *this), m_channel(nullptr), m_chip(nullptr) diff --git a/src/devices/sound/tiaintf.h b/src/devices/sound/tiaintf.h index 1995b2f55c6..8117c6f4672 100644 --- a/src/devices/sound/tiaintf.h +++ b/src/devices/sound/tiaintf.h @@ -1,9 +1,9 @@ // license:GPL-2.0+ // copyright-holders:Ron Fries,Dan Boris -#pragma once +#ifndef MAME_SOUND_TIAINTF_H +#define MAME_SOUND_TIAINTF_H -#ifndef __TIAINTF_H__ -#define __TIAINTF_H__ +#pragma once //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -21,12 +21,12 @@ // ======================> tia_device -class tia_device : public device_t, - public device_sound_interface +class tia_device : public device_t, public device_sound_interface { public: tia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tia_device() { } + + DECLARE_WRITE8_MEMBER( tia_sound_w ); protected: // device-level overrides @@ -36,15 +36,11 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -public: - DECLARE_WRITE8_MEMBER( tia_sound_w ); - private: sound_stream *m_channel; void *m_chip; }; -extern const device_type TIA; - +DECLARE_DEVICE_TYPE(TIA, tia_device) -#endif /* __TIAINTF_H__ */ +#endif // MAME_SOUND_TIAINTF_H diff --git a/src/devices/sound/tiasound.cpp b/src/devices/sound/tiasound.cpp index 944f6aa33d1..0e8275fb33f 100644 --- a/src/devices/sound/tiasound.cpp +++ b/src/devices/sound/tiasound.cpp @@ -88,6 +88,8 @@ /* LOCAL GLOBAL VARIABLE DEFINITIONS */ +namespace { + struct tia { /* structures to hold the 6 tia sound control bytes */ @@ -138,9 +140,11 @@ struct tia /* has a 13:18 ratio (of course, 13+18 = 31). This could also be */ /* implemented by using counters. */ -static const uint8_t Div31[POLY5_SIZE] = +constexpr uint8_t Div31[POLY5_SIZE] = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +} // anonymous namespace + /*****************************************************************************/ /* Module: tia_sound_w() */ diff --git a/src/devices/sound/tiasound.h b/src/devices/sound/tiasound.h index 522e95b85ab..b406bf14598 100644 --- a/src/devices/sound/tiasound.h +++ b/src/devices/sound/tiasound.h @@ -34,14 +34,14 @@ /* bear this legend. */ /* */ /*****************************************************************************/ -#pragma once +#ifndef MAME_SOUND_TIASOUND_H +#define MAME_SOUND_TIASOUND_H -#ifndef __TIASOUND_H__ -#define __TIASOUND_H__ +#pragma once void *tia_sound_init(device_t *device, int clock, int sample_rate, int gain); void tia_sound_free(void *chip); -void tia_process (void *chip, stream_sample_t *buffer, int length); +void tia_process(void *chip, stream_sample_t *buffer, int length); void tia_write(void *chip, offs_t offset, uint8_t data); -#endif /* __TIASOUND_H__ */ +#endif // MAME_SOUND_TIASOUND_H diff --git a/src/devices/sound/tms3615.cpp b/src/devices/sound/tms3615.cpp index 5d9eac4e41e..85f1ec5ece0 100644 --- a/src/devices/sound/tms3615.cpp +++ b/src/devices/sound/tms3615.cpp @@ -6,11 +6,11 @@ #define VMIN 0x0000 #define VMAX 0x7fff -static const int divisor[TMS3615_TONES] = { 478, 451, 426, 402, 379, 358, 338, 319, 301, 284, 268, 253, 239 }; +const int tms3615_device::divisor[TMS3615_TONES] = { 478, 451, 426, 402, 379, 358, 338, 319, 301, 284, 268, 253, 239 }; // device type definition -const device_type TMS3615 = device_creator; +DEFINE_DEVICE_TYPE(TMS3615, tms3615_device, "tms3615", "TMS3615") //************************************************************************** @@ -22,17 +22,17 @@ const device_type TMS3615 = device_creator; //------------------------------------------------- tms3615_device::tms3615_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TMS3615, "TMS3615", tag, owner, clock, "tms3615", __FILE__), - device_sound_interface(mconfig, *this), - m_channel(nullptr), - m_samplerate(0), - m_basefreq(0), - m_output8(0), - m_output16(0), - m_enable(0) + : device_t(mconfig, TMS3615, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_channel(nullptr) + , m_samplerate(0) + , m_basefreq(0) + , m_output8(0) + , m_output16(0) + , m_enable(0) { - memset(m_counter8, 0, TMS3615_TONES); - memset(m_counter16, 0, TMS3615_TONES); + std::fill(std::begin(m_counter8), std::end(m_counter8), 0); + std::fill(std::begin(m_counter16), std::end(m_counter16), 0); } @@ -55,8 +55,8 @@ void tms3615_device::device_start() void tms3615_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) { int samplerate = m_samplerate; - stream_sample_t *buffer8 = outputs[TMS3615_FOOTAGE_8]; - stream_sample_t *buffer16 = outputs[TMS3615_FOOTAGE_16]; + stream_sample_t *buffer8 = outputs[FOOTAGE_8]; + stream_sample_t *buffer16 = outputs[FOOTAGE_16]; while( samples-- > 0 ) { diff --git a/src/devices/sound/tms3615.h b/src/devices/sound/tms3615.h index 71ca5ac080e..88060e327c8 100644 --- a/src/devices/sound/tms3615.h +++ b/src/devices/sound/tms3615.h @@ -1,13 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Juergen Buchmueller -#pragma once - -#ifndef __TMS3615_H__ -#define __TMS3615_H__ +#ifndef MAME_SOUND_TMS3615_H +#define MAME_SOUND_TMS3615_H -#define TMS3615_TONES 13 -#define TMS3615_FOOTAGE_8 0 -#define TMS3615_FOOTAGE_16 1 +#pragma once //************************************************************************** @@ -27,12 +23,15 @@ // ======================> tms3615_device -class tms3615_device : public device_t, - public device_sound_interface +class tms3615_device : public device_t, public device_sound_interface { public: + static constexpr unsigned FOOTAGE_8 = 0; + static constexpr unsigned FOOTAGE_16 = 1; + tms3615_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tms3615_device() { } + + void enable_w(int enable); protected: // device-level overrides @@ -41,22 +40,21 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -public: - void enable_w(int enable); - private: - sound_stream *m_channel; /* returned by stream_create() */ - int m_samplerate; /* output sample rate */ - int m_basefreq; /* chip's base frequency */ - int m_counter8[TMS3615_TONES]; /* tone frequency counter for 8' */ - int m_counter16[TMS3615_TONES]; /* tone frequency counter for 16'*/ - int m_output8; /* output signal bits for 8' */ - int m_output16; /* output signal bits for 16' */ - int m_enable; /* mask which tones to play */ + static constexpr unsigned TMS3615_TONES = 13; + static const int divisor[TMS3615_TONES]; + + sound_stream *m_channel; // returned by stream_create() + int m_samplerate; // output sample rate + int m_basefreq; // chip's base frequency + int m_counter8[TMS3615_TONES]; // tone frequency counter for 8' + int m_counter16[TMS3615_TONES]; // tone frequency counter for 16' + int m_output8; // output signal bits for 8' + int m_output16; // output signal bits for 16' + int m_enable; // mask which tones to play }; [[deprecated("Use TMS36XX instead")]] extern const device_type TMS3615; - -#endif /* __TMS3615_H__ */ +#endif // MAME_SOUND_TMS3615_H diff --git a/src/devices/sound/tms36xx.cpp b/src/devices/sound/tms36xx.cpp index 5375117b444..54ec071dfa8 100644 --- a/src/devices/sound/tms36xx.cpp +++ b/src/devices/sound/tms36xx.cpp @@ -4,8 +4,8 @@ #include "tms36xx.h" #define VERBOSE 1 +#include "logmacro.h" -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) /* the frequencies are later adjusted by "* clock / FSCALE" */ #define FSCALE 1024 @@ -309,7 +309,7 @@ static const int *const tunes[] = {nullptr,tune1,tune2,tune3,tune4}; // device type definition -const device_type TMS36XX = device_creator; +DEFINE_DEVICE_TYPE(TMS36XX, tms36xx_device, "tms36xx", "TMS36XX") //************************************************************************** @@ -321,7 +321,7 @@ const device_type TMS36XX = device_creator; //------------------------------------------------- tms36xx_device::tms36xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TMS36XX, "TMS36XX", tag, owner, clock, "tms36xx", __FILE__), + : device_t(mconfig, TMS36XX, tag, owner, clock), device_sound_interface(mconfig, *this), m_subtype(nullptr), m_channel(nullptr), @@ -369,12 +369,12 @@ void tms36xx_device::device_start() } tms3617_enable(enable); - LOG(("TMS36xx samplerate %d\n", m_samplerate)); - LOG(("TMS36xx basefreq %d\n", m_basefreq)); - LOG(("TMS36xx decay %d,%d,%d,%d,%d,%d\n", + LOG("TMS36xx samplerate %d\n", m_samplerate); + LOG("TMS36xx basefreq %d\n", m_basefreq); + LOG("TMS36xx decay %d,%d,%d,%d,%d,%d\n", m_decay[0], m_decay[1], m_decay[2], - m_decay[3], m_decay[4], m_decay[5])); - LOG(("TMS36xx speed %d\n", m_speed)); + m_decay[3], m_decay[4], m_decay[5]); + LOG("TMS36xx speed %d\n", m_speed); save_item(NAME(m_octave)); save_item(NAME(m_tune_counter)); @@ -460,7 +460,7 @@ void tms36xx_device::mm6221aa_tune_w(int tune) if( tune == m_tune_num ) return; - LOG(("%s tune:%X\n", m_subtype, tune)); + LOG("%s tune:%X\n", m_subtype, tune); /* update the stream before changing the tune */ m_channel->update(); @@ -483,7 +483,7 @@ void tms36xx_device::tms36xx_note_w(int octave, int note) if (note > 12) return; - LOG(("%s octave:%X note:%X\n", m_subtype, octave, note)); + LOG("%s octave:%X note:%X\n", m_subtype, octave, note); /* update the stream before changing the tune */ m_channel->update(); @@ -532,7 +532,7 @@ void tms36xx_device::tms3617_enable(int enable) /* update the stream before changing the tune */ m_channel->update(); - LOG(("%s enable voices", m_subtype)); + LOG("%s enable voices", m_subtype); for (i = 0; i < 6; i++) { if (enable & (1 << i)) @@ -541,17 +541,17 @@ void tms36xx_device::tms3617_enable(int enable) switch (i) { - case 0: LOG((" 16'")); break; - case 1: LOG((" 8'")); break; - case 2: LOG((" 5 1/3'")); break; - case 3: LOG((" 4'")); break; - case 4: LOG((" 2 2/3'")); break; - case 5: LOG((" 2'")); break; + case 0: LOG(" 16'"); break; + case 1: LOG(" 8'"); break; + case 2: LOG(" 5 1/3'"); break; + case 3: LOG(" 4'"); break; + case 4: LOG(" 2 2/3'"); break; + case 5: LOG(" 2'"); break; } } } /* set the enable mask and number of active voices */ m_enable = enable; m_voices = bits; - LOG(("%s\n", bits ? "" : " none")); + LOG("%s\n", bits ? "" : " none"); } diff --git a/src/devices/sound/tms36xx.h b/src/devices/sound/tms36xx.h index 07b15cb45a4..5eb471980d7 100644 --- a/src/devices/sound/tms36xx.h +++ b/src/devices/sound/tms36xx.h @@ -1,21 +1,22 @@ // license:BSD-3-Clause // copyright-holders:Juergen Buchmueller -#pragma once +#ifndef MAME_SOUND_TMS36XX_H +#define MAME_SOUND_TMS36XX_H -#ifndef __TMS36XX_H__ -#define __TMS36XX_H__ +#pragma once //************************************************************************** // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_TMS36XX_ADD(_tag, _clock) \ - MCFG_DEVICE_ADD(_tag, TMS36XX, _clock) -#define MCFG_TMS36XX_REPLACE(_tag, _clock) \ - MCFG_DEVICE_REPLACE(_tag, TMS36XX, _clock) +#define MCFG_TMS36XX_ADD(tag, clock) \ + MCFG_DEVICE_ADD((tag), TMS36XX, (clock)) -#define MCFG_TMS36XX_TYPE(_type) \ - tms36xx_device::set_subtype(*device, _type); +#define MCFG_TMS36XX_REPLACE(tag, clock) \ + MCFG_DEVICE_REPLACE((tag), TMS36XX, (clock)) + +#define MCFG_TMS36XX_TYPE(type) \ + tms36xx_device::set_subtype(*device, (tms36xx_device::subtype::type)); #define MCFG_TMS36XX_DECAY_TIMES(_dec0, _dec1, _dec2, _dec3, _dec4, _dec5) \ tms36xx_device::set_decays(*device, _dec0, _dec1, _dec2, _dec3, _dec4, _dec5); @@ -28,13 +29,6 @@ // TYPE DEFINITIONS //************************************************************************** -// subtypes -#define MM6221AA 21 // Phoenix (fixed melodies) -#define TMS3615 15 // Naughty Boy, Pleiads (13 notes, one output) -#define TMS3617 17 // Monster Bash (13 notes, six outputs) - -#define TMS36XX_VMIN 0x0000 -#define TMS36XX_VMAX 0x7fff // ======================> tms36xx_device @@ -43,25 +37,31 @@ class tms36xx_device : public device_t, public device_sound_interface { public: + enum class subtype + { + MM6221AA = 21, // Phoenix (fixed melodies) + TMS3615 = 15, // Naughty Boy, Pleiads (13 notes, one output) + TMS3617 = 17 // Monster Bash (13 notes, six outputs) + }; + tms36xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tms36xx_device() { } - static void set_subtype(device_t &device, int type) + static void set_subtype(device_t &device, subtype type) { tms36xx_device &dev = downcast(device); switch (type) { - case MM6221AA: + case subtype::MM6221AA: dev.m_subtype = "MM6221AA"; break; - case TMS3615: + case subtype::TMS3615: dev.m_subtype = "TMS3615"; break; - case TMS3617: + case subtype::TMS3617: dev.m_subtype = "TMS3617"; break; default: - fatalerror("Invalid TMS36XX type: %d\n", type); + fatalerror("Invalid TMS36XX type: %d\n", int(type)); break; } } @@ -81,6 +81,9 @@ public: } protected: + static constexpr unsigned TMS36XX_VMIN = 0x0000; + static constexpr unsigned TMS36XX_VMAX = 0x7fff; + // device-level overrides virtual void device_start() override; @@ -132,6 +135,7 @@ private: }; extern const device_type TMS36XX; +DECLARE_DEVICE_TYPE(TMS36XX, tms36xx_device) -#endif /* __TMS36XX_H__ */ +#endif // MAME_SOUND_TMS36XX_H diff --git a/src/devices/sound/tms5110.cpp b/src/devices/sound/tms5110.cpp index 74ba519d649..1c69dc8d2d8 100644 --- a/src/devices/sound/tms5110.cpp +++ b/src/devices/sound/tms5110.cpp @@ -14,7 +14,7 @@ Todo: - implement CS - - TMS5110_CMD_TEST_TALK is only partially implemented + - CMD_TEST_TALK is only partially implemented TMS5100: @@ -147,35 +147,6 @@ static int16_t clip_analog(int16_t cliptemp); #define DEBUG_5110 0 -void tms5110_device::set_variant(int variant) -{ - switch (variant) - { - case TMS5110_IS_TMC0281: - m_coeff = &T0280B_0281A_coeff; - break; - case TMS5110_IS_TMC0281D: - m_coeff = &T0280D_0281D_coeff; - break; - case TMS5110_IS_CD2801: - m_coeff = &T0280F_2801A_coeff; - break; - case TMS5110_IS_M58817: - m_coeff = &M58817_coeff; - break; - case TMS5110_IS_CD2802: - m_coeff = &T0280F_2802_coeff; - break; - case TMS5110_IS_TMS5110A: - m_coeff = &tms5110a_coeff; - break; - default: - fatalerror("Unknown variant in tms5110_create\n"); - } - - m_variant = variant; -} - void tms5110_device::new_int_write(uint8_t rc, uint8_t m0, uint8_t m1, uint8_t addr) { if (!m_m0_cb.isnull()) @@ -213,8 +184,6 @@ uint8_t tms5110_device::new_int_read() void tms5110_device::register_for_save_states() { - save_item(NAME(m_variant)); - save_item(NAME(m_PDC)); save_item(NAME(m_CTL_pins)); save_item(NAME(m_SPEN)); @@ -234,7 +203,7 @@ void tms5110_device::register_for_save_states() save_item(NAME(m_new_frame_energy_idx)); save_item(NAME(m_new_frame_pitch_idx)); save_item(NAME(m_new_frame_k_idx)); -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5110_PERFECT_INTERPOLATION_HACK save_item(NAME(m_old_frame_energy_idx)); save_item(NAME(m_old_frame_pitch_idx)); save_item(NAME(m_old_frame_k_idx)); @@ -369,7 +338,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size) //m_RNG = 0x1234; // end HACK -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5110_PERFECT_INTERPOLATION_HACK /* remember previous frame energy, pitch, and coefficients */ m_old_frame_energy_idx = m_new_frame_energy_idx; m_old_frame_pitch_idx = m_new_frame_pitch_idx; @@ -381,10 +350,8 @@ void tms5110_device::process(int16_t *buffer, unsigned int size) parse_frame(); /* if the new frame is a stop frame, unset both TALK and SPEN (via TCON). TALKD remains active while the energy is ramping to 0. */ - if (NEW_FRAME_STOP_FLAG == 1) - { + if (NEW_FRAME_STOP_FLAG()) m_TALK = m_SPEN = 0; - } /* in all cases where interpolation would be inhibited, set the inhibit flag; otherwise clear it. * Interpolation inhibit cases: @@ -393,18 +360,18 @@ void tms5110_device::process(int16_t *buffer, unsigned int size) * Old frame was unvoiced, new is voiced * Old frame was unvoiced, new frame is silence/zero energy (non-existent on tms51xx rev D and F (present and working on tms52xx, present but buggy on tms51xx rev A and B)) */ - if ( ((OLD_FRAME_UNVOICED_FLAG == 0) && NEW_FRAME_UNVOICED_FLAG) - || ((OLD_FRAME_UNVOICED_FLAG == 1) && !NEW_FRAME_UNVOICED_FLAG) - || ((OLD_FRAME_SILENCE_FLAG == 1) && !NEW_FRAME_SILENCE_FLAG) ) - //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) ) //TMS51xx INTERP BUG1 - //|| ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) ) + if ( ((OLD_FRAME_UNVOICED_FLAG() == 0) && NEW_FRAME_UNVOICED_FLAG()) + || ((OLD_FRAME_UNVOICED_FLAG() == 1) && !NEW_FRAME_UNVOICED_FLAG()) + || ((OLD_FRAME_SILENCE_FLAG() == 1) && !NEW_FRAME_SILENCE_FLAG()) ) + //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG() == 1) && NEW_FRAME_SILENCE_FLAG()) ) //TMS51xx INTERP BUG1 + //|| ((OLD_FRAME_UNVOICED_FLAG() == 1) && NEW_FRAME_SILENCE_FLAG()) ) m_inhibit = 1; else // normal frame, normal interpolation m_inhibit = 0; #ifdef DEBUG_GENERATION /* Debug info for current parsed frame */ - fprintf(stderr, "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG, NEW_FRAME_SILENCE_FLAG, OLD_FRAME_UNVOICED_FLAG, NEW_FRAME_UNVOICED_FLAG); + fprintf(stderr, "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG(), NEW_FRAME_SILENCE_FLAG(), OLD_FRAME_UNVOICED_FLAG(), NEW_FRAME_UNVOICED_FLAG()); fprintf(stderr,"Processing new frame: "); if (m_inhibit == 0) fprintf(stderr, "Normal Frame\n"); @@ -431,7 +398,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size) else // Not a new frame, just interpolate the existing frame. { int inhibit_state = ((m_inhibit==1)&&(m_IP != 0)); // disable inhibit when reaching the last interp period, but don't overwrite the m_inhibit value -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5110_PERFECT_INTERPOLATION_HACK int samples_per_frame = m_subc_reload?175:266; // either (13 A cycles + 12 B cycles) * 7 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 7 interps for SPKSLOW //int samples_per_frame = m_subc_reload?200:304; // either (13 A cycles + 12 B cycles) * 8 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 8 interps for SPKSLOW int current_sample = (m_subcycle - m_subc_reload)+(m_PC*(3-m_subc_reload))+((m_subc_reload?25:38)*((m_IP-1)&7)); @@ -483,7 +450,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size) } // calculate the output - if (OLD_FRAME_UNVOICED_FLAG == 1) + if (OLD_FRAME_UNVOICED_FLAG() == 1) { // generate unvoiced samples here if (m_RNG & 1) @@ -491,7 +458,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size) else m_excitation_data = 0x40; } - else /* (OLD_FRAME_UNVOICED_FLAG == 0) */ + else /* (OLD_FRAME_UNVOICED_FLAG() == 0) */ { // generate voiced samples here /* US patent 4331836 Figure 14B shows, and logic would hold, that a pitch based chirp @@ -524,7 +491,7 @@ void tms5110_device::process(int16_t *buffer, unsigned int size) for (i=0; i<10; i++) fprintf(stderr,"K%d:%04d ", i+1, m_current_k[i]); fprintf(stderr,"Out:%06d ", this_sample); -//#ifdef PERFECT_INTERPOLATION_HACK +//#ifdef TMS5110_PERFECT_INTERPOLATION_HACK // fprintf(stderr,"%d%d%d%d",m_old_zpar,m_zpar,m_old_uv_zpar,m_uv_zpar); //#else // fprintf(stderr,"x%dx%d",m_zpar,m_uv_zpar); @@ -569,9 +536,9 @@ void tms5110_device::process(int16_t *buffer, unsigned int size) if (m_IP == 7) // RESETL4 { // Latch OLDE and OLDP - //if (OLD_FRAME_SILENCE_FLAG) m_uv_zpar = 0; // TMS51xx INTERP BUG2 - OLD_FRAME_SILENCE_FLAG = NEW_FRAME_SILENCE_FLAG; // m_OLDE - OLD_FRAME_UNVOICED_FLAG = NEW_FRAME_UNVOICED_FLAG; // m_OLDP + //if (OLD_FRAME_SILENCE_FLAG()) m_uv_zpar = 0; // TMS51xx INTERP BUG2 + OLD_FRAME_SILENCE_FLAG() = NEW_FRAME_SILENCE_FLAG() ? 1 : 0; // m_OLDE + OLD_FRAME_UNVOICED_FLAG() = NEW_FRAME_UNVOICED_FLAG() ? 1 : 0; // m_OLDP /* if TALK was clear last frame, halt speech now, since TALKD (latched from TALK on new frame) just went inactive. */ #ifdef DEBUG_GENERATION if ((!m_TALK) && (!m_SPEN)) @@ -827,7 +794,7 @@ void tms5110_device::PDC_set(int data) #endif switch (m_CTL_pins & 0xe) /*CTL1 - don't care*/ { - case TMS5110_CMD_RESET: + case CMD_RESET: #ifdef DEBUG_COMMAND_DUMP fprintf(stderr,"RESET\n"); #endif @@ -835,21 +802,21 @@ void tms5110_device::PDC_set(int data) reset(); break; - case TMS5110_CMD_LOAD_ADDRESS: + case CMD_LOAD_ADDRESS: #ifdef DEBUG_COMMAND_DUMP fprintf(stderr,"LOAD ADDRESS\n"); #endif m_next_is_address = true; break; - case TMS5110_CMD_OUTPUT: + case CMD_OUTPUT: #ifdef DEBUG_COMMAND_DUMP fprintf(stderr,"OUTPUT (from read-bit buffer)\n"); #endif m_state = CTL_STATE_NEXT_OUTPUT; break; - case TMS5110_CMD_SPKSLOW: + case CMD_SPKSLOW: #ifdef DEBUG_COMMAND_DUMP fprintf(stderr,"SPKSLOW\n"); #endif @@ -863,14 +830,14 @@ void tms5110_device::PDC_set(int data) m_uv_zpar = 1; // zero k4-k10 as well m_OLDE = 1; // 'silence/zpar' frames are zero energy m_OLDP = 1; // 'silence/zpar' frames are zero pitch -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5110_PERFECT_INTERPOLATION_HACK m_old_zpar = 1; // zero all the old parameters m_old_uv_zpar = 1; // zero old k4-k10 as well #endif m_subc_reload = 0; // SPKSLOW means this is 0 break; - case TMS5110_CMD_READ_BIT: + case CMD_READ_BIT: #ifdef DEBUG_COMMAND_DUMP fprintf(stderr,"READ BIT\n"); #endif @@ -887,7 +854,7 @@ void tms5110_device::PDC_set(int data) } break; - case TMS5110_CMD_SPEAK: + case CMD_SPEAK: #ifdef DEBUG_COMMAND_DUMP fprintf(stderr,"SPEAK\n"); #endif @@ -901,14 +868,14 @@ void tms5110_device::PDC_set(int data) m_uv_zpar = 1; // zero k4-k10 as well m_OLDE = 1; // 'silence/zpar' frames are zero energy m_OLDP = 1; // 'silence/zpar' frames are zero pitch -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5110_PERFECT_INTERPOLATION_HACK m_old_zpar = 1; // zero all the old parameters m_old_uv_zpar = 1; // zero old k4-k10 as well #endif m_subc_reload = 1; // SPEAK means this is 1 break; - case TMS5110_CMD_READ_BRANCH: + case CMD_READ_BRANCH: #ifdef DEBUG_COMMAND_DUMP fprintf(stderr,"READ AND BRANCH\n"); #endif @@ -921,7 +888,7 @@ void tms5110_device::PDC_set(int data) m_schedule_dummy_read = false; break; - case TMS5110_CMD_TEST_TALK: + case CMD_TEST_TALK: #ifdef DEBUG_COMMAND_DUMP fprintf(stderr,"TEST TALK\n"); #endif @@ -951,7 +918,7 @@ void tms5110_device::PDC_set(int data) void tms5110_device::parse_frame() { int i, rep_flag; -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5110_PERFECT_INTERPOLATION_HACK m_old_uv_zpar = m_uv_zpar; m_old_zpar = m_zpar; #endif @@ -982,7 +949,7 @@ void tms5110_device::parse_frame() fprintf(stderr," "); #endif // if the new frame is unvoiced, be sure to zero out the k5-k10 parameters - m_uv_zpar = NEW_FRAME_UNVOICED_FLAG; + m_uv_zpar = NEW_FRAME_UNVOICED_FLAG() ? 1 : 0; // if this is a repeat frame, just do nothing, it will reuse the old coefficients if (rep_flag) return; @@ -1049,7 +1016,29 @@ static const unsigned int example_word_TEN[619]={ void tms5110_device::device_start() { - set_variant(TMS5110_IS_TMS5110A); + switch (m_variant) + { + case TMS5110_IS_TMC0281: + m_coeff = &T0280B_0281A_coeff; + break; + case TMS5110_IS_TMC0281D: + m_coeff = &T0280D_0281D_coeff; + break; + case TMS5110_IS_CD2801: + m_coeff = &T0280F_2801A_coeff; + break; + case TMS5110_IS_M58817: + m_coeff = &M58817_coeff; + break; + case TMS5110_IS_CD2802: + m_coeff = &T0280F_2802_coeff; + break; + case TMS5110_IS_TMS5110A: + m_coeff = &tms5110a_coeff; + break; + default: + fatalerror("Unknown variant in tms5110_create\n"); + } /* resolve lines */ m_m0_cb.resolve(); @@ -1067,86 +1056,6 @@ void tms5110_device::device_start() register_for_save_states(); } -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void tms5100_device::device_start() -{ - tms5110_device::device_start(); - set_variant(TMS5110_IS_TMC0281); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void tmc0281_device::device_start() -{ - tms5110_device::device_start(); - set_variant(TMS5110_IS_TMC0281); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void tms5100a_device::device_start() -{ - tms5110_device::device_start(); - set_variant(TMS5110_IS_TMC0281D); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void tmc0281d_device::device_start() -{ - tms5110_device::device_start(); - set_variant(TMS5110_IS_TMC0281D); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void cd2801_device::device_start() -{ - tms5110_device::device_start(); - set_variant(TMS5110_IS_CD2801); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void cd2802_device::device_start() -{ - tms5110_device::device_start(); - set_variant(TMS5110_IS_CD2802); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void tms5110a_device::device_start() -{ - tms5110_device::device_start(); - set_variant(TMS5110_IS_TMS5110A); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void m58817_device::device_start() -{ - tms5110_device::device_start(); - set_variant(TMS5110_IS_M58817); -} - //------------------------------------------------- // device_reset - device-specific reset @@ -1164,7 +1073,7 @@ void tms5110_device::device_reset() m_PDC = 0; /* initialize the energy/pitch/k states */ -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5110_PERFECT_INTERPOLATION_HACK m_old_frame_energy_idx = m_old_frame_pitch_idx = 0; memset(m_old_frame_k_idx, 0, sizeof(m_old_frame_k_idx)); m_old_zpar = m_old_uv_zpar = 0; @@ -1256,8 +1165,8 @@ READ8_MEMBER( tms5110_device::ctl_r ) m_stream->update(); if (m_state == CTL_STATE_TTALK_OUTPUT) { - if (DEBUG_5110) logerror("Status read while outputting Test Talk (status=%2d)\n", TALK_STATUS); - return (TALK_STATUS << 0); /*CTL1 = still talking ? */ + if (DEBUG_5110) logerror("Status read while outputting Test Talk (status=%2d)\n", TALK_STATUS()); + return (TALK_STATUS() << 0); /*CTL1 = still talking ? */ } else if (m_state == CTL_STATE_OUTPUT) { @@ -1275,7 +1184,7 @@ READ8_MEMBER( m58817_device::status_r ) { /* bring up to date first */ m_stream->update(); - return (TALK_STATUS << 0); /*CTL1 = still talking ? */ + return (TALK_STATUS() << 0); /*CTL1 = still talking ? */ } /****************************************************************************** @@ -1521,17 +1430,27 @@ WRITE_LINE_MEMBER( tmsprom_device::enable_w ) TMS 5110 device definition -------------------------------------------------*/ -const device_type TMS5110 = device_creator; +DEFINE_DEVICE_TYPE(TMS5110, tms5110_device, "tms5110", "TMS5110") +DEFINE_DEVICE_TYPE(TMS5100, tms5100_device, "tms5100", "TMS5100") +DEFINE_DEVICE_TYPE(TMC0281, tmc0281_device, "tmc0281", "TMC0281") +DEFINE_DEVICE_TYPE(TMS5100A, tms5100a_device, "tms5100a", "TMS5100A") +DEFINE_DEVICE_TYPE(TMC0281D, tmc0281d_device, "tmc0281d", "TMC0281D") +DEFINE_DEVICE_TYPE(CD2801, cd2801_device, "cd2801", "CD2801") +DEFINE_DEVICE_TYPE(CD2802, cd2802_device, "cd2802", "CD2802") +DEFINE_DEVICE_TYPE(TMS5110A, tms5110a_device, "tms5110a", "TMS5110A") +DEFINE_DEVICE_TYPE(M58817, m58817_device, "m58817", "M58817") + tms5110_device::tms5110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5110_device(mconfig, TMS5110, "TMS5110", tag, owner, clock, "tms5110", __FILE__) + : tms5110_device(mconfig, TMS5110, tag, owner, clock, TMS5110_IS_TMS5110A) { } -tms5110_device::tms5110_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +tms5110_device::tms5110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant) + : device_t(mconfig, type, tag, owner, clock) , device_sound_interface(mconfig, *this) , m_table(*this, DEVICE_SELF) + , m_variant(variant) , m_m0_cb(*this) , m_m1_cb(*this) , m_addr_cb(*this) @@ -1541,67 +1460,58 @@ tms5110_device::tms5110_device(const machine_config &mconfig, device_type type, } -const device_type TMS5100 = device_creator; - tms5100_device::tms5100_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5110_device(mconfig, TMS5100, "TMS5100", tag, owner, clock, "tms5100", __FILE__) + : tms5110_device(mconfig, TMS5100, tag, owner, clock, TMS5110_IS_TMC0281) { } -const device_type TMC0281 = device_creator; tmc0281_device::tmc0281_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5110_device(mconfig, TMC0281, "TMC0281", tag, owner, clock, "tmc0281", __FILE__) + : tms5110_device(mconfig, TMC0281, tag, owner, clock, TMS5110_IS_TMC0281) { } -const device_type TMS5100A = device_creator; tms5100a_device::tms5100a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5110_device(mconfig, TMS5100A, "TMS5100A", tag, owner, clock, "tms5100a", __FILE__) + : tms5110_device(mconfig, TMS5100A, tag, owner, clock, TMS5110_IS_TMC0281D) { } -const device_type TMC0281D = device_creator; tmc0281d_device::tmc0281d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5110_device(mconfig, TMC0281D, "TMC0281D", tag, owner, clock, "tmc0281d", __FILE__) + : tms5110_device(mconfig, TMC0281D, tag, owner, clock, TMS5110_IS_TMC0281D) { } -const device_type CD2801 = device_creator; cd2801_device::cd2801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5110_device(mconfig, CD2801, "CD2801", tag, owner, clock, "cd2801", __FILE__) + : tms5110_device(mconfig, CD2801, tag, owner, clock, TMS5110_IS_CD2801) { } -const device_type CD2802 = device_creator; cd2802_device::cd2802_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5110_device(mconfig, CD2802, "CD2802", tag, owner, clock, "cd2802", __FILE__) + : tms5110_device(mconfig, CD2802, tag, owner, clock, TMS5110_IS_CD2802) { } -const device_type TMS5110A = device_creator; tms5110a_device::tms5110a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5110_device(mconfig, TMS5110A, "TMS5110A", tag, owner, clock, "tms5110a", __FILE__) + : tms5110_device(mconfig, TMS5110A, tag, owner, clock, TMS5110_IS_TMS5110A) { } -const device_type M58817 = device_creator; m58817_device::m58817_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5110_device(mconfig, M58817, "M58817", tag, owner, clock, "m58817", __FILE__) + : tms5110_device(mconfig, M58817, tag, owner, clock, TMS5110_IS_M58817) { } -const device_type TMSPROM = device_creator; +DEFINE_DEVICE_TYPE(TMSPROM, tmsprom_device, "tmsprom", "TMSPROM") tmsprom_device::tmsprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TMSPROM, "TMSPROM", tag, owner, clock, "tmsprom", __FILE__), + : device_t(mconfig, TMSPROM, tag, owner, clock), m_rom(*this, DEVICE_SELF), m_prom(*this, finder_base::DUMMY_TAG, 0x20), m_rom_size(0), diff --git a/src/devices/sound/tms5110.h b/src/devices/sound/tms5110.h index 02c010bc66d..5fe20f8fcc2 100644 --- a/src/devices/sound/tms5110.h +++ b/src/devices/sound/tms5110.h @@ -1,30 +1,13 @@ // license:BSD-3-Clause // copyright-holders:Frank Palazzolo, Jarek Burczynski, Aaron Giles, Jonathan Gevaryahu, Couriersud -#pragma once +#ifndef MAME_SOUND_TMS5110_H +#define MAME_SOUND_TMS5110_H -#ifndef __TMS5110_H__ -#define __TMS5110_H__ +#pragma once /* HACK: if defined, uses impossibly perfect 'straight line' interpolation */ -#undef PERFECT_INTERPOLATION_HACK - -/* TMS5110 commands */ - /* CTL8 CTL4 CTL2 CTL1 | PDC's */ - /* (MSB) (LSB) | required */ -#define TMS5110_CMD_RESET (0) /* 0 0 0 x | 1 */ -#define TMS5110_CMD_LOAD_ADDRESS (2) /* 0 0 1 x | 2 */ -#define TMS5110_CMD_OUTPUT (4) /* 0 1 0 x | 3 */ -#define TMS5110_CMD_SPKSLOW (6) /* 0 1 1 x | 1 */ -/* Note: TMS5110_CMD_SPKSLOW is undocumented on the datasheets, it only appears - on the patents. It might not actually work properly on some of the real - chips as manufactured. Acts the same as CMD_SPEAK, but makes the - interpolator take two A cycles wherever it would normally only take one, - effectively making speech of any given word take 1.5x as long as normal. */ -#define TMS5110_CMD_READ_BIT (8) /* 1 0 0 x | 1 */ -#define TMS5110_CMD_SPEAK (10) /* 1 0 1 x | 1 */ -#define TMS5110_CMD_READ_BRANCH (12) /* 1 1 0 x | 1 */ -#define TMS5110_CMD_TEST_TALK (14) /* 1 1 1 x | 3 */ +#undef TMS5110_PERFECT_INTERPOLATION_HACK /* clock rate = 80 * output sample rate, */ /* usually 640000 for 8000 Hz sample rate or */ @@ -46,31 +29,47 @@ devcb = &tms5110_device::set_romclk_callback(*device, DEVCB_##_devcb); -class tms5110_device : public device_t, - public device_sound_interface +class tms5110_device : public device_t, public device_sound_interface { public: + /* TMS5110 commands */ + /* CTL8 CTL4 CTL2 CTL1 | PDC's */ + /* (MSB) (LSB) | required */ + static constexpr uint8_t CMD_RESET = 0; /* 0 0 0 x | 1 */ + static constexpr uint8_t CMD_LOAD_ADDRESS = 2; /* 0 0 1 x | 2 */ + static constexpr uint8_t CMD_OUTPUT = 4; /* 0 1 0 x | 3 */ + static constexpr uint8_t CMD_SPKSLOW = 6; /* 0 1 1 x | 1 */ + /* Note: TMS5110_CMD_SPKSLOW is undocumented on the datasheets, it only appears + on the patents. It might not actually work properly on some of the real + chips as manufactured. Acts the same as CMD_SPEAK, but makes the + interpolator take two A cycles wherever it would normally only take one, + effectively making speech of any given word take 1.5x as long as normal. */ + static constexpr uint8_t CMD_READ_BIT = 8; /* 1 0 0 x | 1 */ + static constexpr uint8_t CMD_SPEAK = 10; /* 1 0 1 x | 1 */ + static constexpr uint8_t CMD_READ_BRANCH = 12; /* 1 1 0 x | 1 */ + static constexpr uint8_t CMD_TEST_TALK = 14; /* 1 1 1 x | 3 */ + tms5110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - tms5110_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - template static devcb_base &set_m0_callback(device_t &device, _Object object) { return downcast(device).m_m0_cb.set_callback(object); } - template static devcb_base &set_m1_callback(device_t &device, _Object object) { return downcast(device).m_m1_cb.set_callback(object); } - template static devcb_base &set_addr_callback(device_t &device, _Object object) { return downcast(device).m_addr_cb.set_callback(object); } - template static devcb_base &set_data_callback(device_t &device, _Object object) { return downcast(device).m_data_cb.set_callback(object); } - template static devcb_base &set_romclk_callback(device_t &device, _Object object) { return downcast(device).m_romclk_cb.set_callback(object); } + template static devcb_base &set_m0_callback(device_t &device, Object &&cb) { return downcast(device).m_m0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_m1_callback(device_t &device, Object &&cb) { return downcast(device).m_m1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_addr_callback(device_t &device, Object &&cb) { return downcast(device).m_addr_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_data_callback(device_t &device, Object &&cb) { return downcast(device).m_data_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_romclk_callback(device_t &device, Object &&cb) { return downcast(device).m_romclk_cb.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER( ctl_w ); DECLARE_READ8_MEMBER( ctl_r ); DECLARE_WRITE_LINE_MEMBER( pdc_w ); - /* this is only used by cvs.c - * it is not related at all to the speech generation - * and conflicts with the new rom controller interface. - */ + // this is only used by cvs.c + // it is not related at all to the speech generation and conflicts with the new ROM controller interface. DECLARE_READ8_MEMBER( romclk_hack_r ); void set_frequency(int frequency); + protected: + tms5110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -80,11 +79,10 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - void set_variant(int variant); + uint8_t TALK_STATUS() const { return m_SPEN | m_TALKD; } uint8_t m_SPEN; /* set on speak command, cleared on stop command or reset command */ uint8_t m_TALK; /* set on SPEN & RESETL4(pc12->pc0 transition), cleared on stop command or reset command */ -#define TALK_STATUS (m_SPEN|m_TALKD) uint8_t m_TALKD; /* TALK(TCON) value, latched every RESETL4 */ sound_stream *m_stream; @@ -100,12 +98,19 @@ private: void PDC_set(int data); void parse_frame(); + uint8_t &OLD_FRAME_SILENCE_FLAG() { return m_OLDE; } // 1 if E=0, 0 otherwise. + uint8_t &OLD_FRAME_UNVOICED_FLAG() { return m_OLDP; } // 1 if P=0 (unvoiced), 0 if voiced + + bool NEW_FRAME_STOP_FLAG() const { return m_new_frame_energy_idx == 0x0F; } // 1 if this is a stop (Energy = 0x0F) frame + bool NEW_FRAME_SILENCE_FLAG() const { return m_new_frame_energy_idx == 0; } // ditto as above + bool NEW_FRAME_UNVOICED_FLAG() const { return m_new_frame_pitch_idx == 0; } // ditto as above + // internal state /* table */ optional_region_ptr m_table; /* coefficient tables */ - int m_variant; /* Variant of the 5110 - see tms5110.h */ + const int m_variant; /* Variant of the 5110 - see tms5110.h */ /* coefficient tables */ const struct tms5100_coeffs *m_coeff; @@ -134,21 +139,16 @@ private: devcb_write_line m_romclk_cb; // rom clock - Only used to drive the data lines /* these contain data describing the current and previous voice frames */ -#define OLD_FRAME_SILENCE_FLAG m_OLDE // 1 if E=0, 0 otherwise. -#define OLD_FRAME_UNVOICED_FLAG m_OLDP // 1 if P=0 (unvoiced), 0 if voiced uint8_t m_OLDE; uint8_t m_OLDP; -#define NEW_FRAME_STOP_FLAG (m_new_frame_energy_idx == 0xF) // 1 if this is a stop (Energy = 0xF) frame -#define NEW_FRAME_SILENCE_FLAG (m_new_frame_energy_idx == 0) // ditto as above -#define NEW_FRAME_UNVOICED_FLAG (m_new_frame_pitch_idx == 0) // ditto as above uint8_t m_new_frame_energy_idx; uint8_t m_new_frame_pitch_idx; uint8_t m_new_frame_k_idx[10]; /* these are all used to contain the current state of the sound generation */ -#ifndef PERFECT_INTERPOLATION_HACK +#ifndef TMS5110_PERFECT_INTERPOLATION_HACK int16_t m_current_energy; int16_t m_current_pitch; int16_t m_current_k[10]; @@ -200,84 +200,55 @@ private: emu_timer *m_romclk_hack_timer; }; -extern const device_type TMS5110; class tms5100_device : public tms5110_device { public: tms5100_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type TMS5100; class tmc0281_device : public tms5110_device { public: tmc0281_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type TMC0281; class tms5100a_device : public tms5110_device { public: tms5100a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type TMS5100A; class tmc0281d_device : public tms5110_device { public: tmc0281d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type TMC0281D; class cd2801_device : public tms5110_device { public: cd2801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type CD2801; class cd2802_device : public tms5110_device { public: cd2802_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type CD2802; class tms5110a_device : public tms5110_device { public: tms5110a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type TMS5110A; class m58817_device : public tms5110_device { @@ -285,13 +256,18 @@ public: m58817_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_READ8_MEMBER( status_r ); - -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type M58817; + +DECLARE_DEVICE_TYPE(TMS5110, tms5110_device) +DECLARE_DEVICE_TYPE(TMS5100, tms5100_device) +DECLARE_DEVICE_TYPE(TMC0281, tmc0281_device) +DECLARE_DEVICE_TYPE(TMS5100A, tms5100a_device) +DECLARE_DEVICE_TYPE(TMC0281D, tmc0281d_device) +DECLARE_DEVICE_TYPE(CD2801, cd2801_device) +DECLARE_DEVICE_TYPE(CD2802, cd2802_device) +DECLARE_DEVICE_TYPE(TMS5110A, tms5110a_device) +DECLARE_DEVICE_TYPE(M58817, m58817_device) @@ -360,7 +336,7 @@ private: emu_timer *m_romclk_timer; }; -extern const device_type TMSPROM; +DECLARE_DEVICE_TYPE(TMSPROM, tmsprom_device) #define MCFG_TMSPROM_REGION(_region) \ tmsprom_device::set_region(*device, "^" _region); @@ -395,4 +371,4 @@ extern const device_type TMSPROM; #define MCFG_TMSPROM_CTL_CB(_devcb) \ devcb = &tmsprom_device::set_ctl_callback(*device, DEVCB_##_devcb); -#endif /* __TMS5110_H__ */ +#endif // MAME_SOUND_TMS5110_H diff --git a/src/devices/sound/tms5110r.hxx b/src/devices/sound/tms5110r.hxx index 7b185fa98e2..9547427e86c 100644 --- a/src/devices/sound/tms5110r.hxx +++ b/src/devices/sound/tms5110r.hxx @@ -392,8 +392,8 @@ static const struct tms5100_coeffs T0280D_0281D_coeff = Decapped by Digshadow in 2014 http://siliconpr0n.org/map/ti/tmc0280fnl/ Digitally dumped via PROMOUT by PlgDavid in 2014 The coefficients are exactly the same as the TMS5200. - The coefficients also come from US Patents 4,403,965 and 4,946,391 (with - one typo in the patent). + The coefficients also come from US Patents 4,403,965, 4,631,748 and + 4,946,391 (with one typo in all 3 patents: K9(3) is 0x3E0, not 0x3ED). The chirp table is very slightly different from the 4,209,836 patent one, but matches the table in the 4,403,965 and 4,946,391 patents. The Mitsubishi M58817 also seems to work best with these coefficients, so @@ -403,7 +403,12 @@ static const struct tms5100_coeffs T0280D_0281D_coeff = * TMC0280NLP // CD2801 with datecodes around 1980 has the same interpolation inhibit behavior as 5100/TMC0281 on unvoiced->silent transition. - * CD2801A-NL with datecodes around 1982 have the 'alternate behavior' + * CD2801A-NL with datecodes around 1982 have the 'alternate behavior', + which seems to be a somewhat crude workaround for a bug where when + an unvoiced frame follows a silent one (which in turn followed a + voiced frame), the k5-k10 parameters are not zeroed as they should be, + producing a loud noise. + This bug is fixed correctly on the tms52xx chips. */ static const struct tms5100_coeffs T0280F_2801A_coeff = { diff --git a/src/devices/sound/tms5220.cpp b/src/devices/sound/tms5220.cpp index 7a6e54b5335..e538b630f95 100644 --- a/src/devices/sound/tms5220.cpp +++ b/src/devices/sound/tms5220.cpp @@ -438,47 +438,8 @@ static const uint8_t reload_table[4] = { 0, 2, 4, 6 }; //sample count reload for #include "tms5110r.hxx" -void tms5220_device::set_variant(int variant) -{ - switch (variant) - { - case TMS5220_IS_TMC0281: - m_coeff = &T0280B_0281A_coeff; - break; - case TMS5220_IS_TMC0281D: - m_coeff = &T0280D_0281D_coeff; - break; - case TMS5220_IS_CD2801: - m_coeff = &T0280F_2801A_coeff; - break; - case TMS5220_IS_M58817: - m_coeff = &M58817_coeff; - break; - case TMS5220_IS_CD2802: - m_coeff = &T0280F_2802_coeff; - break; - case TMS5220_IS_TMS5110A: - m_coeff = &tms5110a_coeff; - break; - case TMS5220_IS_5200: - case TMS5220_IS_CD2501ECD: - m_coeff = &T0285_2501E_coeff; - break; - case TMS5220_IS_5220C: - case TMS5220_IS_5220: - m_coeff = &tms5220_coeff; - break; - default: - fatalerror("Unknown variant in tms5220_set_variant\n"); - } - m_variant = variant; -} - - void tms5220_device::register_for_save_states() { - save_item(NAME(m_variant)); - save_item(NAME(m_fifo)); save_item(NAME(m_fifo_head)); save_item(NAME(m_fifo_tail)); @@ -501,7 +462,7 @@ void tms5220_device::register_for_save_states() save_item(NAME(m_new_frame_energy_idx)); save_item(NAME(m_new_frame_pitch_idx)); save_item(NAME(m_new_frame_k_idx)); -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5220_PERFECT_INTERPOLATION_HACK save_item(NAME(m_old_frame_energy_idx)); save_item(NAME(m_old_frame_pitch_idx)); save_item(NAME(m_old_frame_k_idx)); @@ -681,7 +642,7 @@ void tms5220_device::data_write(int data) m_uv_zpar = 1; // zero k4-k10 as well m_OLDE = 1; // 'silence/zpar' frames are zero energy m_OLDP = 1; // 'silence/zpar' frames are zero pitch -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5220_PERFECT_INTERPOLATION_HACK m_old_zpar = 1; // zero all the old parameters m_old_uv_zpar = 1; // zero old k4-k10 as well #endif @@ -774,7 +735,7 @@ void tms5220_device::update_fifo_status_and_ints() // generate an interrupt if /TS was active, and is now inactive. // also, in this case, regardless if DDIS was set, unset it. - if (m_previous_TALK_STATUS == 1 && (TALK_STATUS == 0)) + if ((m_previous_TALK_STATUS == 1) && (TALK_STATUS() == 0)) { #ifdef VERBOSE logerror("Talk status WAS 1, is now 0, unsetting DDIS and firing an interrupt!\n"); @@ -782,7 +743,7 @@ void tms5220_device::update_fifo_status_and_ints() set_interrupt_state(1); m_DDIS = 0; } - m_previous_TALK_STATUS = TALK_STATUS; + m_previous_TALK_STATUS = TALK_STATUS(); } @@ -866,9 +827,9 @@ int tms5220_device::status_read() /* clear the interrupt pin on status read */ set_interrupt_state(0); #ifdef DEBUG_PIN_READS - logerror("Status read: TS=%d BL=%d BE=%d\n", TALK_STATUS, m_buffer_low, m_buffer_empty); + logerror("Status read: TS=%d BL=%d BE=%d\n", TALK_STATUS(), m_buffer_low, m_buffer_empty); #endif - return (TALK_STATUS << 7) | (m_buffer_low << 6) | (m_buffer_empty << 5); + return (TALK_STATUS() << 7) | (m_buffer_low << 6) | (m_buffer_empty << 5); } } @@ -980,7 +941,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size) /* appropriately override the interp count if needed; this will be incremented after the frame parse! */ m_IP = reload_table[m_c_variant_rate&0x3]; -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5220_PERFECT_INTERPOLATION_HACK /* remember previous frame energy, pitch, and coefficients */ m_old_frame_energy_idx = m_new_frame_energy_idx; m_old_frame_pitch_idx = m_new_frame_pitch_idx; @@ -992,7 +953,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size) parse_frame(); /* if the new frame is a stop frame, unset both TALK and SPEN (via TCON). TALKD remains active while the energy is ramping to 0. */ - if (NEW_FRAME_STOP_FLAG == 1) + if (NEW_FRAME_STOP_FLAG()) { m_TALK = m_SPEN = 0; update_fifo_status_and_ints(); // probably not necessary... @@ -1005,18 +966,18 @@ void tms5220_device::process(int16_t *buffer, unsigned int size) * Old frame was unvoiced, new is voiced * Old frame was unvoiced, new frame is silence/zero energy (non-existent on tms51xx rev D and F (present and working on tms52xx, present but buggy on tms51xx rev A and B)) */ - if ( ((OLD_FRAME_UNVOICED_FLAG == 0) && NEW_FRAME_UNVOICED_FLAG) - || ((OLD_FRAME_UNVOICED_FLAG == 1) && !NEW_FRAME_UNVOICED_FLAG) - || ((OLD_FRAME_SILENCE_FLAG == 1) && !NEW_FRAME_SILENCE_FLAG) - //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) ) //TMS51xx INTERP BUG1 - || ((OLD_FRAME_UNVOICED_FLAG == 1) && NEW_FRAME_SILENCE_FLAG) ) + if ( ((OLD_FRAME_UNVOICED_FLAG() == 0) && NEW_FRAME_UNVOICED_FLAG()) + || ((OLD_FRAME_UNVOICED_FLAG() == 1) && !NEW_FRAME_UNVOICED_FLAG()) + || ((OLD_FRAME_SILENCE_FLAG() == 1) && !NEW_FRAME_SILENCE_FLAG()) + //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG() == 1) && NEW_FRAME_SILENCE_FLAG()) ) //TMS51xx INTERP BUG1 + || ((OLD_FRAME_UNVOICED_FLAG() == 1) && NEW_FRAME_SILENCE_FLAG()) ) m_inhibit = 1; else // normal frame, normal interpolation m_inhibit = 0; #ifdef DEBUG_GENERATION /* Debug info for current parsed frame */ - logerror( "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG, NEW_FRAME_SILENCE_FLAG, OLD_FRAME_UNVOICED_FLAG, NEW_FRAME_UNVOICED_FLAG); + logerror( "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG(), NEW_FRAME_SILENCE_FLAG(), OLD_FRAME_UNVOICED_FLAG(), NEW_FRAME_UNVOICED_FLAG()); logerror("Processing new frame: "); if (m_inhibit == 0) logerror( "Normal Frame\n"); @@ -1043,7 +1004,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size) else // Not a new frame, just interpolate the existing frame. { int inhibit_state = ((m_inhibit==1)&&(m_IP != 0)); // disable inhibit when reaching the last interp period, but don't overwrite the m_inhibit value -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5220_PERFECT_INTERPOLATION_HACK int samples_per_frame = m_subc_reload?175:266; // either (13 A cycles + 12 B cycles) * 7 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 7 interps for SPKSLOW //int samples_per_frame = m_subc_reload?200:304; // either (13 A cycles + 12 B cycles) * 8 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 8 interps for SPKSLOW int current_sample = (m_subcycle - m_subc_reload)+(m_PC*(3-m_subc_reload))+((m_subc_reload?25:38)*((m_IP-1)&7)); @@ -1095,7 +1056,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size) } // calculate the output - if (OLD_FRAME_UNVOICED_FLAG == 1) + if (OLD_FRAME_UNVOICED_FLAG() == 1) { // generate unvoiced samples here if (m_RNG & 1) @@ -1103,7 +1064,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size) else m_excitation_data = 0x40; } - else /* (OLD_FRAME_UNVOICED_FLAG == 0) */ + else /* (OLD_FRAME_UNVOICED_FLAG() == 0) */ { // generate voiced samples here /* US patent 4331836 Figure 14B shows, and logic would hold, that a pitch based chirp @@ -1136,7 +1097,7 @@ void tms5220_device::process(int16_t *buffer, unsigned int size) for (i=0; i<10; i++) logerror("K%d:%04d ", i+1, m_current_k[i]); logerror("Out:%06d ", this_sample); -//#ifdef PERFECT_INTERPOLATION_HACK +//#ifdef TMS5220_PERFECT_INTERPOLATION_HACK // logerror("%d%d%d%d",m_old_zpar,m_zpar,m_old_uv_zpar,m_uv_zpar); //#else // logerror("x%dx%d",m_zpar,m_uv_zpar); @@ -1181,9 +1142,9 @@ void tms5220_device::process(int16_t *buffer, unsigned int size) if (m_IP == 7) // RESETL4 { // Latch OLDE and OLDP - //if (OLD_FRAME_SILENCE_FLAG) m_uv_zpar = 0; // TMS51xx INTERP BUG2 - OLD_FRAME_SILENCE_FLAG = NEW_FRAME_SILENCE_FLAG; // m_OLDE - OLD_FRAME_UNVOICED_FLAG = NEW_FRAME_UNVOICED_FLAG; // m_OLDP + //if (OLD_FRAME_SILENCE_FLAG()) m_uv_zpar = 0; // TMS51xx INTERP BUG2 + OLD_FRAME_SILENCE_FLAG() = NEW_FRAME_SILENCE_FLAG() ? 1 : 0; // m_OLDE + OLD_FRAME_UNVOICED_FLAG() = NEW_FRAME_UNVOICED_FLAG() ? 1 : 0; // m_OLDP /* if TALK was clear last frame, halt speech now, since TALKD (latched from TALK on new frame) just went inactive. */ #ifdef DEBUG_GENERATION logerror("RESETL4, about to update status: IP=%d, PC=%d, subcycle=%d, m_SPEN=%d, m_TALK=%d, m_TALKD=%d\n", m_IP, m_PC, m_subcycle, m_SPEN, m_TALK, m_TALKD); @@ -1395,7 +1356,7 @@ void tms5220_device::process_command(unsigned char cmd) switch (cmd & 0x70) { case 0x10 : /* read byte */ - if (TALK_STATUS == 0) /* TALKST must be clear for RDBY */ + if (TALK_STATUS() == 0) /* TALKST must be clear for RDBY */ { if (m_schedule_dummy_read) { @@ -1417,7 +1378,7 @@ void tms5220_device::process_command(unsigned char cmd) break; case 0x30 : /* read and branch */ - if (TALK_STATUS == 0) /* TALKST must be clear for RB */ + if (TALK_STATUS() == 0) /* TALKST must be clear for RB */ { #ifdef VERBOSE logerror("read and branch command received\n"); @@ -1429,7 +1390,7 @@ void tms5220_device::process_command(unsigned char cmd) break; case 0x40 : /* load address */ - if (TALK_STATUS == 0) /* TALKST must be clear for LA */ + if (TALK_STATUS() == 0) /* TALKST must be clear for LA */ { /* tms5220 data sheet says that if we load only one 4-bit nibble, it won't work. This code does not care about this. */ @@ -1455,7 +1416,7 @@ void tms5220_device::process_command(unsigned char cmd) m_uv_zpar = 1; // zero k4-k10 as well m_OLDE = 1; // 'silence/zpar' frames are zero energy m_OLDP = 1; // 'silence/zpar' frames are zero pitch -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5220_PERFECT_INTERPOLATION_HACK m_old_zpar = 1; // zero all the old parameters m_old_uv_zpar = 1; // zero old k4-k10 as well #endif @@ -1479,7 +1440,7 @@ void tms5220_device::process_command(unsigned char cmd) m_uv_zpar = 1; // zero k4-k10 as well m_OLDE = 1; // 'silence/zpar' frames are zero energy m_OLDP = 1; // 'silence/zpar' frames are zero pitch -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5220_PERFECT_INTERPOLATION_HACK m_old_zpar = 1; // zero all the old parameters m_old_uv_zpar = 1; // zero old k4-k10 as well #endif @@ -1519,7 +1480,7 @@ void tms5220_device::process_command(unsigned char cmd) void tms5220_device::parse_frame() { int i, rep_flag; -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5220_PERFECT_INTERPOLATION_HACK m_old_uv_zpar = m_uv_zpar; m_old_zpar = m_zpar; #endif @@ -1573,7 +1534,7 @@ void tms5220_device::parse_frame() logerror(" "); #endif // if the new frame is unvoiced, be sure to zero out the k5-k10 parameters - m_uv_zpar = NEW_FRAME_UNVOICED_FLAG; + m_uv_zpar = NEW_FRAME_UNVOICED_FLAG() ? 1 : 0; update_fifo_status_and_ints(); if (m_DDIS && m_buffer_empty) goto ranout; // if this is a repeat frame, just do nothing, it will reuse the old coefficients @@ -1682,7 +1643,37 @@ void tms5220_device::device_start() m_speechrom = nullptr; } - set_variant(TMS5220_IS_5220); + switch (m_variant) + { + case TMS5220_IS_TMC0281: + m_coeff = &T0280B_0281A_coeff; + break; + case TMS5220_IS_TMC0281D: + m_coeff = &T0280D_0281D_coeff; + break; + case TMS5220_IS_CD2801: + m_coeff = &T0280F_2801A_coeff; + break; + case TMS5220_IS_M58817: + m_coeff = &M58817_coeff; + break; + case TMS5220_IS_CD2802: + m_coeff = &T0280F_2802_coeff; + break; + case TMS5220_IS_TMS5110A: + m_coeff = &tms5110a_coeff; + break; + case TMS5220_IS_5200: + case TMS5220_IS_CD2501ECD: + m_coeff = &T0285_2501E_coeff; + break; + case TMS5220_IS_5220C: + case TMS5220_IS_5220: + m_coeff = &tms5220_coeff; + break; + default: + fatalerror("Unknown variant in tms5220_set_variant\n"); + } m_clock = clock(); /* resolve callbacks */ @@ -1707,46 +1698,6 @@ void tms5220_device::device_start() register_for_save_states(); } -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void tms5220c_device::device_start() -{ - tms5220_device::device_start(); - set_variant(TMS5220_IS_5220C); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void cd2501e_device::device_start() -{ - tms5220_device::device_start(); - set_variant(TMS5220_IS_CD2501E); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void tms5200_device::device_start() -{ - tms5220_device::device_start(); - set_variant(TMS5220_IS_5200); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void cd2501ecd_device::device_start() -{ - tms5220_device::device_start(); - set_variant(TMS5220_IS_CD2501ECD); -} - //------------------------------------------------- // device_reset - device-specific reset //------------------------------------------------- @@ -1768,7 +1719,7 @@ void tms5220_device::device_reset() m_RDB_flag = false; /* initialize the energy/pitch/k states */ -#ifdef PERFECT_INTERPOLATION_HACK +#ifdef TMS5220_PERFECT_INTERPOLATION_HACK m_old_frame_energy_idx = m_old_frame_pitch_idx = 0; memset(m_old_frame_k_idx, 0, sizeof(m_old_frame_k_idx)); m_old_zpar = 0; @@ -2206,64 +2157,54 @@ void tms5220_device::set_frequency(int frequency) m_clock = frequency; } -const device_type TMS5220C = device_creator; + +DEFINE_DEVICE_TYPE(TMS5220C, tms5220c_device, "tms5220c", "TMS5220C") +DEFINE_DEVICE_TYPE(TMS5220, tms5220_device, "tms5220", "TMS5220") +DEFINE_DEVICE_TYPE(CD2501E, cd2501e_device, "cd2501e", "CD2501E") +DEFINE_DEVICE_TYPE(TMS5200, tms5200_device, "tms5200", "TMS5200") +DEFINE_DEVICE_TYPE(CD2501ECD, cd2501ecd_device, "cd2501ecd", "CD2501ECD") + tms5220c_device::tms5220c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5220_device(mconfig, TMS5220C, "TMS5220C", tag, owner, clock, "tms5220c", __FILE__) + : tms5220_device(mconfig, TMS5220C, tag, owner, clock, TMS5220_IS_5220C) { } -const device_type TMS5220 = device_creator; - tms5220_device::tms5220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TMS5220, "TMS5220", tag, owner, clock, "tms5220", __FILE__), - device_sound_interface(mconfig, *this), - m_irq_handler(*this), - m_readyq_handler(*this), - m_speechrom_tag(nullptr), - m_m0_cb(*this), - m_m1_cb(*this), - m_addr_cb(*this), - m_data_cb(*this), - m_romclk_cb(*this) + : tms5220_device(mconfig, TMS5220, tag, owner, clock, TMS5220_IS_5220) { } -tms5220_device::tms5220_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - device_sound_interface(mconfig, *this), - m_irq_handler(*this), - m_readyq_handler(*this), - m_speechrom_tag(nullptr), - m_m0_cb(*this), - m_m1_cb(*this), - m_addr_cb(*this), - m_data_cb(*this), - m_romclk_cb(*this) +tms5220_device::tms5220_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant) + : device_t(mconfig, type, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_variant(variant) + , m_irq_handler(*this) + , m_readyq_handler(*this) + , m_speechrom_tag(nullptr) + , m_m0_cb(*this) + , m_m1_cb(*this) + , m_addr_cb(*this) + , m_data_cb(*this) + , m_romclk_cb(*this) { } -const device_type CD2501E = device_creator; - cd2501e_device::cd2501e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5220_device(mconfig, CD2501E, "CD2501E", tag, owner, clock, "cd2501e", __FILE__) + : tms5220_device(mconfig, CD2501E, tag, owner, clock, TMS5220_IS_CD2501E) { } -const device_type TMS5200 = device_creator; - tms5200_device::tms5200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5220_device(mconfig, TMS5200, "TMS5200", tag, owner, clock, "tms5200", __FILE__) + : tms5220_device(mconfig, TMS5200, tag, owner, clock, TMS5220_IS_5200) { } -const device_type CD2501ECD = device_creator; - cd2501ecd_device::cd2501ecd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms5220_device(mconfig, CD2501ECD, "CD2501ECD", tag, owner, clock, "cd2501ecd", __FILE__) + : tms5220_device(mconfig, CD2501ECD, tag, owner, clock, TMS5220_IS_CD2501ECD) { } diff --git a/src/devices/sound/tms5220.h b/src/devices/sound/tms5220.h index 2463ec1d803..96f5dc9b738 100644 --- a/src/devices/sound/tms5220.h +++ b/src/devices/sound/tms5220.h @@ -1,22 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Frank Palazzolo, Aaron Giles, Jonathan Gevaryahu, Raphael Nabet, Couriersud, Michael Zapf -#pragma once +#ifndef MAME_SOUND_TMS5220_H +#define MAME_SOUND_TMS5220_H -#ifndef __TMS5220_H__ -#define __TMS5220_H__ +#pragma once #include "machine/spchrom.h" -enum -{ - RS=2, - WS=1 -}; - /* HACK: if defined, uses impossibly perfect 'straight line' interpolation */ -#undef PERFECT_INTERPOLATION_HACK - -#define FIFO_SIZE 16 +#undef TMS5220_PERFECT_INTERPOLATION_HACK /* clock rate = 80 * output sample rate, */ /* usually 640000 for 8000 Hz sample rate or */ @@ -49,30 +41,33 @@ enum #define MCFG_TMS52XX_ROMCLK_CB(_devcb) \ devcb = &tms5220_device::set_romclk_callback(*device, DEVCB_##_devcb); -class tms5220_device : public device_t, - public device_sound_interface + +class tms5220_device : public device_t, public device_sound_interface { public: + enum + { + RS=2, + WS=1 + }; + tms5220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - tms5220_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); // static configuration helpers - template static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast(device).m_irq_handler.set_callback(object); } - template static devcb_base &set_readyq_handler(device_t &device, _Object object) { return downcast(device).m_readyq_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_readyq_handler(device_t &device, Object &&cb) { return downcast(device).m_readyq_handler.set_callback(std::forward(cb)); } // old VSM support, remove me! static void set_speechrom_tag(device_t &device, const char *_tag) { downcast(device).m_speechrom_tag = _tag; } // new VSM support - template static devcb_base &set_m0_callback(device_t &device, _Object object) { return downcast(device).m_m0_cb.set_callback(object); } - template static devcb_base &set_m1_callback(device_t &device, _Object object) { return downcast(device).m_m1_cb.set_callback(object); } - template static devcb_base &set_addr_callback(device_t &device, _Object object) { return downcast(device).m_addr_cb.set_callback(object); } - template static devcb_base &set_data_callback(device_t &device, _Object object) { return downcast(device).m_data_cb.set_callback(object); } - template static devcb_base &set_romclk_callback(device_t &device, _Object object) { return downcast(device).m_romclk_cb.set_callback(object); } - - /* Control lines - once written to will switch interface into - * "true" timing behaviour. - */ + template static devcb_base &set_m0_callback(device_t &device, Object &&cb) { return downcast(device).m_m0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_m1_callback(device_t &device, Object &&cb) { return downcast(device).m_m1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_addr_callback(device_t &device, Object &&cb) { return downcast(device).m_addr_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_data_callback(device_t &device, Object &&cb) { return downcast(device).m_data_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_romclk_callback(device_t &device, Object &&cb) { return downcast(device).m_romclk_cb.set_callback(std::forward(cb)); } - /* all lines with suffix q are active low! */ + // Control lines - once written to will switch interface into * "true" timing behaviour. + + // all lines with suffix q are active low! WRITE_LINE_MEMBER( rsq_w ); WRITE_LINE_MEMBER( wsq_w ); @@ -83,7 +78,7 @@ public: go active or inactive at slightly different times by separate write_line writes, which causes the chip to incorrectly reset itself on the 99/8, where the writes are supposed to happen simultaneously; - /RS is bit 1, /WS is bit 0 + /RS is bit 1, /WS is bit 0 Note this is a hack and probably can be removed later, once the 'real' line handlers above defer by at least 4 clock cycles before taking effect */ DECLARE_WRITE8_MEMBER( data_w ); @@ -97,6 +92,8 @@ public: void set_frequency(int frequency); protected: + tms5220_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int variant); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -106,9 +103,9 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - void set_variant(int variant); - private: + static constexpr unsigned FIFO_SIZE = 16; + // 51xx and VSM related void new_int_write(uint8_t rc, uint8_t m0, uint8_t m1, uint8_t addr); void new_int_write_addr(uint8_t addr); @@ -130,10 +127,17 @@ private: void set_interrupt_state(int state); void update_ready_state(); + uint8_t TALK_STATUS() const { return m_SPEN | m_TALKD; } + uint8_t &OLD_FRAME_SILENCE_FLAG() { return m_OLDE; } // 1 if E=0, 0 otherwise. + uint8_t &OLD_FRAME_UNVOICED_FLAG() { return m_OLDP; } // 1 if P=0 (unvoiced), 0 if voiced + bool NEW_FRAME_STOP_FLAG() const { return m_new_frame_energy_idx == 0x0F; } // 1 if this is a stop (Energy = 0xF) frame + bool NEW_FRAME_SILENCE_FLAG() const { return m_new_frame_energy_idx == 0; } // ditto as above + bool NEW_FRAME_UNVOICED_FLAG() const { return m_new_frame_pitch_idx == 0; } // ditto as above + // internal state /* coefficient tables */ - int m_variant; /* Variant of the 5xxx - see tms5110r.h */ + const int m_variant; /* Variant of the 5xxx - see tms5110r.h */ /* coefficient tables */ const struct tms5100_coeffs *m_coeff; @@ -169,7 +173,6 @@ private: uint8_t m_SPEN; /* set on speak(or speak external and BL falling edge) command, cleared on stop command, reset command, or buffer out */ uint8_t m_DDIS; /* If 1, DDIS is 1, i.e. Speak External command in progress, writes go to FIFO. */ uint8_t m_TALK; /* set on SPEN & RESETL4(pc12->pc0 transition), cleared on stop command or reset command */ -#define TALK_STATUS (m_SPEN|m_TALKD) uint8_t m_TALKD; /* TALK(TCON) value, latched every RESETL4 */ uint8_t m_buffer_low; /* If 1, FIFO has less than 8 bytes in it */ uint8_t m_buffer_empty; /* If 1, FIFO is empty */ @@ -177,21 +180,16 @@ private: uint8_t m_ready_pin; /* state of the READY pin (output) */ /* these contain data describing the current and previous voice frames */ -#define OLD_FRAME_SILENCE_FLAG m_OLDE // 1 if E=0, 0 otherwise. -#define OLD_FRAME_UNVOICED_FLAG m_OLDP // 1 if P=0 (unvoiced), 0 if voiced uint8_t m_OLDE; uint8_t m_OLDP; -#define NEW_FRAME_STOP_FLAG (m_new_frame_energy_idx == 0xF) // 1 if this is a stop (Energy = 0xF) frame -#define NEW_FRAME_SILENCE_FLAG (m_new_frame_energy_idx == 0) // ditto as above -#define NEW_FRAME_UNVOICED_FLAG (m_new_frame_pitch_idx == 0) // ditto as above uint8_t m_new_frame_energy_idx; uint8_t m_new_frame_pitch_idx; uint8_t m_new_frame_k_idx[10]; /* these are all used to contain the current state of the sound generation */ -#ifndef PERFECT_INTERPOLATION_HACK +#ifndef TMS5220_PERFECT_INTERPOLATION_HACK int16_t m_current_energy; int16_t m_current_pitch; int16_t m_current_k[10]; @@ -270,50 +268,39 @@ private: devcb_write_line m_romclk_cb; // rom clock - Only used to drive the data lines }; -extern const device_type TMS5220; class tms5220c_device : public tms5220_device { public: tms5220c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type TMS5220C; class cd2501e_device : public tms5220_device { public: cd2501e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type CD2501E; class tms5200_device : public tms5220_device { public: tms5200_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type TMS5200; class cd2501ecd_device : public tms5220_device { public: cd2501ecd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -protected: - // device-level overrides - virtual void device_start() override; }; -extern const device_type CD2501ECD; -#endif +DECLARE_DEVICE_TYPE(TMS5220, tms5220_device) +DECLARE_DEVICE_TYPE(TMS5220C, tms5220c_device) +DECLARE_DEVICE_TYPE(CD2501E, cd2501e_device) +DECLARE_DEVICE_TYPE(TMS5200, tms5200_device) +DECLARE_DEVICE_TYPE(CD2501ECD, cd2501ecd_device) + +#endif // MAME_SOUND_TMS5220_H diff --git a/src/devices/sound/upd1771.cpp b/src/devices/sound/upd1771.cpp index 0e24aedbe26..c156c084681 100644 --- a/src/devices/sound/upd1771.cpp +++ b/src/devices/sound/upd1771.cpp @@ -4,7 +4,7 @@ NEC uPD1771-017 as used in the Epoch Super Cassette Vision (SCV) - Made using recording/analysis on a Yeno (PAL Super Cassete Vision) + Made using recording/analysis on a Yeno (PAL Super Cassette Vision) by plgDavid Full markings on my 2 specimens are @@ -95,7 +95,7 @@ uPD1771C-006: used in NEC APC for sound as the "MPU" -011: used on Firefox F-4/Astro Thunder handheld -015: unknown, known to exist from part scalper sites only. - -017: used on Epoch Super Cassete Vision for sound; This audio driver HLEs that part only. + -017: used on Epoch Super Cassette Vision for sound; This audio driver HLEs that part only. Used pinout in the SCV: @@ -172,8 +172,11 @@ #include "emu.h" #include "upd1771.h" +//#define VERBOSE 1 +#include "logmacro.h" -#define LOG 0 + +namespace { /* Each of the 8 waveforms have been extracted from the uPD1771c-017 internal @@ -202,7 +205,7 @@ const signed char WAVEFORMS[8][32]={ #define NOISE_SIZE 255 -static unsigned char noise_tbl[]= +const unsigned char noise_tbl[]= { 0x1c,0x86,0x8a,0x8f,0x98,0xa1,0xad,0xbe,0xd9,0x8a,0x66,0x4d,0x40,0x33,0x2b,0x23, 0x1e,0x8a,0x90,0x97,0xa4,0xae,0xb8,0xd6,0xec,0xe9,0x69,0x4a,0x3e,0x34,0x2d,0x27, @@ -223,20 +226,21 @@ static unsigned char noise_tbl[]= }; - #define STATE_SILENCE 0 #define STATE_NOISE 1 #define STATE_TONE 2 #define STATE_ADPCM 3 +} // anonymous namespace + -const device_type UPD1771C = device_creator; +DEFINE_DEVICE_TYPE(UPD1771C, upd1771c_device, "upd1771c", "NEC uPD1771C 017") upd1771c_device::upd1771c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, UPD1771C, "NEC uPD1771C 017", tag, owner, clock, "upd1771c", __FILE__), - device_sound_interface(mconfig, *this), - m_ack_handler(*this) + : device_t(mconfig, UPD1771C, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_ack_handler(*this) { } @@ -363,8 +367,7 @@ Byte9: 0b???VVVVV Low Freq2 volume WRITE8_MEMBER( upd1771c_device::write ) { - //if (LOG) - // logerror( "upd1771_w: received byte 0x%02x\n", data ); + LOG("upd1771_w: received byte 0x%02x\n", data); m_ack_handler(0); diff --git a/src/devices/sound/upd1771.h b/src/devices/sound/upd1771.h index 77c5eed3ea9..5dfcfd9a540 100644 --- a/src/devices/sound/upd1771.h +++ b/src/devices/sound/upd1771.h @@ -6,12 +6,10 @@ **********************************************************************/ -#ifndef __UPD1771_H__ -#define __UPD1771_H__ +#ifndef MAME_SOUND_UPD1771_H +#define MAME_SOUND_UPD1771_H -#define MAX_PACKET_SIZE 0x8000 - #define MCFG_UPD1771_ACK_HANDLER(_devcb) \ devcb = &upd1771c_device::set_ack_handler(*device, DEVCB_##_devcb); @@ -25,9 +23,8 @@ class upd1771c_device : public device_t, { public: upd1771c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~upd1771c_device() {} - template static devcb_base &set_ack_handler(device_t &device, _Object object) { return downcast(device).m_ack_handler.set_callback(object); } + template static devcb_base &set_ack_handler(device_t &device, Object &&cb) { return downcast(device).m_ack_handler.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -42,13 +39,15 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: + static constexpr unsigned MAX_PACKET_SIZE = 0x8000; + + TIMER_CALLBACK_MEMBER(ack_callback); + // internal state sound_stream *m_channel; devcb_write_line m_ack_handler; emu_timer *m_timer; - TIMER_CALLBACK_MEMBER(ack_callback); - uint8_t m_packet[MAX_PACKET_SIZE]; uint32_t m_index; uint8_t m_expected_bytes; @@ -78,7 +77,6 @@ private: uint32_t m_n_ppos[3]; //period pos }; -extern const device_type UPD1771C; - +DECLARE_DEVICE_TYPE(UPD1771C, upd1771c_device) -#endif /* __UPD1771_H__ */ +#endif // MAME_SOUND_UPD1771_H diff --git a/src/devices/sound/upd7752.cpp b/src/devices/sound/upd7752.cpp index 33554e5a1b8..1e368a0db1a 100644 --- a/src/devices/sound/upd7752.cpp +++ b/src/devices/sound/upd7752.cpp @@ -13,12 +13,20 @@ skeleton device +/* status flags */ +#define BSY 1<<7 +#define REQ 1<<6 +#define EXT 1<<5 +#define ERR 1<<4 + + //************************************************************************** // GLOBAL VARIABLES //************************************************************************** // device type definition -const device_type UPD7752 = device_creator; +DEFINE_DEVICE_TYPE(UPD7752, upd7752_device, "upd7752", "NEC uPD7752") + /* TODO: unknown exact size */ static ADDRESS_MAP_START( upd7752_ram, AS_0, 8, upd7752_device ) @@ -35,7 +43,7 @@ ADDRESS_MAP_END //------------------------------------------------- upd7752_device::upd7752_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, UPD7752, "uPD7752", tag, owner, clock, "upd7752", __FILE__), + : device_t(mconfig, UPD7752, tag, owner, clock), device_sound_interface(mconfig, *this), device_memory_interface(mconfig, *this), m_stream(nullptr), m_space_config("ram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(upd7752_ram)), m_status(0), m_ram_addr(0), m_mode(0) diff --git a/src/devices/sound/upd7752.h b/src/devices/sound/upd7752.h index 13085eab5bb..af3988bd46c 100644 --- a/src/devices/sound/upd7752.h +++ b/src/devices/sound/upd7752.h @@ -1,22 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Angelo Salese -/*************************************************************************** - -Template for skeleton device - -***************************************************************************/ +#ifndef MAME_SOUND_UPD7752_H +#define MAME_SOUND_UPD7752_H #pragma once -#ifndef __UPD7752DEV_H__ -#define __UPD7752DEV_H__ - -/* status flags */ -#define BSY 1<<7 -#define REQ 1<<6 -#define EXT 1<<5 -#define ERR 1<<4 - //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -31,9 +19,7 @@ Template for skeleton device // ======================> upd7752_device -class upd7752_device : public device_t, - public device_sound_interface, - public device_memory_interface +class upd7752_device : public device_t, public device_sound_interface, public device_memory_interface { public: // construction/destruction @@ -42,7 +28,6 @@ public: // I/O operations DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; protected: // device-level overrides @@ -51,13 +36,15 @@ protected: virtual void device_reset() override; virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; private: - sound_stream *m_stream; - const address_space_config m_space_config; + sound_stream *m_stream; + const address_space_config m_space_config; uint8_t m_status; uint16_t m_ram_addr; uint8_t m_mode; + void status_change(uint8_t flag,bool type); inline uint8_t readbyte(offs_t address); inline void writebyte(offs_t address, uint8_t data); @@ -65,14 +52,6 @@ private: // device type definition -extern const device_type UPD7752; - - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - - +DECLARE_DEVICE_TYPE(UPD7752, upd7752_device) -#endif +#endif // MAME_SOUND_UPD7752_H diff --git a/src/devices/sound/upd7759.cpp b/src/devices/sound/upd7759.cpp index e1b8dd88ad6..684164c03e8 100644 --- a/src/devices/sound/upd7759.cpp +++ b/src/devices/sound/upd7759.cpp @@ -144,8 +144,8 @@ #define FRAC_MASK (FRAC_ONE - 1) -upd775x_device::upd775x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +upd775x_device::upd775x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , device_sound_interface(mconfig, *this) , m_channel(nullptr) , m_sample_offset_shift(0) @@ -176,29 +176,28 @@ upd775x_device::upd775x_device(const machine_config &mconfig, device_type type, , m_romoffset(0) , m_rommask(0) , m_drqcallback(*this) - { - } +{ +} -const device_type UPD7759 = device_creator; +DEFINE_DEVICE_TYPE(UPD7759, upd7759_device, "upd7759", "NEC uPD7759") upd7759_device::upd7759_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : upd775x_device(mconfig, UPD7759, "uPD7759", tag, owner, clock, "upd7759", __FILE__) - , m_timer(nullptr) + : upd7759_device(mconfig, UPD7759, tag, owner, clock) { } -upd7759_device::upd7759_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : upd775x_device(mconfig, type, name, tag, owner, clock, shortname, source) +upd7759_device::upd7759_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : upd775x_device(mconfig, type, tag, owner, clock) , m_timer(nullptr) { } -const device_type UPD7756 = device_creator; +DEFINE_DEVICE_TYPE(UPD7756, upd7756_device, "upd7756", "NEC uPD7756") upd7756_device::upd7756_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : upd775x_device(mconfig, UPD7756, "uPD7756", tag, owner, clock, "upd7756", __FILE__) + : upd775x_device(mconfig, UPD7756, tag, owner, clock) { } diff --git a/src/devices/sound/upd7759.h b/src/devices/sound/upd7759.h index f075c41c1dc..62f8502ba05 100644 --- a/src/devices/sound/upd7759.h +++ b/src/devices/sound/upd7759.h @@ -1,27 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Juergen Buchmueller, Mike Balfour, Howie Cohen, Olivier Galibert, Aaron Giles -#pragma once - -#ifndef __UPD7759_H__ -#define __UPD7759_H__ +#ifndef MAME_SOUND_UPD7759_H +#define MAME_SOUND_UPD7759_H -/* chip states */ -enum -{ - STATE_IDLE, - STATE_DROP_DRQ, - STATE_START, - STATE_FIRST_REQ, - STATE_LAST_SAMPLE, - STATE_DUMMY1, - STATE_ADDR_MSB, - STATE_ADDR_LSB, - STATE_DUMMY2, - STATE_BLOCK_HEADER, - STATE_NIBBLE_COUNT, - STATE_NIBBLE_MSN, - STATE_NIBBLE_LSN -}; +#pragma once /* NEC uPD7759/55/56/P56/57/58 ADPCM Speech Processor */ @@ -33,14 +15,10 @@ enum #define UPD7759_STANDARD_CLOCK XTAL_640kHz -class upd775x_device : public device_t, - public device_sound_interface +class upd775x_device : public device_t, public device_sound_interface { public: - upd775x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - ~upd775x_device() {} - - template static devcb_base &set_drq_callback(device_t &device, _Object object) { return downcast(device).m_drqcallback.set_callback(object); } + template static devcb_base &set_drq_callback(device_t &device, Object &&cb) { return downcast(device).m_drqcallback.set_callback(std::forward(cb)); } void set_bank_base(offs_t base); @@ -50,6 +28,26 @@ public: void postload(); protected: + // chip states + enum + { + STATE_IDLE, + STATE_DROP_DRQ, + STATE_START, + STATE_FIRST_REQ, + STATE_LAST_SAMPLE, + STATE_DUMMY1, + STATE_ADDR_MSB, + STATE_ADDR_LSB, + STATE_DUMMY2, + STATE_BLOCK_HEADER, + STATE_NIBBLE_COUNT, + STATE_NIBBLE_MSN, + STATE_NIBBLE_LSN + }; + + upd775x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -57,6 +55,9 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + void update_adpcm(int data); + virtual void advance_state(); + // internal state sound_stream *m_channel; /* stream channel for playback */ @@ -101,30 +102,29 @@ protected: uint32_t m_rommask; /* maximum address offset */ devcb_write_line m_drqcallback; - - void update_adpcm(int data); - virtual void advance_state(); }; class upd7759_device : public upd775x_device { public: upd7759_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - upd7759_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + DECLARE_WRITE_LINE_MEMBER( start_w ); + +protected: enum { TIMER_SLAVE_UPDATE }; + upd7759_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - emu_timer *m_timer; /* timer */ - - DECLARE_WRITE_LINE_MEMBER( start_w ); + emu_timer *m_timer; }; class upd7756_device : public upd775x_device @@ -132,15 +132,16 @@ class upd7756_device : public upd775x_device public: upd7756_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + DECLARE_WRITE_LINE_MEMBER( start_w ); + +protected: virtual void device_start() override; virtual void device_reset() override; virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - - DECLARE_WRITE_LINE_MEMBER( start_w ); }; -extern const device_type UPD7759; -extern const device_type UPD7756; +DECLARE_DEVICE_TYPE(UPD7759, upd7759_device) +DECLARE_DEVICE_TYPE(UPD7756, upd7756_device) #define MCFG_UPD7759_DRQ_CALLBACK(_write) \ devcb = &upd7759_device::set_drq_callback(*device, DEVCB_##_write); @@ -148,4 +149,4 @@ extern const device_type UPD7756; #define MCFG_UPD7756_DRQ_CALLBACK(_write) \ devcb = &upd7756_device::set_drq_callback(*device, DEVCB_##_write); -#endif /* __UPD7759_H__ */ +#endif // MAME_SOUND_UPD7759_H diff --git a/src/devices/sound/vlm5030.cpp b/src/devices/sound/vlm5030.cpp index 22628afeae3..b77a5bfc193 100644 --- a/src/devices/sound/vlm5030.cpp +++ b/src/devices/sound/vlm5030.cpp @@ -49,7 +49,7 @@ RST not only resets the chip on its rising edge but grabs a byte of mode state d 9bit DAC is composed of 5bit Physical and 3bitPWM. todo: - Noise Generator circuit without 'machine.rand()' function. + Noise Generator circuit without 'machine().rand()' function. ----------- command format (Analytical result) ---------- @@ -157,10 +157,10 @@ static const int vlm5030_speed_table[8] = IP_SIZE_SLOW }; -const device_type VLM5030 = device_creator; +DEFINE_DEVICE_TYPE(VLM5030, vlm5030_device, "vlm5030", "Sanyo VLM5030") vlm5030_device::vlm5030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VLM5030, "VLM5030", tag, owner, clock, "vlm5030", __FILE__), + : device_t(mconfig, VLM5030, tag, owner, clock), device_sound_interface(mconfig, *this), device_rom_interface(mconfig, *this, 16), m_channel(nullptr), diff --git a/src/devices/sound/vlm5030.h b/src/devices/sound/vlm5030.h index 88bbcc19f98..48e0d712b2f 100644 --- a/src/devices/sound/vlm5030.h +++ b/src/devices/sound/vlm5030.h @@ -1,16 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Tatsuyuki Satoh -#pragma once +#ifndef MAME_SOUND_VLM5030_H +#define MAME_SOUND_VLM5030_H -#ifndef __VLM5030_H__ -#define __VLM5030_H__ +#pragma once - class vlm5030_device : public device_t, - public device_sound_interface, public device_rom_interface - { - public: +class vlm5030_device : public device_t, public device_sound_interface, public device_rom_interface +{ +public: vlm5030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~vlm5030_device() {} /* get BSY pin level */ DECLARE_READ_LINE_MEMBER( bsy ); @@ -43,7 +41,7 @@ private: const address_space_config m_space_config; // internal state - sound_stream * m_channel; + sound_stream *m_channel; /* coefficient tables */ const struct tms5100_coeffs *m_coeff; @@ -95,7 +93,6 @@ private: void restore_state(); }; -extern const device_type VLM5030; - +DECLARE_DEVICE_TYPE(VLM5030, vlm5030_device) -#endif /* __VLM5030_H__ */ +#endif // MAME_SOUND_VLM5030_H diff --git a/src/devices/sound/volt_reg.cpp b/src/devices/sound/volt_reg.cpp index 6e179599907..aeb2bd6285a 100644 --- a/src/devices/sound/volt_reg.cpp +++ b/src/devices/sound/volt_reg.cpp @@ -11,11 +11,12 @@ #include "emu.h" #include "volt_reg.h" -const device_type VOLTAGE_REGULATOR = device_creator; +DEFINE_DEVICE_TYPE(VOLTAGE_REGULATOR, voltage_regulator_device, "volt_reg", "Voltage Regulator") voltage_regulator_device::voltage_regulator_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, VOLTAGE_REGULATOR, "Voltage Regulator", tag, owner, clock, "volt_reg", __FILE__), + device_t(mconfig, VOLTAGE_REGULATOR, tag, owner, clock), device_sound_interface(mconfig, *this), + m_stream(nullptr), m_output(0) { } diff --git a/src/devices/sound/volt_reg.h b/src/devices/sound/volt_reg.h index 18adb8264c6..dd036dbad28 100644 --- a/src/devices/sound/volt_reg.h +++ b/src/devices/sound/volt_reg.h @@ -8,21 +8,21 @@ ***************************************************************************/ -#ifndef __VOLTAGE_REGULATOR_H__ -#define __VOLTAGE_REGULATOR_H__ +#ifndef MAME_SOUND_VOLT_REG_H +#define MAME_SOUND_VOLT_REG_H + +#pragma once #define MCFG_VOLTAGE_REGULATOR_OUTPUT(_output) \ voltage_regulator_device::set_output(*device, _output); -class voltage_regulator_device : public device_t, - public device_sound_interface +class voltage_regulator_device : public device_t, public device_sound_interface { public: static void set_output(device_t &device, double analogue_dc) { downcast(device).m_output = (analogue_dc * 32768) / 5.0f; } voltage_regulator_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~voltage_regulator_device() { } virtual bool issound() override { return false; } @@ -38,6 +38,6 @@ private: stream_sample_t m_output; }; -extern const device_type VOLTAGE_REGULATOR; +DECLARE_DEVICE_TYPE(VOLTAGE_REGULATOR, voltage_regulator_device) -#endif +#endif // MAME_SOUND_VOLT_REG_H diff --git a/src/devices/sound/votrax.cpp b/src/devices/sound/votrax.cpp index 1068554aab3..d2741b0a7dc 100644 --- a/src/devices/sound/votrax.cpp +++ b/src/devices/sound/votrax.cpp @@ -26,7 +26,7 @@ tp1 = phi clock (tied to f2q rom access) #include "votrax.h" -const device_type VOTRAX_SC01 = device_creator; +DEFINE_DEVICE_TYPE(VOTRAX_SC01, votrax_sc01_device, "votrax", "Votrax SC-01") // ROM definition for the Votrax phone ROM ROM_START( votrax_sc01 ) @@ -76,7 +76,7 @@ const double votrax_sc01_device::s_glottal_wave[9] = votrax_sc01_device::votrax_sc01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VOTRAX_SC01, "Votrax SC-01", tag, owner, clock, "votrax", __FILE__), + : device_t(mconfig, VOTRAX_SC01, tag, owner, clock), device_sound_interface(mconfig, *this), m_stream(nullptr), m_rom(*this, "internal"), diff --git a/src/devices/sound/votrax.h b/src/devices/sound/votrax.h index dd39efc9eb4..0ec75317227 100644 --- a/src/devices/sound/votrax.h +++ b/src/devices/sound/votrax.h @@ -7,11 +7,11 @@ Votrax SC01A simulation ***************************************************************************/ +#ifndef MAME_SOUND_VOTRAX_H +#define MAME_SOUND_VOTRAX_H #pragma once -#ifndef VOTRAX_H -#define VOTRAX_H #define MCFG_VOTRAX_SC01_REQUEST_CB(_devcb) \ devcb = &downcast(device)->set_ar_callback(DEVCB_##_devcb); @@ -23,7 +23,7 @@ public: // construction/destruction votrax_sc01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_ar_callback(_Object object) { return m_ar_cb.set_callback(object); } + template devcb_base &set_ar_callback(Object &&cb) { return m_ar_cb.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER(write); DECLARE_WRITE8_MEMBER(inflection_w); @@ -182,12 +182,11 @@ private: }; - //************************************************************************** // GLOBAL VARIABLES //************************************************************************** // device type definition -extern const device_type VOTRAX_SC01; +DECLARE_DEVICE_TYPE(VOTRAX_SC01, votrax_sc01_device) -#endif /* VOTRAX_H */ +#endif // MAME_SOUND_VOTRAX_H diff --git a/src/devices/sound/vrc6.cpp b/src/devices/sound/vrc6.cpp index a377e736301..e632cce1cdb 100644 --- a/src/devices/sound/vrc6.cpp +++ b/src/devices/sound/vrc6.cpp @@ -19,7 +19,7 @@ #define DISABLE_VRC6_SOUND // not ready yet // device type definition -const device_type VRC6 = device_creator; +DEFINE_DEVICE_TYPE(VRC6, vrc6snd_device, "vrc6snd", "Konami VRC6 (Sound)") //************************************************************************** // LIVE DEVICE @@ -30,8 +30,14 @@ const device_type VRC6 = device_creator; //------------------------------------------------- vrc6snd_device::vrc6snd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VRC6, "VRC6 sound", tag, owner, clock, "vrc6snd", __FILE__), - device_sound_interface(mconfig, *this), m_freqctrl(0), m_sawrate(0), m_sawfrql(0), m_sawfrqh(0), m_sawclock(0), m_sawaccum(0), m_stream(nullptr) + : device_t(mconfig, VRC6, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_freqctrl(0), m_pulsectrl{ 0, 0 }, m_sawrate(0) + , m_pulsefrql{ 0, 0 }, m_pulsefrqh{ 0, 0 }, m_pulseduty{ 0, 0 } + , m_sawfrql(0), m_sawfrqh(0), m_sawclock(0), m_sawaccum(0) + , m_ticks{ 0, 0, 0 } + , m_output{ 0, 0, 0 } + , m_stream(nullptr) { } diff --git a/src/devices/sound/vrc6.h b/src/devices/sound/vrc6.h index 6e1afe6f8ef..61449bc0216 100644 --- a/src/devices/sound/vrc6.h +++ b/src/devices/sound/vrc6.h @@ -7,10 +7,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_SOUND_VRC6_H +#define MAME_SOUND_VRC6_H -#ifndef __VRC6_H__ -#define __VRC6_H__ +#pragma once //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -57,5 +57,4 @@ private: // device type definition extern const device_type VRC6; - -#endif /* __VRC6_H__ */ +#endif // MAME_SOUND_VRC6_H diff --git a/src/devices/sound/vrender0.cpp b/src/devices/sound/vrender0.cpp index 4968376dff5..385575ab426 100644 --- a/src/devices/sound/vrender0.cpp +++ b/src/devices/sound/vrender0.cpp @@ -77,14 +77,14 @@ static const unsigned short ULawTo16[]= // LIVE DEVICE //************************************************************************** -const device_type VRENDER0 = device_creator; +DEFINE_DEVICE_TYPE(VRENDER0, vrender0_device, "vrender0", "VRender0") //------------------------------------------------- // vrender0_device - constructor //------------------------------------------------- vrender0_device::vrender0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VRENDER0, "VRender0", tag, owner, clock, "vrender0", __FILE__), + : device_t(mconfig, VRENDER0, tag, owner, clock), device_sound_interface(mconfig, *this), m_TexBase(nullptr), m_FBBase(nullptr), diff --git a/src/devices/sound/vrender0.h b/src/devices/sound/vrender0.h index ebf93b71378..5ad9046aede 100644 --- a/src/devices/sound/vrender0.h +++ b/src/devices/sound/vrender0.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:ElSemi -#pragma once +#ifndef MAME_SOUND_VRENDER0_H +#define MAME_SOUND_VRENDER0_H -#ifndef __VRENDER0_H__ -#define __VRENDER0_H__ +#pragma once //************************************************************************** @@ -30,7 +30,6 @@ class vrender0_device : public device_t, { public: vrender0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~vrender0_device() { } // static configuration static void set_reg_base(device_t &device, int base) { downcast(device).m_reg_base = base; } @@ -57,7 +56,6 @@ private: void VR0_RenderAudio(int nsamples, stream_sample_t *l, stream_sample_t *r); }; -extern const device_type VRENDER0; - +DECLARE_DEVICE_TYPE(VRENDER0, vrender0_device) -#endif /* __VRENDER0_H__ */ +#endif // MAME_SOUND_VRENDER0_H diff --git a/src/devices/sound/wave.cpp b/src/devices/sound/wave.cpp index 8515ec5237f..7383805d05e 100644 --- a/src/devices/sound/wave.cpp +++ b/src/devices/sound/wave.cpp @@ -31,13 +31,14 @@ void wave_device::static_set_cassette_tag(device_t &device, const char *cassette wave.m_cassette_tag = cassette_tag; } -const device_type WAVE = device_creator; +DEFINE_DEVICE_TYPE(WAVE, wave_device, "wave", "Wave") wave_device::wave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, WAVE, "Wave", tag, owner, clock, "wave", __FILE__), - device_sound_interface(mconfig, *this), m_cass(nullptr) + : device_t(mconfig, WAVE, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_cassette_tag(nullptr) + , m_cass(nullptr) { - m_cassette_tag = nullptr; } //------------------------------------------------- diff --git a/src/devices/sound/wave.h b/src/devices/sound/wave.h index f5881a83d58..da7797dfbca 100644 --- a/src/devices/sound/wave.h +++ b/src/devices/sound/wave.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Nathan Woods -#pragma once +#ifndef MAME_SOUND_WAVE_H +#define MAME_SOUND_WAVE_H -#ifndef __WAVE_H__ -#define __WAVE_H__ +#pragma once #include "imagedev/cassette.h" @@ -12,8 +12,7 @@ * CassetteWave interface *****************************************************************************/ -class wave_device : public device_t, - public device_sound_interface +class wave_device : public device_t, public device_sound_interface { public: wave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -32,7 +31,7 @@ private: cassette_image_device *m_cass; }; -extern const device_type WAVE; +DECLARE_DEVICE_TYPE(WAVE, wave_device) #define WAVE_TAG "wave" @@ -43,4 +42,4 @@ extern const device_type WAVE; MCFG_SOUND_ADD( _tag, WAVE, 0 ) \ wave_device::static_set_cassette_tag(*device, _cass_tag); -#endif /* __WAVE_H__ */ +#endif // MAME_SOUND_WAVE_H diff --git a/src/devices/sound/x1_010.cpp b/src/devices/sound/x1_010.cpp index bbaff50d15d..04f896fc82f 100644 --- a/src/devices/sound/x1_010.cpp +++ b/src/devices/sound/x1_010.cpp @@ -59,9 +59,12 @@ Registers: #define VERBOSE_REGISTER_WRITE 0 #define VERBOSE_REGISTER_READ 0 -#define LOG_SOUND(x) do { if (VERBOSE_SOUND) logerror x; } while (0) -#define LOG_REGISTER_WRITE(x) do { if (VERBOSE_REGISTER_WRITE) logerror x; } while (0) -#define LOG_REGISTER_READ(x) do { if (VERBOSE_REGISTER_READ) logerror x; } while (0) +#define LOG_SOUND(...) do { if (VERBOSE_SOUND) logerror(__VA_ARGS__); } while (0) +#define LOG_REGISTER_WRITE(...) do { if (VERBOSE_REGISTER_WRITE) logerror(__VA_ARGS__); } while (0) +#define LOG_REGISTER_READ(...) do { if (VERBOSE_REGISTER_READ) logerror(__VA_ARGS__); } while (0) + + +namespace { #define FREQ_BASE_BITS 8 // Frequency fixed decimal shift bits #define ENV_BASE_BITS 16 // wave form envelope fixed decimal shift bits @@ -78,15 +81,17 @@ struct X1_010_CHANNEL { unsigned char reserve[2]; }; +} // anonymous namespace + /* mixer tables and internal buffers */ //static short *mixer_buffer = nullptr; -const device_type X1_010 = device_creator; +DEFINE_DEVICE_TYPE(X1_010, x1_010_device, "x1_010", "Seta X1-010") x1_010_device::x1_010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, X1_010, "X1-010", tag, owner, clock, "x1_010", __FILE__), + : device_t(mconfig, X1_010, tag, owner, clock), device_sound_interface(mconfig, *this), m_region(*this, DEVICE_SELF), m_rate(0), @@ -95,10 +100,10 @@ x1_010_device::x1_010_device(const machine_config &mconfig, const char *tag, dev m_sound_enable(0), m_base_clock(0) { - memset(m_reg, 0, sizeof(m_reg)); - memset(m_HI_WORD_BUF, 0, sizeof(m_HI_WORD_BUF)); - memset(m_smp_offset, 0, sizeof(SETA_NUM_CHANNELS)); - memset(m_env_offset, 0, sizeof(SETA_NUM_CHANNELS)); + std::fill(std::begin(m_reg), std::end(m_reg), 0); + std::fill(std::begin(m_HI_WORD_BUF), std::end(m_HI_WORD_BUF), 0); + std::fill(std::begin(m_smp_offset), std::end(m_smp_offset), 0); + std::fill(std::begin(m_env_offset), std::end(m_env_offset), 0); } //------------------------------------------------- @@ -112,12 +117,12 @@ void x1_010_device::device_start() m_base_clock = clock(); m_rate = clock() / 512; - for( i = 0; i < SETA_NUM_CHANNELS; i++ ) { + for( i = 0; i < NUM_CHANNELS; i++ ) { m_smp_offset[i] = 0; m_env_offset[i] = 0; } /* Print some more debug info */ - LOG_SOUND(("masterclock = %d rate = %d\n", clock(), m_rate )); + LOG_SOUND("masterclock = %d rate = %d\n", clock(), m_rate ); /* get stream channels */ m_stream = machine().sound().stream_alloc(*this, 0, 2, m_rate); @@ -154,12 +159,12 @@ WRITE8_MEMBER( x1_010_device::write ) channel = offset/sizeof(X1_010_CHANNEL); reg = offset%sizeof(X1_010_CHANNEL); - if( channel < SETA_NUM_CHANNELS && reg == 0 + if( channel < NUM_CHANNELS && reg == 0 && (m_reg[offset]&1) == 0 && (data&1) != 0 ) { m_smp_offset[channel] = 0; m_env_offset[channel] = 0; } - LOG_REGISTER_WRITE(("%s: offset %6X : data %2X\n", machine().describe_context(), offset, data )); + LOG_REGISTER_WRITE("%s: offset %6X : data %2X\n", machine().describe_context(), offset, data); m_reg[offset] = data; } @@ -172,7 +177,7 @@ READ16_MEMBER( x1_010_device::word_r ) ret = m_HI_WORD_BUF[offset]<<8; ret += (read( space, offset )&0xff); - LOG_REGISTER_READ(( "%s: Read X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, ret )); + LOG_REGISTER_READ("%s: Read X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, ret); return ret; } @@ -180,7 +185,7 @@ WRITE16_MEMBER( x1_010_device::word_w ) { m_HI_WORD_BUF[offset] = (data>>8)&0xff; write( space, offset, data&0xff ); - LOG_REGISTER_WRITE(( "%s: Write X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, data )); + LOG_REGISTER_WRITE("%s: Write X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, data); } @@ -202,7 +207,7 @@ void x1_010_device::sound_stream_update(sound_stream &stream, stream_sample_t ** // if( m_sound_enable == 0 ) return; - for( ch = 0; ch < SETA_NUM_CHANNELS; ch++ ) { + for( ch = 0; ch < NUM_CHANNELS; ch++ ) { reg = (X1_010_CHANNEL *)&(m_reg[ch*sizeof(X1_010_CHANNEL)]); if( (reg->status&1) != 0 ) { // Key On stream_sample_t *bufL = outputs[0]; @@ -221,8 +226,8 @@ void x1_010_device::sound_stream_update(sound_stream &stream, stream_sample_t ** smp_step = (uint32_t)((float)m_base_clock/8192.0f *freq*(1<>FREQ_BASE_BITS; @@ -248,8 +253,8 @@ void x1_010_device::sound_stream_update(sound_stream &stream, stream_sample_t ** env_step = (uint32_t)((float)m_base_clock/128.0f/1024.0f/4.0f*reg->start*(1<volume, ch, reg->end, freq, smp_step, smp_offs )); + LOG_SOUND("Play waveform %X, channel %X volume %X freq %4X step %X offset %X\n", + reg->volume, ch, reg->end, freq, smp_step, smp_offs); } for( i = 0; i < samples; i++ ) { int vol; diff --git a/src/devices/sound/x1_010.h b/src/devices/sound/x1_010.h index d2eb07d3999..9ba80bc95a0 100644 --- a/src/devices/sound/x1_010.h +++ b/src/devices/sound/x1_010.h @@ -1,18 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia -#pragma once - -#ifndef __X1_010_H__ -#define __X1_010_H__ +#ifndef MAME_SOUND_X1_010_H +#define MAME_SOUND_X1_010_H -#define SETA_NUM_CHANNELS 16 +#pragma once -class x1_010_device : public device_t, - public device_sound_interface +class x1_010_device : public device_t, public device_sound_interface { public: x1_010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~x1_010_device() {} // static configuration static void set_address(device_t &device, int addr) { downcast(device).m_adr = addr; } @@ -31,7 +27,10 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + private: + static constexpr unsigned NUM_CHANNELS = 16; + // internal state /* Variables only used here */ @@ -42,17 +41,16 @@ private: int m_sound_enable; // sound output enable/disable uint8_t m_reg[0x2000]; // X1-010 Register & wave form area uint8_t m_HI_WORD_BUF[0x2000]; // X1-010 16bit access ram check avoidance work - uint32_t m_smp_offset[SETA_NUM_CHANNELS]; - uint32_t m_env_offset[SETA_NUM_CHANNELS]; + uint32_t m_smp_offset[NUM_CHANNELS]; + uint32_t m_env_offset[NUM_CHANNELS]; uint32_t m_base_clock; }; -extern const device_type X1_010; +DECLARE_DEVICE_TYPE(X1_010, x1_010_device) #define MCFG_X1_010_ADDRESS(_addr) \ x1_010_device::set_address(*device, _addr); - -#endif /* __X1_010_H__ */ +#endif // MAME_SOUND_X1_010_H diff --git a/src/devices/sound/ym2151.cpp b/src/devices/sound/ym2151.cpp index b35787d0d1d..a86227af86b 100644 --- a/src/devices/sound/ym2151.cpp +++ b/src/devices/sound/ym2151.cpp @@ -4,7 +4,7 @@ #include "emu.h" #include "ym2151.h" -const device_type YM2151 = device_creator; +DEFINE_DEVICE_TYPE(YM2151, ym2151_device, "ym2151", "Yamaha YM2151 OPM") #define FREQ_SH 16 /* 16.16 fixed point (frequency calculations) */ @@ -1650,7 +1650,7 @@ void ym2151_device::advance() //------------------------------------------------- ym2151_device::ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, YM2151, "YM2151", tag, owner, clock, "ym2151", __FILE__), + : device_t(mconfig, YM2151, tag, owner, clock), device_sound_interface(mconfig, *this), m_stream(nullptr), m_lastreg(0), diff --git a/src/devices/sound/ym2151.h b/src/devices/sound/ym2151.h index 0858a01abb9..57b1efb80eb 100644 --- a/src/devices/sound/ym2151.h +++ b/src/devices/sound/ym2151.h @@ -30,10 +30,10 @@ ** Ishmair - for the datasheet and motivation. */ -#pragma once +#ifndef MAME_SOUND_YM2151_H +#define MAME_SOUND_YM2151_H -#ifndef __YM2151_H__ -#define __YM2151_H__ +#pragma once //************************************************************************** @@ -64,8 +64,8 @@ public: ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast(device).m_irqhandler.set_callback(object); } - template static devcb_base &set_port_write_handler(device_t &device, _Object object) { return downcast(device).m_portwritehandler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irqhandler.set_callback(std::forward(cb)); } + template static devcb_base &set_port_write_handler(device_t &device, Object &&cb) { return downcast(device).m_portwritehandler.set_callback(std::forward(cb)); } // read/write DECLARE_READ8_MEMBER( read ); @@ -273,7 +273,7 @@ private: // device type definition -extern const device_type YM2151; +DECLARE_DEVICE_TYPE(YM2151, ym2151_device) -#endif /* __2151INTF_H__ */ +#endif // MAME_SOUND_YM2151_H diff --git a/src/devices/sound/ym2413.cpp b/src/devices/sound/ym2413.cpp index 76fcb144df0..4d9da3d1dee 100644 --- a/src/devices/sound/ym2413.cpp +++ b/src/devices/sound/ym2413.cpp @@ -1675,10 +1675,10 @@ WRITE8_MEMBER( ym2413_device::data_port_w ) write_reg(address, data); } -const device_type YM2413 = device_creator; +DEFINE_DEVICE_TYPE(YM2413, ym2413_device, "ym2413", "Yamaha YM2413 OPLL") ym2413_device::ym2413_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, YM2413, "YM2413", tag, owner, clock, "ym2413", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, YM2413, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } diff --git a/src/devices/sound/ym2413.h b/src/devices/sound/ym2413.h index 21494ed00f5..410ed10fcf9 100644 --- a/src/devices/sound/ym2413.h +++ b/src/devices/sound/ym2413.h @@ -1,13 +1,12 @@ // license:GPL-2.0+ // copyright-holders:Jarek Burczynski,Ernesto Corvi -#pragma once +#ifndef MAME_SOUND_YM2413_H +#define MAME_SOUND_YM2413_H -#ifndef __YM2413_H__ -#define __YM2413_H__ +#pragma once -class ym2413_device : public device_t, - public device_sound_interface +class ym2413_device : public device_t, public device_sound_interface { public: ym2413_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -17,8 +16,6 @@ public: DECLARE_WRITE8_MEMBER( register_port_w ); DECLARE_WRITE8_MEMBER( data_port_w ); - void _ym2413_update_request(); - protected: // device-level overrides virtual void device_start() override; @@ -185,6 +182,6 @@ private: }; -extern const device_type YM2413; +DECLARE_DEVICE_TYPE(YM2413, ym2413_device) -#endif /*__YM2413_H__*/ +#endif // MAME_SOUND_YM2413_H diff --git a/src/devices/sound/ymdeltat.cpp b/src/devices/sound/ymdeltat.cpp index 835443b67dd..29e05b4ef9e 100644 --- a/src/devices/sound/ymdeltat.cpp +++ b/src/devices/sound/ymdeltat.cpp @@ -67,6 +67,8 @@ #include "emu.h" #include "ymdeltat.h" +#define YM_DELTAT_SHIFT (16) + #define YM_DELTAT_DELTA_MAX (24576) #define YM_DELTAT_DELTA_MIN (127) #define YM_DELTAT_DELTA_DEF (127) @@ -78,73 +80,70 @@ /* Forecast to next Forecast (rate = *8) */ /* 1/8 , 3/8 , 5/8 , 7/8 , 9/8 , 11/8 , 13/8 , 15/8 */ -static const int32_t ym_deltat_decode_tableB1[16] = { +static constexpr int32_t ym_deltat_decode_tableB1[16] = { 1, 3, 5, 7, 9, 11, 13, 15, -1, -3, -5, -7, -9, -11, -13, -15, }; /* delta to next delta (rate= *64) */ /* 0.9 , 0.9 , 0.9 , 0.9 , 1.2 , 1.6 , 2.0 , 2.4 */ -static const int32_t ym_deltat_decode_tableB2[16] = { +static constexpr int32_t ym_deltat_decode_tableB2[16] = { 57, 57, 57, 57, 77, 102, 128, 153, 57, 57, 57, 57, 77, 102, 128, 153 }; #if 0 -void YM_DELTAT_BRDY_callback(YM_DELTAT *DELTAT) +void YM_DELTAT::BRDY_callback() { logerror("BRDY_callback reached (flag set) !\n"); /* set BRDY bit in status register */ - if(DELTAT->status_set_handler) - if(DELTAT->status_change_BRDY_bit) - (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit); + if(status_set_handler) + if(status_change_BRDY_bit) + (status_set_handler)(status_change_which_chip, status_change_BRDY_bit); } #endif -uint8_t YM_DELTAT_ADPCM_Read(YM_DELTAT *DELTAT) +uint8_t YM_DELTAT::ADPCM_Read() { uint8_t v = 0; /* external memory read */ - if ( (DELTAT->portstate & 0xe0)==0x20 ) + if ((portstate & 0xe0) == 0x20) { /* two dummy reads */ - if (DELTAT->memread) + if (memread) { - DELTAT->now_addr = DELTAT->start << 1; - DELTAT->memread--; + now_addr = start << 1; + memread--; return 0; } - if ( DELTAT->now_addr != (DELTAT->end<<1) ) + if (now_addr != (end << 1)) { - v = DELTAT->memory[DELTAT->now_addr>>1]; + v = memory[now_addr>>1]; - /*logerror("YM Delta-T memory read $%08x, v=$%02x\n", DELTAT->now_addr >> 1, v);*/ + /*logerror("YM Delta-T memory read $%08x, v=$%02x\n", now_addr >> 1, v);*/ - DELTAT->now_addr+=2; /* two nibbles at a time */ + now_addr += 2; /* two nibbles at a time */ /* reset BRDY bit in status register, which means we are reading the memory now */ - if(DELTAT->status_reset_handler) - if(DELTAT->status_change_BRDY_bit) - (DELTAT->status_reset_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit); - - /* setup a timer that will callback us in 10 master clock cycles for Y8950 - * in the callback set the BRDY flag to 1 , which means we have another data ready. - * For now, we don't really do this; we simply reset and set the flag in zero time, so that the IRQ will work. - */ + if (status_reset_handler && status_change_BRDY_bit) + (status_reset_handler)(status_change_which_chip, status_change_BRDY_bit); + + /* setup a timer that will callback us in 10 master clock cycles for Y8950 + * in the callback set the BRDY flag to 1 , which means we have another data ready. + * For now, we don't really do this; we simply reset and set the flag in zero time, so that the IRQ will work. + */ /* set BRDY bit in status register */ - if(DELTAT->status_set_handler) - if(DELTAT->status_change_BRDY_bit) - (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit); + if (status_set_handler && status_change_BRDY_bit) + (status_set_handler)(status_change_which_chip, status_change_BRDY_bit); } else { /* set EOS bit in status register */ - if(DELTAT->status_set_handler) - if(DELTAT->status_change_EOS_bit) - (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_EOS_bit); + if (status_set_handler && status_change_EOS_bit) + (status_set_handler)(status_change_which_chip, status_change_EOS_bit); } } @@ -153,15 +152,15 @@ uint8_t YM_DELTAT_ADPCM_Read(YM_DELTAT *DELTAT) /* 0-DRAM x1, 1-ROM, 2-DRAM x8, 3-ROM (3 is bad setting - not allowed by the manual) */ -static const uint8_t dram_rightshift[4]={3,0,0,0}; +static constexpr uint8_t dram_rightshift[4]={3,0,0,0}; /* DELTA-T ADPCM write register */ -void YM_DELTAT_ADPCM_Write(YM_DELTAT *DELTAT,int r,int v) +void YM_DELTAT::ADPCM_Write(int r, int v) { - if(r>=0x10) return; - DELTAT->reg[r] = v; /* stock data */ + if (r >= 0x10) return; + reg[r] = v; /* stock data */ - switch( r ) + switch (r) { case 0x00: /* @@ -198,87 +197,87 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: */ /* handle emulation mode */ - if(DELTAT->emulation_mode == YM_DELTAT_EMULATION_MODE_YM2610) + if (emulation_mode == EMULATION_MODE_YM2610) { v |= 0x20; /* YM2610 always uses external memory and doesn't even have memory flag bit. */ } - DELTAT->portstate = v & (0x80|0x40|0x20|0x10|0x01); /* start, rec, memory mode, repeat flag copy, reset(bit0) */ + portstate = v & (0x80|0x40|0x20|0x10|0x01); /* start, rec, memory mode, repeat flag copy, reset(bit0) */ - if( DELTAT->portstate&0x80 )/* START,REC,MEMDATA,REPEAT,SPOFF,--,--,RESET */ + if (portstate & 0x80)/* START,REC,MEMDATA,REPEAT,SPOFF,--,--,RESET */ { /* set PCM BUSY bit */ - DELTAT->PCM_BSY = 1; + PCM_BSY = 1; /* start ADPCM */ - DELTAT->now_step = 0; - DELTAT->acc = 0; - DELTAT->prev_acc = 0; - DELTAT->adpcml = 0; - DELTAT->adpcmd = YM_DELTAT_DELTA_DEF; - DELTAT->now_data = 0; + now_step = 0; + acc = 0; + prev_acc = 0; + adpcml = 0; + adpcmd = YM_DELTAT_DELTA_DEF; + now_data = 0; } - if( DELTAT->portstate&0x20 ) /* do we access external memory? */ + if (portstate & 0x20) /* do we access external memory? */ { - DELTAT->now_addr = DELTAT->start << 1; - DELTAT->memread = 2; /* two dummy reads needed before accesing external memory via register $08*/ + now_addr = start << 1; + memread = 2; /* two dummy reads needed before accesing external memory via register $08*/ /* if yes, then let's check if ADPCM memory is mapped and big enough */ - if(DELTAT->memory == nullptr) + if (!memory) { - DELTAT->device->logerror("YM Delta-T ADPCM rom not mapped\n"); - DELTAT->portstate = 0x00; - DELTAT->PCM_BSY = 0; + device->logerror("YM Delta-T ADPCM rom not mapped\n"); + portstate = 0x00; + PCM_BSY = 0; } else { - if( DELTAT->end >= DELTAT->memory_size ) /* Check End in Range */ + if (end >= memory_size) /* Check End in Range */ { - DELTAT->device->logerror("YM Delta-T ADPCM end out of range: $%08x\n", DELTAT->end); - DELTAT->end = DELTAT->memory_size - 1; + device->logerror("YM Delta-T ADPCM end out of range: $%08x\n", end); + end = memory_size - 1; } - if( DELTAT->start >= DELTAT->memory_size ) /* Check Start in Range */ + if (start >= memory_size) /* Check Start in Range */ { - DELTAT->device->logerror("YM Delta-T ADPCM start out of range: $%08x\n", DELTAT->start); - DELTAT->portstate = 0x00; - DELTAT->PCM_BSY = 0; + device->logerror("YM Delta-T ADPCM start out of range: $%08x\n", start); + portstate = 0x00; + PCM_BSY = 0; } } } else /* we access CPU memory (ADPCM data register $08) so we only reset now_addr here */ { - DELTAT->now_addr = 0; + now_addr = 0; } - if( DELTAT->portstate&0x01 ) + if (portstate & 0x01) { - DELTAT->portstate = 0x00; + portstate = 0x00; /* clear PCM BUSY bit (in status register) */ - DELTAT->PCM_BSY = 0; + PCM_BSY = 0; /* set BRDY flag */ - if(DELTAT->status_set_handler) - if(DELTAT->status_change_BRDY_bit) - (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit); + if (status_set_handler && status_change_BRDY_bit) + (status_set_handler)(status_change_which_chip, status_change_BRDY_bit); } break; + case 0x01: /* L,R,-,-,SAMPLE,DA/AD,RAMTYPE,ROM */ /* handle emulation mode */ - if(DELTAT->emulation_mode == YM_DELTAT_EMULATION_MODE_YM2610) + if (emulation_mode == EMULATION_MODE_YM2610) { v |= 0x01; /* YM2610 always uses ROM as an external memory and doesn't tave ROM/RAM memory flag bit. */ } - DELTAT->pan = &DELTAT->output_pointer[(v>>6)&0x03]; - if ((DELTAT->control2 & 3) != (v & 3)) + pan = &output_pointer[(v >> 6) & 0x03]; + if ((control2 & 3) != (v & 3)) { /*0-DRAM x1, 1-ROM, 2-DRAM x8, 3-ROM (3 is bad setting - not allowed by the manual) */ - if (DELTAT->DRAMportshift != dram_rightshift[v&3]) + if (DRAMportshift != dram_rightshift[v & 3]) { - DELTAT->DRAMportshift = dram_rightshift[v&3]; + DRAMportshift = dram_rightshift[v & 3]; /* final shift value depends on chip type and memory type selected: 8 for YM2610 (ROM only), @@ -288,30 +287,33 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: */ /* refresh addresses */ - DELTAT->start = (DELTAT->reg[0x3]*0x0100 | DELTAT->reg[0x2]) << (DELTAT->portshift - DELTAT->DRAMportshift); - DELTAT->end = (DELTAT->reg[0x5]*0x0100 | DELTAT->reg[0x4]) << (DELTAT->portshift - DELTAT->DRAMportshift); - DELTAT->end += (1 << (DELTAT->portshift-DELTAT->DRAMportshift) ) - 1; - DELTAT->limit = (DELTAT->reg[0xd]*0x0100 | DELTAT->reg[0xc]) << (DELTAT->portshift - DELTAT->DRAMportshift); + start = (reg[0x3] * 0x0100 | reg[0x2]) << (portshift - DRAMportshift); + end = (reg[0x5] * 0x0100 | reg[0x4]) << (portshift - DRAMportshift); + end += (1 << (portshift - DRAMportshift)) - 1; + limit = (reg[0xd]*0x0100 | reg[0xc]) << (portshift - DRAMportshift); } } - DELTAT->control2 = v; + control2 = v; break; + case 0x02: /* Start Address L */ case 0x03: /* Start Address H */ - DELTAT->start = (DELTAT->reg[0x3]*0x0100 | DELTAT->reg[0x2]) << (DELTAT->portshift - DELTAT->DRAMportshift); - /*logerror("DELTAT start: 02=%2x 03=%2x addr=%8x\n",DELTAT->reg[0x2], DELTAT->reg[0x3],DELTAT->start );*/ + start = (reg[0x3] * 0x0100 | reg[0x2]) << (portshift - DRAMportshift); + /*logerror("DELTAT start: 02=%2x 03=%2x addr=%8x\n",reg[0x2], reg[0x3],start );*/ break; + case 0x04: /* Stop Address L */ case 0x05: /* Stop Address H */ - DELTAT->end = (DELTAT->reg[0x5]*0x0100 | DELTAT->reg[0x4]) << (DELTAT->portshift - DELTAT->DRAMportshift); - DELTAT->end += (1 << (DELTAT->portshift-DELTAT->DRAMportshift) ) - 1; - /*logerror("DELTAT end : 04=%2x 05=%2x addr=%8x\n",DELTAT->reg[0x4], DELTAT->reg[0x5],DELTAT->end );*/ + end = (reg[0x5]*0x0100 | reg[0x4]) << (portshift - DRAMportshift); + end += (1 << (portshift - DRAMportshift)) - 1; + /*logerror("DELTAT end : 04=%2x 05=%2x addr=%8x\n",reg[0x4], reg[0x5],end );*/ break; + case 0x06: /* Prescale L (ADPCM and Record frq) */ case 0x07: /* Prescale H */ break; - case 0x08: /* ADPCM data */ + case 0x08: /* ADPCM data */ /* some examples: value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: @@ -326,70 +328,68 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: */ /* external memory write */ - if ( (DELTAT->portstate & 0xe0)==0x60 ) + if ((portstate & 0xe0) == 0x60) { - if (DELTAT->memread) + if (memread) { - DELTAT->now_addr = DELTAT->start << 1; - DELTAT->memread = 0; + now_addr = start << 1; + memread = 0; } - /*logerror("YM Delta-T memory write $%08x, v=$%02x\n", DELTAT->now_addr >> 1, v);*/ + /*logerror("YM Delta-T memory write $%08x, v=$%02x\n", now_addr >> 1, v);*/ - if ( DELTAT->now_addr != (DELTAT->end<<1) ) + if (now_addr != (end << 1)) { - DELTAT->memory[DELTAT->now_addr>>1] = v; - DELTAT->now_addr+=2; /* two nibbles at a time */ + memory[now_addr >> 1] = v; + now_addr += 2; /* two nybbles at a time */ /* reset BRDY bit in status register, which means we are processing the write */ - if(DELTAT->status_reset_handler) - if(DELTAT->status_change_BRDY_bit) - (DELTAT->status_reset_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit); + if (status_reset_handler && status_change_BRDY_bit) + (status_reset_handler)(status_change_which_chip, status_change_BRDY_bit); - /* setup a timer that will callback us in 10 master clock cycles for Y8950 - * in the callback set the BRDY flag to 1 , which means we have written the data. - * For now, we don't really do this; we simply reset and set the flag in zero time, so that the IRQ will work. - */ + /* setup a timer that will callback us in 10 master clock cycles for Y8950 + * in the callback set the BRDY flag to 1 , which means we have written the data. + * For now, we don't really do this; we simply reset and set the flag in zero time, so that the IRQ will work. + */ /* set BRDY bit in status register */ - if(DELTAT->status_set_handler) - if(DELTAT->status_change_BRDY_bit) - (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit); + if (status_set_handler && status_change_BRDY_bit) + (status_set_handler)(status_change_which_chip, status_change_BRDY_bit); } else { /* set EOS bit in status register */ - if(DELTAT->status_set_handler) - if(DELTAT->status_change_EOS_bit) - (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_EOS_bit); + if (status_set_handler && status_change_EOS_bit) + (status_set_handler)(status_change_which_chip, status_change_EOS_bit); } return; } /* ADPCM synthesis from CPU */ - if ( (DELTAT->portstate & 0xe0)==0x80 ) + if ((portstate & 0xe0) == 0x80) { - DELTAT->CPU_data = v; + CPU_data = v; /* Reset BRDY bit in status register, which means we are full of data */ - if(DELTAT->status_reset_handler) - if(DELTAT->status_change_BRDY_bit) - (DELTAT->status_reset_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit); + if (status_reset_handler && status_change_BRDY_bit) + (status_reset_handler)(status_change_which_chip, status_change_BRDY_bit); return; } break; + case 0x09: /* DELTA-N L (ADPCM Playback Prescaler) */ case 0x0a: /* DELTA-N H */ - DELTAT->delta = (DELTAT->reg[0xa]*0x0100 | DELTAT->reg[0x9]); - DELTAT->step = (uint32_t)( (double)(DELTAT->delta /* *(1<<(YM_DELTAT_SHIFT-16)) */ ) * (DELTAT->freqbase) ); - /*logerror("DELTAT deltan:09=%2x 0a=%2x\n",DELTAT->reg[0x9], DELTAT->reg[0xa]);*/ + delta = (reg[0xa] * 0x0100 | reg[0x9]); + step = uint32_t(double(delta /* *(1<<(YM_DELTAT_SHIFT-16)) */) * freqbase); + /*logerror("DELTAT deltan:09=%2x 0a=%2x\n",reg[0x9], reg[0xa]);*/ break; + case 0x0b: /* Output level control (volume, linear) */ { - int32_t oldvol = DELTAT->volume; - DELTAT->volume = (v&0xff) * (DELTAT->output_range/256) / YM_DELTAT_DECODE_RANGE; + const int32_t oldvol = volume; + volume = (v & 0xff) * (output_range / 256) / YM_DELTAT_DECODE_RANGE; /* v * ((1<<16)>>8) >> 15; * thus: v * (1<<8) >> 15; * thus: output_range must be (1 << (15+8)) at least @@ -397,68 +397,67 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: * v * (1<<15) >> 15; */ /*logerror("DELTAT vol = %2x\n",v&0xff);*/ - if( oldvol != 0 ) + if (oldvol != 0) { - DELTAT->adpcml = (int)((double)DELTAT->adpcml / (double)oldvol * (double)DELTAT->volume); + adpcml = int(double(adpcml) / double(oldvol) * double(volume)); } } break; + case 0x0c: /* Limit Address L */ case 0x0d: /* Limit Address H */ - DELTAT->limit = (DELTAT->reg[0xd]*0x0100 | DELTAT->reg[0xc]) << (DELTAT->portshift - DELTAT->DRAMportshift); - /*logerror("DELTAT limit: 0c=%2x 0d=%2x addr=%8x\n",DELTAT->reg[0xc], DELTAT->reg[0xd],DELTAT->limit );*/ + limit = (reg[0xd] * 0x0100 | reg[0xc]) << (portshift - DRAMportshift); + /*logerror("DELTAT limit: 0c=%2x 0d=%2x addr=%8x\n",reg[0xc], reg[0xd],limit );*/ break; } } -void YM_DELTAT_ADPCM_Reset(YM_DELTAT *DELTAT,int pan,int emulation_mode,device_t *device) +void YM_DELTAT::ADPCM_Reset(int panidx, int mode, device_t *dev) { - DELTAT->device = device; - DELTAT->now_addr = 0; - DELTAT->now_step = 0; - DELTAT->step = 0; - DELTAT->start = 0; - DELTAT->end = 0; - DELTAT->limit = ~0; /* this way YM2610 and Y8950 (both of which don't have limit address reg) will still work */ - DELTAT->volume = 0; - DELTAT->pan = &DELTAT->output_pointer[pan]; - DELTAT->acc = 0; - DELTAT->prev_acc = 0; - DELTAT->adpcmd = 127; - DELTAT->adpcml = 0; - DELTAT->emulation_mode = (uint8_t)emulation_mode; - DELTAT->portstate = (emulation_mode == YM_DELTAT_EMULATION_MODE_YM2610) ? 0x20 : 0; - DELTAT->control2 = (emulation_mode == YM_DELTAT_EMULATION_MODE_YM2610) ? 0x01 : 0; /* default setting depends on the emulation mode. MSX demo called "facdemo_4" doesn't setup control2 register at all and still works */ - DELTAT->DRAMportshift = dram_rightshift[DELTAT->control2 & 3]; + device = dev; + now_addr = 0; + now_step = 0; + step = 0; + start = 0; + end = 0; + limit = ~0; /* this way YM2610 and Y8950 (both of which don't have limit address reg) will still work */ + volume = 0; + pan = &output_pointer[panidx]; + acc = 0; + prev_acc = 0; + adpcmd = 127; + adpcml = 0; + emulation_mode = uint8_t(mode); + portstate = (emulation_mode == EMULATION_MODE_YM2610) ? 0x20 : 0; + control2 = (emulation_mode == EMULATION_MODE_YM2610) ? 0x01 : 0; /* default setting depends on the emulation mode. MSX demo called "facdemo_4" doesn't setup control2 register at all and still works */ + DRAMportshift = dram_rightshift[control2 & 3]; /* The flag mask register disables the BRDY after the reset, however ** as soon as the mask is enabled the flag needs to be set. */ /* set BRDY bit in status register */ - if(DELTAT->status_set_handler) - if(DELTAT->status_change_BRDY_bit) - (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit); + if (status_set_handler && status_change_BRDY_bit) + (status_set_handler)(status_change_which_chip, status_change_BRDY_bit); } -void YM_DELTAT_postload(YM_DELTAT *DELTAT,uint8_t *regs) +void YM_DELTAT::postload(uint8_t *regs) { - int r; - /* to keep adpcml */ - DELTAT->volume = 0; + volume = 0; /* update */ - for(r=1;r<16;r++) - YM_DELTAT_ADPCM_Write(DELTAT,r,regs[r]); - DELTAT->reg[0] = regs[0]; + for (int r = 1; r < 16; r++) + ADPCM_Write(r, regs[r]); + reg[0] = regs[0]; /* current rom data */ - if (DELTAT->memory) - DELTAT->now_data = *(DELTAT->memory + (DELTAT->now_addr>>1) ); + if (memory) + now_data = *(memory + (now_addr >> 1)); } -void YM_DELTAT_savestate(device_t *device,YM_DELTAT *DELTAT) +void YM_DELTAT::savestate(device_t *device) { #ifdef MAME_EMU_SAVE_H + YM_DELTAT *const DELTAT = this; // makes the save name sensible device->save_item(NAME(DELTAT->portstate)); device->save_item(NAME(DELTAT->now_addr)); device->save_item(NAME(DELTAT->now_step)); @@ -615,7 +614,7 @@ static inline void YM_DELTAT_synthesis_from_CPU_memory(YM_DELTAT *DELTAT) /* ADPCM B (Delta-T control type) */ -void YM_DELTAT_ADPCM_CALC(YM_DELTAT *DELTAT) +void YM_DELTAT::ADPCM_CALC() { /* some examples: @@ -630,22 +629,22 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: */ - if ( (DELTAT->portstate & 0xe0)==0xa0 ) + if ( (portstate & 0xe0)==0xa0 ) { - YM_DELTAT_synthesis_from_external_memory(DELTAT); + YM_DELTAT_synthesis_from_external_memory(this); return; } - if ( (DELTAT->portstate & 0xe0)==0x80 ) + if ( (portstate & 0xe0)==0x80 ) { /* ADPCM synthesis from CPU-managed memory (from reg $08) */ - YM_DELTAT_synthesis_from_CPU_memory(DELTAT); /* change output based on data in ADPCM data reg ($08) */ + YM_DELTAT_synthesis_from_CPU_memory(this); /* change output based on data in ADPCM data reg ($08) */ return; } //todo: ADPCM analysis -// if ( (DELTAT->portstate & 0xe0)==0xc0 ) -// if ( (DELTAT->portstate & 0xe0)==0xe0 ) +// if ( (portstate & 0xe0)==0xc0 ) +// if ( (portstate & 0xe0)==0xe0 ) return; } diff --git a/src/devices/sound/ymdeltat.h b/src/devices/sound/ymdeltat.h index 364ef4d4fe6..f52bd46f5cb 100644 --- a/src/devices/sound/ymdeltat.h +++ b/src/devices/sound/ymdeltat.h @@ -1,21 +1,19 @@ // license:GPL-2.0+ // copyright-holders:Jarek Burczynski -#pragma once - -#ifndef __YMDELTAT_H__ -#define __YMDELTAT_H__ +#ifndef MAME_SOUND_YMDELTAT_H +#define MAME_SOUND_YMDELTAT_H -#define YM_DELTAT_SHIFT (16) - -#define YM_DELTAT_EMULATION_MODE_NORMAL 0 -#define YM_DELTAT_EMULATION_MODE_YM2610 1 +#pragma once typedef void (*STATUS_CHANGE_HANDLER)(void *chip, uint8_t status_bits); /* DELTA-T (adpcm type B) struct */ -struct YM_DELTAT { /* AT: rearranged and tightened structure */ +struct YM_DELTAT { /* AT: rearranged and tightened structure */ + static constexpr int EMULATION_MODE_NORMAL = 0; + static constexpr int EMULATION_MODE_YM2610 = 1; + uint8_t *memory; int32_t *output_pointer;/* pointer of output pointers */ int32_t *pan; /* pan : &output_pointer[pan] */ @@ -72,16 +70,16 @@ struct YM_DELTAT { /* AT: rearranged and tightened structure */ uint8_t reg[16]; /* adpcm registers */ uint8_t emulation_mode; /* which chip we're emulating */ device_t *device; -}; -/*void YM_DELTAT_BRDY_callback(YM_DELTAT *DELTAT);*/ + /*void BRDY_callback();*/ -uint8_t YM_DELTAT_ADPCM_Read(YM_DELTAT *DELTAT); -void YM_DELTAT_ADPCM_Write(YM_DELTAT *DELTAT,int r,int v); -void YM_DELTAT_ADPCM_Reset(YM_DELTAT *DELTAT,int pan,int emulation_mode, device_t *device); -void YM_DELTAT_ADPCM_CALC(YM_DELTAT *DELTAT); + uint8_t ADPCM_Read(); + void ADPCM_Write(int r, int v); + void ADPCM_Reset(int panidx, int mode, device_t *dev); + void ADPCM_CALC(); -void YM_DELTAT_postload(YM_DELTAT *DELTAT,uint8_t *regs); -void YM_DELTAT_savestate(device_t *device,YM_DELTAT *DELTAT); + void postload(uint8_t *regs); + void savestate(device_t *device); +}; -#endif /* __YMDELTAT_H__ */ +#endif // MAME_SOUND_YMDELTAT_H diff --git a/src/devices/sound/ymf262.cpp b/src/devices/sound/ymf262.cpp index 05af102bd85..f69c15da9d4 100644 --- a/src/devices/sound/ymf262.cpp +++ b/src/devices/sound/ymf262.cpp @@ -59,7 +59,6 @@ differences between OPL2 and OPL3 shown in datasheets: #include "ymf262.h" - /* output final shift */ #if (OPL3_SAMPLE_BITS==16) #define FINAL_SH (0) @@ -108,6 +107,13 @@ differences between OPL2 and OPL3 shown in datasheets: #define EG_REL 1 #define EG_OFF 0 +/* Routing connections between slots */ +#define CONN_NULL 0 +#define CONN_CHAN0 1 +#define CONN_PHASEMOD 19 +#define CONN_PHASEMOD2 20 + +namespace { /* save output as raw 16-bit sample */ @@ -151,6 +157,7 @@ struct OPL3_SLOT uint32_t Cnt; /* frequency counter */ uint32_t Incr; /* frequency counter step */ uint8_t FB; /* feedback shift value */ + uint8_t conn_enum; /* slot output route */ int32_t *connect; /* slot output pointer */ int32_t op1_out[2]; /* slot1 output for feedback */ uint8_t CON; /* connection (algorithm) type */ @@ -183,8 +190,8 @@ struct OPL3_SLOT uint8_t waveform_number; unsigned int wavetable; -//unsigned char reserved[128-84];//speedup: pump up the struct size to power of 2 -unsigned char reserved[128-100];//speedup: pump up the struct size to power of 2 + //unsigned char reserved[128-84];//speedup: pump up the struct size to power of 2 + unsigned char reserved[128-100];//speedup: pump up the struct size to power of 2 }; @@ -209,7 +216,7 @@ struct OPL3_CH */ uint8_t extended; /* set to 1 if this channel forms up a 4op channel with another channel(only used by first of pair of channels, ie 0,1,2 and 9,10,11) */ -unsigned char reserved[512-272];//speedup:pump up the struct size to power of 2 + unsigned char reserved[512-272];//speedup:pump up the struct size to power of 2 }; @@ -261,12 +268,12 @@ struct OPL3 uint8_t nts; /* NTS (note select) */ /* external event callback handlers */ - OPL3_TIMERHANDLER timer_handler;/* TIMER handler */ - void *TimerParam; /* TIMER parameter */ - OPL3_IRQHANDLER IRQHandler; /* IRQ handler */ - void *IRQParam; /* IRQ parameter */ - OPL3_UPDATEHANDLER UpdateHandler;/* stream update handler */ - void *UpdateParam; /* stream update parameter */ + OPL3_TIMERHANDLER timer_handler; + device_t *TimerParam; + OPL3_IRQHANDLER IRQHandler; + device_t *IRQParam; + OPL3_UPDATEHANDLER UpdateHandler; + device_t *UpdateParam; uint8_t type; /* chip type */ int clock; /* master clock (Hz) */ @@ -274,8 +281,27 @@ struct OPL3 double freqbase; /* frequency base */ attotime TimerBase; /* Timer base time (==sampling time)*/ device_t *device; + + /* Optional handlers */ + void SetTimerHandler(OPL3_TIMERHANDLER handler, device_t *device) + { + timer_handler = handler; + TimerParam = device; + } + void SetIRQHandler(OPL3_IRQHANDLER handler, device_t *device) + { + IRQHandler = handler; + IRQParam = device; + } + void SetUpdateHandler(OPL3_UPDATEHANDLER handler, device_t *device) + { + UpdateHandler = handler; + UpdateParam = device; + } }; +} // anonymous namespace + /* mapping of register number (offset) to slot number used by the emulator */ @@ -600,8 +626,17 @@ static int num_lock = 0; #define SLOT8_2 (&chip->P_CH[8].SLOT[SLOT2]) - - +static inline void OPL3_SLOT_CONNECT(OPL3 *chip, OPL3_SLOT *slot) { + if (slot->conn_enum == CONN_NULL) { + slot->connect = nullptr; + } else if (slot->conn_enum >= CONN_CHAN0 && slot->conn_enum < CONN_PHASEMOD) { + slot->connect = &chip->chanout[slot->conn_enum]; + } else if (slot->conn_enum == CONN_PHASEMOD) { + slot->connect = &chip->phase_modulation; + } else if (slot->conn_enum == CONN_PHASEMOD2) { + slot->connect = &chip->phase_modulation2; + } +} static inline int limit( int val, int max, int min ) { if ( val > max ) @@ -887,19 +922,21 @@ static inline void chan_calc( OPL3 *chip, OPL3_CH *CH ) out = SLOT->op1_out[0] + SLOT->op1_out[1]; SLOT->op1_out[0] = SLOT->op1_out[1]; SLOT->op1_out[1] = 0; - if( env < ENV_QUIET ) + if (env < ENV_QUIET) { if (!SLOT->FB) out = 0; SLOT->op1_out[1] = op_calc1(SLOT->Cnt, env, (out<FB), SLOT->wavetable ); } - *SLOT->connect += SLOT->op1_out[1]; + if (SLOT->connect) { + *SLOT->connect += SLOT->op1_out[1]; + } //logerror("out0=%5i vol0=%4i ", SLOT->op1_out[1], env ); /* SLOT 2 */ SLOT++; env = volume_calc(SLOT); - if( env < ENV_QUIET ) + if ((env < ENV_QUIET) && SLOT->connect) *SLOT->connect += op_calc(SLOT->Cnt, env, chip->phase_modulation, SLOT->wavetable); //logerror("out1=%5i vol1=%4i\n", op_calc(SLOT->Cnt, env, chip->phase_modulation, SLOT->wavetable), env ); @@ -917,13 +954,13 @@ static inline void chan_calc_ext( OPL3 *chip, OPL3_CH *CH ) /* SLOT 1 */ SLOT = &CH->SLOT[SLOT1]; env = volume_calc(SLOT); - if( env < ENV_QUIET ) + if (env < ENV_QUIET && SLOT->connect) *SLOT->connect += op_calc(SLOT->Cnt, env, chip->phase_modulation2, SLOT->wavetable ); /* SLOT 2 */ SLOT++; env = volume_calc(SLOT); - if( env < ENV_QUIET ) + if (env < ENV_QUIET && SLOT->connect) *SLOT->connect += op_calc(SLOT->Cnt, env, chip->phase_modulation, SLOT->wavetable); } @@ -1616,7 +1653,6 @@ static void update_channels(OPL3 *chip, OPL3_CH *CH) static void OPL3WriteReg(OPL3 *chip, int r, int v) { OPL3_CH *CH; - signed int *chanout = chip->chanout; unsigned int ch_offset = 0; int slot; int block_fnum; @@ -2094,45 +2130,51 @@ static void OPL3WriteReg(OPL3 *chip, int r, int v) case 0: /* 1 -> 2 -> 3 -> 4 - out */ - CH->SLOT[SLOT1].connect = &chip->phase_modulation; - CH->SLOT[SLOT2].connect = &chip->phase_modulation2; - (CH+3)->SLOT[SLOT1].connect = &chip->phase_modulation; - (CH+3)->SLOT[SLOT2].connect = &chanout[ chan_no + 3 ]; + CH->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + CH->SLOT[SLOT2].conn_enum = CONN_PHASEMOD2; + (CH+3)->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + (CH+3)->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no + 3; break; case 1: /* 1 -> 2 -\ 3 -> 4 -+- out */ - CH->SLOT[SLOT1].connect = &chip->phase_modulation; - CH->SLOT[SLOT2].connect = &chanout[ chan_no ]; - (CH+3)->SLOT[SLOT1].connect = &chip->phase_modulation; - (CH+3)->SLOT[SLOT2].connect = &chanout[ chan_no + 3 ]; + CH->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + CH->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no; + (CH+3)->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + (CH+3)->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no + 3; break; case 2: /* 1 -----------\ 2 -> 3 -> 4 -+- out */ - CH->SLOT[SLOT1].connect = &chanout[ chan_no ]; - CH->SLOT[SLOT2].connect = &chip->phase_modulation2; - (CH+3)->SLOT[SLOT1].connect = &chip->phase_modulation; - (CH+3)->SLOT[SLOT2].connect = &chanout[ chan_no + 3 ]; + CH->SLOT[SLOT1].conn_enum = CONN_CHAN0 + chan_no; + CH->SLOT[SLOT2].conn_enum = CONN_PHASEMOD2; + (CH+3)->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + (CH+3)->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no + 3; break; case 3: /* 1 ------\ 2 -> 3 -+- out 4 ------/ */ - CH->SLOT[SLOT1].connect = &chanout[ chan_no ]; - CH->SLOT[SLOT2].connect = &chip->phase_modulation2; - (CH+3)->SLOT[SLOT1].connect = &chanout[ chan_no + 3 ]; - (CH+3)->SLOT[SLOT2].connect = &chanout[ chan_no + 3 ]; + CH->SLOT[SLOT1].conn_enum = CONN_CHAN0 + chan_no; + CH->SLOT[SLOT2].conn_enum = CONN_PHASEMOD2; + (CH+3)->SLOT[SLOT1].conn_enum = CONN_CHAN0 + chan_no + 3; + (CH+3)->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no + 3; break; } + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT1]); + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT2]); + OPL3_SLOT_CONNECT(chip, &(CH+3)->SLOT[SLOT1]); + OPL3_SLOT_CONNECT(chip, &(CH+3)->SLOT[SLOT2]); } else { /* 2 operators mode */ - CH->SLOT[SLOT1].connect = CH->SLOT[SLOT1].CON ? &chanout[(r&0xf)+ch_offset] : &chip->phase_modulation; - CH->SLOT[SLOT2].connect = &chanout[(r&0xf)+ch_offset]; + CH->SLOT[SLOT1].conn_enum = CH->SLOT[SLOT1].CON ? CONN_CHAN0 + (r&0xf)+ch_offset : CONN_PHASEMOD; + CH->SLOT[SLOT2].conn_enum = CONN_CHAN0 + (r&0xf)+ch_offset; + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT1]); + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT2]); } break; @@ -2146,60 +2188,70 @@ static void OPL3WriteReg(OPL3 *chip, int r, int v) case 0: /* 1 -> 2 -> 3 -> 4 - out */ - (CH-3)->SLOT[SLOT1].connect = &chip->phase_modulation; - (CH-3)->SLOT[SLOT2].connect = &chip->phase_modulation2; - CH->SLOT[SLOT1].connect = &chip->phase_modulation; - CH->SLOT[SLOT2].connect = &chanout[ chan_no ]; + (CH-3)->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + (CH-3)->SLOT[SLOT2].conn_enum = CONN_PHASEMOD2; + CH->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + CH->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no; break; case 1: /* 1 -> 2 -\ 3 -> 4 -+- out */ - (CH-3)->SLOT[SLOT1].connect = &chip->phase_modulation; - (CH-3)->SLOT[SLOT2].connect = &chanout[ chan_no - 3 ]; - CH->SLOT[SLOT1].connect = &chip->phase_modulation; - CH->SLOT[SLOT2].connect = &chanout[ chan_no ]; + (CH-3)->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + (CH-3)->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no - 3; + CH->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + CH->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no; break; case 2: /* 1 -----------\ 2 -> 3 -> 4 -+- out */ - (CH-3)->SLOT[SLOT1].connect = &chanout[ chan_no - 3 ]; - (CH-3)->SLOT[SLOT2].connect = &chip->phase_modulation2; - CH->SLOT[SLOT1].connect = &chip->phase_modulation; - CH->SLOT[SLOT2].connect = &chanout[ chan_no ]; + (CH-3)->SLOT[SLOT1].conn_enum = CONN_CHAN0 + chan_no - 3; + (CH-3)->SLOT[SLOT2].conn_enum = CONN_PHASEMOD2; + CH->SLOT[SLOT1].conn_enum = CONN_PHASEMOD; + CH->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no; break; case 3: /* 1 ------\ 2 -> 3 -+- out 4 ------/ */ - (CH-3)->SLOT[SLOT1].connect = &chanout[ chan_no - 3 ]; - (CH-3)->SLOT[SLOT2].connect = &chip->phase_modulation2; - CH->SLOT[SLOT1].connect = &chanout[ chan_no ]; - CH->SLOT[SLOT2].connect = &chanout[ chan_no ]; + (CH-3)->SLOT[SLOT1].conn_enum = CONN_CHAN0 + chan_no - 3; + (CH-3)->SLOT[SLOT2].conn_enum = CONN_PHASEMOD2; + CH->SLOT[SLOT1].conn_enum = CONN_CHAN0 + chan_no; + CH->SLOT[SLOT2].conn_enum = CONN_CHAN0 + chan_no; break; } + OPL3_SLOT_CONNECT(chip, &(CH-3)->SLOT[SLOT1]); + OPL3_SLOT_CONNECT(chip, &(CH-3)->SLOT[SLOT2]); + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT1]); + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT2]); } else { /* 2 operators mode */ - CH->SLOT[SLOT1].connect = CH->SLOT[SLOT1].CON ? &chanout[(r&0xf)+ch_offset] : &chip->phase_modulation; - CH->SLOT[SLOT2].connect = &chanout[(r&0xf)+ch_offset]; + CH->SLOT[SLOT1].conn_enum = CH->SLOT[SLOT1].CON ? CONN_CHAN0 + (r&0xf)+ch_offset : CONN_PHASEMOD; + CH->SLOT[SLOT2].conn_enum = CONN_CHAN0 + (r&0xf)+ch_offset; + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT1]); + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT2]); } break; default: /* 2 operators mode */ - CH->SLOT[SLOT1].connect = CH->SLOT[SLOT1].CON ? &chanout[(r&0xf)+ch_offset] : &chip->phase_modulation; - CH->SLOT[SLOT2].connect = &chanout[(r&0xf)+ch_offset]; + CH->SLOT[SLOT1].conn_enum = CH->SLOT[SLOT1].CON ? CONN_CHAN0 + (r&0xf)+ch_offset : CONN_PHASEMOD; + CH->SLOT[SLOT2].conn_enum = CONN_CHAN0 + (r&0xf)+ch_offset; + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT1]); + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT2]); break; } } else { /* OPL2 mode - always 2 operators mode */ - CH->SLOT[SLOT1].connect = CH->SLOT[SLOT1].CON ? &chanout[(r&0xf)+ch_offset] : &chip->phase_modulation; - CH->SLOT[SLOT2].connect = &chanout[(r&0xf)+ch_offset]; + CH->SLOT[SLOT1].conn_enum = CH->SLOT[SLOT1].CON ? CONN_CHAN0 + (r&0xf)+ch_offset : CONN_PHASEMOD; + CH->SLOT[SLOT2].conn_enum = CONN_CHAN0 + (r&0xf)+ch_offset; + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT1]); + OPL3_SLOT_CONNECT(chip, &CH->SLOT[SLOT2]); } break; @@ -2327,30 +2379,13 @@ static void OPL3Destroy(OPL3 *chip) } -/* Optional handlers */ - -static void OPL3SetTimerHandler(OPL3 *chip,OPL3_TIMERHANDLER timer_handler,void *param) -{ - chip->timer_handler = timer_handler; - chip->TimerParam = param; -} -static void OPL3SetIRQHandler(OPL3 *chip,OPL3_IRQHANDLER IRQHandler,void *param) -{ - chip->IRQHandler = IRQHandler; - chip->IRQParam = param; -} -static void OPL3SetUpdateHandler(OPL3 *chip,OPL3_UPDATEHANDLER UpdateHandler,void *param) -{ - chip->UpdateHandler = UpdateHandler; - chip->UpdateParam = param; -} - /* YMF262 I/O interface */ static int OPL3Write(OPL3 *chip, int a, int v) { /* data bus is 8 bits */ v &= 0xff; + switch(a&3) { case 0: /* address port 0 (register set #1) */ @@ -2421,12 +2456,88 @@ static int OPL3TimerOver(OPL3 *chip,int c) return chip->status>>7; } +static void OPL3_save_state(OPL3 *chip, device_t *device) { + for (int ch=0; ch<18; ch++) { + OPL3_CH *channel = &chip->P_CH[ch]; + device->save_item(NAME(channel->block_fnum), ch); + device->save_item(NAME(channel->fc), ch); + device->save_item(NAME(channel->ksl_base), ch); + device->save_item(NAME(channel->kcode), ch); + device->save_item(NAME(channel->extended), ch); + + for (int sl=0; sl<2; sl++) { + OPL3_SLOT *slot = &channel->SLOT[sl]; + device->save_item(NAME(slot->ar), ch*2+sl); + device->save_item(NAME(slot->dr), ch*2+sl); + device->save_item(NAME(slot->rr), ch*2+sl); + device->save_item(NAME(slot->KSR), ch*2+sl); + device->save_item(NAME(slot->ksl), ch*2+sl); + device->save_item(NAME(slot->ksr), ch*2+sl); + device->save_item(NAME(slot->mul), ch*2+sl); + + device->save_item(NAME(slot->Cnt), ch*2+sl); + device->save_item(NAME(slot->Incr), ch*2+sl); + device->save_item(NAME(slot->FB), ch*2+sl); + device->save_item(NAME(slot->conn_enum), ch*2+sl); + device->save_item(NAME(slot->op1_out), ch*2+sl); + device->save_item(NAME(slot->CON), ch*2+sl); + + device->save_item(NAME(slot->eg_type), ch*2+sl); + device->save_item(NAME(slot->state), ch*2+sl); + device->save_item(NAME(slot->TL), ch*2+sl); + device->save_item(NAME(slot->TLL), ch*2+sl); + device->save_item(NAME(slot->volume), ch*2+sl); + device->save_item(NAME(slot->sl), ch*2+sl); + + device->save_item(NAME(slot->eg_m_ar), ch*2+sl); + device->save_item(NAME(slot->eg_sh_ar), ch*2+sl); + device->save_item(NAME(slot->eg_sel_ar), ch*2+sl); + device->save_item(NAME(slot->eg_m_dr), ch*2+sl); + device->save_item(NAME(slot->eg_sh_dr), ch*2+sl); + device->save_item(NAME(slot->eg_sel_dr), ch*2+sl); + device->save_item(NAME(slot->eg_m_rr), ch*2+sl); + device->save_item(NAME(slot->eg_sh_rr), ch*2+sl); + device->save_item(NAME(slot->eg_sel_rr), ch*2+sl); + + device->save_item(NAME(slot->key), ch*2+sl); + + device->save_item(NAME(slot->AMmask), ch*2+sl); + device->save_item(NAME(slot->vib), ch*2+sl); + + device->save_item(NAME(slot->waveform_number), ch*2+sl); + device->save_item(NAME(slot->wavetable), ch*2+sl); + } + } + + device->save_item(NAME(chip->pan)); + device->save_item(NAME(chip->pan_ctrl_value)); + device->save_item(NAME(chip->lfo_am_depth)); + device->save_item(NAME(chip->lfo_pm_depth_range)); + device->save_item(NAME(chip->OPL3_mode)); + device->save_item(NAME(chip->rhythm)); + + device->save_item(NAME(chip->address)); + device->save_item(NAME(chip->status)); + device->save_item(NAME(chip->statusmask)); +} void * ymf262_init(device_t *device, int clock, int rate) { - return OPL3Create(device,clock,rate,OPL3_TYPE_YMF262); + void *chip = OPL3Create(device,clock,rate,OPL3_TYPE_YMF262); + OPL3_save_state((OPL3 *)chip, device); + + return chip; +} + +void ymf262_post_load(void *chip) { + OPL3 *opl3 = (OPL3 *)chip; + for (int ch=0; ch<18; ch++) { + for (int sl=0; sl<2; sl++) { + OPL3_SLOT_CONNECT(opl3, &(opl3->P_CH[ch].SLOT[sl])); + } + } } void ymf262_shutdown(void *chip) @@ -2461,17 +2572,17 @@ int ymf262_timer_over(void *chip, int c) return OPL3TimerOver((OPL3 *)chip, c); } -void ymf262_set_timer_handler(void *chip, OPL3_TIMERHANDLER timer_handler, void *param) +void ymf262_set_timer_handler(void *chip, OPL3_TIMERHANDLER timer_handler, device_t *device) { - OPL3SetTimerHandler((OPL3 *)chip, timer_handler, param); + reinterpret_cast(chip)->SetTimerHandler(timer_handler, device); } -void ymf262_set_irq_handler(void *chip,OPL3_IRQHANDLER IRQHandler,void *param) +void ymf262_set_irq_handler(void *chip, OPL3_IRQHANDLER IRQHandler, device_t *device) { - OPL3SetIRQHandler((OPL3 *)chip, IRQHandler, param); + reinterpret_cast(chip)->SetIRQHandler(IRQHandler, device); } -void ymf262_set_update_handler(void *chip,OPL3_UPDATEHANDLER UpdateHandler,void *param) +void ymf262_set_update_handler(void *chip, OPL3_UPDATEHANDLER UpdateHandler, device_t *device) { - OPL3SetUpdateHandler((OPL3 *)chip, UpdateHandler, param); + reinterpret_cast(chip)->SetUpdateHandler(UpdateHandler, device); } diff --git a/src/devices/sound/ymf262.h b/src/devices/sound/ymf262.h index 638a551c92c..b82a89b9724 100644 --- a/src/devices/sound/ymf262.h +++ b/src/devices/sound/ymf262.h @@ -1,24 +1,13 @@ // license:GPL-2.0+ // copyright-holders:Jarek Burczynski -#pragma once +#ifndef MAME_SOUND_YMF262_H +#define MAME_SOUND_YMF262_H -#ifndef __YMF262_H__ -#define __YMF262_H__ +#pragma once /* select number of output bits: 8 or 16 */ #define OPL3_SAMPLE_BITS 16 -/* compiler dependence */ -#ifndef __OSDCOMM_H__ -#define __OSDCOMM_H__ -typedef unsigned char uint8_t; /* unsigned 8bit */ -typedef unsigned short uint16_t; /* unsigned 16bit */ -typedef unsigned int uint32_t; /* unsigned 32bit */ -typedef signed char int8_t; /* signed 8bit */ -typedef signed short int16_t; /* signed 16bit */ -typedef signed int int32_t; /* signed 32bit */ -#endif - typedef stream_sample_t OPL3SAMPLE; /* #if (OPL3_SAMPLE_BITS==16) @@ -29,12 +18,13 @@ typedef int8_t OPL3SAMPLE; #endif */ -typedef void (*OPL3_TIMERHANDLER)(void *param,int timer,const attotime &period); -typedef void (*OPL3_IRQHANDLER)(void *param,int irq); -typedef void (*OPL3_UPDATEHANDLER)(void *param,int min_interval_us); +typedef void (*OPL3_TIMERHANDLER)(device_t *device,int timer,const attotime &period); +typedef void (*OPL3_IRQHANDLER)(device_t *device,int irq); +typedef void (*OPL3_UPDATEHANDLER)(device_t *device,int min_interval_us); void *ymf262_init(device_t *device, int clock, int rate); +void ymf262_post_load(void *chip); void ymf262_shutdown(void *chip); void ymf262_reset_chip(void *chip); int ymf262_write(void *chip, int a, int v); @@ -42,9 +32,9 @@ unsigned char ymf262_read(void *chip, int a); int ymf262_timer_over(void *chip, int c); void ymf262_update_one(void *chip, OPL3SAMPLE **buffers, int length); -void ymf262_set_timer_handler(void *chip, OPL3_TIMERHANDLER TimerHandler, void *param); -void ymf262_set_irq_handler(void *chip, OPL3_IRQHANDLER IRQHandler, void *param); -void ymf262_set_update_handler(void *chip, OPL3_UPDATEHANDLER UpdateHandler, void *param); +void ymf262_set_timer_handler(void *chip, OPL3_TIMERHANDLER TimerHandler, device_t *device); +void ymf262_set_irq_handler(void *chip, OPL3_IRQHANDLER IRQHandler, device_t *device); +void ymf262_set_update_handler(void *chip, OPL3_UPDATEHANDLER UpdateHandler, device_t *device); -#endif /* __YMF262_H__ */ +#endif // MAME_SOUND_YMF262_H diff --git a/src/devices/sound/ymf271.cpp b/src/devices/sound/ymf271.cpp index 74ac30f0ca6..aeae81a9f49 100644 --- a/src/devices/sound/ymf271.cpp +++ b/src/devices/sound/ymf271.cpp @@ -1744,10 +1744,10 @@ void ymf271_device::device_reset() m_irq_handler(0); } -const device_type YMF271 = device_creator; +DEFINE_DEVICE_TYPE(YMF271, ymf271_device, "ymf271", "Yamaha YMF271") ymf271_device::ymf271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, YMF271, "YMF271", tag, owner, clock, "ymf271", __FILE__) + : device_t(mconfig, YMF271, tag, owner, clock) , device_sound_interface(mconfig, *this) , m_timerA(0) , m_timerB(0) diff --git a/src/devices/sound/ymf271.h b/src/devices/sound/ymf271.h index 5c8598b54e6..aab5763f597 100644 --- a/src/devices/sound/ymf271.h +++ b/src/devices/sound/ymf271.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert, R. Belmont, hap -#pragma once +#ifndef MAME_SOUND_YMF271_H +#define MAME_SOUND_YMF271_H -#ifndef __YMF271_H__ -#define __YMF271_H__ +#pragma once #define MCFG_YMF271_IRQ_HANDLER(_devcb) \ @@ -21,9 +21,9 @@ public: ymf271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast(device).m_irq_handler.set_callback(object); } - template static devcb_base &set_ext_read_handler(device_t &device, _Object object) { return downcast(device).m_ext_read_handler.set_callback(object); } - template static devcb_base &set_ext_write_handler(device_t &device, _Object object) { return downcast(device).m_ext_write_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast(device).m_ext_read_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_ext_write_handler(device_t &device, Object &&cb) { return downcast(device).m_ext_write_handler.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -36,6 +36,7 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + private: struct YMF271Slot { @@ -158,7 +159,6 @@ private: devcb_write8 m_ext_write_handler; }; -extern const device_type YMF271; - +DECLARE_DEVICE_TYPE(YMF271, ymf271_device) -#endif /* __YMF271_H__ */ +#endif // MAME_SOUND_YMF271_H diff --git a/src/devices/sound/ymf278b.cpp b/src/devices/sound/ymf278b.cpp index a57f006d06c..ab76ffa4a90 100644 --- a/src/devices/sound/ymf278b.cpp +++ b/src/devices/sound/ymf278b.cpp @@ -942,28 +942,6 @@ void ymf278b_device::register_save_state() // device_start - device-specific startup //------------------------------------------------- -static void ymf278b_ymf262_irq_handler(void *param,int irq) -{ -} - - -static void ymf278b_ymf262_timer_handler(void *param, int c, const attotime &period) -{ -} - -static void ymf278b_ymf262_update_request(void *param, int interval) -{ - ymf278b_device *ymf278b = (ymf278b_device *) param; - ymf278b->ymf262_update_request(); -} - - -void ymf278b_device::ymf262_update_request() -{ - m_stream_ymf262->update(); -} - - void ymf278b_device::device_start() { int i; @@ -1019,19 +997,19 @@ void ymf278b_device::device_start() m_stream_ymf262 = machine().sound().stream_alloc(*this, 0, 4, ymf262_clock / 288); /* YMF262 setup */ - ymf262_set_timer_handler (m_ymf262, ymf278b_ymf262_timer_handler, this); - ymf262_set_irq_handler (m_ymf262, ymf278b_ymf262_irq_handler, this); - ymf262_set_update_handler(m_ymf262, ymf278b_ymf262_update_request, this); + ymf262_set_timer_handler (m_ymf262, ymf278b_device::static_timer_handler, this); + ymf262_set_irq_handler (m_ymf262, ymf278b_device::static_irq_handler, this); + ymf262_set_update_handler(m_ymf262, ymf278b_device::static_update_request, this); } -const device_type YMF278B = device_creator; +DEFINE_DEVICE_TYPE(YMF278B, ymf278b_device, "ymf278b", "Yamaha YMF278B OPL4") ymf278b_device::ymf278b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, YMF278B, "YMF278B", tag, owner, clock, "ymf278b", __FILE__), - device_sound_interface(mconfig, *this), - device_rom_interface(mconfig, *this, 22), - m_irq_handler(*this), - m_last_fm_data(0) + : device_t(mconfig, YMF278B, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , device_rom_interface(mconfig, *this, 22) + , m_irq_handler(*this) + , m_last_fm_data(0) { } diff --git a/src/devices/sound/ymf278b.h b/src/devices/sound/ymf278b.h index 1d1388630e8..545ac90dad8 100644 --- a/src/devices/sound/ymf278b.h +++ b/src/devices/sound/ymf278b.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont, Olivier Galibert, hap -#pragma once +#ifndef MAME_SOUND_YMF278B_H +#define MAME_SOUND_YMF278B_H -#ifndef __YMF278B_H__ -#define __YMF278B_H__ +#pragma once #define YMF278B_STD_CLOCK (33868800) /* standard clock for OPL4 */ @@ -11,21 +11,17 @@ #define MCFG_YMF278B_IRQ_HANDLER(_devcb) \ devcb = &ymf278b_device::set_irq_handler(*device, DEVCB_##_devcb); -class ymf278b_device : public device_t, - public device_sound_interface, - public device_rom_interface +class ymf278b_device : public device_t, public device_sound_interface, public device_rom_interface { public: ymf278b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast(device).m_irq_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); - void ymf262_update_request(); - protected: // device-level overrides virtual void device_start() override; @@ -95,6 +91,12 @@ private: void precompute_rate_tables(); void register_save_state(); + void update_request() { m_stream_ymf262->update(); } + + static void static_irq_handler(device_t *param, int irq) { } + static void static_timer_handler(device_t *param, int c, const attotime &period) { } + static void static_update_request(device_t *param, int interval) { downcast(param)->update_request(); } + // internal state uint8_t m_pcmregs[256]; YMF278BSlot m_slots[24]; @@ -137,7 +139,6 @@ private: sound_stream * m_stream_ymf262; }; -extern const device_type YMF278B; - +DECLARE_DEVICE_TYPE(YMF278B, ymf278b_device) -#endif /* __YMF278B_H__ */ +#endif // MAME_SOUND_YMF278B_H diff --git a/src/devices/sound/ymz280b.cpp b/src/devices/sound/ymz280b.cpp index 40e9578557f..5bbbc07205b 100644 --- a/src/devices/sound/ymz280b.cpp +++ b/src/devices/sound/ymz280b.cpp @@ -33,6 +33,10 @@ #include "emu.h" #include "ymz280b.h" +#if YMZ280B_MAKE_WAVS +#include "sound/wavwrite.h" +#endif + #define MAX_SAMPLE_CHUNK 10000 @@ -43,14 +47,10 @@ #define INTERNAL_BUFFER_SIZE (1 << 15) #define INTERNAL_SAMPLE_RATE (m_master_clock * 2.0) -#if MAKE_WAVS -#include "sound/wavwrite.h" -#endif - /* step size index shift table */ -static const int index_scale[8] = { 0x0e6, 0x0e6, 0x0e6, 0x0e6, 0x133, 0x199, 0x200, 0x266 }; +static constexpr int index_scale[8] = { 0x0e6, 0x0e6, 0x0e6, 0x0e6, 0x133, 0x199, 0x200, 0x266 }; /* lookup table for the precomputed difference */ static int diff_lookup[16]; @@ -166,7 +166,7 @@ void ymz280b_device::update_irq_state_timer_common(int voicenum) ***********************************************************************************************/ -static void compute_tables(void) +static void compute_tables() { /* loop over all nibbles and compute the difference */ for (int nib = 0; nib < 16; nib++) @@ -643,7 +643,7 @@ void ymz280b_device::device_start() save_item(NAME(m_voice[j].irq_schedule), j); } -#if MAKE_WAVS +#if YMZ280B_MAKE_WAVS m_wavresample = wav_open("resamp.wav", INTERNAL_SAMPLE_RATE, 2); #endif } @@ -940,25 +940,25 @@ WRITE8_MEMBER( ymz280b_device::write ) } -const device_type YMZ280B = device_creator; +DEFINE_DEVICE_TYPE(YMZ280B, ymz280b_device, "ymz280b", "Yamaha YMZ280B PCMD8") ymz280b_device::ymz280b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, YMZ280B, "YMZ280B", tag, owner, clock, "ymz280b", __FILE__), - device_sound_interface(mconfig, *this), - m_current_register(0), - m_status_register(0), - m_irq_state(0), - m_irq_mask(0), - m_irq_enable(0), - m_keyon_enable(0), - m_ext_mem_enable(0), - m_ext_readlatch(0), - m_ext_mem_address_hi(0), - m_ext_mem_address_mid(0), - m_ext_mem_address(0), - m_irq_handler(*this), - m_ext_read_handler(*this), - m_ext_write_handler(*this) + : device_t(mconfig, YMZ280B, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_current_register(0) + , m_status_register(0) + , m_irq_state(0) + , m_irq_mask(0) + , m_irq_enable(0) + , m_keyon_enable(0) + , m_ext_mem_enable(0) + , m_ext_readlatch(0) + , m_ext_mem_address_hi(0) + , m_ext_mem_address_mid(0) + , m_ext_mem_address(0) + , m_irq_handler(*this) + , m_ext_read_handler(*this) + , m_ext_write_handler(*this) { memset(m_voice, 0, sizeof(m_voice)); } diff --git a/src/devices/sound/ymz280b.h b/src/devices/sound/ymz280b.h index 267a9b570b6..7891fd21807 100644 --- a/src/devices/sound/ymz280b.h +++ b/src/devices/sound/ymz280b.h @@ -7,13 +7,13 @@ * **********************************************************************************************/ -#pragma once +#ifndef MAME_SOUND_YMZ280B_H +#define MAME_SOUND_YMZ280B_H -#ifndef __YMZ280B_H__ -#define __YMZ280B_H__ +#pragma once -#define MAKE_WAVS 0 +#define YMZ280B_MAKE_WAVS 0 #define MCFG_YMZ280B_IRQ_HANDLER(_devcb) \ devcb = &ymz280b_device::set_irq_handler(*device, DEVCB_##_devcb); @@ -24,16 +24,15 @@ #define MCFG_YMZ280B_EXT_WRITE_HANDLER(_devcb) \ devcb = &ymz280b_device::set_ext_write_handler(*device, DEVCB_##_devcb); -class ymz280b_device : public device_t, - public device_sound_interface +class ymz280b_device : public device_t, public device_sound_interface { public: ymz280b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast(device).m_irq_handler.set_callback(object); } - template static devcb_base &set_ext_read_handler(device_t &device, _Object object) { return downcast(device).m_ext_read_handler.set_callback(object); } - template static devcb_base &set_ext_write_handler(device_t &device, _Object object) { return downcast(device).m_ext_write_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast(device).m_ext_read_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_ext_write_handler(device_t &device, Object &&cb) { return downcast(device).m_ext_write_handler.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -47,8 +46,8 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -private: +private: /* struct describing a single playing ADPCM voice */ struct YMZ280BVoice { @@ -120,12 +119,11 @@ private: uint32_t m_mem_size; sound_stream *m_stream; /* which stream are we using */ std::unique_ptr m_scratch; -#if MAKE_WAVS +#if YMZ280B_MAKE_WAVS void *m_wavresample; /* resampled waveform */ #endif }; -extern const device_type YMZ280B; - +DECLARE_DEVICE_TYPE(YMZ280B, ymz280b_device) -#endif /* __YMZ280B_H__ */ +#endif // MAME_SOUND_YMZ280B_H diff --git a/src/devices/sound/ymz770.cpp b/src/devices/sound/ymz770.cpp index 5bdb7e9a89d..11b30d08eb1 100644 --- a/src/devices/sound/ymz770.cpp +++ b/src/devices/sound/ymz770.cpp @@ -24,22 +24,23 @@ TODO: #include "mpeg_audio.h" // device type definition -const device_type YMZ770 = device_creator; +DEFINE_DEVICE_TYPE(YMZ770, ymz770_device, "ymz770", "Yamaha YMZ770 AMMS-A") //------------------------------------------------- // ymz770_device - constructor //------------------------------------------------- ymz770_device::ymz770_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, YMZ770, "Yamaha YMZ770", tag, owner, clock, "ymz770", __FILE__), - device_sound_interface(mconfig, *this), m_stream(nullptr), - m_cur_reg(0), - m_mute(0), - m_doen(0), - m_vlma(0), - m_bsl(0), - m_cpl(0), - m_rom(*this, DEVICE_SELF) + : device_t(mconfig, YMZ770, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_stream(nullptr) + , m_cur_reg(0) + , m_mute(0) + , m_doen(0) + , m_vlma(0) + , m_bsl(0) + , m_cpl(0) + , m_rom(*this, DEVICE_SELF) { } diff --git a/src/devices/sound/ymz770.h b/src/devices/sound/ymz770.h index 3fdc104dc2c..b7f047dc4b4 100644 --- a/src/devices/sound/ymz770.h +++ b/src/devices/sound/ymz770.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_SOUND_YMZ770_H +#define MAME_SOUND_YMZ770_H -#ifndef __YMZ770_H__ -#define __YMZ770_H__ +#pragma once //************************************************************************** // CONSTANTS @@ -36,41 +36,13 @@ class mpeg_audio; class ymz770_device : public device_t, public device_sound_interface { - struct ymz_channel - { - uint8_t phrase; - uint8_t pan; - uint8_t volume; - uint8_t control; - - bool is_playing, last_block; - - mpeg_audio *decoder; - - int16_t output_data[0x1000]; - int output_remaining; - int output_ptr; - int atbl; - int pptr; - - uint8_t sequence; - uint8_t seqcontrol; - uint8_t seqdelay; - uint8_t *seqdata; - bool is_seq_playing; - }; - - public: // construction/destruction ymz770_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_WRITE8_MEMBER(write); - sound_stream *m_stream; - protected: - // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -79,6 +51,8 @@ protected: void internal_reg_write(uint8_t reg, uint8_t data); + sound_stream *m_stream; + // data uint8_t m_cur_reg; uint8_t m_mute; // mute chip @@ -88,11 +62,36 @@ protected: uint8_t m_cpl; // clip limiter required_region_ptr m_rom; +private: + struct ymz_channel + { + uint8_t phrase; + uint8_t pan; + uint8_t volume; + uint8_t control; + + bool is_playing, last_block; + + mpeg_audio *decoder; + + int16_t output_data[0x1000]; + int output_remaining; + int output_ptr; + int atbl; + int pptr; + + uint8_t sequence; + uint8_t seqcontrol; + uint8_t seqdelay; + uint8_t *seqdata; + bool is_seq_playing; + }; + ymz_channel m_channels[8]; }; // device type definition -extern const device_type YMZ770; +DECLARE_DEVICE_TYPE(YMZ770, ymz770_device) -#endif /* __ymz770_H__ */ +#endif // MAME_SOUND_YMZ770_H diff --git a/src/devices/sound/zsg2.cpp b/src/devices/sound/zsg2.cpp index 9cef9c598b3..6300f02b84e 100644 --- a/src/devices/sound/zsg2.cpp +++ b/src/devices/sound/zsg2.cpp @@ -59,18 +59,18 @@ TODO: // device type definition -const device_type ZSG2 = device_creator; +DEFINE_DEVICE_TYPE(ZSG2, zsg2_device, "zsg2", "ZOOM ZSG-2") //------------------------------------------------- // zsg2_device - constructor //------------------------------------------------- zsg2_device::zsg2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ZSG2, "ZSG-2", tag, owner, clock, "zsg2", __FILE__), - device_sound_interface(mconfig, *this), - m_mem_base(*this, DEVICE_SELF), - m_read_address(0), - m_ext_read_handler(*this) + : device_t(mconfig, ZSG2, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_mem_base(*this, DEVICE_SELF) + , m_read_address(0) + , m_ext_read_handler(*this) { } diff --git a/src/devices/sound/zsg2.h b/src/devices/sound/zsg2.h index e894562fa7f..c54e2dce3c4 100644 --- a/src/devices/sound/zsg2.h +++ b/src/devices/sound/zsg2.h @@ -4,10 +4,10 @@ ZOOM ZSG-2 custom wavetable synthesizer */ -#pragma once +#ifndef MAME_SOUND_ZSG2_H +#define MAME_SOUND_ZSG2_H -#ifndef __ZSG2_H__ -#define __ZSG2_H__ +#pragma once //************************************************************************** @@ -30,10 +30,9 @@ class zsg2_device : public device_t, { public: zsg2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~zsg2_device() { } // static configuration helpers - template static devcb_base &set_ext_read_handler(device_t &device, _Object object) { return downcast(device).m_ext_read_handler.set_callback(object); } + template static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast(device).m_ext_read_handler.set_callback(std::forward(cb)); } DECLARE_READ16_MEMBER(read); DECLARE_WRITE16_MEMBER(write); @@ -86,7 +85,6 @@ private: int16_t *prepare_samples(uint32_t offset); }; -extern const device_type ZSG2; - +DECLARE_DEVICE_TYPE(ZSG2, zsg2_device) -#endif /* __ZSG2_H__ */ +#endif // MAME_SOUND_ZSG2_H diff --git a/src/devices/video/315_5124.cpp b/src/devices/video/315_5124.cpp index 9588f3e6052..e49325d6c25 100644 --- a/src/devices/video/315_5124.cpp +++ b/src/devices/video/315_5124.cpp @@ -68,6 +68,11 @@ PAL frame timing #include "video/315_5124.h" +#define SEGA315_5124_PALETTE_SIZE (64 + 16) +#define SEGA315_5378_PALETTE_SIZE 4096 + +#define VRAM_SIZE 0x4000 + #define STATUS_VINT 0x80 /* Pending vertical interrupt flag */ #define STATUS_SPROVR 0x40 /* Sprite overflow flag */ #define STATUS_SPRCOL 0x20 /* Object collision flag */ @@ -84,8 +89,8 @@ PAL frame timing #define DISPLAY_DISABLED_HPOS 24 /* not verified, works if above 18 (for 'pstrike2') and below 25 (for 'fantdizzy') */ #define DISPLAY_CB_HPOS 2 /* fixes 'roadrash' (SMS game) title scrolling, due to line counter reload timing */ -#define DRAW_TIME_GG 94 /* 9 + 2 + 14 + 8 + 13 + 96/2 */ -#define DRAW_TIME_SMS 46 /* 9 + 2 + 14 + 8 + 13 */ +#define DRAW_TIME_GG 94 /* 9 + 2 + 14 + 8 + 13 + 96/2 */ +#define DRAW_TIME_SMS 46 /* 9 + 2 + 14 + 8 + 13 */ #define PRIORITY_BIT 0x1000 #define BACKDROP_COLOR ((m_vdp_mode == 4 ? 0x10 : 0x00) + (m_reg[0x07] & 0x0f)) @@ -97,17 +102,17 @@ PAL frame timing #define BOTTOM_BORDER 4 #define BOTTOM_BLANKING 5 -static const uint8_t ntsc_192[6] = { 3, 13, 27, 192, 24, 3 }; -static const uint8_t ntsc_224[6] = { 3, 13, 11, 224, 8, 3 }; -static const uint8_t ntsc_240[6] = { 3, 13, 3, 240, 0, 3 }; -static const uint8_t pal_192[6] = { 3, 13, 54, 192, 48, 3 }; -static const uint8_t pal_224[6] = { 3, 13, 38, 224, 32, 3 }; -static const uint8_t pal_240[6] = { 3, 13, 30, 240, 24, 3 }; +static constexpr uint8_t ntsc_192[6] = { 3, 13, 27, 192, 24, 3 }; +static constexpr uint8_t ntsc_224[6] = { 3, 13, 11, 224, 8, 3 }; +static constexpr uint8_t ntsc_240[6] = { 3, 13, 3, 240, 0, 3 }; +static constexpr uint8_t pal_192[6] = { 3, 13, 54, 192, 48, 3 }; +static constexpr uint8_t pal_224[6] = { 3, 13, 38, 224, 32, 3 }; +static constexpr uint8_t pal_240[6] = { 3, 13, 30, 240, 24, 3 }; -const device_type SEGA315_5124 = device_creator; -const device_type SEGA315_5246 = device_creator; -const device_type SEGA315_5378 = device_creator; +DEFINE_DEVICE_TYPE(SEGA315_5124, sega315_5124_device, "sega315_5124", "Sega 315-5124 SMS1 VDP") +DEFINE_DEVICE_TYPE(SEGA315_5246, sega315_5246_device, "sega315_5246", "Sega 315-5246 SMS2 VDP") +DEFINE_DEVICE_TYPE(SEGA315_5378, sega315_5378_device, "sega315_5378", "Sega 315-5378 Gamegear VDP") PALETTE_INIT_MEMBER(sega315_5124_device, sega315_5124) @@ -161,24 +166,13 @@ ADDRESS_MAP_END sega315_5124_device::sega315_5124_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t( mconfig, SEGA315_5124, "Sega 315-5124 VDP", tag, owner, clock, "sega315_5124", __FILE__) - , device_memory_interface(mconfig, *this) - , device_video_interface(mconfig, *this) - , m_cram_size( SEGA315_5124_CRAM_SIZE ) - , m_palette_offset( 0 ) - , m_supports_224_240( false ) - , m_is_pal(false) - , m_int_cb(*this) - , m_csync_cb(*this) - , m_pause_cb(*this) - , m_space_config("videoram", ENDIANNESS_LITTLE, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(sega315_5124)) - , m_palette(*this, "palette") + : sega315_5124_device(mconfig, SEGA315_5124, tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, false) { } -sega315_5124_device::sega315_5124_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, bool supports_224_240, const char *shortname, const char *source) - : device_t( mconfig, type, name, tag, owner, clock, shortname, source) +sega315_5124_device::sega315_5124_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, bool supports_224_240) + : device_t(mconfig, type, tag, owner, clock) , device_memory_interface(mconfig, *this) , device_video_interface(mconfig, *this) , m_cram_size( cram_size ) @@ -195,13 +189,13 @@ sega315_5124_device::sega315_5124_device(const machine_config &mconfig, device_t sega315_5246_device::sega315_5246_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sega315_5124_device( mconfig, SEGA315_5246, "Sega 315-5246 VDP", tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true, "sega315_5246", __FILE__) + : sega315_5124_device(mconfig, SEGA315_5246, tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true) { } sega315_5378_device::sega315_5378_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sega315_5124_device( mconfig, SEGA315_5378, "Sega 315-5378 VDP", tag, owner, clock, SEGA315_5378_CRAM_SIZE, 0x10, true, "sega315_5378", __FILE__) + : sega315_5124_device(mconfig, SEGA315_5378, tag, owner, clock, SEGA315_5378_CRAM_SIZE, 0x10, true) { } @@ -318,7 +312,7 @@ void sega315_5124_device::hcount_latch_at_hpos( int hpos ) /* The hcount value returned by the VDP seems to be based on the previous hpos */ int hclock = hpos - 1; if (hclock < 0) - hclock += SEGA315_5124_WIDTH; + hclock += WIDTH; m_hcounter = ((hclock - active_scr_start) >> 1) & 0xff; } @@ -347,7 +341,7 @@ void sega315_5124_device::device_timer(emu_timer &timer, device_timer_id id, int case TIMER_DRAW: update_palette(); - draw_scanline( SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH, param, m_screen->vpos() - param ); + draw_scanline( LBORDER_START + LBORDER_WIDTH, param, m_screen->vpos() - param ); break; case TIMER_LBORDER: @@ -358,8 +352,8 @@ void sega315_5124_device::device_timer(emu_timer &timer, device_timer_id id, int update_palette(); /* Draw left border */ - rec.min_x = SEGA315_5124_LBORDER_START; - rec.max_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH - 1; + rec.min_x = LBORDER_START; + rec.max_x = LBORDER_START + LBORDER_WIDTH - 1; m_tmpbitmap.fill(m_palette->pen(m_current_palette[BACKDROP_COLOR]), rec); m_y1_bitmap.fill(( m_reg[0x07] & 0x0f ) ? 1 : 0, rec); } @@ -373,8 +367,8 @@ void sega315_5124_device::device_timer(emu_timer &timer, device_timer_id id, int update_palette(); /* Draw right border */ - rec.min_x = SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256; - rec.max_x = rec.min_x + SEGA315_5124_RBORDER_WIDTH - 1; + rec.min_x = LBORDER_START + LBORDER_WIDTH + 256; + rec.max_x = rec.min_x + RBORDER_WIDTH - 1; m_tmpbitmap.fill(m_palette->pen(m_current_palette[BACKDROP_COLOR]), rec); m_y1_bitmap.fill(( m_reg[0x07] & 0x0f ) ? 1 : 0, rec); } @@ -480,8 +474,8 @@ void sega315_5124_device::process_line_timer() } /* Draw borders */ - m_lborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START ), vpos ); - m_rborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256 ), vpos ); + m_lborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START ), vpos ); + m_rborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START + LBORDER_WIDTH + 256 ), vpos ); /* Draw middle of the border */ /* We need to do this through the regular drawing function */ @@ -513,8 +507,8 @@ void sega315_5124_device::process_line_timer() } /* Draw borders */ - m_lborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START ), vpos ); - m_rborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256 ), vpos ); + m_lborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START ), vpos ); + m_rborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START + LBORDER_WIDTH + 256 ), vpos ); /* Draw active display */ select_sprites( vpos - vpos_limit ); @@ -536,8 +530,8 @@ void sega315_5124_device::process_line_timer() } /* Draw borders */ - m_lborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START ), vpos ); - m_rborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256 ), vpos ); + m_lborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START ), vpos ); + m_rborder_timer->adjust( m_screen->time_until_pos( vpos, LBORDER_START + LBORDER_WIDTH + 256 ), vpos ); /* Draw middle of the border */ /* We need to do this through the regular drawing function */ @@ -594,7 +588,7 @@ void sega315_5124_device::check_pending_flags() remaining time, what could also occur due to the ahead time of the timeslice. */ if (m_pending_flags_timer->remaining() == attotime::zero) { - hpos = SEGA315_5124_WIDTH - 1; + hpos = WIDTH - 1; } else { @@ -1606,7 +1600,7 @@ void sega315_5124_device::device_start() m_display_timer = timer_alloc(TIMER_LINE); m_display_timer->adjust(m_screen->time_until_pos(0, DISPLAY_CB_HPOS), 0, m_screen->scan_period()); m_pending_flags_timer = timer_alloc(TIMER_FLAGS); - m_pending_flags_timer->adjust(m_screen->time_until_pos(0, SEGA315_5124_WIDTH - 1), 0, m_screen->scan_period()); + m_pending_flags_timer->adjust(m_screen->time_until_pos(0, WIDTH - 1), 0, m_screen->scan_period()); m_draw_timer = timer_alloc(TIMER_DRAW); m_lborder_timer = timer_alloc(TIMER_LBORDER); m_rborder_timer = timer_alloc(TIMER_RBORDER); diff --git a/src/devices/video/315_5124.h b/src/devices/video/315_5124.h index e3ab1f23559..8ca1b734d9f 100644 --- a/src/devices/video/315_5124.h +++ b/src/devices/video/315_5124.h @@ -8,54 +8,21 @@ **************************************************************************/ -#ifndef MAME_DEVICES_VIDEO_315_5124_H -#define MAME_DEVICES_VIDEO_315_5124_H +#ifndef MAME_VIDEO_315_5124_H +#define MAME_VIDEO_315_5124_H #pragma once #include "screen.h" -/*************************************************************************** - CONSTANTS -***************************************************************************/ - -#define SEGA315_5124_WIDTH 342 /* 342 pixels */ -#define SEGA315_5124_HEIGHT_NTSC 262 /* 262 lines */ -#define SEGA315_5124_HEIGHT_PAL 313 /* 313 lines */ -#define SEGA315_5124_LBORDER_START (9 + 2 + 14 + 8) -#define SEGA315_5124_LBORDER_WIDTH 13 /* 13 pixels */ -#define SEGA315_5124_RBORDER_WIDTH 15 /* 15 pixels */ -#define SEGA315_5124_TBORDER_START (3 + 13) -#define SEGA315_5124_NTSC_192_TBORDER_HEIGHT (0x1b) /* 27 lines */ -//#define SEGA315_5124_NTSC_192_BBORDER_HEIGHT (0x18) /* 24 lines */ -#define SEGA315_5124_NTSC_224_TBORDER_HEIGHT (0x0b) /* 11 lines */ -//#define SEGA315_5124_NTSC_224_BBORDER_HEIGHT (0x08) /* 8 lines */ -//#define SEGA315_5124_PAL_192_TBORDER_HEIGHT (0x36) /* 54 lines */ -//#define SEGA315_5124_PAL_192_BBORDER_HEIGHT (0x30) /* 48 lines */ -//#define SEGA315_5124_PAL_224_TBORDER_HEIGHT (0x26) /* 38 lines */ -//#define SEGA315_5124_PAL_224_BBORDER_HEIGHT (0x20) /* 32 lines */ -#define SEGA315_5124_PAL_240_TBORDER_HEIGHT (0x1e) /* 30 lines */ -//#define SEGA315_5124_PAL_240_BBORDER_HEIGHT (0x18) /* 24 lines */ - - -#define SEGA315_5124_PALETTE_SIZE (64+16) -#define SEGA315_5378_PALETTE_SIZE 4096 - - -#define SEGA315_5378_CRAM_SIZE 0x40 /* 32 colors x 2 bytes per color = 64 bytes */ -#define SEGA315_5124_CRAM_SIZE 0x20 /* 32 colors x 1 bytes per color = 32 bytes */ - -#define VRAM_SIZE 0x4000 - - /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ -extern const device_type SEGA315_5124; /* aka SMS1 vdp */ -extern const device_type SEGA315_5246; /* aka SMS2 vdp */ -extern const device_type SEGA315_5378; /* aka Gamegear vdp */ +DECLARE_DEVICE_TYPE(SEGA315_5124, sega315_5124_device) /* aka SMS1 vdp */ +DECLARE_DEVICE_TYPE(SEGA315_5246, sega315_5246_device) /* aka SMS2 vdp */ +DECLARE_DEVICE_TYPE(SEGA315_5378, sega315_5378_device) /* aka Gamegear vdp */ class sega315_5124_device : public device_t, @@ -63,17 +30,33 @@ class sega315_5124_device : public device_t, public device_video_interface { public: + static constexpr unsigned WIDTH = 342; /* 342 pixels */ + static constexpr unsigned HEIGHT_NTSC = 262; /* 262 lines */ + static constexpr unsigned HEIGHT_PAL = 313; /* 313 lines */ + static constexpr unsigned LBORDER_START = 9 + 2 + 14 + 8; + static constexpr unsigned LBORDER_WIDTH = 13; /* 13 pixels */ + static constexpr unsigned RBORDER_WIDTH = 15; /* 15 pixels */ + static constexpr unsigned TBORDER_START = 3 + 13; + static constexpr unsigned NTSC_192_TBORDER_HEIGHT = 0x1b; /* 27 lines */ + //static constexpr unsigned NTSC_192_BBORDER_HEIGHT = 0x18; /* 24 lines */ + static constexpr unsigned NTSC_224_TBORDER_HEIGHT = 0x0b; /* 11 lines */ + //static constexpr unsigned NTSC_224_BBORDER_HEIGHT = 0x08; /* 8 lines */ + //static constexpr unsigned PAL_192_TBORDER_HEIGHT = 0x36; /* 54 lines */ + //static constexpr unsigned PAL_192_BBORDER_HEIGHT = 0x30; /* 48 lines */ + //static constexpr unsigned PAL_224_TBORDER_HEIGHT = 0x26; /* 38 lines */ + //static constexpr unsigned PAL_224_BBORDER_HEIGHT = 0x20; /* 32 lines */ + static constexpr unsigned PAL_240_TBORDER_HEIGHT = 0x1e; /* 30 lines */ + //static constexpr unsigned PAL_240_BBORDER_HEIGHT = 0x18; /* 24 lines */ + + // construction/destruction sega315_5124_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - sega315_5124_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, bool supports_224_240, const char *shortname, const char *source); static void set_signal_type(device_t &device, bool is_pal) { downcast(device).m_is_pal = is_pal; } - - - template static devcb_base &set_int_callback(device_t &device, _Object object) { return downcast(device).m_int_cb.set_callback(object); } - template static devcb_base &set_csync_callback(device_t &device, _Object object) { return downcast(device).m_csync_cb.set_callback(object); } - template static devcb_base &set_pause_callback(device_t &device, _Object object) { return downcast(device).m_pause_cb.set_callback(object); } + template static devcb_base &set_int_callback(device_t &device, Object &&cb) { return downcast(device).m_int_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_csync_callback(device_t &device, Object &&cb) { return downcast(device).m_csync_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_pause_callback(device_t &device, Object &&cb) { return downcast(device).m_pause_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( vram_read ); DECLARE_WRITE8_MEMBER( vram_write ); @@ -84,34 +67,24 @@ public: DECLARE_PALETTE_INIT( sega315_5124 ); - void hcount_latch() { hcount_latch_at_hpos( m_screen->hpos() ); }; - void hcount_latch_at_hpos( int hpos ); + void hcount_latch() { hcount_latch_at_hpos(m_screen->hpos()); }; + void hcount_latch_at_hpos(int hpos); void stop_timers(); bitmap_rgb32 &get_bitmap() { return m_tmpbitmap; }; bitmap_ind8 &get_y1_bitmap() { return m_y1_bitmap; }; /* update the screen */ - uint32_t screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect ); + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - virtual void set_sega315_5124_compatibility_mode( bool sega315_5124_compatibility_mode ) { }; + virtual void set_sega315_5124_compatibility_mode(bool sega315_5124_compatibility_mode) { } protected: - void set_display_settings(); - void set_frame_timing(); - virtual void update_palette(); - virtual void cram_write(uint8_t data); - virtual void draw_scanline( int pixel_offset_x, int pixel_plot_y, int line ); - virtual void blit_scanline( int *line_buffer, int *priority_selected, int pixel_offset_x, int pixel_plot_y, int line ); - virtual uint16_t get_name_table_row(int row); - void process_line_timer(); - void select_sprites( int line ); - void draw_scanline_mode4( int *line_buffer, int *priority_selected, int line ); - void draw_sprites_mode4( int *line_buffer, int *priority_selected, int line ); - void draw_sprites_tms9918_mode( int *line_buffer, int line ); - void draw_scanline_mode2( int *line_buffer, int line ); - void draw_scanline_mode0( int *line_buffer, int line ); - void check_pending_flags(); + static constexpr unsigned SEGA315_5378_CRAM_SIZE = 0x40; /* 32 colors x 2 bytes per color = 64 bytes */ + static constexpr unsigned SEGA315_5124_CRAM_SIZE = 0x20; /* 32 colors x 1 bytes per color = 32 bytes */ + + + sega315_5124_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, bool supports_224_240); // device-level overrides virtual void device_start() override; @@ -119,7 +92,23 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; } + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; } + + void set_display_settings(); + void set_frame_timing(); + virtual void update_palette(); + virtual void cram_write(uint8_t data); + virtual void draw_scanline(int pixel_offset_x, int pixel_plot_y, int line); + virtual void blit_scanline(int *line_buffer, int *priority_selected, int pixel_offset_x, int pixel_plot_y, int line); + virtual uint16_t get_name_table_row(int row); + void process_line_timer(); + void select_sprites(int line); + void draw_scanline_mode4(int *line_buffer, int *priority_selected, int line); + void draw_sprites_mode4(int *line_buffer, int *priority_selected, int line); + void draw_sprites_tms9918_mode(int *line_buffer, int line); + void draw_scanline_mode2(int *line_buffer, int line); + void draw_scanline_mode0(int *line_buffer, int line); + void check_pending_flags(); void vdp_postload(); @@ -130,7 +119,7 @@ protected: uint8_t m_reg9copy; /* Internal copy of register 9 (Y-Scroll) */ uint8_t m_addrmode; /* Type of VDP action */ uint16_t m_addr; /* Contents of internal VDP address register */ - uint8_t m_cram_size; /* CRAM size */ + const uint8_t m_cram_size; /* CRAM size */ uint8_t m_cram_mask; /* Mask to switch between SMS and GG CRAM sizes */ int m_cram_dirty; /* Have there been any changes to the CRAM area */ int m_pending_reg_write; @@ -147,8 +136,8 @@ protected: const uint8_t *m_frame_timing; bitmap_rgb32 m_tmpbitmap; bitmap_ind8 m_y1_bitmap; - uint8_t m_palette_offset; - bool m_supports_224_240; + const uint8_t m_palette_offset; + const bool m_supports_224_240; bool m_display_disabled; uint16_t m_sprite_base; uint16_t m_sprite_pattern_line[8]; @@ -175,14 +164,14 @@ protected: const address_space_config m_space_config; /* Timers */ - static const device_timer_id TIMER_LINE = 0; - static const device_timer_id TIMER_DRAW = 1; - static const device_timer_id TIMER_LBORDER = 2; - static const device_timer_id TIMER_RBORDER = 3; - static const device_timer_id TIMER_HINT = 4; - static const device_timer_id TIMER_VINT = 5; - static const device_timer_id TIMER_NMI = 6; - static const device_timer_id TIMER_FLAGS = 7; + static constexpr device_timer_id TIMER_LINE = 0; + static constexpr device_timer_id TIMER_DRAW = 1; + static constexpr device_timer_id TIMER_LBORDER = 2; + static constexpr device_timer_id TIMER_RBORDER = 3; + static constexpr device_timer_id TIMER_HINT = 4; + static constexpr device_timer_id TIMER_VINT = 5; + static constexpr device_timer_id TIMER_NMI = 6; + static constexpr device_timer_id TIMER_FLAGS = 7; required_device m_palette; }; @@ -205,7 +194,7 @@ public: DECLARE_PALETTE_INIT( sega315_5378 ); - virtual void set_sega315_5124_compatibility_mode( bool sega315_5124_compatibility_mode ) override; + virtual void set_sega315_5124_compatibility_mode(bool sega315_5124_compatibility_mode) override; protected: virtual void device_reset() override; @@ -267,4 +256,4 @@ protected: devcb = &sega315_5378_device::set_pause_callback(*device, DEVCB_##_devcb); -#endif // MAME_DEVICES_VIDEO_315_5124_H +#endif // MAME_VIDEO_315_5124_H diff --git a/src/devices/video/315_5313.cpp b/src/devices/video/315_5313.cpp index c6f9e28e456..a8af6681295 100644 --- a/src/devices/video/315_5313.cpp +++ b/src/devices/video/315_5313.cpp @@ -9,17 +9,155 @@ #include "sound/sn76496.h" + +/* The VDP occupies addresses C00000h to C0001Fh. + + C00000h - Data port (8=r/w, 16=r/w) + C00002h - Data port (mirror) + C00004h - Control port (8=r/w, 16=r/w) + C00006h - Control port (mirror) + C00008h - HV counter (8/16=r/o) + C0000Ah - HV counter (mirror) + C0000Ch - HV counter (mirror) + C0000Eh - HV counter (mirror) + C00011h - SN76489 PSG (8=w/o) + C00013h - SN76489 PSG (mirror) + C00015h - SN76489 PSG (mirror) + C00017h - SN76489 PSG (mirror) +*/ + +#define MEGADRIV_VDP_VRAM(address) m_vram[(address)&0x7fff] + + + +/* + + $00 - Mode Set Register No. 1 + ----------------------------- + + d7 - No effect + d6 - No effect + d5 - No effect + d4 - IE1 (Horizontal interrupt enable) + d3 - 1= Invalid display setting + d2 - Palette select + d1 - M3 (HV counter latch enable) + d0 - Display disable + + */ + +#define MEGADRIVE_REG0_UNUSED ((m_regs[0x00]&0xc0)>>6) +#define MEGADRIVE_REG0_BLANK_LEFT ((m_regs[0x00]&0x20)>>5) // like SMS, not used by any commercial games? +#define MEGADRIVE_REG0_IRQ4_ENABLE ((m_regs[0x00]&0x10)>>4) +#define MEGADRIVE_REG0_INVALID_MODE ((m_regs[0x00]&0x08)>>3) // invalid display mode, unhandled +#define MEGADRIVE_REG0_SPECIAL_PAL ((m_regs[0x00]&0x04)>>2) // strange palette mode, unhandled +#define MEGADRIVE_REG0_HVLATCH_ENABLE ((m_regs[0x00]&0x02)>>1) // HV Latch, used by lightgun games +#define MEGADRIVE_REG0_DISPLAY_DISABLE ((m_regs[0x00]&0x01)>>0) + +/* + + $01 - Mode Set Register No. 2 + ----------------------------- + + d7 - TMS9918 / Genesis display select + d6 - DISP (Display Enable) + d5 - IE0 (Vertical Interrupt Enable) + d4 - M1 (DMA Enable) + d3 - M2 (PAL / NTSC) + d2 - SMS / Genesis display select + d1 - 0 (No effect) + d0 - 0 (See notes) + +*/ + +#define MEGADRIVE_REG01_TMS9918_SELECT ((m_regs[0x01]&0x80)>>7) +#define MEGADRIVE_REG01_DISP_ENABLE ((m_regs[0x01]&0x40)>>6) +#define MEGADRIVE_REG01_IRQ6_ENABLE ((m_regs[0x01]&0x20)>>5) +#define MEGADRIVE_REG01_DMA_ENABLE ((m_regs[0x01]&0x10)>>4) +#define MEGADRIVE_REG01_240_LINE ((m_regs[0x01]&0x08)>>3) +#define MEGADRIVE_REG01_SMS_SELECT ((m_regs[0x01]&0x04)>>2) +#define MEGADRIVE_REG01_UNUSED ((m_regs[0x01]&0x02)>>1) +#define MEGADRIVE_REG01_STRANGE_VIDEO ((m_regs[0x01]&0x01)>>0) // unhandled, does strange things to the display + +#define MEGADRIVE_REG02_UNUSED1 ((m_regs[0x02]&0xc0)>>6) +#define MEGADRIVE_REG02_PATTERN_ADDR_A ((m_regs[0x02]&0x38)>>3) +#define MEGADRIVE_REG02_UNUSED2 ((m_regs[0x02]&0x07)>>0) + +#define MEGADRIVE_REG03_UNUSED1 ((m_regs[0x03]&0xc0)>>6) +#define MEGADRIVE_REG03_PATTERN_ADDR_W ((m_regs[0x03]&0x3e)>>1) +#define MEGADRIVE_REG03_UNUSED2 ((m_regs[0x03]&0x01)>>0) + +#define MEGADRIVE_REG04_UNUSED ((m_regs[0x04]&0xf8)>>3) +#define MEGADRIVE_REG04_PATTERN_ADDR_B ((m_regs[0x04]&0x07)>>0) + +#define MEGADRIVE_REG05_UNUSED ((m_regs[0x05]&0x80)>>7) +#define MEGADRIVE_REG05_SPRITE_ADDR ((m_regs[0x05]&0x7f)>>0) + +/* 6? */ + +#define MEGADRIVE_REG07_UNUSED ((m_regs[0x07]&0xc0)>>6) +#define MEGADRIVE_REG07_BGCOLOUR ((m_regs[0x07]&0x3f)>>0) + +/* 8? */ +/* 9? */ + +#define MEGADRIVE_REG0A_HINT_VALUE ((m_regs[0x0a]&0xff)>>0) + +#define MEGADRIVE_REG0B_UNUSED ((m_regs[0x0b]&0xf0)>>4) +#define MEGADRIVE_REG0B_IRQ2_ENABLE ((m_regs[0x0b]&0x08)>>3) +#define MEGADRIVE_REG0B_VSCROLL_MODE ((m_regs[0x0b]&0x04)>>2) +#define MEGADRIVE_REG0B_HSCROLL_MODE ((m_regs[0x0b]&0x03)>>0) + +#define MEGADRIVE_REG0C_RS0 ((m_regs[0x0c]&0x80)>>7) +#define MEGADRIVE_REG0C_UNUSED1 ((m_regs[0x0c]&0x40)>>6) +#define MEGADRIVE_REG0C_SPECIAL ((m_regs[0x0c]&0x20)>>5) +#define MEGADRIVE_REG0C_UNUSED2 ((m_regs[0x0c]&0x10)>>4) +#define MEGADRIVE_REG0C_SHADOW_HIGLIGHT ((m_regs[0x0c]&0x08)>>3) +#define MEGADRIVE_REG0C_INTERLEAVE ((m_regs[0x0c]&0x06)>>1) +#define MEGADRIVE_REG0C_RS1 ((m_regs[0x0c]&0x01)>>0) + +#define MEGADRIVE_REG0D_UNUSED ((m_regs[0x0d]&0xc0)>>6) +#define MEGADRIVE_REG0D_HSCROLL_ADDR ((m_regs[0x0d]&0x3f)>>0) + +/* e? */ + +#define MEGADRIVE_REG0F_AUTO_INC ((m_regs[0x0f]&0xff)>>0) + +#define MEGADRIVE_REG10_UNUSED1 ((m_regs[0x10]&0xc0)>>6) +#define MEGADRIVE_REG10_VSCROLL_SIZE ((m_regs[0x10]&0x30)>>4) +#define MEGADRIVE_REG10_UNUSED2 ((m_regs[0x10]&0x0c)>>2) +#define MEGADRIVE_REG10_HSCROLL_SIZE ((m_regs[0x10]&0x03)>>0) + +#define MEGADRIVE_REG11_WINDOW_RIGHT ((m_regs[0x11]&0x80)>>7) +#define MEGADRIVE_REG11_UNUSED ((m_regs[0x11]&0x60)>>5) +#define MEGADRIVE_REG11_WINDOW_HPOS ((m_regs[0x11]&0x1f)>>0) + +#define MEGADRIVE_REG12_WINDOW_DOWN ((m_regs[0x12]&0x80)>>7) +#define MEGADRIVE_REG12_UNUSED ((m_regs[0x12]&0x60)>>5) +#define MEGADRIVE_REG12_WINDOW_VPOS ((m_regs[0x12]&0x1f)>>0) + +#define MEGADRIVE_REG13_DMALENGTH1 ((m_regs[0x13]&0xff)>>0) + +#define MEGADRIVE_REG14_DMALENGTH2 ((m_regs[0x14]&0xff)>>0) + +#define MEGADRIVE_REG15_DMASOURCE1 ((m_regs[0x15]&0xff)>>0) +#define MEGADRIVE_REG16_DMASOURCE2 ((m_regs[0x16]&0xff)>>0) + +#define MEGADRIVE_REG17_DMASOURCE3 ((m_regs[0x17]&0xff)>>0) +#define MEGADRIVE_REG17_DMATYPE ((m_regs[0x17]&0xc0)>>6) +#define MEGADRIVE_REG17_UNUSED ((m_regs[0x17]&0x3f)>>0) + + #define MAX_HPOSITION 480 -const device_type SEGA315_5313 = device_creator; +DEFINE_DEVICE_TYPE(SEGA315_5313, sega315_5313_device, "sega315_5313", "Sega 315-5313 Megadrive VDP") -sega315_5313_device::sega315_5313_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sega315_5124_device(mconfig, SEGA315_5313, "Sega 315-5313 Megadrive VDP", tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true, "sega315_5313", __FILE__), m_render_bitmap(nullptr), - m_render_line(nullptr), m_render_line_raw(nullptr), m_megadriv_scanline_timer(nullptr), - m_sndirqline_callback(*this), - m_lv6irqline_callback(*this), - m_lv4irqline_callback(*this), m_command_pending(0), m_command_part1(0), m_command_part2(0), m_vdp_code(0), m_vdp_address(0), m_vram_fill_pending(0), m_vram_fill_length(0), m_irq4counter(0), +sega315_5313_device::sega315_5313_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + sega315_5124_device(mconfig, SEGA315_5313, tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true), + m_render_bitmap(nullptr), m_render_line(nullptr), m_render_line_raw(nullptr), m_megadriv_scanline_timer(nullptr), + m_sndirqline_callback(*this), m_lv6irqline_callback(*this), m_lv4irqline_callback(*this), + m_command_pending(0), m_command_part1(0), m_command_part2(0), m_vdp_code(0), m_vdp_address(0), m_vram_fill_pending(0), m_vram_fill_length(0), m_irq4counter(0), m_imode_odd_frame(0), m_sprite_collision(0), m_irq6_pending(0), m_irq4_pending(0), m_scanline_counter(0), m_vblank_flag(0), m_imode(0), m_visible_scanlines(0), m_irq6_scanline(0), m_z80irq_scanline(0), m_total_scanlines(0), m_base_total_scanlines(0), m_framerate(0), m_vdp_pal(0), m_use_cram(0), m_dma_delay(0), m_regs(nullptr), m_vram(nullptr), m_cram(nullptr), m_vsram(nullptr), m_internal_sprite_attribute_table(nullptr), m_irq6_on_timer(nullptr), m_irq4_on_timer(nullptr), diff --git a/src/devices/video/315_5313.h b/src/devices/video/315_5313.h index 592c0be54e5..5be1f05d4b6 100644 --- a/src/devices/video/315_5313.h +++ b/src/devices/video/315_5313.h @@ -1,6 +1,8 @@ // license:BSD-3-Clause // copyright-holders:David Haywood /* Sega Megadrive / Genesis VDP */ +#ifndef MAME_VIDEO_315_5313_H +#define MAME_VIDEO_315_5313_H #pragma once @@ -8,144 +10,6 @@ #include "cpu/m68000/m68000.h" -/* The VDP occupies addresses C00000h to C0001Fh. - - C00000h - Data port (8=r/w, 16=r/w) - C00002h - Data port (mirror) - C00004h - Control port (8=r/w, 16=r/w) - C00006h - Control port (mirror) - C00008h - HV counter (8/16=r/o) - C0000Ah - HV counter (mirror) - C0000Ch - HV counter (mirror) - C0000Eh - HV counter (mirror) - C00011h - SN76489 PSG (8=w/o) - C00013h - SN76489 PSG (mirror) - C00015h - SN76489 PSG (mirror) - C00017h - SN76489 PSG (mirror) -*/ - -#define MEGADRIV_VDP_VRAM(address) m_vram[(address)&0x7fff] - - - -/* - - $00 - Mode Set Register No. 1 - ----------------------------- - - d7 - No effect - d6 - No effect - d5 - No effect - d4 - IE1 (Horizontal interrupt enable) - d3 - 1= Invalid display setting - d2 - Palette select - d1 - M3 (HV counter latch enable) - d0 - Display disable - - */ - -#define MEGADRIVE_REG0_UNUSED ((m_regs[0x00]&0xc0)>>6) -#define MEGADRIVE_REG0_BLANK_LEFT ((m_regs[0x00]&0x20)>>5) // like SMS, not used by any commercial games? -#define MEGADRIVE_REG0_IRQ4_ENABLE ((m_regs[0x00]&0x10)>>4) -#define MEGADRIVE_REG0_INVALID_MODE ((m_regs[0x00]&0x08)>>3) // invalid display mode, unhandled -#define MEGADRIVE_REG0_SPECIAL_PAL ((m_regs[0x00]&0x04)>>2) // strange palette mode, unhandled -#define MEGADRIVE_REG0_HVLATCH_ENABLE ((m_regs[0x00]&0x02)>>1) // HV Latch, used by lightgun games -#define MEGADRIVE_REG0_DISPLAY_DISABLE ((m_regs[0x00]&0x01)>>0) - -/* - - $01 - Mode Set Register No. 2 - ----------------------------- - - d7 - TMS9918 / Genesis display select - d6 - DISP (Display Enable) - d5 - IE0 (Vertical Interrupt Enable) - d4 - M1 (DMA Enable) - d3 - M2 (PAL / NTSC) - d2 - SMS / Genesis display select - d1 - 0 (No effect) - d0 - 0 (See notes) - -*/ - -#define MEGADRIVE_REG01_TMS9918_SELECT ((m_regs[0x01]&0x80)>>7) -#define MEGADRIVE_REG01_DISP_ENABLE ((m_regs[0x01]&0x40)>>6) -#define MEGADRIVE_REG01_IRQ6_ENABLE ((m_regs[0x01]&0x20)>>5) -#define MEGADRIVE_REG01_DMA_ENABLE ((m_regs[0x01]&0x10)>>4) -#define MEGADRIVE_REG01_240_LINE ((m_regs[0x01]&0x08)>>3) -#define MEGADRIVE_REG01_SMS_SELECT ((m_regs[0x01]&0x04)>>2) -#define MEGADRIVE_REG01_UNUSED ((m_regs[0x01]&0x02)>>1) -#define MEGADRIVE_REG01_STRANGE_VIDEO ((m_regs[0x01]&0x01)>>0) // unhandled, does strange things to the display - -#define MEGADRIVE_REG02_UNUSED1 ((m_regs[0x02]&0xc0)>>6) -#define MEGADRIVE_REG02_PATTERN_ADDR_A ((m_regs[0x02]&0x38)>>3) -#define MEGADRIVE_REG02_UNUSED2 ((m_regs[0x02]&0x07)>>0) - -#define MEGADRIVE_REG03_UNUSED1 ((m_regs[0x03]&0xc0)>>6) -#define MEGADRIVE_REG03_PATTERN_ADDR_W ((m_regs[0x03]&0x3e)>>1) -#define MEGADRIVE_REG03_UNUSED2 ((m_regs[0x03]&0x01)>>0) - -#define MEGADRIVE_REG04_UNUSED ((m_regs[0x04]&0xf8)>>3) -#define MEGADRIVE_REG04_PATTERN_ADDR_B ((m_regs[0x04]&0x07)>>0) - -#define MEGADRIVE_REG05_UNUSED ((m_regs[0x05]&0x80)>>7) -#define MEGADRIVE_REG05_SPRITE_ADDR ((m_regs[0x05]&0x7f)>>0) - -/* 6? */ - -#define MEGADRIVE_REG07_UNUSED ((m_regs[0x07]&0xc0)>>6) -#define MEGADRIVE_REG07_BGCOLOUR ((m_regs[0x07]&0x3f)>>0) - -/* 8? */ -/* 9? */ - -#define MEGADRIVE_REG0A_HINT_VALUE ((m_regs[0x0a]&0xff)>>0) - -#define MEGADRIVE_REG0B_UNUSED ((m_regs[0x0b]&0xf0)>>4) -#define MEGADRIVE_REG0B_IRQ2_ENABLE ((m_regs[0x0b]&0x08)>>3) -#define MEGADRIVE_REG0B_VSCROLL_MODE ((m_regs[0x0b]&0x04)>>2) -#define MEGADRIVE_REG0B_HSCROLL_MODE ((m_regs[0x0b]&0x03)>>0) - -#define MEGADRIVE_REG0C_RS0 ((m_regs[0x0c]&0x80)>>7) -#define MEGADRIVE_REG0C_UNUSED1 ((m_regs[0x0c]&0x40)>>6) -#define MEGADRIVE_REG0C_SPECIAL ((m_regs[0x0c]&0x20)>>5) -#define MEGADRIVE_REG0C_UNUSED2 ((m_regs[0x0c]&0x10)>>4) -#define MEGADRIVE_REG0C_SHADOW_HIGLIGHT ((m_regs[0x0c]&0x08)>>3) -#define MEGADRIVE_REG0C_INTERLEAVE ((m_regs[0x0c]&0x06)>>1) -#define MEGADRIVE_REG0C_RS1 ((m_regs[0x0c]&0x01)>>0) - -#define MEGADRIVE_REG0D_UNUSED ((m_regs[0x0d]&0xc0)>>6) -#define MEGADRIVE_REG0D_HSCROLL_ADDR ((m_regs[0x0d]&0x3f)>>0) - -/* e? */ - -#define MEGADRIVE_REG0F_AUTO_INC ((m_regs[0x0f]&0xff)>>0) - -#define MEGADRIVE_REG10_UNUSED1 ((m_regs[0x10]&0xc0)>>6) -#define MEGADRIVE_REG10_VSCROLL_SIZE ((m_regs[0x10]&0x30)>>4) -#define MEGADRIVE_REG10_UNUSED2 ((m_regs[0x10]&0x0c)>>2) -#define MEGADRIVE_REG10_HSCROLL_SIZE ((m_regs[0x10]&0x03)>>0) - -#define MEGADRIVE_REG11_WINDOW_RIGHT ((m_regs[0x11]&0x80)>>7) -#define MEGADRIVE_REG11_UNUSED ((m_regs[0x11]&0x60)>>5) -#define MEGADRIVE_REG11_WINDOW_HPOS ((m_regs[0x11]&0x1f)>>0) - -#define MEGADRIVE_REG12_WINDOW_DOWN ((m_regs[0x12]&0x80)>>7) -#define MEGADRIVE_REG12_UNUSED ((m_regs[0x12]&0x60)>>5) -#define MEGADRIVE_REG12_WINDOW_VPOS ((m_regs[0x12]&0x1f)>>0) - -#define MEGADRIVE_REG13_DMALENGTH1 ((m_regs[0x13]&0xff)>>0) - -#define MEGADRIVE_REG14_DMALENGTH2 ((m_regs[0x14]&0xff)>>0) - -#define MEGADRIVE_REG15_DMASOURCE1 ((m_regs[0x15]&0xff)>>0) -#define MEGADRIVE_REG16_DMASOURCE2 ((m_regs[0x16]&0xff)>>0) - -#define MEGADRIVE_REG17_DMASOURCE3 ((m_regs[0x17]&0xff)>>0) -#define MEGADRIVE_REG17_DMATYPE ((m_regs[0x17]&0xc0)>>6) -#define MEGADRIVE_REG17_UNUSED ((m_regs[0x17]&0x3f)>>0) - - #define MCFG_SEGA315_5313_IS_PAL(_bool) \ sega315_5313_device::set_signal_type(*device, _bool); @@ -175,35 +39,35 @@ // Temporary solution while 32x VDP mixing and scanline interrupting is moved outside MD VDP -typedef device_delegate md_32x_scanline_delegate; -typedef device_delegate md_32x_interrupt_delegate; -typedef device_delegate md_32x_scanline_helper_delegate; - #define MCFG_SEGA315_5313_32X_SCANLINE_CB(_class, _method) \ - sega315_5313_device::set_md_32x_scanline(*device, md_32x_scanline_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + sega315_5313_device::set_md_32x_scanline(*device, sega315_5313_device::md_32x_scanline_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_SEGA315_5313_32X_INTERRUPT_CB(_class, _method) \ - sega315_5313_device::set_md_32x_interrupt(*device, md_32x_interrupt_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + sega315_5313_device::set_md_32x_interrupt(*device, sega315_5313_device::md_32x_interrupt_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_SEGA315_5313_32X_SCANLINE_HELPER_CB(_class, _method) \ - sega315_5313_device::set_md_32x_scanline_helper(*device, md_32x_scanline_helper_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + sega315_5313_device::set_md_32x_scanline_helper(*device, sega315_5313_device::md_32x_scanline_helper_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); class sega315_5313_device : public sega315_5124_device { public: + typedef device_delegate md_32x_scanline_delegate; + typedef device_delegate md_32x_interrupt_delegate; + typedef device_delegate md_32x_scanline_helper_delegate; + sega315_5313_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_sndirqline_callback(device_t &device, _Object object) { return downcast(device).m_sndirqline_callback.set_callback(object); } - template static devcb_base &set_lv6irqline_callback(device_t &device, _Object object) { return downcast(device).m_lv6irqline_callback.set_callback(object); } - template static devcb_base &set_lv4irqline_callback(device_t &device, _Object object) { return downcast(device).m_lv4irqline_callback.set_callback(object); } + template static devcb_base &set_sndirqline_callback(device_t &device, Object &&cb) { return downcast(device).m_sndirqline_callback.set_callback(std::forward(cb)); } + template static devcb_base &set_lv6irqline_callback(device_t &device, Object &&cb) { return downcast(device).m_lv6irqline_callback.set_callback(std::forward(cb)); } + template static devcb_base &set_lv4irqline_callback(device_t &device, Object &&cb) { return downcast(device).m_lv4irqline_callback.set_callback(std::forward(cb)); } static void set_alt_timing(device_t &device, int use_alt_timing); static void set_palwrite_base(device_t &device, int palwrite_base); static void static_set_palette_tag(device_t &device, const char *tag); - static void set_md_32x_scanline(device_t &device, md_32x_scanline_delegate callback) { downcast(device).m_32x_scanline_func = callback; } - static void set_md_32x_interrupt(device_t &device, md_32x_interrupt_delegate callback) { downcast(device).m_32x_interrupt_func = callback; } - static void set_md_32x_scanline_helper(device_t &device, md_32x_scanline_helper_delegate callback) { downcast(device).m_32x_scanline_helper_func = callback; } + static void set_md_32x_scanline(device_t &device, md_32x_scanline_delegate &&cb) { downcast(device).m_32x_scanline_func = std::move(cb); } + static void set_md_32x_interrupt(device_t &device, md_32x_interrupt_delegate &&cb) { downcast(device).m_32x_interrupt_func = std::move(cb); } + static void set_md_32x_scanline_helper(device_t &device, md_32x_scanline_helper_delegate &&cb) { downcast(device).m_32x_scanline_helper_func = std::move(cb); } int m_use_alt_timing; // use MAME scanline timer instead, render only one scanline to a single line buffer, to be rendered by a partial update call.. experimental @@ -220,8 +84,8 @@ public: TIMER_CALLBACK_MEMBER(irq4_on_timer_callback); void vdp_handle_eof(); void device_reset_old(); - void vdp_clear_irq6_pending(void) { m_irq6_pending = 0; }; - void vdp_clear_irq4_pending(void) { m_irq4_pending = 0; }; + void vdp_clear_irq6_pending() { m_irq6_pending = 0; }; + void vdp_clear_irq4_pending() { m_irq4_pending = 0; }; // set some VDP variables at start (shall be moved to a device interface?) void set_scanline_counter(int scanline) { m_scanline_counter = scanline; } @@ -234,7 +98,7 @@ public: int get_imode() { return m_imode; } - void vdp_clear_bitmap(void) + void vdp_clear_bitmap() { if (m_render_bitmap) m_render_bitmap->fill(0); @@ -265,7 +129,6 @@ protected: md_32x_scanline_helper_delegate m_32x_scanline_helper_func; private: - int m_command_pending; // 2nd half of command pending.. uint16_t m_command_part1; uint16_t m_command_part2; @@ -355,4 +218,6 @@ private: }; -extern const device_type SEGA315_5313; +DECLARE_DEVICE_TYPE(SEGA315_5313, sega315_5313_device) + +#endif // MAME_VIDEO_315_5313_H diff --git a/src/devices/video/bufsprite.cpp b/src/devices/video/bufsprite.cpp index b7cd1302158..1c7180ec8cd 100644 --- a/src/devices/video/bufsprite.cpp +++ b/src/devices/video/bufsprite.cpp @@ -17,34 +17,31 @@ //************************************************************************** // device type definition -const device_type BUFFERED_SPRITERAM8 = device_creator; -const device_type BUFFERED_SPRITERAM16 = device_creator; -const device_type BUFFERED_SPRITERAM32 = device_creator; -const device_type BUFFERED_SPRITERAM64 = device_creator; +DEFINE_DEVICE_TYPE(BUFFERED_SPRITERAM8, buffered_spriteram8_device, "buffered_spriteram8", "Buffered 8-bit Sprite RAM") +DEFINE_DEVICE_TYPE(BUFFERED_SPRITERAM16, buffered_spriteram16_device, "buffered_spriteram16", "Buffered 16-bit Sprite RAM") +DEFINE_DEVICE_TYPE(BUFFERED_SPRITERAM32, buffered_spriteram32_device, "buffered_spriteram32", "Buffered 32-bit Sprite RAM") +DEFINE_DEVICE_TYPE(BUFFERED_SPRITERAM64, buffered_spriteram64_device, "buffered_spriteram64", "Buffered 64-bit Sprite RAM") -template -buffered_spriteram_device<_Type>::buffered_spriteram_device( +template +buffered_spriteram_device::buffered_spriteram_device( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - uint32_t clock, - const char *shortname, - const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) + uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , m_spriteram(*this, DEVICE_SELF) { } -template -void buffered_spriteram_device<_Type>::device_start() +template +void buffered_spriteram_device::device_start() { - if (m_spriteram != nullptr) + if (m_spriteram) { - m_buffered.resize(m_spriteram.bytes() / sizeof(_Type)); + m_buffered.resize(m_spriteram.bytes() / sizeof(Type)); save_item(NAME(m_buffered)); } } @@ -52,27 +49,27 @@ void buffered_spriteram_device<_Type>::device_start() buffered_spriteram8_device::buffered_spriteram8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM8, "Buffered 8-bit Sprite RAM", tag, owner, clock, "buffered_spriteram8", __FILE__) + : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM8, tag, owner, clock) { } buffered_spriteram16_device::buffered_spriteram16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM16, "Buffered 16-bit Sprite RAM", tag, owner, clock, "buffered_spriteram16", __FILE__) + : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM16, tag, owner, clock) { } buffered_spriteram32_device::buffered_spriteram32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM32, "Buffered 32-bit Sprite RAM", tag, owner, clock, "buffered_spriteram32", __FILE__) + : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM32, tag, owner, clock) { } buffered_spriteram64_device::buffered_spriteram64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM64, "Buffered 64-bit Sprite RAM", tag, owner, clock, "buffered_spriteram64", __FILE__) + : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM64, tag, owner, clock) { } diff --git a/src/devices/video/bufsprite.h b/src/devices/video/bufsprite.h index f96c1744b8a..995f0894eaf 100644 --- a/src/devices/video/bufsprite.h +++ b/src/devices/video/bufsprite.h @@ -8,8 +8,8 @@ *********************************************************************/ -#ifndef MAME_DEVICES_VIDEO_BUFSPRITE_H -#define MAME_DEVICES_VIDEO_BUFSPRITE_H +#ifndef MAME_VIDEO_BUFSPRITE_H +#define MAME_VIDEO_BUFSPRITE_H #pragma once @@ -20,10 +20,10 @@ //************************************************************************** // device type definition -extern const device_type BUFFERED_SPRITERAM8; -extern const device_type BUFFERED_SPRITERAM16; -extern const device_type BUFFERED_SPRITERAM32; -extern const device_type BUFFERED_SPRITERAM64; +DECLARE_DEVICE_TYPE(BUFFERED_SPRITERAM8, buffered_spriteram8_device) +DECLARE_DEVICE_TYPE(BUFFERED_SPRITERAM16, buffered_spriteram16_device) +DECLARE_DEVICE_TYPE(BUFFERED_SPRITERAM32, buffered_spriteram32_device) +DECLARE_DEVICE_TYPE(BUFFERED_SPRITERAM64, buffered_spriteram64_device) @@ -48,50 +48,47 @@ extern const device_type BUFFERED_SPRITERAM64; // ======================> buffered_spriteram_device // base class to manage buffered spriteram -template +template class buffered_spriteram_device : public device_t { public: - // construction - buffered_spriteram_device( - const machine_config &mconfig, - device_type type, - const char *name, - const char *tag, - device_t *owner, - uint32_t clock, - const char *shortname, - const char *source); - // getters - _Type *live() const { return m_spriteram; } - _Type *buffer() { return &m_buffered[0]; } + Type *live() const { return m_spriteram; } + Type *buffer() { return &m_buffered[0]; } uint32_t bytes() const { return m_spriteram.bytes(); } // operations - _Type *copy(uint32_t srcoffset = 0, uint32_t srclength = 0x7fffffff) + Type *copy(uint32_t srcoffset = 0, uint32_t srclength = 0x7fffffff) { assert(m_spriteram != nullptr); if (m_spriteram != nullptr) - memcpy(&m_buffered[0], m_spriteram + srcoffset, (std::min)(srclength, m_spriteram.bytes() / sizeof(_Type) - srcoffset) * sizeof(_Type)); + memcpy(&m_buffered[0], m_spriteram + srcoffset, (std::min)(srclength, m_spriteram.bytes() / sizeof(Type) - srcoffset) * sizeof(Type)); return &m_buffered[0]; } // read/write handlers - void write(address_space &space, offs_t offset, _Type data, _Type mem_mask = ~_Type(0)) { copy(); } + void write(address_space &space, offs_t offset, Type data, Type mem_mask = ~Type(0)) { copy(); } // VBLANK handlers - void vblank_copy_rising(screen_device &screen, bool state) { if (state) copy(); } - void vblank_copy_falling(screen_device &screen, bool state) { if (!state) copy(); } + DECLARE_WRITE_LINE_MEMBER(vblank_copy_rising) { if (state) copy(); } + DECLARE_WRITE_LINE_MEMBER(vblank_copy_falling) { if (!state) copy(); } protected: + // construction + buffered_spriteram_device( + const machine_config &mconfig, + device_type type, + const char *tag, + device_t *owner, + uint32_t clock); + // first-time setup virtual void device_start() override; private: // internal state - required_shared_ptr<_Type> m_spriteram; - std::vector<_Type> m_buffered; + required_shared_ptr m_spriteram; + std::vector m_buffered; }; @@ -135,4 +132,4 @@ public: }; -#endif // MAME_DEVICES_VIDEO_BUFSPRITE_H +#endif // MAME_VIDEO_BUFSPRITE_H diff --git a/src/devices/video/cdp1861.cpp b/src/devices/video/cdp1861.cpp index 9e3723bdfdd..72a4fec46a7 100644 --- a/src/devices/video/cdp1861.cpp +++ b/src/devices/video/cdp1861.cpp @@ -15,9 +15,9 @@ // MACROS / CONSTANTS //************************************************************************** -#define CDP1861_CYCLES_DMA_START 2*8 -#define CDP1861_CYCLES_DMA_ACTIVE 8*8 -#define CDP1861_CYCLES_DMA_WAIT 6*8 +#define CDP1861_CYCLES_DMA_START (2*8) +#define CDP1861_CYCLES_DMA_ACTIVE (8*8) +#define CDP1861_CYCLES_DMA_WAIT (6*8) @@ -26,7 +26,7 @@ //************************************************************************** // device type definition -const device_type CDP1861 = device_creator; +DEFINE_DEVICE_TYPE(CDP1861, cdp1861_device, "cdp1861", "RCA CDP1861") @@ -39,7 +39,7 @@ const device_type CDP1861 = device_creator; //------------------------------------------------- cdp1861_device::cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CDP1861, "CDP1861", tag, owner, clock, "cdp1861", __FILE__), + : device_t(mconfig, CDP1861, tag, owner, clock), device_video_interface(mconfig, *this), m_write_irq(*this), m_write_dma_out(*this), @@ -85,8 +85,8 @@ void cdp1861_device::device_start() void cdp1861_device::device_reset() { - m_int_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_INT_START, 0)); - m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_TOP_START, 0)); + m_int_timer->adjust(m_screen->time_until_pos(SCANLINE_INT_START, 0)); + m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_TOP_START, 0)); m_dma_timer->adjust(clocks_to_attotime(CDP1861_CYCLES_DMA_START)); m_disp = 0; @@ -110,14 +110,14 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para switch (id) { case TIMER_INT: - if (scanline == CDP1861_SCANLINE_INT_START) + if (scanline == SCANLINE_INT_START) { if (m_disp) { m_write_irq(ASSERT_LINE); } - m_int_timer->adjust(m_screen->time_until_pos( CDP1861_SCANLINE_INT_END, 0)); + m_int_timer->adjust(m_screen->time_until_pos( SCANLINE_INT_END, 0)); } else { @@ -126,31 +126,31 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para m_write_irq(CLEAR_LINE); } - m_int_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_INT_START, 0)); + m_int_timer->adjust(m_screen->time_until_pos(SCANLINE_INT_START, 0)); } break; case TIMER_EFX: switch (scanline) { - case CDP1861_SCANLINE_EFX_TOP_START: + case SCANLINE_EFX_TOP_START: m_write_efx(ASSERT_LINE); - m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_TOP_END, 0)); + m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_TOP_END, 0)); break; - case CDP1861_SCANLINE_EFX_TOP_END: + case SCANLINE_EFX_TOP_END: m_write_efx(CLEAR_LINE); - m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_BOTTOM_START, 0)); + m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_BOTTOM_START, 0)); break; - case CDP1861_SCANLINE_EFX_BOTTOM_START: + case SCANLINE_EFX_BOTTOM_START: m_write_efx(ASSERT_LINE); - m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_BOTTOM_END, 0)); + m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_BOTTOM_END, 0)); break; - case CDP1861_SCANLINE_EFX_BOTTOM_END: + case SCANLINE_EFX_BOTTOM_END: m_write_efx(CLEAR_LINE); - m_efx_timer->adjust(m_screen->time_until_pos(CDP1861_SCANLINE_EFX_TOP_START, 0)); + m_efx_timer->adjust(m_screen->time_until_pos(SCANLINE_EFX_TOP_START, 0)); break; } break; @@ -160,7 +160,7 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para { if (m_disp) { - if (scanline >= CDP1861_SCANLINE_DISPLAY_START && scanline < CDP1861_SCANLINE_DISPLAY_END) + if (scanline >= SCANLINE_DISPLAY_START && scanline < SCANLINE_DISPLAY_END) { m_write_dma_out(CLEAR_LINE); } @@ -174,7 +174,7 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para { if (m_disp) { - if (scanline >= CDP1861_SCANLINE_DISPLAY_START && scanline < CDP1861_SCANLINE_DISPLAY_END) + if (scanline >= SCANLINE_DISPLAY_START && scanline < SCANLINE_DISPLAY_END) { m_write_dma_out(ASSERT_LINE); } diff --git a/src/devices/video/cdp1861.h b/src/devices/video/cdp1861.h index c925583d853..41a9609b651 100644 --- a/src/devices/video/cdp1861.h +++ b/src/devices/video/cdp1861.h @@ -21,44 +21,14 @@ **********************************************************************/ -#ifndef MAME_DEVICES_VIDEO_CDP1861_H -#define MAME_DEVICES_VIDEO_CDP1861_H +#ifndef MAME_VIDEO_CDP1861_H +#define MAME_VIDEO_CDP1861_H #pragma once #include "screen.h" -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define CDP1861_VISIBLE_COLUMNS 64 -#define CDP1861_VISIBLE_LINES 128 - -#define CDP1861_HBLANK_START 14 * 8 -#define CDP1861_HBLANK_END 12 -#define CDP1861_HSYNC_START 0 -#define CDP1861_HSYNC_END 12 -#define CDP1861_SCREEN_WIDTH 14 * 8 - -#define CDP1861_TOTAL_SCANLINES 262 - -#define CDP1861_SCANLINE_DISPLAY_START 80 -#define CDP1861_SCANLINE_DISPLAY_END 208 -#define CDP1861_SCANLINE_VBLANK_START 262 -#define CDP1861_SCANLINE_VBLANK_END 16 -#define CDP1861_SCANLINE_VSYNC_START 16 -#define CDP1861_SCANLINE_VSYNC_END 0 -#define CDP1861_SCANLINE_INT_START CDP1861_SCANLINE_DISPLAY_START - 2 -#define CDP1861_SCANLINE_INT_END CDP1861_SCANLINE_DISPLAY_START -#define CDP1861_SCANLINE_EFX_TOP_START CDP1861_SCANLINE_DISPLAY_START - 4 -#define CDP1861_SCANLINE_EFX_TOP_END CDP1861_SCANLINE_DISPLAY_START -#define CDP1861_SCANLINE_EFX_BOTTOM_START CDP1861_SCANLINE_DISPLAY_END - 4 -#define CDP1861_SCANLINE_EFX_BOTTOM_END CDP1861_SCANLINE_DISPLAY_END - - - //************************************************************************** // INTERFACE CONFIGURATION MACROS //************************************************************************** @@ -77,7 +47,7 @@ MCFG_VIDEO_SET_SCREEN(_tag) \ MCFG_SCREEN_ADD(_tag, RASTER) \ MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1861_device, screen_update) \ - MCFG_SCREEN_RAW_PARAMS(_clock, CDP1861_SCREEN_WIDTH, CDP1861_HBLANK_END, CDP1861_HBLANK_START, CDP1861_TOTAL_SCANLINES, CDP1861_SCANLINE_VBLANK_END, CDP1861_SCANLINE_VBLANK_START) + MCFG_SCREEN_RAW_PARAMS(_clock, cdp1861_device::SCREEN_WIDTH, cdp1861_device::HBLANK_END, cdp1861_device::HBLANK_START, cdp1861_device::TOTAL_SCANLINES, cdp1861_device::SCANLINE_VBLANK_END, cdp1861_device::SCANLINE_VBLANK_START) @@ -91,12 +61,36 @@ class cdp1861_device : public device_t, public device_video_interface { public: + static constexpr unsigned VISIBLE_COLUMNS = 64; + static constexpr unsigned VISIBLE_LINES = 128; + + static constexpr unsigned HBLANK_START = 14 * 8; + static constexpr unsigned HBLANK_END = 12; + static constexpr unsigned HSYNC_START = 0; + static constexpr unsigned HSYNC_END = 12; + static constexpr unsigned SCREEN_WIDTH = 14 * 8; + + static constexpr unsigned TOTAL_SCANLINES = 262; + + static constexpr unsigned SCANLINE_DISPLAY_START = 80; + static constexpr unsigned SCANLINE_DISPLAY_END = 208; + static constexpr unsigned SCANLINE_VBLANK_START = 262; + static constexpr unsigned SCANLINE_VBLANK_END = 16; + static constexpr unsigned SCANLINE_VSYNC_START = 16; + static constexpr unsigned SCANLINE_VSYNC_END = 0; + static constexpr unsigned SCANLINE_INT_START = SCANLINE_DISPLAY_START - 2; + static constexpr unsigned SCANLINE_INT_END = SCANLINE_DISPLAY_START; + static constexpr unsigned SCANLINE_EFX_TOP_START = SCANLINE_DISPLAY_START - 4; + static constexpr unsigned SCANLINE_EFX_TOP_END = SCANLINE_DISPLAY_START; + static constexpr unsigned SCANLINE_EFX_BOTTOM_START = SCANLINE_DISPLAY_END - 4; + static constexpr unsigned SCANLINE_EFX_BOTTOM_END = SCANLINE_DISPLAY_END; + // construction/destruction cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_irq.set_callback(object); } - template static devcb_base &set_dma_out_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_dma_out.set_callback(object); } - template static devcb_base &set_efx_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_efx.set_callback(object); } + template static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_irq.set_callback(std::forward(cb)); } + template static devcb_base &set_dma_out_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_dma_out.set_callback(std::forward(cb)); } + template static devcb_base &set_efx_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_efx.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER( dma_w ); DECLARE_WRITE_LINE_MEMBER( disp_on_w ); @@ -137,7 +131,6 @@ private: // device type definition -extern const device_type CDP1861; - +DECLARE_DEVICE_TYPE(CDP1861, cdp1861_device) -#endif // MAME_DEVICES_VIDEO_CDP1861_H +#endif // MAME_VIDEO_CDP1861_H diff --git a/src/devices/video/cdp1862.cpp b/src/devices/video/cdp1862.cpp index 4d7525195c0..498bb4a8584 100644 --- a/src/devices/video/cdp1862.cpp +++ b/src/devices/video/cdp1862.cpp @@ -17,7 +17,7 @@ // MACROS / CONSTANTS //************************************************************************** -static const int CDP1862_BACKGROUND_COLOR_SEQUENCE[] = { 2, 0, 1, 4 }; +static constexpr int CDP1862_BACKGROUND_COLOR_SEQUENCE[] = { 2, 0, 1, 4 }; @@ -26,7 +26,7 @@ static const int CDP1862_BACKGROUND_COLOR_SEQUENCE[] = { 2, 0, 1, 4 }; //************************************************************************** // device type definition -const device_type CDP1862 = device_creator; +DEFINE_DEVICE_TYPE(CDP1862, cdp1862_device, "cdp1862", "RCA CDP1862") @@ -79,7 +79,7 @@ inline void cdp1862_device::initialize_palette() //------------------------------------------------- cdp1862_device::cdp1862_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CDP1862, "CDP1862", tag, owner, clock, "cdp1862", __FILE__), + : device_t(mconfig, CDP1862, tag, owner, clock), device_video_interface(mconfig, *this), m_read_rd(*this), m_read_bd(*this), diff --git a/src/devices/video/cdp1862.h b/src/devices/video/cdp1862.h index c93cf05c2c5..d0699565f6b 100644 --- a/src/devices/video/cdp1862.h +++ b/src/devices/video/cdp1862.h @@ -21,10 +21,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_VIDEO_CDP1862_H +#define MAME_VIDEO_CDP1862_H -#ifndef __CDP1862__ -#define __CDP1862__ +#pragma once @@ -71,9 +71,9 @@ public: // construction/destruction cdp1862_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_rd_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_rd.set_callback(object); } - template static devcb_base &set_bd_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_bd.set_callback(object); } - template static devcb_base &set_gd_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_gd.set_callback(object); } + template static devcb_base &set_rd_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_rd.set_callback(std::forward(cb)); } + template static devcb_base &set_bd_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_bd.set_callback(std::forward(cb)); } + template static devcb_base &set_gd_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_gd.set_callback(std::forward(cb)); } static void static_set_luminance(device_t &device, double r, double b, double g, double bkg) { downcast(device).m_lum_r = r; downcast(device).m_lum_b = b; downcast(device).m_lum_g = g; downcast(device).m_lum_bkg = bkg; } static void static_set_chrominance(device_t &device, double r, double b, double g, double bkg) { downcast(device).m_chr_r = r; downcast(device).m_chr_b = b; downcast(device).m_chr_g = g; downcast(device).m_chr_bkg = bkg; } @@ -115,8 +115,6 @@ private: // device type definition -extern const device_type CDP1862; - - +DECLARE_DEVICE_TYPE(CDP1862, cdp1862_device) -#endif +#endif // MAME_VIDEO_CDP1862_H diff --git a/src/devices/video/cesblit.cpp b/src/devices/video/cesblit.cpp index 330abce1b66..e25b4cb56c5 100644 --- a/src/devices/video/cesblit.cpp +++ b/src/devices/video/cesblit.cpp @@ -25,8 +25,8 @@ 10 fedc ba-- ---- ---- ---- --9- ---- ---- Pen Replacement Mode ---- ---8 ---- ---- - ---- ---- 7--- ---- Layer - ---- ---- -6-- ---- Buffer + ---- ---- 7--- ---- Layer To Draw To + ---- ---- -6-- ---- Draw To Not Displayed Buffer ---- ---- --5- ---- Solid Fill ---- ---- ---4 ---- Enable VBlank IRQ (e.g. level 3) (0 clears the IRQ line too) ---- ---- ---- 3--- Enable Blitter Finished IRQ (e.g. level 2) "" @@ -60,7 +60,7 @@ ***************************************************************************/ // device type definition -const device_type CESBLIT = device_creator; +DEFINE_DEVICE_TYPE(CESBLIT, cesblit_device, "cesblit", "CES Blitter FPGA") /*************************************************************************** LIVE DEVICE @@ -71,12 +71,13 @@ const device_type CESBLIT = device_creator; //------------------------------------------------- cesblit_device::cesblit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, CESBLIT, "CES Blitter FPGA", tag, owner, clock, "cesblit", __FILE__), + device_t(mconfig, CESBLIT, tag, owner, clock), device_video_interface(mconfig, *this), device_memory_interface(mconfig, *this), - m_space_config("blitter_space", ENDIANNESS_BIG, 16,23), + m_space_config("blitter_space", ENDIANNESS_BIG, 16, 23), m_blit_irq_cb(*this) -{ } +{ +} //------------------------------------------------- // device_start - device-specific startup @@ -98,12 +99,27 @@ void cesblit_device::device_start() { for (int buffer = 0; buffer < 2; ++buffer) { - m_screen->register_screen_bitmap(m_bitmap[layer][buffer]); + m_bitmap[layer][buffer].allocate(512, 512); m_bitmap[layer][buffer].fill(0xff); } } } +//------------------------------------------------- +// device_stop - device-specific stop +//------------------------------------------------- + +void cesblit_device::device_stop() +{ + for (int layer = 0; layer < 2; ++layer) + { + for (int buffer = 0; buffer < 2; ++buffer) + { + m_bitmap[layer][buffer].reset(); + } + } +} + /*************************************************************************** READ/WRITE HANDLERS ***************************************************************************/ @@ -156,7 +172,7 @@ void cesblit_device::do_blit() int mode = m_regs[0x10/2]; int layer = (mode >> 7) & 1; // layer to draw to - buffer = ((mode >> 6) & 1) ^ ((buffer >> layer) & 1); // bit 6 selects whether to use the opposite buffer to that displayed + buffer = ((mode >> 6) & 1) ^ ((buffer >> layer) & 1); // bit 6 selects whether to use the opposite buffer to that displayed addr <<= 1; @@ -168,6 +184,12 @@ void cesblit_device::do_blit() #endif #endif + sx &= 0x1ff; + sw &= 0x1ff; // can be 0: draw nothing (see e.g. fade-in effect in galgame3/diamond derby) + + sy &= 0x1ff; + sh &= 0x1ff; + int flipx = mode & 1; int flipy = mode & 2; @@ -179,9 +201,6 @@ void cesblit_device::do_blit() if (flipy) { y0 = sh-1; y1 = -1; dy = -1; sy -= sh-1; } else { y0 = 0; y1 = sh; dy = +1; } - sx = (sx & 0x7fff) - (sx & 0x8000); - sy = (sy & 0x7fff) - (sy & 0x8000); - int color = (m_color & 0x0f) << 8; // Draw @@ -205,20 +224,16 @@ void cesblit_device::do_blit() { for (x = x0; x != x1; x += dx) { - if ((sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256)) - { - pen = m_space->read_byte(addr); + pen = m_space->read_byte(addr); - if (pen == src_pen) - pen = dst_pen; + if (pen == src_pen) + pen = dst_pen; + + if (pen != 0xff) + bitmap.pix16((sy + y) & 0x1ff, (sx + x) & 0x1ff) = pen + color; - if (pen != 0xff) - bitmap.pix16(sy + y, sx + x) = pen + color; - } ++addr; } - if ( (dy > 0 && (sy + y >= 256-1)) || (dy < 0 && (sy + y <= 0)) ) - break; } } else @@ -229,17 +244,13 @@ void cesblit_device::do_blit() { for (x = x0; x != x1; x += dx) { - if ((sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256)) - { - pen = m_space->read_byte(addr); + pen = m_space->read_byte(addr); + + if (pen != 0xff) + bitmap.pix16((sy + y) & 0x1ff, (sx + x) & 0x1ff) = pen + color; - if (pen != 0xff) - bitmap.pix16(sy + y, sx + x) = pen + color; - } ++addr; } - if ( (dy > 0 && (sy + y >= 256-1)) || (dy < 0 && (sy + y <= 0)) ) - break; } } break; @@ -254,11 +265,8 @@ void cesblit_device::do_blit() { for (x = x0; x != x1; x += dx) { - if ((sx + x >= 0) && (sx + x < 400) && (sy + y >= 0) && (sy + y < 256)) - bitmap.pix16(sy + y, sx + x) = pen; + bitmap.pix16((sy + y) & 0x1ff, (sx + x) & 0x1ff) = pen; } - if ( (dy > 0 && (sy + y >= 256-1)) || (dy < 0 && (sy + y <= 0)) ) - break; } break; } diff --git a/src/devices/video/cesblit.h b/src/devices/video/cesblit.h index e0d243156bc..93b0598c830 100644 --- a/src/devices/video/cesblit.h +++ b/src/devices/video/cesblit.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_CESBLIT_H +#define MAME_VIDEO_CESBLIT_H -#ifndef CESBLIT_H -#define CESBLIT_H +#pragma once /*************************************************************************** INTERFACE CONFIGURATION MACROS @@ -46,7 +46,7 @@ public: // static configuration void set_compute_addr(compute_addr_t compute_addr) { m_compute_addr = compute_addr; } static void static_set_compute_addr(device_t &device, compute_addr_t compute_addr) { downcast(device).set_compute_addr(compute_addr); } - template static devcb_base &static_set_irq_callback(device_t &device, _Object object) { return downcast(device).m_blit_irq_cb.set_callback(object); } + template static devcb_base &static_set_irq_callback(device_t &device, Object &&cb) { return downcast(device).m_blit_irq_cb.set_callback(std::forward(cb)); } DECLARE_WRITE16_MEMBER(color_w); DECLARE_WRITE16_MEMBER(addr_hi_w); @@ -58,7 +58,8 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_PROGRAM) const override { return (spacenum == AS_PROGRAM) ? &m_space_config: nullptr; } + virtual void device_stop() override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_space_config : nullptr; } void do_blit(); @@ -79,6 +80,6 @@ protected: ***************************************************************************/ // device type definition -extern const device_type CESBLIT; +DECLARE_DEVICE_TYPE(CESBLIT, cesblit_device) -#endif +#endif // MAME_VIDEO_CESBLIT_H diff --git a/src/devices/video/cgapal.h b/src/devices/video/cgapal.h index c5dfafd636e..15c282be953 100644 --- a/src/devices/video/cgapal.h +++ b/src/devices/video/cgapal.h @@ -1,5 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol -#define CGA_PALETTE_SETS 83 /* one for colour, one for mono, - * 81 for colour composite */ +#ifndef MAME_VIDEO_CGAPAL_H +#define MAME_VIDEO_CGAPAL_H + +#pragma once + +static constexpr unsigned CGA_PALETTE_SETS = 83; // one for colour, one for mono, 81 for colour composite extern const unsigned char cga_palette[16 * CGA_PALETTE_SETS][3]; + +#endif // MAME_VIDEO_CGAPAL_H diff --git a/src/devices/video/clgd542x.cpp b/src/devices/video/clgd542x.cpp index bcb36beef49..e14f268d18b 100644 --- a/src/devices/video/clgd542x.cpp +++ b/src/devices/video/clgd542x.cpp @@ -41,22 +41,22 @@ #define TEXT_COPY_9COLUMN(ch) (((ch & 0xe0) == 0xc0)&&(vga.attribute.data[0x10]&4)) -const device_type CIRRUS_GD5428 = device_creator; -const device_type CIRRUS_GD5430 = device_creator; +DEFINE_DEVICE_TYPE(CIRRUS_GD5428, cirrus_gd5428_device, "clgd5428", "Cirrus Logic GD5428") +DEFINE_DEVICE_TYPE(CIRRUS_GD5430, cirrus_gd5430_device, "clgd5430", "Cirrus Logic GD5430") cirrus_gd5428_device::cirrus_gd5428_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cirrus_gd5428_device(mconfig, CIRRUS_GD5428, "Cirrus Logic GD5428", tag, owner, clock, "clgd5428", __FILE__) + : cirrus_gd5428_device(mconfig, CIRRUS_GD5428, tag, owner, clock) { } -cirrus_gd5428_device::cirrus_gd5428_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : svga_device(mconfig, type, name, tag, owner, clock, shortname, source) +cirrus_gd5428_device::cirrus_gd5428_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : svga_device(mconfig, type, tag, owner, clock) { } cirrus_gd5430_device::cirrus_gd5430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cirrus_gd5428_device(mconfig, CIRRUS_GD5430, "Cirrus Logic GD5430", tag, owner, clock, "clgd5430", __FILE__) + : cirrus_gd5428_device(mconfig, CIRRUS_GD5430, tag, owner, clock) { } diff --git a/src/devices/video/clgd542x.h b/src/devices/video/clgd542x.h index 1579c2a0c0b..9bfffe8a15e 100644 --- a/src/devices/video/clgd542x.h +++ b/src/devices/video/clgd542x.h @@ -5,6 +5,10 @@ Cirrus Logic GD542x/3x video chipsets */ +#ifndef MAME_VIDEO_CLGD542X_H +#define MAME_VIDEO_CLGD542X_H + +#pragma once #include "video/pc_vga.h" @@ -16,7 +20,7 @@ class cirrus_gd5428_device : public svga_device public: // construction/destruction cirrus_gd5428_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - cirrus_gd5428_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + virtual READ8_MEMBER(port_03c0_r) override; virtual WRITE8_MEMBER(port_03c0_w) override; virtual READ8_MEMBER(port_03b0_r) override; @@ -27,7 +31,10 @@ public: virtual WRITE8_MEMBER(mem_w) override; virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) override; + protected: + cirrus_gd5428_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -83,6 +90,7 @@ protected: uint8_t m_vclk_denom[4]; inline uint8_t cirrus_vga_latch_write(int offs, uint8_t data); + private: void cirrus_define_video_mode(); uint8_t cirrus_seq_reg_read(uint8_t index); @@ -104,10 +112,13 @@ class cirrus_gd5430_device : public cirrus_gd5428_device { public: cirrus_gd5430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + protected: virtual void device_start() override; }; // device type definition -extern const device_type CIRRUS_GD5428; -extern const device_type CIRRUS_GD5430; +DECLARE_DEVICE_TYPE(CIRRUS_GD5428, cirrus_gd5428_device) +DECLARE_DEVICE_TYPE(CIRRUS_GD5430, cirrus_gd5430_device) + +#endif // MAME_VIDEO_CLGD542X_H diff --git a/src/devices/video/crt9007.cpp b/src/devices/video/crt9007.cpp index 90eb521ffc2..bf018d821f7 100644 --- a/src/devices/video/crt9007.cpp +++ b/src/devices/video/crt9007.cpp @@ -36,13 +36,16 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" + //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** -const device_type CRT9007 = device_creator; +DEFINE_DEVICE_TYPE(CRT9007, crt9007_device, "crt9007", "SMC SRT9007 VPAC") @@ -50,8 +53,6 @@ const device_type CRT9007 = device_creator; // MACROS / CONSTANTS //************************************************************************** -#define LOG 0 - #define HAS_VALID_PARAMETERS \ (m_reg[0x00] && m_reg[0x01] && m_reg[0x07] && m_reg[0x08] && m_reg[0x09]) @@ -221,7 +222,7 @@ const int STATUS_LIGHT_PEN_UPDATE = 0x20; //************************************************************************** // default address map -static ADDRESS_MAP_START( crt9007, AS_0, 8, crt9007_t ) +static ADDRESS_MAP_START( crt9007, AS_0, 8, crt9007_device ) AM_RANGE(0x0000, 0x3fff) AM_RAM ADDRESS_MAP_END @@ -235,7 +236,7 @@ ADDRESS_MAP_END // readbyte - read a byte at the given address //------------------------------------------------- -inline uint8_t crt9007_t::readbyte(offs_t address) +inline uint8_t crt9007_device::readbyte(offs_t address) { return space().read_byte(address); } @@ -245,7 +246,7 @@ inline uint8_t crt9007_t::readbyte(offs_t address) // trigger_interrupt - //------------------------------------------------- -inline void crt9007_t::trigger_interrupt(int line) +inline void crt9007_device::trigger_interrupt(int line) { if (INTERRUPT_ENABLE & line) { @@ -255,7 +256,7 @@ inline void crt9007_t::trigger_interrupt(int line) if (!(status & STATUS_INTERRUPT_PENDING)) { - if (LOG) logerror("CRT9007 '%s' INT 1\n", tag()); + LOG("CRT9007 INT 1\n"); m_write_int(ASSERT_LINE); } } @@ -266,7 +267,7 @@ inline void crt9007_t::trigger_interrupt(int line) // update_cblank_line - //------------------------------------------------- -inline void crt9007_t::update_cblank_line() +inline void crt9007_device::update_cblank_line() { int x = m_screen->hpos(); int y = m_screen->vpos(); @@ -278,7 +279,7 @@ inline void crt9007_t::update_cblank_line() { m_cblank = cblank; - if (LOG) logerror("CRT9007 '%s' y %03u x %04u : CBLANK %u\n", tag(), y, x, m_cblank); + LOG("CRT9007 y %03u x %04u : CBLANK %u\n", y, x, m_cblank); m_write_cblank(m_cblank); } @@ -289,7 +290,7 @@ inline void crt9007_t::update_cblank_line() // update_hsync_timer - //------------------------------------------------- -inline void crt9007_t::update_hsync_timer(int state) +inline void crt9007_device::update_hsync_timer(int state) { int y = m_screen->vpos(); @@ -306,7 +307,7 @@ inline void crt9007_t::update_hsync_timer(int state) // update_vsync_timer - //------------------------------------------------- -inline void crt9007_t::update_vsync_timer(int state) +inline void crt9007_device::update_vsync_timer(int state) { int next_y = state ? m_vsync_start : m_vsync_end; @@ -320,7 +321,7 @@ inline void crt9007_t::update_vsync_timer(int state) // update_vlt_timer - //------------------------------------------------- -inline void crt9007_t::update_vlt_timer(int state) +inline void crt9007_device::update_vlt_timer(int state) { // this signal is active during all visible scan lines and during the horizontal trace at vertical retrace int y = m_screen->vpos(); @@ -338,7 +339,7 @@ inline void crt9007_t::update_vlt_timer(int state) // update_curs_timer - //------------------------------------------------- -inline void crt9007_t::update_curs_timer(int state) +inline void crt9007_device::update_curs_timer(int state) { // this signal is active for 1 character time for all scanlines within the data row // TODO @@ -349,7 +350,7 @@ inline void crt9007_t::update_curs_timer(int state) // update_drb_timer - //------------------------------------------------- -inline void crt9007_t::update_drb_timer(int state) +inline void crt9007_device::update_drb_timer(int state) { // this signal is active for 1 full scan line (VLT edge to edge) at the top scan line of each new row // there is 1 extra DRB signal during the 1st scanline of the vertical retrace interval @@ -385,7 +386,7 @@ inline void crt9007_t::update_drb_timer(int state) // update_dma_timer - //------------------------------------------------- -inline void crt9007_t::update_dma_timer() +inline void crt9007_device::update_dma_timer() { // TODO } @@ -395,7 +396,7 @@ inline void crt9007_t::update_dma_timer() // recompute_parameters - //------------------------------------------------- -inline void crt9007_t::recompute_parameters() +inline void crt9007_device::recompute_parameters() { // check that necessary registers have been loaded if (!HAS_VALID_PARAMETERS) return; @@ -428,11 +429,8 @@ inline void crt9007_t::recompute_parameters() //visarea.set(m_hsync_end, horiz_pix_total - 1, m_vsync_end, vert_pix_total - 1); - //if (LOG) - //{ - // logerror("CRT9007 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); - // logerror("CRT9007 '%s' Visible Area: (%u, %u) - (%u, %u)\n", tag(), visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y); - //} + //LOG("CRT9007 Screen: %u x %u @ %f Hz\n", horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); + //LOG("CRT9007 Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y); //m_screen->configure(horiz_pix_total, vert_pix_total, visarea, refresh); @@ -448,11 +446,11 @@ inline void crt9007_t::recompute_parameters() //************************************************************************** //------------------------------------------------- -// crt9007_t - constructor +// crt9007_device - constructor //------------------------------------------------- -crt9007_t::crt9007_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, CRT9007, "SMC CRT9007", tag, owner, clock, "crt9007", __FILE__), +crt9007_device::crt9007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, CRT9007, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_space_config("videoram", ENDIANNESS_LITTLE, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(crt9007)), @@ -477,7 +475,7 @@ crt9007_t::crt9007_t(const machine_config &mconfig, const char *tag, device_t *o // device_start - device-specific startup //------------------------------------------------- -void crt9007_t::device_start() +void crt9007_device::device_start() { // allocate timers m_hsync_timer = timer_alloc(TIMER_HSYNC); @@ -506,7 +504,7 @@ void crt9007_t::device_start() // device_reset - device-specific reset //------------------------------------------------- -void crt9007_t::device_reset() +void crt9007_device::device_reset() { m_disp = 0; m_vs = 0; @@ -553,7 +551,7 @@ void crt9007_t::device_reset() // device_clock_changed - handle clock change //------------------------------------------------- -void crt9007_t::device_clock_changed() +void crt9007_device::device_clock_changed() { recompute_parameters(); } @@ -563,7 +561,7 @@ void crt9007_t::device_clock_changed() // device_timer - handle timer events //------------------------------------------------- -void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +void crt9007_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { int x = m_screen->hpos(); int y = m_screen->vpos(); @@ -573,7 +571,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo case TIMER_HSYNC: m_hs = param; - if (LOG) logerror("CRT9007 '%s' y %03u x %04u : HS %u\n", tag(), y, x, m_hs); + LOG("CRT9007 y %03u x %04u : HS %u\n", y, x, m_hs); m_write_hs(m_hs); @@ -585,7 +583,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo case TIMER_VSYNC: m_vs = param; - if (LOG) logerror("CRT9007 '%s' y %03u x %04u : VS %u\n", tag(), y, x, m_vs); + LOG("CRT9007 y %03u x %04u : VS %u\n", y, x, m_vs); m_write_vs(param); @@ -607,7 +605,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo case TIMER_VLT: m_vlt = param; - if (LOG) logerror("CRT9007 '%s' y %03u x %04u : VLT %u\n", tag(), y, x, m_vlt); + LOG("CRT9007 y %03u x %04u : VLT %u\n", y, x, m_vlt); m_write_vlt(param); @@ -615,7 +613,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo break; case TIMER_CURS: - if (LOG) logerror("CRT9007 '%s' y %03u x %04u : CURS %u\n", tag(), y, x, param); + LOG("CRT9007 y %03u x %04u : CURS %u\n", y, x, param); m_write_curs(param); @@ -625,7 +623,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo case TIMER_DRB: m_drb = param; - if (LOG) logerror("CRT9007 '%s' y %03u x %04u : DRB %u\n", tag(), y, x, m_drb); + LOG("CRT9007 y %03u x %04u : DRB %u\n", y, x, m_drb); m_write_drb(param); @@ -637,7 +635,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo m_dma_delay = DMA_BURST_DELAY; m_dmar = 1; - if (LOG) logerror("CRT9007 '%s' DMAR 1\n", tag()); + LOG("CRT9007 DMAR 1\n"); m_write_dmar(ASSERT_LINE); } @@ -658,7 +656,7 @@ void crt9007_t::device_timer(emu_timer &timer, device_timer_id id, int param, vo // any address spaces owned by this device //------------------------------------------------- -const address_space_config *crt9007_t::memory_space_config(address_spacenum spacenum) const +const address_space_config *crt9007_device::memory_space_config(address_spacenum spacenum) const { return (spacenum == AS_0) ? &m_space_config : nullptr; } @@ -668,19 +666,19 @@ const address_space_config *crt9007_t::memory_space_config(address_spacenum spac // read - register read //------------------------------------------------- -READ8_MEMBER( crt9007_t::read ) +READ8_MEMBER( crt9007_device::read ) { uint8_t data = 0; switch (offset) { case 0x15: - if (LOG) logerror("CRT9007 '%s' Start\n", tag()); + LOG("CRT9007 Start\n"); m_disp = 1; break; case 0x16: - if (LOG) logerror("CRT9007 '%s' Reset\n", tag()); + LOG("CRT9007 Reset\n"); device_reset(); break; @@ -697,7 +695,7 @@ READ8_MEMBER( crt9007_t::read ) // reset interrupt pending bit m_status &= ~STATUS_INTERRUPT_PENDING; - if (LOG) logerror("CRT9007 '%s' INT 0\n", tag()); + LOG("CRT9007 INT 0\n"); m_write_int(CLEAR_LINE); break; @@ -713,7 +711,7 @@ READ8_MEMBER( crt9007_t::read ) break; default: - logerror("CRT9007 '%s' Read from Invalid Register: %02x!\n", tag(), offset); + logerror("CRT9007 Read from Invalid Register: %02x!\n", offset); } return data; @@ -724,7 +722,7 @@ READ8_MEMBER( crt9007_t::read ) // write - register write //------------------------------------------------- -WRITE8_MEMBER( crt9007_t::write ) +WRITE8_MEMBER( crt9007_device::write ) { m_reg[offset] = data; @@ -732,160 +730,136 @@ WRITE8_MEMBER( crt9007_t::write ) { case 0x00: recompute_parameters(); - if (LOG) logerror("CRT9007 '%s' Characters per Horizontal Period: %u\n", tag(), CHARACTERS_PER_HORIZONTAL_PERIOD); + LOG("CRT9007 Characters per Horizontal Period: %u\n", CHARACTERS_PER_HORIZONTAL_PERIOD); break; case 0x01: recompute_parameters(); - if (LOG) logerror("CRT9007 '%s' Characters per Data Row: %u\n", tag(), CHARACTERS_PER_DATA_ROW); + LOG("CRT9007 Characters per Data Row: %u\n", CHARACTERS_PER_DATA_ROW); break; case 0x02: recompute_parameters(); - if (LOG) logerror("CRT9007 '%s' Horizontal Delay: %u\n", tag(), HORIZONTAL_DELAY); + LOG("CRT9007 Horizontal Delay: %u\n", HORIZONTAL_DELAY); break; case 0x03: recompute_parameters(); - if (LOG) logerror("CRT9007 '%s' Horizontal Sync Width: %u\n", tag(), HORIZONTAL_SYNC_WIDTH); + LOG("CRT9007 Horizontal Sync Width: %u\n", HORIZONTAL_SYNC_WIDTH); break; case 0x04: recompute_parameters(); - if (LOG) logerror("CRT9007 '%s' Vertical Sync Width: %u\n", tag(), VERTICAL_SYNC_WIDTH); + LOG("CRT9007 Vertical Sync Width: %u\n", VERTICAL_SYNC_WIDTH); break; case 0x05: recompute_parameters(); - if (LOG) logerror("CRT9007 '%s' Vertical Delay: %u\n", tag(), VERTICAL_DELAY); + LOG("CRT9007 Vertical Delay: %u\n", VERTICAL_DELAY); break; case 0x06: recompute_parameters(); - if (LOG) - { - logerror("CRT9007 '%s' Pin Configuration: %u\n", tag(), PIN_CONFIGURATION); - logerror("CRT9007 '%s' Cursor Skew: %u\n", tag(), CURSOR_SKEW); - logerror("CRT9007 '%s' Blank Skew: %u\n", tag(), BLANK_SKEW); - } + LOG("CRT9007 Pin Configuration: %u\n", PIN_CONFIGURATION); + LOG("CRT9007 Cursor Skew: %u\n", CURSOR_SKEW); + LOG("CRT9007 Blank Skew: %u\n", BLANK_SKEW); break; case 0x07: recompute_parameters(); - if (LOG) logerror("CRT9007 '%s' Visible Data Rows per Frame: %u\n", tag(), VISIBLE_DATA_ROWS_PER_FRAME); + LOG("CRT9007 Visible Data Rows per Frame: %u\n", VISIBLE_DATA_ROWS_PER_FRAME); break; case 0x08: recompute_parameters(); - if (LOG) logerror("CRT9007 '%s' Scan Lines per Data Row: %u\n", tag(), SCAN_LINES_PER_DATA_ROW); + LOG("CRT9007 Scan Lines per Data Row: %u\n", SCAN_LINES_PER_DATA_ROW); break; case 0x09: recompute_parameters(); - if (LOG) logerror("CRT9007 '%s' Scan Lines per Frame: %u\n", tag(), SCAN_LINES_PER_FRAME); + LOG("CRT9007 Scan Lines per Frame: %u\n", SCAN_LINES_PER_FRAME); break; case 0x0a: - if (LOG) - { - logerror("CRT9007 '%s' DMA Burst Count: %u\n", tag(), DMA_BURST_COUNT); - logerror("CRT9007 '%s' DMA Burst Delay: %u\n", tag(), DMA_BURST_DELAY); - logerror("CRT9007 '%s' DMA Disable: %u\n", tag(), DMA_DISABLE); - } + LOG("CRT9007 DMA Burst Count: %u\n", DMA_BURST_COUNT); + LOG("CRT9007 DMA Burst Delay: %u\n", DMA_BURST_DELAY); + LOG("CRT9007 DMA Disable: %u\n", DMA_DISABLE); break; case 0x0b: - if (LOG) - { - logerror("CRT9007 '%s' %s Height Cursor\n", tag(), SINGLE_HEIGHT_CURSOR ? "Single" : "Double"); - logerror("CRT9007 '%s' Operation Mode: %u\n", tag(), OPERATION_MODE); - logerror("CRT9007 '%s' Interlace Mode: %u\n", tag(), INTERLACE_MODE); - logerror("CRT9007 '%s' %s Mechanism\n", tag(), PAGE_BLANK ? "Page Blank" : "Smooth Scroll"); - } + LOG("CRT9007 %s Height Cursor\n", SINGLE_HEIGHT_CURSOR ? "Single" : "Double"); + LOG("CRT9007 Operation Mode: %u\n", OPERATION_MODE); + LOG("CRT9007 Interlace Mode: %u\n", INTERLACE_MODE); + LOG("CRT9007 %s Mechanism\n", PAGE_BLANK ? "Page Blank" : "Smooth Scroll"); break; case 0x0c: break; case 0x0d: - if (LOG) - { - logerror("CRT9007 '%s' Table Start Register: %04x\n", tag(), TABLE_START); - logerror("CRT9007 '%s' Address Mode: %u\n", tag(), ADDRESS_MODE); - } + LOG("CRT9007 Table Start Register: %04x\n", TABLE_START); + LOG("CRT9007 Address Mode: %u\n", ADDRESS_MODE); break; case 0x0e: break; case 0x0f: - if (LOG) - { - logerror("CRT9007 '%s' Auxialiary Address Register 1: %04x\n", tag(), AUXILIARY_ADDRESS_1); - logerror("CRT9007 '%s' Row Attributes: %u\n", tag(), ROW_ATTRIBUTES_1); - } + LOG("CRT9007 Auxialiary Address Register 1: %04x\n", AUXILIARY_ADDRESS_1); + LOG("CRT9007 Row Attributes: %u\n", ROW_ATTRIBUTES_1); break; case 0x10: - if (LOG) logerror("CRT9007 '%s' Sequential Break Register 1: %u\n", tag(), SEQUENTIAL_BREAK_1); + LOG("CRT9007 Sequential Break Register 1: %u\n", SEQUENTIAL_BREAK_1); break; case 0x11: - if (LOG) logerror("CRT9007 '%s' Data Row Start Register: %u\n", tag(), DATA_ROW_START); + LOG("CRT9007 Data Row Start Register: %u\n", DATA_ROW_START); break; case 0x12: - if (LOG) logerror("CRT9007 '%s' Data Row End/Sequential Break Register 2: %u\n", tag(), SEQUENTIAL_BREAK_2); + LOG("CRT9007 Data Row End/Sequential Break Register 2: %u\n", SEQUENTIAL_BREAK_2); break; case 0x13: break; case 0x14: - if (LOG) - { - logerror("CRT9007 '%s' Auxiliary Address Register 2: %04x\n", tag(), AUXILIARY_ADDRESS_2); - logerror("CRT9007 '%s' Row Attributes: %u\n", tag(), ROW_ATTRIBUTES_2); - } + LOG("CRT9007 Auxiliary Address Register 2: %04x\n", AUXILIARY_ADDRESS_2); + LOG("CRT9007 Row Attributes: %u\n", ROW_ATTRIBUTES_2); break; case 0x15: - if (LOG) logerror("CRT9007 '%s' Start\n", tag()); + LOG("CRT9007 Start\n"); m_disp = 1; break; case 0x16: - if (LOG) logerror("CRT9007 '%s' Reset\n", tag()); + LOG("CRT9007 Reset\n"); device_reset(); break; case 0x17: - if (LOG) - { - logerror("CRT9007 '%s' Smooth Scroll Offset: %u\n", tag(), SMOOTH_SCROLL_OFFSET); - logerror("CRT9007 '%s' Smooth Scroll Offset Overflow: %u\n", tag(), SMOOTH_SCROLL_OFFSET_OVERFLOW); - } + LOG("CRT9007 Smooth Scroll Offset: %u\n", SMOOTH_SCROLL_OFFSET); + LOG("CRT9007 Smooth Scroll Offset Overflow: %u\n", SMOOTH_SCROLL_OFFSET_OVERFLOW); break; case 0x18: - if (LOG) logerror("CRT9007 '%s' Vertical Cursor Register: %u\n", tag(), VERTICAL_CURSOR); + LOG("CRT9007 Vertical Cursor Register: %u\n", VERTICAL_CURSOR); break; case 0x19: - if (LOG) logerror("CRT9007 '%s' Horizontal Cursor Register: %u\n", tag(), HORIZONTAL_CURSOR); + LOG("CRT9007 Horizontal Cursor Register: %u\n", HORIZONTAL_CURSOR); break; case 0x1a: - if (LOG) - { - logerror("CRT9007 '%s' Frame Timer: %u\n", tag(), FRAME_TIMER); - logerror("CRT9007 '%s' Light Pen Interrupt: %u\n", tag(), LIGHT_PEN_INTERRUPT); - logerror("CRT9007 '%s' Vertical Retrace Interrupt: %u\n", tag(), VERTICAL_RETRACE_INTERRUPT); - } + LOG("CRT9007 Frame Timer: %u\n", FRAME_TIMER); + LOG("CRT9007 Light Pen Interrupt: %u\n", LIGHT_PEN_INTERRUPT); + LOG("CRT9007 Vertical Retrace Interrupt: %u\n", VERTICAL_RETRACE_INTERRUPT); break; default: - logerror("CRT9007 '%s' Write to Invalid Register: %02x!\n", tag(), offset); + logerror("CRT9007 Write to Invalid Register: %02x!\n", offset); } } @@ -894,9 +868,9 @@ WRITE8_MEMBER( crt9007_t::write ) // ack_w - DMA acknowledge //------------------------------------------------- -WRITE_LINE_MEMBER( crt9007_t::ack_w ) +WRITE_LINE_MEMBER( crt9007_device::ack_w ) { - if (LOG) logerror("CRT9007 '%s' ACK: %u\n", tag(), state); + LOG("CRT9007 ACK: %u\n", state); if (m_dmar && !m_ack && state) { @@ -912,9 +886,9 @@ WRITE_LINE_MEMBER( crt9007_t::ack_w ) // lpstb_w - light pen strobe //------------------------------------------------- -WRITE_LINE_MEMBER( crt9007_t::lpstb_w ) +WRITE_LINE_MEMBER( crt9007_device::lpstb_w ) { - if (LOG) logerror("CRT9007 '%s' LPSTB: %u\n", tag(), state); + LOG("CRT9007 LPSTB: %u\n", state); if (!m_lpstb && state) { @@ -929,7 +903,7 @@ WRITE_LINE_MEMBER( crt9007_t::lpstb_w ) // set_character_width - //------------------------------------------------- -void crt9007_t::set_character_width(int value) +void crt9007_device::set_character_width(int value) { m_hpixels_per_column = value; diff --git a/src/devices/video/crt9007.h b/src/devices/video/crt9007.h index dbfbc7986fb..0618a62853e 100644 --- a/src/devices/video/crt9007.h +++ b/src/devices/video/crt9007.h @@ -29,17 +29,10 @@ **********************************************************************/ -#pragma once - -#ifndef __CRT9007__ -#define __CRT9007__ - - - +#ifndef MAME_VIDEO_CRT9007_H +#define MAME_VIDEO_CRT9007_H -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** +#pragma once @@ -49,40 +42,40 @@ //************************************************************************** #define MCFG_CRT9007_CHARACTER_WIDTH(_value) \ - crt9007_t::static_set_character_width(*device, _value); + crt9007_device::static_set_character_width(*device, _value); #define MCFG_CRT9007_INT_CALLBACK(_write) \ - devcb = &crt9007_t::set_int_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_int_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_DMAR_CALLBACK(_write) \ - devcb = &crt9007_t::set_dmar_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_dmar_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_VS_CALLBACK(_write) \ - devcb = &crt9007_t::set_vs_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_vs_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_HS_CALLBACK(_write) \ - devcb = &crt9007_t::set_hs_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_hs_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_VLT_CALLBACK(_write) \ - devcb = &crt9007_t::set_vlt_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_vlt_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_CURS_CALLBACK(_write) \ - devcb = &crt9007_t::set_curs_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_curs_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_DRB_CALLBACK(_write) \ - devcb = &crt9007_t::set_drb_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_drb_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_WBEN_CALLBACK(_write) \ - devcb = &crt9007_t::set_wben_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_wben_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_CBLANK_CALLBACK(_write) \ - devcb = &crt9007_t::set_cblank_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_cblank_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_SLG_CALLBACK(_write) \ - devcb = &crt9007_t::set_slg_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_slg_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9007_SLD_CALLBACK(_write) \ - devcb = &crt9007_t::set_sld_wr_callback(*device, DEVCB_##_write); + devcb = &crt9007_device::set_sld_wr_callback(*device, DEVCB_##_write); @@ -90,29 +83,29 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> crt9007_t +// ======================> crt9007_device -class crt9007_t : public device_t, +class crt9007_device : public device_t, public device_memory_interface, public device_video_interface { public: // construction/destruction - crt9007_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - static void static_set_character_width(device_t &device, int value) { downcast(device).m_hpixels_per_column = value; } - - template static devcb_base &set_int_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_int.set_callback(object); } - template static devcb_base &set_dmar_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_dmar.set_callback(object); } - template static devcb_base &set_vs_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_vs.set_callback(object); } - template static devcb_base &set_hs_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_hs.set_callback(object); } - template static devcb_base &set_vlt_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_vlt.set_callback(object); } - template static devcb_base &set_curs_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_curs.set_callback(object); } - template static devcb_base &set_drb_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_drb.set_callback(object); } - template static devcb_base &set_wben_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_wben.set_callback(object); } - template static devcb_base &set_cblank_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_cblank.set_callback(object); } - template static devcb_base &set_slg_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_slg.set_callback(object); } - template static devcb_base &set_sld_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_sld.set_callback(object); } + crt9007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + static void static_set_character_width(device_t &device, int value) { downcast(device).m_hpixels_per_column = value; } + + template static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_int.set_callback(std::forward(cb)); } + template static devcb_base &set_dmar_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_dmar.set_callback(std::forward(cb)); } + template static devcb_base &set_vs_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_vs.set_callback(std::forward(cb)); } + template static devcb_base &set_hs_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_hs.set_callback(std::forward(cb)); } + template static devcb_base &set_vlt_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_vlt.set_callback(std::forward(cb)); } + template static devcb_base &set_curs_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_curs.set_callback(std::forward(cb)); } + template static devcb_base &set_drb_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_drb.set_callback(std::forward(cb)); } + template static devcb_base &set_wben_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_wben.set_callback(std::forward(cb)); } + template static devcb_base &set_cblank_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_cblank.set_callback(std::forward(cb)); } + template static devcb_base &set_slg_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_slg.set_callback(std::forward(cb)); } + template static devcb_base &set_sld_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_sld.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -214,8 +207,6 @@ private: // device type definition -extern const device_type CRT9007; - - +DECLARE_DEVICE_TYPE(CRT9007, crt9007_device) -#endif +#endif // MAME_VIDEO_CRT9007_H diff --git a/src/devices/video/crt9021.cpp b/src/devices/video/crt9021.cpp index b34ed316bd4..5b4d7195cde 100644 --- a/src/devices/video/crt9021.cpp +++ b/src/devices/video/crt9021.cpp @@ -38,20 +38,16 @@ #include "screen.h" - -//************************************************************************** -// DEVICE DEFINITIONS -//************************************************************************** - -const device_type CRT9021 = device_creator; +//#define VERBOSE 1 +#include "logmacro.h" //************************************************************************** -// MACROS / CONSTANTS +// DEVICE DEFINITIONS //************************************************************************** -#define LOG 0 +DEFINE_DEVICE_TYPE(CRT9021, crt9021_device, "crt9021", "SMC CRT9021 VAC") @@ -60,11 +56,11 @@ const device_type CRT9021 = device_creator; //************************************************************************** //------------------------------------------------- -// crt9021_t - constructor +// crt9021_device - constructor //------------------------------------------------- -crt9021_t::crt9021_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, CRT9021, "SMC CRT9021", tag, owner, clock, "crt9021", __FILE__), +crt9021_device::crt9021_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, CRT9021, tag, owner, clock), device_video_interface(mconfig, *this), m_data(0), m_ms0(0), @@ -96,7 +92,7 @@ crt9021_t::crt9021_t(const machine_config &mconfig, const char *tag, device_t *o // device_start - device-specific startup //------------------------------------------------- -void crt9021_t::device_start() +void crt9021_device::device_start() { // register bitmap m_screen->register_screen_bitmap(m_bitmap); @@ -132,9 +128,9 @@ void crt9021_t::device_start() // ld_sh_w - load/shift //------------------------------------------------- -WRITE_LINE_MEMBER( crt9021_t::ld_sh_w ) +WRITE_LINE_MEMBER( crt9021_device::ld_sh_w ) { - if (LOG) logerror("CRT9021 '%s' LD/SH: %u\n", tag(), state); + LOG("CRT9021 LD/SH: %u\n", state); if (!m_ld_sh && state) { @@ -172,9 +168,9 @@ WRITE_LINE_MEMBER( crt9021_t::ld_sh_w ) // vsync_w - vertical sync //------------------------------------------------- -WRITE_LINE_MEMBER( crt9021_t::vsync_w ) +WRITE_LINE_MEMBER( crt9021_device::vsync_w ) { - if (LOG) logerror("CRT9021 '%s' VSYNC: %u\n", tag(), state); + LOG("CRT9021 VSYNC: %u\n", state); } @@ -182,7 +178,7 @@ WRITE_LINE_MEMBER( crt9021_t::vsync_w ) // screen_update - update screen //------------------------------------------------- -uint32_t crt9021_t::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +uint32_t crt9021_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { m_bitmap.fill(rgb_t::black(), cliprect); diff --git a/src/devices/video/crt9021.h b/src/devices/video/crt9021.h index 36639d3b498..2a0b3620c4d 100644 --- a/src/devices/video/crt9021.h +++ b/src/devices/video/crt9021.h @@ -23,10 +23,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_VIDEO_CRT9021_H +#define MAME_VIDEO_CRT9021_H -#ifndef __CRT9021__ -#define __CRT9021__ +#pragma once @@ -39,26 +39,25 @@ #define MCFG_CRT9021_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \ - crt9021_t::static_set_display_callback(*device, crt9021_draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + crt9021_device::static_set_display_callback(*device, crt9021_device::draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate crt9021_draw_character_delegate; - -// ======================> crt9021_t +// ======================> crt9021_device -class crt9021_t : public device_t, - public device_video_interface +class crt9021_device : public device_t, public device_video_interface { public: + typedef device_delegate draw_character_delegate; + // construction/destruction - crt9021_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + crt9021_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_display_callback(device_t &device, crt9021_draw_character_delegate callback) { downcast(device).m_display_cb = callback; } + static void static_set_display_callback(device_t &device, draw_character_delegate &&cb) { downcast(device).m_display_cb = std::move(cb); } void write(uint8_t data) { m_data = data; } DECLARE_WRITE8_MEMBER( write ) { write(data); } @@ -97,7 +96,7 @@ private: MS_UNDERLINE }; - crt9021_draw_character_delegate m_display_cb; + draw_character_delegate m_display_cb; bitmap_rgb32 m_bitmap; @@ -131,8 +130,6 @@ private: // device type definition -extern const device_type CRT9021; - - +DECLARE_DEVICE_TYPE(CRT9021, crt9021_device) -#endif +#endif // MAME_VIDEO_CRT9021_H diff --git a/src/devices/video/crt9212.cpp b/src/devices/video/crt9212.cpp index 922826f37ff..575624d3dda 100644 --- a/src/devices/video/crt9212.cpp +++ b/src/devices/video/crt9212.cpp @@ -9,21 +9,16 @@ #include "emu.h" #include "crt9212.h" - - -//************************************************************************** -// DEVICE DEFINITIONS -//************************************************************************** - -const device_type CRT9212 = device_creator; +//#define VERBOSE 1 +#include "logmacro.h" //************************************************************************** -// MACROS / CONSTANTS +// DEVICE DEFINITIONS //************************************************************************** -#define LOG 0 +DEFINE_DEVICE_TYPE(CRT9212, crt9212_device, "crt9212", "SMC CRT9212 DRB") @@ -32,11 +27,11 @@ const device_type CRT9212 = device_creator; //************************************************************************** //------------------------------------------------- -// crt9212_t - constructor +// crt9212_device - constructor //------------------------------------------------- -crt9212_t::crt9212_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, CRT9212, "SMC CRT9212", tag, owner, clock, "crt9212", __FILE__), +crt9212_device::crt9212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, CRT9212, tag, owner, clock), m_write_dout(*this), m_write_rof(*this), m_write_wof(*this), @@ -64,7 +59,7 @@ crt9212_t::crt9212_t(const machine_config &mconfig, const char *tag, device_t *o // device_start - device-specific startup //------------------------------------------------- -void crt9212_t::device_start() +void crt9212_device::device_start() { // resolve callbacks m_write_dout.resolve_safe(); @@ -97,7 +92,7 @@ void crt9212_t::device_start() // clrcnt_w - clear counter //------------------------------------------------- -WRITE_LINE_MEMBER( crt9212_t::clrcnt_w ) +WRITE_LINE_MEMBER( crt9212_device::clrcnt_w ) { if (m_clrcnt && !state) { @@ -112,7 +107,7 @@ WRITE_LINE_MEMBER( crt9212_t::clrcnt_w ) // rclk_w - read clock //------------------------------------------------- -WRITE_LINE_MEMBER( crt9212_t::rclk_w ) +WRITE_LINE_MEMBER( crt9212_device::rclk_w ) { if (!m_rclk && state) { @@ -139,7 +134,7 @@ WRITE_LINE_MEMBER( crt9212_t::rclk_w ) m_clrcnt_edge = false; } - if (m_ren_int && (m_rac < CRT9212_RAM_SIZE)) + if (m_ren_int && (m_rac < RAM_SIZE)) { // output data m_write_dout(m_ram[m_rac][!m_buffer]); @@ -147,7 +142,7 @@ WRITE_LINE_MEMBER( crt9212_t::rclk_w ) // increment read address counter m_rac++; - if (m_rac == CRT9212_RAM_SIZE - 1) + if (m_rac == RAM_SIZE - 1) { // set read overflow m_write_rof(1); @@ -165,11 +160,11 @@ WRITE_LINE_MEMBER( crt9212_t::rclk_w ) // wclk_w - write clock //------------------------------------------------- -WRITE_LINE_MEMBER( crt9212_t::wclk_w ) +WRITE_LINE_MEMBER( crt9212_device::wclk_w ) { if (!m_wclk && state) { - if (m_wen_int && (m_wac < CRT9212_RAM_SIZE)) + if (m_wen_int && (m_wac < RAM_SIZE)) { // input data m_ram[m_rac][m_buffer] = m_data_latch; @@ -177,7 +172,7 @@ WRITE_LINE_MEMBER( crt9212_t::wclk_w ) // increment write address counter m_wac++; - if (m_wac == CRT9212_RAM_SIZE - 1) + if (m_wac == RAM_SIZE - 1) { // set write overflow m_write_wof(1); diff --git a/src/devices/video/crt9212.h b/src/devices/video/crt9212.h index 699594b98e0..99023a0fe76 100644 --- a/src/devices/video/crt9212.h +++ b/src/devices/video/crt9212.h @@ -23,19 +23,11 @@ **********************************************************************/ -#pragma once - -#ifndef __CRT9212__ -#define __CRT9212__ - - - +#ifndef MAME_VIDEO_CRT9212_H +#define MAME_VIDEO_CRT9212_H -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** +#pragma once -const int CRT9212_RAM_SIZE = 135; @@ -44,16 +36,16 @@ const int CRT9212_RAM_SIZE = 135; //************************************************************************** #define MCFG_CRT9212_WEN2_VCC() \ - crt9212_t::static_set_wen2(*device, 1); + crt9212_device::static_set_wen2(*device, 1); #define MCFG_CRT9212_DOUT_CALLBACK(_write) \ - devcb = &crt9212_t::set_dout_wr_callback(*device, DEVCB_##_write); + devcb = &crt9212_device::set_dout_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9212_ROF_CALLBACK(_write) \ - devcb = &crt9212_t::set_rof_wr_callback(*device, DEVCB_##_write); + devcb = &crt9212_device::set_rof_wr_callback(*device, DEVCB_##_write); #define MCFG_CRT9212_WOF_CALLBACK(_write) \ - devcb = &crt9212_t::set_wof_wr_callback(*device, DEVCB_##_write); + devcb = &crt9212_device::set_wof_wr_callback(*device, DEVCB_##_write); @@ -61,19 +53,19 @@ const int CRT9212_RAM_SIZE = 135; // TYPE DEFINITIONS //************************************************************************** -// ======================> crt9212_t +// ======================> crt9212_device -class crt9212_t : public device_t +class crt9212_device : public device_t { public: // construction/destruction - crt9212_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + crt9212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_wen2(device_t &device, int state) { downcast(device).m_wen2 = state; } + static void static_set_wen2(device_t &device, int state) { downcast(device).m_wen2 = state; } - template static devcb_base &set_dout_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_dout.set_callback(object); } - template static devcb_base &set_rof_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_rof.set_callback(object); } - template static devcb_base &set_wof_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_wof.set_callback(object); } + template static devcb_base &set_dout_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_dout.set_callback(std::forward(cb)); } + template static devcb_base &set_rof_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_rof.set_callback(std::forward(cb)); } + template static devcb_base &set_wof_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_wof.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER( write ) { m_data = data; } DECLARE_WRITE_LINE_MEMBER( clrcnt_w ); @@ -90,6 +82,8 @@ protected: virtual void device_start() override; private: + static constexpr int RAM_SIZE = 135; + devcb_write8 m_write_dout; devcb_write_line m_write_rof; devcb_write_line m_write_wof; @@ -110,7 +104,7 @@ private: uint8_t m_data_latch; int m_ren_int; int m_wen_int; - uint8_t m_ram[CRT9212_RAM_SIZE][2]; + uint8_t m_ram[RAM_SIZE][2]; int m_buffer; int m_rac; int m_wac; diff --git a/src/devices/video/crtc_ega.cpp b/src/devices/video/crtc_ega.cpp index f993d883047..b7318d33f99 100644 --- a/src/devices/video/crtc_ega.cpp +++ b/src/devices/video/crtc_ega.cpp @@ -13,15 +13,15 @@ #include "screen.h" +#define VERBOSE 1 +#include "logmacro.h" -#define LOG (1) - -const device_type CRTC_EGA = device_creator; +DEFINE_DEVICE_TYPE(CRTC_EGA, crtc_ega_device, "crtc_ega", "IBM EGA CRT Controller") crtc_ega_device::crtc_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CRTC_EGA, "crtc_EGA", tag, owner, clock, "crtc_ega", __FILE__), device_video_interface(mconfig, *this, false) + : device_t(mconfig, CRTC_EGA, tag, owner, clock), device_video_interface(mconfig, *this, false) , m_res_out_de_cb(*this), m_res_out_hsync_cb(*this), m_res_out_vsync_cb(*this), m_res_out_vblank_cb(*this) , m_horiz_char_total(0), m_horiz_disp(0), m_horiz_blank_start(0), m_horiz_blank_end(0) , m_ena_vert_access(0), m_de_skew(0) @@ -80,7 +80,7 @@ READ8_MEMBER( crtc_ega_device::register_r ) WRITE8_MEMBER( crtc_ega_device::register_w ) { - if (LOG) logerror("%s CRTC_EGA: reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data); + LOG("%s CRTC_EGA: reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data); switch (m_register_address_latch) { @@ -198,7 +198,7 @@ void crtc_ega_device::recompute_parameters(bool postload) rectangle visarea(0, max_visible_x, 0, max_visible_y); - if (LOG) logerror("CRTC_EGA config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x Freq: %ffps\n", + LOG("CRTC_EGA config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x Freq: %ffps\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); if ( m_screen != nullptr ) @@ -209,7 +209,7 @@ void crtc_ega_device::recompute_parameters(bool postload) else { m_has_valid_parameters = false; - if (LOG) logerror("CRTC_EGA bad config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x\n", + LOG("CRTC_EGA bad config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1); } diff --git a/src/devices/video/crtc_ega.h b/src/devices/video/crtc_ega.h index 587cb7e90b9..cd30ba53f33 100644 --- a/src/devices/video/crtc_ega.h +++ b/src/devices/video/crtc_ega.h @@ -6,17 +6,8 @@ **********************************************************************/ -#ifndef __CRTC_EGA__ -#define __CRTC_EGA__ - - -/* callback definitions */ -typedef device_delegate crtc_ega_begin_update_delegate; - -typedef device_delegate crtc_ega_row_update_delegate; - -typedef device_delegate crtc_ega_end_update_delegate; +#ifndef MAME_VIDEO_CRTC_EGA_H +#define MAME_VIDEO_CRTC_EGA_H #define CRTC_EGA_BEGIN_UPDATE(_name) void _name(bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -30,13 +21,13 @@ typedef device_delegate #define MCFG_CRTC_EGA_SET_SCREEN MCFG_VIDEO_SET_SCREEN #define MCFG_CRTC_EGA_BEGIN_UPDATE_CB(_class, _method) \ - crtc_ega_device::set_begin_update_callback(*device, crtc_ega_begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + crtc_ega_device::set_begin_update_callback(*device, crtc_ega_device::begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_CRTC_EGA_ROW_UPDATE_CB(_class, _method) \ - crtc_ega_device::set_row_update_callback(*device, crtc_ega_row_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + crtc_ega_device::set_row_update_callback(*device, crtc_ega_device::row_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_CRTC_EGA_END_UPDATE_CB(_class, _method) \ - crtc_ega_device::set_end_update_callback(*device, crtc_ega_end_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + crtc_ega_device::set_end_update_callback(*device, crtc_ega_device::end_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_CRTC_EGA_HPIXELS_PER_COLUMN(_pix) \ crtc_ega_device::set_hpixels_per_column(*device, _pix); @@ -58,20 +49,26 @@ class crtc_ega_device : public device_t, public device_video_interface { public: + /* callback definitions */ + typedef device_delegate begin_update_delegate; + typedef device_delegate row_update_delegate; + typedef device_delegate end_update_delegate; + + crtc_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_res_out_de_callback(device_t &device, _Object object) - { return downcast(device).m_res_out_de_cb.set_callback(object); } - template static devcb_base &set_res_out_hsync_callback(device_t &device, _Object object) - { return downcast(device).m_res_out_hsync_cb.set_callback(object); } - template static devcb_base &set_res_out_vsync_callback(device_t &device, _Object object) - { return downcast(device).m_res_out_vsync_cb.set_callback(object); } - template static devcb_base &set_res_out_vblank_callback(device_t &device, _Object object) - { return downcast(device).m_res_out_vblank_cb.set_callback(object); } - - static void set_begin_update_callback(device_t &device, crtc_ega_begin_update_delegate callback) { downcast(device).m_begin_update_cb = callback; } - static void set_row_update_callback(device_t &device, crtc_ega_row_update_delegate callback) { downcast(device).m_row_update_cb = callback; } - static void set_end_update_callback(device_t &device, crtc_ega_end_update_delegate callback) { downcast(device).m_end_update_cb = callback; } + template static devcb_base &set_res_out_de_callback(device_t &device, Object &&cb) + { return downcast(device).m_res_out_de_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_res_out_hsync_callback(device_t &device, Object &&cb) + { return downcast(device).m_res_out_hsync_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_res_out_vsync_callback(device_t &device, Object &&cb) + { return downcast(device).m_res_out_vsync_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_res_out_vblank_callback(device_t &device, Object &&cb) + { return downcast(device).m_res_out_vblank_cb.set_callback(std::forward(cb)); } + + static void set_begin_update_callback(device_t &device, begin_update_delegate &&cb) { downcast(device).m_begin_update_cb = std::move(cb); } + static void set_row_update_callback(device_t &device, row_update_delegate &&cb) { downcast(device).m_row_update_cb = std::move(cb); } + static void set_end_update_callback(device_t &device, end_update_delegate &&cb) { downcast(device).m_end_update_cb = std::move(cb); } static void set_hpixels_per_column(device_t &device, int hpixels_per_column) { downcast(device).m_hpixels_per_column = hpixels_per_column; } /* select one of the registers for reading or writing */ @@ -119,16 +116,16 @@ private: /* if specified, this gets called before any pixel update, optionally return a pointer that will be passed to the update and tear down callbacks */ - crtc_ega_begin_update_delegate m_begin_update_cb; + begin_update_delegate m_begin_update_cb; /* this gets called for every row, the driver must output x_count * hpixels_per_column pixels. cursor_x indicates the character position where the cursor is, or -1 if there is no cursor on this row */ - crtc_ega_row_update_delegate m_row_update_cb; + row_update_delegate m_row_update_cb; /* if specified, this gets called after all row updating is complete */ - crtc_ega_end_update_delegate m_end_update_cb; + end_update_delegate m_end_update_cb; /* ega/vga register file */ uint8_t m_horiz_char_total; /* 0x00 */ @@ -190,13 +187,13 @@ private: int16_t m_cursor_x; /* timers */ - static const device_timer_id TIMER_LINE = 0; - static const device_timer_id TIMER_DE_OFF = 1; - static const device_timer_id TIMER_CUR_ON = 2; - static const device_timer_id TIMER_CUR_OFF = 3; - static const device_timer_id TIMER_HSYNC_ON = 4; - static const device_timer_id TIMER_HSYNC_OFF = 5; - static const device_timer_id TIMER_LIGHT_PEN_LATCH = 6; + static constexpr device_timer_id TIMER_LINE = 0; + static constexpr device_timer_id TIMER_DE_OFF = 1; + static constexpr device_timer_id TIMER_CUR_ON = 2; + static constexpr device_timer_id TIMER_CUR_OFF = 3; + static constexpr device_timer_id TIMER_HSYNC_ON = 4; + static constexpr device_timer_id TIMER_HSYNC_OFF = 5; + static constexpr device_timer_id TIMER_LIGHT_PEN_LATCH = 6; emu_timer *m_line_timer; emu_timer *m_de_off_timer; @@ -230,6 +227,6 @@ private: void update_cursor_state(); }; -extern const device_type CRTC_EGA; +DECLARE_DEVICE_TYPE(CRTC_EGA, crtc_ega_device) -#endif +#endif // MAME_VIDEO_CRTC_EGA_H diff --git a/src/devices/video/dl1416.cpp b/src/devices/video/dl1416.cpp index f79c33e9717..dfa7315e522 100644 --- a/src/devices/video/dl1416.cpp +++ b/src/devices/video/dl1416.cpp @@ -96,7 +96,7 @@ class dl1414t_device : public dl1414_device { public: dl1414t_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) - : dl1414_device(mconfig, DL1414T, "DL1414T", tag, owner, clock, "dl1414t", __FILE__) + : dl1414_device(mconfig, DL1414T, tag, owner, clock) { } @@ -112,7 +112,7 @@ class dl1416b_device : public dl1416_device { public: dl1416b_device(machine_config const &mconfig, const char *tag, device_t *owner, uint32_t clock) - : dl1416_device(mconfig, DL1416B, "DL1416B", tag, owner, clock, "dl1416b", __FILE__) + : dl1416_device(mconfig, DL1416B, tag, owner, clock) { } @@ -136,7 +136,7 @@ class dl1416t_device : public dl1416_device { public: dl1416t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : dl1416_device(mconfig, DL1416T, "DL1416T", tag, owner, clock, "dl1416t", __FILE__) + : dl1416_device(mconfig, DL1416T, tag, owner, clock) { } @@ -164,9 +164,9 @@ protected: DEVICE TYPE GLOBALS *****************************************************************************/ -device_type const DL1414T = device_creator; -device_type const DL1416B = device_creator; -device_type const DL1416T = device_creator; +DEFINE_DEVICE_TYPE(DL1414T, dl1414t_device, "dl1414t", "DL1414T") +DEFINE_DEVICE_TYPE(DL1416B, dl1416b_device, "dl1416b", "DL1416B") +DEFINE_DEVICE_TYPE(DL1416T, dl1416t_device, "dl1416t", "DL1416T") @@ -177,13 +177,10 @@ device_type const DL1416T = device_creator; dl1414_device::dl1414_device( machine_config const &mconfig, device_type type, - char const *name, char const *tag, device_t *owner, - uint32_t clock, - char const *shortname, - char const *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) + uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , m_update_cb(*this) , m_digit_ram{ 0x00, 0x00, 0x00, 0x00 } , m_cursor_state{ false, false, false, false } @@ -199,13 +196,10 @@ dl1414_device::dl1414_device( dl1416_device::dl1416_device( machine_config const &mconfig, device_type type, - char const *name, char const *tag, device_t *owner, - uint32_t clock, - char const *shortname, - char const *source) - : dl1414_device(mconfig, type, name, tag, owner, clock, shortname, source) + uint32_t clock) + : dl1414_device(mconfig, type, tag, owner, clock) , m_cu_in(true) { } diff --git a/src/devices/video/dl1416.h b/src/devices/video/dl1416.h index e5f5a894321..dbc67b97787 100644 --- a/src/devices/video/dl1416.h +++ b/src/devices/video/dl1416.h @@ -11,8 +11,10 @@ * ****************************************************************************/ -#ifndef MAME_DEVICES_VIDEO_DL1416_H -#define MAME_DEVICES_VIDEO_DL1416_H +#ifndef MAME_VIDEO_DL1416_H +#define MAME_VIDEO_DL1416_H + +#pragma once /*************************************************************************** @@ -42,8 +44,8 @@ extern device_type const DL1416T; class dl1414_device : public device_t { public: - template static devcb_base &set_update_handler(device_t &device, Object &&object) - { return downcast(device).m_update_cb.set_callback(std::forward(object)); } + template static devcb_base &set_update_handler(device_t &device, Object &&cb) + { return downcast(device).m_update_cb.set_callback(std::forward(cb)); } // signal-level interface DECLARE_WRITE_LINE_MEMBER(wr_w); // write strobe (rising edge) @@ -58,12 +60,9 @@ protected: dl1414_device( machine_config const &mconfig, device_type type, - char const *name, char const *tag, device_t *owner, - uint32_t clock, - char const *shortname, - char const *source); + uint32_t clock); // device-level overrides virtual void device_start() override; @@ -95,12 +94,9 @@ protected: dl1416_device( machine_config const &mconfig, device_type type, - char const *name, char const *tag, device_t *owner, - uint32_t clock, - char const *shortname, - char const *source); + uint32_t clock); // device-level overrides virtual void device_start() override; @@ -112,4 +108,4 @@ private: bool m_cu_in; }; -#endif // MAME_DEVICES_VIDEO_DL1416_H +#endif // MAME_VIDEO_DL1416_H diff --git a/src/devices/video/dm9368.cpp b/src/devices/video/dm9368.cpp index 8b06f49f81d..c7f8e3379a3 100644 --- a/src/devices/video/dm9368.cpp +++ b/src/devices/video/dm9368.cpp @@ -9,13 +9,15 @@ #include "emu.h" #include "dm9368.h" +//#define VERBOSE 1 +#include "logmacro.h" //************************************************************************** // DEVICE DEFINITION //************************************************************************** -const device_type DM9368 = device_creator; +DEFINE_DEVICE_TYPE(DM9368, dm9368_device, "dm9368", "Fairchild DM9368 7-Segment Decoder") @@ -23,10 +25,7 @@ const device_type DM9368 = device_creator; // MACROS / CONSTANTS //************************************************************************** -#define LOG 0 - - -const uint8_t dm9368_device::m_segment_data[16] = +const uint8_t dm9368_device::s_segment_data[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x67, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; @@ -42,7 +41,7 @@ const uint8_t dm9368_device::m_segment_data[16] = //------------------------------------------------- dm9368_device::dm9368_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, DM9368, "DM9368 7-Segment Decoder", tag, owner, clock, "dm9368", __FILE__), + device_t(mconfig, DM9368, tag, owner, clock), device_output_interface(mconfig, *this), m_write_rbo(*this), m_rbi(1), @@ -72,21 +71,21 @@ void dm9368_device::device_start() void dm9368_device::a_w(uint8_t data) { - int a = data & 0x0f; + int const a = data & 0x0f; uint8_t value = 0; if (!m_rbi && !a) { - if (LOG) logerror("DM9368 '%s' Blanked Rippling Zero\n", tag()); + LOG("DM9368 Blanked Rippling Zero\n"); // blank rippling 0 m_rbo = 0; } else { - if (LOG) logerror("DM9368 '%s' Output Data: %u = %02x\n", tag(), a, m_segment_data[a]); + LOG("DM9368 Output Data: %u = %02x\n", a, s_segment_data[a]); - value = m_segment_data[a]; + value = s_segment_data[a]; m_rbo = 1; } diff --git a/src/devices/video/dm9368.h b/src/devices/video/dm9368.h index 2c6c1ca908c..59eff4d05a1 100644 --- a/src/devices/video/dm9368.h +++ b/src/devices/video/dm9368.h @@ -17,10 +17,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_VIDEO_DM9368_H +#define MAME_VIDEO_DM9368_H -#ifndef __DM9368__ -#define __DM9368__ +#pragma once @@ -62,13 +62,11 @@ private: int m_rbi; int m_rbo; - static const uint8_t m_segment_data[]; + static const uint8_t s_segment_data[16]; }; // device type definition -extern const device_type DM9368; - - +DECLARE_DEVICE_TYPE(DM9368, dm9368_device) -#endif +#endif // MAME_VIDEO_DM9368_H diff --git a/src/devices/video/ef9340_1.cpp b/src/devices/video/ef9340_1.cpp index 8bc8838b592..484cc67cfbf 100644 --- a/src/devices/video/ef9340_1.cpp +++ b/src/devices/video/ef9340_1.cpp @@ -17,17 +17,17 @@ // device type definition -const device_type EF9340_1 = device_creator; +DEFINE_DEVICE_TYPE(EF9340_1, ef9340_1_device, "ef9340_1", "Thomson EF9340+EF9341") -static const uint8_t bgr2rgb[8] = +static constexpr uint8_t bgr2rgb[8] = { 0x00, 0x04, 0x02, 0x06, 0x01, 0x05, 0x03, 0x07 }; ef9340_1_device::ef9340_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, EF9340_1, "EF9340+EF9341", tag, owner, clock, "ef9340_1", __FILE__) + : device_t(mconfig, EF9340_1, tag, owner, clock) , device_video_interface(mconfig, *this), m_line_timer(nullptr) //, m_start_vpos(START_Y) //, m_start_vblank(START_Y + SCREEN_HEIGHT) diff --git a/src/devices/video/ef9340_1.h b/src/devices/video/ef9340_1.h index 6a7246ae42a..e5cbd23964a 100644 --- a/src/devices/video/ef9340_1.h +++ b/src/devices/video/ef9340_1.h @@ -9,10 +9,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_EF9340_1_H +#define MAME_VIDEO_EF9340_1_H -#ifndef __EF9340_1_H__ -#define __EF9340_1_H__ +#pragma once @@ -47,7 +47,7 @@ protected: void ef9340_scanline(int vpos); /* timers */ - static const device_timer_id TIMER_LINE = 0; + static constexpr device_timer_id TIMER_LINE = 0; emu_timer *m_line_timer; @@ -75,6 +75,6 @@ protected: // device type definition -extern const device_type EF9340_1; +DECLARE_DEVICE_TYPE(EF9340_1, ef9340_1_device) -#endif /* __EF9340_1_H__ */ +#endif // MAME_VIDEO_EF9340_1_H diff --git a/src/devices/video/ef9345.cpp b/src/devices/video/ef9345.cpp index ed3ec8adc3a..e0385007b7b 100644 --- a/src/devices/video/ef9345.cpp +++ b/src/devices/video/ef9345.cpp @@ -9,6 +9,7 @@ This code is based on Daniel Coulom's implementation in DCVG5k and DCAlice released by Daniel Coulom under GPL license + TS9347 variant support added by Jean-François DEL NERO *********************************************************************/ #include "emu.h" @@ -28,7 +29,8 @@ //************************************************************************** // devices -const device_type EF9345 = device_creator; +DEFINE_DEVICE_TYPE(EF9345, ef9345_device, "ef9345", "EF9345") +DEFINE_DEVICE_TYPE(TS9347, ts9347_device, "ts9347", "TS9347") // default address map static ADDRESS_MAP_START( ef9345, AS_0, 8, ef9345_device ) @@ -100,15 +102,26 @@ inline void ef9345_device::inc_y(uint8_t r) //------------------------------------------------- ef9345_device::ef9345_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, EF9345, "EF9345", tag, owner, clock, "ef9345", __FILE__), + ef9345_device(mconfig, EF9345, tag, owner, clock, EF9345_MODE::TYPE_EF9345) +{ +} + +ef9345_device::ef9345_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, EF9345_MODE variant) : + device_t(mconfig, type, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(ef9345)), m_charset(*this, DEVICE_SELF), + m_variant(variant), m_palette(*this, finder_base::DUMMY_TAG) { } +ts9347_device::ts9347_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : ef9345_device(mconfig, TS9347, tag, owner, clock, EF9345_MODE::TYPE_TS9347) +{ +} + //------------------------------------------------- // static_set_palette_tag: Set the tag of the // palette device @@ -212,26 +225,24 @@ void ef9345_device::set_busy_flag(int period) // draw a char in 40 char line mode void ef9345_device::draw_char_40(uint8_t *c, uint16_t x, uint16_t y) { - //verify size limit - if (y * 10 >= m_screen->height() || x * 8 >= m_screen->width()) - return; - const rgb_t *palette = m_palette->palette()->entry_list_raw(); - for(int i = 0; i < 10; i++) - for(int j = 0; j < 8; j++) + const int scan_xsize = std::min( m_screen->width() - (x * 8), 8); + const int scan_ysize = std::min( m_screen->height() - (y * 10), 10); + + for(int i = 0; i < scan_ysize; i++) + for(int j = 0; j < scan_xsize; j++) m_screen_out.pix32(y * 10 + i, x * 8 + j) = palette[c[8 * i + j] & 0x07]; } // draw a char in 80 char line mode void ef9345_device::draw_char_80(uint8_t *c, uint16_t x, uint16_t y) { - // verify size limit - if (y * 10 >= m_screen->height() || x * 6 >= m_screen->width()) - return; - const rgb_t *palette = m_palette->palette()->entry_list_raw(); - for(int i = 0; i < 10; i++) - for(int j = 0; j < 6; j++) + const int scan_xsize = std::min( m_screen->width() - (x * 6), 6); + const int scan_ysize = std::min( m_screen->height() - (y * 10), 10); + + for(int i = 0; i < scan_ysize; i++) + for(int j = 0; j < scan_xsize; j++) m_screen_out.pix32(y * 10 + i, x * 6 + j) = palette[c[6 * i + j] & 0x07]; } @@ -239,7 +250,17 @@ void ef9345_device::draw_char_80(uint8_t *c, uint16_t x, uint16_t y) // set then ef9345 mode void ef9345_device::set_video_mode(void) { - m_char_mode = ((m_pat & 0x80) >> 5) | ((m_tgs & 0xc0) >> 6); + if (m_variant == EF9345_MODE::TYPE_TS9347) + { + // Only TGS 7 & 6 used for the char mode with the TS9347 + m_char_mode = ((m_tgs & 0xc0) >> 6); + } + else + { + // PAT 7, TGS 7 & 6 + m_char_mode = ((m_pat & 0x80) >> 5) | ((m_tgs & 0xc0) >> 6); + } + uint16_t new_width = (m_char_mode == MODE12x80 || m_char_mode == MODE8x80) ? 492 : 336; if (m_screen->width() != new_width) @@ -385,6 +406,11 @@ void ef9345_device::bichrome40(uint8_t type, uint16_t address, uint8_t dial, uin uint16_t i; uint8_t pix[80]; + if (m_variant == EF9345_MODE::TYPE_TS9347) + { + c0 = 0; + } + if (flash && m_pat & 0x40 && m_blink) c1 = c0; //flash if (hided && m_pat & 0x08) @@ -472,6 +498,12 @@ void ef9345_device::quadrichrome40(uint8_t c, uint8_t b, uint8_t a, uint16_t x, uint8_t lowresolution = (b & 0x02) >> 1, ramx, ramy, ramblock; uint16_t ramindex; + if (m_variant == EF9345_MODE::TYPE_TS9347) + { + // No quadrichrome support into the TS9347 + return; + } + //quadrichrome don't suppor double size m_last_dial[x] = 0; @@ -688,6 +720,11 @@ void ef9345_device::makechar(uint16_t x, uint16_t y) makechar_24x40(x, y); break; case MODEVAR40: + if (m_variant == EF9345_MODE::TYPE_TS9347) + { // TS9347 char mode definition is different. + makechar_16x40(x, y); + break; + } case MODE8x80: logerror("Unemulated EF9345 mode: %02x\n", m_char_mode); break; @@ -695,7 +732,14 @@ void ef9345_device::makechar(uint16_t x, uint16_t y) makechar_12x80(x, y); break; case MODE16x40: - makechar_16x40(x, y); + if (m_variant == EF9345_MODE::TYPE_TS9347) + { + logerror("Unemulated EF9345 mode: %02x\n", m_char_mode); + } + else + { + makechar_16x40(x, y); + } break; default: logerror("Unknown EF9345 mode: %02x\n", m_char_mode); @@ -991,14 +1035,22 @@ void ef9345_device::update_scanline(uint16_t scanline) } else if (scanline < 250) { - if (m_pat & 4) + if (m_variant == EF9345_MODE::TYPE_TS9347) + { for(i = 0; i < 40; i++) makechar(i, (scanline / 10)); + } else - draw_border(scanline / 10); - - if (scanline == 240) - draw_border(26); + { + if (m_pat & 4) // Lower bulk enable + for(i = 0; i < 40; i++) + makechar(i, (scanline / 10)); + else + draw_border(scanline / 10); + + if (scanline == 240) + draw_border(26); + } } } diff --git a/src/devices/video/ef9345.h b/src/devices/video/ef9345.h index 2945f9b8a5b..8f58eb2c4a6 100644 --- a/src/devices/video/ef9345.h +++ b/src/devices/video/ef9345.h @@ -8,12 +8,11 @@ *********************************************************************/ +#ifndef MAME_VIDEO_EF9345_H +#define MAME_VIDEO_EF9345_H #pragma once -#ifndef __EF9345_H__ -#define __EF9345_H__ - #define MCFG_EF9345_PALETTE(_palette_tag) \ ef9345_device::static_set_palette_tag(*device, "^" _palette_tag); @@ -42,13 +41,22 @@ public: uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: + + enum class EF9345_MODE { + TYPE_EF9345 = 0x001, + TYPE_TS9347 = 0x002 + }; + + // pass-through constructor + ef9345_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, EF9345_MODE variant); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; // address space configurations const address_space_config m_space_config; @@ -60,7 +68,6 @@ protected: inline void inc_y(uint8_t r); private: - void set_busy_flag(int period); void draw_char_40(uint8_t *c, uint16_t x, uint16_t y); void draw_char_80(uint8_t *c, uint16_t x, uint16_t y); @@ -109,10 +116,19 @@ private: emu_timer *m_busy_timer; emu_timer *m_blink_timer; + const EF9345_MODE m_variant; + required_device m_palette; }; +class ts9347_device : public ef9345_device +{ +public: + ts9347_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +}; + // device type definition -extern const device_type EF9345; +DECLARE_DEVICE_TYPE(EF9345, ef9345_device) +DECLARE_DEVICE_TYPE(TS9347, ts9347_device) -#endif +#endif // MAME_VIDEO_EF9345_H diff --git a/src/devices/video/ef9364.cpp b/src/devices/video/ef9364.cpp index 6957a57d676..5be327900f4 100644 --- a/src/devices/video/ef9364.cpp +++ b/src/devices/video/ef9364.cpp @@ -28,13 +28,13 @@ // devices -const device_type EF9364 = device_creator; +DEFINE_DEVICE_TYPE(EF9364, ef9364_device, "ef9364", "Thomson EF9364") //------------------------------------------------- // default address map //------------------------------------------------- static ADDRESS_MAP_START( ef9364, AS_0, 8, ef9364_device ) - AM_RANGE(0x00000, ( ( EF9364_TXTPLANE_MAX_SIZE * EF9364_MAX_TXTPLANES ) - 1 ) ) AM_RAM + AM_RANGE(0x00000, ( ( ef9364_device::TXTPLANE_MAX_SIZE * ef9364_device::MAX_TXTPLANES ) - 1 ) ) AM_RAM ADDRESS_MAP_END //------------------------------------------------- @@ -60,7 +60,7 @@ const address_space_config *ef9364_device::memory_space_config(address_spacenum //------------------------------------------------- ef9364_device::ef9364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, EF9364, "EF9364", tag, owner, clock, "ef9364", __FILE__), + device_t(mconfig, EF9364, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_space_config("textram", ENDIANNESS_LITTLE, 8, 12, 0, nullptr, *ADDRESS_MAP_NAME(ef9364)), @@ -117,8 +117,8 @@ void ef9364_device::device_start() { m_textram = &space(0); - bitplane_xres = EF9364_NB_OF_COLUMNS*8; - bitplane_yres = EF9364_NB_OF_ROWS*(8+4); + bitplane_xres = NB_OF_COLUMNS*8; + bitplane_yres = NB_OF_ROWS*(8+4); vsync_scanline_pos = 250; @@ -149,7 +149,7 @@ void ef9364_device::device_reset() char_latch = 0x00; - for(i=0;iwrite_byte ( i , 0x7F ); } @@ -199,15 +199,15 @@ uint32_t ef9364_device::screen_update(screen_device &screen, bitmap_rgb32 &bitma int x,y,r; unsigned char c; - for( r = 0 ; r < EF9364_NB_OF_ROWS ; r++ ) + for( r = 0 ; r < NB_OF_ROWS ; r++ ) { for( y = 0 ; y < 8 ; y++ ) { - for( x = 0 ; x < EF9364_NB_OF_COLUMNS * 8 ; x++ ) + for( x = 0 ; x < NB_OF_COLUMNS * 8 ; x++ ) { if( ( ( x >> 3 ) != x_curs_pos ) || ( r != y_curs_pos ) || !cursor_state) { - c = m_textram->read_byte( ( r * EF9364_NB_OF_COLUMNS ) + ( x>>3 ) ); + c = m_textram->read_byte( ( r * NB_OF_COLUMNS ) + ( x>>3 ) ); if( m_charset[((c&0x7F)<<3) + y] & (0x80>>(x&7)) ) m_screen_out.pix32((r*12)+y, x) = palette[1]; @@ -261,11 +261,11 @@ void ef9364_device::command_w(uint8_t cmd) switch( cmd&7 ) { case 0x0: // Page Erase & Cursor home - for( y=0 ; y < EF9364_NB_OF_ROWS ; y++ ) + for( y=0 ; y < NB_OF_ROWS ; y++ ) { - for( x=0 ; x < EF9364_NB_OF_COLUMNS ; x++ ) + for( x=0 ; x < NB_OF_COLUMNS ; x++ ) { - m_textram->write_byte ( y * EF9364_NB_OF_COLUMNS + x , 0x7F ); + m_textram->write_byte ( y * NB_OF_COLUMNS + x , 0x7F ); } } x_curs_pos = 0; @@ -273,32 +273,32 @@ void ef9364_device::command_w(uint8_t cmd) break; case 0x1: // Erase to end of the line and return cursor - for( ; x_curs_pos < EF9364_NB_OF_COLUMNS ; x_curs_pos++ ) + for( ; x_curs_pos < NB_OF_COLUMNS ; x_curs_pos++ ) { - m_textram->write_byte ( y_curs_pos * EF9364_NB_OF_COLUMNS + x_curs_pos , 0x7F ); + m_textram->write_byte ( y_curs_pos * NB_OF_COLUMNS + x_curs_pos , 0x7F ); } x_curs_pos = 0; break; case 0x2: // Line feed y_curs_pos++; - if( y_curs_pos >= EF9364_NB_OF_ROWS ) + if( y_curs_pos >= NB_OF_ROWS ) { // Scroll - for( j = 1 ; j < EF9364_NB_OF_ROWS ; j++ ) + for( j = 1 ; j < NB_OF_ROWS ; j++ ) { - for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ ) + for( i = 0 ; i < NB_OF_COLUMNS ; i++ ) { - m_textram->write_byte ( (j-1) * EF9364_NB_OF_COLUMNS + i , m_textram->read_byte ( j * EF9364_NB_OF_COLUMNS + i ) ); + m_textram->write_byte ( (j-1) * NB_OF_COLUMNS + i , m_textram->read_byte ( j * NB_OF_COLUMNS + i ) ); } } // Erase last line - for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ ) + for( i = 0 ; i < NB_OF_COLUMNS ; i++ ) { - m_textram->write_byte ( ( EF9364_NB_OF_ROWS - 1 ) * EF9364_NB_OF_COLUMNS + i , 0x7F ); + m_textram->write_byte ( ( NB_OF_ROWS - 1 ) * NB_OF_COLUMNS + i , 0x7F ); } - y_curs_pos = EF9364_NB_OF_ROWS - 1; + y_curs_pos = NB_OF_ROWS - 1; } break; @@ -312,9 +312,9 @@ void ef9364_device::command_w(uint8_t cmd) break; case 0x5: // Erasure of cursor Line. - for( x = 0 ; x < EF9364_NB_OF_COLUMNS ; x++ ) + for( x = 0 ; x < NB_OF_COLUMNS ; x++ ) { - m_textram->write_byte ( y_curs_pos * EF9364_NB_OF_COLUMNS + x , 0x7F ); + m_textram->write_byte ( y_curs_pos * NB_OF_COLUMNS + x , 0x7F ); } break; @@ -325,30 +325,30 @@ void ef9364_device::command_w(uint8_t cmd) case 0x7: // Write char if(cmd&0x8) - m_textram->write_byte ( y_curs_pos * EF9364_NB_OF_COLUMNS + x_curs_pos , char_latch ); + m_textram->write_byte ( y_curs_pos * NB_OF_COLUMNS + x_curs_pos , char_latch ); x_curs_pos++; - if( x_curs_pos >= EF9364_NB_OF_COLUMNS ) + if( x_curs_pos >= NB_OF_COLUMNS ) { x_curs_pos=0; y_curs_pos++; - if( y_curs_pos >= EF9364_NB_OF_ROWS ) + if( y_curs_pos >= NB_OF_ROWS ) { // Scroll - for( j = 1 ; j < EF9364_NB_OF_ROWS ; j++ ) + for( j = 1 ; j < NB_OF_ROWS ; j++ ) { - for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ ) + for( i = 0 ; i < NB_OF_COLUMNS ; i++ ) { - m_textram->write_byte ( (j-1) * EF9364_NB_OF_COLUMNS + i , m_textram->read_byte ( j * EF9364_NB_OF_COLUMNS + i ) ); + m_textram->write_byte ( (j-1) * NB_OF_COLUMNS + i , m_textram->read_byte ( j * NB_OF_COLUMNS + i ) ); } } // Erase last line - for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ ) + for( i = 0 ; i < NB_OF_COLUMNS ; i++ ) { - m_textram->write_byte ( ( EF9364_NB_OF_ROWS - 1 ) * EF9364_NB_OF_COLUMNS + i , 0x7F ); + m_textram->write_byte ( ( NB_OF_ROWS - 1 ) * NB_OF_COLUMNS + i , 0x7F ); } - y_curs_pos = EF9364_NB_OF_ROWS - 1; + y_curs_pos = NB_OF_ROWS - 1; } } break; diff --git a/src/devices/video/ef9364.h b/src/devices/video/ef9364.h index 2adc99905ee..2a6f20c0f48 100644 --- a/src/devices/video/ef9364.h +++ b/src/devices/video/ef9364.h @@ -8,16 +8,10 @@ *********************************************************************/ -#pragma once - -#ifndef __EF9364_H__ -#define __EF9364_H__ +#ifndef MAME_VIDEO_EF9364_H +#define MAME_VIDEO_EF9364_H -#define EF9364_NB_OF_COLUMNS 64 -#define EF9364_NB_OF_ROWS 16 - -#define EF9364_TXTPLANE_MAX_SIZE ( EF9364_NB_OF_COLUMNS * EF9364_NB_OF_ROWS ) -#define EF9364_MAX_TXTPLANES 2 +#pragma once #define MCFG_EF9364_PALETTE(_palette_tag) \ ef9364_device::static_set_palette_tag(*device, "^" _palette_tag); @@ -39,6 +33,12 @@ class ef9364_device : public device_t, public device_video_interface { public: + static constexpr unsigned NB_OF_COLUMNS = 64; + static constexpr unsigned NB_OF_ROWS = 16; + + static constexpr unsigned TXTPLANE_MAX_SIZE = NB_OF_COLUMNS * NB_OF_ROWS; + static constexpr unsigned MAX_TXTPLANES = 2; + // construction/destruction ef9364_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -47,7 +47,6 @@ public: static void static_set_nb_of_pages(device_t &device, int nb_bitplanes ); // device interface - void update_scanline(uint16_t scanline); void set_color_entry( int index, uint8_t r, uint8_t g, uint8_t b ); @@ -98,6 +97,6 @@ private: }; // device type definition -extern const device_type EF9364; +DECLARE_DEVICE_TYPE(EF9364, ef9364_device) -#endif +#endif // MAME_VIDEO_EF9364_H diff --git a/src/devices/video/ef9365.cpp b/src/devices/video/ef9365.cpp index ee57644ccaa..84f0ce7655f 100644 --- a/src/devices/video/ef9365.cpp +++ b/src/devices/video/ef9365.cpp @@ -69,15 +69,34 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" + + +namespace { + +#define EF936X_REG_STATUS 0x00 +#define EF936X_REG_CMD 0x00 +#define EF936X_REG_CTRL1 0x01 +#define EF936X_REG_CTRL2 0x02 +#define EF936X_REG_CSIZE 0x03 +#define EF936X_REG_DELTAX 0x05 +#define EF936X_REG_DELTAY 0x07 +#define EF936X_REG_X_MSB 0x08 +#define EF936X_REG_X_LSB 0x09 +#define EF936X_REG_Y_MSB 0x0A +#define EF936X_REG_Y_LSB 0x0B +#define EF936X_REG_XLP 0x0C +#define EF936X_REG_YLP 0x0D + -#ifdef DBGMODE //------------------------------------------------- // Some debug mode const strings // to trace the commands and registers accesses. //------------------------------------------------- // Registers list -const char * register_names[]= +const char *const register_names[]= { "0x00 - CMD / STATUS", "0x01 - CTRL 1 ", @@ -98,7 +117,7 @@ const char * register_names[]= }; // Commands list -const char * commands_names[]= +const char *const commands_names[]= { "0x00 - Set bit 1 of CTRL1 : Pen selection", "0x01 - Clear bit 1 of CTRL1 : Eraser selection", @@ -122,10 +141,11 @@ const char * commands_names[]= "0x80<>0xFF - Small vector generation", }; -#endif +} // anonymous namespace + // devices -const device_type EF9365 = device_creator; +DEFINE_DEVICE_TYPE(EF9365, ef9365_device, "ef9365", "Thomson EF9365") ROM_START( ef9365 ) ROM_REGION( 0x1E0, "ef9365", 0 ) @@ -147,7 +167,7 @@ const tiny_rom_entry *ef9365_device::device_rom_region() const // Up to 512*512 per bitplane, 8 bitplanes max. //------------------------------------------------- static ADDRESS_MAP_START( ef9365, AS_0, 8, ef9365_device ) - AM_RANGE(0x00000, ( ( EF936X_BITPLANE_MAX_SIZE * EF936X_MAX_BITPLANES ) - 1 ) ) AM_RAM + AM_RANGE(0x00000, ( ( ef9365_device::BITPLANE_MAX_SIZE * ef9365_device::MAX_BITPLANES ) - 1 ) ) AM_RAM ADDRESS_MAP_END //------------------------------------------------- @@ -174,7 +194,7 @@ const address_space_config *ef9365_device::memory_space_config(address_spacenum //------------------------------------------------- ef9365_device::ef9365_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, EF9365, "EF9365", tag, owner, clock, "ef9365", __FILE__), + device_t(mconfig, EF9365, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_space_config("videoram", ENDIANNESS_LITTLE, 8, 18, 0, nullptr, *ADDRESS_MAP_NAME(ef9365)), @@ -216,48 +236,48 @@ void ef9365_device::static_set_display_mode(device_t &device, int display_mode ) { switch(display_mode) { - case EF936X_256x256_DISPLAY_MODE: - downcast(device).bitplane_xres = 256; - downcast(device).bitplane_yres = 256; - downcast(device).vsync_scanline_pos = 250; - downcast(device).overflow_mask_x = 0xFF00; - downcast(device).overflow_mask_y = 0xFF00; + case DISPLAY_MODE_256x256: + downcast(device).bitplane_xres = 256; + downcast(device).bitplane_yres = 256; + downcast(device).vsync_scanline_pos = 250; + downcast(device).overflow_mask_x = 0xFF00; + downcast(device).overflow_mask_y = 0xFF00; break; - case EF936X_512x512_DISPLAY_MODE: - downcast(device).bitplane_xres = 512; - downcast(device).bitplane_yres = 512; - downcast(device).vsync_scanline_pos = 506; - downcast(device).overflow_mask_x = 0xFE00; - downcast(device).overflow_mask_y = 0xFE00; + case DISPLAY_MODE_512x512: + downcast(device).bitplane_xres = 512; + downcast(device).bitplane_yres = 512; + downcast(device).vsync_scanline_pos = 506; + downcast(device).overflow_mask_x = 0xFE00; + downcast(device).overflow_mask_y = 0xFE00; break; - case EF936X_512x256_DISPLAY_MODE: - downcast(device).bitplane_xres = 512; - downcast(device).bitplane_yres = 256; - downcast(device).vsync_scanline_pos = 250; - downcast(device).overflow_mask_x = 0xFE00; - downcast(device).overflow_mask_y = 0xFF00; + case DISPLAY_MODE_512x256: + downcast(device).bitplane_xres = 512; + downcast(device).bitplane_yres = 256; + downcast(device).vsync_scanline_pos = 250; + downcast(device).overflow_mask_x = 0xFE00; + downcast(device).overflow_mask_y = 0xFF00; break; - case EF936X_128x128_DISPLAY_MODE: - downcast(device).bitplane_xres = 128; - downcast(device).bitplane_yres = 128; - downcast(device).vsync_scanline_pos = 124; - downcast(device).overflow_mask_x = 0xFF80; - downcast(device).overflow_mask_y = 0xFF80; + case DISPLAY_MODE_128x128: + downcast(device).bitplane_xres = 128; + downcast(device).bitplane_yres = 128; + downcast(device).vsync_scanline_pos = 124; + downcast(device).overflow_mask_x = 0xFF80; + downcast(device).overflow_mask_y = 0xFF80; break; - case EF936X_64x64_DISPLAY_MODE: - downcast(device).bitplane_xres = 64; - downcast(device).bitplane_yres = 64; - downcast(device).vsync_scanline_pos = 62; - downcast(device).overflow_mask_x = 0xFFC0; - downcast(device).overflow_mask_y = 0xFFC0; + case DISPLAY_MODE_64x64: + downcast(device).bitplane_xres = 64; + downcast(device).bitplane_yres = 64; + downcast(device).vsync_scanline_pos = 62; + downcast(device).overflow_mask_x = 0xFFC0; + downcast(device).overflow_mask_y = 0xFFC0; break; - default: - downcast(device).logerror("Invalid EF9365 Display mode: %02x\n", display_mode); - downcast(device).bitplane_xres = 256; - downcast(device).bitplane_yres = 256; - downcast(device).vsync_scanline_pos = 250; - downcast(device).overflow_mask_x = 0xFF00; - downcast(device).overflow_mask_y = 0xFF00; + default: + downcast(device).logerror("Invalid EF9365 Display mode: %02x\n", display_mode); + downcast(device).bitplane_xres = 256; + downcast(device).bitplane_yres = 256; + downcast(device).vsync_scanline_pos = 250; + downcast(device).overflow_mask_x = 0xFF00; + downcast(device).overflow_mask_y = 0xFF00; break; } } @@ -512,9 +532,9 @@ void ef9365_device::plot(int x_pos,int y_pos) for( p = 0 ; p < nb_of_bitplanes ; p++ ) { if( m_current_color & (0x01 << p) ) - m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) ); + m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) ); else - m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) & ~(0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) ); + m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) & ~(0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) ); } } else @@ -522,7 +542,7 @@ void ef9365_device::plot(int x_pos,int y_pos) // Eraser for( p = 0 ; p < nb_of_bitplanes ; p++ ) { - m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) ); + m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) ); } } } @@ -890,19 +910,17 @@ void ef9365_device::dump_bitplanes_word() pixel_ptr = ( ( ( ( bitplane_yres - 1 ) - ( get_y_reg() & ( bitplane_yres - 1 ) ) ) * bitplane_xres ) + ( get_x_reg() & ( bitplane_xres - 1 ) ) ); - #ifdef DBGMODE - printf("dump : x = %d , y = %d\n", get_x_reg() ,get_y_reg()); - #endif + LOG("dump : x = %d , y = %d\n", get_x_reg() ,get_y_reg()); for( p = 0; p < nb_of_bitplanes ; p++ ) { if( pixel_ptr & 0x4 ) { - m_readback_latch[p] = ( m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) ) & 0xF ; + m_readback_latch[p] = ( m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) ) & 0xF ; } else { - m_readback_latch[p] = ( m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) >> 4 ) & 0xF ; + m_readback_latch[p] = ( m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) >> 4 ) & 0xF ; } } @@ -927,9 +945,9 @@ void ef9365_device::screen_scanning( int force_clear ) for( p = 0 ; p < nb_of_bitplanes ; p++ ) { if( m_current_color & (0x01 << p) ) - m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) ); + m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) ); else - m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) & ~(0x80 >> (((y*bitplane_xres) + x)&7) ) ); + m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) & ~(0x80 >> (((y*bitplane_xres) + x)&7) ) ); } } } @@ -942,7 +960,7 @@ void ef9365_device::screen_scanning( int force_clear ) { for( p = 0 ; p < nb_of_bitplanes ; p++ ) { - m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) ); + m_videoram->write_byte ( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) ); } } } @@ -961,9 +979,7 @@ void ef9365_device::ef9365_exec(uint8_t cmd) if( ( cmd>>4 ) == 0 ) { - #ifdef DBGMODE - printf("EF9365 Command : %s\n", commands_names[cmd & 0xF]); - #endif + LOG("EF9365 Command : %s\n", commands_names[cmd & 0xF]); switch(cmd & 0xF) { @@ -1041,12 +1057,10 @@ void ef9365_device::ef9365_exec(uint8_t cmd) { if ( ( cmd>>4 ) == 1 ) { - #ifdef DBGMODE if( cmd & 0x08 ) - printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x11]); + LOG("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x11]); else - printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x10]); - #endif + LOG("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x10]); tmp_delta_x = m_registers[EF936X_REG_DELTAX]; tmp_delta_y = m_registers[EF936X_REG_DELTAY]; @@ -1094,9 +1108,7 @@ void ef9365_device::ef9365_exec(uint8_t cmd) { if( ( cmd>>4 ) >= 0x8 ) { - #ifdef DBGMODE - printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x13]); - #endif + LOG("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x13]); tmp_delta_x = ( cmd >> 5 ) & 3; tmp_delta_y = ( cmd >> 3 ) & 3; @@ -1137,9 +1149,7 @@ void ef9365_device::ef9365_exec(uint8_t cmd) { // Draw character - #ifdef DBGMODE - printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x12]); - #endif + LOG("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x12]); busy_cycles = draw_character( cmd - 0x20, 0 , 0 ); set_busy_flag( cycles_to_us( busy_cycles ) ); @@ -1167,7 +1177,7 @@ uint32_t ef9365_device::screen_update(screen_device &screen, bitmap_rgb32 &bitma for( p = 0; p < nb_of_bitplanes; p++) { - if( m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (ptr>>3)) & (0x80>>(ptr&7))) + if( m_videoram->read_byte( (BITPLANE_MAX_SIZE*p) + (ptr>>3)) & (0x80>>(ptr&7))) { color_index |= (0x01< [ 0x%.2X ] - %s\n", register_names[offset&0xF],return_value, machine().describe_context() ); - #endif + LOG("EF9365 [ %s ] RD> [ 0x%.2X ] - %s\n", register_names[offset&0xF],return_value, machine().describe_context() ); return return_value; } @@ -1304,9 +1312,7 @@ READ8_MEMBER( ef9365_device::data_r ) WRITE8_MEMBER( ef9365_device::data_w ) { - #ifdef DBGMODE - printf("EF9365 [ %s ] m_charset; address_space *m_videoram; @@ -118,7 +122,7 @@ private: uint16_t overflow_mask_y; int vsync_scanline_pos; - uint8_t m_readback_latch[EF936X_MAX_BITPLANES]; // Last DRAM Readback buffer (Filled after a Direct Memory Access Request command) + uint8_t m_readback_latch[MAX_BITPLANES]; // Last DRAM Readback buffer (Filled after a Direct Memory Access Request command) int m_readback_latch_pix_offset; uint32_t clock_freq; @@ -132,27 +136,6 @@ private: }; // device type definition -extern const device_type EF9365; - -#define EF936X_REG_STATUS 0x00 -#define EF936X_REG_CMD 0x00 -#define EF936X_REG_CTRL1 0x01 -#define EF936X_REG_CTRL2 0x02 -#define EF936X_REG_CSIZE 0x03 -#define EF936X_REG_DELTAX 0x05 -#define EF936X_REG_DELTAY 0x07 -#define EF936X_REG_X_MSB 0x08 -#define EF936X_REG_X_LSB 0x09 -#define EF936X_REG_Y_MSB 0x0A -#define EF936X_REG_Y_LSB 0x0B -#define EF936X_REG_XLP 0x0C -#define EF936X_REG_YLP 0x0D - -#define EF936X_256x256_DISPLAY_MODE 0x00 -#define EF936X_512x512_DISPLAY_MODE 0x01 -#define EF936X_512x256_DISPLAY_MODE 0x02 -#define EF936X_128x128_DISPLAY_MODE 0x03 -#define EF936X_64x64_DISPLAY_MODE 0x04 - - -#endif +DECLARE_DEVICE_TYPE(EF9365, ef9365_device) + +#endif // MAME_VIDEO_EF9365_H diff --git a/src/devices/video/ef9369.cpp b/src/devices/video/ef9369.cpp index 84d69c88117..2a00ff76de3 100644 --- a/src/devices/video/ef9369.cpp +++ b/src/devices/video/ef9369.cpp @@ -7,15 +7,16 @@ ***************************************************************************/ #include "emu.h" -#include #include "ef9369.h" +#include + //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** -const device_type EF9369 = device_creator; +DEFINE_DEVICE_TYPE(EF9369, ef9369_device, "ef9369", "Thomson EF9369 Single Chip Color Palette") //************************************************************************** @@ -27,8 +28,8 @@ const device_type EF9369 = device_creator; //------------------------------------------------- ef9369_device::ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, EF9369, "EF9369 Single Chip Color Palette", tag, owner, clock, "ef9369", __FILE__), - m_address(0) + : device_t(mconfig, EF9369, tag, owner, clock) + , m_address(0) { std::fill(m_ca, m_ca + NUMCOLORS, 0); std::fill(m_cb, m_cb + NUMCOLORS, 0); diff --git a/src/devices/video/ef9369.h b/src/devices/video/ef9369.h index 63b28d2cac7..b25a892a662 100644 --- a/src/devices/video/ef9369.h +++ b/src/devices/video/ef9369.h @@ -24,10 +24,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_EF9369_H +#define MAME_VIDEO_EF9369_H -#ifndef __EF9369_H__ -#define __EF9369_H__ +#pragma once @@ -39,14 +39,13 @@ MCFG_DEVICE_ADD(_tag, EF9369, 0) \ #define MCFG_EF9369_COLOR_UPDATE_CB(_class, _method) \ - ef9369_device::set_color_update_callback(*device, ef9369_color_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + ef9369_device::set_color_update_callback(*device, ef9369_device::color_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate ef9369_color_update_delegate; #define EF9369_COLOR_UPDATE(name) void name(int entry, bool m, uint8_t ca, uint8_t cb, uint8_t cc) // ======================> ef9369_device @@ -54,17 +53,19 @@ typedef device_delegate color_update_delegate; + // construction/destruction ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - static void set_color_update_callback(device_t &device, ef9369_color_update_delegate callback) { downcast(device).m_color_update_cb = callback; } + static void set_color_update_callback(device_t &device, color_update_delegate &&cb) { downcast(device).m_color_update_cb = std::move(cb); } DECLARE_READ8_MEMBER(data_r); DECLARE_WRITE8_MEMBER(data_w); DECLARE_WRITE8_MEMBER(address_w); - static const int NUMCOLORS = 16; + static constexpr int NUMCOLORS = 16; protected: // device-level overrides @@ -72,7 +73,7 @@ protected: virtual void device_reset() override; private: - ef9369_color_update_delegate m_color_update_cb; + color_update_delegate m_color_update_cb; // state uint8_t m_ca[NUMCOLORS], m_cb[NUMCOLORS], m_cc[NUMCOLORS]; // actually 4-bit @@ -81,6 +82,6 @@ private: }; // device type definition -extern const device_type EF9369; +DECLARE_DEVICE_TYPE(EF9369, ef9369_device) -#endif // __EF9369_H__ +#endif // MAME_VIDEO_EF9369_H diff --git a/src/devices/video/epic12.cpp b/src/devices/video/epic12.cpp index 68d1098abd5..b0ca59b160a 100644 --- a/src/devices/video/epic12.cpp +++ b/src/devices/video/epic12.cpp @@ -6,13 +6,13 @@ #include "epic12.h" - -const device_type EPIC12 = device_creator; +DEFINE_DEVICE_TYPE(EPIC12, epic12_device, "epic12", "EPIC12 Blitter") epic12_device::epic12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, EPIC12, "EP1C12 Blitter", tag, owner, clock, "epic12", __FILE__), - device_video_interface(mconfig, *this), m_ram16(nullptr), m_gfx_size(0), m_bitmaps(nullptr), m_use_ram(nullptr), - m_main_ramsize(0), m_main_rammask(0), m_maincpu(nullptr), m_ram16_copy(nullptr), m_work_queue(nullptr) + : device_t(mconfig, EPIC12, tag, owner, clock) + , device_video_interface(mconfig, *this) + , m_ram16(nullptr), m_gfx_size(0), m_bitmaps(nullptr), m_use_ram(nullptr) + , m_main_ramsize(0), m_main_rammask(0), m_maincpu(nullptr), m_ram16_copy(nullptr), m_work_queue(nullptr) { m_is_unsafe = 0; m_delay_scale = 0; @@ -29,7 +29,7 @@ epic12_device::epic12_device(const machine_config &mconfig, const char *tag, dev m_gfx_scroll_0_y_shadowcopy = 0; m_gfx_scroll_1_x_shadowcopy = 0; m_gfx_scroll_1_y_shadowcopy = 0; - epic12_device_blit_delay = 0; + blit_delay = 0; } TIMER_CALLBACK_MEMBER( epic12_device::blitter_delay_callback ) @@ -84,11 +84,11 @@ void epic12_device::device_reset() { for (x=0;x<0x20;x++) { - epic12_device_colrtable[x][y] = (x*y) / 0x1f; - if (epic12_device_colrtable[x][y]>0x1f) epic12_device_colrtable[x][y] = 0x1f; + colrtable[x][y] = (x*y) / 0x1f; + if (colrtable[x][y]>0x1f) colrtable[x][y] = 0x1f; - epic12_device_colrtable_rev[x^0x1f][y] = (x*y) / 0x1f; - if (epic12_device_colrtable_rev[x^0x1f][y]>0x1f) epic12_device_colrtable_rev[x^0x1f][y] = 0x1f; + colrtable_rev[x^0x1f][y] = (x*y) / 0x1f; + if (colrtable_rev[x^0x1f][y]>0x1f) colrtable_rev[x^0x1f][y] = 0x1f; } } @@ -97,8 +97,8 @@ void epic12_device::device_reset() { for (x=0;x<0x20;x++) { - epic12_device_colrtable_add[x][y] = (x+y); - if (epic12_device_colrtable_add[x][y]>0x1f) epic12_device_colrtable_add[x][y] = 0x1f; + colrtable_add[x][y] = (x+y); + if (colrtable_add[x][y]>0x1f) colrtable_add[x][y] = 0x1f; } } @@ -106,10 +106,10 @@ void epic12_device::device_reset() } // todo, get these into the device class without ruining performance -uint8_t epic12_device_colrtable[0x20][0x40]; -uint8_t epic12_device_colrtable_rev[0x20][0x40]; -uint8_t epic12_device_colrtable_add[0x20][0x20]; -uint64_t epic12_device_blit_delay; +uint8_t epic12_device::colrtable[0x20][0x40]; +uint8_t epic12_device::colrtable_rev[0x20][0x40]; +uint8_t epic12_device::colrtable_add[0x20][0x20]; +uint64_t epic12_device::blit_delay; inline uint16_t epic12_device::READ_NEXT_WORD(offs_t *addr) { @@ -204,7 +204,7 @@ inline void epic12_device::gfx_upload(offs_t *addr) -epic12_device_blitfunction epic12_device_f0_ti1_tr1_blit_funcs[] = +const epic12_device::blitfunction epic12_device::f0_ti1_tr1_blit_funcs[64] = { epic12_device::draw_sprite_f0_ti1_tr1_s0_d0, epic12_device::draw_sprite_f0_ti1_tr1_s1_d0, epic12_device::draw_sprite_f0_ti1_tr1_s2_d0, epic12_device::draw_sprite_f0_ti1_tr1_s3_d0, epic12_device::draw_sprite_f0_ti1_tr1_s4_d0, epic12_device::draw_sprite_f0_ti1_tr1_s5_d0, epic12_device::draw_sprite_f0_ti1_tr1_s6_d0, epic12_device::draw_sprite_f0_ti1_tr1_s7_d0, epic12_device::draw_sprite_f0_ti1_tr1_s0_d1, epic12_device::draw_sprite_f0_ti1_tr1_s1_d1, epic12_device::draw_sprite_f0_ti1_tr1_s2_d1, epic12_device::draw_sprite_f0_ti1_tr1_s3_d1, epic12_device::draw_sprite_f0_ti1_tr1_s4_d1, epic12_device::draw_sprite_f0_ti1_tr1_s5_d1, epic12_device::draw_sprite_f0_ti1_tr1_s6_d1, epic12_device::draw_sprite_f0_ti1_tr1_s7_d1, @@ -216,7 +216,7 @@ epic12_device_blitfunction epic12_device_f0_ti1_tr1_blit_funcs[] = epic12_device::draw_sprite_f0_ti1_tr1_s0_d7, epic12_device::draw_sprite_f0_ti1_tr1_s1_d7, epic12_device::draw_sprite_f0_ti1_tr1_s2_d7, epic12_device::draw_sprite_f0_ti1_tr1_s3_d7, epic12_device::draw_sprite_f0_ti1_tr1_s4_d7, epic12_device::draw_sprite_f0_ti1_tr1_s5_d7, epic12_device::draw_sprite_f0_ti1_tr1_s6_d7, epic12_device::draw_sprite_f0_ti1_tr1_s7_d7, }; -epic12_device_blitfunction epic12_device_f0_ti1_tr0_blit_funcs[] = +const epic12_device::blitfunction epic12_device::f0_ti1_tr0_blit_funcs[64] = { epic12_device::draw_sprite_f0_ti1_tr0_s0_d0, epic12_device::draw_sprite_f0_ti1_tr0_s1_d0, epic12_device::draw_sprite_f0_ti1_tr0_s2_d0, epic12_device::draw_sprite_f0_ti1_tr0_s3_d0, epic12_device::draw_sprite_f0_ti1_tr0_s4_d0, epic12_device::draw_sprite_f0_ti1_tr0_s5_d0, epic12_device::draw_sprite_f0_ti1_tr0_s6_d0, epic12_device::draw_sprite_f0_ti1_tr0_s7_d0, epic12_device::draw_sprite_f0_ti1_tr0_s0_d1, epic12_device::draw_sprite_f0_ti1_tr0_s1_d1, epic12_device::draw_sprite_f0_ti1_tr0_s2_d1, epic12_device::draw_sprite_f0_ti1_tr0_s3_d1, epic12_device::draw_sprite_f0_ti1_tr0_s4_d1, epic12_device::draw_sprite_f0_ti1_tr0_s5_d1, epic12_device::draw_sprite_f0_ti1_tr0_s6_d1, epic12_device::draw_sprite_f0_ti1_tr0_s7_d1, @@ -228,7 +228,7 @@ epic12_device_blitfunction epic12_device_f0_ti1_tr0_blit_funcs[] = epic12_device::draw_sprite_f0_ti1_tr0_s0_d7, epic12_device::draw_sprite_f0_ti1_tr0_s1_d7, epic12_device::draw_sprite_f0_ti1_tr0_s2_d7, epic12_device::draw_sprite_f0_ti1_tr0_s3_d7, epic12_device::draw_sprite_f0_ti1_tr0_s4_d7, epic12_device::draw_sprite_f0_ti1_tr0_s5_d7, epic12_device::draw_sprite_f0_ti1_tr0_s6_d7, epic12_device::draw_sprite_f0_ti1_tr0_s7_d7, }; -epic12_device_blitfunction epic12_device_f1_ti1_tr1_blit_funcs[] = +const epic12_device::blitfunction epic12_device::f1_ti1_tr1_blit_funcs[64] = { epic12_device::draw_sprite_f1_ti1_tr1_s0_d0, epic12_device::draw_sprite_f1_ti1_tr1_s1_d0, epic12_device::draw_sprite_f1_ti1_tr1_s2_d0, epic12_device::draw_sprite_f1_ti1_tr1_s3_d0, epic12_device::draw_sprite_f1_ti1_tr1_s4_d0, epic12_device::draw_sprite_f1_ti1_tr1_s5_d0, epic12_device::draw_sprite_f1_ti1_tr1_s6_d0, epic12_device::draw_sprite_f1_ti1_tr1_s7_d0, epic12_device::draw_sprite_f1_ti1_tr1_s0_d1, epic12_device::draw_sprite_f1_ti1_tr1_s1_d1, epic12_device::draw_sprite_f1_ti1_tr1_s2_d1, epic12_device::draw_sprite_f1_ti1_tr1_s3_d1, epic12_device::draw_sprite_f1_ti1_tr1_s4_d1, epic12_device::draw_sprite_f1_ti1_tr1_s5_d1, epic12_device::draw_sprite_f1_ti1_tr1_s6_d1, epic12_device::draw_sprite_f1_ti1_tr1_s7_d1, @@ -240,7 +240,7 @@ epic12_device_blitfunction epic12_device_f1_ti1_tr1_blit_funcs[] = epic12_device::draw_sprite_f1_ti1_tr1_s0_d7, epic12_device::draw_sprite_f1_ti1_tr1_s1_d7, epic12_device::draw_sprite_f1_ti1_tr1_s2_d7, epic12_device::draw_sprite_f1_ti1_tr1_s3_d7, epic12_device::draw_sprite_f1_ti1_tr1_s4_d7, epic12_device::draw_sprite_f1_ti1_tr1_s5_d7, epic12_device::draw_sprite_f1_ti1_tr1_s6_d7, epic12_device::draw_sprite_f1_ti1_tr1_s7_d7, }; -epic12_device_blitfunction epic12_device_f1_ti1_tr0_blit_funcs[] = +const epic12_device::blitfunction epic12_device::f1_ti1_tr0_blit_funcs[64] = { epic12_device::draw_sprite_f1_ti1_tr0_s0_d0, epic12_device::draw_sprite_f1_ti1_tr0_s1_d0, epic12_device::draw_sprite_f1_ti1_tr0_s2_d0, epic12_device::draw_sprite_f1_ti1_tr0_s3_d0, epic12_device::draw_sprite_f1_ti1_tr0_s4_d0, epic12_device::draw_sprite_f1_ti1_tr0_s5_d0, epic12_device::draw_sprite_f1_ti1_tr0_s6_d0, epic12_device::draw_sprite_f1_ti1_tr0_s7_d0, epic12_device::draw_sprite_f1_ti1_tr0_s0_d1, epic12_device::draw_sprite_f1_ti1_tr0_s1_d1, epic12_device::draw_sprite_f1_ti1_tr0_s2_d1, epic12_device::draw_sprite_f1_ti1_tr0_s3_d1, epic12_device::draw_sprite_f1_ti1_tr0_s4_d1, epic12_device::draw_sprite_f1_ti1_tr0_s5_d1, epic12_device::draw_sprite_f1_ti1_tr0_s6_d1, epic12_device::draw_sprite_f1_ti1_tr0_s7_d1, @@ -254,7 +254,7 @@ epic12_device_blitfunction epic12_device_f1_ti1_tr0_blit_funcs[] = -epic12_device_blitfunction epic12_device_f0_ti0_tr1_blit_funcs[] = +const epic12_device::blitfunction epic12_device::f0_ti0_tr1_blit_funcs[64] = { epic12_device::draw_sprite_f0_ti0_tr1_s0_d0, epic12_device::draw_sprite_f0_ti0_tr1_s1_d0, epic12_device::draw_sprite_f0_ti0_tr1_s2_d0, epic12_device::draw_sprite_f0_ti0_tr1_s3_d0, epic12_device::draw_sprite_f0_ti0_tr1_s4_d0, epic12_device::draw_sprite_f0_ti0_tr1_s5_d0, epic12_device::draw_sprite_f0_ti0_tr1_s6_d0, epic12_device::draw_sprite_f0_ti0_tr1_s7_d0, epic12_device::draw_sprite_f0_ti0_tr1_s0_d1, epic12_device::draw_sprite_f0_ti0_tr1_s1_d1, epic12_device::draw_sprite_f0_ti0_tr1_s2_d1, epic12_device::draw_sprite_f0_ti0_tr1_s3_d1, epic12_device::draw_sprite_f0_ti0_tr1_s4_d1, epic12_device::draw_sprite_f0_ti0_tr1_s5_d1, epic12_device::draw_sprite_f0_ti0_tr1_s6_d1, epic12_device::draw_sprite_f0_ti0_tr1_s7_d1, @@ -266,7 +266,7 @@ epic12_device_blitfunction epic12_device_f0_ti0_tr1_blit_funcs[] = epic12_device::draw_sprite_f0_ti0_tr1_s0_d7, epic12_device::draw_sprite_f0_ti0_tr1_s1_d7, epic12_device::draw_sprite_f0_ti0_tr1_s2_d7, epic12_device::draw_sprite_f0_ti0_tr1_s3_d7, epic12_device::draw_sprite_f0_ti0_tr1_s4_d7, epic12_device::draw_sprite_f0_ti0_tr1_s5_d7, epic12_device::draw_sprite_f0_ti0_tr1_s6_d7, epic12_device::draw_sprite_f0_ti0_tr1_s7_d7, }; -epic12_device_blitfunction epic12_device_f0_ti0_tr0_blit_funcs[] = +const epic12_device::blitfunction epic12_device::f0_ti0_tr0_blit_funcs[64] = { epic12_device::draw_sprite_f0_ti0_tr0_s0_d0, epic12_device::draw_sprite_f0_ti0_tr0_s1_d0, epic12_device::draw_sprite_f0_ti0_tr0_s2_d0, epic12_device::draw_sprite_f0_ti0_tr0_s3_d0, epic12_device::draw_sprite_f0_ti0_tr0_s4_d0, epic12_device::draw_sprite_f0_ti0_tr0_s5_d0, epic12_device::draw_sprite_f0_ti0_tr0_s6_d0, epic12_device::draw_sprite_f0_ti0_tr0_s7_d0, epic12_device::draw_sprite_f0_ti0_tr0_s0_d1, epic12_device::draw_sprite_f0_ti0_tr0_s1_d1, epic12_device::draw_sprite_f0_ti0_tr0_s2_d1, epic12_device::draw_sprite_f0_ti0_tr0_s3_d1, epic12_device::draw_sprite_f0_ti0_tr0_s4_d1, epic12_device::draw_sprite_f0_ti0_tr0_s5_d1, epic12_device::draw_sprite_f0_ti0_tr0_s6_d1, epic12_device::draw_sprite_f0_ti0_tr0_s7_d1, @@ -278,7 +278,7 @@ epic12_device_blitfunction epic12_device_f0_ti0_tr0_blit_funcs[] = epic12_device::draw_sprite_f0_ti0_tr0_s0_d7, epic12_device::draw_sprite_f0_ti0_tr0_s1_d7, epic12_device::draw_sprite_f0_ti0_tr0_s2_d7, epic12_device::draw_sprite_f0_ti0_tr0_s3_d7, epic12_device::draw_sprite_f0_ti0_tr0_s4_d7, epic12_device::draw_sprite_f0_ti0_tr0_s5_d7, epic12_device::draw_sprite_f0_ti0_tr0_s6_d7, epic12_device::draw_sprite_f0_ti0_tr0_s7_d7, }; -epic12_device_blitfunction epic12_device_f1_ti0_tr1_blit_funcs[] = +const epic12_device::blitfunction epic12_device::f1_ti0_tr1_blit_funcs[64] = { epic12_device::draw_sprite_f1_ti0_tr1_s0_d0, epic12_device::draw_sprite_f1_ti0_tr1_s1_d0, epic12_device::draw_sprite_f1_ti0_tr1_s2_d0, epic12_device::draw_sprite_f1_ti0_tr1_s3_d0, epic12_device::draw_sprite_f1_ti0_tr1_s4_d0, epic12_device::draw_sprite_f1_ti0_tr1_s5_d0, epic12_device::draw_sprite_f1_ti0_tr1_s6_d0, epic12_device::draw_sprite_f1_ti0_tr1_s7_d0, epic12_device::draw_sprite_f1_ti0_tr1_s0_d1, epic12_device::draw_sprite_f1_ti0_tr1_s1_d1, epic12_device::draw_sprite_f1_ti0_tr1_s2_d1, epic12_device::draw_sprite_f1_ti0_tr1_s3_d1, epic12_device::draw_sprite_f1_ti0_tr1_s4_d1, epic12_device::draw_sprite_f1_ti0_tr1_s5_d1, epic12_device::draw_sprite_f1_ti0_tr1_s6_d1, epic12_device::draw_sprite_f1_ti0_tr1_s7_d1, @@ -290,7 +290,7 @@ epic12_device_blitfunction epic12_device_f1_ti0_tr1_blit_funcs[] = epic12_device::draw_sprite_f1_ti0_tr1_s0_d7, epic12_device::draw_sprite_f1_ti0_tr1_s1_d7, epic12_device::draw_sprite_f1_ti0_tr1_s2_d7, epic12_device::draw_sprite_f1_ti0_tr1_s3_d7, epic12_device::draw_sprite_f1_ti0_tr1_s4_d7, epic12_device::draw_sprite_f1_ti0_tr1_s5_d7, epic12_device::draw_sprite_f1_ti0_tr1_s6_d7, epic12_device::draw_sprite_f1_ti0_tr1_s7_d7, }; -epic12_device_blitfunction epic12_device_f1_ti0_tr0_blit_funcs[] = +const epic12_device::blitfunction epic12_device::f1_ti0_tr0_blit_funcs[64] = { epic12_device::draw_sprite_f1_ti0_tr0_s0_d0, epic12_device::draw_sprite_f1_ti0_tr0_s1_d0, epic12_device::draw_sprite_f1_ti0_tr0_s2_d0, epic12_device::draw_sprite_f1_ti0_tr0_s3_d0, epic12_device::draw_sprite_f1_ti0_tr0_s4_d0, epic12_device::draw_sprite_f1_ti0_tr0_s5_d0, epic12_device::draw_sprite_f1_ti0_tr0_s6_d0, epic12_device::draw_sprite_f1_ti0_tr0_s7_d0, epic12_device::draw_sprite_f1_ti0_tr0_s0_d1, epic12_device::draw_sprite_f1_ti0_tr0_s1_d1, epic12_device::draw_sprite_f1_ti0_tr0_s2_d1, epic12_device::draw_sprite_f1_ti0_tr0_s3_d1, epic12_device::draw_sprite_f1_ti0_tr0_s4_d1, epic12_device::draw_sprite_f1_ti0_tr0_s5_d1, epic12_device::draw_sprite_f1_ti0_tr0_s6_d1, epic12_device::draw_sprite_f1_ti0_tr0_s7_d1, @@ -320,7 +320,7 @@ inline void epic12_device::gfx_draw_shadow_copy(address_space &space, offs_t *ad // todo, calcualte clipping. - epic12_device_blit_delay += w*h; + blit_delay += w*h; } @@ -409,7 +409,7 @@ inline void epic12_device::gfx_draw(offs_t *addr) } else { - epic12_device_f0_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); + f0_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); } } else @@ -420,7 +420,7 @@ inline void epic12_device::gfx_draw(offs_t *addr) } else { - epic12_device_f0_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); + f0_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); } } } @@ -434,7 +434,7 @@ inline void epic12_device::gfx_draw(offs_t *addr) } else { - epic12_device_f1_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); + f1_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); } } else @@ -445,7 +445,7 @@ inline void epic12_device::gfx_draw(offs_t *addr) } else { - epic12_device_f1_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); + f1_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); } } } @@ -495,7 +495,7 @@ inline void epic12_device::gfx_draw(offs_t *addr) } else { - epic12_device_f0_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); + f0_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); } } else @@ -506,7 +506,7 @@ inline void epic12_device::gfx_draw(offs_t *addr) } else { - epic12_device_f0_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); + f0_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); } } } @@ -520,7 +520,7 @@ inline void epic12_device::gfx_draw(offs_t *addr) } else { - epic12_device_f1_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); + f1_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); } } else @@ -531,7 +531,7 @@ inline void epic12_device::gfx_draw(offs_t *addr) } else { - epic12_device_f1_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); + f1_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); } } } @@ -681,7 +681,7 @@ void *epic12_device::blit_request_callback_unsafe(void *param, int threadid) { epic12_device *object = reinterpret_cast(param); - epic12_device_blit_delay = 0; + blit_delay = 0; object->gfx_exec_unsafe(); return nullptr; } @@ -721,13 +721,13 @@ WRITE32_MEMBER( epic12_device::gfx_exec_w ) osd_work_item_release(m_blitter_request); } - epic12_device_blit_delay = 0; + blit_delay = 0; gfx_create_shadow_copy(space); // create a copy of the blit list so we can safely thread it. - if (epic12_device_blit_delay) + if (blit_delay) { m_blitter_busy = 1; - m_blitter_delay_timer->adjust(attotime::from_nsec(epic12_device_blit_delay*8)); // NOT accurate timing (currently ignored anyway) + m_blitter_delay_timer->adjust(attotime::from_nsec(blit_delay*8)); // NOT accurate timing (currently ignored anyway) } m_gfx_addr_shadowcopy = m_gfx_addr; @@ -760,10 +760,10 @@ WRITE32_MEMBER( epic12_device::gfx_exec_w_unsafe ) osd_work_item_release(m_blitter_request); } - if (epic12_device_blit_delay) + if (blit_delay) { m_blitter_busy = 1; - int delay = epic12_device_blit_delay*(15 * m_delay_scale / 50); + int delay = blit_delay*(15 * m_delay_scale / 50); //printf("delay %d\n", delay); m_blitter_delay_timer->adjust(attotime::from_nsec(delay)); } diff --git a/src/devices/video/epic12.h b/src/devices/video/epic12.h index 07edae65a79..ce2bb88c5d3 100644 --- a/src/devices/video/epic12.h +++ b/src/devices/video/epic12.h @@ -1,6 +1,10 @@ // license:BSD-3-Clause // copyright-holders:David Haywood, Luca Elia, MetalliC /* emulation of Altera Cyclone EPIC12 FPGA programmed as a blitter */ +#ifndef MAME_VIDEO_EPIC12_H +#define MAME_VIDEO_EPIC12_H + +#pragma once #define MCFG_EPIC12_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, EPIC12, 0) @@ -9,42 +13,7 @@ epic12_device::set_mainramsize(*device, _rgn); -extern uint8_t epic12_device_colrtable[0x20][0x40]; -extern uint8_t epic12_device_colrtable_rev[0x20][0x40]; -extern uint8_t epic12_device_colrtable_add[0x20][0x20]; -extern uint64_t epic12_device_blit_delay; - -struct _clr_t -{ - uint8_t b,g,r,t; -}; - -typedef struct _clr_t clr_t; - -union colour_t -{ - clr_t trgb; - uint32_t u32; -}; - -typedef void (*epic12_device_blitfunction)(bitmap_rgb32 *, - const rectangle *, - uint32_t *, /* gfx */ - int , /* src_x */ - int , /* src_y */ - const int , /* dst_x_start */ - const int , /* dst_y_start */ - int , /* dimx */ - int , /* dimy */ - const int , /* flipy */ - const uint8_t , /* s_alpha */ - const uint8_t , /* d_alpha */ - //int , /* tint */ - const clr_t * ); - - -class epic12_device : public device_t, - public device_video_interface +class epic12_device : public device_t, public device_video_interface { public: epic12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -114,6 +83,167 @@ public: void gfx_exec_unsafe(void); static void *blit_request_callback_unsafe(void *param, int threadid); +protected: + struct clr_t + { + // clr_t to r5g5b5 + uint32_t to_pen() const + { + // --t- ---- rrrr r--- gggg g--- bbbb b--- format + return (r << (16 + 3)) | (g << (8 + 3)) | (b << 3); + + // --t- ---- ---r rrrr ---g gggg ---b bbbb format + //return (r << 16) | (g << 8) | b; + } + + + void add_with_clr_mul_fixed(const clr_t &clr0, uint8_t mulfixed_val, const clr_t &mulfixed_clr0) + { + r = colrtable_add[clr0.r][colrtable[mulfixed_clr0.r][mulfixed_val]]; + g = colrtable_add[clr0.g][colrtable[mulfixed_clr0.g][mulfixed_val]]; + b = colrtable_add[clr0.b][colrtable[mulfixed_clr0.b][mulfixed_val]]; + } + + void add_with_clr_mul_3param(const clr_t &clr0, const clr_t &clr1, const clr_t &clr2) + { + r = colrtable_add[clr0.r][colrtable[clr2.r][clr1.r]]; + g = colrtable_add[clr0.g][colrtable[clr2.g][clr1.g]]; + b = colrtable_add[clr0.b][colrtable[clr2.b][clr1.b]]; + } + + void add_with_clr_square(const clr_t &clr0, const clr_t &clr1) + { + r = colrtable_add[clr0.r][colrtable[clr1.r][clr1.r]]; + g = colrtable_add[clr0.r][colrtable[clr1.g][clr1.g]]; + b = colrtable_add[clr0.r][colrtable[clr1.b][clr1.b]]; + } + + void add_with_clr_mul_fixed_rev(const clr_t &clr0, uint8_t val, const clr_t &clr1) + { + r = colrtable_add[clr0.r][colrtable_rev[val][clr1.r]]; + g = colrtable_add[clr0.g][colrtable_rev[val][clr1.g]]; + b = colrtable_add[clr0.b][colrtable_rev[val][clr1.b]]; + } + + void add_with_clr_mul_rev_3param(const clr_t &clr0, const clr_t &clr1, const clr_t &clr2) + { + r = colrtable_add[clr0.r][colrtable_rev[clr2.r][clr1.r]]; + g = colrtable_add[clr0.g][colrtable_rev[clr2.g][clr1.g]]; + b = colrtable_add[clr0.b][colrtable_rev[clr2.b][clr1.b]]; + } + + void add_with_clr_mul_rev_square(const clr_t &clr0, const clr_t &clr1) + { + r = colrtable_add[clr0.r][colrtable_rev[(clr1.r)][(clr1.r)]]; + g = colrtable_add[clr0.g][colrtable_rev[(clr1.g)][(clr1.g)]]; + b = colrtable_add[clr0.b][colrtable_rev[(clr1.b)][(clr1.b)]]; + } + + + void add(const clr_t &clr0, const clr_t &clr1) + { + //r = clr0.r + clr1.r; + //g = clr0.g + clr1.g; + //b = clr0.b + clr1.b; + + // use pre-clamped lookup table + r = colrtable_add[clr0.r][clr1.r]; + g = colrtable_add[clr0.g][clr1.g]; + b = colrtable_add[clr0.b][clr1.b]; + } + + + void mul(const clr_t &clr1) + { + r = colrtable[r][clr1.r]; + g = colrtable[g][clr1.g]; + b = colrtable[b][clr1.b]; + } + + void square(const clr_t &clr1) + { + r = colrtable[clr1.r][clr1.r]; + g = colrtable[clr1.g][clr1.g]; + b = colrtable[clr1.b][clr1.b]; + } + + void mul_3param(const clr_t &clr1, const clr_t &clr2) + { + r = colrtable[clr2.r][clr1.r]; + g = colrtable[clr2.g][clr1.g]; + b = colrtable[clr2.b][clr1.b]; + } + + void mul_rev(const clr_t &clr1) + { + r = colrtable_rev[r][clr1.r]; + g = colrtable_rev[g][clr1.g]; + b = colrtable_rev[b][clr1.b]; + } + + void mul_rev_square(const clr_t &clr1) + { + r = colrtable_rev[clr1.r][clr1.r]; + g = colrtable_rev[clr1.g][clr1.g]; + b = colrtable_rev[clr1.b][clr1.b]; + } + + + void mul_rev_3param(const clr_t &clr1, const clr_t &clr2) + { + r = colrtable_rev[clr2.r][clr1.r]; + g = colrtable_rev[clr2.g][clr1.g]; + b = colrtable_rev[clr2.b][clr1.b]; + } + + void mul_fixed(uint8_t val, const clr_t &clr0) + { + r = colrtable[val][clr0.r]; + g = colrtable[val][clr0.g]; + b = colrtable[val][clr0.b]; + } + + void mul_fixed_rev(uint8_t val, const clr_t &clr0) + { + r = colrtable_rev[val][clr0.r]; + g = colrtable_rev[val][clr0.g]; + b = colrtable_rev[val][clr0.b]; + } + + void copy(const clr_t &clr0) + { + r = clr0.r; + g = clr0.g; + b = clr0.b; + } + + + uint8_t b, g, r, t; + }; + + union colour_t + { + clr_t trgb; + uint32_t u32; + }; + + typedef void (*blitfunction)( + bitmap_rgb32 *, + const rectangle *, + uint32_t *gfx, + int src_x, + int src_y, + const int dst_x_start, + const int dst_y_start, + int dimx, + int dimy, + const int flipy, + const uint8_t s_alpha, + const uint8_t d_alpha, + //int tint, + const clr_t *); + + #define BLIT_FUNCTION static void #define BLIT_PARAMS bitmap_rgb32 *bitmap, const rectangle *clip, uint32_t *gfx, int src_x, int src_y, const int dst_x_start, const int dst_y_start, int dimx, int dimy, const int flipy, const uint8_t s_alpha, const uint8_t d_alpha, const clr_t *tint_clr @@ -668,146 +798,13 @@ public: // convert separate r,g,b biases (0..80..ff) to clr_t (-1f..0..1f) - static inline void tint_to_clr(uint8_t r, uint8_t g, uint8_t b, clr_t *clr) + void tint_to_clr(uint8_t r, uint8_t g, uint8_t b, clr_t *clr) { clr->r = r>>2; clr->g = g>>2; clr->b = b>>2; }; - // clr_t to r5g5b5 - static inline uint32_t clr_to_pen(const clr_t *clr) - { - // --t- ---- rrrr r--- gggg g--- bbbb b--- format - return (clr->r << (16+3)) | (clr->g << (8+3)) | (clr->b << 3); - - // --t- ---- ---r rrrr ---g gggg ---b bbbb format - // return (clr->r << (16)) | (clr->g << (8)) | (clr->b); - }; - - - static inline void clr_add_with_clr_mul_fixed(clr_t *clr, const clr_t *clr0, const uint8_t mulfixed_val, const clr_t *mulfixed_clr0) - { - clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(mulfixed_clr0->r)][mulfixed_val]]; - clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable[(mulfixed_clr0->g)][mulfixed_val]]; - clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable[(mulfixed_clr0->b)][mulfixed_val]]; - } - - static inline void clr_add_with_clr_mul_3param(clr_t *clr, const clr_t *clr0, const clr_t *clr1, const clr_t *clr2) - { - clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr2->r)][(clr1->r)]]; - clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable[(clr2->g)][(clr1->g)]]; - clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable[(clr2->b)][(clr1->b)]]; - } - - static inline void clr_add_with_clr_square(clr_t *clr, const clr_t *clr0, const clr_t *clr1) - { - clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr1->r)][(clr1->r)]]; - clr->g = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr1->g)][(clr1->g)]]; - clr->b = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr1->b)][(clr1->b)]]; - } - - static inline void clr_add_with_clr_mul_fixed_rev(clr_t *clr, const clr_t *clr0, const uint8_t val, const clr_t *clr1) - { - clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable_rev[val][(clr1->r)]]; - clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable_rev[val][(clr1->g)]]; - clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable_rev[val][(clr1->b)]]; - } - - static inline void clr_add_with_clr_mul_rev_3param(clr_t *clr, const clr_t *clr0, const clr_t *clr1, const clr_t *clr2) - { - clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable_rev[(clr2->r)][(clr1->r)]]; - clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable_rev[(clr2->g)][(clr1->g)]]; - clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable_rev[(clr2->b)][(clr1->b)]]; - } - - static inline void clr_add_with_clr_mul_rev_square(clr_t *clr, const clr_t *clr0, const clr_t *clr1) - { - clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable_rev[(clr1->r)][(clr1->r)]]; - clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable_rev[(clr1->g)][(clr1->g)]]; - clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable_rev[(clr1->b)][(clr1->b)]]; - } - - - static inline void clr_add(clr_t *clr, const clr_t *clr0, const clr_t *clr1) - { - /* - clr->r = clr0->r + clr1->r; - clr->g = clr0->g + clr1->g; - clr->b = clr0->b + clr1->b; - */ - // use pre-clamped lookup table - clr->r = epic12_device_colrtable_add[clr0->r][clr1->r]; - clr->g = epic12_device_colrtable_add[clr0->g][clr1->g]; - clr->b = epic12_device_colrtable_add[clr0->b][clr1->b]; - - } - - - static inline void clr_mul(clr_t *clr0, const clr_t *clr1) - { - clr0->r = epic12_device_colrtable[(clr0->r)][(clr1->r)]; - clr0->g = epic12_device_colrtable[(clr0->g)][(clr1->g)]; - clr0->b = epic12_device_colrtable[(clr0->b)][(clr1->b)]; - } - - static inline void clr_square(clr_t *clr0, const clr_t *clr1) - { - clr0->r = epic12_device_colrtable[(clr1->r)][(clr1->r)]; - clr0->g = epic12_device_colrtable[(clr1->g)][(clr1->g)]; - clr0->b = epic12_device_colrtable[(clr1->b)][(clr1->b)]; - } - - static inline void clr_mul_3param(clr_t *clr0, const clr_t *clr1, const clr_t *clr2) - { - clr0->r = epic12_device_colrtable[(clr2->r)][(clr1->r)]; - clr0->g = epic12_device_colrtable[(clr2->g)][(clr1->g)]; - clr0->b = epic12_device_colrtable[(clr2->b)][(clr1->b)]; - } - - static inline void clr_mul_rev(clr_t *clr0, const clr_t *clr1) - { - clr0->r = epic12_device_colrtable_rev[(clr0->r)][(clr1->r)]; - clr0->g = epic12_device_colrtable_rev[(clr0->g)][(clr1->g)]; - clr0->b = epic12_device_colrtable_rev[(clr0->b)][(clr1->b)]; - } - - static inline void clr_mul_rev_square(clr_t *clr0, const clr_t *clr1) - { - clr0->r = epic12_device_colrtable_rev[(clr1->r)][(clr1->r)]; - clr0->g = epic12_device_colrtable_rev[(clr1->g)][(clr1->g)]; - clr0->b = epic12_device_colrtable_rev[(clr1->b)][(clr1->b)]; - } - - - static inline void clr_mul_rev_3param(clr_t *clr0, const clr_t *clr1, const clr_t *clr2) - { - clr0->r = epic12_device_colrtable_rev[(clr2->r)][(clr1->r)]; - clr0->g = epic12_device_colrtable_rev[(clr2->g)][(clr1->g)]; - clr0->b = epic12_device_colrtable_rev[(clr2->b)][(clr1->b)]; - } - - static inline void clr_mul_fixed(clr_t *clr, const uint8_t val, const clr_t *clr0) - { - clr->r = epic12_device_colrtable[val][(clr0->r)]; - clr->g = epic12_device_colrtable[val][(clr0->g)]; - clr->b = epic12_device_colrtable[val][(clr0->b)]; - } - - static inline void clr_mul_fixed_rev(clr_t *clr, const uint8_t val, const clr_t *clr0) - { - clr->r = epic12_device_colrtable_rev[val][(clr0->r)]; - clr->g = epic12_device_colrtable_rev[val][(clr0->g)]; - clr->b = epic12_device_colrtable_rev[val][(clr0->b)]; - } - - static inline void clr_copy(clr_t *clr, const clr_t *clr0) - { - clr->r = clr0->r; - clr->g = clr0->g; - clr->b = clr0->b; - } - // (1|s|d) * s_factor * s + (1|s|d) * d_factor * d @@ -821,10 +818,11 @@ public: // 7: * -protected: virtual void device_start() override; virtual void device_reset() override; + TIMER_CALLBACK_MEMBER( blitter_delay_callback ); + osd_work_queue *m_work_queue; osd_work_item *m_blitter_request; @@ -832,9 +830,22 @@ protected: emu_timer *m_blitter_delay_timer; int m_blitter_busy; - TIMER_CALLBACK_MEMBER( blitter_delay_callback ); + static uint8_t colrtable[0x20][0x40]; + static uint8_t colrtable_rev[0x20][0x40]; + static uint8_t colrtable_add[0x20][0x20]; + static uint64_t blit_delay; + + static const blitfunction f0_ti1_tr1_blit_funcs[64]; + static const blitfunction f0_ti1_tr0_blit_funcs[64]; + static const blitfunction f1_ti1_tr1_blit_funcs[64]; + static const blitfunction f1_ti1_tr0_blit_funcs[64]; + static const blitfunction f0_ti0_tr1_blit_funcs[64]; + static const blitfunction f0_ti0_tr0_blit_funcs[64]; + static const blitfunction f1_ti0_tr1_blit_funcs[64]; + static const blitfunction f1_ti0_tr0_blit_funcs[64]; }; +DECLARE_DEVICE_TYPE(EPIC12, epic12_device) -extern const device_type EPIC12; +#endif // MAME_VIDEO_EPIC12_H diff --git a/src/devices/video/epic12in.hxx b/src/devices/video/epic12in.hxx index 13f29e6f609..a74249f986e 100644 --- a/src/devices/video/epic12in.hxx +++ b/src/devices/video/epic12in.hxx @@ -86,23 +86,23 @@ void epic12_device::FUNCNAME(BLIT_PARAMS) // wrong/unsafe slowdown sim if (dimy > starty && dimx > startx) { - epic12_device_blit_delay += (dimy - starty)*(dimx - startx); + blit_delay += (dimy - starty)*(dimx - startx); - //printf("delay is now %d\n", epic12_device_blit_delay); + //printf("delay is now %d\n", blit_delay); } #if BLENDED == 1 #if _SMODE == 0 #if _DMODE == 0 - const uint8_t* salpha_table = epic12_device_colrtable[s_alpha]; - const uint8_t* dalpha_table = epic12_device_colrtable[d_alpha]; + const uint8_t* salpha_table = colrtable[s_alpha]; + const uint8_t* dalpha_table = colrtable[d_alpha]; #endif #if _DMODE == 5 - const uint8_t* salpha_table = epic12_device_colrtable[s_alpha]; + const uint8_t* salpha_table = colrtable[s_alpha]; #endif #if _DMODE == 1 - const uint8_t* salpha_table = epic12_device_colrtable[s_alpha]; + const uint8_t* salpha_table = colrtable[s_alpha]; #endif #endif @@ -110,7 +110,7 @@ void epic12_device::FUNCNAME(BLIT_PARAMS) #if _SMODE == 2 #if _DMODE == 0 - const uint8_t* dalpha_table = epic12_device_colrtable[d_alpha]; + const uint8_t* dalpha_table = colrtable[d_alpha]; #endif #endif #endif diff --git a/src/devices/video/epic12pixel.hxx b/src/devices/video/epic12pixel.hxx index 65666470e40..f324e629b97 100644 --- a/src/devices/video/epic12pixel.hxx +++ b/src/devices/video/epic12pixel.hxx @@ -42,7 +42,7 @@ // source * intesity and clamp #if TINT == 1 - clr_mul(&s_clr.trgb, tint_clr); + s_clr.trgb.mul(*tint_clr); #endif #if BLENDED == 1 @@ -58,98 +58,98 @@ //g_profiler.start(PROFILER_USER1); // this is used extensively in the games (ingame, futari title screens etc.) - s_clr.trgb.r = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]]; - s_clr.trgb.g = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]]; - s_clr.trgb.b = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]]; + s_clr.trgb.r = colrtable_add[salpha_table[(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]]; + s_clr.trgb.g = colrtable_add[salpha_table[(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]]; + s_clr.trgb.b = colrtable_add[salpha_table[(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]]; #elif _DMODE == 1 //g_profiler.start(PROFILER_USER2); // futari ~7% - s_clr.trgb.r = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.r)]][epic12_device_colrtable[(s_clr.trgb.r)][(d_clr.trgb.r)]]; - s_clr.trgb.g = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.g)]][epic12_device_colrtable[(s_clr.trgb.g)][(d_clr.trgb.g)]]; - s_clr.trgb.b = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.b)]][epic12_device_colrtable[(s_clr.trgb.b)][(d_clr.trgb.b)]]; + s_clr.trgb.r = colrtable_add[salpha_table[(s_clr.trgb.r)]][colrtable[(s_clr.trgb.r)][(d_clr.trgb.r)]]; + s_clr.trgb.g = colrtable_add[salpha_table[(s_clr.trgb.g)]][colrtable[(s_clr.trgb.g)][(d_clr.trgb.g)]]; + s_clr.trgb.b = colrtable_add[salpha_table[(s_clr.trgb.b)]][colrtable[(s_clr.trgb.b)][(d_clr.trgb.b)]]; #elif _DMODE == 2 //g_profiler.start(PROFILER_USER3); - clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); - clr_add_with_clr_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + clr0.trgb.mul_fixed(s_alpha, s_clr.trgb); + s_clr.trgb.add_with_clr_square(clr0.trgb, d_clr.trgb); #elif _DMODE == 3 //g_profiler.start(PROFILER_USER4); - clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); - clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + clr0.trgb.mul_fixed(s_alpha, s_clr.trgb); + s_clr.trgb.add(clr0.trgb, d_clr.trgb); #elif _DMODE == 4 //g_profiler.start(PROFILER_USER5); - clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); - clr_add_with_clr_mul_fixed_rev(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb); + clr0.trgb.mul_fixed(s_alpha, s_clr.trgb); + s_clr.trgb.add_with_clr_mul_fixed_rev(clr0.trgb, d_alpha, d_clr.trgb); #elif _DMODE == 5 // futari black character select ~13% //g_profiler.start(PROFILER_USER6); - s_clr.trgb.r = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.r)]][epic12_device_colrtable_rev[(s_clr.trgb.r)][(d_clr.trgb.r)]]; - s_clr.trgb.g = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.g)]][epic12_device_colrtable_rev[(s_clr.trgb.g)][(d_clr.trgb.g)]]; - s_clr.trgb.b = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.b)]][epic12_device_colrtable_rev[(s_clr.trgb.b)][(d_clr.trgb.b)]]; + s_clr.trgb.r = colrtable_add[salpha_table[(s_clr.trgb.r)]][colrtable_rev[(s_clr.trgb.r)][(d_clr.trgb.r)]]; + s_clr.trgb.g = colrtable_add[salpha_table[(s_clr.trgb.g)]][colrtable_rev[(s_clr.trgb.g)][(d_clr.trgb.g)]]; + s_clr.trgb.b = colrtable_add[salpha_table[(s_clr.trgb.b)]][colrtable_rev[(s_clr.trgb.b)][(d_clr.trgb.b)]]; #elif _DMODE == 6 //g_profiler.start(PROFILER_USER7); - clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); - clr_add_with_clr_mul_rev_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + clr0.trgb.mul_fixed(s_alpha, s_clr.trgb); + s_clr.trgb.add_with_clr_mul_rev_square(clr0.trgb, d_clr.trgb); #elif _DMODE == 7 //g_profiler.start(PROFILER_USER8); - clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); - clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + clr0.trgb.mul_fixed(s_alpha, s_clr.trgb); + s_clr.trgb.add(clr0.trgb, d_clr.trgb); #endif //g_profiler.stop(); #elif _SMODE == 1 //g_profiler.start(PROFILER_USER6); - clr_square(&clr0.trgb, &s_clr.trgb); + clr0.trgb.square(s_clr.trgb); #elif _SMODE == 2 // g_profiler.start(PROFILER_USER4); #if _DMODE == 0 // this is used heavily on espgal2 highscore screen (~28%) optimized to avoid use of temp clr0 variable - s_clr.trgb.r = epic12_device_colrtable_add[epic12_device_colrtable[(d_clr.trgb.r)][(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]]; - s_clr.trgb.g = epic12_device_colrtable_add[epic12_device_colrtable[(d_clr.trgb.g)][(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]]; - s_clr.trgb.b = epic12_device_colrtable_add[epic12_device_colrtable[(d_clr.trgb.b)][(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]]; + s_clr.trgb.r = colrtable_add[colrtable[(d_clr.trgb.r)][(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]]; + s_clr.trgb.g = colrtable_add[colrtable[(d_clr.trgb.g)][(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]]; + s_clr.trgb.b = colrtable_add[colrtable[(d_clr.trgb.b)][(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]]; #elif _DMODE == 1 - clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); - clr_add_with_clr_mul_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb); + clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb); + s_clr.trgb.add_with_clr_mul_3param(clr0.trgb, d_clr.trgb, s_clr.trgb); #elif _DMODE == 2 - clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); - clr_add_with_clr_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb); + s_clr.trgb.add_with_clr_square(clr0.trgb, d_clr.trgb); #elif _DMODE == 3 - clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); - clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb); + s_clr.trgb.add(clr0.trgb, d_clr.trgb); #elif _DMODE == 4 - clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); - clr_add_with_clr_mul_fixed_rev(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb); + clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb); + s_clr.trgb.add_with_clr_mul_fixed_rev(clr0.trgb, d_alpha, d_clr.trgb); #elif _DMODE == 5 - clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); - clr_add_with_clr_mul_rev_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb); + clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb); + s_clr.trgb.add_with_clr_mul_rev_3param(clr0.trgb, d_clr.trgb, s_clr.trgb); #elif _DMODE == 6 - clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); - clr_add_with_clr_mul_rev_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb); + s_clr.trgb.add_with_clr_mul_rev_square(clr0.trgb, d_clr.trgb); #elif _DMODE == 7 - clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); - clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + clr0.trgb.mul_3param(s_clr.trgb, d_clr.trgb); + s_clr.trgb.add(clr0.trgb, d_clr.trgb); #endif //g_profiler.stop(); #elif _SMODE == 3 //g_profiler.start(PROFILER_USER1); - clr_copy(&clr0.trgb, &s_clr.trgb); + clr0.trgb.copy(s_clr.trgb); #elif _SMODE == 4 //g_profiler.start(PROFILER_USER2); - clr_mul_fixed_rev(&clr0.trgb, s_alpha, &s_clr.trgb); + clr0.trgb.mul_fixed_rev(s_alpha, s_clr.trgb); #elif _SMODE == 5 //g_profiler.start(PROFILER_USER3); - clr_mul_rev_square(&clr0.trgb, &s_clr.trgb); + clr0.trgb.mul_rev_square(s_clr.trgb); #elif _SMODE == 6 //g_profiler.start(PROFILER_USER4); - clr_mul_rev_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); + clr0.trgb.mul_rev_3param(s_clr.trgb, d_clr.trgb); #elif _SMODE == 7 //g_profiler.start(PROFILER_USER5); - clr_copy(&clr0.trgb, &s_clr.trgb); + clr0.trgb.copy(s_clr.trgb); #endif @@ -158,22 +158,22 @@ #if _SMODE != 0 #if _DMODE == 0 - clr_add_with_clr_mul_fixed(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb); + s_clr.trgb.add_with_clr_mul_fixed(clr0.trgb, d_alpha, d_clr.trgb); #elif _DMODE == 1 - clr_add_with_clr_mul_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb); + s_clr.trgb.add_with_clr_mul_3param(clr0.trgb, d_clr.trgb, s_clr.trgb); #elif _DMODE == 2 - clr_add_with_clr_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + s_clr.trgb.add_with_clr_square(clr0.trgb, d_clr.trgb); #elif _DMODE == 3 - clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + s_clr.trgb.add(clr0.trgb, d_clr.trgb); #elif _DMODE == 4 - clr_add_with_clr_mul_fixed_rev(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb); + s_clr.trgb.add_with_clr_mul_fixed_rev(clr0.trgb, d_alpha, d_clr.trgb); #elif _DMODE == 5 - clr_add_with_clr_mul_rev_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb); + s_clr.trgb.add_with_clr_mul_rev_3param(clr0.trgb, d_clr.trgb, s_clr.trgb); #elif _DMODE == 6 - clr_add_with_clr_mul_rev_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + s_clr.trgb.add_with_clr_mul_rev_square(clr0.trgb, d_clr.trgb); #elif _DMODE == 7 - clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + s_clr.trgb.add(clr0.trgb, d_clr.trgb); #endif //g_profiler.stop(); @@ -184,8 +184,8 @@ #endif // write result - *bmp = clr_to_pen(&s_clr.trgb)|(pen&0x20000000); - //*bmp = (s_clr.u32<<3)|(pen&0x20000000); // using the union is actually significantly slower than our clr_to_pen function! + *bmp = s_clr.trgb.to_pen()|(pen&0x20000000); + //*bmp = (s_clr.u32<<3)|(pen&0x20000000); // using the union is actually significantly slower than our to_pen function! #endif // END NOT REALLY SIMPLE diff --git a/src/devices/video/fixfreq.cpp b/src/devices/video/fixfreq.cpp index 88875b8eb67..a64c6d812b3 100644 --- a/src/devices/video/fixfreq.cpp +++ b/src/devices/video/fixfreq.cpp @@ -16,14 +16,9 @@ #include "emu.h" #include "fixfreq.h" -/*************************************************************************** - - Local variables +//#define VERBOSE 1 +#include "logmacro.h" -***************************************************************************/ - -//#define VERBOSE_OUT(x) printf x -#define VERBOSE_OUT(x) /*************************************************************************** @@ -31,11 +26,12 @@ ***************************************************************************/ // device type definition -const device_type FIXFREQ = device_creator; +DEFINE_DEVICE_TYPE(FIXFREQ, fixedfreq_device, "fixfreq", "Fixed-Frequency Monochrome Monitor") -fixedfreq_device::fixedfreq_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - device_video_interface(mconfig, *this, false), m_htotal(0), m_vtotal(0), m_vid(0), m_last_x(0), m_last_y(0), m_cur_bm(0), +fixedfreq_device::fixedfreq_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), + device_video_interface(mconfig, *this, false), + m_htotal(0), m_vtotal(0), m_vid(0), m_last_x(0), m_last_y(0), m_cur_bm(0), // default to NTSC "704x480@30i" m_monitor_clock(13500000), m_hvisible(704), @@ -48,26 +44,13 @@ fixedfreq_device::fixedfreq_device(const machine_config &mconfig, device_type ty m_vbackporch(525), m_fieldcount(2), m_sync_threshold(0.3), - m_gain(1.0 / 3.7), m_vint(0), m_int_trig(0), m_mult(0), m_sig_vsync(0), m_sig_composite(0), m_sig_field(0) + m_gain(1.0 / 3.7), + m_vint(0), m_int_trig(0), m_mult(0), m_sig_vsync(0), m_sig_composite(0), m_sig_field(0) { } fixedfreq_device::fixedfreq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, FIXFREQ, "Fixed Frequency Monochrome Monitor", tag, owner, clock, "fixfreq", __FILE__), - device_video_interface(mconfig, *this, false), - // default to NTSC "704x480@30i" - m_monitor_clock(13500000), - m_hvisible(704), - m_hfrontporch(728), - m_hsync(791), - m_hbackporch(858), - m_vvisible(480), - m_vfrontporch(486), - m_vsync(492), - m_vbackporch(525), - m_fieldcount(2), - m_sync_threshold(0.3), - m_gain(1.0 / 3.7) + : fixedfreq_device(mconfig, FIXFREQ, tag, owner, clock) { } @@ -160,7 +143,7 @@ void fixedfreq_device::recompute_parameters(bool postload) m_int_trig = (exp(- 3.0/(3.0+3.0))) - exp(-1.0); m_mult = (double) (m_monitor_clock) / (double) m_htotal * 1.0; // / (3.0 + 3.0); - VERBOSE_OUT(("trigger %f with len %f\n", m_int_trig, 1e6 / m_mult)); + LOG("trigger %f with len %f\n", m_int_trig, 1e6 / m_mult); m_bitmap[0] = std::make_unique(m_htotal, m_vtotal); m_bitmap[1] = std::make_unique(m_htotal, m_vtotal); @@ -211,7 +194,7 @@ int fixedfreq_device::sync_separator(const attotime &time, double newval) { m_sig_field = last_comp; /* force false-progressive */ m_sig_field = (m_sig_field ^ 1) ^ last_comp; /* if there is no field switch, auto switch */ - VERBOSE_OUT(("Field: %d\n", m_sig_field)); + LOG("Field: %d\n", m_sig_field); } if (!last_comp && m_sig_composite) { @@ -266,16 +249,16 @@ NETDEV_ANALOG_CALLBACK_MEMBER(fixedfreq_device::update_vid) } if (sync & 1) { - VERBOSE_OUT(("VSYNC %d %d\n", pixels, m_last_y + m_sig_field)); + LOG("VSYNC %d %d\n", pixels, m_last_y + m_sig_field); } if (sync & 2) { - VERBOSE_OUT(("HSYNC up %d\n", pixels)); + LOG("HSYNC up %d\n", pixels); //if (m_last_y == 27) printf("HSYNC up %d %d\n", m_last_y, pixels); } if (sync & 4) { - VERBOSE_OUT(("HSYNC down %f %d %f\n", time.as_double()* 1e6, pixels, m_vid)); + LOG("HSYNC down %f %d %f\n", time.as_double()* 1e6, pixels, m_vid); } if (sync & 1) diff --git a/src/devices/video/fixfreq.h b/src/devices/video/fixfreq.h index 080013ad1a6..e475c2f8b4f 100644 --- a/src/devices/video/fixfreq.h +++ b/src/devices/video/fixfreq.h @@ -11,8 +11,8 @@ ***************************************************************************/ -#ifndef MAME_DEVICES_VIDEO_FIXFREQ_H -#define MAME_DEVICES_VIDEO_FIXFREQ_H +#ifndef MAME_VIDEO_FIXFREQ_H +#define MAME_VIDEO_FIXFREQ_H #include "machine/netlist.h" #include "screen.h" @@ -67,13 +67,11 @@ // ======================> vga_device -class fixedfreq_device : public device_t, - public device_video_interface +class fixedfreq_device : public device_t, public device_video_interface { public: // construction/destruction fixedfreq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - fixedfreq_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); // inline configuration helpers static void set_minitor_clock(device_t &device, uint32_t clock) { downcast(device).m_monitor_clock = clock; } @@ -102,6 +100,8 @@ public: NETDEV_ANALOG_CALLBACK_MEMBER(update_vid); protected: + fixedfreq_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -156,6 +156,6 @@ private: // device type definition -extern const device_type FIXFREQ; +DECLARE_DEVICE_TYPE(FIXFREQ, fixedfreq_device) -#endif // MAME_DEVICES_VIDEO_FIXFREQ_H +#endif // MAME_VIDEO_FIXFREQ_H diff --git a/src/devices/video/gb_lcd.cpp b/src/devices/video/gb_lcd.cpp index 7e50ad9da51..953e0e88165 100644 --- a/src/devices/video/gb_lcd.cpp +++ b/src/devices/video/gb_lcd.cpp @@ -160,9 +160,8 @@ TODO: #include "screen.h" - -#define ENABLE_LOGGING 0 -#define LOG(x) do { if (ENABLE_LOGGING) logerror x; } while(0) +//#define VERBOSE 1 +#include "logmacro.h" #define LCDCONT m_vid_regs[0x00] /* LCD control register */ @@ -312,49 +311,44 @@ static const uint8_t ags_oam_fingerprint[0x100] = { #endif -const device_type DMG_PPU = device_creator; -const device_type MGB_PPU = device_creator; -const device_type SGB_PPU = device_creator; -const device_type CGB_PPU = device_creator; +DEFINE_DEVICE_TYPE(DMG_PPU, dmg_ppu_device, "dmg_ppu", "DMG PPU") +DEFINE_DEVICE_TYPE(MGB_PPU, mgb_ppu_device, "mgb_ppu", "MGB PPU") +DEFINE_DEVICE_TYPE(SGB_PPU, sgb_ppu_device, "sgb_ppu", "SGB PPU") +DEFINE_DEVICE_TYPE(CGB_PPU, cgb_ppu_device, "cgb_ppu", "CGB PPU") -dmg_ppu_device::dmg_ppu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint32_t vram_size) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) - , device_video_interface(mconfig, *this) - , m_lr35902(*this, finder_base::DUMMY_TAG) - , m_sgb_border_hack(0) - , m_enable_experimental_engine(false) - , m_oam_size(0x100) - , m_vram_size(vram_size) +dmg_ppu_device::dmg_ppu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size) + : device_t(mconfig, type, tag, owner, clock) + , device_video_interface(mconfig, *this) + , m_lr35902(*this, finder_base::DUMMY_TAG) + , m_sgb_border_hack(0) + , m_enable_experimental_engine(false) + , m_oam_size(0x100) + , m_vram_size(vram_size) { } dmg_ppu_device::dmg_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DMG_PPU, "DMG PPU", tag, owner, clock, "dmg_ppu", __FILE__) - , device_video_interface(mconfig, *this) - , m_lr35902(*this, finder_base::DUMMY_TAG) - , m_sgb_border_hack(0) - , m_oam_size(0x100) - , m_vram_size(0x2000) + : dmg_ppu_device(mconfig, DMG_PPU, tag, owner, clock, 0x2000) { m_enable_experimental_engine = true; } mgb_ppu_device::mgb_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : dmg_ppu_device(mconfig, MGB_PPU, "MGB PPU", tag, owner, clock, "mgb_ppu", __FILE__, 0x2000) + : dmg_ppu_device(mconfig, MGB_PPU, tag, owner, clock, 0x2000) { m_enable_experimental_engine = true; } sgb_ppu_device::sgb_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : dmg_ppu_device(mconfig, SGB_PPU, "SGB PPU", tag, owner, clock, "sgb_ppu", __FILE__, 0x2000) + : dmg_ppu_device(mconfig, SGB_PPU, tag, owner, clock, 0x2000) { m_enable_experimental_engine = false; } cgb_ppu_device::cgb_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : dmg_ppu_device(mconfig, CGB_PPU, "CGB PPU", tag, owner, clock, "cgb_ppu", __FILE__, 0x4000) + : dmg_ppu_device(mconfig, CGB_PPU, tag, owner, clock, 0x4000) { m_enable_experimental_engine = false; } @@ -686,7 +680,7 @@ void dmg_ppu_device::calculate_window_cycles() { m_window_cycles = 0; - LOG(("m_window_x = %d, m_window_y = %d\n", m_window_x, m_window_y)); + LOG("m_window_x = %d, m_window_y = %d\n", m_window_x, m_window_y); if ((LCDCONT & WINDOW_ENABLED) && m_window_x < 167 && m_window_y < 144) { @@ -785,7 +779,7 @@ void dmg_ppu_device::select_sprites() { if (sprite_occurs[i]) { - LOG(("sprite_occurs[%d] = %02x\n", i, sprite_occurs[i])); + LOG("sprite_occurs[%d] = %02x\n", i, sprite_occurs[i]); } if (sprite_occurs[i]) @@ -799,7 +793,7 @@ void dmg_ppu_device::select_sprites() } } - LOG(("m_sprite_cycles = %d\n", m_sprite_cycles)); + LOG("m_sprite_cycles = %d\n", m_sprite_cycles); } } } @@ -820,14 +814,14 @@ void dmg_ppu_device::update_line_state(uint64_t cycles) m_line.scrollx_to_apply++; } -//LOG(("tile_cycle = %u, starting = %s, drawing = %s\n", m_line.tile_cycle, m_line.starting ? "true" : "false", m_line.drawing ? "true" : "false")); + //LOG("tile_cycle = %u, starting = %s, drawing = %s\n", m_line.tile_cycle, m_line.starting ? "true" : "false", m_line.drawing ? "true" : "false"); // output next pixel if (m_line.drawing) { if (m_line.scrollx_to_apply > 0) { // TODO: Determine when the scrollx shifts are applied when window-x is <= 0x07 -LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply)); + LOG("scrollx_to_apply: %u\n", m_line.scrollx_to_apply); if (!m_line.window_active) { m_line.shift_register <<= 2; @@ -843,7 +837,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply)); { if (m_line.pixels_drawn < 8) { - LOG(("draw pixel %u\n", m_line.pixels_drawn)); + LOG("draw pixel %u\n", m_line.pixels_drawn); } plot_pixel(m_line.pixels_drawn, m_current_line, m_gb_bpal[m_line.shift_register >> 14]); m_bg_zbuf[m_line.pixels_drawn] = m_line.shift_register >> 14; @@ -875,7 +869,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply)); } if (m_line.pixels_drawn < 8) { - LOG(("m_current_line: %u, tile_count: %02x, plane0 = %02x, plane1 = %02x, shift_register = %04x\n", m_current_line, m_line.tile_count, m_line.plane0, m_line.plane1, m_line.shift_register)); + LOG("m_current_line: %u, tile_count: %02x, plane0 = %02x, plane1 = %02x, shift_register = %04x\n", m_current_line, m_line.tile_count, m_line.plane0, m_line.plane1, m_line.shift_register); } if (m_line.sequence_counter >= 2) { @@ -908,7 +902,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply)); m_line.pattern = m_vram.get()[m_line.pattern_address] ^ m_gb_tile_no_mod; if (m_line.tile_count < 8) { - LOG(("tile_count = %u, y = %u, pattern = %02x, pattern_address = %04x\n", m_line.tile_count, m_current_line, m_line.pattern, m_line.pattern_address)); + LOG("tile_count = %u, y = %u, pattern = %02x, pattern_address = %04x\n", m_line.tile_count, m_current_line, m_line.pattern, m_line.pattern_address); } break; @@ -916,7 +910,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply)); m_line.tile_address = m_gb_chrgen_offs + ((m_line.pattern << 4) | ((m_line.y & 0x07) << 1)); if (m_line.tile_count < 8) { - LOG(("tile_count = %u, tile_address = %04x, pattern = %02x, y = %u, m_gb_chrgen_offs = %04x\n", m_line.tile_count, m_line.tile_address, m_line.pattern, m_line.y & 7, m_gb_chrgen_offs)); + LOG("tile_count = %u, tile_address = %04x, pattern = %02x, y = %u, m_gb_chrgen_offs = %04x\n", m_line.tile_count, m_line.tile_address, m_line.pattern, m_line.y & 7, m_gb_chrgen_offs); } break; @@ -975,7 +969,7 @@ LOG(("scrollx_to_apply: %u\n", m_line.scrollx_to_apply)); break; case 9: // eat scrollx delay cycles before starting window - LOG(("eating scrollx_to_apply: %u\n", m_line.scrollx_to_apply)); + LOG("eating scrollx_to_apply: %u\n", m_line.scrollx_to_apply); m_line.window_compare_position--; m_line.scrollx_to_apply--; m_cycles_left++; @@ -1018,12 +1012,12 @@ void dmg_ppu_device::check_start_of_window() // Check for start of window if (m_line.window_compare_position < 16) { - LOG(("check window this line, m_current_line = %u, WNDPOSY = %u, WNDPOSX = %u, m_line.window_compare_position = %u, tile_cycle = %u, window_start_y = %u, pixels_drawn = %u\n", m_current_line, WNDPOSY, WNDPOSX, m_line.window_compare_position, m_line.tile_cycle, m_line.window_start_y[m_line.window_start_y_index], m_line.pixels_drawn)); + LOG("check window this line, m_current_line = %u, WNDPOSY = %u, WNDPOSX = %u, m_line.window_compare_position = %u, tile_cycle = %u, window_start_y = %u, pixels_drawn = %u\n", m_current_line, WNDPOSY, WNDPOSX, m_line.window_compare_position, m_line.tile_cycle, m_line.window_start_y[m_line.window_start_y_index], m_line.pixels_drawn); } if (/*LCDCONT*/(m_line.window_enable[m_line.window_enable_index] & WINDOW_ENABLED) && !m_line.window_active && (m_frame_window_active || /*m_current_line >= m_window_y*/ m_line.window_should_trigger || m_current_line == m_line.window_start_y[m_line.window_start_y_index]) && m_line.window_compare_position == /*WNDPOSX*/ m_line.window_start_x[m_line.window_start_y_index] && m_line.window_compare_position < 0xA6) { -LOG(("enable window, m_current_line = %u, WNDPOSY = %u, WNDPOSX = %u, m_line.window_compare_position = %u, pixels_drawn = %u\n", m_current_line, WNDPOSY, WNDPOSX, m_line.window_compare_position, m_line.pixels_drawn)); + LOG("enable window, m_current_line = %u, WNDPOSY = %u, WNDPOSX = %u, m_line.window_compare_position = %u, pixels_drawn = %u\n", m_current_line, WNDPOSY, WNDPOSX, m_line.window_compare_position, m_line.pixels_drawn); m_line.starting = true; m_line.window_active = true; m_frame_window_active = true; @@ -2050,7 +2044,7 @@ void dmg_ppu_device::update_state() if (LCDCONT & ENABLED) { - LOG(("m_cycles_left = %u, cycles = %u, CURLINE = %u, m_next_state = %s\n", m_cycles_left, cycles, CURLINE, state_to_string(m_next_state))); + LOG("m_cycles_left = %u, cycles = %u, CURLINE = %u, m_next_state = %s\n", m_cycles_left, cycles, CURLINE, state_to_string(m_next_state)); if (m_cycles_left > 0) { @@ -2129,7 +2123,7 @@ void dmg_ppu_device::update_state() check_stat_irq(); m_stat_lyc_int = ((CMPLINE == CURLINE) && (LCDSTAT & LY_LYC_INT_ENABLED)) ? true : false; - LOG(("GB_LCD_STATE_LYXX_M0_INC: CMPLINE = %02x, CURLINE = %02x, LCDSTAT = %02x, m_stat_lyc_int = %s\n", CMPLINE, CURLINE, LCDSTAT, m_stat_lyc_int ? "true":"false")); + LOG("GB_LCD_STATE_LYXX_M0_INC: CMPLINE = %02x, CURLINE = %02x, LCDSTAT = %02x, m_stat_lyc_int = %s\n", CMPLINE, CURLINE, LCDSTAT, m_stat_lyc_int ? "true":"false"); /* Reset LY==LYC STAT bit */ LCDSTAT &= ~LY_LYC_FLAG; /* Check if we're going into VBlank next */ @@ -2179,7 +2173,7 @@ void dmg_ppu_device::update_state() { m_line.window_should_trigger = true; } -LOG(("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_line.window_should_trigger ? "true" : "false", m_current_line, m_window_y)); + LOG("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_line.window_should_trigger ? "true" : "false", m_current_line, m_window_y); state_cycles = 80 - 8; m_next_state = GB_LCD_STATE_LYXX_M3; @@ -2221,7 +2215,7 @@ LOG(("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_lin { m_line.window_should_trigger = true; } -LOG(("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_line.window_should_trigger ? "true" : "false", m_current_line, m_window_y)); + LOG("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_line.window_should_trigger ? "true" : "false", m_current_line, m_window_y); m_next_state = GB_LCD_STATE_LYXX_M3; state_cycles = 80 - 8; break; @@ -2305,7 +2299,7 @@ LOG(("window should trigger = %s, m_current_line = %u, m_window_y = %u\n", m_lin case GB_LCD_STATE_LY9X_M1_INC: /* Increment scanline counter */ increment_scanline(); - LOG(("GB_LCD_STATE_LY9X_M1_INC: m_stat_lyc_int = %s\n", m_stat_lyc_int ? "true" : "false")); + LOG("GB_LCD_STATE_LY9X_M1_INC: m_stat_lyc_int = %s\n", m_stat_lyc_int ? "true" : "false"); /* Reset LY==LYC STAT bit */ LCDSTAT &= ~LY_LYC_FLAG; if (m_current_line == 153) @@ -2439,7 +2433,7 @@ void cgb_ppu_device::update_hdma_state(uint64_t cycles) void cgb_ppu_device::hdma_trans(uint16_t length) { - LOG(("hdma_trans\n")); + LOG("hdma_trans\n"); m_hdma_length = length; m_hdma_cycles_to_start = 4; update_state(); @@ -2448,7 +2442,7 @@ void cgb_ppu_device::hdma_trans(uint16_t length) void cgb_ppu_device::hdma_trans_execute() { - LOG(("hdma_trans_execute\n")); + LOG("hdma_trans_execute\n"); uint16_t length = m_hdma_length; uint16_t src, dst; @@ -2456,7 +2450,7 @@ void cgb_ppu_device::hdma_trans_execute() // 102 Dalmatians uses destination 0000 and expects data to be DMAed. dst = 0x8000 | (HDMA3 << 8) | (HDMA4 & 0xF0); - //LOG(("length = %04x, src = %04x, dst = %04x\n", length, src, dst)); + //LOG("length = %04x, src = %04x, dst = %04x\n", length, src, dst); while (length > 0) { if (dst & 0x8000) @@ -2507,7 +2501,7 @@ void cgb_ppu_device::update_state() if (LCDCONT & ENABLED) { - LOG(("m_cycles_left = %d, cycles = %d, m_next_state = %s\n", m_cycles_left, cycles, state_to_string(m_next_state))); + LOG("m_cycles_left = %d, cycles = %d, m_next_state = %s\n", m_cycles_left, cycles, state_to_string(m_next_state)); if (m_cycles_left > 0) { @@ -2595,7 +2589,7 @@ void cgb_ppu_device::update_state() m_stat_mode2_int = (LCDSTAT & MODE_2_INT_ENABLED) ? true : false; check_stat_irq(); m_stat_lyc_int = ((m_cmp_line == CURLINE) && (LCDSTAT & LY_LYC_INT_ENABLED)) ? true : false; - LOG(("GB_LCD_STATE_LYXX_M0_INC: m_cmp_line = %u, CURLINE = %u, LCDSTAT = %02x, m_stat_lyc_int = %s\n", m_cmp_line, CURLINE, LCDSTAT, m_stat_lyc_int ? "true" : "false")); + LOG("GB_LCD_STATE_LYXX_M0_INC: m_cmp_line = %u, CURLINE = %u, LCDSTAT = %02x, m_stat_lyc_int = %s\n", m_cmp_line, CURLINE, LCDSTAT, m_stat_lyc_int ? "true" : "false"); m_hdma_possible = 0; /* Check if we're going into VBlank next */ if (CURLINE == 144) @@ -2742,7 +2736,7 @@ void cgb_ppu_device::update_state() break; case GB_LCD_STATE_LY00_M1: /* we stay in VBlank but current line counter should already be incremented */ - LOG(("GB_LCD_STATE_LY00_M1, CURLINE=%u, CMPLINE=%u, m_stat_lyc_int=%s\n", CURLINE, CMPLINE, m_stat_lyc_int ? "true" : "false")); + LOG("GB_LCD_STATE_LY00_M1, CURLINE=%u, CMPLINE=%u, m_stat_lyc_int=%s\n", CURLINE, CMPLINE, m_stat_lyc_int ? "true" : "false"); /* Check LY=LYC for line #153 */ if (CURLINE == CMPLINE) { @@ -2760,7 +2754,7 @@ void cgb_ppu_device::update_state() case GB_LCD_STATE_LY00_M1_1: increment_scanline(); m_stat_lyc_int = ((CMPLINE == CURLINE) && (LCDSTAT & LY_LYC_INT_ENABLED)) ? true : false; - LOG(("GB_LCD_STATE_LY00_M1_1, m_stat_lyc_int = %s\n", m_stat_lyc_int ? "true" : "false")); + LOG("GB_LCD_STATE_LY00_M1_1, m_stat_lyc_int = %s\n", m_stat_lyc_int ? "true" : "false"); m_next_state = GB_LCD_STATE_LY00_M1_2; state_cycles = 4; break; @@ -2889,7 +2883,7 @@ READ8_MEMBER(dmg_ppu_device::vram_r) if (!machine().side_effect_disabled()) { update_state(); - LOG(("vram_r: offset=0x%04x\n", offset)); + LOG("vram_r: offset=0x%04x\n", offset); } return (m_vram_locked == LOCKED) ? 0xff : m_vram[offset + (m_vram_bank * 0x2000)]; @@ -2911,7 +2905,7 @@ READ8_MEMBER(dmg_ppu_device::oam_r) if (!machine().side_effect_disabled()) { update_state(); - LOG(("oam_r: offset=0x%02x\n", offset)); + LOG("oam_r: offset=0x%02x\n", offset); } return (m_oam_locked == LOCKED || m_oam_locked_reading == LOCKED || m_oam_dma_processing) ? 0xff : m_oam[offset]; @@ -2934,9 +2928,9 @@ READ8_MEMBER(dmg_ppu_device::video_r) if (!machine().side_effect_disabled()) { update_state(); - if (offset == 1) LOG(("STAT read\n")); - if (offset == 0x28) LOG(("BCPS read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED")); - if (offset == 0x29) LOG(("BCPD read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED")); + if (offset == 1) LOG("STAT read\n"); + if (offset == 0x28) LOG("BCPS read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"); + if (offset == 0x29) LOG("BCPD read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"); } return m_vid_regs[offset]; @@ -2945,7 +2939,7 @@ READ8_MEMBER(dmg_ppu_device::video_r) bool dmg_ppu_device::stat_write(uint8_t new_data) { - LOG(("stat_write: old_data = %02x, new_data = %02x\n", LCDSTAT & 0x78, new_data & 0x78)); + LOG("stat_write: old_data = %02x, new_data = %02x\n", LCDSTAT & 0x78, new_data & 0x78); bool new_lyc_int = m_stat_lyc_int; @@ -3040,22 +3034,22 @@ void dmg_ppu_device::check_stat_irq() { bool new_stat_int = m_stat_mode0_int || m_stat_mode1_int || m_stat_mode2_int || m_stat_lyc_int || m_stat_write_int; - LOG(("m_mode = %d, m_stat_mode0_int = %s, m_stat_mode1_int = %s, m_stat_mode2_int = %s, m_stat_lyc_int = %s\n", + LOG("m_mode = %d, m_stat_mode0_int = %s, m_stat_mode1_int = %s, m_stat_mode2_int = %s, m_stat_lyc_int = %s\n", m_mode, m_stat_mode0_int ? "true" : "false", m_stat_mode1_int ? "true" : "false", m_stat_mode2_int ? "true" : "false", m_stat_lyc_int ? "true" : "false" - )); + ); if (new_stat_int && !m_stat_int) { - LOG(("--m_stat_mode0_int = %s, m_stat_mode1_int = %s, m_stat_mode2_int = %s, m_stat_lyc_int = %s\n", + LOG("--m_stat_mode0_int = %s, m_stat_mode1_int = %s, m_stat_mode2_int = %s, m_stat_lyc_int = %s\n", m_stat_mode0_int ? "true" : "false", m_stat_mode1_int ? "true" : "false", m_stat_mode2_int ? "true" : "false", m_stat_lyc_int ? "true" : "false" - )); + ); m_lr35902->set_input_line(lr35902_cpu_device::LCD_INT, ASSERT_LINE); m_lr35902->execute_set_input(lr35902_cpu_device::LCD_INT, ASSERT_LINE); @@ -3069,7 +3063,7 @@ void dmg_ppu_device::check_stat_irq() WRITE8_MEMBER(dmg_ppu_device::video_w) { update_state(); - LOG(("video_w: offset = %02x, data = %02x\n", offset, data)); + LOG("video_w: offset = %02x, data = %02x\n", offset, data); switch (offset) { @@ -3123,7 +3117,7 @@ WRITE8_MEMBER(dmg_ppu_device::video_w) { if (CURLINE == data || (m_state == GB_LCD_STATE_LY00_M1 && CURLINE == 0 && data == 153)) { - LOG(("write LYC, if\n")); + LOG("write LYC, if\n"); LCDSTAT |= LY_LYC_FLAG; /* Generate lcd interrupt if requested */ if (LCDSTAT & LY_LYC_INT_ENABLED) @@ -3142,7 +3136,7 @@ WRITE8_MEMBER(dmg_ppu_device::video_w) } else { - LOG(("write LYC, else\n")); + LOG("write LYC, else\n"); LCDSTAT &= ~LY_LYC_FLAG; m_stat_lyc_int = false; check_stat_irq(); @@ -3180,7 +3174,7 @@ WRITE8_MEMBER(dmg_ppu_device::video_w) break; case 0x03: /* SCX - Scroll X */ update_scanline(m_lr35902->attotime_to_cycles(m_lcd_timer->remaining())); - LOG(("SCX: scrollx_delay = %d, m_cycles_left = %d\n", m_line.scrollx_delay, m_cycles_left)); + LOG("SCX: scrollx_delay = %d, m_cycles_left = %d\n", m_line.scrollx_delay, m_cycles_left); if (m_line.scrollx_delay > 0) { // Additional delay cycles; not sure if this is correct. @@ -3190,10 +3184,10 @@ WRITE8_MEMBER(dmg_ppu_device::video_w) } break; case 0x0A: /* WY - Window Y position */ - LOG(("WY write, m_cycles_left = %d\n", m_cycles_left)); + LOG("WY write, m_cycles_left = %d\n", m_cycles_left); break; case 0x0B: /* WX - Window X position */ - LOG(("WX write, m_cycles_left = %d\n", m_cycles_left)); + LOG("WX write, m_cycles_left = %d\n", m_cycles_left); break; default: /* Unknown register, no change */ return; @@ -3206,9 +3200,9 @@ READ8_MEMBER(cgb_ppu_device::video_r) if (!machine().side_effect_disabled()) { update_state(); - if (offset == 1) LOG(("STAT read\n")); - if (offset == 0x28) LOG(("BCPS read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED")); - if (offset == 0x29) LOG(("BCPD read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED")); + if (offset == 1) LOG("STAT read\n"); + if (offset == 0x28) LOG("BCPS read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"); + if (offset == 0x29) LOG("BCPD read, palette is %s\n", m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"); } switch (offset) @@ -3232,7 +3226,7 @@ READ8_MEMBER(cgb_ppu_device::video_r) bool cgb_ppu_device::stat_write(uint8_t new_data) { - LOG(("stat_write: old_data = %02x, new_data = %02x\n", LCDSTAT & 0x78, new_data & 0x78)); + LOG("stat_write: old_data = %02x, new_data = %02x\n", LCDSTAT & 0x78, new_data & 0x78); bool new_lyc_int = m_stat_lyc_int; @@ -3292,7 +3286,7 @@ bool cgb_ppu_device::stat_write(uint8_t new_data) WRITE8_MEMBER(cgb_ppu_device::video_w) { update_state(); - LOG(("video_w\n")); + LOG("video_w\n"); switch (offset) { @@ -3343,7 +3337,7 @@ WRITE8_MEMBER(cgb_ppu_device::video_w) { if (CURLINE == data && m_state != GB_LCD_STATE_LY00_M1 && m_state != GB_LCD_STATE_LYXX_M0_PRE_INC) { - LOG(("write LYC, if, CURLINE=%u\n", CURLINE)); + LOG("write LYC, if, CURLINE=%u\n", CURLINE); LCDSTAT |= LY_LYC_FLAG; /* Generate lcd interrupt if requested */ @@ -3355,7 +3349,7 @@ WRITE8_MEMBER(cgb_ppu_device::video_w) } else { - LOG(("write LYC, else, CURLINE=%u\n", CURLINE)); + LOG("write LYC, else, CURLINE=%u\n", CURLINE); LCDSTAT &= ~LY_LYC_FLAG; check_stat_irq(); @@ -3429,7 +3423,7 @@ WRITE8_MEMBER(cgb_ppu_device::video_w) } break; case 0x28: /* BCPS - Background palette specification */ - LOG(("BCPS write %02x\n", data)); + LOG("BCPS write %02x\n", data); GBCBCPS = data; if (data & 0x01) @@ -3438,7 +3432,7 @@ WRITE8_MEMBER(cgb_ppu_device::video_w) GBCBCPD = m_cgb_bpal[(data >> 1) & 0x1F] & 0xFF; break; case 0x29: /* BCPD - background palette data */ - LOG(("BCPD write %02x, palette is %s\n", data, m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED")); + LOG("BCPD write %02x, palette is %s\n", data, m_pal_locked == LOCKED ? "LOCKED" : "UNLOCKED"); if (m_pal_locked == LOCKED) { diff --git a/src/devices/video/gb_lcd.h b/src/devices/video/gb_lcd.h index 6e3587439d9..974e2d76cab 100644 --- a/src/devices/video/gb_lcd.h +++ b/src/devices/video/gb_lcd.h @@ -6,31 +6,19 @@ * ****************************************************************************/ -#ifndef __GB_LCD_H__ -#define __GB_LCD_H__ +#ifndef MAME_VIDEO_GB_LCD_H +#define MAME_VIDEO_GB_LCD_H -#include "cpu/lr35902/lr35902.h" +#pragma once +#include "cpu/lr35902/lr35902.h" -struct layer_struct { - uint8_t enabled; - uint8_t *bg_tiles; - uint8_t *bg_map; - uint8_t xindex; - uint8_t xshift; - uint8_t xstart; - uint8_t xend; - /* GBC specific */ - uint8_t *gbc_map; - int16_t bgline; -}; class dmg_ppu_device : public device_t, public device_video_interface { public: - dmg_ppu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint32_t vram_size); dmg_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void static_set_lr35902_tag(device_t &device, const char *tag) { downcast(device).m_lr35902.set_tag(tag); } @@ -65,6 +53,19 @@ protected: LY_LYC_FLAG = 0x04 }; + struct layer_struct { + uint8_t enabled; + uint8_t *bg_tiles; + uint8_t *bg_map; + uint8_t xindex; + uint8_t xshift; + uint8_t xstart; + uint8_t xend; + /* GBC specific */ + uint8_t *gbc_map; + int16_t bgline; + }; + inline void plot_pixel(int x, int y, uint16_t color); void select_sprites(); @@ -72,6 +73,8 @@ protected: virtual void update_sprites(); virtual void update_scanline(uint32_t cycles_to_go); + dmg_ppu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t vram_size); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -226,8 +229,8 @@ protected: void check_start_of_window(); private: - uint32_t m_oam_size; - uint32_t m_vram_size; + const uint32_t m_oam_size; + const uint32_t m_vram_size; }; @@ -288,10 +291,10 @@ protected: }; -extern const device_type DMG_PPU; -extern const device_type MGB_PPU; -extern const device_type SGB_PPU; -extern const device_type CGB_PPU; +DECLARE_DEVICE_TYPE(DMG_PPU, dmg_ppu_device) +DECLARE_DEVICE_TYPE(MGB_PPU, mgb_ppu_device) +DECLARE_DEVICE_TYPE(SGB_PPU, sgb_ppu_device) +DECLARE_DEVICE_TYPE(CGB_PPU, cgb_ppu_device) #define MCFG_DMG_PPU_ADD(_tag, _cpu_tag ) \ @@ -311,4 +314,4 @@ extern const device_type CGB_PPU; dmg_ppu_device::static_set_lr35902_tag(*device, "^" _cpu_tag); -#endif /* GB_LCD_H_ */ +#endif // MAME_VIDEO_GB_LCD_H diff --git a/src/devices/video/gba_lcd.cpp b/src/devices/video/gba_lcd.cpp index 71d094ae8cf..21184df0888 100644 --- a/src/devices/video/gba_lcd.cpp +++ b/src/devices/video/gba_lcd.cpp @@ -140,10 +140,10 @@ private: uint16_t m_attr2; }; -const device_type GBA_LCD = device_creator; +DEFINE_DEVICE_TYPE(GBA_LCD, gba_lcd_device, "gba_lcd", "GBA LCD") gba_lcd_device::gba_lcd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GBA_LCD, "GBA LCD", tag, owner, clock, "gba_lcd", __FILE__) + : device_t(mconfig, GBA_LCD, tag, owner, clock) , device_video_interface(mconfig, *this) , m_int_hblank_cb(*this) , m_int_vblank_cb(*this) diff --git a/src/devices/video/gba_lcd.h b/src/devices/video/gba_lcd.h index 3df855b4535..263e5973bee 100644 --- a/src/devices/video/gba_lcd.h +++ b/src/devices/video/gba_lcd.h @@ -10,11 +10,10 @@ ***************************************************************************/ -#pragma once - -#ifndef __GBA_LCD_H__ -#define __GBA_LCD_H__ +#ifndef MAME_VIDEO_GBA_LCD_H +#define MAME_VIDEO_GBA_LCD_H +#pragma once @@ -23,7 +22,7 @@ //************************************************************************** // device type definition -extern const device_type GBA_LCD; +DECLARE_DEVICE_TYPE(GBA_LCD, gba_lcd_device) //************************************************************************** @@ -103,29 +102,29 @@ public: TIMER_CALLBACK_MEMBER(perform_hbl); TIMER_CALLBACK_MEMBER(perform_scan); - template static devcb_base &set_int_hblank_callback(device_t &device, _Object object) + template static devcb_base &set_int_hblank_callback(device_t &device, Object &&cb) { - return downcast(device).m_int_hblank_cb.set_callback(object); + return downcast(device).m_int_hblank_cb.set_callback(std::forward(cb)); } - template static devcb_base &set_int_vblank_callback(device_t &device, _Object object) + template static devcb_base &set_int_vblank_callback(device_t &device, Object &&cb) { - return downcast(device).m_int_vblank_cb.set_callback(object); + return downcast(device).m_int_vblank_cb.set_callback(std::forward(cb)); } - template static devcb_base &set_int_vcount_callback(device_t &device, _Object object) + template static devcb_base &set_int_vcount_callback(device_t &device, Object &&cb) { - return downcast(device).m_int_vcount_cb.set_callback(object); + return downcast(device).m_int_vcount_cb.set_callback(std::forward(cb)); } - template static devcb_base &set_dma_hblank_callback(device_t &device, _Object object) + template static devcb_base &set_dma_hblank_callback(device_t &device, Object &&cb) { - return downcast(device).m_dma_hblank_cb.set_callback(object); + return downcast(device).m_dma_hblank_cb.set_callback(std::forward(cb)); } - template static devcb_base &set_dma_vblank_callback(device_t &device, _Object object) + template static devcb_base &set_dma_vblank_callback(device_t &device, Object &&cb) { - return downcast(device).m_dma_vblank_cb.set_callback(object); + return downcast(device).m_dma_vblank_cb.set_callback(std::forward(cb)); } protected: @@ -250,4 +249,4 @@ private: static constexpr uint32_t TRANSPARENT_PIXEL = 0x80000000; }; -#endif /* GBA_LCD_H_ */ +#endif // MAME_VIDEO_GBA_LCD_H diff --git a/src/devices/video/gf4500.cpp b/src/devices/video/gf4500.cpp index 6b539cf65a3..4f48a14b9ef 100644 --- a/src/devices/video/gf4500.cpp +++ b/src/devices/video/gf4500.cpp @@ -31,12 +31,12 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t &device, int n_level, c #define GF4500_FRAMEBUF_OFFSET 0x20000 -const device_type GF4500 = device_creator; +DEFINE_DEVICE_TYPE(GF4500, gf4500_device, "gf4500", "NVIDIA GoForce 4500") gf4500_device::gf4500_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GF4500, "NVIDIA GoForce 4500", tag, owner, clock, "gf4500", __FILE__), m_data(nullptr), m_screen_x(0), m_screen_y(0), m_screen_x_max(0), m_screen_y_max(0), m_screen_x_min(0), m_screen_y_min(0) - { + : device_t(mconfig, GF4500, tag, owner, clock), m_data(nullptr), m_screen_x(0), m_screen_y(0), m_screen_x_max(0), m_screen_y_max(0), m_screen_x_min(0), m_screen_y_min(0) +{ } diff --git a/src/devices/video/gf4500.h b/src/devices/video/gf4500.h index 01435ea5b61..e06af73c5c4 100644 --- a/src/devices/video/gf4500.h +++ b/src/devices/video/gf4500.h @@ -8,15 +8,16 @@ */ -#ifndef __GF4500_H__ -#define __GF4500_H__ +#ifndef MAME_VIDEO_GF4500_H +#define MAME_VIDEO_GF4500_H + +#pragma once class gf4500_device : public device_t { public: gf4500_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~gf4500_device() {} DECLARE_READ32_MEMBER( read ); @@ -49,7 +50,6 @@ private: MCFG_DEVICE_ADD(_tag, GF4500, 0) -extern const device_type GF4500; - +DECLARE_DEVICE_TYPE(GF4500, gf4500_device) -#endif /* __GF4500_H__ */ +#endif // MAME_VIDEO_GF4500_H diff --git a/src/devices/video/gf7600gs.cpp b/src/devices/video/gf7600gs.cpp index 4b35d3a8f97..407178ab73f 100644 --- a/src/devices/video/gf7600gs.cpp +++ b/src/devices/video/gf7600gs.cpp @@ -3,7 +3,7 @@ #include "emu.h" #include "gf7600gs.h" -const device_type GEFORCE_7600GS = device_creator; +DEFINE_DEVICE_TYPE(GEFORCE_7600GS, geforce_7600gs_device, "geforce_7600gs", "NVIDIA GeForce 7600GS") DEVICE_ADDRESS_MAP_START(map1, 32, geforce_7600gs_device) ADDRESS_MAP_END @@ -15,7 +15,7 @@ DEVICE_ADDRESS_MAP_START(map3, 32, geforce_7600gs_device) ADDRESS_MAP_END geforce_7600gs_device::geforce_7600gs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pci_device(mconfig, GEFORCE_7600GS, "NVidia GeForce 7600GS", tag, owner, clock, "geforce_7600gs", __FILE__) + : pci_device(mconfig, GEFORCE_7600GS, tag, owner, clock) { } diff --git a/src/devices/video/gf7600gs.h b/src/devices/video/gf7600gs.h index f2a44ca903a..b2d21011c83 100644 --- a/src/devices/video/gf7600gs.h +++ b/src/devices/video/gf7600gs.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef GF7600GS_H -#define GF7600GS_H +#ifndef MAME_VIDEO_GF7600GS_H +#define MAME_VIDEO_GF7600GS_H + +#pragma once #include "machine/pci.h" @@ -22,6 +24,6 @@ private: DECLARE_ADDRESS_MAP(map3, 32); }; -extern const device_type GEFORCE_7600GS; +DECLARE_DEVICE_TYPE(GEFORCE_7600GS, geforce_7600gs_device) -#endif +#endif // MAME_VIDEO_GF7600GS_H diff --git a/src/devices/video/hd44102.cpp b/src/devices/video/hd44102.cpp index 00d2cf8d85d..43a413920e8 100644 --- a/src/devices/video/hd44102.cpp +++ b/src/devices/video/hd44102.cpp @@ -9,15 +9,15 @@ #include "emu.h" #include "hd44102.h" +//#define VERBOSE 1 +#include "logmacro.h" + //************************************************************************** // MACROS / CONSTANTS //************************************************************************** -#define LOG 0 - - #define CONTROL_DISPLAY_OFF 0x38 #define CONTROL_DISPLAY_ON 0x39 #define CONTROL_COUNT_DOWN_MODE 0x3a @@ -34,7 +34,7 @@ // device type definition -const device_type HD44102 = device_creator; +DEFINE_DEVICE_TYPE(HD44102, hd44102_device, "hd44102", "Hitachi HD44102 LCD Controller") //************************************************************************** @@ -68,7 +68,7 @@ inline void hd44102_device::count_up_or_down() //------------------------------------------------- hd44102_device::hd44102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HD44102, "HD44102", tag, owner, clock, "hd44102", __FILE__), + : device_t(mconfig, HD44102, tag, owner, clock), device_video_interface(mconfig, *this), m_cs2(0), m_page(0), @@ -172,51 +172,51 @@ WRITE8_MEMBER( hd44102_device::control_w ) switch (data) { case CONTROL_DISPLAY_OFF: - if (LOG) logerror("HD44102 '%s' Display Off\n", tag()); + LOG("HD44102 Display Off\n"); m_status |= STATUS_DISPLAY_OFF; break; case CONTROL_DISPLAY_ON: - if (LOG) logerror("HD44102 '%s' Display On\n", tag()); + LOG("HD44102 Display On\n"); m_status &= ~STATUS_DISPLAY_OFF; break; case CONTROL_COUNT_DOWN_MODE: - if (LOG) logerror("HD44102 '%s' Count Down Mode\n", tag()); + LOG("HD44102 Count Down Mode\n"); m_status &= ~STATUS_COUNT_UP; break; case CONTROL_COUNT_UP_MODE: - if (LOG) logerror("HD44102 '%s' Count Up Mode\n", tag()); + LOG("HD44102 Count Up Mode\n"); m_status |= STATUS_COUNT_UP; break; default: { - int x = (data & CONTROL_X_ADDRESS_MASK) >> 6; - int y = data & CONTROL_Y_ADDRESS_MASK; + const int x = (data & CONTROL_X_ADDRESS_MASK) >> 6; + const int y = data & CONTROL_Y_ADDRESS_MASK; - if ((data & CONTROL_Y_ADDRESS_MASK) == CONTROL_DISPLAY_START_PAGE) - { - if (LOG) logerror("HD44102 '%s' Display Start Page %u\n", tag(), x); + if ((data & CONTROL_Y_ADDRESS_MASK) == CONTROL_DISPLAY_START_PAGE) + { + LOG("HD44102 Display Start Page %u\n", x); - m_page = x; - } - else if (y > 49) - { - logerror("HD44102 '%s' Invalid Address X %u Y %u (%02x)!\n", tag(), data, x, y); - } - else - { - if (LOG) logerror("HD44102 '%s' Address X %u Y %u (%02x)\n", tag(), data, x, y); + m_page = x; + } + else if (y > 49) + { + logerror("HD44102 Invalid Address X %u Y %u (%02x)!\n", data, x, y); + } + else + { + LOG("HD44102 Address X %u Y %u (%02x)\n", data, x, y); - m_x = x; - m_y = y; - } + m_x = x; + m_y = y; + } } } } diff --git a/src/devices/video/hd44102.h b/src/devices/video/hd44102.h index 7aa19f2a8ea..c9746d417ec 100644 --- a/src/devices/video/hd44102.h +++ b/src/devices/video/hd44102.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_VIDEO_HD44102_H +#define MAME_VIDEO_HD44102_H -#ifndef __HD44102__ -#define __HD44102__ +#pragma once @@ -78,8 +78,6 @@ private: // device type definition -extern const device_type HD44102; - - +DECLARE_DEVICE_TYPE(HD44102, hd44102_device) -#endif +#endif // MAME_VIDEO_HD44102_H diff --git a/src/devices/video/hd44352.cpp b/src/devices/video/hd44352.cpp index 55eef9b31a2..7fa4b53f1d0 100644 --- a/src/devices/video/hd44352.cpp +++ b/src/devices/video/hd44352.cpp @@ -24,7 +24,7 @@ // devices -const device_type HD44352 = device_creator; +DEFINE_DEVICE_TYPE(HD44352, hd44352_device, "hd44352", "Hitachi HD44352 LCD Controller") //************************************************************************** // live device @@ -35,7 +35,7 @@ const device_type HD44352 = device_creator; //------------------------------------------------- hd44352_device::hd44352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock): - device_t(mconfig, HD44352, "hd44352", tag, owner, clock, "hd44352", __FILE__), + device_t(mconfig, HD44352, tag, owner, clock), m_on_cb(*this), m_char_rom(*this, DEVICE_SELF) { diff --git a/src/devices/video/hd44352.h b/src/devices/video/hd44352.h index f5546f93e91..a7dff37b904 100644 --- a/src/devices/video/hd44352.h +++ b/src/devices/video/hd44352.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_HD44352_H +#define MAME_VIDEO_HD44352_H -#ifndef __hd44352_H__ -#define __hd44352_H__ +#pragma once #define MCFG_HD44352_ON_CB(_devcb) \ @@ -22,14 +22,13 @@ // ======================> hd44352_device -class hd44352_device : - public device_t +class hd44352_device : public device_t { public: // construction/destruction hd44352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_on_callback(device_t &device, _Object object) { return downcast(device).m_on_cb.set_callback(object); } + template static devcb_base &set_on_callback(device_t &device, Object &&cb) { return downcast(device).m_on_cb.set_callback(std::forward(cb)); } // device interface uint8_t data_read(); @@ -77,6 +76,6 @@ private: }; // device type definition -extern const device_type HD44352; +DECLARE_DEVICE_TYPE(HD44352, hd44352_device) -#endif +#endif // MAME_VIDEO_HD44352_H diff --git a/src/devices/video/hd44780.cpp b/src/devices/video/hd44780.cpp index 5b40d9d14a9..8f3451352ab 100644 --- a/src/devices/video/hd44780.cpp +++ b/src/devices/video/hd44780.cpp @@ -13,14 +13,16 @@ #include "emu.h" #include "video/hd44780.h" -#define LOG 0 +//#define VERBOSE 1 +#include "logmacro.h" + //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** -const device_type HD44780 = device_creator; -const device_type KS0066_F05 = device_creator; +DEFINE_DEVICE_TYPE(HD44780, hd44780_device, "hd44780_a00", "Hitachi HD44780 A00 LCD Controller") +DEFINE_DEVICE_TYPE(KS0066_F05, ks0066_f05_device, "ks0066_f05", "Samsung KS0066 F05 LCD Controller") //------------------------------------------------- @@ -46,20 +48,20 @@ ROM_END //------------------------------------------------- hd44780_device::hd44780_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : hd44780_device(mconfig, HD44780, "HD44780 A00", tag, owner, clock, "hd44780_a00", __FILE__) + : hd44780_device(mconfig, HD44780, tag, owner, clock) { set_charset_type(CHARSET_HD44780_A00); } -hd44780_device::hd44780_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +hd44780_device::hd44780_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , m_cgrom(nullptr) , m_cgrom_region(*this, DEVICE_SELF) { } ks0066_f05_device::ks0066_f05_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - hd44780_device(mconfig, KS0066_F05, "KS0066 F05", tag, owner, clock, "ks0066_f05", __FILE__) + hd44780_device(mconfig, KS0066_F05, tag, owner, clock) { set_charset_type(CHARSET_KS0066_F05); } @@ -392,7 +394,7 @@ WRITE8_MEMBER(hd44780_device::control_write) correct_ac(); set_busy_flag(37); - if (LOG) logerror("HD44780 '%s': set DDRAM address %x\n", tag(), m_ac); + LOG("HD44780: set DDRAM address %x\n", m_ac); return; } else if (BIT(m_ir, 6)) @@ -402,7 +404,7 @@ WRITE8_MEMBER(hd44780_device::control_write) m_ac = m_ir & 0x3f; set_busy_flag(37); - if (LOG) logerror("HD44780 '%s': set CGRAM address %x\n", tag(), m_ac); + LOG("HD44780: set CGRAM address %x\n", m_ac); return; } else if (BIT(m_ir, 5)) @@ -420,7 +422,7 @@ WRITE8_MEMBER(hd44780_device::control_write) correct_ac(); set_busy_flag(37); - if (LOG) logerror("HD44780 '%s': char size 5x%d, data len %d, lines %d\n", tag(), m_char_size, m_data_len, m_num_line); + LOG("HD44780: char size 5x%d, data len %d, lines %d\n", m_char_size, m_data_len, m_num_line); return; } else if (BIT(m_ir, 4)) @@ -428,7 +430,7 @@ WRITE8_MEMBER(hd44780_device::control_write) // cursor or display shift int direction = (BIT(m_ir, 2)) ? +1 : -1; - if (LOG) logerror("HD44780 '%s': %s shift %d\n", tag(), BIT(m_ir, 3) ? "display" : "cursor", direction); + LOG("HD44780: %s shift %d\n", BIT(m_ir, 3) ? "display" : "cursor", direction); if (BIT(m_ir, 3)) shift_display(direction); @@ -445,7 +447,7 @@ WRITE8_MEMBER(hd44780_device::control_write) m_blink_on = BIT(m_ir, 0); set_busy_flag(37); - if (LOG) logerror("HD44780 '%s': display %d, cursor %d, blink %d\n", tag(), m_display_on, m_cursor_on, m_blink_on); + LOG("HD44780: display %d, cursor %d, blink %d\n", m_display_on, m_cursor_on, m_blink_on); } else if (BIT(m_ir, 2)) { @@ -454,12 +456,12 @@ WRITE8_MEMBER(hd44780_device::control_write) m_shift_on = BIT(m_ir, 0); set_busy_flag(37); - if (LOG) logerror("HD44780 '%s': entry mode set: direction %d, shift %d\n", tag(), m_direction, m_shift_on); + LOG("HD44780: entry mode set: direction %d, shift %d\n", m_direction, m_shift_on); } else if (BIT(m_ir, 1)) { // return home - if (LOG) logerror("HD44780 '%s': return home\n", tag()); + LOG("HD44780: return home\n"); m_ac = 0; m_active_ram = DDRAM; @@ -470,7 +472,7 @@ WRITE8_MEMBER(hd44780_device::control_write) else if (BIT(m_ir, 0)) { // clear display - if (LOG) logerror("HD44780 '%s': clear display\n", tag()); + LOG("HD44780: clear display\n"); m_ac = 0; m_active_ram = DDRAM; @@ -505,7 +507,7 @@ WRITE8_MEMBER(hd44780_device::data_write) { if (m_busy_flag) { - logerror("HD44780 '%s': Ignoring data write %02x due of busy flag\n", tag(), data); + logerror("HD44780: Ignoring data write %02x due of busy flag\n", data); return; } @@ -528,7 +530,7 @@ WRITE8_MEMBER(hd44780_device::data_write) m_dr = data; } - if (LOG) logerror("HD44780 '%s': %sRAM write %x %x '%c'\n", tag(), m_active_ram == DDRAM ? "DD" : "CG", m_ac, m_dr, isprint(m_dr) ? m_dr : '.'); + LOG("HD44780: %sRAM write %x %x '%c'\n", m_active_ram == DDRAM ? "DD" : "CG", m_ac, m_dr, isprint(m_dr) ? m_dr : '.'); if (m_active_ram == DDRAM) m_ddram[m_ac] = m_dr; @@ -545,7 +547,7 @@ READ8_MEMBER(hd44780_device::data_read) { uint8_t data = (m_active_ram == DDRAM) ? m_ddram[m_ac] : m_cgram[m_ac]; - if (LOG) logerror("HD44780 '%s': %sRAM read %x %c\n", tag(), m_active_ram == DDRAM ? "DD" : "CG", m_ac, data); + LOG("HD44780: %sRAM read %x %c\n", m_active_ram == DDRAM ? "DD" : "CG", m_ac, data); if (m_data_len == 4) { diff --git a/src/devices/video/hd44780.h b/src/devices/video/hd44780.h index bb62a27d1d8..f56f286ce13 100644 --- a/src/devices/video/hd44780.h +++ b/src/devices/video/hd44780.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_HD44780_H +#define MAME_VIDEO_HD44780_H -#ifndef __HD44780_H__ -#define __HD44780_H__ +#pragma once #define MCFG_HD44780_ADD( _tag ) \ @@ -22,28 +22,28 @@ hd44780_device::static_set_lcd_size(*device, _lines, _chars); #define MCFG_HD44780_PIXEL_UPDATE_CB(_class, _method) \ - hd44780_device::static_set_pixel_update_cb(*device, hd44780_pixel_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + hd44780_device::static_set_pixel_update_cb(*device, hd44780_device::pixel_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate hd44780_pixel_update_delegate; #define HD44780_PIXEL_UPDATE(name) void name(bitmap_ind16 &bitmap, uint8_t line, uint8_t pos, uint8_t y, uint8_t x, int state) // ======================> hd44780_device -class hd44780_device : public device_t +class hd44780_device : public device_t { public: + typedef device_delegate pixel_update_delegate; + // construction/destruction hd44780_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - hd44780_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); // static configuration helpers static void static_set_lcd_size(device_t &device, int _lines, int _chars) { hd44780_device &dev=downcast(device); dev.m_lines = _lines; dev.m_chars = _chars; } - static void static_set_pixel_update_cb(device_t &device, hd44780_pixel_update_delegate callback) { downcast(device).m_pixel_update_cb = callback; } + static void static_set_pixel_update_cb(device_t &device, pixel_update_delegate &&cb) { downcast(device).m_pixel_update_cb = std::move(cb); } // device interface virtual DECLARE_WRITE8_MEMBER(write); @@ -57,6 +57,8 @@ public: virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); protected: + hd44780_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -92,15 +94,15 @@ private: void pixel_update(bitmap_ind16 &bitmap, uint8_t line, uint8_t pos, uint8_t y, uint8_t x, int state); // internal state - static const device_timer_id TIMER_BUSY = 0; - static const device_timer_id TIMER_BLINKING = 1; + static constexpr device_timer_id TIMER_BUSY = 0; + static constexpr device_timer_id TIMER_BLINKING = 1; emu_timer * m_blink_timer; emu_timer * m_busy_timer; uint8_t m_lines; // number of lines uint8_t m_chars; // chars for line - hd44780_pixel_update_delegate m_pixel_update_cb; // pixel update callback + pixel_update_delegate m_pixel_update_cb; // pixel update callback bool m_busy_flag; // busy flag uint8_t m_ddram[0x80]; // internal display data RAM @@ -141,7 +143,7 @@ public: }; // device type definition -extern const device_type HD44780; -extern const device_type KS0066_F05; +DECLARE_DEVICE_TYPE(HD44780, hd44780_device) +DECLARE_DEVICE_TYPE(KS0066_F05, ks0066_f05_device) -#endif +#endif // MAME_VIDEO_HD44780_H diff --git a/src/devices/video/hd61830.cpp b/src/devices/video/hd61830.cpp index 21fb8f66513..f235b1b3d12 100644 --- a/src/devices/video/hd61830.cpp +++ b/src/devices/video/hd61830.cpp @@ -11,13 +11,16 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" + //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** -const device_type HD61830 = device_creator; +DEFINE_DEVICE_TYPE(HD61830, hd61830_device, "hd61830", "Hitachi HD61830B LCD Controller") const device_type HD61830B = HD61830; @@ -49,44 +52,17 @@ const tiny_rom_entry *hd61830_device::device_rom_region() const // MACROS / CONSTANTS //************************************************************************** -#define LOG 0 - -static const int CYCLES[] = +static constexpr int CYCLES[] = { 4, 4, 4, 4, 4, -1, -1, -1, 4, 4, 4, 4, 6, 6, 36, 36 }; -const int MODE_EXTERNAL_CG = 0x01; -const int MODE_GRAPHIC = 0x02; -const int MODE_CURSOR = 0x04; -const int MODE_BLINK = 0x08; -const int MODE_MASTER = 0x10; -const int MODE_DISPLAY_ON = 0x20; - - - -//************************************************************************** -// INLINE HELPERS -//************************************************************************** - -//------------------------------------------------- -// readbyte - read a byte at the given address -//------------------------------------------------- - -inline uint8_t hd61830_device::readbyte(offs_t address) -{ - return space().read_byte(address); -} - - -//------------------------------------------------- -// writebyte - write a byte at the given address -//------------------------------------------------- - -inline void hd61830_device::writebyte(offs_t address, uint8_t data) -{ - space().write_byte(address, data); -} +static constexpr int MODE_EXTERNAL_CG = 0x01; +static constexpr int MODE_GRAPHIC = 0x02; +static constexpr int MODE_CURSOR = 0x04; +static constexpr int MODE_BLINK = 0x08; +static constexpr int MODE_MASTER = 0x10; +static constexpr int MODE_DISPLAY_ON = 0x20; @@ -99,7 +75,7 @@ inline void hd61830_device::writebyte(offs_t address, uint8_t data) //------------------------------------------------- hd61830_device::hd61830_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, HD61830, "HD61830 LCDC", tag, owner, clock, "hd61830", __FILE__), + device_t(mconfig, HD61830, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_read_rd(*this), @@ -199,7 +175,7 @@ void hd61830_device::set_busy_flag() READ8_MEMBER( hd61830_device::status_r ) { - if (LOG) logerror("HD61830 '%s' Status Read: %s\n", tag(), m_bf ? "busy" : "ready"); + LOG("HD61830 Status Read: %s\n", m_bf ? "busy" : "ready"); return m_bf ? 0x80 : 0; } @@ -223,7 +199,7 @@ READ8_MEMBER( hd61830_device::data_r ) { uint8_t data = m_dor; - if (LOG) logerror("HD61830 '%s' Display Data Read %02x\n", tag(), m_dor); + LOG("HD61830 Display Data Read %02x\n", m_dor); m_dor = readbyte(m_cac); @@ -241,7 +217,7 @@ WRITE8_MEMBER( hd61830_device::data_w ) { if (m_bf) { - logerror("HD61830 '%s' Ignoring data write %02x due to business\n", tag(), data); + logerror("HD61830 Ignoring data write %02x due to business\n", data); return; } @@ -250,53 +226,50 @@ WRITE8_MEMBER( hd61830_device::data_w ) case INSTRUCTION_MODE_CONTROL: m_mcr = data; - if (LOG) - { - logerror("HD61830 '%s' %s CG\n", tag(), (data & MODE_EXTERNAL_CG) ? "External" : "Internal"); - logerror("HD61830 '%s' %s Display Mode\n", tag(), (data & MODE_GRAPHIC) ? "Graphic" : "Character"); - logerror("HD61830 '%s' %s Mode\n", tag(), (data & MODE_MASTER) ? "Master" : "Slave"); - logerror("HD61830 '%s' Cursor %s\n", tag(), (data & MODE_CURSOR) ? "On" : "Off"); - logerror("HD61830 '%s' Blink %s\n", tag(), (data & MODE_BLINK) ? "On" : "Off"); - logerror("HD61830 '%s' Display %s\n", tag(), (data & MODE_DISPLAY_ON) ? "On" : "Off"); - } + LOG("HD61830 %s CG\n", (data & MODE_EXTERNAL_CG) ? "External" : "Internal"); + LOG("HD61830 %s Display Mode\n", (data & MODE_GRAPHIC) ? "Graphic" : "Character"); + LOG("HD61830 %s Mode\n", (data & MODE_MASTER) ? "Master" : "Slave"); + LOG("HD61830 Cursor %s\n", (data & MODE_CURSOR) ? "On" : "Off"); + LOG("HD61830 Blink %s\n", (data & MODE_BLINK) ? "On" : "Off"); + LOG("HD61830 Display %s\n", (data & MODE_DISPLAY_ON) ? "On" : "Off"); break; case INSTRUCTION_CHARACTER_PITCH: m_hp = (data & 0x07) + 1; m_vp = (data >> 4) + 1; - if (LOG) logerror("HD61830 '%s' Horizontal Character Pitch: %u\n", tag(), m_hp); - if (LOG) logerror("HD61830 '%s' Vertical Character Pitch: %u\n", tag(), m_vp); + LOG("HD61830 Horizontal Character Pitch: %u\n", m_hp); + LOG("HD61830 Vertical Character Pitch: %u\n", m_vp); break; case INSTRUCTION_NUMBER_OF_CHARACTERS: m_hn = (data & 0x7f) + 1; - if (LOG) logerror("HD61830 '%s' Number of Characters: %u\n", tag(), m_hn); + LOG("HD61830 Number of Characters: %u\n", m_hn); break; case INSTRUCTION_NUMBER_OF_TIME_DIVISIONS: m_nx = (data & 0x7f) + 1; - if (LOG) logerror("HD61830 '%s' Number of Time Divisions: %u\n", tag(), m_nx); + LOG("HD61830 Number of Time Divisions: %u\n", m_nx); break; case INSTRUCTION_CURSOR_POSITION: m_cp = (data & 0x7f) + 1; - if (LOG) logerror("HD61830 '%s' Cursor Position: %u\n", tag(), m_cp); + LOG("HD61830 Cursor Position: %u\n", m_cp); break; case INSTRUCTION_DISPLAY_START_LOW: m_dsa = (m_dsa & 0xff00) | data; - if (LOG) logerror("HD61830 '%s' Display Start Address Low %04x\n", tag(), m_dsa); + LOG("HD61830 Display Start Address Low %04x\n", m_dsa); break; case INSTRUCTION_DISPLAY_START_HIGH: m_dsa = (data << 8) | (m_dsa & 0xff); - if (LOG) logerror("HD61830 '%s' Display Start Address High %04x\n", tag(), m_dsa); + LOG("HD61830 Display Start Address High %04x\n", m_dsa); break; case INSTRUCTION_CURSOR_ADDRESS_LOW: @@ -309,19 +282,19 @@ WRITE8_MEMBER( hd61830_device::data_w ) m_cac = (m_cac & 0xff00) | data; } - if (LOG) logerror("HD61830 '%s' Cursor Address Low %02x: %04x\n", tag(), data, m_cac); + LOG("HD61830 Cursor Address Low %02x: %04x\n", data, m_cac); break; case INSTRUCTION_CURSOR_ADDRESS_HIGH: m_cac = (data << 8) | (m_cac & 0xff); - if (LOG) logerror("HD61830 '%s' Cursor Address High %02x: %04x\n", tag(), data, m_cac); + LOG("HD61830 Cursor Address High %02x: %04x\n", data, m_cac); break; case INSTRUCTION_DISPLAY_DATA_WRITE: writebyte(m_cac, data); - if (LOG) logerror("HD61830 '%s' Display Data Write %02x -> %04x row %u col %u\n", tag(), data, m_cac, m_cac / 40, m_cac % 40); + LOG("HD61830 Display Data Write %02x -> %04x row %u col %u\n", data, m_cac, m_cac / 40, m_cac % 40); m_cac++; break; @@ -333,7 +306,7 @@ WRITE8_MEMBER( hd61830_device::data_w ) md &= ~(1 << bit); - if (LOG) logerror("HD61830 '%s' Clear Bit %u at %04x\n", tag(), bit + 1, m_cac); + LOG("HD61830 Clear Bit %u at %04x\n", bit + 1, m_cac); writebyte(m_cac, md); @@ -348,7 +321,7 @@ WRITE8_MEMBER( hd61830_device::data_w ) md |= 1 << bit; - if (LOG) logerror("HD61830 '%s' Set Bit %u at %04x\n", tag(), bit + 1, m_cac); + LOG("HD61830 Set Bit %u at %04x\n", bit + 1, m_cac); writebyte(m_cac, md); @@ -357,7 +330,7 @@ WRITE8_MEMBER( hd61830_device::data_w ) break; default: - logerror("HD61830 '%s' Illegal Instruction %02x!\n", tag(), m_ir); + logerror("HD61830 Illegal Instruction %02x!\n", m_ir); return; } diff --git a/src/devices/video/hd61830.h b/src/devices/video/hd61830.h index 05f2ac1b3a2..e454ec79a97 100644 --- a/src/devices/video/hd61830.h +++ b/src/devices/video/hd61830.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_VIDEO_HD61830_H +#define MAME_VIDEO_HD61830_H -#ifndef __HD61830__ -#define __HD61830__ +#pragma once @@ -37,7 +37,7 @@ public: // construction/destruction hd61830_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_rd_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_rd.set_callback(object); } + template static devcb_base &set_rd_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_rd.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( status_r ); DECLARE_WRITE8_MEMBER( control_w ); @@ -55,10 +55,10 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; - inline uint8_t readbyte(offs_t address); - inline void writebyte(offs_t address, uint8_t data); + uint8_t readbyte(offs_t address) { return space().read_byte(address); } + void writebyte(offs_t address, uint8_t data) { space().write_byte(address, data); } private: enum @@ -116,9 +116,7 @@ private: // device type definition -extern const device_type HD61830; +DECLARE_DEVICE_TYPE(HD61830, hd61830_device) extern const device_type HD61830B; - - -#endif +#endif // MAME_VIDEO_HD61830_H diff --git a/src/devices/video/hd63484.cpp b/src/devices/video/hd63484.cpp index 06f7a1dc20c..0345362ebd6 100644 --- a/src/devices/video/hd63484.cpp +++ b/src/devices/video/hd63484.cpp @@ -25,7 +25,7 @@ //------------------------------------------------- hd63484_device::hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HD63484, "HD63484 CRTC", tag, owner, clock, "hd63484", __FILE__), + : device_t(mconfig, HD63484, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_auto_configure_screen(true), @@ -331,7 +331,7 @@ enum -------------------------------------------------*/ // devices -const device_type HD63484 = device_creator; +DEFINE_DEVICE_TYPE(HD63484, hd63484_device, "hd63484", "Hitachi HD63484 ACRTC") ROM_START( hd63484 ) diff --git a/src/devices/video/hd63484.h b/src/devices/video/hd63484.h index 83e2bbcb232..0bdb703f388 100644 --- a/src/devices/video/hd63484.h +++ b/src/devices/video/hd63484.h @@ -7,15 +7,11 @@ **************************************************************************/ -#pragma once - -#ifndef __HD63484__ -#define __HD63484__ - - +#ifndef MAME_VIDEO_HD63484_H +#define MAME_VIDEO_HD63484_H +#pragma once -typedef device_delegate hd63484_display_delegate; /*************************************************************************** @@ -30,7 +26,7 @@ typedef device_delegate(owner))); + hd63484_device::static_set_display_callback(*device, hd63484_device::display_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_HD63484_AUTO_CONFIGURE_SCREEN(_val) \ hd63484_device::static_set_auto_configure_screen(*device, _val); @@ -40,15 +36,17 @@ typedef device_delegate hd63484_device -class hd63484_device : public device_t, +class hd63484_device : public device_t, public device_memory_interface, public device_video_interface { public: + typedef device_delegate display_delegate; + // construction/destruction hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_display_callback(device_t &device, hd63484_display_delegate callback) { downcast(device).m_display_cb = callback; } + static void static_set_display_callback(device_t &device, display_delegate &&cb) { downcast(device).m_display_cb = std::move(cb); } static void static_set_auto_configure_screen(device_t &device, bool auto_configure_screen) { downcast(device).m_auto_configure_screen = auto_configure_screen; } DECLARE_WRITE16_MEMBER( address_w ); @@ -115,7 +113,7 @@ private: void register_save_state(); - hd63484_display_delegate m_display_cb; + display_delegate m_display_cb; bool m_auto_configure_screen; uint8_t m_ar; @@ -188,6 +186,6 @@ private: }; // device type definition -extern const device_type HD63484; +DECLARE_DEVICE_TYPE(HD63484, hd63484_device) -#endif /* __HD63484_H__ */ +#endif // MAME_VIDEO_HD63484_H diff --git a/src/devices/video/hd66421.cpp b/src/devices/video/hd66421.cpp index a19dc11c750..a6c834d5db0 100644 --- a/src/devices/video/hd66421.cpp +++ b/src/devices/video/hd66421.cpp @@ -11,14 +11,17 @@ #include "emu.h" #include "hd66421.h" + //************************************************************************** // MACROS / CONSTANTS //************************************************************************** +//#define HD66421_BRIGHTNESS_DOES_NOT_WORK + #define LOG_LEVEL 1 #define _logerror(level,x) do { if (LOG_LEVEL > level) logerror x; } while (0) -#define HD66421_RAM_SIZE (HD66421_WIDTH * HD66421_HEIGHT / 4) // 2-bits per pixel +#define HD66421_RAM_SIZE (hd66421_device::WIDTH * hd66421_device::HEIGHT / 4) // 2-bits per pixel // R0 - control register 1 #define LCD_R0_RMW 0x80 // read-modify-write mode @@ -65,7 +68,7 @@ //************************************************************************** // devices -const device_type HD66421 = device_creator; +DEFINE_DEVICE_TYPE(HD66421, hd66421_device, "hd66421", "Hitachi HD66421 LCD Controller") // default address map @@ -117,7 +120,7 @@ inline void hd66421_device::writebyte(offs_t address, uint8_t data) //------------------------------------------------- hd66421_device::hd66421_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HD66421, "Hitachi HD66421 LCD Controller", tag, owner, clock, "hd66421", __FILE__), + : device_t(mconfig, HD66421, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, nullptr, *ADDRESS_MAP_NAME(hd66421)), m_cmd(0), @@ -181,20 +184,20 @@ WRITE8_MEMBER( hd66421_device::reg_dat_w ) case LCD_REG_RAM : { uint8_t r1; - writebyte(m_y * (HD66421_WIDTH / 4) + m_x, data); + writebyte(m_y * (WIDTH / 4) + m_x, data); r1 = m_reg[LCD_REG_CONTROL_2]; if (r1 & 0x02) m_x++; else m_y++; - if (m_x >= (HD66421_WIDTH / 4)) + if (m_x >= (WIDTH / 4)) { m_x = 0; m_y++; } - if (m_y >= HD66421_HEIGHT) + if (m_y >= HEIGHT) m_y = 0; } break; @@ -222,11 +225,11 @@ uint32_t hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitm if (temp > 31) temp = 31; bright = 1.0 * temp / 31; pen[i] = i; - #ifdef HD66421_BRIGHTNESS_DOES_NOT_WORK +#ifdef HD66421_BRIGHTNESS_DOES_NOT_WORK m_palette->set_pen_color(pen[i], 255 * bright, 255 * bright, 255 * bright); - #else +#else m_palette->set_pen_contrast(pen[i], bright); - #endif +#endif } // draw bitmap (bottom to top) @@ -234,7 +237,7 @@ uint32_t hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitm { int x, y; x = 0; - y = HD66421_HEIGHT - 1; + y = HEIGHT - 1; for (int i = 0; i < HD66421_RAM_SIZE; i++) { @@ -242,7 +245,7 @@ uint32_t hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitm plot_pixel(bitmap, x++, y, pen[(readbyte(i) >> 4) & 3]); plot_pixel(bitmap, x++, y, pen[(readbyte(i) >> 2) & 3]); plot_pixel(bitmap, x++, y, pen[(readbyte(i) >> 0) & 3]); - if (x >= HD66421_WIDTH) + if (x >= WIDTH) { x = 0; y = y - 1; @@ -251,7 +254,7 @@ uint32_t hd66421_device::update_screen(screen_device &screen, bitmap_ind16 &bitm } else { - rectangle rect(0, HD66421_WIDTH - 1, 0, HD66421_HEIGHT - 1); + rectangle rect(0, WIDTH - 1, 0, HEIGHT - 1); bitmap.fill(m_palette->white_pen(), rect); } diff --git a/src/devices/video/hd66421.h b/src/devices/video/hd66421.h index d7a00d91107..3be6de49536 100644 --- a/src/devices/video/hd66421.h +++ b/src/devices/video/hd66421.h @@ -8,23 +8,11 @@ ***************************************************************************/ -#pragma once - -#ifndef __HD66421_H__ -#define __HD66421_H__ - - -///************************************************************************* -// MACROS / CONSTANTS -///************************************************************************* - -//#define HD66421_BRIGHTNESS_DOES_NOT_WORK - -#define HD66421_WIDTH 160 -#define HD66421_HEIGHT 100 +#ifndef MAME_VIDEO_HD66421_H +#define MAME_VIDEO_HD66421_H +#pragma once -/*----------- defined in video/hd66421.c -----------*/ ///************************************************************************* // INTERFACE CONFIGURATION MACROS @@ -43,6 +31,9 @@ class hd66421_device : public device_t, public device_memory_interface { public: + static constexpr unsigned WIDTH = 160; + static constexpr unsigned HEIGHT = 100; + // construction/destruction hd66421_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -78,7 +69,6 @@ private: // device type definition -extern const device_type HD66421; - +DECLARE_DEVICE_TYPE(HD66421, hd66421_device) -#endif +#endif // MAME_VIDEO_HD66421_H diff --git a/src/devices/video/hlcd0515.cpp b/src/devices/video/hlcd0515.cpp index 2f691eb839d..c930897d0bd 100644 --- a/src/devices/video/hlcd0515.cpp +++ b/src/devices/video/hlcd0515.cpp @@ -17,26 +17,27 @@ #include "video/hlcd0515.h" -const device_type HLCD0515 = device_creator; -const device_type HLCD0569 = device_creator; +DEFINE_DEVICE_TYPE(HLCD0515, hlcd0515_device, "hlcd0515", "Hughes HLCD 0515 LCD Driver") +DEFINE_DEVICE_TYPE(HLCD0569, hlcd0569_device, "hlcd0569", "Hughes HLCD 0569 LCD Driver") //------------------------------------------------- // constructor //------------------------------------------------- -hlcd0515_device::hlcd0515_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 colmax, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - m_colmax(colmax), m_write_cols(*this), m_write_data(*this) +hlcd0515_device::hlcd0515_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 colmax) + : device_t(mconfig, type, tag, owner, clock) + , m_colmax(colmax) + , m_write_cols(*this), m_write_data(*this) { } hlcd0515_device::hlcd0515_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : hlcd0515_device(mconfig, HLCD0515, "HLCD 0515 LCD Driver", tag, owner, clock, 25, "hlcd0515", __FILE__) + : hlcd0515_device(mconfig, HLCD0515, tag, owner, clock, 25) { } hlcd0569_device::hlcd0569_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : hlcd0515_device(mconfig, HLCD0569, "HLCD 0569 LCD Driver", tag, owner, clock, 24, "hlcd0569", __FILE__) + : hlcd0515_device(mconfig, HLCD0569, tag, owner, clock, 24) { } diff --git a/src/devices/video/hlcd0515.h b/src/devices/video/hlcd0515.h index 899ed199576..16a62d74756 100644 --- a/src/devices/video/hlcd0515.h +++ b/src/devices/video/hlcd0515.h @@ -6,18 +6,10 @@ */ -#ifndef _HLCD0515_H_ -#define _HLCD0515_H_ - - -// COL/ROW pins (offset for ROW) -#define MCFG_HLCD0515_WRITE_COLS_CB(_devcb) \ - devcb = &hlcd0515_device::set_write_cols_callback(*device, DEVCB_##_devcb); - -// DATA OUT pin, don't use on HLCD0569 -#define MCFG_HLCD0515_WRITE_DATA_CB(_devcb) \ - devcb = &hlcd0515_device::set_write_data_callback(*device, DEVCB_##_devcb); +#ifndef MAME_VIDEO_HLCD0515_H +#define MAME_VIDEO_HLCD0515_H +#pragma once // pinout reference @@ -50,21 +42,32 @@ Internally, this is divided by 2, and by number of rows to get display refresh frequency. */ + +// COL/ROW pins (offset for ROW) +#define MCFG_HLCD0515_WRITE_COLS_CB(_devcb) \ + devcb = &hlcd0515_device::set_write_cols_callback(*device, DEVCB_##_devcb); + +// DATA OUT pin, don't use on HLCD0569 +#define MCFG_HLCD0515_WRITE_DATA_CB(_devcb) \ + devcb = &hlcd0515_device::set_write_data_callback(*device, DEVCB_##_devcb); + + class hlcd0515_device : public device_t { public: hlcd0515_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - hlcd0515_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, u8 colmax, const char *shortname, const char *source); // static configuration helpers - template static devcb_base &set_write_cols_callback(device_t &device, Object &&object) { return downcast(device).m_write_cols.set_callback(std::forward(object)); } - template static devcb_base &set_write_data_callback(device_t &device, Object &&object) { return downcast(device).m_write_data.set_callback(std::forward(object)); } + template static devcb_base &set_write_cols_callback(device_t &device, Object &&cb) { return downcast(device).m_write_cols.set_callback(std::forward(cb)); } + template static devcb_base &set_write_data_callback(device_t &device, Object &&cb) { return downcast(device).m_write_data.set_callback(std::forward(cb)); } DECLARE_WRITE_LINE_MEMBER(write_clock); DECLARE_WRITE_LINE_MEMBER(write_cs); DECLARE_WRITE_LINE_MEMBER(write_data) { m_data = (state) ? 1 : 0; } protected: + hlcd0515_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 colmax); + // device-level overrides virtual void device_start() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; @@ -72,7 +75,7 @@ protected: virtual void set_control(); void clock_data(int col); - u8 m_colmax; // number of column pins + const u8 m_colmax; // number of column pins int m_cs; // input pin state int m_clock; // " @@ -104,9 +107,7 @@ protected: }; +DECLARE_DEVICE_TYPE(HLCD0515, hlcd0515_device) +DECLARE_DEVICE_TYPE(HLCD0569, hlcd0569_device) -extern const device_type HLCD0515; -extern const device_type HLCD0569; - - -#endif /* _HLCD0515_H_ */ +#endif // MAME_VIDEO_HLCD0515_H diff --git a/src/devices/video/hlcd0538.cpp b/src/devices/video/hlcd0538.cpp index 884b2afb6e2..c409e6be528 100644 --- a/src/devices/video/hlcd0538.cpp +++ b/src/devices/video/hlcd0538.cpp @@ -16,26 +16,26 @@ #include "video/hlcd0538.h" -const device_type HLCD0538 = device_creator; -const device_type HLCD0539 = device_creator; +DEFINE_DEVICE_TYPE(HLCD0538, hlcd0538_device, "hlcd0538", "Hughes HLCD 0538 LCD Driver") +DEFINE_DEVICE_TYPE(HLCD0539, hlcd0539_device, "hlcd0539", "Hughes HLCD 0539 LCD Driver") //------------------------------------------------- // constructor //------------------------------------------------- -hlcd0538_device::hlcd0538_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - m_write_cols(*this), m_write_interrupt(*this) +hlcd0538_device::hlcd0538_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, type, tag, owner, clock) + , m_write_cols(*this), m_write_interrupt(*this) { } hlcd0538_device::hlcd0538_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : hlcd0538_device(mconfig, HLCD0538, "HLCD 0538 LCD Driver", tag, owner, clock, "hlcd0538", __FILE__) + : hlcd0538_device(mconfig, HLCD0538, tag, owner, clock) { } hlcd0539_device::hlcd0539_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : hlcd0538_device(mconfig, HLCD0539, "HLCD 0539 LCD Driver", tag, owner, clock, "hlcd0539", __FILE__) + : hlcd0538_device(mconfig, HLCD0539, tag, owner, clock) { } @@ -73,18 +73,18 @@ void hlcd0538_device::device_start() WRITE_LINE_MEMBER(hlcd0538_device::write_clk) { state = (state) ? 1 : 0; - + // clock in data on falling edge if (!state && m_clk) m_shift = (m_shift << 1 | m_data) & u64(0x3ffffffff); - + m_clk = state; } WRITE_LINE_MEMBER(hlcd0538_device::write_lcd) { state = (state) ? 1 : 0; - + // transfer to latches on rising edge if (state && !m_lcd) { @@ -93,7 +93,7 @@ WRITE_LINE_MEMBER(hlcd0538_device::write_lcd) } m_lcd = state; - + // interrupt output follows lcd input m_write_interrupt(state); } diff --git a/src/devices/video/hlcd0538.h b/src/devices/video/hlcd0538.h index 3d49460b80a..8bdbb4a83f1 100644 --- a/src/devices/video/hlcd0538.h +++ b/src/devices/video/hlcd0538.h @@ -6,18 +6,10 @@ */ -#ifndef _HLCD0538_H_ -#define _HLCD0538_H_ - - -// C/R pins (0538: d0-d7 for rows) -#define MCFG_HLCD0538_WRITE_COLS_CB(_devcb) \ - devcb = &hlcd0538_device::set_write_cols_callback(*device, DEVCB_##_devcb); - -// INTERRUPT pin -#define MCFG_HLCD0538_INTERRUPT_CB(_devcb) \ - devcb = &hlcd0538_device::set_write_interrupt_callback(*device, DEVCB_##_devcb); +#ifndef MAME_VIDEO_HLCD0538_H +#define MAME_VIDEO_HLCD0538_H +#pragma once // pinout reference @@ -47,21 +39,32 @@ HLCD 0539 has 8 more C pins(1-8) in place of R pins. */ + +// C/R pins (0538: d0-d7 for rows) +#define MCFG_HLCD0538_WRITE_COLS_CB(_devcb) \ + devcb = &hlcd0538_device::set_write_cols_callback(*device, DEVCB_##_devcb); + +// INTERRUPT pin +#define MCFG_HLCD0538_INTERRUPT_CB(_devcb) \ + devcb = &hlcd0538_device::set_write_interrupt_callback(*device, DEVCB_##_devcb); + + class hlcd0538_device : public device_t { public: hlcd0538_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - hlcd0538_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source); // static configuration helpers - template static devcb_base &set_write_cols_callback(device_t &device, Object &&object) { return downcast(device).m_write_cols.set_callback(std::forward(object)); } - template static devcb_base &set_write_interrupt_callback(device_t &device, Object &&object) { return downcast(device).m_write_interrupt.set_callback(std::forward(object)); } + template static devcb_base &set_write_cols_callback(device_t &device, Object &&cb) { return downcast(device).m_write_cols.set_callback(std::forward(cb)); } + template static devcb_base &set_write_interrupt_callback(device_t &device, Object &&cb) { return downcast(device).m_write_interrupt.set_callback(std::forward(cb)); } DECLARE_WRITE_LINE_MEMBER(write_clk); DECLARE_WRITE_LINE_MEMBER(write_lcd); DECLARE_WRITE_LINE_MEMBER(write_data) { m_data = (state) ? 1 : 0; } protected: + hlcd0538_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); + // device-level overrides virtual void device_start() override; @@ -84,8 +87,7 @@ public: -extern const device_type HLCD0538; -extern const device_type HLCD0539; - +DECLARE_DEVICE_TYPE(HLCD0538, hlcd0538_device) +DECLARE_DEVICE_TYPE(HLCD0539, hlcd0539_device) -#endif /* _HLCD0538_H_ */ +#endif // MAME_VIDEO_HLCD0538_H diff --git a/src/devices/video/hp1ll3.cpp b/src/devices/video/hp1ll3.cpp new file mode 100644 index 00000000000..21b6a2b4550 --- /dev/null +++ b/src/devices/video/hp1ll3.cpp @@ -0,0 +1,805 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +/* + HP 1LL3-0005 GPU emulation. + + Used by HP Integral PC, possibly other HP products. + + On IPC, memory is 4 16Kx4bit DRAM chips = 32KB total (16K words), + but firmware probes memory size and can work with 128KB memory. + Undocumented "_desktop" mode requires this. + + Capabilities: + - up to 1024x1024 px on screen + - lines + - rectangles + - area fill with user-defined pattern + - 16x16 user-defined proportional font, with automatic cursor + - 16x16 user-defined sprite for mouse cursor (not a sprite layer) + - windows with blitter (copy, fill and scroll) and clipping + + To do: + . proper cursor and mouse pointers [cursor can be offset from the pen location] + + variable width fonts [?? placed relative to current window] + + basic lines + - patterned lines + . bit blits & scroll + . meaning of WRRR bits + . meaning of CONF data [+ autoconfiguration] + - interrupt generation + - realistic timing? + - &c. +*/ + +#include "emu.h" +#include "hp1ll3.h" + +#include "screen.h" + + +///************************************************************************* +// MACROS / CONSTANTS +///************************************************************************* + +/* + * command types (send) + * + * 0 -- no data + * 1 -- write 1 word of data, then command + * 2 -- write 2 words of data, then command + * 3 -- write command, then 11 words of data (= CONF only?) + * 4 -- write 1 word of data, then command, then write X words of data, then write NOP + * + * (read) + * + * 3 -- ??? + * 4 -- write 1 word of data, then command, then read X words of data, then write NOP + */ +#define NOP 0 // type 0 +#define CONF 2 // type 3, configure GPU (screen size, timings...). 11 words of data. +#define DISVID 3 // type 0, disable video +#define ENVID 4 // type 0, enable video +#define WRMEM 7 // type 4, write GPU memory at offset, terminate by NOP +#define RDMEM 8 // type 4, read GPU memory from offset, terminate by NOP +#define WRSAD 9 // type 1, set screen area start address +#define WRORG 10 // type 1, set ??? +#define WRDAD 11 // type 1, set data area start address (16x16 area fill, sprite and cursor) +#define WRRR 12 // type 1, set replacement rule (rasterop) +#define MOVEP 13 // type 2, move pointer +#define IMOVEP 14 +#define DRAWP 15 // type 2, draw line +#define IDRAWP 16 +#define RDP 17 +#define WRUDL 18 // type 1, set user-defined line pattern (16-bit) +#define WRWINSIZ 19 // type 2, set ??? +#define WRWINORG 20 // type 2, set ??? +#define COPY 21 // type 2 +#define FILL 22 // type 1, fill area +#define FRAME 23 // type _, draw rectangle +#define SCROLUP 24 // type 2 +#define SCROLDN 25 // type 2 +#define SCROLLF 26 // type 2 +#define SCROLRT 27 // type 2 +#define RDWIN 28 // type 1 +#define WRWIN 29 // type 1 +#define RDWINPARM 30 +#define CR 31 +#define CRLFx 32 +#define LABEL 36 // type 1, draw text +#define ENSP 38 // type 0, enable sprite +#define DISSP 39 // type 0, disable sprite +#define MOVESP 40 // type 2, move sprite +#define IMOVESP 41 +#define RDSP 42 +#define DRAWPX 43 // type _, draw single pixel +#define WRFAD 44 // type 1, set font area start address +#define ENCURS 45 // type 0 +#define DISCURS 46 // type 0 +#define ID 63 + + +/* + * Replacement Rules (rops). sources: + * + * - NetBSD's diofbvar.h (definitions for Topcat chip) + * - pdf/hp/9000_300/specs/A-5958-4362-9_Series_300_Display_Color_Card_Theory_of_Operation_Oct85.pdf + * refers to TOPCAT documentation p/n A-1FH2-2001-7 (not online) + */ +#define RR_FORCE_ZERO 0x0 +#define RR_CLEAR RR_FORCE_ZERO +#define RR_AND 0x1 +#define RR_AND_NOT_OLD 0x2 +#define RR_NEW 0x3 +#define RR_COPY RR_NEW +#define RR_AND_NOT_NEW 0x4 +#define RR_OLD 0x5 +#define RR_XOR 0x6 +#define RR_OR 0x7 +#define RR_NOR 0x8 +#define RR_XNOR 0x9 +#define RR_NOT_OLD 0xa +#define RR_INVERT RR_NOT_OLD +#define RR_OR_NOT_OLD 0xb +#define RR_NOT_NEW 0xc +#define RR_COPYINVERTED RR_NOT_NEW +#define RR_OR_NOT_NEW 0xd +#define RR_NAND 0xe +#define RR_FORCE_ONE 0xf + +#define WS 16 // bits in a word + + +//************************************************************************** +// MACROS / CONSTANTS +//************************************************************************** + +#define VERBOSE_DBG 2 /* general debug messages */ + +#define DBG_LOG(N,M,A) \ + do { \ + if(VERBOSE_DBG>=N) \ + { \ + if( M ) \ + logerror("%11.6f at %s: %-16s",machine().time().as_double(),machine().describe_context(),(char*)M ); \ + logerror A; \ + } \ + } while (0) + + +#define HPGPU_VRAM_SIZE 16384 // *4 // experiment +#define HPGPU_HORZ_TOTAL 512 +#define HPGPU_VERT_TOTAL 256 + + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +// devices +DEFINE_DEVICE_TYPE(HP1LL3, hp1ll3_device, "hp1ll3", "Hewlett-Packard 1LL3-0005 GPU") + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// hp1ll3_device - constructor +//------------------------------------------------- + +hp1ll3_device::hp1ll3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, HP1LL3, tag, owner, clock) + , device_video_interface(mconfig, *this) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void hp1ll3_device::device_start() +{ + // register for state saving + save_item(NAME(m_conf)); + + machine().first_screen()->register_screen_bitmap(m_bitmap); + + m_cursor.allocate(16, 16); + m_sprite.allocate(16, 16); + + m_videoram = std::make_unique(HPGPU_VRAM_SIZE*2); // x2 size to make WRWIN/RDWIN easier +} + +void hp1ll3_device::device_reset() +{ + m_input_ptr = m_command = 0; + m_sad = m_fad = m_dad = m_org = m_rr = m_udl = 0; + m_enable_video = m_enable_cursor = m_enable_sprite = m_busy = false; +} + + +inline void hp1ll3_device::point(int x, int y, int px) +{ + uint16_t offset = m_sad; + + offset += y*(HPGPU_HORZ_TOTAL/16) + (x >> 4); + + if (px) + m_videoram[offset] |= (1 << (15-(x%16))); + else + m_videoram[offset] &= ~(1 << (15-(x%16))); +} + +// Bresenham algorithm -- from ef9365.cpp +void hp1ll3_device::line(int x1, int y1, int x2, int y2) +{ + int dx; + int dy,t; + int e; + int x,y; + int incy; + int diago,horiz; + unsigned char c1; + + c1=0; + incy=1; + + if(x2>x1) + dx = x2 - x1; + else + dx = x1 - x2; + + if(y2>y1) + dy = y2 - y1; + else + dy = y1 - y2; + + if( dy > dx ) + { + t = y2; + y2 = x2; + x2 = t; + + t = y1; + y1 = x1; + x1 = t; + + t = dx; + dx = dy; + dy = t; + + c1 = 1; + } + + if( x1 > x2 ) + { + t = y2; + y2 = y1; + y1 = t; + + t = x1; + x1 = x2; + x2 = t; + } + + horiz = dy<<1; + diago = ( dy - dx )<<1; + e = ( dy<<1 ) - dx; + + if( y1 <= y2 ) + incy = 1; + else + incy = -1; + + x = x1; + y = y1; + + if(c1) + { + do + { + point(y,x,m_udl); + + if( e > 0 ) + { + y = y + incy; + e = e + diago; + } + else + { + e = e + horiz; + } + + x++; + + } while( x <= x2 ); + } + else + { + do + { + point(x,y,m_udl); + + if( e > 0 ) + { + y = y + incy; + e = e + diago; + } + else + { + e = e + horiz; + } + + x++; + + } while( x <= x2 ); + } + + return; +} + +void hp1ll3_device::fill(int org_x, int org_y, int w, int h, int arg) +{ + uint16_t gfx, offset, mask, max_x = org_x + w; + + if (m_enable_cursor) bitblt(m_cursor_x, m_cursor_y, m_dad, 16, 16, RR_XOR); + if (m_enable_sprite) bitblt(m_sprite_x, m_sprite_y, m_dad + 16, 16, 16, RR_XOR); + + for (int y = org_y; y < org_y + h; y++) { + gfx = m_videoram[m_dad + (0x10 * arg) + y%16]; + if (m_rr == RR_COPYINVERTED) gfx ^= 0xffff; + for (int x = org_x; x < max_x;) { + mask = 0xffff; + offset = m_sad + m_org + y * (HPGPU_HORZ_TOTAL/16) + (x >> 4); + + if (offset >= m_sad + (HPGPU_VERT_TOTAL * HPGPU_HORZ_TOTAL/WS)) + DBG_LOG(0,"HPGPU",("buffer overflow in FILL: %04x (%d, %d)\n", offset, 16*x, y)); + + // clipping + if (x == org_x) { + mask >>= (org_x % WS); + x += (WS - (org_x % WS)); + } else { + if ((max_x - x) < WS) { + mask &= ~((1 << (WS - (max_x % WS))) - 1); + } + x += WS; + } + m_videoram[offset] &= ~mask; + m_videoram[offset] |= gfx & mask; + } + } + + if (m_enable_cursor) bitblt(m_cursor_x, m_cursor_y, m_dad, 16, 16, RR_XOR); + if (m_enable_sprite) bitblt(m_sprite_x, m_sprite_y, m_dad + 16, 16, 16, RR_XOR); +} + +// sprite drawing -- source is 16x16 px max, no window clipping +void hp1ll3_device::bitblt(int dstx, int dsty, uint16_t srcaddr, int width, int height, int op) +{ + uint16_t gfx, offset, mask; + int max_x, max_y; + + max_x = dstx + width; + if (max_x >= HPGPU_HORZ_TOTAL) + max_x = HPGPU_HORZ_TOTAL; + + max_y = dsty + height; + if (max_y >= HPGPU_VERT_TOTAL) + max_y = HPGPU_VERT_TOTAL; + + for (int y = dsty; y < max_y; y++) { + mask = 0xffff; + gfx = m_videoram[srcaddr + y - dsty] & mask; + offset = m_sad + y * (HPGPU_HORZ_TOTAL/16) + (dstx >> 4); + + if (offset >= m_sad + (HPGPU_VERT_TOTAL * HPGPU_HORZ_TOTAL/16)) + DBG_LOG(0,"HPGPU",("buffer overflow in bitblt: %04x (%d, %d)\n", offset, 16*dstx, y)); + + // are we crossing word boundary? + if (dstx % 16) { + if (op == RR_XOR) + { + m_videoram[offset ] ^= gfx >> (dstx % 16); + m_videoram[offset + 1] ^= gfx << (16 - (dstx % 16)); + } + } else { + if (op == RR_XOR) + { + m_videoram[offset] ^= (gfx & mask); + } + } + } +} + +void hp1ll3_device::label(uint8_t chr, int width) +{ + uint16_t x, gfx, bg = 0x3f, offset, font = m_fontdata + chr * 16; + int max_y = m_cursor_y + m_fontheight; + + if (max_y >= m_window.org_y + m_window.height) + max_y = m_window.org_y + m_window.height - 1 - m_cursor_y; + else + max_y -= m_cursor_y; + + if (m_enable_cursor) bitblt(m_cursor_x, m_cursor_y, m_dad, 16, 16, RR_XOR); + if (m_enable_sprite) bitblt(m_sprite_x, m_sprite_y, m_dad + 16, 16, 16, RR_XOR); + + for (int y = 0; y < max_y; y++) { + x = m_cursor_x; + offset = m_sad + (m_cursor_y + y) * (HPGPU_HORZ_TOTAL/16) + (x >> 4); + gfx = m_videoram[font + y] >> (16 - width); + + if (offset >= m_sad + (HPGPU_VERT_TOTAL * HPGPU_HORZ_TOTAL/16)) + DBG_LOG(0,"HPGPU",("buffer overflow in LABEL: %04x (%d, %d)\n", offset, 16*x, y)); + + // are we crossing word boundary? + if ((x % 16) > (16 - width)) { + if (m_rr == RR_COPYINVERTED) { + m_videoram[offset ] |= bg >> ((x % 16) - (16 - width)); + m_videoram[offset + 1] |= bg << (16 - ((x + width) % 16)); + } else { + m_videoram[offset ] &= ~(bg>> ((x % 16) - (16 - width))); + m_videoram[offset + 1] &= ~(bg<< (16 - ((x + width) % 16))); + } + m_videoram[offset ] ^= gfx >> ((x % 16) - (16 - width)); + m_videoram[offset + 1] ^= gfx << (16 - ((x + width) % 16)); + } else { + if (m_rr == RR_COPYINVERTED) { + m_videoram[offset ] |= bg << ((16 - width) - (x % 16)); + } else { + m_videoram[offset ] &= ~(bg<< ((16 - width) - (x % 16))); + } + m_videoram[offset ] ^= gfx << ((16 - width) - (x % 16)); + } + } + + m_cursor_x += width; + if (m_enable_cursor) bitblt(m_cursor_x, m_cursor_y, m_dad, 16, 16, RR_XOR); + if (m_enable_sprite) bitblt(m_sprite_x, m_sprite_y, m_dad + 16, 16, 16, RR_XOR); +} + + +uint32_t hp1ll3_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + int x, y, offset; + uint16_t gfx, *p; + + if (!m_enable_video) { + bitmap.fill(rgb_t::black()); + return 0; + } + + // XXX last line is not actually drawn on real hw + for (y = 0; y < HPGPU_VERT_TOTAL-1; y++) { + offset = m_sad + y*(HPGPU_HORZ_TOTAL/16); + p = &m_bitmap.pix16(y); + + for (x = offset; x < offset + HPGPU_HORZ_TOTAL/16; x++) + { + gfx = m_videoram[x]; + + *p++ = BIT(gfx, 15); + *p++ = BIT(gfx, 14); + *p++ = BIT(gfx, 13); + *p++ = BIT(gfx, 12); + *p++ = BIT(gfx, 11); + *p++ = BIT(gfx, 10); + *p++ = BIT(gfx, 9); + *p++ = BIT(gfx, 8); + *p++ = BIT(gfx, 7); + *p++ = BIT(gfx, 6); + *p++ = BIT(gfx, 5); + *p++ = BIT(gfx, 4); + *p++ = BIT(gfx, 3); + *p++ = BIT(gfx, 2); + *p++ = BIT(gfx, 1); + *p++ = BIT(gfx, 0); + } + } + + copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect); + + return 0; +} + +//------------------------------------------------- +// read - register read +//------------------------------------------------- + +/* + * offset 0: CSR + * + * bit 0 gpu is busy + * bit 1 data is ready + * bit 3 vert blank time + * bit 7 out of window + * + * offset 2: data + */ + +READ8_MEMBER( hp1ll3_device::read ) +{ + uint8_t data = 0; + + switch (offset) + { + case 0: + data = m_busy ? 1 : 0; + data |= 2; + data |= (m_screen->vblank() ? 8 : 0); + break; + + case 2: + switch (m_command) + { + case RDMEM: + if (m_memory_ptr < HPGPU_VRAM_SIZE*2) { + if (m_memory_ptr & 1) { + data = m_videoram[m_memory_ptr >> 1] & 0xff; + } else { + data = m_videoram[m_memory_ptr >> 1] >> 8; + } + m_memory_ptr++; + } + break; + } + } + + DBG_LOG(1,"HPGPU", ("R @ %d == %02x\n", offset, data)); + + return data; +} + + +//------------------------------------------------- +// write - register write +//------------------------------------------------- + +WRITE8_MEMBER( hp1ll3_device::write ) +{ + DBG_LOG(1,"HPGPU", ("W @ %d <- %02x\n", offset, data)); + + switch (offset) + { + case 0: + command(data); + break; + + case 2: + switch (m_command) + { + case CONF: + if (m_conf_ptr & 1) { + m_conf[m_conf_ptr >> 1] |= data; + } else { + m_conf[m_conf_ptr >> 1] = data << 8; + } + if (m_conf_ptr++ == 22) { + DBG_LOG(2,"HPGPU",("CONF data received: %04X %04X %04X %04X %04X %04X %04X %04X %04X %04X %04X\n", + m_conf[0], m_conf[1], m_conf[2], m_conf[3], + m_conf[4], m_conf[5], m_conf[6], m_conf[7], + m_conf[8], m_conf[9], m_conf[10])); + } + break; + + case WRMEM: + if (m_memory_ptr < HPGPU_VRAM_SIZE*2) { + if (m_memory_ptr & 1) { + m_videoram[m_memory_ptr >> 1] |= data; + } else { + m_videoram[m_memory_ptr >> 1] = data << 8; + } + m_memory_ptr++; + } + break; + + default: + switch (m_input_ptr) + { + case 0: + m_input[0] = data << 8; + break; + + case 1: + m_input[0] |= data; + break; + + case 2: + m_input[1] = data << 8; + break; + + case 3: + m_input[1] |= data; + break; + } + DBG_LOG(2,"HPGPU",("wrote %02x at %d, input buffer is %04X %04X\n", data, m_input_ptr, m_input[0], m_input[1])); + m_input_ptr++; + } + } +} + + +void hp1ll3_device::command(int command) +{ + int c, w; + + switch (command) + { + + // type 0 commands -- no data + + case NOP: + DBG_LOG(2,"HPGPU",("command: NOP [%d, 0x%x]\n", command, command)); + switch (m_command) + { + case RDMEM: + DBG_LOG(1,"HPGPU",("RDMEM of %d words at %04X complete\n", (m_memory_ptr >> 1) - m_input[0], m_input[0])); + break; + + case WRMEM: + DBG_LOG(1,"HPGPU",("WRMEM of %d words to %04X complete\n", (m_memory_ptr >> 1) - m_input[0], m_input[0])); + break; + } + break; + + case DISVID: + DBG_LOG(2,"HPGPU",("command: DISVID [%d, 0x%x]\n", command, command)); + m_enable_video = false; + break; + + case ENVID: + DBG_LOG(2,"HPGPU",("command: ENVID [%d, 0x%x]\n", command, command)); + DBG_LOG(1,"HPGPU",("enable video; SAD %04x FAD %04x DAD %04x ORG %04x UDL %04x RR %04x\n", + m_sad, m_fad, m_dad, m_org, m_udl, m_rr)); + m_enable_video = true; + break; + + case DISSP: + DBG_LOG(2,"HPGPU",("command: DISSP [%d, 0x%x]\n", command, command)); + if (m_enable_sprite) { + bitblt(m_sprite_x, m_sprite_y, m_dad + 16, 16, 16, RR_XOR); + m_enable_sprite = false; + } + break; + + case ENSP: + DBG_LOG(2,"HPGPU",("command: ENSP [%d, 0x%x]\n", command, command)); + if (m_enable_sprite) { + bitblt(m_sprite_x, m_sprite_y, m_dad + 16, 16, 16, RR_XOR); + } + bitblt(m_sprite_x, m_sprite_y, m_dad + 16, 16, 16, RR_XOR); + m_enable_sprite = true; + DBG_LOG(1,"HPGPU",("enable sprite; cursor %d,%d sprite %d,%d\n", m_cursor_x, m_cursor_y, m_sprite_x, m_sprite_y)); + break; + + case DISCURS: + DBG_LOG(2,"HPGPU",("command: DISCURS [%d, 0x%x]\n", command, command)); + if (m_enable_cursor) { + bitblt(m_cursor_x, m_cursor_y, m_dad, 16, 16, RR_XOR); + m_enable_cursor = false; + } + break; + + case ENCURS: + DBG_LOG(2,"HPGPU",("command: ENCURS [%d, 0x%x]\n", command, command)); + if (m_enable_cursor) { + bitblt(m_cursor_x, m_cursor_y, m_dad, 16, 16, RR_XOR); + } + bitblt(m_cursor_x, m_cursor_y, m_dad, 16, 16, RR_XOR); + m_enable_cursor = true; + DBG_LOG(1,"HPGPU",("enable cursor; cursor %d,%d sprite %d,%d\n", m_cursor_x, m_cursor_y, m_sprite_x, m_sprite_y)); + break; + + // type 1 commands -- 1 word of data expected in the buffer + + // start of screen memory + case WRSAD: + DBG_LOG(2,"HPGPU",("command: WRSAD [%d, 0x%x] (0x%04x)\n", command, command, m_input[0])); + m_sad = m_input[0]; + break; + + // start of font memory + case WRFAD: + DBG_LOG(2,"HPGPU",("command: WRFAD [%d, 0x%x] (0x%04x)\n", command, command, m_input[0])); + m_fad = m_input[0]; + m_fontheight = m_videoram[m_fad]; + m_fontdata = m_fad + m_videoram[m_fad + 1] + 2; + DBG_LOG(1,"HPGPU",("font data set: FAD %04X header %d bitmaps %04X height %d\n", + m_fad, m_videoram[m_fad + 1], m_fontdata, m_fontheight)); + break; + + // start of data area + case WRDAD: + DBG_LOG(2,"HPGPU",("command: WRDAD [%d, 0x%x] (0x%04x)\n", command, command, m_input[0])); + m_dad = m_input[0]; + break; + + // ?? + case WRORG: + DBG_LOG(2,"HPGPU",("command: WRORG [%d, 0x%x] (0x%04x)\n", command, command, m_input[0])); + m_org = m_input[0]; + break; + + // set replacement rule (raster op) + case WRRR: + DBG_LOG(2,"HPGPU",("command: WRRR [%d, 0x%x] (0x%04x)\n", command, command, m_input[0])); + m_rr = m_input[0]; + break; + + // set user-defined line pattern + case WRUDL: + DBG_LOG(2,"HPGPU",("command: WRUDL [%d, 0x%x] (0x%04x)\n", command, command, m_input[0])); + m_udl = m_input[0]; + break; + + // area fill + case FILL: + DBG_LOG(2,"HPGPU",("command: FILL [%d, 0x%x] (0x%04x) from (%d,%d) size (%d,%d) rop 0x%x\n", + command, command, m_input[0], + m_window.org_x, m_window.org_y, m_window.width, m_window.height, m_rr)); + fill(m_window.org_x, m_window.org_y, m_window.width, m_window.height, m_input[0]); + break; + + case LABEL: + DBG_LOG(2,"HPGPU",("command: LABEL [%d, 0x%x] (0x%04x, '%c') at %d,%d\n", command, command, m_input[0], + (m_input[0]<32||m_input[0]>127) ? ' ' : m_input[0], m_cursor_x, m_cursor_y)); + c = m_input[0] & 255; + w = (c & 1) ? + (m_videoram[m_fad + 2 + (c>>1)] & 255) : + (m_videoram[m_fad + 2 + (c>>1)] >> 8); + label(c, w); + break; + + // type 2 commands -- 2 words of data expected in the buffer + + case DRAWPX: + DBG_LOG(2,"HPGPU",("command: DRAWPX [%d, 0x%x] (%d, %d)\n", command, command, m_input[0], m_input[1])); + point(m_input[0], m_input[1],(m_rr != RR_COPYINVERTED)); + break; + + // set window size + case WRWINSIZ: + DBG_LOG(2,"HPGPU",("command: WRWINSIZ [%d, 0x%x] (%d, %d)\n", command, command, m_input[0], m_input[1])); + m_window.width = m_input[0]; + m_window.height = m_input[1]; + break; + + // set window origin + case WRWINORG: + DBG_LOG(2,"HPGPU",("command: WRWINORG [%d, 0x%x] (%d, %d)\n", command, command, m_input[0], m_input[1])); + m_window.org_x = m_input[0]; + m_window.org_y = m_input[1]; + break; + + // move pointer absolute + case MOVEP: + DBG_LOG(2,"HPGPU",("command: MOVEP [%d, 0x%x] (%d, %d)\n", command, command, m_input[0], m_input[1])); + if (m_enable_cursor) bitblt(m_cursor_x, m_cursor_y, m_dad, 16, 16, RR_XOR); + if (m_enable_sprite) bitblt(m_sprite_x, m_sprite_y, m_dad + 16, 16, 16, RR_XOR); + m_cursor_x = m_input[0]; + m_cursor_y = m_input[1]; + if (m_enable_cursor) bitblt(m_cursor_x, m_cursor_y, m_dad, 16, 16, RR_XOR); + if (m_enable_sprite) bitblt(m_sprite_x, m_sprite_y, m_dad + 16, 16, 16, RR_XOR); + break; + + // move sprite absolute + case MOVESP: + DBG_LOG(2,"HPGPU",("command: MOVESP [%d, 0x%x] (%d, %d)\n", command, command, m_input[0], m_input[1])); + m_sprite_x = m_input[0]; + m_sprite_y = m_input[1]; + break; + + // draw to ... + case DRAWP: + DBG_LOG(2,"HPGPU",("command: DRAWP [%d, 0x%x] (%d, %d) to (%d, %d)\n", + command, command, m_cursor_x, m_cursor_y, m_input[0], m_input[1])); + line(m_cursor_x, m_cursor_y, m_input[0], m_input[1]); + m_cursor_x = m_input[0]; + m_cursor_y = m_input[1]; + break; + + // type 3 command -- CONF -- accept configuration parameters (11 words) + + case CONF: + m_conf_ptr = 0; + break; + + // type 4 commands -- like type 1 plus data is read or written after command, terminated by NOP + + case RDMEM: + case WRMEM: + DBG_LOG(2,"HPGPU",("command: %s [%d, 0x%x] (0x%04x)\n", + command == RDMEM?"RDMEM":"WRMEM", command, command, m_input[0])); + m_memory_ptr = m_input[0] << 1; // memory is word-addressable + break; + + default: + DBG_LOG(1,"HPGPU",("command: UNKNOWN [%d, 0x%x]\n", command, command)); + break; + } + + m_input_ptr = 0; + m_command = command; +} diff --git a/src/devices/video/hp1ll3.h b/src/devices/video/hp1ll3.h new file mode 100644 index 00000000000..ab8b047a977 --- /dev/null +++ b/src/devices/video/hp1ll3.h @@ -0,0 +1,82 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +/*************************************************************************** + + HP 1LL3-0005 GPU emulation. + + ***************************************************************************/ + +#ifndef MAME_VIDEO_HP1LL3_H +#define MAME_VIDEO_HP1LL3_H + +#pragma once + + +///************************************************************************* +// INTERFACE CONFIGURATION MACROS +///************************************************************************* + +#define MCFG_HP1LL3_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, HP1LL3, 0) + +///************************************************************************* +// TYPE DEFINITIONS +///************************************************************************* + + +// ======================> hp1ll3_device + +class hp1ll3_device : public device_t, public device_video_interface +{ +public: + // construction/destruction + hp1ll3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_READ8_MEMBER(read); + DECLARE_WRITE8_MEMBER(write); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + +private: + void command(int command); + + inline void point(int x, int y, int px); + void label(uint8_t chr, int width); + void fill(int x, int y, int w, int h, int arg); + void line(int x_from, int y_from, int x_to, int y_to); + void bitblt(int dstx, int dsty, uint16_t srcaddr, int width, int height, int op); + + uint16_t m_conf[11], m_input[2]; + int m_input_ptr, m_memory_ptr, m_conf_ptr; + int m_command; + + uint16_t m_sad; + uint16_t m_org; + uint16_t m_dad; + uint16_t m_rr; + uint16_t m_fad, m_fontdata, m_fontheight; + uint16_t m_udl; + + bool m_enable_video, m_enable_cursor, m_enable_sprite; + uint16_t m_cursor_x, m_cursor_y; + uint16_t m_sprite_x, m_sprite_y; + struct { + uint16_t width, height, org_x, org_y, width_w; + } m_window; + std::unique_ptr m_videoram; + + bool m_busy; + + bitmap_ind16 m_bitmap, m_cursor, m_sprite; +}; + + +// device type definition +DECLARE_DEVICE_TYPE(HP1LL3, hp1ll3_device) + +#endif // MAME_VIDEO_HP1LL3_H diff --git a/src/devices/video/huc6202.cpp b/src/devices/video/huc6202.cpp index e5a4d2438c1..bbacd956e26 100644 --- a/src/devices/video/huc6202.cpp +++ b/src/devices/video/huc6202.cpp @@ -7,27 +7,29 @@ **********************************************************************/ #include "emu.h" -#include "huc6270.h" #include "huc6202.h" +#include "huc6270.h" + -const device_type HUC6202 = device_creator; +DEFINE_DEVICE_TYPE(HUC6202, huc6202_device, "huc6202", "Hudson HuC6202 VPC") huc6202_device::huc6202_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HUC6202, "HuC6202 VPC", tag, owner, clock, "huc6202", __FILE__), - m_next_pixel_0_cb(*this), - m_time_til_next_event_0_cb(*this), - m_vsync_changed_0_cb(*this), - m_hsync_changed_0_cb(*this), - m_read_0_cb(*this), - m_write_0_cb(*this), - m_next_pixel_1_cb(*this), - m_time_til_next_event_1_cb(*this), - m_vsync_changed_1_cb(*this), - m_hsync_changed_1_cb(*this), - m_read_1_cb(*this), - m_write_1_cb(*this), m_window1(0), m_window2(0), m_io_device(0), m_map_index(0), m_map_dirty(0) + : device_t(mconfig, HUC6202, tag, owner, clock) + , m_next_pixel_0_cb(*this) + , m_time_til_next_event_0_cb(*this) + , m_vsync_changed_0_cb(*this) + , m_hsync_changed_0_cb(*this) + , m_read_0_cb(*this) + , m_write_0_cb(*this) + , m_next_pixel_1_cb(*this) + , m_time_til_next_event_1_cb(*this) + , m_vsync_changed_1_cb(*this) + , m_hsync_changed_1_cb(*this) + , m_read_1_cb(*this) + , m_write_1_cb(*this) + , m_window1(0), m_window2(0), m_io_device(0), m_map_index(0), m_map_dirty(0) { } diff --git a/src/devices/video/huc6202.h b/src/devices/video/huc6202.h index 5ad529a3e35..3a3c90076e3 100644 --- a/src/devices/video/huc6202.h +++ b/src/devices/video/huc6202.h @@ -6,9 +6,10 @@ **********************************************************************/ -#ifndef __HUC6202_H_ -#define __HUC6202_H_ +#ifndef MAME_VIDEO_HUC6202_H +#define MAME_VIDEO_HUC6202_H +#pragma once #define MCFG_HUC6202_NEXT_PIXEL_0_CB(_devcb) \ @@ -54,18 +55,18 @@ public: // construction/destruction huc6202_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_next_pixel_0_callback(device_t &device, _Object object) { return downcast(device).m_next_pixel_0_cb.set_callback(object); } - template static devcb_base &set_time_til_next_event_0_callback(device_t &device, _Object object) { return downcast(device).m_time_til_next_event_0_cb.set_callback(object); } - template static devcb_base &set_vsync_changed_0_callback(device_t &device, _Object object) { return downcast(device).m_vsync_changed_0_cb.set_callback(object); } - template static devcb_base &set_hsync_changed_0_callback(device_t &device, _Object object) { return downcast(device).m_hsync_changed_0_cb.set_callback(object); } - template static devcb_base &set_read_0_callback(device_t &device, _Object object) { return downcast(device).m_read_0_cb.set_callback(object); } - template static devcb_base &set_write_0_callback(device_t &device, _Object object) { return downcast(device).m_write_0_cb.set_callback(object); } - template static devcb_base &set_next_pixel_1_callback(device_t &device, _Object object) { return downcast(device).m_next_pixel_1_cb.set_callback(object); } - template static devcb_base &set_time_til_next_event_1_callback(device_t &device, _Object object) { return downcast(device).m_time_til_next_event_1_cb.set_callback(object); } - template static devcb_base &set_vsync_changed_1_callback(device_t &device, _Object object) { return downcast(device).m_vsync_changed_1_cb.set_callback(object); } - template static devcb_base &set_hsync_changed_1_callback(device_t &device, _Object object) { return downcast(device).m_hsync_changed_1_cb.set_callback(object); } - template static devcb_base &set_read_1_callback(device_t &device, _Object object) { return downcast(device).m_read_1_cb.set_callback(object); } - template static devcb_base &set_write_1_callback(device_t &device, _Object object) { return downcast(device).m_write_1_cb.set_callback(object); } + template static devcb_base &set_next_pixel_0_callback(device_t &device, Object &&cb) { return downcast(device).m_next_pixel_0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_time_til_next_event_0_callback(device_t &device, Object &&cb) { return downcast(device).m_time_til_next_event_0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_vsync_changed_0_callback(device_t &device, Object &&cb) { return downcast(device).m_vsync_changed_0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_hsync_changed_0_callback(device_t &device, Object &&cb) { return downcast(device).m_hsync_changed_0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_0_callback(device_t &device, Object &&cb) { return downcast(device).m_read_0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_write_0_callback(device_t &device, Object &&cb) { return downcast(device).m_write_0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_next_pixel_1_callback(device_t &device, Object &&cb) { return downcast(device).m_next_pixel_1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_time_til_next_event_1_callback(device_t &device, Object &&cb) { return downcast(device).m_time_til_next_event_1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_vsync_changed_1_callback(device_t &device, Object &&cb) { return downcast(device).m_vsync_changed_1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_hsync_changed_1_callback(device_t &device, Object &&cb) { return downcast(device).m_hsync_changed_1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_1_callback(device_t &device, Object &&cb) { return downcast(device).m_read_1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_write_1_callback(device_t &device, Object &&cb) { return downcast(device).m_write_1_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -123,7 +124,6 @@ private: }; -extern const device_type HUC6202; +DECLARE_DEVICE_TYPE(HUC6202, huc6202_device) - -#endif +#endif // MAME_VIDEO_HUC6202_H diff --git a/src/devices/video/huc6260.cpp b/src/devices/video/huc6260.cpp index 1676924dee2..3b00c9f7c7f 100644 --- a/src/devices/video/huc6260.cpp +++ b/src/devices/video/huc6260.cpp @@ -21,13 +21,18 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" -#define LOG 0 #define HUC6260_HSYNC_LENGTH 237 -#define HUC6260_HSYNC_START ( HUC6260_WPF - HUC6260_HSYNC_LENGTH ) +#define HUC6260_HSYNC_START ( huc6260_device::WPF - HUC6260_HSYNC_LENGTH ) +constexpr unsigned huc6260_device::PALETTE_SIZE; +constexpr unsigned huc6260_device::WPF; +constexpr unsigned huc6260_device::LPF; + PALETTE_INIT_MEMBER(huc6260_device, huc6260) { int i; @@ -45,11 +50,11 @@ PALETTE_INIT_MEMBER(huc6260_device, huc6260) } -const device_type HUC6260 = device_creator; +DEFINE_DEVICE_TYPE(HUC6260, huc6260_device, "huc6260", "Hudson HuC6260 VCE") huc6260_device::huc6260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HUC6260, "HuC6260 VCE", tag, owner, clock, "huc6260", __FILE__), + : device_t(mconfig, HUC6260, tag, owner, clock), device_video_interface(mconfig, *this), m_next_pixel_data_cb(*this), m_time_til_next_event_cb(*this), @@ -83,7 +88,7 @@ void huc6260_device::device_timer(emu_timer &timer, device_timer_id id, int para bitmap_line[ h ] = m_palette[ m_pixel_data ]; m_pixel_clock = ( m_pixel_clock + 1 ) % m_pixels_per_clock; - h = ( h + 1 ) % HUC6260_WPF; + h = ( h + 1 ) % WPF; switch( h ) { @@ -92,7 +97,7 @@ void huc6260_device::device_timer(emu_timer &timer, device_timer_id id, int para // if ( v == 0 ) // { // /* Check if the screen should be resized */ -// m_height = HUC6260_LPF - ( m_blur ? 1 : 0 ); +// m_height = LPF - ( m_blur ? 1 : 0 ); // if ( m_height != video_screen_get_height( m_screen ) ) // { // rectangle visible_area; @@ -103,7 +108,7 @@ void huc6260_device::device_timer(emu_timer &timer, device_timer_id id, int para // visible_area.max_x = 64 + 1024 + 64 - 1; // visible_area.max_y = 18 + 242 - 1; // -// video_screen_configure( m_screen, HUC6260_WPF, m_height, &visible_area, HZ_TO_ATTOSECONDS( device->clock / ( HUC6260_WPF * m_height ) ) ); +// video_screen_configure( m_screen, WPF, m_height, &visible_area, HZ_TO_ATTOSECONDS( device->clock / ( WPF * m_height ) ) ); // } // } break; @@ -160,10 +165,10 @@ void huc6260_device::device_timer(emu_timer &timer, device_timer_id id, int para event_hpos = hpos + next_event_clocks; event_vpos = vpos; - while ( event_hpos > HUC6260_WPF ) + while ( event_hpos > WPF ) { event_vpos += 1; - event_hpos -= HUC6260_WPF; + event_hpos -= WPF; } if ( event_vpos < v || ( event_vpos == v && event_hpos <= h ) ) @@ -256,7 +261,7 @@ WRITE8_MEMBER( huc6260_device::write ) void huc6260_device::device_start() { m_timer = timer_alloc(); - m_bmp = std::make_unique(HUC6260_WPF, HUC6260_LPF ); + m_bmp = std::make_unique(WPF, LPF); /* Resolve callbacks */ m_hsync_changed_cb.resolve(); @@ -299,7 +304,7 @@ void huc6260_device::device_reset() } static MACHINE_CONFIG_FRAGMENT( huc6260 ) - MCFG_PALETTE_ADD("palette", HUC6260_PALETTE_SIZE ) + MCFG_PALETTE_ADD("palette", huc6260_device::PALETTE_SIZE) MCFG_PALETTE_INIT_OWNER(huc6260_device, huc6260) MACHINE_CONFIG_END diff --git a/src/devices/video/huc6260.h b/src/devices/video/huc6260.h index f90a7946e20..c560f3df0f1 100644 --- a/src/devices/video/huc6260.h +++ b/src/devices/video/huc6260.h @@ -6,17 +6,10 @@ **********************************************************************/ +#ifndef MAME_VIDEO_HUC6260_H +#define MAME_VIDEO_HUC6260_H -#ifndef __HUC6260_H_ -#define __HUC6260_H_ - - - -#define HUC6260_PALETTE_SIZE 1024 - -/* Screen timing stuff */ -#define HUC6260_WPF 1365 /* width of a line in frame including blanking areas */ -#define HUC6260_LPF 263 /* max number of lines in a single frame */ +#pragma once #define MCFG_HUC6260_NEXT_PIXEL_DATA_CB(_devcb) \ @@ -36,13 +29,20 @@ class huc6260_device : public device_t, public device_video_interface { public: + static constexpr unsigned PALETTE_SIZE = 1024; + + /* Screen timing stuff */ + static constexpr unsigned WPF = 1365; // width of a line in frame including blanking areas + static constexpr unsigned LPF = 263; // max number of lines in a single frame + + // construction/destruction huc6260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_next_pixel_data_callback(device_t &device, _Object object) { return downcast(device).m_next_pixel_data_cb.set_callback(object); } - template static devcb_base &set_time_til_next_event_callback(device_t &device, _Object object) { return downcast(device).m_time_til_next_event_cb.set_callback(object); } - template static devcb_base &set_vsync_changed_callback(device_t &device, _Object object) { return downcast(device).m_vsync_changed_cb.set_callback(object); } - template static devcb_base &set_hsync_changed_callback(device_t &device, _Object object) { return downcast(device).m_hsync_changed_cb.set_callback(object); } + template static devcb_base &set_next_pixel_data_callback(device_t &device, Object &&cb) { return downcast(device).m_next_pixel_data_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_time_til_next_event_callback(device_t &device, Object &&cb) { return downcast(device).m_time_til_next_event_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_vsync_changed_callback(device_t &device, Object &&cb) { return downcast(device).m_vsync_changed_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_hsync_changed_callback(device_t &device, Object &&cb) { return downcast(device).m_hsync_changed_cb.set_callback(std::forward(cb)); } void video_update(bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_READ8_MEMBER( read ); @@ -91,7 +91,6 @@ private: }; -extern const device_type HUC6260; - +DECLARE_DEVICE_TYPE(HUC6260, huc6260_device) -#endif +#endif // MAME_VIDEO_HUC6260_H diff --git a/src/devices/video/huc6261.cpp b/src/devices/video/huc6261.cpp index e9ca25d236d..9029b57d54f 100644 --- a/src/devices/video/huc6261.cpp +++ b/src/devices/video/huc6261.cpp @@ -18,18 +18,21 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" -#define LOG 0 #define HUC6261_HSYNC_LENGTH 237 -#define HUC6261_HSYNC_START ( HUC6261_WPF - HUC6261_HSYNC_LENGTH ) +#define HUC6261_HSYNC_START ( huc6261_device::WPF - HUC6261_HSYNC_LENGTH ) +constexpr unsigned huc6261_device::WPF; +constexpr unsigned huc6261_device::LPF; -const device_type HUC6261 = device_creator; +DEFINE_DEVICE_TYPE(HUC6261, huc6261_device, "huc6261", "Hudson HuC6261 VCE") huc6261_device::huc6261_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HUC6261, "HuC6261", tag, owner, clock, "huc6261", __FILE__), + : device_t(mconfig, HUC6261, tag, owner, clock), device_video_interface(mconfig, *this), m_huc6270_a_tag(nullptr), m_huc6270_b_tag(nullptr), m_huc6272_tag(nullptr), m_huc6270_a(nullptr), m_huc6270_b(nullptr), m_huc6272(nullptr), @@ -118,7 +121,7 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para bitmap_line[ h ] = yuv2rgb( m_palette[ m_pixel_data_b ] ); m_pixel_clock = ( m_pixel_clock + 1 ) % m_pixels_per_clock; - h = ( h + 1 ) % HUC6261_WPF; + h = ( h + 1 ) % WPF; switch( h ) { @@ -128,7 +131,7 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para // if ( v == 0 ) // { // /* Check if the screen should be resized */ -// m_height = HUC6261_LPF - ( m_blur ? 1 : 0 ); +// m_height = LPF - ( m_blur ? 1 : 0 ); // if ( m_height != video_screen_get_height( m_screen ) ) // { // rectangle visible_area; @@ -139,7 +142,7 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para // visible_area.max_x = 64 + 1024 + 64 - 1; // visible_area.max_y = 18 + 242 - 1; // -// video_screen_configure( m_screen, HUC6261_WPF, m_height, &visible_area, HZ_TO_ATTOSECONDS( device->clock / ( HUC6261_WPF * m_height ) ) ); +// video_screen_configure( m_screen, WPF, m_height, &visible_area, HZ_TO_ATTOSECONDS( device->clock / ( WPF * m_height ) ) ); // } // } break; @@ -189,7 +192,7 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para /* Ask our slave device for time until next possible event */ { - uint16_t next_event_clocks = HUC6261_WPF; //m_get_time_til_next_event( 0, 0xffff ); + uint16_t next_event_clocks = WPF; //m_get_time_til_next_event( 0, 0xffff ); int event_hpos, event_vpos; /* Adjust for pixel clocks per pixel */ @@ -200,10 +203,10 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para event_hpos = hpos + next_event_clocks; event_vpos = vpos; - while ( event_hpos > HUC6261_WPF ) + while ( event_hpos > WPF ) { event_vpos += 1; - event_hpos -= HUC6261_WPF; + event_hpos -= WPF; } if ( event_vpos < v || ( event_vpos == v && event_hpos <= h ) ) @@ -420,7 +423,7 @@ void huc6261_device::device_start() m_huc6270_b = machine().device(m_huc6270_b_tag); m_huc6272 = machine().device(m_huc6272_tag); - m_bmp = std::make_unique(HUC6261_WPF, HUC6261_LPF ); + m_bmp = std::make_unique(WPF, LPF); /* We want to have valid devices */ assert( m_huc6270_a != nullptr ); diff --git a/src/devices/video/huc6261.h b/src/devices/video/huc6261.h index 1e49f35dd9c..195c1e05127 100644 --- a/src/devices/video/huc6261.h +++ b/src/devices/video/huc6261.h @@ -6,17 +6,14 @@ **********************************************************************/ +#ifndef MAME_VIDEO_HUC6261_H +#define MAME_VIDEO_HUC6261_H -#ifndef __HUC6261_H_ -#define __HUC6261_H_ +#pragma once #include "video/huc6270.h" #include "video/huc6272.h" -/* Screen timing stuff */ -#define HUC6261_WPF 1365 /* width of a line in frame including blanking areas */ -#define HUC6261_LPF 263 /* max number of lines in a single frame */ - #define MCFG_HUC6261_VDC1(_tag) \ huc6261_device::set_vdc1_tag(*device, _tag); @@ -32,6 +29,10 @@ class huc6261_device : public device_t, public device_video_interface { public: + // Screen timing stuff + static constexpr unsigned WPF = 1365; // width of a line in frame including blanking areas + static constexpr unsigned LPF = 263; // max number of lines in a single frame + // construction/destruction huc6261_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -77,12 +78,12 @@ private: emu_timer *m_timer; std::unique_ptr m_bmp; int32_t m_uv_lookup[65536][3]; + inline uint32_t yuv2rgb(uint32_t yuv); inline void apply_pal_offs(uint16_t *pix_data); }; -extern const device_type HUC6261; - +DECLARE_DEVICE_TYPE(HUC6261, huc6261_device) -#endif +#endif // MAME_VIDEO_HUC6261_H diff --git a/src/devices/video/huc6270.cpp b/src/devices/video/huc6270.cpp index bf367eaa4eb..9b71192b005 100644 --- a/src/devices/video/huc6270.cpp +++ b/src/devices/video/huc6270.cpp @@ -54,7 +54,9 @@ TODO #include "emu.h" #include "huc6270.h" -#define LOG 0 +//#define VERBOSE 1 +#include "logmacro.h" + enum { MAWR = 0x00, @@ -91,15 +93,15 @@ ALLOW_SAVE_TYPE(huc6270_device::huc6270_h_state); #define HUC6270_CR 0x01 /* Set when sprite #0 overlaps with another sprite */ -const device_type HUC6270 = device_creator; +DEFINE_DEVICE_TYPE(HUC6270, huc6270_device, "huc6270", "Hudson HuC6270 VDC") -const uint8_t huc6270_device::vram_increments[4] = { 1, 32, 64, 128 }; +constexpr uint8_t huc6270_device::vram_increments[4]; huc6270_device::huc6270_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HUC6270, "HuC6270 VDC", tag, owner, clock, "huc6270", __FILE__), - m_vram_size(0), - m_irq_changed_cb(*this) + : device_t(mconfig, HUC6270, tag, owner, clock) + , m_vram_size(0) + , m_irq_changed_cb(*this) { } @@ -109,18 +111,15 @@ huc6270_device::huc6270_device(const machine_config &mconfig, const char *tag, d */ inline void huc6270_device::fetch_bat_tile_row() { - uint16_t bat_data, data1, data2, data3, data4, tile_palette; - int i; - - bat_data = m_vram[ m_bat_address & m_vram_mask ]; - tile_palette = ( bat_data >> 8 ) & 0xF0; - data1 = m_vram[ ( ( ( bat_data & 0x0FFF ) << 4 ) + m_bat_row + 0 ) & m_vram_mask ]; - data2 = ( data1 >> 7 ) & 0x1FE; - data3 = m_vram[ ( ( ( bat_data & 0x0FFF ) << 4 ) + m_bat_row + 8 ) & m_vram_mask ]; - data4 = ( data3 >> 5 ) & 0x7F8; + const uint16_t bat_data = m_vram[ m_bat_address & m_vram_mask ]; + const uint16_t tile_palette = ( bat_data >> 8 ) & 0xF0; + uint16_t data1 = m_vram[ ( ( ( bat_data & 0x0FFF ) << 4 ) + m_bat_row + 0 ) & m_vram_mask ]; + uint16_t data2 = ( data1 >> 7 ) & 0x1FE; + uint16_t data3 = m_vram[ ( ( ( bat_data & 0x0FFF ) << 4 ) + m_bat_row + 8 ) & m_vram_mask ]; + uint16_t data4 = ( data3 >> 5 ) & 0x7F8; data3 <<= 2; - for ( i = 7; i >= 0; i-- ) + for ( int i = 7; i >= 0; i-- ) { uint16_t c = ( data1 & 0x01 ) | ( data2 & 0x02 ) | ( data3 & 0x04 ) | ( data4 & 0x08 ); @@ -304,7 +303,7 @@ inline void huc6270_device::handle_vblank() { int i; - if (LOG) logerror("SATB transfer from %05x\n", m_dvssr << 1 ); + LOG("SATB transfer from %05x\n", m_dvssr << 1 ); for ( i = 0; i < 4 * 64; i += 4 ) { m_sat[i + 0] = m_vram[ ( m_dvssr + i + 0 ) & m_vram_mask ] & 0x03FF; @@ -364,7 +363,7 @@ inline void huc6270_device::next_horz_state() { case HUC6270_HDS: m_bxr_latched = m_bxr; -//if (LOG) printf("latched bxr vpos=%d, hpos=%d\n", video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen())); + //LOG("latched bxr vpos=%d, hpos=%d\n", video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen())); m_horz_state = HUC6270_HDW; m_horz_to_go = ( m_hdr & 0x7F ) + 1; { @@ -509,7 +508,7 @@ WRITE_LINE_MEMBER( huc6270_device::vsync_changed ) int desr_inc = ( m_dcr & 0x0008 ) ? -1 : +1; int sour_inc = ( m_dcr & 0x0004 ) ? -1 : +1; - if (LOG) logerror("doing dma sour = %04x, desr = %04x, lenr = %04x\n", m_sour, m_desr, m_lenr ); + LOG("doing dma sour = %04x, desr = %04x, lenr = %04x\n", m_sour, m_desr, m_lenr ); do { uint16_t data = m_vram[ m_sour & m_vram_mask ]; m_vram[ m_desr & m_vram_mask ] = data; @@ -608,7 +607,7 @@ READ8_MEMBER( huc6270_device::read ) WRITE8_MEMBER( huc6270_device::write ) { - if (LOG) logerror("%s: huc6270 write %02x <- %02x ", machine().describe_context(), offset, data); + LOG("%s: huc6270 write %02x <- %02x ", machine().describe_context(), offset, data); switch ( offset & 3 ) { @@ -644,18 +643,18 @@ WRITE8_MEMBER( huc6270_device::write ) // m_status |= HUC6270_RR; // m_irq_changed_cb( ASSERT_LINE ); // } -//if (LOG) printf("%04x: RCR (%03x) written at %d,%d\n", activecpu_get_pc(), huc6270->m_rcr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) ); +//LOG("%04x: RCR (%03x) written at %d,%d\n", activecpu_get_pc(), huc6270->m_rcr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) ); break; case BXR: /* background x-scroll register LSB */ m_bxr = ( m_bxr & 0x0300 ) | data; -//if (LOG) printf("*********************** BXR written %d at %d,%d\n", m_bxr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) ); +//LOG("*********************** BXR written %d at %d,%d\n", m_bxr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) ); break; case BYR: /* background y-scroll register LSB */ m_byr = ( m_byr & 0x0100 ) | data; m_byr_latched = m_byr; -//if (LOG) printf("******************** BYR written %d at %d,%d\n", huc6270->m_byr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) ); +//LOG("******************** BYR written %d at %d,%d\n", huc6270->m_byr, video_screen_get_vpos(device->machine->first_screen()), video_screen_get_hpos(device->machine->first_screen()) ); break; case MWR: /* memory width register LSB */ @@ -795,7 +794,7 @@ WRITE8_MEMBER( huc6270_device::write ) } break; } - if (LOG) logerror("\n"); + LOG("\n"); } diff --git a/src/devices/video/huc6270.h b/src/devices/video/huc6270.h index a66dc703a34..8ecbbdf7c40 100644 --- a/src/devices/video/huc6270.h +++ b/src/devices/video/huc6270.h @@ -6,8 +6,10 @@ **********************************************************************/ -#ifndef __HUC6270_H_ -#define __HUC6270_H_ +#ifndef MAME_VIDEO_HUC6270_H +#define MAME_VIDEO_HUC6270_H + +#pragma once #define MCFG_HUC6270_VRAM_SIZE(_size) \ @@ -16,14 +18,14 @@ #define MCFG_HUC6270_IRQ_CHANGED_CB(_devcb) \ devcb = &huc6270_device::set_irq_changed_callback(*device, DEVCB_##_devcb); -class huc6270_device : public device_t +class huc6270_device : public device_t { public: // construction/destruction huc6270_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void set_vram_size(device_t &device, uint32_t vram_size) { downcast(device).m_vram_size = vram_size; } - template static devcb_base &set_irq_changed_callback(device_t &device, _Object object) { return downcast(device).m_irq_changed_cb.set_callback(object); } + template static devcb_base &set_irq_changed_callback(device_t &device, Object &&cb) { return downcast(device).m_irq_changed_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -52,7 +54,6 @@ protected: inline void next_horz_state(); private: - enum huc6270_v_state { HUC6270_VSW, HUC6270_VDS, @@ -130,11 +131,10 @@ private: std::unique_ptr m_vram; uint16_t m_vram_mask; - const static uint8_t vram_increments[4]; + static constexpr uint8_t vram_increments[4] = { 1, 32, 64, 128 }; }; -extern const device_type HUC6270; - +DECLARE_DEVICE_TYPE(HUC6270, huc6270_device) -#endif +#endif // MAME_VIDEO_HUC6270_H diff --git a/src/devices/video/huc6271.cpp b/src/devices/video/huc6271.cpp index b9379c9d6af..a17d85f9679 100644 --- a/src/devices/video/huc6271.cpp +++ b/src/devices/video/huc6271.cpp @@ -16,7 +16,7 @@ //************************************************************************** // device type definition -const device_type huc6271 = device_creator; +DEFINE_DEVICE_TYPE(HUC6271, huc6271_device, "huc6271", "Hudson HuC6271 \"Rainbow\"") //************************************************************************** @@ -32,9 +32,9 @@ static ADDRESS_MAP_START( data_map, AS_DATA, 32, huc6271_device ) ADDRESS_MAP_END huc6271_device::huc6271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, huc6271, "HuC6271 \"Rainbow\"", tag, owner, clock, "huc6271", __FILE__), - device_memory_interface(mconfig, *this), - m_data_space_config("data", ENDIANNESS_LITTLE, 32, 32, 0, nullptr, *ADDRESS_MAP_NAME(data_map)) + : device_t(mconfig, HUC6271, tag, owner, clock) + , device_memory_interface(mconfig, *this) + , m_data_space_config("data", ENDIANNESS_LITTLE, 32, 32, 0, nullptr, *ADDRESS_MAP_NAME(data_map)) { } diff --git a/src/devices/video/huc6271.h b/src/devices/video/huc6271.h index 1197991160e..eba09821ff0 100644 --- a/src/devices/video/huc6271.h +++ b/src/devices/video/huc6271.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_HUC6271_H +#define MAME_VIDEO_HUC6271_H -#ifndef __HUC6271DEV_H__ -#define __HUC6271DEV_H__ +#pragma once @@ -17,8 +17,8 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_HUC6271_ADD(_tag,_freq) \ - MCFG_DEVICE_ADD(_tag, huc6271, _freq) +#define MCFG_HUC6271_ADD(tag, freq) \ + MCFG_DEVICE_ADD((tag), HUC6271, (freq)) //************************************************************************** // TYPE DEFINITIONS @@ -39,10 +39,9 @@ public: protected: // device-level overrides -// virtual void device_validity_check(validity_checker &valid) const; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_DATA) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; private: const address_space_config m_data_space_config; @@ -50,14 +49,6 @@ private: // device type definition -extern const device_type huc6271; - - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - - +DECLARE_DEVICE_TYPE(HUC6271, huc6271_device) -#endif +#endif // MAME_VIDEO_HUC6271_H diff --git a/src/devices/video/huc6272.cpp b/src/devices/video/huc6272.cpp index af38859df0e..cea9315df2d 100644 --- a/src/devices/video/huc6272.cpp +++ b/src/devices/video/huc6272.cpp @@ -20,7 +20,7 @@ //************************************************************************** // device type definition -const device_type huc6272 = device_creator; +DEFINE_DEVICE_TYPE(HUC6272, huc6272_device, "huc6272", "Hudson HuC6272 \"King\"") static ADDRESS_MAP_START( microprg_map, AS_PROGRAM, 16, huc6272_device ) AM_RANGE(0x00, 0x0f) AM_RAM AM_SHARE("microprg_ram") @@ -41,7 +41,7 @@ ADDRESS_MAP_END //------------------------------------------------- huc6272_device::huc6272_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, huc6272, "HuC6272 \"King\"", tag, owner, clock, "huc6272", __FILE__), + : device_t(mconfig, HUC6272, tag, owner, clock), device_memory_interface(mconfig, *this), m_program_space_config("microprg", ENDIANNESS_LITTLE, 16, 4, 0, nullptr, *ADDRESS_MAP_NAME(microprg_map)), m_data_space_config("kram", ENDIANNESS_LITTLE, 32, 21, 0, nullptr, *ADDRESS_MAP_NAME(kram_map)), diff --git a/src/devices/video/huc6272.h b/src/devices/video/huc6272.h index ed903eae786..51788d08a69 100644 --- a/src/devices/video/huc6272.h +++ b/src/devices/video/huc6272.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_HUC6272_H +#define MAME_VIDEO_HUC6272_H -#ifndef __huc6272DEV_H__ -#define __huc6272DEV_H__ +#pragma once #include "bus/scsi/scsi.h" #include "bus/scsi/scsicd.h" @@ -20,14 +20,14 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_HUC6272_ADD(_tag,_freq) \ - MCFG_DEVICE_ADD(_tag, huc6272, _freq) +#define MCFG_HUC6272_ADD(tag, freq) \ + MCFG_DEVICE_ADD((tag), HUC6272, (freq)) -#define MCFG_HUC6272_IRQ_CHANGED_CB(_devcb) \ - devcb = &huc6272_device::set_irq_changed_callback(*device, DEVCB_##_devcb); +#define MCFG_HUC6272_IRQ_CHANGED_CB(cb) \ + devcb = &huc6272_device::set_irq_changed_callback(*device, (DEVCB_##cb)); -#define MCFG_HUC6272_RAINBOW(_tag) \ - huc6272_device::set_rainbow_tag(*device, _tag); +#define MCFG_HUC6272_RAINBOW(tag) \ + huc6272_device::set_rainbow_tag(*device, (tag)); //************************************************************************** @@ -43,7 +43,7 @@ public: // construction/destruction huc6272_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_irq_changed_callback(device_t &device, _Object object) { return downcast(device).m_irq_changed_cb.set_callback(object); } + template static devcb_base &set_irq_changed_callback(device_t &device, Object &&cb) { return downcast(device).m_irq_changed_cb.set_callback(std::forward(cb)); } static void set_rainbow_tag(device_t &device, const char *tag) { downcast(device).m_huc6271_tag = tag; } // I/O operations @@ -97,7 +97,7 @@ private: required_shared_ptr m_microprg_ram; required_shared_ptr m_kram_page0; required_shared_ptr m_kram_page1; - required_device m_scsibus; + required_device m_scsibus; required_device m_scsi_data_in; required_device m_scsi_data_out; required_device m_scsi_ctrl_in; @@ -111,14 +111,6 @@ private: }; // device type definition -extern const device_type huc6272; - - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - - +DECLARE_DEVICE_TYPE(HUC6272, huc6272_device) -#endif +#endif // MAME_VIDEO_HUC6272_H diff --git a/src/devices/video/i8244.cpp b/src/devices/video/i8244.cpp index bf1de11dcbb..8ca44d172a2 100644 --- a/src/devices/video/i8244.cpp +++ b/src/devices/video/i8244.cpp @@ -17,8 +17,8 @@ // device type definition -const device_type I8244 = device_creator; -const device_type I8245 = device_creator; +DEFINE_DEVICE_TYPE(I8244, i8244_device, "i8244", "Intel 8244") +DEFINE_DEVICE_TYPE(I8245, i8245_device, "i8245", "Intel 8245") // Kevtris verified that the data below matches a dump @@ -105,20 +105,13 @@ static const uint8_t bgr2rgb[8] = //------------------------------------------------- i8244_device::i8244_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, I8244, "I8244", tag, owner, clock, "i8244", __FILE__) - , device_sound_interface(mconfig, *this) - , device_video_interface(mconfig, *this) - , m_irq_func(*this) - , m_postprocess_func(*this) - , m_start_vpos(START_Y) - , m_start_vblank(START_Y + SCREEN_HEIGHT) - , m_screen_lines(LINES) + : i8244_device(mconfig, I8244, tag, owner, clock, i8244_device::LINES) { } -i8244_device::i8244_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int lines, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +i8244_device::i8244_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int lines) + : device_t(mconfig, type, tag, owner, clock) , device_sound_interface(mconfig, *this) , device_video_interface(mconfig, *this) , m_irq_func(*this) @@ -131,7 +124,7 @@ i8244_device::i8244_device(const machine_config &mconfig, device_type type, cons i8245_device::i8245_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : i8244_device(mconfig, I8245, "I8245", tag, owner, clock, i8245_device::LINES, "i8245", __FILE__) + : i8244_device(mconfig, I8245, tag, owner, clock, i8245_device::LINES) { } diff --git a/src/devices/video/i8244.h b/src/devices/video/i8244.h index c3e3dcfd5ee..a67652fd1e4 100644 --- a/src/devices/video/i8244.h +++ b/src/devices/video/i8244.h @@ -8,10 +8,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_I8244_H +#define MAME_VIDEO_I8244_H -#ifndef __I8244_H__ -#define __I8244_H__ +#pragma once @@ -38,38 +38,6 @@ TYPE DEFINITIONS ***************************************************************************/ -union vdc_t { - uint8_t reg[0x100]; - struct { - struct { - uint8_t y,x,color,res; - } sprites[4]; - struct { - uint8_t y,x,ptr,color; - } foreground[12]; - struct { - struct { - uint8_t y,x,ptr,color; - } single[4]; - } quad[4]; - uint8_t shape[4][8]; - uint8_t control; - uint8_t status; - uint8_t collision; - uint8_t color; - uint8_t y; - uint8_t x; - uint8_t res; - uint8_t shift1; - uint8_t shift2; - uint8_t shift3; - uint8_t sound; - uint8_t res2[5+0x10]; - uint8_t hgrid[2][0x10]; - uint8_t vgrid[0x10]; - } s; -}; - // ======================> i8244_device @@ -80,12 +48,11 @@ class i8244_device : public device_t public: // construction/destruction i8244_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - i8244_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int lines, const char *shortname, const char *source); // static configuration helpers static void set_screen_tag(device_t &device, const char *screen_tag) { downcast(device).m_screen_tag = screen_tag; } - template static devcb_base &set_irq_cb(device_t &device, _Object object) { return downcast(device).m_irq_func.set_callback(object); } - template static devcb_base &set_postprocess_cb(device_t &device, _Object object) { return downcast(device).m_postprocess_func.set_callback(object); } + template static devcb_base &set_irq_cb(device_t &device, Object &&cb) { return downcast(device).m_irq_func.set_callback(std::forward(cb)); } + template static devcb_base &set_postprocess_cb(device_t &device, Object &&cb) { return downcast(device).m_postprocess_func.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); @@ -98,15 +65,49 @@ public: inline bitmap_ind16 *get_bitmap() { return &m_tmp_bitmap; } // Global constants - static const int START_ACTIVE_SCAN = 42; - static const int BORDER_SIZE = 10; - static const int END_ACTIVE_SCAN = 42 + 10 + 320 + 10; - static const int START_Y = 1; - static const int SCREEN_HEIGHT = 243; - static const int LINE_CLOCKS = 455; - static const int LINES = 262; + static constexpr int START_ACTIVE_SCAN = 42; + static constexpr int BORDER_SIZE = 10; + static constexpr int END_ACTIVE_SCAN = 42 + 10 + 320 + 10; + static constexpr int START_Y = 1; + static constexpr int SCREEN_HEIGHT = 243; + static constexpr int LINE_CLOCKS = 455; + static constexpr int LINES = 262; protected: + union vdc_t { + uint8_t reg[0x100]; + struct { + struct { + uint8_t y,x,color,res; + } sprites[4]; + struct { + uint8_t y,x,ptr,color; + } foreground[12]; + struct { + struct { + uint8_t y,x,ptr,color; + } single[4]; + } quad[4]; + uint8_t shape[4][8]; + uint8_t control; + uint8_t status; + uint8_t collision; + uint8_t color; + uint8_t y; + uint8_t x; + uint8_t res; + uint8_t shift1; + uint8_t shift2; + uint8_t shift3; + uint8_t sound; + uint8_t res2[5+0x10]; + uint8_t hgrid[2][0x10]; + uint8_t vgrid[0x10]; + } s; + }; + + i8244_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int lines); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -121,11 +122,11 @@ protected: offs_t fix_register_mirrors( offs_t offset ); // Local constants - static const uint8_t VDC_CONTROL_REG_STROBE_XY = 0x02; + static constexpr uint8_t VDC_CONTROL_REG_STROBE_XY = 0x02; /* timers */ - static const device_timer_id TIMER_LINE = 0; - static const device_timer_id TIMER_HBLANK = 1; + static constexpr device_timer_id TIMER_LINE = 0; + static constexpr device_timer_id TIMER_HBLANK = 1; // callbacks devcb_write_line m_irq_func; @@ -156,13 +157,12 @@ public: // construction/destruction i8245_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static const int LINES = 312; + static constexpr int LINES = 312; }; // device type definition -extern const device_type I8244; -extern const device_type I8245; - +DECLARE_DEVICE_TYPE(I8244, i8244_device) +DECLARE_DEVICE_TYPE(I8245, i8245_device) -#endif /* __I8244_H__ */ +#endif // MAME_VIDEO_I8244_H diff --git a/src/devices/video/i82730.cpp b/src/devices/video/i82730.cpp index 296dc0ef2d4..1137ff6b0df 100644 --- a/src/devices/video/i82730.cpp +++ b/src/devices/video/i82730.cpp @@ -27,9 +27,9 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type I82730 = device_creator; +DEFINE_DEVICE_TYPE(I82730, i82730_device, "i82730", "Intel 82730") -const char *i82730_device::m_command_names[] = +const char *const i82730_device::s_command_names[] = { /* 00 */ "NOP", /* 01 */ "START DISPLAY", @@ -55,7 +55,7 @@ const char *i82730_device::m_command_names[] = //------------------------------------------------- i82730_device::i82730_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, I82730, "I82730", tag, owner, clock, "i82730", __FILE__), + device_t(mconfig, I82730, tag, owner, clock), device_video_interface(mconfig, *this), m_sint_handler(*this), m_cpu_tag(nullptr), m_program(nullptr), @@ -250,8 +250,8 @@ void i82730_device::execute_command() uint8_t command = read_byte(m_cbp + 1); uint16_t tmp; - if (VERBOSE_COMMANDS && command < ARRAY_LENGTH(m_command_names)) - logerror("%s('%s'): executing command: %s [cbp = %08x]\n", shortname(), basetag(), m_command_names[command], m_cbp); + if (VERBOSE_COMMANDS && command < ARRAY_LENGTH(s_command_names)) + logerror("%s('%s'): executing command: %s [cbp = %08x]\n", shortname(), basetag(), s_command_names[command], m_cbp); tmp = read_word(m_cbp + 2); m_list_switch = BIT(tmp, 6); @@ -303,7 +303,7 @@ void i82730_device::execute_command() // LPEN ENABLE case 0x07: - fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), m_command_names[command]); + fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), s_command_names[command]); break; // READ STATUS @@ -314,17 +314,17 @@ void i82730_device::execute_command() // LD CUR POS case 0x09: - fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), m_command_names[command]); + fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), s_command_names[command]); break; // SELF TEST case 0x0a: - fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), m_command_names[command]); + fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), s_command_names[command]); break; // TEST ROW BUFFER case 0x0b: - fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), m_command_names[command]); + fatalerror("%s('%s'): Unimplemented command %s\n", shortname(), basetag(), s_command_names[command]); break; default: diff --git a/src/devices/video/i82730.h b/src/devices/video/i82730.h index 2e459803d93..f9de659e825 100644 --- a/src/devices/video/i82730.h +++ b/src/devices/video/i82730.h @@ -8,10 +8,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_I82730_H +#define MAME_VIDEO_I82730_H -#ifndef __I82730_H__ -#define __I82730_H__ +#pragma once @@ -27,15 +27,13 @@ devcb = &i82730_device::set_sint_handler(*device, DEVCB_##_devcb); #define MCFG_I82730_UPDATE_ROW_CB(_class, _method) \ - i82730_device::set_update_row_callback(*device, i82730_update_row_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + i82730_device::set_update_row_callback(*device, i82730_device::update_row_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate i82730_update_row_delegate; - #define I82730_UPDATE_ROW(name) \ void name(bitmap_rgb32 &bitmap, uint16_t *data, uint8_t lc, uint16_t y, int x_count) @@ -45,16 +43,18 @@ typedef device_delegate update_row_delegate; + // construction/destruction i82730_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template static devcb_base &set_sint_handler(device_t &device, _Object object) - { return downcast(device).m_sint_handler.set_callback(object); } + template static devcb_base &set_sint_handler(device_t &device, Object &&cb) + { return downcast(device).m_sint_handler.set_callback(std::forward(cb)); } // inline configuration static void set_cpu_tag(device_t &device, device_t *owner, const char *tag); - static void set_update_row_callback(device_t &device, i82730_update_row_delegate callback) { downcast(device).m_update_row_cb = callback; } + static void set_update_row_callback(device_t &device, update_row_delegate &&cb) { downcast(device).m_update_row_cb = std::move(cb); } uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -80,7 +80,7 @@ private: VDIP = 0x100 // virtual display in progress }; - static const char* m_command_names[]; + static const char *const s_command_names[]; bool sysbus_16bit() { return BIT(m_sysbus, 0); } @@ -97,7 +97,7 @@ private: TIMER_CALLBACK_MEMBER(row_update); devcb_write_line m_sint_handler; - i82730_update_row_delegate m_update_row_cb; + update_row_delegate m_update_row_cb; const char *m_cpu_tag; address_space *m_program; @@ -151,6 +151,6 @@ private: }; // device type definition -extern const device_type I82730; +DECLARE_DEVICE_TYPE(I82730, i82730_device) -#endif // __I82730_H__ +#endif // MAME_VIDEO_I82730_H diff --git a/src/devices/video/i8275.cpp b/src/devices/video/i8275.cpp index b2f7cfc8daf..99081d83d59 100644 --- a/src/devices/video/i8275.cpp +++ b/src/devices/video/i8275.cpp @@ -19,16 +19,17 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" + //************************************************************************** // MACROS / CONSTANTS //************************************************************************** -#define LOG 0 - -const int DMA_BURST_SPACING[] = { 0, 7, 15, 23, 31, 39, 47, 55 }; +static const int DMA_BURST_SPACING[] = { 0, 7, 15, 23, 31, 39, 47, 55 }; #define DOUBLE_SPACED_ROWS \ @@ -82,7 +83,7 @@ const int i8275_device::character_attribute[3][16] = //************************************************************************** // device type definition -const device_type I8275 = device_creator; +DEFINE_DEVICE_TYPE(I8275, i8275_device, "i8275x", "Intel 8275 CRTC") @@ -95,7 +96,7 @@ const device_type I8275 = device_creator; //------------------------------------------------- i8275_device::i8275_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, I8275, "I8275 CRTC", tag, owner, clock, "i8275x", __FILE__), + device_t(mconfig, I8275, tag, owner, clock), device_video_interface(mconfig, *this), m_write_irq(*this), m_write_drq(*this), @@ -204,24 +205,24 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param, switch (id) { case TIMER_HRTC_ON: - //if (LOG) logerror("I8275 '%s' y %u x %u HRTC 1\n", tag(), y, x); + //LOG("I8275 y %u x %u HRTC 1\n", y, x); m_write_hrtc(1); break; case TIMER_DRQ_ON: - //if (LOG) logerror("I8275 '%s' y %u x %u DRQ 1\n", tag(), y, x); + //LOG("I8275 y %u x %u DRQ 1\n", y, x); m_write_drq(1); break; case TIMER_SCANLINE: if (!(m_status & ST_VE)) break; - //if (LOG) logerror("I8275 '%s' y %u x %u HRTC 0\n", tag(), y, x); + //LOG("I8275 y %u x %u HRTC 0\n", y, x); m_write_hrtc(0); if (m_scanline == 0) { - //if (LOG) logerror("I8275 '%s' y %u x %u VRTC 0\n", tag(), y, x); + //LOG("I8275 y %u x %u VRTC 0\n", y, x); m_write_vrtc(0); } @@ -234,7 +235,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param, m_status |= ST_DU; m_du = true; - //if (LOG) logerror("I8275 '%s' y %u x %u DMA Underrun\n", tag(), y, x); + //LOG("I8275 y %u x %u DMA Underrun\n", y, x); m_write_drq(0); } @@ -259,7 +260,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param, { if (m_status & ST_IE) { - //if (LOG) logerror("I8275 '%s' y %u x %u IRQ 1\n", tag(), y, x); + //LOG("I8275 y %u x %u IRQ 1\n", y, x); m_status |= ST_IR; m_write_irq(ASSERT_LINE); } @@ -267,7 +268,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param, if (m_scanline == m_vrtc_scanline) { - //if (LOG) logerror("I8275 '%s' y %u x %u VRTC 1\n", tag(), y, x); + //LOG("I8275 y %u x %u VRTC 1\n", y, x); m_write_vrtc(1); // reset field attributes @@ -459,7 +460,7 @@ READ8_MEMBER( i8275_device::read ) if (m_status & ST_IR) { - //if (LOG) logerror("I8275 '%s' IRQ 0\n", tag()); + //LOG("I8275 IRQ 0\n"); m_write_irq(CLEAR_LINE); } @@ -488,15 +489,15 @@ WRITE8_MEMBER( i8275_device::write ) { if (offset & 0x01) { - if (LOG) logerror("I8275 '%s' Command %02x\n", tag(), data); + LOG("I8275 Command %02x\n", data); switch (data >> 5) { case CMD_RESET: - if (LOG) logerror("I8275 '%s' Reset\n", tag()); + LOG("I8275 Reset\n"); m_status &= ~ST_IE; - if (LOG) logerror("I8275 '%s' IRQ 0\n", tag()); + LOG("I8275 IRQ 0\n"); m_write_irq(CLEAR_LINE); m_write_drq(0); @@ -505,49 +506,47 @@ WRITE8_MEMBER( i8275_device::write ) break; case CMD_START_DISPLAY: - { - m_param[REG_DMA] = data; - if (LOG) logerror("I8275 '%s' Start Display %u %u\n", tag(), DMA_BURST_COUNT, DMA_BURST_SPACE); - m_status |= (ST_IE | ST_VE); - } + m_param[REG_DMA] = data; + LOG("I8275 Start Display %u %u\n", DMA_BURST_COUNT, DMA_BURST_SPACE); + m_status |= (ST_IE | ST_VE); break; case CMD_STOP_DISPLAY: - if (LOG) logerror("I8275 '%s' Stop Display\n", tag()); + LOG("I8275 Stop Display\n"); m_status &= ~ST_VE; break; case CMD_READ_LIGHT_PEN: - if (LOG) logerror("I8275 '%s' Read Light Pen\n", tag()); + LOG("I8275 Read Light Pen\n"); m_param_idx = REG_LPEN_COL; m_param_end = REG_LPEN_ROW; break; case CMD_LOAD_CURSOR: - if (LOG) logerror("I8275 '%s' Load Cursor\n", tag()); + LOG("I8275 Load Cursor\n"); m_param_idx = REG_CUR_COL; m_param_end = REG_CUR_ROW; break; case CMD_ENABLE_INTERRUPT: - if (LOG) logerror("I8275 '%s' Enable Interrupt\n", tag()); + LOG("I8275 Enable Interrupt\n"); m_status |= ST_IE; break; case CMD_DISABLE_INTERRUPT: - if (LOG) logerror("I8275 '%s' Disable Interrupt\n", tag()); + LOG("I8275 Disable Interrupt\n"); m_status &= ~ST_IE; break; case CMD_PRESET_COUNTERS: - if (LOG) logerror("I8275 '%s' Preset Counters\n", tag()); + LOG("I8275 Preset Counters\n"); m_scanline = 0; break; } } else { - if (LOG) logerror("I8275 '%s' Parameter %02x\n", tag(), data); + LOG("I8275 Parameter %02x\n", data); m_param[m_param_idx] = data; @@ -567,7 +566,7 @@ WRITE8_MEMBER( i8275_device::write ) WRITE8_MEMBER( i8275_device::dack_w ) { - //if (LOG) logerror("I8275 '%s' y %u x %u DACK %04x:%02x %u\n", tag(), m_screen->vpos(), m_screen->hpos(), offset, data, m_buffer_idx); + //LOG("I8275 y %u x %u DACK %04x:%02x %u\n", m_screen->vpos(), m_screen->hpos(), offset, data, m_buffer_idx); m_write_drq(0); @@ -673,7 +672,7 @@ void i8275_device::recompute_parameters() int max_visible_x = (CHARACTERS_PER_ROW * m_hpixels_per_column) - 1; int max_visible_y = (CHARACTER_ROWS_PER_FRAME * SCANLINES_PER_ROW) - 1; - if (LOG) logerror("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); + LOG("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); rectangle visarea; visarea.set(0, max_visible_x, 0, max_visible_y); @@ -686,7 +685,7 @@ void i8275_device::recompute_parameters() m_vrtc_scanline = CHARACTER_ROWS_PER_FRAME * SCANLINES_PER_ROW; m_vrtc_drq_scanline = vert_pix_total - SCANLINES_PER_ROW; - if (LOG) logerror("irq_y %u vrtc_y %u drq_y %u\n", m_irq_scanline, m_vrtc_scanline, m_vrtc_drq_scanline); + LOG("irq_y %u vrtc_y %u drq_y %u\n", m_irq_scanline, m_vrtc_scanline, m_vrtc_drq_scanline); m_scanline_timer->adjust(m_screen->time_until_pos(0, 0), 0, m_screen->scan_period()); diff --git a/src/devices/video/i8275.h b/src/devices/video/i8275.h index affc47e1f64..edb2e43e855 100644 --- a/src/devices/video/i8275.h +++ b/src/devices/video/i8275.h @@ -29,10 +29,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_VIDEO_I8275_H +#define MAME_VIDEO_I8275_H -#ifndef __I8275x__ -#define __I8275x__ +#pragma once @@ -48,7 +48,7 @@ i8275_device::static_set_character_width(*device, _value); #define MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \ - i8275_device::static_set_display_callback(*device, i8275_draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + i8275_device::static_set_display_callback(*device, i8275_device::draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_I8275_DRQ_CALLBACK(_write) \ devcb = &i8275_device::set_drq_wr_callback(*device, DEVCB_##_write); @@ -68,8 +68,6 @@ // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate i8275_draw_character_delegate; - // ======================> i8275_device @@ -77,16 +75,18 @@ class i8275_device : public device_t, public device_video_interface { public: + typedef device_delegate draw_character_delegate; + // construction/destruction i8275_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void static_set_character_width(device_t &device, int value) { downcast(device).m_hpixels_per_column = value; } - static void static_set_display_callback(device_t &device, i8275_draw_character_delegate callback) { downcast(device).m_display_cb = callback; } + static void static_set_display_callback(device_t &device, draw_character_delegate &&cb) { downcast(device).m_display_cb = std::move(cb); } - template static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_drq.set_callback(object); } - template static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_irq.set_callback(object); } - template static devcb_base &set_hrtc_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_hrtc.set_callback(object); } - template static devcb_base &set_vrtc_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_vrtc.set_callback(object); } + template static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_drq.set_callback(std::forward(cb)); } + template static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_irq.set_callback(std::forward(cb)); } + template static devcb_base &set_hrtc_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_hrtc.set_callback(std::forward(cb)); } + template static devcb_base &set_vrtc_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_vrtc.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -183,7 +183,7 @@ protected: devcb_write_line m_write_hrtc; devcb_write_line m_write_vrtc; - i8275_draw_character_delegate m_display_cb; + draw_character_delegate m_display_cb; int m_hpixels_per_column; bitmap_rgb32 m_bitmap; @@ -228,8 +228,6 @@ protected: // device type definition -extern const device_type I8275; - - +DECLARE_DEVICE_TYPE(I8275, i8275_device) -#endif +#endif // MAME_VIDEO_I8275_H diff --git a/src/devices/video/jangou_blitter.cpp b/src/devices/video/jangou_blitter.cpp index d7d446fb813..b5e75a44eff 100644 --- a/src/devices/video/jangou_blitter.cpp +++ b/src/devices/video/jangou_blitter.cpp @@ -23,7 +23,7 @@ //************************************************************************** // device type definition -const device_type JANGOU_BLITTER = device_creator; +DEFINE_DEVICE_TYPE(JANGOU_BLITTER, jangou_blitter_device, "jangou_blitter", "Jangou Blitter Custom Chip") //************************************************************************** @@ -35,7 +35,7 @@ const device_type JANGOU_BLITTER = device_creator; //------------------------------------------------- jangou_blitter_device::jangou_blitter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, JANGOU_BLITTER, "Jangou Blitter Custom Chip", tag, owner, clock, "jangou_blitter", __FILE__) + : device_t(mconfig, JANGOU_BLITTER, tag, owner, clock) { } diff --git a/src/devices/video/jangou_blitter.h b/src/devices/video/jangou_blitter.h index 031a0cc7ebe..5160f42850e 100644 --- a/src/devices/video/jangou_blitter.h +++ b/src/devices/video/jangou_blitter.h @@ -1,16 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Angelo Salese -/*************************************************************************** -Template for skeleton device - -***************************************************************************/ +#ifndef MAME_VIDEO_JANGOU_BLITTER_H +#define MAME_VIDEO_JANGOU_BLITTER_H #pragma once -#ifndef __JANGOU_BLITTERDEV_H__ -#define __JANGOU_BLITTERDEV_H__ - //************************************************************************** @@ -39,7 +34,7 @@ public: DECLARE_WRITE8_MEMBER( bltflip_w ); DECLARE_READ_LINE_MEMBER( status_r ); - uint8_t m_blit_buffer[256 * 256]; + const uint8_t &blit_buffer(unsigned y, unsigned x) const { return m_blit_buffer[(256 * y) + x]; } protected: // device-level overrides @@ -47,6 +42,8 @@ protected: virtual void device_reset() override; private: + uint8_t m_blit_buffer[256 * 256]; + void plot_gfx_pixel( uint8_t pix, int x, int y ); uint8_t gfx_nibble( uint32_t niboffset ); uint8_t m_pen_data[0x10]; @@ -58,14 +55,6 @@ private: // device type definition -extern const device_type JANGOU_BLITTER; - - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - - +DECLARE_DEVICE_TYPE(JANGOU_BLITTER, jangou_blitter_device) -#endif +#endif // MAME_VIDEO_JANGOU_BLITTER_H diff --git a/src/devices/video/m50458.cpp b/src/devices/video/m50458.cpp index b8fa3984599..1b34b718c8e 100644 --- a/src/devices/video/m50458.cpp +++ b/src/devices/video/m50458.cpp @@ -27,7 +27,7 @@ //************************************************************************** // device type definition -const device_type M50458 = device_creator; +DEFINE_DEVICE_TYPE(M50458, m50458_device, "m50458", "Mitsubishi M50458 OSD") static ADDRESS_MAP_START( m50458_vram, AS_0, 16, m50458_device ) AM_RANGE(0x0000, 0x023f) AM_RAM // vram @@ -174,10 +174,10 @@ inline void m50458_device::write_word(offs_t address, uint16_t data) //------------------------------------------------- m50458_device::m50458_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, M50458, "M50458 OSD", tag, owner, clock, "m50458", __FILE__), - device_memory_interface(mconfig, *this), - device_video_interface(mconfig, *this), - m_space_config("videoram", ENDIANNESS_LITTLE, 16, 16, 0, nullptr, *ADDRESS_MAP_NAME(m50458_vram)) + : device_t(mconfig, M50458, tag, owner, clock) + , device_memory_interface(mconfig, *this) + , device_video_interface(mconfig, *this) + , m_space_config("videoram", ENDIANNESS_LITTLE, 16, 16, 0, nullptr, *ADDRESS_MAP_NAME(m50458_vram)) { } diff --git a/src/devices/video/m50458.h b/src/devices/video/m50458.h index 15c8e03ff00..d4eebc4e9a8 100644 --- a/src/devices/video/m50458.h +++ b/src/devices/video/m50458.h @@ -6,10 +6,10 @@ Mitsubishi M50458 OSD chip ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_M50458_H +#define MAME_VIDEO_M50458_H -#ifndef __M50458DEV_H__ -#define __M50458DEV_H__ +#pragma once @@ -26,12 +26,6 @@ Mitsubishi M50458 OSD chip // TYPE DEFINITIONS //************************************************************************** -enum m50458_state_t -{ - OSD_SET_ADDRESS = 0, - OSD_SET_DATA -}; - // ======================> m50458_device class m50458_device : public device_t, @@ -59,11 +53,17 @@ public: virtual const tiny_rom_entry *device_rom_region() const override; protected: + enum m50458_state_t + { + OSD_SET_ADDRESS = 0, + OSD_SET_DATA + }; + // device-level overrides virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; int m_latch; int m_reset_line; @@ -92,14 +92,6 @@ private: // device type definition -extern const device_type M50458; - - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - - +DECLARE_DEVICE_TYPE(M50458, m50458_device) -#endif +#endif // MAME_VIDEO_M50458_H diff --git a/src/devices/video/mb90082.cpp b/src/devices/video/mb90082.cpp index d962d701fa4..ef668a91732 100644 --- a/src/devices/video/mb90082.cpp +++ b/src/devices/video/mb90082.cpp @@ -21,7 +21,7 @@ //************************************************************************** // device type definition -const device_type MB90082 = device_creator; +DEFINE_DEVICE_TYPE(MB90082, mb90082_device, "mb90082", "Fujitsu MB90082 OSD") static ADDRESS_MAP_START( mb90082_vram, AS_0, 16, mb90082_device ) AM_RANGE(0x0000, 0x023f) AM_RAM // main screen vram @@ -86,9 +86,9 @@ inline void mb90082_device::write_word(offs_t address, uint16_t data) //------------------------------------------------- mb90082_device::mb90082_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MB90082, "MB90082 OSD", tag, owner, clock, "mb90082", __FILE__), - device_memory_interface(mconfig, *this), - m_space_config("videoram", ENDIANNESS_LITTLE, 16, 16, 0, nullptr, *ADDRESS_MAP_NAME(mb90082_vram)) + : device_t(mconfig, MB90082, tag, owner, clock) + , device_memory_interface(mconfig, *this) + , m_space_config("videoram", ENDIANNESS_LITTLE, 16, 16, 0, nullptr, *ADDRESS_MAP_NAME(mb90082_vram)) { } diff --git a/src/devices/video/mb90082.h b/src/devices/video/mb90082.h index 493c8fc0079..9014b14a79e 100644 --- a/src/devices/video/mb90082.h +++ b/src/devices/video/mb90082.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_MB90082DEV_H +#define MAME_VIDEO_MB90082DEV_H -#ifndef __MB90082DEV_H__ -#define __MB90082DEV_H__ +#pragma once @@ -24,12 +24,6 @@ // TYPE DEFINITIONS //************************************************************************** -enum -{ - OSD_COMMAND = 0, - OSD_DATA -}; - // ======================> mb90082_device @@ -52,9 +46,15 @@ protected: virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; private: + enum + { + OSD_COMMAND = 0, + OSD_DATA + }; + uint8_t m_cmd_ff; uint8_t m_cmd,m_cmd_param; uint8_t m_reset_line; @@ -72,14 +72,6 @@ private: // device type definition -extern const device_type MB90082; - - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - - +DECLARE_DEVICE_TYPE(MB90082, mb90082_device) -#endif +#endif // MAME_VIDEO_MB90082DEV_H diff --git a/src/devices/video/mb_vcu.cpp b/src/devices/video/mb_vcu.cpp index 39ad396f185..d149d5880a0 100644 --- a/src/devices/video/mb_vcu.cpp +++ b/src/devices/video/mb_vcu.cpp @@ -30,7 +30,7 @@ TODO: //************************************************************************** // device type definition -const device_type MB_VCU = device_creator; +DEFINE_DEVICE_TYPE(MB_VCU, mb_vcu_device, "mb_vcu", "Mazer Blazer custom VCU") //------------------------------------------------- // static_set_palette_tag: Set the tag of the @@ -151,7 +151,7 @@ inline void mb_vcu_device::write_io(offs_t address, uint8_t data) //------------------------------------------------- mb_vcu_device::mb_vcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MB_VCU, "Mazer Blazer custom VCU", tag, owner, clock, "mb_vcu", __FILE__) + : device_t(mconfig, MB_VCU, tag, owner, clock) , device_memory_interface(mconfig, *this) , device_video_interface(mconfig, *this) , m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 19, 0, nullptr, *ADDRESS_MAP_NAME(mb_vcu_vram)) diff --git a/src/devices/video/mb_vcu.h b/src/devices/video/mb_vcu.h index 8c15ded23dc..4171f14b03b 100644 --- a/src/devices/video/mb_vcu.h +++ b/src/devices/video/mb_vcu.h @@ -1,9 +1,9 @@ // license:LGPL-2.1+ // copyright-holders:Angelo Salese -#pragma once +#ifndef MAME_VIDEO_MB_VCU_H +#define MAME_VIDEO_MB_VCU_H -#ifndef __MB_VCUDEV_H__ -#define __MB_VCUDEV_H__ +#pragma once //************************************************************************** @@ -45,7 +45,8 @@ protected: virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + private: inline uint8_t read_byte(offs_t address); inline void write_byte(offs_t address, uint8_t data); @@ -76,7 +77,7 @@ private: // device type definition -extern const device_type MB_VCU; +DECLARE_DEVICE_TYPE(MB_VCU, mb_vcu_device) //************************************************************************** @@ -89,4 +90,4 @@ extern const device_type MB_VCU; #define MCFG_MB_VCU_PALETTE(_palette_tag) \ mb_vcu_device::static_set_palette_tag(*device, "^" _palette_tag); -#endif +#endif // MAME_VIDEO_MB_VCU_H diff --git a/src/devices/video/mc6845.cpp b/src/devices/video/mc6845.cpp index add19de1f2b..4bf1c757c2e 100644 --- a/src/devices/video/mc6845.cpp +++ b/src/devices/video/mc6845.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Wilbert Pol +// copyright-holders:Wilbert Pol, Bartman/Abyss (HD6345) /********************************************************************** Motorola MC6845 and compatible CRT controller emulation @@ -43,23 +43,23 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" -#define LOG (0) - -const device_type MC6845 = device_creator; -const device_type MC6845_1 = device_creator; -const device_type R6545_1 = device_creator; -const device_type C6545_1 = device_creator; -const device_type H46505 = device_creator; -const device_type HD6845 = device_creator; -const device_type SY6545_1 = device_creator; -const device_type SY6845E = device_creator; -const device_type HD6345 = device_creator; -const device_type AMS40041 = device_creator; -const device_type AMS40489 = device_creator; -const device_type MOS8563 = device_creator; -const device_type MOS8568 = device_creator; +DEFINE_DEVICE_TYPE(MC6845, mc6845_device, "mc6845", "Motorola MC6845 CRTC") +DEFINE_DEVICE_TYPE(MC6845_1, mc6845_1_device, "mc6845_1", "Motorola MC6845-1 CRTC") +DEFINE_DEVICE_TYPE(R6545_1, r6545_1_device, "r6545_1", "Rockwell R6545-1 CRTC") +DEFINE_DEVICE_TYPE(C6545_1, c6545_1_device, "c6545_1", "C6545-1 CRTC") +DEFINE_DEVICE_TYPE(H46505, h46505_device, "h46505", "Hitachi HD46505 CRTC") +DEFINE_DEVICE_TYPE(HD6845, hd6845_device, "hd6845", "Hitachi HD6845 CRTC") +DEFINE_DEVICE_TYPE(SY6545_1, sy6545_1_device, "sy6545_1", "Synertek SY6545-1 CRTC") +DEFINE_DEVICE_TYPE(SY6845E, sy6845e_device, "sy6845e", "Synertek SY6845E CRTC") +DEFINE_DEVICE_TYPE(HD6345, hd6345_device, "hd6345", "Hitachi HD6345 CRTC") +DEFINE_DEVICE_TYPE(AMS40041, ams40041_device, "ams40041", "AMS40041 CRTC") +DEFINE_DEVICE_TYPE(AMS40489, ams40489_device, "ams40489", "AMS40489 ASIC (CRTC)") +DEFINE_DEVICE_TYPE(MOS8563, mos8563_device, "mos8563", "MOS 8563 VDC") +DEFINE_DEVICE_TYPE(MOS8568, mos8568_device, "mos8568", "MOS 8568 VDC") /* mode macros */ @@ -91,8 +91,8 @@ const device_type MOS8568 = device_creator; #define ATTR_ALTERNATE_CHARSET BIT(attr, 7) -mc6845_device::mc6845_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +mc6845_device::mc6845_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), device_video_interface(mconfig, *this, false), m_show_border_area(true), m_interlace_adjust(0), @@ -109,19 +109,7 @@ mc6845_device::mc6845_device(const machine_config &mconfig, device_type type, co } mc6845_device::mc6845_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MC6845, "MC6845 CRTC", tag, owner, clock, "mc6845", __FILE__), - device_video_interface(mconfig, *this, false), - m_show_border_area(true), - m_interlace_adjust(0), - m_visarea_adjust_min_x(0), - m_visarea_adjust_max_x(0), - m_visarea_adjust_min_y(0), - m_visarea_adjust_max_y(0), - m_hpixels_per_column(0), - m_out_de_cb(*this), - m_out_cur_cb(*this), - m_out_hsync_cb(*this), - m_out_vsync_cb(*this) + : mc6845_device(mconfig, MC6845, tag, owner, clock) { } @@ -210,7 +198,7 @@ READ8_MEMBER( mc6845_device::register_r ) WRITE8_MEMBER( mc6845_device::register_w ) { - if (LOG) logerror("%s:M6845 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data); + LOG("%s:M6845 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data); switch (m_register_address_latch) { @@ -358,7 +346,7 @@ READ8_MEMBER( mos8563_device::register_r ) WRITE8_MEMBER( mos8563_device::register_w ) { - if (LOG) logerror("%s:MOS8563 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data); + LOG("%s:MOS8563 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data); switch (m_register_address_latch) { @@ -419,6 +407,60 @@ WRITE8_MEMBER( mos8563_device::register_w ) recompute_parameters(false); } +WRITE8_MEMBER( hd6345_device::address_w ) +{ + m_register_address_latch = data & 0x3f; +} + + +READ8_MEMBER( hd6345_device::register_r ) +{ + uint8_t ret = 0xff; + + switch (m_register_address_latch) + { + case 0x0c: ret = m_supports_disp_start_addr_r ? (m_disp_start_addr >> 8) & 0xff : 0; break; + case 0x0d: ret = m_supports_disp_start_addr_r ? (m_disp_start_addr >> 0) & 0xff : 0; break; + case 0x0e: ret = (m_cursor_addr >> 8) & 0xff; break; + case 0x0f: ret = (m_cursor_addr >> 0) & 0xff; break; + case 0x10: ret = (m_light_pen_addr >> 8) & 0xff; m_light_pen_latched = false; break; + case 0x11: ret = (m_light_pen_addr >> 0) & 0xff; m_light_pen_latched = false; break; + // TODO: REST + } + + return ret; +} + +WRITE8_MEMBER( hd6345_device::register_w ) +{ + LOG("%s:HD6345 reg 0x%02x = 0x%02x\n", machine().describe_context(), m_register_address_latch, data); + + switch (m_register_address_latch) + { + case 0x00: m_horiz_char_total = data & 0xff; break; + case 0x01: m_horiz_disp = data & 0xff; break; + case 0x02: m_horiz_sync_pos = data & 0xff; break; + case 0x03: m_sync_width = data & 0xff; break; + case 0x04: m_vert_char_total = data & 0xff; break; + case 0x05: m_vert_total_adj = data & 0x1f; break; + case 0x06: m_vert_disp = data & 0xff; break; + case 0x07: m_vert_sync_pos = data & 0xff; break; + case 0x08: m_mode_control = data & 0xff; break; + case 0x09: m_max_ras_addr = data & 0x1f; break; + case 0x0a: m_cursor_start_ras = data & 0x7f; break; + case 0x0b: m_cursor_end_ras = data & 0x1f; break; + case 0x0c: m_disp_start_addr = ((data & 0x3f) << 8) | (m_disp_start_addr & 0x00ff); break; + case 0x0d: m_disp_start_addr = ((data & 0xff) << 0) | (m_disp_start_addr & 0xff00); break; + case 0x0e: m_cursor_addr = ((data & 0x3f) << 8) | (m_cursor_addr & 0x00ff); break; + case 0x0f: m_cursor_addr = ((data & 0xff) << 0) | (m_cursor_addr & 0xff00); break; + case 0x10: /* read-only */ break; + case 0x11: /* read-only */ break; + // TODO: rest + } + + recompute_parameters(false); +} + inline uint8_t mos8563_device::read_videoram(offs_t offset) { @@ -443,12 +485,6 @@ READ_LINE_MEMBER( mc6845_device::cursor_r ) } -READ_LINE_MEMBER( mc6845_device::cursor_state_r ) -{ - return m_cursor_state; -} - - READ_LINE_MEMBER( mc6845_device::hsync_r ) { return m_hsync; @@ -539,7 +575,7 @@ void mc6845_device::recompute_parameters(bool postload) else visarea.set(0 + m_visarea_adjust_min_x, max_visible_x + m_visarea_adjust_max_x, 0 + m_visarea_adjust_min_y, max_visible_y + m_visarea_adjust_max_y); - if (LOG) logerror("M6845 config screen: HTOTAL: 0x%x VTOTAL: 0x%x MAX_X: 0x%x MAX_Y: 0x%x HSYNC: 0x%x-0x%x VSYNC: 0x%x-0x%x Freq: %ffps\n", + LOG("M6845 config screen: HTOTAL: %d VTOTAL: %d MAX_X: %d MAX_Y: %d HSYNC: %d-%d VSYNC: %d-%d Freq: %ffps\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, hsync_on_pos, hsync_off_pos - 1, vsync_on_pos, vsync_off_pos - 1, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); if ( m_screen != nullptr ) @@ -1001,7 +1037,7 @@ uint32_t mc6845_device::screen_update(screen_device &screen, bitmap_rgb32 &bitma } else { - if (LOG) logerror("M6845: Invalid screen parameters - display disabled!!!\n"); + LOG("M6845: Invalid screen parameters - display disabled!!!\n"); } return 0; @@ -1228,7 +1264,7 @@ void hd6345_device::device_start() m_supports_status_reg_d5 = true; m_supports_status_reg_d6 = true; m_supports_status_reg_d7 = true; - m_supports_transparent = true; + //m_supports_transparent = true; } @@ -1280,7 +1316,7 @@ void mos8563_device::device_start() m_update_ready_bit = 1; // default update_row delegate - m_update_row_cb = mc6845_update_row_delegate(FUNC(mos8563_device::vdc_update_row), this); + m_update_row_cb = update_row_delegate(FUNC(mos8563_device::vdc_update_row), this); m_char_blink_state = false; m_char_blink_count = 0; @@ -1393,8 +1429,8 @@ const address_space_config *mos8563_device::memory_space_config(address_spacenum { switch (spacenum) { - case AS_0: return &m_videoram_space_config; - default: return nullptr; + case AS_0: return &m_videoram_space_config; + default: return nullptr; } } @@ -1405,66 +1441,66 @@ ADDRESS_MAP_END r6545_1_device::r6545_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, R6545_1, "R6545-1 CRTC", tag, owner, clock, "r6545_1", __FILE__) + : mc6845_device(mconfig, R6545_1, tag, owner, clock) { } h46505_device::h46505_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, H46505, "H46505 CRTC", tag, owner, clock, "h46505", __FILE__) + : mc6845_device(mconfig, H46505, tag, owner, clock) { } mc6845_1_device::mc6845_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, MC6845_1, "MC6845-1 CRTC", tag, owner, clock, "mc6845_1", __FILE__) + : mc6845_device(mconfig, MC6845_1, tag, owner, clock) { } hd6845_device::hd6845_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, HD6845, "HD6845 CRTC", tag, owner, clock, "hd6845", __FILE__) + : mc6845_device(mconfig, HD6845, tag, owner, clock) { } c6545_1_device::c6545_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, C6545_1, "C6545-1 CRTC", tag, owner, clock, "c6545_1", __FILE__) + : mc6845_device(mconfig, C6545_1, tag, owner, clock) { } sy6545_1_device::sy6545_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, SY6545_1, "SY6545-1 CRTC", tag, owner, clock, "sy6545_1", __FILE__) + : mc6845_device(mconfig, SY6545_1, tag, owner, clock) { } sy6845e_device::sy6845e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, SY6845E, "SY6845E CRTC", tag, owner, clock, "sy6845e", __FILE__) + : mc6845_device(mconfig, SY6845E, tag, owner, clock) { } hd6345_device::hd6345_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, HD6345, "HD6345 CRTC", tag, owner, clock, "hd6345", __FILE__) + : mc6845_device(mconfig, HD6345, tag, owner, clock) { } ams40041_device::ams40041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, AMS40041, "AMS40041 CRTC", tag, owner, clock, "ams40041", __FILE__) + : mc6845_device(mconfig, AMS40041, tag, owner, clock) { } ams40489_device::ams40489_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, AMS40489, "AMS40489 ASIC (CRTC)", tag, owner, clock, "ams40489", __FILE__) + : mc6845_device(mconfig, AMS40489, tag, owner, clock) { } -mos8563_device::mos8563_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : mc6845_device(mconfig, type, name, tag, owner, clock, shortname, source), +mos8563_device::mos8563_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : mc6845_device(mconfig, type, tag, owner, clock), device_memory_interface(mconfig, *this), m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(mos8563_videoram_map)), m_palette(*this, "palette") @@ -1474,17 +1510,13 @@ mos8563_device::mos8563_device(const machine_config &mconfig, device_type type, mos8563_device::mos8563_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6845_device(mconfig, MOS8563, "MOS8563", tag, owner, clock, "mos8563", __FILE__), - device_memory_interface(mconfig, *this), - m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(mos8563_videoram_map)), - m_palette(*this, "palette") + : mos8563_device(mconfig, MOS8563, tag, owner, clock) { - set_clock_scale(1.0/8); } mos8568_device::mos8568_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mos8563_device(mconfig, MOS8568, "MOS8568", tag, owner, clock, "mos8568", __FILE__) + : mos8563_device(mconfig, MOS8568, tag, owner, clock) { } diff --git a/src/devices/video/mc6845.h b/src/devices/video/mc6845.h index 52fbad4711a..dead2602689 100644 --- a/src/devices/video/mc6845.h +++ b/src/devices/video/mc6845.h @@ -1,14 +1,15 @@ // license:BSD-3-Clause -// copyright-holders:Wilbert Pol +// copyright-holders:Wilbert Pol, Bartman/Abyss (HD6345) /********************************************************************** Motorola MC6845 and compatible CRT controller emulation **********************************************************************/ -#ifndef __MC6845__ -#define __MC6845__ +#ifndef MAME_VIDEO_MC6845_H +#define MAME_VIDEO_MC6845_H +#pragma once #define MCFG_MC6845_ADD(_tag, _variant, _screen_tag, _clock) \ @@ -36,19 +37,19 @@ mc6845_device::set_char_width(*device, _pixels); #define MCFG_MC6845_RECONFIGURE_CB(_class, _method) \ - mc6845_device::set_reconfigure_callback(*device, mc6845_reconfigure_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + mc6845_device::set_reconfigure_callback(*device, mc6845_device::reconfigure_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_MC6845_BEGIN_UPDATE_CB(_class, _method) \ - mc6845_device::set_begin_update_callback(*device, mc6845_begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + mc6845_device::set_begin_update_callback(*device, mc6845_device::begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_MC6845_UPDATE_ROW_CB(_class, _method) \ - mc6845_device::set_update_row_callback(*device, mc6845_update_row_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + mc6845_device::set_update_row_callback(*device, mc6845_device::update_row_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_MC6845_END_UPDATE_CB(_class, _method) \ - mc6845_device::set_end_update_callback(*device, mc6845_end_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + mc6845_device::set_end_update_callback(*device, mc6845_device::end_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_MC6845_ADDR_CHANGED_CB(_class, _method) \ - mc6845_device::set_on_update_addr_change_callback(*device, mc6845_on_update_addr_changed_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + mc6845_device::set_on_update_addr_change_callback(*device, mc6845_device::on_update_addr_changed_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_MC6845_OUT_DE_CB(_write) \ devcb = &mc6845_device::set_out_de_callback(*device, DEVCB_##_write); @@ -64,42 +65,31 @@ /* callback definitions */ -typedef device_delegate mc6845_reconfigure_delegate; #define MC6845_RECONFIGURE(name) void name(int width, int height, const rectangle &visarea, attoseconds_t frame_period) -typedef device_delegate mc6845_begin_update_delegate; #define MC6845_BEGIN_UPDATE(name) void name(bitmap_rgb32 &bitmap, const rectangle &cliprect) -typedef device_delegate mc6845_update_row_delegate; #define MC6845_UPDATE_ROW(name) void name(bitmap_rgb32 &bitmap, const rectangle &cliprect, uint16_t ma, uint8_t ra, \ uint16_t y, uint8_t x_count, int8_t cursor_x, int de, int hbp, int vbp) -typedef device_delegate mc6845_end_update_delegate; #define MC6845_END_UPDATE(name) void name(bitmap_rgb32 &bitmap, const rectangle &cliprect) -typedef device_delegate mc6845_on_update_addr_changed_delegate; #define MC6845_ON_UPDATE_ADDR_CHANGED(name) void name(int address, int strobe) class mc6845_device : public device_t, public device_video_interface { - friend class mc6845_1_device; - friend class r6545_1_device; - friend class c6545_1_device; - friend class h46505_device; - friend class hd6845_device; - friend class sy6545_1_device; - friend class sy6845e_device; - friend class hd6345_device; - friend class ams40041_device; - friend class ams40489_device; - public: + typedef device_delegate reconfigure_delegate; + typedef device_delegate begin_update_delegate; + typedef device_delegate update_row_delegate; + typedef device_delegate end_update_delegate; + typedef device_delegate on_update_addr_changed_delegate; + // construction/destruction mc6845_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - mc6845_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); static void set_show_border_area(device_t &device, bool show) { downcast(device).m_show_border_area = show; } static void set_visarea_adjust(device_t &device, int min_x, int max_x, int min_y, int max_y) @@ -112,16 +102,16 @@ public: } static void set_char_width(device_t &device, int pixels) { downcast(device).m_hpixels_per_column = pixels; } - static void set_reconfigure_callback(device_t &device, mc6845_reconfigure_delegate callback) { downcast(device).m_reconfigure_cb = callback; } - static void set_begin_update_callback(device_t &device, mc6845_begin_update_delegate callback) { downcast(device).m_begin_update_cb = callback; } - static void set_update_row_callback(device_t &device, mc6845_update_row_delegate callback) { downcast(device).m_update_row_cb = callback; } - static void set_end_update_callback(device_t &device, mc6845_end_update_delegate callback) { downcast(device).m_end_update_cb = callback; } - static void set_on_update_addr_change_callback(device_t &device, mc6845_on_update_addr_changed_delegate callback) { downcast(device).m_on_update_addr_changed_cb = callback; } + static void set_reconfigure_callback(device_t &device, reconfigure_delegate &&cb) { downcast(device).m_reconfigure_cb = std::move(cb); } + static void set_begin_update_callback(device_t &device, begin_update_delegate &&cb) { downcast(device).m_begin_update_cb = std::move(cb); } + static void set_update_row_callback(device_t &device, update_row_delegate &&cb) { downcast(device).m_update_row_cb = std::move(cb); } + static void set_end_update_callback(device_t &device, end_update_delegate &&cb) { downcast(device).m_end_update_cb = std::move(cb); } + static void set_on_update_addr_change_callback(device_t &device, on_update_addr_changed_delegate &&cb) { downcast(device).m_on_update_addr_changed_cb = std::move(cb); } - template static devcb_base &set_out_de_callback(device_t &device, _Object object) { return downcast(device).m_out_de_cb.set_callback(object); } - template static devcb_base &set_out_cur_callback(device_t &device, _Object object) { return downcast(device).m_out_cur_cb.set_callback(object); } - template static devcb_base &set_out_hsync_callback(device_t &device, _Object object) { return downcast(device).m_out_hsync_cb.set_callback(object); } - template static devcb_base &set_out_vsync_callback(device_t &device, _Object object) { return downcast(device).m_out_vsync_cb.set_callback(object); } + template static devcb_base &set_out_de_callback(device_t &device, Object &&cb) { return downcast(device).m_out_de_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_cur_callback(device_t &device, Object &&cb) { return downcast(device).m_out_cur_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_hsync_callback(device_t &device, Object &&cb) { return downcast(device).m_out_hsync_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_vsync_callback(device_t &device, Object &&cb) { return downcast(device).m_out_vsync_cb.set_callback(std::forward(cb)); } /* select one of the registers for reading or writing */ DECLARE_WRITE8_MEMBER( address_w ); @@ -140,7 +130,6 @@ public: // read cursor line state DECLARE_READ_LINE_MEMBER( cursor_r ); - DECLARE_READ_LINE_MEMBER( cursor_state_r ); // read horizontal sync line state DECLARE_READ_LINE_MEMBER( hsync_r ); @@ -169,6 +158,8 @@ public: uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: + mc6845_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -291,26 +282,26 @@ protected: int m_hpixels_per_column; /* number of pixels per video memory address */ - mc6845_reconfigure_delegate m_reconfigure_cb; + reconfigure_delegate m_reconfigure_cb; /* if specified, this gets called before any pixel update, optionally return a pointer that will be passed to the update and tear down callbacks */ - mc6845_begin_update_delegate m_begin_update_cb; + begin_update_delegate m_begin_update_cb; /* this gets called for every row, the driver must output x_count * hpixels_per_column pixels. cursor_x indicates the character position where the cursor is, or -1 if there is no cursor on this row */ - mc6845_update_row_delegate m_update_row_cb; + update_row_delegate m_update_row_cb; /* if specified, this gets called after all row updating is complete */ - mc6845_end_update_delegate m_end_update_cb; + end_update_delegate m_end_update_cb; /* Called whenever the update address changes * For vblank/hblank timing strobe indicates the physical update. * vblank/hblank timing not supported yet! */ - mc6845_on_update_addr_changed_delegate m_on_update_addr_changed_cb; + on_update_addr_changed_delegate m_on_update_addr_changed_cb; /* if specified, this gets called for every change of the display enable pin (pin 18) */ devcb_write_line m_out_de_cb; @@ -396,11 +387,17 @@ protected: virtual void device_reset() override; }; +// HD6345/HD6445 CRTC-II +// http://bitsavers.informatik.uni-stuttgart.de/pdf/hitachi/_dataBooks/1987_Hitachi_8_16_Bit_Peripheral_LSI_Data_Book.pdf, pp. 99 class hd6345_device : public mc6845_device { public: hd6345_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + DECLARE_WRITE8_MEMBER(address_w); + DECLARE_READ8_MEMBER(register_r); + DECLARE_WRITE8_MEMBER(register_w); + protected: virtual void device_start() override; virtual void device_reset() override; @@ -430,7 +427,6 @@ class mos8563_device : public mc6845_device, public device_memory_interface { public: - mos8563_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); mos8563_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; @@ -448,6 +444,8 @@ public: MC6845_UPDATE_ROW( vdc_update_row ); protected: + mos8563_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; @@ -502,20 +500,18 @@ protected: }; -extern const device_type MC6845; -extern const device_type MC6845_1; -extern const device_type R6545_1; -extern const device_type C6545_1; -extern const device_type H46505; -extern const device_type HD6845; -extern const device_type SY6545_1; -extern const device_type SY6845E; -extern const device_type HD6345; -extern const device_type AMS40041; -extern const device_type AMS40489; -extern const device_type MOS8563; -extern const device_type MOS8568; - - - -#endif +DECLARE_DEVICE_TYPE(MC6845, mc6845_device) +DECLARE_DEVICE_TYPE(MC6845_1, mc6845_1_device) +DECLARE_DEVICE_TYPE(R6545_1, r6545_1_device) +DECLARE_DEVICE_TYPE(C6545_1, c6545_1_device) +DECLARE_DEVICE_TYPE(H46505, h46505_device) +DECLARE_DEVICE_TYPE(HD6845, hd6845_device) +DECLARE_DEVICE_TYPE(SY6545_1, sy6545_1_device) +DECLARE_DEVICE_TYPE(SY6845E, sy6845e_device) +DECLARE_DEVICE_TYPE(HD6345, hd6345_device) +DECLARE_DEVICE_TYPE(AMS40041, ams40041_device) +DECLARE_DEVICE_TYPE(AMS40489, ams40489_device) +DECLARE_DEVICE_TYPE(MOS8563, mos8563_device) +DECLARE_DEVICE_TYPE(MOS8568, mos8568_device) + +#endif // MAME_VIDEO_MC6845_H diff --git a/src/devices/video/mc6847.cpp b/src/devices/video/mc6847.cpp index e3781147f60..22f6cef81a0 100644 --- a/src/devices/video/mc6847.cpp +++ b/src/devices/video/mc6847.cpp @@ -129,12 +129,12 @@ const uint32_t mc6847_base_device::s_palette[mc6847_base_device::PALETTE_LENGTH] // ctor //------------------------------------------------- -mc6847_friend_device::mc6847_friend_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, - const uint8_t *fontdata, bool is_mc6847t1, double tpfs, int field_sync_falling_edge_scanline, bool supports_partial_body_scanlines, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - m_write_hsync(*this), - m_write_fsync(*this), - m_character_map(fontdata, is_mc6847t1) +mc6847_friend_device::mc6847_friend_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, + const uint8_t *fontdata, bool is_mc6847t1, double tpfs, int field_sync_falling_edge_scanline, bool supports_partial_body_scanlines) + : device_t(mconfig, type, tag, owner, clock) + , m_write_hsync(*this) + , m_write_fsync(*this) + , m_character_map(fontdata, is_mc6847t1) { m_tpfs = tpfs; m_supports_partial_body_scanlines = supports_partial_body_scanlines; @@ -154,9 +154,9 @@ inline emu_timer *mc6847_friend_device::setup_timer(device_timer_id id, double o { emu_timer *timer = timer_alloc(id); timer->adjust( - attotime::from_ticks(offset * 4, m_clock * 4), - 0, - attotime::from_ticks(period * 4, m_clock * 4)); + attotime::from_ticks(offset * 4, m_clock * 4), + 0, + attotime::from_ticks(period * 4, m_clock * 4)); return timer; } @@ -166,7 +166,7 @@ inline emu_timer *mc6847_friend_device::setup_timer(device_timer_id id, double o // device_start - device-specific startup //------------------------------------------------- -void mc6847_friend_device::device_start(void) +void mc6847_friend_device::device_start() { m_write_hsync.resolve_safe(); m_write_fsync.resolve_safe(); @@ -204,7 +204,7 @@ void mc6847_friend_device::device_start(void) // device_start - device-specific reset //------------------------------------------------- -void mc6847_friend_device::device_reset(void) +void mc6847_friend_device::device_reset() { device_t::device_reset(); m_video_changed = true; @@ -216,7 +216,7 @@ void mc6847_friend_device::device_reset(void) // device_post_load - device-specific post load //------------------------------------------------- -void mc6847_friend_device::device_post_load(void) +void mc6847_friend_device::device_post_load() { device_t::device_post_load(); m_video_changed = true; @@ -228,7 +228,7 @@ void mc6847_friend_device::device_post_load(void) // update_field_sync_timer //------------------------------------------------- -void mc6847_friend_device::update_field_sync_timer(void) +void mc6847_friend_device::update_field_sync_timer() { // are we expecting field sync? bool expected_field_sync = (m_physical_scanline < m_field_sync_falling_edge_scanline) @@ -268,7 +268,7 @@ void mc6847_friend_device::device_timer(emu_timer &timer, device_timer_id id, in // new_frame //------------------------------------------------- -inline void mc6847_friend_device::new_frame(void) +inline void mc6847_friend_device::new_frame() { m_physical_scanline = 0; m_logical_scanline = 0; @@ -397,7 +397,7 @@ inline void mc6847_friend_device::change_field_sync(bool line) // next_scanline //------------------------------------------------- -inline void mc6847_friend_device::next_scanline(void) +inline void mc6847_friend_device::next_scanline() { /* advance to next scanline */ m_physical_scanline++; @@ -464,7 +464,7 @@ void mc6847_friend_device::field_sync_changed(bool line) // enter_bottom_border //------------------------------------------------- -void mc6847_friend_device::enter_bottom_border(void) +void mc6847_friend_device::enter_bottom_border() { } @@ -526,7 +526,7 @@ void mc6847_friend_device::video_flush() // describe_context //------------------------------------------------- -const char *mc6847_friend_device::describe_context(void) +const char *mc6847_friend_device::describe_context() { static char buffer[128]; snprintf(buffer, ARRAY_LENGTH(buffer), "%s (scanline %s:%d)", @@ -546,8 +546,8 @@ const char *mc6847_friend_device::describe_context(void) // ctor //------------------------------------------------- -mc6847_base_device::mc6847_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, double tpfs, const char *shortname, const char *source) : - mc6847_friend_device(mconfig, type, name, tag, owner, clock, fontdata, (type == MC6847T1_NTSC) || (type == MC6847T1_PAL), tpfs, 25+191, true, shortname, source), +mc6847_base_device::mc6847_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, double tpfs) : + mc6847_friend_device(mconfig, type, tag, owner, clock, fontdata, (type == MC6847T1_NTSC) || (type == MC6847T1_PAL), tpfs, 25+191, true), m_input_cb(*this), m_black_and_white(false), m_fixed_mode(0), @@ -1760,14 +1760,14 @@ mc6847_base_device::pixel_t mc6847_base_device::artifacter::mix_color(double fac // VARIATIONS //************************************************************************** -const device_type MC6847_NTSC = device_creator; -const device_type MC6847_PAL = device_creator; -const device_type MC6847Y_NTSC = device_creator; -const device_type MC6847Y_PAL = device_creator; -const device_type MC6847T1_NTSC = device_creator; -const device_type MC6847T1_PAL = device_creator; -const device_type S68047 = device_creator; -const device_type M5C6847P1 = device_creator; +DEFINE_DEVICE_TYPE(MC6847_NTSC, mc6847_ntsc_device, "mc6847_ntsc", "Motorola MC6847 VDG (NTSC)") +DEFINE_DEVICE_TYPE(MC6847_PAL, mc6847_pal_device, "mc6847_pal", "Motorola MC6847 VDG (PAL)") +DEFINE_DEVICE_TYPE(MC6847Y_NTSC, mc6847y_ntsc_device, "mc6847y_ntsc", "Motorola MC6847Y VDG (NTSC)") +DEFINE_DEVICE_TYPE(MC6847Y_PAL, mc6847y_pal_device, "mc6847y_pal", "Motorola MC6847Y VDG (PAL)") +DEFINE_DEVICE_TYPE(MC6847T1_NTSC, mc6847t1_ntsc_device, "mc6847t1_ntsc", "Motorola MC6847T1 VDG (NTSC)") +DEFINE_DEVICE_TYPE(MC6847T1_PAL, mc6847t1_pal_device, "mc6847t1_pal", "Motorola MC6847T1 VDG (PAL)") +DEFINE_DEVICE_TYPE(S68047, s68047_device, "s68047", "AMI S68047") +DEFINE_DEVICE_TYPE(M5C6847P1, m5c6847p1_device, "m5c6847p1", "Mitsubishi M5C6847P-1 VDG") @@ -1776,7 +1776,7 @@ const device_type M5C6847P1 = device_creator; //------------------------------------------------- mc6847_ntsc_device::mc6847_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6847_base_device(mconfig, MC6847_NTSC, "MC6847_NTSC", tag, owner, clock, ntsc_square_fontdata8x12, 262.0, "mc6847_ntsc", __FILE__) + : mc6847_base_device(mconfig, MC6847_NTSC, tag, owner, clock, ntsc_square_fontdata8x12, 262.0) { } @@ -1787,7 +1787,7 @@ mc6847_ntsc_device::mc6847_ntsc_device(const machine_config &mconfig, const char //------------------------------------------------- mc6847_pal_device::mc6847_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6847_base_device(mconfig, MC6847_PAL, "MC6847_PAL", tag, owner, clock, pal_square_fontdata8x12, 313.0, "mc6847_pal", __FILE__) + : mc6847_base_device(mconfig, MC6847_PAL, tag, owner, clock, pal_square_fontdata8x12, 313.0) { } @@ -1798,7 +1798,7 @@ mc6847_pal_device::mc6847_pal_device(const machine_config &mconfig, const char * //------------------------------------------------- mc6847y_ntsc_device::mc6847y_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6847_base_device(mconfig, MC6847Y_NTSC, "MC6847Y_NTSC", tag, owner, clock, ntsc_square_fontdata8x12, 262.5, "mc6847y", __FILE__) + : mc6847_base_device(mconfig, MC6847Y_NTSC, tag, owner, clock, ntsc_square_fontdata8x12, 262.5) { } @@ -1809,7 +1809,7 @@ mc6847y_ntsc_device::mc6847y_ntsc_device(const machine_config &mconfig, const ch //------------------------------------------------- mc6847y_pal_device::mc6847y_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6847_base_device(mconfig, MC6847Y_PAL, "MC6847Y_PAL", tag, owner, clock, pal_square_fontdata8x12, 313.0, "mc6847y_pal", __FILE__) + : mc6847_base_device(mconfig, MC6847Y_PAL, tag, owner, clock, pal_square_fontdata8x12, 313.0) { } @@ -1820,7 +1820,7 @@ mc6847y_pal_device::mc6847y_pal_device(const machine_config &mconfig, const char //------------------------------------------------- mc6847t1_ntsc_device::mc6847t1_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6847_base_device(mconfig, MC6847T1_NTSC, "MC6847T1_NTSC", tag, owner, clock, ntsc_round_fontdata8x12, 262.0, "mc6847t1_ntsc", __FILE__) + : mc6847_base_device(mconfig, MC6847T1_NTSC, tag, owner, clock, ntsc_round_fontdata8x12, 262.0) { } @@ -1831,7 +1831,7 @@ mc6847t1_ntsc_device::mc6847t1_ntsc_device(const machine_config &mconfig, const //------------------------------------------------- mc6847t1_pal_device::mc6847t1_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6847_base_device(mconfig, MC6847T1_PAL, "MC6847T1_PAL", tag, owner, clock, pal_round_fontdata8x12, 313.0, "mc6847t1_pal", __FILE__) + : mc6847_base_device(mconfig, MC6847T1_PAL, tag, owner, clock, pal_round_fontdata8x12, 313.0) { } @@ -1842,7 +1842,7 @@ mc6847t1_pal_device::mc6847t1_pal_device(const machine_config &mconfig, const ch //------------------------------------------------- s68047_device::s68047_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6847_base_device(mconfig, S68047, "S68047", tag, owner, clock, s68047_fontdata8x12, 262.0, "s68047", __FILE__) + : mc6847_base_device(mconfig, S68047, tag, owner, clock, s68047_fontdata8x12, 262.0) { } @@ -1891,6 +1891,6 @@ const uint32_t s68047_device::s_s68047_hack_palette[16] = //------------------------------------------------- m5c6847p1_device::m5c6847p1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mc6847_base_device(mconfig, M5C6847P1, "M5C6847P-1", tag, owner, clock, ntsc_square_fontdata8x12, 262.5, "m5c6847p1", __FILE__) + : mc6847_base_device(mconfig, M5C6847P1, tag, owner, clock, ntsc_square_fontdata8x12, 262.5) { } diff --git a/src/devices/video/mc6847.h b/src/devices/video/mc6847.h index 100d3033877..781def31804 100644 --- a/src/devices/video/mc6847.h +++ b/src/devices/video/mc6847.h @@ -7,24 +7,14 @@ Implementation of Motorola 6847 video hardware chip ***************************************************************************/ -#ifndef MAME_DEVICES_VIDEO_MC6847_H -#define MAME_DEVICES_VIDEO_MC6847_H +#ifndef MAME_VIDEO_MC6847_H +#define MAME_VIDEO_MC6847_H #pragma once #include "screen.h" -#define MC6847_MODE_AG 0x80 -#define MC6847_MODE_GM2 0x40 -#define MC6847_MODE_GM1 0x20 -#define MC6847_MODE_GM0 0x10 -#define MC6847_MODE_CSS 0x08 -#define MC6847_MODE_AS 0x04 -#define MC6847_MODE_INTEXT 0x02 -#define MC6847_MODE_INV 0x01 - - //************************************************************************** // MC6847 CONFIGURATION / INTERFACE //************************************************************************** @@ -52,7 +42,7 @@ devcb = &mc6847_friend_device::set_fsync_wr_callback(*device, DEVCB_##_write); #define MCFG_MC6847_CHARROM_CALLBACK(_class, _method) \ - mc6847_friend_device::set_get_char_rom(*device, mc6847_get_char_rom_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + mc6847_friend_device::set_get_char_rom(*device, mc6847_friend_device::get_char_rom_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_MC6847_INPUT_CALLBACK(_read) \ devcb = &mc6847_base_device::set_input_callback(*device, DEVCB_##_read); @@ -64,7 +54,6 @@ mc6847_base_device::set_black_and_white(*device, _bw); -typedef device_delegate mc6847_get_char_rom_delegate; #define MC6847_GET_CHARROM_MEMBER(_name) uint8_t _name(uint8_t ch, int line) @@ -81,34 +70,36 @@ INPUT_PORTS_EXTERN(mc6847_artifacting); class mc6847_friend_device : public device_t { public: + // video mode constants + static constexpr uint8_t MODE_AG = 0x80; + static constexpr uint8_t MODE_GM2 = 0x40; + static constexpr uint8_t MODE_GM1 = 0x20; + static constexpr uint8_t MODE_GM0 = 0x10; + static constexpr uint8_t MODE_CSS = 0x08; + static constexpr uint8_t MODE_AS = 0x04; + static constexpr uint8_t MODE_INTEXT = 0x02; + static constexpr uint8_t MODE_INV = 0x01; + + typedef device_delegate get_char_rom_delegate; + // inlines - bool hs_r(void) { return m_horizontal_sync; } - bool fs_r(void) { return m_field_sync; } + bool hs_r() const { return m_horizontal_sync; } + bool fs_r() const { return m_field_sync; } - template static devcb_base &set_hsync_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_hsync.set_callback(object); } - template static devcb_base &set_fsync_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_fsync.set_callback(object); } + template static devcb_base &set_hsync_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_hsync.set_callback(std::forward(cb)); } + template static devcb_base &set_fsync_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_fsync.set_callback(std::forward(cb)); } - static void set_get_char_rom(device_t &device, mc6847_get_char_rom_delegate callback) { downcast(device).m_charrom_cb = callback; } + static void set_get_char_rom(device_t &device, get_char_rom_delegate &&cb) { downcast(device).m_charrom_cb = std::move(cb); } protected: - mc6847_friend_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, - const uint8_t *fontdata, bool is_mc6847t1, double tpfs, int field_sync_falling_edge_scanline, bool supports_partial_body_scanlines, const char *shortname, const char *source); - - // video mode constants - static const uint8_t MODE_AG = 0x80; - static const uint8_t MODE_GM2 = 0x40; - static const uint8_t MODE_GM1 = 0x20; - static const uint8_t MODE_GM0 = 0x10; - static const uint8_t MODE_CSS = 0x08; - static const uint8_t MODE_AS = 0x04; - static const uint8_t MODE_INTEXT = 0x02; - static const uint8_t MODE_INV = 0x01; + mc6847_friend_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, + const uint8_t *fontdata, bool is_mc6847t1, double tpfs, int field_sync_falling_edge_scanline, bool supports_partial_body_scanlines); // timer constants - static const device_timer_id TIMER_FRAME = 0; - static const device_timer_id TIMER_HSYNC_OFF = 1; - static const device_timer_id TIMER_HSYNC_ON = 2; - static const device_timer_id TIMER_FSYNC = 3; + static constexpr device_timer_id TIMER_FRAME = 0; + static constexpr device_timer_id TIMER_HSYNC_OFF = 1; + static constexpr device_timer_id TIMER_HSYNC_ON = 2; + static constexpr device_timer_id TIMER_FSYNC = 3; // fonts static const uint8_t pal_round_fontdata8x12[]; @@ -211,7 +202,7 @@ protected: // artifacting config void setup_config(device_t *device); - void poll_config(void) { m_artifacting = (m_config!=nullptr) ? m_config->read() : 0; } + void poll_config() { m_artifacting = (m_config!=nullptr) ? m_config->read() : 0; } // artifacting application template @@ -275,30 +266,30 @@ protected: /* if specified, this reads the external char rom off of the driver state */ // moved here from mc6847_base_device so to be useable in GIME - mc6847_get_char_rom_delegate m_charrom_cb; + get_char_rom_delegate m_charrom_cb; // incidentals character_map m_character_map; artifacter m_artifacter; // device-level overrides - virtual void device_start(void) override; + virtual void device_start() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual void device_reset(void) override; - virtual void device_post_load(void) override; + virtual void device_reset() override; + virtual void device_post_load() override; // other overridables - virtual void new_frame(void); + virtual void new_frame(); virtual void horizontal_sync_changed(bool line); virtual void field_sync_changed(bool line); - virtual void enter_bottom_border(void); + virtual void enter_bottom_border(); virtual void record_border_scanline(uint16_t physical_scanline); virtual void record_body_scanline(uint16_t physical_scanline, uint16_t logical_scanline) = 0; virtual void record_partial_body_scanline(uint16_t physical_scanline, uint16_t logical_scanline, int32_t start_clock, int32_t end_clock) = 0; // miscellaneous - void video_flush(void); - const char *describe_context(void); + void video_flush(); + const char *describe_context(); // setup functions emu_timer *setup_timer(device_timer_id id, double offset, double period); @@ -348,7 +339,7 @@ protected: } // checks to see if the video has changed - ATTR_FORCE_INLINE bool has_video_changed(void) + ATTR_FORCE_INLINE bool has_video_changed() { /* poll the artifacting config */ m_artifacter.poll_config(); @@ -410,7 +401,7 @@ protected: // template function for emitting samples template uint32_t emit_mc6847_samples(uint8_t mode, const uint8_t *data, int length, pixel_t *RESTRICT pixels, const pixel_t *RESTRICT palette, - mc6847_get_char_rom_delegate get_char_rom, int x, int y) + get_char_rom_delegate const &get_char_rom, int x, int y) { uint32_t result; if (mode & MODE_AG) @@ -505,8 +496,8 @@ private: // functions void change_horizontal_sync(bool line); void change_field_sync(bool line); - void update_field_sync_timer(void); - void next_scanline(void); + void update_field_sync_timer(); + void next_scanline(); int32_t get_clocks_since_hsync(); // debugging @@ -517,7 +508,7 @@ private: class mc6847_base_device : public mc6847_friend_device { public: - template static devcb_base &set_input_callback(device_t &device, _Object object) { return downcast(device).m_input_cb.set_callback(object); } + template static devcb_base &set_input_callback(device_t &device, Object &&cb) { return downcast(device).m_input_cb.set_callback(std::forward(cb)); } static void set_get_fixed_mode(device_t &device, uint8_t mode) { downcast(device).m_fixed_mode = mode; } static void set_black_and_white(device_t &device, bool bw) { downcast(device).m_black_and_white = bw; } @@ -538,7 +529,7 @@ public: DECLARE_WRITE_LINE_MEMBER( inv_w ) { change_mode(MODE_INV, state); } protected: - mc6847_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, double tpfs, const char *shortname, const char *source); + mc6847_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, double tpfs); // device-level overrides virtual void device_start() override; @@ -552,7 +543,7 @@ protected: void set_custom_palette(const pixel_t *custom_palette) { - if ( m_palette != m_bw_palette ) + if (m_palette != m_bw_palette) { m_palette = custom_palette ? custom_palette : s_palette; } @@ -692,13 +683,13 @@ public: }; -extern const device_type MC6847_NTSC; -extern const device_type MC6847_PAL; -extern const device_type MC6847Y_NTSC; -extern const device_type MC6847Y_PAL; -extern const device_type MC6847T1_NTSC; -extern const device_type MC6847T1_PAL; -extern const device_type S68047; -extern const device_type M5C6847P1; +DECLARE_DEVICE_TYPE(MC6847_NTSC, mc6847_ntsc_device) +DECLARE_DEVICE_TYPE(MC6847_PAL, mc6847_pal_device) +DECLARE_DEVICE_TYPE(MC6847Y_NTSC, mc6847t1_ntsc_device) +DECLARE_DEVICE_TYPE(MC6847Y_PAL, mc6847y_pal_device) +DECLARE_DEVICE_TYPE(MC6847T1_NTSC, mc6847t1_ntsc_device) +DECLARE_DEVICE_TYPE(MC6847T1_PAL, mc6847t1_pal_device) +DECLARE_DEVICE_TYPE(S68047, s68047_device) +DECLARE_DEVICE_TYPE(M5C6847P1, m5c6847p1_device) -#endif // MAME_DEVICES_VIDEO_MC6847_H +#endif // MAME_VIDEO_MC6847_H diff --git a/src/devices/video/mga2064w.cpp b/src/devices/video/mga2064w.cpp index 3dfd13dcec1..7bc5816c942 100644 --- a/src/devices/video/mga2064w.cpp +++ b/src/devices/video/mga2064w.cpp @@ -3,10 +3,10 @@ #include "emu.h" #include "mga2064w.h" -const device_type MGA2064W = device_creator; +DEFINE_DEVICE_TYPE(MGA2064W, mga2064w_device, "mga2064w", "Matrox Millennium") mga2064w_device::mga2064w_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pci_device(mconfig, MGA2064W, "Matrox Millennium", tag, owner, clock, "mga2064w", __FILE__) + : pci_device(mconfig, MGA2064W, tag, owner, clock) { } diff --git a/src/devices/video/mga2064w.h b/src/devices/video/mga2064w.h index 844f75254d1..8da3bdb0527 100644 --- a/src/devices/video/mga2064w.h +++ b/src/devices/video/mga2064w.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef MGA2064W_H -#define MGA2064W_H +#ifndef MAME_VIDEO_MGA2064W_H +#define MAME_VIDEO_MGA2064W_H + +#pragma once #include "machine/pci.h" @@ -15,10 +17,8 @@ public: protected: virtual void device_start() override; virtual void device_reset() override; - -private: }; -extern const device_type MGA2064W; +DECLARE_DEVICE_TYPE(MGA2064W, mga2064w_device); -#endif +#endif // MAME_VIDEO_MGA2064W_H diff --git a/src/devices/video/mos6566.cpp b/src/devices/video/mos6566.cpp index 17bdd0018c5..a521238515e 100644 --- a/src/devices/video/mos6566.cpp +++ b/src/devices/video/mos6566.cpp @@ -215,13 +215,13 @@ static const rgb_t PALETTE_MOS[] = // DEVICE DEFINITIONS //************************************************************************** -const device_type MOS6566 = device_creator; -const device_type MOS6567 = device_creator; -const device_type MOS8562 = device_creator; -const device_type MOS8564 = device_creator; -const device_type MOS6569 = device_creator; -const device_type MOS8565 = device_creator; -const device_type MOS8566 = device_creator; +DEFINE_DEVICE_TYPE(MOS6566, mos6566_device, "mos6566", "MOS 6566 VIC-II") +DEFINE_DEVICE_TYPE(MOS6567, mos6567_device, "mos6567", "MOS 6567 VIC-II") +DEFINE_DEVICE_TYPE(MOS8562, mos8562_device, "mos8562", "MOS 8562 VIC-II") +DEFINE_DEVICE_TYPE(MOS8564, mos8564_device, "mos8564", "MOS 8564 VIC-II") +DEFINE_DEVICE_TYPE(MOS6569, mos6569_device, "mos6569", "MOS 6569 VIC-II") +DEFINE_DEVICE_TYPE(MOS8565, mos8565_device, "mos8565", "MOS 8565 VIC-II") +DEFINE_DEVICE_TYPE(MOS8566, mos8566_device, "mos8566", "MOS 8566 VIC-II") // default address maps @@ -576,12 +576,12 @@ inline void mos6566_device::draw_multi( uint16_t p, uint8_t c0, uint8_t c1, uint //------------------------------------------------- mos6566_device::mos6566_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mos6566_device(mconfig, MOS6566, "MOS6566", tag, owner, clock, TYPE_6566, "mos6566", __FILE__) + : mos6566_device(mconfig, MOS6566, tag, owner, clock, TYPE_6566) { } -mos6566_device::mos6566_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +mos6566_device::mos6566_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant) + : device_t(mconfig, type, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), device_execute_interface(mconfig, *this), @@ -601,28 +601,44 @@ mos6566_device::mos6566_device(const machine_config &mconfig, device_type type, } mos6567_device::mos6567_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - :mos6566_device(mconfig, MOS6567, "MOS6567", tag, owner, clock, TYPE_6567, "mos6567", __FILE__) { } + : mos6567_device(mconfig, MOS6567, tag, owner, clock, TYPE_6567) +{ +} -mos6567_device::mos6567_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source) - :mos6566_device(mconfig, type, name, tag, owner, clock, variant, shortname, source) { } +mos6567_device::mos6567_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant) + : mos6566_device(mconfig, type, tag, owner, clock, variant) +{ +} mos8562_device::mos8562_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - :mos6567_device(mconfig, MOS8562, "MOS8562", tag, owner, clock, TYPE_8562, "mos8562", __FILE__) { } + : mos6567_device(mconfig, MOS8562, tag, owner, clock, TYPE_8562) +{ +} mos8564_device::mos8564_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - :mos6567_device(mconfig, MOS8564, "MOS8564", tag, owner, clock, TYPE_8564, "mos8564", __FILE__) { } + : mos6567_device(mconfig, MOS8564, tag, owner, clock, TYPE_8564) +{ +} mos6569_device::mos6569_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - :mos6566_device(mconfig, MOS6569, "MOS6569", tag, owner, clock, TYPE_6569, "mos6569", __FILE__) { } + : mos6569_device(mconfig, MOS6569, tag, owner, clock, TYPE_6569) +{ +} -mos6569_device::mos6569_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source) - :mos6566_device(mconfig, type, name, tag, owner, clock, variant, shortname, source) { } +mos6569_device::mos6569_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant) + : mos6566_device(mconfig, type, tag, owner, clock, variant) +{ +} mos8565_device::mos8565_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - :mos6569_device(mconfig, MOS8565, "MOS8565", tag, owner, clock, TYPE_8565, "mos8565", __FILE__) { } + : mos6569_device(mconfig, MOS8565, tag, owner, clock, TYPE_8565) +{ +} mos8566_device::mos8566_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - :mos6569_device(mconfig, MOS8566, "MOS8566", tag, owner, clock, TYPE_8566, "mos8566", __FILE__) { } + : mos6569_device(mconfig, MOS8566, tag, owner, clock, TYPE_8566) +{ +} //------------------------------------------------- diff --git a/src/devices/video/mos6566.h b/src/devices/video/mos6566.h index eedd627d6f9..b045286f1cf 100644 --- a/src/devices/video/mos6566.h +++ b/src/devices/video/mos6566.h @@ -77,10 +77,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_MOS6566_H +#define MAME_VIDEO_MOS6566_H -#ifndef __MOS6566__ -#define __MOS6566__ +#pragma once @@ -210,16 +210,15 @@ class mos6566_device : public device_t, { public: // construction/destruction - mos6566_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source); mos6566_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void static_set_cpu_tag(device_t &device, const char *tag) { downcast(device).m_cpu.set_tag(tag); } - template static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_irq.set_callback(object); } - template static devcb_base &set_ba_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_ba.set_callback(object); } - template static devcb_base &set_aec_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_aec.set_callback(object); } - template static devcb_base &set_k_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_k.set_callback(object); } + template static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_irq.set_callback(std::forward(cb)); } + template static devcb_base &set_ba_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_ba.set_callback(std::forward(cb)); } + template static devcb_base &set_aec_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_aec.set_callback(std::forward(cb)); } + template static devcb_base &set_k_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_k.set_callback(std::forward(cb)); } - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -250,17 +249,13 @@ protected: TYPE_8569 // PAL-N VIC-IIe (C128) }; + mos6566_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; virtual void execute_run() override; - int m_icount; - int m_variant; - - const address_space_config m_videoram_space_config; - const address_space_config m_colorram_space_config; - inline void set_interrupt( int mask ); inline void clear_interrupt( int mask ); inline void set_ba(int state); @@ -286,6 +281,12 @@ protected: void draw_graphics(); void draw_sprites(); + int m_icount; + const int m_variant; + + const address_space_config m_videoram_space_config; + const address_space_config m_colorram_space_config; + devcb_write_line m_write_irq; devcb_write_line m_write_ba; devcb_write_line m_write_aec; @@ -374,7 +375,9 @@ class mos6567_device : public mos6566_device public: // construction/destruction mos6567_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - mos6567_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source); + +protected: + mos6567_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant); }; @@ -396,6 +399,7 @@ public: // construction/destruction mos8564_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // device_execute_interface overrides virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks / 8); } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 8); } @@ -409,7 +413,9 @@ class mos6569_device : public mos6566_device public: // construction/destruction mos6569_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - mos6569_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, const char *shortname, const char *source); + +protected: + mos6569_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant); // device-level overrides virtual void execute_run() override; @@ -434,6 +440,7 @@ public: // construction/destruction mos8566_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // device_execute_interface overrides virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const override { return (clocks / 8); } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const override { return (cycles * 8); } @@ -441,14 +448,12 @@ public: // device type definitions -extern const device_type MOS6566; -extern const device_type MOS6567; -extern const device_type MOS8562; -extern const device_type MOS8564; -extern const device_type MOS6569; -extern const device_type MOS8565; -extern const device_type MOS8566; - - - -#endif +DECLARE_DEVICE_TYPE(MOS6566, mos6566_device) +DECLARE_DEVICE_TYPE(MOS6567, mos6567_device) +DECLARE_DEVICE_TYPE(MOS8562, mos8562_device) +DECLARE_DEVICE_TYPE(MOS8564, mos8564_device) +DECLARE_DEVICE_TYPE(MOS6569, mos6569_device) +DECLARE_DEVICE_TYPE(MOS8565, mos8565_device) +DECLARE_DEVICE_TYPE(MOS8566, mos8566_device) + +#endif // MAME_VIDEO_MOS6566_H diff --git a/src/devices/video/msm6222b.cpp b/src/devices/video/msm6222b.cpp index 632314a49dd..1e342e04084 100644 --- a/src/devices/video/msm6222b.cpp +++ b/src/devices/video/msm6222b.cpp @@ -13,28 +13,29 @@ #include "emu.h" #include "msm6222b.h" -const device_type MSM6222B = device_creator; -const device_type MSM6222B_01 = device_creator; +DEFINE_DEVICE_TYPE(MSM6222B, msm6222b_device, "msm6222b", "Oki MSM6222B-xx LCD Controller") +DEFINE_DEVICE_TYPE(MSM6222B_01, msm6222b_01_device, "msm6222b01", "Oki MSM6222B-01 LCD Controller") ROM_START( msm6222b_01 ) ROM_REGION( 0x1000, "cgrom", 0 ) ROM_LOAD( "msm6222b-01.bin", 0x0000, 0x1000, CRC(8ffa8521) SHA1(e108b520e6d20459a7bbd5958bbfa1d551a690bd) ) ROM_END -msm6222b_device::msm6222b_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), cursor_direction(false), cursor_blinking(false), two_line(false), shift_on_write(false), double_height(false), cursor_on(false), display_on(false), adc(0), shift(0), - m_cgrom(*this, finder_base::DUMMY_TAG) +msm6222b_device::msm6222b_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), + m_cgrom(*this, finder_base::DUMMY_TAG), + cursor_direction(false), cursor_blinking(false), two_line(false), shift_on_write(false), double_height(false), cursor_on(false), display_on(false), adc(0), shift(0) { } msm6222b_device::msm6222b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, MSM6222B, "msm6222b-xx", tag, owner, clock, "msm6222b", __FILE__), cursor_direction(false), cursor_blinking(false), two_line(false), shift_on_write(false), double_height(false), cursor_on(false), display_on(false), adc(0), shift(0), - m_cgrom(*this, DEVICE_SELF) + msm6222b_device(mconfig, MSM6222B, tag, owner, clock) { + m_cgrom.set_tag(DEVICE_SELF); } msm6222b_01_device::msm6222b_01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - msm6222b_device(mconfig, MSM6222B_01, "msm6222b-01", tag, owner, clock, "msm6222b01", __FILE__) + msm6222b_device(mconfig, MSM6222B_01, tag, owner, clock) { // load the fixed cgrom m_cgrom.set_tag("cgrom"); diff --git a/src/devices/video/msm6222b.h b/src/devices/video/msm6222b.h index c09bb0ee973..9cf3623e25f 100644 --- a/src/devices/video/msm6222b.h +++ b/src/devices/video/msm6222b.h @@ -10,8 +10,10 @@ ***************************************************************************/ -#ifndef __MSM6222B_H__ -#define __MSM6222B_H__ +#ifndef MAME_VIDEO_MSM6222B_H +#define MAME_VIDEO_MSM6222B_H + +#pragma once #define MCFG_MSM6222B_ADD( _tag ) \ MCFG_DEVICE_ADD( _tag, MSM6222B, 0 ) @@ -22,7 +24,6 @@ class msm6222b_device : public device_t { public: msm6222b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - msm6222b_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); void control_w(uint8_t data); uint8_t control_r(); @@ -33,20 +34,22 @@ public: const uint8_t *render(); protected: + msm6222b_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; + optional_region_ptr m_cgrom; + + void cursor_step(bool direction); + void shift_step(bool direction); + bool blink_on() const; + private: uint8_t cgram[8*8]; uint8_t ddram[80]; uint8_t render_buf[80*16]; bool cursor_direction, cursor_blinking, two_line, shift_on_write, double_height, cursor_on, display_on; uint8_t adc, shift; -protected: - optional_region_ptr m_cgrom; - - void cursor_step(bool direction); - void shift_step(bool direction); - bool blink_on() const; }; class msm6222b_01_device : public msm6222b_device { @@ -57,7 +60,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; }; -extern const device_type MSM6222B; -extern const device_type MSM6222B_01; +DECLARE_DEVICE_TYPE(MSM6222B, msm6222b_device) +DECLARE_DEVICE_TYPE(MSM6222B_01, msm6222b_01_device) -#endif +#endif // MAME_VIDEO_MSM6222B_H diff --git a/src/devices/video/msm6255.cpp b/src/devices/video/msm6255.cpp index 516dd8a0f12..d7ee5ce7903 100644 --- a/src/devices/video/msm6255.cpp +++ b/src/devices/video/msm6255.cpp @@ -9,15 +9,14 @@ #include "emu.h" #include "msm6255.h" +//#define VERBOSE 1 +#include "logmacro.h" //************************************************************************** // MACROS / CONSTANTS //************************************************************************** -#define LOG 0 - - #define MOR_GRAPHICS 0x01 #define MOR_4_BIT_PARALLEL 0x02 #define MOR_2_BIT_PARALLEL 0x04 @@ -52,7 +51,7 @@ //************************************************************************** // device type definition -const device_type MSM6255 = device_creator; +DEFINE_DEVICE_TYPE(MSM6255, msm6255_device, "msm6255", "Oki MSM6255 LCD Controller") // I/O map DEVICE_ADDRESS_MAP_START( map, 8, msm6255_device ) @@ -76,7 +75,7 @@ ADDRESS_MAP_END //------------------------------------------------- msm6255_device::msm6255_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, MSM6255, "MSM6255", tag, owner, clock, "msm6255", __FILE__), + device_t(mconfig, MSM6255, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_space_config("videoram", ENDIANNESS_LITTLE, 8, 20, 0, nullptr, *ADDRESS_MAP_NAME(msm6255)), diff --git a/src/devices/video/msm6255.h b/src/devices/video/msm6255.h index 45e43d24b20..8028d69f86c 100644 --- a/src/devices/video/msm6255.h +++ b/src/devices/video/msm6255.h @@ -6,11 +6,10 @@ **********************************************************************/ -#pragma once - -#ifndef __MSM6255__ -#define __MSM6255__ +#ifndef MAME_VIDEO_MSM6255_H +#define MAME_VIDEO_MSM6255_H +#pragma once @@ -44,7 +43,7 @@ protected: virtual void device_reset() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; private: // registers @@ -87,8 +86,6 @@ private: // device type definition -extern const device_type MSM6255; - - +DECLARE_DEVICE_TYPE(MSM6255, msm6255_device) -#endif +#endif // MAME_VIDEO_MSM6255_H diff --git a/src/devices/video/pc_vga.cpp b/src/devices/video/pc_vga.cpp index 5a0501f3cd5..076f93aeb7e 100644 --- a/src/devices/video/pc_vga.cpp +++ b/src/devices/video/pc_vga.cpp @@ -121,78 +121,78 @@ enum ***************************************************************************/ // device type definition -const device_type VGA = device_creator; -const device_type TSENG_VGA = device_creator; -const device_type S3_VGA = device_creator; -const device_type GAMTOR_VGA = device_creator; -const device_type ATI_VGA = device_creator; -const device_type IBM8514A = device_creator; -const device_type MACH8 = device_creator; - -vga_device::vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +DEFINE_DEVICE_TYPE(VGA, vga_device, "vga", "VGA") +DEFINE_DEVICE_TYPE(TSENG_VGA, tseng_vga_device, "tseng_vga", "Tseng Labs VGA") +DEFINE_DEVICE_TYPE(S3_VGA, s3_vga_device, "s3_vga", "S3 Graphics VGA") +DEFINE_DEVICE_TYPE(GAMTOR_VGA, gamtor_vga_device, "gamtor_vga", "GAMTOR VGA") +DEFINE_DEVICE_TYPE(ATI_VGA, ati_vga_device, "ati_vga", "ATi VGA") +DEFINE_DEVICE_TYPE(IBM8514A, ibm8514a_device, "ibm8514a", "IBM 8514/A Video") +DEFINE_DEVICE_TYPE(MACH8, mach8_device, "mach8", "Mach8") + +vga_device::vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , m_palette(*this, "^palette") , m_screen(*this,"^screen") { } vga_device::vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : vga_device(mconfig, VGA, "VGA", tag, owner, clock, "vga", __FILE__) + : vga_device(mconfig, VGA, tag, owner, clock) { } -svga_device::svga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : vga_device(mconfig, type, name, tag, owner, clock, shortname, source) +svga_device::svga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : vga_device(mconfig, type, tag, owner, clock) { } tseng_vga_device::tseng_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : svga_device(mconfig, TSENG_VGA, "TSENG LABS VGA", tag, owner, clock, "tseng_vga", __FILE__) + : svga_device(mconfig, TSENG_VGA, tag, owner, clock) { } s3_vga_device::s3_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : s3_vga_device(mconfig, S3_VGA, "S3 Graphics VGA", tag, owner, clock, "s3_vga", __FILE__) + : s3_vga_device(mconfig, S3_VGA, tag, owner, clock) { } -s3_vga_device::s3_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : ati_vga_device(mconfig, type, name, tag, owner, clock, shortname, source) +s3_vga_device::s3_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : ati_vga_device(mconfig, type, tag, owner, clock) { } gamtor_vga_device::gamtor_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : svga_device(mconfig, GAMTOR_VGA, "GAMTOR VGA", tag, owner, clock, "gamtor_vga", __FILE__) + : svga_device(mconfig, GAMTOR_VGA, tag, owner, clock) { } ati_vga_device::ati_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ati_vga_device(mconfig, ATI_VGA, "ATI VGA", tag, owner, clock, "ati_vga", __FILE__) + : ati_vga_device(mconfig, ATI_VGA, tag, owner, clock) { } -ati_vga_device::ati_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : svga_device(mconfig, type, name, tag, owner, clock, shortname, source) +ati_vga_device::ati_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : svga_device(mconfig, type, tag, owner, clock) { } ibm8514a_device::ibm8514a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ibm8514a_device(mconfig, IBM8514A, "IBM8514A Video", tag, owner, clock, "ibm8514a", __FILE__) + : ibm8514a_device(mconfig, IBM8514A, tag, owner, clock) { } -ibm8514a_device::ibm8514a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +ibm8514a_device::ibm8514a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) { } -mach8_device::mach8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : ibm8514a_device(mconfig, type, name, tag, owner, clock, shortname, source) +mach8_device::mach8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : ibm8514a_device(mconfig, type, tag, owner, clock) { } mach8_device::mach8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : mach8_device(mconfig, MACH8, "MACH8", tag, owner, clock, "mach8", __FILE__) + : mach8_device(mconfig, MACH8, tag, owner, clock) { } @@ -258,6 +258,10 @@ void vga_device::device_start() vga.memory.resize(vga.svga_intf.vram_size); memset(&vga.memory[0], 0, vga.svga_intf.vram_size); save_item(NAME(vga.memory)); + save_item(NAME(vga.pens)); + + save_item(NAME(vga.miscellaneous_output)); + save_item(NAME(vga.feature_control)); save_item(NAME(vga.sequencer.index)); save_item(NAME(vga.sequencer.data)); @@ -327,7 +331,7 @@ void vga_device::device_start() save_item(NAME(vga.gc.memory_map_sel)); save_item(NAME(vga.gc.host_oe)); save_item(NAME(vga.gc.chain_oe)); - + save_item(NAME(vga.attribute.index)); save_item(NAME(vga.attribute.data)); save_item(NAME(vga.attribute.state)); @@ -335,6 +339,14 @@ void vga_device::device_start() save_item(NAME(vga.attribute.pel_shift)); save_item(NAME(vga.attribute.pel_shift_latch)); + save_item(NAME(vga.dac.read_index)); + save_item(NAME(vga.dac.write_index)); + save_item(NAME(vga.dac.mask)); + save_item(NAME(vga.dac.read)); + save_item(NAME(vga.dac.state)); + save_item(NAME(vga.dac.color)); + save_item(NAME(vga.dac.dirty)); + m_vblank_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(vga_device::vblank_timer_cb),this)); } @@ -924,9 +936,9 @@ uint8_t vga_device::pc_vga_choosevideomode() for (i=0; i<256;i++) { /* TODO: color shifters? */ - m_palette->set_pen_color(i, (vga.dac.color[i & vga.dac.mask].red & 0x3f) << 2, - (vga.dac.color[i & vga.dac.mask].green & 0x3f) << 2, - (vga.dac.color[i & vga.dac.mask].blue & 0x3f) << 2); + m_palette->set_pen_color(i, (vga.dac.color[3*(i & vga.dac.mask)] & 0x3f) << 2, + (vga.dac.color[3*(i & vga.dac.mask) + 1] & 0x3f) << 2, + (vga.dac.color[3*(i & vga.dac.mask) + 2] & 0x3f) << 2); } vga.dac.dirty = 0; } @@ -985,9 +997,9 @@ uint8_t svga_device::pc_vga_choosevideomode() for (i=0; i<256;i++) { /* TODO: color shifters? */ - m_palette->set_pen_color(i, (vga.dac.color[i & vga.dac.mask].red & 0x3f) << 2, - (vga.dac.color[i & vga.dac.mask].green & 0x3f) << 2, - (vga.dac.color[i & vga.dac.mask].blue & 0x3f) << 2); + m_palette->set_pen_color(i, (vga.dac.color[3*(i & vga.dac.mask)] & 0x3f) << 2, + (vga.dac.color[3*(i & vga.dac.mask) + 1] & 0x3f) << 2, + (vga.dac.color[3*(i & vga.dac.mask) + 2] & 0x3f) << 2); } vga.dac.dirty = 0; } @@ -1802,13 +1814,13 @@ READ8_MEMBER(vga_device::port_03c0_r) switch (vga.dac.state++) { case 0: - data = vga.dac.color[vga.dac.read_index].red; + data = vga.dac.color[3*vga.dac.read_index]; break; case 1: - data = vga.dac.color[vga.dac.read_index].green; + data = vga.dac.color[3*vga.dac.read_index + 1]; break; case 2: - data = vga.dac.color[vga.dac.read_index].blue; + data = vga.dac.color[3*vga.dac.read_index + 2]; break; } @@ -1990,13 +2002,13 @@ WRITE8_MEMBER(vga_device::port_03c0_w) { switch (vga.dac.state++) { case 0: - vga.dac.color[vga.dac.write_index].red=data; + vga.dac.color[3*vga.dac.write_index]=data; break; case 1: - vga.dac.color[vga.dac.write_index].green=data; + vga.dac.color[3*vga.dac.write_index + 1]=data; break; case 2: - vga.dac.color[vga.dac.write_index].blue=data; + vga.dac.color[3*vga.dac.write_index + 2]=data; break; } vga.dac.dirty=1; diff --git a/src/devices/video/pc_vga.h b/src/devices/video/pc_vga.h index ea6a26c7ff0..1107282b8c2 100644 --- a/src/devices/video/pc_vga.h +++ b/src/devices/video/pc_vga.h @@ -8,8 +8,8 @@ ***************************************************************************/ -#ifndef MAME_DEVICES_VIDEO_PC_VGA_H -#define MAME_DEVICES_VIDEO_PC_VGA_H +#ifndef MAME_VIDEO_PC_VGA_H +#define MAME_VIDEO_PC_VGA_H #include "screen.h" @@ -18,21 +18,6 @@ MACHINE_CONFIG_EXTERN( pcvideo_trident_vga ); MACHINE_CONFIG_EXTERN( pcvideo_gamtor_vga ); MACHINE_CONFIG_EXTERN( pcvideo_s3_vga ); -enum -{ - SCREEN_OFF = 0, - TEXT_MODE, - VGA_MODE, - EGA_MODE, - CGA_MODE, - MONO_MODE, - RGB8_MODE, - RGB15_MODE, - RGB16_MODE, - RGB24_MODE, - RGB32_MODE -}; - // ======================> vga_device class vga_device : public device_t @@ -59,7 +44,22 @@ public: virtual TIMER_CALLBACK_MEMBER(vblank_timer_cb); protected: - vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + enum + { + SCREEN_OFF = 0, + TEXT_MODE, + VGA_MODE, + EGA_MODE, + CGA_MODE, + MONO_MODE, + RGB8_MODE, + RGB15_MODE, + RGB16_MODE, + RGB24_MODE, + RGB32_MODE + }; + + vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); // device-level overrides virtual void device_start() override; @@ -89,20 +89,20 @@ protected: { uint8_t res = 0; - switch(vga.gc.logical_op & 3) + switch (vga.gc.logical_op & 3) { - case 0: /* NONE */ - res = (data & mask) | (vga.gc.latch[plane] & ~mask); - break; - case 1: /* AND */ - res = (data | ~mask) & (vga.gc.latch[plane]); - break; - case 2: /* OR */ - res = (data & mask) | (vga.gc.latch[plane]); - break; - case 3: /* XOR */ - res = (data & mask) ^ (vga.gc.latch[plane]); - break; + case 0: /* NONE */ + res = (data & mask) | (vga.gc.latch[plane] & ~mask); + break; + case 1: /* AND */ + res = (data | ~mask) & (vga.gc.latch[plane]); + break; + case 2: /* OR */ + res = (data & mask) | (vga.gc.latch[plane]); + break; + case 3: /* XOR */ + res = (data & mask) ^ (vga.gc.latch[plane]); + break; } return res; @@ -215,12 +215,11 @@ protected: uint8_t pel_shift_latch; } attribute; - struct { uint8_t read_index, write_index, mask; int read; int state; - struct { uint8_t red, green, blue; } color[0x100]; + uint8_t color[0x300]; /* flat RGB triplets */ int dirty; } dac; @@ -239,7 +238,7 @@ protected: // device type definition -extern const device_type VGA; +DECLARE_DEVICE_TYPE(VGA, vga_device) // ======================> svga_device @@ -251,7 +250,7 @@ public: protected: // construction/destruction - svga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + svga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); void svga_vh_rgb8(bitmap_rgb32 &bitmap, const rectangle &cliprect); void svga_vh_rgb15(bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -381,8 +380,9 @@ public: uint8_t wait_vector_count; } ibm8514; + protected: - ibm8514a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + ibm8514a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual void device_start() override; virtual void device_config_complete() override; @@ -403,7 +403,7 @@ private: }; // device type definition -extern const device_type IBM8514A; +DECLARE_DEVICE_TYPE(IBM8514A, ibm8514a_device) #define MCFG_8514A_ADD(_tag, _param) \ MCFG_DEVICE_ADD(_tag, IBM8514A, 0) \ @@ -414,7 +414,7 @@ extern const device_type IBM8514A; downcast(device)->set_vga_owner(); -class mach8_device : public ibm8514a_device +class mach8_device : public ibm8514a_device { public: mach8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -446,7 +446,7 @@ public: READ16_MEMBER(mach8_clksel_r) { return mach8.clksel; } protected: - mach8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + mach8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual void device_start() override; struct { @@ -458,7 +458,7 @@ protected: }; // device type definition -extern const device_type MACH8; +DECLARE_DEVICE_TYPE(MACH8, mach8_device) #define MCFG_MACH8_ADD(_tag, _param) \ MCFG_DEVICE_ADD(_tag, MACH8, 0) \ @@ -512,12 +512,12 @@ private: // device type definition -extern const device_type TSENG_VGA; +DECLARE_DEVICE_TYPE(TSENG_VGA, tseng_vga_device) // ======================> ati_vga_device -class ati_vga_device : public svga_device +class ati_vga_device : public svga_device { public: // construction/destruction @@ -536,7 +536,7 @@ public: mach8_device* get_8514() { return m_8514; } protected: - ati_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + ati_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual void device_start() override; private: void ati_define_video_mode(); @@ -550,7 +550,7 @@ private: }; // device type definition -extern const device_type ATI_VGA; +DECLARE_DEVICE_TYPE(ATI_VGA, ati_vga_device) // ======================> s3_vga_device @@ -578,7 +578,7 @@ public: ibm8514a_device* get_8514() { return m_8514; } protected: - s3_vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + s3_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); // device-level overrides virtual void device_start() override; @@ -641,7 +641,7 @@ private: }; // device type definition -extern const device_type S3_VGA; +DECLARE_DEVICE_TYPE(S3_VGA, s3_vga_device) // ======================> gamtor_vga_device @@ -664,7 +664,7 @@ public: // device type definition -extern const device_type GAMTOR_VGA; +DECLARE_DEVICE_TYPE(GAMTOR_VGA, gamtor_vga_device) /* pega notes (paradise) @@ -707,4 +707,4 @@ extern const device_type GAMTOR_VGA; */ -#endif /* MAME_DEVICES_VIDEO_PC_VGA_H */ +#endif // MAME_VIDEO_PC_VGA_H diff --git a/src/devices/video/pcd8544.cpp b/src/devices/video/pcd8544.cpp index 89ce964d6c0..0cca6742b05 100644 --- a/src/devices/video/pcd8544.cpp +++ b/src/devices/video/pcd8544.cpp @@ -11,14 +11,15 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" -#define LOG 0 //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** -const device_type PCD8544 = device_creator; +DEFINE_DEVICE_TYPE(PCD8544, pcd8544_device, "pcd8544_device", "Philips PCD8544 LCD Controller") //************************************************************************** @@ -30,7 +31,7 @@ const device_type PCD8544 = device_creator; //------------------------------------------------- pcd8544_device::pcd8544_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, PCD8544, "PCD8544", tag, owner, clock, "pcd8544", __FILE__) + device_t(mconfig, PCD8544, tag, owner, clock) { } @@ -85,7 +86,7 @@ void pcd8544_device::exec_command(uint8_t cmd) if(cmd & 0x80) { m_op_vol = cmd & 0x7f; - if (LOG) logerror("PCD8544: set Vop %d\n", m_op_vol); + LOG("PCD8544: set Vop %d\n", m_op_vol); } else if(cmd & 0x40) { @@ -94,12 +95,12 @@ void pcd8544_device::exec_command(uint8_t cmd) else if(cmd & 0x20) { m_mode = cmd & 0x07; - if (LOG) logerror("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0)); + LOG("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0)); } else if(cmd & 0x10) { m_bias = cmd & 0x07; - if (LOG) logerror("PCD8544: set bias system %d\n", m_bias); + LOG("PCD8544: set bias system %d\n", m_bias); } else if(cmd & 0x08) { @@ -108,7 +109,7 @@ void pcd8544_device::exec_command(uint8_t cmd) else if(cmd & 0x04) { m_temp_coef = cmd & 0x03; - if (LOG) logerror("PCD8544: set temperature coefficient %d\n", m_temp_coef); + LOG("PCD8544: set temperature coefficient %d\n", m_temp_coef); } else if (cmd) { @@ -120,17 +121,17 @@ void pcd8544_device::exec_command(uint8_t cmd) if(cmd & 0x80) { m_addr_x = (cmd & 0x7f) % 84; - if (LOG) logerror("PCD8544: set X-address %d\n", cmd & 0x7f); + LOG("PCD8544: set X-address %d\n", cmd & 0x7f); } else if(cmd & 0x40) { m_addr_y = (cmd & 0x07) % 6; - if (LOG) logerror("PCD8544: set Y-address %d\n", cmd & 0x07); + LOG("PCD8544: set Y-address %d\n", cmd & 0x07); } else if(cmd & 0x20) { m_mode = cmd & 0x07; - if (LOG) logerror("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0)); + LOG("PCD8544: set PD=%d V=%d H=%d\n", BIT(m_mode, 2), BIT(m_mode, 1), BIT(m_mode, 0)); } else if(cmd & 0x10) { @@ -139,7 +140,7 @@ void pcd8544_device::exec_command(uint8_t cmd) else if(cmd & 0x08) { m_control = ((cmd & 0x04) >> 1) | (cmd & 0x01); - if (LOG) logerror("PCD8544: set D=%d E=%d\n", BIT(m_control, 1), BIT(m_control, 0)); + LOG("PCD8544: set D=%d E=%d\n", BIT(m_control, 1), BIT(m_control, 0)); } else if (cmd) { diff --git a/src/devices/video/pcd8544.h b/src/devices/video/pcd8544.h index e8066f6eb65..8a5c71e6e95 100644 --- a/src/devices/video/pcd8544.h +++ b/src/devices/video/pcd8544.h @@ -6,24 +6,23 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_PCD8544_H +#define MAME_VIDEO_PCD8544_H -#ifndef __PCD8544_H__ -#define __PCD8544_H__ +#pragma once //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate pcd8544_screen_update_delegate; #define PCD8544_SCREEN_UPDATE(name) void name(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect , uint8_t *vram, int inv) #define MCFG_PCD8544_ADD( _tag ) \ MCFG_DEVICE_ADD( _tag, PCD8544, 0 ) #define MCFG_PCD8544_SCREEN_UPDATE_CALLBACK(_class, _method) \ - pcd8544_device::static_set_screen_update_cb(*device, pcd8544_screen_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + pcd8544_device::static_set_screen_update_cb(*device, pcd8544_device::screen_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); // ======================> pcd8544_device @@ -31,9 +30,11 @@ typedef device_delegate screen_update_delegate; + // construction/destruction pcd8544_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_screen_update_cb(device_t &device, pcd8544_screen_update_delegate _cb) { downcast(device).m_screen_update_cb = _cb; } + static void static_set_screen_update_cb(device_t &device, screen_update_delegate &&cb) { downcast(device).m_screen_update_cb = std::move(cb); } // device interface DECLARE_WRITE_LINE_MEMBER(sdin_w); @@ -50,7 +51,7 @@ protected: void write_data(uint8_t data); private: - pcd8544_screen_update_delegate m_screen_update_cb; // screen update callback + screen_update_delegate m_screen_update_cb; // screen update callback int m_sdin; int m_sclk; int m_dc; @@ -67,6 +68,6 @@ private: }; // device type definition -extern const device_type PCD8544; +DECLARE_DEVICE_TYPE(PCD8544, pcd8544_device) -#endif +#endif // MAME_VIDEO_PCD8544_H diff --git a/src/devices/video/poly.h b/src/devices/video/poly.h index a8b606bc08e..2c88c29a47f 100644 --- a/src/devices/video/poly.h +++ b/src/devices/video/poly.h @@ -32,8 +32,8 @@ ***************************************************************************/ -#ifndef MAME_DEVICES_VIDEO_POLY_H -#define MAME_DEVICES_VIDEO_POLY_H +#ifndef MAME_VIDEO_POLY_H +#define MAME_VIDEO_POLY_H #pragma once @@ -50,56 +50,21 @@ // keep statistics #define KEEP_POLY_STATISTICS 0 -// turn this on to log the reasons for any long waits -#define LOG_WAITS 0 - -// number of profiling ticks before we consider a wait "long" -#define LOG_WAIT_THRESHOLD 1000 - - - -/*************************************************************************** - CONSTANTS -***************************************************************************/ - -#define POLYFLAG_INCLUDE_BOTTOM_EDGE 0x01 -#define POLYFLAG_INCLUDE_RIGHT_EDGE 0x02 -#define POLYFLAG_NO_WORK_QUEUE 0x04 - -#define SCANLINES_PER_BUCKET 8 -#define CACHE_LINE_SIZE 64 // this is a general guess -#define TOTAL_BUCKETS (512 / SCANLINES_PER_BUCKET) -#define UNITS_PER_POLY (100 / SCANLINES_PER_BUCKET) - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -//------------------------------------------------- -// global helpers for float base types -//------------------------------------------------- - -inline float poly_floor(float x) { return floorf(x); } -inline float poly_abs(float x) { return fabsf(x); } -inline float poly_recip(float x) { return 1.0f / x; } - - -//------------------------------------------------- -// global helpers for double base types -//------------------------------------------------- - -inline double poly_floor(double x) { return floor(x); } -inline double poly_abs(double x) { return fabs(x); } -inline double poly_recip(double x) { return 1.0 / x; } - - // poly_manager is a template class template class poly_manager { public: + static constexpr uint8_t FLAG_INCLUDE_BOTTOM_EDGE = 0x01; + static constexpr uint8_t FLAG_INCLUDE_RIGHT_EDGE = 0x02; + static constexpr uint8_t FLAG_NO_WORK_QUEUE = 0x04; + // each vertex has an X/Y coordinate and a set of parameters struct vertex_t { @@ -159,6 +124,17 @@ public: int zclip_if_less(int numverts, const vertex_t *v, vertex_t *outv, int paramcount, _BaseType clipval); private: + // turn this on to log the reasons for any long waits + static constexpr bool POLY_LOG_WAITS = false; + + // number of profiling ticks before we consider a wait "long" + static constexpr osd_ticks_t POLY_LOG_WAIT_THRESHOLD = 1000; + + static constexpr int SCANLINES_PER_BUCKET = 8; + static constexpr int CACHE_LINE_SIZE = 64; // this is a general guess + static constexpr int TOTAL_BUCKETS = (512 / SCANLINES_PER_BUCKET); + static constexpr int UNITS_PER_POLY = (100 / SCANLINES_PER_BUCKET); + // polygon_info describes a single polygon, which includes the poly_params struct polygon_info { @@ -180,6 +156,24 @@ private: extent_t extent[SCANLINES_PER_BUCKET]; // array of scanline extents }; + //------------------------------------------------- + // global helpers for float base types + //------------------------------------------------- + + static float poly_floor(float x) { return floorf(x); } + static float poly_abs(float x) { return fabsf(x); } + static float poly_recip(float x) { return 1.0f / x; } + + + //------------------------------------------------- + // global helpers for double base types + //------------------------------------------------- + + static double poly_floor(double x) { return floor(x); } + static double poly_abs(double x) { return fabs(x); } + static double poly_recip(double x) { return 1.0 / x; } + + // class for managing an array of items template class poly_array @@ -309,7 +303,7 @@ poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::poly_manager(runnin #endif // create the work queue - if (!(flags & POLYFLAG_NO_WORK_QUEUE)) + if (!(flags & FLAG_NO_WORK_QUEUE)) m_queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_MULTI | WORK_QUEUE_FLAG_HIGH_FREQ); // request a pre-save callback for synchronization @@ -336,7 +330,7 @@ poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::poly_manager(screen #endif // create the work queue - if (!(flags & POLYFLAG_NO_WORK_QUEUE)) + if (!(flags & FLAG_NO_WORK_QUEUE)) m_queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_MULTI | WORK_QUEUE_FLAG_HIGH_FREQ); // request a pre-save callback for synchronization @@ -454,7 +448,7 @@ void poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::wait(const cha osd_ticks_t time; // remember the start time if we're logging - if (LOG_WAITS) + if (POLY_LOG_WAITS) time = get_profile_ticks(); // wait for all pending work items to complete @@ -467,10 +461,10 @@ void poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::wait(const cha work_item_callback(&m_unit[unitnum], 0); // log any long waits - if (LOG_WAITS) + if (POLY_LOG_WAITS) { time = get_profile_ticks() - time; - if (time > LOG_WAIT_THRESHOLD) + if (time > POLY_LOG_WAIT_THRESHOLD) machine().logerror("Poly:Waited %d cycles for %s\n", (int)time, debug_reason); } @@ -528,7 +522,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_til // clip coordinates int32_t v1yclip = v1y; - int32_t v2yclip = v2y + ((m_flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); + int32_t v2yclip = v2y + ((m_flags & FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); v1yclip = std::max(v1yclip, cliprect.min_y); v2yclip = std::min(v2yclip, cliprect.max_y + 1); if (v2yclip - v1yclip <= 0) @@ -570,7 +564,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_til } // include the right edge if requested - if (m_flags & POLYFLAG_INCLUDE_RIGHT_EDGE) + if (m_flags & FLAG_INCLUDE_RIGHT_EDGE) istopx++; // apply left/right clipping @@ -673,7 +667,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_tri // clip coordinates int32_t v1yclip = v1y; - int32_t v3yclip = v3y + ((m_flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); + int32_t v3yclip = v3y + ((m_flags & FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); v1yclip = std::max(v1yclip, cliprect.min_y); v3yclip = std::min(v3yclip, cliprect.max_y + 1); if (v3yclip - v1yclip <= 0) @@ -784,7 +778,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_tri } // include the right edge if requested - if (m_flags & POLYFLAG_INCLUDE_RIGHT_EDGE) + if (m_flags & FLAG_INCLUDE_RIGHT_EDGE) istopx++; // apply left/right clipping @@ -971,7 +965,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_pol // clip coordinates int32_t minyclip = miny; - int32_t maxyclip = maxy + ((m_flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); + int32_t maxyclip = maxy + ((m_flags & FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); minyclip = std::max(minyclip, cliprect.min_y); maxyclip = std::min(maxyclip, cliprect.max_y + 1); if (maxyclip - minyclip <= 0) @@ -1104,7 +1098,7 @@ uint32_t poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::render_pol } // include the right edge if requested - if (m_flags & POLYFLAG_INCLUDE_RIGHT_EDGE) + if (m_flags & FLAG_INCLUDE_RIGHT_EDGE) istopx++; // apply left/right clipping diff --git a/src/devices/video/polylgcy.cpp b/src/devices/video/polylgcy.cpp index 5e8383062ca..2b3f8ccee02 100644 --- a/src/devices/video/polylgcy.cpp +++ b/src/devices/video/polylgcy.cpp @@ -10,8 +10,12 @@ #include "emu.h" #include "polylgcy.h" + #include + +namespace { + /*************************************************************************** DEBUGGING ***************************************************************************/ @@ -71,7 +75,7 @@ struct poly_edge const poly_vertex * v1; /* pointer to first vertex */ const poly_vertex * v2; /* pointer to second vertex */ float dxdy; /* dx/dy along the edge */ - float dpdy[MAX_VERTEX_PARAMS];/* per-parameter dp/dy values */ + float dpdy[POLYLGCY_MAX_VERTEX_PARAMS];/* per-parameter dp/dy values */ }; @@ -133,9 +137,11 @@ struct polygon_info poly_draw_scanline_func callback; /* callback to handle a scanline's worth of work */ int32_t xorigin; /* X origin for all parameters */ int32_t yorigin; /* Y origin for all parameters */ - poly_param param[MAX_VERTEX_PARAMS];/* array of parameter data */ + poly_param param[POLYLGCY_MAX_VERTEX_PARAMS];/* array of parameter data */ }; +} // anonymous namespace + /* full poly manager description */ struct legacy_poly_manager @@ -331,13 +337,13 @@ legacy_poly_manager *poly_alloc(running_machine &machine, int max_polys, size_t poly->extra = allocate_array(machine, &poly->extra_size, poly->extra_count); /* allocate triangle work units */ - poly->unit_size = (flags & POLYFLAG_ALLOW_QUADS) ? sizeof(quad_work_unit) : sizeof(tri_work_unit); + poly->unit_size = (flags & POLYLGCY_FLAG_ALLOW_QUADS) ? sizeof(quad_work_unit) : sizeof(tri_work_unit); poly->unit_count = std::min(poly->polygon_count * UNITS_PER_POLY, 65535U); poly->unit_next = 0; poly->unit = (work_unit **)allocate_array(machine, &poly->unit_size, poly->unit_count); /* create the work queue */ - if (!(flags & POLYFLAG_NO_WORK_QUEUE)) + if (!(flags & POLYLGCY_FLAG_NO_WORK_QUEUE)) poly->queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_MULTI | WORK_QUEUE_FLAG_HIGH_FREQ); /* request a pre-save callback for synchronization */ @@ -500,7 +506,7 @@ uint32_t poly_render_triangle(legacy_poly_manager *poly, void *dest, const recta /* clip coordinates */ v1yclip = v1y; - v3yclip = v3y + ((poly->flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); + v3yclip = v3y + ((poly->flags & POLYLGCY_FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); v1yclip = std::max(v1yclip, cliprect.min_y); v3yclip = std::min(v3yclip, cliprect.max_y + 1); if (v3yclip - v1yclip <= 0) @@ -572,7 +578,7 @@ uint32_t poly_render_triangle(legacy_poly_manager *poly, void *dest, const recta } /* include the right edge if requested */ - if (poly->flags & POLYFLAG_INCLUDE_RIGHT_EDGE) + if (poly->flags & POLYLGCY_FLAG_INCLUDE_RIGHT_EDGE) istopx++; /* apply left/right clipping */ @@ -772,7 +778,7 @@ uint32_t poly_render_quad(legacy_poly_manager *poly, void *dest, const rectangle int32_t pixels = 0; uint32_t startunit; - assert(poly->flags & POLYFLAG_ALLOW_QUADS); + assert(poly->flags & POLYLGCY_FLAG_ALLOW_QUADS); /* arrays make things easier */ v[0] = v1; @@ -800,7 +806,7 @@ uint32_t poly_render_quad(legacy_poly_manager *poly, void *dest, const rectangle /* clip coordinates */ minyclip = miny; - maxyclip = maxy + ((poly->flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); + maxyclip = maxy + ((poly->flags & POLYLGCY_FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); minyclip = std::max(minyclip, cliprect.min_y); maxyclip = std::min(maxyclip, cliprect.max_y + 1); if (maxyclip - minyclip <= 0) @@ -937,7 +943,7 @@ uint32_t poly_render_quad(legacy_poly_manager *poly, void *dest, const rectangle } /* include the right edge if requested */ - if (poly->flags & POLYFLAG_INCLUDE_RIGHT_EDGE) + if (poly->flags & POLYLGCY_FLAG_INCLUDE_RIGHT_EDGE) istopx++; /* apply left/right clipping */ @@ -1002,7 +1008,7 @@ uint32_t poly_render_quad_fan(legacy_poly_manager *poly, void *dest, const recta uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectangle &cliprect, poly_draw_scanline_func callback, int paramcount, int numverts, const poly_vertex *v) { - poly_edge fedgelist[MAX_POLYGON_VERTS - 1], bedgelist[MAX_POLYGON_VERTS - 1]; + poly_edge fedgelist[POLYLGCY_MAX_POLYGON_VERTS - 1], bedgelist[POLYLGCY_MAX_POLYGON_VERTS - 1]; const poly_edge *ledge, *redge; poly_edge *edgeptr; int minv, maxv, curv; @@ -1014,7 +1020,7 @@ uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectan uint32_t startunit; int vertnum; - assert(poly->flags & POLYFLAG_ALLOW_QUADS); + assert(poly->flags & POLYLGCY_FLAG_ALLOW_QUADS); /* determine min/max Y vertices */ minv = maxv = 0; @@ -1032,7 +1038,7 @@ uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectan /* clip coordinates */ minyclip = miny; - maxyclip = maxy + ((poly->flags & POLYFLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); + maxyclip = maxy + ((poly->flags & POLYLGCY_FLAG_INCLUDE_BOTTOM_EDGE) ? 1 : 0); minyclip = std::max(minyclip, cliprect.min_y); maxyclip = std::min(maxyclip, cliprect.max_y + 1); if (maxyclip - minyclip <= 0) @@ -1169,7 +1175,7 @@ uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectan } /* include the right edge if requested */ - if (poly->flags & POLYFLAG_INCLUDE_RIGHT_EDGE) + if (poly->flags & POLYLGCY_FLAG_INCLUDE_RIGHT_EDGE) istopx++; /* apply left/right clipping */ diff --git a/src/devices/video/polylgcy.h b/src/devices/video/polylgcy.h index fe7f13205f4..142ca5c073b 100644 --- a/src/devices/video/polylgcy.h +++ b/src/devices/video/polylgcy.h @@ -32,23 +32,23 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_POLYLGCY_H +#define MAME_VIDEO_POLYLGCY_H -#ifndef __POLYLGCY_H__ -#define __POLYLGCY_H__ +#pragma once /*************************************************************************** CONSTANTS ***************************************************************************/ -#define MAX_VERTEX_PARAMS 6 -#define MAX_POLYGON_VERTS 32 +static constexpr unsigned POLYLGCY_MAX_VERTEX_PARAMS = 6; +static constexpr unsigned POLYLGCY_MAX_POLYGON_VERTS = 32; -#define POLYFLAG_INCLUDE_BOTTOM_EDGE 0x01 -#define POLYFLAG_INCLUDE_RIGHT_EDGE 0x02 -#define POLYFLAG_NO_WORK_QUEUE 0x04 -#define POLYFLAG_ALLOW_QUADS 0x08 +static constexpr uint8_t POLYLGCY_FLAG_INCLUDE_BOTTOM_EDGE = 0x01; +static constexpr uint8_t POLYLGCY_FLAG_INCLUDE_RIGHT_EDGE = 0x02; +static constexpr uint8_t POLYLGCY_FLAG_NO_WORK_QUEUE = 0x04; +static constexpr uint8_t POLYLGCY_FLAG_ALLOW_QUADS = 0x08; @@ -65,7 +65,7 @@ struct poly_vertex { float x; /* X coordinate */ float y; /* Y coordinate */ - float p[MAX_VERTEX_PARAMS]; /* interpolated parameter values */ + float p[POLYLGCY_MAX_VERTEX_PARAMS]; /* interpolated parameter values */ }; @@ -82,7 +82,7 @@ struct poly_extent { int16_t startx; /* starting X coordinate (inclusive) */ int16_t stopx; /* ending X coordinate (exclusive) */ - poly_param_extent param[MAX_VERTEX_PARAMS]; /* starting and dx values for each parameter */ + poly_param_extent param[POLYLGCY_MAX_VERTEX_PARAMS]; /* starting and dx values for each parameter */ }; @@ -152,4 +152,4 @@ uint32_t poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectan int poly_zclip_if_less(int numverts, const poly_vertex *v, poly_vertex *outv, int paramcount, float clipval); -#endif /* __POLYLGCY_H__ */ +#endif // MAME_VIDEO_POLYLGCY_H diff --git a/src/devices/video/ppu2c0x.cpp b/src/devices/video/ppu2c0x.cpp index 670e504b351..a64f890c805 100644 --- a/src/devices/video/ppu2c0x.cpp +++ b/src/devices/video/ppu2c0x.cpp @@ -75,14 +75,15 @@ static const pen_t default_colortable[] = //************************************************************************** // devices -const device_type PPU_2C02 = device_creator; -const device_type PPU_2C03B = device_creator; -const device_type PPU_2C04 = device_creator; -const device_type PPU_2C07 = device_creator; -const device_type PPU_2C05_01 = device_creator; -const device_type PPU_2C05_02 = device_creator; -const device_type PPU_2C05_03 = device_creator; -const device_type PPU_2C05_04 = device_creator; +DEFINE_DEVICE_TYPE(PPU_2C02, ppu2c02_device, "ppu2c02", "2C02 PPU") +DEFINE_DEVICE_TYPE(PPU_2C03B, ppu2c03b_device, "ppu2c03b", "2C03B PPC") +DEFINE_DEVICE_TYPE(PPU_2C04, ppu2c04_device, "ppu2c04", "2C04 PPU") +DEFINE_DEVICE_TYPE(PPU_2C07, ppu2c07_device, "ppu2c07", "2C07 PPU") +DEFINE_DEVICE_TYPE(PPU_PALC, ppupalc_device, "ppupalc", "Generic PAL Clone PPU") +DEFINE_DEVICE_TYPE(PPU_2C05_01, ppu2c05_01_device, "ppu2c05_01", "2C05_01 PPU") +DEFINE_DEVICE_TYPE(PPU_2C05_02, ppu2c05_02_device, "ppu2c05_02", "2C05_02 PPU") +DEFINE_DEVICE_TYPE(PPU_2C05_03, ppu2c05_03_device, "ppu2c05_03", "2C05_03 PPU") +DEFINE_DEVICE_TYPE(PPU_2C05_04, ppu2c05_04_device, "ppu2c05_04", "2C05_04 PPU") // default address map @@ -104,10 +105,10 @@ const address_space_config *ppu2c0x_device::memory_space_config(address_spacenum // static -void ppu2c0x_device::set_nmi_delegate(device_t &device,ppu2c0x_nmi_delegate cb) +void ppu2c0x_device::set_nmi_delegate(device_t &device, nmi_delegate &&cb) { ppu2c0x_device &dev = downcast(device); - dev.m_nmi_callback_proc = cb; + dev.m_nmi_callback_proc = std::move(cb); } //------------------------------------------------- // ppu2c0x_device - constructor @@ -116,14 +117,14 @@ void ppu2c0x_device::set_nmi_delegate(device_t &device,ppu2c0x_nmi_delegate cb) void ppu2c0x_device::device_config_complete() { /* reset the callbacks */ - m_latch = ppu2c0x_latch_delegate(); - m_scanline_callback_proc = ppu2c0x_scanline_delegate(); - m_hblank_callback_proc = ppu2c0x_hblank_delegate(); - m_vidaccess_callback_proc = ppu2c0x_vidaccess_delegate(); + m_latch = latch_delegate(); + m_scanline_callback_proc = scanline_delegate(); + m_hblank_callback_proc = hblank_delegate(); + m_vidaccess_callback_proc = vidaccess_delegate(); } -ppu2c0x_device::ppu2c0x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +ppu2c0x_device::ppu2c0x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , device_memory_interface(mconfig, *this) , device_video_interface(mconfig, *this) , m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, nullptr, *ADDRESS_MAP_NAME(ppu2c0x)) @@ -151,54 +152,62 @@ ppu2c0x_device::ppu2c0x_device(const machine_config &mconfig, device_type type, memset(m_palette_ram, 0, ARRAY_LENGTH(m_palette_ram)); - m_scanlines_per_frame = PPU_NTSC_SCANLINES_PER_FRAME; + m_scanlines_per_frame = NTSC_SCANLINES_PER_FRAME; + m_vblank_first_scanline = VBLANK_FIRST_SCANLINE; /* usually, no security value... */ m_security_value = 0; - m_nmi_callback_proc = ppu2c0x_nmi_delegate(); + m_nmi_callback_proc = nmi_delegate(); } // NTSC NES -ppu2c02_device::ppu2c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C02, "2C02 PPU", tag, owner, clock, "ppu2c02", __FILE__) +ppu2c02_device::ppu2c02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C02, tag, owner, clock) { } // Playchoice 10 -ppu2c03b_device::ppu2c03b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C03B, "2C03B PPU", tag, owner, clock, "ppu2c03b", __FILE__) +ppu2c03b_device::ppu2c03b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C03B, tag, owner, clock) { } // Vs. Unisystem -ppu2c04_device::ppu2c04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C04, "2C04 PPU", tag, owner, clock, "ppu2c04", __FILE__) +ppu2c04_device::ppu2c04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C04, tag, owner, clock) { } // PAL NES -ppu2c07_device::ppu2c07_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C07, "2C07 PPU", tag, owner, clock, "ppu2c07", __FILE__) +ppu2c07_device::ppu2c07_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C07, tag, owner, clock) { - m_scanlines_per_frame = PPU_PAL_SCANLINES_PER_FRAME; + m_scanlines_per_frame = PAL_SCANLINES_PER_FRAME; +} + +// PAL clones +ppupalc_device::ppupalc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_PALC, tag, owner, clock) +{ + m_scanlines_per_frame = PAL_SCANLINES_PER_FRAME; + m_vblank_first_scanline = VBLANK_FIRST_SCANLINE_PALC; } // The PPU_2C05 variants have different protection value, set at device start, but otherwise are all the same... // Vs. Unisystem (Ninja Jajamaru Kun) -ppu2c05_01_device::ppu2c05_01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_01, "2C05_01 PPU", tag, owner, clock, "ppu2c05_01", __FILE__) +ppu2c05_01_device::ppu2c05_01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_01, tag, owner, clock) { m_security_value = 0x1b; // game (jajamaru) doesn't seem to ever actually check it } // Vs. Unisystem (Mighty Bomb Jack) -ppu2c05_02_device::ppu2c05_02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_02, "2C05_02 PPU", tag, owner, clock, "ppu2c05_02", __FILE__) +ppu2c05_02_device::ppu2c05_02_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_02, tag, owner, clock) { m_security_value = 0x3d; } // Vs. Unisystem (Gumshoe) -ppu2c05_03_device::ppu2c05_03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_03, "2C05_03 PPU", tag, owner, clock, "ppu2c05_03", __FILE__) +ppu2c05_03_device::ppu2c05_03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_03, tag, owner, clock) { m_security_value = 0x1c; } // Vs. Unisystem (Top Gun) -ppu2c05_04_device::ppu2c05_04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_04, "2C05_04 PPU", tag, owner, clock, "ppu2c05_04", __FILE__) +ppu2c05_04_device::ppu2c05_04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ppu2c0x_device(mconfig, PPU_2C05_04, tag, owner, clock) { m_security_value = 0x1b; } @@ -254,6 +263,7 @@ void ppu2c0x_device::device_start() save_item(NAME(m_back_color)); save_item(NAME(m_scan_scale)); save_item(NAME(m_scanlines_per_frame)); + save_item(NAME(m_vblank_first_scanline)); save_item(NAME(m_regs)); save_item(NAME(m_palette_ram)); save_item(NAME(m_draw_phase)); @@ -469,7 +479,7 @@ void ppu2c0x_device::device_timer(emu_timer &timer, device_timer_id id, int para { case TIMER_HBLANK: blanked = (m_regs[PPU_CONTROL1] & (PPU_CONTROL1_BACKGROUND | PPU_CONTROL1_SPRITES)) == 0; - vblank = ((m_scanline >= PPU_VBLANK_FIRST_SCANLINE - 1) && (m_scanline < m_scanlines_per_frame - 1)) ? 1 : 0; + vblank = ((m_scanline >= m_vblank_first_scanline - 1) && (m_scanline < m_scanlines_per_frame - 1)) ? 1 : 0; //update_scanline(); @@ -489,7 +499,7 @@ void ppu2c0x_device::device_timer(emu_timer &timer, device_timer_id id, int para case TIMER_SCANLINE: blanked = (m_regs[PPU_CONTROL1] & (PPU_CONTROL1_BACKGROUND | PPU_CONTROL1_SPRITES)) == 0; - vblank = ((m_scanline >= PPU_VBLANK_FIRST_SCANLINE - 1) && (m_scanline < m_scanlines_per_frame - 1)) ? 1 : 0; + vblank = ((m_scanline >= m_vblank_first_scanline - 1) && (m_scanline < m_scanlines_per_frame - 1)) ? 1 : 0; int next_scanline; /* if a callback is available, call it */ @@ -505,7 +515,7 @@ void ppu2c0x_device::device_timer(emu_timer &timer, device_timer_id id, int para // logerror("starting scanline %d (MAME %d, beam %d)\n", m_scanline, device->m_screen->vpos(), device->m_screen->hpos()); /* Note: this is called at the _end_ of each scanline */ - if (m_scanline == PPU_VBLANK_FIRST_SCANLINE) + if (m_scanline == m_vblank_first_scanline) { // logerror("vblank starting\n"); /* We just entered VBLANK */ @@ -938,7 +948,7 @@ void ppu2c0x_device::render_scanline( void ) void ppu2c0x_device::update_scanline( void ) { - if (m_scanline <= PPU_BOTTOM_VISIBLE_SCANLINE) + if (m_scanline <= BOTTOM_VISIBLE_SCANLINE) { /* Render this scanline if appropriate */ if (m_regs[PPU_CONTROL1] & (PPU_CONTROL1_BACKGROUND | PPU_CONTROL1_SPRITES)) @@ -1139,7 +1149,7 @@ WRITE8_MEMBER( ppu2c0x_device::write ) } #ifdef MAME_DEBUG - if (m_scanline <= PPU_BOTTOM_VISIBLE_SCANLINE) + if (m_scanline <= BOTTOM_VISIBLE_SCANLINE) { logerror("PPU register %d write %02x during non-vblank scanline %d (MAME %d, beam pos: %d)\n", offset, data, m_scanline, m_screen->vpos(), m_screen->hpos()); } @@ -1190,7 +1200,7 @@ WRITE8_MEMBER( ppu2c0x_device::write ) case PPU_SPRITE_DATA: /* 4 */ // If the PPU is currently rendering the screen, 0xff is written instead of the desired data. if (m_use_sprite_write_limitation) - if (m_scanline <= PPU_BOTTOM_VISIBLE_SCANLINE) + if (m_scanline <= BOTTOM_VISIBLE_SCANLINE) data = 0xff; m_spriteram[m_regs[PPU_SPRITE_ADDRESS]] = data; m_regs[PPU_SPRITE_ADDRESS] = (m_regs[PPU_SPRITE_ADDRESS] + 1) & 0xff; diff --git a/src/devices/video/ppu2c0x.h b/src/devices/video/ppu2c0x.h index d426630eb64..0ae702fdf1d 100644 --- a/src/devices/video/ppu2c0x.h +++ b/src/devices/video/ppu2c0x.h @@ -9,10 +9,10 @@ ******************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_PPU2C0X_H +#define MAME_VIDEO_PPU2C0X_H -#ifndef __PPU_2C03B_H__ -#define __PPU_2C03B_H__ +#pragma once ///************************************************************************* // MACROS / CONSTANTS @@ -30,57 +30,6 @@ #define PPU_DRAW_OAM 1 -// registers definition -enum -{ - PPU_CONTROL0 = 0, - PPU_CONTROL1, - PPU_STATUS, - PPU_SPRITE_ADDRESS, - PPU_SPRITE_DATA, - PPU_SCROLL, - PPU_ADDRESS, - PPU_DATA, - PPU_MAX_REG -}; - -// bit definitions for (some of) the registers -enum -{ - PPU_CONTROL0_INC = 0x04, - PPU_CONTROL0_SPR_SELECT = 0x08, - PPU_CONTROL0_CHR_SELECT = 0x10, - PPU_CONTROL0_SPRITE_SIZE = 0x20, - PPU_CONTROL0_NMI = 0x80, - - PPU_CONTROL1_DISPLAY_MONO = 0x01, - PPU_CONTROL1_BACKGROUND_L8 = 0x02, - PPU_CONTROL1_SPRITES_L8 = 0x04, - PPU_CONTROL1_BACKGROUND = 0x08, - PPU_CONTROL1_SPRITES = 0x10, - PPU_CONTROL1_COLOR_EMPHASIS = 0xe0, - - PPU_STATUS_8SPRITES = 0x20, - PPU_STATUS_SPRITE0_HIT = 0x40, - PPU_STATUS_VBLANK = 0x80 -}; - -enum -{ - PPU_NTSC_SCANLINES_PER_FRAME = 262, - PPU_PAL_SCANLINES_PER_FRAME = 312, - - PPU_BOTTOM_VISIBLE_SCANLINE = 239, - PPU_VBLANK_FIRST_SCANLINE = 241, - PPU_VBLANK_LAST_SCANLINE_NTSC = 260, - PPU_VBLANK_LAST_SCANLINE_PAL = 310 - - // Both the scanline immediately before and immediately after VBLANK - // are non-rendering and non-vblank. -}; - -/*----------- defined in video/ppu2c0x.c -----------*/ - ///************************************************************************* // INTERFACE CONFIGURATION MACROS ///************************************************************************* @@ -96,6 +45,8 @@ enum MCFG_PPU2C0X_ADD(_tag, PPU_2C04) #define MCFG_PPU2C07_ADD(_tag) \ MCFG_PPU2C0X_ADD(_tag, PPU_2C07) +#define MCFG_PPUPALC_ADD(_tag) \ + MCFG_PPU2C0X_ADD(_tag, PPU_PALC) #define MCFG_PPU2C05_01_ADD(_tag) \ MCFG_PPU2C0X_ADD(_tag, PPU_2C05_01) #define MCFG_PPU2C05_02_ADD(_tag) \ @@ -114,7 +65,7 @@ enum ppu2c0x_device::set_color_base(*device, _color); #define MCFG_PPU2C0X_SET_NMI(_class, _method) \ - ppu2c0x_device::set_nmi_delegate(*device, ppu2c0x_nmi_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); + ppu2c0x_device::set_nmi_delegate(*device, ppu2c0x_device::nmi_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); #define MCFG_PPU2C0X_IGNORE_SPRITE_WRITE_LIMIT \ ppu2c0x_device::use_sprite_write_limitation_disable(*device); @@ -122,12 +73,6 @@ enum ///************************************************************************* // TYPE DEFINITIONS ///************************************************************************* -typedef device_delegate ppu2c0x_scanline_delegate; -typedef device_delegate ppu2c0x_hblank_delegate; -typedef device_delegate ppu2c0x_nmi_delegate; -typedef device_delegate ppu2c0x_vidaccess_delegate; -typedef device_delegate ppu2c0x_latch_delegate; - // ======================> ppu2c0x_device @@ -136,25 +81,35 @@ class ppu2c0x_device : public device_t, public device_video_interface { public: - // construction/destruction - ppu2c0x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + typedef device_delegate scanline_delegate; + typedef device_delegate hblank_delegate; + typedef device_delegate nmi_delegate; + typedef device_delegate vidaccess_delegate; + typedef device_delegate latch_delegate; + + enum + { + NTSC_SCANLINES_PER_FRAME = 262, + PAL_SCANLINES_PER_FRAME = 312, + + BOTTOM_VISIBLE_SCANLINE = 239, + VBLANK_FIRST_SCANLINE = 241, + VBLANK_FIRST_SCANLINE_PALC = 291, + VBLANK_LAST_SCANLINE_NTSC = 260, + VBLANK_LAST_SCANLINE_PAL = 310 + + // Both the scanline immediately before and immediately after VBLANK + // are non-rendering and non-vblank. + }; DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( palette_read ); DECLARE_WRITE8_MEMBER( palette_write ); - virtual void device_start() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual void device_config_complete() override; - // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; - // address space configurations - const address_space_config m_space_config; - static void set_cpu_tag(device_t &device, const char *tag) { downcast(device).m_cpu.set_tag(tag); } static void set_color_base(device_t &device, int colorbase) { downcast(device).m_color_base = colorbase; } - static void set_nmi_delegate(device_t &device, ppu2c0x_nmi_delegate cb); + static void set_nmi_delegate(device_t &device, nmi_delegate &&cb); /* routines */ void init_palette( palette_device &palette, int first_entry ); @@ -171,9 +126,9 @@ public: int get_colorbase() { return m_color_base; }; int get_current_scanline() { return m_scanline; }; - void set_scanline_callback( ppu2c0x_scanline_delegate cb ) { m_scanline_callback_proc = cb; m_scanline_callback_proc.bind_relative_to(*owner()); }; - void set_hblank_callback( ppu2c0x_hblank_delegate cb ) { m_hblank_callback_proc = cb; m_hblank_callback_proc.bind_relative_to(*owner()); }; - void set_vidaccess_callback( ppu2c0x_vidaccess_delegate cb ) { m_vidaccess_callback_proc = cb; m_vidaccess_callback_proc.bind_relative_to(*owner()); }; + void set_scanline_callback( scanline_delegate &&cb ) { m_scanline_callback_proc = std::move(cb); m_scanline_callback_proc.bind_relative_to(*owner()); }; + void set_hblank_callback( hblank_delegate &&cb ) { m_hblank_callback_proc = std::move(cb); m_hblank_callback_proc.bind_relative_to(*owner()); }; + void set_vidaccess_callback( vidaccess_delegate &&cb ) { m_vidaccess_callback_proc = std::move(cb); m_vidaccess_callback_proc.bind_relative_to(*owner()); }; void set_scanlines_per_frame( int scanlines ) { m_scanlines_per_frame = scanlines; }; // MMC5 has to be able to check this @@ -182,21 +137,89 @@ public: int get_tilenum() { return m_tilecount; }; //27/12/2002 (HACK!) - void set_latch( ppu2c0x_latch_delegate cb ) { m_latch = cb; m_latch.bind_relative_to(*owner()); }; + void set_latch( latch_delegate &&cb ) { m_latch = std::move(cb); m_latch.bind_relative_to(*owner()); }; // void update_screen(bitmap_t &bitmap, const rectangle &cliprect); + // some bootleg / clone hardware appears to ignore this + static void use_sprite_write_limitation_disable(device_t &device) + { + ppu2c0x_device &dev = downcast(device); + dev.m_use_sprite_write_limitation = false; + } + +protected: + // registers definition + enum + { + PPU_CONTROL0 = 0, + PPU_CONTROL1, + PPU_STATUS, + PPU_SPRITE_ADDRESS, + PPU_SPRITE_DATA, + PPU_SCROLL, + PPU_ADDRESS, + PPU_DATA, + PPU_MAX_REG + }; + + // bit definitions for (some of) the registers + enum + { + PPU_CONTROL0_INC = 0x04, + PPU_CONTROL0_SPR_SELECT = 0x08, + PPU_CONTROL0_CHR_SELECT = 0x10, + PPU_CONTROL0_SPRITE_SIZE = 0x20, + PPU_CONTROL0_NMI = 0x80, + + PPU_CONTROL1_DISPLAY_MONO = 0x01, + PPU_CONTROL1_BACKGROUND_L8 = 0x02, + PPU_CONTROL1_SPRITES_L8 = 0x04, + PPU_CONTROL1_BACKGROUND = 0x08, + PPU_CONTROL1_SPRITES = 0x10, + PPU_CONTROL1_COLOR_EMPHASIS = 0xe0, + + PPU_STATUS_8SPRITES = 0x20, + PPU_STATUS_SPRITE0_HIT = 0x40, + PPU_STATUS_VBLANK = 0x80 + }; + + // construction/destruction + ppu2c0x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + virtual void device_start() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + virtual void device_config_complete() override; + + // device_config_memory_interface overrides + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; + + // address space configurations + const address_space_config m_space_config; + required_device m_cpu; + int m_scanlines_per_frame; /* number of scanlines per frame */ + int m_security_value; /* 2C05 protection */ + int m_vblank_first_scanline; /* the very first scanline where VBLANK occurs */ + +private: + static constexpr device_timer_id TIMER_HBLANK = 0; + static constexpr device_timer_id TIMER_NMI = 1; + static constexpr device_timer_id TIMER_SCANLINE = 2; + + inline uint8_t readbyte(offs_t address); + inline void writebyte(offs_t address, uint8_t data); + std::unique_ptr m_bitmap; /* target bitmap */ - std::unique_ptr m_spriteram; /* sprite ram */ + std::unique_ptr m_spriteram; /* sprite ram */ std::unique_ptr m_colortable; /* color table modified at run time */ std::unique_ptr m_colortable_mono; /* monochromatic color table modified at run time */ int m_scanline; /* scanline count */ - ppu2c0x_scanline_delegate m_scanline_callback_proc; /* optional scanline callback */ - ppu2c0x_hblank_delegate m_hblank_callback_proc; /* optional hblank callback */ - ppu2c0x_vidaccess_delegate m_vidaccess_callback_proc; /* optional video access callback */ - ppu2c0x_nmi_delegate m_nmi_callback_proc; /* nmi access callback from interface */ + scanline_delegate m_scanline_callback_proc; /* optional scanline callback */ + hblank_delegate m_hblank_callback_proc; /* optional hblank callback */ + vidaccess_delegate m_vidaccess_callback_proc; /* optional video access callback */ + nmi_delegate m_nmi_callback_proc; /* nmi access callback from interface */ int m_regs[PPU_MAX_REG]; /* registers */ int m_refresh_data; /* refresh-related */ int m_refresh_latch; /* refresh-related */ @@ -210,35 +233,18 @@ public: int m_sprite_page; /* current sprite page */ int m_back_color; /* background color */ int m_color_base; - uint8_t m_palette_ram[0x20]; /* shouldn't be in main memory! */ + uint8_t m_palette_ram[0x20]; /* shouldn't be in main memory! */ int m_scan_scale; /* scan scale */ - int m_scanlines_per_frame; /* number of scanlines per frame */ - int m_security_value; /* 2C05 protection */ int m_tilecount; /* MMC5 can change attributes to subsets of the 34 visible tiles */ int m_draw_phase; /* MMC5 uses different regs for BG and OAM */ - ppu2c0x_latch_delegate m_latch; + latch_delegate m_latch; // timers emu_timer *m_hblank_timer; /* hblank period at end of each scanline */ emu_timer *m_nmi_timer; /* NMI timer */ emu_timer *m_scanline_timer; /* scanline timer */ - - // some bootleg / clone hardware appears to ignore this - static void use_sprite_write_limitation_disable(device_t &device) - { - ppu2c0x_device &dev = downcast(device); - dev.m_use_sprite_write_limitation = false; - } - + bool m_use_sprite_write_limitation; -private: - static const device_timer_id TIMER_HBLANK = 0; - static const device_timer_id TIMER_NMI = 1; - static const device_timer_id TIMER_SCANLINE = 2; - - inline uint8_t readbyte(offs_t address); - inline void writebyte(offs_t address, uint8_t data); - }; class ppu2c02_device : public ppu2c0x_device { @@ -261,6 +267,11 @@ public: ppu2c07_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; +class ppupalc_device : public ppu2c0x_device { +public: + ppupalc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +}; + class ppu2c05_01_device : public ppu2c0x_device { public: ppu2c05_01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -284,14 +295,14 @@ public: // device type definition //extern const device_type PPU_2C0X; -extern const device_type PPU_2C02; // NTSC NES -extern const device_type PPU_2C03B; // Playchoice 10 -extern const device_type PPU_2C04; // Vs. Unisystem -extern const device_type PPU_2C07; // PAL NES -extern const device_type PPU_2C05_01; // Vs. Unisystem (Ninja Jajamaru Kun) -extern const device_type PPU_2C05_02; // Vs. Unisystem (Mighty Bomb Jack) -extern const device_type PPU_2C05_03; // Vs. Unisystem (Gumshoe) -extern const device_type PPU_2C05_04; // Vs. Unisystem (Top Gun) - - -#endif +DECLARE_DEVICE_TYPE(PPU_2C02, ppu2c02_device) // NTSC NES +DECLARE_DEVICE_TYPE(PPU_2C03B, ppu2c03b_device) // Playchoice 10 +DECLARE_DEVICE_TYPE(PPU_2C04, ppu2c04_device) // Vs. Unisystem +DECLARE_DEVICE_TYPE(PPU_2C07, ppu2c07_device) // PAL NES +DECLARE_DEVICE_TYPE(PPU_PALC, ppupalc_device) // PAL Clones +DECLARE_DEVICE_TYPE(PPU_2C05_01, ppu2c05_01_device) // Vs. Unisystem (Ninja Jajamaru Kun) +DECLARE_DEVICE_TYPE(PPU_2C05_02, ppu2c05_02_device) // Vs. Unisystem (Mighty Bomb Jack) +DECLARE_DEVICE_TYPE(PPU_2C05_03, ppu2c05_03_device) // Vs. Unisystem (Gumshoe) +DECLARE_DEVICE_TYPE(PPU_2C05_04, ppu2c05_04_device) // Vs. Unisystem (Top Gun) + +#endif // MAME_VIDEO_PPU2C0X_H diff --git a/src/devices/video/psx.cpp b/src/devices/video/psx.cpp index 6b2963babdf..976bb0093bd 100644 --- a/src/devices/video/psx.cpp +++ b/src/devices/video/psx.cpp @@ -8,34 +8,33 @@ */ #include "emu.h" - -#define DEBUG_VIEWER ( 0 ) #include "video/psx.h" #include "screen.h" +#define STOP_ON_ERROR ( 0 ) + #define VERBOSE_LEVEL ( 0 ) // device type definition -const device_type CXD8514Q = device_creator; -const device_type CXD8538Q = device_creator; -const device_type CXD8561Q = device_creator; -const device_type CXD8561BQ = device_creator; -const device_type CXD8561CQ = device_creator; -const device_type CXD8654Q = device_creator; - -psxgpu_device::psxgpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), - m_vblank_handler(*this) -#if DEBUG_VIEWER -, - m_screen(*this, "screen") +DEFINE_DEVICE_TYPE(CXD8514Q, cxd8514q_device, "cxd8514q", "CXD8514Q GPU") +DEFINE_DEVICE_TYPE(CXD8538Q, cxd8538q_device, "cxd8538q", "CXD8538Q GPU") +DEFINE_DEVICE_TYPE(CXD8561Q, cxd8561q_device, "cxd8561q", "CXD8561Q GPU") +DEFINE_DEVICE_TYPE(CXD8561BQ, cxd8561bq_device, "cxd8561bq", "CXD8561BQ GPU") +DEFINE_DEVICE_TYPE(CXD8561CQ, cxd8561cq_device, "cxd8561cq", "CXD8561CQ GPU") +DEFINE_DEVICE_TYPE(CXD8654Q, cxd8654q_device, "cxd8654q", "CXD8654Q GPU") + +psxgpu_device::psxgpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , m_vblank_handler(*this) +#if PSXGPU_DEBUG_VIEWER + , m_screen(*this, "screen") #endif { } -void psxgpu_device::device_start( void ) +void psxgpu_device::device_start() { m_vblank_handler.resolve_safe(); @@ -49,38 +48,38 @@ void psxgpu_device::device_start( void ) } } -void psxgpu_device::device_reset( void ) +void psxgpu_device::device_reset() { gpu_reset(); } cxd8514q_device::cxd8514q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : psxgpu_device(mconfig, CXD8514Q, "CXD8514Q GPU", tag, owner, clock, "cxd8514q", __FILE__) + : psxgpu_device(mconfig, CXD8514Q, tag, owner, clock) { } cxd8538q_device::cxd8538q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : psxgpu_device(mconfig, CXD8538Q, "CXD8538Q GPU", tag, owner, clock, "cxd8538q", __FILE__) + : psxgpu_device(mconfig, CXD8538Q, tag, owner, clock) { } cxd8561q_device::cxd8561q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : psxgpu_device(mconfig, CXD8561Q, "CXD8561Q GPU", tag, owner, clock, "cxd8561q", __FILE__) + : psxgpu_device(mconfig, CXD8561Q, tag, owner, clock) { } cxd8561bq_device::cxd8561bq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : psxgpu_device(mconfig, CXD8561BQ, "CXD8561BQ", tag, owner, clock, "cxd8561bq", __FILE__) + : psxgpu_device(mconfig, CXD8561BQ, tag, owner, clock) { } cxd8561cq_device::cxd8561cq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : psxgpu_device(mconfig, CXD8561CQ, "CXD8561CQ GPU", tag, owner, clock, "cxd8561cq", __FILE__) + : psxgpu_device(mconfig, CXD8561CQ, tag, owner, clock) { } cxd8654q_device::cxd8654q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : psxgpu_device(mconfig, CXD8654Q, "CXD8654Q GPU", tag, owner, clock, "cxd8654q", __FILE__) + : psxgpu_device(mconfig, CXD8654Q, tag, owner, clock) { } @@ -117,9 +116,9 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, c } } -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER -void psxgpu_device::DebugMeshInit( void ) +void psxgpu_device::DebugMeshInit() { int width = m_screen->width(); int height = m_screen->height(); @@ -241,12 +240,12 @@ void psxgpu_device::DebugMesh( int n_coordx, int n_coordy ) } } -void psxgpu_device::DebugMeshEnd( void ) +void psxgpu_device::DebugMeshEnd() { m_debug.n_coord = 0; } -void psxgpu_device::DebugCheckKeys( void ) +void psxgpu_device::DebugCheckKeys() { if( machine().input().code_pressed_once( KEYCODE_M ) ) { @@ -364,7 +363,7 @@ int psxgpu_device::DebugTextureDisplay( bitmap_ind16 &bitmap ) } p_n_interleave[ n_x ] = p_p_vram[ n_yi ][ n_xi ]; } - draw_scanline16( bitmap, 0, n_y, width, p_n_interleave, m_screen->palette()->pens() ); + draw_scanline16( bitmap, 0, n_y, width, p_n_interleave, m_screen->palette().pens() ); } } return m_debug.b_texture; @@ -437,7 +436,7 @@ void psxgpu_device::updatevisiblearea() break; } -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.b_mesh || m_debug.b_texture ) { n_screenheight = 1024; @@ -461,7 +460,7 @@ void psxgpu_device::psx_gpu_init( int n_gputype ) m_n_gputype = n_gputype; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER DebugMeshInit(); #endif @@ -622,7 +621,7 @@ uint32_t psxgpu_device::update_screen(screen_device &screen, bitmap_ind16 &bitma int n_overscantop; int n_overscanleft; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( DebugMeshDisplay( bitmap, cliprect ) ) { return 0; @@ -1393,7 +1392,7 @@ void psxgpu_device::FlatPolygon( int n_points ) uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 1 ) { return; @@ -1546,7 +1545,7 @@ void psxgpu_device::FlatTexturedPolygon( int n_points ) uint16_t *p_vram; uint32_t n_bgr; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 2 ) { return; @@ -1745,7 +1744,7 @@ void psxgpu_device::GouraudPolygon( int n_points ) uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 3 ) { return; @@ -1956,7 +1955,7 @@ void psxgpu_device::GouraudTexturedPolygon( int n_points ) uint16_t *p_vram; uint32_t n_bgr; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 4 ) { return; @@ -2175,7 +2174,7 @@ void psxgpu_device::GouraudTexturedPolygon( int n_points ) } } -void psxgpu_device::MonochromeLine( void ) +void psxgpu_device::MonochromeLine() { PAIR n_x; PAIR n_y; @@ -2193,7 +2192,7 @@ void psxgpu_device::MonochromeLine( void ) uint32_t n_b; uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 5 ) { return; @@ -2270,7 +2269,7 @@ void psxgpu_device::MonochromeLine( void ) } } -void psxgpu_device::GouraudLine( void ) +void psxgpu_device::GouraudLine() { PAIR n_x; PAIR n_y; @@ -2297,7 +2296,7 @@ void psxgpu_device::GouraudLine( void ) PAIR n_cb2; uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 6 ) { return; @@ -2386,7 +2385,7 @@ void psxgpu_device::GouraudLine( void ) } } -void psxgpu_device::FrameBufferRectangleDraw( void ) +void psxgpu_device::FrameBufferRectangleDraw() { PAIR n_r; PAIR n_g; @@ -2397,7 +2396,7 @@ void psxgpu_device::FrameBufferRectangleDraw( void ) int16_t n_x; uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 7 ) { return; @@ -2436,7 +2435,7 @@ void psxgpu_device::FrameBufferRectangleDraw( void ) } } -void psxgpu_device::FlatRectangle( void ) +void psxgpu_device::FlatRectangle() { int16_t n_y; int16_t n_x; @@ -2459,7 +2458,7 @@ void psxgpu_device::FlatRectangle( void ) int32_t n_h; uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 8 ) { return; @@ -2506,7 +2505,7 @@ void psxgpu_device::FlatRectangle( void ) } } -void psxgpu_device::FlatRectangle8x8( void ) +void psxgpu_device::FlatRectangle8x8() { int16_t n_y; int16_t n_x; @@ -2529,7 +2528,7 @@ void psxgpu_device::FlatRectangle8x8( void ) int32_t n_h; uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 9 ) { return; @@ -2576,7 +2575,7 @@ void psxgpu_device::FlatRectangle8x8( void ) } } -void psxgpu_device::FlatRectangle16x16( void ) +void psxgpu_device::FlatRectangle16x16() { int16_t n_y; int16_t n_x; @@ -2599,7 +2598,7 @@ void psxgpu_device::FlatRectangle16x16( void ) int32_t n_h; uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 10 ) { return; @@ -2646,7 +2645,7 @@ void psxgpu_device::FlatRectangle16x16( void ) } } -void psxgpu_device::FlatTexturedRectangle( void ) +void psxgpu_device::FlatTexturedRectangle() { int16_t n_y; int16_t n_x; @@ -2680,7 +2679,7 @@ void psxgpu_device::FlatTexturedRectangle( void ) uint16_t *p_clut; uint16_t n_bgr; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 11 ) { return; @@ -2749,7 +2748,7 @@ void psxgpu_device::FlatTexturedRectangle( void ) } } -void psxgpu_device::Sprite8x8( void ) +void psxgpu_device::Sprite8x8() { int16_t n_y; int16_t n_x; @@ -2783,7 +2782,7 @@ void psxgpu_device::Sprite8x8( void ) uint16_t *p_clut; uint16_t n_bgr; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 12 ) { return; @@ -2852,7 +2851,7 @@ void psxgpu_device::Sprite8x8( void ) } } -void psxgpu_device::Sprite16x16( void ) +void psxgpu_device::Sprite16x16() { int16_t n_y; int16_t n_x; @@ -2886,7 +2885,7 @@ void psxgpu_device::Sprite16x16( void ) uint16_t *p_clut; uint16_t n_bgr; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 13 ) { return; @@ -2955,7 +2954,7 @@ void psxgpu_device::Sprite16x16( void ) } } -void psxgpu_device::Dot( void ) +void psxgpu_device::Dot() { int32_t n_x; int32_t n_y; @@ -2964,7 +2963,7 @@ void psxgpu_device::Dot( void ) uint32_t n_b; uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 14 ) { return; @@ -2993,7 +2992,7 @@ void psxgpu_device::Dot( void ) } } -void psxgpu_device::MoveImage( void ) +void psxgpu_device::MoveImage() { int16_t n_w; int16_t n_h; @@ -3003,7 +3002,7 @@ void psxgpu_device::MoveImage( void ) int16_t n_dstx; uint16_t *p_vram; -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER if( m_debug.n_skip == 15 ) { return; @@ -3749,7 +3748,7 @@ void psxgpu_device::vblank(screen_device &screen, bool vblank_state) { if( vblank_state ) { -#if DEBUG_VIEWER +#if PSXGPU_DEBUG_VIEWER DebugCheckKeys(); #endif @@ -3758,7 +3757,7 @@ void psxgpu_device::vblank(screen_device &screen, bool vblank_state) } } -void psxgpu_device::gpu_reset( void ) +void psxgpu_device::gpu_reset() { verboselog( *this, 1, "reset gpu\n" ); n_gpu_buffer_offset = 0; diff --git a/src/devices/video/psx.h b/src/devices/video/psx.h index d3b56642222..b60e1d1a69f 100644 --- a/src/devices/video/psx.h +++ b/src/devices/video/psx.h @@ -7,10 +7,12 @@ * */ +#ifndef MAME_VIDEO_PSX_H +#define MAME_VIDEO_PSX_H + #pragma once -#ifndef __PSXGPU_H__ -#define __PSXGPU_H__ +#define PSXGPU_DEBUG_VIEWER ( 0 ) #define MCFG_PSX_GPU_VBLANK_HANDLER(_devcb) \ @@ -21,211 +23,212 @@ MCFG_PSX_GPU_READ_HANDLER(DEVREAD32(tag, psxgpu_device, read)) \ MCFG_PSX_GPU_WRITE_HANDLER(DEVWRITE32(tag, psxgpu_device, write)) \ MCFG_DEVICE_ADD( tag, type, clock ) \ - ((psxgpu_device *) device)->vramSize = _vramSize; \ + psxgpu_device::set_vram_size(*device, _vramSize); \ MCFG_PSX_GPU_VBLANK_HANDLER(DEVWRITELINE(cputag ":irq", psxirq_device, intin0)) \ - MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psx_dma_write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \ - MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psx_dma_read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) ) + MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psxdma_device::write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \ + MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psxdma_device::read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) ) #define MCFG_PSXGPU_REPLACE( cputag, tag, type, _vramSize, clock ) \ MCFG_DEVICE_MODIFY( cputag ) \ MCFG_PSX_GPU_READ_HANDLER(DEVREAD32(tag, psxgpu_device, read)) \ MCFG_PSX_GPU_WRITE_HANDLER(DEVWRITE32(tag, psxgpu_device, write)) \ MCFG_DEVICE_REPLACE( tag, type, clock ) \ - ((psxgpu_device *) device)->vramSize = _vramSize; \ + psxgpu_device::set_vram_size(*device, _vramSize); \ MCFG_PSX_GPU_VBLANK_HANDLER(DEVWRITELINE(cputag ":irq", psxirq_device, intin0)) \ - MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psx_dma_write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \ - MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psx_dma_read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) ) + MCFG_PSX_DMA_CHANNEL_READ( cputag, 2, psxdma_device::write_delegate(&psxgpu_device::dma_read, (psxgpu_device *) device ) ) \ + MCFG_PSX_DMA_CHANNEL_WRITE( cputag, 2, psxdma_device::read_delegate(&psxgpu_device::dma_write, (psxgpu_device *) device ) ) #define MCFG_PSXGPU_VBLANK_CALLBACK( _delegate ) \ ((screen_device *) config.device_find( device, "screen" ))->register_vblank_callback( _delegate ); -extern const device_type CXD8514Q; -extern const device_type CXD8538Q; -extern const device_type CXD8561Q; -extern const device_type CXD8561BQ; -extern const device_type CXD8561CQ; -extern const device_type CXD8654Q; - -#define STOP_ON_ERROR ( 0 ) - -#define MAX_LEVEL ( 32 ) -#define MID_LEVEL ( ( MAX_LEVEL / 2 ) << 8 ) -#define MAX_SHADE ( 0x100 ) -#define MID_SHADE ( 0x80 ) +DECLARE_DEVICE_TYPE(CXD8514Q, cxd8514q_device) +DECLARE_DEVICE_TYPE(CXD8538Q, cxd8538q_device) +DECLARE_DEVICE_TYPE(CXD8561Q, cxd8561q_device) +DECLARE_DEVICE_TYPE(CXD8561BQ, cxd8561bq_device) +DECLARE_DEVICE_TYPE(CXD8561CQ, cxd8561cq_device) +DECLARE_DEVICE_TYPE(CXD8654Q, cxd8654q_device) -#define DEBUG_COORDS ( 10 ) - -struct psx_gpu_debug +class psxgpu_device : public device_t { - std::unique_ptr mesh; - int b_clear; - int b_mesh; - int n_skip; - int b_texture; - int n_interleave; - int n_coord; - int n_coordx[ DEBUG_COORDS ]; - int n_coordy[ DEBUG_COORDS ]; -}; +public: + virtual machine_config_constructor device_mconfig_additions() const override; -struct FLATVERTEX -{ - PAIR n_coord; -}; + // static configuration helpers + template static devcb_base &set_vblank_handler(device_t &device, Object &&cb) { return downcast(device).m_vblank_handler.set_callback(std::forward(cb)); } + static void set_vram_size(device_t &device, int size) { downcast(device).vramSize = size; } -struct GOURAUDVERTEX -{ - PAIR n_bgr; - PAIR n_coord; -}; + uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_WRITE32_MEMBER( write ); + DECLARE_READ32_MEMBER( read ); + void dma_read( uint32_t *ram, uint32_t n_address, int32_t n_size ); + void dma_write( uint32_t *ram, uint32_t n_address, int32_t n_size ); + void lightgun_set( int, int ); + void vblank(screen_device &screen, bool vblank_state); + DECLARE_PALETTE_INIT( psx ); -struct FLATTEXTUREDVERTEX -{ - PAIR n_coord; - PAIR n_texture; -}; +protected: + static constexpr unsigned MAX_LEVEL = 32; + static constexpr unsigned MID_LEVEL = (MAX_LEVEL / 2) << 8; + static constexpr unsigned MAX_SHADE = 0x100; + static constexpr unsigned MID_SHADE = 0x80; -struct GOURAUDTEXTUREDVERTEX -{ - PAIR n_bgr; - PAIR n_coord; - PAIR n_texture; -}; + // construction/destruction + psxgpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); -union PACKET -{ - uint32_t n_entry[ 16 ]; + virtual void device_start() override; + virtual void device_reset() override; - struct - { - PAIR n_cmd; - struct FLATVERTEX vertex[ 2 ]; - PAIR n_size; - } MoveImage; + int vramSize; - struct - { - PAIR n_bgr; - PAIR n_coord; - PAIR n_size; - } FlatRectangle; +private: + static constexpr unsigned DEBUG_COORDS = 10; - struct + struct psx_gpu_debug { - PAIR n_bgr; - PAIR n_coord; - } FlatRectangle8x8; - - struct + std::unique_ptr mesh; + int b_clear; + int b_mesh; + int n_skip; + int b_texture; + int n_interleave; + int n_coord; + int n_coordx[ DEBUG_COORDS ]; + int n_coordy[ DEBUG_COORDS ]; + }; + + struct FLATVERTEX { - PAIR n_bgr; PAIR n_coord; - } FlatRectangle16x16; + }; - struct + struct GOURAUDVERTEX { PAIR n_bgr; PAIR n_coord; - PAIR n_texture; - } Sprite8x8; + }; - struct + struct FLATTEXTUREDVERTEX { - PAIR n_bgr; PAIR n_coord; PAIR n_texture; - } Sprite16x16; + }; - struct + struct GOURAUDTEXTUREDVERTEX { PAIR n_bgr; PAIR n_coord; PAIR n_texture; - PAIR n_size; - } FlatTexturedRectangle; + }; - struct + union PACKET { - PAIR n_bgr; - struct FLATVERTEX vertex[ 4 ]; - } FlatPolygon; - - struct - { - struct GOURAUDVERTEX vertex[ 4 ]; - } GouraudPolygon; - - struct - { - PAIR n_bgr; - struct FLATVERTEX vertex[ 2 ]; - } MonochromeLine; - - struct - { - struct GOURAUDVERTEX vertex[ 2 ]; - } GouraudLine; - - struct - { - PAIR n_bgr; - struct FLATTEXTUREDVERTEX vertex[ 4 ]; - } FlatTexturedPolygon; + uint32_t n_entry[ 16 ]; + + struct + { + PAIR n_cmd; + struct FLATVERTEX vertex[ 2 ]; + PAIR n_size; + } MoveImage; + + struct + { + PAIR n_bgr; + PAIR n_coord; + PAIR n_size; + } FlatRectangle; + + struct + { + PAIR n_bgr; + PAIR n_coord; + } FlatRectangle8x8; + + struct + { + PAIR n_bgr; + PAIR n_coord; + } FlatRectangle16x16; + + struct + { + PAIR n_bgr; + PAIR n_coord; + PAIR n_texture; + } Sprite8x8; + + struct + { + PAIR n_bgr; + PAIR n_coord; + PAIR n_texture; + } Sprite16x16; + + struct + { + PAIR n_bgr; + PAIR n_coord; + PAIR n_texture; + PAIR n_size; + } FlatTexturedRectangle; + + struct + { + PAIR n_bgr; + struct FLATVERTEX vertex[ 4 ]; + } FlatPolygon; + + struct + { + struct GOURAUDVERTEX vertex[ 4 ]; + } GouraudPolygon; + + struct + { + PAIR n_bgr; + struct FLATVERTEX vertex[ 2 ]; + } MonochromeLine; + + struct + { + struct GOURAUDVERTEX vertex[ 2 ]; + } GouraudLine; + + struct + { + PAIR n_bgr; + struct FLATTEXTUREDVERTEX vertex[ 4 ]; + } FlatTexturedPolygon; + + struct + { + struct GOURAUDTEXTUREDVERTEX vertex[ 4 ]; + } GouraudTexturedPolygon; + + struct + { + PAIR n_bgr; + struct FLATVERTEX vertex; + } Dot; + }; - struct - { - struct GOURAUDTEXTUREDVERTEX vertex[ 4 ]; - } GouraudTexturedPolygon; - - struct - { - PAIR n_bgr; - struct FLATVERTEX vertex; - } Dot; -}; - -class psxgpu_device : public device_t -{ -public: - // construction/destruction - psxgpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - virtual machine_config_constructor device_mconfig_additions() const override; - - // static configuration helpers - template static devcb_base &set_vblank_handler(device_t &device, _Object object) { return downcast(device).m_vblank_handler.set_callback(object); } - - uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_WRITE32_MEMBER( write ); - DECLARE_READ32_MEMBER( read ); - void dma_read( uint32_t *ram, uint32_t n_address, int32_t n_size ); - void dma_write( uint32_t *ram, uint32_t n_address, int32_t n_size ); - void lightgun_set( int, int ); - int vramSize; - void vblank(screen_device &screen, bool vblank_state); - DECLARE_PALETTE_INIT( psx ); - -protected: - virtual void device_start() override; - virtual void device_reset() override; - -private: void updatevisiblearea(); void decode_tpage( uint32_t tpage ); void FlatPolygon( int n_points ); void FlatTexturedPolygon( int n_points ); void GouraudPolygon( int n_points ); void GouraudTexturedPolygon( int n_points ); - void MonochromeLine( void ); - void GouraudLine( void ); - void FrameBufferRectangleDraw( void ); - void FlatRectangle( void ); - void FlatRectangle8x8( void ); - void FlatRectangle16x16( void ); - void FlatTexturedRectangle( void ); - void Sprite8x8( void ); - void Sprite16x16( void ); - void Dot( void ); - void MoveImage( void ); + void MonochromeLine(); + void GouraudLine(); + void FrameBufferRectangleDraw(); + void FlatRectangle(); + void FlatRectangle8x8(); + void FlatRectangle16x16(); + void FlatTexturedRectangle(); + void Sprite8x8(); + void Sprite16x16(); + void Dot(); + void MoveImage(); void psx_gpu_init( int n_gputype ); void gpu_reset(); void gpu_read( uint32_t *p_ram, int32_t n_size ); @@ -302,12 +305,12 @@ private: devcb_write_line m_vblank_handler; -#if defined(DEBUG_VIEWER) && DEBUG_VIEWER +#if defined(PSXGPU_DEBUG_VIEWER) && PSXGPU_DEBUG_VIEWER required_device m_screen; - void DebugMeshInit( void ); + void DebugMeshInit(); void DebugMesh( int n_coordx, int n_coordy ); - void DebugMeshEnd( void ); - void DebugCheckKeys( void ); + void DebugMeshEnd(); + void DebugCheckKeys(); int DebugMeshDisplay( bitmap_ind16 &bitmap, const rectangle &cliprect ); int DebugTextureDisplay( bitmap_ind16 &bitmap ); @@ -357,4 +360,4 @@ public: cxd8654q_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; -#endif +#endif // MAME_VIDEO_PSX_H diff --git a/src/devices/video/ramdac.cpp b/src/devices/video/ramdac.cpp index 195365fff91..7014d464a5a 100644 --- a/src/devices/video/ramdac.cpp +++ b/src/devices/video/ramdac.cpp @@ -29,7 +29,7 @@ ADDRESS_MAP_END //************************************************************************** // device type definition -const device_type RAMDAC = device_creator; +DEFINE_DEVICE_TYPE(RAMDAC, ramdac_device, "ramdac", "RAMDAC") //************************************************************************** @@ -41,7 +41,7 @@ const device_type RAMDAC = device_creator; //------------------------------------------------- ramdac_device::ramdac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, RAMDAC, "RAMDAC", tag, owner, clock, "ramdac", __FILE__), + : device_t(mconfig, RAMDAC, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("videoram", ENDIANNESS_LITTLE, 8, 10, 0, nullptr, *ADDRESS_MAP_NAME(ramdac_palram)), m_palette(*this, finder_base::DUMMY_TAG), diff --git a/src/devices/video/ramdac.h b/src/devices/video/ramdac.h index 9ae4ce030d2..709cda23711 100644 --- a/src/devices/video/ramdac.h +++ b/src/devices/video/ramdac.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_RAMDAC_H +#define MAME_VIDEO_RAMDAC_H -#ifndef __ramdacDEV_H__ -#define __ramdacDEV_H__ +#pragma once @@ -85,7 +85,6 @@ private: // device type definition -extern const device_type RAMDAC; - +DECLARE_DEVICE_TYPE(RAMDAC, ramdac_device) -#endif +#endif // MAME_VIDEO_RAMDAC_H diff --git a/src/devices/video/saa5050.cpp b/src/devices/video/saa5050.cpp index a06a30299e0..cebcbe7e40e 100644 --- a/src/devices/video/saa5050.cpp +++ b/src/devices/video/saa5050.cpp @@ -26,14 +26,14 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type SAA5050 = device_creator; -const device_type SAA5051 = device_creator; -const device_type SAA5052 = device_creator; -const device_type SAA5053 = device_creator; -const device_type SAA5054 = device_creator; -const device_type SAA5055 = device_creator; -const device_type SAA5056 = device_creator; -const device_type SAA5057 = device_creator; +DEFINE_DEVICE_TYPE(SAA5050, saa5050_device, "saa5050", "Mullard SA5050") +DEFINE_DEVICE_TYPE(SAA5051, saa5051_device, "saa5051", "Mullard SA5051") +DEFINE_DEVICE_TYPE(SAA5052, saa5052_device, "saa5052", "Mullard SA5052") +DEFINE_DEVICE_TYPE(SAA5053, saa5053_device, "saa5053", "Mullard SA5053") +DEFINE_DEVICE_TYPE(SAA5054, saa5054_device, "saa5054", "Mullard SA5054") +DEFINE_DEVICE_TYPE(SAA5055, saa5055_device, "saa5055", "Mullard SA5055") +DEFINE_DEVICE_TYPE(SAA5056, saa5056_device, "saa5056", "Mullard SA5056") +DEFINE_DEVICE_TYPE(SAA5057, saa5057_device, "saa5057", "Mullard SA5057") //------------------------------------------------- @@ -174,8 +174,8 @@ const tiny_rom_entry *saa5057_device::device_rom_region() const // saa5050_device - constructor //------------------------------------------------- -saa5050_device::saa5050_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), +saa5050_device::saa5050_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), m_char_rom(*this, "chargen"), m_read_d(*this), m_frame_count(0), @@ -186,36 +186,44 @@ saa5050_device::saa5050_device(const machine_config &mconfig, device_type type, } saa5050_device::saa5050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, SAA5050, "SAA5050 Video", tag, owner, clock, "saa5050", __FILE__), - m_char_rom(*this, "chargen"), - m_read_d(*this), - m_frame_count(0), - m_cols(0), - m_rows(0), - m_size(0) + saa5050_device(mconfig, SAA5050, tag, owner, clock) { } saa5051_device::saa5051_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : saa5050_device(mconfig, SAA5051, "SAA5051", tag, owner, clock, "saa5051", __FILE__) { } + : saa5050_device(mconfig, SAA5051, tag, owner, clock) +{ +} saa5052_device::saa5052_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : saa5050_device(mconfig, SAA5052, "SAA5052", tag, owner, clock, "saa5052", __FILE__) { } + : saa5050_device(mconfig, SAA5052, tag, owner, clock) +{ +} saa5053_device::saa5053_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : saa5050_device(mconfig, SAA5053, "SAA5053", tag, owner, clock, "saa5053", __FILE__) { } + : saa5050_device(mconfig, SAA5053, tag, owner, clock) +{ +} saa5054_device::saa5054_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : saa5050_device(mconfig, SAA5054, "SAA5054", tag, owner, clock, "saa5054", __FILE__) { } + : saa5050_device(mconfig, SAA5054, tag, owner, clock) +{ +} saa5055_device::saa5055_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : saa5050_device(mconfig, SAA5055, "SAA5055", tag, owner, clock, "saa5055", __FILE__) { } + : saa5050_device(mconfig, SAA5055, tag, owner, clock) +{ +} saa5056_device::saa5056_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : saa5050_device(mconfig, SAA5056, "SAA5056", tag, owner, clock, "saa5056", __FILE__) { } + : saa5050_device(mconfig, SAA5056, tag, owner, clock) +{ +} saa5057_device::saa5057_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : saa5050_device(mconfig, SAA5057, "SAA5057", tag, owner, clock, "saa5057", __FILE__) { } + : saa5050_device(mconfig, SAA5057, tag, owner, clock) +{ +} diff --git a/src/devices/video/saa5050.h b/src/devices/video/saa5050.h index c88d840227c..4d943cefd0b 100644 --- a/src/devices/video/saa5050.h +++ b/src/devices/video/saa5050.h @@ -23,10 +23,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_VIDEO_SAA5050_H +#define MAME_VIDEO_SAA5050_H -#ifndef __SAA5050__ -#define __SAA5050__ +#pragma once @@ -54,12 +54,11 @@ class saa5050_device : public device_t { public: // construction/destruction - saa5050_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); saa5050_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void static_set_screen_size(device_t &device, int cols, int rows, int size) { downcast(device).m_cols = cols; downcast(device).m_rows = rows; downcast(device).m_size = size; } - template static devcb_base &set_d_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_d.set_callback(object); } + template static devcb_base &set_d_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_d.set_callback(std::forward(cb)); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -78,6 +77,8 @@ public: uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: + saa5050_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -254,15 +255,13 @@ public: // device type definition -extern const device_type SAA5050; // English -extern const device_type SAA5051; // German -extern const device_type SAA5052; // Swedish/Finnish -extern const device_type SAA5053; // Italian -extern const device_type SAA5054; // Belgian -extern const device_type SAA5055; // US ASCII -extern const device_type SAA5056; // Hebrew -extern const device_type SAA5057; // Cyrillic - - - -#endif +DECLARE_DEVICE_TYPE(SAA5050, saa5050_device) // English +DECLARE_DEVICE_TYPE(SAA5051, saa5051_device) // German +DECLARE_DEVICE_TYPE(SAA5052, saa5052_device) // Swedish/Finnish +DECLARE_DEVICE_TYPE(SAA5053, saa5053_device) // Italian +DECLARE_DEVICE_TYPE(SAA5054, saa5054_device) // Belgian +DECLARE_DEVICE_TYPE(SAA5055, saa5055_device) // US ASCII +DECLARE_DEVICE_TYPE(SAA5056, saa5056_device) // Hebrew +DECLARE_DEVICE_TYPE(SAA5057, saa5057_device) // Cyrillic + +#endif // MAME_VIDEO_SAA5050_H diff --git a/src/devices/video/scn2674.cpp b/src/devices/video/scn2674.cpp index 517580c2231..e5058e3a90c 100644 --- a/src/devices/video/scn2674.cpp +++ b/src/devices/video/scn2674.cpp @@ -9,11 +9,11 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" -#define S674VERBOSE 0 -#define LOG2674(x) do { if (S674VERBOSE) logerror x; } while (0) -const device_type SCN2674_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(SCN2674_VIDEO, scn2674_device, "scn2674", "Signetics SCN2674 AVDC") // default address map @@ -22,19 +22,34 @@ static ADDRESS_MAP_START( scn2674_vram, AS_0, 8, scn2674_device ) ADDRESS_MAP_END scn2674_device::scn2674_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SCN2674_VIDEO, "Signetics SCN2674 AVDC", tag, owner, clock, "scn2674_device", __FILE__), - device_video_interface(mconfig, *this), - device_memory_interface(mconfig, *this), - m_irq_cb(*this), m_IR_pointer(0), m_screen1_l(0), m_screen1_h(0), m_cursor_l(0), m_cursor_h(0), m_screen2_l(0), m_screen2_h(0), m_irq_register(0), m_status_register(0), m_irq_mask(0), - m_gfx_enabled(0), m_display_enabled(0), m_display_enabled_field(0), m_display_enabled_scanline(0), m_cursor_enabled(0), m_hpixels_per_column(0), m_text_hpixels_per_column(0), - m_gfx_hpixels_per_column(0), m_IR0_double_ht_wd(0), m_IR0_scanline_per_char_row(0), m_IR0_sync_select(0), m_IR0_buffer_mode_select(0), m_IR1_interlace_enable(0), m_IR1_equalizing_constant(0), - m_IR2_row_table(0), m_IR2_horz_sync_width(0), m_IR2_horz_back_porch(0), m_IR3_vert_front_porch(0), m_IR3_vert_back_porch(0), m_IR4_rows_per_screen(0), m_IR4_character_blink_rate_divisor(0), - m_IR5_character_per_row(0), m_IR6_cursor_first_scanline(0), m_IR6_cursor_last_scanline(0), m_IR7_cursor_underline_position(0), m_IR7_cursor_rate_divisor(0), m_IR7_cursor_blink(0), - m_IR7_vsync_width(0), m_IR8_display_buffer_first_address_LSB(0), m_IR9_display_buffer_first_address_MSB(0), m_IR9_display_buffer_last_address(0), m_IR10_display_pointer_address_lower(0), - m_IR11_display_pointer_address_upper(0), m_IR11_reset_scanline_counter_on_scrollup(0), m_IR11_reset_scanline_counter_on_scrolldown(0), m_IR12_scroll_start(0), m_IR12_split_register_1(0), - m_IR13_scroll_end(0), m_IR13_split_register_2(0), m_IR14_scroll_lines(0), m_IR14_double_1(0), m_IR14_double_2(0), m_spl1(0), m_spl2(0), m_dbl1(0), m_buffer(0), m_linecounter(0), m_address(0), - m_start1change(0), m_irq_state(0), m_scanline_timer(nullptr), - m_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(scn2674_vram)) + : device_t(mconfig, SCN2674_VIDEO, tag, owner, clock) + , device_video_interface(mconfig, *this) + , device_memory_interface(mconfig, *this) + , m_irq_cb(*this) + , m_IR_pointer(0) + , m_screen1_l(0), m_screen1_h(0), m_cursor_l(0), m_cursor_h(0), m_screen2_l(0), m_screen2_h(0) + , m_irq_register(0), m_status_register(0), m_irq_mask(0) + , m_gfx_enabled(0), m_display_enabled(0), m_display_enabled_field(0), m_display_enabled_scanline(0), m_cursor_enabled(0) + , m_hpixels_per_column(0), m_text_hpixels_per_column(0), m_gfx_hpixels_per_column(0) + , m_IR0_double_ht_wd(0), m_IR0_scanline_per_char_row(0), m_IR0_sync_select(0), m_IR0_buffer_mode_select(0) + , m_IR1_interlace_enable(0), m_IR1_equalizing_constant(0) + , m_IR2_row_table(0), m_IR2_horz_sync_width(0), m_IR2_horz_back_porch(0) + , m_IR3_vert_front_porch(0), m_IR3_vert_back_porch(0) + , m_IR4_rows_per_screen(0), m_IR4_character_blink_rate_divisor(0) + , m_IR5_character_per_row(0) + , m_IR6_cursor_first_scanline(0), m_IR6_cursor_last_scanline(0) + , m_IR7_cursor_underline_position(0), m_IR7_cursor_rate_divisor(0), m_IR7_cursor_blink(0), m_IR7_vsync_width(0) + , m_IR8_display_buffer_first_address_LSB(0) + , m_IR9_display_buffer_first_address_MSB(0), m_IR9_display_buffer_last_address(0) + , m_IR10_display_pointer_address_lower(0) + , m_IR11_display_pointer_address_upper(0), m_IR11_reset_scanline_counter_on_scrollup(0), m_IR11_reset_scanline_counter_on_scrolldown(0) + , m_IR12_scroll_start(0), m_IR12_split_register_1(0) + , m_IR13_scroll_end(0), m_IR13_split_register_2(0) + , m_IR14_scroll_lines(0), m_IR14_double_1(0), m_IR14_double_2(0) + , m_spl1(0), m_spl2(0), m_dbl1(0) + , m_buffer(0), m_linecounter(0), m_address(0), m_start1change(0), m_irq_state(0) + , m_scanline_timer(nullptr) + , m_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(scn2674_vram)) { } @@ -119,7 +134,7 @@ void scn2674_device::device_reset() // 15 Initialization Registers (8-bit each) void scn2674_device::write_init_regs(uint8_t data) { - LOG2674(("scn2674_write_init_regs %02x %02x\n",m_IR_pointer,data)); + LOG("scn2674_write_init_regs %02x %02x\n",m_IR_pointer,data); switch ( m_IR_pointer) /* display some debug info, set mame specific variables */ { @@ -129,18 +144,18 @@ void scn2674_device::write_init_regs(uint8_t data) m_IR0_sync_select = (data&0x04)>>2; m_IR0_buffer_mode_select = (data&0x03); - LOG2674(("IR0 - Double Ht Wd %02x\n",m_IR0_double_ht_wd));//affects IR14 as well - LOG2674(("IR0 - Scanlines per Character Row %02x\n",m_IR0_scanline_per_char_row));//value+1 = scanlines - LOG2674(("IR0 - Sync Select %02x\n",m_IR0_sync_select));//1 = csync - LOG2674(("IR0 - Buffer Mode Select %02x\n",m_IR0_buffer_mode_select)); //0 independent 1 transparent 2 shared 3 row + LOG("IR0 - Double Ht Wd %02x\n",m_IR0_double_ht_wd);//affects IR14 as well + LOG("IR0 - Scanlines per Character Row %02x\n",m_IR0_scanline_per_char_row);//value+1 = scanlines + LOG("IR0 - Sync Select %02x\n",m_IR0_sync_select);//1 = csync + LOG("IR0 - Buffer Mode Select %02x\n",m_IR0_buffer_mode_select); //0 independent 1 transparent 2 shared 3 row break; case 1: m_IR1_interlace_enable = (data&0x80)>>7; m_IR1_equalizing_constant = (data&0x7f)+1; - LOG2674(("IR1 - Interlace Enable %02x\n",m_IR1_interlace_enable)); - LOG2674(("IR1 - Equalizing Constant %02i CCLKs\n",m_IR1_equalizing_constant)); + LOG("IR1 - Interlace Enable %02x\n",m_IR1_interlace_enable); + LOG("IR1 - Equalizing Constant %02i CCLKs\n",m_IR1_equalizing_constant); break; case 2: @@ -148,25 +163,25 @@ void scn2674_device::write_init_regs(uint8_t data) m_IR2_horz_sync_width = (((data&0x78)>>3)*2) + 2; m_IR2_horz_back_porch = ((data&0x07)*4) - 1; - LOG2674(("IR2 - Row Table %02x\n",m_IR2_row_table)); - LOG2674(("IR2 - Horizontal Sync Width %02i CCLKs\n",m_IR2_horz_sync_width)); - LOG2674(("IR2 - Horizontal Back Porch %02i CCLKs\n",m_IR2_horz_back_porch)); + LOG("IR2 - Row Table %02x\n",m_IR2_row_table); + LOG("IR2 - Horizontal Sync Width %02i CCLKs\n",m_IR2_horz_sync_width); + LOG("IR2 - Horizontal Back Porch %02i CCLKs\n",m_IR2_horz_back_porch); break; case 3: m_IR3_vert_front_porch = (((data&0xe0)>>5) * 4)+4 ; m_IR3_vert_back_porch = ((data&0x1f) * 2) + 4; - LOG2674(("IR3 - Vertical Front Porch %02i Lines\n",m_IR3_vert_front_porch)); - LOG2674(("IR3 - Vertical Back Porch %02i Lines\n",m_IR3_vert_back_porch)); + LOG("IR3 - Vertical Front Porch %02i Lines\n",m_IR3_vert_front_porch); + LOG("IR3 - Vertical Back Porch %02i Lines\n",m_IR3_vert_back_porch); break; case 4: m_IR4_rows_per_screen = (data&0x7f) + 1; m_IR4_character_blink_rate_divisor = ((data & 0x80)>>7 ? 128:64); - LOG2674(("IR4 - Rows Per Screen %02i\n",m_IR4_rows_per_screen)); - LOG2674(("IR4 - Character Blink Rate = 1/%02i\n",m_IR4_character_blink_rate_divisor)); + LOG("IR4 - Rows Per Screen %02i\n",m_IR4_rows_per_screen); + LOG("IR4 - Character Blink Rate = 1/%02i\n",m_IR4_character_blink_rate_divisor); break; case 5: @@ -174,14 +189,14 @@ void scn2674_device::write_init_regs(uint8_t data) cccc cccc c = Characters Per Row */ m_IR5_character_per_row = data + 1; - LOG2674(("IR5 - Active Characters Per Row %02i\n",m_IR5_character_per_row)); + LOG("IR5 - Active Characters Per Row %02i\n",m_IR5_character_per_row); break; case 6: m_IR6_cursor_last_scanline = (data & 0x0f); m_IR6_cursor_first_scanline = (data & 0xf0)>>4; - LOG2674(("IR6 - First Line of Cursor %02x\n",m_IR6_cursor_first_scanline)); - LOG2674(("IR6 - Last Line of Cursor %02x\n",m_IR6_cursor_last_scanline)); + LOG("IR6 - First Line of Cursor %02x\n",m_IR6_cursor_first_scanline); + LOG("IR6 - Last Line of Cursor %02x\n",m_IR6_cursor_last_scanline); break; case 7: @@ -193,28 +208,28 @@ void scn2674_device::write_init_regs(uint8_t data) m_IR7_vsync_width = vsync_table[(data & 0xC0)>>6]; - LOG2674(("IR7 - Underline Position %02x\n",m_IR7_cursor_underline_position)); - LOG2674(("IR7 - Cursor rate 1/%02i\n",m_IR7_cursor_rate_divisor)); - LOG2674(("IR7 - Cursor blink %02x\n",m_IR7_cursor_blink)); - LOG2674(("IR7 - Vsync Width %02i Lines\n",m_IR7_vsync_width)); + LOG("IR7 - Underline Position %02x\n",m_IR7_cursor_underline_position); + LOG("IR7 - Cursor rate 1/%02i\n",m_IR7_cursor_rate_divisor); + LOG("IR7 - Cursor blink %02x\n",m_IR7_cursor_blink); + LOG("IR7 - Vsync Width %02i Lines\n",m_IR7_vsync_width); break; } case 8: m_IR8_display_buffer_first_address_LSB = data; - LOG2674(("IR8 - Display Buffer First Address LSB %02x\n",m_IR8_display_buffer_first_address_LSB)); + LOG("IR8 - Display Buffer First Address LSB %02x\n",m_IR8_display_buffer_first_address_LSB); break; case 9: m_IR9_display_buffer_first_address_MSB = data & 0x0f; m_IR9_display_buffer_last_address = (data & 0xf0)>>4; - LOG2674(("IR9 - Display Buffer First Address MSB %02x\n",m_IR9_display_buffer_first_address_MSB)); - LOG2674(("IR9 - Display Buffer Last Address %02x\n",m_IR9_display_buffer_last_address)); + LOG("IR9 - Display Buffer First Address MSB %02x\n",m_IR9_display_buffer_first_address_MSB); + LOG("IR9 - Display Buffer Last Address %02x\n",m_IR9_display_buffer_last_address); break; case 10: m_IR10_display_pointer_address_lower = data; - LOG2674(("IR10 - Display Pointer Address Lower %02x\n",m_IR10_display_pointer_address_lower)); + LOG("IR10 - Display Pointer Address Lower %02x\n",m_IR10_display_pointer_address_lower); break; case 11: @@ -222,23 +237,23 @@ void scn2674_device::write_init_regs(uint8_t data) m_IR11_reset_scanline_counter_on_scrollup= (data&0x40 >> 6); m_IR11_reset_scanline_counter_on_scrolldown= (data&0x80 >> 7); - LOG2674(("IR11 - Display Pointer Address Lower %02x\n",m_IR11_display_pointer_address_upper)); - LOG2674(("IR11 - Reset Scanline Counter on Scroll Up %02x\n",m_IR11_reset_scanline_counter_on_scrollup)); - LOG2674(("IR11 - Reset Scanline Counter on Scroll Down %02x\n",m_IR11_reset_scanline_counter_on_scrolldown)); + LOG("IR11 - Display Pointer Address Lower %02x\n",m_IR11_display_pointer_address_upper); + LOG("IR11 - Reset Scanline Counter on Scroll Up %02x\n",m_IR11_reset_scanline_counter_on_scrollup); + LOG("IR11 - Reset Scanline Counter on Scroll Down %02x\n",m_IR11_reset_scanline_counter_on_scrolldown); break; case 12: m_IR12_scroll_start = (data & 0x80)>>7; m_IR12_split_register_1 = (data & 0x7f); - LOG2674(("IR12 - Scroll Start %02x\n",m_IR12_scroll_start)); - LOG2674(("IR12 - Split Register 1 %02x\n",m_IR12_split_register_1)); + LOG("IR12 - Scroll Start %02x\n",m_IR12_scroll_start); + LOG("IR12 - Split Register 1 %02x\n",m_IR12_split_register_1); break; case 13: m_IR13_scroll_end = (data & 0x80)>>7; m_IR13_split_register_2 = (data & 0x7f); - LOG2674(("IR13 - Scroll End %02x\n",m_IR13_scroll_end)); - LOG2674(("IR13 - Split Register 2 %02x\n",m_IR13_split_register_2)); + LOG("IR13 - Scroll End %02x\n",m_IR13_scroll_end); + LOG("IR13 - Split Register 2 %02x\n",m_IR13_split_register_2); break; case 14: @@ -246,15 +261,15 @@ void scn2674_device::write_init_regs(uint8_t data) if (!m_IR0_double_ht_wd) { m_IR14_double_2 = (data & 0x30)>>4; - LOG2674(("IR14 - Double 2 %02x\n",m_IR14_double_2)); + LOG("IR14 - Double 2 %02x\n",m_IR14_double_2); } //0 normal, 1, double width, 2, double width and double tops 3, double width and double bottoms //1 affects SSR1, 2 affects SSR2 //If Double Height enabled in IR0, Screen start 1 upper (bits 7 and 6)replace Double 1, and Double 2 is unused m_IR14_double_1 = (data & 0xc0)>>6; - LOG2674(("IR14 - Double 1 %02x\n",m_IR14_double_1)); + LOG("IR14 - Double 1 %02x\n",m_IR14_double_1); - LOG2674(("IR14 - Scroll Lines %02i\n",m_IR14_scroll_lines)); + LOG("IR14 - Scroll Lines %02i\n",m_IR14_scroll_lines); break; case 15: /* not valid! */ @@ -276,7 +291,7 @@ void scn2674_device::write_command(uint8_t data) if (data==0x00) { /* master reset, configures registers */ - LOG2674(("master reset\n")); + LOG("master reset\n"); m_IR_pointer=0; m_irq_register = 0x00; m_status_register = 0x20;//RDFLG activated @@ -292,7 +307,7 @@ void scn2674_device::write_command(uint8_t data) { /* set IR pointer */ operand = data & 0x0f; - LOG2674(("set IR pointer %02x\n",operand)); + LOG("set IR pointer %02x\n",operand); m_IR_pointer=operand; @@ -303,7 +318,7 @@ void scn2674_device::write_command(uint8_t data) if ((data&0xe3)==0x22) { /* Disable GFX */ - LOG2674(("disable GFX %02x\n",data)); + LOG("disable GFX %02x\n",data); m_gfx_enabled = 0; recompute_parameters(); } @@ -311,7 +326,7 @@ void scn2674_device::write_command(uint8_t data) if ((data&0xe3)==0x23) { /* Enable GFX */ - LOG2674(("enable GFX %02x\n",data)); + LOG("enable GFX %02x\n",data); m_gfx_enabled = 1; recompute_parameters(); } @@ -324,9 +339,9 @@ void scn2674_device::write_command(uint8_t data) m_display_enabled = 0; if (operand) - LOG2674(("display OFF - float DADD bus %02x\n",data)); + LOG("display OFF - float DADD bus %02x\n",data); else - LOG2674(("display OFF - no float DADD bus %02x\n",data)); + LOG("display OFF - no float DADD bus %02x\n",data); } if ((data&0xe9)==0x29) @@ -337,12 +352,12 @@ void scn2674_device::write_command(uint8_t data) if (operand) { m_display_enabled_field = 1; - LOG2674(("display ON - next field %02x\n",data)); + LOG("display ON - next field %02x\n",data); } else { m_display_enabled_scanline = 1; - LOG2674(("display ON - next scanline %02x\n",data)); + LOG("display ON - next scanline %02x\n",data); } recompute_parameters(); // start the scanline timer } @@ -350,14 +365,14 @@ void scn2674_device::write_command(uint8_t data) if ((data&0xf1)==0x30) { /* Cursor Off */ - LOG2674(("cursor off %02x\n",data)); + LOG("cursor off %02x\n",data); m_cursor_enabled = 0; } if ((data&0xf1)==0x31) { /* Cursor On */ - LOG2674(("cursor on %02x\n",data)); + LOG("cursor on %02x\n",data); m_cursor_enabled = 1; } @@ -367,17 +382,17 @@ void scn2674_device::write_command(uint8_t data) { /* Reset Interrupt / Status bit */ operand = data & 0x1f; - LOG2674(("reset interrupt / status bit %02x\n",operand)); + LOG("reset interrupt / status bit %02x\n",operand); m_irq_register &= ~(data & 0x1f); m_status_register &= ~(data & 0x1f); - LOG2674(("IRQ Status after reset\n")); - LOG2674(("Split 2 IRQ: %d Active\n",(m_irq_register>>0)&1)); - LOG2674(("Ready IRQ: %d Active\n",(m_irq_register>>1)&1)); - LOG2674(("Split 1 IRQ: %d Active\n",(m_irq_register>>2)&1)); - LOG2674(("Line Zero IRQ: %d Active\n",(m_irq_register>>3)&1)); - LOG2674(("V-Blank IRQ: %d Active\n",(m_irq_register>>4)&1)); + LOG("IRQ Status after reset\n"); + LOG("Split 2 IRQ: %d Active\n",(m_irq_register>>0)&1); + LOG("Ready IRQ: %d Active\n",(m_irq_register>>1)&1); + LOG("Split 1 IRQ: %d Active\n",(m_irq_register>>2)&1); + LOG("Line Zero IRQ: %d Active\n",(m_irq_register>>3)&1); + LOG("V-Blank IRQ: %d Active\n",(m_irq_register>>4)&1); m_irq_state = 0; @@ -396,12 +411,12 @@ void scn2674_device::write_command(uint8_t data) /* Disable Interrupt mask*/ operand = data & 0x1f; m_irq_mask &= ~(operand); - LOG2674(("IRQ Mask after disable %x\n",operand)); - LOG2674(("Split 2 IRQ: %d Unmasked\n",(m_irq_mask>>0)&1)); - LOG2674(("Ready IRQ: %d Unmasked\n",(m_irq_mask>>1)&1)); - LOG2674(("Split 1 IRQ: %d Unmasked\n",(m_irq_mask>>2)&1)); - LOG2674(("Line Zero IRQ: %d Unmasked\n",(m_irq_mask>>3)&1)); - LOG2674(("V-Blank IRQ: %d Unmasked\n",(m_irq_mask>>4)&1)); + LOG("IRQ Mask after disable %x\n",operand); + LOG("Split 2 IRQ: %d Unmasked\n",(m_irq_mask>>0)&1); + LOG("Ready IRQ: %d Unmasked\n",(m_irq_mask>>1)&1); + LOG("Split 1 IRQ: %d Unmasked\n",(m_irq_mask>>2)&1); + LOG("Line Zero IRQ: %d Unmasked\n",(m_irq_mask>>3)&1); + LOG("V-Blank IRQ: %d Unmasked\n",(m_irq_mask>>4)&1); } @@ -411,12 +426,12 @@ void scn2674_device::write_command(uint8_t data) operand = data & 0x1f; m_irq_mask |= (data & 0x1f); - LOG2674(("IRQ Mask after enable %x\n",operand)); - LOG2674(("Split 2 IRQ: %d Unmasked\n",(m_irq_mask>>0)&1)); - LOG2674(("Ready IRQ: %d Unmasked\n",(m_irq_mask>>1)&1)); - LOG2674(("Split 1 IRQ: %d Unmasked\n",(m_irq_mask>>2)&1)); - LOG2674(("Line Zero IRQ: %d Unmasked\n",(m_irq_mask>>3)&1)); - LOG2674(("V-Blank IRQ: %d Unmasked\n",(m_irq_mask>>4)&1)); + LOG("IRQ Mask after enable %x\n",operand); + LOG("Split 2 IRQ: %d Unmasked\n",(m_irq_mask>>0)&1); + LOG("Ready IRQ: %d Unmasked\n",(m_irq_mask>>1)&1); + LOG("Split 1 IRQ: %d Unmasked\n",(m_irq_mask>>2)&1); + LOG("Line Zero IRQ: %d Unmasked\n",(m_irq_mask>>3)&1); + LOG("V-Blank IRQ: %d Unmasked\n",(m_irq_mask>>4)&1); } @@ -428,38 +443,38 @@ void scn2674_device::write_command(uint8_t data) case 0xa4: /* read at pointer address */ m_buffer = space().read_byte(m_screen2_l | (m_screen2_h << 8)); - LOG2674(("DELAYED read at pointer address %02x\n",data)); + LOG("DELAYED read at pointer address %02x\n",data); break; case 0xa2: /* write at pointer address */ space().write_byte(m_screen2_l | (m_screen2_h << 8), m_buffer); - LOG2674(("DELAYED write at pointer address %02x\n",data)); + LOG("DELAYED write at pointer address %02x\n",data); break; case 0xa6: // used by the Octopus /* write at pointer address */ space().write_byte((m_IR10_display_pointer_address_lower | (m_IR11_display_pointer_address_upper << 8)), m_buffer); - LOG2674(("DELAYED write at display pointer address %02x\n",data)); + LOG("DELAYED write at display pointer address %02x\n",data); break; case 0xa9: /* increment cursor address */ if(!(++m_cursor_l)) m_cursor_h++; - LOG2674(("DELAYED increase cursor address %02x\n",data)); + LOG("DELAYED increase cursor address %02x\n",data); break; case 0xac: /* read at cursor address */ m_buffer = space().read_byte(m_cursor_l | (m_cursor_h << 8)); - LOG2674(("DELAYED read at cursor address %02x\n",data)); + LOG("DELAYED read at cursor address %02x\n",data); break; case 0xaa: /* write at cursor address */ space().write_byte(m_cursor_l | (m_cursor_h << 8), m_buffer); - LOG2674(("DELAYED write at cursor address %02x\n",data)); + LOG("DELAYED write at cursor address %02x\n",data); break; case 0xad: @@ -467,7 +482,7 @@ void scn2674_device::write_command(uint8_t data) m_buffer = space().read_byte(m_cursor_l | (m_cursor_h << 8)); if(!(++m_cursor_l)) m_cursor_h++; - LOG2674(("DELAYED read at cursor address+increment %02x\n",data)); + LOG("DELAYED read at cursor address+increment %02x\n",data); break; case 0xab: @@ -476,7 +491,7 @@ void scn2674_device::write_command(uint8_t data) space().write_byte(m_cursor_l | (m_cursor_h << 8), m_buffer); if(!(++m_cursor_l)) m_cursor_h++; - LOG2674(("DELAYED write at cursor address+increment %02x\n",data)); + LOG("DELAYED write at cursor address+increment %02x\n",data); break; case 0xbb: @@ -486,12 +501,12 @@ void scn2674_device::write_command(uint8_t data) space().write_byte(i, m_buffer); // get the last m_cursor_l = m_screen2_l; m_cursor_h = m_screen2_h; - LOG2674(("DELAYED write from cursor address to pointer address %02x\n",data)); + LOG("DELAYED write from cursor address to pointer address %02x\n",data); break; case 0xbd: /* read from cursor address to pointer address */ - LOG2674(("DELAYED read from cursor address to pointer address %02x\n",data)); + LOG("DELAYED read from cursor address to pointer address %02x\n",data); break; case 0xbf: @@ -501,7 +516,7 @@ void scn2674_device::write_command(uint8_t data) space().write_byte(i, m_buffer); // get the last m_cursor_l = m_IR10_display_pointer_address_lower; m_cursor_h = m_IR11_display_pointer_address_upper; - LOG2674(("DELAYED write from cursor address to pointer address %02x\n",data)); + LOG("DELAYED write from cursor address to pointer address %02x\n",data); break; } } @@ -537,19 +552,19 @@ READ8_MEMBER( scn2674_device::read ) */ case 0: - LOG2674(("Read Irq Register %02x %06x\n",m_irq_register,space.device().safe_pc())); + LOG("Read Irq Register %02x %06x\n",m_irq_register,space.device().safe_pc()); return m_irq_register; case 1: - LOG2674(("Read Status Register %02X %06x\n",m_status_register,space.device().safe_pc())); + LOG("Read Status Register %02X %06x\n",m_status_register,space.device().safe_pc()); return m_status_register; - case 2: LOG2674(("Read Screen1_l Register %06x\n",space.device().safe_pc()));return m_screen1_l; - case 3: LOG2674(("Read Screen1_h Register %06x\n",space.device().safe_pc()));return m_screen1_h & 0x3f; - case 4: LOG2674(("Read Cursor_l Register %06x\n",space.device().safe_pc()));return m_cursor_l; - case 5: LOG2674(("Read Cursor_h Register %06x\n",space.device().safe_pc()));return m_cursor_h; - case 6: LOG2674(("Read Screen2_l Register %06x\n",space.device().safe_pc()));return m_screen2_l; - case 7: LOG2674(("Read Screen2_h Register %06x\n",space.device().safe_pc()));return m_screen2_h; + case 2: LOG("Read Screen1_l Register %06x\n",space.device().safe_pc());return m_screen1_l; + case 3: LOG("Read Screen1_h Register %06x\n",space.device().safe_pc());return m_screen1_h & 0x3f; + case 4: LOG("Read Cursor_l Register %06x\n",space.device().safe_pc());return m_cursor_l; + case 5: LOG("Read Cursor_h Register %06x\n",space.device().safe_pc());return m_cursor_h; + case 6: LOG("Read Screen2_l Register %06x\n",space.device().safe_pc());return m_screen2_l; + case 7: LOG("Read Screen2_h Register %06x\n",space.device().safe_pc());return m_screen2_h; } return 0xff; @@ -592,7 +607,7 @@ WRITE8_MEMBER( scn2674_device::write ) { m_IR14_double_1 = m_dbl1; m_screen1_h &= 0x3f; - LOG2674(("IR14 - Double 1 overridden %02x\n",m_IR14_double_1)); + LOG("IR14 - Double 1 overridden %02x\n",m_IR14_double_1); } if(!m_screen->vblank()) m_start1change = (m_linecounter / m_IR0_scanline_per_char_row) + 1; @@ -624,7 +639,7 @@ void scn2674_device::recompute_parameters() return; } - LOG2674(("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh))); + LOG("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); rectangle visarea; visarea.set(0, max_visible_x, 0, max_visible_y); @@ -660,7 +675,7 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para m_status_register |= 0x10; if(m_irq_mask & 0x10) { - LOG2674(("vblank irq\n")); + LOG("vblank irq\n"); m_irq_state = 1; m_irq_register |= 0x10; m_irq_cb(1); @@ -679,7 +694,7 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para m_status_register |= 0x08; if (m_irq_mask & 0x08) { - LOG2674(("SCN2674 Line Zero\n")); + LOG("SCN2674 Line Zero\n"); m_irq_state = 1; m_irq_register |= 0x08; m_irq_cb(1); @@ -691,7 +706,7 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para m_status_register |= 0x04; if(m_irq_mask & 0x04) { - LOG2674(("SCN2674 Split Screen 1 irq\n")); + LOG("SCN2674 Split Screen 1 irq\n"); m_irq_state = 1; m_irq_register |= 0x04; m_irq_cb(1); @@ -707,7 +722,7 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para m_status_register |= 0x01; if(m_irq_mask & 0x01) { - LOG2674(("SCN2674 Split Screen 2 irq\n")); + LOG("SCN2674 Split Screen 2 irq\n"); m_irq_state = 1; m_irq_register |= 0x01; m_irq_cb(1); diff --git a/src/devices/video/scn2674.h b/src/devices/video/scn2674.h index 2353a84cbcb..1c7c724a399 100644 --- a/src/devices/video/scn2674.h +++ b/src/devices/video/scn2674.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Carl -#ifndef SCN2674_H -#define SCN2674_H +#ifndef MAME_VIDEO_SCN2674_H +#define MAME_VIDEO_SCN2674_H + +#pragma once #define MCFG_SCN2674_VIDEO_ADD(_tag, _clock, _irq) \ @@ -29,10 +31,10 @@ public: typedef device_delegate draw_character_delegate; // static configuration - template static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast(device).m_irq_cb.set_callback(object); } + template static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast(device).m_irq_cb.set_callback(std::forward(cb)); } static void static_set_character_width(device_t &device, int value) { downcast(device).m_text_hpixels_per_column = value; } static void static_set_gfx_character_width(device_t &device, int value) { downcast(device).m_gfx_hpixels_per_column = value; } - static void static_set_display_callback(device_t &device, draw_character_delegate callback) { downcast(device).m_display_cb = callback; } + static void static_set_display_callback(device_t &device, draw_character_delegate &&cb) { downcast(device).m_display_cb = std::move(cb); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -40,7 +42,7 @@ public: DECLARE_WRITE8_MEMBER( buffer_w ) { m_buffer = data; } uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; } + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_0) ? &m_space_config : nullptr; } protected: virtual void device_start() override; @@ -127,6 +129,6 @@ private: }; -extern const device_type SCN2674_VIDEO; +DECLARE_DEVICE_TYPE(SCN2674_VIDEO, scn2674_device) -#endif +#endif // MAME_VIDEO_SCN2674_H diff --git a/src/devices/video/sed1200.cpp b/src/devices/video/sed1200.cpp index d25d6ea9d61..371832f579a 100644 --- a/src/devices/video/sed1200.cpp +++ b/src/devices/video/sed1200.cpp @@ -16,10 +16,10 @@ #include "emu.h" #include "sed1200.h" -const device_type SED1200D0A = device_creator; -const device_type SED1200F0A = device_creator; -const device_type SED1200D0B = device_creator; -const device_type SED1200F0B = device_creator; +DEFINE_DEVICE_TYPE(SED1200D0A, sed1200d0a_device, "sed1200da", "Epson SED1200D-0A") +DEFINE_DEVICE_TYPE(SED1200F0A, sed1200f0a_device, "sed1200fa", "Epson SED1200F-0A") +DEFINE_DEVICE_TYPE(SED1200D0B, sed1200d0b_device, "sed1200db", "Epson SED1200D-0B") +DEFINE_DEVICE_TYPE(SED1200F0B, sed1200f0b_device, "sed1200fb", "Epson SED1200F-0B") ROM_START( sed1200x0a ) ROM_REGION( 0x800, "cgrom", 0 ) @@ -31,28 +31,28 @@ ROM_START( sed1200x0b ) ROM_LOAD( "sed1200-b.bin", 0x000, 0x800, CRC(d0741f51) SHA1(c8c856f1357286a2c8c806af81724a828345357e)) ROM_END -sed1200_device::sed1200_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), cursor_direction(false), cursor_blinking(false), cursor_full(false), cursor_on(false), display_on(false), cursor_address(0), cgram_address(0), cgrom(nullptr) +sed1200_device::sed1200_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), cursor_direction(false), cursor_blinking(false), cursor_full(false), cursor_on(false), display_on(false), cursor_address(0), cgram_address(0), cgrom(nullptr) { } sed1200d0a_device::sed1200d0a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - sed1200_device(mconfig, SED1200D0A, "sed1200d-0a", tag, owner, clock, "sed1200da", __FILE__) + sed1200_device(mconfig, SED1200D0A, tag, owner, clock) { } sed1200f0a_device::sed1200f0a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - sed1200_device(mconfig, SED1200F0A, "sed1200f-0a", tag, owner, clock, "sed1200fa", __FILE__) + sed1200_device(mconfig, SED1200F0A, tag, owner, clock) { } sed1200d0b_device::sed1200d0b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - sed1200_device(mconfig, SED1200D0B, "sed1200d-0b", tag, owner, clock, "sed1200db", __FILE__) + sed1200_device(mconfig, SED1200D0B, tag, owner, clock) { } sed1200f0b_device::sed1200f0b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - sed1200_device(mconfig, SED1200F0B, "sed1200f-0b", tag, owner, clock, "sed1200fb", __FILE__) + sed1200_device(mconfig, SED1200F0B, tag, owner, clock) { } diff --git a/src/devices/video/sed1200.h b/src/devices/video/sed1200.h index 454e3585968..521bd4e027c 100644 --- a/src/devices/video/sed1200.h +++ b/src/devices/video/sed1200.h @@ -12,8 +12,10 @@ ***************************************************************************/ -#ifndef __SED1200_H__ -#define __SED1200_H__ +#ifndef MAME_VIDEO_SED1200_H +#define MAME_VIDEO_SED1200_H + +#pragma once #define MCFG_SED1200D0A_ADD( _tag ) \ MCFG_DEVICE_ADD( _tag, SED1200D0A, 0 ) @@ -29,8 +31,6 @@ class sed1200_device : public device_t { public: - sed1200_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - void control_w(uint8_t data); uint8_t control_r(); void data_w(uint8_t data); @@ -38,6 +38,8 @@ public: const uint8_t *render(); protected: + sed1200_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; private: @@ -84,9 +86,9 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; }; -extern const device_type SED1200D0A; -extern const device_type SED1200F0A; -extern const device_type SED1200D0B; -extern const device_type SED1200F0B; +DECLARE_DEVICE_TYPE(SED1200D0A, sed1200d0a_device) +DECLARE_DEVICE_TYPE(SED1200F0A, sed1200f0a_device) +DECLARE_DEVICE_TYPE(SED1200D0B, sed1200d0b_device) +DECLARE_DEVICE_TYPE(SED1200F0B, sed1200f0b_device) -#endif +#endif // MAME_VIDEO_SED1200_H diff --git a/src/devices/video/sed1330.cpp b/src/devices/video/sed1330.cpp index d7cb154cb91..0336205784a 100644 --- a/src/devices/video/sed1330.cpp +++ b/src/devices/video/sed1330.cpp @@ -9,14 +9,15 @@ #include "emu.h" #include "sed1330.h" +//#define VERBOSE 1 +#include "logmacro.h" + //************************************************************************** // MACROS / CONSTANTS //************************************************************************** -#define LOG 0 - #define INSTRUCTION_SYSTEM_SET 0x40 #define INSTRUCTION_SLEEP_IN 0x53 // unimplemented @@ -61,7 +62,7 @@ //************************************************************************** // device type definition -const device_type SED1330 = device_creator; +DEFINE_DEVICE_TYPE(SED1330, sed1330_device, "sed1330", "Epson SED1330") // default address map @@ -139,7 +140,7 @@ inline void sed1330_device::increment_csr() //------------------------------------------------- sed1330_device::sed1330_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SED1330, "SED1330", tag, owner, clock, "sed1330", __FILE__), + : device_t(mconfig, SED1330, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_bf(0), @@ -230,7 +231,7 @@ const address_space_config *sed1330_device::memory_space_config(address_spacenum READ8_MEMBER( sed1330_device::status_r ) { - if (LOG) logerror("SED1330 '%s' Status Read: %s\n", tag(), m_bf ? "busy" : "ready"); + LOG("SED1330 Status Read: %s\n", m_bf ? "busy" : "ready"); return m_bf << 6; } @@ -257,15 +258,12 @@ WRITE8_MEMBER( sed1330_device::command_w ) case INSTRUCTION_CSRDIR_DOWN: m_cd = data & 0x03; - if (LOG) + switch (m_cd) { - switch (m_cd) - { - case CSRDIR_RIGHT: logerror("SED1330 '%s' Cursor Direction: Right\n", tag()); break; - case CSRDIR_LEFT: logerror("SED1330 '%s' Cursor Direction: Left\n", tag()); break; - case CSRDIR_UP: logerror("SED1330 '%s' Cursor Direction: Up\n", tag()); break; - case CSRDIR_DOWN: logerror("SED1330 '%s' Cursor Direction: Down\n", tag()); break; - } + case CSRDIR_RIGHT: LOG("SED1330 Cursor Direction: Right\n"); break; + case CSRDIR_LEFT: LOG("SED1330 Cursor Direction: Left\n"); break; + case CSRDIR_UP: LOG("SED1330 Cursor Direction: Up\n"); break; + case CSRDIR_DOWN: LOG("SED1330 Cursor Direction: Down\n"); break; } break; } @@ -280,7 +278,7 @@ READ8_MEMBER( sed1330_device::data_r ) { uint8_t data = readbyte(m_csr); - if (LOG) logerror("SED1330 '%s' Memory Read %02x from %04x\n", tag(), data, m_csr); + LOG("SED1330 Memory Read %02x from %04x\n", data, m_csr); increment_csr(); @@ -306,45 +304,39 @@ WRITE8_MEMBER( sed1330_device::data_w ) m_ws = BIT(data, 3); m_iv = BIT(data, 5); - if (LOG) - { - logerror("SED1330 '%s' %s CG ROM\n", tag(), BIT(data, 0) ? "External" : "Internal"); - logerror("SED1330 '%s' D6 Correction: %s\n", tag(), BIT(data, 1) ? "enabled" : "disabled"); - logerror("SED1330 '%s' Character Height: %u\n", tag(), BIT(data, 2) ? 16 : 8); - logerror("SED1330 '%s' %s Panel Drive\n", tag(), BIT(data, 3) ? "Dual" : "Single"); - logerror("SED1330 '%s' Screen Top-Line Correction: %s\n", tag(), BIT(data, 5) ? "disabled" : "enabled"); - } + LOG("SED1330 %s CG ROM\n", BIT(data, 0) ? "External" : "Internal"); + LOG("SED1330 D6 Correction: %s\n", BIT(data, 1) ? "enabled" : "disabled"); + LOG("SED1330 Character Height: %u\n", BIT(data, 2) ? 16 : 8); + LOG("SED1330 %s Panel Drive\n", BIT(data, 3) ? "Dual" : "Single"); + LOG("SED1330 Screen Top-Line Correction: %s\n", BIT(data, 5) ? "disabled" : "enabled"); break; case 1: m_fx = (data & 0x07) + 1; m_wf = BIT(data, 7); - if (LOG) - { - logerror("SED1330 '%s' Horizontal Character Size: %u\n", tag(), m_fx); - logerror("SED1330 '%s' %s AC Drive\n", tag(), BIT(data, 7) ? "2-frame" : "16-line"); - } + LOG("SED1330 Horizontal Character Size: %u\n", m_fx); + LOG("SED1330 %s AC Drive\n", BIT(data, 7) ? "2-frame" : "16-line"); break; case 2: m_fy = (data & 0x0f) + 1; - if (LOG) logerror("SED1330 '%s' Vertical Character Size: %u\n", tag(), m_fy); + LOG("SED1330 Vertical Character Size: %u\n", m_fy); break; case 3: m_cr = data + 1; - if (LOG) logerror("SED1330 '%s' Visible Characters Per Line: %u\n", tag(), m_cr); + LOG("SED1330 Visible Characters Per Line: %u\n", m_cr); break; case 4: m_tcr = data + 1; - if (LOG) logerror("SED1330 '%s' Total Characters Per Line: %u\n", tag(), m_tcr); + LOG("SED1330 Total Characters Per Line: %u\n", m_tcr); break; case 5: m_lf = data + 1; - if (LOG) logerror("SED1330 '%s' Frame Height: %u\n", tag(), m_lf); + LOG("SED1330 Frame Height: %u\n", m_lf); break; case 6: @@ -353,11 +345,11 @@ WRITE8_MEMBER( sed1330_device::data_w ) case 7: m_ap = (data << 8) | (m_ap & 0xff); - if (LOG) logerror("SED1330 '%s' Virtual Screen Width: %u\n", tag(), m_ap); + LOG("SED1330 Virtual Screen Width: %u\n", m_ap); break; default: - logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data); + logerror("SED1330 Invalid parameter byte %02x\n", data); } break; @@ -366,41 +358,38 @@ WRITE8_MEMBER( sed1330_device::data_w ) m_d = BIT(data, 0); m_fc = data & 0x03; m_fp = data >> 2; - if (LOG) - { - logerror("SED1330 '%s' Display: %s\n", tag(), BIT(data, 0) ? "enabled" : "disabled"); + LOG("SED1330 Display: %s\n", BIT(data, 0) ? "enabled" : "disabled"); - switch (m_fc) - { - case FC_OFF: logerror("SED1330 '%s' Cursor: disabled\n", tag()); break; - case FC_SOLID: logerror("SED1330 '%s' Cursor: solid\n", tag()); break; - case FC_FLASH_32: logerror("SED1330 '%s' Cursor: fFR/32\n", tag()); break; - case FC_FLASH_64: logerror("SED1330 '%s' Cursor: fFR/64\n", tag()); break; - } + switch (m_fc) + { + case FC_OFF: LOG("SED1330 Cursor: disabled\n"); break; + case FC_SOLID: LOG("SED1330 Cursor: solid\n"); break; + case FC_FLASH_32: LOG("SED1330 Cursor: fFR/32\n"); break; + case FC_FLASH_64: LOG("SED1330 Cursor: fFR/64\n"); break; + } - switch (m_fp & 0x03) - { - case FC_OFF: logerror("SED1330 '%s' Display Page 1: disabled\n", tag()); break; - case FC_SOLID: logerror("SED1330 '%s' Display Page 1: enabled\n", tag()); break; - case FC_FLASH_32: logerror("SED1330 '%s' Display Page 1: flash fFR/32\n", tag()); break; - case FC_FLASH_64: logerror("SED1330 '%s' Display Page 1: flash fFR/64\n", tag()); break; - } + switch (m_fp & 0x03) + { + case FC_OFF: LOG("SED1330 Display Page 1: disabled\n"); break; + case FC_SOLID: LOG("SED1330 Display Page 1: enabled\n"); break; + case FC_FLASH_32: LOG("SED1330 Display Page 1: flash fFR/32\n"); break; + case FC_FLASH_64: LOG("SED1330 Display Page 1: flash fFR/64\n"); break; + } - switch ((m_fp >> 2) & 0x03) - { - case FC_OFF: logerror("SED1330 '%s' Display Page 2/4: disabled\n", tag()); break; - case FC_SOLID: logerror("SED1330 '%s' Display Page 2/4: enabled\n", tag()); break; - case FC_FLASH_32: logerror("SED1330 '%s' Display Page 2/4: flash fFR/32\n", tag()); break; - case FC_FLASH_64: logerror("SED1330 '%s' Display Page 2/4: flash fFR/64\n", tag()); break; - } + switch ((m_fp >> 2) & 0x03) + { + case FC_OFF: LOG("SED1330 Display Page 2/4: disabled\n"); break; + case FC_SOLID: LOG("SED1330 Display Page 2/4: enabled\n"); break; + case FC_FLASH_32: LOG("SED1330 Display Page 2/4: flash fFR/32\n"); break; + case FC_FLASH_64: LOG("SED1330 Display Page 2/4: flash fFR/64\n"); break; + } - switch ((m_fp >> 4) & 0x03) - { - case FC_OFF: logerror("SED1330 '%s' Display Page 3: disabled\n", tag()); break; - case FC_SOLID: logerror("SED1330 '%s' Display Page 3: enabled\n", tag()); break; - case FC_FLASH_32: logerror("SED1330 '%s' Display Page 3: flash fFR/32\n", tag()); break; - case FC_FLASH_64: logerror("SED1330 '%s' Display Page 3: flash fFR/64\n", tag()); break; - } + switch ((m_fp >> 4) & 0x03) + { + case FC_OFF: LOG("SED1330 Display Page 3: disabled\n"); break; + case FC_SOLID: LOG("SED1330 Display Page 3: enabled\n"); break; + case FC_FLASH_32: LOG("SED1330 Display Page 3: flash fFR/32\n"); break; + case FC_FLASH_64: LOG("SED1330 Display Page 3: flash fFR/64\n"); break; } break; @@ -413,12 +402,12 @@ WRITE8_MEMBER( sed1330_device::data_w ) case 1: m_sad1 = (data << 8) | (m_sad1 & 0xff); - if (LOG) logerror("SED1330 '%s' Display Page 1 Start Address: %04x\n", tag(), m_sad1); + LOG("SED1330 Display Page 1 Start Address: %04x\n", m_sad1); break; case 2: m_sl1 = data + 1; - if (LOG) logerror("SED1330 '%s' Display Block 1 Screen Lines: %u\n", tag(), m_sl1); + LOG("SED1330 Display Block 1 Screen Lines: %u\n", m_sl1); break; case 3: @@ -427,12 +416,12 @@ WRITE8_MEMBER( sed1330_device::data_w ) case 4: m_sad2 = (data << 8) | (m_sad2 & 0xff); - if (LOG) logerror("SED1330 '%s' Display Page 2 Start Address: %04x\n", tag(), m_sad2); + LOG("SED1330 Display Page 2 Start Address: %04x\n", m_sad2); break; case 5: m_sl2 = data + 1; - if (LOG) logerror("SED1330 '%s' Display Block 2 Screen Lines: %u\n", tag(), m_sl2); + LOG("SED1330 Display Block 2 Screen Lines: %u\n", m_sl2); break; case 6: @@ -441,7 +430,7 @@ WRITE8_MEMBER( sed1330_device::data_w ) case 7: m_sad3 = (data << 8) | (m_sad3 & 0xff); - if (LOG) logerror("SED1330 '%s' Display Page 3 Start Address: %04x\n", tag(), m_sad3); + LOG("SED1330 Display Page 3 Start Address: %04x\n", m_sad3); break; case 8: @@ -450,11 +439,11 @@ WRITE8_MEMBER( sed1330_device::data_w ) case 9: m_sad4 = (data << 8) | (m_sad4 & 0xff); - if (LOG) logerror("SED1330 '%s' Display Page 4 Start Address: %04x\n", tag(), m_sad4); + LOG("SED1330 Display Page 4 Start Address: %04x\n", m_sad4); break; default: - logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data); + logerror("SED1330 Invalid parameter byte %02x\n", data); } break; @@ -463,21 +452,18 @@ WRITE8_MEMBER( sed1330_device::data_w ) { case 0: m_crx = (data & 0x0f) + 1; - if (LOG) logerror("SED1330 '%s' Horizontal Cursor Size: %u\n", tag(), m_crx); + LOG("SED1330 Horizontal Cursor Size: %u\n", m_crx); break; case 1: m_cry = (data & 0x0f) + 1; m_cm = BIT(data, 7); - if (LOG) - { - logerror("SED1330 '%s' Vertical Cursor Location: %u\n", tag(), m_cry); - logerror("SED1330 '%s' Cursor Shape: %s\n", tag(), BIT(data, 7) ? "Block" : "Underscore"); - } + LOG("SED1330 Vertical Cursor Location: %u\n", m_cry); + LOG("SED1330 Cursor Shape: %s\n", BIT(data, 7) ? "Block" : "Underscore"); break; default: - logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data); + logerror("SED1330 Invalid parameter byte %02x\n", data); } break; @@ -490,17 +476,17 @@ WRITE8_MEMBER( sed1330_device::data_w ) case 1: m_sag = (data << 8) | (m_sag & 0xff); - if (LOG) logerror("SED1330 '%s' Character Generator RAM Start Address: %04x\n", tag(), m_sag); + LOG("SED1330 Character Generator RAM Start Address: %04x\n", m_sag); break; default: - logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data); + logerror("SED1330 Invalid parameter byte %02x\n", data); } break; case INSTRUCTION_HDOT_SCR: m_hdotscr = data & 0x07; - if (LOG) logerror("SED1330 '%s' Horizontal Dot Scroll: %u\n", tag(), m_hdotscr); + LOG("SED1330 Horizontal Dot Scroll: %u\n", m_hdotscr); break; case INSTRUCTION_OVLAY: @@ -508,20 +494,17 @@ WRITE8_MEMBER( sed1330_device::data_w ) m_dm = (data >> 2) & 0x03; m_ov = BIT(data, 4); - if (LOG) + switch (m_mx) { - switch (m_mx) - { - case MX_OR: logerror("SED1330 '%s' Display Composition Method: OR\n", tag()); break; - case MX_XOR: logerror("SED1330 '%s' Display Composition Method: Exclusive-OR\n", tag()); break; - case MX_AND: logerror("SED1330 '%s' Display Composition Method: AND\n", tag()); break; - case MX_PRIORITY_OR: logerror("SED1330 '%s' Display Composition Method: Priority-OR\n", tag()); break; - } - - logerror("SED1330 '%s' Display Page 1 Mode: %s\n", tag(), BIT(data, 2) ? "Graphics" : "Text"); - logerror("SED1330 '%s' Display Page 3 Mode: %s\n", tag(), BIT(data, 3) ? "Graphics" : "Text"); - logerror("SED1330 '%s' Display Composition Layers: %u\n", tag(), BIT(data, 4) ? 3 : 2); + case MX_OR: LOG("SED1330 Display Composition Method: OR\n"); break; + case MX_XOR: LOG("SED1330 Display Composition Method: Exclusive-OR\n"); break; + case MX_AND: LOG("SED1330 Display Composition Method: AND\n"); break; + case MX_PRIORITY_OR: LOG("SED1330 Display Composition Method: Priority-OR\n"); break; } + + LOG("SED1330 Display Page 1 Mode: %s\n", BIT(data, 2) ? "Graphics" : "Text"); + LOG("SED1330 Display Page 3 Mode: %s\n", BIT(data, 3) ? "Graphics" : "Text"); + LOG("SED1330 Display Composition Layers: %u\n", BIT(data, 4) ? 3 : 2); break; case INSTRUCTION_CSRW: @@ -533,11 +516,11 @@ WRITE8_MEMBER( sed1330_device::data_w ) case 1: m_csr = (data << 8) | (m_csr & 0xff); - if (LOG) logerror("SED1330 '%s' Cursor Address %04x\n", tag(), m_csr); + LOG("SED1330 Cursor Address %04x\n", m_csr); break; default: - logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data); + logerror("SED1330 Invalid parameter byte %02x\n", data); } break; #if 0 @@ -545,7 +528,7 @@ WRITE8_MEMBER( sed1330_device::data_w ) break; #endif case INSTRUCTION_MWRITE: - if (LOG) logerror("SED1330 '%s' Memory Write %02x to %04x (row %u col %u line %u)\n", tag(), data, m_csr, m_csr/80/8, m_csr%80, m_csr/80); + LOG("SED1330 Memory Write %02x to %04x (row %u col %u line %u)\n", data, m_csr, m_csr/80/8, m_csr%80, m_csr/80); writebyte(m_csr, data); @@ -556,7 +539,7 @@ WRITE8_MEMBER( sed1330_device::data_w ) break; #endif default: - logerror("SED1330 '%s' Unsupported instruction %02x\n", tag(), m_ir); + logerror("SED1330 Unsupported instruction %02x\n", m_ir); } m_pbc++; diff --git a/src/devices/video/sed1330.h b/src/devices/video/sed1330.h index a71e35e0e83..fd38f03e689 100644 --- a/src/devices/video/sed1330.h +++ b/src/devices/video/sed1330.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_VIDEO_SED1330_H +#define MAME_VIDEO_SED1330_H -#ifndef __SED1330__ -#define __SED1330__ +#pragma once @@ -56,7 +56,7 @@ protected: virtual void device_reset() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; inline uint8_t readbyte(offs_t address); inline void writebyte(offs_t address, uint8_t m_data); @@ -118,8 +118,6 @@ private: // device type definition -extern const device_type SED1330; - - +DECLARE_DEVICE_TYPE(SED1330, sed1330_device) -#endif +#endif // MAME_VIDEO_SED1330_H diff --git a/src/devices/video/sed1520.cpp b/src/devices/video/sed1520.cpp index 83f884d5756..708d685ad18 100644 --- a/src/devices/video/sed1520.cpp +++ b/src/devices/video/sed1520.cpp @@ -19,7 +19,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type SED1520 = device_creator; +DEFINE_DEVICE_TYPE(SED1520, sed1520_device, "sed1520", "Epson SED1520") //************************************************************************** @@ -31,7 +31,7 @@ const device_type SED1520 = device_creator; //------------------------------------------------- sed1520_device::sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, SED1520, "SED1520", tag, owner, clock, "sed1520", __FILE__), m_lcd_on(0), m_busy(0), m_page(0), m_column(0), m_old_column(0), m_start_line(0), + device_t(mconfig, SED1520, tag, owner, clock), m_lcd_on(0), m_busy(0), m_page(0), m_column(0), m_old_column(0), m_start_line(0), m_adc(0), m_static_drive(0), m_modify_write(false), m_screen_update_func(nullptr) { diff --git a/src/devices/video/sed1520.h b/src/devices/video/sed1520.h index 29bc5b1dd15..2bd554055f0 100644 --- a/src/devices/video/sed1520.h +++ b/src/devices/video/sed1520.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_SED1520_H +#define MAME_VIDEO_SED1520_H -#ifndef __SED1520_H__ -#define __SED1520_H__ +#pragma once #define MCFG_SED1520_ADD( _tag, _cb ) \ @@ -20,7 +20,6 @@ // TYPE DEFINITIONS //************************************************************************** -typedef uint32_t (*sed1520_screen_update_func)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc); #define SED1520_UPDATE_CB(name) uint32_t name(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc) @@ -29,11 +28,13 @@ typedef uint32_t (*sed1520_screen_update_func)(device_t &device, bitmap_ind16 &b class sed1520_device : public device_t { public: + typedef uint32_t (*screen_update_func)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc); + // construction/destruction sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - static void static_set_screen_update_cb(device_t &device, sed1520_screen_update_func _cb) { downcast(device).m_screen_update_func = _cb; } + static void static_set_screen_update_cb(device_t &device, screen_update_func _cb) { downcast(device).m_screen_update_func = _cb; } // device interface virtual DECLARE_WRITE8_MEMBER(write); @@ -60,13 +61,13 @@ private: uint8_t m_adc; uint8_t m_static_drive; bool m_modify_write; - sed1520_screen_update_func m_screen_update_func; + screen_update_func m_screen_update_func; uint8_t m_vram[0x140]; }; // device type definition -extern const device_type SED1520; +DECLARE_DEVICE_TYPE(SED1520, sed1520_device) -#endif +#endif // MAME_VIDEO_SED1520_H diff --git a/src/devices/video/snes_ppu.cpp b/src/devices/video/snes_ppu.cpp index 8fcfb4af3e6..49ee17c94b4 100644 --- a/src/devices/video/snes_ppu.cpp +++ b/src/devices/video/snes_ppu.cpp @@ -189,7 +189,7 @@ enum // DEVICE DEFINITIONS //************************************************************************** -const device_type SNES_PPU = device_creator; +DEFINE_DEVICE_TYPE(SNES_PPU, snes_ppu_device, "snes_ppu", "SNES PPU") //************************************************************************** @@ -201,14 +201,14 @@ const device_type SNES_PPU = device_creator; //------------------------------------------------- snes_ppu_device::snes_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SNES_PPU, "SNES PPU", tag, owner, clock, "snes_ppu", __FILE__), - device_video_interface(mconfig, *this), - m_openbus_cb(*this), - m_options(*this, ":OPTIONS"), - m_debug1(*this, ":DEBUG1"), - m_debug2(*this, ":DEBUG2"), - m_debug3(*this, ":DEBUG3"), - m_debug4(*this, ":DEBUG4") + : device_t(mconfig, SNES_PPU, tag, owner, clock) + , device_video_interface(mconfig, *this) + , m_openbus_cb(*this) + , m_options(*this, ":OPTIONS") + , m_debug1(*this, ":DEBUG1") + , m_debug2(*this, ":DEBUG2") + , m_debug3(*this, ":DEBUG3") + , m_debug4(*this, ":DEBUG4") { } @@ -419,7 +419,7 @@ void snes_ppu_device::device_reset() { elem.enable = 0; elem.clip = 0; - memset(elem.buffer, 0, SNES_SCR_WIDTH); + memset(elem.buffer, 0, SNES_SCR_WIDTH * sizeof(uint16_t)); memset(elem.priority, 0, SNES_SCR_WIDTH); memset(elem.layer, 0, SNES_SCR_WIDTH); memset(elem.blend_exception, 0, SNES_SCR_WIDTH); diff --git a/src/devices/video/snes_ppu.h b/src/devices/video/snes_ppu.h index ab1a30245df..2a3ac575edf 100644 --- a/src/devices/video/snes_ppu.h +++ b/src/devices/video/snes_ppu.h @@ -6,8 +6,8 @@ ***************************************************************************/ -#ifndef MAME_DEVICES_VIDEO_SNES_PPU_H -#define MAME_DEVICES_VIDEO_SNES_PPU_H +#ifndef MAME_VIDEO_SNES_PPU_H +#define MAME_VIDEO_SNES_PPU_H #pragma once @@ -34,37 +34,6 @@ #define SNES_LAYER_DEBUG 0 -/* offset-per-tile modes */ -enum -{ - SNES_OPT_NONE = 0, - SNES_OPT_MODE2, - SNES_OPT_MODE4, - SNES_OPT_MODE6 -}; - -/* layers */ -enum -{ - SNES_BG1 = 0, - SNES_BG2, - SNES_BG3, - SNES_BG4, - SNES_OAM, - SNES_COLOR -}; - - -struct SNES_SCANLINE -{ - int enable, clip; - - uint16_t buffer[SNES_SCR_WIDTH]; - uint8_t priority[SNES_SCR_WIDTH]; - uint8_t layer[SNES_SCR_WIDTH]; - uint8_t blend_exception[SNES_SCR_WIDTH]; -}; - // ======================> snes_ppu_device class snes_ppu_device : public device_t, @@ -75,7 +44,68 @@ public: snes_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - template static devcb_base &static_set_open_bus_callback(device_t &device, _Object object) { return downcast(device).m_openbus_cb.set_callback(object); } + template static devcb_base &static_set_open_bus_callback(device_t &device, Object &&cb) { return downcast(device).m_openbus_cb.set_callback(std::forward(cb)); } + + void refresh_scanline(bitmap_rgb32 &bitmap, uint16_t curline); + + int16_t current_x() const { return m_screen->hpos() / m_htmult; } + int16_t current_y() const { return m_screen->vpos(); } + void set_latch_hv(int16_t x, int16_t y); + + uint8_t read(address_space &space, uint32_t offset, uint8_t wrio_bit7); + void write(address_space &space, uint32_t offset, uint8_t data); + + int vtotal() const { return ((m_stat78 & 0x10) == SNES_NTSC) ? SNES_VTOTAL_NTSC : SNES_VTOTAL_PAL; } + uint16_t htmult() const { return m_htmult; } + uint8_t interlace() const { return m_interlace; } + bool screen_disabled() const { return bool(m_screen_disabled); } + uint8_t last_visible_line() const { return m_beam.last_visible_line; } + uint16_t current_vert() const { return m_beam.current_vert; } + uint8_t saved_oam_address_low() const { return m_oam.saved_address_low; } + uint8_t saved_oam_address_high() const { return m_oam.saved_address_high; } + + void clear_time_range_over() { m_stat77 &= 0x3f; } + void toggle_field() { m_stat78 ^= 0x80; } + void reset_interlace() + { + m_htmult = 1; + m_interlace = 1; + m_obj_interlace = 1; + } + void set_current_vert(uint16_t value) { m_beam.current_vert = value; } + void set_first_sprite() { m_oam.first_sprite = m_oam.priority_rotation ? ((m_oam.address >> 1) & 127) : 0; } + +protected: + /* offset-per-tile modes */ + enum + { + SNES_OPT_NONE = 0, + SNES_OPT_MODE2, + SNES_OPT_MODE4, + SNES_OPT_MODE6 + }; + + /* layers */ + enum + { + SNES_BG1 = 0, + SNES_BG2, + SNES_BG3, + SNES_BG4, + SNES_OAM, + SNES_COLOR + }; + + + struct SNES_SCANLINE + { + int enable, clip; + + uint16_t buffer[SNES_SCR_WIDTH]; + uint8_t priority[SNES_SCR_WIDTH]; + uint8_t layer[SNES_SCR_WIDTH]; + uint8_t blend_exception[SNES_SCR_WIDTH]; + }; uint8_t m_regs[0x40]; @@ -252,17 +282,10 @@ public: void update_windowmasks(void); void update_offsets(void); inline void draw_blend(uint16_t offset, uint16_t *colour, uint8_t prevent_color_math, uint8_t black_pen_clip, int switch_screens); - void refresh_scanline(bitmap_rgb32 &bitmap, uint16_t curline); - inline int16_t current_x() { return m_screen->hpos() / m_htmult; } - inline int16_t current_y() { return m_screen->vpos(); } - void set_latch_hv(int16_t x, int16_t y); void dynamic_res_change(); inline uint32_t get_vram_address(); - uint8_t read(address_space &space, uint32_t offset, uint8_t wrio_bit7); - void write(address_space &space, uint32_t offset, uint8_t data); - DECLARE_READ8_MEMBER( oam_read ); DECLARE_WRITE8_MEMBER( oam_write ); DECLARE_READ8_MEMBER( cgram_read ); @@ -273,7 +296,6 @@ public: std::unique_ptr m_cgram; /* Palette RAM */ std::unique_ptr m_vram; /* Video RAM (TODO: Should be 16-bit, but it's easier this way) */ -protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -289,7 +311,7 @@ private: // device type definition -extern const device_type SNES_PPU; +DECLARE_DEVICE_TYPE(SNES_PPU, snes_ppu_device) /*************************************************************************** @@ -299,4 +321,4 @@ extern const device_type SNES_PPU; #define MCFG_SNES_PPU_OPENBUS_CB(_read) \ devcb = &snes_ppu_device::static_set_open_bus_callback(*device, DEVCB_##_read); -#endif // MAME_DEVICES_VIDEO_SNES_PPU_H +#endif // MAME_VIDEO_SNES_PPU_H diff --git a/src/devices/video/sprite.h b/src/devices/video/sprite.h index d17fdc13bb9..9919d83ec00 100644 --- a/src/devices/video/sprite.h +++ b/src/devices/video/sprite.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_SPRITE_H +#define MAME_VIDEO_SPRITE_H -#ifndef __SPRITE_H__ -#define __SPRITE_H__ +#pragma once // ======================> sparse_dirty_rect @@ -81,13 +81,13 @@ class sprite_device : public device_t protected: // construction/destruction - only for subclasses - sprite_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file, int dirty_granularity = 3) - : device_t(mconfig, type, name, tag, owner, 0, shortname, file), - m_xorigin(0), - m_yorigin(0), - m_spriteram(nullptr), - m_spriteram_bytes(0), - m_dirty(dirty_granularity) + sprite_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, int dirty_granularity = 3) + : device_t(mconfig, type, tag, owner, 0) + , m_xorigin(0) + , m_yorigin(0) + , m_spriteram(nullptr) + , m_spriteram_bytes(0) + , m_dirty(dirty_granularity) { force_clear(); } @@ -207,4 +207,4 @@ typedef sprite_device sprite16_device_ind32; typedef sprite_device sprite32_device_ind32; -#endif // __SPRITE_H__ +#endif // MAME_VIDEO_SPRITE_H diff --git a/src/devices/video/stvvdp2.cpp b/src/devices/video/stvvdp2.cpp index 856c977eb5d..75d8dba5b84 100644 --- a/src/devices/video/stvvdp2.cpp +++ b/src/devices/video/stvvdp2.cpp @@ -199,7 +199,7 @@ enum bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\ | -- | -- | -- | -- | -- | -- | EXLTFG | EXSYFG | |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----| - | -- | -- | -- | -- | VBLANK | HBLANK | ODD | EVEN | + | -- | -- | -- | -- | VBLANK | HBLANK | ODD | PAL | \----------|----------|----------|----------|----------|----------|----------|---------*/ /* 180006 - r/w - VRSIZE - VRAM Size @@ -6000,13 +6000,20 @@ uint8_t saturn_state::get_vblank( void ) return 0; } +// TODO: seabass explicitly wants this bit to be 0 when screen is disabled from bios to game transition, assume following disp bit. +// this is actually wrong for finlarch/sasissu/magzun so it needs to be tested on real HW. uint8_t saturn_state::get_odd_bit( void ) { if(STV_VDP2_HRES & 4) //exclusive monitor mode makes this bit to be always 1 return 1; if(STV_VDP2_LSMD == 0) // same for non-interlace mode + { + if((STV_VDP2_HRES & 1) == 0) + return STV_VDP2_DISP; + return 1; + } return machine().first_screen()->frame_number() & 1; } diff --git a/src/devices/video/t6a04.cpp b/src/devices/video/t6a04.cpp index c9b35f05d26..641d447baa6 100644 --- a/src/devices/video/t6a04.cpp +++ b/src/devices/video/t6a04.cpp @@ -15,7 +15,7 @@ #include "video/t6a04.h" // devices -const device_type T6A04 = device_creator; +DEFINE_DEVICE_TYPE(T6A04, t6a04_device, "t6a04", "Toshiba T6A04 LCD Controller") //------------------------------------------------- // device_validity_check - perform validity checks @@ -37,10 +37,12 @@ void t6a04_device::device_validity_check(validity_checker &valid) const //------------------------------------------------- t6a04_device::t6a04_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, T6A04, "T6A04", tag, owner, clock, "t6a04", __FILE__), m_busy_flag(0), m_display_on(0), m_contrast(0), m_xpos(0), m_ypos(0), m_zpos(0), m_direction(0), - m_active_counter(0), m_word_len(0), m_opa1(0), m_opa2(0), m_output_reg(0), - m_height(0), - m_width(0) + device_t(mconfig, T6A04, tag, owner, clock), + m_busy_flag(0), m_display_on(0), m_contrast(0), + m_xpos(0), m_ypos(0), m_zpos(0), + m_direction(0), m_active_counter(0), m_word_len(0), + m_opa1(0), m_opa2(0), m_output_reg(0), + m_height(0), m_width(0) { } diff --git a/src/devices/video/t6a04.h b/src/devices/video/t6a04.h index fb5cb23d92c..bee192f8ac6 100644 --- a/src/devices/video/t6a04.h +++ b/src/devices/video/t6a04.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_T6A04_H +#define MAME_VIDEO_T6A04_H -#ifndef __T6A04_H__ -#define __T6A04_H__ +#pragma once //************************************************************************** // TYPE DEFINITIONS @@ -64,9 +64,9 @@ private: }; // device type definition -extern const device_type T6A04; +DECLARE_DEVICE_TYPE(T6A04, t6a04_device) #define MCFG_T6A04_SIZE(_width, _height) \ t6a04_device::set_size(*device, _width, _height); -#endif +#endif // MAME_VIDEO_T6A04_H diff --git a/src/devices/video/tea1002.cpp b/src/devices/video/tea1002.cpp index 5343de12830..162fa128bfd 100644 --- a/src/devices/video/tea1002.cpp +++ b/src/devices/video/tea1002.cpp @@ -39,7 +39,7 @@ const int tea1002_device::m_amplitute[] = // DEVICE DEFINITIONS //************************************************************************** -const device_type TEA1002 = device_creator; +DEFINE_DEVICE_TYPE(TEA1002, tea1002_device, "tea1002", "Mullard TEA1002 PAL colour encoder") //************************************************************************** @@ -51,7 +51,7 @@ const device_type TEA1002 = device_creator; //------------------------------------------------- tea1002_device::tea1002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, TEA1002, "TEA1002 PAL colour encoder", tag, owner, clock, "tea1002", __FILE__) + device_t(mconfig, TEA1002, tag, owner, clock) { } diff --git a/src/devices/video/tea1002.h b/src/devices/video/tea1002.h index d0f4b38f876..dcfa46f7bb1 100644 --- a/src/devices/video/tea1002.h +++ b/src/devices/video/tea1002.h @@ -19,10 +19,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_TEA1002_H +#define MAME_VIDEO_TEA1002_H -#ifndef __TEA1002_H__ -#define __TEA1002_H__ +#pragma once @@ -61,5 +61,6 @@ private: // device type definition extern const device_type TEA1002; +DECLARE_DEVICE_TYPE(TEA1002, tea1002_device) -#endif // __TEA1002_H__ +#endif // MAME_VIDEO_TEA1002_H diff --git a/src/devices/video/tlc34076.cpp b/src/devices/video/tlc34076.cpp index ba4283fc683..2b8cb788aca 100644 --- a/src/devices/video/tlc34076.cpp +++ b/src/devices/video/tlc34076.cpp @@ -35,15 +35,15 @@ //************************************************************************** // device type definition -const device_type TLC34076 = device_creator; +DEFINE_DEVICE_TYPE(TLC34076, tlc34076_device, "tlc34076", "TI TLC34076 VIP") //------------------------------------------------- // tlc34076_device - constructor //------------------------------------------------- tlc34076_device::tlc34076_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TLC34076, "TLC34076 VIP", tag, owner, clock, "tlc34076", __FILE__), - m_dacbits(6) + : device_t(mconfig, TLC34076, tag, owner, clock) + , m_dacbits(6) { } diff --git a/src/devices/video/tlc34076.h b/src/devices/video/tlc34076.h index 6375ecdf4be..6a1b54d2adf 100644 --- a/src/devices/video/tlc34076.h +++ b/src/devices/video/tlc34076.h @@ -9,21 +9,10 @@ ***************************************************************************/ -#pragma once - -#ifndef __TLC34076_H__ -#define __TLC34076_H__ - - -/*************************************************************************** - CONSTANTS -***************************************************************************/ +#ifndef MAME_VIDEO_TLC34076_H +#define MAME_VIDEO_TLC34076_H -enum tlc34076_bits -{ - TLC34076_6_BIT = 6, - TLC34076_8_BIT = 8 -}; +#pragma once /*************************************************************************** @@ -33,6 +22,12 @@ enum tlc34076_bits class tlc34076_device : public device_t { public: + enum tlc34076_bits + { + TLC34076_6_BIT = 6, + TLC34076_8_BIT = 8 + }; + // construction/destruction tlc34076_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -65,12 +60,11 @@ private: DEVICE CONFIGURATION MACROS ***************************************************************************/ -#define MCFG_TLC34076_ADD(_tag, _bits) \ - MCFG_DEVICE_ADD(_tag, TLC34076, 0) \ - tlc34076_device::static_set_bits(*device, _bits); - +#define MCFG_TLC34076_ADD(tag, bits) \ + MCFG_DEVICE_ADD((tag), TLC34076, 0) \ + tlc34076_device::static_set_bits(*device, (tlc34076_device::bits)); -extern const device_type TLC34076; +DECLARE_DEVICE_TYPE(TLC34076, tlc34076_device) -#endif /* __TLC34076_H__ */ +#endif // MAME_VIDEO_TLC34076_H diff --git a/src/devices/video/tms34061.cpp b/src/devices/video/tms34061.cpp index 3a74d450c52..7947dd59875 100644 --- a/src/devices/video/tms34061.cpp +++ b/src/devices/video/tms34061.cpp @@ -17,8 +17,9 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" -#define VERBOSE (0) //************************************************************************** @@ -29,10 +30,10 @@ // tms34061_device - constructor //------------------------------------------------- -const device_type TMS34061 = device_creator; +DEFINE_DEVICE_TYPE(TMS34061, tms34061_device, "tms34061", "TI TMS34061 VSC") tms34061_device::tms34061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TMS34061, "TMS34061 VSC", tag, owner, clock, "tms34061", __FILE__), + : device_t(mconfig, TMS34061, tag, owner, clock), device_video_interface(mconfig, *this), m_rowshift(0), m_vramsize(0), @@ -190,7 +191,7 @@ void tms34061_device::register_w(address_space &space, offs_t offset, uint8_t da } /* log it */ - if (VERBOSE) logerror("%s:tms34061 %s = %04x\n", space.machine().describe_context(), regnames[regnum], m_regs[regnum]); + LOG("%s:tms34061 %s = %04x\n", space.machine().describe_context(), regnames[regnum], m_regs[regnum]); /* update the state of things */ switch (regnum) @@ -268,7 +269,7 @@ uint8_t tms34061_device::register_r(address_space &space, offs_t offset) } /* log it */ - if (VERBOSE) logerror("%s:tms34061 %s read = %04X\n", space.machine().describe_context(), regnames[regnum], result); + LOG("%s:tms34061 %s read = %04X\n", space.machine().describe_context(), regnames[regnum], result); return (offset & 0x02) ? (result >> 8) : result; } @@ -375,7 +376,7 @@ void tms34061_device::xypixel_w(address_space &space, int offset, uint8_t data) /* mask to the VRAM size */ pixeloffs &= m_vrammask; - if (VERBOSE) logerror("%s:tms34061 xy (%04x) = %02x/%02x\n", space.machine().describe_context(), pixeloffs, data, m_latchdata); + LOG("%s:tms34061 xy (%04x) = %02x/%02x\n", space.machine().describe_context(), pixeloffs, data, m_latchdata); /* set the pixel data */ m_vram[pixeloffs] = data; @@ -431,7 +432,7 @@ void tms34061_device::write(address_space &space, int col, int row, int func, ui offs = ((row << m_rowshift) | col) & m_vrammask; if (m_regs[TMS34061_CONTROL2] & 0x0040) offs |= (m_regs[TMS34061_CONTROL2] & 3) << 16; - if (VERBOSE) logerror("%s:tms34061 direct (%04x) = %02x/%02x\n", space.machine().describe_context(), offs, data, m_latchdata); + LOG("%s:tms34061 direct (%04x) = %02x/%02x\n", space.machine().describe_context(), offs, data, m_latchdata); if (m_vram[offs] != data || m_latchram[offs] != m_latchdata) { m_vram[offs] = data; @@ -445,7 +446,7 @@ void tms34061_device::write(address_space &space, int col, int row, int func, ui if (m_regs[TMS34061_CONTROL2] & 0x0040) offs |= (m_regs[TMS34061_CONTROL2] & 3) << 16; offs &= m_vrammask; - if (VERBOSE) logerror("%s:tms34061 shiftreg write (%04x)\n", space.machine().describe_context(), offs); + LOG("%s:tms34061 shiftreg write (%04x)\n", space.machine().describe_context(), offs); memcpy(&m_vram[offs], m_shiftreg, (size_t)1 << m_rowshift); memset(&m_latchram[offs], m_latchdata, (size_t)1 << m_rowshift); @@ -457,7 +458,7 @@ void tms34061_device::write(address_space &space, int col, int row, int func, ui if (m_regs[TMS34061_CONTROL2] & 0x0040) offs |= (m_regs[TMS34061_CONTROL2] & 3) << 16; offs &= m_vrammask; - if (VERBOSE) logerror("%s:tms34061 shiftreg read (%04x)\n", space.machine().describe_context(), offs); + LOG("%s:tms34061 shiftreg read (%04x)\n", space.machine().describe_context(), offs); m_shiftreg = &m_vram[offs]; break; @@ -542,7 +543,7 @@ READ8_MEMBER( tms34061_device::latch_r ) WRITE8_MEMBER( tms34061_device::latch_w ) { - if (VERBOSE) logerror("tms34061_latch = %02X\n", data); + LOG("tms34061_latch = %02X\n", data); m_latchdata = data; } diff --git a/src/devices/video/tms34061.h b/src/devices/video/tms34061.h index c82bebd2db9..ab5aaa652fd 100644 --- a/src/devices/video/tms34061.h +++ b/src/devices/video/tms34061.h @@ -9,9 +9,10 @@ * * ****************************************************************************/ +#ifndef MAME_VIDEO_TMS34061_H +#define MAME_VIDEO_TMS34061_H -#ifndef __TMS34061_H__ -#define __TMS34061_H__ +#pragma once #define MCFG_TMS34061_ROWSHIFT(_shift) \ @@ -24,55 +25,28 @@ devcb = &tms34061_device::set_interrupt_callback(*device, DEVCB_##_devcb); -/* register constants */ -enum -{ - TMS34061_HORENDSYNC = 0, - TMS34061_HORENDBLNK, - TMS34061_HORSTARTBLNK, - TMS34061_HORTOTAL, - TMS34061_VERENDSYNC, - TMS34061_VERENDBLNK, - TMS34061_VERSTARTBLNK, - TMS34061_VERTOTAL, - TMS34061_DISPUPDATE, - TMS34061_DISPSTART, - TMS34061_VERINT, - TMS34061_CONTROL1, - TMS34061_CONTROL2, - TMS34061_STATUS, - TMS34061_XYOFFSET, - TMS34061_XYADDRESS, - TMS34061_DISPADDRESS, - TMS34061_VERCOUNTER, - TMS34061_REGCOUNT -}; - -/* display state structure */ -struct tms34061_display -{ - uint8_t blanked; /* true if blanked */ - uint8_t *vram; /* base of VRAM */ - uint8_t *latchram; /* base of latch RAM */ - uint16_t *regs; /* pointer to array of registers */ - offs_t dispstart; /* display start */ -}; - - - // ======================> tms34061_device -class tms34061_device : public device_t, - public device_video_interface +class tms34061_device : public device_t, public device_video_interface { public: + /* display state structure */ + struct tms34061_display + { + uint8_t blanked; /* true if blanked */ + uint8_t *vram; /* base of VRAM */ + uint8_t *latchram; /* base of latch RAM */ + uint16_t *regs; /* pointer to array of registers */ + offs_t dispstart; /* display start */ + }; + // construction/destruction tms34061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void set_rowshift(device_t &device, uint8_t rowshift) { downcast(device).m_rowshift = rowshift; } static void set_vram_size(device_t &device, uint32_t vramsize) { downcast(device).m_vramsize = vramsize; } - template static devcb_base &set_interrupt_callback(device_t &device, _Object object) { return downcast(device).m_interrupt_cb.set_callback(object); } + template static devcb_base &set_interrupt_callback(device_t &device, Object &&cb) { return downcast(device).m_interrupt_cb.set_callback(std::forward(cb)); } /* reads/writes to the 34061 */ uint8_t read(address_space &space, int col, int row, int func); @@ -85,7 +59,13 @@ public: /* video update handling */ void get_display_state(); - struct tms34061_display m_display; + bool blanked() const { return bool(m_display.blanked); } + uint8_t const &vram(unsigned row) const { return m_display.vram[row << m_rowshift]; } + uint16_t xyoffset() const { return m_display.regs[TMS34061_XYOFFSET]; } + uint16_t xyaddress() const { return m_display.regs[TMS34061_XYADDRESS]; } + + // TODO: encapsulate this properly + tms34061_display m_display; protected: // device-level overrides @@ -93,6 +73,30 @@ protected: virtual void device_reset() override; private: + /* register constants */ + enum + { + TMS34061_HORENDSYNC = 0, + TMS34061_HORENDBLNK, + TMS34061_HORSTARTBLNK, + TMS34061_HORTOTAL, + TMS34061_VERENDSYNC, + TMS34061_VERENDBLNK, + TMS34061_VERSTARTBLNK, + TMS34061_VERTOTAL, + TMS34061_DISPUPDATE, + TMS34061_DISPSTART, + TMS34061_VERINT, + TMS34061_CONTROL1, + TMS34061_CONTROL2, + TMS34061_STATUS, + TMS34061_XYOFFSET, + TMS34061_XYADDRESS, + TMS34061_DISPADDRESS, + TMS34061_VERCOUNTER, + TMS34061_REGCOUNT + }; + uint8_t m_rowshift; /* VRAM address is (row << rowshift) | col */ uint32_t m_vramsize; /* size of video RAM */ devcb_write_line m_interrupt_cb; /* interrupt gen callback */ @@ -107,7 +111,7 @@ private: uint8_t * m_shiftreg; emu_timer * m_timer; - void update_interrupts(void); + void update_interrupts(); TIMER_CALLBACK_MEMBER( interrupt ); void register_w(address_space &space, offs_t offset, uint8_t data); uint8_t register_r(address_space &space, offs_t offset); @@ -117,6 +121,6 @@ private: }; // device type definition -extern const device_type TMS34061; +DECLARE_DEVICE_TYPE(TMS34061, tms34061_device) -#endif +#endif // MAME_VIDEO_TMS34061_H diff --git a/src/devices/video/tms3556.cpp b/src/devices/video/tms3556.cpp index ff902edd80c..ce110948f3e 100644 --- a/src/devices/video/tms3556.cpp +++ b/src/devices/video/tms3556.cpp @@ -18,13 +18,33 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" + //************************************************************************** // MACROS / CONSTANTS //************************************************************************** -#define LOG 0 +#define VDP_POINTER m_control_regs[0] +#define VDP_COL m_control_regs[1] +#define VDP_ROW m_control_regs[2] +#define VDP_STAT m_control_regs[3] +#define VDP_CM1 m_control_regs[4] +#define VDP_CM2 m_control_regs[5] +#define VDP_CM3 m_control_regs[6] +#define VDP_CM4 m_control_regs[7] +#define VDP_BAMT m_address_regs[0] +#define VDP_BAMP m_address_regs[1] +#define VDP_BAPA m_address_regs[2] +#define VDP_BAGC0 m_address_regs[3] +#define VDP_BAGC1 m_address_regs[4] +#define VDP_BAGC2 m_address_regs[5] +#define VDP_BAGC3 m_address_regs[6] +#define VDP_BAMTF m_address_regs[7] + +ALLOW_SAVE_TYPE(tms3556_device::dma_mode_tt); @@ -33,7 +53,7 @@ //************************************************************************** // devices -const device_type TMS3556 = device_creator; +DEFINE_DEVICE_TYPE(TMS3556, tms3556_device, "tms3556", "Texas Instruments TMS3556 VDP") // default address map @@ -85,9 +105,10 @@ inline void tms3556_device::writebyte(offs_t address, uint8_t data) //------------------------------------------------- tms3556_device::tms3556_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TMS3556, "Texas Instruments VDP TMS3556", tag, owner, clock, "tms3556", __FILE__), + : device_t(mconfig, TMS3556, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, nullptr, *ADDRESS_MAP_NAME(tms3556)), + m_reg(0), m_reg2(0), m_reg_access_phase(0), m_row_col_written(0), m_bamp_written(0), @@ -118,11 +139,13 @@ void tms3556_device::device_start() // register for state saving save_item(NAME(m_control_regs)); save_item(NAME(m_address_regs)); + save_item(NAME(m_reg)); + save_item(NAME(m_reg2)); save_item(NAME(m_reg_access_phase)); save_item(NAME(m_row_col_written)); save_item(NAME(m_bamp_written)); save_item(NAME(m_colrow)); -// save_item(NAME(m_vdp_acmpxy_mode)); // FIXME : mame cannot save enum + save_item(NAME(m_vdp_acmpxy_mode)); save_item(NAME(m_vdp_acmpxy)); save_item(NAME(m_vdp_acmp)); save_item(NAME(m_scanline)); @@ -223,10 +246,10 @@ WRITE8_MEMBER( tms3556_device::vram_w ) READ8_MEMBER( tms3556_device::reg_r ) { - if (LOG) logerror("TMS3556 Reg Read: %06x\n", offset); + LOG("TMS3556 Reg Read: %06x\n", offset); int reply = 0; // FIXME : will send internal status (VBL, HBL...) - m_reg_access_phase=0; + m_reg_access_phase = 0; return reply; } @@ -236,74 +259,69 @@ READ8_MEMBER( tms3556_device::reg_r ) WRITE8_MEMBER( tms3556_device::reg_w ) { - static int reg2=0; // FIXME : this static makes that only one TMS3556 will be present in one system... - static int reg=0; - - if (LOG) logerror("TMS3556 Reg Write: %06x = %02x\n", offset, data); + LOG("TMS3556 Reg Write: %06x = %02x\n", offset, data); switch (m_reg_access_phase) { case 0: - reg=data&0x0F; - reg2=(data&0xF0)>>4; - if (reg!=0) + m_reg=data&0x0F; + m_reg2=(data&0xF0)>>4; + if (m_reg!=0) m_reg_access_phase=1; return; case 1: - if (reg<8) { - m_control_regs[reg]=data; - // leve un flag si le dernier registre ecrit est row ou col - if ((reg==2) || (reg==1)) { - m_colrow=(m_control_regs[2]<<8)|m_control_regs[1]; - m_row_col_written=true; - } - - if (reg2==0) { - m_reg_access_phase=0; - return; - } - else { - m_reg_access_phase=1; - reg=reg2; - reg2=0; - return; - } + if (m_reg<8) { + m_control_regs[m_reg]=data; + // leve un flag si le dernier registre ecrit est row ou col + if ((m_reg==2) || (m_reg==1)) { + m_colrow=(m_control_regs[2]<<8)|m_control_regs[1]; + m_row_col_written=true; + } + + if (m_reg2==0) { + m_reg_access_phase=0; + return; + } else { + m_reg_access_phase=1; + m_reg=m_reg2; + m_reg2=0; + return; + } } else { - m_address_regs[reg-8]=(m_control_regs[2]<<8)|m_control_regs[1]; - // cas speciaux de decalage pour les generateurs - if ((reg>=0xB) && (reg<=0xE)) { - m_address_regs[reg-8]+=2; - m_address_regs[reg-8]&=0xFFFF; - } else { - m_address_regs[reg-8]+=1; - m_address_regs[reg-8]&=0xFFFF; - } - if (reg==9) { - m_row_col_written=false; - m_bamp_written=true; - m_reg_access_phase=0; - return; - } else { - m_row_col_written=0; - m_bamp_written=false; - m_reg_access_phase=2;//??? - return; - } - logerror("VDP16[%d] = x%x",reg,m_address_regs[reg-8]); - if (reg2==0) { - m_reg_access_phase=0; - return; - } - else { - m_reg_access_phase=1; - reg=reg2; - reg2=0; - return; - } + m_address_regs[m_reg-8]=(m_control_regs[2]<<8)|m_control_regs[1]; + // cas speciaux de decalage pour les generateurs + if ((m_reg>=0xB) && (m_reg<=0xE)) { + m_address_regs[m_reg-8]+=2; + m_address_regs[m_reg-8]&=0xFFFF; + } else { + m_address_regs[m_reg-8]+=1; + m_address_regs[m_reg-8]&=0xFFFF; + } + if (m_reg==9) { + m_row_col_written=false; + m_bamp_written=true; + m_reg_access_phase=0; + return; + } else { + m_row_col_written=0; + m_bamp_written=false; + m_reg_access_phase=2;//??? + return; + } + logerror("VDP16[%d] = x%x",m_reg,m_address_regs[m_reg-8]); + if (m_reg2==0) { + m_reg_access_phase=0; + return; + } else { + m_reg_access_phase=1; + m_reg=m_reg2; + m_reg2=0; + return; + } } - case 2: - m_reg_access_phase=0; - return; + case 2: + m_reg_access_phase=0; + return; } } @@ -332,7 +350,7 @@ void tms3556_device::draw_line_empty(uint16_t *ln) { int i; - for (i = 0; i < TMS3556_TOTAL_WIDTH; i++) + for (i = 0; i < TOTAL_WIDTH; i++) #if TMS3556_DOUBLE_WIDTH *ln++ = m_bg_color; #endif @@ -359,7 +377,7 @@ void tms3556_device::draw_line_text_common(uint16_t *ln) for (i = 0; i < 4; i++) patterntbl_base[i] = m_address_regs[i + 3]; - for (xx = 0; xx < TMS3556_LEFT_BORDER; xx++) + for (xx = 0; xx < LEFT_BORDER; xx++) #if TMS3556_DOUBLE_WIDTH *ln++ = m_bg_color; #endif @@ -443,7 +461,7 @@ void tms3556_device::draw_line_text_common(uint16_t *ln) name_offset += 2; } - for (xx = 0; xx < TMS3556_RIGHT_BORDER; xx++) + for (xx = 0; xx < RIGHT_BORDER; xx++) #if TMS3556_DOUBLE_WIDTH *ln++ = m_bg_color; #endif @@ -467,7 +485,7 @@ void tms3556_device::draw_line_bitmap_common(uint16_t *ln) nametbl_base = m_address_regs[2]; - for (xx = 0; xx < TMS3556_LEFT_BORDER; xx++) + for (xx = 0; xx < LEFT_BORDER; xx++) #if TMS3556_DOUBLE_WIDTH *ln++ = m_bg_color; #endif @@ -492,7 +510,7 @@ void tms3556_device::draw_line_bitmap_common(uint16_t *ln) m_name_offset += 3; } - for (xx = 0; xx < TMS3556_RIGHT_BORDER; xx++) + for (xx = 0; xx < RIGHT_BORDER; xx++) #if TMS3556_DOUBLE_WIDTH *ln++ = m_bg_color; #endif @@ -575,7 +593,7 @@ void tms3556_device::draw_line(bitmap_ind16 &bmp, int line) double_lines = 1; } - if ((line < TMS3556_TOP_BORDER) || (line >= (TMS3556_TOP_BORDER + 250))) + if ((line < TOP_BORDER) || (line >= (TOP_BORDER + 250))) { /* draw top and bottom borders */ draw_line_empty(ln); @@ -586,16 +604,16 @@ void tms3556_device::draw_line(bitmap_ind16 &bmp, int line) /* draw useful area */ switch (m_control_regs[6] >> 6) { - case TMS3556_MODE_OFF: + case MODE_OFF: draw_line_empty(ln); break; - case TMS3556_MODE_TEXT: + case MODE_TEXT: draw_line_text(ln); break; - case TMS3556_MODE_BITMAP: + case MODE_BITMAP: draw_line_bitmap(ln); break; - case TMS3556_MODE_MIXED: + case MODE_MIXED: draw_line_mixed(ln); break; } @@ -604,8 +622,8 @@ void tms3556_device::draw_line(bitmap_ind16 &bmp, int line) if (double_lines) { // TODO: this overlaps in exeltel - use memmove for now - //memcpy(ln2, ln, TMS3556_TOTAL_WIDTH * (TMS3556_DOUBLE_WIDTH ? 2 : 1)); - memmove(ln2, ln, TMS3556_TOTAL_WIDTH * (TMS3556_DOUBLE_WIDTH ? 2 : 1)); + //memcpy(ln2, ln, TOTAL_WIDTH * (TMS3556_DOUBLE_WIDTH ? 2 : 1)); + memmove(ln2, ln, TOTAL_WIDTH * (TMS3556_DOUBLE_WIDTH ? 2 : 1)); } } @@ -651,7 +669,7 @@ void tms3556_device::interrupt(running_machine &machine) interrupt_start_vblank(); /* render the current line */ - if ((m_scanline >= 0) && (m_scanline < TMS3556_TOTAL_HEIGHT)) + if ((m_scanline >= 0) && (m_scanline < TOTAL_HEIGHT)) { //if (!video_skip_this_frame()) draw_line(m_bitmap, m_scanline); diff --git a/src/devices/video/tms3556.h b/src/devices/video/tms3556.h index 7568f6443b9..8788225ec62 100644 --- a/src/devices/video/tms3556.h +++ b/src/devices/video/tms3556.h @@ -6,48 +6,19 @@ ***************************************************************************/ +#ifndef MAME_VIDEO_TMS3556_H +#define MAME_VIDEO_TMS3556_H #pragma once -#ifndef __TMS3556_H__ -#define __TMS3556_H__ ///************************************************************************* // MACROS / CONSTANTS ///************************************************************************* -#define TMS3556_TOP_BORDER 1 -#define TMS3556_BOTTOM_BORDER 1 -#define TMS3556_LEFT_BORDER 8 -#define TMS3556_RIGHT_BORDER 8 -#define TMS3556_TOTAL_WIDTH (320 + TMS3556_LEFT_BORDER + TMS3556_RIGHT_BORDER) -#define TMS3556_TOTAL_HEIGHT (250 + TMS3556_TOP_BORDER + TMS3556_BOTTOM_BORDER) - /* if DOUBLE_WIDTH set, the horizontal resolution is doubled */ #define TMS3556_DOUBLE_WIDTH 0 -#define TMS3556_MODE_OFF 0 -#define TMS3556_MODE_TEXT 1 -#define TMS3556_MODE_BITMAP 2 -#define TMS3556_MODE_MIXED 3 - -#define VDP_POINTER m_control_regs[0] -#define VDP_COL m_control_regs[1] -#define VDP_ROW m_control_regs[2] -#define VDP_STAT m_control_regs[3] -#define VDP_CM1 m_control_regs[4] -#define VDP_CM2 m_control_regs[5] -#define VDP_CM3 m_control_regs[6] -#define VDP_CM4 m_control_regs[7] -#define VDP_BAMT m_address_regs[0] -#define VDP_BAMP m_address_regs[1] -#define VDP_BAPA m_address_regs[2] -#define VDP_BAGC0 m_address_regs[3] -#define VDP_BAGC1 m_address_regs[4] -#define VDP_BAGC2 m_address_regs[5] -#define VDP_BAGC3 m_address_regs[6] -#define VDP_BAMTF m_address_regs[7] - ///************************************************************************* // INTERFACE CONFIGURATION MACROS ///************************************************************************* @@ -59,8 +30,6 @@ // TYPE DEFINITIONS ///************************************************************************* -typedef enum { dma_read, dma_write } dma_mode_tt; - // ======================> tms3556_device @@ -68,6 +37,13 @@ class tms3556_device : public device_t, public device_memory_interface { public: + static constexpr unsigned TOP_BORDER = 1; + static constexpr unsigned BOTTOM_BORDER = 1; + static constexpr unsigned LEFT_BORDER = 8; + static constexpr unsigned RIGHT_BORDER = 8; + static constexpr unsigned TOTAL_WIDTH = 320 + LEFT_BORDER + RIGHT_BORDER; + static constexpr unsigned TOTAL_HEIGHT = 250 + TOP_BORDER + BOTTOM_BORDER; + // construction/destruction tms3556_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -86,7 +62,7 @@ protected: virtual void device_start() override; // device_config_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; // address space configurations const address_space_config m_space_config; @@ -104,11 +80,19 @@ protected: void interrupt_start_vblank(void); private: + enum dma_mode_tt { dma_read, dma_write }; + + static constexpr uint8_t MODE_OFF = 0; + static constexpr uint8_t MODE_TEXT = 1; + static constexpr uint8_t MODE_BITMAP = 2; + static constexpr uint8_t MODE_MIXED = 3; + // registers uint8_t m_control_regs[8]; uint16_t m_address_regs[8]; // register interface + int m_reg, m_reg2; int m_reg_access_phase; int m_row_col_written; @@ -134,6 +118,6 @@ private: // device type definition extern const device_type TMS3556; +DECLARE_DEVICE_TYPE(TMS3556, tms3556_device) - -#endif +#endif // MAME_VIDEO_TMS3556_H diff --git a/src/devices/video/tms9927.cpp b/src/devices/video/tms9927.cpp index c224b0965f4..2908fb01d29 100644 --- a/src/devices/video/tms9927.cpp +++ b/src/devices/video/tms9927.cpp @@ -12,8 +12,8 @@ #include "screen.h" -static const uint8_t chars_per_row_value[8] = { 20, 32, 40, 64, 72, 80, 96, 132 }; -static const uint8_t skew_bits_value[4] = { 0, 1, 2, 2 }; +static constexpr uint8_t chars_per_row_value[8] = { 20, 32, 40, 64, 72, 80, 96, 132 }; +static constexpr uint8_t skew_bits_value[4] = { 0, 1, 2, 2 }; #define HCOUNT (m_reg[0] + 1) @@ -31,19 +31,18 @@ static const uint8_t skew_bits_value[4] = { 0, 1, 2, 2 }; #define CURSOR_ROW_ADDRESS (m_reg[8] & 0x3f) -const device_type TMS9927 = device_creator; -const device_type CRT5027 = device_creator; -const device_type CRT5037 = device_creator; -const device_type CRT5057 = device_creator; +DEFINE_DEVICE_TYPE(TMS9927, tms9927_device, "tms9927", "TMS9927 VTC") +DEFINE_DEVICE_TYPE(CRT5027, crt5027_device, "crt5027", "CRT5027") +DEFINE_DEVICE_TYPE(CRT5037, crt5037_device, "crt5037", "CRT5037") +DEFINE_DEVICE_TYPE(CRT5057, crt5057_device, "crt5057", "CRT5057") tms9927_device::tms9927_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9927_device(mconfig, TMS9927, "TMS9927 VTC", tag, owner, clock, "tms9927", __FILE__) + : tms9927_device(mconfig, TMS9927, tag, owner, clock) { - memset(m_reg, 0x00, sizeof(m_reg)); } -tms9927_device::tms9927_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +tms9927_device::tms9927_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , device_video_interface(mconfig, *this) , m_write_vsyn(*this) , m_hpixels_per_column(0) @@ -54,21 +53,21 @@ tms9927_device::tms9927_device(const machine_config &mconfig, device_type type, , m_selfload(*this, finder_base::DUMMY_TAG) , m_reset(0) { - memset(m_reg, 0x00, sizeof(m_reg)); + std::fill(std::begin(m_reg), std::end(m_reg), 0x00); } crt5027_device::crt5027_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9927_device(mconfig, CRT5027, "CRT5027", tag, owner, clock, "crt5027", __FILE__) + : tms9927_device(mconfig, CRT5027, tag, owner, clock) { } crt5037_device::crt5037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9927_device(mconfig, CRT5037, "CRT5037", tag, owner, clock, "crt5037", __FILE__) + : tms9927_device(mconfig, CRT5037, tag, owner, clock) { } crt5057_device::crt5057_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9927_device(mconfig, CRT5057, "CRT5057", tag, owner, clock, "crt5057", __FILE__) + : tms9927_device(mconfig, CRT5057, tag, owner, clock) { } diff --git a/src/devices/video/tms9927.h b/src/devices/video/tms9927.h index cd4057d67f9..cc7caaafe6b 100644 --- a/src/devices/video/tms9927.h +++ b/src/devices/video/tms9927.h @@ -6,8 +6,8 @@ **********************************************************************/ -#ifndef __TMS9927__ -#define __TMS9927__ +#ifndef MAME_VIDEO_TMS9927_H +#define MAME_VIDEO_TMS9927_H #define MCFG_TMS9927_VSYN_CALLBACK(_write) \ @@ -22,24 +22,21 @@ #define MCFG_TMS9927_OVERSCAN(_left, _right, _top, _bottom) \ tms9927_device::set_overscan(*device, _left, _right, _top, _bottom); -class tms9927_device : public device_t, - public device_video_interface +class tms9927_device : public device_t, public device_video_interface { public: tms9927_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - tms9927_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - ~tms9927_device() {} - template static devcb_base &set_vsyn_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_vsyn.set_callback(object); } + template static devcb_base &set_vsyn_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_vsyn.set_callback(std::forward(cb)); } static void set_char_width(device_t &device, int pixels) { downcast(device).m_hpixels_per_column = pixels; } static void set_region_tag(device_t &device, const char *tag) { downcast(device).m_selfload.set_tag(tag); } static void set_overscan(device_t &device, int left, int right, int top, int bottom) { - tms9927_device &dev = downcast(device); - dev.m_overscan_left = left; - dev.m_overscan_right = right; - dev.m_overscan_top = top; - dev.m_overscan_bottom = bottom; + tms9927_device &dev = downcast(device); + dev.m_overscan_left = left; + dev.m_overscan_right = right; + dev.m_overscan_top = top; + dev.m_overscan_bottom = bottom; } DECLARE_WRITE8_MEMBER(write); @@ -50,6 +47,8 @@ public: int cursor_bounds(rectangle &bounds); protected: + tms9927_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_stop() override; @@ -87,13 +86,11 @@ private: uint16_t m_total_hpix, m_total_vpix; uint16_t m_visible_hpix, m_visible_vpix; - int m_vsyn; emu_timer *m_vsync_timer; }; -extern const device_type TMS9927; class crt5027_device : public tms9927_device { @@ -101,7 +98,6 @@ public: crt5027_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; -extern const device_type CRT5027; class crt5037_device : public tms9927_device { @@ -109,7 +105,6 @@ public: crt5037_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; -extern const device_type CRT5037; class crt5057_device : public tms9927_device { @@ -117,7 +112,10 @@ public: crt5057_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; -extern const device_type CRT5057; +DECLARE_DEVICE_TYPE(TMS9927, tms9927_device) +DECLARE_DEVICE_TYPE(CRT5027, crt5027_device) +DECLARE_DEVICE_TYPE(CRT5037, crt5037_device) +DECLARE_DEVICE_TYPE(CRT5057, crt5057_device) -#endif +#endif // MAME_VIDEO_TMS9927_H diff --git a/src/devices/video/tms9928a.cpp b/src/devices/video/tms9928a.cpp index 1c787dbf126..a225d0db181 100644 --- a/src/devices/video/tms9928a.cpp +++ b/src/devices/video/tms9928a.cpp @@ -27,14 +27,14 @@ #include "tms9928a.h" -const device_type TMS9928A = device_creator; -const device_type TMS9918 = device_creator; -const device_type TMS9918A = device_creator; -const device_type TMS9118 = device_creator; -const device_type TMS9128 = device_creator; -const device_type TMS9929 = device_creator; -const device_type TMS9929A = device_creator; -const device_type TMS9129 = device_creator; +DEFINE_DEVICE_TYPE(TMS9928A, tms9928a_device, "tms9928a", "TMS9928A VDP") +DEFINE_DEVICE_TYPE(TMS9918, tms9918_device, "tms9918", "TMS9918 VDP") +DEFINE_DEVICE_TYPE(TMS9918A, tms9918a_device, "tms9918a", "TMS9918A VDP") +DEFINE_DEVICE_TYPE(TMS9118, tms9118_device, "tms9118", "TMS9118 VDP") +DEFINE_DEVICE_TYPE(TMS9128, tms9128_device, "tms9128", "TMS9128 VDP") +DEFINE_DEVICE_TYPE(TMS9929, tms9929_device, "tms9929", "TMS9929 VDP") +DEFINE_DEVICE_TYPE(TMS9929A, tms9929a_device, "tms9929a", "TMS9929A VDP") +DEFINE_DEVICE_TYPE(TMS9129, tms9129_device, "tms9129", "TMS9129 VDP") // ======= Debugging ========= @@ -54,63 +54,61 @@ static ADDRESS_MAP_START(memmap, AS_DATA, 8, tms9928a_device) AM_RANGE(0x0000, 0x3fff) AM_RAM ADDRESS_MAP_END -tms9928a_device::tms9928a_device( const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, bool is_50hz, bool is_reva, bool is_99, const char *shortname, const char *source) - : device_t( mconfig, type, name, tag, owner, clock, shortname, source), - device_memory_interface(mconfig, *this), - device_video_interface(mconfig, *this), - m_out_int_line_cb(*this), - m_out_gromclk_cb(*this), - m_space_config("vram",ENDIANNESS_BIG, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(memmap)) +tms9928a_device::tms9928a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_50hz, bool is_reva, bool is_99) + : device_t(mconfig, type, tag, owner, clock) + , device_memory_interface(mconfig, *this) + , device_video_interface(mconfig, *this) + , m_vram_size(0) + , m_out_int_line_cb(*this) + , m_out_gromclk_cb(*this) + , m_50hz(is_50hz) + , m_reva(is_reva) + , m_99(is_99) + , m_space_config("vram", ENDIANNESS_BIG, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(memmap)) { - m_50hz = is_50hz; - m_reva = is_reva; - m_99 = is_99; // static_set_addrmap(*this, AS_DATA, ADDRESS_MAP_NAME(memmap)); } tms9928a_device::tms9928a_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock ) - : device_t( mconfig, TMS9928A, "TMS9928A VDP", tag, owner, clock, "tms9928a", __FILE__), - device_memory_interface(mconfig, *this), - device_video_interface(mconfig, *this), - m_vram_size(0), - m_out_int_line_cb(*this), - m_out_gromclk_cb(*this), - m_space_config("vram",ENDIANNESS_BIG, 8, 14, 0, nullptr, *ADDRESS_MAP_NAME(memmap)) + : tms9928a_device(mconfig, TMS9928A, tag, owner, clock, false, true, true) { - m_50hz = false; - m_reva = true; - m_99 = true; -// static_set_addrmap(*this, AS_DATA, ADDRESS_MAP_NAME(memmap)); } tms9129_device::tms9129_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9928a_device( mconfig, TMS9129, "TMS9129", tag, owner, clock, true, true, false, "tms9129", __FILE__) -{ } + : tms9928a_device(mconfig, TMS9129, tag, owner, clock, true, true, false) +{ +} tms9918_device::tms9918_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9928a_device( mconfig, TMS9918, "TMS9918", tag, owner, clock, false, false, true, "tms9918", __FILE__) -{ } + : tms9928a_device(mconfig, TMS9918, tag, owner, clock, false, false, true) +{ +} tms9918a_device::tms9918a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9928a_device( mconfig, TMS9918A, "TMS9918A", tag, owner, clock, false, true, true, "tms9918a", __FILE__) -{ } + : tms9928a_device(mconfig, TMS9918A, tag, owner, clock, false, true, true) +{ +} tms9118_device::tms9118_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9928a_device( mconfig, TMS9118, "TMS9118 VDP", tag, owner, clock, false, true, false, "tms9118", __FILE__) -{ } + : tms9928a_device(mconfig, TMS9118, tag, owner, clock, false, true, false) +{ +} tms9128_device::tms9128_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9928a_device( mconfig, TMS9128, "TMS9128 VDP", tag, owner, clock, false, true, false, "tms9128", __FILE__) -{ } + : tms9928a_device(mconfig, TMS9128, tag, owner, clock, false, true, false) +{ +} tms9929_device::tms9929_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9928a_device( mconfig, TMS9929, "TMS9929", tag, owner, clock, true, false, true, "tms9929", __FILE__) -{ } + : tms9928a_device(mconfig, TMS9929, tag, owner, clock, true, false, true) +{ +} tms9929a_device::tms9929a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tms9928a_device( mconfig, TMS9929A, "TMS9929A", tag, owner, clock, true, true, true, "tms9929a", __FILE__) -{ } + : tms9928a_device(mconfig, TMS9929A, tag, owner, clock, true, true, true) +{ +} READ8_MEMBER( tms9928a_device::read ) { @@ -342,7 +340,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par if ( y < 0 || y >= 192 || ! (m_Regs[1] & 0x40) ) { /* Draw backdrop colour */ - for ( int i = 0; i < TMS9928A_TOTAL_HORZ; i++ ) + for ( int i = 0; i < TOTAL_HORZ; i++ ) p[i] = m_palette[BackColour]; /* vblank is set at the last cycle of the first inactive line */ @@ -357,7 +355,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par /* Draw regular line */ /* Left border */ - for ( int i = 0; i < TMS9928A_HORZ_DISPLAY_START; i++ ) + for ( int i = 0; i < HORZ_DISPLAY_START; i++ ) p[i] = m_palette[BackColour]; /* Active display */ @@ -369,7 +367,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par { uint16_t addr = m_nametbl + ( ( y & 0xF8 ) << 2 ); - for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 256; x+= 8, addr++ ) + for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 256; x+= 8, addr++ ) { uint8_t charcode = m_vram_space->read_byte( addr ); uint8_t pattern = m_vram_space->read_byte( m_pattern + ( charcode << 3 ) + ( y & 7 ) ); @@ -391,10 +389,10 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par rgb_t bg = m_palette[BackColour]; /* Extra 6 pixels left border */ - for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 6; x++ ) + for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 6; x++ ) p[x] = bg; - for ( int x = TMS9928A_HORZ_DISPLAY_START + 6; x < TMS9928A_HORZ_DISPLAY_START + 246; x+= 6, addr++ ) + for ( int x = HORZ_DISPLAY_START + 6; x < HORZ_DISPLAY_START + 246; x+= 6, addr++ ) { uint16_t charcode = m_vram_space->read_byte( addr ); uint8_t pattern = m_vram_space->read_byte( m_pattern + ( charcode << 3 ) + ( y & 7 ) ); @@ -404,7 +402,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par } /* Extra 10 pixels right border */ - for ( int x = TMS9928A_HORZ_DISPLAY_START + 246; x < TMS9928A_HORZ_DISPLAY_START + 256; x++ ) + for ( int x = HORZ_DISPLAY_START + 246; x < HORZ_DISPLAY_START + 256; x++ ) p[x] = bg; } break; @@ -414,7 +412,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par { uint16_t addr = m_nametbl + ( ( y >> 3 ) * 32 ); - for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 256; x+= 8, addr++ ) + for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 256; x+= 8, addr++ ) { uint16_t charcode = m_vram_space->read_byte( addr ) + ( ( y >> 6 ) << 8 ); uint8_t pattern = m_vram_space->read_byte( m_pattern + ( ( charcode & m_patternmask ) << 3 ) + ( y & 7 ) ); @@ -436,10 +434,10 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par rgb_t bg = m_palette[BackColour]; /* Extra 6 pixels left border */ - for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 6; x++ ) + for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 6; x++ ) p[x] = bg; - for ( int x = TMS9928A_HORZ_DISPLAY_START + 6; x < TMS9928A_HORZ_DISPLAY_START + 246; x+= 6, addr++ ) + for ( int x = HORZ_DISPLAY_START + 6; x < HORZ_DISPLAY_START + 246; x+= 6, addr++ ) { uint16_t charcode = ( m_vram_space->read_byte( addr ) + ( ( y >> 6 ) << 8 ) ) & m_patternmask; uint8_t pattern = m_vram_space->read_byte( m_pattern + ( charcode << 3 ) + ( y & 7 ) ); @@ -449,7 +447,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par } /* Extra 10 pixels right border */ - for ( int x = TMS9928A_HORZ_DISPLAY_START + 246; x < TMS9928A_HORZ_DISPLAY_START + 256; x++ ) + for ( int x = HORZ_DISPLAY_START + 246; x < HORZ_DISPLAY_START + 256; x++ ) p[x] = bg; } break; @@ -459,7 +457,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par { uint16_t addr = m_nametbl + ( ( y >> 3 ) * 32 ); - for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 256; x+= 8, addr++ ) + for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 256; x+= 8, addr++ ) { uint8_t charcode = m_vram_space->read_byte( addr ); uint8_t colour = m_vram_space->read_byte( m_pattern + ( charcode << 3 ) + ( ( y >> 2 ) & 7 ) ); @@ -479,17 +477,17 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par rgb_t bg = m_palette[BackColour]; /* Extra 6 pixels left border */ - for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 6; x++ ) + for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 6; x++ ) p[x] = bg; - for ( int x = TMS9928A_HORZ_DISPLAY_START + 6; x < TMS9928A_HORZ_DISPLAY_START + 246; x+= 6 ) + for ( int x = HORZ_DISPLAY_START + 6; x < HORZ_DISPLAY_START + 246; x+= 6 ) { p[x+0] = p[x+1] = p[x+2] = p[x+3] = fg; p[x+4] = p[x+5] = bg; } /* Extra 10 pixels right border */ - for ( int x = TMS9928A_HORZ_DISPLAY_START + 246; x < TMS9928A_HORZ_DISPLAY_START + 256; x++ ) + for ( int x = HORZ_DISPLAY_START + 246; x < HORZ_DISPLAY_START + 256; x++ ) p[x] = bg; } break; @@ -499,7 +497,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par { uint16_t addr = m_nametbl + ( ( y >> 3 ) * 32 ); - for ( int x = TMS9928A_HORZ_DISPLAY_START; x < TMS9928A_HORZ_DISPLAY_START + 256; x+= 8, addr++ ) + for ( int x = HORZ_DISPLAY_START; x < HORZ_DISPLAY_START + 256; x+= 8, addr++ ) { uint8_t charcode = m_vram_space->read_byte( addr ); uint8_t colour = m_vram_space->read_byte( m_pattern + ( ( ( charcode + ( ( y >> 2 ) & 7 ) + ( ( y >> 6 ) << 8 ) ) & m_patternmask ) << 3 ) ); @@ -597,7 +595,7 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par if ( ! ( spr_drawn[ colission_index ] & 0x02 ) ) { spr_drawn[ colission_index ] |= 0x02; - p[ TMS9928A_HORZ_DISPLAY_START + colission_index - 32 ] = m_palette[sprcol]; + p[ HORZ_DISPLAY_START + colission_index - 32 ] = m_palette[sprcol]; } } } @@ -621,12 +619,12 @@ void tms9928a_device::device_timer(emu_timer &timer, device_timer_id id, int par } /* Right border */ - for ( int i = TMS9928A_HORZ_DISPLAY_START + 256; i < TMS9928A_TOTAL_HORZ; i++ ) + for ( int i = HORZ_DISPLAY_START + 256; i < TOTAL_HORZ; i++ ) p[i] = m_palette[BackColour]; } /* Schedule next callback */ - m_line_timer->adjust( m_screen->time_until_pos( ( raw_vpos + 1 ) % m_screen->height() , TMS9928A_HORZ_DISPLAY_START ) ); + m_line_timer->adjust( m_screen->time_until_pos( ( raw_vpos + 1 ) % m_screen->height() , HORZ_DISPLAY_START ) ); } @@ -666,7 +664,7 @@ void tms9928a_device::set_palette() E Gray 0.80 0.47 0.47 0.80 0.80 0.80 204 204 204 F White 1.00 0.47 0.47 1.00 1.00 1.00 255 255 255 */ - static const rgb_t tms9928a_palette[TMS9928A_PALETTE_SIZE] = + static const rgb_t tms9928a_palette[PALETTE_SIZE] = { rgb_t::black(), rgb_t::black(), @@ -687,7 +685,7 @@ void tms9928a_device::set_palette() }; /* copy default palette into working palette */ - for (int i = 0; i < TMS9928A_PALETTE_SIZE; i++) + for (int i = 0; i < PALETTE_SIZE; i++) { m_palette[i] = tms9928a_palette[i]; } @@ -695,8 +693,8 @@ void tms9928a_device::set_palette() void tms9928a_device::device_start() { - m_top_border = m_50hz ? TMS9928A_VERT_DISPLAY_START_PAL : TMS9928A_VERT_DISPLAY_START_NTSC; - m_vertical_size = m_50hz ? TMS9928A_TOTAL_VERT_PAL : TMS9928A_TOTAL_VERT_NTSC; + m_top_border = m_50hz ? VERT_DISPLAY_START_PAL : VERT_DISPLAY_START_NTSC; + m_vertical_size = m_50hz ? TOTAL_VERT_PAL : TOTAL_VERT_NTSC; m_out_int_line_cb.resolve(); m_out_gromclk_cb.resolve(); @@ -705,7 +703,7 @@ void tms9928a_device::device_start() m_vram_space = &space(AS_DATA); /* back bitmap */ - m_tmpbmp.allocate(TMS9928A_TOTAL_HORZ, TMS9928A_TOTAL_VERT_PAL); + m_tmpbmp.allocate(TOTAL_HORZ, TOTAL_VERT_PAL); m_line_timer = timer_alloc(TIMER_LINE); m_gromclk_timer = timer_alloc(GROMCLK); @@ -759,7 +757,7 @@ void tms9928a_device::device_reset() m_latch = 0; m_mode = 0; - m_line_timer->adjust( m_screen->time_until_pos( 0, TMS9928A_HORZ_DISPLAY_START ) ); + m_line_timer->adjust( m_screen->time_until_pos( 0, HORZ_DISPLAY_START ) ); // TODO: Check clock freq settings in all drivers if (!m_out_gromclk_cb.isnull() && m_99) m_gromclk_timer->adjust(attotime::zero, 0, attotime::from_hz(clock()/12)); diff --git a/src/devices/video/tms9928a.h b/src/devices/video/tms9928a.h index 03389ac14ad..7db5991b5a5 100644 --- a/src/devices/video/tms9928a.h +++ b/src/devices/video/tms9928a.h @@ -23,26 +23,14 @@ */ -#ifndef MAME_DEVICES_VIDEO_TMS9928A_H -#define MAME_DEVICES_VIDEO_TMS9928A_H +#ifndef MAME_VIDEO_TMS9928A_H +#define MAME_VIDEO_TMS9928A_H #pragma once #include "screen.h" -#define TMS9928A_PALETTE_SIZE 16 - - -/* Some defines used in defining the screens */ -#define TMS9928A_TOTAL_HORZ 342 -#define TMS9928A_TOTAL_VERT_NTSC 262 -#define TMS9928A_TOTAL_VERT_PAL 313 - -#define TMS9928A_HORZ_DISPLAY_START (2 + 14 + 8 + 13) -#define TMS9928A_VERT_DISPLAY_START_PAL (13 + 51) -#define TMS9928A_VERT_DISPLAY_START_NTSC (13 + 27) - // MCFG_DEVICE_ADD(_tag, _variant, XTAL_10_738635MHz / 2 ) #define MCFG_TMS9928A_VRAM_SIZE(_size) \ @@ -60,25 +48,25 @@ #define MCFG_TMS9928A_SCREEN_ADD_NTSC(_screen_tag) \ MCFG_VIDEO_SET_SCREEN(_screen_tag) \ MCFG_SCREEN_ADD( _screen_tag, RASTER ) \ - MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, TMS9928A_TOTAL_HORZ, TMS9928A_HORZ_DISPLAY_START-12, TMS9928A_HORZ_DISPLAY_START + 256 + 12, \ - TMS9928A_TOTAL_VERT_NTSC, TMS9928A_VERT_DISPLAY_START_NTSC - 12, TMS9928A_VERT_DISPLAY_START_NTSC + 192 + 12 ) + MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, tms9928a_device::TOTAL_HORZ, tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ + tms9928a_device::TOTAL_VERT_NTSC, tms9928a_device::VERT_DISPLAY_START_NTSC - 12, tms9928a_device::VERT_DISPLAY_START_NTSC + 192 + 12 ) #define MCFG_TMS9928A_SCREEN_ADD_PAL(_screen_tag) \ MCFG_VIDEO_SET_SCREEN(_screen_tag) \ MCFG_SCREEN_ADD(_screen_tag, RASTER ) \ - MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, TMS9928A_TOTAL_HORZ, TMS9928A_HORZ_DISPLAY_START-12, TMS9928A_HORZ_DISPLAY_START + 256 + 12, \ - TMS9928A_TOTAL_VERT_PAL, TMS9928A_VERT_DISPLAY_START_PAL - 12, TMS9928A_VERT_DISPLAY_START_PAL + 192 + 12 ) + MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, tms9928a_device::TOTAL_HORZ, tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ + tms9928a_device::TOTAL_VERT_PAL, tms9928a_device::VERT_DISPLAY_START_PAL - 12, tms9928a_device::VERT_DISPLAY_START_PAL + 192 + 12 ) -extern const device_type TMS9918; -extern const device_type TMS9918A; -extern const device_type TMS9118; -extern const device_type TMS9928A; -extern const device_type TMS9128; -extern const device_type TMS9929; -extern const device_type TMS9929A; -extern const device_type TMS9129; +DECLARE_DEVICE_TYPE(TMS9918, tms9918_device) +DECLARE_DEVICE_TYPE(TMS9918A, tms9918a_device) +DECLARE_DEVICE_TYPE(TMS9118, tms9118_device) +DECLARE_DEVICE_TYPE(TMS9928A, tms9928a_device) +DECLARE_DEVICE_TYPE(TMS9128, tms9128_device) +DECLARE_DEVICE_TYPE(TMS9929, tms9929_device) +DECLARE_DEVICE_TYPE(TMS9929A, tms9929a_device) +DECLARE_DEVICE_TYPE(TMS9129, tms9129_device) class tms9928a_device : public device_t, @@ -86,13 +74,23 @@ class tms9928a_device : public device_t, public device_video_interface { public: + static constexpr unsigned PALETTE_SIZE = 16; + + /* Some defines used in defining the screens */ + static constexpr unsigned TOTAL_HORZ = 342; + static constexpr unsigned TOTAL_VERT_NTSC = 262; + static constexpr unsigned TOTAL_VERT_PAL = 313; + + static constexpr unsigned HORZ_DISPLAY_START = 2 + 14 + 8 + 13; + static constexpr unsigned VERT_DISPLAY_START_PAL = 13 + 51; + static constexpr unsigned VERT_DISPLAY_START_NTSC = 13 + 27; + // construction/destruction tms9928a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - tms9928a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, bool is_50hz, bool is_reva, bool is_99, const char *shortname, const char *source); static void set_vram_size(device_t &device, int vram_size) { downcast(device).m_vram_size = vram_size; } - template static devcb_base &set_out_int_line_callback(device_t &device, _Object object) { return downcast(device).m_out_int_line_cb.set_callback(object); } - template static devcb_base &set_out_gromclk_callback(device_t &device, _Object object) { return downcast(device).m_out_gromclk_cb.set_callback(object); } + template static devcb_base &set_out_int_line_callback(device_t &device, Object &&cb) { return downcast(device).m_out_int_line_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_gromclk_callback(device_t &device, Object &&cb) { return downcast(device).m_out_gromclk_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -110,6 +108,8 @@ public: void reset_line(int state) { if (state==ASSERT_LINE) device_reset(); } protected: + tms9928a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_50hz, bool is_reva, bool is_99); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -147,9 +147,9 @@ private: uint16_t m_spritepattern; int m_colourmask; int m_patternmask; - bool m_50hz; - bool m_reva; - bool m_99; + const bool m_50hz; + const bool m_reva; + const bool m_99; rgb_t m_palette[16]; /* memory */ @@ -216,4 +216,4 @@ public: }; -#endif // MAME_DEVICES_VIDEO_TMS9928A_H +#endif // MAME_VIDEO_TMS9928A_H diff --git a/src/devices/video/upd3301.cpp b/src/devices/video/upd3301.cpp index 8b6dce81ffa..424ea81cee8 100644 --- a/src/devices/video/upd3301.cpp +++ b/src/devices/video/upd3301.cpp @@ -24,15 +24,15 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" + //************************************************************************** // MACROS / CONSTANTS //************************************************************************** -#define LOG 0 - - #define COMMAND_MASK 0xe0 #define COMMAND_RESET 0x00 #define COMMAND_START_DISPLAY 0x20 @@ -65,7 +65,7 @@ enum // DEVICE DEFINITIONS //************************************************************************** -const device_type UPD3301 = device_creator; +DEFINE_DEVICE_TYPE(UPD3301, upd3301_device, "upd3301", "NEC uPD3301") @@ -78,7 +78,7 @@ const device_type UPD3301 = device_creator; //------------------------------------------------- upd3301_device::upd3301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, UPD3301, "UPD3301", tag, owner, clock, "upd3301", __FILE__), + device_t(mconfig, UPD3301, tag, owner, clock), device_video_interface(mconfig, *this), m_write_int(*this), m_write_drq(*this), @@ -192,7 +192,7 @@ void upd3301_device::device_timer(emu_timer &timer, device_timer_id id, int para switch (id) { case TIMER_HRTC: - if (LOG) logerror("UPD3301 '%s' HRTC: %u\n", tag(), param); + LOG("UPD3301 HRTC: %u\n", param); m_write_hrtc(param); m_hrtc = param; @@ -201,7 +201,7 @@ void upd3301_device::device_timer(emu_timer &timer, device_timer_id id, int para break; case TIMER_VRTC: - if (LOG) logerror("UPD3301 '%s' VRTC: %u\n", tag(), param); + LOG("UPD3301 VRTC: %u\n", param); m_write_vrtc(param); m_vrtc = param; @@ -261,31 +261,31 @@ WRITE8_MEMBER( upd3301_device::write ) case 0: m_dma_mode = BIT(data, 7); m_h = (data & 0x7f) + 2; - if (LOG) logerror("UPD3301 '%s' DMA Mode: %s\n", tag(), m_dma_mode ? "character" : "burst"); - if (LOG) logerror("UPD3301 '%s' H: %u\n", tag(), m_h); + LOG("UPD3301 DMA Mode: %s\n", m_dma_mode ? "character" : "burst"); + LOG("UPD3301 H: %u\n", m_h); break; case 1: m_b = ((data >> 6) + 1) * 16; m_l = (data & 0x3f) + 1; - if (LOG) logerror("UPD3301 '%s' B: %u\n", tag(), m_b); - if (LOG) logerror("UPD3301 '%s' L: %u\n", tag(), m_l); + LOG("UPD3301 B: %u\n", m_b); + LOG("UPD3301 L: %u\n", m_l); break; case 2: m_s = BIT(data, 7); m_c = (data >> 4) & 0x03; m_r = (data & 0x1f) + 1; - if (LOG) logerror("UPD3301 '%s' S: %u\n", tag(), m_s); - if (LOG) logerror("UPD3301 '%s' C: %u\n", tag(), m_c); - if (LOG) logerror("UPD3301 '%s' R: %u\n", tag(), m_r); + LOG("UPD3301 S: %u\n", m_s); + LOG("UPD3301 C: %u\n", m_c); + LOG("UPD3301 R: %u\n", m_r); break; case 3: m_v = (data >> 5) + 1; m_z = (data & 0x1f) + 2; - if (LOG) logerror("UPD3301 '%s' V: %u\n", tag(), m_v); - if (LOG) logerror("UPD3301 '%s' Z: %u\n", tag(), m_z); + LOG("UPD3301 V: %u\n", m_v); + LOG("UPD3301 Z: %u\n", m_z); recompute_parameters(); break; @@ -294,10 +294,10 @@ WRITE8_MEMBER( upd3301_device::write ) m_at0 = BIT(data, 6); m_sc = BIT(data, 5); m_attr = (data & 0x1f) + 1; - if (LOG) logerror("UPD3301 '%s' AT1: %u\n", tag(), m_at1); - if (LOG) logerror("UPD3301 '%s' AT0: %u\n", tag(), m_at0); - if (LOG) logerror("UPD3301 '%s' SC: %u\n", tag(), m_sc); - if (LOG) logerror("UPD3301 '%s' ATTR: %u\n", tag(), m_attr); + LOG("UPD3301 AT1: %u\n", m_at1); + LOG("UPD3301 AT0: %u\n", m_at0); + LOG("UPD3301 SC: %u\n", m_sc); + LOG("UPD3301 ATTR: %u\n", m_attr); m_mode = MODE_NONE; break; @@ -311,12 +311,12 @@ WRITE8_MEMBER( upd3301_device::write ) { case 0: m_cx = data & 0x7f; - if (LOG) logerror("UPD3301 '%s' CX: %u\n", tag(), m_cx); + LOG("UPD3301 CX: %u\n", m_cx); break; case 1: m_cy = data & 0x3f; - if (LOG) logerror("UPD3301 '%s' CY: %u\n", tag(), m_cy); + LOG("UPD3301 CY: %u\n", m_cy); m_mode = MODE_NONE; break; @@ -326,7 +326,7 @@ WRITE8_MEMBER( upd3301_device::write ) break; default: - if (LOG) logerror("UPD3301 '%s' Invalid Parameter Byte %02x!\n", tag(), data); + LOG("UPD3301 Invalid Parameter Byte %02x!\n", data); } break; @@ -337,45 +337,45 @@ WRITE8_MEMBER( upd3301_device::write ) switch (data & 0xe0) { case COMMAND_RESET: - if (LOG) logerror("UPD3301 '%s' Reset\n", tag()); + LOG("UPD3301 Reset\n"); m_mode = MODE_RESET; set_display(0); set_interrupt(0); break; case COMMAND_START_DISPLAY: - if (LOG) logerror("UPD3301 '%s' Start Display\n", tag()); + LOG("UPD3301 Start Display\n"); set_display(1); reset_counters(); break; case COMMAND_SET_INTERRUPT_MASK: - if (LOG) logerror("UPD3301 '%s' Set Interrupt Mask\n", tag()); + LOG("UPD3301 Set Interrupt Mask\n"); m_me = BIT(data, 0); m_mn = BIT(data, 1); - if (LOG) logerror("UPD3301 '%s' ME: %u\n", tag(), m_me); - if (LOG) logerror("UPD3301 '%s' MN: %u\n", tag(), m_mn); + LOG("UPD3301 ME: %u\n", m_me); + LOG("UPD3301 MN: %u\n", m_mn); break; case COMMAND_READ_LIGHT_PEN: - if (LOG) logerror("UPD3301 '%s' Read Light Pen\n", tag()); + LOG("UPD3301 Read Light Pen\n"); m_mode = MODE_READ_LIGHT_PEN; break; case COMMAND_LOAD_CURSOR_POSITION: - if (LOG) logerror("UPD3301 '%s' Load Cursor Position\n", tag()); + LOG("UPD3301 Load Cursor Position\n"); m_mode = MODE_LOAD_CURSOR_POSITION; m_cm = BIT(data, 0); - if (LOG) logerror("UPD3301 '%s' CM: %u\n", tag(), m_cm); + LOG("UPD3301 CM: %u\n", m_cm); break; case COMMAND_RESET_INTERRUPT: - if (LOG) logerror("UPD3301 '%s' Reset Interrupt\n", tag()); + LOG("UPD3301 Reset Interrupt\n"); set_interrupt(0); break; case COMMAND_RESET_COUNTERS: - if (LOG) logerror("UPD3301 '%s' Reset Counters\n", tag()); + LOG("UPD3301 Reset Counters\n"); m_mode = MODE_RESET_COUNTERS; reset_counters(); break; @@ -528,7 +528,7 @@ uint32_t upd3301_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm void upd3301_device::set_interrupt(int state) { - if (LOG) logerror("UPD3301 '%s' Interrupt: %u\n", tag(), state); + LOG("UPD3301 Interrupt: %u\n", state); m_write_int(state); @@ -545,7 +545,7 @@ void upd3301_device::set_interrupt(int state) void upd3301_device::set_drq(int state) { - if (LOG) logerror("UPD3301 '%s' DRQ: %u\n", tag(), state); + LOG("UPD3301 DRQ: %u\n", state); m_write_drq(state); } @@ -625,11 +625,8 @@ void upd3301_device::recompute_parameters() visarea.set(0, (m_h * m_width) - 1, 0, (m_l * m_r) - 1); - if (LOG) - { - if (LOG) logerror("UPD3301 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); - if (LOG) logerror("UPD3301 '%s' Visible Area: (%u, %u) - (%u, %u)\n", tag(), visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y); - } + LOG("UPD3301 Screen: %u x %u @ %f Hz\n", horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); + LOG("UPD3301 Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y); m_screen->configure(horiz_pix_total, vert_pix_total, visarea, refresh); diff --git a/src/devices/video/upd3301.h b/src/devices/video/upd3301.h index 5d1c03c7ed1..a8e9b8e8b97 100644 --- a/src/devices/video/upd3301.h +++ b/src/devices/video/upd3301.h @@ -29,11 +29,10 @@ **********************************************************************/ -#pragma once - -#ifndef __UPD3301__ -#define __UPD3301__ +#ifndef MAME_VIDEO_UPD3301_H +#define MAME_VIDEO_UPD3301_H +#pragma once @@ -48,7 +47,7 @@ upd3301_device::static_set_character_width(*device, _value); #define MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \ - upd3301_device::static_set_display_callback(*device, upd3301_draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + upd3301_device::static_set_display_callback(*device, upd3301_device::draw_character_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_UPD3301_DRQ_CALLBACK(_write) \ devcb = &upd3301_device::set_drq_wr_callback(*device, DEVCB_##_write); @@ -68,8 +67,6 @@ // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate upd3301_draw_character_delegate; - // ======================> upd3301_device @@ -77,16 +74,18 @@ class upd3301_device : public device_t, public device_video_interface { public: + typedef device_delegate draw_character_delegate; + // construction/destruction upd3301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void static_set_character_width(device_t &device, int value) { downcast(device).m_width = value; } - static void static_set_display_callback(device_t &device, upd3301_draw_character_delegate callback) { downcast(device).m_display_cb = callback; } + static void static_set_display_callback(device_t &device, draw_character_delegate &&cb) { downcast(device).m_display_cb = std::move(cb); } - template static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_drq.set_callback(object); } - template static devcb_base &set_int_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_int.set_callback(object); } - template static devcb_base &set_hrtc_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_hrtc.set_callback(object); } - template static devcb_base &set_vrtc_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_vrtc.set_callback(object); } + template static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_drq.set_callback(std::forward(cb)); } + template static devcb_base &set_int_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_int.set_callback(std::forward(cb)); } + template static devcb_base &set_hrtc_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_hrtc.set_callback(std::forward(cb)); } + template static devcb_base &set_vrtc_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_vrtc.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -127,7 +126,7 @@ private: devcb_write_line m_write_hrtc; devcb_write_line m_write_vrtc; - upd3301_draw_character_delegate m_display_cb; + draw_character_delegate m_display_cb; int m_width; // screen drawing @@ -186,8 +185,6 @@ private: // device type definition -extern const device_type UPD3301; - - +DECLARE_DEVICE_TYPE(UPD3301, upd3301_device) -#endif +#endif // MAME_VIDEO_UPD3301_H diff --git a/src/devices/video/upd7220.cpp b/src/devices/video/upd7220.cpp index 46e97fab0ba..c4b5650cf76 100644 --- a/src/devices/video/upd7220.cpp +++ b/src/devices/video/upd7220.cpp @@ -39,16 +39,16 @@ #include "screen.h" +//#define VERBOSE 1 +#include "logmacro.h" + + //************************************************************************** // MACROS / CONSTANTS //************************************************************************** -#define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) - - // todo typedef enum { @@ -136,8 +136,8 @@ enum #define UPD7220_MODE_INTERLACE_ON 0x09 -static const int x_dir[8] = { 0, 1, 1, 1, 0,-1,-1,-1}; -static const int y_dir[8] = { 1, 1, 0,-1,-1,-1, 0, 1}; +static constexpr int x_dir[8] = { 0, 1, 1, 1, 0,-1,-1,-1}; +static constexpr int y_dir[8] = { 1, 1, 0,-1,-1,-1, 0, 1}; //************************************************************************** @@ -145,7 +145,7 @@ static const int y_dir[8] = { 1, 1, 0,-1,-1,-1, 0, 1}; //************************************************************************** // devices -const device_type UPD7220 = device_creator; +DEFINE_DEVICE_TYPE(UPD7220, upd7220_device, "upd7220", "NEC uPD7220") // default address map @@ -412,10 +412,10 @@ inline void upd7220_device::recompute_parameters() visarea.max_x = m_aw * horiz_mult - 1;//horiz_pix_total - (m_hfp * 8) - 1; visarea.max_y = m_al * vert_mult + m_vbp - 1;//vert_pix_total - m_vfp - 1; - LOG(("uPD7220 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh))); - LOG(("Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y)); - LOG(("%d %d %d %d %d\n",m_hs,m_hbp,m_aw,m_hfp,m_pitch)); - LOG(("%d %d %d %d\n",m_vs,m_vbp,m_al,m_vfp)); + LOG("uPD7220 Screen: %u x %u @ %f Hz\n", horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh)); + LOG("Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y); + LOG("%d %d %d %d %d\n",m_hs,m_hbp,m_aw,m_hfp,m_pitch); + LOG("%d %d %d %d\n",m_vs,m_vbp,m_al,m_vfp); if (m_m) { @@ -457,12 +457,12 @@ inline void upd7220_device::read_vram(uint8_t type, uint8_t mod) { if (type == 1) { - LOG (("uPD7220 invalid type 1 RDAT parameter\n")); + LOG("uPD7220 invalid type 1 RDAT parameter\n"); return; } if (mod) - LOG (("uPD7220 RDAT used with mod = %02x?\n",mod)); + LOG("uPD7220 RDAT used with mod = %02x?\n",mod); while (m_figs.m_dc && m_fifo_ptr < (type ? 15 : 14)) { @@ -609,7 +609,7 @@ inline void upd7220_device::get_graphics_partition(int index, uint32_t *sad, uin //------------------------------------------------- upd7220_device::upd7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, UPD7220, "uPD7220", tag, owner, clock, "upd7220", __FILE__), + device_t(mconfig, UPD7220, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_write_drq(*this), @@ -823,7 +823,7 @@ void upd7220_device::draw_line(int x, int y) uint16_t pattern = (m_ra[8]) | (m_ra[9]<<8); const int dot_dir[4] = {1, -1, -1, 1}; - LOG(("uPD7220 line check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,d1,m_figs.m_dc,m_bitmap_mod)); + LOG("uPD7220 line check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,d1,m_figs.m_dc,m_bitmap_mod); for(yi = xi = 0; yi <= m_figs.m_dc; yi++) { @@ -873,7 +873,7 @@ void upd7220_device::draw_arc(int x, int y) uint16_t pattern = (m_ra[8]) | (m_ra[9]<<8); const int dot_dir[4] = {1, -1, -1, 1}; - LOG(("uPD7220 arc check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_dm,m_figs.m_dc,m_figs.m_d)); + LOG("uPD7220 arc check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_dm,m_figs.m_dc,m_figs.m_d); for(int yi = 0; yi <= m_figs.m_dc; yi++) { @@ -926,7 +926,7 @@ void upd7220_device::draw_rectangle(int x, int y) uint8_t rect_type,rect_dir; uint16_t pattern = (m_ra[8]) | (m_ra[9]<<8); - LOG(("uPD7220 rectangle check: %d %d %02x %08x\n",x,y,m_figs.m_dir,m_ead)); + LOG("uPD7220 rectangle check: %d %d %02x %08x\n",x,y,m_figs.m_dir,m_ead); rect_type = (m_figs.m_dir & 1) << 2; rect_dir = rect_type | (((m_figs.m_dir >> 1) + 0) & 3); @@ -980,7 +980,7 @@ void upd7220_device::draw_char(int x, int y) int isize,psize; uint16_t tile_data; - LOG(("uPD7220 char check: %d %d %02x %08x %d %d %02x\n",x,y,m_figs.m_dir,m_ead,m_figs.m_d,m_figs.m_dc,m_figs.m_figure_type)); + LOG("uPD7220 char check: %d %d %02x %08x %d %d %02x\n",x,y,m_figs.m_dir,m_ead,m_figs.m_d,m_figs.m_dc,m_figs.m_figure_type); /* QX10 may require upper bits for psize, VT240 requires the opposite */ isize = m_figs.m_d; @@ -1106,19 +1106,19 @@ void upd7220_device::process_fifo() switch (translate_command(m_cr)) { case COMMAND_INVALID: - logerror("uPD7220 '%s' Invalid Command Byte %02x\n", tag(), m_cr); + logerror("uPD7220 Invalid Command Byte %02x\n", m_cr); break; case COMMAND_5A: if (m_param_ptr == 4) - logerror("uPD7220 '%s' Undocumented Command 0x5A Executed %02x %02x %02x\n", tag(),m_pr[1],m_pr[2],m_pr[3] ); + logerror("uPD7220 Undocumented Command 0x5A Executed %02x %02x %02x\n", m_pr[1],m_pr[2],m_pr[3] ); break; case COMMAND_RESET: /* reset */ switch (m_param_ptr) { case 0: - LOG(("uPD7220 '%s' RESET\n", tag())); + LOG("uPD7220 RESET\n"); m_de = 0; m_ra[0] = m_ra[1] = m_ra[2] = 0; @@ -1141,16 +1141,16 @@ void upd7220_device::process_fifo() m_pitch = m_aw; - LOG(("uPD7220 '%s' Mode: %02x\n", tag(), m_mode)); - LOG(("uPD7220 '%s' AW: %u\n", tag(), m_aw)); - LOG(("uPD7220 '%s' HS: %u\n", tag(), m_hs)); - LOG(("uPD7220 '%s' VS: %u\n", tag(), m_vs)); - LOG(("uPD7220 '%s' HFP: %u\n", tag(), m_hfp)); - LOG(("uPD7220 '%s' HBP: %u\n", tag(), m_hbp)); - LOG(("uPD7220 '%s' VFP: %u\n", tag(), m_vfp)); - LOG(("uPD7220 '%s' AL: %u\n", tag(), m_al)); - LOG(("uPD7220 '%s' VBP: %u\n", tag(), m_vbp)); - LOG(("uPD7220 '%s' PITCH: %u\n", tag(), m_pitch)); + LOG("uPD7220 Mode: %02x\n", m_mode); + LOG("uPD7220 AW: %u\n", m_aw); + LOG("uPD7220 HS: %u\n", m_hs); + LOG("uPD7220 VS: %u\n", m_vs); + LOG("uPD7220 HFP: %u\n", m_hfp); + LOG("uPD7220 HBP: %u\n", m_hbp); + LOG("uPD7220 VFP: %u\n", m_vfp); + LOG("uPD7220 AL: %u\n", m_al); + LOG("uPD7220 VBP: %u\n", m_vbp); + LOG("uPD7220 PITCH: %u\n", m_pitch); recompute_parameters(); break; @@ -1172,16 +1172,16 @@ void upd7220_device::process_fifo() m_pitch = m_aw; - LOG(("uPD7220 '%s' Mode: %02x\n", tag(), m_mode)); - LOG(("uPD7220 '%s' AW: %u\n", tag(), m_aw)); - LOG(("uPD7220 '%s' HS: %u\n", tag(), m_hs)); - LOG(("uPD7220 '%s' VS: %u\n", tag(), m_vs)); - LOG(("uPD7220 '%s' HFP: %u\n", tag(), m_hfp)); - LOG(("uPD7220 '%s' HBP: %u\n", tag(), m_hbp)); - LOG(("uPD7220 '%s' VFP: %u\n", tag(), m_vfp)); - LOG(("uPD7220 '%s' AL: %u\n", tag(), m_al)); - LOG(("uPD7220 '%s' VBP: %u\n", tag(), m_vbp)); - LOG(("uPD7220 '%s' PITCH: %u\n", tag(), m_pitch)); + LOG("uPD7220 Mode: %02x\n", m_mode); + LOG("uPD7220 AW: %u\n", m_aw); + LOG("uPD7220 HS: %u\n", m_hs); + LOG("uPD7220 VS: %u\n", m_vs); + LOG("uPD7220 HFP: %u\n", m_hfp); + LOG("uPD7220 HBP: %u\n", m_hbp); + LOG("uPD7220 VFP: %u\n", m_vfp); + LOG("uPD7220 AL: %u\n", m_al); + LOG("uPD7220 VBP: %u\n", m_vbp); + LOG("uPD7220 PITCH: %u\n", m_pitch); recompute_parameters(); } @@ -1190,7 +1190,7 @@ void upd7220_device::process_fifo() case COMMAND_VSYNC: /* vertical sync mode */ m_m = m_cr & 0x01; - LOG(("uPD7220 '%s' M: %u\n", tag(), m_m)); + LOG("uPD7220 M: %u\n", m_m); recompute_parameters(); break; @@ -1201,8 +1201,8 @@ void upd7220_device::process_fifo() m_lr = (m_pr[1] & 0x1f) + 1; m_dc = BIT(m_pr[1], 7); - LOG(("uPD7220 '%s' LR: %u\n", tag(), m_lr)); - LOG(("uPD7220 '%s' DC: %u\n", tag(), m_dc)); + LOG("uPD7220 LR: %u\n", m_lr); + LOG("uPD7220 DC: %u\n", m_dc); } if(m_param_ptr == 3) @@ -1211,8 +1211,8 @@ void upd7220_device::process_fifo() m_sc = BIT(m_pr[2], 5); m_br = (m_pr[2] >> 6); /* guess, assume that blink rate clears upper bits (if any) */ - LOG(("uPD7220 '%s' CTOP: %u\n", tag(), m_ctop)); - LOG(("uPD7220 '%s' SC: %u\n", tag(), m_sc)); + LOG("uPD7220 CTOP: %u\n", m_ctop); + LOG("uPD7220 SC: %u\n", m_sc); } if(m_param_ptr == 4) @@ -1220,15 +1220,15 @@ void upd7220_device::process_fifo() m_br = ((m_pr[3] & 0x07) << 2) | (m_pr[2] >> 6); m_cbot = m_pr[3] >> 3; - LOG(("uPD7220 '%s' BR: %u\n", tag(), m_br)); - LOG(("uPD7220 '%s' CBOT: %u\n", tag(), m_cbot)); + LOG("uPD7220 BR: %u\n", m_br); + LOG("uPD7220 CBOT: %u\n", m_cbot); } break; case COMMAND_START: /* start display & end idle mode */ m_de = 1; - //LOG(("uPD7220 '%s' DE: 1\n", tag())); + //LOG("uPD7220 '%s' DE: 1\n"); break; case COMMAND_05: @@ -1238,7 +1238,7 @@ void upd7220_device::process_fifo() case COMMAND_BCTRL: /* display blanking control */ m_de = m_cr & 0x01; - //LOG(("uPD7220 '%s' DE: %u\n", tag(), m_de)); + //LOG("uPD7220 DE: %u\n", m_de); break; case COMMAND_ZOOM: /* zoom factors specify */ @@ -1247,8 +1247,8 @@ void upd7220_device::process_fifo() m_gchr = m_pr[1] & 0x0f; m_disp = m_pr[1] >> 4; - LOG(("uPD7220 '%s' GCHR: %01x\n", tag(), m_gchr)); - LOG(("uPD7220 '%s' DISP: %01x\n", tag(), m_disp)); + LOG("uPD7220 GCHR: %01x\n", m_gchr); + LOG("uPD7220 DISP: %01x\n", m_disp); } break; @@ -1259,12 +1259,12 @@ void upd7220_device::process_fifo() m_ead = (upper_addr << 16) | (m_pr[2] << 8) | m_pr[1]; - LOG(("uPD7220 '%s' EAD: %06x\n", tag(), m_ead)); + LOG("uPD7220 EAD: %06x\n", m_ead); if(m_param_ptr == 4) { m_dad = m_pr[3] >> 4; - LOG(("uPD7220 '%s' DAD: %01x\n", tag(), m_dad)); + LOG("uPD7220 DAD: %01x\n", m_dad); } } break; @@ -1278,7 +1278,7 @@ void upd7220_device::process_fifo() { if (m_ra_addr < 16) { - LOG(("uPD7220 '%s' RA%u: %02x\n", tag(), m_ra_addr, data)); + LOG("uPD7220 RA%u: %02x\n", m_ra_addr, data); m_ra[m_ra_addr] = data; m_ra_addr++; @@ -1293,7 +1293,7 @@ void upd7220_device::process_fifo() { m_pitch = data; - LOG(("uPD7220 '%s' PITCH: %u\n", tag(), m_pitch)); + LOG("uPD7220 PITCH: %u\n", m_pitch); } break; @@ -1302,7 +1302,7 @@ void upd7220_device::process_fifo() if (m_param_ptr == 3 || (m_param_ptr == 2 && m_cr & 0x10)) { - LOG(("%02x = %02x %02x (%c) %06x %04x\n",m_cr,m_pr[2],m_pr[1],m_pr[1]?m_pr[1]:' ',m_ead,m_figs.m_dc)); + LOG("%02x = %02x %02x (%c) %06x %04x\n",m_cr,m_pr[2],m_pr[1],m_pr[1]?m_pr[1]:' ',m_ead,m_figs.m_dc); fifo_set_direction(FIFO_WRITE); write_vram((m_cr & 0x18) >> 3,m_cr & 3); @@ -1316,7 +1316,7 @@ void upd7220_device::process_fifo() { m_mask = (m_pr[2] << 8) | m_pr[1]; - LOG(("uPD7220 '%s' MASK: %04x\n", tag(), m_mask)); + LOG("uPD7220 MASK: %04x\n", m_mask); } break; @@ -1365,7 +1365,7 @@ void upd7220_device::process_fifo() else if(m_figs.m_figure_type == 8) draw_rectangle(((m_ead % eff_pitch) << 4) | (m_dad & 0xf),(m_ead / eff_pitch)); else - logerror("uPD7220 '%s' Unimplemented command FIGD %02x\n", tag(),m_figs.m_figure_type); + logerror("uPD7220 Unimplemented command FIGD %02x\n", m_figs.m_figure_type); reset_figs_param(); m_sr |= UPD7220_SR_DRAWING_IN_PROGRESS; @@ -1375,7 +1375,7 @@ void upd7220_device::process_fifo() if((m_figs.m_figure_type & 0xf) == 2) draw_char(((m_ead % eff_pitch) << 4) | (m_dad & 0xf),(m_ead / eff_pitch)); else - logerror("uPD7220 '%s' Unimplemented command GCHRD %02x\n", tag(),m_figs.m_figure_type); + logerror("uPD7220 Unimplemented command GCHRD %02x\n", m_figs.m_figure_type); reset_figs_param(); m_sr |= UPD7220_SR_DRAWING_IN_PROGRESS; @@ -1416,11 +1416,11 @@ void upd7220_device::process_fifo() break; case COMMAND_DMAR: /* DMA read request */ - logerror("uPD7220 '%s' Unimplemented command DMAR\n", tag()); + logerror("uPD7220 Unimplemented command DMAR\n"); break; case COMMAND_DMAW: /* DMA write request */ - logerror("uPD7220 '%s' Unimplemented command DMAW\n", tag()); + logerror("uPD7220 Unimplemented command DMAW\n"); break; } } @@ -1520,7 +1520,7 @@ WRITE8_MEMBER( upd7220_device::dack_w ) WRITE_LINE_MEMBER( upd7220_device::ext_sync_w ) { - //LOG(("uPD7220 '%s' External Synchronization: %u\n", tag(), state)); + //LOG("uPD7220 External Synchronization: %u\n", state); if (state) { @@ -1684,7 +1684,7 @@ uint32_t upd7220_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm break; case UPD7220_MODE_DISPLAY_INVALID: - LOG(("uPD7220 '%s' Invalid Display Mode!\n", tag())); + LOG("uPD7220 Invalid Display Mode!\n"); } } return 0; diff --git a/src/devices/video/upd7220.h b/src/devices/video/upd7220.h index e55a1892241..df99a7556aa 100644 --- a/src/devices/video/upd7220.h +++ b/src/devices/video/upd7220.h @@ -29,11 +29,10 @@ **********************************************************************/ -#pragma once - -#ifndef __UPD7220__ -#define __UPD7220__ +#ifndef MAME_VIDEO_UPD7220_H +#define MAME_VIDEO_UPD7220_H +#pragma once @@ -46,10 +45,10 @@ #define MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(_class, _method) \ - upd7220_device::static_set_display_pixels_callback(*device, upd7220_display_pixels_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + upd7220_device::static_set_display_pixels_callback(*device, upd7220_device::display_pixels_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(_class, _method) \ - upd7220_device::static_set_draw_text_callback(*device, upd7220_draw_text_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + upd7220_device::static_set_draw_text_callback(*device, upd7220_device::draw_text_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); #define MCFG_UPD7220_DRQ_CALLBACK(_write) \ devcb = &upd7220_device::set_drq_wr_callback(*device, DEVCB_##_write); @@ -69,9 +68,6 @@ // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate upd7220_display_pixels_delegate; -typedef device_delegate upd7220_draw_text_delegate; - // ======================> upd7220_device @@ -80,16 +76,19 @@ class upd7220_device : public device_t, public device_video_interface { public: + typedef device_delegate display_pixels_delegate; + typedef device_delegate draw_text_delegate; + // construction/destruction upd7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_display_pixels_callback(device_t &device, upd7220_display_pixels_delegate callback) { downcast(device).m_display_cb = callback; } - static void static_set_draw_text_callback(device_t &device, upd7220_draw_text_delegate callback) { downcast(device).m_draw_text_cb = callback; } + static void static_set_display_pixels_callback(device_t &device, display_pixels_delegate &&cb) { downcast(device).m_display_cb = std::move(cb); } + static void static_set_draw_text_callback(device_t &device, draw_text_delegate &&cb) { downcast(device).m_draw_text_cb = std::move(cb); } - template static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_drq.set_callback(object); } - template static devcb_base &set_hsync_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_hsync.set_callback(object); } - template static devcb_base &set_vsync_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_vsync.set_callback(object); } - template static devcb_base &set_blank_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_blank.set_callback(object); } + template static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_drq.set_callback(std::forward(cb)); } + template static devcb_base &set_hsync_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_hsync.set_callback(std::forward(cb)); } + template static devcb_base &set_vsync_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_vsync.set_callback(std::forward(cb)); } + template static devcb_base &set_blank_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_blank.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -102,7 +101,7 @@ public: uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); virtual const tiny_rom_entry *device_rom_region() const override; - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; protected: // device-level overrides @@ -149,8 +148,8 @@ private: void draw_graphics_line(bitmap_rgb32 &bitmap, uint32_t addr, int y, int wd, int pitch); void update_graphics(bitmap_rgb32 &bitmap, const rectangle &cliprect, int force_bitmap); - upd7220_display_pixels_delegate m_display_cb; - upd7220_draw_text_delegate m_draw_text_cb; + display_pixels_delegate m_display_cb; + draw_text_delegate m_draw_text_cb; devcb_write_line m_write_drq; devcb_write_line m_write_hsync; @@ -222,8 +221,6 @@ private: // device type definition -extern const device_type UPD7220; - - +DECLARE_DEVICE_TYPE(UPD7220, upd7220_device) -#endif +#endif // MAME_VIDEO_UPD7220_H diff --git a/src/devices/video/upd7227.cpp b/src/devices/video/upd7227.cpp index 61a415f608a..864d1a23935 100644 --- a/src/devices/video/upd7227.cpp +++ b/src/devices/video/upd7227.cpp @@ -9,13 +9,8 @@ #include "emu.h" #include "upd7227.h" - - -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define LOG 0 +//#define VERBOSE 1 +#include "logmacro.h" @@ -23,7 +18,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type UPD7227 = device_creator; +DEFINE_DEVICE_TYPE(UPD7227, upd7227_device, "upd7227", "NEC uPD7227") static ADDRESS_MAP_START( upd7227_map, AS_PROGRAM, 8, upd7227_device ) @@ -42,14 +37,14 @@ ADDRESS_MAP_END //------------------------------------------------- upd7227_device::upd7227_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, UPD7227, "uPD7227", tag, owner, clock, "upd7227", __FILE__), - device_memory_interface(mconfig, *this), - m_space_config("videoram", ENDIANNESS_BIG, 8, 7, 0, *ADDRESS_MAP_NAME(upd7227_map)), - m_cs(1), - m_cd(1), - m_sck(1), - m_si(1), - m_so(1) + : device_t(mconfig, UPD7227, tag, owner, clock) + , device_memory_interface(mconfig, *this) + , m_space_config("videoram", ENDIANNESS_BIG, 8, 7, 0, *ADDRESS_MAP_NAME(upd7227_map)) + , m_cs(1) + , m_cd(1) + , m_sck(1) + , m_si(1) + , m_so(1) { } diff --git a/src/devices/video/upd7227.h b/src/devices/video/upd7227.h index c38b2fa10e2..725137bc376 100644 --- a/src/devices/video/upd7227.h +++ b/src/devices/video/upd7227.h @@ -6,11 +6,10 @@ **********************************************************************/ -#pragma once - -#ifndef __UPD7227__ -#define __UPD7227__ +#ifndef MAME_VIDEO_UPD7227_H +#define MAME_VIDEO_UPD7227_H +#pragma once @@ -54,7 +53,7 @@ protected: virtual void device_reset() override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override; address_space_config m_space_config; @@ -87,8 +86,6 @@ private: // device type definition -extern const device_type UPD7227; - - +DECLARE_DEVICE_TYPE(UPD7227, upd7227_device) -#endif +#endif // MAME_VIDEO_UPD7227_H diff --git a/src/devices/video/v9938.cpp b/src/devices/video/v9938.cpp index 469bf2c7a93..ac7fd4575dc 100644 --- a/src/devices/video/v9938.cpp +++ b/src/devices/video/v9938.cpp @@ -38,8 +38,8 @@ todo: #include "emu.h" #include "v9938.h" -#define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +//#define VERBOSE 1 +#include "logmacro.h" enum { @@ -84,16 +84,17 @@ ADDRESS_MAP_END // devices -const device_type V9938 = device_creator; -const device_type V9958 = device_creator; +DEFINE_DEVICE_TYPE(V9938, v9938_device, "v9938", "Yamaha V9938 VDP") +DEFINE_DEVICE_TYPE(V9958, v9958_device, "v9958", "Yamaha V9958 VDP") -v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, uint32_t clock) -: device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), +v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int model) +: device_t(mconfig, type, tag, owner, clock), device_memory_interface(mconfig, *this), + device_palette_interface(mconfig, *this), device_video_interface(mconfig, *this), m_space_config("vram", ENDIANNESS_BIG, 8, 18), - m_model(0), + m_model(model), m_offset_x(0), m_offset_y(0), m_visible_y(0), @@ -116,22 +117,19 @@ v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, cons m_button_state(0), m_vdp_ops_count(0), m_vdp_engine(nullptr), - m_palette(*this, "palette"), m_pal_ntsc(0) { static_set_addrmap(*this, AS_DATA, ADDRESS_MAP_NAME(memmap)); } v9938_device::v9938_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) -: v99x8_device(mconfig, V9938, "V9938 VDP", "v9938", tag, owner, clock) +: v99x8_device(mconfig, V9938, tag, owner, clock, MODEL_V9938) { - m_model = MODEL_V9938; } v9958_device::v9958_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) -: v99x8_device(mconfig, V9958, "V9958 VDP", "v9958", tag, owner, clock) +: v99x8_device(mconfig, V9958, tag, owner, clock, MODEL_V9958) { - m_model = MODEL_V9958; } @@ -156,7 +154,7 @@ void v99x8_device::device_timer(emu_timer &timer, device_timer_id id, int param, (((scanline + m_cont_reg[23]) & 255) == m_cont_reg[19]) ) { m_stat_reg[1] |= 1; - LOG(("V9938: scanline interrupt (%d)\n", scanline)); + LOG("V9938: scanline interrupt (%d)\n", scanline); } else if (!(m_cont_reg[0] & 0x10)) { @@ -301,13 +299,13 @@ b0 is set if b2 and b1 are set (remember, color bus is 3 bits) */ -PALETTE_INIT_MEMBER(v9938_device, v9938) +void v9938_device::palette_init() { int i; // create the full 512 colour palette for (i=0;i<512;i++) - palette.set_pen_color(i, pal3bit(i >> 6), pal3bit(i >> 3), pal3bit(i >> 0)); + set_pen_color(i, pal3bit(i >> 6), pal3bit(i >> 3), pal3bit(i >> 0)); } /* @@ -323,21 +321,20 @@ to emulate this. Also it keeps the palette a reasonable size. :) uint16_t v99x8_device::s_pal_indYJK[0x20000]; -PALETTE_INIT_MEMBER(v9958_device, v9958) +void v9958_device::palette_init() { int r,g,b,y,j,k,i,k0,j0,n; uint8_t pal[19268*3]; // init v9938 512-color palette for (i=0;i<512;i++) - palette.set_pen_color(i, pal3bit(i >> 6), pal3bit(i >> 3), pal3bit(i >> 0)); + set_pen_color(i, pal3bit(i >> 6), pal3bit(i >> 3), pal3bit(i >> 0)); - - if(palette.entries() != 19780) + if (entries() != 19780) fatalerror("V9958: not enough palette, must be 19780"); // set up YJK table - LOG(("Building YJK table for V9958 screens, may take a while ... \n")); + LOG("Building YJK table for V9958 screens, may take a while ... \n"); i = 0; for (y=0;y<32;y++) for (k=0;k<64;k++) for (j=0;j<64;j++) { @@ -372,14 +369,14 @@ PALETTE_INIT_MEMBER(v9958_device, v9958) pal[i*3+0] = r; pal[i*3+1] = g; pal[i*3+2] = b; - palette.set_pen_color(i+512, rgb_t(pal5bit(r), pal5bit(g), pal5bit(b))); + set_pen_color(i+512, rgb_t(pal5bit(r), pal5bit(g), pal5bit(b))); v99x8_device::s_pal_indYJK[y | j << 5 | k << (5 + 6)] = i + 512; i++; } } if (i != 19268) - LOG( ("Table creation failed - %d colours out of 19286 created\n", i)); + LOG("Table creation failed - %d colours out of 19286 created\n", i); } uint32_t v99x8_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -509,7 +506,7 @@ uint8_t v99x8_device::status_r() break; } - LOG(("V9938: Read %02x from S#%d\n", ret, reg)); + LOG("V9938: Read %02x from S#%d\n", ret, reg); check_int (); return ret; @@ -639,6 +636,8 @@ void v99x8_device::device_start() m_line_timer = timer_alloc(TIMER_LINE); + palette_init(); + save_item(NAME(m_offset_x)); save_item(NAME(m_offset_y)); save_item(NAME(m_visible_y)); @@ -819,7 +818,7 @@ void v99x8_device::check_int() if (n != m_int_state) { m_int_state = n; - LOG(("V9938: IRQ line %s\n", n ? "up" : "down")); + LOG("V9938: IRQ line %s\n", n ? "up" : "down"); } /* @@ -855,7 +854,7 @@ void v99x8_device::register_write (int reg, int data) if (reg > 46) { - LOG(("V9938: Attempted to write to non-existant R#%d\n", reg)); + LOG("V9938: Attempted to write to non-existant R#%d\n", reg); return; } @@ -868,7 +867,7 @@ void v99x8_device::register_write (int reg, int data) m_cont_reg[reg] = data; set_mode(); check_int(); - LOG(("v9938: mode = %s\n", v9938_modes[m_mode])); + LOG("v9938: mode = %s\n", v9938_modes[m_mode]); break; case 18: @@ -887,14 +886,14 @@ void v99x8_device::register_write (int reg, int data) case 20: case 21: case 22: - LOG(("v9938: Write %02xh to R#%d; color burst not emulated\n", data, reg)); + LOG("v9938: Write %02xh to R#%d; color burst not emulated\n", data, reg); break; case 25: case 26: case 27: if (m_model != MODEL_V9958) { - LOG(("v9938: Attempting to write %02xh to V9958 R#%d\n", data, reg)); + LOG("v9938: Attempting to write %02xh to V9958 R#%d\n", data, reg); data = 0; } else @@ -914,7 +913,7 @@ void v99x8_device::register_write (int reg, int data) } if (reg != 15) - LOG(("v9938: Write %02x to R#%d\n", data, reg)); + LOG("v9938: Write %02x to R#%d\n", data, reg); m_cont_reg[reg] = data; } @@ -931,53 +930,53 @@ inline bool v99x8_device::v9938_second_field() } -void v99x8_device::default_border(const pen_t *pens, uint16_t *ln) +void v99x8_device::default_border(uint16_t *ln) { - uint16_t pen; + pen_t pen; int i; - pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]]; + pen = this->pen(m_pal_ind16[m_cont_reg[7] & 0x0f]); i = LONG_WIDTH; while (i--) *ln++ = pen; } -void v99x8_device::graphic7_border(const pen_t *pens, uint16_t *ln) +void v99x8_device::graphic7_border(uint16_t *ln) { - uint16_t pen; + pen_t pen; int i; - pen = pens[m_pal_ind256[m_cont_reg[7]]]; + pen = this->pen(m_pal_ind256[m_cont_reg[7]]); i = LONG_WIDTH; while (i--) *ln++ = pen; } -void v99x8_device::graphic5_border(const pen_t *pens, uint16_t *ln) +void v99x8_device::graphic5_border(uint16_t *ln) { int i; - uint16_t pen0; - uint16_t pen1; + pen_t pen0; + pen_t pen1; - pen1 = pens[m_pal_ind16[(m_cont_reg[7]&0x03)]]; - pen0 = pens[m_pal_ind16[((m_cont_reg[7]>>2)&0x03)]]; + pen1 = pen(m_pal_ind16[m_cont_reg[7] & 0x03]); + pen0 = pen(m_pal_ind16[(m_cont_reg[7] >> 2) & 0x03]); i = LONG_WIDTH / 2; while (i--) { *ln++ = pen0; *ln++ = pen1; } } -void v99x8_device::mode_text1(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_text1(uint16_t *ln, int line) { int pattern, x, xx, name, xxx; - uint16_t fg, bg, pen; + pen_t fg, bg, pen; int nametbl_addr, patterntbl_addr; patterntbl_addr = m_cont_reg[4] << 11; nametbl_addr = m_cont_reg[2] << 10; - fg = pens[m_pal_ind16[m_cont_reg[7] >> 4]]; - bg = pens[m_pal_ind16[m_cont_reg[7] & 15]]; + fg = this->pen(m_pal_ind16[m_cont_reg[7] >> 4]); + bg = this->pen(m_pal_ind16[m_cont_reg[7] & 15]); name = (line/8)*40; - pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]]; + pen = this->pen(m_pal_ind16[m_cont_reg[7] & 0x0f]); xxx = (m_offset_x + 8) * 2; while (xxx--) *ln++ = pen; @@ -1000,10 +999,10 @@ void v99x8_device::mode_text1(const pen_t *pens, uint16_t *ln, int line) while (xxx--) *ln++ = pen; } -void v99x8_device::mode_text2(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_text2(uint16_t *ln, int line) { int pattern, x, charcode, name, xxx, patternmask, colourmask; - uint16_t fg, bg, fg0, bg0, pen; + pen_t fg, bg, fg0, bg0, pen; int nametbl_addr, patterntbl_addr, colourtbl_addr; patterntbl_addr = m_cont_reg[4] << 11; @@ -1016,15 +1015,15 @@ void v99x8_device::mode_text2(const pen_t *pens, uint16_t *ln, int line) nametbl_addr = ((m_cont_reg[2] & 0xfc) << 10); patternmask = ((m_cont_reg[2] & 3) << 10) | 0x3ff; /* seems correct */ - fg = pens[m_pal_ind16[m_cont_reg[7] >> 4]]; - bg = pens[m_pal_ind16[m_cont_reg[7] & 15]]; - fg0 = pens[m_pal_ind16[m_cont_reg[12] >> 4]]; - bg0 = pens[m_pal_ind16[m_cont_reg[12] & 15]]; + fg = this->pen(m_pal_ind16[m_cont_reg[7] >> 4]); + bg = this->pen(m_pal_ind16[m_cont_reg[7] & 15]); + fg0 = this->pen(m_pal_ind16[m_cont_reg[12] >> 4]); + bg0 = this->pen(m_pal_ind16[m_cont_reg[12] & 15]); name = (line/8)*80; xxx = (m_offset_x + 8) * 2; - pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]]; + pen = this->pen(m_pal_ind16[m_cont_reg[7] & 0x0f]); while (xxx--) *ln++ = pen; for (x=0;x<80;x++) @@ -1067,11 +1066,11 @@ void v99x8_device::mode_text2(const pen_t *pens, uint16_t *ln, int line) while (xxx--) *ln++ = pen; } -void v99x8_device::mode_multi(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_multi(uint16_t *ln, int line) { int nametbl_addr, patterntbl_addr, colour; int name, line2, x, xx; - uint16_t pen, pen_bg; + pen_t pen, pen_bg; nametbl_addr = (m_cont_reg[2] << 10); patterntbl_addr = (m_cont_reg[4] << 11); @@ -1079,14 +1078,14 @@ void v99x8_device::mode_multi(const pen_t *pens, uint16_t *ln, int line) line2 = (line - m_cont_reg[23]) & 255; name = (line2/8)*32; - pen_bg = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]]; + pen_bg = this->pen(m_pal_ind16[m_cont_reg[7] & 0x0f]); xx = m_offset_x * 2; while (xx--) *ln++ = pen_bg; for (x=0;x<32;x++) { colour = m_vram_space->read_byte(patterntbl_addr + (m_vram_space->read_byte(nametbl_addr + name) * 8) + ((line2/4)&7)); - pen = pens[m_pal_ind16[colour>>4]]; + pen = this->pen(m_pal_ind16[colour >> 4]); /* eight pixels */ *ln++ = pen; *ln++ = pen; @@ -1096,7 +1095,7 @@ void v99x8_device::mode_multi(const pen_t *pens, uint16_t *ln, int line) *ln++ = pen; *ln++ = pen; *ln++ = pen; - pen = pens[m_pal_ind16[colour&15]]; + pen = this->pen(m_pal_ind16[colour & 15]); /* eight pixels */ *ln++ = pen; *ln++ = pen; @@ -1113,9 +1112,9 @@ void v99x8_device::mode_multi(const pen_t *pens, uint16_t *ln, int line) while (xx--) *ln++ = pen_bg; } -void v99x8_device::mode_graphic1(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_graphic1(uint16_t *ln, int line) { - uint16_t fg, bg, pen; + pen_t fg, bg, pen; int nametbl_addr, patterntbl_addr, colourtbl_addr; int pattern, x, xx, line2, name, charcode, colour, xxx; @@ -1127,7 +1126,7 @@ void v99x8_device::mode_graphic1(const pen_t *pens, uint16_t *ln, int line) name = (line2/8)*32; - pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]]; + pen = this->pen(m_pal_ind16[m_cont_reg[7] & 0x0f]); xxx = m_offset_x * 2; while (xxx--) *ln++ = pen; @@ -1135,8 +1134,8 @@ void v99x8_device::mode_graphic1(const pen_t *pens, uint16_t *ln, int line) { charcode = m_vram_space->read_byte(nametbl_addr + name); colour = m_vram_space->read_byte(colourtbl_addr + charcode/8); - fg = pens[m_pal_ind16[colour>>4]]; - bg = pens[m_pal_ind16[colour&15]]; + fg = this->pen(m_pal_ind16[colour >> 4]); + bg = this->pen(m_pal_ind16[colour & 15]); pattern = m_vram_space->read_byte(patterntbl_addr + (charcode * 8 + (line2 & 7))); for (xx=0;xx<8;xx++) @@ -1152,9 +1151,9 @@ void v99x8_device::mode_graphic1(const pen_t *pens, uint16_t *ln, int line) while (xx--) *ln++ = pen; } -void v99x8_device::mode_graphic23(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_graphic23(uint16_t *ln, int line) { - uint16_t fg, bg, pen; + pen_t fg, bg, pen; int nametbl_addr, patterntbl_addr, colourtbl_addr; int pattern, x, xx, line2, name, charcode, colour, colourmask, patternmask, xxx; @@ -1169,7 +1168,7 @@ void v99x8_device::mode_graphic23(const pen_t *pens, uint16_t *ln, int line) line2 = (line + m_cont_reg[23]) & 255; name = (line2/8)*32; - pen = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]]; + pen = this->pen(m_pal_ind16[m_cont_reg[7] & 0x0f]); xxx = m_offset_x * 2; while (xxx--) *ln++ = pen; @@ -1178,8 +1177,8 @@ void v99x8_device::mode_graphic23(const pen_t *pens, uint16_t *ln, int line) charcode = m_vram_space->read_byte(nametbl_addr + name) + (line2&0xc0)*4; colour = m_vram_space->read_byte(colourtbl_addr + ((charcode&colourmask)*8+(line2&7))); pattern = m_vram_space->read_byte(patterntbl_addr + ((charcode&patternmask)*8+(line2&7))); - fg = pens[m_pal_ind16[colour>>4]]; - bg = pens[m_pal_ind16[colour&15]]; + fg = this->pen(m_pal_ind16[colour >> 4]); + bg = this->pen(m_pal_ind16[colour & 15]); for (xx=0;xx<8;xx++) { *ln++ = (pattern & 0x80) ? fg : bg; @@ -1193,11 +1192,11 @@ void v99x8_device::mode_graphic23(const pen_t *pens, uint16_t *ln, int line) while (xx--) *ln++ = pen; } -void v99x8_device::mode_graphic4(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_graphic4(uint16_t *ln, int line) { int nametbl_addr, colour; int line2, linemask, x, xx; - uint16_t pen, pen_bg; + pen_t pen, pen_bg; linemask = ((m_cont_reg[2] & 0x1f) << 3) | 7; @@ -1207,17 +1206,17 @@ void v99x8_device::mode_graphic4(const pen_t *pens, uint16_t *ln, int line) if ( (m_cont_reg[2] & 0x20) && v9938_second_field() ) nametbl_addr += 0x8000; - pen_bg = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]]; + pen_bg = this->pen(m_pal_ind16[m_cont_reg[7] & 0x0f]); xx = m_offset_x * 2; while (xx--) *ln++ = pen_bg; for (x=0;x<128;x++) { colour = m_vram_space->read_byte(nametbl_addr++); - pen = pens[m_pal_ind16[colour>>4]]; + pen = this->pen(m_pal_ind16[colour >> 4]); *ln++ = pen; *ln++ = pen; - pen = pens[m_pal_ind16[colour&15]]; + pen = this->pen(m_pal_ind16[colour & 15]); *ln++ = pen; *ln++ = pen; } @@ -1226,12 +1225,12 @@ void v99x8_device::mode_graphic4(const pen_t *pens, uint16_t *ln, int line) while (xx--) *ln++ = pen_bg; } -void v99x8_device::mode_graphic5(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_graphic5(uint16_t *ln, int line) { int nametbl_addr, colour; int line2, linemask, x, xx; - uint16_t pen_bg0[4]; - uint16_t pen_bg1[4]; + pen_t pen_bg0[4]; + pen_t pen_bg1[4]; linemask = ((m_cont_reg[2] & 0x1f) << 3) | 7; @@ -1241,8 +1240,8 @@ void v99x8_device::mode_graphic5(const pen_t *pens, uint16_t *ln, int line) if ( (m_cont_reg[2] & 0x20) && v9938_second_field() ) nametbl_addr += 0x8000; - pen_bg1[0] = pens[m_pal_ind16[(m_cont_reg[7]&0x03)]]; - pen_bg0[0] = pens[m_pal_ind16[((m_cont_reg[7]>>2)&0x03)]]; + pen_bg1[0] = this->pen(m_pal_ind16[m_cont_reg[7] & 0x03]); + pen_bg0[0] = this->pen(m_pal_ind16[(m_cont_reg[7] >> 2) & 0x03]); xx = m_offset_x; while (xx--) { *ln++ = pen_bg0[0]; *ln++ = pen_bg1[0]; } @@ -1251,8 +1250,8 @@ void v99x8_device::mode_graphic5(const pen_t *pens, uint16_t *ln, int line) for (;x<4;x++) { - pen_bg0[x] = pens[m_pal_ind16[x]]; - pen_bg1[x] = pens[m_pal_ind16[x]]; + pen_bg0[x] = this->pen(m_pal_ind16[x]); + pen_bg1[x] = this->pen(m_pal_ind16[x]); } for (x=0;x<128;x++) @@ -1265,18 +1264,18 @@ void v99x8_device::mode_graphic5(const pen_t *pens, uint16_t *ln, int line) *ln++ = pen_bg1[(colour&3)]; } - pen_bg1[0] = pens[m_pal_ind16[(m_cont_reg[7]&0x03)]]; - pen_bg0[0] = pens[m_pal_ind16[((m_cont_reg[7]>>2)&0x03)]]; + pen_bg1[0] = this->pen(m_pal_ind16[m_cont_reg[7] & 0x03]); + pen_bg0[0] = this->pen(m_pal_ind16[(m_cont_reg[7] >> 2) & 0x03]); xx = 16 - m_offset_x; while (xx--) { *ln++ = pen_bg0[0]; *ln++ = pen_bg1[0]; } } -void v99x8_device::mode_graphic6(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_graphic6(uint16_t *ln, int line) { uint8_t colour; int line2, linemask, x, xx, nametbl_addr; - uint16_t pen_bg, fg0; - uint16_t fg1; + pen_t pen_bg, fg0; + pen_t fg1; linemask = ((m_cont_reg[2] & 0x1f) << 3) | 7; @@ -1286,7 +1285,7 @@ void v99x8_device::mode_graphic6(const pen_t *pens, uint16_t *ln, int line) if ( (m_cont_reg[2] & 0x20) && v9938_second_field() ) nametbl_addr += 0x10000; - pen_bg = pens[m_pal_ind16[(m_cont_reg[7]&0x0f)]]; + pen_bg = pen(m_pal_ind16[m_cont_reg[7] & 0x0f]); xx = m_offset_x * 2; while (xx--) *ln++ = pen_bg; @@ -1296,8 +1295,8 @@ void v99x8_device::mode_graphic6(const pen_t *pens, uint16_t *ln, int line) { nametbl_addr++; colour = m_vram_space->read_byte(((nametbl_addr&1) << 16) | (nametbl_addr>>1)); - fg0 = pens[m_pal_ind16[colour>>4]]; - fg1 = pens[m_pal_ind16[colour&15]]; + fg0 = pen(m_pal_ind16[colour >> 4]); + fg1 = pen(m_pal_ind16[colour & 15]); *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1; *ln++ = fg0; *ln++ = fg1; @@ -1310,8 +1309,8 @@ void v99x8_device::mode_graphic6(const pen_t *pens, uint16_t *ln, int line) for (x=0;x<256;x++) { colour = m_vram_space->read_byte(((nametbl_addr&1) << 16) | (nametbl_addr>>1)); - *ln++ = pens[m_pal_ind16[colour>>4]]; - *ln++ = pens[m_pal_ind16[colour&15]]; + *ln++ = pen(m_pal_ind16[colour >> 4]); + *ln++ = pen(m_pal_ind16[colour & 15]); nametbl_addr++; } } @@ -1320,11 +1319,11 @@ void v99x8_device::mode_graphic6(const pen_t *pens, uint16_t *ln, int line) while (xx--) *ln++ = pen_bg; } -void v99x8_device::mode_graphic7(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_graphic7(uint16_t *ln, int line) { uint8_t colour; int line2, linemask, x, xx, nametbl_addr; - uint16_t pen, pen_bg; + pen_t pen, pen_bg; linemask = ((m_cont_reg[2] & 0x1f) << 3) | 7; @@ -1334,7 +1333,7 @@ void v99x8_device::mode_graphic7(const pen_t *pens, uint16_t *ln, int line) if ( (m_cont_reg[2] & 0x20) && v9938_second_field() ) nametbl_addr += 0x10000; - pen_bg = pens[m_pal_ind256[m_cont_reg[7]]]; + pen_bg = this->pen(m_pal_ind256[m_cont_reg[7]]); xx = m_offset_x * 2; while (xx--) *ln++ = pen_bg; @@ -1410,7 +1409,7 @@ void v99x8_device::mode_graphic7(const pen_t *pens, uint16_t *ln, int line) { nametbl_addr++; colour = m_vram_space->read_byte(((nametbl_addr&1) << 16) | (nametbl_addr>>1)); - pen = pens[m_pal_ind256[colour]]; + pen = this->pen(m_pal_ind256[colour]); *ln++ = pen; *ln++ = pen; *ln++ = pen; *ln++ = pen; *ln++ = pen; *ln++ = pen; @@ -1427,7 +1426,7 @@ void v99x8_device::mode_graphic7(const pen_t *pens, uint16_t *ln, int line) for (x=0;x<256;x++) { colour = m_vram_space->read_byte(((nametbl_addr&1) << 16) | (nametbl_addr>>1)); - pen = pens[m_pal_ind256[colour]]; + pen = this->pen(m_pal_ind256[colour]); *ln++ = pen; *ln++ = pen; nametbl_addr++; @@ -1438,13 +1437,13 @@ void v99x8_device::mode_graphic7(const pen_t *pens, uint16_t *ln, int line) while (xx--) *ln++ = pen_bg; } -void v99x8_device::mode_unknown(const pen_t *pens, uint16_t *ln, int line) +void v99x8_device::mode_unknown(uint16_t *ln, int line) { - uint16_t fg, bg; + pen_t fg, bg; int x; - fg = pens[m_pal_ind16[m_cont_reg[7] >> 4]]; - bg = pens[m_pal_ind16[m_cont_reg[7] & 15]]; + fg = pen(m_pal_ind16[m_cont_reg[7] >> 4]); + bg = pen(m_pal_ind16[m_cont_reg[7] & 15]); x = m_offset_x * 2; while (x--) *ln++ = bg; @@ -1456,7 +1455,7 @@ void v99x8_device::mode_unknown(const pen_t *pens, uint16_t *ln, int line) while (x--) *ln++ = bg; } -void v99x8_device::default_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t *col) +void v99x8_device::default_draw_sprite(uint16_t *ln, uint8_t *col) { int i; ln += m_offset_x * 2; @@ -1465,8 +1464,8 @@ void v99x8_device::default_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t { if (col[i] & 0x80) { - *ln++ = pens[m_pal_ind16[col[i]&0x0f]]; - *ln++ = pens[m_pal_ind16[col[i]&0x0f]]; + *ln++ = pen(m_pal_ind16[col[i] & 0x0f]); + *ln++ = pen(m_pal_ind16[col[i] & 0x0f]); } else { @@ -1475,7 +1474,7 @@ void v99x8_device::default_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t } } -void v99x8_device::graphic5_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t *col) +void v99x8_device::graphic5_draw_sprite(uint16_t *ln, uint8_t *col) { int i; ln += m_offset_x * 2; @@ -1484,8 +1483,8 @@ void v99x8_device::graphic5_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t { if (col[i] & 0x80) { - *ln++ = pens[m_pal_ind16[(col[i]>>2)&0x03]]; - *ln++ = pens[m_pal_ind16[col[i]&0x03]]; + *ln++ = pen(m_pal_ind16[(col[i] >> 2) & 0x03]); + *ln++ = pen(m_pal_ind16[col[i] & 0x03]); } else { @@ -1495,7 +1494,7 @@ void v99x8_device::graphic5_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t } -void v99x8_device::graphic7_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t *col) +void v99x8_device::graphic7_draw_sprite(uint16_t *ln, uint8_t *col) { static const uint16_t g7_ind16[16] = { 0, 2, 192, 194, 48, 50, 240, 242, @@ -1508,8 +1507,8 @@ void v99x8_device::graphic7_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t { if (col[i] & 0x80) { - *ln++ = pens[g7_ind16[col[i]&0x0f]]; - *ln++ = pens[g7_ind16[col[i]&0x0f]]; + *ln++ = pen(g7_ind16[col[i] & 0x0f]); + *ln++ = pen(g7_ind16[col[i] & 0x0f]); } else { @@ -1853,7 +1852,6 @@ void v99x8_device::set_mode() void v99x8_device::refresh_16(int line) { - const pen_t *pens = m_palette->pens(); bool double_lines = false; uint8_t col[256]; uint16_t *ln, *ln2 = nullptr; @@ -1871,15 +1869,15 @@ void v99x8_device::refresh_16(int line) if ( !(m_cont_reg[1] & 0x40) || (m_stat_reg[2] & 0x40) ) { - (this->*s_modes[m_mode].border_16)(pens, ln); + (this->*s_modes[m_mode].border_16)(ln); } else { - (this->*s_modes[m_mode].visible_16)(pens, ln, line); + (this->*s_modes[m_mode].visible_16)(ln, line); if (s_modes[m_mode].sprites) { (this->*s_modes[m_mode].sprites)(line, col); - (this->*s_modes[m_mode].draw_sprite_16)(pens, ln, col); + (this->*s_modes[m_mode].draw_sprite_16)(ln, col); } } @@ -2272,7 +2270,7 @@ inline void v99x8_device::VDPpsetlowlevel(int addr, uint8_t CL, uint8_t M, uint8 case 11: if (CL) val ^= CL; break; case 12: if (CL) val = (val & M) | ~(CL|M); break; default: - LOG(("v9938: invalid operation %d in pset\n", OP)); + LOG("v9938: invalid operation %d in pset\n", OP); } m_vram_space->write_byte(addr, val); @@ -2899,12 +2897,12 @@ void v99x8_device::report_vdp_command(uint8_t Op) CM = Op>>4; LO = Op&0x0F; - LOG(("V9938: Opcode %02Xh %s-%s (%d,%d)->(%d,%d),%d [%d,%d]%s\n", + LOG("V9938: Opcode %02Xh %s-%s (%d,%d)->(%d,%d),%d [%d,%d]%s\n", Op, Commands[CM], Ops[LO], SX,SY, DX,DY, CL, m_cont_reg[45]&0x04? -NX:NX, m_cont_reg[45]&0x08? -NY:NY, m_cont_reg[45]&0x70? " on ExtVRAM":"" - )); + ); } /** VDPDraw() ************************************************/ @@ -2981,7 +2979,7 @@ uint8_t v99x8_device::command_unit_w(uint8_t Op) m_vdp_engine=&v99x8_device::hmmc_engine; break; default: - LOG(("V9938: Unrecognized opcode %02Xh\n",Op)); + LOG("V9938: Unrecognized opcode %02Xh\n",Op); return(0); } @@ -3050,33 +3048,3 @@ void v99x8_device::update_command() if(m_vdp_engine) (this->*m_vdp_engine)(); } } - -static MACHINE_CONFIG_FRAGMENT( v9938 ) - MCFG_PALETTE_ADD("palette", 512) - MCFG_PALETTE_INIT_OWNER(v9938_device, v9938) -MACHINE_CONFIG_END - -//------------------------------------------------- -// machine_config_additions - return a pointer to -// the device's machine fragment -//------------------------------------------------- - -machine_config_constructor v9938_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( v9938 ); -} - -static MACHINE_CONFIG_FRAGMENT( v9958 ) - MCFG_PALETTE_ADD("palette", 19780) - MCFG_PALETTE_INIT_OWNER(v9958_device, v9958) -MACHINE_CONFIG_END - -//------------------------------------------------- -// machine_config_additions - return a pointer to -// the device's machine fragment -//------------------------------------------------- - -machine_config_constructor v9958_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( v9958 ); -} diff --git a/src/devices/video/v9938.h b/src/devices/video/v9938.h index a927de33bd3..ff8e4d27b28 100644 --- a/src/devices/video/v9938.h +++ b/src/devices/video/v9938.h @@ -6,8 +6,8 @@ ***************************************************************************/ -#ifndef MAME_DEVICES_VIDEO_V9938_H -#define MAME_DEVICES_VIDEO_V9938_H +#ifndef MAME_VIDEO_V9938_H +#define MAME_VIDEO_V9938_H #pragma once @@ -37,7 +37,7 @@ v99x8_device::VERTICAL_ADJUST * 2, \ v99x8_device::VVISIBLE_NTSC * 2 - 1 - v99x8_device::VERTICAL_ADJUST * 2) \ MCFG_SCREEN_UPDATE_DEVICE(_v9938_tag, v9938_device, screen_update) \ - MCFG_SCREEN_PALETTE(_v9938_tag":palette") + MCFG_SCREEN_PALETTE(_v9938_tag) #define MCFG_V99X8_SCREEN_ADD_PAL(_screen_tag, _v9938_tag, _clock) \ MCFG_SCREEN_ADD(_screen_tag, RASTER) \ @@ -49,7 +49,7 @@ v99x8_device::VERTICAL_ADJUST * 2, \ v99x8_device::VVISIBLE_PAL * 2 - 1 - v99x8_device::VERTICAL_ADJUST * 2) \ MCFG_SCREEN_UPDATE_DEVICE(_v9938_tag, v9938_device, screen_update) \ - MCFG_SCREEN_PALETTE(_v9938_tag":palette") + MCFG_SCREEN_PALETTE(_v9938_tag) #define MCFG_V99X8_INTERRUPT_CALLBACK(_irq) \ devcb = &downcast(device)->set_interrupt_callback(DEVCB_##_irq); @@ -60,8 +60,8 @@ //************************************************************************** // device type definition -extern const device_type V9938; -extern const device_type V9958; +DECLARE_DEVICE_TYPE(V9938, v9938_device) +DECLARE_DEVICE_TYPE(V9958, v9958_device) @@ -73,16 +73,11 @@ extern const device_type V9958; class v99x8_device : public device_t, public device_memory_interface, + public device_palette_interface, public device_video_interface { -protected: - // construction/destruction - v99x8_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, uint32_t clock); - public: - template devcb_base &set_interrupt_callback(_irq irq) { - return m_int_callback.set_callback(irq); - } + template devcb_base &set_interrupt_callback(Object &&irq) { return m_int_callback.set_callback(std::forward(irq)); } int get_transpen(); bitmap_ind16 &get_bitmap() { return m_bitmap; } void update_mouse_state(int mx_delta, int my_delta, int button_state); @@ -104,26 +99,29 @@ public: /* RESET pin */ void reset_line(int state) { if (state==ASSERT_LINE) device_reset(); } - static const int HTOTAL = 684; - static const int HVISIBLE = 544; - static const int VTOTAL_NTSC = 262; - static const int VTOTAL_PAL = 313; - static const int VVISIBLE_NTSC = 26 + 192 + 25; - static const int VVISIBLE_PAL = 53 + 192 + 49; + static constexpr int HTOTAL = 684; + static constexpr int HVISIBLE = 544; + static constexpr int VTOTAL_NTSC = 262; + static constexpr int VTOTAL_PAL = 313; + static constexpr int VVISIBLE_NTSC = 26 + 192 + 25; + static constexpr int VVISIBLE_PAL = 53 + 192 + 49; // Looking at some youtube videos of real units on real monitors // there appear to be small vertical timing differences. Some (LCD) // monitors show the full borders, other CRT monitors seem to // display ~5 lines less at the top and bottom of the screen. - static const int VERTICAL_ADJUST = 5; - static const int TOP_ERASE = 13; - static const int VERTICAL_SYNC = 3; + static constexpr int VERTICAL_ADJUST = 5; + static constexpr int TOP_ERASE = 13; + static constexpr int VERTICAL_SYNC = 3; protected: - static const device_timer_id TIMER_LINE = 0; + // construction/destruction + v99x8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int model); + + static constexpr device_timer_id TIMER_LINE = 0; const address_space_config m_space_config; address_space* m_vram_space; - int m_model; + const int m_model; // device overrides virtual void device_start() override; @@ -131,7 +129,9 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_DATA) const override { return (spacenum == AS_DATA) ? &m_space_config : nullptr; } + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_DATA) ? &m_space_config : nullptr; } + + virtual void palette_init() = 0; void configure_pal_ntsc(); void set_screen_parameters(); @@ -145,24 +145,24 @@ private: void check_int(); void register_write(int reg, int data); - void default_border(const pen_t *pens, uint16_t *ln); - void graphic7_border(const pen_t *pens, uint16_t *ln); - void graphic5_border(const pen_t *pens, uint16_t *ln); - void mode_text1(const pen_t *pens, uint16_t *ln, int line); - void mode_text2(const pen_t *pens, uint16_t *ln, int line); - void mode_multi(const pen_t *pens, uint16_t *ln, int line); - void mode_graphic1(const pen_t *pens, uint16_t *ln, int line); - void mode_graphic23(const pen_t *pens, uint16_t *ln, int line); - void mode_graphic4(const pen_t *pens, uint16_t *ln, int line); - void mode_graphic5(const pen_t *pens, uint16_t *ln, int line); - void mode_graphic6(const pen_t *pens, uint16_t *ln, int line); - void mode_graphic7(const pen_t *pens, uint16_t *ln, int line); -// template void mode_yae(const pen_t *pens, _PixelType *ln, int line); -// template void mode_yjk(const pen_t *pens, _PixelType *ln, int line); - void mode_unknown(const pen_t *pens, uint16_t *ln, int line); - void default_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t *col); - void graphic5_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t *col); - void graphic7_draw_sprite(const pen_t *pens, uint16_t *ln, uint8_t *col); + void default_border(uint16_t *ln); + void graphic7_border(uint16_t *ln); + void graphic5_border(uint16_t *ln); + void mode_text1(uint16_t *ln, int line); + void mode_text2(uint16_t *ln, int line); + void mode_multi(uint16_t *ln, int line); + void mode_graphic1(uint16_t *ln, int line); + void mode_graphic23(uint16_t *ln, int line); + void mode_graphic4(uint16_t *ln, int line); + void mode_graphic5(uint16_t *ln, int line); + void mode_graphic6(uint16_t *ln, int line); + void mode_graphic7(uint16_t *ln, int line); +// template void mode_yae(_PixelType *ln, int line); +// template void mode_yjk(_PixelType *ln, int line); + void mode_unknown(uint16_t *ln, int line); + void default_draw_sprite(uint16_t *ln, uint8_t *col); + void graphic5_draw_sprite(uint16_t *ln, uint8_t *col); + void graphic7_draw_sprite(uint16_t *ln, uint8_t *col); void sprite_mode1(int line, uint8_t *col); void sprite_mode2(int line, uint8_t *col); @@ -257,13 +257,12 @@ private: struct v99x8_mode { uint8_t m; - void (v99x8_device::*visible_16)(const pen_t *, uint16_t*, int); - void (v99x8_device::*border_16)(const pen_t *, uint16_t*); + void (v99x8_device::*visible_16)(uint16_t*, int); + void (v99x8_device::*border_16)(uint16_t*); void (v99x8_device::*sprites)(int, uint8_t*); - void (v99x8_device::*draw_sprite_16)(const pen_t *, uint16_t*, uint8_t*); + void (v99x8_device::*draw_sprite_16)(uint16_t*, uint8_t*); } ; static const v99x8_mode s_modes[]; - required_device m_palette; emu_timer *m_line_timer; uint8_t m_pal_ntsc; int m_scanline_start; @@ -280,9 +279,9 @@ class v9938_device : public v99x8_device public: v9938_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_PALETTE_INIT(v9938); protected: - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void palette_init() override; + virtual u32 palette_entries() const override { return 512; } }; class v9958_device : public v99x8_device @@ -290,10 +289,9 @@ class v9958_device : public v99x8_device public: v9958_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_PALETTE_INIT(v9958); - protected: - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void palette_init() override; + virtual u32 palette_entries() const override { return 19780; } }; diff --git a/src/devices/video/vector.cpp b/src/devices/video/vector.cpp index 70fa93f44bb..57f5366aba1 100644 --- a/src/devices/video/vector.cpp +++ b/src/devices/video/vector.cpp @@ -65,10 +65,10 @@ void vector_options::init(emu_options& options) } // device type definition -const device_type VECTOR = device_creator; +DEFINE_DEVICE_TYPE(VECTOR, vector_device, "vector_device", "VECTOR") vector_device::vector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VECTOR, "VECTOR", tag, owner, clock, "vector_device", __FILE__), + : device_t(mconfig, VECTOR, tag, owner, clock), device_video_interface(mconfig, *this), m_vector_list(nullptr), m_min_intensity(255), diff --git a/src/devices/video/vector.h b/src/devices/video/vector.h index 130cbb6b2fb..dca693133f8 100644 --- a/src/devices/video/vector.h +++ b/src/devices/video/vector.h @@ -1,33 +1,13 @@ // license:BSD-3-Clause // copyright-holders:Brad Oliver,Aaron Giles,Bernd Wiebelt,Allard van der Bas -#ifndef __VECTOR__ -#define __VECTOR__ +#ifndef MAME_VIDEO_VECTOR_H +#define MAME_VIDEO_VECTOR_H -#define VECTOR_COLOR111(c) \ - rgb_t(pal1bit((c) >> 2), pal1bit((c) >> 1), pal1bit((c) >> 0)) +#pragma once -#define VECTOR_COLOR222(c) \ - rgb_t(pal2bit((c) >> 4), pal2bit((c) >> 2), pal2bit((c) >> 0)) - -#define VECTOR_COLOR444(c) \ - rgb_t(pal4bit((c) >> 8), pal4bit((c) >> 4), pal4bit((c) >> 0)) class vector_device; -/* The vertices are buffered here */ -struct point -{ - point() : - x(0), - y(0), - col(0), - intensity(0) {} - - int x; int y; - rgb_t col; - int intensity; -}; - class vector_options { public: @@ -45,6 +25,10 @@ protected: class vector_device : public device_t, public device_video_interface { public: + template static constexpr rgb_t color111(T c) { return rgb_t(pal1bit(c >> 2), pal1bit(c >> 1), pal1bit(c >> 0)); } + template static constexpr rgb_t color222(T c) { return rgb_t(pal2bit(c >> 4), pal2bit(c >> 2), pal2bit(c >> 0)); } + template static constexpr rgb_t color444(T c) { return rgb_t(pal4bit(c >> 8), pal4bit(c >> 4), pal4bit(c >> 0)); } + // construction/destruction vector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -57,6 +41,16 @@ public: virtual void device_start() override; private: + /* The vertices are buffered here */ + struct point + { + point() : x(0), y(0), col(0), intensity(0) { } + + int x; int y; + rgb_t col; + int intensity; + }; + std::unique_ptr m_vector_list; int m_vector_index; int m_min_intensity; @@ -66,9 +60,9 @@ private: }; // device type definition -extern const device_type VECTOR; +DECLARE_DEVICE_TYPE(VECTOR, vector_device) #define MCFG_VECTOR_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, VECTOR, 0) -#endif +#endif // MAME_VIDEO_VECTOR_H diff --git a/src/devices/video/vic4567.cpp b/src/devices/video/vic4567.cpp index cbf7d7ac10a..dceeb94be12 100644 --- a/src/devices/video/vic4567.cpp +++ b/src/devices/video/vic4567.cpp @@ -59,8 +59,8 @@ #define VIC6567_Y_BEGIN -6 /* first 6 lines after retrace not for lightpen! */ #define VIC6569_X_BEGIN 38 #define VIC6569_Y_BEGIN -6 -#define VIC2_X_BEGIN ((m_type == VIC4567_PAL) ? VIC6569_X_BEGIN : VIC6567_X_BEGIN) -#define VIC2_Y_BEGIN ((m_type == VIC4567_PAL) ? VIC6569_Y_BEGIN : VIC6567_Y_BEGIN) +#define VIC2_X_BEGIN ((m_type == vic3_type::PAL) ? VIC6569_X_BEGIN : VIC6567_X_BEGIN) +#define VIC2_Y_BEGIN ((m_type == vic3_type::PAL) ? VIC6569_Y_BEGIN : VIC6567_Y_BEGIN) #define VIC2_X_VALUE ((LIGHTPEN_X_VALUE + VIC2_X_BEGIN + VIC2_MAME_XPOS) / 2) #define VIC2_Y_VALUE ((LIGHTPEN_Y_VALUE + VIC2_Y_BEGIN + VIC2_MAME_YPOS)) @@ -127,12 +127,12 @@ #define FOREGROUNDCOLOR (m_reg[0x24] & 0x0f) -#define VIC2_LINES (m_type == VIC4567_PAL ? VIC6569_LINES : VIC6567_LINES) -#define VIC2_VISIBLELINES (m_type == VIC4567_PAL ? VIC6569_VISIBLELINES : VIC6567_VISIBLELINES) -#define VIC2_VISIBLECOLUMNS (m_type == VIC4567_PAL ? VIC6569_VISIBLECOLUMNS : VIC6567_VISIBLECOLUMNS) +#define VIC2_LINES (m_type == vic3_type::PAL ? VIC6569_LINES : VIC6567_LINES) +#define VIC2_VISIBLELINES (m_type == vic3_type::PAL ? VIC6569_VISIBLELINES : VIC6567_VISIBLELINES) +#define VIC2_VISIBLECOLUMNS (m_type == vic3_type::PAL ? VIC6569_VISIBLECOLUMNS : VIC6567_VISIBLECOLUMNS) #define VIC2_STARTVISIBLELINES ((VIC2_LINES - VIC2_VISIBLELINES)/2) -#define VIC2_FIRSTRASTERLINE (m_type == VIC4567_PAL ? VIC6569_FIRSTRASTERLINE : VIC6567_FIRSTRASTERLINE) -#define VIC2_COLUMNS (m_type == VIC4567_PAL ? VIC6569_COLUMNS : VIC6567_COLUMNS) +#define VIC2_FIRSTRASTERLINE (m_type == vic3_type::PAL ? VIC6569_FIRSTRASTERLINE : VIC6567_FIRSTRASTERLINE) +#define VIC2_COLUMNS (m_type == vic3_type::PAL ? VIC6569_COLUMNS : VIC6567_COLUMNS) #define VIC2_STARTVISIBLECOLUMNS ((VIC2_COLUMNS - VIC2_VISIBLECOLUMNS)/2) #define VIC3_BITPLANES_MASK (m_reg[0x32]) @@ -145,22 +145,22 @@ #define VIC3_BITPLANE_IADDR(x) (x & 1 ? VIC3_BITPLANE_IADDR_HELPER(x) + 0x10000 : VIC3_BITPLANE_IADDR_HELPER(x)) -const device_type VIC3 = device_creator; +DEFINE_DEVICE_TYPE(VIC3, vic3_device, "vic3", "CSG 4567 VIC-III") vic3_device::vic3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VIC3, "4567 VIC III", tag, owner, clock, "vic3", __FILE__), - device_video_interface(mconfig, *this), - m_type(VIC4567_NTSC), - m_cpu(*this, finder_base::DUMMY_TAG), - m_dma_read_cb(*this), - m_dma_read_color_cb(*this), - m_interrupt_cb(*this), - m_port_changed_cb(*this), - m_lightpen_button_cb(*this), - m_lightpen_x_cb(*this), - m_lightpen_y_cb(*this), - m_c64_mem_r_cb(*this), - m_palette(*this, "palette") + : device_t(mconfig, VIC3, tag, owner, clock) + , device_video_interface(mconfig, *this) + , m_type(vic3_type::NTSC) + , m_cpu(*this, finder_base::DUMMY_TAG) + , m_dma_read_cb(*this) + , m_dma_read_color_cb(*this) + , m_interrupt_cb(*this) + , m_port_changed_cb(*this) + , m_lightpen_button_cb(*this) + , m_lightpen_x_cb(*this) + , m_lightpen_y_cb(*this) + , m_c64_mem_r_cb(*this) + , m_palette(*this, "palette") { } @@ -1971,7 +1971,7 @@ void vic3_device::raster_interrupt_gen() { m_rows = new_rows; m_columns = new_columns; - if (m_type == VIC4567_PAL) + if (m_type == vic3_type::PAL) m_screen->set_visible_area( VIC2_STARTVISIBLECOLUMNS + 32, VIC2_STARTVISIBLECOLUMNS + 32 + m_columns + 16 - 1, @@ -1990,7 +1990,7 @@ void vic3_device::raster_interrupt_gen() } else { - if (m_type == VIC4567_PAL) + if (m_type == vic3_type::PAL) { if (m_on) vic2_drawlines(m_lastline, m_lines, VIC2_STARTVISIBLECOLUMNS + 32, VIC2_STARTVISIBLECOLUMNS + 32 + m_columns + 16 - 1); @@ -2023,7 +2023,7 @@ void vic3_device::raster_interrupt_gen() if (m_on) if ((m_rasterline >= VIC2_FIRSTRASTERLINE) && (m_rasterline < (VIC2_FIRSTRASTERLINE + VIC2_VISIBLELINES))) { - if (m_type == VIC4567_PAL) + if (m_type == vic3_type::PAL) { if (m_on) vic2_drawlines(m_rasterline - 1, m_rasterline, VIC2_STARTVISIBLECOLUMNS + 32, VIC2_STARTVISIBLECOLUMNS + 32 + m_columns + 16 - 1); diff --git a/src/devices/video/vic4567.h b/src/devices/video/vic4567.h index 53320386365..3b787908841 100644 --- a/src/devices/video/vic4567.h +++ b/src/devices/video/vic4567.h @@ -6,35 +6,16 @@ * ****************************************************************************/ -#ifndef __VIC4567_H__ -#define __VIC4567_H__ +#ifndef MAME_VIDEO_VIC4567_H +#define MAME_VIDEO_VIC4567_H + +#pragma once /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ -enum vic3_type -{ - VIC4567_NTSC, - VIC4567_PAL -}; - -#define SPRITE_BASE_X_SIZE 24 -#define SPRITE_BASE_Y_SIZE 21 - -struct vic3_sprite -{ - int x, y; - - int repeat; /* expand, line once drawn */ - int line; /* 0 not painting, else painting */ - - /* buffer for currently painted line */ - int paintedline[8]; - uint8_t bitmap[8][SPRITE_BASE_X_SIZE * 2 / 8 + 1 /*for simpler sprite collision detection*/]; -}; - /*************************************************************************** CONSTANTS @@ -124,19 +105,20 @@ class vic3_device : public device_t, public device_video_interface { public: + enum class vic3_type { NTSC, PAL }; + vic3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~vic3_device() {} static void static_set_cpu_tag(device_t &device, const char *tag) { downcast(device).m_cpu.set_tag(tag); } static void set_vic3_type(device_t &device, vic3_type type) { downcast(device).m_type = type; } - template static devcb_base &set_dma_read_callback(device_t &device, _Object object) { return downcast(device).m_dma_read_cb.set_callback(object); } - template static devcb_base &set_dma_read_color_callback(device_t &device, _Object object) { return downcast(device).m_dma_read_color_cb.set_callback(object); } - template static devcb_base &set_interrupt_callback(device_t &device, _Object object) { return downcast(device).m_interrupt_cb.set_callback(object); } - template static devcb_base &set_port_changed_callback(device_t &device, _Object object) { return downcast(device).m_port_changed_cb.set_callback(object); } - template static devcb_base &set_lightpen_button_callback(device_t &device, _Object object) { return downcast(device).m_lightpen_button_cb.set_callback(object); } - template static devcb_base &set_lightpen_x_callback(device_t &device, _Object object) { return downcast(device).m_lightpen_x_cb.set_callback(object); } - template static devcb_base &set_lightpen_y_callback(device_t &device, _Object object) { return downcast(device).m_lightpen_y_cb.set_callback(object); } - template static devcb_base &set_c64_mem_r_callback(device_t &device, _Object object) { return downcast(device).m_c64_mem_r_cb.set_callback(object); } + template static devcb_base &set_dma_read_callback(device_t &device, Object &&cb) { return downcast(device).m_dma_read_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_dma_read_color_callback(device_t &device, Object &&cb) { return downcast(device).m_dma_read_color_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_interrupt_callback(device_t &device, Object &&cb) { return downcast(device).m_interrupt_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_port_changed_callback(device_t &device, Object &&cb) { return downcast(device).m_port_changed_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_lightpen_button_callback(device_t &device, Object &&cb) { return downcast(device).m_lightpen_button_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_lightpen_x_callback(device_t &device, Object &&cb) { return downcast(device).m_lightpen_x_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_lightpen_y_callback(device_t &device, Object &&cb) { return downcast(device).m_lightpen_y_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_c64_mem_r_callback(device_t &device, Object &&cb) { return downcast(device).m_c64_mem_r_cb.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER(port_w); DECLARE_WRITE8_MEMBER(palette_w); @@ -150,9 +132,24 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; + private: - // internal state + static constexpr unsigned SPRITE_BASE_X_SIZE = 24; + static constexpr unsigned SPRITE_BASE_Y_SIZE = 21; + + struct vic3_sprite + { + int x, y; + int repeat; /* expand, line once drawn */ + int line; /* 0 not painting, else painting */ + + /* buffer for currently painted line */ + int paintedline[8]; + uint8_t bitmap[8][SPRITE_BASE_X_SIZE * 2 / 8 + 1 /*for simpler sprite collision detection*/]; + }; + + // internal state inline int getforeground(int y, int x); inline int getforeground16(int y, int x); void set_interrupt(int mask); @@ -236,38 +233,37 @@ private: required_device m_palette; }; -extern const device_type VIC3; - +DECLARE_DEVICE_TYPE(VIC3, vic3_device) -#define MCFG_VIC3_CPU(_tag) \ - vic3_device::static_set_cpu_tag(*device, "^" _tag); -#define MCFG_VIC3_TYPE(_type) \ - vic3_device::set_vic3_type(*device, _type); +#define MCFG_VIC3_CPU(tag) \ + vic3_device::static_set_cpu_tag(*device, ("^" tag)); -#define MCFG_VIC3_DMA_READ_CB(_devcb) \ - devcb = &vic3_device::set_dma_read_callback(*device, DEVCB_##_devcb); +#define MCFG_VIC3_TYPE(type) \ + vic3_device::set_vic3_type(*device, (vic3_device::vic3_type::type)); -#define MCFG_VIC3_DMA_READ_COLOR_CB(_devcb) \ - devcb = &vic3_device::set_dma_read_color_callback(*device, DEVCB_##_devcb); +#define MCFG_VIC3_DMA_READ_CB(cb) \ + devcb = &vic3_device::set_dma_read_callback(*device, (DEVCB_##cb)); -#define MCFG_VIC3_INTERRUPT_CB(_devcb) \ - devcb = &vic3_device::set_interrupt_callback(*device, DEVCB_##_devcb); +#define MCFG_VIC3_DMA_READ_COLOR_CB(cb) \ + devcb = &vic3_device::set_dma_read_color_callback(*device, (DEVCB_##cb)); -#define MCFG_VIC3_PORT_CHANGED_CB(_devcb) \ - devcb = &vic3_device::set_port_changed_callback(*device, DEVCB_##_devcb); +#define MCFG_VIC3_INTERRUPT_CB(cb) \ + devcb = &vic3_device::set_interrupt_callback(*device, (DEVCB_##cb)); -#define MCFG_VIC3_LIGHTPEN_BUTTON_CB(_devcb) \ - devcb = &vic3_device::set_lightpen_button_callback(*device, DEVCB_##_devcb); +#define MCFG_VIC3_PORT_CHANGED_CB(cb) \ + devcb = &vic3_device::set_port_changed_callback(*device, (DEVCB_##cb)); -#define MCFG_VIC3_LIGHTPEN_X_CB(_devcb) \ - devcb = &vic3_device::set_lightpen_x_callback(*device, DEVCB_##_devcb); +#define MCFG_VIC3_LIGHTPEN_BUTTON_CB(cb) \ + devcb = &vic3_device::set_lightpen_button_callback(*device, (DEVCB_##cb)); -#define MCFG_VIC3_LIGHTPEN_Y_CB(_devcb) \ - devcb = &vic3_device::set_lightpen_y_callback(*device, DEVCB_##_devcb); +#define MCFG_VIC3_LIGHTPEN_X_CB(cb) \ + devcb = &vic3_device::set_lightpen_x_callback(*device, (DEVCB_##cb)); -#define MCFG_VIC3_C64_MEM_R_CB(_devcb) \ - devcb = &vic3_device::set_c64_mem_r_callback(*device, DEVCB_##_devcb); +#define MCFG_VIC3_LIGHTPEN_Y_CB(cb) \ + devcb = &vic3_device::set_lightpen_y_callback(*device, (DEVCB_##cb)); +#define MCFG_VIC3_C64_MEM_R_CB(cb) \ + devcb = &vic3_device::set_c64_mem_r_callback(*device, (DEVCB_##cb)); -#endif /* __VIC4567_H__ */ +#endif // MAME_VIDEO_VIC4567_H diff --git a/src/devices/video/vooddefs.h b/src/devices/video/vooddefs.h index 810fdc557e1..a9e653dc93d 100644 --- a/src/devices/video/vooddefs.h +++ b/src/devices/video/vooddefs.h @@ -8,12 +8,12 @@ ***************************************************************************/ -#ifndef MAME_DEVICES_VIDEO_VOODDEFS_H -#define MAME_DEVICES_VIDEO_VOODDEFS_H +#ifndef MAME_VIDEO_VOODDEFS_H +#define MAME_VIDEO_VOODDEFS_H #pragma once -#include "video/rgbutil.h" +#include "voodoo.h" @@ -23,8 +23,7 @@ * *************************************/ -struct voodoo_state; -struct poly_extra_data; +typedef voodoo_reg rgb_union; @@ -36,88 +35,53 @@ struct poly_extra_data; * *************************************/ -static inline void fifo_reset(fifo_state *f) +inline void voodoo_device::fifo_state::add(uint32_t data) { - f->in = f->out = 0; -} - - -static inline void fifo_add(fifo_state *f, uint32_t data) -{ - int32_t next_in; - /* compute the value of 'in' after we add this item */ - next_in = f->in + 1; - if (next_in >= f->size) + int32_t next_in = in + 1; + if (next_in >= size) next_in = 0; /* as long as it's not equal to the output pointer, we can do it */ - if (next_in != f->out) + if (next_in != out) { - f->base[f->in] = data; - f->in = next_in; + base[in] = data; + in = next_in; } } -static inline uint32_t fifo_remove(fifo_state *f) +inline uint32_t voodoo_device::fifo_state::remove() { uint32_t data = 0xffffffff; /* as long as we have data, we can do it */ - if (f->out != f->in) + if (out != in) { int32_t next_out; /* fetch the data */ - data = f->base[f->out]; + data = base[out]; /* advance the output pointer */ - next_out = f->out + 1; - if (next_out >= f->size) + next_out = out + 1; + if (next_out >= size) next_out = 0; - f->out = next_out; + out = next_out; } return data; } -static inline uint32_t fifo_peek(fifo_state *f) -{ - return f->base[f->out]; -} - - -static inline int fifo_empty(fifo_state *f) -{ - return (f->in == f->out); -} - - -static inline int fifo_full(fifo_state *f) -{ - return (f->in + 1 == f->out || (f->in == f->size - 1 && f->out == 0)); -} - - -static inline int32_t fifo_items(fifo_state *f) +inline int32_t voodoo_device::fifo_state::items() const { - int32_t items = f->in - f->out; + int32_t items = in - out; if (items < 0) - items += f->size; + items += size; return items; } -static inline int32_t fifo_space(fifo_state *f) -{ - int32_t items = f->in - f->out; - if (items < 0) - items += f->size; - return f->size - 1 - items; -} - - /************************************* * @@ -333,24 +297,24 @@ static inline uint32_t normalize_tex_mode(uint32_t eff_tex_mode) } -static inline uint32_t compute_raster_hash(const raster_info *info) +inline uint32_t voodoo_device::raster_info::compute_hash() const { - uint32_t hash; + uint32_t result; /* make a hash */ - hash = info->eff_color_path; - hash = (hash << 1) | (hash >> 31); - hash ^= info->eff_fbz_mode; - hash = (hash << 1) | (hash >> 31); - hash ^= info->eff_alpha_mode; - hash = (hash << 1) | (hash >> 31); - hash ^= info->eff_fog_mode; - hash = (hash << 1) | (hash >> 31); - hash ^= info->eff_tex_mode_0; - hash = (hash << 1) | (hash >> 31); - hash ^= info->eff_tex_mode_1; - - return hash % RASTER_HASH_SIZE; + result = eff_color_path; + result = (result << 1) | (result >> 31); + result ^= eff_fbz_mode; + result = (result << 1) | (result >> 31); + result ^= eff_alpha_mode; + result = (result << 1) | (result >> 31); + result ^= eff_fog_mode; + result = (result << 1) | (result >> 31); + result ^= eff_tex_mode_0; + result = (result << 1) | (result >> 31); + result ^= eff_tex_mode_1; + + return result % RASTER_HASH_SIZE; } @@ -637,7 +601,7 @@ do } \ while (0) -static inline bool ATTR_FORCE_INLINE chromaKeyTest(voodoo_device *vd, stats_block *stats, uint32_t fbzModeReg, rgbaint_t rgbaIntColor) +inline bool ATTR_FORCE_INLINE voodoo_device::chromaKeyTest(voodoo_device *vd, stats_block *stats, uint32_t fbzModeReg, rgbaint_t rgbaIntColor) { if (FBZMODE_ENABLE_CHROMAKEY(fbzModeReg)) { @@ -726,7 +690,7 @@ do } \ while (0) -static inline bool alphaMaskTest(stats_block *stats, uint32_t fbzModeReg, uint8_t alpha) +inline bool voodoo_device::alphaMaskTest(stats_block *stats, uint32_t fbzModeReg, uint8_t alpha) { if (FBZMODE_ENABLE_ALPHA_MASK(fbzModeReg)) { @@ -812,7 +776,7 @@ do } \ while (0) -static inline bool ATTR_FORCE_INLINE alphaTest(voodoo_device *vd, stats_block *stats, uint32_t alphaModeReg, uint8_t alpha) +inline bool ATTR_FORCE_INLINE voodoo_device::alphaTest(voodoo_device *vd, stats_block *stats, uint32_t alphaModeReg, uint8_t alpha) { if (ALPHAMODE_ALPHATEST(alphaModeReg)) { @@ -2002,7 +1966,7 @@ do } \ while (0) -static inline bool ATTR_FORCE_INLINE depthTest(uint16_t zaColorReg, stats_block *stats, int32_t destDepth, uint32_t fbzModeReg, int32_t biasdepth) +inline bool ATTR_FORCE_INLINE voodoo_device::depthTest(uint16_t zaColorReg, stats_block *stats, int32_t destDepth, uint32_t fbzModeReg, int32_t biasdepth) { /* handle depth buffer testing */ if (FBZMODE_ENABLE_DEPTHBUF(fbzModeReg)) @@ -2413,7 +2377,7 @@ do } \ while (0) -static inline bool ATTR_FORCE_INLINE combineColor(voodoo_device *vd, stats_block *STATS, uint32_t FBZCOLORPATH, uint32_t FBZMODE, uint32_t ALPHAMODE, +inline bool ATTR_FORCE_INLINE voodoo_device::combineColor(voodoo_device *vd, stats_block *STATS, uint32_t FBZCOLORPATH, uint32_t FBZMODE, uint32_t ALPHAMODE, rgbaint_t TEXELARGB, int32_t ITERZ, int64_t ITERW, rgbaint_t &srcColor) { rgbaint_t c_other; @@ -2767,9 +2731,9 @@ void voodoo_device::raster_##name(void *destbase, int32_t y, const poly_extent * if (TMUS >= 2 && vd->tmu[1].lodmin < (8 << 8)) { \ int32_t tmp; \ const rgbaint_t texelZero(0); \ - texel = genTexture(&vd->tmu[1], x, dither4, TEXMODE1, vd->tmu[1].lookup, extra->lodbase1, \ + texel = vd->tmu[1].genTexture(x, dither4, TEXMODE1, vd->tmu[1].lookup, extra->lodbase1, \ iters1, itert1, iterw1, tmp); \ - texel = combineTexture(&vd->tmu[1], TEXMODE1, texel, texelZero, tmp); \ + texel = vd->tmu[1].combineTexture(TEXMODE1, texel, texelZero, tmp); \ } \ /* run the texture pipeline on TMU0 to produce a final */ \ /* result in texel */ \ @@ -2780,9 +2744,9 @@ void voodoo_device::raster_##name(void *destbase, int32_t y, const poly_extent * { \ int32_t lod0; \ rgbaint_t texelT0; \ - texelT0 = genTexture(&vd->tmu[0], x, dither4, TEXMODE0, vd->tmu[0].lookup, extra->lodbase0, \ + texelT0 = vd->tmu[0].genTexture(x, dither4, TEXMODE0, vd->tmu[0].lookup, extra->lodbase0, \ iters0, itert0, iterw0, lod0); \ - texel = combineTexture(&vd->tmu[0], TEXMODE0, texelT0, texel, lod0); \ + texel = vd->tmu[0].combineTexture(TEXMODE0, texelT0, texel, lod0); \ } \ else \ { \ @@ -2853,7 +2817,7 @@ static inline void ATTR_FORCE_INLINE multi_reciplog(int64_t valueA, int64_t valu } -static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, const uint8_t *dither4, const uint32_t TEXMODE, rgb_t *LOOKUP, int32_t LODBASE, int64_t ITERS, int64_t ITERT, int64_t ITERW, int32_t &lod) +inline rgbaint_t ATTR_FORCE_INLINE voodoo_device::tmu_state::genTexture(int32_t x, const uint8_t *dither4, const uint32_t TEXMODE, rgb_t *LOOKUP, int32_t LODBASE, int64_t ITERS, int64_t ITERT, int64_t ITERW, int32_t &lod) { rgbaint_t result; int32_t s, t, ilod; @@ -2885,29 +2849,29 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c } /* clamp the LOD */ - lod += (TT)->lodbias; + lod += lodbias; if (TEXMODE_ENABLE_LOD_DITHER(TEXMODE)) lod += dither4[x&3] << 4; - if (lod < (TT)->lodmin) - lod = (TT)->lodmin; - else if (lod > (TT)->lodmax) - lod = (TT)->lodmax; + if (lod < lodmin) + lod = lodmin; + else if (lod > lodmax) + lod = lodmax; /* now the LOD is in range; if we don't own this LOD, take the next one */ ilod = lod >> 8; - if (!(((TT)->lodmask >> ilod) & 1)) + if (!((lodmask >> ilod) & 1)) ilod++; /* fetch the texture base */ - uint32_t texbase = (TT)->lodoffset[ilod]; + uint32_t texbase = lodoffset[ilod]; /* compute the maximum s and t values at this LOD */ - int32_t smax = (TT)->wmask >> ilod; - int32_t tmax = (TT)->hmask >> ilod; + int32_t smax = wmask >> ilod; + int32_t tmax = hmask >> ilod; /* determine whether we are point-sampled or bilinear */ - if ((lod == (TT)->lodmin && !TEXMODE_MAGNIFICATION_FILTER(TEXMODE)) || - (lod != (TT)->lodmin && !TEXMODE_MINIFICATION_FILTER(TEXMODE))) + if ((lod == lodmin && !TEXMODE_MAGNIFICATION_FILTER(TEXMODE)) || + (lod != lodmin && !TEXMODE_MINIFICATION_FILTER(TEXMODE))) { /* point sampled */ @@ -2929,12 +2893,12 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c /* fetch texel data */ if (TEXMODE_FORMAT(TEXMODE) < 8) { - texel0 = *(uint8_t *)&(TT)->ram[(texbase + t + s) & (TT)->mask]; + texel0 = *(uint8_t *)&ram[(texbase + t + s) & mask]; result.set((LOOKUP)[texel0]); } else { - texel0 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t + s)) & (TT)->mask]; + texel0 = *(uint16_t *)&ram[(texbase + 2*(t + s)) & mask]; if (TEXMODE_FORMAT(TEXMODE) >= 10 && TEXMODE_FORMAT(TEXMODE) <= 12) result.set((LOOKUP)[texel0]); else @@ -2959,8 +2923,8 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c t -= 0x80; /* extract the fractions */ - sfrac = s & (TT)->bilinear_mask; - tfrac = t & (TT)->bilinear_mask; + sfrac = s & bilinear_mask; + tfrac = t & bilinear_mask; /* now toss the rest */ s >>= 8; @@ -3006,10 +2970,10 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c /* fetch texel data */ if (TEXMODE_FORMAT(TEXMODE) < 8) { - texel0 = *(uint8_t *)&(TT)->ram[(texbase + t + s)]; - texel1 = *(uint8_t *)&(TT)->ram[(texbase + t + s1)]; - texel2 = *(uint8_t *)&(TT)->ram[(texbase + t1 + s)]; - texel3 = *(uint8_t *)&(TT)->ram[(texbase + t1 + s1)]; + texel0 = *(uint8_t *)&ram[(texbase + t + s)]; + texel1 = *(uint8_t *)&ram[(texbase + t + s1)]; + texel2 = *(uint8_t *)&ram[(texbase + t1 + s)]; + texel3 = *(uint8_t *)&ram[(texbase + t1 + s1)]; texel0 = (LOOKUP)[texel0]; texel1 = (LOOKUP)[texel1]; texel2 = (LOOKUP)[texel2]; @@ -3017,10 +2981,10 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c } else { - texel0 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t + s))]; - texel1 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t + s1))]; - texel2 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t1 + s))]; - texel3 = *(uint16_t *)&(TT)->ram[(texbase + 2*(t1 + s1))]; + texel0 = *(uint16_t *)&ram[(texbase + 2*(t + s))]; + texel1 = *(uint16_t *)&ram[(texbase + 2*(t + s1))]; + texel2 = *(uint16_t *)&ram[(texbase + 2*(t1 + s))]; + texel3 = *(uint16_t *)&ram[(texbase + 2*(t1 + s1))]; if (TEXMODE_FORMAT(TEXMODE) >= 10 && TEXMODE_FORMAT(TEXMODE) <= 12) { texel0 = (LOOKUP)[texel0]; @@ -3044,7 +3008,7 @@ static inline rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, int32_t x, c return result; } -static inline rgbaint_t ATTR_FORCE_INLINE combineTexture(tmu_state *TT, const uint32_t TEXMODE, rgbaint_t c_local, rgbaint_t c_other, int32_t lod) +inline rgbaint_t ATTR_FORCE_INLINE voodoo_device::tmu_state::combineTexture(const uint32_t TEXMODE, rgbaint_t c_local, rgbaint_t c_other, int32_t lod) { int32_t a_other = c_other.get_a(); int32_t a_local = c_local.get_a(); @@ -3093,13 +3057,13 @@ static inline rgbaint_t ATTR_FORCE_INLINE combineTexture(tmu_state *TT, const ui break; case 4: /* LOD (detail factor) */ - if ((TT)->detailbias <= lod) + if (detailbias <= lod) c_local.and_imm_rgba(-1, 0, 0, 0); else { - tmp = ((((TT)->detailbias - lod) << (TT)->detailscale) >> 8); - if (tmp > (TT)->detailmax) - tmp = (TT)->detailmax; + tmp = (((detailbias - lod) << detailscale) >> 8); + if (tmp > detailmax) + tmp = detailmax; c_local.set(a_local, tmp, tmp, tmp); } break; @@ -3129,13 +3093,13 @@ static inline rgbaint_t ATTR_FORCE_INLINE combineTexture(tmu_state *TT, const ui break; case 4: /* LOD (detail factor) */ - if ((TT)->detailbias <= lod) + if (detailbias <= lod) c_local.set_a(0); else { - tmp = ((((TT)->detailbias - lod) << (TT)->detailscale) >> 8); - if (tmp > (TT)->detailmax) - tmp = (TT)->detailmax; + tmp = (((detailbias - lod) << detailscale) >> 8); + if (tmp > detailmax) + tmp = detailmax; c_local.set_a(tmp); } break; @@ -3201,4 +3165,4 @@ static inline rgbaint_t ATTR_FORCE_INLINE combineTexture(tmu_state *TT, const ui return result; } -#endif // MAME_DEVICES_VIDEO_VOODDEFS_H +#endif // MAME_VIDEO_VOODDEFS_H diff --git a/src/devices/video/voodoo.cpp b/src/devices/video/voodoo.cpp index 35014038b71..6e031dd71ac 100644 --- a/src/devices/video/voodoo.cpp +++ b/src/devices/video/voodoo.cpp @@ -177,6 +177,43 @@ bits(7:4) and bit(24)), X, and Y: #define EAT_CYCLES (1) +struct voodoo_device::poly_extra_data +{ + voodoo_device * device; + raster_info * info; /* pointer to rasterizer information */ + + int16_t ax, ay; /* vertex A x,y (12.4) */ + int32_t startr, startg, startb, starta; /* starting R,G,B,A (12.12) */ + int32_t startz; /* starting Z (20.12) */ + int64_t startw; /* starting W (16.32) */ + int32_t drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */ + int32_t dzdx; /* delta Z per X */ + int64_t dwdx; /* delta W per X */ + int32_t drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */ + int32_t dzdy; /* delta Z per Y */ + int64_t dwdy; /* delta W per Y */ + + int64_t starts0, startt0; /* starting S,T (14.18) */ + int64_t startw0; /* starting W (2.30) */ + int64_t ds0dx, dt0dx; /* delta S,T per X */ + int64_t dw0dx; /* delta W per X */ + int64_t ds0dy, dt0dy; /* delta S,T per Y */ + int64_t dw0dy; /* delta W per Y */ + int32_t lodbase0; /* used during rasterization */ + + int64_t starts1, startt1; /* starting S,T (14.18) */ + int64_t startw1; /* starting W (2.30) */ + int64_t ds1dx, dt1dx; /* delta S,T per X */ + int64_t dw1dx; /* delta W per X */ + int64_t ds1dy, dt1dy; /* delta S,T per Y */ + int64_t dw1dy; /* delta W per Y */ + int32_t lodbase1; /* used during rasterization */ + + uint16_t dither[16]; /* dither matrix, for fastfill */ +}; + + + /************************************* * * Statics @@ -220,7 +257,7 @@ uint32_t voodoo_reciplog[(2 << RECIPLOG_LOOKUP_BITS) + 2]; #define RASTERIZER_ENTRY(fbzcp, alpha, fog, fbz, tex0, tex1) \ { nullptr, voodoo_device::raster_##fbzcp##_##alpha##_##fog##_##fbz##_##tex0##_##tex1, false, 0, 0, 0, fbzcp, alpha, fog, fbz, tex0, tex1 }, -static const raster_info predef_raster_table[] = +const voodoo_device::raster_info voodoo_device::predef_raster_table[] = { #include "voodoo_rast.hxx" { nullptr } @@ -438,7 +475,7 @@ void voodoo_device::init_fbi(voodoo_device* vd,fbi_state *f, void *memory, int f } /* allocate a VBLANK timer */ - f->vblank_timer = vd->device->machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(voodoo_device::vblank_callback),vd), vd); + f->vblank_timer = vd->machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(voodoo_device::vblank_callback),vd), vd); f->vblank = false; /* initialize the memory FIFO */ @@ -450,47 +487,45 @@ void voodoo_device::init_fbi(voodoo_device* vd,fbi_state *f, void *memory, int f } -void voodoo_device::init_tmu_shared(tmu_shared_state *s) +void voodoo_device::tmu_shared_state::init() { - int val; - /* build static 8-bit texel tables */ - for (val = 0; val < 256; val++) + for (int val = 0; val < 256; val++) { int r, g, b, a; /* 8-bit RGB (3-3-2) */ EXTRACT_332_TO_888(val, r, g, b); - s->rgb332[val] = rgb_t(0xff, r, g, b); + rgb332[val] = rgb_t(0xff, r, g, b); /* 8-bit alpha */ - s->alpha8[val] = rgb_t(val, val, val, val); + alpha8[val] = rgb_t(val, val, val, val); /* 8-bit intensity */ - s->int8[val] = rgb_t(0xff, val, val, val); + int8[val] = rgb_t(0xff, val, val, val); /* 8-bit alpha, intensity */ a = ((val >> 0) & 0xf0) | ((val >> 4) & 0x0f); r = ((val << 4) & 0xf0) | ((val << 0) & 0x0f); - s->ai44[val] = rgb_t(a, r, r, r); + ai44[val] = rgb_t(a, r, r, r); } /* build static 16-bit texel tables */ - for (val = 0; val < 65536; val++) + for (int val = 0; val < 65536; val++) { int r, g, b, a; /* table 10 = 16-bit RGB (5-6-5) */ EXTRACT_565_TO_888(val, r, g, b); - s->rgb565[val] = rgb_t(0xff, r, g, b); + rgb565[val] = rgb_t(0xff, r, g, b); /* table 11 = 16 ARGB (1-5-5-5) */ EXTRACT_1555_TO_8888(val, a, r, g, b); - s->argb1555[val] = rgb_t(a, r, g, b); + argb1555[val] = rgb_t(a, r, g, b); /* table 12 = 16-bit ARGB (4-4-4-4) */ EXTRACT_4444_TO_8888(val, a, r, g, b); - s->argb4444[val] = rgb_t(a, r, g, b); + argb4444[val] = rgb_t(a, r, g, b); } } @@ -565,7 +600,7 @@ void voodoo_device::voodoo_postload(voodoo_device *vd) } -static void init_save_state(voodoo_device *vd) +void voodoo_device::init_save_state(voodoo_device *vd) { int index, subindex; @@ -732,42 +767,40 @@ static void init_save_state(voodoo_device *vd) * *************************************/ -static void accumulate_statistics(voodoo_device *vd, const stats_block *stats) +void voodoo_device::accumulate_statistics(const stats_block &block) { /* apply internal voodoo statistics */ - vd->reg[fbiPixelsIn].u += stats->pixels_in; - vd->reg[fbiPixelsOut].u += stats->pixels_out; - vd->reg[fbiChromaFail].u += stats->chroma_fail; - vd->reg[fbiZfuncFail].u += stats->zfunc_fail; - vd->reg[fbiAfuncFail].u += stats->afunc_fail; + reg[fbiPixelsIn].u += block.pixels_in; + reg[fbiPixelsOut].u += block.pixels_out; + reg[fbiChromaFail].u += block.chroma_fail; + reg[fbiZfuncFail].u += block.zfunc_fail; + reg[fbiAfuncFail].u += block.afunc_fail; /* apply emulation statistics */ - vd->stats.total_pixels_in += stats->pixels_in; - vd->stats.total_pixels_out += stats->pixels_out; - vd->stats.total_chroma_fail += stats->chroma_fail; - vd->stats.total_zfunc_fail += stats->zfunc_fail; - vd->stats.total_afunc_fail += stats->afunc_fail; - vd->stats.total_clipped += stats->clip_fail; - vd->stats.total_stippled += stats->stipple_count; + stats.total_pixels_in += block.pixels_in; + stats.total_pixels_out += block.pixels_out; + stats.total_chroma_fail += block.chroma_fail; + stats.total_zfunc_fail += block.zfunc_fail; + stats.total_afunc_fail += block.afunc_fail; + stats.total_clipped += block.clip_fail; + stats.total_stippled += block.stipple_count; } -static void update_statistics(voodoo_device *vd, int accumulate) +void voodoo_device::update_statistics(bool accumulate) { - int threadnum; - /* accumulate/reset statistics from all units */ - for (threadnum = 0; threadnum < WORK_MAX_THREADS; threadnum++) + for (int threadnum = 0; threadnum < WORK_MAX_THREADS; threadnum++) { if (accumulate) - accumulate_statistics(vd, &vd->thread_stats[threadnum]); - memset(&vd->thread_stats[threadnum], 0, sizeof(vd->thread_stats[threadnum])); + accumulate_statistics(thread_stats[threadnum]); + memset(&thread_stats[threadnum], 0, sizeof(thread_stats[threadnum])); } /* accumulate/reset statistics from the LFB */ if (accumulate) - accumulate_statistics(vd, &vd->fbi.lfb_stats); - memset(&vd->fbi.lfb_stats, 0, sizeof(vd->fbi.lfb_stats)); + accumulate_statistics(fbi.lfb_stats); + memset(&fbi.lfb_stats, 0, sizeof(fbi.lfb_stats)); } @@ -782,7 +815,7 @@ void voodoo_device::swap_buffers(voodoo_device *vd) { int count; - if (LOG_VBLANK_SWAP) vd->device->logerror("--- swap_buffers @ %d\n", vd->screen->vpos()); + if (LOG_VBLANK_SWAP) vd->logerror("--- swap_buffers @ %d\n", vd->screen->vpos()); /* force a partial update */ vd->screen->update_partial(vd->screen->vpos()); @@ -823,13 +856,13 @@ void voodoo_device::swap_buffers(voodoo_device *vd) /* reset the last_op_time to now and start processing the next command */ if (vd->pci.op_pending) { - vd->pci.op_end_time = vd->device->machine().time(); + vd->pci.op_end_time = vd->machine().time(); flush_fifos(vd, vd->pci.op_end_time); } /* we may be able to unstall now */ if (vd->pci.stall_state != NOT_STALLED) - check_stalled_cpu(vd, vd->device->machine().time()); + check_stalled_cpu(vd, vd->machine().time()); /* periodically log rasterizer info */ vd->stats.swaps++; @@ -845,7 +878,7 @@ void voodoo_device::swap_buffers(voodoo_device *vd) int pixelcount; int i; - update_statistics(vd, true); + vd->update_statistics(true); pixelcount = vd->stats.total_pixels_out; statsptr += sprintf(statsptr, "Swap:%6d\n", vd->stats.swaps); @@ -904,7 +937,7 @@ static void adjust_vblank_timer(voodoo_device *vd) TIMER_CALLBACK_MEMBER( voodoo_device::vblank_off_callback ) { - if (LOG_VBLANK_SWAP) device->logerror("--- vblank end\n"); + if (LOG_VBLANK_SWAP) logerror("--- vblank end\n"); /* set internal state and call the client */ fbi.vblank = false; @@ -916,15 +949,15 @@ TIMER_CALLBACK_MEMBER( voodoo_device::vblank_off_callback ) { reg[intrCtrl].u |= 0x200; // VSYNC int (falling) active - if (!device->m_vblank.isnull()) - device->m_vblank(false); + if (!m_vblank.isnull()) + m_vblank(false); } } else { - if (!device->m_vblank.isnull()) - device->m_vblank(false); + if (!m_vblank.isnull()) + m_vblank(false); } /* go to the end of the next frame */ @@ -934,24 +967,24 @@ TIMER_CALLBACK_MEMBER( voodoo_device::vblank_off_callback ) TIMER_CALLBACK_MEMBER( voodoo_device::vblank_callback ) { - if (LOG_VBLANK_SWAP) device->logerror("--- vblank start\n"); + if (LOG_VBLANK_SWAP) logerror("--- vblank start\n"); /* flush the pipes */ if (pci.op_pending) { - if (LOG_VBLANK_SWAP) device->logerror("---- vblank flush begin\n"); + if (LOG_VBLANK_SWAP) logerror("---- vblank flush begin\n"); flush_fifos(this, machine().time()); - if (LOG_VBLANK_SWAP) device->logerror("---- vblank flush end\n"); + if (LOG_VBLANK_SWAP) logerror("---- vblank flush end\n"); } /* increment the count */ fbi.vblank_count++; if (fbi.vblank_count > 250) fbi.vblank_count = 250; - if (LOG_VBLANK_SWAP) device->logerror("---- vblank count = %d", fbi.vblank_count); + if (LOG_VBLANK_SWAP) logerror("---- vblank count = %d", fbi.vblank_count); if (fbi.vblank_swap_pending) - if (LOG_VBLANK_SWAP) device->logerror(" (target=%d)", fbi.vblank_swap); - if (LOG_VBLANK_SWAP) device->logerror("\n"); + if (LOG_VBLANK_SWAP) logerror(" (target=%d)", fbi.vblank_swap); + if (LOG_VBLANK_SWAP) logerror("\n"); /* if we're past the swap count, do the swap */ if (fbi.vblank_swap_pending && fbi.vblank_count >= fbi.vblank_swap) @@ -972,14 +1005,14 @@ TIMER_CALLBACK_MEMBER( voodoo_device::vblank_callback ) { reg[intrCtrl].u |= 0x100; // VSYNC int (rising) active - if (!device->m_vblank.isnull()) - device->m_vblank(true); + if (!m_vblank.isnull()) + m_vblank(true); } } else { - if (!device->m_vblank.isnull()) - device->m_vblank(true); + if (!m_vblank.isnull()) + m_vblank(true); } } @@ -991,23 +1024,23 @@ TIMER_CALLBACK_MEMBER( voodoo_device::vblank_callback ) * *************************************/ -static void reset_counters(voodoo_device *vd) +void voodoo_device::reset_counters() { - update_statistics(vd, false); - vd->reg[fbiPixelsIn].u = 0; - vd->reg[fbiChromaFail].u = 0; - vd->reg[fbiZfuncFail].u = 0; - vd->reg[fbiAfuncFail].u = 0; - vd->reg[fbiPixelsOut].u = 0; + update_statistics(false); + reg[fbiPixelsIn].u = 0; + reg[fbiChromaFail].u = 0; + reg[fbiZfuncFail].u = 0; + reg[fbiAfuncFail].u = 0; + reg[fbiPixelsOut].u = 0; } -void voodoo_device::soft_reset(voodoo_device *vd) +void voodoo_device::soft_reset() { - reset_counters(vd); - vd->reg[fbiTrianglesOut].u = 0; - fifo_reset(&vd->fbi.fifo); - fifo_reset(&vd->pci.fifo); + reset_counters(); + reg[fbiTrianglesOut].u = 0; + fbi.fifo.reset(); + pci.fifo.reset(); } @@ -1055,7 +1088,7 @@ void voodoo_device::recompute_video_memory(voodoo_device *vd) switch (memory_config) { case 3: /* reserved */ - vd->device->logerror("VOODOO.%d.ERROR:Unexpected memory configuration in recompute_video_memory!\n", vd->index); + vd->logerror("VOODOO.%d.ERROR:Unexpected memory configuration in recompute_video_memory!\n", vd->index); case 0: /* 2 color buffers, 1 aux buffer */ vd->fbi.rgboffs[2] = ~0; @@ -1106,7 +1139,7 @@ void voodoo_device::recompute_video_memory(voodoo_device *vd) } /* reset the FIFO */ - fifo_reset(&vd->fbi.fifo); + vd->fbi.fifo.reset(); /* reset our front/back buffers if they are out of range */ if (vd->fbi.rgboffs[2] == ~0) @@ -1126,24 +1159,24 @@ void voodoo_device::recompute_video_memory(voodoo_device *vd) * *************************************/ -static void ncc_table_write(ncc_table *n, offs_t regnum, uint32_t data) +void voodoo_device::tmu_state::ncc_table::write(offs_t regnum, uint32_t data) { /* I/Q entries reference the plaette if the high bit is set */ - if (regnum >= 4 && (data & 0x80000000) && n->palette) + if (regnum >= 4 && (data & 0x80000000) && palette) { - int index = ((data >> 23) & 0xfe) | (regnum & 1); + int const index = ((data >> 23) & 0xfe) | (regnum & 1); /* set the ARGB for this palette index */ - n->palette[index] = 0xff000000 | data; + palette[index] = 0xff000000 | data; /* if we have an ARGB palette as well, compute its value */ - if (n->palettea) + if (palettea) { int a = ((data >> 16) & 0xfc) | ((data >> 22) & 0x03); int r = ((data >> 10) & 0xfc) | ((data >> 16) & 0x03); int g = ((data >> 4) & 0xfc) | ((data >> 10) & 0x03); int b = ((data << 2) & 0xfc) | ((data >> 4) & 0x03); - n->palettea[index] = rgb_t(a, r, g, b); + palettea[index] = rgb_t(a, r, g, b); } /* this doesn't dirty the table or go to the registers, so bail */ @@ -1151,60 +1184,59 @@ static void ncc_table_write(ncc_table *n, offs_t regnum, uint32_t data) } /* if the register matches, don't update */ - if (data == n->reg[regnum].u) + if (data == reg[regnum].u) return; - n->reg[regnum].u = data; + reg[regnum].u = data; /* first four entries are packed Y values */ if (regnum < 4) { regnum *= 4; - n->y[regnum+0] = (data >> 0) & 0xff; - n->y[regnum+1] = (data >> 8) & 0xff; - n->y[regnum+2] = (data >> 16) & 0xff; - n->y[regnum+3] = (data >> 24) & 0xff; + y[regnum+0] = (data >> 0) & 0xff; + y[regnum+1] = (data >> 8) & 0xff; + y[regnum+2] = (data >> 16) & 0xff; + y[regnum+3] = (data >> 24) & 0xff; } /* the second four entries are the I RGB values */ else if (regnum < 8) { regnum &= 3; - n->ir[regnum] = (int32_t)(data << 5) >> 23; - n->ig[regnum] = (int32_t)(data << 14) >> 23; - n->ib[regnum] = (int32_t)(data << 23) >> 23; + ir[regnum] = (int32_t)(data << 5) >> 23; + ig[regnum] = (int32_t)(data << 14) >> 23; + ib[regnum] = (int32_t)(data << 23) >> 23; } /* the final four entries are the Q RGB values */ else { regnum &= 3; - n->qr[regnum] = (int32_t)(data << 5) >> 23; - n->qg[regnum] = (int32_t)(data << 14) >> 23; - n->qb[regnum] = (int32_t)(data << 23) >> 23; + qr[regnum] = (int32_t)(data << 5) >> 23; + qg[regnum] = (int32_t)(data << 14) >> 23; + qb[regnum] = (int32_t)(data << 23) >> 23; } /* mark the table dirty */ - n->dirty = true; + dirty = true; } -static void ncc_table_update(ncc_table *n) +void voodoo_device::tmu_state::ncc_table::update() { - int r, g, b, i; - /* generte all 256 possibilities */ - for (i = 0; i < 256; i++) + for (int i = 0; i < 256; i++) { int vi = (i >> 2) & 0x03; int vq = (i >> 0) & 0x03; /* start with the intensity */ - r = g = b = n->y[(i >> 4) & 0x0f]; + int r, g, b; + r = g = b = y[(i >> 4) & 0x0f]; /* add the coloring */ - r += n->ir[vi] + n->qr[vq]; - g += n->ig[vi] + n->qg[vq]; - b += n->ib[vi] + n->qb[vq]; + r += ir[vi] + qr[vq]; + g += ig[vi] + qg[vq]; + b += ib[vi] + qb[vq]; /* clamp */ CLAMP(r, 0, 255); @@ -1212,11 +1244,11 @@ static void ncc_table_update(ncc_table *n) CLAMP(b, 0, 255); /* fill in the table */ - n->texel[i] = rgb_t(0xff, r, g, b); + texel[i] = rgb_t(0xff, r, g, b); } /* no longer dirty */ - n->dirty = false; + dirty = false; } @@ -1227,13 +1259,13 @@ static void ncc_table_update(ncc_table *n) * *************************************/ -static void dacdata_w(dac_state *d, uint8_t regnum, uint8_t data) +void voodoo_device::dac_state::data_w(uint8_t regnum, uint8_t data) { - d->reg[regnum] = data; + reg[regnum] = data; } -static void dacdata_r(dac_state *d, uint8_t regnum) +void voodoo_device::dac_state::data_r(uint8_t regnum) { uint8_t result = 0xff; @@ -1242,7 +1274,7 @@ static void dacdata_r(dac_state *d, uint8_t regnum) { case 5: /* this is just to make startup happy */ - switch (d->reg[7]) + switch (reg[7]) { case 0x01: result = 0x55; break; case 0x07: result = 0x71; break; @@ -1251,12 +1283,12 @@ static void dacdata_r(dac_state *d, uint8_t regnum) break; default: - result = d->reg[regnum]; + result = reg[regnum]; break; } /* remember the read result; it is fetched elsewhere */ - d->read_result = result; + read_result = result; } @@ -1267,124 +1299,123 @@ static void dacdata_r(dac_state *d, uint8_t regnum) * *************************************/ -static void recompute_texture_params(tmu_state *t) +void voodoo_device::tmu_state::recompute_texture_params() { int bppscale; uint32_t base; int lod; /* extract LOD parameters */ - t->lodmin = TEXLOD_LODMIN(t->reg[tLOD].u) << 6; - t->lodmax = TEXLOD_LODMAX(t->reg[tLOD].u) << 6; - t->lodbias = (int8_t)(TEXLOD_LODBIAS(t->reg[tLOD].u) << 2) << 4; + lodmin = TEXLOD_LODMIN(reg[tLOD].u) << 6; + lodmax = TEXLOD_LODMAX(reg[tLOD].u) << 6; + lodbias = (int8_t)(TEXLOD_LODBIAS(reg[tLOD].u) << 2) << 4; /* determine which LODs are present */ - t->lodmask = 0x1ff; - if (TEXLOD_LOD_TSPLIT(t->reg[tLOD].u)) + lodmask = 0x1ff; + if (TEXLOD_LOD_TSPLIT(reg[tLOD].u)) { - if (!TEXLOD_LOD_ODD(t->reg[tLOD].u)) - t->lodmask = 0x155; + if (!TEXLOD_LOD_ODD(reg[tLOD].u)) + lodmask = 0x155; else - t->lodmask = 0x0aa; + lodmask = 0x0aa; } /* determine base texture width/height */ - t->wmask = t->hmask = 0xff; - if (TEXLOD_LOD_S_IS_WIDER(t->reg[tLOD].u)) - t->hmask >>= TEXLOD_LOD_ASPECT(t->reg[tLOD].u); + wmask = hmask = 0xff; + if (TEXLOD_LOD_S_IS_WIDER(reg[tLOD].u)) + hmask >>= TEXLOD_LOD_ASPECT(reg[tLOD].u); else - t->wmask >>= TEXLOD_LOD_ASPECT(t->reg[tLOD].u); + wmask >>= TEXLOD_LOD_ASPECT(reg[tLOD].u); /* determine the bpp of the texture */ - bppscale = TEXMODE_FORMAT(t->reg[textureMode].u) >> 3; + bppscale = TEXMODE_FORMAT(reg[textureMode].u) >> 3; /* start with the base of LOD 0 */ - if (t->texaddr_shift == 0 && (t->reg[texBaseAddr].u & 1)) + if (texaddr_shift == 0 && (reg[texBaseAddr].u & 1)) osd_printf_debug("Tiled texture\n"); - base = (t->reg[texBaseAddr].u & t->texaddr_mask) << t->texaddr_shift; - t->lodoffset[0] = base & t->mask; + base = (reg[texBaseAddr].u & texaddr_mask) << texaddr_shift; + lodoffset[0] = base & mask; /* LODs 1-3 are different depending on whether we are in multitex mode */ /* Several Voodoo 2 games leave the upper bits of TLOD == 0xff, meaning we think */ /* they want multitex mode when they really don't -- disable for now */ // Enable for Voodoo 3 or Viper breaks - VL. - if (TEXLOD_TMULTIBASEADDR(t->reg[tLOD].u)) + // Add check for upper nibble not equal to zero to fix funkball -- TG + if (TEXLOD_TMULTIBASEADDR(reg[tLOD].u) && (reg[tLOD].u >> 28) == 0) { - base = (t->reg[texBaseAddr_1].u & t->texaddr_mask) << t->texaddr_shift; - t->lodoffset[1] = base & t->mask; - base = (t->reg[texBaseAddr_2].u & t->texaddr_mask) << t->texaddr_shift; - t->lodoffset[2] = base & t->mask; - base = (t->reg[texBaseAddr_3_8].u & t->texaddr_mask) << t->texaddr_shift; - t->lodoffset[3] = base & t->mask; + base = (reg[texBaseAddr_1].u & texaddr_mask) << texaddr_shift; + lodoffset[1] = base & mask; + base = (reg[texBaseAddr_2].u & texaddr_mask) << texaddr_shift; + lodoffset[2] = base & mask; + base = (reg[texBaseAddr_3_8].u & texaddr_mask) << texaddr_shift; + lodoffset[3] = base & mask; } else { - if (t->lodmask & (1 << 0)) - base += (((t->wmask >> 0) + 1) * ((t->hmask >> 0) + 1)) << bppscale; - t->lodoffset[1] = base & t->mask; - if (t->lodmask & (1 << 1)) - base += (((t->wmask >> 1) + 1) * ((t->hmask >> 1) + 1)) << bppscale; - t->lodoffset[2] = base & t->mask; - if (t->lodmask & (1 << 2)) - base += (((t->wmask >> 2) + 1) * ((t->hmask >> 2) + 1)) << bppscale; - t->lodoffset[3] = base & t->mask; + if (lodmask & (1 << 0)) + base += (((wmask >> 0) + 1) * ((hmask >> 0) + 1)) << bppscale; + lodoffset[1] = base & mask; + if (lodmask & (1 << 1)) + base += (((wmask >> 1) + 1) * ((hmask >> 1) + 1)) << bppscale; + lodoffset[2] = base & mask; + if (lodmask & (1 << 2)) + base += (((wmask >> 2) + 1) * ((hmask >> 2) + 1)) << bppscale; + lodoffset[3] = base & mask; } /* remaining LODs make sense */ for (lod = 4; lod <= 8; lod++) { - if (t->lodmask & (1 << (lod - 1))) + if (lodmask & (1 << (lod - 1))) { - uint32_t size = ((t->wmask >> (lod - 1)) + 1) * ((t->hmask >> (lod - 1)) + 1); + uint32_t size = ((wmask >> (lod - 1)) + 1) * ((hmask >> (lod - 1)) + 1); if (size < 4) size = 4; base += size << bppscale; } - t->lodoffset[lod] = base & t->mask; + lodoffset[lod] = base & mask; } /* set the NCC lookup appropriately */ - t->texel[1] = t->texel[9] = t->ncc[TEXMODE_NCC_TABLE_SELECT(t->reg[textureMode].u)].texel; + texel[1] = texel[9] = ncc[TEXMODE_NCC_TABLE_SELECT(reg[textureMode].u)].texel; /* pick the lookup table */ - t->lookup = t->texel[TEXMODE_FORMAT(t->reg[textureMode].u)]; + lookup = texel[TEXMODE_FORMAT(reg[textureMode].u)]; /* compute the detail parameters */ - t->detailmax = TEXDETAIL_DETAIL_MAX(t->reg[tDetail].u); - t->detailbias = (int8_t)(TEXDETAIL_DETAIL_BIAS(t->reg[tDetail].u) << 2) << 6; - t->detailscale = TEXDETAIL_DETAIL_SCALE(t->reg[tDetail].u); + detailmax = TEXDETAIL_DETAIL_MAX(reg[tDetail].u); + detailbias = (int8_t)(TEXDETAIL_DETAIL_BIAS(reg[tDetail].u) << 2) << 6; + detailscale = TEXDETAIL_DETAIL_SCALE(reg[tDetail].u); /* ensure that the NCC tables are up to date */ - if ((TEXMODE_FORMAT(t->reg[textureMode].u) & 7) == 1) + if ((TEXMODE_FORMAT(reg[textureMode].u) & 7) == 1) { - ncc_table *n = &t->ncc[TEXMODE_NCC_TABLE_SELECT(t->reg[textureMode].u)]; - t->texel[1] = t->texel[9] = n->texel; - if (n->dirty) - ncc_table_update(n); + ncc_table &n = ncc[TEXMODE_NCC_TABLE_SELECT(reg[textureMode].u)]; + texel[1] = texel[9] = n.texel; + if (n.dirty) + n.update(); } /* no longer dirty */ - t->regdirty = false; + regdirty = false; /* check for separate RGBA filtering */ - if (TEXDETAIL_SEPARATE_RGBA_FILTER(t->reg[tDetail].u)) + if (TEXDETAIL_SEPARATE_RGBA_FILTER(reg[tDetail].u)) fatalerror("Separate RGBA filters!\n"); } -static inline int32_t prepare_tmu(tmu_state *t) +inline int32_t voodoo_device::tmu_state::prepare() { int64_t texdx, texdy; int32_t lodbase; /* if the texture parameters are dirty, update them */ - if (t->regdirty) - { - recompute_texture_params(t); - } + if (regdirty) + recompute_texture_params(); /* compute (ds^2 + dt^2) in both X and Y as 28.36 numbers */ - texdx = (int64_t)(t->dsdx >> 14) * (int64_t)(t->dsdx >> 14) + (int64_t)(t->dtdx >> 14) * (int64_t)(t->dtdx >> 14); - texdy = (int64_t)(t->dsdy >> 14) * (int64_t)(t->dsdy >> 14) + (int64_t)(t->dtdy >> 14) * (int64_t)(t->dtdy >> 14); + texdx = int64_t(dsdx >> 14) * int64_t(dsdx >> 14) + int64_t(dtdx >> 14) * int64_t(dtdx >> 14); + texdy = int64_t(dsdy >> 14) * int64_t(dsdy >> 14) + int64_t(dtdy >> 14) * int64_t(dtdy >> 14); /* pick whichever is larger and shift off some high bits -> 28.20 */ if (texdx < texdy) @@ -1396,14 +1427,14 @@ static inline int32_t prepare_tmu(tmu_state *t) /* adjust the result: negative to get the log of the original value */ /* plus 12 to account for the extra exponent, and divided by 2 to */ /* get the log of the square root of texdx */ - #if USE_FAST_RECIP == 1 - (void)fast_reciplog(texdx, &lodbase); - return (-lodbase + (12 << 8)) / 2; - #else - double tmpTex = texdx; - lodbase = new_log2(tmpTex); - return (lodbase + (12 << 8)) / 2; - #endif +#if USE_FAST_RECIP == 1 + (void)fast_reciplog(texdx, &lodbase); + return (-lodbase + (12 << 8)) / 2; +#else + double tmpTex = texdx; + lodbase = new_log2(tmpTex); + return (lodbase + (12 << 8)) / 2; +#endif } @@ -1414,10 +1445,10 @@ static inline int32_t prepare_tmu(tmu_state *t) * *************************************/ -static int cmdfifo_compute_expected_depth(voodoo_device *vd, cmdfifo_info *f) +int voodoo_device::cmdfifo_compute_expected_depth(cmdfifo_info &f) { - uint32_t *fifobase = (uint32_t *)vd->fbi.ram; - uint32_t readptr = f->rdptr; + uint32_t *fifobase = (uint32_t *)fbi.ram; + uint32_t readptr = f.rdptr; uint32_t command = fifobase[readptr / 4]; int i, count = 0; @@ -1561,7 +1592,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) uint32_t *src = &fifobase[readptr / 4]; uint32_t command = *src++; int count, inc, code, i; - setup_vertex svert = {0}; + fbi_state::setup_vertex svert = {0}; offs_t target; int cycles = 0; @@ -1587,26 +1618,26 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) switch ((command >> 3) & 7) { case 0: /* NOP */ - if (LOG_CMDFIFO) vd->device->logerror(" NOP\n"); + if (LOG_CMDFIFO) vd->logerror(" NOP\n"); break; case 1: /* JSR */ - if (LOG_CMDFIFO) vd->device->logerror(" JSR $%06X\n", target); + if (LOG_CMDFIFO) vd->logerror(" JSR $%06X\n", target); osd_printf_debug("JSR in CMDFIFO!\n"); src = &fifobase[target / 4]; break; case 2: /* RET */ - if (LOG_CMDFIFO) vd->device->logerror(" RET $%06X\n", target); + if (LOG_CMDFIFO) vd->logerror(" RET $%06X\n", target); fatalerror("RET in CMDFIFO!\n"); case 3: /* JMP LOCAL FRAME BUFFER */ - if (LOG_CMDFIFO) vd->device->logerror(" JMP LOCAL FRAMEBUF $%06X\n", target); + if (LOG_CMDFIFO) vd->logerror(" JMP LOCAL FRAMEBUF $%06X\n", target); src = &fifobase[target / 4]; break; case 4: /* JMP AGP */ - if (LOG_CMDFIFO) vd->device->logerror(" JMP AGP $%06X\n", target); + if (LOG_CMDFIFO) vd->logerror(" JMP AGP $%06X\n", target); fatalerror("JMP AGP in CMDFIFO!\n"); src = &fifobase[target / 4]; break; @@ -1634,7 +1665,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) inc = (command >> 15) & 1; target = (command >> 3) & 0xfff; - if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 1: count=%d inc=%d reg=%04X\n", count, inc, target); + if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 1: count=%d inc=%d reg=%04X\n", count, inc, target); if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (target & 0x800)) { @@ -1665,7 +1696,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) 1 31:0 = Data word */ case 2: - if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 2: mask=%X\n", (command >> 3) & 0x1ffffff); + if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 2: mask=%X\n", (command >> 3) & 0x1ffffff); /* loop over all registers and write them one at a time */ for (i = 3; i <= 31; i++) @@ -1702,7 +1733,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) count = (command >> 6) & 15; code = (command >> 3) & 7; - if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 3: count=%d code=%d mask=%03X smode=%02X pc=%d\n", count, code, (command >> 10) & 0xfff, (command >> 22) & 0x3f, (command >> 28) & 1); + if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 3: count=%d code=%d mask=%03X smode=%02X pc=%d\n", count, code, (command >> 10) & 0xfff, (command >> 22) & 0x3f, (command >> 28) & 1); /* copy relevant bits into the setup mode register */ vd->reg[sSetupMode].u = ((command >> 10) & 0xff) | ((command >> 6) & 0xf0000); @@ -1812,7 +1843,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) /* extract parameters */ target = (command >> 3) & 0xfff; - if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 4: mask=%X reg=%04X pad=%d\n", (command >> 15) & 0x3fff, target, command >> 29); + if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 4: mask=%X reg=%04X pad=%d\n", (command >> 15) & 0x3fff, target, command >> 29); if (vd->vd_type >= TYPE_VOODOO_BANSHEE && (target & 0x800)) { @@ -1866,7 +1897,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) { case 0: // Linear FB { - if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 5: FB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15); + if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 5: FB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15); uint32_t addr = target * 4; for (i=0; i < count; i++) @@ -1884,7 +1915,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) } case 2: // 3D LFB { - if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 5: 3D LFB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15); + if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 5: 3D LFB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15); /* loop over words */ for (i = 0; i < count; i++) @@ -1909,7 +1940,7 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) case 3: // Texture Port { - if (LOG_CMDFIFO) vd->device->logerror(" PACKET TYPE 5: textureRAM count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15); + if (LOG_CMDFIFO) vd->logerror(" PACKET TYPE 5: textureRAM count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15); /* loop over words */ for (i = 0; i < count; i++) @@ -1939,23 +1970,20 @@ uint32_t voodoo_device::cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f) * *************************************/ -int32_t voodoo_device::cmdfifo_execute_if_ready(voodoo_device* vd, cmdfifo_info *f) +int32_t voodoo_device::cmdfifo_execute_if_ready(cmdfifo_info &f) { - int needed_depth; - int cycles; - /* all CMDFIFO commands need at least one word */ - if (f->depth == 0) + if (f.depth == 0) return -1; /* see if we have enough for the current command */ - needed_depth = cmdfifo_compute_expected_depth(vd, f); - if (f->depth < needed_depth) + int const needed_depth = cmdfifo_compute_expected_depth(f); + if (f.depth < needed_depth) return -1; /* execute */ - cycles = cmdfifo_execute(vd, f); - f->depth -= needed_depth; + int const cycles = cmdfifo_execute(this, &f); + f.depth -= needed_depth; return cycles; } @@ -1972,7 +2000,7 @@ void voodoo_device::cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset, uint32_t addr = f->base + offset * 4; uint32_t *fifobase = (uint32_t *)vd->fbi.ram; - if (LOG_CMDFIFO_VERBOSE) vd->device->logerror("CMDFIFO_w(%04X) = %08X\n", offset, data); + if (LOG_CMDFIFO_VERBOSE) vd->logerror("CMDFIFO_w(%04X) = %08X\n", offset, data); /* write the data */ if (addr < f->end) @@ -1992,7 +2020,7 @@ void voodoo_device::cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset, else if (addr < f->amin) { if (f->holes != 0) - vd->device->logerror("Unexpected CMDFIFO: AMin=%08X AMax=%08X Holes=%d WroteTo:%08X\n", + vd->logerror("Unexpected CMDFIFO: AMin=%08X AMax=%08X Holes=%d WroteTo:%08X\n", f->amin, f->amax, f->holes, addr); //f->amin = f->amax = addr; f->holes += (addr - f->base) / 4; @@ -2024,14 +2052,14 @@ void voodoo_device::cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset, /* execute if we can */ if (!vd->pci.op_pending) { - int32_t cycles = cmdfifo_execute_if_ready(vd, f); + int32_t cycles = vd->cmdfifo_execute_if_ready(*f); if (cycles > 0) { vd->pci.op_pending = true; - vd->pci.op_end_time = vd->device->machine().time() + attotime(0, (attoseconds_t)cycles * vd->attoseconds_per_cycle); + vd->pci.op_end_time = vd->machine().time() + attotime(0, (attoseconds_t)cycles * vd->attoseconds_per_cycle); - if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", vd->index, - vd->device->machine().time().seconds(), (uint32_t)(vd->device->machine().time().attoseconds() >> 32), (uint32_t)vd->device->machine().time().attoseconds(), + if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", vd->index, + vd->machine().time().seconds(), (uint32_t)(vd->machine().time().attoseconds() >> 32), (uint32_t)vd->machine().time().attoseconds(), vd->pci.op_end_time.seconds(), (uint32_t)(vd->pci.op_end_time.attoseconds() >> 32), (uint32_t)vd->pci.op_end_time.attoseconds()); } } @@ -2066,10 +2094,10 @@ void voodoo_device::check_stalled_cpu(voodoo_device* vd, attotime current_time) /* if there's room in the memory FIFO now, we can proceed */ if (FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u)) { - if (fifo_items(&vd->fbi.fifo) < 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(vd->reg[fbiInit0].u)) + if (vd->fbi.fifo.items() < 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(vd->reg[fbiInit0].u)) resume = true; } - else if (fifo_space(&vd->pci.fifo) > 2 * FBIINIT0_PCI_FIFO_LWM(vd->reg[fbiInit0].u)) + else if (vd->pci.fifo.space() > 2 * FBIINIT0_PCI_FIFO_LWM(vd->reg[fbiInit0].u)) resume = true; } @@ -2078,24 +2106,24 @@ void voodoo_device::check_stalled_cpu(voodoo_device* vd, attotime current_time) { if (FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u)) { - if (fifo_empty(&vd->fbi.fifo) && fifo_empty(&vd->pci.fifo)) + if (vd->fbi.fifo.empty() && vd->pci.fifo.empty()) resume = true; } - else if (fifo_empty(&vd->pci.fifo)) + else if (vd->pci.fifo.empty()) resume = true; } /* resume if necessary */ if (resume || !vd->pci.op_pending) { - if (LOG_FIFO) vd->device->logerror("VOODOO.%d.FIFO:Stall condition cleared; resuming\n", vd->index); + if (LOG_FIFO) vd->logerror("VOODOO.%d.FIFO:Stall condition cleared; resuming\n", vd->index); vd->pci.stall_state = NOT_STALLED; /* either call the callback, or trigger the trigger */ - if (!vd->device->m_stall.isnull()) - vd->device->m_stall(false); + if (!vd->m_stall.isnull()) + vd->m_stall(false); else - vd->device->machine().scheduler().trigger(vd->trigger); + vd->machine().scheduler().trigger(vd->trigger); } /* if not, set a timer for the next one */ @@ -2116,8 +2144,8 @@ void voodoo_device::stall_cpu(voodoo_device *vd, int state, attotime current_tim vd->stats.stalls++; /* either call the callback, or spin the CPU */ - if (!vd->device->m_stall.isnull()) - vd->device->m_stall(true); + if (!vd->m_stall.isnull()) + vd->m_stall(true); else vd->cpu->execute().spin_until_trigger(vd->trigger); @@ -2159,7 +2187,7 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat /* first make sure this register is readable */ if (!(vd->regaccess[regnum] & REGISTER_WRITE)) { - vd->device->logerror("VOODOO.%d.ERROR:Invalid attempt to write %s\n", vd->index, vd->regnames[regnum]); + vd->logerror("VOODOO.%d.ERROR:Invalid attempt to write %s\n", vd->index, vd->regnames[regnum]); return 0; } @@ -2452,7 +2480,7 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat case nopCMD: poly_wait(vd->poly, vd->regnames[regnum]); if (data & 1) - reset_counters(vd); + vd->reset_counters(); if (data & 2) vd->reg[fbiTrianglesOut].u = 0; break; @@ -2474,8 +2502,8 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat vd->reg[intrCtrl].u &= ~0x80000000; // TODO: rename vblank_client for less confusion? - if (!vd->device->m_vblank.isnull()) - vd->device->m_vblank(true); + if (!vd->m_vblank.isnull()) + vd->m_vblank(true); break; /* gamma table access -- Voodoo/Voodoo2 only */ @@ -2493,7 +2521,7 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat } } else - vd->device->logerror("clutData ignored because video timing reset = 1\n"); + vd->logerror("clutData ignored because video timing reset = 1\n"); } break; @@ -2503,9 +2531,9 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat { poly_wait(vd->poly, vd->regnames[regnum]); if (!(data & 0x800)) - dacdata_w(&vd->dac, (data >> 8) & 7, data & 0xff); + vd->dac.data_w((data >> 8) & 7, data & 0xff); else - dacdata_r(&vd->dac, (data >> 8) & 7); + vd->dac.data_r((data >> 8) & 7); } break; @@ -2610,9 +2638,9 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat { vd->reg[fbiInit0].u = data; if (FBIINIT0_GRAPHICS_RESET(data)) - soft_reset(vd); + vd->soft_reset(); if (FBIINIT0_FIFO_RESET(data)) - fifo_reset(&vd->pci.fifo); + vd->pci.fifo.reset(); recompute_video_memory(vd); } break; @@ -2743,8 +2771,8 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat case nccTable+10: case nccTable+11: poly_wait(vd->poly, vd->regnames[regnum]); - if (chips & 2) ncc_table_write(&vd->tmu[0].ncc[0], regnum - nccTable, data); - if (chips & 4) ncc_table_write(&vd->tmu[1].ncc[0], regnum - nccTable, data); + if (chips & 2) vd->tmu[0].ncc[0].write(regnum - nccTable, data); + if (chips & 4) vd->tmu[1].ncc[0].write(regnum - nccTable, data); break; case nccTable+12: @@ -2760,8 +2788,8 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat case nccTable+22: case nccTable+23: poly_wait(vd->poly, vd->regnames[regnum]); - if (chips & 2) ncc_table_write(&vd->tmu[0].ncc[1], regnum - (nccTable+12), data); - if (chips & 4) ncc_table_write(&vd->tmu[1].ncc[1], regnum - (nccTable+12), data); + if (chips & 2) vd->tmu[0].ncc[1].write(regnum - (nccTable+12), data); + if (chips & 4) vd->tmu[1].ncc[1].write(regnum - (nccTable+12), data); break; /* fogTable entries are processed and expanded immediately */ @@ -2861,9 +2889,9 @@ default_case: if (LOG_REGISTERS) { if (regnum < fvertexAx || regnum > fdWdY) - vd->device->logerror("VOODOO.%d.REG:%s(%d) write = %08X\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, origdata); + vd->logerror("VOODOO.%d.REG:%s(%d) write = %08X\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, origdata); else - vd->device->logerror("VOODOO.%d.REG:%s(%d) write = %f\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, (double) u2f(origdata)); + vd->logerror("VOODOO.%d.REG:%s(%d) write = %f\n", vd->index, (regnum < 0x384/4) ? vd->regnames[regnum] : "oob", chips, (double) u2f(origdata)); } return cycles; @@ -2910,14 +2938,14 @@ int32_t voodoo_device::lfb_direct_w(voodoo_device *vd, offs_t offset, uint32_t d destmax = (vd->fbi.mask + 1 - vd->fbi.lfb_base*4) / 2; bufoffs = y * vd->fbi.rowpixels + x; if (bufoffs >= destmax) { - vd->device->logerror("lfb_direct_w: Buffer offset out of bounds x=%i y=%i offset=%08X bufoffs=%08X data=%08X\n", x, y, offset, (uint32_t) bufoffs, data); + vd->logerror("lfb_direct_w: Buffer offset out of bounds x=%i y=%i offset=%08X bufoffs=%08X data=%08X\n", x, y, offset, (uint32_t) bufoffs, data); return 0; } if (ACCESSING_BITS_0_15) dest[bufoffs + 0] = data&0xffff; if (ACCESSING_BITS_16_31) dest[bufoffs + 1] = data>>16; - if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:write direct (%d,%d) = %08X & %08X\n", vd->index, x, y, data, mem_mask); + if (LOG_LFB) vd->logerror("VOODOO.%d.LFB:write direct (%d,%d) = %08X & %08X\n", vd->index, x, y, data, mem_mask); return 0; } @@ -3118,7 +3146,7 @@ int32_t voodoo_device::lfb_w(voodoo_device* vd, offs_t offset, uint32_t data, ui break; default: /* reserved */ - vd->device->logerror("lfb_w: Unknown format\n"); + vd->logerror("lfb_w: Unknown format\n"); return 0; } @@ -3159,7 +3187,7 @@ int32_t voodoo_device::lfb_w(voodoo_device* vd, offs_t offset, uint32_t data, ui DECLARE_DITHER_POINTERS_NO_DITHER_VAR; uint32_t bufoffs; - if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:write raw mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask); + if (LOG_LFB) vd->logerror("VOODOO.%d.LFB:write raw mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask); /* determine the screen Y */ scry = y; @@ -3217,7 +3245,7 @@ int32_t voodoo_device::lfb_w(voodoo_device* vd, offs_t offset, uint32_t data, ui { DECLARE_DITHER_POINTERS; - if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:write pipelined mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask); + if (LOG_LFB) vd->logerror("VOODOO.%d.LFB:write pipelined mode %X (%d,%d) = %08X & %08X\n", vd->index, LFBMODE_WRITE_FORMAT(vd->reg[lfbMode].u), x, y, data, mem_mask); /* determine the screen Y */ scry = y; @@ -3373,7 +3401,7 @@ int32_t voodoo_device::texture_w(voodoo_device *vd, offs_t offset, uint32_t data /* update texture info if dirty */ if (t->regdirty) - recompute_texture_params(t); + t->recompute_texture_params(); /* swizzle the data */ if (TEXLOD_TDATA_SWIZZLE(t->reg[tLOD].u)) @@ -3395,11 +3423,12 @@ int32_t voodoo_device::texture_w(voodoo_device *vd, offs_t offset, uint32_t data tt = (offset >> 7) & 0xff; /* old code has a bit about how this is broken in gauntleg unless we always look at TMU0 */ - if (TEXMODE_SEQ_8_DOWNLD(vd->tmu[0].reg/*t->reg*/[textureMode].u)) + if (TEXMODE_SEQ_8_DOWNLD(vd->tmu[0].reg/*t->reg*/[textureMode].u)) { ts = (offset << 2) & 0xfc; - else + } + else { ts = (offset << 1) & 0xfc; - + } /* validate parameters */ if (lod > 8) return 0; @@ -3408,13 +3437,13 @@ int32_t voodoo_device::texture_w(voodoo_device *vd, offs_t offset, uint32_t data tbaseaddr = t->lodoffset[lod]; tbaseaddr += tt * ((t->wmask >> lod) + 1) + ts; - if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 8-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data); + if (LOG_TEXTURE_RAM) vd->logerror("Texture 8-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data); } else { tbaseaddr = t->lodoffset[0] + offset*4; - if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 8-bit w: offset=%X data=%08X\n", offset*4, data); + if (LOG_TEXTURE_RAM) vd->logerror("Texture 8-bit w: offset=%X data=%08X\n", offset*4, data); } /* write the four bytes in little-endian order */ @@ -3448,13 +3477,13 @@ int32_t voodoo_device::texture_w(voodoo_device *vd, offs_t offset, uint32_t data tbaseaddr = t->lodoffset[lod]; tbaseaddr += 2 * (tt * ((t->wmask >> lod) + 1) + ts); - if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 16-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data); + if (LOG_TEXTURE_RAM) vd->logerror("Texture 16-bit w: lod=%d s=%d t=%d data=%08X\n", lod, ts, tt, data); } else { tbaseaddr = t->lodoffset[0] + offset*4; - if (LOG_TEXTURE_RAM) vd->device->logerror("Texture 16-bit w: offset=%X data=%08X\n", offset*4, data); + if (LOG_TEXTURE_RAM) vd->logerror("Texture 16-bit w: offset=%X data=%08X\n", offset*4, data); } /* write the two words in little-endian order */ @@ -3487,7 +3516,7 @@ void voodoo_device::flush_fifos(voodoo_device *vd, attotime current_time) if (!vd->pci.op_pending) fatalerror("flush_fifos called with no pending operation\n"); - if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos start -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index, + if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos start -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index, vd->pci.op_end_time.seconds(), (uint32_t)(vd->pci.op_end_time.attoseconds() >> 32), (uint32_t)vd->pci.op_end_time.attoseconds(), current_time.seconds(), (uint32_t)(current_time.attoseconds() >> 32), (uint32_t)current_time.attoseconds()); @@ -3508,24 +3537,24 @@ void voodoo_device::flush_fifos(voodoo_device *vd, attotime current_time) if (vd->fbi.cmdfifo[0].enable) { /* if we don't have anything to execute, we're done for now */ - cycles = cmdfifo_execute_if_ready(vd, &vd->fbi.cmdfifo[0]); + cycles = vd->cmdfifo_execute_if_ready(vd->fbi.cmdfifo[0]); if (cycles == -1) { vd->pci.op_pending = false; in_flush = false; - if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index); + if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index); return; } } else if (vd->fbi.cmdfifo[1].enable) { /* if we don't have anything to execute, we're done for now */ - cycles = cmdfifo_execute_if_ready(vd, &vd->fbi.cmdfifo[1]); + cycles = vd->cmdfifo_execute_if_ready(vd->fbi.cmdfifo[1]); if (cycles == -1) { vd->pci.op_pending = false; in_flush = false; - if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index); + if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos end -- CMDFIFO empty\n", vd->index); return; } } @@ -3534,21 +3563,21 @@ void voodoo_device::flush_fifos(voodoo_device *vd, attotime current_time) else { /* choose which FIFO to read from */ - if (!fifo_empty(&vd->fbi.fifo)) + if (!vd->fbi.fifo.empty()) fifo = &vd->fbi.fifo; - else if (!fifo_empty(&vd->pci.fifo)) + else if (!vd->pci.fifo.empty()) fifo = &vd->pci.fifo; else { vd->pci.op_pending = false; in_flush = false; - if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- FIFOs empty\n", vd->index); + if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos end -- FIFOs empty\n", vd->index); return; } /* extract address and data */ - address = fifo_remove(fifo); - data = fifo_remove(fifo); + address = fifo->remove(); + data = fifo->remove(); /* target the appropriate location */ if ((address & (0xc00000/4)) == 0) @@ -3585,12 +3614,12 @@ void voodoo_device::flush_fifos(voodoo_device *vd, attotime current_time) /* account for those cycles */ vd->pci.op_end_time += attotime(0, (attoseconds_t)cycles * vd->attoseconds_per_cycle); - if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:update -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index, + if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:update -- pending=%d.%08X%08X cur=%d.%08X%08X\n", vd->index, vd->pci.op_end_time.seconds(), (uint32_t)(vd->pci.op_end_time.attoseconds() >> 32), (uint32_t)vd->pci.op_end_time.attoseconds(), current_time.seconds(), (uint32_t)(current_time.attoseconds() >> 32), (uint32_t)current_time.attoseconds()); } - if (LOG_FIFO_VERBOSE) vd->device->logerror("VOODOO.%d.FIFO:flush_fifos end -- pending command complete at %d.%08X%08X\n", vd->index, + if (LOG_FIFO_VERBOSE) vd->logerror("VOODOO.%d.FIFO:flush_fifos end -- pending command complete at %d.%08X%08X\n", vd->index, vd->pci.op_end_time.seconds(), (uint32_t)(vd->pci.op_end_time.attoseconds() >> 32), (uint32_t)vd->pci.op_end_time.attoseconds()); in_flush = false; @@ -3721,17 +3750,17 @@ WRITE32_MEMBER( voodoo_device::voodoo_w ) /* if there's room in the PCI FIFO, add there */ if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w adding to PCI FIFO @ %08X=%08X\n", this, offset, data); - if (!fifo_full(&pci.fifo)) + if (!pci.fifo.full()) { - fifo_add(&pci.fifo, offset); - fifo_add(&pci.fifo, data); + pci.fifo.add(offset); + pci.fifo.add(data); } else fatalerror("PCI FIFO full\n"); /* handle flushing to the memory FIFO */ if (FBIINIT0_ENABLE_MEMORY_FIFO(reg[fbiInit0].u) && - fifo_space(&pci.fifo) <= 2 * FBIINIT4_MEMORY_FIFO_LWM(reg[fbiInit4].u)) + pci.fifo.space() <= 2 * FBIINIT4_MEMORY_FIFO_LWM(reg[fbiInit4].u)) { uint8_t valid[4]; @@ -3742,15 +3771,15 @@ WRITE32_MEMBER( voodoo_device::voodoo_w ) /* flush everything we can */ if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:voodoo_w moving PCI FIFO to memory FIFO\n", index); - while (!fifo_empty(&pci.fifo) && valid[(fifo_peek(&pci.fifo) >> 22) & 3]) + while (!pci.fifo.empty() && valid[(pci.fifo.peek() >> 22) & 3]) { - fifo_add(&fbi.fifo, fifo_remove(&pci.fifo)); - fifo_add(&fbi.fifo, fifo_remove(&pci.fifo)); + fbi.fifo.add(pci.fifo.remove()); + fbi.fifo.add(pci.fifo.remove()); } /* if we're above the HWM as a result, stall */ if (FBIINIT0_STALL_PCIE_FOR_HWM(reg[fbiInit0].u) && - fifo_items(&fbi.fifo) >= 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(reg[fbiInit0].u)) + fbi.fifo.items() >= 2 * 32 * FBIINIT0_MEMORY_FIFO_HWM(reg[fbiInit0].u)) { if (LOG_FIFO) logerror("VOODOO.%d.FIFO:voodoo_w hit memory FIFO HWM -- stalling\n", index); stall_cpu(this, STALLED_UNTIL_FIFO_LWM, machine().time()); @@ -3759,7 +3788,7 @@ WRITE32_MEMBER( voodoo_device::voodoo_w ) /* if we're at the LWM for the PCI FIFO, stall */ if (FBIINIT0_STALL_PCIE_FOR_HWM(reg[fbiInit0].u) && - fifo_space(&pci.fifo) <= 2 * FBIINIT0_PCI_FIFO_LWM(reg[fbiInit0].u)) + pci.fifo.space() <= 2 * FBIINIT0_PCI_FIFO_LWM(reg[fbiInit0].u)) { if (LOG_FIFO) logerror("VOODOO.%d.FIFO:voodoo_w hit PCI FIFO free LWM -- stalling\n", index); stall_cpu(this, STALLED_UNTIL_FIFO_LWM, machine().time()); @@ -3783,7 +3812,7 @@ WRITE32_MEMBER( voodoo_device::voodoo_w ) * *************************************/ -static uint32_t register_r(voodoo_device *vd, offs_t offset) +uint32_t voodoo_device::register_r(voodoo_device *vd, offs_t offset) { int regnum = offset & 0xff; uint32_t result; @@ -3794,7 +3823,7 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset) /* first make sure this register is readable */ if (!(vd->regaccess[regnum] & REGISTER_READ)) { - vd->device->logerror("VOODOO.%d.ERROR:Invalid attempt to read %s\n", vd->index, regnum < 225 ? vd->regnames[regnum] : "unknown register"); + vd->logerror("VOODOO.%d.ERROR:Invalid attempt to read %s\n", vd->index, regnum < 225 ? vd->regnames[regnum] : "unknown register"); return 0xffffffff; } @@ -3810,11 +3839,11 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset) result = 0; /* bits 5:0 are the PCI FIFO free space */ - if (fifo_empty(&vd->pci.fifo)) + if (vd->pci.fifo.empty()) result |= 0x3f << 0; else { - int temp = fifo_space(&vd->pci.fifo)/2; + int temp = vd->pci.fifo.space()/2; if (temp > 0x3f) temp = 0x3f; result |= temp << 0; @@ -3842,11 +3871,11 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset) result |= vd->fbi.frontbuf << 10; /* bits 27:12 indicate memory FIFO freespace */ - if (!FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u) || fifo_empty(&vd->fbi.fifo)) + if (!FBIINIT0_ENABLE_MEMORY_FIFO(vd->reg[fbiInit0].u) || vd->fbi.fifo.empty()) result |= 0xffff << 12; else { - int temp = fifo_space(&vd->fbi.fifo)/2; + int temp = vd->fbi.fifo.space()/2; if (temp > 0xffff) temp = 0xffff; result |= temp << 12; @@ -3927,7 +3956,7 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset) case fbiZfuncFail: case fbiAfuncFail: case fbiPixelsOut: - update_statistics(vd, true); + vd->update_statistics(true); case fbiTrianglesOut: result = vd->reg[regnum].u & 0xffffff; break; @@ -3950,7 +3979,7 @@ static uint32_t register_r(voodoo_device *vd, offs_t offset) logit = false; if (logit) - vd->device->logerror("VOODOO.%d.REG:%s read = %08X\n", vd->index, vd->regnames[regnum], result); + vd->logerror("VOODOO.%d.REG:%s read = %08X\n", vd->index, vd->regnames[regnum], result); } return result; @@ -4021,7 +4050,7 @@ static uint32_t lfb_r(voodoo_device *vd, offs_t offset, bool lfb_3d) /* advance pointers to the proper row */ bufoffs = scry * vd->fbi.rowpixels + x; if (bufoffs >= bufmax) { - vd->device->logerror("LFB_R: Buffer offset out of bounds x=%i y=%i lfb_3d=%i offset=%08X bufoffs=%08X\n", x, y, lfb_3d, offset, (uint32_t) bufoffs); + vd->logerror("LFB_R: Buffer offset out of bounds x=%i y=%i lfb_3d=%i offset=%08X bufoffs=%08X\n", x, y, lfb_3d, offset, (uint32_t) bufoffs); return 0xffffffff; } @@ -4039,7 +4068,7 @@ static uint32_t lfb_r(voodoo_device *vd, offs_t offset, bool lfb_3d) if (LFBMODE_BYTE_SWIZZLE_READS(vd->reg[lfbMode].u)) data = flipendian_int32(data); - if (LOG_LFB) vd->device->logerror("VOODOO.%d.LFB:read (%d,%d) = %08X\n", vd->index, x, y, data); + if (LOG_LFB) vd->logerror("VOODOO.%d.LFB:read (%d,%d) = %08X\n", vd->index, x, y, data); return data; } @@ -4131,7 +4160,7 @@ READ32_MEMBER( voodoo_banshee_device::banshee_agp_r ) } if (LOG_REGISTERS) - logerror("%s:banshee_r(AGP:%s)\n", device->machine().describe_context(), banshee_agp_reg_name[offset]); + logerror("%s:banshee_r(AGP:%s)\n", machine().describe_context(), banshee_agp_reg_name[offset]); return result; } @@ -4934,14 +4963,12 @@ void voodoo_device::common_start_voodoo(uint8_t type) assert(m_cputag != nullptr); assert(m_fbmem > 0); - /* store a pointer back to the device */ - device = this; vd_type = type; /* copy config data */ freq = clock(); - device->m_vblank.resolve(); - device->m_stall.resolve(); + m_vblank.resolve(); + m_stall.resolve(); /* create a multiprocessor work queue */ poly = poly_alloc(machine(), 64, sizeof(poly_extra_data), 0); @@ -5069,7 +5096,7 @@ void voodoo_device::common_start_voodoo(uint8_t type) init_fbi(this, &fbi, fbmem, m_fbmem << 20); /* build shared TMU tables */ - init_tmu_shared(&tmushare); + tmushare.init(); /* set up the TMUs */ init_tmu(this, &tmu[0], ®[0x100], tmumem[0], tmumem0 << 20); @@ -5101,7 +5128,7 @@ void voodoo_device::common_start_voodoo(uint8_t type) banshee.io[io_tmuGbeInit] = 0x00000bfb; /* do a soft reset to reset everything else */ - soft_reset(this); + soft_reset(); /* register for save states */ init_save_state(this); @@ -5182,7 +5209,7 @@ int32_t voodoo_device::fastfill(voodoo_device *vd) poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(vd->poly); int count = std::min(ey - y, int(ARRAY_LENGTH(extents))); - extra->device= vd; + extra->device = vd; memcpy(extra->dither, dithermatrix, sizeof(extra->dither)); pixels += poly_render_triangle_custom(vd->poly, drawbuf, global_cliprect, raster_fastfill, y, count, extents); @@ -5304,7 +5331,7 @@ int32_t voodoo_device::triangle(voodoo_device *vd) g_profiler.stop(); /* 1 pixel per clock, plus some setup time */ - if (LOG_REGISTERS) vd->device->logerror("cycles = %d\n", TRIANGLE_SETUP_CLOCKS + pixels); + if (LOG_REGISTERS) vd->logerror("cycles = %d\n", TRIANGLE_SETUP_CLOCKS + pixels); return TRIANGLE_SETUP_CLOCKS + pixels; } @@ -5316,7 +5343,7 @@ int32_t voodoo_device::triangle(voodoo_device *vd) int32_t voodoo_device::begin_triangle(voodoo_device *vd) { - setup_vertex *sv = &vd->fbi.svert[2]; + fbi_state::setup_vertex *sv = &vd->fbi.svert[2]; /* extract all the data from registers */ sv->x = vd->reg[sVx].f; @@ -5348,7 +5375,7 @@ int32_t voodoo_device::begin_triangle(voodoo_device *vd) int32_t voodoo_device::draw_triangle(voodoo_device *vd) { - setup_vertex *sv = &vd->fbi.svert[2]; + fbi_state::setup_vertex *sv = &vd->fbi.svert[2]; int cycles = 0; /* for strip mode, shuffle vertex 1 down to 0 */ @@ -5575,7 +5602,7 @@ int32_t voodoo_device::triangle_create_work_item(voodoo_device* vd, uint16_t *dr extra->ds0dy = vd->tmu[0].dsdy; extra->dt0dy = vd->tmu[0].dtdy; extra->dw0dy = vd->tmu[0].dwdy; - extra->lodbase0 = prepare_tmu(&vd->tmu[0]); + extra->lodbase0 = vd->tmu[0].prepare(); vd->stats.texture_mode[TEXMODE_FORMAT(vd->tmu[0].reg[textureMode].u)]++; /* fill in texture 1 parameters */ @@ -5590,7 +5617,7 @@ int32_t voodoo_device::triangle_create_work_item(voodoo_device* vd, uint16_t *dr extra->ds1dy = vd->tmu[1].dsdy; extra->dt1dy = vd->tmu[1].dtdy; extra->dw1dy = vd->tmu[1].dwdy; - extra->lodbase1 = prepare_tmu(&vd->tmu[1]); + extra->lodbase1 = vd->tmu[1].prepare(); vd->stats.texture_mode[TEXMODE_FORMAT(vd->tmu[1].reg[textureMode].u)]++; } } @@ -5611,10 +5638,10 @@ int32_t voodoo_device::triangle_create_work_item(voodoo_device* vd, uint16_t *dr hash table -------------------------------------------------*/ -raster_info *voodoo_device::add_rasterizer(voodoo_device *vd, const raster_info *cinfo) +voodoo_device::raster_info *voodoo_device::add_rasterizer(voodoo_device *vd, const raster_info *cinfo) { raster_info *info = &vd->rasterizer[vd->next_rasterizer++]; - int hash = compute_raster_hash(cinfo); + int hash = cinfo->compute_hash(); assert_always(vd->next_rasterizer <= MAX_RASTERIZERS, "Out of space for new rasterizers!"); @@ -5646,7 +5673,7 @@ raster_info *voodoo_device::add_rasterizer(voodoo_device *vd, const raster_info it, creating a new one if necessary -------------------------------------------------*/ -raster_info *voodoo_device::find_rasterizer(voodoo_device *vd, int texcount) +voodoo_device::raster_info *voodoo_device::find_rasterizer(voodoo_device *vd, int texcount) { raster_info *info, *prev = nullptr; raster_info curinfo; @@ -5661,7 +5688,7 @@ raster_info *voodoo_device::find_rasterizer(voodoo_device *vd, int texcount) curinfo.eff_tex_mode_1 = (texcount >= 2) ? normalize_tex_mode(vd->tmu[1].reg[textureMode].u) : 0xffffffff; /* compute the hash */ - hash = compute_raster_hash(&curinfo); + hash = curinfo.compute_hash(); /* find the appropriate hash entry */ for (info = vd->raster_hash[hash]; info; prev = info, info = info->next) @@ -5744,15 +5771,15 @@ void voodoo_device::dump_rasterizer_stats(voodoo_device *vd) } } -voodoo_device::voodoo_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - m_fbmem(0), - m_tmumem0(0), - m_tmumem1(0), - m_screen(nullptr), - m_cputag(nullptr), - m_vblank(*this), - m_stall(*this) +voodoo_device::voodoo_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , m_fbmem(0) + , m_tmumem0(0) + , m_tmumem1(0) + , m_screen(nullptr) + , m_cputag(nullptr) + , m_vblank(*this) + , m_stall(*this) { } @@ -5766,7 +5793,7 @@ voodoo_device::~voodoo_device() void voodoo_device::device_reset() { - soft_reset(this); + soft_reset(); } //------------------------------------------------- @@ -5781,10 +5808,10 @@ void voodoo_device::device_stop() } -const device_type VOODOO_1 = device_creator; +DEFINE_DEVICE_TYPE(VOODOO_1, voodoo_1_device, "voodoo_1", "3dfx Voodoo Graphics") voodoo_1_device::voodoo_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : voodoo_device(mconfig, VOODOO_1, "3dfx Voodoo Graphics", tag, owner, clock, "voodoo_1", __FILE__) + : voodoo_device(mconfig, VOODOO_1, tag, owner, clock) { } @@ -5798,10 +5825,10 @@ void voodoo_1_device::device_start() } -const device_type VOODOO_2 = device_creator; +DEFINE_DEVICE_TYPE(VOODOO_2, voodoo_2_device, "voodoo_2", "3dfx Voodoo 2") voodoo_2_device::voodoo_2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : voodoo_device(mconfig, VOODOO_2, "3dfx Voodoo 2", tag, owner, clock, "voodoo_2", __FILE__) + : voodoo_device(mconfig, VOODOO_2, tag, owner, clock) { } @@ -5815,15 +5842,15 @@ void voodoo_2_device::device_start() } -const device_type VOODOO_BANSHEE = device_creator; +DEFINE_DEVICE_TYPE(VOODOO_BANSHEE, voodoo_banshee_device, "voodoo_banshee", "3dfx Voodoo Banshee") voodoo_banshee_device::voodoo_banshee_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : voodoo_device(mconfig, VOODOO_BANSHEE, "3dfx Voodoo Banshee", tag, owner, clock, "voodoo_banshee", __FILE__) + : voodoo_banshee_device(mconfig, VOODOO_BANSHEE, tag, owner, clock) { } -voodoo_banshee_device::voodoo_banshee_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : voodoo_device(mconfig, type, name, tag, owner, clock, shortname, source) +voodoo_banshee_device::voodoo_banshee_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : voodoo_device(mconfig, type, tag, owner, clock) { } @@ -5837,10 +5864,10 @@ void voodoo_banshee_device::device_start() } -const device_type VOODOO_3 = device_creator; +DEFINE_DEVICE_TYPE(VOODOO_3, voodoo_3_device, "voodoo_3", "3dfx Voodoo 3") voodoo_3_device::voodoo_3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : voodoo_banshee_device(mconfig, VOODOO_3, "3dfx Voodoo 3", tag, owner, clock, "voodoo_3", __FILE__) + : voodoo_banshee_device(mconfig, VOODOO_3, tag, owner, clock) { } diff --git a/src/devices/video/voodoo.h b/src/devices/video/voodoo.h index edce2e21adf..9d26986f4a0 100644 --- a/src/devices/video/voodoo.h +++ b/src/devices/video/voodoo.h @@ -8,14 +8,16 @@ ***************************************************************************/ -#ifndef __VOODOO_H__ -#define __VOODOO_H__ - -#include "video/polylgcy.h" +#ifndef MAME_VIDEO_VOODOO_H +#define MAME_VIDEO_VOODOO_H #pragma once +#include "video/polylgcy.h" +#include "video/rgbutil.h" + + /************************************* * * Misc. constants @@ -1362,10 +1364,6 @@ static const uint8_t dither_matrix_2x2[16] = -struct voodoo_state; -struct poly_extra_data; -class voodoo_device; - struct rgba { #ifdef LSB_FIRST @@ -1386,317 +1384,6 @@ union voodoo_reg -struct voodoo_stats -{ - uint8_t lastkey; /* last key state */ - uint8_t display; /* display stats? */ - int32_t swaps; /* total swaps */ - int32_t stalls; /* total stalls */ - int32_t total_triangles; /* total triangles */ - int32_t total_pixels_in; /* total pixels in */ - int32_t total_pixels_out; /* total pixels out */ - int32_t total_chroma_fail; /* total chroma fail */ - int32_t total_zfunc_fail; /* total z func fail */ - int32_t total_afunc_fail; /* total a func fail */ - int32_t total_clipped; /* total clipped */ - int32_t total_stippled; /* total stippled */ - int32_t lfb_writes; /* LFB writes */ - int32_t lfb_reads; /* LFB reads */ - int32_t reg_writes; /* register writes */ - int32_t reg_reads; /* register reads */ - int32_t tex_writes; /* texture writes */ - int32_t texture_mode[16]; /* 16 different texture modes */ - uint8_t render_override; /* render override */ - char buffer[1024]; /* string */ -}; - - -/* note that this structure is an even 64 bytes long */ -struct stats_block -{ - int32_t pixels_in; /* pixels in statistic */ - int32_t pixels_out; /* pixels out statistic */ - int32_t chroma_fail; /* chroma test fail statistic */ - int32_t zfunc_fail; /* z function test fail statistic */ - int32_t afunc_fail; /* alpha function test fail statistic */ - int32_t clip_fail; /* clipping fail statistic */ - int32_t stipple_count; /* stipple statistic */ - int32_t filler[64/4 - 7]; /* pad this structure to 64 bytes */ -}; - - -struct fifo_state -{ - uint32_t * base; /* base of the FIFO */ - int32_t size; /* size of the FIFO */ - int32_t in; /* input pointer */ - int32_t out; /* output pointer */ -}; - - -struct cmdfifo_info -{ - uint8_t enable; /* enabled? */ - uint8_t count_holes; /* count holes? */ - uint32_t base; /* base address in framebuffer RAM */ - uint32_t end; /* end address in framebuffer RAM */ - uint32_t rdptr; /* current read pointer */ - uint32_t amin; /* minimum address */ - uint32_t amax; /* maximum address */ - uint32_t depth; /* current depth */ - uint32_t holes; /* number of holes */ -}; - - -struct pci_state -{ - fifo_state fifo; /* PCI FIFO */ - uint32_t init_enable; /* initEnable value */ - uint8_t stall_state; /* state of the system if we're stalled */ - uint8_t op_pending; /* true if an operation is pending */ - attotime op_end_time; /* time when the pending operation ends */ - emu_timer * continue_timer; /* timer to use to continue processing */ - uint32_t fifo_mem[64*2]; /* memory backing the PCI FIFO */ -}; - - -struct ncc_table -{ - uint8_t dirty; /* is the texel lookup dirty? */ - voodoo_reg * reg; /* pointer to our registers */ - int32_t ir[4], ig[4], ib[4]; /* I values for R,G,B */ - int32_t qr[4], qg[4], qb[4]; /* Q values for R,G,B */ - int32_t y[16]; /* Y values */ - rgb_t * palette; /* pointer to associated RGB palette */ - rgb_t * palettea; /* pointer to associated ARGB palette */ - rgb_t texel[256]; /* texel lookup */ -}; - - -struct tmu_state -{ - uint8_t * ram; /* pointer to our RAM */ - uint32_t mask; /* mask to apply to pointers */ - voodoo_reg * reg; /* pointer to our register base */ - uint32_t regdirty; /* true if the LOD/mode/base registers have changed */ - - uint32_t texaddr_mask; /* mask for texture address */ - uint8_t texaddr_shift; /* shift for texture address */ - - int64_t starts, startt; /* starting S,T (14.18) */ - int64_t startw; /* starting W (2.30) */ - int64_t dsdx, dtdx; /* delta S,T per X */ - int64_t dwdx; /* delta W per X */ - int64_t dsdy, dtdy; /* delta S,T per Y */ - int64_t dwdy; /* delta W per Y */ - - int32_t lodmin, lodmax; /* min, max LOD values */ - int32_t lodbias; /* LOD bias */ - uint32_t lodmask; /* mask of available LODs */ - uint32_t lodoffset[9]; /* offset of texture base for each LOD */ - int32_t detailmax; /* detail clamp */ - int32_t detailbias; /* detail bias */ - uint8_t detailscale; /* detail scale */ - - uint32_t wmask; /* mask for the current texture width */ - uint32_t hmask; /* mask for the current texture height */ - - uint32_t bilinear_mask; /* mask for bilinear resolution (0xf0 for V1, 0xff for V2) */ - - ncc_table ncc[2]; /* two NCC tables */ - - rgb_t * lookup; /* currently selected lookup */ - rgb_t * texel[16]; /* texel lookups for each format */ - - rgb_t palette[256]; /* palette lookup table */ - rgb_t palettea[256]; /* palette+alpha lookup table */ -}; - - -struct tmu_shared_state -{ - rgb_t rgb332[256]; /* RGB 3-3-2 lookup table */ - rgb_t alpha8[256]; /* alpha 8-bit lookup table */ - rgb_t int8[256]; /* intensity 8-bit lookup table */ - rgb_t ai44[256]; /* alpha, intensity 4-4 lookup table */ - - rgb_t rgb565[65536]; /* RGB 5-6-5 lookup table */ - rgb_t argb1555[65536]; /* ARGB 1-5-5-5 lookup table */ - rgb_t argb4444[65536]; /* ARGB 4-4-4-4 lookup table */ -}; - - -struct setup_vertex -{ - float x, y; /* X, Y coordinates */ - float z, wb; /* Z and broadcast W values */ - float r, g, b, a; /* A, R, G, B values */ - float s0, t0, w0; /* W, S, T for TMU 0 */ - float s1, t1, w1; /* W, S, T for TMU 1 */ -}; - - -struct fbi_state -{ - uint8_t * ram; /* pointer to frame buffer RAM */ - uint32_t mask; /* mask to apply to pointers */ - uint32_t rgboffs[3]; /* word offset to 3 RGB buffers */ - uint32_t auxoffs; /* word offset to 1 aux buffer */ - - uint8_t frontbuf; /* front buffer index */ - uint8_t backbuf; /* back buffer index */ - uint8_t swaps_pending; /* number of pending swaps */ - uint8_t video_changed; /* did the frontbuffer video change? */ - - uint32_t yorigin; /* Y origin subtract value */ - uint32_t lfb_base; /* base of LFB in memory */ - uint8_t lfb_stride; /* stride of LFB accesses in bits */ - - uint32_t width; /* width of current frame buffer */ - uint32_t height; /* height of current frame buffer */ - uint32_t xoffs; /* horizontal offset (back porch) */ - uint32_t yoffs; /* vertical offset (back porch) */ - uint32_t vsyncscan; /* vertical sync scanline */ - uint32_t rowpixels; /* pixels per row */ - uint32_t tile_width; /* width of video tiles */ - uint32_t tile_height; /* height of video tiles */ - uint32_t x_tiles; /* number of tiles in the X direction */ - - emu_timer * vblank_timer; /* VBLANK timer */ - uint8_t vblank; /* VBLANK state */ - uint8_t vblank_count; /* number of VBLANKs since last swap */ - uint8_t vblank_swap_pending; /* a swap is pending, waiting for a vblank */ - uint8_t vblank_swap; /* swap when we hit this count */ - uint8_t vblank_dont_swap; /* don't actually swap when we hit this point */ - - /* triangle setup info */ - uint8_t cheating_allowed; /* allow cheating? */ - int32_t sign; /* triangle sign */ - int16_t ax, ay; /* vertex A x,y (12.4) */ - int16_t bx, by; /* vertex B x,y (12.4) */ - int16_t cx, cy; /* vertex C x,y (12.4) */ - int32_t startr, startg, startb, starta; /* starting R,G,B,A (12.12) */ - int32_t startz; /* starting Z (20.12) */ - int64_t startw; /* starting W (16.32) */ - int32_t drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */ - int32_t dzdx; /* delta Z per X */ - int64_t dwdx; /* delta W per X */ - int32_t drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */ - int32_t dzdy; /* delta Z per Y */ - int64_t dwdy; /* delta W per Y */ - - stats_block lfb_stats; /* LFB-access statistics */ - - uint8_t sverts; /* number of vertices ready */ - setup_vertex svert[3]; /* 3 setup vertices */ - - fifo_state fifo; /* framebuffer memory fifo */ - cmdfifo_info cmdfifo[2]; /* command FIFOs */ - - uint8_t fogblend[64]; /* 64-entry fog table */ - uint8_t fogdelta[64]; /* 64-entry fog table */ - uint8_t fogdelta_mask; /* mask for for delta (0xff for V1, 0xfc for V2) */ - - rgb_t pen[65536]; /* mapping from pixels to pens */ - rgb_t clut[512]; /* clut gamma data */ - uint8_t clut_dirty; /* do we need to recompute? */ -}; - - -struct dac_state -{ - uint8_t reg[8]; /* 8 registers */ - uint8_t read_result; /* pending read result */ -}; - - -struct raster_info -{ - raster_info * next; /* pointer to next entry with the same hash */ - poly_draw_scanline_func callback; /* callback pointer */ - bool is_generic; /* true if this is one of the generic rasterizers */ - uint8_t display; /* display index */ - uint32_t hits; /* how many hits (pixels) we've used this for */ - uint32_t polys; /* how many polys we've used this for */ - uint32_t eff_color_path; /* effective fbzColorPath value */ - uint32_t eff_alpha_mode; /* effective alphaMode value */ - uint32_t eff_fog_mode; /* effective fogMode value */ - uint32_t eff_fbz_mode; /* effective fbzMode value */ - uint32_t eff_tex_mode_0; /* effective textureMode value for TMU #0 */ - uint32_t eff_tex_mode_1; /* effective textureMode value for TMU #1 */ - uint32_t hash; -}; - - -struct poly_extra_data -{ - voodoo_device * device; - raster_info * info; /* pointer to rasterizer information */ - - int16_t ax, ay; /* vertex A x,y (12.4) */ - int32_t startr, startg, startb, starta; /* starting R,G,B,A (12.12) */ - int32_t startz; /* starting Z (20.12) */ - int64_t startw; /* starting W (16.32) */ - int32_t drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */ - int32_t dzdx; /* delta Z per X */ - int64_t dwdx; /* delta W per X */ - int32_t drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */ - int32_t dzdy; /* delta Z per Y */ - int64_t dwdy; /* delta W per Y */ - - int64_t starts0, startt0; /* starting S,T (14.18) */ - int64_t startw0; /* starting W (2.30) */ - int64_t ds0dx, dt0dx; /* delta S,T per X */ - int64_t dw0dx; /* delta W per X */ - int64_t ds0dy, dt0dy; /* delta S,T per Y */ - int64_t dw0dy; /* delta W per Y */ - int32_t lodbase0; /* used during rasterization */ - - int64_t starts1, startt1; /* starting S,T (14.18) */ - int64_t startw1; /* starting W (2.30) */ - int64_t ds1dx, dt1dx; /* delta S,T per X */ - int64_t dw1dx; /* delta W per X */ - int64_t ds1dy, dt1dy; /* delta S,T per Y */ - int64_t dw1dy; /* delta W per Y */ - int32_t lodbase1; /* used during rasterization */ - - uint16_t dither[16]; /* dither matrix, for fastfill */ -}; - - -struct banshee_info -{ - uint32_t io[0x40]; /* I/O registers */ - uint32_t agp[0x80]; /* AGP registers */ - uint8_t vga[0x20]; /* VGA registers */ - uint8_t crtc[0x27]; /* VGA CRTC registers */ - uint8_t seq[0x05]; /* VGA sequencer registers */ - uint8_t gc[0x05]; /* VGA graphics controller registers */ - uint8_t att[0x15]; /* VGA attribute registers */ - uint8_t attff; /* VGA attribute flip-flop */ - - uint32_t blt_regs[0x20]; /* 2D Blitter registers */ - uint32_t blt_dst_base; - uint32_t blt_dst_x; - uint32_t blt_dst_y; - uint32_t blt_dst_width; - uint32_t blt_dst_height; - uint32_t blt_dst_stride; - uint32_t blt_dst_bpp; - uint32_t blt_cmd; - uint32_t blt_src_base; - uint32_t blt_src_x; - uint32_t blt_src_y; - uint32_t blt_src_width; - uint32_t blt_src_height; - uint32_t blt_src_stride; - uint32_t blt_src_bpp; -}; - - -typedef voodoo_reg rgb_union; - - @@ -1746,23 +1433,19 @@ enum FUNCTION PROTOTYPES ***************************************************************************/ -struct stats_block; - /* ----- device interface ----- */ class voodoo_device : public device_t { public: - voodoo_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); ~voodoo_device(); - static void static_set_fbmem(device_t &device, int value) { downcast(device).m_fbmem = value; } static void static_set_tmumem(device_t &device, int value1, int value2) { downcast(device).m_tmumem0 = value1; downcast(device).m_tmumem1 = value2; } static void static_set_screen_tag(device_t &device, const char *tag) { downcast(device).m_screen = tag; } static void static_set_cpu_tag(device_t &device, const char *tag) { downcast(device).m_cputag = tag; } - template static devcb_base &static_set_vblank_callback(device_t &device, _Object object) { return downcast(device).m_vblank.set_callback(object); } - template static devcb_base &static_set_stall_callback(device_t &device, _Object object) { return downcast(device).m_stall.set_callback(object); } + template static devcb_base &static_set_vblank_callback(device_t &device, Object &&cb) { return downcast(device).m_vblank.set_callback(std::forward(cb)); } + template static devcb_base &static_set_stall_callback(device_t &device, Object &&cb) { return downcast(device).m_stall.set_callback(std::forward(cb)); } DECLARE_READ32_MEMBER( voodoo_r ); DECLARE_WRITE32_MEMBER( voodoo_w ); @@ -1789,6 +1472,314 @@ public: int voodoo_is_stalled(); void voodoo_set_init_enable(uint32_t newval); +protected: + voodoo_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + // device-level overrides + virtual void device_stop() override; + virtual void device_reset() override; + + + struct voodoo_stats + { + uint8_t lastkey; /* last key state */ + uint8_t display; /* display stats? */ + int32_t swaps; /* total swaps */ + int32_t stalls; /* total stalls */ + int32_t total_triangles; /* total triangles */ + int32_t total_pixels_in; /* total pixels in */ + int32_t total_pixels_out; /* total pixels out */ + int32_t total_chroma_fail; /* total chroma fail */ + int32_t total_zfunc_fail; /* total z func fail */ + int32_t total_afunc_fail; /* total a func fail */ + int32_t total_clipped; /* total clipped */ + int32_t total_stippled; /* total stippled */ + int32_t lfb_writes; /* LFB writes */ + int32_t lfb_reads; /* LFB reads */ + int32_t reg_writes; /* register writes */ + int32_t reg_reads; /* register reads */ + int32_t tex_writes; /* texture writes */ + int32_t texture_mode[16]; /* 16 different texture modes */ + uint8_t render_override; /* render override */ + char buffer[1024]; /* string */ + }; + + + /* note that this structure is an even 64 bytes long */ + struct stats_block + { + int32_t pixels_in; /* pixels in statistic */ + int32_t pixels_out; /* pixels out statistic */ + int32_t chroma_fail; /* chroma test fail statistic */ + int32_t zfunc_fail; /* z function test fail statistic */ + int32_t afunc_fail; /* alpha function test fail statistic */ + int32_t clip_fail; /* clipping fail statistic */ + int32_t stipple_count; /* stipple statistic */ + int32_t filler[64/4 - 7]; /* pad this structure to 64 bytes */ + }; + + + struct fifo_state + { + void reset() { in = out = 0; } + void add(uint32_t data); + uint32_t remove(); + uint32_t peek() { return base[out]; } + bool empty() const { return in == out; } + bool full() const { return ((in + 1) == out) || ((in == (size - 1)) && (out == 0)); } + int32_t items() const; + int32_t space() const { return size - 1 - items(); } + + uint32_t * base; /* base of the FIFO */ + int32_t size; /* size of the FIFO */ + int32_t in; /* input pointer */ + int32_t out; /* output pointer */ + }; + + + struct cmdfifo_info + { + uint8_t enable; /* enabled? */ + uint8_t count_holes; /* count holes? */ + uint32_t base; /* base address in framebuffer RAM */ + uint32_t end; /* end address in framebuffer RAM */ + uint32_t rdptr; /* current read pointer */ + uint32_t amin; /* minimum address */ + uint32_t amax; /* maximum address */ + uint32_t depth; /* current depth */ + uint32_t holes; /* number of holes */ + }; + + + struct pci_state + { + fifo_state fifo; /* PCI FIFO */ + uint32_t init_enable; /* initEnable value */ + uint8_t stall_state; /* state of the system if we're stalled */ + uint8_t op_pending; /* true if an operation is pending */ + attotime op_end_time; /* time when the pending operation ends */ + emu_timer * continue_timer; /* timer to use to continue processing */ + uint32_t fifo_mem[64*2]; /* memory backing the PCI FIFO */ + }; + + + struct tmu_state + { + void recompute_texture_params(); + int32_t prepare(); + rgbaint_t genTexture(int32_t x, const uint8_t *dither4, const uint32_t TEXMODE, rgb_t *LOOKUP, int32_t LODBASE, int64_t ITERS, int64_t ITERT, int64_t ITERW, int32_t &lod); + rgbaint_t combineTexture(const uint32_t TEXMODE, rgbaint_t c_local, rgbaint_t c_other, int32_t lod); + + struct ncc_table + { + void write(offs_t regnum, uint32_t data); + void update(); + + uint8_t dirty; /* is the texel lookup dirty? */ + voodoo_reg * reg; /* pointer to our registers */ + int32_t ir[4], ig[4], ib[4]; /* I values for R,G,B */ + int32_t qr[4], qg[4], qb[4]; /* Q values for R,G,B */ + int32_t y[16]; /* Y values */ + rgb_t * palette; /* pointer to associated RGB palette */ + rgb_t * palettea; /* pointer to associated ARGB palette */ + rgb_t texel[256]; /* texel lookup */ + }; + + uint8_t * ram; /* pointer to our RAM */ + uint32_t mask; /* mask to apply to pointers */ + voodoo_reg * reg; /* pointer to our register base */ + uint32_t regdirty; /* true if the LOD/mode/base registers have changed */ + + uint32_t texaddr_mask; /* mask for texture address */ + uint8_t texaddr_shift; /* shift for texture address */ + + int64_t starts, startt; /* starting S,T (14.18) */ + int64_t startw; /* starting W (2.30) */ + int64_t dsdx, dtdx; /* delta S,T per X */ + int64_t dwdx; /* delta W per X */ + int64_t dsdy, dtdy; /* delta S,T per Y */ + int64_t dwdy; /* delta W per Y */ + + int32_t lodmin, lodmax; /* min, max LOD values */ + int32_t lodbias; /* LOD bias */ + uint32_t lodmask; /* mask of available LODs */ + uint32_t lodoffset[9]; /* offset of texture base for each LOD */ + int32_t detailmax; /* detail clamp */ + int32_t detailbias; /* detail bias */ + uint8_t detailscale; /* detail scale */ + + uint32_t wmask; /* mask for the current texture width */ + uint32_t hmask; /* mask for the current texture height */ + + uint32_t bilinear_mask; /* mask for bilinear resolution (0xf0 for V1, 0xff for V2) */ + + ncc_table ncc[2]; /* two NCC tables */ + + rgb_t * lookup; /* currently selected lookup */ + rgb_t * texel[16]; /* texel lookups for each format */ + + rgb_t palette[256]; /* palette lookup table */ + rgb_t palettea[256]; /* palette+alpha lookup table */ + }; + + + struct tmu_shared_state + { + void init(); + + rgb_t rgb332[256]; /* RGB 3-3-2 lookup table */ + rgb_t alpha8[256]; /* alpha 8-bit lookup table */ + rgb_t int8[256]; /* intensity 8-bit lookup table */ + rgb_t ai44[256]; /* alpha, intensity 4-4 lookup table */ + + rgb_t rgb565[65536]; /* RGB 5-6-5 lookup table */ + rgb_t argb1555[65536]; /* ARGB 1-5-5-5 lookup table */ + rgb_t argb4444[65536]; /* ARGB 4-4-4-4 lookup table */ + }; + + + struct fbi_state + { + struct setup_vertex + { + float x, y; /* X, Y coordinates */ + float z, wb; /* Z and broadcast W values */ + float r, g, b, a; /* A, R, G, B values */ + float s0, t0, w0; /* W, S, T for TMU 0 */ + float s1, t1, w1; /* W, S, T for TMU 1 */ + }; + + uint8_t * ram; /* pointer to frame buffer RAM */ + uint32_t mask; /* mask to apply to pointers */ + uint32_t rgboffs[3]; /* word offset to 3 RGB buffers */ + uint32_t auxoffs; /* word offset to 1 aux buffer */ + + uint8_t frontbuf; /* front buffer index */ + uint8_t backbuf; /* back buffer index */ + uint8_t swaps_pending; /* number of pending swaps */ + uint8_t video_changed; /* did the frontbuffer video change? */ + + uint32_t yorigin; /* Y origin subtract value */ + uint32_t lfb_base; /* base of LFB in memory */ + uint8_t lfb_stride; /* stride of LFB accesses in bits */ + + uint32_t width; /* width of current frame buffer */ + uint32_t height; /* height of current frame buffer */ + uint32_t xoffs; /* horizontal offset (back porch) */ + uint32_t yoffs; /* vertical offset (back porch) */ + uint32_t vsyncscan; /* vertical sync scanline */ + uint32_t rowpixels; /* pixels per row */ + uint32_t tile_width; /* width of video tiles */ + uint32_t tile_height; /* height of video tiles */ + uint32_t x_tiles; /* number of tiles in the X direction */ + + emu_timer * vblank_timer; /* VBLANK timer */ + uint8_t vblank; /* VBLANK state */ + uint8_t vblank_count; /* number of VBLANKs since last swap */ + uint8_t vblank_swap_pending; /* a swap is pending, waiting for a vblank */ + uint8_t vblank_swap; /* swap when we hit this count */ + uint8_t vblank_dont_swap; /* don't actually swap when we hit this point */ + + /* triangle setup info */ + uint8_t cheating_allowed; /* allow cheating? */ + int32_t sign; /* triangle sign */ + int16_t ax, ay; /* vertex A x,y (12.4) */ + int16_t bx, by; /* vertex B x,y (12.4) */ + int16_t cx, cy; /* vertex C x,y (12.4) */ + int32_t startr, startg, startb, starta; /* starting R,G,B,A (12.12) */ + int32_t startz; /* starting Z (20.12) */ + int64_t startw; /* starting W (16.32) */ + int32_t drdx, dgdx, dbdx, dadx; /* delta R,G,B,A per X */ + int32_t dzdx; /* delta Z per X */ + int64_t dwdx; /* delta W per X */ + int32_t drdy, dgdy, dbdy, dady; /* delta R,G,B,A per Y */ + int32_t dzdy; /* delta Z per Y */ + int64_t dwdy; /* delta W per Y */ + + stats_block lfb_stats; /* LFB-access statistics */ + + uint8_t sverts; /* number of vertices ready */ + setup_vertex svert[3]; /* 3 setup vertices */ + + fifo_state fifo; /* framebuffer memory fifo */ + cmdfifo_info cmdfifo[2]; /* command FIFOs */ + + uint8_t fogblend[64]; /* 64-entry fog table */ + uint8_t fogdelta[64]; /* 64-entry fog table */ + uint8_t fogdelta_mask; /* mask for for delta (0xff for V1, 0xfc for V2) */ + + rgb_t pen[65536]; /* mapping from pixels to pens */ + rgb_t clut[512]; /* clut gamma data */ + uint8_t clut_dirty; /* do we need to recompute? */ + }; + + + struct dac_state + { + void data_w(uint8_t regum, uint8_t data); + void data_r(uint8_t regnum); + + uint8_t reg[8]; /* 8 registers */ + uint8_t read_result; /* pending read result */ + }; + + + struct raster_info + { + uint32_t compute_hash() const; + + raster_info * next; /* pointer to next entry with the same hash */ + poly_draw_scanline_func callback; /* callback pointer */ + bool is_generic; /* true if this is one of the generic rasterizers */ + uint8_t display; /* display index */ + uint32_t hits; /* how many hits (pixels) we've used this for */ + uint32_t polys; /* how many polys we've used this for */ + uint32_t eff_color_path; /* effective fbzColorPath value */ + uint32_t eff_alpha_mode; /* effective alphaMode value */ + uint32_t eff_fog_mode; /* effective fogMode value */ + uint32_t eff_fbz_mode; /* effective fbzMode value */ + uint32_t eff_tex_mode_0; /* effective textureMode value for TMU #0 */ + uint32_t eff_tex_mode_1; /* effective textureMode value for TMU #1 */ + uint32_t hash; + }; + + + struct poly_extra_data; + + + struct banshee_info + { + uint32_t io[0x40]; /* I/O registers */ + uint32_t agp[0x80]; /* AGP registers */ + uint8_t vga[0x20]; /* VGA registers */ + uint8_t crtc[0x27]; /* VGA CRTC registers */ + uint8_t seq[0x05]; /* VGA sequencer registers */ + uint8_t gc[0x05]; /* VGA graphics controller registers */ + uint8_t att[0x15]; /* VGA attribute registers */ + uint8_t attff; /* VGA attribute flip-flop */ + + uint32_t blt_regs[0x20]; /* 2D Blitter registers */ + uint32_t blt_dst_base; + uint32_t blt_dst_x; + uint32_t blt_dst_y; + uint32_t blt_dst_width; + uint32_t blt_dst_height; + uint32_t blt_dst_stride; + uint32_t blt_dst_bpp; + uint32_t blt_cmd; + uint32_t blt_src_base; + uint32_t blt_src_x; + uint32_t blt_src_y; + uint32_t blt_src_width; + uint32_t blt_src_height; + uint32_t blt_src_stride; + uint32_t blt_src_bpp; + }; + + + static const raster_info predef_raster_table[]; + + // not all of these need to be static, review. static void check_stalled_cpu(voodoo_device* vd, attotime current_time); @@ -1802,7 +1793,7 @@ public: static int32_t lfb_direct_w(voodoo_device *vd, offs_t offset, uint32_t data, uint32_t mem_mask); static int32_t banshee_2d_w(voodoo_device *vd, offs_t offset, uint32_t data); static void stall_cpu(voodoo_device *vd, int state, attotime current_time); - static void soft_reset(voodoo_device *vd); + void soft_reset(); static void recompute_video_memory(voodoo_device *vd); static int32_t fastfill(voodoo_device *vd); static int32_t triangle(voodoo_device *vd); @@ -1813,13 +1804,21 @@ public: static raster_info *add_rasterizer(voodoo_device *vd, const raster_info *cinfo); static raster_info *find_rasterizer(voodoo_device *vd, int texcount); static void dump_rasterizer_stats(voodoo_device *vd); - static void init_tmu_shared(tmu_shared_state *s); + + void accumulate_statistics(const stats_block &block); + void update_statistics(bool accumulate); + void reset_counters(); + + static uint32_t register_r(voodoo_device *vd, offs_t offset); static void swap_buffers(voodoo_device *vd); + int cmdfifo_compute_expected_depth(cmdfifo_info &f); static uint32_t cmdfifo_execute(voodoo_device *vd, cmdfifo_info *f); - static int32_t cmdfifo_execute_if_ready(voodoo_device* vd, cmdfifo_info *f); + int32_t cmdfifo_execute_if_ready(cmdfifo_info &f); static void cmdfifo_w(voodoo_device *vd, cmdfifo_info *f, offs_t offset, uint32_t data); + static void init_save_state(voodoo_device *vd); + static void raster_fastfill(void *dest, int32_t scanline, const poly_extent *extent, const void *extradata, int threadid); static void raster_generic_0tmu(void *dest, int32_t scanline, const poly_extent *extent, const void *extradata, int threadid); static void raster_generic_1tmu(void *dest, int32_t scanline, const poly_extent *extent, const void *extradata, int threadid); @@ -1833,16 +1832,15 @@ public: #undef RASTERIZER_ENTRY + static bool chromaKeyTest(voodoo_device *vd, stats_block *stats, uint32_t fbzModeReg, rgbaint_t rgaIntColor); + static bool alphaMaskTest(stats_block *stats, uint32_t fbzModeReg, uint8_t alpha); + static bool alphaTest(voodoo_device *vd, stats_block *stats, uint32_t alphaModeReg, uint8_t alpha); + static bool depthTest(uint16_t zaColorReg, stats_block *stats, int32_t destDepth, uint32_t fbzModeReg, int32_t biasdepth); + static bool combineColor(voodoo_device *vd, stats_block *STATS, uint32_t FBZCOLORPATH, uint32_t FBZMODE, uint32_t ALPHAMODE, rgbaint_t TEXELARGB, int32_t ITERZ, int64_t ITERW, rgbaint_t &srcColor); - -protected: - // device-level overrides - virtual void device_stop() override; - virtual void device_reset() override; +// FIXME: this stuff should not be public public: - // voodoo_state uint8_t index; /* index of board */ - voodoo_device *device; /* pointer to our containing device */ screen_device *screen; /* the screen we are acting on */ device_t *cpu; /* the CPU we interact with */ uint8_t vd_type; /* type of system */ @@ -1886,12 +1884,12 @@ class voodoo_1_device : public voodoo_device { public: voodoo_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + protected: // device-level overrides virtual void device_start() override; }; -extern const device_type VOODOO_1; class voodoo_2_device : public voodoo_device { @@ -1902,13 +1900,11 @@ protected: virtual void device_start() override; }; -extern const device_type VOODOO_2; class voodoo_banshee_device : public voodoo_device { public: voodoo_banshee_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - voodoo_banshee_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); DECLARE_READ32_MEMBER( banshee_r ); DECLARE_WRITE32_MEMBER( banshee_w ); @@ -1921,23 +1917,29 @@ public: DECLARE_WRITE8_MEMBER(banshee_vga_w); protected: + voodoo_banshee_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; DECLARE_READ32_MEMBER( banshee_agp_r ); DECLARE_WRITE32_MEMBER( banshee_agp_w ); }; -extern const device_type VOODOO_BANSHEE; class voodoo_3_device : public voodoo_banshee_device { public: voodoo_3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + protected: // device-level overrides virtual void device_start() override; }; -extern const device_type VOODOO_3; -#endif +DECLARE_DEVICE_TYPE(VOODOO_1, voodoo_1_device) +DECLARE_DEVICE_TYPE(VOODOO_2, voodoo_2_device) +DECLARE_DEVICE_TYPE(VOODOO_BANSHEE, voodoo_banshee_device) +DECLARE_DEVICE_TYPE(VOODOO_3, voodoo_3_device) + +#endif // MAME_VIDEO_VOODOO_H diff --git a/src/devices/video/voodoo_pci.cpp b/src/devices/video/voodoo_pci.cpp index 4c6214ce5d0..883d92995a9 100644 --- a/src/devices/video/voodoo_pci.cpp +++ b/src/devices/video/voodoo_pci.cpp @@ -53,10 +53,10 @@ machine_config_constructor voodoo_pci_device::device_mconfig_additions() const } } -const device_type VOODOO_PCI = device_creator; +DEFINE_DEVICE_TYPE(VOODOO_PCI, voodoo_pci_device, "voodoo_pci", "Voodoo PCI") DEVICE_ADDRESS_MAP_START(config_map, 32, voodoo_pci_device) - AM_RANGE(0x40, 0x4f) AM_READWRITE (pcictrl_r, pcictrl_w) + AM_RANGE(0x40, 0x5f) AM_READWRITE (pcictrl_r, pcictrl_w) AM_INHERIT_FROM(pci_device::config_map) ADDRESS_MAP_END @@ -78,7 +78,7 @@ DEVICE_ADDRESS_MAP_START(io_map, 32, voodoo_pci_device) ADDRESS_MAP_END voodoo_pci_device::voodoo_pci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pci_device(mconfig, VOODOO_PCI, "Voodoo PCI", tag, owner, clock, "voodoo_pci", __FILE__), + : pci_device(mconfig, VOODOO_PCI, tag, owner, clock), m_voodoo(*this, "voodoo"), m_fbmem(2), m_tmumem0(0), m_tmumem1(0) { } @@ -123,6 +123,12 @@ void voodoo_pci_device::device_start() } save_item(NAME(m_pcictrl_reg)); + machine().save().register_postload(save_prepost_delegate(FUNC(voodoo_pci_device::postload), this)); +} + +void voodoo_pci_device::postload() +{ + remap_cb(); } void voodoo_pci_device::device_reset() @@ -154,21 +160,35 @@ uint32_t voodoo_pci_device::screen_update(screen_device &screen, bitmap_rgb32 &b READ32_MEMBER (voodoo_pci_device::pcictrl_r) { uint32_t result = m_pcictrl_reg[offset]; + // The address map starts at 0x40 + switch (offset + 0x40 / 4) { + case 0x40/4: + // Vegas driver needs this value at PCI 0x40 + result = 0x00044000; // FAB ID + break; + case 0x54/4: + // AGP Capability Register: 8 bit 0, 4 bit AGP Major, 4 bit AGP Minor, 8 bit Next Ptr, 8 bit Capability ID + // Tenthdeg (vegas) checks this + result = 0x00006002; + break; + } + if (1) - logerror("%06X:voodoo_pci_device pcictrl_r from offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, result, mem_mask); + logerror("%s:voodoo_pci_device pcictrl_r from offset %02X = %08X & %08X\n", machine().describe_context(), offset*4 + 0x40, result, mem_mask); return result; } WRITE32_MEMBER (voodoo_pci_device::pcictrl_w) { COMBINE_DATA(&m_pcictrl_reg[offset]); - switch (offset) { - case 0x0/4: // The address map starts at 0x40 + // The address map starts at 0x40 + switch (offset + 0x40 / 4) { + case 0x40/4: // HW initEnable m_voodoo->voodoo_set_init_enable(data); - logerror("%06X:voodoo_pci_device pcictrl_w to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask); + logerror("%s:voodoo_pci_device pcictrl_w (initEnable) offset %02X = %08X & %08X\n", machine().describe_context(), offset * 4 + 0x40, data, mem_mask); break; default: - logerror("%06X:voodoo_pci_device pcictrl_w to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask); + logerror("%s:voodoo_pci_device pcictrl_w to offset %02X = %08X & %08X\n", machine().describe_context(), offset*4 + 0x40, data, mem_mask); break; } } diff --git a/src/devices/video/voodoo_pci.h b/src/devices/video/voodoo_pci.h index a15cd034612..4b7a41afe2f 100644 --- a/src/devices/video/voodoo_pci.h +++ b/src/devices/video/voodoo_pci.h @@ -2,8 +2,10 @@ // copyright-holders:Ted Green // 3dfx Voodoo Graphics SST-1/2 emulator. -#ifndef VOODOO_PCI_H -#define VOODOO_PCI_H +#ifndef MAME_VIDEO_VOODOO_PCI_H +#define MAME_VIDEO_VOODOO_PCI_H + +#pragma once #include "machine/pci.h" #include "voodoo.h" @@ -29,6 +31,7 @@ public: uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); virtual DECLARE_ADDRESS_MAP(config_map, 32) override; + void postload(void); void set_cpu_tag(const char *tag); static void set_type(const int type) {m_type = type;} void set_fbmem(const int fbmem) {m_fbmem = fbmem;} @@ -46,17 +49,17 @@ protected: private: required_device m_voodoo; - static int m_type; + static int m_type; // FIXME: all voodoo have to be the same? really? int m_fbmem, m_tmumem0, m_tmumem1; const char *m_cpu_tag; - uint32_t m_pcictrl_reg[0x10]; + uint32_t m_pcictrl_reg[0x20]; DECLARE_ADDRESS_MAP(voodoo_reg_map, 32); DECLARE_ADDRESS_MAP(banshee_reg_map, 32); DECLARE_ADDRESS_MAP(lfb_map, 32); DECLARE_ADDRESS_MAP(io_map, 32); }; -extern const device_type VOODOO_PCI; +DECLARE_DEVICE_TYPE(VOODOO_PCI, voodoo_pci_device) -#endif +#endif // MAME_VIDEO_VOODOO_PCI_H diff --git a/src/devices/video/zeus2.cpp b/src/devices/video/zeus2.cpp index 8df43743fa1..1720d98f582 100644 --- a/src/devices/video/zeus2.cpp +++ b/src/devices/video/zeus2.cpp @@ -21,11 +21,11 @@ zeus2_renderer::zeus2_renderer(zeus2_device *state) { } -const device_type ZEUS2 = device_creator; +DEFINE_DEVICE_TYPE(ZEUS2, zeus2_device, "zeus2", "Midway Zeus2") zeus2_device::zeus2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ZEUS2, "Midway Zeus2", tag, owner, clock, "zeus2", __FILE__), - m_vblank(*this), m_irq(*this), m_atlantis(0) + : device_t(mconfig, ZEUS2, tag, owner, clock) + , m_vblank(*this), m_irq(*this), m_atlantis(0) { } @@ -72,7 +72,7 @@ void zeus2_device::device_start() /* allocate memory for "wave" RAM */ waveram = auto_alloc_array(machine(), uint32_t, WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8/4); m_frameColor = std::make_unique(WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2); - m_frameDepth = std::make_unique(WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2); + m_frameDepth = std::make_unique(WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2); /* initialize polygon engine */ poly = auto_alloc(machine(), zeus2_renderer(this)); @@ -86,11 +86,12 @@ void zeus2_device::device_start() //machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(&zeus2_device::exit_handler2, this)); int_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(zeus2_device::int_timer_callback), this)); + vblank_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(zeus2_device::display_irq), this)); //printf("%s\n", machine().system().name); // Set system type - if (strcmp(machine().system().name, "thegrid") == 0) { + if (strcmp(machine().system().name, "thegrid") == 0 || strcmp(machine().system().name, "thegrida") == 0) { m_system = THEGRID; } else if (strcmp(machine().system().name, "crusnexo") == 0) { @@ -101,27 +102,40 @@ void zeus2_device::device_start() } /* save states */ - save_pointer(NAME(waveram), WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 2); - save_pointer(NAME(m_frameColor.get()), WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2); - save_pointer(NAME(m_frameDepth.get()), WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2); - save_pointer(NAME(m_zeusbase), 0x80); - save_pointer(NAME(m_renderRegs), 0x50); - save_pointer(NAME(m_pal_table), 0x100); - save_item(NAME(zeus_fifo)); - save_item(NAME(zeus_fifo_words)); + save_item(NAME(m_atlantis)); + save_item(NAME(m_zeusbase)); + save_item(NAME(m_renderRegs)); + // poly save_item(NAME(zeus_cliprect.min_x)); save_item(NAME(zeus_cliprect.max_x)); save_item(NAME(zeus_cliprect.min_y)); save_item(NAME(zeus_cliprect.max_y)); + save_item(NAME(m_palSize)); save_item(NAME(zeus_matrix)); - save_item(NAME(zeus_point)); - save_item(NAME(zeus_point2)); + save_item(NAME(zeus_trans)); + save_item(NAME(zeus_light)); save_item(NAME(zeus_texbase)); save_item(NAME(zeus_quad_size)); + save_item(NAME(m_useZOffset)); + save_pointer(NAME(waveram), WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8 / 4); + save_pointer(NAME(m_frameColor.get()), WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2); + save_pointer(NAME(m_frameDepth.get()), WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2); + save_item(NAME(m_pal_table)); + // m_ucode + save_item(NAME(m_curUCodeSrc)); + save_item(NAME(m_curPalTableSrc)); + save_item(NAME(m_texmodeReg)); + // int_timer + // vblank_timer + // yoffs + // texel_width + // zbase + save_item(NAME(m_system)); + save_item(NAME(zeus_fifo)); + save_item(NAME(zeus_fifo_words)); save_item(NAME(m_fill_color)); save_item(NAME(m_fill_depth)); save_item(NAME(m_yScale)); - save_item(NAME(m_system)); } void zeus2_device::device_reset() @@ -140,6 +154,9 @@ void zeus2_device::device_reset() zeus_fifo_words = 0; m_fill_color = 0; m_fill_depth = 0; + m_texmodeReg = 0; + zeus_trans[3] = 0.0f; + m_useZOffset = false; } #if DUMP_WAVE_RAM #include @@ -210,8 +227,6 @@ uint32_t zeus2_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap int x, y; - poly->wait("SCREEN_UPDATE"); - //if (machine().input().code_pressed(KEYCODE_DOWN)) { zbase += machine().input().code_pressed(KEYCODE_LSHIFT) ? 0x10 : 1; popmessage("Zbase = %f", (double)zbase); } //if (machine().input().code_pressed(KEYCODE_UP)) { zbase -= machine().input().code_pressed(KEYCODE_LSHIFT) ? 0x10 : 1; popmessage("Zbase = %f", (double)zbase); } @@ -255,7 +270,7 @@ uint32_t zeus2_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap for (x = cliprect.min_x; x <= cliprect.max_x; x++) { if (1) { - uint8_t tex = get_texel_8bit((uint64_t *)base, y, x, texel_width); + uint8_t tex = get_texel_8bit_4x2((uint64_t *)base, y, x, texel_width); dest[x] = (tex << 16) | (tex << 8) | tex; } else { @@ -280,7 +295,7 @@ uint32_t zeus2_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap READ32_MEMBER( zeus2_device::zeus2_r ) { int logit = (offset != 0x00 && offset != 0x01 && - offset != 0x48 && offset != 0x49 + offset != 0x18 && offset != 0x19 && offset != 0x48 && offset != 0x49 && offset != 0x54 && offset != 0x58 && offset != 0x59 && offset != 0x5a ); logit &= LOG_REGS; @@ -292,10 +307,22 @@ READ32_MEMBER( zeus2_device::zeus2_r ) switch (offset) { case 0x00: + // STATUS0 + // 0x20 IFIFO Empty + // 0x80 IFIFO Full result = 0x20; break; case 0x01: + // STATUS1 + // 0x00000004 VBLANK + // 0x40000000 Slave Error + // 0x80000000 Master Error + // 0x00000010 DP_ACTIVE + // 0x00000020 TP_ACTIVE + // 0x00000040 RP_ACTIVE + // 0x00040000 EXPY_ACTIVE0 + // 0x00080000 EXPY_ACTIVE1 /* bit $000C0070 are tested in a loop until 0 */ /* bits $00080000 is tested in a loop until 0 */ /* bit $00000004 is tested for toggling; probably VBLANK */ @@ -309,9 +336,18 @@ READ32_MEMBER( zeus2_device::zeus2_r ) result = 0x10451998; break; + case 0x18: + // IFIFO Read Counter + break; + + case 0x19: + // MFIFO Read Counter + break; + case 0x54: - /* both upper 16 bits and lower 16 bits seem to be used as vertical counters */ - result = (m_screen->vpos() << 16) | m_screen->vpos(); + // VCOUNT upper 16 bits + //result = (m_screen->vpos() << 16) | m_screen->vpos(); + result = (m_screen->vpos() << 16); break; } @@ -332,9 +368,10 @@ READ32_MEMBER( zeus2_device::zeus2_r ) WRITE32_MEMBER( zeus2_device::zeus2_w ) { int logit = (offset != 0x08 && - (offset != 0x20 || data != 0) && - offset != 0x40 && offset != 0x41 && offset != 0x48 && offset != 0x49 && offset != 0x4e - && offset != 0x50 && offset != 0x51 && offset != 0x57 && offset != 0x58 && offset != 0x59 && offset != 0x5a && offset != 0x5e + offset != 0x18 && offset != 0x19 && (offset != 0x20 || data != 0) && + offset != 0x35 && offset != 0x36 && offset != 0x37 && + offset != 0x48 && offset != 0x49 && offset != 0x40 && offset != 0x41 && offset != 0x4e && + offset != 0x50 && offset != 0x51 && offset != 0x57 && offset != 0x58 && offset != 0x59 && offset != 0x5a && offset != 0x5e ); logit &= LOG_REGS; if (logit) @@ -401,156 +438,193 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log /* handle the writes; only trigger on low accesses */ switch (offset) { - case 0x08: - zeus_fifo[zeus_fifo_words++] = m_zeusbase[0x08]; - if (zeus2_fifo_process(zeus_fifo, zeus_fifo_words)) - zeus_fifo_words = 0; + case 0x08: + zeus_fifo[zeus_fifo_words++] = m_zeusbase[0x08]; + if (zeus2_fifo_process(zeus_fifo, zeus_fifo_words)) + zeus_fifo_words = 0; + + /* set the interrupt signal to indicate we can handle more */ + // Not sure how much to time to put here + int_timer->adjust(attotime::from_usec(20)); + break; - /* set the interrupt signal to indicate we can handle more */ - int_timer->adjust(attotime::from_nsec(500)); - break; + case 0x10: + // BITS 11 - 10 COL SIZE / BANK FOR WR1 + // BITS 9 - 8 COL SIZE / BANK FOR WR0 + if (logit) logerror("\tSys Setup"); + if (m_zeusbase[0x10] & 0x20) + { + m_yScale = (((m_zeusbase[0x39] >> 16) & 0xfff) < 0x100) ? 0 : 1; + int hor = ((m_zeusbase[0x34] & 0xffff) - (m_zeusbase[0x33] >> 16)) << m_yScale; + int ver = ((m_zeusbase[0x35] & 0xffff) + 1) << m_yScale; + popmessage("reg[30]: %08X Screen: %dH X %dV yScale: %d", m_zeusbase[0x30], hor, ver, m_yScale); + int vtotal = (m_zeusbase[0x37] & 0xffff) << m_yScale; + int htotal = (m_zeusbase[0x34] >> 16) << m_yScale; + //rectangle visarea((m_zeusbase[0x33] >> 16) << m_yScale, htotal - 1, 0, (m_zeusbase[0x35] & 0xffff) << m_yScale); + rectangle visarea(0, hor - 1, 0, ver - 1); + m_screen->configure(htotal, vtotal, visarea, HZ_TO_ATTOSECONDS((double)ZEUS2_VIDEO_CLOCK / 4.0 / (htotal * vtotal))); + zeus_cliprect = visarea; + zeus_cliprect.max_x -= zeus_cliprect.min_x; + zeus_cliprect.min_x = 0; + // Startup vblank timer + vblank_timer->adjust(attotime::from_usec(1)); + } + break; - case 0x10: - // BITS 11 - 10 COL SIZE / BANK FOR WR1 - // BITS 9 - 8 COL SIZE / BANK FOR WR0 - if (logit) logerror("\tSys Setup"); - if (m_zeusbase[0x10] & 0x20) - { - m_yScale = (((m_zeusbase[0x39] >> 16) & 0xfff) < 0x100) ? 0 : 1; - int hor = ((m_zeusbase[0x34] & 0xffff) - (m_zeusbase[0x33] >> 16)) << m_yScale; - int ver = ((m_zeusbase[0x35] & 0xffff) + 1) << m_yScale; - popmessage("reg[30]: %08X Screen: %dH X %dV yScale: %d", m_zeusbase[0x30], hor, ver, m_yScale); - int vtotal = (m_zeusbase[0x37] & 0xffff) << m_yScale; - int htotal = (m_zeusbase[0x34] >> 16) << m_yScale; - //rectangle visarea((m_zeusbase[0x33] >> 16) << m_yScale, htotal - 1, 0, (m_zeusbase[0x35] & 0xffff) << m_yScale); - rectangle visarea(0, hor-1, 0, ver-1); - m_screen->configure(htotal, vtotal, visarea, HZ_TO_ATTOSECONDS((double)ZEUS2_VIDEO_CLOCK / 4.0 / (htotal * vtotal))); - zeus_cliprect = visarea; - zeus_cliprect.max_x -= zeus_cliprect.min_x; - zeus_cliprect.min_x = 0; - // Startup vblank timer - vblank_timer->adjust(attotime::from_usec(1)); - } - break; + case 0x11: + if (logit) logerror("\tHost Interface Setup"); + break; - case 0x11: - if (logit) logerror("\tHost Interface Setup"); - break; + case 0x12: + if (logit) logerror("\tPLL Setup"); + break; - case 0x12: - if (logit) logerror("\tPLL Setup"); - break; + case 0x13: + if (logit) logerror("\tZeus Test Out"); + break; - case 0x13: - if (logit) logerror("\tZeus Test Out"); - break; + case 0x20: + zeus2_pointer_write(m_zeusbase[0x20] >> 24, (m_zeusbase[0x20] & 0xffffff), logit); + break; - case 0x20: - zeus2_pointer_write(m_zeusbase[0x20] >> 24, (m_zeusbase[0x20] & 0xffffff), logit); - break; + case 0x22: + if (logit) logerror("\tRend Setup 0"); + break; - case 0x22: - if (logit) logerror("\tRend Setup 0"); - break; + case 0x23: + if (logit) logerror("\tRend Setup 1"); + break; - case 0x23: - if (logit) logerror("\tRend Setup 1"); - break; + case 0x24: + // 0x601 == test mode + if (logit) logerror("\tRend Setup 4"); + break; - case 0x24: - // 0x601 == test mode - if (logit) logerror("\tRend Setup 4"); - break; + case 0x2a: + // 0x000000c0 = bilinear off + if (logit) logerror("\tRend Force Off"); + break; - case 0x2a: - // 0x000000c0 = bilinear off - if (logit) logerror("\tRend Force Off"); - break; + case 0x2b: + if (logit) logerror("\tRend Force On"); + break; - case 0x2b: - if (logit) logerror("\tRend Force On"); - break; + case 0x2c: + if (logit) logerror("\tRend AE Flag"); + break; - case 0x2c: - if (logit) logerror("\tRend AE Flag"); - break; + case 0x2d: + if (logit) logerror("\tRend AF Flag"); + break; - case 0x2d: - if (logit) logerror("\tRend AF Flag"); - break; + case 0x2f: + if (logit) logerror("\tPixel Proc Setup"); + break; - case 0x2f: - if (logit) logerror("\tPixel Proc Setup"); - break; + case 0x30: + if (logit) logerror("\tCRT Controller Setup = %08X", m_zeusbase[offset]); + break; - case 0x30: - if (logit) logerror("\tCRT Controller Setup = %08X", m_zeusbase[offset]); - break; + case 0x31: + if (logit) logerror("\tDotClk Sel 1 : DotClk Sel 2 = %08X", m_zeusbase[offset]); + break; + case 0x32: + if (logit) logerror("\tHSync End = %i HSync Start = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); + break; + case 0x33: + if (logit) logerror("\tHBlank End = %i Update Start = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); + break; + case 0x34: + if (logit) logerror("\tHTotal = %i HBlank Start = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); + break; + case 0x35: + if (logit) logerror("\tVSync Start = %i VBlank Start = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); + break; + case 0x36: + if (logit) logerror("\tVTotal = %i VSync End = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); + break; + case 0x37: + if (logit) logerror("\tVTotal = %i", m_zeusbase[offset]); + break; + case 0x38: + { + uint32_t temp = m_zeusbase[0x38]; + m_zeusbase[0x38] = oldval; + m_screen->update_partial(m_screen->vpos()); + log_fifo = machine().input().code_pressed(KEYCODE_L) | ALWAYS_LOG_FIFO; + m_zeusbase[0x38] = temp; + } + break; + case 0x39: + if (logit) logerror("\tLine Length = %i FIFO AF = %i FIFO AE = %i", (m_zeusbase[offset] >> 16) & 0xfff, (m_zeusbase[offset] >> 8) & 0xff, m_zeusbase[offset] & 0xff); + break; - case 0x31: - if (logit) logerror("\tDotClk Sel 1 : DotClk Sel 2 = %08X", m_zeusbase[offset]); - break; - case 0x32: - if (logit) logerror("\tHSync End = %i HSync Start = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); - break; - case 0x33: - if (logit) logerror("\tHBlank End = %i Update Start = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); - break; - case 0x34: - if (logit) logerror("\tHTotal = %i HBlank Start = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); - break; - case 0x35: - if (logit) logerror("\tVSync Start = %i VBlank Start = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); - break; - case 0x36: - if (logit) logerror("\tVTotal = %i VSync End = %i", (m_zeusbase[offset] >> 16), m_zeusbase[offset] & 0xffff); - break; - case 0x37: - if (logit) logerror("\tVTotal = %i", m_zeusbase[offset]); - break; - case 0x38: - { - uint32_t temp = m_zeusbase[0x38]; - m_zeusbase[0x38] = oldval; - m_screen->update_partial(m_screen->vpos()); - log_fifo = machine().input().code_pressed(KEYCODE_L) | ALWAYS_LOG_FIFO; - m_zeusbase[0x38] = temp; + case 0x40: case 0x41: case 0x48: case 0x49: case 0x4e: + if (offset == 0x41) { + // mwskinsa (atlantis) writes 0xffffffff and expects 0x1fff03ff to be read back + m_zeusbase[0x41] &= 0x1fff03ff; + } + /* + m_zeusbase[0x4e] : + bit 0 - 1 : which register triggers write through + bit 3 : enable write through via these registers + bit 4 : seems to be set during reads, when 0x41 is used for latching + bit 6 : enable autoincrement on write through + */ + if ((offset & 0xf) == (m_zeusbase[0x4e] & 0xf)) { + // If the address is auto-increment then don't load new value + // In reality address is latched by a write to 0x40 + if (offset == 0x41 && (m_zeusbase[0x4e] & 0x40)) { + m_zeusbase[0x41] = oldval; } - break; - case 0x39: - if (logit) logerror("\tLine Length = %i FIFO AF = %i FIFO AE = %i", (m_zeusbase[offset] >> 16) & 0xfff, (m_zeusbase[offset] >> 8) & 0xff, m_zeusbase[offset] & 0xff); - break; - case 0x40: - { int code = (m_zeusbase[0x40] >> 16) & 0xf; - if (code == 0x2) { - /* in direct mode it latches values */ - if ((m_zeusbase[0x4e] & 0x20)) - { - const void *src = waveram0_ptr_from_expanded_addr(m_zeusbase[0x41]); - m_zeusbase[0x48] = WAVERAM_READ32(src, 0); - m_zeusbase[0x49] = WAVERAM_READ32(src, 1); + switch (code) { + case 0: + // NOP + break; + case 1: + // Special mode register write + //if (logit) + logerror("\t-- Special Mode Write: [4e]: %08X [40]: %08X [41]: %08x [48]: %08x [49]: %08x\n", code, m_zeusbase[0x4e], m_zeusbase[0x40], m_zeusbase[0x41], m_zeusbase[0x48], m_zeusbase[0x49]); + break; + case 2: + { + /* Read waveram0 */ + //if ((m_zeusbase[0x4e] & 0x20)) + //{ + const void *src = waveram0_ptr_from_expanded_addr(m_zeusbase[0x41]); + m_zeusbase[0x48] = WAVERAM_READ32(src, 0); + m_zeusbase[0x49] = WAVERAM_READ32(src, 1); - if (m_zeusbase[0x4e] & 0x40) - { - m_zeusbase[0x41]++; - m_zeusbase[0x41] += (m_zeusbase[0x41] & 0x400) << 6; - m_zeusbase[0x41] &= ~0xfc00; - } + if (m_zeusbase[0x4e] & 0x40) + { + m_zeusbase[0x41]++; + m_zeusbase[0x41] += (m_zeusbase[0x41] & 0x400) << 6; + m_zeusbase[0x41] &= ~0xfc00; } + //} } - else if (code == 0x4) { + break; + case 4: + { // Load pal table from RGB555 if (logit) logerror("\t-- pal table rgb555 load: control: %08X addr: %08X", m_zeusbase[0x40], m_zeusbase[0x41]); poly->wait("PAL_TABLE_WRITE"); - m_curPalTableSrc = m_zeusbase[0x41]; + // blocknum = (addr % WAVERAM0_WIDTH) + ((addr >> 16) % WAVERAM0_HEIGHT) * WAVERAM0_WIDTH; + m_curPalTableSrc = (m_zeusbase[0x41] % WAVERAM0_WIDTH) + ((m_zeusbase[0x41] >> 16) % WAVERAM0_HEIGHT) * WAVERAM0_WIDTH; void *dataPtr = waveram0_ptr_from_expanded_addr(m_zeusbase[0x41]); load_pal_table(dataPtr, m_zeusbase[0x40], 0, logit); } - else if (code == 0x5) { + break; + case 5: + { + //if (m_zeusbase[0x41] == 0x266) { + // logit = 1; + // log_fifo = 1; + //} // Zeus microcode burst from waveram if (logit) logerror("\t-- ucode load: control: %08X addr: %08X", m_zeusbase[0x40], m_zeusbase[0x41]); @@ -564,27 +638,108 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log } else { m_curUCodeSrc = m_zeusbase[0x41]; + m_useZOffset = false; // Zeus Quad Size - switch (m_zeusbase[0x40]) { - case 0x38550083: case 0x2D550083: case 0x3885007B: - zeus_quad_size = 14; - break; - case 0x3855006F: case 0x38550088: case 0x388500A9: - zeus_quad_size = 12; - break; - case 0x38550075: - if (m_zeusbase[0x41] == 0x00000324) + if (m_system == THEGRID) { + switch (m_curUCodeSrc) { + case 0x000000037: + // pm4dl: mfifo quads dynamic light + zeus_quad_size = 14; + if (logit) logerror(" pm4dl quad size %d\n", zeus_quad_size); + break; + case 0x0000000b3: + // pm4sl: mfifo quads static light zeus_quad_size = 12; - else + if (logit) logerror(" pm4sl quad size %d\n", zeus_quad_size); + break; + case 0x00000015d: + // pm4nl: mfifo quads no light + m_useZOffset = true; zeus_quad_size = 10; - break; - case 0x38850077: - zeus_quad_size = 10; - break; - default: - logerror(" default quad size 10\n"); - zeus_quad_size = 10; - break; + if (logit) logerror(" pm4nl quad size %d\n", zeus_quad_size); + break; + case 0x0000001d5: + // pm4nluv: mfifo quads no light (tga and uv variants) + m_useZOffset = true; + zeus_quad_size = 10; + if (logit) logerror(" pm4nluv pm4nl_tga quad size %d\n", zeus_quad_size); + break; + case 0x000000266: + // pm3dli: mfifo trimesh dynamic light interpolation + zeus_quad_size = 8; + if (logit) logerror(" pm3dli quad size %d\n", zeus_quad_size); + break; + case 0x0000002e9: + // px3sl: xfifo trimesh static light + zeus_quad_size = 10; + if (logit) logerror(" px3sl quad size %d\n", zeus_quad_size); + break; + case 0x000000343: + // blit24: The Grid direct rendering + // Really should be 128 but this works + zeus_quad_size = 512; + if (logit) logerror(" blit24 quad size %d\n", zeus_quad_size); + break; + default: + zeus_quad_size = 10; + logerror(" unknown quad size from source [41]=%08X\n", m_curUCodeSrc); + break; + } + } + else if (m_system == CRUSNEXO) { + switch (m_curUCodeSrc) { + case 0x0000000c0: + zeus_quad_size = 10; + if (logit) logerror(" c0 quad size %d\n", zeus_quad_size); + break; + case 0x000000136: + zeus_quad_size = 14; + if (logit) logerror(" 136 quad size %d\n", zeus_quad_size); + break; + case 0x0000001ba: + zeus_quad_size = 10; + if (logit) logerror(" 1ba quad size %d\n", zeus_quad_size); + break; + case 0x00000022b: + zeus_quad_size = 12; + if (logit) logerror(" 22b quad size %d\n", zeus_quad_size); + break; + case 0x00000029b: + zeus_quad_size = 12; + if (logit) logerror(" 29b quad size %d\n", zeus_quad_size); + break; + case 0x000000324: + zeus_quad_size = 12; + if (logit) logerror(" 324 quad size %d\n", zeus_quad_size); + break; + default: + zeus_quad_size = 10; + logerror(" unknown quad size from source [41]=%08X\n", m_curUCodeSrc); + break; + } + + } + else { + switch (m_curUCodeSrc) { + case 0x000000000: + zeus_quad_size = 14; + if (logit) logerror(" 00 quad size %d\n", zeus_quad_size); + break; + case 0x00000002d: + zeus_quad_size = 14; + if (logit) logerror(" 2d quad size %d\n", zeus_quad_size); + break; + case 0x0000001aa: + // Direct frame buffer access, render data is rgb565 + zeus_quad_size = 14; + if (logit) logerror(" 1aa quad size %d\n", zeus_quad_size); + break; + default: + zeus_quad_size = 14; + logerror(" unknown quad size from source [41]=%08X\n", m_curUCodeSrc); + break; + } + } } if (1 && logit) { @@ -593,33 +748,37 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log int size = m_zeusbase[0x40] & 0xff; logerror("\n Setup size=%d [40]=%08X [41]=%08X [4e]=%08X\n", zeus_quad_size, m_zeusbase[0x40], m_zeusbase[0x41], m_zeusbase[0x4e]); for (int i = 0; i <= size; ++i) { - waveData = *wavePtr++; - logerror(" %08X", waveData); - waveData = *wavePtr++; - //logerror(" %08X", waveData); + if (m_zeusbase[0x41] < 0xc0) { + waveData = wavePtr[1]; + logerror(" %08X", waveData); + waveData = wavePtr[0]; + logerror("%08X", waveData); + } + else { + waveData = wavePtr[0]; + logerror(" %08X", waveData); + waveData = wavePtr[1]; + logerror(" %08X", waveData); + } + wavePtr += 2; if (0 && (i + 1) % 16 == 0) logerror("\n"); } - logerror("\n"); } } - else if (code == 0x6) { - // Zeus model fifo burst from waveram - } - else { - if (logit) - logerror("\t-- unknown burst: control: %08X addr: %08X", m_zeusbase[0x40], m_zeusbase[0x41]); - } - } - break; - case 0x41: - /* this is the address, except in read mode, where it latches values */ - if (m_zeusbase[0x4e] & 0x10) + break; + //case 6: { + // // Zeus model fifo burst from waveram + //} + //break; + case 9: { - const void *src = waveram0_ptr_from_expanded_addr(oldval); - m_zeusbase[0x41] = oldval; - m_zeusbase[0x48] = WAVERAM_READ32(src, 0); - m_zeusbase[0x49] = WAVERAM_READ32(src, 1); + // Waveram Write + void *dest = waveram0_ptr_from_expanded_addr(m_zeusbase[0x41]); + WAVERAM_WRITE32(dest, 0, m_zeusbase[0x48]); + WAVERAM_WRITE32(dest, 1, m_zeusbase[0x49]); + if (logit) + logerror("\t[41]=%08X [4E]=%08X", m_zeusbase[0x41], m_zeusbase[0x4e]); if (m_zeusbase[0x4e] & 0x40) { @@ -627,209 +786,197 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log m_zeusbase[0x41] += (m_zeusbase[0x41] & 0x400) << 6; m_zeusbase[0x41] &= ~0xfc00; } - } else { - // mwskinsa (atlantis) writes 0xffffffff and expects 0x1fff03ff to be read back - m_zeusbase[0x41] &= 0x1fff03ff; } break; - - case 0x48: - case 0x49: - /* if we're in write mode, process it */ - if (m_zeusbase[0x40] == 0x00890000) + default: { - /* - m_zeusbase[0x4e]: - bit 0-1: which register triggers write through - bit 3: enable write through via these registers - bit 4: seems to be set during reads, when 0x41 is used for latching - bit 6: enable autoincrement on write through - */ - if ((m_zeusbase[0x4e] & 0x08) && (offset & 3) == (m_zeusbase[0x4e] & 3)) - { - void *dest = waveram0_ptr_from_expanded_addr(m_zeusbase[0x41]); - WAVERAM_WRITE32(dest, 0, m_zeusbase[0x48]); - WAVERAM_WRITE32(dest, 1, m_zeusbase[0x49]); - if (logit) - logerror("\t[41]=%08X [4E]=%08X", m_zeusbase[0x41], m_zeusbase[0x4e]); - - if (m_zeusbase[0x4e] & 0x40) - { - m_zeusbase[0x41]++; - m_zeusbase[0x41] += (m_zeusbase[0x41] & 0x400) << 6; - m_zeusbase[0x41] &= ~0xfc00; - } - } + //if (logit) + logerror("\t-- unknown code (%d): [4e]: %08X [40]: %08X [41]: %08x [48]: %08x [49]: %08x\n", code, m_zeusbase[0x4e], m_zeusbase[0x40], m_zeusbase[0x41], m_zeusbase[0x48], m_zeusbase[0x49]); } - - /* make sure we log anything else */ - else if (logit) - logerror("\t[40]=%08X [4E]=%08X\n", m_zeusbase[0x40], m_zeusbase[0x4e]); break; + } + } + break; - case 0x50: case 0x51: case 0x58: case 0x59: case 0x5a: case 0x5b: case 0x5e: - // m_zeusbase[0x5e]: - // bits 3:0 select which offset triggers an access - // bit 4: clear error - // bit 5: 24 bit (1) / 32 bit mode (0) - // bit 6: enable autoincrement wave address - // bit 7 autoincrement desination address? - // bit 8 autoincrement row/col address by 1 (0) or 2 (1) - if ((offset & 0xf) == (m_zeusbase[0x5e] & 0xf)) { - - int code = (m_zeusbase[0x50] >> 16) & 0xf; - - // If the address is auto-increment then don't load new value - // In reality address is latched by a write to 0x50 - if (offset == 0x51 && (m_zeusbase[0x5e] & 0x40)) { - m_zeusbase[0x51] = oldval; - } + case 0x50: case 0x51: case 0x58: case 0x59: case 0x5a: case 0x5b: case 0x5e: + // m_zeusbase[0x5e]: + // bits 3:0 select which offset triggers an access + // bit 4: clear error + // bit 5: 24 bit (1) / 32 bit mode (0) + // bit 6: enable autoincrement wave address + // bit 7 autoincrement desination address? + // bit 8 autoincrement row/col address by 1 (0) or 2 (1) + if ((offset & 0xf) == (m_zeusbase[0x5e] & 0xf)) { + + int code = (m_zeusbase[0x50] >> 16) & 0xf; + + // If the address is auto-increment then don't load new value + // In reality address is latched by a write to 0x50 + if (offset == 0x51 && (m_zeusbase[0x5e] & 0x40)) { + m_zeusbase[0x51] = oldval; + } - switch (code) { - case 0: - // NOP - break; - case 1: - // SGRAM Special Mode Register Write - if (m_zeusbase[0x51] == 0x00200000) { - // SGRAM Mask Register - if ((m_zeusbase[0x58] & m_zeusbase[0x59] & m_zeusbase[0x5a]) != 0xffffffff) - logerror("zeus2_register_update: Warning! Mask Register not equal to 0xffffffff\n"); - } - if (m_zeusbase[0x51] == 0x00400000) { - // SGRAM Color Register - m_fill_color = m_zeusbase[0x58]; - m_fill_depth = ((m_zeusbase[0x5a] & 0xffff) << 16) | ((m_zeusbase[0x58] >> 24) << 8); - m_fill_depth >>= 8; // Sign extend down to 24 bits - if (m_zeusbase[0x58] != m_zeusbase[0x59]) - logerror("zeus2_register_update: Warning! Different fill colors are set.\n"); - } - break; - case 0x2: - frame_read(); - break; - case 0x8: - { - // Fast fill - // Atlantis: 0x00983FFF => clear entire frame buffer, 0x00981FFF => clear one frame - // crusnexo: 0x007831FF => clear one frame - // thegrid: 0x008831FF => clear one frame - // thegrid: 0x0079FFFF => clear entire frame buffer at 51=0 then 51=00800000, only seen at initial tests in thegrid - uint32_t addr = frame_addr_from_phys_addr(m_zeusbase[0x51]); - uint32_t numBytes = (m_zeusbase[0x50] & 0xffff) + 1; - numBytes *= 0x40; - if (m_zeusbase[0x50] & 0x10000) { - addr = 0x0; - numBytes = WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 8; - //printf("Clearing buffer: numBytes: %08X addr: %08X reg50: %08X\n", numBytes, addr, m_zeusbase[0x50]); - } - if (logit) - logerror(" -- Clearing buffer: numBytes: %08X addr: %08X reg51: %08X", numBytes, addr, m_zeusbase[0x51]); - memset(&m_frameColor[addr], m_fill_color, numBytes); - memset(&m_frameDepth[addr], m_fill_depth, numBytes); - } - break; - case 0x9: - frame_write(); - break; - default: - logerror("unknown code = %x offset = %x", code, offset); - break; + switch (code) { + case 0: + // NOP + break; + case 1: + // SGRAM Special Mode Register Write + if (m_zeusbase[0x51] == 0x00200000) { + // SGRAM Mask Register + if ((m_zeusbase[0x58] & m_zeusbase[0x59] & m_zeusbase[0x5a]) != 0xffffffff) + logerror("zeus2_register_update: Warning! Mask Register not equal to 0xffffffff\n"); } + if (m_zeusbase[0x51] == 0x00400000) { + // SGRAM Color Register + m_fill_color = m_zeusbase[0x58] & 0xffffff; + m_fill_depth = ((m_zeusbase[0x5a] & 0xffff) << 8) | (m_zeusbase[0x58] >> 24); + //m_fill_depth = -1; + if (m_zeusbase[0x58] != m_zeusbase[0x59]) + logerror("zeus2_register_update: Warning! Different fill colors are set.\n"); + if (logit) + logerror(" -- Setting fill color = %06X depth = %06X ", m_fill_color, m_fill_depth); + } + break; + case 0x2: + frame_read(); + break; + case 0x8: + { + // Fast clear + // Atlantis: 0x00983FFF => clear entire frame buffer, 0x00981FFF => clear one frame + // crusnexo: 0x007831FF => clear one frame + // thegrid: 0x008831FF => clear one frame + // thegrid: 0x0079FFFF => clear entire frame buffer at 51=0 then 51=00800000, only seen at initial tests in thegrid + uint32_t addr = frame_addr_from_phys_addr(m_zeusbase[0x51]); + uint32_t numPixels = (m_zeusbase[0x50] & 0xffff) + 1; + numPixels *= 0x10; + if (m_zeusbase[0x50] & 0x10000) { + addr = 0x0; + numPixels = WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 8; + printf("Clearing buffer: numPixels: %08X addr: %08X reg50: %08X\n", numPixels, addr, m_zeusbase[0x50]); + } + if (logit) + logerror(" -- Clearing buffer: numPixels: %08X addr: %08X reg51: %08X", numPixels, addr, m_zeusbase[0x51]); + for (int count = 0; count < numPixels; count++) { + // Crusn wraps the frame buffer during fill so need to mask address + m_frameColor[(addr + count) & (WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2 - 1)] = m_fill_color; + m_frameDepth[(addr + count) & (WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 2 - 1)] = m_fill_depth; + } + } + break; + case 0x9: + { + // Fast fill from local regs + uint32_t numDWords = (m_zeusbase[0x50] & 0xffff) + 1; + // Set autoincrement + if (numDWords>1) + m_zeusbase[0x5e] |= 0x40; + if (logit && numDWords > 1) + logerror(" -- Filling buffer: numDWords: %08X addr: %08X reg50: %08X reg5e: %08X\n", numDWords, m_zeusbase[0x51], m_zeusbase[0x50], m_zeusbase[0x5e]); + for (int dword = 0; dword < numDWords; dword++) + frame_write(); } break; + default: + logerror("unknown code = %x offset = %x", code, offset); + break; + } + } + break; // 0x60, 0x61, 0x62 Translation matrix, set using fifo command - case 0x63: - if (logit) - logerror("\tMAC Trans3 HSR Correction Factor = %8.2f", reinterpret_cast(m_zeusbase[offset])); - break; + case 0x60: case 0x61: case 0x62: case 0x63: + zeus_trans[offset & 3] = convert_float(m_zeusbase[offset]); + if (logit) + logerror("\tMAC Trans%d = %8.2f", offset & 3, reinterpret_cast(m_zeusbase[offset])); + break; - case 0x64: - if (logit) - logerror("\tMAC Offset"); - break; + case 0x64: + if (logit) + logerror("\tMAC Offset"); + break; - case 0x65: - if (logit) - logerror("\tMAC Offset"); - break; + case 0x65: + if (logit) + logerror("\tMAC Offset"); + break; - case 0x66: - if (logit) - logerror("\tMultiply Offset"); - break; + case 0x66: + if (logit) + logerror("\tMultiply Offset"); + break; - case 0x67: - if (logit) - logerror("\tMath MAC Setup"); - break; + case 0x67: + if (logit) + logerror("\tMath MAC Setup"); + break; - case 0x68: - if (logit) - logerror("\tALU Float Offset"); - break; + case 0x68: + if (logit) + logerror("\tALU Float Offset"); + break; - case 0x6A: - if (logit) - logerror("\tALU RegC X_OFF = %8.2f", reinterpret_cast(m_zeusbase[offset])); - break; + case 0x6A: + if (logit) + logerror("\tALU RegC X_OFF = %8.2f", reinterpret_cast(m_zeusbase[offset])); + break; - case 0x6B: - if (logit) - logerror("\tALU RegD Y_OFF = %8.2f", reinterpret_cast(m_zeusbase[offset])); - break; + case 0x6B: + if (logit) + logerror("\tALU RegD Y_OFF = %8.2f", reinterpret_cast(m_zeusbase[offset])); + break; - case 0x6c: - if (logit) - logerror("\tALU Inv Offset"); - break; + case 0x6c: + if (logit) + logerror("\tALU Inv Offset"); + break; - case 0x6f: - if (logit) - logerror("\tLight Table Setup"); - break; + case 0x6f: + if (logit) + logerror("\tLight Table Setup Page: %02X Mask: %02X", (m_zeusbase[offset] >> 8) & 0xff, m_zeusbase[offset] & 0xff); + break; - case 0x76: - if (logit) - logerror("\tMath Comp Reg0 XClip = %8.2f", reinterpret_cast(m_zeusbase[offset])); - break; + case 0x76: + if (logit) + logerror("\tMath Comp Reg0 XClip = %8.2f", reinterpret_cast(m_zeusbase[offset])); + break; - case 0x77: - if (logit) - logerror("\tMath Comp Reg1 YClip = %8.2f", reinterpret_cast(m_zeusbase[offset])); - break; + case 0x77: + if (logit) + logerror("\tMath Comp Reg1 YClip = %8.2f", reinterpret_cast(m_zeusbase[offset])); + break; - case 0x78: - if (logit) - logerror("\tMath Comp Reg2 ZClip = %8.2f", reinterpret_cast(m_zeusbase[offset])); - break; + case 0x78: + if (logit) + logerror("\tMath Comp Reg2 ZClip = %8.2f", reinterpret_cast(m_zeusbase[offset])); + break; - case 0x79: - if (logit) - logerror("\tMath Comp Reg3 YRange = %8.2f", reinterpret_cast(m_zeusbase[offset])); - break; + case 0x79: + if (logit) + logerror("\tMath Comp Reg3 YRange = %8.2f", reinterpret_cast(m_zeusbase[offset])); + break; - case 0x7a: - if (logit) - logerror("\tMath Conditional Branch Setup"); - break; + case 0x7a: + if (logit) + logerror("\tMath Conditional Branch Setup"); + break; - case 0x7c: - if (logit) - logerror("\tMath Compare Setup 1"); - break; + case 0x7c: + if (logit) + logerror("\tMath Compare Setup 1"); + break; - case 0x7D: - if (logit) - logerror("\tMath FIFO AF / AE Input FIFO AF / AE"); - break; + case 0x7D: + if (logit) + logerror("\tMath FIFO AF / AE Input FIFO AF / AE"); + break; - case 0x7f: - if (logit) - logerror("\tMath Setup Reg"); - break; + case 0x7f: + if (logit) + logerror("\tMath Setup Reg"); + break; } if (logit) @@ -866,7 +1013,7 @@ void zeus2_device::load_pal_table(void *wavePtr, uint32_t ctrl, int type, int lo if (logit) { logerror("\ntable: "); tablePtr = &m_pal_table[addr]; - for (int i = 0; i <= count*4; ++i) { + for (int i = 0; i < (count+1)*4; ++i) { logerror(" %08X", *tablePtr++); if (0 && (i + 1) % 16 == 0) logerror("\n"); @@ -1002,8 +1149,8 @@ if (subregdata_count[which] < 256) break; case 0x15: - m_zbufmin = int32_t((value & 0xffffff) << 8) >> 8; - if (logit) logerror("\t(R%02X) = %d ZBuf Min", which, m_zbufmin / 4096.0f); + //m_zbufmin = value & 0xffffff; + if (logit) logerror("\t(R%02X) = %06X ZBuf Min", which, value); break; case 0x40: @@ -1044,6 +1191,9 @@ bool zeus2_device::zeus2_fifo_process(const uint32_t *data, int numwords) { int dataoffs = 0; + // Increment ififo counter + m_zeusbase[0x18]++; + /* handle logging */ switch (data[0] >> 24) { @@ -1070,7 +1220,7 @@ bool zeus2_device::zeus2_fifo_process(const uint32_t *data, int numwords) case 0x08: if (numwords < 14) return false; - zeus2_register32_w(0x63, data[1], log_fifo); + zeus_trans[3] = convert_float(data[1]); dataoffs = 1; /* 0x07: set matrix and point (crusnexo) */ @@ -1090,20 +1240,18 @@ bool zeus2_device::zeus2_fifo_process(const uint32_t *data, int numwords) zeus_matrix[2][2] = convert_float(data[dataoffs + 9]); /* extract the translation point from the raw data */ - zeus_point[0] = convert_float(data[dataoffs + 10]); - zeus_point[1] = convert_float(data[dataoffs + 11]); - zeus_point[2] = convert_float(data[dataoffs + 12]); + zeus_trans[0] = convert_float(data[dataoffs + 10]); + zeus_trans[1] = convert_float(data[dataoffs + 11]); + zeus_trans[2] = convert_float(data[dataoffs + 12]); if (log_fifo) { log_fifo_command(data, numwords, "\n"); - logerror("\t\tmatrix ( %8.2f %8.2f %8.2f ) ( %8.2f %8.2f %8.2f ) ( %8.2f %8.2f %8.2f )\n\t\tvector %8.2f %8.2f %8.5f\n", + logerror("\t\tmatrix ( %8.2f %8.2f %8.2f ) ( %8.2f %8.2f %8.2f ) ( %8.2f %8.2f %8.2f )\n\t\ttrans_vector %8.2f %8.2f %8.5f %8.2f\n", (double) zeus_matrix[0][0], (double) zeus_matrix[0][1], (double) zeus_matrix[0][2], (double) zeus_matrix[1][0], (double) zeus_matrix[1][1], (double) zeus_matrix[1][2], (double) zeus_matrix[2][0], (double) zeus_matrix[2][1], (double) zeus_matrix[2][2], - (double) zeus_point[0], - (double) zeus_point[1], - (double) zeus_point[2]); + (double) zeus_trans[0], (double) zeus_trans[1], (double) zeus_trans[2], (double)zeus_trans[3]); } break; @@ -1117,17 +1265,15 @@ bool zeus2_device::zeus2_fifo_process(const uint32_t *data, int numwords) return false; /* extract the translation point from the raw data */ - zeus_point[0] = convert_float(data[1]); - zeus_point[1] = convert_float(data[2]); - zeus_point[2] = convert_float(data[3]); + zeus_trans[0] = convert_float(data[1]); + zeus_trans[1] = convert_float(data[2]); + zeus_trans[2] = convert_float(data[3]); if (log_fifo) { log_fifo_command(data, numwords, "\n"); - logerror("\t\tvector %8.2f %8.2f %8.5f\n", - (double) zeus_point[0], - (double) zeus_point[1], - (double) zeus_point[2]); + logerror("\t\ttrans_vector %8.2f %8.2f %8.2f %8.2f\n", + (double)zeus_trans[0], (double)zeus_trans[1], (double)zeus_trans[2], (double)zeus_trans[3]); } break; @@ -1138,8 +1284,14 @@ bool zeus2_device::zeus2_fifo_process(const uint32_t *data, int numwords) if (m_system == THEGRID) { if (numwords < 3) return false; + zeus_light[1] = convert_float(data[1]); + zeus_light[2] = convert_float(data[2]); if (log_fifo) - log_fifo_command(data, numwords, " -- Init light source\n"); + { + log_fifo_command(data, numwords, " -- Set static fade\n"); + logerror("\t\tlight_vector %8.2f %8.2f %8.2f\n", + (double)zeus_light[0], (double)zeus_light[1], (double)zeus_light[2]); + } break; } // 0x1b: thegrid @@ -1147,30 +1299,28 @@ bool zeus2_device::zeus2_fifo_process(const uint32_t *data, int numwords) case 0x1b: if (numwords < 4) return false; + /* extract the translation point from the raw data */ + zeus_light[0] = convert_float(data[1]); + zeus_light[1] = convert_float(data[2]); + zeus_light[2] = convert_float(data[3]); if (log_fifo) { - log_fifo_command(data, numwords, " -- unknown control + happens after clear screen\n"); - logerror("\t\tvector2 %8.2f %8.2f %8.5f\n", - (double) convert_float(data[1]), - (double) convert_float(data[2]), - (double) convert_float(data[3])); - - /* extract the translation point from the raw data */ - zeus_point2[0] = convert_float(data[1]); - zeus_point2[1] = convert_float(data[2]); - zeus_point2[2] = convert_float(data[3]); + log_fifo_command(data, numwords, " -- Set light vector\n"); + logerror("\t\tlight_vector %8.2f %8.2f %8.2f\n", + (double)zeus_light[0], (double)zeus_light[1], (double)zeus_light[2]); + } break; - // thegrid ??? + // thegrid case 0x1d: if (numwords < 2) return false; + zeus_light[2] = convert_float(data[1]); if (log_fifo) { - log_fifo_command(data, numwords, " -- unknown\n"); - logerror("\t\tdata %8.5f\n", - (double)convert_float(data[1])); + log_fifo_command(data, numwords, " -- Set zoffset\n"); + logerror("\t\tdata %8.5f\n", (double)convert_float(data[1])); } break; @@ -1205,14 +1355,15 @@ bool zeus2_device::zeus2_fifo_process(const uint32_t *data, int numwords) case 0x25: case 0x31: case 0x32: + poly->wait("REND_WAIT"); if (log_fifo) - log_fifo_command(data, numwords, " sync? \n"); + log_fifo_command(data, numwords, " wait for renderer idle \n"); break; /* 0x38: direct render quad (crusnexo) */ // 0x38: direct write to frame buffer (atlantis) case 0x38: - if (data[0] == 0x38000000) { + if (m_curUCodeSrc == 0x1aa) { if (numwords < 3) return false; // mwskins direct write to frame buffer @@ -1233,6 +1384,17 @@ bool zeus2_device::zeus2_fifo_process(const uint32_t *data, int numwords) } break; + // thegrid + case 0xb7: + if (numwords < 2) + return false; + if (log_fifo) + { + log_fifo_command(data, numwords, " -- Set interp factor\n"); + logerror("\t\tdata %8.5f\n", (double)convert_float(data[1])); + } + break; + default: if (1 || data[0] != 0x2c0) { @@ -1251,7 +1413,7 @@ bool zeus2_device::zeus2_fifo_process(const uint32_t *data, int numwords) void zeus2_device::zeus2_draw_model(uint32_t baseaddr, uint16_t count, int logit) { - uint32_t databuffer[32]; + uint32_t databuffer[512]; int databufcount = 0; int model_done = false; uint32_t texdata = 0; @@ -1275,7 +1437,6 @@ void zeus2_device::zeus2_draw_model(uint32_t baseaddr, uint16_t count, int logit { int countneeded = 2; uint8_t cmd; - uint8_t subCmd; /* accumulate 2 words of data */ databuffer[databufcount++] = WAVERAM_READ32(base, curoffs * 2 + 0); @@ -1283,21 +1444,22 @@ void zeus2_device::zeus2_draw_model(uint32_t baseaddr, uint16_t count, int logit /* if this is enough, process the command */ cmd = databuffer[0] >> 24; - subCmd = (databuffer[1] >> 24) & 0xfc; - if ((cmd == 0x38 && subCmd != 0x38) || (cmd == 0x2d)) { + if ((cmd == 0x38) || (cmd == 0x2d) || (cmd == 0xa7) || (cmd == 0xaf)) { countneeded = zeus_quad_size; } if (databufcount == countneeded) { + // Increment mfifo counter + m_zeusbase[0x19] += databufcount; + /* handle logging of the command */ if (logit) { - //if ((cmd == 0x38) || (cmd == 0x2d)) - // log_render_info(texdata); if (cmd != 0x00 || (cmd == 0x00 && curoffs == count)) { logerror("\t"); - for (int offs = 0; offs < databufcount; offs++) + // Limit logging to 16 words + for (int offs = 0; offs < databufcount && offs < 16; offs++) logerror("%08X ", databuffer[offs]); logerror("-- "); } @@ -1311,19 +1473,21 @@ void zeus2_device::zeus2_draw_model(uint32_t baseaddr, uint16_t count, int logit logerror(" end cmd 00\n"); case 0x21: /* thegrid */ case 0x22: /* crusnexo */ - if (((databuffer[0] >> 16) & 0xff) == 0x9b) - { - texdata = databuffer[1]; - if (logit) - logerror("texdata\n"); - } - else if (logit) - logerror("unknown offset %08X %08X\n", databuffer[0], databuffer[1]); + { + // Sets 0x68 (uv float offset) and texture line and mode + // In reality this sets internal registers that are used in the + // zeus2 microcode to set these registers + m_zeusbase[0x68] = (databuffer[0] >> 16) & 0xff; + texdata = databuffer[1]; + if (logit) + logerror(" (0x68)=%02X texMode=%08X\n", m_zeusbase[0x68], texdata); + } break; case 0x31: /* thegrid */ + poly->wait("REND_WAIT"); if (logit) - logerror("sync?\n"); + logerror("wait for renderer not active\n"); break; case 0x29: // atlantis @@ -1339,51 +1503,28 @@ void zeus2_device::zeus2_draw_model(uint32_t baseaddr, uint16_t count, int logit break; case 0x38: /* crusnexo/thegrid */ - if (subCmd == 0x38) { - // Direct commands from waveram buffer - //uint32_t cmdData[2]; - //for (int subIndex = 0; subIndex < 2; ++subIndex) { - // uint32_t offset = (databuffer[subIndex] & 0xff) * 6; - // //printf("directRead curoffs: 0x%X\n", curoffs); - // for (int cmdIndex = 0; cmdIndex < 3; ++cmdIndex) { - // cmdData[0] = m_directCmd[offset + cmdIndex * 2 + 0]; - // cmdData[1] = m_directCmd[offset + cmdIndex * 2 + 1]; - // if (curoffs < 0x40) - // printf("directRead curoffs: 0x%X cmdData %08X %08X\n", curoffs, cmdData[0], cmdData[1]); - // if (cmdData[0] != 0 && cmdData[1] != 0) { - // // Error check - // if (cmdData[0] != 0x58 && cmdData[0] != 0x5A) { - // if (curoffs < 0x20) - // printf("case38 error curoffs: 0x%X cmdData %08X %08X\n", curoffs, cmdData[0], cmdData[1]); - // } - // else { - // zeus2_register32_w(cmdData[0] & 0x7f, cmdData[1], logit); - // } - // } - // } - //} - //void *palbase = waveram0_ptr_from_expanded_addr(m_zeusbase[0x41]); - //uint8_t texel = databuffer[0]; - //uint32_t color = WAVERAM_READ16(palbase, texel); - //m_frameDepth[m_renderAddr] = 0; - //m_frameColor[m_renderAddr++] = conv_rgb555_to_rgb32(color); - //texel = databuffer[1]; - //color = WAVERAM_READ16(palbase, texel); - //m_frameDepth[m_renderAddr] = 0; - //m_frameColor[m_renderAddr++] = conv_rgb555_to_rgb32(color); - //m_frameDepth[m_renderAddr] = 0; - //m_frameColor[m_renderAddr++] = databuffer[0] & 0x00ffffff; - //m_frameDepth[m_renderAddr] = 0; - //m_frameColor[m_renderAddr++] = databuffer[1] & 0x00ffffff; - //if (logit) - // if ((curoffs + 1) % 16 == 0) - // logerror("\n"); + if (m_system==THEGRID && m_curUCodeSrc==0x00000343) { + if (logit) + logerror("direct write [57]=%08X [51]==%08X\n", m_zeusbase[0x57], m_zeusbase[0x51]); + // Direct write to frame buffer + for (int subIndex = 0; subIndex < zeus_quad_size / 2; ++subIndex) { + m_zeusbase[0x5a] = databuffer[subIndex * 2 + 1] & 0xffffff; + m_zeusbase[0x58] = databuffer[subIndex * 2 + 0] & 0xffffff; + frame_write(); + } } else { poly->zeus2_draw_quad(databuffer, texdata, logit); } break; + // thegrid: triangle mesh, pm3dli + case 0xa7: + case 0xaf: + if (1 || logit) + logerror(" unknown triangle data\n"); + break; + default: if (logit) logerror("unknown model data\n"); @@ -1412,15 +1553,7 @@ void zeus2_device::zeus2_draw_model(uint32_t baseaddr, uint16_t count, int logit *************************************/ void zeus2_renderer::zeus2_draw_quad(const uint32_t *databuffer, uint32_t texdata, int logit) { - z2_poly_vertex clipvert[8]; z2_poly_vertex vert[4]; - // float uscale, vscale; - float maxy, maxx; - // int val1, val2, texwshift; - int numverts; - int i; - // int16_t normal[3]; - // int32_t rotnormal[3]; if (logit) { m_state->logerror("quad %d", m_state->zeus_quad_size); @@ -1444,48 +1577,30 @@ void zeus2_renderer::zeus2_draw_quad(const uint32_t *databuffer, uint32_t texdat //if (machine().input().code_pressed(KEYCODE_I) && (texdata & 0xffff) == 0x119) return; //if (machine().input().code_pressed(KEYCODE_O) && (texdata & 0xffff) == 0x119) return; //if (machine().input().code_pressed(KEYCODE_L) && (texdata & 0x100)) return; + //if (m_state->m_texmodeReg != 0x9b) return; + + // PZr = (PZ * M22) + (PY * M21) + (PX * M20) + 0 + // AZp = (AZ * M22) + (AY * M21) + (AX * M20) + TZ + // AYp = (AZ * M12) + (AY * M11) + (AX * M10) + TY + // AXp = (AZ * M02) + (AY * M01) + (AX * M00) + TX + + // Fast HSR Removal + if (1) + { + float PZr; + + int8_t normal[3]; + normal[0] = databuffer[0] >> 0; + normal[1] = databuffer[0] >> 8; + normal[2] = databuffer[0] >> 16; + + PZr = normal[0] * m_state->zeus_matrix[2][0] + normal[1] * m_state->zeus_matrix[2][1] + normal[2] * m_state->zeus_matrix[2][2] + m_state->zeus_trans[3]; + + //m_state->logerror("norm: %i %i %i PZr: %f\n", normal[0], normal[1], normal[2], PZr); + if (PZr >= 0) + return; + } - /* - 0 38800000 - 1 x2 | x1 - 2 v1 | u1 - 3 y2 | y1 - 4 v2 | u2 - 5 z2 | z1 - 6 v3 | u3 - 7 v4 | u4 - 8 ??? - 9 x4 | x3 - 10 y4 | y3 - 11 z4 | z3 - - In memory: - +0 = ??? - +1 = set via $05410000/value - +2 = x1 - +3 = y1 - +4 = z1 - +5 = x2 - +6 = y2 - +7 = z2 - +8 = x3 - +9 = y3 - +10= z3 - +11= x4 - +12= y4 - +13= z4 - +14= uv1 - +15= uv2 - +16= uv3 - +17= uv4 - +18= set via $05200000/$05000000 | (value << 10) (uvoffset?) - +19= ??? - - - 38810000 00000000 00C7|FF38 FF5E|FF5E 15400154 11400114 00000000 00000000 FF38|00C7 00A3|00A3 -- quad - xxxx|xxxx yyyy|yyyy xxxx|xxxx yyyy|yyyy - */ - // Altantis rendermode: 0x024004 startup, then 0x020202, then 0x021E0E /* extract raw x,y,z */ if (m_state->m_atlantis) { // Atlantis quad 14 @@ -1493,26 +1608,26 @@ void zeus2_renderer::zeus2_draw_quad(const uint32_t *databuffer, uint32_t texdat vert[0].x = (int16_t)databuffer[2]; vert[0].y = (int16_t)databuffer[3]; vert[0].p[0] = (int16_t)databuffer[4]; - vert[0].p[1] = ((databuffer[5] >> 0) & 0xff) << 2; - vert[0].p[2] = ((databuffer[5] >> 8) & 0xff) << 2; + vert[0].p[1] = ((databuffer[5] >> 0) & 0xff); + vert[0].p[2] = ((databuffer[5] >> 8) & 0xff); vert[1].x = (int16_t)(databuffer[2] >> 16); vert[1].y = (int16_t)(databuffer[3] >> 16); vert[1].p[0] = (int16_t)(databuffer[4] >> 16); - vert[1].p[1] = ((databuffer[5] >> 16) & 0xff) << 2; - vert[1].p[2] = ((databuffer[5] >> 24) & 0xff) << 2; + vert[1].p[1] = ((databuffer[5] >> 16) & 0xff); + vert[1].p[2] = ((databuffer[5] >> 24) & 0xff); vert[2].x = (int16_t)databuffer[6]; vert[2].y = (int16_t)databuffer[7]; vert[2].p[0] = (int16_t)databuffer[8]; - vert[2].p[1] = ((databuffer[9] >> 0) & 0xff) << 2; - vert[2].p[2] = ((databuffer[9] >> 8) & 0xff) << 2; + vert[2].p[1] = ((databuffer[9] >> 0) & 0xff); + vert[2].p[2] = ((databuffer[9] >> 8) & 0xff); vert[3].x = (int16_t)(databuffer[6] >> 16); vert[3].y = (int16_t)(databuffer[7] >> 16); vert[3].p[0] = (int16_t)(databuffer[8] >> 16); - vert[3].p[1] = ((databuffer[9] >> 16) & 0xff) << 2; - vert[3].p[2] = ((databuffer[9] >> 24) & 0xff) << 2; + vert[3].p[1] = ((databuffer[9] >> 16) & 0xff); + vert[3].p[2] = ((databuffer[9] >> 24) & 0xff); } else { //printf("R40: %06X\n", m_state->m_renderRegs[0x40]); @@ -1558,37 +1673,14 @@ void zeus2_renderer::zeus2_draw_quad(const uint32_t *databuffer, uint32_t texdat unknownFloat[2] = m_state->convert_float(databuffer[12]); unknownFloat[3] = m_state->convert_float(databuffer[13]); } - /* - vert[0].x = (int16_t)databuffer[1]; - vert[0].y = (int16_t)databuffer[3]; - vert[0].p[0] = (int16_t)databuffer[5]; - vert[0].p[1] = (uint16_t)databuffer[2]; - vert[0].p[2] = (uint16_t)(databuffer[2] >> 16); - - vert[1].x = (int16_t)(databuffer[1] >> 16); - vert[1].y = (int16_t)(databuffer[3] >> 16); - vert[1].p[0] = (int16_t)(databuffer[5] >> 16); - vert[1].p[1] = (uint16_t)databuffer[4]; - vert[1].p[2] = (uint16_t)(databuffer[4] >> 16); - - vert[2].x = (int16_t)databuffer[9]; - vert[2].y = (int16_t)databuffer[10]; - vert[2].p[0] = (int16_t)databuffer[11]; - vert[2].p[1] = (uint16_t)databuffer[6]; - vert[2].p[2] = (uint16_t)(databuffer[6] >> 16); - - vert[3].x = (int16_t)(databuffer[9] >> 16); - vert[3].y = (int16_t)(databuffer[10] >> 16); - vert[3].p[0] = (int16_t)(databuffer[11] >> 16); - vert[3].p[1] = (uint16_t)databuffer[7]; - vert[3].p[2] = (uint16_t)(databuffer[7] >> 16); - */ - - int logextra = 1; + + int logextra = 0; int intScale = m_state->m_zeusbase[0x66] - 0x8e; float fScale = pow(2.0f, intScale); - for (i = 0; i < 4; i++) + int intUVScale = m_state->m_zeusbase[0x68] - 0x9d; + float uvScale = pow(2.0f, intUVScale); + for (int i = 0; i < 4; i++) { float x = vert[i].x; float y = vert[i].y; @@ -1600,50 +1692,24 @@ void zeus2_renderer::zeus2_draw_quad(const uint32_t *databuffer, uint32_t texdat } #if PRINT_TEX_INFO if (logit && i == 0) { - m_state->check_tex(texdata, z, m_state->zeus_matrix[2][2], m_state->zeus_point[2]); + m_state->check_tex(texdata, z, m_state->zeus_matrix[2][2], m_state->zeus_trans[2]); } #endif - vert[i].x = x * m_state->zeus_matrix[0][0] + y * m_state->zeus_matrix[0][1] + z * m_state->zeus_matrix[0][2]; - vert[i].y = x * m_state->zeus_matrix[1][0] + y * m_state->zeus_matrix[1][1] + z * m_state->zeus_matrix[1][2]; + vert[i].x = x * m_state->zeus_matrix[0][0] + y * m_state->zeus_matrix[0][1] + z * m_state->zeus_matrix[0][2]; + vert[i].y = x * m_state->zeus_matrix[1][0] + y * m_state->zeus_matrix[1][1] + z * m_state->zeus_matrix[1][2]; vert[i].p[0] = x * m_state->zeus_matrix[2][0] + y * m_state->zeus_matrix[2][1] + z * m_state->zeus_matrix[2][2]; - if (1) { - vert[i].x += m_state->zeus_point[0]; - vert[i].y += m_state->zeus_point[1]; - vert[i].p[0] += m_state->zeus_point[2]; - } - - if (0) { - int shift; - shift = 1024 >> m_state->m_zeusbase[0x6c]; - vert[i].p[0] += shift; - } + vert[i].x += m_state->zeus_trans[0]; + vert[i].y += m_state->zeus_trans[1]; + vert[i].p[0] += m_state->zeus_trans[2]; - vert[i].p[2] += (texdata >> 16) << 2; - vert[i].p[1] *= 256.0f / 4.0f; - vert[i].p[2] *= 256.0f / 4.0f; + //vert[i].p[1] += ((texdata >> 8) & 0x1) ? 1.0f : 0.0f; + vert[i].p[1] *= uvScale; + vert[i].p[2] *= uvScale; + vert[i].p[2] += (texdata >> 16); + vert[i].p[1] *= 256.0f; + vert[i].p[2] *= 256.0f; - // back face cull using polygon normal and first vertex - if (0 && i == 0) - { - float rotnormal[3]; - - int8_t normal[3]; - normal[0] = databuffer[0] >> 0; - normal[1] = databuffer[0] >> 8; - normal[2] = databuffer[0] >> 16; - //m_state->logerror("norm: %i %i %i\n", normal[0], normal[1], normal[2]); - if (normal[2] != -128) { - rotnormal[0] = normal[0] * m_state->zeus_matrix[0][0] + normal[1] * m_state->zeus_matrix[0][1] + normal[2] * m_state->zeus_matrix[0][2]; - rotnormal[1] = normal[0] * m_state->zeus_matrix[1][0] + normal[1] * m_state->zeus_matrix[1][1] + normal[2] * m_state->zeus_matrix[1][2]; - rotnormal[2] = normal[0] * m_state->zeus_matrix[2][0] + normal[1] * m_state->zeus_matrix[2][1] + normal[2] * m_state->zeus_matrix[2][2]; - - float dot = rotnormal[0] * vert[0].x + rotnormal[1] * vert[0].y + rotnormal[2] * vert[0].p[0]; - - if (dot >= 0) - return; - } - } if (logextra & logit) @@ -1653,168 +1719,116 @@ void zeus2_renderer::zeus2_draw_quad(const uint32_t *databuffer, uint32_t texdat (int)(vert[i].p[1] / 256.0f), (int)(vert[i].p[2] / 256.0f)); } } - if (logextra & logit && m_state->zeus_quad_size == 14) { + if (0 && logextra & logit && m_state->zeus_quad_size == 14) { m_state->logerror("unknown: int16: %d %d %d %d %d %d %d %d float: %f %f %f %f\n", unknown[0], unknown[1], unknown[2], unknown[3], unknown[4], unknown[5], unknown[6], unknown[7], unknownFloat[0], unknownFloat[1], unknownFloat[2], unknownFloat[3]); } - //bool enable_perspective = true; // !(m_state->m_renderRegs[0x14] & 0x2); - //float clipVal = enable_perspective ? 1.0f / 512.0f / 4.0f : 0.0f; - float clipVal = m_state->m_zbufmin / 4096.0f; - if (1) { - numverts = this->zclip_if_less(4, &vert[0], &clipvert[0], 4, clipVal); - if (numverts < 3) + + // Z Clipping, done before clamp to 0 + float clipVal = reinterpret_cast(m_state->m_zeusbase[0x78]); + for (int i = 0; i < 4; i++) + { + if (vert[i].p[0] < clipVal) return; } - else { - numverts = 4; - clipvert[0] = vert[0]; - clipvert[1] = vert[1]; - clipvert[2] = vert[2]; - clipvert[3] = vert[3]; - } + float xOrigin = reinterpret_cast(m_state->m_zeusbase[0x6a]); float yOrigin = reinterpret_cast(m_state->m_zeusbase[0x6b]); - float oozBase = (m_state->m_atlantis) ? 1024.0f : (m_state->m_system == m_state->THEGRID) ? 512.0f : 512.0f; - //oozBase = 1 << m_state->m_zeusbase[0x6c]; - maxx = maxy = -1000.0f; - for (i = 0; i < numverts; i++) + // crusn seems to use a different z scale + float zRound = (m_state->m_system == m_state->CRUSNEXO) ? 2.0f : 0.5f; + + float oozBase = 1 << m_state->m_zeusbase[0x6c]; + float ooz; + for (int i = 0; i < 4; i++) { - if (0 && (m_state->m_renderRegs[0x14] & 0x1)) { - clipvert[i].p[0] += reinterpret_cast(m_state->m_zeusbase[0x63]); - } - // mwskinsa has R14=0x40a1 for tips box which has z=0 - //if (!(m_state->m_renderRegs[0x14] & 0x1)) { - //if (enable_perspective) { - // 412.0f here works for crusnexo - // 1024.0f works for mwskinsa - float ooz = oozBase / (clipvert[i].p[0] + (1024 >> m_state->m_zeusbase[0x6c])); - //ooz = oozBase / (oozBase - clipvert[i].p[0]); - //float ooz = 1024.0f / clipvert[i].p[0]; - //float ooz = float(1 << m_state->m_zeusbase[0x6c]) / clipvert[i].p[0]; - clipvert[i].x *= ooz; - clipvert[i].y *= ooz; - //} + // Clamp to zero if negative + if (vert[i].p[0] < 0) + vert[i].p[0] = 0.0f; + + ooz = oozBase / (vert[i].p[0] + zRound); if (1) { - //clipvert[i].x += 256.5f / 1.0f; - //clipvert[i].y += 200.5f / 1.0f; - clipvert[i].x += xOrigin; - clipvert[i].y += yOrigin; - //clipvert[i].p[0] += reinterpret_cast(m_state->m_zeusbase[0x63]); - //clipvert[i].p[0] *= -1.0f; + //vert[i].p[0] += reinterpret_cast(m_state->m_zeusbase[0x63]); + vert[i].x *= ooz; + vert[i].y *= ooz; + //vert[i].p[0] = ooz; } + vert[i].x += xOrigin; + vert[i].y += yOrigin; + // The Grid adds zoffset for objects with no light + if (m_state->m_useZOffset) + vert[i].p[0] += m_state->zeus_light[2]; + //clipvert[i].p[0] *= 65536.0f * 16.0f; - clipvert[i].p[0] *= 4096.0f; + vert[i].p[0] *= 4096.0f * 1.0f; // 12.12 - maxx = std::max(maxx, clipvert[i].x); - maxy = std::max(maxy, clipvert[i].y); if (logextra & logit) - m_state->logerror("\t\t\tTranslated=(%f,%f, %f) scale = %f\n", (double)clipvert[i].x, (double)clipvert[i].y, (double)clipvert[i].p[0], ooz); + m_state->logerror("\t\t\tTranslated=(%f,%f, %f) scale = %f\n", (double)vert[i].x, (double)vert[i].y, (double)vert[i].p[0], ooz); } - for (i = 0; i < numverts; i++) - { - if (clipvert[i].x == maxx) - clipvert[i].x += 0.0005f; - if (clipvert[i].y == maxy) - clipvert[i].y += 0.0005f; + // Slow HSR + // ((AYs - BYs) * (BXs - CXs)) - ((AXs - BXs) * (BYs - CYs)) + if (1) { + float slowHSR = ((vert[0].y - vert[1].y) * (vert[1].x - vert[2].x) - (vert[0].x - vert[1].x) * (vert[1].y - vert[2].y)); + if (slowHSR >= 0) + return; } zeus2_poly_extra_data& extra = this->object_data_alloc(); + + extra.ucode_src = m_state->m_curUCodeSrc; + extra.tex_src = m_state->zeus_texbase; int texmode = texdata & 0xffff; - // 0x014d == atlantis initial screen and scoreboard background - //if (texmode != 0x014D) return; - // Just a guess but seems to work extra.texwidth = 0x20 << ((texmode >> 2) & 3); - //if (texmode & 0x80) extra.texwidth <<= 1; - //if (m_state->m_palSize == 16) extra.texwidth *= 2; - //switch (texmode) - //{ - //case 0x14d: // atlantis - //case 0x18e: // atlantis - //case 0x01d: /* crusnexo: RHS of score bar */ - //case 0x05d: /* crusnexo: background, road */ - //case 0x0dd: /* crusnexo: license plate letters */ - //case 0x11d: /* crusnexo: LHS of score bar */ - //case 0x15d: /* crusnexo */ - //case 0x85d: /* crusnexo */ - //case 0x95d: /* crusnexo */ - //case 0xc1d: /* crusnexo */ - //case 0xc5d: /* crusnexo */ - // extra.texwidth = 256; - // break; - - //case 0x18a: // atlantis - //case 0x059: /* crusnexo */ - //case 0x0d9: /* crusnexo */ - //case 0x119: /* crusnexo: license plates */ - //case 0x159: /* crusnexo */ - // extra.texwidth = 128; - // break; - - //case 0x055: /* crusnexo */ - //case 0x145: // atlantis - //case 0x155: /* crusnexo */ - // extra.texwidth = 64; - // break; - - //case 0x000: // thegrid guess - //case 0x120: // thegrid guess - //case 0x140: // atlantis - //case 0x141: // atlantis - // extra.texwidth = 32; - // break; - - //default: - //{ - // static uint8_t hits[0x10000]; - // if (!hits[(texdata & 0xffff)]) - // { - // hits[(texdata & 0xffff)] = 1; - // printf("texMode = %04X\n", (texdata & 0xffff)); - // } - // break; - //} - //} - extra.solidcolor = 0;//m_zeusbase[0x00] & 0x7fff; - extra.zbufmin = m_state->m_zbufmin; - extra.alpha = 0;//m_zeusbase[0x4e]; - extra.transcolor = 0; // (texmode & 0x100) ? 0 : 0x100; + extra.transcolor = (texmode & 0x180) ? 0 : 0x100; extra.texbase = WAVERAM_BLOCK0_EXT(m_state->zeus_texbase); - extra.palbase = m_state->waveram0_ptr_from_expanded_addr(m_state->m_zeusbase[0x41]); - //extra.depth_test_enable = !(m_state->m_renderRegs[0x40] & 0x020000); - // crusnexo text is R14=0x4062 + extra.depth_min_enable = true;// (m_state->m_renderRegs[0x14] & 0x008000); + extra.zbuf_min = int32_t((m_state->m_renderRegs[0x15]) << 8) >> 8; + //extra.zbuf_min = m_state->m_renderRegs[0x15]; extra.depth_test_enable = !(m_state->m_renderRegs[0x14] & 0x000020); - extra.depth_min_enable = false; // !(m_state->m_renderRegs[0x14] & 0x000040); - //extra.depth_test_enable = !(m_state->m_renderRegs[0x40] & 0x000002); - //extra.depth_test_enable = true; // (texmode & 0x0010); - extra.depth_write_enable = true; + //extra.depth_test_enable &= !(m_state->m_renderRegs[0x14] & 0x008000); + extra.depth_write_enable = !(m_state->m_renderRegs[0x14] & 0x001000); + extra.depth_clear_enable = (m_state->m_renderRegs[0x14] & 0x000c00); + // 021e0e = blend with texture alpha for type 2, 020202 blend src / dst alpha + extra.blend_enable = ((m_state->m_renderRegs[0x40] == 0x020202) || (m_state->m_renderRegs[0x40] == 0x021e0e && (texmode & 0x3) == 2)); + extra.srcAlpha = m_state->m_renderRegs[0x0c]; + extra.dstAlpha = m_state->m_renderRegs[0x0d]; + extra.texture_alpha = false; + extra.texture_rgb555 = false; switch (texmode & 0x3) { case 0: - extra.get_texel = m_state->get_texel_alt_4bit; + extra.get_texel = m_state->get_texel_4bit_2x2; + extra.texwidth >>= 1; break; case 1: - extra.get_texel = m_state->get_texel_8bit; + extra.get_texel = m_state->get_texel_8bit_4x2; + break; + case 2: + // Seems to select texture with embedded alpha + if (texmode & 0x80) { + // Texel , Alpha + extra.get_texel = m_state->get_texel_8bit_2x2_alpha; + extra.texture_alpha = true; + extra.get_alpha = m_state->get_alpha_8bit_2x2_alpha; + extra.depth_test_enable = false; + extra.depth_write_enable = false; + } + else { + extra.texture_rgb555 = true; + } break; default: - extra.get_texel = m_state->get_texel_alt_8bit; + m_state->logerror("unknown texel type"); + extra.get_texel = m_state->get_texel_8bit_2x2; break; } - //extra.get_texel = ((texmode & 0x1) == 0) ? m_state->get_texel_alt_4bit : m_state->get_texel_8bit; - //extra.get_texel = m_state->get_texel_alt_4bit; - // Note: Before being converted to the "poly.h" interface, this used to call the polylgcy function - // poly_render_quad_fan. The behavior seems to be the same as it once was after a few short - // tests, but the (numverts == 5) statement below may actually be a quad fan instead of a 5-sided - // polygon. - if (numverts == 3) - render_triangle(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, clipvert[0], clipvert[1], clipvert[2]); - else if (numverts == 4) - render_polygon<4>(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, clipvert); - else if (numverts == 5) - render_polygon<5>(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, clipvert); + + //if (numverts == 3) + // render_triangle(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, vert[0], vert[1], vert[2]); + render_polygon<4>(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, vert); } @@ -1836,44 +1850,154 @@ void zeus2_renderer::render_poly_8bit(int32_t scanline, const extent_t& extent, const void *texbase = object.texbase; //const void *palbase = object.palbase; uint16_t transcolor = object.transcolor; + int32_t srcAlpha = object.srcAlpha; + int32_t dstAlpha = object.dstAlpha; + bool depth_write_enable = object.depth_write_enable; int texwidth = object.texwidth; int x; uint32_t addr = m_state->frame_addr_from_xy(0, scanline, true); - uint32_t *depthptr = &m_state->m_frameDepth[addr]; + int32_t *depthptr = &m_state->m_frameDepth[addr]; uint32_t *colorptr = &m_state->m_frameColor[addr]; + int32_t curDepthVal; + for (x = extent.startx; x < extent.stopx; x++) { + if (object.depth_clear_enable) { + //curDepthVal = object.zbuf_min; + curDepthVal = 0xffffff; + } else if (object.depth_min_enable) { + curDepthVal = curz + object.zbuf_min; + } + else { + curDepthVal = curz; + } + //if (curz < object.zbuf_min) + // curDepthVal = object.zbuf_min; + //else + // curDepthVal = curz; + if (curDepthVal < 0) + curDepthVal = 0; bool depth_pass = true; if (object.depth_test_enable) { - if (object.depth_min_enable && curz < object.zbufmin) - depth_pass = false; - if (curz < 0 || curz > depthptr[x]) + if (curDepthVal > depthptr[x]) depth_pass = false; - else if (object.depth_write_enable) - depthptr[x] = curz; // Should limit to 24 bits } if (depth_pass) { - int u0 = (curu >> 8);// & (texwidth - 1); - int v0 = (curv >> 8);// & 255; + int u0 = (curu >> 8);// &(texwidth - 1); + int v0 = (curv >> 8);// &255; int u1 = (u0 + 1); int v1 = (v0 + 1); - uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth); - //if (texel0 == transcolor) - // continue; - uint8_t texel1 = object.get_texel(texbase, v0, u1, texwidth); - uint8_t texel2 = object.get_texel(texbase, v1, u0, texwidth); - uint8_t texel3 = object.get_texel(texbase, v1, u1, texwidth); - //if (texel0 != transcolor) - if ((texel0 != transcolor) && (texel1 != transcolor) && (texel2 != transcolor) && (texel3 != transcolor)) - //if (1) - { - uint32_t color0 = m_state->m_pal_table[texel0]; - uint32_t color1 = m_state->m_pal_table[texel1]; - uint32_t color2 = m_state->m_pal_table[texel2]; - uint32_t color3 = m_state->m_pal_table[texel3]; - rgb_t filtered = rgbaint_t::bilinear_filter(color0, color1, color2, color3, curu, curv); - colorptr[x] = filtered; + if (object.texture_rgb555) { + // Rendering for textures with direct color + rgb_t srcColor = m_state->get_rgb555(texbase, v0, u0, texwidth); + colorptr[x] = srcColor; + } + else if (object.texture_alpha) { + // Rendering for textures with embedded alpha + // To bilinear filter or not to bilinear filter + if (0) { + // Add rounding + u0 += (curu >> 7) & 1; + v0 += (curv >> 7) & 1; + uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth); + srcAlpha = object.get_alpha(texbase, v0, u0, texwidth); + if (srcAlpha != 0) { + rgb_t srcColor = m_state->m_pal_table[texel0]; + rgb_t dstColor = colorptr[x]; + dstAlpha = 0xff - srcAlpha; + srcColor.scale8(srcAlpha); + srcColor += dstColor.scale8(dstAlpha); + colorptr[x] = srcColor; + if (depth_write_enable) + depthptr[x] = curDepthVal; // Should limit to 24 bits + } + } + else { + uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth); + uint8_t texel1 = object.get_texel(texbase, v0, u1, texwidth); + uint8_t texel2 = object.get_texel(texbase, v1, u0, texwidth); + uint8_t texel3 = object.get_texel(texbase, v1, u1, texwidth); + uint8_t alpha0 = object.get_alpha(texbase, v0, u0, texwidth); + uint8_t alpha1 = object.get_alpha(texbase, v0, u1, texwidth); + uint8_t alpha2 = object.get_alpha(texbase, v1, u0, texwidth); + uint8_t alpha3 = object.get_alpha(texbase, v1, u1, texwidth); + if (1) + { + // Calculate source alpha + //srcAlpha = ((uint32_t)alpha0 + (uint32_t)alpha1 + (uint32_t)alpha2 + (uint32_t)alpha3) >> 2; + uint32_t uFactor = curu & 0xff; + uint32_t vFactor = curv & 0xff; + srcAlpha = ((alpha0 * (256 - uFactor) + alpha1 * (uFactor)) * (256 - vFactor) + (alpha2 * (256 - uFactor) + alpha3 * (uFactor)) * (vFactor)) >> 16; + if (srcAlpha != 0) { + uint32_t color0 = m_state->m_pal_table[texel0]; + uint32_t color1 = m_state->m_pal_table[texel1]; + uint32_t color2 = m_state->m_pal_table[texel2]; + uint32_t color3 = m_state->m_pal_table[texel3]; + rgb_t filtered = rgbaint_t::bilinear_filter(color0, color1, color2, color3, curu, curv); + rgb_t dstColor = colorptr[x]; + dstAlpha = 0x100 - srcAlpha; + filtered.scale8(srcAlpha); + filtered += dstColor.scale8(dstAlpha); + colorptr[x] = filtered; + if (depth_write_enable) + depthptr[x] = curDepthVal; // Should limit to 24 bits + } + } + } + // Rendering for textures with no transparent color + } else if (1 || transcolor == 0x100) { + uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth); + uint8_t texel1 = object.get_texel(texbase, v0, u1, texwidth); + uint8_t texel2 = object.get_texel(texbase, v1, u0, texwidth); + uint8_t texel3 = object.get_texel(texbase, v1, u1, texwidth); + if ((texel0 != transcolor) && (texel1 != transcolor) && (texel2 != transcolor) && (texel3 != transcolor)) + //if (1) + { + uint32_t color0 = m_state->m_pal_table[texel0]; + uint32_t color1 = m_state->m_pal_table[texel1]; + uint32_t color2 = m_state->m_pal_table[texel2]; + uint32_t color3 = m_state->m_pal_table[texel3]; + rgb_t srcColor = rgbaint_t::bilinear_filter(color0, color1, color2, color3, curu, curv); + if (object.blend_enable) { + // Need to check if this is correct or use incoming dstAlpha + //dstAlpha = 0x100 - srcAlpha; + + // If src alpha is 256 don't blend + if (1 || srcAlpha != 0x100) { + rgb_t dstColor = colorptr[x]; + if (srcAlpha != 0x100) + srcColor.scale8(srcAlpha); + if (dstAlpha == 0x100) + srcColor += dstColor; + else + srcColor += dstColor.scale8(dstAlpha); + } + // If src alpha is 0 don't write + if (srcAlpha != 0x00) { + colorptr[x] = srcColor; + if (depth_write_enable) + depthptr[x] = curDepthVal; // Should limit to 24 bits + } + } + else { + colorptr[x] = srcColor; + if (depth_write_enable) + depthptr[x] = curDepthVal; // Should limit to 24 bits + } + } + // Rendering for textures with transparent color + //} else { + // // Add rounding + // u0 += (curu >> 7) & 1; + // v0 += (curv >> 7) & 1; + // uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth); + // if (texel0 != transcolor) { + // uint32_t color0 = m_state->m_pal_table[texel0]; + // colorptr[x] = color0; + // if (object.depth_write_enable) + // depthptr[x] = curz; // Should limit to 24 bits + // } } } curz += dzdx; @@ -1928,17 +2052,22 @@ void zeus2_device::check_tex(uint32_t &texmode, float &zObj, float &zMat, float std::string infoStr; std::stringstream infoStream; infoStream << "tex=0x" << std::setw(8) << std::setfill('0') << std::hex << zeus_texbase << " "; - infoStream << "pal=0x" << std::setw(4) << std::setfill('0') << (m_curPalTableSrc>>16) << ", 0x" << std::setw(4) << (m_curPalTableSrc & 0xffff) << " "; + //infoStream << "pal=0x" << std::setw(4) << std::setfill('0') << (m_curPalTableSrc >> 16) << ", 0x" << std::setw(4) << (m_curPalTableSrc & 0xffff) << " "; + infoStream << "pal=0x" << std::setw(8) << std::setfill('0') << m_curPalTableSrc << " "; infoStream << "texdata=" << std::setw(8) << std::hex << texmode << " "; + infoStream << "68(uvFloat)=" << std::setw(2) << std::hex << m_zeusbase[0x68] << " "; infoStream << "(6c)=" << m_zeusbase[0x6c] << " "; - infoStream << "(63)=" << std::dec << reinterpret_cast(m_zeusbase[0x63]) << " "; - infoStream << "zObj=" << std::dec << zObj << " "; - infoStream << "zMat=" << std::dec << zMat << " "; - infoStream << "zOff=" << std::dec << zOff << " "; + infoStream << "(63)=" << std::setw(6) << std::dec << reinterpret_cast(m_zeusbase[0x63]) << " "; + //infoStream << "zObj=" << std::setw(6) << std::dec << zObj << " "; + //infoStream << "zMat=" << std::setw(6) << std::dec << zMat << " "; + infoStream << "zOff=" << std::setw(6) << std::dec << zOff << " "; infoStream << "R40=" << std::setw(6) << std::hex << m_renderRegs[0x40] << " "; infoStream << "R14=" << m_renderRegs[0x14] << " "; - infoStream << "R0C=" << std::setw(3) << m_renderRegs[0x0c] << " "; - infoStream << "R0D=" << std::setw(3) << m_renderRegs[0x0d] << " "; + infoStream << "R15=" << m_renderRegs[0x15] << " "; + //infoStream << "R0A=" << std::setw(2) << m_renderRegs[0x0a] << " "; + infoStream << "R0B(LC)=" << std::setw(6) << m_renderRegs[0x0b] << " "; + infoStream << "R0C(FGD)=" << std::setw(3) << m_renderRegs[0x0c] << " "; + infoStream << "R0D(BGD)=" << std::setw(3) << m_renderRegs[0x0d] << " "; infoStr += infoStream.str(); infoStr += tex_info(); @@ -1950,7 +2079,8 @@ void zeus2_device::check_tex(uint32_t &texmode, float &zObj, float &zMat, float std::string zeus2_device::tex_info(void) { std::string retVal; - switch (zeus_texbase) { + if (m_system == CRUSNEXO) { + switch (zeus_texbase) { // crusnexo case 0x01fc00: retVal = "credits / insert coin"; break; case 0x1dc000: retVal = "copywrite text"; break; @@ -1992,8 +2122,11 @@ std::string zeus2_device::tex_info(void) case 0x00115400: retVal = "welcome to las vegas sign"; break; case 0x000f3c00: retVal = "star or headlight?"; break; case 0x00127400: retVal = "another (lod) star or headlight?"; break; - - + default: retVal = "Unknown"; break; + } + } + else if (m_system == MWSKINS) { + switch (zeus_texbase) { // mwskinsa case 0x1fdf00: retVal = "Skins Tip Box, s=256"; break; case 0x07f540: retVal = "Left main intro"; break; @@ -2014,12 +2147,13 @@ std::string zeus2_device::tex_info(void) case 0x0014b800: retVal = "silver letter O, s=64"; break; case 0x00152d80: retVal = "silver letter A, s=64"; break; case 0x0014f680: retVal = "silver letter m, s=64"; break; - case 0x00142b40: retVal = "black screen?"; break; + case 0x00142b40: retVal = "Black Screen?"; break; case 0x00004740: retVal = "picture bridge over water, s=256"; break; case 0x00005c80: retVal = "picture water shore, s=256"; break; case 0x000030c0: retVal = "left leaderboard background graphics, s=256"; break; case 0x00003c00: retVal = "right leaderboard background graphics, s=256"; break; - case 0x00040bc0: retVal = "extreme mode, s=256"; break; + case 0x00040bc0: retVal = "extreme mode, s=128, t=8alpha"; break; + case 0x001602a0: retVal = "photo black hat, sunglasses, gautee, s=64, t=8"; break; case 0x00091630: retVal = "photo wild eye guy, s=64"; break; case 0x00159d80: retVal = "white M s=32, t=4"; break; case 0x0015a080: retVal = "white 9 s=32, t=4"; break; @@ -2029,11 +2163,116 @@ std::string zeus2_device::tex_info(void) case 0x00159300: retVal = "white _ s=32, t=4"; break; case 0x00158d00: retVal = "white 1 s=32, t=4"; break; case 0x00158e80: retVal = "white 4 s=32, t=4"; break; - case 0x0001c080: retVal = "maybe checkboard"; break; - + case 0x0001c080: retVal = "scorecard background, s=256, t=8alpha"; break; + default: retVal = "Unknown"; break; + } + } + else { + switch (zeus_texbase) { // thegrid - //case 0x0001c080: retVal = "maybe checkboard"; break; + case 0x000116c8: retVal = "letter L, s=16, t=4a"; break; + case 0x00011668: retVal = "letter O, s=16, t=4a"; break; + case 0x00011828: retVal = "letter A, s=16, t=4a"; break; + case 0x000117c8: retVal = "letter D, s=16, t=4a"; break; + case 0x00011728: retVal = "letter I, s=16, t=4a"; break; + case 0x00011688: retVal = "letter N, s=16, t=4a"; break; + case 0x00011768: retVal = "letter G, s=16, t=4a"; break; + case 0x00155b40: retVal = "green 1010, s=256, t=8"; break; + case 0x0014db80: retVal = "The Grid logo, s=256, t=8alpha"; break; + case 0x0014f280: retVal = "Searching fo, s=256, t=8alpha"; break; + case 0x00150500: retVal = "or, s=64, t=8alpha"; break; + case 0x000c4400: retVal = "P, s=32, t=8alpha"; break; + case 0x000c3ba0: retVal = "U, s=32, t=8alpha"; break; + case 0x000c3c00: retVal = "S, s=32, t=8alpha"; break; + case 0x000c3c60: retVal = "H, s=32, t=8alpha"; break; + case 0x000c39c0: retVal = "T, s=32, t=8alpha"; break; + case 0x000c4c70: retVal = "A, s=32, t=8alpha"; break; + case 0x000c4070: retVal = "R, s=32, t=8alpha"; break; + case 0x000c4460: retVal = "O, s=32, t=8alpha"; break; + case 0x000c47a0: retVal = "E, s=32, t=8alpha"; break; + case 0x000c48f0: retVal = "C, s=32, t=8alpha"; break; + case 0x000c3de0: retVal = "V, s=32, t=8alpha"; break; + case 0x000c4650: retVal = "I, s=32, t=8alpha"; break; + case 0x000c3a20: retVal = "N, s=32, t=8alpha"; break; + case 0x000c4fd0: retVal = "0, s=32, t=8alpha"; break; + case 0x000c4290: retVal = "., s=32, t=8alpha"; break; + case 0x000c4f70: retVal = "2, s=32, t=8alpha"; break; + case 0x000c5030: retVal = "1, s=32, t=8alpha"; break; + case 0x000c3ec0: retVal = "/, s=32, t=8alpha"; break; + case 0x000c4df0: retVal = "6, s=32, t=8alpha"; break; + case 0x00150d00: retVal = "System 1, s=128, t=8"; break; + case 0x00151360: retVal = "System 2, s=128, t=8"; break; + case 0x001519c0: retVal = "System 3, s=128, t=8"; break; + case 0x00152020: retVal = "System 4, s=128, t=8"; break; + case 0x00152680: retVal = "System 5, s=128, t=8"; break; + case 0x00152ce0: retVal = "System 6, s=128, t=8"; break; + case 0x001509c0: retVal = "READY!, s=128, t=8alpha"; break; + case 0x000c2d10: retVal = "6, s=32, t=8alpha"; break; + case 0x000c30d0: retVal = "0, s=32, t=8alpha"; break; + case 0x000c2db0: retVal = "5, s=32, t=8alpha"; break; + case 0x000c2b30: retVal = "9, s=32, t=8alpha"; break; + case 0x000c2bd0: retVal = "8, s=32, t=8alpha"; break; + case 0x000c2c70: retVal = "7, s=32, t=8alpha"; break; + case 0x000c2e50: retVal = "4, s=32, t=8alpha"; break; + case 0x000c2ef0: retVal = "3, s=32, t=8alpha"; break; + case 0x000c2f90: retVal = "2, s=32, t=8alpha"; break; + case 0x000c3030: retVal = "1, s=32, t=8alpha"; break; + case 0x0014fb80: retVal = "Brownish circle, s=64, t=8_4x2"; break; + case 0x0014fd80: retVal = "Midsize Dark circle rainbow edge, s=256, t=8_4x2"; break; + case 0x00150580: retVal = "Dark circle rainbow edge, s=256, t=8_4x2"; break; + case 0x00012fb0: retVal = "Red dots, s=16, t=4_2x2"; break; + case 0x0013b500: retVal = "Flash with purple outer edge, s=128, t=8_alpha"; break; + case 0x001c6220: retVal = "Yellow console?, s=128, t=8_4x2"; break; + case 0x001c58e0: retVal = "White/Red Fabric?, s=128, t=8_4x2"; break; + case 0x001c8b10: retVal = "White Fabric with yellow band LOD0?, s=64, t=8_4x2"; break; + case 0x001c6880: retVal = "White Fabric with yellow band LOD1?, s=128, t=8_4x2"; break; + case 0x001c76e0: retVal = "Chiller face, s=128, t=8_4x2"; break; + case 0x0018cc80: retVal = "Green grid square 10101, s=256, t=8_4x2"; break; + case 0x00187780: retVal = "Left logo The Grid, s=256, t=8_alpha"; break; + case 0x0018a200: retVal = "Right logo the Grid, s=256, t=8_alpha"; break; + case 0x0003cc00: retVal = "CREDITS, s=256, t=8_alpha"; break; + case 0x0003e780: retVal = "INSERT COINS, s=256, t=8_alpha"; break; + case 0x0003fe00: retVal = "White 1, s=32, t=8_alpha"; break; + case 0x0003fbc0: retVal = "White 2, s=64, t=8_alpha"; break; + case 0x0003d580: retVal = "PRESS START, s=256, t=8_alpha"; break; + //case 0x00154740: retVal = "Chiller Face, s=128, t=16rgb"; break; + //case 0x00153340: retVal = "Ike Face, s=128, t=16rgb"; break; + case 0x00154740: retVal = "Just Play, s=256, t=8_4x2"; break; + case 0x00153340: retVal = "Enter Name, s=256, t=8_4x2"; break; + case 0x00130d00: retVal = "Cyrus highlight screen, s=128, t=8_4x2"; break; + case 0x00139700: retVal = "Green Welcome To, s=128, t=4_2x2"; break; + case 0x0012f300: retVal = "More people in stands, s=64, t=8_4x2"; break; + case 0x0012fd00: retVal = "Even more people in stands, s=64, t=8_4x2"; break; + case 0x0003ff20: retVal = "0, s=64, t=8_alpha"; break; + case 0x00130300: retVal = "People in stands, s=64, t=8_4x2"; break; + case 0x0007c8e0: retVal = "Greenish blob, s=64, t=8_alpha"; break; + case 0x0015c940: retVal = "Red +"; break; + case 0x0015bf40: retVal = "Blue circle with green outline"; break; + case 0x0015c740: retVal = "Radiation symbol"; break; + case 0x0015cb80: retVal = "Grey square"; break; + case 0x0015d380: retVal = "Green circle inside grey square"; break; + case 0x00159f40: retVal = "Shinny green square"; break; + case 0x001a6340: retVal = "Yellow ski tip"; break; + case 0x001a65a0: retVal = "Metal vest"; break; + case 0x001a6a00: retVal = "Head hole metal vest"; break; + case 0x001a6b70: retVal = "Yellow WES badge"; break; + case 0x001a6140: retVal = "Backwards Yellow WES badge"; break; + case 0x001a6d70: retVal = "Maybe stomach"; break; + case 0x001a6e60: retVal = "Maybe back"; break; + case 0x001a6f20: retVal = "Hand with black glove"; break; + case 0x001a7090: retVal = "Wes Face"; break; + case 0x001a72c0: retVal = "Dark red strip"; break; + case 0x001a7340: retVal = "Wes shoulder pad"; break; + case 0x001a7460: retVal = "Orange circle"; break; + case 0x001a5e20: retVal = "Wes belt"; break; + case 0x001a5f40: retVal = "Wes orange strip on side"; break; + case 0x001a7770: retVal = "Grey something"; break; + case 0x001a74e0: retVal = "Grey maybe top of boot"; break; + case 0x001a76e0: retVal = "Grey hexagon"; break; + case 0x001a7800: retVal = "Belt pouches"; break; + case 0x0015a340: retVal = "Green shinny block"; break; default: retVal = "Unknown"; break; + } } return retVal; } diff --git a/src/devices/video/zeus2.h b/src/devices/video/zeus2.h index ed2ae71ba4d..2998d6378d3 100644 --- a/src/devices/video/zeus2.h +++ b/src/devices/video/zeus2.h @@ -5,15 +5,15 @@ Midway Zeus2 Video **************************************************************************/ -#ifndef __ZEUS2_H__ -#define __ZEUS2_H__ +#ifndef MAME_VIDEO_ZEUS2_H +#define MAME_VIDEO_ZEUS2_H + +#pragma once #include "video/poly.h" #include "video/rgbutil.h" #include "cpu/tms32031/tms32031.h" -#pragma once - /************************************* * Constants *************************************/ @@ -38,17 +38,25 @@ struct zeus2_poly_extra_data const void * palbase; const void * texbase; uint16_t solidcolor; - int32_t zbufmin; uint16_t transcolor; uint16_t texwidth; uint16_t color; - uint32_t alpha; + uint32_t srcAlpha; + uint32_t dstAlpha; uint32_t ctrl_word; + uint32_t ucode_src; + uint32_t tex_src; + bool texture_alpha; + bool texture_rgb555; bool blend_enable; + int32_t zbuf_min; bool depth_min_enable; bool depth_test_enable; bool depth_write_enable; + bool depth_clear_enable; + uint8_t(*get_texel)(const void *, int, int, int); + uint8_t(*get_alpha)(const void *, int, int, int); }; /************************************* @@ -115,8 +123,8 @@ public: TIMER_CALLBACK_MEMBER(display_irq_off); TIMER_CALLBACK_MEMBER(display_irq); - template static devcb_base &set_vblank_callback(device_t &device, _Object object) { return downcast(device).m_vblank.set_callback(object); } - template static devcb_base &set_irq_callback(device_t &device, _Object object) { return downcast(device).m_irq.set_callback(object); } + template static devcb_base &set_vblank_callback(device_t &device, Object &&cb) { return downcast(device).m_vblank.set_callback(std::forward(cb)); } + template static devcb_base &set_irq_callback(device_t &device, Object &&cb) { return downcast(device).m_irq.set_callback(std::forward(cb)); } devcb_write_line m_vblank; devcb_write_line m_irq; @@ -131,20 +139,21 @@ public: rectangle zeus_cliprect; int m_palSize; - int m_zbufmin; float zeus_matrix[3][3]; - float zeus_point[3]; - float zeus_point2[3]; + float zeus_trans[4]; + float zeus_light[3]; uint32_t zeus_texbase; int zeus_quad_size; + bool m_useZOffset; uint32_t *waveram; std::unique_ptr m_frameColor; - std::unique_ptr m_frameDepth; + std::unique_ptr m_frameDepth; uint32_t m_pal_table[0x100]; uint32_t m_ucode[0x200]; uint32_t m_curUCodeSrc; uint32_t m_curPalTableSrc; + uint32_t m_texmodeReg; emu_timer *int_timer; emu_timer *vblank_timer; @@ -187,7 +196,7 @@ private: uint8_t zeus_fifo_words; uint32_t m_fill_color; - uint32_t m_fill_depth; + int32_t m_fill_depth; int m_yScale; @@ -225,8 +234,18 @@ public: inline uint32_t frame_addr_from_xy(uint32_t x, uint32_t y, bool render) { - uint32_t addr = render ? frame_addr_from_phys_addr(m_renderRegs[0x4] << (15 + m_yScale)) - : frame_addr_from_phys_addr((m_zeusbase[0x38] >> 1) << (m_yScale << 1)); + uint32_t addr; + if (render) { + // Rendering is y location + addr = m_renderRegs[0x4] << (9 + m_yScale); + } + else { + // y.16:x.16 row/col + // Ignore col for now + addr = m_zeusbase[0x38] >> (16 - 9 - 2 * m_yScale); + } + //uint32_t addr = render ? frame_addr_from_phys_addr(m_renderRegs[0x4] << (15 + m_yScale)) + // : frame_addr_from_phys_addr((m_zeusbase[0x38] >> 1) << (m_yScale << 1)); addr += (y << (9 + m_yScale)) + x; return addr; } @@ -311,7 +330,14 @@ public: { return ((color & 0x7c00) << 9) | ((color & 0x3e0) << 6) | ((color & 0x8000) >> 5) | ((color & 0x1f) << 3); } - + inline uint32_t conv_rgb332_to_rgb32(uint8_t color) + { + uint32_t result; + result = ((((color) >> 0) & 0xe0) | (((color) >> 3) & 0x1c) | (((color) >> 6) & 0x03)) << 16; + result |= ((((color) << 3) & 0xe0) | (((color) >> 0) & 0x1c) | (((color) >> 3) & 0x03)) << 8; + result |= ((((color) << 6) & 0xc0) | (((color) << 4) & 0x30) | (((color) << 2) & 0x0c) | (((color) << 0) & 0x03)) << 0; + return result; + } #ifdef UNUSED_FUNCTION inline void WAVERAM_plot(int y, int x, uint32_t color) { @@ -361,34 +387,57 @@ public: * Inlines for texel accesses *************************************/ // 4x2 block size - static inline uint8_t get_texel_4bit(const void *base, int y, int x, int width) + static inline uint8_t get_texel_4bit_4x2(const void *base, int y, int x, int width) { uint32_t byteoffs = (y / 2) * (width * 2) + ((x / 8) << 3) + ((y & 1) << 2) + ((x / 2) & 3); return (WAVERAM_READ8(base, byteoffs) >> (4 * (x & 1))) & 0x0f; } - static inline uint8_t get_texel_8bit(const void *base, int y, int x, int width) + static inline uint8_t get_texel_8bit_4x2(const void *base, int y, int x, int width) { uint32_t byteoffs = (y / 2) * (width * 2) + ((x / 4) << 3) + ((y & 1) << 2) + (x & 3); return WAVERAM_READ8(base, byteoffs); } - // 2x2 block size - static inline uint8_t get_texel_alt_4bit(const void *base, int y, int x, int width) + // 2x2 block size within 32 bits, 2 2x2 blocks stacked in y in 64 bits + static inline uint8_t get_texel_4bit_2x2(const void *base, int y, int x, int width) { uint32_t byteoffs = (y / 4) * (width * 4) + ((x / 4) << 3) + ((y & 3) << 1) + ((x / 2) & 1); return (WAVERAM_READ8(base, byteoffs) >> (4 * (x & 1))) & 0x0f; } - static inline uint8_t get_texel_alt_8bit(const void *base, int y, int x, int width) + static inline uint8_t get_texel_8bit_2x2(const void *base, int y, int x, int width) { uint32_t byteoffs = (y / 4) * (width * 4) + ((x / 2) << 3) + ((y & 3) << 1) + (x & 1); return WAVERAM_READ8(base, byteoffs); } + // 2x2 block size of texel, alpha in 64 bits + // 8 Bit texel, 8 bit alpha + static inline uint8_t get_texel_8bit_2x2_alpha(const void *base, int y, int x, int width) + { + uint32_t byteoffs = (y / 2) * (width * 2) + ((x / 2) << 2) + ((y & 1) << 1) + (x & 1); + // Only grab RGB value for now + byteoffs <<= 1; + return WAVERAM_READ8(base, byteoffs + 0); + } + static inline uint8_t get_alpha_8bit_2x2_alpha(const void *base, int y, int x, int width) + { + uint32_t byteoffs = (y / 2) * (width * 2) + ((x / 2) << 2) + ((y & 1) << 1) + (x & 1); + // Only grab Alpha value for now + byteoffs <<= 1; + return WAVERAM_READ8(base, byteoffs + 1); + } + // 2x2 block size of r5g5r5 in 64 bits + static inline uint32_t get_rgb555(const void *base, int y, int x, int width) + { + uint32_t wordoffs = (y / 2) * (width * 2) + ((x / 2) << 2) + ((y & 1) << 1) + (x & 1); + uint16_t color = WAVERAM_READ16(base, wordoffs); + return ((color & 0x7c00) << 9) | ((color & 0x3e0) << 6) | ((color & 0x1f) << 3); + } }; // device type definition -extern const device_type ZEUS2; +DECLARE_DEVICE_TYPE(ZEUS2, zeus2_device) -#endif +#endif // MAME_VIDEO_ZEUS2 diff --git a/src/emu/addrmap.cpp b/src/emu/addrmap.cpp index 5b12f139026..d6ec2a134f7 100644 --- a/src/emu/addrmap.cpp +++ b/src/emu/addrmap.cpp @@ -274,29 +274,66 @@ address_map_entry &address_map_entry::set_handler(setoffset_delegate func) // provided unitmask is valid and expected //------------------------------------------------- -bool address_map_entry::unitmask_is_appropriate(u8 width, u64 unitmask, const char *string) +bool address_map_entry::unitmask_is_appropriate(u8 width, u64 unitmask, const char *string) const { // if no mask, this must match the default width of the map if (unitmask == 0) { if (m_map.m_databits != width) - throw emu_fatalerror("Handler %s is a %d-bit handler but was specified in a %d-bit address map", string, width, m_map.m_databits); + { + osd_printf_error("Handler %s is a %d-bit handler but was specified in a %d-bit address map\n", string, width, m_map.m_databits); + return false; + } return true; } // if we have a mask, we must be smaller than the default width of the map if (m_map.m_databits < width) - throw emu_fatalerror("Handler %s is a %d-bit handler and is too wide to be used in a %d-bit address map", string, width, m_map.m_databits); + { + osd_printf_error("Handler %s is a %d-bit handler and is too wide to be used in a %d-bit address map\n", string, width, m_map.m_databits); + return false; + } + + // if map is narrower than 64 bits, check the mask width as well + if (m_map.m_databits < 64 && (unitmask >> m_map.m_databits) != 0) + { + osd_printf_error("Handler %s specified a mask of %08X%08X, too wide to be used in a %d-bit address map\n", string, (u32)(unitmask >> 32), (u32)unitmask, m_map.m_databits); + return false; + } // the mask must represent whole units of width u32 basemask = (width == 8) ? 0xff : (width == 16) ? 0xffff : 0xffffffff; u64 singlemask = basemask; + int count = 0; while (singlemask != 0) { - if ((unitmask & singlemask) != 0 && (unitmask & singlemask) != singlemask) - throw emu_fatalerror("Handler %s specified a mask of %08X%08X; needs to be in even chunks of %X", string, (u32)(unitmask >> 32), (u32)unitmask, basemask); + if ((unitmask & singlemask) == singlemask) + count++; + else if ((unitmask & singlemask) != 0) + { + osd_printf_error("Handler %s specified a mask of %08X%08X; needs to be in even chunks of %X\n", string, (u32)(unitmask >> 32), (u32)unitmask, basemask); + return false; + } singlemask <<= width; } + +#if 0 + // the mask must be symmetrical + u64 unitmask_bh = unitmask >> 8 & 0x00ff00ff00ff00ffU; + u64 unitmask_bl = unitmask & 0x00ff00ff00ff00ffU; + u64 unitmask_wh = unitmask >> 16 & 0x0000ffff0000ffffU; + u64 unitmask_wl = unitmask & 0x0000ffff0000ffffU; + u64 unitmask_dh = unitmask >> 32 & 0x00000000ffffffffU; + u64 unitmask_dl = unitmask & 0x00000000ffffffffU; + if ((unitmask_bh != 0 && unitmask_bl != 0 && unitmask_bh != unitmask_bl) + || (unitmask_wh != 0 && unitmask_wl != 0 && unitmask_wh != unitmask_wl) + || (unitmask_dh != 0 && unitmask_dl != 0 && unitmask_dh != unitmask_dl)) + { + osd_printf_error("Handler %s specified an asymmetrical mask of %08X%08X\n", string, (u32)(unitmask >> 32), (u32)unitmask); + return false; + } +#endif + return true; } @@ -707,6 +744,9 @@ void address_map::map_validity_check(validity_checker &valid, address_spacenum s if (entry.m_devbase.subdevice(devtag) == nullptr) osd_printf_error("%s space memory map entry reads from nonexistent device '%s'\n", spaceconfig.m_name, devtag != nullptr ? devtag : ""); +#ifndef MAME_DEBUG // assert will catch this earlier + (void)entry.unitmask_is_appropriate(entry.m_read.m_bits, entry.m_read.m_mask, entry.m_read.m_name); +#endif } if (entry.m_write.m_type == AMH_DEVICE_DELEGATE) { @@ -722,6 +762,9 @@ void address_map::map_validity_check(validity_checker &valid, address_spacenum s if (entry.m_devbase.subdevice(devtag) == nullptr) osd_printf_error("%s space memory map entry writes to nonexistent device '%s'\n", spaceconfig.m_name, devtag != nullptr ? devtag : ""); +#ifndef MAME_DEBUG // assert will catch this earlier + (void)entry.unitmask_is_appropriate(entry.m_write.m_bits, entry.m_write.m_mask, entry.m_write.m_name); +#endif } if (entry.m_setoffsethd.m_type == AMH_DEVICE_DELEGATE) { diff --git a/src/emu/addrmap.h b/src/emu/addrmap.h index ac6736c6b51..d7a2144bd25 100644 --- a/src/emu/addrmap.h +++ b/src/emu/addrmap.h @@ -72,6 +72,8 @@ public: // address_map_entry is a linked list element describing one address range in a map class address_map_entry { + friend class address_map; + public: // construction/destruction address_map_entry(device_t &device, address_map &map, offs_t start, offs_t end); @@ -183,7 +185,7 @@ public: private: // helper functions - bool unitmask_is_appropriate(u8 width, u64 unitmask, const char *string); + bool unitmask_is_appropriate(u8 width, u64 unitmask, const char *string) const; }; // ======================> address_map diff --git a/src/emu/config.cpp b/src/emu/config.cpp index fb1204fd622..6c6b4c93578 100644 --- a/src/emu/config.cpp +++ b/src/emu/config.cpp @@ -149,13 +149,13 @@ int configuration_manager::load_xml(emu_file &file, config_type which_type) return 0; /* strip off all the path crap from the source filename */ - const char *srcfile = strrchr(machine().system().source_file, '/'); + const char *srcfile = strrchr(machine().system().type.source(), '/'); if (!srcfile) - srcfile = strrchr(machine().system().source_file, '\\'); + srcfile = strrchr(machine().system().type.source(), '\\'); if (!srcfile) - srcfile = strrchr(machine().system().source_file, ':'); + srcfile = strrchr(machine().system().type.source(), ':'); if (!srcfile) - srcfile = machine().system().source_file; + srcfile = machine().system().type.source(); else srcfile++; diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp index 426d5a86670..843b8e383dc 100644 --- a/src/emu/debug/debugcmd.cpp +++ b/src/emu/debug/debugcmd.cpp @@ -2460,29 +2460,36 @@ void debugger_commands::execute_dasm(int ref, const std::vector &pa tempaddr = pcbyte; if (space->device().memory().translate(space->spacenum(), TRANSLATE_FETCH_DEBUG, tempaddr)) { - u8 opbuf[64], argbuf[64]; - - /* fetch the bytes up to the maximum */ - for (numbytes = 0; numbytes < maxbytes; numbytes++) { - opbuf[numbytes] = m_cpu.read_opcode(*decrypted_space, pcbyte + numbytes, 1); - argbuf[numbytes] = m_cpu.read_opcode(*space, pcbyte + numbytes, 1); + u8 opbuf[64], argbuf[64]; + + /* fetch the bytes up to the maximum */ + for (numbytes = 0; numbytes < maxbytes; numbytes++) + { + opbuf[numbytes] = m_cpu.read_opcode(*decrypted_space, pcbyte + numbytes, 1); + argbuf[numbytes] = m_cpu.read_opcode(*space, pcbyte + numbytes, 1); + } + + /* disassemble the result */ + i += numbytes = dasmintf->disassemble(disasm, offset + i, opbuf, argbuf) & DASMFLAG_LENGTHMASK; } - /* disassemble the result */ - i += numbytes = dasmintf->disassemble(disasm, offset + i, opbuf, argbuf) & DASMFLAG_LENGTHMASK; + /* print the bytes */ + if (bytes) + { + auto const startdex = output.tellp(); + numbytes = space->address_to_byte(numbytes); + for (j = 0; j < numbytes; j += minbytes) + stream_format(output, "%0*X ", minbytes * 2, m_cpu.read_opcode(*decrypted_space, pcbyte + j, minbytes)); + if ((output.tellp() - startdex) < byteswidth) + stream_format(output, "%*s", byteswidth - (output.tellp() - startdex), ""); + stream_format(output, " "); + } } - - /* print the bytes */ - if (bytes) + else { - auto const startdex = output.tellp(); - numbytes = space->address_to_byte(numbytes); - for (j = 0; j < numbytes; j += minbytes) - stream_format(output, "%0*X ", minbytes * 2, m_cpu.read_opcode(*decrypted_space, pcbyte + j, minbytes)); - if ((output.tellp() - startdex) < byteswidth) - stream_format(output, "%*s", byteswidth - (output.tellp() - startdex), ""); - stream_format(output, " "); + disasm << ""; + i += minbytes; } /* add the disassembly */ @@ -2924,8 +2931,7 @@ void debugger_commands::execute_symlist(int ref, const std::vector symbol_table *symtable; int symnum, count = 0; - - if (!params[0].empty()) + if (!params.empty()) { /* validate parameters */ if (!validate_cpu_parameter(params[0].c_str(), cpu)) diff --git a/src/emu/debug/debugcon.cpp b/src/emu/debug/debugcon.cpp index 1a35ba3f61d..f8f0832d102 100644 --- a/src/emu/debug/debugcon.cpp +++ b/src/emu/debug/debugcon.cpp @@ -49,7 +49,7 @@ debugger_console::debugger_console(running_machine &machine) /* print the opening lines */ printf("%s debugger version %s\n", emulator_info::get_appname(), emulator_info::get_build_version()); - printf("Currently targeting %s (%s)\n", m_machine.system().name, m_machine.system().description); + printf("Currently targeting %s (%s)\n", m_machine.system().name, m_machine.system().type.fullname()); /* request callback upon exiting */ m_machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(&debugger_console::exit, this)); diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp index 957834ec831..3fb5c2421ae 100644 --- a/src/emu/debug/debugcpu.cpp +++ b/src/emu/debug/debugcpu.cpp @@ -929,7 +929,7 @@ device_t* debugger_cpu::expression_get_device(const char *tag) space -------------------------------------------------*/ -u64 debugger_cpu::expression_read_memory(void *param, const char *name, expression_space spacenum, u32 address, int size, bool with_se) +u64 debugger_cpu::expression_read_memory(void *param, const char *name, expression_space spacenum, u32 address, int size, bool disable_se) { switch (spacenum) { @@ -951,11 +951,8 @@ u64 debugger_cpu::expression_read_memory(void *param, const char *name, expressi if (memory->has_space(AS_PROGRAM + (spacenum - EXPSPACE_PROGRAM_LOGICAL))) { address_space &space = memory->space(AS_PROGRAM + (spacenum - EXPSPACE_PROGRAM_LOGICAL)); - if (!with_se) { - auto dis = m_machine.disable_side_effect(); - return read_memory(space, space.address_to_byte(address), size, true); - } else - return read_memory(space, space.address_to_byte(address), size, true); + auto dis = m_machine.disable_side_effect(disable_se); + return read_memory(space, space.address_to_byte(address), size, true); } break; } @@ -978,16 +975,12 @@ u64 debugger_cpu::expression_read_memory(void *param, const char *name, expressi if (memory->has_space(AS_PROGRAM + (spacenum - EXPSPACE_PROGRAM_PHYSICAL))) { address_space &space = memory->space(AS_PROGRAM + (spacenum - EXPSPACE_PROGRAM_PHYSICAL)); - if (!with_se) { - auto dis = m_machine.disable_side_effect(); - return read_memory(space, space.address_to_byte(address), size, false); - } else - return read_memory(space, space.address_to_byte(address), size, false); + auto dis = m_machine.disable_side_effect(disable_se); + return read_memory(space, space.address_to_byte(address), size, false); } break; } - case EXPSPACE_OPCODE: case EXPSPACE_RAMWRITE: { device_t *device = nullptr; @@ -1000,11 +993,25 @@ u64 debugger_cpu::expression_read_memory(void *param, const char *name, expressi device = get_visible_cpu(); memory = &device->memory(); } - if (!with_se) { - auto dis = m_machine.disable_side_effect(); - return expression_read_program_direct(memory->space(AS_PROGRAM), (spacenum == EXPSPACE_OPCODE), address, size); - } else - return expression_read_program_direct(memory->space(AS_PROGRAM), (spacenum == EXPSPACE_OPCODE), address, size); + auto dis = m_machine.disable_side_effect(disable_se); + return expression_read_program_direct(memory->space(AS_PROGRAM), (spacenum == EXPSPACE_OPCODE), address, size); + break; + } + + case EXPSPACE_OPCODE: + { + device_t *device = nullptr; + device_memory_interface *memory; + + if (name != nullptr) + device = expression_get_device(name); + if (device == nullptr || !device->interface(memory)) + { + device = get_visible_cpu(); + memory = &device->memory(); + } + auto dis = m_machine.disable_side_effect(disable_se); + return expression_read_program_direct(memory->space(AS_DECRYPTED_OPCODES), (spacenum == EXPSPACE_OPCODE), address, size); break; } @@ -1128,7 +1135,7 @@ u64 debugger_cpu::expression_read_memory_region(const char *rgntag, offs_t addre space -------------------------------------------------*/ -void debugger_cpu::expression_write_memory(void *param, const char *name, expression_space spacenum, u32 address, int size, u64 data, bool with_se) +void debugger_cpu::expression_write_memory(void *param, const char *name, expression_space spacenum, u32 address, int size, u64 data, bool disable_se) { device_t *device = nullptr; device_memory_interface *memory; @@ -1149,11 +1156,8 @@ void debugger_cpu::expression_write_memory(void *param, const char *name, expres if (memory->has_space(AS_PROGRAM + (spacenum - EXPSPACE_PROGRAM_LOGICAL))) { address_space &space = memory->space(AS_PROGRAM + (spacenum - EXPSPACE_PROGRAM_LOGICAL)); - if (!with_se) { - auto dis = m_machine.disable_side_effect(); - write_memory(space, space.address_to_byte(address), data, size, true); - } else - write_memory(space, space.address_to_byte(address), data, size, true); + auto dis = m_machine.disable_side_effect(disable_se); + write_memory(space, space.address_to_byte(address), data, size, true); } break; @@ -1171,16 +1175,12 @@ void debugger_cpu::expression_write_memory(void *param, const char *name, expres if (memory->has_space(AS_PROGRAM + (spacenum - EXPSPACE_PROGRAM_PHYSICAL))) { address_space &space = memory->space(AS_PROGRAM + (spacenum - EXPSPACE_PROGRAM_PHYSICAL)); - if (!with_se) { - auto dis = m_machine.disable_side_effect(); - write_memory(space, space.address_to_byte(address), data, size, false); - } else - write_memory(space, space.address_to_byte(address), data, size, false); + auto dis = m_machine.disable_side_effect(disable_se); + write_memory(space, space.address_to_byte(address), data, size, false); } break; - case EXPSPACE_OPCODE: - case EXPSPACE_RAMWRITE: + case EXPSPACE_RAMWRITE: { if (name != nullptr) device = expression_get_device(name); if (device == nullptr || !device->interface(memory)) @@ -1188,12 +1188,23 @@ void debugger_cpu::expression_write_memory(void *param, const char *name, expres device = get_visible_cpu(); memory = &device->memory(); } - if (!with_se) { - auto dis = m_machine.disable_side_effect(); - expression_write_program_direct(memory->space(AS_PROGRAM), (spacenum == EXPSPACE_OPCODE), address, size, data); - } else - expression_write_program_direct(memory->space(AS_PROGRAM), (spacenum == EXPSPACE_OPCODE), address, size, data); + auto dis = m_machine.disable_side_effect(disable_se); + expression_write_program_direct(memory->space(AS_PROGRAM), (spacenum == EXPSPACE_OPCODE), address, size, data); break; + } + + case EXPSPACE_OPCODE: { + if (name != nullptr) + device = expression_get_device(name); + if (device == nullptr || !device->interface(memory)) + { + device = get_visible_cpu(); + memory = &device->memory(); + } + auto dis = m_machine.disable_side_effect(disable_se); + expression_write_program_direct(memory->space(AS_DECRYPTED_OPCODES), (spacenum == EXPSPACE_OPCODE), address, size, data); + break; + } case EXPSPACE_REGION: if (name == nullptr) @@ -1367,7 +1378,6 @@ expression_error::error_code debugger_cpu::expression_validate(void *param, cons return expression_error::NO_SUCH_MEMORY_SPACE; break; - case EXPSPACE_OPCODE: case EXPSPACE_RAMWRITE: if (name) { @@ -1381,6 +1391,19 @@ expression_error::error_code debugger_cpu::expression_validate(void *param, cons return expression_error::NO_SUCH_MEMORY_SPACE; break; + case EXPSPACE_OPCODE: + if (name) + { + device = expression_get_device(name); + if (device == nullptr || !device->interface(memory)) + return expression_error::INVALID_MEMORY_NAME; + } + if (!device) + device = get_visible_cpu(); + if (!device->interface(memory) || !memory->has_space(AS_DECRYPTED_OPCODES)) + return expression_error::NO_SUCH_MEMORY_SPACE; + break; + case EXPSPACE_REGION: if (!name) return expression_error::MISSING_MEMORY_NAME; @@ -3318,7 +3341,14 @@ void device_debug::tracer::update(offs_t pc) // print the address std::string buffer; int logaddrchars = m_debug.logaddrchars(); - buffer = string_format("%0*X: ", logaddrchars, pc); + if (m_debug.is_octal()) + { + buffer = string_format("%0*o: ", logaddrchars*3/2, pc); + } + else + { + buffer = string_format("%0*X: ", logaddrchars, pc); + } // print the disassembly std::string dasm; diff --git a/src/emu/debug/debugcpu.h b/src/emu/debug/debugcpu.h index 5afb6fbceec..9cd130db122 100644 --- a/src/emu/debug/debugcpu.h +++ b/src/emu/debug/debugcpu.h @@ -171,6 +171,7 @@ public: // commonly-used pass-throughs int logaddrchars() const { return (m_memory != nullptr && m_memory->has_space(AS_PROGRAM)) ? m_memory->space(AS_PROGRAM).logaddrchars() : 8; } + bool is_octal() const { return (m_memory != nullptr && m_memory->has_space(AS_PROGRAM)) ? m_memory->space(AS_PROGRAM).is_octal() : false; } device_t& device() const { return m_device; } // hooks used by the rest of the system @@ -577,10 +578,10 @@ private: static const size_t NUM_TEMP_VARIABLES; /* expression handlers */ - u64 expression_read_memory(void *param, const char *name, expression_space space, u32 address, int size, bool with_se); + u64 expression_read_memory(void *param, const char *name, expression_space space, u32 address, int size, bool disable_se); u64 expression_read_program_direct(address_space &space, int opcode, offs_t address, int size); u64 expression_read_memory_region(const char *rgntag, offs_t address, int size); - void expression_write_memory(void *param, const char *name, expression_space space, u32 address, int size, u64 data, bool with_se); + void expression_write_memory(void *param, const char *name, expression_space space, u32 address, int size, u64 data, bool disable_se); void expression_write_program_direct(address_space &space, int opcode, offs_t address, int size, u64 data); void expression_write_memory_region(const char *rgntag, offs_t address, int size, u64 data); expression_error::error_code expression_validate(void *param, const char *name, expression_space space); diff --git a/src/emu/debug/dvdisasm.cpp b/src/emu/debug/dvdisasm.cpp index c670fb7f47a..9c46010985b 100644 --- a/src/emu/debug/dvdisasm.cpp +++ b/src/emu/debug/dvdisasm.cpp @@ -229,6 +229,7 @@ void debug_view_disasm::view_click(const int button, const debug_view_xy& pos) offs_t debug_view_disasm::find_pc_backwards(offs_t targetpc, int numinstrs) { + auto dis = machine().disable_side_effect(); const debug_view_disasm_source &source = downcast(*m_source); // compute the increment diff --git a/src/emu/debug/express.cpp b/src/emu/debug/express.cpp index 41d75825a6a..9661d80a35a 100644 --- a/src/emu/debug/express.cpp +++ b/src/emu/debug/express.cpp @@ -517,7 +517,7 @@ expression_error::error_code symbol_table::memory_valid(const char *name, expres // memory_value - return a value read from memory //------------------------------------------------- -u64 symbol_table::memory_value(const char *name, expression_space space, u32 offset, int size, bool with_se) +u64 symbol_table::memory_value(const char *name, expression_space space, u32 offset, int size, bool disable_se) { // walk up the table hierarchy to find the owner for (symbol_table *symtable = this; symtable != nullptr; symtable = symtable->m_parent) @@ -525,7 +525,7 @@ u64 symbol_table::memory_value(const char *name, expression_space space, u32 off { expression_error::error_code err = symtable->m_memory_valid(symtable->m_memory_param, name, space); if (err != expression_error::NO_SUCH_MEMORY_SPACE && symtable->m_memory_read != nullptr) - return symtable->m_memory_read(symtable->m_memory_param, name, space, offset, size, with_se); + return symtable->m_memory_read(symtable->m_memory_param, name, space, offset, size, disable_se); return 0; } return 0; @@ -536,7 +536,7 @@ u64 symbol_table::memory_value(const char *name, expression_space space, u32 off // set_memory_value - write a value to memory //------------------------------------------------- -void symbol_table::set_memory_value(const char *name, expression_space space, u32 offset, int size, u64 value, bool with_se) +void symbol_table::set_memory_value(const char *name, expression_space space, u32 offset, int size, u64 value, bool disable_se) { // walk up the table hierarchy to find the owner for (symbol_table *symtable = this; symtable != nullptr; symtable = symtable->m_parent) @@ -544,7 +544,7 @@ void symbol_table::set_memory_value(const char *name, expression_space space, u3 { expression_error::error_code err = symtable->m_memory_valid(symtable->m_memory_param, name, space); if (err != expression_error::NO_SUCH_MEMORY_SPACE && symtable->m_memory_write != nullptr) - symtable->m_memory_write(symtable->m_memory_param, name, space, offset, size, value, with_se); + symtable->m_memory_write(symtable->m_memory_param, name, space, offset, size, value, disable_se); return; } } @@ -873,12 +873,17 @@ void parsed_expression::parse_symbol_or_number(parse_token &token, const char *& string++; } - // check for memory @ operators + // check for memory @ and ! operators if (string[0] == '@' || string[0] == '!') { - bool with_se = string[0] == '!'; - string += 1; - return parse_memory_operator(token, buffer.c_str(), with_se); + try { + bool disable_se = string[0] == '@'; + parse_memory_operator(token, buffer.c_str(), disable_se); + string += 1; + return; + } catch(const expression_error &) { + // Try some other operator instead + } } // empty string is automatically invalid @@ -1098,7 +1103,7 @@ void parsed_expression::parse_quoted_string(parse_token &token, const char *&str // forms of memory operators //------------------------------------------------- -void parsed_expression::parse_memory_operator(parse_token &token, const char *string, bool with_se) +void parsed_expression::parse_memory_operator(parse_token &token, const char *string, bool disable_se) { // if there is a '.', it means we have a name const char *startstring = string; @@ -1175,7 +1180,7 @@ void parsed_expression::parse_memory_operator(parse_token &token, const char *st } // configure the token - token.configure_operator(TVL_MEMORYAT, 2).set_memory_size(memsize).set_memory_space(memspace).set_memory_source(namestring).set_memory_side_effect(with_se); + token.configure_operator(TVL_MEMORYAT, 2).set_memory_size(memsize).set_memory_space(memspace).set_memory_source(namestring).set_memory_side_effect(disable_se); } diff --git a/src/emu/debug/express.h b/src/emu/debug/express.h index 6efa38fb032..602670cbe07 100644 --- a/src/emu/debug/express.h +++ b/src/emu/debug/express.h @@ -161,8 +161,8 @@ public: // callback functions for memory reads/writes typedef std::function valid_func; - typedef std::function read_func; - typedef std::function write_func; + typedef std::function read_func; + typedef std::function write_func; enum read_write { @@ -195,8 +195,8 @@ public: // memory accessors expression_error::error_code memory_valid(const char *name, expression_space space); - u64 memory_value(const char *name, expression_space space, u32 offset, int size, bool with_se); - void set_memory_value(const char *name, expression_space space, u32 offset, int size, u64 value, bool with_se); + u64 memory_value(const char *name, expression_space space, u32 offset, int size, bool disable_se); + void set_memory_value(const char *name, expression_space space, u32 offset, int size, u64 value, bool disable_se); private: // internal state @@ -314,7 +314,7 @@ private: parse_token &set_right_to_left() { assert(m_type == OPERATOR); m_flags |= TIN_RIGHT_TO_LEFT_MASK; return *this; } parse_token &set_memory_space(expression_space space) { assert(m_type == OPERATOR || m_type == MEMORY); m_flags = (m_flags & ~TIN_MEMORY_SPACE_MASK) | ((space << TIN_MEMORY_SPACE_SHIFT) & TIN_MEMORY_SPACE_MASK); return *this; } parse_token &set_memory_size(int log2ofbits) { assert(m_type == OPERATOR || m_type == MEMORY); m_flags = (m_flags & ~TIN_MEMORY_SIZE_MASK) | ((log2ofbits << TIN_MEMORY_SIZE_SHIFT) & TIN_MEMORY_SIZE_MASK); return *this; } - parse_token &set_memory_side_effect(bool with_se) { assert(m_type == OPERATOR || m_type == MEMORY); m_flags = with_se ? m_flags | TIN_SIDE_EFFECT_MASK : m_flags & ~TIN_SIDE_EFFECT_MASK; return *this; } + parse_token &set_memory_side_effect(bool disable_se) { assert(m_type == OPERATOR || m_type == MEMORY); m_flags = disable_se ? m_flags | TIN_SIDE_EFFECT_MASK : m_flags & ~TIN_SIDE_EFFECT_MASK; return *this; } parse_token &set_memory_source(const char *string) { assert(m_type == OPERATOR || m_type == MEMORY); m_string = string; return *this; } // access @@ -363,7 +363,7 @@ private: void parse_number(parse_token &token, const char *string, int base, expression_error::error_code errcode); void parse_quoted_char(parse_token &token, const char *&string); void parse_quoted_string(parse_token &token, const char *&string); - void parse_memory_operator(parse_token &token, const char *string, bool with_se); + void parse_memory_operator(parse_token &token, const char *string, bool disable_se); void normalize_operator(parse_token *prevtoken, parse_token &thistoken); void infix_to_postfix(); diff --git a/src/emu/devcpu.cpp b/src/emu/devcpu.cpp index f07c8b4a885..dccde97c14c 100644 --- a/src/emu/devcpu.cpp +++ b/src/emu/devcpu.cpp @@ -21,8 +21,8 @@ // cpu_device - constructor //------------------------------------------------- -cpu_device::cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +cpu_device::cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, type, tag, owner, clock), device_execute_interface(mconfig, *this), device_memory_interface(mconfig, *this), device_state_interface(mconfig, *this), diff --git a/src/emu/devcpu.h b/src/emu/devcpu.h index ca1904a1d0a..1c4bce13506 100644 --- a/src/emu/devcpu.h +++ b/src/emu/devcpu.h @@ -77,7 +77,7 @@ public: protected: // construction/destruction - cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source); + cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); virtual ~cpu_device(); private: diff --git a/src/emu/device.cpp b/src/emu/device.cpp index 6a137e475a8..3c301a5800b 100644 --- a/src/emu/device.cpp +++ b/src/emu/device.cpp @@ -81,31 +81,28 @@ emu::detail::device_registrar const registered_device_types; // from the provided config //------------------------------------------------- -device_t::device_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source) - : m_type(type), - m_name(name), - m_shortname(shortname), - m_searchpath(shortname), - m_source(source), - m_owner(owner), - m_next(nullptr), - - m_configured_clock(clock), - m_unscaled_clock(clock), - m_clock(clock), - m_clock_scale(1.0), - m_attoseconds_per_clock((clock == 0) ? 0 : HZ_TO_ATTOSECONDS(clock)), - - m_machine_config(mconfig), - m_input_defaults(nullptr), - m_default_bios_tag(""), - - m_machine(nullptr), - m_save(nullptr), - m_basetag(tag), - m_config_complete(false), - m_started(false), - m_auto_finder_list(nullptr) +device_t::device_t(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) + : m_type(type) + , m_searchpath(type.shortname()) + , m_owner(owner) + , m_next(nullptr) + + , m_configured_clock(clock) + , m_unscaled_clock(clock) + , m_clock(clock) + , m_clock_scale(1.0) + , m_attoseconds_per_clock((clock == 0) ? 0 : HZ_TO_ATTOSECONDS(clock)) + + , m_machine_config(mconfig) + , m_input_defaults(nullptr) + , m_default_bios_tag("") + + , m_machine(nullptr) + , m_save(nullptr) + , m_basetag(tag) + , m_config_complete(false) + , m_started(false) + , m_auto_finder_list(nullptr) { if (owner != nullptr) m_tag.assign((owner->owner() == nullptr) ? "" : owner->tag()).append(":").append(tag); @@ -217,15 +214,13 @@ std::string device_t::parameter(const char *tag) const void device_t::static_set_clock(device_t &device, u32 clock) { + device.m_configured_clock = clock; + // derive the clock from our owner if requested if ((clock & 0xff000000) == 0xff000000) - { - assert(device.m_owner != nullptr); - clock = device.m_owner->m_configured_clock * ((clock >> 12) & 0xfff) / ((clock >> 0) & 0xfff); - } - - device.m_clock = device.m_unscaled_clock = device.m_configured_clock = clock; - device.m_attoseconds_per_clock = (clock == 0) ? 0 : HZ_TO_ATTOSECONDS(clock); + device.calculate_derived_clock(); + else + device.set_unscaled_clock(clock); } @@ -297,10 +292,21 @@ void device_t::reset() void device_t::set_unscaled_clock(u32 clock) { + // do nothing if no actual change + if (clock == m_unscaled_clock) + return; + m_unscaled_clock = clock; m_clock = m_unscaled_clock * m_clock_scale; m_attoseconds_per_clock = (m_clock == 0) ? 0 : HZ_TO_ATTOSECONDS(m_clock); - notify_clock_changed(); + + // recalculate all derived clocks + for (device_t &child : subdevices()) + child.calculate_derived_clock(); + + // if the device has already started, make sure it knows about the new clock + if (m_started) + notify_clock_changed(); } @@ -311,10 +317,36 @@ void device_t::set_unscaled_clock(u32 clock) void device_t::set_clock_scale(double clockscale) { + // do nothing if no actual change + if (clockscale == m_clock_scale) + return; + m_clock_scale = clockscale; m_clock = m_unscaled_clock * m_clock_scale; m_attoseconds_per_clock = (m_clock == 0) ? 0 : HZ_TO_ATTOSECONDS(m_clock); - notify_clock_changed(); + + // recalculate all derived clocks + for (device_t &child : subdevices()) + child.calculate_derived_clock(); + + // if the device has already started, make sure it knows about the new clock + if (m_started) + notify_clock_changed(); +} + + +//------------------------------------------------- +// calculate_derived_clock - derive the device's +// clock from its owner, if so configured +//------------------------------------------------- + +void device_t::calculate_derived_clock() +{ + if ((m_configured_clock & 0xff000000) == 0xff000000) + { + assert(m_owner != nullptr); + set_unscaled_clock(m_owner->m_clock * ((m_configured_clock >> 12) & 0xfff) / ((m_configured_clock >> 0) & 0xfff)); + } } @@ -325,7 +357,9 @@ void device_t::set_clock_scale(double clockscale) attotime device_t::clocks_to_attotime(u64 numclocks) const { - if (numclocks < m_clock) + if (m_clock == 0) + return attotime::never; + else if (numclocks < m_clock) return attotime(0, numclocks * m_attoseconds_per_clock); else { @@ -343,7 +377,10 @@ attotime device_t::clocks_to_attotime(u64 numclocks) const u64 device_t::attotime_to_clocks(const attotime &duration) const { - return mulu_32x32(duration.seconds(), m_clock) + u64(duration.attoseconds()) / u64(m_attoseconds_per_clock); + if (m_clock == 0) + return 0; + else + return mulu_32x32(duration.seconds(), m_clock) + u64(duration.attoseconds()) / u64(m_attoseconds_per_clock); } diff --git a/src/emu/device.h b/src/emu/device.h index aa0de3f77a3..0eec0db5845 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -141,59 +142,90 @@ private: }; -template struct device_tag_struct { typedef DeviceClass type; }; -template struct driver_tag_struct { typedef DriverClass type; }; +template struct device_tag_struct { typedef DeviceClass type; }; +template struct driver_tag_struct { typedef DriverClass type; }; -template inline device_tag_struct device_tag_func() { return device_tag_struct{ }; } -template inline driver_tag_struct driver_tag_func() { return driver_tag_struct{ }; } +template auto device_tag_func() { return device_tag_struct{ }; }; +template auto driver_tag_func() { return driver_tag_struct{ }; }; class device_type_impl { private: friend class device_registrar; - typedef std::unique_ptr (*create_func)(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); + typedef std::unique_ptr (*create_func)(device_type_impl const &type, machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); device_type_impl(device_type_impl const &) = delete; device_type_impl(device_type_impl &&) = delete; device_type_impl &operator=(device_type_impl const &) = delete; device_type_impl &operator=(device_type_impl &&) = delete; - // don't make these static member function templates inline - template static std::unique_ptr create_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); - template static std::unique_ptr create_driver(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); + template + static std::unique_ptr create_device(device_type_impl const &type, machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) + { + return make_unique_clear(mconfig, tag, owner, clock); + } + + template + static std::unique_ptr create_driver(device_type_impl const &type, machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) + { + assert(!owner); + assert(!clock); + + return make_unique_clear(mconfig, type, tag); + } create_func const m_creator; std::type_info const &m_type; + char const *const m_shortname; + char const *const m_fullname; + char const *const m_source; + device_type_impl *m_next; + device_type_impl *m_parent = nullptr, *m_left = nullptr, *m_right = nullptr; + bool m_colour = false; public: device_type_impl(std::nullptr_t) : m_creator(nullptr) , m_type(typeid(std::nullptr_t)) + , m_shortname(nullptr) + , m_fullname(nullptr) + , m_source(nullptr) , m_next(nullptr) { } - template device_type_impl(device_tag_struct (*)()) + template + device_type_impl(device_tag_struct (*)()) : m_creator(&create_device) , m_type(typeid(DeviceClass)) + , m_shortname(ShortName) + , m_fullname(FullName) + , m_source(Source) , m_next(device_registrar::register_device(*this)) { } - template device_type_impl(driver_tag_struct (*)()) + template + device_type_impl(driver_tag_struct (*)()) : m_creator(&create_driver) , m_type(typeid(DriverClass)) + , m_shortname(ShortName) + , m_fullname(FullName) + , m_source(Source) , m_next(nullptr) { } std::type_info const &type() const { return m_type; } + char const *shortname() const { return m_shortname; } + char const *fullname() const { return m_fullname; } + char const *source() const { return m_source; } std::unique_ptr operator()(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) const { - return m_creator(mconfig, tag, owner, clock); + return m_creator(*this, mconfig, tag, owner, clock); } explicit operator bool() const { return bool(m_creator); } @@ -204,35 +236,49 @@ public: inline device_registrar::const_iterator &device_registrar::const_iterator::operator++() { m_type = m_type->m_next; return *this; } - -template -std::unique_ptr device_type_impl::create_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) -{ - return make_unique_clear(mconfig, tag, owner, clock); -} - -template -std::unique_ptr device_type_impl::create_driver(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) -{ - assert(!owner); - assert(!clock); - - // this is not thread-safe - // we can get away with it because driver creators aren't registered - // hence all members are initialised with constant values and the race won't cause issues - static device_type_impl const &driver_type = &driver_tag_func; - return make_unique_clear(mconfig, driver_type, tag); -} - } } // namespace emu::detail // device types typedef emu::detail::device_type_impl const &device_type; -template constexpr auto device_creator = &emu::detail::device_tag_func; -template constexpr auto driver_device_creator = &emu::detail::driver_tag_func; +typedef std::add_pointer_t device_type_ptr; extern emu::detail::device_registrar const registered_device_types; +template +constexpr auto device_creator = &emu::detail::device_tag_func; + +template +constexpr auto driver_device_creator = &emu::detail::driver_tag_func; + +#define DECLARE_DEVICE_TYPE(Type, Class) \ + extern device_type const Type; \ + class Class; \ + extern template class device_finder; \ + extern template class device_finder; + +#define DECLARE_DEVICE_TYPE_NS(Type, Namespace, Class) \ + extern device_type const Type; \ + extern template class device_finder; \ + extern template class device_finder; + +#define DEFINE_DEVICE_TYPE(Type, Class, ShortName, FullName) \ + namespace { \ + struct Class##_device_traits { static constexpr char const shortname[] = ShortName, fullname[] = FullName, source[] = __FILE__; }; \ + constexpr char const Class##_device_traits::shortname[], Class##_device_traits::fullname[], Class##_device_traits::source[]; \ + } \ + device_type const Type = device_creator; \ + template class device_finder; \ + template class device_finder; + +#define DEFINE_DEVICE_TYPE_NS(Type, Namespace, Class, ShortName, FullName) \ + namespace { \ + struct Class##_device_traits { static constexpr char const shortname[] = ShortName, fullname[] = FullName, source[] = __FILE__; }; \ + constexpr char const Class##_device_traits::shortname[], Class##_device_traits::fullname[], Class##_device_traits::source[]; \ + } \ + device_type const Type = device_creator; \ + template class device_finder; \ + template class device_finder; + // exception classes class device_missing_dependencies : public emu_exception { }; @@ -343,24 +389,23 @@ protected: device_t( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - u32 clock, - const char *shortname, - const char *source); + u32 clock); + public: virtual ~device_t(); // getters + bool has_running_machine() const { return m_machine != nullptr; } running_machine &machine() const { /*assert(m_machine != nullptr);*/ return *m_machine; } const char *tag() const { return m_tag.c_str(); } const char *basetag() const { return m_basetag.c_str(); } device_type type() const { return m_type; } - const char *name() const { return m_name.c_str(); } - const char *shortname() const { return m_shortname.c_str(); } + const char *name() const { return m_type.fullname(); } + const char *shortname() const { return m_type.shortname(); } const char *searchpath() const { return m_searchpath.c_str(); } - const char *source() const { return m_source.c_str(); } + const char *source() const { return m_type.source(); } device_t *owner() const { return m_owner; } device_t *next() const { return m_next; } u32 configured_clock() const { return m_configured_clock; } @@ -487,10 +532,7 @@ protected: // core device properties device_type m_type; // device type - std::string m_name; // name of the device - std::string m_shortname; // short name of the device std::string m_searchpath; // search path, used for media loading - std::string m_source; // device source file name // device relationships & interfaces device_t * m_owner; // device that owns us @@ -516,6 +558,7 @@ protected: private: // internal helpers device_t *subdevice_slow(const char *tag) const; + void calculate_derived_clock(); // private state; accessor use required running_machine * m_machine; diff --git a/src/emu/device.ipp b/src/emu/device.ipp index 74d7eb45f2c..c5c97568313 100644 --- a/src/emu/device.ipp +++ b/src/emu/device.ipp @@ -17,6 +17,12 @@ #ifndef __DEVICE_IPP__ #define __DEVICE_IPP__ +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +typedef device_delegate clock_update_delegate; + //************************************************************************** // MEMBER TEMPLATES //************************************************************************** diff --git a/src/emu/digfx.cpp b/src/emu/digfx.cpp index e47d44036a8..b5db1116e71 100644 --- a/src/emu/digfx.cpp +++ b/src/emu/digfx.cpp @@ -79,22 +79,28 @@ void device_gfx_interface::static_set_palette(device_t &device, const char *tag) void device_gfx_interface::interface_pre_start() { if (m_palette_tag == nullptr) - fatalerror("No palette specified for device '%s'\n", device().tag()); + fatalerror("No palette specified for device\n"); // find our palette device, either as a sibling device or subdevice + device_t *paldev; if (m_palette_is_sibling) - m_palette = device().owner()->subdevice(m_palette_tag); + paldev = device().owner()->subdevice(m_palette_tag); else - m_palette = device().subdevice(m_palette_tag); + paldev = device().subdevice(m_palette_tag); - if (m_palette == nullptr) + if (paldev == nullptr) fatalerror("Device '%s' specifies nonexistent %sdevice '%s' as palette\n", device().tag(), (m_palette_is_sibling ? "sibling " : "sub"), m_palette_tag); + if (!paldev->interface(m_palette)) + fatalerror("Device '%s' specifies %sdevice '%s' as palette, but it has no palette interface\n", + device().tag(), + (m_palette_is_sibling ? "sibling " : "sub"), + m_palette_tag); // if palette device isn't started, wait for it - // if (!m_palette->started()) + // if (!m_palette->device().started()) // throw device_missing_dependencies(); } @@ -295,17 +301,23 @@ void device_gfx_interface::interface_validity_check(validity_checker &valid) con osd_printf_error("No palette specified for device '%s'\n", device().tag()); else { - palette_device *palette; + device_t *paldev; if (m_palette_is_sibling) - palette = device().owner()->subdevice(m_palette_tag); + paldev = device().owner()->subdevice(m_palette_tag); else - palette = device().subdevice(m_palette_tag); - - if (palette == nullptr) - osd_printf_error("Device '%s' specifies nonexistent %sdevice '%s' as palette\n", - device().tag(), + paldev = device().subdevice(m_palette_tag); + if (paldev == nullptr) + osd_printf_error("Nonexistent %sdevice '%s' specified as palette\n", (m_palette_is_sibling ? "sibling " : "sub"), m_palette_tag); + else + { + device_palette_interface *palintf; + if (!paldev->interface(palintf)) + osd_printf_error("%sdevice '%s' specified as palette, but it has no palette interface\n", + (m_palette_is_sibling ? "Sibling " : "Sub"), + m_palette_tag); + } } if (!m_gfxdecodeinfo) diff --git a/src/emu/digfx.h b/src/emu/digfx.h index a8f8a80f672..539266190d6 100644 --- a/src/emu/digfx.h +++ b/src/emu/digfx.h @@ -156,7 +156,7 @@ const gfx_layout name = { width, height, RGN_FRAC(1,1), 8, { GFX_RAW }, { 0 }, { // forward declarations class gfx_element; -class palette_device; +class device_palette_interface; struct gfx_layout { @@ -200,7 +200,7 @@ public: static void static_set_palette(device_t &device, const char *tag); // getters - palette_device &palette() const { assert(m_palette != nullptr); return *m_palette; } + device_palette_interface &palette() const { assert(m_palette != nullptr); return *m_palette; } gfx_element *gfx(u8 index) const { assert(index < MAX_GFX_ELEMENTS); return m_gfx[index].get(); } // decoding @@ -216,7 +216,7 @@ protected: virtual void interface_post_start() override; private: - palette_device * m_palette; // pointer to the palette device + device_palette_interface * m_palette; // pointer to the palette device interface std::unique_ptr m_gfx[MAX_GFX_ELEMENTS]; // array of pointers to graphic sets // configuration diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index d73e500bcf2..372f2005458 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -34,7 +34,7 @@ const image_device_type_info device_image_interface::m_device_info_array[] = { IO_CASSETTE, "cassette", "cass" }, /* 4 */ { IO_PUNCHCARD, "punchcard", "pcrd" }, /* 5 */ { IO_PUNCHTAPE, "punchtape", "ptap" }, /* 6 */ - { IO_PRINTER, "printer", "prin" }, /* 7 */ + { IO_PRINTER, "printout", "prin" }, /* 7 */ { IO_SERIAL, "serial", "serl" }, /* 8 */ { IO_PARALLEL, "parallel", "parl" }, /* 9 */ { IO_SNAPSHOT, "snapshot", "dump" }, /* 10 */ @@ -93,7 +93,6 @@ device_image_interface::device_image_interface(const machine_config &mconfig, de m_supported(0), m_readonly(false), m_created(false), - m_init_phase(false), m_create_format(0), m_create_args(nullptr), m_user_loadable(true), @@ -457,13 +456,11 @@ const software_info *device_image_interface::software_entry() const u8 *device_image_interface::get_software_region(const char *tag) { - char full_tag[256]; - if (!loaded_through_softlist()) return nullptr; - sprintf( full_tag, "%s:%s", device().tag(), tag ); - memory_region *region = device().machine().root_device().memregion(full_tag); + std::string full_tag = util::string_format("%s:%s", device().tag(), tag); + memory_region *region = device().machine().root_device().memregion(full_tag.c_str()); return region != nullptr ? region->base() : nullptr; } @@ -474,11 +471,8 @@ u8 *device_image_interface::get_software_region(const char *tag) u32 device_image_interface::get_software_region_length(const char *tag) { - char full_tag[256]; - - sprintf( full_tag, "%s:%s", device().tag(), tag ); - - memory_region *region = device().machine().root_device().memregion(full_tag); + std::string full_tag = util::string_format("%s:%s", device().tag(), tag); + memory_region *region = device().machine().root_device().memregion(full_tag.c_str()); return region != nullptr ? region->bytes() : 0; } @@ -519,21 +513,21 @@ bool device_image_interface::load_software_region(const char *tag, optional_shar // to be loaded // **************************************************************************** -void device_image_interface::run_hash(void (*partialhash)(util::hash_collection &, const unsigned char *, unsigned long, const char *), +void device_image_interface::run_hash(util::core_file &file, void (*partialhash)(util::hash_collection &, const unsigned char *, unsigned long, const char *), util::hash_collection &hashes, const char *types) { u32 size; std::vector buf; hashes.reset(); - size = (u32) length(); + size = (u32) file.size(); buf.resize(size); memset(&buf[0], 0, size); // read the file - fseek(0, SEEK_SET); - fread(&buf[0], size); + file.seek(0, SEEK_SET); + file.read(&buf[0], size); if (partialhash) partialhash(hashes, &buf[0], size, types); @@ -541,7 +535,7 @@ void device_image_interface::run_hash(void (*partialhash)(util::hash_collection hashes.compute(&buf[0], size, types); // cleanup - fseek(0, SEEK_SET); + file.seek(0, SEEK_SET); } @@ -566,11 +560,24 @@ void device_image_interface::image_checkhash() // retrieve the partial hash func partialhash = get_partial_hash(); - run_hash(partialhash, m_hash, util::hash_collection::HASH_TYPES_ALL); + run_hash(*m_file, partialhash, m_hash, util::hash_collection::HASH_TYPES_ALL); } return; } + +util::hash_collection device_image_interface::calculate_hash_on_file(util::core_file &file) const +{ + // retrieve the partial hash func + device_image_partialhash_func partialhash = get_partial_hash(); + + // and calculate the hash + util::hash_collection hash; + run_hash(file, partialhash, hash, util::hash_collection::HASH_TYPES_ALL); + return hash; +} + + u32 device_image_interface::crc() { u32 crc = 0; @@ -990,7 +997,7 @@ bool device_image_interface::load_software(software_list_device &swlist, const c // load_internal - core image loading //------------------------------------------------- -image_init_result device_image_interface::load_internal(const std::string &path, bool is_create, int create_format, util::option_resolution *create_args, bool just_load) +image_init_result device_image_interface::load_internal(const std::string &path, bool is_create, int create_format, util::option_resolution *create_args) { // first unload the image unload(); @@ -1030,7 +1037,7 @@ image_init_result device_image_interface::load_internal(const std::string &path, m_create_format = create_format; m_create_args = create_args; - if (m_init_phase==false) { + if (init_phase()==false) { m_err = (finish_load() == image_init_result::PASS) ? IMAGE_ERROR_SUCCESS : IMAGE_ERROR_INTERNAL; if (m_err) goto done; @@ -1038,12 +1045,8 @@ image_init_result device_image_interface::load_internal(const std::string &path, // success! done: - if (just_load) { - if (m_err) clear(); - return m_err ? image_init_result::FAIL : image_init_result::PASS; - } if (m_err!=0) { - if (!m_init_phase) + if (!init_phase()) { if (device().machine().phase() == MACHINE_PHASE_RUNNING) device().popmessage("Error: Unable to %s image '%s': %s", is_create ? "create" : "load", path, error()); @@ -1052,43 +1055,24 @@ done: } clear(); } - else { - // do we need to reset the CPU? only schedule it if load/create is successful - if (!schedule_postload_hard_reset_if_needed()) - { - if (!m_init_phase) - { - if (device().machine().phase() == MACHINE_PHASE_RUNNING) - device().popmessage("Image '%s' was successfully %s.", path, is_create ? "created" : "loaded"); - else - osd_printf_info("Image '%s' was successfully %s.\n", path.c_str(), is_create ? "created" : "loaded"); - } - } - } return m_err ? image_init_result::FAIL : image_init_result::PASS; } -//------------------------------------------------- -// schedule_postload_hard_reset_if_needed -//------------------------------------------------- - -bool device_image_interface::schedule_postload_hard_reset_if_needed() -{ - bool postload_hard_reset_needed = device().machine().time() > attotime::zero && is_reset_on_load(); - if (postload_hard_reset_needed) - device().machine().schedule_hard_reset(); - return postload_hard_reset_needed; -} - - //------------------------------------------------- // load - load an image into MAME //------------------------------------------------- image_init_result device_image_interface::load(const std::string &path) { - return load_internal(path, false, 0, nullptr, false); + // is this a reset on load item? + if (is_reset_on_load() && !init_phase()) + { + reset_and_load(path); + return image_init_result::PASS; + } + + return load_internal(path, false, 0, nullptr); } @@ -1098,6 +1082,13 @@ image_init_result device_image_interface::load(const std::string &path) image_init_result device_image_interface::load_software(const std::string &software_identifier) { + // Is this a software part that forces a reset and we're at runtime? If so, get this loaded through reset_and_load + if (is_reset_on_load() && !init_phase()) + { + reset_and_load(software_identifier); + return image_init_result::PASS; + } + // Prepare to load unload(); clear_error(); @@ -1122,65 +1113,29 @@ image_init_result device_image_interface::load_software(const std::string &softw ? core_filename_extract_extension(m_mame_file->filename(), true) : ""; - // check if image should be read-only - const char *read_only = get_feature("read_only"); - if (read_only && !strcmp(read_only, "true")) - { - // Copy some image information when we have been loaded through a software list - software_info &swinfo = m_software_part_ptr->info(); - - // sanitize - if (swinfo.longname().empty() || swinfo.publisher().empty() || swinfo.year().empty()) - fatalerror("Each entry in an XML list must have all of the following fields: description, publisher, year!\n"); - - // store - m_longname = swinfo.longname(); - m_manufacturer = swinfo.publisher(); - m_year = swinfo.year(); - - // set file type - std::string filename = (m_mame_file != nullptr) && (m_mame_file->filename() != nullptr) - ? m_mame_file->filename() - : ""; - m_filetype = core_filename_extract_extension(filename, true); - } + // Copy some image information when we have been loaded through a software list + software_info &swinfo = m_software_part_ptr->info(); - // call finish_load if necessary - if (m_init_phase == false && (finish_load() != image_init_result::PASS)) - return image_init_result::FAIL; + // sanitize + if (swinfo.longname().empty() || swinfo.publisher().empty() || swinfo.year().empty()) + fatalerror("Each entry in an XML list must have all of the following fields: description, publisher, year!\n"); - // do we need to reset the CPU? only schedule it if load is successful - if (!schedule_postload_hard_reset_if_needed()) - { - if (!m_init_phase) - { - if (device().machine().phase() == MACHINE_PHASE_RUNNING) - device().popmessage("Image '%s' was successfully loaded.", software_identifier); - else - osd_printf_info("Image '%s' was successfully loaded.\n", software_identifier.c_str()); - } - } - - return image_init_result::PASS; -} + // store + m_longname = swinfo.longname(); + m_manufacturer = swinfo.publisher(); + m_year = swinfo.year(); + // set file type + std::string filename = (m_mame_file != nullptr) && (m_mame_file->filename() != nullptr) + ? m_mame_file->filename() + : ""; + m_filetype = core_filename_extract_extension(filename, true); -//------------------------------------------------- -// open_image_file - opening plain image file -//------------------------------------------------- + // call finish_load if necessary + if (init_phase() == false && (finish_load() != image_init_result::PASS)) + return image_init_result::FAIL; -bool device_image_interface::open_image_file(emu_options &options) -{ - const char* path = options.value(instance_name().c_str()); - if (*path != 0) - { - set_init_phase(); - if (load_internal(path, false, 0, nullptr, true) == image_init_result::PASS) - { - if (!loaded_through_softlist()) return true; - } - } - return false; + return image_init_result::PASS; } @@ -1220,7 +1175,6 @@ image_init_result device_image_interface::finish_load() m_is_loading = false; m_create_format = 0; m_create_args = nullptr; - m_init_phase = false; return err; } @@ -1251,7 +1205,23 @@ image_init_result device_image_interface::create(const std::string &path, const } cnt++; } - return load_internal(path, true, format_index, create_args, false); + return load_internal(path, true, format_index, create_args); +} + + +//------------------------------------------------- +// reset_and_load - called internally when we try +// to load an is_reset_on_load() item; will reset +// the emulation and record this image to be loaded +//------------------------------------------------- + +void device_image_interface::reset_and_load(const std::string &path) +{ + // first make sure the reset is scheduled + device().machine().schedule_hard_reset(); + + // and record the new load + device().machine().options().image_options()[instance_name()] = path; } @@ -1442,21 +1412,12 @@ bool device_image_interface::load_software_part(const std::string &identifier) return false; } - // I'm not sure what m_init_phase is all about; but for now I'm preserving this behavior - if (is_reset_on_load()) - set_init_phase(); - // Load the software part const char *swname = m_software_part_ptr->info().shortname().c_str(); const rom_entry *start_entry = m_software_part_ptr->romdata().data(); const software_list_loader &loader = get_software_list_loader(); bool result = loader.load_software(*this, *swlist, swname, start_entry); -#ifdef UNUSED_VARIABLE - // Tell the world which part we actually loaded - std::string full_sw_name = string_format("%s:%s:%s", swlist->list_name(), m_software_part_ptr->info().shortname(), m_software_part_ptr->name()); -#endif - // check compatibility switch (swlist->is_compatible(*m_software_part_ptr)) { @@ -1481,10 +1442,7 @@ bool device_image_interface::load_software_part(const std::string &identifier) { device_image_interface *req_image = software_list_device::find_mountable_image(device().mconfig(), *req_swpart); if (req_image != nullptr) - { - req_image->set_init_phase(); - req_image->load(requirement); - } + req_image->load_software(requirement); } } @@ -1498,12 +1456,13 @@ bool device_image_interface::load_software_part(const std::string &identifier) std::string device_image_interface::software_get_default_slot(const char *default_card_slot) const { - const char *path = device().mconfig().options().value(instance_name().c_str()); std::string result; - if (*path != '\0') + + auto iter = device().mconfig().options().image_options().find(instance_name()); + if (iter != device().mconfig().options().image_options().end() && !iter->second.empty()) { result.assign(default_card_slot); - const software_part *swpart = find_software_item(path, true); + const software_part *swpart = find_software_item(iter->second, true); if (swpart != nullptr) { const char *slot = swpart->feature("slot"); @@ -1514,6 +1473,21 @@ std::string device_image_interface::software_get_default_slot(const char *defaul return result; } + +//------------------------------------------------- +// init_phase +//------------------------------------------------- + +bool device_image_interface::init_phase() const +{ + // diimage.cpp has quite a bit of logic that randomly decides to behave + // differently at startup; this is an enc[r]apsulation of the "logic" + // that switches these behaviors + return !device().has_running_machine() + || device().machine().phase() == MACHINE_PHASE_INIT; +} + + //---------------------------------------------------------------------------- static int image_fseek_thunk(void *file, s64 offset, int whence) diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 49a9ff692ea..bf656b6a040 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -173,7 +173,7 @@ public: void seterror(image_error_t err, const char *message); void message(const char *format, ...) ATTR_PRINTF(2,3); - bool exists() { return !m_image_name.empty(); } + bool exists() const { return !m_image_name.empty(); } const char *filename() const { if (m_image_name.empty()) return nullptr; else return m_image_name.c_str(); } const char *basename() const { if (m_basename.empty()) return nullptr; else return m_basename.c_str(); } const char *basename_noext() const { if (m_basename_noext.empty()) return nullptr; else return m_basename_noext.c_str(); } @@ -194,7 +194,6 @@ public: int image_feof() { check_for_file(); return m_file->eof(); } void *ptr() {check_for_file(); return const_cast(m_file->buffer()); } // configuration access - void set_init_phase() { m_init_phase = true; } const std::string &longname() const { return m_longname; } const std::string &manufacturer() const { return m_manufacturer; } @@ -216,6 +215,7 @@ public: u32 crc(); util::hash_collection& hash() { return m_hash; } + util::hash_collection calculate_hash_on_file(util::core_file &file) const; void battery_load(void *buffer, int length, int fill); void battery_load(void *buffer, int length, void *def_buffer); @@ -234,7 +234,6 @@ public: // loads a softlist item by name image_init_result load_software(const std::string &software_identifier); - bool open_image_file(emu_options &options); image_init_result finish_load(); void unload(); image_init_result create(const std::string &path, const image_device_format *create_format, util::option_resolution *create_args); @@ -251,6 +250,7 @@ public: } bool user_loadable() const { return m_user_loadable; } + const std::string &full_software_name() const { return m_full_software_name; } protected: // interface-level overrides @@ -259,7 +259,7 @@ protected: virtual const software_list_loader &get_software_list_loader() const; virtual const bool use_software_list_file_extension_for_filetype() const { return false; } - image_init_result load_internal(const std::string &path, bool is_create, int create_format, util::option_resolution *create_args, bool just_load); + image_init_result load_internal(const std::string &path, bool is_create, int create_format, util::option_resolution *create_args); image_error_t load_image_by_path(u32 open_flags, const std::string &path); void clear(); bool is_loaded(); @@ -275,11 +275,9 @@ protected: void make_readonly() { m_readonly = true; } - void run_hash(void (*partialhash)(util::hash_collection &, const unsigned char *, unsigned long, const char *), util::hash_collection &hashes, const char *types); void image_checkhash(); const software_part *find_software_item(const std::string &identifier, bool restrict_to_interface, software_list_device **device = nullptr) const; - bool load_software_part(const std::string &identifier); std::string software_get_default_slot(const char *default_card_slot) const; void add_format(std::unique_ptr &&format); @@ -295,6 +293,7 @@ protected: image_error_t m_err; std::string m_err_message; +private: // variables that are only non-zero when an image is mounted util::core_file::ptr m_file; std::unique_ptr m_mame_file; @@ -308,11 +307,17 @@ protected: const software_part *m_software_part_ptr; std::string m_software_list_name; -private: static image_error_t image_error_from_file_error(osd_file::error filerr); - bool schedule_postload_hard_reset_if_needed(); std::vector determine_open_plan(bool is_create); void update_names(); + bool load_software_part(const std::string &identifier); + + bool init_phase() const; + static void run_hash(util::core_file &file, void(*partialhash)(util::hash_collection &, const unsigned char *, unsigned long, const char *), util::hash_collection &hashes, const char *types); + + // loads an image or software items and resets - called internally when we + // load an is_reset_on_load() item + void reset_and_load(const std::string &path); // creation info formatlist_type m_formatlist; @@ -329,7 +334,6 @@ private: // flags bool m_readonly; bool m_created; - bool m_init_phase; // special - used when creating int m_create_format; diff --git a/src/emu/dipalette.cpp b/src/emu/dipalette.cpp new file mode 100644 index 00000000000..d996ccafe4d --- /dev/null +++ b/src/emu/dipalette.cpp @@ -0,0 +1,516 @@ +// license:BSD-3-Clause +// copyright-holders:Aaron Giles +/*************************************************************************** + + dipalette.cpp + + Device palette interface. + +***************************************************************************/ + +#include "emu.h" +#include "screen.h" + +#define VERBOSE 0 + + +//************************************************************************** +// DEVICE INTERFACE MANAGEMENT +//************************************************************************** + +//------------------------------------------------- +// device_palette_interface - constructor +//------------------------------------------------- + +device_palette_interface::device_palette_interface(const machine_config &mconfig, device_t &device) + : device_interface(device, "palette"), + m_palette(nullptr), + m_pens(nullptr), + m_format(), + m_shadow_table(nullptr), + m_shadow_group(0), + m_hilight_group(0), + m_white_pen(0), + m_black_pen(0) +{ +} + + +//------------------------------------------------- +// interface_validity_check - validation for a +// device after the configuration has been +// constructed +//------------------------------------------------- + +void device_palette_interface::interface_validity_check(validity_checker &valid) const +{ + // this info must be available before the device has started + if (palette_entries() == 0) + osd_printf_error("Palette has no entries specified\n"); +} + + +//------------------------------------------------- +// interface_pre_start - work to be done prior to +// actually starting a device +//------------------------------------------------- + +void device_palette_interface::interface_pre_start() +{ + // reset all our data + screen_device *screen = device().machine().first_screen(); + m_format = (screen != nullptr) ? screen->format() : BITMAP_FORMAT_INVALID; + + // allocate the palette + u32 numentries = palette_entries(); + allocate_palette(numentries); + allocate_color_tables(); + allocate_shadow_tables(); + + // allocate indirection tables + int indirect_colors = palette_indirect_entries(); + if (indirect_colors > 0) + { + m_indirect_colors.resize(indirect_colors); + for (int color = 0; color < indirect_colors; color++) + { + // alpha = 0 ensures change is detected the first time set_indirect_color() is called + m_indirect_colors[color] = rgb_t::transparent(); + } + + m_indirect_pens.resize(numentries); + for (int pen = 0; pen < numentries; pen++) + m_indirect_pens[pen] = pen % indirect_colors; + } +} + + +//------------------------------------------------- +// interface_post_start - work to be done after +// actually starting a device +//------------------------------------------------- + +void device_palette_interface::interface_post_start() +{ + // set up save/restore of the palette + m_save_pen.resize(m_palette->num_colors()); + m_save_contrast.resize(m_palette->num_colors()); + device().save_item(NAME(m_save_pen)); + device().save_item(NAME(m_save_contrast)); + + // save indirection tables if we have them + if (m_indirect_colors.size() > 0) + { + device().save_item(NAME(m_indirect_colors)); + device().save_item(NAME(m_indirect_pens)); + } +} + + +//------------------------------------------------- +// interface_pre_save - prepare the save arrays +// for saving +//------------------------------------------------- + +void device_palette_interface::interface_pre_save() +{ + // fill the save arrays with updated pen and brightness information + int numcolors = m_palette->num_colors(); + for (int index = 0; index < numcolors; index++) + { + m_save_pen[index] = pen_color(index); + m_save_contrast[index] = pen_contrast(index); + } +} + + +//------------------------------------------------- +// interface_post_load - called after restore to +// actually update the palette +//------------------------------------------------- + +void device_palette_interface::interface_post_load() +{ + // reset the pen and brightness for each entry + int numcolors = m_palette->num_colors(); + for (int index = 0; index < numcolors; index++) + { + set_pen_color(index, m_save_pen[index]); + set_pen_contrast(index, m_save_contrast[index]); + } +} + + +//------------------------------------------------- +// interface_post_stop - final cleanup +//------------------------------------------------- + +void device_palette_interface::interface_post_stop() +{ + // dereference the palette + if (m_palette != nullptr) + m_palette->deref(); +} + + +//************************************************************************** +// INDIRECTION (AKA COLORTABLES) +//************************************************************************** + +//------------------------------------------------- +// set_indirect_color - set an indirect color +//------------------------------------------------- + +void device_palette_interface::set_indirect_color(int index, rgb_t rgb) +{ + // make sure we are in range + assert(index < m_indirect_pens.size()); + + // alpha doesn't matter + rgb.set_a(255); + + // update if it has changed + if (m_indirect_colors[index] != rgb) + { + m_indirect_colors[index] = rgb; + + // update the palette for any colortable entries that reference it + for (u32 pen = 0; pen < m_indirect_pens.size(); pen++) + if (m_indirect_pens[pen] == index) + m_palette->entry_set_color(pen, rgb); + } +} + + +//------------------------------------------------- +// set_pen_indirect - set an indirect pen index +//------------------------------------------------- + +void device_palette_interface::set_pen_indirect(pen_t pen, indirect_pen_t index) +{ + // make sure we are in range + assert(pen < entries() && index < indirect_entries()); + + m_indirect_pens[pen] = index; + + m_palette->entry_set_color(pen, m_indirect_colors[index]); +} + + +//------------------------------------------------- +// transpen_mask - return a mask of pens that +// whose indirect values match the given +// transcolor +//------------------------------------------------- + +u32 device_palette_interface::transpen_mask(gfx_element &gfx, u32 color, indirect_pen_t transcolor) const +{ + u32 entry = gfx.colorbase() + (color % gfx.colors()) * gfx.granularity(); + + // make sure we are in range + assert(entry < m_indirect_pens.size()); + assert(gfx.depth() <= 32); + + // either gfx->color_depth entries or as many as we can get up until the end + int count = std::min(size_t(gfx.depth()), m_indirect_pens.size() - entry); + + // set a bit anywhere the transcolor matches + u32 mask = 0; + for (int bit = 0; bit < count; bit++) + if (m_indirect_pens[entry++] == transcolor) + mask |= 1 << bit; + + // return the final mask + return mask; +} + + + +//************************************************************************** +// SHADOW TABLE CONFIGURATION +//************************************************************************** + +//------------------------------------------------- +// palette_set_shadow_mode(mode) +// +// mode: 0 = use preset 0 (default shadow) +// 1 = use preset 1 (default highlight) +// 2 = use preset 2 * +// 3 = use preset 3 * +// +// * Preset 2 & 3 work independently under 32bpp, +// supporting up to four different types of +// shadows at one time. They mirror preset 1 & 2 +// in lower depth settings to maintain +// compatibility. +// +// +// set_shadow_dRGB32(mode, dr, dg, db, noclip) +// +// mode: 0 to 3 (which preset to configure) +// +// dr: -255 to 255 ( red displacement ) +// dg: -255 to 255 ( green displacement ) +// db: -255 to 255 ( blue displacement ) +// +// noclip: 0 = resultant RGB clipped at 0x00/0xff +// 1 = resultant RGB wraparound 0x00/0xff +// +// +// * Color shadows only work under 32bpp. +// This function has no effect in lower color +// depths where +// +// set_shadow_factor() or +// set_highlight_factor() +// +// should be used instead. +// +// * 32-bit shadows are lossy. Even with zero RGB +// displacements the affected area will still look +// slightly darkened. +// +// Drivers should ensure all shadow pens in +// gfx_drawmode_table[] are set to DRAWMODE_NONE +// when RGB displacements are zero to avoid the +// darkening effect. +//------------------------------------------------- + +//------------------------------------------------- +// set_shadow_dRGB32 - configure delta RGB values +// for 1 of 4 shadow tables +//------------------------------------------------- + +void device_palette_interface::set_shadow_dRGB32(int mode, int dr, int dg, int db, bool noclip) +{ + shadow_table_data &stable = m_shadow_tables[mode]; + + // only applies to RGB direct modes + assert(m_format != BITMAP_FORMAT_IND16); + assert(stable.base != nullptr); + + // clamp the deltas (why?) + if (dr < -0xff) dr = -0xff; else if (dr > 0xff) dr = 0xff; + if (dg < -0xff) dg = -0xff; else if (dg > 0xff) dg = 0xff; + if (db < -0xff) db = -0xff; else if (db > 0xff) db = 0xff; + + // early exit if nothing changed + if (dr == stable.dr && dg == stable.dg && db == stable.db && noclip == stable.noclip) + return; + stable.dr = dr; + stable.dg = dg; + stable.db = db; + stable.noclip = noclip; + + if (VERBOSE) + device().popmessage("shadow %d recalc %d %d %d %02x", mode, dr, dg, db, noclip); + + // regenerate the table + for (int i = 0; i < 32768; i++) + { + int r = pal5bit(i >> 10) + dr; + int g = pal5bit(i >> 5) + dg; + int b = pal5bit(i >> 0) + db; + + // apply clipping + if (!noclip) + { + r = rgb_t::clamp(r); + g = rgb_t::clamp(g); + b = rgb_t::clamp(b); + } + rgb_t final = rgb_t(r, g, b); + + // store either 16 or 32 bit + if (m_format == BITMAP_FORMAT_RGB32) + stable.base[i] = final; + else + stable.base[i] = final.as_rgb15(); + } +} + + +//************************************************************************** +// INTERNAL FUNCTIONS +//************************************************************************** + +//------------------------------------------------- +// allocate_palette - allocate and configure the +// palette object itself +//------------------------------------------------- + +void device_palette_interface::allocate_palette(u32 numentries) +{ + assert(numentries > 0); + + // determine the number of groups we need + int numgroups = 1; + if (palette_shadows_enabled()) + m_shadow_group = numgroups++; + if (palette_hilights_enabled()) + m_hilight_group = numgroups++; + assert_always(numentries * numgroups <= 65536, "Palette has more than 65536 colors."); + + // allocate a palette object containing all the colors and groups + m_palette = palette_t::alloc(numentries, numgroups); + + // configure the groups + if (m_shadow_group != 0) + set_shadow_factor(PALETTE_DEFAULT_SHADOW_FACTOR); + if (m_hilight_group != 0) + set_highlight_factor(PALETTE_DEFAULT_HIGHLIGHT_FACTOR); + + // set the initial colors to a standard rainbow + for (int index = 0; index < numentries; index++) + set_pen_color(index, rgbexpand<1,1,1>(index, 0, 1, 2)); + + // switch off the color mode + switch (m_format) + { + // 16-bit paletteized case + case BITMAP_FORMAT_IND16: + m_black_pen = m_palette->black_entry(); + m_white_pen = m_palette->white_entry(); + if (m_black_pen >= 65536) + m_black_pen = 0; + if (m_white_pen >= 65536) + m_white_pen = 65535; + break; + + // 32-bit direct case + case BITMAP_FORMAT_RGB32: + m_black_pen = rgb_t::black(); + m_white_pen = rgb_t::white(); + break; + + // screenless case + case BITMAP_FORMAT_INVALID: + default: + break; + } +} + + +//------------------------------------------------- +// allocate_color_tables - allocate memory for +// pen and color tables +//------------------------------------------------- + +void device_palette_interface::allocate_color_tables() +{ + int total_colors = m_palette->num_colors() * m_palette->num_groups(); + + // allocate memory for the pen table + switch (m_format) + { + case BITMAP_FORMAT_IND16: + // create a dummy 1:1 mapping + { + m_pen_array.resize(total_colors + 2); + pen_t *pentable = &m_pen_array[0]; + m_pens = &m_pen_array[0]; + for (int i = 0; i < total_colors + 2; i++) + pentable[i] = i; + } + break; + + case BITMAP_FORMAT_RGB32: + m_pens = reinterpret_cast(m_palette->entry_list_adjusted()); + break; + + default: + m_pens = nullptr; + break; + } +} + + +//------------------------------------------------- +// allocate_shadow_tables - allocate memory for +// shadow tables +//------------------------------------------------- + +void device_palette_interface::allocate_shadow_tables() +{ + int numentries = m_palette->num_colors(); + + // if we have shadows, allocate shadow tables + if (m_shadow_group != 0) + { + m_shadow_array.resize(65536); + + // palettized mode gets a single 64k table in slots 0 and 2 + if (m_format == BITMAP_FORMAT_IND16) + { + m_shadow_tables[0].base = m_shadow_tables[2].base = &m_shadow_array[0]; + for (int i = 0; i < 65536; i++) + m_shadow_array[i] = (i < numentries) ? (i + numentries) : i; + } + + // RGB mode gets two 32k tables in slots 0 and 2 + else + { + m_shadow_tables[0].base = &m_shadow_array[0]; + m_shadow_tables[2].base = &m_shadow_array[32768]; + configure_rgb_shadows(0, PALETTE_DEFAULT_SHADOW_FACTOR); + } + } + + // if we have hilights, allocate shadow tables + if (m_hilight_group != 0) + { + m_hilight_array.resize(65536); + + // palettized mode gets a single 64k table in slots 1 and 3 + if (m_format == BITMAP_FORMAT_IND16) + { + m_shadow_tables[1].base = m_shadow_tables[3].base = &m_hilight_array[0]; + for (int i = 0; i < 65536; i++) + m_hilight_array[i] = (i < numentries) ? (i + 2 * numentries) : i; + } + + // RGB mode gets two 32k tables in slots 1 and 3 + else + { + m_shadow_tables[1].base = &m_hilight_array[0]; + m_shadow_tables[3].base = &m_hilight_array[32768]; + configure_rgb_shadows(1, PALETTE_DEFAULT_HIGHLIGHT_FACTOR); + } + } + + // set the default table + m_shadow_table = m_shadow_tables[0].base; +} + + +//------------------------------------------------- +// configure_rgb_shadows - configure shadows +// for the RGB tables +//------------------------------------------------- + +void device_palette_interface::configure_rgb_shadows(int mode, float factor) +{ + // only applies to RGB direct modes + assert(m_format != BITMAP_FORMAT_IND16); + + // verify the shadow table + assert(mode >= 0 && mode < ARRAY_LENGTH(m_shadow_tables)); + shadow_table_data &stable = m_shadow_tables[mode]; + assert(stable.base != nullptr); + + // regenerate the table + int ifactor = int(factor * 256.0f); + for (int rgb555 = 0; rgb555 < 32768; rgb555++) + { + u8 const r = rgb_t::clamp((pal5bit(rgb555 >> 10) * ifactor) >> 8); + u8 const g = rgb_t::clamp((pal5bit(rgb555 >> 5) * ifactor) >> 8); + u8 const b = rgb_t::clamp((pal5bit(rgb555 >> 0) * ifactor) >> 8); + + // store either 16 or 32 bit + rgb_t final = rgb_t(r, g, b); + if (m_format == BITMAP_FORMAT_RGB32) + stable.base[rgb555] = final; + else + stable.base[rgb555] = final.as_rgb15(); + } +} diff --git a/src/emu/dipalette.h b/src/emu/dipalette.h new file mode 100644 index 00000000000..fc1f767300d --- /dev/null +++ b/src/emu/dipalette.h @@ -0,0 +1,145 @@ +// license:BSD-3-Clause +// copyright-holders:Aaron Giles +/*************************************************************************** + + dipalette.h + + Device palette interface. + +******************************************************************************/ + +#pragma once + +#ifndef __EMU_H__ +#error Dont include this file directly; include emu.h instead. +#endif + +#ifndef MAME_EMU_DIPALETTE_H +#define MAME_EMU_DIPALETTE_H + + +//************************************************************************** +// CONSTANTS +//************************************************************************** + +constexpr float PALETTE_DEFAULT_SHADOW_FACTOR = 0.6f; +constexpr float PALETTE_DEFAULT_HIGHLIGHT_FACTOR = 1.0f/PALETTE_DEFAULT_SHADOW_FACTOR; + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class gfx_element; + +typedef u16 indirect_pen_t; + + +// ======================> device_palette_interface + +class device_palette_interface : public device_interface +{ + static constexpr int MAX_SHADOW_PRESETS = 4; + +public: + // construction/destruction + device_palette_interface(const machine_config &mconfig, device_t &device); + + // getters + u32 entries() const { return palette_entries(); } + u32 indirect_entries() const { return palette_indirect_entries(); } + palette_t *palette() const { return m_palette; } + const pen_t &pen(int index) const { return m_pens[index]; } + const pen_t *pens() const { return m_pens; } + pen_t *shadow_table() const { return m_shadow_table; } + rgb_t pen_color(pen_t pen) const { return m_palette->entry_color(pen); } + double pen_contrast(pen_t pen) const { return m_palette->entry_contrast(pen); } + pen_t black_pen() const { return m_black_pen; } + pen_t white_pen() const { return m_white_pen; } + bool shadows_enabled() const { return palette_shadows_enabled(); } + bool hilights_enabled() const { return palette_hilights_enabled(); } + + // setters + void set_pen_color(pen_t pen, rgb_t rgb) { m_palette->entry_set_color(pen, rgb); } + void set_pen_red_level(pen_t pen, u8 level) { m_palette->entry_set_red_level(pen, level); } + void set_pen_green_level(pen_t pen, u8 level) { m_palette->entry_set_green_level(pen, level); } + void set_pen_blue_level(pen_t pen, u8 level) { m_palette->entry_set_blue_level(pen, level); } + void set_pen_color(pen_t pen, u8 r, u8 g, u8 b) { m_palette->entry_set_color(pen, rgb_t(r, g, b)); } + void set_pen_colors(pen_t color_base, const rgb_t *colors, int color_count) { while (color_count--) set_pen_color(color_base++, *colors++); } + void set_pen_colors(pen_t color_base, const std::vector &colors) { for (unsigned int i=0; i != colors.size(); i++) set_pen_color(color_base+i, colors[i]); } + void set_pen_contrast(pen_t pen, double bright) { m_palette->entry_set_contrast(pen, bright); } + + // indirection (aka colortables) + indirect_pen_t pen_indirect(int index) const { return m_indirect_pens[index]; } + rgb_t indirect_color(int index) const { return m_indirect_colors[index]; } + void set_indirect_color(int index, rgb_t rgb); + void set_pen_indirect(pen_t pen, indirect_pen_t index); + u32 transpen_mask(gfx_element &gfx, u32 color, indirect_pen_t transcolor) const; + + // shadow config + void set_shadow_factor(double factor) { assert(m_shadow_group != 0); m_palette->group_set_contrast(m_shadow_group, factor); } + void set_highlight_factor(double factor) { assert(m_hilight_group != 0); m_palette->group_set_contrast(m_hilight_group, factor); } + void set_shadow_mode(int mode) { assert(mode >= 0 && mode < MAX_SHADOW_PRESETS); m_shadow_table = m_shadow_tables[mode].base; } + +protected: + // interface-level overrides + virtual void interface_validity_check(validity_checker &valid) const override; + virtual void interface_pre_start() override; + virtual void interface_post_start() override; + virtual void interface_pre_save() override; + virtual void interface_post_load() override; + virtual void interface_post_stop() override; + + // configuration-related overrides + virtual u32 palette_entries() const = 0; + virtual u32 palette_indirect_entries() const { return 0; } + virtual bool palette_shadows_enabled() const { return false; } + virtual bool palette_hilights_enabled() const { return false; } + +private: + // internal helpers + void allocate_palette(u32 numentries); + void allocate_color_tables(); + void allocate_shadow_tables(); +public: // needed by konamigx + void set_shadow_dRGB32(int mode, int dr, int dg, int db, bool noclip); +private: + void configure_rgb_shadows(int mode, float factor); + + // internal state + palette_t * m_palette; // the palette itself + const pen_t * m_pens; // remapped palette pen numbers + bitmap_format m_format; // format assumed for palette data + pen_t * m_shadow_table; // table for looking up a shadowed pen + u32 m_shadow_group; // index of the shadow group, or 0 if none + u32 m_hilight_group; // index of the hilight group, or 0 if none + pen_t m_white_pen; // precomputed white pen value + pen_t m_black_pen; // precomputed black pen value + + // indirection state + std::vector m_indirect_colors; // actual colors set for indirection + std::vector m_indirect_pens; // indirection values + + struct shadow_table_data + { + pen_t * base; // pointer to the base of the table + s16 dr; // delta red value + s16 dg; // delta green value + s16 db; // delta blue value + bool noclip; // clip? + }; + shadow_table_data m_shadow_tables[MAX_SHADOW_PRESETS]; // array of shadow table data + + std::vector m_save_pen; // pens for save/restore + std::vector m_save_contrast; // brightness for save/restore + + std::vector m_pen_array; + std::vector m_shadow_array; + std::vector m_hilight_array; +}; + +// interface type iterator +typedef device_interface_iterator palette_interface_iterator; + + +#endif // MAME_EMU_DIPALETTE_H diff --git a/src/emu/diserial.cpp b/src/emu/diserial.cpp index 9fae3f494f8..76209dfb35a 100644 --- a/src/emu/diserial.cpp +++ b/src/emu/diserial.cpp @@ -441,6 +441,7 @@ u8 device_serial_interface::transmit_register_get_data_bit() bit = (m_tra_register_data>>(m_tra_bit_count-1-m_tra_bit_count_transmitted))&1; m_tra_bit_count_transmitted++; + //device().logerror("%d bits transmitted\n", m_tra_bit_count_transmitted); /* have all bits of this stream formatted byte been sent? */ if (m_tra_bit_count_transmitted==m_tra_bit_count) diff --git a/src/emu/dislot.cpp b/src/emu/dislot.cpp index 7174293098c..ea80b1857bb 100644 --- a/src/emu/dislot.cpp +++ b/src/emu/dislot.cpp @@ -8,18 +8,35 @@ #include "emu.h" #include "emuopts.h" +#include "zippath.h" + + +// ------------------------------------------------- +// ctor +// ------------------------------------------------- device_slot_interface::device_slot_interface(const machine_config &mconfig, device_t &device) : device_interface(device, "slot"), m_default_option(nullptr), - m_fixed(false) + m_fixed(false), + m_card_device(nullptr) { } + +// ------------------------------------------------- +// dtor +// ------------------------------------------------- + device_slot_interface::~device_slot_interface() { } + +// ------------------------------------------------- +// device_slot_option ctor +// ------------------------------------------------- + device_slot_option::device_slot_option(const char *name, const device_type &devtype): m_name(name), m_devtype(devtype), @@ -31,6 +48,11 @@ device_slot_option::device_slot_option(const char *name, const device_type &devt { } + +// ------------------------------------------------- +// static_option_reset +// ------------------------------------------------- + void device_slot_interface::static_option_reset(device_t &device) { device_slot_interface &intf = dynamic_cast(device); @@ -38,6 +60,11 @@ void device_slot_interface::static_option_reset(device_t &device) intf.m_options.clear(); } + +// ------------------------------------------------- +// static_option_add +// ------------------------------------------------- + void device_slot_interface::static_option_add(device_t &device, const char *name, const device_type &devtype) { device_slot_interface &intf = dynamic_cast(device); @@ -49,6 +76,11 @@ void device_slot_interface::static_option_add(device_t &device, const char *name intf.m_options.emplace(std::make_pair(name, std::make_unique(name, devtype))); } + +// ------------------------------------------------- +// static_option +// ------------------------------------------------- + device_slot_option *device_slot_interface::static_option(device_t &device, const char *name) { device_slot_interface &intf = dynamic_cast(device); @@ -60,22 +92,10 @@ device_slot_option *device_slot_interface::static_option(device_t &device, const return option; } -device_t* device_slot_interface::get_card_device() -{ - std::string subtag; - device_t *dev = nullptr; - if (device().mconfig().options().exists(device().tag()+1)) - subtag = device().mconfig().options().main_value(device().tag()+1); - else if (m_default_option != nullptr) - subtag.assign(m_default_option); - if (!subtag.empty()) { - device_slot_card_interface *intf = nullptr; - dev = device().subdevice(subtag.c_str()); - if (dev!=nullptr && !dev->interface(intf)) - throw emu_fatalerror("get_card_device called for device '%s' with no slot card interface", dev->tag()); - } - return dev; -} + +// ------------------------------------------------- +// has_selectable_options +// ------------------------------------------------- bool device_slot_interface::has_selectable_options() const { @@ -89,6 +109,23 @@ bool device_slot_interface::has_selectable_options() const } +// ------------------------------------------------- +// option +// ------------------------------------------------- + +device_slot_option *device_slot_interface::option(const char *name) const +{ + device_slot_option *result = nullptr; + if (name) + { + auto search = m_options.find(name); + if (search != m_options.end()) + result = search->second.get(); + } + return result; +} + + device_slot_card_interface::device_slot_card_interface(const machine_config &mconfig, device_t &device) : device_interface(device, "slot") { @@ -97,3 +134,29 @@ device_slot_card_interface::device_slot_card_interface(const machine_config &mco device_slot_card_interface::~device_slot_card_interface() { } + +get_default_card_software_hook::get_default_card_software_hook(const std::string &path, std::function &&get_hashfile_extrainfo) + : m_get_hashfile_extrainfo(std::move(get_hashfile_extrainfo)) + , m_called_get_hashfile_extrainfo(false) + , m_has_hash_extrainfo(false) +{ + if (!path.empty()) + { + std::string revised_path; + util::zippath_fopen(path, OPEN_FLAG_READ, m_image_file, revised_path); + if (m_image_file) + m_file_type = core_filename_extract_extension(revised_path, true); + } +} + +bool get_default_card_software_hook::hashfile_extrainfo(std::string &extrainfo) +{ + if (!m_called_get_hashfile_extrainfo) + { + if (m_get_hashfile_extrainfo) + m_has_hash_extrainfo = m_get_hashfile_extrainfo(*image_file(), m_hash_extrainfo); + m_called_get_hashfile_extrainfo = true; + } + extrainfo = m_hash_extrainfo; + return m_has_hash_extrainfo; +} diff --git a/src/emu/dislot.h b/src/emu/dislot.h index 54b75a353fb..8f36d70386c 100644 --- a/src/emu/dislot.h +++ b/src/emu/dislot.h @@ -91,6 +91,34 @@ private: }; +// ======================> get_default_card_software_hook + +class get_default_card_software_hook +{ + // goofy "hook" to pass to device_slot_interface::get_default_card_software +public: + get_default_card_software_hook(const std::string &path, std::function &&get_hashfile_extrainfo); + + // accesses the image file to be scrutinized by get_default_card_software(); is + // nullptr in the case of images loaded by software list + util::core_file::ptr &image_file() { return m_image_file; } + + // checks to see if image is of the specified "file type" (in practice, file extension) + bool is_filetype(const char *candidate_filetype) const { return !core_stricmp(m_file_type.c_str(), candidate_filetype); } + + // extra info from hashfile + bool hashfile_extrainfo(std::string &extrainfo); + +private: + util::core_file::ptr m_image_file; + std::string m_file_type; + std::function m_get_hashfile_extrainfo; + bool m_called_get_hashfile_extrainfo; + bool m_has_hash_extrainfo; + std::string m_hash_extrainfo; +}; + + // ======================> device_slot_interface class device_slot_interface : public device_interface @@ -113,16 +141,20 @@ public: bool has_selectable_options() const; const char *default_option() const { return m_default_option; } const std::unordered_map> &option_list() const { return m_options; } - device_slot_option *option(const char *name) const { if (name) { auto search = m_options.find(name); if (search != m_options.end()) return search->second.get(); else return nullptr; } else return nullptr; } - virtual std::string get_default_card_software() { return std::string(); } - device_t *get_card_device(); + device_slot_option *option(const char *name) const; + virtual std::string get_default_card_software(get_default_card_software_hook &hook) const { return std::string(); } + device_t *get_card_device() { return m_card_device; } + void set_card_device(device_t *dev) { m_card_device = dev; } + const char *slot_name() const { return device().tag() + 1; } private: // internal state - static device_slot_option *static_option(device_t &device, const char *option); std::unordered_map> m_options; const char *m_default_option; bool m_fixed; + device_t *m_card_device; + + static device_slot_option *static_option(device_t &device, const char *option); }; // iterator diff --git a/src/emu/divideo.cpp b/src/emu/divideo.cpp index c2ac42fd1b2..4abe607dab3 100644 --- a/src/emu/divideo.cpp +++ b/src/emu/divideo.cpp @@ -126,6 +126,20 @@ void device_video_interface::interface_pre_start() throw emu_fatalerror("Device '%s' requires a screen", device().tag()); // if we have a screen and it's not started, wait for it + device_palette_interface *palintf; if (m_screen != nullptr && !m_screen->started()) - throw device_missing_dependencies(); + { + // avoid circular dependency if we are also a palette device + if (!device().interface(palintf)) + throw device_missing_dependencies(); + else + { + // resolve the palette for the sake of register_screen_bitmap + m_screen->resolve_palette(); + + // no other palette may be specified (FIXME: breaks meritm.cpp) + if (0 && m_screen->has_palette() && palintf != &m_screen->palette()) + throw emu_fatalerror("Device '%s' cannot control screen '%s' with palette '%s'", device().tag(), m_screen_tag, m_screen->palette().device().tag()); + } + } } diff --git a/src/emu/drawgfx.cpp b/src/emu/drawgfx.cpp index 0107d6418ba..7ba4d7bd7c5 100644 --- a/src/emu/drawgfx.cpp +++ b/src/emu/drawgfx.cpp @@ -66,10 +66,10 @@ static inline s32 normalize_yscroll(const bitmap_t &bitmap, s32 yscroll) // DEVICE DEFINITIONS //************************************************************************** -const device_type GFXDECODE = device_creator; +DEFINE_DEVICE_TYPE(GFXDECODE, gfxdecode_device, "gfxdecode", "gfxdecode") gfxdecode_device::gfxdecode_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : - device_t(mconfig, GFXDECODE, "gfxdecode", tag, owner, clock, "gfxdecode", __FILE__), + device_t(mconfig, GFXDECODE, tag, owner, clock), device_gfx_interface(mconfig, *this) { } @@ -86,7 +86,7 @@ gfxdecode_device::gfxdecode_device(const machine_config &mconfig, const char *ta // gfx_element - constructor //------------------------------------------------- -gfx_element::gfx_element(palette_device &palette, u8 *base, u16 width, u16 height, u32 rowbytes, u32 total_colors, u32 color_base, u32 color_granularity) +gfx_element::gfx_element(device_palette_interface &palette, u8 *base, u16 width, u16 height, u32 rowbytes, u32 total_colors, u32 color_base, u32 color_granularity) : m_palette(&palette), m_width(width), m_height(height), @@ -111,7 +111,7 @@ gfx_element::gfx_element(palette_device &palette, u8 *base, u16 width, u16 heigh { } -gfx_element::gfx_element(palette_device &palette, const gfx_layout &gl, const u8 *srcdata, u32 xormask, u32 total_colors, u32 color_base) +gfx_element::gfx_element(device_palette_interface &palette, const gfx_layout &gl, const u8 *srcdata, u32 xormask, u32 total_colors, u32 color_base) : m_palette(&palette), m_width(0), m_height(0), diff --git a/src/emu/drawgfx.h b/src/emu/drawgfx.h index bd5c7bde99e..4ff720b3054 100644 --- a/src/emu/drawgfx.h +++ b/src/emu/drawgfx.h @@ -151,11 +151,11 @@ public: #ifdef UNUSED_FUNCTION gfx_element(); #endif - gfx_element(palette_device &palette, const gfx_layout &gl, const u8 *srcdata, u32 xormask, u32 total_colors, u32 color_base); - gfx_element(palette_device &palette, u8 *base, u16 width, u16 height, u32 rowbytes, u32 total_colors, u32 color_base, u32 color_granularity); + gfx_element(device_palette_interface &palette, const gfx_layout &gl, const u8 *srcdata, u32 xormask, u32 total_colors, u32 color_base); + gfx_element(device_palette_interface &palette, u8 *base, u16 width, u16 height, u32 rowbytes, u32 total_colors, u32 color_base, u32 color_granularity); // getters - palette_device &palette() const { return *m_palette; } + device_palette_interface &palette() const { return *m_palette; } u16 width() const { return m_width; } u16 height() const { return m_height; } u32 elements() const { return m_total_elements; } @@ -175,7 +175,7 @@ public: void set_source(const u8 *source); void set_source_and_total(const u8 *source, u32 total); void set_xormask(u32 xormask) { m_layout_xormask = xormask; } - void set_palette(palette_device &palette) { m_palette = &palette; } + void set_palette(device_palette_interface &palette) { m_palette = &palette; } void set_colors(u32 colors) { m_total_colors = colors; } void set_colorbase(u16 colorbase) { m_color_base = colorbase; } void set_granularity(u16 granularity) { m_color_granularity = granularity; } @@ -269,7 +269,7 @@ private: void decode(u32 code); // internal state - palette_device *m_palette; // palette used for drawing + device_palette_interface *m_palette; // palette used for drawing u16 m_width; // current pixel width of each element (changeable with source clipping) u16 m_height; // current pixel height of each element (changeable with source clipping) diff --git a/src/emu/drivenum.cpp b/src/emu/drivenum.cpp index 41439f5dac4..eb2222fa7c5 100644 --- a/src/emu/drivenum.cpp +++ b/src/emu/drivenum.cpp @@ -311,7 +311,7 @@ void driver_enumerator::find_approximate_matches(const char *string, std::size_t if (m_included[index] && !(s_drivers_sorted[index]->flags & MACHINE_NO_STANDALONE)) { // pick the best match between driver name and description - int curpenalty = penalty_compare(string, s_drivers_sorted[index]->description); + int curpenalty = penalty_compare(string, s_drivers_sorted[index]->type.fullname()); int tmp = penalty_compare(string, s_drivers_sorted[index]->name); curpenalty = (std::min)(curpenalty, tmp); diff --git a/src/emu/driver.cpp b/src/emu/driver.cpp index 51b6b629544..79bef6a1c14 100644 --- a/src/emu/driver.cpp +++ b/src/emu/driver.cpp @@ -22,7 +22,7 @@ //------------------------------------------------- driver_device::driver_device(const machine_config &mconfig, device_type type, const char *tag) - : device_t(mconfig, type, "Driver Device", tag, nullptr, 0, "", __FILE__), + : device_t(mconfig, type, tag, nullptr, 0), m_system(nullptr), m_flip_screen_x(0), m_flip_screen_y(0) @@ -51,12 +51,6 @@ void driver_device::static_set_game(device_t &device, const game_driver &game) // set the system driver.m_system = &game; - // set the short name to the game's name - driver.m_shortname = game.name; - - // set the full name to the game's description - driver.m_name = game.description; - // and set the search path to include all parents driver.m_searchpath = game.name; for (int parent = driver_list::clone(game); parent != -1; parent = driver_list::clone(parent)) @@ -190,8 +184,7 @@ void driver_device::device_start() throw device_missing_dependencies(); // call the game-specific init - if (m_system->driver_init != nullptr) - (*m_system->driver_init)(machine()); + m_system->driver_init(machine()); // finish image devices init process machine().image().postdevice_init(); diff --git a/src/emu/driver.h b/src/emu/driver.h index 133e354a26d..3f64fb3a38d 100644 --- a/src/emu/driver.h +++ b/src/emu/driver.h @@ -89,8 +89,6 @@ //************************************************************************** // forward declarations -class gfxdecode_device; -class palette_device; typedef delegate driver_callback_delegate; @@ -123,13 +121,6 @@ public: static void static_set_game(device_t &device, const game_driver &game); static void static_set_callback(device_t &device, callback_type type, driver_callback_delegate callback); - // generic helpers - template - static void driver_init_wrapper(running_machine &machine) - { - (machine.driver_data<_DriverClass>()->*_Function)(); - } - // dummy driver_init callbacks void init_0() { } diff --git a/src/emu/drivers/empty.cpp b/src/emu/drivers/empty.cpp index 59a93d72ab3..5e7dfd253df 100644 --- a/src/emu/drivers/empty.cpp +++ b/src/emu/drivers/empty.cpp @@ -40,7 +40,7 @@ public: // MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( ___empty, empty_state ) +static MACHINE_CONFIG_START( ___empty ) // video hardware MCFG_SCREEN_ADD("screen", RASTER) @@ -66,4 +66,4 @@ ROM_END // GAME DRIVERS //************************************************************************** -GAME( 2007, ___empty, 0, ___empty, 0, driver_device, 0, ROT0, "MAME", "No Driver Loaded", MACHINE_NO_SOUND ) +GAME( 2007, ___empty, 0, ___empty, 0, empty_state, 0, ROT0, "MAME", "No Driver Loaded", MACHINE_NO_SOUND ) diff --git a/src/emu/drivers/xtal.h b/src/emu/drivers/xtal.h index 7e9e809aed2..fc524b5c2b7 100644 --- a/src/emu/drivers/xtal.h +++ b/src/emu/drivers/xtal.h @@ -60,6 +60,7 @@ enum XTAL_2_097152MHz = 2097152, /* Icatel 1995 - Brazilian public payphone */ XTAL_2_4576MHz = 2457600, /* Atari ST MFP, NEC PC-98xx */ XTAL_2_5MHz = 2500000, /* Janken Man units */ + XTAL_2_95MHz = 2950000, /* Playmatic MPU-C, MPU-III & Sound-3 */ XTAL_3MHz = 3000000, /* Probably only used to drive 68705 or similar MCUs on 80's Taito PCBs */ XTAL_3_072MHz = 3072000, /* INS 8520 input clock rate */ XTAL_3_12MHz = 3120000, /* SP0250 clock on Gottlieb games */ @@ -67,7 +68,7 @@ enum XTAL_3_52128MHz = 3521280, /* RCA COSMAC VIP */ XTAL_3_57864MHz = 3578640, /* Atari Portfolio PCD3311T */ XTAL_3_579545MHz = 3579545, /* NTSC color subcarrier, extremely common, used on 100's of PCBs (Keytronic custom part #48-300-010 is equivalent) */ - XTAL_3_6864MHz = 3686400, /* CPS3 */ + XTAL_3_6864MHz = 3686400, /* Baud rate clock for MC68681 and similar UARTs */ XTAL_4MHz = 4000000, XTAL_4_028MHz = 4028000, /* Sony SMC-777 */ XTAL_4_096MHz = 4096000, /* Used to drive OKI M9810 chips */ @@ -79,7 +80,7 @@ enum XTAL_4_608MHz = 4608000, /* Luxor ABC-77 keyboard (Keytronic custom part #48-300-107 is equivalent) */ XTAL_4_9152MHz = 4915200, XTAL_5MHz = 5000000, /* Mutant Night */ - XTAL_5_0688MHz = 5068800, /* Xerox 820, DEC VK100 */ + XTAL_5_0688MHz = 5068800, /* Usually used as MC2661 or COM8116 baud rate clock */ XTAL_5_3586MHz = 5358600, /* Eltec EurocomII */ XTAL_5_46MHz = 5460000, /* ec1840 and ec1841 keyboard */ XTAL_5_626MHz = 5626000, /* RCA CDP1869 PAL dot clock */ @@ -111,6 +112,7 @@ enum XTAL_9_987MHz = 9987000, /* Crazy Balloon */ XTAL_10MHz = 10000000, XTAL_10_245MHz = 10245000, /* PES Speech box */ + XTAL_10_5MHz = 10500000, /* Agat-7 */ XTAL_10_595MHz = 10595000, /* Mad Alien */ XTAL_10_6875MHz = 10687500, /* BBC Bridge Companion */ XTAL_10_69425MHz = 10694250, /* Xerox 820 */ @@ -119,7 +121,7 @@ enum XTAL_10_738635MHz = 10738635, /* TMS9918 family (3x NTSC subcarrier) */ XTAL_10_816MHz = 10816000, /* Universal 1979-1980 (Cosmic Alien, etc) */ XTAL_11MHz = 11000000, /* Mario I8039 sound */ - XTAL_11_0592MHz = 11059200, /* Lethal Justice, Ruleta RE-900, DEC VT220 */ + XTAL_11_0592MHz = 11059200, /* Used with MCS-51 to generate common baud rates */ XTAL_11_2MHz = 11200000, /* New York, New York */ XTAL_11_289MHz = 11289000, /* Vanguard */ XTAL_11_4MHz = 11400000, /* HP 9845 */ @@ -137,10 +139,12 @@ enum XTAL_12_9792MHz = 12979200, /* Exidy 440 */ XTAL_13_3MHz = 13300000, /* BMC bowling */ XTAL_13_33056MHz = 13330560, /* Taito L */ + XTAL_13_333MHz = 13333000, /* Ojanko High School */ XTAL_13_4MHz = 13400000, /* TNK3, Ikari Warriors h/w */ XTAL_13_4952MHz = 13495200, /* Used on Shadow Force pcb and maybe other Technos pcbs? */ XTAL_14MHz = 14000000, XTAL_14_112MHz = 14112000, /* Timex/Sinclair TS2068 */ + XTAL_14_3MHz = 14300000, /* Agat-7 */ XTAL_14_314MHz = 14314000, /* Taito TTL Board */ XTAL_14_31818MHz = 14318181, /* Extremely common, used on 100's of PCBs (4x NTSC subcarrier) */ XTAL_14_705882MHz = 14705882, /* Aleck64 */ @@ -150,6 +154,7 @@ enum XTAL_15_4MHz = 15400000, /* DVK KSM */ XTAL_15_468MHz = 15468480, /* Bank Panic h/w, Sega G80 */ XTAL_15_8976MHz = 15897600, /* IAI Swyft */ + XTAL_15_92MHz = 15920000, /* HP Integral PC */ XTAL_16MHz = 16000000, /* Extremely common, used on 100's of PCBs */ XTAL_16_384MHz = 16384000, XTAL_16_5888MHz = 16588800, /* SM 7238 */ @@ -183,7 +188,7 @@ enum XTAL_24_576MHz = 24576000, /* Pole Position h/w, Model 3 CPU board */ XTAL_24_8832MHz = 24883200, /* DEC VT100 */ XTAL_25MHz = 25000000, /* Namco System 22, Taito GNET, Dogyuun h/w */ - XTAL_25_1748MHz = 25174800, /* Sega S16A, S16B */ + XTAL_25_1748MHz = 25174800, /* Sega System 16A/16B (1600x NTSC line rate) */ XTAL_25_39836MHz = 25398360, /* Tandberg TDV 2324 */ XTAL_25_447MHz = 25447000, /* Namco EVA3A (Funcube2) */ XTAL_25_590906MHz = 25590906, /* Atari Jaguar NTSC */ @@ -228,8 +233,10 @@ enum XTAL_49_152MHz = 49152000, /* Used on some Namco PCBs, Baraduke h/w, System 21, Super System 22 */ XTAL_50MHz = 50000000, /* Williams/Midway T/W/V-unit system */ XTAL_50_113MHz = 50113000, /* Namco NA-1 (14x NTSC subcarrier)*/ + XTAL_50_349MHz = 50349000, /* Sega System 18 (~3200x NTSC line rate) */ XTAL_52MHz = 52000000, /* Cojag */ XTAL_52_832MHz = 52832000, /* Wang PC TIG video controller */ + XTAL_53_2034MHz = 53203400, /* Master System, Mega Drive PAL (~12x PAL subcarrier) */ XTAL_53_693175MHz = 53693175, /* PSX-based h/w, Sony ZN1-2-based (15x NTSC subcarrier) */ XTAL_54MHz = 54000000, /* Taito JC */ XTAL_55MHz = 55000000, /* Eolith Vega */ @@ -256,7 +263,8 @@ enum XTAL_600kHz = 600000, XTAL_640kHz = 640000, /* NEC UPD7759, Texas Instruments Speech Chips @ 8khz */ XTAL_960kHz = 960000, /* Xerox Notetaker Keyboard UART */ - XTAL_1_056MHz = 1056000 /* OKI M6295 on Trio The Punch h/w */ + XTAL_1_056MHz = 1056000, /* OKI M6295 on Trio The Punch h/w */ + XTAL_3_9MHz = 3900000 /* Used on some Fidelity boards */ }; diff --git a/src/emu/emu.h b/src/emu/emu.h index 58e6d4786f3..0ac15177739 100644 --- a/src/emu/emu.h +++ b/src/emu/emu.h @@ -30,6 +30,9 @@ #include "eminline.h" #include "profiler.h" +// http interface helpers +#include "http.h" + // commonly-referenced utilities imported from lib/util #include "palette.h" #include "unicode.h" @@ -70,6 +73,7 @@ typedef device_t * (*machine_config_constructor)(machine_config &config, device_ #include "dirom.h" #include "diexec.h" #include "opresolv.h" +#include "dipalette.h" #include "digfx.h" #include "diimage.h" #include "dioutput.h" @@ -115,4 +119,7 @@ typedef device_t * (*machine_config_constructor)(machine_config &config, device_ // member templates that don't like incomplete types #include "device.ipp" +template void game_driver::driver_init_helper_impl::invoke(driver_init_helper const &helper, running_machine &machine) +{ (machine.driver_data()->*static_cast const &>(helper).m_method)(); } + #endif /* __EMU_H__ */ diff --git a/src/emu/emumem.cpp b/src/emu/emumem.cpp index 723d705914a..debc9cbdd05 100644 --- a/src/emu/emumem.cpp +++ b/src/emu/emumem.cpp @@ -1853,10 +1853,7 @@ void address_space::allocate(std::vector> &space_ inline void address_space::adjust_addresses(offs_t &start, offs_t &end, offs_t &mask, offs_t &mirror) { // adjust start/end/mask values - if (mask == 0) - mask = m_addrmask & ~mirror; - else - mask &= m_addrmask; + mask &= m_addrmask; start &= ~mirror & m_addrmask; end &= ~mirror & m_addrmask; @@ -2027,7 +2024,7 @@ void address_space::prepare_map() entry.m_bytestart = entry.m_addrstart; entry.m_byteend = entry.m_addrend; entry.m_bytemirror = entry.m_addrmirror; - entry.m_bytemask = entry.m_addrmask; + entry.m_bytemask = entry.m_addrmask ? entry.m_addrmask : ~entry.m_addrmirror; adjust_addresses(entry.m_bytestart, entry.m_byteend, entry.m_bytemask, entry.m_bytemirror); // if we have a share entry, add it to our map @@ -2857,7 +2854,7 @@ memory_bank &address_space::bank_find_or_allocate(const char *tag, offs_t addrst // adjust the addresses, handling mirrors and such offs_t bytemirror = addrmirror; offs_t bytestart = addrstart; - offs_t bytemask = 0; + offs_t bytemask = ~addrmirror; offs_t byteend = addrend; adjust_addresses(bytestart, byteend, bytemask, bytemirror); @@ -3918,21 +3915,10 @@ direct_read_data::~direct_read_data() // update the opcode base for the given address //------------------------------------------------- -bool direct_read_data::set_direct_region(offs_t &byteaddress) +bool direct_read_data::set_direct_region(offs_t byteaddress) { - // allow overrides - offs_t overrideaddress = byteaddress; - if (!m_directupdate.isnull()) - { - overrideaddress = m_directupdate(*this, overrideaddress); - if (overrideaddress == ~0) - return true; - - byteaddress = overrideaddress; - } - // find or allocate a matching range - direct_range *range = find_range(overrideaddress, m_entry); + direct_range *range = find_range(byteaddress, m_entry); // if we don't map to a bank, return false if (m_entry < STATIC_BANK1 || m_entry > STATIC_BANKMAX) @@ -3946,7 +3932,7 @@ bool direct_read_data::set_direct_region(offs_t &byteaddress) u8 *base = *m_space.manager().bank_pointer_addr(m_entry); // compute the adjusted base - offs_t maskedbits = overrideaddress & ~m_space.bytemask(); + offs_t maskedbits = byteaddress & ~m_space.bytemask(); const handler_entry_read &handler = m_space.read().handler_read(m_entry); m_bytemask = handler.bytemask(); m_ptr = base - (handler.bytestart() & m_bytemask); @@ -4003,35 +3989,6 @@ void direct_read_data::remove_intersecting_ranges(offs_t bytestart, offs_t bytee } -//------------------------------------------------- -// set_direct_update - set a custom direct range -// update callback -//------------------------------------------------- - -direct_update_delegate direct_read_data::set_direct_update(direct_update_delegate function) -{ - direct_update_delegate old = m_directupdate; - m_directupdate = function; - return old; -} - - -//------------------------------------------------- -// explicit_configure - explicitly configure -// the start/end/mask and the pointers from -// within a custom callback -//------------------------------------------------- - -void direct_read_data::explicit_configure(offs_t bytestart, offs_t byteend, offs_t bytemask, void *ptr) -{ - m_bytestart = bytestart; - m_byteend = byteend; - m_bytemask = bytemask; - m_ptr = reinterpret_cast(ptr) - (bytestart & bytemask); -} - - - //************************************************************************** // MEMORY BLOCK //************************************************************************** @@ -4380,6 +4337,13 @@ void handler_entry::configure_subunits(u64 handlermask, int handlerbits, int &st if ((scanmask & unitmask) != 0) count++; } + if (count == 0 || count > maxunits) + throw emu_fatalerror("Invalid subunit mask %s for %d-bit space", core_i64_hex_format(handlermask, m_datawidth / 4), m_datawidth); + + // make sure that the multiplier is a power of 2 + int multiplier = count; + while (maxunits % multiplier != 0) + multiplier++; // fill in the shifts int cur_offset = 0; @@ -4389,12 +4353,12 @@ void handler_entry::configure_subunits(u64 handlermask, int handlerbits, int &st u32 shift = (unitnum^shift_xor_mask) * handlerbits; if (((handlermask >> shift) & unitmask) != 0) { - m_subunit_infos[m_subunits].m_bytemask = m_bytemask; + m_subunit_infos[m_subunits].m_bytemask = m_bytemask / (maxunits / multiplier); m_subunit_infos[m_subunits].m_mask = unitmask; m_subunit_infos[m_subunits].m_offset = cur_offset++; m_subunit_infos[m_subunits].m_size = handlerbits; m_subunit_infos[m_subunits].m_shift = shift; - m_subunit_infos[m_subunits].m_multiplier = count; + m_subunit_infos[m_subunits].m_multiplier = multiplier; m_subunits++; } diff --git a/src/emu/emumem.h b/src/emu/emumem.h index 946623f0c8b..138720647f8 100644 --- a/src/emu/emumem.h +++ b/src/emu/emumem.h @@ -59,7 +59,7 @@ enum read_or_write // referenced types from other classes class device_memory_interface; class device_t; -struct game_driver; +class game_driver; // forward declarations of classes defined here class address_map; @@ -106,12 +106,6 @@ struct data_accessors }; -// ======================> direct_update_delegate - -// direct region update handler -typedef delegate direct_update_delegate; - - // ======================> read_delegate // declare delegates for each width @@ -174,10 +168,6 @@ public: void force_update() { m_byteend = 0; m_bytestart = 1; } void force_update(u16 if_match) { if (m_entry == if_match) force_update(); } - // custom update callbacks and configuration - direct_update_delegate set_direct_update(direct_update_delegate function); - void explicit_configure(offs_t bytestart, offs_t byteend, offs_t bytemask, void *raw); - // accessor methods void *read_ptr(offs_t byteaddress, offs_t directxor = 0); u8 read_byte(offs_t byteaddress, offs_t directxor = 0); @@ -187,7 +177,7 @@ public: private: // internal helpers - bool set_direct_region(offs_t &byteaddress); + bool set_direct_region(offs_t byteaddress); direct_range *find_range(offs_t byteaddress, u16 &entry); void remove_intersecting_ranges(offs_t bytestart, offs_t byteend); @@ -199,7 +189,6 @@ private: offs_t m_byteend; // maximum valid byte address u16 m_entry; // live entry std::list m_rangelist[TOTAL_MEMORY_BANKS]; // list of ranges for each entry - direct_update_delegate m_directupdate; // fast direct-access update callback }; @@ -342,9 +331,6 @@ public: offs_t byte_to_address(offs_t address) const { return m_config.byte2addr(address); } offs_t byte_to_address_end(offs_t address) const { return m_config.byte2addr_end(address); } - // direct access - direct_update_delegate set_direct_update_handler(direct_update_delegate function) { return m_direct->set_direct_update(function); } - // umap ranges (short form) void unmap_read(offs_t addrstart, offs_t addrend, offs_t addrmirror = 0) { unmap_generic(addrstart, addrend, addrmirror, ROW_READ, false); } void unmap_write(offs_t addrstart, offs_t addrend, offs_t addrmirror = 0) { unmap_generic(addrstart, addrend, addrmirror, ROW_WRITE, false); } @@ -729,12 +715,6 @@ private: // MACROS //************************************************************************** -// opcode base adjustment handler function macro -#define DIRECT_UPDATE_MEMBER(name) offs_t name(ATTR_UNUSED direct_read_data &direct, ATTR_UNUSED offs_t address) -#define DECLARE_DIRECT_UPDATE_MEMBER(name) offs_t name(ATTR_UNUSED direct_read_data &direct, ATTR_UNUSED offs_t address) - - - // space read/write handler function macros #define READ8_MEMBER(name) u8 name(ATTR_UNUSED address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED u8 mem_mask) #define WRITE8_MEMBER(name) void name(ATTR_UNUSED address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED u8 data, ATTR_UNUSED u8 mem_mask) diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp index 284284dd665..2863ef35caf 100644 --- a/src/emu/emuopts.cpp +++ b/src/emu/emuopts.cpp @@ -2,7 +2,7 @@ // copyright-holders:Aaron Giles /*************************************************************************** - emuopts.c + emuopts.cpp Options file and command line management. @@ -11,6 +11,7 @@ #include "emu.h" #include "emuopts.h" + //************************************************************************** // CORE EMULATOR OPTIONS //************************************************************************** @@ -231,33 +232,6 @@ emu_options::emu_options() } -std::string emu_options::main_value(const char *name) const -{ - std::string buffer = value(name); - int pos = buffer.find_first_of(','); - if (pos != -1) - buffer = buffer.substr(0, pos); - return buffer; -} - -std::string emu_options::sub_value(const char *name, const char *subname) const -{ - std::string tmp = std::string(",").append(subname).append("="); - std::string buffer = value(name); - int pos = buffer.find(tmp); - if (pos != -1) - { - int endpos = buffer.find_first_of(',', pos + 1); - if (endpos == -1) - endpos = buffer.length(); - buffer = buffer.substr(pos + tmp.length(), endpos - pos - tmp.length()); - } - else - buffer.clear(); - return buffer; -} - - //------------------------------------------------- // value_changed - to prevent tagmap // lookups keep copies of frequently requested @@ -290,3 +264,167 @@ void emu_options::value_changed(const std::string &name, const std::string &valu m_ui = UI_CABINET; } } + + +//------------------------------------------------- +// override_get_value - when saving to an INI, we +// need to hook into that process so we can write +// out image/slot options +//------------------------------------------------- + +core_options::override_get_value_result emu_options::override_get_value(const char *name, std::string &value) const +{ + if (name) + { + auto slotiter = m_slot_options.find(name); + if (slotiter != m_slot_options.end()) + { + value = slotiter->second.specified_value(); + return slotiter->second.specified() + ? override_get_value_result::OVERRIDE + : override_get_value_result::SKIP; + } + + auto imageiter = m_image_options.find(name); + if (imageiter != m_image_options.end()) + { + value = imageiter->second; + return override_get_value_result::OVERRIDE; + } + } + + return override_get_value_result::NONE; +} + + +//------------------------------------------------- +// override_set_value - when parsing an INI, we +// need to hook into into it so we can do the same +// crazy slot logic done in mameopt +//------------------------------------------------- + +bool emu_options::override_set_value(const char *name, const std::string &value) +{ + auto slotiter = m_slot_options.find(name); + if (slotiter != m_slot_options.end()) + { + slotiter->second.specify(std::string(value)); + return true; + } + + auto imageiter = m_image_options.find(name); + if (imageiter != m_image_options.end()) + { + // We've found a potential image slot for this value. However, we're only going to specify it + // if the current image option is empty. This is because if there is an image option already + // present, it is almost certain that this was because something was specified at the command + // line and we're parsing an INI. Because INIs have less priority than the command line, this + // should be ignored + // + // Obviously, this ignores that INIs themselves have their own prioritization, so this should be + // considered to be a hack. Instead of having image options being just a straight map of std::string + // it should really be a structure where the priority can be recorded + if (imageiter->second.empty()) + imageiter->second = value; + return true; + } + + return false; +} + + +//------------------------------------------------- +// slot_option ctor +//------------------------------------------------- + +slot_option::slot_option(const char *default_value) + : m_specified(false) + , m_default_value(default_value ? default_value : "") +{ +} + + +//------------------------------------------------- +// slot_option::value +//------------------------------------------------- + +const std::string &slot_option::value() const +{ + // There are a number of ways that the value can be determined; there + // is a specific order of precedence: + // + // 1. Highest priority is whatever may have been specified by the user (whether it + // was specified at the command line, an INI file, or in the UI). We keep track + // of whether these values were specified this way + // + // Take note that slots have a notion of being "selectable". Slots that are not + // marked as selectable cannot be specified with this technique + // + // 2. Next highest is what is returned from get_default_card_software() + // + // 3. Last in priority is what was specified as the slot default. This comes from + // device setup + if (m_specified) + return m_specified_value; + else if (!m_default_card_software.empty()) + return m_default_card_software; + else + return m_default_value; +} + + +//------------------------------------------------- +// slot_option::specified_value +//------------------------------------------------- + +std::string slot_option::specified_value() const +{ + std::string result; + if (m_specified) + { + result = m_specified_bios.empty() + ? m_specified_value + : util::string_format("%s,bios=%s", m_specified_value, m_specified_bios); + } + return result; +} + + +//------------------------------------------------- +// slot_option::specify +//------------------------------------------------- + +void slot_option::specify(std::string &&text) +{ + // we need to do some elementary parsing here + const char *bios_arg = ",bios="; + + size_t pos = text.find(bios_arg); + if (pos != std::string::npos) + { + m_specified = true; + m_specified_value = text.substr(0, pos); + m_specified_bios = text.substr(pos + strlen(bios_arg)); + } + else + { + m_specified = true; + m_specified_value = std::move(text); + m_specified_bios = ""; + } +} + + +//------------------------------------------------- +// slot_option::set_bios +//------------------------------------------------- + +void slot_option::set_bios(std::string &&text) +{ + if (!m_specified) + { + m_specified = true; + m_specified_value = value(); + } + m_specified_bios = std::move(text); +} diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h index 9f1b4b644ec..e592d04d6e3 100644 --- a/src/emu/emuopts.h +++ b/src/emu/emuopts.h @@ -195,6 +195,54 @@ // TYPE DEFINITIONS //************************************************************************** +class slot_option +{ +public: + slot_option(const char *default_value = nullptr); + slot_option(const slot_option &that) = default; + slot_option(slot_option &&that) = default; + + const slot_option &operator=(const slot_option &that) + { + m_specified = that.m_specified; + m_specified_value = that.m_specified_value; + m_specified_bios = that.m_specified_bios; + m_default_card_software = that.m_default_card_software; + m_default_value = that.m_default_value; + return *this; + } + + const slot_option &operator=(slot_option &&that) + { + m_specified = that.m_specified; + m_specified_value = std::move(that.m_specified_value); + m_specified_bios = std::move(that.m_specified_bios); + m_default_card_software = std::move(that.m_default_card_software); + m_default_value = std::move(that.m_default_value); + return *this; + } + + // accessors + const std::string &value() const; + std::string specified_value() const; + const std::string &bios() const { return m_specified_bios; } + const std::string &default_card_software() const { return m_default_card_software; } + bool specified() const { return m_specified; } + + // seters + void specify(std::string &&text); + void set_bios(std::string &&text); + void set_default_card_software(std::string &&s) { m_default_card_software = std::move(s); } + +private: + bool m_specified; + std::string m_specified_value; + std::string m_specified_bios; + std::string m_default_card_software; + std::string m_default_value; +}; + + class emu_options : public core_options { public: @@ -384,21 +432,31 @@ public: short http_port() const { return int_value(OPTION_HTTP_PORT); } const char *http_root() const { return value(OPTION_HTTP_ROOT); } - std::string main_value(const char *option) const; - std::string sub_value(const char *name, const char *subname) const; + // slots and devices - the values for these are stored outside of the core_options + // structure + std::map &slot_options() { return m_slot_options; } + const std::map &slot_options() const { return m_slot_options; } + std::map &image_options() { return m_image_options; } + const std::map &image_options() const { return m_image_options; } protected: virtual void value_changed(const std::string &name, const std::string &value) override; + virtual override_get_value_result override_get_value(const char *name, std::string &value) const override; + virtual bool override_set_value(const char *name, const std::string &value) override; private: static const options_entry s_option_entries[]; - // cached options - int m_coin_impulse; - bool m_joystick_contradictory; - bool m_sleep; - bool m_refresh_speed; - ui_option m_ui; + // slots and devices + std::map m_slot_options; + std::map m_image_options; + + // cached options, for scenarios where parsing core_options is too slow + int m_coin_impulse; + bool m_joystick_contradictory; + bool m_sleep; + bool m_refresh_speed; + ui_option m_ui; }; #endif // MAME_EMU_EMUOPTS_H diff --git a/src/emu/emupal.cpp b/src/emu/emupal.cpp index 501349622ce..90ba40713cb 100644 --- a/src/emu/emupal.cpp +++ b/src/emu/emupal.cpp @@ -9,19 +9,17 @@ ***************************************************************************/ #include "emu.h" -#include "screen.h" - -#define VERBOSE 0 //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** -const device_type PALETTE = device_creator; +DEFINE_DEVICE_TYPE(PALETTE, palette_device, "palette", "palette") palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, PALETTE, "palette", tag, owner, clock, "palette", __FILE__), + : device_t(mconfig, PALETTE, tag, owner, clock), + device_palette_interface(mconfig, *this), m_entries(0), m_indirect_entries(0), m_enable_shadows(0), @@ -30,16 +28,8 @@ palette_device::palette_device(const machine_config &mconfig, const char *tag, d m_membits_supplied(false), m_endianness(), m_endianness_supplied(false), - m_raw_to_rgb(raw_to_rgb_converter()), - m_palette(nullptr), - m_pens(nullptr), - m_format(), - m_shadow_table(nullptr), - m_shadow_group(0), - m_hilight_group(0), - m_white_pen(0), - m_black_pen(0), - m_init(palette_init_delegate()) + m_init(palette_init_delegate()), + m_raw_to_rgb(raw_to_rgb_converter()) { } @@ -76,13 +66,13 @@ void palette_device::static_set_endianness(device_t &device, endianness_t endian } -void palette_device::static_set_entries(device_t &device, int entries) +void palette_device::static_set_entries(device_t &device, u32 entries) { downcast(device).m_entries = entries; } -void palette_device::static_set_indirect_entries(device_t &device, int entries) +void palette_device::static_set_indirect_entries(device_t &device, u32 entries) { downcast(device).m_indirect_entries = entries; } @@ -101,184 +91,6 @@ void palette_device::static_enable_hilights(device_t &device) -//************************************************************************** -// INDIRECTION (AKA COLORTABLES) -//************************************************************************** - -//------------------------------------------------- -// set_indirect_color - set an indirect color -//------------------------------------------------- - -void palette_device::set_indirect_color(int index, rgb_t rgb) -{ - // make sure we are in range - assert(index < m_indirect_entries); - - // alpha doesn't matter - rgb.set_a(255); - - // update if it has changed - if (m_indirect_colors[index] != rgb) - { - m_indirect_colors[index] = rgb; - - // update the palette for any colortable entries that reference it - for (u32 pen = 0; pen < m_indirect_pens.size(); pen++) - if (m_indirect_pens[pen] == index) - m_palette->entry_set_color(pen, rgb); - } -} - - -//------------------------------------------------- -// set_pen_indirect - set an indirect pen index -//------------------------------------------------- - -void palette_device::set_pen_indirect(pen_t pen, indirect_pen_t index) -{ - // make sure we are in range - assert(pen < m_entries && index < m_indirect_entries); - - m_indirect_pens[pen] = index; - - m_palette->entry_set_color(pen, m_indirect_colors[index]); -} - - -//------------------------------------------------- -// transpen_mask - return a mask of pens that -// whose indirect values match the given -// transcolor -//------------------------------------------------- - -u32 palette_device::transpen_mask(gfx_element &gfx, u32 color, indirect_pen_t transcolor) -{ - u32 entry = gfx.colorbase() + (color % gfx.colors()) * gfx.granularity(); - - // make sure we are in range - assert(entry < m_indirect_pens.size()); - assert(gfx.depth() <= 32); - - // either gfx->color_depth entries or as many as we can get up until the end - int count = std::min(size_t(gfx.depth()), m_indirect_pens.size() - entry); - - // set a bit anywhere the transcolor matches - u32 mask = 0; - for (int bit = 0; bit < count; bit++) - if (m_indirect_pens[entry++] == transcolor) - mask |= 1 << bit; - - // return the final mask - return mask; -} - - - -//************************************************************************** -// SHADOW TABLE CONFIGURATION -//************************************************************************** - -//------------------------------------------------- -// palette_set_shadow_mode(mode) -// -// mode: 0 = use preset 0 (default shadow) -// 1 = use preset 1 (default highlight) -// 2 = use preset 2 * -// 3 = use preset 3 * -// -// * Preset 2 & 3 work independently under 32bpp, -// supporting up to four different types of -// shadows at one time. They mirror preset 1 & 2 -// in lower depth settings to maintain -// compatibility. -// -// -// set_shadow_dRGB32(mode, dr, dg, db, noclip) -// -// mode: 0 to 3 (which preset to configure) -// -// dr: -255 to 255 ( red displacement ) -// dg: -255 to 255 ( green displacement ) -// db: -255 to 255 ( blue displacement ) -// -// noclip: 0 = resultant RGB clipped at 0x00/0xff -// 1 = resultant RGB wraparound 0x00/0xff -// -// -// * Color shadows only work under 32bpp. -// This function has no effect in lower color -// depths where -// -// set_shadow_factor() or -// set_highlight_factor() -// -// should be used instead. -// -// * 32-bit shadows are lossy. Even with zero RGB -// displacements the affected area will still look -// slightly darkened. -// -// Drivers should ensure all shadow pens in -// gfx_drawmode_table[] are set to DRAWMODE_NONE -// when RGB displacements are zero to avoid the -// darkening effect. -//------------------------------------------------- - -//------------------------------------------------- -// set_shadow_dRGB32 - configure delta RGB values -// for 1 of 4 shadow tables -//------------------------------------------------- - -void palette_device::set_shadow_dRGB32(int mode, int dr, int dg, int db, bool noclip) -{ - shadow_table_data &stable = m_shadow_tables[mode]; - - // only applies to RGB direct modes - assert(m_format != BITMAP_FORMAT_IND16); - assert(stable.base != nullptr); - - // clamp the deltas (why?) - if (dr < -0xff) dr = -0xff; else if (dr > 0xff) dr = 0xff; - if (dg < -0xff) dg = -0xff; else if (dg > 0xff) dg = 0xff; - if (db < -0xff) db = -0xff; else if (db > 0xff) db = 0xff; - - // early exit if nothing changed - if (dr == stable.dr && dg == stable.dg && db == stable.db && noclip == stable.noclip) - return; - stable.dr = dr; - stable.dg = dg; - stable.db = db; - stable.noclip = noclip; - - if (VERBOSE) - popmessage("shadow %d recalc %d %d %d %02x", mode, dr, dg, db, noclip); - - // regenerate the table - for (int i = 0; i < 32768; i++) - { - int r = pal5bit(i >> 10) + dr; - int g = pal5bit(i >> 5) + dg; - int b = pal5bit(i >> 0) + db; - - // apply clipping - if (!noclip) - { - r = rgb_t::clamp(r); - g = rgb_t::clamp(g); - b = rgb_t::clamp(b); - } - rgb_t final = rgb_t(r, g, b); - - // store either 16 or 32 bit - if (m_format == BITMAP_FORMAT_RGB32) - stable.base[i] = final; - else - stable.base[i] = final.as_rgb15(); - } -} - - - //************************************************************************** // GENERIC WRITE HANDLERS //************************************************************************** @@ -305,7 +117,7 @@ inline void palette_device::update_for_write(offs_t byte_offset, int bytes_modif if (indirect) set_indirect_color(base + index, m_raw_to_rgb(read_entry(base + index))); else - m_palette->entry_set_color(base + index, m_raw_to_rgb(read_entry(base + index))); + set_pen_color(base + index, m_raw_to_rgb(read_entry(base + index))); } } @@ -445,288 +257,9 @@ void palette_device::device_start() } } - // reset all our data - screen_device *device = machine().first_screen(); - m_format = (device != nullptr) ? device->format() : BITMAP_FORMAT_INVALID; - - // allocate the palette - if (m_entries > 0) - { - allocate_palette(); - allocate_color_tables(); - allocate_shadow_tables(); - - // allocate indirection tables - if (m_indirect_entries > 0) - { - m_indirect_colors.resize(m_indirect_entries); - for (int color = 0; color < m_indirect_entries; color++) - { - // alpha = 0 ensures change is detected the first time set_indirect_color() is called - m_indirect_colors[color] = rgb_t::transparent(); - } - - m_indirect_pens.resize(m_entries); - for (int pen = 0; pen < m_entries; pen++) - m_indirect_pens[pen] = pen % m_indirect_entries; - } - } - // call the initialization helper if present if (!m_init.isnull()) m_init(*this); - - // set up save/restore of the palette - m_save_pen.resize(m_palette->num_colors()); - m_save_contrast.resize(m_palette->num_colors()); - save_item(NAME(m_save_pen)); - save_item(NAME(m_save_contrast)); - - // save indirection tables if we have them - if (m_indirect_entries > 0) - { - save_item(NAME(m_indirect_colors)); - save_item(NAME(m_indirect_pens)); - } -} - - - -//************************************************************************** -// INTERNAL FUNCTIONS -//************************************************************************** - -//------------------------------------------------- -// device_pre_save - prepare the save arrays -// for saving -//------------------------------------------------- - -void palette_device::device_pre_save() -{ - // fill the save arrays with updated pen and brightness information - int numcolors = m_palette->num_colors(); - for (int index = 0; index < numcolors; index++) - { - m_save_pen[index] = pen_color(index); - m_save_contrast[index] = pen_contrast(index); - } -} - - -//------------------------------------------------- -// device_post_load - called after restore to -// actually update the palette -//------------------------------------------------- - -void palette_device::device_post_load() -{ - // reset the pen and brightness for each entry - int numcolors = m_palette->num_colors(); - for (int index = 0; index < numcolors; index++) - { - set_pen_color(index, m_save_pen[index]); - set_pen_contrast(index, m_save_contrast[index]); - } -} - - -//------------------------------------------------- -// device_stop - final cleanup -//------------------------------------------------- - -void palette_device::device_stop() -{ - // dereference the palette - if (m_palette != nullptr) - m_palette->deref(); -} - - -//------------------------------------------------- -// device_validity_check - validate device -// configuration -//------------------------------------------------- - -void palette_device::device_validity_check(validity_checker &valid) const -{ -} - - -//------------------------------------------------- -// allocate_palette - allocate and configure the -// palette object itself -//------------------------------------------------- - -void palette_device::allocate_palette() -{ - // determine the number of groups we need - int numgroups = 1; - if (m_enable_shadows) - m_shadow_group = numgroups++; - if (m_enable_hilights) - m_hilight_group = numgroups++; - assert_always(m_entries * numgroups <= 65536, "Palette has more than 65536 colors."); - - // allocate a palette object containing all the colors and groups - m_palette = palette_t::alloc(m_entries, numgroups); - - // configure the groups - if (m_shadow_group != 0) - set_shadow_factor(float(PALETTE_DEFAULT_SHADOW_FACTOR)); - if (m_hilight_group != 0) - set_highlight_factor(float(PALETTE_DEFAULT_HIGHLIGHT_FACTOR)); - - // set the initial colors to a standard rainbow - for (int index = 0; index < m_entries; index++) - set_pen_color(index, rgbexpand<1,1,1>(index, 0, 1, 2)); - - // switch off the color mode - switch (m_format) - { - // 16-bit paletteized case - case BITMAP_FORMAT_IND16: - m_black_pen = m_palette->black_entry(); - m_white_pen = m_palette->white_entry(); - if (m_black_pen >= 65536) - m_black_pen = 0; - if (m_white_pen >= 65536) - m_white_pen = 65535; - break; - - // 32-bit direct case - case BITMAP_FORMAT_RGB32: - m_black_pen = rgb_t::black(); - m_white_pen = rgb_t::white(); - break; - - // screenless case - case BITMAP_FORMAT_INVALID: - default: - break; - } -} - - -//------------------------------------------------- -// allocate_color_tables - allocate memory for -// pen and color tables -//------------------------------------------------- - -void palette_device::allocate_color_tables() -{ - int total_colors = m_palette->num_colors() * m_palette->num_groups(); - - // allocate memory for the pen table - switch (m_format) - { - case BITMAP_FORMAT_IND16: - // create a dummy 1:1 mapping - { - m_pen_array.resize(total_colors + 2); - pen_t *pentable = &m_pen_array[0]; - m_pens = &m_pen_array[0]; - for (int i = 0; i < total_colors + 2; i++) - pentable[i] = i; - } - break; - - case BITMAP_FORMAT_RGB32: - m_pens = reinterpret_cast(m_palette->entry_list_adjusted()); - break; - - default: - m_pens = nullptr; - break; - } -} - - -//------------------------------------------------- -// allocate_shadow_tables - allocate memory for -// shadow tables -//------------------------------------------------- - -void palette_device::allocate_shadow_tables() -{ - // if we have shadows, allocate shadow tables - if (m_enable_shadows) - { - m_shadow_array.resize(65536); - - // palettized mode gets a single 64k table in slots 0 and 2 - if (m_format == BITMAP_FORMAT_IND16) - { - m_shadow_tables[0].base = m_shadow_tables[2].base = &m_shadow_array[0]; - for (int i = 0; i < 65536; i++) - m_shadow_array[i] = (i < m_entries) ? (i + m_entries) : i; - } - - // RGB mode gets two 32k tables in slots 0 and 2 - else - { - m_shadow_tables[0].base = &m_shadow_array[0]; - m_shadow_tables[2].base = &m_shadow_array[32768]; - configure_rgb_shadows(0, float(PALETTE_DEFAULT_SHADOW_FACTOR)); - } - } - - // if we have hilights, allocate shadow tables - if (m_enable_hilights) - { - m_hilight_array.resize(65536); - - // palettized mode gets a single 64k table in slots 1 and 3 - if (m_format == BITMAP_FORMAT_IND16) - { - m_shadow_tables[1].base = m_shadow_tables[3].base = &m_hilight_array[0]; - for (int i = 0; i < 65536; i++) - m_hilight_array[i] = (i < m_entries) ? (i + 2 * m_entries) : i; - } - - // RGB mode gets two 32k tables in slots 1 and 3 - else - { - m_shadow_tables[1].base = &m_hilight_array[0]; - m_shadow_tables[3].base = &m_hilight_array[32768]; - configure_rgb_shadows(1, float(PALETTE_DEFAULT_HIGHLIGHT_FACTOR)); - } - } - - // set the default table - m_shadow_table = m_shadow_tables[0].base; -} - - -//------------------------------------------------- -// configure_rgb_shadows - configure shadows -// for the RGB tables -//------------------------------------------------- - -void palette_device::configure_rgb_shadows(int mode, float factor) -{ - // only applies to RGB direct modes - assert(m_format != BITMAP_FORMAT_IND16); - - // verify the shadow table - assert(mode >= 0 && mode < ARRAY_LENGTH(m_shadow_tables)); - shadow_table_data &stable = m_shadow_tables[mode]; - assert(stable.base != nullptr); - - // regenerate the table - int ifactor = int(factor * 256.0f); - for (int rgb555 = 0; rgb555 < 32768; rgb555++) - { - u8 const r = rgb_t::clamp((pal5bit(rgb555 >> 10) * ifactor) >> 8); - u8 const g = rgb_t::clamp((pal5bit(rgb555 >> 5) * ifactor) >> 8); - u8 const b = rgb_t::clamp((pal5bit(rgb555 >> 0) * ifactor) >> 8); - - // store either 16 or 32 bit - rgb_t final = rgb_t(r, g, b); - if (m_format == BITMAP_FORMAT_RGB32) - stable.base[rgb555] = final; - else - stable.base[rgb555] = final.as_rgb15(); - } } diff --git a/src/emu/emupal.h b/src/emu/emupal.h index bc8d11c459f..fe8a9b084b9 100644 --- a/src/emu/emupal.h +++ b/src/emu/emupal.h @@ -104,9 +104,6 @@ // CONSTANTS //************************************************************************** -#define PALETTE_DEFAULT_SHADOW_FACTOR (0.6) -#define PALETTE_DEFAULT_HIGHLIGHT_FACTOR (1/PALETTE_DEFAULT_SHADOW_FACTOR) - #define PALETTE_INIT_NAME(_Name) palette_init_##_Name #define DECLARE_PALETTE_INIT(_Name) void PALETTE_INIT_NAME(_Name)(palette_device &palette) #define PALETTE_INIT_MEMBER(_Class, _Name) void _Class::PALETTE_INIT_NAME(_Name)(palette_device &palette) @@ -170,7 +167,7 @@ #define PALETTE_FORMAT_XGRB raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 8,16,0>) #define PALETTE_FORMAT_RGBX raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 24,16,8>) #define PALETTE_FORMAT_GRBX raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 16,24,8>) - +#define PALETTE_FORMAT_BGRX raw_to_rgb_converter(4, &raw_to_rgb_converter::standard_rgb_decoder<8,8,8, 8,16,24>) //************************************************************************** @@ -288,10 +285,9 @@ // TYPE DEFINITIONS //************************************************************************** +class palette_device; // forward declaration typedef device_delegate palette_init_delegate; -typedef u16 indirect_pen_t; - // ======================> raw_to_rgb_converter @@ -360,10 +356,8 @@ private: // device type definition extern const device_type PALETTE; -class palette_device : public device_t +class palette_device : public device_t, public device_palette_interface { - static const int MAX_SHADOW_PRESETS = 4; - public: // construction/destruction palette_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); @@ -373,26 +367,14 @@ public: static void static_set_format(device_t &device, raw_to_rgb_converter raw_to_rgb); static void static_set_membits(device_t &device, int membits); static void static_set_endianness(device_t &device, endianness_t endianness); - static void static_set_entries(device_t &device, int entries); - static void static_set_indirect_entries(device_t &device, int entries); + static void static_set_entries(device_t &device, u32 entries); + static void static_set_indirect_entries(device_t &device, u32 entries); static void static_enable_shadows(device_t &device); static void static_enable_hilights(device_t &device); - // getters - int entries() const { return m_entries; } - int indirect_entries() const { return m_indirect_entries; } - palette_t *palette() const { return m_palette; } - const pen_t &pen(int index) const { return m_pens[index]; } - const pen_t *pens() const { return m_pens; } - pen_t *shadow_table() const { return m_shadow_table; } - rgb_t pen_color(pen_t pen) { return m_palette->entry_color(pen); } - double pen_contrast(pen_t pen) { return m_palette->entry_contrast(pen); } - pen_t black_pen() const { return m_black_pen; } - pen_t white_pen() const { return m_white_pen; } + // palette RAM accessors memory_array &basemem() { return m_paletteram; } memory_array &extmem() { return m_paletteram_ext; } - bool shadows_enabled() { return m_enable_shadows; } - bool hilights_enabled() { return m_enable_hilights; } // raw entry reading u32 read_entry(pen_t pen) const @@ -403,28 +385,6 @@ public: return data; } - // setters - void set_pen_color(pen_t pen, rgb_t rgb) { m_palette->entry_set_color(pen, rgb); } - void set_pen_red_level(pen_t pen, u8 level) { m_palette->entry_set_red_level(pen, level); } - void set_pen_green_level(pen_t pen, u8 level) { m_palette->entry_set_green_level(pen, level); } - void set_pen_blue_level(pen_t pen, u8 level) { m_palette->entry_set_blue_level(pen, level); } - void set_pen_color(pen_t pen, u8 r, u8 g, u8 b) { m_palette->entry_set_color(pen, rgb_t(r, g, b)); } - void set_pen_colors(pen_t color_base, const rgb_t *colors, int color_count) { while (color_count--) set_pen_color(color_base++, *colors++); } - void set_pen_colors(pen_t color_base, const std::vector &colors) { for(unsigned int i=0; i != colors.size(); i++) set_pen_color(color_base+i, colors[i]); } - void set_pen_contrast(pen_t pen, double bright) { m_palette->entry_set_contrast(pen, bright); } - - // indirection (aka colortables) - indirect_pen_t pen_indirect(int index) const { return m_indirect_pens[index]; } - rgb_t indirect_color(int index) const { return m_indirect_colors[index]; } - void set_indirect_color(int index, rgb_t rgb); - void set_pen_indirect(pen_t pen, indirect_pen_t index); - u32 transpen_mask(gfx_element &gfx, u32 color, indirect_pen_t transcolor); - - // shadow config - void set_shadow_factor(double factor) { assert(m_shadow_group != 0); m_palette->group_set_contrast(m_shadow_group, factor); } - void set_highlight_factor(double factor) { assert(m_hilight_group != 0); m_palette->group_set_contrast(m_hilight_group, factor); } - void set_shadow_mode(int mode) { assert(mode >= 0 && mode < MAX_SHADOW_PRESETS); m_shadow_table = m_shadow_tables[mode].base; } - // generic read/write handlers DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); @@ -455,75 +415,36 @@ public: // helper to update palette when data changed void update() { if (!m_init.isnull()) m_init(*this); } + protected: // device-level overrides - virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; - virtual void device_pre_save() override; - virtual void device_post_load() override; - virtual void device_stop() override; - void allocate_palette(); - void allocate_color_tables(); - void allocate_shadow_tables(); + // device_palette_interface overrides + virtual u32 palette_entries() const override { return m_entries; } + virtual u32 palette_indirect_entries() const override { return m_indirect_entries; } + virtual bool palette_shadows_enabled() const override { return m_enable_shadows; } + virtual bool palette_hilights_enabled() const override { return m_enable_hilights; } +private: void update_for_write(offs_t byte_offset, int bytes_modified, bool indirect = false); -public: // needed by konamigx - void set_shadow_dRGB32(int mode, int dr, int dg, int db, bool noclip); -protected: - void configure_rgb_shadows(int mode, float factor); -private: // configuration state - int m_entries; // number of entries in the palette - int m_indirect_entries; // number of indirect colors in the palette + u32 m_entries; // number of entries in the palette + u32 m_indirect_entries; // number of indirect colors in the palette bool m_enable_shadows; // are shadows enabled? bool m_enable_hilights; // are hilights enabled? int m_membits; // width of palette RAM, if different from native bool m_membits_supplied; // true if membits forced in static config endianness_t m_endianness; // endianness of palette RAM, if different from native bool m_endianness_supplied; // true if endianness forced in static config + palette_init_delegate m_init; // palette RAM raw_to_rgb_converter m_raw_to_rgb; // format of palette RAM memory_array m_paletteram; // base memory memory_array m_paletteram_ext; // extended memory - - // internal state - palette_t * m_palette; // the palette itself - const pen_t * m_pens; // remapped palette pen numbers - bitmap_format m_format; // format assumed for palette data - pen_t * m_shadow_table; // table for looking up a shadowed pen - u32 m_shadow_group; // index of the shadow group, or 0 if none - u32 m_hilight_group; // index of the hilight group, or 0 if none - pen_t m_white_pen; // precomputed white pen value - pen_t m_black_pen; // precomputed black pen value - - // indirection state - std::vector m_indirect_colors; // actual colors set for indirection - std::vector m_indirect_pens; // indirection values - - struct shadow_table_data - { - pen_t * base; // pointer to the base of the table - s16 dr; // delta red value - s16 dg; // delta green value - s16 db; // delta blue value - bool noclip; // clip? - }; - shadow_table_data m_shadow_tables[MAX_SHADOW_PRESETS]; // array of shadow table data - - std::vector m_save_pen; // pens for save/restore - std::vector m_save_contrast; // brightness for save/restore - - std::vector m_pen_array; - std::vector m_shadow_array; - std::vector m_hilight_array; - palette_init_delegate m_init; }; -// device type iterator -typedef device_type_iterator palette_device_iterator; - #endif // MAME_EMU_EMUPAL_H diff --git a/src/emu/gamedrv.h b/src/emu/gamedrv.h index 4c0779bb733..b501960859a 100644 --- a/src/emu/gamedrv.h +++ b/src/emu/gamedrv.h @@ -13,6 +13,8 @@ #pragma once +#include + //************************************************************************** // CONSTANTS @@ -62,20 +64,40 @@ constexpr u32 MACHINE_BTANB_FLAGS = MACHINE_IS_INCOMPLETE | MACHIN // TYPE DEFINITIONS //************************************************************************** -// static driver initialization callback -typedef void (*driver_init_func)(running_machine &machine); - // static POD structure describing each game driver entry -struct game_driver +class game_driver { - const char * source_file; // set this to __FILE__ +public: + class driver_init_helper + { + public: + void operator()(running_machine &machine) const { m_function(*this, machine); } + protected: + constexpr driver_init_helper(void (*function)(driver_init_helper const &, running_machine &)) : m_function(function) { } + constexpr driver_init_helper(driver_init_helper const &) = default; + private: + void (* const m_function)(driver_init_helper const &, running_machine &); + }; + + template class driver_init_helper_impl : public driver_init_helper + { + public: + constexpr driver_init_helper_impl(void (DriverClass::*method)()) : driver_init_helper(&driver_init_helper_impl::invoke), m_method(method) { } + constexpr driver_init_helper_impl(driver_init_helper_impl const &) = default; + private: + static void invoke(driver_init_helper const &helper, running_machine &machine); + void (DriverClass::*const m_method)(); + }; + + template static constexpr auto make_driver_init(void (DriverClass::*method)()) { return driver_init_helper_impl(method); } + + device_type type; // static type info for driver class const char * parent; // if this is a clone, the name of the parent - const char * description; // full name of the game const char * year; // year the game was released const char * manufacturer; // manufacturer of the game machine_config_constructor machine_config; // machine driver tokens ioport_constructor ipt; // pointer to constructor for input ports - driver_init_func driver_init; // DRIVER_INIT callback + driver_init_helper const & driver_init; // DRIVER_INIT callback const tiny_rom_entry * rom; // pointer to list of ROMs for the game const char * compatible_with; const internal_layout * default_layout; // default internally defined layout @@ -96,20 +118,29 @@ struct game_driver // wrappers for declaring and defining game drivers #define GAME_NAME(name) driver_##name +#define GAME_TRAITS_NAME(name) driver_##name##traits #define GAME_EXTERN(name) extern game_driver const GAME_NAME(name) +// static game traits +#define GAME_DRIVER_TRAITS(NAME, FULLNAME) \ +namespace { \ + struct GAME_TRAITS_NAME(NAME) { static constexpr char const shortname[] = #NAME, fullname[] = FULLNAME, source[] = __FILE__; }; \ + constexpr char const GAME_TRAITS_NAME(NAME)::shortname[], GAME_TRAITS_NAME(NAME)::fullname[], GAME_TRAITS_NAME(NAME)::source[]; \ +} +#define GAME_DRIVER_TYPE(NAME, CLASS) driver_device_creator + // standard GAME() macro #define GAME(YEAR,NAME,PARENT,MACHINE,INPUT,CLASS,INIT,MONITOR,COMPANY,FULLNAME,FLAGS) \ +GAME_DRIVER_TRAITS(NAME,FULLNAME) \ extern game_driver const GAME_NAME(NAME) \ { \ - __FILE__, \ + GAME_DRIVER_TYPE(NAME, CLASS), \ #PARENT, \ - FULLNAME, \ #YEAR, \ COMPANY, \ MACHINE_CONFIG_NAME(MACHINE), \ INPUT_PORTS_NAME(INPUT), \ - &driver_device::driver_init_wrapper, \ + game_driver::make_driver_init(&CLASS::init_##INIT), \ ROM_NAME(NAME), \ nullptr, \ nullptr, \ @@ -119,16 +150,16 @@ extern game_driver const GAME_NAME(NAME) \ // standard macro with additional layout #define GAMEL(YEAR,NAME,PARENT,MACHINE,INPUT,CLASS,INIT,MONITOR,COMPANY,FULLNAME,FLAGS,LAYOUT) \ +GAME_DRIVER_TRAITS(NAME,FULLNAME) \ extern game_driver const GAME_NAME(NAME) \ { \ - __FILE__, \ + GAME_DRIVER_TYPE(NAME, CLASS), \ #PARENT, \ - FULLNAME, \ #YEAR, \ COMPANY, \ MACHINE_CONFIG_NAME(MACHINE), \ INPUT_PORTS_NAME(INPUT), \ - &driver_device::driver_init_wrapper, \ + game_driver::make_driver_init(&CLASS::init_##INIT), \ ROM_NAME(NAME), \ nullptr, \ &LAYOUT, \ @@ -139,16 +170,16 @@ extern game_driver const GAME_NAME(NAME) \ // standard console definition macro #define CONS(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,INIT,COMPANY,FULLNAME,FLAGS) \ +GAME_DRIVER_TRAITS(NAME,FULLNAME) \ extern game_driver const GAME_NAME(NAME) \ { \ - __FILE__, \ + GAME_DRIVER_TYPE(NAME, CLASS), \ #PARENT, \ - FULLNAME, \ #YEAR, \ COMPANY, \ MACHINE_CONFIG_NAME(MACHINE), \ INPUT_PORTS_NAME(INPUT), \ - &driver_device::driver_init_wrapper, \ + game_driver::make_driver_init(&CLASS::init_##INIT), \ ROM_NAME(NAME), \ #COMPAT, \ nullptr, \ @@ -158,16 +189,16 @@ extern game_driver const GAME_NAME(NAME) \ // standard computer definition macro #define COMP(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,INIT,COMPANY,FULLNAME,FLAGS) \ +GAME_DRIVER_TRAITS(NAME,FULLNAME) \ extern game_driver const GAME_NAME(NAME) \ { \ - __FILE__, \ + GAME_DRIVER_TYPE(NAME, CLASS), \ #PARENT, \ - FULLNAME, \ #YEAR, \ COMPANY, \ MACHINE_CONFIG_NAME(MACHINE), \ INPUT_PORTS_NAME(INPUT), \ - &driver_device::driver_init_wrapper, \ + game_driver::make_driver_init(&CLASS::init_##INIT), \ ROM_NAME(NAME), \ #COMPAT, \ nullptr, \ @@ -177,16 +208,16 @@ extern game_driver const GAME_NAME(NAME) \ // standard system definition macro #define SYST(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,INIT,COMPANY,FULLNAME,FLAGS) \ +GAME_DRIVER_TRAITS(NAME,FULLNAME) \ extern game_driver const GAME_NAME(NAME) \ { \ - __FILE__, \ + GAME_DRIVER_TYPE(NAME, CLASS), \ #PARENT, \ - FULLNAME, \ #YEAR, \ COMPANY, \ MACHINE_CONFIG_NAME(MACHINE), \ INPUT_PORTS_NAME(INPUT), \ - &driver_device::driver_init_wrapper, \ + game_driver::make_driver_init(&CLASS::init_##INIT), \ ROM_NAME(NAME), \ #COMPAT, \ nullptr, \ diff --git a/src/emu/hashfile.cpp b/src/emu/hashfile.cpp index 6cd51f9997d..0d540f6f1ec 100644 --- a/src/emu/hashfile.cpp +++ b/src/emu/hashfile.cpp @@ -21,10 +21,10 @@ hashfile_lookup -------------------------------------------------*/ -bool read_hash_config(device_image_interface &image, const char *sysname, std::string &result) +static bool read_hash_config(const char *hash_path, const util::hash_collection &hashes, const char *sysname, std::string &result) { /* open a file */ - emu_file file(image.device().mconfig().options().hash_path(), OPEN_FLAG_READ); + emu_file file(hash_path, OPEN_FLAG_READ); if (file.open(sysname, ".hsi") != osd_file::error::NONE) { return false; @@ -37,8 +37,8 @@ bool read_hash_config(device_image_interface &image, const char *sysname, std::s { // Do search by CRC32 and SHA1 std::string query = "/hashfile/hash["; - auto crc = image.hash().internal_string().substr(1,8); - auto sha1 = image.hash().internal_string().substr(10, 40); + auto crc = hashes.internal_string().substr(1,8); + auto sha1 = hashes.internal_string().substr(10, 40); query += "@crc32='" + crc + "' and @sha1='" + sha1 + "']/extrainfo"; pugi::xpath_node_set tools = doc.select_nodes(query.c_str()); for (pugi::xpath_node_set::const_iterator it = tools.begin(); it != tools.end(); ++it) @@ -61,16 +61,16 @@ bool read_hash_config(device_image_interface &image, const char *sysname, std::s return false; } -bool hashfile_extrainfo(device_image_interface &image, std::string &result) + +bool hashfile_extrainfo(const char *hash_path, const game_driver &driver, const util::hash_collection &hashes, std::string &result) { /* now read the hash file */ - image.crc(); - int drv = driver_list::find(image.device().mconfig().gamedrv()); + int drv = driver_list::find(driver); int compat, open = drv; bool hashfound; do { - hashfound = read_hash_config(image, driver_list::driver(open).name, result); + hashfound = read_hash_config(hash_path, hashes, driver_list::driver(open).name, result); // first check if there are compatible systems compat = driver_list::compatible_with(open); // if so, try to open its hashfile @@ -87,3 +87,16 @@ bool hashfile_extrainfo(device_image_interface &image, std::string &result) while (!hashfound && open != -1); return hashfound; } + + + +bool hashfile_extrainfo(device_image_interface &image, std::string &result) +{ + return hashfile_extrainfo( + image.device().mconfig().options().hash_path(), + image.device().mconfig().gamedrv(), + image.hash(), + result); +} + + diff --git a/src/emu/hashfile.h b/src/emu/hashfile.h index 57432e9d638..2c12b8d867f 100644 --- a/src/emu/hashfile.h +++ b/src/emu/hashfile.h @@ -14,5 +14,6 @@ bool hashfile_extrainfo(device_image_interface &image, std::string &result); +bool hashfile_extrainfo(const char *hash_path, const game_driver &driver, const util::hash_collection &hashes, std::string &result); #endif /* __HASHFILE_H__ */ diff --git a/src/emu/http.cpp b/src/emu/http.cpp new file mode 100644 index 00000000000..48d45e89fa1 --- /dev/null +++ b/src/emu/http.cpp @@ -0,0 +1,213 @@ +// license:BSD-3-Clause +// copyright-holders:Miodrag Milanovic +/*************************************************************************** + +http.cpp + +HTTP server handling + +***************************************************************************/ + +#include "emu.h" +#include "server_ws.hpp" +#include "server_http.hpp" +#include + +const static struct mapping +{ + const char* extension; + const char* mime_type; +} mappings[] = +{ + { "aac", "audio/aac" }, + { "aat", "application/font-sfnt" }, + { "aif", "audio/x-aif" }, + { "arj", "application/x-arj-compressed" }, + { "asf", "video/x-ms-asf" }, + { "avi", "video/x-msvideo" }, + { "bmp", "image/bmp" }, + { "cff", "application/font-sfnt" }, + { "css", "text/css" }, + { "csv", "text/csv" }, + { "doc", "application/msword" }, + { "eps", "application/postscript" }, + { "exe", "application/octet-stream" }, + { "gif", "image/gif" }, + { "gz", "application/x-gunzip" }, + { "htm", "text/html" }, + { "html", "text/html" }, + { "ico", "image/x-icon" }, + { "ief", "image/ief" }, + { "jpeg", "image/jpeg" }, + { "jpg", "image/jpeg" }, + { "jpm", "image/jpm" }, + { "jpx", "image/jpx" }, + { "js", "application/javascript" }, + { "json", "application/json" }, + { "m3u", "audio/x-mpegurl" }, + { "m4v", "video/x-m4v" }, + { "mid", "audio/x-midi" }, + { "mov", "video/quicktime" }, + { "mp3", "audio/mpeg" }, + { "mp4", "video/mp4" }, + { "mpeg", "video/mpeg" }, + { "mpg", "video/mpeg" }, + { "oga", "audio/ogg" }, + { "ogg", "audio/ogg" }, + { "ogv", "video/ogg" }, + { "otf", "application/font-sfnt" }, + { "pct", "image/x-pct" }, + { "pdf", "application/pdf" }, + { "pfr", "application/font-tdpfr" }, + { "pict", "image/pict" }, + { "png", "image/png" }, + { "ppt", "application/x-mspowerpoint" }, + { "ps", "application/postscript" }, + { "qt", "video/quicktime" }, + { "ra", "audio/x-pn-realaudio" }, + { "ram", "audio/x-pn-realaudio" }, + { "rar", "application/x-arj-compressed" }, + { "rgb", "image/x-rgb" }, + { "rtf", "application/rtf" }, + { "sgm", "text/sgml" }, + { "shtm", "text/html" }, + { "shtml", "text/html" }, + { "sil", "application/font-sfnt" }, + { "svg", "image/svg+xml" }, + { "swf", "application/x-shockwave-flash" }, + { "tar", "application/x-tar" }, + { "tgz", "application/x-tar-gz" }, + { "tif", "image/tiff" }, + { "tiff", "image/tiff" }, + { "torrent", "application/x-bittorrent" }, + { "ttf", "application/font-sfnt" }, + { "txt", "text/plain" }, + { "wav", "audio/x-wav" }, + { "webm", "video/webm" }, + { "woff", "application/font-woff" }, + { "wrl", "model/vrml" }, + { "xhtml", "application/xhtml+xml" }, + { "xls", "application/x-msexcel" }, + { "xml", "text/xml" }, + { "xsl", "application/xml" }, + { "xslt", "application/xml" }, + { "zip", "application/x-zip-compressed" } +}; + +static std::string extension_to_type(const std::string& extension) +{ + for (mapping m : mappings) + { + if (m.extension == extension) + { + return m.mime_type; + } + } + + return "text/plain"; +} + +http_manager::http_manager(bool active, short port, const char *root) + : m_io_context(std::make_shared()) +{ + if (!active) return; + + m_server = std::make_unique(); + m_server->m_config.port = port; + m_server->set_io_context(m_io_context); + m_wsserver = std::make_unique(); + + auto& endpoint = m_wsserver->endpoint["/"]; + + m_server->on_get([this, root](auto response, auto request) { + std::string doc_root = root; + + std::string path = request->path; + // If path ends in slash (i.e. is a directory) then add "index.html". + if (path[path.size() - 1] == '/') + { + path += "index.html"; + } + + std::size_t last_qmark_pos = path.find_last_of("?"); + if (last_qmark_pos != std::string::npos) + path = path.substr(0, last_qmark_pos - 1); + + // Determine the file extension. + std::size_t last_slash_pos = path.find_last_of("/"); + std::size_t last_dot_pos = path.find_last_of("."); + std::string extension; + if (last_dot_pos != std::string::npos && last_dot_pos > last_slash_pos) + { + extension = path.substr(last_dot_pos + 1); + } + + // Open the file to send back. + std::string full_path = doc_root + path; + std::ifstream is(full_path.c_str(), std::ios::in | std::ios::binary); + if (!is) + { + response->status(400).send("Error"); + } + else + { + // Fill out the reply to be sent to the client. + std::string content; + char buf[512]; + while (is.read(buf, sizeof(buf)).gcount() > 0) + content.append(buf, size_t(is.gcount())); + + response->type(extension_to_type(extension)); + response->status(200).send(content); + } + }); + + endpoint.on_open = [&](auto connection) { + auto send_stream = std::make_shared(); + *send_stream << "update_machine"; + m_wsserver->send(connection, send_stream); + }; + + m_server->on_upgrade = [this](auto socket, auto request) { + auto connection = std::make_shared(socket); + connection->method = std::move(request->method); + connection->path = std::move(request->path); + connection->http_version = std::move(request->http_version); + connection->header = std::move(request->header); + connection->remote_endpoint_address = std::move(request->remote_endpoint_address); + connection->remote_endpoint_port = request->remote_endpoint_port; + m_wsserver->upgrade(connection); + }; + + m_server->start(); + + m_server_thread = std::thread([this]() { + m_io_context->run(); + }); +} + +http_manager::~http_manager() +{ + if (!m_server) return; + + m_server->stop(); + if (m_server_thread.joinable()) + m_server_thread.join(); +} + + +void http_manager::update() +{ + if (!m_server) return; + + m_server->clear(); + for (auto handler : m_handlers) + { + m_server->on_get(handler.first, [handler](auto response, auto request) + { + std::tuple output = handler.second(request->path); + response->type(std::get<2>(output)); + response->status(std::get<1>(output)).send(std::get<0>(output).c_str()); + }); + } +} diff --git a/src/emu/http.h b/src/emu/http.h new file mode 100644 index 00000000000..9f9f2e739b6 --- /dev/null +++ b/src/emu/http.h @@ -0,0 +1,57 @@ +// license:BSD-3-Clause +// copyright-holders:Miodrag Milanovic +/*************************************************************************** + +http.cpp + +HTTP server handling + +***************************************************************************/ + +#pragma once + +#ifndef __EMU_H__ +#error Dont include this file directly; include emu.h instead. +#endif + +#ifndef MAME_EMU_HTTP_H +#define MAME_EMU_HTTP_H + +#include +#include + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> http_manager +namespace asio +{ + class io_context; +} +namespace webpp +{ + class http_server; + class ws_server; +} + +class http_manager +{ + DISABLE_COPYING(http_manager); +public: + http_manager(bool active, short port, const char *root); + virtual ~http_manager(); + + void clear() { m_handlers.clear(); update(); } + void add(const char *url, std::function(std::string)> func) { m_handlers.emplace(url, func); } + void update(); +private: + std::shared_ptr m_io_context; + std::unique_ptr m_server; + std::unique_ptr m_wsserver; + std::thread m_server_thread; + std::unordered_map(std::string)>> m_handlers; +}; + + +#endif /* MAME_EMU_HTTP_H */ diff --git a/src/emu/image.cpp b/src/emu/image.cpp index 4f152908928..25167db54a2 100644 --- a/src/emu/image.cpp +++ b/src/emu/image.cpp @@ -37,27 +37,51 @@ image_manager::image_manager(running_machine &machine) if (!image.user_loadable()) continue; - // is an image specified for this image - const char *image_name_ptr = machine.options().value(image.instance_name().c_str()); - if ((image_name_ptr != nullptr) && (image_name_ptr[0] != '\0')) + // find the image option in image_options() + auto iter = machine.options().image_options().find(image.instance_name()); + + // GROSS HACK - if we began our journey with a single device configuration (e.g. - a single + // cartridge system) but later added a device of that type, image.instance_name() will become + // something different. We're going to try to accomodate that specific scenario here + // + // Specific example: 'mame snes -cart1 sufami -cart2 poipoi' - the instance_name() starts out + // as "cartridge" but at the end becomes "cartridge1" + if (iter == machine.options().image_options().end() + && (image.instance_name().rbegin() != image.instance_name().rend()) + && (*image.instance_name().rbegin() == '1')) { - image_init_result result = image_init_result::FAIL; - std::string image_name(image_name_ptr); + std::string alternate_instance_name = image.instance_name().substr(0, image.instance_name().size() - 1); + iter = machine.options().image_options().find(alternate_instance_name); - // mark init state - image.set_init_phase(); + // If we found something, we need to write it back (so later checks work). We also need to redo + // the find; the act of erasing the old value breaks the iterator + if (iter != machine.options().image_options().end()) + { + std::string temp = std::move(iter->second); + machine.options().image_options()[image.instance_name()] = std::move(temp); + machine.options().image_options().erase(alternate_instance_name); + iter = machine.options().image_options().find(image.instance_name()); + } + } + + // is an image specified for this image? + if (iter != machine.options().image_options().end() && !iter->second.empty()) + { + // we do have a startup image specified - load it + const std::string &startup_image(iter->second); + image_init_result result = image_init_result::FAIL; // try as a softlist - if (software_name_parse(image_name)) - result = image.load_software(image_name); + if (software_name_parse(startup_image)) + result = image.load_software(startup_image); // failing that, try as an image if (result != image_init_result::PASS) - result = image.load(image_name); + result = image.load(startup_image); // failing that, try creating it (if appropriate) if (result != image_init_result::PASS && image.support_command_line_image_creation()) - result = image.create(image_name); + result = image.create(startup_image); // did the image load fail? if (result != image_init_result::PASS) @@ -70,7 +94,7 @@ image_manager::image_manager(running_machine &machine) fatalerror_exitcode(machine, EMU_ERR_DEVICE, "Device %s load (%s) failed: %s", image.device().name(), - image_name.c_str(), + startup_image.c_str(), image_err.c_str()); } } @@ -177,24 +201,28 @@ int image_manager::write_config(emu_options &options, const char *filename, cons void image_manager::options_extract() { - /* only extract the device options if we've added them - no need to assert in case they are missing */ + for (device_image_interface &image : image_interface_iterator(machine().root_device())) { - int index = 0; - - for (device_image_interface &image : image_interface_iterator(machine().root_device())) + // only perform this activity for devices where is_reset_on_load() is false; for devices + // where this is true, manipulation of this value is done in reset_and_load() + if (!image.is_reset_on_load()) { - const char *filename = image.filename(); - - /* and set the option */ - std::string error; - machine().options().set_value(image.instance_name().c_str(), filename ? filename : "", OPTION_PRIORITY_CMDLINE, error); + // we have to assemble the image option differently for software lists and for normal images + std::string image_opt; + if (image.exists()) + { + if (image.loaded_through_softlist()) + image_opt = util::string_format("%s:%s:%s", image.software_list_name(), image.full_software_name(), image.brief_instance_name()); + else + image_opt = image.filename(); + } - index++; + // and set the option + machine().options().image_options()[image.instance_name()] = std::move(image_opt); } } - /* write the config, if appropriate */ + // write the config, if appropriate if (machine().options().write_config()) write_config(machine().options(), nullptr, &machine().system()); } diff --git a/src/emu/layout/ie15.lay b/src/emu/layout/ie15.lay new file mode 100644 index 00000000000..38b829ba317 --- /dev/null +++ b/src/emu/layout/ie15.lay @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp index bdd7ad4fc47..1568dada8ef 100644 --- a/src/emu/machine.cpp +++ b/src/emu/machine.cpp @@ -84,7 +84,6 @@ #include "network.h" #include "ui/uimain.h" #include -#include "server_http.hpp" #include "rapidjson/include/rapidjson/writer.h" #include "rapidjson/include/rapidjson/stringbuffer.h" @@ -126,7 +125,7 @@ running_machine::running_machine(const machine_config &_config, machine_manager m_ui_active(_config.options().ui_active()), m_basename(_config.gamedrv().name), m_sample_rate(_config.options().sample_rate()), - m_saveload_schedule(SLS_NONE), + m_saveload_schedule(saveload_schedule::NONE), m_saveload_schedule_time(attotime::zero), m_saveload_searchpath(nullptr), @@ -291,6 +290,8 @@ int running_machine::run(bool quiet) // use try/catch for deep error recovery try { + m_manager.http()->clear(); + // move to the init phase m_current_phase = MACHINE_PHASE_INIT; @@ -334,14 +335,16 @@ int running_machine::run(bool quiet) soft_reset(); // handle initial load - if (m_saveload_schedule != SLS_NONE) + if (m_saveload_schedule != saveload_schedule::NONE) handle_saveload(); export_http_api(); + m_manager.http()->update(); + // run the CPUs until a reset or exit m_hard_reset_pending = false; - while ((!m_hard_reset_pending && !m_exit_pending) || m_saveload_schedule != SLS_NONE) + while ((!m_hard_reset_pending && !m_exit_pending) || m_saveload_schedule != saveload_schedule::NONE) { g_profiler.start(PROFILER_EXTRA); @@ -358,11 +361,12 @@ int running_machine::run(bool quiet) m_video->frame_update(); // handle save/load - if (m_saveload_schedule != SLS_NONE) + if (m_saveload_schedule != saveload_schedule::NONE) handle_saveload(); g_profiler.stop(); } + m_manager.http()->clear(); // and out via the exit phase m_current_phase = MACHINE_PHASE_EXIT; @@ -567,7 +571,7 @@ std::string running_machine::get_statename(const char *option) const // for state loading/saving //------------------------------------------------- -std::string running_machine::compose_saveload_filename(const char *filename, const char **searchpath) +std::string running_machine::compose_saveload_filename(std::string &&filename, const char **searchpath) { std::string result; @@ -577,7 +581,7 @@ std::string running_machine::compose_saveload_filename(const char *filename, con // if so, this is easy if (searchpath != nullptr) *searchpath = nullptr; - result = filename; + result = std::move(filename); } else { @@ -599,10 +603,10 @@ std::string running_machine::compose_saveload_filename(const char *filename, con // for state loading/saving //------------------------------------------------- -void running_machine::set_saveload_filename(const char *filename) +void running_machine::set_saveload_filename(std::string &&filename) { // compose the save/load filename and persist it - m_saveload_pending_file = compose_saveload_filename(filename, &m_saveload_searchpath); + m_saveload_pending_file = compose_saveload_filename(std::move(filename), &m_saveload_searchpath); } @@ -611,13 +615,13 @@ void running_machine::set_saveload_filename(const char *filename) // soon as possible //------------------------------------------------- -void running_machine::schedule_save(const char *filename) +void running_machine::schedule_save(std::string &&filename) { // specify the filename to save or load - set_saveload_filename(filename); + set_saveload_filename(std::move(filename)); // note the start time and set a timer for the next timeslice to actually schedule it - m_saveload_schedule = SLS_SAVE; + m_saveload_schedule = saveload_schedule::SAVE; m_saveload_schedule_time = this->time(); // we can't be paused since we need to clear out anonymous timers @@ -635,7 +639,7 @@ void running_machine::immediate_save(const char *filename) set_saveload_filename(filename); // set up some parameters for handle_saveload() - m_saveload_schedule = SLS_SAVE; + m_saveload_schedule = saveload_schedule::SAVE; m_saveload_schedule_time = this->time(); // jump right into the save, anonymous timers can't hurt us! @@ -648,13 +652,13 @@ void running_machine::immediate_save(const char *filename) // soon as possible //------------------------------------------------- -void running_machine::schedule_load(const char *filename) +void running_machine::schedule_load(std::string &&filename) { // specify the filename to save or load - set_saveload_filename(filename); + set_saveload_filename(std::move(filename)); // note the start time and set a timer for the next timeslice to actually schedule it - m_saveload_schedule = SLS_LOAD; + m_saveload_schedule = saveload_schedule::LOAD; m_saveload_schedule_time = this->time(); // we can't be paused since we need to clear out anonymous timers @@ -672,7 +676,7 @@ void running_machine::immediate_load(const char *filename) set_saveload_filename(filename); // set up some parameters for handle_saveload() - m_saveload_schedule = SLS_LOAD; + m_saveload_schedule = saveload_schedule::LOAD; m_saveload_schedule_time = this->time(); // jump right into the load, anonymous timers can't hurt us @@ -856,7 +860,7 @@ void running_machine::handle_saveload() // if no name, bail if (!m_saveload_pending_file.empty()) { - const char *const opname = (m_saveload_schedule == SLS_LOAD) ? "load" : "save"; + const char *const opname = (m_saveload_schedule == saveload_schedule::LOAD) ? "load" : "save"; // if there are anonymous timers, we can't save just yet, and we can't load yet either // because the timers might overwrite data we have loaded @@ -870,17 +874,17 @@ void running_machine::handle_saveload() } else { - u32 const openflags = (m_saveload_schedule == SLS_LOAD) ? OPEN_FLAG_READ : (OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + u32 const openflags = (m_saveload_schedule == saveload_schedule::LOAD) ? OPEN_FLAG_READ : (OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); // open the file emu_file file(m_saveload_searchpath, openflags); auto const filerr = file.open(m_saveload_pending_file.c_str()); if (filerr == osd_file::error::NONE) { - const char *const opnamed = (m_saveload_schedule == SLS_LOAD) ? "loaded" : "saved"; + const char *const opnamed = (m_saveload_schedule == saveload_schedule::LOAD) ? "loaded" : "saved"; // read/write the save state - save_error saverr = (m_saveload_schedule == SLS_LOAD) ? m_save.read_file(file) : m_save.write_file(file); + save_error saverr = (m_saveload_schedule == saveload_schedule::LOAD) ? m_save.read_file(file) : m_save.write_file(file); // handle the result switch (saverr) @@ -914,7 +918,7 @@ void running_machine::handle_saveload() } // close and perhaps delete the file - if (saverr != STATERR_NONE && m_saveload_schedule == SLS_SAVE) + if (saverr != STATERR_NONE && m_saveload_schedule == saveload_schedule::SAVE) file.remove_on_close(); } else @@ -925,7 +929,7 @@ void running_machine::handle_saveload() // unschedule the operation m_saveload_pending_file.clear(); m_saveload_searchpath = nullptr; - m_saveload_schedule = SLS_NONE; + m_saveload_schedule = saveload_schedule::NONE; } @@ -1185,9 +1189,7 @@ running_machine::logerror_callback_item::logerror_callback_item(logerror_callbac void running_machine::export_http_api() { - if (!options().http()) return; - - m_manager.http_server()->on_get("/api/machine", [this](auto response, auto request) + m_manager.http()->add("/api/machine", [this](std::string) { rapidjson::StringBuffer s; rapidjson::Writer writer(s); @@ -1205,8 +1207,7 @@ void running_machine::export_http_api() writer.EndArray(); writer.EndObject(); - response->type("application/json"); - response->status(200).send(s.GetString()); + return std::make_tuple(std::string(s.GetString()), 200, "application/json"); }); } @@ -1279,10 +1280,10 @@ static ADDRESS_MAP_START(dummy, AS_0, 8, dummy_space_device) AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(read, write) ADDRESS_MAP_END -const device_type DUMMY_SPACE = device_creator; +DEFINE_DEVICE_TYPE(DUMMY_SPACE, dummy_space_device, "dummy_space", "Dummy Space") dummy_space_device::dummy_space_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : - device_t(mconfig, DUMMY_SPACE, "Dummy Space", tag, owner, clock, "dummy_space", __FILE__), + device_t(mconfig, DUMMY_SPACE, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("dummy", ENDIANNESS_LITTLE, 8, 32, 0, nullptr, *ADDRESS_MAP_NAME(dummy)) { @@ -1313,6 +1314,11 @@ static running_machine * jsmess_machine; void js_main_loop() { + if (jsmess_machine->paused()) { + jsmess_machine->video().frame_update(); + return; + } + device_scheduler * scheduler; scheduler = &(jsmess_machine->scheduler()); attotime stoptime(scheduler->time() + attotime(0,HZ_TO_ATTOSECONDS(60))); diff --git a/src/emu/machine.h b/src/emu/machine.h index bcef9f77f4d..5d3a6e3a047 100644 --- a/src/emu/machine.h +++ b/src/emu/machine.h @@ -167,11 +167,10 @@ class running_machine { DISABLE_COPYING(running_machine); - struct side_effect_disabler; + class side_effect_disabler; friend class sound_manager; friend class memory_manager; - friend struct side_effect_disabler; typedef std::function logerror_callback; @@ -223,7 +222,8 @@ public: screen_device *first_screen() const { return primary_screen; } // RAII-based side effect disable - side_effect_disabler disable_side_effect() { return side_effect_disabler(this); } + // NOP-ed when passed false, to make it more easily conditional + side_effect_disabler disable_side_effect(bool disable_se = true) { return side_effect_disabler(this, disable_se); } bool side_effect_disabled() const { return m_side_effect_disabled != 0; } // additional helpers @@ -256,8 +256,8 @@ public: void schedule_exit(); void schedule_hard_reset(); void schedule_soft_reset(); - void schedule_save(const char *filename); - void schedule_load(const char *filename); + void schedule_save(std::string &&filename); + void schedule_load(std::string &&filename); // date & time void base_datetime(system_time &systime); @@ -272,7 +272,7 @@ public: void strlog(const char *str) const; u32 rand(); const char *describe_context(); - std::string compose_saveload_filename(const char *base_filename, const char **searchpath = nullptr); + std::string compose_saveload_filename(std::string &&base_filename, const char **searchpath = nullptr); // CPU information cpu_device * firstcpu; // first CPU @@ -289,15 +289,19 @@ public: u32 debug_flags; // the current debug flags private: - struct side_effect_disabler { + class side_effect_disabler { running_machine *m_machine; + bool m_disable_se; - side_effect_disabler(running_machine *m) : m_machine(m) { - m_machine->disable_side_effect_count(); + public: + side_effect_disabler(running_machine *m, bool disable_se) : m_machine(m), m_disable_se(disable_se) { + if(m_disable_se) + m_machine->disable_side_effect_count(); } ~side_effect_disabler() { - m_machine->enable_side_effect_count(); + if(m_disable_se) + m_machine->enable_side_effect_count(); } side_effect_disabler(const side_effect_disabler &) = delete; @@ -311,7 +315,7 @@ private: template struct is_null { template static bool value(U &&x) { return false; } }; template struct is_null { template static bool value(U &&x) { return !x; } }; void start(); - void set_saveload_filename(const char *filename); + void set_saveload_filename(std::string &&filename); std::string get_statename(const char *statename_opt) const; void handle_saveload(); void soft_reset(void *ptr = nullptr, s32 param = 0); @@ -370,11 +374,11 @@ private: std::unique_ptr m_logfile; // pointer to the active log file // load/save management - enum saveload_schedule + enum class saveload_schedule { - SLS_NONE, - SLS_SAVE, - SLS_LOAD + NONE, + SAVE, + LOAD }; saveload_schedule m_saveload_schedule; attotime m_saveload_schedule_time; diff --git a/src/emu/main.cpp b/src/emu/main.cpp index 9d0e1e3aff4..9255d9f7c67 100644 --- a/src/emu/main.cpp +++ b/src/emu/main.cpp @@ -10,198 +10,16 @@ Controls execution of the core MAME system. #include "emu.h" #include "emuopts.h" -#include "main.h" -#include "server_ws.hpp" -#include "server_http.hpp" -#include - -const static struct mapping -{ - const char* extension; - const char* mime_type; -} mappings[] = -{ - { "aac", "audio/aac" }, - { "aat", "application/font-sfnt" }, - { "aif", "audio/x-aif" }, - { "arj", "application/x-arj-compressed" }, - { "asf", "video/x-ms-asf" }, - { "avi", "video/x-msvideo" }, - { "bmp", "image/bmp" }, - { "cff", "application/font-sfnt" }, - { "css", "text/css" }, - { "csv", "text/csv" }, - { "doc", "application/msword" }, - { "eps", "application/postscript" }, - { "exe", "application/octet-stream" }, - { "gif", "image/gif" }, - { "gz", "application/x-gunzip" }, - { "htm", "text/html" }, - { "html", "text/html" }, - { "ico", "image/x-icon" }, - { "ief", "image/ief" }, - { "jpeg", "image/jpeg" }, - { "jpg", "image/jpeg" }, - { "jpm", "image/jpm" }, - { "jpx", "image/jpx" }, - { "js", "application/javascript" }, - { "json", "application/json" }, - { "m3u", "audio/x-mpegurl" }, - { "m4v", "video/x-m4v" }, - { "mid", "audio/x-midi" }, - { "mov", "video/quicktime" }, - { "mp3", "audio/mpeg" }, - { "mp4", "video/mp4" }, - { "mpeg", "video/mpeg" }, - { "mpg", "video/mpeg" }, - { "oga", "audio/ogg" }, - { "ogg", "audio/ogg" }, - { "ogv", "video/ogg" }, - { "otf", "application/font-sfnt" }, - { "pct", "image/x-pct" }, - { "pdf", "application/pdf" }, - { "pfr", "application/font-tdpfr" }, - { "pict", "image/pict" }, - { "png", "image/png" }, - { "ppt", "application/x-mspowerpoint" }, - { "ps", "application/postscript" }, - { "qt", "video/quicktime" }, - { "ra", "audio/x-pn-realaudio" }, - { "ram", "audio/x-pn-realaudio" }, - { "rar", "application/x-arj-compressed" }, - { "rgb", "image/x-rgb" }, - { "rtf", "application/rtf" }, - { "sgm", "text/sgml" }, - { "shtm", "text/html" }, - { "shtml", "text/html" }, - { "sil", "application/font-sfnt" }, - { "svg", "image/svg+xml" }, - { "swf", "application/x-shockwave-flash" }, - { "tar", "application/x-tar" }, - { "tgz", "application/x-tar-gz" }, - { "tif", "image/tiff" }, - { "tiff", "image/tiff" }, - { "torrent", "application/x-bittorrent" }, - { "ttf", "application/font-sfnt" }, - { "txt", "text/plain" }, - { "wav", "audio/x-wav" }, - { "webm", "video/webm" }, - { "woff", "application/font-woff" }, - { "wrl", "model/vrml" }, - { "xhtml", "application/xhtml+xml" }, - { "xls", "application/x-msexcel" }, - { "xml", "text/xml" }, - { "xsl", "application/xml" }, - { "xslt", "application/xml" }, - { "zip", "application/x-zip-compressed" } -}; - -static std::string extension_to_type(const std::string& extension) -{ - for (mapping m : mappings) - { - if (m.extension == extension) - { - return m.mime_type; - } - } - - return "text/plain"; -} machine_manager::machine_manager(emu_options& options, osd_interface& osd) : m_osd(osd), m_options(options), - m_machine(nullptr), - m_io_context(std::make_shared()) -{ -} - -machine_manager::~machine_manager() + m_machine(nullptr) { - if (options().http()) - m_server->stop(); - if (m_server_thread.joinable()) - m_server_thread.join(); } void machine_manager::start_http_server() { - if (options().http()) - { - m_server = std::make_unique(); - m_server->m_config.port = options().http_port(); - m_server->set_io_context(m_io_context); - m_wsserver = std::make_unique(); - - auto& endpoint = m_wsserver->endpoint["/"]; - - m_server->on_get([this](auto response, auto request) { - std::string doc_root = this->options().http_root(); - - std::string path = request->path; - // If path ends in slash (i.e. is a directory) then add "index.html". - if (path[path.size() - 1] == '/') - { - path += "index.html"; - } - - std::size_t last_qmark_pos = path.find_last_of("?"); - if (last_qmark_pos != std::string::npos) - path = path.substr(0, last_qmark_pos - 1); - - // Determine the file extension. - std::size_t last_slash_pos = path.find_last_of("/"); - std::size_t last_dot_pos = path.find_last_of("."); - std::string extension; - if (last_dot_pos != std::string::npos && last_dot_pos > last_slash_pos) - { - extension = path.substr(last_dot_pos + 1); - } - - // Open the file to send back. - std::string full_path = doc_root + path; - std::ifstream is(full_path.c_str(), std::ios::in | std::ios::binary); - if (!is) - { - response->status(400).send("Error"); - } - - // Fill out the reply to be sent to the client. - std::string content; - char buf[512]; - while (is.read(buf, sizeof(buf)).gcount() > 0) - content.append(buf, size_t(is.gcount())); - - response->type(extension_to_type(extension)); - response->status(200).send(content); - - }); - - endpoint.on_open = [&](auto connection) { - auto send_stream = std::make_shared(); - *send_stream << "update_machine"; - m_wsserver->send(connection, send_stream); - }; - - m_server->on_upgrade = [this](auto socket, auto request) { - auto connection = std::make_shared(socket); - connection->method = std::move(request->method); - connection->path = std::move(request->path); - connection->http_version = std::move(request->http_version); - connection->header = std::move(request->header); - connection->remote_endpoint_address = std::move(request->remote_endpoint_address); - connection->remote_endpoint_port = request->remote_endpoint_port; - m_wsserver->upgrade(connection); - }; - m_server->start(); - } -} - -void machine_manager::start_context() -{ - m_server_thread = std::thread([this]() { - m_io_context->run(); - }); + m_http = std::make_unique(options().http(), options().http_port(), options().http_root()); } diff --git a/src/emu/main.h b/src/emu/main.h index b13bdee5dc3..9b61aa6b929 100644 --- a/src/emu/main.h +++ b/src/emu/main.h @@ -67,15 +67,6 @@ public: // ======================> machine_manager class ui_manager; -namespace asio -{ - class io_context; -} -namespace webpp -{ - class http_server; - class ws_server; -} class machine_manager { @@ -84,7 +75,7 @@ protected: // construction/destruction machine_manager(emu_options& options, osd_interface& osd); public: - virtual ~machine_manager(); + virtual ~machine_manager() { } osd_interface &osd() const { return m_osd; } emu_options &options() const { return m_options; } @@ -100,17 +91,14 @@ public: virtual void update_machine() { } + http_manager *http() { return m_http.get(); } void start_http_server(); - void start_context(); - webpp::http_server* http_server() const { return m_server.get(); } + protected: - osd_interface & m_osd; // reference to OSD system - emu_options & m_options; // reference to options - running_machine * m_machine; - std::shared_ptr m_io_context; - std::unique_ptr m_server; - std::unique_ptr m_wsserver; - std::thread m_server_thread; + osd_interface & m_osd; // reference to OSD system + emu_options & m_options; // reference to options + running_machine * m_machine; + std::unique_ptr m_http; }; diff --git a/src/emu/mconfig.cpp b/src/emu/mconfig.cpp index 15302ba0705..46ab9f71b9d 100644 --- a/src/emu/mconfig.cpp +++ b/src/emu/mconfig.cpp @@ -32,26 +32,41 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options) // construct the config (*gamedrv.machine_config)(*this, nullptr, nullptr); - bool is_selected_driver = core_stricmp(gamedrv.name,options.system_name())==0; // intialize slot devices - make sure that any required devices have been allocated - for (device_slot_interface &slot : slot_interface_iterator(root_device())) { device_t &owner = slot.device(); - std::string selval; - bool isdefault = (options.priority(owner.tag()+1)==OPTION_PRIORITY_DEFAULT); - if (is_selected_driver && options.exists(owner.tag()+1)) - selval = options.main_value(owner.tag()+1); - else if (slot.default_option() != nullptr) - selval.assign(slot.default_option()); - - if (!selval.empty()) + const char *slot_option_name = owner.tag() + 1; + + // figure out which device goes into this slot + bool has_option = options.slot_options().count(slot_option_name); + const char *selval; + bool is_default; + if (!has_option) + { + // Theoretically we should never get here; in the long run the expectation is that + // options.slot_options() should be fully qualified and all options should be + // present. However, we're getting late in the MAME 0.185 development cycle and + // I don't want to rip this out (yet) + selval = slot.default_option(); + is_default = true; + } + else + { + const slot_option &opt = options.slot_options()[slot_option_name]; + selval = opt.value().c_str(); + is_default = !opt.specified(); + } + + if (selval && *selval) { - const device_slot_option *option = slot.option(selval.c_str()); + const device_slot_option *option = slot.option(selval); - if (option && (isdefault || option->selectable())) + if (option && (is_default || option->selectable())) { + // create the device device_t *new_dev = device_add(&owner, option->name(), option->devtype(), option->clock()); + slot.set_card_device(new_dev); const char *default_bios = option->default_bios(); if (default_bios != nullptr) @@ -66,7 +81,7 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options) device_t::static_set_input_default(*new_dev, input_device_defaults); } else - throw emu_fatalerror("Unknown slot option '%s' in slot '%s'", selval.c_str(), owner.tag()+1); + throw emu_fatalerror("Unknown slot option '%s' in slot '%s'", selval, owner.tag()+1); } } @@ -220,7 +235,6 @@ device_t *machine_config::device_find(device_t *owner, const char *tag) // find the original device by relative tag (must exist) assert(owner != nullptr); device_t *device = owner->subdevice(tag); - assert(device != nullptr); if (device == nullptr) throw emu_fatalerror("Unable to find device '%s'\n", tag); diff --git a/src/emu/mconfig.h b/src/emu/mconfig.h index f89c8dfa9b7..8d7cb7827c7 100644 --- a/src/emu/mconfig.h +++ b/src/emu/mconfig.h @@ -103,18 +103,17 @@ private: #define MACHINE_CONFIG_NAME(_name) construct_machine_config_##_name /** - @def MACHINE_CONFIG_START(_name, _class) + @def MACHINE_CONFIG_START(_name) Begins a new machine config. @param _name name of this config - @param _class driver_device class for this config @hideinitializer */ -#define MACHINE_CONFIG_START(_name, _class) \ +#define MACHINE_CONFIG_START(_name) \ ATTR_COLD device_t *MACHINE_CONFIG_NAME(_name)(machine_config &config, device_t *owner, device_t *device) \ { \ devcb_base *devcb = nullptr; \ (void)devcb; \ - if (owner == nullptr) owner = config.device_add(nullptr, "root", driver_device_creator<_class>, 0); + if (owner == nullptr) owner = config.device_add(nullptr, "root", config.gamedrv().type, 0); /** @def MACHINE_CONFIG_FRAGMENT(_name) @@ -144,22 +143,6 @@ ATTR_COLD device_t *MACHINE_CONFIG_NAME(_name)(machine_config &config, device_t owner = MACHINE_CONFIG_NAME(_base)(config, owner, device); \ assert(owner != nullptr); -/** -@def MACHINE_CONFIG_DERIVED_CLASS(_name, _base, _class) -Begins a machine_config that is derived from another machine_config that can specify an alternate driver_device class -@param _name name of this config -@param _base name of the parent config -@param _class name of the alternate driver_device class -@hideinitializer -*/ -#define MACHINE_CONFIG_DERIVED_CLASS(_name, _base, _class) \ -ATTR_COLD device_t *MACHINE_CONFIG_NAME(_name)(machine_config &config, device_t *owner, device_t *device) \ -{ \ - devcb_base *devcb = nullptr; \ - (void)devcb; \ - if (owner == nullptr) owner = config.device_add(nullptr, "root", driver_device_creator<_class>, 0); \ - owner = MACHINE_CONFIG_NAME(_base)(config, owner, device); - /** @def MACHINE_CONFIG_END Ends a machine_config. diff --git a/src/emu/render.h b/src/emu/render.h index 3a5b5cecccc..2f86b6032e0 100644 --- a/src/emu/render.h +++ b/src/emu/render.h @@ -1110,7 +1110,7 @@ public: void set_max_texture_size(int maxwidth, int maxheight); void set_transform_container(bool transform_container) { m_transform_container = transform_container; } void set_keepaspect(bool keepaspect) { m_keepaspect = keepaspect; } - void set_scale_mode(bool scale_mode) { m_scale_mode = scale_mode; } + void set_scale_mode(int scale_mode) { m_scale_mode = scale_mode; } // layer config getters bool backdrops_enabled() const { return m_layerconfig.backdrops_enabled(); } diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index f2ca54705a7..118c7fcc0fe 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -1064,36 +1064,65 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_ else err = CHDERR_FILE_NOT_FOUND; - /* otherwise, look at our parents for a CHD with an identical checksum */ - /* and try to open that */ + // Otherwise, look at our parents for a CHD with an identical checksum + // and try to open that + // + // An example of a system that requires this is src/mame/drivers/ksys673.cpp, that has declarations like this: + // ... + // DISK_IMAGE_READONLY("889aa", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac)) + // ... + // DISK_IMAGE_READONLY("889ea", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac)) + // ... + // DISK_IMAGE_READONLY("889ja", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac)) + // ... + // DISK_IMAGE_READONLY("889ua", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac)) + // ... util::hash_collection romphashes(ROM_GETHASHDATA(romp)); for (int drv = driver_list::find(*gamedrv); drv != -1; drv = driver_list::clone(drv)) { - machine_config config(driver_list::driver(drv), options); + const game_driver ¤t_driver(driver_list::driver(drv)); + + // Create a single use emu_option structure for the purposes of this lookup, just + // carrying forward the options that are necessary for CHD lookup. This is because the + // options passed to us may have slot/image configurations that are "poisonous" for these + // other drivers + // + // A side effect of this approach is that the "dragnet" to find CHDs with identical hashes + // will only find CHDs for the default configuration. I believe that this in practice will + // be acceptable. + emu_options driver_specific_options; + std::string error_string; + driver_specific_options.set_value(OPTION_SYSTEMNAME, options.system_name(), OPTION_PRIORITY_DEFAULT, error_string); + driver_specific_options.set_value(OPTION_MEDIAPATH, options.media_path(), OPTION_PRIORITY_DEFAULT, error_string); + driver_specific_options.set_value(OPTION_DIFF_DIRECTORY, options.diff_directory(), OPTION_PRIORITY_DEFAULT, error_string); + + // Now that we have an emu_options structure properly set up, we can create a machine_config + machine_config config(current_driver, driver_specific_options); + for (device_t &device : device_iterator(config.root_device())) for (region = rom_first_region(device); region != nullptr; region = rom_next_region(region)) if (ROMREGION_ISDISKDATA(region)) for (rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom)) - /* look for a differing name but with the same hash data */ + // Look for a differing name but with the same hash data if (strcmp(ROM_GETNAME(romp), ROM_GETNAME(rom)) != 0 && romphashes == util::hash_collection(ROM_GETHASHDATA(rom))) { - /* attempt to open the properly named file, scanning up through parent directories */ + // Attempt to open the properly named file, scanning up through parent directories filerr = osd_file::error::NOT_FOUND; for (int searchdrv = drv; searchdrv != -1 && filerr != osd_file::error::NONE; searchdrv = driver_list::clone(searchdrv)) - filerr = common_process_file(options, driver_list::driver(searchdrv).name, ".chd", rom, image_file); + filerr = common_process_file(driver_specific_options, driver_list::driver(searchdrv).name, ".chd", rom, image_file); if (filerr != osd_file::error::NONE) - filerr = common_process_file(options, nullptr, ".chd", rom, image_file); + filerr = common_process_file(driver_specific_options, nullptr, ".chd", rom, image_file); - /* did the file open succeed? */ + // Did the file open succeed? if (filerr == osd_file::error::NONE) { std::string fullpath(image_file.fullpath()); image_file.close(); - /* try to open the CHD */ + // try to open the CHD err = image_chd.open(fullpath.c_str()); if (err == CHDERR_NONE) return err; @@ -1467,9 +1496,13 @@ rom_load_manager::rom_load_manager(running_machine &machine) specbios.assign(machine.options().bios()); else { - specbios = machine.options().sub_value(device.owner()->tag()+1,"bios"); - if (specbios.empty()) - specbios = device.default_bios_tag(); + const char *slot_option_name = device.owner()->tag() + 1; + const slot_option *opt = machine.options().slot_options().count(slot_option_name) + ? &machine.options().slot_options()[slot_option_name] + : nullptr; + specbios = opt && !opt->bios().empty() + ? opt->bios().c_str() + : device.default_bios_tag(); } determine_bios_rom(device, specbios.c_str()); } diff --git a/src/emu/schedule.cpp b/src/emu/schedule.cpp index 16e880e8a58..49346b2c3b0 100644 --- a/src/emu/schedule.cpp +++ b/src/emu/schedule.cpp @@ -299,7 +299,10 @@ void emu_timer::dump() const { machine().logerror("%p: en=%d temp=%d exp=%15s start=%15s per=%15s param=%d ptr=%p", this, m_enabled, m_temporary, m_expire.as_string(PRECISION), m_start.as_string(PRECISION), m_period.as_string(PRECISION), m_param, m_ptr); if (m_device == nullptr) - machine().logerror(" cb=%s\n", m_callback.name()); + if (m_callback.name() == nullptr) + machine().logerror(" cb=NULL\n"); + else + machine().logerror(" cb=%s\n", m_callback.name()); else machine().logerror(" dev=%s id=%d\n", m_device->tag(), m_id); } diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp index 8fd134ba470..1333ee3c4a2 100644 --- a/src/emu/screen.cpp +++ b/src/emu/screen.cpp @@ -31,10 +31,7 @@ //************************************************************************** // device type definition -const device_type SCREEN = device_creator; - -template class device_finder; -template class device_finder; +DEFINE_DEVICE_TYPE(SCREEN, screen_device, "screen", "Video Screen") const attotime screen_device::DEFAULT_FRAME_PERIOD(attotime::from_hz(DEFAULT_FRAME_RATE)); @@ -548,7 +545,7 @@ void screen_device_svg_renderer::rebuild_cache() //------------------------------------------------- screen_device::screen_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, SCREEN, "Video Screen", tag, owner, clock, "screen", __FILE__), + : device_t(mconfig, SCREEN, tag, owner, clock), m_type(SCREEN_TYPE_RASTER), m_oldstyle_vblank_supplied(false), m_refresh(0), @@ -557,7 +554,9 @@ screen_device::screen_device(const machine_config &mconfig, const char *tag, dev m_yoffset(0.0f), m_xscale(1.0f), m_yscale(1.0f), - m_palette(*this, finder_base::DUMMY_TAG), + m_screen_vblank(*this), + m_palette(nullptr), + m_palette_tag(nullptr), m_video_attributes(0), m_svg_region(nullptr), m_container(nullptr), @@ -719,17 +718,6 @@ void screen_device::static_set_screen_update(device_t &device, screen_update_rgb } -//------------------------------------------------- -// static_set_screen_vblank - set the screen -// VBLANK callback in the device configuration -//------------------------------------------------- - -void screen_device::static_set_screen_vblank(device_t &device, screen_vblank_delegate callback) -{ - downcast(device).m_screen_vblank = callback; -} - - //------------------------------------------------- // static_set_palette - set the screen palette // configuration @@ -737,7 +725,7 @@ void screen_device::static_set_screen_vblank(device_t &device, screen_vblank_del void screen_device::static_set_palette(device_t &device, const char *tag) { - downcast(device).m_palette.set_tag(tag); + downcast(device).m_palette_tag = tag; } @@ -795,10 +783,23 @@ void screen_device::device_validity_check(validity_checker &valid) const osd_printf_error("Invalid (zero) refresh rate\n"); texture_format texformat = !m_screen_update_ind16.isnull() ? TEXFORMAT_PALETTE16 : TEXFORMAT_RGB32; - if (m_palette == nullptr && texformat == TEXFORMAT_PALETTE16) + if (m_palette_tag != nullptr) + { + if (texformat == TEXFORMAT_RGB32) + osd_printf_warning("Screen does not need palette defined\n"); + + device_t *paldev = owner()->subdevice(m_palette_tag); + if (paldev == nullptr) + osd_printf_error("Nonexistent device '%s' specified as palette\n", m_palette_tag); + else + { + device_palette_interface *palintf; + if (!paldev->interface(palintf)) + osd_printf_error("Device '%s' specified as palette, but it has no palette interface\n", m_palette_tag); + } + } + else if (texformat == TEXFORMAT_PALETTE16) osd_printf_error("Screen does not have palette defined\n"); - if (m_palette != nullptr && texformat == TEXFORMAT_RGB32) - osd_printf_warning("Screen does not need palette defined\n"); } @@ -828,10 +829,11 @@ void screen_device::device_start() // bind our handlers m_screen_update_ind16.bind_relative_to(*owner()); m_screen_update_rgb32.bind_relative_to(*owner()); - m_screen_vblank.bind_relative_to(*owner()); + m_screen_vblank.resolve_safe(); // if we have a palette and it's not started, wait for it - if (m_palette != nullptr && !m_palette->started()) + resolve_palette(); + if (m_palette != nullptr && !m_palette->device().started()) throw device_missing_dependencies(); // configure bitmap formats and allocate screen bitmaps @@ -1245,9 +1247,12 @@ void screen_device::update_now() // if the line before us was incomplete, we must do it in two pieces if (m_partial_scan_hpos > 0) { - s32 save_scan = m_partial_scan_hpos; - update_partial(current_vpos - 2); - m_partial_scan_hpos = save_scan; + if (current_vpos > 1) + { + s32 save_scan = m_partial_scan_hpos; + update_partial(current_vpos - 2); + m_partial_scan_hpos = save_scan; + } // now finish the previous partial scanline int scanline = current_vpos - 1; @@ -1476,6 +1481,28 @@ void screen_device::register_screen_bitmap(bitmap_t &bitmap) } +//------------------------------------------------- +// resolve_palette - find the specified palette +//------------------------------------------------- + +void screen_device::resolve_palette() +{ + if (m_palette_tag != nullptr && m_palette == nullptr) + { + // find our palette as a sibling device + device_t *palette = owner()->subdevice(m_palette_tag); + if (palette == nullptr) + fatalerror("Screen '%s' specifies nonexistent device '%s' as palette\n", + tag(), + m_palette_tag); + if (!palette->interface(m_palette)) + fatalerror("Screen '%s' specifies device '%s' as palette, but it has no palette interface\n", + tag(), + m_palette_tag); + } +} + + //------------------------------------------------- // vblank_begin - call any external callbacks to // signal the VBLANK period has begun @@ -1494,8 +1521,7 @@ void screen_device::vblank_begin() // call the screen specific callbacks for (auto &item : m_callback_list) item->m_callback(*this, true); - if (!m_screen_vblank.isnull()) - m_screen_vblank(*this, true); + m_screen_vblank(1); // reset the VBLANK start timer for the next frame m_vblank_begin_timer->adjust(time_until_vblank_start()); @@ -1518,8 +1544,7 @@ void screen_device::vblank_end() // call the screen specific callbacks for (auto &item : m_callback_list) item->m_callback(*this, false); - if (!m_screen_vblank.isnull()) - m_screen_vblank(*this, false); + m_screen_vblank(0); // if this is the primary screen and we need to update now if (this == machine().first_screen() && (m_video_attributes & VIDEO_UPDATE_AFTER_VBLANK)) @@ -1701,7 +1726,7 @@ void screen_device::finalize_burnin() // add two text entries describing the image sprintf(text,"%s %s", emulator_info::get_appname(), emulator_info::get_build_version()); png_add_text(&pnginfo, "Software", text); - sprintf(text, "%s %s", machine().system().manufacturer, machine().system().description); + sprintf(text, "%s %s", machine().system().manufacturer, machine().system().type.fullname()); png_add_text(&pnginfo, "System", text); // now do the actual work diff --git a/src/emu/screen.h b/src/emu/screen.h index 1e1627e3055..21ba8ac186a 100644 --- a/src/emu/screen.h +++ b/src/emu/screen.h @@ -162,7 +162,6 @@ typedef delegate vblank_state_delegate; typedef device_delegate screen_update_ind16_delegate; typedef device_delegate screen_update_rgb32_delegate; -typedef device_delegate screen_vblank_delegate; // ======================> screen_device @@ -205,7 +204,7 @@ public: static void static_set_default_position(device_t &device, double xscale, double xoffs, double yscale, double yoffs); static void static_set_screen_update(device_t &device, screen_update_ind16_delegate callback); static void static_set_screen_update(device_t &device, screen_update_rgb32_delegate callback); - static void static_set_screen_vblank(device_t &device, screen_vblank_delegate callback); + template static devcb_base &static_set_screen_vblank(device_t &device, Object &&object) { return downcast(device).m_screen_vblank.set_callback(std::forward(object)); } static void static_set_palette(device_t &device, const char *tag); static void static_set_video_attributes(device_t &device, u32 flags); static void static_set_color(device_t &device, rgb_t color); @@ -214,8 +213,8 @@ public: // information getters render_container &container() const { assert(m_container != nullptr); return *m_container; } bitmap_ind8 &priority() { return m_priority; } - palette_device &palette() const { assert(m_palette.found()); return *m_palette; } - bool has_palette() const { return m_palette.found(); } + device_palette_interface &palette() const { assert(m_palette != nullptr); return *m_palette; } + bool has_palette() const { return m_palette != nullptr; } // dynamic configuration void configure(int width, int height, const rectangle &visarea, attoseconds_t frame_period); @@ -248,6 +247,7 @@ public: // additional helpers void register_vblank_callback(vblank_state_delegate vblank_callback); void register_screen_bitmap(bitmap_t &bitmap); + void resolve_palette(); // internal to the video system bool update_quads(); @@ -292,8 +292,9 @@ private: float m_xscale, m_yscale; // default X/Y scale factor screen_update_ind16_delegate m_screen_update_ind16; // screen update callback (16-bit palette) screen_update_rgb32_delegate m_screen_update_rgb32; // screen update callback (32-bit RGB) - screen_vblank_delegate m_screen_vblank; // screen vblank callback - optional_device m_palette; // our palette + devcb_write_line m_screen_vblank; // screen vblank line callback + device_palette_interface *m_palette; // our palette + const char * m_palette_tag; // configured tag for palette device u32 m_video_attributes; // flags describing the video system const char * m_svg_region; // the region in which the svg data is in @@ -362,14 +363,11 @@ private: }; // device type definition -extern const device_type SCREEN; +DECLARE_DEVICE_TYPE(SCREEN, screen_device) // iterator helper typedef device_type_iterator screen_device_iterator; -extern template class device_finder; -extern template class device_finder; - /*! @defgroup Screen device configuration macros @{ @@ -494,16 +492,12 @@ extern template class device_finder; screen_device::static_set_screen_update(*device, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, nullptr)); #define MCFG_SCREEN_UPDATE_DEVICE(_device, _class, _method) \ screen_device::static_set_screen_update(*device, screen_update_delegate_smart(&_class::_method, #_class "::" #_method, _device)); -#define MCFG_SCREEN_VBLANK_NONE() \ - screen_device::static_set_screen_vblank(*device, screen_vblank_delegate()); -#define MCFG_SCREEN_VBLANK_DRIVER(_class, _method) \ - screen_device::static_set_screen_vblank(*device, screen_vblank_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); -#define MCFG_SCREEN_VBLANK_DEVICE(_device, _class, _method) \ - screen_device::static_set_screen_vblank(*device, screen_vblank_delegate(&_class::_method, #_class "::" #_method, _device, (_class *)nullptr)); +#define MCFG_SCREEN_VBLANK_CALLBACK(_devcb) \ + devcb = &screen_device::static_set_screen_vblank(*device, DEVCB_##_devcb); #define MCFG_SCREEN_PALETTE(_palette_tag) \ - screen_device::static_set_palette(*device, "^" _palette_tag); + screen_device::static_set_palette(*device, _palette_tag); #define MCFG_SCREEN_NO_PALETTE \ - screen_device::static_set_palette(*device, finder_base::DUMMY_TAG); + screen_device::static_set_palette(*device, nullptr); #define MCFG_SCREEN_VIDEO_ATTRIBUTES(_flags) \ screen_device::static_set_video_attributes(*device, _flags); #define MCFG_SCREEN_COLOR(_color) \ diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp index 5182881274a..1d2fcf17100 100644 --- a/src/emu/softlist.cpp +++ b/src/emu/softlist.cpp @@ -75,11 +75,14 @@ software_part::software_part(software_info &info, std::string &&name, std::strin const char *software_part::feature(const std::string &feature_name) const { // scan the feature list for an entry matching feature_name and return the value - for (const feature_list_item &feature : m_featurelist) - if (feature.name() == feature_name) - return feature.value().c_str(); - return nullptr; + auto iter = std::find_if( + m_featurelist.begin(), + m_featurelist.end(), + [&feature_name](const feature_list_item &feature) { return feature.name() == feature_name; }); + return iter != m_featurelist.end() + ? iter->value().c_str() + : nullptr; } diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp index 7a80dc57569..9583163a278 100644 --- a/src/emu/softlist_dev.cpp +++ b/src/emu/softlist_dev.cpp @@ -29,7 +29,8 @@ typedef std::unordered_map softlist_map; //************************************************************************** // device type definition -const device_type SOFTWARE_LIST = device_creator; +DEFINE_DEVICE_TYPE(SOFTWARE_LIST, software_list_device, "software_list", "Software List") + false_software_list_loader false_software_list_loader::s_instance; rom_software_list_loader rom_software_list_loader::s_instance; image_software_list_loader image_software_list_loader::s_instance; @@ -79,7 +80,7 @@ bool image_software_list_loader::load_software(device_image_interface &device, s //------------------------------------------------- software_list_device::software_list_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, SOFTWARE_LIST, "Software list", tag, owner, clock, "software_list", __FILE__), + : device_t(mconfig, SOFTWARE_LIST, tag, owner, clock), m_list_type(SOFTWARE_LIST_ORIGINAL_SYSTEM), m_filter(nullptr), m_parsed(false), @@ -365,7 +366,7 @@ software_compatibility software_list_device::is_compatible(const software_part & // that can automatically mount this software part //------------------------------------------------- -device_image_interface *software_list_device::find_mountable_image(const machine_config &mconfig, const software_part &part) +device_image_interface *software_list_device::find_mountable_image(const machine_config &mconfig, const software_part &part, std::function filter) { // if automount="no", don't bother const char *mount = part.feature("automount"); @@ -375,16 +376,35 @@ device_image_interface *software_list_device::find_mountable_image(const machine for (device_image_interface &image : image_interface_iterator(mconfig.root_device())) { const char *interface = image.image_interface(); - if (interface != nullptr && part.matches_interface(interface)) - { - if (!image.filename()) - return ℑ - } + if (interface != nullptr && part.matches_interface(interface) && filter(image)) + return ℑ } return nullptr; } +//------------------------------------------------- +// find_mountable_image - find an image interface +// that can automatically mount this software part +//------------------------------------------------- + +device_image_interface *software_list_device::find_mountable_image(const machine_config &mconfig, const software_part &part) +{ + // Multi-part softlists will distribute individual images serially (e.g. - first floppy to flop1, next one to flop2 + // etc). Pre MAME 0.183 relied on the core doing this distribution between calls to find_mountable_image() so it + // could check to see if the slot was empty. + // + // When softlists were refactored in MAME 0.183, this was changed to build a "plan" for what needs to be loaded, so + // it was incorrect to check the image slot. This is why an overload for find_mountable_image() was created that + // takes an std::function. This overload is being preserved for compatibility with existing code, but I regard the + // continued existance of this overload is a red flag. + return find_mountable_image( + mconfig, + part, + [](const device_image_interface &image) { return !image.exists(); }); +} + + //------------------------------------------------- // device_validity_check - validate the device // configuration diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h index 2f526230705..adc73b8637c 100644 --- a/src/emu/softlist_dev.h +++ b/src/emu/softlist_dev.h @@ -159,6 +159,7 @@ public: // static helpers static software_list_device *find_by_name(const machine_config &mconfig, const std::string &name); static void display_matches(const machine_config &config, const char *interface, const std::string &name); + static device_image_interface *find_mountable_image(const machine_config &mconfig, const software_part &part, std::function filter); static device_image_interface *find_mountable_image(const machine_config &mconfig, const software_part &part); protected: @@ -186,7 +187,7 @@ private: // device type definition -extern const device_type SOFTWARE_LIST; +DECLARE_DEVICE_TYPE(SOFTWARE_LIST, software_list_device) // device type iterator typedef device_type_iterator software_list_device_iterator; diff --git a/src/emu/speaker.cpp b/src/emu/speaker.cpp index 1b14f13e73a..53ac40004c8 100644 --- a/src/emu/speaker.cpp +++ b/src/emu/speaker.cpp @@ -28,10 +28,7 @@ //************************************************************************** // device type definition -const device_type SPEAKER = device_creator; - -template class device_finder; -template class device_finder; +DEFINE_DEVICE_TYPE(SPEAKER, speaker_device, "speaker", "Speaker") @@ -44,16 +41,15 @@ template class device_finder; //------------------------------------------------- speaker_device::speaker_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, SPEAKER, "Speaker", tag, owner, clock, "speaker", __FILE__), - device_mixer_interface(mconfig, *this), - m_x(0.0), - m_y(0.0), - m_z(0.0) + : device_t(mconfig, SPEAKER, tag, owner, clock) + , device_mixer_interface(mconfig, *this) + , m_x(0.0) + , m_y(0.0) + , m_z(0.0) #ifdef MAME_DEBUG - , - m_max_sample(0), - m_clipped_samples(0), - m_total_samples(0) + , m_max_sample(0) + , m_clipped_samples(0) + , m_total_samples(0) #endif { } diff --git a/src/emu/speaker.h b/src/emu/speaker.h index 175109fe5c2..dd0c46479be 100644 --- a/src/emu/speaker.h +++ b/src/emu/speaker.h @@ -18,7 +18,7 @@ //************************************************************************** // device type definition -extern const device_type SPEAKER; +DECLARE_DEVICE_TYPE(SPEAKER, speaker_device) @@ -79,8 +79,5 @@ protected: // speaker device iterator typedef device_type_iterator speaker_device_iterator; -extern template class device_finder; -extern template class device_finder; - #endif /* MAME_EMU_SPEAKER_H */ diff --git a/src/emu/tilemap.cpp b/src/emu/tilemap.cpp index 2e2b14f5086..eb5cba30db8 100644 --- a/src/emu/tilemap.cpp +++ b/src/emu/tilemap.cpp @@ -1457,12 +1457,16 @@ void tilemap_t::draw_roz_core(screen_device &screen, _BitmapClass &destbitmap, c // rowscroll and with fixed parameters //------------------------------------------------- -void tilemap_t::draw_debug(screen_device &screen, bitmap_rgb32 &dest, u32 scrollx, u32 scrolly) +void tilemap_t::draw_debug(screen_device &screen, bitmap_rgb32 &dest, u32 scrollx, u32 scrolly, u32 flags) { // set up for the blit, using hard-coded parameters (no priority, etc) blit_parameters blit; bitmap_ind8 dummy_priority; - configure_blit_parameters(blit, dummy_priority, dest.cliprect(), TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0, 0xff); + + // draw everything + flags |= TILEMAP_DRAW_OPAQUE; + + configure_blit_parameters(blit, dummy_priority, dest.cliprect(), flags, 0, 0xff); // compute the effective scroll positions scrollx = m_width - scrollx % m_width; @@ -1600,14 +1604,14 @@ void tilemap_manager::mark_all_dirty() //************************************************************************** // device type definition -const device_type TILEMAP = device_creator; +DEFINE_DEVICE_TYPE(TILEMAP, tilemap_device, "tilemap", "Tilemap") //------------------------------------------------- // tilemap_device - constructor //------------------------------------------------- tilemap_device::tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, TILEMAP, "Tilemap", tag, owner, clock, "tilemap", __FILE__), + : device_t(mconfig, TILEMAP, tag, owner, clock), m_gfxdecode(*this, finder_base::DUMMY_TAG), m_standard_mapper(TILEMAP_STANDARD_COUNT), m_bytes_per_entry(0), diff --git a/src/emu/tilemap.h b/src/emu/tilemap.h index 729e0dc99d0..c8364f3b931 100644 --- a/src/emu/tilemap.h +++ b/src/emu/tilemap.h @@ -502,13 +502,11 @@ public: // getters running_machine &machine() const; tilemap_device *device() const { return m_device; } - palette_device &palette() const { return *m_palette; } + device_palette_interface &palette() const { return *m_palette; } device_gfx_interface &decoder() const { return *m_tileinfo.decoder; } tilemap_t *next() const { return m_next; } void *user_data() const { return m_user_data; } - memory_array &basemem() { return m_basemem; } - memory_array &extmem() { return m_extmem; } u32 rows() const { return m_rows; } u32 cols() const { return m_cols; } u16 tilewidth() const { return m_tilewidth; } @@ -530,7 +528,7 @@ public: // setters void enable(bool enable = true) { m_enable = enable; } void set_user_data(void *user_data) { m_user_data = user_data; } - void set_palette(palette_device &palette) { m_palette = &palette; } + void set_palette(device_palette_interface &palette) { m_palette = &palette; } void set_palette_offset(u32 offset) { m_palette_offset = offset; } void set_scrolldx(int dx, int dx_flipped) { m_dx = dx; m_dx_flipped = dx_flipped; } void set_scrolldy(int dy, int dy_flipped) { m_dy = dy; m_dy_flipped = dy_flipped; } @@ -558,7 +556,7 @@ public: void draw(screen_device &screen, bitmap_rgb32 &dest, const rectangle &cliprect, u32 flags, u8 priority = 0, u8 priority_mask = 0xff); void draw_roz(screen_device &screen, bitmap_ind16 &dest, const rectangle &cliprect, u32 startx, u32 starty, int incxx, int incxy, int incyx, int incyy, bool wraparound, u32 flags, u8 priority = 0, u8 priority_mask = 0xff); void draw_roz(screen_device &screen, bitmap_rgb32 &dest, const rectangle &cliprect, u32 startx, u32 starty, int incxx, int incxy, int incyx, int incyy, bool wraparound, u32 flags, u8 priority = 0, u8 priority_mask = 0xff); - void draw_debug(screen_device &screen, bitmap_rgb32 &dest, u32 scrollx, u32 scrolly); + void draw_debug(screen_device &screen, bitmap_rgb32 &dest, u32 scrollx, u32 scrolly, u32 flags = TILEMAP_DRAW_ALL_CATEGORIES); // mappers // scan in row-major order with optional flipping @@ -573,12 +571,6 @@ public: tilemap_memory_index scan_cols_flip_y(u32 col, u32 row, u32 num_cols, u32 num_rows); tilemap_memory_index scan_cols_flip_xy(u32 col, u32 row, u32 num_cols, u32 num_rows); - // optional memory accessors - u32 basemem_read(int index) { return m_basemem.read(index); } - u32 extmem_read(int index) { return m_extmem.read(index); } - void basemem_write(int index, u32 data) { m_basemem.write(index, data); mark_tile_dirty(index); } - void extmem_write(int index, u32 data) { m_extmem.write(index, data); mark_tile_dirty(index); } - private: // internal set of transparency states for rendering enum trans_t @@ -634,14 +626,10 @@ private: // managers and devices tilemap_manager * m_manager; // reference to the owning manager tilemap_device * m_device; // pointer to our owning device - palette_device * m_palette; // palette used for drawing + device_palette_interface * m_palette; // palette used for drawing tilemap_t * m_next; // pointer to next tilemap void * m_user_data; // user data value - // optional memory info - memory_array m_basemem; // info about base memory - memory_array m_extmem; // info about extension memory - // basic tilemap metrics u32 m_rows; // number of tile rows u32 m_cols; // number of tile columns @@ -747,6 +735,10 @@ public: static void static_set_tile_size(device_t &device, u16 width, u16 height); static void static_set_transparent_pen(device_t &device, pen_t pen); + // getters + memory_array &basemem() { return m_basemem; } + memory_array &extmem() { return m_extmem; } + // write handlers DECLARE_WRITE8_MEMBER(write); DECLARE_WRITE16_MEMBER(write); @@ -755,6 +747,12 @@ public: DECLARE_WRITE16_MEMBER(write_ext); DECLARE_WRITE32_MEMBER(write_ext); + // optional memory accessors + u32 basemem_read(int index) { return m_basemem.read(index); } + u32 extmem_read(int index) { return m_extmem.read(index); } + void basemem_write(int index, u32 data) { m_basemem.write(index, data); mark_tile_dirty(index); } + void extmem_write(int index, u32 data) { m_extmem.write(index, data); mark_tile_dirty(index); } + // pick one to use to avoid ambiguity errors using device_t::machine; @@ -777,6 +775,10 @@ private: u32 m_num_rows; bool m_transparent_pen_set; pen_t m_transparent_pen; + + // optional memory info + memory_array m_basemem; // info about base memory + memory_array m_extmem; // info about extension memory }; diff --git a/src/emu/timer.cpp b/src/emu/timer.cpp index 577fa0150f4..9fa9f6b9ec0 100644 --- a/src/emu/timer.cpp +++ b/src/emu/timer.cpp @@ -27,14 +27,14 @@ // LIVE TIMER DEVICE //************************************************************************** -const device_type TIMER = device_creator; +DEFINE_DEVICE_TYPE(TIMER, timer_device, "timer", "Timer") //------------------------------------------------- // timer_device - constructor //------------------------------------------------- timer_device::timer_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, TIMER, "Timer", tag, owner, clock, "timer", __FILE__), + : device_t(mconfig, TIMER, tag, owner, clock), m_type(TIMER_TYPE_GENERIC), m_callback(timer_device_expired_delegate()), m_ptr(nullptr), diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp index cab87352a5e..58f068cf93b 100644 --- a/src/emu/validity.cpp +++ b/src/emu/validity.cpp @@ -183,7 +183,7 @@ void validity_checker::check_shared_source(const game_driver &driver) // then iterate over all drivers and check the ones that share the same source file m_drivlist.reset(); while (m_drivlist.next()) - if (strcmp(driver.source_file, m_drivlist.driver().source_file) == 0) + if (strcmp(driver.type.source(), m_drivlist.driver().type.source()) == 0) validate_one(m_drivlist.driver()); // cleanup @@ -279,7 +279,7 @@ void validity_checker::validate_one(const game_driver &driver) { // help verbose validation detect configuration-related crashes if (m_print_verbose) - output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Validating driver %s (%s)...\n", driver.name, core_filename_extract_base(driver.source_file).c_str()); + output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Validating driver %s (%s)...\n", driver.name, core_filename_extract_base(driver.type.source()).c_str()); // set the current driver m_current_driver = &driver; @@ -298,7 +298,7 @@ void validity_checker::validate_one(const game_driver &driver) // wrap in try/except to catch fatalerrors try { - machine_config config(driver, m_drivlist.options()); + machine_config config(driver, m_blank_options); m_current_config = &config; validate_driver(); validate_roms(); @@ -315,7 +315,7 @@ void validity_checker::validate_one(const game_driver &driver) if (m_errors > start_errors || m_warnings > start_warnings || !m_verbose_text.empty()) { if (!m_print_verbose) - output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Driver %s (file %s): ", driver.name, core_filename_extract_base(driver.source_file).c_str()); + output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Driver %s (file %s): ", driver.name, core_filename_extract_base(driver.type.source()).c_str()); output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "%d errors, %d warnings\n", m_errors - start_errors, m_warnings - start_warnings); if (m_errors > start_errors) output_indented_errors(m_error_text, "Errors"); @@ -1350,14 +1350,14 @@ void validity_checker::validate_driver() if (!m_names_map.insert(std::make_pair(m_current_driver->name, m_current_driver)).second) { const game_driver *match = m_names_map.find(m_current_driver->name)->second; - osd_printf_error("Driver name is a duplicate of %s(%s)\n", core_filename_extract_base(match->source_file).c_str(), match->name); + osd_printf_error("Driver name is a duplicate of %s(%s)\n", core_filename_extract_base(match->type.source()).c_str(), match->name); } // check for duplicate descriptions - if (!m_descriptions_map.insert(std::make_pair(m_current_driver->description, m_current_driver)).second) + if (!m_descriptions_map.insert(std::make_pair(m_current_driver->type.fullname(), m_current_driver)).second) { - const game_driver *match = m_descriptions_map.find(m_current_driver->description)->second; - osd_printf_error("Driver description is a duplicate of %s(%s)\n", core_filename_extract_base(match->source_file).c_str(), match->name); + const game_driver *match = m_descriptions_map.find(m_current_driver->type.fullname())->second; + osd_printf_error("Driver description is a duplicate of %s(%s)\n", core_filename_extract_base(match->type.source()).c_str(), match->name); } // determine if we are a clone @@ -1816,15 +1816,7 @@ void validity_checker::validate_devices() // look for duplicates if (!device_map.insert(device.tag()).second) - osd_printf_error("Multiple devices with the same tag '%s' defined\n", device.tag()); - - // all devices must have a shortname - if (strcmp(device.shortname(), "") == 0) - osd_printf_error("Device does not have short name defined\n"); - - // all devices must have a source file defined - if (strcmp(device.source(), "") == 0) - osd_printf_error("Device does not have source file location defined\n"); + osd_printf_error("Multiple devices with the same tag defined\n"); // check for device-specific validity check device.validity_check(*this); @@ -1832,31 +1824,6 @@ void validity_checker::validate_devices() // done with this device m_current_device = nullptr; } - - // if device is slot cart device, we must have a shortname - std::unordered_set slot_device_map; - for (const device_slot_interface &slot : slot_interface_iterator(m_current_config->root_device())) - { - for (auto &option : slot.option_list()) - { - std::string temptag("_"); - temptag.append(option.second->name()); - device_t *dev = const_cast(*m_current_config).device_add(&m_current_config->root_device(), temptag.c_str(), option.second->devtype(), 0); - - // notify this device and all its subdevices that they are now configured - for (device_t &device : device_iterator(*dev)) - if (!device.configured()) - device.config_complete(); - - if (strcmp(dev->shortname(), "") == 0) { - if (slot_device_map.insert(dev->name()).second) - osd_printf_error("Device '%s' is slot cart device but does not have short name defined\n", dev->name()); - } - - const_cast(*m_current_config).device_remove(&m_current_config->root_device(), temptag.c_str()); - } - } - } @@ -1897,6 +1864,10 @@ void validity_checker::validate_device_types() } else { + // make sure the device name is not too long + if (strlen(dev->shortname()) > 32) + osd_printf_error("Device short name must be 32 characters or less\n"); + // check for invalid characters in shortname for (char const *s = dev->shortname(); *s; ++s) { @@ -1913,7 +1884,7 @@ void validity_checker::validate_device_types() if (m_names_map.end() != drvname) { game_driver const &dup(*drvname->second); - osd_printf_error("Device %s short name is a duplicate of %s(%s)\n", description.c_str(), core_filename_extract_base(dup.source_file).c_str(), dup.name); + osd_printf_error("Device %s short name is a duplicate of %s(%s)\n", description.c_str(), core_filename_extract_base(dup.type.source()).c_str(), dup.name); } else if (!devname.second) { @@ -1936,12 +1907,12 @@ void validity_checker::validate_device_types() if (m_names_map.end() != drvdesc) { game_driver const &dup(*drvdesc->second); - osd_printf_error("Device %s name is a duplicate of %s(%s)\n", description.c_str(), core_filename_extract_base(dup.source_file).c_str(), dup.name); + osd_printf_error("Device %s name '%s' is a duplicate of %s(%s)\n", description.c_str(), dev->name(), core_filename_extract_base(dup.type.source()).c_str(), dup.name); } else if (!devdesc.second) { device_t *const dup = config.device_add(&config.root_device(), "_dup", *devdesc.first->second, 0); - osd_printf_error("Device %s name is a duplicate of %s(%s)\n", description.c_str(), core_filename_extract_base(dup->source()).c_str(), dup->shortname()); + osd_printf_error("Device %s name '%s' is a duplicate of %s(%s)\n", description.c_str(), dev->name(), core_filename_extract_base(dup->source()).c_str(), dup->shortname()); config.device_remove(&config.root_device(), "_dup"); } } diff --git a/src/emu/validity.h b/src/emu/validity.h index 05b2ac5cf63..7bdde37e576 100644 --- a/src/emu/validity.h +++ b/src/emu/validity.h @@ -14,6 +14,7 @@ #pragma once #include "drivenum.h" +#include "emuopts.h" //************************************************************************** @@ -98,6 +99,9 @@ private: // internal driver list driver_enumerator m_drivlist; + // blank options for use during validation + emu_options m_blank_options; + // error tracking int m_errors; int m_warnings; diff --git a/src/emu/video.cpp b/src/emu/video.cpp index 46a2cbfd9d8..981dd69672d 100644 --- a/src/emu/video.cpp +++ b/src/emu/video.cpp @@ -312,7 +312,7 @@ void video_manager::save_snapshot(screen_device *screen, emu_file &file) // add two text entries describing the image std::string text1 = std::string(emulator_info::get_appname()).append(" ").append(emulator_info::get_build_version()); - std::string text2 = std::string(machine().system().manufacturer).append(" ").append(machine().system().description); + std::string text2 = std::string(machine().system().manufacturer).append(" ").append(machine().system().type.fullname()); png_info pnginfo = { nullptr }; png_add_text(&pnginfo, "Software", text1.c_str()); png_add_text(&pnginfo, "System", text2.c_str()); @@ -1309,7 +1309,7 @@ void video_manager::record_frame() if (m_mng_frame == 0) { std::string text1 = std::string(emulator_info::get_appname()).append(" ").append(emulator_info::get_build_version()); - std::string text2 = std::string(machine().system().manufacturer).append(" ").append(machine().system().description); + std::string text2 = std::string(machine().system().manufacturer).append(" ").append(machine().system().type.fullname()); png_add_text(&pnginfo, "Software", text1.c_str()); png_add_text(&pnginfo, "System", text2.c_str()); } diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp index 164730fd475..4df8dddb4ca 100644 --- a/src/frontend/mame/clifront.cpp +++ b/src/frontend/mame/clifront.cpp @@ -2,7 +2,7 @@ // copyright-holders:Aaron Giles /*************************************************************************** - clifront.c + clifront.cpp Command-line interface frontend for MAME. @@ -79,7 +79,7 @@ const options_entry cli_option_entries[] = /* core commands */ { nullptr, nullptr, OPTION_HEADER, "CORE COMMANDS" }, { CLICOMMAND_HELP ";h;?", "0", OPTION_COMMAND, "show help message" }, - { CLICOMMAND_VALIDATE ";valid", "0", OPTION_COMMAND, "perform driver validation on all game drivers" }, + { CLICOMMAND_VALIDATE ";valid", "0", OPTION_COMMAND, "perform driver validation on game drivers" }, /* configuration commands */ { nullptr, nullptr, OPTION_HEADER, "CONFIGURATION COMMANDS" }, @@ -202,7 +202,7 @@ void cli_frontend::start_execution(mame_machine_manager *manager, std::vectorstart_luaengine(); - manager->start_context(); - if (!option_errors.empty()) osd_printf_error("Error in command line:\n%s\n", strtrimspace(option_errors).c_str()); @@ -271,7 +269,7 @@ int cli_frontend::execute(std::vector &args) // if a game was specified, wasn't a wildcard, and our error indicates this was the // reason for failure, offer some suggestions - if (m_result == EMU_ERR_NO_SUCH_GAME && *(m_options.system_name()) != 0 && strchr(m_options.system_name(), '*') == nullptr && mame_options::system(m_options) == nullptr) + if (m_result == EMU_ERR_NO_SUCH_GAME && *(m_options.system_name()) != 0 && !core_iswildstr(m_options.system_name()) && mame_options::system(m_options) == nullptr) { // get the top 16 approximate matches driver_enumerator drivlist(m_options); @@ -283,7 +281,7 @@ int cli_frontend::execute(std::vector &args) "supported machines (best match first):\n\n", m_options.system_name()); for (auto & matche : matches) if (matche != -1) - osd_printf_error("%-18s%s\n", drivlist.driver(matche).name, drivlist.driver(matche).description); + osd_printf_error("%-18s%s\n", drivlist.driver(matche).name, drivlist.driver(matche).type.fullname()); } } catch (emu_exception &) @@ -319,16 +317,11 @@ int cli_frontend::execute(std::vector &args) // games //------------------------------------------------- -void cli_frontend::listxml(const char *gamename) +void cli_frontend::listxml(const std::vector &args) { - // determine which drivers to output; return an error if none found - driver_enumerator drivlist(m_options, gamename); - if (drivlist.count() == 0) - throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename); - // create the XML and print it to stdout - info_xml_creator creator(drivlist, gamename && *gamename); - creator.output(stdout); + info_xml_creator creator(m_options); + creator.output(stdout, args); } @@ -337,8 +330,10 @@ void cli_frontend::listxml(const char *gamename) // one or more games //------------------------------------------------- -void cli_frontend::listfull(const char *gamename) +void cli_frontend::listfull(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + // determine which drivers to output; return an error if none found driver_enumerator drivlist(m_options, gamename); if (drivlist.count() == 0) @@ -350,7 +345,7 @@ void cli_frontend::listfull(const char *gamename) // iterate through drivers and output the info while (drivlist.next()) if ((drivlist.driver().flags & MACHINE_NO_STANDALONE) == 0) - osd_printf_info("%-18s\"%s\"\n", drivlist.driver().name, drivlist.driver().description); + osd_printf_info("%-18s\"%s\"\n", drivlist.driver().name, drivlist.driver().type.fullname()); } @@ -359,8 +354,10 @@ void cli_frontend::listfull(const char *gamename) // filename of one or more games //------------------------------------------------- -void cli_frontend::listsource(const char *gamename) +void cli_frontend::listsource(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + // determine which drivers to output; return an error if none found driver_enumerator drivlist(m_options, gamename); if (drivlist.count() == 0) @@ -368,7 +365,7 @@ void cli_frontend::listsource(const char *gamename) // iterate through drivers and output the info while (drivlist.next()) - osd_printf_info("%-16s %s\n", drivlist.driver().name, core_filename_extract_base(drivlist.driver().source_file).c_str()); + osd_printf_info("%-16s %s\n", drivlist.driver().name, core_filename_extract_base(drivlist.driver().type.source()).c_str()); } @@ -377,8 +374,10 @@ void cli_frontend::listsource(const char *gamename) // clones matching the given pattern //------------------------------------------------- -void cli_frontend::listclones(const char *gamename) +void cli_frontend::listclones(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + // start with a filtered list of drivers driver_enumerator drivlist(m_options, gamename); int original_count = drivlist.count(); @@ -424,8 +423,10 @@ void cli_frontend::listclones(const char *gamename) // source file //------------------------------------------------- -void cli_frontend::listbrothers(const char *gamename) +void cli_frontend::listbrothers(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + // start with a filtered list of drivers; return an error if none found driver_enumerator initial_drivlist(m_options, gamename); if (initial_drivlist.count() == 0) @@ -445,7 +446,7 @@ void cli_frontend::listbrothers(const char *gamename) // otherwise, walk excluded items in the final list and mark any that match drivlist.reset(); while (drivlist.next_excluded()) - if (strcmp(drivlist.driver().source_file, initial_drivlist.driver().source_file) == 0) + if (strcmp(drivlist.driver().type.source(), initial_drivlist.driver().type.source()) == 0) drivlist.include(); } @@ -457,7 +458,7 @@ void cli_frontend::listbrothers(const char *gamename) while (drivlist.next()) { int clone_of = drivlist.clone(); - osd_printf_info("%-20s %-16s %-16s\n", core_filename_extract_base(drivlist.driver().source_file).c_str(), drivlist.driver().name, (clone_of == -1 ? "" : drivlist.driver(clone_of).name)); + osd_printf_info("%-20s %-16s %-16s\n", core_filename_extract_base(drivlist.driver().type.source()).c_str(), drivlist.driver().name, (clone_of == -1 ? "" : drivlist.driver(clone_of).name)); } } @@ -467,8 +468,10 @@ void cli_frontend::listbrothers(const char *gamename) // referenced by the emulator //------------------------------------------------- -void cli_frontend::listcrc(const char *gamename) +void cli_frontend::listcrc(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + // determine which drivers to output; return an error if none found driver_enumerator drivlist(m_options, gamename); if (drivlist.count() == 0) @@ -495,27 +498,46 @@ void cli_frontend::listcrc(const char *gamename) // by a given game or set of games //------------------------------------------------- -void cli_frontend::listroms(const char *gamename) +void cli_frontend::listroms(const std::vector &args) { - // determine which drivers to output; return an error if none found - driver_enumerator drivlist(m_options, gamename); - if (drivlist.count() == 0) - throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename); + bool const iswild((1U != args.size()) || core_iswildstr(args[0].c_str())); + std::vector matched(args.size(), false); + auto const included = [&args, &matched] (char const *name) -> bool + { + if (args.empty()) + return true; + + bool result = false; + auto it = matched.begin(); + for (std::string const &pat : args) + { + if (!core_strwildcmp(pat.c_str(), name)) + { + result = true; + *it = true; + } + ++it; + } + return result; + }; - // iterate through matches bool first = true; - while (drivlist.next()) + auto const list_system_roms = [&first] (device_t &root, char const *type) { // print a header if (!first) osd_printf_info("\n"); first = false; - osd_printf_info("ROMs required for driver \"%s\".\n" - "%-32s %10s %s\n",drivlist.driver().name, "Name", "Size", "Checksum"); + osd_printf_info( + "ROMs required for %s \"%s\".\n" + "%-32s %10s %s\n", + type, root.shortname(), "Name", "Size", "Checksum"); // iterate through roms - for (device_t &device : device_iterator(drivlist.config()->root_device())) + for (device_t &device : device_iterator(root)) + { for (const rom_entry *region = rom_first_region(device); region; region = rom_next_region(region)) + { for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) { // accumulate the total length of all chunks @@ -547,6 +569,52 @@ void cli_frontend::listroms(const char *gamename) // end with a CR osd_printf_info("\n"); } + } + } + }; + + // determine which drivers to output + driver_enumerator drivlist(m_options); + + // iterate through matches + while (drivlist.next()) + { + if (included(drivlist.driver().name)) + { + list_system_roms(drivlist.config()->root_device(), "driver"); + + // if it wasn't a wildcard, there can only be one + if (!iswild) + break; + } + } + + if (iswild || first) + { + machine_config config(GAME_NAME(___empty), m_options); + for (device_type type : registered_device_types) + { + if (included(type.shortname())) + { + device_t *const dev = config.device_add(&config.root_device(), "_tmp", type, 0); + list_system_roms(*dev, "device"); + config.device_remove(&config.root_device(), "_tmp"); + + // if it wasn't a wildcard, there can only be one + if (!iswild) + break; + } + } + } + + // return an error if none found + auto it = matched.begin(); + for (std::string const &pat : args) + { + if (!*it) + throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "No matching systems found for '%s'", pat.c_str()); + + ++it; } } @@ -556,8 +624,10 @@ void cli_frontend::listroms(const char *gamename) // referenced by a given game or set of games //------------------------------------------------- -void cli_frontend::listsamples(const char *gamename) +void cli_frontend::listsamples(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + // determine which drivers to output; return an error if none found driver_enumerator drivlist(m_options, gamename); if (drivlist.count() == 0) @@ -594,8 +664,10 @@ void cli_frontend::listsamples(const char *gamename) // referenced by a given game or set of games //------------------------------------------------- -void cli_frontend::listdevices(const char *gamename) +void cli_frontend::listdevices(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + // determine which drivers to output; return an error if none found driver_enumerator drivlist(m_options, gamename); if (drivlist.count() == 0) @@ -609,7 +681,7 @@ void cli_frontend::listdevices(const char *gamename) if (!first) printf("\n"); first = false; - printf("Driver %s (%s):\n", drivlist.driver().name, drivlist.driver().description); + printf("Driver %s (%s):\n", drivlist.driver().name, drivlist.driver().type.fullname()); // build a list of devices std::vector device_list; @@ -669,8 +741,10 @@ void cli_frontend::listdevices(const char *gamename) // referenced by a given game or set of games //------------------------------------------------- -void cli_frontend::listslots(const char *gamename) +void cli_frontend::listslots(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + // determine which drivers to output; return an error if none found driver_enumerator drivlist(m_options, gamename); if (drivlist.count() == 0) @@ -727,8 +801,10 @@ void cli_frontend::listslots(const char *gamename) // referenced by a given game or set of games //------------------------------------------------- -void cli_frontend::listmedia(const char *gamename) +void cli_frontend::listmedia(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + // determine which drivers to output; return an error if none found driver_enumerator drivlist(m_options, gamename); if (drivlist.count() == 0) @@ -779,76 +855,115 @@ void cli_frontend::listmedia(const char *gamename) // verifyroms - verify the ROM sets of one or // more games //------------------------------------------------- -void cli_frontend::verifyroms(const char *gamename) +void cli_frontend::verifyroms(const std::vector &args) { - // determine which drivers to output; - driver_enumerator drivlist(m_options, gamename); + bool const iswild((1U != args.size()) || core_iswildstr(args[0].c_str())); + std::vector matched(args.size(), false); + unsigned matchcount = 0; + auto const included = [&args, &matched, &matchcount] (char const *name) -> bool + { + if (args.empty()) + { + ++matchcount; + return true; + } + + bool result = false; + auto it = matched.begin(); + for (std::string const &pat : args) + { + if (!core_strwildcmp(pat.c_str(), name)) + { + ++matchcount; + result = true; + *it = true; + } + ++it; + } + return result; + }; unsigned correct = 0; unsigned incorrect = 0; unsigned notfound = 0; - unsigned matched = 0; // iterate over drivers + driver_enumerator drivlist(m_options); media_auditor auditor(drivlist); util::ovectorstream summary_string; while (drivlist.next()) { - matched++; - - // audit the ROMs in this set - media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST); - - auto const clone_of = drivlist.clone(); - print_summary( - auditor, summary, true, - "rom", drivlist.driver().name, (clone_of >= 0) ? drivlist.driver(clone_of).name : nullptr, - correct, incorrect, notfound, - summary_string); - } - - machine_config config(GAME_NAME(___empty), m_options); - for (device_type type : registered_device_types) - { - device_t *const dev = config.device_add(&config.root_device(), "_tmp", type, 0); - if (!gamename || !core_strwildcmp(gamename, dev->shortname())) + if (included(drivlist.driver().name)) { - matched++; - // audit the ROMs in this set - media_auditor::summary summary = auditor.audit_device(*dev, AUDIT_VALIDATE_FAST); + media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST); + auto const clone_of = drivlist.clone(); print_summary( - auditor, summary, false, - "rom", dev->shortname(), nullptr, + auditor, summary, true, + "rom", drivlist.driver().name, (clone_of >= 0) ? drivlist.driver(clone_of).name : nullptr, correct, incorrect, notfound, summary_string); + + // if it wasn't a wildcard, there can only be one + if (!iswild) + break; + } + } + + if (iswild || !matchcount) + { + machine_config config(GAME_NAME(___empty), m_options); + for (device_type type : registered_device_types) + { + if (included(type.shortname())) + { + // audit the ROMs in this set + device_t *const dev = config.device_add(&config.root_device(), "_tmp", type, 0); + media_auditor::summary summary = auditor.audit_device(*dev, AUDIT_VALIDATE_FAST); + + print_summary( + auditor, summary, false, + "rom", dev->shortname(), nullptr, + correct, incorrect, notfound, + summary_string); + config.device_remove(&config.root_device(), "_tmp"); + + // if it wasn't a wildcard, there can only be one + if (!iswild) + break; + } } - config.device_remove(&config.root_device(), "_tmp"); } // clear out any cached files util::archive_file::cache_clear(); // return an error if none found - if (matched == 0) - throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename ? gamename : ""); + auto it = matched.begin(); + for (std::string const &pat : args) + { + if (!*it) + throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "No matching systems found for '%s'", pat.c_str()); - // if we didn't get anything at all, display a generic end message - if (matched > 0 && correct == 0 && incorrect == 0) + ++it; + } + + if ((1U == args.size()) && (matchcount > 0) && (correct == 0) && (incorrect == 0)) { + // if we didn't get anything at all, display a generic end message if (notfound > 0) - throw emu_fatalerror(EMU_ERR_MISSING_FILES, "romset \"%s\" not found!\n", gamename ? gamename : ""); + throw emu_fatalerror(EMU_ERR_MISSING_FILES, "romset \"%s\" not found!\n", args[0].c_str()); else - throw emu_fatalerror(EMU_ERR_MISSING_FILES, "romset \"%s\" has no roms!\n", gamename ? gamename : ""); + throw emu_fatalerror(EMU_ERR_MISSING_FILES, "romset \"%s\" has no roms!\n", args[0].c_str()); } - - // otherwise, print a summary else { + // otherwise, print a summary if (incorrect > 0) throw emu_fatalerror(EMU_ERR_MISSING_FILES, "%u romsets found, %u were OK.\n", correct + incorrect, correct); - osd_printf_info("%u romsets found, %u were OK.\n", correct, correct); + else + osd_printf_info("%u romsets found, %u were OK.\n", correct, correct); } } @@ -858,10 +973,9 @@ void cli_frontend::verifyroms(const char *gamename) // one or more games //------------------------------------------------- -void cli_frontend::verifysamples(const char *gamename) +void cli_frontend::verifysamples(const std::vector &args) { - if (!gamename) - gamename = "*"; + const char *gamename = args.empty() ? "*" : args[0].c_str(); // determine which drivers to output; return an error if none found driver_enumerator drivlist(m_options, gamename); @@ -1095,8 +1209,10 @@ void cli_frontend::output_single_softlist(FILE *out, software_list_device &swlis identifying duplicate lists. -------------------------------------------------*/ -void cli_frontend::listsoftware(const char *gamename) +void cli_frontend::listsoftware(const std::vector &args) { + const char *gamename = args.empty() ? nullptr : args[0].c_str(); + FILE *out = stdout; std::unordered_set list_map; bool isfirst = true; @@ -1128,10 +1244,9 @@ void cli_frontend::listsoftware(const char *gamename) verifysoftware - verify roms from the software list of the specified driver(s) -------------------------------------------------*/ -void cli_frontend::verifysoftware(const char *gamename) +void cli_frontend::verifysoftware(const std::vector &args) { - if (!gamename) - gamename = "*"; + const char *gamename = args.empty() ? "*" : args[0].c_str(); std::unordered_set list_map; @@ -1205,10 +1320,9 @@ void cli_frontend::verifysoftware(const char *gamename) getsoftlist - retrieve software list by name -------------------------------------------------*/ -void cli_frontend::getsoftlist(const char *gamename) +void cli_frontend::getsoftlist(const std::vector &args) { - if (!gamename) - gamename = "*"; + const char *gamename = args.empty() ? "*" : args[0].c_str(); FILE *out = stdout; std::unordered_set list_map; @@ -1236,10 +1350,9 @@ void cli_frontend::getsoftlist(const char *gamename) /*------------------------------------------------- verifysoftlist - verify software list by name -------------------------------------------------*/ -void cli_frontend::verifysoftlist(const char *gamename) +void cli_frontend::verifysoftlist(const std::vector &args) { - if (!gamename) - gamename = "*"; + const char *gamename = args.empty() ? "*" : args[0].c_str(); std::unordered_set list_map; unsigned correct = 0; @@ -1303,9 +1416,17 @@ void cli_frontend::verifysoftlist(const char *gamename) // matches in our internal database //------------------------------------------------- -void cli_frontend::romident(const char *filename) +void cli_frontend::romident(const std::vector &args) { - media_identifier ident(m_options); + const char *filename = args[0].c_str(); + + // create our own copy of options for the purposes of ROM identification + // so we are not "polluted" with driver-specific slot/image options + emu_options options; + std::string error_string; + options.set_value(OPTION_MEDIAPATH, m_options.media_path(), OPTION_PRIORITY_DEFAULT, error_string); + + media_identifier ident(options); // identify the file, then output results osd_printf_info("Identifying %s....\n", filename); @@ -1315,9 +1436,9 @@ void cli_frontend::romident(const char *filename) if (ident.matches() == ident.total()) return; else if (ident.matches() == ident.total() - ident.nonroms()) - throw emu_fatalerror(EMU_ERR_IDENT_NONROMS, "Out of %d files, %d matched, %d are not roms.\n",ident.total(),ident.matches(),ident.nonroms()); + throw emu_fatalerror(EMU_ERR_IDENT_NONROMS, "Out of %d files, %d matched, %d are not roms.\n", ident.total(), ident.matches(), ident.nonroms()); else if (ident.matches() > 0) - throw emu_fatalerror(EMU_ERR_IDENT_PARTIAL, "Out of %d files, %d matched, %d did not match.\n",ident.total(),ident.matches(),ident.total()-ident.matches()); + throw emu_fatalerror(EMU_ERR_IDENT_PARTIAL, "Out of %d files, %d matched, %d did not match.\n", ident.total(), ident.matches(), ident.total() - ident.matches()); else throw emu_fatalerror(EMU_ERR_IDENT_NONE, "No roms matched.\n"); } @@ -1331,14 +1452,14 @@ void cli_frontend::romident(const char *filename) void cli_frontend::execute_commands(const char *exename) { // help? - if (strcmp(m_options.command(), CLICOMMAND_HELP) == 0) + if (m_options.command() == CLICOMMAND_HELP) { display_help(exename); return; } // showusage? - if (strcmp(m_options.command(), CLICOMMAND_SHOWUSAGE) == 0) + if (m_options.command() == CLICOMMAND_SHOWUSAGE) { osd_printf_info("Usage: %s [machine] [media] [software] [options]",exename); osd_printf_info("\n\nOptions:\n%s", m_options.output_help().c_str()); @@ -1346,12 +1467,12 @@ void cli_frontend::execute_commands(const char *exename) } // validate? - if (strcmp(m_options.command(), CLICOMMAND_VALIDATE) == 0) + if (m_options.command() == CLICOMMAND_VALIDATE) { validity_checker valid(m_options); valid.set_validate_all(true); - const char *sysname = m_options.system_name(); - bool result = valid.check_all_matching((sysname[0] == 0) ? nullptr : sysname); + const char *sysname = m_options.command_arguments().empty() ? nullptr : m_options.command_arguments()[0].c_str(); + bool result = valid.check_all_matching(sysname); if (!result) throw emu_fatalerror(EMU_ERR_FAILED_VALIDITY, "Validity check failed (%d errors, %d warnings in total)\n", valid.errors(), valid.warnings()); return; @@ -1364,7 +1485,7 @@ void cli_frontend::execute_commands(const char *exename) osd_printf_error("%s\n", option_errors.c_str()); // createconfig? - if (strcmp(m_options.command(), CLICOMMAND_CREATECONFIG) == 0) + if (m_options.command() == CLICOMMAND_CREATECONFIG) { // attempt to open the output file emu_file file(OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); @@ -1400,7 +1521,7 @@ void cli_frontend::execute_commands(const char *exename) } // showconfig? - if (strcmp(m_options.command(), CLICOMMAND_SHOWCONFIG) == 0) + if (m_options.command() == CLICOMMAND_SHOWCONFIG) { // print the INI text printf("%s\n", m_options.output_ini().c_str()); @@ -1411,44 +1532,60 @@ void cli_frontend::execute_commands(const char *exename) static const struct { const char *option; - void (cli_frontend::*function)(const char *gamename); + int min_args; + int max_args; + void (cli_frontend::*function)(const std::vector &args); + const char *usage; } info_commands[] = { - { CLICOMMAND_LISTXML, &cli_frontend::listxml }, - { CLICOMMAND_LISTFULL, &cli_frontend::listfull }, - { CLICOMMAND_LISTSOURCE, &cli_frontend::listsource }, - { CLICOMMAND_LISTCLONES, &cli_frontend::listclones }, - { CLICOMMAND_LISTBROTHERS, &cli_frontend::listbrothers }, - { CLICOMMAND_LISTCRC, &cli_frontend::listcrc }, - { CLICOMMAND_LISTDEVICES, &cli_frontend::listdevices }, - { CLICOMMAND_LISTSLOTS, &cli_frontend::listslots }, - { CLICOMMAND_LISTROMS, &cli_frontend::listroms }, - { CLICOMMAND_LISTSAMPLES, &cli_frontend::listsamples }, - { CLICOMMAND_VERIFYROMS, &cli_frontend::verifyroms }, - { CLICOMMAND_VERIFYSAMPLES, &cli_frontend::verifysamples }, - { CLICOMMAND_LISTMEDIA, &cli_frontend::listmedia }, - { CLICOMMAND_LISTSOFTWARE, &cli_frontend::listsoftware }, - { CLICOMMAND_VERIFYSOFTWARE,&cli_frontend::verifysoftware }, - { CLICOMMAND_ROMIDENT, &cli_frontend::romident }, - { CLICOMMAND_GETSOFTLIST, &cli_frontend::getsoftlist }, - { CLICOMMAND_VERIFYSOFTLIST,&cli_frontend::verifysoftlist }, + { CLICOMMAND_LISTXML, 0, -1, &cli_frontend::listxml, "[pattern] ..." }, + { CLICOMMAND_LISTFULL, 0, 1, &cli_frontend::listfull, "[system name]" }, + { CLICOMMAND_LISTSOURCE, 0, 1, &cli_frontend::listsource, "[system name]" }, + { CLICOMMAND_LISTCLONES, 0, 1, &cli_frontend::listclones, "[system name]" }, + { CLICOMMAND_LISTBROTHERS, 0, 1, &cli_frontend::listbrothers, "[system name]" }, + { CLICOMMAND_LISTCRC, 0, 1, &cli_frontend::listcrc, "[system name]" }, + { CLICOMMAND_LISTDEVICES, 0, 1, &cli_frontend::listdevices, "[system name]" }, + { CLICOMMAND_LISTSLOTS, 0, 1, &cli_frontend::listslots, "[system name]" }, + { CLICOMMAND_LISTROMS, 0, -1, &cli_frontend::listroms, "[pattern] ..." }, + { CLICOMMAND_LISTSAMPLES, 0, 1, &cli_frontend::listsamples, "[system name]" }, + { CLICOMMAND_VERIFYROMS, 0, -1, &cli_frontend::verifyroms, "[pattern] ..." }, + { CLICOMMAND_VERIFYSAMPLES, 0, 1, &cli_frontend::verifysamples, "[system name|*]" }, + { CLICOMMAND_LISTMEDIA, 0, 1, &cli_frontend::listmedia, "[system name]" }, + { CLICOMMAND_LISTSOFTWARE, 0, 1, &cli_frontend::listsoftware, "[system name]" }, + { CLICOMMAND_VERIFYSOFTWARE, 0, 1, &cli_frontend::verifysoftware, "[system name|*]" }, + { CLICOMMAND_ROMIDENT, 1, 1, &cli_frontend::romident, "(file or directory path)" }, + { CLICOMMAND_GETSOFTLIST, 0, 1, &cli_frontend::getsoftlist, "[system name|*]" }, + { CLICOMMAND_VERIFYSOFTLIST, 0, 1, &cli_frontend::verifysoftlist, "[system name|*]" }, }; // find the command for (auto & info_command : info_commands) { - if (strcmp(m_options.command(), info_command.option) == 0) + if (m_options.command() == info_command.option) { - // parse any relevant INI files before proceeding - const char *sysname = m_options.system_name(); - (this->*info_command.function)((sysname[0] == 0) ? nullptr : sysname); + // validate argument count + const char *error_message = nullptr; + if (m_options.command_arguments().size() < info_command.min_args) + error_message = "Auxillary verb -%s requires at least %d argument(s)\n"; + if ((info_command.max_args >= 0) && (m_options.command_arguments().size() > info_command.max_args)) + error_message = "Auxillary verb -%s takes at most %d argument(s)\n"; + if (error_message) + { + osd_printf_info(error_message, info_command.option, info_command.max_args); + osd_printf_info("\n"); + osd_printf_info("Usage: %s -%s %s\n", exename, info_command.option, info_command.usage); + return; + } + + // invoke the auxillary command! + (this->*info_command.function)(m_options.command_arguments()); return; } } - if (!m_osd.execute_command(m_options.command())) + if (!m_osd.execute_command(m_options.command().c_str())) // if we get here, we don't know what has been requested - throw emu_fatalerror(EMU_ERR_INVALID_CONFIG, "Unknown command '%s' specified", m_options.command()); + throw emu_fatalerror(EMU_ERR_INVALID_CONFIG, "Unknown command '%s' specified", m_options.command().c_str()); } @@ -1472,13 +1609,3 @@ void cli_frontend::display_help(const char *exename) "For usage instructions, please consult the files config.txt and windows.txt.\n",exename, exename,exename,exename,emulator_info::get_configname()); } - - -//------------------------------------------------- -// display_suggestions - display 10 possible -// matches for a given invalid gamename -//------------------------------------------------- - -void cli_frontend::display_suggestions(const char *gamename) -{ -} diff --git a/src/frontend/mame/clifront.h b/src/frontend/mame/clifront.h index 7366243d2e4..3a15716b36c 100644 --- a/src/frontend/mame/clifront.h +++ b/src/frontend/mame/clifront.h @@ -34,30 +34,31 @@ public: int execute(std::vector &args); // direct access to the command operations - void listxml(const char *gamename = "*"); - void listfull(const char *gamename = "*"); - void listsource(const char *gamename = "*"); - void listclones(const char *gamename = "*"); - void listbrothers(const char *gamename = "*"); - void listcrc(const char *gamename = "*"); - void listroms(const char *gamename = "*"); - void listsamples(const char *gamename = "*"); - void listdevices(const char *gamename = "*"); - void listslots(const char *gamename = "*"); - void listmedia(const char *gamename = "*"); - void listsoftware(const char *gamename = "*"); - void verifysoftware(const char *gamename = "*"); - void verifyroms(const char *gamename = "*"); - void verifysamples(const char *gamename = "*"); - void romident(const char *filename); - void getsoftlist(const char *gamename = "*"); - void verifysoftlist(const char *gamename = "*"); private: + // commands + void listxml(const std::vector &args); + void listfull(const std::vector &args); + void listsource(const std::vector &args); + void listclones(const std::vector &args); + void listbrothers(const std::vector &args); + void listcrc(const std::vector &args); + void listroms(const std::vector &args); + void listsamples(const std::vector &args); + void listdevices(const std::vector &args); + void listslots(const std::vector &args); + void listmedia(const std::vector &args); + void listsoftware(const std::vector &args); + void verifysoftware(const std::vector &args); + void verifyroms(const std::vector &args); + void verifysamples(const std::vector &args); + void romident(const std::vector &args); + void getsoftlist(const std::vector &args); + void verifysoftlist(const std::vector &args); + // internal helpers void execute_commands(const char *exename); void display_help(const char *exename); - void display_suggestions(const char *gamename); void output_single_softlist(FILE *out, software_list_device &swlist); void start_execution(mame_machine_manager *manager, std::vector &args); @@ -67,4 +68,4 @@ private: int m_result; }; -#endif /* MAME_FRONTEND_CLIFRONT_H */ +#endif // MAME_FRONTEND_CLIFRONT_H diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp index fa742dfe2f4..ae1323786e9 100644 --- a/src/frontend/mame/info.cpp +++ b/src/frontend/mame/info.cpp @@ -189,11 +189,9 @@ const char info_xml_creator::s_dtd_string[] = // info_xml_creator - constructor //------------------------------------------------- -info_xml_creator::info_xml_creator(driver_enumerator &drivlist, bool filter_devices) +info_xml_creator::info_xml_creator(emu_options const &options) : m_output(nullptr) - , m_drivlist(drivlist) - , m_filter_devices(filter_devices) - , m_lookup_options(m_drivlist.options()) + , m_lookup_options(options) { mame_options::remove_device_options(m_lookup_options); } @@ -204,10 +202,108 @@ info_xml_creator::info_xml_creator(driver_enumerator &drivlist, bool filter_devi // for all known games //------------------------------------------------- -void info_xml_creator::output(FILE *out, bool nodevices) +void info_xml_creator::output(FILE *out, std::vector const &patterns) { m_output = out; + std::unique_ptr devfilter(patterns.empty() ? nullptr : new device_type_set); + + // track which patterns match machines + driver_enumerator drivlist(m_lookup_options); + std::vector matched(patterns.size(), false); + auto const included = [&patterns, &drivlist, &matched] () -> bool + { + if (patterns.empty()) + return true; + + char const *const name = drivlist.driver().name; + bool result = false; + auto it = matched.begin(); + for (std::string const &pat : patterns) + { + if (!core_strwildcmp(pat.c_str(), name)) + { + result = true; + *it = true; + } + ++it; + } + return result; + }; + + // iterate through the drivers, outputting one at a time + bool first = true; + while (drivlist.next()) + { + if (included()) + { + if (first) + { + output_header(); + first = false; + } + output_one(drivlist, devfilter.get()); + } + } + + // output devices (both devices with roms and slot devices) + if (!devfilter || !devfilter->empty()) + { + if (first) + { + output_header(); + first = false; + } + output_devices(devfilter.get()); + } + + if (!first) + output_footer(); + + // throw an error if there were unmatched patterns + auto it = matched.begin(); + for (std::string const &pat : patterns) + { + if (!*it) + throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "No matching machines found for '%s'", pat.c_str()); + + ++it; + } +} + + +//------------------------------------------------- +// output_mame_xml - print the XML information +// for a subset of games +//------------------------------------------------- + +void info_xml_creator::output(FILE *out, driver_enumerator &drivlist, bool nodevices) +{ + m_output = out; + + device_type_set devfilter; + + output_header(); + + // iterate through the drivers, outputting one at a time + while (drivlist.next()) + output_one(drivlist, &devfilter); + + // output devices (both devices with roms and slot devices) + if (!nodevices) + output_devices(&devfilter); + + output_footer(); +} + + +//------------------------------------------------- +// output_header - print the XML DTD and open +// the root element +//------------------------------------------------- + +void info_xml_creator::output_header() +{ // output the DTD fprintf(m_output, "\n"); std::string dtd(s_dtd_string); @@ -228,19 +324,17 @@ void info_xml_creator::output(FILE *out, bool nodevices) util::xml::normalize_string(emulator_info::get_build_version()), CONFIG_VERSION ); +} - std::unique_ptr devfilter((m_filter_devices && !nodevices) ? new device_type_set : nullptr); - // iterate through the drivers, outputting one at a time - while (m_drivlist.next()) - output_one(devfilter.get()); - - // output devices (both devices with roms and slot devices) - if (!nodevices) - output_devices(devfilter.get()); +//------------------------------------------------- +// output_header - close the root element +//------------------------------------------------- +void info_xml_creator::output_footer() +{ // close the top level tag - fprintf(m_output, "\n",XML_ROOT); + fprintf(m_output, "\n", XML_ROOT); } @@ -249,14 +343,14 @@ void info_xml_creator::output(FILE *out, bool nodevices) // for one particular game driver //------------------------------------------------- -void info_xml_creator::output_one(device_type_set *devtypes) +void info_xml_creator::output_one(driver_enumerator &drivlist, device_type_set *devtypes) { // no action if not a game - const game_driver &driver = m_drivlist.driver(); + const game_driver &driver = drivlist.driver(); if (driver.flags & MACHINE_NO_STANDALONE) return; - std::shared_ptr const config(m_drivlist.config()); + std::shared_ptr const config(drivlist.config()); device_iterator iter(config->root_device()); // allocate input ports @@ -303,10 +397,10 @@ void info_xml_creator::output_one(device_type_set *devtypes) fprintf(m_output, " name=\"%s\"", util::xml::normalize_string(driver.name)); // strip away any path information from the source_file and output it - const char *start = strrchr(driver.source_file, '/'); + const char *start = strrchr(driver.type.source(), '/'); if (!start) - start = strrchr(driver.source_file, '\\'); - start = start ? (start + 1) : driver.source_file; + start = strrchr(driver.type.source(), '\\'); + start = start ? (start + 1) : driver.type.source(); fprintf(m_output, " sourcefile=\"%s\"", util::xml::normalize_string(start)); // append bios and runnable flags @@ -318,19 +412,19 @@ void info_xml_creator::output_one(device_type_set *devtypes) fprintf(m_output, " ismechanical=\"yes\""); // display clone information - int clone_of = m_drivlist.find(driver.parent); - if (clone_of != -1 && !(m_drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT)) - fprintf(m_output, " cloneof=\"%s\"", util::xml::normalize_string(m_drivlist.driver(clone_of).name)); + int clone_of = drivlist.find(driver.parent); + if (clone_of != -1 && !(drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT)) + fprintf(m_output, " cloneof=\"%s\"", util::xml::normalize_string(drivlist.driver(clone_of).name)); if (clone_of != -1) - fprintf(m_output, " romof=\"%s\"", util::xml::normalize_string(m_drivlist.driver(clone_of).name)); + fprintf(m_output, " romof=\"%s\"", util::xml::normalize_string(drivlist.driver(clone_of).name)); // display sample information and close the game tag output_sampleof(config->root_device()); fprintf(m_output, ">\n"); // output game description - if (driver.description != nullptr) - fprintf(m_output, "\t\t%s\n", util::xml::normalize_string(driver.description)); + if (driver.type.fullname() != nullptr) + fprintf(m_output, "\t\t%s\n", util::xml::normalize_string(driver.type.fullname())); // print the year only if is a number or another allowed character (? or +) if (driver.year != nullptr && strspn(driver.year, "0123456789?+") == strlen(driver.year)) @@ -341,23 +435,23 @@ void info_xml_creator::output_one(device_type_set *devtypes) fprintf(m_output, "\t\t%s\n", util::xml::normalize_string(driver.manufacturer)); // now print various additional information - output_bios(); - output_rom(config->root_device()); - output_device_roms(); + output_bios(driver); + output_rom(&drivlist, config->root_device()); + output_device_roms(config->root_device()); output_sample(config->root_device()); output_chips(config->root_device(), ""); - output_display(config->root_device(), &m_drivlist.driver().flags, ""); + output_display(config->root_device(), &drivlist.driver().flags, ""); output_sound(config->root_device()); output_input(portlist); output_switches(portlist, "", IPT_DIPSWITCH, "dipswitch", "dipvalue"); output_switches(portlist, "", IPT_CONFIG, "configuration", "confsetting"); output_ports(portlist); output_adjusters(portlist); - output_driver(); + output_driver(driver); output_images(config->root_device(), ""); output_slots(*config, config->root_device(), "", devtypes); - output_software_list(); - output_ramoptions(); + output_software_list(config->root_device()); + output_ramoptions(config->root_device()); // close the topmost tag fprintf(m_output, "\t\n",XML_TOP); @@ -402,7 +496,7 @@ void info_xml_creator::output_one_device(machine_config &config, device_t &devic fprintf(m_output, ">\n"); fprintf(m_output, "\t\t%s\n", util::xml::normalize_string(device.name())); - output_rom(device); + output_rom(nullptr, device); if (device.type().type() != typeid(samples_device)) // ignore samples_device itself output_sample(device); @@ -471,10 +565,10 @@ void info_xml_creator::output_devices(device_type_set const *filter) // included in a device set, print a reference //------------------------------------------------- -void info_xml_creator::output_device_roms() +void info_xml_creator::output_device_roms(device_t &root) { - for (device_t &device : device_iterator(m_drivlist.config()->root_device())) - if (device.owner() != nullptr && device.shortname() != nullptr && device.shortname()[0] != '\0') + for (device_t &device : device_iterator(root)) + if (device.owner()) fprintf(m_output, "\t\t\n", util::xml::normalize_string(device.shortname())); } @@ -506,32 +600,32 @@ void info_xml_creator::output_sampleof(device_t &device) // game //------------------------------------------------- -void info_xml_creator::output_bios() +void info_xml_creator::output_bios(game_driver const &driver) { // skip if no ROMs - if (m_drivlist.driver().rom == nullptr) - return; - - auto rom_entries = rom_build_entries(m_drivlist.driver().rom); + if (driver.rom) + { + auto rom_entries = rom_build_entries(driver.rom); - // first determine the default BIOS name - std::string defaultname; - for (const rom_entry &rom : rom_entries) - if (ROMENTRY_ISDEFAULT_BIOS(&rom)) - defaultname = ROM_GETNAME(&rom); + // first determine the default BIOS name + std::string defaultname; + for (const rom_entry &rom : rom_entries) + if (ROMENTRY_ISDEFAULT_BIOS(&rom)) + defaultname = ROM_GETNAME(&rom); - // iterate over ROM entries and look for BIOSes - for (const rom_entry &rom : rom_entries) - if (ROMENTRY_ISSYSTEM_BIOS(&rom)) - { - // output extracted name and descriptions - fprintf(m_output, "\t\t\n"); - } + // iterate over ROM entries and look for BIOSes + for (const rom_entry &rom : rom_entries) + if (ROMENTRY_ISSYSTEM_BIOS(&rom)) + { + // output extracted name and descriptions + fprintf(m_output, "\t\t\n"); + } + } } @@ -540,9 +634,10 @@ void info_xml_creator::output_bios() // the XML output //------------------------------------------------- -void info_xml_creator::output_rom(device_t &device) +void info_xml_creator::output_rom(driver_enumerator *drivlist, device_t &device) { // iterate over 3 different ROM "types": BIOS, ROMs, DISKs + bool const do_merge_name = drivlist && dynamic_cast(&device); for (int rom_type = 0; rom_type < 3; rom_type++) for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region)) { @@ -567,8 +662,8 @@ void info_xml_creator::output_rom(device_t &device) // if we have a valid ROM and we are a clone, see if we can find the parent ROM util::hash_collection hashes(ROM_GETHASHDATA(rom)); - if (dynamic_cast(&device) &&!hashes.flag(util::hash_collection::FLAG_NO_DUMP)) - merge_name = get_merge_name(hashes); + if (do_merge_name && !hashes.flag(util::hash_collection::FLAG_NO_DUMP)) + merge_name = get_merge_name(*drivlist, hashes); // scan for a BIOS name bios_name[0] = 0; @@ -1385,7 +1480,7 @@ void info_xml_creator::output_adjusters(const ioport_list &portlist) // output_driver - print driver status //------------------------------------------------- -void info_xml_creator::output_driver() +void info_xml_creator::output_driver(game_driver const &driver) { fprintf(m_output, "\t\troot_device())) + for (const software_list_device &swlist : software_list_device_iterator(root)) { fprintf(m_output, "\t\troot_device())) + for (const ram_device &ram : ram_device_iterator(root)) { fprintf(m_output, "\t\t%u\n", ram.default_size()); @@ -1615,14 +1710,14 @@ void info_xml_creator::output_ramoptions() // parent set //------------------------------------------------- -const char *info_xml_creator::get_merge_name(const util::hash_collection &romhashes) +const char *info_xml_creator::get_merge_name(driver_enumerator &drivlist, util::hash_collection const &romhashes) { // walk the parent chain const char *merge_name = nullptr; - for (int clone_of = m_drivlist.find(m_drivlist.driver().parent); clone_of != -1; clone_of = m_drivlist.find(m_drivlist.driver(clone_of).parent)) + for (int clone_of = drivlist.find(drivlist.driver().parent); clone_of != -1; clone_of = drivlist.find(drivlist.driver(clone_of).parent)) { // look in the parent's ROMs - device_t *device = &m_drivlist.config(clone_of, m_lookup_options)->root_device(); + device_t *device = &drivlist.config(clone_of, m_lookup_options)->root_device(); for (const rom_entry *pregion = rom_first_region(*device); pregion != nullptr; pregion = rom_next_region(pregion)) for (const rom_entry *prom = rom_first_file(pregion); prom != nullptr; prom = rom_next_file(prom)) { diff --git a/src/frontend/mame/info.h b/src/frontend/mame/info.h index c36daf3b6ee..23d01b8e1ae 100644 --- a/src/frontend/mame/info.h +++ b/src/frontend/mame/info.h @@ -17,6 +17,7 @@ #include #include +#include class driver_enumerator; @@ -31,20 +32,24 @@ class info_xml_creator { public: // construction/destruction - info_xml_creator(driver_enumerator &drivlist, bool filter_devices); + info_xml_creator(emu_options const &options); // output - void output(FILE *out, bool nodevices = false); + void output(FILE *out, std::vector const &patterns); + void output(FILE *out, driver_enumerator &drivlist, bool nodevices); private: typedef std::unordered_set > device_type_set; // internal helper - void output_one(device_type_set *devtypes); + void output_header(); + void output_footer(); + + void output_one(driver_enumerator &drivlist, device_type_set *devtypes); void output_sampleof(device_t &device); - void output_bios(); - void output_rom(device_t &device); - void output_device_roms(); + void output_bios(game_driver const &driver); + void output_rom(driver_enumerator *drivlist, device_t &device); + void output_device_roms(device_t &root); void output_sample(device_t &device); void output_chips(device_t &device, const char *root_tag); void output_display(device_t &device, u32 const *flags, const char *root_tag); @@ -53,22 +58,20 @@ private: void output_switches(const ioport_list &portlist, const char *root_tag, int type, const char *outertag, const char *innertag); void output_ports(const ioport_list &portlist); void output_adjusters(const ioport_list &portlist); - void output_driver(); + void output_driver(game_driver const &driver); void output_images(device_t &device, const char *root_tag); void output_slots(machine_config &config, device_t &device, const char *root_tag, device_type_set *devtypes); - void output_software_list(); - void output_ramoptions(); + void output_software_list(device_t &root); + void output_ramoptions(device_t &root); void output_one_device(machine_config &config, device_t &device, const char *devtag); void output_devices(device_type_set const *filter); - const char *get_merge_name(const util::hash_collection &romhashes); + const char *get_merge_name(driver_enumerator &drivlist, util::hash_collection const &romhashes); // internal state - FILE * m_output; - driver_enumerator & m_drivlist; - bool m_filter_devices; - emu_options m_lookup_options; + FILE * m_output; // FIXME: this is not reentrancy-safe + emu_options m_lookup_options; static const char s_dtd_string[]; }; diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index 79e65d4e9c9..0628afc2350 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -719,7 +719,7 @@ void lua_engine::initialize() sol::table emu = sol().create_named_table("emu"); emu["app_name"] = &emulator_info::get_appname_lower; emu["app_version"] = &emulator_info::get_bare_build_version; - emu["gamename"] = [this](){ return machine().system().description; }; + emu["gamename"] = [this](){ return machine().system().type.fullname(); }; emu["romname"] = [this](){ return machine().basename(); }; emu["softname"] = [this](){ return machine().options().software_name(); }; emu["keypost"] = [this](const char *keys){ machine().ioport().natkeyboard().post_utf8(keys); }; @@ -778,6 +778,7 @@ void lua_engine::initialize() emu.new_usertype("file", sol::call_constructor, sol::constructors>(), "read", [](emu_file &file, sol::buffer *buff) { buff->set_len(file.read(buff->get_ptr(), buff->get_len())); return buff; }, + "write", [](emu_file &file, const std::string &data) { return file.write(data.data(), data.size()); }, "open", static_cast(&emu_file::open), "open_next", &emu_file::open_next, "seek", &emu_file::seek, @@ -1073,10 +1074,10 @@ void lua_engine::initialize() */ sol().registry().new_usertype("game_driver", "new", sol::no_constructor, - "source_file", sol::readonly(&game_driver::source_file), + "source_file", sol::property([] (game_driver const &driver) { return &driver.type.source()[0]; }), "parent", sol::readonly(&game_driver::parent), "name", sol::property([] (game_driver const &driver) { return &driver.name[0]; }), - "description", sol::readonly(&game_driver::description), + "description", sol::property([] (game_driver const &driver) { return &driver.type.fullname()[0]; }), "year", sol::readonly(&game_driver::year), "manufacturer", sol::readonly(&game_driver::manufacturer), "compatible_with", sol::readonly(&game_driver::compatible_with), diff --git a/src/frontend/mame/luaengine.h b/src/frontend/mame/luaengine.h index dfc860f21e5..e3f8d5ee93d 100644 --- a/src/frontend/mame/luaengine.h +++ b/src/frontend/mame/luaengine.h @@ -17,6 +17,10 @@ #ifndef __LUA_ENGINE_H__ #define __LUA_ENGINE_H__ +#if defined(__GNUC__) && (__GNUC__ > 6) +#pragma GCC diagnostic ignored "-Wnoexcept-type" +#endif + #include #include #define SOL_SAFE_USERTYPE diff --git a/src/frontend/mame/mame.cpp b/src/frontend/mame/mame.cpp index feb5fb770d4..cdab8e4d9c9 100644 --- a/src/frontend/mame/mame.cpp +++ b/src/frontend/mame/mame.cpp @@ -129,9 +129,9 @@ void mame_machine_manager::start_luaengine() emu_file file(options().ini_path(), OPEN_FLAG_READ); if (file.open("plugin.ini") == osd_file::error::NONE) { - bool result = m_plugins->parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error); + bool result = m_plugins->parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_MAME_INI < OPTION_PRIORITY_DRIVER_INI, error); if (!result) - osd_printf_error("**Error loading plugin.ini**"); + osd_printf_error("**Error loading plugin.ini**\n"); } } for (auto &curentry : *m_plugins) @@ -216,6 +216,11 @@ int mame_machine_manager::execute() valid.check_shared_source(*system); } + // reevaluate slot options until nothing changes + while (mame_options::reevaluate_slot_options(m_options)) + { + } + // create the machine configuration machine_config config(*system, m_options); diff --git a/src/frontend/mame/mame.h b/src/frontend/mame/mame.h index a2d21520229..849711cf3a5 100644 --- a/src/frontend/mame/mame.h +++ b/src/frontend/mame/mame.h @@ -51,7 +51,7 @@ public: virtual ui_manager* create_ui(running_machine& machine) override; virtual void create_custom(running_machine& machine) override; - + virtual void load_cheatfiles(running_machine& machine) override; virtual void ui_initialize(running_machine& machine) override; diff --git a/src/frontend/mame/mameopts.cpp b/src/frontend/mame/mameopts.cpp index 515e6829baa..84d1f6a313f 100644 --- a/src/frontend/mame/mameopts.cpp +++ b/src/frontend/mame/mameopts.cpp @@ -14,6 +14,8 @@ #include "drivenum.h" #include "screen.h" #include "softlist_dev.h" +#include "zippath.h" +#include "hashfile.h" #include #include @@ -27,7 +29,7 @@ int mame_options::m_device_options = 0; // options for the configured system //------------------------------------------------- -bool mame_options::add_slot_options(emu_options &options, std::function value_specifier) +bool mame_options::add_slot_options(emu_options &options, value_specifier_func value_specifier) { // look up the system configured by name; if no match, do nothing const game_driver *cursystem = system(options); @@ -55,10 +57,15 @@ bool mame_options::add_slot_options(emu_options &options, std::function get_hashfile_extrainfo; + + // figure out if an image option has been specified, and if so, get the image path out of the options + device_image_interface *image = dynamic_cast(&slot); + if (image) + { + auto iter = options.image_options().find(image->instance_name()); + if (iter != options.image_options().end()) + image_path = iter->second; + + get_hashfile_extrainfo = [image, &options](util::core_file &file, std::string &extrainfo) + { + util::hash_collection hashes = image->calculate_hash_on_file(file); + + return hashfile_extrainfo( + options.hash_path(), + image->device().mconfig().gamedrv(), + hashes, + extrainfo); + }; + } + + // create the hook + get_default_card_software_hook hook(image_path, std::move(get_hashfile_extrainfo)); + + // and invoke the slot's implementation of get_default_card_software() + return slot.get_default_card_software(hook); +} + + //------------------------------------------------- // add_device_options - add all of the device // options for the configured system //------------------------------------------------- -void mame_options::add_device_options(emu_options &options, std::function value_specifier) +void mame_options::add_device_options(emu_options &options, value_specifier_func value_specifier) { // look up the system configured by name; if no match, do nothing const game_driver *cursystem = system(options); @@ -121,7 +165,7 @@ void mame_options::add_device_options(emu_options &options, std::function value_specifier) +void mame_options::parse_slot_devices(emu_options &options, value_specifier_func value_specifier) { bool still_adding = true; while (still_adding) @@ -212,8 +261,8 @@ void mame_options::parse_slot_devices(emu_options &options, std::function mame_options::evaluate_initial_softlist_optio // only load compatible software this way if (swlistdev.is_compatible(swpart) == SOFTWARE_IS_COMPATIBLE) { - device_image_interface *image = software_list_device::find_mountable_image(config, swpart); + // we need to find a mountable image slot, but we need to ensure it is a slot + // for which we have not already distributed a part to + device_image_interface *image = software_list_device::find_mountable_image( + config, + swpart, + [&results](const device_image_interface &candidate) { return results.count(candidate.instance_name()) == 0; }); + + // did we find a slot to put this part into? if (image != nullptr) { // we've resolved this software @@ -394,13 +456,13 @@ std::map mame_options::evaluate_initial_softlist_optio } // identify other shared features specified as '<>_default' - // + // // example from SMS: // - // - // ... - // - // + // + // ... + // + // for (const feature_list_item &fi : swinfo->shared_info()) { const std::string default_suffix = "_default"; @@ -494,7 +556,7 @@ void mame_options::parse_standard_inis(emu_options &options, std::string &error_ } // next parse "source/.ini" - std::string sourcename = core_filename_extract_base(cursystem->source_file, true).insert(0, "source" PATH_SEPARATOR); + std::string sourcename = core_filename_extract_base(cursystem->type.source(), true).insert(0, "source" PATH_SEPARATOR); parse_one_ini(options,sourcename.c_str(), OPTION_PRIORITY_SOURCE_INI, &error_string); // then parse the grandparent, parent, and system-specific INIs @@ -505,9 +567,6 @@ void mame_options::parse_standard_inis(emu_options &options, std::string &error_ if (parent != -1) parse_one_ini(options,driver_list::driver(parent).name, OPTION_PRIORITY_PARENT_INI, &error_string); parse_one_ini(options,cursystem->name, OPTION_PRIORITY_DRIVER_INI, &error_string); - - // Re-evaluate slot options after loading ini files - update_slot_options(options); } @@ -627,7 +686,7 @@ bool mame_options::parse_one_ini(emu_options &options, const char *basename, int // parse the file osd_printf_verbose("Parsing %s.ini\n", basename); std::string error; - bool result = options.parse_ini_file((util::core_file&)file, priority, OPTION_PRIORITY_DRIVER_INI, error); + bool result = options.parse_ini_file((util::core_file&)file, priority, priority < OPTION_PRIORITY_DRIVER_INI, error); // append errors if requested if (!error.empty() && error_string) @@ -635,3 +694,25 @@ bool mame_options::parse_one_ini(emu_options &options, const char *basename, int return result; } + + +//------------------------------------------------- +// populate_hashpath_from_ini_files +//------------------------------------------------- + +void mame_options::populate_hashpath_from_ini_files(emu_options &options) +{ + // create temporary emu_options for the purposes of evaluating the INI files + emu_options temp_options; + std::string temp_error_string; + temp_options.set_value(OPTION_SYSTEMNAME, options.system_name(), OPTION_PRIORITY_MAXIMUM, temp_error_string); + temp_options.set_value(OPTION_INIPATH, options.ini_path(), OPTION_PRIORITY_MAXIMUM, temp_error_string); + + // read the INIs into temp_options + parse_standard_inis(temp_options, temp_error_string); + + // and fish out hashpath + const auto entry = temp_options.get_entry(OPTION_HASHPATH); + if (entry) + options.set_value(OPTION_HASHPATH, entry->value(), entry->priority(), temp_error_string); +} diff --git a/src/frontend/mame/mameopts.h b/src/frontend/mame/mameopts.h index 8c1e2497327..f9ee3325e52 100644 --- a/src/frontend/mame/mameopts.h +++ b/src/frontend/mame/mameopts.h @@ -8,10 +8,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_FRONTEND_MAMEOPTS_H +#define MAME_FRONTEND_MAMEOPTS_H -#ifndef __MAMEOPTS_H__ -#define __MAMEOPTS_H__ +#pragma once #include "emuopts.h" @@ -45,7 +45,7 @@ enum //************************************************************************** // forward references -struct game_driver; +class game_driver; class software_part; class mame_options @@ -53,6 +53,8 @@ class mame_options static const uint32_t OPTION_FLAG_DEVICE = 0x80000000; public: + typedef std::function value_specifier_func; + // parsing wrappers static bool parse_command_line(emu_options &options, std::vector &args, std::string &error_string); static void parse_standard_inis(emu_options &options, std::string &error_string, const game_driver *driver = nullptr); @@ -61,15 +63,16 @@ public: static const game_driver *system(const emu_options &options); static void set_system_name(emu_options &options, const char *name); - static bool add_slot_options(emu_options &options, std::function value_specifier = nullptr); + static bool add_slot_options(emu_options &options, value_specifier_func value_specifier = nullptr); + static bool reevaluate_slot_options(emu_options &options); private: // device-specific option handling - static void add_device_options(emu_options &options, std::function value_specifier = nullptr); + static void add_device_options(emu_options &options, value_specifier_func value_specifier = nullptr); static void update_slot_options(emu_options &options, const software_part *swpart = nullptr); - static void parse_slot_devices(emu_options &options, std::function value_specifier); + static void parse_slot_devices(emu_options &options, value_specifier_func value_specifier); static std::string get_full_option_name(const device_image_interface &image); - static bool reevaluate_slot_options(emu_options &options); + static std::string get_default_card_software(device_slot_interface &slot, const emu_options &options); // INI parsing helper static bool parse_one_ini(emu_options &options, const char *basename, int priority, std::string *error_string = nullptr); @@ -77,8 +80,15 @@ private: // softlist handling static std::map evaluate_initial_softlist_options(emu_options &options); + // special function to fish hashpath out of INI files - needed for softlist processing + static void populate_hashpath_from_ini_files(emu_options &options); + + // represents an "invalid" value (an empty string is valid so we can't use that; what I + // really want to return is std::optional but C++17 isn't here yet) + static std::string value_specifier_invalid_value() { return std::string("\x01\x02\x03"); } + static int m_slot_options; static int m_device_options; }; -#endif /* __MAMEOPTS_H__ */ +#endif // MAME_FRONTEND_MAMEOPTS_H diff --git a/src/frontend/mame/media_ident.cpp b/src/frontend/mame/media_ident.cpp index b2e1ba218ed..3e1ee54048a 100644 --- a/src/frontend/mame/media_ident.cpp +++ b/src/frontend/mame/media_ident.cpp @@ -20,15 +20,49 @@ // MEDIA IDENTIFIER //************************************************************************** +void media_identifier::file_info::match( + device_t const &device, + rom_entry const &rom, + util::hash_collection const &hashes) +{ + if (hashes == m_hashes) + { + m_matches.emplace_back( + device.shortname(), + device.name(), + ROM_GETNAME(&rom), + hashes.flag(util::hash_collection::FLAG_BAD_DUMP), + device.owner()); + } +} + +void media_identifier::file_info::match( + std::string const &list, + software_info const &software, + rom_entry const &rom, + util::hash_collection const &hashes) +{ + if (hashes == m_hashes) + { + m_matches.emplace_back( + util::string_format("%s:%s", list, software.shortname()), + std::string(software.longname()), + ROM_GETNAME(&rom), + hashes.flag(util::hash_collection::FLAG_BAD_DUMP), + false); + } +} + + //------------------------------------------------- // media_identifier - constructor //------------------------------------------------- media_identifier::media_identifier(emu_options &options) - : m_drivlist(options), - m_total(0), - m_matches(0), - m_nonroms(0) + : m_drivlist(options) + , m_total(0) + , m_matches(0) + , m_nonroms(0) { } @@ -39,208 +73,283 @@ media_identifier::media_identifier(emu_options &options) //------------------------------------------------- void media_identifier::identify(const char *filename) +{ + std::vector info; + collect_files(info, filename); + match_hashes(info); + print_results(info); +} + + +//------------------------------------------------- +// identify_file - identify a file +//------------------------------------------------- + +void media_identifier::identify_file(const char *name) +{ + std::vector info; + digest_file(info, name); + match_hashes(info); + print_results(info); +} + + +//------------------------------------------------- +// identify_data - identify a buffer full of +// data; if it comes from a .JED file, parse the +// fusemap into raw data first +//------------------------------------------------- + +void media_identifier::identify_data(const char *name, const uint8_t *data, std::size_t length) +{ + std::vector info; + digest_data(info, name, data, length); + match_hashes(info); + print_results(info); +} + + +//------------------------------------------------- +// collect_files - pre-process files for +// identification +//------------------------------------------------- + +void media_identifier::collect_files(std::vector &info, char const *path) { // first try to open as a directory - osd::directory::ptr directory = osd::directory::open(filename); + osd::directory::ptr const directory = osd::directory::open(path); if (directory) { // iterate over all files in the directory - for (const osd::directory::entry *entry = directory->read(); entry != nullptr; entry = directory->read()) + for (osd::directory::entry const *entry = directory->read(); entry; entry = directory->read()) + { if (entry->type == osd::directory::entry::entry_type::FILE) { - std::string curfile = std::string(filename).append(PATH_SEPARATOR).append(entry->name); - identify(curfile.c_str()); + std::string const curfile = std::string(path).append(PATH_SEPARATOR).append(entry->name); + collect_files(info, curfile.c_str()); } - - // close the directory and be done - directory.reset(); + } } - - // if that failed, and the filename ends with .zip, identify as a ZIP file - if (core_filename_ends_with(filename, ".7z") || core_filename_ends_with(filename, ".zip")) + else if (core_filename_ends_with(path, ".7z") || core_filename_ends_with(path, ".zip")) { - // first attempt to examine it as a valid _7Z file + // first attempt to examine it as a valid zip/7z file util::archive_file::ptr archive; util::archive_file::error err; - if (core_filename_ends_with(filename, ".7z")) - err = util::archive_file::open_7z(filename, archive); + if (core_filename_ends_with(path, ".7z")) + err = util::archive_file::open_7z(path, archive); else - err = util::archive_file::open_zip(filename, archive); - if ((err == util::archive_file::error::NONE) && archive) + err = util::archive_file::open_zip(path, archive); + + if ((util::archive_file::error::NONE == err) && archive) { std::vector data; // loop over entries in the .7z, skipping empty files and directories for (int i = archive->first_file(); i >= 0; i = archive->next_file()) { - const std::uint64_t length(archive->current_uncompressed_length()); - if (!archive->current_is_directory() && (length != 0) && (std::uint32_t(length) == length)) + std::uint64_t const length(archive->current_uncompressed_length()); + if (!archive->current_is_directory() && length) { - // decompress data into RAM and identify it - try + std::string const curfile = std::string(path).append(PATH_SEPARATOR).append(archive->current_name()); + if (std::uint32_t(length) == length) { - data.resize(std::size_t(length)); - err = archive->decompress(&data[0], std::uint32_t(length)); - if (err == util::archive_file::error::NONE) - identify_data(archive->current_name().c_str(), &data[0], length); + // decompress data into RAM and identify it + try + { + data.resize(std::size_t(length)); + err = archive->decompress(&data[0], std::uint32_t(length)); + if (util::archive_file::error::NONE == err) + digest_data(info, curfile.c_str(), &data[0], length); + else + osd_printf_error("%s: error decompressing file\n", curfile.c_str()); + } + catch (...) + { + // resizing the buffer could cause a bad_alloc if archive contains large files + osd_printf_error("%s: error decompressing file\n", curfile.c_str()); + } + data.clear(); } - catch (...) + else { - // resizing the buffer could cause a bad_alloc if archive contains large files + osd_printf_error("%s: file too large to decompress into memory\n", curfile.c_str()); } - data.clear(); } } } + else + { + osd_printf_error("%s: error opening archive\n", path); + } // clear out any cached files - archive.reset(); util::archive_file::cache_clear(); } - - // otherwise, identify as a raw file else - identify_file(filename); + { + // otherwise, identify as a raw file + digest_file(info, path); + } } //------------------------------------------------- -// identify_file - identify a file +// digest_file - calculate hashes for a single +// file //------------------------------------------------- -void media_identifier::identify_file(const char *name) +void media_identifier::digest_file(std::vector &info, char const *path) { // CHD files need to be parsed and their hashes extracted from the header - if (core_filename_ends_with(name, ".chd")) + if (core_filename_ends_with(path, ".chd")) { - // output the name - osd_printf_info("%-20s", core_filename_extract_base(name).c_str()); - m_total++; - // attempt to open as a CHD; fail if not chd_file chd; - chd_error err = chd.open(name); + chd_error const err = chd.open(path); + m_total++; if (err != CHDERR_NONE) { - osd_printf_info("NOT A CHD\n"); + osd_printf_info("%-20sNOT A CHD\n", core_filename_extract_base(path).c_str()); m_nonroms++; - return; } - - // error on writable CHDs - if (!chd.compressed()) + else if (!chd.compressed()) { - osd_printf_info("is a writeable CHD\n"); - return; + osd_printf_info("%-20sis a writeable CHD\n", core_filename_extract_base(path).c_str()); } - - // otherwise, get the hash collection for this CHD - util::hash_collection hashes; - if (chd.sha1() != util::sha1_t::null) - hashes.add_sha1(chd.sha1()); - - // determine whether this file exists - int found = find_by_hash(hashes, chd.logical_bytes()); - if (found == 0) - osd_printf_info("NO MATCH\n"); else - m_matches++; + { + // otherwise, get the hash collection for this CHD + util::hash_collection hashes; + if (chd.sha1() != util::sha1_t::null) + hashes.add_sha1(chd.sha1()); + info.emplace_back(path, chd.logical_bytes(), std::move(hashes), file_flavour::CHD); + } } - - // all other files have their hashes computed directly else { + // if this is a '.jed' file, process it into raw bits first + if (core_filename_ends_with(path, ".jed")) + { + // load the file and process if it opens and has a valid length + uint32_t length; + void *data; + if (osd_file::error::NONE == util::core_file::load(path, &data, length)) + { + jed_data jed; + if (JEDERR_NONE == jed_parse(data, length, &jed)) + { + try + { + // now determine the new data length and allocate temporary memory for it + std::vector tempjed(jedbin_output(&jed, nullptr, 0)); + jedbin_output(&jed, &tempjed[0], tempjed.size()); + util::hash_collection hashes; + hashes.compute(&tempjed[0], tempjed.size(), util::hash_collection::HASH_TYPES_CRC_SHA1); + info.emplace_back(path, tempjed.size(), std::move(hashes), file_flavour::JED); + free(data); + m_total++; + return; + } + catch (...) + { + } + } + free(data); + } + } + // load the file and process if it opens and has a valid length - uint32_t length; - void *data; - const osd_file::error filerr = util::core_file::load(name, &data, length); - if (filerr == osd_file::error::NONE && length > 0) + util::core_file::ptr file; + if ((osd_file::error::NONE == util::core_file::open(path, OPEN_FLAG_READ, file)) && file) { - identify_data(name, reinterpret_cast(data), length); - free(data); + util::hash_collection hashes; + hashes.begin(util::hash_collection::HASH_TYPES_CRC_SHA1); + std::uint8_t buf[1024]; + for (std::uint64_t remaining = file->size(); remaining; ) + { + std::uint32_t const block = std::min(remaining, sizeof(buf)); + if (file->read(buf, block) < block) + { + osd_printf_error("%s: error reading file\n", path); + return; + } + remaining -= block; + hashes.buffer(buf, block); + } + hashes.end(); + info.emplace_back(path, file->size(), std::move(hashes), file_flavour::RAW); + m_total++; + } + else + { + osd_printf_error("%s: error opening file\n", path); } } } //------------------------------------------------- -// identify_data - identify a buffer full of -// data; if it comes from a .JED file, parse the -// fusemap into raw data first +// digest_data - calculate hashes for data in +// memory //------------------------------------------------- -void media_identifier::identify_data(const char *name, const uint8_t *data, int length) +void media_identifier::digest_data(std::vector &info, char const *name, void const *data, std::uint64_t length) { + util::hash_collection hashes; + // if this is a '.jed' file, process it into raw bits first - std::vector tempjed; - jed_data jed; - if (core_filename_ends_with(name, ".jed") && jed_parse(data, length, &jed) == JEDERR_NONE) + if (core_filename_ends_with(name, ".jed")) { - // now determine the new data length and allocate temporary memory for it - length = jedbin_output(&jed, nullptr, 0); - tempjed.resize(length); - jedbin_output(&jed, &tempjed[0], length); - data = &tempjed[0]; + jed_data jed; + if (JEDERR_NONE == jed_parse(data, length, &jed)) + { + try + { + // now determine the new data length and allocate temporary memory for it + std::vector tempjed(jedbin_output(&jed, nullptr, 0)); + jedbin_output(&jed, &tempjed[0], tempjed.size()); + hashes.compute(&tempjed[0], tempjed.size(), util::hash_collection::HASH_TYPES_CRC_SHA1); + info.emplace_back(name, tempjed.size(), std::move(hashes), file_flavour::JED); + m_total++; + return; + } + catch (...) + { + } + } } - // compute the hash of the data - util::hash_collection hashes; - hashes.compute(data, length, util::hash_collection::HASH_TYPES_CRC_SHA1); - - // output the name + hashes.compute(reinterpret_cast(data), length, util::hash_collection::HASH_TYPES_CRC_SHA1); + info.emplace_back(name, length, std::move(hashes), file_flavour::RAW); m_total++; - osd_printf_info("%-20s", core_filename_extract_base(name).c_str()); - - // see if we can find a match in the ROMs - int found = find_by_hash(hashes, length); - - // if we didn't find it, try to guess what it might be - if (found == 0) - osd_printf_info("NO MATCH\n"); - - // if we did find it, count it as a match - else - m_matches++; } //------------------------------------------------- -// find_by_hash - scan for a file in the list -// of drivers by hash +// match_hashes - find known dumps that mach +// collected hashes //------------------------------------------------- -int media_identifier::find_by_hash(const util::hash_collection &hashes, int length) +void media_identifier::match_hashes(std::vector &info) { - int found = 0; std::unordered_set listnames; - std::unordered_set shortnames; // iterate over drivers m_drivlist.reset(); while (m_drivlist.next()) { - // iterate over devices, regions and files within the region - for (device_t &device : device_iterator(m_drivlist.config()->root_device())) + // iterate over regions and files within the region + device_t &device = m_drivlist.config()->root_device(); + for (rom_entry const *region = rom_first_region(device); region; region = rom_next_region(region)) { - if (shortnames.insert(device.shortname()).second) + for (rom_entry const *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) { - for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region)) - for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom)) - { - util::hash_collection romhashes(ROM_GETHASHDATA(rom)); - if (!romhashes.flag(util::hash_collection::FLAG_NO_DUMP) && hashes == romhashes) - { - bool baddump = romhashes.flag(util::hash_collection::FLAG_BAD_DUMP); - - // output information about the match - if (found) - osd_printf_info(" "); - osd_printf_info("= %s%-20s %-10s %s%s\n", baddump ? "(BAD) " : "", - ROM_GETNAME(rom), device.shortname(), device.name(), - device.owner() != nullptr ? " (device)" : ""); - found++; - } - } + util::hash_collection romhashes(ROM_GETHASHDATA(rom)); + if (!romhashes.flag(util::hash_collection::FLAG_NO_DUMP)) + { + for (file_info &file : info) + file.match(device, *rom, romhashes); + } } } @@ -249,27 +358,82 @@ int media_identifier::find_by_hash(const util::hash_collection &hashes, int leng { if (listnames.insert(swlistdev.list_name()).second) { - for (const software_info &swinfo : swlistdev.get_info()) - for (const software_part &part : swinfo.parts()) - for (const rom_entry *region = part.romdata().data(); region != nullptr; region = rom_next_region(region)) - for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom)) + for (software_info const &swinfo : swlistdev.get_info()) + { + for (software_part const &part : swinfo.parts()) + { + for (rom_entry const *region = part.romdata().data(); region; region = rom_next_region(region)) + { + for (rom_entry const *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) { util::hash_collection romhashes(ROM_GETHASHDATA(rom)); - if (hashes == romhashes) + if (!romhashes.flag(util::hash_collection::FLAG_NO_DUMP)) { - bool baddump = romhashes.flag(util::hash_collection::FLAG_BAD_DUMP); - - // output information about the match - if (found) - osd_printf_info(" "); - osd_printf_info("= %s%-20s %s:%s %s\n", baddump ? "(BAD) " : "", ROM_GETNAME(rom), swlistdev.list_name().c_str(), swinfo.shortname().c_str(), swinfo.longname().c_str()); - found++; + for (file_info &file : info) + file.match(swlistdev.list_name(), swinfo, *rom, romhashes); } } + } + } + } } } } - return found; + // iterator over devices + machine_config config(GAME_NAME(___empty), m_drivlist.options()); + for (device_type type : registered_device_types) + { + // iterate over regions and files within the region + device_t *const device = config.device_add(&config.root_device(), "_tmp", type, 0); + for (rom_entry const *region = rom_first_region(*device); region; region = rom_next_region(region)) + { + for (rom_entry const *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) + { + util::hash_collection romhashes(ROM_GETHASHDATA(rom)); + if (!romhashes.flag(util::hash_collection::FLAG_NO_DUMP)) + { + for (file_info &file : info) + file.match(*device, *rom, romhashes); + } + } + } + config.device_remove(&config.root_device(), "_tmp"); + } } + +//------------------------------------------------- +// print_results - print info on files that were +// found to match known dumps +//------------------------------------------------- + +void media_identifier::print_results(std::vector const &info) +{ + for (file_info const &file : info) + { + osd_printf_info("%-20s", core_filename_extract_base(file.name()).c_str()); + if (file.matches().empty()) + { + osd_printf_info("NO MATCH\n"); + } + else + { + bool first = true; + m_matches++; + for (match_data const &match : file.matches()) + { + if (!first) + osd_printf_info("%-20s", ""); + first = false; + osd_printf_info( + "= %s%-20s %-10s %s%s\n", + match.bad() ? "(BAD) " : "", + match.romname().c_str(), + match.shortname().c_str(), + match.fullname().c_str(), + match.device() ? " (device)" : ""); + } + } + } +} diff --git a/src/frontend/mame/media_ident.h b/src/frontend/mame/media_ident.h index 7ea1006056f..b7da0dde350 100644 --- a/src/frontend/mame/media_ident.h +++ b/src/frontend/mame/media_ident.h @@ -10,6 +10,9 @@ #ifndef MAME_FRONTEND_MEDIA_IDENT_H #define MAME_FRONTEND_MEDIA_IDENT_H +#include + + // media_identifier class identifies media by hash via a search in // the driver database class media_identifier @@ -27,16 +30,99 @@ public: void reset() { m_total = m_matches = m_nonroms = 0; } void identify(const char *name); void identify_file(const char *name); - void identify_data(const char *name, const uint8_t *data, int length); - int find_by_hash(const util::hash_collection &hashes, int length); + void identify_data(const char *name, const uint8_t *data, std::size_t length); private: + enum class file_flavour + { + RAW, + JED, + CHD + }; + + class match_data + { + public: + match_data( + std::string &&shortname, + std::string &&fullname, + std::string &&romname, + bool bad, + bool device) + : m_shortname(std::move(shortname)) + , m_fullname(std::move(fullname)) + , m_romname(std::move(romname)) + , m_bad(bad) + , m_device(device) + { + } + + match_data(match_data const &) = default; + match_data(match_data &&) = default; + match_data &operator=(match_data const &) = default; + match_data &operator=(match_data &&) = default; + + std::string const &shortname() const { return m_shortname; } + std::string const &fullname() const { return m_fullname; } + std::string const &romname() const { return m_romname; } + bool bad() const { return m_bad; } + bool device() const { return m_device; } + + private: + std::string m_shortname; + std::string m_fullname; + std::string m_romname; + bool m_bad; + bool m_device; + }; + + class file_info + { + public: + file_info( + std::string &&name, + std::uint64_t length, + util::hash_collection &&hashes, + file_flavour flavour) + : m_name(std::move(name)) + , m_length(length) + , m_hashes(std::move(hashes)) + , m_flavour(flavour) + { + } + + file_info(file_info const &) = default; + file_info(file_info &&) = default; + file_info &operator=(file_info const &) = default; + file_info &operator=(file_info &&) = default; + + std::string const &name() const { return m_name; } + std::uint64_t length() const { return m_length; } + util::hash_collection const &hashes() const { return m_hashes; } + file_flavour flavour() const { return m_flavour; } + std::vector const &matches() const { return m_matches; } + + void match(device_t const &device, rom_entry const &rom, util::hash_collection const &hashes); + void match(std::string const &list, software_info const &software, rom_entry const &rom, util::hash_collection const &hashes); + + private: + std::string m_name; + std::uint64_t m_length; + util::hash_collection m_hashes; + file_flavour m_flavour; + std::vector m_matches; + }; + + void collect_files(std::vector &info, char const *path); + void digest_file(std::vector &info, char const *path); + void digest_data(std::vector &info, char const *name, void const *data, std::uint64_t length); + void match_hashes(std::vector &info); + void print_results(std::vector const &info); - // internal state - driver_enumerator m_drivlist; - unsigned m_total; - unsigned m_matches; - unsigned m_nonroms; + driver_enumerator m_drivlist; + unsigned m_total; + unsigned m_matches; + unsigned m_nonroms; }; diff --git a/src/frontend/mame/ui/auditmenu.cpp b/src/frontend/mame/ui/auditmenu.cpp index 9fbccdf55eb..ed9e0094bfa 100644 --- a/src/frontend/mame/ui/auditmenu.cpp +++ b/src/frontend/mame/ui/auditmenu.cpp @@ -39,7 +39,7 @@ bool sorted_game_list(const game_driver *x, const game_driver *y) bool cloney = (y->parent[0] != '0'); if (!clonex && !cloney) - return (cs_stricmp(x->description, y->description) < 0); + return (cs_stricmp(x->type.fullname(), y->type.fullname()) < 0); int cx = -1, cy = -1; if (clonex) @@ -57,27 +57,27 @@ bool sorted_game_list(const game_driver *x, const game_driver *y) } if (!clonex && !cloney) - return (cs_stricmp(x->description, y->description) < 0); + return (cs_stricmp(x->type.fullname(), y->type.fullname()) < 0); else if (clonex && cloney) { if (!cs_stricmp(x->parent, y->parent)) - return (cs_stricmp(x->description, y->description) < 0); + return (cs_stricmp(x->type.fullname(), y->type.fullname()) < 0); else - return (cs_stricmp(driver_list::driver(cx).description, driver_list::driver(cy).description) < 0); + return (cs_stricmp(driver_list::driver(cx).type.fullname(), driver_list::driver(cy).type.fullname()) < 0); } else if (!clonex && cloney) { if (!cs_stricmp(x->name, y->parent)) return true; else - return (cs_stricmp(x->description, driver_list::driver(cy).description) < 0); + return (cs_stricmp(x->type.fullname(), driver_list::driver(cy).type.fullname()) < 0); } else { if (!cs_stricmp(x->parent, y->name)) return false; else - return (cs_stricmp(driver_list::driver(cx).description, y->description) < 0); + return (cs_stricmp(driver_list::driver(cx).type.fullname(), y->type.fullname()) < 0); } } diff --git a/src/frontend/mame/ui/custui.cpp b/src/frontend/mame/ui/custui.cpp index 17a5c22539b..21b2f196440 100644 --- a/src/frontend/mame/ui/custui.cpp +++ b/src/frontend/mame/ui/custui.cpp @@ -688,13 +688,14 @@ void menu_colors_ui::restore_colors() // ctor //------------------------------------------------- -menu_rgb_ui::menu_rgb_ui(mame_ui_manager &mui, render_container &container, rgb_t *_color, std::string _title) : menu(mui, container) +menu_rgb_ui::menu_rgb_ui(mame_ui_manager &mui, render_container &container, rgb_t *_color, std::string _title) + : menu(mui, container), + m_color(_color), + m_search(), + m_key_active(false), + m_lock_ref(0), + m_title(_title) { - m_color = _color; - m_key_active = false; - m_lock_ref = 0; - m_title = _title; - m_search[0] = '\0'; } //------------------------------------------------- diff --git a/src/frontend/mame/ui/datmenu.cpp b/src/frontend/mame/ui/datmenu.cpp index 3bd13dd4d04..6474d381430 100644 --- a/src/frontend/mame/ui/datmenu.cpp +++ b/src/frontend/mame/ui/datmenu.cpp @@ -287,7 +287,7 @@ void menu_dats_view::custom_render(void *selectedref, float top, float bottom, f { float maxwidth = origx2 - origx1; float width; - std::string driver = (m_issoft == true) ? m_swinfo->longname : m_driver->description; + std::string driver = (m_issoft == true) ? m_swinfo->longname : m_driver->type.fullname(); ui().draw_text_full(container(), driver.c_str(), 0.0f, 0.0f, 1.0f, ui::text_layout::CENTER, ui::text_layout::TRUNCATE, mame_ui_manager::NONE, rgb_t::white(), rgb_t::black(), &width, nullptr); diff --git a/src/frontend/mame/ui/dirmenu.cpp b/src/frontend/mame/ui/dirmenu.cpp index 1ef39925bfd..baea5973efb 100644 --- a/src/frontend/mame/ui/dirmenu.cpp +++ b/src/frontend/mame/ui/dirmenu.cpp @@ -278,7 +278,7 @@ menu_add_change_folder::menu_add_change_folder(mame_ui_manager &mui, render_cont { m_ref = ref; m_change = (s_folders[ref].action == CHANGE); - m_search[0] = '\0'; + m_search.clear(); // configure the starting path osd_get_full_path(m_current_path, "."); @@ -338,7 +338,7 @@ void menu_add_change_folder::handle() } // reset the char buffer also in this case - m_search[0] = '\0'; + m_search.clear(); reset(reset_options::SELECT_FIRST); } else if (menu_event->iptkey == IPT_SPECIAL) diff --git a/src/frontend/mame/ui/dirmenu.h b/src/frontend/mame/ui/dirmenu.h index 5d092273b1c..d887dd58231 100644 --- a/src/frontend/mame/ui/dirmenu.h +++ b/src/frontend/mame/ui/dirmenu.h @@ -100,7 +100,7 @@ public: protected: virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override; - virtual bool menu_has_search_active() override { return (m_search[0] != 0); } + virtual bool menu_has_search_active() override { return !m_search.empty(); } private: virtual void populate(float &customtop, float &custombottom) override; diff --git a/src/frontend/mame/ui/imgcntrl.cpp b/src/frontend/mame/ui/imgcntrl.cpp index 1c25db2cac4..18ee2358852 100644 --- a/src/frontend/mame/ui/imgcntrl.cpp +++ b/src/frontend/mame/ui/imgcntrl.cpp @@ -158,7 +158,6 @@ void menu_control_device_image::load_software_part() void menu_control_device_image::hook_load(const std::string &name) { - if (m_image.is_reset_on_load()) m_image.set_init_phase(); m_image.load(name); stack_pop(); } diff --git a/src/frontend/mame/ui/info.cpp b/src/frontend/mame/ui/info.cpp index e1eca68ada8..dfcffcac1fb 100644 --- a/src/frontend/mame/ui/info.cpp +++ b/src/frontend/mame/ui/info.cpp @@ -15,6 +15,7 @@ #include "drivenum.h" #include "softlist.h" +#include "emuopts.h" namespace ui { //------------------------------------------------- @@ -203,10 +204,10 @@ std::string machine_info::game_info_string() // print description, manufacturer, and CPU: util::stream_format(buf, _("%1$s\n%2$s %3$s\nDriver: %4$s\n\nCPU:\n"), - m_machine.system().description, + m_machine.system().type.fullname(), m_machine.system().year, m_machine.system().manufacturer, - core_filename_extract_base(m_machine.system().source_file)); + core_filename_extract_base(m_machine.system().type.source())); // loop over all CPUs execute_interface_iterator execiter(m_machine.root_device()); @@ -318,12 +319,23 @@ std::string machine_info::game_info_string() std::string machine_info::mandatory_images() { std::ostringstream buf; + bool is_first = true; // make sure that any required image has a mounted file for (device_image_interface &image : image_interface_iterator(m_machine.root_device())) { - if (image.filename() == nullptr && image.must_be_loaded()) - buf << "\"" << image.instance_name() << "\", "; + if (image.must_be_loaded()) + { + auto iter = m_machine.options().image_options().find(image.instance_name()); + if (iter == m_machine.options().image_options().end() || iter->second.empty()) + { + if (is_first) + is_first = false; + else + buf << ", "; + buf << "\"" << image.instance_name() << "\""; + } + } } return buf.str(); } @@ -384,7 +396,7 @@ menu_image_info::~menu_image_info() void menu_image_info::populate(float &customtop, float &custombottom) { - item_append(machine().system().description, "", FLAG_DISABLE, nullptr); + item_append(machine().system().type.fullname(), "", FLAG_DISABLE, nullptr); item_append("", "", FLAG_DISABLE, nullptr); for (device_image_interface &image : image_interface_iterator(machine().root_device())) diff --git a/src/frontend/mame/ui/inifile.cpp b/src/frontend/mame/ui/inifile.cpp index 29dc08911c4..1dc51a7a793 100644 --- a/src/frontend/mame/ui/inifile.cpp +++ b/src/frontend/mame/ui/inifile.cpp @@ -159,7 +159,9 @@ favorite_manager::favorite_manager(running_machine &machine, ui_options &moption void favorite_manager::add_favorite_game(const game_driver *driver) { - m_list.emplace(driver->description, ui_software_info{ driver->name, driver->description, "", "", "", 0, "", driver, "", "", "", 1, "", "", "", true }); + m_list.emplace(driver->type.fullname(), + ui_software_info{driver->name, driver->type.fullname(), "", "", "", 0, "", driver, "", "", "", + 1, "", "", "", true}); save_favorite_games(); } diff --git a/src/frontend/mame/ui/inifile.h b/src/frontend/mame/ui/inifile.h index 0ac927f3094..0d203f3b170 100644 --- a/src/frontend/mame/ui/inifile.h +++ b/src/frontend/mame/ui/inifile.h @@ -44,8 +44,8 @@ public: // setters void move_file(int d) { c_file += d; c_cat = 0; } void move_cat(int d) { c_cat += d; } - void set_cat(int i) { c_cat = i; } - void set_file(int i) { c_file = i; } + void set_cat(uint16_t i) { c_cat = i; } + void set_file(uint16_t i) { c_file = i; } private: diff --git a/src/frontend/mame/ui/inputmap.cpp b/src/frontend/mame/ui/inputmap.cpp index 72568523e87..5a56aee53c4 100644 --- a/src/frontend/mame/ui/inputmap.cpp +++ b/src/frontend/mame/ui/inputmap.cpp @@ -426,7 +426,7 @@ void menu_input::populate_and_sort(input_item_data *itemlist) text = "(" + text + ")"; /* if we're polling this item, use some spaces with left/right arrows */ - if (pollingref == item->ref) + if (pollingref == item->ref && pollingseq == item->seqtype) { subtext.assign(" "); flags |= FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW; diff --git a/src/frontend/mame/ui/inputmap.h b/src/frontend/mame/ui/inputmap.h index 5962d3e592e..ba48e7dee9f 100644 --- a/src/frontend/mame/ui/inputmap.h +++ b/src/frontend/mame/ui/inputmap.h @@ -66,7 +66,7 @@ protected: input_item_data * pollingitem; private: - uint16_t last_sortorder; + uint32_t last_sortorder; bool record_next; input_seq starting_seq; diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp index 23d9a346a7b..6d797bc8dda 100644 --- a/src/frontend/mame/ui/miscmenu.cpp +++ b/src/frontend/mame/ui/miscmenu.cpp @@ -131,10 +131,8 @@ void menu_bios_selection::handle() machine().options().set_value("bios", val-1, OPTION_PRIORITY_CMDLINE, error); assert(error.empty()); } else { - std::string error; - std::string value = string_format("%s,bios=%d", machine().options().main_value(dev->owner()->tag()+1), val-1); - machine().options().set_value(dev->owner()->tag()+1, value.c_str(), OPTION_PRIORITY_CMDLINE, error); - assert(error.empty()); + const char *slot_option_name = dev->owner()->tag() + 1; + machine().options().slot_options()[slot_option_name].set_bios(string_format("%d", val - 1)); } reset(reset_options::REMEMBER_REF); } @@ -568,91 +566,87 @@ void menu_export::handle() const event *menu_event = process(PROCESS_NOIMAGE); if (menu_event != nullptr && menu_event->itemref != nullptr) { - switch ((uintptr_t)menu_event->itemref) + switch (uintptr_t(menu_event->itemref)) { - case 1: - case 3: + case 1: + case 3: + if (menu_event->iptkey == IPT_UI_SELECT) { - if (menu_event->iptkey == IPT_UI_SELECT) - { - std::string filename("exported"); - emu_file infile(ui().options().ui_path(), OPEN_FLAG_READ); - if (infile.open(filename.c_str(), ".xml") == osd_file::error::NONE) - for (int seq = 0; ; ++seq) + std::string filename("exported"); + emu_file infile(ui().options().ui_path(), OPEN_FLAG_READ); + if (infile.open(filename.c_str(), ".xml") == osd_file::error::NONE) + for (int seq = 0; ; ++seq) + { + std::string seqtext = string_format("%s_%04d", filename, seq); + if (infile.open(seqtext.c_str(), ".xml") != osd_file::error::NONE) { - std::string seqtext = string_format("%s_%04d", filename, seq); - if (infile.open(seqtext.c_str(), ".xml") != osd_file::error::NONE) - { - filename = seqtext; - break; - } + filename = seqtext; + break; } - - // attempt to open the output file - emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); - if (file.open(filename.c_str(), ".xml") == osd_file::error::NONE) - { - FILE *pfile; - std::string fullpath(file.fullpath()); - file.close(); - pfile = fopen(fullpath.c_str(), "w"); - - // create the XML and save to file - driver_enumerator drvlist(machine().options()); - drvlist.exclude_all(); - for (auto & elem : m_list) - drvlist.include(driver_list::find(*elem)); - - info_xml_creator creator(drvlist, true); - creator.output(pfile, ((uintptr_t)menu_event->itemref == 1) ? false : true); - fclose(pfile); - machine().popmessage(_("%s.xml saved under ui folder."), filename.c_str()); } + + // attempt to open the output file + emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + if (file.open(filename.c_str(), ".xml") == osd_file::error::NONE) + { + FILE *pfile; + std::string fullpath(file.fullpath()); + file.close(); + pfile = fopen(fullpath.c_str(), "w"); + + // create the XML and save to file + driver_enumerator drvlist(machine().options()); + drvlist.exclude_all(); + for (auto & elem : m_list) + drvlist.include(driver_list::find(*elem)); + + info_xml_creator creator(machine().options()); + creator.output(pfile, drvlist, (uintptr_t(menu_event->itemref) == 1) ? false : true); + fclose(pfile); + machine().popmessage(_("%s.xml saved under ui folder."), filename.c_str()); } - break; } - case 2: + break; + case 2: + if (menu_event->iptkey == IPT_UI_SELECT) { - if (menu_event->iptkey == IPT_UI_SELECT) - { - std::string filename("exported"); - emu_file infile(ui().options().ui_path(), OPEN_FLAG_READ); - if (infile.open(filename.c_str(), ".txt") == osd_file::error::NONE) - for (int seq = 0; ; ++seq) + std::string filename("exported"); + emu_file infile(ui().options().ui_path(), OPEN_FLAG_READ); + if (infile.open(filename.c_str(), ".txt") == osd_file::error::NONE) + for (int seq = 0; ; ++seq) + { + std::string seqtext = string_format("%s_%04d", filename, seq); + if (infile.open(seqtext.c_str(), ".txt") != osd_file::error::NONE) { - std::string seqtext = string_format("%s_%04d", filename, seq); - if (infile.open(seqtext.c_str(), ".txt") != osd_file::error::NONE) - { - filename = seqtext; - break; - } + filename = seqtext; + break; } - - // attempt to open the output file - emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); - if (file.open(filename.c_str(), ".txt") == osd_file::error::NONE) - { - // print the header - std::ostringstream buffer; - buffer << _("Name: Description:\n"); - driver_enumerator drvlist(machine().options()); - drvlist.exclude_all(); - for (auto & elem : m_list) - drvlist.include(driver_list::find(*elem)); - - // iterate through drivers and output the info - while (drvlist.next()) - if ((drvlist.driver().flags & MACHINE_NO_STANDALONE) == 0) - util::stream_format(buffer, "%-18s\"%s\"\n", drvlist.driver().name, drvlist.driver().description); - file.puts(buffer.str().c_str()); - file.close(); - machine().popmessage(_("%s.txt saved under ui folder."), filename.c_str()); } + + // attempt to open the output file + emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + if (file.open(filename.c_str(), ".txt") == osd_file::error::NONE) + { + // print the header + std::ostringstream buffer; + buffer << _("Name: Description:\n"); + driver_enumerator drvlist(machine().options()); + drvlist.exclude_all(); + for (auto & elem : m_list) + drvlist.include(driver_list::find(*elem)); + + // iterate through drivers and output the info + while (drvlist.next()) + if ((drvlist.driver().flags & MACHINE_NO_STANDALONE) == 0) + util::stream_format(buffer, "%-18s\"%s\"\n", drvlist.driver().name, drvlist.driver().type.fullname()); + file.puts(buffer.str().c_str()); + file.close(); + machine().popmessage(_("%s.txt saved under ui folder."), filename.c_str()); } - break; } - default: - break; + break; + default: + break; } } } @@ -808,7 +802,7 @@ void menu_machine_configure::custom_render(void *selectedref, float top, float b float maxwidth = origx2 - origx1; text[0] = _("Configure machine:"); - text[1] = m_drv->description; + text[1] = m_drv->type.fullname(); for (auto & elem : text) { diff --git a/src/frontend/mame/ui/selector.cpp b/src/frontend/mame/ui/selector.cpp index 83af27c4b72..8d5dd900e13 100644 --- a/src/frontend/mame/ui/selector.cpp +++ b/src/frontend/mame/ui/selector.cpp @@ -23,25 +23,25 @@ namespace ui { menu_selector::menu_selector(mame_ui_manager &mui, render_container &container, std::vector const &s_sel, uint16_t &s_actual, int category, int _hover) : menu(mui, container) + , m_search() , m_selector(s_actual) , m_category(category) , m_hover(_hover) , m_first_pass(true) , m_str_items(s_sel) { - m_search[0] = '\0'; m_searchlist[0] = nullptr; } menu_selector::menu_selector(mame_ui_manager &mui, render_container &container, std::vector &&s_sel, uint16_t &s_actual, int category, int _hover) : menu(mui, container) + , m_search() , m_selector(s_actual) , m_category(category) , m_hover(_hover) , m_first_pass(true) , m_str_items(std::move(s_sel)) { - m_search[0] = '\0'; m_searchlist[0] = nullptr; } @@ -104,7 +104,7 @@ void menu_selector::handle() } // escape pressed with non-empty text clears the text - else if (menu_event->iptkey == IPT_UI_CANCEL && m_search[0] != 0) + else if (menu_event->iptkey == IPT_UI_CANCEL && !m_search.empty()) { m_search.clear(); reset(reset_options::SELECT_FIRST); diff --git a/src/frontend/mame/ui/selector.h b/src/frontend/mame/ui/selector.h index e111d69551c..7a74a9d2c76 100644 --- a/src/frontend/mame/ui/selector.h +++ b/src/frontend/mame/ui/selector.h @@ -37,7 +37,7 @@ public: protected: virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override; - virtual bool menu_has_search_active() override { return (m_search[0] != 0); } + virtual bool menu_has_search_active() override { return !m_search.empty(); } private: enum { VISIBLE_GAMES_IN_SEARCH = 200 }; diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index e2628f63a9b..90dc3c1551b 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -335,10 +335,10 @@ void menu_select_game::handle() // handle UI_RIGHT_PANEL ui_globals::rpanel = RP_INFOS; } - else if (menu_event->iptkey == IPT_UI_CANCEL && m_search[0] != 0) + else if (menu_event->iptkey == IPT_UI_CANCEL && !m_search.empty()) { // escape pressed with non-empty text clears the text - m_search[0] = '\0'; + m_search.clear(); reset(reset_options::SELECT_FIRST); } else if (menu_event->iptkey == IPT_UI_DATS) @@ -375,13 +375,13 @@ void menu_select_game::handle() if (!mfav.isgame_favorite(driver)) { mfav.add_favorite_game(driver); - machine().popmessage(_("%s\n added to favorites list."), driver->description); + machine().popmessage(_("%s\n added to favorites list."), driver->type.fullname()); } else { mfav.remove_favorite_game(); - machine().popmessage(_("%s\n removed from favorites list."), driver->description); + machine().popmessage(_("%s\n removed from favorites list."), driver->type.fullname()); } } } @@ -465,7 +465,7 @@ void menu_select_game::handle() // handle filters selection from key shortcuts if (check_filter) { - m_search[0] = '\0'; + m_search.clear(); if (l_hover == FILTER_CATEGORY) { main_filters::actual = l_hover; @@ -503,12 +503,12 @@ void menu_select_game::populate(float &customtop, float &custombottom) if (!isfavorite()) { // if search is not empty, find approximate matches - if (m_search[0] != 0) + if (!m_search.empty()) populate_search(); else { // reset search string - m_search[0] = '\0'; + m_search.clear(); m_displaylist.clear(); // if filter is set on category, build category list @@ -546,7 +546,7 @@ void menu_select_game::populate(float &customtop, float &custombottom) cloneof = false; } - item_append(elem->description, "", (cloneof) ? (flags_ui | FLAG_INVERT) : flags_ui, (void *)elem); + item_append(elem->type.fullname(), "", (cloneof) ? (flags_ui | FLAG_INVERT) : flags_ui, (void *)elem); curitem++; } } @@ -554,7 +554,7 @@ void menu_select_game::populate(float &customtop, float &custombottom) else { // populate favorites list - m_search[0] = '\0'; + m_search.clear(); int curitem = 0; // iterate over entries @@ -872,6 +872,16 @@ void menu_select_game::inkey_select_favorite(const event *menu_event) if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED) { + if ((ui_swinfo->driver->flags & MACHINE_TYPE_ARCADE) == 0) + { + for (software_list_device &swlistdev : software_list_device_iterator(enumerator.config()->root_device())) + if (!swlistdev.get_info().empty()) + { + menu::stack_push(ui(), container(), ui_swinfo->driver); + return; + } + } + // if everything looks good, schedule the new driver s_bios biosname; if (!mopt.skip_bios_menu() && has_multiple_bios(ui_swinfo->driver, biosname)) @@ -931,7 +941,7 @@ void menu_select_game::inkey_select_favorite(const event *menu_event) } std::string error_string; - std::string string_list = std::string(ui_swinfo->listname).append(":").append(ui_swinfo->shortname).append(":").append(ui_swinfo->part).append(":").append(ui_swinfo->instance); + std::string string_list = string_format("%s:%s:%s:%s", ui_swinfo->listname, ui_swinfo->shortname, ui_swinfo->part, ui_swinfo->instance); mopt.set_value(OPTION_SOFTWARENAME, string_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string); std::string snap_list = std::string(ui_swinfo->listname).append(PATH_SEPARATOR).append(ui_swinfo->shortname); mopt.set_value(OPTION_SNAPNAME, snap_list.c_str(), OPTION_PRIORITY_CMDLINE, error_string); @@ -1185,7 +1195,7 @@ void menu_select_game::populate_search() for (; index < m_displaylist.size(); ++index) { // pick the best match between driver name and description - int curpenalty = fuzzy_substring(m_search, m_displaylist[index]->description); + int curpenalty = fuzzy_substring(m_search, m_displaylist[index]->type.fullname()); int tmp = fuzzy_substring(m_search, m_displaylist[index]->name); curpenalty = std::min(curpenalty, tmp); @@ -1219,7 +1229,7 @@ void menu_select_game::populate_search() if (cx != -1 && ((driver_list::driver(cx).flags & MACHINE_IS_BIOS_ROOT) != 0)) cloneof = false; } - item_append(m_searchlist[curitem]->description, "", (!cloneof) ? flags_ui : (FLAG_INVERT | flags_ui), + item_append(m_searchlist[curitem]->type.fullname(), "", (!cloneof) ? flags_ui : (FLAG_INVERT | flags_ui), (void *)m_searchlist[curitem]); } } @@ -1238,7 +1248,7 @@ void menu_select_game::general_info(const game_driver *driver, std::string &buff int cloneof = driver_list::non_bios_clone(*driver); if (cloneof != -1) - util::stream_format(str, _("Driver is Clone of: %1$-.100s\n"), driver_list::driver(cloneof).description); + util::stream_format(str, _("Driver is Clone of: %1$-.100s\n"), driver_list::driver(cloneof).type.fullname()); else str << _("Driver is Parent:\n"); @@ -1332,7 +1342,7 @@ void menu_select_game::general_info(const game_driver *driver, std::string &buff void menu_select_game::inkey_export() { std::vector list; - if (m_search[0] != 0) + if (!m_search.empty()) { for (int curitem = 0; m_searchlist[curitem]; ++curitem) list.push_back(m_searchlist[curitem]); @@ -1407,7 +1417,7 @@ bool menu_select_game::load_available_machines() file.gets(rbuf, MAX_CHAR_INFO); file.gets(rbuf, MAX_CHAR_INFO); readbuf = chartrimcarriage(rbuf); - std::string a_rev = std::string(UI_VERSION_TAG).append(bare_build_version); + std::string a_rev = string_format("%s%s", UI_VERSION_TAG, bare_build_version); // version not matching ? exit if (a_rev != readbuf) @@ -1732,7 +1742,7 @@ std::string menu_select_game::make_driver_description(game_driver const &driver) std::string menu_select_game::make_software_description(ui_software_info const &software) const { // first line is system - return string_format(_("System: %1$-.100s"), software.driver->description); + return string_format(_("System: %1$-.100s"), software.driver->type.fullname()); } } // namespace ui diff --git a/src/frontend/mame/ui/selgame.h b/src/frontend/mame/ui/selgame.h index 7c745ab1d8d..fd9dc1ba1ca 100644 --- a/src/frontend/mame/ui/selgame.h +++ b/src/frontend/mame/ui/selgame.h @@ -27,7 +27,7 @@ public: static void force_game_select(mame_ui_manager &mui, render_container &container); protected: - virtual bool menu_has_search_active() override { return (m_search[0] != 0); } + virtual bool menu_has_search_active() override { return !m_search.empty(); } private: enum diff --git a/src/frontend/mame/ui/selmenu.cpp b/src/frontend/mame/ui/selmenu.cpp index 9c9ba409a93..03cbe9fa10c 100644 --- a/src/frontend/mame/ui/selmenu.cpp +++ b/src/frontend/mame/ui/selmenu.cpp @@ -288,7 +288,7 @@ void menu_select_launch::custom_render(void *selectedref, float top, float botto int cloneof = driver_list::non_bios_clone(*driver); if (cloneof != -1) - tempbuf[2] = string_format(_("Driver is clone of: %1$-.100s"), driver_list::driver(cloneof).description); + tempbuf[2] = string_format(_("Driver is clone of: %1$-.100s"), driver_list::driver(cloneof).type.fullname()); else tempbuf[2] = _("Driver is parent"); diff --git a/src/frontend/mame/ui/selsoft.cpp b/src/frontend/mame/ui/selsoft.cpp index b5eeb36b204..5d95d4c9a2e 100644 --- a/src/frontend/mame/ui/selsoft.cpp +++ b/src/frontend/mame/ui/selsoft.cpp @@ -48,18 +48,18 @@ bool compare_software(ui_software_info a, ui_software_info b) ui_software_info *x = &a; ui_software_info *y = &b; - bool clonex = (x->parentname[0] != '\0'); - bool cloney = (y->parentname[0] != '\0'); + bool clonex = !x->parentname.empty(); + bool cloney = !y->parentname.empty(); if (!clonex && !cloney) return (strmakelower(x->longname) < strmakelower(y->longname)); std::string cx(x->parentlongname), cy(y->parentlongname); - if (clonex && cx[0] == '\0') + if (cx.empty()) clonex = false; - if (cloney && cy[0] == '\0') + if (cy.empty()) cloney = false; if (!clonex && !cloney) @@ -262,10 +262,10 @@ void menu_select_software::handle() // handle UI_RIGHT_PANEL ui_globals::rpanel = RP_INFOS; } - else if (menu_event->iptkey == IPT_UI_CANCEL && m_search[0] != 0) + else if (menu_event->iptkey == IPT_UI_CANCEL && !m_search.empty()) { // escape pressed with non-empty text clears the text - m_search[0] = '\0'; + m_search.clear(); reset(reset_options::SELECT_FIRST); } else if (menu_event->iptkey == IPT_UI_FAVORITES) @@ -383,7 +383,7 @@ void menu_select_software::handle() // handle filters selection from key shortcuts if (check_filter) { - m_search[0] = '\0'; + m_search.clear(); switch (l_sw_hover) { case UI_SW_REGION: @@ -432,7 +432,7 @@ void menu_select_software::populate(float &customtop, float &custombottom) } // no active search - if (m_search[0] == 0) + if (m_search.empty()) { // if the device can be loaded empty, add an item if (m_has_empty_start) @@ -518,7 +518,7 @@ void menu_select_software::populate(float &customtop, float &custombottom) void menu_select_software::build_software_list() { // add start empty item - m_swinfo.emplace_back(m_driver->name, m_driver->description, "", "", "", 0, "", m_driver, "", "", "", 1, "", "", "", true); + m_swinfo.emplace_back(m_driver->name, m_driver->type.fullname(), "", "", "", 0, "", m_driver, "", "", "", 1, "", "", "", true); machine_config config(*m_driver, machine().options()); @@ -1495,9 +1495,9 @@ void menu_select_software::get_selection(ui_software_info const *&software, game void menu_select_software::make_topbox_text(std::string &line0, std::string &line1, std::string &line2) const { // determine the text for the header - int vis_item = (m_search[0] != 0) ? visible_items : (m_has_empty_start ? visible_items - 1 : visible_items); + int vis_item = !m_search.empty() ? visible_items : (m_has_empty_start ? visible_items - 1 : visible_items); line0 = string_format(_("%1$s %2$s ( %3$d / %4$d software packages )"), emulator_info::get_appname(), bare_build_version, vis_item, m_swinfo.size() - 1); - line1 = string_format(_("Driver: \"%1$s\" software list "), m_driver->description); + line1 = string_format(_("Driver: \"%1$s\" software list "), m_driver->type.fullname()); std::string filtered; if (sw_filters::actual == UI_SW_REGION && m_filter.region.ui.size() != 0) @@ -1518,7 +1518,7 @@ void menu_select_software::make_topbox_text(std::string &line0, std::string &lin std::string menu_select_software::make_driver_description(game_driver const &driver) const { // first line is game description - return string_format(_("%1$-.100s"), driver.description); + return string_format(_("%1$-.100s"), driver.type.fullname()); } diff --git a/src/frontend/mame/ui/selsoft.h b/src/frontend/mame/ui/selsoft.h index 48a452b5c68..3f014460791 100644 --- a/src/frontend/mame/ui/selsoft.h +++ b/src/frontend/mame/ui/selsoft.h @@ -27,7 +27,7 @@ public: virtual ~menu_select_software() override; protected: - virtual bool menu_has_search_active() override { return (m_search[0] != 0); } + virtual bool menu_has_search_active() override { return !m_search.empty(); } private: enum { VISIBLE_GAMES_IN_SEARCH = 200 }; diff --git a/src/frontend/mame/ui/simpleselgame.cpp b/src/frontend/mame/ui/simpleselgame.cpp index bfa8b91b205..956594c52f7 100644 --- a/src/frontend/mame/ui/simpleselgame.cpp +++ b/src/frontend/mame/ui/simpleselgame.cpp @@ -185,9 +185,9 @@ void simple_menu_select_game::inkey_select(const event *menu_event) void simple_menu_select_game::inkey_cancel() { // escape pressed with non-empty text clears the text - if (m_search[0] != 0) + if (!m_search.empty()) { - m_search[0] = '\0'; + m_search.clear(); reset(reset_options::SELECT_FIRST); } } @@ -238,7 +238,7 @@ void simple_menu_select_game::populate(float &customtop, float &custombottom) // otherwise, rebuild the match list assert(m_drivlist != nullptr); - if (m_search[0] != 0 || m_matchlist[0] == -1 || m_rerandomize) + if (!m_search.empty() || m_matchlist[0] == -1 || m_rerandomize) m_drivlist->find_approximate_matches(m_search.c_str(), matchcount, m_matchlist); m_rerandomize = false; @@ -249,7 +249,7 @@ void simple_menu_select_game::populate(float &customtop, float &custombottom) if (curmatch != -1) { int cloneof = m_drivlist->non_bios_clone(curmatch); - item_append(m_drivlist->driver(curmatch).name, m_drivlist->driver(curmatch).description, (cloneof == -1) ? 0 : FLAG_INVERT, (void *)&m_drivlist->driver(curmatch)); + item_append(m_drivlist->driver(curmatch).name, m_drivlist->driver(curmatch).type.fullname(), (cloneof == -1) ? 0 : FLAG_INVERT, (void *)&m_drivlist->driver(curmatch)); } } @@ -281,7 +281,7 @@ void simple_menu_select_game::custom_render(void *selectedref, float top, float int line; // display the current typeahead - if (m_search[0] != 0) + if (!m_search.empty()) tempbuf[0] = string_format(_("Type name or select: %1$s_"), m_search); else tempbuf[0] = _("Type name or select: (random)"); @@ -317,13 +317,13 @@ void simple_menu_select_game::custom_render(void *selectedref, float top, float const char *gfxstat, *soundstat; // first line is game name - tempbuf[0] = string_format(_("%1$-.100s"), driver->description); + tempbuf[0] = string_format(_("%1$-.100s"), driver->type.fullname()); // next line is year, manufacturer tempbuf[1] = string_format(_("%1$s, %2$-.100s"), driver->year, driver->manufacturer); // next line source path - tempbuf[2] = string_format(_("Driver: %1$-.100s"), core_filename_extract_base(driver->source_file)); + tempbuf[2] = string_format(_("Driver: %1$-.100s"), core_filename_extract_base(driver->type.source())); // next line is overall driver status if (driver->flags & MACHINE_NOT_WORKING) diff --git a/src/frontend/mame/ui/simpleselgame.h b/src/frontend/mame/ui/simpleselgame.h index a520165c340..b4dad4916c2 100644 --- a/src/frontend/mame/ui/simpleselgame.h +++ b/src/frontend/mame/ui/simpleselgame.h @@ -28,7 +28,7 @@ public: protected: virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override; - virtual bool menu_has_search_active() override { return (m_search[0] != 0); } + virtual bool menu_has_search_active() override { return !m_search.empty(); } private: enum { VISIBLE_GAMES_IN_LIST = 15 }; diff --git a/src/frontend/mame/ui/slotopt.cpp b/src/frontend/mame/ui/slotopt.cpp index 236dbb561c1..2fd1c280ad0 100644 --- a/src/frontend/mame/ui/slotopt.cpp +++ b/src/frontend/mame/ui/slotopt.cpp @@ -18,32 +18,111 @@ #include "mameopts.h" +/*************************************************************************** + UTILITY +***************************************************************************/ + +namespace { + +// constants +void *ITEMREF_RESET = ((void *)1); +char DIVIDER[] = "------"; + + +//------------------------------------------------- +// get_slot_length +//------------------------------------------------- + +int get_slot_length(const device_slot_interface &slot) +{ + int val = 0; + for (auto &option : slot.option_list()) + if (option.second->selectable()) + val++; + + return val; +} + + +//------------------------------------------------- +// get_slot_option +//------------------------------------------------- + +const char *get_slot_option(device_slot_interface &slot, int index) +{ + if (index >= 0) + { + int val = 0; + for (auto &option : slot.option_list()) + { + if (val == index) + return option.second->name(); + + if (option.second->selectable()) + val++; + } + } + + return ""; +} + + +}; +/*************************************************************************** + SLOT MENU +***************************************************************************/ + namespace ui { -/*------------------------------------------------- - slot_get_current_option - returns --------------------------------------------------*/ -device_slot_option *menu_slot_devices::slot_get_current_option(device_slot_interface &slot) + +//------------------------------------------------- +// menu_slot_devices constructor +//------------------------------------------------- + +menu_slot_devices::menu_slot_devices(mame_ui_manager &mui, render_container &container) : menu(mui, container) +{ +} + +//------------------------------------------------- +// menu_slot_devices destructor +//------------------------------------------------- + +menu_slot_devices::~menu_slot_devices() +{ +} + + +//------------------------------------------------- +// get_current_option - returns the current +// slot option +//------------------------------------------------- + +device_slot_option *menu_slot_devices::get_current_option(device_slot_interface &slot) const { std::string current; - if (slot.fixed()) + + const char *slot_option_name = slot.slot_name(); + if (!slot.fixed() && machine().options().slot_options().count(slot_option_name) > 0) { - if (slot.default_option() == nullptr) return nullptr; - current.assign(slot.default_option()); + current = machine().options().slot_options()[slot_option_name].value(); } else { - current = machine().options().main_value(slot.device().tag() + 1); + if (slot.default_option() == nullptr) + return nullptr; + current.assign(slot.default_option()); } return slot.option(current.c_str()); } -/*------------------------------------------------- - slot_get_current_index - returns --------------------------------------------------*/ -int menu_slot_devices::slot_get_current_index(device_slot_interface &slot) + +//------------------------------------------------- +// get_current_index +//------------------------------------------------- + +int menu_slot_devices::get_current_index(device_slot_interface &slot) const { - const device_slot_option *current = slot_get_current_option(slot); + const device_slot_option *current = get_current_option(slot); if (current != nullptr) { @@ -61,95 +140,60 @@ int menu_slot_devices::slot_get_current_index(device_slot_interface &slot) return -1; } -/*------------------------------------------------- - slot_get_length - returns --------------------------------------------------*/ -int menu_slot_devices::slot_get_length(device_slot_interface &slot) -{ - int val = 0; - for (auto &option : slot.option_list()) - if (option.second->selectable()) - val++; - return val; -} +//------------------------------------------------- +// get_next_slot +//------------------------------------------------- -/*------------------------------------------------- - slot_get_next - returns --------------------------------------------------*/ -const char *menu_slot_devices::slot_get_next(device_slot_interface &slot) +const char *menu_slot_devices::get_next_slot(device_slot_interface &slot) const { - int idx = slot_get_current_index(slot); + int idx = get_current_index(slot); if (idx < 0) idx = 0; else idx++; - if (idx >= slot_get_length(slot)) + if (idx >= get_slot_length(slot)) return ""; - return slot_get_option(slot, idx); + return get_slot_option(slot, idx); } -/*------------------------------------------------- - slot_get_prev - returns --------------------------------------------------*/ -const char *menu_slot_devices::slot_get_prev(device_slot_interface &slot) + +//------------------------------------------------- +// get_previous_slot +//------------------------------------------------- + +const char *menu_slot_devices::get_previous_slot(device_slot_interface &slot) const { - int idx = slot_get_current_index(slot); + int idx = get_current_index(slot); if (idx < 0) - idx = slot_get_length(slot) - 1; + idx = get_slot_length(slot) - 1; else idx--; if (idx < 0) return ""; - return slot_get_option(slot, idx); -} - -/*------------------------------------------------- - slot_get_option - returns --------------------------------------------------*/ -const char *menu_slot_devices::slot_get_option(device_slot_interface &slot, int index) -{ - if (index >= 0) - { - int val = 0; - for (auto &option : slot.option_list()) - { - if (val == index) - return option.second->name(); - - if (option.second->selectable()) - val++; - } - } - - return ""; + return get_slot_option(slot, idx); } -/*------------------------------------------------- - set_use_natural_keyboard - specifies - whether the natural keyboard is active --------------------------------------------------*/ +//------------------------------------------------- +// set_slot_device +//------------------------------------------------- void menu_slot_devices::set_slot_device(device_slot_interface &slot, const char *val) { std::string error; - machine().options().set_value(slot.device().tag()+1, val, OPTION_PRIORITY_CMDLINE, error); + machine().options().set_value(slot.slot_name(), val, OPTION_PRIORITY_CMDLINE, error); assert(error.empty()); } -/*------------------------------------------------- - menu_slot_devices_populate - populates the main - slot device menu --------------------------------------------------*/ -menu_slot_devices::menu_slot_devices(mame_ui_manager &mui, render_container &container) : menu(mui, container) -{ -} +//------------------------------------------------- +// populate +//------------------------------------------------- void menu_slot_devices::populate(float &customtop, float &custombottom) { @@ -159,9 +203,9 @@ void menu_slot_devices::populate(float &customtop, float &custombottom) // does this slot have any selectable options? bool has_selectable_options = slot.has_selectable_options(); - // name this option - std::string opt_name("------"); - const device_slot_option *option = slot_get_current_option(slot); + // name this option + std::string opt_name(DIVIDER); + const device_slot_option *option = get_current_option(slot); if (option) { opt_name = has_selectable_options @@ -174,28 +218,25 @@ void menu_slot_devices::populate(float &customtop, float &custombottom) ? FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW : FLAG_DISABLE; - item_append(slot.device().tag() + 1, opt_name, item_flags, (void *)&slot); + item_append(slot.slot_name(), opt_name, item_flags, (void *)&slot); } item_append(menu_item_type::SEPARATOR); - item_append(_("Reset"), "", 0, (void *)1); + item_append(_("Reset"), "", 0, ITEMREF_RESET); } -menu_slot_devices::~menu_slot_devices() -{ -} -/*------------------------------------------------- - menu_slot_devices - menu that --------------------------------------------------*/ +//------------------------------------------------- +// handle +//------------------------------------------------- void menu_slot_devices::handle() { - /* process the menu */ + // process the menu const event *menu_event = process(0); if (menu_event != nullptr && menu_event->itemref != nullptr) { - if ((uintptr_t)menu_event->itemref == 1 && menu_event->iptkey == IPT_UI_SELECT) + if (menu_event->itemref == ITEMREF_RESET && menu_event->iptkey == IPT_UI_SELECT) { mame_options::add_slot_options(machine().options()); machine().schedule_hard_reset(); @@ -203,14 +244,14 @@ void menu_slot_devices::handle() else if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT) { device_slot_interface *slot = (device_slot_interface *)menu_event->itemref; - const char *val = (menu_event->iptkey == IPT_UI_LEFT) ? slot_get_prev(*slot) : slot_get_next(*slot); + const char *val = (menu_event->iptkey == IPT_UI_LEFT) ? get_previous_slot(*slot) : get_next_slot(*slot); set_slot_device(*slot, val); reset(reset_options::REMEMBER_REF); } else if (menu_event->iptkey == IPT_UI_SELECT) { device_slot_interface *slot = (device_slot_interface *)menu_event->itemref; - device_slot_option *option = slot_get_current_option(*slot); + device_slot_option *option = get_current_option(*slot); if (option) menu::stack_push(ui(), container(), slot, option); } diff --git a/src/frontend/mame/ui/slotopt.h b/src/frontend/mame/ui/slotopt.h index 2ef1477d74a..a3a08bb9590 100644 --- a/src/frontend/mame/ui/slotopt.h +++ b/src/frontend/mame/ui/slotopt.h @@ -27,12 +27,10 @@ private: virtual void populate(float &customtop, float &custombottom) override; virtual void handle() override; - device_slot_option *slot_get_current_option(device_slot_interface &slot); - int slot_get_current_index(device_slot_interface &slot); - int slot_get_length(device_slot_interface &slot); - const char *slot_get_next(device_slot_interface &slot); - const char *slot_get_prev(device_slot_interface &slot); - const char *slot_get_option(device_slot_interface &slot, int index); + device_slot_option *get_current_option(device_slot_interface &slot) const; + int get_current_index(device_slot_interface &slot) const; + const char *get_next_slot(device_slot_interface &slot) const; + const char *get_previous_slot(device_slot_interface &slot) const; void set_slot_device(device_slot_interface &slot, const char *val); }; diff --git a/src/frontend/mame/ui/submenu.cpp b/src/frontend/mame/ui/submenu.cpp index 5a8cb83cd8b..e28b0c58125 100644 --- a/src/frontend/mame/ui/submenu.cpp +++ b/src/frontend/mame/ui/submenu.cpp @@ -300,7 +300,7 @@ void submenu::handle() } break; default: - osd_printf_error("Unhandled option: %s", _(sm_option.description)); + osd_printf_error("Unhandled option: %s\n", _(sm_option.description)); break; } } @@ -408,7 +408,7 @@ void submenu::populate(float &customtop, float &custombottom) } break; default: - osd_printf_error("Unknown option type: %s", _(sm_option->description)); + osd_printf_error("Unknown option type: %s\n", _(sm_option->description)); break; } } diff --git a/src/frontend/mame/ui/swlist.cpp b/src/frontend/mame/ui/swlist.cpp index 04c4feadad1..dc0e98407fe 100644 --- a/src/frontend/mame/ui/swlist.cpp +++ b/src/frontend/mame/ui/swlist.cpp @@ -22,9 +22,12 @@ namespace ui { CONSTANTS ***************************************************************************/ -/* time (in seconds) to display errors */ +// time (in seconds) to display errors #define ERROR_MESSAGE_TIME 5 +// item reference for "Switch Item Ordering" +#define ITEMREF_SWITCH_ITEM_ORDERING ((void *)1) + /*************************************************************************** SOFTWARE PARTS @@ -214,12 +217,15 @@ void menu_software_list::append_software_entry(const software_info &swinfo) void menu_software_list::populate(float &customtop, float &custombottom) { + // clear all entries before populating + m_entrylist.clear(); + // build up the list of entries for the menu for (const software_info &swinfo : m_swlist->get_info()) append_software_entry(swinfo); // add an entry to change ordering - item_append(_("Switch Item Ordering"), "", 0, (void *)1); + item_append(_("Switch Item Ordering"), "", 0, ITEMREF_SWITCH_ITEM_ORDERING); // append all of the menu entries for (auto &entry : m_entrylist) @@ -241,7 +247,7 @@ void menu_software_list::handle() if (event && event->itemref) { - if ((uintptr_t)event->itemref == 1 && event->iptkey == IPT_UI_SELECT) + if (event->itemref == ITEMREF_SWITCH_ITEM_ORDERING && event->iptkey == IPT_UI_SELECT) { m_ordered_by_shortname = !m_ordered_by_shortname; diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp index 3212ab8c116..675f8162469 100644 --- a/src/frontend/mame/ui/ui.cpp +++ b/src/frontend/mame/ui/ui.cpp @@ -341,8 +341,7 @@ void mame_ui_manager::display_startup_screens(bool first_time) messagebox_text = machine_info().mandatory_images(); if (!messagebox_text.empty()) { - std::string warning; - warning.assign(_("This driver requires images to be loaded in the following device(s): ")).append(messagebox_text.substr(0, messagebox_text.length() - 2)); + std::string warning = std::string(_("This driver requires images to be loaded in the following device(s): ")) + messagebox_text; ui::menu_file_manager::force_file_manager(*this, machine().render().ui_container(), warning.c_str()); } break; @@ -1277,7 +1276,7 @@ uint32_t mame_ui_manager::handler_ingame(render_container &container) uint32_t mame_ui_manager::handler_load_save(render_container &container, uint32_t state) { - char filename[20]; + std::string filename; char file = 0; // if we're not in the middle of anything, skip @@ -1341,7 +1340,7 @@ uint32_t mame_ui_manager::handler_load_save(render_container &container, uint32_ for (input_item_id id = ITEM_ID_BUTTON1; id <= ITEM_ID_BUTTON32; ++id) if (machine().input().code_pressed_once(input_code(DEVICE_CLASS_JOYSTICK, joy_index, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id))) { - snprintf(filename, sizeof(filename), "joy%i-%i", joy_index, id - ITEM_ID_BUTTON1 + 1); + filename = util::string_format("joy%i-%i", joy_index, id - ITEM_ID_BUTTON1 + 1); found = true; break; } @@ -1351,19 +1350,19 @@ uint32_t mame_ui_manager::handler_load_save(render_container &container, uint32_ } else { - sprintf(filename, "%c", file); + filename = util::string_format("%c", file); } // display a popup indicating that the save will proceed if (state == LOADSAVE_SAVE) { machine().popmessage(_("Save to position %s"), filename); - machine().schedule_save(filename); + machine().schedule_save(std::move(filename)); } else { machine().popmessage(_("Load from position %s"), filename); - machine().schedule_load(filename); + machine().schedule_load(std::move(filename)); } // avoid handling the name of the save state slot as a seperate input @@ -2234,9 +2233,9 @@ void mame_ui_manager::load_ui_options() emu_file file(machine().options().ini_path(), OPEN_FLAG_READ); if (file.open("ui.ini") == osd_file::error::NONE) { - bool result = options().parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error); + bool result = options().parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_MAME_INI < OPTION_PRIORITY_DRIVER_INI, error); if (!result) - osd_printf_error("**Error loading ui.ini**"); + osd_printf_error("**Error loading ui.ini**\n"); } } @@ -2275,10 +2274,10 @@ void mame_ui_manager::save_main_option() emu_file file(machine().options().ini_path(), OPEN_FLAG_READ); if (file.open(emulator_info::get_configname(), ".ini") == osd_file::error::NONE) { - bool result = options.parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error); + bool result = options.parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_MAME_INI < OPTION_PRIORITY_DRIVER_INI, error); if (!result) { - osd_printf_error("**Error loading %s.ini**", emulator_info::get_configname()); + osd_printf_error("**Error loading %s.ini**\n", emulator_info::get_configname()); return; } } diff --git a/src/frontend/mame/ui/utils.h b/src/frontend/mame/ui/utils.h index 29ce34abe87..2ea74d6aa4a 100644 --- a/src/frontend/mame/ui/utils.h +++ b/src/frontend/mame/ui/utils.h @@ -156,14 +156,11 @@ struct ui_software_info bool operator==(const ui_software_info& r) { - if (shortname == r.shortname && longname == r.longname && parentname == r.parentname - && year == r.year && publisher == r.publisher && supported == r.supported - && part == r.part && driver == r.driver && listname == r.listname - && interface == r.interface && instance == r.instance && startempty == r.startempty - && parentlongname == r.parentlongname && usage == r.usage && devicetype == r.devicetype) - return true; - - return false; + return shortname == r.shortname && longname == r.longname && parentname == r.parentname + && year == r.year && publisher == r.publisher && supported == r.supported + && part == r.part && driver == r.driver && listname == r.listname + && interface == r.interface && instance == r.instance && startempty == r.startempty + && parentlongname == r.parentlongname && usage == r.usage && devicetype == r.devicetype; } }; diff --git a/src/frontend/mame/ui/viewgfx.cpp b/src/frontend/mame/ui/viewgfx.cpp index f87afd67d20..53c3f409488 100644 --- a/src/frontend/mame/ui/viewgfx.cpp +++ b/src/frontend/mame/ui/viewgfx.cpp @@ -61,7 +61,7 @@ struct ui_gfx_state // palette-specific data struct { - palette_device *device; // pointer to current device + device_palette_interface *interface; // pointer to current palette int devcount; // how many palette devices exist int devindex; // which palette device is visible uint8_t which; // which subset (pens or indirect colors)? @@ -88,6 +88,7 @@ struct ui_gfx_state int yoffs; // current Y offset int zoom; // zoom factor uint8_t rotate; // current rotation (orientation) value + uint32_t flags; // render flags } tilemap; }; @@ -158,6 +159,7 @@ void ui_gfx_init(running_machine &machine) // set up the tilemap state state->tilemap.rotate = rotate; + state->tilemap.flags = TILEMAP_DRAW_ALL_CATEGORIES; } @@ -169,7 +171,7 @@ void ui_gfx_init(running_machine &machine) static void ui_gfx_count_devices(running_machine &machine, ui_gfx_state &state) { // count the palette devices - state.palette.devcount = palette_device_iterator(machine.root_device()).count(); + state.palette.devcount = palette_interface_iterator(machine.root_device()).count(); // set the pointer to the first palette if (state.palette.devcount > 0) @@ -330,8 +332,8 @@ cancel: static void palette_set_device(running_machine &machine, ui_gfx_state &state) { - palette_device_iterator pal_iter(machine.root_device()); - state.palette.device = pal_iter.byindex(state.palette.devindex); + palette_interface_iterator pal_iter(machine.root_device()); + state.palette.interface = pal_iter.byindex(state.palette.devindex); } @@ -342,7 +344,8 @@ static void palette_set_device(running_machine &machine, ui_gfx_state &state) static void palette_handler(mame_ui_manager &mui, render_container &container, ui_gfx_state &state) { - palette_device *palette = state.palette.device; + device_palette_interface *palette = state.palette.interface; + palette_device *paldev = dynamic_cast(&palette->device()); int total = state.palette.which ? palette->indirect_entries() : palette->entries(); const rgb_t *raw_color = palette->palette()->entry_list_raw(); @@ -381,7 +384,7 @@ static void palette_handler(mame_ui_manager &mui, render_container &container, u // figure out the title std::ostringstream title_buf; - util::stream_format(title_buf, "'%s'", palette->tag()); + util::stream_format(title_buf, "'%s'", palette->device().tag()); if (palette->indirect_entries() > 0) title_buf << (state.palette.which ? _(" COLORS") : _(" PENS")); @@ -400,8 +403,8 @@ static void palette_handler(mame_ui_manager &mui, render_container &container, u util::stream_format(title_buf, " #%X", index); if (palette->indirect_entries() > 0 && !state.palette.which) util::stream_format(title_buf, " => %X", palette->pen_indirect(index)); - else if (palette->basemem().base() != nullptr) - util::stream_format(title_buf, " = %X", palette->read_entry(index)); + else if (paldev != nullptr && paldev->basemem().base() != nullptr) + util::stream_format(title_buf, " = %X", paldev->read_entry(index)); rgb_t col = state.palette.which ? palette->indirect_color(index) : raw_color[index]; util::stream_format(title_buf, " (R:%X G:%X B:%X)", col.r(), col.g(), col.b()); @@ -492,7 +495,7 @@ static void palette_handler(mame_ui_manager &mui, render_container &container, u static void palette_handle_keys(running_machine &machine, ui_gfx_state &state) { - palette_device *palette = state.palette.device; + device_palette_interface *palette = state.palette.interface; int rowcount, screencount; int total; @@ -517,7 +520,7 @@ static void palette_handle_keys(running_machine &machine, ui_gfx_state &state) { state.palette.devindex--; palette_set_device(machine, state); - palette = state.palette.device; + palette = state.palette.interface; state.palette.which = (palette->indirect_entries() > 0); } } @@ -529,7 +532,7 @@ static void palette_handle_keys(running_machine &machine, ui_gfx_state &state) { state.palette.devindex++; palette_set_device(machine, state); - palette = state.palette.device; + palette = state.palette.interface; state.palette.which = 0; } } @@ -1074,7 +1077,7 @@ static void tilemap_handler(mame_ui_manager &mui, render_container &container, u // figure out the title std::ostringstream title_buf; - util::stream_format(title_buf, "TILEMAP %d/%d", state.tilemap.which, mui.machine().tilemap().count() - 1); + util::stream_format(title_buf, "TILEMAP %d/%d", state.tilemap.which + 1, mui.machine().tilemap().count()); // if the mouse pointer is over a tile, add some info about its coordinates and color int32_t mouse_target_x, mouse_target_y; @@ -1105,6 +1108,9 @@ static void tilemap_handler(mame_ui_manager &mui, render_container &container, u else util::stream_format(title_buf, " %dx%d OFFS %d,%d", tilemap->width(), tilemap->height(), state.tilemap.xoffs, state.tilemap.yoffs); + if (state.tilemap.flags != TILEMAP_DRAW_ALL_CATEGORIES) + util::stream_format(title_buf, " CAT %d", state.tilemap.flags); + // expand the outer box to fit the title const std::string title = title_buf.str(); titlewidth = ui_font->string_width(chheight, mui.machine().render().ui_aspect(), title.c_str()); @@ -1190,6 +1196,31 @@ static void tilemap_handle_keys(running_machine &machine, ui_gfx_state &state, i state.bitmap_dirty = true; } + // handle flags (category) + if (machine.ui_input().pressed(IPT_UI_PAGE_UP) && state.tilemap.flags != TILEMAP_DRAW_ALL_CATEGORIES) + { + if (state.tilemap.flags > 0) + { + state.tilemap.flags--; + machine.popmessage("Category = %d", state.tilemap.flags); + } + else + { + state.tilemap.flags = TILEMAP_DRAW_ALL_CATEGORIES; + machine.popmessage("Category All"); + } + state.bitmap_dirty = true; + } + if (machine.ui_input().pressed(IPT_UI_PAGE_DOWN) && (state.tilemap.flags < TILEMAP_DRAW_CATEGORY_MASK || (state.tilemap.flags == TILEMAP_DRAW_ALL_CATEGORIES))) + { + if (state.tilemap.flags == TILEMAP_DRAW_ALL_CATEGORIES) + state.tilemap.flags = 0; + else + state.tilemap.flags++; + state.bitmap_dirty = true; + machine.popmessage("Category = %d", state.tilemap.flags); + } + // handle navigation (up,down,left,right), taking orientation into account int step = 8; // this may be applied more than once if multiple directions are pressed if (machine.input().code_pressed(KEYCODE_LSHIFT)) step = 1; @@ -1251,7 +1282,7 @@ static void tilemap_update_bitmap(running_machine &machine, ui_gfx_state &state, std::swap(width, height); // realloc the bitmap if it is too small - if (state.bitmap == nullptr || state.texture == nullptr || state.bitmap->width() != width || state.bitmap->height() != height) + if (state.bitmap_dirty || state.bitmap == nullptr || state.texture == nullptr || state.bitmap->width() != width || state.bitmap->height() != height) { // free the old stuff machine.render().texture_free(state.texture); @@ -1270,7 +1301,7 @@ static void tilemap_update_bitmap(running_machine &machine, ui_gfx_state &state, if (state.bitmap_dirty) { tilemap_t *tilemap = machine.tilemap().find(state.tilemap.which); - tilemap->draw_debug(*machine.first_screen(), *state.bitmap, state.tilemap.xoffs, state.tilemap.yoffs); + tilemap->draw_debug(*machine.first_screen(), *state.bitmap, state.tilemap.xoffs, state.tilemap.yoffs, state.tilemap.flags); // reset the texture to force an update state.texture->set_bitmap(*state.bitmap, state.bitmap->cliprect(), TEXFORMAT_RGB32); diff --git a/src/lib/formats/apd_dsk.cpp b/src/lib/formats/apd_dsk.cpp index 3c972c25e49..202c7e0d239 100644 --- a/src/lib/formats/apd_dsk.cpp +++ b/src/lib/formats/apd_dsk.cpp @@ -6,6 +6,58 @@ Archimedes Protected Disk Image format + APD file structure + ------------------ + + The APD file is a GZip compressed version of the original APD file. + + Compressed file always starts: + 1F 8B 08 00 00 00 00 00 00 0B EC BD + ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ + | | | | | | | | | | + | | | | | | | | | +- OS + | | | | | | | | +---- xfl + | | | | +--+--+--+------- time + | | | +------------------- gzip flags + | | +---------------------- gzip compression* + | | + +--+------------------------- gzip header + + * Compression method: 8 is the only supported format + + Original APD file structure: + 0 - 7 "APDX0001" identifier + 8 - B t0sd - Track 0 SD length in bits + C - F t0dd - Track 0 DD length in bits + 10 - 13 t0qd - Track 0 QD length in bits + 14 - 1F t1sd - Track 1 SD length in bits + 20 - 23 t1dd - Track 1 DD length in bits + 24 - 27 t1qd - Track 1 QD length in bits + ... ... repeated to Track 159 + 77C - 787 Track 160 (blank) + 7C4 - 7CF Track 166 (blank) + + 7D0 Track 0 SD data + + (t0sd + 7) >> 3 Track 0 DD data + + (t0dd + 7) >> 3 Track 0 QD data + + + (t0qd + 7) >> 3 Track 1 SD data + + (t1sd + 7) >> 3 Track 1 DD data + + (t1dd + 7) >> 3 Track 1 QD data + + SD data is big-endian raw FM words + DD/QD data is big-endian raw MFM words + + As far as I can tell, the tracks are always sequential, so + physical tracks translate as: + + Physical APD + -------------- ------- + Side 0 Track 0 > Track 0 + Side 1 Track 0 > Track 1 + Side 0 Track 1 > Track 2 + etc. + *********************************************************************/ #include @@ -96,17 +148,17 @@ bool apd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image) err = inflateInit2(&d_stream, MAX_WBITS | 16); if (err != Z_OK) { - LOG_FORMATS("inflateInit2 error: %d\n", err); + osd_printf_error("inflateInit2 error: %d\n", err); return false; } err = inflate(&d_stream, Z_FINISH); if (err != Z_STREAM_END && err != Z_OK) { - LOG_FORMATS("inflate error: %d\n", err); + osd_printf_error("inflate error: %d\n", err); return false; } err = inflateEnd(&d_stream); if (err != Z_OK) { - LOG_FORMATS("inflateEnd error: %d\n", err); + osd_printf_error("inflateEnd error: %d\n", err); return false; } size = inflate_size; diff --git a/src/lib/formats/asst128_dsk.cpp b/src/lib/formats/asst128_dsk.cpp index 9cc0fb8fd71..fe64cc725ee 100644 --- a/src/lib/formats/asst128_dsk.cpp +++ b/src/lib/formats/asst128_dsk.cpp @@ -2,9 +2,9 @@ // copyright-holders:Olivier Galibert /********************************************************************* - formats/asst128_dsk.c + formats/asst128_dsk.c - asst128 format + asst128 format *********************************************************************/ diff --git a/src/lib/formats/asst128_dsk.h b/src/lib/formats/asst128_dsk.h index 5d839f78b3d..b19aab50f27 100644 --- a/src/lib/formats/asst128_dsk.h +++ b/src/lib/formats/asst128_dsk.h @@ -2,9 +2,9 @@ // copyright-holders:Olivier Galibert /********************************************************************* - formats/asst128_dsk.h + formats/asst128_dsk.h - asst128 format + asst128 format *********************************************************************/ diff --git a/src/lib/formats/atom_tap.cpp b/src/lib/formats/atom_tap.cpp index 3c606901b90..881433ef1a8 100644 --- a/src/lib/formats/atom_tap.cpp +++ b/src/lib/formats/atom_tap.cpp @@ -43,6 +43,7 @@ #include #include "atom_tap.h" +#include "csw_cas.h" #include "uef_cas.h" /*************************************************************************** PARAMETERS @@ -143,5 +144,6 @@ const struct CassetteFormat atom_tap_format = CASSETTE_FORMATLIST_START( atom_cassette_formats ) CASSETTE_FORMAT(atom_tap_format) + CASSETTE_FORMAT(csw_cassette_format) CASSETTE_FORMAT(uef_cassette_format) CASSETTE_FORMATLIST_END diff --git a/src/lib/formats/csw_cas.cpp b/src/lib/formats/csw_cas.cpp index a8feccf5300..84aab50d3b8 100644 --- a/src/lib/formats/csw_cas.cpp +++ b/src/lib/formats/csw_cas.cpp @@ -45,12 +45,8 @@ static int mycaslen; static int csw_cas_to_wav_size( const uint8_t *casdata, int caslen ) { - uint32_t SampleRate; - uint32_t NumberOfPulses; uint8_t MajorRevision; uint8_t MinorRevision; - uint8_t CompressionType; - uint8_t Flags; uint8_t HeaderExtensionLength; std::vector gz_ptr; @@ -83,19 +79,8 @@ static int csw_cas_to_wav_size( const uint8_t *casdata, int caslen ) goto cleanup; } - SampleRate=get_leuint32(casdata+0x19); - LOG_FORMATS("Sample rate %u\n",SampleRate); - - NumberOfPulses=get_leuint32(casdata+0x1d); - LOG_FORMATS("Number Of Pulses %u\n",NumberOfPulses); - - - CompressionType=casdata[0x21]; - Flags=casdata[0x22]; HeaderExtensionLength=casdata[0x23]; - LOG_FORMATS("CompressionType %u Flast %u HeaderExtensionLength %u\n",CompressionType,Flags,HeaderExtensionLength); - mycaslen=caslen; //from here on down for now I am assuming it is compressed csw file. in_ptr = (uint8_t*) casdata+0x34+HeaderExtensionLength; @@ -180,7 +165,6 @@ static int csw_cas_fill_wave( int16_t *buffer, int length, uint8_t *bytes ) int bsize=0; int i; - LOG_FORMATS("Length %d\n",length); SampleRate=get_leuint32(bytes+0x19); @@ -193,17 +177,19 @@ static int csw_cas_fill_wave( int16_t *buffer, int length, uint8_t *bytes ) Flags=bytes[0x22]; HeaderExtensionLength=bytes[0x23]; - if ((Flags&0)==0) - { - Bit=-100; - } - else - { - Bit=100; - } + Bit = (Flags & 1) ? 100 : -100; + + LOG_FORMATS("CompressionType %u Flags %u HeaderExtensionLength %u\n",CompressionType,Flags,HeaderExtensionLength); - LOG_FORMATS("CompressionType %u Flast %u HeaderExtensionLength %u\n",CompressionType,Flags,HeaderExtensionLength); + LOG_FORMATS("Encoder: "); + for (i = 0; i < 16; i++) + LOG_FORMATS("%c", bytes[0x24 + i]); + LOG_FORMATS("\n"); + LOG_FORMATS("Header: "); + for (i = 0; i < HeaderExtensionLength; i++) + LOG_FORMATS("%c", bytes[0x34 + i]); + LOG_FORMATS("\n"); //from here on down for now I am assuming it is compressed csw file. in_ptr = (uint8_t*) bytes+0x34+HeaderExtensionLength; @@ -302,7 +288,7 @@ static cassette_image::error csw_cassette_load( cassette_image *cassette ) return cassette_legacy_construct( cassette, &csw_legacy_fill_wave ); } -static const struct CassetteFormat csw_cassette_format = { +const struct CassetteFormat csw_cassette_format = { "csw", csw_cassette_identify, csw_cassette_load, diff --git a/src/lib/formats/csw_cas.h b/src/lib/formats/csw_cas.h index 2f1971bfdbd..cdc36001c60 100644 --- a/src/lib/formats/csw_cas.h +++ b/src/lib/formats/csw_cas.h @@ -11,6 +11,8 @@ #include "cassimg.h" +extern const struct CassetteFormat csw_cassette_format; + CASSETTE_FORMATLIST_EXTERN(csw_cassette_formats); CASSETTE_FORMATLIST_EXTERN(bbc_cassette_formats); diff --git a/src/lib/formats/hp_ipc_dsk.cpp b/src/lib/formats/hp_ipc_dsk.cpp new file mode 100644 index 00000000000..8b9efce0120 --- /dev/null +++ b/src/lib/formats/hp_ipc_dsk.cpp @@ -0,0 +1,42 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +/********************************************************************* + + formats/hp_ipc_dsk.c + + HP Integral PC format + +*********************************************************************/ + +#include + +#include "formats/hp_ipc_dsk.h" + +hp_ipc_format::hp_ipc_format() : wd177x_format(formats) +{ +} + +const char *hp_ipc_format::name() const +{ + return "hp_ipc"; +} + +const char *hp_ipc_format::description() const +{ + return "HP Integral PC disk image"; +} + +const char *hp_ipc_format::extensions() const +{ + return "img"; +} + +const hp_ipc_format::format hp_ipc_format::formats[] = { + // images from coho.org. gaps unverified. + { floppy_image::FF_35, floppy_image::DSDD, floppy_image::MFM, + 2000, 9, 77, 2, 512, {}, 1, {}, 60, 22, 43 }, + {} +}; + +const floppy_format_type FLOPPY_HP_IPC_FORMAT = &floppy_image_format_creator; + diff --git a/src/lib/formats/hp_ipc_dsk.h b/src/lib/formats/hp_ipc_dsk.h new file mode 100644 index 00000000000..ebe7b808598 --- /dev/null +++ b/src/lib/formats/hp_ipc_dsk.h @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +/********************************************************************* + + formats/hp_ipc_dsk.h + + hp_ipc format + +*********************************************************************/ + +#ifndef HP_IPC_DSK_H_ +#define HP_IPC_DSK_H_ + +#include "wd177x_dsk.h" + +class hp_ipc_format : public wd177x_format { +public: + hp_ipc_format(); + + virtual const char *name() const override; + virtual const char *description() const override; + virtual const char *extensions() const override; + +private: + static const format formats[]; +}; + +extern const floppy_format_type FLOPPY_HP_IPC_FORMAT; + +#endif diff --git a/src/lib/formats/hpi_dsk.cpp b/src/lib/formats/hpi_dsk.cpp new file mode 100644 index 00000000000..a8ebe915606 --- /dev/null +++ b/src/lib/formats/hpi_dsk.cpp @@ -0,0 +1,430 @@ +// license:BSD-3-Clause +// copyright-holders: Ansgar Kückes, F. Ulivi +/********************************************************************* + + hpi_dsk.cpp + + HP9895A "HPI" disk images + + CHS = 77/2/30 + Sector size 256 bytes + Cell size 2 µs + Gap1 = 16 x 0x00 + Gap2 = 34 x 0x00 + Gap3 = ~490 x 0x00 (depends on actual rotation speed) + Sync = 4 x 0x00 + 4 x 0xff + ID AM = 0x0e clock + 0x70 data + Data AM = 0x0e clock + 0x50 data + DefectTrack AM = 0x0e clock + 0xf0 data + CRC-16 excludes address markers + MMFM/M2FM encoding (LS bit first) + + The order of sectors in a track depends on the interleave factor + which is the distance (in number of sectors) between two consecutively + numbered sectors. Interleave factor is specified at formatting time. + The default factor is 7. The order of sectors for this factor is: + 0, 13, 26, 9, 22, 5, 18, 1, 14, 27, 10, 23, 6, 19, 2, + 15, 28, 11, 24, 7, 20, 3, 16, 29, 12, 25, 8, 21, 4, 17 + + := [Index hole]|Sector0|Gap2|Sector1|Gap2|...|Sector29|Gap3| + + := ID field|Gap1|Data field + + := Sync|ID AM|Track no.|Sector no.|CRC-16|0x00 + + := Sync|Data AM|Data|CRC-16|0x00 + + This format is just a raw image of every sector on a HP-formatted + 8" floppy disk. Files with this format have no header/trailer and + are exactly 1182720 bytes in size (30 sectors, 2 heads, 77 tracks, + 256 bytes per sector). There's also a "reduced" version holding + just 75 cylinders. + When loading, the disk image is translated to MMFM encoding so + that it can be loaded into HP9895 emulator. + +*********************************************************************/ + +#include "emu.h" +#include "hpi_dsk.h" + +// Debugging +#define VERBOSE 0 +#define LOG(...) do { if (VERBOSE) printf(__VA_ARGS__); } while (false) + +constexpr unsigned IL_OFFSET = 0x12; // Position of interleave factor in HPI image (2 bytes, big-endian) +constexpr unsigned DEFAULT_IL = 7; // Default interleaving factor +constexpr unsigned CELL_SIZE = 1200; // Bit cell size (1 µs) +constexpr uint8_t ID_AM = 0x70; // ID address mark +constexpr uint8_t DATA_AM = 0x50; // Data address mark +constexpr uint8_t AM_CLOCK = 0x0e; // Clock pattern of AM +constexpr uint32_t ID_CD_PATTERN= 0x55552a54; // C/D pattern of 0xff + ID_AM +constexpr uint32_t DATA_CD_PATTERN = 0x55552a44; // C/D pattern of 0xff + DATA_AM +constexpr unsigned GAP1_SIZE = 17; // Size of gap 1 (+1) +constexpr unsigned GAP2_SIZE = 35; // Size of gap 2 (+1) +constexpr int ID_DATA_OFFSET = 30 * 16; // Nominal distance (in cells) between ID & DATA AM +// Size of image file (holding 77 cylinders) +constexpr unsigned HPI_IMAGE_SIZE = HPI_TRACKS * HPI_HEADS * HPI_SECTORS * HPI_SECTOR_SIZE; +constexpr unsigned HPI_RED_TRACKS = 75; // Reduced number of tracks +// Size of reduced image file (holding 75 cylinders) +constexpr unsigned HPI_RED_IMAGE_SIZE = HPI_RED_TRACKS * HPI_HEADS * HPI_SECTORS * HPI_SECTOR_SIZE; + +hpi_format::hpi_format() +{ +} + +int hpi_format::identify(io_generic *io, uint32_t form_factor) +{ + uint64_t size = io_generic_size(io); + + // we try to stay back and give only 50 points, since another image + // format may also have images of the same size (there is no header and no + // magic number for HPI format... + if (((form_factor == floppy_image::FF_8) || (form_factor == floppy_image::FF_UNKNOWN)) && + ((size == HPI_RED_IMAGE_SIZE) || (size == HPI_IMAGE_SIZE))) { + return 50; + } else { + return 0; + } +} + +bool hpi_format::load(io_generic *io, uint32_t form_factor, floppy_image *image) +{ + image->set_variant(floppy_image::DSDD); // We actually need to derive the variant from the image size depending on the form factor + + uint64_t size = io_generic_size(io); + unsigned cylinders; + if (size == HPI_RED_IMAGE_SIZE) { + cylinders = HPI_RED_TRACKS; + } else if (size == HPI_IMAGE_SIZE) { + cylinders = HPI_TRACKS; + } else { + return false; + } + + // Suck in the whole image + std::vector image_data(size); + io_generic_read(io, (void *)image_data.data(), 0, size); + + // Get interleave factor from image + unsigned il = (unsigned)image_data[ IL_OFFSET ] * 256 + image_data[ IL_OFFSET + 1 ]; + LOG("I/L from image: %u\n" , il); + if (il < 1 || il >= HPI_SECTORS) { + il = DEFAULT_IL; + } + LOG("Actual I/L: %u\n" , il); + + sector_list_t sector_list; + interleaved_sectors(il, sector_list); + + unsigned list_offset = 0; + for (unsigned cyl = 0; cyl < cylinders; cyl++) { + for (unsigned head = 0; head < HPI_HEADS; head++) { + std::vector track_data; + for (unsigned sector = 0; sector < HPI_SECTORS; sector++) { + unsigned real_sector = sector_list[ (sector + list_offset) % HPI_SECTORS ]; + unsigned offset_in_image = chs_to_lba(cyl, head, real_sector) * HPI_SECTOR_SIZE; + write_sector(track_data , cyl , real_sector + (head << 7) , &image_data[ offset_in_image ]); + } + fill_with_gap3(track_data); + generate_track_from_levels(cyl , head , track_data , 0 , image); + list_offset = (list_offset + m_track_skew[ il - 1 ][ head ]) % HPI_SECTORS; + } + } + return true; +} + +bool hpi_format::save(io_generic *io, floppy_image *image) +{ + for (unsigned cyl = 0; cyl < HPI_TRACKS; cyl++) { + for (unsigned head = 0; head < HPI_HEADS; head++) { + uint8_t bitstream[ 21000 ]; + int bitstream_size; + generate_bitstream_from_track(cyl , head , CELL_SIZE , bitstream , bitstream_size , image , 0); + int pos = 0; + unsigned track_no , head_no , sector_no; + uint8_t sector_data[ HPI_SECTOR_SIZE ]; + while (get_next_sector(bitstream , bitstream_size , pos , track_no , head_no , sector_no , sector_data)) { + if (track_no == cyl && head_no == head && sector_no < HPI_SECTORS) { + unsigned offset_in_image = chs_to_lba(cyl, head, sector_no) * HPI_SECTOR_SIZE; + io_generic_write(io, sector_data, offset_in_image, HPI_SECTOR_SIZE); + } + } + } + } + return true; +} + +const char *hpi_format::name() const +{ + return "hpi"; +} + +const char *hpi_format::description() const +{ + return "HP9895A floppy disk image"; +} + +const char *hpi_format::extensions() const +{ + return "hpi"; +} + +bool hpi_format::supports_save() const +{ + return true; +} + +void hpi_format::interleaved_sectors(unsigned il_factor , sector_list_t& sector_list) +{ + sector_list.fill(0xff); + + unsigned idx = HPI_SECTORS - il_factor; + for (unsigned sect = 0; sect < HPI_SECTORS; sect++) { + idx = (idx + il_factor) % HPI_SECTORS; + while (sector_list[ idx ] != 0xff) { + idx = (idx + 1) % HPI_SECTORS; + } + LOG("[%u]=%u\n" , idx , sect); + sector_list[ idx ] = sect; + } +} + +void hpi_format::write_mmfm_bit(std::vector &buffer , bool data_bit , bool clock_bit) +{ + bool had_transition = buffer.size() < 2 ? false : bit_r(buffer, buffer.size() - 1) || bit_r(buffer , buffer.size() - 2); + clock_bit = !data_bit && (clock_bit || !had_transition); + bit_w(buffer , clock_bit , CELL_SIZE); + bit_w(buffer , data_bit , CELL_SIZE); +} + +void hpi_format::write_mmfm_byte(std::vector &buffer , uint8_t data , uint8_t clock) +{ + for (unsigned i = 0; i < 8; i++) { + write_mmfm_bit(buffer , BIT(data , i) , BIT(clock , i)); + } +} + +void hpi_format::write_sync(std::vector &buffer) +{ + // Sync + // 4x 00 + for (unsigned i = 0; i < 4; i++) { + write_mmfm_byte(buffer , 0); + } + // 4x ff + for (unsigned i = 0; i < 4; i++) { + write_mmfm_byte(buffer , 0xff); + } +} + +void hpi_format::write_crc(std::vector &buffer , uint16_t crc) +{ + // Note that CRC is stored with MSB (x^15) first + for (unsigned i = 0; i < 16; i++) { + write_mmfm_bit(buffer , BIT(crc , 15 - i) , 0); + } +} + +void hpi_format::write_sector(std::vector &buffer , uint8_t track_no , uint8_t sect_head_no , const uint8_t *sect_data) +{ + // **** On-disk format of a sector **** + // + // | Offset | Size | Value | Content | + // |--------+------+-------+----------------------| + // | 0 | 4 | 00 | Sync | + // | 4 | 4 | ff | Sync | + // | 8 | 1 | 70 | ID AM (clock = 0e) | + // | 9 | 1 | xx | Track no. | + // | 10 | 1 | xx | Sector and head no. | + // | 11 | 2 | xx | ID CRC | + // | 13 | 1 | 00 | ID tail | + // | 14 | 16 | 00 | Gap 1 | + // | 30 | 4 | 00 | Sync | + // | 34 | 4 | ff | Sync | + // | 38 | 1 | 50 | Data AM (clock = 0e) | + // | 39 | 256 | xx | Sector data | + // | 295 | 2 | xx | Data CRC | + // | 297 | 1 | 00 | Data tail | + // | 298 | 34 | 00 | Gap 2 | + // | 332 | | | | + + // Sync + write_sync(buffer); + // ID AM + write_mmfm_byte(buffer , ID_AM , AM_CLOCK); + auto crc_start = buffer.size(); + // Track # + write_mmfm_byte(buffer , track_no); + // Sector/head # + write_mmfm_byte(buffer , sect_head_no); + uint16_t crc = calc_crc_ccitt(buffer , crc_start , buffer.size()); + // ID CRC + write_crc(buffer , crc); + // Gap 1 + for (unsigned i = 0; i < GAP1_SIZE; i++) { + write_mmfm_byte(buffer , 0); + } + // Sync + write_sync(buffer); + // Data AM + write_mmfm_byte(buffer , DATA_AM , AM_CLOCK); + crc_start = buffer.size(); + for (unsigned i = 0; i < HPI_SECTOR_SIZE; i += 2) { + // Data: bytes are swapped in pairs + write_mmfm_byte(buffer , sect_data[ i + 1 ]); + write_mmfm_byte(buffer , sect_data[ i ]); + } + crc = calc_crc_ccitt(buffer , crc_start , buffer.size()); + // Data CRC + write_crc(buffer , crc); + // Gap 2 + for (unsigned i = 0; i < GAP2_SIZE; i++) { + write_mmfm_byte(buffer , 0); + } +} + +void hpi_format::fill_with_gap3(std::vector &buffer) +{ + // Cell count in a track (1 µs cells in a 1/6 s track) + unsigned cell_count = (500000 * 120) / 360; + unsigned cells_in_buffer = buffer.size(); + // Size of gap 3 + unsigned gap_3 = (cell_count - cells_in_buffer) / 16; + // Gap 3 + for (unsigned i = 0; i < gap_3; i++) { + write_mmfm_byte(buffer , 0); + } + // Last cell to round everything up to 2E+8 + if (buffer.size() * CELL_SIZE < 200000000) { + bit_w(buffer , false , 200000000 - buffer.size() * CELL_SIZE); + } +} + +unsigned hpi_format::chs_to_lba(unsigned cylinder , unsigned head , unsigned sector) +{ + return sector + (head + cylinder * HPI_HEADS) * HPI_SECTORS; +} + +std::vector hpi_format::get_next_id_n_block(const uint8_t *bitstream , int bitstream_size , int& pos , int& start_pos) +{ + std::vector res; + uint32_t sr = 0; + // Look for either sync + ID AM or sync + DATA AM + while (pos < bitstream_size && sr != ID_CD_PATTERN && sr != DATA_CD_PATTERN) { + bool bit = BIT(bitstream[ pos >> 3 ] , 7 - (pos & 7)); + pos++; + sr = (sr << 1) | bit; + } + if (pos == bitstream_size) { + // End of track reached + return res; + } + start_pos = pos; + // ID blocks: Track no. + sector/head no. + CRC + // Data blocks: Sector data + CRC + unsigned to_dump; + if (sr == ID_CD_PATTERN) { + to_dump = 4; + res.push_back(ID_AM); + } else { + to_dump = HPI_SECTOR_SIZE + 2; + res.push_back(DATA_AM); + } + // Align to data cells + pos++; + for (unsigned i = 0; i < to_dump && pos < bitstream_size; i++) { + uint8_t byte = 0; + unsigned j; + for (j = 0; j < 8 && pos < bitstream_size; j++) { + bool bit = BIT(bitstream[ pos >> 3 ] , 7 - (pos & 7)); + pos += 2; + byte >>= 1; + if (bit) { + byte |= 0x80; + } + } + if (j == 8) { + res.push_back(byte); + } + } + return res; +} + +bool hpi_format::get_next_sector(const uint8_t *bitstream , int bitstream_size , int& pos , unsigned& track , unsigned& head , unsigned& sector , uint8_t *sector_data) +{ + std::vector block; + while (true) { + // Scan for ID block first + int id_pos = 0; + while (true) { + if (block.size() == 0) { + block = get_next_id_n_block(bitstream , bitstream_size , pos , id_pos); + if (block.size() == 0) { + return false; + } + } + if (block[ 0 ] == ID_AM && block.size() >= 3) { + track = block[ 1 ]; + head = block[ 2 ] >> 7; + sector = block[ 2 ] & 0x7f; + break; + } else { + block.clear(); + } + } + // Then for DATA block + int data_pos; + block = get_next_id_n_block(bitstream , bitstream_size , pos , data_pos); + if (block.size() == 0) { + return false; + } + if (block[ 0 ] == DATA_AM && block.size() >= (HPI_SECTOR_SIZE + 1) && abs((data_pos - id_pos) - ID_DATA_OFFSET) <= 16) { + break; + } + } + + for (unsigned i = 0; i < HPI_SECTOR_SIZE; i += 2) { + sector_data[ i ] = block[ i + 2 ]; + sector_data[ i + 1 ] = block[ i + 1 ]; + } + + return true; +} + +// This table comes straight from hp9895 firmware (it's @ 0x0f90) +// For each interleave factor in [1..29] it stores the number of positions +// to move forward in the interleaved sector list when beginning a new track. +// There are different offsets for tracks on head 0 and tracks on head 1. +const uint8_t hpi_format::m_track_skew[ HPI_SECTORS - 1 ][ HPI_HEADS ] = { + { 0x1c , 0x18 }, // Interleave = 1 + { 0x1c , 0x18 }, // Interleave = 2 + { 0x1c , 0x18 }, // Interleave = 3 + { 0x1d , 0x1a }, // Interleave = 4 + { 0x1a , 0x18 }, // Interleave = 5 + { 0x19 , 0x18 }, // Interleave = 6 + { 0x00 , 0x00 }, // Interleave = 7 + { 0x1d , 0x1d }, // Interleave = 8 + { 0x1c , 0x1c }, // Interleave = 9 + { 0x15 , 0x15 }, // Interleave = 10 + { 0x00 , 0x00 }, // Interleave = 11 + { 0x19 , 0x19 }, // Interleave = 12 + { 0x00 , 0x00 }, // Interleave = 13 + { 0x1d , 0x1d }, // Interleave = 14 + { 0x10 , 0x10 }, // Interleave = 15 + { 0x1d , 0x1d }, // Interleave = 16 + { 0x00 , 0x00 }, // Interleave = 17 + { 0x19 , 0x19 }, // Interleave = 18 + { 0x00 , 0x00 }, // Interleave = 19 + { 0x15 , 0x15 }, // Interleave = 20 + { 0x1c , 0x1c }, // Interleave = 21 + { 0x1d , 0x1d }, // Interleave = 22 + { 0x00 , 0x00 }, // Interleave = 23 + { 0x19 , 0x19 }, // Interleave = 24 + { 0x1a , 0x1a }, // Interleave = 25 + { 0x1d , 0x1d }, // Interleave = 26 + { 0x1c , 0x1c }, // Interleave = 27 + { 0x1d , 0x1d }, // Interleave = 28 + { 0x00 , 0x00 } // Interleave = 29 +}; + +const floppy_format_type FLOPPY_HPI_FORMAT = &floppy_image_format_creator; diff --git a/src/lib/formats/hpi_dsk.h b/src/lib/formats/hpi_dsk.h new file mode 100644 index 00000000000..ded492cb74d --- /dev/null +++ b/src/lib/formats/hpi_dsk.h @@ -0,0 +1,55 @@ +// license:BSD-3-Clause +// copyright-holders: Ansgar Kückes, F. Ulivi +/********************************************************************* + + hpi_dsk.h + + "HPI" disk format + +*********************************************************************/ + +#pragma once + +#ifndef _HPI_DSK_H_ +#define _HPI_DSK_H_ + +#include "flopimg.h" + +// Geometry constants +constexpr unsigned HPI_TRACKS = 77; +constexpr unsigned HPI_HEADS = 2; +constexpr unsigned HPI_SECTORS = 30; +constexpr unsigned HPI_SECTOR_SIZE = 256; + +class hpi_format : public floppy_image_format_t +{ +public: + hpi_format(); + + virtual int identify(io_generic *io, uint32_t form_factor) override; + virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override; + virtual bool save(io_generic *io, floppy_image *image) override; + virtual const char *name() const override; + virtual const char *description() const override; + virtual const char *extensions() const override; + virtual bool supports_save() const override; + +private: + typedef std::array sector_list_t; + static void interleaved_sectors(unsigned il_factor , sector_list_t& sector_list); + void write_mmfm_bit(std::vector &buffer , bool data_bit , bool clock_bit); + void write_mmfm_byte(std::vector &buffer , uint8_t data , uint8_t clock = 0); + void write_sync(std::vector &buffer); + void write_crc(std::vector &buffer , uint16_t crc); + void write_sector(std::vector &buffer , uint8_t track_no , uint8_t sect_head_no , const uint8_t *sect_data); + void fill_with_gap3(std::vector &buffer); + static unsigned chs_to_lba(unsigned cylinder , unsigned head , unsigned sector); + std::vector get_next_id_n_block(const uint8_t *bitstream , int bitstream_size , int& pos , int& start_pos); + bool get_next_sector(const uint8_t *bitstream , int bitstream_size , int& pos , unsigned& track , unsigned& head , unsigned& sector , uint8_t *sector_data); + + static const uint8_t m_track_skew[ HPI_SECTORS - 1 ][ HPI_HEADS ]; +}; + +extern const floppy_format_type FLOPPY_HPI_FORMAT; + +#endif /* _HPI_DSK_H_ */ diff --git a/src/lib/formats/jfd_dsk.cpp b/src/lib/formats/jfd_dsk.cpp new file mode 100644 index 00000000000..7f2dc52e23b --- /dev/null +++ b/src/lib/formats/jfd_dsk.cpp @@ -0,0 +1,365 @@ +// license:BSD-3-Clause +// copyright-holders:Nigel Barnes +/********************************************************************* + + formats/jfd_dsk.c + + JASPP Floppy Disk image format + + JFD file structure + ------------------ + + A JFD file is a gzip compressed version of the original JFD + file. + + Official files should be named "[optional text name] Fxxxxxnn" + (see below for xxxx / nn explanation) eg "Fire & Ice (1995) + (Warner Interactive Entertainment) F1015401" or shortened to + "F1015401" on an Arc that doesn't support long file names. + + Compressed file always starts: + 1F 8B 08 00 00 00 00 00 00 0B EC BD + ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ + | | | | | | | | | | + | | | | | | | | | +- OS + | | | | | | | | +---- xfl + | | | | +--+--+--+------- time + | | | +------------------- gzip flags + | | +---------------------- gzip compression* + | | + +--+------------------------- gzip header + + * Compression method: 8 is the only supported format + + + Original JFD file structure: + + +0 "JFDI" identifier + +4 Min. version of ADFFS required to handle file * 100 + eg 1.25 would be 125 + +8 Memory allocation required to load file in bytes + ie uncompressed file size + +12 Disc sequence number - SSSSnnnn + Where: + SSSS is the number of discs in this set + nnnn is the number of this disc + +16 Game ID number (xxxxx) - official release ID of this + floppy set. Unofficial releases should be an ID of zero + +20 Image version number: VVVwwwww + Where: + VVV - major release version, 0 being initial release + wwwww - minor version, reset to 0 on a major release + and is incremented on each flush / save as + +24 Offset to Track Table, the end of which is denoted by + the start of the Sector Table + +28 Offset to Sector Table, end of which is denoted by + the start of the Data Table + +32 Offset to Data Table + +36 Offset to optional Delta Track Table. Changes to the + Track table are written here post initial release + 0 denotes not present + +40 Offset to optional Delta Sector Table. Changes to the + Sector table are written here post initial release + 0 denotes not present + +44 Offset to optional Delta Data Table. Changes to the + Data table are written here post initial release + 0 denotes not present + +48 Disc title. eg "Fire & Ice (1995) (Warner Interactive + Entertainment) disc 1 of 2", zero terminated. + +304 ... future expansion space (additions in 2.04+) + + +304 Bit flags: + 0 - Disk write protected + 1 - Disk is RW, write delta changes back to JFD + 2 - Protect CMOS required + 3 - Protect Modules required + 4 - Hide Hourglass + 5 - Requires Shift-Break to load + 6 - Remap video memory to 1FFFFFF downwards + + 8 - ARM3 compatible + 9 - ARM250 compatible + 10 - ARM610/710 compatible + 11 - ARM7500 compatible + 12 - StrongArm compatible + 13 = ARMv5/v5/v7 compatible + + 16 - RiscOS 2 compatible + 17 - RiscOS 3.1 compatible + 18 - RiscOS 3.5 compatible + 19 - RiscOS 3.7 compatible + 20 - RiscOS 3.8 / 4.x compatible + 21 - RiscOS 5.x compatible + 22 - RiscOS 6.x compatible + +308 FPS of the original game * 2 (eg for 12.5 FPS use 25) + +309 - 311 reserved + +312 Length of Obey file in bytes + +316 ... future expansion space (currently 0 bytes) + + [Track Table] + +0 Track 0 offset within Sector Table + +4 Track 1 offset within Sector Table + ... + +n*4 Track n offset within Sector Table + n can be any value, although to allow writes should be at + least 160. For reference, APD's are 166 + A blank track is denoted by FFFFFFFF + + [Sector Table] + +0 ttBdnnCs - Sector Header description (see below) + +4 Offset within Data Table of sector data, if this value is + FFFFFFFF no data is associated with the sector. In the + case of a sector with a CRC flag set in C set, the sector + is a stub to produce a specific error. + + .. repeats for all sectors in track, two doubles (ie 8 bytes) per + sector + + +n FFFFFFFF - end of track marker + + The above repeats for all tracks containing sector data. + + + [Data Table] + ... X bytes of sector data in native byte format. + Not necessarily in disc order, as sectors are located + individually during reads. + + [Obey file] + ... Obey file used to boot the floppy + + + Sector Header description: ttBdnnCs + Where: + + tt - time of sector from start of index marker in milliseconds + max being 200 (optional, required for duplicate sectors) + B - Option bits + bit 0 - sector data contains DiscOp 3 data for the track + bit 1 - reserved + bit 2 - reserved + bit 3 - reserved + d - Density value, where: + 1 - single + 2 - double + 4 - quad + 8 - octal + nn - Sector number + C - CRC bits, where: + bit 0 - ID CRC invalid + bit 1 - Data CRC invalid + bit 2 - reserved + bit 3 - Slow sector (read at normal floppy speed) + s - 1772 sector size, where: + 0 - 128 bytes + 1 - 256 bytes + 2 - 512 bytes + 3 - 1024 bytes + +*********************************************************************/ + +#include +#include "formats/jfd_dsk.h" + +static const uint8_t JFD_HEADER[4] = { 'J', 'F', 'D', 'I' }; +static const uint8_t GZ_HEADER[2] = { 0x1f, 0x8b }; + +jfd_format::jfd_format() +{ +} + +const char *jfd_format::name() const +{ + return "jfd"; +} + +const char *jfd_format::description() const +{ + return "JASPP Floppy Disk image"; +} + +const char *jfd_format::extensions() const +{ + return "jfd"; +} + +int jfd_format::identify(io_generic *io, uint32_t form_factor) +{ + uint64_t size = io_generic_size(io); + std::vector img(size); + io_generic_read(io, &img[0], 0, size); + + int err; + std::vector gz_ptr(4); + z_stream d_stream; + + if (!memcmp(&img[0], GZ_HEADER, sizeof(GZ_HEADER))) { + d_stream.zalloc = nullptr; + d_stream.zfree = nullptr; + d_stream.opaque = nullptr; + d_stream.next_in = &img[0]; + d_stream.avail_in = size; + d_stream.next_out = &gz_ptr[0]; + d_stream.avail_out = 4; + + err = inflateInit2(&d_stream, MAX_WBITS | 16); + if (err != Z_OK) return 0; + + err = inflate(&d_stream, Z_SYNC_FLUSH); + if (err != Z_OK) return 0; + + err = inflateEnd(&d_stream); + if (err != Z_OK) return 0; + + img = gz_ptr; + } + + if (!memcmp(&img[0], JFD_HEADER, sizeof(JFD_HEADER))) { + return 100; + } + + return 0; +} + +bool jfd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image) +{ + uint64_t size = io_generic_size(io); + std::vector img(size); + io_generic_read(io, &img[0], 0, size); + + int err; + std::vector gz_ptr; + z_stream d_stream; + int inflate_size = (img[size - 1] << 24) | (img[size - 2] << 16) | (img[size - 3] << 8) | img[size - 4]; + + if (!memcmp(&img[0], GZ_HEADER, sizeof(GZ_HEADER))) { + gz_ptr.resize(inflate_size); + + d_stream.zalloc = nullptr; + d_stream.zfree = nullptr; + d_stream.opaque = nullptr; + d_stream.next_in = &img[0]; + d_stream.avail_in = size; + d_stream.next_out = &gz_ptr[0]; + d_stream.avail_out = inflate_size; + + err = inflateInit2(&d_stream, MAX_WBITS | 16); + if (err != Z_OK) { + osd_printf_error("inflateInit2 error: %d\n", err); + return false; + } + err = inflate(&d_stream, Z_FINISH); + if (err != Z_STREAM_END && err != Z_OK) { + osd_printf_error("inflate error: %d\n", err); + return false; + } + err = inflateEnd(&d_stream); + if (err != Z_OK) { + osd_printf_error("inflateEnd error: %d\n", err); + return false; + } + size = inflate_size; + img = gz_ptr; + } + + osd_printf_verbose("jfd_dsk: loading %s\n", &img[48]); + + uint32_t offset_track = little_endianize_int32(*(uint32_t *)(&img[24])); /* Track Table */ + uint32_t offset_sector = little_endianize_int32(*(uint32_t *)(&img[28])); /* Sector Table */ + uint32_t offset_data = little_endianize_int32(*(uint32_t *)(&img[32])); /* Data Table */ + + desc_pc_sector sects[256]; + uint8_t den[256]; + uint8_t spt, ssize; + uint32_t header, discop3; + std::vector track_data; + + int track_count = (offset_sector - offset_track) / 4; + + for (int track = 0; track < track_count; track++) { + uint32_t track_offset = little_endianize_int32(*(uint32_t *)(&img[offset_track + (track * 4)])); + spt = 0; + discop3 = 0; + den[0] = 2; + + if (track_offset == 0xffffffff) /* unformatted track */ + { + sects[0].track = track / 2; + sects[0].head = track % 2; + sects[0].sector = 0; + sects[0].size = 0; + } + else + { + for (int i = 0; i < 256; i++) { + header = little_endianize_int32(*(uint32_t *)(&img[offset_sector + track_offset + (i * 8)])); /* Sector Header */ + if (header == 0xffffffff) + break; + + uint32_t data_offset = little_endianize_int32(*(uint32_t *)(&img[offset_sector + track_offset + (i * 8) + 4])); + + den[i] = (header >> 16) & 0x0f; /* sector density */ + if (den[i] != 2) + { + osd_printf_warning("jfd_dsk: track %d sector %d is %s density, not supported\n", track, i, den[0] == 1 ? "single" : "quad"); + } + if (((header >> 20) & 0x0f) == 0x01) /* DiscOp3 data */ + { + discop3 = little_endianize_int32(*(uint32_t *)(&img[offset_data + data_offset])); + for (int i = 0; i < discop3; i++) + { + mfm_w(track_data, 8, img[offset_data + data_offset + 4 + i]); + } + osd_printf_warning("jfd_dsk: track %d contains DiscOp3 data (@%x), not supported\n", track, offset_data + data_offset); + break; + } + else + { + spt = i + 1; + sects[i].track = track / 2; + sects[i].head = track % 2; + sects[i].sector = (header >> 8) & 0xff; + sects[i].bad_crc = (header >> 4) & 0x02; + sects[i].deleted = false; + ssize = header & 0x03; + sects[i].size = ssize; + if (data_offset != 0xffffffff) + { + sects[i].actual_size = 128 << ssize; + sects[i].data = &img[offset_data + data_offset]; + } + else + { + sects[i].actual_size = 0; + } + if (((header >> 24) & 0xff) != 0xff) /* Sector in sector */ + { + osd_printf_warning("jfd_dsk: track %d sector %d specifies time of sector from start of index marker, not supported\n", track, i); + } + } + } + } + + if (discop3) + { + generate_track_from_levels(track / 2, track % 2, track_data, 0, image); + } + else + { + if (den[0] == 1) + build_wd_track_fm(track / 2, track % 2, image, 50000, spt, sects, 10, 40, 10); + else + build_wd_track_mfm(track / 2, track % 2, image, den[0] * 50000, spt, sects, 90, 32, 22); + } + } + image->set_variant(floppy_image::DSDD); + + return true; +} + +bool jfd_format::supports_save() const +{ + return false; +} + +const floppy_format_type FLOPPY_JFD_FORMAT = &floppy_image_format_creator; diff --git a/src/lib/formats/jfd_dsk.h b/src/lib/formats/jfd_dsk.h new file mode 100644 index 00000000000..38374bfb97c --- /dev/null +++ b/src/lib/formats/jfd_dsk.h @@ -0,0 +1,31 @@ +// license:BSD-3-Clause +// copyright-holders:Nigel Barnes +/********************************************************************* + + formats/jfd_dsk.h + + JASPP Floppy Disk image format + +*********************************************************************/ + +#ifndef JFD_DSK_H_ +#define JFD_DSK_H_ + +#include "flopimg.h" + +class jfd_format : public floppy_image_format_t { +public: + jfd_format(); + + virtual const char *name() const override; + virtual const char *description() const override; + virtual const char *extensions() const override; + + virtual int identify(io_generic *io, uint32_t form_factor) override; + virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override; + virtual bool supports_save() const override; +}; + +extern const floppy_format_type FLOPPY_JFD_FORMAT; + +#endif diff --git a/src/lib/formats/thom_dsk.cpp b/src/lib/formats/thom_dsk.cpp index a7c5cc6d433..c8563fc1135 100644 --- a/src/lib/formats/thom_dsk.cpp +++ b/src/lib/formats/thom_dsk.cpp @@ -349,45 +349,96 @@ static FLOPPY_CONSTRUCT(qdd_dsk_construct) } +/* ----------------------------------------------------------------------- */ + + +static floperr_t fd_identify(floppy_image_legacy *floppy, int *vote, int tracks, int sector_size) +{ + uint64_t expected_size; + expected_size = sector_size; + expected_size *= tracks; + expected_size *= 16; /* secetors */ + *vote = (floppy_image_size(floppy) == expected_size) ? 100 : 50; + return FLOPPY_ERROR_SUCCESS; +} + +static floperr_t fd_construct(floppy_image_legacy *floppy, int tracks, int sector_size) +{ + struct basicdsk_geometry geometry; + memset(&geometry, 0, sizeof(geometry)); + geometry.heads = 1; + geometry.first_sector_id = 1; + geometry.sector_length = sector_size; + geometry.tracks = tracks; + geometry.sectors = 16; + return basicdsk_construct(floppy, &geometry); +} + + +static FLOPPY_IDENTIFY(fd_80_256_identify) +{ + return fd_identify(floppy, vote, 80, 256); +} + +static FLOPPY_CONSTRUCT(fd_80_256_construct) +{ + return fd_construct(floppy, 80, 256); +} + +static FLOPPY_IDENTIFY(fd_40_256_identify) +{ + return fd_identify(floppy, vote, 40, 256); +} + +static FLOPPY_CONSTRUCT(fd_40_256_construct) +{ + return fd_construct(floppy, 40, 256); +} + +static FLOPPY_IDENTIFY(fd_80_128_identify) +{ + return fd_identify(floppy, vote, 80, 128); +} + +static FLOPPY_CONSTRUCT(fd_80_128_construct) +{ + return fd_construct(floppy, 80, 128); +} + +static FLOPPY_IDENTIFY(fd_40_128_identify) +{ + return fd_identify(floppy, vote, 40, 128); +} + +static FLOPPY_CONSTRUCT(fd_40_128_construct) +{ + return fd_construct(floppy, 40, 128); +} + + /* ----------------------------------------------------------------------- */ LEGACY_FLOPPY_OPTIONS_START(thomson) - LEGACY_FLOPPY_OPTION(fdmfm2, "fd", "Thomson FD (MFM) 80 tracks disk image (3\"1/2 DD)", basicdsk_identify_default, basicdsk_construct_default, nullptr, - HEADS([1]) - TRACKS([80]) - SECTORS([16]) - SECTOR_LENGTH([256]) - FIRST_SECTOR_ID([1])) - - LEGACY_FLOPPY_OPTION(fdmfm, "fd", "Thomson FD (MFM) 40 tracks disk image (5\"1/4 DD)", basicdsk_identify_default, basicdsk_construct_default, nullptr, - HEADS([1]) - TRACKS([40]) - SECTORS([16]) - SECTOR_LENGTH([256]) - FIRST_SECTOR_ID([1])) - - LEGACY_FLOPPY_OPTION(fd2, "fd", "Thomson FD (FM) 80 tracks disk image (3\"1/2 SD)", basicdsk_identify_default, basicdsk_construct_default, nullptr, - HEADS([1]) - TRACKS([80]) - SECTORS([16]) - SECTOR_LENGTH([128]) - FIRST_SECTOR_ID([1])) - - LEGACY_FLOPPY_OPTION(fd, "fd", "Thomson FD (FM) 40 tracks disk image (5\"1/4 SD)", basicdsk_identify_default, basicdsk_construct_default, nullptr, - HEADS([1]) - TRACKS([40]) - SECTORS([16]) - SECTOR_LENGTH([128]) - FIRST_SECTOR_ID([1])) - - LEGACY_FLOPPY_OPTION(sap,"sap", "Thomson SAP floppy disk image", sap_dsk_identify, sap_dsk_construct, nullptr, nullptr) - - LEGACY_FLOPPY_OPTION(qdd,"qd", "Thomson QDD floppy disk image (2\"8 SD)", qdd_dsk_identify, qdd_dsk_construct, nullptr, - HEADS([1]) - TRACKS([1]) - SECTORS([400]) - SECTOR_LENGTH([128]) - FIRST_SECTOR_ID([0])) +LEGACY_FLOPPY_OPTION(fdmfm2, "fd", "Thomson FD (MFM) 80 tracks disk image (3\"1/2 DD)", + fd_80_256_identify, fd_80_256_construct, nullptr, nullptr) + +// Note: no way to distinguish between FD files for 5"1/4 DD and 3"1/2 SD actually, as they have the same size +// however, we expect 3"1/2 SD to be rather rare, so, we simply put it after 5"1/4 DD + +LEGACY_FLOPPY_OPTION(fdmfm, "fd", "Thomson FD (MFM) 40 tracks disk image (5\"1/4 DD)", + fd_40_256_identify, fd_40_256_construct, nullptr, nullptr) + +LEGACY_FLOPPY_OPTION(fd2, "fd", "Thomson FD (FM) 80 tracks disk image (3\"1/2 SD)", + fd_80_128_identify, fd_80_128_construct, nullptr, nullptr) + +LEGACY_FLOPPY_OPTION(fd, "fd", "Thomson FD (FM) 40 tracks disk image (5\"1/4 SD)", + fd_40_128_identify, fd_40_128_construct, nullptr, nullptr) + +LEGACY_FLOPPY_OPTION(sap,"sap", "Thomson SAP floppy disk image", + sap_dsk_identify, sap_dsk_construct, nullptr, nullptr) + +LEGACY_FLOPPY_OPTION(qdd,"qd", "Thomson QDD floppy disk image (2\"8 SD)", + qdd_dsk_identify, qdd_dsk_construct, nullptr, nullptr) LEGACY_FLOPPY_OPTIONS_END diff --git a/src/lib/netlist/analog/nlid_twoterm.cpp b/src/lib/netlist/analog/nlid_twoterm.cpp index 676042850ad..f54c2b3e68f 100644 --- a/src/lib/netlist/analog/nlid_twoterm.cpp +++ b/src/lib/netlist/analog/nlid_twoterm.cpp @@ -38,7 +38,7 @@ generic_diode::generic_diode(device_t &dev, pstring name) void generic_diode::set_param(const nl_double Is, const nl_double n, nl_double gmin) { - static const double csqrt2 = std::sqrt(2.0); + static constexpr double csqrt2 = 1.414213562373095048801688724209; //std::sqrt(2.0); m_Is = Is; m_logIs = std::log(Is); m_n = n; diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile index d996d5dfd51..f2aa515e82d 100644 --- a/src/lib/netlist/build/makefile +++ b/src/lib/netlist/build/makefile @@ -200,14 +200,15 @@ maketree: $(sort $(OBJDIRS)) .PHONY: clang clang-5 mingw doc clang: - $(MAKE) CC=clang++ LD=clang++ CEXTRAFLAGS="-march=native -Weverything -Werror -Wno-unreachable-code -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-format-nonliteral -Wno-weak-template-vtables -Wno-exit-time-destructors" + $(MAKE) CC=clang++ LD=clang++ CEXTRAFLAGS="-march=native -Weverything -Werror -override -Wno-unreachable-code -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-format-nonliteral -Wno-weak-template-vtables -Wno-exit-time-destructors" clang-5: - $(MAKE) CC=clang++-5.0 LD=clang++-5.0 CEXTRAFLAGS="-march=native -Weverything -Werror -Wno-unreachable-code -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-format-nonliteral -Wno-weak-template-vtables -Wno-exit-time-destructors" + $(MAKE) CC=clang++-5.0 LD=clang++-5.0 CEXTRAFLAGS="-march=native -Weverything -Werror -Wno-inconsistent-missing-destructor-override -Wno-unreachable-code -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-format-nonliteral -Wno-weak-template-vtables -Wno-exit-time-destructors" # # Mostly done: -Wno-weak-vtables -Wno-cast-align # FIXME: -Wno-weak-vtables -Wno-missing-variable-declarations -Wno-conversion -Wno-exit-time-destructors +# FIXME: -Winconsistent-missing-destructor-override : c++ community has diverging opinions on this https://github.com/isocpp/CppCoreGuidelines/issues/721 # FIXME: -Wunreachable-code : False warnings, this a documented clang bug: https://llvm.org/bugs/show_bug.cgi?id=28994 mingw: diff --git a/src/lib/netlist/devices/net_lib.h b/src/lib/netlist/devices/net_lib.h index 3521bd744ba..4c32235f6fc 100644 --- a/src/lib/netlist/devices/net_lib.h +++ b/src/lib/netlist/devices/net_lib.h @@ -15,11 +15,13 @@ //#define NL_AUTO_DEVICES 1 +#define SOLVER(name, freq) \ + NET_REGISTER_DEV(SOLVER, name) \ + PARAM(name.FREQ, freq) + #ifdef NL_AUTO_DEVICES #include "nld_devinc.h" -#include "solver/nld_solver.h" - #include "macro/nlm_cd4xxx.h" #include "macro/nlm_ttl74xx.h" #include "macro/nlm_opamp.h" @@ -29,10 +31,6 @@ #else -#define SOLVER(name, freq) \ - NET_REGISTER_DEV(SOLVER, name) \ - PARAM(name.FREQ, freq) - #include "nld_system.h" #include "nld_2102A.h" diff --git a/src/lib/netlist/devices/nld_74107.cpp b/src/lib/netlist/devices/nld_74107.cpp index 7f9e6087c91..c5a12a15fb4 100644 --- a/src/lib/netlist/devices/nld_74107.cpp +++ b/src/lib/netlist/devices/nld_74107.cpp @@ -13,8 +13,8 @@ namespace netlist namespace devices { - static const netlist_time delay_107[2] = { NLTIME_FROM_NS(16), NLTIME_FROM_NS(25) }; - static const netlist_time delay_107A[2] = { NLTIME_FROM_NS(15), NLTIME_FROM_NS(15) }; + static constexpr netlist_time delay_107[2] = { NLTIME_FROM_NS(16), NLTIME_FROM_NS(25) }; + static constexpr netlist_time delay_107A[2] = { NLTIME_FROM_NS(15), NLTIME_FROM_NS(15) }; NETLIB_OBJECT(74107A) { diff --git a/src/lib/netlist/devices/nld_74161.cpp b/src/lib/netlist/devices/nld_74161.cpp index af6d212820b..5eb711fb456 100644 --- a/src/lib/netlist/devices/nld_74161.cpp +++ b/src/lib/netlist/devices/nld_74161.cpp @@ -5,8 +5,6 @@ * */ -#define MAXCNT 15 - #include "nld_74161.h" #include "../nl_base.h" @@ -14,6 +12,9 @@ namespace netlist { namespace devices { + + static constexpr const unsigned MAXCNT = 15; + NETLIB_OBJECT(74161) { NETLIB_CONSTRUCTOR(74161) @@ -84,7 +85,7 @@ namespace netlist } // FIXME: Timing - static const netlist_time delay[4] = + static constexpr netlist_time delay[4] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(40), @@ -108,9 +109,7 @@ namespace netlist } else if (m_ENABLET() && m_ENABLEP()) { - ++m_cnt; - if (m_cnt > MAXCNT) - m_cnt = 0; + ++m_cnt &= MAXCNT; } } diff --git a/src/lib/netlist/devices/nld_74175.cpp b/src/lib/netlist/devices/nld_74175.cpp index f8524caeb6d..5955bcb389e 100644 --- a/src/lib/netlist/devices/nld_74175.cpp +++ b/src/lib/netlist/devices/nld_74175.cpp @@ -12,99 +12,65 @@ namespace netlist { namespace devices { - NETLIB_OBJECT(74175_sub) - { - NETLIB_CONSTRUCTOR(74175_sub) - , m_CLK(*this, "CLK") - , m_Q(*this, {{"Q1", "Q2", "Q3", "Q4"}}) - , m_QQ(*this, {{"Q1Q", "Q2Q", "Q3Q", "Q4Q"}}) - , m_clrq(*this, "m_clr", 0) - , m_data(*this, "m_data", 0) - { - } - - NETLIB_RESETI(); - NETLIB_UPDATEI(); - - public: - logic_input_t m_CLK; - object_array_t m_Q; - object_array_t m_QQ; - - state_var m_clrq; - state_var m_data; - }; NETLIB_OBJECT(74175) { NETLIB_CONSTRUCTOR(74175) - , m_sub(*this, "sub") , m_D(*this, {{"D1", "D2", "D3", "D4"}}) , m_CLRQ(*this, "CLRQ") + , m_CLK(*this, "CLK", NETLIB_DELEGATE(74175, clk)) + , m_Q(*this, {{"Q1", "Q2", "Q3", "Q4"}}) + , m_QQ(*this, {{"Q1Q", "Q2Q", "Q3Q", "Q4Q"}}) + , m_data(*this, "m_data", 0) { - register_subalias("CLK", m_sub.m_CLK); - - - register_subalias("Q1", m_sub.m_Q[0]); - register_subalias("Q1Q", m_sub.m_QQ[0]); - - register_subalias("Q2", m_sub.m_Q[1]); - register_subalias("Q2Q", m_sub.m_QQ[1]); - - register_subalias("Q3", m_sub.m_Q[2]); - register_subalias("Q3Q", m_sub.m_QQ[2]); - - register_subalias("Q4", m_sub.m_Q[3]); - register_subalias("Q4Q", m_sub.m_QQ[3]); } NETLIB_RESETI(); NETLIB_UPDATEI(); + NETLIB_HANDLERI(clk); protected: - NETLIB_SUB(74175_sub) m_sub; object_array_t m_D; logic_input_t m_CLRQ; + + logic_input_t m_CLK; + object_array_t m_Q; + object_array_t m_QQ; + + state_var m_data; }; NETLIB_OBJECT_DERIVED(74175_dip, 74175) { NETLIB_CONSTRUCTOR_DERIVED(74175_dip, 74175) { - register_subalias("9", m_sub.m_CLK); + register_subalias("9", m_CLK); register_subalias("1", m_CLRQ); register_subalias("4", m_D[0]); - register_subalias("2", m_sub.m_Q[0]); - register_subalias("3", m_sub.m_QQ[0]); + register_subalias("2", m_Q[0]); + register_subalias("3", m_QQ[0]); register_subalias("5", m_D[1]); - register_subalias("7", m_sub.m_Q[1]); - register_subalias("6", m_sub.m_QQ[1]); + register_subalias("7", m_Q[1]); + register_subalias("6", m_QQ[1]); register_subalias("12", m_D[2]); - register_subalias("10", m_sub.m_Q[2]); - register_subalias("11", m_sub.m_QQ[2]); + register_subalias("10", m_Q[2]); + register_subalias("11", m_QQ[2]); register_subalias("13", m_D[3]); - register_subalias("15", m_sub.m_Q[3]); - register_subalias("14", m_sub.m_QQ[3]); + register_subalias("15", m_Q[3]); + register_subalias("14", m_QQ[3]); } }; - const netlist_time delay[2] = { NLTIME_FROM_NS(25), NLTIME_FROM_NS(25) }; - const netlist_time delay_clear[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) }; + constexpr const netlist_time delay[2] = { NLTIME_FROM_NS(25), NLTIME_FROM_NS(25) }; + constexpr const netlist_time delay_clear[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) }; - NETLIB_RESET(74175_sub) + NETLIB_HANDLER(74175, clk) { - m_CLK.set_state(logic_t::STATE_INP_LH); - m_clrq = 0; - m_data = 0xFF; - } - - NETLIB_UPDATE(74175_sub) - { - if (m_clrq) + if (m_CLRQ()) { for (std::size_t i=0; i<4; i++) { @@ -123,26 +89,26 @@ namespace netlist { d |= (m_D[i]() << i); } - m_sub.m_clrq = m_CLRQ(); - if (!m_sub.m_clrq) + if (!m_CLRQ()) { for (std::size_t i=0; i<4; i++) { - m_sub.m_Q[i].push(0, delay_clear[0]); - m_sub.m_QQ[i].push(1, delay_clear[1]); + m_Q[i].push(0, delay_clear[0]); + m_QQ[i].push(1, delay_clear[1]); } - m_sub.m_data = 0; - } else if (d != m_sub.m_data) + m_data = 0; + } else if (d != m_data) { - m_sub.m_data = d; - m_sub.m_CLK.activate_lh(); + m_data = d; + m_CLK.activate_lh(); } } NETLIB_RESET(74175) { - //m_sub.do_reset(); + m_CLK.set_state(logic_t::STATE_INP_LH); + m_data = 0xFF; } NETLIB_DEVICE_IMPL(74175) diff --git a/src/lib/netlist/devices/nld_74192.cpp b/src/lib/netlist/devices/nld_74192.cpp index 0884ab74880..1af605d4776 100644 --- a/src/lib/netlist/devices/nld_74192.cpp +++ b/src/lib/netlist/devices/nld_74192.cpp @@ -5,8 +5,6 @@ * */ -#define MAXCNT 9 - #include "nld_74192.h" #include "../nl_base.h" @@ -14,6 +12,9 @@ namespace netlist { namespace devices { + + static constexpr const unsigned MAXCNT = 9; + NETLIB_OBJECT(74192_subABCD) { NETLIB_CONSTRUCTOR(74192_subABCD) @@ -109,7 +110,7 @@ namespace netlist } // FIXME: Timing - static const netlist_time delay[4] = + static constexpr netlist_time delay[4] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(40), @@ -133,8 +134,7 @@ namespace netlist { if (m_CD() && !m_last_CU && m_CU()) { - ++m_cnt; - if (m_cnt > MAXCNT) + if (++m_cnt > MAXCNT) m_cnt = 0; } if (m_CU() && !m_last_CD && m_CD()) diff --git a/src/lib/netlist/devices/nld_74193.cpp b/src/lib/netlist/devices/nld_74193.cpp index 9d29175dae9..55d18f3dc1b 100644 --- a/src/lib/netlist/devices/nld_74193.cpp +++ b/src/lib/netlist/devices/nld_74193.cpp @@ -5,8 +5,6 @@ * */ -#define MAXCNT 15 - #include "nld_74193.h" #include "../nl_base.h" @@ -14,6 +12,8 @@ namespace netlist { namespace devices { + static constexpr const unsigned MAXCNT = 15; + NETLIB_OBJECT(74193) { NETLIB_CONSTRUCTOR(74193) @@ -87,7 +87,7 @@ namespace netlist } // FIXME: Timing - static const netlist_time delay[4] = + static constexpr netlist_time delay[4] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(40), @@ -112,9 +112,7 @@ namespace netlist { if (m_CD() && !m_last_CU && m_CU()) { - ++m_cnt; - if (m_cnt > MAXCNT) - m_cnt = 0; + ++m_cnt &= MAXCNT; } if (m_CU() && !m_last_CD && m_CD()) { diff --git a/src/lib/netlist/devices/nld_7448.cpp b/src/lib/netlist/devices/nld_7448.cpp index 9353c758bbc..cc2e60f23b7 100644 --- a/src/lib/netlist/devices/nld_7448.cpp +++ b/src/lib/netlist/devices/nld_7448.cpp @@ -38,7 +38,6 @@ namespace netlist public: void update_outputs(unsigned v); - static const uint_fast8_t tab7448[16][7]; logic_input_t m_A; logic_input_t m_B; @@ -134,6 +133,28 @@ namespace netlist #else +#define BITS7(b6,b5,b4,b3,b2,b1,b0) (b6<<6) | (b5<<5) | (b4<<4) | (b3<<3) | (b2<<2) | (b1<<1) | (b0<<0) + + static constexpr uint8_t tab7448[16] = + { + BITS7( 1, 1, 1, 1, 1, 1, 0 ), /* 00 - not blanked ! */ + BITS7( 0, 1, 1, 0, 0, 0, 0 ), /* 01 */ + BITS7( 1, 1, 0, 1, 1, 0, 1 ), /* 02 */ + BITS7( 1, 1, 1, 1, 0, 0, 1 ), /* 03 */ + BITS7( 0, 1, 1, 0, 0, 1, 1 ), /* 04 */ + BITS7( 1, 0, 1, 1, 0, 1, 1 ), /* 05 */ + BITS7( 0, 0, 1, 1, 1, 1, 1 ), /* 06 */ + BITS7( 1, 1, 1, 0, 0, 0, 0 ), /* 07 */ + BITS7( 1, 1, 1, 1, 1, 1, 1 ), /* 08 */ + BITS7( 1, 1, 1, 0, 0, 1, 1 ), /* 09 */ + BITS7( 0, 0, 0, 1, 1, 0, 1 ), /* 10 */ + BITS7( 0, 0, 1, 1, 0, 0, 1 ), /* 11 */ + BITS7( 0, 1, 0, 0, 0, 1, 1 ), /* 12 */ + BITS7( 1, 0, 0, 1, 0, 1, 1 ), /* 13 */ + BITS7( 0, 0, 0, 1, 1, 1, 1 ), /* 14 */ + BITS7( 0, 0, 0, 0, 0, 0, 0 ), /* 15 */ + }; + NETLIB_UPDATE(7448) { if (!m_BIQ() || (m_BIQ() && !m_LTQ())) @@ -157,9 +178,7 @@ namespace netlist m_C.activate(); m_B.activate(); m_A.activate(); - unsigned v; - - v = (m_A() << 0) | (m_B() << 1) | (m_C() << 2) | (m_D() << 3); + unsigned v = (m_A() << 0) | (m_B() << 1) | (m_C() << 2) | (m_D() << 3); if ((!m_RBIQ() && (v==0))) v = 15; update_outputs(v); @@ -183,31 +202,13 @@ namespace netlist { // max transfer time is 100 NS */ - for (std::size_t i=0; i<7; i++) - m_Q[i].push(tab7448[v][i], NLTIME_FROM_NS(100)); + uint8_t t = tab7448[v]; + for (std::size_t i = 0; i < 7; i++) + m_Q[i].push((t >> (6-i)) & 1, NLTIME_FROM_NS(100)); m_state = v; } } - const uint_fast8_t NETLIB_NAME(7448)::tab7448[16][7] = - { - { 1, 1, 1, 1, 1, 1, 0 }, /* 00 - not blanked ! */ - { 0, 1, 1, 0, 0, 0, 0 }, /* 01 */ - { 1, 1, 0, 1, 1, 0, 1 }, /* 02 */ - { 1, 1, 1, 1, 0, 0, 1 }, /* 03 */ - { 0, 1, 1, 0, 0, 1, 1 }, /* 04 */ - { 1, 0, 1, 1, 0, 1, 1 }, /* 05 */ - { 0, 0, 1, 1, 1, 1, 1 }, /* 06 */ - { 1, 1, 1, 0, 0, 0, 0 }, /* 07 */ - { 1, 1, 1, 1, 1, 1, 1 }, /* 08 */ - { 1, 1, 1, 0, 0, 1, 1 }, /* 09 */ - { 0, 0, 0, 1, 1, 0, 1 }, /* 10 */ - { 0, 0, 1, 1, 0, 0, 1 }, /* 11 */ - { 0, 1, 0, 0, 0, 1, 1 }, /* 12 */ - { 1, 0, 0, 1, 0, 1, 1 }, /* 13 */ - { 0, 0, 0, 1, 1, 1, 1 }, /* 14 */ - { 0, 0, 0, 0, 0, 0, 0 }, /* 15 */ - }; #endif NETLIB_DEVICE_IMPL(7448) diff --git a/src/lib/netlist/devices/nld_7490.cpp b/src/lib/netlist/devices/nld_7490.cpp index 7c547f05dbd..13e69c6aa31 100644 --- a/src/lib/netlist/devices/nld_7490.cpp +++ b/src/lib/netlist/devices/nld_7490.cpp @@ -78,7 +78,7 @@ namespace netlist m_last_B = 0; } - static const netlist_time delay[4] = + static C14CONSTEXPR const netlist_time delay[4] = { NLTIME_FROM_NS(18), NLTIME_FROM_NS(36) - NLTIME_FROM_NS(18), diff --git a/src/lib/netlist/devices/nld_7493.cpp b/src/lib/netlist/devices/nld_7493.cpp index bc6989d5cb5..78b75e9e326 100644 --- a/src/lib/netlist/devices/nld_7493.cpp +++ b/src/lib/netlist/devices/nld_7493.cpp @@ -51,7 +51,7 @@ namespace netlist { if (m_reset) { - m_bcd = (m_bcd + 1) & 0x07; + ++m_bcd &= static_cast(0x07); m_QD.push((m_bcd >> 2) & 1, out_delay3); m_QC.push((m_bcd >> 1) & 1, out_delay2); m_QB.push(m_bcd & 1, out_delay); @@ -69,9 +69,9 @@ namespace netlist logic_output_t m_QC; logic_output_t m_QD; - state_var m_reset; - state_var m_a; - state_var_u8 m_bcd; + state_var_sig m_reset; + state_var_sig m_a; + state_var_sig m_bcd; }; NETLIB_OBJECT_DERIVED(7493_dip, 7493) diff --git a/src/lib/netlist/devices/nld_9310.cpp b/src/lib/netlist/devices/nld_9310.cpp index 0c45f6dde51..ad752adb605 100644 --- a/src/lib/netlist/devices/nld_9310.cpp +++ b/src/lib/netlist/devices/nld_9310.cpp @@ -180,8 +180,8 @@ namespace netlist else { m_cnt = m_ABCD->read_ABCD(); - update_outputs_all(m_cnt, NLTIME_FROM_NS(22)); m_RC.push(m_ent & (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); + update_outputs_all(m_cnt, NLTIME_FROM_NS(22)); } } diff --git a/src/lib/netlist/devices/nld_9316.cpp b/src/lib/netlist/devices/nld_9316.cpp index 61ae427a2a8..943fc85aaee 100644 --- a/src/lib/netlist/devices/nld_9316.cpp +++ b/src/lib/netlist/devices/nld_9316.cpp @@ -8,68 +8,63 @@ #include "nld_9316.h" #include "../nl_base.h" -#define MAXCNT 15 - namespace netlist { namespace devices { + static constexpr const unsigned MAXCNT = 15; + NETLIB_OBJECT(9316) { NETLIB_CONSTRUCTOR(9316) - , m_CLK(*this, "CLK", NETLIB_DELEGATE(9316, clk)) , m_cnt(*this, "m_cnt", 0) - , m_ENP(*this, "ENP") + , m_CLK(*this, "CLK", NETLIB_DELEGATE(9316, clk)) , m_ENT(*this, "ENT") - , m_CLRQ(*this, "CLRQ") , m_LOADQ(*this, "LOADQ") + , m_ENP(*this, "ENP") + , m_CLRQ(*this, "CLRQ") , m_A(*this, "A", NETLIB_DELEGATE(9316, noop)) , m_B(*this, "B", NETLIB_DELEGATE(9316, noop)) , m_C(*this, "C", NETLIB_DELEGATE(9316, noop)) , m_D(*this, "D", NETLIB_DELEGATE(9316, noop)) - , m_QA(*this, "QA") - , m_QB(*this, "QB") - , m_QC(*this, "QC") - , m_QD(*this, "QD") + , m_Q(*this, {{ "QA", "QB", "QC", "QD" }}) , m_RC(*this, "RC") { } + private: NETLIB_RESETI(); NETLIB_UPDATEI(); NETLIB_HANDLERI(clk); NETLIB_HANDLERI(noop) { } - protected: + state_var m_cnt; logic_input_t m_CLK; - state_var m_cnt; + logic_input_t m_ENT; + logic_input_t m_LOADQ; logic_input_t m_ENP; - logic_input_t m_ENT; logic_input_t m_CLRQ; - logic_input_t m_LOADQ; logic_input_t m_A; logic_input_t m_B; logic_input_t m_C; logic_input_t m_D; - logic_output_t m_QA; - logic_output_t m_QB; - logic_output_t m_QC; - logic_output_t m_QD; + object_array_t m_Q; logic_output_t m_RC; private: - void update_outputs_all(const unsigned &cnt, const netlist_time &out_delay) + //inline void update_outputs_all(const unsigned &cnt, const netlist_time &out_delay) noexcept + inline void update_outputs_all(const unsigned &cnt, const netlist_time &out_delay) noexcept { - m_QA.push((cnt >> 0) & 1, out_delay); - m_QB.push((cnt >> 1) & 1, out_delay); - m_QC.push((cnt >> 2) & 1, out_delay); - m_QD.push((cnt >> 3) & 1, out_delay); + m_Q[0].push((cnt >> 0) & 1, out_delay); + m_Q[1].push((cnt >> 1) & 1, out_delay); + m_Q[2].push((cnt >> 2) & 1, out_delay); + m_Q[3].push((cnt >> 3) & 1, out_delay); } }; @@ -77,22 +72,22 @@ namespace netlist { NETLIB_CONSTRUCTOR_DERIVED(9316_dip, 9316) { - register_subalias("1", m_CLRQ); - register_subalias("2", m_CLK); - register_subalias("3", m_A); - register_subalias("4", m_B); - register_subalias("5", m_C); - register_subalias("6", m_D); - register_subalias("7", m_ENP); - // register_subalias("8", ); -. GND - - register_subalias("9", m_LOADQ); - register_subalias("10", m_ENT); - register_subalias("11", m_QD); - register_subalias("12", m_QC); - register_subalias("13", m_QB); - register_subalias("14", m_QA); - register_subalias("15", m_RC); + register_subalias("1", "CLRQ"); + register_subalias("2", "CLK"); + register_subalias("3", "A"); + register_subalias("4", "B"); + register_subalias("5", "C"); + register_subalias("6", "D"); + register_subalias("7", "ENP"); + // register_subalias("8", "); -. GND + + register_subalias("9", "LOADQ"); + register_subalias("10", "ENT"); + register_subalias("11", "QD"); + register_subalias("12", "QC"); + register_subalias("13", "QB"); + register_subalias("14", "QA"); + register_subalias("15", "RC"); // register_subalias("16", ); -. VCC } }; @@ -107,37 +102,48 @@ namespace netlist { if (m_LOADQ()) { - m_cnt = (m_cnt < MAXCNT ? m_cnt + 1 : 0); - update_outputs_all(m_cnt, NLTIME_FROM_NS(20)); - m_RC.push(m_ENT() & (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); + ++m_cnt &= MAXCNT; + //m_RC.push(m_ENT() && (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); + if (m_cnt == MAXCNT) + { + m_RC.push(m_ENT(), NLTIME_FROM_NS(27)); + update_outputs_all(MAXCNT, NLTIME_FROM_NS(20)); + } + else if (m_cnt == 0) + { + m_RC.push(0, NLTIME_FROM_NS(27)); + update_outputs_all(0, NLTIME_FROM_NS(20)); + } + else + update_outputs_all(m_cnt, NLTIME_FROM_NS(20)); } else { m_cnt = (m_D() << 3) | (m_C() << 2) | (m_B() << 1) | (m_A() << 0); - m_RC.push(m_ENT() & (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); + m_RC.push(m_ENT() && (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); update_outputs_all(m_cnt, NLTIME_FROM_NS(22)); } } NETLIB_UPDATE(9316) { - const netlist_sig_t clrq = m_CLRQ(); + const netlist_sig_t CLRQ(m_CLRQ()); + const netlist_sig_t ENT(m_ENT()); - if (((m_LOADQ() ^ 1) | (m_ENT() & m_ENP())) & clrq) + if (((m_LOADQ() ^ 1) || (ENT && m_ENP())) && CLRQ) { m_CLK.activate_lh(); - m_RC.push(m_ENT() & (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); } else { m_CLK.inactivate(); - if (!clrq && (m_cnt>0)) + if (!CLRQ && (m_cnt>0)) { - update_outputs_all(0, NLTIME_FROM_NS(36)); m_cnt = 0; + update_outputs_all(m_cnt, NLTIME_FROM_NS(36)); } - m_RC.push(m_ENT() & (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); } + m_RC.push(ENT && (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); } diff --git a/src/lib/netlist/devices/nld_log.cpp b/src/lib/netlist/devices/nld_log.cpp index 256e42ac80d..29218aaa09a 100644 --- a/src/lib/netlist/devices/nld_log.cpp +++ b/src/lib/netlist/devices/nld_log.cpp @@ -27,7 +27,7 @@ namespace netlist NETLIB_UPDATEI() { /* use pstring::sprintf, it is a LOT faster */ - m_writer.writeline(plib::pfmt("{1} {2}").e(netlist().time().as_double(),".9").e(static_cast(m_I()))); + m_writer.writeline(plib::pfmt("{1:.9} {2}").e(netlist().time().as_double()).e(static_cast(m_I()))); } NETLIB_RESETI() { } @@ -46,7 +46,7 @@ namespace netlist NETLIB_UPDATEI() { - m_writer.writeline(plib::pfmt("{1} {2}").e(netlist().time().as_double(),".9").e(static_cast(m_I() - m_I2()))); + m_writer.writeline(plib::pfmt("{1:.9} {2}").e(netlist().time().as_double()).e(static_cast(m_I() - m_I2()))); } NETLIB_RESETI() { } diff --git a/src/lib/netlist/devices/nld_mm5837.cpp b/src/lib/netlist/devices/nld_mm5837.cpp index 1b57b9c8ece..e97ae41e437 100644 --- a/src/lib/netlist/devices/nld_mm5837.cpp +++ b/src/lib/netlist/devices/nld_mm5837.cpp @@ -72,7 +72,7 @@ namespace netlist m_RV.set(NL_FCONST(1.0) / R_LOW, 0.0, 0.0); m_inc = netlist_time::from_double(1.0 / m_FREQ()); if (m_FREQ() < 24000 || m_FREQ() > 56000) - log().warning(MW_1_FREQUENCY_OUTSIDE_OF_SPECS_1, m_FREQ()); + log().warning(MW_1_FREQUENCY_OUTSIDE_OF_SPECS_1, m_FREQ()); m_shift = 0x1ffff; m_is_timestep = m_RV.m_P.net().solver()->is_timestep(); @@ -82,7 +82,7 @@ namespace netlist { m_inc = netlist_time::from_double(1.0 / m_FREQ()); if (m_FREQ() < 24000 || m_FREQ() > 56000) - log().warning(MW_1_FREQUENCY_OUTSIDE_OF_SPECS_1, m_FREQ()); + log().warning(MW_1_FREQUENCY_OUTSIDE_OF_SPECS_1, m_FREQ()); } NETLIB_UPDATE(MM5837_dip) diff --git a/src/lib/netlist/devices/nld_system.cpp b/src/lib/netlist/devices/nld_system.cpp index aaa181911ba..98793c657d2 100644 --- a/src/lib/netlist/devices/nld_system.cpp +++ b/src/lib/netlist/devices/nld_system.cpp @@ -46,8 +46,9 @@ namespace netlist NETLIB_UPDATE(extclock) { m_Q.push((m_cnt & 1) ^ 1, m_inc[m_cnt] + m_off); - m_cnt = (m_cnt + 1) % m_size; m_off = netlist_time::zero(); + if (++m_cnt >= m_size) + m_cnt = 0; } // ---------------------------------------------------------------------------------------- diff --git a/src/lib/netlist/devices/nlid_system.h b/src/lib/netlist/devices/nlid_system.h index a04b49c2440..92fb91d627c 100644 --- a/src/lib/netlist/devices/nlid_system.h +++ b/src/lib/netlist/devices/nlid_system.h @@ -155,7 +155,7 @@ namespace netlist logic_input_t m_feedback; logic_output_t m_Q; - state_var m_cnt; + state_var_u8 m_cnt; std::uint8_t m_size; state_var m_off; netlist_time m_inc[32]; diff --git a/src/lib/netlist/devices/nlid_truthtable.cpp b/src/lib/netlist/devices/nlid_truthtable.cpp index fc07d3829c5..bf7d03fe3d7 100644 --- a/src/lib/netlist/devices/nlid_truthtable.cpp +++ b/src/lib/netlist/devices/nlid_truthtable.cpp @@ -122,7 +122,7 @@ namespace netlist } } - uint_least64_t mask() const { return (static_cast(1) << m_size) - 1; } + uint_least64_t mask() const { return static_cast(-1); } private: void *m_data; @@ -140,7 +140,7 @@ namespace netlist { } - void parse(const std::vector &desc, uint_least64_t disabled_ignore); + void parse(const std::vector &desc); private: void parseline(unsigned cur, std::vector list, @@ -209,11 +209,12 @@ namespace netlist m_ign = 0; - truthtable_parser desc_s(m_NO, m_NI, &m_ttp->m_initialized, - packed_int(m_ttp->m_outs, sizeof(m_ttp->m_outs[0]) * 8), - m_ttp->m_timing, m_ttp->m_timing_nt); - - desc_s.parse(desc, disabled_ignore * 0); +#if 0 + for (size_t i=0; i Create(netlist_t &anetlist, const pstring &name) override { typedef nld_truthtable_t tt_type; - return plib::owned_ptr::Create(anetlist, name, m_family, &m_ttbl, m_desc); + truthtable_parser desc_s(m_NO, m_NI, &m_ttbl.m_initialized, + packed_int(m_ttbl.m_outs, sizeof(m_ttbl.m_outs[0]) * 8), + m_ttbl.m_timing, m_ttbl.m_timing_nt); + + desc_s.parse(m_desc); + return plib::owned_ptr::Create(anetlist, name, m_family, m_ttbl, m_desc); } private: typename nld_truthtable_t::truthtable_t m_ttbl; @@ -347,8 +353,8 @@ void truthtable_parser::parseline(unsigned cur, std::vector list, { // cutoff previous inputs and outputs for ignore if (m_outs[nstate] != m_outs.mask() && m_outs[nstate] != val) - nl_exception(plib::pfmt("Error in truthtable: State {1} already set, {2} != {3}\n") - .x(nstate.as_uint(),"04")(m_outs[nstate])(val) ); + nl_exception(plib::pfmt("Error in truthtable: State {1:04} already set, {2} != {3}\n") + .x(nstate.as_uint())(m_outs[nstate])(val) ); m_outs.set(nstate, val); for (std::size_t j=0; j list, } } -void truthtable_parser::parse(const std::vector &truthtable, uint_least64_t disabled_ignore) +void truthtable_parser::parse(const std::vector &truthtable) { unsigned line = 0; @@ -446,7 +452,7 @@ void truthtable_parser::parse(const std::vector &truthtable, uint_least { if (m_outs[i] == m_outs.mask()) throw nl_exception(plib::pfmt("truthtable: found element not set {1}\n").x(i) ); - m_outs.set(i, m_outs[i] | ((ign[i] & ~disabled_ignore) << m_NO));; + m_outs.set(i, m_outs[i] | (ign[i] << m_NO));; } *m_initialized = true; diff --git a/src/lib/netlist/devices/nlid_truthtable.h b/src/lib/netlist/devices/nlid_truthtable.h index 1eeef1a6386..311f5ebd8ca 100644 --- a/src/lib/netlist/devices/nlid_truthtable.h +++ b/src/lib/netlist/devices/nlid_truthtable.h @@ -14,16 +14,16 @@ #include "../nl_base.h" #include "../plib/putil.h" -#define NETLIB_TRUTHTABLE(cname, nIN, nOUT) \ - class NETLIB_NAME(cname) : public nld_truthtable_t \ - { \ - public: \ - template \ - NETLIB_NAME(cname)(C &owner, const pstring &name) \ +#define NETLIB_TRUTHTABLE(cname, nIN, nOUT) \ + class NETLIB_NAME(cname) : public nld_truthtable_t \ + { \ + public: \ + template \ + NETLIB_NAME(cname)(C &owner, const pstring &name) \ : nld_truthtable_t(owner, name, family_TTL(), &m_ttbl, m_desc) { } \ - private: \ - static truthtable_t m_ttbl; \ - static std::vector m_desc; \ + private: \ + static truthtable_t m_ttbl; \ + static std::vector m_desc; \ } @@ -32,22 +32,31 @@ namespace netlist namespace devices { +#if 0 + template struct uint_for_size { typedef uint_least32_t type; }; + template + struct need_bytes_for_bits + { + enum { value = 4 }; + }; +#else template struct need_bytes_for_bits { enum { value = - bits <= 8 ? 1 : - bits <= 16 ? 2 : - bits <= 32 ? 4 : - 8 + bits <= 8 ? 1 : + bits <= 16 ? 2 : + bits <= 32 ? 4 : + 8 }; }; template struct uint_for_size; - template<> struct uint_for_size<1> { typedef uint_least8_t type; }; + template<> struct uint_for_size<1> { typedef uint_least8_t type; }; template<> struct uint_for_size<2> { typedef uint_least16_t type; }; template<> struct uint_for_size<4> { typedef uint_least32_t type; }; template<> struct uint_for_size<8> { typedef uint_least64_t type; }; +#endif template NETLIB_OBJECT(truthtable_t) @@ -58,9 +67,10 @@ namespace netlist typedef typename uint_for_size::value>::type type_t; - static constexpr std::size_t m_num_bits = m_NI; - static constexpr std::size_t m_size = (1 << (m_num_bits)); - static constexpr type_t m_outmask = ((1 << m_NO) - 1); + static constexpr const std::size_t m_num_bits = m_NI; + static constexpr const std::size_t m_size = (1 << (m_num_bits)); + static constexpr const type_t m_outmask = ((1 << m_NO) - 1); + static constexpr const std::size_t m_min_devices_for_deactivate = 2; struct truthtable_t { @@ -74,8 +84,9 @@ namespace netlist }; template - nld_truthtable_t(C &owner, const pstring &name, const logic_family_desc_t *fam, - truthtable_t *ttp, const std::vector &desc) + nld_truthtable_t(C &owner, const pstring &name, + const logic_family_desc_t *fam, + truthtable_t &ttp, const std::vector &desc) : device_t(owner, name) , m_fam(*this, fam) , m_ign(*this, "m_ign", 0) @@ -91,10 +102,10 @@ namespace netlist { m_active = 0; m_ign = 0; - for (std::size_t i = 0; i < m_NI; i++) - m_I[i].activate(); - for (std::size_t i=0; im_Q[i].has_net() && this->m_Q[i].net().num_cons()>0) + for (auto &i : m_I) + i.activate(); + for (auto &q : m_Q) + if (q.has_net() && q.net().num_cons() > 0) m_active++; } @@ -105,7 +116,7 @@ namespace netlist void inc_active() NL_NOEXCEPT override { - if (m_NI > 1) + if (m_NI >= m_min_devices_for_deactivate) if (++m_active == 1) { process(); @@ -120,7 +131,7 @@ namespace netlist * can decide for each individual gate whether it is beneficial to * ignore deactivation. */ - if (m_NI > 1) + if (m_NI >= m_min_devices_for_deactivate) if (--m_active == 0) { for (std::size_t i = 0; i< m_NI; i++) @@ -137,19 +148,19 @@ namespace netlist private: template - inline void process() + void process() { - netlist_time mt = netlist_time::zero(); + netlist_time mt(netlist_time::zero()); - type_t nstate = 0; - if (m_NI > 1) + type_t nstate(0); + if (m_NI >= m_min_devices_for_deactivate) { - type_t ign = m_ign; + type_t ign(m_ign); if (!doOUT) for (std::size_t i = 0; i < m_NI; i++) { m_I[i].activate(); - nstate |= (m_I[i]() << i); + nstate |= (m_I[i]() ? (1 << i) : 0); mt = std::max(this->m_I[i].net().time(), mt); } else @@ -157,42 +168,40 @@ namespace netlist { if ((ign & 1)) m_I[i].activate(); - nstate |= (m_I[i]() << i); + nstate |= (m_I[i]() ? (1 << i) : 0); ign >>= 1; } } else { if (!doOUT) - { - nstate |= m_I[0](); - mt = std::max(this->m_I[0].net().time(), mt); - } + for (std::size_t i = 0; i < m_NI; i++) + { + nstate |= (m_I[i]() ? (1 << i) : 0); + mt = std::max(this->m_I[i].net().time(), mt); + } else - nstate |= m_I[0](); + for (std::size_t i = 0; i < m_NI; i++) + nstate |= (m_I[i]() ? (1 << i) : 0); } - const type_t outstate = m_ttp->m_outs[nstate]; - type_t out = outstate & m_outmask; + const type_t outstate(m_ttp.m_outs[nstate]); + type_t out(outstate & m_outmask); m_ign = outstate >> m_NO; - const std::size_t timebase = nstate * m_NO; + const std::size_t timebase(nstate * m_NO); + const auto *t(&m_ttp.m_timing[timebase]); + const auto *tim = m_ttp.m_timing_nt; if (doOUT) - { - auto *t = &m_ttp->m_timing[timebase]; - for (std::size_t i = 0; i < m_NO; ++i) - m_Q[i].push((out >> i) & 1, m_ttp->m_timing_nt[t[i]]); - } + for (std::size_t i = 0; i < m_NO; out >>= 1, ++i) + m_Q[i].push(out & 1, tim[t[i]]); else - { - auto *t = &m_ttp->m_timing[timebase]; - for (std::size_t i = 0; i < m_NO; ++i) - m_Q[i].set_Q_time((out >> i) & 1, mt + m_ttp->m_timing_nt[t[i]]); - } + for (std::size_t i = 0; i < m_NO; out >>= 1, ++i) + m_Q[i].set_Q_time(out & 1, mt + tim[t[i]]); - if (m_NI > 1) + if (m_NI >= m_min_devices_for_deactivate) { type_t ign(m_ign); for (auto I = m_I.begin(); ign != 0; ign >>= 1, ++I) @@ -204,7 +213,7 @@ namespace netlist /* FIXME: check width */ state_var m_ign; state_var_s32 m_active; - truthtable_t * m_ttp; + const truthtable_t &m_ttp; }; class netlist_base_factory_truthtable_t : public factory::element_t diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index 7d91c57c7c0..75e448427e7 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -193,7 +193,7 @@ void detail::queue_t::on_post_load() // ---------------------------------------------------------------------------------------- detail::object_t::object_t(const pstring &aname) - : m_name(aname) + : m_name(plib::make_unique(aname)) { } @@ -203,7 +203,7 @@ detail::object_t::~object_t() const pstring &detail::object_t::name() const { - return m_name; + return *m_name; } // ---------------------------------------------------------------------------------------- @@ -246,7 +246,7 @@ netlist_t::netlist_t(const pstring &aname) , m_solver(nullptr) , m_params(nullptr) , m_name(aname) - , m_log(this) + , m_log(*this) , m_lib(nullptr) , m_state() { @@ -261,11 +261,9 @@ netlist_t::~netlist_t() { m_nets.clear(); m_devices.clear(); - - pstring::resetmem(); } -nl_double netlist_t::gmin() const +nl_double netlist_t::gmin() const NL_NOEXCEPT { return solver()->gmin(); } @@ -551,8 +549,8 @@ void netlist_t::process_queue(const netlist_time &delta) NL_NOEXCEPT } else { - logic_net_t &mc_net = m_mainclock->m_Q.net(); - const netlist_time inc = m_mainclock->m_inc; + logic_net_t &mc_net(m_mainclock->m_Q.net()); + const netlist_time inc(m_mainclock->m_inc); netlist_time mc_time(mc_net.time()); detail::queue_t::entry_t e; @@ -641,7 +639,7 @@ void netlist_t::print_stats() const } } -core_device_t *netlist_t::get_single_device(const pstring &classname, bool (*cc)(core_device_t *)) +core_device_t *netlist_t::get_single_device(const pstring &classname, bool (*cc)(core_device_t *)) const { core_device_t *ret = nullptr; for (auto &d : m_devices) @@ -694,7 +692,7 @@ void core_device_t::set_default_delegate(detail::core_terminal_t &term) term.m_delegate.set(&core_device_t::update, this); } -plib::plog_base &core_device_t::log() +plib::plog_base &core_device_t::log() { return netlist().log(); } @@ -784,9 +782,8 @@ detail::net_t::net_t(netlist_t &nl, const pstring &aname, core_terminal_t *mr) , m_new_Q(*this, "m_new_Q", 0) , m_cur_Q (*this, "m_cur_Q", 0) , m_in_queue(*this, "m_in_queue", QS_DELIVERED) - , m_time(*this, "m_time", netlist_time::zero()) , m_active(*this, "m_active", 0) - , m_cur_Analog(*this, "m_cur_Analog", 0.0) + , m_time(*this, "m_time", netlist_time::zero()) , m_railterminal(mr) { } @@ -798,8 +795,8 @@ detail::net_t::~net_t() void detail::net_t::inc_active(core_terminal_t &term) NL_NOEXCEPT { - ++m_active; m_list_active.push_front(&term); + ++m_active; nl_assert(m_active <= static_cast(num_cons())); if (m_active == 1) { @@ -809,7 +806,7 @@ void detail::net_t::inc_active(core_terminal_t &term) NL_NOEXCEPT if (m_time > netlist().time()) { m_in_queue = QS_QUEUED; /* pending */ - netlist().queue().push(queue_t::entry_t(m_time, this)); + netlist().queue().push({m_time, this}); } else { @@ -844,27 +841,12 @@ void detail::net_t::rebuild_list() m_active = cnt; } -void detail::net_t::update_devs() NL_NOEXCEPT +void detail::net_t::process(unsigned Mask) { - nl_assert(this->isRailNet()); - - const uint8_t masks[4] = - { - 0, - core_terminal_t::STATE_INP_LH | core_terminal_t::STATE_INP_ACTIVE, - core_terminal_t::STATE_INP_HL | core_terminal_t::STATE_INP_ACTIVE, - 0 - }; - - const auto mask = masks[ (m_cur_Q << 1) | m_new_Q ]; - - m_cur_Q = m_new_Q; - m_in_queue = QS_DELIVERED; /* mark as taken ... */ - for (auto & p : m_list_active) { p.device().m_stat_call_count.inc(); - if ((p.state() & mask) != 0) + if ((p.state() & Mask) != 0) { p.device().m_stat_total_time.start(); p.m_delegate(); @@ -873,6 +855,30 @@ void detail::net_t::update_devs() NL_NOEXCEPT } } +void detail::net_t::update_devs() NL_NOEXCEPT +{ + nl_assert(this->isRailNet()); + + const unsigned mask((m_new_Q << core_terminal_t::INP_LH_SHIFT) + | (m_cur_Q<(this); + + if (p != nullptr) + p->m_cur_Analog = 0.0; /* rebuild m_list */ @@ -953,6 +963,7 @@ logic_net_t::~logic_net_t() analog_net_t::analog_net_t(netlist_t &nl, const pstring &aname, detail::core_terminal_t *mr) : net_t(nl, aname, mr) + , m_cur_Analog(*this, "m_cur_Analog", 0.0) , m_solver(nullptr) { } @@ -1206,11 +1217,7 @@ param_double_t::param_double_t(device_t &device, const pstring &name, const doub m_param = device.setup().get_initial_param_val(this->name(),val); netlist().save(*this, m_param, "m_param"); } -#if 0 -param_double_t::~param_double_t() -{ -} -#endif + param_int_t::param_int_t(device_t &device, const pstring &name, const int val) : param_t(device, name) { @@ -1218,12 +1225,6 @@ param_int_t::param_int_t(device_t &device, const pstring &name, const int val) netlist().save(*this, m_param, "m_param"); } -#if 0 -param_int_t::~param_int_t() -{ -} -#endif - param_logic_t::param_logic_t(device_t &device, const pstring &name, const bool val) : param_t(device, name) { @@ -1231,12 +1232,6 @@ param_logic_t::param_logic_t(device_t &device, const pstring &name, const bool v netlist().save(*this, m_param, "m_param"); } -#if 0 -param_logic_t::~param_logic_t() -{ -} -#endif - param_ptr_t::param_ptr_t(device_t &device, const pstring &name, uint8_t * val) : param_t(device, name) { @@ -1244,12 +1239,6 @@ param_ptr_t::param_ptr_t(device_t &device, const pstring &name, uint8_t * val) //netlist().save(*this, m_param, "m_param"); } -#if 0 -param_ptr_t::~param_ptr_t() -{ -} -#endif - void param_model_t::changed() { netlist().log().fatal(MF_1_MODEL_1_CAN_NOT_BE_CHANGED_AT_RUNTIME, name()); diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index 9b6b0fbaf7b..7afed824630 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -171,16 +171,16 @@ class NETLIB_NAME(name) : public device_t #endif #define nl_assert_always(x, msg) do { if (!(x)) throw nl_exception(plib::pfmt("Fatal error: {1}\nCaused by assert: {2}:{3}: {4}")(msg)(__FILE__)(__LINE__)(#x)); } while (0) -// ----------------------------------------------------------------------------- -// forward definitions -// ----------------------------------------------------------------------------- - //============================================================ // Namespace starts //============================================================ namespace netlist { + // ----------------------------------------------------------------------------- + // forward definitions + // ----------------------------------------------------------------------------- + namespace devices { class matrix_solver_t; @@ -203,6 +203,16 @@ namespace netlist class net_t; } + class logic_output_t; + class logic_input_t; + class analog_net_t; + class logic_net_t; + class net_t; + class setup_t; + class netlist_t; + class core_device_t; + class device_t; + //============================================================ // Exceptions //============================================================ @@ -224,16 +234,6 @@ namespace netlist virtual ~nl_exception(); }; - class logic_output_t; - class logic_input_t; - class analog_net_t; - class logic_net_t; - class net_t; - class setup_t; - class netlist_t; - class core_device_t; - class device_t; - /*! Logic families descriptors are used to create proxy devices. * The logic family describes the analog capabilities of logic devices, * inputs and outputs. @@ -318,23 +318,24 @@ namespace netlist const T &value //!< Initial value after construction ); //! Copy Constructor. - state_var(const state_var &rhs) NL_NOEXCEPT = default; + constexpr state_var(const state_var &rhs) noexcept = default; //! Move Constructor. - state_var(state_var &&rhs) NL_NOEXCEPT { std::swap(m_value, rhs.m_value); } + constexpr state_var(state_var &&rhs) noexcept = default; //! Assignment operator to assign value of a state var. - state_var &operator=(const state_var &rhs) NL_NOEXCEPT { m_value = rhs.m_value; return *this; } + C14CONSTEXPR state_var &operator=(const state_var &rhs) noexcept = default; //! Assignment move operator to assign value of a state var. - state_var &operator=(state_var &&rhs) NL_NOEXCEPT { std::swap(m_value, rhs.m_value); return *this; } + C14CONSTEXPR state_var &operator=(state_var &&rhs) noexcept = default; //! Assignment operator to assign value of type T. - state_var &operator=(const T &rhs) NL_NOEXCEPT { m_value = rhs; return *this; } + C14CONSTEXPR state_var &operator=(const T &rhs) noexcept { m_value = rhs; return *this; } //! Assignment move operator to assign value of type T. - state_var &operator=(T &&rhs) NL_NOEXCEPT { std::swap(m_value, rhs); return *this; } + C14CONSTEXPR state_var &operator=(T &&rhs) noexcept { std::swap(m_value, rhs); return *this; } //! Return value of state variable. - operator T & () NL_NOEXCEPT { return m_value; } + C14CONSTEXPR operator T & () noexcept { return m_value; } //! Return const value of state variable. - constexpr operator const T & () const NL_NOEXCEPT { return m_value; } - T * ptr() NL_NOEXCEPT { return &m_value; } - constexpr T * ptr() const NL_NOEXCEPT{ return &m_value; } + constexpr operator const T & () const noexcept { return m_value; } + C14CONSTEXPR T * ptr() noexcept { return &m_value; } + constexpr const T * ptr() const noexcept{ return &m_value; } + private: T m_value; }; @@ -357,7 +358,7 @@ namespace netlist state_var(const state_var &rhs) NL_NOEXCEPT = default; //! Move Constructor. state_var(state_var &&rhs) NL_NOEXCEPT = default; - state_var &operator=(const state_var &rhs) NL_NOEXCEPT { m_value = rhs.m_value; return *this; } + state_var &operator=(const state_var &rhs) NL_NOEXCEPT = default; state_var &operator=(const T &rhs) NL_NOEXCEPT { m_value = rhs; return *this; } T & operator[](const std::size_t i) NL_NOEXCEPT { return m_value[i]; } constexpr T & operator[](const std::size_t i) const NL_NOEXCEPT { return m_value[i]; } @@ -378,6 +379,8 @@ namespace netlist using state_var_u32 = state_var; /*! predefined state variable type for int32_t */ using state_var_s32 = state_var; + /*! predefined state variable type for sig_t */ + using state_var_sig = state_var; // ----------------------------------------------------------------------------- // object_t @@ -414,18 +417,18 @@ namespace netlist ~object_t(); // only childs should be destructible private: - pstring m_name; + std::unique_ptr m_name; }; struct detail::netlist_ref { - explicit netlist_ref(netlist_t &nl) : m_netlist(nl) { } + explicit constexpr netlist_ref(netlist_t &nl) : m_netlist(nl) { } - netlist_t & netlist() NL_NOEXCEPT { return m_netlist; } - const netlist_t & netlist() const NL_NOEXCEPT { return m_netlist; } + C14CONSTEXPR netlist_t & netlist() NL_NOEXCEPT { return m_netlist; } + constexpr const netlist_t & netlist() const NL_NOEXCEPT { return m_netlist; } protected: - ~netlist_ref() {} // prohibit polymorphic destruction + ~netlist_ref() = default; // prohibit polymorphic destruction private: netlist_t & m_netlist; @@ -450,16 +453,18 @@ namespace netlist * \param name string holding the name of the device */ device_object_t(core_device_t &dev, const pstring &name); + /*! returns reference to owning device. * \returns reference to owning device. */ - core_device_t &device() const NL_NOEXCEPT { return m_device; } + core_device_t &device() NL_NOEXCEPT { return m_device; } + const core_device_t &device() const NL_NOEXCEPT { return m_device; } /*! The netlist owning the owner of this object. * \returns reference to netlist object. */ - netlist_t &netlist(); - const netlist_t &netlist() const; + netlist_t &netlist() NL_NOEXCEPT; + const netlist_t &netlist() const NL_NOEXCEPT; private: core_device_t & m_device; @@ -486,11 +491,15 @@ namespace netlist using list_t = std::vector; + static constexpr const unsigned INP_HL_SHIFT = 0; + static constexpr const unsigned INP_LH_SHIFT = 1; + static constexpr const unsigned INP_ACTIVE_SHIFT = 2; + enum state_e { STATE_INP_PASSIVE = 0, - STATE_INP_ACTIVE = 1, - STATE_INP_HL = 2, - STATE_INP_LH = 4, + STATE_INP_HL = (1 << INP_HL_SHIFT), + STATE_INP_LH = (1 << INP_LH_SHIFT), + STATE_INP_ACTIVE = (1 << INP_ACTIVE_SHIFT), STATE_OUT = 128, STATE_BIDIR = 256 }; @@ -519,9 +528,9 @@ namespace netlist bool is_logic() const NL_NOEXCEPT; bool is_analog() const NL_NOEXCEPT; - bool is_state(const state_e astate) const NL_NOEXCEPT { return (m_state == astate); } - state_e state() const NL_NOEXCEPT { return m_state; } - void set_state(const state_e astate) NL_NOEXCEPT { m_state = astate; } + bool is_state(const state_e &astate) const NL_NOEXCEPT { return (m_state == astate); } + const state_e &state() const NL_NOEXCEPT { return m_state; } + void set_state(const state_e &astate) NL_NOEXCEPT { m_state = astate; } void reset(); @@ -560,17 +569,17 @@ namespace netlist nl_double operator ()() const NL_NOEXCEPT; - void set(const nl_double G) NL_NOEXCEPT + void set(const nl_double &G) NL_NOEXCEPT { set(G,G, 0.0); } - void set(const nl_double GO, const nl_double GT) NL_NOEXCEPT + void set(const nl_double &GO, const nl_double >) NL_NOEXCEPT { set(GO, GT, 0.0); } - void set(const nl_double GO, const nl_double GT, const nl_double I) NL_NOEXCEPT + void set(const nl_double &GO, const nl_double >, const nl_double &I) NL_NOEXCEPT { set_ptr(m_Idr1, I); set_ptr(m_go1, GO); @@ -590,7 +599,7 @@ namespace netlist terminal_t *m_otherterm; private: - void set_ptr(nl_double *ptr, const nl_double val) NL_NOEXCEPT + void set_ptr(nl_double *ptr, const nl_double &val) NL_NOEXCEPT { if (ptr != nullptr && *ptr != val) { @@ -709,13 +718,13 @@ namespace netlist void toggle_new_Q() NL_NOEXCEPT { m_new_Q = (m_cur_Q ^ 1); } - void toggle_and_push_to_queue(const netlist_time delay) NL_NOEXCEPT + void toggle_and_push_to_queue(const netlist_time &delay) NL_NOEXCEPT { toggle_new_Q(); push_to_queue(delay); } - void push_to_queue(const netlist_time delay) NL_NOEXCEPT; + void push_to_queue(const netlist_time &delay) NL_NOEXCEPT; bool is_queued() const NL_NOEXCEPT { return m_in_queue == QS_QUEUED; } void update_devs() NL_NOEXCEPT; @@ -723,8 +732,8 @@ namespace netlist const netlist_time &time() const NL_NOEXCEPT { return m_time; } void set_time(const netlist_time &ntime) NL_NOEXCEPT { m_time = ntime; } - bool isRailNet() const { return !(m_railterminal == nullptr); } - core_terminal_t & railterminal() const { return *m_railterminal; } + bool isRailNet() const NL_NOEXCEPT { return !(m_railterminal == nullptr); } + core_terminal_t & railterminal() const NL_NOEXCEPT { return *m_railterminal; } std::size_t num_cons() const NL_NOEXCEPT { return m_core_terms.size(); } @@ -748,18 +757,15 @@ namespace netlist state_var m_new_Q; state_var m_cur_Q; state_var m_in_queue; /* 0: not in queue, 1: in queue, 2: last was taken */ - - state_var m_time; state_var_s32 m_active; - state_var m_cur_Analog; + state_var m_time; private: plib::linkedlist_t m_list_active; core_terminal_t * m_railterminal; - public: - + void process(unsigned Mask); }; class logic_net_t : public detail::net_t @@ -772,7 +778,7 @@ namespace netlist netlist_sig_t Q() const NL_NOEXCEPT { return m_cur_Q; } void initial(const netlist_sig_t val) NL_NOEXCEPT { m_cur_Q = m_new_Q = val; } - void set_Q_and_push(const netlist_sig_t newQ, const netlist_time delay) NL_NOEXCEPT + void set_Q_and_push(const netlist_sig_t newQ, const netlist_time &delay) NL_NOEXCEPT { if (newQ != m_new_Q ) { @@ -780,7 +786,7 @@ namespace netlist push_to_queue(delay); } } - void set_Q_and_push_force(const netlist_sig_t newQ, const netlist_time delay) NL_NOEXCEPT + void set_Q_and_push_force(const netlist_sig_t newQ, const netlist_time &delay) NL_NOEXCEPT { if (newQ != m_new_Q || is_queued()) { @@ -789,7 +795,7 @@ namespace netlist } } - void set_Q_time(const netlist_sig_t newQ, const netlist_time at) NL_NOEXCEPT + void set_Q_time(const netlist_sig_t newQ, const netlist_time &at) NL_NOEXCEPT { if (newQ != m_new_Q) { @@ -815,19 +821,22 @@ namespace netlist using list_t = std::vector; + friend class detail::net_t; + analog_net_t(netlist_t &nl, const pstring &aname, detail::core_terminal_t *mr = nullptr); virtual ~analog_net_t(); - nl_double Q_Analog() const { return m_cur_Analog; } - void set_Q_Analog(const nl_double &v) { m_cur_Analog = v; } - nl_double *Q_Analog_state_ptr() { return m_cur_Analog.ptr(); } + nl_double Q_Analog() const NL_NOEXCEPT { return m_cur_Analog; } + void set_Q_Analog(const nl_double v) NL_NOEXCEPT { m_cur_Analog = v; } + nl_double *Q_Analog_state_ptr() NL_NOEXCEPT { return m_cur_Analog.ptr(); } //FIXME: needed by current solver code - devices::matrix_solver_t *solver() const { return m_solver; } - void set_solver(devices::matrix_solver_t *solver) { m_solver = solver; } + devices::matrix_solver_t *solver() const NL_NOEXCEPT { return m_solver; } + void set_solver(devices::matrix_solver_t *solver) NL_NOEXCEPT { m_solver = solver; } private: + state_var m_cur_Analog; devices::matrix_solver_t *m_solver; }; @@ -844,17 +853,17 @@ namespace netlist void initial(const netlist_sig_t val); - void push(const netlist_sig_t newQ, const netlist_time delay) NL_NOEXCEPT + void push(const netlist_sig_t newQ, const netlist_time &delay) NL_NOEXCEPT { m_my_net.set_Q_and_push(newQ, delay); // take the shortcut } - void push_force(const netlist_sig_t newQ, const netlist_time delay) NL_NOEXCEPT + void push_force(const netlist_sig_t newQ, const netlist_time &delay) NL_NOEXCEPT { m_my_net.set_Q_and_push_force(newQ, delay); // take the shortcut } - void set_Q_time(const netlist_sig_t newQ, const netlist_time at) NL_NOEXCEPT + void set_Q_time(const netlist_sig_t newQ, const netlist_time &at) NL_NOEXCEPT { m_my_net.set_Q_time(newQ, at); // take the shortcut } @@ -928,7 +937,7 @@ namespace netlist { public: param_logic_t(device_t &device, const pstring &name, const bool val); - bool operator()() const NL_NOEXCEPT { return m_param; } + const bool &operator()() const NL_NOEXCEPT { return m_param; } void setTo(const bool ¶m) { set(m_param, param); } private: bool m_param; @@ -938,7 +947,7 @@ namespace netlist { public: param_int_t(device_t &device, const pstring &name, const int val); - int operator()() const NL_NOEXCEPT { return m_param; } + const int &operator()() const NL_NOEXCEPT { return m_param; } void setTo(const int ¶m) { set(m_param, param); } private: int m_param; @@ -948,7 +957,7 @@ namespace netlist { public: param_double_t(device_t &device, const pstring &name, const double val); - double operator()() const NL_NOEXCEPT { return m_param; } + const double &operator()() const NL_NOEXCEPT { return m_param; } void setTo(const double ¶m) { set(m_param, param); } private: double m_param; @@ -960,7 +969,7 @@ namespace netlist param_str_t(device_t &device, const pstring &name, const pstring &val); virtual ~param_str_t(); - const pstring operator()() const NL_NOEXCEPT { return Value(); } + const pstring &operator()() const NL_NOEXCEPT { return Value(); } void setTo(const pstring ¶m) NL_NOEXCEPT { if (m_param != param) @@ -972,7 +981,7 @@ namespace netlist } protected: virtual void changed(); - pstring Value() const NL_NOEXCEPT { return m_param; } + const pstring &Value() const NL_NOEXCEPT { return m_param; } private: pstring m_param; }; @@ -985,13 +994,13 @@ namespace netlist { public: value_t(param_model_t ¶m, const pstring &name) + : m_value(param.model_value(name)) { - m_value = param.model_value(name); } - double operator()() const { return m_value; } - operator double() const { return m_value; } + const double &operator()() const NL_NOEXCEPT { return m_value; } + operator const double&() const NL_NOEXCEPT { return m_value; } private: - double m_value; + const double m_value; }; friend class value_t; @@ -1032,7 +1041,7 @@ namespace netlist param_rom_t(device_t &device, const pstring &name); - const ST & operator[] (std::size_t n) { return m_data[n]; } + const ST & operator[] (std::size_t n) NL_NOEXCEPT { return m_data[n]; } protected: virtual void changed() override { @@ -1102,7 +1111,7 @@ namespace netlist update(); } - plib::plog_base &log(); + plib::plog_base &log(); public: virtual void timestep(ATTR_UNUSED const nl_double st) { } @@ -1203,7 +1212,7 @@ namespace netlist // ----------------------------------------------------------------------------- - class netlist_t : public plib::plog_dispatch_intf, private plib::nocopyassignmove + class netlist_t : private plib::nocopyassignmove { public: @@ -1212,14 +1221,14 @@ namespace netlist /* run functions */ - const netlist_time time() const NL_NOEXCEPT { return m_time; } + const netlist_time &time() const NL_NOEXCEPT { return m_time; } devices::NETLIB_NAME(solver) *solver() const NL_NOEXCEPT { return m_solver; } /* never use this in constructors! */ - nl_double gmin() const; + nl_double gmin() const NL_NOEXCEPT; void process_queue(const netlist_time &delta) NL_NOEXCEPT; - void abort_current_queue_slice() { m_queue.retime(detail::queue_t::entry_t(m_time, nullptr)); } + void abort_current_queue_slice() NL_NOEXCEPT { m_queue.retime(detail::queue_t::entry_t(m_time, nullptr)); } /* Control functions */ @@ -1241,7 +1250,7 @@ namespace netlist std::size_t find_net_id(const detail::net_t *net) const; template - std::vector get_device_list() + std::vector get_device_list() const { std::vector tmp; for (auto &d : m_devices) @@ -1260,7 +1269,7 @@ namespace netlist } template - C *get_single_device(const pstring &classname) + C *get_single_device(const pstring &classname) const { return dynamic_cast(get_single_device(classname, check_class)); } @@ -1268,8 +1277,8 @@ namespace netlist /* logging and name */ pstring name() const { return m_name; } - plib::plog_base &log() { return m_log; } - const plib::plog_base &log() const { return m_log; } + plib::plog_base &log() { return m_log; } + const plib::plog_base &log() const { return m_log; } /* state related */ @@ -1295,6 +1304,9 @@ namespace netlist // FIXME: sort rebuild_lists out void rebuild_lists(); /* must be called after post_load ! */ + /* logging callback */ + virtual void vlog(const plib::plog_level &l, const pstring &ls) const = 0; + protected: void print_stats() const; @@ -1305,7 +1317,7 @@ namespace netlist static pstring from_utf8(const char *c) { return pstring(c, pstring::UTF8); } static pstring from_utf8(const pstring &c) { return c; } - core_device_t *get_single_device(const pstring &classname, bool (*cc)(core_device_t *)); + core_device_t *get_single_device(const pstring &classname, bool (*cc)(core_device_t *)) const; /* mostly rw */ netlist_time m_time; @@ -1319,7 +1331,7 @@ namespace netlist pstring m_name; std::unique_ptr m_setup; - plib::plog_base m_log; + plib::plog_base m_log; std::unique_ptr m_lib; // external lib needs to be loaded as long as netlist exists plib::state_manager_t m_state; @@ -1401,7 +1413,7 @@ namespace netlist } } - inline void detail::net_t::push_to_queue(const netlist_time delay) NL_NOEXCEPT + inline void detail::net_t::push_to_queue(const netlist_time &delay) NL_NOEXCEPT { if ((num_cons() != 0)) { @@ -1456,12 +1468,12 @@ namespace netlist } } - inline netlist_t &detail::device_object_t::netlist() + inline netlist_t &detail::device_object_t::netlist() NL_NOEXCEPT { return m_device.netlist(); } - inline const netlist_t &detail::device_object_t::netlist() const + inline const netlist_t &detail::device_object_t::netlist() const NL_NOEXCEPT { return m_device.netlist(); } @@ -1482,8 +1494,6 @@ namespace netlist for (std::size_t i=0; i #include #include +#include // ---------------------------------------------------------------------------------------- // timed queue // ---------------------------------------------------------------------------------------- -#define USE_HEAP (0) +#define USE_HEAP (0) namespace netlist { @@ -54,22 +55,11 @@ namespace netlist { constexpr pqentry_t() noexcept : m_exec_time(), m_object(nullptr) { } constexpr pqentry_t(const Time &t, const Element &o) noexcept : m_exec_time(t), m_object(o) { } - constexpr pqentry_t(const pqentry_t &e) noexcept : m_exec_time(e.m_exec_time), m_object(e.m_object) { } - pqentry_t(pqentry_t &&e) noexcept { swap(e); } ~pqentry_t() = default; - - pqentry_t& operator=(pqentry_t && other) noexcept - { - swap(other); - return *this; - } - - pqentry_t& operator=(const pqentry_t &other) noexcept - { - pqentry_t t(other); - swap(t); - return *this; - } + constexpr pqentry_t(const pqentry_t &e) noexcept = default; + constexpr pqentry_t(pqentry_t &&e) = default; + pqentry_t& operator=(pqentry_t && other) noexcept = default; + pqentry_t& operator=(const pqentry_t &other) noexcept = default; void swap(pqentry_t &other) noexcept { @@ -120,10 +110,10 @@ namespace netlist { /* Lock */ tqlock lck(m_lock); - T * i = m_end; + T * i(m_end); for (; QueueOp::less(*(i - 1), e); --i) { - *(i) = *(i-1); + *(i) = std::move(*(i-1)); m_prof_sortmove.inc(); } *i = std::move(e); @@ -139,12 +129,12 @@ namespace netlist { /* Lock */ tqlock lck(m_lock); - for (T * i = m_end - 1; i > &m_list[0]; i--) + for (T * i = m_end - 1; i > &m_list[0]; --i) { if (QueueOp::equal(*i, elem)) { - m_end--; - for (;i < m_end; i++) + --m_end; + for (;i < m_end; ++i) *i = std::move(*(i+1)); return; } @@ -155,7 +145,7 @@ namespace netlist { /* Lock */ tqlock lck(m_lock); - for (T * i = m_end - 1; i > &m_list[0]; i--) + for (T * i = m_end - 1; i > &m_list[0]; --i) { if (QueueOp::equal(*i, elem)) // partial equal! { @@ -163,12 +153,12 @@ namespace netlist while (QueueOp::less(*(i-1), *i)) { std::swap(*(i-1), *i); - i--; + --i; } while (i < m_end && QueueOp::less(*i, *(i+1))) { std::swap(*(i+1), *i); - i++; + ++i; } return; } @@ -189,9 +179,9 @@ namespace netlist // save state support & mame disasm - constexpr const T *listptr() const { return &m_list[1]; } + constexpr const T *listptr() const noexcept { return &m_list[1]; } constexpr std::size_t size() const noexcept { return static_cast(m_end - &m_list[1]); } - constexpr const T & operator[](const std::size_t index) const { return m_list[ 1 + index]; } + constexpr const T & operator[](const std::size_t index) const noexcept { return m_list[ 1 + index]; } private: #if HAS_OPENMP && USE_OPENMP using tqmutex = pspin_mutex; @@ -217,7 +207,7 @@ namespace netlist struct compare { - bool operator()(const T &a, const T &b) { return QueueOp::less(b,a); } + constexpr bool operator()(const T &a, const T &b) const { return QueueOp::less(b,a); } }; explicit timed_queue(const std::size_t list_size) diff --git a/src/lib/netlist/nl_parser.cpp b/src/lib/netlist/nl_parser.cpp index b29b26aa320..4685a13c354 100644 --- a/src/lib/netlist/nl_parser.cpp +++ b/src/lib/netlist/nl_parser.cpp @@ -8,6 +8,7 @@ #include "nl_parser.h" #include "nl_factory.h" #include "nl_errstr.h" +#include "nl_base.h" namespace netlist { diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index a3a49513a9f..65745d86459 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -41,8 +41,6 @@ setup_t::~setup_t() m_param_values.clear(); m_sources.clear(); - - pstring::resetmem(); } pstring setup_t::build_fqn(const pstring &obj_name) const @@ -97,7 +95,7 @@ bool setup_t::device_exists(const pstring &name) const void setup_t::register_model(const pstring &model_in) { auto pos = model_in.find(" "); - if (pos == model_in.end()) + if (pos == pstring::npos) log().fatal(MF_1_UNABLE_TO_PARSE_MODEL_1, model_in); pstring model = model_in.left(pos).trim().ucase(); pstring def = model_in.substr(pos + 1).trim(); @@ -275,7 +273,7 @@ void setup_t::register_frontier(const pstring &attach, const double r_IN, const void setup_t::register_param(const pstring ¶m, const double value) { - register_param(param, plib::pfmt("{1}").e(value,".9")); + register_param(param, plib::pfmt("{1:.9}").e(value)); } void setup_t::register_param(const pstring ¶m, const pstring &value) @@ -765,11 +763,11 @@ void setup_t::start_devices() } } -plib::plog_base &setup_t::log() +plib::plog_base &setup_t::log() { return netlist().log(); } -const plib::plog_base &setup_t::log() const +const plib::plog_base &setup_t::log() const { return netlist().log(); } @@ -791,13 +789,13 @@ static pstring model_string(detail::model_map_t &map) void setup_t::model_parse(const pstring &model_in, detail::model_map_t &map) { pstring model = model_in; - pstring::iterator pos(nullptr); + std::size_t pos = 0; pstring key; while (true) { pos = model.find("("); - if (pos != model.end()) break; + if (pos != pstring::npos) break; key = model.ucase(); auto i = m_models.find(key); @@ -818,19 +816,19 @@ void setup_t::model_parse(const pstring &model_in, detail::model_map_t &map) log().fatal(MF_1_MODEL_NOT_FOUND, model_in); } - pstring remainder=model.substr(pos+1).trim(); + pstring remainder = model.substr(pos + 1).trim(); if (!remainder.endsWith(")")) log().fatal(MF_1_MODEL_ERROR_1, model); // FIMXE: Not optimal - remainder = remainder.left(remainder.begin() + (remainder.len() - 1)); + remainder = remainder.left(remainder.length() - 1); std::vector pairs(plib::psplit(remainder," ", true)); for (pstring &pe : pairs) { auto pose = pe.find("="); - if (pose == pe.end()) + if (pose == pstring::npos) log().fatal(MF_1_MODEL_ERROR_ON_PAIR_1, model); - map[pe.left(pose).ucase()] = pe.substr(pose+1); + map[pe.left(pose).ucase()] = pe.substr(pose + 1); } } @@ -854,7 +852,7 @@ nl_double setup_t::model_value(detail::model_map_t &map, const pstring &entity) pstring tmp = model_value_str(map, entity); nl_double factor = NL_FCONST(1.0); - auto p = tmp.begin() + (tmp.len() - 1); + auto p = std::next(tmp.begin(), static_cast(tmp.length() - 1)); switch (*p) { case 'M': factor = 1e6; break; @@ -870,7 +868,7 @@ nl_double setup_t::model_value(detail::model_map_t &map, const pstring &entity) log().fatal(MF_1_UNKNOWN_NUMBER_FACTOR_IN_1, entity); } if (factor != NL_FCONST(1.0)) - tmp = tmp.left(tmp.begin() + (tmp.len() - 1)); + tmp = tmp.left(tmp.length() - 1); return tmp.as_double() * factor; } @@ -975,7 +973,7 @@ bool setup_t::parse_stream(plib::putf8_reader &istrm, const pstring &name) void setup_t::register_define(pstring defstr) { auto p = defstr.find("="); - if (p != defstr.end()) + if (p != pstring::npos) register_define(defstr.left(p), defstr.substr(p+1)); else register_define(defstr, "1"); @@ -999,12 +997,12 @@ bool source_t::parse(const pstring &name) std::unique_ptr source_string_t::stream(const pstring &name) { - return plib::make_unique_base(m_str.c_str(), m_str.len()); + return plib::make_unique_base(m_str.c_str(), m_str.mem_t_size()); } std::unique_ptr source_mem_t::stream(const pstring &name) { - return plib::make_unique_base(m_str.c_str(), m_str.len()); + return plib::make_unique_base(m_str.c_str(), m_str.mem_t_size()); } std::unique_ptr source_file_t::stream(const pstring &name) diff --git a/src/lib/netlist/nl_setup.h b/src/lib/netlist/nl_setup.h index 4aa883fbf32..d0359928711 100644 --- a/src/lib/netlist/nl_setup.h +++ b/src/lib/netlist/nl_setup.h @@ -288,8 +288,8 @@ namespace netlist /* helper - also used by nltool */ const pstring resolve_alias(const pstring &name) const; - plib::plog_base &log(); - const plib::plog_base &log() const; + plib::plog_base &log(); + const plib::plog_base &log() const; std::vector> m_device_factory; diff --git a/src/lib/netlist/nl_time.h b/src/lib/netlist/nl_time.h index 6d6cb509ae5..7c81f890e07 100644 --- a/src/lib/netlist/nl_time.h +++ b/src/lib/netlist/nl_time.h @@ -37,40 +37,34 @@ namespace netlist using mult_type = std::uint64_t; constexpr ptime() noexcept : m_time(0) {} - constexpr ptime(const ptime &rhs) noexcept : m_time(rhs.m_time) { } - constexpr ptime(ptime &&rhs) noexcept : m_time(rhs.m_time) { } + + constexpr ptime(const ptime &rhs) noexcept = default; + constexpr ptime(ptime &&rhs) noexcept = default; + C14CONSTEXPR ptime &operator=(const ptime &rhs) noexcept = default; + C14CONSTEXPR ptime &operator=(ptime &&rhs) noexcept = default; constexpr explicit ptime(const double t) = delete; //: m_time((internal_type) ( t * (double) resolution)) { } constexpr explicit ptime(const internal_type &nom, const internal_type &den) noexcept : m_time(nom * (RES / den)) { } - ptime &operator=(const ptime &rhs) noexcept { ptime t(rhs); std::swap(m_time, t.m_time); return *this; } - ptime &operator=(ptime &&rhs) noexcept { std::swap(this->m_time, rhs.m_time); return *this; } - - ptime &operator+=(const ptime &rhs) noexcept { m_time += rhs.m_time; return *this; } - ptime &operator-=(const ptime &rhs) noexcept { m_time -= rhs.m_time; return *this; } - ptime operator*=(const mult_type &factor) noexcept { m_time *= static_cast(factor); return *this; } + C14CONSTEXPR ptime &operator+=(const ptime &rhs) noexcept { m_time += rhs.m_time; return *this; } + C14CONSTEXPR ptime &operator-=(const ptime &rhs) noexcept { m_time -= rhs.m_time; return *this; } + C14CONSTEXPR ptime &operator*=(const mult_type &factor) noexcept { m_time *= static_cast(factor); return *this; } - friend ptime operator-(const ptime &lhs, const ptime &rhs) noexcept + friend C14CONSTEXPR ptime operator-(ptime lhs, const ptime &rhs) noexcept { - ptime t(lhs); - t -= rhs; - return t; + return lhs -= rhs; } - friend ptime operator+(const ptime &lhs, const ptime &rhs) noexcept + friend C14CONSTEXPR ptime operator+(ptime lhs, const ptime &rhs) noexcept { - ptime t(lhs); - t += rhs; - return t; + return lhs += rhs; } - friend ptime operator*(const ptime &lhs, const mult_type &factor) noexcept + friend C14CONSTEXPR ptime operator*(ptime lhs, const mult_type &factor) noexcept { - ptime t(lhs); - t *= factor; - return t; + return lhs *= factor; } friend constexpr mult_type operator/(const ptime &lhs, const ptime &rhs) noexcept @@ -111,18 +105,17 @@ namespace netlist constexpr internal_type as_raw() const noexcept { return m_time; } constexpr double as_double() const noexcept { - return static_cast(m_time) - / static_cast(RES); + return static_cast(m_time) / static_cast(RES); } // for save states .... - internal_type *get_internaltype_ptr() noexcept { return &m_time; } + C14CONSTEXPR internal_type *get_internaltype_ptr() noexcept { return &m_time; } - static constexpr ptime from_nsec(const internal_type ns) noexcept { return ptime(ns, UINT64_C(1000000000)); } - static constexpr ptime from_usec(const internal_type us) noexcept { return ptime(us, UINT64_C(1000000)); } - static constexpr ptime from_msec(const internal_type ms) noexcept { return ptime(ms, UINT64_C(1000)); } - static constexpr ptime from_hz(const internal_type hz) noexcept { return ptime(1 , hz); } - static constexpr ptime from_raw(const internal_type raw) noexcept { return ptime(raw); } + static constexpr ptime from_nsec(const internal_type &ns) noexcept { return ptime(ns, UINT64_C(1000000000)); } + static constexpr ptime from_usec(const internal_type &us) noexcept { return ptime(us, UINT64_C(1000000)); } + static constexpr ptime from_msec(const internal_type &ms) noexcept { return ptime(ms, UINT64_C(1000)); } + static constexpr ptime from_hz(const internal_type &hz) noexcept { return ptime(1 , hz); } + static constexpr ptime from_raw(const internal_type &raw) noexcept { return ptime(raw); } static constexpr ptime from_double(const double t) noexcept { return ptime(static_cast( t * static_cast(RES)), RES); } static constexpr ptime zero() noexcept { return ptime(0, RES); } diff --git a/src/lib/netlist/plib/pconfig.h b/src/lib/netlist/plib/pconfig.h index 3a2cb00e9e4..0200c305ecd 100755 --- a/src/lib/netlist/plib/pconfig.h +++ b/src/lib/netlist/plib/pconfig.h @@ -12,20 +12,52 @@ * Define this for more accurate measurements if you processor supports * RDTSCP. */ +#ifndef PHAS_RDTSCP #define PHAS_RDTSCP (1) +#endif /* * Define this to use accurate timing measurements. Only works * if PHAS_RDTSCP == 1 */ +#ifndef PUSE_ACCURATE_STATS #define PUSE_ACCURATE_STATS (1) +#endif /* * Set this to one if you want to use 128 bit int for ptime. * This is for tests only. */ +#ifndef PHAS_INT128 #define PHAS_INT128 (0) +#endif + +/*============================================================ + * Check for CPP Version + * + * C++11: __cplusplus is 201103L. + * C++14: __cplusplus is 201402L. + * c++17/c++1z__cplusplus is 201703L. + * + * VS2015 returns 199711L here. This is the bug filed in + * 2012 which obviously never was picked up by MS: + * https://connect.microsoft.com/VisualStudio/feedback/details/763051/a-value-of-predefined-macro-cplusplus-is-still-199711l + * + * + *============================================================*/ + +#if __cplusplus == 201103L +#define C14CONSTEXPR +#elif __cplusplus == 201402L +#define C14CONSTEXPR constexpr +#elif __cplusplus == 201703L +#define C14CONSTEXPR constexpr +#elif defined(_MSC_VER) +#define C14CONSTEXPR +#else +#error "C++ version not supported" +#endif #ifndef PHAS_INT128 #define PHAS_INT128 (0) diff --git a/src/lib/netlist/plib/pdynlib.h b/src/lib/netlist/plib/pdynlib.h index 3a0c12a5f2d..f0883042111 100644 --- a/src/lib/netlist/plib/pdynlib.h +++ b/src/lib/netlist/plib/pdynlib.h @@ -35,6 +35,35 @@ private: void *m_lib; }; +template +class dynproc +{ +public: + using calltype = R(*) (Args... args); + + dynproc() : m_sym(nullptr) { } + + dynproc(dynlib &dl, const pstring &name) + { + m_sym = dl.getsym(name); + } + + void load(dynlib &dl, const pstring &name) + { + m_sym = dl.getsym(name); + } + + R operator ()(Args&&... args) const + { + return m_sym(std::forward(args)...); + //return m_sym(args...); + } + + bool resolved() { return m_sym != nullptr; } +private: + calltype m_sym; +}; + } #endif /* PSTRING_H_ */ diff --git a/src/lib/netlist/plib/pexception.h b/src/lib/netlist/plib/pexception.h index bbbe78b18db..4827081b754 100644 --- a/src/lib/netlist/plib/pexception.h +++ b/src/lib/netlist/plib/pexception.h @@ -26,6 +26,7 @@ public: virtual ~pexception() noexcept; const pstring &text() { return m_text; } + const char* what() const noexcept override { return m_text.c_str(); } private: pstring m_text; @@ -91,12 +92,12 @@ public: virtual ~fpexception_e() noexcept; }; -static const unsigned FP_INEXACT = 0x0001; -static const unsigned FP_DIVBYZERO = 0x0002; -static const unsigned FP_UNDERFLOW = 0x0004; -static const unsigned FP_OVERFLOW = 0x0008; -static const unsigned FP_INVALID = 0x00010; -static const unsigned FP_ALL = 0x0001f; +static constexpr unsigned FP_INEXACT = 0x0001; +static constexpr unsigned FP_DIVBYZERO = 0x0002; +static constexpr unsigned FP_UNDERFLOW = 0x0004; +static constexpr unsigned FP_OVERFLOW = 0x0008; +static constexpr unsigned FP_INVALID = 0x00010; +static constexpr unsigned FP_ALL = 0x0001f; /* * Catch SIGFPE on linux for debugging purposes. diff --git a/src/lib/netlist/plib/pfmtlog.cpp b/src/lib/netlist/plib/pfmtlog.cpp index edcc2544f7a..b8b5fcb3b91 100644 --- a/src/lib/netlist/plib/pfmtlog.cpp +++ b/src/lib/netlist/plib/pfmtlog.cpp @@ -12,124 +12,79 @@ #include #include #include - -//* FIXME: remove cstring, replace with pstring */ +#include +#include namespace plib { -plog_dispatch_intf::~plog_dispatch_intf() +pfmt &pfmt::format_element(const char *l, const unsigned cfmt_spec, ...) { -} + va_list ap; + va_start(ap, cfmt_spec); + pstring fmt("%"); + char buf[2048]; // FIXME + std::size_t sl; -pfmt::pfmt(const pstring &fmt) -: m_str(m_str_buf), m_allocated(0), m_arg(0) -{ - std::size_t l = fmt.blen() + 1; - if (l>sizeof(m_str_buf)) - { - m_allocated = 2 * l; - m_str = palloc_array(2 * l); - } - std::copy(fmt.c_str(), fmt.c_str() + l, m_str); -} + m_arg++; -pfmt::~pfmt() -{ - if (m_allocated > 0) - pfree_array(m_str); -} + pstring search("{"); + search += plib::to_string(m_arg); + sl = search.length(); -void pfmt::format_element(const char *f, const char *l, const char *fmt_spec, ...) -{ - va_list ap; - va_start(ap, fmt_spec); - char fmt[30] = "%"; - char search[10] = ""; - char buf[2048]; - m_arg++; - std::size_t sl = static_cast(sprintf(search, "{%d:", m_arg)); - char *p = strstr(m_str, search); - if (p == nullptr) + auto p = m_str.find(search + ":"); + sl++; // ":" + if (p == pstring::npos) // no further specifiers { - sl = static_cast(sprintf(search, "{%d}", m_arg)); - p = strstr(m_str, search); - if (p == nullptr) + p = m_str.find(search + "}"); + if (p == pstring::npos) // not found try default { sl = 2; - p = strstr(m_str, "{}"); + p = m_str.find("{}"); } - if (p==nullptr) + if (p == pstring::npos) { sl=1; - p = strstr(m_str, "{"); - if (p != nullptr) + p = m_str.find("{"); + if (p != pstring:: npos) { - char *p1 = strstr(p, "}"); - if (p1 != nullptr) + auto p1 = m_str.find("}", p); + if (p1 != pstring::npos) { - sl = static_cast(p1 - p + 1); - strncat(fmt, p+1, static_cast(p1 - p - 2)); + sl = p1 - p + 1; + fmt += m_str.substr(p+1, p1 - p - 1); } - else - strcat(fmt, f); } - else - strcat(fmt, f); } } else { - char *p1 = strstr(p, "}"); - if (p1 != nullptr) + auto p1 = m_str.find("}", p); + if (p1 != pstring::npos) { - sl = static_cast(p1 - p + 1); - if (m_arg>=10) - strncat(fmt, p+4, static_cast(p1 - p - 4)); - else - strncat(fmt, p+3, static_cast(p1 - p - 3)); + sl = p1 - p + 1; + fmt += ((m_arg>=10) ? m_str.substr(p+4, p1 - p - 4) : m_str.substr(p+3, p1 - p - 3)); } - else - strcat(fmt, f); } - strcat(fmt, l); - char *pend = fmt + strlen(fmt) - 1; - if (strchr("fge", *fmt_spec) != nullptr) + pstring::code_t pend = fmt.at(fmt.length() - 1); + if (pstring("duxo").find(cfmt_spec) != pstring::npos) { - if (strchr("fge", *pend) == nullptr) - strcat(fmt, fmt_spec); + if (pstring("duxo").find(pend) == pstring::npos) + fmt += (pstring(l, pstring::UTF8) + cfmt_spec); + else + fmt = fmt.left(fmt.length() - 1) + pstring(l, pstring::UTF8) + fmt.right(1); } - else if (strchr("duxo", *fmt_spec) != nullptr) + else if (pstring("fge").find(cfmt_spec) != pstring::npos) { - if (strchr("duxo", *pend) == nullptr) - strcat(fmt, fmt_spec); + if (pstring("fge").find(pend) == pstring::npos) + fmt += cfmt_spec; } else - strcat(fmt, fmt_spec); - std::size_t nl = static_cast(vsprintf(buf, fmt, ap)); - if (p != nullptr) - { - // check room - std::size_t new_size = static_cast(p - m_str) + nl + strlen(p) + 1 - sl; - if (new_size > m_allocated) - { - std::size_t old_alloc = std::max(m_allocated, sizeof(m_str_buf)); - if (m_allocated < old_alloc) - m_allocated = old_alloc; - while (new_size > m_allocated) - m_allocated *= 2; - char *np = palloc_array(m_allocated); - std::copy(m_str, m_str + old_alloc, np); - p = np + (p - m_str); - if (m_str != m_str_buf) - pfree_array(m_str); - m_str = np; - } - // Make room - //memmove(p+nl, p+sl, strlen(p) + 1 - sl); - std::copy_backward(p + sl, p + strlen(p) + 1, p + nl + strlen(p) + 1 - sl); - std::copy(buf, buf + nl, p); - } + fmt += cfmt_spec; + vsprintf(buf, fmt.c_str(), ap); + if (p != pstring::npos) + m_str = m_str.substr(0, p) + pstring(buf, pstring::UTF8) + m_str.substr(p + sl); va_end(ap); + return *this; } } diff --git a/src/lib/netlist/plib/pfmtlog.h b/src/lib/netlist/plib/pfmtlog.h index 200be024478..9b7a85d8d8d 100644 --- a/src/lib/netlist/plib/pfmtlog.h +++ b/src/lib/netlist/plib/pfmtlog.h @@ -25,15 +25,20 @@ P_ENUM(plog_level, template struct ptype_traits_base { - static T cast(T x) { return x; } + static const T cast(const T &x) { return x; } static const bool is_signed = std::numeric_limits::is_signed; + static const char *size_spec() { return ""; } + static char32_t fmt_spec() { return 'u'; } }; template <> struct ptype_traits_base { - static unsigned int cast(bool x) { return static_cast(x); } + static unsigned int cast(bool &x) { return static_cast(x); } + static unsigned int cast(const bool &x) { return static_cast(x); } static const bool is_signed = std::numeric_limits::is_signed; + static const char *size_spec() { return ""; } + static char32_t fmt_spec() { return 'u'; } }; template @@ -42,149 +47,162 @@ struct ptype_traits; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return ""; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return "h"; } + static const char *size_spec() { return "h"; } + static char32_t fmt_spec() { return is_signed ? 'd' : 'u'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return "h"; } + static const char *size_spec() { return "h"; } + static char32_t fmt_spec() { return 'd'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return ""; } + static char32_t fmt_spec() { return 'd'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return "l"; } + static const char *size_spec() { return "l"; } + static char32_t fmt_spec() { return 'd'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return "ll"; } + static const char *size_spec() { return "ll"; } + static char32_t fmt_spec() { return 'd'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return "h"; } + static const char *size_spec() { return "h"; } + static char32_t fmt_spec() { return 'd'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return "h"; } + static const char *size_spec() { return "h"; } + static char32_t fmt_spec() { return 'u'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return "h"; } + static const char *size_spec() { return "h"; } + static char32_t fmt_spec() { return 'u'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return ""; } + static char32_t fmt_spec() { return 'u'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return "l"; } + static const char *size_spec() { return "l"; } + static char32_t fmt_spec() { return 'u'; } }; template<> struct ptype_traits : ptype_traits_base { - static const char *size_specifier() { return "ll"; } + static const char *size_spec() { return "ll"; } + static char32_t fmt_spec() { return 'u'; } }; -template -class pformat_base +template<> +struct ptype_traits : ptype_traits_base { -public: + static char32_t fmt_spec() { return 'f'; } +}; - P &operator ()(const double x, const char *f = "") { format_element(f, "", "f", x); return static_cast

(*this); } - P & e(const double x, const char *f = "") { format_element(f, "", "e", x); return static_cast

(*this); } - P & g(const double x, const char *f = "") { format_element(f, "", "g", x); return static_cast

(*this); } +template<> +struct ptype_traits : ptype_traits_base +{ + static char32_t fmt_spec() { return 'f'; } +}; - P &operator ()(const float x, const char *f = "") { format_element(f, "", "f", x); return static_cast

(*this); } - P & e(const float x, const char *f = "") { format_element(f, "", "e", x); return static_cast

(*this); } - P & g(const float x, const char *f = "") { format_element(f, "", "g", x); return static_cast

(*this); } - P &operator ()(const char *x, const char *f = "") { format_element(f, "", "s", x); return static_cast

(*this); } - P &operator ()(char *x, const char *f = "") { format_element(f, "", "s", x); return static_cast

(*this); } - P &operator ()(const void *x, const char *f = "") { format_element(f, "", "p", x); return static_cast

(*this); } - P &operator ()(const pstring &x, const char *f = "") { format_element(f, "", "s", x.c_str() ); return static_cast

(*this); } +template<> +struct ptype_traits : ptype_traits_base +{ + static const char *cast(const char *x) { return x; } + static char32_t fmt_spec() { return 's'; } +}; - template - P &operator ()(const T x, const char *f = "") +class pfmt +{ +public: + explicit pfmt(const pstring &fmt) + : m_str(fmt), m_arg(0) { - if (ptype_traits::is_signed) - format_element(f, ptype_traits::size_specifier(), "d", ptype_traits::cast(x)); - else - format_element(f, ptype_traits::size_specifier(), "u", ptype_traits::cast(x)); - return static_cast

(*this); } - template - P &x(const T x, const char *f = "") - { - format_element(f, ptype_traits::size_specifier(), "x", x); - return static_cast

(*this); - } + pfmt(const pfmt &rhs) : m_str(rhs.m_str), m_arg(rhs.m_arg) { } - template - P &o(const T x, const char *f = "") + ~pfmt() { - format_element(f, ptype_traits::size_specifier(), "o", x); - return static_cast

(*this); } -protected: + operator pstring() const { return m_str; } + pfmt & e(const double &x) {return format_element("", 'e', x); } + pfmt & g(const double &x) {return format_element("", 'g', x); } - ~pformat_base() { } - virtual void format_element(const char *f, const char *l, const char *fmt_spec, ...) = 0; + pfmt & e(const float &x) {return format_element("", 'e', static_cast(x)); } + pfmt & g(const float &x) {return format_element("", 'g', static_cast(x)); } -}; + pfmt &operator ()(const void *x) {return format_element("", 'p', x); } + pfmt &operator ()(const pstring &x) {return format_element("", 's', x.c_str() ); } -class pfmt : public pformat_base -{ -public: - explicit pfmt(const pstring &fmt); - virtual ~pfmt(); + template + pfmt &operator ()(const T &x) + { + return format_element(ptype_traits::size_spec(), ptype_traits::fmt_spec(), ptype_traits::cast(x)); + } - operator pstring() const { return pstring(m_str, pstring::UTF8); } + template + pfmt &operator ()(const T *x) + { + return format_element(ptype_traits::size_spec(), ptype_traits::fmt_spec(), ptype_traits::cast(x)); + } - const char *c_str() { return m_str; } + template + pfmt &x(const T &x) + { + return format_element(ptype_traits::size_spec(), 'x', x); + } + template + pfmt &o(const T &x) + { + return format_element(ptype_traits::size_spec(), 'o', x); + } protected: - void format_element(const char *f, const char *l, const char *fmt_spec, ...) override; + + pfmt &format_element(const char *l, const unsigned fmt_spec, ...); private: - char *m_str; - char m_str_buf[256]; - std::size_t m_allocated; + pstring m_str; unsigned m_arg; }; -class plog_dispatch_intf; - -template +template class pfmt_writer_t : plib::nocopyassignmove { public: @@ -194,42 +212,21 @@ public: template void log(const pstring & fmt, Args&&... args) const { - if (build_enabled && enabled && m_enabled) (*this)(fmt, std::forward(args)...); - } - - void operator ()(const pstring &fmt) const - { - if (build_enabled && m_enabled) vdowrite(fmt); - } - - template - void operator ()(const pstring &fmt, const T1 &v1) const - { - if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1)); - } - - template - void operator ()(const pstring &fmt, const T1 &v1, const T2 &v2) const - { - if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1)(v2)); - } - - template - void operator ()(const pstring &fmt, const T1 &v1, const T2 &v2, const T3 &v3) const - { - if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1)(v2)(v3)); - } - - template - void operator ()(const pstring &fmt, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4) const - { - if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1)(v2)(v3)(v4)); + if (build_enabled && enabled && m_enabled) + { + pfmt pf(fmt); + static_cast(this)->vdowrite(xlog(pf, std::forward(args)...)); + } } - template - void operator ()(const pstring &fmt, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5) const + template + void operator ()(const pstring &fmt, Args&&... args) const { - if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1)(v2)(v3)(v4)(v5)); + if (build_enabled && m_enabled) + { + pfmt pf(fmt); + static_cast(this)->vdowrite(xlog(pf, std::forward(args)...)); + } } void set_enabled(const bool v) @@ -241,43 +238,44 @@ public: protected: ~pfmt_writer_t() { } - virtual void vdowrite(const pstring &ls) const = 0; private: + pfmt &xlog(pfmt &fmt) const { return fmt; } + + template + pfmt &xlog(pfmt &fmt, X&& x, Args&&... args) const + { + return xlog(fmt(std::forward(x)), std::forward(args)...); + } + bool m_enabled; }; -template -class plog_channel : public pfmt_writer_t +template +class plog_channel : public pfmt_writer_t, build_enabled> { + friend class pfmt_writer_t, build_enabled>; public: - explicit plog_channel(plog_dispatch_intf *b) : pfmt_writer_t(), m_base(b) { } - virtual ~plog_channel() { } + explicit plog_channel(T &b) : pfmt_writer_t(), m_base(b) { } + ~plog_channel() { } protected: - virtual void vdowrite(const pstring &ls) const override; + void vdowrite(const pstring &ls) const + { + m_base.vlog(L, ls); + } private: - plog_dispatch_intf *m_base; -}; - -class plog_dispatch_intf -{ - template friend class plog_channel; - -public: - virtual ~plog_dispatch_intf(); -protected: - virtual void vlog(const plog_level &l, const pstring &ls) const = 0; + T &m_base; }; -template +template class plog_base { public: - explicit plog_base(plog_dispatch_intf *proxy) + explicit plog_base(T &proxy) : debug(proxy), info(proxy), verbose(proxy), @@ -287,22 +285,17 @@ public: {} virtual ~plog_base() {} - plog_channel debug; - plog_channel info; - plog_channel verbose; - plog_channel warning; - plog_channel error; - plog_channel fatal; + plog_channel debug; + plog_channel info; + plog_channel verbose; + plog_channel warning; + plog_channel error; + plog_channel fatal; }; - -template -void plog_channel::vdowrite(const pstring &ls) const -{ - m_base->vlog(L, ls); -} - } +template +plib::pfmt& operator<<(plib::pfmt &p, T&& val) { return p(std::forward(val)); } #endif /* PSTRING_H_ */ diff --git a/src/lib/netlist/plib/pfunction.cpp b/src/lib/netlist/plib/pfunction.cpp index 0f48860d15b..c369dc2ed90 100644 --- a/src/lib/netlist/plib/pfunction.cpp +++ b/src/lib/netlist/plib/pfunction.cpp @@ -86,7 +86,7 @@ static int get_prio(pstring v) { if (v == "(" || v == ")") return 1; - else if (v.left(v.begin()+1) >= "a" && v.left(v.begin()+1) <= "z") + else if (v.left(1) >= "a" && v.left(1) <= "z") return 0; else if (v == "*" || v == "/") return 20; @@ -111,7 +111,7 @@ void pfunction::compile_infix(const std::vector &inputs, const pstring { // Shunting-yard infix parsing std::vector sep = {"(", ")", ",", "*", "/", "+", "-", "^"}; - std::vector sexpr(plib::psplit(expr.replace(" ",""), sep)); + std::vector sexpr(plib::psplit(expr.replace_all(" ",""), sep)); std::stack opstk; std::vector postfix; diff --git a/src/lib/netlist/plib/poptions.cpp b/src/lib/netlist/plib/poptions.cpp index 9defcf84975..910660acb3d 100644 --- a/src/lib/netlist/plib/poptions.cpp +++ b/src/lib/netlist/plib/poptions.cpp @@ -133,17 +133,19 @@ namespace plib { } else if (arg.startsWith("-")) { - auto p = arg.begin() + 1; - opt = getopt_short(arg.substr(p,p + 1)); + std::size_t p = 1; + opt = getopt_short(arg.substr(p, 1)); ++p; - if (p != arg.end()) + if (p < arg.length()) { has_equal_arg = true; opt_arg = arg.substr(p); } } else + { return i; + } if (opt == nullptr) return i; if (opt->has_argument()) @@ -182,7 +184,7 @@ namespace plib { pstring line = pstring("").rpad(" ", firstline_indent); for (auto &s : psplit(p, " ")) { - if (line.len() + s.len() > width) + if (line.length() + s.length() > width) { ret += line + "\n"; line = pstring("").rpad(" ", indent); @@ -226,14 +228,14 @@ namespace plib { { line += v + "|"; } - line = line.left(line.begin() + (line.len() - 1)); + line = line.left(line.length() - 1); } else line += "Value"; } } line = line.rpad(" ", indent - 2) + " "; - if (line.len() > indent) + if (line.length() > indent) { //ret += "TestGroup abc\n def gef\nxyz\n\n" ; ret += line + "\n"; @@ -257,7 +259,7 @@ namespace plib { ex += split_paragraphs(example->help(), width, 4, 4) + "\n"; } } - if (ex.len() > 0) + if (ex.length() > 0) { ret += "\n\nExamples:\n\n" + ex; } diff --git a/src/lib/netlist/plib/pparser.cpp b/src/lib/netlist/plib/pparser.cpp index 679f2942729..7547572192d 100644 --- a/src/lib/netlist/plib/pparser.cpp +++ b/src/lib/netlist/plib/pparser.cpp @@ -183,7 +183,7 @@ ptokenizer::token_t ptokenizer::get_token_internal() { /* skip ws */ pstring::code_t c = getc(); - while (m_whitespace.find(c) != m_whitespace.end()) + while (m_whitespace.find(c) != pstring::npos) { c = getc(); if (eof()) @@ -191,7 +191,7 @@ ptokenizer::token_t ptokenizer::get_token_internal() return token_t(ENDOFFILE); } } - if (m_number_chars_start.find(c) != m_number_chars_start.end()) + if (m_number_chars_start.find(c) != pstring::npos) { /* read number while we receive number or identifier chars * treat it as an identifier when there are identifier chars in it @@ -200,9 +200,9 @@ ptokenizer::token_t ptokenizer::get_token_internal() token_type ret = NUMBER; pstring tokstr = ""; while (true) { - if (m_identifier_chars.find(c) != m_identifier_chars.end() && m_number_chars.find(c) == m_number_chars.end()) + if (m_identifier_chars.find(c) != pstring::npos && m_number_chars.find(c) == pstring::npos) ret = IDENTIFIER; - else if (m_number_chars.find(c) == m_number_chars.end()) + else if (m_number_chars.find(c) == pstring::npos) break; tokstr += c; c = getc(); @@ -210,11 +210,11 @@ ptokenizer::token_t ptokenizer::get_token_internal() ungetc(c); return token_t(ret, tokstr); } - else if (m_identifier_chars.find(c) != m_identifier_chars.end()) + else if (m_identifier_chars.find(c) != pstring::npos) { /* read identifier till non identifier char */ pstring tokstr = ""; - while (m_identifier_chars.find(c) != m_identifier_chars.end()) + while (m_identifier_chars.find(c) != pstring::npos) { tokstr += c; c = getc(); @@ -241,11 +241,11 @@ ptokenizer::token_t ptokenizer::get_token_internal() { /* read identifier till first identifier char or ws */ pstring tokstr = ""; - while ((m_identifier_chars.find(c) == m_identifier_chars.end()) && (m_whitespace.find(c) == m_whitespace.end())) + while ((m_identifier_chars.find(c) == pstring::npos) && (m_whitespace.find(c) == pstring::npos)) { tokstr += c; /* expensive, check for single char tokens */ - if (tokstr.len() == 1) + if (tokstr.length() == 1) { auto id = m_tokens.find(tokstr); if (id != m_tokens.end()) @@ -385,33 +385,33 @@ ppreprocessor::define_t *ppreprocessor::get_define(const pstring &name) pstring ppreprocessor::replace_macros(const pstring &line) { std::vector elems(psplit(line, m_expr_sep)); - pstringbuffer ret(""); + pstring ret(""); for (auto & elem : elems) { define_t *def = get_define(elem); if (def != nullptr) - ret.cat(def->m_replace); + ret += def->m_replace; else - ret.cat(elem); + ret += elem; } return ret; } static pstring catremainder(const std::vector &elems, std::size_t start, pstring sep) { - pstringbuffer ret(""); + pstring ret(""); for (auto & elem : elems) { - ret.cat(elem); - ret.cat(sep); + ret += elem; + ret += sep; } return ret; } pstring ppreprocessor::process_line(const pstring &line) { - pstring lt = line.replace("\t"," ").trim(); - pstringbuffer ret; + pstring lt = line.replace_all("\t"," ").trim(); + pstring ret; m_lineno++; // FIXME ... revise and extend macro handling if (lt.startsWith("#")) @@ -422,7 +422,7 @@ pstring ppreprocessor::process_line(const pstring &line) m_level++; std::size_t start = 0; lt = replace_macros(lt); - std::vector t(psplit(lt.substr(3).replace(" ",""), m_expr_sep)); + std::vector t(psplit(lt.substr(3).replace_all(" ",""), m_expr_sep)); int val = static_cast(expr(t, start, 0)); if (val == 0) m_ifflag |= (1 << m_level); @@ -477,7 +477,7 @@ pstring ppreprocessor::process_line(const pstring &line) lt = replace_macros(lt); if (m_ifflag == 0) { - ret.cat(lt); + ret += lt; } } return ret; diff --git a/src/lib/netlist/plib/pparser.h b/src/lib/netlist/plib/pparser.h index 7ff8c4762a0..7ec517255c8 100644 --- a/src/lib/netlist/plib/pparser.h +++ b/src/lib/netlist/plib/pparser.h @@ -38,7 +38,7 @@ public: { public: - static const std::size_t npos = static_cast(-1); + static constexpr std::size_t npos = static_cast(-1); token_id_t() : m_id(npos) {} explicit token_id_t(const std::size_t id) : m_id(id) {} @@ -127,7 +127,7 @@ private: int m_lineno; pstring m_cur_line; - pstring::iterator m_px; + pstring::const_iterator m_px; pstring::code_t m_unget; /* tokenizer stuff follows ... */ diff --git a/src/lib/netlist/plib/ppmf.h b/src/lib/netlist/plib/ppmf.h index 1c18328a374..726a6c63b42 100644 --- a/src/lib/netlist/plib/ppmf.h +++ b/src/lib/netlist/plib/ppmf.h @@ -46,6 +46,10 @@ #pragma GCC diagnostic ignored "-Wpmf-conversions" #endif +#if defined(__GNUC__) && (__GNUC__ > 6) +#pragma GCC diagnostic ignored "-Wnoexcept-type" +#endif + namespace plib { /* * The following class was derived from the MAME delegate.h code. @@ -213,8 +217,8 @@ namespace plib { using function_ptr = MEMBER_ABI R (*)(O *obj, Targs... args); return (reinterpret_cast(m_func))(obj, std::forward(args)...); } - bool is_set() { return m_func != nullptr; } - generic_function get_function() const { return m_func; } + bool is_set() noexcept { return m_func != nullptr; } + generic_function get_function() const noexcept { return m_func; } private: generic_function m_func; }; @@ -246,8 +250,8 @@ namespace plib { return this->call(m_obj, std::forward(args)...); } - generic_class *object() const { return m_obj; } - bool has_object() const { return m_obj != nullptr; } + generic_class *object() const noexcept { return m_obj; } + bool has_object() const noexcept { return m_obj != nullptr; } private: generic_class *m_obj; }; diff --git a/src/lib/netlist/plib/pstate.cpp b/src/lib/netlist/plib/pstate.cpp index 21ad55b6eb3..043033ed1ea 100644 --- a/src/lib/netlist/plib/pstate.cpp +++ b/src/lib/netlist/plib/pstate.cpp @@ -39,7 +39,7 @@ void state_manager_t::remove_save_items(const void *owner) for (auto i = m_custom.begin(); i != m_custom.end(); ) { if (i->get()->m_owner == owner) - i = m_save.erase(i); + i = m_custom.erase(i); else i++; } diff --git a/src/lib/netlist/plib/pstream.cpp b/src/lib/netlist/plib/pstream.cpp index e14bc864122..420f63c9e5e 100644 --- a/src/lib/netlist/plib/pstream.cpp +++ b/src/lib/netlist/plib/pstream.cpp @@ -367,7 +367,7 @@ pstream::pos_type pomemstream::vtell() bool putf8_reader::readline(pstring &line) { pstring::code_t c = 0; - m_linebuf.clear(); + m_linebuf = ""; if (!this->readcode(c)) { line = ""; diff --git a/src/lib/netlist/plib/pstream.h b/src/lib/netlist/plib/pstream.h index 084a15ef988..3e9ee99cba0 100644 --- a/src/lib/netlist/plib/pstream.h +++ b/src/lib/netlist/plib/pstream.h @@ -148,19 +148,19 @@ public: postringstream() : postream(0) { } virtual ~postringstream() override; - const pstringbuffer &str() { return m_buf; } + const pstring &str() { return m_buf; } protected: /* write n bytes to stream */ virtual void vwrite(const void *buf, const pos_type n) override { - m_buf.cat(buf, n); + m_buf += pstring(static_cast(buf), n, pstring::UTF8); } virtual void vseek(const pos_type n) override { } - virtual pos_type vtell() override { return m_buf.len(); } + virtual pos_type vtell() override { return m_buf.mem_t_size(); } private: - pstringbuffer m_buf; + pstring m_buf; }; // ----------------------------------------------------------------------------- @@ -284,7 +284,7 @@ private: class pistringstream : public pimemstream { public: - explicit pistringstream(const pstring &str) : pimemstream(str.c_str(), str.len()), m_str(str) { } + explicit pistringstream(const pstring &str) : pimemstream(str.c_str(), str.mem_t_size()), m_str(str) { } virtual ~pistringstream() override; private: @@ -317,17 +317,17 @@ public: char b[4]; if (m_strm.read(&b[0], 1) != 1) return false; - const unsigned l = pstring::traits::codelen(b); - for (unsigned i = 1; i < l; i++) + const std::size_t l = pstring::traits_type::codelen(b); + for (std::size_t i = 1; i < l; i++) if (m_strm.read(&b[i], 1) != 1) return false; - c = pstring::traits::code(b); + c = pstring::traits_type::code(b); return true; } private: pistream &m_strm; - pstringbuffer m_linebuf; + pstring m_linebuf; }; // ----------------------------------------------------------------------------- @@ -348,7 +348,7 @@ public: void write(const pstring &text) const { - m_strm.write(text.c_str(), text.blen()); + m_strm.write(text.c_str(), text.mem_t_size()); } void write(const pstring::code_t c) const @@ -360,15 +360,15 @@ private: postream &m_strm; }; -class putf8_fmt_writer : public pfmt_writer_t<>, public putf8_writer +class putf8_fmt_writer : public pfmt_writer_t, public putf8_writer { public: explicit putf8_fmt_writer(postream &strm); virtual ~putf8_fmt_writer() override; -protected: - virtual void vdowrite(const pstring &ls) const override; +//protected: + void vdowrite(const pstring &ls) const; private: }; @@ -391,8 +391,8 @@ public: void write(const pstring &s) { - write(s.blen()); - m_strm.write(s.c_str(), s.blen()); + write(s.mem_t_size()); + m_strm.write(s.c_str(), s.mem_t_size()); } template diff --git a/src/lib/netlist/plib/pstring.cpp b/src/lib/netlist/plib/pstring.cpp index 5396f333358..554baac9bc7 100644 --- a/src/lib/netlist/plib/pstring.cpp +++ b/src/lib/netlist/plib/pstring.cpp @@ -11,16 +11,7 @@ #include #include -#include - -template pstr_t pstring_t::m_zero(0); - -template -pstring_t::~pstring_t() -{ - if (m_ptr != nullptr) - sfree(m_ptr); -} +#include template std::size_t strlen_mem(const T *s) @@ -31,44 +22,15 @@ std::size_t strlen_mem(const T *s) return len; } - -template -void pstring_t::pcat(const mem_t *s) -{ - std::size_t slen = strlen_mem(s); - pstr_t *n = salloc(m_ptr->len() + slen); - if (m_ptr->len() > 0) - n->copy_from(m_ptr->str(), m_ptr->len()); - if (slen > 0) - std::copy(s, s + slen, n->str() + m_ptr->len()); - *(n->str() + n->len()) = 0; - sfree(m_ptr); - m_ptr = n; -} - template -void pstring_t::pcat(const pstring_t &s) +int pstring_t::compare(const pstring_t &right) const { - std::size_t slen = s.blen(); - pstr_t *n = salloc(m_ptr->len() + slen); - if (m_ptr->len() > 0) - n->copy_from(m_ptr->str(), m_ptr->len()); - if (slen > 0) - std::copy(s.c_str(), s.c_str() + slen, n->str() + m_ptr->len()); - *(n->str() + n->len()) = 0; - sfree(m_ptr); - m_ptr = n; -} - -template -int pstring_t::pcmp(const pstring_t &right) const -{ - std::size_t l = std::min(blen(), right.blen()); + std::size_t l = std::min(mem_t_size(), right.mem_t_size()); if (l == 0) { - if (blen() == 0 && right.blen() == 0) + if (mem_t_size() == 0 && right.mem_t_size() == 0) return 0; - else if (right.blen() == 0) + else if (right.mem_t_size() == 0) return 1; else return -1; @@ -83,40 +45,36 @@ int pstring_t::pcmp(const pstring_t &right) const int ret = (si == this->end() ? 0 : static_cast(*si) - static_cast(*ri)); if (ret == 0) { - if (this->blen() > right.blen()) + if (this->mem_t_size() > right.mem_t_size()) ret = 1; - else if (this->blen() < right.blen()) + else if (this->mem_t_size() < right.mem_t_size()) ret = -1; } return ret; } - -template -void pstring_t::pcopy(const mem_t *from, std::size_t size) -{ - pstr_t *n = salloc(size * sizeof(mem_t)); - if (size > 0) - n->copy_from(static_cast(from), size); - *(static_cast(n->str()) + size) = 0; - sfree(m_ptr); - m_ptr = n; -} - template -const pstring_t pstring_t::substr(const iterator &start, const iterator &end) const +pstring_t pstring_t::substr(size_type start, size_type nlen) const { pstring_t ret; //FIXME: throw ? - ret.pcopy(start.p, static_cast(end.p - start.p)); + const size_type l = length(); + if (start < l) + { + if (nlen == npos || start + nlen > l) + nlen = l - start; + auto ps = std::next(begin(), static_cast(start)); + auto pe = std::next(ps, static_cast(nlen)); + ret.m_str.assign(ps.p, pe.p); + } return ret; } template -const pstring_t pstring_t::ucase() const +pstring_t pstring_t::ucase() const { - pstring_t ret = ""; - for (auto c : *this) + pstring_t ret; + for (const auto &c : *this) if (c >= 'a' && c <= 'z') ret += (c - 'a' + 'A'); else @@ -125,12 +83,13 @@ const pstring_t pstring_t::ucase() const } template -typename pstring_t::iterator pstring_t::find_first_not_of(const pstring_t &no) const +typename pstring_t::size_type pstring_t::find_first_not_of(const pstring_t &no) const { - for (auto it = begin(); it != end(); ++it) + size_type pos = 0; + for (auto it = begin(); it != end(); ++it, ++pos) { bool f = true; - for (auto const jt : no) + for (code_t const jt : no) { if (*it == jt) { @@ -139,20 +98,21 @@ typename pstring_t::iterator pstring_t::find_first_not_of(const pstring_t } } if (f) - return it; + return pos; } - return end(); + return npos; } template -typename pstring_t::iterator pstring_t::find_last_not_of(const pstring_t &no) const +typename pstring_t::size_type pstring_t::find_last_not_of(const pstring_t &no) const { /* FIXME: reverse iterator */ - iterator last_found = end(); - for (auto it = begin(); it != end(); ++it) + size_type last_found = npos; + size_type pos = 0; + for (auto it = begin(); it != end(); ++it, ++pos) { bool f = true; - for (auto const jt : no) + for (code_t const jt : no) { if (*it == jt) { @@ -161,17 +121,18 @@ typename pstring_t::iterator pstring_t::find_last_not_of(const pstring_t & } } if (f) - last_found = it; + last_found = pos; } return last_found; } template -typename pstring_t::iterator pstring_t::find(const pstring_t &search, iterator start) const +typename pstring_t::size_type pstring_t::find(const pstring_t &search, size_type start) const { - for (; start != end(); ++start) + auto istart = std::next(begin(), static_cast(start)); + for (; istart != end(); ++istart) { - iterator itc(start); + auto itc(istart); auto cmp = search.begin(); while (itc != end() && cmp != search.end() && *itc == *cmp) { @@ -180,333 +141,126 @@ typename pstring_t::iterator pstring_t::find(const pstring_t &search, iter } if (cmp == search.end()) return start; + ++start; } - return end(); + return npos; } template -typename pstring_t::iterator pstring_t::find(const code_t search, iterator start) const +typename pstring_t::size_type pstring_t::find(code_t search, size_type start) const { - mem_t buf[traits::MAXCODELEN+1] = { 0 }; - traits::encode(search, buf); - return find(pstring_t(&buf[0], UTF8), start); + pstring_t ss; + traits_type::encode(search, ss.m_str); + return find(ss, start); } template -pstring_t pstring_t::replace(const pstring_t &search, const pstring_t &replace) const +pstring_t pstring_t::replace_all(const pstring_t &search, const pstring_t &replace) const { - pstring_t ret(""); - const size_type slen = search.len(); + pstring_t ret; + const size_type slen = search.length(); - auto last_s = begin(); - auto s = find(search, last_s); - while (s != end()) + size_type last_s = 0; + size_type s = find(search, last_s); + while (s != npos) { - ret += substr(last_s, s); + ret += substr(last_s, s - last_s); ret += replace; last_s = s + slen; s = find(search, last_s); } - ret += substr(last_s, end()); + ret += substr(last_s); return ret; } template -const pstring_t pstring_t::ltrim(const pstring_t &ws) const -{ - return substr(find_first_not_of(ws), end()); -} - -template -const pstring_t pstring_t::rtrim(const pstring_t &ws) const -{ - auto f = find_last_not_of(ws); - if (f==end()) - return pstring_t(""); - else - return substr(begin(), f + 1); -} - -template -const pstring_t pstring_t::rpad(const pstring_t &ws, const size_type cnt) const +pstring_t pstring_t::rpad(const pstring_t &ws, const size_type cnt) const { // FIXME: pstringbuffer ret(*this); pstring_t ret(*this); - size_type wsl = ws.len(); - for (auto i = ret.len(); i < cnt; i+=wsl) + size_type wsl = ws.length(); + for (auto i = ret.length(); i < cnt; i+=wsl) ret += ws; return ret; } - -template -void pstring_t::pcopy(const mem_t *from) +static double pstod(const pstring_t &str, std::size_t *e) { - pcopy(from, strlen_mem(from)); + return std::stod(str.cpp_string(), e); } -template -double pstring_t::as_double(bool *error) const +static double pstod(const pstring &str, std::size_t *e) { - double ret; - char *e = nullptr; - - if (error != nullptr) - *error = false; - ret = std::strtod(c_str(), &e); - if (*e != 0) - if (error != nullptr) - *error = true; - return ret; -} - -template -long pstring_t::as_long(bool *error) const -{ - long ret; - char *e = nullptr; - - if (error != nullptr) - *error = false; - if (startsWith("0x")) - ret = std::strtol(substr(2).c_str(), &e, 16); - else - ret = std::strtol(c_str(), &e, 10); - if (*e != 0) - if (error != nullptr) - *error = true; - return ret; + return std::stod(str.cpp_string(), e); } -template -bool pstring_t::startsWith(const pstring_t &arg) const -{ - if (arg.blen() > blen()) - return false; - else - return std::equal(arg.c_str(), arg.c_str() + arg.blen(), c_str()); -} - -template -bool pstring_t::endsWith(const pstring_t &arg) const -{ - if (arg.blen() > blen()) - return false; - else - return std::equal(arg.c_str(), arg.c_str() + arg.blen(), c_str()+this->blen()-arg.blen()); -} - -// ---------------------------------------------------------------------------------------- -// pstringbuffer -// ---------------------------------------------------------------------------------------- - -pstringbuffer::~pstringbuffer() +static double pstod(const pwstring &str, std::size_t *e) { - if (m_ptr != nullptr) - plib::pfree_array(m_ptr); + return std::stod(str.cpp_string(), e); } -void pstringbuffer::resize(const std::size_t size) +static double pstod(const pu16string &str, std::size_t *e) { - if (m_ptr == nullptr) - { - m_size = DEFAULT_SIZE; - while (m_size <= size) - m_size *= 2; - m_ptr = plib::palloc_array(m_size); - *m_ptr = 0; - m_len = 0; - } - else if (m_size < size) - { - while (m_size < size) - m_size *= 2; - char *new_buf = plib::palloc_array(m_size); - std::copy(m_ptr, m_ptr + m_len + 1, new_buf); - plib::pfree_array(m_ptr); - m_ptr = new_buf; - } + pstring c; + c = str; + return std::stod(c.cpp_string(), e); } -void pstringbuffer::pcopy(const char *from) +static long pstol(const pstring_t &str, std::size_t *e, int base = 10) { - std::size_t nl = strlen_mem(from) + 1; - resize(nl); - std::copy(from, from + nl, m_ptr); + return std::stol(str.cpp_string(), e, base); } -void pstringbuffer::pcopy(const pstring &from) +static long pstol(const pstring &str, std::size_t *e, int base = 10) { - std::size_t nl = from.blen() + 1; - resize(nl); - std::copy(from.c_str(), from.c_str() + nl, m_ptr); + return std::stol(str.cpp_string(), e, base); } -void pstringbuffer::pcat(const char *s) +static long pstol(const pwstring &str, std::size_t *e, int base = 10) { - const std::size_t slen = strlen_mem(s); - const std::size_t nl = m_len + slen + 1; - resize(nl); - std::copy(s, s + slen + 1, m_ptr + m_len); - m_len += slen; + return std::stol(str.cpp_string(), e, base); } -void pstringbuffer::pcat(const void *m, std::size_t l) +static long pstol(const pu16string &str, std::size_t *e, int base = 10) { - const std::size_t nl = m_len + l + 1; - resize(nl); - std::copy(static_cast(m), static_cast(m) + l, m_ptr + m_len); - m_len += l; - *(m_ptr + m_len) = 0; + pstring c; + c = str; + return std::stol(c.cpp_string(), e, base); } -void pstringbuffer::pcat(const pstring &s) -{ - const std::size_t slen = s.blen(); - const std::size_t nl = m_len + slen + 1; - resize(nl); - std::copy(s.c_str(), s.c_str() + slen, m_ptr + m_len); - m_len += slen; - m_ptr[m_len] = 0; -} - -// ---------------------------------------------------------------------------------------- -// static stuff ... -// ---------------------------------------------------------------------------------------- - -/* - * Cached allocation of string memory - * - * This improves startup performance by 30%. - */ - -#if 1 - -static std::stack *stk = nullptr; - -static inline std::size_t countleadbits(std::size_t x) +template +double pstring_t::as_double(bool *error) const { -#ifndef count_leading_zeros - std::size_t msk; - std::size_t ret; - if (x < 0x100) - { - msk = 0x80; - ret = 24; - } - else if (x < 0x10000) - { - msk = 0x8000; - ret = 16; - } - else if (x < 0x1000000) - { - msk = 0x800000; - ret = 8; - } - else - { - msk = 0x80000000; - ret = 0; - } - while ((msk & x) == 0 && ret < 31) - { - msk = msk >> 1; - ret++; - } + std::size_t e = 0; + if (error != nullptr) + *error = false; + double ret = pstod(*this, &e); + if (e != mem_t_size()) + if (error != nullptr) + *error = true; return ret; -#else - return count_leading_zeros(x); -#endif } template -void pstring_t::sfree(pstr_t *s) +long pstring_t::as_long(bool *error) const { - if (s != nullptr) - { - bool b = s->dec_and_check(); - if ( b && s != &m_zero) - { - if (stk != nullptr) - { - size_type sn= ((32 - countleadbits(s->len())) + 1) / 2; - stk[sn].push(s); - } - else - plib::pfree_array(reinterpret_cast(s)); - } - } -} + static pstring_t prefix(pstring("0x")); + long ret; + std::size_t e = 0; -template -pstr_t *pstring_t::salloc(std::size_t n) -{ - if (stk == nullptr) - stk = plib::palloc_array>(17); - pstr_t *p; - std::size_t sn= ((32 - countleadbits(n)) + 1) / 2; - std::size_t size = sizeof(pstr_t) + (static_cast(1)<<(sn * 2)) + 1; - if (stk[sn].empty()) - p = reinterpret_cast(plib::palloc_array(size)); + if (error != nullptr) + *error = false; + if (startsWith(prefix)) + ret = pstol(substr(2), &e, 16); else - { - p = stk[sn].top(); - stk[sn].pop(); - } - - // str_t *p = (str_t *) mm_malloc(size, 8); - p->init(n); - return p; -} -template -void pstring_t::resetmem() -{ - if (stk != nullptr) - { - for (std::size_t i=0; i<=16; i++) - { - for (; stk[i].size() > 0; ) - { - plib::pfree_array(stk[i].top()); - stk[i].pop(); - } - } - plib::pfree_array(stk); - stk = nullptr; - } -} - - -#else -template -void pstring_t::sfree(pstr_t *s) -{ - bool b = s->dec_and_check(); - if ( b && s != &m_zero) - { - plib::pfree_array(((char *)s)); - } -} - -template -pstr_t *pstring_t::salloc(std::size_t n) -{ - int size = sizeof(pstr_t) + n + 1; - pstr_t *p = (pstr_t *) plib::palloc_array(size); - // str_t *p = (str_t *) mm_malloc(size, 8); - p->init(n); - return p; -} - -template -void pstring_t::resetmem() -{ - // Release the 0 string + ret = pstol(*this, &e, 10); + if (e != mem_t_size()) + if (error != nullptr) + *error = true; + return ret; } -#endif // ---------------------------------------------------------------------------------------- // template stuff ... @@ -514,7 +268,5 @@ void pstring_t::resetmem() template struct pstring_t; template struct pstring_t; - -const unsigned pu8_traits::MAXCODELEN; -const unsigned putf8_traits::MAXCODELEN; -const int pstringbuffer::DEFAULT_SIZE; +template struct pstring_t; +template struct pstring_t; diff --git a/src/lib/netlist/plib/pstring.h b/src/lib/netlist/plib/pstring.h index 394b8c193de..cabce0e7b93 100644 --- a/src/lib/netlist/plib/pstring.h +++ b/src/lib/netlist/plib/pstring.h @@ -9,233 +9,281 @@ #include #include +#include // ---------------------------------------------------------------------------------------- -// pstring: immutable strings ... +// pstring: semi-immutable strings ... // -// pstrings are just a pointer to a "pascal-style" string representation. -// It uses reference counts and only uses new memory when a string changes. +// The only reason this class exists is the absence of support for multi-byte +// strings in std:: which I would consider usuable for the use-cases I encounter. // ---------------------------------------------------------------------------------------- -struct pstr_t +template +class pstring_const_iterator final { - explicit pstr_t(const std::size_t alen) { init(alen); } - void init(const std::size_t alen) - { - m_ref_count = 1; - m_len = alen; - m_str[0] = 0; - } - char *str() { return &m_str[0]; } - unsigned char *ustr() { return reinterpret_cast(&m_str[0]); } - std::size_t len() const { return m_len; } - void inc() { m_ref_count++; } - bool dec_and_check() { --m_ref_count; return m_ref_count == 0; } - void copy_from(const char *p, std::size_t n) { std::copy(p, p + n, str()); } +public: + + typedef typename T::ref_value_type value_type; + + typedef value_type const *pointer; + typedef value_type const &reference; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + typedef typename T::string_type string_type; + typedef typename T::traits_type traits_type; + + pstring_const_iterator() noexcept : p() { } + explicit constexpr pstring_const_iterator(const typename string_type::const_iterator &x) noexcept : p(x) { } +#if !defined(_MSC_VER) || !defined(_ITERATOR_DEBUG_LEVEL) || (0 == _ITERATOR_DEBUG_LEVEL) // debug iterators are broken + pstring_const_iterator(const pstring_const_iterator &rhs) noexcept = default; + pstring_const_iterator(pstring_const_iterator &&rhs) noexcept = default; + pstring_const_iterator &operator=(const pstring_const_iterator &rhs) noexcept = default; + pstring_const_iterator &operator=(pstring_const_iterator &&rhs) noexcept = default; +#endif + + pstring_const_iterator& operator++() noexcept { p += static_cast(traits_type::codelen(&(*p))); return *this; } + pstring_const_iterator operator++(int) noexcept { pstring_const_iterator tmp(*this); operator++(); return tmp; } + + bool operator==(const pstring_const_iterator& rhs) const noexcept { return p == rhs.p; } + bool operator!=(const pstring_const_iterator& rhs) const noexcept { return p != rhs.p; } + + reference operator*() const noexcept { return *reinterpret_cast(&(*p)); } + pointer operator->() const noexcept { return reinterpret_cast(&(*p)); } + private: - int m_ref_count; - std::size_t m_len; - char m_str[1]; + template friend struct pstring_t; + typename string_type::const_iterator p; }; + template struct pstring_t { public: - typedef F traits; + typedef F traits_type; + + typedef typename traits_type::mem_t mem_t; + typedef typename traits_type::code_t code_t; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef typename traits_type::string_type string_type; - typedef typename F::mem_t mem_t; - typedef typename F::code_t code_t; - typedef std::size_t size_type; + class ref_value_type final + { + public: + ref_value_type() = delete; + ref_value_type(const ref_value_type &) = delete; + ref_value_type(ref_value_type &&) = delete; + ref_value_type &operator=(const ref_value_type &) = delete; + ref_value_type &operator=(ref_value_type &&) = delete; + operator code_t() const noexcept { return traits_type::code(&m); } + private: + const mem_t m; + }; + typedef const ref_value_type& const_reference; + typedef const_reference reference; enum enc_t { - UTF8 + UTF8, + UTF16 }; // simple construction/destruction - pstring_t() : m_ptr(&m_zero) + pstring_t() + { + } + ~pstring_t() { - init(nullptr); } - ~pstring_t(); // FIXME: Do something with encoding - pstring_t(const mem_t *string, const enc_t enc) : m_ptr(&m_zero) + pstring_t(const mem_t *string, const enc_t enc) + : m_str(string) + { + } + + pstring_t(const mem_t *string, const size_type len, const enc_t enc) + : m_str(string, len) { - init(string); } - template - pstring_t(C (&string)[N]) : m_ptr(&m_zero) { - static_assert(std::is_same::value, "pstring constructor only accepts const mem_t"); - static_assert(N>0,"pstring from array of length 0"); + template::value>::type> + pstring_t(C (&string)[N]) + { + static_assert(N > 0,"pstring from array of length 0"); if (string[N-1] != 0) throw std::exception(); - init(string); + m_str.assign(string, N - 1); } - pstring_t(const pstring_t &string) : m_ptr(&m_zero) { init(string); } - pstring_t(pstring_t &&string) : m_ptr(string.m_ptr) { string.m_ptr = nullptr; } - explicit pstring_t(code_t code) : m_ptr(&m_zero) { pstring_t t; t+= code; init(t); } + pstring_t(const pstring_t &string) + : m_str(string.m_str) + { } + + explicit pstring_t(const string_type &string, const enc_t enc) + : m_str(string) + { } - // assignment operators - pstring_t &operator=(const pstring_t &string) { pcopy(string); return *this; } + pstring_t(pstring_t &&string) + : m_str(string.m_str) + { } - struct iterator final : public std::iterator + explicit pstring_t(code_t code) { - const mem_t * p; - public: - explicit constexpr iterator(const mem_t *x) noexcept : p(x) {} - iterator(const iterator &rhs) noexcept = default; - iterator(iterator &&rhs) noexcept { p = rhs.p; } - iterator &operator=(const iterator &it) { p = it.p; return *this; } - iterator& operator++() noexcept { p += traits::codelen(p); return *this; } - iterator operator++(int) noexcept { iterator tmp(*this); operator++(); return tmp; } - bool operator==(const iterator& rhs) noexcept { return p==rhs.p; } - bool operator!=(const iterator& rhs) noexcept { return p!=rhs.p; } - const code_t operator*() noexcept { return traits::code(p); } - iterator& operator+=(size_type count) { while (count>0) { --count; ++(*this); } return *this; } - friend iterator operator+(iterator lhs, const size_type &rhs) { return (lhs += rhs); } - }; + *this += code; + } - iterator begin() const { return iterator(m_ptr->str()); } - iterator end() const { return iterator(m_ptr->str() + blen()); } + template ::value>::type> + explicit pstring_t(const pstring_t &string) + { + m_str.clear(); + for (auto &c : string) + *this += static_cast(c); // FIXME: codepage conversion for u8 + } - // C string conversion helpers - const mem_t *c_str() const { return m_ptr->str(); } + pstring_t &operator=(const pstring_t &string) { m_str = string.m_str; return *this; } - // concatenation operators - pstring_t& operator+=(const pstring_t &string) { pcat(string); return *this; } - friend pstring_t operator+(const pstring_t &lhs, const pstring_t &rhs) { return pstring_t(lhs) += rhs; } - - // comparison operators - bool operator==(const pstring_t &string) const { return (pcmp(string) == 0); } - bool operator!=(const pstring_t &string) const { return (pcmp(string) != 0); } + template ::value>::type> + pstring_t &operator=(const pstring_t &string) + { + m_str.clear(); + for (auto &c : string) + *this += c; + return *this; + } - bool operator<(const pstring_t &string) const { return (pcmp(string) < 0); } - bool operator<=(const pstring_t &string) const { return (pcmp(string) <= 0); } - bool operator>(const pstring_t &string) const { return (pcmp(string) > 0); } - bool operator>=(const pstring_t &string) const { return (pcmp(string) >= 0); } + // no non-const const_iterator for now + typedef pstring_const_iterator iterator; + typedef pstring_const_iterator const_iterator; - bool equals(const pstring_t &string) const { return (pcmp(string) == 0); } - bool startsWith(const pstring_t &arg) const; - bool endsWith(const pstring_t &arg) const; + iterator begin() { return iterator(m_str.begin()); } + iterator end() { return iterator(m_str.end()); } + const_iterator begin() const { return const_iterator(m_str.begin()); } + const_iterator end() const { return const_iterator(m_str.end()); } + const_iterator cbegin() const { return const_iterator(m_str.begin()); } + const_iterator cend() const { return const_iterator(m_str.end()); } - pstring_t replace(const pstring_t &search, const pstring_t &replace) const; - const pstring_t cat(const pstring_t &s) const { return *this + s; } - const pstring_t cat(const code_t c) const { return *this + c; } + // C string conversion helpers + const mem_t *c_str() const { return static_cast(m_str.c_str()); } + const mem_t *data() const { return c_str(); } - size_type blen() const { return m_ptr->len(); } + size_type length() const { return traits_type::len(m_str); } + size_type size() const { return traits_type::len(m_str); } + bool empty() const { return m_str.size() == 0; } - // conversions + pstring_t substr(size_type start, size_type nlen = npos) const; + int compare(const pstring_t &right) const; - double as_double(bool *error = nullptr) const; - long as_long(bool *error = nullptr) const; + size_type find(const pstring_t &search, size_type start = 0) const; + size_type find(code_t search, size_type start = 0) const; - size_type len() const - { - return traits::len(m_ptr); - } + size_type find_first_not_of(const pstring_t &no) const; + size_type find_last_not_of(const pstring_t &no) const; - pstring_t& operator+=(const code_t c) { mem_t buf[traits::MAXCODELEN+1] = { 0 }; traits::encode(c, buf); pcat(buf); return *this; } + // concatenation operators + pstring_t& operator+=(const pstring_t &string) { m_str.append(string.m_str); return *this; } + pstring_t& operator+=(const code_t c) { traits_type::encode(c, m_str); return *this; } + friend pstring_t operator+(const pstring_t &lhs, const pstring_t &rhs) { return pstring_t(lhs) += rhs; } friend pstring_t operator+(const pstring_t &lhs, const code_t rhs) { return pstring_t(lhs) += rhs; } - iterator find(const pstring_t &search, iterator start) const; - iterator find(const pstring_t &search) const { return find(search, begin()); } - iterator find(const code_t search, iterator start) const; - iterator find(const code_t search) const { return find(search, begin()); } + // comparison operators + bool operator==(const pstring_t &string) const { return (compare(string) == 0); } + bool operator!=(const pstring_t &string) const { return (compare(string) != 0); } - const pstring_t substr(const iterator &start, const iterator &end) const ; - const pstring_t substr(const iterator &start) const { return substr(start, end()); } - const pstring_t substr(size_type start) const { return (start >= len()) ? pstring_t("") : substr(begin() + start, end()); } + bool operator<(const pstring_t &string) const { return (compare(string) < 0); } + bool operator<=(const pstring_t &string) const { return (compare(string) <= 0); } + bool operator>(const pstring_t &string) const { return (compare(string) > 0); } + bool operator>=(const pstring_t &string) const { return (compare(string) >= 0); } - const pstring_t left(iterator leftof) const { return substr(begin(), leftof); } - const pstring_t right(iterator pos) const { return substr(pos, end()); } + const_reference at(const size_type pos) const { return *reinterpret_cast(F::nthcode(m_str.c_str(),pos)); } - iterator find_first_not_of(const pstring_t &no) const; - iterator find_last_not_of(const pstring_t &no) const; + /* The following is not compatible to std::string */ - const pstring_t ltrim(const pstring_t &ws = pstring_t(" \t\n\r")) const; - const pstring_t rtrim(const pstring_t &ws = pstring_t(" \t\n\r")) const; - const pstring_t trim(const pstring_t &ws = pstring_t(" \t\n\r")) const { return this->ltrim(ws).rtrim(ws); } + bool equals(const pstring_t &string) const { return (compare(string) == 0); } - const pstring_t rpad(const pstring_t &ws, const size_type cnt) const; + bool startsWith(const pstring_t &arg) const { return arg.mem_t_size() > mem_t_size() ? false : m_str.compare(0, arg.mem_t_size(), arg.m_str) == 0; } + bool endsWith(const pstring_t &arg) const { return arg.mem_t_size() > mem_t_size() ? false : m_str.compare(mem_t_size()-arg.mem_t_size(), arg.mem_t_size(), arg.m_str) == 0; } - code_t code_at(const size_type pos) const { return F::code(F::nthcode(m_ptr->str(),pos)); } + pstring_t replace_all(const pstring_t &search, const pstring_t &replace) const; + pstring_t cat(const pstring_t &s) const { return *this + s; } + pstring_t cat(code_t c) const { return *this + c; } - const pstring_t ucase() const; + // conversions - static void resetmem(); + double as_double(bool *error = nullptr) const; + long as_long(bool *error = nullptr) const; -protected: - pstr_t *m_ptr; + /* the following are extensions to */ -private: - void init(const mem_t *string) + size_type mem_t_size() const { return m_str.size(); } + + pstring_t left(size_type len) const { return substr(0, len); } + pstring_t right(size_type nlen) const { - m_ptr->inc(); - if (string != nullptr && *string != 0) - pcopy(string); + return nlen >= length() ? *this : substr(length() - nlen, nlen); } - void init(const pstring_t &string) + + pstring_t ltrim(const pstring_t &ws = pstring_t(" \t\n\r")) const { - m_ptr->inc(); - pcopy(string); + return substr(find_first_not_of(ws)); } - int pcmp(const pstring_t &right) const; - - void pcopy(const mem_t *from, std::size_t size); - - void pcopy(const mem_t *from); - void pcopy(const pstring_t &from) + pstring_t rtrim(const pstring_t &ws = pstring_t(" \t\n\r")) const { - sfree(m_ptr); - m_ptr = from.m_ptr; - m_ptr->inc(); + auto f = find_last_not_of(ws); + return f == npos ? pstring_t() : substr(0, f + 1); } - void pcat(const mem_t *s); - void pcat(const pstring_t &s); - static pstr_t *salloc(std::size_t n); - static void sfree(pstr_t *s); + pstring_t trim(const pstring_t &ws = pstring_t(" \t\n\r")) const { return this->ltrim(ws).rtrim(ws); } + + pstring_t rpad(const pstring_t &ws, const size_type cnt) const; + + pstring_t ucase() const; + + const string_type &cpp_string() const { return m_str; } + + static const size_type npos = static_cast(-1); + +protected: + string_type m_str; - static pstr_t m_zero; +private: }; struct pu8_traits { - static const unsigned MAXCODELEN = 1; /* in memory units */ typedef char mem_t; typedef char code_t; - static std::size_t len(const pstr_t *p) { return p->len(); } - static unsigned codelen(const mem_t *p) { return 1; } - static unsigned codelen(const code_t c) { return 1; } + typedef std::string string_type; + static std::size_t len(const string_type &p) { return p.size(); } + static std::size_t codelen(const mem_t *p) { return 1; } + static std::size_t codelen(const code_t c) { return 1; } static code_t code(const mem_t *p) { return *p; } - static void encode(const code_t c, mem_t *p) { *p = c; } + static void encode(const code_t c, string_type &s) { s += static_cast(c); } static const mem_t *nthcode(const mem_t *p, const std::size_t n) { return &(p[n]); } }; /* No checking, this may deliver invalid codes */ struct putf8_traits { - static const unsigned MAXCODELEN = 4; /* in memory units, RFC 3629 */ typedef char mem_t; - typedef unsigned code_t; - static std::size_t len(pstr_t *p) + typedef char32_t code_t; + typedef std::string string_type; + static std::size_t len(const string_type &p) { std::size_t ret = 0; - unsigned char *c = p->ustr(); - while (*c) + for (const auto &c : p) { - if (!((*c & 0xC0) == 0x80)) + if (!((c & 0xC0) == 0x80)) ret++; - c++; } return ret; } - static unsigned codelen(const mem_t *p) + static std::size_t codelen(const mem_t *p) { const unsigned char *p1 = reinterpret_cast(p); if ((*p1 & 0x80) == 0x00) @@ -251,7 +299,7 @@ struct putf8_traits return 1; // not correct } } - static unsigned codelen(const code_t c) + static std::size_t codelen(const code_t c) { if (c < 0x0080) return 1; @@ -276,30 +324,29 @@ struct putf8_traits else return *p1; // not correct } - static void encode(const code_t c, mem_t *p) + static void encode(const code_t c, string_type &s) { - unsigned char *m = reinterpret_cast(p); if (c < 0x0080) { - m[0] = static_cast(c); + s += static_cast(c); } else if (c < 0x800) { - m[0] = static_cast(0xC0 | (c >> 6)); - m[1] = static_cast(0x80 | (c & 0x3f)); + s += static_cast(0xC0 | (c >> 6)); + s += static_cast(0x80 | (c & 0x3f)); } else if (c < 0x10000) { - m[0] = static_cast(0xE0 | (c >> 12)); - m[1] = static_cast(0x80 | ((c>>6) & 0x3f)); - m[2] = static_cast(0x80 | (c & 0x3f)); + s += static_cast(0xE0 | (c >> 12)); + s += static_cast(0x80 | ((c>>6) & 0x3f)); + s += static_cast(0x80 | (c & 0x3f)); } else /* U+10000 U+1FFFFF */ { - m[0] = static_cast(0xF0 | (c >> 18)); - m[1] = static_cast(0x80 | ((c>>12) & 0x3f)); - m[2] = static_cast(0x80 | ((c>>6) & 0x3f)); - m[3] = static_cast(0x80 | (c & 0x3f)); + s += static_cast(0xF0 | (c >> 18)); + s += static_cast(0x80 | ((c>>12) & 0x3f)); + s += static_cast(0x80 | ((c>>6) & 0x3f)); + s += static_cast(0x80 | (c & 0x3f)); } } static const mem_t *nthcode(const mem_t *p, const std::size_t n) @@ -312,91 +359,191 @@ struct putf8_traits } }; -extern template struct pstring_t; -extern template struct pstring_t; - -typedef pstring_t pstring; - -// ---------------------------------------------------------------------------------------- -// pstringbuffer: a string buffer implementation -// -// string buffer are optimized to handle concatenations. This implementation is designed -// to specifically interact with pstrings nicely. -// ---------------------------------------------------------------------------------------- - -struct pstringbuffer +struct putf16_traits { -public: - - static const int DEFAULT_SIZE = 2048; - // simple construction/destruction - pstringbuffer() + typedef char16_t mem_t; + typedef char32_t code_t; + typedef std::u16string string_type; + static std::size_t len(const string_type &p) { - init(); - resize(DEFAULT_SIZE); + std::size_t ret = 0; + auto i = p.begin(); + while (i != p.end()) + { + // FIXME: check that size is equal + uint16_t c = static_cast(*i++); + if (!((c & 0xd800) == 0xd800)) + ret++; + } + return ret; } + static std::size_t codelen(const mem_t *p) + { + uint16_t c = static_cast(*p); + return ((c & 0xd800) == 0xd800) ? 2 : 1; + } + static std::size_t codelen(const code_t c) + { + if (c < 0x10000) + return 1; + else /* U+10000 U+1FFFFF */ + return 2; + } + static code_t code(const mem_t *p) + { + uint32_t c = static_cast(*p++); + if ((c & 0xd800) == 0xd800) + { + c = (c - 0xd800) << 10; + c += static_cast(*p) - 0xdc00 + 0x10000; + } + return static_cast(c); + } + static void encode(code_t c, string_type &s) + { + uint32_t cu = static_cast(c); + if (c > 0xffff) + { //make a surrogate pair + uint32_t t = ((cu - 0x10000) >> 10) + 0xd800; + cu = (cu & 0x3ff) + 0xdc00; + s += static_cast(t); + s += static_cast(cu); + } + else + { + s += static_cast(cu); + } + } + static const mem_t *nthcode(const mem_t *p, const std::size_t n) + { + std::size_t i = n; + while (i-- > 0) + p += codelen(p); + return p; + } +}; - ~pstringbuffer(); - - // construction with copy - explicit pstringbuffer(const char *string) {init(); if (string != nullptr) pcopy(string); } - explicit pstringbuffer(const pstring &string) {init(); pcopy(string); } - pstringbuffer(const pstringbuffer &stringb) {init(); pcopy(stringb); } - pstringbuffer(pstringbuffer &&b) : m_ptr(b.m_ptr), m_size(b.m_size), m_len(b.m_len) { b.m_ptr = nullptr; b.m_size = 0; b.m_len = 0; } - - // assignment operators - pstringbuffer &operator=(const char *string) { pcopy(string); return *this; } - pstringbuffer &operator=(const pstring &string) { pcopy(string); return *this; } - pstringbuffer &operator=(const pstringbuffer &string) { pcopy(string); return *this; } - - // C string conversion helpers - const char *c_str() const { return m_ptr; } - - // FIXME: encoding should be parameter - operator pstring() const { return pstring(m_ptr, pstring::UTF8); } - - // concatenation operators - pstringbuffer& operator+=(const char c) { char buf[2] = { c, 0 }; pcat(buf); return *this; } - pstringbuffer& operator+=(const pstring &string) { pcat(string); return *this; } - pstringbuffer& operator+=(const char *string) { pcat(string); return *this; } - - std::size_t len() const { return m_len; } +struct pwchar_traits +{ + typedef wchar_t mem_t; + typedef char32_t code_t; + typedef std::wstring string_type; + static std::size_t len(const string_type &p) + { + if (sizeof(wchar_t) == 2) + { + std::size_t ret = 0; + auto i = p.begin(); + while (i != p.end()) + { + // FIXME: check that size is equal + uint32_t c = static_cast(*i++); + if (!((c & 0xd800) == 0xd800)) + ret++; + } + return ret; + } + else + return p.size(); + } - void cat(const pstring &s) { pcat(s); } - void cat(const char *s) { pcat(s); } - void cat(const void *m, std::size_t l) { pcat(m, l); } + static std::size_t codelen(const mem_t *p) + { + if (sizeof(wchar_t) == 2) + { + uint16_t c = static_cast(*p); + return ((c & 0xd800) == 0xd800) ? 2 : 1; + } + else + return 1; + } - void clear() { m_len = 0; *m_ptr = 0; } + static std::size_t codelen(const code_t c) + { + if (sizeof(wchar_t) == 2) + return ((c & 0xd800) == 0xd800) ? 2 : 1; + else + return 1; + } -private: + static code_t code(const mem_t *p) + { + if (sizeof(wchar_t) == 2) + { + uint32_t c = static_cast(*p++); + if ((c & 0xd800) == 0xd800) + { + c = (c - 0xd800) << 10; + c += static_cast(*p) - 0xdc00 + 0x10000; + } + return static_cast(c); + } + else + return static_cast(*p); + } - void init() + static void encode(code_t c, string_type &s) { - m_ptr = nullptr; - m_size = 0; - m_len = 0; + if (sizeof(wchar_t) == 2) + { + uint32_t cu = static_cast(c); + if (c > 0xffff) + { //make a surrogate pair + uint32_t t = ((cu - 0x10000) >> 10) + 0xd800; + cu = (cu & 0x3ff) + 0xdc00; + s += static_cast(t); + s += static_cast(cu); + } + else + s += static_cast(cu); + } + else + s += static_cast(c); } + static const mem_t *nthcode(const mem_t *p, const std::size_t n) + { + if (sizeof(wchar_t) == 2) + { + std::size_t i = n; + while (i-- > 0) + p += codelen(p); + return p; + } + else + return p + n; + } +}; - void resize(const std::size_t size); +extern template struct pstring_t; +extern template struct pstring_t; +extern template struct pstring_t; +extern template struct pstring_t; - void pcopy(const char *from); - void pcopy(const pstring &from); - void pcat(const char *s); - void pcat(const pstring &s); - void pcat(const void *m, std::size_t l); +typedef pstring_t pstring; +typedef pstring_t pu16string; +typedef pstring_t pwstring; - char *m_ptr; - std::size_t m_size; - std::size_t m_len; +namespace plib +{ + template + pstring to_string(const T &v) + { + return pstring(std::to_string(v), pstring::UTF8); + } -}; + template + pwstring to_wstring(const T &v) + { + return pwstring(std::to_wstring(v), pwstring::UTF16); + } +} // custom specialization of std::hash can be injected in namespace std namespace std { - template<> struct hash + template struct hash> { - typedef pstring argument_type; + typedef pstring_t argument_type; typedef std::size_t result_type; result_type operator()(argument_type const& s) const { diff --git a/src/lib/netlist/plib/putil.cpp b/src/lib/netlist/plib/putil.cpp index 0f09f512242..c34102417ec 100644 --- a/src/lib/netlist/plib/putil.cpp +++ b/src/lib/netlist/plib/putil.cpp @@ -44,21 +44,21 @@ namespace plib { std::vector ret; - pstring::iterator p = str.begin(); - pstring::iterator pn = str.find(onstr, p); + pstring::size_type p = 0; + pstring::size_type pn = str.find(onstr, p); - while (pn != str.end()) + while (pn != pstring::npos) { - pstring t = str.substr(p, pn); - if (!ignore_empty || t.len() != 0) + pstring t = str.substr(p, pn - p); + if (!ignore_empty || t.length() != 0) ret.push_back(t); - p = pn + onstr.len(); + p = pn + onstr.length(); pn = str.find(onstr, p); } - if (p != str.end()) + if (p < str.length()) { - pstring t = str.substr(p, str.end()); - if (!ignore_empty || t.len() != 0) + pstring t = str.substr(p); + if (!ignore_empty || t.length() != 0) ret.push_back(t); } return ret; @@ -69,13 +69,13 @@ namespace plib pstring col = ""; std::vector ret; - unsigned i = 0; - while (i(-1); for (std::size_t j=0; j < onstrl.size(); j++) { - if (std::equal(onstrl[j].c_str(), onstrl[j].c_str() + onstrl[j].blen(), &(str.c_str()[i]))) + if (std::equal(onstrl[j].begin(), onstrl[j].end(), i)) { p = j; break; @@ -88,13 +88,13 @@ namespace plib col = ""; ret.push_back(onstrl[p]); - i += onstrl[p].blen(); + i = std::next(i, static_cast(onstrl[p].length())); } else { - pstring::traits::code_t c = pstring::traits::code(str.c_str() + i); + pstring::code_t c = *i; col += c; - i+=pstring::traits::codelen(c); + i++; } } if (col != "") diff --git a/src/lib/netlist/prg/nltool.cpp b/src/lib/netlist/prg/nltool.cpp index e797399b9a1..675117bdd09 100644 --- a/src/lib/netlist/prg/nltool.cpp +++ b/src/lib/netlist/prg/nltool.cpp @@ -417,11 +417,11 @@ void tool_app_t::static_compile() void tool_app_t::mac_out(const pstring &s, const bool cont) { - static const unsigned RIGHT = 72; + static constexpr unsigned RIGHT = 72; if (cont) { unsigned adj = 0; - for (auto x : s) + for (const auto &x : s) adj += (x == '\t' ? 3 : 0); pout("{1}\\\n", s.rpad(" ", RIGHT-1-adj)); } @@ -434,13 +434,13 @@ void tool_app_t::cmac(const netlist::factory::element_t *e) auto v = plib::psplit(e->param_desc(), ","); pstring vs; for (auto s : v) - vs += ", p" + s.replace("+","").replace(".","_"); + vs += ", p" + s.replace_all("+", "").replace_all(".", "_"); mac_out("#define " + e->name() + "(name" + vs + ")"); mac_out("\tNET_REGISTER_DEV(" + e->name() +", name)"); for (auto s : v) { - pstring r(s.replace("+","").replace(".","_")); + pstring r(s.replace_all("+", "").replace_all(".", "_")); if (s.startsWith("+")) mac_out("\tNET_CONNECT(name, " + r + ", p" + r + ")"); else @@ -455,7 +455,7 @@ void tool_app_t::mac(const netlist::factory::element_t *e) pstring vs; for (auto s : v) { - vs += ", " + s.replace("+","").replace(".","_"); + vs += ", " + s.replace_all("+", "").replace_all(".", "_"); } pout("{1}(name{2})\n", e->name(), vs); if (v.size() > 0) @@ -463,7 +463,7 @@ void tool_app_t::mac(const netlist::factory::element_t *e) pout("/*\n"); for (auto s : v) { - pstring r(s.replace("+","").replace(".","_")); + pstring r(s.replace_all("+", "").replace_all(".", "_")); if (s.startsWith("+")) pout("{1:10}: Terminal\n",r); else @@ -507,7 +507,7 @@ void tool_app_t::create_header() { last_source = e->sourcefile(); pout("{1}\n", pstring("// ").rpad("-", 72)); - pout("{1}\n", pstring("// Source: ").cat(e->sourcefile().replace("../",""))); + pout("{1}{2}\n", pstring("// Source: "), e->sourcefile().replace_all("../", "")); pout("{1}\n", pstring("// ").rpad("-", 72)); } cmac(e.get()); @@ -591,7 +591,7 @@ void tool_app_t::listdevices() for (auto & f : list) { - pstring out = plib::pfmt("{1} {2}(")(f->classname(),"-20")(f->name()); + pstring out = plib::pfmt("{1:-20} {2}(")(f->classname())(f->name()); std::vector terms; f->macro_actions(nt.setup().netlist(), f->name() + "_lc"); @@ -602,8 +602,8 @@ void tool_app_t::listdevices() { if (t.second->name().startsWith(d->name())) { - pstring tn(t.second->name().substr(d->name().len()+1)); - if (tn.find(".") == tn.end()) + pstring tn(t.second->name().substr(d->name().length()+1)); + if (tn.find(".") == pstring::npos) terms.push_back(tn); } } @@ -612,16 +612,16 @@ void tool_app_t::listdevices() { if (t.first.startsWith(d->name())) { - pstring tn(t.first.substr(d->name().len()+1)); + pstring tn(t.first.substr(d->name().length()+1)); //printf("\t%s %s %s\n", t.first.c_str(), t.second.c_str(), tn.c_str()); - if (tn.find(".") == tn.end()) + if (tn.find(".") == pstring::npos) { terms.push_back(tn); pstring resolved = nt.setup().resolve_alias(t.first); //printf("\t%s %s %s\n", t.first.c_str(), t.second.c_str(), resolved.c_str()); if (resolved != t.first) { - auto found = std::find(terms.begin(), terms.end(), resolved.substr(d->name().len()+1)); + auto found = std::find(terms.begin(), terms.end(), resolved.substr(d->name().length()+1)); if (found!=terms.end()) terms.erase(found); } @@ -771,7 +771,13 @@ int tool_app_t::execute() perr("plib exception caught: {}\n", e.text()); } - pstring::resetmem(); +#if 0 +#define str(x) # x +#define strx(x) str(x) +#define ttt strx(__cplusplus) + printf("%s\n", ttt); +#endif + return 0; } diff --git a/src/lib/netlist/solver/nld_matrix_solver.cpp b/src/lib/netlist/solver/nld_matrix_solver.cpp index 8adf3de2415..6636bff6238 100644 --- a/src/lib/netlist/solver/nld_matrix_solver.cpp +++ b/src/lib/netlist/solver/nld_matrix_solver.cpp @@ -148,7 +148,8 @@ void matrix_solver_t::setup_base(analog_net_t::list_t &nets) if (net_proxy_output == nullptr) { - auto net_proxy_output_u = plib::make_unique(*this, this->name() + "." + plib::pfmt("m{1}")(m_inps.size())); + pstring nname = this->name() + "." + pstring(plib::pfmt("m{1}")(m_inps.size())); + auto net_proxy_output_u = plib::make_unique(*this, nname); net_proxy_output = net_proxy_output_u.get(); m_inps.push_back(std::move(net_proxy_output_u)); nl_assert(p->net().is_analog()); @@ -327,9 +328,9 @@ void matrix_solver_t::setup_matrix() if ((0)) for (unsigned k = 0; k < iN; k++) { - pstring line = plib::pfmt("{1}")(k, "3"); + pstring line = plib::pfmt("{1:3}")(k); for (unsigned j = 0; j < m_terms[k]->m_nzrd.size(); j++) - line += plib::pfmt(" {1}")(m_terms[k]->m_nzrd[j], "3"); + line += plib::pfmt(" {1:3}")(m_terms[k]->m_nzrd[j]); log().verbose("{1}", line); } diff --git a/src/lib/netlist/solver/nld_matrix_solver.h b/src/lib/netlist/solver/nld_matrix_solver.h index 50011d2ef6d..8bc383b5196 100644 --- a/src/lib/netlist/solver/nld_matrix_solver.h +++ b/src/lib/netlist/solver/nld_matrix_solver.h @@ -136,7 +136,7 @@ public: virtual std::pair create_solver_code() { - return std::pair("", plib::pfmt("/* {1} doesn't support static compile */")); + return std::pair("", plib::pfmt("/* solver doesn't support static compile */\n\n")); } protected: diff --git a/src/lib/netlist/solver/nld_ms_direct.h b/src/lib/netlist/solver/nld_ms_direct.h index 835a808c1c9..7ea9a57ece2 100644 --- a/src/lib/netlist/solver/nld_ms_direct.h +++ b/src/lib/netlist/solver/nld_ms_direct.h @@ -36,7 +36,7 @@ namespace netlist #if TEST_PARALLEL #define MAXTHR 10 -static const int num_thr = 3; +static constexpr int num_thr = 3; struct thr_intf { @@ -165,7 +165,7 @@ protected: private: //static const std::size_t m_pitch = (((storage_N + 1) + 0) / 1) * 1; - static const std::size_t m_pitch = (((storage_N + 1) + 7) / 8) * 8; + static constexpr std::size_t m_pitch = (((storage_N + 1) + 7) / 8) * 8; //static const std::size_t m_pitch = (((storage_N + 1) + 15) / 16) * 16; //static const std::size_t m_pitch = (((storage_N + 1) + 31) / 32) * 32; #if (NL_USE_DYNAMIC_ALLOCATION) diff --git a/src/lib/netlist/solver/nld_ms_gcr.h b/src/lib/netlist/solver/nld_ms_gcr.h index b5601e9d65f..744bca452ad 100644 --- a/src/lib/netlist/solver/nld_ms_gcr.h +++ b/src/lib/netlist/solver/nld_ms_gcr.h @@ -33,7 +33,7 @@ public: : matrix_solver_t(anetlist, name, matrix_solver_t::ASCENDING, params) , m_dim(size) , mat(size) - , m_proc(nullptr) + , m_proc() { } @@ -63,7 +63,8 @@ private: std::vector m_term_cr[storage_N]; mat_cr_t mat; - extsolver m_proc; + //extsolver m_proc; + plib::dynproc m_proc; }; @@ -153,11 +154,19 @@ void matrix_solver_GCR_t::vsetup(analog_net_t::list_t &nets) if (netlist().lib().isLoaded()) { pstring symname = static_compile_name(); +#if 0 m_proc = this->netlist().lib().template getsym(symname); if (m_proc != nullptr) this->log().verbose("External static solver {1} found ...", symname); else this->log().warning("External static solver {1} not found ...", symname); +#else + m_proc.load(this->netlist().lib(), symname); + if (m_proc.resolved()) + this->log().warning("External static solver {1} found ...", symname); + else + this->log().warning("External static solver {1} not found ...", symname); +#endif } } @@ -375,10 +384,11 @@ unsigned matrix_solver_GCR_t::vsolve_non_dynamic(const bool newt /* now solve it */ - if (m_proc != nullptr) + //if (m_proc != nullptr) + if (m_proc.resolved()) { //static_solver(m_A, RHS); - m_proc(mat.A, RHS, new_V); + m_proc(&mat.A[0], &RHS[0], &new_V[0]); } else { diff --git a/src/lib/netlist/solver/nld_ms_sm.h b/src/lib/netlist/solver/nld_ms_sm.h index 0d6607d9527..c759d135725 100644 --- a/src/lib/netlist/solver/nld_ms_sm.h +++ b/src/lib/netlist/solver/nld_ms_sm.h @@ -92,7 +92,7 @@ protected: nl_double m_last_RHS[storage_N]; // right hand side - contains currents private: - static const std::size_t m_pitch = ((( storage_N) + 7) / 8) * 8; + static constexpr std::size_t m_pitch = ((( storage_N) + 7) / 8) * 8; nl_ext_double m_A[storage_N][m_pitch]; nl_ext_double m_Ainv[storage_N][m_pitch]; nl_ext_double m_W[storage_N][m_pitch]; @@ -218,7 +218,7 @@ void matrix_solver_sm_t::LE_compute_x( template unsigned matrix_solver_sm_t::solve_non_dynamic(const bool newton_raphson) { - static const bool incremental = true; + static constexpr bool incremental = true; static unsigned cnt = 0; const auto iN = N(); diff --git a/src/lib/netlist/solver/nld_ms_w.h b/src/lib/netlist/solver/nld_ms_w.h index 3e6c7a1fe17..ed110c01c7b 100644 --- a/src/lib/netlist/solver/nld_ms_w.h +++ b/src/lib/netlist/solver/nld_ms_w.h @@ -97,7 +97,7 @@ protected: nl_double m_last_RHS[storage_N]; // right hand side - contains currents private: - static const std::size_t m_pitch = ((( storage_N) + 7) / 8) * 8; + static constexpr std::size_t m_pitch = ((( storage_N) + 7) / 8) * 8; nl_ext_double m_A[storage_N][m_pitch]; nl_ext_double m_Ainv[storage_N][m_pitch]; nl_ext_double m_W[storage_N][m_pitch]; diff --git a/src/lib/netlist/solver/nld_solver.cpp b/src/lib/netlist/solver/nld_solver.cpp index 36cd5692674..01c71aab6f5 100644 --- a/src/lib/netlist/solver/nld_solver.cpp +++ b/src/lib/netlist/solver/nld_solver.cpp @@ -95,9 +95,9 @@ NETLIB_UPDATE(solver) bool force_solve = (netlist().time() < netlist_time::from_double(2 * m_params.m_max_timestep)); #if HAS_OPENMP && USE_OPENMP - const std::size_t t_cnt = m_mat_solvers.size(); if (m_parallel()) { + const std::size_t t_cnt = m_mat_solvers.size(); //omp_set_num_threads(3); //omp_set_dynamic(0); #pragma omp parallel @@ -116,11 +116,11 @@ NETLIB_UPDATE(solver) solver->update_inputs(); } else - for (int i = 0; i < t_cnt; i++) - if (m_mat_solvers[i]->has_timestep_devices() || force_solve) + for (auto & solver : m_mat_solvers) + if (solver->has_timestep_devices() || force_solve) { // Ignore return value - ATTR_UNUSED const netlist_time ts = m_mat_solvers[i]->solve(); + ATTR_UNUSED const netlist_time ts = solver->solve(); solver->update_inputs(); } #else diff --git a/src/lib/netlist/tools/nl_convert.cpp b/src/lib/netlist/tools/nl_convert.cpp index 305dcf4853d..bedddba3cda 100644 --- a/src/lib/netlist/tools/nl_convert.cpp +++ b/src/lib/netlist/tools/nl_convert.cpp @@ -209,8 +209,8 @@ double nl_convert_base_t::get_sp_unit(const pstring &unit) double nl_convert_base_t::get_sp_val(const pstring &sin) { - auto p = sin.begin(); - while (p != sin.end() && (m_numberchars.find(*p) != m_numberchars.end())) + std::size_t p = 0; + while (p < sin.length() && (m_numberchars.find(sin.substr(p, 1)) != pstring::npos)) ++p; pstring val = sin.left(p); pstring unit = sin.substr(p); @@ -276,7 +276,7 @@ void nl_convert_spice_t::process_line(const pstring &line) { std::vector tt(plib::psplit(line, " ", true)); double val = 0.0; - switch (tt[0].code_at(0)) + switch (tt[0].at(0)) { case ';': out("// {}\n", line.substr(1)); @@ -316,14 +316,14 @@ void nl_convert_spice_t::process_line(const pstring &line) std::vector m(plib::psplit(model,"{")); if (m.size() == 2) { - if (m[1].len() != 4) + if (m[1].length() != 4) fprintf(stderr, "error with model desc %s\n", model.c_str()); - pins = m[1].left(m[1].begin() + 3); + pins = m[1].left(3); } add_device("QBJT_EB", tt[0], m[0]); - add_term(tt[1], tt[0] + "." + pins.code_at(0)); - add_term(tt[2], tt[0] + "." + pins.code_at(1)); - add_term(tt[3], tt[0] + "." + pins.code_at(2)); + add_term(tt[1], tt[0] + "." + pins.at(0)); + add_term(tt[2], tt[0] + "." + pins.at(1)); + add_term(tt[3], tt[0] + "." + pins.at(2)); } break; case 'R': @@ -381,7 +381,7 @@ void nl_convert_spice_t::process_line(const pstring &line) // last element is component type // FIXME: Parameter - pstring xname = tt[0].replace(".", "_"); + pstring xname = tt[0].replace_all(".", "_"); pstring tname = "TTL_" + tt[tt.size()-1] + "_DIP"; add_device(tname, xname); for (std::size_t i=1; i < tt.size() - 1; i++) @@ -467,7 +467,7 @@ void nl_convert_eagle_t::convert(const pstring &contents) tok.require_token(tok.m_tok_SEMICOLON); token = tok.get_token(); } - switch (name.code_at(0)) + switch (name.at(0)) { case 'Q': { diff --git a/src/lib/netlist/tools/nl_convert.h b/src/lib/netlist/tools/nl_convert.h index bf1f0710cd1..d3881320678 100644 --- a/src/lib/netlist/tools/nl_convert.h +++ b/src/lib/netlist/tools/nl_convert.h @@ -25,7 +25,7 @@ public: virtual ~nl_convert_base_t(); - const pstringbuffer &result() { return m_buf.str(); } + const pstring &result() { return m_buf.str(); } virtual void convert(const pstring &contents) = 0; diff --git a/src/lib/util/cdrom.cpp b/src/lib/util/cdrom.cpp index efa34257a95..2f21c660be9 100644 --- a/src/lib/util/cdrom.cpp +++ b/src/lib/util/cdrom.cpp @@ -577,6 +577,12 @@ uint32_t cdrom_read_data(cdrom_file *file, uint32_t lbasector, void *buffer, uin return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 24, 2048, phys) == CHDERR_NONE); } + /* return 2048 bytes of mode 1 data from a mode2 form2 or XA sector */ + if ((datatype == CD_TRACK_MODE1) && (tracktype == CD_TRACK_MODE2_FORM_MIX)) + { + return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 8, 2048, phys) == CHDERR_NONE); + } + /* return mode 2 2336 byte data from a 2352 byte mode 1 or 2 raw sector (skip the header) */ if ((datatype == CD_TRACK_MODE2) && ((tracktype == CD_TRACK_MODE1_RAW) || (tracktype == CD_TRACK_MODE2_RAW))) { diff --git a/src/lib/util/chd.cpp b/src/lib/util/chd.cpp index dc7c334b1bf..9714b43535c 100644 --- a/src/lib/util/chd.cpp +++ b/src/lib/util/chd.cpp @@ -1254,12 +1254,8 @@ chd_error chd_file::read_metadata(chd_metadata_tag searchtag, uint32_t searchind throw CHDERR_METADATA_NOT_FOUND; // read the metadata - // TODO: how to properly allocate a dynamic char buffer? - auto metabuf = new char[metaentry.length+1]; - memset(metabuf, 0x00, metaentry.length+1); - file_read(metaentry.offset + METADATA_HEADER_SIZE, metabuf, metaentry.length); - output.assign(metabuf); - delete[] metabuf; + output.assign(metaentry.length, '\0'); + file_read(metaentry.offset + METADATA_HEADER_SIZE, &output[0], metaentry.length); return CHDERR_NONE; } diff --git a/src/lib/util/corestr.cpp b/src/lib/util/corestr.cpp index 4431f6d08ac..66b12f6ee04 100644 --- a/src/lib/util/corestr.cpp +++ b/src/lib/util/corestr.cpp @@ -107,6 +107,16 @@ int core_strwildcmp(const char *sp1, const char *sp2) return core_stricmp(s1, s2); } +bool core_iswildstr(const char *sp) +{ + for ( ; sp && *sp; sp++) + { + if (('?' == *sp) || ('*' == *sp)) + return true; + } + return false; +} + /*------------------------------------------------- core_strdup - string duplication via malloc diff --git a/src/lib/util/corestr.h b/src/lib/util/corestr.h index 1e12c0d0e24..9a9bce23e99 100644 --- a/src/lib/util/corestr.h +++ b/src/lib/util/corestr.h @@ -59,6 +59,7 @@ char *core_strdup(const char *str); /* additional string compare helper (up to 16 characters at the moment) */ int core_strwildcmp(const char *sp1, const char *sp2); +bool core_iswildstr(const char *sp); int strcatvprintf(std::string &str, const char *format, va_list args); diff --git a/src/lib/util/coreutil.cpp b/src/lib/util/coreutil.cpp index 8ff9585d476..bd10802ef5a 100644 --- a/src/lib/util/coreutil.cpp +++ b/src/lib/util/coreutil.cpp @@ -58,39 +58,6 @@ uint32_t bcd_2_dec(uint32_t a) -/*************************************************************************** - GREGORIAN CALENDAR HELPERS -***************************************************************************/ - -int gregorian_is_leap_year(int year) -{ - return !((year % 100) ? (year % 4) : (year % 400)); -} - - -/* months are one counted */ - -/** - * @fn int gregorian_days_in_month(int month, int year) - * - * @brief Gregorian days in month. - * - * @param month The month. - * @param year The year. - * - * @return An int. - */ - -int gregorian_days_in_month(int month, int year) -{ - assert(month >= 1 && month <= 12); - - int days[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; - days[1] += gregorian_is_leap_year(year) ? 1 : 0; - return days[month-1]; -} - - /*************************************************************************** MISC ***************************************************************************/ diff --git a/src/lib/util/coreutil.h b/src/lib/util/coreutil.h index 167f696970e..0a584c4a39e 100644 --- a/src/lib/util/coreutil.h +++ b/src/lib/util/coreutil.h @@ -29,8 +29,48 @@ uint32_t bcd_2_dec(uint32_t a); GREGORIAN CALENDAR HELPERS ***************************************************************************/ -int gregorian_is_leap_year(int year); -int gregorian_days_in_month(int month, int year); +constexpr bool gregorian_is_leap_year(int year) +{ + return !((year % 100) ? (year % 4) : (year % 400)); +} + + + +//------------------------------------------------- +// gregorian_days_in_month - given a year and a one-counted +// month, return the amount of days in that month +//------------------------------------------------- + +inline int gregorian_days_in_month(int month, int year) +{ + int result; + switch (month) + { + case 4: case 6: + case 9: case 11: + // Thirty days have September, April, June, and November. + result = 30; + break; + + case 1: case 3: + case 5: case 7: + case 8: case 10: + case 12: + // All the rest have Thirty One + result = 31; + break; + + case 2: + // No exceptions, but save one: Twenty Eight hath February + // in fine, and each leap year Twenty Nine + result = gregorian_is_leap_year(year) ? 29 : 28; + break; + + default: + throw false; + } + return result; +} /*************************************************************************** diff --git a/src/lib/util/options.cpp b/src/lib/util/options.cpp index 3f255188625..2c56843947a 100644 --- a/src/lib/util/options.cpp +++ b/src/lib/util/options.cpp @@ -2,7 +2,7 @@ // copyright-holders:Aaron Giles /*************************************************************************** - options.c + options.cpp Core options code code @@ -44,6 +44,26 @@ const char *const core_options::s_option_unadorned[MAX_UNADORNED_OPTIONS] = }; +//************************************************************************** +// UTILITY +//************************************************************************** + +namespace +{ + void trim_spaces_and_quotes(std::string &data) + { + // trim any whitespace + strtrimspace(data); + + // trim quotes + if (data.find_first_of('"') == 0 && data.find_last_of('"') == data.length() - 1) + { + data.erase(0, 1); + data.erase(data.length() - 1, 1); + } + } +}; + //************************************************************************** // CORE OPTIONS ENTRY @@ -56,7 +76,6 @@ const char *const core_options::s_option_unadorned[MAX_UNADORNED_OPTIONS] = core_options::entry::entry(const char *name, const char *description, uint32_t flags, const char *defvalue) : m_next(nullptr), m_flags(flags), - m_seqid(0), m_error_reported(false), m_priority(OPTION_PRIORITY_DEFAULT), m_description(description), @@ -111,7 +130,6 @@ void core_options::entry::set_value(const char *newdata, int priority) // set the data and priority, then bump the sequence m_data = newdata; m_priority = priority; - m_seqid++; } @@ -345,6 +363,25 @@ bool core_options::parse_command_line(std::vector &args, int priori error_string.clear(); m_command.clear(); + // we want to identify commands first + for (size_t arg = 1; arg < args.size(); arg++) + { + if (!args[arg].empty() && args[arg][0] == '-') + { + auto curentry = m_entrymap.find(&args[arg][1]); + if (curentry != m_entrymap.end() && curentry->second->type() == OPTION_COMMAND) + { + // can only have one command + if (!m_command.empty()) + { + error_string.append(string_format("Error: multiple commands specified -%s and %s\n", m_command, args[arg])); + return false; + } + m_command = curentry->second->name(); + } + } + } + // iterate through arguments int unadorned_index = 0; size_t new_argc = 1; @@ -355,35 +392,39 @@ bool core_options::parse_command_line(std::vector &args, int priori bool is_unadorned = (curarg[0] != '-'); const char *optionname = is_unadorned ? core_options::unadorned(unadorned_index++) : &curarg[1]; + // special case - collect unadorned arguments after commands into a special place + if (is_unadorned && !m_command.empty()) + { + m_command_arguments.push_back(std::move(args[arg])); + args[arg].clear(); + continue; + } + // find our entry; if not found, continue auto curentry = m_entrymap.find(optionname); if (curentry == m_entrymap.end()) { // we need to relocate this option if (new_argc != arg) - args[new_argc++] = std::move(args[arg]); + args[new_argc] = std::move(args[arg]); + new_argc++; if (!is_unadorned) { arg++; - if (new_argc != arg && arg < args.size()) - args[new_argc++] = std::move(args[arg]); + if (arg < args.size()) + { + if (new_argc != arg) + args[new_argc] = std::move(args[arg]); + new_argc++; + } } continue; } - // process commands first + // at this point, we've already processed commands if (curentry->second->type() == OPTION_COMMAND) - { - // can only have one command - if (!m_command.empty()) - { - error_string.append(string_format("Error: multiple commands specified -%s and %s\n", m_command, curarg)); - return false; - } - m_command = curentry->second->name(); continue; - } // get the data for this argument, special casing booleans std::string newdata; @@ -421,7 +462,7 @@ bool core_options::parse_command_line(std::vector &args, int priori // an INI file //------------------------------------------------- -bool core_options::parse_ini_file(util::core_file &inifile, int priority, int ignore_priority, std::string &error_string) +bool core_options::parse_ini_file(util::core_file &inifile, int priority, bool ignore_unknown_options, std::string &error_string) { // loop over lines in the file char buffer[4096]; @@ -469,21 +510,23 @@ bool core_options::parse_ini_file(util::core_file &inifile, int priority, int ig auto curentry = m_entrymap.find(optionname); if (curentry == m_entrymap.end()) { - if (priority >= ignore_priority) + if (!ignore_unknown_options) error_string.append(string_format("Warning: unknown option in INI: %s\n", optionname)); continue; } // set the new data - validate_and_set_data(*curentry->second, optiondata, priority, error_string); + std::string data = optiondata; + trim_spaces_and_quotes(data); + validate_and_set_data(*curentry->second, std::move(data), priority, error_string); } return true; } //------------------------------------------------- -// pluck_from_command_line - finds a specific -// value from within a command line +// pluck_from_command_line - finds a specific +// value from within a command line //------------------------------------------------- bool core_options::pluck_from_command_line(std::vector &args, const std::string &optionname, std::string &result) @@ -554,12 +597,27 @@ std::string core_options::output_ini(const core_options *diff) const int num_valid_headers = 0; int unadorned_index = 0; const char *last_header = nullptr; + std::string overridden_value; // loop over all items for (entry &curentry : m_entrylist) { const char *name = curentry.name(); - const char *value = curentry.value(); + const char *value; + switch (override_get_value(name, overridden_value)) + { + case override_get_value_result::NONE: + default: + value = curentry.value(); + break; + + case override_get_value_result::SKIP: + continue; + + case override_get_value_result::OVERRIDE: + value = overridden_value.c_str(); + break; + } bool is_unadorned = false; // check if it's unadorned @@ -663,16 +721,6 @@ int core_options::priority(const char *name) const } -//------------------------------------------------- -// seqid - return the seqid for a given option -//------------------------------------------------- - -uint32_t core_options::seqid(const char *name) const -{ - auto curentry = m_entrymap.find(name); - return (curentry != m_entrymap.end()) ? curentry->second->seqid() : 0; -} - //------------------------------------------------- // exists - return if option exists in list //------------------------------------------------- @@ -682,16 +730,7 @@ bool core_options::exists(const char *name) const return (m_entrymap.find(name) != m_entrymap.end()); } -//------------------------------------------------- -// is_changed - return if option have been marked -// changed -//------------------------------------------------- -bool core_options::is_changed(const char *name) const -{ - auto curentry = m_entrymap.find(name); - return (curentry != m_entrymap.end()) ? curentry->second->is_changed() : false; -} //------------------------------------------------- // set_value - set the raw option value //------------------------------------------------- @@ -833,15 +872,9 @@ void core_options::copyfrom(const core_options &src) bool core_options::validate_and_set_data(core_options::entry &curentry, std::string &&data, int priority, std::string &error_string) { - // trim any whitespace - strtrimspace(data); - - // trim quotes - if (data.find_first_of('"') == 0 && data.find_last_of('"') == data.length() - 1) - { - data.erase(0, 1); - data.erase(data.length() - 1, 1); - } + // let derived classes override how we set this data + if (override_set_value(curentry.name(), data)) + return true; // validate the type of data and optionally the range float fval; diff --git a/src/lib/util/options.h b/src/lib/util/options.h index 47780652586..231837aaf16 100644 --- a/src/lib/util/options.h +++ b/src/lib/util/options.h @@ -8,8 +8,8 @@ ***************************************************************************/ -#ifndef __OPTIONS_H__ -#define __OPTIONS_H__ +#ifndef MAME_LIB_UTIL_OPTIONS_H +#define MAME_LIB_UTIL_OPTIONS_H #include "corefile.h" #include @@ -81,7 +81,6 @@ public: const char *default_value() const { return m_defdata.c_str(); } const char *minimum() const { return m_minimum.c_str(); } const char *maximum() const { return m_maximum.c_str(); } - uint32_t seqid() const { return m_seqid; } int type() const { return (m_flags & OPTION_TYPE_MASK); } uint32_t flags() const { return m_flags; } bool is_header() const { return type() == OPTION_HEADER; } @@ -103,7 +102,6 @@ public: // internal state entry * m_next; // link to the next data uint32_t m_flags; // flags from the entry - uint32_t m_seqid; // sequence ID; bumped on each change bool m_error_reported; // have we reported an error on this option yet? int m_priority; // priority of the data set const char * m_description; // description for this item @@ -130,7 +128,8 @@ public: // getters entry *first() const { return m_entrylist.first(); } - const char *command() const { return m_command.c_str(); } + const std::string &command() const { return m_command; } + const std::vector &command_arguments() const { assert(!m_command.empty()); return m_command_arguments; } entry *get_entry(const char *name) const; // range iterators @@ -148,7 +147,7 @@ public: // parsing/input bool parse_command_line(std::vector &args, int priority, std::string &error_string); - bool parse_ini_file(util::core_file &inifile, int priority, int ignore_priority, std::string &error_string); + bool parse_ini_file(util::core_file &inifile, int priority, bool ignore_unknown_options, std::string &error_string); bool pluck_from_command_line(std::vector &args, const std::string &name, std::string &result); // reverting @@ -165,9 +164,7 @@ public: bool bool_value(const char *name) const { return (atoi(value(name)) != 0); } int int_value(const char *name) const { return atoi(value(name)); } float float_value(const char *name) const { return atof(value(name)); } - uint32_t seqid(const char *name) const; bool exists(const char *name) const; - bool is_changed(const char *name) const; // setting bool set_value(const char *name, const char *value, int priority, std::string &error_string); @@ -181,7 +178,18 @@ public: int options_count() const { return m_entrylist.count(); } protected: + // This is a hook to allow option value retrieval to be overridden for various reasons; this is a crude + // extensibility mechanism that should really be replaced by something better + enum class override_get_value_result + { + NONE, + OVERRIDE, + SKIP + }; + virtual void value_changed(const std::string &name, const std::string &value) {} + virtual override_get_value_result override_get_value(const char *name, std::string &value) const { return override_get_value_result::NONE; } + virtual bool override_set_value(const char *name, const std::string &value) { return false; } private: // internal helpers @@ -194,9 +202,10 @@ private: simple_list m_entrylist; // head of list of entries std::unordered_map m_entrymap; // map for fast lookup std::string m_command; // command found + std::vector m_command_arguments; // command arguments static const char *const s_option_unadorned[]; // array of unadorned option "names" }; -#endif /* __OPTIONS_H__ */ +#endif // MAME_LIB_UTIL_OPTIONS_H diff --git a/src/lib/util/server_http.hpp b/src/lib/util/server_http.hpp index 63cfb505fb3..d50ccc05bc7 100644 --- a/src/lib/util/server_http.hpp +++ b/src/lib/util/server_http.hpp @@ -197,6 +197,10 @@ namespace webpp { } } } + void clear() + { + m_resource.clear(); + } std::function::Request>, const std::error_code&)> on_error; diff --git a/src/lib/util/timeconv.cpp b/src/lib/util/timeconv.cpp index e0d41fbde75..20f4e29a03e 100644 --- a/src/lib/util/timeconv.cpp +++ b/src/lib/util/timeconv.cpp @@ -14,47 +14,48 @@ namespace util { -namespace { /*************************************************************************** PROTOTYPES ***************************************************************************/ -util::ntfs_duration calculate_ntfs_offset(); +static std::chrono::system_clock::duration calculate_system_clock_adjustment(); /*************************************************************************** GLOBAL VARIABLES ***************************************************************************/ -util::ntfs_duration f_ntfs_offset(calculate_ntfs_offset()); +std::chrono::system_clock::duration system_clock_adjustment(calculate_system_clock_adjustment()); /*************************************************************************** IMPLEMENTATION ***************************************************************************/ -util::ntfs_duration calculate_ntfs_offset() +static std::chrono::system_clock::duration calculate_system_clock_adjustment() { constexpr auto days_in_year(365); constexpr auto days_in_four_years((days_in_year * 4) + 1); constexpr auto days_in_century((days_in_four_years * 25) - 1); constexpr auto days_in_four_centuries((days_in_century * 4) + 1); - constexpr ntfs_duration day(std::chrono::hours(24)); - constexpr ntfs_duration year(day * days_in_year); - constexpr ntfs_duration four_years(day * days_in_four_years); - constexpr ntfs_duration century(day * days_in_century); - constexpr ntfs_duration four_centuries(day * days_in_four_centuries); + // can't use std::chrono::system_clock::duration here, out of fear of integer overflow + typedef std::chrono::duration > int64_second_duration; + constexpr int64_second_duration day(std::chrono::hours(24)); + constexpr int64_second_duration year(day * days_in_year); + constexpr int64_second_duration four_years(day * days_in_four_years); + constexpr int64_second_duration century(day * days_in_century); + constexpr int64_second_duration four_centuries(day * days_in_four_centuries); std::time_t const zero(0); std::tm const epoch(*std::gmtime(&zero)); - ntfs_duration result(day * epoch.tm_yday); + std::chrono::system_clock::duration result(day * epoch.tm_yday); result += std::chrono::hours(epoch.tm_hour); result += std::chrono::minutes(epoch.tm_min); result += std::chrono::seconds(epoch.tm_sec); - int years(1900 - 1601 + epoch.tm_year); + int years(1900 - 1970 + epoch.tm_year); result += four_centuries * (years / 400); years %= 400; result += century * (years / 100); @@ -63,11 +64,9 @@ util::ntfs_duration calculate_ntfs_offset() years %= 4; result += year * years; - return result; + return result - std::chrono::system_clock::from_time_t(0).time_since_epoch(); } -} // anonymous namespace - // ------------------------------------------------- @@ -76,7 +75,9 @@ util::ntfs_duration calculate_ntfs_offset() std::chrono::system_clock::time_point system_clock_time_point_from_ntfs_duration(ntfs_duration d) { - return std::chrono::system_clock::from_time_t(0) + std::chrono::duration_cast(d - f_ntfs_offset); + typedef arbitrary_clock > ntfs_clock; + const std::chrono::time_point tp(d); + return ntfs_clock::to_system_clock(tp); } } // namespace util diff --git a/src/lib/util/timeconv.h b/src/lib/util/timeconv.h index ab8fd50fdcd..7f9a7830b8e 100644 --- a/src/lib/util/timeconv.h +++ b/src/lib/util/timeconv.h @@ -14,11 +14,19 @@ #pragma once #include "osdcore.h" +#include "coreutil.h" #include namespace util { +/*************************************************************************** + GLOBAL VARIABLES +***************************************************************************/ + +extern std::chrono::system_clock::duration system_clock_adjustment; + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ @@ -26,6 +34,212 @@ namespace util { typedef std::chrono::duration > ntfs_duration; +//--------------------------------------------------------- +// arbitrary_clock - an std::chrono clock that "knows" the +// date of the epoch's begining +//--------------------------------------------------------- + +template +class arbitrary_clock +{ +public: + typedef Rep rep; + typedef Ratio period; + typedef std::chrono::duration duration; + typedef std::chrono::time_point time_point; + static constexpr int base_year = Y; + static constexpr int base_month = M; + static constexpr int base_day = D; + static constexpr int base_hour = H; + static constexpr int base_minute = N; + static constexpr int base_second = S; + + //--------------------------------------------------------- + // from_arbitrary_time_point - converts an arbitrary_clock + // with a different scale to this arbitrary_clock's scale + //--------------------------------------------------------- + + template + static time_point from_arbitrary_time_point(const std::chrono::time_point > &tp) + { + const int64_t our_absolute_day = absolute_day(Y, M, D); + const int64_t their_absolute_day = absolute_day(Y2, M2, D2); + + const auto our_fract_day = std::chrono::hours(H) + std::chrono::minutes(N) + std::chrono::seconds(S); + const auto their_fract_day = std::chrono::hours(H2) + std::chrono::minutes(N2) + std::chrono::seconds(S2); + + const std::chrono::duration adjustment(std::chrono::hours(24) * (their_absolute_day - our_absolute_day) + (their_fract_day - our_fract_day)); + const duration result_duration = std::chrono::duration_cast(tp.time_since_epoch() + adjustment); + return time_point(result_duration); + } + + + //--------------------------------------------------------- + // to_arbitrary_time_point - converts an arbitrary_clock + // of this scale to one of different scale + //--------------------------------------------------------- + + template + static std::chrono::time_point > to_arbitrary_time_point(const time_point &tp) + { + return arbitrary_clock::from_arbitrary_time_point(tp); + } + + + //--------------------------------------------------------- + // to_tm - formats a structure of type 'struct tm' + //--------------------------------------------------------- + + static struct tm to_tm(const time_point &tp) + { + std::chrono::time_point normalized_tp = to_arbitrary_time_point< + std::int64_t, + tm_conversion_clock::base_year, + tm_conversion_clock::base_month, + tm_conversion_clock::base_day, + tm_conversion_clock::base_hour, + tm_conversion_clock::base_minute, + tm_conversion_clock::base_second, + tm_conversion_clock::period>(tp); + return internal_to_tm(normalized_tp.time_since_epoch()); + } + + + //--------------------------------------------------------- + // to_system_clock - converts to a system_clock time_point + //--------------------------------------------------------- + + static std::chrono::time_point to_system_clock(const time_point &tp) + { + auto normalized_tp = to_arbitrary_time_point< + std::int64_t, + system_conversion_clock::base_year, + system_conversion_clock::base_month, + system_conversion_clock::base_day, + system_conversion_clock::base_hour, + system_conversion_clock::base_minute, + system_conversion_clock::base_second, + system_conversion_clock::period>(tp); + return std::chrono::time_point(normalized_tp.time_since_epoch() + system_clock_adjustment); + } + + //--------------------------------------------------------- + // from_system_clock - converts from a system_clock time_point + //--------------------------------------------------------- + + static time_point from_system_clock(const std::chrono::time_point &tp) + { + std::chrono::time_point normalized_tp(tp.time_since_epoch() - system_clock_adjustment); + return from_arbitrary_time_point(normalized_tp); + } + +private: + // By positioning the base year at 1601, we can ensure that: + // + // * years with leap years are at the end of every quadyear + // * quadyears without leap years are at the end of every century + // * centuries where the last quadyear has a leap year at the end are at the + // end of every quadcentury + typedef arbitrary_clock > tm_conversion_clock; + + //--------------------------------------------------------- + // internal_to_tm - formats a structure of type 'struct tm' + // based on a normalized clock + //--------------------------------------------------------- + + static struct tm internal_to_tm(std::chrono::duration > duration) + { + constexpr int days_in_year(365); + constexpr int days_in_four_years((days_in_year * 4) + 1); + constexpr int days_in_century((days_in_four_years * 25) - 1); + constexpr int days_in_four_centuries((days_in_century * 4) + 1); + + constexpr tm_conversion_clock::duration day(std::chrono::hours(24)); + constexpr tm_conversion_clock::duration year(day * days_in_year); + constexpr tm_conversion_clock::duration four_years(day * days_in_four_years); + constexpr tm_conversion_clock::duration century(day * days_in_century); + constexpr tm_conversion_clock::duration four_centuries(day * days_in_four_centuries); + + // figure out the day of week (note that 0 is Sunday, but January 1st 1601 is + // a Monday, so we have to adjust by one day) + const int day_of_week = int((duration + std::chrono::hours(24)) / day % 7); + + // figure out the year + const int four_centuries_count = int(duration / four_centuries); + duration -= four_centuries_count * four_centuries; + const int century_count = std::min(int(duration / century), 3); + duration -= century_count * century; + const int four_years_count = std::min(int(duration / four_years), 25); + duration -= four_years_count * four_years; + const int year_count = int(duration / year); + duration -= year_count * year; + const int actual_year = tm_conversion_clock::base_year + four_centuries_count * 400 + century_count * 100 + four_years_count * 4 + year_count; + + // figure out the day in the year + const int day_in_year = int(duration / day); + duration -= day_in_year * day; + + // figure out the month + int month, day_in_month = day_in_year; + for (month = 0; month < 12; month++) + { + int days_in_this_month = gregorian_days_in_month(month + 1, actual_year); + if (day_in_month < days_in_this_month) + break; + day_in_month -= days_in_this_month; + } + if (month >= 12) + throw false; + + // figure out the time + const int hour = int(duration / std::chrono::hours(1)); + duration -= std::chrono::hours(hour); + const int minute = int(duration / std::chrono::minutes(1)); + duration -= std::chrono::minutes(minute); + const int second = int(duration / std::chrono::seconds(1)); + duration -= std::chrono::seconds(second); + + // populate the result and return + struct tm result; + memset(&result, 0, sizeof(result)); + result.tm_year = actual_year - 1900; + result.tm_mon = month; + result.tm_mday = day_in_month + 1; + result.tm_yday = day_in_year; + result.tm_sec = second; + result.tm_min = minute; + result.tm_hour = hour; + result.tm_wday = day_of_week; + return result; + } + + + typedef arbitrary_clock system_conversion_clock; + + //------------------------------------------------- + // absolute_day - returns the absolute day count + // for the specified year/month/day + //------------------------------------------------- + + static int64_t absolute_day(int year, int month, int day) + { + // first factor the year + int64_t result = (year - 1) * 365; + result += (year - 1) / 4; + result -= (year - 1) / 100; + result += (year - 1) / 400; + + // then the month + for (int i = 1; i < month; i++) + result += gregorian_days_in_month(i, year); + + // then the day + result += day - 1; + return result; + } +}; + + /*************************************************************************** INLINE FUNCTIONS ***************************************************************************/ diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index 84ac591763d..7d6661e7054 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -41,7 +41,6 @@ allied.cpp alpha68k.cpp alvg.cpp amaticmg.cpp -amazonlf.cpp ambush.cpp amerihok.cpp ampoker2.cpp @@ -225,6 +224,7 @@ cliffhgr.cpp cloak.cpp cloud9.cpp clowndwn.cpp +clpoker.cpp clshroad.cpp cmmb.cpp cninja.cpp @@ -404,6 +404,7 @@ g627.cpp gaelco.cpp gaelco2.cpp gaelco3d.cpp +gaelcopc.cpp gaiden.cpp gal3.cpp galaga.cpp @@ -432,6 +433,7 @@ gcpinbal.cpp gei.cpp ggconnie.cpp ghosteo.cpp +giclassic.cpp gijoe.cpp ginganin.cpp gkigt.cpp @@ -677,7 +679,6 @@ maygay1b.cpp maygayep.cpp maygaysw.cpp maygayv1.cpp -mayumi.cpp mazerbla.cpp mcatadv.cpp mcr.cpp @@ -759,6 +760,7 @@ mrgame.cpp mrjong.cpp ms32.cpp msisaac.cpp +mtouchxl.cpp mugsmash.cpp multfish.cpp multfish_boot.cpp @@ -829,6 +831,7 @@ opwolf.cpp orbit.cpp othello.cpp othunder.cpp +otomedius.cpp overdriv.cpp pachifev.cpp pacland.cpp @@ -842,6 +845,7 @@ parodius.cpp pasha2.cpp pass.cpp pastelg.cpp +patapata.cpp pbaction.cpp pcat_dyn.cpp pcat_nit.cpp @@ -865,6 +869,7 @@ pinkiri8.cpp pipedrm.cpp pipeline.cpp pirates.cpp +piratesh.cpp pitnrun.cpp pkscram.cpp pktgaldx.cpp @@ -983,6 +988,7 @@ scobra.cpp scotrsht.cpp scramble.cpp scregg.cpp +scyclone.cpp sderby.cpp seabattl.cpp sealy.cpp @@ -1139,6 +1145,7 @@ suprloco.cpp suprnova.cpp suprridr.cpp suprslam.cpp +supstarf.cpp surpratk.cpp system1.cpp system16.cpp @@ -1206,7 +1213,6 @@ tnzs.cpp toaplan1.cpp toaplan2.cpp toki.cpp -tokyocop.cpp tomcat.cpp tonton.cpp toobin.cpp @@ -1250,6 +1256,7 @@ undrfire.cpp unico.cpp unkhorse.cpp upscope.cpp +usbilliards.cpp usgames.cpp vamphalf.cpp vaportra.cpp diff --git a/src/mame/audio/8080bw.cpp b/src/mame/audio/8080bw.cpp index 8928b1468bf..b8ec710d20f 100644 --- a/src/mame/audio/8080bw.cpp +++ b/src/mame/audio/8080bw.cpp @@ -908,7 +908,7 @@ WRITE8_MEMBER(_8080bw_state::schaser_sh_port_1_w) m_sn->amplitude_res_w(RES_K(200)); } m_sn->enable_w(!(m_schaser_effect_555_is_low || m_schaser_explosion)); - m_sn->one_shot_cap_voltage_w(!(m_schaser_effect_555_is_low || m_schaser_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT); + m_sn->one_shot_cap_voltage_w(!(m_schaser_effect_555_is_low || m_schaser_explosion) ? 0 : sn76477_device::EXTERNAL_VOLTAGE_DISCONNECT); m_sn->mixer_b_w(m_schaser_explosion); } @@ -958,7 +958,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(_8080bw_state::schaser_effect_555_cb) } m_schaser_effect_555_timer->adjust(new_time, effect); m_sn->enable_w(!(m_schaser_effect_555_is_low || m_schaser_explosion)); - m_sn->one_shot_cap_voltage_w(!(m_schaser_effect_555_is_low || m_schaser_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT); + m_sn->one_shot_cap_voltage_w(!(m_schaser_effect_555_is_low || m_schaser_explosion) ? 0 : sn76477_device::EXTERNAL_VOLTAGE_DISCONNECT); } diff --git a/src/mame/audio/alesis.cpp b/src/mame/audio/alesis.cpp index 16fbc6249ff..bc08e7f2ef5 100644 --- a/src/mame/audio/alesis.cpp +++ b/src/mame/audio/alesis.cpp @@ -19,7 +19,7 @@ #define LOG 1 // device type definition -const device_type ALESIS_DM3AG = device_creator; +DEFINE_DEVICE_TYPE(ALESIS_DM3AG, alesis_dm3ag_device, "alesis_dm3ag", "Alesis DM3AG") /*************************************************************************** IMPLEMENTATION @@ -38,9 +38,9 @@ MACHINE_CONFIG_END //------------------------------------------------- alesis_dm3ag_device::alesis_dm3ag_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ALESIS_DM3AG, "Alesis DM3AG", tag, owner, clock, "alesis_dm3ag", __FILE__), - m_dac(*this, "dac"), - m_samples(*this, DEVICE_SELF) + : device_t(mconfig, ALESIS_DM3AG, tag, owner, clock) + , m_dac(*this, "dac") + , m_samples(*this, DEVICE_SELF) { } diff --git a/src/mame/audio/arcadia.cpp b/src/mame/audio/arcadia.cpp index 6b2d632f906..796d8e816e5 100644 --- a/src/mame/audio/arcadia.cpp +++ b/src/mame/audio/arcadia.cpp @@ -42,15 +42,15 @@ // device type definition -const device_type ARCADIA_SOUND = device_creator; +DEFINE_DEVICE_TYPE(ARCADIA_SOUND, arcadia_sound_device, "arcadia_sound", "Arcadia Audio Custom") //------------------------------------------------- // arcadia_sound_device - constructor //------------------------------------------------- arcadia_sound_device::arcadia_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ARCADIA_SOUND, "Arcadia Audio Custom", tag, owner, clock, "arcadia_sound", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, ARCADIA_SOUND, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } diff --git a/src/mame/audio/arcadia.h b/src/mame/audio/arcadia.h index 0b95e0c44b5..931801d74d8 100644 --- a/src/mame/audio/arcadia.h +++ b/src/mame/audio/arcadia.h @@ -1,7 +1,7 @@ // license:GPL-2.0+ // copyright-holders:Peter Trauner -#ifndef ARCADIA_SOUND_H_ -#define ARCADIA_SOUND_H_ +#ifndef MAME_AUDIO_ARCADIA_H +#define MAME_AUDIO_ARCADIA_H //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -16,8 +16,7 @@ // ======================> arcadia_sound_device -class arcadia_sound_device : public device_t, - public device_sound_interface +class arcadia_sound_device : public device_t, public device_sound_interface { public: // construction/destruction @@ -39,6 +38,6 @@ protected: }; // device type definition -extern const device_type ARCADIA_SOUND; +DECLARE_DEVICE_TYPE(ARCADIA_SOUND, arcadia_sound_device) -#endif /* ARCADIA_SOUND_H_ */ +#endif // MAME_AUDIO_ARCADIA_H diff --git a/src/mame/audio/atarijsa.cpp b/src/mame/audio/atarijsa.cpp index 1aa9ea1e3d1..ca8a852e28c 100644 --- a/src/mame/audio/atarijsa.cpp +++ b/src/mame/audio/atarijsa.cpp @@ -84,10 +84,10 @@ ALL: the LPF (low pass filter) bit which selectively places a lowpass filter in // GLOBAL VARIABLES //************************************************************************** -const device_type ATARI_JSA_I = device_creator; -const device_type ATARI_JSA_II = device_creator; -const device_type ATARI_JSA_III = device_creator; -const device_type ATARI_JSA_IIIS = device_creator; +DEFINE_DEVICE_TYPE(ATARI_JSA_I, atari_jsa_i_device, "atjsa1", "Atari JSA I Sound Board") +DEFINE_DEVICE_TYPE(ATARI_JSA_II, atari_jsa_ii_device, "atjsa2", "Atari JSA II Sound Board") +DEFINE_DEVICE_TYPE(ATARI_JSA_III, atari_jsa_iii_device, "atjsa3", "Atari JSA III Sound Board") +DEFINE_DEVICE_TYPE(ATARI_JSA_IIIS, atari_jsa_iiis_device, "atjsa3s", "Atari JSA IIIs Sound Board") @@ -205,7 +205,7 @@ MACHINE_CONFIG_FRAGMENT( jsa_ii_config ) MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(atari_jsa_base_device, ym2151_port_w)) MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.60, 0) - MCFG_OKIM6295_ADD("oki1", JSA_MASTER_CLOCK/3, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", JSA_MASTER_CLOCK/3, PIN7_HIGH) MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.75, 0) MACHINE_CONFIG_END @@ -228,7 +228,7 @@ MACHINE_CONFIG_DERIVED( jsa_iiis_config, jsa_iii_config ) MCFG_DEVICE_MODIFY("ym2151") MCFG_MIXER_ROUTE(1, DEVICE_SELF_OWNER, 0.60, 1) - MCFG_OKIM6295_ADD("oki2", JSA_MASTER_CLOCK/3, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", JSA_MASTER_CLOCK/3, PIN7_HIGH) MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.75, 1) MCFG_DEVICE_ADDRESS_MAP(AS_0, jsa3_oki2_map) MACHINE_CONFIG_END @@ -285,8 +285,8 @@ INPUT_PORTS_END // atari_jsa_base_device - constructor //------------------------------------------------- -atari_jsa_base_device::atari_jsa_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int channels) - : device_t(mconfig, devtype, name, tag, owner, clock, shortname, __FILE__), +atari_jsa_base_device::atari_jsa_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels) + : device_t(mconfig, devtype, tag, owner, clock), device_mixer_interface(mconfig, *this, channels), m_soundcomm(*this, "soundcomm"), m_jsacpu(*this, "cpu"), @@ -412,8 +412,8 @@ WRITE_LINE_MEMBER( atari_jsa_base_device::main_int_write_line ) // atari_jsa_oki_base_device: Constructor //------------------------------------------------- -atari_jsa_oki_base_device::atari_jsa_oki_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int channels) - : atari_jsa_base_device(mconfig, devtype, name, tag, owner, clock, shortname, channels), +atari_jsa_oki_base_device::atari_jsa_oki_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels) + : atari_jsa_base_device(mconfig, devtype, tag, owner, clock, channels), m_oki1(*this, "oki1"), m_oki2(*this, "oki2"), m_oki1_region(*this, "oki1"), @@ -629,7 +629,7 @@ void atari_jsa_oki_base_device::update_all_volumes() //------------------------------------------------- atari_jsa_i_device::atari_jsa_i_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : atari_jsa_base_device(mconfig, ATARI_JSA_I, "Atari JSA I Sound Board", tag, owner, clock, "atjsa1", 2), + : atari_jsa_base_device(mconfig, ATARI_JSA_I, tag, owner, clock, 2), m_pokey(*this, "pokey"), m_tms5220(*this, "tms"), m_jsai(*this, "JSAI"), @@ -844,7 +844,7 @@ void atari_jsa_i_device::update_all_volumes() //------------------------------------------------- atari_jsa_ii_device::atari_jsa_ii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : atari_jsa_oki_base_device(mconfig, ATARI_JSA_II, "Atari JSA II Sound Board", tag, owner, clock, "atjsa2", 1) + : atari_jsa_oki_base_device(mconfig, ATARI_JSA_II, tag, owner, clock, 1) , m_jsaii(*this, "JSAII") { } @@ -908,13 +908,12 @@ ioport_constructor atari_jsa_ii_device::device_input_ports() const //------------------------------------------------- atari_jsa_iii_device::atari_jsa_iii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : atari_jsa_oki_base_device(mconfig, ATARI_JSA_III, "Atari JSA III Sound Board", tag, owner, clock, "atjsa3", 1) - , m_jsaiii(*this, "JSAIII") + : atari_jsa_iii_device(mconfig, ATARI_JSA_III, tag, owner, clock, 1) { } -atari_jsa_iii_device::atari_jsa_iii_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int channels) - : atari_jsa_oki_base_device(mconfig, devtype, name, tag, owner, clock, shortname, channels) +atari_jsa_iii_device::atari_jsa_iii_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels) + : atari_jsa_oki_base_device(mconfig, devtype, tag, owner, clock, channels) , m_jsaiii(*this, "JSAIII") { } @@ -977,7 +976,7 @@ ioport_constructor atari_jsa_iii_device::device_input_ports() const //------------------------------------------------- atari_jsa_iiis_device::atari_jsa_iiis_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : atari_jsa_iii_device(mconfig, ATARI_JSA_IIIS, "Atari JSA IIIs Sound Board", tag, owner, clock, "atjsa3s", 2) + : atari_jsa_iii_device(mconfig, ATARI_JSA_IIIS, tag, owner, clock, 2) { } diff --git a/src/mame/audio/atarijsa.h b/src/mame/audio/atarijsa.h index de3ff0dc144..a6664452765 100644 --- a/src/mame/audio/atarijsa.h +++ b/src/mame/audio/atarijsa.h @@ -8,10 +8,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_AUDIO_ATARI_JSA_H +#define MAME_AUDIO_ATARI_JSA_H -#ifndef __ATARI_JSA__ -#define __ATARI_JSA__ +#pragma once #include "cpu/m6502/m6502.h" #include "sound/tms5220.h" @@ -25,10 +25,10 @@ // GLOBAL VARIABLES //************************************************************************** -extern const device_type ATARI_JSA_I; -extern const device_type ATARI_JSA_II; -extern const device_type ATARI_JSA_III; -extern const device_type ATARI_JSA_IIIS; +DECLARE_DEVICE_TYPE(ATARI_JSA_I, atari_jsa_i_device) +DECLARE_DEVICE_TYPE(ATARI_JSA_II, atari_jsa_ii_device) +DECLARE_DEVICE_TYPE(ATARI_JSA_III, atari_jsa_iii_device) +DECLARE_DEVICE_TYPE(ATARI_JSA_IIIS, atari_jsa_iiis_device) @@ -80,12 +80,12 @@ class atari_jsa_base_device : public device_t, { protected: // construction/destruction - atari_jsa_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int channels); + atari_jsa_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels); public: // static configuration - template static devcb_base &static_set_test_read_cb(device_t &device, _Object object) { return downcast(device).m_test_read_cb.set_callback(object); } - template static devcb_base &static_set_main_int_cb(device_t &device, _Object object) { return downcast(device).m_main_int_cb.set_callback(object); } + template static devcb_base &static_set_test_read_cb(device_t &device, Object &&cb) { return downcast(device).m_test_read_cb.set_callback(std::forward(cb)); } + template static devcb_base &static_set_main_int_cb(device_t &device, Object &&cb) { return downcast(device).m_main_int_cb.set_callback(std::forward(cb)); } // getters m6502_device &soundcpu() const { return *m_jsacpu; } @@ -140,7 +140,7 @@ class atari_jsa_oki_base_device : public atari_jsa_base_device { protected: // derived construction/destruction - atari_jsa_oki_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int channels); + atari_jsa_oki_base_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels); public: // read/write handlers @@ -245,7 +245,7 @@ public: protected: // derived construction/destruction - atari_jsa_iii_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int channels); + atari_jsa_iii_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner, uint32_t clock, int channels); public: // read/write handlers @@ -274,4 +274,4 @@ protected: }; -#endif +#endif // MAME_AUDIO_ATARI_JSA_H diff --git a/src/mame/audio/cage.cpp b/src/mame/audio/cage.cpp index 87dca1ebcb0..42a8c74c2c0 100644 --- a/src/mame/audio/cage.cpp +++ b/src/mame/audio/cage.cpp @@ -106,7 +106,7 @@ static const char *const register_names[] = * *************************************/ -const device_type ATARI_CAGE = device_creator; +DEFINE_DEVICE_TYPE(ATARI_CAGE, atari_cage_device, "atari_cage", "Atari CAGE") //------------------------------------------------- @@ -114,15 +114,12 @@ const device_type ATARI_CAGE = device_creator; //------------------------------------------------- atari_cage_device::atari_cage_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, ATARI_CAGE, "Atari CAGE", tag, owner, clock, "atari_cage", __FILE__), - m_cageram(*this, "cageram"), - m_soundlatch(*this, "soundlatch"), - m_irqhandler(*this) + atari_cage_device(mconfig, ATARI_CAGE, tag, owner, clock) { } -atari_cage_device::atari_cage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), +atari_cage_device::atari_cage_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), m_cageram(*this, "cageram"), m_soundlatch(*this, "soundlatch"), m_irqhandler(*this) @@ -684,7 +681,7 @@ machine_config_constructor atari_cage_device::device_mconfig_additions() const } -const device_type ATARI_CAGE_SEATTLE = device_creator; +DEFINE_DEVICE_TYPE(ATARI_CAGE_SEATTLE, atari_cage_seattle_device, "atari_cage_seattle", "Atari CAGE Seattle") //------------------------------------------------- @@ -692,7 +689,7 @@ const device_type ATARI_CAGE_SEATTLE = device_creator //------------------------------------------------- atari_cage_seattle_device::atari_cage_seattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - atari_cage_device(mconfig, ATARI_CAGE_SEATTLE, "Atari CAGE Seattle", tag, owner, clock, "atari_cage_seattle", __FILE__) + atari_cage_device(mconfig, ATARI_CAGE_SEATTLE, tag, owner, clock) { } diff --git a/src/mame/audio/cage.h b/src/mame/audio/cage.h index a4e36acac55..65a136f114b 100644 --- a/src/mame/audio/cage.h +++ b/src/mame/audio/cage.h @@ -6,8 +6,10 @@ ****************************************************************************/ -#ifndef __ATARI_CAGE__ -#define __ATARI_CAGE__ +#ifndef MAME_AUDIO_CAGE_H +#define MAME_AUDIO_CAGE_H + +#pragma once #include "machine/gen_latch.h" #include "sound/dmadac.h" @@ -26,10 +28,9 @@ class atari_cage_device : public device_t public: // construction/destruction atari_cage_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - atari_cage_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); static void static_set_speedup(device_t &device, offs_t speedup) { downcast(device).m_speedup = speedup; } - template static devcb_base &set_irqhandler_callback(device_t &device, _Object object) { return downcast(device).m_irqhandler.set_callback(object); } + template static devcb_base &set_irqhandler_callback(device_t &device, Object &&cb) { return downcast(device).m_irqhandler.set_callback(std::forward(cb)); } // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; @@ -58,6 +59,8 @@ public: WRITE32_MEMBER( speedup_w ); protected: + atari_cage_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; @@ -94,7 +97,7 @@ private: // device type definition -extern const device_type ATARI_CAGE; +DECLARE_DEVICE_TYPE(ATARI_CAGE, atari_cage_device) class atari_cage_seattle_device : public atari_cage_device { @@ -108,6 +111,6 @@ public: }; // device type definition -extern const device_type ATARI_CAGE_SEATTLE; +DECLARE_DEVICE_TYPE(ATARI_CAGE_SEATTLE, atari_cage_seattle_device) -#endif // __ATARI_CAGE__ +#endif // MAME_AUDIO_CAGE_H diff --git a/src/mame/audio/carnival.cpp b/src/mame/audio/carnival.cpp index 0fde41c2967..6a093bfd3bd 100644 --- a/src/mame/audio/carnival.cpp +++ b/src/mame/audio/carnival.cpp @@ -184,7 +184,7 @@ WRITE8_MEMBER( vicdual_state::carnival_music_port_2_w ) } -READ8_MEMBER( vicdual_state::carnival_music_port_t1_r ) +READ_LINE_MEMBER( vicdual_state::carnival_music_port_t1_r ) { // T1: comms from audio port 2 d3 return ~m_port2State >> 3 & 1; @@ -195,19 +195,15 @@ static ADDRESS_MAP_START( mboard_map, AS_PROGRAM, 8, vicdual_state ) AM_RANGE(0x0000, 0x03ff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( mboard_io_map, AS_IO, 8, vicdual_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(carnival_music_port_1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(carnival_music_port_2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(carnival_music_port_t1_r) -ADDRESS_MAP_END - MACHINE_CONFIG_FRAGMENT( carnival_audio ) /* music board */ MCFG_CPU_ADD("audiocpu", I8039, XTAL_3_579545MHz) MCFG_CPU_PROGRAM_MAP(mboard_map) - MCFG_CPU_IO_MAP(mboard_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(vicdual_state, carnival_music_port_1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(vicdual_state, carnival_music_port_2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(vicdual_state, carnival_music_port_t1_r)) MCFG_SOUND_ADD("psg", AY8912, XTAL_3_579545MHz/3) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) diff --git a/src/mame/audio/cclimber.cpp b/src/mame/audio/cclimber.cpp index cdec09a7308..d9f6eaa9f35 100644 --- a/src/mame/audio/cclimber.cpp +++ b/src/mame/audio/cclimber.cpp @@ -1,9 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria #include "emu.h" -#include "sound/ay8910.h" #include "audio/cclimber.h" +#include "sound/ay8910.h" + /* macro to convert 4-bit unsigned samples to 16-bit signed samples */ #define SAMPLE_CONV4(a) (0x1111*((a&0x0f))-0x8000) @@ -34,7 +35,7 @@ MACHINE_CONFIG_END // DEVICE DEFINITIONS //************************************************************************** -const device_type CCLIMBER_AUDIO = device_creator; +DEFINE_DEVICE_TYPE(CCLIMBER_AUDIO, cclimber_audio_device, "cclimber_audio", "Crazy Climber Sound Board") //************************************************************************** @@ -46,7 +47,7 @@ const device_type CCLIMBER_AUDIO = device_creator; //------------------------------------------------- cclimber_audio_device::cclimber_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CCLIMBER_AUDIO, "Crazy Climber Sound Board", tag, owner, clock, "cclimber_audio", __FILE__), + : device_t(mconfig, CCLIMBER_AUDIO, tag, owner, clock), m_sample_buf(nullptr), m_sample_num(0), m_sample_freq(0), diff --git a/src/mame/audio/cclimber.h b/src/mame/audio/cclimber.h index f839cb800e0..c5cc6faefaf 100644 --- a/src/mame/audio/cclimber.h +++ b/src/mame/audio/cclimber.h @@ -7,18 +7,18 @@ Functions to emulate the cclimber audio boards ***************************************************************************/ +#ifndef MAME_AUDIO_CCLIMBER_H +#define MAME_AUDIO_CCLIMBER_H #pragma once -#ifndef __CCLIMBER_AUDIO__ -#define __CCLIMBER_AUDIO__ - #include "sound/samples.h" + //************************************************************************** // GLOBAL VARIABLES //************************************************************************** -extern const device_type CCLIMBER_AUDIO; +DECLARE_DEVICE_TYPE(CCLIMBER_AUDIO, cclimber_audio_device) //************************************************************************** // DEVICE CONFIGURATION MACROS @@ -60,4 +60,4 @@ private: }; -#endif +#endif // MAME_AUDIO_CCLIMBER_H diff --git a/src/mame/audio/channelf.cpp b/src/mame/audio/channelf.cpp index 50576cc0297..8823294c75e 100644 --- a/src/mame/audio/channelf.cpp +++ b/src/mame/audio/channelf.cpp @@ -6,10 +6,10 @@ #define MAX_AMPLITUDE 0x7fff -const device_type CHANNELF_SOUND = device_creator; +DEFINE_DEVICE_TYPE(CHANNELF_SOUND, channelf_sound_device, "channelf_sound", "Channel F Sound") channelf_sound_device::channelf_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CHANNELF_SOUND, "Channel F Sound", tag, owner, clock, "channelf_sound", __FILE__), + : device_t(mconfig, CHANNELF_SOUND, tag, owner, clock), device_sound_interface(mconfig, *this), m_channel(nullptr), m_sound_mode(0), diff --git a/src/mame/audio/channelf.h b/src/mame/audio/channelf.h index f06c1e09bb9..167c4e15d08 100644 --- a/src/mame/audio/channelf.h +++ b/src/mame/audio/channelf.h @@ -6,11 +6,10 @@ * ****************************************************************************/ -#ifndef CHANNELF_SOUND_H_ -#define CHANNELF_SOUND_H_ +#ifndef MAME_AUDIO_CHANNELF_H +#define MAME_AUDIO_CHANNELF_H -class channelf_sound_device : public device_t, - public device_sound_interface +class channelf_sound_device : public device_t, public device_sound_interface { public: channelf_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -35,7 +34,6 @@ private: }; -extern const device_type CHANNELF_SOUND; +DECLARE_DEVICE_TYPE(CHANNELF_SOUND, channelf_sound_device) - -#endif /* CHANNELF_SOUND_H_ */ +#endif // MAME_AUDIO_CHANNELF_H diff --git a/src/mame/audio/cinemat.cpp b/src/mame/audio/cinemat.cpp index 3e87c390eb4..6d1c65e1f61 100644 --- a/src/mame/audio/cinemat.cpp +++ b/src/mame/audio/cinemat.cpp @@ -1350,7 +1350,7 @@ MACHINE_CONFIG_END WRITE8_MEMBER(cinemat_state::qb3_sound_w) { - uint16_t rega = m_maincpu->state_int(CCPU_A); + uint16_t rega = m_maincpu->state_int(ccpu_cpu_device::CCPU_A); demon_sound_w(0x00 | (~rega & 0x0f), 0x10); } diff --git a/src/mame/audio/cps3.cpp b/src/mame/audio/cps3.cpp index c5008a17b59..0c5c3c764dd 100644 --- a/src/mame/audio/cps3.cpp +++ b/src/mame/audio/cps3.cpp @@ -11,7 +11,7 @@ // device type definition -const device_type CPS3 = device_creator; +DEFINE_DEVICE_TYPE(CPS3, cps3_sound_device, "cps3_custom", "CPS3 Audio Custom") //************************************************************************** @@ -23,11 +23,11 @@ const device_type CPS3 = device_creator; //------------------------------------------------- cps3_sound_device::cps3_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CPS3, "CPS3 Audio Custom", tag, owner, clock, "cps3_custom", __FILE__), - device_sound_interface(mconfig, *this), - m_stream(nullptr), - m_key(0), - m_base(nullptr) + : device_t(mconfig, CPS3, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_stream(nullptr) + , m_key(0) + , m_base(nullptr) { } diff --git a/src/mame/audio/cps3.h b/src/mame/audio/cps3.h index 41c7b6c041f..3dc78d2e967 100644 --- a/src/mame/audio/cps3.h +++ b/src/mame/audio/cps3.h @@ -5,6 +5,10 @@ Capcom CPS-3 Sound Hardware ****************************************************************************/ +#ifndef MAME_AUDIO_CPS3_H +#define MAME_AUDIO_CPS3_H + +#pragma once //************************************************************************** // TYPE DEFINITIONS @@ -26,8 +30,7 @@ struct cps3_voice // ======================> cps3_sound_device -class cps3_sound_device : public device_t, - public device_sound_interface +class cps3_sound_device : public device_t, public device_sound_interface { public: cps3_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -52,4 +55,6 @@ private: int8_t* m_base; }; -extern const device_type CPS3; +DECLARE_DEVICE_TYPE(CPS3, cps3_sound_device) + +#endif // MAME_AUDIO_CPS3_H diff --git a/src/mame/audio/csd.cpp b/src/mame/audio/csd.cpp index cea1053a8f9..c008292d025 100644 --- a/src/mame/audio/csd.cpp +++ b/src/mame/audio/csd.cpp @@ -15,7 +15,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type MIDWAY_CHEAP_SQUEAK_DELUXE = device_creator; +DEFINE_DEVICE_TYPE(MIDWAY_CHEAP_SQUEAK_DELUXE, midway_cheap_squeak_deluxe_device, "midcsd", "Cheap Squeak Deluxe Sound Board") //------------------------------------------------- // audio cpu map @@ -74,7 +74,7 @@ const tiny_rom_entry *midway_cheap_squeak_deluxe_device::device_rom_region() con //------------------------------------------------- midway_cheap_squeak_deluxe_device::midway_cheap_squeak_deluxe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, MIDWAY_CHEAP_SQUEAK_DELUXE, "Cheap Squeak Deluxe Sound Board", tag, owner, clock, "midcsd", __FILE__), + device_t(mconfig, MIDWAY_CHEAP_SQUEAK_DELUXE, tag, owner, clock), device_mixer_interface(mconfig, *this), m_cpu(*this, "cpu"), m_pia(*this, "pia"), diff --git a/src/mame/audio/csd.h b/src/mame/audio/csd.h index 87e657135b9..2c9062dd73b 100644 --- a/src/mame/audio/csd.h +++ b/src/mame/audio/csd.h @@ -5,11 +5,11 @@ Cheap Squeak Deluxe / Artificial Artist Sound Board ***************************************************************************/ +#ifndef MAME_AUDIO_CSD_H +#define MAME_AUDIO_CSD_H #pragma once -#ifndef MAME_AUDIO_CSD_H -#define MAME_AUDIO_CSD_H #include "cpu/m68000/m68000.h" #include "machine/6821pia.h" @@ -58,6 +58,6 @@ private: }; // device type definition -extern const device_type MIDWAY_CHEAP_SQUEAK_DELUXE; +DECLARE_DEVICE_TYPE(MIDWAY_CHEAP_SQUEAK_DELUXE, midway_cheap_squeak_deluxe_device) #endif // MAME_AUDIO_CSD_H diff --git a/src/mame/audio/dai_snd.cpp b/src/mame/audio/dai_snd.cpp index 09bef90e5b5..3e59797b817 100644 --- a/src/mame/audio/dai_snd.cpp +++ b/src/mame/audio/dai_snd.cpp @@ -14,7 +14,7 @@ #include "dai_snd.h" // device type definition -const device_type DAI_SOUND = device_creator; +DEFINE_DEVICE_TYPE(DAI_SOUND, dai_sound_device, "dai_sound", "DAI Audio Custom") //------------------------------------------------- @@ -22,8 +22,8 @@ const device_type DAI_SOUND = device_creator; //------------------------------------------------- dai_sound_device::dai_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DAI_SOUND, "DAI Audio Custom", tag, owner, clock, "dai_sound", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, DAI_SOUND, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } @@ -53,10 +53,10 @@ void dai_sound_device::device_reset() //------------------------------------------------- const uint16_t dai_sound_device::s_osc_volume_table[] = { - 0, 500, 1000, 1500, - 2000, 2500, 3000, 3500, - 4000, 4500, 5000, 5500, - 6000, 6500, 7000, 7500 + 0, 500, 1000, 1500, + 2000, 2500, 3000, 3500, + 4000, 4500, 5000, 5500, + 6000, 6500, 7000, 7500 }; //------------------------------------------------- @@ -64,10 +64,10 @@ const uint16_t dai_sound_device::s_osc_volume_table[] = { //------------------------------------------------- const uint16_t dai_sound_device::s_noise_volume_table[] = { - 0, 0, 0, 0, - 0, 0, 0, 0, - 500, 1000, 1500, 2000, - 2500, 3000, 3500, 4000 + 0, 0, 0, 0, + 0, 0, 0, 0, + 500, 1000, 1500, 2000, + 2500, 3000, 3500, 4000 }; diff --git a/src/mame/audio/dai_snd.h b/src/mame/audio/dai_snd.h index 82aab50027a..20111be1663 100644 --- a/src/mame/audio/dai_snd.h +++ b/src/mame/audio/dai_snd.h @@ -6,14 +6,13 @@ * ****************************************************************************/ -#ifndef DAI_SND_H_ -#define DAI_SND_H_ +#ifndef MAME_AUDIO_DAI_SND_H +#define MAME_AUDIO_DAI_SND_H // ======================> dai_sound_device -class dai_sound_device : public device_t, - public device_sound_interface +class dai_sound_device : public device_t, public device_sound_interface { public: // construction/destruction @@ -40,6 +39,6 @@ private: static const uint16_t s_noise_volume_table[]; }; -extern const device_type DAI_SOUND; +DECLARE_DEVICE_TYPE(DAI_SOUND, dai_sound_device) -#endif /* DAI_H_ */ +#endif // MAME_AUDIO_DAI_SND_H diff --git a/src/mame/audio/dcs.cpp b/src/mame/audio/dcs.cpp index 3d71d0fc354..f91417f8525 100644 --- a/src/mame/audio/dcs.cpp +++ b/src/mame/audio/dcs.cpp @@ -825,8 +825,8 @@ void dcs_audio_device::dcs_register_state() // dcs_audio_device - constructor //------------------------------------------------- -dcs_audio_device::dcs_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int rev) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), +dcs_audio_device::dcs_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int rev) : + device_t(mconfig, type, tag, owner, clock), m_cpu(nullptr), m_program(nullptr), m_data(nullptr), @@ -2488,14 +2488,14 @@ int dcs_audio_device::preprocess_write(uint16_t data) return result; } -const device_type DCS_AUDIO_2K = device_creator; +DEFINE_DEVICE_TYPE(DCS_AUDIO_2K, dcs_audio_2k_device, "dcs_audio_2k", "DCS Audio 2K") //------------------------------------------------- // dcs_audio_2k_device - constructor //------------------------------------------------- dcs_audio_2k_device::dcs_audio_2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - dcs_audio_device(mconfig, DCS_AUDIO_2K, "DCS Audio 2K", tag, owner, clock, "dcs_audio_2k", __FILE__) + dcs_audio_device(mconfig, DCS_AUDIO_2K, tag, owner, clock, 1) { } @@ -2504,14 +2504,14 @@ machine_config_constructor dcs_audio_2k_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( dcs_audio_2k ); } -const device_type DCS_AUDIO_2K_UART = device_creator; +DEFINE_DEVICE_TYPE(DCS_AUDIO_2K_UART, dcs_audio_2k_uart_device, "dcs_audio_2k_uart", "DCS Audio 2K UART") //------------------------------------------------- // dcs_audio_2k_uart_device - constructor //------------------------------------------------- dcs_audio_2k_uart_device::dcs_audio_2k_uart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - dcs_audio_device(mconfig, DCS_AUDIO_2K_UART, "DCS Audio 2K UART", tag, owner, clock, "dcs_audio_2k_uart", __FILE__) + dcs_audio_device(mconfig, DCS_AUDIO_2K_UART, tag, owner, clock, 1) { } @@ -2520,14 +2520,14 @@ machine_config_constructor dcs_audio_2k_uart_device::device_mconfig_additions() return MACHINE_CONFIG_NAME( dcs_audio_2k_uart ); } -const device_type DCS_AUDIO_8K = device_creator; +DEFINE_DEVICE_TYPE(DCS_AUDIO_8K, dcs_audio_8k_device, "dcs_audio_8k", "DCS Audio 8K") //------------------------------------------------- // dcs_audio_8k_device - constructor //------------------------------------------------- dcs_audio_8k_device::dcs_audio_8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - dcs_audio_device(mconfig, DCS_AUDIO_8K, "DCS Audio 8K", tag, owner, clock, "dcs_audio_8k", __FILE__) + dcs_audio_device(mconfig, DCS_AUDIO_8K, tag, owner, clock, 1) { } @@ -2536,14 +2536,14 @@ machine_config_constructor dcs_audio_8k_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( dcs_audio_8k ); } -const device_type DCS_AUDIO_WPC = device_creator; +DEFINE_DEVICE_TYPE(DCS_AUDIO_WPC, dcs_audio_wpc_device, "dcs_audio_wpc", "DCS Audio WPC") //------------------------------------------------- // dcs_audio_wpc_device - constructor //------------------------------------------------- dcs_audio_wpc_device::dcs_audio_wpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - dcs_audio_device(mconfig, DCS_AUDIO_WPC, "DCS Audio WPC", tag, owner, clock, "dcs_audio_wpc", __FILE__, 15) + dcs_audio_device(mconfig, DCS_AUDIO_WPC, tag, owner, clock, 15) { } @@ -2558,20 +2558,20 @@ machine_config_constructor dcs_audio_wpc_device::device_mconfig_additions() cons // dcs2_audio_device - constructor //------------------------------------------------- -dcs2_audio_device::dcs2_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - dcs_audio_device(mconfig, type, name, tag, owner, clock, shortname, source) +dcs2_audio_device::dcs2_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + dcs_audio_device(mconfig, type, tag, owner, clock, 1) { } -const device_type DCS2_AUDIO_2115 = device_creator; +DEFINE_DEVICE_TYPE(DCS2_AUDIO_2115, dcs2_audio_2115_device, "dcs2_audio_2115", "DCS2 Audio 2115") //------------------------------------------------- // dcs2_audio_2115_device - constructor //------------------------------------------------- dcs2_audio_2115_device::dcs2_audio_2115_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - dcs2_audio_device(mconfig, DCS2_AUDIO_2115, "DCS2 Audio 2115", tag, owner, clock, "dcs2_audio_2115", __FILE__) + dcs2_audio_device(mconfig, DCS2_AUDIO_2115, tag, owner, clock) { } @@ -2580,14 +2580,14 @@ machine_config_constructor dcs2_audio_2115_device::device_mconfig_additions() co return MACHINE_CONFIG_NAME( dcs2_audio_2115 ); } -const device_type DCS2_AUDIO_2104 = device_creator; +DEFINE_DEVICE_TYPE(DCS2_AUDIO_2104, dcs2_audio_2104_device, "dcs2_audio_2104", "DCS2 Audio 2104") //------------------------------------------------- // dcs2_audio_2104_device - constructor //------------------------------------------------- dcs2_audio_2104_device::dcs2_audio_2104_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - dcs2_audio_device(mconfig, DCS2_AUDIO_2104, "DCS2 Audio 2104", tag, owner, clock, "dcs2_audio_2104", __FILE__) + dcs2_audio_device(mconfig, DCS2_AUDIO_2104, tag, owner, clock) { } @@ -2597,14 +2597,14 @@ machine_config_constructor dcs2_audio_2104_device::device_mconfig_additions() co } -const device_type DCS2_AUDIO_DSIO = device_creator; +DEFINE_DEVICE_TYPE(DCS2_AUDIO_DSIO, dcs2_audio_dsio_device, "dcs2_audio_dsio", "DCS2 Audio DSIO") //------------------------------------------------- // dcs2_audio_dsio_device - constructor //------------------------------------------------- dcs2_audio_dsio_device::dcs2_audio_dsio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - dcs2_audio_device(mconfig, DCS2_AUDIO_DSIO, "DCS2 Audio DSIO", tag, owner, clock, "dcs2_audio_dsio", __FILE__) + dcs2_audio_device(mconfig, DCS2_AUDIO_DSIO, tag, owner, clock) { } @@ -2613,14 +2613,14 @@ machine_config_constructor dcs2_audio_dsio_device::device_mconfig_additions() co return MACHINE_CONFIG_NAME( dcs2_audio_dsio ); } -const device_type DCS2_AUDIO_DENVER = device_creator; +DEFINE_DEVICE_TYPE(DCS2_AUDIO_DENVER, dcs2_audio_denver_device, "dcs2_audio_denver", "DCS2 Audio Denver") //------------------------------------------------- // dcs2_audio_denver_device - constructor //------------------------------------------------- dcs2_audio_denver_device::dcs2_audio_denver_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - dcs2_audio_device(mconfig, DCS2_AUDIO_DENVER, "DCS2 Audio Denver", tag, owner, clock, "dcs2_audio_denver", __FILE__) + dcs2_audio_device(mconfig, DCS2_AUDIO_DENVER, tag, owner, clock) { } diff --git a/src/mame/audio/dcs.h b/src/mame/audio/dcs.h index e041512dbd1..bd3f7e0643c 100644 --- a/src/mame/audio/dcs.h +++ b/src/mame/audio/dcs.h @@ -6,8 +6,10 @@ ****************************************************************************/ -#ifndef __DCS_H__ -#define __DCS_H__ +#ifndef MAME_AUDIO_DCS_H +#define MAME_AUDIO_DCS_H + +#pragma once #include "cpu/adsp2100/adsp2100.h" #include "sound/dmadac.h" @@ -23,9 +25,6 @@ class dcs_audio_device : public device_t { public: - // construction/destruction - dcs_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, int rev = 1); - // for dcs2 (int dram_in_mb, offs_t polling_offset) static void static_set_dram_in_mb(device_t &device, int dram_in_mb) { downcast(device).m_dram_in_mb = dram_in_mb; } static void static_set_polling_offset(device_t &device, offs_t polling_offset) { downcast(device).m_polling_offset = polling_offset; } @@ -106,11 +105,13 @@ public: int preprocess_write(uint16_t data); protected: + // construction/destruction + dcs_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int rev); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; -protected: struct sdrc_state { uint16_t reg[4]; @@ -233,7 +234,7 @@ public: }; // device type definition -extern const device_type DCS_AUDIO_2K; +DECLARE_DEVICE_TYPE(DCS_AUDIO_2K, dcs_audio_2k_device) // dcs_audio_2k_uart_device @@ -249,7 +250,7 @@ public: }; // device type definition -extern const device_type DCS_AUDIO_2K_UART; +DECLARE_DEVICE_TYPE(DCS_AUDIO_2K_UART, dcs_audio_2k_uart_device) // dcs_audio_8k_device @@ -265,7 +266,7 @@ public: }; // device type definition -extern const device_type DCS_AUDIO_8K; +DECLARE_DEVICE_TYPE(DCS_AUDIO_8K, dcs_audio_8k_device) // dcs_audio_wpc_device @@ -280,18 +281,17 @@ public: }; // device type definition -extern const device_type DCS_AUDIO_WPC; +DECLARE_DEVICE_TYPE(DCS_AUDIO_WPC, dcs_audio_wpc_device) // dcs2_audio_device class dcs2_audio_device : public dcs_audio_device { -public: +protected: // construction/destruction - dcs2_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + dcs2_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); -protected: // device-level overrides virtual void device_start() override; }; @@ -310,7 +310,7 @@ public: }; // device type definition -extern const device_type DCS2_AUDIO_2115; +DECLARE_DEVICE_TYPE(DCS2_AUDIO_2115, dcs2_audio_2115_device) // dcs2_audio_2104_device @@ -326,7 +326,7 @@ public: }; // device type definition -extern const device_type DCS2_AUDIO_2104; +DECLARE_DEVICE_TYPE(DCS2_AUDIO_2104, dcs2_audio_2104_device) // dcs2_audio_dsio_device @@ -342,7 +342,7 @@ public: }; // device type definition -extern const device_type DCS2_AUDIO_DSIO; +DECLARE_DEVICE_TYPE(DCS2_AUDIO_DSIO, dcs2_audio_dsio_device) // dcs2_audio_denver_device @@ -358,6 +358,6 @@ public: }; // device type definition -extern const device_type DCS2_AUDIO_DENVER; +DECLARE_DEVICE_TYPE(DCS2_AUDIO_DENVER, dcs2_audio_denver_device) -#endif +#endif // MAME_AUDIO_DCS_H diff --git a/src/mame/audio/decobsmt.cpp b/src/mame/audio/decobsmt.cpp index 6ce93a8e84a..6e1415f975a 100644 --- a/src/mame/audio/decobsmt.cpp +++ b/src/mame/audio/decobsmt.cpp @@ -30,10 +30,9 @@ static ADDRESS_MAP_START( bsmt_map, AS_0, 8, decobsmt_device ) AM_RANGE(0x000000, 0xffffff) AM_ROM AM_REGION(":bsmt", 0) ADDRESS_MAP_END -static void bsmt_ready_callback(bsmt2000_device &device) +void decobsmt_device::bsmt_ready_callback() { - decobsmt_device *decobsmt = device.machine().device(DECOBSMT_TAG); - decobsmt->m_ourcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); /* BSMT is ready */ + m_ourcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); /* BSMT is ready */ } MACHINE_CONFIG_FRAGMENT( decobsmt ) @@ -44,7 +43,7 @@ MACHINE_CONFIG_FRAGMENT( decobsmt ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_BSMT2000_ADD(BSMT_TAG, 24000000) MCFG_DEVICE_ADDRESS_MAP(AS_0, bsmt_map) - MCFG_BSMT2000_READY_CALLBACK(bsmt_ready_callback) + MCFG_BSMT2000_READY_CALLBACK(decobsmt_device, bsmt_ready_callback) MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) MCFG_SOUND_ROUTE(1, "rspeaker", 2.0) MACHINE_CONFIG_END @@ -53,7 +52,7 @@ MACHINE_CONFIG_END // GLOBAL VARIABLES //************************************************************************** -const device_type DECOBSMT = device_creator; +DEFINE_DEVICE_TYPE(DECOBSMT, decobsmt_device, "decobsmt", "Data East/Sega/Stern BSMT2000 Sound Board") //------------------------------------------------- @@ -74,10 +73,10 @@ machine_config_constructor decobsmt_device::device_mconfig_additions() const // decobsmt_device - constructor //------------------------------------------------- -decobsmt_device::decobsmt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, DECOBSMT, "Data East/Sega/Stern BSMT2000 Sound Board", tag, owner, clock, "decobsmt", __FILE__), - m_ourcpu(*this, M6809_TAG), - m_bsmt(*this, BSMT_TAG) +decobsmt_device::decobsmt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, DECOBSMT, tag, owner, clock) + , m_ourcpu(*this, M6809_TAG) + , m_bsmt(*this, BSMT_TAG) { } diff --git a/src/mame/audio/decobsmt.h b/src/mame/audio/decobsmt.h index a16165e0b22..9615a7649bd 100644 --- a/src/mame/audio/decobsmt.h +++ b/src/mame/audio/decobsmt.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont -#pragma once +#ifndef MAME_AUDIO_DECOBSMT_H +#define MAME_AUDIO_DECOBSMT_H -#ifndef __DECOBSMT_H__ -#define __DECOBSMT_H__ +#pragma once #include "cpu/m6809/m6809.h" #include "sound/bsmt2000.h" @@ -20,37 +20,40 @@ class decobsmt_device : public device_t { public: - // construction/destruction - decobsmt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + // construction/destruction + decobsmt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_WRITE8_MEMBER(bsmt_reset_w); - DECLARE_READ8_MEMBER(bsmt_status_r); - DECLARE_WRITE8_MEMBER(bsmt0_w); - DECLARE_WRITE8_MEMBER(bsmt1_w); - DECLARE_READ8_MEMBER(bsmt_comms_r); - DECLARE_WRITE8_MEMBER(bsmt_comms_w); + DECLARE_WRITE8_MEMBER(bsmt_reset_w); + DECLARE_READ8_MEMBER(bsmt_status_r); + DECLARE_WRITE8_MEMBER(bsmt0_w); + DECLARE_WRITE8_MEMBER(bsmt1_w); + DECLARE_READ8_MEMBER(bsmt_comms_r); + DECLARE_WRITE8_MEMBER(bsmt_comms_w); - DECLARE_WRITE_LINE_MEMBER(bsmt_reset_line); + DECLARE_WRITE_LINE_MEMBER(bsmt_reset_line); - INTERRUPT_GEN_MEMBER(decobsmt_firq_interrupt); + INTERRUPT_GEN_MEMBER(decobsmt_firq_interrupt); - required_device m_ourcpu; - required_device m_bsmt; + void bsmt_ready_callback(); protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - virtual machine_config_constructor device_mconfig_additions() const override; + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; private: - uint8_t m_bsmt_latch; - uint8_t m_bsmt_reset; - uint8_t m_bsmt_comms; + required_device m_ourcpu; + required_device m_bsmt; + + uint8_t m_bsmt_latch; + uint8_t m_bsmt_reset; + uint8_t m_bsmt_comms; }; // device type definition extern const device_type DECOBSMT; +DECLARE_DEVICE_TYPE(DECOBSMT, decobsmt_device) -#endif /* __DECOBSMT_H__ */ +#endif // MAME_AUDIO_DECOBSMT_H diff --git a/src/mame/audio/dkong.cpp b/src/mame/audio/dkong.cpp index 28d6d366719..032e1a161fe 100644 --- a/src/mame/audio/dkong.cpp +++ b/src/mame/audio/dkong.cpp @@ -1207,12 +1207,6 @@ WRITE8_MEMBER(dkong_state::M58817_command_w) /* FIXME 0x20 is CS */ } -READ8_MEMBER(dkong_state::M58817_status_r) -{ - m58817_device *m58817 = machine().device("tms"); - return m58817->status_r(space, offset, mem_mask); -} - /**************************************************************** * @@ -1284,41 +1278,28 @@ static ADDRESS_MAP_START( dkong_sound_map, AS_PROGRAM, 8, dkong_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( dkong_sound_io_map, AS_IO, 8, dkong_state ) - AM_RANGE(0x00, 0xFF) AM_READWRITE(dkong_tune_r, dkong_voice_w) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(dkong_tune_r, dkong_voice_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(dkong_p1_w) /* only write to dac */ - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_LATCH8_READWRITE("virtual_p2") - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_LATCH8_READBIT("ls259.6h", 5) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_LATCH8_READBIT("ls259.6h", 4) + AM_RANGE(0x00, 0xff) AM_READWRITE(dkong_tune_r, dkong_voice_w) ADDRESS_MAP_END static ADDRESS_MAP_START( dkongjr_sound_io_map, AS_IO, 8, dkong_state ) - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_LATCH8_READ("ls174.3d") - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(dkong_p1_w) /* only write to dac */ - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_LATCH8_READWRITE("virtual_p2") - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_LATCH8_READBIT("ls259.6h", 5) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_LATCH8_READBIT("ls259.6h", 4) + AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_DEVREAD("ls174.3d", latch8_device, read) ADDRESS_MAP_END static ADDRESS_MAP_START( radarscp1_sound_io_map, AS_IO, 8, dkong_state ) AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_DEVREAD("ls175.3d", latch8_device, read) AM_RANGE(0x00, 0xff) AM_WRITE(dkong_p1_w) /* DAC here */ - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_LATCH8_READ("virtual_p1") AM_WRITE(M58817_command_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_LATCH8_WRITE("virtual_p2") - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_LATCH8_READBIT("ls259.6h", 5) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_LATCH8_READBIT("ls259.6h", 4) ADDRESS_MAP_END static ADDRESS_MAP_START( dkong3_sound1_map, AS_PROGRAM, 8, dkong_state ) AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x4016, 0x4016) AM_LATCH8_READ("latch1") /* overwrite default */ - AM_RANGE(0x4017, 0x4017) AM_LATCH8_READ("latch2") + AM_RANGE(0x4016, 0x4016) AM_DEVREAD("latch1", latch8_device, read) /* overwrite default */ + AM_RANGE(0x4017, 0x4017) AM_DEVREAD("latch2", latch8_device, read) AM_RANGE(0xe000, 0xffff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( dkong3_sound2_map, AS_PROGRAM, 8, dkong_state ) AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x4016, 0x4016) AM_LATCH8_READ("latch3") /* overwrite default */ + AM_RANGE(0x4016, 0x4016) AM_DEVREAD("latch3", latch8_device, read) /* overwrite default */ AM_RANGE(0xe000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -1336,11 +1317,11 @@ MACHINE_CONFIG_FRAGMENT( dkong2b_audio ) MCFG_LATCH8_INVERT(0x0F) MCFG_LATCH8_ADD("ls259.6h") - MCFG_LATCH8_WRITE_0(DEVWRITE8("discrete", discrete_device, write),DS_SOUND0_INP) - MCFG_LATCH8_WRITE_1(DEVWRITE8("discrete", discrete_device, write),DS_SOUND1_INP) - MCFG_LATCH8_WRITE_2(DEVWRITE8("discrete", discrete_device, write),DS_SOUND2_INP) - MCFG_LATCH8_WRITE_6(DEVWRITE8("discrete", discrete_device, write),DS_SOUND6_INP) - MCFG_LATCH8_WRITE_7(DEVWRITE8("discrete", discrete_device, write),DS_SOUND7_INP) + MCFG_LATCH8_WRITE_0(DEVWRITELINE("discrete", discrete_device, write_line)) + MCFG_LATCH8_WRITE_1(DEVWRITELINE("discrete", discrete_device, write_line)) + MCFG_LATCH8_WRITE_2(DEVWRITELINE("discrete", discrete_device, write_line)) + MCFG_LATCH8_WRITE_6(DEVWRITELINE("discrete", discrete_device, write_line)) + MCFG_LATCH8_WRITE_7(DEVWRITELINE("discrete", discrete_device, write_line)) /* If P2.Bit7 -> is apparently an external signal decay or other output control * If P2.Bit6 -> activates the external compressed sample ROM (not radarscp1) @@ -1351,12 +1332,19 @@ MACHINE_CONFIG_FRAGMENT( dkong2b_audio ) MCFG_LATCH8_ADD( "virtual_p2" ) /* virtual latch for port B */ MCFG_LATCH8_INVERT( 0x20 ) /* signal is inverted */ - MCFG_LATCH8_READ_5(DEVREAD8("ls259.6h", latch8_device, read), 3) - MCFG_LATCH8_WRITE_7(DEVWRITE8("discrete", discrete_device, write), DS_DISCHARGE_INV) + MCFG_LATCH8_READ_5(DEVREADLINE("ls259.6h", latch8_device, bit3_r)) + MCFG_LATCH8_WRITE_7(DEVWRITELINE("discrete", discrete_device, write_line)) MCFG_CPU_ADD("soundcpu", MB8884, I8035_CLOCK) MCFG_CPU_PROGRAM_MAP(dkong_sound_map) MCFG_CPU_IO_MAP(dkong_sound_io_map) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(dkong_state, dkong_tune_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(dkong_state, dkong_voice_w)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dkong_state, dkong_p1_w)) // only write to dac + MCFG_MCS48_PORT_P2_IN_CB(DEVREAD8("virtual_p2", latch8_device, read)) + MCFG_MCS48_PORT_P2_OUT_CB(DEVWRITE8("virtual_p2", latch8_device, write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("ls259.6h", latch8_device, bit5_q_r)) + MCFG_MCS48_PORT_T1_IN_CB(DEVREADLINE("ls259.6h", latch8_device, bit4_q_r)) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_DISCRETE_ADD("discrete", 0, dkong2b) @@ -1374,12 +1362,15 @@ MACHINE_CONFIG_DERIVED( radarscp1_audio, radarscp_audio ) MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_IO_MAP(radarscp1_sound_io_map) + MCFG_MCS48_PORT_P1_IN_CB(DEVREAD8("virtual_p1", latch8_device, read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dkong_state, M58817_command_w)) + MCFG_MCS48_PORT_P2_IN_CB(NOOP) /* virtual_p2 is not read -see memory map-, all bits are output bits */ MCFG_LATCH8_ADD( "virtual_p1" ) /* virtual latch for port A */ MCFG_LATCH8_INVERT( 0x80 ) /* signal is inverted */ - MCFG_LATCH8_READ_7(DEVREAD8("ls259.6h", latch8_device, read), 3) - MCFG_LATCH8_READ_6(READ8(dkong_state, M58817_status_r), 0) + MCFG_LATCH8_READ_7(DEVREADLINE("ls259.6h", latch8_device, bit3_r)) + MCFG_LATCH8_READ_6(DEVREAD8("tms", m58817_device, status_r)) /* tms memory controller */ MCFG_DEVICE_ADD("m58819", M58819, 0) @@ -1400,26 +1391,31 @@ MACHINE_CONFIG_FRAGMENT( dkongjr_audio ) MCFG_LATCH8_MASKOUT(0xE0) MCFG_LATCH8_ADD( "ls259.6h") - MCFG_LATCH8_WRITE_0(DEVWRITE8("discrete", discrete_device, write), DS_SOUND0_INP) - MCFG_LATCH8_WRITE_1(DEVWRITE8("discrete", discrete_device, write), DS_SOUND1_INP) - MCFG_LATCH8_WRITE_2(DEVWRITE8("discrete", discrete_device, write), DS_SOUND2_INP) - MCFG_LATCH8_WRITE_7(DEVWRITE8("discrete", discrete_device, write), DS_SOUND7_INP) + MCFG_LATCH8_WRITE_0(DEVWRITELINE("discrete", discrete_device, write_line)) + MCFG_LATCH8_WRITE_1(DEVWRITELINE("discrete", discrete_device, write_line)) + MCFG_LATCH8_WRITE_2(DEVWRITELINE("discrete", discrete_device, write_line)) + MCFG_LATCH8_WRITE_7(DEVWRITELINE("discrete", discrete_device, write_line)) MCFG_LATCH8_ADD( "ls259.5h") - MCFG_LATCH8_WRITE_1(DEVWRITE8("discrete", discrete_device, write), DS_SOUND9_INP) + MCFG_LATCH8_WRITE_1(DEVWRITELINE("discrete", discrete_device, write_line)) MCFG_LATCH8_ADD( "ls259.4h") MCFG_LATCH8_ADD( "virtual_p2" ) /* virtual latch for port B */ MCFG_LATCH8_INVERT( 0x70 ) /* all signals are inverted */ - MCFG_LATCH8_READ_6(DEVREAD8("ls259.4h", latch8_device, read), 1) - MCFG_LATCH8_READ_5(DEVREAD8("ls259.6h", latch8_device, read), 3) - MCFG_LATCH8_READ_4(DEVREAD8("ls259.6h", latch8_device, read), 6) - MCFG_LATCH8_WRITE_7(DEVWRITE8("discrete", discrete_device, write), DS_DISCHARGE_INV) + MCFG_LATCH8_READ_6(DEVREADLINE("ls259.4h", latch8_device, bit1_r)) + MCFG_LATCH8_READ_5(DEVREADLINE("ls259.6h", latch8_device, bit3_r)) + MCFG_LATCH8_READ_4(DEVREADLINE("ls259.6h", latch8_device, bit6_r)) + MCFG_LATCH8_WRITE_7(DEVWRITELINE("discrete", discrete_device, write_line)) MCFG_CPU_ADD("soundcpu", MB8884, I8035_CLOCK) MCFG_CPU_PROGRAM_MAP(dkong_sound_map) MCFG_CPU_IO_MAP(dkongjr_sound_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dkong_state, dkong_p1_w)) // only write to dac + MCFG_MCS48_PORT_P2_IN_CB(DEVREAD8("virtual_p2", latch8_device, read)) + MCFG_MCS48_PORT_P2_OUT_CB(DEVWRITE8("virtual_p2", latch8_device, write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("ls259.6h", latch8_device, bit5_q_r)) + MCFG_MCS48_PORT_T1_IN_CB(DEVREADLINE("ls259.6h", latch8_device, bit4_q_r)) MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1429,11 +1425,11 @@ MACHINE_CONFIG_END MACHINE_CONFIG_FRAGMENT( dkong3_audio ) - MCFG_CPU_ADD("n2a03a", N2A03,N2A03_DEFAULTCLOCK) + MCFG_CPU_ADD("n2a03a", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(dkong3_sound1_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", dkong_state, nmi_line_pulse) - MCFG_CPU_ADD("n2a03b", N2A03,N2A03_DEFAULTCLOCK) + MCFG_CPU_ADD("n2a03b", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(dkong3_sound2_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", dkong_state, nmi_line_pulse) diff --git a/src/mame/audio/dsbz80.cpp b/src/mame/audio/dsbz80.cpp index e8cdaaf0964..d7e9726c636 100644 --- a/src/mame/audio/dsbz80.cpp +++ b/src/mame/audio/dsbz80.cpp @@ -11,6 +11,7 @@ #include "emu.h" #include "audio/dsbz80.h" +#include "machine/clock.h" #define Z80_TAG "mpegcpu" @@ -20,13 +21,14 @@ static ADDRESS_MAP_START( dsbz80_map, AS_PROGRAM, 8, dsbz80_device ) ADDRESS_MAP_END static ADDRESS_MAP_START( dsbz80io_map, AS_IO, 8, dsbz80_device ) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_WRITE(mpeg_trigger_w) - AM_RANGE(0xe2, 0xe4) AM_MIRROR(0xff00) AM_READWRITE(mpeg_pos_r, mpeg_start_w) - AM_RANGE(0xe5, 0xe7) AM_MIRROR(0xff00) AM_WRITE(mpeg_end_w) - AM_RANGE(0xe8, 0xe8) AM_MIRROR(0xff00) AM_WRITE(mpeg_volume_w) - AM_RANGE(0xe9, 0xe9) AM_MIRROR(0xff00) AM_WRITE(mpeg_stereo_w) - AM_RANGE(0xf0, 0xf0) AM_MIRROR(0xff00) AM_READ(latch_r) - AM_RANGE(0xf1, 0xf1) AM_MIRROR(0xff00) AM_READ(status_r) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0xe0, 0xe0) AM_WRITE(mpeg_trigger_w) + AM_RANGE(0xe2, 0xe4) AM_READWRITE(mpeg_pos_r, mpeg_start_w) + AM_RANGE(0xe5, 0xe7) AM_WRITE(mpeg_end_w) + AM_RANGE(0xe8, 0xe8) AM_WRITE(mpeg_volume_w) + AM_RANGE(0xe9, 0xe9) AM_WRITE(mpeg_stereo_w) + AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) + AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) ADDRESS_MAP_END @@ -34,13 +36,20 @@ MACHINE_CONFIG_FRAGMENT( dsbz80 ) MCFG_CPU_ADD(Z80_TAG, Z80, 4000000) /* unknown clock, but probably pretty slow considering the z80 does like nothing */ MCFG_CPU_PROGRAM_MAP(dsbz80_map) MCFG_CPU_IO_MAP(dsbz80io_map) + + MCFG_DEVICE_ADD("uart", I8251, 4000000) + MCFG_I8251_RXRDY_HANDLER(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_I8251_TXD_HANDLER(WRITELINE(dsbz80_device, output_txd)) + + MCFG_CLOCK_ADD("uart_clock", 500000) // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("uart", i8251_device, write_rxc)) MACHINE_CONFIG_END //************************************************************************** // GLOBAL VARIABLES //************************************************************************** -const device_type DSBZ80 = device_creator; +DEFINE_DEVICE_TYPE(DSBZ80, dsbz80_device, "dsbz80_device", "Sega Z80-based Digital Sound Board") //------------------------------------------------- @@ -62,9 +71,11 @@ machine_config_constructor dsbz80_device::device_mconfig_additions() const //------------------------------------------------- dsbz80_device::dsbz80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, DSBZ80, "Sega Z80-based Digital Sound Board", tag, owner, clock, "dsbz80", __FILE__), + device_t(mconfig, DSBZ80, tag, owner, clock), device_sound_interface(mconfig, *this), - m_ourcpu(*this, Z80_TAG) + m_ourcpu(*this, Z80_TAG), + m_uart(*this, "uart"), + m_rxd_handler(*this) { } @@ -74,6 +85,7 @@ dsbz80_device::dsbz80_device(const machine_config &mconfig, const char *tag, dev void dsbz80_device::device_start() { + m_rxd_handler.resolve_safe(); uint8_t *rom_base = machine().root_device().memregion("mpeg")->base(); decoder = new mpeg_audio(rom_base, mpeg_audio::L2, false, 0); machine().sound().stream_alloc(*this, 0, 2, 32000); @@ -85,28 +97,23 @@ void dsbz80_device::device_start() void dsbz80_device::device_reset() { - m_dsb_latch = 0; - status = 1; start = end = 0; audio_pos = audio_avail = 0; memset(audio_buf, 0, sizeof(audio_buf)); mp_state = 0; + + m_uart->write_cts(0); } -WRITE8_MEMBER(dsbz80_device::latch_w) +WRITE_LINE_MEMBER(dsbz80_device::write_txd) { - m_ourcpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); - m_dsb_latch = data; - status |= 2; -// printf("%02x to DSB latch\n", data); + m_uart->write_rxd(state); } -READ8_MEMBER(dsbz80_device::latch_r) +WRITE_LINE_MEMBER(dsbz80_device::output_txd) { - m_ourcpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); -// printf("DSB Z80 read %02x\n", m_dsb_latch); - status &= ~2; - return m_dsb_latch; + // not used by swa + m_rxd_handler(state); } WRITE8_MEMBER(dsbz80_device::mpeg_trigger_w) @@ -228,15 +235,6 @@ WRITE8_MEMBER(dsbz80_device::mpeg_stereo_w) mp_pan = data & 3; // 0 = stereo, 1 = left on both channels, 2 = right on both channels } -READ8_MEMBER(dsbz80_device::status_r) -{ - // bit 0 = ??? (must be 1 for most games) - // bit 1 = command is pending (used by SWA instead of IRQ) - // other bits = ??? - // SWA requires that status & 0x38 = 0 or else it loops endlessly... - return status; -} - void dsbz80_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) { stream_sample_t *out_l = outputs[0]; diff --git a/src/mame/audio/dsbz80.h b/src/mame/audio/dsbz80.h index 2a10e8bf432..e8c18c96781 100644 --- a/src/mame/audio/dsbz80.h +++ b/src/mame/audio/dsbz80.h @@ -1,11 +1,12 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont, Olivier Galibert -#pragma once +#ifndef MAME_AUDIO_DSBZ80_H +#define MAME_AUDIO_DSBZ80_H -#ifndef __DSBZ80_H__ -#define __DSBZ80_H__ +#pragma once #include "cpu/z80/z80.h" +#include "machine/i8251.h" #include "sound/mpeg_audio.h" #define DSBZ80_TAG "dsbz80" @@ -13,6 +14,9 @@ #define MCFG_DSBZ80_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, DSBZ80, 0) +#define MCFG_DSBZ80_RXD_HANDLER(_devcb) \ + devcb = &dsbz80_device::set_rxd_handler(*device, DEVCB_##_devcb); + //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -26,9 +30,14 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - DECLARE_WRITE8_MEMBER(latch_w); + // static configuration + template static devcb_base &set_rxd_handler(device_t &device, _Object &&object) { return downcast(device).m_rxd_handler.set_callback(std::forward<_Object>(object)); } required_device m_ourcpu; + required_device m_uart; + + DECLARE_WRITE_LINE_MEMBER(write_txd); + DECLARE_WRITE_LINE_MEMBER(output_txd); DECLARE_WRITE8_MEMBER(mpeg_trigger_w); DECLARE_WRITE8_MEMBER(mpeg_start_w); @@ -36,8 +45,6 @@ public: DECLARE_WRITE8_MEMBER(mpeg_volume_w); DECLARE_WRITE8_MEMBER(mpeg_stereo_w); DECLARE_READ8_MEMBER(mpeg_pos_r); - DECLARE_READ8_MEMBER(latch_r); - DECLARE_READ8_MEMBER(status_r); protected: // device-level overrides @@ -49,14 +56,15 @@ protected: private: mpeg_audio *decoder; int16_t audio_buf[1152*2]; - uint8_t m_dsb_latch; uint32_t mp_start, mp_end, mp_vol, mp_pan, mp_state, lp_start, lp_end, start, end; int mp_pos, audio_pos, audio_avail; - int status; + + devcb_write_line m_rxd_handler; }; // device type definition extern const device_type DSBZ80; +DECLARE_DEVICE_TYPE(DSBZ80, dsbz80_device) -#endif /* __DSBZ80_H__ */ +#endif // MAME_AUDIO_DSBZ80_H diff --git a/src/mame/audio/efo_zsu.cpp b/src/mame/audio/efo_zsu.cpp index 5b8c69ace47..57087816a7d 100644 --- a/src/mame/audio/efo_zsu.cpp +++ b/src/mame/audio/efo_zsu.cpp @@ -41,37 +41,37 @@ #include "speaker.h" -const device_type EFO_ZSU = device_creator; -const device_type EFO_ZSU1 = device_creator; -const device_type CEDAR_MAGNET_SOUND = device_creator; - - -efo_zsu_device::efo_zsu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - m_ctc0(*this, "ctc0"), - m_ctc1(*this, "ctc1"), - m_soundlatch(*this, "soundlatch"), - m_fifo(*this, "fifo"), - m_adpcm(*this, "adpcm") +DEFINE_DEVICE_TYPE(EFO_ZSU, efo_zsu_device, "efo_zsu", "ZSU Sound Control Unit") +DEFINE_DEVICE_TYPE(EFO_ZSU1, efo_zsu1_device, "efo_zsu1", "ZSU1 Sound Control Unit") +DEFINE_DEVICE_TYPE(CEDAR_MAGNET_SOUND, cedar_magnet_sound_device, "gedmag_sound", "Cedar Sound") + + +efo_zsu_device::efo_zsu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, type, tag, owner, clock) + , m_ctc0(*this, "ctc0") + , m_ctc1(*this, "ctc1") + , m_soundlatch(*this, "soundlatch") + , m_fifo(*this, "fifo") + , m_adpcm(*this, "adpcm") { } efo_zsu_device::efo_zsu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : efo_zsu_device(mconfig, EFO_ZSU, "ZSU Sound Control Unit", tag, owner, clock, "efo_zsu", __FILE__) + : efo_zsu_device(mconfig, EFO_ZSU, tag, owner, clock) { } efo_zsu1_device::efo_zsu1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : efo_zsu_device(mconfig, EFO_ZSU1, "ZSU1 Sound Control Unit", tag, owner, clock, "efo_zsu1", __FILE__) + : efo_zsu_device(mconfig, EFO_ZSU1, tag, owner, clock) { } cedar_magnet_sound_device::cedar_magnet_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : efo_zsu_device(mconfig, CEDAR_MAGNET_SOUND, "Cedar Sound", tag, owner, clock, "cedmag_sound", __FILE__), - cedar_magnet_board_interface(mconfig, *this, "soundcpu", "ram") + : efo_zsu_device(mconfig, CEDAR_MAGNET_SOUND, tag, owner, clock) + , cedar_magnet_board_interface(mconfig, *this, "soundcpu", "ram") { } diff --git a/src/mame/audio/efo_zsu.h b/src/mame/audio/efo_zsu.h index 928f7800a8e..c0e6bf00542 100644 --- a/src/mame/audio/efo_zsu.h +++ b/src/mame/audio/efo_zsu.h @@ -1,10 +1,10 @@ // license:BSD-3-Clause // copyright-holders:David Haywood,AJR -#pragma once +#ifndef MAME_AUDIO_EFO_ZSU_H +#define MAME_AUDIO_EFO_ZSU_H -#ifndef CEDAR_MAGNET_SOUND_DEF -#define CEDAR_MAGNET_SOUND_DEF +#pragma once #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" @@ -15,9 +15,9 @@ #include "sound/msm5205.h" #include "machine/cedar_magnet_board.h" -extern const device_type EFO_ZSU; -extern const device_type EFO_ZSU1; -extern const device_type CEDAR_MAGNET_SOUND; +DECLARE_DEVICE_TYPE(EFO_ZSU, efo_zsu_device) +DECLARE_DEVICE_TYPE(EFO_ZSU1, efo_zsu1_device) +DECLARE_DEVICE_TYPE(CEDAR_MAGNET_SOUND, cedar_magnet_sound_device) #define MCFG_CEDAR_MAGNET_SOUND_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, CEDAR_MAGNET_SOUND, 0) @@ -27,7 +27,6 @@ class efo_zsu_device : public device_t { public: // construction/destruction - efo_zsu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source); efo_zsu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); required_device m_ctc0; @@ -49,10 +48,10 @@ public: DECLARE_WRITE_LINE_MEMBER(fifo_dor_w); protected: + efo_zsu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); + virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; - -private: }; @@ -80,8 +79,6 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; - -private: }; -#endif +#endif // MAME_AUDIO_EFO_ZSU_H diff --git a/src/mame/audio/exidy.cpp b/src/mame/audio/exidy.cpp index b738e7e2b1f..6a3435d98cc 100644 --- a/src/mame/audio/exidy.cpp +++ b/src/mame/audio/exidy.cpp @@ -205,16 +205,16 @@ void exidy_sound_device::common_sh_start() sh6840_register_state_globals(); } -const device_type EXIDY = device_creator; +DEFINE_DEVICE_TYPE(EXIDY, exidy_sound_device, "exidy_sfx", "Exidy SFX") exidy_sound_device::exidy_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, EXIDY, "Exidy SFX", tag, owner, clock, "exidy_sfx", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, EXIDY, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } -exidy_sound_device::exidy_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +exidy_sound_device::exidy_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), device_sound_interface(mconfig, *this), m_riot_irq_state(0), m_stream(nullptr), @@ -659,10 +659,10 @@ WRITE8_MEMBER( venture_sound_device::filter_w ) *************************************/ -const device_type EXIDY_VENTURE = device_creator; +DEFINE_DEVICE_TYPE(EXIDY_VENTURE, venture_sound_device, "venture_sound", "Exidy SFX+PSG") venture_sound_device::venture_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : exidy_sound_device(mconfig, EXIDY_VENTURE, "Exidy SFX+PSG", tag, owner, clock, "venture_sound", __FILE__) + : exidy_sound_device(mconfig, EXIDY_VENTURE, tag, owner, clock) { } @@ -904,11 +904,11 @@ WRITE_LINE_MEMBER( victory_sound_device::main_ack_w ) } -const device_type EXIDY_VICTORY = device_creator; +DEFINE_DEVICE_TYPE(EXIDY_VICTORY, victory_sound_device, "victory_sound", "Exidy SFX+PSG+Speech") victory_sound_device::victory_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : exidy_sound_device(mconfig, EXIDY_VICTORY, "Exidy SFX+PSG+Speech", tag, owner, clock, "victory_sound", __FILE__), - m_victory_sound_response_ack_clk(0) + : exidy_sound_device(mconfig, EXIDY_VICTORY, tag, owner, clock) + , m_victory_sound_response_ack_clk(0) { } diff --git a/src/mame/audio/exidy.h b/src/mame/audio/exidy.h index f2a459433af..02d1aafabd6 100644 --- a/src/mame/audio/exidy.h +++ b/src/mame/audio/exidy.h @@ -1,5 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles +#ifndef MAME_AUDIO_EXIDY_H +#define MAME_AUDIO_EXIDY_H + +#pragma once + #include "machine/6532riot.h" #include "machine/6821pia.h" #include "sound/hc55516.h" @@ -38,7 +43,6 @@ class exidy_sound_device : public device_t, { public: exidy_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - exidy_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); ~exidy_sound_device() {} DECLARE_READ8_MEMBER( sh6840_r ); @@ -57,6 +61,8 @@ public: DECLARE_READ8_MEMBER( sh8253_r ); protected: + exidy_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -111,7 +117,7 @@ private: inline int sh6840_update_noise(int clocks); }; -extern const device_type EXIDY; +DECLARE_DEVICE_TYPE(EXIDY, exidy_sound_device) class venture_sound_device : public exidy_sound_device { @@ -132,7 +138,7 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; }; -extern const device_type EXIDY_VENTURE; +DECLARE_DEVICE_TYPE(EXIDY_VENTURE, venture_sound_device) class victory_sound_device : public exidy_sound_device { @@ -163,10 +169,12 @@ private: int m_pia1_cb1; }; -extern const device_type EXIDY_VICTORY; +DECLARE_DEVICE_TYPE(EXIDY_VICTORY, victory_sound_device) MACHINE_CONFIG_EXTERN( venture_audio ); MACHINE_CONFIG_EXTERN( mtrap_cvsd_audio ); MACHINE_CONFIG_EXTERN( victory_audio ); + +#endif // MAME_AUDIO_EXIDY_H diff --git a/src/mame/audio/exidy440.cpp b/src/mame/audio/exidy440.cpp index 7c902298406..14ef74c644c 100644 --- a/src/mame/audio/exidy440.cpp +++ b/src/mame/audio/exidy440.cpp @@ -48,10 +48,10 @@ static const int channel_bits[4] = }; -const device_type EXIDY440 = device_creator; +DEFINE_DEVICE_TYPE(EXIDY440, exidy440_sound_device, "exidy440_sound", "Exidy 440 CVSD") exidy440_sound_device::exidy440_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, EXIDY440, "Exidy 440 CVSD", tag, owner, clock, "exidy440_sound", __FILE__), + : device_t(mconfig, EXIDY440, tag, owner, clock), device_sound_interface(mconfig, *this), m_sound_command(0), m_sound_command_ack(0), diff --git a/src/mame/audio/exidy440.h b/src/mame/audio/exidy440.h index ea9b35174f3..5d8129195e3 100644 --- a/src/mame/audio/exidy440.h +++ b/src/mame/audio/exidy440.h @@ -1,39 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles -/* channel_data structure holds info about each 6844 DMA channel */ -struct m6844_channel_data -{ - int active; - int address; - int counter; - uint8_t control; - int start_address; - int start_counter; -}; - - -/* channel_data structure holds info about each active sound channel */ -struct sound_channel_data -{ - int16_t *base; - int offset; - int remaining; -}; +#ifndef MAME_AUDIO_EXIDY440_H +#define MAME_AUDIO_EXIDY440_H +#pragma once -/* sound_cache_entry structure contains info on each decoded sample */ -struct sound_cache_entry -{ - struct sound_cache_entry *next; - int address; - int length; - int bits; - int frequency; - int16_t data[1]; -}; - -class exidy440_sound_device : public device_t, - public device_sound_interface +class exidy440_sound_device : public device_t, public device_sound_interface { public: exidy440_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -59,6 +31,39 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: + /* channel_data structure holds info about each 6844 DMA channel */ + struct m6844_channel_data + { + int active; + int address; + int counter; + uint8_t control; + int start_address; + int start_counter; + }; + + + /* channel_data structure holds info about each active sound channel */ + struct sound_channel_data + { + int16_t *base; + int offset; + int remaining; + }; + + + /* sound_cache_entry structure contains info on each decoded sample */ + struct sound_cache_entry + { + struct sound_cache_entry *next; + int address; + int length; + int bits; + int frequency; + int16_t data[1]; + }; + + // internal state uint8_t m_sound_command; uint8_t m_sound_command_ack; @@ -104,6 +109,8 @@ private: void mix_to_16(int length, stream_sample_t *dest_left, stream_sample_t *dest_right); }; -extern const device_type EXIDY440; +DECLARE_DEVICE_TYPE(EXIDY440, exidy440_sound_device) MACHINE_CONFIG_EXTERN( exidy440_audio ); + +#endif // MAME_AUDIO_EXIDY440_H diff --git a/src/mame/audio/galaxian.cpp b/src/mame/audio/galaxian.cpp index 161fb5c79d7..2f84c831f9b 100644 --- a/src/mame/audio/galaxian.cpp +++ b/src/mame/audio/galaxian.cpp @@ -386,12 +386,12 @@ static DISCRETE_SOUND_START(mooncrst) DISCRETE_MIXER7(NODE_280, 1, NODE_133_00, NODE_133_02, NODE_133_02,NODE_133_03, NODE_120, NODE_157, NODE_182, &mooncrst_mixer_desc) DISCRETE_SOUND_END -const device_type GALAXIAN = device_creator; +DEFINE_DEVICE_TYPE(GALAXIAN, galaxian_sound_device, "galaxian_sound", "Galaxian Audio Custom") galaxian_sound_device::galaxian_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GALAXIAN, "Galaxian Audio Custom", tag, owner, clock, "galaxian_sound", __FILE__), - device_sound_interface(mconfig, *this), - m_lfo_val(0) + : device_t(mconfig, GALAXIAN, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_lfo_val(0) { } diff --git a/src/mame/audio/galaxian.h b/src/mame/audio/galaxian.h index 73778702447..b842f1c9628 100644 --- a/src/mame/audio/galaxian.h +++ b/src/mame/audio/galaxian.h @@ -1,15 +1,18 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles +#ifndef MAME_AUDIO_GALAXIAN_H +#define MAME_AUDIO_GALAXIAN_H + +#pragma once + #include "sound/discrete.h" #define GAL_AUDIO "discrete" -class galaxian_sound_device : public device_t, - public device_sound_interface +class galaxian_sound_device : public device_t, public device_sound_interface { public: galaxian_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~galaxian_sound_device() {} DECLARE_WRITE8_MEMBER( sound_w ); DECLARE_WRITE8_MEMBER( pitch_w ); @@ -32,7 +35,9 @@ private: discrete_device *m_discrete; }; -extern const device_type GALAXIAN; +DECLARE_DEVICE_TYPE(GALAXIAN, galaxian_sound_device) MACHINE_CONFIG_EXTERN( mooncrst_audio ); MACHINE_CONFIG_EXTERN( galaxian_audio ); + +#endif // MAME_AUDIO_GALAXIAN_H diff --git a/src/mame/audio/gamate.cpp b/src/mame/audio/gamate.cpp index c53b5cf55ee..8af8c1ce166 100644 --- a/src/mame/audio/gamate.cpp +++ b/src/mame/audio/gamate.cpp @@ -7,13 +7,13 @@ ***************************************************************************/ #include "emu.h" -#include "includes/gamate.h" +#include "audio/gamate.h" enum { ClockDelay=32 }; // device type definition -const device_type GAMATE_SND = device_creator; +DEFINE_DEVICE_TYPE(GAMATE_SND, gamate_sound_device, "gamate_sound", "Gamate Audio Custom") const int gamate_sound_device::DAConverter[]={ 0, 3, 7, 13, 23, 41, 75, 137, 249, 453, 825, 1499, 2726, 4956, 9011, 16383 }; // (*.55) on the real below index 8 bareless measureable const uint8_t Mask[]={ 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0x1f, 0x3f, 0x1f, 0x1f, 0x1f, 0xff, 0xff, 0xf }; @@ -27,10 +27,11 @@ const int EnvelopeVolumes[]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, //------------------------------------------------- gamate_sound_device::gamate_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GAMATE_SND, "Gamate Audio Custom", tag, owner, clock, "gamate_sound", __FILE__) + : device_t(mconfig, GAMATE_SND, tag, owner, clock) , device_sound_interface(mconfig, *this) , m_mixer_channel(nullptr) - {} +{ +} //------------------------------------------------- // device_start - device-specific startup diff --git a/src/mame/audio/gamate.h b/src/mame/audio/gamate.h new file mode 100644 index 00000000000..f43bf793f09 --- /dev/null +++ b/src/mame/audio/gamate.h @@ -0,0 +1,96 @@ +// license:GPL-2.0+ +// copyright-holders:Peter Trauner +/***************************************************************************** + * + * includes/gamate.h + * + ****************************************************************************/ + +#ifndef MAME_AUDIO_GAMATE_H +#define MAME_AUDIO_GAMATE_H + + +// ======================> gamate_sound_device + +class gamate_sound_device : public device_t, public device_sound_interface +{ +public: + gamate_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER( device_w ); + DECLARE_READ8_MEMBER( device_r ); + +protected: + // device-level overrides + virtual void device_start() override; + + // sound stream update overrides + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + +private: + + static const int DAConverter[]; + static int Value2Volume(int volume) { return DAConverter[volume]*1; } + + sound_stream *m_mixer_channel; + struct Tone + { + Tone() : + envelope_on(false), + level(false), + tone(false), full_cycle(false), + volume(0), + pos(0), + size(0) + { + } + + bool envelope_on, level; + bool tone/*else noise*/, full_cycle/* else square signal/pulse */; + int volume; + int pos, size; + }; + + enum + { + Right, + Left, + Both + }; + + Tone m_channels[3]; + + struct Noise + { + Noise(): + state(1), + level(false), + step(0.0), + pos(0.0) + {} + + int state; + bool level; + double step, pos; + } noise; + + struct Envelope + { + Envelope(): + control(0), + index(0), + first(false) + {} + + int control; + int index; + bool first; + double step, pos; + } envelope; + + uint8_t reg[14]; +}; + +DECLARE_DEVICE_TYPE(GAMATE_SND, gamate_sound_device) + +#endif // MAME_AUDIO_GAMATE_H diff --git a/src/mame/audio/geebee.cpp b/src/mame/audio/geebee.cpp index 91660fe91e5..8400b80ea04 100644 --- a/src/mame/audio/geebee.cpp +++ b/src/mame/audio/geebee.cpp @@ -13,10 +13,10 @@ #include "audio/geebee.h" -const device_type GEEBEE = device_creator; +DEFINE_DEVICE_TYPE(GEEBEE, geebee_sound_device, "geebee_sound", "Gee Bee Audio Custom") geebee_sound_device::geebee_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GEEBEE, "Gee Bee Audio Custom", tag, owner, clock, "geebee_sound", __FILE__), + : device_t(mconfig, GEEBEE, tag, owner, clock), device_sound_interface(mconfig, *this), m_decay(nullptr), m_channel(nullptr), diff --git a/src/mame/audio/geebee.h b/src/mame/audio/geebee.h index 94d5fa01561..e1316df83b4 100644 --- a/src/mame/audio/geebee.h +++ b/src/mame/audio/geebee.h @@ -1,8 +1,11 @@ // license:GPL-2.0+ // copyright-holders:Juergen Buchmueller +#ifndef MAME_AUDIO_GEEBEE_H +#define MAME_AUDIO_GEEBEE_H -class geebee_sound_device : public device_t, - public device_sound_interface +#pragma once + +class geebee_sound_device : public device_t, public device_sound_interface { public: geebee_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -35,4 +38,6 @@ private: int m_vcount; }; -extern const device_type GEEBEE; +DECLARE_DEVICE_TYPE(GEEBEE, geebee_sound_device) + +#endif // MAME_AUDIO_GEEBEE_H diff --git a/src/mame/audio/gomoku.cpp b/src/mame/audio/gomoku.cpp index d4084838088..46b81b532d2 100644 --- a/src/mame/audio/gomoku.cpp +++ b/src/mame/audio/gomoku.cpp @@ -9,14 +9,14 @@ ***************************************************************************/ #include "emu.h" -#include "includes/gomoku.h" +#include "audio/gomoku.h" -static const int samplerate = 48000; -static const int defgain = 48; +static constexpr int samplerate = 48000; +static constexpr int defgain = 48; // device type definition -const device_type GOMOKU = device_creator; +DEFINE_DEVICE_TYPE(GOMOKU, gomoku_sound_device, "gomoku_sound", "Gomoku Narabe Renju Audio Custom") //************************************************************************** @@ -28,7 +28,7 @@ const device_type GOMOKU = device_creator; //------------------------------------------------- gomoku_sound_device::gomoku_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GOMOKU, "Gomoku Narabe Renju Audio Custom", tag, owner, clock, "gomoku_sound", __FILE__), + : device_t(mconfig, GOMOKU, tag, owner, clock), device_sound_interface(mconfig, *this), m_last_channel(nullptr), m_sound_rom(nullptr), @@ -40,7 +40,7 @@ gomoku_sound_device::gomoku_sound_device(const machine_config &mconfig, const ch m_mixer_buffer(nullptr), m_mixer_buffer_2(nullptr) { - memset(m_channel_list, 0, sizeof(gomoku_sound_channel)*GOMOKU_MAX_VOICES); + memset(m_channel_list, 0, sizeof(gomoku_sound_channel)*MAX_VOICES); memset(m_soundregs1, 0, sizeof(uint8_t)*0x20); memset(m_soundregs2, 0, sizeof(uint8_t)*0x20); } @@ -66,7 +66,7 @@ void gomoku_sound_device::device_start() make_mixer_table(8, defgain); /* extract globals from the interface */ - m_num_voices = GOMOKU_MAX_VOICES; + m_num_voices = MAX_VOICES; m_last_channel = m_channel_list + m_num_voices; m_sound_rom = memregion(":gomoku")->base(); diff --git a/src/mame/audio/gomoku.h b/src/mame/audio/gomoku.h new file mode 100644 index 00000000000..6b71fab0d49 --- /dev/null +++ b/src/mame/audio/gomoku.h @@ -0,0 +1,73 @@ +// license:BSD-3-Clause +// copyright-holders:Takahiro Nogi, David Haywood +#ifndef MAME_AUDIO_GOMOKU_H +#define MAME_AUDIO_GOMOKU_H + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> gomoku_sound_device + +class gomoku_sound_device : public device_t, + public device_sound_interface +{ +public: + gomoku_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER( sound1_w ); + DECLARE_WRITE8_MEMBER( sound2_w ); + +protected: + // device-level overrides + virtual void device_start() override; + + // sound stream update overrides + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + +private: + void make_mixer_table(int voices, int gain); + + /* 4 voices max */ + static constexpr unsigned MAX_VOICES = 4; + + struct gomoku_sound_channel + { + gomoku_sound_channel(): + channel(0), + frequency(0), + counter(0), + volume(0), + oneshotplaying(0) {} + + int channel; + int frequency; + int counter; + int volume; + int oneshotplaying; + }; + + + /* data about the sound system */ + gomoku_sound_channel m_channel_list[MAX_VOICES]; + gomoku_sound_channel *m_last_channel; + + /* global sound parameters */ + const uint8_t *m_sound_rom; + int m_num_voices; + int m_sound_enable; + sound_stream *m_stream; + + /* mixer tables and internal buffers */ + std::unique_ptr m_mixer_table; + int16_t *m_mixer_lookup; + std::unique_ptr m_mixer_buffer; + short *m_mixer_buffer_2; + + uint8_t m_soundregs1[0x20]; + uint8_t m_soundregs2[0x20]; +}; + +DECLARE_DEVICE_TYPE(GOMOKU, gomoku_sound_device) + +#endif // MAME_AUDIO_GOMOKU_H diff --git a/src/mame/audio/gottlieb.cpp b/src/mame/audio/gottlieb.cpp index fa30276265c..1e8aed6785d 100644 --- a/src/mame/audio/gottlieb.cpp +++ b/src/mame/audio/gottlieb.cpp @@ -25,10 +25,10 @@ // GLOBAL VARIABLES //************************************************************************** -const device_type GOTTLIEB_SOUND_REV0 = device_creator; -const device_type GOTTLIEB_SOUND_REV1 = device_creator; -const device_type GOTTLIEB_SOUND_REV1_WITH_VOTRAX = device_creator; -const device_type GOTTLIEB_SOUND_REV2 = device_creator; +DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_REV0, gottlieb_sound_r0_device, "gotsndr0", "Gottlieb Sound rev. 0") +DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_REV1, gottlieb_sound_r1_device, "gotsndr1", "Gottlieb Sound rev. 1") +DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_REV1_VOTRAX, gottlieb_sound_r1_with_votrax_device, "gotsndr1vt", "Gottlieb Sound rev. 1 with Votrax") +DEFINE_DEVICE_TYPE(GOTTLIEB_SOUND_REV2, gottlieb_sound_r2_device, "gotsndr2", "Gottlieb Sound rev. 2") //************************************************************************** @@ -40,7 +40,7 @@ const device_type GOTTLIEB_SOUND_REV2 = device_creator //------------------------------------------------- gottlieb_sound_r0_device::gottlieb_sound_r0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GOTTLIEB_SOUND_REV0, "Gottlieb Sound rev. 0", tag, owner, clock, "gotsndr0", __FILE__) + : device_t(mconfig, GOTTLIEB_SOUND_REV0, tag, owner, clock) , device_mixer_interface(mconfig, *this) , m_audiocpu(*this, "audiocpu") , m_r6530(*this, "r6530") @@ -165,20 +165,17 @@ void gottlieb_sound_r0_device::device_start() //------------------------------------------------- gottlieb_sound_r1_device::gottlieb_sound_r1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : gottlieb_sound_r1_device(mconfig, GOTTLIEB_SOUND_REV1, "Gottlieb Sound rev. 1", tag, owner, clock, "gotsndr1", __FILE__) + : gottlieb_sound_r1_device(mconfig, GOTTLIEB_SOUND_REV1, tag, owner, clock) { } gottlieb_sound_r1_device::gottlieb_sound_r1_device( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - uint32_t clock, - const char *shortname, - const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) + uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , device_mixer_interface(mconfig, *this) , m_audiocpu(*this, "audiocpu") , m_riot(*this, "riot") @@ -389,7 +386,7 @@ void gottlieb_sound_r1_device::device_start() //------------------------------------------------- gottlieb_sound_r1_with_votrax_device::gottlieb_sound_r1_with_votrax_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : gottlieb_sound_r1_device(mconfig, GOTTLIEB_SOUND_REV1_WITH_VOTRAX, "Gottlieb Sound rev. 1 with Votrax", tag, owner, clock, "gotsndr1vt", __FILE__) + : gottlieb_sound_r1_device(mconfig, GOTTLIEB_SOUND_REV1_VOTRAX, tag, owner, clock) { } @@ -426,7 +423,7 @@ ioport_constructor gottlieb_sound_r1_with_votrax_device::device_input_ports() co //------------------------------------------------- gottlieb_sound_r2_device::gottlieb_sound_r2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GOTTLIEB_SOUND_REV2, "Gottlieb Sound rev. 2", tag, owner, clock, "gotsndr2", __FILE__), + : device_t(mconfig, GOTTLIEB_SOUND_REV2, tag, owner, clock), device_mixer_interface(mconfig, *this), m_audiocpu(*this, "audiocpu"), m_speechcpu(*this, "speechcpu"), diff --git a/src/mame/audio/gottlieb.h b/src/mame/audio/gottlieb.h index 722c256e6a7..f8b49933c18 100644 --- a/src/mame/audio/gottlieb.h +++ b/src/mame/audio/gottlieb.h @@ -18,10 +18,10 @@ // GLOBAL VARIABLES //************************************************************************** -extern const device_type GOTTLIEB_SOUND_REV0; -extern const device_type GOTTLIEB_SOUND_REV1; -extern const device_type GOTTLIEB_SOUND_REV1_WITH_VOTRAX; -extern const device_type GOTTLIEB_SOUND_REV2; +DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_REV0, gottlieb_sound_r0_device) +DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_REV1, gottlieb_sound_r1_device) +DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_REV1_VOTRAX, gottlieb_sound_r1_with_votrax_device) +DECLARE_DEVICE_TYPE(GOTTLIEB_SOUND_REV2, gottlieb_sound_r2_device) @@ -90,12 +90,9 @@ protected: gottlieb_sound_r1_device( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - uint32_t clock, - const char *shortname, - const char *source); + uint32_t clock); // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; diff --git a/src/mame/audio/gridlee.cpp b/src/mame/audio/gridlee.cpp index d34a6ca1c4e..78280b7511e 100644 --- a/src/mame/audio/gridlee.cpp +++ b/src/mame/audio/gridlee.cpp @@ -11,7 +11,7 @@ // device type definition -const device_type GRIDLEE = device_creator; +DEFINE_DEVICE_TYPE(GRIDLEE, gridlee_sound_device, "gridlee_sound", "Gridlee Audio Custom") //************************************************************************** @@ -23,7 +23,7 @@ const device_type GRIDLEE = device_creator; //------------------------------------------------- gridlee_sound_device::gridlee_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GRIDLEE, "Gridlee Audio Custom", tag, owner, clock, "gridlee_sound", __FILE__), + : device_t(mconfig, GRIDLEE, tag, owner, clock), device_sound_interface(mconfig, *this), m_tone_step(0), m_tone_fraction(0), diff --git a/src/mame/audio/harddriv.cpp b/src/mame/audio/harddriv.cpp index 8250b40f6cc..690a8eef269 100644 --- a/src/mame/audio/harddriv.cpp +++ b/src/mame/audio/harddriv.cpp @@ -8,8 +8,9 @@ #include "emu.h" #include "includes/harddriv.h" -#include "cpu/tms32010/tms32010.h" #include "machine/atarigen.h" + +#include "cpu/tms32010/tms32010.h" #include "sound/volt_reg.h" #include "speaker.h" @@ -26,10 +27,10 @@ // harddriv_sound_board_device - constructor //------------------------------------------------- -const device_type HARDDRIV_SOUND_BOARD_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(HARDDRIV_SOUND_BOARD, harddriv_sound_board_device, "harddriv_sound", "Hard Drivin' Sound Board") harddriv_sound_board_device::harddriv_sound_board_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, HARDDRIV_SOUND_BOARD_DEVICE, "Hard Drivin' Sound Board", tag, owner, clock, "harddriv_sound", __FILE__), + device_t(mconfig, HARDDRIV_SOUND_BOARD, tag, owner, clock), m_soundcpu(*this, "soundcpu"), m_dac(*this, "dac"), m_sounddsp(*this, "sounddsp"), diff --git a/src/mame/audio/hyprolyb.cpp b/src/mame/audio/hyprolyb.cpp index 02b55b2ff8c..0baf0113634 100644 --- a/src/mame/audio/hyprolyb.cpp +++ b/src/mame/audio/hyprolyb.cpp @@ -4,15 +4,15 @@ #include "cpu/m6800/m6800.h" #include "audio/hyprolyb.h" -const device_type HYPROLYB_ADPCM = device_creator; +DEFINE_DEVICE_TYPE(HYPROLYB_ADPCM, hyprolyb_adpcm_device, "hyprolyb_adpcm", "Hyper Olympics Audio") hyprolyb_adpcm_device::hyprolyb_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HYPROLYB_ADPCM, "Hyper Olympics Audio", tag, owner, clock, "hyprolyb_adpcm", __FILE__), - device_sound_interface(mconfig, *this), - m_soundlatch2(*this, ":soundlatch2"), - m_adpcm_ready(0), - m_adpcm_busy(0), - m_vck_ready(0) + : device_t(mconfig, HYPROLYB_ADPCM, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_soundlatch2(*this, ":soundlatch2") + , m_adpcm_ready(0) + , m_adpcm_busy(0) + , m_vck_ready(0) { } @@ -113,7 +113,7 @@ MACHINE_CONFIG_FRAGMENT( hyprolyb_adpcm ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(DEVWRITELINE("hyprolyb_adpcm", hyprolyb_adpcm_device, vck_callback)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) MACHINE_CONFIG_END diff --git a/src/mame/audio/hyprolyb.h b/src/mame/audio/hyprolyb.h index 67ab8c27f74..fccea4779be 100644 --- a/src/mame/audio/hyprolyb.h +++ b/src/mame/audio/hyprolyb.h @@ -1,15 +1,17 @@ // license:BSD-3-Clause // copyright-holders:Chris Hardy +#ifndef MAME_AUDIO_HYPROLYB_H +#define MAME_AUDIO_HYPROLYB_H + +#pragma once #include "machine/gen_latch.h" #include "sound/msm5205.h" -class hyprolyb_adpcm_device : public device_t, - public device_sound_interface +class hyprolyb_adpcm_device : public device_t, public device_sound_interface { public: hyprolyb_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~hyprolyb_adpcm_device() {} DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( busy_r ); @@ -42,3 +44,6 @@ protected: MACHINE_CONFIG_EXTERN( hyprolyb_adpcm ); extern const device_type HYPROLYB_ADPCM; +DECLARE_DEVICE_TYPE(HYPROLYB_ADPCM, hyprolyb_adpcm_device) + +#endif // MAME_AUDIO_HYPROLYB_H diff --git a/src/mame/audio/irem.cpp b/src/mame/audio/irem.cpp index 99fdbf3ae26..7675fef06cf 100644 --- a/src/mame/audio/irem.cpp +++ b/src/mame/audio/irem.cpp @@ -14,32 +14,36 @@ #include "speaker.h" -const device_type IREM_M62_AUDIO = device_creator; -const device_type IREM_M52_SOUNDC_AUDIO = device_creator; -const device_type IREM_M52_LARGE_AUDIO = device_creator; - -irem_audio_device::irem_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - m_port1(0), - m_port2(0), - m_soundlatch(*this, "soundlatch") - //m_ay_45L(*this, "ay_45l"), - //m_ay_45M(*this, "ay_45m") +DEFINE_DEVICE_TYPE(IREM_M62_AUDIO, m62_audio_device, "m62_audio", "Irem M62 Audio") +DEFINE_DEVICE_TYPE(IREM_M52_SOUNDC_AUDIO, m52_soundc_audio_device, "m52_soundc_audio", "Irem M52 SoundC Audio") +DEFINE_DEVICE_TYPE(IREM_M52_LARGE_AUDIO, m52_large_audio_device, "m52_large_audio", "Irem M52 Large Audio") + +irem_audio_device::irem_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , m_port1(0) + , m_port2(0) + , m_soundlatch(0) + //, m_ay_45L(*this, "ay_45l") + //, m_ay_45M(*this, "ay_45m") + , m_audio_BD(*this, "snd_nl:ibd") + , m_audio_SD(*this, "snd_nl:isd") + , m_audio_OH(*this, "snd_nl:ioh") + , m_audio_CH(*this, "snd_nl:ich") { } m62_audio_device::m62_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : irem_audio_device(mconfig, IREM_M62_AUDIO, "Irem M62 Audio", tag, owner, clock, "irem_m62_audio", __FILE__) + : irem_audio_device(mconfig, IREM_M62_AUDIO, tag, owner, clock) { } m52_soundc_audio_device::m52_soundc_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : irem_audio_device(mconfig, IREM_M52_SOUNDC_AUDIO, "Irem M52 SoundC Audio", tag, owner, clock, "irem_m52_soundc_audio", __FILE__) + : irem_audio_device(mconfig, IREM_M52_SOUNDC_AUDIO, tag, owner, clock) { } m52_large_audio_device::m52_large_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : irem_audio_device(mconfig, IREM_M52_LARGE_AUDIO, "Irem M52 Large Audio", tag, owner, clock, "irem_m52_large_audio", __FILE__) + : irem_audio_device(mconfig, IREM_M52_LARGE_AUDIO, tag, owner, clock) { } @@ -54,18 +58,29 @@ void irem_audio_device::device_start() m_ay_45L = subdevice("ay_45l"); m_ay_45M = subdevice("ay_45m"); - m_audio_BD = subdevice("snd_nl:ibd"); - m_audio_SD = subdevice("snd_nl:isd"); - m_audio_OH = subdevice("snd_nl:ioh"); - m_audio_CH = subdevice("snd_nl:ich"); - m_audio_SINH = subdevice("snd_nl:sinh"); + m_audio_SINH = subdevice("snd_nl:sinh"); save_item(NAME(m_port1)); save_item(NAME(m_port2)); + save_item(NAME(m_soundlatch)); } - - +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- +void irem_audio_device::device_reset() +{ + m_adpcm1->reset(); + if (m_adpcm2) m_adpcm2->reset(); + m_ay_45L->reset(); + m_ay_45M->reset(); + subdevice("iremsound")->reset(); + + m_port1 = 0; // ? + m_port2 = 0; // ? + m_soundlatch = 0; + subdevice("iremsound")->execute().set_input_line(0, ASSERT_LINE); +} /************************************* * @@ -76,13 +91,22 @@ void irem_audio_device::device_start() WRITE8_MEMBER( irem_audio_device::cmd_w ) { + m_soundlatch = data; if ((data & 0x80) == 0) - m_soundlatch->write(space, 0, data & 0x7f); - else subdevice("iremsound")->execute().set_input_line(0, ASSERT_LINE); } +/************************************* + * + * Sound latch read + * + *************************************/ + +READ8_MEMBER( irem_audio_device::soundlatch_r ) +{ + return m_soundlatch; +} /************************************* * @@ -126,7 +150,7 @@ WRITE8_MEMBER( irem_audio_device::m6803_port2_w ) /************************************* * - * 6803 input ports ports + * 6803 input ports * *************************************/ @@ -201,7 +225,8 @@ WRITE8_MEMBER( irem_audio_device::ay8910_45L_porta_w ) WRITE8_MEMBER( irem_audio_device::sound_irq_ack_w ) { - subdevice("iremsound")->execute().set_input_line(0, CLEAR_LINE); + if ((m_soundlatch & 0x80) != 0) + subdevice("iremsound")->execute().set_input_line(0, CLEAR_LINE); } @@ -413,12 +438,10 @@ static MACHINE_CONFIG_FRAGMENT( irem_audio_base ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("ay_45m", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */ MCFG_AY8910_OUTPUT_TYPE(AY8910_RESISTOR_OUTPUT) MCFG_AY8910_RES_LOADS(2000.0, 2000.0, 2000.0) - MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) + MCFG_AY8910_PORT_A_READ_CB(READ8(irem_audio_device, soundlatch_r)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(irem_audio_device, ay8910_45M_portb_w)) MCFG_SOUND_ROUTE_EX(0, "snd_nl", 1.0, 0) MCFG_SOUND_ROUTE_EX(1, "snd_nl", 1.0, 1) @@ -434,11 +457,11 @@ static MACHINE_CONFIG_FRAGMENT( irem_audio_base ) MCFG_SOUND_ADD("msm1", MSM5205, XTAL_384kHz) /* verified on pcb */ MCFG_MSM5205_VCLK_CB(WRITELINE(irem_audio_device, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* default to 4KHz, but can be changed at run time */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* default to 4KHz, but can be changed at run time */ MCFG_SOUND_ROUTE_EX(0, "snd_nl", 1.0, 6) MCFG_SOUND_ADD("msm2", MSM5205, XTAL_384kHz) /* verified on pcb */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* default to 4KHz, but can be changed at run time, slave */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* default to 4KHz, but can be changed at run time, slave */ MCFG_SOUND_ROUTE_EX(0, "snd_nl", 1.0, 7) /* NETLIST configuration using internal AY8910 resistor values */ @@ -484,12 +507,10 @@ MACHINE_CONFIG_FRAGMENT( m52_sound_c_audio ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("ay_45m", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT | AY8910_DISCRETE_OUTPUT) MCFG_AY8910_RES_LOADS(470, 0, 0) - MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) + MCFG_AY8910_PORT_A_READ_CB(READ8(irem_audio_device, soundlatch_r)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(irem_audio_device, ay8910_45M_portb_w)) MCFG_SOUND_ROUTE_EX(0, "filtermix", 1.0, 0) @@ -501,7 +522,7 @@ MACHINE_CONFIG_FRAGMENT( m52_sound_c_audio ) MCFG_SOUND_ADD("msm1", MSM5205, XTAL_384kHz) /* verified on pcb */ MCFG_MSM5205_VCLK_CB(WRITELINE(irem_audio_device, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* default to 4KHz, but can be changed at run time */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* default to 4KHz, but can be changed at run time */ MCFG_SOUND_ROUTE_EX(0, "filtermix", 1.0, 2) MCFG_SOUND_ADD("filtermix", DISCRETE, 0) @@ -520,12 +541,10 @@ MACHINE_CONFIG_FRAGMENT( m52_large_audio) /* 10 yard fight */ /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("ay_45m", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT | AY8910_DISCRETE_OUTPUT) MCFG_AY8910_RES_LOADS(470, 0, 0) - MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) + MCFG_AY8910_PORT_A_READ_CB(READ8(irem_audio_device, soundlatch_r)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(irem_audio_device, ay8910_45M_portb_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) @@ -537,11 +556,11 @@ MACHINE_CONFIG_FRAGMENT( m52_large_audio) /* 10 yard fight */ MCFG_SOUND_ADD("msm1", MSM5205, XTAL_384kHz) /* verified on pcb */ MCFG_MSM5205_VCLK_CB(WRITELINE(irem_audio_device, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* default to 4KHz, but can be changed at run time */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* default to 4KHz, but can be changed at run time */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ADD("msm2", MSM5205, XTAL_384kHz) /* verified on pcb */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* default to 4KHz, but can be changed at run time, slave */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* default to 4KHz, but can be changed at run time, slave */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END diff --git a/src/mame/audio/irem.h b/src/mame/audio/irem.h index 10d238d79b3..756f3355d22 100644 --- a/src/mame/audio/irem.h +++ b/src/mame/audio/irem.h @@ -1,18 +1,20 @@ // license:BSD-3-Clause // copyright-holders:Couriersud +#ifndef MAME_AUDIO_IREM_H +#define MAME_AUDIO_IREM_H + +#pragma once + #include "sound/ay8910.h" #include "sound/msm5205.h" -#include "machine/gen_latch.h" #include "machine/netlist.h" #include "audio/nl_kidniki.h" class irem_audio_device : public device_t { public: - irem_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - ~irem_audio_device() {} - DECLARE_WRITE8_MEMBER( cmd_w ); + DECLARE_READ8_MEMBER( soundlatch_r ); DECLARE_WRITE8_MEMBER( m6803_port1_w ); DECLARE_WRITE8_MEMBER( m6803_port2_w ); DECLARE_READ8_MEMBER( m6803_port1_r ); @@ -25,18 +27,21 @@ public: void adpcm_int(int st); - netlist_mame_logic_input_t * m_audio_SINH; + netlist_mame_logic_input_device * m_audio_SINH; protected: + irem_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; + virtual void device_reset() override; private: // internal state uint8_t m_port1; uint8_t m_port2; - required_device m_soundlatch; + uint8_t m_soundlatch; /* FIXME: using required / optional device would be better */ // required_device m_ay_45L; // required_device m_ay_45M; @@ -45,10 +50,10 @@ private: msm5205_device *m_adpcm1; msm5205_device *m_adpcm2; - netlist_mame_logic_input_t * m_audio_BD; - netlist_mame_logic_input_t * m_audio_SD; - netlist_mame_logic_input_t * m_audio_OH; - netlist_mame_logic_input_t * m_audio_CH; + optional_device m_audio_BD; + optional_device m_audio_SD; + optional_device m_audio_OH; + optional_device m_audio_CH; }; class m62_audio_device : public irem_audio_device @@ -76,6 +81,8 @@ public: //MACHINE_CONFIG_EXTERN( m52_large_audio ); //MACHINE_CONFIG_EXTERN( m62_audio ); -extern const device_type IREM_M62_AUDIO; -extern const device_type IREM_M52_SOUNDC_AUDIO; -extern const device_type IREM_M52_LARGE_AUDIO; +DECLARE_DEVICE_TYPE(IREM_M62_AUDIO, m62_audio_device) +DECLARE_DEVICE_TYPE(IREM_M52_SOUNDC_AUDIO, m52_soundc_audio_device) +DECLARE_DEVICE_TYPE(IREM_M52_LARGE_AUDIO, m52_large_audio_device) + +#endif // MAME_AUDIO_IREM_H diff --git a/src/mame/audio/leland.cpp b/src/mame/audio/leland.cpp index 0ae2dcf0644..4ff229e9b8e 100644 --- a/src/mame/audio/leland.cpp +++ b/src/mame/audio/leland.cpp @@ -80,7 +80,7 @@ ***************************************************************************/ #include "emu.h" -#include "includes/leland.h" +#include "audio/leland.h" #include "cpu/z80/z80.h" #include "sound/volt_reg.h" @@ -351,37 +351,16 @@ void leland_80186_sound_device::device_reset() m_ext_active = 0; } -const device_type LELAND_80186 = device_creator; +DEFINE_DEVICE_TYPE(LELAND_80186, leland_80186_sound_device, "leland_80186_sound", "80186 DAC (Leland)") leland_80186_sound_device::leland_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, LELAND_80186, "80186 DAC (Leland)", tag, owner, clock, "leland_80186_sound", __FILE__), - m_dac1(*this, "dac1"), - m_dac2(*this, "dac2"), - m_dac3(*this, "dac3"), - m_dac4(*this, "dac4"), - m_dac5(*this, "dac5"), - m_dac6(*this, "dac6"), - m_dac7(*this, "dac7"), - m_dac8(*this, "dac8"), - m_dac9(*this, "dac9"), - m_dac1vol(*this, "dac1vol"), - m_dac2vol(*this, "dac2vol"), - m_dac3vol(*this, "dac3vol"), - m_dac4vol(*this, "dac4vol"), - m_dac5vol(*this, "dac5vol"), - m_dac6vol(*this, "dac6vol"), - m_dac7vol(*this, "dac7vol"), - m_dac8vol(*this, "dac8vol"), - m_pit0(*this, "pit0"), - m_pit1(*this, "pit1"), - m_pit2(*this, "pit2"), - m_ymsnd(*this, "ymsnd") + : leland_80186_sound_device(mconfig, LELAND_80186, tag, owner, clock) { m_type = TYPE_LELAND; } -leland_80186_sound_device::leland_80186_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +leland_80186_sound_device::leland_80186_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), m_dac1(*this, "dac1"), m_dac2(*this, "dac2"), m_dac3(*this, "dac3"), @@ -406,26 +385,26 @@ leland_80186_sound_device::leland_80186_sound_device(const machine_config &mconf { } -const device_type REDLINE_80186 = device_creator; +DEFINE_DEVICE_TYPE(REDLINE_80186, redline_80186_sound_device, "redline_80186_sound", "80186 DAC (Redline Racer)") redline_80186_sound_device::redline_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : leland_80186_sound_device(mconfig, REDLINE_80186, "80186 DAC (Redline Racer)", tag, owner, clock, "redline_80186_sound", __FILE__) + : leland_80186_sound_device(mconfig, REDLINE_80186, tag, owner, clock) { m_type = TYPE_REDLINE; } -const device_type ATAXX_80186 = device_creator; +DEFINE_DEVICE_TYPE(ATAXX_80186, ataxx_80186_sound_device, "ataxx_80186_sound", "80186 DAC (Ataxx)") ataxx_80186_sound_device::ataxx_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : leland_80186_sound_device(mconfig, ATAXX_80186, "80186 DAC (Ataxx)", tag, owner, clock, "ataxx_80186_sound", __FILE__) + : leland_80186_sound_device(mconfig, ATAXX_80186, tag, owner, clock) { m_type = TYPE_ATAXX; } -const device_type WSF_80186 = device_creator; +DEFINE_DEVICE_TYPE(WSF_80186, wsf_80186_sound_device, "wsf_80186_sound", "80186 DAC (WSF)") wsf_80186_sound_device::wsf_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : leland_80186_sound_device(mconfig, WSF_80186, "80186 DAC (WSF)", tag, owner, clock, "wsf_80186_sound", __FILE__) + : leland_80186_sound_device(mconfig, WSF_80186, tag, owner, clock) { m_type = TYPE_WSF; } diff --git a/src/mame/audio/leland.h b/src/mame/audio/leland.h new file mode 100644 index 00000000000..1ffea93257c --- /dev/null +++ b/src/mame/audio/leland.h @@ -0,0 +1,135 @@ +// license:BSD-3-Clause +// copyright-holders:Aaron Giles +/************************************************************************* + + Cinemat/Leland driver + +*************************************************************************/ +#ifndef MAME_AUDIO_LELAND_H +#define MAME_AUDIO_LELAND_H + +#pragma once + +#include "cpu/i86/i186.h" +#include "machine/pit8253.h" +#include "sound/dac.h" +#include "sound/ym2151.h" + + +class leland_80186_sound_device : public device_t +{ +public: + leland_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual machine_config_constructor device_mconfig_additions() const override; + + DECLARE_WRITE16_MEMBER(peripheral_ctrl); + DECLARE_WRITE8_MEMBER(leland_80186_control_w); + DECLARE_WRITE8_MEMBER(ataxx_80186_control_w); + DECLARE_READ16_MEMBER(peripheral_r); + DECLARE_WRITE16_MEMBER(peripheral_w); + DECLARE_WRITE8_MEMBER(leland_80186_command_lo_w); + DECLARE_WRITE8_MEMBER(leland_80186_command_hi_w); + DECLARE_READ8_MEMBER(leland_80186_response_r); + DECLARE_WRITE16_MEMBER(dac_w); + DECLARE_WRITE16_MEMBER(ataxx_dac_control); + DECLARE_WRITE_LINE_MEMBER(pit0_2_w); + DECLARE_WRITE_LINE_MEMBER(pit1_0_w); + DECLARE_WRITE_LINE_MEMBER(pit1_1_w); + DECLARE_WRITE_LINE_MEMBER(pit1_2_w); + DECLARE_WRITE_LINE_MEMBER(i80186_tmr0_w); + DECLARE_WRITE_LINE_MEMBER(i80186_tmr1_w); + +protected: + leland_80186_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + int m_type; + + enum { + TYPE_LELAND, + TYPE_REDLINE, + TYPE_ATAXX, + TYPE_WSF + }; + + required_device m_dac1; + required_device m_dac2; + required_device m_dac3; + required_device m_dac4; + optional_device m_dac5; + optional_device m_dac6; + optional_device m_dac7; + optional_device m_dac8; + optional_device m_dac9; + required_device m_dac1vol; + required_device m_dac2vol; + required_device m_dac3vol; + required_device m_dac4vol; + optional_device m_dac5vol; + optional_device m_dac6vol; + optional_device m_dac7vol; + optional_device m_dac8vol; + +private: + void command_lo_sync(void *ptr, int param); + void delayed_response_r(void *ptr, int param); + void set_clock_line(int which, int state) { m_clock_active = state ? (m_clock_active | (1< m_pit0; + optional_device m_pit1; + optional_device m_pit2; + optional_device m_ymsnd; +}; + + +class redline_80186_sound_device : public leland_80186_sound_device +{ +public: + redline_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + DECLARE_WRITE16_MEMBER(redline_dac_w); + virtual machine_config_constructor device_mconfig_additions() const override; +}; + + +class ataxx_80186_sound_device : public leland_80186_sound_device +{ +public: + ataxx_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual machine_config_constructor device_mconfig_additions() const override; +}; + + +class wsf_80186_sound_device : public leland_80186_sound_device +{ +public: + wsf_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual machine_config_constructor device_mconfig_additions() const override; +}; + + +DECLARE_DEVICE_TYPE(LELAND_80186, leland_80186_sound_device) +DECLARE_DEVICE_TYPE(REDLINE_80186, redline_80186_sound_device) +DECLARE_DEVICE_TYPE(ATAXX_80186, ataxx_80186_sound_device) +DECLARE_DEVICE_TYPE(WSF_80186, wsf_80186_sound_device) + +ADDRESS_MAP_EXTERN(leland_80186_map_program, 16); +ADDRESS_MAP_EXTERN(leland_80186_map_io, 16); +ADDRESS_MAP_EXTERN(redline_80186_map_io, 16); +ADDRESS_MAP_EXTERN(ataxx_80186_map_io, 16); + +#endif // MAME_AUDIO_LELAND_H diff --git a/src/mame/audio/lynx.cpp b/src/mame/audio/lynx.cpp index 89ff60be811..0571d1205fd 100644 --- a/src/mame/audio/lynx.cpp +++ b/src/mame/audio/lynx.cpp @@ -85,8 +85,8 @@ AUD_A_RIGHT EQU %00000001 // device type definition -const device_type LYNX_SND = device_creator; -const device_type LYNX2_SND = device_creator; +DEFINE_DEVICE_TYPE(LYNX_SND, lynx_sound_device, "lynx_sound", "Mikey") +DEFINE_DEVICE_TYPE(LYNX2_SND, lynx2_sound_device, "lynx2_sound", "Mikey (Lynx II)") //************************************************************************** // LIVE DEVICE @@ -97,25 +97,24 @@ const device_type LYNX2_SND = device_creator; //------------------------------------------------- lynx_sound_device::lynx_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, LYNX_SND, "Mikey", tag, owner, clock, "lynx_sound", __FILE__), - device_sound_interface(mconfig, *this) + : lynx_sound_device(mconfig, LYNX_SND, tag, owner, clock) { - m_timer_delegate = lynx_sound_timer_delegate(); + m_timer_delegate = timer_delegate(); } -lynx_sound_device::lynx_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - device_sound_interface(mconfig, *this) +lynx_sound_device::lynx_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } lynx2_sound_device::lynx2_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : lynx_sound_device(mconfig, LYNX2_SND, "Mikey (Lynx II)", tag, owner, clock, "lynx2_sound", __FILE__) + : lynx_sound_device(mconfig, LYNX2_SND, tag, owner, clock) { } -void lynx_sound_device::set_timer_delegate(device_t &device, lynx_sound_timer_delegate cb) +void lynx_sound_device::set_timer_delegate(device_t &device, timer_delegate cb) { lynx_sound_device &dev = downcast(device); dev.m_timer_delegate = cb; diff --git a/src/mame/audio/lynx.h b/src/mame/audio/lynx.h index a9958e868cd..0d660ce3224 100644 --- a/src/mame/audio/lynx.h +++ b/src/mame/audio/lynx.h @@ -1,43 +1,44 @@ // license:GPL-2.0+ // copyright-holders:Peter Trauner +#ifndef MAME_AUDIO_LYNX_H +#define MAME_AUDIO_LYNX_H -#ifndef __LYNXSOUND_H__ -#define __LYNXSOUND_H__ - -struct LYNX_AUDIO { - struct { - int8_t volume; - uint8_t feedback; - int8_t output; - uint8_t shifter; - uint8_t bakup; - uint8_t control1; - uint8_t counter; - uint8_t control2; - } reg; - uint8_t attenuation; - uint16_t mask; // 12-bit - uint16_t shifter; // 12-bit - float ticks; - int count; -}; - -typedef device_delegate lynx_sound_timer_delegate; +#pragma once -class lynx_sound_device : public device_t, - public device_sound_interface +class lynx_sound_device : public device_t, public device_sound_interface { public: - lynx_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + typedef device_delegate timer_delegate; + lynx_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); void count_down(int nr); - static void set_timer_delegate(device_t &device, lynx_sound_timer_delegate cb); + static void set_timer_delegate(device_t &device, timer_delegate cb); protected: + struct LYNX_AUDIO { + struct { + int8_t volume; + uint8_t feedback; + int8_t output; + uint8_t shifter; + uint8_t bakup; + uint8_t control1; + uint8_t counter; + uint8_t control2; + } reg; + uint8_t attenuation; + uint16_t mask; // 12-bit + uint16_t shifter; // 12-bit + float ticks; + int count; + }; + + lynx_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; @@ -53,7 +54,7 @@ protected: void register_save(); sound_stream *m_mixer_channel; - lynx_sound_timer_delegate m_timer_delegate; // this calls lynx_timer_count_down from the driver state + timer_delegate m_timer_delegate; // this calls lynx_timer_count_down from the driver state float m_usec_per_sample; std::unique_ptr m_shift_mask; @@ -78,12 +79,12 @@ protected: }; -extern const device_type LYNX_SND; -extern const device_type LYNX2_SND; +DECLARE_DEVICE_TYPE(LYNX_SND, lynx_sound_device) +DECLARE_DEVICE_TYPE(LYNX2_SND, lynx2_sound_device) #define MCFG_LYNX_SND_SET_TIMER( _class, _method) \ - lynx_sound_device::set_timer_delegate(*device, lynx_sound_timer_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); + lynx_sound_device::set_timer_delegate(*device, lynx_sound_device::timer_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); -#endif +#endif // MAME_AUDIO_LYNX_H diff --git a/src/mame/audio/m72.cpp b/src/mame/audio/m72.cpp index d07a86751ec..ced76a57daf 100644 --- a/src/mame/audio/m72.cpp +++ b/src/mame/audio/m72.cpp @@ -47,10 +47,10 @@ Shisensho II 1993 Rev 3.34 M81 Yes #include "m72.h" -const device_type M72 = device_creator; +DEFINE_DEVICE_TYPE(IREM_M72_AUDIO, m72_audio_device, "m72_audio", "Irem M72 Audio") m72_audio_device::m72_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, M72, "Irem M72 Audio Custom", tag, owner, clock, "m72_audio", __FILE__) + : device_t(mconfig, IREM_M72_AUDIO, tag, owner, clock) , device_sound_interface(mconfig, *this) , m_irqvector(0) , m_sample_addr(0) diff --git a/src/mame/audio/m72.h b/src/mame/audio/m72.h index 26317e436ab..b5ccf69cb01 100644 --- a/src/mame/audio/m72.h +++ b/src/mame/audio/m72.h @@ -5,12 +5,15 @@ M72 audio interface ****************************************************************************/ +#ifndef MAME_AUDIO_M72_H +#define MAME_AUDIO_M72_H + +#pragma once #include "machine/gen_latch.h" #include "sound/dac.h" -class m72_audio_device : public device_t, - public device_sound_interface +class m72_audio_device : public device_t, public device_sound_interface { public: m72_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -59,4 +62,6 @@ private: TIMER_CALLBACK_MEMBER( setvector_callback ); }; -extern const device_type M72; +DECLARE_DEVICE_TYPE(IREM_M72_AUDIO, m72_audio_device) + +#endif // MAME_AUDIO_M72_H diff --git a/src/mame/audio/mario.cpp b/src/mame/audio/mario.cpp index 2deb825bae0..30616e8eebb 100644 --- a/src/mame/audio/mario.cpp +++ b/src/mame/audio/mario.cpp @@ -475,14 +475,14 @@ READ8_MEMBER(mario_state::mario_sh_p2_r) return I8035_P2_R(space) & 0xEF; /* Bit 4 connected to GND! */ } -READ8_MEMBER(mario_state::mario_sh_t0_r) +READ_LINE_MEMBER(mario_state::mario_sh_t0_r) { - return I8035_T_R(space, 0); + return I8035_T_R(machine().dummy_space(), 0); } -READ8_MEMBER(mario_state::mario_sh_t1_r) +READ_LINE_MEMBER(mario_state::mario_sh_t1_r) { - return I8035_T_R(space, 1); + return I8035_T_R(machine().dummy_space(), 1); } READ8_MEMBER(mario_state::mario_sh_tune_r) @@ -612,10 +612,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mario_sound_io_map, AS_IO, 8, mario_state ) AM_RANGE(0x00, 0xff) AM_READ(mario_sh_tune_r) AM_WRITE(mario_sh_sound_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mario_sh_p1_r, mario_sh_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mario_sh_p2_r, mario_sh_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(mario_sh_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(mario_sh_t1_r) ADDRESS_MAP_END static ADDRESS_MAP_START( masao_sound_map, AS_PROGRAM, 8, mario_state ) @@ -641,6 +637,12 @@ MACHINE_CONFIG_FRAGMENT( mario_audio ) #endif MCFG_CPU_PROGRAM_MAP(mario_sound_map) MCFG_CPU_IO_MAP(mario_sound_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(mario_state, mario_sh_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(mario_state, mario_sh_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(mario_state, mario_sh_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(mario_state, mario_sh_p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(mario_state, mario_sh_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(mario_state, mario_sh_t1_r)) MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/audio/micro3d.cpp b/src/mame/audio/micro3d.cpp index eebed7887a7..8e117894a9a 100644 --- a/src/mame/audio/micro3d.cpp +++ b/src/mame/audio/micro3d.cpp @@ -9,7 +9,7 @@ ***************************************************************************/ #include "emu.h" -#include "includes/micro3d.h" +#include "audio/micro3d.h" #define MM5837_CLOCK 100000 @@ -22,23 +22,23 @@ *************************************/ /* Borrowed from segasnd.c */ -static inline void configure_filter(m3d_filter_state *state, double r, double c) +inline void micro3d_sound_device::m3d_filter_state::configure(double r, double c) { - state->capval = 0; - state->exponent = 1.0 - exp(-1.0 / (r * c * 2000000/8)); + capval = 0; + exponent = 1.0 - exp(-1.0 / (r * c * 2000000/8)); } #if 0 -static inline double step_rc_filter(m3d_filter_state *state, double input) +inline double micro3d_sound_device::m3d_filter_state::step_rc_filter(double input) { - state->capval += (input - state->capval) * state->exponent; - return state->capval; + capval += (input - capval) * exponent; + return capval; } -static inline double step_cr_filter(m3d_filter_state *state, double input) +inline double micro3d_sound_device::m3d_filter_state::step_cr_filter(double input) { - double result = (input - state->capval); - state->capval += (input - state->capval) * state->exponent; + double const result = input - capval; + capval += result * exponent; return result; } #endif @@ -50,27 +50,27 @@ static inline double step_cr_filter(m3d_filter_state *state, double input) * *************************************/ -static void filter_init(running_machine &machine, lp_filter *iir, double fs) +void micro3d_sound_device::lp_filter::init(double fsval) { /* Section 1 */ - iir->ProtoCoef[0].a0 = 1.0; - iir->ProtoCoef[0].a1 = 0; - iir->ProtoCoef[0].a2 = 0; - iir->ProtoCoef[0].b0 = 1.0; - iir->ProtoCoef[0].b1 = 0.765367; - iir->ProtoCoef[0].b2 = 1.0; + proto_coef[0].a0 = 1.0; + proto_coef[0].a1 = 0; + proto_coef[0].a2 = 0; + proto_coef[0].b0 = 1.0; + proto_coef[0].b1 = 0.765367; + proto_coef[0].b2 = 1.0; /* Section 2 */ - iir->ProtoCoef[1].a0 = 1.0; - iir->ProtoCoef[1].a1 = 0; - iir->ProtoCoef[1].a2 = 0; - iir->ProtoCoef[1].b0 = 1.0; - iir->ProtoCoef[1].b1 = 1.847759; - iir->ProtoCoef[1].b2 = 1.0; - - iir->coef = make_unique_clear(4 * 2 + 1); - iir->fs = fs; - iir->history = make_unique_clear(2 * 2); + proto_coef[1].a0 = 1.0; + proto_coef[1].a1 = 0; + proto_coef[1].a2 = 0; + proto_coef[1].b0 = 1.0; + proto_coef[1].b1 = 1.847759; + proto_coef[1].b2 = 1.0; + + coef = make_unique_clear(4 * 2 + 1); + fs = fsval; + history = make_unique_clear(2 * 2); } static void prewarp(double *a0, double *a1, double *a2,double fc, double fs) @@ -102,47 +102,42 @@ static void bilinear(double a0, double a1, double a2, *coef = (4. * a2 * fs * fs - 2. * a1 * fs + a0) / ad; } -static void recompute_filter(lp_filter *iir, double k, double q, double fc) +void micro3d_sound_device::lp_filter::recompute(double k, double q, double fc) { - int nInd; - double a0, a1, a2, b0, b1, b2; + float *c = coef.get() + 1; - float *coef = iir->coef.get() + 1; - - for (nInd = 0; nInd < 2; nInd++) + for (int nInd = 0; nInd < 2; nInd++) { - a0 = iir->ProtoCoef[nInd].a0; - a1 = iir->ProtoCoef[nInd].a1; - a2 = iir->ProtoCoef[nInd].a2; + double a0 = proto_coef[nInd].a0; + double a1 = proto_coef[nInd].a1; + double a2 = proto_coef[nInd].a2; - b0 = iir->ProtoCoef[nInd].b0; - b1 = iir->ProtoCoef[nInd].b1 / q; - b2 = iir->ProtoCoef[nInd].b2; + double b0 = proto_coef[nInd].b0; + double b1 = proto_coef[nInd].b1 / q; + double b2 = proto_coef[nInd].b2; - prewarp(&a0, &a1, &a2, fc, iir->fs); - prewarp(&b0, &b1, &b2, fc, iir->fs); - bilinear(a0, a1, a2, b0, b1, b2, &k, iir->fs, coef); + prewarp(&a0, &a1, &a2, fc, fs); + prewarp(&b0, &b1, &b2, fc, fs); + bilinear(a0, a1, a2, b0, b1, b2, &k, fs, c); - coef += 4; + c += 4; } - iir->coef[0] = k; + coef[0] = k; } -void micro3d_sound_device::noise_sh_w(uint8_t data) +void micro3d_sound_device::noise_sh_w(u8 data) { - micro3d_state *state = machine().driver_data(); - if (~data & 8) { - if (state->m_dac_data != m_dac[data & 3]) + if (m_dac_data != m_dac[data & 3]) { double q; double fc; m_stream->update(); - m_dac[data & 3] = state->m_dac_data; + m_dac[data & 3] = m_dac_data; if (m_dac[VCA] == 255) m_gain = 0; @@ -152,7 +147,7 @@ void micro3d_sound_device::noise_sh_w(uint8_t data) q = 0.75/255 * (255 - m_dac[VCQ]) + 0.1; fc = 4500.0/255 * (255 - m_dac[VCF]) + 100; - recompute_filter(&m_filter, m_gain, q, fc); + m_filter.recompute(m_gain, q, fc); } } } @@ -165,10 +160,10 @@ void micro3d_sound_device::noise_sh_w(uint8_t data) *************************************/ -const device_type MICRO3D = device_creator; +DEFINE_DEVICE_TYPE(MICRO3D, micro3d_sound_device, "micro3d_sound", "Microprose Audio Custom") -micro3d_sound_device::micro3d_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MICRO3D, "Microprose Audio Custom", tag, owner, clock, "micro3d_sound", __FILE__), +micro3d_sound_device::micro3d_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, MICRO3D, tag, owner, clock), device_sound_interface(mconfig, *this), m_gain(0), m_noise_shift(0), @@ -177,7 +172,7 @@ micro3d_sound_device::micro3d_sound_device(const machine_config &mconfig, const m_stream(nullptr) { - memset(m_dac, 0, sizeof(uint8_t)*4); + memset(m_dac, 0, sizeof(u8)*4); } //------------------------------------------------- @@ -188,13 +183,13 @@ void micro3d_sound_device::device_start() { /* Allocate the stream */ m_stream = machine().sound().stream_alloc(*this, 0, 2, machine().sample_rate()); - filter_init(machine(), &m_filter, machine().sample_rate()); + m_filter.init(machine().sample_rate()); - configure_filter(&m_noise_filters[0], 2.7e3 + 2.7e3, 1.0e-6); - configure_filter(&m_noise_filters[1], 2.7e3 + 1e3, 0.30e-6); - configure_filter(&m_noise_filters[2], 2.7e3 + 270, 0.15e-6); - configure_filter(&m_noise_filters[3], 2.7e3 + 0, 0.082e-6); -// configure_filter(&m_noise_filters[4], 33e3, 0.1e-6); + m_noise_filters[0].configure(2.7e3 + 2.7e3, 1.0e-6); + m_noise_filters[1].configure(2.7e3 + 1e3, 0.30e-6); + m_noise_filters[2].configure(2.7e3 + 270, 0.15e-6); + m_noise_filters[3].configure(2.7e3 + 0, 0.082e-6); +// m_noise_filters[4].configure(33e3, 0.1e-6); } //------------------------------------------------- @@ -296,69 +291,3 @@ void micro3d_sound_device::sound_stream_update(sound_stream &stream, stream_samp *fr++ = output * pan_r; } } - -/*************************************************************************** - - 8031 port mappings: - - Port 1 Port 2 - ======= ====== - 0: S/H sel A (O) 0: - 1: S/H sel B (O) 1: - 2: S/H sel C (O) 2: uPD bank select (O) - 3: S/H en (O) 3: /uPD busy (I) - 4: DS1267 data (O) 4: /uPD reset (O) - 5: DS1267 clock (O) 5: Watchdog reset (O) - 6: /DS1267 reset (O) 6: - 7: Test SW (I) 7: - -***************************************************************************/ - - -WRITE8_MEMBER(micro3d_state::micro3d_snd_dac_a) -{ - m_dac_data = data; -} - -WRITE8_MEMBER(micro3d_state::micro3d_snd_dac_b) -{ - /* TODO: This controls upd7759 volume */ -} - -WRITE8_MEMBER(micro3d_state::micro3d_sound_io_w) -{ - m_sound_port_latch[offset] = data; - - switch (offset) - { - case 0x01: - { - micro3d_sound_device *noise = (data & 4) ? m_noise_2 : m_noise_1; - noise->noise_sh_w(data); - break; - } - case 0x03: - { - m_upd7759->set_bank_base((data & 0x4) ? 0x20000 : 0); - m_upd7759->reset_w((data & 0x10) ? 0 : 1); - break; - } - } -} - -READ8_MEMBER(micro3d_state::micro3d_sound_io_r) -{ - switch (offset) - { - case 0x01: return (m_sound_port_latch[offset] & 0x7f) | m_sound_sw->read(); - case 0x03: return (m_sound_port_latch[offset] & 0xf7) | (m_upd7759->busy_r() ? 0x08 : 0); - default: return 0; - } -} - -WRITE8_MEMBER(micro3d_state::micro3d_upd7759_w) -{ - m_upd7759->port_w(space, 0, data); - m_upd7759->start_w(0); - m_upd7759->start_w(1); -} diff --git a/src/mame/audio/micro3d.h b/src/mame/audio/micro3d.h new file mode 100644 index 00000000000..827a8de4877 --- /dev/null +++ b/src/mame/audio/micro3d.h @@ -0,0 +1,78 @@ +// license:BSD-3-Clause +// copyright-holders:Philip Bennett +/************************************************************************* + + Microprose Games 3D hardware + +*************************************************************************/ +#ifndef MAME_AUDIO_MICRO3D_H +#define MAME_AUDIO_MICRO3D_H + +#pragma once + +class micro3d_sound_device : public device_t, public device_sound_interface +{ +public: + micro3d_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + + void dac_w(u8 data) { m_dac_data = data; } + void noise_sh_w(u8 data); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // sound stream update overrides + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + +private: + enum dac_registers { + VCF, + VCQ, + VCA, + PAN + }; + + struct biquad + { + double a0, a1, a2; /* Numerator coefficients */ + double b0, b1, b2; /* Denominator coefficients */ + }; + + struct lp_filter + { + void init(double fs); + void recompute(double k, double q, double fc); + + std::unique_ptr history; + std::unique_ptr coef; + double fs; + biquad proto_coef[2]; + }; + + struct m3d_filter_state + { + void configure(double r, double c); + + double capval; + double exponent; + }; + + u8 m_dac_data; + + u8 m_dac[4]; + + float m_gain; + u32 m_noise_shift; + u8 m_noise_value; + u8 m_noise_subcount; + + m3d_filter_state m_noise_filters[4]; + lp_filter m_filter; + sound_stream *m_stream; +}; + +DECLARE_DEVICE_TYPE(MICRO3D, micro3d_sound_device) + +#endif // MAME_AUDIO_MICRO3D_H diff --git a/src/mame/audio/midway.cpp b/src/mame/audio/midway.cpp index 4b83e1562dc..8ec572c0a8d 100644 --- a/src/mame/audio/midway.cpp +++ b/src/mame/audio/midway.cpp @@ -31,10 +31,10 @@ // GLOBAL VARIABLES //************************************************************************** -const device_type MIDWAY_SSIO = device_creator; -const device_type MIDWAY_SOUNDS_GOOD = device_creator; -const device_type MIDWAY_TURBO_CHEAP_SQUEAK = device_creator; -const device_type MIDWAY_SQUAWK_N_TALK = device_creator; +DEFINE_DEVICE_TYPE(MIDWAY_SSIO, midway_ssio_device, "midssio", "Midway SSIO Sound Board") +DEFINE_DEVICE_TYPE(MIDWAY_SOUNDS_GOOD, midway_sounds_good_device, "midsg", "Midway Sounds Good Sound Board") +DEFINE_DEVICE_TYPE(MIDWAY_TURBO_CHEAP_SQUEAK, midway_turbo_cheap_squeak_device, "midtcs", "Midway Turbo Cheap Squeak Sound Board") +DEFINE_DEVICE_TYPE(MIDWAY_SQUAWK_N_TALK, midway_squawk_n_talk_device, "midsnt", "Midway Squawk 'n' Talk Sound Board") @@ -47,7 +47,7 @@ const device_type MIDWAY_SQUAWK_N_TALK = device_creator> 0x7) & 1; } -READ8_MEMBER(n8080_state::n8080_8035_t1_r) +READ_LINE_MEMBER(n8080_state::n8080_8035_t1_r) { return (m_curr_sound_pins >> 0xc) & 1; } -READ8_MEMBER(n8080_state::helifire_8035_t0_r) +READ_LINE_MEMBER(n8080_state::helifire_8035_t0_r) { return (m_curr_sound_pins >> 0x3) & 1; } -READ8_MEMBER(n8080_state::helifire_8035_t1_r) +READ_LINE_MEMBER(n8080_state::helifire_8035_t1_r) { return (m_curr_sound_pins >> 0x4) & 1; } @@ -470,24 +470,8 @@ static ADDRESS_MAP_START( n8080_sound_cpu_map, AS_PROGRAM, 8, n8080_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( n8080_sound_io_map, AS_IO, 8, n8080_state ) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(n8080_8035_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(n8080_8035_t1_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(n8080_8035_p1_r) - - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(n8080_dac_w) -ADDRESS_MAP_END - - static ADDRESS_MAP_START( helifire_sound_io_map, AS_IO, 8, n8080_state ) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(helifire_8035_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(helifire_8035_t1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(helifire_8035_p2_r) - AM_RANGE(0x00, 0x7f) AM_READ(helifire_8035_external_ram_r) - - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("helifire_dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(helifire_sound_ctrl_w) ADDRESS_MAP_END @@ -499,7 +483,10 @@ MACHINE_CONFIG_FRAGMENT( spacefev_sound ) /* basic machine hardware */ MCFG_CPU_ADD("audiocpu", I8035, 6000000) MCFG_CPU_PROGRAM_MAP(n8080_sound_cpu_map) - MCFG_CPU_IO_MAP(n8080_sound_io_map) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(n8080_state, n8080_8035_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(n8080_state, n8080_8035_t1_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(n8080_state, n8080_8035_p1_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(n8080_state, n8080_dac_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("vco_timer", n8080_state, spacefev_vco_voltage_timer, attotime::from_hz(1000)) @@ -536,7 +523,10 @@ MACHINE_CONFIG_FRAGMENT( sheriff_sound ) /* basic machine hardware */ MCFG_CPU_ADD("audiocpu", I8035, 6000000) MCFG_CPU_PROGRAM_MAP(n8080_sound_cpu_map) - MCFG_CPU_IO_MAP(n8080_sound_io_map) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(n8080_state, n8080_8035_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(n8080_state, n8080_8035_t1_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(n8080_state, n8080_8035_p1_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(n8080_state, n8080_dac_w)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("speaker") @@ -572,6 +562,11 @@ MACHINE_CONFIG_FRAGMENT( helifire_sound ) MCFG_CPU_ADD("audiocpu", I8035, 6000000) MCFG_CPU_PROGRAM_MAP(n8080_sound_cpu_map) MCFG_CPU_IO_MAP(helifire_sound_io_map) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(n8080_state, helifire_8035_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(n8080_state, helifire_8035_t1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(n8080_state, helifire_8035_p2_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("helifire_dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(n8080_state, helifire_sound_ctrl_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("helifire_dac_volume_timer", n8080_state, helifire_dac_volume_timer, attotime::from_hz(1000)) diff --git a/src/mame/audio/namco52.cpp b/src/mame/audio/namco52.cpp index 7375bd7d753..478e83bbb67 100644 --- a/src/mame/audio/namco52.cpp +++ b/src/mame/audio/namco52.cpp @@ -157,10 +157,10 @@ ROM_START( namco_52xx ) ROM_END -const device_type NAMCO_52XX = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_52XX, namco_52xx_device, "namco52", "Namco 52xx") namco_52xx_device::namco_52xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_52XX, "Namco 52xx", tag, owner, clock, "namco52", __FILE__), + : device_t(mconfig, NAMCO_52XX, tag, owner, clock), m_cpu(*this, "mcu"), m_discrete(*this, finder_base::DUMMY_TAG), m_basenode(0), @@ -184,7 +184,10 @@ void namco_52xx_device::device_start() /* start the external clock */ if (m_extclock != 0) - machine().scheduler().timer_pulse(attotime(0, m_extclock), timer_expired_delegate(FUNC(namco_52xx_device::external_clock_pulse),this), 0); + { + m_extclock_pulse_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namco_52xx_device::external_clock_pulse), this)); + m_extclock_pulse_timer->adjust(attotime(0, m_extclock), 0, attotime(0, m_extclock)); + } } //------------------------------------------------- diff --git a/src/mame/audio/namco52.h b/src/mame/audio/namco52.h index 5ec24260315..6fb1c0b59a6 100644 --- a/src/mame/audio/namco52.h +++ b/src/mame/audio/namco52.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles -#ifndef NAMCO52_H -#define NAMCO52_H +#ifndef MAME_AUDIO_NAMCO52_H +#define MAME_AUDIO_NAMCO52_H #include "sound/discrete.h" #include "cpu/mb88xx/mb88xx.h" @@ -33,8 +33,8 @@ public: static void set_discrete(device_t &device, const char *tag) { downcast(device).m_discrete.set_tag(tag); } static void set_basenote(device_t &device, int node) { downcast(device).m_basenode = node; } static void set_extclock(device_t &device, attoseconds_t clk) { downcast(device).m_extclock = clk; } - template static devcb_base &set_romread_callback(device_t &device, _Object object) { return downcast(device).m_romread.set_callback(object); } - template static devcb_base &set_si_callback(device_t &device, _Object object) { return downcast(device).m_si.set_callback(object); } + template static devcb_base &set_romread_callback(device_t &device, Object &&cb) { return downcast(device).m_romread.set_callback(std::forward(cb)); } + template static devcb_base &set_si_callback(device_t &device, Object &&cb) { return downcast(device).m_si.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER(write); @@ -63,6 +63,7 @@ private: int m_basenode; attoseconds_t m_extclock; + emu_timer *m_extclock_pulse_timer; devcb_read8 m_romread; devcb_read8 m_si; @@ -70,7 +71,7 @@ private: uint32_t m_address; }; -extern const device_type NAMCO_52XX; +DECLARE_DEVICE_TYPE(NAMCO_52XX, namco_52xx_device) @@ -78,4 +79,4 @@ extern const device_type NAMCO_52XX; #define NAMCO_52XX_P_DATA(base) (base) -#endif /* NAMCO52_H */ +#endif // MAME_AUDIO_NAMCO52_H diff --git a/src/mame/audio/namco54.cpp b/src/mame/audio/namco54.cpp index db18a3e2df5..4c15b088928 100644 --- a/src/mame/audio/namco54.cpp +++ b/src/mame/audio/namco54.cpp @@ -128,10 +128,10 @@ ROM_START( namco_54xx ) ROM_LOAD( "54xx.bin", 0x0000, 0x0400, CRC(ee7357e0) SHA1(01bdf984a49e8d0cc8761b2cc162fd6434d5afbe) ) ROM_END -const device_type NAMCO_54XX = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_54XX, namco_54xx_device, "namco54", "Namco 54xx") namco_54xx_device::namco_54xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_54XX, "Namco 54xx", tag, owner, clock, "namco54", __FILE__), + : device_t(mconfig, NAMCO_54XX, tag, owner, clock), m_cpu(*this, "mcu"), m_discrete(*this, finder_base::DUMMY_TAG), m_basenode(0), diff --git a/src/mame/audio/namco54.h b/src/mame/audio/namco54.h index bdfe8b7e519..383e5983920 100644 --- a/src/mame/audio/namco54.h +++ b/src/mame/audio/namco54.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles -#ifndef NAMCO54_H -#define NAMCO54_H +#ifndef MAME_AUDIO_NAMCO54_H +#define MAME_AUDIO_NAMCO54_H #include "sound/discrete.h" #include "cpu/mb88xx/mb88xx.h" @@ -48,7 +48,7 @@ private: uint8_t m_latched_cmd; }; -extern const device_type NAMCO_54XX; +DECLARE_DEVICE_TYPE(NAMCO_54XX, namco_54xx_device) @@ -59,4 +59,4 @@ extern const device_type NAMCO_54XX; #define NAMCO_54XX_P_DATA(base) (NODE_RELATIVE(base, 3)) -#endif /* NAMCO54_H */ +#endif // MAME_AUDIO_NAMCO54_H diff --git a/src/mame/audio/phoenix.cpp b/src/mame/audio/phoenix.cpp index ede90fb999f..92e0eb7dcb4 100644 --- a/src/mame/audio/phoenix.cpp +++ b/src/mame/audio/phoenix.cpp @@ -11,7 +11,7 @@ #include "emu.h" -#include "includes/phoenix.h" +#include "audio/phoenix.h" /**************************************************************************** * 4006 @@ -48,11 +48,11 @@ -const device_type PHOENIX = device_creator; +DEFINE_DEVICE_TYPE(PHOENIX, phoenix_sound_device, "phoenix_sound", "Phoenix Audio Custom") phoenix_sound_device::phoenix_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PHOENIX, "Phoenix Audio Custom", tag, owner, clock, "phoenix_sound", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, PHOENIX, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } diff --git a/src/mame/audio/phoenix.h b/src/mame/audio/phoenix.h new file mode 100644 index 00000000000..38e80c3d31f --- /dev/null +++ b/src/mame/audio/phoenix.h @@ -0,0 +1,62 @@ +// license:BSD-3-Clause +// copyright-holders:Richard Davies +#ifndef MAME_AUDIO_PHOENIX_H +#define MAME_AUDIO_PHOENIX_H + +#pragma once + +#include "sound/discrete.h" +#include "sound/tms36xx.h" + + +class phoenix_sound_device : public device_t, public device_sound_interface +{ +public: + phoenix_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER( control_a_w ); + DECLARE_WRITE8_MEMBER( control_b_w ); + +protected: + // device-level overrides + virtual void device_start() override; + + // sound stream update overrides + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + +private: + struct c_state + { + int32_t counter; + int32_t level; + }; + + struct n_state + { + int32_t counter; + int32_t polyoffs; + int32_t polybit; + int32_t lowpass_counter; + int32_t lowpass_polybit; + }; + + // internal state + struct c_state m_c24_state; + struct c_state m_c25_state; + struct n_state m_noise_state; + uint8_t m_sound_latch_a; + sound_stream * m_channel; + std::unique_ptr m_poly18; + discrete_device *m_discrete; + tms36xx_device *m_tms; + + int update_c24(int samplerate); + int update_c25(int samplerate); + int noise(int samplerate); +}; + +DECLARE_DEVICE_TYPE(PHOENIX, phoenix_sound_device) + +DISCRETE_SOUND_EXTERN(phoenix); + +#endif // MAME_AUDIO_PHOENIX_H diff --git a/src/mame/audio/pleiads.cpp b/src/mame/audio/pleiads.cpp index 0472617fa3e..68d79f79e25 100644 --- a/src/mame/audio/pleiads.cpp +++ b/src/mame/audio/pleiads.cpp @@ -18,16 +18,15 @@ #define TONE1_CLOCK 8000 -const device_type PLEIADS = device_creator; +DEFINE_DEVICE_TYPE(PLEIADS, pleiads_sound_device, "pleiads_sound", "Pleiads Audio Custom") pleiads_sound_device::pleiads_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PLEIADS, "Pleiads Audio Custom", tag, owner, clock, "pleiads_sound", __FILE__), - device_sound_interface(mconfig, *this) + : pleiads_sound_device(mconfig, PLEIADS, tag, owner, clock) { } -pleiads_sound_device::pleiads_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +pleiads_sound_device::pleiads_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), device_sound_interface(mconfig, *this), m_channel(nullptr), m_sound_latch_a(0), @@ -48,9 +47,9 @@ pleiads_sound_device::pleiads_sound_device(const machine_config &mconfig, device void pleiads_sound_device::device_start() { - /* The real values are _unknown_! - * I took the ones from Naughty Boy / Pop Flamer - */ + /* The real values are _unknown_! + * I took the ones from Naughty Boy / Pop Flamer + */ /* charge 10u?? (C??) through 330K?? (R??) -> 3.3s */ m_pa5.charge_time = 3.3; @@ -107,10 +106,10 @@ void pleiads_sound_device::device_start() common_start(); } -const device_type NAUGHTYB = device_creator; +DEFINE_DEVICE_TYPE(NAUGHTYB, naughtyb_sound_device, "naughtyb_sound", "Naughty Boy Audio Custom") naughtyb_sound_device::naughtyb_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pleiads_sound_device(mconfig, NAUGHTYB, "Naughty Boy Audio Custom", tag, owner, clock, "naughtyb_sound", __FILE__) + : pleiads_sound_device(mconfig, NAUGHTYB, tag, owner, clock) { } @@ -175,10 +174,10 @@ void naughtyb_sound_device::device_start() common_start(); } -const device_type POPFLAME = device_creator; +DEFINE_DEVICE_TYPE(POPFLAME, popflame_sound_device, "popflame_sound", "Pop Flamer Audio Custom") popflame_sound_device::popflame_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pleiads_sound_device(mconfig, POPFLAME, "Pop Flamer Audio Custom", tag, owner, clock, "popflame_sound", __FILE__) + : pleiads_sound_device(mconfig, POPFLAME, tag, owner, clock) { } diff --git a/src/mame/audio/pleiads.h b/src/mame/audio/pleiads.h index 01cc05e1505..f7139b42928 100644 --- a/src/mame/audio/pleiads.h +++ b/src/mame/audio/pleiads.h @@ -1,58 +1,52 @@ // license:GPL-2.0+ // copyright-holders:Juergen Buchmueller -#include "sound/tms36xx.h" +#ifndef MAME_AUDIO_PLEIADS_H +#define MAME_AUDIO_PLEIADS_H -struct pl_t_state -{ - pl_t_state(): - counter(0), - output(0), - max_freq(0) {} - - int counter; - int output; - int max_freq; -}; - -struct pl_c_state -{ - pl_c_state(): - counter(0), - level(0), - charge_time(0), - discharge_time(0) {} - - int counter; - int level; - double charge_time; - double discharge_time; -}; +#pragma once -struct pl_n_state -{ - pl_n_state(): - counter(0), - polyoffs(0), - freq(0) {} - - int counter; - int polyoffs; - int freq; -}; +#include "sound/tms36xx.h" -class pleiads_sound_device : public device_t, - public device_sound_interface +class pleiads_sound_device : public device_t, public device_sound_interface { public: pleiads_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - pleiads_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - ~pleiads_sound_device() {} DECLARE_WRITE8_MEMBER( control_a_w ); DECLARE_WRITE8_MEMBER( control_b_w ); DECLARE_WRITE8_MEMBER( control_c_w ); protected: + struct pl_t_state + { + pl_t_state() { } + + int counter = 0; + int output = 0; + int max_freq = 0; + }; + + struct pl_c_state + { + pl_c_state() { } + + int counter = 0; + int level = 0; + double charge_time = 0; + double discharge_time = 0; + }; + + struct pl_n_state + { + pl_n_state() { } + + int counter = 0; + int polyoffs = 0; + int freq = 0; + }; + + pleiads_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; @@ -100,23 +94,22 @@ protected: int m_opamp_resistor; }; -extern const device_type PLEIADS; +DECLARE_DEVICE_TYPE(PLEIADS, pleiads_sound_device) class naughtyb_sound_device : public pleiads_sound_device { public: naughtyb_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + protected: // device-level overrides virtual void device_start() override; // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -private: - // internal state }; -extern const device_type NAUGHTYB; +DECLARE_DEVICE_TYPE(NAUGHTYB, naughtyb_sound_device) class popflame_sound_device : public pleiads_sound_device { @@ -128,8 +121,8 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -private: - // internal state }; -extern const device_type POPFLAME; +DECLARE_DEVICE_TYPE(POPFLAME, popflame_sound_device) + +#endif // MAME_AUDIO_PLEIADS_H diff --git a/src/mame/audio/polepos.cpp b/src/mame/audio/polepos.cpp index 2a06964c400..9f23e69ccaa 100644 --- a/src/mame/audio/polepos.cpp +++ b/src/mame/audio/polepos.cpp @@ -5,10 +5,13 @@ Sound handler ****************************************************************************/ #include "emu.h" -#include "machine/rescap.h" +#include "includes/polepos.h" + #include "namco52.h" #include "namco54.h" -#include "includes/polepos.h" + +#include "machine/rescap.h" + #define OUTPUT_RATE 24000 @@ -213,7 +216,7 @@ static void filter_opamp_m_bandpass_setup(device_t *device, double r1, double r2 // device type definition -const device_type POLEPOS = device_creator; +DEFINE_DEVICE_TYPE(POLEPOS, polepos_sound_device, "polepos_sound", "Pole Position Audio Custom") //************************************************************************** @@ -225,7 +228,7 @@ const device_type POLEPOS = device_creator; //------------------------------------------------- polepos_sound_device::polepos_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, POLEPOS, "Pole Position Audio Custom", tag, owner, clock, "polepos_sound", __FILE__), + : device_t(mconfig, POLEPOS, tag, owner, clock), device_sound_interface(mconfig, *this), m_current_position(0), m_sample_msb(0), diff --git a/src/mame/audio/rax.cpp b/src/mame/audio/rax.cpp index 6cc930e221c..97cb5639558 100644 --- a/src/mame/audio/rax.cpp +++ b/src/mame/audio/rax.cpp @@ -494,19 +494,19 @@ MACHINE_CONFIG_FRAGMENT( rax ) MACHINE_CONFIG_END -const device_type ACCLAIM_RAX = device_creator; +DEFINE_DEVICE_TYPE(ACCLAIM_RAX, acclaim_rax_device, "rax_audio", "Acclaim RAX") //------------------------------------------------- // acclaim_rax_device - constructor //------------------------------------------------- acclaim_rax_device::acclaim_rax_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ACCLAIM_RAX, "Acclaim RAX", tag, owner, clock, "rax_audio", __FILE__), - m_cpu(*this, "adsp"), - m_adsp_pram(*this, "adsp_pram"), - m_adsp_data_bank(*this, "databank"), - m_data_in(*this, "data_in"), - m_data_out(*this, "data_out") + : device_t(mconfig, ACCLAIM_RAX, tag, owner, clock) + , m_cpu(*this, "adsp") + , m_adsp_pram(*this, "adsp_pram") + , m_adsp_data_bank(*this, "databank") + , m_data_in(*this, "data_in") + , m_data_out(*this, "data_out") { } diff --git a/src/mame/audio/rax.h b/src/mame/audio/rax.h index 45058a82eab..16af77fd944 100644 --- a/src/mame/audio/rax.h +++ b/src/mame/audio/rax.h @@ -5,9 +5,10 @@ Acclaim RAX Sound Board ****************************************************************************/ +#ifndef MAME_AUDIO_RAX_H +#define MAME_AUDIO_RAX_H -#ifndef __ACCLAIM_H__ -#define __ACCLAIM_H__ +#pragma once #include "cpu/adsp2100/adsp2100.h" #include "machine/gen_latch.h" @@ -40,7 +41,15 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(adsp_irq0); TIMER_DEVICE_CALLBACK_MEMBER(sport0_irq); WRITE32_MEMBER(dmovlay_callback); + TIMER_DEVICE_CALLBACK_MEMBER( dma_timer_callback ); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; +private: required_device m_cpu; required_shared_ptr m_adsp_pram; required_memory_bank m_adsp_data_bank; @@ -79,16 +88,9 @@ public: required_device m_data_out; timer_device *m_dma_timer; - TIMER_DEVICE_CALLBACK_MEMBER( dma_timer_callback ); - -protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - virtual machine_config_constructor device_mconfig_additions() const override; }; // device type definition -extern const device_type ACCLAIM_RAX; +DECLARE_DEVICE_TYPE(ACCLAIM_RAX, acclaim_rax_device) -#endif +#endif // MAME_AUDIO_RAX_H diff --git a/src/mame/audio/redbaron.cpp b/src/mame/audio/redbaron.cpp index f13a5a201e1..15f1cc8f537 100644 --- a/src/mame/audio/redbaron.cpp +++ b/src/mame/audio/redbaron.cpp @@ -17,14 +17,17 @@ */ #include "emu.h" -#include "includes/bzone.h" +#include "audio/redbaron.h" #include "sound/pokey.h" +#include + + #define OUTPUT_RATE (48000) // device type definition -const device_type REDBARON = device_creator; +DEFINE_DEVICE_TYPE(REDBARON, redbaron_sound_device, "redbaron_custom", "Red Baron Audio Custom") //************************************************************************** @@ -36,7 +39,7 @@ const device_type REDBARON = device_creator; //------------------------------------------------- redbaron_sound_device::redbaron_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, REDBARON, "Red Baron Audio Custom", tag, owner, clock, "redbaron_custom", __FILE__), + : device_t(mconfig, REDBARON, tag, owner, clock), device_sound_interface(mconfig, *this), m_vol_lookup(nullptr), m_channel(nullptr), @@ -53,7 +56,7 @@ redbaron_sound_device::redbaron_sound_device(const machine_config &mconfig, cons m_squeal_on_counter(0), m_squeal_out(0) { - memset(m_vol_crash, 0, sizeof(int16_t)*16); + std::fill(std::begin(m_vol_crash), std::end(m_vol_crash), 0); } diff --git a/src/mame/audio/redbaron.h b/src/mame/audio/redbaron.h index 03ac07b535b..2294d905fda 100644 --- a/src/mame/audio/redbaron.h +++ b/src/mame/audio/redbaron.h @@ -1,13 +1,15 @@ // license:BSD-3-Clause // copyright-holders:Brad Oliver, Nicola Salmoria +#ifndef MAME_AUDIO_REDBARON_H +#define MAME_AUDIO_REDBARON_H + //************************************************************************** // TYPE DEFINITIONS //************************************************************************** // ======================> redbaron_sound_device -class redbaron_sound_device : public device_t, - public device_sound_interface +class redbaron_sound_device : public device_t, public device_sound_interface { public: redbaron_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -44,4 +46,6 @@ private: int m_squeal_out; }; -extern const device_type REDBARON; +DECLARE_DEVICE_TYPE(REDBARON, redbaron_sound_device) + +#endif // MAME_AUDIO_REDBARON_H diff --git a/src/mame/audio/s11c_bg.cpp b/src/mame/audio/s11c_bg.cpp index 961c4014204..942d0378c16 100644 --- a/src/mame/audio/s11c_bg.cpp +++ b/src/mame/audio/s11c_bg.cpp @@ -13,16 +13,16 @@ #include "sound/volt_reg.h" -const device_type S11C_BG = device_creator; +DEFINE_DEVICE_TYPE(S11C_BG, s11c_bg_device, "s11c_bg", "Williams System 11C Background Music") s11c_bg_device::s11c_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig,S11C_BG,"Williams System 11C Background Music",tag,owner,clock, "s11c_bg", __FILE__), - device_mixer_interface(mconfig, *this), - m_cpu(*this,"bgcpu"), - m_ym2151(*this,"ym2151"), - m_hc55516(*this,"hc55516_bg"), - m_pia40(*this,"pia40"), - m_cpubank(*this,"bgbank") + : device_t(mconfig, S11C_BG,tag,owner,clock) + , device_mixer_interface(mconfig, *this) + , m_cpu(*this, "bgcpu") + , m_ym2151(*this, "ym2151") + , m_hc55516(*this, "hc55516_bg") + , m_pia40(*this, "pia40") + , m_cpubank(*this, "bgbank") { } diff --git a/src/mame/audio/s11c_bg.h b/src/mame/audio/s11c_bg.h index 3dc1a79a8e0..723837c2fe7 100644 --- a/src/mame/audio/s11c_bg.h +++ b/src/mame/audio/s11c_bg.h @@ -6,13 +6,15 @@ * Created on: 2/10/2013 */ -#ifndef S11C_BG_H_ -#define S11C_BG_H_ +#ifndef MAME_AUDIO_S11C_BG_H +#define MAME_AUDIO_S11C_BG_H + +#pragma once #include "cpu/m6809/m6809.h" -#include "sound/ym2151.h" -#include "sound/hc55516.h" #include "machine/6821pia.h" +#include "sound/hc55516.h" +#include "sound/ym2151.h" #define MCFG_S11C_BG_ROM_REGION(_region) \ @@ -55,6 +57,6 @@ private: const char* m_regiontag; }; -extern const device_type S11C_BG; +DECLARE_DEVICE_TYPE(S11C_BG, s11c_bg_device) -#endif /* S11C_BG_H_ */ +#endif // MAME_AUDIO_S11C_BG_H diff --git a/src/mame/audio/scramble.cpp b/src/mame/audio/scramble.cpp index 24ad43ec1f8..03682cfac40 100644 --- a/src/mame/audio/scramble.cpp +++ b/src/mame/audio/scramble.cpp @@ -128,16 +128,13 @@ READ8_MEMBER( scramble_state::hotshock_soundlatch_r ) static void filter_w(device_t *device, int data) { - int C; - - - C = 0; + int C = 0; if (data & 1) C += 220000; /* 220000pF = 0.220uF */ if (data & 2) C += 47000; /* 47000pF = 0.047uF */ - if (device != nullptr) - dynamic_cast(device)->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 5100, 0, CAP_P(C)); + if (device) + downcast(device)->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 5100, 0, CAP_P(C)); } WRITE8_MEMBER(scramble_state::scramble_filter_w) diff --git a/src/mame/audio/segag80r.cpp b/src/mame/audio/segag80r.cpp index 60806aaad06..8b731584086 100644 --- a/src/mame/audio/segag80r.cpp +++ b/src/mame/audio/segag80r.cpp @@ -10,8 +10,9 @@ ***************************************************************************/ #include "emu.h" -#include "cpu/mcs48/mcs48.h" #include "includes/segag80r.h" + +#include "cpu/mcs48/mcs48.h" #include "machine/i8255.h" #include "machine/i8243.h" #include "sound/samples.h" @@ -29,13 +30,13 @@ #define SEGA005_555_TIMER_FREQ (1.44 / ((15000 + 2 * 4700) * 1.5e-6)) #define SEGA005_COUNTER_FREQ (100000) /* unknown, just a guess */ -const device_type SEGA005 = device_creator; +DEFINE_DEVICE_TYPE(SEGA005, sega005_sound_device, "sega005_sound", "Sega 005 Audio Custom") sega005_sound_device::sega005_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGA005, "Sega 005 Audio Custom", tag, owner, clock, "sega005_sound", __FILE__), - device_sound_interface(mconfig, *this), - m_sega005_sound_timer(nullptr), - m_sega005_stream(nullptr) + : device_t(mconfig, SEGA005, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_sega005_sound_timer(nullptr) + , m_sega005_stream(nullptr) { } @@ -671,23 +672,6 @@ static const char *const monsterb_sample_names[] = }; -/************************************* - * - * N7751 memory maps - * - *************************************/ - -static ADDRESS_MAP_START( monsterb_7751_portmap, AS_IO, 8, segag80r_state ) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(n7751_t1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(n7751_command_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(n7751_rom_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(n7751_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("audio_8243", i8243_device, i8243_prog_w) -ADDRESS_MAP_END - - - /************************************* * * Machine driver @@ -703,7 +687,12 @@ MACHINE_CONFIG_FRAGMENT( monsterb_sound_board ) /* basic machine hardware */ MCFG_CPU_ADD("audiocpu", N7751, 6000000) - MCFG_CPU_IO_MAP(monsterb_7751_portmap) + MCFG_MCS48_PORT_T1_IN_CB(GND) // labelled as "TEST", connected to ground + MCFG_MCS48_PORT_P2_IN_CB(READ8(segag80r_state, n7751_command_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(segag80r_state, n7751_rom_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(segag80r_state, n7751_p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("audio_8243", i8243_device, prog_w)) MCFG_I8243_ADD("audio_8243", NOOP, WRITE8(segag80r_state,n7751_rom_control_w)) @@ -847,16 +836,9 @@ WRITE8_MEMBER(segag80r_state::n7751_p2_w) { i8243_device *device = machine().device("audio_8243"); /* write to P2; low 4 bits go to 8243 */ - device->i8243_p2_w(space, offset, data & 0x0f); + device->p2_w(space, offset, data & 0x0f); /* output of bit $80 indicates we are ready (1) or busy (0) */ /* no other outputs are used */ m_n7751_busy = data >> 7; } - - -READ8_MEMBER(segag80r_state::n7751_t1_r) -{ - /* T1 - labelled as "TEST", connected to ground */ - return 0; -} diff --git a/src/mame/audio/segam1audio.cpp b/src/mame/audio/segam1audio.cpp index 7a2130eae07..2f38bf43bde 100644 --- a/src/mame/audio/segam1audio.cpp +++ b/src/mame/audio/segam1audio.cpp @@ -10,24 +10,27 @@ #include "emu.h" #include "audio/segam1audio.h" + +#include "machine/clock.h" #include "speaker.h" -#define M68000_TAG "m1sndcpu" -#define MULTIPCM_1_TAG "m1pcm1" -#define MULTIPCM_2_TAG "m1pcm2" -#define YM3438_TAG "m1ym" +#define M68000_TAG "sndcpu" +#define MULTIPCM_1_TAG "pcm1" +#define MULTIPCM_2_TAG "pcm2" +#define YM3438_TAG "ymsnd" +#define UART_TAG "uart" static ADDRESS_MAP_START( segam1audio_map, AS_PROGRAM, 16, segam1audio_device ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION(":m1sndcpu", 0) - AM_RANGE(0x080000, 0x09ffff) AM_ROM AM_REGION(":m1sndcpu", 0x20000) // mirror of upper ROM socket - AM_RANGE(0xc20000, 0xc20001) AM_READWRITE(m1_snd_68k_latch_r, m1_snd_68k_latch1_w ) - AM_RANGE(0xc20002, 0xc20003) AM_READWRITE(m1_snd_v60_ready_r, m1_snd_68k_latch2_w ) - AM_RANGE(0xc40000, 0xc40007) AM_DEVREADWRITE8(MULTIPCM_1_TAG, multipcm_device, read, write, 0x00ff ) + AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION(":m1sndcpu", 0) + AM_RANGE(0x080000, 0x09ffff) AM_ROM AM_REGION(":m1sndcpu", 0x20000) // mirror of upper ROM socket + AM_RANGE(0xc20000, 0xc20001) AM_DEVREADWRITE8(UART_TAG, i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0xc20002, 0xc20003) AM_DEVREADWRITE8(UART_TAG, i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0xc40000, 0xc40007) AM_DEVREADWRITE8(MULTIPCM_1_TAG, multipcm_device, read, write, 0x00ff) AM_RANGE(0xc40012, 0xc40013) AM_WRITENOP - AM_RANGE(0xc50000, 0xc50001) AM_WRITE(m1_snd_mpcm_bnk1_w ) - AM_RANGE(0xc60000, 0xc60007) AM_DEVREADWRITE8(MULTIPCM_2_TAG, multipcm_device, read, write, 0x00ff ) - AM_RANGE(0xc70000, 0xc70001) AM_WRITE(m1_snd_mpcm_bnk2_w ) - AM_RANGE(0xd00000, 0xd00007) AM_DEVREADWRITE8(YM3438_TAG, ym3438_device, read, write, 0x00ff ) + AM_RANGE(0xc50000, 0xc50001) AM_WRITE(m1_snd_mpcm_bnk1_w) + AM_RANGE(0xc60000, 0xc60007) AM_DEVREADWRITE8(MULTIPCM_2_TAG, multipcm_device, read, write, 0x00ff) + AM_RANGE(0xc70000, 0xc70001) AM_WRITE(m1_snd_mpcm_bnk2_w) + AM_RANGE(0xd00000, 0xd00007) AM_DEVREADWRITE8(YM3438_TAG, ym3438_device, read, write, 0x00ff) AM_RANGE(0xf00000, 0xf0ffff) AM_RAM ADDRESS_MAP_END @@ -58,13 +61,21 @@ MACHINE_CONFIG_FRAGMENT( segam1audio ) MCFG_DEVICE_ADDRESS_MAP(AS_0, mpcm2_map) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_DEVICE_ADD(UART_TAG, I8251, 8000000) // T82C51, clock unknown + MCFG_I8251_RXRDY_HANDLER(INPUTLINE(M68000_TAG, M68K_IRQ_2)) + MCFG_I8251_TXD_HANDLER(WRITELINE(segam1audio_device, output_txd)) + + MCFG_CLOCK_ADD("uart_clock", 500000) // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE(UART_TAG, i8251_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE(UART_TAG, i8251_device, write_rxc)) MACHINE_CONFIG_END //************************************************************************** // GLOBAL VARIABLES //************************************************************************** -const device_type SEGAM1AUDIO = device_creator; +DEFINE_DEVICE_TYPE(SEGAM1AUDIO, segam1audio_device, "segam1audio", "Sega Model 1 Sound Board") //------------------------------------------------- // machine_config_additions - device-specific @@ -85,12 +96,13 @@ machine_config_constructor segam1audio_device::device_mconfig_additions() const //------------------------------------------------- segam1audio_device::segam1audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, SEGAM1AUDIO, "Sega Model 1 Sound Board", tag, owner, clock, "segam1audio", __FILE__), + device_t(mconfig, SEGAM1AUDIO, tag, owner, clock), m_audiocpu(*this, M68000_TAG), m_multipcm_1(*this, MULTIPCM_1_TAG), m_multipcm_2(*this, MULTIPCM_2_TAG), m_ym(*this, YM3438_TAG), - m_main_irq_cb(*this) + m_uart(*this, UART_TAG), + m_rxd_handler(*this) { } @@ -100,7 +112,7 @@ segam1audio_device::segam1audio_device(const machine_config &mconfig, const char void segam1audio_device::device_start() { - m_main_irq_cb.resolve_safe(); + m_rxd_handler.resolve_safe(); } //------------------------------------------------- @@ -109,26 +121,7 @@ void segam1audio_device::device_start() void segam1audio_device::device_reset() { - // init the sound FIFO - m_fifo_rptr = m_fifo_wptr = 0; - memset(m_to_68k, 0, sizeof(m_to_68k)); -} - -READ16_MEMBER(segam1audio_device::m1_snd_68k_latch_r) -{ - uint16_t retval; - - retval = m_to_68k[m_fifo_rptr]; - - m_fifo_rptr++; - if (m_fifo_rptr >= ARRAY_LENGTH(m_to_68k)) m_fifo_rptr = 0; - - return retval; -} - -READ16_MEMBER(segam1audio_device::m1_snd_v60_ready_r) -{ - return 1; + m_uart->write_cts(0); } WRITE16_MEMBER(segam1audio_device::m1_snd_mpcm_bnk1_w) @@ -141,41 +134,12 @@ WRITE16_MEMBER(segam1audio_device::m1_snd_mpcm_bnk2_w) m_multipcm_2->set_bank(0x100000 * (data & 3), 0x100000 * (data & 3)); } -WRITE16_MEMBER(segam1audio_device::m1_snd_68k_latch1_w) +WRITE_LINE_MEMBER(segam1audio_device::write_txd) { + m_uart->write_rxd(state); } -WRITE16_MEMBER(segam1audio_device::m1_snd_68k_latch2_w) +WRITE_LINE_MEMBER(segam1audio_device::output_txd) { -} - -READ16_MEMBER(segam1audio_device::ready_r) -{ - int sr = m_audiocpu->state_int(M68K_SR); - - if ((sr & 0x0700) > 0x0100) - { - return 0; - } - - return 0xff; -} - -void segam1audio_device::check_fifo_irq() -{ - // if the FIFO has something in it, signal the 68k - if (m_fifo_rptr != m_fifo_wptr) - { - m_audiocpu->set_input_line(2, HOLD_LINE); - } -} - -void segam1audio_device::write_fifo(uint8_t data) -{ - m_to_68k[m_fifo_wptr] = data; - m_fifo_wptr++; - if (m_fifo_wptr >= ARRAY_LENGTH(m_to_68k)) m_fifo_wptr = 0; - - // signal the 68000 that there's data waiting - m_audiocpu->set_input_line(2, HOLD_LINE); + m_rxd_handler(state); } diff --git a/src/mame/audio/segam1audio.h b/src/mame/audio/segam1audio.h index 6298ad7440f..d6f2ea3620a 100644 --- a/src/mame/audio/segam1audio.h +++ b/src/mame/audio/segam1audio.h @@ -1,14 +1,15 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont -#pragma once - -#ifndef __SEGAM1AUDIO_H__ -#define __SEGAM1AUDIO_H__ +#ifndef MAME_AUDIO_SEGAM1AUDIO_H +#define MAME_AUDIO_SEGAM1AUDIO_H #include "cpu/m68000/m68000.h" +#include "machine/i8251.h" #include "sound/2612intf.h" #include "sound/multipcm.h" +#pragma once + #define M1AUDIO_CPU_REGION "m1sndcpu" #define M1AUDIO_MPCM1_REGION "m1pcm1" #define M1AUDIO_MPCM2_REGION "m1pcm2" @@ -16,6 +17,9 @@ #define MCFG_SEGAM1AUDIO_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, SEGAM1AUDIO, 0) +#define MCFG_SEGAM1AUDIO_RXD_HANDLER(_devcb) \ + devcb = &segam1audio_device::set_rxd_handler(*device, DEVCB_##_devcb); + //************************************************************************** // TYPE DEFINITIONS @@ -24,42 +28,38 @@ class segam1audio_device : public device_t { public: - // construction/destruction - segam1audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + // construction/destruction + segam1audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const override; - required_device m_audiocpu; - required_device m_multipcm_1; - required_device m_multipcm_2; - required_device m_ym; + // static configuration + template static devcb_base &set_rxd_handler(device_t &device, Object &&cb) { return downcast(device).m_rxd_handler.set_callback(std::forward(cb)); } - DECLARE_READ16_MEMBER(m1_snd_68k_latch_r); - DECLARE_READ16_MEMBER(m1_snd_v60_ready_r); - DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk1_w); - DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk2_w); - DECLARE_WRITE16_MEMBER(m1_snd_68k_latch1_w); - DECLARE_WRITE16_MEMBER(m1_snd_68k_latch2_w); - DECLARE_READ16_MEMBER(ready_r); + DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk1_w); + DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk2_w); - void check_fifo_irq(); - void write_fifo(uint8_t data); + DECLARE_WRITE_LINE_MEMBER(write_txd); + DECLARE_WRITE_LINE_MEMBER(output_txd); protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; private: - int m_to_68k[8]; - int m_fifo_rptr; - int m_fifo_wptr; - devcb_write_line m_main_irq_cb; + required_device m_audiocpu; + required_device m_multipcm_1; + required_device m_multipcm_2; + required_device m_ym; + required_device m_uart; + + devcb_write_line m_rxd_handler; }; // device type definition -extern const device_type SEGAM1AUDIO; +DECLARE_DEVICE_TYPE(SEGAM1AUDIO, segam1audio_device) -#endif /* __SEGAM1AUDIO_H__ */ +#endif // MAME_AUDIO_SEGAM1AUDIO_H diff --git a/src/mame/audio/segasnd.cpp b/src/mame/audio/segasnd.cpp index 388700b4ad5..ba9d4d86728 100644 --- a/src/mame/audio/segasnd.cpp +++ b/src/mame/audio/segasnd.cpp @@ -9,12 +9,15 @@ ***************************************************************************/ #include "emu.h" -#include "sound/sp0250.h" #include "segasnd.h" +#include "sound/sp0250.h" + +#include + #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" /*************************************************************************** @@ -37,24 +40,23 @@ INLINE FUNCTIONS ***************************************************************************/ -static inline void configure_filter(g80_filter_state *state, double r, double c) +inline void usb_sound_device::g80_filter_state::configure(double r, double c) { - state->capval = 0; - state->exponent = 1.0 - exp(-1.0 / (r * c * SAMPLE_RATE)); + capval = 0.0; + exponent = 1.0 - std::exp(-1.0 / (r * c * SAMPLE_RATE)); } -static inline double step_rc_filter(g80_filter_state *state, double input) +inline double usb_sound_device::g80_filter_state::step_rc(double input) { - state->capval += (input - state->capval) * state->exponent; - return state->capval; + return capval += (input - capval) * exponent; } -static inline double step_cr_filter(g80_filter_state *state, double input) +inline double usb_sound_device::g80_filter_state::step_cr(double input) { - double result = (input - state->capval); - state->capval += (input - state->capval) * state->exponent; + double const result = input - capval; + capval += result * exponent; return result; } @@ -64,10 +66,10 @@ static inline double step_cr_filter(g80_filter_state *state, double input) SPEECH BOARD ***************************************************************************/ -const device_type SEGASPEECH = device_creator; +DEFINE_DEVICE_TYPE(SEGASPEECH, speech_sound_device, "sega_speech_sound", "Sega Speech Sound Board") -speech_sound_device::speech_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGASPEECH, "Sega Speech Sound Board", tag, owner, clock, "sega_speech_sound", __FILE__), +speech_sound_device::speech_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, SEGASPEECH, tag, owner, clock), device_sound_interface(mconfig, *this), m_drq(0), m_latch(0), @@ -100,12 +102,12 @@ void speech_sound_device::device_start() -READ8_MEMBER( speech_sound_device::t0_r ) +READ_LINE_MEMBER( speech_sound_device::t0_r ) { return m_t0; } -READ8_MEMBER( speech_sound_device::t1_r ) +READ_LINE_MEMBER( speech_sound_device::t1_r ) { return m_drq; } @@ -155,7 +157,7 @@ WRITE_LINE_MEMBER(speech_sound_device::drq_w) TIMER_CALLBACK_MEMBER( speech_sound_device::delayed_speech_w ) { int data = param; - uint8_t old = m_latch; + u8 old = m_latch; /* all 8 bits are latched */ m_latch = data; @@ -177,7 +179,7 @@ WRITE8_MEMBER( speech_sound_device::data_w ) WRITE8_MEMBER( speech_sound_device::control_w ) { - LOG(("Speech control = %X\n", data)); + LOG("Speech control = %X\n", data); } @@ -204,10 +206,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( speech_portmap, AS_IO, 8, speech_sound_device ) AM_RANGE(0x00, 0xff) AM_DEVREAD("segaspeech", speech_sound_device, rom_r) AM_RANGE(0x00, 0xff) AM_DEVWRITE("speech", sp0250_device, write) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVREADWRITE("segaspeech", speech_sound_device, p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_DEVWRITE("segaspeech", speech_sound_device, p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_DEVREAD("segaspeech", speech_sound_device, t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_DEVREAD("segaspeech", speech_sound_device, t1_r) ADDRESS_MAP_END @@ -223,6 +221,11 @@ MACHINE_CONFIG_FRAGMENT( sega_speech_board ) MCFG_CPU_ADD("audiocpu", I8035, SPEECH_MASTER_CLOCK) /* divide by 15 in CPU */ MCFG_CPU_PROGRAM_MAP(speech_map) MCFG_CPU_IO_MAP(speech_portmap) + MCFG_MCS48_PORT_P1_IN_CB(DEVREAD8("segaspeech", speech_sound_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("segaspeech", speech_sound_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(DEVWRITE8("segaspeech", speech_sound_device, p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("segaspeech", speech_sound_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(DEVREADLINE("segaspeech", speech_sound_device, t1_r)) /* sound hardware */ MCFG_SOUND_ADD("segaspeech", SEGASPEECH, 0) @@ -237,10 +240,10 @@ MACHINE_CONFIG_END UNIVERSAL SOUND BOARD ***************************************************************************/ -const device_type SEGAUSB = device_creator; +DEFINE_DEVICE_TYPE(SEGAUSB, usb_sound_device, "segausb", "Sega Universal Sound Board") -usb_sound_device::usb_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +usb_sound_device::usb_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, type, tag, owner, clock), device_sound_interface(mconfig, *this), m_ourcpu(*this, "ourcpu"), m_stream(nullptr), @@ -258,12 +261,8 @@ usb_sound_device::usb_sound_device(const machine_config &mconfig, device_type ty { } -usb_sound_device::usb_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGAUSB, "Sega Universal Sound Board", tag, owner, clock, "segausb", __FILE__), - device_sound_interface(mconfig, *this), - m_ourcpu(*this, "ourcpu"), - m_program_ram(*this, "pgmram"), - m_work_ram(*this, "workram") +usb_sound_device::usb_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : usb_sound_device(mconfig, SEGAUSB, tag, owner, clock) { } @@ -286,31 +285,30 @@ void usb_sound_device::device_start() /* initialize state */ m_noise_shift = 0x15555; - for (tgroup = 0; tgroup < 3; tgroup++) + for (timer8253 &g : m_timer_group) { - timer8253 *g = &m_timer_group[tgroup]; - configure_filter(&g->chan_filter[0], 10e3, 1e-6); - configure_filter(&g->chan_filter[1], 10e3, 1e-6); - configure_filter(&g->gate1, 100e3, 0.01e-6); - configure_filter(&g->gate2, 2 * 100e3, 0.01e-6); + g.chan_filter[0].configure(10e3, 1e-6); + g.chan_filter[1].configure(10e3, 1e-6); + g.gate1.configure(100e3, 0.01e-6); + g.gate2.configure(2 * 100e3, 0.01e-6); } - configure_filter(&temp, 100e3, 0.01e-6); + temp.configure(100e3, 0.01e-6); m_gate_rc1_exp[0] = temp.exponent; - configure_filter(&temp, 1e3, 0.01e-6); + temp.configure(1e3, 0.01e-6); m_gate_rc1_exp[1] = temp.exponent; - configure_filter(&temp, 2 * 100e3, 0.01e-6); + temp.configure(2 * 100e3, 0.01e-6); m_gate_rc2_exp[0] = temp.exponent; - configure_filter(&temp, 2 * 1e3, 0.01e-6); + temp.configure(2 * 1e3, 0.01e-6); m_gate_rc2_exp[1] = temp.exponent; - configure_filter(&m_noise_filters[0], 2.7e3 + 2.7e3, 1.0e-6); - configure_filter(&m_noise_filters[1], 2.7e3 + 1e3, 0.30e-6); - configure_filter(&m_noise_filters[2], 2.7e3 + 270, 0.15e-6); - configure_filter(&m_noise_filters[3], 2.7e3 + 0, 0.082e-6); - configure_filter(&m_noise_filters[4], 33e3, 0.1e-6); + m_noise_filters[0].configure(2.7e3 + 2.7e3, 1.0e-6); + m_noise_filters[1].configure(2.7e3 + 1e3, 0.30e-6); + m_noise_filters[2].configure(2.7e3 + 270, 0.15e-6); + m_noise_filters[3].configure(2.7e3 + 0, 0.082e-6); + m_noise_filters[4].configure(33e3, 0.1e-6); - configure_filter(&m_final_filter, 100e3, 4.7e-6); + m_final_filter.configure(100e3, 4.7e-6); /* register for save states */ save_item(NAME(m_in_latch)); @@ -324,7 +322,7 @@ void usb_sound_device::device_start() timer8253 *group = &m_timer_group[tgroup]; for (tchan = 0; tchan < 3; tchan++) { - timer8253_channel *channel = &group->chan[tchan]; + timer8253::channel *channel = &group->chan[tchan]; save_item(NAME(channel->holding), tgroup * 3 + tchan); save_item(NAME(channel->latchmode), tgroup * 3 + tchan); save_item(NAME(channel->latchtoggle), tgroup * 3 + tchan); @@ -391,7 +389,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( usb_sound_device::increment_t1_clock_timer_cb ) READ8_MEMBER( usb_sound_device::status_r ) { - LOG(("%04X:usb_data_r = %02X\n", m_maincpu->safe_pc(), (m_out_latch & 0x81) | (m_in_latch & 0x7e))); + LOG("%04X:usb_data_r = %02X\n", m_maincpu->safe_pc(), (m_out_latch & 0x81) | (m_in_latch & 0x7e)); m_maincpu->execute().adjust_icount(-200); @@ -419,7 +417,7 @@ TIMER_CALLBACK_MEMBER( usb_sound_device::delayed_usb_data_w ) WRITE8_MEMBER( usb_sound_device::data_w ) { - LOG(("%04X:usb_data_w = %02X\n", m_maincpu->safe_pc(), data)); + LOG("%04X:usb_data_w = %02X\n", m_maincpu->safe_pc(), data); space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(usb_sound_device::delayed_usb_data_w), this), data); /* boost the interleave so that sequences can be sent */ @@ -438,7 +436,7 @@ WRITE8_MEMBER( usb_sound_device::ram_w ) if (m_in_latch & 0x80) m_program_ram[offset] = data; else - LOG(("%04X:sega_usb_ram_w(%03X) = %02X while /LOAD disabled\n", m_maincpu->safe_pc(), offset, data)); + LOG("%04X:sega_usb_ram_w(%03X) = %02X while /LOAD disabled\n", m_maincpu->safe_pc(), offset, data); } @@ -453,7 +451,7 @@ READ8_MEMBER( usb_sound_device::p1_r ) { /* bits 0-6 are inputs and map to bits 0-6 of the input latch */ if ((m_in_latch & 0x7f) != 0) - LOG(("%03X: P1 read = %02X\n", m_maincpu->safe_pc(), m_in_latch & 0x7f)); + LOG("%03X: P1 read = %02X\n", m_maincpu->safe_pc(), m_in_latch & 0x7f); return m_in_latch & 0x7f; } @@ -462,13 +460,13 @@ WRITE8_MEMBER( usb_sound_device::p1_w ) { /* bit 7 maps to bit 0 on the output latch */ m_out_latch = (m_out_latch & 0xfe) | (data >> 7); - LOG(("%03X: P1 write = %02X\n", m_maincpu->safe_pc(), data)); + LOG("%03X: P1 write = %02X\n", m_maincpu->safe_pc(), data); } WRITE8_MEMBER( usb_sound_device::p2_w ) { - uint8_t old = m_last_p2_value; + u8 old = m_last_p2_value; m_last_p2_value = data; /* low 2 bits control the bank of work RAM we are addressing */ @@ -484,11 +482,11 @@ WRITE8_MEMBER( usb_sound_device::p2_w ) if ((old & 0x80) && !(data & 0x80)) m_t1_clock = 0; - LOG(("%03X: P2 write -> bank=%d ready=%d clock=%d\n", m_maincpu->safe_pc(), data & 3, (data >> 6) & 1, (data >> 7) & 1)); + LOG("%03X: P2 write -> bank=%d ready=%d clock=%d\n", m_maincpu->safe_pc(), data & 3, (data >> 6) & 1, (data >> 7) & 1); } -READ8_MEMBER( usb_sound_device::t1_r ) +READ_LINE_MEMBER( usb_sound_device::t1_r ) { /* T1 returns 1 based on the value of the T1 clock; the exact */ /* pattern is determined by one or more jumpers on the board. */ @@ -503,41 +501,41 @@ READ8_MEMBER( usb_sound_device::t1_r ) * *************************************/ -static inline void clock_channel(timer8253_channel *ch) +inline void usb_sound_device::timer8253::channel::clock() { - uint8_t lastgate = ch->lastgate; + u8 const old_lastgate = lastgate; /* update the gate */ - ch->lastgate = ch->gate; + lastgate = gate; /* if we're holding, skip */ - if (ch->holding) + if (holding) return; /* switch off the clock mode */ - switch (ch->clockmode) + switch (clockmode) { /* oneshot; waits for trigger to restart */ case 1: - if (!lastgate && ch->gate) + if (!old_lastgate && gate) { - ch->output = 0; - ch->remain = ch->count; + output = 0; + remain = count; } else { - if (--ch->remain == 0) - ch->output = 1; + if (--remain == 0) + output = 1; } break; /* square wave: counts down by 2 and toggles output */ case 3: - ch->remain = (ch->remain - 1) & ~1; - if (ch->remain == 0) + remain = (remain - 1) & ~1; + if (remain == 0) { - ch->output ^= 1; - ch->remain = ch->count; + output ^= 1; + remain = count; } break; } @@ -550,10 +548,10 @@ static inline void clock_channel(timer8253_channel *ch) * *************************************/ -void usb_sound_device::timer_w(int which, uint8_t offset, uint8_t data) +void usb_sound_device::timer_w(int which, u8 offset, u8 data) { timer8253 *g = &m_timer_group[which]; - timer8253_channel *ch; + timer8253::channel *ch; int was_holding; m_stream->update(); @@ -619,7 +617,7 @@ void usb_sound_device::timer_w(int which, uint8_t offset, uint8_t data) } -void usb_sound_device::env_w(int which, uint8_t offset, uint8_t data) +void usb_sound_device::env_w(int which, u8 offset, u8 data) { timer8253 *g = &m_timer_group[which]; @@ -724,7 +722,7 @@ void usb_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t /* final output goes through a CR filter; the scaling factor is arbitrary to get the noise to the */ /* correct relative volume */ - noiseval = step_cr_filter(&m_noise_filters[4], noiseval); + noiseval = m_noise_filters[4].step_cr(noiseval); noiseval *= 0.075; /* there are 3 identical groups of circuits, each with its own 8253 */ @@ -747,12 +745,12 @@ void usb_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t { g->chan[0].subcount = USB_2MHZ_CLOCK / USB_PCS_CLOCK; g->chan[0].gate = 1; - clock_channel(&g->chan[0]); + g->chan[0].clock(); } g->chan[0].subcount -= step; /* channel 0 is mixed in with a resistance of 100k */ - chan0 = step_cr_filter(&g->chan_filter[0], g->chan[0].output) * g->env[0] * (1.0/100.0); + chan0 = g->chan_filter[0].step_cr(g->chan[0].output) * g->env[0] * (1.0/100.0); /*------------- @@ -768,12 +766,12 @@ void usb_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t { g->chan[1].subcount = USB_2MHZ_CLOCK / USB_PCS_CLOCK; g->chan[1].gate = 1; - clock_channel(&g->chan[1]); + g->chan[1].clock(); } g->chan[1].subcount -= step; /* channel 1 is mixed in with a resistance of 100k */ - chan1 = step_cr_filter(&g->chan_filter[1], g->chan[1].output) * g->env[1] * (1.0/100.0); + chan1 = g->chan_filter[1].step_cr(g->chan[1].output) * g->env[1] * (1.0/100.0); /*------------- @@ -801,7 +799,7 @@ void usb_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t g->chan[2].subcount = USB_2MHZ_CLOCK / USB_GOS_CLOCK / 2 - 1; g->chan[2].gate = !g->chan[2].gate; } - clock_channel(&g->chan[2]); + g->chan[2].clock(); } /* the exponents for the gate filters are determined by channel 2's output */ @@ -811,14 +809,14 @@ void usb_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t /* based on the envelope mode, we do one of two things with source 2 */ if (g->config == 0) { - chan2 = step_rc_filter(&g->gate2, step_rc_filter(&g->gate1, noiseval)) * -1.56 * g->env[2] * (1.0/33.0); + chan2 = g->gate2.step_rc(g->gate1.step_rc(noiseval)) * -1.56 * g->env[2] * (1.0/33.0); mix = chan0 + chan1 + chan2; } else { chan2 = -noiseval * g->env[2] * (1.0/33.0); mix = chan0 + chan1 + chan2; - mix = step_rc_filter(&g->gate2, step_rc_filter(&g->gate1, -mix)) * 1.56; + mix = g->gate2.step_rc(g->gate1.step_rc(-mix)) * 1.56; } /* accumulate the sample */ @@ -835,7 +833,7 @@ void usb_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t WEIGHT */ - *dest++ = 4000 * step_cr_filter(&m_final_filter, sample); + *dest++ = 4000 * m_final_filter.step_cr(sample); } } @@ -852,9 +850,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( usb_portmap, AS_IO, 8, usb_sound_device ) AM_RANGE(0x00, 0xff) AM_READWRITE(workram_r, workram_w) AM_SHARE("workram") - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) ADDRESS_MAP_END @@ -870,6 +865,10 @@ MACHINE_CONFIG_FRAGMENT( segausb ) MCFG_CPU_ADD("ourcpu", I8035, USB_MASTER_CLOCK) /* divide by 15 in CPU */ MCFG_CPU_PROGRAM_MAP(usb_map) MCFG_CPU_IO_MAP(usb_portmap) + MCFG_MCS48_PORT_P1_IN_CB(READ8(usb_sound_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(usb_sound_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(usb_sound_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(usb_sound_device, t1_r)) MCFG_TIMER_DRIVER_ADD_PERIODIC("usb_timer", usb_sound_device, increment_t1_clock_timer_cb, attotime::from_hz(USB_2MHZ_CLOCK / 256)) MACHINE_CONFIG_END @@ -879,10 +878,10 @@ machine_config_constructor usb_sound_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( segausb ); } -const device_type SEGAUSBROM = device_creator; +DEFINE_DEVICE_TYPE(SEGAUSBROM, usb_rom_sound_device, "segausbrom", "Sega Universal Sound Board with ROM") -usb_rom_sound_device::usb_rom_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : usb_sound_device(mconfig, SEGAUSBROM, "Sega Universal Sound Board with ROM", tag, owner, clock, "segausbrom", __FILE__) +usb_rom_sound_device::usb_rom_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : usb_sound_device(mconfig, SEGAUSBROM, tag, owner, clock) { } diff --git a/src/mame/audio/segasnd.h b/src/mame/audio/segasnd.h index e4cfd9a6445..70781658466 100644 --- a/src/mame/audio/segasnd.h +++ b/src/mame/audio/segasnd.h @@ -5,21 +5,24 @@ Sega g80 common sound hardware *************************************************************************/ +#ifndef MAME_AUDIO_SEGASND_H +#define MAME_AUDIO_SEGASND_H + +#pragma once #include "cpu/mcs48/mcs48.h" -class speech_sound_device : public device_t, - public device_sound_interface + +class speech_sound_device : public device_t, public device_sound_interface { public: - speech_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~speech_sound_device() {} + speech_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); DECLARE_WRITE8_MEMBER( data_w ); DECLARE_WRITE8_MEMBER( control_w ); - DECLARE_READ8_MEMBER( t0_r ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); DECLARE_READ8_MEMBER( p1_r ); DECLARE_READ8_MEMBER( rom_r ); DECLARE_WRITE8_MEMBER( p1_w ); @@ -36,88 +39,24 @@ protected: private: // internal state - uint8_t m_drq; - uint8_t m_latch; - uint8_t m_t0; - uint8_t m_p2; - uint8_t *m_speech; + u8 m_drq; + u8 m_latch; + u8 m_t0; + u8 m_p2; + u8 *m_speech; TIMER_CALLBACK_MEMBER( delayed_speech_w ); }; -extern const device_type SEGASPEECH; +DECLARE_DEVICE_TYPE(SEGASPEECH, speech_sound_device) MACHINE_CONFIG_EXTERN( sega_speech_board ); - - -struct g80_filter_state -{ - g80_filter_state(): - capval(0), - exponent(0) {} - - double capval; /* current capacitor value */ - double exponent; /* constant exponent */ -}; - - -struct timer8253_channel -{ - timer8253_channel(): - holding(0), - latchmode(0), - latchtoggle(0), - clockmode(0), - bcdmode(0), - output(0), - lastgate(0), - gate(0), - subcount(0), - count(0), - remain(0) {} - - uint8_t holding; /* holding until counts written? */ - uint8_t latchmode; /* latching mode */ - uint8_t latchtoggle; /* latching state */ - uint8_t clockmode; /* clocking mode */ - uint8_t bcdmode; /* BCD mode? */ - uint8_t output; /* current output value */ - uint8_t lastgate; /* previous gate value */ - uint8_t gate; /* current gate value */ - uint8_t subcount; /* subcount (2MHz clocks per input clock) */ - uint16_t count; /* initial count */ - uint16_t remain; /* current down counter value */ -}; - - -struct timer8253 -{ - timer8253() - { - env[0] = 0; - env[1] = 0; - env[2] = 0; - config = 0; - } - - timer8253_channel chan[3]; /* three channels' worth of information */ - double env[3]; /* envelope value for each channel */ - g80_filter_state chan_filter[2]; /* filter states for the first two channels */ - g80_filter_state gate1; /* first RC filter state */ - g80_filter_state gate2; /* second RC filter state */ - uint8_t config; /* configuration for this timer */ -}; - - -class usb_sound_device : public device_t, - public device_sound_interface +class usb_sound_device : public device_t, public device_sound_interface { public: - usb_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - usb_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~usb_sound_device() {} + usb_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); required_device m_ourcpu; /* CPU index of the 8035 */ DECLARE_READ8_MEMBER( status_r ); @@ -128,7 +67,7 @@ public: DECLARE_READ8_MEMBER( p1_r ); DECLARE_WRITE8_MEMBER( p1_w ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); DECLARE_READ8_MEMBER( workram_r ); DECLARE_WRITE8_MEMBER( workram_w ); @@ -136,6 +75,8 @@ public: TIMER_DEVICE_CALLBACK_MEMBER( increment_t1_clock_timer_cb ); protected: + usb_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); + // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; @@ -145,46 +86,92 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: + struct g80_filter_state + { + g80_filter_state() { } + + void configure(double r, double c); + double step_rc(double input); + double step_cr(double input); + + double capval = 0.0; // current capacitor value + double exponent = 0.0; // constant exponent + }; + + + struct timer8253 + { + struct channel + { + channel() { } + + void clock(); + + u8 holding = 0; // holding until counts written? */ + u8 latchmode = 0; // latching mode */ + u8 latchtoggle = 0; // latching state */ + u8 clockmode = 0; // clocking mode */ + u8 bcdmode = 0; // BCD mode? */ + u8 output = 0; // current output value */ + u8 lastgate = 0; // previous gate value */ + u8 gate = 0; // current gate value */ + u8 subcount = 0; // subcount (2MHz clocks per input clock) */ + u16 count = 0; // initial count + u16 remain = 0; // current down counter value + }; + + timer8253() : env{ 0.0, 0.0, 0.0 } { } + + channel chan[3]; // three channels' worth of information + double env[3]; // envelope value for each channel + g80_filter_state chan_filter[2]; // filter states for the first two channels + g80_filter_state gate1; // first RC filter state + g80_filter_state gate2; // second RC filter state + u8 config = 0; // configuration for this timer + }; + + // internal state - sound_stream *m_stream; /* output stream */ - device_t *m_maincpu; - uint8_t m_in_latch; /* input latch */ - uint8_t m_out_latch; /* output latch */ - uint8_t m_last_p2_value; /* current P2 output value */ - optional_shared_ptr m_program_ram; /* pointer to program RAM */ - required_shared_ptr m_work_ram; /* pointer to work RAM */ - uint8_t m_work_ram_bank; /* currently selected work RAM bank */ - uint8_t m_t1_clock; /* T1 clock value */ - uint8_t m_t1_clock_mask; /* T1 clock mask (configured via jumpers) */ - timer8253 m_timer_group[3]; /* 3 groups of timers */ - uint8_t m_timer_mode[3]; /* mode control for each group */ - uint32_t m_noise_shift; - uint8_t m_noise_state; - uint8_t m_noise_subcount; - double m_gate_rc1_exp[2]; - double m_gate_rc2_exp[2]; + sound_stream *m_stream; // output stream + device_t *m_maincpu; + u8 m_in_latch; // input latch + u8 m_out_latch; // output latch + u8 m_last_p2_value; // current P2 output value + optional_shared_ptr m_program_ram; // pointer to program RAM + required_shared_ptr m_work_ram; // pointer to work RAM + u8 m_work_ram_bank; // currently selected work RAM bank + u8 m_t1_clock; // T1 clock value + u8 m_t1_clock_mask; // T1 clock mask (configured via jumpers) + timer8253 m_timer_group[3]; // 3 groups of timers + u8 m_timer_mode[3]; // mode control for each group + u32 m_noise_shift; + u8 m_noise_state; + u8 m_noise_subcount; + double m_gate_rc1_exp[2]; + double m_gate_rc2_exp[2]; g80_filter_state m_final_filter; g80_filter_state m_noise_filters[5]; TIMER_CALLBACK_MEMBER( delayed_usb_data_w ); - void timer_w(int which, uint8_t offset, uint8_t data); - void env_w(int which, uint8_t offset, uint8_t data); + void timer_w(int which, u8 offset, u8 data); + void env_w(int which, u8 offset, u8 data); }; -extern const device_type SEGAUSB; +DECLARE_DEVICE_TYPE(SEGAUSB, usb_sound_device) + class usb_rom_sound_device : public usb_sound_device { public: - usb_rom_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~usb_rom_sound_device() {} + usb_rom_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); protected: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; }; -extern const device_type SEGAUSBROM; +DECLARE_DEVICE_TYPE(SEGAUSBROM, usb_rom_sound_device) + #define MCFG_SEGAUSB_ADD(_tag) \ MCFG_SOUND_ADD(_tag, SEGAUSB, 0) \ @@ -193,3 +180,5 @@ extern const device_type SEGAUSBROM; #define MCFG_SEGAUSBROM_ADD(_tag) \ MCFG_SOUND_ADD(_tag, SEGAUSBROM, 0) \ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + +#endif // MAME_AUDIO_SEGASND_H diff --git a/src/mame/audio/seibu.cpp b/src/mame/audio/seibu.cpp index 5814b51ba44..9399a422779 100644 --- a/src/mame/audio/seibu.cpp +++ b/src/mame/audio/seibu.cpp @@ -71,10 +71,10 @@ 00002CA2: 17 37 */ -const device_type SEIBU_SOUND = device_creator; +DEFINE_DEVICE_TYPE(SEIBU_SOUND, seibu_sound_device, "seibu_sound", "Seibu Sound System") seibu_sound_device::seibu_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEIBU_SOUND, "Seibu Sound System", tag, owner, clock, "seibu_sound", __FILE__), + : device_t(mconfig, SEIBU_SOUND, tag, owner, clock), m_ym_read_cb(*this), m_ym_write_cb(*this), m_sound_cpu(*this, finder_base::DUMMY_TAG), @@ -320,10 +320,10 @@ ADDRESS_MAP_END /***************************************************************************/ -const device_type SEI80BU = device_creator; +DEFINE_DEVICE_TYPE(SEI80BU, sei80bu_device, "sei80bu", "SEI80BU Encrypted Z80 Interface") sei80bu_device::sei80bu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEI80BU, "SEI80BU Encrypted Z80 Interface", tag, owner, clock, "sei80bu", __FILE__), + : device_t(mconfig, SEI80BU, tag, owner, clock), device_rom_interface(mconfig, *this, 16) { } @@ -374,10 +374,10 @@ READ8_MEMBER(sei80bu_device::opcode_r) FIXME: hook up an actual MSM5205 in place of this custom implementation ***************************************************************************/ -const device_type SEIBU_ADPCM = device_creator; +DEFINE_DEVICE_TYPE(SEIBU_ADPCM, seibu_adpcm_device, "seibu_adpcm", "Seibu ADPCM (MSM5205)") seibu_adpcm_device::seibu_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEIBU_ADPCM, "Seibu ADPCM (MSM5205)", tag, owner, clock, "seibu_adpcm", __FILE__), + : device_t(mconfig, SEIBU_ADPCM, tag, owner, clock), device_sound_interface(mconfig, *this), m_stream(nullptr), m_current(0), diff --git a/src/mame/audio/seibu.h b/src/mame/audio/seibu.h index 20909371d2c..4137b8d703e 100644 --- a/src/mame/audio/seibu.h +++ b/src/mame/audio/seibu.h @@ -24,6 +24,10 @@ * = encrypted ***************************************************************************/ +#ifndef MAME_AUDIO_SEIBU_H +#define MAME_AUDIO_SEIBU_H + +#pragma once #include "cpu/z80/z80.h" #include "sound/okiadpcm.h" @@ -91,7 +95,7 @@ private: }; }; -extern const device_type SEIBU_SOUND; +DECLARE_DEVICE_TYPE(SEIBU_SOUND, seibu_sound_device) // SEI80BU (Z80 program decryption) @@ -110,7 +114,7 @@ protected: virtual void rom_bank_updated() override { } }; -extern const device_type SEI80BU; +DECLARE_DEVICE_TYPE(SEI80BU, sei80bu_device) // Seibu ADPCM device @@ -143,7 +147,7 @@ private: required_region_ptr m_base; }; -extern const device_type SEIBU_ADPCM; +DECLARE_DEVICE_TYPE(SEIBU_ADPCM, seibu_adpcm_device) /**************************************************************************/ @@ -182,3 +186,5 @@ extern const device_type SEIBU_ADPCM; devcb = &seibu_sound_device::set_ym_write_callback(*device, DEVCB_##_devcb); /**************************************************************************/ + +#endif // MAME_AUDIO_SEIBU_H diff --git a/src/mame/audio/snes_snd.cpp b/src/mame/audio/snes_snd.cpp index cf29796f185..714b1ca8f15 100644 --- a/src/mame/audio/snes_snd.cpp +++ b/src/mame/audio/snes_snd.cpp @@ -153,11 +153,11 @@ static const int ENVCNT[0x20] #define MEtoLE16( x ) little_endianize_int16(x) -const device_type SNES = device_creator; +DEFINE_DEVICE_TYPE(SNES, snes_sound_device, "snes_sound", "SNES Custom DSP (SPC700)") snes_sound_device::snes_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SNES, "SNES Custom DSP (SPC700)", tag, owner, clock, "snes_sound", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, SNES, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } diff --git a/src/mame/audio/snes_snd.h b/src/mame/audio/snes_snd.h index e54e51ba538..68c8a204917 100644 --- a/src/mame/audio/snes_snd.h +++ b/src/mame/audio/snes_snd.h @@ -6,11 +6,8 @@ * ****************************************************************************/ -#ifndef __SNES_SPC_H__ -#define __SNES_SPC_H__ - - -#define SNES_SPCRAM_SIZE 0x10000 +#ifndef MAME_AUDIO_SNES_SND_H +#define MAME_AUDIO_SNES_SND_H /*************************************************************************** @@ -27,34 +24,6 @@ enum env_state_t32 /* ADSR state type */ ALLOW_SAVE_TYPE(env_state_t32); -struct voice_state_type /* Voice state type */ -{ - uint16_t mem_ptr; /* Sample data memory pointer */ - int end; /* End or loop after block */ - int envcnt; /* Counts to envelope update */ - env_state_t32 envstate; /* Current envelope state */ - int envx; /* Last env height (0-0x7FFF) */ - int filter; /* Last header's filter */ - int half; /* Active nybble of BRR */ - int header_cnt; /* Bytes before new header (0-8)*/ - int mixfrac; /* Fractional part of smpl pstn */ - int on_cnt; /* Is it time to turn on yet? */ - int pitch; /* Sample pitch (4096->32000Hz) */ - int range; /* Last header's range */ - uint32_t samp_id; /* Sample ID# */ - int sampptr; /* Where in sampbuf we are */ - int32_t smp1; /* Last sample (for BRR filter) */ - int32_t smp2; /* Second-to-last sample decoded*/ - short sampbuf[4]; /* Buffer for Gaussian interp */ -}; - -struct src_dir_type /* Source directory entry */ -{ - uint16_t vptr; /* Ptr to start of sample data */ - uint16_t lptr; /* Loop pointer in sample data */ -}; - - /*************************************************************************** DEVICE CONFIGURATION MACROS ***************************************************************************/ @@ -64,7 +33,6 @@ class snes_sound_device : public device_t, { public: snes_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~snes_sound_device() {} void set_volume(int volume); @@ -87,6 +55,37 @@ protected: private: + static constexpr unsigned SNES_SPCRAM_SIZE = 0x10000; + + + struct voice_state_type /* Voice state type */ + { + uint16_t mem_ptr; /* Sample data memory pointer */ + int end; /* End or loop after block */ + int envcnt; /* Counts to envelope update */ + env_state_t32 envstate; /* Current envelope state */ + int envx; /* Last env height (0-0x7FFF) */ + int filter; /* Last header's filter */ + int half; /* Active nybble of BRR */ + int header_cnt; /* Bytes before new header (0-8)*/ + int mixfrac; /* Fractional part of smpl pstn */ + int on_cnt; /* Is it time to turn on yet? */ + int pitch; /* Sample pitch (4096->32000Hz) */ + int range; /* Last header's range */ + uint32_t samp_id; /* Sample ID# */ + int sampptr; /* Where in sampbuf we are */ + int32_t smp1; /* Last sample (for BRR filter) */ + int32_t smp2; /* Second-to-last sample decoded*/ + short sampbuf[4]; /* Buffer for Gaussian interp */ + }; + + struct src_dir_type /* Source directory entry */ + { + uint16_t vptr; /* Ptr to start of sample data */ + uint16_t lptr; /* Loop pointer in sample data */ + }; + + DECLARE_READ8_MEMBER(dsp_io_r); DECLARE_WRITE8_MEMBER(dsp_io_w); TIMER_CALLBACK_MEMBER(spc_timer); @@ -127,7 +126,7 @@ private: uint8_t m_port_out[4]; /* SPC output ports */ }; -extern const device_type SNES; +DECLARE_DEVICE_TYPE(SNES, snes_sound_device) -#endif /* __SNES_SPC_H__ */ +#endif // MAME_AUDIO_SNES_SND_H diff --git a/src/mame/audio/snk6502.cpp b/src/mame/audio/snk6502.cpp index 2b367d2690b..3fc0b7a632b 100644 --- a/src/mame/audio/snk6502.cpp +++ b/src/mame/audio/snk6502.cpp @@ -13,9 +13,9 @@ #include "emu.h" -#include "sound/samples.h" -#include "includes/snk6502.h" -#include "sound/discrete.h" +#include "audio/snk6502.h" + +#include "sound/sn76477.h" #ifndef M_LN2 @@ -128,10 +128,10 @@ DISCRETE_SOUND_START( fantasy ) DISCRETE_SOUND_END -const device_type SNK6502 = device_creator; +DEFINE_DEVICE_TYPE(SNK6502, snk6502_sound_device, "snk6502_sound", "SNK6502 Audio Custom") snk6502_sound_device::snk6502_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SNK6502, "SNK6502 Audio Custom", tag, owner, clock, "snk6502_sound", __FILE__), + : device_t(mconfig, SNK6502, tag, owner, clock), device_sound_interface(mconfig, *this), //m_tone_channels[CHANNELS], m_tone_clock_expire(0), @@ -711,8 +711,6 @@ WRITE8_MEMBER( snk6502_sound_device::fantasy_sound_w ) /* select tune in ROM based on sound command byte */ m_tone_channels[2].base = 0x1000 + ((data & 0x70) << 4); m_tone_channels[2].mask = 0xff; - snk6502_state *drvstate = space.machine().driver_data(); - drvstate->flipscreen_w(space, 0, data); break; } } diff --git a/src/mame/audio/snk6502.h b/src/mame/audio/snk6502.h new file mode 100644 index 00000000000..bd03457376e --- /dev/null +++ b/src/mame/audio/snk6502.h @@ -0,0 +1,86 @@ +// license:BSD-3-Clause +// copyright-holders:Nicola Salmoria, Dan Boris +/************************************************************************* + + rokola hardware + +*************************************************************************/ +#ifndef MAME_AUDIO_SNK6502_H +#define MAME_AUDIO_SNK6502_H + +#pragma once + +#include "sound/discrete.h" +#include "sound/samples.h" + + +class snk6502_sound_device : public device_t, public device_sound_interface +{ +public: + snk6502_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER( sasuke_sound_w ); + DECLARE_WRITE8_MEMBER( satansat_sound_w ); + DECLARE_WRITE8_MEMBER( vanguard_sound_w ); + DECLARE_WRITE8_MEMBER( vanguard_speech_w ); + DECLARE_WRITE8_MEMBER( fantasy_sound_w ); + DECLARE_WRITE8_MEMBER( fantasy_speech_w ); + + void set_music_clock(double clock_time); + void set_music_freq(int freq); + int music0_playing(); + +protected: + // device-level overrides + virtual void device_start() override; + + // sound stream update overrides + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + +private: + static constexpr unsigned CHANNELS = 3; + + struct TONE + { + int mute; + int offset; + int base; + int mask; + int32_t sample_rate; + int32_t sample_step; + int32_t sample_cur; + int16_t form[16]; + }; + + // internal state + TONE m_tone_channels[CHANNELS]; + int32_t m_tone_clock_expire; + int32_t m_tone_clock; + sound_stream * m_tone_stream; + + optional_device m_samples; + uint8_t *m_ROM; + int m_Sound0StopOnRollover; + uint8_t m_LastPort1; + + int m_hd38880_cmd; + uint32_t m_hd38880_addr; + int m_hd38880_data_bytes; + double m_hd38880_speed; + + inline void validate_tone_channel(int channel); + void sasuke_build_waveform(int mask); + void satansat_build_waveform(int mask); + void build_waveform(int channel, int mask); + void speech_w(uint8_t data, const uint16_t *table, int start); +}; + +DECLARE_DEVICE_TYPE(SNK6502, snk6502_sound_device) + +DISCRETE_SOUND_EXTERN( fantasy ); + +extern char const *const sasuke_sample_names[]; +extern char const *const vanguard_sample_names[]; +extern char const *const fantasy_sample_names[]; + +#endif // MAME_AUDIO_SNK6502_H diff --git a/src/mame/audio/socrates.cpp b/src/mame/audio/socrates.cpp index e50b06d9b8a..0b86830d412 100644 --- a/src/mame/audio/socrates.cpp +++ b/src/mame/audio/socrates.cpp @@ -16,7 +16,7 @@ // device type definition -const device_type SOCRATES_SOUND = device_creator; +DEFINE_DEVICE_TYPE(SOCRATES_SOUND, socrates_snd_device, "socrates_snd", "Socrates Sound") //------------------------------------------------- @@ -24,8 +24,8 @@ const device_type SOCRATES_SOUND = device_creator; //------------------------------------------------- socrates_snd_device::socrates_snd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SOCRATES_SOUND, "Socrates Sound", tag, owner, clock, "socrates_snd", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, SOCRATES_SOUND, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } diff --git a/src/mame/audio/socrates.h b/src/mame/audio/socrates.h index c42a3d44671..4f840bca384 100644 --- a/src/mame/audio/socrates.h +++ b/src/mame/audio/socrates.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Jonathan Gevaryahu -#pragma once +#ifndef MAME_AUDIO_SOCRATES_H +#define MAME_AUDIO_SOCRATES_H -#ifndef __SOCR_SND_H__ -#define __SOCR_SND_H__ +#pragma once class socrates_snd_device : public device_t, public device_sound_interface @@ -38,7 +38,7 @@ private: uint16_t m_DAC_output; // output }; -extern const device_type SOCRATES_SOUND; +DECLARE_DEVICE_TYPE(SOCRATES_SOUND, socrates_snd_device) -#endif /* __SOCR_SND_H__ */ +#endif // MAME_AUDIO_SOCRATES_H diff --git a/src/mame/audio/spacefb.cpp b/src/mame/audio/spacefb.cpp index 4add86fc961..5a2ab7b9c68 100644 --- a/src/mame/audio/spacefb.cpp +++ b/src/mame/audio/spacefb.cpp @@ -22,15 +22,15 @@ READ8_MEMBER(spacefb_state::audio_p2_r) } -READ8_MEMBER(spacefb_state::audio_t0_r) +READ_LINE_MEMBER(spacefb_state::audio_t0_r) { - return m_sound_latch & 0x20; + return BIT(m_sound_latch, 6); } -READ8_MEMBER(spacefb_state::audio_t1_r) +READ_LINE_MEMBER(spacefb_state::audio_t1_r) { - return m_sound_latch & 0x04; + return BIT(m_sound_latch, 2); } diff --git a/src/mame/audio/special.cpp b/src/mame/audio/special.cpp index 61bcccc3959..6edc3cebcdf 100644 --- a/src/mame/audio/special.cpp +++ b/src/mame/audio/special.cpp @@ -14,7 +14,7 @@ // device type definition -const device_type SPECIMX_SND = device_creator; +DEFINE_DEVICE_TYPE(SPECIMX_SND, specimx_sound_device, "specimx_sound", "Specialist MX Audio Custom") //************************************************************************** @@ -26,11 +26,11 @@ const device_type SPECIMX_SND = device_creator; //------------------------------------------------- specimx_sound_device::specimx_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SPECIMX_SND, "Specialist MX Audio Custom", tag, owner, clock, "specimx_sound", __FILE__), - device_sound_interface(mconfig, *this), - m_mixer_channel(nullptr) + : device_t(mconfig, SPECIMX_SND, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_mixer_channel(nullptr) + , m_specimx_input{ 0, 0, 0 } { - memset(m_specimx_input, 0, sizeof(int)*3); } diff --git a/src/mame/audio/special.h b/src/mame/audio/special.h index 7fceceaf1ea..8fbcfe176cc 100644 --- a/src/mame/audio/special.h +++ b/src/mame/audio/special.h @@ -6,16 +6,16 @@ * ****************************************************************************/ -#ifndef SPECIAL_SND_H_ -#define SPECIAL_SND_H_ +#ifndef MAME_AUDIO_SPECIAL_H +#define MAME_AUDIO_SPECIAL_H +#pragma once -class specimx_sound_device : public device_t, - public device_sound_interface + +class specimx_sound_device : public device_t, public device_sound_interface { public: specimx_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~specimx_sound_device() { } DECLARE_WRITE_LINE_MEMBER(set_input_ch0); DECLARE_WRITE_LINE_MEMBER(set_input_ch1); @@ -33,6 +33,6 @@ private: int m_specimx_input[3]; }; -extern const device_type SPECIMX_SND; +DECLARE_DEVICE_TYPE(SPECIMX_SND, specimx_sound_device) -#endif /* SPECIAL_SND_H_ */ +#endif // MAME_AUDIO_SPECIAL_H diff --git a/src/mame/audio/sprint8.cpp b/src/mame/audio/sprint8.cpp index 182230cbd27..393652e760d 100644 --- a/src/mame/audio/sprint8.cpp +++ b/src/mame/audio/sprint8.cpp @@ -295,22 +295,22 @@ DISCRETE_SOUND_START( sprint8 ) DISCRETE_SOUND_END -WRITE8_MEMBER(sprint8_state::sprint8_crash_w) +WRITE8_MEMBER(sprint8_state::crash_w) { m_discrete->write(space, SPRINT8_CRASH_EN, data & 0x01); } -WRITE8_MEMBER(sprint8_state::sprint8_screech_w) +WRITE8_MEMBER(sprint8_state::screech_w) { m_discrete->write(space, SPRINT8_SCREECH_EN, data & 0x01); } -WRITE8_MEMBER(sprint8_state::sprint8_attract_w) +WRITE8_MEMBER(sprint8_state::attract_w) { m_discrete->write(space, SPRINT8_ATTRACT_EN, data & 0x01); } -WRITE8_MEMBER(sprint8_state::sprint8_motor_w) +WRITE8_MEMBER(sprint8_state::motor_w) { m_discrete->write(space, NODE_RELATIVE(SPRINT8_MOTOR1_EN, offset & 0x07), data & 0x01); } diff --git a/src/mame/audio/svis_snd.cpp b/src/mame/audio/svis_snd.cpp index eb94212eb85..55b1921e713 100644 --- a/src/mame/audio/svis_snd.cpp +++ b/src/mame/audio/svis_snd.cpp @@ -11,7 +11,7 @@ // device type definition -const device_type SVISION_SND = device_creator; +DEFINE_DEVICE_TYPE(SVISION_SND, svision_sound_device, "svision_sound", "Super Vision Audio Custom") //************************************************************************** @@ -23,9 +23,9 @@ const device_type SVISION_SND = device_creator; //------------------------------------------------- svision_sound_device::svision_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SVISION_SND, "Super Vision Audio Custom", tag, owner, clock, "svision_sound", __FILE__), - device_sound_interface(mconfig, *this), - m_mixer_channel(nullptr) + : device_t(mconfig, SVISION_SND, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_mixer_channel(nullptr) { } @@ -54,47 +54,46 @@ void svision_sound_device::device_start() void svision_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) { stream_sample_t *left=outputs[0], *right=outputs[1]; - int i, j; - SVISION_CHANNEL *channel; - for (i = 0; i < samples; i++, left++, right++) + for (int i = 0; i < samples; i++, left++, right++) { *left = 0; *right = 0; - for (channel=m_channel, j=0; jsize != 0) + CHANNEL &channel(m_channel[j]); + if (channel.size != 0) { - if (channel->on||channel->count) + if (channel.on||channel.count) { bool on = false; - switch (channel->waveform) + switch (channel.waveform) { case 0: - on = channel->pos <= (28 * channel->size) >> 5; + on = channel.pos <= (28 * channel.size) >> 5; break; case 1: - on = channel->pos <= (24 * channel->size) >> 5; + on = channel.pos <= (24 * channel.size) >> 5; break; default: case 2: - on = channel->pos <= channel->size / 2; + on = channel.pos <= channel.size / 2; break; case 3: - on = channel->pos <= (9 * channel->size) >> 5; + on = channel.pos <= (9 * channel.size) >> 5; break; } { - int16_t s = on ? channel->volume << 8 : 0; + int16_t s = on ? channel.volume << 8 : 0; if (j == 0) *right += s; else *left += s; } } - channel->pos++; - if (channel->pos >= channel->size) - channel->pos = 0; + channel.pos++; + if (channel.pos >= channel.size) + channel.pos = 0; } } if (m_noise.on && (m_noise.play || m_noise.count)) @@ -110,13 +109,13 @@ void svision_sound_device::sound_stream_update(sound_stream &stream, stream_samp { switch (m_noise.type) { - case SVISION_NOISE_Type7Bit: + case NOISE::Type::Type7Bit: m_noise.value = m_noise.state & 0x40 ? 1 : 0; b1 = (m_noise.state & 0x40) != 0; b2 = (m_noise.state & 0x20) != 0; m_noise.state=(m_noise.state<<1)+(b1!=b2?1:0); break; - case SVISION_NOISE_Type14Bit: + case NOISE::Type::Type14Bit: default: m_noise.value = m_noise.state & 0x2000 ? 1 : 0; b1 = (m_noise.state & 0x2000) != 0; @@ -204,7 +203,7 @@ WRITE8_MEMBER( svision_sound_device::noise_w ) m_noise.count = data + 1; break; case 2: - m_noise.type = (SVISION_NOISE_Type) (data & 1); + m_noise.type = NOISE::Type(data & 1); m_noise.play = data & 2; m_noise.right = data & 4; m_noise.left = data & 8; @@ -235,35 +234,35 @@ void svision_sound_device::sound_decrement() void svision_sound_device::soundport_w(int which, int offset, int data) { - SVISION_CHANNEL *channel = &m_channel[which]; + CHANNEL &channel(m_channel[which]); uint16_t size; m_mixer_channel->update(); - channel->reg[offset] = data; + channel.reg[offset] = data; switch (offset) { case 0: case 1: - size = channel->reg[0] | ((channel->reg[1] & 7) << 8); + size = channel.reg[0] | ((channel.reg[1] & 7) << 8); if (size) { - // channel->size=(int)(device->machine().sample_rate()*(size<<5)/4e6); - channel->size= (int) (machine().sample_rate() * (size << 5) / machine().device("maincpu")->unscaled_clock()); + // channel.size=(int)(device->machine().sample_rate()*(size<<5)/4e6); + channel.size= (int) (machine().sample_rate() * (size << 5) / machine().device("maincpu")->unscaled_clock()); } else { - channel->size = 0; + channel.size = 0; } - channel->pos = 0; + channel.pos = 0; break; case 2: - channel->on = data & 0x40; - channel->waveform = (data & 0x30) >> 4; - channel->volume = data & 0xf; + channel.on = data & 0x40; + channel.waveform = (data & 0x30) >> 4; + channel.volume = data & 0xf; break; case 3: - channel->count = data + 1; + channel.count = data + 1; break; } } diff --git a/src/mame/audio/svis_snd.h b/src/mame/audio/svis_snd.h index 46b18a29968..1a3777434ae 100644 --- a/src/mame/audio/svis_snd.h +++ b/src/mame/audio/svis_snd.h @@ -6,110 +6,39 @@ * ****************************************************************************/ -#ifndef SVIS_SND_H_ -#define SVIS_SND_H_ +#ifndef MAME_AUDIO_SVIS_SND_H +#define MAME_AUDIO_SVIS_SND_H + +#pragma once //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -enum SVISION_NOISE_Type -{ - SVISION_NOISE_Type7Bit, - SVISION_NOISE_Type14Bit -}; - -struct SVISION_NOISE -{ - SVISION_NOISE() : - on(0), - right(0), - left(0), - play(0), - type(SVISION_NOISE_Type7Bit), - state(0), - volume(0), - count(0), - step(0.0), - pos(0.0), - value(0) - { - memset(reg, 0, sizeof(uint8_t)*3); - } - - uint8_t reg[3]; - int on, right, left, play; - SVISION_NOISE_Type type; - int state; - int volume; - int count; - double step, pos; - int value; // currently simple random function -}; - -struct SVISION_DMA -{ - SVISION_DMA() : - on(0), - right(0), - left(0), - ca14to16(0), - start(0), - size(0), - pos(0.0), - step(0.0), - finished(0) - { - memset(reg, 0, sizeof(uint8_t)*5); - } - - uint8_t reg[5]; - int on, right, left; - int ca14to16; - int start,size; - double pos, step; - int finished; -}; - -struct SVISION_CHANNEL -{ - SVISION_CHANNEL() : - on(0), - waveform(0), - volume(0), - pos(0), - size(0), - count(0) - { - memset(reg, 0, sizeof(uint8_t)*4); - } - - uint8_t reg[4]; - int on; - int waveform, volume; - int pos; - int size; - int count; -}; - -typedef device_delegate svision_snd_irq_delegate; #define SVISION_SND_IRQ_MEMBER(_name) void _name(void) #define SVISION_SND_IRQ_CB(_class, _method) \ - svision_sound_device::set_irq_callback(*device, svision_snd_irq_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); + svision_sound_device::set_irq_callback(*device, svision_sound_device::irq_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); // ======================> svision_sound_device -class svision_sound_device : public device_t, - public device_sound_interface +class svision_sound_device : public device_t, public device_sound_interface { public: + typedef device_delegate irq_delegate; + svision_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~svision_sound_device() { } // static configuration - static void set_irq_callback(device_t &device, svision_snd_irq_delegate callback) { downcast(device).m_irq_cb = callback; } + static void set_irq_callback(device_t &device, irq_delegate callback) { downcast(device).m_irq_cb = callback; } + + DECLARE_WRITE8_MEMBER( sounddma_w ); + DECLARE_WRITE8_MEMBER( noise_w ); + + int *dma_finished(); + void sound_decrement(); + void soundport_w(int which, int offset, int data); protected: // device-level overrides @@ -118,25 +47,59 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -public: - DECLARE_WRITE8_MEMBER( sounddma_w ); - DECLARE_WRITE8_MEMBER( noise_w ); +private: + struct NOISE + { + enum class Type + { + Type7Bit = 0, + Type14Bit = 1 + }; + + NOISE() : reg{ 0, 0, 0 } { } + + uint8_t reg[3]; + int on = 0, right = 0, left = 0, play = 0; + Type type = Type::Type7Bit; + int state = 0; + int volume = 0; + int count = 0; + double step = 0, pos = 0; + int value = 0; // currently simple random function + }; + + struct DMA + { + DMA() : reg{ 0, 0, 0, 0, 0 } { } -public: - int *dma_finished(); - void sound_decrement(); - void soundport_w(int which, int offset, int data); + uint8_t reg[5]; + int on = 0, right = 0, left = 0; + int ca14to16 = 0; + int start = 0, size = 0; + double pos = 0, step = 0; + int finished = 0; + }; -private: - svision_snd_irq_delegate m_irq_cb; + struct CHANNEL + { + CHANNEL() : reg{ 0, 0, 0, 0 } { } + + uint8_t reg[4]; + int on = 0; + int waveform = 0, volume = 0; + int pos = 0; + int size = 0; + int count = 0; + }; + + irq_delegate m_irq_cb; sound_stream *m_mixer_channel; - SVISION_DMA m_dma; - SVISION_NOISE m_noise; - SVISION_CHANNEL m_channel[2]; + DMA m_dma; + NOISE m_noise; + CHANNEL m_channel[2]; }; -extern const device_type SVISION_SND; - +DECLARE_DEVICE_TYPE(SVISION_SND, svision_sound_device) -#endif /* SVIS_SND_H_ */ +#endif // MAME_AUDIO_SVIS_SND_H diff --git a/src/mame/audio/t5182.cpp b/src/mame/audio/t5182.cpp index 2106b0fc53c..1f20307f31a 100644 --- a/src/mame/audio/t5182.cpp +++ b/src/mame/audio/t5182.cpp @@ -151,10 +151,10 @@ rom. #define T5182_CLOCK XTAL_14_31818MHz/4 -const device_type T5182 = device_creator; +DEFINE_DEVICE_TYPE(T5182, t5182_device, "t5182", "T5182 MCU") t5182_device::t5182_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, T5182, "T5182 MCU", tag, owner, clock, "t5182", __FILE__), + : device_t(mconfig, T5182, tag, owner, clock), m_ourcpu(*this, "t5182_z80"), m_sharedram(*this, "sharedram"), m_irqstate(0), diff --git a/src/mame/audio/t5182.h b/src/mame/audio/t5182.h index 4783f626236..e4f8ab4533e 100644 --- a/src/mame/audio/t5182.h +++ b/src/mame/audio/t5182.h @@ -1,5 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Jonathan Gevaryahu +#ifndef MAME_AUDIO_T5182_H +#define MAME_AUDIO_T5182_H + +#pragma once + #include "sound/ym2151.h" #include "cpu/z80/z80.h" @@ -8,7 +13,6 @@ class t5182_device : public device_t { public: t5182_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~t5182_device() {} enum { @@ -57,4 +61,6 @@ private: TIMER_CALLBACK_MEMBER( setirq_callback ); }; -extern const device_type T5182; +DECLARE_DEVICE_TYPE(T5182, t5182_device) + +#endif // MAME_AUDIO_T5182_H diff --git a/src/mame/audio/taito_en.cpp b/src/mame/audio/taito_en.cpp index 80ef6b085e0..e6fc3cdf820 100644 --- a/src/mame/audio/taito_en.cpp +++ b/src/mame/audio/taito_en.cpp @@ -17,10 +17,10 @@ #include "speaker.h" -const device_type TAITO_EN = device_creator; +DEFINE_DEVICE_TYPE(TAITO_EN, taito_en_device, "taito_en", "Taito Ensoniq Sound System") taito_en_device::taito_en_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TAITO_EN, "Taito Ensoniq Sound System", tag, owner, clock, "taito_en", __FILE__), + : device_t(mconfig, TAITO_EN, tag, owner, clock), m_audiocpu(*this, "audiocpu"), m_ensoniq(*this, "ensoniq"), m_duart68681(*this, "duart68681"), diff --git a/src/mame/audio/taito_en.h b/src/mame/audio/taito_en.h index 5733748d19f..5504dc248a5 100644 --- a/src/mame/audio/taito_en.h +++ b/src/mame/audio/taito_en.h @@ -5,6 +5,10 @@ Taito Ensoniq ES5505-based sound hardware ****************************************************************************/ +#ifndef MAME_AUDIO_TAITO_EN_H +#define MAME_AUDIO_TAITO_EN_H + +#pragma once #include "cpu/m68000/m68000.h" #include "sound/es5506.h" @@ -16,7 +20,6 @@ class taito_en_device : public device_t { public: taito_en_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~taito_en_device() {} DECLARE_READ8_MEMBER( en_68000_share_r ); DECLARE_WRITE8_MEMBER( en_68000_share_w ); @@ -56,4 +59,6 @@ private: uint8_t m_es5510_ram_sel; }; -extern const device_type TAITO_EN; +DECLARE_DEVICE_TYPE(TAITO_EN, taito_en_device) + +#endif // MAME_AUDIO_TAITO_EN_H diff --git a/src/mame/audio/taito_zm.cpp b/src/mame/audio/taito_zm.cpp index a29f1aea9b4..02ad6318778 100644 --- a/src/mame/audio/taito_zm.cpp +++ b/src/mame/audio/taito_zm.cpp @@ -31,14 +31,14 @@ TODO: /**************************************************************************/ -const device_type TAITO_ZOOM = device_creator; +DEFINE_DEVICE_TYPE(TAITO_ZOOM, taito_zoom_device, "taito_zoom", "Taito Zoom Sound System") //------------------------------------------------- // taito_zoom_device - constructor //------------------------------------------------- taito_zoom_device::taito_zoom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TAITO_ZOOM, "Taito Zoom Sound System", tag, owner, clock, "taito_zoom", __FILE__), + : device_t(mconfig, TAITO_ZOOM, tag, owner, clock), m_soundcpu(*this, ":mn10200"), m_zsg2(*this, ":zsg2"), m_reg_address(0), diff --git a/src/mame/audio/taito_zm.h b/src/mame/audio/taito_zm.h index 353cb898f54..2c02599efe9 100644 --- a/src/mame/audio/taito_zm.h +++ b/src/mame/audio/taito_zm.h @@ -5,6 +5,10 @@ Taito Zoom ZSG-2 sound board ***************************************************************************/ +#ifndef MAME_AUDIO_TAITO_ZM_H +#define MAME_AUDIO_TAITO_ZM_H + +#pragma once #include "cpu/mn10200/mn10200.h" #include "cpu/tms57002/tms57002.h" @@ -17,7 +21,6 @@ class taito_zoom_device : public device_t { public: taito_zoom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~taito_zoom_device() {} DECLARE_WRITE16_MEMBER(sound_irq_w); DECLARE_READ16_MEMBER(sound_irq_r); @@ -45,9 +48,11 @@ private: std::unique_ptr m_snd_shared_ram; }; -extern const device_type TAITO_ZOOM; +DECLARE_DEVICE_TYPE(TAITO_ZOOM, taito_zoom_device) MACHINE_CONFIG_EXTERN( taito_zoom_sound ); #define MCFG_TAITO_ZOOM_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, TAITO_ZOOM, 0) + +#endif // MAME_AUDIO_TAITO_ZM_H diff --git a/src/mame/audio/taitosnd.cpp b/src/mame/audio/taitosnd.cpp index 2f885674d66..6dc984d925e 100644 --- a/src/mame/audio/taitosnd.cpp +++ b/src/mame/audio/taitosnd.cpp @@ -11,9 +11,10 @@ **********************************************************************************************/ #include "emu.h" -#include "cpu/z80/z80.h" #include "taitosnd.h" +#include "cpu/z80/z80.h" + /********************************************************************************************** @@ -29,7 +30,7 @@ // device type definition -const device_type TC0140SYT = device_creator; +DEFINE_DEVICE_TYPE(TC0140SYT, tc0140syt_device, "tc0140syt", "Taito TC0140SYT") //************************************************************************** @@ -41,7 +42,7 @@ const device_type TC0140SYT = device_creator; //------------------------------------------------- tc0140syt_device::tc0140syt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0140SYT, "Taito TC0140SYT", tag, owner, clock, "tc0140syt", __FILE__) + : device_t(mconfig, TC0140SYT, tag, owner, clock) , m_mainmode(0) , m_submode(0) , m_status(0) diff --git a/src/mame/audio/taitosnd.h b/src/mame/audio/taitosnd.h index e6f20e1bec1..3738575cb02 100644 --- a/src/mame/audio/taitosnd.h +++ b/src/mame/audio/taitosnd.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Philip Bennett -#ifndef __TAITOSND_H__ -#define __TAITOSND_H__ +#ifndef MAME_AUDIO_TAITOSND_H +#define MAME_AUDIO_TAITOSND_H //************************************************************************** @@ -25,7 +25,6 @@ class tc0140syt_device : public device_t { public: tc0140syt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0140syt_device() { } static void set_master_tag(device_t &device, const char *tag) { downcast(device).m_mastercpu.set_tag(tag); } static void set_slave_tag(device_t &device, const char *tag) { downcast(device).m_slavecpu.set_tag(tag); } @@ -59,7 +58,7 @@ private: required_device m_slavecpu; /* this is the audiocpu */ }; -extern const device_type TC0140SYT; +DECLARE_DEVICE_TYPE(TC0140SYT, tc0140syt_device) -#endif /*__TAITOSND_H__*/ +#endif // MAME_AUDIO_TAITOSND_H diff --git a/src/mame/audio/tiamc1.cpp b/src/mame/audio/tiamc1.cpp index 3be08b7b551..09ac9e8aa4a 100644 --- a/src/mame/audio/tiamc1.cpp +++ b/src/mame/audio/tiamc1.cpp @@ -34,7 +34,7 @@ ***************************************************************************/ #include "emu.h" -#include "includes/tiamc1.h" +#include "audio/tiamc1.h" #define CLOCK_DIVIDER 16 #define BUF_LEN 100000 @@ -46,7 +46,7 @@ // device type definition -const device_type TIAMC1 = device_creator; +DEFINE_DEVICE_TYPE(TIAMC1, tiamc1_sound_device, "tiamc1_sound", "TIA-MC1 Audio Custom") //************************************************************************** @@ -58,7 +58,7 @@ const device_type TIAMC1 = device_creator; //------------------------------------------------- tiamc1_sound_device::tiamc1_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TIAMC1, "TIA-MC1 Audio Custom", tag, owner, clock, "tiamc1_sound", __FILE__), + : device_t(mconfig, TIAMC1, tag, owner, clock), device_sound_interface(mconfig, *this), m_channel(nullptr), m_timer1_divider(0) diff --git a/src/mame/audio/tiamc1.h b/src/mame/audio/tiamc1.h new file mode 100644 index 00000000000..638d6caefc4 --- /dev/null +++ b/src/mame/audio/tiamc1.h @@ -0,0 +1,67 @@ +// license:BSD-3-Clause +// copyright-holders:Eugene Sandulenko +#ifndef MAME_AUDIO_TIAMC1_H +#define MAME_AUDIO_TIAMC1_H + +#pragma once + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> tiamc1_sound_device + +class tiamc1_sound_device : public device_t, public device_sound_interface +{ +public: + tiamc1_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER( tiamc1_timer0_w ); + DECLARE_WRITE8_MEMBER( tiamc1_timer1_w ); + DECLARE_WRITE8_MEMBER( tiamc1_timer1_gate_w ); + +protected: + // device-level overrides + virtual void device_start() override; + + // sound stream update overrides + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + +private: + struct timer8253chan + { + timer8253chan() { } + + uint16_t count = 0; + uint16_t cnval = 0; + uint8_t bcdMode = 0; + uint8_t cntMode = 0; + uint8_t valMode = 0; + uint8_t gate = 0; + uint8_t output = 0; + uint8_t loadCnt = 0; + uint8_t enable = 0; + }; + + struct timer8253struct + { + struct timer8253chan channel[3]; + }; + + + void timer8253_reset(struct timer8253struct *t); + void timer8253_tick(struct timer8253struct *t,int chn); + void timer8253_wr(struct timer8253struct *t, int reg, uint8_t val); + char timer8253_get_output(struct timer8253struct *t, int chn); + void timer8253_set_gate(struct timer8253struct *t, int chn, uint8_t gate); + + sound_stream *m_channel; + int m_timer1_divider; + + timer8253struct m_timer0; + timer8253struct m_timer1; +}; + +DECLARE_DEVICE_TYPE(TIAMC1, tiamc1_sound_device) + +#endif // MAME_AUDIO_TIAMC1_H diff --git a/src/mame/audio/timeplt.cpp b/src/mame/audio/timeplt.cpp index e27f3b32c3a..fe8663c41da 100644 --- a/src/mame/audio/timeplt.cpp +++ b/src/mame/audio/timeplt.cpp @@ -22,12 +22,12 @@ #define MASTER_CLOCK XTAL_14_31818MHz -const device_type TIMEPLT_AUDIO = device_creator; +DEFINE_DEVICE_TYPE(TIMEPLT_AUDIO, timeplt_audio_device, "timplt_audio", "Time Pilot Audio") timeplt_audio_device::timeplt_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TIMEPLT_AUDIO, "Time Pilot Audio", tag, owner, clock, "timeplt_audio", __FILE__), - device_sound_interface(mconfig, *this), - m_last_irq_state(0) + : device_t(mconfig, TIMEPLT_AUDIO, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_last_irq_state(0) { } @@ -100,7 +100,7 @@ void timeplt_audio_device::filter_w( device_t *device, int data ) if (data & 2) C += 47000; /* 47000pF = 0.047uF */ - dynamic_cast(device)->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 5100, 0, CAP_P(C)); + downcast(device)->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 5100, 0, CAP_P(C)); } diff --git a/src/mame/audio/timeplt.h b/src/mame/audio/timeplt.h index abe88e3360c..98fab24a429 100644 --- a/src/mame/audio/timeplt.h +++ b/src/mame/audio/timeplt.h @@ -1,15 +1,18 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria +#ifndef MAME_AUDIO_TIMEPLT_H +#define MAME_AUDIO_TIMEPLT_H + +#pragma once + #include "cpu/z80/z80.h" #include "sound/ay8910.h" #include "sound/flt_rc.h" -class timeplt_audio_device : public device_t, - public device_sound_interface +class timeplt_audio_device : public device_t, public device_sound_interface { public: timeplt_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~timeplt_audio_device() {} DECLARE_WRITE8_MEMBER( sh_irqtrigger_w ); DECLARE_WRITE8_MEMBER( filter_w ); @@ -40,4 +43,6 @@ private: MACHINE_CONFIG_EXTERN( timeplt_sound ); MACHINE_CONFIG_EXTERN( locomotn_sound ); -extern const device_type TIMEPLT_AUDIO; +DECLARE_DEVICE_TYPE(TIMEPLT_AUDIO, timeplt_audio_device) + +#endif // MAME_AUDIO_TIMEPLT_H diff --git a/src/mame/audio/trackfld.cpp b/src/mame/audio/trackfld.cpp index 389ec21479b..598d6775a0a 100644 --- a/src/mame/audio/trackfld.cpp +++ b/src/mame/audio/trackfld.cpp @@ -11,13 +11,13 @@ -const device_type TRACKFLD_AUDIO = device_creator; +DEFINE_DEVICE_TYPE(TRACKFLD_AUDIO, trackfld_audio_device, "trackfld_audio", "Track And Field Audio") trackfld_audio_device::trackfld_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TRACKFLD_AUDIO, "Track And Field Audio", tag, owner, clock, "trackfld_audio", __FILE__), - device_sound_interface(mconfig, *this), - m_last_addr(0), - m_last_irq(0) + : device_t(mconfig, TRACKFLD_AUDIO, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_last_addr(0) + , m_last_irq(0) { } diff --git a/src/mame/audio/trackfld.h b/src/mame/audio/trackfld.h index 908e28787de..c1819437b70 100644 --- a/src/mame/audio/trackfld.h +++ b/src/mame/audio/trackfld.h @@ -1,14 +1,17 @@ // license:BSD-3-Clause // copyright-holders:Chris Hardy +#ifndef MAME_AUDIO_TRACKFLD_H +#define MAME_AUDIO_TRACKFLD_H + +#pragma once + #include "sound/vlm5030.h" #include "cpu/m6800/m6800.h" -class trackfld_audio_device : public device_t, - public device_sound_interface +class trackfld_audio_device : public device_t, public device_sound_interface { public: trackfld_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~trackfld_audio_device() {} DECLARE_WRITE8_MEMBER(konami_sh_irqtrigger_w ); DECLARE_READ8_MEMBER(trackfld_sh_timer_r ); @@ -34,4 +37,6 @@ private: vlm5030_device *m_vlm; }; -extern const device_type TRACKFLD_AUDIO; +DECLARE_DEVICE_TYPE(TRACKFLD_AUDIO, trackfld_audio_device) + +#endif // MAME_AUDIO_TRACKFLD_H diff --git a/src/mame/audio/triplhnt.cpp b/src/mame/audio/triplhnt.cpp index 1055a3f821b..ccd478ceb10 100644 --- a/src/mame/audio/triplhnt.cpp +++ b/src/mame/audio/triplhnt.cpp @@ -2,7 +2,7 @@ // copyright-holders:Derrick Renaud /************************************************************************* - audio\triplhnt.c + audio\triplhnt.cpp *************************************************************************/ #include "emu.h" diff --git a/src/mame/audio/turrett.cpp b/src/mame/audio/turrett.cpp index 379907093f6..8fa19efdb72 100644 --- a/src/mame/audio/turrett.cpp +++ b/src/mame/audio/turrett.cpp @@ -9,7 +9,7 @@ #include "emu.h" #include "includes/turrett.h" -const device_type TURRETT = device_creator; +DEFINE_DEVICE_TYPE(TURRETT, turrett_device, "ttsnd", "Turret Tower Sound") //------------------------------------------------- @@ -17,10 +17,10 @@ const device_type TURRETT = device_creator; //------------------------------------------------- turrett_device::turrett_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TURRETT, "Turret Tower Sound", tag, owner, clock, "ttsnd", __FILE__), - device_sound_interface(mconfig, *this), - device_memory_interface(mconfig, *this), - m_space_config("ttsound", ENDIANNESS_LITTLE, 16, 28, 0, nullptr) + : device_t(mconfig, TURRETT, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , device_memory_interface(mconfig, *this) + , m_space_config("ttsound", ENDIANNESS_LITTLE, 16, 28, 0, nullptr) { } diff --git a/src/mame/audio/tvc.cpp b/src/mame/audio/tvc.cpp index 693de81fb18..0c4a70d22b6 100644 --- a/src/mame/audio/tvc.cpp +++ b/src/mame/audio/tvc.cpp @@ -10,14 +10,14 @@ #include "tvc.h" // device type definition -const device_type TVC_SOUND = device_creator; +DEFINE_DEVICE_TYPE(TVC_SOUND, tvc_sound_device, "tvc_sound", "TVC 64 Audio Custom") //------------------------------------------------- // tvc_sound_device - constructor //------------------------------------------------- tvc_sound_device::tvc_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, TVC_SOUND, "TVC 64 Audio Custom", tag, owner, clock, "tvc_sound", __FILE__), + device_t(mconfig, TVC_SOUND, tag, owner, clock), device_sound_interface(mconfig, *this), m_write_sndint(*this) { diff --git a/src/mame/audio/tvc.h b/src/mame/audio/tvc.h index 00fb29e899e..fed6d7f467c 100644 --- a/src/mame/audio/tvc.h +++ b/src/mame/audio/tvc.h @@ -6,10 +6,10 @@ * ****************************************************************************/ -#pragma once +#ifndef MAME_AUDIO_TVC_H +#define MAME_AUDIO_TVC_H -#ifndef _TVC_SND_H_ -#define _TVC_SND_H_ +#pragma once #define MCFG_TVC_SOUND_SNDINT_CALLBACK(_write) \ devcb = &tvc_sound_device::set_sndint_wr_callback(*device, DEVCB_##_write); @@ -20,14 +20,13 @@ // ======================> tvc_sound_device -class tvc_sound_device : public device_t, - public device_sound_interface +class tvc_sound_device : public device_t, public device_sound_interface { public: // construction/destruction tvc_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_sndint_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_sndint.set_callback(object); } + template static devcb_base &set_sndint_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_sndint.set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER(write); void reset_divider(); @@ -55,5 +54,6 @@ private: // device type definition extern const device_type TVC_SOUND; +DECLARE_DEVICE_TYPE(TVC_SOUND, tvc_sound_device) -#endif +#endif // MAME_AUDIO_TVC_H diff --git a/src/mame/audio/tx1.cpp b/src/mame/audio/tx1.cpp index a8e3d53e4d1..f462fb20b31 100644 --- a/src/mame/audio/tx1.cpp +++ b/src/mame/audio/tx1.cpp @@ -7,9 +7,10 @@ ***************************************************************************/ #include "emu.h" +#include "includes/tx1.h" + #include "sound/ay8910.h" #include "video/resnet.h" -#include "includes/tx1.h" /************************************* @@ -51,16 +52,15 @@ static const double tx1_engine_gains[16] = }; -const device_type TX1 = device_creator; +DEFINE_DEVICE_TYPE(TX1, tx1_sound_device, "tx1_sound", "TX-1 Audio Custom") tx1_sound_device::tx1_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TX1, "TX-1 Audio Custom", tag, owner, clock, "tx1_sound", __FILE__), - device_sound_interface(mconfig, *this) + : tx1_sound_device(mconfig, TX1, tag, owner, clock) { } -tx1_sound_device::tx1_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +tx1_sound_device::tx1_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), device_sound_interface(mconfig, *this), m_stream(nullptr), m_freq_to_step(0), @@ -335,10 +335,10 @@ static const double bb_engine_gains[16] = -1.0/(1.0/(BUGGYBOY_R1S + BUGGYBOY_R2S + BUGGYBOY_R3S + BUGGYBOY_R4S) + 1.0/100e3)/100e3, }; -const device_type BUGGYBOY = device_creator; +DEFINE_DEVICE_TYPE(BUGGYBOY, buggyboy_sound_device, "buggyboy_sound", "Buggy Boy Audio Custom") buggyboy_sound_device::buggyboy_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tx1_sound_device(mconfig, BUGGYBOY, "Buggy Boy Audio Custom", tag, owner, clock, "buggyboy_sound", __FILE__) + : tx1_sound_device(mconfig, BUGGYBOY, tag, owner, clock) { } diff --git a/src/mame/audio/vboy.cpp b/src/mame/audio/vboy.cpp index 707fdf8ce3c..38755b9208e 100644 --- a/src/mame/audio/vboy.cpp +++ b/src/mame/audio/vboy.cpp @@ -11,7 +11,7 @@ #include "vboy.h" // device type definition -const device_type VBOYSND = device_creator; +DEFINE_DEVICE_TYPE(VBOYSND, vboysnd_device, "vboysnd", "Virtual Boy Audio") //#define LAME_COMPILER_BUG @@ -196,8 +196,8 @@ static inline void mputb(uint8_t *ptr, int8_t data) { *ptr = data; } //------------------------------------------------- vboysnd_device::vboysnd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VBOYSND, "Virtual Boy audio", tag, owner, clock, "vboysnd", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, VBOYSND, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } diff --git a/src/mame/audio/vboy.h b/src/mame/audio/vboy.h index fce19d5b5b4..72793b66404 100644 --- a/src/mame/audio/vboy.h +++ b/src/mame/audio/vboy.h @@ -6,72 +6,33 @@ By Richard Bannister and Gil Pedersen. MESS device adaptation by R. Belmont */ +#ifndef MAME_AUDIO_VBOY_H +#define MAME_AUDIO_VBOY_H #pragma once -#ifndef __VBOY_SND_H__ -#define __VBOY_SND_H__ - -//************************************************************************** -// CONSTANTS -//************************************************************************** - -#define AUDIO_FREQ 44100 -#define CHANNELS 4 //************************************************************************** // INTERFACE CONFIGURATION MACROS //************************************************************************** #define MCFG_VBOYSND_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, VBOYSND, AUDIO_FREQ) + MCFG_DEVICE_ADD(_tag, VBOYSND, vboysnd_device::AUDIO_FREQ) #define MCFG_VBOYSND_REPLACE(_tag) \ - MCFG_DEVICE_REPLACE(_tag, VBOYSND, AUDIO_FREQ) + MCFG_DEVICE_REPLACE(_tag, VBOYSND, vboysnd_device::AUDIO_FREQ) //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -struct s_snd_channel { - int8_t playing; // the sound is playing - - // state when sound was enabled - uint32_t env_steptime; // Envelope step time - uint8_t env0; // Envelope data - uint8_t env1; // Envelope data - uint8_t volLeft; // Left output volume - uint8_t volRight; // Right output volume - uint8_t sample[580]; // sample to play - int sample_len; // length of sample - - // values that change, as the sample is played - int offset; // current offset in sample - int time; // the duration that this sample is to be played - uint8_t envelope; // Current envelope level (604) - int env_time; // The duration between envelope decay/grow (608) -}; - -struct s_regchan { - int32_t sINT; - int32_t sLRV; - int32_t sFQL; - int32_t sFQH; - int32_t sEV0; - int32_t sEV1; - int32_t sRAM; -}; - -struct s_sreg { - // Sound registers structure - s_regchan c[4]; -}; - // ======================> vboysnd_device class vboysnd_device : public device_t, public device_sound_interface { public: + static constexpr unsigned AUDIO_FREQ = 44100; + // construction/destruction vboysnd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -81,6 +42,42 @@ public: sound_stream *m_stream; protected: + static constexpr unsigned CHANNELS = 4; + + struct s_snd_channel { + int8_t playing; // the sound is playing + + // state when sound was enabled + uint32_t env_steptime; // Envelope step time + uint8_t env0; // Envelope data + uint8_t env1; // Envelope data + uint8_t volLeft; // Left output volume + uint8_t volRight; // Right output volume + uint8_t sample[580]; // sample to play + int sample_len; // length of sample + + // values that change, as the sample is played + int offset; // current offset in sample + int time; // the duration that this sample is to be played + uint8_t envelope; // Current envelope level (604) + int env_time; // The duration between envelope decay/grow (608) + }; + + struct s_regchan { + int32_t sINT; + int32_t sLRV; + int32_t sFQL; + int32_t sFQH; + int32_t sEV0; + int32_t sEV1; + int32_t sRAM; + }; + + struct s_sreg { + // Sound registers structure + s_regchan c[4]; + }; + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -100,6 +97,6 @@ protected: }; // device type definition -extern const device_type VBOYSND; +DECLARE_DEVICE_TYPE(VBOYSND, vboysnd_device) -#endif //__VBOY_SND_H__ +#endif //MAME_AUDIO_VBOY_H diff --git a/src/mame/audio/vc4000.cpp b/src/mame/audio/vc4000.cpp index cb00aa57d8c..3d0b921fd32 100644 --- a/src/mame/audio/vc4000.cpp +++ b/src/mame/audio/vc4000.cpp @@ -11,17 +11,17 @@ #include "vc4000.h" -const device_type VC4000_SND = device_creator; +DEFINE_DEVICE_TYPE(VC4000_SND, vc4000_sound_device, "vc4000_sound", "Interton Electronic VC 4000 Audio Custom") vc4000_sound_device::vc4000_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VC4000_SND, "Intertion Electronic VC 4000 Audio Custom", tag, owner, clock, "vc4000_sound", __FILE__), - device_sound_interface(mconfig, *this), - m_channel(nullptr), - m_size(0), - m_pos(0), - m_level(0) + : device_t(mconfig, VC4000_SND, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_channel(nullptr) + , m_reg{ 0 } + , m_size(0) + , m_pos(0) + , m_level(0) { - memset(m_reg, 0, sizeof(uint8_t)*1); } diff --git a/src/mame/audio/vc4000.h b/src/mame/audio/vc4000.h index ab62a5e5965..e906dc601c4 100644 --- a/src/mame/audio/vc4000.h +++ b/src/mame/audio/vc4000.h @@ -6,9 +6,10 @@ * ****************************************************************************/ -#ifndef _VC4000SND_H_ -#define _VC4000SND_H_ +#ifndef MAME_AUDIO_VC4000_H +#define MAME_AUDIO_VC4000_H +#pragma once //************************************************************************** // TYPE DEFINITIONS @@ -16,8 +17,7 @@ // ======================> vc4000_sound_device -class vc4000_sound_device : public device_t, - public device_sound_interface +class vc4000_sound_device : public device_t, public device_sound_interface { public: vc4000_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -41,6 +41,6 @@ private: unsigned m_level; }; -extern const device_type VC4000_SND; +DECLARE_DEVICE_TYPE(VC4000_SND, vc4000_sound_device) -#endif /* _VC4000SND_H_ */ +#endif // MAME_AUDIO_VC4000_H diff --git a/src/mame/audio/vicdual-97271p.cpp b/src/mame/audio/vicdual-97271p.cpp new file mode 100644 index 00000000000..1819ef96e90 --- /dev/null +++ b/src/mame/audio/vicdual-97271p.cpp @@ -0,0 +1,207 @@ +// license:BSD-3-Clause +// copyright-holders:Ariane Fugmann + +/* +N-Sub Oscillator 97271-P +----------------------------- +for the time being this is a simple sample player based on the work by MASH. +*/ + +#include "emu.h" +#include "speaker.h" +#include "audio/vicdual-97271p.h" + +#define S97271P_TAG "s97271p" + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +DEFINE_DEVICE_TYPE(S97271P, s97271p_device, "s97271p", "N-Sub Oscillator 97271-P") + +/* bit definitions - sound effect drive outputs */ +#define S97271P_WARNING 0x01 +#define S97271P_SONAR 0x02 +#define S97271P_LAUNCH 0x04 +#define S97271P_EXPL_L 0x08 +#define S97271P_EXPL_S 0x10 +#define S97271P_BONUS 0x20 +#define S97271P_CODE 0x40 +#define S97271P_BOAT 0x80 + +/* sample file names */ +static const char *const nsub_sample_names[] = +{ + "*nsub", + "SND_EXPL_L0", + "SND_EXPL_L1", + "SND_SONAR", + "SND_LAUNCH0", + "SND_LAUNCH1", + "SND_WARNING0", + "SND_WARNING1", + "SND_EXPL_S0", + "SND_EXPL_S1", + "SND_BONUS0", + "SND_BONUS1", + "SND_CODE", + "SND_BOAT", + nullptr +}; + +/* sample ids - must match sample file name table above */ +enum +{ + SND_EXPL_L0 = 0, + SND_EXPL_L1, + SND_SONAR, + SND_LAUNCH0, + SND_LAUNCH1, + SND_WARNING0, + SND_WARNING1, + SND_EXPL_S0, + SND_EXPL_S1, + SND_BONUS0, + SND_BONUS1, + SND_CODE, + SND_BOAT +}; + + +//************************************************************************** +// MACHINE FRAGMENTS +//************************************************************************** + +static MACHINE_CONFIG_FRAGMENT( nsub_audio ) + MCFG_SPEAKER_STANDARD_MONO("mono") + + /* samples */ + MCFG_SOUND_ADD("samples", SAMPLES, 0) + MCFG_SAMPLES_CHANNELS(13) + MCFG_SAMPLES_NAMES(nsub_sample_names) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) +MACHINE_CONFIG_END + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// s97271p_device - constructor +//------------------------------------------------- + +s97271p_device::s97271p_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, S97271P, tag, owner, clock), + m_samples(*this, "samples") +{ +} + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor s97271p_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( nsub_audio ); +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void s97271p_device::device_start() +{ + save_item(NAME(m_state)); +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void s97271p_device::device_reset() +{ + m_state = 0xff; +} + +void s97271p_device::port_w(uint8_t data) +{ + uint8_t bitsChanged = m_state ^ data; + uint8_t bitsGoneHigh = bitsChanged & data; + uint8_t bitsGoneLow = bitsChanged & ~data; + m_state = data; + + if (bitsGoneLow & S97271P_WARNING) + { + m_samples->start(SND_WARNING0, SND_WARNING0, 1); + m_samples->stop(SND_WARNING1); + } else if (bitsGoneHigh & S97271P_WARNING) + { + m_samples->start(SND_WARNING1, SND_WARNING1, 0); + m_samples->stop(SND_WARNING0); + } + + if (bitsGoneLow & S97271P_SONAR) + { + m_samples->start(SND_SONAR, SND_SONAR, 1); + } else if (bitsGoneHigh & S97271P_SONAR) + { + m_samples->stop(SND_SONAR); + } + + if (bitsGoneLow & S97271P_LAUNCH) + { + m_samples->start(SND_LAUNCH0, SND_LAUNCH0, 1); + m_samples->stop(SND_LAUNCH1); + } else if (bitsGoneHigh & S97271P_LAUNCH) + { + m_samples->start(SND_LAUNCH1, SND_LAUNCH1, 0); + m_samples->stop(SND_LAUNCH0); + } + + if (bitsGoneLow & S97271P_EXPL_L) + { + m_samples->start(SND_EXPL_L0, SND_EXPL_L0, 1); + m_samples->stop(SND_EXPL_L1); + } else if (bitsGoneHigh & S97271P_EXPL_L) + { + m_samples->start(SND_EXPL_L1, SND_EXPL_L1, 0); + m_samples->stop(SND_EXPL_L0); + } + + if (bitsGoneLow & S97271P_EXPL_S) + { + m_samples->start(SND_EXPL_S0, SND_EXPL_S0, 1); + m_samples->stop(SND_EXPL_S1); + } else if (bitsGoneHigh & S97271P_EXPL_S) + { + m_samples->start(SND_EXPL_S1, SND_EXPL_S1, 0); + m_samples->stop(SND_EXPL_S0); + } + + if (bitsGoneLow & S97271P_BONUS) + { + m_samples->start(SND_BONUS0, SND_BONUS0, 1); + m_samples->stop(SND_BONUS1); + } else if (bitsGoneHigh & S97271P_BONUS) + { + m_samples->start(SND_BONUS1, SND_BONUS1, 0); + m_samples->stop(SND_BONUS0); + } + + if (bitsGoneLow & S97271P_CODE) + { + m_samples->start(SND_CODE, SND_CODE, 1); + } else if (bitsGoneHigh & S97271P_CODE) + { + m_samples->stop(SND_CODE); + } + + if (bitsGoneLow & S97271P_BOAT) + { + m_samples->start(SND_BOAT, SND_BOAT, 1); + } else if (bitsGoneHigh & S97271P_BOAT) + { + m_samples->stop(SND_BOAT); + } +} diff --git a/src/mame/audio/vicdual-97271p.h b/src/mame/audio/vicdual-97271p.h new file mode 100644 index 00000000000..78bce842084 --- /dev/null +++ b/src/mame/audio/vicdual-97271p.h @@ -0,0 +1,43 @@ +// license:BSD-3-Clause +// copyright-holders:Ariane Fugmann +#ifndef MAME_AUDIO_VICDUAL_97271P_H +#define MAME_AUDIO_VICDUAL_97271P_H + +#pragma once + +#include "sound/samples.h" + +#define MCFG_S97271P_ADD(_tag ) \ + MCFG_DEVICE_ADD(_tag, S97271P, 0) + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class s97271p_device : public device_t +{ +public: + // construction/destruction + s97271p_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const override; + + // daughterboard logic + void port_w(uint8_t data); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + +private: + required_device m_samples; + + uint8_t m_state; +}; + +// device type definition +DECLARE_DEVICE_TYPE(S97271P, s97271p_device) + +#endif // MAME_AUDIO_VICDUAL_97271P_H diff --git a/src/mame/audio/warpwarp.cpp b/src/mame/audio/warpwarp.cpp index 301a99de38c..bd8490e49b7 100644 --- a/src/mame/audio/warpwarp.cpp +++ b/src/mame/audio/warpwarp.cpp @@ -16,10 +16,10 @@ #define CLOCK_1V (18432000/3/2/384) -const device_type WARPWARP = device_creator; +DEFINE_DEVICE_TYPE(WARPWARP, warpwarp_sound_device, "warpwarp_sound", "Warp Warp Audio Custom") warpwarp_sound_device::warpwarp_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, WARPWARP, "Warp Warp Audio Custom", tag, owner, clock, "warpwarp_sound", __FILE__), + : device_t(mconfig, WARPWARP, tag, owner, clock), device_sound_interface(mconfig, *this), m_decay(nullptr), m_channel(nullptr), diff --git a/src/mame/audio/warpwarp.h b/src/mame/audio/warpwarp.h index a4e96df0dde..9cf2343e1bd 100644 --- a/src/mame/audio/warpwarp.h +++ b/src/mame/audio/warpwarp.h @@ -1,8 +1,12 @@ // license:BSD-3-Clause // copyright-holders:Allard van der Bas +#ifndef MAME_AUDIO_WARPWARP_H +#define MAME_AUDIO_WARPWARP_H -class warpwarp_sound_device : public device_t, - public device_sound_interface +#pragma once + + +class warpwarp_sound_device : public device_t, public device_sound_interface { public: warpwarp_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -48,4 +52,6 @@ private: int m_mcount; }; -extern const device_type WARPWARP; +DECLARE_DEVICE_TYPE(WARPWARP, warpwarp_sound_device) + +#endif // MAME_AUDIO_WARPWARP_H diff --git a/src/mame/audio/williams.cpp b/src/mame/audio/williams.cpp index 8b5021daeb4..9095683eae1 100644 --- a/src/mame/audio/williams.cpp +++ b/src/mame/audio/williams.cpp @@ -56,9 +56,9 @@ // GLOBAL VARIABLES //************************************************************************** -const device_type WILLIAMS_NARC_SOUND = device_creator; -const device_type WILLIAMS_CVSD_SOUND = device_creator; -const device_type WILLIAMS_ADPCM_SOUND = device_creator; +DEFINE_DEVICE_TYPE(WILLIAMS_CVSD_SOUND, williams_cvsd_sound_device, "wmscvsd", "Williams CVSD Sound Board") +DEFINE_DEVICE_TYPE(WILLIAMS_NARC_SOUND, williams_narc_sound_device, "wmsnarc", "Williams NARC Sound Board") +DEFINE_DEVICE_TYPE(WILLIAMS_ADPCM_SOUND, williams_adpcm_sound_device, "wmsadpcm", "Williams ADPCM Sound Board") @@ -71,7 +71,7 @@ const device_type WILLIAMS_ADPCM_SOUND = device_creator; +DEFINE_DEVICE_TYPE(WIPING, wiping_sound_device, "wiping_sound", "Wiping Audio Custom") wiping_sound_device::wiping_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, WIPING, "Wiping Audio Custom", tag, owner, clock, "wiping_sound", __FILE__), - device_sound_interface(mconfig, *this), + : device_t(mconfig, WIPING, tag, owner, clock), + device_sound_interface(mconfig, *this), m_last_channel(nullptr), m_sound_prom(nullptr), m_sound_rom(nullptr), diff --git a/src/mame/audio/wiping.h b/src/mame/audio/wiping.h index 5c9df701148..11924852bd9 100644 --- a/src/mame/audio/wiping.h +++ b/src/mame/audio/wiping.h @@ -1,25 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Allard van der Bas -/* 8 voices max */ -#define MAX_VOICES 8 +#ifndef MAME_AUDIO_WIPING_H +#define MAME_AUDIO_WIPING_H -/* this structure defines the parameters for a channel */ -struct wp_sound_channel -{ - int frequency; - int counter; - int volume; - const uint8_t *wave; - int oneshot; - int oneshotplaying; -}; +#pragma once -class wiping_sound_device : public device_t, - public device_sound_interface +class wiping_sound_device : public device_t, public device_sound_interface { public: wiping_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~wiping_sound_device() {} DECLARE_WRITE8_MEMBER( sound_w ); @@ -31,6 +20,20 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: + /* 8 voices max */ + static constexpr unsigned MAX_VOICES = 8; + + /* this structure defines the parameters for a channel */ + struct wp_sound_channel + { + int frequency; + int counter; + int volume; + const uint8_t *wave; + int oneshot; + int oneshotplaying; + }; + // internal state /* data about the sound system */ @@ -55,4 +58,6 @@ private: void make_mixer_table(int voices, int gain); }; -extern const device_type WIPING; +DECLARE_DEVICE_TYPE(WIPING, wiping_sound_device) + +#endif // MAME_AUDIO_WIPING_H diff --git a/src/mame/audio/wpcsnd.cpp b/src/mame/audio/wpcsnd.cpp index 481ca882529..508d89cf027 100644 --- a/src/mame/audio/wpcsnd.cpp +++ b/src/mame/audio/wpcsnd.cpp @@ -14,18 +14,18 @@ #define LOG_WPCSND (0) -const device_type WPCSND = device_creator; +DEFINE_DEVICE_TYPE(WPCSND, wpcsnd_device, "wpcsnd", "Williams WPC Sound") wpcsnd_device::wpcsnd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig,WPCSND,"Williams WPC Sound",tag,owner,clock, "wpcsnd", __FILE__), - device_mixer_interface(mconfig, *this), - m_cpu(*this, "bgcpu"), - m_ym2151(*this, "ym2151"), - m_hc55516(*this, "hc55516"), - m_cpubank(*this, "rombank"), - m_fixedbank(*this, "fixed"), - m_rom(*this, finder_base::DUMMY_TAG), - m_reply_cb(*this) + : device_t(mconfig, WPCSND, tag, owner, clock) + , device_mixer_interface(mconfig, *this) + , m_cpu(*this, "bgcpu") + , m_ym2151(*this, "ym2151") + , m_hc55516(*this, "hc55516") + , m_cpubank(*this, "rombank") + , m_fixedbank(*this, "fixed") + , m_rom(*this, finder_base::DUMMY_TAG) + , m_reply_cb(*this) { } diff --git a/src/mame/audio/wpcsnd.h b/src/mame/audio/wpcsnd.h index f0eab0ce220..74dfd752ea0 100644 --- a/src/mame/audio/wpcsnd.h +++ b/src/mame/audio/wpcsnd.h @@ -6,8 +6,10 @@ * Created on: 4/10/2013 */ -#ifndef WPCSND_H_ -#define WPCSND_H_ +#ifndef MAME_AUDIO_WPCSND_H +#define MAME_AUDIO_WPCSND_H + +#pragma once #include "cpu/m6809/m6809.h" #include "sound/ym2151.h" @@ -51,7 +53,7 @@ public: static void static_set_romregion(device_t &device, const char *tag); // callbacks - template void set_reply_callback(_reply reply) { m_reply_cb.set_callback(reply); } + template void set_reply_callback(Reply &&cb) { m_reply_cb.set_callback(std::forward(cb)); } protected: // overrides @@ -68,6 +70,6 @@ private: devcb_write_line m_reply_cb; }; -extern const device_type WPCSND; +DECLARE_DEVICE_TYPE(WPCSND, wpcsnd_device) -#endif /* WPCSND_H_ */ +#endif // MAME_AUDIO_WPCSND_H diff --git a/src/mame/audio/wswan.cpp b/src/mame/audio/wswan.cpp index 1459acdc390..acd698eea1c 100644 --- a/src/mame/audio/wswan.cpp +++ b/src/mame/audio/wswan.cpp @@ -18,7 +18,7 @@ The noise taps and behavior are the same as the Virtual Boy. // device type definition -const device_type WSWAN_SND = device_creator; +DEFINE_DEVICE_TYPE(WSWAN_SND, wswan_sound_device, "wswan_sound", "WonderSwan Audio Custom") //************************************************************************** @@ -30,7 +30,7 @@ const device_type WSWAN_SND = device_creator; //------------------------------------------------- wswan_sound_device::wswan_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, WSWAN_SND, "WonderSwan Audio Custom", tag, owner, clock, "wswan_sound", __FILE__), + : device_t(mconfig, WSWAN_SND, tag, owner, clock), device_sound_interface(mconfig, *this), m_channel(nullptr), m_sweep_step(0), diff --git a/src/mame/audio/wswan.h b/src/mame/audio/wswan.h index 8d957e80b5e..96ea8a0b416 100644 --- a/src/mame/audio/wswan.h +++ b/src/mame/audio/wswan.h @@ -6,10 +6,10 @@ * ****************************************************************************/ -#pragma once +#ifndef MAME_AUDIO_WSWAN_H +#define MAME_AUDIO_WSWAN_H -#ifndef _WSWAN_SND_H_ -#define _WSWAN_SND_H_ +#pragma once //************************************************************************** @@ -85,6 +85,6 @@ private: uint8_t m_master_volume; /* Master volume */ }; -extern const device_type WSWAN_SND; +DECLARE_DEVICE_TYPE(WSWAN_SND, wswan_sound_device) -#endif +#endif // MAME_AUDIO_WSWAN_H diff --git a/src/mame/audio/zaccaria.cpp b/src/mame/audio/zaccaria.cpp index b880608fd48..805d7326090 100644 --- a/src/mame/audio/zaccaria.cpp +++ b/src/mame/audio/zaccaria.cpp @@ -2,6 +2,7 @@ // copyright-holders:Vas Crabb #include "emu.h" #include "audio/zaccaria.h" + #include "cpu/m6800/m6800.h" #include "machine/clock.h" #include "machine/rescap.h" @@ -13,8 +14,8 @@ // GLOBAL VARIABLES //************************************************************************** -device_type const ZACCARIA_1B11107 = device_creator; -device_type const ZACCARIA_1B11142 = device_creator; +DEFINE_DEVICE_TYPE(ZACCARIA_1B11107, zac1b11107_audio_device, "zac1b11107", "Zaccaria 1B11107 Sound Board") +DEFINE_DEVICE_TYPE(ZACCARIA_1B11142, zac1b11142_audio_device, "zac1b11142", "Zaccaria 1B11142 Sound Board") @@ -239,13 +240,10 @@ INPUT_PORTS_END zac1b111xx_melody_base::zac1b111xx_melody_base( machine_config const &mconfig, device_type devtype, - char const *name, char const *tag, device_t *owner, - uint32_t clock, - char const *shortname, - char const *source) - : device_t(mconfig, devtype, name, tag, owner, clock, shortname, source) + u32 clock) + : device_t(mconfig, devtype, tag, owner, clock) , device_mixer_interface(mconfig, *this, 1) , m_melodycpu(*this, "melodycpu") , m_melodypia(*this, "melodypia") @@ -257,8 +255,8 @@ zac1b111xx_melody_base::zac1b111xx_melody_base( READ8_MEMBER(zac1b111xx_melody_base::melodypia_porta_r) { - uint8_t const control = m_melodypia->b_output(); - uint8_t data = 0xff; + u8 const control = m_melodypia->b_output(); + u8 data = 0xff; if (0x01 == (control & 0x03)) data &= m_melodypsg1->data_r(space, 0); @@ -271,7 +269,7 @@ READ8_MEMBER(zac1b111xx_melody_base::melodypia_porta_r) WRITE8_MEMBER(zac1b111xx_melody_base::melodypia_porta_w) { - uint8_t const control = m_melodypia->b_output(); + u8 const control = m_melodypia->b_output(); if (control & 0x02) m_melodypsg1->data_address_w(space, (control >> 0) & 0x01, data); @@ -310,8 +308,8 @@ void zac1b111xx_melody_base::device_reset() // 1B11107-SPECIFIC IMPLEMENTATION //************************************************************************** -zac1b11107_audio_device::zac1b11107_audio_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) - : zac1b111xx_melody_base(mconfig, ZACCARIA_1B11107, "Zaccaria 1B11107 Sound Board", tag, owner, clock, "zac1b11107", __FILE__) +zac1b11107_audio_device::zac1b11107_audio_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) + : zac1b111xx_melody_base(mconfig, ZACCARIA_1B11107, tag, owner, clock) { } @@ -364,8 +362,8 @@ machine_config_constructor zac1b11107_audio_device::device_mconfig_additions() c // 1B11142-SPECIFIC IMPLEMENTATION //************************************************************************** -zac1b11142_audio_device::zac1b11142_audio_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) - : zac1b111xx_melody_base(mconfig, ZACCARIA_1B11142, "Zaccaria 1B11142 Sound Board", tag, owner, clock, "zac1b11142", __FILE__) +zac1b11142_audio_device::zac1b11142_audio_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock) + : zac1b111xx_melody_base(mconfig, ZACCARIA_1B11142, tag, owner, clock) , m_acs_cb(*this) , m_audiocpu(*this, "audiocpu") , m_pia_1i(*this, "pia_1i") diff --git a/src/mame/audio/zaccaria.h b/src/mame/audio/zaccaria.h index 3b77bb0e637..4b6da268517 100644 --- a/src/mame/audio/zaccaria.h +++ b/src/mame/audio/zaccaria.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Vas Crabb -#pragma once +#ifndef MAME_AUDIO_ZACCARIA_H +#define MAME_AUDIO_ZACCARIA_H -#ifndef __AUDIO_ZACCARIA_H__ -#define __AUDIO_ZACCARIA_H__ +#pragma once #include "machine/6821pia.h" #include "machine/netlist.h" @@ -15,8 +15,8 @@ // GLOBAL VARIABLES //************************************************************************** -extern device_type const ZACCARIA_1B11107; -extern device_type const ZACCARIA_1B11142; +DECLARE_DEVICE_TYPE(ZACCARIA_1B11107, zac1b11107_audio_device) +DECLARE_DEVICE_TYPE(ZACCARIA_1B11142, zac1b11142_audio_device) @@ -36,22 +36,19 @@ extern device_type const ZACCARIA_1B11142; class zac1b111xx_melody_base : public device_t, public device_mixer_interface { public: - zac1b111xx_melody_base( - machine_config const &mconfig, - device_type devtype, - char const *name, - char const *tag, - device_t *owner, - uint32_t clock, - char const *shortname, - char const *source); - DECLARE_READ8_MEMBER(melodypia_porta_r); DECLARE_WRITE8_MEMBER(melodypia_porta_w); DECLARE_WRITE8_MEMBER(melodypia_portb_w); DECLARE_READ8_MEMBER(melodypsg1_portb_r); protected: + zac1b111xx_melody_base( + machine_config const &mconfig, + device_type devtype, + char const *tag, + device_t *owner, + u32 clock); + virtual void device_start() override; virtual void device_reset() override; @@ -60,14 +57,14 @@ protected: required_device m_melodypsg1; required_device m_melodypsg2; - uint8_t m_melody_command; + u8 m_melody_command; }; class zac1b11107_audio_device : public zac1b111xx_melody_base { public: - zac1b11107_audio_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); + zac1b11107_audio_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); // host interface DECLARE_WRITE8_MEMBER(sound_w); @@ -85,10 +82,10 @@ protected: class zac1b11142_audio_device : public zac1b111xx_melody_base { public: - template static devcb_base &static_set_acs_cb(device_t &device, _Object object) - { return downcast(device).m_acs_cb.set_callback(object); } + template static devcb_base &static_set_acs_cb(device_t &device, Object &&cb) + { return downcast(device).m_acs_cb.set_callback(std::forward(cb)); } - zac1b11142_audio_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); + zac1b11142_audio_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); // host interface DECLARE_WRITE8_MEMBER(hs_w); @@ -114,15 +111,15 @@ protected: virtual void device_start() override; virtual void device_reset() override; - devcb_write_line m_acs_cb; + devcb_write_line m_acs_cb; required_device m_audiocpu; required_device m_pia_1i; required_device m_speech; - required_ioport m_inputs; + required_ioport m_inputs; - uint8_t m_host_command; + u8 m_host_command; }; #endif // __AUDIO_ZACCARIA_H__ diff --git a/src/mame/drivers/1942.cpp b/src/mame/drivers/1942.cpp index 551d519d3ac..ff5e8c6383a 100644 --- a/src/mame/drivers/1942.cpp +++ b/src/mame/drivers/1942.cpp @@ -560,7 +560,7 @@ void _1942_state::machine_reset() m_scroll[1] = 0; } -static MACHINE_CONFIG_START( 1942, _1942_state ) +static MACHINE_CONFIG_START( 1942 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK) /* 4 MHz ??? */ @@ -628,7 +628,7 @@ static MACHINE_CONFIG_START( 1942, _1942_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( 1942p, _1942_state ) +static MACHINE_CONFIG_START( 1942p ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK_1942P) /* 4 MHz - verified on PCB */ diff --git a/src/mame/drivers/1943.cpp b/src/mame/drivers/1943.cpp index 76685cd365d..6a53e87a952 100644 --- a/src/mame/drivers/1943.cpp +++ b/src/mame/drivers/1943.cpp @@ -309,7 +309,7 @@ void _1943_state::machine_reset() m_prot_value = 0; } -static MACHINE_CONFIG_START( 1943, _1943_state ) +static MACHINE_CONFIG_START( 1943 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4) /* verified on pcb */ diff --git a/src/mame/drivers/1945kiii.cpp b/src/mame/drivers/1945kiii.cpp index aef9295fd60..53f6550d03b 100644 --- a/src/mame/drivers/1945kiii.cpp +++ b/src/mame/drivers/1945kiii.cpp @@ -367,7 +367,7 @@ void k3_state::machine_start() { } -static MACHINE_CONFIG_START( flagrall, k3_state ) +static MACHINE_CONFIG_START( flagrall ) MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK ) // ? MCFG_CPU_PROGRAM_MAP(flagrall_map) @@ -388,7 +388,7 @@ static MACHINE_CONFIG_START( flagrall, k3_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", MASTER_CLOCK/16, OKIM6295_PIN7_HIGH) /* dividers? */ + MCFG_OKIM6295_ADD("oki1", MASTER_CLOCK/16, PIN7_HIGH) /* dividers? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -398,7 +398,7 @@ static MACHINE_CONFIG_DERIVED( k3, flagrall ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(k3_map) - MCFG_OKIM6295_ADD("oki2", MASTER_CLOCK/16, OKIM6295_PIN7_HIGH) /* dividers? */ + MCFG_OKIM6295_ADD("oki2", MASTER_CLOCK/16, PIN7_HIGH) /* dividers? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SCREEN_MODIFY("screen") @@ -512,9 +512,8 @@ ROM_START( flagrall ) ROM_END -GAME( 2000, 1945kiii, 0, k3, k3, driver_device, 0, ROT270, "Oriental Soft", "1945k III (newer, OPCX2 PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, 1945kiiin, 1945kiii, k3, k3, driver_device, 0, ROT270, "Oriental Soft", "1945k III (newer, OPCX1 PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, 1945kiiio, 1945kiii, k3, k3, driver_device, 0, ROT270, "Oriental Soft", "1945k III (older, OPCX1 PCB)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1996, flagrall, 0, flagrall, flagrall, driver_device, 0, ROT0, "Promat?", "'96 Flag Rally", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, 1945kiii, 0, k3, k3, k3_state, 0, ROT270, "Oriental Soft", "1945k III (newer, OPCX2 PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, 1945kiiin, 1945kiii, k3, k3, k3_state, 0, ROT270, "Oriental Soft", "1945k III (newer, OPCX1 PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, 1945kiiio, 1945kiii, k3, k3, k3_state, 0, ROT270, "Oriental Soft", "1945k III (older, OPCX1 PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, flagrall, 0, flagrall, flagrall, k3_state, 0, ROT0, "Promat?", "'96 Flag Rally", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/20pacgal.cpp b/src/mame/drivers/20pacgal.cpp index dce6c82f6cd..6e6fab65cba 100644 --- a/src/mame/drivers/20pacgal.cpp +++ b/src/mame/drivers/20pacgal.cpp @@ -389,7 +389,7 @@ INTERRUPT_GEN_MEMBER(_20pacgal_state::vblank_irq) device.execute().set_input_line(0, HOLD_LINE); // TODO: assert breaks the inputs in 25pacman test mode } -static MACHINE_CONFIG_START( 20pacgal, _20pacgal_state ) +static MACHINE_CONFIG_START( 20pacgal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, MAIN_CPU_CLOCK) @@ -417,7 +417,7 @@ static MACHINE_CONFIG_START( 20pacgal, _20pacgal_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( 25pacman, 20pacgal, _25pacman_state ) +static MACHINE_CONFIG_DERIVED( 25pacman, 20pacgal ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -534,12 +534,12 @@ DRIVER_INIT_MEMBER(_20pacgal_state,25pacman) * *************************************/ -GAME( 2006, 25pacman, 0, 25pacman, 25pacman, _20pacgal_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 3.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 2005, 25pacmano, 25pacman, 20pacgal, 25pacmano,_20pacgal_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 2.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +GAME( 2006, 25pacman, 0, 25pacman, 25pacman, _25pacman_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 3.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 2005, 25pacmano, 25pacman, 20pacgal, 25pacmano, _20pacgal_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 2.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) -GAME( 2000, 20pacgal, 0, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.08)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) -GAME( 2000, 20pacgalr4, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) -GAME( 2000, 20pacgalr3, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) -GAME( 2000, 20pacgalr2, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) -GAME( 2000, 20pacgalr1, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) -GAME( 2000, 20pacgalr0, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +GAME( 2000, 20pacgal, 0, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.08)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +GAME( 2000, 20pacgalr4, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +GAME( 2000, 20pacgalr3, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +GAME( 2000, 20pacgalr2, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +GAME( 2000, 20pacgalr1, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +GAME( 2000, 20pacgalr0, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/24cdjuke.cpp b/src/mame/drivers/24cdjuke.cpp index 9d84a16ac8a..4d1cd57249a 100644 --- a/src/mame/drivers/24cdjuke.cpp +++ b/src/mame/drivers/24cdjuke.cpp @@ -273,7 +273,7 @@ void midcoin24cdjuke_state::machine_reset() } -static MACHINE_CONFIG_START( midcoin24cdjuke, midcoin24cdjuke_state ) +static MACHINE_CONFIG_START( midcoin24cdjuke ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,6000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(midcoin24cdjuke_map) @@ -313,4 +313,4 @@ ROM_START( 24cdjuke ) ROM_END -GAME( 1988, 24cdjuke, 0, midcoin24cdjuke, midcoin24cdjuke, driver_device, 0, ROT0, "Midcoin", "Midcoin Juke Box 24CD", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // what name was it sold under? name is from the PCB text +GAME( 1988, 24cdjuke, 0, midcoin24cdjuke, midcoin24cdjuke, midcoin24cdjuke_state, 0, ROT0, "Midcoin", "Midcoin Juke Box 24CD", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // what name was it sold under? name is from the PCB text diff --git a/src/mame/drivers/2mindril.cpp b/src/mame/drivers/2mindril.cpp index b39c80c16c9..30746694ebe 100644 --- a/src/mame/drivers/2mindril.cpp +++ b/src/mame/drivers/2mindril.cpp @@ -445,7 +445,7 @@ MACHINE_RESET_MEMBER(_2mindril_state,drill) m_irq_reg = 0; } -static MACHINE_CONFIG_START( drill, _2mindril_state ) +static MACHINE_CONFIG_START( drill ) MCFG_CPU_ADD("maincpu", M68000, 16000000 ) MCFG_CPU_PROGRAM_MAP(drill_map) @@ -462,7 +462,7 @@ static MACHINE_CONFIG_START( drill, _2mindril_state ) MCFG_SCREEN_SIZE(40*8+48*2, 32*8) MCFG_SCREEN_VISIBLE_AREA(46, 40*8-1 + 46, 24, 24+224-1) MCFG_SCREEN_UPDATE_DRIVER(_2mindril_state, screen_update_f3) - MCFG_SCREEN_VBLANK_DRIVER(_2mindril_state, screen_eof_f3) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(_2mindril_state, screen_vblank_f3)) MCFG_PALETTE_ADD("palette", 0x2000) MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx) diff --git a/src/mame/drivers/30test.cpp b/src/mame/drivers/30test.cpp index 264603adad2..a54d5af72d6 100644 --- a/src/mame/drivers/30test.cpp +++ b/src/mame/drivers/30test.cpp @@ -237,7 +237,7 @@ void namco_30test_state::machine_reset() } -static MACHINE_CONFIG_START( 30test, namco_30test_state ) +static MACHINE_CONFIG_START( 30test ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC68HC11,MAIN_CLOCK/4) @@ -251,7 +251,7 @@ static MACHINE_CONFIG_START( 30test, namco_30test_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -269,4 +269,4 @@ ROM_START( 30test ) ROM_LOAD( "tt1-voi0.7p", 0x0000, 0x80000, CRC(b4fc5921) SHA1(92a88d5adb50dae48715847f12e88a35e37ef78c) ) ROM_END -GAMEL( 1997, 30test, 0, 30test, 30test, driver_device, 0, ROT0, "Namco", "30 Test (Remake)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK, layout_30test ) +GAMEL( 1997, 30test, 0, 30test, 30test, namco_30test_state, 0, ROT0, "Namco", "30 Test (Remake)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK, layout_30test ) diff --git a/src/mame/drivers/39in1.cpp b/src/mame/drivers/39in1.cpp index 49cd262b39b..45e24a02733 100644 --- a/src/mame/drivers/39in1.cpp +++ b/src/mame/drivers/39in1.cpp @@ -1572,7 +1572,7 @@ MACHINE_START_MEMBER(_39in1_state,60in1) pxa255_start(); } -static MACHINE_CONFIG_START( 39in1, _39in1_state ) +static MACHINE_CONFIG_START( 39in1 ) MCFG_CPU_ADD("maincpu", PXA255, 200000000) MCFG_CPU_PROGRAM_MAP(39in1_map) @@ -1718,11 +1718,11 @@ ROM_START( 19in1 ) ROM_LOAD16_WORD_SWAP( "19in1_eeprom.bin", 0x000, 0x200, NO_DUMP ) ROM_END -GAME(2004, 4in1a, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "4 in 1 MAME bootleg (set 1, ver 3.00)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) -GAME(2004, 4in1b, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "4 in 1 MAME bootleg (set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) -GAME(2004, 19in1, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "19 in 1 MAME bootleg", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) -GAME(2004, 39in1, 0, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "39 in 1 MAME bootleg", MACHINE_IMPERFECT_SOUND) -GAME(2004, 48in1, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 1, ver 3.09)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) +GAME(2004, 4in1a, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "4 in 1 MAME bootleg (set 1, ver 3.00)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) +GAME(2004, 4in1b, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "4 in 1 MAME bootleg (set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) +GAME(2004, 19in1, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "19 in 1 MAME bootleg", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) +GAME(2004, 39in1, 0, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "39 in 1 MAME bootleg", MACHINE_IMPERFECT_SOUND) +GAME(2004, 48in1, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 1, ver 3.09)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) GAME(2004, 48in1b, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 2, ver 3.09, alt flash)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) -GAME(2004, 48in1a, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 3, ver 3.02)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) -GAME(2004, 60in1, 39in1, 60in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "60 in 1 MAME bootleg (ver 3.00)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) +GAME(2004, 48in1a, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 3, ver 3.02)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) +GAME(2004, 60in1, 39in1, 60in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "60 in 1 MAME bootleg (ver 3.00)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/3do.cpp b/src/mame/drivers/3do.cpp index db5db112604..0aba64cf887 100644 --- a/src/mame/drivers/3do.cpp +++ b/src/mame/drivers/3do.cpp @@ -154,7 +154,7 @@ void _3do_state::machine_reset() m_clio.cstatbits = 0x01; /* bit 0 = reset of clio caused by power on */ } -static MACHINE_CONFIG_START( 3do, _3do_state ) +static MACHINE_CONFIG_START( 3do ) /* Basic machine hardware */ MCFG_CPU_ADD( "maincpu", ARM7_BE, XTAL_50MHz/4 ) @@ -174,7 +174,7 @@ static MACHINE_CONFIG_START( 3do, _3do_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( 3do_pal, _3do_state ) +static MACHINE_CONFIG_START( 3do_pal ) /* Basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM7_BE, XTAL_50MHz/4 ) @@ -248,9 +248,9 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1991, 3do, 0, 0, 3do, 3do, driver_device, 0, "The 3DO Company", "3DO (NTSC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -CONS( 1991, 3do_pal, 3do, 0, 3do_pal, 3do, driver_device, 0, "The 3DO Company", "3DO (PAL)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1991, 3do, 0, 0, 3do, 3do, _3do_state, 0, "The 3DO Company", "3DO (NTSC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 1991, 3do_pal, 3do, 0, 3do_pal, 3do, _3do_state, 0, "The 3DO Company", "3DO (PAL)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1991, 3dobios, 0, 3do, 3do, driver_device, 0, ROT0, "The 3DO Company", "3DO Bios", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT ) -GAME( 199?, orbatak, 3dobios,3do, 3do, driver_device, 0, ROT0, "", "Orbatak (prototype)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1991, 3dobios, 0, 3do, 3do, _3do_state, 0, ROT0, "The 3DO Company", "3DO Bios", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT ) +GAME( 199?, orbatak, 3dobios,3do, 3do, _3do_state, 0, ROT0, "", "Orbatak (prototype)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/3x3puzzl.cpp b/src/mame/drivers/3x3puzzl.cpp index 814333ff455..7b9cb8ab12f 100644 --- a/src/mame/drivers/3x3puzzl.cpp +++ b/src/mame/drivers/3x3puzzl.cpp @@ -382,7 +382,7 @@ void _3x3puzzle_state::machine_reset() } -static MACHINE_CONFIG_START( _3x3puzzle, _3x3puzzle_state ) +static MACHINE_CONFIG_START( _3x3puzzle ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,MAIN_CLOCK) @@ -404,7 +404,7 @@ static MACHINE_CONFIG_START( _3x3puzzle, _3x3puzzle_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -503,6 +503,6 @@ ROM_END -GAME( 1998, 3x3puzzl, 0, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace Enterprise", "3X3 Puzzle (Enterprise)", MACHINE_SUPPORTS_SAVE ) // 1998. 5. 28 -GAME( 1998, 3x3puzzla, 3x3puzzl, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace Enterprise", "3X3 Puzzle (Normal)", MACHINE_SUPPORTS_SAVE ) // 1998. 5. 28 -GAME( 199?, casanova, 0, _3x3puzzle, casanova, driver_device, 0, ROT0, "Promat", "Casanova", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, 3x3puzzl, 0, _3x3puzzle, _3x3puzzle, _3x3puzzle_state, 0, ROT0, "Ace Enterprise", "3X3 Puzzle (Enterprise)", MACHINE_SUPPORTS_SAVE ) // 1998. 5. 28 +GAME( 1998, 3x3puzzla, 3x3puzzl, _3x3puzzle, _3x3puzzle, _3x3puzzle_state, 0, ROT0, "Ace Enterprise", "3X3 Puzzle (Normal)", MACHINE_SUPPORTS_SAVE ) // 1998. 5. 28 +GAME( 199?, casanova, 0, _3x3puzzle, casanova, _3x3puzzle_state, 0, ROT0, "Promat", "Casanova", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/4004clk.cpp b/src/mame/drivers/4004clk.cpp index db89509ff84..c9cb98538cb 100644 --- a/src/mame/drivers/4004clk.cpp +++ b/src/mame/drivers/4004clk.cpp @@ -142,7 +142,7 @@ void nixieclock_state::machine_start() save_pointer(NAME(m_nixie), 6); } -static MACHINE_CONFIG_START( 4004clk, nixieclock_state ) +static MACHINE_CONFIG_START( 4004clk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I4004, XTAL_5MHz / 8) @@ -185,5 +185,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -SYST( 2008, 4004clk, 0, 0, 4004clk, 4004clk, driver_device, 0, "John L. Weinrich", "4004 Nixie Clock", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +SYST( 2008, 4004clk, 0, 0, 4004clk, 4004clk, nixieclock_state, 0, "John L. Weinrich", "4004 Nixie Clock", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/40love.cpp b/src/mame/drivers/40love.cpp index 4ab8a49dc7f..a3ebd11ea5d 100644 --- a/src/mame/drivers/40love.cpp +++ b/src/mame/drivers/40love.cpp @@ -1046,7 +1046,7 @@ MACHINE_RESET_MEMBER(fortyl_state,undoukai) } } -static MACHINE_CONFIG_START( 40love, fortyl_state ) +static MACHINE_CONFIG_START( 40love ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,8000000/2) /* OK */ @@ -1105,7 +1105,7 @@ static MACHINE_CONFIG_START( 40love, fortyl_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( undoukai, fortyl_state ) +static MACHINE_CONFIG_START( undoukai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,8000000/2) @@ -1279,6 +1279,6 @@ ROM_START( undoukai ) ROM_LOAD( "a17-18.23v", 0x0c00, 0x0400, CRC(3023a1da) SHA1(08ce4c6e99d04b358d66f0588852311d07183619) ) /* ??? */ ROM_END -GAME( 1984, 40love, 0, 40love, 40love, fortyl_state, 40love, ROT0, "Taito Corporation", "Forty-Love", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1984, fieldday, 0, undoukai, undoukai, fortyl_state, undoukai, ROT0, "Taito Corporation", "Field Day", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, 40love, 0, 40love, 40love, fortyl_state, 40love, ROT0, "Taito Corporation", "Forty-Love", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1984, fieldday, 0, undoukai, undoukai, fortyl_state, undoukai, ROT0, "Taito Corporation", "Field Day", MACHINE_SUPPORTS_SAVE ) GAME( 1984, undoukai, fieldday, undoukai, undoukai, fortyl_state, undoukai, ROT0, "Taito Corporation", "The Undoukai (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/4dpi.cpp b/src/mame/drivers/4dpi.cpp index b7d359fc845..47603c27db2 100644 --- a/src/mame/drivers/4dpi.cpp +++ b/src/mame/drivers/4dpi.cpp @@ -227,7 +227,7 @@ ADDRESS_MAP_END MACHINE DRIVERS ***************************************************************************/ -static MACHINE_CONFIG_START( sgi_ip6, sgi_ip6_state ) +static MACHINE_CONFIG_START( sgi_ip6 ) MCFG_CPU_ADD( "maincpu", R3041, 20000000 ) // FIXME: Should be R2000 MCFG_R3000_ENDIANNESS(ENDIANNESS_BIG) MCFG_CPU_PROGRAM_MAP( sgi_ip6_map ) @@ -265,5 +265,5 @@ ROM_START( sgi_ip6 ) ROM_LOAD( "4d202031.bin", 0x000000, 0x040000, CRC(065a290a) SHA1(6f5738e79643f94901e6efe3612468d14177f65b) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1988, sgi_ip6, 0, 0, sgi_ip6, sgi_ip6, sgi_ip6_state, sgi_ip6, "Silicon Graphics Inc", "4D/PI (R2000, 20MHz)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1988, sgi_ip6, 0, 0, sgi_ip6, sgi_ip6, sgi_ip6_state, sgi_ip6, "Silicon Graphics Inc", "4D/PI (R2000, 20MHz)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/4enlinea.cpp b/src/mame/drivers/4enlinea.cpp index 7651be0d2d6..93adb57bde7 100644 --- a/src/mame/drivers/4enlinea.cpp +++ b/src/mame/drivers/4enlinea.cpp @@ -258,10 +258,10 @@ const tiny_rom_entry *isa8_cga_4enlinea_device::device_rom_region() const return nullptr; } -const device_type ISA8_CGA_4ENLINEA = device_creator; +DEFINE_DEVICE_TYPE(ISA8_CGA_4ENLINEA, isa8_cga_4enlinea_device, "4enlinea_cga", "ISA8 CGA - 4enlinea") isa8_cga_4enlinea_device::isa8_cga_4enlinea_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - isa8_cga_device( mconfig, ISA8_CGA_4ENLINEA, "ISA8_CGA_4ENLINEA", tag, owner, clock, "4enlinea_cga", __FILE__) + isa8_cga_device( mconfig, ISA8_CGA_4ENLINEA, tag, owner, clock) { } @@ -489,7 +489,7 @@ INTERRUPT_GEN_MEMBER(_4enlinea_state::_4enlinea_audio_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( 4enlinea, _4enlinea_state ) +static MACHINE_CONFIG_START( 4enlinea ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, PRG_CPU_CLOCK) @@ -549,5 +549,5 @@ ROM_END * Game Drivers * ***********************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1991, 4enlinea, 0, 4enlinea, 4enlinea, driver_device, 0, ROT0, "Compumatic", "Cuatro en Linea", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ +GAME( 1991, 4enlinea, 0, 4enlinea, 4enlinea, _4enlinea_state, 0, ROT0, "Compumatic", "Cuatro en Linea", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/4enraya.cpp b/src/mame/drivers/4enraya.cpp index 199172c4f45..ecd60061d5f 100644 --- a/src/mame/drivers/4enraya.cpp +++ b/src/mame/drivers/4enraya.cpp @@ -423,7 +423,7 @@ void _4enraya_state::machine_reset() * Machine Drivers * ***********************************/ -static MACHINE_CONFIG_START( 4enraya, _4enraya_state ) +static MACHINE_CONFIG_START( 4enraya ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK/2) @@ -530,6 +530,6 @@ DRIVER_INIT_MEMBER(_4enraya_state, unkpacg) ***********************************/ /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1990, 4enraya, 0, 4enraya, 4enraya, driver_device, 0, ROT0, "IDSA", "4 En Raya (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, 4enrayaa, 4enraya, 4enraya, 4enraya, driver_device, 0, ROT0, "IDSA", "4 En Raya (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, 4enraya, 0, 4enraya, 4enraya, _4enraya_state, 0, ROT0, "IDSA", "4 En Raya (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, 4enrayaa, 4enraya, 4enraya, 4enraya, _4enraya_state, 0, ROT0, "IDSA", "4 En Raya (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 199?, unkpacg, 0, unkpacg, unkpacg, _4enraya_state, unkpacg, ROT0, "", "unknown Pac-Man gambling game", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/4roses.cpp b/src/mame/drivers/4roses.cpp index 8d7a41c02d4..e3e611cccb0 100644 --- a/src/mame/drivers/4roses.cpp +++ b/src/mame/drivers/4roses.cpp @@ -353,7 +353,7 @@ GFXDECODE_END * Machine Drivers * **************************/ -static MACHINE_CONFIG_START( 4roses, _4roses_state ) +static MACHINE_CONFIG_START( 4roses ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02, MASTER_CLOCK/8) /* 2MHz, guess */ MCFG_CPU_PROGRAM_MAP(4roses_map) @@ -465,7 +465,7 @@ DRIVER_INIT_MEMBER(_4roses_state,4roses) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ GAME( 1999, 4roses, 0, 4roses, 4roses, _4roses_state, 4roses, ROT0, "", "Four Roses (encrypted, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) GAME( 1999, 4rosesa, 4roses, 4roses, 4roses, _4roses_state, 4roses, ROT0, "", "Four Roses (encrypted, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) GAME( 1999, rugby, 0, 4roses, 4roses, _4roses_state, 4roses, ROT0, "C.M.C.", "Rugby? (four roses hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/5clown.cpp b/src/mame/drivers/5clown.cpp index 3fad2e4af5a..2b00a245855 100644 --- a/src/mame/drivers/5clown.cpp +++ b/src/mame/drivers/5clown.cpp @@ -1014,7 +1014,7 @@ GFXDECODE_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( fclown, _5clown_state ) +static MACHINE_CONFIG_START( fclown ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/8) /* guess, seems ok */ @@ -1060,7 +1060,7 @@ static MACHINE_CONFIG_START( fclown, _5clown_state ) MCFG_SOUND_ADD("ay8910", AY8910, MASTER_CLOCK/8) /* guess, seems ok */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) - MCFG_OKIM6295_ADD("oki6295", MASTER_CLOCK/12, OKIM6295_PIN7_LOW) /* guess, seems ok; pin7 guessed, seems ok */ + MCFG_OKIM6295_ADD("oki6295", MASTER_CLOCK/12, PIN7_LOW) /* guess, seems ok; pin7 guessed, seems ok */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.20) MACHINE_CONFIG_END @@ -1225,7 +1225,7 @@ DRIVER_INIT_MEMBER(_5clown_state,fclown) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS... */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... GAME( 1993, 5clown, 0, fclown, fclown, _5clown_state, fclown, ROT0, "IGS", "Five Clown (English, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1993, 5clowna, 5clown, fclown, fclown, _5clown_state, fclown, ROT0, "IGS", "Five Clown (English, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1993, 5clownsp, 5clown, fclown, fclown, _5clown_state, fclown, ROT0, "IGS", "Five Clown (Spanish hack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/68ksbc.cpp b/src/mame/drivers/68ksbc.cpp index ad824e11f61..507fb13f65a 100644 --- a/src/mame/drivers/68ksbc.cpp +++ b/src/mame/drivers/68ksbc.cpp @@ -70,7 +70,7 @@ WRITE_LINE_MEMBER(c68ksbc_state::write_acia_clock) m_acia->write_rxc(state); } -static MACHINE_CONFIG_START( c68ksbc, c68ksbc_state ) +static MACHINE_CONFIG_START( c68ksbc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) // text says 8MHz, schematic says 10MHz MCFG_CPU_PROGRAM_MAP(c68ksbc_mem) @@ -95,5 +95,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 2002, 68ksbc, 0, 0, c68ksbc, c68ksbc, driver_device, 0, "Wichit Sirichote", "68k Single Board Computer", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 2002, 68ksbc, 0, 0, c68ksbc, c68ksbc, c68ksbc_state, 0, "Wichit Sirichote", "68k Single Board Computer", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp index 22a356902fb..145d7a7c415 100644 --- a/src/mame/drivers/8080bw.cpp +++ b/src/mame/drivers/8080bw.cpp @@ -91,7 +91,7 @@ Came from factory with one of the 6x 0x400 or 4x 0x800 romsets Capable of running TV, SV or CV romsets. This is probably the second-oldest pcb set and may have been made to - allow closer physical interchangability with Midway's m8080bw hardware, + allow closer physical interchangeability with Midway's m8080bw hardware, which had a similar board shape? * CVNxxxxx (3 layer pcbset) - Color, used on "T.T Space Invaders Color" cocktail with electronic color overlay. @@ -408,7 +408,7 @@ INPUT_PORTS_END /* same as regular invaders, but with a color board added */ -static MACHINE_CONFIG_DERIVED_CLASS( invadpt2, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( invadpt2, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -451,7 +451,7 @@ static ADDRESS_MAP_START( spacerng_io_map, AS_IO, 8, _8080bw_state ) AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) ADDRESS_MAP_END -static MACHINE_CONFIG_DERIVED_CLASS( spacerng, invadpt2, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( spacerng, invadpt2 ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -492,7 +492,7 @@ static INPUT_PORTS_START( spcewars ) PORT_DIPSETTING( 0x08, "2000" ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( spcewars, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( spcewars, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -515,6 +515,37 @@ static MACHINE_CONFIG_DERIVED_CLASS( spcewars, mw8080bw_root, _8080bw_state ) MACHINE_CONFIG_END +/*******************************************************/ +/* */ +/* Space War (Leisure and Allied) */ +/* */ +/*******************************************************/ + +// has a slightly rearranged io map and has PROMs and watchdog + +static ADDRESS_MAP_START( spcewarla_io_map, AS_IO, 8, _8080bw_state ) + AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") + AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") + AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") + AM_RANGE(0x04, 0x04) AM_WRITE(spcewars_sh_port_w) + AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) + AM_RANGE(0x06, 0x06) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) + AM_RANGE(0x08, 0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) + AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) +ADDRESS_MAP_END + +static MACHINE_CONFIG_DERIVED(spcewarla, spcewars) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_IO_MAP(spcewarla_io_map) + + MCFG_WATCHDOG_ADD("watchdog") + MCFG_WATCHDOG_VBLANK_INIT("screen", 255) + + MCFG_PALETTE_ADD_3BIT_RBG("palette") + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2) +MACHINE_CONFIG_END + /*******************************************************/ /* */ @@ -569,7 +600,7 @@ static INPUT_PORTS_START( astropal ) PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( astropal, invaders, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( astropal, invaders ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -620,7 +651,7 @@ static INPUT_PORTS_START( cosmo ) PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW1:8" ) /* must be HIGH normally or the joystick won't work */ INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( cosmo, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( cosmo, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -777,7 +808,7 @@ static ADDRESS_MAP_START( spacecom_io_map, AS_IO, 8, _8080bw_state ) AM_RANGE(0x44, 0x44) AM_READ_PORT("IN2") AM_WRITE(invaders_audio_2_w) ADDRESS_MAP_END -MACHINE_CONFIG_START( spacecom, _8080bw_state ) +MACHINE_CONFIG_START( spacecom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080A, XTAL_18MHz / 10) // divider guessed @@ -889,7 +920,7 @@ static INPUT_PORTS_START( invrvnge ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( invrvnge, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( invrvnge, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1027,7 +1058,7 @@ static ADDRESS_MAP_START( starw1_io_map, AS_IO, 8, _8080bw_state ) AM_RANGE(0x07, 0x07) AM_WRITENOP /* writes 89 at boot */ ADDRESS_MAP_END -static MACHINE_CONFIG_DERIVED_CLASS( starw1, invadpt2, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( starw1, invadpt2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(starw1_io_map) MACHINE_CONFIG_END @@ -1066,7 +1097,7 @@ static INPUT_PORTS_START( lrescue ) PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW1:8" ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( lrescue, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( lrescue, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1095,7 +1126,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( lrescue, mw8080bw_root, _8080bw_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END -MACHINE_CONFIG_START( escmars, _8080bw_state ) +MACHINE_CONFIG_START( escmars ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_18MHz / 10) // divider guessed @@ -1193,7 +1224,7 @@ static ADDRESS_MAP_START( cosmicmo_io_map, AS_IO, 8, _8080bw_state ) AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) ADDRESS_MAP_END -static MACHINE_CONFIG_DERIVED_CLASS( cosmicmo, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( cosmicmo, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1343,7 +1374,7 @@ MACHINE_START_MEMBER(_8080bw_state,rollingc) MACHINE_START_CALL_MEMBER(mw8080bw); } -static MACHINE_CONFIG_DERIVED_CLASS( rollingc, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( rollingc, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1483,7 +1514,7 @@ MACHINE_RESET_MEMBER(_8080bw_state,schaser) MACHINE_RESET_CALL_MEMBER(mw8080bw); } -static MACHINE_CONFIG_DERIVED_CLASS( schaser, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( schaser, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_REPLACE("maincpu",I8080,1996800) /* 19.968MHz / 10 */ @@ -1606,7 +1637,7 @@ MACHINE_START_MEMBER(_8080bw_state,schasercv) MACHINE_START_CALL_MEMBER(mw8080bw); } -static MACHINE_CONFIG_DERIVED_CLASS( schasercv, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( schasercv, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1697,7 +1728,7 @@ MACHINE_START_MEMBER(_8080bw_state,sflush) MACHINE_START_CALL_MEMBER(mw8080bw); } -static MACHINE_CONFIG_DERIVED_CLASS( sflush, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( sflush, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_REPLACE("maincpu",M6800,1500000) // ? @@ -1800,7 +1831,7 @@ static INPUT_PORTS_START( lupin3a ) PORT_DIPSETTING( 0x10, DEF_STR( Japanese ) ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( lupin3, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( lupin3, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1964,7 +1995,7 @@ static INPUT_PORTS_START( polaris ) PORT_ADJUSTER( 90, "Sub Volume VR3" ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( polaris, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( polaris, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_REPLACE("maincpu",I8080,1996800) /* 19.968MHz / 10 */ @@ -2096,7 +2127,7 @@ static INPUT_PORTS_START( ballbomb ) PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x00, "SW1:8" ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( ballbomb, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( ballbomb, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2176,7 +2207,7 @@ static INPUT_PORTS_START( yosakdon ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( yosakdon, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( yosakdon, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2339,7 +2370,7 @@ static ADDRESS_MAP_START( indianbtbr_io_map, AS_IO, 8, _8080bw_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_DERIVED_CLASS( indianbt, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( indianbt, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2364,7 +2395,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( indianbt, mw8080bw_root, _8080bw_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( indianbtbr, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( indianbtbr, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2439,7 +2470,7 @@ static INPUT_PORTS_START( steelwkr ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( steelwkr, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( steelwkr, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2611,7 +2642,7 @@ static ADDRESS_MAP_START( shuttlei_io_map, AS_IO, 8, _8080bw_state ) ADDRESS_MAP_END -MACHINE_CONFIG_START( shuttlei, _8080bw_state ) +MACHINE_CONFIG_START( shuttlei ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_18MHz / 10) // divider guessed @@ -2735,7 +2766,7 @@ static INPUT_PORTS_START( darthvdr ) INVADERS_CAB_TYPE_PORT INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( darthvdr, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( darthvdr, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2808,7 +2839,7 @@ static INPUT_PORTS_START( vortex ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) INPUT_PORTS_END -MACHINE_CONFIG_DERIVED_CLASS( vortex, mw8080bw_root, _8080bw_state ) +MACHINE_CONFIG_DERIVED( vortex, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -3116,7 +3147,7 @@ MACHINE_START_MEMBER(_8080bw_state, claybust) MACHINE_START_CALL_MEMBER(mw8080bw); } -MACHINE_CONFIG_DERIVED_CLASS( claybust, invaders, _8080bw_state ) +MACHINE_CONFIG_DERIVED( claybust, invaders ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -3231,7 +3262,7 @@ static INPUT_PORTS_START( attackfc ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( attackfc, mw8080bw_root, _8080bw_state ) +static MACHINE_CONFIG_DERIVED( attackfc, mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -3369,7 +3400,7 @@ WRITE8_MEMBER(_8080bw_state::invmulti_bank_w) membank("bank2")->set_entry(bank); } -MACHINE_CONFIG_DERIVED_CLASS( invmulti, invaders, _8080bw_state ) +MACHINE_CONFIG_DERIVED( invmulti, invaders ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -3666,7 +3697,7 @@ ROM_START( sisv ) // rev 4, with 5-digit scoring ROM_LOAD( "sv14.41", 0x1c00, 0x0400, CRC(58730370) SHA1(13dc806bcecd2d6089a85dd710ac2869413f7475) ) ROM_END -ROM_START( spacerng ) +ROM_START( spacerng ) // 2017/05 update: a PCB set (CVN 3-layer) was found with a 'Shinnihon Kikaku' sticker on the top board. Sold by SNK? ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "sr1.u36", 0x0000, 0x0800, CRC(b984f52d) SHA1(fdc8b249c0b65339977f91b674bdcb435aa99474) ) ROM_LOAD( "sr2.u35", 0x0800, 0x0800, CRC(4b4f07e6) SHA1(408dcdae3e80a09584d8ebd6491bc90c4def1fcf) ) @@ -3674,10 +3705,8 @@ ROM_START( spacerng ) ROM_LOAD( "sr4.u33", 0x1800, 0x0800, CRC(a95f559f) SHA1(f597c7af96a9d039fd8e54d976d68a065f6bf0c8) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ - /* !! not dumped yet, these were taken from sisv */ - // NOTE: SISV (L-shaped boardset) was not supposed to HAVE color proms and hence they are removed. Maybe this is the correct set for these? - ROM_LOAD( "cv01.1", 0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) // sldh - ROM_LOAD( "cv02.2", 0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) // sldh + ROM_LOAD( "cv01.1", 0x0000, 0x0400, CRC(037e16ac) SHA1(d585030aaff428330c91ae94d7cd5c96ebdd67dd) ) + ROM_LOAD( "cv02.2", 0x0400, 0x0400, CRC(8263da38) SHA1(2e7c769d129e6f8a1a31eba1e02777bb94ac32b2) ) ROM_END ROM_START( spceking ) @@ -3700,6 +3729,23 @@ ROM_START( spcewars ) ROM_LOAD( "sanritsu.9", 0x4000, 0x0400, CRC(b2f29601) SHA1(ce855e312f50df7a74682974803cb4f9b2d184f3) ) ROM_END +ROM_START( spcewarla ) // PCB was in a Space Invarders Part II cabinet + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "ps1.bin", 0x0000, 0x0400, CRC(222f6913) SHA1(c0ae8fa8a3b21ebd10cd16952a1c84da1bbd44e3) ) + ROM_LOAD( "ps2.bin", 0x0400, 0x0400, CRC(48dc791c) SHA1(91a98205c83ca38961e6ba2ac43a41e6e8bc2675) ) + ROM_LOAD( "ps3.bin", 0x0800, 0x0400, CRC(58ddc18c) SHA1(3d96ec3e6abd1430754083503af623fb388146f6) ) + ROM_LOAD( "ps4.bin", 0x0c00, 0x0400, CRC(1da5e383) SHA1(8fe84cf290baddad57872092c31abf76950ce00b) ) + ROM_LOAD( "ps5.bin", 0x1000, 0x0400, CRC(3b6d9f23) SHA1(39d5144e1636caca89e3694ba3ab3a1ed241128c) ) + ROM_LOAD( "ps6.bin", 0x1400, 0x0400, CRC(50be9b7a) SHA1(8372929d71d9a1efc0963cd952ab6c1f574eee32) ) + ROM_LOAD( "ps7.bin", 0x1800, 0x0400, CRC(7b8efd7c) SHA1(c2a8d7ddea6f15e483914f032ae6b8aab87b4c14) ) + ROM_LOAD( "ps8.bin", 0x1c00, 0x0400, CRC(64fdc3e1) SHA1(c3c278bc236ced7fc85e1a9b018e80be6ab33402) ) + ROM_LOAD( "ps9.bin", 0x4000, 0x0400, CRC(b2f29601) SHA1(ce855e312f50df7a74682974803cb4f9b2d184f3) ) + + ROM_REGION( 0x0800, "proms", 0 ) /* color map */ + ROM_LOAD( "cv01_1.bin", 0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) // the dumper didn't actually dump this yet + ROM_LOAD( "cv02_2.bin", 0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) // the dumper didn't actually dump this yet +ROM_END + ROM_START( spacewr3 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ic36.bin", 0x0000, 0x0800, CRC(9e30f88a) SHA1(314dfb2920d9b43b977cc19e40ac315e6933c3b9) ) @@ -3709,6 +3755,15 @@ ROM_START( spacewr3 ) ROM_LOAD( "ic32.bin", 0x4000, 0x0800, CRC(1e5a753c) SHA1(5b7cd7b347203f4edf816f02c366bd3b1b9517c4) ) ROM_END +ROM_START( swipeout ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "sw1.bin", 0x0000, 0x0800, CRC(576b5897) SHA1(aa749f745560f33b9bbdf0f3a56b947130862bb2) ) // 2516 + ROM_LOAD( "sw2.bin", 0x0800, 0x0800, CRC(40c2d55b) SHA1(b641b63046d242ad23911143ed840011fc98eaff) ) // 2516 + ROM_LOAD( "sw3.bin", 0x1000, 0x0800, CRC(65e8ce64) SHA1(8da1836d710e06cd0ac566ba13049326b6295f0b) ) // 2516 + ROM_LOAD( "sw4.bin", 0x1800, 0x0800, CRC(ddf1fb9c) SHA1(25184fe9126054f6b5907d8a6a9e95e43126f4e3) ) // 2516 + ROM_LOAD( "sw5.bin", 0x4000, 0x0800, CRC(1e5a753c) SHA1(5b7cd7b347203f4edf816f02c366bd3b1b9517c4) ) // 2516 +ROM_END + ROM_START( invaderl ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "c01", 0x0000, 0x0400, CRC(499f253a) SHA1(e13353194277f5d35e92db9b11912b5f392f51b7) ) @@ -4011,6 +4066,22 @@ ROM_START( galxwarst ) ROM_LOAD( "02.2", 0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) ROM_END +ROM_START( galxwarst2 ) // only ROMs were available, no PCB so the PROMs question remains + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "gv01.bin", 0x0000, 0x0400, CRC(0eeb9952) SHA1(35b4c2161773a55a9305afd7e9a054f29c12648c) ) + ROM_LOAD( "gv02.bin", 0x0400, 0x0400, CRC(d385c224) SHA1(9537989a467213a0b0d5685293c8c099625b8f55) ) + ROM_LOAD( "gv03.bin", 0x0800, 0x0400, CRC(bb9201af) SHA1(4cbaa018e72ee10e27e0b0f09d98b869638319db) ) + ROM_LOAD( "gv04.bin", 0x0c00, 0x0400, CRC(9a2a5b68) SHA1(7576315f5766ee5de85ac0f142d531a62066772a) ) + ROM_LOAD( "gv05.bin", 0x4000, 0x0400, CRC(43ac3f02) SHA1(522d8fc71f66f9e7303da25826a065b808e8891c) ) + ROM_LOAD( "gv06.bin", 0x4400, 0x0400, CRC(3243af69) SHA1(ccfc97c07f82bf8f3eb0225e5f7832f722631251) ) + + ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ + /* !! not dumped yet, these were taken from sisv/intruder */ + /* Or are colormaps generated by a group of TTLs, similar to dai3wksi? */ + ROM_LOAD( "01.1", 0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) + ROM_LOAD( "02.2", 0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) +ROM_END + ROM_START( starw ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "roma", 0x0000, 0x0400, CRC(60e8993c) SHA1(0bdf163ff0f2e6a8771987d4e7ac604c45af21b8) ) @@ -4924,147 +4995,150 @@ ROM_START( attackfc ) ROM_END -/* board # rom parent machine inp init monitor, .. */ +// year rom parent machine inp state init monitor ... // Taito games (+clones), starting with Space Invaders -GAME( 1978, sisv1, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1978, sisv2, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1978, sisv3, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1978, sisv, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 4)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAMEL(1978, sitv1, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (TV Version rev 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1978, sitv, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (TV Version rev 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAME( 1979, sicv, invaders, invadpt2, sicv, driver_device, 0, ROT270, "Taito", "Space Invaders (CV Version, larger roms)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, sicv1, invaders, invadpt2, sicv, driver_device, 0, ROT270, "Taito", "Space Invaders (CV Version, smaller roms)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAMEL(1978, invadrmr, invaders, invaders, invadrmr, driver_device, 0, ROT270, "Taito / Model Racing", "Space Invaders (Model Racing)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? -GAMEL(1978, invaderl, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Logitec", "Space Invaders (Logitec)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? -GAMEL(1978, spcewars, invaders, spcewars, spcewars, driver_device, 0, ROT270, "Taito / Sanritsu", "Space War (Sanritsu)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? -GAMEL(1978, spceking, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Leijac Corporation", "Space King", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? -GAMEL(1979, cosmicmo, invaders, cosmicmo, cosmicmo, driver_device, 0, ROT270, "Taito / Universal", "Cosmic Monsters (version II)", MACHINE_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg? -GAMEL(1979, cosmicm2, invaders, cosmicmo, cosmicmo, driver_device, 0, ROT270, "Taito / Universal", "Cosmic Monsters 2", MACHINE_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg? -GAMEL(1980?,sinvzen, invaders, invaders, sinvzen, driver_device, 0, ROT270, "Taito / Zenitone-Microsec Ltd.", "Super Invaders (Zenitone-Microsec)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? -GAMEL(1980, ultrainv, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Konami", "Ultra Invaders", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? -GAMEL(1978, spaceatt, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1978, spaceattbp, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bproms)(bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1978, spaceatt2k, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (2k roms)(bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1978, cosmicin, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg", "Cosmic Invaders (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1978, galmonst, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Laguna S.A.)", "Galaxy Monsters (Laguna S.A. Spanish bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1980, spaceat2, invaders, invaders, spaceat2, driver_device, 0, ROT270, "bootleg (Video Games UK)", "Space Attack II (bootleg of Super Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // bootleg of Zenitone-Microsec Super Invaders -GAMEL(1979, spacecom, invaders, spacecom, spacecom, _8080bw_state, spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spacecom ) -GAME( 1978, spacerng, invaders, spacerng, sitv, driver_device, 0, ROT90, "bootleg (Leisure Time Electronics)", "Space Ranger (bootleg of Space Invaders)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // many modifications -GAMEL(19??, invasion, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (Sidam)", "Invasion (Sidam)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(19??, invasiona, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg", "Invasion (bootleg set 1, normal graphics)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX -GAMEL(19??, invasionb, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg", "Invasion (bootleg set 2, no copyright)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(19??, invasionrz, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 3, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders ) -GAMEL(19??, invasionrza,invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 4, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders ) -GAMEL(19??, invadersem, invaders, invaders, sitv, driver_device, 0, ROT270, "Electromar", "Space Invaders (Electromar, Spanish)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // possibly licensed -GAMEL(1978, superinv, invaders, invaders, superinv, driver_device, 0, ROT270, "bootleg", "Super Invaders (bootleg set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version -GAMEL(1978, sinvemag, invaders, invaders, sinvemag, driver_device, 0, ROT270, "bootleg (Emag)", "Super Invaders (bootleg set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version -GAMEL(1980, searthin, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1980, searthina, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1980, searthie, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg (Electrocoin)", "Super Earth Invasion (set 3)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(19??, alieninv, invaders, invaders, alieninv, driver_device, 0, ROT270, "bootleg (Margamatics)", "Alien Invasion", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(19??, alieninvp2, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg", "Alien Invasion Part II", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1979, jspecter, invaders, invaders, jspecter, driver_device, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1979, jspecter2, invaders, invaders, jspecter, driver_device, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAMEL(1978, spacewr3, invaders, spcewars, sicv, driver_device, 0, ROT270, "bootleg", "Space War Part 3", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // unrelated to Sanritsu's version? -GAMEL(1978, invader4, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg", "Space Invaders Part Four", MACHINE_SUPPORTS_SAVE, layout_invaders ) -GAME( 1978, darthvdr, invaders, darthvdr, darthvdr, driver_device, 0, ROT270, "bootleg", "Darth Vader (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAMEL(19??, tst_invd, invaders, invaders, sicv, driver_device, 0, ROT0, "", "Space Invaders Test ROM", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAME( 1978, sisv1, invaders, invaders, sitv, mw8080bw_state, 0, ROT270, "Taito", "Space Invaders (SV Version rev 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1978, sisv2, invaders, invaders, sitv, mw8080bw_state, 0, ROT270, "Taito", "Space Invaders (SV Version rev 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1978, sisv3, invaders, invaders, sitv, mw8080bw_state, 0, ROT270, "Taito", "Space Invaders (SV Version rev 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1978, sisv, invaders, invaders, sitv, mw8080bw_state, 0, ROT270, "Taito", "Space Invaders (SV Version rev 4)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL(1978, sitv1, invaders, invaders, sitv, mw8080bw_state, 0, ROT270, "Taito", "Space Invaders (TV Version rev 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1978, sitv, invaders, invaders, sitv, mw8080bw_state, 0, ROT270, "Taito", "Space Invaders (TV Version rev 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAME( 1979, sicv, invaders, invadpt2, sicv, _8080bw_state, 0, ROT270, "Taito", "Space Invaders (CV Version, larger roms)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, sicv1, invaders, invadpt2, sicv, _8080bw_state, 0, ROT270, "Taito", "Space Invaders (CV Version, smaller roms)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL(1978, invadrmr, invaders, invaders, invadrmr, mw8080bw_state, 0, ROT270, "Taito / Model Racing", "Space Invaders (Model Racing)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? +GAMEL(1978, invaderl, invaders, invaders, sicv, mw8080bw_state, 0, ROT270, "Taito / Logitec", "Space Invaders (Logitec)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? +GAMEL(1978, spcewars, invaders, spcewars, spcewars, _8080bw_state, 0, ROT270, "Taito / Sanritsu", "Space War (Sanritsu)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? +GAME (1979, spcewarla, invaders, spcewarla, spcewars, _8080bw_state, 0, ROT270, "bootleg (Leisure and Allied)", "Space War (Leisure and Allied)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // unclassified, licensed or bootleg? +GAMEL(1978, spceking, invaders, invaders, sicv, mw8080bw_state, 0, ROT270, "Taito / Leijac Corporation", "Space King", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? +GAMEL(1979, cosmicmo, invaders, cosmicmo, cosmicmo, _8080bw_state, 0, ROT270, "Taito / Universal", "Cosmic Monsters (version II)", MACHINE_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg? +GAMEL(1979, cosmicm2, invaders, cosmicmo, cosmicmo, _8080bw_state, 0, ROT270, "Taito / Universal", "Cosmic Monsters 2", MACHINE_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg? +GAMEL(1980?,sinvzen, invaders, invaders, sinvzen, mw8080bw_state, 0, ROT270, "Taito / Zenitone-Microsec Ltd.", "Super Invaders (Zenitone-Microsec)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? +GAMEL(1980, ultrainv, invaders, invaders, sicv, mw8080bw_state, 0, ROT270, "Taito / Konami", "Ultra Invaders", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? +GAMEL(1978, spaceatt, invaders, invaders, sicv, mw8080bw_state, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1978, spaceattbp, invaders, invaders, sicv, mw8080bw_state, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bproms)(bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1978, spaceatt2k, invaders, invaders, sicv, mw8080bw_state, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (2k roms)(bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1978, cosmicin, invaders, invaders, sicv, mw8080bw_state, 0, ROT270, "bootleg", "Cosmic Invaders (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1978, galmonst, invaders, invaders, sicv, mw8080bw_state, 0, ROT270, "bootleg (Laguna S.A.)", "Galaxy Monsters (Laguna S.A. Spanish bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1980, spaceat2, invaders, invaders, spaceat2, mw8080bw_state, 0, ROT270, "bootleg (Video Games UK)", "Space Attack II (bootleg of Super Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // bootleg of Zenitone-Microsec Super Invaders +GAMEL(1979, spacecom, invaders, spacecom, spacecom, _8080bw_state, spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spacecom ) +GAME( 1978, spacerng, invaders, spacerng, sitv, _8080bw_state, 0, ROT90, "bootleg (Leisure Time Electronics)", "Space Ranger", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // many modifications +GAMEL(19??, invasion, invaders, invaders, invasion, mw8080bw_state, 0, ROT270, "bootleg (Sidam)", "Invasion (Sidam)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(19??, invasiona, invaders, invaders, invasion, mw8080bw_state, 0, ROT270, "bootleg", "Invasion (bootleg set 1, normal graphics)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX +GAMEL(19??, invasionb, invaders, invaders, invasion, mw8080bw_state, 0, ROT270, "bootleg", "Invasion (bootleg set 2, no copyright)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(19??, invasionrz, invaders, invaders, invasion, mw8080bw_state, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 3, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders ) +GAMEL(19??, invasionrza,invaders, invaders, invasion, mw8080bw_state, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 4, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders ) +GAMEL(19??, invadersem, invaders, invaders, sitv, mw8080bw_state, 0, ROT270, "Electromar", "Space Invaders (Electromar, Spanish)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // possibly licensed +GAMEL(1978, superinv, invaders, invaders, superinv, mw8080bw_state, 0, ROT270, "bootleg", "Super Invaders (bootleg set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version +GAMEL(1978, sinvemag, invaders, invaders, sinvemag, mw8080bw_state, 0, ROT270, "bootleg (Emag)", "Super Invaders (bootleg set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version +GAMEL(1980, searthin, invaders, invaders, searthin, mw8080bw_state, 0, ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1980, searthina, invaders, invaders, searthin, mw8080bw_state, 0, ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1980, searthie, invaders, invaders, searthin, mw8080bw_state, 0, ROT270, "bootleg (Electrocoin)", "Super Earth Invasion (set 3)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(19??, alieninv, invaders, invaders, alieninv, mw8080bw_state, 0, ROT270, "bootleg (Margamatics)", "Alien Invasion", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(19??, alieninvp2, invaders, invaders, searthin, mw8080bw_state, 0, ROT270, "bootleg", "Alien Invasion Part II", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1979, jspecter, invaders, invaders, jspecter, mw8080bw_state, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1979, jspecter2, invaders, invaders, jspecter, mw8080bw_state, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1978, spacewr3, invaders, spcewars, sicv, _8080bw_state, 0, ROT270, "bootleg", "Space War Part 3", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // unrelated to Sanritsu's version? +GAMEL(1978, swipeout, invaders, spcewars, sicv, _8080bw_state, 0, ROT270, "bootleg (Beyer and Brown)", "Space Wipeout", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAMEL(1978, invader4, invaders, invaders, sicv, mw8080bw_state, 0, ROT270, "bootleg", "Space Invaders Part Four", MACHINE_SUPPORTS_SAVE, layout_invaders ) +GAME( 1978, darthvdr, invaders, darthvdr, darthvdr, _8080bw_state, 0, ROT270, "bootleg", "Darth Vader (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAMEL(19??, tst_invd, invaders, invaders, sicv, mw8080bw_state, 0, ROT0, "", "Space Invaders Test ROM", MACHINE_SUPPORTS_SAVE, layout_invaders ) // other Taito -GAME( 1979, invadpt2, 0, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito", "Space Invaders Part II (Taito)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1979, invadpt2br, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito do Brasil", "Space Invaders Part II (Brazil)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1980, invaddlx, invadpt2, invaders, invadpt2, driver_device, 0, ROT270, "Taito (Midway license)", "Space Invaders Deluxe", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, moonbase, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito / Nichibutsu", "Moon Base Zeta (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has a 'Taito Corp' string hidden away in the rom - to display it, press P1 Right+P1 Fire+2P Start then P1 Left+P1 Fire+P1 Start at the attract gameplay sequence -GAME( 1979, moonbasea, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito / Nichibutsu", "Moon Base Zeta (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has the same string replaced with Nichibutsu, no other differences +GAME( 1979, invadpt2, 0, invadpt2, invadpt2, _8080bw_state, 0, ROT270, "Taito", "Space Invaders Part II (Taito)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1979, invadpt2br, invadpt2, invadpt2, invadpt2, _8080bw_state, 0, ROT270, "Taito do Brasil", "Space Invaders Part II (Brazil)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1980, invaddlx, invadpt2, invaders, invadpt2, mw8080bw_state, 0, ROT270, "Taito (Midway license)", "Space Invaders Deluxe", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, moonbase, invadpt2, invadpt2, invadpt2, _8080bw_state, 0, ROT270, "Taito / Nichibutsu", "Moon Base Zeta (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has a 'Taito Corp' string hidden away in the rom - to display it, press P1 Right+P1 Fire+2P Start then P1 Left+P1 Fire+P1 Start at the attract gameplay sequence +GAME( 1979, moonbasea, invadpt2, invadpt2, invadpt2, _8080bw_state, 0, ROT270, "Taito / Nichibutsu", "Moon Base Zeta (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has the same string replaced with Nichibutsu, no other differences -GAME( 1980, spclaser, 0, invadpt2, spclaser, driver_device, 0, ROT270, "Taito", "Space Laser", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, intruder, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "Taito (Game Plan license)", "Intruder", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1980, laser, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "bootleg (Leisure Time Electronics)", "Astro Laser (bootleg of Space Laser)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, spcewarl, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "Leijac Corporation", "Space War (Leijac Corporation)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Taito's version is actually a spin-off of this? +GAME( 1980, spclaser, 0, invadpt2, spclaser, _8080bw_state, 0, ROT270, "Taito", "Space Laser", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, intruder, spclaser, invadpt2, spclaser, _8080bw_state, 0, ROT270, "Taito (Game Plan license)", "Intruder", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1980, laser, spclaser, invadpt2, spclaser, _8080bw_state, 0, ROT270, "bootleg (Leisure Time Electronics)", "Astro Laser (bootleg of Space Laser)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, spcewarl, spclaser, invadpt2, spclaser, _8080bw_state, 0, ROT270, "Leijac Corporation", "Space War (Leijac Corporation)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Taito's version is actually a spin-off of this? -GAME( 1979, lrescue, 0, lrescue, lrescue, driver_device, 0, ROT270, "Taito", "Lunar Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1979, grescue, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "Taito (Universal license?)", "Galaxy Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1980, mlander, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Leisure Time Electronics)", "Moon Lander (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, lrescuem, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1979, lrescuem2, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1979, desterth, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg", "Destination Earth (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAMEL( 1980,escmars, lrescue, escmars, lrescue, driver_device, 0, ROT270, "bootleg", "Escape from Mars (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_escmars ) +GAME( 1979, lrescue, 0, lrescue, lrescue, _8080bw_state, 0, ROT270, "Taito", "Lunar Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1979, grescue, lrescue, lrescue, lrescue, _8080bw_state, 0, ROT270, "Taito (Universal license?)", "Galaxy Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1980, mlander, lrescue, lrescue, lrescue, _8080bw_state, 0, ROT270, "bootleg (Leisure Time Electronics)", "Moon Lander (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, lrescuem, lrescue, lrescue, lrescue, _8080bw_state, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1979, lrescuem2, lrescue, lrescue, lrescue, _8080bw_state, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1979, desterth, lrescue, lrescue, lrescue, _8080bw_state, 0, ROT270, "bootleg", "Destination Earth (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAMEL( 1980,escmars, lrescue, escmars, lrescue, _8080bw_state, 0, ROT270, "bootleg", "Escape from Mars (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_escmars ) -GAME( 1979, schaser, 0, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, schasera, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, schaserb, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, schaserc, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS ) -GAME( 1979, schasercv, schaser, schasercv, schasercv, driver_device, 0, ROT270, "Taito", "Space Chaser (CV version - set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS ) -GAME( 1979, schaserm, schaser, schaser, schaserm, driver_device, 0, ROT270, "bootleg (Model Racing)", "Space Chaser (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE ) // on original Taito PCB, hacked to be harder? +GAME( 1979, schaser, 0, schaser, schaser, _8080bw_state, 0, ROT270, "Taito", "Space Chaser (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, schasera, schaser, schaser, schaser, _8080bw_state, 0, ROT270, "Taito", "Space Chaser (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, schaserb, schaser, schaser, schaser, _8080bw_state, 0, ROT270, "Taito", "Space Chaser (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, schaserc, schaser, schaser, schaser, _8080bw_state, 0, ROT270, "Taito", "Space Chaser (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS ) +GAME( 1979, schasercv, schaser, schasercv, schasercv, _8080bw_state, 0, ROT270, "Taito", "Space Chaser (CV version - set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS ) +GAME( 1979, schaserm, schaser, schaser, schaserm, _8080bw_state, 0, ROT270, "bootleg (Model Racing)", "Space Chaser (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE ) // on original Taito PCB, hacked to be harder? -GAME( 1979, sflush, 0, sflush, sflush, driver_device, 0, ROT270, "Taito", "Straight Flush", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL) +GAME( 1979, sflush, 0, sflush, sflush, _8080bw_state, 0, ROT270, "Taito", "Straight Flush", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL) -GAME( 1980, lupin3, 0, lupin3, lupin3, driver_device, 0, ROT270, "Taito", "Lupin III (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1980, lupin3a, lupin3, lupin3a, lupin3a, driver_device, 0, ROT270, "Taito", "Lupin III (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1980, lupin3, 0, lupin3, lupin3, _8080bw_state, 0, ROT270, "Taito", "Lupin III (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1980, lupin3a, lupin3, lupin3a, lupin3a, _8080bw_state, 0, ROT270, "Taito", "Lupin III (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1980, polaris, 0, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (Latest version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, polarisa, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (First revision)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, polariso, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (Original version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, polarisbr, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito do Brasil", "Polaris (Brazil)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, polaris, 0, polaris, polaris, _8080bw_state, 0, ROT270, "Taito", "Polaris (Latest version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, polarisa, polaris, polaris, polaris, _8080bw_state, 0, ROT270, "Taito", "Polaris (First revision)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, polariso, polaris, polaris, polaris, _8080bw_state, 0, ROT270, "Taito", "Polaris (Original version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, polarisbr, polaris, polaris, polaris, _8080bw_state, 0, ROT270, "Taito do Brasil", "Polaris (Brazil)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, ballbomb, 0, ballbomb, ballbomb, driver_device, 0, ROT270, "Taito", "Balloon Bomber", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* missing clouds */ +GAME( 1980, ballbomb, 0, ballbomb, ballbomb, _8080bw_state, 0, ROT270, "Taito", "Balloon Bomber", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* missing clouds */ -GAME( 1980, indianbt, 0, indianbt, indianbt, driver_device, 0, ROT270, "Taito", "Indian Battle", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1983, indianbtbr, indianbt, indianbtbr,indianbtbr,driver_device, 0, ROT270, "Taito do Brasil", "Indian Battle (Brazil)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1980, indianbt, 0, indianbt, indianbt, _8080bw_state, 0, ROT270, "Taito", "Indian Battle", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, indianbtbr, indianbt, indianbtbr,indianbtbr,_8080bw_state, 0, ROT270, "Taito do Brasil", "Indian Battle (Brazil)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1980, steelwkr, 0, steelwkr, steelwkr, driver_device, 0, ROT0 , "Taito", "Steel Worker", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1980, steelwkr, 0, steelwkr, steelwkr, _8080bw_state, 0, ROT0 , "Taito", "Steel Worker", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAMEL(1980?,galactic, 0, invaders, galactic, driver_device, 0, ROT270, "Taito do Brasil", "Galactica - Batalha Espacial", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic ) -GAMEL(1980?,spacmiss, galactic, invaders, galactic, driver_device, 0, ROT270, "bootleg?", "Space Missile - Space Fighting Game", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic ) +GAMEL(1980?,galactic, 0, invaders, galactic, mw8080bw_state, 0, ROT270, "Taito do Brasil", "Galactica - Batalha Espacial", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic ) +GAMEL(1980?,spacmiss, galactic, invaders, galactic, mw8080bw_state, 0, ROT270, "bootleg?", "Space Missile - Space Fighting Game", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic ) // Misc. manufacturers -GAME( 1979, galxwars, 0, invadpt2, galxwars, driver_device, 0, ROT270, "Universal", "Galaxy Wars (Universal set 1)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, galxwars2, galxwars, invadpt2, galxwars, driver_device, 0, ROT270, "Universal", "Galaxy Wars (Universal set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, galxwarst, galxwars, invadpt2, galxwars, driver_device, 0, ROT270, "Universal (Taito license?)", "Galaxy Wars (Taito?)" , MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Copyright not displayed -GAME( 1979, starw, galxwars, invaders, galxwars, driver_device, 0, ROT270, "bootleg", "Star Wars (bootleg of Galaxy Wars, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, starw1, galxwars, starw1, galxwars, driver_device, 0, ROT270, "bootleg (Yamashita)", "Star Wars (bootleg of Galaxy Wars, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, galxwars, 0, invadpt2, galxwars, _8080bw_state, 0, ROT270, "Universal", "Galaxy Wars (Universal set 1)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, galxwars2, galxwars, invadpt2, galxwars, _8080bw_state, 0, ROT270, "Universal", "Galaxy Wars (Universal set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, galxwarst, galxwars, invadpt2, galxwars, _8080bw_state, 0, ROT270, "Universal (Taito license?)", "Galaxy Wars (Taito?)" , MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Copyright not displayed +GAME( 1979, galxwarst2, galxwars, invadpt2, galxwars, _8080bw_state, 0, ROT270, "Universal (Taito Corporation license)", "Galaxy Wars (Taito)" , MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Copyright displayed, quite different codebase from galxwarst +GAME( 1979, starw, galxwars, invaders, galxwars, mw8080bw_state, 0, ROT270, "bootleg", "Star Wars (bootleg of Galaxy Wars, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, starw1, galxwars, starw1, galxwars, _8080bw_state, 0, ROT270, "bootleg (Yamashita)", "Star Wars (bootleg of Galaxy Wars, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, cosmo, 0, cosmo, cosmo, driver_device, 0, ROT90, "TDS & MINTS", "Cosmo", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1979, cosmo, 0, cosmo, cosmo, _8080bw_state, 0, ROT90, "TDS & MINTS", "Cosmo", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1980?,invrvnge, 0, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // copyright is either late-1980, or early-1981 -GAME( 1980?,invrvngea, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -GAME( 1980?,invrvngeb, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -GAME( 1980?,invrvngedu, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd. (Dutchford license)", "Invader's Revenge (Dutchford, single PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -GAME( 1980?,invrvngegw, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd. (Game World license)", "Invader's Revenge (Game World, single PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +GAME( 1980?,invrvnge, 0, invrvnge, invrvnge, _8080bw_state, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // copyright is either late-1980, or early-1981 +GAME( 1980?,invrvngea, invrvnge, invrvnge, invrvnge, _8080bw_state, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +GAME( 1980?,invrvngeb, invrvnge, invrvnge, invrvnge, _8080bw_state, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +GAME( 1980?,invrvngedu, invrvnge, invrvnge, invrvnge, _8080bw_state, 0, ROT270, "Zenitone-Microsec Ltd. (Dutchford license)", "Invader's Revenge (Dutchford, single PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +GAME( 1980?,invrvngegw, invrvnge, invrvnge, invrvnge, _8080bw_state, 0, ROT270, "Zenitone-Microsec Ltd. (Game World license)", "Invader's Revenge (Game World, single PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -GAME( 1980, vortex, 0, vortex, vortex, _8080bw_state, vortex, ROT270, "Zilec Electronics", "Vortex", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) /* Encrypted 8080/IO */ +GAME( 1980, vortex, 0, vortex, vortex, _8080bw_state, vortex, ROT270, "Zilec Electronics", "Vortex", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) /* Encrypted 8080/IO */ -GAME( 1979, rollingc, 0, rollingc, rollingc, driver_device, 0, ROT270, "Nichibutsu", "Rolling Crash / Moon Base", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, rollingc, 0, rollingc, rollingc, _8080bw_state, 0, ROT270, "Nichibutsu", "Rolling Crash / Moon Base", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, ozmawars, 0, invadpt2, ozmawars, driver_device, 0, ROT270, "SNK", "Ozma Wars (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, ozmawars2, ozmawars, invadpt2, ozmawars, driver_device, 0, ROT270, "SNK", "Ozma Wars (set 2)", MACHINE_SUPPORTS_SAVE ) /* Uses Taito's three board color version of Space Invaders PCB */ -GAME( 1979, ozmawarsmr, ozmawars, invaders, ozmawars, driver_device, 0, ROT270, "bootleg (Model Racing)", "Ozma Wars (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, spaceph, ozmawars, invaders, spaceph, driver_device, 0, ROT270, "bootleg? (Zilec Games)", "Space Phantoms (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, solfight, ozmawars, invaders, ozmawars, driver_device, 0, ROT270, "bootleg", "Solar Fight (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, ozmawars, 0, invadpt2, ozmawars, _8080bw_state, 0, ROT270, "SNK", "Ozma Wars (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, ozmawars2, ozmawars, invadpt2, ozmawars, _8080bw_state, 0, ROT270, "SNK", "Ozma Wars (set 2)", MACHINE_SUPPORTS_SAVE ) /* Uses Taito's three board color version of Space Invaders PCB */ +GAME( 1979, ozmawarsmr, ozmawars, invaders, ozmawars, mw8080bw_state, 0, ROT270, "bootleg (Model Racing)", "Ozma Wars (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, spaceph, ozmawars, invaders, spaceph, mw8080bw_state, 0, ROT270, "bootleg? (Zilec Games)", "Space Phantoms (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, solfight, ozmawars, invaders, ozmawars, mw8080bw_state, 0, ROT270, "bootleg", "Solar Fight (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, yosakdon, 0, yosakdon, yosakdon, driver_device, 0, ROT270, "Wing", "Yosaku To Donbei (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1979, yosakdona, yosakdon, yosakdon, yosakdon, driver_device, 0, ROT270, "Wing", "Yosaku To Donbei (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1979, yosakdon, 0, yosakdon, yosakdon, _8080bw_state, 0, ROT270, "Wing", "Yosaku To Donbei (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1979, yosakdona, yosakdon, yosakdon, yosakdon, _8080bw_state, 0, ROT270, "Wing", "Yosaku To Donbei (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAMEL(1979, shuttlei, 0, shuttlei, shuttlei, driver_device, 0, ROT270, "Omori Electric Co., Ltd.", "Shuttle Invader", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei ) +GAMEL(1979, shuttlei, 0, shuttlei, shuttlei, _8080bw_state, 0, ROT270, "Omori Electric Co., Ltd.", "Shuttle Invader", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei ) -GAMEL(1979, skylove, 0, shuttlei, skylove, driver_device, 0, ROT270, "Omori Electric Co., Ltd.", "Sky Love", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei ) +GAMEL(1979, skylove, 0, shuttlei, skylove, _8080bw_state, 0, ROT270, "Omori Electric Co., Ltd.", "Sky Love", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei ) -GAME (1978, claybust, 0, claybust, claybust, driver_device, 0, ROT0, "Model Racing", "Claybuster", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // no titlescreen, Claybuster according to flyers +GAME (1978, claybust, 0, claybust, claybust, _8080bw_state, 0, ROT0, "Model Racing", "Claybuster", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // no titlescreen, Claybuster according to flyers -GAMEL(1980, gunchamp, 0, claybust, gunchamp, driver_device, 0, ROT0, "Model Racing", "Gun Champ", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_gunchamp ) // no titlescreen, Gun Champ according to original cab +GAMEL(1980, gunchamp, 0, claybust, gunchamp, _8080bw_state, 0, ROT0, "Model Racing", "Gun Champ", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_gunchamp ) // no titlescreen, Gun Champ according to original cab -GAME( 1980?,astropal, 0, astropal, astropal, driver_device, 0, ROT0, "Sidam?", "Astropal", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1980?,astropal, 0, astropal, astropal, _8080bw_state, 0, ROT0, "Sidam?", "Astropal", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAMEL(1979?,attackfc, 0, attackfc, attackfc, _8080bw_state, attackfc, ROT0, "Electronic Games Systems", "Attack Force", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_attackfc ) +GAMEL(1979?,attackfc, 0, attackfc, attackfc, _8080bw_state, attackfc, ROT0, "Electronic Games Systems", "Attack Force", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_attackfc ) -GAME( 2002, invmulti, 0, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2002, invmultim3a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2002, invmultim2c,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02C)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2002, invmultim2a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2002, invmultim1a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.01A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2002, invmultit3d,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (T8.03D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2002, invmultis3a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.83A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2002, invmultis2a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.82A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2002, invmultis1a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.81A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2002, invmultip, invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmulti, 0, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmultim3a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmultim2c,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02C)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmultim2a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmultim1a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.01A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmultit3d,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (T8.03D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmultis3a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.83A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmultis2a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.82A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmultis1a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.81A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, invmultip, invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/88games.cpp b/src/mame/drivers/88games.cpp index 17364b242d5..870915b813d 100644 --- a/src/mame/drivers/88games.cpp +++ b/src/mame/drivers/88games.cpp @@ -302,7 +302,7 @@ void _88games_state::machine_reset() m_k88games_priority = 0; } -static MACHINE_CONFIG_START( 88games, _88games_state ) +static MACHINE_CONFIG_START( 88games ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* ? */ @@ -536,6 +536,6 @@ ROM_END * *************************************/ -GAME( 1988, 88games, 0, 88games, 88games, driver_device, 0, ROT0, "Konami", "'88 Games", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, konami88, 88games, 88games, 88games, driver_device, 0, ROT0, "Konami", "Konami '88", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hypsptsp, 88games, 88games, 88games, driver_device, 0, ROT0, "Konami", "Hyper Sports Special (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, 88games, 0, 88games, 88games, _88games_state, 0, ROT0, "Konami", "'88 Games", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, konami88, 88games, 88games, 88games, _88games_state, 0, ROT0, "Konami", "Konami '88", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hypsptsp, 88games, 88games, 88games, _88games_state, 0, ROT0, "Konami", "Hyper Sports Special (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/a1supply.cpp b/src/mame/drivers/a1supply.cpp index 12f9a7447d1..145348a9701 100644 --- a/src/mame/drivers/a1supply.cpp +++ b/src/mame/drivers/a1supply.cpp @@ -46,7 +46,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -89,7 +89,7 @@ void a1supply_state::video_start() { } -static MACHINE_CONFIG_START( a1supply, a1supply_state ) +static MACHINE_CONFIG_START( a1supply ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -164,6 +164,6 @@ ROM_START( tvpoker ) ROM_END -GAME( 197?, tv21, 0, a1supply, 0, driver_device, 0, ROT0, "A-1 Supply", "T.V. 21", MACHINE_IS_SKELETON ) -GAME( 197?, tv21_3, 0, a1supply, 0, driver_device, 0, ROT0, "A-1 Supply", "T.V. 21 III", MACHINE_IS_SKELETON ) -GAME( 197?, tvpoker, 0, a1supply, 0, driver_device, 0, ROT0, "A-1 Supply", "T.V. Poker", MACHINE_IS_SKELETON ) +GAME( 197?, tv21, 0, a1supply, 0, a1supply_state, 0, ROT0, "A-1 Supply", "T.V. 21", MACHINE_IS_SKELETON ) +GAME( 197?, tv21_3, 0, a1supply, 0, a1supply_state, 0, ROT0, "A-1 Supply", "T.V. 21 III", MACHINE_IS_SKELETON ) +GAME( 197?, tvpoker, 0, a1supply, 0, a1supply_state, 0, ROT0, "A-1 Supply", "T.V. Poker", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/a2600.cpp b/src/mame/drivers/a2600.cpp index 1c949132035..a76e57746b9 100644 --- a/src/mame/drivers/a2600.cpp +++ b/src/mame/drivers/a2600.cpp @@ -570,7 +570,7 @@ static MACHINE_CONFIG_FRAGMENT(a2600_cartslot) MCFG_SOFTWARE_LIST_ADD("cass_list","a2600_cass") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( a2600, a2600_state ) +static MACHINE_CONFIG_START( a2600 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6507, MASTER_CLOCK_NTSC / 3) MCFG_M6502_DISABLE_DIRECT() @@ -619,7 +619,7 @@ static MACHINE_CONFIG_START( a2600, a2600_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( a2600p, a2600_state ) +static MACHINE_CONFIG_START( a2600p ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6507, MASTER_CLOCK_PAL / 3) MCFG_CPU_PROGRAM_MAP(a2600_mem) @@ -675,6 +675,6 @@ ROM_END #define rom_a2600p rom_a2600 -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS( 1977, a2600, 0, 0, a2600, a2600, driver_device, 0, "Atari", "Atari 2600 (NTSC)" , MACHINE_SUPPORTS_SAVE ) -CONS( 1978, a2600p, a2600, 0, a2600p, a2600, driver_device, 0, "Atari", "Atari 2600 (PAL)", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +CONS( 1977, a2600, 0, 0, a2600, a2600, a2600_state, 0, "Atari", "Atari 2600 (NTSC)" , MACHINE_SUPPORTS_SAVE ) +CONS( 1978, a2600p, a2600, 0, a2600p, a2600, a2600_state, 0, "Atari", "Atari 2600 (PAL)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp index 7b0cdd48a33..39389733bf7 100644 --- a/src/mame/drivers/a5105.cpp +++ b/src/mame/drivers/a5105.cpp @@ -556,7 +556,7 @@ static const z80_daisy_config a5105_daisy_chain[] = { nullptr } }; -static MACHINE_CONFIG_START( a5105, a5105_state ) +static MACHINE_CONFIG_START( a5105 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_15MHz / 4) MCFG_CPU_PROGRAM_MAP(a5105_mem) @@ -623,5 +623,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, a5105, 0, 0, a5105, a5105, driver_device, 0, "VEB Robotron", "BIC A5105", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, a5105, 0, 0, a5105, a5105, a5105_state, 0, "VEB Robotron", "BIC A5105", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/a51xx.cpp b/src/mame/drivers/a51xx.cpp index 80162f77bfd..b38b668591f 100644 --- a/src/mame/drivers/a51xx.cpp +++ b/src/mame/drivers/a51xx.cpp @@ -112,7 +112,7 @@ static GFXDECODE_START( a51xx ) GFXDECODE_ENTRY( "chargen", 0x0000, a51xx_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( a5120, a51xx_state ) +static MACHINE_CONFIG_START( a5120 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(a5120_mem) @@ -174,6 +174,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, a5120, 0, 0, a5120, a5120, driver_device, 0, "VEB Robotron", "A5120", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1983, a5130, a5120, 0, a5130, a5130, driver_device, 0, "VEB Robotron", "A5130", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, a5120, 0, 0, a5120, a5120, a51xx_state, 0, "VEB Robotron", "A5120", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1983, a5130, a5120, 0, a5130, a5130, a51xx_state, 0, "VEB Robotron", "A5130", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/a6809.cpp b/src/mame/drivers/a6809.cpp index fbf33520990..744d855fd69 100644 --- a/src/mame/drivers/a6809.cpp +++ b/src/mame/drivers/a6809.cpp @@ -73,7 +73,7 @@ public: , m_crtc(*this, "mc6845") { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(videoram_r); DECLARE_WRITE8_MEMBER(a6809_address_w); DECLARE_WRITE8_MEMBER(a6809_register_w); @@ -203,23 +203,23 @@ TIMER_DEVICE_CALLBACK_MEMBER(a6809_state::a6809_p) } } -WRITE8_MEMBER( a6809_state::kbd_put ) +void a6809_state::kbd_put(u8 data) { uint8_t d = data & 0x7f; if (d == 8) d = 0x7f; // allow backspace to work - m_via->write_pb0((d>>0)&1); - m_via->write_pb1((d>>1)&1); - m_via->write_pb2((d>>2)&1); - m_via->write_pb3((d>>3)&1); - m_via->write_pb4((d>>4)&1); - m_via->write_pb5((d>>5)&1); - m_via->write_pb6((d>>6)&1); + m_via->write_pb0(BIT(d, 0)); + m_via->write_pb1(BIT(d, 1)); + m_via->write_pb2(BIT(d, 2)); + m_via->write_pb3(BIT(d, 3)); + m_via->write_pb4(BIT(d, 4)); + m_via->write_pb5(BIT(d, 5)); + m_via->write_pb6(BIT(d, 6)); m_via->write_cb1(1); m_via->write_cb1(0); } -static MACHINE_CONFIG_START( a6809, a6809_state ) +static MACHINE_CONFIG_START( a6809 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6809E, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(a6809_mem) @@ -254,7 +254,7 @@ static MACHINE_CONFIG_START( a6809, a6809_state ) MCFG_SAA5050_SCREEN_SIZE(40, 25, 40) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(a6809_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(a6809_state, kbd_put)) MCFG_CASSETTE_ADD( "cassette" ) MCFG_TIMER_DRIVER_ADD_PERIODIC("a6809_c", a6809_state, a6809_c, attotime::from_hz(4800)) MCFG_TIMER_DRIVER_ADD_PERIODIC("a6809_p", a6809_state, a6809_p, attotime::from_hz(40000)) @@ -272,4 +272,4 @@ ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, a6809, 0, 0, a6809, a6809, driver_device, 0, "Acorn", "System 3 (6809 CPU)", 0 ) +COMP( 1980, a6809, 0, 0, a6809, a6809, a6809_state, 0, "Acorn", "System 3 (6809 CPU)", 0 ) diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp index 83df21b4391..cc6974e19c3 100644 --- a/src/mame/drivers/a7150.cpp +++ b/src/mame/drivers/a7150.cpp @@ -141,10 +141,10 @@ WRITE8_MEMBER(a7150_state::ppi_c_w) // b7 } -#define KGS_ST_OBF 0x01 -#define KGS_ST_IBF 0x02 -#define KGS_ST_INT 0x04 -#define KGS_ST_ERR 0x80 +#define KGS_ST_OBF 0x01 +#define KGS_ST_IBF 0x02 +#define KGS_ST_INT 0x04 +#define KGS_ST_ERR 0x80 READ8_MEMBER(a7150_state::kgs_host_r) { @@ -256,7 +256,7 @@ WRITE8_MEMBER(a7150_state::a7150_kgs_w) { case 0: m_kgs_ctrl &= ~(KGS_ST_ERR | KGS_ST_INT); -// m_pic8259->ir1_w(CLEAR_LINE); +// m_pic8259->ir1_w(CLEAR_LINE); break; case 1: @@ -281,7 +281,7 @@ static ADDRESS_MAP_START(a7150_mem, AS_PROGRAM, 16, a7150_state) ADDRESS_MAP_END static ADDRESS_MAP_START(a7150_io, AS_IO, 16, a7150_state) - ADDRESS_MAP_UNMAP_HIGH + ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x004a, 0x004b) AM_DEVWRITE8("isbc_215g", isbc_215g_device, write, 0x00ff) // KES board AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff) AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff) @@ -412,7 +412,7 @@ static const z80_daisy_config k7070_daisy_chain[] = * * (framebuffer and terminal should be slot devices.) */ -static MACHINE_CONFIG_START( a7150, a7150_state ) +static MACHINE_CONFIG_START( a7150 ) MCFG_CPU_ADD("maincpu", I8086, XTAL_9_832MHz/2) MCFG_CPU_PROGRAM_MAP(a7150_mem) MCFG_CPU_IO_MAP(a7150_io) @@ -422,8 +422,8 @@ static MACHINE_CONFIG_START( a7150, a7150_state ) // IFSP port on processor card MCFG_DEVICE_ADD("ppi8255", I8255, 0) -// MCFG_I8255_IN_PORTA_CB(DEVREAD8("cent_status_in", input_buffer_device, read)) -// MCFG_I8255_OUT_PORTB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) +// MCFG_I8255_IN_PORTA_CB(DEVREAD8("cent_status_in", input_buffer_device, read)) +// MCFG_I8255_OUT_PORTB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) MCFG_I8255_OUT_PORTC_CB(WRITE8(a7150_state, ppi_c_w)) MCFG_DEVICE_ADD("pit8253", PIT8253, 0) @@ -475,7 +475,7 @@ static MACHINE_CONFIG_START( a7150, a7150_state ) MCFG_Z80SIO_OUT_RTSA_CB(DEVWRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) MCFG_Z80SIO_OUT_TXDB_CB(DEVWRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE(a7150_state, kgs_iml_w)) -// MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE(a7150_state, kgs_ifss_loopback_w)) +// MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE(a7150_state, kgs_ifss_loopback_w)) // V.24 port (graphics tablet) MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, nullptr) @@ -502,11 +502,11 @@ ROM_START( a7150 ) ROM_REGION( 0x10000, "user2", ROMREGION_ERASEFF ) // ROM from A7100 ROM_LOAD( "KGS7070-152.bin", 0x0000, 0x2000, CRC(403f4235) SHA1(d07ccd40f8b600651d513f588bcf1ea4f15ed094)) -// ROM_LOAD( "KGS7070-153.rom", 0x0000, 0x2000, CRC(a72fe820) SHA1(4b77ab2b59ea8c3632986847ff359df26b16196b)) -// ROM_LOAD( "KGS7070-154.rom", 0x0000, 0x2000, CRC(2995ade0) SHA1(62516f2e1cb62698445f80fd823d39a1a78a7807)) +// ROM_LOAD( "KGS7070-153.rom", 0x0000, 0x2000, CRC(a72fe820) SHA1(4b77ab2b59ea8c3632986847ff359df26b16196b)) +// ROM_LOAD( "KGS7070-154.rom", 0x0000, 0x2000, CRC(2995ade0) SHA1(62516f2e1cb62698445f80fd823d39a1a78a7807)) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, a7150, 0, 0, a7150, a7150, driver_device, 0, "VEB Robotron", "A7150", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, a7150, 0, 0, a7150, a7150, a7150_state, 0, "VEB Robotron", "A7150", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/a7800.cpp b/src/mame/drivers/a7800.cpp index 9c61a85c3c3..d4d5360b4a4 100644 --- a/src/mame/drivers/a7800.cpp +++ b/src/mame/drivers/a7800.cpp @@ -283,8 +283,8 @@ static ADDRESS_MAP_START( a7800_mem, AS_PROGRAM, 8, a7800_state ) AM_RANGE(0x0020, 0x003f) AM_MIRROR(0x300) AM_DEVREADWRITE("maria", atari_maria_device, read, write) AM_RANGE(0x0040, 0x00ff) AM_RAMBANK("zpmirror") // mirror of 0x2040-0x20ff, for zero page AM_RANGE(0x0140, 0x01ff) AM_RAMBANK("spmirror") // mirror of 0x2140-0x21ff, for stack page - AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x160) AM_DEVICE("riot", mos6532_t, io_map) - AM_RANGE(0x0480, 0x04ff) AM_MIRROR(0x100) AM_DEVICE("riot", mos6532_t, ram_map) + AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x160) AM_DEVICE("riot", mos6532_new_device, io_map) + AM_RANGE(0x0480, 0x04ff) AM_MIRROR(0x100) AM_DEVICE("riot", mos6532_new_device, ram_map) AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("6116_1") AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("6116_2") // According to the official Software Guide, the RAM at 0x2000 is @@ -1351,7 +1351,7 @@ void a7800_state::machine_reset() m_bios_enabled = 0; } -static MACHINE_CONFIG_START( a7800_ntsc, a7800_state ) +static MACHINE_CONFIG_START( a7800_ntsc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, A7800_NTSC_Y1/8) /* 1.79 MHz (switches to 1.19 MHz on TIA or RIOT access) */ MCFG_CPU_PROGRAM_MAP(a7800_mem) @@ -1375,7 +1375,7 @@ static MACHINE_CONFIG_START( a7800_ntsc, a7800_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* devices */ - MCFG_DEVICE_ADD("riot", MOS6532n, A7800_NTSC_Y1/8) + MCFG_DEVICE_ADD("riot", MOS6532_NEW, A7800_NTSC_Y1/8) MCFG_MOS6530n_IN_PA_CB(READ8(a7800_state, riot_joystick_r)) MCFG_MOS6530n_IN_PB_CB(READ8(a7800_state, riot_console_button_r)) MCFG_MOS6530n_OUT_PB_CB(WRITE8(a7800_state, riot_button_pullup_w)) @@ -1402,7 +1402,7 @@ static MACHINE_CONFIG_DERIVED( a7800_pal, a7800_ntsc ) /* devices */ MCFG_DEVICE_REMOVE("riot") - MCFG_DEVICE_ADD("riot", MOS6532n, CLK_PAL) + MCFG_DEVICE_ADD("riot", MOS6532_NEW, CLK_PAL) MCFG_MOS6530n_IN_PA_CB(READ8(a7800_state, riot_joystick_r)) MCFG_MOS6530n_IN_PB_CB(READ8(a7800_state, riot_console_button_r)) MCFG_MOS6530n_OUT_PB_CB(WRITE8(a7800_state, riot_button_pullup_w)) @@ -1458,6 +1458,6 @@ DRIVER_INIT_MEMBER(a7800_state,a7800_pal) GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS( 1986, a7800, 0, 0, a7800_ntsc, a7800, a7800_state, a7800_ntsc, "Atari", "Atari 7800 (NTSC)" , 0) -CONS( 1986, a7800p, a7800, 0, a7800_pal, a7800, a7800_state, a7800_pal, "Atari", "Atari 7800 (PAL)" , 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +CONS( 1986, a7800, 0, 0, a7800_ntsc, a7800, a7800_state, a7800_ntsc, "Atari", "Atari 7800 (NTSC)" , 0) +CONS( 1986, a7800p, a7800, 0, a7800_pal, a7800, a7800_state, a7800_pal, "Atari", "Atari 7800 (PAL)" , 0) diff --git a/src/mame/drivers/aa310.cpp b/src/mame/drivers/aa310.cpp index 69e29745673..ba6aa80b829 100644 --- a/src/mame/drivers/aa310.cpp +++ b/src/mame/drivers/aa310.cpp @@ -89,6 +89,7 @@ #include "cpu/arm/arm.h" #include "formats/acorn_dsk.h" #include "formats/apd_dsk.h" +#include "formats/jfd_dsk.h" #include "machine/i2cmem.h" #include "machine/ram.h" #include "machine/wd_fdc.h" @@ -355,7 +356,8 @@ INPUT_PORTS_END FLOPPY_FORMATS_MEMBER( aa310_state::floppy_formats ) FLOPPY_ACORN_ADFS_NEW_FORMAT, FLOPPY_ACORN_ADFS_OLD_FORMAT, - FLOPPY_APD_FORMAT + FLOPPY_APD_FORMAT, + FLOPPY_JFD_FORMAT FLOPPY_FORMATS_END static SLOT_INTERFACE_START( aa310_floppies ) @@ -379,11 +381,11 @@ WRITE_LINE_MEMBER( archimedes_state::a310_kart_rx_w ) archimedes_clear_irq_b(ARCHIMEDES_IRQB_KBD_XMIT_EMPTY); } -static MACHINE_CONFIG_START( aa310, aa310_state ) +static MACHINE_CONFIG_START( aa310 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, XTAL_24MHz / 3) /* ARM2 8 MHz */ MCFG_CPU_PROGRAM_MAP(aa310_mem) - MCFG_ARM_COPRO(ARM_COPRO_TYPE_VL86C020) + MCFG_ARM_COPRO(VL86C020) MCFG_DEVICE_ADD("kart", AAKART, 8000000/256) MCFG_AAKART_OUT_TX_CB(WRITELINE(archimedes_state, a310_kart_tx_w)) diff --git a/src/mame/drivers/abc1600.cpp b/src/mame/drivers/abc1600.cpp index 6e0fc84551a..ec7228402d7 100644 --- a/src/mame/drivers/abc1600.cpp +++ b/src/mame/drivers/abc1600.cpp @@ -480,10 +480,10 @@ static ADDRESS_MAP_START( mac_mem, AS_PROGRAM, 8, abc1600_state ) AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_RANGE(0x100000, 0x17ffff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, vram_map) AM_RANGE(0x1fe000, 0x1fefff) AM_READWRITE(bus_r, bus_w) - AM_RANGE(0x1ff000, 0x1ff000) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_t, status_r, cmd_w) - AM_RANGE(0x1ff002, 0x1ff002) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_t, track_r, track_w) - AM_RANGE(0x1ff004, 0x1ff004) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_t, sector_r, sector_w) - AM_RANGE(0x1ff006, 0x1ff006) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_t, data_r, data_w) + AM_RANGE(0x1ff000, 0x1ff000) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, status_r, cmd_w) + AM_RANGE(0x1ff002, 0x1ff002) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, track_r, track_w) + AM_RANGE(0x1ff004, 0x1ff004) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, sector_r, sector_w) + AM_RANGE(0x1ff006, 0x1ff006) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, data_r, data_w) AM_RANGE(0x1ff100, 0x1ff101) AM_MIRROR(0xfe) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, crtc_map) AM_RANGE(0x1ff200, 0x1ff207) AM_MIRROR(0xf8) AM_READWRITE(dart_r, dart_w) AM_RANGE(0x1ff300, 0x1ff300) AM_MIRROR(0xff) AM_DEVREADWRITE(Z8410AB1_0_TAG, z80dma_device, read, write) @@ -849,7 +849,7 @@ void abc1600_state::machine_reset() // MACHINE_CONFIG( abc1600 ) //------------------------------------------------- -static MACHINE_CONFIG_START( abc1600, abc1600_state ) +static MACHINE_CONFIG_START( abc1600 ) // basic machine hardware MCFG_CPU_ADD(MC68008P8_TAG, M68008, XTAL_64MHz/8) MCFG_CPU_PROGRAM_MAP(abc1600_mem) @@ -973,5 +973,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1985, abc1600, 0, 0, abc1600, abc1600, driver_device, 0, "Luxor", "ABC 1600", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, abc1600, 0, 0, abc1600, abc1600, abc1600_state, 0, "Luxor", "ABC 1600", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/abc80.cpp b/src/mame/drivers/abc80.cpp index 646d9c012e2..cd6ce4c780e 100644 --- a/src/mame/drivers/abc80.cpp +++ b/src/mame/drivers/abc80.cpp @@ -65,6 +65,7 @@ Notes: TODO: + - PWM sound in ABC-klubben/abc80/grafik/flagga.bac - proper keyboard controller emulation - MyAB TKN80 80-column card - GeJo 80-column card @@ -189,51 +190,19 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( abc80_io, AS_IO, 8, abc80_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0x17) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_t, inp_r, out_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_t, stat_r, cs_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c1_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c2_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c3_w) - AM_RANGE(0x05, 0x05) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c4_w) + AM_RANGE(0x00, 0x00) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w) + AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w) + AM_RANGE(0x02, 0x02) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w) + AM_RANGE(0x03, 0x03) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w) + AM_RANGE(0x04, 0x04) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w) + AM_RANGE(0x05, 0x05) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w) AM_RANGE(0x06, 0x06) AM_WRITE(csg_w) - AM_RANGE(0x07, 0x07) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_t, rst_r) + AM_RANGE(0x07, 0x07) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) AM_RANGE(0x10, 0x13) AM_MIRROR(0x04) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read_alt, write_alt) ADDRESS_MAP_END -//************************************************************************** -// INPUT PORTS -//************************************************************************** - -//------------------------------------------------- -// INPUT_PORTS( abc80 ) -//------------------------------------------------- - -static INPUT_PORTS_START( abc80 ) - PORT_START("SW1") - PORT_DIPUNKNOWN_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW1:1" ) - PORT_DIPUNKNOWN_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW1:2" ) - PORT_DIPUNKNOWN_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW1:3" ) - PORT_DIPUNKNOWN_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW1:4" ) - PORT_DIPUNKNOWN_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW1:5" ) - PORT_DIPUNKNOWN_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW1:6" ) - PORT_DIPUNKNOWN_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW1:7" ) - PORT_DIPUNKNOWN_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW1:8" ) - - PORT_START("SW2") - PORT_DIPUNKNOWN_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW2:1" ) - PORT_DIPUNKNOWN_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW2:2" ) - PORT_DIPUNKNOWN_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW2:3" ) - PORT_DIPUNKNOWN_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW2:4" ) - PORT_DIPUNKNOWN_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" ) - PORT_DIPUNKNOWN_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" ) - PORT_DIPUNKNOWN_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:7" ) - PORT_DIPUNKNOWN_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" ) -INPUT_PORTS_END - - - //************************************************************************** // DEVICE CONFIGURATION //************************************************************************** @@ -380,7 +349,7 @@ WRITE_LINE_MEMBER( abc80_state::keydown_w ) m_pio->port_a_write(m_key_strobe << 7); } -WRITE8_MEMBER( abc80_state::kbd_w ) +void abc80_state::kbd_w(u8 data) { m_key_data = data; m_key_strobe = 1; @@ -407,7 +376,7 @@ void abc80_state::device_timer(emu_timer &timer, device_timer_id id, int param, { case TIMER_ID_SCANLINE: draw_scanline(m_bitmap, m_screen->vpos()); - + m_pio_astb = !m_pio_astb; m_pio->strobe_a(m_pio_astb); @@ -514,7 +483,7 @@ QUICKLOAD_LOAD_MEMBER( abc80_state, bac ) // MACHINE_CONFIG( abc80 ) //------------------------------------------------- -static MACHINE_CONFIG_START( abc80, abc80_state ) +static MACHINE_CONFIG_START( abc80 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_11_9808MHz/2/2) // 2.9952 MHz MCFG_CPU_PROGRAM_MAP(abc80_mem) @@ -559,7 +528,7 @@ static MACHINE_CONFIG_START( abc80, abc80_state ) MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, nullptr) MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(abc80_state, kbd_w)) + MCFG_GENERIC_KEYBOARD_CB(PUT(abc80_state, kbd_w)) MCFG_QUICKLOAD_ADD("quickload", abc80_state, bac, "bac", 2) @@ -621,5 +590,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1978, abc80, 0, 0, abc80, abc80, driver_device, 0, "Luxor Datorer AB", "ABC 80", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_KEYBOARD ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1978, abc80, 0, 0, abc80, 0, abc80_state, 0, "Luxor Datorer AB", "ABC 80", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_KEYBOARD ) diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp index c64c80b9bba..69910735097 100644 --- a/src/mame/drivers/abc80x.cpp +++ b/src/mame/drivers/abc80x.cpp @@ -141,6 +141,7 @@ Notes: TODO: + - option ROM/HR video RAM access needs refactor of memory banking - cassette - abc806 RTC - abc806 disks except ufd631 won't boot @@ -447,15 +448,15 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( abc800c_io, AS_IO, 8, abc800_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_t, inp_r, out_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_t, stat_r, cs_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c1_w) - AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c2_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c3_w) - AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c4_w) + AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w) + AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w) + AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w) + AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w) + AM_RANGE(0x04, 0x04) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w) + AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w) AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_READ(pling_r) AM_RANGE(0x06, 0x06) AM_MIRROR(0x18) AM_WRITE(hrs_w) - AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_t, rst_r) AM_WRITE(hrc_w) + AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) AM_WRITE(hrc_w) AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio2_device, ba_cd_r, ba_cd_w) AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) @@ -506,14 +507,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( abc802_io, AS_IO, 8, abc802_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_t, inp_r, out_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_t, stat_r, cs_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c1_w) - AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c2_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c3_w) - AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c4_w) + AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w) + AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w) + AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w) + AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w) + AM_RANGE(0x04, 0x04) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w) + AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w) AM_RANGE(0x05, 0x05) AM_MIRROR(0x08) AM_READ(pling_r) - AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_t, rst_r) + AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) AM_RANGE(0x31, 0x31) AM_MIRROR(0x06) AM_DEVREAD(MC6845_TAG, mc6845_device, register_r) AM_RANGE(0x38, 0x38) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) @@ -554,14 +555,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( abc806_io, AS_IO, 8, abc806_state ) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_t, inp_r, out_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0xff18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_t, stat_r, cs_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c1_w) - AM_RANGE(0x03, 0x03) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c2_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c3_w) - AM_RANGE(0x05, 0x05) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c4_w) + AM_RANGE(0x00, 0x00) AM_MIRROR(0xff18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w) + AM_RANGE(0x01, 0x01) AM_MIRROR(0xff18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w) + AM_RANGE(0x02, 0x02) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w) + AM_RANGE(0x03, 0x03) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w) + AM_RANGE(0x04, 0x04) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w) + AM_RANGE(0x05, 0x05) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w) AM_RANGE(0x06, 0x06) AM_MIRROR(0xff18) AM_WRITE(hrs_w) - AM_RANGE(0x07, 0x07) AM_MIRROR(0xff18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_t, rst_r) AM_WRITE(hrc_w) + AM_RANGE(0x07, 0x07) AM_MIRROR(0xff18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) AM_WRITE(hrc_w) AM_RANGE(0x20, 0x23) AM_MIRROR(0xff0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) AM_RANGE(0x31, 0x31) AM_MIRROR(0xff00) AM_DEVREAD(MC6845_TAG, mc6845_device, register_r) AM_RANGE(0x34, 0x34) AM_SELECT(0xff00) AM_READWRITE(mai_r, mao_w) @@ -1017,7 +1018,7 @@ void abc806_state::machine_reset() // MACHINE_CONFIG( abc800c ) //------------------------------------------------- -static MACHINE_CONFIG_START( abc800c, abc800c_state ) +static MACHINE_CONFIG_START( abc800c ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, ABC800_X01/2/2) MCFG_Z80_DAISY_CHAIN(abc800_daisy_chain) @@ -1092,7 +1093,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( abc800m ) //------------------------------------------------- -static MACHINE_CONFIG_START( abc800m, abc800m_state ) +static MACHINE_CONFIG_START( abc800m ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, ABC800_X01/2/2) MCFG_Z80_DAISY_CHAIN(abc800_daisy_chain) @@ -1167,7 +1168,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( abc802 ) //------------------------------------------------- -static MACHINE_CONFIG_START( abc802, abc802_state ) +static MACHINE_CONFIG_START( abc802 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, ABC800_X01/2/2) MCFG_Z80_DAISY_CHAIN(abc800_daisy_chain) @@ -1243,7 +1244,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( abc806 ) //------------------------------------------------- -static MACHINE_CONFIG_START( abc806, abc806_state ) +static MACHINE_CONFIG_START( abc806 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, ABC800_X01/2/2) MCFG_Z80_DAISY_CHAIN(abc800_daisy_chain) @@ -1576,143 +1577,12 @@ ROM_END -//************************************************************************** -// DRIVER INITIALIZATION -//************************************************************************** - -//------------------------------------------------- -// DRIVER_INIT( abc800c ) -//------------------------------------------------- - -DIRECT_UPDATE_MEMBER( abc800c_state::direct_update_handler ) -{ - if (address >= 0x7c00 && address < 0x8000) - { - direct.explicit_configure(0x7c00, 0x7fff, 0x3ff, m_rom->base() + 0x7c00); - - if (!m_fetch_charram) - { - m_fetch_charram = 1; - bankswitch(); - } - - return ~0; - } - - if (m_fetch_charram) - { - m_fetch_charram = 0; - bankswitch(); - } - - return address; -} - -DRIVER_INIT_MEMBER(abc800c_state,driver_init) -{ - m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&abc800c_state::direct_update_handler, this)); -} - - -//------------------------------------------------- -// DRIVER_INIT( abc800m ) -//------------------------------------------------- - -DIRECT_UPDATE_MEMBER( abc800m_state::direct_update_handler ) -{ - if (address >= 0x7800 && address < 0x8000) - { - direct.explicit_configure(0x7800, 0x7fff, 0x7ff, m_rom->base() + 0x7800); - - if (!m_fetch_charram) - { - m_fetch_charram = 1; - bankswitch(); - } - - return ~0; - } - - if (m_fetch_charram) - { - m_fetch_charram = 0; - bankswitch(); - } - - return address; -} - -DRIVER_INIT_MEMBER(abc800m_state,driver_init) -{ - m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&abc800m_state::direct_update_handler, this)); -} - - -//------------------------------------------------- -// DRIVER_INIT( abc802 ) -//------------------------------------------------- - -DIRECT_UPDATE_MEMBER( abc802_state::direct_update_handler ) -{ - if (m_lrs) - { - if (address >= 0x7800 && address < 0x8000) - { - direct.explicit_configure(0x7800, 0x7fff, 0x7ff, m_rom->base() + 0x7800); - return ~0; - } - } - - return address; -} - -DRIVER_INIT_MEMBER(abc802_state,driver_init) -{ - m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&abc802_state::direct_update_handler, this)); -} - - -//------------------------------------------------- -// DRIVER_INIT( abc806 ) -//------------------------------------------------- - -DIRECT_UPDATE_MEMBER( abc806_state::direct_update_handler ) -{ - if (address >= 0x7800 && address < 0x8000) - { - direct.explicit_configure(0x7800, 0x7fff, 0x7ff, m_rom->base() + 0x7800); - - if (!m_fetch_charram) - { - m_fetch_charram = 1; - bankswitch(); - } - - return ~0; - } - - if (m_fetch_charram) - { - m_fetch_charram = 0; - bankswitch(); - } - - return address; -} - -DRIVER_INIT_MEMBER(abc806_state,driver_init) -{ - m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&abc806_state::direct_update_handler, this)); -} - - - //************************************************************************** // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1981, abc800c, 0, 0, abc800c, abc800, abc800c_state, driver_init, "Luxor Datorer AB", "ABC 800 C/HR", MACHINE_SUPPORTS_SAVE ) -COMP( 1981, abc800m, abc800c, 0, abc800m, abc800, abc800m_state, driver_init, "Luxor Datorer AB", "ABC 800 M/HR", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, abc802, 0, 0, abc802, abc802, abc802_state, driver_init, "Luxor Datorer AB", "ABC 802", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, abc806, 0, 0, abc806, abc806, abc806_state, driver_init, "Luxor Datorer AB", "ABC 806", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, abc800c, 0, 0, abc800c, abc800, abc800c_state, 0, "Luxor Datorer AB", "ABC 800 C/HR", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +COMP( 1981, abc800m, abc800c, 0, abc800m, abc800, abc800m_state, 0, "Luxor Datorer AB", "ABC 800 M/HR", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +COMP( 1983, abc802, 0, 0, abc802, abc802, abc802_state, 0, "Luxor Datorer AB", "ABC 802", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +COMP( 1983, abc806, 0, 0, abc806, abc806, abc806_state, 0, "Luxor Datorer AB", "ABC 806", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ac1.cpp b/src/mame/drivers/ac1.cpp index 3f3dc6518d6..291c714aa86 100644 --- a/src/mame/drivers/ac1.cpp +++ b/src/mame/drivers/ac1.cpp @@ -126,7 +126,7 @@ static INPUT_PORTS_START( ac1 ) INPUT_PORTS_END /* Machine driver */ -static MACHINE_CONFIG_START( ac1, ac1_state ) +static MACHINE_CONFIG_START( ac1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz / 4) MCFG_CPU_PROGRAM_MAP(ac1_mem) @@ -216,7 +216,7 @@ ROM_START( ac1scch ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, ac1, 0, 0, ac1, ac1, ac1_state, ac1, "Frank Heyder", "Amateurcomputer AC1 Berlin", 0 ) -COMP( 1984, ac1_32, ac1, 0, ac1_32, ac1, ac1_state, ac1, "Frank Heyder", "Amateurcomputer AC1 Berlin (32 lines)", 0 ) -COMP( 1984, ac1scch, ac1, 0, ac1_32, ac1, ac1_state, ac1, "Frank Heyder", "Amateurcomputer AC1 SCCH", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, ac1, 0, 0, ac1, ac1, ac1_state, ac1, "Frank Heyder", "Amateurcomputer AC1 Berlin", 0 ) +COMP( 1984, ac1_32, ac1, 0, ac1_32, ac1, ac1_state, ac1, "Frank Heyder", "Amateurcomputer AC1 Berlin (32 lines)", 0 ) +COMP( 1984, ac1scch, ac1, 0, ac1_32, ac1, ac1_state, ac1, "Frank Heyder", "Amateurcomputer AC1 SCCH", 0 ) diff --git a/src/mame/drivers/ace.cpp b/src/mame/drivers/ace.cpp index a7c855c71ef..3199f95285d 100644 --- a/src/mame/drivers/ace.cpp +++ b/src/mame/drivers/ace.cpp @@ -316,7 +316,7 @@ void aceal_state::machine_reset() elem = 0; } -static MACHINE_CONFIG_START( ace, aceal_state ) +static MACHINE_CONFIG_START( ace ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, MASTER_CLOCK/9) /* 2 MHz ? */ @@ -358,4 +358,4 @@ ROM_START( ace ) ROM_END -GAMEL(1976, ace, 0, ace, ace, driver_device, 0, ROT0, "Allied Leisure", "Ace", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_ace ) +GAMEL(1976, ace, 0, ace, ace, aceal_state, 0, ROT0, "Allied Leisure", "Ace", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_ace ) diff --git a/src/mame/drivers/aceex.cpp b/src/mame/drivers/aceex.cpp index aa0864d74f6..2ce5a81ed86 100644 --- a/src/mame/drivers/aceex.cpp +++ b/src/mame/drivers/aceex.cpp @@ -78,7 +78,7 @@ void aceex2814_state::machine_reset() #define Y1_CLOCK 40320000 #define Y2_CLOCK 45342720 -static MACHINE_CONFIG_START( aceex2814, aceex2814_state ) +static MACHINE_CONFIG_START( aceex2814 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C31, Y2_CLOCK) @@ -90,5 +90,5 @@ ROM_START( aceex2814 ) ROM_LOAD( "dm2814u16-194.bin", 0x00000, 0x10000, CRC(36dc423d) SHA1(0f350b7c533eb5270a72587ab3e050e5fe453006) ) ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1995, aceex2814, 0, 0, aceex2814, aceex2814, driver_device, 0, "Aceex Corporation", "Aceex 2814", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1995, aceex2814, 0, 0, aceex2814, aceex2814, aceex2814_state, 0, "Aceex Corporation", "Aceex 2814", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/acefruit.cpp b/src/mame/drivers/acefruit.cpp index 1b67896a6c6..d8b6197948c 100644 --- a/src/mame/drivers/acefruit.cpp +++ b/src/mame/drivers/acefruit.cpp @@ -604,7 +604,7 @@ static GFXDECODE_START( acefruit ) GFXDECODE_ENTRY( "gfx1", 0x1800, charlayout, 8, 4 ) GFXDECODE_END -static MACHINE_CONFIG_START( acefruit, acefruit_state ) +static MACHINE_CONFIG_START( acefruit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2500000) /* 2.5MHz */ @@ -773,7 +773,7 @@ ROM_END GAMEL( 1981?, sidewndr, 0, acefruit, sidewndr, acefruit_state, sidewndr, ROT270, "ACE", "Sidewinder", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND, layout_sidewndr ) -GAMEL( 1981?, spellbnd, 0, acefruit, spellbnd, driver_device, 0, ROT270, "ACE", "Spellbound", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND, layout_sidewndr ) -GAME ( 1982?, starspnr, 0, acefruit, starspnr, driver_device, 0, ROT270, "ACE", "Starspinner (Dutch/Nederlands)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME ( 1982?, acefruit, 0, acefruit, spellbnd, driver_device, 0, ROT270, "ACE", "Silhouette", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // inputs and video in bonus game need fixing on this one +GAMEL( 1981?, spellbnd, 0, acefruit, spellbnd, acefruit_state, 0, ROT270, "ACE", "Spellbound", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND, layout_sidewndr ) +GAME ( 1982?, starspnr, 0, acefruit, starspnr, acefruit_state, 0, ROT270, "ACE", "Starspinner (Dutch/Nederlands)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME ( 1982?, acefruit, 0, acefruit, spellbnd, acefruit_state, 0, ROT270, "ACE", "Silhouette", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // inputs and video in bonus game need fixing on this one // not dumped: Magnum? diff --git a/src/mame/drivers/aces1.cpp b/src/mame/drivers/aces1.cpp index 4c1e55cf97a..48ab87c7adf 100644 --- a/src/mame/drivers/aces1.cpp +++ b/src/mame/drivers/aces1.cpp @@ -428,7 +428,7 @@ static INPUT_PORTS_START( aces1 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( aces1, aces1_state ) +static MACHINE_CONFIG_START( aces1 ) MCFG_CPU_ADD("maincpu", Z80, 4000000) /* ?? Mhz */ MCFG_CPU_PROGRAM_MAP(aces1_map) @@ -835,50 +835,50 @@ DRIVER_INIT_MEMBER(aces1_state,aces1) { } -GAMEL( 199?, ac1clbmn ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Money (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL, layout_ac1clbmn ) -GAMEL( 199?, ac1gogld ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Go For Gold (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL, layout_ac1gogld ) -GAME( 199?, ac1hotpf ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Hot Profit (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, ac1pster ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Pound Sterling (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL, layout_ac1pster ) -GAMEL( 199?, ac1pstrt ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Pcp", "Pound Stretcher (Pcp) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL, layout_ac1pstrt ) -GAMEL( 199?, ac1primt ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Primetime (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL, layout_ac1primt ) -GAMEL( 199?, ac1taklv ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Take It Or Leave It (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL, layout_ac1taklv ) -GAME( 199?, ac1cshtw ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Cash Towers (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL ) // same ROM as above, combined, original machine apparently plays the same, reskinned machine? -GAME( 199?, ac1bbclb ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Big Break Club (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1bbclba ,ac1bbclb ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Big Break Club (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1clbsv ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Sovereign (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1clbxt ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Xtra (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1clbxta ,ac1clbxt ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Xtra (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1piaca ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Casino (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL ) // Same ROMs were in 'Play It Again Deluxe' -GAME( 199?, ac1piacl ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1piacla ,ac1piacl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1piaclb ,ac1piacl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 3)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1piaclc ,ac1piacl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 4)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1prmcl ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1prmcla ,ac1prmcl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1prmclb ,ac1prmcl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 3)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1prmclc ,ac1prmcl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 4)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1rundx ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Runner Deluxe Club (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1rundxa ,ac1rundx ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Runner Deluxe Club (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1totb ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Top Of The Bill (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1shid ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Super Hi De Hi (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, ac1shida ,ac1shid ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Super Hi De Hi (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1dbldx ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Double Deluxe (Pcp) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1nudbk ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1nudbka ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1nudbkb ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 3)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1nudbkc ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 4)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1nudbkd ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 5)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1sstrk ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1sstrka ,ac1sstrk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1sstrkb ,ac1sstrk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 3)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1xpres ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Xpress (Pcp) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1roll ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1rolla ,ac1roll ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1rollb ,ac1roll ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 3)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1bluec ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1blueca ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1bluecb ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 3)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1bluecc ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 4)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1bluecd ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 5)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, ac1hideh ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Ace", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) // was in Hi De Hi (Ace) (sp.ACE) set -GAME(199?, ac1hideha ,sp_hideh ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Ace", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) // ^^ +GAMEL( 199?, ac1clbmn , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Club Money (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_ac1clbmn ) +GAMEL( 199?, ac1gogld , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Go For Gold (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_ac1gogld ) +GAME( 199?, ac1hotpf , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Hot Profit (Ace) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL( 199?, ac1pster , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Pound Sterling (Ace) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL, layout_ac1pster ) +GAMEL( 199?, ac1pstrt , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Pound Stretcher (Pcp) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL, layout_ac1pstrt ) +GAMEL( 199?, ac1primt , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Primetime (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_ac1primt ) +GAMEL( 199?, ac1taklv , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Take It Or Leave It (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_ac1taklv ) +GAME( 199?, ac1cshtw , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Cash Towers (Ace) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL ) // same ROM as above, combined, original machine apparently plays the same, reskinned machine? +GAME( 199?, ac1bbclb , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Big Break Club (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1bbclba , ac1bbclb , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Big Break Club (Ace) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1clbsv , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Club Sovereign (Ace) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1clbxt , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Club Xtra (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1clbxta , ac1clbxt , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Club Xtra (Ace) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1piaca , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Play It Again Casino (Ace) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL ) // Same ROMs were in 'Play It Again Deluxe' +GAME( 199?, ac1piacl , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Play It Again Club (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1piacla , ac1piacl , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Play It Again Club (Ace) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1piaclb , ac1piacl , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Play It Again Club (Ace) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1piaclc , ac1piacl , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Play It Again Club (Ace) (ACESYS1) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1prmcl , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Premier Club (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1prmcla , ac1prmcl , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Premier Club (Ace) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1prmclb , ac1prmcl , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Premier Club (Ace) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1prmclc , ac1prmcl , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Premier Club (Ace) (ACESYS1) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1rundx , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Runner Deluxe Club (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1rundxa , ac1rundx , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Runner Deluxe Club (Ace) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1totb , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Top Of The Bill (Ace) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1shid , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Super Hi De Hi (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1shida , ac1shid , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Super Hi De Hi (Ace) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1dbldx , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Double Deluxe (Pcp) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1nudbk , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1nudbka , ac1nudbk , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1nudbkb , ac1nudbk , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1nudbkc , ac1nudbk , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1nudbkd , ac1nudbk , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1sstrk , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1sstrka , ac1sstrk , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1sstrkb , ac1sstrk , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1xpres , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Xpress (Pcp) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1roll , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1rolla , ac1roll , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1rollb , ac1roll , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1bluec , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1blueca , ac1bluec , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1bluecb , ac1bluec , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1bluecc , ac1bluec , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1bluecd , ac1bluec , aces1, aces1, aces1_state, aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, ac1hideh , 0 , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) // was in Hi De Hi (Ace) (sp.ACE) set +GAME( 199?, ac1hideha , sp_hideh , aces1, aces1, aces1_state, aces1, ROT0, "Ace", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^ diff --git a/src/mame/drivers/acesp.cpp b/src/mame/drivers/acesp.cpp index 80567301201..43ad6558617 100644 --- a/src/mame/drivers/acesp.cpp +++ b/src/mame/drivers/acesp.cpp @@ -79,7 +79,7 @@ static INPUT_PORTS_START( ace_sp ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ace_sp, ace_sp_state ) +static MACHINE_CONFIG_START( ace_sp ) MCFG_CPU_ADD("maincpu", HD6303Y, 1000000) MCFG_CPU_PROGRAM_MAP(ace_sp_map) MCFG_CPU_IO_MAP(ace_sp_portmap) diff --git a/src/mame/drivers/acommand.cpp b/src/mame/drivers/acommand.cpp index 2debf884361..0ea7854d02b 100644 --- a/src/mame/drivers/acommand.cpp +++ b/src/mame/drivers/acommand.cpp @@ -10,14 +10,14 @@ Actually same HW as the Cisco Heat ones. TODO: -Understand what "devices" area needs to make this working.It's likely that the upper switches -controls the UFO's and the lower switches the astronauts. + controls the UFO's and the lower switches the astronauts. -Back tilemap paging is likely to be incorrect. -3D Artworks for the UFO's,Astronauts etc. -Merge to the Cisco Heat driver. Notes: -The real HW is a redemption machine with two guns, similar to the "Cosmo Gang the Video" -(Namco) bonus games. +(Namco) redemption version. m68k irq table vectors lev 1 : 0x64 : 0000 04f0 - rte @@ -60,84 +60,61 @@ JALCF1 BIN 1,048,576 02-07-99 1:11a JALCF1.BIN #include "emu.h" #include "cpu/m68000/m68000.h" #include "sound/okim6295.h" +#include "video/ms1_tmap.h" #include "screen.h" #include "speaker.h" +#include "acommand.lh" + class acommand_state : public driver_device { public: acommand_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_ac_bgvram(*this, "ac_bgvram"), - m_ac_txvram(*this, "ac_txvram"), m_spriteram(*this, "spriteram"), - m_ac_devram(*this, "ac_devram"), m_maincpu(*this, "maincpu"), m_oki1(*this, "oki1"), m_oki2(*this, "oki2"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_bgtmap(*this, "bgtmap"), + m_txtmap(*this, "txtmap") { } - required_shared_ptr m_ac_bgvram; - required_shared_ptr m_ac_txvram; required_shared_ptr m_spriteram; - required_shared_ptr m_ac_devram; - tilemap_t *m_tx_tilemap; - tilemap_t *m_bg_tilemap; std::unique_ptr m_ac_vregs; - uint16_t m_led0; - uint16_t m_led1; - uint16_t m_ufo_sw1; - uint16_t m_ufo_sw2; - DECLARE_WRITE16_MEMBER(ac_bgvram_w); - DECLARE_WRITE16_MEMBER(ac_txvram_w); - DECLARE_WRITE16_MEMBER(ac_bgscroll_w); - DECLARE_WRITE16_MEMBER(ac_txscroll_w); - DECLARE_READ16_MEMBER(ac_devices_r); - DECLARE_WRITE16_MEMBER(ac_devices_w); + uint16_t m_7seg0; + uint16_t m_7seg1; + uint16_t m_ufo_lane[5]; + uint8_t m_boss_door; + DECLARE_WRITE8_MEMBER(oki_bank_w); + DECLARE_WRITE16_MEMBER(output_7seg0_w); + DECLARE_WRITE16_MEMBER(output_7seg1_w); + DECLARE_WRITE16_MEMBER(output_lamps_w); + + DECLARE_READ16_MEMBER(ext_devices_0_r); + DECLARE_WRITE16_MEMBER(ext_devices_0_w); + DECLARE_READ16_MEMBER(ext_devices_1_r); + DECLARE_WRITE16_MEMBER(ext_devices_1_w); + DECLARE_WRITE16_MEMBER(ext_devices_2_w); + DECLARE_WRITE16_MEMBER(ac_unk2_w); TILEMAP_MAPPER_MEMBER(bg_scan); - TILE_GET_INFO_MEMBER(ac_get_bg_tile_info); - TILE_GET_INFO_MEMBER(ac_get_tx_tile_info); virtual void video_start() override; uint32_t screen_update_acommand(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_DEVICE_CALLBACK_MEMBER(acommand_scanline); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int pri_mask); - void draw_led(bitmap_ind16 &bitmap, int x, int y,uint8_t value); required_device m_maincpu; required_device m_oki1; required_device m_oki2; required_device m_gfxdecode; required_device m_palette; + required_device m_bgtmap; + required_device m_txtmap; }; -TILEMAP_MAPPER_MEMBER(acommand_state::bg_scan) -{ - /* logical (col,row) -> memory offset */ - return (row & 0x0f) + ((col & 0xff) << 4) + ((row & 0x70) << 8); -} - -TILE_GET_INFO_MEMBER(acommand_state::ac_get_bg_tile_info) -{ - int code = m_ac_bgvram[tile_index]; - SET_TILE_INFO_MEMBER(1, - code & 0xfff, - (code & 0xf000) >> 12, - 0); -} - -TILE_GET_INFO_MEMBER(acommand_state::ac_get_tx_tile_info) -{ - int code = m_ac_txvram[tile_index]; - SET_TILE_INFO_MEMBER(0, - code & 0xfff, - (code & 0xf000) >> 12, - 0); -} - void acommand_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int pri_mask) { uint16_t *spriteram16 = m_spriteram; @@ -154,8 +131,9 @@ void acommand_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec int h = ((spriteram16[offs+0] & 0xf0) >> 4); int sy = (spriteram16[offs+4] & 0x0ff) - ((h+1)*0x10); /**/ int pri = spriteram16[offs+5]; -/**/ int flipy = ((spriteram16[offs+1] & 0x0200) >> 9); -/**/ int flipx = ((spriteram16[offs+1] & 0x0100) >> 8); +/**/ int flipy = ((spriteram16[offs+1] & 0x2000) >> 13); + // "this is the boss" uses flip x + int flipx = ((spriteram16[offs+1] & 0x1000) >> 12); int xx,yy,x; int delta = 16; @@ -175,18 +153,21 @@ void acommand_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec yy = h; do { - x = sx; + x = flipx ? sx + w*16 : sx; xx = w; do { - m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, + m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, code, color, flipx, flipy, ((x + 16) & 0x1ff) - 16,sy & 0x1ff,15); code++; - x += delta; + if(flipx) + x -= delta; + else + x += delta; } while (--xx >= 0); sy += delta; @@ -198,285 +179,169 @@ void acommand_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec void acommand_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acommand_state::ac_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,512,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acommand_state::ac_get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(acommand_state::bg_scan),this),16,16,256,16); - m_ac_vregs = std::make_unique(0x80/2); - - m_tx_tilemap->set_transparent_pen(15); -} - - -#define LED_ON 0x01c00 -#define LED_OFF 0x00000 -/* - a - --- -f | | b - -g- -e | | c - --- - d -a & 1 -b & 2 -c & 4 -d & 8 -e & 10 -f & 20 -g & 40 -7f -*/ -/* 0 1 2 3 4 5 6 7 8 9 a b c d e f*/ -static const uint8_t led_fill[0x10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x00,0x00,0x00,0x00,0x00}; - -void acommand_state::draw_led(bitmap_ind16 &bitmap, int x, int y,uint8_t value) -{ - bitmap.plot_box(x, y, 6, 10, 0x00000000); - - /*a*/ - bitmap.pix16(y+0, x+1) = ((led_fill[value] & 0x0001) ? LED_ON : LED_OFF); - bitmap.pix16(y+0, x+2) = ((led_fill[value] & 0x0001) ? LED_ON : LED_OFF); - bitmap.pix16(y+0, x+3) = ((led_fill[value] & 0x0001) ? LED_ON : LED_OFF); - /*b*/ - bitmap.pix16(y+1, x+4) = ((led_fill[value] & 0x0002) ? LED_ON : LED_OFF); - bitmap.pix16(y+2, x+4) = ((led_fill[value] & 0x0002) ? LED_ON : LED_OFF); - bitmap.pix16(y+3, x+4) = ((led_fill[value] & 0x0002) ? LED_ON : LED_OFF); - /*c*/ - bitmap.pix16(y+5, x+4) = ((led_fill[value] & 0x0004) ? LED_ON : LED_OFF); - bitmap.pix16(y+6, x+4) = ((led_fill[value] & 0x0004) ? LED_ON : LED_OFF); - bitmap.pix16(y+7, x+4) = ((led_fill[value] & 0x0004) ? LED_ON : LED_OFF); - /*d*/ - bitmap.pix16(y+8, x+1) = ((led_fill[value] & 0x0008) ? LED_ON : LED_OFF); - bitmap.pix16(y+8, x+2) = ((led_fill[value] & 0x0008) ? LED_ON : LED_OFF); - bitmap.pix16(y+8, x+3) = ((led_fill[value] & 0x0008) ? LED_ON : LED_OFF); - /*e*/ - bitmap.pix16(y+5, x+0) = ((led_fill[value] & 0x0010) ? LED_ON : LED_OFF); - bitmap.pix16(y+6, x+0) = ((led_fill[value] & 0x0010) ? LED_ON : LED_OFF); - bitmap.pix16(y+7, x+0) = ((led_fill[value] & 0x0010) ? LED_ON : LED_OFF); - /*f*/ - bitmap.pix16(y+1, x+0) = ((led_fill[value] & 0x0020) ? LED_ON : LED_OFF); - bitmap.pix16(y+2, x+0) = ((led_fill[value] & 0x0020) ? LED_ON : LED_OFF); - bitmap.pix16(y+3, x+0) = ((led_fill[value] & 0x0020) ? LED_ON : LED_OFF); - /*g*/ - bitmap.pix16(y+4, x+1) = ((led_fill[value] & 0x0040) ? LED_ON : LED_OFF); - bitmap.pix16(y+4, x+2) = ((led_fill[value] & 0x0040) ? LED_ON : LED_OFF); - bitmap.pix16(y+4, x+3) = ((led_fill[value] & 0x0040) ? LED_ON : LED_OFF); } uint32_t acommand_state::screen_update_acommand(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); - draw_sprites(bitmap,cliprect,0,0); - m_tx_tilemap->draw(screen, bitmap, cliprect, 0,0); + // reference has black pen background, as weird it might sound + bitmap.fill(m_palette->black_pen(), cliprect); - /*Order might be wrong,but these for sure are the led numbers tested*/ - draw_led(bitmap, 0, 20, (m_led0 & 0x0f00) >> 8); - draw_led(bitmap, 6, 20, (m_led0 & 0x00f0) >> 4); - draw_led(bitmap, 12, 20, (m_led0 & 0x000f)); + m_bgtmap->draw(screen, bitmap, cliprect, 0, 0); + draw_sprites(bitmap,cliprect,0,0); + m_txtmap->draw(screen, bitmap, cliprect, 0, 0); - draw_led(bitmap, 256-18,20,(m_led0 & 0xf000) >> 12); - draw_led(bitmap, 256-12,20,(m_led1 & 0xf0) >> 4); - draw_led(bitmap, 256-6,20, (m_led1 & 0xf)); return 0; } -WRITE16_MEMBER(acommand_state::ac_bgvram_w) +/******************************************************************************************/ + +/*This is always zero ATM*/ +WRITE16_MEMBER(acommand_state::ac_unk2_w) { - COMBINE_DATA(&m_ac_bgvram[offset]); - m_bg_tilemap->mark_tile_dirty(offset); + if(data) + popmessage("UNK-2 enabled %04x",data); } -WRITE16_MEMBER(acommand_state::ac_txvram_w) +/************************************* + * + * I/O + * + ************************************/ + +WRITE8_MEMBER(acommand_state::oki_bank_w) { - COMBINE_DATA(&m_ac_txvram[offset]); - m_tx_tilemap->mark_tile_dirty(offset); + m_oki1->set_rom_bank(data & 0x3); + m_oki2->set_rom_bank((data & 0x30) >> 4); } -WRITE16_MEMBER(acommand_state::ac_bgscroll_w) + +/* 0 1 2 3 4 5 6 7 8 9 a b c d e f*/ +static const uint8_t led_fill[0x10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x00,0x00,0x00,0x00,0x00}; + +WRITE16_MEMBER(acommand_state::output_7seg0_w) { - switch(offset) - { - case 0: m_bg_tilemap->set_scrollx(0,data); break; - case 1: m_bg_tilemap->set_scrolly(0,data); break; - case 2: /*BG_TILEMAP priority?*/ break; - } + COMBINE_DATA(&m_7seg0); + + // nybble 0,1,2: left 7segs, nybble 3: right 7seg 1st digit + for (int i = 0; i < 4; i++) + output().set_digit_value(i, led_fill[m_7seg0 >> (i*4) & 0xf]); } -WRITE16_MEMBER(acommand_state::ac_txscroll_w) +WRITE16_MEMBER(acommand_state::output_7seg1_w) { - switch(offset) - { - case 0: m_tx_tilemap->set_scrollx(0,data); break; - case 1: m_tx_tilemap->set_scrolly(0,data); break; - case 2: /*TX_TILEMAP priority?*/ break; - } + COMBINE_DATA(&m_7seg1); + + // nybble 0,1: right 7seg 2nd,3rd digit + for (int i = 0; i < 2; i++) + output().set_digit_value(i+4, led_fill[m_7seg1 >> (i*4) & 0xf]); + + // other: ? } -/******************************************************************************************/ +/* + "Upper switch / Under Switch" + xx-x ---- xx-x xx-x + -x-- ---- ---- ---- Catch Switch - 3 + --x- ---- ---- ---- Lower Switch - 3 + ---x ---- ---- ---- Upper Switch - 3 + ---- -x-- ---- ---- Catch Switch - 2 + ---- --x- ---- ---- Lower Switch - 2 + ---- ---x ---- ---- Upper Switch - 2 + ---- ---- -x-- ---- Catch Switch - 1 + ---- ---- --x- ---- Lower Switch - 1 (active high) + ---- ---- ---x ---- Upper Switch - 1 (active low) + ---- ---- ---- --xx Boss Door - Motor + state of UFO lanes: + 0x0 + 0x1 + 0x2 + 0x3 + 0x4 + 0x5 ufo lane limit switch + 0x6 + 0x7 astronaut switch or jamming + 0x8 + 0x9 ufo lane switch or motor + 0xa astronaut switch or jamming + 0xb ufo lane switch or motor + 0xc "" + 0xd ufo lane limit switch + 0xe astronaut switch or jamming + 0xf "" +*/ +READ16_MEMBER(acommand_state::ext_devices_0_r) +{ + return 0xfffc | m_boss_door; +} +WRITE16_MEMBER(acommand_state::ext_devices_0_w) +{ + printf("%04x EXT 0\n",data); + m_boss_door = data & 3; + m_ufo_lane[0] = (data >> 8) & 0x1f; +} -READ16_MEMBER(acommand_state::ac_devices_r) -{ - logerror("(PC=%06x) read at %04x\n",space.device().safe_pc(),offset*2); +/* + ---- ---- --x- ---- Lower Switch - 5 + ---- ---- ---x ---- Upper Switch - 5 + ---- ---- ---- --x- Lower Switch - 4 (active high) + ---- ---- ---- ---x Upper Switch - 4 (active low) +*/ +READ16_MEMBER(acommand_state::ext_devices_1_r) +{ + return 0xffff; +} - switch(offset) - { - case 0x0008/2: - /* - --x- ---- ---- ---- Ticket Dispenser - 2 - ---x ---- ---- ---- Ticket Dispenser - 1 - ---- -x-- ---- ---- Right Gun HIT - ---- ---x ---- ---- Left Gun HIT - ---- ---- --x- ---- Service Mode (Toggle) - ---- ---- ---x ---- Service Coin - ---- ---- ---- x--- COIN2 - ---- ---- ---- -x-- COIN1 - ---- ---- ---- --x- (Activate Test) - ---- ---- ---- ---x (Advance through Tests) - */ - return ioport("IN0")->read(); - case 0x0014/2: - case 0x0016/2: - return m_oki1->read(space,0); - case 0x0018/2: - case 0x001a/2: - return m_oki2->read(space,0); - case 0x0040/2: - /* - "Upper switch / Under Switch" - xx-x ---- xx-x xx-x - -x-- ---- ---- ---- Catch Switch - 3 - --x- ---- ---- ---- Lower Switch - 3 - ---x ---- ---- ---- Upper Switch - 3 - ---- -x-- ---- ---- Catch Switch - 2 - ---- --x- ---- ---- Lower Switch - 2 - ---- ---x ---- ---- Upper Switch - 2 - ---- ---- -x-- ---- Catch Switch - 1 - ---- ---- --x- ---- Lower Switch - 1 (active high) - ---- ---- ---x ---- Upper Switch - 1 (active low) - ---- ---- ---- --xx Boss Door - Motor - */ - //22dc8 - { - m_ufo_sw1 = m_ac_devram[offset] & 3; - if(m_ac_devram[offset] & 0x10) - m_ufo_sw1|= 0x10; - if(m_ac_devram[offset] & 0x40) - m_ufo_sw1|= 0x20; - if(m_ac_devram[offset] & 0x100) - m_ufo_sw1|=0x100; - if(m_ac_devram[offset] & 0x400) - m_ufo_sw1|=0x200; - if(m_ac_devram[offset] & 0x1000) - m_ufo_sw1|=0x1000; - if(m_ac_devram[offset] & 0x4000) - m_ufo_sw1|=0x2000; -// if(m_ac_devram[0x0048/2] & 0x0001) -// m_ufo_sw1|=0x0040; -// if(m_ac_devram[0x0048/2] & 0x0004) -// m_ufo_sw1|=0x0400; -// if(m_ac_devram[0x0048/2] & 0x0100) -// m_ufo_sw1|=0x4000; - return m_ufo_sw1; - } - case 0x0044/2: - /* - ---- ---- --x- ---- Lower Switch - 5 - ---- ---- ---x ---- Upper Switch - 5 - ---- ---- ---- --x- Lower Switch - 4 (active high) - ---- ---- ---- ---x Upper Switch - 4 (active low) - */ - { - m_ufo_sw2 = 0; - if(m_ac_devram[offset] & 0x01) - m_ufo_sw2|= 1; - if(m_ac_devram[offset] & 0x04) - m_ufo_sw2|= 2; - if(m_ac_devram[offset] & 0x10) - m_ufo_sw2|=0x10; - if(m_ac_devram[offset] & 0x40) - m_ufo_sw2|=0x20; - return m_ufo_sw2; - } - case 0x0048/2: - return m_ac_devram[offset]; - case 0x005c/2: - /* - xxxx xxxx ---- ---- DIPSW4 - ---- ---- xxxx xxxx DIPSW3 - */ - return ioport("IN1")->read(); - } - return m_ac_devram[offset]; +WRITE16_MEMBER(acommand_state::ext_devices_1_w) +{ + //printf("%04x EXT 1\n",data); + m_ufo_lane[1] = (data >> 0) & 0x1f; + m_ufo_lane[2] = (data >> 8) & 0x1f; } -WRITE16_MEMBER(acommand_state::ac_devices_w) +WRITE16_MEMBER(acommand_state::ext_devices_2_w) { - COMBINE_DATA(&m_ac_devram[offset]); - switch(offset) - { - case 0x00/2: - if (ACCESSING_BITS_0_7) - { - m_oki1->set_rom_bank(data & 0x3); - m_oki2->set_rom_bank((data & 0x30) >> 4); - } - break; - case 0x14/2: - case 0x16/2: - if(ACCESSING_BITS_0_7) - { - m_oki1->write(space,0,data); - } - break; - case 0x18/2: - case 0x1a/2: - if(ACCESSING_BITS_0_7) - { - m_oki2->write(space,0,data); - } - break; - case 0x1c/2: - /*IRQ mask?*/ - break; - case 0x40/2: - break; - case 0x44/2: - break; - case 0x48/2: - break; - case 0x50/2: - m_led0 = m_ac_devram[offset]; - //popmessage("%04x",m_led0); - break; - case 0x54/2: - m_led1 = m_ac_devram[offset]; - //popmessage("%04x",m_led0); - break; - } + //printf("%04x EXT 2\n",data); + m_ufo_lane[3] = (data >> 0) & 0x1f; + m_ufo_lane[4] = (data >> 8) & 0x1f; } -/*This is always zero ATM*/ -WRITE16_MEMBER(acommand_state::ac_unk2_w) +WRITE16_MEMBER(acommand_state::output_lamps_w) { - if(data) - popmessage("UNK-2 enabled %04x",data); + machine().bookkeeping().coin_counter_w(0, data & 0x40); + machine().bookkeeping().coin_counter_w(1, data & 0x80); + + // --xx --xx lamps } static ADDRESS_MAP_START( acommand_map, AS_PROGRAM, 16, acommand_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x082000, 0x082005) AM_WRITE(ac_bgscroll_w) - AM_RANGE(0x082100, 0x082105) AM_WRITE(ac_txscroll_w) + AM_RANGE(0x082000, 0x082005) AM_DEVWRITE("bgtmap", megasys1_tilemap_device, scroll_w) + AM_RANGE(0x082100, 0x082105) AM_DEVWRITE("txtmap", megasys1_tilemap_device, scroll_w) AM_RANGE(0x082208, 0x082209) AM_WRITE(ac_unk2_w) - AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_WRITE(ac_bgvram_w) AM_SHARE("ac_bgvram") - AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(ac_txvram_w) AM_SHARE("ac_txvram") + AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_DEVWRITE("bgtmap", megasys1_tilemap_device, write) AM_SHARE("bgtmap") + AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_DEVWRITE("txtmap", megasys1_tilemap_device, write) AM_SHARE("txtmap") AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x0f0000, 0x0f7fff) AM_RAM AM_RANGE(0x0f8000, 0x0f8fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x0f9000, 0x0fffff) AM_RAM - AM_RANGE(0x100000, 0x1000ff) AM_READ(ac_devices_r) AM_WRITE(ac_devices_w) AM_SHARE("ac_devram") + + AM_RANGE(0x100000, 0x100001) AM_WRITE8(oki_bank_w,0x00ff) + AM_RANGE(0x100008, 0x100009) AM_READ_PORT("IN0") AM_WRITE(output_lamps_w) + AM_RANGE(0x100014, 0x100017) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) + AM_RANGE(0x100018, 0x10001b) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) + + AM_RANGE(0x100040, 0x100041) AM_READWRITE(ext_devices_0_r,ext_devices_0_w) + AM_RANGE(0x100044, 0x100045) AM_READWRITE(ext_devices_1_r,ext_devices_1_w) + AM_RANGE(0x100048, 0x100049) AM_WRITE(ext_devices_2_w) + + AM_RANGE(0x100050, 0x100051) AM_WRITE(output_7seg0_w) + AM_RANGE(0x100054, 0x100055) AM_WRITE(output_7seg1_w) + AM_RANGE(0x10005c, 0x10005d) AM_READ_PORT("DSW") + ADDRESS_MAP_END static INPUT_PORTS_START( acommand ) @@ -514,7 +379,7 @@ static INPUT_PORTS_START( acommand ) PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_START("IN1") + PORT_START("DSW") PORT_DIPNAME( 0x0001, 0x0001, "IN2" ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) @@ -565,17 +430,6 @@ static INPUT_PORTS_START( acommand ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) INPUT_PORTS_END -static const gfx_layout charlayout = -{ - 8,8, - RGN_FRAC(1,1), - 4, - { 0, 1, 2, 3 }, - { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 }, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, - 32*8 -}; - static const gfx_layout tilelayout = { 16,16, @@ -590,8 +444,6 @@ static const gfx_layout tilelayout = }; static GFXDECODE_START( acommand ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x2700, 16 ) /*???*/ - GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0x0f00, 256 ) GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0x1800, 256 ) GFXDECODE_END @@ -606,7 +458,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(acommand_state::acommand_scanline) m_maincpu->set_input_line(3, HOLD_LINE); } -static MACHINE_CONFIG_START( acommand, acommand_state ) +static MACHINE_CONFIG_START( acommand ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,12000000) @@ -626,14 +478,17 @@ static MACHINE_CONFIG_START( acommand, acommand_state ) MCFG_PALETTE_ADD("palette", 0x4000) MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx) + MCFG_MEGASYS1_TILEMAP_ADD("bgtmap", "palette", 0x0f00) + MCFG_MEGASYS1_TILEMAP_ADD("txtmap", "palette", 0x2700) + /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -649,10 +504,10 @@ ROM_START( acommand ) ROM_LOAD16_BYTE( "jalcf3.bin", 0x000000, 0x020000, CRC(f031abf7) SHA1(e381742fd6a6df4ddae42ddb3a074a55dc550b3c) ) ROM_LOAD16_BYTE( "jalcf4.bin", 0x000001, 0x020000, CRC(dd0c0540) SHA1(3e788fcb30ae725bd0ec9b57424e3946db1e946f) ) - ROM_REGION( 0x20000, "gfx1", 0 ) /* BG0 */ + ROM_REGION( 0x20000, "txtmap", 0 ) /* BG0 */ ROM_LOAD( "jalcf6.bin", 0x000000, 0x020000, CRC(442173d6) SHA1(56c02bc2761967040127977ecabe844fc45e2218) ) - ROM_REGION( 0x080000, "gfx2", 0 ) /* BG1 */ + ROM_REGION( 0x080000, "bgtmap", 0 ) /* BG1 */ ROM_LOAD( "jalcf5.bin", 0x000000, 0x080000, CRC(ff0be97f) SHA1(5ccab778318dec30849d7b7f25091d4aab8bde32) ) ROM_REGION( 0x400000, "gfx3", 0 ) /* SPR */ @@ -676,4 +531,4 @@ ROM_START( acommand ) ROM_LOAD( "jalmr17.bin", 0x080000, 0x080000, CRC(9d428fb7) SHA1(02f72938d73db932bd217620a175a05215f6016a) ) ROM_END -GAME( 1994, acommand, 0, acommand, acommand, driver_device, 0, ROT0, "Jaleco", "Alien Command" , MACHINE_NOT_WORKING | MACHINE_MECHANICAL) +GAMEL( 1994, acommand, 0, acommand, acommand, acommand_state, 0, ROT0, "Jaleco", "Alien Command" , MACHINE_NOT_WORKING | MACHINE_MECHANICAL, layout_acommand ) diff --git a/src/mame/drivers/acrnsys1.cpp b/src/mame/drivers/acrnsys1.cpp index a9faef5e6df..5ac7f7eb17c 100644 --- a/src/mame/drivers/acrnsys1.cpp +++ b/src/mame/drivers/acrnsys1.cpp @@ -242,7 +242,7 @@ INPUT_PORTS_END MACHINE DRIVERS ***************************************************************************/ -static MACHINE_CONFIG_START( acrnsys1, acrnsys1_state ) +static MACHINE_CONFIG_START( acrnsys1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1008000) /* 1.008 MHz */ MCFG_CPU_PROGRAM_MAP(acrnsys1_map) @@ -280,5 +280,5 @@ ROM_END GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, acrnsys1, 0, 0, acrnsys1, acrnsys1, driver_device, 0, "Acorn", "Acorn System 1", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1978, acrnsys1, 0, 0, acrnsys1, acrnsys1, acrnsys1_state, 0, "Acorn", "Acorn System 1", 0 ) diff --git a/src/mame/drivers/actfancr.cpp b/src/mame/drivers/actfancr.cpp index 679feec959e..c4b5a9c38ad 100644 --- a/src/mame/drivers/actfancr.cpp +++ b/src/mame/drivers/actfancr.cpp @@ -290,7 +290,7 @@ MACHINE_RESET_MEMBER(actfancr_state,triothep) /******************************************************************************/ -static MACHINE_CONFIG_START( actfancr, actfancr_state ) +static MACHINE_CONFIG_START( actfancr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H6280, 21477200/3) /* Should be accurate */ @@ -340,11 +340,11 @@ static MACHINE_CONFIG_START( actfancr, actfancr_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", M6502_IRQ_LINE)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) - MCFG_OKIM6295_ADD("oki", 1024188, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1024188, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.85) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( triothep, actfancr_state ) +static MACHINE_CONFIG_START( triothep ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",H6280,XTAL_21_4772MHz/3) /* XIN=21.4772Mhz, verified on pcb */ @@ -397,7 +397,7 @@ static MACHINE_CONFIG_START( triothep, actfancr_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", M6502_IRQ_LINE)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.85) MACHINE_CONFIG_END @@ -571,8 +571,8 @@ ROM_END /******************************************************************************/ -GAME( 1989, actfancr, 0, actfancr, actfancr, driver_device, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (World revision 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, actfancr1,actfancr, actfancr, actfancr, driver_device, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (World revision 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, actfancrj,actfancr, actfancr, actfancr, driver_device, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (Japan revision 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, triothep, 0, triothep, triothep, driver_device, 0, ROT0, "Data East Corporation", "Trio The Punch - Never Forget Me... (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, triothepj,triothep, triothep, triothep, driver_device, 0, ROT0, "Data East Corporation", "Trio The Punch - Never Forget Me... (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, actfancr, 0, actfancr, actfancr, actfancr_state, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (World revision 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, actfancr1,actfancr, actfancr, actfancr, actfancr_state, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (World revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, actfancrj,actfancr, actfancr, actfancr, actfancr_state, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (Japan revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, triothep, 0, triothep, triothep, actfancr_state, 0, ROT0, "Data East Corporation", "Trio The Punch - Never Forget Me... (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, triothepj,triothep, triothep, triothep, actfancr_state, 0, ROT0, "Data East Corporation", "Trio The Punch - Never Forget Me... (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/adam.cpp b/src/mame/drivers/adam.cpp index 230518deb05..bb9ffe50744 100644 --- a/src/mame/drivers/adam.cpp +++ b/src/mame/drivers/adam.cpp @@ -1047,7 +1047,7 @@ DEVICE_INPUT_DEFAULTS_END // MACHINE_CONFIG( adam ) //------------------------------------------------- -static MACHINE_CONFIG_START( adam, adam_state ) +static MACHINE_CONFIG_START( adam ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_7_15909MHz/2) MCFG_CPU_PROGRAM_MAP(adam_mem) @@ -1146,5 +1146,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1982, adam, 0, coleco, adam, adam, driver_device, 0, "Coleco", "Adam", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, adam, 0, coleco, adam, adam, adam_state, 0, "Coleco", "Adam", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/adp.cpp b/src/mame/drivers/adp.cpp index eec373a4bf3..e12f46bec30 100644 --- a/src/mame/drivers/adp.cpp +++ b/src/mame/drivers/adp.cpp @@ -177,7 +177,7 @@ public: m_duart(*this, "duart68681"), m_palette(*this, "palette"), m_in0(*this, "IN0") - { } + { } required_device m_microtouch; required_device m_maincpu; @@ -533,7 +533,7 @@ static ADDRESS_MAP_START( fstation_hd63484_map, AS_0, 16, adp_state ) AM_RANGE(0x80000, 0xfffff) AM_RAM ADDRESS_MAP_END -static MACHINE_CONFIG_START( quickjac, adp_state ) +static MACHINE_CONFIG_START( quickjac ) MCFG_CPU_ADD("maincpu", M68000, 8000000) MCFG_CPU_PROGRAM_MAP(quickjac_mem) @@ -721,11 +721,11 @@ ROM_START( fstation ) ROM_END -GAME( 1990, backgamn, 0, backgamn, skattv, driver_device, 0, ROT0, "ADP", "Backgammon", MACHINE_NOT_WORKING ) -GAME( 1993, quickjac, 0, quickjac, quickjac, driver_device, 0, ROT0, "ADP", "Quick Jack", MACHINE_NOT_WORKING ) -GAME( 1994, skattv, 0, skattv, skattv, driver_device, 0, ROT0, "ADP", "Skat TV", MACHINE_NOT_WORKING ) -GAME( 1995, skattva, skattv, skattva, skattva, driver_device, 0, ROT0, "ADP", "Skat TV (version TS3)", MACHINE_NOT_WORKING ) -GAME( 1997, fashiong, 0, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 1)", MACHINE_NOT_WORKING ) -GAME( 1997, fashiong2, fashiong, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 2)", MACHINE_NOT_WORKING ) -GAME( 1999, funlddlx, 0, funland, skattv, driver_device, 0, ROT0, "Stella", "Funny Land de Luxe", MACHINE_NOT_WORKING ) -GAME( 2000, fstation, 0, fstation, fstation, driver_device, 0, ROT0, "ADP", "Fun Station Spielekoffer 9 Spiele", MACHINE_NOT_WORKING ) +GAME( 1990, backgamn, 0, backgamn, skattv, adp_state, 0, ROT0, "ADP", "Backgammon", MACHINE_NOT_WORKING ) +GAME( 1993, quickjac, 0, quickjac, quickjac, adp_state, 0, ROT0, "ADP", "Quick Jack", MACHINE_NOT_WORKING ) +GAME( 1994, skattv, 0, skattv, skattv, adp_state, 0, ROT0, "ADP", "Skat TV", MACHINE_NOT_WORKING ) +GAME( 1995, skattva, skattv, skattva, skattva, adp_state, 0, ROT0, "ADP", "Skat TV (version TS3)", MACHINE_NOT_WORKING ) +GAME( 1997, fashiong, 0, fashiong, skattv, adp_state, 0, ROT0, "ADP", "Fashion Gambler (set 1)", MACHINE_NOT_WORKING ) +GAME( 1997, fashiong2, fashiong, fashiong, skattv, adp_state, 0, ROT0, "ADP", "Fashion Gambler (set 2)", MACHINE_NOT_WORKING ) +GAME( 1999, funlddlx, 0, funland, skattv, adp_state, 0, ROT0, "Stella", "Funny Land de Luxe", MACHINE_NOT_WORKING ) +GAME( 2000, fstation, 0, fstation, fstation, adp_state, 0, ROT0, "ADP", "Fun Station Spielekoffer 9 Spiele", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/advision.cpp b/src/mame/drivers/advision.cpp index d715478c9ec..88b545390fa 100644 --- a/src/mame/drivers/advision.cpp +++ b/src/mame/drivers/advision.cpp @@ -43,9 +43,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 8, advision_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(ext_ram_r, ext_ram_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(controller_r, bankswitch_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(av_control_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(vsync_r) ADDRESS_MAP_END /* Input Ports */ @@ -64,11 +61,15 @@ INPUT_PORTS_END /* Machine Driver */ -static MACHINE_CONFIG_START( advision, advision_state ) +static MACHINE_CONFIG_START( advision ) /* basic machine hardware */ MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_11MHz) MCFG_CPU_PROGRAM_MAP(program_map) MCFG_CPU_IO_MAP(io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(advision_state, controller_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(advision_state, bankswitch_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(advision_state, av_control_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(advision_state, vsync_r)) MCFG_CPU_ADD(COP411_TAG, COP411, 52631*4) // COP411L-KCN/N, R11=82k, C8=56pF MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_4, COP400_CKO_RAM_POWER_SUPPLY, false) @@ -113,5 +114,5 @@ ROM_END /* Game Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1982, advision, 0, 0, advision, advision, driver_device, 0, "Entex", "Adventure Vision", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1982, advision, 0, 0, advision, advision, advision_state, 0, "Entex", "Adventure Vision", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/aeroboto.cpp b/src/mame/drivers/aeroboto.cpp index 25dd1ee8cf4..ea0f5ffce98 100644 --- a/src/mame/drivers/aeroboto.cpp +++ b/src/mame/drivers/aeroboto.cpp @@ -236,7 +236,7 @@ void aeroboto_state::machine_reset() m_sy = 0; } -static MACHINE_CONFIG_START( formatz, aeroboto_state ) +static MACHINE_CONFIG_START( formatz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_10MHz/8) /* verified on pcb */ @@ -338,5 +338,5 @@ ROM_END -GAME( 1984, formatz, 0, formatz, formatz, driver_device, 0, ROT0, "Jaleco", "Formation Z", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, aeroboto, formatz, formatz, formatz, driver_device, 0, ROT0, "Jaleco (Williams license)", "Aeroboto", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, formatz, 0, formatz, formatz, aeroboto_state, 0, ROT0, "Jaleco", "Formation Z", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, aeroboto, formatz, formatz, formatz, aeroboto_state, 0, ROT0, "Jaleco (Williams license)", "Aeroboto", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp index b9695300597..5a1d4b662b6 100644 --- a/src/mame/drivers/aerofgt.cpp +++ b/src/mame/drivers/aerofgt.cpp @@ -65,8 +65,10 @@ Verification still needed for the other PCBs. #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" +#include "machine/vs9209.h" #include "sound/2610intf.h" #include "sound/3812intf.h" +#include "video/vsystem_gga.h" #include "screen.h" #include "speaker.h" @@ -94,6 +96,12 @@ WRITE8_MEMBER(aerofgt_state::pending_command_clear_w) m_pending_command = 0; } +WRITE8_MEMBER(aerofgt_state::aerofgt_unknown_output_w) +{ + if (data != 0) + logerror("Writing %02X to unknown output port\n", data); +} + WRITE8_MEMBER(aerofgt_state::aerofgt_sh_bankswitch_w) { m_soundbank->set_entry(data & 0x03); @@ -144,6 +152,7 @@ static ADDRESS_MAP_START( pspikes_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff) AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w) AM_RANGE(0xfff006, 0xfff007) AM_READWRITE8(pending_command_r, sound_command_w, 0x00ff) + AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( pspikesb_map, AS_PROGRAM, 16, aerofgt_state ) @@ -161,6 +170,7 @@ static ADDRESS_MAP_START( pspikesb_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w) AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) AM_RANGE(0xfff008, 0xfff009) AM_WRITE(pspikesb_oki_banking_w) + AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( spikes91_map, AS_PROGRAM, 16, aerofgt_state ) @@ -196,6 +206,7 @@ static ADDRESS_MAP_START( pspikesc_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_RANGE(0xfff004, 0xfff005) AM_WRITE(aerofgt_bg1scrolly_w) AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( karatblz_map, AS_PROGRAM, 16, aerofgt_state ) @@ -217,6 +228,7 @@ static ADDRESS_MAP_START( karatblz_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0x0ff00a, 0x0ff00b) AM_READ8(pending_command_r, 0x00ff) AM_WRITE(aerofgt_bg1scrolly_w) AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITE(aerofgt_bg2scrollx_w) AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE(aerofgt_bg2scrolly_w) + AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( spinlbrk_map, AS_PROGRAM, 16, aerofgt_state ) @@ -233,6 +245,7 @@ static ADDRESS_MAP_START( spinlbrk_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0xfff006, 0xfff007) AM_WRITE8(sound_command_w, 0x00ff) // AM_RANGE(0xfff008, 0xfff009) - read when analog inputs are enabled // AM_RANGE(0xfff00a, 0xfff00b) / + AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( turbofrc_map, AS_PROGRAM, 16, aerofgt_state ) @@ -255,6 +268,7 @@ static ADDRESS_MAP_START( turbofrc_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0x0ff008, 0x0ff00b) AM_WRITE(turbofrc_gfxbank_w) AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITENOP /* related to bg2 (written together with the scroll registers) */ AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE8(sound_command_w, 0xff00) + AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( aerofgtb_map, AS_PROGRAM, 16, aerofgt_state ) @@ -274,6 +288,7 @@ static ADDRESS_MAP_START( aerofgtb_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2") AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w) AM_RANGE(0x0fe00e, 0x0fe00f) AM_WRITE8(sound_command_w, 0xff00) + AM_RANGE(0x0fe400, 0x0fe403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */ ADDRESS_MAP_END @@ -291,13 +306,7 @@ static ADDRESS_MAP_START( aerofgt_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0xffff80, 0xffff87) AM_WRITE(aerofgt_gfxbank_w) AM_RANGE(0xffff88, 0xffff89) AM_WRITE(aerofgt_bg1scrolly_w) /* + something else in the top byte */ AM_RANGE(0xffff90, 0xffff91) AM_WRITE(aerofgt_bg2scrolly_w) /* + something else in the top byte */ - AM_RANGE(0xffffa0, 0xffffa1) AM_READ_PORT("P1") - AM_RANGE(0xffffa2, 0xffffa3) AM_READ_PORT("P2") - AM_RANGE(0xffffa4, 0xffffa5) AM_READ_PORT("SYSTEM") - AM_RANGE(0xffffa6, 0xffffa7) AM_READ_PORT("DSW1") - AM_RANGE(0xffffa8, 0xffffa9) AM_READ_PORT("DSW2") - AM_RANGE(0xffffac, 0xffffad) AM_READ8(pending_command_r, 0x00ff) AM_WRITENOP /* ??? */ - AM_RANGE(0xffffae, 0xffffaf) AM_READ_PORT("DSW3") + AM_RANGE(0xffffa0, 0xffffbf) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff) AM_RANGE(0xffffc0, 0xffffc1) AM_WRITE8(sound_command_w, 0x00ff) ADDRESS_MAP_END @@ -322,8 +331,7 @@ static ADDRESS_MAP_START( aerfboot_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0x0fe00e, 0x0fe00f) AM_WRITE8(aerfboot_soundlatch_w, 0xff00) AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP AM_RANGE(0x0fe012, 0x0fe013) AM_WRITENOP - AM_RANGE(0x0fe400, 0x0fe401) AM_WRITENOP - AM_RANGE(0x0fe402, 0x0fe403) AM_WRITENOP + AM_RANGE(0x0fe400, 0x0fe403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */ AM_RANGE(0x100000, 0x107fff) AM_WRITENOP AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("spriteram3") @@ -353,8 +361,7 @@ static ADDRESS_MAP_START( aerfboo2_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0x0fe01e, 0x0fe01f) AM_WRITE(aerfboo2_okim6295_banking_w) // AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP // AM_RANGE(0x0fe012, 0x0fe013) AM_WRITE(aerfboot_soundlatch_w) - AM_RANGE(0x0fe400, 0x0fe401) AM_WRITENOP // data for a crtc? - AM_RANGE(0x0fe402, 0x0fe403) AM_WRITENOP // address for a crtc? + AM_RANGE(0x0fe400, 0x0fe403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */ ADDRESS_MAP_END @@ -372,6 +379,7 @@ static ADDRESS_MAP_START( wbbc97_map, AS_PROGRAM, 16, aerofgt_state ) AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w) AM_RANGE(0xfff006, 0xfff007) AM_READNOP AM_WRITE8(sound_command_w, 0x00ff) AM_RANGE(0xfff00e, 0xfff00f) AM_WRITE(wbbc97_bitmap_enable_w) + AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, aerofgt_state ) @@ -987,92 +995,92 @@ INPUT_PORTS_END static INPUT_PORTS_START( aerofgt ) PORT_START("P1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("P2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("SYSTEM") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("DSW1") /* "Free Play mode: Have SW1:1-8 ON." */ - PORT_DIPNAME( 0x0001, 0x0001, "Coin Slot" ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x0001, "Same" ) - PORT_DIPSETTING( 0x0000, "Individual" ) - PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:2,3,4") - PORT_DIPSETTING( 0x000a, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x000e, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0006, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) ) - PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7") - PORT_DIPSETTING( 0x0050, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0060, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0070, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0030, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) ) - PORT_DIPNAME( 0x0080, 0x0080, "Continue Coin" ) PORT_DIPLOCATION("SW1:8") /* "When ON, SW1:2-7 are disabled." */ - PORT_DIPSETTING( 0x0080, "Start 1 Coin/Continue 1 Coin" ) - PORT_DIPSETTING( 0x0000, "Start 2 Coin/Continue 1 Coin" ) + PORT_DIPNAME( 0x01, 0x01, "Coin Slot" ) PORT_DIPLOCATION("SW1:1") + PORT_DIPSETTING( 0x01, "Same" ) + PORT_DIPSETTING( 0x00, "Individual" ) + PORT_DIPNAME( 0x0e, 0x0e, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:2,3,4") + PORT_DIPSETTING( 0x0a, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0e, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) + PORT_DIPNAME( 0x70, 0x70, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7") + PORT_DIPSETTING( 0x50, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x60, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x70, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) + PORT_DIPNAME( 0x80, 0x80, "Continue Coin" ) PORT_DIPLOCATION("SW1:8") /* "When ON, SW1:2-7 are disabled." */ + PORT_DIPSETTING( 0x80, "Start 1 Coin/Continue 1 Coin" ) + PORT_DIPSETTING( 0x00, "Start 2 Coin/Continue 1 Coin" ) PORT_START("DSW2") - PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1") - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2") - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4") - PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:5,6") - PORT_DIPSETTING( 0x0020, "1" ) - PORT_DIPSETTING( 0x0010, "2" ) - PORT_DIPSETTING( 0x0030, "3" ) - PORT_DIPSETTING( 0x0000, "4" ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:7") - PORT_DIPSETTING( 0x0040, "200000" ) - PORT_DIPSETTING( 0x0000, "300000" ) - PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW2:8" ) - - /* This DSW3 is not documented in the Aero Fighters manual */ - PORT_START("DSW3") - PORT_DIPNAME( 0x000f, 0x0000, DEF_STR( Region ) ) - PORT_DIPSETTING( 0x0000, "Any" ) - PORT_DIPSETTING( 0x000f, "USA/Canada" ) - PORT_DIPSETTING( 0x000e, DEF_STR( Korea ) ) - PORT_DIPSETTING( 0x000d, DEF_STR( Hong_Kong ) ) - PORT_DIPSETTING( 0x000b, DEF_STR( Taiwan ) ) + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1") + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2") + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4") + PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:5,6") + PORT_DIPSETTING( 0x20, "1" ) + PORT_DIPSETTING( 0x10, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x00, "4" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:7") + PORT_DIPSETTING( 0x40, "200000" ) + PORT_DIPSETTING( 0x00, "300000" ) + PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" ) + + /* Jumpers not documented in the Aero Fighters manual */ + PORT_START("JP1") + PORT_DIPNAME( 0xf, 0x0, DEF_STR( Region ) ) + PORT_DIPSETTING( 0x0, "Any" ) + PORT_DIPSETTING( 0xf, "USA/Canada" ) + PORT_DIPSETTING( 0xe, DEF_STR( Korea ) ) + PORT_DIPSETTING( 0xd, DEF_STR( Hong_Kong ) ) + PORT_DIPSETTING( 0xb, DEF_STR( Taiwan ) ) INPUT_PORTS_END static INPUT_PORTS_START( wbbc97 ) @@ -1324,7 +1332,7 @@ MACHINE_RESET_MEMBER(aerofgt_state,aerofgt) m_soundbank->set_entry(0); /* needed by spinlbrk */ } -static MACHINE_CONFIG_START( pspikes, aerofgt_state ) +static MACHINE_CONFIG_START( pspikes ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,XTAL_20MHz/2) /* verified on pcb */ @@ -1357,6 +1365,8 @@ static MACHINE_CONFIG_START( pspikes, aerofgt_state ) MCFG_VSYSTEM_SPR2_SET_GFXREGION(1) MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes) /* sound hardware */ @@ -1372,7 +1382,7 @@ static MACHINE_CONFIG_START( pspikes, aerofgt_state ) MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( spikes91, aerofgt_state ) +static MACHINE_CONFIG_START( spikes91 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,20000000/2) /* 10 MHz (?) */ @@ -1397,6 +1407,8 @@ static MACHINE_CONFIG_START( spikes91, aerofgt_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes) /* sound hardware */ @@ -1408,7 +1420,7 @@ static MACHINE_CONFIG_START( spikes91, aerofgt_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pspikesb, aerofgt_state ) +static MACHINE_CONFIG_START( pspikesb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,20000000/2) /* 10 MHz (?) */ @@ -1431,16 +1443,18 @@ static MACHINE_CONFIG_START( pspikesb, aerofgt_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_LOW) // clock frequency & pin 7 not verified, pin high causes sound pitch to be too high + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_LOW) // clock frequency & pin 7 not verified, pin high causes sound pitch to be too high MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pspikesc, aerofgt_state ) +static MACHINE_CONFIG_START( pspikesc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,20000000/2) /* 10 MHz (?) */ @@ -1463,6 +1477,8 @@ static MACHINE_CONFIG_START( pspikesc, aerofgt_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_VSYSTEM_SPR2_SET_GFXREGION(1) @@ -1473,11 +1489,11 @@ static MACHINE_CONFIG_START( pspikesc, aerofgt_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( karatblz, aerofgt_state ) +static MACHINE_CONFIG_START( karatblz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,20000000/2) /* 10 MHz (?) */ @@ -1505,6 +1521,8 @@ static MACHINE_CONFIG_START( karatblz, aerofgt_state ) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) @@ -1530,7 +1548,7 @@ static MACHINE_CONFIG_START( karatblz, aerofgt_state ) MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( karatblzbl, aerofgt_state ) +static MACHINE_CONFIG_START( karatblzbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,20000000/2) /* 10 MHz (?) */ @@ -1567,6 +1585,8 @@ static MACHINE_CONFIG_START( karatblzbl, aerofgt_state ) MCFG_VSYSTEM_SPR2_SET_GFXREGION(3) MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VIDEO_START_OVERRIDE(aerofgt_state,karatblz) MCFG_GENERIC_LATCH_8_ADD("soundlatch") @@ -1584,7 +1604,7 @@ static MACHINE_CONFIG_START( karatblzbl, aerofgt_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( spinlbrk, aerofgt_state ) +static MACHINE_CONFIG_START( spinlbrk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,XTAL_20MHz/2) /* verified on pcb */ @@ -1612,6 +1632,8 @@ static MACHINE_CONFIG_START( spinlbrk, aerofgt_state ) MCFG_PALETTE_ADD_INIT_BLACK("palette", 1024) // doesn't fully initialize palette at start-up ... MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_VSYSTEM_SPR2_SET_PRITYPE(1) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) @@ -1638,7 +1660,7 @@ static MACHINE_CONFIG_START( spinlbrk, aerofgt_state ) MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( turbofrc, aerofgt_state ) +static MACHINE_CONFIG_START( turbofrc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,XTAL_20MHz/2) /* verified on pcb */ @@ -1666,6 +1688,8 @@ static MACHINE_CONFIG_START( turbofrc, aerofgt_state ) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) @@ -1691,7 +1715,7 @@ static MACHINE_CONFIG_START( turbofrc, aerofgt_state ) MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( aerofgtb, aerofgt_state ) +static MACHINE_CONFIG_START( aerofgtb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,20000000/2) /* 10 MHz (?) */ @@ -1720,6 +1744,8 @@ static MACHINE_CONFIG_START( aerofgtb, aerofgt_state ) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) @@ -1745,7 +1771,7 @@ static MACHINE_CONFIG_START( aerofgtb, aerofgt_state ) MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( aerofgt, aerofgt_state ) +static MACHINE_CONFIG_START( aerofgt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,XTAL_20MHz/2) /* verified on pcb */ @@ -1760,6 +1786,16 @@ static MACHINE_CONFIG_START( aerofgt, aerofgt_state ) MCFG_MACHINE_START_OVERRIDE(aerofgt_state,aerofgt) MCFG_MACHINE_RESET_OVERRIDE(aerofgt_state,aerofgt) + MCFG_DEVICE_ADD("io", VS9209, 0) + MCFG_VS9209_IN_PORTA_CB(IOPORT("P1")) + MCFG_VS9209_IN_PORTB_CB(IOPORT("P2")) + MCFG_VS9209_IN_PORTC_CB(IOPORT("SYSTEM")) + MCFG_VS9209_IN_PORTD_CB(IOPORT("DSW1")) + MCFG_VS9209_IN_PORTE_CB(IOPORT("DSW2")) + MCFG_VS9209_IN_PORTG_CB(READ8(aerofgt_state, pending_command_r)) + MCFG_VS9209_OUT_PORTG_CB(WRITE8(aerofgt_state, aerofgt_unknown_output_w)) + MCFG_VS9209_IN_PORTH_CB(IOPORT("JP1")) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(61.31) /* verified on pcb */ @@ -1794,7 +1830,7 @@ static MACHINE_CONFIG_START( aerofgt, aerofgt_state ) MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( aerfboot, aerofgt_state ) +static MACHINE_CONFIG_START( aerfboot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,20000000/2) /* 10 MHz (?) */ @@ -1821,6 +1857,8 @@ static MACHINE_CONFIG_START( aerfboot, aerofgt_state ) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc) /* sound hardware */ @@ -1828,12 +1866,12 @@ static MACHINE_CONFIG_START( aerfboot, aerofgt_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( aerfboo2, aerofgt_state ) +static MACHINE_CONFIG_START( aerfboo2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,20000000/2) /* 10 MHz (?) */ @@ -1857,16 +1895,18 @@ static MACHINE_CONFIG_START( aerfboo2, aerofgt_state ) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wbbc97, aerofgt_state ) +static MACHINE_CONFIG_START( wbbc97 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,20000000/2) /* 10 MHz (?) */ @@ -1891,6 +1931,8 @@ static MACHINE_CONFIG_START( wbbc97, aerofgt_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_VSYSTEM_SPR2_SET_GFXREGION(1) @@ -1907,7 +1949,7 @@ static MACHINE_CONFIG_START( wbbc97, aerofgt_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -2814,34 +2856,34 @@ DRIVER_INIT_MEMBER(aerofgt_state, banked_oki) } -GAME( 1990, spinlbrk, 0, spinlbrk, spinlbrk, driver_device, 0, ROT0, "V-System Co.", "Spinal Breakers (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1990, spinlbrku,spinlbrk, spinlbrk, spinlbrku, driver_device,0, ROT0, "V-System Co.", "Spinal Breakers (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1990, spinlbrkj,spinlbrk, spinlbrk, spinlbrk, driver_device, 0, ROT0, "V-System Co.", "Spinal Breakers (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1990, spinlbrk, 0, spinlbrk, spinlbrk, aerofgt_state, 0, ROT0, "V-System Co.", "Spinal Breakers (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1990, spinlbrku, spinlbrk, spinlbrk, spinlbrku, aerofgt_state, 0, ROT0, "V-System Co.", "Spinal Breakers (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1990, spinlbrkj, spinlbrk, spinlbrk, spinlbrk, aerofgt_state, 0, ROT0, "V-System Co.", "Spinal Breakers (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, pspikes, 0, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Power Spikes (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, pspikesk, pspikes, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Power Spikes (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, pspikesu, pspikes, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Power Spikes (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, svolly91, pspikes, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Super Volley '91 (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, pspikesb, pspikes, pspikesb, pspikesb, driver_device, 0, ROT0, "bootleg", "Power Spikes (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, pspikesba,pspikes, pspikesb, pspikesb, driver_device, 0, ROT0, "bootleg (Playmark?)","Power Spikes (Italian bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, spikes91, pspikes, spikes91, pspikes, driver_device, 0, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL ) -GAME( 1991, spikes91b,pspikes, spikes91, pspikes, driver_device, 0, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL ) -GAME( 1991, pspikesc, pspikes, pspikesc, pspikesc, driver_device, 0, ROT0, "bootleg", "Power Spikes (China)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, wbbc97, 0, wbbc97, wbbc97, driver_device, 0, ROT0, "Comad", "Beach Festival World Championship 1997", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // based on power spikes codebase +GAME( 1991, pspikes, 0, pspikes, pspikes, aerofgt_state, 0, ROT0, "Video System Co.", "Power Spikes (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, pspikesk, pspikes, pspikes, pspikes, aerofgt_state, 0, ROT0, "Video System Co.", "Power Spikes (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, pspikesu, pspikes, pspikes, pspikes, aerofgt_state, 0, ROT0, "Video System Co.", "Power Spikes (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, svolly91, pspikes, pspikes, pspikes, aerofgt_state, 0, ROT0, "Video System Co.", "Super Volley '91 (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, pspikesb, pspikes, pspikesb, pspikesb, aerofgt_state, 0, ROT0, "bootleg", "Power Spikes (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, pspikesba, pspikes, pspikesb, pspikesb, aerofgt_state, 0, ROT0, "bootleg (Playmark?)","Power Spikes (Italian bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, spikes91, pspikes, spikes91, pspikes, aerofgt_state, 0, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL ) +GAME( 1991, spikes91b, pspikes, spikes91, pspikes, aerofgt_state, 0, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL ) +GAME( 1991, pspikesc, pspikes, pspikesc, pspikesc, aerofgt_state, 0, ROT0, "bootleg", "Power Spikes (China)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, wbbc97, 0, wbbc97, wbbc97, aerofgt_state, 0, ROT0, "Comad", "Beach Festival World Championship 1997", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // based on power spikes codebase -GAME( 1991, karatblz, 0, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Karate Blazers (World, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, karatblza,karatblz, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Karate Blazers (World, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, karatblzu,karatblz, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Karate Blazers (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, karatblzj,karatblz, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Toushin Blazers (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, karatblzbl,karatblz,karatblzbl,karatblz,driver_device, 0, ROT0, "bootleg", "Karate Blazers (bootleg with Street Smart sound hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) +GAME( 1991, karatblz, 0, karatblz, karatblz, aerofgt_state, 0, ROT0, "Video System Co.", "Karate Blazers (World, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, karatblza, karatblz, karatblz, karatblz, aerofgt_state, 0, ROT0, "Video System Co.", "Karate Blazers (World, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, karatblzu, karatblz, karatblz, karatblz, aerofgt_state, 0, ROT0, "Video System Co.", "Karate Blazers (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, karatblzj, karatblz, karatblz, karatblz, aerofgt_state, 0, ROT0, "Video System Co.", "Toushin Blazers (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, karatblzbl, karatblz, karatblzbl, karatblz, aerofgt_state, 0, ROT0, "bootleg", "Karate Blazers (bootleg with Street Smart sound hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) -GAME( 1991, turbofrc, 0, turbofrc, turbofrc, driver_device, 0, ROT270, "Video System Co.", "Turbo Force (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1991, turbofrcu,turbofrc, turbofrc, turbofrc, driver_device, 0, ROT270, "Video System Co.", "Turbo Force (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, turbofrc, 0, turbofrc, turbofrc, aerofgt_state, 0, ROT270, "Video System Co.", "Turbo Force (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1991, turbofrcu, turbofrc, turbofrc, turbofrc, aerofgt_state, 0, ROT270, "Video System Co.", "Turbo Force (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // the tiles on these also contain an alt title 'The Final War' for both the title screen and attract logo was it ever used? -GAME( 1992, aerofgt, 0, aerofgt, aerofgt, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters (World / USA + Canada / Korea / Hong Kong / Taiwan) (newer hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // this has the newer sprite chip etc. unlike all other games in this driver.. -GAME( 1992, aerofgtb, aerofgt, aerofgtb, aerofgtb, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // probably intended for Taiwan because the Japanese name is Sonic Wings (below) -GAME( 1992, aerofgtc, aerofgt, aerofgtb, aerofgtb, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1992, sonicwi, aerofgt, aerofgtb, aerofgtb, driver_device, 0, ROT270, "Video System Co.", "Sonic Wings (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1992, aerfboot, aerofgt, aerfboot, aerofgtb, aerofgt_state, banked_oki, ROT270, "bootleg", "Aero Fighters (bootleg set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) -GAME( 1992, aerfboo2, aerofgt, aerfboo2, aerofgtb, driver_device, 0, ROT270, "bootleg", "Aero Fighters (bootleg set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) +GAME( 1992, aerofgt, 0, aerofgt, aerofgt, aerofgt_state, 0, ROT270, "Video System Co.", "Aero Fighters (World / USA + Canada / Korea / Hong Kong / Taiwan) (newer hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // this has the newer sprite chip etc. unlike all other games in this driver.. +GAME( 1992, aerofgtb, aerofgt, aerofgtb, aerofgtb, aerofgt_state, 0, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // probably intended for Taiwan because the Japanese name is Sonic Wings (below) +GAME( 1992, aerofgtc, aerofgt, aerofgtb, aerofgtb, aerofgt_state, 0, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1992, sonicwi, aerofgt, aerofgtb, aerofgtb, aerofgt_state, 0, ROT270, "Video System Co.", "Sonic Wings (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1992, aerfboot, aerofgt, aerfboot, aerofgtb, aerofgt_state, banked_oki, ROT270, "bootleg", "Aero Fighters (bootleg set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) +GAME( 1992, aerfboo2, aerofgt, aerfboo2, aerofgtb, aerofgt_state, 0, ROT270, "bootleg", "Aero Fighters (bootleg set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/agat.cpp b/src/mame/drivers/agat.cpp new file mode 100644 index 00000000000..546122ead74 --- /dev/null +++ b/src/mame/drivers/agat.cpp @@ -0,0 +1,1115 @@ +// license:BSD-3-Clause +// copyright-holders:R. Belmont, Sergey Svishchev +/*************************************************************************** + + agat.c + Skeleton driver for Agat series of Soviet Apple II non-clones + + These are similar to Apple II (same bus architecture, keyboard and + floppy interface), but video controller is completely different. + + To do: + - native keyboards (at least two variants) + - 840K floppy controller (MFM encoding, but track layout is unique) + - agat7: 64K and 128K onboard memory configurations + - agat9 + - 3rd party slot devices + +************************************************************************/ + +#include "emu.h" +#include "includes/apple2.h" +#include "video/agat7.h" + +#include "machine/bankdev.h" +#include "imagedev/flopdrv.h" + +#include "bus/a2bus/a2diskii.h" +#include "bus/a2bus/agat7langcard.h" +#include "bus/a2bus/agat7ram.h" + +#include "screen.h" +#include "softlist.h" +#include "speaker.h" + +#include "formats/ap2_dsk.h" + + +#define A7_CPU_TAG "maincpu" +#define A7_KBDC_TAG "ay3600" +#define A7_BUS_TAG "a2bus" +#define A7_SPEAKER_TAG "speaker" +#define A7_CASSETTE_TAG "tape" +#define A7_UPPERBANK_TAG "inhbank" +#define A7_VIDEO_TAG "a7video" + +class agat7_state : public driver_device +{ +public: + agat7_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, A7_CPU_TAG) + , m_ram(*this, RAM_TAG) + , m_ay3600(*this, A7_KBDC_TAG) + , m_video(*this, A7_VIDEO_TAG) + , m_a2bus(*this, A7_BUS_TAG) + , m_joy1x(*this, "joystick_1_x") + , m_joy1y(*this, "joystick_1_y") + , m_joy2x(*this, "joystick_2_x") + , m_joy2y(*this, "joystick_2_y") + , m_joybuttons(*this, "joystick_buttons") + , m_kbspecial(*this, "keyb_special") + , m_kbrepeat(*this, "keyb_repeat") + , m_speaker(*this, A7_SPEAKER_TAG) + , m_cassette(*this, A7_CASSETTE_TAG) + , m_upperbank(*this, A7_UPPERBANK_TAG) + { } + + required_device m_maincpu; + required_device m_ram; + required_device m_ay3600; + required_device m_video; + required_device m_a2bus; + required_ioport m_joy1x, m_joy1y, m_joy2x, m_joy2y, m_joybuttons; + required_ioport m_kbspecial; + required_ioport m_kbrepeat; + required_device m_speaker; + required_device m_cassette; + required_device m_upperbank; + + TIMER_DEVICE_CALLBACK_MEMBER(ay3600_repeat); + TIMER_DEVICE_CALLBACK_MEMBER(agat_timer); + TIMER_DEVICE_CALLBACK_MEMBER(agat_vblank); + + virtual void machine_start() override; + virtual void machine_reset() override; + + DECLARE_READ8_MEMBER(c000_r); + DECLARE_WRITE8_MEMBER(c000_w); + DECLARE_READ8_MEMBER(c080_r); + DECLARE_WRITE8_MEMBER(c080_w); + DECLARE_READ8_MEMBER(c100_r); + DECLARE_WRITE8_MEMBER(c100_w); + DECLARE_READ8_MEMBER(c800_r); + DECLARE_WRITE8_MEMBER(c800_w); + DECLARE_READ8_MEMBER(inh_r); + DECLARE_WRITE8_MEMBER(inh_w); + DECLARE_WRITE_LINE_MEMBER(a2bus_irq_w); + DECLARE_WRITE_LINE_MEMBER(a2bus_nmi_w); + DECLARE_WRITE_LINE_MEMBER(a2bus_inh_w); + DECLARE_READ_LINE_MEMBER(ay3600_shift_r); + DECLARE_READ_LINE_MEMBER(ay3600_control_r); + DECLARE_WRITE_LINE_MEMBER(ay3600_data_ready_w); + DECLARE_WRITE_LINE_MEMBER(ay3600_ako_w); + + DECLARE_READ8_MEMBER(agat7_membank_r); + DECLARE_WRITE8_MEMBER(agat7_membank_w); + DECLARE_READ8_MEMBER(agat7_ram_r); + DECLARE_WRITE8_MEMBER(agat7_ram_w); + +private: + int m_speaker_state; + int m_cassette_state; + + double m_joystick_x1_time; + double m_joystick_y1_time; + double m_joystick_x2_time; + double m_joystick_y2_time; + + uint16_t m_lastchar, m_strobe; + uint8_t m_transchar; + bool m_anykeydown; + + int m_inh_slot; + int m_cnxx_slot; + + bool m_page2; + bool m_an0, m_an1, m_an2, m_an3; + + uint8_t *m_ram_ptr; + int m_ram_size; + + int m_inh_bank; + + double m_x_calibration, m_y_calibration; + + device_a2bus_card_interface *m_slotdevice[8]; + + bool m_agat7_interrupts; + int m_agat7_membank; + int m_agat7_ram_slot; + + void do_io(address_space &space, int offset); + uint8_t read_floatingbus(); +}; + +/*************************************************************************** + PARAMETERS +***************************************************************************/ + +#define JOYSTICK_DELTA 80 +#define JOYSTICK_SENSITIVITY 50 +#define JOYSTICK_AUTOCENTER 80 + +WRITE_LINE_MEMBER(agat7_state::a2bus_irq_w) +{ + m_maincpu->set_input_line(M6502_IRQ_LINE, state); +} + +WRITE_LINE_MEMBER(agat7_state::a2bus_nmi_w) +{ + m_maincpu->set_input_line(INPUT_LINE_NMI, state); +} + +// This code makes a ton of assumptions because we can guarantee a pre-IIe machine! +WRITE_LINE_MEMBER(agat7_state::a2bus_inh_w) +{ + if (state == ASSERT_LINE) + { + // assume no cards are pulling /INH + m_inh_slot = -1; + m_agat7_ram_slot = -1; + + // scan the slots to figure out which card(s) are INHibiting stuff + for (int i = 0; i <= 7; i++) + { + if (m_slotdevice[i]) + { + // this driver only can inhibit from 0xd000-0xffff + if ((m_slotdevice[i]->inh_start() == 0xd000) && + (m_slotdevice[i]->inh_end() == 0xffff)) + { + if ((m_slotdevice[i]->inh_type() & INH_READ) == INH_READ) + { + if (m_inh_bank != 1) + { + m_upperbank->set_bank(1); + m_inh_bank = 1; + } + } + else + { + if (m_inh_bank != 0) + { + m_upperbank->set_bank(0); + m_inh_bank = 0; + } + } + + m_inh_slot = i; + // break; + } + + if ((m_slotdevice[i]->inh_start() == 0x8000) && + (m_slotdevice[i]->inh_end() == 0xbfff)) + { + if ((m_slotdevice[i]->inh_type() & INH_READ) == INH_READ) + { + m_agat7_ram_slot = i; + } + } + } + } + + // if no slots are inhibiting, make sure ROM is fully switched in + if ((m_inh_slot == -1) && (m_inh_bank != 0)) + { + m_upperbank->set_bank(0); + m_inh_bank = 0; + } + } +} + +/*************************************************************************** + START/RESET +***************************************************************************/ + +void agat7_state::machine_start() +{ + m_ram_ptr = m_ram->pointer(); + m_ram_size = m_ram->size(); + m_speaker_state = 0; + m_speaker->level_w(m_speaker_state); + m_cassette_state = 0; + m_cassette->output(-1.0f); + m_upperbank->set_bank(0); + m_inh_bank = 0; + + // precalculate joystick time constants + m_x_calibration = attotime::from_usec(12).as_double(); + m_y_calibration = attotime::from_usec(13).as_double(); + + // cache slot devices + for (int i = 0; i <= 7; i++) + { + m_slotdevice[i] = m_a2bus->get_a2bus_card(i); + } + + // setup save states + save_item(NAME(m_speaker_state)); + save_item(NAME(m_cassette_state)); + save_item(NAME(m_joystick_x1_time)); + save_item(NAME(m_joystick_y1_time)); + save_item(NAME(m_joystick_x2_time)); + save_item(NAME(m_joystick_y2_time)); + save_item(NAME(m_lastchar)); + save_item(NAME(m_strobe)); + save_item(NAME(m_transchar)); + save_item(NAME(m_inh_slot)); + save_item(NAME(m_inh_bank)); + save_item(NAME(m_cnxx_slot)); + save_item(NAME(m_page2)); + save_item(NAME(m_an0)); + save_item(NAME(m_an1)); + save_item(NAME(m_an2)); + save_item(NAME(m_an3)); + save_item(NAME(m_anykeydown)); + + // setup video pointers + m_video->m_ram_dev = machine().device(RAM_TAG); + m_video->m_char_ptr = memregion("gfx1")->base(); + m_video->m_char_size = memregion("gfx1")->bytes(); +} + +void agat7_state::machine_reset() +{ + m_inh_slot = -1; + m_cnxx_slot = -1; + m_page2 = false; + m_an0 = m_an1 = m_an2 = m_an3 = false; + m_anykeydown = false; + m_upperbank->set_bank(0); + m_agat7_interrupts = false; + m_agat7_membank = 0; + m_agat7_ram_slot = -1; +} + +/*************************************************************************** + VIDEO +***************************************************************************/ + +/*************************************************************************** + I/O +***************************************************************************/ +// most softswitches don't care about read vs write, so handle them here +void agat7_state::do_io(address_space &space, int offset) +{ + if (machine().side_effect_disabled()) + { + return; + } + + switch (offset & 0xf0) + { + case 0x20: + m_cassette_state ^= 1; + m_cassette->output(m_cassette_state ? 1.0f : -1.0f); + break; + + case 0x30: + m_speaker_state ^= 1; + m_speaker->level_w(m_speaker_state); + break; + + // XXX agat7: 0x4N -- enable timer interrupts, 0x5N -- disable (or vice versa depending on hw rev) + case 0x40: + m_agat7_interrupts = true; + break; + + case 0x50: + m_agat7_interrupts = false; + + case 0x70: + m_joystick_x1_time = machine().time().as_double() + m_x_calibration * m_joy1x->read(); + m_joystick_y1_time = machine().time().as_double() + m_y_calibration * m_joy1y->read(); + m_joystick_x2_time = machine().time().as_double() + m_x_calibration * m_joy2x->read(); + m_joystick_y2_time = machine().time().as_double() + m_y_calibration * m_joy2y->read(); + break; + } +} + +READ8_MEMBER(agat7_state::c000_r) +{ + if (offset) + logerror("%s: c000_r %04X == %02X\n", machine().describe_context(), offset+0xc000, 0); + else if (m_strobe) + logerror("%s: c000_r %04X == %02X\n", machine().describe_context(), offset+0xc000, m_transchar | m_strobe); + + switch (offset) + { + // keyboard latch. NB: agat7 returns 0 if latch is clear, agat9 returns char code. + case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: + case 0x08: case 0x09: case 0x0a: case 0x0b: case 0x0c: case 0x0d: case 0x0e: case 0x0f: + return m_strobe ? (m_transchar | m_strobe) : 0; + + case 0x10: // reads any key down, clears strobe + { + uint8_t rv = m_transchar | (m_anykeydown ? 0x80 : 0x00); + m_strobe = 0; + return rv; + } + + case 0x60: // cassette in + case 0x68: + return m_cassette->input() > 0.0 ? 0x80 : 0; + + case 0x61: // button 0 + case 0x69: + return (m_joybuttons->read() & 0x10) ? 0x80 : 0; + + case 0x62: // button 1 + case 0x6a: + return (m_joybuttons->read() & 0x20) ? 0x80 : 0; + + case 0x63: // button 2 + case 0x6b: + return ((m_joybuttons->read() & 0x40) || (m_kbspecial->read() & 0x06)) ? 0 : 0x80; + + case 0x64: // joy 1 X axis + case 0x6c: + return (space.machine().time().as_double() < m_joystick_x1_time) ? 0x80 : 0; + + case 0x65: // joy 1 Y axis + case 0x6d: + return (space.machine().time().as_double() < m_joystick_y1_time) ? 0x80 : 0; + + case 0x66: // joy 2 X axis + case 0x6e: + return (space.machine().time().as_double() < m_joystick_x2_time) ? 0x80 : 0; + + case 0x67: // joy 2 Y axis + case 0x6f: + return (space.machine().time().as_double() < m_joystick_y2_time) ? 0x80 : 0; + + default: + do_io(space, offset); + break; + } + + return read_floatingbus(); +} + +WRITE8_MEMBER(agat7_state::c000_w) +{ + logerror("%s: c000_w %04X <- %02X\n", machine().describe_context(), offset + 0xc000, data); + + switch (offset) + { + // clear keyboard latch + case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: + case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x1c: case 0x1d: case 0x1e: case 0x1f: + m_strobe = 0; + break; + + default: + do_io(space, offset); + break; + } +} + +READ8_MEMBER(agat7_state::c080_r) +{ + if (!machine().side_effect_disabled()) + { + int slot; + + offset &= 0x7F; + slot = offset / 0x10; + + logerror("%s: c080_r %04X (slot %d) == %02X\n", machine().describe_context(), offset + 0xc080, slot, 0); + + if (m_slotdevice[slot] != nullptr) + { + return m_slotdevice[slot]->read_c0nx(space, offset % 0x10); + } + } + + return read_floatingbus(); +} + +WRITE8_MEMBER(agat7_state::c080_w) +{ + int slot; + + offset &= 0x7F; + slot = offset / 0x10; + + logerror("%s: c080_w %04X (slot %d) <- %02X\n", machine().describe_context(), offset + 0xc080, slot, data); + + if (m_slotdevice[slot] != nullptr) + { + m_slotdevice[slot]->write_c0nx(space, offset % 0x10, data); + } +} + +READ8_MEMBER(agat7_state::c100_r) +{ + int slotnum; + uint8_t data = 0; + + slotnum = ((offset >> 8) & 0xf) + 1; + + if (m_slotdevice[slotnum] != nullptr) + { + if ((m_slotdevice[slotnum]->take_c800()) && (!machine().side_effect_disabled())) + { + m_cnxx_slot = slotnum; + } + + logerror("%s: c100_r %04X (slot %d) == %02X\n", machine().describe_context(), offset+0xc100, slotnum, data); + + return m_slotdevice[slotnum]->read_cnxx(space, offset & 0xff); + } + + return read_floatingbus(); +} + +WRITE8_MEMBER(agat7_state::c100_w) +{ + int slotnum; + + slotnum = ((offset >> 8) & 0xf) + 1; + + logerror("%s: c100_w %04X (slot %d) <- %02X\n", machine().describe_context(), offset + 0xc100, slotnum, data); + + if (m_slotdevice[slotnum] != nullptr) + { + if ((m_slotdevice[slotnum]->take_c800()) && (!machine().side_effect_disabled())) + { + m_cnxx_slot = slotnum; + } + + m_slotdevice[slotnum]->write_cnxx(space, offset&0xff, data); + } +} + +READ8_MEMBER(agat7_state::c800_r) +{ +// logerror("%s: c800_r %04X (slot %d) == %02X\n", machine().describe_context(), offset+0xc800, m_cnxx_slot, 0); + + if (offset == 0x7ff) + { + if (!machine().side_effect_disabled()) + { + m_cnxx_slot = -1; + } + + return 0xff; + } + + if ((m_cnxx_slot != -1) && (m_slotdevice[m_cnxx_slot] != nullptr)) + { + return m_slotdevice[m_cnxx_slot]->read_c800(space, offset & 0xfff); + } + + return read_floatingbus(); +} + +WRITE8_MEMBER(agat7_state::c800_w) +{ +// logerror("%s: c800_w %04X <- %02X\n", machine().describe_context(), offset+0xc800, data); + + if (offset == 0x7ff) + { + if (!machine().side_effect_disabled()) + { + m_cnxx_slot = -1; + } + + return; + } + + if ((m_cnxx_slot != -1) && (m_slotdevice[m_cnxx_slot] != nullptr)) + { + m_slotdevice[m_cnxx_slot]->write_c800(space, offset & 0xfff, data); + } +} + +READ8_MEMBER(agat7_state::inh_r) +{ + if (m_inh_slot != -1) + { + return m_slotdevice[m_inh_slot]->read_inh_rom(space, offset + 0xd000); + } + + assert(0); // hitting inh_r with invalid m_inh_slot should not be possible + return read_floatingbus(); +} + +WRITE8_MEMBER(agat7_state::inh_w) +{ + if (m_inh_slot != -1) + { + m_slotdevice[m_inh_slot]->write_inh_rom(space, offset + 0xd000, data); + } +} + +// XXX what does Agat do here? +uint8_t agat7_state::read_floatingbus() +{ + return 0xff; +} + +/*************************************************************************** + ADDRESS MAP +***************************************************************************/ + +/* onboard memory banking on Agat-7 */ + +READ8_MEMBER(agat7_state::agat7_membank_r) +{ + logerror("%s: c0f0_r %04X == %02X\n", machine().describe_context(), offset + 0xc0f0, 0xff); + + m_agat7_membank = offset; + + return 0xff; +} + +WRITE8_MEMBER(agat7_state::agat7_membank_w) +{ + logerror("%s: c0f0_w %04X <- %02X\n", machine().describe_context(), offset + 0xc0f0, data); + + m_agat7_membank = offset; +} + +READ8_MEMBER(agat7_state::agat7_ram_r) +{ + if (offset < 32768) + { + if (offset < m_ram_size) + { + return m_ram_ptr[offset]; + } + } + else + { + if (m_agat7_ram_slot != -1) + return m_slotdevice[m_agat7_ram_slot]->read_inh_rom(space, offset + 0x8000); + if (offset < m_ram_size) + { + if (m_agat7_membank == 0) + return m_ram_ptr[offset]; + else if (m_agat7_membank == 1) + return m_ram_ptr[offset + 16384]; + } + } + + return 0xff; +} + +WRITE8_MEMBER(agat7_state::agat7_ram_w) +{ +// if (offset > 0x7fff) +// logerror("%s: ram %04X (bank %d slot %d) <- %02X\n", machine().describe_context(), offset, m_agat7_membank, m_agat7_ram_slot, data); + + if (offset < 32768) + { + if (offset < m_ram_size) + { + m_ram_ptr[offset] = data; + } + } + else + { + if (m_agat7_ram_slot != -1) + m_slotdevice[m_agat7_ram_slot]->write_inh_rom(space, offset + 0x8000, data); + else if (offset < m_ram_size) + { + if (m_agat7_membank == 0) + m_ram_ptr[offset] = data; + else if (m_agat7_membank == 1) + m_ram_ptr[offset + 16384] = data; + } + } +} + +/* + * onboard RAM is at least 32K, up to 128K. + * first 32K of onboard RAM are always mapped at 0. + * standard add-on RAM cards hold 32K (possibly up to 128K?) + * and are supported only on motherboards with 32K onboard. + * all extra RAM (onboard or addon) is accessible via 16K window at 0x8000. + */ +static ADDRESS_MAP_START( agat7_map, AS_PROGRAM, 8, agat7_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x0000, 0xbfff) AM_READWRITE(agat7_ram_r, agat7_ram_w) + AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_r, c000_w) + AM_RANGE(0xc080, 0xc0ef) AM_READWRITE(c080_r, c080_w) + AM_RANGE(0xc0f0, 0xc0ff) AM_READWRITE(agat7_membank_r, agat7_membank_w) + AM_RANGE(0xc100, 0xc6ff) AM_READWRITE(c100_r, c100_w) + AM_RANGE(0xc700, 0xc7ff) AM_DEVREADWRITE("a7video", agat7video_device, read, write) + AM_RANGE(0xc800, 0xcfff) AM_READWRITE(c800_r, c800_w) + AM_RANGE(0xd000, 0xffff) AM_DEVICE(A7_UPPERBANK_TAG, address_map_bank_device, amap8) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( inhbank_map, AS_PROGRAM, 8, agat7_state ) + AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("maincpu", 0x1000) AM_WRITE(inh_w) + AM_RANGE(0x3000, 0x5fff) AM_READWRITE(inh_r, inh_w) +ADDRESS_MAP_END + +/*************************************************************************** + KEYBOARD +***************************************************************************/ + +READ_LINE_MEMBER(agat7_state::ay3600_shift_r) +{ + // either shift key + if (m_kbspecial->read() & 0x06) + { + return ASSERT_LINE; + } + + return CLEAR_LINE; +} + +READ_LINE_MEMBER(agat7_state::ay3600_control_r) +{ + if (m_kbspecial->read() & 0x08) + { + return ASSERT_LINE; + } + + return CLEAR_LINE; +} + +static const uint8_t a2_key_remap[0x40][4] = +{ +/* norm shft ctrl both */ + { 0x33,0x23,0x33,0x23 }, /* 3 # 00 */ + { 0x34,0x24,0x34,0x24 }, /* 4 $ 01 */ + { 0x35,0x25,0x35,0x25 }, /* 5 % 02 */ + { 0x36,'&', 0x35,'&' }, /* 6 & 03 */ + { 0x37,0x27,0x37,0x27 }, /* 7 ' 04 */ + { 0x38,0x28,0x38,0x28 }, /* 8 ( 05 */ + { 0x39,0x29,0x39,0x29 }, /* 9 ) 06 */ + { 0x30,0x30,0x30,0x30 }, /* 0 07 */ + { 0x3a,0x2a,0x3b,0x2a }, /* : * 08 */ + { 0x2d,0x3d,0x2d,0x3d }, /* - = 09 */ + { 0x51,0x51,0x11,0x11 }, /* q Q 0a */ + { 0x57,0x57,0x17,0x17 }, /* w W 0b */ + { 0x45,0x45,0x05,0x05 }, /* e E 0c */ + { 0x52,0x52,0x12,0x12 }, /* r R 0d */ + { 0x54,0x54,0x14,0x14 }, /* t T 0e */ + { 0x59,0x59,0x19,0x19 }, /* y Y 0f */ + { 0x55,0x55,0x15,0x15 }, /* u U 10 */ + { 0x49,0x49,0x09,0x09 }, /* i I 11 */ + { 0x4f,0x4f,0x0f,0x0f }, /* o O 12 */ + { 0x50,0x50,0x10,0x10 }, /* p P 13 */ + { 0x44,0x44,0x04,0x04 }, /* d D 14 */ + { 0x46,0x46,0x06,0x06 }, /* f F 15 */ + { 0x47,0x47,0x07,0x07 }, /* g G 16 */ + { 0x48,0x48,0x08,0x08 }, /* h H 17 */ + { 0x4a,0x4a,0x0a,0x0a }, /* j J 18 */ + { 0x4b,0x4b,0x0b,0x0b }, /* k K 19 */ + { 0x4c,0x4c,0x0c,0x0c }, /* l L 1a */ + { ';' ,0x2b,';' ,0x2b }, /* ; + 1b */ + { 0x08,0x08,0x08,0x08 }, /* Left 1c */ + { 0x15,0x15,0x15,0x15 }, /* Right 1d */ + { 0x5a,0x5a,0x1a,0x1a }, /* z Z 1e */ + { 0x58,0x58,0x18,0x18 }, /* x X 1f */ + { 0x43,0x43,0x03,0x03 }, /* c C 20 */ + { 0x56,0x56,0x16,0x16 }, /* v V 21 */ + { 0x42,0x42,0x02,0x02 }, /* b B 22 */ + { 0x4e,0x4e,0x0e,0x0e }, /* n N 23 */ + { 0x4d,0x4d,0x0d,0x0d }, /* m M 24 */ + { 0x2c,0x3c,0x2c,0x3c }, /* , < 25 */ + { 0x2e,0x3e,0x2e,0x3e }, /* . > 26 */ + { 0x2f,0x3f,0x2f,0x3f }, /* / ? 27 */ + { 0x53,0x53,0x13,0x13 }, /* s S 28 */ + { 0x32,0x22,0x32,0x00 }, /* 2 " 29 */ + { 0x31,0x21,0x31,0x31 }, /* 1 ! 2a */ + { 0x1b,0x1b,0x1b,0x1b }, /* Escape 2b */ + { 0x41,0x41,0x01,0x01 }, /* a A 2c */ + { 0x20,0x20,0x20,0x20 }, /* Space 2d */ + { 0x19,0x19,0x19,0x19 }, /* Up */ + { 0x1a,0x1a,0x1a,0x1a }, /* Down */ + { 0x10,0x10,0x10,0x10 }, /* KP1 */ + { 0x0d,0x0d,0x0d,0x0d }, /* Enter 31 */ + { 0x11,0x11,0x11,0x11 }, + { 0x12,0x12,0x12,0x12 }, + { 0x13,0x13,0x13,0x13 }, + { 0x14,0x14,0x14,0x14 }, + { 0x1c,0x1c,0x1c,0x1c }, + { 0x1d,0x1d,0x1d,0x1d }, + { 0x1e,0x1e,0x1e,0x1e }, + { 0x1f,0x1f,0x1f,0x1f }, + { 0x01,0x01,0x01,0x01 }, + { 0x02,0x02,0x02,0x02 }, + { 0x03,0x03,0x03,0x03 }, + { 0x04,0x04,0x04,0x04 }, + { 0x05,0x05,0x05,0x05 }, + { 0x06,0x06,0x06,0x06 }, +}; + +WRITE_LINE_MEMBER(agat7_state::ay3600_data_ready_w) +{ + if (state == ASSERT_LINE) + { + int mod = 0; + m_lastchar = m_ay3600->b_r(); + + mod = (m_kbspecial->read() & 0x06) ? 0x01 : 0x00; + mod |= (m_kbspecial->read() & 0x08) ? 0x02 : 0x00; + + m_transchar = a2_key_remap[m_lastchar & 0x3f][mod]; + + if (m_transchar != 0) + { + m_strobe = 0x80; + } + } +} + +WRITE_LINE_MEMBER(agat7_state::ay3600_ako_w) +{ + m_anykeydown = (state == ASSERT_LINE) ? true : false; +} + +TIMER_DEVICE_CALLBACK_MEMBER(agat7_state::ay3600_repeat) +{ + // is the key still down? + if (m_anykeydown) + { + if (m_kbrepeat->read() & 1) + { + m_strobe = 0x80; + } + } +} + +TIMER_DEVICE_CALLBACK_MEMBER(agat7_state::agat_timer) +{ + if (m_agat7_interrupts) + { + m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); + } +} + +TIMER_DEVICE_CALLBACK_MEMBER(agat7_state::agat_vblank) +{ + if (m_agat7_interrupts) + { + m_maincpu->set_input_line(M6502_NMI_LINE, ASSERT_LINE); + } +} + +/*************************************************************************** + INPUT PORTS +***************************************************************************/ + +static INPUT_PORTS_START( agat7_joystick ) + PORT_START("joystick_1_x") /* Joystick 1 X Axis */ + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_NAME("P1 Joystick X") + PORT_SENSITIVITY(JOYSTICK_SENSITIVITY) + PORT_KEYDELTA(JOYSTICK_DELTA) + PORT_CENTERDELTA(JOYSTICK_AUTOCENTER) + PORT_MINMAX(0,0xff) PORT_PLAYER(1) + PORT_CODE_DEC(KEYCODE_4_PAD) PORT_CODE_INC(KEYCODE_6_PAD) + PORT_CODE_DEC(JOYCODE_X_LEFT_SWITCH) PORT_CODE_INC(JOYCODE_X_RIGHT_SWITCH) + + PORT_START("joystick_1_y") /* Joystick 1 Y Axis */ + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y) PORT_NAME("P1 Joystick Y") + PORT_SENSITIVITY(JOYSTICK_SENSITIVITY) + PORT_KEYDELTA(JOYSTICK_DELTA) + PORT_CENTERDELTA(JOYSTICK_AUTOCENTER) + PORT_MINMAX(0,0xff) PORT_PLAYER(1) + PORT_CODE_DEC(KEYCODE_8_PAD) PORT_CODE_INC(KEYCODE_2_PAD) + PORT_CODE_DEC(JOYCODE_Y_UP_SWITCH) PORT_CODE_INC(JOYCODE_Y_DOWN_SWITCH) + + PORT_START("joystick_2_x") /* Joystick 2 X Axis */ + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_NAME("P2 Joystick X") + PORT_SENSITIVITY(JOYSTICK_SENSITIVITY) + PORT_KEYDELTA(JOYSTICK_DELTA) + PORT_CENTERDELTA(JOYSTICK_AUTOCENTER) + PORT_MINMAX(0,0xff) PORT_PLAYER(2) + PORT_CODE_DEC(JOYCODE_X_LEFT_SWITCH) PORT_CODE_INC(JOYCODE_X_RIGHT_SWITCH) + + PORT_START("joystick_2_y") /* Joystick 2 Y Axis */ + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y) PORT_NAME("P2 Joystick Y") + PORT_SENSITIVITY(JOYSTICK_SENSITIVITY) + PORT_KEYDELTA(JOYSTICK_DELTA) + PORT_CENTERDELTA(JOYSTICK_AUTOCENTER) + PORT_MINMAX(0,0xff) PORT_PLAYER(2) + PORT_CODE_DEC(JOYCODE_Y_UP_SWITCH) PORT_CODE_INC(JOYCODE_Y_DOWN_SWITCH) + + PORT_START("joystick_buttons") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(1) PORT_CODE(KEYCODE_ENTER_PAD)PORT_CODE(JOYCODE_BUTTON2) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(2) PORT_CODE(JOYCODE_BUTTON1) +INPUT_PORTS_END + + /* + Apple II / II Plus key matrix (from "The Apple II Circuit Description") + + | Y0 | Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 | Y8 | Y9 | + | | | | | | | | | | | + ----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + X0 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | :* | - | + ----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + X1 | Q | W | E | R | T | Y | U | I | O | P | + ----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + X2 | D | F | G | H | J | K | L | ;+ |LEFT |RIGHT| + ----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + X3 | Z | X | C | V | B | N | M | ,< | .> | /? | + ----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + X4 | S | 2 | 1 | ESC | A |SPACE| | | |ENTER| + ----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| + */ + +static INPUT_PORTS_START( agat7_common ) + PORT_START("X0") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR(':') PORT_CHAR('*') + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('=') + + PORT_START("X1") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('q') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('w') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('e') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHAR('t') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('y') + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('u') + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('i') + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o') + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('@') + + PORT_START("X2") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('d') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('f') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('g') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('h') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('j') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('k') + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l') + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+') + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) + + PORT_START("X3") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('z') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('x') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('c') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('b') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n') + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('m') + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') + + PORT_START("X4") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('s') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('a') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 1") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) + + PORT_START("X5") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 2") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 3") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 4") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD)) + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 5") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 6") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 7") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 8") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 9") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 0") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num .") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) + + PORT_START("X6") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num =") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF1") PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF2") PORT_CODE(KEYCODE_ASTERISK) + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF3") PORT_CODE(KEYCODE_MINUS_PAD) + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START("X7") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START("X8") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START("keyb_special") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Control") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RESET") PORT_CODE(KEYCODE_F12) +INPUT_PORTS_END + +static INPUT_PORTS_START(agat7) + PORT_INCLUDE(agat7_common) + + PORT_START("keyb_repeat") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("REPT") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') + + /* other devices */ + PORT_INCLUDE(agat7_joystick) +INPUT_PORTS_END + +static SLOT_INTERFACE_START(agat7_cards) + // Standard cards + + SLOT_INTERFACE("a7lang", A2BUS_AGAT7LANGCARD) // Agat-7 RAM Language Card -- decimal 3.089.119 + SLOT_INTERFACE("a7ram", A2BUS_AGAT7RAM) // Agat-7 32K RAM Card -- decimal 3.089.119-01, KR565RU6D chips + SLOT_INTERFACE("a7fdc", A2BUS_AGAT7_FDC) // Disk II clone -- decimal 3.089.105 + // 840K floppy controller -- decimal 7.104.351 + // Serial-parallel card -- decimal 3.089.106 + // Printer card (agat9) -- decimal 3.089.174 + + // 3rd party cards + + // Programmable i/o (8035 + 8251 + 8253 + 8255) + // Card-93 floppy controller (KR1818VG93-based) + // Nippel ADC (digital oscilloscope) + // Nippel Clock (mc146818) + // Nippel Co-processor (R65C02 clone + dual-ported RAM) +SLOT_INTERFACE_END + +static MACHINE_CONFIG_START( agat7 ) + MCFG_CPU_ADD("maincpu", M6502, XTAL_14_3MHz / 14) + MCFG_CPU_PROGRAM_MAP(agat7_map) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("agat7irq", agat7_state, agat_timer, attotime::from_hz(500)) + + MCFG_DEVICE_ADD(A7_VIDEO_TAG, AGAT7VIDEO, 0) + + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("32K") +// MCFG_RAM_EXTRA_OPTIONS("64K,128K") + MCFG_RAM_DEFAULT_VALUE(0x00) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD(A7_SPEAKER_TAG, SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) + + /* /INH banking */ + MCFG_DEVICE_ADD(A7_UPPERBANK_TAG, ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(inhbank_map) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x3000) + + /* keyboard controller -- XXX must be replaced */ + MCFG_DEVICE_ADD(A7_KBDC_TAG, AY3600, 0) + MCFG_AY3600_MATRIX_X0(IOPORT("X0")) + MCFG_AY3600_MATRIX_X1(IOPORT("X1")) + MCFG_AY3600_MATRIX_X2(IOPORT("X2")) + MCFG_AY3600_MATRIX_X3(IOPORT("X3")) + MCFG_AY3600_MATRIX_X4(IOPORT("X4")) + MCFG_AY3600_MATRIX_X5(IOPORT("X5")) + MCFG_AY3600_MATRIX_X6(IOPORT("X6")) + MCFG_AY3600_MATRIX_X7(IOPORT("X7")) + MCFG_AY3600_MATRIX_X8(IOPORT("X8")) + MCFG_AY3600_SHIFT_CB(READLINE(agat7_state, ay3600_shift_r)) + MCFG_AY3600_CONTROL_CB(READLINE(agat7_state, ay3600_control_r)) + MCFG_AY3600_DATA_READY_CB(WRITELINE(agat7_state, ay3600_data_ready_w)) + MCFG_AY3600_AKO_CB(WRITELINE(agat7_state, ay3600_ako_w)) + + /* repeat timer. 10 Hz per Mymrin's book */ + MCFG_TIMER_DRIVER_ADD_PERIODIC("repttmr", agat7_state, ay3600_repeat, attotime::from_hz(10)) + + /* + * slot 0 is reserved for SECAM encoder or Apple II compat card. + * slot 1 always holds the CPU card. + */ + MCFG_DEVICE_ADD(A7_BUS_TAG, A2BUS, 0) + MCFG_A2BUS_CPU(A7_CPU_TAG) + MCFG_A2BUS_OUT_IRQ_CB(WRITELINE(agat7_state, a2bus_irq_w)) + MCFG_A2BUS_OUT_NMI_CB(WRITELINE(agat7_state, a2bus_nmi_w)) + MCFG_A2BUS_OUT_INH_CB(WRITELINE(agat7_state, a2bus_inh_w)) + MCFG_A2BUS_SLOT_ADD(A7_BUS_TAG, "sl2", agat7_cards, "a7lang") + MCFG_A2BUS_SLOT_ADD(A7_BUS_TAG, "sl3", agat7_cards, "a7fdc") + MCFG_A2BUS_SLOT_ADD(A7_BUS_TAG, "sl4", agat7_cards, nullptr) + MCFG_A2BUS_SLOT_ADD(A7_BUS_TAG, "sl5", agat7_cards, nullptr) + MCFG_A2BUS_SLOT_ADD(A7_BUS_TAG, "sl6", agat7_cards, "a7ram") + + MCFG_CASSETTE_ADD(A7_CASSETTE_TAG) + MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED) +MACHINE_CONFIG_END + + +/*************************************************************************** + + Game driver(s) + +***************************************************************************/ + +ROM_START( agat7 ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) + ROM_DEFAULT_BIOS("v1") + + ROM_SYSTEM_BIOS( 0, "v1", "Version 1" ) // original? + ROMX_LOAD( "monitor7.rom", 0x3800, 0x0800, CRC(071fda0b) SHA1(6089d46b7addc4e2ae096b2cf81124681bd2b27a), ROM_BIOS(1)) + ROM_SYSTEM_BIOS( 1, "v2", "Version 2" ) // modded by author of agatcomp.ru + ROMX_LOAD( "agat_pzu.bin", 0x3800, 0x0800, CRC(c605163d) SHA1(b30fd1b264a347a9de69bb9e3105483254994d06), ROM_BIOS(2)) + ROM_SYSTEM_BIOS( 2, "debug", "Debug" ) // written by author of agatcomp.ru + ROMX_LOAD( "debug-sysmon7.bin", 0x3800, 0x0800, CRC(d26f18a4) SHA1(2862c13a82e2f4dfc757aa2eeab11fe71c570c12), ROM_BIOS(3)) + + // 140KB floppy controller + ROM_LOAD( "shugart7.rom", 0x4500, 0x0100, CRC(c6e4850c) SHA1(71626d3d2d4bbeeac2b77585b45a5566d20b8d34)) + // 840KB floppy controller + ROM_LOAD( "teac.rom", 0x4500, 0x0100, CRC(94266928) SHA1(5d369bad6cdd6a70b0bb16480eba69640de87a2e)) + + ROM_REGION(0x0800,"gfx1",0) + ROM_LOAD( "agathe7.fnt", 0x0000, 0x0800, CRC(fcffb490) SHA1(0bda26ae7ad75f74da835c0cf6d9928f9508844c)) +ROM_END + +ROM_START( agat9 ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) + ROM_SYSTEM_BIOS( 0, "v1", "Version 1" ) + ROMX_LOAD( "monitor9.rom", 0x3800, 0x0800, CRC(b90bb66a) SHA1(02217f0785913b41fc25eabcff70fa814799c69a), ROM_BIOS(1)) + ROM_SYSTEM_BIOS( 1, "v2", "Version 2" ) + ROMX_LOAD( "monitor91.rom", 0x3800, 0x0800, CRC(89b10fc1) SHA1(7fe1ede32b5525255f82597ca9c3c2034c5996fa), ROM_BIOS(2)) + // Floppy controllers + ROM_LOAD( "shugart9.rom", 0x4500, 0x0100, CRC(964a0ce2) SHA1(bf955189ebffe874c20ef649a3db8177dc16af61)) + ROM_LOAD( "teac.rom", 0x4500, 0x0100, CRC(94266928) SHA1(5d369bad6cdd6a70b0bb16480eba69640de87a2e)) + // Printer card + ROM_LOAD( "cm6337.rom", 0x8000, 0x0100, CRC(73be16ec) SHA1(ead1abbef5b86f1def0b956147d5b267f0d544b5)) + ROM_LOAD( "cm6337p.rom", 0x8100, 0x0800, CRC(9120f11f) SHA1(78107653491e88d5ea12e07367c4c028771a4aca)) + ROM_REGION(0x0800,"gfx1",0) + ROM_LOAD( "agathe9.fnt", 0x0000, 0x0800, CRC(8c55c984) SHA1(5a5a202000576b88b4ae2e180dd2d1b9b337b594)) +ROM_END + +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, agat7, apple2, 0, agat7, agat7, agat7_state, 0, "Agat", "Agat-7", MACHINE_NOT_WORKING) +COMP( 1984, agat9, apple2, 0, agat7, agat7, agat7_state, 0, "Agat", "Agat-9", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/age_candy.cpp b/src/mame/drivers/age_candy.cpp index 42ac7a8e293..3c7a4a2df8d 100644 --- a/src/mame/drivers/age_candy.cpp +++ b/src/mame/drivers/age_candy.cpp @@ -44,7 +44,7 @@ void age_candy_state::machine_reset() } -static MACHINE_CONFIG_START( age_candy, age_candy_state ) +static MACHINE_CONFIG_START( age_candy ) /* basic machine hardware */ // MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown (vectors at end? 6xxx ?) @@ -62,4 +62,4 @@ ROM_START( age_cand ) ROM_LOAD( "AGEcandy.u3", 0x0000, 0x8000, CRC(c8cfc666) SHA1(a1c475ae105746e984741af0723a712f09d7b847) ) ROM_END -GAME( 19??, age_cand, 0, age_candy, age_candy, driver_device, 0, ROT0, "Advanced Game Engineering", "Candy Crane (AGE)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 19??, age_cand, 0, age_candy, age_candy, age_candy_state, 0, ROT0, "Advanced Game Engineering", "Candy Crane (AGE)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp index 24345c59557..17f9b005ddb 100644 --- a/src/mame/drivers/aim65.cpp +++ b/src/mame/drivers/aim65.cpp @@ -43,8 +43,8 @@ static ADDRESS_MAP_START( aim65_mem, AS_PROGRAM, 8, aim65_state ) AM_RANGE( 0x4000, 0x7fff ) AM_ROM /* 4 ROM sockets in 16K PROM/ROM module */ AM_RANGE( 0x8000, 0x9fff ) AM_NOP /* User available expansions */ AM_RANGE( 0xa000, 0xa00f ) AM_MIRROR(0x3f0) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) // user via - AM_RANGE( 0xa400, 0xa47f ) AM_DEVICE("riot", mos6532_t, ram_map) - AM_RANGE( 0xa480, 0xa497 ) AM_DEVICE("riot", mos6532_t, io_map) + AM_RANGE( 0xa400, 0xa47f ) AM_DEVICE("riot", mos6532_new_device, ram_map) + AM_RANGE( 0xa480, 0xa497 ) AM_DEVICE("riot", mos6532_new_device, io_map) AM_RANGE( 0xa498, 0xa7ff ) AM_NOP /* Not available */ AM_RANGE( 0xa800, 0xa80f ) AM_MIRROR(0x3f0) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) // system via AM_RANGE( 0xac00, 0xac03 ) AM_DEVREADWRITE("pia6821", pia6821_device, read, write) @@ -176,7 +176,7 @@ image_init_result aim65_state::load_cart(device_image_interface &image, generic_ } -static MACHINE_CONFIG_START( aim65, aim65_state ) +static MACHINE_CONFIG_START( aim65 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, AIM65_CLOCK) /* 1 MHz */ MCFG_CPU_PROGRAM_MAP(aim65_mem) @@ -201,7 +201,7 @@ static MACHINE_CONFIG_START( aim65, aim65_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* other devices */ - MCFG_DEVICE_ADD("riot", MOS6532n, AIM65_CLOCK) + MCFG_DEVICE_ADD("riot", MOS6532_NEW, AIM65_CLOCK) MCFG_MOS6530n_OUT_PA_CB(WRITE8(aim65_state, aim65_riot_a_w)) MCFG_MOS6530n_IN_PB_CB(READ8(aim65_state, aim65_riot_b_r)) MCFG_MOS6530n_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE)) @@ -306,5 +306,5 @@ ROM_END GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP(1977, aim65, 0, 0, aim65, aim65, driver_device, 0, "Rockwell", "AIM 65", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP(1977, aim65, 0, 0, aim65, aim65, aim65_state, 0, "Rockwell", "AIM 65", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/aim65_40.cpp b/src/mame/drivers/aim65_40.cpp index df749db8493..62e19748afd 100644 --- a/src/mame/drivers/aim65_40.cpp +++ b/src/mame/drivers/aim65_40.cpp @@ -107,7 +107,7 @@ INPUT_PORTS_END MACHINE DRIVERS ***************************************************************************/ -static MACHINE_CONFIG_START( aim65_40, aim65_40_state ) +static MACHINE_CONFIG_START( aim65_40 ) /* basic machine hardware */ MCFG_CPU_ADD(M6502_TAG, M6502, 1000000) MCFG_CPU_PROGRAM_MAP(aim65_40_mem) @@ -141,5 +141,5 @@ ROM_END GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, aim65_40, 0, 0, aim65_40, aim65_40, driver_device, 0, "Rockwell", "AIM-65/40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, aim65_40, 0, 0, aim65_40, aim65_40, aim65_40_state, 0, "Rockwell", "AIM-65/40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/airbustr.cpp b/src/mame/drivers/airbustr.cpp index 847e509686d..7f7f2043719 100644 --- a/src/mame/drivers/airbustr.cpp +++ b/src/mame/drivers/airbustr.cpp @@ -569,7 +569,7 @@ void airbustr_state::machine_reset() /* Machine Driver */ -static MACHINE_CONFIG_START( airbustr, airbustr_state ) +static MACHINE_CONFIG_START( airbustr ) /* basic machine hardware */ MCFG_CPU_ADD("master", Z80, XTAL_12MHz/2) /* verified on pcb */ @@ -600,7 +600,7 @@ static MACHINE_CONFIG_START( airbustr, airbustr_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(airbustr_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(airbustr_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(airbustr_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", airbustr) @@ -625,7 +625,7 @@ static MACHINE_CONFIG_START( airbustr, airbustr_state ) MCFG_SOUND_ROUTE(2, "mono", 0.25) MCFG_SOUND_ROUTE(3, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/4, PIN7_LOW) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -740,6 +740,6 @@ DRIVER_INIT_MEMBER(airbustr_state,airbustr) /* Game Drivers */ -GAME( 1990, airbustr, 0, airbustr, airbustr, airbustr_state, airbustr, ROT0, "Kaneko (Namco license)", "Air Buster: Trouble Specialty Raid Unit (World)", MACHINE_SUPPORTS_SAVE ) // 891220 -GAME( 1990, airbustrj, airbustr, airbustr, airbustrj, airbustr_state,airbustr, ROT0, "Kaneko (Namco license)", "Air Buster: Trouble Specialty Raid Unit (Japan)", MACHINE_SUPPORTS_SAVE) // 891229 -GAME( 1990, airbustrb, airbustr, airbustrb,airbustrj, driver_device,0, ROT0, "bootleg", "Air Buster: Trouble Specialty Raid Unit (bootleg)", MACHINE_SUPPORTS_SAVE) // based on Japan set (891229) +GAME( 1990, airbustr, 0, airbustr, airbustr, airbustr_state, airbustr, ROT0, "Kaneko (Namco license)", "Air Buster: Trouble Specialty Raid Unit (World)", MACHINE_SUPPORTS_SAVE ) // 891220 +GAME( 1990, airbustrj, airbustr, airbustr, airbustrj, airbustr_state, airbustr, ROT0, "Kaneko (Namco license)", "Air Buster: Trouble Specialty Raid Unit (Japan)", MACHINE_SUPPORTS_SAVE ) // 891229 +GAME( 1990, airbustrb, airbustr, airbustrb,airbustrj, airbustr_state, 0, ROT0, "bootleg", "Air Buster: Trouble Specialty Raid Unit (bootleg)", MACHINE_SUPPORTS_SAVE ) // based on Japan set (891229) diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp index 483e0215932..12b53b1a789 100644 --- a/src/mame/drivers/airraid.cpp +++ b/src/mame/drivers/airraid.cpp @@ -387,7 +387,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( airraid, airraid_state ) +static MACHINE_CONFIG_START( airraid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL_12MHz/2) /* verified on pcb */ @@ -628,6 +628,6 @@ DRIVER_INIT_MEMBER(airraid_state,cshootere) } // There's also an undumped International Games version -GAME( 1987, cshooter, airraid, airraid_crypt, airraid, airraid_state, cshootere, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (Single PCB)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, airraid, 0, airraid_crypt, airraid, airraid_state, cshootere, ROT270, "Seibu Kaihatsu", "Air Raid (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1987, cshooter, airraid, airraid_crypt, airraid, airraid_state, cshootere, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (Single PCB)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, airraid, 0, airraid_crypt, airraid, airraid_state, cshootere, ROT270, "Seibu Kaihatsu", "Air Raid (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ajax.cpp b/src/mame/drivers/ajax.cpp index 71e22cdc537..bd4db94f2be 100644 --- a/src/mame/drivers/ajax.cpp +++ b/src/mame/drivers/ajax.cpp @@ -167,7 +167,7 @@ WRITE8_MEMBER(ajax_state::volume_callback1) } -static MACHINE_CONFIG_START( ajax, ajax_state ) +static MACHINE_CONFIG_START( ajax ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 052001 12/4 MHz*/ @@ -377,6 +377,6 @@ ROM_START( ajaxj ) ROM_END -GAME( 1987, ajax, 0, ajax, ajax, driver_device, 0, ROT90, "Konami", "Ajax", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, typhoon, ajax, ajax, ajax, driver_device, 0, ROT90, "Konami", "Typhoon", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ajaxj, ajax, ajax, ajax, driver_device, 0, ROT90, "Konami", "Ajax (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ajax, 0, ajax, ajax, ajax_state, 0, ROT90, "Konami", "Ajax", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, typhoon, ajax, ajax, ajax, ajax_state, 0, ROT90, "Konami", "Typhoon", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ajaxj, ajax, ajax, ajax, ajax_state, 0, ROT90, "Konami", "Ajax (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/akaiax80.cpp b/src/mame/drivers/akaiax80.cpp index 6d04b1b0dca..0cb00e9148d 100644 --- a/src/mame/drivers/akaiax80.cpp +++ b/src/mame/drivers/akaiax80.cpp @@ -71,7 +71,7 @@ static ADDRESS_MAP_START( ax80_map, AS_PROGRAM, 8, ax80_state ) AM_RANGE(0xff00, 0xffff) AM_RAM ADDRESS_MAP_END -static MACHINE_CONFIG_START( ax80, ax80_state ) +static MACHINE_CONFIG_START( ax80 ) MCFG_CPU_ADD("maincpu", UPD7810, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(ax80_map) //MCFG_CPU_IO_MAP(ax80_io) @@ -98,4 +98,4 @@ ROM_START( ax80 ) ROM_LOAD( "akai ax80 (rev k) rom.bin", 0x001000, 0x002000, CRC(a2f95ccf) SHA1(4e5f2c4c9a08ec1d38146cae786b400261a3dbb7) ) ROM_END -CONS( 1984, ax80, 0, 0, ax80, ax80, driver_device, 0, "Akai", "AX80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 1984, ax80, 0, 0, ax80, ax80, ax80_state, 0, "Akai", "AX80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/albazc.cpp b/src/mame/drivers/albazc.cpp index 5c3d654c9c4..bf10836f198 100644 --- a/src/mame/drivers/albazc.cpp +++ b/src/mame/drivers/albazc.cpp @@ -197,10 +197,10 @@ static INPUT_PORTS_START( hanaroku ) PORT_START("IN0") /* 0xe000 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // adds n credits depending on "Coinage" Dip Switch PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) // adds 5 credits - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1/2 D-Up") PORT_CODE(KEYCODE_H) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Reset") PORT_CODE(KEYCODE_R) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Meter") PORT_CODE(KEYCODE_M) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Key") PORT_CODE(KEYCODE_K) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_NAME("1/2 D-Up") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Reset") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Meter") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Key") PORT_TOGGLE PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Play") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start") @@ -219,8 +219,8 @@ static INPUT_PORTS_START( hanaroku ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // "Medal In" PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Ext In 1") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Ext In 2") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Ext In 1") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Ext In 2") PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("DSW1") /* 0xd000 - Port A */ @@ -271,7 +271,7 @@ static GFXDECODE_START( hanaroku ) GFXDECODE_END -static MACHINE_CONFIG_START( hanaroku, albazc_state ) +static MACHINE_CONFIG_START( hanaroku ) MCFG_CPU_ADD("maincpu", Z80,6000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(hanaroku_map) @@ -321,4 +321,4 @@ ROM_START( hanaroku ) ROM_END -GAME( 1988, hanaroku, 0, hanaroku, hanaroku, driver_device, 0, ROT0, "Alba", "Hanaroku", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hanaroku, 0, hanaroku, hanaroku, albazc_state, 0, ROT0, "Alba", "Hanaroku", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/albazg.cpp b/src/mame/drivers/albazg.cpp index 87631b6fc1a..146e22876c4 100644 --- a/src/mame/drivers/albazg.cpp +++ b/src/mame/drivers/albazg.cpp @@ -346,7 +346,7 @@ void albazg_state::machine_reset() m_prot_lock = 0; } -static MACHINE_CONFIG_START( yumefuda, albazg_state ) +static MACHINE_CONFIG_START( yumefuda ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80 , MASTER_CLOCK/2) /* xtal is 12 Mhz, unknown divider*/ @@ -410,4 +410,4 @@ ROM_START( yumefuda ) ROM_LOAD("zg1-007.u13", 0x000, 0x100, NO_DUMP ) //could be either PROM or PAL ROM_END -GAME( 1991, yumefuda, 0, yumefuda, yumefuda, driver_device, 0, ROT0, "Alba", "Yumefuda [BET]", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, yumefuda, 0, yumefuda, yumefuda, albazg_state, 0, ROT0, "Alba", "Yumefuda [BET]", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/aleck64.cpp b/src/mame/drivers/aleck64.cpp index 6f6893ec760..db82130e0f6 100644 --- a/src/mame/drivers/aleck64.cpp +++ b/src/mame/drivers/aleck64.cpp @@ -482,7 +482,7 @@ static INPUT_PORTS_START( aleck64 ) PORT_START("IN1") PORT_BIT( 0xff00ffff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_SERVICE_NO_TOGGLE( 0x00200000, IP_ACTIVE_LOW ) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 ) INPUT_PORTS_END @@ -594,7 +594,7 @@ static INPUT_PORTS_START( mtetrisc ) PORT_START("IN1") PORT_BIT( 0xffcc, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_SERVICE_NO_TOGGLE( 0x0020, IP_ACTIVE_LOW ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) INPUT_PORTS_END @@ -700,7 +700,7 @@ static INPUT_PORTS_START( starsldr ) PORT_START("IN1") PORT_BIT( 0xff00ffff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_SERVICE_NO_TOGGLE( 0x00200000, IP_ACTIVE_LOW ) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 ) INPUT_PORTS_END @@ -734,8 +734,8 @@ static INPUT_PORTS_START( doncdoon ) PORT_START("IN1") PORT_BIT(0xffc0ffff, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button") - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Test Button") + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_START2 ) @@ -767,8 +767,8 @@ static INPUT_PORTS_START( twrshaft ) PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) PORT_START("IN1") - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button") - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Test Button") + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_START1 ) @@ -854,7 +854,7 @@ static INPUT_PORTS_START( hipai ) PORT_START("IN1") PORT_BIT( 0xffebffff, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 ) INPUT_PORTS_END @@ -898,7 +898,7 @@ static INPUT_PORTS_START( srmvs ) INPUT_PORTS_END -static MACHINE_CONFIG_START( aleck64, aleck64_state ) +static MACHINE_CONFIG_START( aleck64 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", VR4300BE, 93750000) @@ -923,7 +923,7 @@ static MACHINE_CONFIG_START( aleck64, aleck64_state ) MCFG_SCREEN_SIZE(640, 525) MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(aleck64_state, screen_update_n64) - MCFG_SCREEN_VBLANK_DRIVER(aleck64_state, screen_eof_n64) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(aleck64_state, screen_vblank_n64)) MCFG_PALETTE_ADD("palette", 0x1000) @@ -1227,13 +1227,13 @@ ROM_END GAME( 1998, aleck64, 0, aleck64, aleck64, aleck64_state, aleck64, ROT0, "Nintendo / Seta", "Aleck64 PIF BIOS", MACHINE_IS_BIOS_ROOT) // games -GAME( 1998, 11beat, aleck64, aleck64, 11beat, aleck64_state, aleck64, ROT0, "Hudson", "Eleven Beat", MACHINE_IMPERFECT_GRAPHICS ) // crashes at kick off / during attract with DRC -GAME( 1998, mtetrisc, aleck64, a64_e90, mtetrisc, aleck64_state, aleck64, ROT0, "Capcom", "Magical Tetris Challenge (981009 Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) // missing E90 gfxs (playfield) -GAME( 1998, starsldr, aleck64, aleck64, starsldr, aleck64_state, aleck64, ROT0, "Hudson / Seta", "Star Soldier: Vanishing Earth", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, vivdolls, aleck64, aleck64, vivdolls, aleck64_state, aleck64, ROT0, "Visco", "Vivid Dolls", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, srmvs, aleck64, aleck64, srmvs, aleck64_state, aleck64, ROT0, "Seta", "Super Real Mahjong VS", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, mayjin3, aleck64, aleck64, aleck64, aleck64_state, aleck64, ROT0, "Seta / Able Corporation", "Mayjinsen 3", MACHINE_IMPERFECT_SOUND|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2003, twrshaft, aleck64, aleck64, twrshaft, aleck64_state, aleck64, ROT0, "Aruze", "Tower & Shaft", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2003, hipai, aleck64, aleck64, hipai, aleck64_state, aleck64, ROT0, "Aruze / Seta", "Hi Pai Paradise", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2003, doncdoon, aleck64, aleck64, doncdoon, aleck64_state, aleck64, ROT0, "Aruze", "Hanabi de Doon! - Don-chan Puzzle", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2003, kurufev, aleck64, aleck64, kurufev, aleck64_state, aleck64, ROT0, "Aruze / Takumi", "Kurukuru Fever", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, 11beat, aleck64, aleck64, 11beat, aleck64_state, aleck64, ROT0, "Hudson", "Eleven Beat", MACHINE_IMPERFECT_GRAPHICS ) // crashes at kick off / during attract with DRC +GAME( 1998, mtetrisc, aleck64, a64_e90, mtetrisc, aleck64_state, aleck64, ROT0, "Capcom", "Magical Tetris Challenge (981009 Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) // missing E90 gfxs (playfield) +GAME( 1998, starsldr, aleck64, aleck64, starsldr, aleck64_state, aleck64, ROT0, "Hudson / Seta", "Star Soldier: Vanishing Earth", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, vivdolls, aleck64, aleck64, vivdolls, aleck64_state, aleck64, ROT0, "Visco", "Vivid Dolls", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, srmvs, aleck64, aleck64, srmvs, aleck64_state, aleck64, ROT0, "Seta", "Super Real Mahjong VS", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, mayjin3, aleck64, aleck64, aleck64, aleck64_state, aleck64, ROT0, "Seta / Able Corporation", "Mayjinsen 3", MACHINE_IMPERFECT_SOUND|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2003, twrshaft, aleck64, aleck64, twrshaft, aleck64_state, aleck64, ROT0, "Aruze", "Tower & Shaft", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2003, hipai, aleck64, aleck64, hipai, aleck64_state, aleck64, ROT0, "Aruze / Seta", "Hi Pai Paradise", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2003, doncdoon, aleck64, aleck64, doncdoon, aleck64_state, aleck64, ROT0, "Aruze", "Hanabi de Doon! - Don-chan Puzzle", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2003, kurufev, aleck64, aleck64, kurufev, aleck64_state, aleck64, ROT0, "Aruze / Takumi", "Kurukuru Fever", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/aleisttl.cpp b/src/mame/drivers/aleisttl.cpp index dce966f2c5e..a6b1ac5bfa2 100644 --- a/src/mame/drivers/aleisttl.cpp +++ b/src/mame/drivers/aleisttl.cpp @@ -58,7 +58,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -101,7 +101,7 @@ void sburners_state::video_start() { } -static MACHINE_CONFIG_START( sburners, sburners_state ) +static MACHINE_CONFIG_START( sburners ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -132,4 +132,4 @@ ROM_START( sburners ) ROM_END -GAME( 1975, sburners, 0, sburners, 0, driver_device, 0, ROT0, "Allied Leisure", "Street Burners [TTL]", MACHINE_IS_SKELETON ) +GAME( 1975, sburners, 0, sburners, 0, sburners_state, 0, ROT0, "Allied Leisure", "Street Burners [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/alesis.cpp b/src/mame/drivers/alesis.cpp index 5c6710d4630..4a18d1fd05e 100644 --- a/src/mame/drivers/alesis.cpp +++ b/src/mame/drivers/alesis.cpp @@ -355,7 +355,7 @@ HD44780_PIXEL_UPDATE(alesis_state::sr16_pixel_update) bitmap.pix16(line*9 + y, pos*6 + x) = state; } -static MACHINE_CONFIG_START( hr16, alesis_state ) +static MACHINE_CONFIG_START( hr16 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8031, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(hr16_mem) @@ -477,8 +477,8 @@ DRIVER_INIT_MEMBER(alesis_state,hr16) } /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -SYST( 1987, hr16, 0, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -SYST( 1987, mmt8, 0, 0, mmt8, mmt8, driver_device, 0, "Alesis", "MMT-8", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -SYST( 1989, hr16b, hr16, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -SYST( 1990, sr16, 0, 0, sr16, sr16, driver_device, 0, "Alesis", "SR-16 (Alesis)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +SYST( 1987, hr16, 0, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +SYST( 1987, mmt8, 0, 0, mmt8, mmt8, alesis_state, 0, "Alesis", "MMT-8", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +SYST( 1989, hr16b, hr16, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +SYST( 1990, sr16, 0, 0, sr16, sr16, alesis_state, 0, "Alesis", "SR-16 (Alesis)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/alesis_qs.cpp b/src/mame/drivers/alesis_qs.cpp index 019f9cfc585..b41bcfea26c 100644 --- a/src/mame/drivers/alesis_qs.cpp +++ b/src/mame/drivers/alesis_qs.cpp @@ -46,7 +46,7 @@ static ADDRESS_MAP_START( qs7_prog_map, AS_PROGRAM, 16, qs_state ) AM_RANGE(0x00000, 0x3ffff) AM_ROM ADDRESS_MAP_END -static MACHINE_CONFIG_START( qs7, qs_state ) +static MACHINE_CONFIG_START( qs7 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83048, XTAL_10MHz) /* FIX-ME! Actual CPU is H8/510 and XTAL value is a guess */ MCFG_CPU_PROGRAM_MAP(qs7_prog_map) @@ -88,5 +88,5 @@ ROM_START( alesqs7 ) // ROM_LOAD( "?.u?", 0x00000, 0x200000, NO_DUMP ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1996, alesqs7, 0, 0, qs7, qs7, driver_device, 0, "Alesis", "Alesis QS7 musical keyboard", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS +COMP( 1996, alesqs7, 0, 0, qs7, qs7, qs_state, 0, "Alesis", "Alesis QS7 musical keyboard", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp index 4a41651b219..38ce8fedeb1 100644 --- a/src/mame/drivers/alg.cpp +++ b/src/mame/drivers/alg.cpp @@ -289,7 +289,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( alg_r1, alg_state ) +static MACHINE_CONFIG_START( alg_r1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_NTSC) @@ -783,25 +783,25 @@ DRIVER_INIT_MEMBER(alg_state,aplatoon) *************************************/ /* BIOS */ -GAME( 199?, alg_bios, 0, alg_r1, alg, alg_state, ntsc, ROT0, "American Laser Games", "American Laser Games BIOS", MACHINE_IS_BIOS_ROOT ) +GAME( 199?, alg_bios, 0, alg_r1, alg, alg_state, ntsc, ROT0, "American Laser Games", "American Laser Games BIOS", MACHINE_IS_BIOS_ROOT ) /* Rev. A board */ /* PAL R1 */ -GAME( 1990, maddoga, maddog, alg_r1, alg, alg_state, palr1, ROT0, "American Laser Games", "Mad Dog McCree v1C board rev.A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1990, maddoga, maddog, alg_r1, alg, alg_state, palr1, ROT0, "American Laser Games", "Mad Dog McCree v1C board rev.A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* PAL R3 */ -GAME( 1991, wsjr, alg_bios, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.6", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1991, wsjr_15, wsjr, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.5", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1991, wsjr, alg_bios, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.6", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1991, wsjr_15, wsjr, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.5", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* Rev. B board */ /* PAL R6 */ GAME( 1990, maddog, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.03 board rev.B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1990, maddog_202, maddog, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.02 board rev.B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1990, maddog_202, maddog, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.02 board rev.B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* works ok but uses right player (2) controls only for trigger and holster */ GAME( 1992, maddog2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.04", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, maddog2_202, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.02", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, maddog2_202, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.02", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1992, maddog2_110, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1992, maddog2_100, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* works ok but uses right player (2) controls only for trigger and holster */ @@ -818,13 +818,13 @@ GAME( 1993, crimepat_12, crimepat, alg_r2, alg_2p, alg_state, palr6, ROT0, GAME( 1993, crimep2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1993, crimep2_11, crimep2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, lastbh, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v1.01", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, lastbh_006, lastbh, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v0.06", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, lastbh_006, lastbh, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v0.06", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, fastdraw, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.31", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, fastdraw_130,fastdraw, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* works ok but uses right player (2) controls only for trigger and holster */ /* NOVA games on ALG hardware with own address scramble */ -GAME( 199?, aplatoon, alg_bios, alg_r2, alg, alg_state, aplatoon, ROT0, "Nova?", "Platoon V.3.1 US", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 199?, aplatoon, alg_bios, alg_r2, alg, alg_state, aplatoon, ROT0, "Nova?", "Platoon V.3.1 US", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* Web Picmatic games PAL tv standard, own rom board */ -GAME( 1993, zortonbr, alg_bios, picmatic, alg, alg_state, pal, ROT0, "Web Picmatic", "Zorton Brothers (Los Justicieros)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, zortonbr, alg_bios, picmatic, alg, alg_state, pal, ROT0, "Web Picmatic", "Zorton Brothers (Los Justicieros)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/alien.cpp b/src/mame/drivers/alien.cpp index 4b18f13034e..62ca9b7427e 100644 --- a/src/mame/drivers/alien.cpp +++ b/src/mame/drivers/alien.cpp @@ -80,7 +80,7 @@ void alien_state::machine_reset() //m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); } -static MACHINE_CONFIG_START( alien, alien_state ) +static MACHINE_CONFIG_START( alien ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH4LE, MASTER_CLOCK) /* 200MHz */ MCFG_CPU_PROGRAM_MAP(alien_map) @@ -122,4 +122,4 @@ ROM_START( alien ) ROM_END -GAME( 2005, alien, 0, alien, alien, driver_device, 0, ROT0, "Capcom", "Alien: The Arcade Medal Edition", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 2005, alien, 0, alien, alien, alien_state, 0, ROT0, "Capcom", "Alien: The Arcade Medal Edition", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/aliens.cpp b/src/mame/drivers/aliens.cpp index 4809e3846e6..692eb06e770 100644 --- a/src/mame/drivers/aliens.cpp +++ b/src/mame/drivers/aliens.cpp @@ -191,7 +191,7 @@ WRITE8_MEMBER( aliens_state::banking_callback ) m_rombank->set_entry(data & 0x1f); } -static MACHINE_CONFIG_START( aliens, aliens_state ) +static MACHINE_CONFIG_START( aliens ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 052001 (verified on pcb) */ @@ -479,10 +479,10 @@ ROM_END ***************************************************************************/ -GAME( 1990, aliens, 0, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (World set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, aliens2, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (World set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, aliens3, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (World set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, aliensu, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, aliensj, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (Japan set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, aliensj2, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (Japan set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, aliensa, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (Asia)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aliens, 0, aliens, aliens, aliens_state, 0, ROT0, "Konami", "Aliens (World set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aliens2, aliens, aliens, aliens, aliens_state, 0, ROT0, "Konami", "Aliens (World set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aliens3, aliens, aliens, aliens, aliens_state, 0, ROT0, "Konami", "Aliens (World set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aliensu, aliens, aliens, aliens, aliens_state, 0, ROT0, "Konami", "Aliens (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aliensj, aliens, aliens, aliens, aliens_state, 0, ROT0, "Konami", "Aliens (Japan set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aliensj2, aliens, aliens, aliens, aliens_state, 0, ROT0, "Konami", "Aliens (Japan set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aliensa, aliens, aliens, aliens, aliens_state, 0, ROT0, "Konami", "Aliens (Asia)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/alinvade.cpp b/src/mame/drivers/alinvade.cpp index f7d83ccc975..f6fa6c073f1 100644 --- a/src/mame/drivers/alinvade.cpp +++ b/src/mame/drivers/alinvade.cpp @@ -202,7 +202,7 @@ INTERRUPT_GEN_MEMBER(alinvade_state::vblank_irq) m_maincpu->set_input_line(0,HOLD_LINE); } -static MACHINE_CONFIG_START( alinvade, alinvade_state ) +static MACHINE_CONFIG_START( alinvade ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,2000000) /* ? MHz */ @@ -241,4 +241,4 @@ ROM_START( alinvade ) ROM_END -GAMEL( 198?, alinvade, 0, alinvade, alinvade, driver_device, 0, ROT90, "Forbes?", "Alien Invaders", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_alinvade ) +GAMEL( 198?, alinvade, 0, alinvade, alinvade, alinvade_state, 0, ROT90, "Forbes?", "Alien Invaders", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_alinvade ) diff --git a/src/mame/drivers/allied.cpp b/src/mame/drivers/allied.cpp index a268442da83..d076bd08ef9 100644 --- a/src/mame/drivers/allied.cpp +++ b/src/mame/drivers/allied.cpp @@ -608,7 +608,7 @@ void allied_state::machine_reset() output().set_value("led0", 1); //1=off } -static MACHINE_CONFIG_START( allied, allied_state ) +static MACHINE_CONFIG_START( allied ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6504, 3572549/4) MCFG_CPU_PROGRAM_MAP(allied_map) @@ -709,15 +709,15 @@ ROM_END #define rom_starshot rom_allied -GAME(1977, allied, 0, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Allied System", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING ) -GAME(1977, suprpick, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Super Picker", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1977, royclark, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Roy Clark - The Entertainer", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1977, thndbolt, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Thunderbolt", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, hoedown, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hoe Down", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, takefive, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Take Five", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, heartspd, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hearts & Spades", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, foathens, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Flame of Athens", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1979, disco79, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Disco '79", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1979, erosone, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Eros One", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1979, circa33, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Circa 1933", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1979, starshot, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Star Shooter", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1977, allied, 0, allied, allied, allied_state, 0, ROT0, "Allied Leisure", "Allied System", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING ) +GAME(1977, suprpick, allied, allied, allied, allied_state, 0, ROT0, "Allied Leisure", "Super Picker", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1977, royclark, allied, allied, allied, allied_state, 0, ROT0, "Fascination Int.", "Roy Clark - The Entertainer", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1977, thndbolt, allied, allied, allied, allied_state, 0, ROT0, "Allied Leisure", "Thunderbolt", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, hoedown, allied, allied, allied, allied_state, 0, ROT0, "Allied Leisure", "Hoe Down", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, takefive, allied, allied, allied, allied_state, 0, ROT0, "Allied Leisure", "Take Five", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, heartspd, allied, allied, allied, allied_state, 0, ROT0, "Allied Leisure", "Hearts & Spades", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, foathens, allied, allied, allied, allied_state, 0, ROT0, "Allied Leisure", "Flame of Athens", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1979, disco79, allied, allied, allied, allied_state, 0, ROT0, "Allied Leisure", "Disco '79", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1979, erosone, allied, allied, allied, allied_state, 0, ROT0, "Fascination Int.", "Eros One", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1979, circa33, allied, allied, allied, allied_state, 0, ROT0, "Fascination Int.", "Circa 1933", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1979, starshot, allied, allied, allied, allied_state, 0, ROT0, "Allied Leisure", "Star Shooter", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/alpha68k.cpp b/src/mame/drivers/alpha68k.cpp index 43f9acf7a42..3b08c13d933 100644 --- a/src/mame/drivers/alpha68k.cpp +++ b/src/mame/drivers/alpha68k.cpp @@ -87,14 +87,14 @@ Stephh's additional notes (based on the games M68000 code and some tests) : - The "Unused" Dip Switch is sort of "Debug Mode" Dip Switch and has an effect ONLY if 0x008fff.b is writable (as Bryan mentioned it). - Its role seems only to be limited to display some coordonates. + Its role seems only to be limited to display some coordinates. 5) 'skysoldr' - As in "Time Soldiers / Battle Field" there is a something that is sort of "Debug Mode" Dip Switch : this is the "Manufacturer" Dip Switch when it is set to "Romstar". Again, it has an effect only if 0x000074.w is - writable and its role seems only to be limited to display some coordonates. + writable and its role seems only to be limited to display some coordinates. 7) 'skyadvnt', 'skyadvntu' and 'skyadvntj' @@ -103,7 +103,7 @@ Stephh's additional notes (based on the games M68000 code and some tests) : * bit 4 (when "Unused" Dip Switch is set to "On") determines invulnerability * bit 6 (when "Difficulty" Dip Switch is set to DEF_STR( Hard ) or DEF_STR( Hardest )) - determines if some coordonates are displayed. + determines if some coordinates are displayed. 8) 'gangwars' @@ -124,7 +124,7 @@ Stephh's log (2002.06.19) : - Add READ16_HANDLER( *_cycle_r ) for the following games : * timesold1 (based on the one from 'timesold') * btlfield (based on the one from 'timesold') - * gangwars (I splitted the one from 'gangwarsu') + * gangwars (I split the one from 'gangwarsu') * skyadvnt, skyadvntu and skyadvntj - Change manufacturer for the following games : * timesold @@ -1861,6 +1861,8 @@ MACHINE_START_MEMBER(alpha68k_state,alpha68k_V) save_item(NAME(m_bank_base)); save_item(NAME(m_last_bank)); + save_item(NAME(m_sound_nmi_mask)); + save_item(NAME(m_sound_pa_latch)); } MACHINE_RESET_MEMBER(alpha68k_state,alpha68k_V) @@ -1895,18 +1897,11 @@ MACHINE_START_MEMBER(alpha68k_state,alpha68k_II) save_item(NAME(m_buffer_28)); save_item(NAME(m_buffer_60)); save_item(NAME(m_buffer_68)); - + save_item(NAME(m_sound_nmi_mask)); + save_item(NAME(m_sound_pa_latch)); } -static ADDRESS_MAP_START( i8748_portmap, AS_IO, 8, alpha68k_state ) -// AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(saiyugoub1_mcu_command_r) -// AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_DEVWRITE_LEGACY("adpcm", saiyugoub1_m5205_clk_w) /* Drives the clock on the m5205 at 1/8 of this frequency */ -// AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(saiyugoub1_m5205_irq_r) -// AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(saiyugoub1_adpcm_rom_addr_w) -// AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_DEVWRITE_LEGACY("adpcm", saiyugoub1_adpcm_control_w) -ADDRESS_MAP_END - // Pixel clock, assuming that it can't be 4 MHz because 4 MHz / 15,20 KHz = 263 HTOTAL (VERY unlikely). #define ALPHA68K_PIXEL_CLOCK XTAL_24MHz/4 #define ALPHA68K_HTOTAL 394 @@ -1916,7 +1911,7 @@ ADDRESS_MAP_END #define ALPHA68K_VBEND 16 #define ALPHA68K_VBSTART 240 -static MACHINE_CONFIG_START( sstingry, alpha68k_state ) +static MACHINE_CONFIG_START( sstingry ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 6000000) /* 24MHz/4? */ @@ -1932,7 +1927,11 @@ static MACHINE_CONFIG_START( sstingry, alpha68k_state ) MCFG_CPU_ADD("mcu", I8748, 9263750) /* 9.263750 MHz oscillator, divided by 3*5 internally */ // MCFG_CPU_PROGRAM_MAP(i8748_map) - MCFG_CPU_IO_MAP(i8748_portmap) +// MCFG_MCS48_PORT_BUS_IN_CB(READ8(alpha68k_state, saiyugoub1_mcu_command_r)) +// MCFG_MCS48_PORT_T0_CLK_CUSTOM(alpha68k_state, saiyugoub1_m5205_clk_w) /* Drives the clock on the m5205 at 1/8 of this frequency */ +// MCFG_MCS48_PORT_T1_IN_CB(READLINE(alpha68k_state, saiyugoub1_m5205_irq_r)) +// MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(alpha68k_state, saiyugoub1_adpcm_rom_addr_w)) +// MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(alpha68k_state, saiyugoub1_adpcm_control_w)) MCFG_DEVICE_DISABLE() MCFG_MACHINE_START_OVERRIDE(alpha68k_state,common) @@ -1973,7 +1972,7 @@ static MACHINE_CONFIG_START( sstingry, alpha68k_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kyros, alpha68k_state ) +static MACHINE_CONFIG_START( kyros ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/4) /* Verified on bootleg PCB */ @@ -2025,7 +2024,7 @@ static MACHINE_CONFIG_START( kyros, alpha68k_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jongbou, alpha68k_state ) +static MACHINE_CONFIG_START( jongbou ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) @@ -2067,7 +2066,7 @@ static MACHINE_CONFIG_START( jongbou, alpha68k_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.65) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( alpha68k_I, alpha68k_state ) +static MACHINE_CONFIG_START( alpha68k_I ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 6000000) /* 24MHz/4? */ @@ -2112,7 +2111,7 @@ INTERRUPT_GEN_MEMBER(alpha68k_state::alpha68k_sound_nmi) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( alpha68k_II, alpha68k_state ) +static MACHINE_CONFIG_START( alpha68k_II ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) /* Correct */ @@ -2167,7 +2166,7 @@ static MACHINE_CONFIG_DERIVED( btlfieldb, alpha68k_II ) MCFG_CPU_PERIODIC_INT_DRIVER(alpha68k_state, irq2_line_hold, 60*4) // MCU irq MACHINE_CONFIG_END -static MACHINE_CONFIG_START( alpha68k_II_gm, alpha68k_state ) +static MACHINE_CONFIG_START( alpha68k_II_gm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) @@ -2217,7 +2216,7 @@ static MACHINE_CONFIG_START( alpha68k_II_gm, alpha68k_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( alpha68k_V, alpha68k_state ) +static MACHINE_CONFIG_START( alpha68k_V ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* ? */ @@ -2266,7 +2265,7 @@ static MACHINE_CONFIG_START( alpha68k_V, alpha68k_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( alpha68k_V_sb, alpha68k_state ) +static MACHINE_CONFIG_START( alpha68k_V_sb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* ? */ @@ -2315,7 +2314,7 @@ static MACHINE_CONFIG_START( alpha68k_V_sb, alpha68k_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tnextspc, alpha68k_state ) +static MACHINE_CONFIG_START( tnextspc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 9000000) /* Confirmed 18 MHz/2 */ @@ -3493,10 +3492,10 @@ DRIVER_INIT_MEMBER(alpha68k_state,tnextspc) GAME( 1986, sstingry, 0, sstingry, sstingry, alpha68k_state, sstingry, ROT90, "Alpha Denshi Co.", "Super Stingray (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1987, kyros, 0, kyros, kyros, alpha68k_state, kyros, ROT90, "Alpha Denshi Co. (World Games Inc. license)", "Kyros", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, kyrosj, kyros, kyros, kyros, alpha68k_state, kyros, ROT90, "Alpha Denshi Co.", "Kyros No Yakata (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, kyros, 0, kyros, kyros, alpha68k_state, kyros, ROT90, "Alpha Denshi Co. (World Games Inc. license)", "Kyros", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, kyrosj, kyros, kyros, kyros, alpha68k_state, kyros, ROT90, "Alpha Denshi Co.", "Kyros No Yakata (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, jongbou, 0, jongbou, jongbou, alpha68k_state, jongbou, ROT90, "SNK", "Mahjong Block Jongbou (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, jongbou, 0, jongbou, jongbou, alpha68k_state, jongbou, ROT90, "SNK", "Mahjong Block Jongbou (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, paddlema, 0, alpha68k_I, paddlema, alpha68k_state, paddlema, ROT90, "SNK", "Paddle Mania", MACHINE_SUPPORTS_SAVE ) @@ -3504,7 +3503,7 @@ GAME( 1987, timesold, 0, alpha68k_II, timesold, alpha68k_state, times GAME( 1987, timesold1, timesold, alpha68k_II, timesold, alpha68k_state, timesold1,ROT90, "Alpha Denshi Co. (SNK/Romstar license)", "Time Soldiers (US Rev 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, btlfield, timesold, alpha68k_II, btlfield, alpha68k_state, btlfield, ROT90, "Alpha Denshi Co. (SNK license)", "Battle Field (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, btlfieldb, timesold, btlfieldb, btlfieldb, alpha68k_state,btlfieldb,ROT90, "bootleg", "Battle Field (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, btlfieldb, timesold, btlfieldb, btlfieldb,alpha68k_state, btlfieldb,ROT90, "bootleg", "Battle Field (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, skysoldr, 0, alpha68k_II, skysoldr, alpha68k_state, skysoldr, ROT90, "Alpha Denshi Co. (SNK of America/Romstar license)", "Sky Soldiers (US)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, skysoldrbl,skysoldr, alpha68k_II, skysoldr, alpha68k_state, skysoldr, ROT90, "bootleg", "Sky Soldiers (bootleg)", MACHINE_SUPPORTS_SAVE ) @@ -3515,12 +3514,12 @@ GAME( 1988, goldmedla, goldmedl, alpha68k_II_gm, goldmedl, alpha68k_state, goldm GAME( 1988, goldmedlb, goldmedl, alpha68k_II_gm, goldmedl, alpha68k_state, goldmedla,ROT0, "bootleg", "Gold Medalist (bootleg)", MACHINE_UNEMULATED_PROTECTION|MACHINE_IMPERFECT_GRAPHICS ) // same as above GAME( 1989, skyadvnt, 0, alpha68k_V, skyadvnt, alpha68k_state, skyadvnt, ROT90, "Alpha Denshi Co.", "Sky Adventure (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, skyadvntu, skyadvnt, alpha68k_V, skyadvntu, alpha68k_state,skyadvntu,ROT90, "Alpha Denshi Co. (SNK of America license)", "Sky Adventure (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, skyadvntu, skyadvnt, alpha68k_V, skyadvntu,alpha68k_state, skyadvntu,ROT90, "Alpha Denshi Co. (SNK of America license)", "Sky Adventure (US)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, skyadvntj, skyadvnt, alpha68k_V, skyadvnt, alpha68k_state, skyadvnt, ROT90, "Alpha Denshi Co.", "Sky Adventure (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, gangwars, 0, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "Alpha Denshi Co.", "Gang Wars", MACHINE_SUPPORTS_SAVE ) GAME( 1989, gangwarsj, gangwars, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "Alpha Denshi Co.", "Gang Wars (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, gangwarsu, gangwars, alpha68k_V, gangwarsu, alpha68k_state,gangwarsu,ROT0, "Alpha Denshi Co.", "Gang Wars (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, gangwarsu, gangwars, alpha68k_V, gangwarsu,alpha68k_state, gangwarsu,ROT0, "Alpha Denshi Co.", "Gang Wars (US)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, gangwarsb, gangwars, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "bootleg", "Gang Wars (bootleg)", MACHINE_SUPPORTS_SAVE ) // has (undumped) 68705 MCU in place of Alpha MCU, otherwise the same as 'gangwars' GAME( 1989, sbasebal, 0, alpha68k_V_sb, sbasebal, alpha68k_state, sbasebal, ROT0, "Alpha Denshi Co. (SNK of America license)", "Super Champion Baseball (US)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) // calculated pitcher launching speed diff --git a/src/mame/drivers/alphasma.cpp b/src/mame/drivers/alphasma.cpp index 86b6145ab2b..7710970f54c 100644 --- a/src/mame/drivers/alphasma.cpp +++ b/src/mame/drivers/alphasma.cpp @@ -418,7 +418,7 @@ void alphasmart_state::machine_reset() m_port_d = 0; } -static MACHINE_CONFIG_START( alphasmart, alphasmart_state ) +static MACHINE_CONFIG_START( alphasmart ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC68HC11, XTAL_8MHz/2) // MC68HC11D0, XTAL is 8 Mhz, unknown divider MCFG_CPU_PROGRAM_MAP(alphasmart_mem) @@ -449,7 +449,7 @@ static MACHINE_CONFIG_START( alphasmart, alphasmart_state ) MCFG_NVRAM_ADD_0FILL("nvram") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( asma2k, alphasmart, asma2k_state ) +static MACHINE_CONFIG_DERIVED( asma2k, alphasmart ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(asma2k_mem) MACHINE_CONFIG_END @@ -477,6 +477,6 @@ ROM_START( asma2k ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1995, asmapro, 0, 0, alphasmart, alphasmart, driver_device, 0, "Intelligent Peripheral Devices", "AlphaSmart Pro" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1997, asma2k , 0, 0, asma2k , alphasmart, driver_device, 0, "Intelligent Peripheral Devices", "AlphaSmart 2000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1995, asmapro, 0, 0, alphasmart, alphasmart, alphasmart_state, 0, "Intelligent Peripheral Devices", "AlphaSmart Pro" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1997, asma2k, 0, 0, asma2k, alphasmart, asma2k_state, 0, "Intelligent Peripheral Devices", "AlphaSmart 2000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp index 9380cd1db3a..5ca590401da 100644 --- a/src/mame/drivers/alphatro.cpp +++ b/src/mame/drivers/alphatro.cpp @@ -440,7 +440,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(alphatro_state::timer_p) } } -static MACHINE_CONFIG_START( alphatro, alphatro_state ) +static MACHINE_CONFIG_START( alphatro ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,MAIN_CLOCK) @@ -510,4 +510,4 @@ ROM_START( alphatro ) ROM_LOAD( "2732.ic-1067", 0x0000, 0x1000, CRC(61f38814) SHA1(35ba31c58a10d5bd1bdb202717792ca021dbe1a8) ) ROM_END -COMP( 1983, alphatro, 0, 0, alphatro, alphatro, driver_device, 0, "Triumph-Adler", "Alphatronic PC", MACHINE_NOT_WORKING ) +COMP( 1983, alphatro, 0, 0, alphatro, alphatro, alphatro_state, 0, "Triumph-Adler", "Alphatronic PC", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/altair.cpp b/src/mame/drivers/altair.cpp index a72174da336..e4fe515b417 100644 --- a/src/mame/drivers/altair.cpp +++ b/src/mame/drivers/altair.cpp @@ -99,10 +99,10 @@ WRITE_LINE_MEMBER(altair_state::write_acia_clock) void altair_state::machine_reset() { // Set startup address done by turn-key - m_maincpu->set_state_int(I8085_PC, 0xFD00); + m_maincpu->set_state_int(i8080_cpu_device::I8085_PC, 0xFD00); } -static MACHINE_CONFIG_START( altair, altair_state ) +static MACHINE_CONFIG_START( altair ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(altair_mem) @@ -134,5 +134,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, al8800bt, 0, 0, altair, altair, driver_device, 0, "MITS", "Altair 8800bt", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1977, al8800bt, 0, 0, altair, altair, altair_state, 0, "MITS", "Altair 8800bt", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/alto2.cpp b/src/mame/drivers/alto2.cpp index 3d3ae5cdb9e..8ec29569952 100644 --- a/src/mame/drivers/alto2.cpp +++ b/src/mame/drivers/alto2.cpp @@ -272,7 +272,7 @@ ADDRESS_MAP_START( alto2_iomem_map, AS_2, 16, alto2_state ) AM_RANGE(0, 2*ALTO2_RAM_SIZE-1) AM_DEVICE16( "maincpu", alto2_cpu_device, iomem_map, 0xffffU ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( alto2, alto2_state ) +static MACHINE_CONFIG_START( alto2 ) // Basic machine hardware // SYSCLK is Display Control part A51 (tagged 29.4MHz) divided by 5(?) // 5.8MHz according to de.wikipedia.org/wiki/Xerox_Alto diff --git a/src/mame/drivers/altos486.cpp b/src/mame/drivers/altos486.cpp index 59ebf8fab11..4698f0be9e8 100644 --- a/src/mame/drivers/altos486.cpp +++ b/src/mame/drivers/altos486.cpp @@ -119,7 +119,7 @@ static ADDRESS_MAP_START(altos486_z80_io, AS_IO, 8, altos486_state) //AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("sio2", z80sio0_device, read, write) ADDRESS_MAP_END -static MACHINE_CONFIG_START( altos486, altos486_state ) +static MACHINE_CONFIG_START( altos486 ) MCFG_CPU_ADD("maincpu", I80186, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(altos486_mem) MCFG_CPU_IO_MAP(altos486_io) @@ -219,4 +219,4 @@ ROM_START( altos486 ) ROM_LOAD("16019_z80.bin", 0x0000, 0x1000, CRC(68b1b2e1) SHA1(5d83609a465029212d5e3f72ac9c520b3dbed838)) ROM_END -COMP( 1984, altos486, 0, 0, altos486, 0, driver_device, 0, "Altos Computer Systems", "Altos 486", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1984, altos486, 0, 0, altos486, 0, altos486_state, 0, "Altos Computer Systems", "Altos 486", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/altos5.cpp b/src/mame/drivers/altos5.cpp index 356fc28c48f..bd816db962b 100644 --- a/src/mame/drivers/altos5.cpp +++ b/src/mame/drivers/altos5.cpp @@ -70,7 +70,7 @@ private: required_device m_sio; required_device m_dma; required_device m_ctc; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; }; @@ -98,7 +98,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(altos5_io, AS_IO, 8, altos5_state) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("fdc", fd1797_t, read, write) + AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("fdc", fd1797_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio0", z80pio_device, read, write) AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("pio1", z80pio_device, read, write) @@ -369,7 +369,7 @@ DRIVER_INIT_MEMBER( altos5_state, altos5 ) membank("bankwf")->configure_entries(0, 50, &RAM[0], 0x1000); } -static MACHINE_CONFIG_START( altos5, altos5_state ) +static MACHINE_CONFIG_START( altos5 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz / 2) MCFG_CPU_PROGRAM_MAP(altos5_mem) @@ -448,5 +448,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP(1982, altos5, 0, 0, altos5, altos5, altos5_state, altos5, "Altos", "Altos 5-15", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP(1982, altos5, 0, 0, altos5, altos5, altos5_state, altos5, "Altos", "Altos 5-15", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/alvg.cpp b/src/mame/drivers/alvg.cpp index 997f237be06..2c613d365e9 100644 --- a/src/mame/drivers/alvg.cpp +++ b/src/mame/drivers/alvg.cpp @@ -41,7 +41,7 @@ DRIVER_INIT_MEMBER(alvg_state,alvg) { } -static MACHINE_CONFIG_START( alvg, alvg_state ) +static MACHINE_CONFIG_START( alvg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02, 2000000) MCFG_CPU_PROGRAM_MAP(alvg_map) @@ -348,16 +348,29 @@ ROM_START(usafootb) ROM_RELOAD(0x000000 + 0xc0000, 0x40000) ROM_END +ROM_START(usafootba) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD("usa_cpu1.bin", 0x0000, 0x10000, CRC(3b64a6e9) SHA1(65535bc17395416181bafddc61c0fac177eeba2f)) + ROM_REGION(0x10000, "cpu2", 0) + ROM_LOAD("usa_snd.bin", 0x0000, 0x10000, CRC(9d509cbc) SHA1(0be629945b5102adf75e88661e0f956e32ca77da)) + ROM_REGION(0x400000, "sound1", 0) + ROM_LOAD("usa_vox.bin", 0x000000, 0x40000, CRC(baae0aa3) SHA1(7933bffcf1509ceeea58a4449268c10c9fac554c)) + ROM_RELOAD(0x000000 + 0x40000, 0x40000) + ROM_RELOAD(0x000000 + 0x80000, 0x40000) + ROM_RELOAD(0x000000 + 0xc0000, 0x40000) +ROM_END + -GAME(1991, agsoccer, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "A.G. Soccer Ball", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, wrldtour, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, wrldtour2, wrldtour, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour (R02b)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, wrldtour3, wrldtour, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour (R06a)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, usafootb, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "U.S.A. Football", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, mystcast, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Mystery Castle (R02)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, mystcasta, mystcast, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Mystery Castle (R03)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, pstlpkr, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Pistol Poker (R02)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, pstlpkr1, pstlpkr, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Pistol Poker (R01)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, punchy, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Punchy The Clown (R02)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, punchy3, punchy, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Punchy The Clown (R03)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, dinoeggs, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Dinosaur Eggs", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, agsoccer, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "A.G. Soccer Ball", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, wrldtour, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, wrldtour2, wrldtour, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour (R02b)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, wrldtour3, wrldtour, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour (R06a)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, usafootb, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "U.S.A. Football", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, usafootba, usafootb, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "U.S.A. Football (R01u)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, mystcast, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Mystery Castle (R02)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, mystcasta, mystcast, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Mystery Castle (R03)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, pstlpkr, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Pistol Poker (R02)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, pstlpkr1, pstlpkr, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Pistol Poker (R01)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, punchy, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Punchy The Clown (R02)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, punchy3, punchy, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Punchy The Clown (R03)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, dinoeggs, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Dinosaur Eggs", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/amaticmg.cpp b/src/mame/drivers/amaticmg.cpp index 443e13a0f7e..d2cf7a98511 100644 --- a/src/mame/drivers/amaticmg.cpp +++ b/src/mame/drivers/amaticmg.cpp @@ -701,11 +701,11 @@ static INPUT_PORTS_START( amaticmg ) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service B (Dienst B") PORT_CODE(KEYCODE_8) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service B (Dienst B") PORT_TOGGLE PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Coin 2 (Muenze 2)") PORT_IMPULSE(3) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Payout pulse") PORT_IMPULSE(3) PORT_CODE(KEYCODE_Q) // Hopper paying pulse PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_W) // 'Ausgegeben 0 - Hopper Leer' (spent 0 - hopper empty) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // 'Ausgegeben 0 - Hopper Leer' (spent 0 - hopper empty) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3 (Halten 3)") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 (Halten 2)") @@ -713,10 +713,10 @@ static INPUT_PORTS_START( amaticmg ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Clear / Take (Loeschen)") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1 (Halten 1)") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service A (Dienst A") PORT_CODE(KEYCODE_7) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service A (Dienst A") PORT_TOGGLE PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet (Setzen) / Half Take") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Service C (Dienst C") PORT_CODE(KEYCODE_9) PORT_TOGGLE - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service (Master)") PORT_CODE(KEYCODE_0) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Service C (Dienst C") PORT_TOGGLE + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service (Master)") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 (Halten 4)") PORT_START("IN3") @@ -819,7 +819,7 @@ void amaticmg_state::machine_reset() * Machine Drivers * ************************************/ -static MACHINE_CONFIG_START( amaticmg, amaticmg_state ) +static MACHINE_CONFIG_START( amaticmg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* WRONG! */ MCFG_CPU_PROGRAM_MAP(amaticmg_map) diff --git a/src/mame/drivers/amazonlf.cpp b/src/mame/drivers/amazonlf.cpp deleted file mode 100644 index 8cf69f73a26..00000000000 --- a/src/mame/drivers/amazonlf.cpp +++ /dev/null @@ -1,92 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood -/* - - uses ADC 'Amazon-LF' SoC, EISC CPU core - similar to crystal system? - -*/ - -#include "emu.h" -#include "cpu/se3208/se3208.h" -#include "screen.h" - - -class amazonlf_state : public driver_device -{ -public: - amazonlf_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_screen(*this, "screen") - { } - - /* devices */ - required_device m_maincpu; - required_device m_screen; - - - virtual void machine_start() override; - virtual void machine_reset() override; - uint32_t screen_update_amazonlf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_amazonlf(screen_device &screen, bool state); -}; - -static ADDRESS_MAP_START( amazonlf_mem, AS_PROGRAM, 32, amazonlf_state ) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM -ADDRESS_MAP_END - -void amazonlf_state::machine_start() -{ -} - -void amazonlf_state::machine_reset() -{ -} - -uint32_t amazonlf_state::screen_update_amazonlf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - return 0; -} - -void amazonlf_state::screen_eof_amazonlf(screen_device &screen, bool state) -{ -} - - -static INPUT_PORTS_START(amazonlf) - -INPUT_PORTS_END - - - - - -static MACHINE_CONFIG_START( amazonlf, amazonlf_state ) - - MCFG_CPU_ADD("maincpu", SE3208, 25175000) // ? - MCFG_CPU_PROGRAM_MAP(amazonlf_mem) - - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(640, 480) - MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479) - MCFG_SCREEN_UPDATE_DRIVER(amazonlf_state, screen_update_amazonlf) - MCFG_SCREEN_VBLANK_DRIVER(amazonlf_state, screen_eof_amazonlf) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB("palette") -MACHINE_CONFIG_END - - -ROM_START( crospuzl ) - ROM_REGION( 0x80010, "maincpu", 0 ) - ROM_LOAD("en29lv040a.u5", 0x000000, 0x80010, CRC(d50e8500) SHA1(d681cd18cd0e48854c24291d417d2d6d28fe35c1) ) - - ROM_REGION32_LE( 0x8400010, "user1", ROMREGION_ERASEFF ) // Flash - // mostly empty, but still looks good - ROM_LOAD("k9f1g08u0a.riser", 0x000000, 0x8400010, CRC(7f3c88c3) SHA1(db3169a7b4caab754e9d911998a2ece13c65ce5b) ) -ROM_END - - -GAME( 200?, crospuzl, 0, amazonlf, amazonlf, driver_device, 0, ROT0, "", "Cross Puzzle", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ambush.cpp b/src/mame/drivers/ambush.cpp index 963881a350e..2becacfa56e 100644 --- a/src/mame/drivers/ambush.cpp +++ b/src/mame/drivers/ambush.cpp @@ -667,7 +667,7 @@ WRITE8_MEMBER( ambush_state::unk_w ) // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( ambush, ambush_state ) +static MACHINE_CONFIG_START( ambush ) MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(main_portmap) @@ -872,10 +872,10 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS -GAME( 1983, ambush, 0, ambush, ambusht, driver_device, 0, ROT0, "Tecfri", "Ambush", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ambushh, ambush, ambush, ambusht, driver_device, 0, ROT0, "Tecfri", "Ambush (hack?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ambushj, ambush, ambush, ambush, driver_device, 0, ROT0, "Tecfri (Nippon Amuse license)", "Ambush (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ambushv, ambush, ambush, ambush, driver_device, 0, ROT0, "Tecfri (Volt Electronics license)", "Ambush (Volt Electronics)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, mariobl, mario, mariobl, mariobl, driver_device, 0, ROT180, "bootleg", "Mario Bros. (bootleg on Ambush Hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, dkong3abl, dkong3, dkong3abl, dkong3abl, driver_device, 0, ROT90, "bootleg", "Donkey Kong 3 (bootleg on Ambush hardware)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS +GAME( 1983, ambush, 0, ambush, ambusht, ambush_state, 0, ROT0, "Tecfri", "Ambush", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ambushh, ambush, ambush, ambusht, ambush_state, 0, ROT0, "Tecfri", "Ambush (hack?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ambushj, ambush, ambush, ambush, ambush_state, 0, ROT0, "Tecfri (Nippon Amuse license)", "Ambush (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ambushv, ambush, ambush, ambush, ambush_state, 0, ROT0, "Tecfri (Volt Electronics license)", "Ambush (Volt Electronics)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mariobl, mario, mariobl, mariobl, ambush_state, 0, ROT180, "bootleg", "Mario Bros. (bootleg on Ambush Hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, dkong3abl, dkong3, dkong3abl, dkong3abl, ambush_state, 0, ROT90, "bootleg", "Donkey Kong 3 (bootleg on Ambush hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/amerihok.cpp b/src/mame/drivers/amerihok.cpp index 9813a6f0379..98701c931f8 100644 --- a/src/mame/drivers/amerihok.cpp +++ b/src/mame/drivers/amerihok.cpp @@ -48,7 +48,7 @@ void amerihok_state::machine_reset() } -static MACHINE_CONFIG_START( amerihok, amerihok_state ) +static MACHINE_CONFIG_START( amerihok ) /* basic machine hardware */ // MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown @@ -59,7 +59,7 @@ static MACHINE_CONFIG_START( amerihok, amerihok_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // maybe + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // maybe MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/amico2k.cpp b/src/mame/drivers/amico2k.cpp index 10c4f59a0ec..ea6d890008d 100644 --- a/src/mame/drivers/amico2k.cpp +++ b/src/mame/drivers/amico2k.cpp @@ -206,7 +206,7 @@ void amico2k_state::machine_start() save_item(NAME(m_segment)); } -static MACHINE_CONFIG_START( amico2k, amico2k_state ) +static MACHINE_CONFIG_START( amico2k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1000000) /* 1MHz */ MCFG_CPU_PROGRAM_MAP(amico2k_mem) @@ -237,5 +237,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, amico2k, 0, 0, amico2k, amico2k, driver_device, 0, "A.S.E.L.", "Amico 2000", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1978, amico2k, 0, 0, amico2k, amico2k, amico2k_state, 0, "A.S.E.L.", "Amico 2000", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp index 7942fe75515..0c52d9c4572 100644 --- a/src/mame/drivers/amiga.cpp +++ b/src/mame/drivers/amiga.cpp @@ -163,7 +163,7 @@ protected: private: // devices required_device m_rtc; - required_device m_dmac; + required_device m_dmac; required_device m_tpi; required_device m_cdrom; @@ -943,23 +943,23 @@ WRITE8_MEMBER( cd32_state::akiko_cia_0_port_a_write ) #if 0 static ADDRESS_MAP_START( a1000_overlay_map, AS_PROGRAM, 16, a1000_state ) AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x1c0000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x200000, 0x201fff) AM_MIRROR(0x03e000) AM_ROM AM_REGION("bootrom", 0) + AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0) AM_RANGE(0x280000, 0x2bffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("chip_ram") AM_RANGE(0x300000, 0x33ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x380000, 0x381fff) AM_MIRROR(0x03e000) AM_ROM AM_REGION("bootrom", 0) + AM_RANGE(0x380000, 0x38ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0) ADDRESS_MAP_END #endif static ADDRESS_MAP_START( a1000_overlay_map, AS_PROGRAM, 16, a1000_state ) AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x200000, 0x201fff) AM_MIRROR(0x03e000) AM_ROM AM_REGION("bootrom", 0) + AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0) AM_RANGE(0x280000, 0x2fffff) AM_RAM AM_SHARE("chip_ram") AM_RANGE(0x300000, 0x37ffff) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x380000, 0x381fff) AM_MIRROR(0x03e000) AM_ROM AM_REGION("bootrom", 0) + AM_RANGE(0x380000, 0x38ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0) ADDRESS_MAP_END static ADDRESS_MAP_START( a1000_bootrom_map, AS_PROGRAM, 16, a1000_state ) - AM_RANGE(0x000000, 0x001fff) AM_MIRROR(0x3e000) AM_ROM AM_REGION("bootrom", 0) AM_WRITE(write_protect_w) + AM_RANGE(0x000000, 0x00ffff) AM_MIRROR(0x30000) AM_ROM AM_REGION("bootrom", 0) AM_WRITE(write_protect_w) AM_RANGE(0x040000, 0x07ffff) AM_ROMBANK("wom") ADDRESS_MAP_END @@ -1310,7 +1310,7 @@ static SLOT_INTERFACE_START( amiga_floppies ) SLOT_INTERFACE_END // basic elements common to all amigas -static MACHINE_CONFIG_START( amiga_base, amiga_state ) +static MACHINE_CONFIG_START( amiga_base ) // video MCFG_FRAGMENT_ADD(pal_video) @@ -1332,7 +1332,7 @@ static MACHINE_CONFIG_START( amiga_base, amiga_state ) MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(amiga_state, cia_1_irq)) MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(amiga_state, cia_1_port_a_read)) MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(amiga_state, cia_1_port_a_write)) - MCFG_MOS6526_PB_OUTPUT_CALLBACK(DEVWRITE8("fdc", amiga_fdc, ciaaprb_w)) + MCFG_MOS6526_PB_OUTPUT_CALLBACK(DEVWRITE8("fdc", amiga_fdc_device, ciaaprb_w)) // audio MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -1346,10 +1346,14 @@ static MACHINE_CONFIG_START( amiga_base, amiga_state ) // floppy drives MCFG_DEVICE_ADD("fdc", AMIGA_FDC, amiga_state::CLK_7M_PAL) - MCFG_FLOPPY_DRIVE_ADD("fdc:0", amiga_floppies, "35dd", amiga_fdc::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:1", amiga_floppies, nullptr, amiga_fdc::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:2", amiga_floppies, nullptr, amiga_fdc::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:3", amiga_floppies, nullptr, amiga_fdc::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("fdc:0", amiga_floppies, "35dd", amiga_fdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD("fdc:1", amiga_floppies, nullptr, amiga_fdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD("fdc:2", amiga_floppies, nullptr, amiga_fdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD("fdc:3", amiga_floppies, nullptr, amiga_fdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) // rs232 MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, nullptr) @@ -1377,9 +1381,11 @@ static MACHINE_CONFIG_START( amiga_base, amiga_state ) MCFG_SOFTWARE_LIST_ADD("wb_list", "amiga_workbench") MCFG_SOFTWARE_LIST_ADD("hardware_list", "amiga_hardware") MCFG_SOFTWARE_LIST_ADD("apps_list", "amiga_apps") + MCFG_SOFTWARE_LIST_ADD("flop_list", "amiga_flop") + MCFG_SOFTWARE_LIST_ADD("ocs_list", "amigaocs_flop") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a1000, amiga_base, a1000_state ) +static MACHINE_CONFIG_DERIVED( a1000, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_CPU_PROGRAM_MAP(a1000_mem) @@ -1401,7 +1407,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a1000, amiga_base, a1000_state ) MCFG_SOFTWARE_LIST_ADD("a1000_list", "amiga_a1000") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a1000n, a1000, a1000_state ) +static MACHINE_CONFIG_DERIVED( a1000n, a1000 ) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MCFG_DEVICE_REMOVE("screen") @@ -1416,7 +1422,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a1000n, a1000, a1000_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a2000, amiga_base, a2000_state ) +static MACHINE_CONFIG_DERIVED( a2000, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_CPU_PROGRAM_MAP(a2000_mem) @@ -1445,7 +1451,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a2000, amiga_base, a2000_state ) MCFG_ZORRO2_SLOT_ADD("zorro5", zorro2_cards, nullptr) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a2000n, a2000, a2000_state ) +static MACHINE_CONFIG_DERIVED( a2000n, a2000 ) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MCFG_DEVICE_REMOVE("screen") @@ -1460,7 +1466,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a2000n, a2000, a2000_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a500, amiga_base, a500_state ) +static MACHINE_CONFIG_DERIVED( a500, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_CPU_PROGRAM_MAP(a500_mem) @@ -1479,7 +1485,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a500, amiga_base, a500_state ) MCFG_EXPANSION_SLOT_INT6_HANDLER(WRITELINE(a500_state, side_int6_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a500n, a500, a500_state ) +static MACHINE_CONFIG_DERIVED( a500n, a500 ) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MCFG_DEVICE_REMOVE("screen") @@ -1494,7 +1500,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a500n, a500, a500_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( cdtv, amiga_base, cdtv_state ) +static MACHINE_CONFIG_DERIVED( cdtv, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_CPU_PROGRAM_MAP(cdtv_mem) @@ -1544,13 +1550,14 @@ static MACHINE_CONFIG_DERIVED_CLASS( cdtv, amiga_base, cdtv_state ) MCFG_CR511B_STCH_HANDLER(DEVWRITELINE("u32", tpi6525_device, i2_w)) MCFG_DEVCB_INVERT MCFG_CR511B_STEN_HANDLER(DEVWRITELINE("u32", tpi6525_device, i3_w)) MCFG_CR511B_XAEN_HANDLER(DEVWRITELINE("u32", tpi6525_device, pb2_w)) - MCFG_CR511B_DRQ_HANDLER(DEVWRITELINE("u36", dmac_device, xdreq_w)) - MCFG_CR511B_DTEN_HANDLER(DEVWRITELINE("u36", dmac_device, xdreq_w)) + MCFG_CR511B_DRQ_HANDLER(DEVWRITELINE("u36", amiga_dmac_device, xdreq_w)) + MCFG_CR511B_DTEN_HANDLER(DEVWRITELINE("u36", amiga_dmac_device, xdreq_w)) + // software MCFG_SOFTWARE_LIST_ADD("cd_list", "cdtv") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( cdtvn, cdtv, cdtv_state ) +static MACHINE_CONFIG_DERIVED( cdtvn, cdtv ) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MCFG_DEVICE_REMOVE("screen") @@ -1567,7 +1574,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( cdtvn, cdtv, cdtv_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a3000, amiga_base, a3000_state ) +static MACHINE_CONFIG_DERIVED( a3000, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68030, XTAL_32MHz / 2) MCFG_CPU_PROGRAM_MAP(a3000_mem) @@ -1584,10 +1591,12 @@ static MACHINE_CONFIG_DERIVED_CLASS( a3000, amiga_base, a3000_state ) // todo: zorro3 slots, super dmac, scsi + // software MCFG_SOFTWARE_LIST_ADD("a3000_list", "amiga_a3000") + MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a3000n, a3000, a3000_state ) +static MACHINE_CONFIG_DERIVED( a3000n, a3000 ) MCFG_DEVICE_REMOVE("screen") MCFG_FRAGMENT_ADD(ntsc_video) MCFG_DEVICE_MODIFY("cia_0") @@ -1598,7 +1607,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a3000n, a3000, a3000_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a500p, amiga_base, a500p_state ) +static MACHINE_CONFIG_DERIVED( a500p, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_CPU_PROGRAM_MAP(a500p_mem) @@ -1615,9 +1624,12 @@ static MACHINE_CONFIG_DERIVED_CLASS( a500p, amiga_base, a500p_state ) // cpu slot MCFG_EXPANSION_SLOT_ADD("maincpu", a500_expansion_cards, nullptr) + + // software + MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a500pn, a500p, a500p_state ) +static MACHINE_CONFIG_DERIVED( a500pn, a500p ) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MCFG_DEVICE_REMOVE("screen") @@ -1632,7 +1644,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a500pn, a500p, a500p_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a600, amiga_base, a600_state ) +static MACHINE_CONFIG_DERIVED( a600, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_PAL) MCFG_CPU_PROGRAM_MAP(a600_mem) @@ -1655,9 +1667,12 @@ static MACHINE_CONFIG_DERIVED_CLASS( a600, amiga_base, a600_state ) MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("gayle", gayle_device, ide_interrupt_w)) // todo: pcmcia + + // software + MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a600n, a600, a600_state ) +static MACHINE_CONFIG_DERIVED( a600n, a600 ) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MCFG_DEVICE_MODIFY("gayle") @@ -1674,7 +1689,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a600n, a600, a600_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a1200, amiga_base, a1200_state ) +static MACHINE_CONFIG_DERIVED( a1200, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68EC020, amiga_state::CLK_28M_PAL / 2) MCFG_CPU_PROGRAM_MAP(a1200_mem) @@ -1711,9 +1726,13 @@ static MACHINE_CONFIG_DERIVED_CLASS( a1200, amiga_base, a1200_state ) #endif // todo: pcmcia + + // software + MCFG_SOFTWARE_LIST_ADD("aga_list", "amigaaga_flop") + MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a1200n, a1200, a1200_state ) +static MACHINE_CONFIG_DERIVED( a1200n, a1200 ) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_28M_NTSC / 2) MCFG_DEVICE_MODIFY("gayle") @@ -1733,7 +1752,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a1200n, a1200, a1200_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a4000, amiga_base, a4000_state ) +static MACHINE_CONFIG_DERIVED( a4000, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68040, XTAL_50MHz / 2) MCFG_CPU_PROGRAM_MAP(a4000_mem) @@ -1761,9 +1780,13 @@ static MACHINE_CONFIG_DERIVED_CLASS( a4000, amiga_base, a4000_state ) MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(a4000_state, ide_interrupt_w)) // todo: zorro3 + + // software + MCFG_SOFTWARE_LIST_ADD("aga_list", "amigaaga_flop") + MCFG_SOFTWARE_LIST_ADD("ecs_list", "amigaecs_flop") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a4000n, a4000, a4000_state ) +static MACHINE_CONFIG_DERIVED( a4000n, a4000 ) MCFG_DEVICE_REMOVE("screen") MCFG_FRAGMENT_ADD(ntsc_video) MCFG_DEVICE_MODIFY("screen") @@ -1779,7 +1802,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a4000n, a4000, a4000_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a400030, a4000, a4000_state ) +static MACHINE_CONFIG_DERIVED( a400030, a4000 ) // main cpu MCFG_DEVICE_REMOVE("maincpu") MCFG_CPU_ADD("maincpu", M68EC030, XTAL_50MHz / 2) @@ -1788,7 +1811,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a400030, a4000, a4000_state ) // todo: ide MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a400030n, a400030, a4000_state ) +static MACHINE_CONFIG_DERIVED( a400030n, a400030 ) MCFG_DEVICE_REMOVE("screen") MCFG_FRAGMENT_ADD(ntsc_video) MCFG_DEVICE_MODIFY("screen") @@ -1804,7 +1827,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a400030n, a400030, a4000_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( cd32, amiga_base, cd32_state ) +static MACHINE_CONFIG_DERIVED( cd32, amiga_base ) // main cpu MCFG_CPU_ADD("maincpu", M68EC020, amiga_state::CLK_28M_PAL / 2) MCFG_CPU_PROGRAM_MAP(cd32_mem) @@ -1850,7 +1873,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( cd32, amiga_base, cd32_state ) MCFG_DEVICE_REMOVE("kbd") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( cd32n, cd32, cd32_state ) +static MACHINE_CONFIG_DERIVED( cd32n, cd32 ) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_CLOCK(amiga_state::CLK_28M_NTSC / 2) MCFG_DEVICE_REMOVE("screen") @@ -1868,7 +1891,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( cd32n, cd32, cd32_state ) MCFG_DEVICE_CLOCK(amiga_state::CLK_7M_NTSC) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a4000t, a4000, a4000_state ) +static MACHINE_CONFIG_DERIVED( a4000t, a4000 ) // main cpu MCFG_DEVICE_REMOVE("maincpu") MCFG_CPU_ADD("maincpu", M68040, XTAL_50MHz / 2) @@ -1877,7 +1900,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( a4000t, a4000, a4000_state ) // todo: ide, zorro3, scsi, super dmac MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( a4000tn, a4000, a4000_state ) +static MACHINE_CONFIG_DERIVED( a4000tn, a4000 ) MCFG_DEVICE_REMOVE("screen") MCFG_FRAGMENT_ADD(ntsc_video) MCFG_DEVICE_MODIFY("screen") @@ -1901,12 +1924,13 @@ MACHINE_CONFIG_END // Amiga 1000 // // Shipped with a small bootrom to load kickstart from disk because the -// Kickstart wasn't finished in time. +// Kickstart wasn't finished in time. ROM type is 23256, but only the +// first 4kb of it are used. ROM_START( a1000 ) - ROM_REGION16_BE(0x2000, "bootrom", 0) - ROM_LOAD16_BYTE("252179-01.u5n", 0x0000, 0x1000, CRC(42553bc4) SHA1(8855a97f7a44e3f62d1c88d938fee1f4c606af5b)) - ROM_LOAD16_BYTE("252180-01.u5p", 0x0001, 0x1000, CRC(8e5b9a37) SHA1(d10f1564b99f5ffe108fa042362e877f569de2c3)) + ROM_REGION16_BE(0x10000, "bootrom", 0) + ROM_LOAD16_BYTE("252179-01.u5n", 0x0000, 0x8000, CRC(76bd46ec) SHA1(2155b4887f064c5e01e0a2ebb4a0cc2a3e88d9e8)) + ROM_LOAD16_BYTE("252180-01.u5p", 0x0001, 0x8000, CRC(dd516b6d) SHA1(2c307d02f10ad332a479b50767fd0463efc2844b)) // PALs, all of type PAL16L8 ROM_REGION(0x104, "dpalen", 0) diff --git a/src/mame/drivers/ampoker2.cpp b/src/mame/drivers/ampoker2.cpp index 4064a91aa5b..e5da31eb8ed 100644 --- a/src/mame/drivers/ampoker2.cpp +++ b/src/mame/drivers/ampoker2.cpp @@ -690,7 +690,7 @@ static INPUT_PORTS_START( ampoker2 ) PORT_START("IN3") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Out") PORT_CODE(KEYCODE_G) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_DIPNAME( 0x08, 0x08, "Remote Credits" ) PORT_DIPLOCATION("SW1:1") /* DSW1 */ PORT_DIPSETTING( 0x08, "Cred x 100" ) PORT_CONDITION("IN1", 0x08, EQUALS,0x08) PORT_DIPSETTING( 0x00, "Cred x 50" ) PORT_CONDITION("IN1", 0x08, EQUALS,0x08) @@ -712,7 +712,7 @@ static INPUT_PORTS_START( ampoker2 ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Return Line") PORT_CODE(KEYCODE_J) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("TILT") PORT_CODE(KEYCODE_K) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) PORT_NAME("TILT") PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -756,7 +756,7 @@ static INPUT_PORTS_START( ampkr95 ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE PORT_DIPNAME( 0x08, 0x08, "Remote Mode" ) PORT_DIPSETTING( 0x08, "Mode 1" ) PORT_DIPSETTING( 0x00, "Mode 2" ) @@ -771,11 +771,11 @@ static INPUT_PORTS_START( ampkr95 ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Payout") PORT_CODE(KEYCODE_Q) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Payout") PORT_START("IN3") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Out") PORT_CODE(KEYCODE_G) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_DIPNAME( 0x08, 0x08, "Remote Credits" ) PORT_DIPLOCATION("SW1:1") /* DSW1 */ PORT_DIPSETTING( 0x08, "Cred x 100" ) PORT_CONDITION("IN1",0x08,EQUALS,0x08) PORT_DIPSETTING( 0x00, "Cred x 50" ) PORT_CONDITION("IN1",0x08,EQUALS,0x08) @@ -797,7 +797,7 @@ static INPUT_PORTS_START( ampkr95 ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Return Line") PORT_CODE(KEYCODE_J) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("TILT") PORT_CODE(KEYCODE_K) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) PORT_NAME("TILT") PORT_DIPNAME( 0x08, 0x08, "Rate Table SW1" ) PORT_DIPLOCATION("SW1:3") /* DSW3 (should be arranged with DSW4) */ PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -841,7 +841,7 @@ static INPUT_PORTS_START( sigmapkr ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE PORT_DIPNAME( 0x08, 0x08, "Remote Mode" ) PORT_DIPSETTING( 0x08, "Mode 1" ) PORT_DIPSETTING( 0x00, "Mode 2" ) @@ -856,17 +856,17 @@ static INPUT_PORTS_START( sigmapkr ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Payout") PORT_CODE(KEYCODE_Q) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Payout") PORT_START("IN3") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Out") PORT_CODE(KEYCODE_G) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_DIPNAME( 0x08, 0x08, "Remote Credits" ) PORT_DIPLOCATION("SW1:1") /* DSW1 */ PORT_DIPSETTING( 0x08, "Cred x 100" ) PORT_CONDITION("IN1",0x08,EQUALS,0x08) PORT_DIPSETTING( 0x00, "Cred x 50" ) PORT_CONDITION("IN1",0x08,EQUALS,0x08) PORT_DIPSETTING( 0x08, "Cred x 100" ) PORT_CONDITION("IN1",0x08,EQUALS,0x00) /* x100 in ampkr95 */ PORT_DIPSETTING( 0x00, "Remote Off" ) PORT_CONDITION("IN1",0x08,EQUALS,0x00) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Double") PORT_CODE(KEYCODE_S) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Double") PORT_START("IN4") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* not used */ @@ -882,7 +882,7 @@ static INPUT_PORTS_START( sigmapkr ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Return Line") PORT_CODE(KEYCODE_J) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("TILT") PORT_CODE(KEYCODE_K) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) PORT_NAME("TILT") PORT_DIPNAME( 0x08, 0x08, "Rate Table SW1" ) PORT_DIPLOCATION("SW1:3") /* DSW3 (should be arranged with DSW4) */ PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -925,7 +925,7 @@ static INPUT_PORTS_START( sigma2k ) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Operator Key") PORT_TOGGLE PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -949,7 +949,7 @@ static INPUT_PORTS_START( sigma2k ) PORT_START("IN3") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1045,8 +1045,8 @@ static INPUT_PORTS_START( piccolop ) PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hopper Out") PORT_CODE(KEYCODE_G) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_CODE(KEYCODE_0) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Out") PORT_CODE(KEYCODE_G) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Supervisor Key") PORT_TOGGLE PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1056,7 +1056,7 @@ static INPUT_PORTS_START( piccolop ) PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hopper Low") PORT_CODE(KEYCODE_H) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Low") PORT_CODE(KEYCODE_H) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Red") PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) @@ -1067,8 +1067,8 @@ static INPUT_PORTS_START( piccolop ) PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Return Line") PORT_CODE(KEYCODE_J) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("TILT") PORT_CODE(KEYCODE_K) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Return Line") PORT_CODE(KEYCODE_J) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) PORT_NAME("TILT") PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1092,7 +1092,7 @@ static INPUT_PORTS_START( piccolop ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Coin Refill") PORT_CODE(KEYCODE_R) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Coin Refill") PORT_CODE(KEYCODE_R) INPUT_PORTS_END @@ -1139,7 +1139,7 @@ GFXDECODE_END * Machine Driver * *************************/ -static MACHINE_CONFIG_START( ampoker2, ampoker2_state ) +static MACHINE_CONFIG_START( ampoker2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/2) /* 3 MHz */ @@ -1444,16 +1444,16 @@ DRIVER_INIT_MEMBER(ampoker2_state, piccolop) *************************/ // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT -GAMEL( 1990, ampoker2, 0, ampoker2, ampoker2, driver_device, 0, ROT0, "Novomatic", "American Poker II", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) -GAMEL( 1990, ampkr2b1, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 1)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) -GAMEL( 1990, ampkr2b2, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 2)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) -GAMEL( 1994, ampkr2b3, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 3)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) -GAMEL( 1994, ampkr2b4, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 4)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) -GAMEL( 1994, ampkr228, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg?", "American Poker II (iamp2 v28)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) -GAMEL( 1995, ampkr95, ampoker2, ampoker2, ampkr95, driver_device, 0, ROT0, "bootleg", "American Poker 95", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) -GAMEL( 1990, pkrdewin, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "Poker De Win", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) -GAMEL( 1990, videomat, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "Videomat (Polish bootleg)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) +GAMEL( 1990, ampoker2, 0, ampoker2, ampoker2, ampoker2_state, 0, ROT0, "Novomatic", "American Poker II", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) +GAMEL( 1990, ampkr2b1, ampoker2, ampoker2, ampoker2, ampoker2_state, 0, ROT0, "bootleg", "American Poker II (bootleg, set 1)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) +GAMEL( 1990, ampkr2b2, ampoker2, ampoker2, ampoker2, ampoker2_state, 0, ROT0, "bootleg", "American Poker II (bootleg, set 2)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) +GAMEL( 1994, ampkr2b3, ampoker2, ampoker2, ampoker2, ampoker2_state, 0, ROT0, "bootleg", "American Poker II (bootleg, set 3)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) +GAMEL( 1994, ampkr2b4, ampoker2, ampoker2, ampoker2, ampoker2_state, 0, ROT0, "bootleg", "American Poker II (bootleg, set 4)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) +GAMEL( 1994, ampkr228, ampoker2, ampoker2, ampoker2, ampoker2_state, 0, ROT0, "bootleg?", "American Poker II (iamp2 v28)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) +GAMEL( 1995, ampkr95, ampoker2, ampoker2, ampkr95, ampoker2_state, 0, ROT0, "bootleg", "American Poker 95", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) +GAMEL( 1990, pkrdewin, ampoker2, ampoker2, ampoker2, ampoker2_state, 0, ROT0, "bootleg", "Poker De Win", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) +GAMEL( 1990, videomat, ampoker2, ampoker2, ampoker2, ampoker2_state, 0, ROT0, "bootleg", "Videomat (Polish bootleg)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) GAMEL( 1990, rabbitpk, ampoker2, ampoker2, ampoker2, ampoker2_state, rabbitpk, ROT0, "bootleg", "Rabbit Poker (Arizona Poker v1.1?)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) -GAMEL( 1995, sigmapkr, 0, ampoker2, sigmapkr, driver_device, 0, ROT0, "Sigma Inc.", "Sigma Poker", MACHINE_SUPPORTS_SAVE, layout_sigmapkr ) -GAMEL( 1998, sigma2k, 0, sigma2k, sigma2k, driver_device, 0, ROT0, "Sigma Inc.", "Sigma Poker 2000", MACHINE_SUPPORTS_SAVE, layout_sigmapkr ) +GAMEL( 1995, sigmapkr, 0, ampoker2, sigmapkr, ampoker2_state, 0, ROT0, "Sigma Inc.", "Sigma Poker", MACHINE_SUPPORTS_SAVE, layout_sigmapkr ) +GAMEL( 1998, sigma2k, 0, sigma2k, sigma2k, ampoker2_state, 0, ROT0, "Sigma Inc.", "Sigma Poker 2000", MACHINE_SUPPORTS_SAVE, layout_sigmapkr ) GAME( 1990, piccolop, ampoker2, ampoker2, piccolop, ampoker2_state, piccolop, ROT0, "Admiral/Novomatic", "Piccolo Poker 100", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ampro.cpp b/src/mame/drivers/ampro.cpp index 1064043115f..213c26e8fdd 100644 --- a/src/mame/drivers/ampro.cpp +++ b/src/mame/drivers/ampro.cpp @@ -56,7 +56,7 @@ private: required_device m_maincpu; required_device m_dart; required_device m_ctc; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; }; @@ -110,8 +110,8 @@ static ADDRESS_MAP_START(ampro_io, AS_IO, 8, ampro_state) //AM_RANGE(0x28, 0x28) AM_WRITE(port28_w) // scsi control //AM_RANGE(0x29, 0x29) AM_READ(port29_r) // ID port AM_RANGE(0x40, 0x8f) AM_READWRITE(io_r,io_w) - AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("fdc", wd1772_t, write) - AM_RANGE(0xc4, 0xc7) AM_DEVREAD("fdc", wd1772_t, read) + AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("fdc", wd1772_device, write) + AM_RANGE(0xc4, 0xc7) AM_DEVREAD("fdc", wd1772_device, read) ADDRESS_MAP_END static const z80_daisy_config daisy_chain_intf[] = @@ -157,7 +157,7 @@ DRIVER_INIT_MEMBER( ampro_state, ampro ) membank("bankw0")->configure_entry(0, &main[0x0000]); } -static MACHINE_CONFIG_START( ampro, ampro_state ) +static MACHINE_CONFIG_START( ampro ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(ampro_mem) @@ -202,5 +202,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1980, ampro, 0, 0, ampro, ampro, ampro_state, ampro, "Ampro", "Little Z80 Board", 0 ) diff --git a/src/mame/drivers/amspdwy.cpp b/src/mame/drivers/amspdwy.cpp index 2cd9a43f0f3..c7fafc48090 100644 --- a/src/mame/drivers/amspdwy.cpp +++ b/src/mame/drivers/amspdwy.cpp @@ -250,7 +250,7 @@ void amspdwy_state::machine_reset() m_wheel_return[1] = 0; } -static MACHINE_CONFIG_START( amspdwy, amspdwy_state ) +static MACHINE_CONFIG_START( amspdwy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3000000) @@ -383,5 +383,5 @@ ROM_END /* (C) 1987 ETI 8402 MAGNOLIA ST. #C SANTEE, CA 92071 */ -GAME( 1987, amspdwy, 0, amspdwy, amspdwy, driver_device, 0, ROT0, "Enerdyne Technologies Inc.", "American Speedway (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, amspdwya, amspdwy, amspdwy, amspdwya, driver_device, 0, ROT0, "Enerdyne Technologies Inc.", "American Speedway (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, amspdwy, 0, amspdwy, amspdwy, amspdwy_state, 0, ROT0, "Enerdyne Technologies Inc.", "American Speedway (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, amspdwya, amspdwy, amspdwy, amspdwya, amspdwy_state, 0, ROT0, "Enerdyne Technologies Inc.", "American Speedway (set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/amstr_pc.cpp b/src/mame/drivers/amstr_pc.cpp index b0fc7a62038..aa773ecfab1 100644 --- a/src/mame/drivers/amstr_pc.cpp +++ b/src/mame/drivers/amstr_pc.cpp @@ -34,6 +34,7 @@ More information can be found at http://www.seasip.info/AmstradXT/1640tech/index #include "machine/genpc.h" #include "bus/isa/isa.h" #include "bus/isa/isa_cards.h" +#include "bus/pc_joy/pc_joy.h" #include "machine/pckeybrd.h" #include "machine/pc_lpt.h" @@ -47,8 +48,10 @@ public: m_mb(*this, "mb"), m_keyboard(*this, "pc_keyboard"), m_lpt1(*this, "lpt_1"), - m_lpt2(*this, "lpt_2") - { m_mouse.x =0; m_mouse.y=0;} + m_lpt2(*this, "lpt_2"), + m_mouse{ 0, 0 } + { + } required_device m_maincpu; required_device m_mb; @@ -466,7 +469,7 @@ static MACHINE_CONFIG_FRAGMENT( cfg_com ) MCFG_SLOT_DEFAULT_OPTION(nullptr) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pc200, amstrad_pc_state ) +static MACHINE_CONFIG_START( pc200 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 8000000) MCFG_CPU_PROGRAM_MAP(ppc640_map) @@ -629,10 +632,10 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1987, ppc512, ibm5150, 0, ppc512, pc200, driver_device, 0, "Amstrad plc", "Amstrad PPC512", MACHINE_NOT_WORKING) -COMP( 1987, ppc640, ibm5150, 0, ppc640, pc200, driver_device, 0, "Amstrad plc", "Amstrad PPC640", MACHINE_NOT_WORKING) -COMP( 1988, pc20, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC20" , MACHINE_NOT_WORKING) -COMP( 1988, pc200, ibm5150, 0, pc200, pc200, driver_device, 0, "Sinclair Research Ltd", "PC200 Professional Series", MACHINE_NOT_WORKING) -COMP( 1988, pc2086, ibm5150, 0, pc2086, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC2086", MACHINE_NOT_WORKING ) -COMP( 1990, pc3086, ibm5150, 0, pc2086, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC3086", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1987, ppc512, ibm5150, 0, ppc512, pc200, amstrad_pc_state, 0, "Amstrad plc", "Amstrad PPC512", MACHINE_NOT_WORKING) +COMP( 1987, ppc640, ibm5150, 0, ppc640, pc200, amstrad_pc_state, 0, "Amstrad plc", "Amstrad PPC640", MACHINE_NOT_WORKING) +COMP( 1988, pc20, ibm5150, 0, pc200, pc200, amstrad_pc_state, 0, "Amstrad plc", "Amstrad PC20" , MACHINE_NOT_WORKING) +COMP( 1988, pc200, ibm5150, 0, pc200, pc200, amstrad_pc_state, 0, "Sinclair Research Ltd", "PC200 Professional Series", MACHINE_NOT_WORKING) +COMP( 1988, pc2086, ibm5150, 0, pc2086, pc200, amstrad_pc_state, 0, "Amstrad plc", "Amstrad PC2086", MACHINE_NOT_WORKING ) +COMP( 1990, pc3086, ibm5150, 0, pc2086, pc200, amstrad_pc_state, 0, "Amstrad plc", "Amstrad PC3086", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp index 78d6f3ac514..ecf6684364e 100644 --- a/src/mame/drivers/amstrad.cpp +++ b/src/mame/drivers/amstrad.cpp @@ -885,7 +885,7 @@ SLOT_INTERFACE_START(amstrad_centronics_devices) SLOT_INTERFACE("digiblst", CENTRONICS_DIGIBLASTER) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( amstrad_base, amstrad_state ) +static MACHINE_CONFIG_START( amstrad_base ) /* Machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(amstrad_mem) @@ -907,7 +907,7 @@ static MACHINE_CONFIG_START( amstrad_base, amstrad_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS( XTAL_16MHz, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15 ) MCFG_SCREEN_UPDATE_DRIVER(amstrad_state, screen_update_amstrad) - MCFG_SCREEN_VBLANK_DRIVER(amstrad_state, screen_eof_amstrad) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(amstrad_state, screen_vblank_amstrad)) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") @@ -1010,7 +1010,7 @@ static MACHINE_CONFIG_DERIVED( kccomp, cpc6128 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cpcplus, amstrad_state ) +static MACHINE_CONFIG_START( cpcplus ) /* Machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_40MHz / 10) MCFG_CPU_PROGRAM_MAP(amstrad_mem) @@ -1032,7 +1032,7 @@ static MACHINE_CONFIG_START( cpcplus, amstrad_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS( ( XTAL_40MHz * 2 ) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15 ) MCFG_SCREEN_UPDATE_DRIVER(amstrad_state, screen_update_amstrad) - MCFG_SCREEN_VBLANK_DRIVER(amstrad_state, screen_eof_amstrad) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(amstrad_state, screen_vblank_amstrad)) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") @@ -1089,7 +1089,7 @@ static MACHINE_CONFIG_START( cpcplus, amstrad_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gx4000, amstrad_state ) +static MACHINE_CONFIG_START( gx4000 ) /* Machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_40MHz / 10) MCFG_CPU_PROGRAM_MAP(amstrad_mem) @@ -1111,7 +1111,7 @@ static MACHINE_CONFIG_START( gx4000, amstrad_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS( ( XTAL_40MHz * 2 ) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15 ) MCFG_SCREEN_UPDATE_DRIVER(amstrad_state, screen_update_amstrad) - MCFG_SCREEN_VBLANK_DRIVER(amstrad_state, screen_eof_amstrad) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(amstrad_state, screen_vblank_amstrad)) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") @@ -1286,14 +1286,14 @@ ROM_END * *************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, cpc464, 0, 0, cpc464, cpc464, driver_device, 0, "Amstrad plc", "Amstrad CPC464", 0 ) -COMP( 1985, cpc664, cpc464, 0, cpc664, cpc664, driver_device, 0, "Amstrad plc", "Amstrad CPC664", 0 ) -COMP( 1985, cpc6128, cpc464, 0, cpc6128, cpc6128, driver_device, 0, "Amstrad plc", "Amstrad CPC6128", 0 ) -COMP( 1985, cpc6128f, cpc464, 0, cpc6128, cpc6128f, driver_device, 0, "Amstrad plc", "Amstrad CPC6128 (France, AZERTY Keyboard)", 0 ) -COMP( 1985, cpc6128s, cpc464, 0, cpc6128, cpc6128s, driver_device, 0, "Amstrad plc", "Amstrad CPC6128 (Sweden/Finland)", 0 ) -COMP( 1990, cpc464p, 0, 0, cpcplus, plus, driver_device, 0, "Amstrad plc", "Amstrad CPC464+", 0 ) -COMP( 1990, cpc6128p, 0, 0, cpcplus, plus, driver_device, 0, "Amstrad plc", "Amstrad CPC6128+", 0 ) -CONS( 1990, gx4000, 0, 0, gx4000, gx4000, driver_device, 0, "Amstrad plc", "Amstrad GX4000", 0 ) -COMP( 1989, kccomp, cpc464, 0, kccomp, kccomp, driver_device, 0, "VEB Mikroelektronik", "KC Compact", 0 ) -COMP( 1993, al520ex, cpc464, 0, aleste, aleste, driver_device, 0, "Patisonic", "Aleste 520EX", MACHINE_IMPERFECT_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, cpc464, 0, 0, cpc464, cpc464, amstrad_state, 0, "Amstrad plc", "Amstrad CPC464", 0 ) +COMP( 1985, cpc664, cpc464, 0, cpc664, cpc664, amstrad_state, 0, "Amstrad plc", "Amstrad CPC664", 0 ) +COMP( 1985, cpc6128, cpc464, 0, cpc6128, cpc6128, amstrad_state, 0, "Amstrad plc", "Amstrad CPC6128", 0 ) +COMP( 1985, cpc6128f, cpc464, 0, cpc6128, cpc6128f, amstrad_state, 0, "Amstrad plc", "Amstrad CPC6128 (France, AZERTY Keyboard)", 0 ) +COMP( 1985, cpc6128s, cpc464, 0, cpc6128, cpc6128s, amstrad_state, 0, "Amstrad plc", "Amstrad CPC6128 (Sweden/Finland)", 0 ) +COMP( 1990, cpc464p, 0, 0, cpcplus, plus, amstrad_state, 0, "Amstrad plc", "Amstrad CPC464+", 0 ) +COMP( 1990, cpc6128p, 0, 0, cpcplus, plus, amstrad_state, 0, "Amstrad plc", "Amstrad CPC6128+", 0 ) +CONS( 1990, gx4000, 0, 0, gx4000, gx4000, amstrad_state, 0, "Amstrad plc", "Amstrad GX4000", 0 ) +COMP( 1989, kccomp, cpc464, 0, kccomp, kccomp, amstrad_state, 0, "VEB Mikroelektronik", "KC Compact", 0 ) +COMP( 1993, al520ex, cpc464, 0, aleste, aleste, amstrad_state, 0, "Patisonic", "Aleste 520EX", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp index 0204669d39e..d3e9bb2ecdd 100644 --- a/src/mame/drivers/amusco.cpp +++ b/src/mame/drivers/amusco.cpp @@ -142,6 +142,7 @@ public: required_device m_hopper; uint8_t m_mc6845_address; uint16_t m_video_update_address; + bool m_blink_state; }; @@ -160,8 +161,7 @@ TILE_GET_INFO_MEMBER(amusco_state::get_bg_tile_info) int code = m_videoram[tile_index * 2] | (m_videoram[tile_index * 2 + 1] << 8); int color = (code & 0x7000) >> 12; - // 6845 cursor is only used for its blink state - if (BIT(code, 15) && !m_crtc->cursor_state_r()) + if (BIT(code, 15) && !m_blink_state) code = 0; SET_TILE_INFO_MEMBER( @@ -175,6 +175,7 @@ TILE_GET_INFO_MEMBER(amusco_state::get_bg_tile_info) void amusco_state::video_start() { m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(amusco_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 10, 74, 24); + m_blink_state = false; } void amusco_state::machine_start() @@ -453,8 +454,14 @@ MC6845_ON_UPDATE_ADDR_CHANGED(amusco_state::crtc_addr) MC6845_UPDATE_ROW(amusco_state::update_row) { + // Latch blink state at start of first line, where cursor is always positioned + if (y == 0 && ma == 0 && m_blink_state != (cursor_x == 0)) + { + m_blink_state = (cursor_x == 0); + m_bg_tilemap->mark_all_dirty(); + } + const rectangle rowrect(0, 8 * x_count - 1, y, y); - m_bg_tilemap->mark_all_dirty(); m_bg_tilemap->draw(*m_screen, bitmap, rowrect, 0, 0); } @@ -462,7 +469,7 @@ MC6845_UPDATE_ROW(amusco_state::update_row) * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( amusco, amusco_state ) +static MACHINE_CONFIG_START( amusco ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, CPU_CLOCK) // 5 MHz ? @@ -579,6 +586,6 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1987, amusco, 0, amusco, amusco, driver_device, 0, ROT0, "Amusco", "American Music Poker (V1.4)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong -GAMEL( 1988, draw88pkr, 0, draw88pkr,draw88pkr,driver_device, 0, ROT0, "BTE, Inc.", "Draw 88 Poker (V2.0)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +GAMEL( 1987, amusco, 0, amusco, amusco, amusco_state, 0, ROT0, "Amusco", "American Music Poker (V1.4)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong +GAMEL( 1988, draw88pkr, 0, draw88pkr,draw88pkr, amusco_state, 0, ROT0, "BTE, Inc.", "Draw 88 Poker (V2.0)", MACHINE_IMPERFECT_COLORS | MACHINE_NODEVICE_PRINTER, layout_amusco ) // palette totally wrong diff --git a/src/mame/drivers/amust.cpp b/src/mame/drivers/amust.cpp index ddfabb1315d..cbb745fecf9 100644 --- a/src/mame/drivers/amust.cpp +++ b/src/mame/drivers/amust.cpp @@ -128,7 +128,7 @@ public: DECLARE_READ8_MEMBER(port0a_r); DECLARE_WRITE8_MEMBER(port0a_w); DECLARE_WRITE8_MEMBER(port0d_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); INTERRUPT_GEN_MEMBER(irq_vs); MC6845_UPDATE_ROW(crtc_update_row); @@ -316,7 +316,7 @@ WRITE8_MEMBER( amust_state::port0d_w ) m_p_videoram[video_address] = data; } -WRITE8_MEMBER( amust_state::kbd_put ) +void amust_state::kbd_put(u8 data) { m_term_data = data; } @@ -391,7 +391,7 @@ DRIVER_INIT_MEMBER( amust_state, amust ) membank("bankw0")->configure_entry(0, &main[0xf800]); } -static MACHINE_CONFIG_START( amust, amust_state ) +static MACHINE_CONFIG_START( amust ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(amust_mem) @@ -421,7 +421,7 @@ static MACHINE_CONFIG_START( amust, amust_state ) MCFG_MC6845_UPDATE_ROW_CB(amust_state, crtc_update_row) MCFG_DEVICE_ADD("keybd", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(amust_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(amust_state, kbd_put)) MCFG_UPD765A_ADD("fdc", false, true) MCFG_FLOPPY_DRIVE_ADD("fdc:0", amust_floppies, "drive0", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) @@ -476,5 +476,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, amust, 0, 0, amust, amust, amust_state, amust, "Amust", "Amust Executive 816", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1983, amust, 0, 0, amust, amust, amust_state, amust, "Amust", "Amust Executive 816", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/angelkds.cpp b/src/mame/drivers/angelkds.cpp index 508ee65216f..4088bc2ceb6 100644 --- a/src/mame/drivers/angelkds.cpp +++ b/src/mame/drivers/angelkds.cpp @@ -511,7 +511,7 @@ void angelkds_state::machine_reset() m_bgtopbank = 0; } -static MACHINE_CONFIG_START( angelkds, angelkds_state ) +static MACHINE_CONFIG_START( angelkds ) MCFG_CPU_ADD("maincpu", Z80, XTAL_6MHz) MCFG_CPU_PROGRAM_MAP(main_map) diff --git a/src/mame/drivers/anzterm.cpp b/src/mame/drivers/anzterm.cpp index a35bb37c52d..cfdc746b3f0 100644 --- a/src/mame/drivers/anzterm.cpp +++ b/src/mame/drivers/anzterm.cpp @@ -408,7 +408,7 @@ ADDRESS_MAP_START( anzterm, AS_PROGRAM, 8, anzterm_state ) ADDRESS_MAP_END -MACHINE_CONFIG_START( anzterm, anzterm_state ) +MACHINE_CONFIG_START( anzterm ) MCFG_CPU_ADD("maincpu", M6809, 15974400/4) MCFG_CPU_PROGRAM_MAP(anzterm) @@ -478,4 +478,4 @@ ROM_START( anzterm ) ROM_LOAD( "ebb-fea-v96-9-23-83-f43a.u11", 0x4000, 0x1000, CRC(0e572470) SHA1(966e5eeb0114589a7cab3c29a1db48cdd8634be5) ) ROM_END -COMP( 1986?, anzterm, 0, 0, anzterm, anzterm, driver_device, 0, "Burroughs", "EF315-I220 Teller Terminal (ANZ)", MACHINE_IS_SKELETON ) // year comes from sticker on bottom of case, it's more likely a 1983 revision +COMP( 1986?, anzterm, 0, 0, anzterm, anzterm, anzterm_state, 0, "Burroughs", "EF315-I220 Teller Terminal (ANZ)", MACHINE_IS_SKELETON ) // year comes from sticker on bottom of case, it's more likely a 1983 revision diff --git a/src/mame/drivers/apc.cpp b/src/mame/drivers/apc.cpp index 6d5a6014e8e..91f27c3d382 100644 --- a/src/mame/drivers/apc.cpp +++ b/src/mame/drivers/apc.cpp @@ -909,7 +909,7 @@ static SLOT_INTERFACE_START( apc_floppies ) SLOT_INTERFACE( "8", FLOPPY_8_DSDD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( apc, apc_state ) +static MACHINE_CONFIG_START( apc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8086,MAIN_CLOCK) diff --git a/src/mame/drivers/apexc.cpp b/src/mame/drivers/apexc.cpp index fc515fa2fbc..fb4c5f6ca9e 100644 --- a/src/mame/drivers/apexc.cpp +++ b/src/mame/drivers/apexc.cpp @@ -96,11 +96,11 @@ private: int m_writable; }; -const device_type APEXC_CYLINDER = device_creator; +DEFINE_DEVICE_TYPE(APEXC_CYLINDER, apexc_cylinder_image_device, "apexc_cylinder_image", "APEXC Cylinder") apexc_cylinder_image_device::apexc_cylinder_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, APEXC_CYLINDER, "APEXC Cylinder", tag, owner, clock, "apexc_cylinder_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, APEXC_CYLINDER, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -217,11 +217,11 @@ protected: virtual void device_start() override { } }; -const device_type APEXC_TAPE_PUNCHER = device_creator; +DEFINE_DEVICE_TYPE(APEXC_TAPE_PUNCHER, apexc_tape_puncher_image_device, "apexc_tape_puncher_image", "APEXC Tape Puncher") apexc_tape_puncher_image_device::apexc_tape_puncher_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, APEXC_TAPE_PUNCHER, "APEXC Tape Puncher", tag, owner, clock, "apexc_tape_puncher_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, APEXC_TAPE_PUNCHER, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -248,11 +248,11 @@ protected: virtual void device_start() override { } }; -const device_type APEXC_TAPE_READER = device_creator; +DEFINE_DEVICE_TYPE(APEXC_TAPE_READER, apexc_tape_reader_image_device, "apexc_tape_reader_image", "APEXC Tape Reader") apexc_tape_reader_image_device::apexc_tape_reader_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, APEXC_TAPE_READER, "APEXC Tape Reader", tag, owner, clock, "apexc_tape_reader_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, APEXC_TAPE_READER, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -858,7 +858,7 @@ static ADDRESS_MAP_START(apexc_io_map, AS_IO, 8, apexc_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( apexc, apexc_state ) +static MACHINE_CONFIG_START( apexc ) /* basic machine hardware */ /* APEXC CPU @ 2.0 kHz (memory word clock frequency) */ @@ -897,6 +897,6 @@ ROM_START(apexc) /* space filled with our font */ ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ //COMP( 1951, apexc53, 0, 0, apexc53, apexc, apexc_state, apexc, "Andrew Donald Booth", "All Purpose Electronic X-ray Computer (as described in 1953)" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) COMP( 1955, apexc, 0, 0, apexc, apexc, apexc_state, apexc, "Andrew Donald Booth", "All Purpose Electronic X-ray Computer (as described in 1957)" , MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/apf.cpp b/src/mame/drivers/apf.cpp index 4560eb43d4b..0a9beac6e05 100644 --- a/src/mame/drivers/apf.cpp +++ b/src/mame/drivers/apf.cpp @@ -138,7 +138,7 @@ private: optional_device m_pia1; optional_device m_cass; required_device m_cart; - optional_device m_fdc; + optional_device m_fdc; optional_device m_floppy0; optional_device m_floppy1; required_ioport_array<4> m_joy; @@ -324,7 +324,7 @@ static ADDRESS_MAP_START( apfimag_map, AS_PROGRAM, 8, apf_state ) AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia1", pia6821_device, read, write) // These need to be confirmed, disk does not work AM_RANGE(0x6400, 0x64ff) AM_READWRITE(serial_r, serial_w) - AM_RANGE(0x6500, 0x6503) AM_DEVREADWRITE("fdc", fd1771_t, read, write) + AM_RANGE(0x6500, 0x6503) AM_DEVREADWRITE("fdc", fd1771_device, read, write) AM_RANGE(0x6600, 0x6600) AM_WRITE(apf_dischw_w) AM_RANGE(0xa000, 0xbfff) AM_RAM // standard AM_RANGE(0xc000, 0xdfff) AM_RAM // expansion @@ -508,7 +508,7 @@ static SLOT_INTERFACE_START(apf_cart) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( apfm1000, apf_state ) +static MACHINE_CONFIG_START( apfm1000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_3_579545MHz / 4 ) // divided by 4 in external clock circuit @@ -520,7 +520,7 @@ static MACHINE_CONFIG_START( apfm1000, apf_state ) MCFG_DEVICE_ADD("mc6847", MC6847_NTSC, XTAL_3_579545MHz) MCFG_MC6847_FSYNC_CALLBACK(DEVWRITELINE("pia0", pia6821_device, cb1_w)) MCFG_MC6847_INPUT_CALLBACK(READ8(apf_state, videoram_r)) - MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM2 | MC6847_MODE_GM1) + MCFG_MC6847_FIXED_MODE(mc6847_ntsc_device::MODE_GM2 | mc6847_ntsc_device::MODE_GM1) // INTEXT = GND // other lines not connected @@ -606,6 +606,6 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -COMP( 1979, apfimag, apfm1000, 0, apfimag, apfimag, driver_device, 0, "APF Electronics Inc.", "APF Imagination Machine", 0 ) -CONS( 1978, apfm1000, 0, 0, apfm1000, apfm1000, driver_device, 0, "APF Electronics Inc.", "APF M-1000", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ +COMP( 1979, apfimag, apfm1000, 0, apfimag, apfimag, apf_state, 0, "APF Electronics Inc.", "APF Imagination Machine", 0 ) +CONS( 1978, apfm1000, 0, 0, apfm1000, apfm1000, apf_state, 0, "APF Electronics Inc.", "APF M-1000", 0 ) diff --git a/src/mame/drivers/apogee.cpp b/src/mame/drivers/apogee.cpp index eb402beb804..68ad3be8873 100644 --- a/src/mame/drivers/apogee.cpp +++ b/src/mame/drivers/apogee.cpp @@ -212,7 +212,7 @@ GFXDECODE_END /* Machine driver */ -static MACHINE_CONFIG_START( apogee, apogee_state ) +static MACHINE_CONFIG_START( apogee ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_16MHz / 9) MCFG_CPU_PROGRAM_MAP(apogee_mem) @@ -282,5 +282,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, apogee, radio86,0, apogee, apogee, radio86_state,radio86, "Zavod BRA", "Apogee BK-01", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, apogee, radio86, 0, apogee, apogee, apogee_state, radio86, "Zavod BRA", "Apogee BK-01", 0 ) diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp index 52a8ae3f62a..8e75ef15ece 100644 --- a/src/mame/drivers/apollo.cpp +++ b/src/mame/drivers/apollo.cpp @@ -685,7 +685,7 @@ static ADDRESS_MAP_START(dn3500_map, AS_PROGRAM, 32, apollo_state ) AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff ) AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff ) AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0x00ff00ff ) + AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff ) AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) @@ -729,7 +729,7 @@ static ADDRESS_MAP_START(dsp3500_map, AS_PROGRAM, 32, apollo_state ) AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff ) AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff ) AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0x00ff00ff ) + AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff ) AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) @@ -823,7 +823,7 @@ static ADDRESS_MAP_START(dn5500_map, AS_PROGRAM, 32, apollo_state ) AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff ) AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff ) AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0x00ff00ff ) + AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff ) AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) @@ -870,7 +870,7 @@ static ADDRESS_MAP_START(dsp5500_map, AS_PROGRAM, 32, apollo_state ) AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff ) AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff ) AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0x00ff00ff ) + AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff ) AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) @@ -1048,7 +1048,7 @@ READ_LINE_MEMBER( apollo_state::apollo_kbd_is_german ) MACHINE DRIVERS ***************************************************************************/ -static MACHINE_CONFIG_START( dn3500, apollo_state ) +static MACHINE_CONFIG_START( dn3500 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU, M68030, 25000000) /* 25 MHz 68030 */ MCFG_CPU_PROGRAM_MAP(dn3500_map) @@ -1074,7 +1074,7 @@ static MACHINE_CONFIG_START( dn3500, apollo_state ) #endif MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dsp3500, apollo_state ) +static MACHINE_CONFIG_START( dsp3500 ) MCFG_CPU_ADD(MAINCPU, M68030, 25000000) /* 25 MHz 68030 */ MCFG_CPU_PROGRAM_MAP(dsp3500_map) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge) @@ -1122,7 +1122,7 @@ static MACHINE_CONFIG_DERIVED( dn3000, dn3500 ) MCFG_RAM_EXTRA_OPTIONS("4M") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dsp3000, apollo_state ) +static MACHINE_CONFIG_START( dsp3000 ) MCFG_CPU_ADD(MAINCPU, M68020PMMU, 12000000) /* 12 MHz */ MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge) MCFG_CPU_PROGRAM_MAP(dsp3000_map) @@ -1168,7 +1168,7 @@ static MACHINE_CONFIG_DERIVED( dn5500, dn3500 ) MCFG_CPU_PROGRAM_MAP(dn5500_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dsp5500, apollo_state ) +static MACHINE_CONFIG_START( dsp5500 ) MCFG_CPU_ADD(MAINCPU, M68040, 25000000) /* 25 MHz */ MCFG_CPU_PROGRAM_MAP(dsp5500_map) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge) @@ -1250,15 +1250,15 @@ ROM_END #define DSP_FLAGS 0 //#define DSP_FLAGS MACHINE_NO_SOUND -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, dn3500, 0, 0, dn3500_15i, dn3500, apollo_state, dn3500, "Apollo", "Apollo DN3500", DN_FLAGS ) -COMP( 1989, dsp3500, dn3500, 0, dsp3500, dsp3500, apollo_state,dsp3500,"Apollo", "Apollo DSP3500", DSP_FLAGS ) -COMP( 1989, dn3500_19i, dn3500, 0, dn3500_19i, dn3500, apollo_state, dn3500, "Apollo", "Apollo DN3500 19\" Monochrome", DN_FLAGS ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1989, dn3500, 0, 0, dn3500_15i, dn3500, apollo_state, dn3500, "Apollo", "Apollo DN3500", DN_FLAGS ) +COMP( 1989, dsp3500, dn3500, 0, dsp3500, dsp3500, apollo_state, dsp3500, "Apollo", "Apollo DSP3500", DSP_FLAGS ) +COMP( 1989, dn3500_19i, dn3500, 0, dn3500_19i, dn3500, apollo_state, dn3500, "Apollo", "Apollo DN3500 19\" Monochrome", DN_FLAGS ) -COMP( 1988, dn3000, dn3500, 0, dn3000_15i, dn3500, apollo_state, dn3000, "Apollo", "Apollo DN3000", DN_FLAGS ) -COMP( 1988, dsp3000, dn3500, 0, dsp3000, dsp3500, apollo_state,dsp3000,"Apollo", "Apollo DSP3000", DSP_FLAGS ) -COMP( 1988, dn3000_19i, dn3500, 0, dn3000_19i, dn3500, apollo_state, dn3000, "Apollo", "Apollo DN3000 19\" Monochrome", DN_FLAGS ) +COMP( 1988, dn3000, dn3500, 0, dn3000_15i, dn3500, apollo_state, dn3000, "Apollo", "Apollo DN3000", DN_FLAGS ) +COMP( 1988, dsp3000, dn3500, 0, dsp3000, dsp3500, apollo_state, dsp3000, "Apollo", "Apollo DSP3000", DSP_FLAGS ) +COMP( 1988, dn3000_19i, dn3500, 0, dn3000_19i, dn3500, apollo_state, dn3000, "Apollo", "Apollo DN3000 19\" Monochrome", DN_FLAGS ) -COMP( 1991, dn5500, dn3500, 0, dn5500_15i, dn3500, apollo_state, dn5500, "Apollo", "Apollo DN5500", MACHINE_NOT_WORKING ) -COMP( 1991, dsp5500, dn3500, 0, dsp5500, dsp3500, apollo_state,dsp5500,"Apollo", "Apollo DSP5500", MACHINE_NOT_WORKING ) -COMP( 1991, dn5500_19i, dn3500, 0, dn5500_19i, dn3500, apollo_state, dn5500, "Apollo", "Apollo DN5500 19\" Monochrome", MACHINE_NOT_WORKING ) +COMP( 1991, dn5500, dn3500, 0, dn5500_15i, dn3500, apollo_state, dn5500, "Apollo", "Apollo DN5500", MACHINE_NOT_WORKING ) +COMP( 1991, dsp5500, dn3500, 0, dsp5500, dsp3500, apollo_state, dsp5500, "Apollo", "Apollo DSP5500", MACHINE_NOT_WORKING ) +COMP( 1991, dn5500_19i, dn3500, 0, dn5500_19i, dn3500, apollo_state, dn5500, "Apollo", "Apollo DN5500 19\" Monochrome", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/apple1.cpp b/src/mame/drivers/apple1.cpp index b343274879f..18c8dc81fe4 100644 --- a/src/mame/drivers/apple1.cpp +++ b/src/mame/drivers/apple1.cpp @@ -585,7 +585,7 @@ static SLOT_INTERFACE_START(apple1_cards) SLOT_INTERFACE("cffa", A1BUS_CFFA) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( apple1, apple1_state ) +static MACHINE_CONFIG_START( apple1 ) MCFG_CPU_ADD(A1_CPU_TAG, M6502, 960000) // effective CPU speed MCFG_CPU_PROGRAM_MAP(apple1_map) @@ -623,5 +623,5 @@ ROM_START(apple1) ROM_LOAD("s2513.d2", 0x0000, 0x0200, CRC(a7e567fc) SHA1(b18aae0a2d4f92f5a7e22640719bbc4652f3f4ee)) // apple1.vid ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ -COMP( 1976, apple1, 0, 0, apple1, apple1, driver_device, 0, "Apple Computer", "Apple I", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1976, apple1, 0, 0, apple1, apple1, apple1_state, 0, "Apple Computer", "Apple I", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/apple2.cpp b/src/mame/drivers/apple2.cpp index 8cd77a1d54a..416e82e68dd 100644 --- a/src/mame/drivers/apple2.cpp +++ b/src/mame/drivers/apple2.cpp @@ -1316,7 +1316,7 @@ static SLOT_INTERFACE_START(apple2_cards) // SLOT_INTERFACE("magicmusician", A2BUS_MAGICMUSICIAN) /* Magic Musician Card */ SLOT_INTERFACE_END -static MACHINE_CONFIG_START( apple2_common, napple2_state ) +static MACHINE_CONFIG_START( apple2_common ) /* basic machine hardware */ MCFG_CPU_ADD(A2_CPU_TAG, M6502, 1021800) /* close to actual CPU frequency of 1.020484 MHz */ MCFG_CPU_PROGRAM_MAP(apple2_map) @@ -1495,6 +1495,17 @@ ROM_START(prav8m) ROM_LOAD ( "pravetz8m.f8", 0x3800, 0x0800, CRC(5bab0a46) SHA1(f6c0817ce37d2e2c43f482c339acaede0a73359b)) ROM_END +ROM_START(craft2p) + ROM_REGION(0x1000,"gfx1",0) + ROM_LOAD( "gc.bin", 0x000000, 0x001000, CRC(93e4a754) SHA1(25f5f5fd1cbd763d43362e80de3acc5b34a25963) ) + + ROM_REGION(0x4000,"maincpu",0) + // the d0 and e0 ROMs match the Unitron English ones, only f0 differs + ROM_LOAD ( "unitron_en.d0", 0x1000, 0x1000, CRC(24d73c7b) SHA1(d17a15868dc875c67061c95ec53a6b2699d3a425)) + ROM_LOAD ( "unitron.e0" , 0x2000, 0x1000, CRC(0d494efd) SHA1(a2fd1223a3ca0cfee24a6afe66ea3c4c144dd98e)) + ROM_LOAD ( "craftii-roms-f0-f7.bin", 0x3000, 0x1000, CRC(3f9dea08) SHA1(0e23bc884b8108675267d30b85b770066bdd94c9) ) +ROM_END + ROM_START(uniap2pt) ROM_REGION(0x1000,"gfx1",0) ROM_LOAD ( "unitron.chr", 0x0000, 0x1000, CRC(7fdd1af6) SHA1(2f4f90d90f2f3a8c1fbea304e1072780fb22e698)) @@ -1605,35 +1616,6 @@ ROM_START(am64) ROM_LOAD( "tk10.bin", 0x0800, 0x0800, CRC(a06c5b78) SHA1(27c5160b913e0f62120f384026d24b9f1acb6970) ) ROM_END -ROM_START( agat7 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS( 0, "v1", "Version 1" ) - ROMX_LOAD( "monitor7.rom", 0x3800, 0x0800, CRC(071fda0b) SHA1(6089d46b7addc4e2ae096b2cf81124681bd2b27a), ROM_BIOS(1)) - ROM_SYSTEM_BIOS( 1, "v2", "Version 2" ) - ROMX_LOAD( "agat_pzu.bin", 0x3800, 0x0800, CRC(c605163d) SHA1(b30fd1b264a347a9de69bb9e3105483254994d06), ROM_BIOS(2)) - // Floppy controllers - ROM_LOAD( "shugart7.rom", 0x4500, 0x0100, CRC(c6e4850c) SHA1(71626d3d2d4bbeeac2b77585b45a5566d20b8d34)) - ROM_LOAD( "teac.rom", 0x4500, 0x0100, CRC(94266928) SHA1(5d369bad6cdd6a70b0bb16480eba69640de87a2e)) - ROM_REGION(0x0800,"gfx1",0) - ROM_LOAD( "agathe7.fnt", 0x0000, 0x0800, CRC(fcffb490) SHA1(0bda26ae7ad75f74da835c0cf6d9928f9508844c)) -ROM_END - -ROM_START( agat9 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS( 0, "v1", "Version 1" ) - ROMX_LOAD( "monitor9.rom", 0x3800, 0x0800, CRC(b90bb66a) SHA1(02217f0785913b41fc25eabcff70fa814799c69a), ROM_BIOS(1)) - ROM_SYSTEM_BIOS( 1, "v2", "Version 2" ) - ROMX_LOAD( "monitor91.rom", 0x3800, 0x0800, CRC(89b10fc1) SHA1(7fe1ede32b5525255f82597ca9c3c2034c5996fa), ROM_BIOS(2)) - // Floppy controllers - ROM_LOAD( "shugart9.rom", 0x4500, 0x0100, CRC(964a0ce2) SHA1(bf955189ebffe874c20ef649a3db8177dc16af61)) - ROM_LOAD( "teac.rom", 0x4500, 0x0100, CRC(94266928) SHA1(5d369bad6cdd6a70b0bb16480eba69640de87a2e)) - // Printer card - ROM_LOAD( "cm6337.rom", 0x8000, 0x0100, CRC(73be16ec) SHA1(ead1abbef5b86f1def0b956147d5b267f0d544b5)) - ROM_LOAD( "cm6337p.rom", 0x8100, 0x0800, CRC(9120f11f) SHA1(78107653491e88d5ea12e07367c4c028771a4aca)) - ROM_REGION(0x0800,"gfx1",0) - ROM_LOAD( "agathe9.fnt", 0x0000, 0x0800, CRC(8c55c984) SHA1(5a5a202000576b88b4ae2e180dd2d1b9b337b594)) -ROM_END - ROM_START(ivelultr) ROM_REGION(0x2000,"gfx1",0) ROM_LOAD( "ultra.chr", 0x0000, 0x1000,CRC(fed62c85) SHA1(479fb3f38a3f7332cef2e8c4856871afe8dc6017)) @@ -1671,23 +1653,22 @@ ROM_START(laba2p) /* II Plus clone with on-board Disk II controller and Videx-co ROM_END #endif -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1977, apple2, 0, 0, apple2, apple2, driver_device, 0, "Apple Computer", "Apple ][", MACHINE_SUPPORTS_SAVE ) -COMP( 1979, apple2p, apple2, 0, apple2p, apple2p, driver_device, 0, "Apple Computer", "Apple ][+", MACHINE_SUPPORTS_SAVE ) -COMP( 1980, apple2jp, apple2, 0, apple2jp, apple2p, driver_device, 0, "Apple Computer", "Apple ][ J-Plus", MACHINE_SUPPORTS_SAVE ) -COMP( 198?, elppa, apple2, 0, apple2p, apple2p, driver_device, 0, "Victor do Brasil", "Elppa II+", MACHINE_SUPPORTS_SAVE ) -COMP( 1982, microeng, apple2, 0, apple2p, apple2p, driver_device, 0, "Spectrum Eletronica (SCOPUS)", "Micro Engenho", MACHINE_SUPPORTS_SAVE ) -COMP( 1982, maxxi, apple2, 0, apple2p, apple2p, driver_device, 0, "Polymax", "Maxxi", MACHINE_SUPPORTS_SAVE ) -COMP( 1982, prav82, apple2, 0, apple2p, apple2p, driver_device, 0, "Pravetz", "Pravetz 82", MACHINE_SUPPORTS_SAVE ) -COMP( 1982, ace100, apple2, 0, apple2, apple2p, driver_device, 0, "Franklin Computer", "Franklin Ace 100", MACHINE_SUPPORTS_SAVE ) -COMP( 1982, uniap2en, apple2, 0, apple2p, apple2p, driver_device, 0, "Unitron Eletronica", "Unitron AP II (in English)", MACHINE_SUPPORTS_SAVE ) -COMP( 1982, uniap2pt, apple2, 0, apple2p, apple2p, driver_device, 0, "Unitron Eletronica", "Unitron AP II (in Brazilian Portuguese)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, uniap2ti, apple2, 0, apple2p, apple2p, driver_device, 0, "Unitron Eletronica", "Unitron AP II+ (Teclado Inteligente)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, agat7, apple2, 0, apple2p, apple2p, driver_device, 0, "Agat", "Agat-7", MACHINE_NOT_WORKING) // disk controller ROM JSRs to $FCA8 which is a delay on apple II, illegal instruction crash here :( +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME +COMP( 1977, apple2, 0, 0, apple2, apple2, napple2_state, 0, "Apple Computer", "Apple ][", MACHINE_SUPPORTS_SAVE ) +COMP( 1979, apple2p, apple2, 0, apple2p, apple2p, napple2_state, 0, "Apple Computer", "Apple ][+", MACHINE_SUPPORTS_SAVE ) +COMP( 1980, apple2jp, apple2, 0, apple2jp, apple2p, napple2_state, 0, "Apple Computer", "Apple ][ J-Plus", MACHINE_SUPPORTS_SAVE ) +COMP( 198?, elppa, apple2, 0, apple2p, apple2p, napple2_state, 0, "Victor do Brasil", "Elppa II+", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, microeng, apple2, 0, apple2p, apple2p, napple2_state, 0, "Spectrum Eletronica (SCOPUS)", "Micro Engenho", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, maxxi, apple2, 0, apple2p, apple2p, napple2_state, 0, "Polymax", "Maxxi", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, prav82, apple2, 0, apple2p, apple2p, napple2_state, 0, "Pravetz", "Pravetz 82", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, ace100, apple2, 0, apple2, apple2p, napple2_state, 0, "Franklin Computer", "Franklin Ace 100", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, uniap2en, apple2, 0, apple2p, apple2p, napple2_state, 0, "Unitron Eletronica", "Unitron AP II (in English)", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, uniap2pt, apple2, 0, apple2p, apple2p, napple2_state, 0, "Unitron Eletronica", "Unitron AP II (in Brazilian Portuguese)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, uniap2ti, apple2, 0, apple2p, apple2p, napple2_state, 0, "Unitron Eletronica", "Unitron AP II+ (Teclado Inteligente)", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, craft2p, apple2, 0, apple2p, apple2p, napple2_state, 0, "Craft", "Craft II+", MACHINE_SUPPORTS_SAVE ) // reverse font direction -\/ -COMP( 1984, ivelultr, apple2, 0, apple2p, apple2p, driver_device, 0, "Ivasim", "Ivel Ultra", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, agat9, apple2, 0, apple2p, apple2p, driver_device, 0, "Agat", "Agat-9", MACHINE_NOT_WORKING) -COMP( 1985, prav8m, apple2, 0, apple2p, apple2p, driver_device, 0, "Pravetz", "Pravetz 8M", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, space84, apple2, 0, space84, apple2p, driver_device, 0, "ComputerTechnik/IBS", "Space 84", MACHINE_NOT_WORKING ) -COMP( 1985, am64, apple2, 0, space84, apple2p, driver_device, 0, "ASEM", "AM 64", MACHINE_SUPPORTS_SAVE ) -//COMP( 19??, laba2p, apple2, 0, laba2p, apple2p, driver_device, 0, "", "Lab equipment Apple II Plus clone", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, ivelultr, apple2, 0, apple2p, apple2p, napple2_state, 0, "Ivasim", "Ivel Ultra", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, prav8m, apple2, 0, apple2p, apple2p, napple2_state, 0, "Pravetz", "Pravetz 8M", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, space84, apple2, 0, space84, apple2p, napple2_state, 0, "ComputerTechnik/IBS", "Space 84", MACHINE_NOT_WORKING ) +COMP( 1985, am64, apple2, 0, space84, apple2p, napple2_state, 0, "ASEM", "AM 64", MACHINE_SUPPORTS_SAVE ) +//COMP( 19??, laba2p, apple2, 0, laba2p, apple2p, napple2_state, 0, "", "Lab equipment Apple II Plus clone", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp index c21e738d01c..c1e415969bf 100644 --- a/src/mame/drivers/apple2e.cpp +++ b/src/mame/drivers/apple2e.cpp @@ -1961,35 +1961,35 @@ READ8_MEMBER(apple2e_state::c100_int_bank_r) { return read_int_rom(space, 0x410 WRITE8_MEMBER(apple2e_state::c100_w) { write_slot_rom(space, 1, offset, data); } READ8_MEMBER(apple2e_state::c300_r) { return read_slot_rom(space, 3, offset); } -READ8_MEMBER(apple2e_state::c300_int_r) -{ +READ8_MEMBER(apple2e_state::c300_int_r) +{ if (!m_slotc3rom) { m_intc8rom = true; update_slotrom_banks(); } - return read_int_rom(space, 0x300, offset); + return read_int_rom(space, 0x300, offset); } -READ8_MEMBER(apple2e_state::c300_int_bank_r) -{ +READ8_MEMBER(apple2e_state::c300_int_bank_r) +{ if (!m_slotc3rom) { m_intc8rom = true; update_slotrom_banks(); } - return read_int_rom(space, 0x4300, offset); + return read_int_rom(space, 0x4300, offset); } -WRITE8_MEMBER(apple2e_state::c300_w) -{ +WRITE8_MEMBER(apple2e_state::c300_w) +{ if (!m_slotc3rom) { m_intc8rom = true; update_slotrom_banks(); } - write_slot_rom(space, 3, offset, data); + write_slot_rom(space, 3, offset, data); } READ8_MEMBER(apple2e_state::c400_r) { return read_slot_rom(space, 4, offset); } READ8_MEMBER(apple2e_state::c400_int_r) @@ -3412,7 +3412,7 @@ static SLOT_INTERFACE_START(apple2eaux_cards) SLOT_INTERFACE("rw3", A2EAUX_RAMWORKS3) /* Applied Engineering RamWorks III */ SLOT_INTERFACE_END -static MACHINE_CONFIG_START( apple2e, apple2e_state ) +static MACHINE_CONFIG_START( apple2e ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1021800) /* close to actual CPU frequency of 1.020484 MHz */ MCFG_CPU_PROGRAM_MAP(apple2e_map) @@ -4000,23 +4000,23 @@ ROM_START(apple2cp) ROM_LOAD( "341-0132-d.e12", 0x000, 0x800, CRC(c506efb9) SHA1(8e14e85c645187504ec9d162b3ea614a0c421d32) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1983, apple2e, 0, apple2, apple2e, apple2e, driver_device, 0, "Apple Computer", "Apple //e", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, apple2euk,apple2e, 0, apple2e, apple2euk,driver_device, 0, "Apple Computer", "Apple //e (UK)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, apple2ees,apple2e, 0, apple2e, apple2ees,driver_device, 0, "Apple Computer", "Apple //e (Spain)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, mprof3, apple2e, 0, mprof3, apple2e, driver_device, 0, "Multitech", "Microprofessor III", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -COMP( 1985, apple2ee, apple2e, 0, apple2ee, apple2e, driver_device, 0, "Apple Computer", "Apple //e (enhanced)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, apple2eeuk,apple2e, 0, apple2ee, apple2euk, driver_device,0, "Apple Computer", "Apple //e (enhanced, UK)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, apple2eefr,apple2e, 0, apple2ee, apple2efr, driver_device,0, "Apple Computer", "Apple //e (enhanced, France)", MACHINE_SUPPORTS_SAVE ) -COMP( 1987, apple2ep, apple2e, 0, apple2ep, apple2ep, driver_device, 0, "Apple Computer", "Apple //e (Platinum)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, apple2c, 0, apple2, apple2c, apple2c, driver_device, 0, "Apple Computer", "Apple //c" , MACHINE_SUPPORTS_SAVE ) -COMP( 1985?,spectred, apple2e, 0, spectred, apple2e, driver_device, 0, "Scopus/Spectrum", "Spectrum ED" , MACHINE_SUPPORTS_SAVE ) -COMP( 1986, tk3000, apple2c, 0, tk3000, apple2e, driver_device, 0, "Microdigital", "TK3000//e" , MACHINE_SUPPORTS_SAVE ) -COMP( 1989, prav8c, apple2e, 0, apple2e, apple2e, driver_device, 0, "Pravetz", "Pravetz 8C", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -COMP( 1987, laser128, apple2c, 0, laser128, apple2e, driver_device, 0, "Video Technology", "Laser 128 (version 4.2)", MACHINE_SUPPORTS_SAVE ) -COMP( 1988, las128ex, apple2c, 0, laser128, apple2e, driver_device, 0, "Video Technology", "Laser 128ex (version 4.5)", MACHINE_SUPPORTS_SAVE ) -COMP( 1988, las128e2, apple2c, 0, laser128ex2, apple2e, driver_device, 0, "Video Technology", "Laser 128ex2 (version 6.1)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, apple2c0, apple2c, 0, apple2c_iwm, apple2c, driver_device, 0, "Apple Computer", "Apple //c (UniDisk 3.5)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, apple2c3, apple2c, 0, apple2c_mem, apple2c, driver_device, 0, "Apple Computer", "Apple //c (Original Memory Expansion)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, apple2c4, apple2c, 0, apple2c_mem, apple2c, driver_device, 0, "Apple Computer", "Apple //c (rev 4)", MACHINE_SUPPORTS_SAVE ) -COMP( 1988, apple2cp, apple2c, 0, apple2cp, apple2c, driver_device, 0, "Apple Computer", "Apple //c Plus", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1983, apple2e, 0, apple2, apple2e, apple2e, apple2e_state, 0, "Apple Computer", "Apple //e", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, apple2euk,apple2e, 0, apple2e, apple2euk, apple2e_state, 0, "Apple Computer", "Apple //e (UK)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, apple2ees,apple2e, 0, apple2e, apple2ees, apple2e_state, 0, "Apple Computer", "Apple //e (Spain)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, mprof3, apple2e, 0, mprof3, apple2e, apple2e_state, 0, "Multitech", "Microprofessor III", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1985, apple2ee, apple2e, 0, apple2ee, apple2e, apple2e_state, 0, "Apple Computer", "Apple //e (enhanced)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, apple2eeuk,apple2e, 0, apple2ee, apple2euk, apple2e_state, 0, "Apple Computer", "Apple //e (enhanced, UK)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, apple2eefr,apple2e, 0, apple2ee, apple2efr, apple2e_state, 0, "Apple Computer", "Apple //e (enhanced, France)", MACHINE_SUPPORTS_SAVE ) +COMP( 1987, apple2ep, apple2e, 0, apple2ep, apple2ep, apple2e_state, 0, "Apple Computer", "Apple //e (Platinum)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, apple2c, 0, apple2, apple2c, apple2c, apple2e_state, 0, "Apple Computer", "Apple //c" , MACHINE_SUPPORTS_SAVE ) +COMP( 1985?,spectred, apple2e, 0, spectred, apple2e, apple2e_state, 0, "Scopus/Spectrum", "Spectrum ED" , MACHINE_SUPPORTS_SAVE ) +COMP( 1986, tk3000, apple2c, 0, tk3000, apple2e, apple2e_state, 0, "Microdigital", "TK3000//e" , MACHINE_SUPPORTS_SAVE ) +COMP( 1989, prav8c, apple2e, 0, apple2e, apple2e, apple2e_state, 0, "Pravetz", "Pravetz 8C", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1987, laser128, apple2c, 0, laser128, apple2e, apple2e_state, 0, "Video Technology", "Laser 128 (version 4.2)", MACHINE_SUPPORTS_SAVE ) +COMP( 1988, las128ex, apple2c, 0, laser128, apple2e, apple2e_state, 0, "Video Technology", "Laser 128ex (version 4.5)", MACHINE_SUPPORTS_SAVE ) +COMP( 1988, las128e2, apple2c, 0, laser128ex2, apple2e, apple2e_state, 0, "Video Technology", "Laser 128ex2 (version 6.1)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, apple2c0, apple2c, 0, apple2c_iwm, apple2c, apple2e_state, 0, "Apple Computer", "Apple //c (UniDisk 3.5)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, apple2c3, apple2c, 0, apple2c_mem, apple2c, apple2e_state, 0, "Apple Computer", "Apple //c (Original Memory Expansion)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, apple2c4, apple2c, 0, apple2c_mem, apple2c, apple2e_state, 0, "Apple Computer", "Apple //c (rev 4)", MACHINE_SUPPORTS_SAVE ) +COMP( 1988, apple2cp, apple2c, 0, apple2cp, apple2c, apple2e_state, 0, "Apple Computer", "Apple //c Plus", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp index 251c754b77c..712c4de94b5 100644 --- a/src/mame/drivers/apple2gs.cpp +++ b/src/mame/drivers/apple2gs.cpp @@ -307,7 +307,7 @@ static SLOT_INTERFACE_START(apple2_cards) SLOT_INTERFACE("hsscsi", A2BUS_HSSCSI) /* Apple II High-Speed SCSI Card */ SLOT_INTERFACE_END -static MACHINE_CONFIG_START( apple2gs, apple2gs_state ) +static MACHINE_CONFIG_START( apple2gs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", G65816, APPLE2GS_14M/5) MCFG_CPU_PROGRAM_MAP(apple2gs_map) @@ -579,10 +579,10 @@ ROM_START(apple2gsr0p2) // 3/10/1986 Cortland prototype, boots as "Apple //'ing ROM_LOAD( "341-0132-d.e12", 0x000, 0x800, CRC(c506efb9) SHA1(8e14e85c645187504ec9d162b3ea614a0c421d32) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1989, apple2gs, 0, apple2, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03)", MACHINE_SUPPORTS_SAVE ) -COMP( 198?, apple2gsr3p, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 prototype)", MACHINE_NOT_WORKING ) -COMP( 1987, apple2gsr1, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM01)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, apple2gsr0, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, apple2gsr0p, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 6/19/1986)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, apple2gsr0p2, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 3/10/1986)", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1989, apple2gs, 0, apple2, apple2gs, apple2gs, apple2gs_state, 0, "Apple Computer", "Apple IIgs (ROM03)", MACHINE_SUPPORTS_SAVE ) +COMP( 198?, apple2gsr3p, apple2gs, 0, apple2gs, apple2gs, apple2gs_state, 0, "Apple Computer", "Apple IIgs (ROM03 prototype)", MACHINE_NOT_WORKING ) +COMP( 1987, apple2gsr1, apple2gs, 0, apple2gsr1, apple2gs, apple2gs_state, 0, "Apple Computer", "Apple IIgs (ROM01)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, apple2gsr0, apple2gs, 0, apple2gsr1, apple2gs, apple2gs_state, 0, "Apple Computer", "Apple IIgs (ROM00)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, apple2gsr0p, apple2gs, 0, apple2gsr1, apple2gs, apple2gs_state, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 6/19/1986)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, apple2gsr0p2, apple2gs, 0, apple2gsr1, apple2gs, apple2gs_state, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 3/10/1986)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/apple3.cpp b/src/mame/drivers/apple3.cpp index d78f7c6e80b..0885ce7e47a 100644 --- a/src/mame/drivers/apple3.cpp +++ b/src/mame/drivers/apple3.cpp @@ -52,7 +52,7 @@ FLOPPY_FORMATS_MEMBER( apple3_state::floppy_formats ) FLOPPY_A216S_FORMAT, FLOPPY_RWTS18_FORMAT, FLOPPY_EDD_FORMAT FLOPPY_FORMATS_END -static MACHINE_CONFIG_START( apple3, apple3_state ) +static MACHINE_CONFIG_START( apple3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 2000000) /* 2 MHz */ MCFG_M6502_SYNC_CALLBACK(WRITELINE(apple3_state, apple3_sync_w)) @@ -353,5 +353,5 @@ ROM_START(apple3) ROM_LOAD( "apple3.rom", 0x0000, 0x1000, CRC(55e8eec9) SHA1(579ee4cd2b208d62915a0aa482ddc2744ff5e967)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1980, apple3, 0, 0, apple3, apple3, apple3_state, apple3, "Apple Computer", "Apple ///", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1980, apple3, 0, 0, apple3, apple3, apple3_state, apple3, "Apple Computer", "Apple ///", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/applix.cpp b/src/mame/drivers/applix.cpp index 04316b8a2a3..be6df17a063 100644 --- a/src/mame/drivers/applix.cpp +++ b/src/mame/drivers/applix.cpp @@ -166,7 +166,7 @@ private: required_device m_via; required_device m_centronics; required_device m_cent_data_out; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_ldac; @@ -475,7 +475,7 @@ static ADDRESS_MAP_START( subcpu_io, AS_IO, 8, applix_state ) AM_RANGE(0x10, 0x17) AM_READWRITE(port10_r,port10_w) //IRQ AM_RANGE(0x18, 0x1f) AM_READWRITE(port18_r,port18_w) //data&command AM_RANGE(0x20, 0x27) AM_MIRROR(0x18) AM_READWRITE(port20_r,port20_w) //SCSI NCR5380 - AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE("fdc", wd1772_t, read, write) //FDC + AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE("fdc", wd1772_device, read, write) //FDC AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_READWRITE(port60_r,port60_w) //anotherZ80SCC ADDRESS_MAP_END @@ -832,7 +832,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(applix_state::cass_timer) } } -static MACHINE_CONFIG_START( applix, applix_state ) +static MACHINE_CONFIG_START( applix ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 7500000) MCFG_CPU_PROGRAM_MAP(applix_mem) @@ -940,7 +940,7 @@ DRIVER_INIT_MEMBER(applix_state, applix) /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1986, applix, 0, 0, applix, applix, applix_state, applix, "Applix Pty Ltd", "Applix 1616", 0 ) diff --git a/src/mame/drivers/appoooh.cpp b/src/mame/drivers/appoooh.cpp index 826102a3001..15c24d0ca34 100644 --- a/src/mame/drivers/appoooh.cpp +++ b/src/mame/drivers/appoooh.cpp @@ -416,7 +416,7 @@ INTERRUPT_GEN_MEMBER(appoooh_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( appoooh_common, appoooh_state ) +static MACHINE_CONFIG_START( appoooh_common ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,18432000/6) /* ??? the main xtal is 18.432 MHz */ @@ -439,7 +439,7 @@ static MACHINE_CONFIG_START( appoooh_common, appoooh_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(appoooh_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S64_4B) /* 6KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -611,6 +611,6 @@ DRIVER_INIT_MEMBER(appoooh_state,robowresb) * *************************************/ -GAME( 1984, appoooh, 0, appoooh, appoooh, driver_device, 0, ROT0, "Sanritsu / Sega", "Appoooh", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, robowres, 0, robowrese,robowres, driver_device, 0, ROT0, "Sanritsu / Sega", "Robo Wres 2001", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, robowresb, robowres, robowres, robowres, appoooh_state, robowresb,ROT0, "bootleg", "Robo Wres 2001 (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, appoooh, 0, appoooh, appoooh, appoooh_state, 0, ROT0, "Sanritsu / Sega", "Appoooh", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, robowres, 0, robowrese,robowres, appoooh_state, 0, ROT0, "Sanritsu / Sega", "Robo Wres 2001", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, robowresb, robowres, robowres, robowres, appoooh_state, robowresb, ROT0, "bootleg", "Robo Wres 2001 (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/apricot.cpp b/src/mame/drivers/apricot.cpp index 8926e21e3e8..b995891fad5 100644 --- a/src/mame/drivers/apricot.cpp +++ b/src/mame/drivers/apricot.cpp @@ -102,7 +102,7 @@ private: required_device m_sio; required_device m_rs232; required_device m_centronics; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_palette; @@ -327,7 +327,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( apricot_io, AS_IO, 16, apricot_state ) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE8("ic31", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x40, 0x47) AM_DEVREADWRITE8("ic68", wd2797_t, read, write, 0x00ff) + AM_RANGE(0x40, 0x47) AM_DEVREADWRITE8("ic68", wd2797_device, read, write, 0x00ff) AM_RANGE(0x48, 0x4f) AM_DEVREADWRITE8("ic17", i8255_device, read, write, 0x00ff) AM_RANGE(0x50, 0x51) AM_MIRROR(0x06) AM_DEVWRITE8("ic7", sn76489_device, write, 0x00ff) AM_RANGE(0x58, 0x5f) AM_DEVREADWRITE8("ic16", pit8253_device, read, write, 0x00ff) @@ -347,7 +347,7 @@ ADDRESS_MAP_END // MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( apricot, apricot_state ) +static MACHINE_CONFIG_START( apricot ) // main cpu MCFG_CPU_ADD("ic91", I8086, XTAL_15MHz / 3) MCFG_CPU_PROGRAM_MAP(apricot_mem) @@ -487,5 +487,5 @@ ROM_END //************************************************************************** // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1983, apricot, 0, 0, apricot, 0, driver_device, 0, "ACT", "Apricot PC", 0 ) -COMP( 1984, apricotxi, apricot, 0, apricotxi, 0, driver_device, 0, "ACT", "Apricot Xi", 0 ) +COMP( 1983, apricot, 0, 0, apricot, 0, apricot_state, 0, "ACT", "Apricot PC", 0 ) +COMP( 1984, apricotxi, apricot, 0, apricotxi, 0, apricot_state, 0, "ACT", "Apricot Xi", 0 ) diff --git a/src/mame/drivers/apricotf.cpp b/src/mame/drivers/apricotf.cpp index ea689b1ea29..b342ab66c0b 100644 --- a/src/mame/drivers/apricotf.cpp +++ b/src/mame/drivers/apricotf.cpp @@ -83,7 +83,7 @@ public: required_device m_maincpu; required_device m_ctc; required_device m_sio; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_centronics; @@ -268,7 +268,7 @@ static ADDRESS_MAP_START( act_f1_io, AS_IO, 16, f1_state ) AM_RANGE(0x0010, 0x0017) AM_DEVREADWRITE8(Z80CTC_TAG, z80ctc_device, read, write, 0x00ff) AM_RANGE(0x0020, 0x0027) AM_DEVREADWRITE8(Z80SIO2_TAG, z80sio2_device, ba_cd_r, ba_cd_w, 0x00ff) // AM_RANGE(0x0030, 0x0031) AM_WRITE8(ctc_ack_w, 0x00ff) - AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8(WD2797_TAG, wd2797_t, read, write, 0x00ff) + AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8(WD2797_TAG, wd2797_device, read, write, 0x00ff) // AM_RANGE(0x01e0, 0x01ff) winchester ADDRESS_MAP_END @@ -329,7 +329,7 @@ SLOT_INTERFACE_END // MACHINE_CONFIG( act_f1 ) //------------------------------------------------- -static MACHINE_CONFIG_START( act_f1, f1_state ) +static MACHINE_CONFIG_START( act_f1 ) /* basic machine hardware */ MCFG_CPU_ADD(I8086_TAG, I8086, XTAL_14MHz/4) MCFG_CPU_PROGRAM_MAP(act_f1_mem) @@ -411,8 +411,8 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1984, f1, 0, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1984, f1e, f1, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F1e", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1984, f2, f1, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1985, f10, f1, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, f1, 0, 0, act_f1, act, f1_state, 0, "ACT", "Apricot F1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1984, f1e, f1, 0, act_f1, act, f1_state, 0, "ACT", "Apricot F1e", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1984, f2, f1, 0, act_f1, act, f1_state, 0, "ACT", "Apricot F2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1985, f10, f1, 0, act_f1, act, f1_state, 0, "ACT", "Apricot F10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/apricotp.cpp b/src/mame/drivers/apricotp.cpp index e80068a7f2a..07e4fed6dcb 100644 --- a/src/mame/drivers/apricotp.cpp +++ b/src/mame/drivers/apricotp.cpp @@ -112,7 +112,7 @@ public: required_device m_pic; required_device m_pit; required_device m_sio; - required_device m_fdc; + required_device m_fdc; required_device m_crtc; required_device m_ram; required_device m_floppy0; @@ -433,7 +433,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( fp_io, AS_IO, 16, fp_state ) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000, 0x007) AM_DEVREADWRITE8(WD2797_TAG, wd2797_t, read, write, 0x00ff) + AM_RANGE(0x000, 0x007) AM_DEVREADWRITE8(WD2797_TAG, wd2797_device, read, write, 0x00ff) AM_RANGE(0x008, 0x00f) AM_DEVREADWRITE8(I8253A5_TAG, pit8253_device, read, write, 0x00ff) AM_RANGE(0x018, 0x01f) AM_DEVREADWRITE8(Z80SIO0_TAG, z80sio0_device, ba_cd_r, ba_cd_w, 0x00ff) AM_RANGE(0x020, 0x021) AM_DEVWRITE8("cent_data_out", output_latch_device, write, 0x00ff) @@ -574,7 +574,7 @@ SLOT_INTERFACE_END // MACHINE_CONFIG( fp ) //------------------------------------------------- -static MACHINE_CONFIG_START( fp, fp_state ) +static MACHINE_CONFIG_START( fp ) /* basic machine hardware */ MCFG_CPU_ADD(I8086_TAG, I8086, XTAL_15MHz/3) MCFG_CPU_PROGRAM_MAP(fp_mem) @@ -621,8 +621,8 @@ static MACHINE_CONFIG_START( fp, fp_state ) MCFG_DEVICE_ADD(APRICOT_KEYBOARD_TAG, APRICOT_KEYBOARD, 0) MCFG_DEVICE_ADD(I8237_TAG, AM9517A, 250000) MCFG_I8237_OUT_EOP_CB(DEVWRITELINE(I8259A_TAG, pic8259_device, ir7_w)) - MCFG_I8237_IN_IOR_1_CB(DEVREAD8(WD2797_TAG, wd_fdc_t, data_r)) - MCFG_I8237_OUT_IOW_1_CB(DEVWRITE8(WD2797_TAG, wd_fdc_t, data_w)) + MCFG_I8237_IN_IOR_1_CB(DEVREAD8(WD2797_TAG, wd_fdc_device_base, data_r)) + MCFG_I8237_OUT_IOW_1_CB(DEVWRITE8(WD2797_TAG, wd_fdc_device_base, data_w)) MCFG_PIC8259_ADD(I8259A_TAG, INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0), VCC, NOOP) MCFG_DEVICE_ADD(I8253A5_TAG, PIT8253, 0) @@ -688,5 +688,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1984, fp, 0, 0, fp, fp, driver_device, 0, "ACT", "Apricot Portable / FP", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, fp, 0, 0, fp, fp, fp_state, 0, "ACT", "Apricot Portable / FP", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/aquarium.cpp b/src/mame/drivers/aquarium.cpp index dd76b6167f4..3f56ea94131 100644 --- a/src/mame/drivers/aquarium.cpp +++ b/src/mame/drivers/aquarium.cpp @@ -322,7 +322,7 @@ void aquarium_state::machine_reset() m_aquarium_snd_ack = 0; } -static MACHINE_CONFIG_START( aquarium, aquarium_state ) +static MACHINE_CONFIG_START( aquarium ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) // clock not verified on pcb @@ -358,7 +358,7 @@ static MACHINE_CONFIG_START( aquarium, aquarium_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) // pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) // pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) MACHINE_CONFIG_END diff --git a/src/mame/drivers/aquarius.cpp b/src/mame/drivers/aquarius.cpp index 987e23c69d0..06eaa368fb9 100644 --- a/src/mame/drivers/aquarius.cpp +++ b/src/mame/drivers/aquarius.cpp @@ -347,7 +347,7 @@ GFXDECODE_END MACHINE DRIVERS ***************************************************************************/ -static MACHINE_CONFIG_START( aquarius, aquarius_state ) +static MACHINE_CONFIG_START( aquarius ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) // ??? MCFG_CPU_PROGRAM_MAP(aquarius_mem) @@ -420,6 +420,6 @@ ROM_END GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, aquarius, 0, 0, aquarius, aquarius, aquarius_state, aquarius, "Mattel", "Aquarius (NTSC)", 0 ) -//COMP( 1984, aquariu2, aquarius, 0, aquarius, aquarius, driver_device, 0, "Mattel", "Aquarius II", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, aquarius, 0, 0, aquarius, aquarius, aquarius_state, aquarius, "Mattel", "Aquarius (NTSC)", 0 ) +//COMP( 1984, aquariu2, aquarius, 0, aquarius, aquarius, aquarius_state, 0, "Mattel", "Aquarius II", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/arabian.cpp b/src/mame/drivers/arabian.cpp index fa511214a28..bff3c351427 100644 --- a/src/mame/drivers/arabian.cpp +++ b/src/mame/drivers/arabian.cpp @@ -336,7 +336,7 @@ void arabian_state::machine_reset() m_video_control = 0; } -static MACHINE_CONFIG_START( arabian, arabian_state ) +static MACHINE_CONFIG_START( arabian ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_OSC/4) @@ -422,5 +422,5 @@ ROM_END * *************************************/ -GAME( 1983, arabian, 0, arabian, arabian, driver_device, 0, ROT270, "Sun Electronics", "Arabian", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, arabiana, arabian, arabian, arabiana, driver_device, 0, ROT270, "Sun Electronics (Atari license)", "Arabian (Atari)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, arabian, 0, arabian, arabian, arabian_state, 0, ROT270, "Sun Electronics", "Arabian", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, arabiana, arabian, arabian, arabiana, arabian_state, 0, ROT270, "Sun Electronics (Atari license)", "Arabian (Atari)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/arachnid.cpp b/src/mame/drivers/arachnid.cpp index 8e3e2506e55..a84b40cc2e6 100644 --- a/src/mame/drivers/arachnid.cpp +++ b/src/mame/drivers/arachnid.cpp @@ -414,10 +414,10 @@ void arachnid_state::machine_start() ***************************************************************************/ /*------------------------------------------------- - MACHINE_CONFIG_START( arachnid, arachnid_state ) + MACHINE_CONFIG_START( arachnid ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( arachnid, arachnid_state ) +static MACHINE_CONFIG_START( arachnid ) // basic machine hardware MCFG_CPU_ADD(M6809_TAG, M6809, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(arachnid_map) @@ -469,5 +469,5 @@ ROM_END SYSTEM DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -GAME( 1990, arac6000, 0, arachnid, arachnid, driver_device, 0, ROT0, "Arachnid", "Super Six Plus II English Mark Darts", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +GAME( 1990, arac6000, 0, arachnid, arachnid, arachnid_state, 0, ROT0, "Arachnid", "Super Six Plus II English Mark Darts", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/arcadecl.cpp b/src/mame/drivers/arcadecl.cpp index 0c6b488ea7a..b0236430897 100644 --- a/src/mame/drivers/arcadecl.cpp +++ b/src/mame/drivers/arcadecl.cpp @@ -317,7 +317,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( arcadecl, arcadecl_state ) +static MACHINE_CONFIG_START( arcadecl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK) @@ -351,7 +351,7 @@ static MACHINE_CONFIG_START( arcadecl, arcadecl_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", MASTER_CLOCK/4/3, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", MASTER_CLOCK/4/3, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -400,5 +400,5 @@ ROM_END * *************************************/ -GAME( 1992, arcadecl, 0, arcadecl, arcadecl, driver_device, 0, ROT0, "Atari Games", "Arcade Classics (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sparkz, 0, sparkz, sparkz, driver_device, 0, ROT0, "Atari Games", "Sparkz (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, arcadecl, 0, arcadecl, arcadecl, arcadecl_state, 0, ROT0, "Atari Games", "Arcade Classics (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sparkz, 0, sparkz, sparkz, arcadecl_state, 0, ROT0, "Atari Games", "Sparkz (prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/arcadia.cpp b/src/mame/drivers/arcadia.cpp index 905f0b0b70d..3238f72a48c 100644 --- a/src/mame/drivers/arcadia.cpp +++ b/src/mame/drivers/arcadia.cpp @@ -473,7 +473,7 @@ static SLOT_INTERFACE_START(arcadia_cart) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( arcadia, arcadia_state ) +static MACHINE_CONFIG_START( arcadia ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 3580000/4) /* 0.895 MHz */ MCFG_CPU_PROGRAM_MAP(arcadia_mem) @@ -810,7 +810,7 @@ DRIVER_INIT_MEMBER(arcadia_state,arcadia) } -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ CONS(1983, advsnha, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Advision", "Advision Home Arcade", MACHINE_IMPERFECT_SOUND ) /* France */ CONS(1982, bndarc, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Bandai", "Arcadia", MACHINE_IMPERFECT_SOUND ) /* Japan */ CONS(1982, arcadia, 0, 0, arcadia, arcadia, arcadia_state, arcadia, "Emerson", "Arcadia 2001", MACHINE_IMPERFECT_SOUND ) /* U.S.A. */ diff --git a/src/mame/drivers/argo.cpp b/src/mame/drivers/argo.cpp index 97e535fe435..8288c247d1c 100644 --- a/src/mame/drivers/argo.cpp +++ b/src/mame/drivers/argo.cpp @@ -82,7 +82,7 @@ READ8_MEMBER(argo_state::argo_io_r) { case 0xA1: // keyboard char kbdrow[6]; - sprintf(kbdrow,"X%X",offset>>8); + sprintf(kbdrow,"X%X",uint8_t(offset>>8)); return ioport(kbdrow)->read(); case 0xE8: // wants bit 4 low then high @@ -342,7 +342,7 @@ uint32_t argo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, return 0; } -static MACHINE_CONFIG_START( argo, argo_state ) +static MACHINE_CONFIG_START( argo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3500000) MCFG_CPU_PROGRAM_MAP(argo_mem) @@ -375,5 +375,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, argo, 0, 0, argo, argo, argo_state, argo, "", "Argo", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1986, argo, 0, 0, argo, argo, argo_state, argo, "", "Argo", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/argox.cpp b/src/mame/drivers/argox.cpp index 432eba83224..e3bf71dd394 100644 --- a/src/mame/drivers/argox.cpp +++ b/src/mame/drivers/argox.cpp @@ -63,7 +63,7 @@ static ADDRESS_MAP_START( os214_io_map, AS_IO, 8, os214_state ) // ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_END -static MACHINE_CONFIG_START( os214, os214_state ) +static MACHINE_CONFIG_START( os214 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83002, XTAL_16MHz) /* X1 xtal value is correct, but there can be some clock divider perhaps ? */ @@ -81,5 +81,5 @@ ROM_START( os214 ) ROM_LOAD16_BYTE( "u8_s2a2-4.03_argox_am.u8", 0x000001, 0x040000, CRC(d49f52af) SHA1(0ca5a70c6c3995f275226af26db965f6ba7ed123) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1996, os214, 0, 0, os214, 0, os214_state, os214, "Argox", "Rabbit Printer (model OS-214)", MACHINE_IS_SKELETON) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1996, os214, 0, 0, os214, 0, os214_state, os214, "Argox", "Rabbit Printer (model OS-214)", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/argus.cpp b/src/mame/drivers/argus.cpp index d70019516d4..55bf4ca64bf 100644 --- a/src/mame/drivers/argus.cpp +++ b/src/mame/drivers/argus.cpp @@ -530,7 +530,7 @@ static GFXDECODE_START( butasan ) GFXDECODE_END -static MACHINE_CONFIG_START( argus, argus_state ) +static MACHINE_CONFIG_START( argus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 5000000) /* 4 MHz */ @@ -578,7 +578,7 @@ static MACHINE_CONFIG_START( argus, argus_state ) MCFG_SOUND_ROUTE(3, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( valtric, argus_state ) +static MACHINE_CONFIG_START( valtric ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 5000000) /* 5 MHz */ @@ -626,7 +626,7 @@ static MACHINE_CONFIG_START( valtric, argus_state ) MCFG_SOUND_ROUTE(3, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( butasan, argus_state ) +static MACHINE_CONFIG_START( butasan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 5000000) /* 5 MHz */ @@ -808,8 +808,8 @@ ROM_START( butasanj ) ROM_END -/* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME ) */ -GAME( 1986, argus, 0, argus, argus, driver_device, 0, ROT270, "NMK (Jaleco license)", "Argus", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1986, valtric, 0, valtric, valtric, driver_device, 0, ROT270, "NMK (Jaleco license)", "Valtric", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, butasan, 0, butasan, butasan, driver_device, 0, ROT0, "NMK (Jaleco license)", "Butasan - Pig's & Bomber's (Japan, English)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, butasanj, butasan,butasan, butasan, driver_device, 0, ROT0, "NMK (Jaleco license)", "Butasan (Japan, Japanese)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +/* ( YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME ) */ +GAME( 1986, argus, 0, argus, argus, argus_state, 0, ROT270, "NMK (Jaleco license)", "Argus", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, valtric, 0, valtric, valtric, argus_state, 0, ROT270, "NMK (Jaleco license)", "Valtric", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, butasan, 0, butasan, butasan, argus_state, 0, ROT0, "NMK (Jaleco license)", "Butasan - Pig's & Bomber's (Japan, English)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, butasanj, butasan,butasan, butasan, argus_state, 0, ROT0, "NMK (Jaleco license)", "Butasan (Japan, Japanese)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/aristmk4.cpp b/src/mame/drivers/aristmk4.cpp index c551afcf7f3..3651610f6e7 100644 --- a/src/mame/drivers/aristmk4.cpp +++ b/src/mame/drivers/aristmk4.cpp @@ -14,7 +14,7 @@ ***************** INITIALISATION ********************************************************************* Method 1 : - * Key in with the Jackpot Key followed by the Audit Key (K+L Keys) + * Key in with the Jackpot Key followed by the Audit Key (F1 then F2 keys) * Hit UP (W key) twice (for gunnrose only) * Press PB4, PB5 and PB6 keys simultaneously (Z+X+C keys by default) * A value (displayed below) will appear next to RF/AMT on the right of the screen @@ -40,7 +40,7 @@ swtht2nz 200 wildone 200 wtigernz 200 - gunnrose + gunnrose N/A (no hopper to refill) Method 2 : * Key in with the Jackpot Key followed by the Audit Key @@ -62,7 +62,7 @@ 'freeze' switch and the games don't accept inputs). * Key in with the Jackpot Key followed by the Audit Key. * Press PB4, PB5 and PB6 keys simultaneously (Z+X+C keys by default) - * Press Service (default A) 4 times until you are in the Setup Screen, with Printer Pay Limit. + * Press Service (default A) 4 times until you are in the Setup Screen, showing Printer Pay Limit etc. * Press Bet 2 (default D) to change the Jackpot Win Limit. A higher value is better (3000 max) * Key out both the Jackpot and Audit Keys @@ -187,14 +187,14 @@ cause a note acceptor error), the note acceptor works, adding 4 credits ($1?). This is seemingly a quarter slot (25c). Not sure if other notes are possible. - Same gameplay as Gone Troppo, one interesting thing about this game is that - the KQJ symbols have actual faces instead of plain letters. + the KQJ symbols have actual faces instead of plain letters. These symbols were also found on some mechanical reel slots. 08/03/2013 - Heihachi_73 Cleaned up comments and erroneous ROM names (e.g. graphics ROMs named after the program ROM). Caribbean Gold II - copied cgold graphics ROMs u8+u11 (aka u20+u45) to cgold2, game now playable. Tiles 0x64 and 0x65 are used to show the game's denomination (credit value), however cgold does not use these tiles (there are seemingly unused line/bet/number tiles in this location), this - causes a minor glitch on the $/c sign. Tiles 0x277-0x288 also differ but are unused. + causes a graphics glitch on the $/cent signs. Promoted Fortune Hunter and clone to working status, as they were in fact working for quite a while. Fixed ROM names for kgbird/kgbirda; 5c and 10c variants were mixed up. @@ -202,11 +202,16 @@ Added hopper and meter outputs. 27/03/2014 - Added new game: Gun's and Roses Poker - gunnrose + Added new game: Guns and Roses Poker - gunnrose 13/11/2015 - Roberto Fresca - Added new game: Fever Pitch? (2VXEC534, NSW, 90.36%). - Need to confirm the title. + Added new game: Fever Pitch (2VXEC534, NSW, 90.36%). + + 26/04/2017 - Heihachi_73 + Added button labels and layout to gunnrose, position of buttons is guesswork at this stage. + This game does not have a cashout button. Credits are paid out using the jackpot key. + Changed jackpot and audit keys to F1 and F2 respectively. + Renamed nodump program ROM in clkwise as it had the wrong EPROM number. ************************************************************************************************************* @@ -245,13 +250,13 @@ cgold can be set to credit play or coin play by toggling SW1-5. If SW1-5 is on, game is in credit mode; if SW1-5 is off, wins and remaining credits will be automatically paid out as coins. - Non-US games can enable/disable the double up (gamble) option by toggling the SW1-8 switch. Turning SW1 off will enable + Non-US games can enable/disable the double up (gamble) option by toggling the SW1-8 switch. Turning SW1-8 off will enable the double up option (default); turning SW1-8 on will disable double up and enable auto-spin on some games (so far, only eforesta and 3bagflvt allow this; other games simply ignore the buttons). The games respond slightly faster between games with double up disabled. - 3 Bags Full, Fortune Hunter, Caribbean Gold 1 and 2, Gone Troppo and Top Gear do not have a double up option, and US-based - games ignore this switch setting (double up is always enabled on US games which support it). + 3 Bags Full, Fortune Hunter, Fever Pitch, Caribbean Gold 1 and 2, Gone Troppo and Top Gear do not have a double up option, + and US-based games ignore this switch setting (double up is always enabled on US games which support it). TODO: @@ -276,11 +281,13 @@ 7. When DIP SW7 is set to off/off, speed is dramatically reduced (noticeable on older Pentium 4-based systems). - 8. rewrite video emulation by using custom drawing code. + 8. Rewrite video emulation by using custom drawing code. + + 9. Check what type of mc6845 this HW uses on real PCB, and hook it up properly. - 9. check what type of mc6845 this HW uses on real PCB, and hook it up properly. + 10. Fix 86 Lions (pre-Aristocrat Mk-4 HW, without prom and dunno what else). - 10. fix 86 Lions (pre-Aristocrat Mk-4 HW, without prom and dunno what else) + 11. Fix coin input for the US games. Currently, only the note acceptor works. The reverse is true for cgold. ***************** POKER GAMES ************************************************************************ @@ -332,13 +339,13 @@ #include "cgold2.lh" // US 25cr without gamble #include "eforest.lh" // US 45cr with gamble #include "fhunter.lh" // US 45cr without gamble +#include "fvrpitch.lh" // AU 25cr without gamble #include "goldenc.lh" // NZ 90cr with double up #include "kgbird.lh" // NZ 25cr with double up #include "topgear.lh" // NZ 5 line without gamble -#include "wildone.lh" // Video poker -#include "gunnrose.lh" // Video poker #include "gldnpkr.lh" // Video poker -#include "fvrpitch.lh" // 5 line without gamble +#include "gunnrose.lh" // Video poker +#include "wildone.lh" // Video poker uint8_t crtc_cursor_index = 0; uint8_t crtc_reg = 0; @@ -1070,31 +1077,31 @@ INPUT PORTS static INPUT_PORTS_START(aristmk4) PORT_START("via_port_b") - PORT_DIPNAME( 0x10, 0x00, "1" ) // "COIN FAULT" + PORT_DIPNAME( 0x10, 0x00, "Coin Optic 1" ) // "COIN FAULT" PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPLOCATION("AY:1") - PORT_DIPNAME( 0x20, 0x00, "2" ) // "COIN FAULT" + PORT_DIPNAME( 0x20, 0x00, "Coin Optic 2" ) // "COIN FAULT" PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_DIPLOCATION("AY:2") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Hopper Coin Release") PORT_CODE(KEYCODE_BACKSLASH) // "ILLEGAL COIN PAID" - - PORT_DIPNAME( 0x80, 0x00, "CBOPT1" ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Hopper Coin Release") PORT_CODE(KEYCODE_BACKSLASH) // "ILLEGAL COIN PAID" + PORT_DIPNAME( 0x80, 0x00, "CBOPT1" ) // Cashbox Optic, enable for 3bagflvt and eforesta or they will give a coin divertor error on the 5th coin, turn off for US games PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_DIPLOCATION("AY:4") PORT_START("5002") - PORT_DIPNAME( 0x01, 0x00, "HOPCO2") // coins out hopper 2 , why triggers logic door ? + PORT_DIPNAME( 0x01, 0x00, "HOPCO2") // coins out hopper 2, why does it trigger logic door? PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5002:1") PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "CBOPT2") // coin in cash box 2 - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) PORT_DIPLOCATION("5002:2") + PORT_DIPNAME( 0x02, 0x02, "CBOPT2") // coin in cash box 2 off = "34 - COIN VALIDATOR FAULT" + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5002:2") + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, "HOPHI2") // hopper 2 full PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5002:3") PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, "DOPTI") // photo optic door DOOR OPEN SENSE SWITCH + PORT_DIPNAME( 0x08, 0x00, "DOPTI") // photo optic door DOOR OPEN SENSE SWITCH PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Audit Key") PORT_TOGGLE PORT_CODE(KEYCODE_K) // AUDTSW + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Audit Key") PORT_TOGGLE PORT_CODE(KEYCODE_F2) // AUDTSW PORT_DIPNAME( 0x20, 0x00, "HOPLO1") // hopper 1 low PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5002:6") PORT_DIPSETTING( 0x20, DEF_STR( On ) ) @@ -1108,7 +1115,7 @@ static INPUT_PORTS_START(aristmk4) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5003:1") PORT_DIPSETTING( 0x01, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_NAME("Main Door") PORT_TOGGLE PORT_CODE(KEYCODE_M) // DSWDT - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Jackpot Key") PORT_TOGGLE PORT_CODE(KEYCODE_L) // JKPTSW + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Jackpot Key") PORT_TOGGLE PORT_CODE(KEYCODE_F1) // JKPTSW PORT_DIPNAME( 0x08, 0x08, "HOPHI1") // hopper 1 full PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5003:4") PORT_DIPSETTING( 0x08, DEF_STR( On ) ) @@ -1121,8 +1128,9 @@ static INPUT_PORTS_START(aristmk4) PORT_DIPNAME( 0x40, 0x00, "PTRTAC") // printer taco PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5003:7") PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "PTRHOM") // printer home - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_DIPLOCATION("5003:8") + PORT_DIPNAME( 0x80, 0x80, "PTRHOM") // printer home, must be on + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5003:8") + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("5005") PORT_DIPNAME( 0x01, 0x01, "CREDIT SELECT 1") @@ -1137,8 +1145,9 @@ static INPUT_PORTS_START(aristmk4) PORT_DIPNAME( 0x08, 0x00, "5005-4") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5005:4") PORT_DIPSETTING( 0x08, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "CGDRSW") // Logic Door (Security Cage) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPLOCATION("5005:5") + PORT_DIPNAME( 0x10, 0x10, "CGDRSW") // Logic door (Security Cage) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5005:5") + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, "5005-6") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5005:6") PORT_DIPSETTING( 0x20, DEF_STR( On ) ) @@ -1166,7 +1175,7 @@ static INPUT_PORTS_START(aristmk4) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5300:5") PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "5300-6") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5300:6") // bill validator d/c , U.S must be on + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5300:6") // bill validator d/c, must be on for US games PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x00, "5300-7") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("5300:7") @@ -1180,7 +1189,7 @@ static INPUT_PORTS_START(aristmk4) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("10 Credits Per Line") PORT_CODE(KEYCODE_Y) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Collect") PORT_CODE(KEYCODE_Q) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Reserve") PORT_CODE(KEYCODE_A) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Gamble") PORT_CODE(KEYCODE_U) // auto gamble & gamble + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Gamble") PORT_CODE(KEYCODE_U) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) PORT_NAME("Take Win") PORT_CODE(KEYCODE_J) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("0-7 UNUSED") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("0-8 UNUSED") @@ -1358,15 +1367,15 @@ static INPUT_PORTS_START(aristmk4) PORT_DIPNAME( 0x20, 0x00, "DSW1 - Link Jackpot - S1" ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("SW1:6") PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, "DSW1 - Link Jackpot - S2" ) + PORT_DIPNAME( 0x40, 0x00, "DSW1 - Link Jackpot - S2" ) // Cash credit option in fvrpitch/eforesta PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("SW1:7") PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, "DSW1 - Auto spin" ) + PORT_DIPNAME( 0x80, 0x00, "DSW1 - Auto spin" ) // Disables double up, only eforesta supports auto spin with double up disabled PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSW2") - PORT_DIPNAME( 0x01, 0x00, "DSW2 - Maximum credit - S1" ) + PORT_DIPNAME( 0x01, 0x00, "DSW2 - Maximum credit - S1" ) // Cash credit option in topgear PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPLOCATION("SW2:1") PORT_DIPSETTING( 0x01, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, "DSW2 - Maximum credit - S2" ) @@ -1432,6 +1441,7 @@ static INPUT_PORTS_START(eforest) PORT_MODIFY("500d") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Play 7 Lines") PORT_CODE(KEYCODE_T) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Play 9 Lines / Black") PORT_CODE(KEYCODE_Y) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Cashout") PORT_CODE(KEYCODE_Q) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_CODE(KEYCODE_A) PORT_MODIFY("500e") @@ -1451,7 +1461,6 @@ static INPUT_PORTS_START(arcwins) PORT_MODIFY("500d") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Play 4 Lines") PORT_CODE(KEYCODE_T) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Play 5 Lines / Black") PORT_CODE(KEYCODE_Y) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Cashout") PORT_CODE(KEYCODE_Q) PORT_MODIFY("500e") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Play 2 Lines") PORT_CODE(KEYCODE_E) @@ -1468,6 +1477,11 @@ static INPUT_PORTS_START(cgold2) PORT_MODIFY("500e") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Play 1 Line") PORT_CODE(KEYCODE_W) + + PORT_MODIFY("via_port_b") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_GAMBLE_D_UP ) PORT_NAME("Test1") PORT_CODE(KEYCODE_2) // coin optic 1? + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_TAKE ) PORT_NAME("Test2") PORT_CODE(KEYCODE_3) // coin optic 2? + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_HIGH ) PORT_NAME("Test3") PORT_CODE(KEYCODE_4) // coin to cashbox? INPUT_PORTS_END static INPUT_PORTS_START(fhunter) @@ -1537,6 +1551,30 @@ static INPUT_PORTS_START(topgear) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Play 2 Lines") PORT_CODE(KEYCODE_D) INPUT_PORTS_END +static INPUT_PORTS_START(gunnrose) + PORT_INCLUDE(aristmk4) + + PORT_MODIFY("500d") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Red") PORT_CODE(KEYCODE_R) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Draw") PORT_CODE(KEYCODE_Y) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Bet 2 / Hold 2") PORT_CODE(KEYCODE_D) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Bet 3 / Hold 3") PORT_CODE(KEYCODE_F) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("0-5 UNUSED") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("0-6 UNUSED") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("0-7 UNUSED") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("0-8 UNUSED") + + PORT_MODIFY("500e") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Half Gamble") PORT_CODE(KEYCODE_E) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Reserve") PORT_CODE(KEYCODE_Q) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Full Gamble") PORT_CODE(KEYCODE_W) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Bet 1 / Hold 1") PORT_CODE(KEYCODE_S) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Bet 5 / Hold 5") PORT_CODE(KEYCODE_H) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Bet 4 / Hold 4") PORT_CODE(KEYCODE_G) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Black") PORT_CODE(KEYCODE_T) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) PORT_NAME("Take Win") PORT_CODE(KEYCODE_A) +INPUT_PORTS_END + static INPUT_PORTS_START(wildone) PORT_INCLUDE(aristmk4) @@ -1580,16 +1618,13 @@ static INPUT_PORTS_START(gldnpkr) INPUT_PORTS_END static INPUT_PORTS_START(fvrpitch) - PORT_INCLUDE(arcwins) - - PORT_MODIFY("500d") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Play 5 Lines") PORT_CODE(KEYCODE_Y) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Reserve") PORT_CODE(KEYCODE_A) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("0-5 UNUSED") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("0-6 UNUSED") + PORT_INCLUDE(3bagflnz) PORT_MODIFY("500e") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Play 1 Line") PORT_CODE(KEYCODE_W) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Play 5 Lines") PORT_CODE(KEYCODE_H) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Play 4 Lines") PORT_CODE(KEYCODE_G) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("Play 3 Lines") PORT_CODE(KEYCODE_F) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Play 2 Lines") PORT_CODE(KEYCODE_D) INPUT_PORTS_END @@ -1709,7 +1744,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(aristmk4_state::aristmk4_pf) } } -static MACHINE_CONFIG_START( aristmk4, aristmk4_state ) +static MACHINE_CONFIG_START( aristmk4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK/8) // 1.5mhz MCFG_CPU_PROGRAM_MAP(aristmk4_map) @@ -2212,7 +2247,7 @@ ROM_START( clkwise ) // MK2.5 ROM_LOAD("3vas003.u7", 0x06000, 0x2000, CRC(fe7d0ea4) SHA1(3f3f4809534065c33eca2cfff0d1d2a3e3992406)) /* GAME EPROMs */ - ROM_LOAD("1vxec534.u9", 0x08000, 0x8000, NO_DUMP) // dead on arrival or blank chip (0xFFFFFFFF throughout ROM) + ROM_LOAD("clkwise.u9", 0x08000, 0x8000, NO_DUMP) // dead on arrival or blank chip (0xFFFFFFFF throughout ROM) /* SHAPE EPROMs */ ROM_REGION(0xc000, "tile_gfx", 0 ) @@ -2270,6 +2305,9 @@ ROM_START( cgold2 ) ROM_LOAD("3vlsh076_a.u46", 0x08000, 0x2000, CRC(9580c2c2) SHA1(8a010fb9e349c066e1af53ed9aa659dbf7dbf17e)) ROM_LOAD("3vlsh076.u47", 0x0a000, 0x2000, CRC(f3cb845a) SHA1(288f7fe991bb60194a9ef9e8c9b2b18ebbd3b49c)) // matches cgold + // Note: cgold tiles are not a perfect match, cgold2 needs dollar and cent signs in tiles 0x64 and 0x65 respectively, which cgold does not have. This causes a garbled graphics in the denomination. + // Tiles 0x27F and 0x280 are cent and dollar signs, but these are unused by the game. + /* COLOR PROM */ ROM_REGION(0x200, "proms", 0 ) ROM_LOAD("1cm12.u71", 0x0000, 0x0200, BAD_DUMP CRC(918cb0ab) SHA1(2ec37abae2ecae2f0f525daf6fafd03789fca20b)) // Using gtroppo's PROM for now, assuming both games use 1CM12 as they are almost identical @@ -2344,6 +2382,31 @@ ROM_START( arcwins ) ROM_LOAD("1cm29.u71", 0x0000, 0x0200, CRC(ef25f5cc) SHA1(51d12f4b8b8712cbd18ec97ec04e1340cd85fc67)) ROM_END +/* Fever Pitch (2VXEC534, 90.36%) + Unhandled Mechanical meter 2 pulse: 04 --> Payout pulse. +*/ +ROM_START( fvrpitch ) // MK2.5 + ROM_REGION(0x10000, "maincpu", 0 ) + /* VIDEO AND SOUND EPROM */ + ROM_LOAD("3vas003.u7", 0x06000, 0x2000, CRC(fe7d0ea4) SHA1(3f3f4809534065c33eca2cfff0d1d2a3e3992406)) + + /* GAME EPROMS */ + ROM_LOAD("2vxec534.u9", 0x08000, 0x8000, CRC(6f8780e8) SHA1(ebf1bfdf2ad727caa2fee34a6ae645ddba42f1cb)) // 90.36% + + /* SHAPE EPROMS */ + ROM_REGION(0xc000, "tile_gfx", 0 ) + ROM_LOAD("1vlbh1299.u8", 0x00000, 0x2000, CRC(8d6294d2) SHA1(819ab872a3ea99801350dd7bdf07011cbc7689e0)) // is it VLBH instead of VLSH or a typo? + ROM_LOAD("1vlbh1299.u10", 0x02000, 0x2000, CRC(939b30af) SHA1(0253c6b1d336ad589322ee9058c1da68ac1e714a)) + ROM_LOAD("1vlbh1299.u12", 0x04000, 0x2000, CRC(81913322) SHA1(4ed8b678e38784a41c1a46809a5ecb14256b4c75)) + ROM_LOAD("1vlbh1299.u9", 0x06000, 0x2000, CRC(e0937d74) SHA1(19f567620e095b10f1d4f2a524331737bfa628b7)) + ROM_LOAD("1vlbh1299.u11", 0x08000, 0x2000, CRC(bfa3bb9e) SHA1(610de284004906af5a5b594256e7d7ec846afff2)) + ROM_LOAD("1vlbh1299.u13", 0x0a000, 0x2000, CRC(6d8fb9a6) SHA1(1d8b667eea57f5a4ce173af55f58b9bf56aaa05e)) + + /* COLOR PROM */ + ROM_REGION(0x200, "proms", 0 ) // Using kgbird's 1CM29 PROM (colors seems correct) until original PROM is dumped. + ROM_LOAD("1cm29.u40", 0x0000, 0x0200, BAD_DUMP CRC(ef25f5cc) SHA1(51d12f4b8b8712cbd18ec97ec04e1340cd85fc67)) +ROM_END + /* Video poker games */ ROM_START( wildone ) @@ -2390,32 +2453,32 @@ ROM_START( gldnpkr ) // MK2.5 ROM_LOAD("2cm07.u40", 0x0000, 0x0200, CRC(1e3f402a) SHA1(f38da1ad6607df38add10c69febf7f5f8cd21744)) // Using 2CM07 until a correct PROM is confirmed ROM_END -/* Fever Pitch? (2VXEC534, 90.36%) - Need some proof about the real name. - Unhandled Mechanical meter 2 pulse: 04 --> Payout pulse. +/* Guns & Roses + Unhandled Mechanical meter 2 pulse: 04 */ -ROM_START( fvrpitch ) // MK2.5 +ROM_START( gunnrose ) // MK2.5 ROM_REGION(0x10000, "maincpu", 0 ) /* VIDEO AND SOUND EPROM */ - ROM_LOAD("vidsnd.u7", 0x06000, 0x2000, BAD_DUMP CRC(568bd63f) SHA1(128b0b085c8b97d1c90baeab4886c522c0bc9a0e)) // unknown EPROM name + ROM_LOAD("gnr.u7", 0x06000, 0x2000, CRC(fe7d0ea4) SHA1(3f3f4809534065c33eca2cfff0d1d2a3e3992406)) // 1VL/SH136 RED AND BLACK /* GAME EPROMS */ - ROM_LOAD("2vxec534_fever_pitch_90.36%.u9", 0x08000, 0x8000, CRC(6f8780e8) SHA1(ebf1bfdf2ad727caa2fee34a6ae645ddba42f1cb)) // 90.36% + ROM_LOAD("gnr.u9", 0x08000, 0x8000, CRC(4fb5f757) SHA1(a4129bca7e573faac0d11de41a9bf8ea144091ee)) // E/C606191SMP /* SHAPE EPROMS */ ROM_REGION(0xc000, "tile_gfx", 0 ) - ROM_LOAD("1vlbh1299_fever_pitch.u8", 0x00000, 0x2000, CRC(8d6294d2) SHA1(819ab872a3ea99801350dd7bdf07011cbc7689e0)) // unknown EPROM names, should contain VLSH or VL/SH letters on sticker - ROM_LOAD("1vlbh1299_fever_pitch.u10", 0x02000, 0x2000, CRC(939b30af) SHA1(0253c6b1d336ad589322ee9058c1da68ac1e714a)) - ROM_LOAD("1vlbh1299_fever_pitch.u12", 0x04000, 0x2000, CRC(81913322) SHA1(4ed8b678e38784a41c1a46809a5ecb14256b4c75)) - ROM_LOAD("1vlbh1299_fever_pitch.u9", 0x06000, 0x2000, CRC(e0937d74) SHA1(19f567620e095b10f1d4f2a524331737bfa628b7)) - ROM_LOAD("1vlbh1299_fever_pitch.u11", 0x08000, 0x2000, CRC(bfa3bb9e) SHA1(610de284004906af5a5b594256e7d7ec846afff2)) - ROM_LOAD("1vlbh1299_fever_pitch.u13", 0x0a000, 0x2000, CRC(6d8fb9a6) SHA1(1d8b667eea57f5a4ce173af55f58b9bf56aaa05e)) + ROM_LOAD("gnr.u8", 0x00000, 0x2000, CRC(dec9e695) SHA1(a596c4243d6d39e0611ff714e19e14188c90b6f1)) // 1VL/SH136 RED AND BLACK + ROM_LOAD("gnr.u10", 0x02000, 0x2000, CRC(e83b8e79) SHA1(595f41a5f59f938581a57b445370aa716c6b1409)) // 1VL/SH136 RED AND BLACK + ROM_LOAD("gnr.u12", 0x04000, 0x2000, CRC(9134d029) SHA1(d698fb91d8f5fa78ffd056149421008d3f12c456)) // 1VL/SH136 RED AND BLACK + ROM_LOAD("gnr.u9t", 0x06000, 0x2000, CRC(73a0c2cd) SHA1(662056d570eaa069483d378b77efcfb42eff6d0d)) // 1VL/SH136 RED AND BLACK + ROM_LOAD("gnr.u11", 0x08000, 0x2000, CRC(c50adffe) SHA1(a7c4a3cdd4d5d31a1420e47859408caa75ce2636)) // 1VL/SH136 RED AND BLACK + ROM_LOAD("gnr.u13", 0x0a000, 0x2000, CRC(e0a6bfc5) SHA1(07e4c8191503f0ea2de4f7ce18fe6290d20ef80e)) // 1VL/SH136 RED AND BLACK /* COLOR PROM */ - ROM_REGION(0x200, "proms", 0 ) // Using kgbird's 1CM29 PROM (colors seems correct) until original PROM is dumped. - ROM_LOAD("1cm29.u71", 0x0000, 0x0200, BAD_DUMP CRC(ef25f5cc) SHA1(51d12f4b8b8712cbd18ec97ec04e1340cd85fc67)) -ROM_END + ROM_REGION(0x200, "proms", 0 ) /* are either of these correct? They are taken from different games */ + //ROM_LOAD("2cm07.u40", 0x0000, 0x0200, CRC(1e3f402a) SHA1(f38da1ad6607df38add10c69febf7f5f8cd21744)) // Using 2CM07 until a correct PROM is confirmed + ROM_LOAD("1cm48.u40", 0x0000, 0x0200, BAD_DUMP CRC(81daeeb0) SHA1(7dfe198c6def5c4ae4ecac488d65c2911fb3a890)) +ROM_END /* 86 Lions */ @@ -2435,55 +2498,31 @@ ROM_START( 86lions ) // ROM_LOAD( "prom.x", 0x00, 0x20, NO_DUMP ) ROM_END -ROM_START( gunnrose ) // MK2.5 - ROM_REGION(0x10000, "maincpu", 0 ) - /* VIDEO AND SOUND EPROM */ - ROM_LOAD("gnr.u7", 0x06000, 0x2000, CRC(fe7d0ea4) SHA1(3f3f4809534065c33eca2cfff0d1d2a3e3992406)) // 1VL/SH136 RED AND BLACK - - /* GAME EPROMS */ - ROM_LOAD("gnr.u9", 0x08000, 0x8000, CRC(4fb5f757) SHA1(a4129bca7e573faac0d11de41a9bf8ea144091ee)) // E/C606191SMP - - /* SHAPE EPROMS */ - ROM_REGION(0xc000, "tile_gfx", 0 ) - ROM_LOAD("gnr.u8", 0x00000, 0x2000, CRC(dec9e695) SHA1(a596c4243d6d39e0611ff714e19e14188c90b6f1)) // 1VL/SH136 RED AND BLACK - ROM_LOAD("gnr.u10", 0x02000, 0x2000, CRC(e83b8e79) SHA1(595f41a5f59f938581a57b445370aa716c6b1409)) // 1VL/SH136 RED AND BLACK - ROM_LOAD("gnr.u12", 0x04000, 0x2000, CRC(9134d029) SHA1(d698fb91d8f5fa78ffd056149421008d3f12c456)) // 1VL/SH136 RED AND BLACK - ROM_LOAD("gnr.u9t", 0x06000, 0x2000, CRC(73a0c2cd) SHA1(662056d570eaa069483d378b77efcfb42eff6d0d)) // E/C606191SMP - ROM_LOAD("gnr.u11", 0x08000, 0x2000, CRC(c50adffe) SHA1(a7c4a3cdd4d5d31a1420e47859408caa75ce2636)) // 1VL/SH136 RED AND BLACK - ROM_LOAD("gnr.u13", 0x0a000, 0x2000, CRC(e0a6bfc5) SHA1(07e4c8191503f0ea2de4f7ce18fe6290d20ef80e)) // 1VL/SH136 RED AND BLACK - - /* COLOR PROM */ - ROM_REGION(0x200, "proms", 0 ) /* are either of these correct? They are taken from different games */ - //ROM_LOAD("2cm07.u71", 0x0000, 0x0200, CRC(1e3f402a) SHA1(f38da1ad6607df38add10c69febf7f5f8cd21744)) // Using 2CM07 until a correct PROM is confirmed - ROM_LOAD("1cm48.u71", 0x0000, 0x0200, BAD_DUMP CRC(81daeeb0) SHA1(7dfe198c6def5c4ae4ecac488d65c2911fb3a890)) - -ROM_END - GAMEL( 1985, 86lions, 0, 86lions, aristmk4, aristmk4_state, aristmk4, ROT0, "Aristocrat", "86 Lions", MACHINE_NOT_WORKING, layout_topgear ) -GAMEL( 1996, eforest, 0, aristmk4, eforest, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Enchanted Forest (12XF528902, US)", 0, layout_eforest ) -GAMEL( 1995, eforesta, eforest, aristmk4, aristmk4, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Enchanted Forest (4VXFC818, NSW)", 0, layout_aristmk4 ) // 10c, $1 = 10 credits -GAMEL( 1996, eforestb, eforest, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Enchanted Forest (3VXFC5343, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits -GAMEL( 1996, 3bagflvt, 0, aristmk4, 3bagflvt, aristmk4_state, aristmk4, ROT0, "Aristocrat", "3 Bags Full (5VXFC790, Victoria)", 0, layout_3bagflvt ) // 5c, $1 = 20 credits -GAMEL( 1996, 3bagflnz, 3bagflvt, aristmk4, 3bagflnz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "3 Bags Full (3VXFC5345, New Zealand)", 0, layout_3bagflnz ) // 5c, $2 = 40 credits -GAMEL( 1996, kgbird, 0, aristmk4, kgbird, aristmk4_state, aristmk4, ROT0, "Aristocrat", "K.G. Bird (4VXFC5341, New Zealand, 5c)", 0, layout_kgbird ) // 5c, $2 = 40 credits -GAMEL( 1996, kgbirda, kgbird, aristmk4, kgbird, aristmk4_state, aristmk4, ROT0, "Aristocrat", "K.G. Bird (4VXFC5341, New Zealand, 10c)", 0, layout_kgbird ) // 10c, $2 = 20 credits -GAMEL( 1996, blkrhino, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Black Rhino (3VXFC5344, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits -GAMEL( 1996, topgear, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Top Gear (4VXFC969, New Zealand)", 0, layout_topgear ) // 10c, 1 coin = 1 credit -GAMEL( 1996, wtigernz, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "White Tiger (3VXFC5342, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits -GAMEL( 1998, phantomp, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Phantom Pays (4VXFC5431, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits -GAMEL( 1998, ffortune, 0, aristmk4, goldenc, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Fantasy Fortune (1VXFC5460, New Zealand)", 0, layout_goldenc ) // 5c, $2 = 40 credits -GAMEL( 1998, swtht2nz, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Sweet Hearts II (1VXFC5461, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits -GAMEL( 1996, goldenc, 0, aristmk4, goldenc, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Golden Canaries (1VXFC5462, New Zealand)", 0, layout_goldenc ) // 2c, $2 = 100 credits -GAMEL( 1999, autmoon, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Autumn Moon (1VXFC5488, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits -GAMEL( 2000, coralr2, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Coral Riches II (1VXFC5472, New Zealand)", 0, layout_arimk4nz ) // 2c, $2 = 100 credits -GAMEL( 1995, cgold2, 0, aristmk4, cgold2, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Caribbean Gold II (3XF5182H04, USA)", 0, layout_cgold2 ) -GAMEL( 1996, fhunter, 0, aristmk4, fhunter, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Fortune Hunter (2XF5196I01, USA)", 0, layout_fhunter ) -GAMEL( 1996, fhuntera, fhunter, aristmk4, fhunter, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Fortune Hunter (2XF5196I02, USA)", 0, layout_fhunter ) -GAMEL( 1996, arcwins, 0, aristmk4, arcwins, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Arctic Wins (4XF5227H03, USA)", 0, layout_arcwins ) -GAMEL( 1997, wildone, 0, aristmk4_poker, wildone, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Wild One (4VXEC5357, New Zealand)", 0, layout_wildone ) // 20c, $2 = 10 credits, video poker -GAMEL( 1993, gunnrose, 0, aristmk4_poker, wildone, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Guns and Roses (C606191SMP, Australia)", MACHINE_WRONG_COLORS, layout_topgear ) -GAMEL( 1986, gldnpkr, 0, aristmk4_poker, gldnpkr, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Golden Poker (8VXEC037, New Zealand)", 0, layout_gldnpkr ) // possibly 20c, 1 coin = 1 credit, video poker -GAMEL( 1986, gtroppo, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Gone Troppo (1VXEC542, New Zealand)", 0, layout_topgear ) // possibly 20c, 1 coin = 1 credit -GAMEL( 1986, clkwise, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Clockwise (1VXEC534, New Zealand)", MACHINE_NOT_WORKING, layout_topgear ) // 20c, 1 coin = 1 credit -GAMEL( 1986, cgold, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Caribbean Gold (3VXEC449, USA)", 0, layout_topgear ) // 25c, 1 coin = 1 credit -GAMEL( 1986, fvrpitch, 0, aristmk4, fvrpitch, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Fever Pitch? (2VXEC534, NSW, 90.36%)", 0, layout_fvrpitch ) // 5c, $1 = 20 credits +GAMEL( 1996, eforest, 0, aristmk4, eforest, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Enchanted Forest (12XF528902, US)", 0, layout_eforest ) // 92.778% +GAMEL( 1995, eforesta, eforest, aristmk4, aristmk4, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Enchanted Forest (4VXFC818, NSW)", 0, layout_aristmk4 ) // 10c, $1 = 10 credits, 90.483% +GAMEL( 1996, eforestb, eforest, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Enchanted Forest (3VXFC5343, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits, 88.43% +GAMEL( 1996, 3bagflvt, 0, aristmk4, 3bagflvt, aristmk4_state, aristmk4, ROT0, "Aristocrat", "3 Bags Full (5VXFC790, Victoria)", 0, layout_3bagflvt ) // 5c, $1 = 20 credits, 90.018% +GAMEL( 1996, 3bagflnz, 3bagflvt, aristmk4, 3bagflnz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "3 Bags Full (3VXFC5345, New Zealand)", 0, layout_3bagflnz ) // 5c, $2 = 40 credits, 88.22% +GAMEL( 1996, kgbird, 0, aristmk4, kgbird, aristmk4_state, aristmk4, ROT0, "Aristocrat", "K.G. Bird (4VXFC5341, New Zealand, 5c)", 0, layout_kgbird ) // 5c, $2 = 40 credits, 87.98% +GAMEL( 1996, kgbirda, kgbird, aristmk4, kgbird, aristmk4_state, aristmk4, ROT0, "Aristocrat", "K.G. Bird (4VXFC5341, New Zealand, 10c)", 0, layout_kgbird ) // 10c, $2 = 20 credits, 91.97% +GAMEL( 1996, blkrhino, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Black Rhino (3VXFC5344, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits, 91.96% +GAMEL( 1996, topgear, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Top Gear (4VXFC969, New Zealand)", 0, layout_topgear ) // 10c, 10c = 1 credit, 87.471% +GAMEL( 1996, wtigernz, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "White Tiger (3VXFC5342, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits, 91.99% +GAMEL( 1998, phantomp, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Phantom Pays (4VXFC5431, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits, 91.95% +GAMEL( 1998, ffortune, 0, aristmk4, goldenc, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Fantasy Fortune (1VXFC5460, New Zealand)", 0, layout_goldenc ) // 5c, $2 = 40 credits, 87.90% +GAMEL( 1998, swtht2nz, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Sweethearts II (1VXFC5461, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits, 87.13% +GAMEL( 1996, goldenc, 0, aristmk4, goldenc, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Golden Canaries (1VXFC5462, New Zealand)", 0, layout_goldenc ) // 2c, $2 = 100 credits, 87.30% +GAMEL( 1999, autmoon, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Autumn Moon (1VXFC5488, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits, 87.27% +GAMEL( 2000, coralr2, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Coral Riches II (1VXFC5472, New Zealand)", 0, layout_arimk4nz ) // 2c, $2 = 100 credits, 87.13% +GAMEL( 1995, cgold2, 0, aristmk4, cgold2, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Caribbean Gold II (3XF5182H04, USA)", 0, layout_cgold2 ) // 92.858% +GAMEL( 1996, fhunter, 0, aristmk4, fhunter, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Fortune Hunter (2XF5196I01, USA)", 0, layout_fhunter ) // 90.018% +GAMEL( 1996, fhuntera, fhunter, aristmk4, fhunter, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Fortune Hunter (2XF5196I02, USA)", 0, layout_fhunter ) // 92.047% +GAMEL( 1996, arcwins, 0, aristmk4, arcwins, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Arctic Wins (4XF5227H03, USA)", 0, layout_arcwins ) // 90.361% +GAMEL( 1997, wildone, 0, aristmk4_poker, wildone, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Wild One (4VXEC5357, New Zealand)", 0, layout_wildone ) // 20c, $2 = 10 credits, video poker, 88.00% +GAMEL( 1993, gunnrose, 0, aristmk4_poker, gunnrose, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Guns and Roses (C606191SMP, NSW)", MACHINE_WRONG_COLORS, layout_gunnrose ) // 20c, $1 = 5 credits +GAMEL( 1986, gldnpkr, 0, aristmk4_poker, gldnpkr, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Golden Poker (8VXEC037, New Zealand)", 0, layout_gldnpkr ) // 20c, 20c = 1 credit, video poker +GAMEL( 1986, gtroppo, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Gone Troppo (1VXEC542, New Zealand)", 0, layout_topgear ) // 20c, 20c = 1 credit, 87.138% +GAMEL( 1986, clkwise, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Clockwise (1VXEC534, New Zealand)", MACHINE_NOT_WORKING, layout_topgear ) +GAMEL( 1986, cgold, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Caribbean Gold (3VXEC449, USA)", 0, layout_topgear ) // 25c, 25c = 1 credit +GAMEL( 1986, fvrpitch, 0, aristmk4, fvrpitch, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Fever Pitch (2VXEC534, NSW)", 0, layout_fvrpitch ) // 5c, $1 = 20 credits, 90.360% diff --git a/src/mame/drivers/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp index f991e8db003..60a6579a401 100644 --- a/src/mame/drivers/aristmk5.cpp +++ b/src/mame/drivers/aristmk5.cpp @@ -5,24 +5,38 @@ Aristocrat MK5 / MKV hardware possibly 'Acorn Archimedes on a chip' hardware - Current significant issues: - - Games run twice as fast as they should, music is double speed etc. - There are threads that say when running in VGA mode an original AA - will play music etc. at half the expected speed, so it is likely - that the way the timers work differs in this mode (25hz instead of 50?) - - Games lock up after 50 spins + Current significant issues: + - Games run twice as fast as they should, sound effects are double speed etc. + There are threads that say when running in VGA mode an original AA + will play music etc. at half the expected speed, so it is likely + that the way the timers work differs in this mode (25hz instead of 50?) + - Sounds are being output as bleeps and bloops in the older games and New Zealand/touchscreen games + - Games occasionally give a coin diverter fault when inserting coins, mainly with US region games + - Venezuela games give a note acceptor error on boot even if the note acceptor is disabled in the options + - qnilebr (actually the 0301718V BIOS itself) won't accept coins on boot until the jackpot reset key is toggled (bug or not?) + - Later style games (e.g. with the newer music format) from NSW/ACT and Venezuela lock up (hang) after 50 spins + + Games which do *not* lock up after 50 spins: + All games from Brazil, Holland, New Zealand and USA. + All NSW/ACT games which have the early style (pre-1997) music e.g. chickna5, dolphntra, dstbloom, oscara5a, swhr2a, wcougar and others + Some 1997-era games with the later music: cashcham, kgalaha, locoloot, locoloota, lonewolf, qnileb, retrsama, retrsamb, rushrst, topbana Note: ARM250 mapping is not identical to plain AA - BIOS ROMs are actually nowhere to be found on a regular MK5 system. They can be used - to change the system configurations on a PCB board by swapping them with the game ROMs - U7/U11 locations. + BIOS ROMs are actually nowhere to be found on a regular MK5 system. On some US machines, set chips are required + to change the system configurations on a game by swapping them with the game ROMs in U7/U11. Casino versions actually do have a BIOS, otherwise known as a Base System, which is installed at U7/U11 at all times. Casino game EPROMs are loaded in U8/U12 and beyond. - Casino games, as well as games from Queensland and Victoria, require a comms protocol to be emulated, + Casino games (except qnilebr), as well as games from Queensland and Victoria, require a comms protocol to be emulated, otherwise they will remain in a disabled state and will not coin up. + As of MAME 0.185, only New Zealand (0700474V) and Brazil (0301718V) BIOSes are dumped. + + The Brazilian casino BIOS does not use comms, therefore qnilebr is playable. By swapping u7/u11 with the other + casino games (goldpyrb/jungjuic/penpir2), these games also become playable. + + chickna5qld, bumblbugql and the 0700474V casino BIOS all use QCOM, blackpnt uses VLC (Video Lottery Consultants) comms instead. Most New Zealand games have an autoplay option, which is enabled by default in the options. The Autoplay button replaces the fourth play line button normally used for 7 or 15 lines. @@ -33,6 +47,7 @@ Other games replace the cards with animations, for example the double up game in Prize Fight bets on which boxer will knock out the other, likewise in Sumo Spins one sumo wrestler will ring-out the other. In both Prize Fight and Sumo Spins the two opponents are wearing either red or black just like the cards they replaced. + The gamble option is not available in the Brazilian casino BIOS. On US machines which do not require set chips, dip switch DSW2-1 enables or disables the double up feature. On US games which do require set chips, the gamble option is in the set chips, if the regional jurisdiction allows for it to be enabled. @@ -46,16 +61,21 @@ Some games can be set up to multiple bet and line configurations. Usually this applies to the US set chip games, however some Australian games also have this option, such as baddog, marmagic, trojhors and tritreat. - Due to technical limitations in MAME, only one button panel example per game can be shown in the "Input (this Machine)" screen, - however multiple button panels are supported as artwork files. + Multiple button panels are supported as artwork files and can be toggled in MAME's Video Options menu. + + Some early games such as swhr2a have an option to have either music or coin sounds to be played during a win. + This option is in the Sound System setup rather than in Machine Options. + Selecting "Base" plays coin jingles while selecting "MK2.5" plays a small selection of prerecorded music taken from MK2.5 games. + + Later games (non-US) removed the collect limit out of Machine Options into its own menu. US Hyperlink (e.g. Cash Express) games will not trigger the jackpot feature if the link system is not hooked up. This affects dolphntrce, dolphntrcea, dolphntrceb, pengpuck, qnilece and qnilecea. - Non-US Hyperlink games will still trigger the jackpot feature as intended, however, without the link system hooked up, - progressive jackpot credits cannot be awarded. If the link system is offline on a real machine, the game will disable itself - after the Hyperlink feature and a hand pay of the jackpot amount won at the time of the Hyperlink feature would be required. - Normally if this occurs in the wild the machine is immediately taken out of service. + Non-US Hyperlink games will still trigger the jackpot feature as intended, however the link system is not emulated + therefore no jackpot credits are paid if the Hyperlink feature is triggered, and the games will need the jackpot key to be toggled to continue play. + If the link system is offline on a real machine, the game will disable itself after the Hyperlink feature and a hand pay of the applicable jackpot amount + would be required. Normally if this occurs in the wild the machine is immediately taken out of service until the link system is working again. List of Hyperlink systems/themes on MK5 hardware: Cash Express - Train theme. @@ -66,7 +86,7 @@ Note: The Hyperlink jackpot feature trigger is won at random and is predetermined the instant the player has started a game. Pressing the buttons to stop the Hyperlink reels is only a visual effect with no skill involved, likewise touching the icons to reveal the characters in Maximillions. - The jackpot level won (e.g. Grand, Major, Minor or Min) is also predetermined at the start of the game. + The jackpot level won (e.g. Grand, Major, Minor or Mini) is also predetermined at the start of the game. Most Hyperlink games have a set of four eight-digit, 7-segment LEDs installed in the topbox for displaying the progressive jackpots. The Grand and Major jackpot displays are larger than the Minor and Mini jackpot displays. @@ -86,6 +106,60 @@ Queen of the Nile does not use this early prerecorded music in any of its variants. It is possible that Queen of the Nile ROMs were used as offical replacements/upgrades for earlier version Golden Pyramids ROMs. + How to set up the games from scratch: + + Standard NSW/ACT games: + + Step 1: Audit key in (F2), open main door (M), and press Collect (A) and the fourth line button (G) together to clear the memory. + Note: On 3-payline games, press Collect (A) and Bet 1 Credit (E) to clear the memory. + + Optionally, the main door can be closed from this point on (press M again). + + Step 2: Enter Operator Setup -> Machine Options + + Usually, the Machine ID can be set to anything, however some games complain if it set to zero. + Base Credit Value is the denomination e.g. $0.01 is a one cent machine; $1.00 is a one dollar machine. Some machines may not allow certain values, others may only have one setting. + Token Value is the coin used. The default coin in Australian machines is $1.00 ($2.00 for New Zealand) but there are a number of options from 1 cent all the way to 100 dollars. + Percentage Variation is how loose or tight you want the machine to be, the higher the percentage, the better the game is to the players at the cost of the house edge. Usually the default is "Variation 99" or around 87%. Again, some machines may only have the one option. + CCCE is for communications in a gaming venue, and is not required for emulation. + Collect limit is the highest amount of credits allowed to be cashed out before a hand pay is required. + Hopper refill is the amount of coins the machine should receive every time when the hopper is empty (not required for emulation as the hopper has infinite coins!) + Gamble is the double up feature, and it is disabled by default as seen in the diagram. Change the setting to YES for the ability to bet against your wins; if disabled, the wins are automatically added to the credit meter. + + Step 3: Once everything has been set up, open the Security Cage/Logic Door (L) and press (W) to save (or (R) on 3-payline games; (H) on single-line games), and close the logic door (L again). + By now it should be safe to key out (F2) and the game should be ready to accept credits, if not, check whether the main door (M) is still open or if it needs another memory reset (if pressing F2 went to the main menu instead of going back to the game). + + All items with ?? must be changed or the game will not allow you to save any settings. + + Later games may have more options, such as the ability to toggle between a printer and/or hopper. Disabling the printer will enable the hopper refill option. + Some games may enter a graphical menu for the bet/line/denomination setup, usually if they support multiple betting options. + + Note: To disable both the hopper and forced hand pay on cashout, change both the Collect Limit and Hopper Refill to $0.00. + Disabling this setting will allow hand pays but still allow the player to continue if they inadvertently hit Collect. + To perform a hand pay or jackpot reset (e.g. after a Hyperlink feature), press (V) to allow the game to enter play mode. + + + New Zealand non-casino games, and most NSW/ACT touchscreen games: + + These games have a slightly updated menu system reminiscent of MK6 games, complete with a black background instead of blue. + + Step 1: Audit key in (F2), press Collect (A) and the first line button (S) together to clear the memory. The main door does not need to be open. + + Step 2: Enter Operator Setup -> Machine Options + + Step 3: Set everything up as above, open the Security Cage/Logic Door (L), and save the machine options (which now has its own spot on the menu instead of a dedicated button). + Close the Security Cage (L) and turn off the Audit key (F2) and the game should be ready to accept credits. + + New Zealand machines are usually identical to Australian games except that they normally use NZ $2.00 coins in place of AU $1.00 coins. CCCE comms is not used on New Zealand machines. + + + Brazil [e.g. qnilebr]: + + This game similar to the NSW/ACT games however it requires a four-digit setup code before it can be initialized. + By default, this number is 4856. + +After the game has accepted this code, press Collect (A) and Play 7 Lines (G) at the same time to clear the memory. + TODO (MK-5 specific): - Fix remaining errors - Layouts for various configurations @@ -255,7 +329,7 @@ #include "sound/volt_reg.h" #include "speaker.h" -// Non-US button layouts Bet buttons Lines Gamble Other +// Non-US button layouts Bet buttons Lines Gamble Other #include "aristmk5.lh" // 1, 2, 3, 5, 10 20 suits TW/SF #include "baddog.lh" // Video Poker #include "cashcatnz.lh" // 1, 2, 3, 4, 5 9 suits TW/SF, 7L or Autoplay @@ -285,6 +359,7 @@ #include "mountmon.lh" // 1, 5, 10, 25, 50 20 suits #include "multidrw.lh" // Video Poker (different to baddog) #include "mystgard.lh" // 1, 2, 3, 4, 5 20 red/black +#include "one4all.lh" // 1, 2, 3, 5, 6 20 suits TW/SF, 15L or Autoplay #include "orchidms.lh" // 1, 5, 10, 25, 50 10 suits #include "snowcat.lh" // 1, 2, 3, 5, 10 9 suits #include "pantmaga.lh" // 1, 2 5 suits @@ -294,6 +369,7 @@ #include "qnile.lh" // 1, 5, 10, 20, 25 20 suits TW/SF #include "qnilec.lh" // 1, 2, 5, 10, 20 9 suits TW/SF #include "qniled.lh" // 1, 2, 3 3 suits TW/SF +#include "qnilenl.lh" // 1, 2, 3, 5, 10 9 red/black TW/SF, Service #include "qtbird.lh" // 1, 2, 3, 4, 5 9 red/black #include "reelrock.lh" // 1, 2, 3, 5, 8 243 suits #include "retrsamb.lh" // 1, 2, 3, 5, 10 9 odds @@ -301,6 +377,7 @@ #include "sbuk3.lh" // 1, 2, 3 3 odds TW/SF #include "swhr2.lh" // 1, 2, 3, 5, 10 9 red/black #include "trstrove.lh" // 1, 2, 5, 10, 25 20 suits Take Win/Start Feature +#include "toutangonl.lh" // 1, 2, 3, 5, 10 9 red/black Service #include "wamazon.lh" // 1, 2, 3 3 suits Play Feature Game #include "wamazona.lh" // 1, 2, 3, 5, 10 1 suits Single line game #include "wcougar.lh" // 1, 2, 5, 10, 20 9 red/black @@ -310,15 +387,15 @@ #include "wizways.lh" // 1, 2, 5, 10, 20 243 suits #include "yukongld.lh" // multiple configs 20 suits TW/SF -#include "aristmk5_us.lh" // 1, 2, 3, 5, 10 9 red/black (all US games only have red/black) -#include "aristmk5_us_200.lh" // 1, 2, 3, 5, 10 20 +#include "aristmk5_us.lh" // 1, 2, 3, 5, 10 9 red/black (all US games only have red/black) +#include "aristmk5_us_200.lh" // 1,2,3,5,10 20 #include "bparty.lh" // 20 lines, multiple layouts #include "cuckoou.lh" // 9 lines, multiple layouts #include "dolphntrce.lh" // 20 lines, multiple layouts #include "magimaska.lh" // 9 lines, multiple layouts #include "pengpuck.lh" // 20 lines, multiple layouts #include "qnilecea.lh" // 9 lines, multiple layouts -#include "wnpost.lh" // 1, 2, 3, 5, 10 5 +#include "wnpost.lh" // 1, 2, 3, 5, 10 5 #define MASTER_CLOCK XTAL_72MHz /* confirmed */ @@ -1122,6 +1199,13 @@ static INPUT_PORTS_START(geisha) PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 12 Credits / Spade") INPUT_PORTS_END +static INPUT_PORTS_START(one4all) + PORT_INCLUDE(geisha) + + PORT_MODIFY("P1") + PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 6 Credits / Spade") +INPUT_PORTS_END + static INPUT_PORTS_START(montree) PORT_INCLUDE(geisha) @@ -1353,6 +1437,20 @@ static INPUT_PORTS_START(swhr2) PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 10 Credits") INPUT_PORTS_END +static INPUT_PORTS_START(toutangonl) + PORT_INCLUDE(swhr2) + + PORT_MODIFY("P1") + PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Service") +INPUT_PORTS_END + +static INPUT_PORTS_START(qnilenl) + PORT_INCLUDE(toutangonl) + + PORT_MODIFY("P1") + PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win / Start Feature") +INPUT_PORTS_END + static INPUT_PORTS_START(dimtouch) PORT_INCLUDE(swhr2) @@ -1453,7 +1551,7 @@ static INPUT_PORTS_START(wamazona) PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Bet 2 Credits") PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Bet 1 Credit / Red") PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Diamond") - PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Club") INPUT_PORTS_END @@ -1468,7 +1566,7 @@ static INPUT_PORTS_START(sbuk2) PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Bet 1 Credit / Red") PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_UNUSED) INPUT_PORTS_END @@ -1484,7 +1582,7 @@ static INPUT_PORTS_START(wtiger) PORT_INCLUDE(aristmk5) PORT_MODIFY("P1") - PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("Standard Game") + PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("Standard Game") // Classic Buy Feature toggle off PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("Classic Buy Feature / Start Feature") PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Gamble / Reserve") PORT_BIT(0x00000100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Take Win / Collect") @@ -1803,7 +1901,7 @@ void aristmk5_state::machine_reset() } -static MACHINE_CONFIG_START( aristmk5, aristmk5_state ) +static MACHINE_CONFIG_START( aristmk5 ) MCFG_CPU_ADD("maincpu", ARM, MASTER_CLOCK/6) // 12000000 MCFG_CPU_PROGRAM_MAP(aristmk5_drame_map) @@ -1947,7 +2045,7 @@ ROM_END // 0200751V - 10 Credit Multiplier / 20 Line Multiline. -// ADONIS - NSW/ACT A - 25/05/98 Revision: 10 602/9. +// ADONIS - NSW/ACT - A - 25/05/98 Revision: 10 602/9. ROM_START( adonis ) ARISTOCRAT_MK5_BIOS /* @@ -1971,7 +2069,7 @@ ROM_END // 0100751V - 10 Credit Multiplier / 20 Line Multiline. -// ADONIS - NSW/ACT A - 25/05/98 Revision: 9 602/9. +// ADONIS - NSW/ACT - A - 25/05/98 Revision: 9 602/9. ROM_START( adonisa ) ARISTOCRAT_MK5_BIOS /* @@ -2020,6 +2118,8 @@ ROM_START( adonisu ) ROM_END +// 602/9 - 10 Credit Multiplier/20 Line Multiline +// ADONIS - NSW/ACT - C - 06/07/99 ROM_START( adonisce ) ARISTOCRAT_MK5_BIOS ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) @@ -2043,6 +2143,10 @@ ROM_START( adonisce ) ROM_END +// JB013/1 - Multi credit / 20 line +// ALCHEMIST - VENEZUILA - A - 22/01/02 +// This game is downported from the MK6 version (Alchemy) and has MK6 style graphics +// Venezuela is misspelled in the ROM ROM_START( alchemst ) ARISTOCRAT_MK5_BIOS /* @@ -2067,6 +2171,8 @@ ROM_START( alchemst ) ROM_END +// 386/56 - CARD POKER +// BAD DOG POKER - NSW HOTEL - A 17/12/96 ROM_START( baddog ) ARISTOCRAT_MK5_BIOS /* @@ -2091,6 +2197,8 @@ ROM_START( baddog ) ROM_END +// 594/1 - 3 Credit Multiplier/3 Line Multiline +// Black Panther - Victoria - A - 30/07/96 ROM_START( blackpnt ) ARISTOCRAT_MK5_BIOS /* @@ -2113,6 +2221,8 @@ ROM_START( blackpnt ) ROM_END +// 616/1 - 25 Credit Multiplier/20 Line Multiline +// Boot Scootin' 500cm - NSW/ACT - B - 11/12/98 ROM_START( bootsctn ) ARISTOCRAT_MK5_BIOS /* @@ -2169,6 +2279,8 @@ ROM_START( bootsctnu ) ROM_END +// MV4098/1 - 10 Credit Multiplier/20 Line Multiline +// BOOT SCOOTIN' - Export - A - 27/07/99 ROM_START( bootsctnua ) ARISTOCRAT_MK5_BIOS /* @@ -2194,6 +2306,9 @@ ROM_START( bootsctnua ) ROM_END +// MV4119/1 - 3,5,10,20,25,50 Credit Multiplier / 9 Line Multiline +// Bachelorette Party - Export - B - 25/08/2000 +// ROM says "9 Line Multiline" but this is a 20 line game, it cannot be set to 9 lines at all ROM_START( bparty ) ARISTOCRAT_MK5_BIOS /* @@ -2219,6 +2334,29 @@ ROM_START( bparty ) ROM_END +// MV4119/1 - 5, 10, 25, 50 Credit Multiplier / 20 Line Multiline +// Bachelorette Party - Export - B - 25/08/2000 +ROM_START( bpartya ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "bhg1579.u7", 0x000000, 0x7f01b, BAD_DUMP CRC(da30ade2) SHA1(0a19181ae3968134a5731aa9eadde8c7a12798c1) ) + ROM_LOAD32_WORD( "bhg1579.u11", 0x000002, 0x7ff5b, BAD_DUMP CRC(f94c777f) SHA1(f3e516b9d8b0270f7935bf80f7fabfef055171f3) ) + ROM_LOAD32_WORD( "bhg1579.u8", 0x100000, 0x7fe04, BAD_DUMP CRC(9f457ac5) SHA1(913b48a5d49c555dfa758aee619d32bf32daf761) ) + ROM_LOAD32_WORD( "bhg1579.u12", 0x100002, 0x7fdfe, BAD_DUMP CRC(d18929d8) SHA1(0f1d9c8b48a2f157ec8447bff08815e2ad15782c) ) + ROM_LOAD32_WORD( "bhg1579.u9", 0x200000, 0x7fd8e, BAD_DUMP CRC(08c95d7f) SHA1(ad37b96e3474bac7e06156c19b08a0ae313d7e42) ) + ROM_LOAD32_WORD( "bhg1579.u13", 0x200002, 0x7fd9c, BAD_DUMP CRC(9f0f893d) SHA1(027048eef5f791a4e051692108288ee4b12152e6) ) + ROM_LOAD32_WORD( "bhg1579.u10", 0x300000, 0x7ff63, BAD_DUMP CRC(b2682002) SHA1(378acb39ae504423506b3a01b1ba91d1e8ae0be0) ) + ROM_LOAD32_WORD( "bhg1579.u14", 0x300002, 0x7ff94, BAD_DUMP CRC(34ffe312) SHA1(34432e57e2e3dd90c15dd3ff7cb16d8381343be8) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + +// 593 - 10 Credit Multiplier / 9 Line Multiline +// Bumble Bugs - Local - D - 5/07/96 ROM_START( bumblbug ) ARISTOCRAT_MK5_BIOS /* @@ -2238,6 +2376,8 @@ ROM_START( bumblbug ) ROM_END +// 593 - 10 Credit Multiplier / 9 Line Multiline +// Bumble Bugs - QLD CLUB & HOTEL - D - 05/07/96 ROM_START( bumblbugql ) ARISTOCRAT_MK5_BIOS /* @@ -2287,6 +2427,8 @@ ROM_START( bumblbugu ) ROM_END +// 571/4 - 10 Credit Multiplier/9 Line Multiline +// Butterfly Delight - Local - A - 19/12/95 ROM_START( buttdeli ) ARISTOCRAT_MK5_BIOS /* @@ -2309,6 +2451,21 @@ ROM_START( buttdeli ) ROM_END +ROM_START( canrose ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "ahg1463.u7", 0x000000, 0x7f06d, CRC(d866097c) SHA1(2bd2c6200986b27a35329aa0c43e5afd22becbfc) ) + ROM_LOAD32_WORD( "ahg1463.u11", 0x000002, 0x7ff68, CRC(710827f7) SHA1(26b9ab7f49dc94467a98635480cac0605c1de399) ) + ROM_LOAD32_WORD( "ahg1463.u8", 0x100000, 0x7f499, CRC(17e4ff76) SHA1(e582c92478f139e55922ccf851e4922078498462) ) + ROM_LOAD32_WORD( "ahg1463.u12", 0x100002, 0x7f4fc, CRC(5fe736c2) SHA1(d7c1a3f003085848e413aa499d9eaecca74773da) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( cashcat ) ARISTOCRAT_MK5_BIOS ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) @@ -2482,6 +2639,21 @@ ROM_START( cashcra5 ) ROM_END +ROM_START( cashcra5a ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0300447v.u7", 0x000000, 0x7f992, BAD_DUMP CRC(421ac2af) SHA1(552e98a0d3f969d702dd0aafcb4cb8f697a56b47) ) + ROM_LOAD32_WORD( "0300447v.u11", 0x000002, 0x7ffd3, BAD_DUMP CRC(36b57080) SHA1(6719df7cb0ae2535e125c965a2426efc00da29df) ) + ROM_LOAD32_WORD( "0300447v.u8", 0x100000, 0x7fe3d, BAD_DUMP CRC(9cc0ea01) SHA1(92f89d3adf257eee9ffaa88c1119f0456cafba1d) ) + ROM_LOAD32_WORD( "0300447v.u12", 0x100002, 0x7fe36, BAD_DUMP CRC(ef641efa) SHA1(52e54ed933352cde0f280ba2b3e9bae01c4aae7e) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( chariotc ) ARISTOCRAT_MK5_BIOS /* @@ -2576,7 +2748,7 @@ ROM_START( chickna5 ) ROM_END -// 596 - 10 Credit Multiplier / 9 Line Multiline. (touch) +// 596 - 10 Credit Multiplier / 9 Line Multiline. // Chicken - Export C - 23/02/98. // Marked as RHG0730, 92.588% and 'touch' // All devices are 27c4002 instead of 27c4096. @@ -2678,6 +2850,7 @@ ROM_END // MV4104 3,5,10,20,25,50 Credit Multiplier / 9-20 Line Multiline. // CUCKOO - Export C - 02/02/00. // All devices are 27c4002 instead of 27c4096. +// Game ROM says 9-20 Lines, but it only has 9 Lines. ROM_START( cuckoou ) ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS /* @@ -2790,6 +2963,25 @@ ROM_START( dmdfever ) ROM_END +// MV4115_5 - 5, 10, 25, 50 Credit Multiplier / 20 Line Multiline. +// Diamond Destiny - Export - A - 09/05/2000. +ROM_START( diamdest ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "ahg1533.u7", 0x000000, 0x7efb1, BAD_DUMP CRC(b228ed66) SHA1(a92e403b4df2054693787f48e988613843731f9e) ) + ROM_LOAD32_WORD( "ahg1533.u11", 0x000002, 0x7ff0f, BAD_DUMP CRC(a1c66732) SHA1(2b3fa6c86a2f43f3b857c3bff55343859dd52943) ) + ROM_LOAD32_WORD( "ahg1533.u8", 0x100000, 0x7faf6, BAD_DUMP CRC(66b7e33b) SHA1(5e337aeda6f99de16a655bd635ea65f1d2145a67) ) + ROM_LOAD32_WORD( "ahg1533.u12", 0x100002, 0x7faef, BAD_DUMP CRC(615c2343) SHA1(9bb85f97ca8345d80e088fbb7ac5caea360af529) ) + ROM_LOAD32_WORD( "ahg1533.u9", 0x200000, 0x7fff6, BAD_DUMP CRC(be004ff5) SHA1(2827e5be3c21acf2002647729f163659195a461a) ) + ROM_LOAD32_WORD( "ahg1533.u13", 0x200002, 0x7ffeb, BAD_DUMP CRC(612a6bf2) SHA1(01ee8854204da0610aa4ab3a36c3e517906d2ab4) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( diamdove ) ARISTOCRAT_MK5_BIOS /* @@ -3047,6 +3239,23 @@ ROM_START( dynajack ) ROM_END +ROM_START( dynajacku ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, first 4 files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "chg1562.u7", 0x000000, 0x7f023, BAD_DUMP CRC(c69c989c) SHA1(6eeadf185a38944c6c0c32777c006f27505eaa73) ) + ROM_LOAD32_WORD( "chg1562.u11", 0x000002, 0x7ff1e, BAD_DUMP CRC(693b28cf) SHA1(06ca74d5f7a1e0cd315f4b0dc5182db1f3cfa5a7) ) + ROM_LOAD32_WORD( "chg1562.u8", 0x100000, 0x7fe83, BAD_DUMP CRC(5b585157) SHA1(e7d11b959f02f4cf35413ea59220c751653cb0c7) ) + ROM_LOAD32_WORD( "chg1562.u12", 0x100002, 0x7fe8c, BAD_DUMP CRC(39e6017d) SHA1(5f5dd611b51ad91b6de8bce7de5efc4e48fd02a3) ) + ROM_LOAD32_WORD( "chg1562.u9", 0x200000, 0x80000, CRC(5311546c) SHA1(83eff3a0382a19b315be4612bcdc5280049b10f1) ) + ROM_LOAD32_WORD( "chg1562.u13", 0x200002, 0x80000, CRC(5a2220d7) SHA1(aca5fefb60af93ba776cc695e9a7ea406f527937) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( eldorda5 ) ARISTOCRAT_MK5_BIOS /* @@ -3085,6 +3294,25 @@ ROM_START( eforsta5 ) ROM_END +ROM_START( eforsta5ce ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, first 6 files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "chg1536.u7", 0x000000, 0x7efd4, BAD_DUMP CRC(d29185cc) SHA1(26154f3d99907461cff4a44fe02929fae66e6963) ) + ROM_LOAD32_WORD( "chg1536.u11", 0x000002, 0x7feab, BAD_DUMP CRC(4ea1bd5d) SHA1(86ffabb11550a932006549496772bdd0d27aa384) ) + ROM_LOAD32_WORD( "chg1536.u8", 0x100000, 0x7f753, BAD_DUMP CRC(d439857a) SHA1(8d8d85f36253c89a8e5fb825761284ddd44890c4) ) + ROM_LOAD32_WORD( "chg1536.u12", 0x100002, 0x7f7f9, BAD_DUMP CRC(5f339d63) SHA1(f83587f674e4e12dff65d5c4828e62c4e8349baa) ) + ROM_LOAD32_WORD( "chg1536.u9", 0x200000, 0x7eaaa, BAD_DUMP CRC(5e739d2c) SHA1(2bfae3b39fdb9f52a539aa4532109b51e88ac5c4) ) + ROM_LOAD32_WORD( "chg1536.u13", 0x200002, 0x7eab3, BAD_DUMP CRC(653240e4) SHA1(20a196a2b77416d1490f3d7d4d66dd69ef8c59b2) ) + ROM_LOAD32_WORD( "chg1536.u10", 0x300000, 0x80000, CRC(e1301711) SHA1(b7778b9d3faba0e807b7806f2837d57b0c6a3338) ) + ROM_LOAD32_WORD( "chg1536.u14", 0x300002, 0x80000, CRC(113238a6) SHA1(145467e1f015543d23bb4a377d71949693f21c34) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + // MV4033 - 10 Credit Multiplier / 9 Line Multiline. // Enchanted Forest - Export B - 10/02/97. // Marked as 94.97% @@ -3160,6 +3388,25 @@ ROM_START( fortellr ) ROM_END +ROM_START( fortfvr ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, 7 out of 8 files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "bhg1566.u7", 0x000000, 0x7f050, BAD_DUMP CRC(07c896ae) SHA1(5d275f3759253d2aa3eeef4d6ce973e9a3b5e421) ) + ROM_LOAD32_WORD( "bhg1566.u11", 0x000002, 0x7ff76, BAD_DUMP CRC(e6459275) SHA1(7329204db5d8b9f378918936e46d1b61e6cd2191) ) + ROM_LOAD32_WORD( "bhg1566.u8", 0x100000, 0x7e211, BAD_DUMP CRC(6f26925f) SHA1(8656fe440a123a2fb5e1a801295163bd1244a0c6) ) + ROM_LOAD32_WORD( "bhg1566.u12", 0x100002, 0x7de28, BAD_DUMP CRC(1748216c) SHA1(d2f037b45acbf7d7737d49bf1e6e1c0369d3f7dc) ) + ROM_LOAD32_WORD( "bhg1566.u9", 0x200000, 0x7faf3, BAD_DUMP CRC(7556fbdb) SHA1(95f3f4144a247b9d810a5fd3f219d84147b78bec) ) + ROM_LOAD32_WORD( "bhg1566.u13", 0x200002, 0x7fb29, BAD_DUMP CRC(ed5d7c4a) SHA1(f8288581364bca9ceb96ab9359803c90c520b3ab) ) + ROM_LOAD32_WORD( "bhg1566.u10", 0x300000, 0x80000, CRC(627109ba) SHA1(6689e8cfa7d31fa9471bbde75a5ea97f16ddc00a) ) + ROM_LOAD32_WORD( "bhg1566.u14", 0x300002, 0x7ffff, BAD_DUMP CRC(4fba6570) SHA1(46bb22ba10dc69c70241dfbb00e86ffa5b28fd1c) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + // MV4084/1 - 10 Credit Multiplier / 9 Line Multiline. // THE GAMBLER - Export A - 30/10/98. // Marked as EHG0916 and 92.268%. @@ -3298,6 +3545,8 @@ ROM_END ROM_START( goldpyrb ) ARISTOCRAT_MK5_BIOS /* + Using New Zealand 0700474V BIOS until an Australian casino BIOS is dumped. + note, this actually contains a 2nd checksum for the game, this is the base/bios check only. Checksum code found at 0x001b74 @@ -3392,6 +3641,23 @@ ROM_START( incasunsp ) ROM_END +ROM_START( incasunnz ) + ARISTOCRAT_MK5_BIOS + // checksum code not found (uses different startup sequence) + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0101108v.u7", 0x000000, 0x80000, CRC(1e7be5ca) SHA1(333b7665fab8f60fb60e9d3b44de96725763ca17) ) + ROM_LOAD32_WORD( "0101108v.u11", 0x000002, 0x80000, CRC(2ff86b76) SHA1(c491ca19320bd3e15199b3ca1fcf36a70e386daa) ) + ROM_LOAD32_WORD( "0101108v.u8", 0x100000, 0x80000, CRC(3eb64fc9) SHA1(31f7d56443091da211c45dddb97375305c3cfeae) ) + ROM_LOAD32_WORD( "0101108v.u12", 0x100002, 0x80000, CRC(d91114c5) SHA1(fa88c70d81ff5e4df539b873803376e79eb6a479) ) + ROM_LOAD32_WORD( "0101108v.u9", 0x200000, 0x80000, CRC(6da340db) SHA1(4d7528aa27561185a7d53a0c44a4e95e40aadc26) ) + ROM_LOAD32_WORD( "0101108v.u13", 0x200002, 0x80000, CRC(472f4097) SHA1(5ebe72b138cdc67989db17c82979eeddc60a081e) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( incasunu ) ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS /* @@ -3427,16 +3693,16 @@ ROM_START( incasunu ) ROM_END -ROM_START( incasunnz ) +ROM_START( incasunua ) ARISTOCRAT_MK5_BIOS - // checksum code not found (uses different startup sequence) + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) - ROM_LOAD32_WORD( "0101108v.u7", 0x000000, 0x80000, CRC(1e7be5ca) SHA1(333b7665fab8f60fb60e9d3b44de96725763ca17) ) - ROM_LOAD32_WORD( "0101108v.u11", 0x000002, 0x80000, CRC(2ff86b76) SHA1(c491ca19320bd3e15199b3ca1fcf36a70e386daa) ) - ROM_LOAD32_WORD( "0101108v.u8", 0x100000, 0x80000, CRC(3eb64fc9) SHA1(31f7d56443091da211c45dddb97375305c3cfeae) ) - ROM_LOAD32_WORD( "0101108v.u12", 0x100002, 0x80000, CRC(d91114c5) SHA1(fa88c70d81ff5e4df539b873803376e79eb6a479) ) - ROM_LOAD32_WORD( "0101108v.u9", 0x200000, 0x80000, CRC(6da340db) SHA1(4d7528aa27561185a7d53a0c44a4e95e40aadc26) ) - ROM_LOAD32_WORD( "0101108v.u13", 0x200002, 0x80000, CRC(472f4097) SHA1(5ebe72b138cdc67989db17c82979eeddc60a081e) ) + ROM_LOAD32_WORD( "dhg1577.u7", 0x000000, 0x7f079, BAD_DUMP CRC(ebbd4d54) SHA1(7e5c0da2bc62338dd2148af7fa87745d622b85b9) ) + ROM_LOAD32_WORD( "dhg1577.u11", 0x000002, 0x7ff6c, BAD_DUMP CRC(fb86c7b2) SHA1(62b1897907ceebcd0c2c0a4da002a783174321e7) ) + ROM_LOAD32_WORD( "dhg1577.u8", 0x100000, 0x7fcb7, BAD_DUMP CRC(809c5277) SHA1(2efde9a7887d3ca5cb7fa5aebb0b6fcc9aeb880a) ) + ROM_LOAD32_WORD( "dhg1577.u12", 0x100002, 0x7fc89, BAD_DUMP CRC(dbf26048) SHA1(2fcf1f7d5a0402798b4fe25afd178d8c1db89e3b) ) + ROM_LOAD32_WORD( "dhg1577.u9", 0x200000, 0x7fd47, BAD_DUMP CRC(046e019e) SHA1(4c6e17562cb337c3d79efc095960c4d1f9d87f39) ) + ROM_LOAD32_WORD( "dhg1577.u13", 0x200002, 0x7fd62, BAD_DUMP CRC(7299484f) SHA1(f6b75e5be6ef724504a543702692e455437d7046) ) ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) @@ -3466,6 +3732,21 @@ ROM_START( indrema5 ) ROM_END +ROM_START( jumpbean ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0100161v.u7", 0x000000, 0x7fa4c, BAD_DUMP CRC(6994c968) SHA1(7896a93aeec9c2d815c49d203ca594644e5df8a6) ) + ROM_LOAD32_WORD( "0100161v.u11", 0x000002, 0x7ffda, BAD_DUMP CRC(7776e753) SHA1(3d4753513b63f48500cb289bd0fcc28d0f4ad9d8) ) + ROM_LOAD32_WORD( "0100161v.u8", 0x100000, 0x7fa52, BAD_DUMP CRC(7e69c6ba) SHA1(105bad21c78737b78f0f740a224b3f3e8b44c751) ) + ROM_LOAD32_WORD( "0100161v.u12", 0x100002, 0x7fa54, BAD_DUMP CRC(d1d6cfba) SHA1(8c8ee5a97bc3c8cd21cd291701cebf214ca388f3) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( jumpjoey ) ARISTOCRAT_MK5_BIOS /* @@ -3488,6 +3769,11 @@ ROM_START( jumpjoey ) ROM_END +/* +566/3 - 5 Credit Multiplier/9 Line Multiline +Jungle Juice - Crown - F - 06/03/96 +Note: Game says "Crown" as region, but game was from Dunedin Casino with NZ BIOS installed +*/ ROM_START( jungjuic ) ARISTOCRAT_MK5_BIOS /* @@ -3513,6 +3799,11 @@ ROM_START( jungjuic ) ROM_END +/* +613/6 - 10 Credit Multiplier/20 Line Multiline +King Galah - Local - A - 21/07/95 +Note: Game says 1995 but artwork says 1997; game has a 1998+ style denomination sign +*/ ROM_START( kgalah ) ARISTOCRAT_MK5_BIOS /* @@ -3535,6 +3826,11 @@ ROM_START( kgalah ) ROM_END +/* +613 - 10 Credit Multiplier/20 Line Multiline +King Galah - Local - A - 21/07/95 +Note: Game says 1995 but artwork says 1997; game has the newer style music introduced in 1997 +*/ ROM_START( kgalaha ) ARISTOCRAT_MK5_BIOS /* @@ -3572,7 +3868,7 @@ ROM_START( kgbirda5 ) ROM_LOAD32_WORD( "0200024v.u11", 0x000002, 0x80000, CRC(52791ad8) SHA1(6e4cf553b355f03ef69ef3c4e2816bbd0cbe6599) ) ROM_LOAD32_WORD( "0200024v.u8", 0x100000, 0x80000, CRC(c0477ae3) SHA1(5005944b8b28553dd959192d614be7f1b6228a30) ) ROM_LOAD32_WORD( "0200024v.u12", 0x100002, 0x80000, CRC(df176c5a) SHA1(dcaecdefb7c880b9425a6445dbed969968fe3d1c) ) - + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) @@ -3608,6 +3904,30 @@ ROM_START( koalamnt ) ROM_END +ROM_START( koalamnta ) + ARISTOCRAT_MK5_BIOS + /* + This ROM set is exactly the same version as the parent, yet is bad in a completely different way! + Comparing the ROM data between this one and the above bad dump, it is highly possible that this set can be repaired as this ROM set came from a good dump until it was stripped of carriage return symbols (0x0D) by a web server + The "_a" suffix is to differentiate the ROMs from the above set and does not correspond to the label, the correct label is simply CHG1573. + checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + */ + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "chg1573_a.u7", 0x000000, 0x7f054, BAD_DUMP CRC(de6fa56b) SHA1(e221c5d4b9c3197d0222a539c26aa4bf54c2d3bd) ) + ROM_LOAD32_WORD( "chg1573_a.u11", 0x000002, 0x7ff5e, BAD_DUMP CRC(968cbd51) SHA1(34044106aa648a71f8a62bedd13e7eab587531e8) ) + ROM_LOAD32_WORD( "chg1573_a.u8", 0x100000, 0x7fbb5, BAD_DUMP CRC(d332bef9) SHA1(142fde5d7bee1406c35b3e1ddeba479dddb2edb7) ) + ROM_LOAD32_WORD( "chg1573_a.u12", 0x100002, 0x7fba6, BAD_DUMP CRC(765040ea) SHA1(e29916a52e66f2724efba80e9a5f0e18e1731bfa) ) + ROM_LOAD32_WORD( "chg1573_a.u9", 0x200000, 0x7fcb5, BAD_DUMP CRC(8eb7ac5e) SHA1(a9e32a2ed73093528466d3e1715ee173c465791d) ) + ROM_LOAD32_WORD( "chg1573_a.u13", 0x200002, 0x7fceb, BAD_DUMP CRC(3621d180) SHA1(70545a3a41ce7d859c902846b8df2a4ce4a1682a) ) + ROM_LOAD32_WORD( "chg1573_a.u10", 0x300000, 0x7ffd7, BAD_DUMP CRC(679b5531) SHA1(9f3248a047a97f9845aed6947db2b5dee3ceac8f) ) + ROM_LOAD32_WORD( "chg1573_a.u14", 0x300002, 0x7ffe7, BAD_DUMP CRC(71d793a3) SHA1(65ec159a79545ef2dd21522f811aab24e6379aae) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( kookabuk ) ARISTOCRAT_MK5_BIOS /* @@ -3683,6 +4003,21 @@ ROM_START( locolootnz ) ROM_END +ROM_START( locolootu ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "ahg1513.u7", 0x000000, 0x7f06f, BAD_DUMP CRC(c0e769a1) SHA1(df0dedf6dc9412efccd26ad16ab0d316863f9488) ) + ROM_LOAD32_WORD( "ahg1513.u11", 0x000002, 0x7ff6c, BAD_DUMP CRC(f60c2e0b) SHA1(d3ba83eb458ab99d28a910688e63c9dd5ae6570b) ) + ROM_LOAD32_WORD( "ahg1513.u8", 0x100000, 0x7fede, BAD_DUMP CRC(c24cfe7b) SHA1(7f1f02a4e77ad178c7e08362feb1ec4b064e539c) ) + ROM_LOAD32_WORD( "ahg1513.u12", 0x100002, 0x7ff14, BAD_DUMP CRC(73e30f47) SHA1(eb12716f3c384901cd80b2f43760b522150c64b0) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( lonewolf ) ARISTOCRAT_MK5_BIOS /* @@ -3923,7 +4258,7 @@ ROM_START( marmagic ) ROM_END -ROM_START( marmagicua ) +ROM_START( marmagicu ) ARISTOCRAT_MK5_BIOS /* Checksum code found at 0x000d18 @@ -3953,7 +4288,7 @@ ROM_END // EHG1559 - This is a twenty-line game. // The playlines are 1, 5, 10, 15 and 20. // For 20 credit per line the max bet is 400 -ROM_START( marmagicu ) +ROM_START( marmagicua ) ARISTOCRAT_MK5_BIOS /* Checksum code found at 0x000d18 @@ -3980,6 +4315,30 @@ ROM_START( marmagicu ) ROM_END +ROM_START( marmagicub ) + ARISTOCRAT_MK5_BIOS + /* + This ROM set is exactly the same version as the parent, yet is bad in a completely different way! + Comparing the ROM data between this one and the above bad dump, it is highly possible that this set can be repaired as this ROM set came from a good dump until it was stripped of carriage return symbols (0x0D) by a web server + The "_a" suffix is to differentiate the ROMs from the above set and does not correspond to the label, the correct label is simply EHG1559. + checksum code not found due to ROMs being corrupted, all files except the last 2 are missing bytes consisting of 0x0D + */ + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "ehg1559_a.u7", 0x000000, 0x7f03e, BAD_DUMP CRC(473afd5b) SHA1(823f8ad8cd5c3676feba8d740b50f25544a6c046) ) + ROM_LOAD32_WORD( "ehg1559_a.u11", 0x000002, 0x7ff66, BAD_DUMP CRC(c66df0dc) SHA1(015e6aed905bfef2f152137aa8aaaeaae41bc90e) ) + ROM_LOAD32_WORD( "ehg1559_a.u8", 0x100000, 0x7fcfe, BAD_DUMP CRC(5d2760d6) SHA1(655da82ae5dca1bb498399d2ee1efad7a3811cba) ) + ROM_LOAD32_WORD( "ehg1559_a.u12", 0x100002, 0x7fce2, BAD_DUMP CRC(56f9dcab) SHA1(2951a7189e5aa6e7338eb11f929fd6eea2541f0d) ) + ROM_LOAD32_WORD( "ehg1559_a.u9", 0x200000, 0x7ff4d, BAD_DUMP CRC(60323004) SHA1(8f188c7109538454a9ad5e14f21ab4ef76115153) ) + ROM_LOAD32_WORD( "ehg1559_a.u13", 0x200002, 0x7ff61, BAD_DUMP CRC(34320e8d) SHA1(b266d9c53cf746f1a164e006f14079bced2887ed) ) + ROM_LOAD32_WORD( "ehg1559.u10", 0x300000, 0x80000, CRC(3db4e373) SHA1(7150242253ae4a1c4f3211e3068f00e8b1ed51b1) ) + ROM_LOAD32_WORD( "ehg1559.u14", 0x300002, 0x80000, CRC(bdfdc0e4) SHA1(0e56f08abc0cdd9dfa5d8e51bb6fe06fa356b3b3) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( minemine ) ARISTOCRAT_MK5_BIOS /* @@ -4138,6 +4497,44 @@ ROM_START( mountmona ) ROM_END +ROM_START( mountmonce ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files except U10 are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "ahg1629.u7", 0x000000, 0x7efa7, BAD_DUMP CRC(8e5b5354) SHA1(519c5af995d75c3035c0a3832956d94a989163de) ) + ROM_LOAD32_WORD( "ahg1629.u11", 0x000002, 0x7ff5b, BAD_DUMP CRC(9ccf8088) SHA1(cc0e2a2e50041e412d9fd4dea8e50b5aa3b94122) ) + ROM_LOAD32_WORD( "ahg1629.u8", 0x100000, 0x7d02f, BAD_DUMP CRC(32bd1b30) SHA1(3caf8b69a9f5fdf5f472a4ce83bf9f2e9c9af75c) ) + ROM_LOAD32_WORD( "ahg1629.u12", 0x100002, 0x7d068, BAD_DUMP CRC(6c76f501) SHA1(7420748f4ad7d7586c1cdc7676297b7a87733faf) ) + ROM_LOAD32_WORD( "ahg1629.u9", 0x200000, 0x7f6d0, BAD_DUMP CRC(50451b2a) SHA1(299252ac72d993bc79f07087130bff55bd13659d) ) + ROM_LOAD32_WORD( "ahg1629.u13", 0x200002, 0x7f739, BAD_DUMP CRC(783d8aad) SHA1(41b4d4e4d02aa8ee4a81550160750f4f36aaca09) ) + ROM_LOAD32_WORD( "ahg1629.u10", 0x300000, 0x80000, CRC(503b9a4e) SHA1(867cdecf6a721803500b1b66192ea4f61eb459da) ) + ROM_LOAD32_WORD( "ahg1629.u14", 0x300002, 0x7ffff, BAD_DUMP CRC(57f31de5) SHA1(aceb1d700c3b41e29e0abd613d59008d7dc259c9) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + +ROM_START( mountmonu ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, first 6 files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "bhg1465.u7", 0x000000, 0x7f026, BAD_DUMP CRC(9a176a6b) SHA1(a86213020f6cf0c99271ae4e5768453578ade4c3) ) + ROM_LOAD32_WORD( "bhg1465.u11", 0x000002, 0x7ff32, BAD_DUMP CRC(cfdc676a) SHA1(21179519913a1257f19a726bbfaf913018f31a9a) ) + ROM_LOAD32_WORD( "bhg1465.u8", 0x100000, 0x7d046, BAD_DUMP CRC(65950ec8) SHA1(22e558910d1ca62c36fa3c7376515268473f944f) ) + ROM_LOAD32_WORD( "bhg1465.u12", 0x100002, 0x7d079, BAD_DUMP CRC(2d34d169) SHA1(a845570cd0219801e19e3746c00b7ebedb52034b) ) + ROM_LOAD32_WORD( "bhg1465.u9", 0x200000, 0x7fc08, BAD_DUMP CRC(1dfcc079) SHA1(07fe6820cacf52fd3b25e3e58f2377eb85e5de2c) ) + ROM_LOAD32_WORD( "bhg1465.u13", 0x200002, 0x7fc71, BAD_DUMP CRC(2ce1748e) SHA1(10c78c55d76eb270db16a42b6ae43293301d70ec) ) + ROM_LOAD32_WORD( "bhg1465.u10", 0x300000, 0x80000, CRC(05e2c0e2) SHA1(c604ca86d39d337b43c32ada5fbe30f57bae47aa) ) + ROM_LOAD32_WORD( "bhg1465.u14", 0x300002, 0x80000, CRC(62f9b2af) SHA1(bddf24c7a412e911cf75316723f3139be99acbdd) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( multidrw ) ARISTOCRAT_MK5_BIOS /* @@ -4181,6 +4578,25 @@ ROM_START( mystgard ) ROM_END +// MV4141 - 6 Credit Multiplier/20 Line Multiline +// One For All - New Zealand - A- 28/05/01 +ROM_START( one4all ) + ARISTOCRAT_MK5_BIOS + // checksum code not found (uses different startup sequence) + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0101503v.u7", 0x000000, 0x80000, CRC(edf50554) SHA1(302737220c4b7d60db77074429d6f360c55494a6) ) + ROM_LOAD32_WORD( "0101503v.u11", 0x000002, 0x80000, CRC(e2fa31a8) SHA1(595286573a4bfc6f3ee2fe57c44ae129077f3dd0) ) + ROM_LOAD32_WORD( "0101503v.u8", 0x100000, 0x80000, CRC(46aa8912) SHA1(dd874b203e4dacb868d73e5c621e0bf95c267783) ) + ROM_LOAD32_WORD( "0101503v.u12", 0x100002, 0x80000, CRC(0d02a4af) SHA1(e16d4450d5273522caf3267947ed4a54047b0894) ) + ROM_LOAD32_WORD( "0101503v.u9", 0x200000, 0x80000, CRC(c999f9a6) SHA1(49752d37259affdd74bba3c04a9e8f7f15c0ccfd) ) + ROM_LOAD32_WORD( "0101503v.u13", 0x200002, 0x80000, CRC(3b116e0d) SHA1(5df873c00c1103304c2cb77cedf05a5db83ece29) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( orchidms ) ARISTOCRAT_MK5_BIOS /* @@ -4373,6 +4789,21 @@ ROM_START( partygrsa ) ROM_END +ROM_START( partygrsb ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "ahg1568.u7", 0x000000, 0x7efb7, BAD_DUMP CRC(69ab6487) SHA1(d7147f78dc098d142e857687e6cbdb8a8762371a) ) + ROM_LOAD32_WORD( "ahg1568.u11", 0x000002, 0x7ff26, BAD_DUMP CRC(966bb4f8) SHA1(3fe5238acfab27c3fa6de9c00f0edf803a939df5) ) + ROM_LOAD32_WORD( "ahg1568.u8", 0x100000, 0x7f7df, BAD_DUMP CRC(175c37cb) SHA1(6047ba1ec40ad4691bd05cf12680705f841086b3) ) + ROM_LOAD32_WORD( "ahg1568.u12", 0x100002, 0x7f7da, BAD_DUMP CRC(43764888) SHA1(cfd59692f17e9ca70dc882423238f6de59dafbed) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( peaflut ) ARISTOCRAT_MK5_BIOS /* @@ -4483,6 +4914,21 @@ ROM_START( pengpayc ) ROM_END +ROM_START( pengpayd ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0300113v.u7", 0x000000, 0x7f909, BAD_DUMP CRC(30c6c635) SHA1(9a31f99c8a7fb0a909b101b2c5767f39930934e9) ) + ROM_LOAD32_WORD( "0300113v.u11", 0x000002, 0x7ff9b, BAD_DUMP CRC(7290c743) SHA1(5f7fa8d8a0fd0bb18f2d4c81f21f39fabc34681f) ) + ROM_LOAD32_WORD( "0300113v.u8", 0x100000, 0x7faf6, BAD_DUMP CRC(1f983881) SHA1(9cefafa6074fc0f5817df226fbf01a8fb7cbbadb) ) + ROM_LOAD32_WORD( "0300113v.u12", 0x100002, 0x7fb27, BAD_DUMP CRC(7206dc37) SHA1(4d2f8551daeb4be13e73e3123e158dc1e1e4e067) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + // 586/7(b) - 10 Credit Multiplier / 9 Line Multiline. // Penguin Pays - Export B - 14/07/97. // All devices are 27c4002 instead of 27c4096. @@ -4545,65 +4991,6 @@ ROM_START( pengpuck ) ROM_END -ROM_START( petshop ) - ARISTOCRAT_MK5_BIOS - /* - Checksum code found at 0x000b88 - 0x000000-0x05f127 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored) - Expected Checksum 0x4ea85490 - Calculated Checksum 0x4ea85490 (OK) - 0x05f128-0x195c0b is the non-Checksummed range still containing data but NOT covered by Checksum - 0x05f128-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included - */ - ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) - ROM_LOAD32_WORD( "0100731v.u7", 0x000000, 0x80000, CRC(01cffccc) SHA1(a39d943e700fff34d82bcff8c61f2586ee65e673) ) - ROM_LOAD32_WORD( "0100731v.u11", 0x000002, 0x80000, CRC(a8e906c5) SHA1(f6dd7bcf5fa90933c9741699f0c1e07b685ccb40) ) - ROM_LOAD32_WORD( "0100731v.u8", 0x100000, 0x80000, CRC(757e1296) SHA1(e14508bbaa3439a93c8b716267a2198ed3c54728) ) - ROM_LOAD32_WORD( "0100731v.u12", 0x100002, 0x80000, CRC(6e74cd57) SHA1(9092e656cbd8627b208b81ca0d737483a779bce1) ) - - ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ - ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) - ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) -ROM_END - - -ROM_START( petshopa ) - ARISTOCRAT_MK5_BIOS - // checksum code not found (due to bad rom) - ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) - ROM_LOAD32_WORD( "0100679v.u7", 0x000000, 0x80000, CRC(cf4a24fa) SHA1(b510de9199d16ba7319e1b692d7c6c09fcb735dc) ) - ROM_LOAD32_WORD( "0100679v.u11", 0x000002, 0x7fffd, BAD_DUMP CRC(bfaa9216) SHA1(19f1c7de05ff7f5f9f370be00cf8f0635e966809) ) // wrong size! - ROM_LOAD32_WORD( "0100679v.u8", 0x100000, 0x80000, CRC(bb9f7519) SHA1(fa311f1ec74c3b52e2feed36d7b7dc6a12336abe) ) - ROM_LOAD32_WORD( "0100679v.u12", 0x100002, 0x80000, CRC(2cd12986) SHA1(b6b0bd6dd8c964498edc3763cb5c450795042a8d) ) - - ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ - ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) - ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) -ROM_END - - -ROM_START( phantpay ) - ARISTOCRAT_MK5_BIOS - /* - Checksum code found at 0x000adc - 0x000000-0x044713 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored) - Expected Checksum 0x5e398313 - Calculated Checksum 0x5e398313 (OK) - 0x044714-0x1d8f87 is the non-Checksummed range still containing data but NOT covered by Checksum - 0x044714-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included - */ - ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) - ROM_LOAD32_WORD( "0500005v.u7", 0x000000, 0x80000, CRC(2cfc44a7) SHA1(a2a93047311d7a1f45e2915478ba2a11d5179194) ) - ROM_LOAD32_WORD( "0500005v.u11", 0x000002, 0x80000, CRC(3e91ed2a) SHA1(92d49bd78d329ad53cb2063af2d324eada3f53d1) ) - ROM_LOAD32_WORD( "0500005v.u8", 0x100000, 0x80000, CRC(ab1e77e9) SHA1(5a8da1210214ccc89dfde2e28f5142036a743172) ) - ROM_LOAD32_WORD( "0500005v.u12", 0x100002, 0x80000, CRC(d43a092a) SHA1(5f851bd179b14ef3983b460ed932810f3713d3e5) ) - - ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ - ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) - ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) -ROM_END - - ROM_START( penpir ) ARISTOCRAT_MK5_BIOS /* @@ -4648,6 +5035,12 @@ ROM_START( penpira ) ROM_END +/* +619/3 - 10 Credit Multiplier/20 Line Multiline +Penguin Pirate 2 - Crown - A - 17/12/98 +Note: Original BIOS not dumped, using New Zealand 0700474V BIOS until an Australian version is dumped +ROM says "Pengion Pirate 2", artwork says "Penguin Piurate II" +*/ ROM_START( penpir2 ) ARISTOCRAT_MK5_BIOS /* @@ -4676,6 +5069,65 @@ ROM_START( penpir2 ) ROM_END +ROM_START( petshop ) + ARISTOCRAT_MK5_BIOS + /* + Checksum code found at 0x000b88 + 0x000000-0x05f127 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored) + Expected Checksum 0x4ea85490 + Calculated Checksum 0x4ea85490 (OK) + 0x05f128-0x195c0b is the non-Checksummed range still containing data but NOT covered by Checksum + 0x05f128-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included + */ + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0100731v.u7", 0x000000, 0x80000, CRC(01cffccc) SHA1(a39d943e700fff34d82bcff8c61f2586ee65e673) ) + ROM_LOAD32_WORD( "0100731v.u11", 0x000002, 0x80000, CRC(a8e906c5) SHA1(f6dd7bcf5fa90933c9741699f0c1e07b685ccb40) ) + ROM_LOAD32_WORD( "0100731v.u8", 0x100000, 0x80000, CRC(757e1296) SHA1(e14508bbaa3439a93c8b716267a2198ed3c54728) ) + ROM_LOAD32_WORD( "0100731v.u12", 0x100002, 0x80000, CRC(6e74cd57) SHA1(9092e656cbd8627b208b81ca0d737483a779bce1) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + +ROM_START( petshopa ) + ARISTOCRAT_MK5_BIOS + // checksum code not found (due to bad ROM) + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0100679v.u7", 0x000000, 0x80000, CRC(cf4a24fa) SHA1(b510de9199d16ba7319e1b692d7c6c09fcb735dc) ) + ROM_LOAD32_WORD( "0100679v.u11", 0x000002, 0x7fffd, BAD_DUMP CRC(bfaa9216) SHA1(19f1c7de05ff7f5f9f370be00cf8f0635e966809) ) // wrong size! + ROM_LOAD32_WORD( "0100679v.u8", 0x100000, 0x80000, CRC(bb9f7519) SHA1(fa311f1ec74c3b52e2feed36d7b7dc6a12336abe) ) + ROM_LOAD32_WORD( "0100679v.u12", 0x100002, 0x80000, CRC(2cd12986) SHA1(b6b0bd6dd8c964498edc3763cb5c450795042a8d) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + +ROM_START( phantpay ) + ARISTOCRAT_MK5_BIOS + /* + Checksum code found at 0x000adc + 0x000000-0x044713 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored) + Expected Checksum 0x5e398313 + Calculated Checksum 0x5e398313 (OK) + 0x044714-0x1d8f87 is the non-Checksummed range still containing data but NOT covered by Checksum + 0x044714-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included + */ + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0500005v.u7", 0x000000, 0x80000, CRC(2cfc44a7) SHA1(a2a93047311d7a1f45e2915478ba2a11d5179194) ) + ROM_LOAD32_WORD( "0500005v.u11", 0x000002, 0x80000, CRC(3e91ed2a) SHA1(92d49bd78d329ad53cb2063af2d324eada3f53d1) ) + ROM_LOAD32_WORD( "0500005v.u8", 0x100000, 0x80000, CRC(ab1e77e9) SHA1(5a8da1210214ccc89dfde2e28f5142036a743172) ) + ROM_LOAD32_WORD( "0500005v.u12", 0x100002, 0x80000, CRC(d43a092a) SHA1(5f851bd179b14ef3983b460ed932810f3713d3e5) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( przfight ) ARISTOCRAT_MK5_BIOS /* @@ -4788,6 +5240,11 @@ ROM_START( qnileb ) ROM_END +/* +MV4162 - 10 Credit Multiplier / 9 Line Multiline +Queen of the Nile - South America - Brazil - A - 21/08/02 +Game and BIOS are in Portuguese +*/ ROM_START( qnilebr ) ARISTOCRAT_MK5_BIOS /* @@ -4937,11 +5394,33 @@ ROM_START( qnilemax ) ROM_END +ROM_START( qnilenl ) + ARISTOCRAT_MK5_BIOS + /* + Checksum code found at 0x00104c + 0x000000-0x05d1cb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored) + Expected Checksum 0x1a708478 + Calculated Checksum 0x1a708478 (OK) + 0x05d1cc-0x16add3 is the non-Checksummed range still containing data but NOT covered by Checksum + 0x05d1cc-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included + */ + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0301059v.u7", 0x000000, 0x80000, CRC(99aa5674) SHA1(54d710b7c70c82a34c07bc699bf9c2ace7f660c3) ) + ROM_LOAD32_WORD( "0301059v.u11", 0x000002, 0x80000, CRC(c9726930) SHA1(50915edbde3672d94236b2f416c490466b5ac1c6) ) + ROM_LOAD32_WORD( "0301059v.u8", 0x100000, 0x80000, CRC(d3cd3939) SHA1(0448722e44ee5ef191c9f2abab3faf2596284822) ) + ROM_LOAD32_WORD( "0301059v.u12", 0x100002, 0x80000, CRC(e505912a) SHA1(ae71aa6d56d424383add3b9cbc17473ab0a13bdc) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + // MV4091 - 10 Credit Multiplier / 9 Line Multiline. // QUEEN OF THE NILE - NSW/ACT B - 13/05/97. // Marked as GHG409102 // All devices are 27c4002 instead of 27c4096. -// Even when it's a NSW/ACT, the program seems to be for US-Export platforms... +// ROM contains unaltered NSW/ACT region string and date, but game is for the US platform. ROM_START( qnileu ) ARISTOCRAT_MK5_BIOS_HAVE_EEPROMS /* @@ -5217,6 +5696,21 @@ ROM_START( sbuk2 ) ROM_END +ROM_START( sbuk2a ) + ARISTOCRAT_MK5_BIOS + // checksum code not found (due to missing ROMs) + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0300006v.u7", 0x000000, 0x80000, CRC(d1833c73) SHA1(1576a7877877569438571a16c51fdd56a172c60d) ) + ROM_LOAD32_WORD( "0300006v.u11", 0x000002, 0x80000, NO_DUMP ) + ROM_LOAD32_WORD( "0300006v.u8", 0x100000, 0x80000, CRC(c79a2624) SHA1(ae3cec2fe8bdcd9053ab097b5f1354fb480b4777) ) + ROM_LOAD32_WORD( "0300006v.u12", 0x100002, 0x80000, NO_DUMP ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( sbuk3 ) ARISTOCRAT_MK5_BIOS /* @@ -5261,6 +5755,25 @@ ROM_START( sbuk3a ) ROM_END +ROM_START( sldeluxe ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, first 6 files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "ahg1575.u7", 0x000000, 0x7f066, BAD_DUMP CRC(cff7ed69) SHA1(04cc65e05cf30807d6616a66ab2b20048114a3dc) ) + ROM_LOAD32_WORD( "ahg1575.u11", 0x000002, 0x7ff6c, BAD_DUMP CRC(7ee540ae) SHA1(053ecb46f9075fe2925303472c8f83f39d38ccf7) ) + ROM_LOAD32_WORD( "ahg1575.u8", 0x100000, 0x7f6ad, BAD_DUMP CRC(08d1f9b2) SHA1(816b0f7087987930afbfeef68860b6ff82b6f208) ) + ROM_LOAD32_WORD( "ahg1575.u12", 0x100002, 0x7f6f8, BAD_DUMP CRC(b8f4fb1a) SHA1(e3536bcffe34515d52f014b45c48003f61fb730d) ) + ROM_LOAD32_WORD( "ahg1575.u9", 0x200000, 0x7f530, BAD_DUMP CRC(5089db27) SHA1(a7d91dab4f2561e3da74cb7f477f82da5cc5b82f) ) + ROM_LOAD32_WORD( "ahg1575.u13", 0x200002, 0x7f56f, BAD_DUMP CRC(452a68d2) SHA1(354ff2965155d8a3e67afb9a159a571b0f713ed1) ) + ROM_LOAD32_WORD( "ahg1575.u10", 0x300000, 0x80000, CRC(39f0f9f8) SHA1(51361ab74f1e6ae47acfddbccb220cc5da4725dd) ) + ROM_LOAD32_WORD( "ahg1575.u14", 0x300002, 0x80000, CRC(bd890100) SHA1(c82b2891287429a3e77ccaf9b66139f0548f1902) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( slvrwolf ) ARISTOCRAT_MK5_BIOS /* @@ -5306,11 +5819,11 @@ ROM_END ROM_START( swhr2 ) ARISTOCRAT_MK5_BIOS /* - Checksum code found at 0x000b68 - 0x000000-0x05b507 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored) - Expected Checksum 0x757b4b7c - Calculated Checksum 0x757b4b7c (OK) - 0x05b508-0x0c43af is the non-Checksummed range (unusual endpoint) + Checksum code found at 0x000b68 + 0x000000-0x05b507 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored) + Expected Checksum 0x757b4b7c + Calculated Checksum 0x757b4b7c (OK) + 0x05b508-0x0c43af is the non-Checksummed range (unusual endpoint) */ ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) ROM_LOAD32_WORD( "0200465v.u7", 0x000000, 0x80000, CRC(23350042) SHA1(fd839a4835358057a5ee1fcaf716f2443461352d) ) @@ -5491,7 +6004,32 @@ ROM_START( toutango ) ROM_LOAD32_WORD( "0100782v.u13", 0x200002, 0x80000, CRC(f8a67a69) SHA1(b1a28047cb4572ae15359c30f71cafa4bd70658c) ) ROM_LOAD32_WORD( "0100782v.u10", 0x300000, 0x80000, CRC(e6528de7) SHA1(b3aa1937f0b673ba2cfa68acc7cb540ebefc66d4) ) ROM_LOAD32_WORD( "0100782v.u14", 0x300002, 0x80000, CRC(69f2acde) SHA1(cda52548e675a06677a2d9fee89b33f9abb96f64) ) - + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + +ROM_START( toutangonl ) + ARISTOCRAT_MK5_BIOS + /* + Checksum code found at 0x00104c + 0x000000-0x060dbf is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored) + Expected Checksum 0xa9e7ac03 + Calculated Checksum 0xa9e7ac03 (OK) + 0x060dc0-0x33d693 is the non-Checksummed range (unusual endpoint) + */ + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0301388v.u7", 0x000000, 0x80000, CRC(56fa9535) SHA1(660cb91302420dddce3ffeb51f0fcc3bb235acbe) ) + ROM_LOAD32_WORD( "0301388v.u11", 0x000002, 0x80000, CRC(35ee6272) SHA1(8ba9b41f2c614ff0814730cac57456d8a5dabbcb) ) + ROM_LOAD32_WORD( "0301388v.u8", 0x100000, 0x80000, CRC(96110e37) SHA1(43a54721bdfa2be10698ee79fd9a2a4498eae6fa) ) + ROM_LOAD32_WORD( "0301388v.u12", 0x100002, 0x80000, CRC(e00a0b1e) SHA1(353ca6caf8cf3e10b9800a03a97159908903bd44) ) + ROM_LOAD32_WORD( "0301388v.u9", 0x200000, 0x80000, CRC(3ef412b1) SHA1(c5dd849e1b325ec0c9b77092522f5fe538cff4c3) ) + ROM_LOAD32_WORD( "0301388v.u13", 0x200002, 0x80000, CRC(dbba3cfb) SHA1(c836ee3ba8f7cfeb8a099a08407cb6e52880ed32) ) + ROM_LOAD32_WORD( "0301388v.u10", 0x300000, 0x80000, CRC(29c39bb8) SHA1(9c2c16b8a71bac493490bcc0d177c7a762f526b4) ) + ROM_LOAD32_WORD( "0301388v.u14", 0x300002, 0x80000, CRC(fbb37975) SHA1(648b56df5047b8ae60b41bdf29f35f8bf8fe2d29) ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) @@ -5676,6 +6214,21 @@ ROM_START( unicorndnz ) ROM_END +ROM_START( unicorndu ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "bhg1584.u7", 0x000000, 0x7f06e, BAD_DUMP CRC(4867364d) SHA1(f8f89bcd38b6fda5a5344c3aa5547f24da4a88e5) ) + ROM_LOAD32_WORD( "bhg1584.u11", 0x000002, 0x7ff68, BAD_DUMP CRC(9798b89b) SHA1(bf95196c3aba938813e40fb819baa37a51380fd2) ) + ROM_LOAD32_WORD( "bhg1584.u8", 0x100000, 0x7fa38, BAD_DUMP CRC(960f3e5f) SHA1(981d90277df2aeb76931fe87cf41e11fcdcc132b) ) + ROM_LOAD32_WORD( "bhg1584.u12", 0x100002, 0x7f9ec, BAD_DUMP CRC(15f5d3b0) SHA1(68145549a8c1e58e805e8c4fe1a9fc60e7e3d39d) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( wamazon ) ARISTOCRAT_MK5_BIOS /* @@ -5839,6 +6392,21 @@ ROM_START( wcougaru ) ROM_END +ROM_START( wcoyote ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "ahg1515.u7", 0x000000, 0x7f070, BAD_DUMP CRC(045858cd) SHA1(232a9631bcdbbd2e60970eca62bdc540e537e1f2) ) + ROM_LOAD32_WORD( "ahg1515.u11", 0x000002, 0x7ff6c, BAD_DUMP CRC(609f181b) SHA1(4cb7c47f0167c0487db419ad7a3c4b4e10a054f3) ) + ROM_LOAD32_WORD( "ahg1515.u8", 0x100000, 0x7fede, BAD_DUMP CRC(25f47c9b) SHA1(cf44f32626107424c8473f275dd6736302763e79) ) + ROM_LOAD32_WORD( "ahg1515.u12", 0x100002, 0x7ff14, BAD_DUMP CRC(0068bce4) SHA1(37517f6bd53660deab471f41a4d63c4b03bf22b3) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( wizways ) ARISTOCRAT_MK5_BIOS /* @@ -5927,6 +6495,23 @@ ROM_START( wthing ) ROM_END +ROM_START( wthinga ) + ARISTOCRAT_MK5_BIOS + // checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D + ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF ) + ROM_LOAD32_WORD( "0201176v.u7", 0x000000, 0x7f44a, BAD_DUMP CRC(e2632da7) SHA1(ff53d87d8f45c3bcece358d0ecfa89e6912e1ccf) ) + ROM_LOAD32_WORD( "0201176v.u11", 0x000002, 0x7faa7, BAD_DUMP CRC(aa8252ee) SHA1(f60d36269d26b9eee4b9f0bcd8eab028c58b81c8) ) + ROM_LOAD32_WORD( "0201176v.u8", 0x100000, 0x7f5eb, BAD_DUMP CRC(0c5768aa) SHA1(0048e73bb6274b8586f31fe2e23209bb1910ae96) ) + ROM_LOAD32_WORD( "0201176v.u12", 0x100002, 0x7f63c, BAD_DUMP CRC(9fe934e4) SHA1(0178226594fcc9c140f00c8272cca9e3be19dda2) ) + ROM_LOAD32_WORD( "0201176v.u9", 0x200000, 0x7ffd6, BAD_DUMP CRC(633eff32) SHA1(12314db898f8e553cf5ae099cd8b2b9f0c4da3c6) ) + ROM_LOAD32_WORD( "0201176v.u13", 0x200002, 0x7ffdb, BAD_DUMP CRC(026317bc) SHA1(94a48b33ddc60d6271ac0a89fc86b9f1be68f9a6) ) + + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */ + ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 ) + ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 ) +ROM_END + + ROM_START( wtiger ) ARISTOCRAT_MK5_BIOS /* @@ -5987,10 +6572,10 @@ GAMEL( 2002, alchemst, aristmk5, aristmk5, goldenra, aristmk5_state, aristm GAMEL( 2000, bparty, aristmk5, aristmk5_usa_touch, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bachelorette Party (BHG1248, US)", MACHINE_FLAGS, layout_bparty ) // MV4119/1, B - 25/08/2000 GAMEL( 1996, baddog, aristmk5, aristmk5, baddog, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bad Dog Poker (0200428V, NSW/ACT)", MACHINE_FLAGS, layout_baddog ) // 386/56, A - 17/12/96 GAMEL( 1998, bootsctn, aristmk5, aristmk5, cashcham, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (0100812V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 616/1, B - 11/12/98 -GAMEL( 1999, bootsctnua,bootsctn, aristmk5_usa, pengpuck, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (GHG1008-03, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4098/1, A - 27/07/99 +GAMEL( 1999, bootsctnua,bootsctn, aristmk5_usa, pengpuck, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (GHG1008-03, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4098/1, A - 27/07/99 GAMEL( 1996, bumblbug, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (0200510V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 593, D - 5/07/96 GAMEL( 1996, bumblbugql,bumblbug, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (0200456V, Queensland)", MACHINE_FLAGS, layout_swhr2 ) // 593, D - 5/07/96 -GAMEL( 1995, buttdeli, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Butterfly Delight (0200143V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 571/4, A - 19/12/95 +GAMEL( 1995, buttdeli, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Butterfly Delight (0200143V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 571/4, A - 19/12/95, Rev 1.8.1.0 GAMEL( 1998, cashcat, aristmk5, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Cat (0100676V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 614/3, A - 03/04/98 GAMEL( 1997, cashcata, cashcat, aristmk5, aristmk5_9, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Cat (0100557V, NSW/ACT)", MACHINE_FLAGS, layout_dolphntrb ) // 614/1, B - 01/12/97 GAMEL( 1999, cashcatnz, cashcat, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Cat (0300863V, New Zealand)", MACHINE_FLAGS, layout_cashcatnz ) // MV4089, A - 4/1/99 @@ -6055,7 +6640,7 @@ GAMEL( 1997, magtcha5, aristmk5, aristmk5_touch, dimtouch, aristmk5_state, aris GAMEL( 1997, magtcha5a, magtcha5, aristmk5_touch, dimtouch, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Touch (0200455V, NSW/ACT)", MACHINE_FLAGS, layout_dimtouch ) // 606, A - 06/03/97 GAMEL( 1997, mammothm, aristmk5, aristmk5, kgalah, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mammoth Money (0100425V, NSW/ACT)", MACHINE_FLAGS, layout_kgalah ) // 595/5, D - 07/04/97 GAMEL( 2000, marmagic, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)", MACHINE_FLAGS, layout_marmagic ) // JB005, A - 07/07/00 -GAMEL( 2000, marmagicua,marmagic, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1558, US)", MACHINE_FLAGS, layout_aristmk5_us ) // US003, 07/07/2000 +GAMEL( 2000, marmagicu, marmagic, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1558, US)", MACHINE_FLAGS, layout_aristmk5_us ) // US003, 07/07/2000 GAMEL( 1996, minemine, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (0400115V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 559/2, D - 16/01/96 GAMEL( 1996, minemineu, minemine, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mine, Mine, Mine (VHG0416-99, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 559/2, E - 14/02/96 GAMEL( 1997, monmouse, aristmk5, aristmk5, cashcham, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Money Mouse (0400469V, NSW/ACT)", MACHINE_FLAGS, layout_cashcham ) // 607/1, B - 08/04/97 @@ -6065,6 +6650,7 @@ GAMEL( 1996, mountmon, aristmk5, aristmk5, mountmon, aristmk5_state, aristm GAMEL( 1996, mountmona, mountmon, aristmk5, mystgard, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mountain Money (0100289V, NSW/ACT)", MACHINE_FLAGS, layout_mystgard ) // 595/2, C - 11/06/96 GAMEL( 2000, multidrw, aristmk5, aristmk5, multidrw, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Multidraw - Free Games (0200956V, NSW/ACT)", MACHINE_FLAGS, layout_multidrw ) // 386/64, E - 08/05/00 GAMEL( 1996, mystgard, aristmk5, aristmk5, mystgard, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mystic Garden (0100275V, NSW/ACT)", MACHINE_FLAGS, layout_mystgard ) // 595/1, B - 11/06/96 +GAMEL( 2001, one4all, aristmk5, aristmk5, one4all, aristmk5_state, aristmk5, ROT0, "Aristocrat", "One For All (0101503V, New Zealand)", MACHINE_FLAGS, layout_one4all ) // MV4141, A - 28/05/01 GAMEL( 1999, orchidms, aristmk5, aristmk5, orchidms, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Orchid Mist (0200849V, NSW/ACT)", MACHINE_FLAGS, layout_orchidms ) // 601/3, C - 03/02/99 GAMEL( 1999, orchidmsa, orchidms, aristmk5, orchidms, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Orchid Mist (0100849V, NSW/ACT)", MACHINE_FLAGS, layout_orchidms ) // 601/3, C - 03/02/99 GAMEL( 1996, oscara5, aristmk5, aristmk5, aristmk5_9, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Oscar (0200348V, NSW/ACT)", MACHINE_FLAGS, layout_dolphntrb ) // 593/2, C - 20/09/96 @@ -6076,10 +6662,10 @@ GAMEL( 2000, peaflut, aristmk5, aristmk5, trstrove, aristmk5_state, aristm GAMEL( 1997, pengpay, aristmk5, aristmk5, cashchama, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200460V, NSW/ACT)", MACHINE_FLAGS, layout_cashchama ) // 586/4(a), D - 03/06/97 GAMEL( 1996, pengpaya, pengpay, aristmk5, cashchama, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200357V, NSW/ACT)", MACHINE_FLAGS, layout_cashchama ) // 586/4, C - 12/11/96 GAMEL( 1997, pengpayb, pengpay, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200359V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 586/3(a), D - 03/06/97 -GAMEL( 1995, pengpayc, pengpay, aristmk5, wcougar, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (0100113V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 586, A - 12/10/95 +GAMEL( 1995, pengpayc, pengpay, aristmk5, wcougar, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (0200113V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 586, A - 12/10/95 GAMEL( 1997, pengpayu, pengpay, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (BHI0417-03, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 586/7(b), B - 14/07/97 -GAMEL( 2001, pengpuck, pengpay, aristmk5_usa, pengpuck, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays - Penguin Pucks (EHG1257, US)", MACHINE_FLAGS, layout_pengpuck ) // MV4122/1, C - 19/01/01 -GAMEL( 1998, petshop, aristmk5, aristmk5, petshop, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Pet Shop (0100731V, NSW/ACT)", MACHINE_FLAGS, layout_petshop ) // 618/1, A - 17/04/98 +GAMEL( 2001, pengpuck, pengpay, aristmk5_usa, pengpuck, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays - Penguin Pucks (EHG1257, US)", MACHINE_FLAGS, layout_pengpuck ) // MV4122/1, C - 19/01/01 +GAMEL( 1998, petshop, aristmk5, aristmk5, petshop, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Pet Shop (0100731V, NSW/ACT)", MACHINE_FLAGS, layout_petshop ) // 618/1, A - 17/04/98 GAMEL( 1995, phantpay, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Phantom Pays (0500005V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 570/1, E - 12/09/95 GAMEL( 1998, penpir, aristmk5, aristmk5, kgalah, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pirate (0100674V, NSW/ACT)", MACHINE_FLAGS, layout_kgalah ) // 619/1, A - 31/03/98 GAMEL( 1998, penpira, penpir, aristmk5, snowcat, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pirate (0200578V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 619, A - 27/02/98 @@ -6092,6 +6678,7 @@ GAMEL( 1997, qnileb, qnile, aristmk5, qnile, aristmk5_state, aristm GAMEL( 2002, qnilebr, qnile, aristmk5, goldpyrb, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0101707V, Brazil)", MACHINE_FLAGS, layout_goldpyrb ) // MV4162, A - 21/08/02 GAMEL( 1997, qnilec, qnile, aristmk5, qnilec, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0300440V, NSW/ACT)", MACHINE_FLAGS, layout_qnilec ) // 602/3, B - 13/05/97, 9 lines GAMEL( 1999, qniled, qnile, aristmk5, checkma5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0101139V, NSW/ACT)", MACHINE_FLAGS, layout_qniled ) // 602/16, A - 11/10/99, 3 lines +GAMEL( 2000, qnilenl, qnile, aristmk5, qnilenl, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0301059V, Holland)", MACHINE_FLAGS, layout_qnilenl ) // 602/5, G - 10/04/00 GAMEL( 1997, qnileu, qnile, aristmk5_usa, dolphntru, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (GHG4091-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4091, B - 13/05/97 GAMEL( 1997, qnilev, qnile, aristmk5, aristmk5_9, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (04J00784, Venezuela)", MACHINE_FLAGS, layout_dolphntrb ) // 602/3, B - 13/05/97, 9 lines GAMEL( 2001, qnilece, qnile, aristmk5_usa, dolphntrce, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile - Cash Express (AHG1609, US)", MACHINE_FLAGS, layout_dolphntrce ) // MV4091/1, A - 17/01/01, 20 lines @@ -6118,6 +6705,7 @@ GAMEL( 1996, thndh, aristmk5, aristmk5, snowcat, aristmk5_state, aristm GAMEL( 1996, thndha, thndh, aristmk5, wildbill, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Thunder Heart (0200334V, NSW/ACT)", MACHINE_FLAGS, layout_wildbill ) // 597/1, A - 14/08/96, 3 lines GAMEL( 1997, topbana, aristmk5, aristmk5, wildbill, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Top Banana (0100550V, NSW/ACT)", MACHINE_FLAGS, layout_wildbill ) // 594/3, A - 18/08/97 GAMEL( 1998, toutango, aristmk5, aristmk5, kgalah, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Toucan Tango (0100782V, NSW/ACT)", MACHINE_FLAGS, layout_kgalah ) // 616/1, A - 17/06/98 +GAMEL( 1999, toutangonl, toutango, aristmk5, toutangonl, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Toucan Tango (0301388V, Holland)", MACHINE_FLAGS, layout_toutangonl ) // 616, C - 11/05/99 GAMEL( 2000, trstrove, aristmk5, aristmk5, trstrove, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Treasure Trove (01J00161, NSW/ACT)", MACHINE_FLAGS, layout_trstrove ) // JB001/3, A - 5/10/00 GAMEL( 2002, tritreat, aristmk5, aristmk5, trstrove, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Triple Treat (0201692V, NSW/ACT)", MACHINE_FLAGS, layout_trstrove ) // 692, A - 17/05/02 GAMEL( 2001, trojhors, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Trojan Horse (01J00851, NSW/ACT)", MACHINE_FLAGS, layout_marmagic ) // JB001/5, A - 30/10/01 @@ -6140,22 +6728,43 @@ GAMEL( 1999, wtiger, aristmk5, aristmk5, wtiger, aristmk5_state, aristm GAMEL( 2000, yukongl5, aristmk5, aristmk5, goldenra, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Yukon Gold (03J00191, NSW/ACT)", MACHINE_FLAGS, layout_yukongld ) // JB005/1, A - 30/10/2000, Rev 17 // the following might be bad dumps or need different hardware (unconfirmed) -GAMEL( 1996, blackpnt, aristmk5, aristmk5, wildbill, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Black Panther (0200818V, Victoria)", MACHINE_FLAGS, layout_wildbill ) // 594/1, A - 30/07/96 - doesn't boot, 'needs VLC (Video Lottery Consultants) comms instead of QCOM' (or bad?) +GAMEL( 1996, blackpnt, aristmk5, aristmk5, wildbill, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Black Panther (0200818V, Victoria)", MACHINE_FLAGS, layout_wildbill ) // 594/1, A - 30/07/96 - doesn't boot, uses VLC (Video Lottery Consultants) comms instead of QCOM (or are there bad ROMs?) // the following parent sets are known bad dumps, and do not boot (confirmed) +GAMEL( 1996, canrose, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Canyon Rose (AHG1463, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 603(a), B - 06/12/96 (same as Cash Chameleon) +GAMEL( 2000, diamdest, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Diamond Destiny (AHG1533, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4115_5, A - 09/05/2000 (same as Magic Mask) +GAMEL( 2001, fortfvr, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Fortune Fever (BHG1566, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4122/2, A - 13/05/01 GAMEL( 1998, gambler, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "The Gambler (EHG0916-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4084/1, A - 30/10/98 -GAMEL( 2001, koalamnt, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Koala Mint (CHG1573, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4137, A - 12/09/01 +GAMEL( 1996, jumpbean, aristmk5, aristmk5, swhr2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Jumping Beans (0100161V, NSW/ACT)", MACHINE_FLAGS, layout_swhr2 ) // 586/2, A - 25/01/96 +GAMEL( 2001, koalamnt, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Koala Mint (CHG1573, US, set 1)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4137, A - 12/09/01 GAMEL( 1997, mgarden, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Garden (AHG1211-99, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4033, B - 10/02/97 GAMEL( 1999, sbuk2, aristmk5, aristmk5, sbuk2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Super Bucks II (0400501V, NSW/ACT)", MACHINE_FLAGS, layout_sbuk2 ) // 578, G - 26/07/99 -GAMEL( 1997, trpdlghtu, trpdlght, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Tropical Delight (PHG0625-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 577/3, D - 24/09/97 +GAMEL( 2001, sldeluxe, aristmk5, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweet Liberty Deluxe (AHG1575, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4137, A - 11/02/01 +GAMEL( 2001, wcoyote, aristmk5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Coyote (AHG1515, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4134, A - 30/07/01 // the following clone sets are known bad dumps, and do not boot (confirmed) GAMEL( 2001, adonisu, adonis, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (BHG1508, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4124/1, B - 31/07/01 GAMEL( 1999, bootsctnu, bootsctn, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Boot Scootin' (GHG1012-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4098, A - 25/08/99 +GAMEL( 2000, bpartya, bparty, aristmk5_usa_touch, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bachelorette Party (BHG1579, US)", MACHINE_FLAGS, layout_bparty ) // MV4119/1, B - 25/08/2000 GAMEL( 1997, bumblbugu, bumblbug, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Bumble Bugs (CHG0479-03, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 593, D - 05/07/97 GAMEL( 1996, cashchamu, cashcham, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Chameleon (DHG4078-99, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 603(a), B - 06/12/96 +GAMEL( 1997, cashcra5a, cashcra5, aristmk5, aristmk5_9, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Cash Crop (0300447V, NSW/ACT)", MACHINE_FLAGS, layout_dolphntrb ) // 607/2, C - 29/08/97 +GAMEL( 2001, dynajacku, dynajack, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dynamite Jack (CHG1562, US)", MACHINE_FLAGS, layout_aristmk5_us ) // US002, A - 11/07/01 +GAMEL( 2000, eforsta5ce, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Enchanted Forest - Cash Express (CHG1536, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4108/6, C - 17/01/00 GAMEL( 1997, eforsta5u, eforsta5, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Enchanted Forest (JHG0415-03, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4033, B - 10/02/97 GAMEL( 1997, goldpyra, goldpyr, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (AHG1206-99, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 602/2, B - 13/05/97 -GAMEL( 2000, marmagicu, marmagic, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // US003, A - 07/07/00 +GAMEL( 2000, incasunua, incasun, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Inca Sun (DHG1577, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4130, A - 05/09/00 +GAMEL( 2001, koalamnta, koalamnt, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Koala Mint (CHG1573, US, set 2)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4137, A - 12/09/01 +GAMEL( 2001, locolootu, locoloot, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Loco Loot (AHG1513, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4134, A - 30/07/01 +GAMEL( 2000, marmagicua, marmagic, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, US, set 1)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // US003, A - 07/07/00 +GAMEL( 2000, marmagicub, marmagic, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (EHG1559, US, set 2)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // US003, A - 07/07/00 +GAMEL( 2001, mountmonce, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mountain Money - Cash Express (AHG1629, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4108/5, A - 10/03/01 +GAMEL( 2001, mountmonu, mountmon, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Mountain Money (BHG1465, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4108/5, A - 10/03/01 GAMEL( 2001, partygrsa, partygrs, aristmk5_usa_touch, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Party Gras (BHG1284, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4115/3, B - 06/02/01 +GAMEL( 2001, partygrsb, partygrs, aristmk5_usa_touch, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Party Gras (AHG1568, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4115/6, A - 10/11/2001 +GAMEL( 1995, pengpayd, pengpay, aristmk5, wcougar, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Penguin Pays (0300113V, NSW/ACT)", MACHINE_FLAGS, layout_wcougar ) // 586, A - 12/10/95 GAMEL( 1998, petshopa, petshop, aristmk5, snowcat, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Pet Shop (0100679V, NSW/ACT)", MACHINE_FLAGS, layout_snowcat ) // 618, A - 09/03/98 +GAMEL( 1995, sbuk2a, sbuk2, aristmk5, sbuk2, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Super Bucks II (0300006V, NSW/ACT)", MACHINE_FLAGS, layout_sbuk2 ) // no data due to missing ROMs GAMEL( 1998, swhr2u, swhr2, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweethearts II (PHG0742-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // MV4061, A - 29/06/98 +GAMEL( 1997, trpdlghtu, trpdlght, aristmk5_usa, aristmk5_usa, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Tropical Delight (PHG0625-02, US)", MACHINE_FLAGS, layout_aristmk5_us ) // 577/3, D - 24/09/97 +GAMEL( 2001, unicorndu, unicornd, aristmk5_usa, bootsctnua, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Unicorn Dreaming (BHG1584, US)", MACHINE_FLAGS, layout_aristmk5_us_200 ) // MV4130/1, C - 10/17/01 +GAMEL( 2000, wthinga, wthing, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Wild Thing (0201176V, NSW/ACT)", MACHINE_FLAGS, layout_aristmk5 ) // 608/5, B - 25/02/00 diff --git a/src/mame/drivers/aristmk6.cpp b/src/mame/drivers/aristmk6.cpp index 23fd68d8cf3..e0f755d96f4 100644 --- a/src/mame/drivers/aristmk6.cpp +++ b/src/mame/drivers/aristmk6.cpp @@ -4,6 +4,7 @@ Aristocrat MK6 (2000) Product numbers: 410480, 410481, 410556, 410557 + 410485 (System EPROM Board) Hitachi SH4 7750 NEC PowerVR Neon 250 (PMX1-LC) @@ -13,10 +14,11 @@ PCI PLX9054 Aristocrat MK6 XP (2002) Product numbers: 410540, 410541 + 410663 (Storage Expansion Board) same as above except: - Altera APEX instead of FLEX -- doesnt have PCI controller +- doesn't have PCI controller notes: 0x0001CA1E - critical error handler in BIOS, R4 - pointer to error message @@ -316,7 +318,7 @@ INPUT_PORTS_END #define ARISTMK6_CPU_CLOCK XTAL_200MHz // ? -static MACHINE_CONFIG_START( aristmk6, aristmk6_state ) +static MACHINE_CONFIG_START( aristmk6 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH4LE, ARISTMK6_CPU_CLOCK) MCFG_SH4_MD0(1) @@ -358,107 +360,142 @@ MACHINE_CONFIG_END #define ROM_LOAD64_WORD_BIOS(bios, name, offset, length, hash) \ ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_SKIP(6) | ROM_BIOS(bios+1)) /* Note '+1' */ +/* +BIOS/set chips are known to be in 3 locations depending on the PCB used: +"System Right" is at u83 on MK6 and MK6XP boards, u2 on MK6 System EPROM board and u20 on storage expansion board +"System Left" is at u70 on MK6 and MK6XP boards, u3 on MK6 System EPROM board and u10 on storage expansion board +The earliest BIOSes used 4 chips, leaving room for only 4 game EPROMs on a standard MK6 board -// to test whether the BIOS loading is fine, let's check the correct endianness of text string in CPU space -// typically at around 0x3100-0x3200, 0x3600-0x3700 for Left/Right BIOS dumps (2 files) +To test whether the BIOS loading is fine, let's check the correct endianness of text string in CPU space +typically at around 0x3100-0x3200, 0x3600-0x3700 for Left/Right BIOS dumps (2 files) +*/ #define ARISTMK6_BIOS \ ROM_REGION( 0x0400000, "maincpu", ROMREGION_ERASEFF) \ - ROM_SYSTEM_BIOS( 0, "bios0", "Aristocrat MK6 Base (15011025, Malaysia)" ) \ - ROM_LOAD32_WORD_BIOS( 0, "15011025.u83", 0x0000000, 0x0200000, CRC(bf21a975) SHA1(a251b1a7342387300689cd50fe4ce7975b903ac5) ) \ - ROM_LOAD32_WORD_BIOS( 0, "15011025.u70", 0x0000002, 0x0200000, CRC(c02e14b0) SHA1(6bf98927813519dfe60e582dbe5be3ccd87f7c91) ) \ - ROM_SYSTEM_BIOS( 1, "bios1", "Aristocrat MK6 Base (11011901, NSW/ACT)" ) \ - ROM_LOAD32_WORD_BIOS( 1, "11011901.u83", 0x0000000, 0x0200000, CRC(73dcb11c) SHA1(69ae4f32a0c9141b2a82ff3935b0cd20333d2964) ) \ - ROM_LOAD32_WORD_BIOS( 1, "11011901.u70", 0x0000002, 0x0200000, CRC(d3dd2210) SHA1(3548f8cc39859d3f44a55f6bae48966a2d48e0eb) ) \ - ROM_SYSTEM_BIOS( 2, "bios2", "Aristocrat MK6 Base (19012801)" ) \ - ROM_LOAD32_WORD_BIOS( 2, "19012801 System Left", 0x0000002, 0x0200000, CRC(b03bd17c) SHA1(f281e80f6dda5b727ed71d2deebe3b0ff548773f) ) /* From Cactus Corral & Cashman Tonight & Heart of Vegas & Moonlight Waltz */ \ - ROM_LOAD32_WORD_BIOS( 2, "19012801 System Right", 0x0000000, 0x0200000, CRC(5b20a96c) SHA1(5fd916b7cc2cdd51bf7dd212c1114f94dc9c7926) ) \ - ROM_SYSTEM_BIOS( 3, "bios3", "Aristocrat MK6 Base (13012001)" ) \ - ROM_LOAD32_WORD_BIOS( 3, "System 13 Eprom Set -2MB-M27V160 Left", 0x0000002, 0x0200000, CRC(38e8f659) SHA1(88c6acba99b0aca023c6f4d27c061c231490e9e0) ) /* From Grizzly & Queen of the Nile */ \ - ROM_LOAD32_WORD_BIOS( 3, "System 13 Eprom Set -2MB-M27V160 Right", 0x0000000, 0x0200000, CRC(e627dbfa) SHA1(4fedbe0975ceb7dc0ebebf18a7708d78984db9b7) ) \ - ROM_SYSTEM_BIOS( 4, "bios4", "Aristocrat MK6 Base (07010801)" ) \ - ROM_LOAD32_WORD_BIOS( 4, "07010801_SYSTEM_EPROM_NSW_LEFT", 0x0000002, 0x0200000, CRC(8e92af68) SHA1(00d2bb655b7964a9652896741210ec534df0b0d2) ) /* From Jailbreak */ \ - ROM_LOAD32_WORD_BIOS( 4, "07010801_SYSTEM_EPROM_NSW_RIGHT", 0x0000000, 0x0200000, CRC(8c148c11) SHA1(5ff3be18455b4f04675fec8d5b9d881295c65e23) ) \ - ROM_SYSTEM_BIOS( 5, "bios5", "Aristocrat MK6 Base (21012901)" ) \ - ROM_LOAD32_WORD_BIOS( 5, "NSWsystem21_left", 0x0000002, 0x0200000, CRC(0d271470) SHA1(5cd4b604bfe2fd7e9a8d08e1c7c97f17ae068479) ) /* From Red Baron */ \ - ROM_LOAD32_WORD_BIOS( 5, "NSWsystem21_right", 0x0000000, 0x0200000, CRC(757618f2) SHA1(43f9a3e7d544979f8c6974945914d9e099b02abd) ) \ - ROM_SYSTEM_BIOS( 6, "bios6", "Aristocrat MK6 Base (24013001)" ) \ - ROM_LOAD32_WORD_BIOS( 6, "24013001 Left", 0x0000002, 0x0200000, CRC(06ae7e07) SHA1(39a45575b66906d73b519988d1001c99b05c5f34) ) /* From Wild Stalion */ \ - ROM_LOAD32_WORD_BIOS( 6, "24013001 Right", 0x0000000, 0x0200000, CRC(e97afedf) SHA1(10ca3b015afaff5d7812f0f5207b2535602136a5) ) \ - ROM_SYSTEM_BIOS( 7, "bios7", "Aristocrat MK6 Base (04010501)" ) \ - ROM_LOAD32_WORD_BIOS( 7, "System 04 Eprom Set -1MB-M27V800 Left", 0x0000002, 0x0100000, CRC(21182775) SHA1(7c5b7f5aba3babc85f512a8f7d4ebc0d83eb842a) ) /* From Diamonds Forever */ \ - ROM_LOAD32_WORD_BIOS( 7, "System 04 Eprom Set -1MB-M27V800 Right", 0x0000000, 0x0100000, CRC(3daefb7a) SHA1(411471713219f4bab5ccf5fe7a12a6c138c8c550) ) \ - ROM_SYSTEM_BIOS( 8, "bios8", "Aristocrat MK6 Base (05010601)" ) \ - ROM_LOAD32_WORD_BIOS( 8, "05010601_SYSTEM_EPROM_NSW_LEFT", 0x0000002, 0x0100000, CRC(b3e6b4a0) SHA1(3bf398c9257579f8e51ce716d6ebfa74fa510273) ) /* From Thai Princess & Venetian Nights */ \ - ROM_LOAD32_WORD_BIOS( 8, "05010601_SYSTEM_EPROM_NSW_RIGHT", 0x0000000, 0x0100000, CRC(c12eac11) SHA1(683b9ddc323865ace7dca37d13b55de6e42759a5) ) \ - ROM_SYSTEM_BIOS( 9, "bios9", "Aristocrat MK6 Base (03010301)" ) \ - ROM_LOAD64_WORD_BIOS( 9, "03010301.u70", 0x0000006, 0x0100000, CRC(5ae69121) SHA1(36dd3f9aaf5f7d2751d1954d67f898bc3ec71f3b) ) /* From Queen of the Nile Special Edition */ \ - ROM_LOAD64_WORD_BIOS( 9, "03010301.u71", 0x0000002, 0x0100000, CRC(d793440a) SHA1(dced4c04bde13293af77a9a1f4c5c606e3758de0) ) \ - ROM_LOAD64_WORD_BIOS( 9, "03010301.u83", 0x0000004, 0x0100000, CRC(c8580554) SHA1(58b8bfff2f8d298c4e3be2b01900800c45fa7ad7) ) \ - ROM_LOAD64_WORD_BIOS( 9, "03010301.u84", 0x0000000, 0x0100000, CRC(a34a9f16) SHA1(b8750e6ceb1715da8e5ac2f0183254e29a042641) ) \ - ROM_SYSTEM_BIOS( 10, "bios10", "Aristocrat MK6 Base (02010201)" ) \ - ROM_LOAD64_WORD_BIOS( 10, "System 02010201 Eprom Set -1MB-M27V800.u70", 0x0000006, 0x0100000, CRC(9b2db442) SHA1(d512398a2d9257bd385dc50d61c63cd1a47300ba) ) /* From Money Tree & From Go For Green */ \ - ROM_LOAD64_WORD_BIOS( 10, "System 02010201 Eprom Set -1MB-M27V800.u71", 0x0000002, 0x0100000, CRC(24d5614a) SHA1(fdcf3826dccc72b74b66379b1411cf211d5a1670) ) \ - ROM_LOAD64_WORD_BIOS( 10, "System 02010201 Eprom Set -1MB-M27V800.u83", 0x0000004, 0x0100000, CRC(5f64a20c) SHA1(397404ab6d2a1aa3c1fc77bb9421fef7079b65a5) ) \ - ROM_LOAD64_WORD_BIOS( 10, "System 02010201 Eprom Set -1MB-M27V800.u84", 0x0000000, 0x0100000, CRC(0920930f) SHA1(771b0f62442d1c75b1bb59ad82365b7ab8747173) ) \ - ROM_SYSTEM_BIOS( 11, "bios11", "Aristocrat MK6 Base (02010114)" ) \ - ROM_LOAD64_WORD_BIOS( 11, "02010114 System Set 1MB M27V800.u70", 0x0000006, 0x0100000, CRC(3ba4379f) SHA1(84367f12c4c9224d2ab9cae83ae8727de338408c) ) /* From Arabian Nights */ \ - ROM_LOAD64_WORD_BIOS( 11, "02010114 System Set 1MB M27V800.u71", 0x0000002, 0x0100000, CRC(8f83c3dd) SHA1(a5f9d80b4b515b24299d0241e1665cfd9da8bab7) ) \ - ROM_LOAD64_WORD_BIOS( 11, "02010114 System Set 1MB M27V800.u83", 0x0000004, 0x0100000, CRC(945104d7) SHA1(e372d0cf889c72b5d001b26fe4a925a28486537f) ) \ - ROM_LOAD64_WORD_BIOS( 11, "02010114 System Set 1MB M27V800.u84", 0x0000000, 0x0100000, CRC(183e3836) SHA1(4c802d0cd010bc007acb3a83e37aaa29b2d13d87) ) \ - ROM_SYSTEM_BIOS( 12, "bios12", "Aristocrat MK6 Base (USA)" ) \ - ROM_LOAD32_WORD_BIOS( 12, "system-base-.01.03.14.-u70-27v160", 0x0000002, 0x0200000, CRC(7138fec4) SHA1(f81331d1875ac574d3e6c98be218ff25c6c7be5a) ) /* From Dave Dragon */ \ - ROM_LOAD32_WORD_BIOS( 12, "system-base-.01.03.14.-u83-27v160", 0x0000000, 0x0200000, CRC(889ffd82) SHA1(9c98c9cdcf5f7d05095f11006418133029e9f0f8) ) \ - ROM_SYSTEM_BIOS( 13, "bios13", "Aristocrat MK6 Base (USA, set 2)" ) \ - ROM_LOAD32_WORD_BIOS( 13, "system-base-u70-01.03.06-m27v160", 0x0000002, 0x0200000, CRC(2f9d9a29) SHA1(fdebfaca9a579d7249379f19aef22fbfd66bf943) ) /* From Diamond Eyes US */ \ - ROM_LOAD32_WORD_BIOS( 13, "system-base-u83-01.03.06-m27v160", 0x0000000, 0x0200000, CRC(bd48ca55) SHA1(8fb1576cbeb1c64c358880714740195d2e73e03e) ) \ - ROM_SYSTEM_BIOS( 14, "bios14", "Aristocrat MK6 Base (Set Chips, 06.02.20, USA)" ) \ - ROM_LOAD32_WORD_BIOS( 14, "U70-03 Cs 0364A", 0x0000002, 0x0100000, CRC(199ed3b9) SHA1(e3ee81ffd713f09e35a10c38e4f59282e2c5cd30) ) \ - ROM_LOAD32_WORD_BIOS( 14, "U83-02 Cs 08DD", 0x0000000, 0x0100000, CRC(e4001f60) SHA1(5da34efb1ac0f7c84a48e09363d20cfecda4bcf1) ) \ - ROM_SYSTEM_BIOS( 15, "bios15", "Aristocrat MK6 Base (01.04.08, USA)" ) \ - ROM_LOAD32_WORD_BIOS( 15, "base-01.04.08-u70-u20-left-cs-8509", 0x0000002, 0x0200000, CRC(0dfcad10) SHA1(53798be000304aed38909f5fd8470a68bedd8229) ) /* From Bob and Dolly */ \ - ROM_LOAD32_WORD_BIOS( 15, "base-01.04.08-u83-u10-right-cs-d74e", 0x0000000, 0x0200000, CRC(95333304) SHA1(7afe49d6c5e4d6820f349778557daa88c5366a51) )\ - ROM_SYSTEM_BIOS( 16, "bios16", "Aristocrat MK6 Base (02061013)" ) \ - ROM_LOAD32_WORD_BIOS( 16,"02061013 System 02 Left", 0x0000002, 0x0100000, CRC(e70a7007) SHA1(0935f924866162d9c0fbdbb99391cbf730a04b76) ) \ - ROM_LOAD32_WORD_BIOS( 16,"02061013 System 02 Right", 0x0000000, 0x0100000, CRC(7a8619a5) SHA1(bd03ddb68817c1660b009e102ccf69e5b603b875) ) \ - ROM_SYSTEM_BIOS( 17, "bios17", "Aristocrat MK6 Base (03030708)" ) \ - ROM_LOAD32_WORD_BIOS( 17,"03030708 System 03 SA LEFT", 0x0000002, 0x0100000, CRC(4e5ad823) SHA1(77ab1c29c6172cfdcef776222a72b2b44114d4da) ) /* From Scatter Magic II */ \ - ROM_LOAD32_WORD_BIOS( 17,"03030708 System 03 SA RIGHT", 0x0000000, 0x0100000, CRC(b4b3c6a5) SHA1(5747f98a6eaa5c24a23d1d76a28b33a3bfbbfd1f) ) \ - ROM_SYSTEM_BIOS( 18, "bios18", "Aristocrat MK6 Base (09011001)" ) \ - ROM_LOAD32_WORD_BIOS( 18,"09011001_SYSTEM_09_EPROM_NSW_LEFT", 0x0000002, 0x0200000, CRC(229c2e63) SHA1(91fd2b1acb69efe073647e93db9f11042add2feb) ) \ - ROM_LOAD32_WORD_BIOS( 18,"09011001_SYSTEM_09_EPROM_NSW_RIGHT", 0x0000000, 0x0200000, CRC(8a853f80) SHA1(9a75498f7b02c81a483b4e1c158f35f0ee4c0112) ) \ - ROM_SYSTEM_BIOS( 19, "bios19", "Aristocrat MK6 Base (11011501)" ) \ - ROM_LOAD32_WORD_BIOS( 19,"11011501_SYSTEM_11_EPROM_NSW_2MB_M27V160_LEFT", 0x0000002, 0x0200000, CRC(c5cc3461) SHA1(5b43c4cb6110a6ccf67cd0f3789253f6872b20c4) ) \ - ROM_LOAD32_WORD_BIOS( 19,"11011501_SYSTEM_11_EPROM_NSW_2MB_M27V160_RIGHT", 0x0000000, 0x0200000, CRC(de4c3aed) SHA1(21596a2edd20eb7de7a4ec8900a270b09c8f326f) ) \ - ROM_SYSTEM_BIOS( 20, "bios20", "Aristocrat MK6 Base (14011913)" ) \ - ROM_LOAD32_WORD_BIOS( 20,"14011913 System 14 Eprom Left", 0x0000002, 0x0200000, CRC(9a4cefdf) SHA1(6c15bc565ede8af19361d60ee1e6657a8055c92c) ) \ - ROM_LOAD32_WORD_BIOS( 20,"14011913 System 14 Eprom Right", 0x0000000, 0x0200000, CRC(01d13b89) SHA1(b1013366d0803dfbec5a5f90f6a5cea862de0513) ) \ - ROM_SYSTEM_BIOS( 21, "bios21", "Aristocrat MK6 Base (01.04.11)" ) \ - ROM_LOAD32_WORD_BIOS( 21,"01.04.11 System.u70", 0x0000002, 0x0200000, CRC(787f2b07) SHA1(2548289e44f4b935346b759afb5383bdbac04c3e) ) \ - ROM_LOAD32_WORD_BIOS( 21,"01.04.11 System.u83", 0x0000000, 0x0200000, CRC(2dae8ca0) SHA1(7a0fb38b4c1ac7195d15bdab6f0cfb16c78430f0) ) \ - ROM_SYSTEM_BIOS( 22, "bios22", "Aristocrat MK6 Set Chips (06.03.04)" ) \ - ROM_LOAD32_WORD_BIOS( 22,"Set 06.03.04 U2", 0x0000000, 0x0100000, CRC(6f5f5ef1) SHA1(70a43fba4de47ed8dcf38b25eafd5873f3428e72) ) \ - ROM_LOAD32_WORD_BIOS( 22,"Set 06.03.04 U3", 0x0000002, 0x0100000, CRC(7034f26b) SHA1(7be78f23bec38d05240cdfe1186ec0c8291f5a1c) ) \ - ROM_SYSTEM_BIOS( 23, "bios23", "Aristocrat MK6 Base (10010110)" ) \ - ROM_LOAD32_WORD_BIOS( 23,"US_system_.u70", 0x0000002, 0x0200000, CRC(0095e3f9) SHA1(d2e8786158b1ab0a614aab21cf1d14cbc04754af) ) \ - ROM_LOAD32_WORD_BIOS( 23,"US_system_.u83", 0x0000000, 0x0200000, CRC(2c7f1ec3) SHA1(d03167f43ed6f9596080d91472695829378cef0a) ) - - + ROM_SYSTEM_BIOS( 0, "bios0", "Aristocrat MK6 Base (02010114, NSW/ACT)" ) \ + ROM_LOAD64_WORD_BIOS( 0, "02010114.u84", 0x0000000, 0x0100000, CRC(183e3836) SHA1(4c802d0cd010bc007acb3a83e37aaa29b2d13d87) ) /* From Arabian Nights & Helen of Troy */ \ + ROM_LOAD64_WORD_BIOS( 0, "02010114.u71", 0x0000002, 0x0100000, CRC(8f83c3dd) SHA1(a5f9d80b4b515b24299d0241e1665cfd9da8bab7) ) \ + ROM_LOAD64_WORD_BIOS( 0, "02010114.u83", 0x0000004, 0x0100000, CRC(945104d7) SHA1(e372d0cf889c72b5d001b26fe4a925a28486537f) ) \ + ROM_LOAD64_WORD_BIOS( 0, "02010114.u70", 0x0000006, 0x0100000, CRC(3ba4379f) SHA1(84367f12c4c9224d2ab9cae83ae8727de338408c) ) \ + ROM_SYSTEM_BIOS( 1, "bios1", "Aristocrat MK6 Base (02010201, NSW/ACT)" ) \ + ROM_LOAD64_WORD_BIOS( 1, "02010201.u84", 0x0000000, 0x0100000, CRC(0920930f) SHA1(771b0f62442d1c75b1bb59ad82365b7ab8747173) ) /* From Money Tree & Go For Green */ \ + ROM_LOAD64_WORD_BIOS( 1, "02010201.u71", 0x0000002, 0x0100000, CRC(24d5614a) SHA1(fdcf3826dccc72b74b66379b1411cf211d5a1670) ) \ + ROM_LOAD64_WORD_BIOS( 1, "02010201.u83", 0x0000004, 0x0100000, CRC(5f64a20c) SHA1(397404ab6d2a1aa3c1fc77bb9421fef7079b65a5) ) \ + ROM_LOAD64_WORD_BIOS( 1, "02010201.u70", 0x0000006, 0x0100000, CRC(9b2db442) SHA1(d512398a2d9257bd385dc50d61c63cd1a47300ba) ) \ + ROM_SYSTEM_BIOS( 2, "bios2", "Aristocrat MK6 Base (02061013, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 2, "02061013_right.u83", 0x0000000, 0x0100000, CRC(7a8619a5) SHA1(bd03ddb68817c1660b009e102ccf69e5b603b875) ) \ + ROM_LOAD32_WORD_BIOS( 2, "02061013_left.u70", 0x0000002, 0x0100000, CRC(e70a7007) SHA1(0935f924866162d9c0fbdbb99391cbf730a04b76) ) \ + ROM_SYSTEM_BIOS( 3, "bios3", "Aristocrat MK6 Base (03010301, NSW/ACT)" ) \ + ROM_LOAD64_WORD_BIOS( 3, "03010301.u84", 0x0000000, 0x0100000, CRC(a34a9f16) SHA1(b8750e6ceb1715da8e5ac2f0183254e29a042641) ) /* From Queen of the Nile Special Edition */ \ + ROM_LOAD64_WORD_BIOS( 3, "03010301.u71", 0x0000002, 0x0100000, CRC(d793440a) SHA1(dced4c04bde13293af77a9a1f4c5c606e3758de0) ) \ + ROM_LOAD64_WORD_BIOS( 3, "03010301.u83", 0x0000004, 0x0100000, CRC(c8580554) SHA1(58b8bfff2f8d298c4e3be2b01900800c45fa7ad7) ) \ + ROM_LOAD64_WORD_BIOS( 3, "03010301.u70", 0x0000006, 0x0100000, CRC(5ae69121) SHA1(36dd3f9aaf5f7d2751d1954d67f898bc3ec71f3b) ) \ + ROM_SYSTEM_BIOS( 4, "bios4", "Aristocrat MK6 Base (04010501, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 4, "04010501_right.u83", 0x0000000, 0x0100000, CRC(3daefb7a) SHA1(411471713219f4bab5ccf5fe7a12a6c138c8c550) ) /* From Diamonds Forever */ \ + ROM_LOAD32_WORD_BIOS( 4, "04010501_left.u70", 0x0000002, 0x0100000, CRC(21182775) SHA1(7c5b7f5aba3babc85f512a8f7d4ebc0d83eb842a) ) \ + ROM_SYSTEM_BIOS( 5, "bios5", "Aristocrat MK6 Base (05010601, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 5, "05010601_right.u83", 0x0000000, 0x0100000, CRC(c12eac11) SHA1(683b9ddc323865ace7dca37d13b55de6e42759a5) ) /* From Thai Princess & Venetian Nights */ \ + ROM_LOAD32_WORD_BIOS( 5, "05010601_left.u70", 0x0000002, 0x0100000, CRC(b3e6b4a0) SHA1(3bf398c9257579f8e51ce716d6ebfa74fa510273) ) \ + ROM_SYSTEM_BIOS( 6, "bios6", "Aristocrat MK6 Base (07010801, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 6, "07010801_right.u83", 0x0000000, 0x0200000, CRC(8c148c11) SHA1(5ff3be18455b4f04675fec8d5b9d881295c65e23) ) /* From Jailbreak */ \ + ROM_LOAD32_WORD_BIOS( 6, "07010801_left.u70", 0x0000002, 0x0200000, CRC(8e92af68) SHA1(00d2bb655b7964a9652896741210ec534df0b0d2) ) \ + ROM_SYSTEM_BIOS( 7, "bios7", "Aristocrat MK6 Base (09011001, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 7, "09011001_right.u83", 0x0000000, 0x0200000, CRC(8a853f80) SHA1(9a75498f7b02c81a483b4e1c158f35f0ee4c0112) ) \ + ROM_LOAD32_WORD_BIOS( 7, "09011001_left.u70", 0x0000002, 0x0200000, CRC(229c2e63) SHA1(91fd2b1acb69efe073647e93db9f11042add2feb) ) \ + ROM_SYSTEM_BIOS( 8, "bios8", "Aristocrat MK6 Base (11011501, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 8, "11011501_right.u83", 0x0000000, 0x0200000, CRC(de4c3aed) SHA1(21596a2edd20eb7de7a4ec8900a270b09c8f326f) ) \ + ROM_LOAD32_WORD_BIOS( 8, "11011501_left.u70", 0x0000002, 0x0200000, CRC(c5cc3461) SHA1(5b43c4cb6110a6ccf67cd0f3789253f6872b20c4) ) \ + ROM_SYSTEM_BIOS( 9, "bios9", "Aristocrat MK6 Base (11011901, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 9, "11011901_right.u83", 0x0000000, 0x0200000, CRC(73dcb11c) SHA1(69ae4f32a0c9141b2a82ff3935b0cd20333d2964) ) \ + ROM_LOAD32_WORD_BIOS( 9, "11011901_left.u70", 0x0000002, 0x0200000, CRC(d3dd2210) SHA1(3548f8cc39859d3f44a55f6bae48966a2d48e0eb) ) \ + ROM_SYSTEM_BIOS( 10, "bios10", "Aristocrat MK6 Base (13012001, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 10, "13012001_right.u83", 0x0000000, 0x0200000, CRC(e627dbfa) SHA1(4fedbe0975ceb7dc0ebebf18a7708d78984db9b7) ) /* From Grizzly & Queen of the Nile */ \ + ROM_LOAD32_WORD_BIOS( 10, "13012001_left.u70", 0x0000002, 0x0200000, CRC(38e8f659) SHA1(88c6acba99b0aca023c6f4d27c061c231490e9e0) ) \ + ROM_SYSTEM_BIOS( 11, "bios11", "Aristocrat MK6 Base (14011913, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 11, "14011913_right.u83", 0x0000000, 0x0200000, CRC(01d13b89) SHA1(b1013366d0803dfbec5a5f90f6a5cea862de0513) ) \ + ROM_LOAD32_WORD_BIOS( 11, "14011913_left.u70", 0x0000002, 0x0200000, CRC(9a4cefdf) SHA1(6c15bc565ede8af19361d60ee1e6657a8055c92c) ) \ + ROM_SYSTEM_BIOS( 12, "bios12", "Aristocrat MK6 Base (19012801, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 12, "19012801_right.u83", 0x0000000, 0x0200000, CRC(5b20a96c) SHA1(5fd916b7cc2cdd51bf7dd212c1114f94dc9c7926) ) /* From Cactus Corral & Cashman Tonight & Heart of Vegas & Moonlight Waltz */ \ + ROM_LOAD32_WORD_BIOS( 12, "19012801_left.u70", 0x0000002, 0x0200000, CRC(b03bd17c) SHA1(f281e80f6dda5b727ed71d2deebe3b0ff548773f) ) \ + ROM_SYSTEM_BIOS( 13, "bios13", "Aristocrat MK6 Base (21012901, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 13, "21012901_right.u83", 0x0000000, 0x0200000, CRC(757618f2) SHA1(43f9a3e7d544979f8c6974945914d9e099b02abd) ) /* From Red Baron */ \ + ROM_LOAD32_WORD_BIOS( 13, "21012901_left.u70", 0x0000002, 0x0200000, CRC(0d271470) SHA1(5cd4b604bfe2fd7e9a8d08e1c7c97f17ae068479) ) \ + ROM_SYSTEM_BIOS( 14, "bios14", "Aristocrat MK6 Base (24013001, NSW/ACT)" ) \ + ROM_LOAD32_WORD_BIOS( 14, "24013001_right.u83", 0x0000000, 0x0200000, CRC(e97afedf) SHA1(10ca3b015afaff5d7812f0f5207b2535602136a5) ) /* From Wild Stallion */ \ + ROM_LOAD32_WORD_BIOS( 14, "24013001_left.u70", 0x0000002, 0x0200000, CRC(06ae7e07) SHA1(39a45575b66906d73b519988d1001c99b05c5f34) ) \ + ROM_SYSTEM_BIOS( 15, "bios15", "Aristocrat MK6 Base (03030708, South Australia)" ) \ + ROM_LOAD32_WORD_BIOS( 15, "03030708_right.u83", 0x0000000, 0x0100000, CRC(b4b3c6a5) SHA1(5747f98a6eaa5c24a23d1d76a28b33a3bfbbfd1f) ) /* From Scatter Magic II SA */ \ + ROM_LOAD32_WORD_BIOS( 15, "03030708_left.u70", 0x0000002, 0x0100000, CRC(4e5ad823) SHA1(77ab1c29c6172cfdcef776222a72b2b44114d4da) ) \ + ROM_SYSTEM_BIOS( 16, "bios16", "Aristocrat MK6 Base (15011025, Malaysia)" ) \ + ROM_LOAD32_WORD_BIOS( 16, "15011025_right.u83", 0x0000000, 0x0200000, CRC(bf21a975) SHA1(a251b1a7342387300689cd50fe4ce7975b903ac5) ) \ + ROM_LOAD32_WORD_BIOS( 16, "15011025_left.u70", 0x0000002, 0x0200000, CRC(c02e14b0) SHA1(6bf98927813519dfe60e582dbe5be3ccd87f7c91) ) \ + ROM_SYSTEM_BIOS( 17, "bios17", "Aristocrat MK6 Base (01.02.08, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 17, "01.02.08_right.u2", 0x0000000, 0x0100000, CRC(aaaeac8c) SHA1(a565e5fcb4f55f31e7d36be40eec234248a66efd) ) \ + ROM_LOAD32_WORD_BIOS( 17, "01.02.08_left.u3", 0x0000002, 0x0100000, CRC(f29fd1bf) SHA1(33e043d2616e10a1c7a0936c3d208f9bcc2ca6f3) ) \ + ROM_SYSTEM_BIOS( 18, "bios18", "Aristocrat MK6 Base (01.03.03a, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 18, "01.03.03a_right.u83", 0x0000000, 0x0200000, CRC(253415f4) SHA1(50dc77ad87bc6be1932dda2fd4865602c8c49729) ) \ + ROM_LOAD32_WORD_BIOS( 18, "01.03.03a_left.u70", 0x0000002, 0x0200000, CRC(4ab5dd40) SHA1(a6812cc624e6a98ea7b0697e2797fe10ba8e303e) ) \ + ROM_SYSTEM_BIOS( 19, "bios19", "Aristocrat MK6 Base (01.03.03e, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 19, "01.03.03e_right.u83", 0x0000000, 0x0200000, CRC(2255e263) SHA1(5e9e093aaa17172f47a14c3baf7f6f0f73b19398) ) \ + ROM_LOAD32_WORD_BIOS( 19, "01.03.03e_left.u70", 0x0000002, 0x0200000, CRC(ea50729a) SHA1(14b5a71bfb91ac366ddcb5f77fb54127808f8163) ) \ + ROM_SYSTEM_BIOS( 20, "bios20", "Aristocrat MK6 Base (01.03.05, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 20, "01.03.05_right.u83", 0x0000000, 0x0200000, CRC(2c7f1ec3) SHA1(d03167f43ed6f9596080d91472695829378cef0a) ) \ + ROM_LOAD32_WORD_BIOS( 20, "01.03.05_left.u70", 0x0000002, 0x0200000, CRC(0095e3f9) SHA1(d2e8786158b1ab0a614aab21cf1d14cbc04754af) ) \ + ROM_SYSTEM_BIOS( 21, "bios21", "Aristocrat MK6 Base (01.03.06, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 21, "01.03.06_right.u83", 0x0000000, 0x0200000, CRC(bd48ca55) SHA1(8fb1576cbeb1c64c358880714740195d2e73e03e) ) /* From Diamond Eyes US */ \ + ROM_LOAD32_WORD_BIOS( 21, "01.03.06_left.u70", 0x0000002, 0x0200000, CRC(2f9d9a29) SHA1(fdebfaca9a579d7249379f19aef22fbfd66bf943) ) \ + ROM_SYSTEM_BIOS( 22, "bios22", "Aristocrat MK6 Base (01.03.07, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 22, "01.03.07_right.u83", 0x0000000, 0x0200000, CRC(2ebccc4e) SHA1(9342724e4451e9ab24ceae208284b50abd4f0be3) ) \ + ROM_LOAD32_WORD_BIOS( 22, "01.03.07_left.u70", 0x0000002, 0x0200000, CRC(a3632da4) SHA1(1c96a88e86095b81801ab88e36a4cdfa4b893265) ) \ + ROM_SYSTEM_BIOS( 23, "bios23", "Aristocrat MK6 Base (01.03.14, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 23, "01.03.14_right.u83", 0x0000000, 0x0200000, CRC(889ffd82) SHA1(9c98c9cdcf5f7d05095f11006418133029e9f0f8) ) /* From 5 Dragons US */ \ + ROM_LOAD32_WORD_BIOS( 23, "01.03.14_left.u70", 0x0000002, 0x0200000, CRC(7138fec4) SHA1(f81331d1875ac574d3e6c98be218ff25c6c7be5a) ) \ + ROM_SYSTEM_BIOS( 24, "bios24", "Aristocrat MK6 Base (01.03.17, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 24, "01.03.17_right.u83", 0x0000000, 0x0200000, CRC(1582714b) SHA1(92d0a15314ffe526159bef9a364898dd1ebdfde7) ) \ + ROM_LOAD32_WORD_BIOS( 24, "01.03.17_left.u70", 0x0000002, 0x0200000, CRC(a88193dc) SHA1(c9e1d483edaecd318d2e5fc8a54e84516c93e0ca) ) \ + ROM_SYSTEM_BIOS( 25, "bios25", "Aristocrat MK6 Base (01.04.14, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 25, "01.04.04_right.u83", 0x0000000, 0x0200000, CRC(e57ba02d) SHA1(8e29403e6b619eeab41dc171221720bc7820ccdc) ) \ + ROM_LOAD32_WORD_BIOS( 25, "01.04.04_left.u70", 0x0000002, 0x0200000, CRC(b984a92c) SHA1(90f7a61302caee40195c08565bdac856a3234c1d) ) \ + ROM_SYSTEM_BIOS( 26, "bios26", "Aristocrat MK6 Base (01.04.07, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 26, "01.04.07_right.u83", 0x0000000, 0x0200000, CRC(23c28e22) SHA1(98f24a1f86232b6c2c288a61ec7d60c867f192e5) ) \ + ROM_LOAD32_WORD_BIOS( 26, "01.04.07_left.u70", 0x0000002, 0x0200000, CRC(acfb0fe0) SHA1(b1a772d7978e6ff4406a5bb39a71cb3f89608e72) ) \ + ROM_SYSTEM_BIOS( 27, "bios27", "Aristocrat MK6 Base (01.04.08, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 27, "01.04.08_right.u83", 0x0000000, 0x0200000, CRC(95333304) SHA1(7afe49d6c5e4d6820f349778557daa88c5366a51) ) /* From Bob and Dolly, also u20 on EPROM expansion board */ \ + ROM_LOAD32_WORD_BIOS( 27, "01.04.08_left.u70", 0x0000002, 0x0200000, CRC(0dfcad10) SHA1(53798be000304aed38909f5fd8470a68bedd8229) ) /* also u10 on EPROM expansion board */ \ + ROM_SYSTEM_BIOS( 28, "bios28", "Aristocrat MK6 Base (01.04.10, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 28, "01.04.10_right.u83", 0x0000000, 0x0200000, CRC(82ce2fcc) SHA1(4c8fb3db084a67e99d1420b3f895a06ce9ef5ec2) ) \ + ROM_LOAD32_WORD_BIOS( 28, "01.04.10_left.u70", 0x0000002, 0x0200000, CRC(9d9d52c1) SHA1(b957220cdbedd516c219d1bfc28807ce466df93f) ) \ + ROM_SYSTEM_BIOS( 29, "bios29", "Aristocrat MK6 Base (01.04.11, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 29, "01.04.11_right.u83", 0x0000000, 0x0200000, CRC(2dae8ca0) SHA1(7a0fb38b4c1ac7195d15bdab6f0cfb16c78430f0) ) \ + ROM_LOAD32_WORD_BIOS( 29, "01.04.11_left.u70", 0x0000002, 0x0200000, CRC(787f2b07) SHA1(2548289e44f4b935346b759afb5383bdbac04c3e) ) \ + ROM_SYSTEM_BIOS( 30, "bios30", "Aristocrat MK6 Set Chips (06.02.04, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 30, "06.02.04_right.u2", 0x0000000, 0x0100000, CRC(1cf5a853) SHA1(64d17efcce702df7a0b0e151293199478e25226d) ) \ + ROM_LOAD32_WORD_BIOS( 30, "06.02.04_left.u3", 0x0000002, 0x0100000, CRC(117b75f2) SHA1(2129286853d3c50b8a943b71334d4ef6b98adc05) ) \ + ROM_SYSTEM_BIOS( 31, "bios31", "Aristocrat MK6 Set Chips (06.02.20, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 31, "06.02.20_right.u83", 0x0000000, 0x0100000, CRC(e4001f60) SHA1(5da34efb1ac0f7c84a48e09363d20cfecda4bcf1) ) \ + ROM_LOAD32_WORD_BIOS( 31, "06.02.20_left.u70", 0x0000002, 0x0100000, CRC(199ed3b9) SHA1(e3ee81ffd713f09e35a10c38e4f59282e2c5cd30) ) \ + ROM_SYSTEM_BIOS( 32, "bios32", "Aristocrat MK6 Set Chips (06.03.03, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 32, "06.03.03_right.u2", 0x0000000, 0x0100000, CRC(98763498) SHA1(246e95cc12eb34f946b2f4938c59217718f6d841) ) \ + ROM_LOAD32_WORD_BIOS( 32, "06.03.03_left.u3", 0x0000002, 0x0100000, CRC(a6924238) SHA1(b71ab39bf9c1fdbab556028138749e8c040ec83c) ) \ + ROM_SYSTEM_BIOS( 33, "bios33", "Aristocrat MK6 Set Chips (06.03.04, USA)" ) \ + ROM_LOAD32_WORD_BIOS( 33, "06.03.04_right.u2", 0x0000000, 0x0100000, CRC(6f5f5ef1) SHA1(70a43fba4de47ed8dcf38b25eafd5873f3428e72) ) \ + ROM_LOAD32_WORD_BIOS( 33, "06.03.04_left.u3", 0x0000002, 0x0100000, CRC(7034f26b) SHA1(7be78f23bec38d05240cdfe1186ec0c8291f5a1c) ) ROM_START( aristmk6 ) ARISTMK6_BIOS - ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_END -/* +/* ROM labels all look basically the same (as with aristmk5.cpp boards) - 20151911 NSW - INDIAN DREAMING-LL - 742 4MB 6 eproms - Aristocrat 2005 P U72 + +--------------------------------------------------+ + | 20151911 NSW | + | INDIAN DREAMING-LL | + | 742 4MB 6 eproms | + | Aristocrat 2005 P U72 | + +--------------------------------------------------+ "ID string" + "Region" + "Game Name" + "Combination No." + "ROM size" + "ROM numbers" + "Copyright" + "Location" @@ -466,8 +503,17 @@ ROM labels all look basically the same (as with aristmk5.cpp boards) we reduce this to "ID string"."Location" for simplicity, also for games which we don't have pictures for. +Decoding the game ID: +In the Australian style, the ID is split into four parts: Version number, Manufacturer, Game ID with the last two digits serving an unknown purpose (usually 11 but sometimes 21, 31 or 41 etc.) +In the case of the above game, this would be 2 (version), 0 (Aristocrat), 1519, 11. +For Jubilee games, the second digit is a J rather than a zero. + +On US games, the ID format is different: +The US game ID seems to be split into three parts: Version number, manufacturer and Game ID, for example 0151178 (adonisa6). +In this case, the version number would be 01, followed by manufacturer (seems to always be 5), then 1178 for the game ID. */ + ROM_START( 5drag ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -562,7 +608,7 @@ ROM_START( adonisa6 ) ROM_END -ROM_START( adustcm ) +ROM_START( aduskcm ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("20006711.u86", 0x0000000, 0x0400000, CRC(26759ebc) SHA1(1205d74c39d13333ccc0ff4deb287ce12d6dbbf5) ) @@ -713,6 +759,16 @@ ROM_START( beavbuk ) ROM_END +ROM_START( betzoo ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("0251064.u86", 0x0000000, 0x0400000, CRC(4cb680ba) SHA1(5c7e516203a2c91bb25f2a070c6a778035b1f35f) ) + ROM_LOAD32_WORD("0251064.u73", 0x0000002, 0x0400000, CRC(a9439adf) SHA1(60f2a5be0629377dd4a4adfa4ef6e283d5c60099) ) + ROM_LOAD32_WORD("0251064.u85", 0x0800000, 0x0400000, CRC(81b70c50) SHA1(145e7ce40c24635959261d6e2450cffa36f73869) ) + ROM_LOAD32_WORD("0251064.u72", 0x0800002, 0x0400000, CRC(98444462) SHA1(c633448d5d7739f609eb00c61d89c997db3626d2) ) +ROM_END + + ROM_START( bigben ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -723,6 +779,16 @@ ROM_START( bigben ) ROM_END +ROM_START( bigbena ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("20126911.u86", 0x0000000, 0x0400000, CRC(68c53dd6) SHA1(2c6c0a2a507b47da7675b4b62cf584b325427b26) ) + ROM_LOAD32_WORD("20126911.u73", 0x0000002, 0x0400000, CRC(5e43305f) SHA1(8e8f736510d45736068f101076d15900ba6aa1cd) ) + ROM_LOAD32_WORD("20126911.u85", 0x0800000, 0x0400000, CRC(64bb4204) SHA1(e20af2dba4c2feab07ba3344669964da79e6b9d1) ) + ROM_LOAD32_WORD("20126911.u72", 0x0800002, 0x0400000, CRC(d59c8c69) SHA1(b37a3d3061e6209a93e0a5de4a59ea073eedbbb7) ) +ROM_END + + ROM_START( bigheart ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -741,6 +807,16 @@ ROM_START( bigred ) ROM_END +ROM_START( bigreda ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("1j009211.u86", 0x0000000, 0x0400000, CRC(e4740e2e) SHA1(e30cde7b39267b43fe21082441693df11736f63a) ) + ROM_LOAD32_WORD("1j009211.u73", 0x0000002, 0x0400000, CRC(9fd29e7f) SHA1(b1cac9ae3e0d226498346f099798bf3c0b78e908) ) + ROM_LOAD32_WORD("1j009211.u85", 0x0800000, 0x0400000, CRC(8c2f6fc9) SHA1(9dd687b242a3d0348cc20a7a20fef149f5f7834a) ) // same as parent but different label + ROM_LOAD32_WORD("1j009211.u72", 0x0800002, 0x0400000, CRC(bab7ae56) SHA1(d2de7e8544eabe1f116cc878f4ad3ccf22d4ca38) ) // same as parent but different label +ROM_END + + ROM_START( bigred2 ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -811,6 +887,14 @@ ROM_START( bucaneer ) ROM_END +ROM_START( bucaneeru ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("0252523.u86", 0x0000000, 0x0400000, CRC(c93ecb04) SHA1(4dff453ff4716f0a732e07fbc2816ae4c4234377) ) + ROM_LOAD32_WORD("0252523.u73", 0x0000002, 0x0400000, CRC(c945bf45) SHA1(12156228feecc3363e61a18295edbcd8b995b62e) ) +ROM_END + + ROM_START( buckstop ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -899,6 +983,13 @@ ROM_START( canaryrc ) ROM_END +/* + Cashman Tonight + 4-in-1 game containing African Dusk, Arctic Wins, King Galah and Wild Cougar. + Arctic Wins is a completely new game, it is not the same version as the original MK4 game. + Wild Cougar is different to the original in that it has stacked symbols e.g. 3 of the same symbol (except Cougar and Wolf) can show up on the same reel. + Cashman Tonight has a progressive jackpot unlike the original Mr. Cashman games. +*/ ROM_START( cmtonig ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -919,6 +1010,10 @@ ROM_START( cmtonig ) ROM_END +/* + Chance In Hell - Li'l Lucy + The Li'l Lucy character was originally called Lucky Devil in Australia. +*/ ROM_START( cinhell ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -1259,16 +1354,6 @@ ROM_START( firednc ) ROM_END -ROM_START( flamoljc ) - ARISTMK6_BIOS - ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) - ROM_LOAD32_WORD("0251048.u86", 0x0000000, 0x0400000, CRC(2ea7c6d9) SHA1(cd887f0689737fd447786b966297ea3994fb8cb7) ) /* m27v322 */ - ROM_LOAD32_WORD("0251048.u73", 0x0000002, 0x0400000, CRC(c8337682) SHA1(e87c5be62528e2e73659ce73a17d1ea21ed3ccf0) ) /* m27v322 */ - ROM_LOAD32_WORD("0251048.u85", 0x0800000, 0x0400000, CRC(2661893a) SHA1(4a79f0b638f5d4fdfa7dcc7661afe3ae1823e6ce) ) /* m27v322 */ - ROM_LOAD32_WORD("0251048.u72", 0x0800002, 0x0400000, CRC(330c1988) SHA1(0d7dae49495c5b164121cd756d6e22af17a9b41b) ) /* m27v322 */ -ROM_END - - ROM_START( flamolce ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -1279,6 +1364,16 @@ ROM_START( flamolce ) ROM_END +ROM_START( flamoljc ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("0251048.u86", 0x0000000, 0x0400000, CRC(2ea7c6d9) SHA1(cd887f0689737fd447786b966297ea3994fb8cb7) ) /* m27v322 */ + ROM_LOAD32_WORD("0251048.u73", 0x0000002, 0x0400000, CRC(c8337682) SHA1(e87c5be62528e2e73659ce73a17d1ea21ed3ccf0) ) /* m27v322 */ + ROM_LOAD32_WORD("0251048.u85", 0x0800000, 0x0400000, CRC(2661893a) SHA1(4a79f0b638f5d4fdfa7dcc7661afe3ae1823e6ce) ) /* m27v322 */ + ROM_LOAD32_WORD("0251048.u72", 0x0800002, 0x0400000, CRC(330c1988) SHA1(0d7dae49495c5b164121cd756d6e22af17a9b41b) ) /* m27v322 */ +ROM_END + + ROM_START( followst ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -1335,6 +1430,16 @@ ROM_START( geishaa6 ) ROM_END +ROM_START( geishajc ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("0351033.u86", 0x0000000, 0x0400000, CRC(620d8a40) SHA1(601a66e59a1db8be84b494eba24148ab50c674d5) ) + ROM_LOAD32_WORD("0351033.u73", 0x0000002, 0x0400000, CRC(173105e7) SHA1(7c6c082782b7a7f677e6edbba23a09ae9a922415) ) + ROM_LOAD32_WORD("0351033.u85", 0x0800000, 0x0400000, CRC(879f061c) SHA1(e8f2650a486799880e7261f3d4e3d0f6f65f3dfe) ) + ROM_LOAD32_WORD("0351033.u72", 0x0800002, 0x0400000, CRC(7ab7b3f0) SHA1(6907876ff3597e2476d105939b09e7ce88eca2a8) ) +ROM_END + + ROM_START( goape ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -1466,6 +1571,16 @@ ROM_END ROM_START( hlntroy ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("1j008311.u86", 0x0000000, 0x0400000, CRC(dac1d540) SHA1(8a57545604beab1f0872f6da98a3f9f5a4079ba0) ) + ROM_LOAD32_WORD("1j008311.u73", 0x0000002, 0x0400000, CRC(7e76bb49) SHA1(ae67b4fb2af4bddf2e751c7c22ac6dc416410e33) ) + ROM_LOAD32_WORD("1j008311.u85", 0x0800000, 0x0400000, CRC(21e8c508) SHA1(930843811b35da27afc8e6561046a249aa10017b) ) + ROM_LOAD32_WORD("1j008311.u72", 0x0800002, 0x0400000, CRC(74045490) SHA1(364ba8a7911f63f529ef5ff0e5bdd17f7bd5a8c1) ) +ROM_END + + +ROM_START( hlntroyu ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("0151336.u86", 0x0000000, 0x0400000, CRC(7100841d) SHA1(67fa5616ca0bb2b25ed2951d3decf0126e0bac82) ) @@ -1627,6 +1742,16 @@ ROM_END ROM_START( kingnile ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("30106331.u86", 0x0000000, 0x0400000, CRC(c3830908) SHA1(438fc339f8b71668e816b5909195cae4158f39c2) ) + ROM_LOAD32_WORD("30106331.u73", 0x0000002, 0x0400000, CRC(9a90354d) SHA1(5c5b0822e6a842f85e2acca0e1c8bfe0c3f68496) ) + ROM_LOAD32_WORD("30106331.u85", 0x0800000, 0x0400000, CRC(524c786e) SHA1(7e40266be5496baefd74796ce66857aec2d21437) ) + ROM_LOAD32_WORD("30106331.u72", 0x0800002, 0x0400000, CRC(ea5d2450) SHA1(fdcf6c532231e9abf3a1c035bdef9d0db7fcf148) ) +ROM_END + + +ROM_START( kingnilea ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("20106321.u72", 0x0800002, 0x0400000, CRC(2600d9da) SHA1(2c78b987b8a8641b7eedda4880bd3f5846f11224) ) @@ -1636,17 +1761,17 @@ ROM_START( kingnile ) ROM_END -ROM_START( kingnilea ) +ROM_START( kingpeng ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) - ROM_LOAD32_WORD("30106331.u86", 0x0000000, 0x0400000, CRC(c3830908) SHA1(438fc339f8b71668e816b5909195cae4158f39c2) ) - ROM_LOAD32_WORD("30106331.u73", 0x0000002, 0x0400000, CRC(9a90354d) SHA1(5c5b0822e6a842f85e2acca0e1c8bfe0c3f68496) ) - ROM_LOAD32_WORD("30106331.u85", 0x0800000, 0x0400000, CRC(524c786e) SHA1(7e40266be5496baefd74796ce66857aec2d21437) ) - ROM_LOAD32_WORD("30106331.u72", 0x0800002, 0x0400000, CRC(ea5d2450) SHA1(fdcf6c532231e9abf3a1c035bdef9d0db7fcf148) ) + ROM_LOAD32_WORD("20109021.u86", 0x0000000, 0x0400000, CRC(40c08336) SHA1(c8568c176c09239823b08c494e2e020e564c2b43) ) + ROM_LOAD32_WORD("20109021.u73", 0x0000002, 0x0400000, CRC(c51ef018) SHA1(f89ed9042c12e40350284236ca77dcaede9e38d0) ) + ROM_LOAD32_WORD("20109021.u85", 0x0800000, 0x0400000, CRC(417152bd) SHA1(4cdd6ba592bf7546226c304ade46b90774ba0875) ) + ROM_LOAD32_WORD("20109021.u72", 0x0800002, 0x0400000, CRC(06b7ce2e) SHA1(fc30a247ed2e5ac7586c4c6cba6b8cd7d8206d01) ) ROM_END -ROM_START( kingpeng ) +ROM_START( kingpengsp ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("40109021.u86", 0x0000000, 0x0400000, CRC(077635b9) SHA1(3d17892df4a068701be1ac649f448e10b8c52ebd) ) @@ -1728,7 +1853,7 @@ ROM_START( lougcm ) ROM_END -ROM_START( lovestrk ) +ROM_START( lovestuk ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("0152583.u86", 0x0000000, 0x0400000, CRC(c374ee56) SHA1(18b084c32a4dad6dacd3eeaf6ba430053405dbe8) ) /* 27v322 */ @@ -1986,6 +2111,16 @@ ROM_START( pcockmag ) ROM_END +ROM_START( pcockmagu ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("0151352.u86", 0x0000000, 0x0400000, CRC(53a9a249) SHA1(097e93185efe87edb8e8cf512bd07ed6de120ff2) ) + ROM_LOAD32_WORD("0151352.u73", 0x0000002, 0x0400000, CRC(8d2fac0f) SHA1(35e5ae327d0b6145b88b577ee6ba22589b2cb6dc) ) + ROM_LOAD32_WORD("0151352.u85", 0x0800000, 0x0400000, CRC(7bbc3359) SHA1(b497998475274768b831963f8df2748832772369) ) + ROM_LOAD32_WORD("0151352.u72", 0x0800002, 0x0400000, CRC(4d9912ca) SHA1(8a019b961736b30b076a8a1fdc24cbe48cfb6021) ) +ROM_END + + ROM_START( pelipete ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -2054,18 +2189,10 @@ ROM_START( pirata6 ) ROM_END -ROM_START( pcfavor ) - ARISTMK6_BIOS - ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) - ROM_LOAD32_WORD("20177311.u86", 0x0000000, 0x0400000, CRC(f06d4fbb) SHA1(aad9c37da2ee9f7a5252267f39a9d1e8169a2472) ) - ROM_LOAD32_WORD("20177311.u73", 0x0000002, 0x0400000, CRC(72db5268) SHA1(de7f3619162b27bab4825f801eb1a04cce8721a3) ) - ROM_LOAD32_WORD("20177311.u85", 0x0800000, 0x0400000, CRC(385e8636) SHA1(5e4bf33f91481080c80264b915a11606b03f8686) ) - ROM_LOAD32_WORD("20177311.u72", 0x0800002, 0x0400000, CRC(9b0fb8b6) SHA1(bd5a2734068e031ca7ab0f19749f28f84288125f) ) - ROM_LOAD32_WORD("20177311.u84", 0x1000000, 0x0400000, CRC(7944e972) SHA1(23d45a2e948a737d3186de5f0447ec7dd51ddc7b) ) - ROM_LOAD32_WORD("20177311.u71", 0x1000002, 0x0400000, CRC(116bb514) SHA1(cd3dcca730c8e9d3fe5b0c70638f3d81f8eb8f98) ) -ROM_END - - +/* + Player's Choice - By Demand + 4-in-1 game containing Big Red, Black Panther, Fa Fa Fa and Super Bucks IV. +*/ ROM_START( pcbydem ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -2080,18 +2207,26 @@ ROM_START( pcbydem ) ROM_END -ROM_START( pcmostw ) +/* + Player's Choice - Favourites + 4-in-1 game containing Black Panther, Prize Fight, Return of the Samurai and Super Bucks IV. +*/ +ROM_START( pcfavor ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) - ROM_LOAD32_WORD("20234911.u86", 0x0000000, 0x0400000, CRC(7f460e25) SHA1(d97150221a3c0cac3b46d147ae96937a871ecdb3) ) - ROM_LOAD32_WORD("20234911.u73", 0x0000002, 0x0400000, CRC(a26a224e) SHA1(222e3b067f4bde826ae19276bb48136896cbd853) ) - ROM_LOAD32_WORD("20234911.u85", 0x0800000, 0x0400000, CRC(214a647f) SHA1(51b250ecf49776ab9dfe80cb2efdc685109f0c19) ) - ROM_LOAD32_WORD("20234911.u72", 0x0800002, 0x0400000, CRC(d6f86683) SHA1(0e5ca980010bf40bba01d7222bc4d241b9d86667) ) - ROM_LOAD32_WORD("20234911.u84", 0x1000000, 0x0400000, CRC(da762c17) SHA1(44c5bfee805d0ee8209e7b37161921d652b4d83b) ) - ROM_LOAD32_WORD("20234911.u71", 0x1000002, 0x0400000, CRC(6b67d71e) SHA1(902f832c79f160b22c02222eefa5ec31285b7610) ) + ROM_LOAD32_WORD("20177311.u86", 0x0000000, 0x0400000, CRC(f06d4fbb) SHA1(aad9c37da2ee9f7a5252267f39a9d1e8169a2472) ) + ROM_LOAD32_WORD("20177311.u73", 0x0000002, 0x0400000, CRC(72db5268) SHA1(de7f3619162b27bab4825f801eb1a04cce8721a3) ) + ROM_LOAD32_WORD("20177311.u85", 0x0800000, 0x0400000, CRC(385e8636) SHA1(5e4bf33f91481080c80264b915a11606b03f8686) ) + ROM_LOAD32_WORD("20177311.u72", 0x0800002, 0x0400000, CRC(9b0fb8b6) SHA1(bd5a2734068e031ca7ab0f19749f28f84288125f) ) + ROM_LOAD32_WORD("20177311.u84", 0x1000000, 0x0400000, CRC(7944e972) SHA1(23d45a2e948a737d3186de5f0447ec7dd51ddc7b) ) + ROM_LOAD32_WORD("20177311.u71", 0x1000002, 0x0400000, CRC(116bb514) SHA1(cd3dcca730c8e9d3fe5b0c70638f3d81f8eb8f98) ) ROM_END +/* + Player's Choice - Gold Edition + 4-in-1 game containing Adonis, K.G. Bird, Tigress and Wild Goose. +*/ ROM_START( pcgold ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -2106,20 +2241,28 @@ ROM_START( pcgold ) ROM_END -ROM_START( pcplat ) +/* + Player's Choice - Most Wanted + 4-in-1 game containing Big Red, Black Panther, Choy Sun Doa and Spring Carnival. +*/ +ROM_START( pcmostw ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) - ROM_LOAD32_WORD("20282111.u86", 0x0000000, 0x0400000, CRC(7ada7860) SHA1(4b8681f8ae3f279e38a9dba3b29585d7d0642f8c) ) - ROM_LOAD32_WORD("20282111.u73", 0x0000002, 0x0400000, CRC(44c0462c) SHA1(e6a99ddef5d48149003fa9009dcb9880c420fedf) ) - ROM_LOAD32_WORD("20282111.u85", 0x0800000, 0x0400000, CRC(51d192c5) SHA1(2b42d0ba8eb5b6ed1006ee452ca11ff295ee0a80) ) - ROM_LOAD32_WORD("20282111.u72", 0x0800002, 0x0400000, CRC(a22f17ed) SHA1(e3e6d50707873986b067a216d6dda25201224c53) ) - ROM_LOAD32_WORD("20282111.u84", 0x1000000, 0x0400000, CRC(545289a0) SHA1(af32941fb6c03c6711fc35c453546803aec0c85b) ) - ROM_LOAD32_WORD("20282111.u71", 0x1000002, 0x0400000, CRC(a66e230f) SHA1(712a08d879902d4ee6d1ee5896d0bbff5961a3f2) ) - ROM_LOAD32_WORD("20282111.u83", 0x1800000, 0x0400000, CRC(944b7425) SHA1(a87072edea72902e12dcda2e3ef7a0b35487b2f0) ) - ROM_LOAD32_WORD("20282111.u70", 0x1800002, 0x0400000, CRC(44ee59d6) SHA1(52dbc89c41e2aef844eaf64e734661c5945980d0) ) + ROM_LOAD32_WORD("20234911.u86", 0x0000000, 0x0400000, CRC(7f460e25) SHA1(d97150221a3c0cac3b46d147ae96937a871ecdb3) ) + ROM_LOAD32_WORD("20234911.u73", 0x0000002, 0x0400000, CRC(a26a224e) SHA1(222e3b067f4bde826ae19276bb48136896cbd853) ) + ROM_LOAD32_WORD("20234911.u85", 0x0800000, 0x0400000, CRC(214a647f) SHA1(51b250ecf49776ab9dfe80cb2efdc685109f0c19) ) + ROM_LOAD32_WORD("20234911.u72", 0x0800002, 0x0400000, CRC(d6f86683) SHA1(0e5ca980010bf40bba01d7222bc4d241b9d86667) ) + ROM_LOAD32_WORD("20234911.u84", 0x1000000, 0x0400000, CRC(da762c17) SHA1(44c5bfee805d0ee8209e7b37161921d652b4d83b) ) + ROM_LOAD32_WORD("20234911.u71", 0x1000002, 0x0400000, CRC(6b67d71e) SHA1(902f832c79f160b22c02222eefa5ec31285b7610) ) ROM_END +/* + Player's Choice - Original + 4-in-1 game containing 50 Lions, Indian Dreaming II, Pyramid Power and Queen of the Nile II. + Indian Dreaming II is an updated edition with 30 credit Reel Power bet similar to Dream Catcher, Thai Princess, Indian Dreaming (Lady Luck) etc. + Queen of the Nile II has a similar feature to Show Me The Money, where the player can choose different free game/feature multiplier combinations. +*/ ROM_START( pcorig ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -2134,6 +2277,30 @@ ROM_START( pcorig ) ROM_END +/* + Player's Choice - Platinum + 4-in-1 game containing Antony & Cleopatra, Miss Kitty, Reelin' N Boppin and Show Me The Money. + This version of Miss Kitty is not a 50 line game unlike the normal version, it has a standard 5 reel, 3 position layout. +*/ +ROM_START( pcplat ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("20282111.u86", 0x0000000, 0x0400000, CRC(7ada7860) SHA1(4b8681f8ae3f279e38a9dba3b29585d7d0642f8c) ) + ROM_LOAD32_WORD("20282111.u73", 0x0000002, 0x0400000, CRC(44c0462c) SHA1(e6a99ddef5d48149003fa9009dcb9880c420fedf) ) + ROM_LOAD32_WORD("20282111.u85", 0x0800000, 0x0400000, CRC(51d192c5) SHA1(2b42d0ba8eb5b6ed1006ee452ca11ff295ee0a80) ) + ROM_LOAD32_WORD("20282111.u72", 0x0800002, 0x0400000, CRC(a22f17ed) SHA1(e3e6d50707873986b067a216d6dda25201224c53) ) + ROM_LOAD32_WORD("20282111.u84", 0x1000000, 0x0400000, CRC(545289a0) SHA1(af32941fb6c03c6711fc35c453546803aec0c85b) ) + ROM_LOAD32_WORD("20282111.u71", 0x1000002, 0x0400000, CRC(a66e230f) SHA1(712a08d879902d4ee6d1ee5896d0bbff5961a3f2) ) + ROM_LOAD32_WORD("20282111.u83", 0x1800000, 0x0400000, CRC(944b7425) SHA1(a87072edea72902e12dcda2e3ef7a0b35487b2f0) ) + ROM_LOAD32_WORD("20282111.u70", 0x1800002, 0x0400000, CRC(44ee59d6) SHA1(52dbc89c41e2aef844eaf64e734661c5945980d0) ) +ROM_END + + +/* + Player's World - Super (?) + This game is currently unknown, the name string inside the ROM is Multigame Xtreme Hyperlink + 4-in-1 game containing 5 Dragons, Tiki Torch, Turtle Treasure, and Where's The Gold. +*/ ROM_START( pwsuper ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -2161,6 +2328,16 @@ ROM_END ROM_START( pompeia6u ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("0151158.u86", 0x0000000, 0x0400000, CRC(a34afbdc) SHA1(47e8ddc95ef9db933b3b6b26bb9d7f3f743d4e46) ) + ROM_LOAD32_WORD("0151158.u73", 0x0000002, 0x0400000, CRC(2a6a92ec) SHA1(98dc8506381089def51b8571038d6ece03d11faa) ) + ROM_LOAD32_WORD("0151158.u85", 0x0800000, 0x0400000, CRC(d71de7f8) SHA1(08692e432bed7e51655e0ebdcfc34b3d8f7f4682) ) + ROM_LOAD32_WORD("0151158.u72", 0x0800002, 0x0400000, CRC(da83f540) SHA1(8126e84ef6b44529632df119a30556f1ecd7c110) ) +ROM_END + + +ROM_START( pompeia6ua ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("0251010.u86", 0x0000000, 0x0400000, CRC(a68aac55) SHA1(630b1d4cb08d8710b81c6d709182e7c7a52f184a) ) @@ -2199,6 +2376,14 @@ ROM_END ROM_START( qnilese ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("20102811.u86", 0x0000000, 0x0400000, CRC(b67fbebe) SHA1(a7fff03899caa9dba714928656e7c30e709453c0) ) + ROM_LOAD32_WORD("20102811.u73", 0x0000002, 0x0400000, CRC(d46bf3e8) SHA1(fa0c67ff8b7523bc2813e1df16507cd92cabd721) ) +ROM_END + + +ROM_START( qnilesea ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("10102811.u86", 0x0000000, 0x0400000, CRC(4c7bdba1) SHA1(796c9da25bbfe389aae5c03b42e15500c91a60d4) ) @@ -2226,7 +2411,7 @@ ROM_START( qnilejcsp ) ROM_END -ROM_START( qsheeba ) +ROM_START( qsheba ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("10133711.u86", 0x0000000, 0x0400000, CRC(e1313dff) SHA1(536014d8d4f3ff90d93befdcd55d5b3e6eb49e7c) ) @@ -2256,6 +2441,14 @@ ROM_START( redbara6 ) ROM_END +ROM_START( retsama6 ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("10117211.u86", 0x0000000, 0x0400000, CRC(8c6d706e) SHA1(6e94e223a65757fab79164988a1fdfab4215c284) ) + ROM_LOAD32_WORD("10117211.u73", 0x0000002, 0x0400000, CRC(a2fbf139) SHA1(53d6aa13bcaf0d537384ea406bb3a34fc8c8830c) ) +ROM_END + + ROM_START( roadtrip ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -2288,7 +2481,7 @@ ROM_START( rubymag ) ROM_END -ROM_START( rumbreel ) // unknown IC positions +ROM_START( rumbreel ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("20288611.u21", 0x0000000, 0x0400000, CRC(cc48bb54) SHA1(6ed7a502deaff0e2fd6d0901d036fcbadf303859) ) @@ -2324,6 +2517,16 @@ ROM_START( scatmag2sa ) ROM_END +ROM_START( scatmag3 ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("0452569.u86", 0x0000000, 0x0400000, CRC(8d1d87cd) SHA1(24267218813facee476b0d7b7b3769eabe193b62) ) + ROM_LOAD32_WORD("0452569.u73", 0x0000002, 0x0400000, CRC(9b645cfd) SHA1(9309a3389021776ccc6d2d070a4a954dabcd0979) ) + ROM_LOAD32_WORD("0452569.u85", 0x0800000, 0x0400000, CRC(899f7a05) SHA1(ab24922ce670d151a45af22376042b2a9106f7d1) ) + ROM_LOAD32_WORD("0452569.u72", 0x0800002, 0x0400000, CRC(a71a9565) SHA1(9761ec846b2183c4985eeb224054544f0cf9b3ec) ) +ROM_END + + ROM_START( sealdeal ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) @@ -2447,6 +2650,16 @@ ROM_END ROM_START( sunmoon ) + ARISTMK6_BIOS + ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) + ROM_LOAD32_WORD("0251303.u86", 0x0000000, 0x0400000, CRC(f58f4c7b) SHA1(c2e05432f7bc02a5db91a2d83b7c142ac93c1e25) ) + ROM_LOAD32_WORD("0251303.u73", 0x0000002, 0x0400000, CRC(66aa0611) SHA1(f34c28771244f21f38cadac02374243ab26065a0) ) + ROM_LOAD32_WORD("0251303.u85", 0x0800000, 0x0400000, CRC(a1032dbc) SHA1(25e560af6711259a3792285bd9279c22c21d602d) ) + ROM_LOAD32_WORD("0251303.u72", 0x0800002, 0x0400000, CRC(98602b09) SHA1(8f0048b05f069efbb96abf928dc56a6d3124be22) ) +ROM_END + + +ROM_START( sunmoona ) ARISTMK6_BIOS ROM_REGION( 0x4000000, "game_rom", ROMREGION_ERASEFF) ROM_LOAD32_WORD("0151303.u86", 0x0000000, 0x0400000, CRC(012e5aeb) SHA1(3df4454ab54cc6edf62b8cc9de4c867a36e8654b) ) @@ -2908,472 +3121,259 @@ ROM_START( zorroa6u ) ROM_END - - - - -GAME( 2000, aristmk6, 0, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Aristocrat MK6 System Software", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT) +GAME( 2000, aristmk6, 0, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Aristocrat MK6 System Software", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT) // Dates listed below are for the combination (reel layout), not release dates -GAME( 2004, 5drag, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "5 Dragons (20161011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 744, C - 14/01/04 -GAME( 2004, 5dragsp, 5drag, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "5 Dragons (20161011, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 744, C - 14/01/04 -GAME( 2007, 5dragce, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "5 Dragons - Cash Express (0152309, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US211, A - 01/09/07 -GAME( 2007, 5koipp, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "5 Koi - Power Pay (10250711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 744/2, C - 25/10/07 -GAME( 2002, 50lions, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "50 Lions (10120511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717, A - 11/10/02 -GAME( 2003, 50lionsm, 50lions, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "50 Lions (10156111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717, D - 20/10/03 -GAME( 2012, 50lionrr, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "50 Lions - Roaring Riches (20301311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 1049, B - 20/08/12 -GAME( 2006, 100lions, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "100 Lions (10219211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717/4, B - 13/06/06 -GAME( 2005, adonisa6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Adonis (0151178, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US168, A - 05/26/05 -GAME( 2001, adustcm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "African Dusk - Mr. Cashman (20006711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 665/1, B- 13/07/01 -GAME( 2004, afterhrs, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "After Hours (0251071, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US051, B - 01/20/04 -GAME( 2003, alchemy, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Alchemy (1J009611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB013/2, A - 30/05/03 -GAME( 2007, atkgld, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "All the King's Gold (0152152, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US209, A - 01/08/07 -GAME( 2001, amzqueen, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Amazon Queen (10005511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 669, A - 02/05/01 -GAME( 2009, amztempl, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Amazon Temple (10299811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 906, A - 29/04/09 -GAME( 2004, antcleo, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Antony and Cleopatra (10163211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 754, A - 15/01/04 -GAME( 2004, antcleom, antcleo, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Antony and Cleopatra (10177211, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 754, B - 12/07/04 -GAME( 2003, apocof, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Apollo Coffee (0151105, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US083, A - 11/10/03 -GAME( 2001, arabnga6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Arabian Nights (2J008211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB009/1, E - 10/12/01 -GAME( 2004, arabnga6u,arabnga6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Arabian Nights (0151356, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB016/21, E - 07/06/04 -GAME( 2003, arwincm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Arctic Wins - Mr. Cashman (0151065, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US029, E- 01/27/03 -GAME( 2003, arish, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Arishinko (0151087, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US057, E - 05/28/03 -GAME( 2004, asnprinc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Asian Princess (0352502, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4208, C - 09/13/04 -GAME( 2008, beavbuk, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Beaver Bucks (20255111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 850, C - 23/01/08 -GAME( 2003, bigben, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Big Ben (30126911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 710, B - 17/07/03 -GAME( 1999, bigheart, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Big Hearted (10000511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 637, D - 15/11/99 -GAME( 2002, bigred, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Big Red (2J009211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB015, D - 27/09/02 -GAME( 2005, bigred2, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Big Red 2 (5J011311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB024, B - 18/05/05 -GAME( 2002, blkbrum, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Black Brumby (1J009111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB010, C - 14/06/02 -GAME( 200?, blkmust, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Black Mustang (0152584, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB014/21, (no data) -GAME( 2007, bluetigr, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Blue Tiger (20259511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 855, A - 12/12/07 -GAME( 2007, bobdolly, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Bob and Dolly (0352298, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US243, A - 10/15/07 -GAME( 2005, brazil, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Brazil (20180311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 783, B - 25/02/05 -GAME( 2004, bucaneer, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Buccaneer (10173011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 765, A - 05/04/04 -GAME( 2010, buckstop, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "The Buck Stops Here (10294311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 897/1, A - 22/07/10 -GAME( 2006, buffalo, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Buffalo (10217811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 806, E - 06/10/06 -GAME( 200?, buffalou, buffalo, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Buffalo (0252636, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4328, (no data) -GAME( 2005, bmbugs, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Bumble Bugs (0351180, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US166, A - 05/13/05 -GAME( 2001, bushrngr, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Bushranger (10006111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 673, A - 18/04/01 -GAME( 2007, cactusco, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Cactus Corral (10237711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 818, D - 24/07/07 -GAME( 2007, callwld, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Call of the Wild (10256611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 827, B - 12/11/07 -GAME( 2005, calyking, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Calypso King (20197111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 772/1, B - 25/07/05 -GAME( 2006, canaryrc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Canary Riches (10218211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 809, A - 30/03/06 -GAME( 2005, cmtonig, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Cashman Tonight (30194711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0007, B - 25/05/05 -GAME( 2004, cinhell, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Chance in Hell - Li'l Lucy (0251125, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US119, A - 06/30/04 -GAME( 2002, csd, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Choy Sun Doa (10104011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 23/04/02 -GAME( 2002, csdsp, csd, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Choy Sun Doa (20104011, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 23/04/02 -GAME( 2003, csdm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Choy Sun Doa (20131511, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 23/01/03 -GAME( 2003, csdce, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Choy Sun Doa - Cash Express (30149511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 03/02/03 -GAME( 2006, csret, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Choy Sun Returns (20212211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 744/2, B - 15/08/06 -GAME( 2005, corrida, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Corrida de Toros (30178311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 771, D - 22/03/05 -GAME( 2003, cryspri, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Crystal Springs (10144411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 740, A - 28/05/03 -GAME( 2003, crysprim, cryspri, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Crystal Springs (10155811, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 740, A - 28/05/03 -GAME( 2006, cryspriu, cryspri, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Crystal Springs (0352557, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4255, C - 01/16/06 -GAME( 2009, deepfrz, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Deep Freeze (10282311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB113/2, A - 27/02/09 -GAME( 2009, deepfrzu, deepfrz, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Deep Freeze (0154081, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB113/4, A - 27/07/09 -GAME( 2005, deltabel, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Delta Belle (0252532, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4243, B - 04/29/05 -GAME( 2004, deltaqn, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Delta Queen (20185211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 768, A - 13/09/04 -GAME( 2004, dimeye, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Diamond Eyes (0251312, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB012/20, J - 01/22/04 -GAME( 2004, dimeyece, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Diamond Eyes - Cash Express (0152039, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB012/20, J - 01/22/04 -GAME( 2002, di4ever, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Diamonds Forever (10105011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 679, B - 14/03/02 -GAME( 2003, dinosa6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Dinosaur (10118811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 731, C - 08/08/03 -GAME( 2005, dblagent, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Double Agent (0152082, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US180, A - 12/09/05 -GAME( 2000, dbldolph, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Double Dolphins (20000211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 647, C - 18/04/00 -GAME( 2004, drgnlord, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Dragon Lord (10173511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 761, A - 22/06/04 -GAME( 2006, drgnmgic, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Dragon Magic (2J015711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB051, E - 05/07/06 -GAME( 2003, drmcatch, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Dream Catcher (10126721, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 704, F - 23/06/03 -GAME( 2008, drmred, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Dream of the Red Chamber (10273811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB027/2, A - 25/8/08 -GAME( 2004, eaglrock, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Eagle Rock - Cash Express (0151126, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US021, C - 05/25/04 -GAME( 2010, estrike, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Eagle Strike (40289711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 950, A - 20/07/10 -GAME( 2004, eastland, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Easter Island - Cash Express (0151117, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US052, B - 02/22/04 -GAME( 2005, eggsrccm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Eggstreme Riches - Mr. Cashman (0351149, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US144, B - 11/3/05 -GAME( 200?, efce, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Enchanted Forest - Cash Express (0151084, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // ???, ??? -GAME( 2007, encspell, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Enchanted Spell (10257011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB041, B - 18/07/07 -GAME( 2000, enchantr, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Enchantress (20000711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 633, C- 15/01/00 -GAME( 2000, eott, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Eyes of the Tiger (10002011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 658, B - 01/06/00 -GAME( 2004, firednc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Fire Dancer (20184911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 772, A - 01/10/04 -GAME( 2002, flamoljc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Flame of Olympus - Jackpot Carnival (0251048, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4091/3, A - 2/18/02 -GAME( 2002, flamolce, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Flame of Olympus - Cash Express (0351025, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4091/3, A - 2/18/02 -GAME( 2000, followst, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Follow the Stars (20001411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 659, D - 15/09/00 -GAME( 2007, fortath, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Fortune of Athena (10248611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 847, C - 08/11/07 -GAME( 2004, frogwld, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Frog Wild 2 (0251114, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US112, A - 06/03/04 -GAME( 2005, gambjack, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Gamblin' Jack (20197211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 791, D - 23/09/05 -GAME( 2004, gwnn, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "The Game With No Name! (0452501, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4210, C - 09/13/04 -GAME( 2000, geishaa6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Geisha (10000811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 602/18, B - 03/06/00 -GAME( 2001, goape, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Go Ape (10006211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 661/2, B - 14/06/01 -GAME( 2001, gogreen, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Go For Green (10003411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 647/1, A - 22/02/01 -GAME( 2005, goldarch, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Golden Archer (10197411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 770, A - 07/07/05 -GAME( 2003, gldnflc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "The Golden Fleece (10158311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 680/2, A-07/07/03 -GAME( 2005, gldgong, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "The Golden Gong (0152558, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4258, C - 08/18/05 -GAME( 2004, goldinc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Golden Incas (10174011, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 752, A - 07/04/04 -GAME( 2005, goldincu, goldinc, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Golden Incas (0252533, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4244, A - 03/10/05 -GAME( 2002, goldpym, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Golden Pyramids Special Edition - Maximillions (10130811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02 -GAME( 2007, goldsam, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Golden Samurai (10247811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 832, A - 31/07/07 -GAME( 2002, gbmoney, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "The Good, The Bad & The Money (0351016, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US023, B - 09/11/02 -GAME( 2006, grizzly, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Grizzly (10214711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 780, C - 12/04/06 -GAME( 2003, heartgld, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Heart of Gold (20169511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717/2, A - 15/09/03 -GAME( 2006, heartveg, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Heart of Vegas (10232911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717/4, C - 27/06/06 -GAME( 2004, hlntroy, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Helen of Troy (0151336, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB014/21, B - 01/16/04 -GAME( 2001, highnoon, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "High Noon (20004111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 671, B - 28/06/01 -GAME( 2002, holdrma, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Hollywood Dreams (10100511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 670/1, A - 31/01/02 -GAME( 2004, househrt, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "House of Hearts (10200311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 765, C - 09/11/04 -GAME( 2005, incachf, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Inca Chief (20190711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 784, C - 21/10/05 -GAME( 2001, indream, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Indian Dreaming (10004211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/6, B - 24/04/01 -GAME( 2002, indremce, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Indian Dreaming - Cash Express (20109411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/10, A - 12/07/02 -GAME( 2003, indremll, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Indian Dreaming - Lady Luck (20151911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 742, C - 15/10/03 -GAME( 2003, indrem2c, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Indian Dreaming 2nd Chance (10150611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 753, B - 08/12/03 -GAME( 2003, indremmm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Indian Dreaming - Maximillions (10130711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/12, A - 17/01/03 -GAME( 2001, indgldcm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Indian Gold - Mr. Cashman (10102511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 674/1, A- 21/11/01 -GAME( 2004, indprncs, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Indian Princess (10174111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 764, A - 07/04/04 -GAME( 2002, jailbrk, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Jailbreak (10125611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 716, A - 14/11/02 -GAME( 2003, jefffox, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "You Might Be A Redneck If... - Jeff Foxworthy (0351068, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US041, B - 06/13/03 -GAME( 2003, jewelcm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Jewel of the Enchantress - Mr. Cashman (0151051, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US039, B- 1/24/03 -GAME( 2005, kingnep, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "King Neptune (20189111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 789, E - 08/08/05 -GAME( 2002, kingnile, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "King of the Nile (20106321, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 687, C - 27/09/02 -GAME( 2003, kingnilea,kingnile, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "King of the Nile (30106331, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 687, D - 07/01/03 -GAME( 2002, kingpeng, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "King Penguin (40109021, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 696, E- 26/11/02 -GAME( 2000, koalama6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Koala Mint (30001011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 643/6, A- 01/09/00 -GAME( 2003, kohinoor, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Kohinoor (10136711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 602/21, B - 10/02/03 -GAME( 2006, lgfish, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Let's Go Fish'n (10220111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, E - 23/05/06 -GAME( 2004, lemrol, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Let 'em Roll (0151115, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US088, B - 06/24/04 -GAME( 2005, lineking, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Line King (0252534, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4245, F - 11/10/05 -GAME( 2002, lordleo, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Lord Leopard (30111211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 685, B - 27/05/02 -GAME( 2001, lougcm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Louie's Gold - Mr. Cashman (20006911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 674, C- 13/07/01 -GAME( 200?, lovestrk, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Love Stuck (0152583, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4285, (no data) -GAME( 2007, lucky88, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Lucky 88 (10241411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 840, C - 25/06/07 -GAME( 2007, luigibal, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Luigi's Ball (10235411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 822, D - 19/03/07 -GAME( 2005, magforst, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Magic Forest (0151139, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US141, D - 02/01/05 -GAME( 2003, magmerm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Magic Mermaid (0251331, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB013/20, F - 10/13/03 -GAME( 2007, metestrm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Meteor Storm (0152162, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US217, A - 03/19/07 -GAME( 2007, milkin, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Milkin' It (10251911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 816, B - 13/08/07 -GAME( 2005, mskitty, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Miss Kitty (10216611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 778, C - 18/04/05 -GAME( 2000, mnytree, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Money Tree (10001211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 657, E - 06/11/00 -GAME( 2007, moonwalt, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Moonlight Waltz (10227611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 814/1, B - 11/01/07 -GAME( 2008, mchilli, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "More Chilli (20248711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 844, B - 21/01/08 -GAME( 200?, mrwoo, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Mr Woo (0252599, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4276, (no data) -GAME( 2002, mystarr, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Mystic Arrow (0151009, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US005, A - 01/07/02 -GAME( 2001, mysteycm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Mystic Eyes - Mr. Cashman (10008111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 675, A- 09/05/01 -GAME( 2002, mysteycmu,mysteycm, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Mystic Eyes - Mr. Cashman (0251024, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US020, C- 31/05/02 -GAME( 2002, mystmerm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Mystic Mermaid (1J008711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB013, D - 27/03/02 -GAME( 2005, nerdwild, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Nerds Gone Wild (10197311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 778, C - 18/04/05 -GAME( 200?, opsesam, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Open Sesame (0351309, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // ???, ??? -GAME( 2006, orbeaut, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Oriental Beauty (10213511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 808, A - 07/02/06 -GAME( 2005, outbackj, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Outback Jack (20195211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 691, J - 02/06/05 -GAME( 2001, owlcap, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Owl Capone (10008711, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 594/9, A - 12/06/01 -GAME( 2004, pandpays, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Panda Pays - Mr. Cashman (0151109, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US092, A - 01/27/04 -GAME( 2001, parislgt, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Paris Lights (30002611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 670, A - 03/05/01 -GAME( 2002, parislgtu,parislgt, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Paris Lights - Jackpot Carnival (0251031, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US022, A - 07/03/02 -GAME( 2002, pcockmag, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Peacock Magic (1J008811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB014, B - 09/05/02 -GAME( 2004, pelipete, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Pelican Pete (10177511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 778, A - 22/11/04 -GAME( 2005, pelipeteu,pelipete, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Pelican Pete (0252555, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4251, C - 10/28/05 -GAME( 2005, pennyar, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Penny Arcade (0251169, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US159, A - 04/06/05 -GAME( 2003, pengpyce, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Penguin Pays - Cash Express (0151120, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US055, A- 4/14/03 -GAME( 2000, pharfor, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Pharaoh's Fortune (40000921, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 656, D - 11/01/00 -GAME( 2005, phxfant, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Phoenix Fantasy (20197511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 793, A - 21/07/05 -GAME( 2000, pirata6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Pirates (10001511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 661/1, B - 3/11/00 -GAME( 2004, pcfavor, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Player's Choice - Favourites (20177311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0002, D - 04/11/04 -GAME( 2006, pcbydem, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Player's Choice - By Demand (10223111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0005, D - 25/09/06 -GAME( 2006, pcmostw, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Player's Choice - Most Wanted (20234911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0010, C - 09/11/06 -GAME( 2010, pcgold, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Player's Choice - Gold Edition (30291411, New Zealand)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0047, A - 09/04/10 -GAME( 2009, pcplat, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Player's Choice - Platinum (20282111, New Zealand)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0031, B - 04/02/09 -GAME( 2004, pcorig, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Player's Choice - Original (30143011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG001, C - 12/01/04 -GAME( 200?, pwsuper, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Player's World - Super (0154019, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0016, (no data) -GAME( 2001, pompeia6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Pompeii (10002211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/5, A - 22/01/01 -GAME( 2002, pompeia6u,pompeia6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Pompeii (0251010, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US008, A - 04/03/02 -GAME( 2005, prideaf, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Pride of Africa (10208511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/9, J - 06/12/05 -GAME( 2004, prophecy, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Prophecy (20173411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 734, B - 10/08/04 -GAME( 2005, qnilea6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of the Nile (3J011111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB027, C - 16/02/05 -GAME( 2001, qnilese, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition (10102811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683, A - 06/12/01 -GAME( 2002, qnilejc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02 -GAME( 2002, qnilejcsp, qnilejc, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02 -GAME( 2003, qsheeba, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of Sheba (10133711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 687, F - 04/03/03 -GAME( 2005, raprichs, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Rapid Riches (10194211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 762, D - 09/03/05 -GAME( 2002, redbara6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Red Baron (10119911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 709, B - 21/11/02 -GAME( 2005, roadtrip, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Road Trip (0152539, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4238, C - 08/18/05 -GAME( 2002, ruprup, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Roll Up! Roll Up!! (10115911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 642/5, A - 22/08/02 -GAME( 2002, rubymag, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Ruby Magic (10125711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 698, C - 12/11/02 -GAME( 2010, rumbreel, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Rumble Reels (20288611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 949, B - 04/08/10 -GAME( 2000, scatmag2, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Scatter Magic II (10001311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 660, C - 24/08/00 -GAME( 2001, scatmag2sa, scatmag2, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Scatter Magic II (10102711, South Australia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 660, G - 15/05/01 -GAME( 2002, sealdeal, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Seal The Deal - Jackpot Carnival (0251029, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US024, A - 06/20/02 -GAME( 2006, shamnmg, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Shaman's Magic (10225911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 818, C - 14/11/06 -GAME( 200?, shamnmgu, shamnmg, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Shaman's Magic (0152647, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4318/1, (no data) -GAME( 2004, shorthng, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Shore Thing (0251088, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US087, B - 1/30/04 -GAME( 2001, smtma6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Show Me The Money (10001911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 657/1, B - 08/01/01 -GAME( 2006, silkrda6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Silk Road (0152537, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4248/4, D - 02/09/06 -GAME( 2002, silgola6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Silver & Gold (20100721, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 672/1, G - 08/07/02 -GAME( 2008, skydnca6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sky Dancer (10272711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB091/2, A - 28/08/08 -GAME( 1999, spgcarn, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Spring Carnival (10000311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 642, C - 15/11/99 -GAME( 2003, stardrft, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Star Drifter (20150811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717/2, A - 15/09/03 -GAME( 2004, stardrftu,stardrft, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Star Drifter (0451341, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4204/1, A - 02/16/04 -GAME( 2001, starqst, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Star Quest (10009511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 659/2, B - 29/10/01 -GAME( 2005, statsymb, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Status Symbols (0251147, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US146, A - 02/10/05 -GAME( 2003, sunmoon, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sun & Moon (0151303, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4173, C - 04/01/03 -GAME( 200?, sunmonbb, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sun & Moon - Bank Buster (0153028, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4173/2, (no data) -GAME( 2003, sunqndol, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sun Queen - Dollar Storm (0451327, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV2070/1, B - 11/24/03 -GAME( 2005, sbuk5, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Super Bucks V (20203611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 794, A - 03/08/05 -GAME( 2005, swhr2a6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sweethearts II (0151183, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US169, A - 7/5/05 -GAME( 2002, swh2ld, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sweethearts II - Lucky Devil (10119811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 712, C - 16/10/02 -GAME( 2006, tahitim, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Tahiti Magic (10238911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 765/2, C - 07/12/06 -GAME( 2002, thaiprnc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Thai Princess (10119321, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 707, A - 17/09/02 -GAME( 2003, thaiprncm,thaiprnc, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Thai Princess (30127721, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 707, E - 21/03/03 -GAME( 2004, thndrhrt, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Thunderheart (10173811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 758, B - 11/05/04 -GAME( 2007, tigress, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Tigress (20230111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 807, C - 03/04/07 -GAME( 2007, tikitalk, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Tiki Talk (10239111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 831, D - 28/03/07 -GAME( 2001, tiktorch, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Tiki Torch (0151003, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4130/4, A - 08/10/01 -GAME( 200?, timbwolf, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Timber Wolf (0154013, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4333/1, (no data) -GAME( 2002, topshta6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Top Shot (30123211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 714, C - 16/12/02 -GAME( 2000, torgods, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Torch of the Gods (10000411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 602/19, B - 09/08/00 -GAME( 2001, toprdice, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Touch of Paradice (20007511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 650/2, A - 24/04/01 -GAME( 200?, trsking, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Treasure King (0152570, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4268, (no data) -GAME( 2006, turtreas, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Turtle Treasure (10234711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 819/1, A - 06/10/06 -GAME( 2002, venetian, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Venetian Nights (1J008911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB016/1, D - 05/08/02 -GAME( 2004, venice, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Venice (0151355, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB016/20, F - 07/06/04 -GAME( 2009, werewild, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Werewolf Wild (10288711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 939, A - 03/12/09 -GAME( 2002, whalecsh, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Whales of Cash (20155711, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 695, A - 14/06/02 -GAME( 2003, whalecshu,whalecsh, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Whales of Cash (0451311, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4174, A - 03/31/03 -GAME( 2005, whalecshua,whalecsh, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Whales of Cash (0451346, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4214, B - 01/14/05 -GAME( 2004, wheregld, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Where's The Gold (10124811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, B - 26/02/04 -GAME( 2004, wheregldsp,wheregld, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Where's The Gold (10124811, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, B - 26/02/04 -GAME( 2004, wheregldm,wheregld, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Where's the Gold (20177111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, C - 17/06/04 -GAME( 2003, whtwater, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "White Water (0151075, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US054, A - 4/11/03 -GAME( 2006, wikwin2, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wicked Winnings II - Power Pay (10214011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 796, A - 28/02/06 -GAME( 2002, wldafr, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Africa - Millioniser (0351083, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4076, D - 5/08/02 -GAME( 2006, wldcata6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Cats (10237511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 811, B - 20/06/06 -GAME( 2003, wldgoos, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Goose (20131911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 732, B - 02/06/03 -GAME( 2009, wgorilla, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Gorilla - Power Pay (20279811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB108/2, B - 19/06/09 -GAME( 2006, wldpanda, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Panda (20218411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 800, E - 07/08/06 -GAME( 2004, wldpanth, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Panthers - Li'l Lucy (0651310, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4187, D- 01/15/04 -GAME( 2006, wldstall, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Stallion (10230811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 805, B - 12/09/06 -GAME( 2007, wtepee, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Tepee - Power Pay (10230211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 820, H - 20/04/07 -GAME( 2006, wwaratah, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Waratah (10215911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 811, A - 14/02/06 -GAME( 2006, wwaratahsp, wwaratah, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Waratah (10215911, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 811, A - 14/02/06 -GAME( 2002, wways, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Ways (10106911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 698, B - 19/06/02 -GAME( 2003, wwaysm, wways, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Ways (10130111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 698/1, A - 25/02/03 -GAME( 2005, wingoly, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wings Over Olympus (0252529, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4237/1, A - 03/07/05 -GAME( 2003, wzwaysll, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wizard Ways - Lady Luck (20139111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 702, H - 30/06/03 -GAME( 2003, zorroa6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Zorro (30130611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 743, B - 5/09/03 -GAME( 2005, zorroa6u, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Zorro (0151372, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4212, F - 05/13/05 - - - -/* -List of known MK6 games, excluding Hyperlink variations - -5 Dragons -5 Koi - Power Pay Same gameplay as 5 Dragons -50 Dragons Same gameplay as 50 Lions -50 Lions -100 Lions -African Dusk - Mr. Cashman Black Rhino with a bonus feature -Alchemy Same gameplay as Mystic Mermaid -Amazing Money Machine -Antony and Cleopatra -Arabian Nights -Arctic Wins - Mr. Cashman -Arishinko -Asian Princess Thai Princess with a bonus bet option -Atlantis -Aztec Gold - Lady Luck -Bachelorette Party -Ball Power Sports -Beaver Bucks -Big Ben -Big Red -Big Red 2 -Black Brumby -Black Rhino - Power Pay -Brazil -Buccaneer -Buffalo -Burning Desire -Bushranger -Cactus Corral Same gameplay as Shaman's Magic -Canary Riches Identical to Golden Canaries -Cash Carousel -Cashman Tonight 4-in-1 multi-game with a bonus feature and jackpot -Centurion -Cheeky Monkey Same gameplay as Mystic Mermaid -Choy Sun Doa -Choy Sun Returns -Commander K -Corrida de Toros - The Bullfight -Creature Feature -Crystal Springs -Deep Freeze -Desert Gold -Diamond Eyes -Diamonds Forever -Diamonds & Hearts - Power Pay -Dinosaur -Double Dolphins -Dragon Lord Similar to Red Baron -Dream Catcher Same gameplay as Asian Princess -Dream of the Red Chamber -Fan Dancer -Fire Dancer -Fortune of Athena -Fortune King Same gameplay as 5 Dragons -Fortune Warrior -Geisha Geisha was only released on MK5 for NZ market as a one-off -Genghis Khan -Go For Green -Good Fortune -Golden Archer -Golden Canaries II - Lucky Devil -Golden Incas -Golden Samurai Same gameplay as Big Red 2 -Grizzly -Heart of Gold Same gameplay as 50 Lions -Helen of Troy Same gameplay as Peacock Flutter -Hollywood Dreams -Hot Cash -House of Hearts Same gameplay as Buccaneer -Inca Chief -Indian Dreaming - Lady Luck -Indian Princess -Island Delight -Jailbird - Mr. Cashman K.G. Bird with a bonus feature -Jailbreak K.G. Bird style game, updated graphics -Kakadu Dreaming -Kenyan Gold Similar to Show Me The Money -King Neptune -King of Asia Identical to Choy Sun Doa -King of Asia II Identical to Fortune King -King of the Nile -King Penguin -Kirin Warriors -Knight's Challenge Similar to Queen of the Nile, added jackpot bonus -L.A. Gator Same gameplay as 50 Lions -Ladies Day Similar to Spring Carnival -Lady of Fortune -Let's Go Fish'n Same gameplay as Where's The Gold -Line King Similar to 50 Lions -Louie's Gold - Mr. Cashman Loco Loot with a bonus feature -Love Stuck Same gameplay as Sun Queen -Lucky 88 -Luigi's Ball -Macaw Magic Same gameplay as King Galah -Margarita Rose -Meteor Storm -Miss Kitty Same gameplay as Pelican Pete -Moon Festival -Moonlight Waltz -More Chilli -Mr Woo Similar to Zorro -Mr Woo Moonlight Market -Mystic Chief -Mystic Eyes - Mr. Cashman Enchanted Forest with a bonus feature -Mystic Forest -Mystic Mermaid -Mystic Power Same gameplay as Indian Dreaming -Nerds Gone Wild -Orchid Magic -Oriental Beauty -Outback Jack -Owl Capone -Paris Lights -Peacock Magic -Pelican Pete -Pharaoh's Fortune -Phoenix Fantasy Same gameplay as Tiki Torch -Pirates -Player's Choice - By Demand Player's Choice is a series of 4-in-1 multi-game machines -Player's Choice - Favouries -Player's Choice - Original -Player's Choice - Platinum -Player's Choice - Super -Pompeii Same gameplay as Indian Dreaming -Pride of Africa Same gameplay as Indian Dreaming -Prophecy -Queen of Atlantis Identical to Atlantis -Queen of Sheba Same gameplay as King of the Nile -Queen of the Nile Special Edition Altered gameplay to original QOTN, more games won with 4 or 5 pyramids -Rapid Riches -Red Baron -Reelin' N Boppin' -Roamin' Italy -Roll Up! Roll Up!! Same gameplay as Spring Carnival -Ruby Magic Same gameplay as Wild Ways -Rumble Reels -Scatter Magic II -Seal the Deal Same gameplay as Helen of Troy -Shaman's Magic -Show Me The Money Same gameplay as Money Tree -Silk Road -Silver & Gold Identical to Sun & Moon -Sky Dancer -Snap Shot -Spring Carnival -Spring Festival -Star Drifter Same gameplay as 50 Lions -Star Quest -Sun & Moon -Sun Chief -Sun King -Sun Queen -Super Bucks IV -Super Bucks V -Sweet Hearts II - Lucky Devil -Tahiti Magic -Tequila Sunrise - Mr. Cashman -Thai Princess -The Magician Same gameplay as Lady of Fortune -The Game With No Name! -The Golden Gong Same gameplay as Big Ben -Tigress -Tiki Talk -Tiki Torch -Timber Wolf -Torch of the Gods Identical to Adonis -Turtle Treasure -Unicorn Moon Identical to Unicorn Dreaming -Viking Riches -Water Margin -Whale of a Time Identical to Whales of Cash -Whales of Cash -Where's The Gold -White Tiger II - Lucky Devil -Wicked Winnings - Lady Luck -Wicked Winnings II - Power Pay -Wild Cats Same gameplay as Wild Waratah -Wild Cougar - Power Pay Same gameplay as Black Rhino - Power Pay -Wild Goose -Wild Gorilla - Power Pay -Wild Hearts Similar to Sun Chief -Wild Panda -Wild Stallion -Wild Tepee - Power Pay Similar to Indian Dreaming -Wild Waratah -Wild Ways -Wings over Olympus -You Might Be A Redneck If... -Zorro -Zorro & Lady Rawhide - Zorro Link -Zorro II - Zorro Link -Zorro Returns - Zorro Link -Zorro Unmasked - Zorro Link - -Additionally, many games on earlier (e.g. MK5) hardware were re-released on MK6, featuring new MK6 style graphics, sounds etc. -Confirmed 'older' games running on MK6 listed below; these games were also on MK5, and some even on MK4: - -Adonis -Black Panther Only seen in a multi-game system, 'Player's Choice By Demand' -Desert Bloom Same gameplay as Sweet Hearts II -Dolphin Treasure -Enchantress -Flame of Olympus Identical to Adonis -Golden Pyramids Identical to Queen of the Nile -Inca Sun -Indian Dreaming Two formats exist, Reel Power (243 Ways) and Multi-line (usually 20 lines). Both game types play differenly but feature identical graphics. -Koala Mint -Money Tree -Panther Magic -Prize Fight II Only seen in a multi-game system, 'Player's Choice By Demand' - MK5 version was simply called 'Prize Fight' -Queen of the Nile -Return of the Samurai -Super Bucks III Only seen in a multi-game system, 'Player's Choice By Demand' -Sweet Hearts II -Venetian Nights MK5 version is possibly rare -Wicked Winnings Only seen a Cash Express Hyperlink version so far, not to be confused with the more common 'Wicked Winnings II - Power Pay' -*/ +// Hyperlink jackpot versions e.g. Bank Buster, Cash Express, Jackpot Carnival and Maximillions are considered clones if an original set exists +GAME( 2004, 5drag, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "5 Dragons (20161011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 744, C - 14/01/04 +GAME( 2004, 5dragsp, 5drag, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "5 Dragons (20161011, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 744, C - 14/01/04 +GAME( 2007, 5dragce, 5drag, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "5 Dragons - Cash Express (0152309, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US211, A - 01/09/07 +GAME( 2007, 5koipp, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "5 Koi - Power Pay (10250711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 744/2, C - 25/10/07 +GAME( 2002, 50lions, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "50 Lions (10120511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717, A - 11/10/02 +GAME( 2003, 50lionsm, 50lions, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "50 Lions (10156111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717, D - 20/10/03 +GAME( 2012, 50lionrr, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "50 Lions - Roaring Riches (20301311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 1049, B - 20/08/12 +GAME( 2006, 100lions, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "100 Lions (10219211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717/4, B - 13/06/06 +GAME( 2005, adonisa6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Adonis (0151178, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US168, A - 05/26/05 +GAME( 2001, aduskcm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "African Dusk - Mr. Cashman (20006711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 665/1, B- 13/07/01 +GAME( 2004, afterhrs, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "After Hours (0251071, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US051, B - 01/20/04 +GAME( 2003, alchemy, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Alchemy (1J009611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB013/2, A - 30/05/03 +GAME( 2007, atkgld, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "All the King's Gold (0152152, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US209, A - 01/08/07 +GAME( 2001, amzqueen, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Amazon Queen (10005511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 669, A - 02/05/01 +GAME( 2009, amztempl, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Amazon Temple (10299811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 906, A - 29/04/09 +GAME( 2004, antcleo, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Antony and Cleopatra (10163211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 754, A - 15/01/04 +GAME( 2004, antcleom, antcleo, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Antony and Cleopatra (10177211, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 754, B - 12/07/04 +GAME( 2003, apocof, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Apollo Coffee (0151105, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US083, A - 11/10/03 +GAME( 2001, arabnga6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Arabian Nights (2J008211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB009/1, E - 10/12/01 +GAME( 2004, arabnga6u,arabnga6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Arabian Nights (0151356, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB016/21, E - 07/06/04 +GAME( 2003, arwincm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Arctic Wins - Mr. Cashman (0151065, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US029, E- 01/27/03 +GAME( 2003, arish, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Arishinko (0151087, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US057, E - 05/28/03 +GAME( 2004, asnprinc, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Asian Princess (0352502, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4208, C - 09/13/04 +GAME( 2008, beavbuk, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Beaver Bucks (20255111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 850, C - 23/01/08 +GAME( 2003, betzoo, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Betting Zoo - Mr. Cashman (0251064, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US037, B - 01/28/03 +GAME( 2003, bigben, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Big Ben (30126911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 710, B - 17/07/03 +GAME( 2003, bigbena, bigben, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Big Ben (20126911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 710, B - 17/07/03 +GAME( 1999, bigheart, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Big Hearted (10000511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 637, D - 15/11/99 +GAME( 2002, bigred, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Big Red (2J009211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB015, D - 27/09/02 +GAME( 2002, bigreda, bigred, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Big Red (1J009211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB015, D - 27/09/02 +GAME( 2005, bigred2, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Big Red 2 (5J011311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB024, B - 18/05/05 +GAME( 2002, blkbrum, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Black Brumby (1J009111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB010, C - 14/06/02 +GAME( 200?, blkmust, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Black Mustang (0152584, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB014/21, (no data) +GAME( 2007, bluetigr, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Blue Tiger (20259511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 855, A - 12/12/07 +GAME( 2007, bobdolly, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Bob and Dolly (0352298, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US243, A - 10/15/07 +GAME( 2005, brazil, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Brazil (20180311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 783, B - 25/02/05 +GAME( 2004, bucaneer, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Buccaneer (10173011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 765, A - 05/04/04 +GAME( 2005, bucaneeru,aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Buccaneer (0252523, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4229, B - 01/07/05 +GAME( 2010, buckstop, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "The Buck Stops Here (10294311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 897/1, A - 22/07/10 +GAME( 2006, buffalo, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Buffalo (10217811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 806, E - 06/10/06 +GAME( 2006, buffalou, buffalo, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Buffalo (0252636, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4328, (no data) +GAME( 2005, bmbugs, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Bumble Bugs (0351180, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US166, A - 05/13/05 +GAME( 2001, bushrngr, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Bushranger (10006111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 673, A - 18/04/01 +GAME( 2007, cactusco, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Cactus Corral (10237711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 818, D - 24/07/07 +GAME( 2007, callwld, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Call of the Wild (10256611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 827, B - 12/11/07 +GAME( 2005, calyking, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Calypso King (20197111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 772/1, B - 25/07/05 +GAME( 2006, canaryrc, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Canary Riches (10218211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 809, A - 30/03/06 +GAME( 2005, cmtonig, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Cashman Tonight (30194711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0007, B - 25/05/05 +GAME( 2004, cinhell, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Chance in Hell - Li'l Lucy (0251125, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US119, A - 06/30/04 +GAME( 2002, csd, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Choy Sun Doa (10104011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 23/04/02 +GAME( 2002, csdsp, csd, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Choy Sun Doa (20104011, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 23/04/02 +GAME( 2003, csdm, csd, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Choy Sun Doa (20131511, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 23/01/03 +GAME( 2003, csdce, csd, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Choy Sun Doa - Cash Express (30149511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, A - 03/02/03 +GAME( 2006, csret, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Choy Sun Returns (20212211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 744/2, B - 15/08/06 +GAME( 2005, corrida, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Corrida de Toros (30178311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 771, D - 22/03/05 +GAME( 2003, cryspri, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Crystal Springs (10144411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 740, A - 28/05/03 +GAME( 2003, crysprim, cryspri, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Crystal Springs (10155811, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 740, A - 28/05/03 +GAME( 2006, cryspriu, cryspri, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Crystal Springs (0352557, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4255, C - 01/16/06 +GAME( 2009, deepfrz, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Deep Freeze (10282311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB113/2, A - 27/02/09 +GAME( 2009, deepfrzu, deepfrz, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Deep Freeze (0154081, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB113/4, A - 27/07/09 +GAME( 2005, deltabel, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Delta Belle (0252532, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4243, B - 04/29/05 +GAME( 2004, deltaqn, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Delta Queen (20185211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 768, A - 13/09/04 +GAME( 2004, dimeye, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Diamond Eyes (0251312, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB012/20, J - 01/22/04 +GAME( 2004, dimeyece, dimeye, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Diamond Eyes - Cash Express (0152039, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB012/20, J - 01/22/04 +GAME( 2002, di4ever, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Diamonds Forever (10105011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 679, B - 14/03/02 +GAME( 2003, dinosa6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Dinosaur (10118811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 731, C - 08/08/03 +GAME( 2005, dblagent, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Double Agent (0152082, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US180, A - 12/09/05 +GAME( 2000, dbldolph, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Double Dolphins (20000211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 647, C - 18/04/00 +GAME( 2004, drgnlord, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Dragon Lord (10173511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 761, A - 22/06/04 +GAME( 2006, drgnmgic, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Dragon Magic (2J015711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB051, E - 05/07/06 +GAME( 2003, drmcatch, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Dream Catcher (10126721, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 704, F - 23/06/03 +GAME( 2008, drmred, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Dream of the Red Chamber (10273811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB027/2, A - 25/8/08 +GAME( 2004, eaglrock, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Eagle Rock - Cash Express (0151126, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US021, C - 05/25/04 +GAME( 2010, estrike, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Eagle Strike (40289711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 950, A - 20/07/10 +GAME( 2004, eastland, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Easter Island - Cash Express (0151117, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US052, B - 02/22/04 +GAME( 2005, eggsrccm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Eggstreme Riches - Mr. Cashman (0351149, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US144, B - 11/3/05 +GAME( 200?, efce, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Enchanted Forest - Cash Express (0151084, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // ???, ??? +GAME( 2007, encspell, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Enchanted Spell (10257011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB041, B - 18/07/07 +GAME( 2000, enchantr, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Enchantress (20000711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 633, C- 15/01/00 +GAME( 2000, eott, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Eyes of the Tiger (10002011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 658, B - 01/06/00 +GAME( 2004, firednc, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Fire Dancer (20184911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 772, A - 01/10/04 +GAME( 2002, flamolce, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Flame of Olympus - Cash Express (0351025, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4091/3, A - 2/18/02 +GAME( 2002, flamoljc, flamolce, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Flame of Olympus - Jackpot Carnival (0251048, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4091/3, A - 2/18/02 +GAME( 2000, followst, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Follow the Stars (20001411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 659, D - 15/09/00 +GAME( 2007, fortath, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Fortune of Athena (10248611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 847, C - 08/11/07 +GAME( 2004, frogwld, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Frog Wild 2 (0251114, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US112, A - 06/03/04 +GAME( 2005, gambjack, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Gamblin' Jack (20197211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 791, D - 23/09/05 +GAME( 2004, gwnn, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "The Game With No Name! (0452501, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4210, C - 09/13/04 +GAME( 2000, geishaa6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Geisha (10000811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 602/18, B - 03/06/00 +GAME( 2001, geishajc, geishaa6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Geisha - Jackpot Carnival (0351033, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4091/2, A - 10/18/01 +GAME( 2001, goape, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Go Ape (10006211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 661/2, B - 14/06/01 +GAME( 2001, gogreen, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Go For Green (10003411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 647/1, A - 22/02/01 +GAME( 2005, goldarch, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Golden Archer (10197411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 770, A - 07/07/05 +GAME( 2003, gldnflc, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "The Golden Fleece (10158311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 680/2, A-07/07/03 +GAME( 2005, gldgong, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "The Golden Gong (0152558, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4258, C - 08/18/05 +GAME( 2004, goldinc, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Golden Incas (10174011, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 752, A - 07/04/04 +GAME( 2005, goldincu, goldinc, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Golden Incas (0252533, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4244, A - 03/10/05 +GAME( 2002, goldpym, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Golden Pyramids Special Edition - Maximillions (10130811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02 +GAME( 2007, goldsam, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Golden Samurai (10247811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 832, A - 31/07/07 +GAME( 2002, gbmoney, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "The Good, The Bad & The Money (0351016, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US023, B - 09/11/02 +GAME( 2006, grizzly, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Grizzly (10214711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 780, C - 12/04/06 +GAME( 2003, heartgld, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Heart of Gold (20169511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717/2, A - 15/09/03 +GAME( 2006, heartveg, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Heart of Vegas (10232911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717/4, C - 27/06/06 +GAME( 2002, hlntroy, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Helen of Troy (1J008311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB014/4, G - 21/01/02 +GAME( 2004, hlntroyu, hlntroy, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Helen of Troy (0151336, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB014/21, B - 01/16/04 +GAME( 2001, highnoon, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "High Noon (20004111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 671, B - 28/06/01 +GAME( 2002, holdrma, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Hollywood Dreams (10100511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 670/1, A - 31/01/02 +GAME( 2004, househrt, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "House of Hearts (10200311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 765, C - 09/11/04 +GAME( 2005, incachf, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Inca Chief (20190711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 784, C - 21/10/05 +GAME( 2001, indream, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Indian Dreaming (10004211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/6, B - 24/04/01 +GAME( 2002, indremce, indream, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Indian Dreaming - Cash Express (20109411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/10, A - 12/07/02 +GAME( 2003, indremll, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Indian Dreaming - Lady Luck (20151911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 742, C - 15/10/03 +GAME( 2003, indrem2c, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Indian Dreaming 2nd Chance (10150611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 753, B - 08/12/03 +GAME( 2003, indremmm, indream, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Indian Dreaming - Maximillions (10130711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/12, A - 17/01/03 +GAME( 2001, indgldcm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Indian Gold - Mr. Cashman (10102511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 674/1, A- 21/11/01 +GAME( 2004, indprncs, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Indian Princess (10174111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 764, A - 07/04/04 +GAME( 2002, jailbrk, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Jailbreak (10125611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 716, A - 14/11/02 +GAME( 2003, jefffox, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "You Might Be A Redneck If... - Jeff Foxworthy (0351068, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US041, B - 06/13/03 +GAME( 2003, jewelcm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Jewel of the Enchantress - Mr. Cashman (0151051, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US039, B- 1/24/03 +GAME( 2005, kingnep, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "King Neptune (20189111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 789, E - 08/08/05 +GAME( 2003, kingnile, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "King of the Nile (30106331, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 687, D - 07/01/03 +GAME( 2002, kingnilea,kingnile, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "King of the Nile (20106321, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 687, C - 27/09/02 +GAME( 2002, kingpeng, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "King Penguin (20109021, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 696, D - 02/10/02 +GAME( 2002, kingpengsp,aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "King Penguin (40109021, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 696, E- 26/11/02 +GAME( 2000, koalama6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Koala Mint (30001011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 643/6, A- 01/09/00 +GAME( 2003, kohinoor, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Kohinoor (10136711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 602/21, B - 10/02/03 +GAME( 2006, lgfish, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Let's Go Fish'n (10220111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, E - 23/05/06 +GAME( 2004, lemrol, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Let 'em Roll (0151115, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US088, B - 06/24/04 +GAME( 2005, lineking, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Line King (0252534, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4245, F - 11/10/05 +GAME( 2002, lordleo, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Lord Leopard (30111211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 685, B - 27/05/02 +GAME( 2001, lougcm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Louie's Gold - Mr. Cashman (20006911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 674, C- 13/07/01 +GAME( 200?, lovestuk, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Love Stuck (0152583, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4285, (no data) +GAME( 2007, lucky88, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Lucky 88 (10241411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 840, C - 25/06/07 +GAME( 2007, luigibal, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Luigi's Ball (10235411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 822, D - 19/03/07 +GAME( 2005, magforst, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Magic Forest (0151139, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US141, D - 02/01/05 +GAME( 2003, magmerm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Magic Mermaid (0251331, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB013/20, F - 10/13/03 +GAME( 2007, metestrm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Meteor Storm (0152162, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US217, A - 03/19/07 +GAME( 2007, milkin, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Milkin' It (10251911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 816, B - 13/08/07 +GAME( 2005, mskitty, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Miss Kitty (10216611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 778, C - 18/04/05 +GAME( 2000, mnytree, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Money Tree (10001211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 657, E - 06/11/00 +GAME( 2007, moonwalt, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Moonlight Waltz (10227611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 814/1, B - 11/01/07 +GAME( 2008, mchilli, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "More Chilli (20248711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 844, B - 21/01/08 +GAME( 200?, mrwoo, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Mr Woo (0252599, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4276, (no data) +GAME( 2002, mystarr, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Mystic Arrow (0151009, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US005, A - 01/07/02 +GAME( 2001, mysteycm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Mystic Eyes - Mr. Cashman (10008111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 675, A- 09/05/01 +GAME( 2002, mysteycmu,mysteycm, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Mystic Eyes - Mr. Cashman (0251024, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US020, C- 31/05/02 +GAME( 2002, mystmerm, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Mystic Mermaid (1J008711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB013, D - 27/03/02 +GAME( 2005, nerdwild, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Nerds Gone Wild (10197311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 778, C - 18/04/05 +GAME( 200?, opsesam, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Open Sesame (0351309, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // ???, ??? +GAME( 2006, orbeaut, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Oriental Beauty (10213511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 808, A - 07/02/06 +GAME( 2005, outbackj, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Outback Jack (20195211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 691, J - 02/06/05 +GAME( 2001, owlcap, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Owl Capone (10008711, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 594/9, A - 12/06/01 +GAME( 2004, pandpays, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Panda Pays - Mr. Cashman (0151109, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US092, A - 01/27/04 +GAME( 2001, parislgt, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Paris Lights (30002611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 670, A - 03/05/01 +GAME( 2002, parislgtu,parislgt, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Paris Lights - Jackpot Carnival (0251031, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US022, A - 07/03/02 +GAME( 2002, pcockmag, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Peacock Magic (1J008811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB014, B - 09/05/02 +GAME( 2004, pcockmagu,pcockmag, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Peacock Magic (0151352, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB014/20, C - 07/06/04 +GAME( 2004, pelipete, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Pelican Pete (10177511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 778, A - 22/11/04 +GAME( 2005, pelipeteu,pelipete, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Pelican Pete (0252555, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4251, C - 10/28/05 +GAME( 2005, pennyar, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Penny Arcade (0251169, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US159, A - 04/06/05 +GAME( 2003, pengpyce, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Penguin Pays - Cash Express (0151120, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US055, A- 4/14/03 +GAME( 2000, pharfor, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Pharaoh's Fortune (40000921, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 656, D - 11/01/00 +GAME( 2005, phxfant, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Phoenix Fantasy (20197511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 793, A - 21/07/05 +GAME( 2000, pirata6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Pirates (10001511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 661/1, B - 3/11/00 +GAME( 2004, pcfavor, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Player's Choice - Favourites (20177311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0002, D - 04/11/04 +GAME( 2006, pcbydem, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Player's Choice - By Demand (10223111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0005, D - 25/09/06 +GAME( 2006, pcmostw, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Player's Choice - Most Wanted (20234911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0010, C - 09/11/06 +GAME( 2010, pcgold, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Player's Choice - Gold Edition (30291411, New Zealand)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0047, A - 09/04/10 +GAME( 2009, pcplat, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Player's Choice - Platinum (20282111, New Zealand)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0031, B - 04/02/09 +GAME( 2004, pcorig, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Player's Choice - Original (30143011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG001, C - 12/01/04 +GAME( 200?, pwsuper, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Player's World - Super (0154019, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MG0016, (no data) +GAME( 2001, pompeia6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Pompeii (10002211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/5, A - 22/01/01 +GAME( 2005, pompeia6u,pompeia6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Pompeii (0151158, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US161, A - 04/15/05 +GAME( 2002, pompeia6ua,pompeia6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Pompeii (0251010, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US008, A - 04/03/02 +GAME( 2005, prideaf, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Pride of Africa (10208511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/9, J - 06/12/05 +GAME( 2004, prophecy, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Prophecy (20173411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 734, B - 10/08/04 +GAME( 2005, qnilea6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Queen of the Nile (3J011111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB027, C - 16/02/05 +GAME( 2001, qnilese, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition (20102811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683, A - 06/12/01 +GAME( 2001, qnilesea, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition (10102811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683, A - 06/12/01 +GAME( 2002, qnilejc, qnilese, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02 +GAME( 2002, qnilejcsp, qnilese, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02 +GAME( 2003, qsheba, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Queen of Sheba (10133711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 687, F - 04/03/03 +GAME( 2005, raprichs, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Rapid Riches (10194211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 762, D - 09/03/05 +GAME( 2002, redbara6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Red Baron (10119911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 709, B - 21/11/02 +GAME( 2002, retsama6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Return of the Samurai (10117211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/10, A - 26/08/02 +GAME( 2005, roadtrip, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Road Trip (0152539, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4238, C - 08/18/05 +GAME( 2002, ruprup, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Roll Up! Roll Up!! (10115911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 642/5, A - 22/08/02 +GAME( 2002, rubymag, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Ruby Magic (10125711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 698, C - 12/11/02 +GAME( 2010, rumbreel, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Rumble Reels (20288611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 949, B - 04/08/10 +GAME( 2000, scatmag2, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Scatter Magic II (10001311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 660, C - 24/08/00 +GAME( 2001, scatmag2sa, scatmag2, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Scatter Magic II (10102711, South Australia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 660, G - 15/05/01 +GAME( 2006, scatmag3, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Scatter Magic III (0452569, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4277, (no data) +GAME( 2002, sealdeal, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Seal The Deal - Jackpot Carnival (0251029, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US024, A - 06/20/02 +GAME( 2006, shamnmg, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Shaman's Magic (10225911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 818, C - 14/11/06 +GAME( 200?, shamnmgu, shamnmg, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Shaman's Magic (0152647, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4318/1, (no data) +GAME( 2004, shorthng, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Shore Thing (0251088, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US087, B - 1/30/04 +GAME( 2001, smtma6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Show Me The Money (10001911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 657/1, B - 08/01/01 +GAME( 2006, silkrda6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Silk Road (0152537, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4248/4, D - 02/09/06 +GAME( 2002, silgola6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Silver & Gold (20100721, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 672/1, G - 08/07/02 +GAME( 2008, skydnca6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Sky Dancer (10272711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB091/2, A - 28/08/08 +GAME( 1999, spgcarn, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Spring Carnival (10000311, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 642, C - 15/11/99 +GAME( 2003, stardrft, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Star Drifter (20150811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717/2, A - 15/09/03 +GAME( 2004, stardrftu,stardrft, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Star Drifter (0451341, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4204/1, A - 02/16/04 +GAME( 2001, starqst, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Star Quest (10009511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 659/2, B - 29/10/01 +GAME( 2005, statsymb, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Status Symbols (0251147, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US146, A - 02/10/05 +GAME( 2003, sunmoon, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Sun & Moon (0251303, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4173, C - 04/01/03 +GAME( 2003, sunmoona, sunmoon, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Sun & Moon (0151303, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4173, C - 04/01/03 +GAME( 200?, sunmonbb, sunmoon, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Sun & Moon - Bank Buster (0153028, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4173/2, (no data) +GAME( 2003, sunqndol, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Sun Queen - Dollar Storm (0451327, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV2070/1, B - 11/24/03 +GAME( 2005, sbuk5, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Super Bucks V (20203611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 794, A - 03/08/05 +GAME( 2005, swhr2a6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Sweethearts II (0151183, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US169, A - 7/5/05 +GAME( 2002, swh2ld, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Sweethearts II - Lucky Devil (10119811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 712, C - 16/10/02 +GAME( 2006, tahitim, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Tahiti Magic (10238911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 765/2, C - 07/12/06 +GAME( 2002, thaiprnc, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Thai Princess (10119321, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 707, A - 17/09/02 +GAME( 2003, thaiprncm,thaiprnc, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Thai Princess (30127721, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 707, E - 21/03/03 +GAME( 2004, thndrhrt, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Thunder Heart (10173811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 758, B - 11/05/04 +GAME( 2007, tigress, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Tigress (20230111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 807, C - 03/04/07 +GAME( 2007, tikitalk, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Tiki Talk (10239111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 831, D - 28/03/07 +GAME( 2001, tiktorch, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Tiki Torch (0151003, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4130/4, A - 08/10/01 +GAME( 200?, timbwolf, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Timber Wolf (0154013, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4333/1, (no data) +GAME( 2002, topshta6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Top Shot (30123211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 714, C - 16/12/02 +GAME( 2000, torgods, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Torch of the Gods (10000411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 602/19, B - 09/08/00 +GAME( 2001, toprdice, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Touch of Paradice (20007511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 650/2, A - 24/04/01 +GAME( 200?, trsking, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Treasure King (0152570, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4268, (no data) +GAME( 2006, turtreas, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Turtle Treasure (10234711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 819/1, A - 06/10/06 +GAME( 2002, venetian, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Venetian Nights (1J008911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB016/1, D - 05/08/02 +GAME( 2004, venice, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Venice (0151355, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB016/20, F - 07/06/04 +GAME( 2009, werewild, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Werewolf Wild (10288711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 939, A - 03/12/09 +GAME( 2002, whalecsh, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Whales of Cash (20155711, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 695, A - 14/06/02 +GAME( 2003, whalecshu,whalecsh, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Whales of Cash (0451311, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4174, A - 03/31/03 +GAME( 2005, whalecshua,whalecsh, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Whales of Cash (0451346, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4214, B - 01/14/05 +GAME( 2004, wheregld, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Where's The Gold (10124811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, B - 26/02/04 +GAME( 2004, wheregldsp,wheregld, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Where's The Gold (10124811, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, B - 26/02/04 +GAME( 2004, wheregldm,wheregld, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Where's the Gold (20177111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, C - 17/06/04 +GAME( 2003, whtwater, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "White Water (0151075, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US054, A - 4/11/03 +GAME( 2006, wikwin2, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wicked Winnings II - Power Pay (10214011, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 796, A - 28/02/06 +GAME( 2002, wldafr, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Africa - Millioniser (0351083, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4076, D - 5/08/02 +GAME( 2006, wldcata6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Cats (10237511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 811, B - 20/06/06 +GAME( 2003, wldgoos, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Goose (20131911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 732, B - 02/06/03 +GAME( 2009, wgorilla, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Gorilla - Power Pay (20279811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB108/2, B - 19/06/09 +GAME( 2006, wldpanda, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Panda (20218411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 800, E - 07/08/06 +GAME( 2004, wldpanth, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Panthers - Li'l Lucy (0651310, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4187, D- 01/15/04 +GAME( 2006, wldstall, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Stallion (10230811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 805, B - 12/09/06 +GAME( 2007, wtepee, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Tepee - Power Pay (10230211, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 820, H - 20/04/07 +GAME( 2006, wwaratah, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Waratah (10215911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 811, A - 14/02/06 +GAME( 2006, wwaratahsp, wwaratah, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Waratah (10215911, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 811, A - 14/02/06 +GAME( 2002, wways, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Ways (10106911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 698, B - 19/06/02 +GAME( 2003, wwaysm, wways, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wild Ways (10130111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 698/1, A - 25/02/03 +GAME( 2005, wingoly, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wings Over Olympus (0252529, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4237/1, A - 03/07/05 +GAME( 2003, wzwaysll, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Wizard Ways - Lady Luck (20139111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 702, H - 30/06/03 +GAME( 2003, zorroa6, aristmk6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Zorro (30130611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 743, B - 5/09/03 +GAME( 2005, zorroa6u, zorroa6, aristmk6, aristmk6, aristmk6_state, 0, ROT0, "Aristocrat", "Zorro (0151372, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4212, F - 05/13/05 diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp index 980b69e807a..408e038bb8c 100644 --- a/src/mame/drivers/arkanoid.cpp +++ b/src/mame/drivers/arkanoid.cpp @@ -871,7 +871,7 @@ ADDRESS_MAP_END READ8_MEMBER(arkanoid_state::hexaa_f000_r) { // return m_hexaa_from_sub; - return rand(); + return machine().rand(); } WRITE8_MEMBER(arkanoid_state::hexaa_f000_w) @@ -905,7 +905,7 @@ WRITE8_MEMBER(arkanoid_state::hexaa_sub_80_w) READ8_MEMBER(arkanoid_state::hexaa_sub_90_r) { return m_hexaa_from_main; -// return rand(); +// return machine().rand(); } static ADDRESS_MAP_START( hexaa_sub_iomap, AS_IO, 8, arkanoid_state ) @@ -1335,7 +1335,7 @@ Pixel clock: 3 MHz = 192 HTotal, assuming it's 6 MHz #define ARKANOID_VBEND 16 #define ARKANOID_VBSTART 240 -static MACHINE_CONFIG_START( arkanoid, arkanoid_state ) +static MACHINE_CONFIG_START( arkanoid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */ @@ -1390,7 +1390,7 @@ static MACHINE_CONFIG_DERIVED( bootleg, arkanoid ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hexa, arkanoid_state ) +static MACHINE_CONFIG_START( hexa ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* Imported from arkanoid - correct? */ @@ -1431,7 +1431,7 @@ static MACHINE_CONFIG_DERIVED( hexaa, hexa ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( brixian, arkanoid_state ) +static MACHINE_CONFIG_START( brixian ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) @@ -2192,34 +2192,34 @@ DRIVER_INIT_MEMBER(arkanoid_state,brixian) /* Game Drivers */ // original sets of Arkanoid -// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1986, arkanoid, 0, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito Corporation Japan", "Arkanoid (World, older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkanoidu, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US, newer)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkanoiduo, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US, older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkanoidj, arkanoid, arkanoid, arkanoidj, driver_device, 0, ROT90, "Taito Corporation", "Arkanoid (Japan, newer)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkanoidja, arkanoid, arkanoid, arkanoidj, driver_device, 0, ROT90, "Taito Corporation", "Arkanoid (Japan, newer w/level select)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkanoidjb, arkanoid, arkanoid, arkanoidj, driver_device, 0, ROT90, "Taito Corporation", "Arkanoid (Japan, older)", MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY, FULLNAME, FLAGS +GAME( 1986, arkanoid, 0, arkanoid, arkanoid, arkanoid_state, 0, ROT90, "Taito Corporation Japan", "Arkanoid (World, older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkanoidu, arkanoid, arkanoid, arkanoid, arkanoid_state, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US, newer)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkanoiduo, arkanoid, arkanoid, arkanoid, arkanoid_state, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US, older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkanoidj, arkanoid, arkanoid, arkanoidj, arkanoid_state, 0, ROT90, "Taito Corporation", "Arkanoid (Japan, newer)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkanoidja, arkanoid, arkanoid, arkanoidj, arkanoid_state, 0, ROT90, "Taito Corporation", "Arkanoid (Japan, newer w/level select)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkanoidjb, arkanoid, arkanoid, arkanoidj, arkanoid_state, 0, ROT90, "Taito Corporation", "Arkanoid (Japan, older)", MACHINE_SUPPORTS_SAVE ) // bootlegs of Arkanoid -GAME( 1986, arkanoidjbl, arkanoid, p3mcu, arkanoidj, driver_device, 0, ROT90, "bootleg", "Arkanoid (bootleg with MCU, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkanoidjbl2,arkanoid, p3mcu, arkanoidj, driver_device, 0, ROT90, "bootleg (Beta)", "Arkanoid (bootleg with MCU, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ark1ball, arkanoid, p3mcu, ark1ball, driver_device, 0, ROT90, "bootleg", "Arkanoid (bootleg with MCU, harder)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkangc, arkanoid, bootleg, arkangc, arkanoid_state, arkangc, ROT90, "bootleg (Game Corporation)", "Arkanoid (Game Corporation bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkangc2, arkanoid, bootleg, arkangc2, arkanoid_state, arkangc2, ROT90, "bootleg (Game Corporation)", "Arkanoid (Game Corporation bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkblock, arkanoid, bootleg, arkangc, arkanoid_state, arkblock, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkbloc2, arkanoid, bootleg, arkangc, arkanoid_state, arkbloc2, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkbloc3, arkanoid, bootleg, block2, arkanoid_state, block2, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) // Both these sets (arkblock3, block2) have an extra unknown rom -GAME( 1986, block2, arkanoid, bootleg, block2, arkanoid_state, block2, ROT90, "bootleg (S.P.A. Co.)", "Block 2 (S.P.A. Co. bootleg)", MACHINE_SUPPORTS_SAVE ) // and scrambled gfx roms with 'space invader' themed gfx -GAME( 1986, arkgcbl, arkanoid, bootleg, arkgcbl, arkanoid_state, arkgcbl, ROT90, "bootleg", "Arkanoid (bootleg on Block hardware, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkgcbla, arkanoid, bootleg, arkgcbl, arkanoid_state, arkgcbl, ROT90, "bootleg", "Arkanoid (bootleg on Block hardware, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, paddle2, arkanoid, bootleg, paddle2, arkanoid_state, paddle2, ROT90, "bootleg", "Paddle 2 (bootleg on Block hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arkatayt, arkanoid, bootleg, arkatayt, driver_device, 0, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, arktayt2, arkanoid, bootleg, arktayt2, driver_device, 0, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg, harder)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkanoidjbl, arkanoid, p3mcu, arkanoidj, arkanoid_state, 0, ROT90, "bootleg", "Arkanoid (bootleg with MCU, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkanoidjbl2,arkanoid, p3mcu, arkanoidj, arkanoid_state, 0, ROT90, "bootleg (Beta)", "Arkanoid (bootleg with MCU, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ark1ball, arkanoid, p3mcu, ark1ball, arkanoid_state, 0, ROT90, "bootleg", "Arkanoid (bootleg with MCU, harder)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkangc, arkanoid, bootleg, arkangc, arkanoid_state, arkangc, ROT90, "bootleg (Game Corporation)", "Arkanoid (Game Corporation bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkangc2, arkanoid, bootleg, arkangc2, arkanoid_state, arkangc2, ROT90, "bootleg (Game Corporation)", "Arkanoid (Game Corporation bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkblock, arkanoid, bootleg, arkangc, arkanoid_state, arkblock, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkbloc2, arkanoid, bootleg, arkangc, arkanoid_state, arkbloc2, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkbloc3, arkanoid, bootleg, block2, arkanoid_state, block2, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) // Both these sets (arkblock3, block2) have an extra unknown rom +GAME( 1986, block2, arkanoid, bootleg, block2, arkanoid_state, block2, ROT90, "bootleg (S.P.A. Co.)", "Block 2 (S.P.A. Co. bootleg)", MACHINE_SUPPORTS_SAVE ) // and scrambled gfx roms with 'space invader' themed gfx +GAME( 1986, arkgcbl, arkanoid, bootleg, arkgcbl, arkanoid_state, arkgcbl, ROT90, "bootleg", "Arkanoid (bootleg on Block hardware, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkgcbla, arkanoid, bootleg, arkgcbl, arkanoid_state, arkgcbl, ROT90, "bootleg", "Arkanoid (bootleg on Block hardware, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, paddle2, arkanoid, bootleg, paddle2, arkanoid_state, paddle2, ROT90, "bootleg", "Paddle 2 (bootleg on Block hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arkatayt, arkanoid, bootleg, arkatayt, arkanoid_state, 0, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, arktayt2, arkanoid, bootleg, arktayt2, arkanoid_state, 0, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg, harder)", MACHINE_SUPPORTS_SAVE ) // Other games -GAME( 1987, arkatour, 0, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Tournament Arkanoid (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, arkatour, 0, arkanoid, arkanoid, arkanoid_state, 0, ROT90, "Taito America Corporation (Romstar license)", "Tournament Arkanoid (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 19??, tetrsark, 0, bootleg, tetrsark, arkanoid_state, tetrsark, ROT0, "D.R. Korea", "Tetris (D.R. Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 19??, tetrsark, 0, bootleg, tetrsark, arkanoid_state, tetrsark, ROT0, "D.R. Korea", "Tetris (D.R. Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 199?, hexa, 0, hexa, hexa, arkanoid_state, hexa, ROT0, "D.R. Korea", "Hexa", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 199?, hexaa, hexa, hexaa, hexa, arkanoid_state, hexaa, ROT0, "D.R. Korea", "Hexa (with 2xZ80, protected)", MACHINE_NOT_WORKING ) +GAME( 199?, hexa, 0, hexa, hexa, arkanoid_state, hexa, ROT0, "D.R. Korea", "Hexa", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 199?, hexaa, hexa, hexaa, hexa, arkanoid_state, hexaa, ROT0, "D.R. Korea", "Hexa (with 2xZ80, protected)", MACHINE_NOT_WORKING ) -GAME( 1993, brixian, 0, brixian, brixian, arkanoid_state, brixian, ROT0, "Cheil Computer System", "Brixian", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, brixian, 0, brixian, brixian, arkanoid_state, brixian, ROT0, "Cheil Computer System", "Brixian", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp index eba42d271af..4b98a37cd28 100644 --- a/src/mame/drivers/armedf.cpp +++ b/src/mame/drivers/armedf.cpp @@ -1257,7 +1257,7 @@ static MACHINE_CONFIG_FRAGMENT( terraf_sound ) MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( terraf, armedf_state ) +static MACHINE_CONFIG_START( terraf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz? @@ -1279,7 +1279,7 @@ static MACHINE_CONFIG_START( terraf, armedf_state ) MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf) MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", armedf) @@ -1292,7 +1292,7 @@ static MACHINE_CONFIG_START( terraf, armedf_state ) MCFG_FRAGMENT_ADD(terraf_sound) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( terrafjb, armedf_state ) +static MACHINE_CONFIG_START( terrafjb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz @@ -1321,7 +1321,7 @@ static MACHINE_CONFIG_START( terrafjb, armedf_state ) MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf) MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", armedf) MCFG_PALETTE_ADD("palette", 2048) @@ -1348,7 +1348,7 @@ static MACHINE_CONFIG_DERIVED( terrafb, terraf ) MCFG_DEVICE_REMOVE("nb1414m4") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kozure, armedf_state ) +static MACHINE_CONFIG_START( kozure ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz @@ -1370,7 +1370,7 @@ static MACHINE_CONFIG_START( kozure, armedf_state ) MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf) MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", armedf) MCFG_PALETTE_ADD("palette", 2048) @@ -1382,7 +1382,7 @@ static MACHINE_CONFIG_START( kozure, armedf_state ) MCFG_FRAGMENT_ADD(terraf_sound) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( armedf, armedf_state ) +static MACHINE_CONFIG_START( armedf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz @@ -1407,7 +1407,7 @@ static MACHINE_CONFIG_START( armedf, armedf_state ) MCFG_VIDEO_START_OVERRIDE(armedf_state,armedf) MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", armedf) MCFG_PALETTE_ADD("palette", 2048) @@ -1430,7 +1430,7 @@ static MACHINE_CONFIG_START( armedf, armedf_state ) MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cclimbr2, armedf_state ) +static MACHINE_CONFIG_START( cclimbr2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz @@ -1457,7 +1457,7 @@ static MACHINE_CONFIG_START( cclimbr2, armedf_state ) MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf) MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", armedf) MCFG_PALETTE_ADD("palette", 2048) @@ -1480,7 +1480,7 @@ static MACHINE_CONFIG_START( cclimbr2, armedf_state ) MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( legion, armedf_state ) +static MACHINE_CONFIG_START( legion ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz @@ -1507,7 +1507,7 @@ static MACHINE_CONFIG_START( legion, armedf_state ) MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf) MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", armedf) MCFG_PALETTE_ADD("palette", 2048) @@ -1530,7 +1530,7 @@ static MACHINE_CONFIG_START( legion, armedf_state ) MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( legionjb, armedf_state ) +static MACHINE_CONFIG_START( legionjb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz @@ -1555,7 +1555,7 @@ static MACHINE_CONFIG_START( legionjb, armedf_state ) MCFG_VIDEO_START_OVERRIDE(armedf_state,terraf) MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", armedf) MCFG_PALETTE_ADD("palette", 2048) @@ -1578,7 +1578,7 @@ static MACHINE_CONFIG_START( legionjb, armedf_state ) MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state ) +static MACHINE_CONFIG_START( bigfghtr ) MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // verified MCFG_CPU_PROGRAM_MAP(bigfghtr_map) @@ -1598,7 +1598,7 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state ) MCFG_VIDEO_START_OVERRIDE(armedf_state,armedf) MCFG_SCREEN_UPDATE_DRIVER(armedf_state, screen_update_armedf) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", armedf) MCFG_PALETTE_ADD("palette", 2048) @@ -2247,5 +2247,5 @@ GAME( 1988, cclimbr2a,cclimbr2, cclimbr2, cclimbr2, armedf_state, cclimbr2, RO GAME( 1988, armedf, 0, armedf, armedf, armedf_state, armedf, ROT270, "Nichibutsu", "Armed Formation", MACHINE_SUPPORTS_SAVE ) GAME( 1988, armedff, armedf, armedf, armedf, armedf_state, armedf, ROT270, "Nichibutsu (Fillmore license)", "Armed Formation (Fillmore license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, skyrobo, 0, bigfghtr, bigfghtr, armedf_state, armedf, ROT0, "Nichibutsu", "Sky Robo", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bigfghtr, skyrobo, bigfghtr, bigfghtr, armedf_state, armedf, ROT0, "Nichibutsu", "Tatakae! Big Fighter (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, skyrobo, 0, bigfghtr, bigfghtr, bigfghtr_state, armedf, ROT0, "Nichibutsu", "Sky Robo", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bigfghtr, skyrobo, bigfghtr, bigfghtr, bigfghtr_state, armedf, ROT0, "Nichibutsu", "Tatakae! Big Fighter (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/arsystems.cpp b/src/mame/drivers/arsystems.cpp index 1462b3a770e..86b05f5e895 100644 --- a/src/mame/drivers/arsystems.cpp +++ b/src/mame/drivers/arsystems.cpp @@ -288,7 +288,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( arcadia, arcadia_amiga_state ) +static MACHINE_CONFIG_START( arcadia ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_NTSC) @@ -975,43 +975,43 @@ DRIVER_INIT_MEMBER(arcadia_amiga_state,argh) { DRIVER_INIT_CALL(arcadia); generi *************************************/ /* BIOS */ -GAME( 1988, ar_bios, 0, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Arcadia System BIOS", MACHINE_IS_BIOS_ROOT ) +GAME( 1988, ar_bios, 0, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Arcadia System BIOS", MACHINE_IS_BIOS_ROOT ) -GAME( 1988, ar_blast, ar_bios, arcadia, arcadia, arcadia_amiga_state, blast, ROT0, "Arcadia Systems", "Blastaball (Arcadia, V 2.1)", 0 ) +GAME( 1988, ar_blast, ar_bios, arcadia, arcadia, arcadia_amiga_state, blast, ROT0, "Arcadia Systems", "Blastaball (Arcadia, V 2.1)", 0 ) -GAME( 1988, ar_airh, ar_bios, arcadia, arcadia, arcadia_amiga_state, airh, ROT0, "Arcadia Systems", "SportTime Table Hockey (Arcadia, set 1, V 2.1)", 0 ) -GAME( 1988, ar_airh2, ar_airh, arcadia, arcadia, arcadia_amiga_state, airh, ROT0, "Arcadia Systems", "SportTime Table Hockey (Arcadia, set 2)", 0 ) +GAME( 1988, ar_airh, ar_bios, arcadia, arcadia, arcadia_amiga_state, airh, ROT0, "Arcadia Systems", "SportTime Table Hockey (Arcadia, set 1, V 2.1)", 0 ) +GAME( 1988, ar_airh2, ar_airh, arcadia, arcadia, arcadia_amiga_state, airh, ROT0, "Arcadia Systems", "SportTime Table Hockey (Arcadia, set 2)", 0 ) -GAME( 1988, ar_bowl, ar_bios, arcadia, arcadia, arcadia_amiga_state, bowl, ROT0, "Arcadia Systems", "SportTime Bowling (Arcadia, V 2.1)", 0 ) +GAME( 1988, ar_bowl, ar_bios, arcadia, arcadia, arcadia_amiga_state, bowl, ROT0, "Arcadia Systems", "SportTime Bowling (Arcadia, V 2.1)", 0 ) -GAME( 1987, ar_dart, ar_bios, arcadia, arcadia, arcadia_amiga_state, dart, ROT0, "Arcadia Systems", "World Darts (Arcadia, set 1, V 2.1)", 0 ) -GAME( 1987, ar_dart2, ar_dart, arcadia, arcadia, arcadia_amiga_state, dart, ROT0, "Arcadia Systems", "World Darts (Arcadia, set 2)", MACHINE_NOT_WORKING ) // bad dump +GAME( 1987, ar_dart, ar_bios, arcadia, arcadia, arcadia_amiga_state, dart, ROT0, "Arcadia Systems", "World Darts (Arcadia, set 1, V 2.1)", 0 ) +GAME( 1987, ar_dart2, ar_dart, arcadia, arcadia, arcadia_amiga_state, dart, ROT0, "Arcadia Systems", "World Darts (Arcadia, set 2)", MACHINE_NOT_WORKING ) // bad dump GAME( 1988, ar_fast, ar_bios, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Magic Johnson's Fast Break (Arcadia, V 2.8)", 0 ) GAME( 1988, ar_fasta, ar_fast, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Magic Johnson's Fast Break (Arcadia, V 2.7)", 0 ) -GAME( 1988, ar_ldrb, ar_bios, arcadia, arcadia, arcadia_amiga_state, ldrb, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 1, V 2.5)", 0 ) +GAME( 1988, ar_ldrb, ar_bios, arcadia, arcadia, arcadia_amiga_state, ldrb, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 1, V 2.5)", 0 ) GAME( 1988, ar_ldrba, ar_ldrb, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 2, V 2.4)", 0 ) GAME( 1988, ar_ldrbb, ar_ldrb, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 3)", 0 ) -GAME( 1987, ar_ninj, ar_bios, arcadia, arcadia, arcadia_amiga_state, ninj, ROT0, "Arcadia Systems", "Ninja Mission (Arcadia, set 1, V 2.5)", 0 ) -GAME( 1987, ar_ninj2, ar_ninj, arcadia, arcadia, arcadia_amiga_state, ninj, ROT0, "Arcadia Systems", "Ninja Mission (Arcadia, set 2)", 0 ) +GAME( 1987, ar_ninj, ar_bios, arcadia, arcadia, arcadia_amiga_state, ninj, ROT0, "Arcadia Systems", "Ninja Mission (Arcadia, set 1, V 2.5)", 0 ) +GAME( 1987, ar_ninj2, ar_ninj, arcadia, arcadia, arcadia_amiga_state, ninj, ROT0, "Arcadia Systems", "Ninja Mission (Arcadia, set 2)", 0 ) -GAME( 1988, ar_rdwr, ar_bios, arcadia, arcadia, arcadia_amiga_state, rdwr, ROT0, "Arcadia Systems", "RoadWars (Arcadia, V 2.3)", 0 ) +GAME( 1988, ar_rdwr, ar_bios, arcadia, arcadia, arcadia_amiga_state, rdwr, ROT0, "Arcadia Systems", "RoadWars (Arcadia, V 2.3)", 0 ) -GAME( 1988, ar_sdwr, ar_bios, arcadia, arcadia, arcadia_amiga_state, sdwr, ROT0, "Arcadia Systems", "Sidewinder (Arcadia, set 1, V 2.1)", 0 ) -GAME( 1988, ar_sdwr2, ar_sdwr, arcadia, arcadia, arcadia_amiga_state, sdwr, ROT0, "Arcadia Systems", "Sidewinder (Arcadia, set 2)", 0 ) +GAME( 1988, ar_sdwr, ar_bios, arcadia, arcadia, arcadia_amiga_state, sdwr, ROT0, "Arcadia Systems", "Sidewinder (Arcadia, set 1, V 2.1)", 0 ) +GAME( 1988, ar_sdwr2, ar_sdwr, arcadia, arcadia, arcadia_amiga_state, sdwr, ROT0, "Arcadia Systems", "Sidewinder (Arcadia, set 2)", 0 ) -GAME( 1989, ar_socc, ar_bios, arcadia, arcadia, arcadia_amiga_state, socc, ROT0, "Arcadia Systems", "World Trophy Soccer (Arcadia, V 3.0)", 0 ) +GAME( 1989, ar_socc, ar_bios, arcadia, arcadia, arcadia_amiga_state, socc, ROT0, "Arcadia Systems", "World Trophy Soccer (Arcadia, V 3.0)", 0 ) GAME( 1990, ar_spot, ar_bios, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Spot (Arcadia, V 2.0)", 0 ) -GAME( 1987, ar_sprg, ar_bios, arcadia, arcadia, arcadia_amiga_state, sprg, ROT0, "Arcadia Systems", "Space Ranger (Arcadia, V 2.0)", 0 ) +GAME( 1987, ar_sprg, ar_bios, arcadia, arcadia, arcadia_amiga_state, sprg, ROT0, "Arcadia Systems", "Space Ranger (Arcadia, V 2.0)", 0 ) -GAME( 1988, ar_xeon, ar_bios, arcadia, arcadia, arcadia_amiga_state, xeon, ROT0, "Arcadia Systems", "Xenon (Arcadia, V 2.3)", 0 ) +GAME( 1988, ar_xeon, ar_bios, arcadia, arcadia, arcadia_amiga_state, xeon, ROT0, "Arcadia Systems", "Xenon (Arcadia, V 2.3)", 0 ) -GAME( 1988, ar_pm, ar_bios, arcadia, arcadia, arcadia_amiga_state, pm, ROT0, "Arcadia Systems", "Pharaohs Match (Arcadia)", 0 ) +GAME( 1988, ar_pm, ar_bios, arcadia, arcadia, arcadia_amiga_state, pm, ROT0, "Arcadia Systems", "Pharaohs Match (Arcadia)", 0 ) -GAME( 1988, ar_dlta, ar_bios, arcadia, arcadia, arcadia_amiga_state, dlta, ROT0, "Arcadia Systems", "Delta Command (Arcadia)", 0 ) +GAME( 1988, ar_dlta, ar_bios, arcadia, arcadia, arcadia_amiga_state, dlta, ROT0, "Arcadia Systems", "Delta Command (Arcadia)", 0 ) -GAME( 1988, ar_argh, ar_bios, argh, arcadia, arcadia_amiga_state, argh, ROT0, "Arcadia Systems", "Aaargh (Arcadia)", 0 ) +GAME( 1988, ar_argh, ar_bios, argh, arcadia, arcadia_amiga_state, argh, ROT0, "Arcadia Systems", "Aaargh (Arcadia)", 0 ) diff --git a/src/mame/drivers/artmagic.cpp b/src/mame/drivers/artmagic.cpp index ab622dfd96a..9d0b820e6da 100644 --- a/src/mame/drivers/artmagic.cpp +++ b/src/mame/drivers/artmagic.cpp @@ -69,6 +69,8 @@ WRITE_LINE_MEMBER(artmagic_state::m68k_gen_int) void artmagic_state::machine_start() { + m_irq_off_timer = timer_alloc(TIMER_IRQ_OFF); + save_item(NAME(m_tms_irq)); save_item(NAME(m_hack_irq)); save_item(NAME(m_prot_input_index)); @@ -137,7 +139,7 @@ READ16_MEMBER(artmagic_state::ultennis_hack_r) { m_hack_irq = 1; update_irq_state(); - timer_set(attotime::from_usec(1), TIMER_IRQ_OFF); + m_irq_off_timer->adjust(attotime::from_usec(1)); } return ioport("300000")->read(); } @@ -811,7 +813,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( artmagic, artmagic_state ) +static MACHINE_CONFIG_START( artmagic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK_25MHz/2) @@ -841,7 +843,7 @@ static MACHINE_CONFIG_START( artmagic, artmagic_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", MASTER_CLOCK_40MHz/3/10, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", MASTER_CLOCK_40MHz/3/10, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.65) MACHINE_CONFIG_END diff --git a/src/mame/drivers/ashnojoe.cpp b/src/mame/drivers/ashnojoe.cpp index bdccb3808de..6e8b9b6b2f8 100644 --- a/src/mame/drivers/ashnojoe.cpp +++ b/src/mame/drivers/ashnojoe.cpp @@ -301,7 +301,7 @@ void ashnojoe_state::machine_reset() } -static MACHINE_CONFIG_START( ashnojoe, ashnojoe_state ) +static MACHINE_CONFIG_START( ashnojoe ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) @@ -339,7 +339,7 @@ static MACHINE_CONFIG_START( ashnojoe, ashnojoe_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(ashnojoe_state, ashnojoe_vclk_cb)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/asst128.cpp b/src/mame/drivers/asst128.cpp index 2838f4e0e99..67f2c7b5d01 100644 --- a/src/mame/drivers/asst128.cpp +++ b/src/mame/drivers/asst128.cpp @@ -2,10 +2,15 @@ // copyright-holders:Sergey Svishchev #include "emu.h" #include "machine/genpc.h" + +#include "cpu/i86/i86.h" +#include "bus/pc_joy/pc_joy.h" #include "bus/pc_kbd/keyboards.h" #include "machine/pc_fdc.h" + #include "formats/asst128_dsk.h" + extern const device_type ASST128_MOTHERBOARD; class asst128_mb_device : public ibm5150_mb_device @@ -13,7 +18,9 @@ class asst128_mb_device : public ibm5150_mb_device public: // construction/destruction asst128_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ibm5150_mb_device(mconfig, ASST128_MOTHERBOARD, "ASST128_MOTHERBOARD", tag, owner, clock, "asst128_mb", __FILE__) { } + : ibm5150_mb_device(mconfig, ASST128_MOTHERBOARD, tag, owner, clock) + { + } DECLARE_ADDRESS_MAP(map, 8); }; @@ -26,7 +33,7 @@ DEVICE_ADDRESS_MAP_START( map, 8, asst128_mb_device ) AM_RANGE(0x00a0, 0x00a1) AM_WRITE(nmi_enable_w) ADDRESS_MAP_END -const device_type ASST128_MOTHERBOARD = device_creator; +DEFINE_DEVICE_TYPE(ASST128_MOTHERBOARD, asst128_mb_device, "asst128_mb", "ASST128_MOTHERBOARD") class asst128_state : public driver_device { @@ -85,7 +92,7 @@ static DEVICE_INPUT_DEFAULTS_START( asst128 ) DEVICE_INPUT_DEFAULTS("DSW0", 0x30, 0x20) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( asst128, asst128_state ) +static MACHINE_CONFIG_START( asst128 ) MCFG_CPU_ADD("maincpu", I8086, 4772720) MCFG_CPU_PROGRAM_MAP(asst128_map) MCFG_CPU_IO_MAP(asst128_io) @@ -126,5 +133,5 @@ ROM_START( asst128 ) ROM_LOAD( "asst128cg.bin", 0, 0x2000, NO_DUMP ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 198?, asst128, ibm5150, 0, asst128, 0, driver_device, 0, "Schetmash", "Assistent 128", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, asst128, ibm5150, 0, asst128, 0, asst128_state, 0, "Schetmash", "Assistent 128", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/asterix.cpp b/src/mame/drivers/asterix.cpp index b6f0d8dd47c..44591ecad2d 100644 --- a/src/mame/drivers/asterix.cpp +++ b/src/mame/drivers/asterix.cpp @@ -257,7 +257,7 @@ void asterix_state::machine_reset() } } -static MACHINE_CONFIG_START( asterix, asterix_state ) +static MACHINE_CONFIG_START( asterix ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) // 12MHz diff --git a/src/mame/drivers/asteroid.cpp b/src/mame/drivers/asteroid.cpp index b3dc69b8303..27f846467f9 100644 --- a/src/mame/drivers/asteroid.cpp +++ b/src/mame/drivers/asteroid.cpp @@ -644,7 +644,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( asteroid, asteroid_state ) +static MACHINE_CONFIG_START( asteroid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/8) @@ -1042,22 +1042,22 @@ DRIVER_INIT_MEMBER(asteroid_state,asterock) * *************************************/ -GAME( 1979, asteroid, 0, asteroid, asteroid, driver_device, 0, ROT0, "Atari", "Asteroids (rev 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, asteroid2, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "Atari", "Asteroids (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, asteroid1, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "Atari", "Asteroids (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, asteroid, 0, asteroid, asteroid, asteroid_state, 0, ROT0, "Atari", "Asteroids (rev 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, asteroid2, asteroid, asteroid, asteroid, asteroid_state, 0, ROT0, "Atari", "Asteroids (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, asteroid1, asteroid, asteroid, asteroid, asteroid_state, 0, ROT0, "Atari", "Asteroids (rev 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1979, asteroidb, asteroid, asteroid, asteroidb, asteroid_state, asteroidb, ROT0, "bootleg", "Asteroids (bootleg on Lunar Lander hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, spcrocks, asteroid, asteroid, aerolitos, driver_device, 0, ROT0, "Atari (J.Estevez license)", "Space Rocks (Spanish clone of Asteroids)", MACHINE_SUPPORTS_SAVE ) // Space Rocks seems to be a legit set. Cabinet registered to 'J.Estevez (Barcelona). -GAME( 1980, aerolitos, asteroid, asteroid, aerolitos, driver_device, 0, ROT0, "bootleg (Rodmar Elec.)","Aerolitos (Spanish bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) // 'Aerolitos' appears on the cabinet, this was distributed in Spain, the Spanish text is different to that contained in the original version (corrected) +GAME( 1981, spcrocks, asteroid, asteroid, aerolitos, asteroid_state, 0, ROT0, "Atari (J.Estevez license)", "Space Rocks (Spanish clone of Asteroids)", MACHINE_SUPPORTS_SAVE ) // Space Rocks seems to be a legit set. Cabinet registered to 'J.Estevez (Barcelona). +GAME( 1980, aerolitos, asteroid, asteroid, aerolitos, asteroid_state, 0, ROT0, "bootleg (Rodmar Elec.)","Aerolitos (Spanish bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) // 'Aerolitos' appears on the cabinet, this was distributed in Spain, the Spanish text is different to that contained in the original version (corrected) GAME( 1979, asterock, asteroid, asterock, asterock, asteroid_state, asterock, ROT0, "bootleg (Sidam)", "Asterock (Sidam bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) GAME( 1979, asterockv, asteroid, asterock, asterock, asteroid_state, asterock, ROT0, "bootleg (Videotron)", "Asterock (Videotron bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, meteorts, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "bootleg (VGG)", "Meteorites (bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, meteorho, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "bootleg (Hoei)", "Meteor (bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, hyperspc, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "bootleg (Rumiano)", "Hyperspace (bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, meteorts, asteroid, asteroid, asteroid, asteroid_state, 0, ROT0, "bootleg (VGG)", "Meteorites (bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, meteorho, asteroid, asteroid, asteroid, asteroid_state, 0, ROT0, "bootleg (Hoei)", "Meteor (bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, hyperspc, asteroid, asteroid, asteroid, asteroid_state, 0, ROT0, "bootleg (Rumiano)", "Hyperspace (bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) -GAMEL(1980, astdelux, 0, astdelux, astdelux, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (rev 3)", MACHINE_SUPPORTS_SAVE, layout_astdelux ) -GAMEL(1980, astdelux2, astdelux, astdelux, astdelux, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (rev 2)", MACHINE_SUPPORTS_SAVE, layout_astdelux ) -GAMEL(1980, astdelux1, astdelux, astdelux, astdelux, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (rev 1)", MACHINE_SUPPORTS_SAVE, layout_astdelux ) +GAMEL(1980, astdelux, 0, astdelux, astdelux, asteroid_state, 0, ROT0, "Atari", "Asteroids Deluxe (rev 3)", MACHINE_SUPPORTS_SAVE, layout_astdelux ) +GAMEL(1980, astdelux2, astdelux, astdelux, astdelux, asteroid_state, 0, ROT0, "Atari", "Asteroids Deluxe (rev 2)", MACHINE_SUPPORTS_SAVE, layout_astdelux ) +GAMEL(1980, astdelux1, astdelux, astdelux, astdelux, asteroid_state, 0, ROT0, "Atari", "Asteroids Deluxe (rev 1)", MACHINE_SUPPORTS_SAVE, layout_astdelux ) -GAME( 1979, llander, 0, llander, llander, driver_device, 0, ROT0, "Atari", "Lunar Lander (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, llander1, llander, llander, llander1, driver_device, 0, ROT0, "Atari", "Lunar Lander (rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, llandert, llander, llander, llandert, driver_device, 0, ROT0, "Atari", "Lunar Lander (screen test)", MACHINE_SUPPORTS_SAVE ) // no copyright shown, assume it's an in-house diagnostics romset (PCB came from a seller that has had Atari prototypes in his possession before) +GAME( 1979, llander, 0, llander, llander, asteroid_state, 0, ROT0, "Atari", "Lunar Lander (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, llander1, llander, llander, llander1, asteroid_state, 0, ROT0, "Atari", "Lunar Lander (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, llandert, llander, llander, llandert, asteroid_state, 0, ROT0, "Atari", "Lunar Lander (screen test)", MACHINE_SUPPORTS_SAVE ) // no copyright shown, assume it's an in-house diagnostics romset (PCB came from a seller that has had Atari prototypes in his possession before) diff --git a/src/mame/drivers/astinvad.cpp b/src/mame/drivers/astinvad.cpp index 5c1dc027068..c85fefdadb2 100644 --- a/src/mame/drivers/astinvad.cpp +++ b/src/mame/drivers/astinvad.cpp @@ -64,6 +64,7 @@ public: , m_videoram(*this, "videoram") , m_samples(*this, "samples") , m_screen(*this, "screen") + , m_color_prom(*this, "proms") { } DECLARE_WRITE8_MEMBER(color_latch_w); @@ -97,6 +98,7 @@ private: std::unique_ptr m_colorram; emu_timer *m_int_timer; + emu_timer *m_int_off_timer; uint8_t m_sound_state[2]; uint8_t m_screen_flip; uint8_t m_screen_red; @@ -111,6 +113,7 @@ private: required_shared_ptr m_videoram; required_device m_samples; required_device m_screen; + required_region_ptr m_color_prom; }; @@ -166,15 +169,13 @@ void astinvad_state::plot_byte( bitmap_rgb32 &bitmap, uint8_t y, uint8_t x, uint uint32_t astinvad_state::screen_update_astinvad(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - const uint8_t *color_prom = memregion("proms")->base(); uint8_t yoffs = m_flip_yoffs & m_screen_flip; - int x, y; /* render the visible pixels */ - for (y = cliprect.min_y; y <= cliprect.max_y; y++) - for (x = cliprect.min_x & ~7; x <= cliprect.max_x; x += 8) + for (int y = cliprect.min_y; y <= cliprect.max_y; y++) + for (int x = cliprect.min_x & ~7; x <= cliprect.max_x; x += 8) { - uint8_t color = color_prom[((y & 0xf8) << 2) | (x >> 3)] >> (m_screen_flip ? 0 : 4); + uint8_t color = m_color_prom[((y & 0xf8) << 2) | (x >> 3)] >> (m_screen_flip ? 0 : 4); uint8_t data = m_videoram[(((y ^ m_screen_flip) + yoffs) << 5) | ((x ^ m_screen_flip) >> 3)]; plot_byte(bitmap, y, x, data, m_screen_red ? 1 : color & 0x07); } @@ -185,15 +186,13 @@ uint32_t astinvad_state::screen_update_astinvad(screen_device &screen, bitmap_rg uint32_t astinvad_state::screen_update_spcking2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - const uint8_t *color_prom = memregion("proms")->base(); uint8_t yoffs = m_flip_yoffs & m_screen_flip; - int x, y; /* render the visible pixels */ - for (y = cliprect.min_y; y <= cliprect.max_y; y++) - for (x = cliprect.min_x & ~7; x <= cliprect.max_x; x += 8) + for (int y = cliprect.min_y; y <= cliprect.max_y; y++) + for (int x = cliprect.min_x & ~7; x <= cliprect.max_x; x += 8) { - uint8_t color = color_prom[(((y & 0xf8) << 2) | (x >> 3)) ^ (m_screen_flip ? 0x3ff : m_player ? 0 : 0x3ff)] >> (m_player ? 4 : 0); + uint8_t color = m_color_prom[(((y & 0xf8) << 2) | (x >> 3)) ^ (m_screen_flip ? 0x3ff : m_player ? 0 : 0x3ff)] >> (m_player ? 4 : 0); uint8_t data = m_videoram[(((y ^ m_screen_flip) + yoffs) << 5) | ((x ^ m_screen_flip) >> 3)]; plot_byte(bitmap, y, x, data, m_screen_red ? 1 : color & 0x07); } @@ -204,14 +203,12 @@ uint32_t astinvad_state::screen_update_spcking2(screen_device &screen, bitmap_rg uint32_t astinvad_state::screen_update_spaceint(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - const uint8_t *color_prom = memregion("proms")->base(); - offs_t offs,n; - uint8_t x,y,data,color; + uint8_t x,y; - for (offs = 0; offs < m_videoram.bytes(); offs++) + for (offs_t offs = 0; offs < m_videoram.bytes(); offs++) { - data = m_videoram[offs]; - color = m_colorram[offs]; + uint8_t data = m_videoram[offs]; + uint8_t color = m_colorram[offs]; if (m_screen_flip) { @@ -225,8 +222,8 @@ uint32_t astinvad_state::screen_update_spaceint(screen_device &screen, bitmap_rg } /* this is almost certainly wrong */ - n = ((offs >> 5) & 0xf0) | color; - color = color_prom[n] & 0x07; + offs_t n = ((offs >> 5) & 0xf0) | color; + color = m_color_prom[n] & 0x07; plot_byte(bitmap, y, x, data, color); } @@ -272,7 +269,7 @@ TIMER_CALLBACK_MEMBER(astinvad_state::kamizake_int_gen) m_int_timer->adjust(m_screen->time_until_pos(param), param); /* an RC circuit turns the interrupt off after a short amount of time */ - timer_set(attotime::from_double(300 * 0.1e-6), TIMER_INT_OFF); + m_int_off_timer->adjust(attotime::from_double(300 * 0.1e-6)); } @@ -280,6 +277,7 @@ MACHINE_START_MEMBER(astinvad_state,kamikaze) { m_int_timer = timer_alloc(TIMER_INT_GEN); m_int_timer->adjust(m_screen->time_until_pos(128), 128); + m_int_off_timer = timer_alloc(TIMER_INT_OFF); save_item(NAME(m_screen_flip)); save_item(NAME(m_screen_red)); @@ -654,7 +652,7 @@ static const char *const astinvad_sample_names[] = * *************************************/ -static MACHINE_CONFIG_START( kamikaze, astinvad_state ) +static MACHINE_CONFIG_START( kamikaze ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) @@ -705,7 +703,7 @@ static MACHINE_CONFIG_DERIVED( spcking2, kamikaze ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( spaceint, astinvad_state ) +static MACHINE_CONFIG_START( spaceint ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* a guess */ @@ -849,9 +847,9 @@ DRIVER_INIT_MEMBER(astinvad_state,spcking2) * *************************************/ -GAME( 1980, kamikaze, 0, kamikaze, kamikaze, astinvad_state, kamikaze, ROT270, "Leijac Corporation", "Kamikaze", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, astinvad, kamikaze, kamikaze, astinvad, astinvad_state, kamikaze, ROT270, "Leijac Corporation (Stern Electronics license)", "Astro Invader", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, kamikaze, 0, kamikaze, kamikaze, astinvad_state, kamikaze, ROT270, "Leijac Corporation", "Kamikaze", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, astinvad, kamikaze, kamikaze, astinvad, astinvad_state, kamikaze, ROT270, "Leijac Corporation (Stern Electronics license)", "Astro Invader", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1980?, kosmokil, kamikaze, kamikaze, kamikaze, astinvad_state, kamikaze, ROT270, "bootleg (BEM)", "Kosmo Killer", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // says >BEM< Mi Italy but it looks hacked in, dif revision of game tho. -GAME( 1979, spcking2, 0, spcking2, spcking2, astinvad_state, spcking2, ROT270, "Konami", "Space King 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spaceint, 0, spaceint, spaceint, driver_device, 0, ROT90, "Shoei", "Space Intruder", MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spaceintj,spaceint, spaceint, spaceintj, driver_device, 0, ROT90, "Shoei", "Space Intruder (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, spcking2, 0, spcking2, spcking2, astinvad_state, spcking2, ROT270, "Konami", "Space King 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spaceint, 0, spaceint, spaceint, astinvad_state, 0, ROT90, "Shoei", "Space Intruder", MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spaceintj,spaceint, spaceint, spaceintj, astinvad_state, 0, ROT90, "Shoei", "Space Intruder (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/astrafr.cpp b/src/mame/drivers/astrafr.cpp index 81ea2d3eb23..6c461868e5c 100644 --- a/src/mame/drivers/astrafr.cpp +++ b/src/mame/drivers/astrafr.cpp @@ -115,8 +115,8 @@ public: } // devices - required_device m_maincpu; - optional_device m_slavecpu; + required_device m_maincpu; + optional_device m_slavecpu; DECLARE_DRIVER_INIT(astradec_sml); DECLARE_DRIVER_INIT(astradec); @@ -300,7 +300,7 @@ MACHINE_START_MEMBER(astrafr_state,astra_2e) } -static MACHINE_CONFIG_START( astrafr_dual, astrafr_state ) +static MACHINE_CONFIG_START( astrafr_dual ) MCFG_CPU_ADD("maincpu", M68340, 16000000) MCFG_CPU_PROGRAM_MAP(astrafr_master_map) @@ -318,7 +318,7 @@ static MACHINE_CONFIG_DERIVED( astrafr_dual_37, astrafr_dual ) MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_37 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( astrafr_dual_alt, astrafr_state ) +static MACHINE_CONFIG_START( astrafr_dual_alt ) MCFG_CPU_ADD("maincpu", M68340, 16000000) MCFG_CPU_PROGRAM_MAP(astrafr_master_alt_map) @@ -332,7 +332,7 @@ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( astra_single, astrafr_state ) +static MACHINE_CONFIG_START( astra_single ) MCFG_CPU_ADD("maincpu", M68340, 16000000) MCFG_CPU_PROGRAM_MAP(astra_map) MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_common ) @@ -355,7 +355,7 @@ MACHINE_START_MEMBER(astrafr_state,astra_57) } -static MACHINE_CONFIG_START( astra_single_alt, astrafr_state ) +static MACHINE_CONFIG_START( astra_single_alt ) MCFG_CPU_ADD("maincpu", M68340, 16000000) MCFG_CPU_PROGRAM_MAP(astra_map) MCFG_MACHINE_START_OVERRIDE(astrafr_state, astra_common ) @@ -2140,202 +2140,202 @@ DRIVER_INIT_MEMBER(astrafr_state,astradec_sml_dual) } // Single games? -GAME( 200?, as_srb, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V004)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_srba, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V100)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_srbb, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V101)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_srbc, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V201)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_srbd, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V202)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_srbe, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V203)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_srb, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_srba, as_srb , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_srbb, as_srb , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_srbc, as_srb , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V201)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_srbd, as_srb , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_srbe, as_srb , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V203)" , MACHINE_IS_SKELETON_MECHANICAL) // Linked games (single rom per CPU with master/slave?) -GAME( 200?, as_party, 0 , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V105)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_partya, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V110)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_partyb, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V112)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_partyc, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V206)" ,MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_partyd, as_party , astrafr_dual_37, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V401)", MACHINE_IS_SKELETON_MECHANICAL) // significantly different set -GAME( 200?, as_partye, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V907)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_partyf, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V906)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_party, 0 , astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Party Time (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_partya, as_party, astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Party Time (Astra, V110)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_partyb, as_party, astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Party Time (Astra, V112)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_partyc, as_party, astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Party Time (Astra, V206)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_partyd, as_party, astrafr_dual_37, astrafr, astrafr_state, 0, ROT0, "Astra", "Party Time (Astra, V401)" , MACHINE_IS_SKELETON_MECHANICAL) // significantly different set +GAME( 200?, as_partye, as_party, astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Party Time (Astra, V907)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_partyf, as_party, astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Party Time (Astra, V906)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_letsp, 0 , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Let's Party (Astra, V904)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_letsp, 0 , astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Let's Party (Astra, V904)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_topsl, 0 , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V103)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_topsla, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V104)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_topslb, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V201)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_topslc, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V203)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_topsld, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V205)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_topsl, 0 , astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Top Slot (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_topsla, as_topsl, astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Top Slot (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_topslb, as_topsl, astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Top Slot (Astra, V201)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_topslc, as_topsl, astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Top Slot (Astra, V203)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_topsld, as_topsl, astrafr_dual_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Top Slot (Astra, V205)" , MACHINE_IS_SKELETON_MECHANICAL) // Other HW? (has u1/u2 pairing) -GAME( 200?, as_bigtm, 0 , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Big Time (Astra, V003)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_acp, 0 , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "unknown Astra 'ACP' (Astra, V403)", MACHINE_IS_SKELETON_MECHANICAL) // no sound data in here? -GAME( 200?, as_celeb, 0 , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V100)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_celeba, as_celeb , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V101)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_celebb, as_celeb , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V201)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_bigtm, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Big Time (Astra, V003)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_acp, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "unknown Astra 'ACP' (Astra, V403)" , MACHINE_IS_SKELETON_MECHANICAL) // no sound data in here? +GAME( 200?, as_celeb, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_celeba, as_celeb , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_celebb, as_celeb , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V201)" , MACHINE_IS_SKELETON_MECHANICAL) // u1/u2 pairing and Linked? -GAME( 200?, as_hc, 0 , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V107)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_hca, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V109)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_hcb, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V110)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_hcc, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V111)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_hcd, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V909)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_hc, 0 , astrafr_dual_37, astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_hca, as_hc , astrafr_dual_37, astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_hcb, as_hc , astrafr_dual_37, astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V110)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_hcc, as_hc , astrafr_dual_37, astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V111)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_hcd, as_hc , astrafr_dual_37, astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V909)" , MACHINE_IS_SKELETON_MECHANICAL) // Non-Astra, same hw? -GAME( 200?, as_cshah, 0 , astra_single_alt_57 , astrafr, astrafr_state, astradec, ROT0, "Lowen", "Cash Ahoi (Lowen, V105)", MACHINE_IS_SKELETON_MECHANICAL) - - -GAME( 200?, as_big10, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V500)", MACHINE_IS_SKELETON_MECHANICAL) // BB96 -GAME( 200?, as_big10a, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V503)", MACHINE_IS_SKELETON_MECHANICAL) // BB96 -GAME( 200?, as_big10b, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V507)", MACHINE_IS_SKELETON_MECHANICAL) // BB96 -GAME( 200?, as_big10c, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V601)", MACHINE_IS_SKELETON_MECHANICAL) // BB96 -GAME( 200?, as_big10d, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V605)", MACHINE_IS_SKELETON_MECHANICAL) // BB96 -GAME( 200?, as_big15, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 15 (Astra, V101)", MACHINE_IS_SKELETON_MECHANICAL) // DL98 -GAME( 200?, as_bigcs, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big Cash (Astra, V101)", MACHINE_IS_SKELETON_MECHANICAL) // CF97/CF98 -GAME( 200?, as_bigcsa, as_bigcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big Cash (Astra, V103)", MACHINE_IS_SKELETON_MECHANICAL) // CF97/CF98 - -GAME( 200?, as_bbr, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) // FA00/CU98 -GAME( 200?, as_bbra, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V102,alt)" , MACHINE_IS_SKELETON_MECHANICAL) // FA00/CU98 -GAME( 200?, as_bbrb, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V201)" , MACHINE_IS_SKELETON_MECHANICAL) // FA00/CU98 -GAME( 200?, as_bbrc, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V003)" , MACHINE_IS_SKELETON_MECHANICAL) // CU98 -GAME( 200?, as_bbrd, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // CU98 -GAME( 200?, as_bbre, as_bbr , astra_single_37, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) // FG01 -GAME( 200?, as_bbrf, as_bbr , astra_single_37, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) // FN01 - -GAME( 200?, as_dblcs, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V110)" , MACHINE_IS_SKELETON_MECHANICAL) // BR97 -GAME( 200?, as_dblcsa, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V112)" , MACHINE_IS_SKELETON_MECHANICAL) // BR97 -GAME( 200?, as_dblcsb, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V108)" , MACHINE_IS_SKELETON_MECHANICAL) // BR97 -GAME( 200?, as_dblcsc, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL) // CN97 -GAME( 200?, as_dblcsd, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) // CN97 -GAME( 200?, as_dblcse, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // FB00 -GAME( 200?, as_dblcsf, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) // FB00 -GAME( 200?, as_dblcsg, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V100, alt)" , MACHINE_IS_SKELETON_MECHANICAL) // DN98 -GAME( 200?, as_dblcsh, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) // FO01 - -GAME( 200?, as_fortn, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Fortune Teller (Astra, V009)" , MACHINE_IS_SKELETON_MECHANICAL) - -GAME( 200?, as_gof, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Lowen", "Game Of Fortune (Lowen, V208)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_hog, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Hearts Of Gold (Astra, V002)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_hxr, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Hot Cross Run (Astra, V108)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_hr, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Hot Reel (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) - -GAME( 200?, as_djp, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Double Jackpot (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_djpa, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Double Jackpot (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_djpb, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Double Jackpot (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_cshcs, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Lowen", "Cash Castle (Lowen, V006)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_colmn, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Colour Of Money (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_colmna, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_colmnb, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V108)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_colmnc, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_colmnd, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V908)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jackb, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jackpot Bell (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jpx, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jpxa, as_jpx , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jpxb, as_jpx , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V002)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jolly, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jolly Roger (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jmpj, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jumping Jackpots (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jmpja, as_jmpj , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jumping Jackpots (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jjive, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jjivea, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jjiveb, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jjivec, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jjived, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jjivee, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V101, alt)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jjivef, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_jjiveg, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V005)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_kingc, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Cash (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_kingca, as_kingc , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Cash (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_koc, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Of Clubs (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_koca, as_koc , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Of Clubs (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_lbt, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Big 10 (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_lbta, as_lbt , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Big 10 (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) - -GAME( 200?, as_ldl, 0 , astra_single_2e, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V700)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_ldla, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V600)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_ldlb, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V312)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_ldlc, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V003)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_ldld, as_ldl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Devils (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_ldle, as_ldl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Devils (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_mp, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Lowen", "Mission Possible (Lowen, V118)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_mp2, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Lowen", "Mission Possible 2 (Lowen, V114)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_otr, 0 , astra_single_2e, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Over The Rainbow (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_otra, as_otr , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Over The Rainbow (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // incomplete set -GAME( 200?, as_ptf, 0 , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // strange extra sound(?) roms in here -GAME( 200?, as_ptfa, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V803)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_ptfb, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V905)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_ptfc, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_pia, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Pay It Again (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_piaa, as_pia , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Pay It Again (Astra, V206)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_piab, as_pia , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Pay It Again (Astra, V904)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_pharg, 0 , astra_single_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V005)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_pharga, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_phargb, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_phargc, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_phargd, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_pharge, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_pb, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Piggy Banking (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_cshah, 0 , astra_single_alt_57, astrafr, astrafr_state, astradec, ROT0, "Lowen", "Cash Ahoi (Lowen, V105)" , MACHINE_IS_SKELETON_MECHANICAL) + + +GAME( 200?, as_big10, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Big 10 (Astra, V500)" , MACHINE_IS_SKELETON_MECHANICAL) // BB96 +GAME( 200?, as_big10a, as_big10 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Big 10 (Astra, V503)" , MACHINE_IS_SKELETON_MECHANICAL) // BB96 +GAME( 200?, as_big10b, as_big10 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Big 10 (Astra, V507)" , MACHINE_IS_SKELETON_MECHANICAL) // BB96 +GAME( 200?, as_big10c, as_big10 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Big 10 (Astra, V601)" , MACHINE_IS_SKELETON_MECHANICAL) // BB96 +GAME( 200?, as_big10d, as_big10 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Big 10 (Astra, V605)" , MACHINE_IS_SKELETON_MECHANICAL) // BB96 +GAME( 200?, as_big15, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Big 15 (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) // DL98 +GAME( 200?, as_bigcs, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Big Cash (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) // CF97/CF98 +GAME( 200?, as_bigcsa, as_bigcs , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Big Cash (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) // CF97/CF98 + +GAME( 200?, as_bbr, 0 , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Bullion Bars (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) // FA00/CU98 +GAME( 200?, as_bbra, as_bbr , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Bullion Bars (Astra, V102,alt)" , MACHINE_IS_SKELETON_MECHANICAL) // FA00/CU98 +GAME( 200?, as_bbrb, as_bbr , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Bullion Bars (Astra, V201)" , MACHINE_IS_SKELETON_MECHANICAL) // FA00/CU98 +GAME( 200?, as_bbrc, as_bbr , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Bullion Bars (Astra, V003)" , MACHINE_IS_SKELETON_MECHANICAL) // CU98 +GAME( 200?, as_bbrd, as_bbr , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Bullion Bars (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // CU98 +GAME( 200?, as_bbre, as_bbr , astra_single_37, astrafr, astrafr_state, 0, ROT0, "Astra", "Bullion Bars (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) // FG01 +GAME( 200?, as_bbrf, as_bbr , astra_single_37, astrafr, astrafr_state, 0, ROT0, "Astra", "Bullion Bars (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) // FN01 + +GAME( 200?, as_dblcs, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Double Cash (Astra, V110)" , MACHINE_IS_SKELETON_MECHANICAL) // BR97 +GAME( 200?, as_dblcsa, as_dblcs , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Double Cash (Astra, V112)" , MACHINE_IS_SKELETON_MECHANICAL) // BR97 +GAME( 200?, as_dblcsb, as_dblcs , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Double Cash (Astra, V108)" , MACHINE_IS_SKELETON_MECHANICAL) // BR97 +GAME( 200?, as_dblcsc, as_dblcs , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Double Cash (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL) // CN97 +GAME( 200?, as_dblcsd, as_dblcs , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Double Cash (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) // CN97 +GAME( 200?, as_dblcse, as_dblcs , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Double Cash (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // FB00 +GAME( 200?, as_dblcsf, as_dblcs , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Double Cash (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) // FB00 +GAME( 200?, as_dblcsg, as_dblcs , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Double Cash (Astra, V100, alt)" , MACHINE_IS_SKELETON_MECHANICAL) // DN98 +GAME( 200?, as_dblcsh, as_dblcs , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Double Cash (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) // FO01 + +GAME( 200?, as_fortn, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Fortune Teller (Astra, V009)" , MACHINE_IS_SKELETON_MECHANICAL) + +GAME( 200?, as_gof, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Lowen", "Game Of Fortune (Lowen, V208)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_hog, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Hearts Of Gold (Astra, V002)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_hxr, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Hot Cross Run (Astra, V108)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_hr, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Hot Reel (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) + +GAME( 200?, as_djp, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Double Jackpot (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_djpa, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Double Jackpot (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_djpb, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Double Jackpot (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_cshcs, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Lowen", "Cash Castle (Lowen, V006)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_colmn, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Colour Of Money (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_colmna, as_colmn , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Colour Of Money (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_colmnb, as_colmn , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Colour Of Money (Astra, V108)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_colmnc, as_colmn , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Colour Of Money (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_colmnd, as_colmn , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Colour Of Money (Astra, V908)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jackb, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Jackpot Bell (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jpx, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jpxa, as_jpx , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jpxb, as_jpx , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V002)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jolly, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Jolly Roger (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jmpj, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Jumping Jackpots (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jmpja, as_jmpj , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Jumping Jackpots (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jjive, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jjivea, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jjiveb, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jjivec, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jjived, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jjivee, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V101, alt)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jjivef, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_jjiveg, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V005)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_kingc, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "King Cash (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_kingca, as_kingc , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "King Cash (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_koc, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "King Of Clubs (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_koca, as_koc , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "King Of Clubs (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_lbt, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Little Big 10 (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_lbta, as_lbt , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Little Big 10 (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) + +GAME( 200?, as_ldl, 0 , astra_single_2e, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V700)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_ldla, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V600)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_ldlb, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V312)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_ldlc, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V003)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_ldld, as_ldl , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Little Devils (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_ldle, as_ldl , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Little Devils (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_mp, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Lowen", "Mission Possible (Lowen, V118)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_mp2, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Lowen", "Mission Possible 2 (Lowen, V114)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_otr, 0 , astra_single_2e, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Over The Rainbow (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_otra, as_otr , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Over The Rainbow (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // incomplete set +GAME( 200?, as_ptf, 0 , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // strange extra sound(?) roms in here +GAME( 200?, as_ptfa, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V803)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_ptfb, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V905)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_ptfc, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_pia, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Pay It Again (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_piaa, as_pia , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Pay It Again (Astra, V206)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_piab, as_pia , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Pay It Again (Astra, V904)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_pharg, 0 , astra_single_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V005)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_pharga, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_phargb, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_phargc, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_phargd, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_pharge, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_pb, 0 , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Piggy Banking (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) // this might be another mix of master / slave sets, and multiple games.... -GAME( 200?, as_rtr, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rtra, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 1)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rtrb, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 2)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rtrc, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 3)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rtrd, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V100, )" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rtre, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V100, alt)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rtrf, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rtrg, as_rtr , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V200, alt)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rtrh, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) - -GAME( 200?, as_rab, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_raba, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rabb, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rabc, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rbg, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V304)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rbga, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V303)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rbgb, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rbgc, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rbgd, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rbge, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V008)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rbglo, 0 , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Lowen", "River Boat Gambler (Lowen, V106)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_rox, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Roll X (Astra, V006)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_csv, 0 , astra_single_37, astrafr, driver_device, 0, ROT0, "Astra", "Slot Slant (?) (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_sltcl, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Slots Classic (?) (Astra)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_stp, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_stpa, as_stp , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_stpb, as_stp , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_siu, 0 , astra_single_37, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Step It Up (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) // extra sound roms(?) in this set -GAME( 200?, as_siua, as_siu , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Step It Up (Astra, V203)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_sld, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V700)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_slda, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V600)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_sldb, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V500)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_sldc, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V400)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_sldd, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_slde, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_tem, 0 , astra_single_alt_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Temptation (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_tema, as_tem , astra_single_alt_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Temptation (Astra, V006)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_tbl, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_tbla, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_tblb, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_tblc, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_tbld, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V304)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_tble, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V303)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_tblf, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V301)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_td, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Twin Dragons (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) - -GAME( 200?, as_twp, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Twin Pots (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_twpa, as_twp , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Twin Pots (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_vn, 0 , astrafr_dual_alt_37, astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Vegas Nights (Astra, V205)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_vcv, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V005)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_vcva, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_vcvb, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_vcvc, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_vcvd, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_vcve, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_ww, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V203)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_wwa, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V204)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_wwb, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V205)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_wwc, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_wwd, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_wwe, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 200?, as_ws, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Win Streak (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) // incomplete dump +GAME( 200?, as_rtr, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rtra, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 1)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rtrb, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 2)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rtrc, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 3)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rtrd, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V100, )" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rtre, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V100, alt)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rtrf, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rtrg, as_rtr , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V200, alt)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rtrh, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) + +GAME( 200?, as_rab, 0 , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Ring A Bell (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_raba, as_rab , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Ring A Bell (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rabb, as_rab , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Ring A Bell (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rabc, as_rab , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Ring A Bell (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rbg, 0 , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "River Boat Gambler (Astra, V304)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rbga, as_rab , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "River Boat Gambler (Astra, V303)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rbgb, as_rab , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "River Boat Gambler (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rbgc, as_rab , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "River Boat Gambler (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rbgd, as_rab , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "River Boat Gambler (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rbge, as_rab , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "River Boat Gambler (Astra, V008)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rbglo, 0 , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Lowen", "River Boat Gambler (Lowen, V106)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_rox, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Roll X (Astra, V006)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_csv, 0 , astra_single_37, astrafr, astrafr_state, 0, ROT0, "Astra", "Slot Slant (?) (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_sltcl, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Slots Classic (?) (Astra)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_stp, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_stpa, as_stp , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_stpb, as_stp , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_siu, 0 , astra_single_37, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Step It Up (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) // extra sound roms(?) in this set +GAME( 200?, as_siua, as_siu , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Step It Up (Astra, V203)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_sld, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Little Devil (Astra, V700)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_slda, as_sld , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Little Devil (Astra, V600)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_sldb, as_sld , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Little Devil (Astra, V500)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_sldc, as_sld , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Little Devil (Astra, V400)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_sldd, as_sld , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Little Devil (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_slde, as_sld , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Super Little Devil (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_tem, 0 , astra_single_alt_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Temptation (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_tema, as_tem , astra_single_alt_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Temptation (Astra, V006)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_tbl, 0 , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Triple Bells (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_tbla, as_tbl , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Triple Bells (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_tblb, as_tbl , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Triple Bells (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_tblc, as_tbl , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Triple Bells (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_tbld, as_tbl , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Triple Bells (Astra, V304)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_tble, as_tbl , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Triple Bells (Astra, V303)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_tblf, as_tbl , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Triple Bells (Astra, V301)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_td, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Twin Dragons (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) + +GAME( 200?, as_twp, 0 , astra_single_2e, astrafr, astrafr_state, 0, ROT0, "Astra", "Twin Pots (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_twpa, as_twp , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Twin Pots (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_vn, 0 , astrafr_dual_alt_37, astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Vegas Nights (Astra, V205)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_vcv, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V005)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_vcva, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_vcvb, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_vcvc, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_vcvd, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_vcve, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_ww, 0 , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Wicked Willy (Astra, V203)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_wwa, as_ww , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Wicked Willy (Astra, V204)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_wwb, as_ww , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Wicked Willy (Astra, V205)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_wwc, as_ww , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Wicked Willy (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_wwd, as_ww , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Wicked Willy (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_wwe, as_ww , astra_single, astrafr, astrafr_state, 0, ROT0, "Astra", "Wicked Willy (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 200?, as_ws, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Win Streak (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) // incomplete dump diff --git a/src/mame/drivers/astrcorp.cpp b/src/mame/drivers/astrcorp.cpp index c6c5d982231..fbf83cf87ce 100644 --- a/src/mame/drivers/astrcorp.cpp +++ b/src/mame/drivers/astrcorp.cpp @@ -488,7 +488,7 @@ TODO: understand if later hardware uses different parameters (XTAL is almost sur #define ASTROCORP_VBEND 0 #define ASTROCORP_VBSTART 240 -static MACHINE_CONFIG_START( showhand, astrocorp_state ) +static MACHINE_CONFIG_START( showhand ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz / 2) @@ -518,7 +518,7 @@ static MACHINE_CONFIG_START( showhand, astrocorp_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_20MHz/20, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_20MHz/20, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -540,7 +540,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(astrocorp_state::skilldrp_scanline) m_maincpu->set_input_line(2, HOLD_LINE); } -static MACHINE_CONFIG_START( skilldrp, astrocorp_state ) +static MACHINE_CONFIG_START( skilldrp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) // JX-1689F1028N GRX586.V5 @@ -572,7 +572,7 @@ static MACHINE_CONFIG_START( skilldrp, astrocorp_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/24, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/24, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1358,14 +1358,14 @@ DRIVER_INIT_MEMBER(astrocorp_state,astoneag) GAME( 2000, showhand, 0, showhand, showhand, astrocorp_state, showhand, ROT0, "Astro Corp.", "Show Hand (Italy)", MACHINE_SUPPORTS_SAVE ) GAME( 2000, showhanc, showhand, showhanc, showhanc, astrocorp_state, showhanc, ROT0, "Astro Corp.", "Wang Pai Dui Jue (China)", MACHINE_SUPPORTS_SAVE ) -GAME( 2002, skilldrp, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Skill Drop Georgia (Ver. G1.0S)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, speeddrp, 0, speeddrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Speed Drop (Ver. 1.06)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, skilldrp, 0, skilldrp, skilldrp, astrocorp_state, 0, ROT0, "Astro Corp.", "Skill Drop Georgia (Ver. G1.0S)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, speeddrp, 0, speeddrp, skilldrp, astrocorp_state, 0, ROT0, "Astro Corp.", "Speed Drop (Ver. 1.06)", MACHINE_SUPPORTS_SAVE ) // Encrypted games (not working): -GAME( 2003?, dinodino, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Dino Dino", MACHINE_NOT_WORKING ) +GAME( 2003?, dinodino, 0, skilldrp, skilldrp, astrocorp_state, 0, ROT0, "Astro Corp.", "Dino Dino", MACHINE_NOT_WORKING ) GAME( 2004?, astoneag, 0, skilldrp, skilldrp, astrocorp_state, astoneag, ROT0, "Astro Corp.", "Stone Age (Astro, Ver. ENG.03.A)", MACHINE_NOT_WORKING ) -GAME( 2005?, winbingo, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Win Win Bingo (set 1)", MACHINE_NOT_WORKING ) -GAME( 2005?, winbingoa, winbingo, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Win Win Bingo (set 2)", MACHINE_NOT_WORKING ) -GAME( 2005?, hacher, winbingo, skilldrp, skilldrp, driver_device, 0, ROT0, "bootleg (Gametron)", "Hacher (hack of Win Win Bingo)", MACHINE_NOT_WORKING ) -GAME( 2005?, zoo, 0, showhand, showhand, driver_device, 0, ROT0, "Astro Corp.", "Zoo (Ver. ZO.02.D)", MACHINE_NOT_WORKING ) -GAME( 2007?, westvent, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Western Venture (Ver. AA.02.D)", MACHINE_NOT_WORKING ) +GAME( 2005?, winbingo, 0, skilldrp, skilldrp, astrocorp_state, 0, ROT0, "Astro Corp.", "Win Win Bingo (set 1)", MACHINE_NOT_WORKING ) +GAME( 2005?, winbingoa, winbingo, skilldrp, skilldrp, astrocorp_state, 0, ROT0, "Astro Corp.", "Win Win Bingo (set 2)", MACHINE_NOT_WORKING ) +GAME( 2005?, hacher, winbingo, skilldrp, skilldrp, astrocorp_state, 0, ROT0, "bootleg (Gametron)", "Hacher (hack of Win Win Bingo)", MACHINE_NOT_WORKING ) +GAME( 2005?, zoo, 0, showhand, showhand, astrocorp_state, 0, ROT0, "Astro Corp.", "Zoo (Ver. ZO.02.D)", MACHINE_NOT_WORKING ) +GAME( 2007?, westvent, 0, skilldrp, skilldrp, astrocorp_state, 0, ROT0, "Astro Corp.", "Western Venture (Ver. AA.02.D)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/astrocde.cpp b/src/mame/drivers/astrocde.cpp index 243e4c3084d..999e109ad11 100644 --- a/src/mame/drivers/astrocde.cpp +++ b/src/mame/drivers/astrocde.cpp @@ -1238,7 +1238,7 @@ static const z80_daisy_config tenpin_daisy_chain[] = * *************************************/ -static MACHINE_CONFIG_START( astrocade_base, astrocde_state ) +static MACHINE_CONFIG_START( astrocade_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, ASTROCADE_CLOCK/4) @@ -1794,29 +1794,29 @@ DRIVER_INIT_MEMBER(astrocde_state,tenpindx) *************************************/ /* 90002 CPU board + 90700 game board + 91312 "characterization card" */ -GAMEL(1978, seawolf2, 0, seawolf2, seawolf2, astrocde_state, seawolf2, ROT0, "Dave Nutting Associates / Midway", "Sea Wolf II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_seawolf2 ) +GAMEL(1978, seawolf2, 0, seawolf2, seawolf2, astrocde_state, seawolf2, ROT0, "Dave Nutting Associates / Midway", "Sea Wolf II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_seawolf2 ) /* 91354 CPU board + 90700 game board + 91356 RAM board */ -GAMEL(1980, ebases, 0, ebases, ebases, astrocde_state, ebases, ROT0, "Dave Nutting Associates / Midway", "Extra Bases", MACHINE_SUPPORTS_SAVE, layout_spacezap ) +GAMEL(1980, ebases, 0, ebases, ebases, astrocde_state, ebases, ROT0, "Dave Nutting Associates / Midway", "Extra Bases", MACHINE_SUPPORTS_SAVE, layout_spacezap ) /* 91354 CPU board + 90706 game board + 91356 RAM board + 91355 pattern board */ -GAMEL(1980, spacezap, 0, spacezap, spacezap, astrocde_state, spacezap, ROT0, "Midway", "Space Zap", MACHINE_SUPPORTS_SAVE, layout_spacezap ) +GAMEL(1980, spacezap, 0, spacezap, spacezap, astrocde_state, spacezap, ROT0, "Midway", "Space Zap", MACHINE_SUPPORTS_SAVE, layout_spacezap ) /* 91354 CPU board + 90708 game board + 91356 RAM board + 91355 pattern board + 91397 memory board */ -GAME( 1980, wow, 0, wow, wow, astrocde_state, wow, ROT0, "Dave Nutting Associates / Midway", "Wizard of Wor", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, wowg, wow, wow, wowg, astrocde_state, wow, ROT0, "Dave Nutting Associates / Midway", "Wizard of Wor (with German Language ROM)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, wow, 0, wow, wow, astrocde_state, wow, ROT0, "Dave Nutting Associates / Midway", "Wizard of Wor", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, wowg, wow, wow, wowg, astrocde_state, wow, ROT0, "Dave Nutting Associates / Midway", "Wizard of Wor (with German Language ROM)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) /* 91354 CPU board + 90708 game board + 91356 RAM board + 91355 pattern board + 91364 ROM/RAM board */ -GAMEL(1981, gorf, 0, gorf, gorf, astrocde_state, gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gorf ) -GAMEL(1981, gorfpgm1, gorf, gorf, gorf, astrocde_state, gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf (program 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gorf ) -GAMEL(1981, gorfpgm1g,gorf, gorf, gorfpgm1g, astrocde_state,gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf (program 1, with German Language ROM)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gorf ) +GAMEL(1981, gorf, 0, gorf, gorf, astrocde_state, gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gorf ) +GAMEL(1981, gorfpgm1, gorf, gorf, gorf, astrocde_state, gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf (program 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gorf ) +GAMEL(1981, gorfpgm1g,gorf, gorf, gorfpgm1g, astrocde_state, gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf (program 1, with German Language ROM)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gorf ) /* 91354 CPU board + 90708 game board + 91356 RAM board + 91355 pattern board + 91423 memory board */ -GAME( 1981, robby, 0, robby, robby, astrocde_state, robby, ROT0, "Dave Nutting Associates / Bally Midway", "The Adventures of Robby Roto!", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, robby, 0, robby, robby, astrocde_state, robby, ROT0, "Dave Nutting Associates / Bally Midway", "The Adventures of Robby Roto!", MACHINE_SUPPORTS_SAVE ) /* 91465 CPU board + 91469 game board + 91466 RAM board + 91488 pattern board + 91467 memory board + 91846 EPROM board */ -GAME( 1983, profpac, 0, profpac, profpac, astrocde_state, profpac, ROT0, "Dave Nutting Associates / Bally Midway", "Professor Pac-Man", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, profpac, 0, profpac, profpac, astrocde_state, profpac, ROT0, "Dave Nutting Associates / Bally Midway", "Professor Pac-Man", MACHINE_SUPPORTS_SAVE ) /* 91465 CPU board + 91699 game board + 91466 RAM board + 91488 pattern board + 91467 memory board */ -GAME( 1982, demndrgn, 0, demndrgn, demndrgn, astrocde_state, demndrgn, ROT0, "Dave Nutting Associates / Bally Midway", "Demons & Dragons (prototype)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAMEL(1983, tenpindx, 0, tenpindx, tenpindx, astrocde_state, tenpindx, ROT0, "Dave Nutting Associates / Bally Midway", "Ten Pin Deluxe", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL, layout_tenpindx ) +GAME( 1982, demndrgn, 0, demndrgn, demndrgn, astrocde_state, demndrgn, ROT0, "Dave Nutting Associates / Bally Midway", "Demons & Dragons (prototype)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL(1983, tenpindx, 0, tenpindx, tenpindx, astrocde_state, tenpindx, ROT0, "Dave Nutting Associates / Bally Midway", "Ten Pin Deluxe", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL, layout_tenpindx ) diff --git a/src/mame/drivers/astrof.cpp b/src/mame/drivers/astrof.cpp index 9d82c53b56e..5573fca56a8 100644 --- a/src/mame/drivers/astrof.cpp +++ b/src/mame/drivers/astrof.cpp @@ -910,7 +910,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( base, astrof_state ) +static MACHINE_CONFIG_START( base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MAIN_CPU_CLOCK) @@ -1383,21 +1383,21 @@ DRIVER_INIT_MEMBER(astrof_state,acombat3) * *************************************/ -GAME( 1979, astrof, 0, astrof, astrof, driver_device, 0, ROT90, "Data East", "Astro Fighter (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, astrof2, astrof, astrof, astrof, driver_device, 0, ROT90, "Data East", "Astro Fighter (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, astrof3, astrof, astrof, astrof, driver_device, 0, ROT90, "Data East", "Astro Fighter (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, abattle, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg? (Sidam)", "Astro Battle (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, abattle2, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg? (Sidam)", "Astro Battle (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, afire, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg (Rene Pierre)", "Astro Fire", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, acombat, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg", "Astro Combat (newer, CB)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, acombato, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg", "Astro Combat (older, PZ)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, acombat3, astrof, abattle, abattle, astrof_state, acombat3,ROT90, "bootleg (Proel)", "Astro Combat (unencrypted)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, acombat4, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg (Proel)", "Astro Combat (encrypted)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, strfight, astrof, abattle, abattle, astrof_state, acombat3,ROT90, "bootleg (VGG)", "Star Fighter (bootleg of Astro Fighter)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, sstarbtl, astrof, abattle, abattle, astrof_state, sstarbtl,ROT90, "bootleg", "Super Star Battle", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) - -GAME( 1979, spfghmk2, 0, spfghmk2, spfghmk2, driver_device,0, ROT90, "Data East", "Space Fighter Mark II (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, spfghmk22,spfghmk2, spfghmk2, spfghmk22,driver_device,0, ROT90, "Data East", "Space Fighter Mark II (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) - -GAME( 1980, tomahawk, 0, tomahawk, tomahawk, driver_device,0, ROT90, "Data East", "Tomahawk 777 (rev 5)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, tomahawk1,tomahawk, tomahawk, tomahawk1,driver_device,0, ROT90, "Data East", "Tomahawk 777 (rev 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, astrof, 0, astrof, astrof, astrof_state, 0, ROT90, "Data East", "Astro Fighter (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, astrof2, astrof, astrof, astrof, astrof_state, 0, ROT90, "Data East", "Astro Fighter (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, astrof3, astrof, astrof, astrof, astrof_state, 0, ROT90, "Data East", "Astro Fighter (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, abattle, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg? (Sidam)", "Astro Battle (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, abattle2, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg? (Sidam)", "Astro Battle (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, afire, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg (Rene Pierre)", "Astro Fire", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, acombat, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg", "Astro Combat (newer, CB)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, acombato, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg", "Astro Combat (older, PZ)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, acombat3, astrof, abattle, abattle, astrof_state, acombat3,ROT90, "bootleg (Proel)", "Astro Combat (unencrypted)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, acombat4, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg (Proel)", "Astro Combat (encrypted)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, strfight, astrof, abattle, abattle, astrof_state, acombat3,ROT90, "bootleg (VGG)", "Star Fighter (bootleg of Astro Fighter)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, sstarbtl, astrof, abattle, abattle, astrof_state, sstarbtl,ROT90, "bootleg", "Super Star Battle", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) + +GAME( 1979, spfghmk2, 0, spfghmk2, spfghmk2, astrof_state, 0, ROT90, "Data East", "Space Fighter Mark II (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, spfghmk22,spfghmk2, spfghmk2, spfghmk22,astrof_state, 0, ROT90, "Data East", "Space Fighter Mark II (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) + +GAME( 1980, tomahawk, 0, tomahawk, tomahawk, astrof_state, 0, ROT90, "Data East", "Tomahawk 777 (rev 5)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, tomahawk1,tomahawk, tomahawk, tomahawk1,astrof_state, 0, ROT90, "Data East", "Tomahawk 777 (rev 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/astrohome.cpp b/src/mame/drivers/astrohome.cpp index d26d30c8ce4..e024e535922 100644 --- a/src/mame/drivers/astrohome.cpp +++ b/src/mame/drivers/astrohome.cpp @@ -190,7 +190,7 @@ static SLOT_INTERFACE_START(astrocade_exp) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( astrocde, astrocde_mess_state ) +static MACHINE_CONFIG_START( astrocde ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, ASTROCADE_CLOCK/4) /* 1.789 MHz */ MCFG_CPU_PROGRAM_MAP(astrocade_mem) @@ -272,7 +272,7 @@ MACHINE_START_MEMBER(astrocde_mess_state, astrocde) * *************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1978, astrocde, 0, 0, astrocde, astrocde, astrocde_state, astrocde, "Bally Manufacturing", "Bally Professional Arcade", MACHINE_SUPPORTS_SAVE ) -CONS( 1977, astrocdl, astrocde, 0, astrocde, astrocde, astrocde_state, astrocde, "Bally Manufacturing", "Bally Home Library Computer", MACHINE_SUPPORTS_SAVE ) -CONS( 1977, astrocdw, astrocde, 0, astrocde, astrocde, astrocde_state, astrocde, "Bally Manufacturing", "Bally Computer System", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1978, astrocde, 0, 0, astrocde, astrocde, astrocde_mess_state, astrocde, "Bally Manufacturing", "Bally Professional Arcade", MACHINE_SUPPORTS_SAVE ) +CONS( 1977, astrocdl, astrocde, 0, astrocde, astrocde, astrocde_mess_state, astrocde, "Bally Manufacturing", "Bally Home Library Computer", MACHINE_SUPPORTS_SAVE ) +CONS( 1977, astrocdw, astrocde, 0, astrocde, astrocde, astrocde_mess_state, astrocde, "Bally Manufacturing", "Bally Computer System", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/astropc.cpp b/src/mame/drivers/astropc.cpp index a58eb2335eb..7d190e95660 100644 --- a/src/mame/drivers/astropc.cpp +++ b/src/mame/drivers/astropc.cpp @@ -45,7 +45,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( astropc, astropc_state ) +static MACHINE_CONFIG_START( astropc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I486, 40000000 ) // ?? MCFG_CPU_PROGRAM_MAP(astropc_map) diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp index f3024183f46..e52ed697206 100644 --- a/src/mame/drivers/asuka.cpp +++ b/src/mame/drivers/asuka.cpp @@ -251,7 +251,7 @@ void asuka_state::device_timer(emu_timer &timer, device_timer_id id, int param, INTERRUPT_GEN_MEMBER(asuka_state::cadash_interrupt) { - timer_set(m_maincpu->cycles_to_attotime(500), TIMER_CADASH_INTERRUPT5); + m_cadash_int5_timer->adjust(m_maincpu->cycles_to_attotime(500)); device.execute().set_input_line(4, HOLD_LINE); /* interrupt vector 4 */ } @@ -807,7 +807,7 @@ void asuka_state::machine_reset() memset(m_cval, 0, 26); } -void asuka_state::screen_eof_asuka(screen_device &screen, bool state) +WRITE_LINE_MEMBER(asuka_state::screen_vblank_asuka) { // rising edge if (state) @@ -816,7 +816,7 @@ void asuka_state::screen_eof_asuka(screen_device &screen, bool state) } } -static MACHINE_CONFIG_START( bonzeadv, asuka_state ) +static MACHINE_CONFIG_START( bonzeadv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) /* checked on PCB */ @@ -838,7 +838,7 @@ static MACHINE_CONFIG_START( bonzeadv, asuka_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_bonzeadv) - MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(asuka_state, screen_vblank_asuka)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", asuka) @@ -872,7 +872,7 @@ static MACHINE_CONFIG_START( bonzeadv, asuka_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( asuka, asuka_state ) +static MACHINE_CONFIG_START( asuka ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ @@ -899,7 +899,7 @@ static MACHINE_CONFIG_START( asuka, asuka_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_asuka) - MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(asuka_state, screen_vblank_asuka)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", asuka) @@ -931,7 +931,7 @@ static MACHINE_CONFIG_START( asuka, asuka_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* verified on pcb */ MCFG_MSM5205_VCLK_CB(WRITELINE(asuka_state, asuka_msm5205_vck)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("adpcm_select", LS157, 0) @@ -942,7 +942,7 @@ static MACHINE_CONFIG_START( asuka, asuka_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cadash, asuka_state ) +static MACHINE_CONFIG_START( cadash ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 68000p12 running at 16Mhz, verified on pcb */ @@ -973,7 +973,7 @@ static MACHINE_CONFIG_START( cadash, asuka_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_bonzeadv) - MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(asuka_state, screen_vblank_asuka)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", asuka) @@ -1009,7 +1009,7 @@ static MACHINE_CONFIG_START( cadash, asuka_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mofflott, asuka_state ) +static MACHINE_CONFIG_START( mofflott ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz ??? */ @@ -1036,7 +1036,7 @@ static MACHINE_CONFIG_START( mofflott, asuka_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_asuka) - MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(asuka_state, screen_vblank_asuka)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", asuka) @@ -1068,7 +1068,7 @@ static MACHINE_CONFIG_START( mofflott, asuka_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(asuka_state, asuka_msm5205_vck)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("adpcm_select", LS157, 0) @@ -1079,7 +1079,7 @@ static MACHINE_CONFIG_START( mofflott, asuka_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( galmedes, asuka_state ) +static MACHINE_CONFIG_START( galmedes ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz ??? */ @@ -1106,7 +1106,7 @@ static MACHINE_CONFIG_START( galmedes, asuka_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_asuka) - MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(asuka_state, screen_vblank_asuka)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", asuka) @@ -1141,7 +1141,7 @@ static MACHINE_CONFIG_START( galmedes, asuka_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( eto, asuka_state ) +static MACHINE_CONFIG_START( eto ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz ??? */ @@ -1168,7 +1168,7 @@ static MACHINE_CONFIG_START( eto, asuka_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(asuka_state, screen_update_asuka) - MCFG_SCREEN_VBLANK_DRIVER(asuka_state, screen_eof_asuka) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(asuka_state, screen_vblank_asuka)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", asuka) @@ -1733,31 +1733,35 @@ ROM_START( eto ) ROM_LOAD( "eto-5.ic27", 0x00000, 0x10000, CRC(b3689da0) SHA1(812d2e0a794403df9f0a5035784f14cd070ea080) ) /* banked */ ROM_END +DRIVER_INIT_MEMBER(asuka_state, cadash) +{ + m_cadash_int5_timer = timer_alloc(TIMER_CADASH_INTERRUPT5); +} -GAME( 1988, bonzeadv, 0, bonzeadv, bonzeadv, driver_device, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Newer)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, bonzeadvo, bonzeadv, bonzeadv, bonzeadv, driver_device, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, bonzeadvu, bonzeadv, bonzeadv, jigkmgri, driver_device, 0, ROT0, "Taito America Corporation", "Bonze Adventure (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, jigkmgri, bonzeadv, bonzeadv, jigkmgri, driver_device, 0, ROT0, "Taito Corporation", "Jigoku Meguri (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, bonzeadvp, bonzeadv, bonzeadv, jigkmgri, driver_device, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bonzeadv, 0, bonzeadv, bonzeadv, asuka_state, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Newer)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bonzeadvo, bonzeadv, bonzeadv, bonzeadv, asuka_state, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bonzeadvu, bonzeadv, bonzeadv, jigkmgri, asuka_state, 0, ROT0, "Taito America Corporation", "Bonze Adventure (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, jigkmgri, bonzeadv, bonzeadv, jigkmgri, asuka_state, 0, ROT0, "Taito Corporation", "Jigoku Meguri (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bonzeadvp, bonzeadv, bonzeadv, jigkmgri, asuka_state, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, asuka, 0, asuka, asuka, driver_device, 0, ROT270, "Taito Corporation", "Asuka & Asuka (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, asukaj, asuka, asuka, asuka, driver_device, 0, ROT270, "Taito Corporation", "Asuka & Asuka (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, asuka, 0, asuka, asuka, asuka_state, 0, ROT270, "Taito Corporation", "Asuka & Asuka (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, asukaj, asuka, asuka, asuka, asuka_state, 0, ROT270, "Taito Corporation", "Asuka & Asuka (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mofflott, 0, mofflott, mofflott, driver_device, 0, ROT270, "Taito Corporation", "Maze of Flott (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mofflott, 0, mofflott, mofflott, asuka_state, 0, ROT270, "Taito Corporation", "Maze of Flott (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, cadash, 0, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) -GAME( 1989, cadashj, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) -GAME( 1989, cadashj1, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) -GAME( 1989, cadashjo, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, oldest version)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) -GAME( 1989, cadashu, cadash, cadash, cadashu, driver_device, 0, ROT0, "Taito America Corporation", "Cadash (US, version 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) -GAME( 1989, cadashi, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) -GAME( 1989, cadashf, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (France)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) -GAME( 1989, cadashg, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Germany, version 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) -GAME( 1989, cadashp, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World, prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN) +GAME( 1989, cadash, 0, cadash, cadash, asuka_state, cadash, ROT0, "Taito Corporation Japan", "Cadash (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) +GAME( 1989, cadashj, cadash, cadash, cadashj, asuka_state, cadash, ROT0, "Taito Corporation", "Cadash (Japan, version 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) +GAME( 1989, cadashj1, cadash, cadash, cadashj, asuka_state, cadash, ROT0, "Taito Corporation", "Cadash (Japan, version 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) +GAME( 1989, cadashjo, cadash, cadash, cadashj, asuka_state, cadash, ROT0, "Taito Corporation", "Cadash (Japan, oldest version)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) +GAME( 1989, cadashu, cadash, cadash, cadashu, asuka_state, cadash, ROT0, "Taito America Corporation", "Cadash (US, version 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) +GAME( 1989, cadashi, cadash, cadash, cadash, asuka_state, cadash, ROT0, "Taito Corporation Japan", "Cadash (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) +GAME( 1989, cadashf, cadash, cadash, cadash, asuka_state, cadash, ROT0, "Taito Corporation Japan", "Cadash (France)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) +GAME( 1989, cadashg, cadash, cadash, cadash, asuka_state, cadash, ROT0, "Taito Corporation Japan", "Cadash (Germany, version 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) +GAME( 1989, cadashp, cadash, cadash, cadashj, asuka_state, cadash, ROT0, "Taito Corporation Japan", "Cadash (World, prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN) -GAME( 1992, galmedes, 0, galmedes, galmedes, driver_device, 0, ROT270, "Visco", "Galmedes (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, galmedes, 0, galmedes, galmedes, asuka_state, 0, ROT270, "Visco", "Galmedes (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, earthjkr, 0, galmedes, earthjkr, driver_device, 0, ROT270, "Visco", "U.N. Defense Force: Earth Joker (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, earthjkrp, earthjkr, galmedes, earthjkr, driver_device, 0, ROT270, "Visco", "U.N. Defense Force: Earth Joker (Japan, prototype?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, earthjkr, 0, galmedes, earthjkr, asuka_state, 0, ROT270, "Visco", "U.N. Defense Force: Earth Joker (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, earthjkrp, earthjkr, galmedes, earthjkr, asuka_state, 0, ROT270, "Visco", "U.N. Defense Force: Earth Joker (Japan, prototype?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, eto, 0, eto, eto, driver_device, 0, ROT0, "Visco", "Kokontouzai Eto Monogatari (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, eto, 0, eto, eto, asuka_state, 0, ROT0, "Visco", "Kokontouzai Eto Monogatari (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/at.cpp b/src/mame/drivers/at.cpp index 2ab4695d0d0..89b339c08d5 100644 --- a/src/mame/drivers/at.cpp +++ b/src/mame/drivers/at.cpp @@ -6,13 +6,13 @@ ***************************************************************************/ +#include "emu.h" + /* mingw-gcc defines this */ #ifdef i386 #undef i386 #endif /* i386 */ - -#include "emu.h" #include "bus/isa/isa_cards.h" #include "bus/lpci/pci.h" #include "bus/lpci/vt82c505.h" @@ -22,10 +22,12 @@ #include "machine/at.h" #include "machine/cs8221.h" #include "machine/ds128x.h" +#include "machine/idectrl.h" #include "machine/nvram.h" #include "machine/ram.h" #include "machine/vt82c496.h" #include "machine/wd7600.h" +#include "softlist_dev.h" #include "speaker.h" class at_state : public driver_device @@ -36,7 +38,7 @@ public: m_maincpu(*this, "maincpu"), m_mb(*this, "mb"), m_ram(*this, RAM_TAG) - { } + { } required_device m_maincpu; required_device m_mb; required_device m_ram; @@ -61,7 +63,7 @@ public: m_wd7600(*this, "wd7600"), m_isabus(*this, "isabus"), m_speaker(*this, "speaker") - { } + { } public: required_device m_maincpu; @@ -282,7 +284,7 @@ static SLOT_INTERFACE_START( pci_devices ) SLOT_INTERFACE_INTERNAL("vt82c505", VT82C505) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( ibm5170, at_state ) +static MACHINE_CONFIG_START( ibm5170 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80286, XTAL_12MHz/2 /*6000000*/) MCFG_CPU_PROGRAM_MAP(at16_map) @@ -366,7 +368,7 @@ static MACHINE_CONFIG_DERIVED( k286i, ibm5162 ) MCFG_ISA16_SLOT_ADD("mb:isabus","isa8", pc_isa16_cards, nullptr, false) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( at386, at_state ) +static MACHINE_CONFIG_START( at386 ) MCFG_CPU_ADD("maincpu", I386, 12000000) MCFG_CPU_PROGRAM_MAP(at32_map) MCFG_CPU_IO_MAP(at32_io) @@ -426,7 +428,7 @@ static MACHINE_CONFIG_DERIVED( ct386sx, at386sx ) MCFG_CS8221_ADD("cs8221", "maincpu", "mb:isa", "maincpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( megapc, megapc_state ) +static MACHINE_CONFIG_START( megapc ) MCFG_CPU_ADD("maincpu", I386SX, XTAL_50MHz / 2) MCFG_CPU_PROGRAM_MAP(megapc_map) MCFG_CPU_IO_MAP(megapc_io) @@ -511,7 +513,7 @@ static MACHINE_CONFIG_DERIVED( megapcpl, megapc ) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("wd7600", wd7600_device, intack_cb) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( megapcpla, at_state ) +static MACHINE_CONFIG_START( megapcpla ) MCFG_CPU_ADD("maincpu", I486, 66000000 / 2) // 486SLC MCFG_CPU_PROGRAM_MAP(at32l_map) MCFG_CPU_IO_MAP(at32_io) @@ -545,7 +547,7 @@ static MACHINE_CONFIG_START( megapcpla, at_state ) MCFG_SOFTWARE_LIST_ADD("disk_list","megapc") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ficpio2, at_state ) +static MACHINE_CONFIG_START( ficpio2 ) MCFG_CPU_ADD("maincpu", I486, 25000000) MCFG_CPU_PROGRAM_MAP(ficpio_map) MCFG_CPU_IO_MAP(ficpio_io) diff --git a/src/mame/drivers/atari400.cpp b/src/mame/drivers/atari400.cpp index 6ec9f45976a..825c5ef5aae 100644 --- a/src/mame/drivers/atari400.cpp +++ b/src/mame/drivers/atari400.cpp @@ -2077,16 +2077,16 @@ WRITE8_MEMBER(a400_state::a800xl_pia_pb_w) **************************************************************/ -static MACHINE_CONFIG_START( atari_common_nodac, a400_state ) +static MACHINE_CONFIG_START( atari_common_nodac ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M6502, FREQ_17_EXACT) + MCFG_CPU_ADD("maincpu", M6502, pokey_device::FREQ_17_EXACT) MCFG_MACHINE_RESET_OVERRIDE( a400_state, a400 ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1)) - MCFG_SCREEN_VISIBLE_AREA(MIN_X, MAX_X, MIN_Y, MAX_Y) + MCFG_SCREEN_VISIBLE_AREA_ANTIC() MCFG_SCREEN_UPDATE_DEVICE("antic", antic_device, screen_update) MCFG_SCREEN_PALETTE("palette") @@ -2105,7 +2105,7 @@ static MACHINE_CONFIG_START( atari_common_nodac, a400_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("speaker") - MCFG_SOUND_ADD("pokey", POKEY, FREQ_17_EXACT) + MCFG_SOUND_ADD("pokey", POKEY, pokey_device::FREQ_17_EXACT) MCFG_POKEY_POT0_R_CB(IOPORT("analog_0")) MCFG_POKEY_POT1_R_CB(IOPORT("analog_1")) MCFG_POKEY_POT2_R_CB(IOPORT("analog_2")) @@ -2160,8 +2160,8 @@ static MACHINE_CONFIG_DERIVED( a400, atari_common ) MCFG_MACHINE_START_OVERRIDE( a400_state, a400 ) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_60HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ) + MCFG_SCREEN_REFRESH_RATE_ANTIC_60HZ() + MCFG_SCREEN_SIZE_ANTIC_60HZ() MACHINE_CONFIG_END @@ -2175,8 +2175,8 @@ static MACHINE_CONFIG_DERIVED( a400pal, atari_common ) MCFG_MACHINE_START_OVERRIDE( a400_state, a400 ) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_50HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_50HZ) + MCFG_SCREEN_REFRESH_RATE_ANTIC_50HZ() + MCFG_SCREEN_SIZE_ANTIC_50HZ() MACHINE_CONFIG_END @@ -2190,8 +2190,8 @@ static MACHINE_CONFIG_DERIVED( a800, atari_common ) MCFG_MACHINE_START_OVERRIDE( a400_state, a800 ) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_60HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ) + MCFG_SCREEN_REFRESH_RATE_ANTIC_60HZ() + MCFG_SCREEN_SIZE_ANTIC_60HZ() MCFG_A800_CARTRIDGE_ADD("cartright", a800_right, nullptr) MACHINE_CONFIG_END @@ -2207,8 +2207,8 @@ static MACHINE_CONFIG_DERIVED( a800pal, atari_common ) MCFG_MACHINE_START_OVERRIDE( a400_state, a800 ) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_50HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_50HZ) + MCFG_SCREEN_REFRESH_RATE_ANTIC_50HZ() + MCFG_SCREEN_SIZE_ANTIC_50HZ() MCFG_A800_CARTRIDGE_ADD("cartright", a800_right, nullptr) MACHINE_CONFIG_END @@ -2227,8 +2227,8 @@ static MACHINE_CONFIG_DERIVED( a600xl, atari_common ) MCFG_MACHINE_START_OVERRIDE( a400_state, a800xl ) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_60HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ) + MCFG_SCREEN_REFRESH_RATE_ANTIC_60HZ() + MCFG_SCREEN_SIZE_ANTIC_60HZ() MCFG_RAM_MODIFY(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("16K") @@ -2251,8 +2251,8 @@ static MACHINE_CONFIG_DERIVED( a800xl, atari_common ) MCFG_RAM_DEFAULT_SIZE("64K") MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_60HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ) + MCFG_SCREEN_REFRESH_RATE_ANTIC_60HZ() + MCFG_SCREEN_SIZE_ANTIC_60HZ() MACHINE_CONFIG_END @@ -2263,8 +2263,8 @@ static MACHINE_CONFIG_DERIVED( a800xlpal, a800xl ) MCFG_CPU_CLOCK( 1773000 ) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_50HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_50HZ) + MCFG_SCREEN_REFRESH_RATE_ANTIC_50HZ() + MCFG_SCREEN_SIZE_ANTIC_50HZ() MCFG_SOUND_MODIFY("pokey") MCFG_SOUND_CLOCK(1773000) @@ -2335,8 +2335,8 @@ static MACHINE_CONFIG_DERIVED( a5200, atari_common_nodac ) MCFG_MACHINE_START_OVERRIDE( a400_state, a5200 ) MCFG_SCREEN_MODIFY( "screen" ) - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_60HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ) + MCFG_SCREEN_REFRESH_RATE_ANTIC_60HZ() + MCFG_SCREEN_SIZE_ANTIC_60HZ() MCFG_A5200_CARTRIDGE_ADD("cartleft", a5200_carts, nullptr) @@ -2461,19 +2461,19 @@ ROM_END * **************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP ( 1979, a400, 0, 0, a400, a800, driver_device, 0, "Atari", "Atari 400 (NTSC)", 0) -COMP ( 1979, a400pal, a400, 0, a400pal, a800, driver_device, 0, "Atari", "Atari 400 (PAL)", 0) -COMP ( 1979, a800, 0, 0, a800, a800, driver_device, 0, "Atari", "Atari 800 (NTSC)", 0) -COMP ( 1979, a800pal, a800, 0, a800pal, a800, driver_device, 0, "Atari", "Atari 800 (PAL)", 0) -COMP ( 1982, a1200xl, a800, 0, a1200xl, a800xl, driver_device, 0, "Atari", "Atari 1200XL", MACHINE_NOT_WORKING ) // 64k RAM -COMP ( 1983, a600xl, a800xl, 0, a600xl, a800xl, driver_device, 0, "Atari", "Atari 600XL", MACHINE_IMPERFECT_GRAPHICS ) // 16k RAM -COMP ( 1983, a800xl, 0, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 800XL (NTSC)", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM -COMP ( 1983, a800xlp, a800xl, 0, a800xlpal, a800xl, driver_device, 0, "Atari", "Atari 800XL (PAL)", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM -COMP ( 1986, a65xe, a800xl, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 65XE", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM -COMP ( 1986, a65xea, a800xl, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 65XE (Arabic)", MACHINE_NOT_WORKING ) -COMP ( 1986, a130xe, a800xl, 0, a130xe, a800xl, driver_device, 0, "Atari", "Atari 130XE", MACHINE_NOT_WORKING ) // 128k RAM -COMP ( 1986, a800xe, a800xl, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 800XE", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM -COMP ( 1987, xegs, 0, 0, xegs, a800xl, driver_device, 0, "Atari", "Atari XE Game System", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM - -CONS ( 1982, a5200, 0, 0, a5200, a5200, driver_device, 0, "Atari", "Atari 5200", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP ( 1979, a400, 0, 0, a400, a800, a400_state, 0, "Atari", "Atari 400 (NTSC)", 0) +COMP ( 1979, a400pal, a400, 0, a400pal, a800, a400_state, 0, "Atari", "Atari 400 (PAL)", 0) +COMP ( 1979, a800, 0, 0, a800, a800, a400_state, 0, "Atari", "Atari 800 (NTSC)", 0) +COMP ( 1979, a800pal, a800, 0, a800pal, a800, a400_state, 0, "Atari", "Atari 800 (PAL)", 0) +COMP ( 1982, a1200xl, a800, 0, a1200xl, a800xl, a400_state, 0, "Atari", "Atari 1200XL", MACHINE_NOT_WORKING ) // 64k RAM +COMP ( 1983, a600xl, a800xl, 0, a600xl, a800xl, a400_state, 0, "Atari", "Atari 600XL", MACHINE_IMPERFECT_GRAPHICS ) // 16k RAM +COMP ( 1983, a800xl, 0, 0, a800xl, a800xl, a400_state, 0, "Atari", "Atari 800XL (NTSC)", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM +COMP ( 1983, a800xlp, a800xl, 0, a800xlpal, a800xl, a400_state, 0, "Atari", "Atari 800XL (PAL)", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM +COMP ( 1986, a65xe, a800xl, 0, a800xl, a800xl, a400_state, 0, "Atari", "Atari 65XE", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM +COMP ( 1986, a65xea, a800xl, 0, a800xl, a800xl, a400_state, 0, "Atari", "Atari 65XE (Arabic)", MACHINE_NOT_WORKING ) +COMP ( 1986, a130xe, a800xl, 0, a130xe, a800xl, a400_state, 0, "Atari", "Atari 130XE", MACHINE_NOT_WORKING ) // 128k RAM +COMP ( 1986, a800xe, a800xl, 0, a800xl, a800xl, a400_state, 0, "Atari", "Atari 800XE", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM +COMP ( 1987, xegs, 0, 0, xegs, a800xl, a400_state, 0, "Atari", "Atari XE Game System", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM + +CONS ( 1982, a5200, 0, 0, a5200, a5200, a400_state, 0, "Atari", "Atari 5200", 0) diff --git a/src/mame/drivers/atari_s1.cpp b/src/mame/drivers/atari_s1.cpp index 17b7542c5f9..5b5827d00c3 100644 --- a/src/mame/drivers/atari_s1.cpp +++ b/src/mame/drivers/atari_s1.cpp @@ -435,7 +435,7 @@ void atari_s1_state::machine_reset() m_audiores = 0; } -static MACHINE_CONFIG_START( atari_s1, atari_s1_state ) +static MACHINE_CONFIG_START( atari_s1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, MASTER_CLK) MCFG_CPU_PROGRAM_MAP(atari_s1_map) @@ -528,8 +528,8 @@ ROM_START(spcrider) ROM_END -GAME( 1976, atarians, 0, atarians, atari_s1, driver_device, 0, ROT0, "Atari", "The Atarians", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME( 1977, time2000, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari", "Time 2000", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME( 1977, aavenger, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari", "Airborne Avenger", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME( 1978, midearth, 0, midearth, atari_s1, driver_device, 0, ROT0, "Atari", "Middle Earth", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1978, spcrider, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari", "Space Riders", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME( 1976, atarians, 0, atarians, atari_s1, atari_s1_state, 0, ROT0, "Atari", "The Atarians", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME( 1977, time2000, 0, atari_s1, atari_s1, atari_s1_state, 0, ROT0, "Atari", "Time 2000", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME( 1977, aavenger, 0, atari_s1, atari_s1, atari_s1_state, 0, ROT0, "Atari", "Airborne Avenger", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME( 1978, midearth, 0, midearth, atari_s1, atari_s1_state, 0, ROT0, "Atari", "Middle Earth", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1978, spcrider, 0, atari_s1, atari_s1, atari_s1_state, 0, ROT0, "Atari", "Space Riders", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/atari_s2.cpp b/src/mame/drivers/atari_s2.cpp index 9c73c3f77d0..daaae16c926 100644 --- a/src/mame/drivers/atari_s2.cpp +++ b/src/mame/drivers/atari_s2.cpp @@ -464,7 +464,7 @@ void atari_s2_state::machine_reset() } -static MACHINE_CONFIG_START( atari_s2, atari_s2_state ) +static MACHINE_CONFIG_START( atari_s2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_4MHz / 4) MCFG_CPU_PROGRAM_MAP(atari_s2_map) @@ -547,7 +547,7 @@ ROM_START(fourx4) ROM_LOAD("82s130.bin", 0x0000, 0x0200, CRC(da1f77b4) SHA1(b21fdc1c6f196c320ec5404013d672c35f95890b)) ROM_END -GAME( 1979, supermap, 0, atari_s2, atari_s2, driver_device, 0, ROT0, "Atari", "Superman (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME( 1979, hercules, 0, atari_s2, atari_s2, driver_device, 0, ROT0, "Atari", "Hercules", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME( 1979, roadrunr, 0, atari_s3, atari_s2, driver_device, 0, ROT0, "Atari", "Road Runner", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME( 1982, fourx4, 0, atari_s3, atari_s2, driver_device, 0, ROT0, "Atari", "4x4", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1979, supermap, 0, atari_s2, atari_s2, atari_s2_state, 0, ROT0, "Atari", "Superman (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME( 1979, hercules, 0, atari_s2, atari_s2, atari_s2_state, 0, ROT0, "Atari", "Hercules", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME( 1979, roadrunr, 0, atari_s3, atari_s2, atari_s2_state, 0, ROT0, "Atari", "Road Runner", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME( 1982, fourx4, 0, atari_s3, atari_s2, atari_s2_state, 0, ROT0, "Atari", "4x4", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/atarifb.cpp b/src/mame/drivers/atarifb.cpp index f4974d239a1..e6d2468ae2c 100644 --- a/src/mame/drivers/atarifb.cpp +++ b/src/mame/drivers/atarifb.cpp @@ -550,7 +550,7 @@ void atarifb_state::machine_reset() m_counter_y_in2b = 0; } -static MACHINE_CONFIG_START( atarifb, atarifb_state ) +static MACHINE_CONFIG_START( atarifb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 750000) @@ -790,10 +790,10 @@ ROM_END *************************************/ /* YEAR NAME PARENT MACHINE INPUT */ -GAMEL( 1978, atarifb, 0, atarifb, atarifb, driver_device, 0, ROT0, "Atari", "Atari Football (revision 2)", MACHINE_SUPPORTS_SAVE, layout_atarifb ) -GAMEL( 1978, atarifb1, atarifb, atarifb, atarifb, driver_device, 0, ROT0, "Atari", "Atari Football (revision 1)", MACHINE_SUPPORTS_SAVE, layout_atarifb ) -GAMEL( 1978, atarifb2, atarifb, atarifb, atarifb, driver_device, 0, ROT0, "Atari", "Atari Football II", MACHINE_SUPPORTS_SAVE, layout_atarifb ) -GAMEL( 1979, atarifb4, atarifb, atarifb4, atarifb4, driver_device, 0, ROT0, "Atari", "Atari Football (4 players)", MACHINE_SUPPORTS_SAVE, layout_atarifb4 ) -GAMEL( 1979, abaseb, 0, abaseb, abaseb, driver_device, 0, ROT0, "Atari", "Atari Baseball (set 1)", MACHINE_SUPPORTS_SAVE, layout_abaseb ) -GAMEL( 1979, abaseb2, abaseb, abaseb, abaseb, driver_device, 0, ROT0, "Atari", "Atari Baseball (set 2)", MACHINE_SUPPORTS_SAVE, layout_abaseb ) -GAME ( 1980, soccer, 0, soccer, soccer, driver_device, 0, ROT0, "Atari", "Atari Soccer", MACHINE_SUPPORTS_SAVE ) +GAMEL( 1978, atarifb, 0, atarifb, atarifb, atarifb_state, 0, ROT0, "Atari", "Atari Football (revision 2)", MACHINE_SUPPORTS_SAVE, layout_atarifb ) +GAMEL( 1978, atarifb1, atarifb, atarifb, atarifb, atarifb_state, 0, ROT0, "Atari", "Atari Football (revision 1)", MACHINE_SUPPORTS_SAVE, layout_atarifb ) +GAMEL( 1978, atarifb2, atarifb, atarifb, atarifb, atarifb_state, 0, ROT0, "Atari", "Atari Football II", MACHINE_SUPPORTS_SAVE, layout_atarifb ) +GAMEL( 1979, atarifb4, atarifb, atarifb4, atarifb4, atarifb_state, 0, ROT0, "Atari", "Atari Football (4 players)", MACHINE_SUPPORTS_SAVE, layout_atarifb4 ) +GAMEL( 1979, abaseb, 0, abaseb, abaseb, atarifb_state, 0, ROT0, "Atari", "Atari Baseball (set 1)", MACHINE_SUPPORTS_SAVE, layout_abaseb ) +GAMEL( 1979, abaseb2, abaseb, abaseb, abaseb, atarifb_state, 0, ROT0, "Atari", "Atari Baseball (set 2)", MACHINE_SUPPORTS_SAVE, layout_abaseb ) +GAME ( 1980, soccer, 0, soccer, soccer, atarifb_state, 0, ROT0, "Atari", "Atari Soccer", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/atarig1.cpp b/src/mame/drivers/atarig1.cpp index 2cb0c189ce4..3e18b3dec66 100644 --- a/src/mame/drivers/atarig1.cpp +++ b/src/mame/drivers/atarig1.cpp @@ -423,7 +423,7 @@ static const atari_rle_objects_config modesc_pitfight = * *************************************/ -static MACHINE_CONFIG_START( atarig1, atarig1_state ) +static MACHINE_CONFIG_START( atarig1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz) @@ -1315,9 +1315,9 @@ DRIVER_INIT_MEMBER(atarig1_state,pitfightb) * *************************************/ -GAME( 1990, hydra, 0, hydra, hydra, atarig1_state, hydra, ROT0, "Atari Games", "Hydra", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hydrap, hydra, hydrap, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/14/90)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hydrap2, hydra, hydrap, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/25/90)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hydra, 0, hydra, hydra, atarig1_state, hydra, ROT0, "Atari Games", "Hydra", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hydrap, hydra, hydrap, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/14/90)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hydrap2, hydra, hydrap, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/25/90)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, pitfight, 0, pitfight9, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 9)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, pitfight7, pitfight, pitfight7, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 7)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/atarig42.cpp b/src/mame/drivers/atarig42.cpp index 4bf18c78daf..3dfb46e04db 100644 --- a/src/mame/drivers/atarig42.cpp +++ b/src/mame/drivers/atarig42.cpp @@ -521,7 +521,7 @@ static const atari_rle_objects_config modesc_0x400 = * *************************************/ -static MACHINE_CONFIG_START( atarig42, atarig42_state ) +static MACHINE_CONFIG_START( atarig42 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz) diff --git a/src/mame/drivers/atarigt.cpp b/src/mame/drivers/atarigt.cpp index e21ff4c0dab..2a6a248b72d 100644 --- a/src/mame/drivers/atarigt.cpp +++ b/src/mame/drivers/atarigt.cpp @@ -53,11 +53,10 @@ #include "emu.h" -#include "machine/atarigen.h" -#include "video/atarirle.h" -#include "cpu/m68000/m68000.h" #include "includes/atarigt.h" +#include "cpu/m68000/m68000.h" + #define LOG_PROTECTION (0) #define HACK_TMEK_CONTROLS (0) @@ -800,7 +799,7 @@ static const atari_rle_objects_config modesc = * *************************************/ -static MACHINE_CONFIG_START( atarigt, atarigt_state ) +static MACHINE_CONFIG_START( atarigt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, ATARI_CLOCK_50MHz/2) @@ -1331,10 +1330,10 @@ DRIVER_INIT_MEMBER(atarigt_state,primrage) * *************************************/ -GAME( 1994, tmek, 0, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v5.1, The Warlords)", MACHINE_UNEMULATED_PROTECTION ) -GAME( 1994, tmek51p, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v5.1, prototype)", MACHINE_UNEMULATED_PROTECTION ) -GAME( 1994, tmek45, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v4.5)", MACHINE_UNEMULATED_PROTECTION ) -GAME( 1994, tmek44, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v4.4)", MACHINE_UNEMULATED_PROTECTION ) -GAME( 1994, tmek20, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v2.0, prototype)", 0 ) -GAME( 1994, primrage, 0, primrage, primrage, atarigt_state, primrage, ROT0, "Atari Games", "Primal Rage (version 2.3)", MACHINE_UNEMULATED_PROTECTION ) +GAME( 1994, tmek, 0, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v5.1, The Warlords)", MACHINE_UNEMULATED_PROTECTION ) +GAME( 1994, tmek51p, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v5.1, prototype)", MACHINE_UNEMULATED_PROTECTION ) +GAME( 1994, tmek45, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v4.5)", MACHINE_UNEMULATED_PROTECTION ) +GAME( 1994, tmek44, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v4.4)", MACHINE_UNEMULATED_PROTECTION ) +GAME( 1994, tmek20, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v2.0, prototype)", 0 ) +GAME( 1994, primrage, 0, primrage, primrage, atarigt_state, primrage, ROT0, "Atari Games", "Primal Rage (version 2.3)", MACHINE_UNEMULATED_PROTECTION ) GAME( 1994, primrage20, primrage, primrage20,primrage, atarigt_state, primrage, ROT0, "Atari Games", "Primal Rage (version 2.0)", MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/atarigx2.cpp b/src/mame/drivers/atarigx2.cpp index 59976ccdc3e..2320667e3b0 100644 --- a/src/mame/drivers/atarigx2.cpp +++ b/src/mame/drivers/atarigx2.cpp @@ -26,6 +26,7 @@ #include "emu.h" #include "includes/atarigx2.h" + #include "cpu/m68000/m68000.h" #include "speaker.h" @@ -1492,7 +1493,7 @@ static const atari_rle_objects_config modesc_0x400 = * *************************************/ -static MACHINE_CONFIG_START( atarigx2, atarigx2_state ) +static MACHINE_CONFIG_START( atarigx2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, ATARI_CLOCK_14MHz) @@ -2302,16 +2303,16 @@ DRIVER_INIT_MEMBER(atarigx2_state,rrreveng) * *************************************/ -GAME( 1992, spclords, 0, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev C)", 0 ) -GAME( 1992, spclordsb, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev B)", 0 ) -GAME( 1992, spclordsg, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev A, German)", 0 ) -GAME( 1992, spclordsa, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev A)", 0 ) +GAME( 1992, spclords, 0, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev C)", 0 ) +GAME( 1992, spclordsb, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev B)", 0 ) +GAME( 1992, spclordsg, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev A, German)", 0 ) +GAME( 1992, spclordsa, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev A)", 0 ) GAME( 1992, motofren, 0, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy", 0 ) GAME( 1992, motofrenmd, motofren, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy (Mini Deluxe)", 0 ) GAME( 1992, motofrenft, motofren, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy (Field Test Version)", 0 ) GAME( 1992, motofrenmf, motofren, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy (Mini Deluxe Field Test Version)", 0 ) -GAME( 1993, rrreveng, 0, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Sep 06, 1994)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1993, rrrevenga, rrreveng, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Jan 27, 1994, set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1993, rrrevengb, rrreveng, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Jan 27, 1994, set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1993, rrreveng, 0, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Sep 06, 1994)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1993, rrrevenga, rrreveng, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Jan 27, 1994, set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1993, rrrevengb, rrreveng, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Jan 27, 1994, set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp index c79028441ef..229e0af6565 100644 --- a/src/mame/drivers/atarist.cpp +++ b/src/mame/drivers/atarist.cpp @@ -2076,7 +2076,7 @@ SLOT_INTERFACE_END // MACHINE_CONFIG( st ) //------------------------------------------------- -static MACHINE_CONFIG_START( st, st_state ) +static MACHINE_CONFIG_START( st ) // basic machine hardware MCFG_CPU_ADD(M68000_TAG, M68000, Y2/4) MCFG_CPU_PROGRAM_MAP(st_map) @@ -2166,7 +2166,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( megast ) //------------------------------------------------- -static MACHINE_CONFIG_START( megast, megast_state ) +static MACHINE_CONFIG_START( megast ) // basic machine hardware MCFG_CPU_ADD(M68000_TAG, M68000, Y2/4) MCFG_CPU_PROGRAM_MAP(megast_map) @@ -2257,7 +2257,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( ste ) //------------------------------------------------- -static MACHINE_CONFIG_START( ste, ste_state ) +static MACHINE_CONFIG_START( ste ) // basic machine hardware MCFG_CPU_ADD(M68000_TAG, M68000, Y2/4) MCFG_CPU_PROGRAM_MAP(ste_map) @@ -2372,7 +2372,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( stbook ) //------------------------------------------------- #if 0 -static MACHINE_CONFIG_START( stbook, stbook_state ) +static MACHINE_CONFIG_START( stbook ) // basic machine hardware MCFG_CPU_ADD(M68000_TAG, M68000, U517/2) MCFG_CPU_PROGRAM_MAP(stbook_map) @@ -3211,44 +3211,44 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1985, st, 0, 0, st, st, driver_device, 0, "Atari", "ST (USA)", MACHINE_NOT_WORKING ) -COMP( 1985, st_uk, st, 0, st, st, driver_device, 0, "Atari", "ST (UK)", MACHINE_NOT_WORKING ) -COMP( 1985, st_de, st, 0, st, st, driver_device, 0, "Atari", "ST (Germany)", MACHINE_NOT_WORKING ) -COMP( 1985, st_es, st, 0, st, st, driver_device, 0, "Atari", "ST (Spain)", MACHINE_NOT_WORKING ) -COMP( 1985, st_fr, st, 0, st, st, driver_device, 0, "Atari", "ST (France)", MACHINE_NOT_WORKING ) -COMP( 1985, st_nl, st, 0, st, st, driver_device, 0, "Atari", "ST (Netherlands)", MACHINE_NOT_WORKING ) -COMP( 1985, st_se, st, 0, st, st, driver_device, 0, "Atari", "ST (Sweden)", MACHINE_NOT_WORKING ) -COMP( 1985, st_sg, st, 0, st, st, driver_device, 0, "Atari", "ST (Switzerland)", MACHINE_NOT_WORKING ) -COMP( 1987, megast, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (USA)", MACHINE_NOT_WORKING ) -COMP( 1987, megast_uk, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (UK)", MACHINE_NOT_WORKING ) -COMP( 1987, megast_de, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (Germany)", MACHINE_NOT_WORKING ) -COMP( 1987, megast_fr, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (France)", MACHINE_NOT_WORKING ) -COMP( 1987, megast_se, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (Sweden)", MACHINE_NOT_WORKING ) -COMP( 1987, megast_sg, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (Switzerland)",MACHINE_NOT_WORKING ) -COMP( 1989, ste, 0, 0, ste, ste, driver_device, 0, "Atari", "STE (USA)", MACHINE_NOT_WORKING ) -COMP( 1989, ste_uk, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (UK)", MACHINE_NOT_WORKING ) -COMP( 1989, ste_de, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Germany)", MACHINE_NOT_WORKING ) -COMP( 1989, ste_es, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Spain)", MACHINE_NOT_WORKING ) -COMP( 1989, ste_fr, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (France)", MACHINE_NOT_WORKING ) -COMP( 1989, ste_it, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Italy)", MACHINE_NOT_WORKING ) -COMP( 1989, ste_se, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Sweden)", MACHINE_NOT_WORKING ) -COMP( 1989, ste_sg, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Switzerland)", MACHINE_NOT_WORKING ) -//COMP( 1990, stbook, ste, 0, stbook, stbook, driver_device, 0, "Atari", "STBook", MACHINE_NOT_WORKING ) -COMP( 1990, tt030, 0, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (USA)", MACHINE_NOT_WORKING ) -COMP( 1990, tt030_uk, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (UK)", MACHINE_NOT_WORKING ) -COMP( 1990, tt030_de, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (Germany)", MACHINE_NOT_WORKING ) -COMP( 1990, tt030_fr, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (France)", MACHINE_NOT_WORKING ) -COMP( 1990, tt030_pl, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (Poland)", MACHINE_NOT_WORKING ) -COMP( 1991, megaste, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (USA)", MACHINE_NOT_WORKING ) -COMP( 1991, megaste_uk, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (UK)", MACHINE_NOT_WORKING ) -COMP( 1991, megaste_de, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Germany)", MACHINE_NOT_WORKING ) -COMP( 1991, megaste_es, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Spain)", MACHINE_NOT_WORKING ) -COMP( 1991, megaste_fr, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (France)", MACHINE_NOT_WORKING ) -COMP( 1991, megaste_it, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Italy)", MACHINE_NOT_WORKING ) -COMP( 1991, megaste_se, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Sweden)", MACHINE_NOT_WORKING ) -COMP( 1992, falcon30, 0, 0, falcon, falcon, driver_device, 0, "Atari", "Falcon030", MACHINE_NOT_WORKING ) -COMP( 1992, falcon40, falcon30, 0, falcon40, falcon, driver_device, 0, "Atari", "Falcon040 (prototype)",MACHINE_NOT_WORKING ) -//COMP( 1989, stacy, st, 0, stacy, stacy, driver_device, 0, "Atari", "Stacy", MACHINE_NOT_WORKING ) -//COMP( 1991, stpad, ste, 0, stpad, stpad, driver_device, 0, "Atari", "STPad (prototype)", MACHINE_NOT_WORKING ) -//COMP( 1992, fx1, 0, 0, falcon, falcon, driver_device, 0, "Atari", "FX-1 (prototype)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, st, 0, 0, st, st, st_state, 0, "Atari", "ST (USA)", MACHINE_NOT_WORKING ) +COMP( 1985, st_uk, st, 0, st, st, st_state, 0, "Atari", "ST (UK)", MACHINE_NOT_WORKING ) +COMP( 1985, st_de, st, 0, st, st, st_state, 0, "Atari", "ST (Germany)", MACHINE_NOT_WORKING ) +COMP( 1985, st_es, st, 0, st, st, st_state, 0, "Atari", "ST (Spain)", MACHINE_NOT_WORKING ) +COMP( 1985, st_fr, st, 0, st, st, st_state, 0, "Atari", "ST (France)", MACHINE_NOT_WORKING ) +COMP( 1985, st_nl, st, 0, st, st, st_state, 0, "Atari", "ST (Netherlands)", MACHINE_NOT_WORKING ) +COMP( 1985, st_se, st, 0, st, st, st_state, 0, "Atari", "ST (Sweden)", MACHINE_NOT_WORKING ) +COMP( 1985, st_sg, st, 0, st, st, st_state, 0, "Atari", "ST (Switzerland)", MACHINE_NOT_WORKING ) +COMP( 1987, megast, st, 0, megast, st, megast_state, 0, "Atari", "MEGA ST (USA)", MACHINE_NOT_WORKING ) +COMP( 1987, megast_uk, st, 0, megast, st, megast_state, 0, "Atari", "MEGA ST (UK)", MACHINE_NOT_WORKING ) +COMP( 1987, megast_de, st, 0, megast, st, megast_state, 0, "Atari", "MEGA ST (Germany)", MACHINE_NOT_WORKING ) +COMP( 1987, megast_fr, st, 0, megast, st, megast_state, 0, "Atari", "MEGA ST (France)", MACHINE_NOT_WORKING ) +COMP( 1987, megast_se, st, 0, megast, st, megast_state, 0, "Atari", "MEGA ST (Sweden)", MACHINE_NOT_WORKING ) +COMP( 1987, megast_sg, st, 0, megast, st, megast_state, 0, "Atari", "MEGA ST (Switzerland)",MACHINE_NOT_WORKING ) +COMP( 1989, ste, 0, 0, ste, ste, ste_state, 0, "Atari", "STE (USA)", MACHINE_NOT_WORKING ) +COMP( 1989, ste_uk, ste, 0, ste, ste, ste_state, 0, "Atari", "STE (UK)", MACHINE_NOT_WORKING ) +COMP( 1989, ste_de, ste, 0, ste, ste, ste_state, 0, "Atari", "STE (Germany)", MACHINE_NOT_WORKING ) +COMP( 1989, ste_es, ste, 0, ste, ste, ste_state, 0, "Atari", "STE (Spain)", MACHINE_NOT_WORKING ) +COMP( 1989, ste_fr, ste, 0, ste, ste, ste_state, 0, "Atari", "STE (France)", MACHINE_NOT_WORKING ) +COMP( 1989, ste_it, ste, 0, ste, ste, ste_state, 0, "Atari", "STE (Italy)", MACHINE_NOT_WORKING ) +COMP( 1989, ste_se, ste, 0, ste, ste, ste_state, 0, "Atari", "STE (Sweden)", MACHINE_NOT_WORKING ) +COMP( 1989, ste_sg, ste, 0, ste, ste, ste_state, 0, "Atari", "STE (Switzerland)", MACHINE_NOT_WORKING ) +//COMP( 1990, stbook, ste, 0, stbook, stbook, stbook_state, 0, "Atari", "STBook", MACHINE_NOT_WORKING ) +COMP( 1990, tt030, 0, 0, tt030, tt030, ste_state, 0, "Atari", "TT030 (USA)", MACHINE_NOT_WORKING ) +COMP( 1990, tt030_uk, tt030, 0, tt030, tt030, ste_state, 0, "Atari", "TT030 (UK)", MACHINE_NOT_WORKING ) +COMP( 1990, tt030_de, tt030, 0, tt030, tt030, ste_state, 0, "Atari", "TT030 (Germany)", MACHINE_NOT_WORKING ) +COMP( 1990, tt030_fr, tt030, 0, tt030, tt030, ste_state, 0, "Atari", "TT030 (France)", MACHINE_NOT_WORKING ) +COMP( 1990, tt030_pl, tt030, 0, tt030, tt030, ste_state, 0, "Atari", "TT030 (Poland)", MACHINE_NOT_WORKING ) +COMP( 1991, megaste, ste, 0, megaste, st, megaste_state, 0, "Atari", "MEGA STE (USA)", MACHINE_NOT_WORKING ) +COMP( 1991, megaste_uk, ste, 0, megaste, st, megaste_state, 0, "Atari", "MEGA STE (UK)", MACHINE_NOT_WORKING ) +COMP( 1991, megaste_de, ste, 0, megaste, st, megaste_state, 0, "Atari", "MEGA STE (Germany)", MACHINE_NOT_WORKING ) +COMP( 1991, megaste_es, ste, 0, megaste, st, megaste_state, 0, "Atari", "MEGA STE (Spain)", MACHINE_NOT_WORKING ) +COMP( 1991, megaste_fr, ste, 0, megaste, st, megaste_state, 0, "Atari", "MEGA STE (France)", MACHINE_NOT_WORKING ) +COMP( 1991, megaste_it, ste, 0, megaste, st, megaste_state, 0, "Atari", "MEGA STE (Italy)", MACHINE_NOT_WORKING ) +COMP( 1991, megaste_se, ste, 0, megaste, st, megaste_state, 0, "Atari", "MEGA STE (Sweden)", MACHINE_NOT_WORKING ) +COMP( 1992, falcon30, 0, 0, falcon, falcon, ste_state, 0, "Atari", "Falcon030", MACHINE_NOT_WORKING ) +COMP( 1992, falcon40, falcon30, 0, falcon40, falcon, ste_state, 0, "Atari", "Falcon040 (prototype)",MACHINE_NOT_WORKING ) +//COMP( 1989, stacy, st, 0, stacy, stacy, st_state, 0, "Atari", "Stacy", MACHINE_NOT_WORKING ) +//COMP( 1991, stpad, ste, 0, stpad, stpad, st_state, 0, "Atari", "STPad (prototype)", MACHINE_NOT_WORKING ) +//COMP( 1992, fx1, 0, 0, falcon, falcon, ste_state, 0, "Atari", "FX-1 (prototype)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/atarisy1.cpp b/src/mame/drivers/atarisy1.cpp index 6a2401f2a97..199d8fbe609 100644 --- a/src/mame/drivers/atarisy1.cpp +++ b/src/mame/drivers/atarisy1.cpp @@ -708,7 +708,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( atarisy1, atarisy1_state ) +static MACHINE_CONFIG_START( atarisy1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2) @@ -2481,26 +2481,26 @@ DRIVER_INIT_MEMBER(atarisy1_state,roadblst) * *************************************/ -GAME( 1984, atarisy1, 0, peterpak, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Atari System 1 BIOS", MACHINE_IS_BIOS_ROOT ) +GAME( 1984, atarisy1, 0, peterpak, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Atari System 1 BIOS", MACHINE_IS_BIOS_ROOT ) -GAME( 1984, marble, atarisy1, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 1)", 0 ) -GAME( 1984, marble2, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 2)", 0 ) -GAME( 1984, marble3, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 3)", 0 ) -GAME( 1984, marble4, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 4)", 0 ) -GAME( 1984, marble5, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 5 - LSI Cartridge)", 0 ) +GAME( 1984, marble, atarisy1, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 1)", 0 ) +GAME( 1984, marble2, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 2)", 0 ) +GAME( 1984, marble3, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 3)", 0 ) +GAME( 1984, marble4, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 4)", 0 ) +GAME( 1984, marble5, marble, marble, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 5 - LSI Cartridge)", 0 ) -GAME( 1984, peterpak, atarisy1, peterpak, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Peter Pack Rat", 0 ) +GAME( 1984, peterpak, atarisy1, peterpak, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Peter Pack Rat", 0 ) -GAME( 1985, indytemp, atarisy1, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 1)", 0 ) -GAME( 1985, indytemp2,indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 2)", 0 ) -GAME( 1985, indytemp3,indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 3)", 0 ) -GAME( 1985, indytemp4,indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 4)", 0 ) -GAME( 1985, indytempd,indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (German)", 0 ) -GAME( 1985, indytempc,indytemp, indytemp, indytemc, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (Cocktail)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1985, indytemp, atarisy1, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 1)", 0 ) +GAME( 1985, indytemp2, indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 2)", 0 ) +GAME( 1985, indytemp3, indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 3)", 0 ) +GAME( 1985, indytemp4, indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 4)", 0 ) +GAME( 1985, indytempd, indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (German)", 0 ) +GAME( 1985, indytempc, indytemp, indytemp, indytemc, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (Cocktail)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1985, roadrunn, atarisy1, roadrunn, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 2)", 0 ) -GAME( 1985, roadrunn2,roadrunn, roadrunn, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 1+)", 0 ) -GAME( 1985, roadrunn1,roadrunn, roadrunn, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 1)", 0 ) +GAME( 1985, roadrunn, atarisy1, roadrunn, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 2)", 0 ) +GAME( 1985, roadrunn2, roadrunn, roadrunn, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 1+)", 0 ) +GAME( 1985, roadrunn1, roadrunn, roadrunn, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 1)", 0 ) GAME( 1987, roadblst, atarisy1, roadb110, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, rev 4)", 0 ) GAME( 1987, roadblstg, roadblst, roadb109, roadblst, atarisy1_state, roadblst, ROT0, "Atari Games", "Road Blasters (upright, German, rev 3)", 0 ) diff --git a/src/mame/drivers/atarisy2.cpp b/src/mame/drivers/atarisy2.cpp index 504dc4d9e52..9d5c0fbed58 100644 --- a/src/mame/drivers/atarisy2.cpp +++ b/src/mame/drivers/atarisy2.cpp @@ -1183,7 +1183,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( atarisy2, atarisy2_state ) +static MACHINE_CONFIG_START( atarisy2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", T11, MASTER_CLOCK/2) @@ -3230,40 +3230,40 @@ DRIVER_INIT_MEMBER(atarisy2_state,apb) * *************************************/ -GAME( 1984, paperboy, 0, paperboy, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, paperboyr2,paperboy, paperboy, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, paperboyr1,paperboy, paperboy, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 1)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1986, 720, 0, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, 720r3, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, 720r2, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, 720r1, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, 720g, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, 720gr1, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 1)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1986, ssprint, 0, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ssprint3, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ssprint1, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ssprintg, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ssprintg1,ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ssprintf, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (French)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ssprints, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (Spanish)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1986, csprint, 0, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, csprint2, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, csprint1, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, csprintg, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, csprintg1,csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, csprintf, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (French)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, csprints, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, csprints1,csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 1)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1987, apb, 0, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 7)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, apb6, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 6)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, apb5, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, apb4, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, apb3, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, apb2, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, apb1, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, apbg, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (German)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, apbf, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (French)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, paperboy, 0, paperboy, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, paperboyr2,paperboy, paperboy, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, paperboyr1,paperboy, paperboy, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 1)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1986, 720, 0, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, 720r3, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, 720r2, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, 720r1, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, 720g, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, 720gr1, 720, 720, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 1)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1986, ssprint, 0, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ssprint3, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ssprint1, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ssprintg, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ssprintg1,ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ssprintf, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (French)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ssprints, ssprint, ssprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (Spanish)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1986, csprint, 0, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, csprint2, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, csprint1, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, csprintg, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, csprintg1,csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, csprintf, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (French)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, csprints, csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, csprints1,csprint, csprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 1)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1987, apb, 0, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 7)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, apb6, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 6)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, apb5, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, apb4, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, apb3, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, apb2, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, apb1, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, apbg, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (German)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, apbf, apb, apb, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (French)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/atarisy4.cpp b/src/mame/drivers/atarisy4.cpp index f9cd66b4a72..d9e9f9a3d6e 100644 --- a/src/mame/drivers/atarisy4.cpp +++ b/src/mame/drivers/atarisy4.cpp @@ -175,7 +175,7 @@ struct gpu_ *************************************/ atarisy4_renderer::atarisy4_renderer(atarisy4_state &state, screen_device &screen) - : poly_manager(screen, POLYFLAG_NO_WORK_QUEUE), + : poly_manager(screen, FLAG_NO_WORK_QUEUE), m_state(state) { } @@ -757,7 +757,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( atarisy4, atarisy4_state ) +static MACHINE_CONFIG_START( atarisy4 ) MCFG_CPU_ADD("maincpu", M68000, 8000000) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", atarisy4_state, vblank_int) diff --git a/src/mame/drivers/atarittl.cpp b/src/mame/drivers/atarittl.cpp index 924aec9995e..e85e2e2c76a 100644 --- a/src/mame/drivers/atarittl.cpp +++ b/src/mame/drivers/atarittl.cpp @@ -114,7 +114,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -170,7 +170,7 @@ protected: virtual void machine_reset() override; private: - required_device m_maincpu; + required_device m_maincpu; //required_device m_video; required_device m_probe_screen; @@ -306,7 +306,7 @@ uint32_t stuntcyc_state::screen_update_stuntcyc(screen_device &screen, bitmap_rg return 0; } -static MACHINE_CONFIG_START( atarikee, atarikee_state ) +static MACHINE_CONFIG_START( atarikee ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) MCFG_NETLIST_SETUP(atarikee) @@ -323,7 +323,7 @@ MACHINE_CONFIG_END //#define STUNTCYC_NL_CLOCK (14318181*69) #define STUNTCYC_NL_CLOCK (SC_HTOTAL*SC_VTOTAL*60*140) -static MACHINE_CONFIG_START( stuntcyc, stuntcyc_state ) +static MACHINE_CONFIG_START( stuntcyc ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, STUNTCYC_NL_CLOCK) MCFG_NETLIST_SETUP(stuntcyc) @@ -630,39 +630,39 @@ ROM_END */ -GAME(1975, antiairc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Anti-Aircraft [TTL]", MACHINE_IS_SKELETON) -GAME(1975, crashnsc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Crash 'n Score/Stock Car [TTL]", MACHINE_IS_SKELETON) -GAME(1976, indy4, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Indy 4 [TTL]", MACHINE_IS_SKELETON) -GAME(1975, indy800, 0, atarikee, 0, driver_device, 0, ROT90, "Atari/Kee", "Indy 800 [TTL]", MACHINE_IS_SKELETON) -GAME(1975, jetfight, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 1) [TTL]", MACHINE_IS_SKELETON) -GAME(1975, jetfighta, jetfight, atarikee, 0, driver_device, 0, ROT0, "Atari", "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 2) [TTL]", MACHINE_IS_SKELETON) -GAME(1976, outlaw, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Outlaw [TTL]", MACHINE_IS_SKELETON) -GAME(1975, sharkjaw, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Horror Games", "Shark JAWS [TTL]", MACHINE_IS_SKELETON) -GAME(1975, steeplec, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Steeplechase [TTL]", MACHINE_IS_SKELETON) -GAME(1976, stuntcyc, 0, stuntcyc, 0, driver_device, 0, ROT0, "Atari", "Stunt Cycle [TTL]", MACHINE_IS_SKELETON) -GAME(1974, tank, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Tank/Tank Cocktail [TTL]", MACHINE_IS_SKELETON) -GAME(1975, tankii, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Tank II [TTL]", MACHINE_IS_SKELETON) +GAME(1975, antiairc, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Anti-Aircraft [TTL]", MACHINE_IS_SKELETON) +GAME(1975, crashnsc, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Crash 'n Score/Stock Car [TTL]", MACHINE_IS_SKELETON) +GAME(1976, indy4, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari/Kee", "Indy 4 [TTL]", MACHINE_IS_SKELETON) +GAME(1975, indy800, 0, atarikee, 0, atarikee_state, 0, ROT90, "Atari/Kee", "Indy 800 [TTL]", MACHINE_IS_SKELETON) +GAME(1975, jetfight, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 1) [TTL]", MACHINE_IS_SKELETON) +GAME(1975, jetfighta, jetfight, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 2) [TTL]", MACHINE_IS_SKELETON) +GAME(1976, outlaw, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Outlaw [TTL]", MACHINE_IS_SKELETON) +GAME(1975, sharkjaw, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari/Horror Games", "Shark JAWS [TTL]", MACHINE_IS_SKELETON) +GAME(1975, steeplec, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Steeplechase [TTL]", MACHINE_IS_SKELETON) +GAME(1976, stuntcyc, 0, stuntcyc, 0, stuntcyc_state, 0, ROT0, "Atari", "Stunt Cycle [TTL]", MACHINE_IS_SKELETON) +GAME(1974, tank, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari/Kee", "Tank/Tank Cocktail [TTL]", MACHINE_IS_SKELETON) +GAME(1975, tankii, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari/Kee", "Tank II [TTL]", MACHINE_IS_SKELETON) // MISSING ROM DUMPS -//GAME(1975, astrotrf, steeplec, atarikee, 0, driver_device, 0, ROT0, "Atari", "Astroturf [TTL]", MACHINE_IS_SKELETON) -//GAME(1974, gtrak10, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Gran Trak 10/Trak 10/Formula K [TTL]", MACHINE_IS_SKELETON) //? -//GAME(1974, gtrak20, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Gran Trak 20/Trak 20/Twin Racer [TTL]", MACHINE_IS_SKELETON) //? -//GAME(1976, lemans, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Le Mans [TTL]", MACHINE_IS_SKELETON) -//GAME(1974, qwak, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Qwak!/Quack [TTL]", MACHINE_IS_SKELETON) +//GAME(1975, astrotrf, steeplec, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Astroturf [TTL]", MACHINE_IS_SKELETON) +//GAME(1974, gtrak10, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari/Kee", "Gran Trak 10/Trak 10/Formula K [TTL]", MACHINE_IS_SKELETON) //? +//GAME(1974, gtrak20, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari/Kee", "Gran Trak 20/Trak 20/Twin Racer [TTL]", MACHINE_IS_SKELETON) //? +//GAME(1976, lemans, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Le Mans [TTL]", MACHINE_IS_SKELETON) +//GAME(1974, qwak, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Qwak!/Quack [TTL]", MACHINE_IS_SKELETON) // 100% TTL -//GAME(1974, coupfran, worldcup, atarikee, 0, driver_device, 0, ROT0, "Atari Europe", "Coup Franc [TTL]", MACHINE_IS_SKELETON) -//GAME(1974, coupdmnd, worldcup, atarikee, 0, driver_device, 0, ROT0, "Atari France", "Coup du Monde [TTL]", MACHINE_IS_SKELETON) -//GAME(1975, crossfir, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Crossfire [TTL]", MACHINE_IS_SKELETON) -//GAME(1973, eliminat, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Elimination! [TTL]", MACHINE_IS_SKELETON) -//GAME(1975, goaliv, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Goal IV [TTL]", MACHINE_IS_SKELETON) -//GAME(1973, gotchaat, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Gotcha [TTL]", MACHINE_IS_SKELETON) //? -//GAME(1973, gotchaatc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Gotcha Color [TTL]", MACHINE_IS_SKELETON) //? -//GAME(1975, hiway, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Hi-Way/Highway [TTL]", MACHINE_IS_SKELETON) -//GAME(1974, pinpong, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Pin Pong [TTL]", MACHINE_IS_SKELETON) -//GAME(1975, pursuit, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Pursuit [TTL]", MACHINE_IS_SKELETON) -//GAME(1974, quadpong, eliminat, atarikee, 0, driver_device, 0, ROT0, "Atari", "Quadrapong [TTL]", MACHINE_IS_SKELETON) -//GAME(1974, rebound, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Rebound/Spike/Volleyball [TTL]", MACHINE_IS_SKELETON) -//GAME(1973, spacrace, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Space Race [TTL]", MACHINE_IS_SKELETON) -//GAME(1974, touchme, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Touch-Me [TTL]", MACHINE_IS_SKELETON) //? -//GAME(1974, worldcup, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "World Cup/World Cup Football [TTL]", MACHINE_IS_SKELETON) +//GAME(1974, coupfran, worldcup, atarikee, 0, atarikee_state, 0, ROT0, "Atari Europe", "Coup Franc [TTL]", MACHINE_IS_SKELETON) +//GAME(1974, coupdmnd, worldcup, atarikee, 0, atarikee_state, 0, ROT0, "Atari France", "Coup du Monde [TTL]", MACHINE_IS_SKELETON) +//GAME(1975, crossfir, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari/Kee", "Crossfire [TTL]", MACHINE_IS_SKELETON) +//GAME(1973, eliminat, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari/Kee", "Elimination! [TTL]", MACHINE_IS_SKELETON) +//GAME(1975, goaliv, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Goal IV [TTL]", MACHINE_IS_SKELETON) +//GAME(1973, gotchaat, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Gotcha [TTL]", MACHINE_IS_SKELETON) //? +//GAME(1973, gotchaatc, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Gotcha Color [TTL]", MACHINE_IS_SKELETON) //? +//GAME(1975, hiway, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Hi-Way/Highway [TTL]", MACHINE_IS_SKELETON) +//GAME(1974, pinpong, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Pin Pong [TTL]", MACHINE_IS_SKELETON) +//GAME(1975, pursuit, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Pursuit [TTL]", MACHINE_IS_SKELETON) +//GAME(1974, quadpong, eliminat, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Quadrapong [TTL]", MACHINE_IS_SKELETON) +//GAME(1974, rebound, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari/Kee", "Rebound/Spike/Volleyball [TTL]", MACHINE_IS_SKELETON) +//GAME(1973, spacrace, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Space Race [TTL]", MACHINE_IS_SKELETON) +//GAME(1974, touchme, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "Touch-Me [TTL]", MACHINE_IS_SKELETON) //? +//GAME(1974, worldcup, 0, atarikee, 0, atarikee_state, 0, ROT0, "Atari", "World Cup/World Cup Football [TTL]", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/atetris.cpp b/src/mame/drivers/atetris.cpp index 942f5ae08f1..6b454f78d2d 100644 --- a/src/mame/drivers/atetris.cpp +++ b/src/mame/drivers/atetris.cpp @@ -326,7 +326,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( atetris, atetris_state ) +static MACHINE_CONFIG_START( atetris ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,MASTER_CLOCK/8) @@ -365,7 +365,7 @@ static MACHINE_CONFIG_START( atetris, atetris_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( atetrisb2, atetris_state ) +static MACHINE_CONFIG_START( atetrisb2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,BOOTLEG_CLOCK/8) @@ -563,10 +563,10 @@ DRIVER_INIT_MEMBER(atetris_state,atetris) * *************************************/ -GAME( 1988, atetris, 0, atetris, atetris, atetris_state, atetris, ROT0, "Atari Games", "Tetris (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, atetrisa, atetris, atetris, atetris, atetris_state, atetris, ROT0, "Atari Games", "Tetris (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, atetrisb, atetris, atetris, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, atetrisb2,atetris, atetrisb2, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, atetrisb3,atetris, atetrisb3, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 3)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, atetris, 0, atetris, atetris, atetris_state, atetris, ROT0, "Atari Games", "Tetris (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, atetrisa, atetris, atetris, atetris, atetris_state, atetris, ROT0, "Atari Games", "Tetris (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, atetrisb, atetris, atetris, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, atetrisb2,atetris, atetrisb2, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, atetrisb3,atetris, atetrisb3, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 3)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1989, atetrisc, atetris, atetris, atetrisc, atetris_state, atetris, ROT270, "Atari Games", "Tetris (cocktail set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, atetrisc2,atetris, atetris, atetrisc, atetris_state, atetris, ROT270, "Atari Games", "Tetris (cocktail set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/atlantis.cpp b/src/mame/drivers/atlantis.cpp index 1dbbafe4a1e..d2465aca3e3 100644 --- a/src/mame/drivers/atlantis.cpp +++ b/src/mame/drivers/atlantis.cpp @@ -49,26 +49,12 @@ #include "machine/nvram.h" #include "coreutil.h" -// Board Ctrl Reg Offsets -#define CTRL_PLD_REV 0 -#define CTRL_RESET 1 -#define CTRL_VSYNC_CLEAR 2 -#define CTRL_IRQ_MAP1 3 -#define CTRL_IRQ_MAP2 4 -#define CTRL_IRQ_MAP3 5 -// Empty?? 6 -#define CTRL_IRQ_EN 7 -#define CTRL_CAUSE 8 -#define CTRL_STATUS 9 -#define CTRL_SIZE 10 - // Reset bits #define RESET_IOASIC 0x01 #define RESET_ROMBUS 0x02 #define RESET_ZEUS 0x04 #define RESET_ROMBUS_IN 0x08 -#define RESET_IDE 0x10 -#define RESET_DUART 0x20 +#define RESET_WDOG 0x10 // IRQ Bits #define IOASIC_IRQ_SHIFT 0 @@ -80,9 +66,11 @@ #define A2D_IRQ_SHIFT 6 #define VBLANK_IRQ_SHIFT 7 -// Not sure how duart interrupts are mapped -#define UART1_IRQ_SHIFT ZEUS2_IRQ_SHIFT -#define UART2_IRQ_SHIFT ZEUS2_IRQ_SHIFT +// DUART mapped to int3 (map3 = 0x08) +#define UART1_IRQ_SHIFT ZEUS1_IRQ_SHIFT +#define UART2_IRQ_SHIFT ZEUS1_IRQ_SHIFT +// PCI mapped to int2 (map2 = 0x10) +#define PCI_IRQ_SHIFT ZEUS2_IRQ_SHIFT /* static interrupts */ #define GALILEO_IRQ_NUM MIPS3_IRQ0 @@ -112,7 +100,6 @@ public: DECLARE_DRIVER_INIT(mwskins); virtual void machine_start() override; virtual void machine_reset() override; - uint32_t screen_update_mwskins(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); required_device m_maincpu; required_device m_screen; optional_device m_palette; @@ -125,17 +112,11 @@ public: required_device m_rtc; uint8_t m_rtc_data[0x8000]; - uint32_t m_last_offset; READ8_MEMBER(cmos_r); WRITE8_MEMBER(cmos_w); - DECLARE_WRITE32_MEMBER(cmos_protect_w); - DECLARE_READ32_MEMBER(cmos_protect_r); uint32_t m_cmos_write_enabled; uint32_t m_serial_count; - DECLARE_READ32_MEMBER(status_leds_r); - DECLARE_WRITE32_MEMBER(status_leds_w); - uint8_t m_status_leds; DECLARE_WRITE32_MEMBER(asic_fifo_w); DECLARE_WRITE32_MEMBER(dcs3_fifo_full_w); @@ -147,10 +128,16 @@ public: READ32_MEMBER(user_io_input); int m_user_io_state; + // Board Ctrl Reg Offsets + enum { + PLD_REV, RESET, VSYNC_CLEAR, IRQ_MAP1, IRQ_MAP2, IRQ_MAP3, + IRQ_EN = 7, CAUSE, STATUS, SIZE, LED, CMOS_UNLOCK, WDOG, TRACKBALL_CTL, + CTRL_SIZE + }; DECLARE_READ32_MEMBER(board_ctrl_r); DECLARE_WRITE32_MEMBER(board_ctrl_w); uint32_t m_irq_state; - uint8_t board_ctrl[CTRL_SIZE]; + uint32_t board_ctrl[CTRL_SIZE]; void update_asic_irq(); DECLARE_WRITE_LINE_MEMBER(vblank_irq); @@ -172,12 +159,27 @@ public: DECLARE_READ16_MEMBER(a2d_data_r); DECLARE_WRITE16_MEMBER(a2d_data_w); + + DECLARE_READ8_MEMBER(parallel_r); + DECLARE_WRITE8_MEMBER(parallel_w); }; +// Parallel Port +READ8_MEMBER(atlantis_state::parallel_r) +{ + logerror("%06X: parallel_r %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, 0); + return 0; +} + +WRITE8_MEMBER(atlantis_state::parallel_w) +{ + logerror("%06X: parallel_w %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, data); +} + +// Expansion ROM READ8_MEMBER (atlantis_state::exprom_r) { logerror("%06X: exprom_r %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, 0); - //return data; return 0; } @@ -186,25 +188,24 @@ WRITE8_MEMBER(atlantis_state::exprom_w) logerror("%06X: exprom_w %08x = %02x\n", machine().device("maincpu")->safe_pc(), offset, data); } +// Board PLD READ32_MEMBER(atlantis_state::board_ctrl_r) { uint32_t newOffset = offset >> 17; uint32_t data = board_ctrl[newOffset]; switch (newOffset) { - case CTRL_PLD_REV: + case PLD_REV: // ??? data = 0x1; - case CTRL_STATUS: - if (m_last_offset != (newOffset | 0x40000)) - if (LOG_IRQ) - logerror("%s:board_ctrl_r read from CTRL_STATUS offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); + case STATUS: + if (LOG_IRQ) + logerror("%s:board_ctrl_r read from STATUS offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); break; default: if (LOG_IRQ) logerror("%s:board_ctrl_r read from offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); break; } - m_last_offset = newOffset | 0x40000; return data; } @@ -214,7 +215,7 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w) uint32_t changeData = board_ctrl[newOffset] ^ data; COMBINE_DATA(&board_ctrl[newOffset]); switch (newOffset) { - case CTRL_RESET: + case RESET: // 0x1 IOASIC Reset // 0x4 Zeus2 Reset // 0x10 IDE Reset @@ -227,18 +228,18 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w) m_dcs->reset_w(CLEAR_LINE); } } - if (LOG_IRQ) - logerror("%s:board_ctrl_w write to CTRL_RESET offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); + if ((changeData & RESET_WDOG) || LOG_IRQ) + logerror("%s:board_ctrl_w write to RESET_WDOG offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); break; - case CTRL_VSYNC_CLEAR: - //VSYNC_IE (0x1) - //VSYNC_POL (0x2) off=negative true, on=positive true - // 0x1 VBlank clear? + case VSYNC_CLEAR: + //VSYNC_IE (0x1) + //VSYNC_POL (0x2) off=negative true, on=positive true + // 0x1 VBlank clear? if (changeData & 0x1) { if ((data & 0x0001) == 0) { uint32_t status_bit = (1 << VBLANK_IRQ_SHIFT); - board_ctrl[CTRL_CAUSE] &= ~status_bit; - board_ctrl[CTRL_STATUS] &= ~status_bit; + board_ctrl[CAUSE] &= ~status_bit; + board_ctrl[STATUS] &= ~status_bit; update_asic_irq(); } else { @@ -247,12 +248,44 @@ WRITE32_MEMBER(atlantis_state::board_ctrl_w) if (0 && LOG_IRQ) logerror("%s:board_ctrl_w write to CTRL_VSYNC_CLEAR offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); break; - case CTRL_IRQ_EN: + case IRQ_EN: // Zero bit will clear cause - board_ctrl[CTRL_CAUSE] &= data; + board_ctrl[CAUSE] &= data; update_asic_irq(); if (LOG_IRQ) - logerror("%s:board_ctrl_w write to CTRL_IRQ_EN offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); + logerror("%s:board_ctrl_w write to IRQ_EN offset %04X = %08X & %08X bus offset = %08X\n", machine().describe_context(), newOffset, data, mem_mask, offset); + break; + case LED: + { + char digit = 'U'; + switch (board_ctrl[LED] & 0xff) { + case 0xc0: digit = '0'; break; + case 0xf9: digit = '1'; break; + case 0xa4: digit = '2'; break; + case 0xb0: digit = '3'; break; + case 0x99: digit = '4'; break; + case 0x92: digit = '5'; break; + case 0x82: digit = '6'; break; + case 0xf8: digit = '7'; break; + case 0x80: digit = '8'; break; + case 0x90: digit = '9'; break; + case 0x88: digit = 'A'; break; + case 0x83: digit = 'B'; break; + case 0xa7: digit = 'C'; break; + case 0xa1: digit = 'D'; break; + case 0x86: digit = 'E'; break; + case 0x87: digit = 'F'; break; + case 0x7f: digit = '.'; break; + case 0xf7: digit = '_'; break; + case 0xbf: digit = '|'; break; + case 0xfe: digit = '-'; break; + case 0xff: digit = 'Z'; break; + if (0) logerror("%06X: status_leds_w digit: %c %08x = %02x\n", machine().device("maincpu")->safe_pc(), digit, offset, data); + } + } + break; + case CMOS_UNLOCK: + m_cmos_write_enabled = true; break; default: if (LOG_IRQ) @@ -338,58 +371,6 @@ WRITE8_MEMBER(atlantis_state::cmos_w) } } -WRITE32_MEMBER(atlantis_state::cmos_protect_w) -{ - m_cmos_write_enabled = true; -} - -READ32_MEMBER(atlantis_state::status_leds_r) -{ - return m_status_leds | 0xffffff00; -} - - -WRITE32_MEMBER(atlantis_state::status_leds_w) -{ - if (ACCESSING_BITS_0_7) { - m_status_leds = data; - if (1) { - char digit = 'U'; - switch (m_status_leds) { - case 0xc0: digit = '0'; break; - case 0xf9: digit = '1'; break; - case 0xa4: digit = '2'; break; - case 0xb0: digit = '3'; break; - case 0x99: digit = '4'; break; - case 0x92: digit = '5'; break; - case 0x82: digit = '6'; break; - case 0xf8: digit = '7'; break; - case 0x80: digit = '8'; break; - case 0x90: digit = '9'; break; - case 0x88: digit = 'A'; break; - case 0x83: digit = 'B'; break; - case 0xa7: digit = 'C'; break; - case 0xa1: digit = 'D'; break; - case 0x86: digit = 'E'; break; - case 0x87: digit = 'F'; break; - case 0x7f: digit = '.'; break; - case 0xf7: digit = '_'; break; - case 0xbf: digit = '|'; break; - case 0xfe: digit = '-'; break; - case 0xff: digit = 'Z'; break; - } - //popmessage("LED: %c", digit); - osd_printf_debug("%06X: status_leds_w digit: %c %08x = %02x\n", machine().device("maincpu")->safe_pc(), digit, offset, data); - if (0) logerror("%06X: status_leds_w digit: %c %08x = %02x\n", machine().device("maincpu")->safe_pc(), digit, offset, data); - } - } -} - -READ32_MEMBER(atlantis_state::cmos_protect_r) -{ - return m_cmos_write_enabled; -} - WRITE32_MEMBER(atlantis_state::asic_fifo_w) { m_ioasic->fifo_w(data); @@ -428,13 +409,13 @@ READ32_MEMBER(atlantis_state::user_io_input) WRITE_LINE_MEMBER(atlantis_state::uart1_irq_callback) { uint32_t status_bit = UART1_IRQ_SHIFT; - if (state && !(board_ctrl[CTRL_STATUS] & status_bit)) { - board_ctrl[CTRL_STATUS] |= status_bit; + if (state && !(board_ctrl[STATUS] & status_bit)) { + board_ctrl[STATUS] |= status_bit; update_asic_irq(); } - else if (!state && (board_ctrl[CTRL_STATUS] & status_bit)) { - board_ctrl[CTRL_STATUS] &= ~status_bit; - board_ctrl[CTRL_CAUSE] &= ~status_bit; + else if (!state && (board_ctrl[STATUS] & status_bit)) { + board_ctrl[STATUS] &= ~status_bit; + board_ctrl[CAUSE] &= ~status_bit; update_asic_irq(); } logerror("atlantis_state::uart1_irq_callback state = %1x\n", state); @@ -446,13 +427,13 @@ WRITE_LINE_MEMBER(atlantis_state::uart1_irq_callback) WRITE_LINE_MEMBER(atlantis_state::uart2_irq_callback) { uint32_t status_bit = UART2_IRQ_SHIFT; - if (state && !(board_ctrl[CTRL_STATUS] & status_bit)) { - board_ctrl[CTRL_STATUS] |= status_bit; + if (state && !(board_ctrl[STATUS] & status_bit)) { + board_ctrl[STATUS] |= status_bit; update_asic_irq(); } - else if (!state && (board_ctrl[CTRL_STATUS] & status_bit)) { - board_ctrl[CTRL_STATUS] &= ~status_bit; - board_ctrl[CTRL_CAUSE] &= ~status_bit; + else if (!state && (board_ctrl[STATUS] & status_bit)) { + board_ctrl[STATUS] &= ~status_bit; + board_ctrl[CAUSE] &= ~status_bit; update_asic_irq(); } logerror("atlantis_state::uart2_irq_callback state = %1x\n", state); @@ -465,12 +446,12 @@ WRITE_LINE_MEMBER(atlantis_state::vblank_irq) { //logerror("%s: atlantis_state::vblank state = %i\n", machine().describe_context(), state); if (state) { - board_ctrl[CTRL_STATUS] |= (1 << VBLANK_IRQ_SHIFT); + board_ctrl[STATUS] |= (1 << VBLANK_IRQ_SHIFT); update_asic_irq(); } else { - board_ctrl[CTRL_STATUS] &= ~(1 << VBLANK_IRQ_SHIFT); - board_ctrl[CTRL_CAUSE] &= ~(1 << VBLANK_IRQ_SHIFT); + board_ctrl[STATUS] &= ~(1 << VBLANK_IRQ_SHIFT); + board_ctrl[CAUSE] &= ~(1 << VBLANK_IRQ_SHIFT); update_asic_irq(); } } @@ -479,12 +460,12 @@ WRITE_LINE_MEMBER(atlantis_state::zeus_irq) { //logerror("%s: atlantis_state::zeus_irq state = %i\n", machine().describe_context(), state); if (state) { - board_ctrl[CTRL_STATUS] |= (1 << ZEUS0_IRQ_SHIFT); + board_ctrl[STATUS] |= (1 << ZEUS0_IRQ_SHIFT); update_asic_irq(); } else { - board_ctrl[CTRL_STATUS] &= ~(1 << ZEUS0_IRQ_SHIFT); - board_ctrl[CTRL_CAUSE] &= ~(1 << ZEUS0_IRQ_SHIFT); + board_ctrl[STATUS] &= ~(1 << ZEUS0_IRQ_SHIFT); + board_ctrl[CAUSE] &= ~(1 << ZEUS0_IRQ_SHIFT); update_asic_irq(); } } @@ -507,12 +488,12 @@ WRITE_LINE_MEMBER(atlantis_state::ioasic_irq) if (LOG_IRQ) logerror("%s: atlantis_state::ioasic_irq state = %i\n", machine().describe_context(), state); if (state) { - board_ctrl[CTRL_STATUS] |= (1 << IOASIC_IRQ_SHIFT); + board_ctrl[STATUS] |= (1 << IOASIC_IRQ_SHIFT); update_asic_irq(); } else { - board_ctrl[CTRL_STATUS] &= ~(1 << IOASIC_IRQ_SHIFT); - board_ctrl[CTRL_CAUSE] &= ~(1 << IOASIC_IRQ_SHIFT); + board_ctrl[STATUS] &= ~(1 << IOASIC_IRQ_SHIFT); + board_ctrl[CAUSE] &= ~(1 << IOASIC_IRQ_SHIFT); update_asic_irq(); } } @@ -523,21 +504,21 @@ WRITE_LINE_MEMBER(atlantis_state::ioasic_irq) void atlantis_state::update_asic_irq() { for (int irqIndex = 0; irqIndex < 3; irqIndex++) { - uint32_t irqBits = (board_ctrl[CTRL_IRQ_EN] & board_ctrl[CTRL_IRQ_MAP1 + irqIndex] & board_ctrl[CTRL_STATUS]); - uint32_t causeBits = (board_ctrl[CTRL_IRQ_EN] & board_ctrl[CTRL_IRQ_MAP1 + irqIndex] & board_ctrl[CTRL_CAUSE]); + uint32_t irqBits = (board_ctrl[IRQ_EN] & board_ctrl[IRQ_MAP1 + irqIndex] & board_ctrl[STATUS]); + uint32_t causeBits = (board_ctrl[IRQ_EN] & board_ctrl[IRQ_MAP1 + irqIndex] & board_ctrl[CAUSE]); uint32_t currState = m_irq_state & (2 << irqIndex); - board_ctrl[CTRL_CAUSE] |= irqBits; + board_ctrl[CAUSE] |= irqBits; if (irqBits && !currState) { m_maincpu->set_input_line(MIPS3_IRQ1 + irqIndex, ASSERT_LINE); m_irq_state |= (2 << irqIndex); if (LOG_IRQ) - logerror("atlantis_state::update_asic_irq Asserting IRQ(%d) CAUSE = %02X\n", irqIndex, board_ctrl[CTRL_CAUSE]); + logerror("atlantis_state::update_asic_irq Asserting IRQ(%d) CAUSE = %02X\n", irqIndex, board_ctrl[CAUSE]); } else if (!(causeBits) && currState) { m_maincpu->set_input_line(MIPS3_IRQ1 + irqIndex, CLEAR_LINE); m_irq_state &= ~(2 << irqIndex); if (LOG_IRQ) - logerror("atlantis_state::update_asic_irq Clearing IRQ(%d) CAUSE = %02X\n", irqIndex, board_ctrl[CTRL_CAUSE]); + logerror("atlantis_state::update_asic_irq Clearing IRQ(%d) CAUSE = %02X\n", irqIndex, board_ctrl[CAUSE]); } } } @@ -615,14 +596,6 @@ WRITE16_MEMBER(atlantis_state::a2d_data_w) } -/************************************* - * Video refresh - *************************************/ -uint32_t atlantis_state::screen_update_mwskins(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - return 0; -} - /************************************* * Machine start *************************************/ @@ -634,8 +607,14 @@ void atlantis_state::machine_start() m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS); // Save states + save_item(NAME(m_cmos_write_enabled)); + save_item(NAME(m_serial_count)); + save_item(NAME(m_user_io_state)); save_item(NAME(m_irq_state)); save_item(NAME(board_ctrl)); + save_item(NAME(m_port_data)); + save_item(NAME(m_a2d_data)); + } @@ -662,12 +641,12 @@ static ADDRESS_MAP_START( map0, AS_PROGRAM, 32, atlantis_state ) //AM_RANGE(0x00080000, 0x000?0000) AM_READWRITE8(zeus debug) AM_RANGE(0x00100000, 0x0010001f) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART1 (TL16C552 CS0) AM_RANGE(0x00180000, 0x0018001f) AM_DEVREADWRITE8("uart2", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART2 (TL16C552 CS1) - //AM_RANGE(0x00200000, 0x0020001f) // Parallel UART (TL16C552 CS2) + AM_RANGE(0x00200000, 0x0020001f) AM_READWRITE8(parallel_r, parallel_w, 0xff) // Parallel UART (TL16C552 CS2) AM_RANGE(0x00400000, 0x007fffff) AM_READWRITE8(exprom_r, exprom_w, 0xff) // EXPROM - AM_RANGE(0x00800000, 0x00c80003) AM_READWRITE(board_ctrl_r, board_ctrl_w) - AM_RANGE(0x00d80000, 0x00d80003) AM_READWRITE(status_leds_r, status_leds_w) - AM_RANGE(0x00e00000, 0x00e00003) AM_READWRITE(cmos_protect_r, cmos_protect_w) - AM_RANGE(0x00e80000, 0x00e80003) AM_NOP // Watchdog + AM_RANGE(0x00800000, 0x00f00003) AM_READWRITE(board_ctrl_r, board_ctrl_w) + //AM_RANGE(0x00d80000, 0x00d80003) AM_READWRITE(status_leds_r, status_leds_w) + //AM_RANGE(0x00e00000, 0x00e00003) AM_READWRITE(cmos_protect_r, cmos_protect_w) + //AM_RANGE(0x00e80000, 0x00e80003) AM_NOP // Watchdog //AM_RANGE(0x00f00000, 0x00f00003) AM_NOP // Trackball ctrl ADDRESS_MAP_END @@ -705,51 +684,13 @@ static INPUT_PORTS_START( mwskins ) PORT_START("DIPS") PORT_DIPNAME(0x0003, 0x0003, "Boot Mode") PORT_DIPSETTING(0x0003, "Run Game") - PORT_DIPSETTING(0x0002, "Boot EEPROM Based Self Test") - PORT_DIPSETTING(0x0001, "Boot Disk Based Self Test") - PORT_DIPSETTING(0x0000, "Run Factory Tests") + PORT_DIPSETTING(0x0002, "Boot Disk Based Self Test") + PORT_DIPSETTING(0x0001, "Boot EEPROM Based Self Test") + PORT_DIPSETTING(0x0000, "Run Interactive Tests") PORT_DIPNAME(0x0004, 0x0004, "Boot Message") PORT_DIPSETTING(0x0004, "Quiet") PORT_DIPSETTING(0x0000, "Squawk During Boot") - PORT_DIPNAME(0x0008, 0x0008, "Reserved") - PORT_DIPSETTING(0x0008, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0010, 0x0010, "Reserved") - PORT_DIPSETTING(0x0010, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0020, 0x0020, "Reserved") - PORT_DIPSETTING(0x0020, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0040, 0x0040, "Reserved") - PORT_DIPSETTING(0x0040, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0080, 0x0080, "Reserved") - PORT_DIPSETTING(0x0080, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0100, 0x0100, "Unknown0100") - PORT_DIPSETTING(0x0100, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0200, 0x0200, "Unknown0200") - PORT_DIPSETTING(0x0200, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0400, 0x0400, "Unknown0400") - PORT_DIPSETTING(0x0400, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0800, 0x0800, "Unknown0800") - PORT_DIPSETTING(0x0800, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x1000, 0x1000, "Unknown1000") - PORT_DIPSETTING(0x1000, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x2000, 0x2000, "Unknown2000") - PORT_DIPSETTING(0x2000, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x4000, 0x4000, "Unknown4000") - PORT_DIPSETTING(0x4000, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x8000, 0x8000, "Unknown8000") - PORT_DIPSETTING(0x8000, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) + PORT_DIPUNUSED(0xfff8, 0xfff8) PORT_START("SYSTEM") PORT_BIT(0x0001, IP_ACTIVE_LOW, IPT_COIN1) @@ -828,11 +769,12 @@ DEVICE_INPUT_DEFAULTS_END * Machine driver * *************************************/ + #define PCI_ID_NILE ":pci:00.0" #define PCI_ID_9050 ":pci:0b.0" #define PCI_ID_IDE ":pci:0c.0" -static MACHINE_CONFIG_START( mwskins, atlantis_state ) +static MACHINE_CONFIG_START( mwskins ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", VR4310LE, 166666666) // clock is TRUSTED @@ -841,6 +783,7 @@ static MACHINE_CONFIG_START( mwskins, atlantis_state ) MCFG_PCI_ROOT_ADD( ":pci") MCFG_VRC4373_ADD( PCI_ID_NILE, ":maincpu") + MCFG_VRC4373_SET_RAM(0x00800000) MCFG_PCI9050_ADD( PCI_ID_9050) MCFG_PCI9050_SET_MAP(0, map0) MCFG_PCI9050_SET_MAP(1, map1) @@ -851,7 +794,7 @@ static MACHINE_CONFIG_START( mwskins, atlantis_state ) MCFG_NVRAM_ADD_0FILL("rtc") - MCFG_IDE_PCI_ADD(PCI_ID_IDE, 0x10950646, 0x03, 0x0) + MCFG_IDE_PCI_ADD(PCI_ID_IDE, 0x10950646, 0x07, 0x0) MCFG_IDE_PCI_IRQ_HANDLER(DEVWRITELINE(":", atlantis_state, ide_irq)) /* video hardware */ @@ -879,7 +822,7 @@ static MACHINE_CONFIG_START( mwskins, atlantis_state ) if DEBUG_CONSOLE { MCFG_MIDWAY_IOASIC_OUT_TX_CB(DEVWRITE8("uart0", generic_terminal_device, write)) MCFG_DEVICE_ADD("uart0", GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(DEVWRITE8("ioasic", midway_ioasic_device, serial_rx_w)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(DEVPUT("ioasic", midway_ioasic_device, serial_rx_w)) } // TL16C552 UART @@ -967,7 +910,7 @@ DRIVER_INIT_MEMBER(atlantis_state,mwskins) * *************************************/ -GAME( 2000, mwskins, 0, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.06)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2000, mwskinsa, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.06, alt)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2000, mwskinso, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.04)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2000, mwskinst, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game Tournament Edition", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2000, mwskins, 0, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.06)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mwskinsa, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.06, alt)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 2000, mwskinso, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.04)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 2000, mwskinst, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game Tournament Edition", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/atm.cpp b/src/mame/drivers/atm.cpp index b06e3e5eaeb..91742ec9a7f 100644 --- a/src/mame/drivers/atm.cpp +++ b/src/mame/drivers/atm.cpp @@ -171,7 +171,7 @@ static GFXDECODE_START( atmtb2 ) GFXDECODE_END -static MACHINE_CONFIG_DERIVED_CLASS( atm, spectrum_128, atm_state ) +static MACHINE_CONFIG_DERIVED( atm, spectrum_128 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(atm_io) MCFG_CPU_DECRYPTED_OPCODES_MAP(atm_switch) @@ -230,8 +230,8 @@ ROM_START( atmtb2 ) ROM_LOAD( "sgen.rom", 0x0000, 0x0800, CRC(1f4387d6) SHA1(93b3774dc8a486643a1bdd48c606b0c84fa0e22b)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -COMP( 1991, atm, spec128, 0, atm, spec_plus, driver_device, 0, "MicroART", "ATM", MACHINE_NOT_WORKING) -//COMP( 1991, atmtb1, spec128, 0, atm, spec_plus, driver_device, 0, "MicroART", "ATM-turbo1", MACHINE_NOT_WORKING) -COMP( 1993, atmtb2, spec128, 0, atmtb2, spec_plus, driver_device, 0, "MicroART", "ATM-turbo2", MACHINE_NOT_WORKING) -//COMP( 1994, turbo2, spec128, 0, atm, spec_plus, driver_device, 0, "MicroART", "TURBO 2+", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ +COMP( 1991, atm, spec128, 0, atm, spec_plus, atm_state, 0, "MicroART", "ATM", MACHINE_NOT_WORKING) +//COMP( 1991, atmtb1, spec128, 0, atm, spec_plus, atm_state, 0, "MicroART", "ATM-turbo1", MACHINE_NOT_WORKING) +COMP( 1993, atmtb2, spec128, 0, atmtb2, spec_plus, atm_state, 0, "MicroART", "ATM-turbo2", MACHINE_NOT_WORKING) +//COMP( 1994, turbo2, spec128, 0, atm, spec_plus, atm_state, 0, "MicroART", "TURBO 2+", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/atom.cpp b/src/mame/drivers/atom.cpp index 20c35fe70f3..db0969a9912 100644 --- a/src/mame/drivers/atom.cpp +++ b/src/mame/drivers/atom.cpp @@ -704,7 +704,7 @@ FLOPPY_FORMATS_END0 MACHINE_DRIVER( atom ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( atom, atom_state ) +static MACHINE_CONFIG_START( atom ) /* basic machine hardware */ MCFG_CPU_ADD(SY6502_TAG, M6502, X2/4) MCFG_CPU_PROGRAM_MAP(atom_mem) @@ -781,7 +781,7 @@ MACHINE_CONFIG_END MCFG_GENERIC_EXTENSIONS("bin,rom") \ MCFG_GENERIC_LOAD(atomeb_state, _load) -static MACHINE_CONFIG_DERIVED_CLASS( atomeb, atom, atomeb_state ) +static MACHINE_CONFIG_DERIVED( atomeb, atom ) MCFG_CPU_MODIFY(SY6502_TAG) MCFG_CPU_PROGRAM_MAP(atomeb_mem) @@ -813,7 +813,7 @@ MACHINE_CONFIG_END MACHINE_DRIVER( atombb ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( atombb, atom_state ) +static MACHINE_CONFIG_START( atombb ) /* basic machine hardware */ MCFG_CPU_ADD(SY6502_TAG, M6502, X2/4) MCFG_CPU_PROGRAM_MAP(atombb_mem) @@ -982,10 +982,10 @@ DRIVER_INIT_MEMBER(atomeb_state, atomeb) SYSTEM DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, atom, 0, 0, atom, atom, driver_device, 0, "Acorn", "Atom" , 0) -COMP( 1979, atomeb, atom, 0, atomeb, atom, atomeb_state, atomeb, "Acorn", "Atom with Eprom Box" , 0) -COMP( 1982, atombb, atom, 0, atombb, atom, driver_device, 0, "Acorn", "Atom with BBC Basic" , 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1979, atom, 0, 0, atom, atom, atom_state, 0, "Acorn", "Atom" , 0) +COMP( 1979, atomeb, atom, 0, atomeb, atom, atomeb_state, atomeb, "Acorn", "Atom with Eprom Box" , 0) +COMP( 1982, atombb, atom, 0, atombb, atom, atom_state, 0, "Acorn", "Atom with BBC Basic" , 0) //COMP( 1983, prophet2, atom, 0, prophet2, atom, driver_device, 0, "Busicomputers", "Prophet 2" , 0) //COMP( 1983, prophet3, atom, 0, prophet3, atom, driver_device, 0, "Busicomputers", "Prophet 3" , 0) //COMP( 2011, atommc, atom, 0, atommc, atom, driver_device, 0, "Acorn", "Atom with AtoMMC2" , 0) diff --git a/src/mame/drivers/atpci.cpp b/src/mame/drivers/atpci.cpp index 1bad9917343..0e56d6c398d 100644 --- a/src/mame/drivers/atpci.cpp +++ b/src/mame/drivers/atpci.cpp @@ -3,6 +3,7 @@ #include "emu.h" #include "cpu/i386/i386.h" +#include "bus/isa/isa_cards.h" #include "bus/lpci/pci.h" #include "bus/lpci/i82371ab.h" #include "bus/lpci/i82371sb.h" @@ -44,7 +45,7 @@ static ADDRESS_MAP_START( at586_io, AS_IO, 32, at586_state ) AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write) ADDRESS_MAP_END -static MACHINE_CONFIG_START( at586, at586_state ) +static MACHINE_CONFIG_START( at586 ) MCFG_CPU_ADD("maincpu", PENTIUM, 60000000) MCFG_CPU_PROGRAM_MAP(at586_map) MCFG_CPU_IO_MAP(at586_io) @@ -69,7 +70,7 @@ static MACHINE_CONFIG_START( at586, at586_state ) MCFG_FRAGMENT_ADD( at_softlists ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( at586x3, at586_state ) +static MACHINE_CONFIG_START( at586x3 ) MCFG_CPU_ADD("maincpu", PENTIUM, 60000000) MCFG_CPU_PROGRAM_MAP(at586_map) MCFG_CPU_IO_MAP(at586_io) @@ -129,6 +130,6 @@ ROM_START( ficvt503 ) ROMX_LOAD("115gk140.awd", 0x20000, 0x20000, CRC(65e88956) SHA1(f94bb0732e00b5b0f18f4e349db24a289f8379c5), ROM_BIOS(5)) ROM_END -COMP ( 1990, at586, ibm5170, 0, at586, 0, driver_device, 0, "", "PC/AT 586 (PIIX4)", MACHINE_NOT_WORKING ) -COMP ( 1990, at586x3, ibm5170, 0, at586x3, 0, driver_device, 0, "", "PC/AT 586 (PIIX3)", MACHINE_NOT_WORKING ) -COMP ( 1997, ficvt503, ibm5170, 0, at586, 0, driver_device, 0, "FIC", "VT-503", MACHINE_NOT_WORKING ) +COMP ( 1990, at586, ibm5170, 0, at586, 0, at586_state, 0, "", "PC/AT 586 (PIIX4)", MACHINE_NOT_WORKING ) +COMP ( 1990, at586x3, ibm5170, 0, at586x3, 0, at586_state, 0, "", "PC/AT 586 (PIIX3)", MACHINE_NOT_WORKING ) +COMP ( 1997, ficvt503, ibm5170, 0, at586, 0, at586_state, 0, "FIC", "VT-503", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/atronic.cpp b/src/mame/drivers/atronic.cpp index 2dc995b858e..48dd7be2f6a 100644 --- a/src/mame/drivers/atronic.cpp +++ b/src/mame/drivers/atronic.cpp @@ -58,7 +58,7 @@ static INPUT_PORTS_START( atronic ) INPUT_PORTS_END -static MACHINE_CONFIG_START( atronic, atronic_state ) +static MACHINE_CONFIG_START( atronic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, 6000000) MCFG_CPU_PROGRAM_MAP(atronic_map) @@ -815,33 +815,33 @@ ROM_END -GAME( 1999, atronic, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 1)", MACHINE_IS_SKELETON) -GAME( 1999, atronica, atronic, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 2)", MACHINE_IS_SKELETON) - -GAME( 2002, atlantca, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 1)", MACHINE_IS_SKELETON) -GAME( 2002, atlantcaa, atlantca, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 2)", MACHINE_IS_SKELETON) -GAME( 2002, baboshka, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Baboshka (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, cfblue, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 1)", MACHINE_IS_SKELETON) -GAME( 2002, cfbluea, cfblue, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 2)", MACHINE_IS_SKELETON) -GAME( 2002, cfgreen, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Crazy Fruits Green (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, chicken, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Chicken (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, aclown, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Clown (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, goldglen, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Golden Glenn (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, iccash, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "I C Cash (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, shpinxii, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Sphinx II (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, bearnec, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Bear Necessities (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, beachpt, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Beach Patrol (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, beetleup, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Beetles Unplugged (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, abigchs, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Big Cheese (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, bigblue, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Big Blue (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, castaway, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 1)", MACHINE_IS_SKELETON) -GAME( 2002, castawaya, castaway, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 2)", MACHINE_IS_SKELETON) -GAME( 2002, dncsprt, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Dancing Spirit (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, drmmake, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Dream Maker (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, goldcity, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Gold City (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, jumpjkpt, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Jumping Jackpots (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, mushmagi, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Mushroom Magic (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, santam, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Santa Maria (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, splmastr, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Spell Master (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, tajmah, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Tajmahal (Russia) (Atronic)", MACHINE_IS_SKELETON) -GAME( 2002, 3wishrd, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Three Wishes Red (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 1999, atronic, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 1)", MACHINE_IS_SKELETON) +GAME( 1999, atronica, atronic, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 2)", MACHINE_IS_SKELETON) + +GAME( 2002, atlantca, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 1)", MACHINE_IS_SKELETON) +GAME( 2002, atlantcaa, atlantca, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 2)", MACHINE_IS_SKELETON) +GAME( 2002, baboshka, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Baboshka (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, cfblue, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 1)", MACHINE_IS_SKELETON) +GAME( 2002, cfbluea, cfblue, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 2)", MACHINE_IS_SKELETON) +GAME( 2002, cfgreen, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Crazy Fruits Green (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, chicken, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Chicken (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, aclown, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Clown (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, goldglen, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Golden Glenn (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, iccash, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "I C Cash (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, shpinxii, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Sphinx II (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, bearnec, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Bear Necessities (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, beachpt, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Beach Patrol (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, beetleup, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Beetles Unplugged (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, abigchs, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Big Cheese (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, bigblue, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Big Blue (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, castaway, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 1)", MACHINE_IS_SKELETON) +GAME( 2002, castawaya, castaway, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 2)", MACHINE_IS_SKELETON) +GAME( 2002, dncsprt, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Dancing Spirit (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, drmmake, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Dream Maker (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, goldcity, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Gold City (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, jumpjkpt, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Jumping Jackpots (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, mushmagi, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Mushroom Magic (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, santam, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Santa Maria (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, splmastr, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Spell Master (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, tajmah, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Tajmahal (Russia) (Atronic)", MACHINE_IS_SKELETON) +GAME( 2002, 3wishrd, 0, atronic, atronic, atronic_state, 0, ROT0, "Atronic", "Three Wishes Red (Russia) (Atronic)", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/attache.cpp b/src/mame/drivers/attache.cpp index ec039e61d6a..e26c5ff5521 100644 --- a/src/mame/drivers/attache.cpp +++ b/src/mame/drivers/attache.cpp @@ -136,7 +136,6 @@ public: // overrides uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void vblank_int(screen_device &screen, bool state); virtual void driver_start() override; virtual void machine_start() override; virtual void machine_reset() override; @@ -344,11 +343,6 @@ uint32_t attache_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma return 0; } -void attache_state::vblank_int(screen_device &screen, bool state) -{ - m_ctc->trg2(state); -} - READ8_MEMBER(attache_state::rom_r) { if(m_rom_active) @@ -918,7 +912,7 @@ void attache_state::machine_reset() m_kb_bitpos = 0; } -static MACHINE_CONFIG_START( attache, attache_state ) +static MACHINE_CONFIG_START( attache ) MCFG_CPU_ADD("maincpu",Z80,XTAL_8MHz / 2) MCFG_CPU_PROGRAM_MAP(attache_map) MCFG_CPU_IO_MAP(attache_io) @@ -932,7 +926,7 @@ static MACHINE_CONFIG_START( attache, attache_state ) MCFG_SCREEN_SIZE(640,240) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1) MCFG_SCREEN_UPDATE_DRIVER(attache_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(attache_state, vblank_int) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("ctc", z80ctc_device, trg2)) MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") @@ -1002,5 +996,5 @@ ROM_START( attache ) ROM_LOAD("u630.bin", 0x0000, 0x0100, CRC(f7a5c821) SHA1(fea07d9ac7e4e5f4f72aa7b2159deaedbd662ead) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, attache, 0, 0, attache, attache, driver_device, 0, "Otrona", "Attach\xC3\xA9", MACHINE_IMPERFECT_GRAPHICS) +// YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS +COMP( 1982, attache, 0, 0, attache, attache, attache_state, 0, "Otrona", "Attach\xC3\xA9", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/attckufo.cpp b/src/mame/drivers/attckufo.cpp index fe89d3ba6b7..6fc3635ccd4 100644 --- a/src/mame/drivers/attckufo.cpp +++ b/src/mame/drivers/attckufo.cpp @@ -110,7 +110,7 @@ READ8_MEMBER(attckufo_state::vic_colorram_r) // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( attckufo, attckufo_state ) +static MACHINE_CONFIG_START( attckufo ) MCFG_CPU_ADD("maincpu", M6502, XTAL_14_31818MHz / 14) MCFG_CPU_PROGRAM_MAP(cpu_map) @@ -145,5 +145,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS -GAME( 1980, attckufo, 0, attckufo, attckufo, driver_device, 0, ROT270, "Ryoto Electric Co.", "Attack UFO", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS +GAME( 1980, attckufo, 0, attckufo, attckufo, attckufo_state, 0, ROT270, "Ryoto Electric Co.", "Attack UFO", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/atvtrack.cpp b/src/mame/drivers/atvtrack.cpp index 9803bd1cdde..d1b693e01be 100644 --- a/src/mame/drivers/atvtrack.cpp +++ b/src/mame/drivers/atvtrack.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Angelo Salese, Samuele Zannoli +// copyright-holders:Samuele Zannoli /* ATV Track (c)2002 Gaelco @@ -541,7 +541,7 @@ INPUT_PORTS_END #define ATV_CPU_CLOCK XTAL_33MHz*6 -static MACHINE_CONFIG_START( atvtrack, atvtrack_state ) +static MACHINE_CONFIG_START( atvtrack ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH4LE, ATV_CPU_CLOCK) MCFG_SH4_MD0(1) @@ -582,7 +582,7 @@ static MACHINE_CONFIG_START( atvtrack, atvtrack_state ) MCFG_PALETTE_ADD("palette", 0x1000) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( smashdrv, atvtrack, smashdrv_state ) +static MACHINE_CONFIG_DERIVED( smashdrv, atvtrack ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(smashdrv_main_map) MCFG_CPU_IO_MAP(smashdrv_main_port) @@ -662,8 +662,8 @@ ROM_START( smashdrv ) // ic21 unpopulated ROM_END -GAME( 2002, atvtrack, 0, atvtrack, atvtrack, driver_device, 0, ROT0, "Gaelco", "ATV Track (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2002, atvtracka, atvtrack, atvtrack, atvtrack, driver_device, 0, ROT0, "Gaelco", "ATV Track (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2002, atvtrack, 0, atvtrack, atvtrack, atvtrack_state, 0, ROT0, "Gaelco", "ATV Track (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2002, atvtracka, atvtrack, atvtrack, atvtrack, atvtrack_state, 0, ROT0, "Gaelco", "ATV Track (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // almost identical PCB, FlashROM mapping and master registers addresses different -GAME( 2000, smashdrv, 0, smashdrv, atvtrack, driver_device, 0, ROT0, "Gaelco", "Smashing Drive (UK)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2000, smashdrv, 0, smashdrv, atvtrack, smashdrv_state, 0, ROT0, "Gaelco", "Smashing Drive (UK)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/aussiebyte.cpp b/src/mame/drivers/aussiebyte.cpp index 1b15abc1bc9..9e118f17243 100644 --- a/src/mame/drivers/aussiebyte.cpp +++ b/src/mame/drivers/aussiebyte.cpp @@ -57,7 +57,7 @@ static ADDRESS_MAP_START( aussiebyte_io, AS_IO, 8, aussiebyte_state ) AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pio1", z80pio_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) AM_RANGE(0x0c, 0x0f) AM_NOP // winchester interface - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", wd2797_t, read, write) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", wd2797_device, read, write) AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("dma", z80dma_device, read, write) AM_RANGE(0x15, 0x15) AM_WRITE(port15_w) // boot rom disable AM_RANGE(0x16, 0x16) AM_WRITE(port16_w) // fdd select @@ -465,7 +465,7 @@ MACHINE_RESET_MEMBER( aussiebyte_state, aussiebyte ) m_maincpu->reset(); } -static MACHINE_CONFIG_START( aussiebyte, aussiebyte_state ) +static MACHINE_CONFIG_START( aussiebyte ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(aussiebyte_map) @@ -595,5 +595,5 @@ ROM_START(aussieby) ROM_REGION(0x00800, "aram", ROMREGION_ERASEFF) // attribute ram, 2k static ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1984, aussieby, 0, 0, aussiebyte, aussiebyte, aussiebyte_state, aussiebyte, "SME Systems", "Aussie Byte II" , MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/avalnche.cpp b/src/mame/drivers/avalnche.cpp index 0ac8ba7b61d..a4960480e4d 100644 --- a/src/mame/drivers/avalnche.cpp +++ b/src/mame/drivers/avalnche.cpp @@ -246,7 +246,7 @@ void avalnche_state::machine_reset() m_avalance_video_inverted = 0; } -static MACHINE_CONFIG_START( avalnche, avalnche_state ) +static MACHINE_CONFIG_START( avalnche ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,MASTER_CLOCK/16) /* clock input is the "2H" signal divided by two */ @@ -328,6 +328,6 @@ ROM_END * *************************************/ -GAMEL( 1978, avalnche, 0, avalnche, avalnche, driver_device, 0, ROT0, "Atari", "Avalanche", MACHINE_SUPPORTS_SAVE, layout_avalnche ) -GAMEL( 1978, cascade, avalnche, avalnche, cascade, driver_device, 0, ROT0, "bootleg? (Sidam)", "Cascade", MACHINE_SUPPORTS_SAVE, layout_avalnche ) -GAME ( 1977, catchp, 0, catch, catch, driver_device, 0, ROT0, "Atari", "Catch (prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // pre-production board, evolved into Avalanche +GAMEL( 1978, avalnche, 0, avalnche, avalnche, avalnche_state, 0, ROT0, "Atari", "Avalanche", MACHINE_SUPPORTS_SAVE, layout_avalnche ) +GAMEL( 1978, cascade, avalnche, avalnche, cascade, avalnche_state, 0, ROT0, "bootleg? (Sidam)", "Cascade", MACHINE_SUPPORTS_SAVE, layout_avalnche ) +GAME ( 1977, catchp, 0, catch, catch, avalnche_state, 0, ROT0, "Atari", "Catch (prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // pre-production board, evolved into Avalanche diff --git a/src/mame/drivers/avigo.cpp b/src/mame/drivers/avigo.cpp index b0d826f4403..15b6dc5b769 100644 --- a/src/mame/drivers/avigo.cpp +++ b/src/mame/drivers/avigo.cpp @@ -746,7 +746,7 @@ void avigo_state::nvram_init(nvram_device &nvram, void *base, size_t size) memset(base, 0x00, size); } -static MACHINE_CONFIG_START( avigo, avigo_state ) +static MACHINE_CONFIG_START( avigo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(avigo_mem) @@ -904,9 +904,9 @@ ROM_START(avigo_it) ROMX_LOAD("italian_100.rom", 0x000000, 0x050000, CRC(de359218) SHA1(6185727aba8ffc98723f2df74dda388fd0d70cc9), ROM_BIOS(3)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP(1997, avigo, 0, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA", MACHINE_SUPPORTS_SAVE) -COMP(1997, avigo_de, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (German)", MACHINE_SUPPORTS_SAVE) -COMP(1997, avigo_fr, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (French)", MACHINE_SUPPORTS_SAVE) -COMP(1997, avigo_es, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (Spanish)", MACHINE_SUPPORTS_SAVE) -COMP(1997, avigo_it, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (Italian)", MACHINE_SUPPORTS_SAVE) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP(1997, avigo, 0, 0, avigo, avigo, avigo_state, 0, "Texas Instruments", "TI Avigo 10 PDA", MACHINE_SUPPORTS_SAVE) +COMP(1997, avigo_de, avigo, 0, avigo, avigo, avigo_state, 0, "Texas Instruments", "TI Avigo 10 PDA (German)", MACHINE_SUPPORTS_SAVE) +COMP(1997, avigo_fr, avigo, 0, avigo, avigo, avigo_state, 0, "Texas Instruments", "TI Avigo 10 PDA (French)", MACHINE_SUPPORTS_SAVE) +COMP(1997, avigo_es, avigo, 0, avigo, avigo, avigo_state, 0, "Texas Instruments", "TI Avigo 10 PDA (Spanish)", MACHINE_SUPPORTS_SAVE) +COMP(1997, avigo_it, avigo, 0, avigo, avigo, avigo_state, 0, "Texas Instruments", "TI Avigo 10 PDA (Italian)", MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/avt.cpp b/src/mame/drivers/avt.cpp index 27a70b3663e..2e8f2d83b22 100644 --- a/src/mame/drivers/avt.cpp +++ b/src/mame/drivers/avt.cpp @@ -928,7 +928,7 @@ INTERRUPT_GEN_MEMBER(avt_state::avt_vblank_irq) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0x06); } -static MACHINE_CONFIG_START( avt, avt_state ) +static MACHINE_CONFIG_START( avt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* guess */ @@ -1031,8 +1031,8 @@ ROM_END * Game Drivers * *********************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1985, avtsym14, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Symbols (ver 1.4)", MACHINE_NOT_WORKING ) -GAME( 1985, avtsym25, avtsym14, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Symbols (ver 2.5)", MACHINE_NOT_WORKING ) -GAME( 1985, avtbingo, 0, avt, avtbingo, driver_device, 0, ROT0, "Advanced Video Technology", "Arrow Bingo", MACHINE_NOT_WORKING ) -GAME( 1989, avtnfl, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "NFL (ver 109)", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ +GAME( 1985, avtsym14, 0, avt, symbols, avt_state, 0, ROT0, "Advanced Video Technology", "Symbols (ver 1.4)", MACHINE_NOT_WORKING ) +GAME( 1985, avtsym25, avtsym14, avt, symbols, avt_state, 0, ROT0, "Advanced Video Technology", "Symbols (ver 2.5)", MACHINE_NOT_WORKING ) +GAME( 1985, avtbingo, 0, avt, avtbingo, avt_state, 0, ROT0, "Advanced Video Technology", "Arrow Bingo", MACHINE_NOT_WORKING ) +GAME( 1989, avtnfl, 0, avt, symbols, avt_state, 0, ROT0, "Advanced Video Technology", "NFL (ver 109)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ax20.cpp b/src/mame/drivers/ax20.cpp index 3d4d16805f2..ab4382bf502 100644 --- a/src/mame/drivers/ax20.cpp +++ b/src/mame/drivers/ax20.cpp @@ -121,7 +121,7 @@ static SLOT_INTERFACE_START( ax20_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( ax20, ax20_state ) +static MACHINE_CONFIG_START( ax20 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, XTAL_14_31818MHz/3) MCFG_CPU_PROGRAM_MAP(ax20_map) @@ -156,5 +156,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, ax20, 0, 0, ax20, ax20, driver_device, 0, "Axel", "AX-20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, ax20, 0, 0, ax20, ax20, ax20_state, 0, "Axel", "AX-20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/aztarac.cpp b/src/mame/drivers/aztarac.cpp index 83d09547a1c..7c4b92ce0fa 100644 --- a/src/mame/drivers/aztarac.cpp +++ b/src/mame/drivers/aztarac.cpp @@ -147,7 +147,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( aztarac, aztarac_state ) +static MACHINE_CONFIG_START( aztarac ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) @@ -231,4 +231,4 @@ ROM_END * *************************************/ -GAME( 1983, aztarac, 0, aztarac, aztarac, driver_device, 0, ROT0, "Centuri", "Aztarac", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, aztarac, 0, aztarac, aztarac, aztarac_state, 0, ROT0, "Centuri", "Aztarac", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/b16.cpp b/src/mame/drivers/b16.cpp index e79f5118d9c..30944f6e273 100644 --- a/src/mame/drivers/b16.cpp +++ b/src/mame/drivers/b16.cpp @@ -269,7 +269,7 @@ WRITE8_MEMBER(b16_state::memory_write_byte) } -static MACHINE_CONFIG_START( b16, b16_state ) +static MACHINE_CONFIG_START( b16 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8086, XTAL_14_31818MHz/2) //unknown xtal MCFG_CPU_PROGRAM_MAP(b16_map) @@ -309,5 +309,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, b16, 0, 0, b16, b16, driver_device, 0, "Hitachi", "B16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, b16, 0, 0, b16, b16, b16_state, 0, "Hitachi", "B16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/b2m.cpp b/src/mame/drivers/b2m.cpp index e2c5cc17ec5..d9c02c4d791 100644 --- a/src/mame/drivers/b2m.cpp +++ b/src/mame/drivers/b2m.cpp @@ -42,7 +42,7 @@ static ADDRESS_MAP_START( b2m_io, AS_IO, 8, b2m_state ) AM_RANGE(0x14, 0x15) AM_DEVREADWRITE("pic8259", pic8259_device, read, write ) AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("fd1793", fd1793_t, read, write) + AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("fd1793", fd1793_device, read, write) ADDRESS_MAP_END static ADDRESS_MAP_START( b2m_rom_io, AS_IO, 8, b2m_state ) @@ -185,7 +185,7 @@ SLOT_INTERFACE_END /* Machine driver */ -static MACHINE_CONFIG_START( b2m, b2m_state ) +static MACHINE_CONFIG_START( b2m ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 2000000) MCFG_CPU_PROGRAM_MAP(b2m_mem) @@ -271,6 +271,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, b2m, 0, 0, b2m, b2m, b2m_state, b2m, "BNPO", "Bashkiria-2M", MACHINE_SUPPORTS_SAVE) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1989, b2m, 0, 0, b2m, b2m, b2m_state, b2m, "BNPO", "Bashkiria-2M", MACHINE_SUPPORTS_SAVE) COMP( 1989, b2mrom, b2m, 0, b2mrom, b2m, b2m_state, b2m, "BNPO", "Bashkiria-2M ROM-disk", MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/babbage.cpp b/src/mame/drivers/babbage.cpp index bf1306f8b94..0a95392ff13 100644 --- a/src/mame/drivers/babbage.cpp +++ b/src/mame/drivers/babbage.cpp @@ -232,7 +232,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(babbage_state::keyboard_callback) ***************************************************************************/ -static MACHINE_CONFIG_START( babbage, babbage_state ) +static MACHINE_CONFIG_START( babbage ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK) //2.5MHz MCFG_CPU_PROGRAM_MAP(babbage_map) @@ -274,5 +274,5 @@ ROM_START(babbage) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1986, babbage, 0, 0, babbage, babbage, driver_device, 0, "Mr Takafumi Aihara", "Babbage-2nd" , MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, babbage, 0, 0, babbage, babbage, babbage_state, 0, "Mr Takafumi Aihara", "Babbage-2nd" , MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/backfire.cpp b/src/mame/drivers/backfire.cpp index f47a0122384..4999e338d2f 100644 --- a/src/mame/drivers/backfire.cpp +++ b/src/mame/drivers/backfire.cpp @@ -470,7 +470,7 @@ void backfire_state::machine_start() { } -static MACHINE_CONFIG_START( backfire, backfire_state ) +static MACHINE_CONFIG_START( backfire ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000/4) /* Unconfirmed */ diff --git a/src/mame/drivers/badlands.cpp b/src/mame/drivers/badlands.cpp index 5bbeabdf668..74ed52cf817 100644 --- a/src/mame/drivers/badlands.cpp +++ b/src/mame/drivers/badlands.cpp @@ -189,25 +189,23 @@ void badlands_state::update_interrupts() void badlands_state::scanline_update(screen_device &screen, int scanline) { - if (m_audiocpu != nullptr) - { - address_space &space = m_audiocpu->space(AS_PROGRAM); + // sound CPU irq is scanline controlled, we update it below to make bootlegs happy +} - /* sound IRQ is on 32V */ - if (scanline & 32) - m_soundcomm->sound_irq_ack_r(space, 0); - else if (!(ioport("FE4000")->read() & 0x40)) - m_soundcomm->sound_irq_gen(*m_audiocpu); - } - else - return; +TIMER_DEVICE_CALLBACK_MEMBER(badlands_state::sound_scanline) +{ + int scanline = param; + //address_space &space = m_audiocpu->space(AS_PROGRAM); + + // 32V + if ((scanline % 64) == 0 && scanline < 240) + m_soundcomm->sound_irq_gen(*m_audiocpu); } MACHINE_START_MEMBER(badlands_state,badlands) { atarigen_state::machine_start(); - save_item(NAME(m_pedal_value)); } @@ -217,7 +215,7 @@ MACHINE_RESET_MEMBER(badlands_state,badlands) m_pedal_value[0] = m_pedal_value[1] = 0x80; atarigen_state::machine_reset(); - scanline_timer_reset(*m_screen, 32); + //scanline_timer_reset(*m_screen, 32); membank("soundbank")->set_entry(0); } @@ -232,6 +230,7 @@ MACHINE_RESET_MEMBER(badlands_state,badlands) INTERRUPT_GEN_MEMBER(badlands_state::vblank_int) { + // TODO: remove this hack int pedal_state = ioport("PEDALS")->read(); int i; @@ -274,7 +273,6 @@ READ16_MEMBER(badlands_state::pedal_1_r) } - /************************************* * * Audio I/O handlers @@ -352,8 +350,8 @@ WRITE8_MEMBER(badlands_state::audio_io_w) case 0x204: /* WRIO */ /* 0xc0 = bank address - 0x20 = coin counter 2 - 0x10 = coin counter 1 + 0x20 = coin counter 1 + 0x10 = coin counter 2 0x08 = n/c 0x04 = n/c 0x02 = n/c @@ -362,6 +360,8 @@ WRITE8_MEMBER(badlands_state::audio_io_w) /* update the bank */ membank("soundbank")->set_entry((data >> 6) & 3); + machine().bookkeeping().coin_counter_w(0, data & 0x20); + machine().bookkeeping().coin_counter_w(1, data & 0x10); break; } } @@ -421,9 +421,12 @@ ADDRESS_MAP_END static INPUT_PORTS_START( badlands ) PORT_START("FE4000") /* fe4000 */ - PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) // old steering wheels + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) // old gas pedals + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) // freeze-step + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Freeze") // freeze + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Start / Fire") + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Start / Fire") PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_SERVICE( 0x0080, IP_ACTIVE_LOW ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -437,9 +440,9 @@ static INPUT_PORTS_START( badlands ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("AUDIO") /* audio port */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* self test */ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_ATARI_COMM_SOUND_TO_MAIN_READY("soundcomm") /* response buffer full */ @@ -447,8 +450,8 @@ static INPUT_PORTS_START( badlands ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* self test */ PORT_START("PEDALS") /* fake for pedals */ - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Pedal") + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Pedal") PORT_BIT( 0xfffc, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END @@ -496,7 +499,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( badlands, badlands_state ) +static MACHINE_CONFIG_START( badlands ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) @@ -505,7 +508,8 @@ static MACHINE_CONFIG_START( badlands, badlands_state ) MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8) MCFG_CPU_PROGRAM_MAP(audio_map) - + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", badlands_state, sound_scanline, "screen", 0, 1) + MCFG_MACHINE_START_OVERRIDE(badlands_state,badlands) MCFG_MACHINE_RESET_OVERRIDE(badlands_state,badlands) @@ -638,36 +642,75 @@ READ16_MEMBER(badlands_state::badlandsb_unk_r) return 0xffff; } -static ADDRESS_MAP_START( bootleg_map, AS_PROGRAM, 16, badlands_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - - - AM_RANGE(0x400008, 0x400009) AM_READ(badlandsb_unk_r ) - AM_RANGE(0x4000fe, 0x4000ff) AM_READ(badlandsb_unk_r ) +READ8_MEMBER(badlands_state::bootleg_shared_r) +{ + return m_b_sharedram[offset]; +} - AM_RANGE(0xfc0000, 0xfc0001) AM_READ(badlandsb_unk_r ) +WRITE8_MEMBER(badlands_state::bootleg_shared_w) +{ + m_b_sharedram[offset] = data; +} - AM_RANGE(0xfe4000, 0xfe4001) AM_READ(badlandsb_unk_r ) - AM_RANGE(0xfe4004, 0xfe4005) AM_READ(badlandsb_unk_r ) - AM_RANGE(0xfe4006, 0xfe4007) AM_READ(badlandsb_unk_r ) +static ADDRESS_MAP_START( bootleg_map, AS_PROGRAM, 16, badlands_state ) + AM_RANGE(0x000000, 0x03ffff) AM_ROM + // only 0-0xff accessed, assume all range is shared + AM_RANGE(0x400000, 0x401fff) AM_READWRITE8(bootleg_shared_r,bootleg_shared_w,0xffff) + AM_RANGE(0xfc0000, 0xfc0001) AM_READ(badlandsb_unk_r ) // sound comms? + AM_RANGE(0xfd0000, 0xfd1fff) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff) //AM_RANGE(0xfe0000, 0xfe1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0xfe2000, 0xfe3fff) AM_WRITE(video_int_ack_w) - AM_RANGE(0xfec000, 0xfedfff) AM_WRITE(badlands_pf_bank_w) - AM_RANGE(0xfee000, 0xfeffff) AM_DEVWRITE("eeprom", atari_eeprom_device, unlock_write) + AM_RANGE(0xfe0000, 0xfe0001) AM_WRITENOP + AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("FE4000") + AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("P1") + AM_RANGE(0xfe4006, 0xfe4007) AM_READ_PORT("P2") + AM_RANGE(0xfe4008, 0xfe4009) AM_WRITE(badlands_pf_bank_w) + AM_RANGE(0xfe400c, 0xfe400d) AM_DEVWRITE("eeprom", atari_eeprom_device, unlock_write) + AM_RANGE(0xffc000, 0xffc3ff) AM_DEVREADWRITE8("palette", palette_device, read, write, 0xff00) AM_SHARE("palette") AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("playfield", tilemap_device, write) AM_SHARE("playfield") + // TODO: actually sprites are at 0xfff600-0x7ff ? AM_RANGE(0xfff000, 0xfff1ff) AM_RAM AM_SHARE("mob") AM_RANGE(0xfff200, 0xffffff) AM_RAM ADDRESS_MAP_END -static INPUT_PORTS_START( badlandsb ) +WRITE8_MEMBER(badlands_state::bootleg_main_irq_w) +{ + m_maincpu->set_input_line(2, HOLD_LINE); +} + +static ADDRESS_MAP_START( bootleg_audio_map, AS_PROGRAM, 8, badlands_state ) + AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("audiorom", 0) + AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("b_sharedram") + AM_RANGE(0x4000, 0xcfff) AM_ROM AM_REGION("audiorom", 0x4000) + AM_RANGE(0xd400, 0xd400) AM_WRITE(bootleg_main_irq_w) // correct? + AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) +ADDRESS_MAP_END + +static INPUT_PORTS_START( badlandsb ) PORT_INCLUDE( badlands ) + PORT_START("P1") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1) + PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("P2") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2) + PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_MODIFY("FE6000") + PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("FE6002") + PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("AUDIO") /* audio port */ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -695,22 +738,32 @@ GFXDECODE_END MACHINE_RESET_MEMBER(badlands_state,badlandsb) { // m_pedal_value[0] = m_pedal_value[1] = 0x80; - atarigen_state::machine_reset(); - scanline_timer_reset(*m_screen, 32); +// scanline_timer_reset(*m_screen, 32); // memcpy(m_bank_base, &m_bank_source_data[0x0000], 0x1000); } -static MACHINE_CONFIG_START( badlandsb, badlands_state ) +TIMER_DEVICE_CALLBACK_MEMBER(badlands_state::bootleg_sound_scanline) +{ + int scanline = param; + //address_space &space = m_audiocpu->space(AS_PROGRAM); + + // 32V + if ((scanline % 64) == 0 && scanline < 240) + m_audiocpu->set_input_line(0, HOLD_LINE); +} + +static MACHINE_CONFIG_START( badlandsb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_28MHz/4) /* Divisor estimated */ MCFG_CPU_PROGRAM_MAP(bootleg_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", badlands_state, vblank_int) + MCFG_CPU_VBLANK_INT_DRIVER("screen", badlands_state, irq1_line_hold) //vblank_int) -// MCFG_CPU_ADD("audiocpu", Z80, XTAL_20MHz/12) /* Divisor estimated */ -// MCFG_CPU_PROGRAM_MAP(bootleg_soundmap) + MCFG_CPU_ADD("audiocpu", Z80, XTAL_20MHz/12) /* Divisor estimated */ + MCFG_CPU_PROGRAM_MAP(bootleg_audio_map) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", badlands_state, bootleg_sound_scanline, "screen", 0, 1) MCFG_MACHINE_START_OVERRIDE(badlands_state,badlands) MCFG_MACHINE_RESET_OVERRIDE(badlands_state,badlandsb) @@ -757,7 +810,7 @@ ROM_START( badlandsb ) ROM_LOAD16_BYTE( "blb21.ic20", 0x20001, 0x10000, CRC(99a20c2c) SHA1(9b0a5a5dafb8816e72330d302c60339b600b49a8) ) /* Z80 on the bootleg! */ - ROM_REGION( 0x10000, "cpu1", 0 ) + ROM_REGION( 0x10000, "audiorom", 0 ) ROM_LOAD( "blb26.ic27", 0x00000, 0x10000, CRC(59503ab4) SHA1(ea5686ee28f6125c1394d687cc35c6322c8f900c) ) /* the 2nd half of 122,123,124 and 125 is identical to the first half and not used */ @@ -789,7 +842,7 @@ ROM_START( badlandsb2 ) ROM_LOAD16_BYTE( "1.ic20", 0x20001, 0x10000, CRC(99a20c2c) SHA1(9b0a5a5dafb8816e72330d302c60339b600b49a8) ) /* Z80 on the bootleg! */ - ROM_REGION( 0x10000, "cpu1", 0 ) + ROM_REGION( 0x10000, "audiorom", 0 ) ROM_LOAD( "3.ic27", 0x00000, 0x10000, CRC(08850eb5) SHA1(be169e8ccee275b72bcfca66cd126cc27af7a1d6) ) // only rom that differs from badlandsb /* the 2nd half of 122,123,124 and 125 is identical to the first half and not used */ @@ -813,5 +866,5 @@ ROM_END -GAME( 1989, badlandsb, badlands, badlandsb, badlandsb, driver_device, 0, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg)", MACHINE_NOT_WORKING ) -GAME( 1989, badlandsb2,badlands, badlandsb, badlandsb, driver_device, 0, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg, alternate)", MACHINE_NOT_WORKING ) +GAME( 1989, badlandsb, badlands, badlandsb, badlandsb, badlands_state, 0, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg)", MACHINE_NOT_WORKING ) +GAME( 1989, badlandsb2,badlands, badlandsb, badlandsb, badlands_state, 0, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg, alternate)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/bagman.cpp b/src/mame/drivers/bagman.cpp index b086c18a1cc..872bd79cdde 100644 --- a/src/mame/drivers/bagman.cpp +++ b/src/mame/drivers/bagman.cpp @@ -199,20 +199,20 @@ static INPUT_PORTS_START( bagman ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_START("P2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_START("DSW") @@ -328,8 +328,8 @@ static INPUT_PORTS_START( squaitsa ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) // special handling for the p1 dial PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) // ^ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) @@ -338,8 +338,8 @@ static INPUT_PORTS_START( squaitsa ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) // special handling for the p2 dial PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) // ^ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL @@ -462,7 +462,7 @@ INTERRUPT_GEN_MEMBER(bagman_state::vblank_irq) } -static MACHINE_CONFIG_START( bagman, bagman_state ) +static MACHINE_CONFIG_START( bagman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, BAGMAN_H0) @@ -511,7 +511,7 @@ static MACHINE_CONFIG_START( bagman, bagman_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pickin, bagman_state ) +static MACHINE_CONFIG_START( pickin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, BAGMAN_H0) @@ -561,7 +561,7 @@ z80 */ -static MACHINE_CONFIG_START( botanic, bagman_state ) +static MACHINE_CONFIG_START( botanic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, BAGMAN_H0) @@ -783,7 +783,34 @@ ROM_START( bagmans2 ) ROM_LOAD( "t9_b12.bin", 0x1000, 0x1000, CRC(b2120edd) SHA1(52b89dbcc749b084331fa82b13d0876e911fce52) ) ROM_END +ROM_START( bagmanj ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "BF8_06.E9", 0x0000, 0x1000, CRC(5fb0a1a3) SHA1(849cd60b58de9585a78a1c4c1747f666a4a4fcc3) ) // 2732 + ROM_LOAD( "BF8_07.F9", 0x1000, 0x1000, CRC(7871206e) SHA1(14d9b7a0779d59a870e0d4b911797dff5435a16c) ) // 2732 + ROM_LOAD( "BF8_08.J9", 0x2000, 0x1000, CRC(ae037d0a) SHA1(57d287b3968a4e7fdee2a98014dbdf4fae93d157) ) // 2732 + ROM_LOAD( "BF8_09.K9", 0x3000, 0x1000, CRC(36b6a944) SHA1(270dd2566b36129366adcbdd5a8db396bec7631f) ) // 2732 + ROM_LOAD( "BF8_10.M9", 0x4000, 0x1000, CRC(b8e75eb6) SHA1(433fd736512f10bc0879b15821eb55cc41d58d33) ) // 2732 + ROM_LOAD( "BF8_11.N9", 0x5000, 0x1000, CRC(83fccb1c) SHA1(7225d738b64a2cdaaec8860017de4229f2852ed2) ) // 2732 + + ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_LOAD( "BF8_03.E1", 0x0000, 0x1000, CRC(f217ac09) SHA1(a9716674401dff27344a01df8121b6b648688680) ) // 2732 + ROM_LOAD( "BF8_05.J1", 0x1000, 0x1000, CRC(c680ef04) SHA1(79406bc786374abfcd9f548268c445b5c8d8858d) ) // 2732 + + ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_LOAD( "BF8_02.C1", 0x0000, 0x1000, CRC(404283ed) SHA1(18613670cf23181089812c02429e222db0340a60) ) // 2732 + ROM_LOAD( "BF8_04-1.F1", 0x1000, 0x1000, CRC(3f5c991e) SHA1(853c629ba0b4739dcb1af669fd600a3d83fb2072) ) // 2732 + + ROM_REGION( 0x0040, "proms", 0 ) // not dumped for this set + ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) ) + ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) ) + + ROM_REGION( 0x0020, "5110ctrl", 0) // not dumped for this set + ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) ) /*state machine driving TMS5110*/ + ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */ + ROM_LOAD( "BF8_12.R9", 0x0000, 0x1000, CRC(2e0057ff) SHA1(33e3ffa6418f86864eb81e5e9bda4bf540c143a6) ) // 2732 + ROM_LOAD( "BF8_13.T9", 0x1000, 0x1000, CRC(b2120edd) SHA1(52b89dbcc749b084331fa82b13d0876e911fce52) ) // 2732 +ROM_END ROM_START( sbagman ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -996,19 +1023,20 @@ DRIVER_INIT_MEMBER(bagman_state,bagman) } -GAME( 1982, bagman, 0, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Bagman", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bagnard, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Le Bagnard (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bagnarda, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Le Bagnard (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bagnardi, bagman, bagman, bagman, bagman_state, bagman, ROT90, "Valadon Automation (Itisa license)", "Le Bagnard (Itisa, Spain)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bagmans, bagman, bagman, bagmans, bagman_state, bagman, ROT270, "Valadon Automation (Stern Electronics license)", "Bagman (Stern Electronics, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bagmans2, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation (Stern Electronics license)", "Bagman (Stern Electronics, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bagman, 0, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Bagman", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bagnard, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Le Bagnard (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bagnarda, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Le Bagnard (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bagnardi, bagman, bagman, bagman, bagman_state, bagman, ROT90, "Valadon Automation (Itisa license)", "Le Bagnard (Itisa, Spain)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bagmans, bagman, bagman, bagmans, bagman_state, bagman, ROT270, "Valadon Automation (Stern Electronics license)", "Bagman (Stern Electronics, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bagmans2, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation (Stern Electronics license)", "Bagman (Stern Electronics, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bagmanj, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation (Taito license)", "Bagman (Taito)", MACHINE_SUPPORTS_SAVE ) // title screen actually doesn't mention Valadon, only Stern and Taito -GAME( 1984, sbagman, 0, bagman, sbagman, driver_device, 0, ROT270, "Valadon Automation", "Super Bagman", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, sbagmans, sbagman, bagman, sbagman, driver_device, 0, ROT270, "Valadon Automation (Stern Electronics license)", "Super Bagman (Stern Electronics)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sbagman, 0, bagman, sbagman, bagman_state, 0, ROT270, "Valadon Automation", "Super Bagman", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sbagmans, sbagman, bagman, sbagman, bagman_state, 0, ROT270, "Valadon Automation (Stern Electronics license)", "Super Bagman (Stern Electronics)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, pickin, 0, pickin, pickin, driver_device, 0, ROT270, "Valadon Automation", "Pickin'", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, pickin, 0, pickin, pickin, bagman_state, 0, ROT270, "Valadon Automation", "Pickin'", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, botanic, 0, botanic, botanici,driver_device, 0, ROT90, "Itisa", "Botanic (English / Spanish)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, botanicf, botanic, botanic, botanicf,driver_device, 0, ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, botanic, 0, botanic, botanici, bagman_state, 0, ROT90, "Itisa", "Botanic (English / Spanish)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, botanicf, botanic, botanic, botanicf, bagman_state, 0, ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, squaitsa, 0, squaitsa,squaitsa, driver_device,0, ROT0, "Itisa", "Squash (Itisa)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, squaitsa, 0, squaitsa, squaitsa, bagman_state, 0, ROT0, "Itisa", "Squash (Itisa)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bailey.cpp b/src/mame/drivers/bailey.cpp index 15232f62605..ef1f4c9a34d 100644 --- a/src/mame/drivers/bailey.cpp +++ b/src/mame/drivers/bailey.cpp @@ -44,7 +44,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -87,7 +87,7 @@ void bailey_state::video_start() { } -static MACHINE_CONFIG_START( bailey, bailey_state ) +static MACHINE_CONFIG_START( bailey ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -152,5 +152,5 @@ ROM_START( fun4a ) ROM_END -GAME( 1976, fun4, 0, bailey, 0, driver_device, 0, ROT0, "Bailey International", "Fun Four (set 1) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1976, fun4a, fun4, bailey, 0, driver_device, 0, ROT0, "Bailey International", "Fun Four (set 2) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, fun4, 0, bailey, 0, bailey_state, 0, ROT0, "Bailey International", "Fun Four (set 1) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, fun4a, fun4, bailey, 0, bailey_state, 0, ROT0, "Bailey International", "Fun Four (set 2) [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/balsente.cpp b/src/mame/drivers/balsente.cpp index a151aeaeb7f..3a5768cb1f4 100644 --- a/src/mame/drivers/balsente.cpp +++ b/src/mame/drivers/balsente.cpp @@ -1277,7 +1277,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( balsente, balsente_state ) +static MACHINE_CONFIG_START( balsente ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_20MHz/16) /* xtal verified but not speed */ diff --git a/src/mame/drivers/banctec.cpp b/src/mame/drivers/banctec.cpp index 1fc03c95f40..d98b0d8897c 100644 --- a/src/mame/drivers/banctec.cpp +++ b/src/mame/drivers/banctec.cpp @@ -127,7 +127,7 @@ static GFXDECODE_START( banctec ) GFXDECODE_ENTRY( "chargen", 0x00000, banctec_gfx_layout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( banctec, banctec_state ) +static MACHINE_CONFIG_START( banctec ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C31, XTAL_11_0592MHz) @@ -173,5 +173,5 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT MONITOR COMPANY FULLNAME */ -CONS( 1989, banctec, 0, 0, banctec, 0, driver_device, 0, "DALE Electronics", "BancTec ESeries Panel", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME */ +CONS( 1989, banctec, 0, 0, banctec, 0, banctec_state, 0, "DALE Electronics", "BancTec ESeries Panel", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/bankp.cpp b/src/mame/drivers/bankp.cpp index d9e507395d5..3f0e4bb52ef 100644 --- a/src/mame/drivers/bankp.cpp +++ b/src/mame/drivers/bankp.cpp @@ -291,7 +291,7 @@ INTERRUPT_GEN_MEMBER(bankp_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( bankp, bankp_state ) +static MACHINE_CONFIG_START( bankp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) @@ -398,5 +398,5 @@ ROM_END * *************************************/ -GAME( 1984, bankp, 0, bankp, bankp, driver_device, 0, ROT0, "Sanritsu / Sega", "Bank Panic", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, combh, 0, bankp, combh, driver_device, 0, ROT270, "Sanritsu / Sega", "Combat Hawk", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, bankp, 0, bankp, bankp, bankp_state, 0, ROT0, "Sanritsu / Sega", "Bank Panic", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, combh, 0, bankp, combh, bankp_state, 0, ROT270, "Sanritsu / Sega", "Combat Hawk", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/baraduke.cpp b/src/mame/drivers/baraduke.cpp index fc01cad9c2a..831d408aa11 100644 --- a/src/mame/drivers/baraduke.cpp +++ b/src/mame/drivers/baraduke.cpp @@ -370,7 +370,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( baraduke, baraduke_state ) +static MACHINE_CONFIG_START( baraduke ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_49_152MHz/32) @@ -390,7 +390,7 @@ static MACHINE_CONFIG_START( baraduke, baraduke_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_49_152MHz/8, 384, 0, 36*8, 264, 2*8, 30*8) MCFG_SCREEN_UPDATE_DRIVER(baraduke_state, screen_update_baraduke) - MCFG_SCREEN_VBLANK_DRIVER(baraduke_state, screen_eof_baraduke) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(baraduke_state, screen_vblank_baraduke)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", baraduke) diff --git a/src/mame/drivers/barata.cpp b/src/mame/drivers/barata.cpp index 97dedb53ecb..5cd63e07c58 100644 --- a/src/mame/drivers/barata.cpp +++ b/src/mame/drivers/barata.cpp @@ -304,7 +304,7 @@ ADDRESS_MAP_END * Machine Drivers * ************************/ -static MACHINE_CONFIG_START( barata, barata_state ) +static MACHINE_CONFIG_START( barata ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8051, CPU_CLOCK) MCFG_CPU_IO_MAP(i8051_io_port) @@ -329,4 +329,4 @@ ROM_END /************************* * Game Drivers * *************************/ -GAME( 2002, barata, 0, barata, barata, driver_device, 0, ROT0, "Eletro Matic Equipamentos Eletromec??nicos", "Dona Barata (early prototype)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2002, barata, 0, barata, barata, barata_state, 0, ROT0, "Eletro Matic Equipamentos Eletromec??nicos", "Dona Barata (early prototype)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/barni.cpp b/src/mame/drivers/barni.cpp index 2e2c93788c7..05dad500f51 100644 --- a/src/mame/drivers/barni.cpp +++ b/src/mame/drivers/barni.cpp @@ -56,7 +56,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( barni ) INPUT_PORTS_END -static MACHINE_CONFIG_START( barni, barni_state ) +static MACHINE_CONFIG_START( barni ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) MCFG_CPU_PROGRAM_MAP(maincpu_map) @@ -99,4 +99,4 @@ ROM_START(redbarnp) ROM_END -GAME( 1985, redbarnp, 0, barni, barni, driver_device, 0, ROT0, "Barni", "Red Baron (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1985, redbarnp, 0, barni, barni, barni_state, 0, ROT0, "Barni", "Red Baron (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/bartop52.cpp b/src/mame/drivers/bartop52.cpp index 30b2ba9f84f..37fde21a7bd 100644 --- a/src/mame/drivers/bartop52.cpp +++ b/src/mame/drivers/bartop52.cpp @@ -34,12 +34,11 @@ class bartop52_state : public atari_common_state public: bartop52_state(const machine_config &mconfig, device_type type, const char *tag) : atari_common_state(mconfig, type, tag) - { } + { } TIMER_DEVICE_CALLBACK_MEMBER( bartop_interrupt ); virtual void machine_reset() override; - //required_device m_maincpu; // maincpu is already contained in atari_common_state }; @@ -120,9 +119,9 @@ TIMER_DEVICE_CALLBACK_MEMBER( bartop52_state::bartop_interrupt ) m_antic->generic_interrupt(4); } -static MACHINE_CONFIG_START( a5200, bartop52_state ) +static MACHINE_CONFIG_START( a5200 ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M6502, FREQ_17_EXACT) + MCFG_CPU_ADD("maincpu", M6502, pokey_device::FREQ_17_EXACT) MCFG_CPU_PROGRAM_MAP(a5200_mem) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bartop52_state, bartop_interrupt, "screen", 0, 1) @@ -134,9 +133,9 @@ static MACHINE_CONFIG_START( a5200, bartop52_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1)) - MCFG_SCREEN_VISIBLE_AREA(MIN_X, MAX_X, MIN_Y, MAX_Y) - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_60HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ) + MCFG_SCREEN_VISIBLE_AREA_ANTIC() + MCFG_SCREEN_REFRESH_RATE_ANTIC_60HZ() + MCFG_SCREEN_SIZE_ANTIC_60HZ() MCFG_SCREEN_UPDATE_DEVICE("antic", antic_device, screen_update) MCFG_SCREEN_PALETTE("palette") @@ -146,7 +145,7 @@ static MACHINE_CONFIG_START( a5200, bartop52_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("pokey", POKEY, FREQ_17_EXACT) + MCFG_SOUND_ADD("pokey", POKEY, pokey_device::FREQ_17_EXACT) MCFG_POKEY_POT0_R_CB(IOPORT("analog_0")) MCFG_POKEY_POT1_R_CB(IOPORT("analog_1")) MCFG_POKEY_POT2_R_CB(IOPORT("analog_2")) @@ -164,4 +163,4 @@ ROM_START(barbball) ROM_LOAD( "5200.rom", 0xf800, 0x0800, BAD_DUMP CRC(4248d3e3) SHA1(6ad7a1e8c9fad486fbec9498cb48bf5bc3adc530) ) ROM_END -GAME( 1983, barbball, 0, a5200, bartop52, driver_device, 0, ROT0, "Atari", "Barroom Baseball (prototype)", MACHINE_NOT_WORKING ) +GAME( 1983, barbball, 0, a5200, bartop52, bartop52_state, 0, ROT0, "Atari", "Barroom Baseball (prototype)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/basic52.cpp b/src/mame/drivers/basic52.cpp index a972bb9f1d0..e2daa857e20 100644 --- a/src/mame/drivers/basic52.cpp +++ b/src/mame/drivers/basic52.cpp @@ -48,7 +48,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(unk_r); uint8_t m_term_data; required_device m_maincpu; @@ -91,14 +91,14 @@ READ8_MEMBER( basic52_state::unk_r) } -WRITE8_MEMBER( basic52_state::kbd_put ) +void basic52_state::kbd_put(u8 data) { m_maincpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE); m_maincpu->set_input_line(MCS51_RX_LINE, CLEAR_LINE); m_term_data = data; } -static MACHINE_CONFIG_START( basic31, basic52_state ) +static MACHINE_CONFIG_START( basic31 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8031, XTAL_11_0592MHz) MCFG_CPU_PROGRAM_MAP(basic52_mem) @@ -108,7 +108,7 @@ static MACHINE_CONFIG_START( basic31, basic52_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(basic52_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(basic52_state, kbd_put)) MCFG_DEVICE_ADD("ppi8255", I8255, 0) MACHINE_CONFIG_END @@ -142,6 +142,6 @@ ROM_START( basic31 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, basic52, 0, 0, basic52, basic52, driver_device, 0, "Intel", "MCS BASIC 52", MACHINE_NO_SOUND_HW) -COMP( 1985, basic31, basic52, 0, basic31, basic52, driver_device, 0, "Intel", "MCS BASIC 31", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1985, basic52, 0, 0, basic52, basic52, basic52_state, 0, "Intel", "MCS BASIC 52", MACHINE_NO_SOUND_HW) +COMP( 1985, basic31, basic52, 0, basic31, basic52, basic52_state, 0, "Intel", "MCS BASIC 31", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/batman.cpp b/src/mame/drivers/batman.cpp index aff359cac85..158ee3a7aa0 100644 --- a/src/mame/drivers/batman.cpp +++ b/src/mame/drivers/batman.cpp @@ -196,7 +196,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( batman, batman_state ) +static MACHINE_CONFIG_START( batman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz) @@ -309,4 +309,4 @@ ROM_END * *************************************/ -GAME( 1991, batman, 0, batman, batman, driver_device, 0, ROT0, "Atari Games", "Batman", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, batman, 0, batman, batman, batman_state, 0, ROT0, "Atari Games", "Batman", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/battlane.cpp b/src/mame/drivers/battlane.cpp index 4f35cb7c9ad..2b0101e93e5 100644 --- a/src/mame/drivers/battlane.cpp +++ b/src/mame/drivers/battlane.cpp @@ -270,7 +270,7 @@ void battlane_state::machine_reset() m_cpu_control = 0; } -static MACHINE_CONFIG_START( battlane, battlane_state ) +static MACHINE_CONFIG_START( battlane ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 1500000) /* 1.5 MHz ? */ @@ -402,6 +402,6 @@ ROM_END * *************************************/ -GAME( 1986, battlane, 0, battlane, battlane, driver_device, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, battlane2, battlane, battlane, battlane, driver_device, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, battlane3, battlane, battlane, battlane, driver_device, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, battlane, 0, battlane, battlane, battlane_state, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, battlane2, battlane, battlane, battlane, battlane_state, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, battlane3, battlane, battlane, battlane, battlane_state, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/battlera.cpp b/src/mame/drivers/battlera.cpp index 42a4d47b1f1..89411d0dfa2 100644 --- a/src/mame/drivers/battlera.cpp +++ b/src/mame/drivers/battlera.cpp @@ -268,7 +268,7 @@ uint32_t battlera_state::screen_update(screen_device &screen, bitmap_ind16 &bitm } -static MACHINE_CONFIG_START( battlera, battlera_state ) +static MACHINE_CONFIG_START( battlera ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H6280,21477200/3) @@ -280,7 +280,7 @@ static MACHINE_CONFIG_START( battlera, battlera_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242) + MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242) MCFG_SCREEN_UPDATE_DRIVER( battlera_state, screen_update ) MCFG_SCREEN_PALETTE("huc6260:palette") @@ -304,7 +304,7 @@ static MACHINE_CONFIG_START( battlera, battlera_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(battlera_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.85) MCFG_SOUND_ADD("c6280", C6280, 21477270/6) @@ -372,6 +372,6 @@ ROM_END /******************************************************************************/ -GAME( 1988, battlera, 0, battlera, battlera, driver_device, 0, ROT0, "Data East Corporation", "Battle Rangers (World)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, bldwolf, battlera, battlera, battlera, driver_device, 0, ROT0, "Data East USA", "Bloody Wolf (US)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, bldwolfj, battlera, battlera, battlera, driver_device, 0, ROT0, "Data East Corporation", "Narazumono Sentoubutai Bloody Wolf (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, battlera, 0, battlera, battlera, battlera_state, 0, ROT0, "Data East Corporation", "Battle Rangers (World)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bldwolf, battlera, battlera, battlera, battlera_state, 0, ROT0, "Data East USA", "Bloody Wolf (US)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bldwolfj, battlera, battlera, battlera, battlera_state, 0, ROT0, "Data East Corporation", "Narazumono Sentoubutai Bloody Wolf (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/battlex.cpp b/src/mame/drivers/battlex.cpp index 641682a25c5..dc3f78f4c94 100644 --- a/src/mame/drivers/battlex.cpp +++ b/src/mame/drivers/battlex.cpp @@ -19,6 +19,40 @@ - Setting the flipscreen dip to ON also hides the copyright message (?) + Notes from Tomasz Slanina: + + Tile decoding: + + Each 8x8 BG tile is defined by: + - 1 bit 8x8 mask (one tile - 8 consecutive bytes - user2 region) + - 4+4 bits of color ( one tile - 8 consecutive bytes - user1 region) + - bit 3 of color = brightness ? + + Single mask byte defines one row of tile pixels (FG or BG) + Single color byte defines color of FG (4 bits) and color of BG (4 bits) + of high (odd address in user1) or low (even address in user1) + nibbles of two tile pixels rows. + + Here's an example (single tile): + + user2 user1 colors + ---------------------------- + 00011100 0x32 33321144 + 00111100 0x41 33221144 + + 00111100 0x32 33227744 + 00011000 0x47 33327444 + + 00011000 0x56 55566555 + 00011000 0x56 55566555 + + 00011000 0x84 88844777 + 00011000 0x74 88844777 + + + + + TO DO : - missing starfield @@ -26,7 +60,10 @@ - game speed, its seems to be controlled by the IRQ's, how fast should it be? firing seems frustratingly inconsistant (better with PORT_IMPULSE) - - background tile colors, not understood well + - BG tilemap palette bits (in most cases paltte 0 is used, + only highlights ( battlex logo, hiscore table) uses different palettes(?). + Current implementation gives different highlight colors than on real + hardware (i.e. battlex logo should have yellow highights) **************************************************************************** @@ -201,12 +238,12 @@ INPUT_PORTS_END static const gfx_layout battlex_charlayout = { 8,8, - RGN_FRAC(1,3), - 3, - { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, - { 7,6,5,4,3,2,1,0 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 + RGN_FRAC(1,1), + 4, + { 0,1,2,3 }, + { 0, 4, 8, 12, 16, 20, 24, 28 }, + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, + 8*8*4 }; static const gfx_layout battlex_spritelayout = @@ -223,7 +260,7 @@ static const gfx_layout battlex_spritelayout = }; static GFXDECODE_START( battlex ) - GFXDECODE_ENTRY( "gfx1", 0, battlex_charlayout, 0, 8 ) + GFXDECODE_ENTRY( "gfx1", 0, battlex_charlayout, 64, 8 ) GFXDECODE_ENTRY( "gfx2", 0, battlex_spritelayout, 0, 8 ) GFXDECODE_END @@ -251,7 +288,7 @@ void battlex_state::machine_reset() m_in0_b4 = 0; } -static MACHINE_CONFIG_START( battlex, battlex_state ) +static MACHINE_CONFIG_START( battlex ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL_10MHz/4 ) // ? @@ -270,7 +307,7 @@ static MACHINE_CONFIG_START( battlex, battlex_state ) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", battlex) - MCFG_PALETTE_ADD("palette", 64) + MCFG_PALETTE_ADD("palette", 64 + 128) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -289,6 +326,7 @@ static MACHINE_CONFIG_DERIVED( dodgeman, battlex ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MACHINE_CONFIG_END + /************************************* * * ROM definition @@ -304,7 +342,7 @@ ROM_START( battlex ) ROM_LOAD( "p-rom5.2", 0x4000, 0x1000, CRC(ceb63d38) SHA1(92cab905d009c59115f52172ba7d01c8ff8991d7) ) ROM_LOAD( "p-rom6.1", 0x5000, 0x1000, CRC(6923f601) SHA1(e6c33cbd8d8679299d7b2c568d56f96ed3073971) ) - ROM_REGION( 0x3000, "gfx1", ROMREGION_ERASE00 ) // filled in later + ROM_REGION( 0x4000, "gfx1", ROMREGION_ERASE00 ) // filled in later ROM_REGION( 0x3000, "gfx2", 0 ) ROM_LOAD( "1a_f.6f", 0x0000, 0x1000, CRC(2b69287a) SHA1(30c0edaec44118b95ec390bd41c1bd49a2802451) ) @@ -327,7 +365,7 @@ ROM_START( dodgeman ) ROM_LOAD( "dg4.2f", 0x4000, 0x001000, CRC(14169361) SHA1(86d3cd1fa0aa4f21029daea2eba99bdaa34372e8) ) ROM_LOAD( "dg5.1f", 0x5000, 0x001000, CRC(8f83ae2f) SHA1(daad41b61ba3d55531021d444bbe4acfc275cfc9) ) - ROM_REGION( 0x6000, "gfx1", ROMREGION_ERASE00 ) // filled in later + ROM_REGION( 0x8000, "gfx1", ROMREGION_ERASE00 ) // filled in later ROM_REGION( 0x6000, "gfx2", ROMREGION_ERASE00 ) ROM_LOAD( "f.6f", 0x0000, 0x002000, CRC(dfaaf4c8) SHA1(1e09f1d72e7e5e6782d73ae60bca7982fc04df0e) ) @@ -353,33 +391,38 @@ DRIVER_INIT_MEMBER(battlex_state,battlex) uint8_t *colormask = memregion("user1")->base(); uint8_t *gfxdata = memregion("user2")->base(); uint8_t *dest = memregion("gfx1")->base(); - int tile_size = memregion("gfx1")->bytes() / 24; - int tile_shift = (tile_size / 512) + 11; + int tile_size = memregion("gfx1")->bytes() / 32; + int tile, line, bit; + int offset = 0; - /* convert gfx data from 1bpp + color block mask to straight 3bpp */ for (tile = 0; tile < tile_size; tile++) { for (line = 0; line < 8; line ++) { for (bit = 0; bit < 8 ; bit ++) { - int plane; - int color = colormask[tile << 3 | line]; - int data = gfxdata[tile << 3 | line] >> bit & 1; - if (!data) color >>= 4; - - for (plane = 2; plane >= 0; plane--) - { - dest[tile << 3 | line | (plane << tile_shift)] |= (color & 1) << bit; - color >>= 1; + + int color = colormask[(tile << 3 )| ((line&0x6) + (bit>3?1:0)) ]; + int data = (gfxdata[(tile << 3 )| line] >> bit) & 1; + + if(!data){ + color>>=4; } + + color&=0x0f; + + if(offset&1){ + dest[ offset>>1 ] |= color; + } else { + dest[ offset>>1 ] = color<<4; + } + ++offset; } } } } - /************************************* * * Game driver @@ -387,4 +430,4 @@ DRIVER_INIT_MEMBER(battlex_state,battlex) *************************************/ GAME( 1982, battlex, 0, battlex, battlex, battlex_state, battlex, ROT180, "Omori Electric Co., Ltd.", "Battle Cross", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1983, dodgeman, 0, dodgeman, dodgeman, battlex_state, battlex, ROT180, "Omori Electric Co., Ltd.", "Dodge Man", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1983, dodgeman, 0, dodgeman, dodgeman, battlex_state, battlex, ROT180, "Omori Electric Co., Ltd.", "Dodge Man", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) diff --git a/src/mame/drivers/battlnts.cpp b/src/mame/drivers/battlnts.cpp index a6c298df3a7..c696358af6a 100644 --- a/src/mame/drivers/battlnts.cpp +++ b/src/mame/drivers/battlnts.cpp @@ -229,7 +229,7 @@ void battlnts_state::machine_reset() m_spritebank = 0; } -static MACHINE_CONFIG_START( battlnts, battlnts_state ) +static MACHINE_CONFIG_START( battlnts ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, XTAL_24MHz / 2 /* 3000000*4? */) @@ -381,9 +381,9 @@ ROM_END * *************************************/ -GAME( 1987, battlnts, 0, battlnts, battlnts, driver_device, 0, ROT90, "Konami", "Battlantis (program code G)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, battlntsa, battlnts, battlnts, battlnts, driver_device, 0, ROT90, "Konami", "Battlantis (program code F)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, battlntsj, battlnts, battlnts, battlnts, driver_device, 0, ROT90, "Konami", "Battlantis (Japan, program code E)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rackemup, 0, battlnts, rackemup, driver_device, 0, ROT90, "Konami", "Rack 'em Up (program code L)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, thehustl, rackemup, battlnts, thehustl, driver_device, 0, ROT90, "Konami", "The Hustler (Japan, program code M)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, thehustlj, rackemup, battlnts, thehustl, driver_device, 0, ROT90, "Konami", "The Hustler (Japan, program code J)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, battlnts, 0, battlnts, battlnts, battlnts_state, 0, ROT90, "Konami", "Battlantis (program code G)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, battlntsa, battlnts, battlnts, battlnts, battlnts_state, 0, ROT90, "Konami", "Battlantis (program code F)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, battlntsj, battlnts, battlnts, battlnts, battlnts_state, 0, ROT90, "Konami", "Battlantis (Japan, program code E)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rackemup, 0, battlnts, rackemup, battlnts_state, 0, ROT90, "Konami", "Rack 'em Up (program code L)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, thehustl, rackemup, battlnts, thehustl, battlnts_state, 0, ROT90, "Konami", "The Hustler (Japan, program code M)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, thehustlj, rackemup, battlnts, thehustl, battlnts_state, 0, ROT90, "Konami", "The Hustler (Japan, program code J)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp index eee2bbf9444..47f1cd92fa4 100644 --- a/src/mame/drivers/bbc.cpp +++ b/src/mame/drivers/bbc.cpp @@ -221,7 +221,7 @@ static ADDRESS_MAP_START( bbcbp_mem, AS_PROGRAM, 8, bbc_state ) AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ /* W: fe30-fe3f 84LS161 Paged ROM selector */ AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ - AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ + AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_device, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ AM_IMPORT_FROM(bbc_base) ADDRESS_MAP_END @@ -234,7 +234,7 @@ static ADDRESS_MAP_START( bbcbp128_mem, AS_PROGRAM, 8, bbc_state ) AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ /* W: fe30-fe3f 84LS161 Paged ROM selector */ AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ - AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ + AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_device, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ AM_IMPORT_FROM(bbc_base) ADDRESS_MAP_END @@ -836,7 +836,7 @@ MACHINE_CONFIG_END ****************************************************************************/ -static MACHINE_CONFIG_START( bbca, bbc_state ) +static MACHINE_CONFIG_START( bbca ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_16MHz/8) /* 2.00 MHz */ MCFG_CPU_PROGRAM_MAP(bbca_mem) @@ -1269,7 +1269,7 @@ MACHINE_CONFIG_END ****************************************************************************/ -static MACHINE_CONFIG_START( bbcm, bbc_state ) +static MACHINE_CONFIG_START( bbcm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65SC02, XTAL_16MHz/8) /* 2.00 MHz */ MCFG_CPU_PROGRAM_MAP(bbcm_mem) diff --git a/src/mame/drivers/bbcbc.cpp b/src/mame/drivers/bbcbc.cpp index aaa2adff968..f366001a5dd 100644 --- a/src/mame/drivers/bbcbc.cpp +++ b/src/mame/drivers/bbcbc.cpp @@ -122,7 +122,7 @@ static const z80_daisy_config bbcbc_daisy_chain[] = }; -static MACHINE_CONFIG_START( bbcbc, bbcbc_state ) +static MACHINE_CONFIG_START( bbcbc ) MCFG_CPU_ADD( "maincpu", Z80, MAIN_CLOCK / 8 ) MCFG_CPU_PROGRAM_MAP(bbcbc_prg) MCFG_CPU_IO_MAP(bbcbc_io) @@ -189,5 +189,5 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -CONS(1985, bbcbc, 0, 0, bbcbc, bbcbc, driver_device, 0, "Unicard", "BBC Bridge Companion", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS(1985, bbcbc, 0, 0, bbcbc, bbcbc, bbcbc_state, 0, "Unicard", "BBC Bridge Companion", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/bbusters.cpp b/src/mame/drivers/bbusters.cpp index f3bb91fdf1d..6b784911298 100644 --- a/src/mame/drivers/bbusters.cpp +++ b/src/mame/drivers/bbusters.cpp @@ -647,13 +647,7 @@ GFXDECODE_END /******************************************************************************/ -void bbusters_state::screen_eof_bbuster(screen_device &screen, bool state) -{ - m_spriteram->vblank_copy_rising(screen, state); - m_spriteram2->vblank_copy_rising(screen, state); -} - -static MACHINE_CONFIG_START( bbusters, bbusters_state ) +static MACHINE_CONFIG_START( bbusters ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -672,7 +666,8 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(bbusters_state, screen_update_bbuster) - MCFG_SCREEN_VBLANK_DRIVER(bbusters_state, screen_eof_bbuster) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("spriteram2", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", bbusters) @@ -697,7 +692,7 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state ) MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mechatt, bbusters_state ) +static MACHINE_CONFIG_START( mechatt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -714,7 +709,7 @@ static MACHINE_CONFIG_START( mechatt, bbusters_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(bbusters_state, screen_update_mechatt) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", mechatt) @@ -1119,12 +1114,12 @@ ROM_END /******************************************************************************/ // as soon as you calibrate the guns in test mode the game refuses to boot -GAME( 1989, bbusters, 0, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bbustersu, bbusters, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (US, Version 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bbustersua, bbusters, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (US, Version 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bbustersj, bbusters, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (Japan, Version 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) - -GAME( 1989, mechatt, 0, mechatt, mechatt, driver_device, 0, ROT0, "SNK", "Mechanized Attack (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mechattj, mechatt, mechatt, mechattj, driver_device, 0, ROT0, "SNK", "Mechanized Attack (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mechattu, mechatt, mechatt, mechattu, driver_device, 0, ROT0, "SNK", "Mechanized Attack (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mechattu1, mechatt, mechatt, mechattu, driver_device, 0, ROT0, "SNK", "Mechanized Attack (US, Version 1, Single Player)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bbusters, 0, bbusters, bbusters, bbusters_state, 0, ROT0, "SNK", "Beast Busters (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bbustersu, bbusters, bbusters, bbusters, bbusters_state, 0, ROT0, "SNK", "Beast Busters (US, Version 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bbustersua, bbusters, bbusters, bbusters, bbusters_state, 0, ROT0, "SNK", "Beast Busters (US, Version 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bbustersj, bbusters, bbusters, bbusters, bbusters_state, 0, ROT0, "SNK", "Beast Busters (Japan, Version 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) + +GAME( 1989, mechatt, 0, mechatt, mechatt, bbusters_state, 0, ROT0, "SNK", "Mechanized Attack (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mechattj, mechatt, mechatt, mechattj, bbusters_state, 0, ROT0, "SNK", "Mechanized Attack (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mechattu, mechatt, mechatt, mechattu, bbusters_state, 0, ROT0, "SNK", "Mechanized Attack (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mechattu1, mechatt, mechatt, mechattu, bbusters_state, 0, ROT0, "SNK", "Mechanized Attack (US, Version 1, Single Player)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bcs3.cpp b/src/mame/drivers/bcs3.cpp index 496b43d317a..e015a97d214 100644 --- a/src/mame/drivers/bcs3.cpp +++ b/src/mame/drivers/bcs3.cpp @@ -374,7 +374,7 @@ DRIVER_INIT_MEMBER( bcs3_state, bcs3d ) s_cols = 29; } -static MACHINE_CONFIG_START( bcs3, bcs3_state ) +static MACHINE_CONFIG_START( bcs3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz /2) @@ -401,7 +401,7 @@ static MACHINE_CONFIG_START( bcs3, bcs3_state ) MCFG_CASSETTE_ADD( "cassette" ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bcs3a, bcs3_state ) +static MACHINE_CONFIG_START( bcs3a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_7MHz /2) @@ -486,9 +486,9 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, bcs3, 0, 0, bcs3, bcs3, driver_device, 0, "Eckhard Schiller", "BCS 3 rev 2.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, bcs3, 0, 0, bcs3, bcs3, bcs3_state, 0, "Eckhard Schiller", "BCS 3 rev 2.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) COMP( 1986, bcs3a, bcs3, 0, bcs3a, bcs3, bcs3_state, bcs3a, "Eckhard Schiller", "BCS 3 rev 3.1 29-column", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) COMP( 1986, bcs3b, bcs3, 0, bcs3b, bcs3, bcs3_state, bcs3b, "Eckhard Schiller", "BCS 3 rev 3.1 40-column", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) -COMP( 1986, bcs3c, bcs3, 0, bcs3a, bcs3, bcs3_state, bcs3c, "Eckhard Schiller", "BCS 3 rev 3.2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) -COMP( 1986, bcs3d, bcs3, 0, bcs3a, bcs3, bcs3_state, bcs3d, "Eckhard Schiller", "BCS 3 rev 3.3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1986, bcs3c, bcs3, 0, bcs3a, bcs3, bcs3_state, bcs3c, "Eckhard Schiller", "BCS 3 rev 3.2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1986, bcs3d, bcs3, 0, bcs3a, bcs3, bcs3_state, bcs3d, "Eckhard Schiller", "BCS 3 rev 3.3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/beaminv.cpp b/src/mame/drivers/beaminv.cpp index dcd8e7d0594..9056cbef8d8 100644 --- a/src/mame/drivers/beaminv.cpp +++ b/src/mame/drivers/beaminv.cpp @@ -335,7 +335,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( beaminv, beaminv_state ) +static MACHINE_CONFIG_START( beaminv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2000000) /* 2 MHz ? */ @@ -389,5 +389,5 @@ ROM_END * *************************************/ -GAMEL( 1979, beaminv, 0, beaminv, beaminv, driver_device, 0, ROT270, "Teknon Kogyo", "Beam Invader", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv ) -GAMEL( 1979, pacominv, beaminv, beaminv, pacominv, driver_device, 0, ROT270, "Pacom Corporation", "Pacom Invader", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv ) +GAMEL( 1979, beaminv, 0, beaminv, beaminv, beaminv_state, 0, ROT270, "Teknon Kogyo", "Beam Invader", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv ) +GAMEL( 1979, pacominv, beaminv, beaminv, pacominv, beaminv_state, 0, ROT270, "Pacom Corporation", "Pacom Invader", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv ) diff --git a/src/mame/drivers/beathead.cpp b/src/mame/drivers/beathead.cpp index f8f5c0a89d0..67306d9a825 100644 --- a/src/mame/drivers/beathead.cpp +++ b/src/mame/drivers/beathead.cpp @@ -121,7 +121,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(beathead_state::scanline_callback) int scanline = param; /* update the video */ -// m_screen->update_now(); m_screen->update_partial(m_screen->vpos()); /* on scanline zero, clear any halt condition */ @@ -361,7 +360,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( beathead, beathead_state ) +static MACHINE_CONFIG_START( beathead ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ASAP, ATARI_CLOCK_14MHz) @@ -425,63 +424,10 @@ ROM_END -/************************************* - * - * Driver speedups - * - *************************************/ - -/* - In-game hotspot @ 0180F8D8 -*/ - - -READ32_MEMBER( beathead_state::speedup_r ) -{ - uint32_t result = *m_speedup_data; - if ((space.device().safe_pcbase() & 0xfffff) == 0x006f0 && result == space.device().state().state_int(ASAP_R3)) - space.device().execute().spin_until_interrupt(); - return result; -} - - -READ32_MEMBER( beathead_state::movie_speedup_r ) -{ - int result = *m_movie_speedup_data; - if ((space.device().safe_pcbase() & 0xfffff) == 0x00a88 && (space.device().state().state_int(ASAP_R28) & 0xfffff) == 0x397c0 && - m_movie_speedup_data[4] == space.device().state().state_int(ASAP_R1)) - { - uint32_t temp = (int16_t)result + m_movie_speedup_data[4] * 262; - if (temp - (uint32_t)space.device().state().state_int(ASAP_R15) < (uint32_t)space.device().state().state_int(ASAP_R23)) - space.device().execute().spin_until_interrupt(); - } - return result; -} - - - -/************************************* - * - * Driver initialization - * - *************************************/ - -DRIVER_INIT_MEMBER(beathead_state,beathead) -{ - /* prepare the speedups */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000ae8, 0x00000aeb, read32_delegate(FUNC(beathead_state::speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000804, 0x00000807, read32_delegate(FUNC(beathead_state::movie_speedup_r), this)); - - m_speedup_data = m_ram_base + 0xae8/4; - m_movie_speedup_data = m_ram_base + 0x804/4; -} - - - /************************************* * * Game driver(s) * *************************************/ -GAME( 1993, beathead, 0, beathead, beathead, beathead_state, beathead, ROT0, "Atari Games", "BeatHead (prototype)", 0 ) +GAME( 1993, beathead, 0, beathead, beathead, beathead_state, 0, ROT0, "Atari Games", "BeatHead (prototype)", 0 ) diff --git a/src/mame/drivers/bebox.cpp b/src/mame/drivers/bebox.cpp index 047a1486f9c..dd094666a95 100644 --- a/src/mame/drivers/bebox.cpp +++ b/src/mame/drivers/bebox.cpp @@ -138,10 +138,10 @@ WRITE_LINE_MEMBER(bebox_state::bebox_keyboard_interrupt) static SLOT_INTERFACE_START( pci_devices ) SLOT_INTERFACE_INTERNAL("mpc105", MPC105) - SLOT_INTERFACE("cirrus", CIRRUS) + SLOT_INTERFACE("cirrus", PCI_CIRRUS_SVGA) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( bebox, bebox_state ) +static MACHINE_CONFIG_START( bebox ) /* basic machine hardware */ MCFG_CPU_ADD("ppc1", PPC603, 66000000) /* 66 MHz */ MCFG_CPU_PROGRAM_MAP(bebox_mem) @@ -257,6 +257,6 @@ ROM_START(bebox2) ROM_LOAD( "bootnub.rom", 0x000000, 0x4000, CRC(5348d09a) SHA1(1b637a3d7a2b072aa128dd5c037bbb440d525c1a) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1995, bebox, 0, 0, bebox, bebox, bebox_state, bebox, "Be Inc", "BeBox Dual603-66", MACHINE_NOT_WORKING ) -COMP( 1996, bebox2, bebox, 0, bebox2, bebox, bebox_state, bebox, "Be Inc", "BeBox Dual603-133", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1995, bebox, 0, 0, bebox, bebox, bebox_state, bebox, "Be Inc", "BeBox Dual603-66", MACHINE_NOT_WORKING ) +COMP( 1996, bebox2, bebox, 0, bebox2, bebox, bebox_state, bebox, "Be Inc", "BeBox Dual603-133", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/beehive.cpp b/src/mame/drivers/beehive.cpp index e8da27e5015..3b3f2153e93 100644 --- a/src/mame/drivers/beehive.cpp +++ b/src/mame/drivers/beehive.cpp @@ -285,7 +285,7 @@ uint32_t beehive_state::screen_update(screen_device &screen, bitmap_ind16 &bitma return 0; } -static MACHINE_CONFIG_START( beehive, beehive_state ) +static MACHINE_CONFIG_START( beehive ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8085A, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(beehive_mem) @@ -317,5 +317,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, beehive, 0, 0, beehive, beehive, driver_device, 0, "BeeHive", "DM3270", MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, beehive, 0, 0, beehive, beehive, beehive_state, 0, "BeeHive", "DM3270", MACHINE_NO_SOUND) diff --git a/src/mame/drivers/beezer.cpp b/src/mame/drivers/beezer.cpp index 2490f0eb008..82a0a065e48 100644 --- a/src/mame/drivers/beezer.cpp +++ b/src/mame/drivers/beezer.cpp @@ -458,7 +458,7 @@ void beezer_state::machine_reset() // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( beezer, beezer_state ) +static MACHINE_CONFIG_START( beezer ) // basic machine hardware MCFG_CPU_ADD("maincpu", M6809, XTAL_12MHz / 12) MCFG_CPU_PROGRAM_MAP(main_map) @@ -596,6 +596,6 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS -GAME( 1982, beezer, 0, beezer, beezer, driver_device, 0, ROT90, "Tong Electronic", "Beezer (set 1)", MACHINE_IMPERFECT_SOUND ) -GAME( 1982, beezer1, beezer, beezer, beezer, driver_device, 0, ROT90, "Tong Electronic", "Beezer (set 2)", MACHINE_IMPERFECT_SOUND ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS +GAME( 1982, beezer, 0, beezer, beezer, beezer_state, 0, ROT90, "Tong Electronic", "Beezer (set 1)", MACHINE_IMPERFECT_SOUND ) +GAME( 1982, beezer1, beezer, beezer, beezer, beezer_state, 0, ROT90, "Tong Electronic", "Beezer (set 2)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/belatra.cpp b/src/mame/drivers/belatra.cpp index 7c94c0eec1c..e22320d7d95 100644 --- a/src/mame/drivers/belatra.cpp +++ b/src/mame/drivers/belatra.cpp @@ -67,7 +67,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( belatra ) INPUT_PORTS_END -static MACHINE_CONFIG_START( belatra, belatra_state ) +static MACHINE_CONFIG_START( belatra ) MCFG_CPU_ADD("maincpu", ARM7, 54000000) // guess... MCFG_CPU_PROGRAM_MAP(belatra_map) @@ -121,12 +121,12 @@ ROM_START( ldrinka ) ROM_END -GAME( 2004, fairyl2 ,0, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (set 1)", MACHINE_IS_SKELETON ) -GAME( 2004, fairyl2a ,fairyl2, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (set 2)", MACHINE_IS_SKELETON ) -GAME( 2004, fairyl2b ,fairyl2, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (set 3)", MACHINE_IS_SKELETON ) -GAME( 2004, fairyl2bl ,fairyl2, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (bootleg)", MACHINE_IS_SKELETON ) +GAME( 2004, fairyl2, 0, belatra, belatra, belatra_state, 0, ROT0, "Belatra","Fairy Land 2 (set 1)", MACHINE_IS_SKELETON ) +GAME( 2004, fairyl2a, fairyl2, belatra, belatra, belatra_state, 0, ROT0, "Belatra","Fairy Land 2 (set 2)", MACHINE_IS_SKELETON ) +GAME( 2004, fairyl2b, fairyl2, belatra, belatra, belatra_state, 0, ROT0, "Belatra","Fairy Land 2 (set 3)", MACHINE_IS_SKELETON ) +GAME( 2004, fairyl2bl, fairyl2, belatra, belatra, belatra_state, 0, ROT0, "Belatra","Fairy Land 2 (bootleg)", MACHINE_IS_SKELETON ) -GAME( 2004, ldrink ,0, belatra, belatra, driver_device, 0, ROT0, "Belatra","Lucky Drink (set 1)", MACHINE_IS_SKELETON ) -GAME( 2004, ldrinka ,ldrink, belatra, belatra, driver_device, 0, ROT0, "Belatra","Lucky Drink (set 2)", MACHINE_IS_SKELETON ) +GAME( 2004, ldrink, 0, belatra, belatra, belatra_state, 0, ROT0, "Belatra","Lucky Drink (set 1)", MACHINE_IS_SKELETON ) +GAME( 2004, ldrinka, ldrink, belatra, belatra, belatra_state, 0, ROT0, "Belatra","Lucky Drink (set 2)", MACHINE_IS_SKELETON ) -GAME( 2004, merryjn ,0, belatra, belatra, driver_device, 0, ROT0, "Belatra","Merry Joiner", MACHINE_IS_SKELETON ) +GAME( 2004, merryjn, 0, belatra, belatra, belatra_state, 0, ROT0, "Belatra","Merry Joiner", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/berzerk.cpp b/src/mame/drivers/berzerk.cpp index 1b83f20cbe6..c87689ad36b 100644 --- a/src/mame/drivers/berzerk.cpp +++ b/src/mame/drivers/berzerk.cpp @@ -1103,7 +1103,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( berzerk, berzerk_state ) +static MACHINE_CONFIG_START( berzerk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK) @@ -1321,10 +1321,10 @@ DRIVER_INIT_MEMBER(berzerk_state,moonwarp) * *************************************/ -GAME( 1980, berzerk, 0, berzerk, berzerk, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, berzerk1, berzerk, berzerk, berzerk, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, berzerkf, berzerk, berzerk, berzerkf, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (French Speech)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, berzerkg, berzerk, berzerk, berzerkg, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (German Speech)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, berzerks, berzerk, berzerk, berzerks, driver_device, 0, ROT0, "Stern Electronics (Sonic License)", "Berzerk (Spanish Speech)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, frenzy, 0, frenzy, frenzy, driver_device, 0, ROT0, "Stern Electronics", "Frenzy", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, berzerk, 0, berzerk, berzerk, berzerk_state, 0, ROT0, "Stern Electronics", "Berzerk (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, berzerk1, berzerk, berzerk, berzerk, berzerk_state, 0, ROT0, "Stern Electronics", "Berzerk (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, berzerkf, berzerk, berzerk, berzerkf, berzerk_state, 0, ROT0, "Stern Electronics", "Berzerk (French Speech)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, berzerkg, berzerk, berzerk, berzerkg, berzerk_state, 0, ROT0, "Stern Electronics", "Berzerk (German Speech)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, berzerks, berzerk, berzerk, berzerks, berzerk_state, 0, ROT0, "Stern Electronics (Sonic License)", "Berzerk (Spanish Speech)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, frenzy, 0, frenzy, frenzy, berzerk_state, 0, ROT0, "Stern Electronics", "Frenzy", MACHINE_SUPPORTS_SAVE ) GAME( 1981, moonwarp, 0, frenzy, moonwarp, berzerk_state, moonwarp, ROT0, "Stern Electronics", "Moon War (prototype on Frenzy hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/besta.cpp b/src/mame/drivers/besta.cpp index 7b3d4af5c5f..76f0ef71c11 100644 --- a/src/mame/drivers/besta.cpp +++ b/src/mame/drivers/besta.cpp @@ -42,14 +42,17 @@ public: DECLARE_READ8_MEMBER( mpcc_reg_r ); DECLARE_WRITE8_MEMBER( mpcc_reg_w ); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); + +protected: + virtual void machine_reset() override; + uint8_t m_term_data; uint8_t m_mpcc_regs[32]; required_device m_maincpu; required_device m_pit1; required_device m_pit2; - virtual void machine_reset() override; required_device m_terminal; required_shared_ptr m_p_ram; @@ -78,25 +81,23 @@ READ8_MEMBER( besta_state::mpcc_reg_r ) WRITE8_MEMBER( besta_state::mpcc_reg_w ) { - device_t *devconf = machine().device(TERMINAL_TAG); - DBG_LOG(1,"mpcc_reg_w",("(%d) <- %02X at %s\n", offset, data, machine().describe_context())); switch (offset) { case 2: - m_term_data = data; + kbd_put(data); break; case 10: - dynamic_cast(devconf)->write(generic_space(), 0, data); + m_terminal->write(generic_space(), 0, data); default: m_mpcc_regs[offset] = data; break; } } -WRITE8_MEMBER( besta_state::kbd_put ) +void besta_state::kbd_put(u8 data) { - mpcc_reg_w(space, (offs_t)2, data, mem_mask); + m_term_data = data; } static ADDRESS_MAP_START(besta_mem, AS_PROGRAM, 32, besta_state) @@ -132,7 +133,7 @@ void besta_state::machine_reset() } /* CP31 processor board */ -static MACHINE_CONFIG_START( besta, besta_state ) +static MACHINE_CONFIG_START( besta ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68030, 2*16670000) MCFG_CPU_PROGRAM_MAP(besta_mem) @@ -142,7 +143,7 @@ static MACHINE_CONFIG_START( besta, besta_state ) MCFG_DEVICE_ADD ("pit2", PIT68230, 16670000 / 2) // XXX verify clock MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(besta_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(besta_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -160,5 +161,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1988, besta88, 0, 0, besta, besta, driver_device, 0, "Sapsan", "Besta-88", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1988, besta88, 0, 0, besta, besta, besta_state, 0, "Sapsan", "Besta-88", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/bestleag.cpp b/src/mame/drivers/bestleag.cpp index ca0175f0c39..6aee7c966db 100644 --- a/src/mame/drivers/bestleag.cpp +++ b/src/mame/drivers/bestleag.cpp @@ -375,7 +375,7 @@ static GFXDECODE_START( bestleag ) GFXDECODE_ENTRY( "gfx2", 0, bestleag_char16layout, 0x300, 16 ) GFXDECODE_END -static MACHINE_CONFIG_START( bestleag, bestleag_state ) +static MACHINE_CONFIG_START( bestleag ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(bestleag_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", bestleag_state, irq6_line_hold) @@ -394,7 +394,7 @@ static MACHINE_CONFIG_START( bestleag, bestleag_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) /* Hand-tuned */ + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) /* Hand-tuned */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) MACHINE_CONFIG_END @@ -474,5 +474,5 @@ ROM_END /* GAME drivers */ -GAME( 1993, bestleag, bigstrik, bestleag, bestleag, driver_device, 0, ROT0, "bootleg", "Best League (bootleg of Big Striker, Italian Serie A)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, bestleaw, bigstrik, bestleaw, bestleag, driver_device, 0, ROT0, "bootleg", "Best League (bootleg of Big Striker, World Cup)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, bestleag, bigstrik, bestleag, bestleag, bestleag_state, 0, ROT0, "bootleg", "Best League (bootleg of Big Striker, Italian Serie A)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, bestleaw, bigstrik, bestleaw, bestleag, bestleag_state, 0, ROT0, "bootleg", "Best League (bootleg of Big Striker, World Cup)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/beta.cpp b/src/mame/drivers/beta.cpp index f9e1cbf22de..61c417a5269 100644 --- a/src/mame/drivers/beta.cpp +++ b/src/mame/drivers/beta.cpp @@ -102,8 +102,8 @@ public: /* Memory Maps */ static ADDRESS_MAP_START( beta_mem, AS_PROGRAM, 8, beta_state ) - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x7f00) AM_DEVICE(M6532_TAG, mos6532_t, ram_map) - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x7f00) AM_DEVICE(M6532_TAG, mos6532_t, io_map) + AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x7f00) AM_DEVICE(M6532_TAG, mos6532_new_device, ram_map) + AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x7f00) AM_DEVICE(M6532_TAG, mos6532_new_device, io_map) AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x7800) AM_ROM ADDRESS_MAP_END @@ -335,7 +335,7 @@ void beta_state::machine_start() /* Machine Driver */ -static MACHINE_CONFIG_START( beta, beta_state ) +static MACHINE_CONFIG_START( beta ) /* basic machine hardware */ MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_4MHz/4) MCFG_CPU_PROGRAM_MAP(beta_mem) @@ -349,7 +349,7 @@ static MACHINE_CONFIG_START( beta, beta_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* devices */ - MCFG_DEVICE_ADD(M6532_TAG, MOS6532n, XTAL_4MHz/4) + MCFG_DEVICE_ADD(M6532_TAG, MOS6532_NEW, XTAL_4MHz/4) MCFG_MOS6530n_IN_PA_CB(READ8(beta_state, riot_pa_r)) MCFG_MOS6530n_OUT_PA_CB(WRITE8(beta_state, riot_pa_w)) MCFG_MOS6530n_IN_PB_CB(READ8(beta_state, riot_pb_r)) @@ -376,5 +376,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, beta, 0, 0, beta, beta, driver_device, 0, "Pitronics", "Beta", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, beta, 0, 0, beta, beta, beta_state, 0, "Pitronics", "Beta", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bfcobra.cpp b/src/mame/drivers/bfcobra.cpp index 6feee17b8f0..f97a735a284 100644 --- a/src/mame/drivers/bfcobra.cpp +++ b/src/mame/drivers/bfcobra.cpp @@ -1631,7 +1631,7 @@ INTERRUPT_GEN_MEMBER(bfcobra_state::vblank_gen) update_irqs(); } -static MACHINE_CONFIG_START( bfcobra, bfcobra_state ) +static MACHINE_CONFIG_START( bfcobra ) MCFG_CPU_ADD("maincpu", Z80, Z80_XTAL) MCFG_CPU_PROGRAM_MAP(z80_prog_map) MCFG_CPU_IO_MAP(z80_io_map) diff --git a/src/mame/drivers/bfm_ad5.cpp b/src/mame/drivers/bfm_ad5.cpp index a40e3782982..07238c4bac8 100644 --- a/src/mame/drivers/bfm_ad5.cpp +++ b/src/mame/drivers/bfm_ad5.cpp @@ -77,7 +77,7 @@ INTERRUPT_GEN_MEMBER(adder5_state::ad5_fake_timer_int) // m_maincpu->set_input_line_and_vector(5, HOLD_LINE, 0x8c); } -MACHINE_CONFIG_START( bfm_ad5, adder5_state ) +MACHINE_CONFIG_START( bfm_ad5 ) MCFG_CPU_ADD("maincpu", MCF5206E, 40000000) /* MCF5206eFT */ MCFG_CPU_PROGRAM_MAP(ad5_map) MCFG_CPU_PERIODIC_INT_DRIVER(adder5_state, ad5_fake_timer_int, 1000) diff --git a/src/mame/drivers/bfm_sc1.cpp b/src/mame/drivers/bfm_sc1.cpp index f0c5764dabc..592736e7bbc 100644 --- a/src/mame/drivers/bfm_sc1.cpp +++ b/src/mame/drivers/bfm_sc1.cpp @@ -213,7 +213,7 @@ public: required_device m_reel4; required_device m_reel5; optional_device m_upd7759; - optional_device m_vfd0; + optional_device m_vfd0; required_device m_meters; }; @@ -1077,7 +1077,7 @@ INPUT_PORTS_END // machine driver for scorpion1 board /////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// -static MACHINE_CONFIG_START( scorpion1, bfm_sc1_state ) +static MACHINE_CONFIG_START( scorpion1 ) MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/4) // 6809 CPU at 1 Mhz MCFG_CPU_PROGRAM_MAP(sc1_base) // setup read and write memorymap MCFG_CPU_PERIODIC_INT_DRIVER(bfm_sc1_state, timer_irq, 1000) // generate 1000 IRQ's per second diff --git a/src/mame/drivers/bfm_sc2.cpp b/src/mame/drivers/bfm_sc2.cpp index f684fb88430..b1745ca56b9 100644 --- a/src/mame/drivers/bfm_sc2.cpp +++ b/src/mame/drivers/bfm_sc2.cpp @@ -230,9 +230,9 @@ public: required_device m_upd7759; - optional_device m_vfd0; - optional_device m_vfd1; - optional_device m_dm01; + optional_device m_vfd0; + optional_device m_vfd1; + optional_device m_dm01; optional_device m_meters; // scorpion2_vid doesn't use this (scorpion2_vidm does) int m_sc2gui_update_mmtr; //not used? @@ -2214,7 +2214,7 @@ MACHINE_START_MEMBER(bfm_sc2_state,bfm_sc2) save_state(); } -static MACHINE_CONFIG_START( scorpion2_vid, bfm_sc2_state ) +static MACHINE_CONFIG_START( scorpion2_vid ) MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/4 ) // 6809 CPU at 2 Mhz MCFG_CPU_PROGRAM_MAP(memmap_vid) // setup scorpion2 board memorymap MCFG_CPU_PERIODIC_INT_DRIVER(bfm_sc2_state, timer_irq, 1000) // generate 1000 IRQ's per second @@ -3688,7 +3688,7 @@ MACHINE_START_MEMBER(bfm_sc2_state,sc2dmd) /* machine driver for scorpion2 board */ -static MACHINE_CONFIG_START( scorpion2, bfm_sc2_state ) +static MACHINE_CONFIG_START( scorpion2 ) MCFG_MACHINE_RESET_OVERRIDE(bfm_sc2_state,awp_init) MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/4 ) MCFG_CPU_PROGRAM_MAP(memmap_no_vid) @@ -3749,7 +3749,7 @@ MACHINE_CONFIG_END /* machine driver for scorpion2 board + matrix board */ -static MACHINE_CONFIG_START( scorpion2_dm01, bfm_sc2_state ) +static MACHINE_CONFIG_START( scorpion2_dm01 ) MCFG_MACHINE_RESET_OVERRIDE(bfm_sc2_state,dm01_init) MCFG_QUANTUM_TIME(attotime::from_hz(960)) // needed for serial communication !! MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/4 ) @@ -3772,8 +3772,8 @@ static MACHINE_CONFIG_START( scorpion2_dm01, bfm_sc2_state ) /* video hardware */ MCFG_DEFAULT_LAYOUT(layout_sc2_dmd) - MCFG_DEVICE_ADD("dm01", BF_DM01, 0) - MCFG_BF_DM01_BUSY_CB(WRITELINE(bfm_sc2_state, bfmdm01_busy)) + MCFG_DEVICE_ADD("dm01", BFM_DM01, 0) + MCFG_BFM_DM01_BUSY_CB(WRITELINE(bfm_sc2_state, bfmdm01_busy)) MCFG_STARPOINT_48STEP_ADD("reel0") MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel0_optic_cb)) diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp index 4fa9a38450c..dd70a20ec77 100644 --- a/src/mame/drivers/bfm_sc4.cpp +++ b/src/mame/drivers/bfm_sc4.cpp @@ -817,13 +817,11 @@ MACHINE_START_MEMBER(sc4_state,sc4) { m_nvram->set_base(m_mainram, sizeof(m_mainram)); - m_maincpu->set_port_callbacks( - m68307_porta_read_delegate(FUNC(sc4_state::bfm_sc4_68307_porta_r),this), - m68307_porta_write_delegate(FUNC(sc4_state::bfm_sc4_68307_porta_w),this), - m68307_portb_read_delegate(FUNC(sc4_state::bfm_sc4_68307_portb_r),this), - m68307_portb_write_delegate(FUNC(sc4_state::bfm_sc4_68307_portb_w),this) ); - + m68307_cpu_device::porta_read_delegate(FUNC(sc4_state::bfm_sc4_68307_porta_r), this), + m68307_cpu_device::porta_write_delegate(FUNC(sc4_state::bfm_sc4_68307_porta_w), this), + m68307_cpu_device::portb_read_delegate(FUNC(sc4_state::bfm_sc4_68307_portb_r), this), + m68307_cpu_device::portb_write_delegate(FUNC(sc4_state::bfm_sc4_68307_portb_w), this)); } @@ -923,7 +921,7 @@ MACHINE_CONFIG_FRAGMENT( sc4_common ) MACHINE_CONFIG_END //Standard 6 reels all connected -MACHINE_CONFIG_START( sc4, sc4_state ) +MACHINE_CONFIG_START( sc4 ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -941,7 +939,7 @@ MACHINE_CONFIG_START( sc4, sc4_state ) MACHINE_CONFIG_END //Standard 3 reels -MACHINE_CONFIG_START( sc4_3reel, sc4_state ) +MACHINE_CONFIG_START( sc4_3reel ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -954,7 +952,7 @@ MACHINE_CONFIG_START( sc4_3reel, sc4_state ) MACHINE_CONFIG_END //Standard 4 reels -MACHINE_CONFIG_START( sc4_4reel, sc4_state ) +MACHINE_CONFIG_START( sc4_4reel ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -968,7 +966,7 @@ MACHINE_CONFIG_START( sc4_4reel, sc4_state ) MACHINE_CONFIG_END //4 reels, with the last connected to RL4 not RL3 -MACHINE_CONFIG_START( sc4_4reel_alt, sc4_state ) +MACHINE_CONFIG_START( sc4_4reel_alt ) MCFG_FRAGMENT_ADD(sc4_common) @@ -985,7 +983,7 @@ MACHINE_CONFIG_END //Standard 5 reels -MACHINE_CONFIG_START( sc4_5reel, sc4_state ) +MACHINE_CONFIG_START( sc4_5reel ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1001,7 +999,7 @@ MACHINE_CONFIG_START( sc4_5reel, sc4_state ) MACHINE_CONFIG_END //5 reels, with RL4 skipped -MACHINE_CONFIG_START( sc4_5reel_alt, sc4_state ) +MACHINE_CONFIG_START( sc4_5reel_alt ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1019,7 +1017,7 @@ MACHINE_CONFIG_START( sc4_5reel_alt, sc4_state ) MACHINE_CONFIG_END //6 reels, last 200 steps -MACHINE_CONFIG_START( sc4_200_std, sc4_state ) +MACHINE_CONFIG_START( sc4_200_std ) MCFG_FRAGMENT_ADD(sc4_common) @@ -1038,7 +1036,7 @@ MACHINE_CONFIG_START( sc4_200_std, sc4_state ) MACHINE_CONFIG_END //6 reels, last 200 steps -MACHINE_CONFIG_START( sc4_200_alt, sc4_state ) +MACHINE_CONFIG_START( sc4_200_alt ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1056,7 +1054,7 @@ MACHINE_CONFIG_START( sc4_200_alt, sc4_state ) MACHINE_CONFIG_END //6 reels, RL4 200 steps -MACHINE_CONFIG_START( sc4_200_alta, sc4_state ) +MACHINE_CONFIG_START( sc4_200_alta ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1074,7 +1072,7 @@ MACHINE_CONFIG_START( sc4_200_alta, sc4_state ) MACHINE_CONFIG_END //6 reels, 3 48 step, 3 200 step -MACHINE_CONFIG_START( sc4_200_altb, sc4_state ) +MACHINE_CONFIG_START( sc4_200_altb ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_200STEP_ADD("reel1") @@ -1092,7 +1090,7 @@ MACHINE_CONFIG_START( sc4_200_altb, sc4_state ) MACHINE_CONFIG_END //5 reels, last one 200 steps -MACHINE_CONFIG_START( sc4_200_5r, sc4_state ) +MACHINE_CONFIG_START( sc4_200_5r ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1110,7 +1108,7 @@ MACHINE_CONFIG_END //5 reels, last one 200 steps, RL4 skipped -MACHINE_CONFIG_START( sc4_200_5ra, sc4_state ) +MACHINE_CONFIG_START( sc4_200_5ra ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1127,7 +1125,7 @@ MACHINE_CONFIG_START( sc4_200_5ra, sc4_state ) MACHINE_CONFIG_END //5 reels, last one 200 steps, RL5 skipped -MACHINE_CONFIG_START( sc4_200_5rb, sc4_state ) +MACHINE_CONFIG_START( sc4_200_5rb ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1144,7 +1142,7 @@ MACHINE_CONFIG_START( sc4_200_5rb, sc4_state ) MACHINE_CONFIG_END //5 reels, RL5 200 steps, RL4 skipped -MACHINE_CONFIG_START( sc4_200_5rc, sc4_state ) +MACHINE_CONFIG_START( sc4_200_5rc ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1161,7 +1159,7 @@ MACHINE_CONFIG_START( sc4_200_5rc, sc4_state ) MACHINE_CONFIG_END //4 reels, last one 200 steps -MACHINE_CONFIG_START( sc4_200_4r, sc4_state ) +MACHINE_CONFIG_START( sc4_200_4r ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1175,7 +1173,7 @@ MACHINE_CONFIG_START( sc4_200_4r, sc4_state ) MACHINE_CONFIG_END //4 reels, last one 200 steps, RL4 skipped -MACHINE_CONFIG_START( sc4_200_4ra, sc4_state ) +MACHINE_CONFIG_START( sc4_200_4ra ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1191,7 +1189,7 @@ MACHINE_CONFIG_END //4 reels, last one 200 steps, RL4,5 skipped -MACHINE_CONFIG_START( sc4_200_4rb, sc4_state ) +MACHINE_CONFIG_START( sc4_200_4rb ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_RM20_48STEP_ADD("reel1") @@ -1205,7 +1203,7 @@ MACHINE_CONFIG_START( sc4_200_4rb, sc4_state ) MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel6_optic_cb)) MACHINE_CONFIG_END -MACHINE_CONFIG_START( sc4_4reel_200, sc4_state ) +MACHINE_CONFIG_START( sc4_4reel_200 ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_200STEP_ADD("reel1") @@ -1218,7 +1216,7 @@ MACHINE_CONFIG_START( sc4_4reel_200, sc4_state ) MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel4_optic_cb)) MACHINE_CONFIG_END -MACHINE_CONFIG_START( sc4_3reel_200, sc4_state ) +MACHINE_CONFIG_START( sc4_3reel_200 ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_STARPOINT_200STEP_ADD("reel1") @@ -1229,7 +1227,7 @@ MACHINE_CONFIG_START( sc4_3reel_200, sc4_state ) MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel3_optic_cb)) MACHINE_CONFIG_END -MACHINE_CONFIG_START( sc4_3reel_200_48, sc4_state ) +MACHINE_CONFIG_START( sc4_3reel_200_48 ) MCFG_FRAGMENT_ADD(sc4_common) @@ -1243,7 +1241,7 @@ MACHINE_CONFIG_START( sc4_3reel_200_48, sc4_state ) MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel4_optic_cb)) MACHINE_CONFIG_END -MACHINE_CONFIG_START( sc4_no_reels, sc4_state ) +MACHINE_CONFIG_START( sc4_no_reels ) MCFG_FRAGMENT_ADD(sc4_common) MACHINE_CONFIG_END @@ -1254,7 +1252,7 @@ MACHINE_START_MEMBER(sc4_adder4_state,adder4) MACHINE_START_CALL_MEMBER(sc4); } -MACHINE_CONFIG_START( sc4_adder4, sc4_adder4_state ) +MACHINE_CONFIG_START( sc4_adder4 ) MCFG_FRAGMENT_ADD(sc4_common) MCFG_CPU_ADD("adder4", M68340, 25175000) // 68340 (CPU32 core) @@ -1263,13 +1261,13 @@ MACHINE_CONFIG_START( sc4_adder4, sc4_adder4_state ) MCFG_MACHINE_START_OVERRIDE(sc4_adder4_state, adder4 ) MACHINE_CONFIG_END -MACHINE_CONFIG_START( sc4dmd, sc4_state ) +MACHINE_CONFIG_START( sc4dmd ) MCFG_FRAGMENT_ADD(sc4_common) /* video hardware */ //MCFG_DEFAULT_LAYOUT(layout_sc4_dmd) - MCFG_DEVICE_ADD("dm01", BF_DM01, 0) - MCFG_BF_DM01_BUSY_CB(WRITELINE(sc4_state, bfmdm01_busy)) + MCFG_DEVICE_ADD("dm01", BFM_DM01, 0) + MCFG_BFM_DM01_BUSY_CB(WRITELINE(sc4_state, bfmdm01_busy)) MCFG_MACHINE_START_OVERRIDE(sc4_state, sc4 ) @@ -51444,11 +51442,11 @@ GAMEL( 200?, sc4cashg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma / /****************************************************************************************************************************************************************************************************************/ -GAMEL( 200?, ad4skill ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Skill Dice (BFM) (Scorpion 4 + Adder 4)", MACHINE_FLAGS, layout_bfm_sc4 ) -GAMEL( 200?, ad4film ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // the 68k vectors differ from usual, but it contains the expected strings for an Adder 4 title. No main program roms tho? :/ -GAMEL( 200?, ad4filma ,ad4film, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^ -GAMEL( 200?, ad4ctl ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) -GAMEL( 200?, ad4ctla ,ad4ctl, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) +GAMEL( 200?, ad4skill ,0, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Skill Dice (BFM) (Scorpion 4 + Adder 4)", MACHINE_FLAGS, layout_bfm_sc4 ) +GAMEL( 200?, ad4film ,0, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // the 68k vectors differ from usual, but it contains the expected strings for an Adder 4 title. No main program roms tho? :/ +GAMEL( 200?, ad4filma ,ad4film, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^ +GAMEL( 200?, ad4ctl ,0, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) +GAMEL( 200?, ad4ctla ,ad4ctl, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // PR1036 CLUB COP THE LOT PR1036 CLOT SOUNDS11 COP THE LOT // shows nothing on the VFD, but boots (to very little) GAMEL( 200?, sc4ctlcl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) diff --git a/src/mame/drivers/bfm_sc5.cpp b/src/mame/drivers/bfm_sc5.cpp index 6093b486c18..6d89ddaf442 100644 --- a/src/mame/drivers/bfm_sc5.cpp +++ b/src/mame/drivers/bfm_sc5.cpp @@ -209,7 +209,7 @@ WRITE8_MEMBER(bfm_sc5_state::bfm_sc5_duart_output_w) logerror("bfm_sc5_duart_output_w\n"); } -MACHINE_CONFIG_START( bfm_sc5, bfm_sc5_state ) +MACHINE_CONFIG_START( bfm_sc5 ) MCFG_CPU_ADD("maincpu", MCF5206E, 40000000) /* MCF5206eFT */ MCFG_CPU_PROGRAM_MAP(sc5_map) MCFG_MCF5206E_PERIPHERAL_ADD("maincpu_onboard") diff --git a/src/mame/drivers/bfm_swp.cpp b/src/mame/drivers/bfm_swp.cpp index da25b10fedf..c43bc51a652 100644 --- a/src/mame/drivers/bfm_swp.cpp +++ b/src/mame/drivers/bfm_swp.cpp @@ -130,7 +130,7 @@ public: protected: // devices - required_device m_maincpu; + required_device m_maincpu; virtual void machine_start() override; }; @@ -198,7 +198,7 @@ void bfm_swp_state::machine_start() } -static MACHINE_CONFIG_START( bfm_swp, bfm_swp_state ) +static MACHINE_CONFIG_START( bfm_swp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68340, 16000000) @@ -301,7 +301,7 @@ ROM_END -GAME( 199?, c3_rtime , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "Radio Times (Bellfruit) (Cobra 3)", MACHINE_IS_SKELETON ) -GAME( 199?, c3_telly , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "Telly Addicts (Bellfruit) (Cobra 3)", MACHINE_IS_SKELETON ) -GAME( 199?, c3_totp , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "Top of the Pops (Bellfruit) (Cobra 3?)", MACHINE_IS_SKELETON ) -GAME( 199?, c3_ppays , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "The Phrase That Pays (Bellfruit) (Cobra 3?)", MACHINE_IS_SKELETON ) +GAME( 199?, c3_rtime , 0 , bfm_swp, bfm_swp, bfm_swp_state, 0, ROT0, "BFM", "Radio Times (Bellfruit) (Cobra 3)", MACHINE_IS_SKELETON ) +GAME( 199?, c3_telly , 0 , bfm_swp, bfm_swp, bfm_swp_state, 0, ROT0, "BFM", "Telly Addicts (Bellfruit) (Cobra 3)", MACHINE_IS_SKELETON ) +GAME( 199?, c3_totp , 0 , bfm_swp, bfm_swp, bfm_swp_state, 0, ROT0, "BFM", "Top of the Pops (Bellfruit) (Cobra 3?)", MACHINE_IS_SKELETON ) +GAME( 199?, c3_ppays , 0 , bfm_swp, bfm_swp, bfm_swp_state, 0, ROT0, "BFM", "The Phrase That Pays (Bellfruit) (Cobra 3?)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/bfmsys83.cpp b/src/mame/drivers/bfmsys83.cpp index 507846cc83c..e6aa532b181 100644 --- a/src/mame/drivers/bfmsys83.cpp +++ b/src/mame/drivers/bfmsys83.cpp @@ -31,7 +31,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( bfmsys83, bfmsys83_state ) +static MACHINE_CONFIG_START( bfmsys83 ) MCFG_CPU_ADD("maincpu", M6802, 40000000/4) MCFG_CPU_PROGRAM_MAP(memmap) @@ -63,5 +63,5 @@ ROM_START( b83cops ) // was marked as sys85, but I think this is the sys83 set? ROM_LOAD( "cops.p4", 0x8000, 0x2000, CRC(ce573b35) SHA1(f2ba22f0d55f882dd91b37e80e4bb14effd9113a) ) ROM_END -GAME( 198?, b83catms , 0 , bfmsys83 , bfmsys83 , driver_device, 0 , 0, "BFM", "Cat & Mouse (Bellfruit) (System 83)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 198?, b83cops , 0 , bfmsys83 , bfmsys83 , driver_device, 0 , 0, "BFM", "Cops & Robbers (Bellfruit) (System 83)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 198?, b83catms , 0 , bfmsys83 , bfmsys83 , bfmsys83_state, 0 , ROT0, "BFM", "Cat & Mouse (Bellfruit) (System 83)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 198?, b83cops , 0 , bfmsys83 , bfmsys83 , bfmsys83_state, 0 , ROT0, "BFM", "Cops & Robbers (Bellfruit) (System 83)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/bfmsys85.cpp b/src/mame/drivers/bfmsys85.cpp index af8b8027c53..7933bc6866d 100644 --- a/src/mame/drivers/bfmsys85.cpp +++ b/src/mame/drivers/bfmsys85.cpp @@ -126,7 +126,7 @@ public: virtual void machine_reset() override; INTERRUPT_GEN_MEMBER(timer_irq); int b85_find_project_string( ); - optional_device m_vfd; + optional_device m_vfd; required_device m_maincpu; required_device m_reel0; required_device m_reel1; @@ -388,7 +388,7 @@ ADDRESS_MAP_END // machine driver for system85 board ////////////////////////////////////// -static MACHINE_CONFIG_START( bfmsys85, bfmsys85_state ) +static MACHINE_CONFIG_START( bfmsys85 ) MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/4) // 6809 CPU at 1 Mhz MCFG_CPU_PROGRAM_MAP(memmap) // setup read and write memorymap MCFG_CPU_PERIODIC_INT_DRIVER(bfmsys85_state, timer_irq, 1000) // generate 1000 IRQ's per second diff --git a/src/mame/drivers/bgt.cpp b/src/mame/drivers/bgt.cpp index 740c4a48621..929f1d4bdfe 100644 --- a/src/mame/drivers/bgt.cpp +++ b/src/mame/drivers/bgt.cpp @@ -44,7 +44,7 @@ static INPUT_PORTS_START( bgt ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bgt, bgt_state ) +static MACHINE_CONFIG_START( bgt ) MCFG_CPU_ADD("maincpu", V30, 12000000 ) // ? unknown CPU.. definitely x86 based tho MCFG_CPU_PROGRAM_MAP(bgt_map) MCFG_CPU_IO_MAP(bgt_io) @@ -90,7 +90,7 @@ ROM_START( bg_maxa ) ROM_END -GAME( 199?, bg_ddb, 0, bgt, bgt, driver_device, 0, ROT0, "BGT", "Ding Dong Bells (BGT)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, bg_barmy, 0, bgt, bgt, driver_device, 0, ROT0, "BGT", "Barmy Army (BGT)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, bg_max, 0, bgt, bgt, driver_device, 0, ROT0, "BGT", "Max A Million (BGT) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, bg_maxa, bg_max, bgt, bgt, driver_device, 0, ROT0, "BGT", "Max A Million (BGT) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, bg_ddb, 0, bgt, bgt, bgt_state, 0, ROT0, "BGT", "Ding Dong Bells (BGT)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, bg_barmy, 0, bgt, bgt, bgt_state, 0, ROT0, "BGT", "Barmy Army (BGT)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, bg_max, 0, bgt, bgt, bgt_state, 0, ROT0, "BGT", "Max A Million (BGT) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, bg_maxa, bg_max, bgt, bgt, bgt_state, 0, ROT0, "BGT", "Max A Million (BGT) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/big10.cpp b/src/mame/drivers/big10.cpp index 07de2867879..6b5c6bc393a 100644 --- a/src/mame/drivers/big10.cpp +++ b/src/mame/drivers/big10.cpp @@ -221,7 +221,7 @@ INPUT_PORTS_END * Machine Driver * **************************************/ -static MACHINE_CONFIG_START( big10, big10_state ) +static MACHINE_CONFIG_START( big10 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* guess */ @@ -263,5 +263,5 @@ ROM_END * Game Driver(s) * **************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 198?, big10, 0, big10, big10, driver_device, 0, ROT0, "", "Big 10", 0 ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ +GAME( 198?, big10, 0, big10, big10, big10_state, 0, ROT0, "", "Big 10", 0 ) diff --git a/src/mame/drivers/bigbord2.cpp b/src/mame/drivers/bigbord2.cpp index 796532a4ce5..8041e020862 100644 --- a/src/mame/drivers/bigbord2.cpp +++ b/src/mame/drivers/bigbord2.cpp @@ -114,7 +114,7 @@ public: DECLARE_WRITE8_MEMBER(portcc_w ); DECLARE_READ8_MEMBER(portc4_r); DECLARE_READ8_MEMBER(portd0_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE_LINE_MEMBER(clock_w); DECLARE_WRITE_LINE_MEMBER(busreq_w); DECLARE_WRITE_LINE_MEMBER(ctc_z1_w); @@ -148,7 +148,7 @@ private: required_device m_ctc2; required_device m_sio; required_device m_dma; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_beeper; @@ -189,7 +189,7 @@ READ8_MEMBER( bigbord2_state::portd0_r ) return ret; } -WRITE8_MEMBER( bigbord2_state::kbd_put ) +void bigbord2_state::kbd_put(u8 data) { if (data) { @@ -375,7 +375,7 @@ static ADDRESS_MAP_START( bigbord2_io, AS_IO, 8, bigbord2_state ) AM_RANGE(0xC8, 0xCB) AM_WRITE(portc8_w) AM_RANGE(0xCC, 0xCF) AM_WRITE(portcc_w) AM_RANGE(0xD0, 0xD3) AM_READ (portd0_r) - AM_RANGE(0xD4, 0xD7) AM_DEVREADWRITE("fdc", mb8877_t, read, write) // u10 + AM_RANGE(0xD4, 0xD7) AM_DEVREADWRITE("fdc", mb8877_device, read, write) // u10 //AM_RANGE(0xD8, 0xDB) AM_READWRITE(portd8_r, portd8_w) // various external data ports; DB = centronics printer AM_RANGE(0xDC, 0xDC) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) // u30 AM_RANGE(0xDD, 0xDD) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) @@ -579,7 +579,7 @@ MC6845_UPDATE_ROW( bigbord2_state::crtc_update_row ) #define MAIN_CLOCK XTAL_8MHz / 2 -static MACHINE_CONFIG_START( bigbord2, bigbord2_state ) +static MACHINE_CONFIG_START( bigbord2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK) MCFG_CPU_PROGRAM_MAP(bigbord2_mem) @@ -635,7 +635,7 @@ static MACHINE_CONFIG_START( bigbord2, bigbord2_state ) /* keyboard */ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(bigbord2_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(bigbord2_state, kbd_put)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -656,5 +656,5 @@ ROM_START( bigbord2 ) ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, bigbord2, bigboard, 0, bigbord2, bigbord2, bigbord2_state, bigbord2, "Digital Research Computers", "Big Board II", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, bigbord2, bigboard, 0, bigbord2, bigbord2, bigbord2_state, bigbord2, "Digital Research Computers", "Big Board II", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/bigevglf.cpp b/src/mame/drivers/bigevglf.cpp index e4346c0ba16..f0833e8eb5c 100644 --- a/src/mame/drivers/bigevglf.cpp +++ b/src/mame/drivers/bigevglf.cpp @@ -443,7 +443,7 @@ void bigevglf_state::machine_reset() } -static MACHINE_CONFIG_START( bigevglf, bigevglf_state ) +static MACHINE_CONFIG_START( bigevglf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,10000000/2) /* 5 MHz ? */ @@ -574,5 +574,5 @@ DRIVER_INIT_MEMBER(bigevglf_state,bigevglf) membank("bank1")->configure_entries(0, 0xff, &ROM[0x10000], 0x800); } -GAME( 1986, bigevglf, 0, bigevglf, bigevglf, bigevglf_state, bigevglf, ROT270, "Taito America Corporation", "Big Event Golf (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1986, bigevglfj, bigevglf, bigevglf, bigevglfj, bigevglf_state,bigevglf, ROT270, "Taito Corporation", "Big Event Golf (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, bigevglf, 0, bigevglf, bigevglf, bigevglf_state, bigevglf, ROT270, "Taito America Corporation", "Big Event Golf (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, bigevglfj, bigevglf, bigevglf, bigevglfj, bigevglf_state, bigevglf, ROT270, "Taito Corporation", "Big Event Golf (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bigstrkb.cpp b/src/mame/drivers/bigstrkb.cpp index 77790e633d2..19cda2f6eb0 100644 --- a/src/mame/drivers/bigstrkb.cpp +++ b/src/mame/drivers/bigstrkb.cpp @@ -199,7 +199,7 @@ GFXDECODE_END /* Machine Driver */ -static MACHINE_CONFIG_START( bigstrkb, bigstrkb_state ) +static MACHINE_CONFIG_START( bigstrkb ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(bigstrkb_map) @@ -222,11 +222,11 @@ static MACHINE_CONFIG_START( bigstrkb, bigstrkb_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") // MCFG_YM2151_ADD("ymsnd", ym2151_config) - MCFG_OKIM6295_ADD("oki1", 4000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 4000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) - MCFG_OKIM6295_ADD("oki2", 4000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 4000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) MACHINE_CONFIG_END @@ -297,5 +297,5 @@ ROM_END /* GAME drivers */ -GAME( 1992, bigstrkb, bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, bigstrkba,bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg w/Italian teams)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, bigstrkb, bigstrik, bigstrkb, bigstrkb, bigstrkb_state, 0, ROT0, "bootleg", "Big Striker (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, bigstrkba,bigstrik, bigstrkb, bigstrkb, bigstrkb_state, 0, ROT0, "bootleg", "Big Striker (bootleg w/Italian teams)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/binbug.cpp b/src/mame/drivers/binbug.cpp index ddf5fbace5f..0641116823a 100644 --- a/src/mame/drivers/binbug.cpp +++ b/src/mame/drivers/binbug.cpp @@ -53,8 +53,12 @@ #include "emu.h" #include "bus/rs232/keyboard.h" #include "cpu/s2650/s2650.h" +#include "cpu/z80/z80daisy.h" +#include "cpu/z80/z80.h" #include "imagedev/cassette.h" #include "imagedev/snapquik.h" +#include "machine/z80ctc.h" +#include "machine/z80pio.h" #include "sound/wave.h" #include "screen.h" #include "speaker.h" @@ -289,7 +293,7 @@ static DEVICE_INPUT_DEFAULTS_START( keyboard ) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( binbug, binbug_state ) +static MACHINE_CONFIG_START( binbug ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(binbug_mem) @@ -335,8 +339,8 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, binbug, pipbug, 0, binbug, binbug, driver_device, 0, "MicroByte", "BINBUG 3.6", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1980, binbug, pipbug, 0, binbug, binbug, binbug_state, 0, "MicroByte", "BINBUG 3.6", 0 ) @@ -399,12 +403,6 @@ ToDo: */ -#include "cpu/z80/z80.h" -#include "machine/z80ctc.h" -#include "machine/z80pio.h" -#include "cpu/z80/z80daisy.h" - - class dg680_state : public binbug_state { public: @@ -419,7 +417,7 @@ public: DECLARE_WRITE8_MEMBER(portb_w); DECLARE_READ8_MEMBER(port08_r); DECLARE_WRITE8_MEMBER(port08_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); TIMER_DEVICE_CALLBACK_MEMBER(time_tick); TIMER_DEVICE_CALLBACK_MEMBER(uart_tick); @@ -470,7 +468,7 @@ static const z80_daisy_config dg680_daisy_chain[] = static INPUT_PORTS_START( dg680 ) INPUT_PORTS_END -WRITE8_MEMBER( dg680_state::kbd_put ) +void dg680_state::kbd_put(u8 data) { m_term_data = data; /* strobe in keyboard data */ @@ -526,7 +524,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(dg680_state::uart_tick) m_ctc->trg3(0); } -static MACHINE_CONFIG_START( dg680, dg680_state ) +static MACHINE_CONFIG_START( dg680 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_8MHz / 4) MCFG_CPU_PROGRAM_MAP(dg680_mem) @@ -547,7 +545,7 @@ static MACHINE_CONFIG_START( dg680, dg680_state ) /* Keyboard */ MCFG_DEVICE_ADD("keyb", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(dg680_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(dg680_state, kbd_put)) /* Cassette */ MCFG_CASSETTE_ADD( "cassette" ) @@ -586,5 +584,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, dg680, 0, 0, dg680, dg680, driver_device, 0, "David Griffiths", "DG680 with DGOS-Z80 1.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1980, dg680, 0, 0, dg680, dg680, dg680_state, 0, "David Griffiths", "DG680 with DGOS-Z80 1.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/bingo.cpp b/src/mame/drivers/bingo.cpp index 70abc8bba7d..742220ae428 100644 --- a/src/mame/drivers/bingo.cpp +++ b/src/mame/drivers/bingo.cpp @@ -43,7 +43,7 @@ DRIVER_INIT_MEMBER(bingo_state,bingo) { } -static MACHINE_CONFIG_START( bingo, bingo_state ) +static MACHINE_CONFIG_START( bingo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 1000000) MCFG_CPU_PROGRAM_MAP(bingo_map) @@ -83,7 +83,7 @@ DRIVER_INIT_MEMBER(seeben_state,seeben) { } -static MACHINE_CONFIG_START( seeben, seeben_state ) +static MACHINE_CONFIG_START( seeben ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, 1000000) MCFG_CPU_PROGRAM_MAP(seeben_map) @@ -125,7 +125,7 @@ DRIVER_INIT_MEMBER(splin_state,splin) { } -static MACHINE_CONFIG_START( splin, splin_state ) +static MACHINE_CONFIG_START( splin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80186, 16000000) MCFG_CPU_PROGRAM_MAP(splin_map) @@ -307,28 +307,28 @@ ROM_START(tripjok) ROM_END -GAME(1980, cntinntl, 0, bingo, bingo, bingo_state, bingo, ROT0, "Bally", "Continental (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1980, cntinntl2, cntinntl, bingo, bingo, bingo_state, bingo, ROT0, "Bally", "Continental (Bingo, alternate version)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, goldgame, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, goldgkitb, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Kit Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, goldgstake, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, goldgnew, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Bingo New (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, goldgkit1, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Kit 1 Generation (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, michigan, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, michkit1, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo Kit 1 Generation (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, michkitb, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Kit Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, michstake, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, michnew, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo New (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, montana, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Montana Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, topgame, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Top Game Laser L10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, topgamet, topgame, splin, splin, splin_state, splin, ROT0, "Splin", "Top Game Turbo (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, penalty, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Penalty (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, brooklyn, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Brooklyn (set 1) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, brooklyna, brooklyn, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Brooklyn (set 2) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, newdixie, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "New Dixieland (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, superdix, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Super Dixieland (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, cntine31, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Continental 3 in 1 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, domino2, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Domino II (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, tripjok, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Triple Joker (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, ggate, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Golden Gate (set 1) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, ggatea, ggate, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Golden Gate (set 2) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, cntinntl, 0, bingo, bingo, bingo_state, bingo, ROT0, "Bally", "Continental (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, cntinntl2, cntinntl, bingo, bingo, bingo_state, bingo, ROT0, "Bally", "Continental (Bingo, alternate version)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, goldgame, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, goldgkitb, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Kit Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, goldgstake, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, goldgnew, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Bingo New (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, goldgkit1, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Kit 1 Generation (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, michigan, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, michkit1, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo Kit 1 Generation (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, michkitb, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Kit Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, michstake, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, michnew, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo New (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, montana, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Montana Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, topgame, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Top Game Laser L10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, topgamet, topgame, splin, splin, splin_state, splin, ROT0, "Splin", "Top Game Turbo (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, penalty, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Penalty (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, brooklyn, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Brooklyn (set 1) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, brooklyna, brooklyn, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Brooklyn (set 2) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, newdixie, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "New Dixieland (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, superdix, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Super Dixieland (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, cntine31, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Continental 3 in 1 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, domino2, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Domino II (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, tripjok, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Triple Joker (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, ggate, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Golden Gate (set 1) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, ggatea, ggate, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Golden Gate (set 2) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/bingoc.cpp b/src/mame/drivers/bingoc.cpp index aeb1fbc789c..b60f2a5661d 100644 --- a/src/mame/drivers/bingoc.cpp +++ b/src/mame/drivers/bingoc.cpp @@ -33,6 +33,7 @@ SOUND : YM2151 uPD7759C #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "machine/gen_latch.h" +#include "machine/i8251.h" #include "sound/ym2151.h" #include "sound/upd7759.h" #include "screen.h" @@ -121,8 +122,23 @@ WRITE8_MEMBER(bingoc_state::sound_play_w) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, bingoc_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10007f) AM_READ(unknown_r) //comms? lamps? - AM_RANGE(0x180000, 0x18007f) AM_READ(unknown_r) //comms? lamps? + AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE8("uart1", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("uart1", i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0x100008, 0x100009) AM_DEVREADWRITE8("uart2", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x10000a, 0x10000b) AM_DEVREADWRITE8("uart2", i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0x100010, 0x100011) AM_DEVREADWRITE8("uart3", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x100012, 0x100013) AM_DEVREADWRITE8("uart3", i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("uart4", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x10001a, 0x10001b) AM_DEVREADWRITE8("uart4", i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0x100020, 0x100021) AM_DEVREADWRITE8("uart5", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x100022, 0x100023) AM_DEVREADWRITE8("uart5", i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0x100028, 0x100029) AM_DEVREADWRITE8("uart6", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x10002a, 0x10002b) AM_DEVREADWRITE8("uart6", i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0x100030, 0x100031) AM_DEVREADWRITE8("uart7", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x100032, 0x100033) AM_DEVREADWRITE8("uart7", i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0x100038, 0x100039) AM_DEVREADWRITE8("uart8", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x10003a, 0x10003b) AM_DEVREADWRITE8("uart8", i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0x180000, 0x18007f) AM_READ(unknown_r) //lamps? #if !SOUND_TEST AM_RANGE(0x180010, 0x180011) AM_WRITE(main_sound_latch_w) //WRONG there... #endif @@ -151,7 +167,7 @@ static INPUT_PORTS_START( bingoc ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bingoc, bingoc_state ) +static MACHINE_CONFIG_START( bingoc ) MCFG_CPU_ADD("maincpu", M68000,8000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(main_map) @@ -164,6 +180,15 @@ static MACHINE_CONFIG_START( bingoc, bingoc_state ) MCFG_CPU_VBLANK_INT_DRIVER("screen", bingoc_state, nmi_line_pulse) #endif + MCFG_DEVICE_ADD("uart1", I8251, 4000000) // unknown + MCFG_DEVICE_ADD("uart2", I8251, 4000000) // unknown + MCFG_DEVICE_ADD("uart3", I8251, 4000000) // unknown + MCFG_DEVICE_ADD("uart4", I8251, 4000000) // unknown + MCFG_DEVICE_ADD("uart5", I8251, 4000000) // unknown + MCFG_DEVICE_ADD("uart6", I8251, 4000000) // unknown + MCFG_DEVICE_ADD("uart7", I8251, 4000000) // unknown + MCFG_DEVICE_ADD("uart8", I8251, 4000000) // unknown + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -206,4 +231,4 @@ ROM_START( bingoc ) ROM_COPY( "upd", 0x20000, 0x00000, 0x20000 ) ROM_END -GAME( 1989, bingoc, 0, bingoc, bingoc, driver_device, 0, ROT0, "Sega", "Bingo Circus (Rev. A 891001)", MACHINE_NOT_WORKING ) +GAME( 1989, bingoc, 0, bingoc, bingoc, bingoc_state, 0, ROT0, "Sega", "Bingo Circus (Rev. A 891001)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/bingoman.cpp b/src/mame/drivers/bingoman.cpp index 2bfae7e4c33..11b5210af83 100644 --- a/src/mame/drivers/bingoman.cpp +++ b/src/mame/drivers/bingoman.cpp @@ -371,7 +371,7 @@ PALETTE_INIT_MEMBER(bingoman_state, bingoman) { } -static MACHINE_CONFIG_START( bingoman, bingoman_state ) +static MACHINE_CONFIG_START( bingoman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83002, XTAL_20MHz) /* TODO: correct CPU type */ @@ -465,5 +465,5 @@ ROM_END ***************************************************************************/ /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1993, bingoman, 0, bingoman, bingoman, driver_device, 0, ROT0, "HP Automaten", "Bingo Mania (P03-P07-P14)", MACHINE_IS_SKELETON ) -GAME( 1993, bingomana, bingoman, bingoman, bingoman, driver_device, 0, ROT0, "HP Automaten", "Bingo Mania (A03)", MACHINE_IS_SKELETON ) +GAME( 1993, bingoman, 0, bingoman, bingoman, bingoman_state, 0, ROT0, "HP Automaten", "Bingo Mania (P03-P07-P14)", MACHINE_IS_SKELETON ) +GAME( 1993, bingomana, bingoman, bingoman, bingoman, bingoman_state, 0, ROT0, "HP Automaten", "Bingo Mania (A03)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/bingor.cpp b/src/mame/drivers/bingor.cpp index 9dad543d4c6..25fc67db29c 100644 --- a/src/mame/drivers/bingor.cpp +++ b/src/mame/drivers/bingor.cpp @@ -437,11 +437,81 @@ M = ULN2003A / WB91K9409 / PHIL +************************************************************************ + + PCB Layout (VIP2000): + + +---------------------------------------------------------------------------------+ + | +--------+ | + | |74HCT32N| BATTERY | + | +----+ +----+ +--------+ 3.6V 80mAh| + | |HY62| |VIP | +-+ | + | +-+ +-+ +-+ |256B| |BIOS| +-----+ +-+ +-+ |D| | + | +-+ +-+ | | | | | | | | |8 H | |AT49F| | | |E| +-+ +---+ + +--+ | | | | | | | | | | | | | | |4096-| | | |M| +-+ +-+ | +-+ + |-- |K| |A| |B| |C| |C| | | | | |12RC | |C| |P| | | | | |RS232| + |-- | | | | | | | | | | | | |M272| | | | | |T| |I| |L| | | + |-- | | | | | | | | | | | | |56 | | | | | |Y| | | | | | +-+ + |-- +-+ +-+ +-+ +-+ +-+ +----+ +----+ +-----+ +-+ +-+ +-+ +-+ +---+ + |-- | + |--2 +-+ +-+ +-+ +----+ +----+ +-+ +-+ +-+ +----+ +-+ +----+ +----+| + |--2 +-+ +-+ | | | | | | |HY62| |VIP | | | | | | | | | | | |HY62| |SLAV|| + |--P | | | | | | | | | | |256B| |BIOS| | | | | |M| |P80C| | | |256B| |E || + |--I |K| |A| |B| |C| |C| | | |8 H | |C| |C| | | |31BH| |C| | | |19.0|| + |--N | | | | | | | | | | | | | | | | | | +-+ |I | | | | | |9.01|| + |-- | | | | | | | | | | | | | | | | | | +-+ | | | | | | | || + |--C +-+ +-+ +-+ +-+ +-+ | | |M272| +-+ +-+ | | | | +-+ | | |2725|| + |--O | | |56 | |N| | | | | |6 || + |--N +-+ +-+ +----+ +----+ | | | | +----+ +----+| + |--N |:| +-+ | | +-+ +-+ | | | + |--E |:| | | | | | | X | | | + |--C |:| |A| |B| |H| T | | | + |--T |:| | | | | | | +----------+ +----------+ A | | | + |--O |:| | | | | | | | MHS E | X |N80C186-12| L +----+ +-+ | + |--R |:| +-+ +-+ +-+ | S 82716-4| T |0037CXC BR| 3 | | +-+ +-+ | + |-- |:| | | A | | |G| |:| |:| | + |-- |:| +-+ | 8941 | L |(c) AMD |X +-+ +-+ | | |:| |:| | + +--+ +-+ | | | | 1 | |T |E| |F| | | +-+ +-+ | + | +-+ |I| | | | |A +-+ +-+ +-+ | + | |J| | | +----------+ +----------+L +-+ +--+ | + | +-+ +-+ 2 +-+ +-+ +-+ |:| |::| | + | +----------+ | | | | | | |:| |::| | + | |HYB514175B| |O| |O| |K| |:| |::| | + | |J-60 | | | | | | | |:| +--+ | + | +----------+ VIP 2000 +-+ +-+ +-+ +-+ | + | (c)PALOMA-ELEKTRONIK | + +---------------------------------------------------------------------------------+ + + XTAL1: 10.0000M + XTAL2: R240VB40 + XTAL3: 11.0592M + + A: 898-3-R10K / 0035 + B: 74HCT540N + C: 74HCT573N + D: ADM690 + E: 24C04A + F: EMPTY SOCKET + G: HEF40106BP + H: YMZ284 + I: 74HCT00N + J: EMI14AB LM 386N-4 + K: ULN2003JN + L: MAX232N + M: 74HCT32N + N: 74HCT02N + O: PIC16F627-04 (protected) + + ************************************************************************/ #include "emu.h" #include "cpu/i86/i186.h" +#include "cpu/mcs51/mcs51.h" #include "cpu/pic16c5x/pic16c5x.h" +#include "machine/intelfsh.h" +#include "machine/msm6242.h" +#include "sound/ay8910.h" #include "sound/saa1099.h" #include "screen.h" #include "speaker.h" @@ -454,6 +524,7 @@ public: : driver_device(mconfig, type, tag), m_blit_ram(*this, "blit_ram"), m_maincpu(*this, "maincpu"), + m_slavecpu(*this, "slavecpu"), m_palette(*this, "palette") { } required_shared_ptr m_blit_ram; @@ -462,7 +533,16 @@ public: INTERRUPT_GEN_MEMBER(vblank_irq); INTERRUPT_GEN_MEMBER(unk_irq); required_device m_maincpu; + optional_device m_slavecpu; required_device m_palette; + + DECLARE_WRITE8_MEMBER(toslave_w); + DECLARE_READ8_MEMBER(toslave_r); + DECLARE_WRITE8_MEMBER(fromslave_w); + DECLARE_READ8_MEMBER(fromslave_r); + DECLARE_WRITE16_MEMBER(vip2000_outputs_w); + u8 m_toslave; + u8 m_fromslave; }; @@ -606,7 +686,7 @@ static GFXDECODE_START( bingor ) GFXDECODE_END -static MACHINE_CONFIG_START( bingor, bingor_state ) +static MACHINE_CONFIG_START( bingor ) MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(bingor_map) MCFG_CPU_IO_MAP(bingor_io) @@ -634,6 +714,90 @@ static MACHINE_CONFIG_START( bingor, bingor_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END + +static ADDRESS_MAP_START( vip2000_map, AS_PROGRAM, 16, bingor_state ) + AM_RANGE(0x00000, 0x0ffff) AM_RAM + AM_RANGE(0x40300, 0x4031f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") //wrong + AM_RANGE(0x40000, 0x4ffff) AM_RAM AM_SHARE("blit_ram") + //AM_RANGE(0x50000, 0x5ffff) AM_ROM AM_REGION("gfx", 0) + AM_RANGE(0x60000, 0x60003) AM_DEVWRITE8("ymz", ymz284_device, address_data_w, 0x00ff) + AM_RANGE(0x80000, 0xbffff) AM_DEVREADWRITE("flash", intelfsh16_device, read, write) + AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( vip2000_io, AS_IO, 16, bingor_state ) + AM_RANGE(0x0000, 0x0001) AM_READNOP // watchdog + AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) + AM_RANGE(0x0100, 0x0101) AM_READWRITE8(fromslave_r, toslave_w, 0x00ff) + AM_RANGE(0x0280, 0x0281) AM_WRITE(vip2000_outputs_w) +ADDRESS_MAP_END + +WRITE8_MEMBER(bingor_state::toslave_w) +{ + m_toslave = data; +} + +READ8_MEMBER(bingor_state::toslave_r) +{ + return m_toslave; +} + +WRITE8_MEMBER(bingor_state::fromslave_w) +{ + m_fromslave = data; +} + +READ8_MEMBER(bingor_state::fromslave_r) +{ + return m_fromslave; +} + +WRITE16_MEMBER(bingor_state::vip2000_outputs_w) +{ + m_slavecpu->set_input_line(MCS51_INT0_LINE, BIT(data, 15) ? CLEAR_LINE : ASSERT_LINE); +} + +static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8, bingor_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( slave_io, AS_IO, 8, bingor_state) + AM_RANGE(0x0000, 0x0000) AM_READWRITE(toslave_r, fromslave_w) + AM_RANGE(0xc000, 0xcfff) AM_RAM +ADDRESS_MAP_END + +static MACHINE_CONFIG_START( vip2000 ) + MCFG_CPU_ADD("maincpu", I80186, XTAL_10MHz) + MCFG_CPU_PROGRAM_MAP(vip2000_map) + MCFG_CPU_IO_MAP(vip2000_io) + //MCFG_CPU_VBLANK_INT_DRIVER("screen", bingor_state, vblank_irq) + MCFG_CPU_PERIODIC_INT_DRIVER(bingor_state, nmi_line_pulse, 30) + //MCFG_CPU_PERIODIC_INT_DRIVER(bingor_state, unk_irq, 30) + + MCFG_ATMEL_49F4096_ADD("flash") + + MCFG_CPU_ADD("slavecpu", I80C31, XTAL_11_0592MHz) + MCFG_CPU_PROGRAM_MAP(slave_map) + MCFG_CPU_IO_MAP(slave_io) + + MCFG_DEVICE_ADD("rtc", MSM6242, XTAL_32_768kHz) + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(400, 300) + MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1) + MCFG_SCREEN_UPDATE_DRIVER(bingor_state, screen_update_bingor) + + MCFG_PALETTE_ADD("palette", 0x100) + MCFG_PALETTE_FORMAT(RRRRGGGGBBBBIIII) + + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("ymz", YMZ284, 3000000 ) // unknown clock + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) +MACHINE_CONFIG_END + // I doubt we need to load the eeproms ROM_START( bingor1 ) @@ -727,9 +891,33 @@ ROM_START( bingor5 ) /* BellStar V3 */ ROM_END +ROM_START( vip2000 ) + ROM_REGION( 0x20000, "boot_prg", ROMREGION_ERASE00 ) + ROM_LOAD16_BYTE( "VIPBIOS8L.bin", 0x010000, 0x08000, CRC(a4c2b351) SHA1(bb718584bfe32b9ed27fadfd89b4094d4bbd6d7f) ) + ROM_LOAD16_BYTE( "VIPBIOS8H.bin", 0x010001, 0x08000, CRC(7c42c5ee) SHA1(c419a834ddb245363bacfe70d31cff7c2d4a2d03) ) + + ROM_REGION16_BE( 0x80000, "flash", ROMREGION_ERASE00 ) + ROM_LOAD( "AT49F4096.bin", 0x00000, 0x80000, CRC(1d0fd3cf) SHA1(0ad76ea7efa31049a73cc336130cb5ca15480edd) ) + + ROM_REGION( 0x08000, "slavecpu", 0 ) + ROM_LOAD( "SLAVE190991.bin", 0x0000, 0x8000, CRC(67feb297) SHA1(442b62e62b614bda2d277e4b827cb89677d6fbce) ) + + ROM_REGION( 0x00800, "pic1", 0 ) + ROM_LOAD( "PIC16F627_A.bin", 0x000, 0x800, NO_DUMP ) + + ROM_REGION( 0x00800, "pic2", 0 ) + ROM_LOAD( "PIC16F627_B.bin", 0x000, 0x800, NO_DUMP ) + + ROM_REGION( 0x20000, "eeprom", 0 ) + ROM_LOAD( "24C04A.bin", 0x000, 0x200, CRC(4e231420) SHA1(24dcfc90ef9903692030be7de0f04fc9370021fd) ) +ROM_END + + + +GAME( 2002, bingor1, 0, bingor, bingor, bingor_state, 0, ROT0, "", "Bingo Roll / Bell Star? (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2002, bingor2, 0, bingor, bingor, bingor_state, 0, ROT0, "", "Bingo Roll / Bell Star? (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2002, bingor3, 0, bingor, bingor, bingor_state, 0, ROT0, "", "Bingo Roll / Bell Star? (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2002, bingor4, 0, bingor, bingor, bingor_state, 0, ROT0, "", "Bingo Roll / Bell Star? (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2002, bingor5, 0, bingor, bingor, bingor_state, 0, ROT0, "", "Bingo Roll / Bell Star V3? (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2002, bingor1, 0, bingor, bingor, driver_device, 0, ROT0, "", "Bingo Roll / Bell Star? (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2002, bingor2, 0, bingor, bingor, driver_device, 0, ROT0, "", "Bingo Roll / Bell Star? (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2002, bingor3, 0, bingor, bingor, driver_device, 0, ROT0, "", "Bingo Roll / Bell Star? (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2002, bingor4, 0, bingor, bingor, driver_device, 0, ROT0, "", "Bingo Roll / Bell Star? (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2002, bingor5, 0, bingor, bingor, driver_device, 0, ROT0, "", "Bingo Roll / Bell Star V3? (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2001, vip2000, 0, vip2000, bingor, bingor_state, 0, ROT0, "Paloma-Elektronik?", "Unknown 'VIP 2000' game", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp index a455ffcf57f..c856dd476fe 100644 --- a/src/mame/drivers/bionicc.cpp +++ b/src/mame/drivers/bionicc.cpp @@ -64,7 +64,7 @@ 0xFFFFFD (player 2) 0xFFFFFF (player 1) - This is probably done by the Intel C8751H MCU on the board (whose interal ROM + This is probably done by the Intel C8751H MCU on the board (whose internal ROM is not yet available). The MCU also takes care of the commands for the sound CPU, which are stored @@ -108,7 +108,7 @@ READ16_MEMBER(bionicc_state::hacked_controls_r) return m_inp[offset]; } -WRITE16_MEMBER(bionicc_state::bionicc_mpu_trigger_w) +WRITE16_MEMBER(bionicc_state::mpu_trigger_w) { data = ioport("SYSTEM")->read() >> 12; m_inp[0] = data ^ 0x0f; @@ -144,7 +144,7 @@ READ16_MEMBER(bionicc_state::hacked_soundcommand_r) ********************************************************************/ -TIMER_DEVICE_CALLBACK_MEMBER(bionicc_state::bionicc_scanline) +TIMER_DEVICE_CALLBACK_MEMBER(bionicc_state::scanline) { int scanline = param; @@ -167,14 +167,14 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, bionicc_state ) AM_RANGE(0xfe0000, 0xfe07ff) AM_RAM /* RAM? */ AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xfe0d00, 0xfe3fff) AM_RAM /* RAM? */ - AM_RANGE(0xfe4000, 0xfe4001) AM_WRITE(bionicc_gfxctrl_w) /* + coin counters */ + AM_RANGE(0xfe4000, 0xfe4001) AM_WRITE(gfxctrl_w) /* + coin counters */ AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("SYSTEM") AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("DSW") - AM_RANGE(0xfe8010, 0xfe8017) AM_WRITE(bionicc_scroll_w) - AM_RANGE(0xfe801a, 0xfe801b) AM_WRITE(bionicc_mpu_trigger_w) /* ??? not sure, but looks like it */ - AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(bionicc_txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(bionicc_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(bionicc_bgvideoram_w) AM_SHARE("bgvideoram") + AM_RANGE(0xfe8010, 0xfe8017) AM_WRITE(scroll_w) + AM_RANGE(0xfe801a, 0xfe801b) AM_WRITE(mpu_trigger_w) /* ??? not sure, but looks like it */ + AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") + AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") + AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0xffc000, 0xfffff7) AM_RAM /* working RAM */ AM_RANGE(0xfffff8, 0xfffff9) AM_READWRITE(hacked_soundcommand_r, hacked_soundcommand_w) /* hack */ @@ -368,12 +368,12 @@ void bionicc_state::machine_reset() m_soundcommand = 0; } -static MACHINE_CONFIG_START( bionicc, bionicc_state ) +static MACHINE_CONFIG_START( bionicc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) /* 12 MHz - verified in schematics */ MCFG_CPU_PROGRAM_MAP(main_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bionicc_state, bionicc_scanline, "screen", 0, 1) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bionicc_state, scanline, "screen", 0, 1) /* Protection MCU Intel C8751H-88 runs at 24MHz / 4 = 6MHz */ @@ -390,8 +390,8 @@ static MACHINE_CONFIG_START( bionicc, bionicc_state ) MCFG_SCREEN_ADD("screen", RASTER) /* FIXME: should be 257 visible horizontal pixels, first visible pixel should be repeated, back porch/front porch should be separated */ MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz / 4, 386, 0, 256, 260, 0, 224) - MCFG_SCREEN_UPDATE_DRIVER(bionicc_state, screen_update_bionicc) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_UPDATE_DRIVER(bionicc_state, screen_update) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", bionicc) @@ -637,6 +637,49 @@ ROM_START( bioniccbl ) ROM_LOAD( "63s141.18f", 0x0000, 0x0100, CRC(b58d0023) SHA1(e8a4a2e2951bf73b3d9eed6957e9ee1e61c9c58a) ) /* priority (not used), Labeled "TSB" */ ROM_END +ROM_START( bioniccbl2 ) // only the 4 maincpu ROMs differ, they came from an original, not working, Capcom board, but the title screen is Bionic Commandos like a bootleg? The other ROMs match topsecrt + ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "tsu_02.1a", 0x00000, 0x10000, CRC(c03d3424) SHA1(1d47185e10813c2792bda31c7dfbb40e88fd46ee) ) //sldc + ROM_LOAD16_BYTE( "tsu_04.1b", 0x00001, 0x10000, CRC(9f13eb9d) SHA1(b9c8cfc22a1d2adcc6a93e3e382b2126446c05aa) ) //sldc + ROM_LOAD16_BYTE( "3", 0x20000, 0x10000, CRC(a909ec2c) SHA1(7979480b5d82704f7d15546bda6af78316505f85) ) // the only ROM without an original sticker + ROM_LOAD16_BYTE( "tsu_05.1d", 0x20001, 0x10000, CRC(4e6b75ce) SHA1(44c3900b8dc9f375a7d6ed57c4025bc35771e29c) ) //sldc + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "ts_01.4e", 0x00000, 0x8000, CRC(8ea07917) SHA1(e9ace70d89482fc3669860450a41aacacbee9083) ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */ + ROM_LOAD( "c8751h-88", 0x0000, 0x1000, NO_DUMP ) + + ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_LOAD( "ts_08.8l", 0x00000, 0x8000, CRC(96ad379e) SHA1(accd3a560b259c186bc28cdc004ed8de0b12f9d5) ) /* VIDEORAM (text layer) tiles */ + + ROM_REGION( 0x10000, "gfx2", 0 ) + ROM_LOAD( "ts_07.5l", 0x00000, 0x8000, CRC(25cdf8b2) SHA1(316f6acc46878682dabeab12722e6a64504d23bd) ) /* SCROLL2 Layer Tiles */ + ROM_LOAD( "ts_06.4l", 0x08000, 0x8000, CRC(314fb12d) SHA1(dab0519a49b64fe7a837b3c6383f6147e1ab6ffd) ) + + ROM_REGION( 0x40000, "gfx3", 0 ) + ROM_LOAD( "ts_12.17f", 0x00000, 0x8000, CRC(e4b4619e) SHA1(3bec8399ffb28fd50ce6ae88d90b091eadf8bda1) ) /* SCROLL1 Layer Tiles */ + ROM_LOAD( "ts_11.15f", 0x08000, 0x8000, CRC(ab30237a) SHA1(ea6c07df992ba48f9eca7daa4ea775faa94358d2) ) + ROM_LOAD( "ts_17.17g", 0x10000, 0x8000, CRC(deb657e4) SHA1(b36b468f9bbb7a4937286230d3f6caa14c61d4dd) ) + ROM_LOAD( "ts_16.15g", 0x18000, 0x8000, CRC(d363b5f9) SHA1(1dd3991d99db2d6bcbdb12879ba50a01fef95004) ) + ROM_LOAD( "ts_13.18f", 0x20000, 0x8000, CRC(a8f5a004) SHA1(36ab0cb8ec9ce0519876f7461ccc5020c9c5b597) ) + ROM_LOAD( "ts_18.18g", 0x28000, 0x8000, CRC(3b36948c) SHA1(d85fcc0265ba1729c587b046cc5a7ba6f25363dd) ) + ROM_LOAD( "ts_23.18j", 0x30000, 0x8000, CRC(bbfbe58a) SHA1(9b1d5672b6f3c5c0952f8dcd0da71acc68a97a5e) ) + ROM_LOAD( "ts_24.18k", 0x38000, 0x8000, CRC(f156e564) SHA1(a6cad05bcc6d9ded6294f9b5aa856d05641aed02) ) + + ROM_REGION( 0x40000, "gfx4", 0 ) + ROM_LOAD( "tse_10.13f", 0x00000, 0x8000, CRC(d28eeacc) SHA1(8b4a655a48da276b07f3464c65743b13cec52bcb) ) /* Sprites */ + ROM_LOAD( "tsu_09.11f", 0x08000, 0x8000, CRC(6a049292) SHA1(525c862061f426d679b539b6926af4c9f14b47b5) ) + ROM_LOAD( "tse_15.13g", 0x10000, 0x8000, CRC(9b5593c0) SHA1(73c0acbb01fe69c2bd29dea11b6a223c8efb54a0) ) + ROM_LOAD( "tsu_14.11g", 0x18000, 0x8000, CRC(46b2ad83) SHA1(21ebd5691a544323fdfcf330b9a37bbe0428e3e3) ) + ROM_LOAD( "tse_20.13j", 0x20000, 0x8000, CRC(b03db778) SHA1(f72a93e73196c800c1893fd3b523394d702547dd) ) + ROM_LOAD( "tsu_19.11j", 0x28000, 0x8000, CRC(b5c82722) SHA1(969f9159f7d59e4e4c9ef9ddbdc27cbfa531eabf) ) + ROM_LOAD( "tse_22.17j", 0x30000, 0x8000, CRC(d4dedeb3) SHA1(e121057bb541f3f5c755963ca22832c3fe2637c0) ) + ROM_LOAD( "tsu_21.15j", 0x38000, 0x8000, CRC(98777006) SHA1(bcc2058b639e9b71d16af05f63df298bcce91fdc) ) + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "63s141.18f", 0x0000, 0x0100, CRC(b58d0023) SHA1(e8a4a2e2951bf73b3d9eed6957e9ee1e61c9c58a) ) /* priority (not used), Labeled "TSB" */ +ROM_END /************************************* @@ -645,10 +688,11 @@ ROM_END * *************************************/ -GAME( 1987, bionicc, 0, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Bionic Commando (Euro)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, bionicc1, bionicc, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Bionic Commando (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, bionicc2, bionicc, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Bionic Commando (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, topsecrt, bionicc, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Top Secret (Japan, old revision)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, bioniccbl,bionicc, bionicc, bionicc, driver_device, 0, ROT0, "bootleg", "Bionic Commandos (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, bionicc, 0, bionicc, bionicc, bionicc_state, 0, ROT0, "Capcom", "Bionic Commando (Euro)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, bionicc1, bionicc, bionicc, bionicc, bionicc_state, 0, ROT0, "Capcom", "Bionic Commando (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, bionicc2, bionicc, bionicc, bionicc, bionicc_state, 0, ROT0, "Capcom", "Bionic Commando (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, topsecrt, bionicc, bionicc, bionicc, bionicc_state, 0, ROT0, "Capcom", "Top Secret (Japan, old revision)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, bioniccbl, bionicc, bionicc, bionicc, bionicc_state, 0, ROT0, "bootleg", "Bionic Commandos (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, bioniccbl2,bionicc, bionicc, bionicc, bionicc_state, 0, ROT0, "bootleg", "Bionic Commandos (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // there's also an undumped JP new revision on which there are no extra lives after 1 million points, plus other bug-fixes / changes diff --git a/src/mame/drivers/bishi.cpp b/src/mame/drivers/bishi.cpp index d309852008a..dd8cffbb047 100644 --- a/src/mame/drivers/bishi.cpp +++ b/src/mame/drivers/bishi.cpp @@ -374,7 +374,7 @@ void bishi_state::machine_reset() m_cur_control2 = 0; } -static MACHINE_CONFIG_START( bishi, bishi_state ) +static MACHINE_CONFIG_START( bishi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) /* 12MHz (24MHz OSC / 2 ) */ @@ -502,7 +502,7 @@ ROM_START( sbishika ) ROM_LOAD( "675kaa04.8f", 0x180000, 0x080000, CRC(ebcbd813) SHA1(d67540d0ea303f09866f4a766e2d5162f05cd4ac) ) ROM_END -GAME( 1996, bishi, 0, bishi, bishi, driver_device, 0, ROT0, "Konami", "Bishi Bashi Championship Mini Game Senshuken (ver JAA, 3 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sbishi, 0, bishi, bishi2p, driver_device, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver JAA, 2 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sbishik, sbishi, bishi, bishi, driver_device, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver KAB, 3 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sbishika, sbishi, bishi, bishi, driver_device, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver KAA, 3 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, bishi, 0, bishi, bishi, bishi_state, 0, ROT0, "Konami", "Bishi Bashi Championship Mini Game Senshuken (ver JAA, 3 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sbishi, 0, bishi, bishi2p, bishi_state, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver JAA, 2 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sbishik, sbishi, bishi, bishi, bishi_state, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver KAB, 3 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sbishika, sbishi, bishi, bishi, bishi_state, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver KAA, 3 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bitgraph.cpp b/src/mame/drivers/bitgraph.cpp index 8dfa69d9907..c0358962d35 100644 --- a/src/mame/drivers/bitgraph.cpp +++ b/src/mame/drivers/bitgraph.cpp @@ -2,40 +2,40 @@ // copyright-holders:Sergey Svishchev /*************************************************************************** - BBN BitGraph -- monochrome, raster graphics (768x1024), serial terminal. - - Apparently had at least four hardware revisions, A-D, but which ROM - revisions support which hardware is unclear. A Versabus slot, and - various hardware and software options are mentioned in the docs. Best - guesses follow. - - Onboard hardware (common to all revisions) is - - 32K ROM - - 128K RAM (includes frame buffer) - - 3 serial ports, each driven by 6850 ACIA - - some kind of baud rate generator, possibly COM8016 - - sync serial port, driven by 6854 but apparently never supported by ROM - - 682x PIA - - AY-3-891x PSG - - ER2055 EAROM - - DEC VT100 keyboard interface - - Rev A has additional 4th serial port for mouse (not supported by ROM 1.25). - Rev A has 40 hz realtime clock, the rest use 1040 hz. - Rev A-C use AY-3-8912 (with one external PIO port, to connect the EAROM). - Rev D uses AY-3-8913 (no external ports; EAROM is wired to TBD). - Rev B-D have onboard 8035 to talk to parallel printer and mouse. - Rev B-D have more memory (at least up to 512K). - - ROM 1.25 doesn't support mouse, setup mode, pixel data upload and autowrap. - - Missing/incorrect emulation: - Bidirectional keyboard interface (to drive LEDs and speaker). - 8035. - EAROM. - 1.25 only -- clksync() is dummied out -- causes watchdog resets. - Selectable memory size. - Video enable/reverse video switch. + BBN BitGraph -- monochrome, raster graphics (768x1024), serial terminal. + + Apparently had at least four hardware revisions, A-D, but which ROM + revisions support which hardware is unclear. A Versabus slot, and + various hardware and software options are mentioned in the docs. Best + guesses follow. + + Onboard hardware (common to all revisions) is + - 32K ROM + - 128K RAM (includes frame buffer) + - 3 serial ports, each driven by 6850 ACIA + - some kind of baud rate generator, possibly COM8016 + - sync serial port, driven by 6854 but apparently never supported by ROM + - 682x PIA + - AY-3-891x PSG + - ER2055 EAROM + - DEC VT100 keyboard interface + + Rev A has additional 4th serial port for mouse (not supported by ROM 1.25). + Rev A has 40 hz realtime clock, the rest use 1040 hz. + Rev A-C use AY-3-8912 (with one external PIO port, to connect the EAROM). + Rev D uses AY-3-8913 (no external ports; EAROM is wired to TBD). + Rev B-D have onboard 8035 to talk to parallel printer and mouse. + Rev B-D have more memory (at least up to 512K). + + ROM 1.25 doesn't support mouse, setup mode, pixel data upload and autowrap. + + Missing/incorrect emulation: + Bidirectional keyboard interface (to drive LEDs and speaker). + 8035. + EAROM. + 1.25 only -- clksync() is dummied out -- causes watchdog resets. + Selectable memory size. + Video enable/reverse video switch. ****************************************************************************/ @@ -192,7 +192,7 @@ static ADDRESS_MAP_START(bitgraphb_mem, AS_PROGRAM, 16, bitgraph_state) AM_RANGE(0x010020, 0x010027) AM_READWRITE8(adlc_r, adlc_w, 0xff00) AM_RANGE(0x010028, 0x01002f) AM_READWRITE8(pia_r, pia_w, 0xff00) // EAROM, PSG AM_RANGE(0x010030, 0x010031) AM_WRITE(baud_write) -// AM_RANGE(0x010030, 0x010037) AM_READ8(ppu_read, 0x00ff) +// AM_RANGE(0x010030, 0x010037) AM_READ8(ppu_read, 0x00ff) AM_RANGE(0x010038, 0x01003f) AM_WRITE8(ppu_write, 0x00ff) AM_RANGE(0x380000, 0x3fffff) AM_RAM ADDRESS_MAP_END @@ -247,14 +247,14 @@ WRITE8_MEMBER(bitgraph_state::pia_pa_w) } /* - B0 O: BC1 to noisemaker. - B1 O: BDIR to noisemaker. - B2 O: Clock for EAROM. - B3 O: CS1 for EAROM. - B4 O: Enable HDLC Xmt interrupt. - B5 O: Enable HDLC Rcv interrupt. - B6 O: Clear Clock interrupt. Must write a 0 [clear interrupt], then a 1. - B7 I: EVEN field ?? + B0 O: BC1 to noisemaker. + B1 O: BDIR to noisemaker. + B2 O: Clock for EAROM. + B3 O: CS1 for EAROM. + B4 O: Enable HDLC Xmt interrupt. + B5 O: Enable HDLC Rcv interrupt. + B6 O: Clear Clock interrupt. Must write a 0 [clear interrupt], then a 1. + B7 I: EVEN field ?? */ READ8_MEMBER(bitgraph_state::pia_pb_r) { @@ -423,18 +423,15 @@ WRITE8_MEMBER(bitgraph_state::ppu_write) #ifdef UNUSED_FUNCTION static ADDRESS_MAP_START(ppu_io, AS_IO, 8, bitgraph_state) -// AM_RANGE(0x00, 0x00) AM_READ(ppu_irq) -// AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) -// AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(ppu_t0_r) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w) +// AM_RANGE(0x00, 0x00) AM_READ(ppu_irq) ADDRESS_MAP_END #endif /* - p4 O: Centronics data 3..0 - p5 O: Centronics data 7..4 - p6 O: Centronics control - p7 I: Centronics status + p4 O: Centronics data 3..0 + p5 O: Centronics data 7..4 + p6 O: Centronics control + p7 I: Centronics status */ WRITE8_MEMBER(bitgraph_state::ppu_i8243_w) { @@ -554,6 +551,8 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( bg_ppu ) MCFG_CPU_ADD(PPU_TAG, I8035, XTAL_6_9MHz) MCFG_CPU_IO_MAP(ppu_io) +// MCFG_MCS48_PORT_T0_IN_CB(READLINE(bitgraph_state, ppu_t0_r)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) MCFG_I8243_ADD("i8243", NOOP, WRITE8(bitgraph_state, ppu_i8243_w)) @@ -569,7 +568,7 @@ static MACHINE_CONFIG_FRAGMENT( bg_ppu ) MACHINE_CONFIG_END #endif -static MACHINE_CONFIG_START( bitgrpha, bitgraph_state ) +static MACHINE_CONFIG_START( bitgrpha ) MCFG_CPU_ADD(M68K_TAG, M68000, XTAL_6_9MHz) MCFG_CPU_PROGRAM_MAP(bitgrapha_mem) @@ -592,7 +591,7 @@ static MACHINE_CONFIG_START( bitgrpha, bitgraph_state ) MCFG_RAM_DEFAULT_SIZE("128K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bitgrphb, bitgraph_state ) +static MACHINE_CONFIG_START( bitgrphb ) MCFG_CPU_ADD(M68K_TAG, M68000, XTAL_6_9MHz) MCFG_CPU_PROGRAM_MAP(bitgraphb_mem) @@ -638,6 +637,6 @@ ROM_START( bitgrphb ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, bitgrpha, 0, 0, bitgrpha, bitgraph, driver_device, 0, "BBN", "BitGraph rev A", ROT90 | MACHINE_IMPERFECT_KEYBOARD) -COMP( 1982, bitgrphb, 0, 0, bitgrphb, bitgraph, driver_device, 0, "BBN", "BitGraph rev B", ROT270 | MACHINE_NOT_WORKING|MACHINE_IMPERFECT_KEYBOARD) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, bitgrpha, 0, 0, bitgrpha, bitgraph, bitgraph_state, 0, "BBN", "BitGraph rev A", ROT90 | MACHINE_IMPERFECT_KEYBOARD ) +COMP( 1982, bitgrphb, 0, 0, bitgrphb, bitgraph, bitgraph_state, 0, "BBN", "BitGraph rev B", ROT270 | MACHINE_NOT_WORKING|MACHINE_IMPERFECT_KEYBOARD ) diff --git a/src/mame/drivers/bk.cpp b/src/mame/drivers/bk.cpp index 85ad0f6387d..76db0caf56c 100644 --- a/src/mame/drivers/bk.cpp +++ b/src/mame/drivers/bk.cpp @@ -162,7 +162,7 @@ static INPUT_PORTS_START( bk0010 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bk0010, bk_state ) +static MACHINE_CONFIG_START( bk0010 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", T11, 3000000) MCFG_T11_INITIAL_MODE(0x36ff) /* initial mode word has DAL15,14,11,8 pulled low */ @@ -233,8 +233,8 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, bk0010, 0, 0, bk0010, bk0010, driver_device, 0, "Elektronika", "BK 0010", 0) -COMP( 1986, bk001001, bk0010, 0, bk0010, bk0010, driver_device, 0, "Elektronika", "BK 0010-01", 0) -COMP( 1986, bk0010fd, bk0010, 0, bk0010fd, bk0010, driver_device, 0, "Elektronika", "BK 0010 FDD", MACHINE_NOT_WORKING) -COMP( 1986, bk0011m, bk0010, 0, bk0010fd, bk0010, driver_device, 0, "Elektronika", "BK 0011M", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1985, bk0010, 0, 0, bk0010, bk0010, bk_state, 0, "Elektronika", "BK 0010", 0) +COMP( 1986, bk001001, bk0010, 0, bk0010, bk0010, bk_state, 0, "Elektronika", "BK 0010-01", 0) +COMP( 1986, bk0010fd, bk0010, 0, bk0010fd, bk0010, bk_state, 0, "Elektronika", "BK 0010 FDD", MACHINE_NOT_WORKING) +COMP( 1986, bk0011m, bk0010, 0, bk0010fd, bk0010, bk_state, 0, "Elektronika", "BK 0011M", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/bking.cpp b/src/mame/drivers/bking.cpp index 42289be2989..e8609acad97 100644 --- a/src/mame/drivers/bking.cpp +++ b/src/mame/drivers/bking.cpp @@ -396,7 +396,7 @@ MACHINE_RESET_MEMBER(bking_state,bking3) m_addr_l = 0; } -static MACHINE_CONFIG_START( bking, bking_state ) +static MACHINE_CONFIG_START( bking ) /* basic machine hardware */ MCFG_CPU_ADD("main_cpu", Z80, XTAL_12MHz/4) /* 3 MHz */ @@ -421,7 +421,7 @@ static MACHINE_CONFIG_START( bking, bking_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(bking_state, screen_update_bking) - MCFG_SCREEN_VBLANK_DRIVER(bking_state, screen_eof_bking) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(bking_state, screen_vblank_bking)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", bking) @@ -750,6 +750,6 @@ ROM_START( bking3 ) ROM_END -GAME( 1982, bking, 0, bking, bking, driver_device, 0, ROT270, "Taito Corporation", "Birdie King", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, bking2, 0, bking, bking2, driver_device, 0, ROT90, "Taito Corporation", "Birdie King 2", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, bking3, 0, bking3, bking2, driver_device, 0, ROT90, "Taito Corporation", "Birdie King 3", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bking, 0, bking, bking, bking_state, 0, ROT270, "Taito Corporation", "Birdie King", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, bking2, 0, bking, bking2, bking_state, 0, ROT90, "Taito Corporation", "Birdie King 2", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, bking3, 0, bking3, bking2, bking_state, 0, ROT90, "Taito Corporation", "Birdie King 3", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/blackt96.cpp b/src/mame/drivers/blackt96.cpp index 8ec6989d997..864c29b01e4 100644 --- a/src/mame/drivers/blackt96.cpp +++ b/src/mame/drivers/blackt96.cpp @@ -340,7 +340,7 @@ void blackt96_state::tile_callback(int &tile, int& fx, int& fy, int& region) } -static MACHINE_CONFIG_START( blackt96, blackt96_state ) +static MACHINE_CONFIG_START( blackt96 ) MCFG_CPU_ADD("maincpu", M68000, 18000000 /2) MCFG_CPU_PROGRAM_MAP(blackt96_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", blackt96_state, irq1_line_hold) @@ -373,11 +373,11 @@ static MACHINE_CONFIG_START( blackt96, blackt96_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", 8000000/8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 8000000/8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) - MCFG_OKIM6295_ADD("oki2", 8000000/8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 8000000/8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) MACHINE_CONFIG_END @@ -416,4 +416,4 @@ ROM_START( blackt96 ) ROM_CONTINUE( 0x00001, 0x08000 ) // first half is empty ROM_END -GAME( 1996, blackt96, 0, blackt96, blackt96, driver_device, 0, ROT0, "D.G.R.M.", "Black Touch '96", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1996, blackt96, 0, blackt96, blackt96, blackt96_state, 0, ROT0, "D.G.R.M.", "Black Touch '96", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/bladestl.cpp b/src/mame/drivers/bladestl.cpp index 3aa9b337a15..2f711ff6816 100644 --- a/src/mame/drivers/bladestl.cpp +++ b/src/mame/drivers/bladestl.cpp @@ -99,13 +99,13 @@ WRITE8_MEMBER(bladestl_state::bladestl_port_B_w) m_upd7759->set_bank_base(((data & 0x38) >> 3) * 0x20000); // bit 2 = SSG-C rc filter enable - m_filter3->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x04 ? CAP_N(150) : 0); /* YM2203-SSG-C */ + m_filter3->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 2200, 1000, data & 0x04 ? CAP_N(150) : 0); /* YM2203-SSG-C */ // bit 1 = SSG-B rc filter enable - m_filter2->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x02 ? CAP_N(150) : 0); /* YM2203-SSG-B */ + m_filter2->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 2200, 1000, data & 0x02 ? CAP_N(150) : 0); /* YM2203-SSG-B */ // bit 0 = SSG-A rc filter enable - m_filter1->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x01 ? CAP_N(150) : 0); /* YM2203-SSG-A */ + m_filter1->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 2200, 1000, data & 0x01 ? CAP_N(150) : 0); /* YM2203-SSG-A */ } READ8_MEMBER(bladestl_state::bladestl_speech_busy_r) @@ -299,7 +299,7 @@ void bladestl_state::machine_reset() m_last_track[i] = 0; } -static MACHINE_CONFIG_START( bladestl, bladestl_state ) +static MACHINE_CONFIG_START( bladestl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, 24000000/2) /* 24MHz/2 (?) */ @@ -443,6 +443,6 @@ ROM_END * *************************************/ -GAME( 1987, bladestl, 0, bladestl, bladestl, driver_device, 0, ROT90, "Konami", "Blades of Steel (version T)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, bladestll, bladestl, bladestl, bladestle, driver_device,0, ROT90, "Konami", "Blades of Steel (version L)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, bladestle, bladestl, bladestl, bladestle, driver_device,0, ROT90, "Konami", "Blades of Steel (version E)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, bladestl, 0, bladestl, bladestl, bladestl_state, 0, ROT90, "Konami", "Blades of Steel (version T)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, bladestll, bladestl, bladestl, bladestle, bladestl_state, 0, ROT90, "Konami", "Blades of Steel (version L)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, bladestle, bladestl, bladestl, bladestle, bladestl_state, 0, ROT90, "Konami", "Blades of Steel (version E)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/blitz.cpp b/src/mame/drivers/blitz.cpp index 8100078f6d3..71146c5b56a 100644 --- a/src/mame/drivers/blitz.cpp +++ b/src/mame/drivers/blitz.cpp @@ -702,7 +702,7 @@ GFXDECODE_END * Machine Drivers * *********************************************/ -static MACHINE_CONFIG_START( megadpkr, blitz_state ) +static MACHINE_CONFIG_START( megadpkr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, CPU_CLOCK) @@ -833,6 +833,6 @@ ROM_END * Game Drivers * *********************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1990, megadpkr, 0, megadpkr, megadpkr, driver_device, 0, ROT0, "Blitz System Inc.", "Mega Double Poker (conversion kit, set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) -GAME( 1990, megadpkrb, megadpkr, megadpkr, megadpkr, driver_device, 0, ROT0, "Blitz System Inc.", "Mega Double Poker (conversion kit, set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ +GAME( 1990, megadpkr, 0, megadpkr, megadpkr, blitz_state, 0, ROT0, "Blitz System Inc.", "Mega Double Poker (conversion kit, set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 1990, megadpkrb, megadpkr, megadpkr, megadpkr, blitz_state, 0, ROT0, "Blitz System Inc.", "Mega Double Poker (conversion kit, set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/blitz68k.cpp b/src/mame/drivers/blitz68k.cpp index 82b0d16dee7..632a5d1d812 100644 --- a/src/mame/drivers/blitz68k.cpp +++ b/src/mame/drivers/blitz68k.cpp @@ -1673,7 +1673,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, blitz68k_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( ilpag, blitz68k_state ) +static MACHINE_CONFIG_START( ilpag ) MCFG_CPU_ADD("maincpu", M68000, 11059200 ) // ? MCFG_CPU_PROGRAM_MAP(ilpag_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", blitz68k_state, irq4_line_hold) //3 & 6 used, mcu comms? @@ -1740,7 +1740,7 @@ static MACHINE_CONFIG_DERIVED( steaser, ilpag ) MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", blitz68k_state, steaser_mcu_sim, attotime::from_hz(10000)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cjffruit, blitz68k_state ) +static MACHINE_CONFIG_START( cjffruit ) MCFG_CPU_ADD("maincpu", M68000, XTAL_22_1184MHz/2) MCFG_CPU_PROGRAM_MAP(cjffruit_map) @@ -1768,7 +1768,7 @@ static MACHINE_CONFIG_START( cjffruit, blitz68k_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bankrob, blitz68k_state ) +static MACHINE_CONFIG_START( bankrob ) MCFG_CPU_ADD("maincpu", M68000, XTAL_11_0592MHz) MCFG_CPU_PROGRAM_MAP(bankrob_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", blitz68k_state, irq3_line_hold) // protection prevents correct irq frequency by crtc @@ -1800,7 +1800,7 @@ static MACHINE_CONFIG_START( bankrob, blitz68k_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bankroba, blitz68k_state ) +static MACHINE_CONFIG_START( bankroba ) MCFG_CPU_ADD("maincpu", M68000, XTAL_11_0592MHz ) MCFG_CPU_PROGRAM_MAP(bankroba_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", blitz68k_state, irq5_line_hold) // protection prevents correct irq frequency by crtc @@ -1830,7 +1830,7 @@ static MACHINE_CONFIG_START( bankroba, blitz68k_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( deucesw2, blitz68k_state ) +static MACHINE_CONFIG_START( deucesw2 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_22_1184MHz / 2) MCFG_CPU_PROGRAM_MAP(deucesw2_map) // irq 2 reads from MCUs @@ -1859,7 +1859,7 @@ static MACHINE_CONFIG_START( deucesw2, blitz68k_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dualgame, blitz68k_state ) +static MACHINE_CONFIG_START( dualgame ) MCFG_CPU_ADD("maincpu", M68000, XTAL_11_0592MHz ) MCFG_CPU_PROGRAM_MAP(dualgame_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", blitz68k_state, irq2_line_hold) // lev 2 = MCUs, lev 3 = vblank @@ -1890,7 +1890,7 @@ static MACHINE_CONFIG_START( dualgame, blitz68k_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hermit, blitz68k_state ) +static MACHINE_CONFIG_START( hermit ) MCFG_CPU_ADD("maincpu", M68000, XTAL_22_1184MHz/2 ) MCFG_CPU_PROGRAM_MAP(hermit_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", blitz68k_state, irq1_line_hold) // protection prevents correct irq frequency by crtc @@ -1919,7 +1919,7 @@ static MACHINE_CONFIG_START( hermit, blitz68k_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( maxidbl, blitz68k_state ) +static MACHINE_CONFIG_START( maxidbl ) MCFG_CPU_ADD("maincpu", M68000, XTAL_11_0592MHz) MCFG_CPU_PROGRAM_MAP(maxidbl_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", blitz68k_state, irq3_line_hold) // protection prevents correct irq frequency by crtc @@ -2869,16 +2869,16 @@ DRIVER_INIT_MEMBER(blitz68k_state,megadble) -GAME( 1992, maxidbl, 0, maxidbl, maxidbl, blitz68k_state, maxidbl, ROT0, "Blitz Systems Inc.", "Maxi Double Poker (Ver. 1.10)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS ) -GAME( 1990, megadblj, 0, maxidbl, maxidbl, blitz68k_state, megadblj, ROT0, "Blitz Systems Inc.", "Mega Double Poker Jackpot (Ver. 1.26)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // JUNE 28TH, 1993 -GAME( 1990, megadble, 0, maxidbl, maxidbl, blitz68k_state, megadble, ROT0, "Blitz Systems Inc.", "Mega Double Poker (Ver. 1.63 Espagnol)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS ) // NOVEMBER 1994 -GAME( 1993, steaser, 0, steaser, steaser, driver_device, 0, ROT0, "", "Strip Teaser (Italy, Ver. 1.22)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // In-game strings are in Italian but service mode is half English / half French? -GAME( 1993, bankrob, 0, bankrob, bankrob, blitz68k_state, bankrob, ROT0, "Entertainment Technology Corp.", "Bank Robbery (Ver. 3.32)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // BLITZ SYSTEM INC APRIL 1995 -GAME( 1993, bankroba, bankrob, bankroba, bankrob, blitz68k_state, bankroba, ROT0, "Entertainment Technology Corp.", "Bank Robbery (Ver. 2.00)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // BLITZ SYSTEM INC MAY 10TH, 1993 -GAME( 1993?, poker52, 0, maxidbl, maxidbl, driver_device, 0, ROT0, "Blitz Systems Inc.", "Poker 52 (Ver. 1.2)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // MARCH 10TH, 1994 +GAME( 1992, maxidbl, 0, maxidbl, maxidbl, blitz68k_state, maxidbl, ROT0, "Blitz Systems Inc.", "Maxi Double Poker (Ver. 1.10)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS ) +GAME( 1990, megadblj, 0, maxidbl, maxidbl, blitz68k_state, megadblj, ROT0, "Blitz Systems Inc.", "Mega Double Poker Jackpot (Ver. 1.26)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // JUNE 28TH, 1993 +GAME( 1990, megadble, 0, maxidbl, maxidbl, blitz68k_state, megadble, ROT0, "Blitz Systems Inc.", "Mega Double Poker (Ver. 1.63 Espagnol)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS ) // NOVEMBER 1994 +GAME( 1993, steaser, 0, steaser, steaser, blitz68k_state, 0, ROT0, "", "Strip Teaser (Italy, Ver. 1.22)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // In-game strings are in Italian but service mode is half English / half French? +GAME( 1993, bankrob, 0, bankrob, bankrob, blitz68k_state, bankrob, ROT0, "Entertainment Technology Corp.", "Bank Robbery (Ver. 3.32)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // BLITZ SYSTEM INC APRIL 1995 +GAME( 1993, bankroba, bankrob, bankroba, bankrob, blitz68k_state, bankroba, ROT0, "Entertainment Technology Corp.", "Bank Robbery (Ver. 2.00)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // BLITZ SYSTEM INC MAY 10TH, 1993 +GAME( 1993?, poker52, 0, maxidbl, maxidbl, blitz68k_state, 0, ROT0, "Blitz Systems Inc.", "Poker 52 (Ver. 1.2)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // MARCH 10TH, 1994 GAME( 1995, dualgame, 0, dualgame, dualgame, blitz68k_state, dualgame, ROT0, "Labtronix Technologies", "Dual Games (prototype)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // SEPTEMBER 5TH, 1995 -GAME( 1995, hermit, 0, hermit, hermit, blitz68k_state, hermit, ROT0, "Dugamex", "The Hermit (Ver. 1.14)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // APRIL 1995 +GAME( 1995, hermit, 0, hermit, hermit, blitz68k_state, hermit, ROT0, "Dugamex", "The Hermit (Ver. 1.14)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // APRIL 1995 GAME( 1997, deucesw2, 0, deucesw2, deucesw2, blitz68k_state, deucesw2, ROT0, "", "Deuces Wild 2 - American Heritage (Ver. 2.02F)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // APRIL 10TH, 1997 GAME( 1998, cj3play, 0, cjffruit, cjffruit, blitz68k_state, cj3play, ROT0, "Cadillac Jack", "Triple Play (Ver. 1.10)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // FEBRUARY 24TH, 1999 GAME( 1998, cjffruit, 0, cjffruit, cjffruit, blitz68k_state, cjffruit, ROT0, "Cadillac Jack", "Funny Fruit (Ver. 1.13)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // APRIL 21ST, 1999 -GAME( 199?, ilpag, 0, ilpag, ilpag, driver_device, 0, ROT0, "", "Il Pagliaccio (Italy, Ver. 2.7C)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) +GAME( 199?, ilpag, 0, ilpag, ilpag, blitz68k_state, 0, ROT0, "", "Il Pagliaccio (Italy, Ver. 2.7C)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/blktiger.cpp b/src/mame/drivers/blktiger.cpp index ff27e34b5a3..5911e0a29e3 100644 --- a/src/mame/drivers/blktiger.cpp +++ b/src/mame/drivers/blktiger.cpp @@ -295,7 +295,7 @@ void blktiger_state::machine_reset() m_i8751_latch = 0; } -static MACHINE_CONFIG_START( blktiger, blktiger_state ) +static MACHINE_CONFIG_START( blktiger ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4) /* verified on pcb */ @@ -320,7 +320,7 @@ static MACHINE_CONFIG_START( blktiger, blktiger_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(blktiger_state, screen_update_blktiger) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", blktiger) @@ -615,11 +615,11 @@ DRIVER_INIT_MEMBER(blktiger_state,blktigerb3) memcpy(src, &buffer[0], len); } -GAME( 1987, blktiger, 0, blktiger, blktiger, driver_device, 0, ROT0, "Capcom", "Black Tiger", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, blktigera, blktiger, blktiger, blktiger, driver_device, 0, ROT0, "Capcom", "Black Tiger (older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, blktigerb1, blktiger, blktigerbl, blktiger, driver_device, 0, ROT0, "bootleg", "Black Tiger (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, blktigerb2, blktiger, blktigerbl, blktiger, driver_device, 0, ROT0, "bootleg", "Black Tiger (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, blkdrgon, blktiger, blktiger, blktiger, driver_device, 0, ROT0, "Capcom", "Black Dragon (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, blkdrgonb, blktiger, blktigerbl, blktiger, driver_device, 0, ROT0, "bootleg", "Black Dragon (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blktiger, 0, blktiger, blktiger, blktiger_state, 0, ROT0, "Capcom", "Black Tiger", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blktigera, blktiger, blktiger, blktiger, blktiger_state, 0, ROT0, "Capcom", "Black Tiger (older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blktigerb1, blktiger, blktigerbl, blktiger, blktiger_state, 0, ROT0, "bootleg", "Black Tiger (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blktigerb2, blktiger, blktigerbl, blktiger, blktiger_state, 0, ROT0, "bootleg", "Black Tiger (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blkdrgon, blktiger, blktiger, blktiger, blktiger_state, 0, ROT0, "Capcom", "Black Dragon (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blkdrgonb, blktiger, blktigerbl, blktiger, blktiger_state, 0, ROT0, "bootleg", "Black Dragon (bootleg)", MACHINE_SUPPORTS_SAVE ) // this board has Capcom markings (boards 87118-A-X1 / 87118-B-X1, but no MCU, a mix of bootleg Black Tiger and Black Dragon roms, and an address swapped sound rom? is the latter an alternative security measure? GAME( 1987, blktigerb3, blktiger, blktigerbl, blktiger, blktiger_state, blktigerb3, ROT0, "bootleg", "Black Tiger / Black Dragon (mixed bootleg?)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/blmbycar.cpp b/src/mame/drivers/blmbycar.cpp index fcb641e12f1..98a47c95fc5 100644 --- a/src/mame/drivers/blmbycar.cpp +++ b/src/mame/drivers/blmbycar.cpp @@ -343,7 +343,7 @@ MACHINE_RESET_MEMBER(blmbycar_state,blmbycar) } -static MACHINE_CONFIG_START( blmbycar, blmbycar_state ) +static MACHINE_CONFIG_START( blmbycar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12MHz */ @@ -370,7 +370,7 @@ static MACHINE_CONFIG_START( blmbycar, blmbycar_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", XTAL_1MHz, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, blmbycar_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) @@ -514,5 +514,5 @@ DRIVER_INIT_MEMBER(blmbycar_state,blmbycar) ***************************************************************************/ GAME( 1994, blmbycar, 0, blmbycar, blmbycar, blmbycar_state, blmbycar, ROT0, "ABM & Gecas", "Blomby Car", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, blmbycaru, blmbycar, blmbycar, blmbycar, driver_device, 0, ROT0, "ABM & Gecas", "Blomby Car (not encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, watrball, 0, watrball, watrball, driver_device, 0, ROT0, "ABM", "Water Balls", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, blmbycaru, blmbycar, blmbycar, blmbycar, blmbycar_state, 0, ROT0, "ABM & Gecas", "Blomby Car (not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, watrball, 0, watrball, watrball, blmbycar_state, 0, ROT0, "ABM", "Water Balls", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/blockade.cpp b/src/mame/drivers/blockade.cpp index 8b4f9ae6d79..54631399199 100644 --- a/src/mame/drivers/blockade.cpp +++ b/src/mame/drivers/blockade.cpp @@ -461,7 +461,7 @@ void blockade_state::device_timer(emu_timer &timer, device_timer_id id, int para // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( blockade, blockade_state ) +static MACHINE_CONFIG_START( blockade ) MCFG_CPU_ADD("maincpu", I8080A, XTAL_20_079MHz / 10) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(main_io_map) @@ -565,10 +565,10 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS LAYOUT -GAMEL(1976, blockade, 0, blockade, blockade, driver_device, 0, ROT0, "Gremlin", "Blockade", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_blockade ) -GAMEL(1976, comotion, 0, blockade, comotion, driver_device, 0, ROT0, "Gremlin", "CoMOTION", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_blockade ) -GAME( 1978, blasto, 0, blockade, blasto, driver_device, 0, ROT0, "Gremlin", "Blasto", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // b/w, no overlay -GAMEL(1977, hustle, 0, blockade, hustle, driver_device, 0, ROT0, "Gremlin", "Hustle", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_blockade ) -GAME( 1977, mineswpr, 0, blockade, mineswpr, driver_device, 0, ROT0, "Amutech", "Minesweeper", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1977, mineswpr4, mineswpr, blockade, mineswpr4, driver_device, 0, ROT0, "Amutech", "Minesweeper (4-Player)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS LAYOUT +GAMEL(1976, blockade, 0, blockade, blockade, blockade_state, 0, ROT0, "Gremlin", "Blockade", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_blockade ) +GAMEL(1976, comotion, 0, blockade, comotion, blockade_state, 0, ROT0, "Gremlin", "CoMOTION", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_blockade ) +GAME( 1978, blasto, 0, blockade, blasto, blockade_state, 0, ROT0, "Gremlin", "Blasto", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // b/w, no overlay +GAMEL(1977, hustle, 0, blockade, hustle, blockade_state, 0, ROT0, "Gremlin", "Hustle", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_blockade ) +GAME( 1977, mineswpr, 0, blockade, mineswpr, blockade_state, 0, ROT0, "Amutech", "Minesweeper", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1977, mineswpr4, mineswpr, blockade, mineswpr4, blockade_state, 0, ROT0, "Amutech", "Minesweeper (4-Player)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/blockhl.cpp b/src/mame/drivers/blockhl.cpp index 7c460f1238d..3d53d8a2f5a 100644 --- a/src/mame/drivers/blockhl.cpp +++ b/src/mame/drivers/blockhl.cpp @@ -270,7 +270,7 @@ INPUT_PORTS_END // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( blockhl, blockhl_state ) +static MACHINE_CONFIG_START( blockhl ) // basic machine hardware MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) // Konami 052526 MCFG_CPU_PROGRAM_MAP(main_map) @@ -378,5 +378,5 @@ ROM_END //************************************************************************** // YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS -GAME( 1989, blockhl, 0, blockhl, blockhl, driver_device, 0, ROT0, "Konami", "Block Hole", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, quarth, blockhl, blockhl, blockhl, driver_device, 0, ROT0, "Konami", "Quarth (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, blockhl, 0, blockhl, blockhl, blockhl_state, 0, ROT0, "Konami", "Block Hole", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, quarth, blockhl, blockhl, blockhl, blockhl_state, 0, ROT0, "Konami", "Quarth (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/blockout.cpp b/src/mame/drivers/blockout.cpp index d570082f33f..7317ace4a88 100644 --- a/src/mame/drivers/blockout.cpp +++ b/src/mame/drivers/blockout.cpp @@ -295,7 +295,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(blockout_state::blockout_scanline) m_maincpu->set_input_line(5, ASSERT_LINE); } -static MACHINE_CONFIG_START( blockout, blockout_state ) +static MACHINE_CONFIG_START( blockout ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MAIN_CLOCK) /* MRH - 8.76 makes gfx/adpcm samples sync better -- but 10 is correct speed*/ @@ -328,7 +328,7 @@ static MACHINE_CONFIG_START( blockout, blockout_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END @@ -427,8 +427,8 @@ ROM_END * *************************************/ -GAME( 1989, blockout, 0, blockout, blockout, driver_device, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, blockout2,blockout, blockout, blockout, driver_device, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, blockoutj,blockout, blockout, blockoutj, driver_device,0, ROT0, "Technos Japan / California Dreams", "Block Out (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, agress, 0, agress, agress, driver_device, 0, ROT0, "Palco", "Agress - Missile Daisenryaku (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, agressb, agress, agress, agress, driver_device, 0, ROT0, "bootleg", "Agress - Missile Daisenryaku (English bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, blockout, 0, blockout, blockout, blockout_state, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, blockout2,blockout, blockout, blockout, blockout_state, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, blockoutj,blockout, blockout, blockoutj, blockout_state, 0, ROT0, "Technos Japan / California Dreams", "Block Out (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, agress, 0, agress, agress, blockout_state, 0, ROT0, "Palco", "Agress - Missile Daisenryaku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, agressb, agress, agress, agress, blockout_state, 0, ROT0, "bootleg", "Agress - Missile Daisenryaku (English bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bloodbro.cpp b/src/mame/drivers/bloodbro.cpp index e11893aef69..550efabf8a9 100644 --- a/src/mame/drivers/bloodbro.cpp +++ b/src/mame/drivers/bloodbro.cpp @@ -482,7 +482,7 @@ WRITE16_MEMBER( bloodbro_state::weststry_layer_scroll_w ) /* Machine Drivers */ -static MACHINE_CONFIG_START( bloodbro, bloodbro_state ) +static MACHINE_CONFIG_START( bloodbro ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(bloodbro_map) @@ -517,7 +517,7 @@ static MACHINE_CONFIG_START( bloodbro, bloodbro_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -584,6 +584,9 @@ ROM_START( bloodbro ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "bb_08.u095.5a", 0x00000, 0x20000, CRC(deb1b975) SHA1(08f2e9a0a23171201b71d381d091edcd3787c287) ) + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "cb006.u083.6c", 0x0000, 0x0100, CRC(b2b89a74) SHA1(1878823801048d677aef9702feedd5bf775e62d0) ) // N82S135N ROM_END ROM_START( bloodbroa ) @@ -610,6 +613,9 @@ ROM_START( bloodbroa ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "bb_08.u095.5a", 0x00000, 0x20000, CRC(deb1b975) SHA1(08f2e9a0a23171201b71d381d091edcd3787c287) ) + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "cb006.u083.6c", 0x0000, 0x0100, CRC(b2b89a74) SHA1(1878823801048d677aef9702feedd5bf775e62d0) ) // N82S135N ROM_END ROM_START( bloodbrob ) @@ -636,6 +642,9 @@ ROM_START( bloodbrob ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "bb_08.u095.5a", 0x00000, 0x20000, CRC(deb1b975) SHA1(08f2e9a0a23171201b71d381d091edcd3787c287) ) + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "cb006.u083.6c", 0x0000, 0x0100, CRC(b2b89a74) SHA1(1878823801048d677aef9702feedd5bf775e62d0) ) // N82S135N ROM_END @@ -709,6 +718,9 @@ ROM_START( skysmash ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "rom1", 0x00000, 0x20000, CRC(e69986f6) SHA1(de38bf2d5638cb40740882e1abccf7928e43a5a6) ) + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "ss006.u083.4j", 0x0000, 0x0100, NO_DUMP ) // N82S135N ROM_END @@ -723,8 +735,8 @@ DRIVER_INIT_MEMBER(bloodbro_state,weststry) /* Game Drivers */ -GAME( 1990, bloodbro, 0, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, bloodbroa,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, bloodbrob,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, bloodbro, 0, bloodbro, bloodbro, bloodbro_state, 0, ROT0, "TAD Corporation", "Blood Bros. (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, bloodbroa,bloodbro, bloodbro, bloodbro, bloodbro_state, 0, ROT0, "TAD Corporation", "Blood Bros. (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, bloodbrob,bloodbro, bloodbro, bloodbro, bloodbro_state, 0, ROT0, "TAD Corporation", "Blood Bros. (set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1990, weststry, bloodbro, weststry, weststry, bloodbro_state, weststry, ROT0, "bootleg (Datsu)", "West Story (bootleg of Blood Bros.)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, skysmash, 0, skysmash, skysmash, driver_device, 0, ROT270, "Nihon System", "Sky Smasher", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, skysmash, 0, skysmash, skysmash, bloodbro_state, 0, ROT270, "Nihon System", "Sky Smasher", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/blstroid.cpp b/src/mame/drivers/blstroid.cpp index cbe8a9c9981..357f1d10516 100644 --- a/src/mame/drivers/blstroid.cpp +++ b/src/mame/drivers/blstroid.cpp @@ -174,7 +174,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( blstroid, blstroid_state ) +static MACHINE_CONFIG_START( blstroid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) diff --git a/src/mame/drivers/blueprnt.cpp b/src/mame/drivers/blueprnt.cpp index c506ca81ecd..6d05e2b554a 100644 --- a/src/mame/drivers/blueprnt.cpp +++ b/src/mame/drivers/blueprnt.cpp @@ -342,7 +342,7 @@ void blueprnt_state::machine_reset() } -static MACHINE_CONFIG_START( blueprnt, blueprnt_state ) +static MACHINE_CONFIG_START( blueprnt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 7000000/2) // 3.5 MHz @@ -498,7 +498,7 @@ ROM_END * *************************************/ -GAME( 1982, blueprnt, 0, blueprnt, blueprnt, driver_device, 0, ROT270, "Zilec Electronics / Bally Midway", "Blue Print (Midway)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, blueprntj, blueprnt, blueprnt, blueprnt, driver_device, 0, ROT270, "Zilec Electronics / Jaleco", "Blue Print (Jaleco)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, saturnzi, 0, blueprnt, saturn, driver_device, 0, ROT270, "Zilec Electronics / Jaleco", "Saturn", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, grasspin, 0, grasspin, grasspin, driver_device, 0, ROT270, "Zilec Electronics / Jaleco", "Grasspin", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // a few issues with dip reading + video hw, but nothing major +GAME( 1982, blueprnt, 0, blueprnt, blueprnt, blueprnt_state, 0, ROT270, "Zilec Electronics / Bally Midway", "Blue Print (Midway)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, blueprntj, blueprnt, blueprnt, blueprnt, blueprnt_state, 0, ROT270, "Zilec Electronics / Jaleco", "Blue Print (Jaleco)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, saturnzi, 0, blueprnt, saturn, blueprnt_state, 0, ROT270, "Zilec Electronics / Jaleco", "Saturn", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, grasspin, 0, grasspin, grasspin, blueprnt_state, 0, ROT270, "Zilec Electronics / Jaleco", "Grasspin", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // a few issues with dip reading + video hw, but nothing major diff --git a/src/mame/drivers/bmcbowl.cpp b/src/mame/drivers/bmcbowl.cpp index ac80d19365b..6bff1856186 100644 --- a/src/mame/drivers/bmcbowl.cpp +++ b/src/mame/drivers/bmcbowl.cpp @@ -450,7 +450,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, bmcbowl_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state ) +static MACHINE_CONFIG_START( bmcbowl ) MCFG_CPU_ADD("maincpu", M68000, XTAL_21_4772MHz / 2 ) MCFG_CPU_PROGRAM_MAP(bmcbowl_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", bmcbowl_state, irq2_line_hold) @@ -480,7 +480,7 @@ static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) - MCFG_OKIM6295_ADD("oki", 1122000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1122000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) diff --git a/src/mame/drivers/bmcpokr.cpp b/src/mame/drivers/bmcpokr.cpp index be65f5cc638..a4565f91f3a 100644 --- a/src/mame/drivers/bmcpokr.cpp +++ b/src/mame/drivers/bmcpokr.cpp @@ -42,7 +42,7 @@ public: m_layerctrl(*this, "layerctrl"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette") - { } + { } // Devices required_device m_maincpu; @@ -799,7 +799,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, bmcpokr_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( bmcpokr, bmcpokr_state ) +static MACHINE_CONFIG_START( bmcpokr ) MCFG_CPU_ADD("maincpu", M68000, XTAL_42MHz / 4) // 68000 @10.50MHz (42/4) MCFG_CPU_PROGRAM_MAP(bmcpokr_mem) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bmcpokr_state, interrupt, "screen", 0, 1) @@ -827,7 +827,7 @@ static MACHINE_CONFIG_START( bmcpokr, bmcpokr_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) - MCFG_OKIM6295_ADD("oki", XTAL_42MHz / 40, OKIM6295_PIN7_HIGH) // M6295 @1.05MHz (42/40), pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_42MHz / 40, PIN7_HIGH) // M6295 @1.05MHz (42/40), pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END @@ -949,5 +949,5 @@ ROM_START( mjmaglmp ) ROM_LOAD( "ja-a-901.u6", 0x00000, 0x40000, CRC(25f36d00) SHA1(c182348340ca67ad69d1a67c58b47d6371a725c9) ) ROM_END -GAME( 1999, bmcpokr, 0, bmcpokr, bmcpokr, driver_device, 0, ROT0, "BMC", "Dongfang Shenlong", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, mjmaglmp, 0, mjmaglmp, mjmaglmp, driver_device, 0, ROT0, "BMC", "Mahjong Magic Lamp (v. JAA02)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, bmcpokr, 0, bmcpokr, bmcpokr, bmcpokr_state, 0, ROT0, "BMC", "Dongfang Shenlong", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mjmaglmp, 0, mjmaglmp, mjmaglmp, bmcpokr_state, 0, ROT0, "BMC", "Mahjong Magic Lamp (v. JAA02)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bmjr.cpp b/src/mame/drivers/bmjr.cpp index ff366367ada..28a45ee85b1 100644 --- a/src/mame/drivers/bmjr.cpp +++ b/src/mame/drivers/bmjr.cpp @@ -33,7 +33,7 @@ public: , m_beep(*this, "beeper") , m_p_wram(*this, "wram") , m_p_chargen(*this, "chargen") - { } + { } DECLARE_READ8_MEMBER(key_r); DECLARE_WRITE8_MEMBER(key_w); @@ -333,7 +333,7 @@ void bmjr_state::machine_reset() m_cass->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); } -static MACHINE_CONFIG_START( bmjr, bmjr_state ) +static MACHINE_CONFIG_START( bmjr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6800, XTAL_4MHz/4) //unknown clock / divider MCFG_CPU_PROGRAM_MAP(bmjr_mem) @@ -379,5 +379,5 @@ DRIVER_INIT_MEMBER(bmjr_state,bmjr) { } -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, bmjr, 0, 0, bmjr, bmjr, bmjr_state, bmjr, "Hitachi", "Basic Master Jr", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1982, bmjr, 0, 0, bmjr, bmjr, bmjr_state, bmjr, "Hitachi", "Basic Master Jr", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/bml3.cpp b/src/mame/drivers/bml3.cpp index 2d63a712ab0..7c12982e91a 100644 --- a/src/mame/drivers/bml3.cpp +++ b/src/mame/drivers/bml3.cpp @@ -964,7 +964,7 @@ static SLOT_INTERFACE_START(bml3_cards) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( bml3_common, bml3_state ) +static MACHINE_CONFIG_START( bml3_common ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6809, CPU_CLOCK) MCFG_CPU_VBLANK_INT_DRIVER("screen", bml3_state, bml3_timer_firq) @@ -1113,7 +1113,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, bml3, 0, 0, bml3, bml3, driver_device, 0, "Hitachi", "MB-6890 Basic Master Level 3", MACHINE_NOT_WORKING) -COMP( 1982, bml3mk2,bml3, 0, bml3mk2, bml3, driver_device, 0, "Hitachi", "MB-6891 Basic Master Level 3 Mark 2", MACHINE_NOT_WORKING) -COMP( 1983, bml3mk5,bml3, 0, bml3mk5, bml3, driver_device, 0, "Hitachi", "MB-6892 Basic Master Level 3 Mark 5", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1980, bml3, 0, 0, bml3, bml3, bml3_state, 0, "Hitachi", "MB-6890 Basic Master Level 3", MACHINE_NOT_WORKING) +COMP( 1982, bml3mk2,bml3, 0, bml3mk2, bml3, bml3_state, 0, "Hitachi", "MB-6891 Basic Master Level 3 Mark 2", MACHINE_NOT_WORKING) +COMP( 1983, bml3mk5,bml3, 0, bml3mk5, bml3, bml3_state, 0, "Hitachi", "MB-6892 Basic Master Level 3 Mark 5", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/bnstars.cpp b/src/mame/drivers/bnstars.cpp index f0f26625060..1cdc8f7d913 100644 --- a/src/mame/drivers/bnstars.cpp +++ b/src/mame/drivers/bnstars.cpp @@ -806,7 +806,7 @@ void bnstars_state::machine_reset() } -static MACHINE_CONFIG_START( bnstars, bnstars_state ) +static MACHINE_CONFIG_START( bnstars ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V70, 20000000) // 20MHz diff --git a/src/mame/drivers/bntyhunt.cpp b/src/mame/drivers/bntyhunt.cpp index dd26f58f34c..02a266cff5d 100644 --- a/src/mame/drivers/bntyhunt.cpp +++ b/src/mame/drivers/bntyhunt.cpp @@ -49,7 +49,7 @@ static INPUT_PORTS_START( bntyhunt ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bntyhunt, bntyhunt_state ) +static MACHINE_CONFIG_START( bntyhunt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PENTIUM, 200000000) /* Probably a Pentium or higher .. ?? Mhz*/ MCFG_CPU_PROGRAM_MAP(bntyhunt_map) @@ -76,4 +76,4 @@ ROM_START(bntyhunt) ROM_END -GAME( 200?, bntyhunt, 0, bntyhunt, bntyhunt, driver_device, 0, ROT0, "GCTech Co., LTD", "Bounty Hunter (GCTech Co., LTD)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 200?, bntyhunt, 0, bntyhunt, bntyhunt, bntyhunt_state, 0, ROT0, "GCTech Co., LTD", "Bounty Hunter (GCTech Co., LTD)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/bob85.cpp b/src/mame/drivers/bob85.cpp index 0b519fb1cba..b2e3fb24504 100644 --- a/src/mame/drivers/bob85.cpp +++ b/src/mame/drivers/bob85.cpp @@ -198,7 +198,7 @@ READ_LINE_MEMBER( bob85_state::sid_r ) return m_cass->input() > 0.0; } -static MACHINE_CONFIG_START( bob85, bob85_state ) +static MACHINE_CONFIG_START( bob85 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_5MHz) MCFG_CPU_PROGRAM_MAP(bob85_mem) @@ -222,5 +222,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, bob85, 0, 0, bob85, bob85, driver_device, 0, "Josef Kratochvil", "BOB-85", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1984, bob85, 0, 0, bob85, bob85, bob85_state, 0, "Josef Kratochvil", "BOB-85", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/bogeyman.cpp b/src/mame/drivers/bogeyman.cpp index 21ec9ea846c..bad65f36d24 100644 --- a/src/mame/drivers/bogeyman.cpp +++ b/src/mame/drivers/bogeyman.cpp @@ -228,7 +228,7 @@ WRITE8_MEMBER(bogeyman_state::colbank_w) } } -static MACHINE_CONFIG_START( bogeyman, bogeyman_state ) +static MACHINE_CONFIG_START( bogeyman ) // basic machine hardware MCFG_CPU_ADD("maincpu", M6502, 1500000) /* Verified */ @@ -294,4 +294,4 @@ ROM_END /* Game Driver */ -GAME( 1985, bogeyman, 0, bogeyman, bogeyman, driver_device, 0, ROT0, "Technos Japan", "Bogey Manor", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, bogeyman, 0, bogeyman, bogeyman, bogeyman_state, 0, ROT0, "Technos Japan", "Bogey Manor", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bombjack.cpp b/src/mame/drivers/bombjack.cpp index 3f0fb247ef6..fe15cb6b990 100644 --- a/src/mame/drivers/bombjack.cpp +++ b/src/mame/drivers/bombjack.cpp @@ -354,7 +354,7 @@ INTERRUPT_GEN_MEMBER(bombjack_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( bombjack, bombjack_state ) +static MACHINE_CONFIG_START( bombjack ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) /* Confirmed from PCB */ @@ -507,6 +507,6 @@ ROM_END * *************************************/ -GAME( 1984, bombjack, 0, bombjack, bombjack, driver_device, 0, ROT90, "Tehkan", "Bomb Jack (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, bombjack2, bombjack, bombjack, bombjack, driver_device, 0, ROT90, "Tehkan", "Bomb Jack (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, bombjackt, bombjack, bombjack, bombjack, driver_device, 0, ROT90, "Tehkan (Tecfri licence)", "Bomb Jack (Tecfri, Spain)", MACHINE_SUPPORTS_SAVE ) // official licence +GAME( 1984, bombjack, 0, bombjack, bombjack, bombjack_state, 0, ROT90, "Tehkan", "Bomb Jack (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, bombjack2, bombjack, bombjack, bombjack, bombjack_state, 0, ROT90, "Tehkan", "Bomb Jack (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, bombjackt, bombjack, bombjack, bombjack, bombjack_state, 0, ROT90, "Tehkan (Tecfri licence)", "Bomb Jack (Tecfri, Spain)", MACHINE_SUPPORTS_SAVE ) // official licence diff --git a/src/mame/drivers/boogwing.cpp b/src/mame/drivers/boogwing.cpp index eafe82e6e18..fd4ceab8a50 100644 --- a/src/mame/drivers/boogwing.cpp +++ b/src/mame/drivers/boogwing.cpp @@ -321,7 +321,7 @@ DECO16IC_BANK_CB_MEMBER(boogwing_state::bank_callback2) return offset; } -static MACHINE_CONFIG_START( boogwing, boogwing_state ) +static MACHINE_CONFIG_START( boogwing ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) /* DE102 */ @@ -403,11 +403,11 @@ static MACHINE_CONFIG_START( boogwing, boogwing_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.40) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) MACHINE_CONFIG_END diff --git a/src/mame/drivers/bottom9.cpp b/src/mame/drivers/bottom9.cpp index b3cc769e523..2979c91f8a2 100644 --- a/src/mame/drivers/bottom9.cpp +++ b/src/mame/drivers/bottom9.cpp @@ -298,7 +298,7 @@ void bottom9_state::machine_reset() m_nmienable = 0; } -static MACHINE_CONFIG_START( bottom9, bottom9_state ) +static MACHINE_CONFIG_START( bottom9 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) /* ? */ @@ -533,6 +533,6 @@ ROM_END -GAME( 1989, bottom9, 0, bottom9, bottom9, driver_device, 0, ROT0, "Konami", "Bottom of the Ninth (version T)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bottom9n, bottom9, bottom9, bottom9, driver_device, 0, ROT0, "Konami", "Bottom of the Ninth (version N)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mstadium, bottom9, bottom9, mstadium, driver_device, 0, ROT0, "Konami", "Main Stadium (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bottom9, 0, bottom9, bottom9, bottom9_state, 0, ROT0, "Konami", "Bottom of the Ninth (version T)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bottom9n, bottom9, bottom9, bottom9, bottom9_state, 0, ROT0, "Konami", "Bottom of the Ninth (version N)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mstadium, bottom9, bottom9, mstadium, bottom9_state, 0, ROT0, "Konami", "Main Stadium (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bowltry.cpp b/src/mame/drivers/bowltry.cpp index cd3d2d650a7..de49b5f9211 100644 --- a/src/mame/drivers/bowltry.cpp +++ b/src/mame/drivers/bowltry.cpp @@ -94,7 +94,7 @@ uint32_t bowltry_state::screen_update_bowltry(screen_device &screen, bitmap_rgb3 -static MACHINE_CONFIG_START( bowltry, bowltry_state ) +static MACHINE_CONFIG_START( bowltry ) MCFG_CPU_ADD("maincpu", H83008, 16000000 ) MCFG_CPU_PROGRAM_MAP( bowltry_map ) // MCFG_CPU_VBLANK_INT_DRIVER("screen", bowltry_state, irq0_line_hold) // uses vector $64, IMIAB according to the manual (timer/compare B, internal to the CPU) @@ -126,4 +126,4 @@ ROM_START( bowltry ) ROM_END -GAME( 200?, bowltry, 0, bowltry, bowltry, driver_device, 0, ROT0, "Atlus", "Bowling Try",MACHINE_IS_SKELETON ) +GAME( 200?, bowltry, 0, bowltry, bowltry, bowltry_state, 0, ROT0, "Atlus", "Bowling Try",MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/boxer.cpp b/src/mame/drivers/boxer.cpp index 5ac60774766..d6caffc33ac 100644 --- a/src/mame/drivers/boxer.cpp +++ b/src/mame/drivers/boxer.cpp @@ -48,6 +48,8 @@ public: /* misc */ uint8_t m_pot_state; uint8_t m_pot_latch; + emu_timer *m_pot_interrupt; + emu_timer *m_periodic_timer; /* devices */ required_device m_maincpu; @@ -55,21 +57,21 @@ public: required_device m_screen; required_device m_palette; - DECLARE_READ8_MEMBER(boxer_input_r); - DECLARE_READ8_MEMBER(boxer_misc_r); - DECLARE_WRITE8_MEMBER(boxer_bell_w); - DECLARE_WRITE8_MEMBER(boxer_sound_w); - DECLARE_WRITE8_MEMBER(boxer_pot_w); - DECLARE_WRITE8_MEMBER(boxer_irq_reset_w); - DECLARE_WRITE8_MEMBER(boxer_crowd_w); - DECLARE_WRITE8_MEMBER(boxer_led_w); + DECLARE_READ8_MEMBER(input_r); + DECLARE_READ8_MEMBER(misc_r); + DECLARE_WRITE8_MEMBER(bell_w); + DECLARE_WRITE8_MEMBER(sound_w); + DECLARE_WRITE8_MEMBER(pot_w); + DECLARE_WRITE8_MEMBER(irq_reset_w); + DECLARE_WRITE8_MEMBER(crowd_w); + DECLARE_WRITE8_MEMBER(led_w); virtual void machine_start() override; virtual void machine_reset() override; DECLARE_PALETTE_INIT(boxer); - uint32_t screen_update_boxer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_CALLBACK_MEMBER(pot_interrupt); TIMER_CALLBACK_MEMBER(periodic_callback); - void draw_boxer( bitmap_ind16 &bitmap, const rectangle &cliprect ); + void draw(bitmap_ind16 &bitmap, const rectangle &cliprect); protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; @@ -130,7 +132,7 @@ TIMER_CALLBACK_MEMBER(boxer_state::periodic_callback) for (i = 1; i < 256; i++) if (mask[i] != 0) - timer_set(m_screen->time_until_pos(i), TIMER_POT_INTERRUPT, mask[i]); + m_pot_interrupt->adjust(m_screen->time_until_pos(i), mask[i]); m_pot_state = 0; } @@ -140,7 +142,7 @@ TIMER_CALLBACK_MEMBER(boxer_state::periodic_callback) if (scanline >= 262) scanline = 0; - timer_set(m_screen->time_until_pos(scanline), TIMER_PERIODIC, scanline); + m_periodic_timer->adjust(m_screen->time_until_pos(scanline), scanline); } @@ -159,7 +161,7 @@ PALETTE_INIT_MEMBER(boxer_state, boxer) palette.set_pen_color(3, rgb_t(0x00,0x00,0x00)); } -void boxer_state::draw_boxer( bitmap_ind16 &bitmap, const rectangle &cliprect ) +void boxer_state::draw( bitmap_ind16 &bitmap, const rectangle &cliprect ) { int n; @@ -206,7 +208,7 @@ void boxer_state::draw_boxer( bitmap_ind16 &bitmap, const rectangle &cliprect ) } -uint32_t boxer_state::screen_update_boxer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t boxer_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i, j; @@ -228,7 +230,7 @@ uint32_t boxer_state::screen_update_boxer(screen_device &screen, bitmap_ind16 &b } } - draw_boxer(bitmap, cliprect); + draw(bitmap, cliprect); return 0; } @@ -239,7 +241,7 @@ uint32_t boxer_state::screen_update_boxer(screen_device &screen, bitmap_ind16 &b * *************************************/ -READ8_MEMBER(boxer_state::boxer_input_r) +READ8_MEMBER(boxer_state::input_r) { uint8_t val = ioport("IN0")->read(); @@ -250,7 +252,7 @@ READ8_MEMBER(boxer_state::boxer_input_r) } -READ8_MEMBER(boxer_state::boxer_misc_r) +READ8_MEMBER(boxer_state::misc_r) { uint8_t val = 0; @@ -279,17 +281,17 @@ READ8_MEMBER(boxer_state::boxer_misc_r) -WRITE8_MEMBER(boxer_state::boxer_bell_w) +WRITE8_MEMBER(boxer_state::bell_w) { } -WRITE8_MEMBER(boxer_state::boxer_sound_w) +WRITE8_MEMBER(boxer_state::sound_w) { } -WRITE8_MEMBER(boxer_state::boxer_pot_w) +WRITE8_MEMBER(boxer_state::pot_w) { /* BIT0 => HPOT1 */ /* BIT1 => VPOT1 */ @@ -304,13 +306,13 @@ WRITE8_MEMBER(boxer_state::boxer_pot_w) } -WRITE8_MEMBER(boxer_state::boxer_irq_reset_w) +WRITE8_MEMBER(boxer_state::irq_reset_w) { m_maincpu->set_input_line(0, CLEAR_LINE); } -WRITE8_MEMBER(boxer_state::boxer_crowd_w) +WRITE8_MEMBER(boxer_state::crowd_w) { /* BIT0 => ATTRACT */ /* BIT1 => CROWD-1 */ @@ -321,7 +323,7 @@ WRITE8_MEMBER(boxer_state::boxer_crowd_w) } -WRITE8_MEMBER(boxer_state::boxer_led_w) +WRITE8_MEMBER(boxer_state::led_w) { output().set_led_value(1, !(data & 1)); output().set_led_value(0, !(data & 2)); @@ -338,14 +340,14 @@ static ADDRESS_MAP_START( boxer_map, AS_PROGRAM, 8, boxer_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x01ff) AM_RAM AM_RANGE(0x0200, 0x03ff) AM_RAM AM_SHARE("tile_ram") - AM_RANGE(0x0800, 0x08ff) AM_READ(boxer_input_r) - AM_RANGE(0x1000, 0x17ff) AM_READ(boxer_misc_r) - AM_RANGE(0x1800, 0x1800) AM_WRITE(boxer_pot_w) - AM_RANGE(0x1900, 0x19ff) AM_WRITE(boxer_led_w) - AM_RANGE(0x1a00, 0x1aff) AM_WRITE(boxer_sound_w) - AM_RANGE(0x1b00, 0x1bff) AM_WRITE(boxer_crowd_w) - AM_RANGE(0x1c00, 0x1cff) AM_WRITE(boxer_irq_reset_w) - AM_RANGE(0x1d00, 0x1dff) AM_WRITE(boxer_bell_w) + AM_RANGE(0x0800, 0x08ff) AM_READ(input_r) + AM_RANGE(0x1000, 0x17ff) AM_READ(misc_r) + AM_RANGE(0x1800, 0x1800) AM_WRITE(pot_w) + AM_RANGE(0x1900, 0x19ff) AM_WRITE(led_w) + AM_RANGE(0x1a00, 0x1aff) AM_WRITE(sound_w) + AM_RANGE(0x1b00, 0x1bff) AM_WRITE(crowd_w) + AM_RANGE(0x1c00, 0x1cff) AM_WRITE(irq_reset_w) + AM_RANGE(0x1d00, 0x1dff) AM_WRITE(bell_w) AM_RANGE(0x1e00, 0x1eff) AM_WRITEONLY AM_SHARE("sprite_ram") AM_RANGE(0x1f00, 0x1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x3000, 0x3fff) AM_ROM @@ -462,20 +464,23 @@ GFXDECODE_END void boxer_state::machine_start() { + m_pot_interrupt = timer_alloc(TIMER_POT_INTERRUPT); + m_periodic_timer = timer_alloc(TIMER_PERIODIC); + save_item(NAME(m_pot_state)); save_item(NAME(m_pot_latch)); } void boxer_state::machine_reset() { - timer_set(m_screen->time_until_pos(0), TIMER_PERIODIC); + m_periodic_timer->adjust(m_screen->time_until_pos(0)); m_pot_state = 0; m_pot_latch = 0; } -static MACHINE_CONFIG_START( boxer, boxer_state ) +static MACHINE_CONFIG_START( boxer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 16) @@ -488,7 +493,7 @@ static MACHINE_CONFIG_START( boxer, boxer_state ) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(256, 262) MCFG_SCREEN_VISIBLE_AREA(8, 247, 0, 239) - MCFG_SCREEN_UPDATE_DRIVER(boxer_state, screen_update_boxer) + MCFG_SCREEN_UPDATE_DRIVER(boxer_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", boxer) @@ -540,4 +545,4 @@ ROM_END * *************************************/ -GAME( 1978, boxer, 0, boxer, boxer, driver_device, 0, 0, "Atari", "Boxer (prototype)", MACHINE_NO_SOUND ) +GAME( 1978, boxer, 0, boxer, boxer, boxer_state, 0, 0, "Atari", "Boxer (prototype)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bpmmicro.cpp b/src/mame/drivers/bpmmicro.cpp new file mode 100644 index 00000000000..7e7ca4fc3c4 --- /dev/null +++ b/src/mame/drivers/bpmmicro.cpp @@ -0,0 +1,417 @@ +// license:BSD-3-Clause +// copyright-holders:Jonathan Gevaryahu +/****************************************************************************** +* BPM Microsystems (formerly BP Microsystems, before 20060828) + universal device programmers +* Models supported in this driver so far: BP-1148/BP-1200 + +* 1000-series (non-ganged, manual feed) models: +* EP-series: +* EP-1 - 28 pin, eproms only? has adapter for 32 pin? +* EP-1132 - 32 pin, eproms only? +* EP-1140 - 40 pin, eproms only? +* PLD-series: +* PLD-1100 - ndip plds/pals only? +* PLD-1128 - ndip plds/pals only? +* 286 based w/512k ram, fixed: (1992ish) +* BP-1148 - fixed 512k ram, uses a special 'low cost' BP-1148 socket + instead of a tech adapter+socket module +* BP-1200 - fixed 512k ram, uses a TA-84 or TA-240 tech adapter plus + a socket module, otherwise identical to above, same firmware +* 286 based w/240 pin tech adapter integrated as a "mezzanine board", expandable ram: +* BP-1400/240 - uses a 30 OR 72 pin SIMM (some programmers may have + the 30 pin SIMM socket populated) for up to 8MB? of ram +* BP-1400/84 - more or less a 1200/84 with expandable ram, very rare. +* Silicon Sculptor - custom firmware locked to Actel fpga/pld [1400?] + devices, may have a custom MB +* Silicon Sculptor 6X - as above but 6 programmers ganged together +* 486 based: +* BP-1600 - 486DX4 100Mhz based, uses a 72 pin SIMM for up to 16MB of + ram (does NOT support 32MB SIMMs!), supports 1.5vdd devices +* Silicon Sculptor II - same as BP-1600 except it has the extra + button and different firmware and a different mezzanine + board/tech adapter; comes with a 72-pin SIMM installed +* probably 'universal platform': +* BP-2510 +* 486+USB "6th Gen": +* BP-1410 - 486DX4 based, uses a laptop SODIMM for up to 512MB? of ram?, has USB +* BP-1610 - unclear what the difference to 1410 is +* BP-1710 - same as BP1610, but two programmers ganged together in a single case +* Silicon Sculptor III - 486DX4 100Mhz +* There exist "7th" "8th" and "9th" gen programmers as well. + +* 2000-series (ganged, manual programmers) +* Unclear whether 286 or 486, all have extra button per programmer: +* BP-2100/84x4 - four BP-1?00s ganged together [1400/84 based?] +* BP-2200/240x2 - two BP-1?00s ganged together [1400/240 based?] +* BP-2200/240x4 - four BP-1?00s ganged together +* BP-2200/240x6 - six BP-1?00s ganged together +* BP-2500/240x4 - four BP-1?00s ganged together [1600 based?] +* BP-2000, BP-2600M - ganged programmers? + +* +****************************************************************************** +* TODO: +* Everything! +* status LEDs +* 8-pin pin driver boards +* tech adapter relays +* Parallel port interface +* Serial EEPROM (93c46) at U38 on BP1200 mainboard +* Serial EEPROM (93c46) at (U1? U7? U12?) on TA-84 tech adapter +* Serial EEPROM (93c46a) at ? on SM48D socket adapter +* other socket adapters other than sm48d +* DONE: +* hardware pictures, cpu documentation, crystal, ram size +****************************************************************************** +* Links: +* http://www3.bpmmicro.com/web/helpandsupport.nsf/69f301ee4e15195486256fcf0062c2eb/8194a48179484c9f862573220065d38e!OpenDocument +* ftp://ftp.bpmmicro.com/Dnload/ +****************************************************************************** +* Analog driver cards: + The BP-1200, 1400 and 1600 have up to 6 of these cards in them. + Each card can drive exactly 8 pins with analog (pwm-controlled?) + voltages. The BP-1200 is probably usable with as few as one of these + cards installed, but can only be used with 8-pin devices in that case! +****************************************************************************** +* Tech adapters for BP-1148 and BP-1200: +* Note: Regardless of tech adapter, only up to 48 pins are drivable with + analog (pseudo-dac-per-pin) voltages, the remainder are pulled high or + low by the tech adapter. +* TA-84: 84 pin tech adapter + Rev C: Small board which doesn't cover the whole front of the BP-1200. + no screen printing on the case, only identifiable by the pcb marking + this PCB can be populated with either 48 or 84 relays; if the former, + it is known as an STD48 pcb; the latter is presumably STD84 and may + have an otherwise unpopulated PGA FPGA or ASIC on it as well. + Rev E: Marked "CPCBTA84V", a larger board which covers the entire + front of the BP-1200 including the LEDs, but has its own 3 LEDs on + it (why not plastic light pipes?) controlled probably through the + 93c46 bus. This board again has either 48 relays on it, or 84 relays + and an FPGA or ASIC on it. +* TA-240: 240 pin tech adapter, this is a full sized shield which + like the CPCBTA84V covers the entire front of the BP1200. + It likely has even more relays in it, and it provides the same + "three" connectors that the bp1400 and 1600 do natively, to allow + for 240 pins to be driven. It almost certainly has an FPGA or ASIC + on it as well, possibly several. +****************************************************************************** +* SM48D socket module: +* The SM48D socket module has two DIN 41612/IEC 60603-2 sockets on the + bottom, each of which has two rows of pins, with the middle "B" row + unpopulated. It contains six 74HCT164 Serial-in Parallel-out shift + registers, for 48 bits of serially drivable state, which is used to + drive the gates of transistors which act as a pull-down to GND for + each of the 48 pins. + There is also a relay, of unknown purpose. + There are several versions of the SM48D pcb which existed: + Rev B uses all through-hole components, and extra passive resistor arrays for every pin (1992) + Rev C uses all through-hole components (1992) + Rev E "CPCBS48D" uses all surface mount/soic components (1998) + For revision E, assuming IC1 is the upper leftmost IC, and IC7 is + the lower rightmost ic, from left to right then top to bottom + and ic4 being the 93c46; + The 74hct164s are chained in this order and drive the following pins: + IC3: TODO: ADD ME + IC2: " + IC7: " + IC5: " + IC6: " + IC1: " + +* Looking "through" the pcb from the top, the connectors are arranged + as such: +(note: J3 may be the wrong label, it could be J5) + + ___J3___ ___J4___ + GND -- |A32 C32| |A32 C32| -- GND + VCC -- |A31 C31| |A31 C31| <> J3 A03 +J4 C30 <> |A30 C30| ?Relay control? |A30 C30| <> J3 A30 + GND -- |A29 C29| |A29 C29| +Pin 01 <> |A28 C28| |A28 C28| <> Pin 48 +Pin 02 <> |A27 C27| |A27 C27| <> Pin 47 +Pin 03 <> |A26 C26| |A26 C26| <> Pin 46 +Pin 04 <> |A25 C25| |A25 C25| <> Pin 45 +Pin 05 <> |A24 C24| |A24 C24| <> Pin 44 +Pin 06 <> |A23 C23| -- GND GND -- |A23 C23| <> Pin 43 +Pin 07 <> |A22 C22| |A22 C22| <> Pin 42 +Pin 08 <> |A21 C21| |A21 C21| <> Pin 41 +Pin 09 <> |A20 C20| |A20 C20| <> Pin 40 +Pin 10 <> |A19 C19| |A19 C19| <> Pin 39 +Pin 11 <> |A18 C18| |A18 C18| <> Pin 38 +Pin 12 <> |A17 C17| -- GND GND -- |A17 C17| <> Pin 37 +Pin 13 <> |A16 C16| |A16 C16| <> Pin 36 +Pin 14 <> |A15 C15| |A15 C15| <> Pin 35 +Pin 15 <> |A14 C14| |A14 C14| <> Pin 34 +Pin 16 <> |A13 C13| |A13 C13| <> Pin 33 +Pin 17 <> |A12 C12| |A12 C12| <> Pin 32 +Pin 18 <> |A11 C11| -- GND GND -- |A11 C11| <> Pin 31 +Pin 19 <> |A10 C10| |A10 C10| <> Pin 30 +Pin 20 <> |A09 C09| |A09 C09| <> Pin 29 +Pin 21 <> |A08 C08| |A08 C08| <> Pin 28 +Pin 22 <> |A07 C07| ?? <> |A07 C07| <> Pin 27 +Pin 23 <> |A06 C06| |A06 C06| <> Pin 26 +Pin 24 <> |A05 C05| |A05 C05| <> Pin 25 + |A04 C04| 93c46 CS -> |A04 C04| -- VCC +J4 C31 <> |A03 C03| 93c46 CLK -> |A03 C03| +J4 C02 <> |A02 C02| <- '164 CP 93c46 DI AND '164 IC3 DSB -> |A02 C02| <> J3 A02 + GND -- |A01 C01| <- '164 /MR 93c46 DO <- |A01 C01| -- GND + ---------- ---------- + +******************************************************************************/ + +/* Core includes */ +#include "emu.h" +#include "cpu/i86/i286.h" +#include "machine/eepromser.h" + +class bpmmicro_state : public driver_device +{ +public: + bpmmicro_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_eeprom_u38(*this, "eeprom_u38") + { + } + + DECLARE_DRIVER_INIT(bp1200); + DECLARE_WRITE16_MEMBER(unknown_82200_w); + DECLARE_READ16_MEMBER(latch_84000_r); + DECLARE_WRITE16_MEMBER(latch_84002_w); + DECLARE_WRITE16_MEMBER(unknown_8400e_w); + DECLARE_WRITE16_MEMBER(unknown_84018_w); + DECLARE_WRITE16_MEMBER(unknown_8401a_w); + DECLARE_WRITE16_MEMBER(eeprom_8401c_w); + virtual void machine_start() override; +private: + required_device m_maincpu; + required_device m_eeprom_u38; + uint16_t m_shifter; + uint16_t m_latch; +}; + +/****************************************************************************** + Driver Init +******************************************************************************/ + +DRIVER_INIT_MEMBER(bpmmicro_state,bp1200) +{ + m_shifter = 0; + m_latch = 0; +} + +/****************************************************************************** + Machine Start/Reset +******************************************************************************/ + +void bpmmicro_state::machine_start() +{ + save_item(NAME(m_shifter)); + save_item(NAME(m_latch)); +} + +/****************************************************************************** + Read/Write handlers +******************************************************************************/ + +WRITE16_MEMBER(bpmmicro_state::unknown_82200_w) +{ + logerror("%s: unknown write to 0x82200 offset %08x mask (%08x) data %08x\n",machine().describe_context(),offset<<1,mem_mask,data); +} + +READ16_MEMBER(bpmmicro_state::latch_84000_r) +{ + uint16_t returnval = m_latch; // not sure this is correct, it could be that the 93c48 DO pin is connected directly to bit 7 here... + logerror("%08x:Read 0x84000 octal latch %08x (%08x), got %08x\n", machine().describe_context(), offset << 1, mem_mask, returnval); + return returnval; +} + +WRITE16_MEMBER(bpmmicro_state::latch_84002_w) +{ + logerror("%s: write to 0x84002 octal latch clock? %08x mask (%08x) data %08x\n",machine().describe_context(),offset<<1,mem_mask,data); + if (data) m_latch = m_shifter; +} + +WRITE16_MEMBER(bpmmicro_state::unknown_8400e_w) +{ + logerror("%s: unknown write to 0x8400e offset %08x mask (%08x) data %08x\n",machine().describe_context(),offset<<1,mem_mask,data); +} + +WRITE16_MEMBER(bpmmicro_state::unknown_84018_w) +{ + logerror("%s: unknown write to 0x84018 offset %08x mask (%08x) data %08x\n",machine().describe_context(),offset<<1,mem_mask,data); + if (data&1) // HACK + { + m_eeprom_u38->cs_write(CLEAR_LINE); + m_eeprom_u38->cs_write(ASSERT_LINE); + } +} + +WRITE16_MEMBER(bpmmicro_state::unknown_8401a_w) +{ + logerror("%s: unknown write to 0x8401a offset %08x mask (%08x) data %08x\n",machine().describe_context(),offset<<1,mem_mask,data); +} + +WRITE16_MEMBER(bpmmicro_state::eeprom_8401c_w) +{ + logerror("%s:write eeprom %08x (%08x) %08x\n",machine().describe_context(),offset<<1,mem_mask,data); + if (ACCESSING_BITS_0_7) + { + m_eeprom_u38->di_write(BIT(data, 0)); + m_eeprom_u38->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE); + if (BIT(data,1)) // is this correct at all? + { + m_shifter <<= 1; + m_shifter |= m_eeprom_u38->do_read(); + } + /* bits 2 thru 7 here also do something; + There is a 74HCT14 hex inverter schmitt trigger at u26 + and it is possible these 6 bits feed the inputs of that chip. + These MIGHT be the CS lines for the 6 pin driver cards! + */ + } +} + + +/* todo (v1.24 rom) +from boot (2 digit hex offsets have 0x84000 added to them): +0x0a00 -> 0x82200 +0x0001 -> 18 +0x0003 -> 1a +0x0001 -> 0e +{lots of data banged to 1c} +0x0001 -> 02 +0x0000 -> 02 +read <- 00 + +0x0001 -> 18 +0x0002 -> 1a +{lots of data banged to 1c} +0x0001 -> 02 +0x0000 -> 02 + +0x0000 -> 18 +0x0003 -> 1a +{lots of data banged to 1c} +0x0001 -> 02 +0x0000 -> 02 +read <- 00 +read <- 00 + +0x0000 -> 18 +0x0001 -> 1a +{lots of data banged to 1c} +0x0001 -> 02 +0x0000 -> 02 + +0x0000 -> 0e +0x0001 -> 0e +0x0000 -> 0e +0x0001 -> 0e +0x0000 -> 0e +0x0001 -> 0e +read <- 00 + +0x0a00 -> 0x82200 +0x0112 -> 0x82200 + +0x0000 -> 06 +0x0000 -> 04 +0x0000 -> 00 + +*/ + + +/****************************************************************************** + Address Maps +******************************************************************************/ + +static ADDRESS_MAP_START(i286_mem, AS_PROGRAM, 16, bpmmicro_state) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x000000, 0x07ffff) AM_RAM // 512k ram + AM_RANGE(0x082200, 0x82201) AM_WRITE(unknown_82200_w) + AM_RANGE(0x084000, 0x84001) AM_READ(latch_84000_r) // GUESS: this is reading the octal latch + AM_RANGE(0x084002, 0x84003) AM_WRITE(latch_84002_w) // GUESS: this is clocking the CK pin on the octal latch from bit 0, dumping the contents of a serial in parallel out shifter into said latch + AM_RANGE(0x08400e, 0x8400f) AM_WRITE(unknown_8400e_w) + AM_RANGE(0x084018, 0x84019) AM_WRITE(unknown_84018_w) + AM_RANGE(0x08401a, 0x8401b) AM_WRITE(unknown_8401a_w) + AM_RANGE(0x08401c, 0x8401d) AM_WRITE(eeprom_8401c_w) + AM_RANGE(0x0f0000, 0x0fffff) AM_ROM AM_REGION("bios", 0x10000) + //AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0) //? + AM_RANGE(0xfffff0, 0xffffff) AM_ROM AM_REGION("bios", 0x1fff0) //? +ADDRESS_MAP_END + +static ADDRESS_MAP_START(i286_io, AS_IO, 16, bpmmicro_state) + ADDRESS_MAP_UNMAP_HIGH +ADDRESS_MAP_END + + +/****************************************************************************** + Input Ports +******************************************************************************/ +static INPUT_PORTS_START( bpmmicro ) +INPUT_PORTS_END + +/****************************************************************************** + Machine Drivers +******************************************************************************/ + +static MACHINE_CONFIG_START( bpmmicro ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", I80286, XTAL_32MHz/4) /* divider is guessed, cpu is an AMD N80L286-16/S part */ + MCFG_CPU_PROGRAM_MAP(i286_mem) + MCFG_CPU_IO_MAP(i286_io) + + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom_u38") +MACHINE_CONFIG_END + + + +/****************************************************************************** + ROM Definitions +******************************************************************************/ + +ROM_START(bp1200) + ROM_REGION(0x20000, "bios", 0) + // note about roms: the BP-1200 has two jumpers controlling what type of rom is installed; + // it needs 120ns or faster roms + // the "W1" and "W2" labels are next to pins A on the pcb + // for 2764 roms: + // W1 [A B]C + // W2 [A B]C + // for 27256 roms: + // W1 [A B]C + // W2 A[B C] + ROM_DEFAULT_BIOS("v124") + ROM_SYSTEM_BIOS( 0, "v124", "BP-1200 V1.24") + ROMX_LOAD("version_1.24_u8.st_m27c256b-12f1l.u8", 0x10001, 0x8000, CRC(86d46d76) SHA1(4733b03a28689a3d2c58278495fbf31d0c74ac01), ROM_SKIP(1) | ROM_BIOS(1)) // "bios1200.v124a.u8" on bpmmicro site + ROMX_LOAD("version_1.24_u9.st_m27c256b-12f1l.u9", 0x10000, 0x8000, CRC(3bcc5c72) SHA1(3b281f2b464d8a4e366f8e2f0a8fa6dfd0a8f28c), ROM_SKIP(1) | ROM_BIOS(1)) // "bios1200.v124a.u9" on bpmmicro site + ROM_SYSTEM_BIOS( 1, "v118", "BP-1200 V1.18") + ROMX_LOAD("version_1.18_u8_2000.am27c256.u8", 0x10001, 0x8000, CRC(f8afa614) SHA1(a372bc35aea30595ab8f05c5e641021b45043ed3), ROM_SKIP(1) | ROM_BIOS(2)) + ROMX_LOAD("version_1.18_u9_2000.am27c256.u9", 0x10000, 0x8000, CRC(049b2ad1) SHA1(c9405ff805f3814493ad007bae7a8cb6a12aeb32), ROM_SKIP(1) | ROM_BIOS(2)) + ROM_SYSTEM_BIOS( 2, "v113", "BP-1200 V1.13") + ROMX_LOAD("bp-1200_v1.13_u8_1992_1997.at27c256r-12pc.u8", 0x10001, 0x8000, CRC(ec61dcad) SHA1(dbfee285456d24b93c1fa6e8557b13ab80c3c877), ROM_SKIP(1) | ROM_BIOS(3)) + ROMX_LOAD("bp-1200_v1.13_u9_1992_1995.at27c256r-12pc.u9", 0x10000, 0x8000, CRC(91ca5e70) SHA1(4a8c1894a67dfd5e0db088519a3ee4edaafdef58), ROM_SKIP(1) | ROM_BIOS(3)) + ROM_SYSTEM_BIOS( 3, "v111", "BP-1200 V1.11") + ROMX_LOAD("bp-1200_version_1.11_u8_1992_1995.at27c256r-12pc.u8", 0x10001, 0x8000, CRC(d1c051e4) SHA1(b27007a931b0662b3dc7e2d41c6ec5ed0cd49308), ROM_SKIP(1) | ROM_BIOS(4)) + ROMX_LOAD("bp-1200_version_1.11_u9_1992_1995.at27c256r-12pc.u9", 0x10000, 0x8000, CRC(99d46ba1) SHA1(144dbe6ed989ea88cfc1f6d1142508bb92519f87), ROM_SKIP(1) | ROM_BIOS(4)) + ROM_SYSTEM_BIOS( 4, "v105", "BP-1200 V1.05") + ROMX_LOAD("bp-1200_1.05_u8__(c)_1993_rev_c__bp_microsystems.27c64-12pc.u8", 0x1c001, 0x2000, CRC(2c13a43c) SHA1(5dd67a09f72f693c085160b9beedd2454ba4ec37), ROM_SKIP(1) | ROM_BIOS(5)) // "BP-1200 1.05 U8 // (C) 1993 REV C // BP Microsystems" 27C64-12PC @U8 + ROMX_LOAD("bp-1200_1.05_u9__(c)_1993_rev_c__bp_microsystems.27c64-12pc.u9", 0x1c000, 0x2000, CRC(b88a311c) SHA1(fb5e0543c811cbbf8f24d1de204b4c0c1bd2f485), ROM_SKIP(1) | ROM_BIOS(5)) // "BP-1200 1.05 U9 // (C) 1993 REV C // BP Microsystems" 27C64-12PC @U9 + ROM_SYSTEM_BIOS( 5, "v104", "BP-1200 V1.04") + ROMX_LOAD("bp-1200_1.04_u8__(c)_1992_rev_c__bp_microsystems.27c64.u8", 0x1c001, 0x2000, CRC(2ab47324) SHA1(052e578dae5db023f94b35d686a5352ffceec414), ROM_SKIP(1) | ROM_BIOS(6)) // "BP-1200 1.04 U8 // (C) 1992 REV C // BP Microsystems" OTP 27C64 @ U8 + ROMX_LOAD("bp-1200_1.04_u9__(c)_1993_rev_c__bp_microsystems.27c64.u9", 0x1c000, 0x2000, CRC(17b94d7a) SHA1(7ceed660dbdc638ac86ca8ba7fa456c297d88766), ROM_SKIP(1) | ROM_BIOS(6)) // "BP-1200 1.04 U9 // (C) 1993 REV C // BP Microsystems" OTP 27C64 @ U9 + ROM_SYSTEM_BIOS( 6, "v103", "BP-1200 V1.03") + ROMX_LOAD("bp-1200_1.03_u8__(c)_1992_rev_c__bp_microsystems.27c64a-12.u8", 0x1c001, 0x2000, CRC(b01968b6) SHA1(d0c6aa0f0fe47b0915658e8c27286ab6ea90972e), ROM_SKIP(1) | ROM_BIOS(7)) // "BP-1200 1.03 U8 // (C) 1992 REV C // BP Microsystems" 27C64A-12 @ U8 + ROMX_LOAD("bp-1200_1.03_u9__(c)_1992_rev_c__bp_microsystems.27c64a-12.u9", 0x1c000, 0x2000, CRC(f58ffebb) SHA1(700d3ffed269fff6dc1cf2190bde8b989715c22a), ROM_SKIP(1) | ROM_BIOS(7)) // "BP-1200 1.03 U9 // (C) 1992 REV C // BP Microsystems" 27C64A-12 @ U9 +ROM_END + + + +/****************************************************************************** + Drivers +******************************************************************************/ + +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1992, bp1200, 0, 0, bpmmicro, bpmmicro, bpmmicro_state, bp1200, "BP Microsystems", "BP-1200", MACHINE_IS_SKELETON | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/br8641.cpp b/src/mame/drivers/br8641.cpp index b24d817be00..c65fdd7272d 100644 --- a/src/mame/drivers/br8641.cpp +++ b/src/mame/drivers/br8641.cpp @@ -153,7 +153,7 @@ static const z80_daisy_config daisy_chain_intf[] = -static MACHINE_CONFIG_START( brandt8641, brandt8641_state ) +static MACHINE_CONFIG_START( brandt8641 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) // U4 ,4MHz crystal on board MCFG_CPU_PROGRAM_MAP(brandt8641_mem) @@ -190,4 +190,4 @@ ROM_START( br8641 ) ROM_END /* Driver */ -COMP( 1986, br8641, 0, 0, brandt8641, brandt8641, driver_device, 0, "Brandt", "Brandt 8641", MACHINE_NOT_WORKING ) +COMP( 1986, br8641, 0, 0, brandt8641, brandt8641, brandt8641_state, 0, "Brandt", "Brandt 8641", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/brkthru.cpp b/src/mame/drivers/brkthru.cpp index d31a6f7a413..9e1f673f8a8 100644 --- a/src/mame/drivers/brkthru.cpp +++ b/src/mame/drivers/brkthru.cpp @@ -376,7 +376,7 @@ INTERRUPT_GEN_MEMBER(brkthru_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( brkthru, brkthru_state ) +static MACHINE_CONFIG_START( brkthru ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/8) /* 1.5 MHz ? */ @@ -416,7 +416,7 @@ static MACHINE_CONFIG_START( brkthru, brkthru_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( darwin, brkthru_state ) +static MACHINE_CONFIG_START( darwin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/8) /* 1.5 MHz ? */ @@ -654,7 +654,7 @@ DRIVER_INIT_MEMBER(brkthru_state,brkthru) * *************************************/ -GAME( 1986, brkthru, 0, brkthru, brkthru, brkthru_state, brkthru, ROT0, "Data East USA", "Break Thru (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, brkthru, 0, brkthru, brkthru, brkthru_state, brkthru, ROT0, "Data East USA", "Break Thru (US)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, brkthruj, brkthru, brkthru, brkthruj, brkthru_state, brkthru, ROT0, "Data East Corporation", "Kyohkoh-Toppa (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, forcebrk, brkthru, brkthru, brkthruj, brkthru_state, brkthru, ROT0, "bootleg", "Force Break (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, darwin, 0, darwin, darwin, brkthru_state, brkthru, ROT270, "Data East Corporation", "Darwin 4078 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, darwin, 0, darwin, darwin, brkthru_state, brkthru, ROT270, "Data East Corporation", "Darwin 4078 (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bsktball.cpp b/src/mame/drivers/bsktball.cpp index 5fcc6bf3cec..acd4c6a3776 100644 --- a/src/mame/drivers/bsktball.cpp +++ b/src/mame/drivers/bsktball.cpp @@ -244,7 +244,7 @@ void bsktball_state::machine_reset() } -static MACHINE_CONFIG_START( bsktball, bsktball_state ) +static MACHINE_CONFIG_START( bsktball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,750000) @@ -302,4 +302,4 @@ ROM_END * *************************************/ -GAME( 1979, bsktball, 0, bsktball, bsktball, driver_device, 0, ROT0, "Atari", "Basketball", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, bsktball, 0, bsktball, bsktball, bsktball_state, 0, ROT0, "Atari", "Basketball", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/btime.cpp b/src/mame/drivers/btime.cpp index 6697f58b6a0..42be40b45ab 100644 --- a/src/mame/drivers/btime.cpp +++ b/src/mame/drivers/btime.cpp @@ -1289,7 +1289,7 @@ MACHINE_RESET_MEMBER(btime_state,mmonkey) m_protection_ret = 0; } -static MACHINE_CONFIG_START( btime, btime_state ) +static MACHINE_CONFIG_START( btime ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", DECO_CPU7, HCLK2) /* seletable between H2/H4 via jumper */ @@ -2063,22 +2063,22 @@ DRIVER_INIT_MEMBER(btime_state,sdtennis) } -GAME( 1982, btime, 0, btime, btime, btime_state, btime, ROT270, "Data East Corporation", "Burger Time (Data East set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, btime2, btime, btime, btime, btime_state, btime, ROT270, "Data East Corporation", "Burger Time (Data East set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, btime3, btime, btime, btime, btime_state, btime, ROT270, "Data East USA Inc.", "Burger Time (Data East USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, btimem, btime, btime, btime, btime_state, btime, ROT270, "Data East (Bally Midway license)", "Burger Time (Midway)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, cookrace, btime, cookrace, cookrace, btime_state, cookrace, ROT270, "bootleg", "Cook Race", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, tisland, 0, tisland, btime, btime_state, tisland, ROT270, "Data East Corporation", "Treasure Island", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, lnc, 0, lnc, lnc, btime_state, lnc, ROT270, "Data East Corporation", "Lock'n'Chase", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, protennb, 0, disco, disco, btime_state, protennb, ROT270, "bootleg", "Tennis (bootleg of Pro Tennis)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, wtennis, 0, wtennis, wtennis, btime_state, wtennis, ROT270, "bootleg", "World Tennis", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mmonkey, 0, mmonkey, mmonkey, btime_state, lnc, ROT270, "Technos Japan / Roller Tron", "Minky Monkey", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, brubber, 0, bnj, bnj, btime_state, bnj, ROT270, "Data East", "Burnin' Rubber", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bnj, brubber, bnj, bnj, btime_state, bnj, ROT270, "Data East USA", "Bump 'n' Jump", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bnjm, brubber, bnj, bnj, btime_state, bnj, ROT270, "Data East USA (Bally Midway license)", "Bump 'n' Jump (Midway)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, caractn, brubber, bnj, bnj, btime_state, bnj, ROT270, "bootleg", "Car Action (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, caractn2, brubber, bnj, caractn2, btime_state, bnj, ROT270, "bootleg", "Car Action (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zoar, 0, zoar, zoar, btime_state, zoar, ROT270, "Data East USA", "Zoar", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, disco, 0, disco, disco, btime_state, disco, ROT270, "Data East", "Disco No.1", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, discof, disco, disco, disco, btime_state, disco, ROT270, "Data East", "Disco No.1 (Rev.F)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, sdtennis, 0, sdtennis, sdtennis, btime_state, sdtennis, ROT270, "Data East Corporation", "Super Doubles Tennis", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, btime, 0, btime, btime, btime_state, btime, ROT270, "Data East Corporation", "Burger Time (Data East set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, btime2, btime, btime, btime, btime_state, btime, ROT270, "Data East Corporation", "Burger Time (Data East set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, btime3, btime, btime, btime, btime_state, btime, ROT270, "Data East USA Inc.", "Burger Time (Data East USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, btimem, btime, btime, btime, btime_state, btime, ROT270, "Data East (Bally Midway license)", "Burger Time (Midway)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, cookrace, btime, cookrace, cookrace, btime_state, cookrace, ROT270, "bootleg", "Cook Race", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, tisland, 0, tisland, btime, btime_state, tisland, ROT270, "Data East Corporation", "Treasure Island", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, lnc, 0, lnc, lnc, btime_state, lnc, ROT270, "Data East Corporation", "Lock'n'Chase", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, protennb, 0, disco, disco, btime_state, protennb, ROT270, "bootleg", "Tennis (bootleg of Pro Tennis)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, wtennis, 0, wtennis, wtennis, btime_state, wtennis, ROT270, "bootleg", "World Tennis", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mmonkey, 0, mmonkey, mmonkey, btime_state, lnc, ROT270, "Technos Japan / Roller Tron", "Minky Monkey", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, brubber, 0, bnj, bnj, btime_state, bnj, ROT270, "Data East", "Burnin' Rubber", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bnj, brubber, bnj, bnj, btime_state, bnj, ROT270, "Data East USA", "Bump 'n' Jump", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bnjm, brubber, bnj, bnj, btime_state, bnj, ROT270, "Data East USA (Bally Midway license)", "Bump 'n' Jump (Midway)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, caractn, brubber, bnj, bnj, btime_state, bnj, ROT270, "bootleg", "Car Action (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, caractn2, brubber, bnj, caractn2, btime_state, bnj, ROT270, "bootleg", "Car Action (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zoar, 0, zoar, zoar, btime_state, zoar, ROT270, "Data East USA", "Zoar", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, disco, 0, disco, disco, btime_state, disco, ROT270, "Data East", "Disco No.1", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, discof, disco, disco, disco, btime_state, disco, ROT270, "Data East", "Disco No.1 (Rev.F)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, sdtennis, 0, sdtennis, sdtennis, btime_state, sdtennis, ROT270, "Data East Corporation", "Super Doubles Tennis", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/btoads.cpp b/src/mame/drivers/btoads.cpp index ca703c7c948..86d402c5c41 100644 --- a/src/mame/drivers/btoads.cpp +++ b/src/mame/drivers/btoads.cpp @@ -300,7 +300,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( btoads, btoads_state ) +static MACHINE_CONFIG_START( btoads ) MCFG_CPU_ADD("maincpu", TMS34020, CPU_CLOCK/2) MCFG_CPU_PROGRAM_MAP(main_map) @@ -369,4 +369,4 @@ ROM_END * *************************************/ -GAME( 1994, btoads, 0, btoads, btoads, driver_device, 0, ROT0, "Rare / Electronic Arts", "Battletoads", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, btoads, 0, btoads, btoads, btoads_state, 0, ROT0, "Rare / Electronic Arts", "Battletoads", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bublbobl.cpp b/src/mame/drivers/bublbobl.cpp index 972b1a19c2d..11b139b0557 100644 --- a/src/mame/drivers/bublbobl.cpp +++ b/src/mame/drivers/bublbobl.cpp @@ -758,7 +758,7 @@ MACHINE_RESET_MEMBER(bublbobl_state,tokio) -static MACHINE_CONFIG_START( tokio, bublbobl_state ) +static MACHINE_CONFIG_START( tokio ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_XTAL/4) // 6 MHz @@ -853,7 +853,7 @@ MACHINE_RESET_MEMBER(bublbobl_state,bublbobl) m_port4_out = 0; } -static MACHINE_CONFIG_START( bublbobl, bublbobl_state ) +static MACHINE_CONFIG_START( bublbobl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_XTAL/4) // 6 MHz @@ -954,7 +954,7 @@ MACHINE_RESET_MEMBER(bub68705_state, bub68705) m_latch = 0; } -static MACHINE_CONFIG_DERIVED_CLASS( bub68705, bublbobl, bub68705_state ) +static MACHINE_CONFIG_DERIVED( bub68705, bublbobl ) /* basic machine hardware */ MCFG_DEVICE_REMOVE("mcu") @@ -1886,31 +1886,30 @@ DRIVER_INIT_MEMBER(bublbobl_state,dland) * *************************************/ -GAME( 1986, tokio, 0, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (newer)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, tokioo, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, tokiou, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito America Corporation (Romstar license)", "Tokio / Scramble Formation (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, tokiob, tokio, tokiob, tokio_base, bublbobl_state, tokio, ROT90, "bootleg", "Tokio / Scramble Formation (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, tokio, 0, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (newer)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, tokioo, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, tokiou, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito America Corporation (Romstar license)", "Tokio / Scramble Formation (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, tokiob, tokio, tokiob, tokio_base, bublbobl_state, tokio, ROT90, "bootleg", "Tokio / Scramble Formation (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, bublbobl, 0, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, bublbobl1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, bublboblr, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito America Corporation (Romstar license)", "Bubble Bobble (US, Ver 5.1)", MACHINE_SUPPORTS_SAVE ) // newest release, with mode select -GAME( 1986, bublboblr1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito America Corporation (Romstar license)", "Bubble Bobble (US, Ver 1.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, bublbobl, 0, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, bublbobl1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, bublboblr, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito America Corporation (Romstar license)", "Bubble Bobble (US, Ver 5.1)", MACHINE_SUPPORTS_SAVE ) // newest release, with mode select +GAME( 1986, bublboblr1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito America Corporation (Romstar license)", "Bubble Bobble (US, Ver 1.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, boblbobl, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Bobble Bobble (bootleg of Bubble Bobble)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, sboblbobl, bublbobl, boblbobl, sboblbobl, bublbobl_state, bublbobl, ROT0, "bootleg (Datsu)", "Super Bobble Bobble (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, sboblbobla, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, sboblboblb, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, sboblbobld, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, sboblboblc, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bubble Bobble (bootleg)", MACHINE_SUPPORTS_SAVE ) // the title screen on this one isn't hacked -GAME( 1986, bub68705, bublbobl, bub68705, bublbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Bubble Bobble (bootleg with 68705)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, boblbobl, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Bobble Bobble (bootleg of Bubble Bobble)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, sboblbobl, bublbobl, boblbobl, sboblbobl, bublbobl_state, bublbobl, ROT0, "bootleg (Datsu)", "Super Bobble Bobble (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, sboblbobla, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, sboblboblb, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, sboblbobld, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, sboblboblc, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bubble Bobble (bootleg)", MACHINE_SUPPORTS_SAVE ) // the title screen on this one isn't hacked +GAME( 1986, bub68705, bublbobl, bub68705, bublbobl, bub68705_state, bublbobl, ROT0, "bootleg", "Bubble Bobble (bootleg with 68705)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, dland, bublbobl, boblbobl, dland, bublbobl_state, dland, ROT0, "bootleg", "Dream Land / Super Dream Land (bootleg of Bubble Bobble)", MACHINE_SUPPORTS_SAVE ) -GAME( 2013, bbredux, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg (Punji)", "Bubble Bobble ('bootleg redux' hack for Bobble Bobble PCB)", MACHINE_SUPPORTS_SAVE ) // for use on non-MCU bootleg boards (Bobble Bobble etc.) has more faithful simulation of the protection device (JAN-04-2015 release) -GAME( 2013, bublboblb, bublbobl, boblbobl, boblcave, bublbobl_state, bublbobl, ROT0, "bootleg (Aladar)", "Bubble Bobble (for Bobble Bobble PCB)", MACHINE_SUPPORTS_SAVE ) // alt bootleg/hack to restore proper MCU behavior to bootleg boards +GAME( 2013, bbredux, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg (Punji)", "Bubble Bobble ('bootleg redux' hack for Bobble Bobble PCB)", MACHINE_SUPPORTS_SAVE ) // for use on non-MCU bootleg boards (Bobble Bobble etc.) has more faithful simulation of the protection device (JAN-04-2015 release) +GAME( 2013, bublboblb, bublbobl, boblbobl, boblcave, bublbobl_state, bublbobl, ROT0, "bootleg (Aladar)", "Bubble Bobble (for Bobble Bobble PCB)", MACHINE_SUPPORTS_SAVE ) // alt bootleg/hack to restore proper MCU behavior to bootleg boards -GAME( 2013, bublcave, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.2", MACHINE_SUPPORTS_SAVE ) -GAME( 2013, boblcave, bublbobl, boblbobl, boblcave, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.2 (for Bobble Bobble PCB)", MACHINE_SUPPORTS_SAVE ) - -GAME( 2012, bublcave11, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.1", MACHINE_SUPPORTS_SAVE ) -GAME( 2012, bublcave10, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.0", MACHINE_SUPPORTS_SAVE ) +GAME( 2013, bublcave, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.2", MACHINE_SUPPORTS_SAVE ) +GAME( 2013, boblcave, bublbobl, boblbobl, boblcave, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.2 (for Bobble Bobble PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 2012, bublcave11, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.1", MACHINE_SUPPORTS_SAVE ) +GAME( 2012, bublcave10, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "hack (Bisboch and Aladar)", "Bubble Bobble: Lost Cave V1.0", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/buggychl.cpp b/src/mame/drivers/buggychl.cpp index af4c211167e..ce3b2cafadc 100644 --- a/src/mame/drivers/buggychl.cpp +++ b/src/mame/drivers/buggychl.cpp @@ -366,7 +366,7 @@ void buggychl_state::machine_reset() m_bg_scrollx = 0; } -static MACHINE_CONFIG_START( buggychl, buggychl_state ) +static MACHINE_CONFIG_START( buggychl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz??? */ @@ -495,5 +495,5 @@ ROM_START( buggychlt ) ROM_END -GAMEL( 1984, buggychl, 0, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation", "Buggy Challenge", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_buggychl ) -GAMEL( 1984, buggychlt,buggychl, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation (Tecfri license)", "Buggy Challenge (Tecfri)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS| MACHINE_SUPPORTS_SAVE, layout_buggychl ) +GAMEL( 1984, buggychl, 0, buggychl, buggychl, buggychl_state, 0, ROT270, "Taito Corporation", "Buggy Challenge", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_buggychl ) +GAMEL( 1984, buggychlt,buggychl, buggychl, buggychl, buggychl_state, 0, ROT270, "Taito Corporation (Tecfri license)", "Buggy Challenge (Tecfri)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_buggychl ) diff --git a/src/mame/drivers/bullet.cpp b/src/mame/drivers/bullet.cpp index 58d444e0d26..c9ab6ce084f 100644 --- a/src/mame/drivers/bullet.cpp +++ b/src/mame/drivers/bullet.cpp @@ -60,6 +60,7 @@ Notes: #include "emu.h" #include "includes/bullet.h" + #include "bus/rs232/rs232.h" #include "bus/scsi/scsihd.h" #include "softlist.h" @@ -621,7 +622,7 @@ static ADDRESS_MAP_START( bullet_io, AS_IO, 8, bullet_state ) AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x03) AM_READWRITE(win_r, wstrobe_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(MB8877_TAG, mb8877_t, read, write) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(MB8877_TAG, mb8877_device, read, write) AM_RANGE(0x14, 0x14) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write) AM_RANGE(0x15, 0x15) AM_READWRITE(brom_r, brom_w) AM_RANGE(0x16, 0x16) AM_WRITE(exdsk_w) @@ -650,7 +651,7 @@ static ADDRESS_MAP_START( bulletf_io, AS_IO, 8, bulletf_state ) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(MB8877_TAG, mb8877_t, read, write) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(MB8877_TAG, mb8877_device, read, write) AM_RANGE(0x14, 0x14) AM_WRITE(xdma0_w) AM_RANGE(0x16, 0x16) AM_WRITE(xfdc_w) AM_RANGE(0x17, 0x17) AM_WRITE(mbank_w) @@ -1098,7 +1099,7 @@ void bulletf_state::machine_reset() // MACHINE_CONFIG( bullet ) //------------------------------------------------- -static MACHINE_CONFIG_START( bullet, bullet_state ) +static MACHINE_CONFIG_START( bullet ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_16MHz/4) MCFG_CPU_PROGRAM_MAP(bullet_mem) @@ -1178,7 +1179,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( bulletf ) //------------------------------------------------- -static MACHINE_CONFIG_START( bulletf, bulletf_state ) +static MACHINE_CONFIG_START( bulletf ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_16MHz/4) MCFG_CPU_PROGRAM_MAP(bulletf_mem) @@ -1292,7 +1293,7 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS // the setname 'bullet' is used by Sega's Bullet in MAME. -COMP( 1982, wmbullet, 0, 0, bullet, bullet, driver_device, 0, "Wave Mate", "Bullet", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1984, wmbulletf, wmbullet, 0, bulletf, bulletf, driver_device, 0, "Wave Mate", "Bullet (Revision F)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1982, wmbullet, 0, 0, bullet, bullet, bullet_state, 0, "Wave Mate", "Bullet", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1984, wmbulletf, wmbullet, 0, bulletf, bulletf, bulletf_state, 0, "Wave Mate", "Bullet (Revision F)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp index 338f42d3cf7..09a685d6114 100644 --- a/src/mame/drivers/busicom.cpp +++ b/src/mame/drivers/busicom.cpp @@ -212,7 +212,7 @@ void busicom_state::machine_reset() //static const char layout_busicom [] = "busicom"; -static MACHINE_CONFIG_START( busicom, busicom_state ) +static MACHINE_CONFIG_START( busicom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I4004, 750000) MCFG_CPU_PROGRAM_MAP(busicom_rom) @@ -247,5 +247,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1974, busicom, 0, 0, busicom, busicom, driver_device, 0, "Business Computer Corporation", "Busicom 141-PF", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1974, busicom, 0, 0, busicom, busicom, busicom_state, 0, "Business Computer Corporation", "Busicom 141-PF", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/buster.cpp b/src/mame/drivers/buster.cpp index 823fe6dfd35..04a181fa4b0 100644 --- a/src/mame/drivers/buster.cpp +++ b/src/mame/drivers/buster.cpp @@ -315,7 +315,7 @@ static GFXDECODE_START( buster ) GFXDECODE_END -static MACHINE_CONFIG_START( buster, buster_state ) +static MACHINE_CONFIG_START( buster ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL_3_579545MHz) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(mainmap) @@ -359,4 +359,4 @@ ROM_START( buster ) ROM_END -GAME( 1982, buster, 0, buster, buster, driver_device, 0, ROT0, "Marian Electronics Ltd.", "Buster", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 1982, buster, 0, buster, buster, buster_state, 0, ROT0, "Marian Electronics Ltd.", "Buster", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp index 0d5b6df097b..326405bc3bc 100644 --- a/src/mame/drivers/bw12.cpp +++ b/src/mame/drivers/bw12.cpp @@ -543,7 +543,7 @@ GFXDECODE_END /* Machine Driver */ -static MACHINE_CONFIG_START( common, bw12_state ) +static MACHINE_CONFIG_START( common ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_16MHz/4) MCFG_CPU_PROGRAM_MAP(bw12_mem) @@ -674,6 +674,6 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, bw12, 0, 0, bw12, bw12, driver_device, 0, "Bondwell Holding", "Bondwell 12", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, bw14, bw12, 0, bw14, bw12, driver_device, 0, "Bondwell Holding", "Bondwell 14", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, bw12, 0, 0, bw12, bw12, bw12_state, 0, "Bondwell Holding", "Bondwell 12", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, bw14, bw12, 0, bw14, bw12, bw12_state, 0, "Bondwell Holding", "Bondwell 14", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bw2.cpp b/src/mame/drivers/bw2.cpp index a20616600af..7af11dd172d 100644 --- a/src/mame/drivers/bw2.cpp +++ b/src/mame/drivers/bw2.cpp @@ -222,7 +222,7 @@ static ADDRESS_MAP_START( bw2_io, AS_IO, 8, bw2_state ) AM_RANGE(0x40, 0x40) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) AM_RANGE(0x41, 0x41) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) AM_RANGE(0x50, 0x50) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x60, 0x63) AM_DEVREADWRITE(WD2797_TAG, wd2797_t, read, write) + AM_RANGE(0x60, 0x63) AM_DEVREADWRITE(WD2797_TAG, wd2797_device, read, write) AM_RANGE(0x70, 0x7f) AM_DEVREADWRITE(BW2_EXPANSION_SLOT_TAG, bw2_expansion_slot_device, modsel_r, modsel_w) ADDRESS_MAP_END @@ -575,7 +575,7 @@ void bw2_state::machine_start() // MACHINE_CONFIG( bw2 ) //------------------------------------------------- -static MACHINE_CONFIG_START( bw2, bw2_state ) +static MACHINE_CONFIG_START( bw2 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_16MHz/4) MCFG_CPU_PROGRAM_MAP(bw2_mem) @@ -667,5 +667,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1985, bw2, 0, 0, bw2, bw2, driver_device, 0, "Bondwell Holding", "Bondwell Model 2", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, bw2, 0, 0, bw2, bw2, bw2_state, 0, "Bondwell Holding", "Bondwell Model 2", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/bwidow.cpp b/src/mame/drivers/bwidow.cpp index 3337d7b043d..31961b9c1b9 100644 --- a/src/mame/drivers/bwidow.cpp +++ b/src/mame/drivers/bwidow.cpp @@ -731,7 +731,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( bwidow, bwidow_state ) +static MACHINE_CONFIG_START( bwidow ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 8) @@ -1063,13 +1063,13 @@ ROM_END * *************************************/ -GAME( 1980, spacduel, 0, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (version 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacduel1,spacduel, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (version 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacduel0,spacduel, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bwidow, 0, bwidow, bwidow, driver_device, 0, ROT0, "Atari", "Black Widow", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bwidowp, bwidow, bwidowp, bwidow, driver_device, 0, ROT0, "Atari", "Black Widow (prototype)", MACHINE_NOT_WORKING ) -GAME( 1982, gravitar, 0, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, gravitar2,gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, gravitar1,gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, lunarbat, gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Lunar Battle (prototype, later)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, lunarba1, gravitar, lunarbat, lunarbat, driver_device, 0, ROT0, "Atari", "Lunar Battle (prototype, earlier)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacduel, 0, spacduel, spacduel, bwidow_state, 0, ROT0, "Atari", "Space Duel (version 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacduel1,spacduel, spacduel, spacduel, bwidow_state, 0, ROT0, "Atari", "Space Duel (version 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacduel0,spacduel, spacduel, spacduel, bwidow_state, 0, ROT0, "Atari", "Space Duel (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bwidow, 0, bwidow, bwidow, bwidow_state, 0, ROT0, "Atari", "Black Widow", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bwidowp, bwidow, bwidowp, bwidow, bwidow_state, 0, ROT0, "Atari", "Black Widow (prototype)", MACHINE_NOT_WORKING ) +GAME( 1982, gravitar, 0, gravitar, gravitar, bwidow_state, 0, ROT0, "Atari", "Gravitar (version 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, gravitar2,gravitar, gravitar, gravitar, bwidow_state, 0, ROT0, "Atari", "Gravitar (version 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, gravitar1,gravitar, gravitar, gravitar, bwidow_state, 0, ROT0, "Atari", "Gravitar (version 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, lunarbat, gravitar, gravitar, gravitar, bwidow_state, 0, ROT0, "Atari", "Lunar Battle (prototype, later)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, lunarba1, gravitar, lunarbat, lunarbat, bwidow_state, 0, ROT0, "Atari", "Lunar Battle (prototype, earlier)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bwing.cpp b/src/mame/drivers/bwing.cpp index c6eb42d9052..f298719e5db 100644 --- a/src/mame/drivers/bwing.cpp +++ b/src/mame/drivers/bwing.cpp @@ -358,7 +358,7 @@ void bwing_state::bwing_postload() } -static MACHINE_CONFIG_START( bwing, bwing_state ) +static MACHINE_CONFIG_START( bwing ) // basic machine hardware MCFG_CPU_ADD("maincpu", M6809, 2000000) diff --git a/src/mame/drivers/by17.cpp b/src/mame/drivers/by17.cpp index 6caa08eabd6..37ce01ef41d 100644 --- a/src/mame/drivers/by17.cpp +++ b/src/mame/drivers/by17.cpp @@ -973,7 +973,7 @@ MACHINE_RESET_MEMBER( by17_state, by17 ) -static MACHINE_CONFIG_START( by17, by17_state ) +static MACHINE_CONFIG_START( by17 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 530000) // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz MCFG_CPU_PROGRAM_MAP(by17_map) @@ -1119,12 +1119,12 @@ ROM_END GAME( 1976, bowarrow, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Bow & Arrow (Prototype)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1977, freedom, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Freedom", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1977, nightrdr, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Night Rider (rev. 21)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1977, nightr20, nightrdr, by17, by17, by17_state, by17, ROT0, "Bally", "Night Rider (rev. 20)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1978, blackjck, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Black Jack (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1977, evelknie, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Evel Knievel", MACHINE_IS_SKELETON_MECHANICAL) -GAMEL( 1978, matahari, 0, by17, matahari, by17_state, matahari, ROT0, "Bally", "Mata Hari", MACHINE_MECHANICAL | MACHINE_NOT_WORKING, layout_by17_matahari) -GAME( 1977, eightbll, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Eight Ball", MACHINE_IS_SKELETON_MECHANICAL) -GAMEL( 1978, pwerplay, 0, by17, pwerplay, by17_state, pwerplay, ROT0, "Bally", "Power Play (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING, layout_by17_pwerplay) -GAME( 1978, stk_sprs, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Strikes and Spares", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1977, freedom, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Freedom", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1977, nightrdr, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Night Rider (rev. 21)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1977, nightr20, nightrdr, by17, by17, by17_state, by17, ROT0, "Bally", "Night Rider (rev. 20)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1978, blackjck, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Black Jack (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1977, evelknie, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Evel Knievel", MACHINE_IS_SKELETON_MECHANICAL) +GAMEL( 1978, matahari, 0, by17, matahari, by17_state, matahari, ROT0, "Bally", "Mata Hari", MACHINE_MECHANICAL | MACHINE_NOT_WORKING, layout_by17_matahari) +GAME( 1977, eightbll, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Eight Ball", MACHINE_IS_SKELETON_MECHANICAL) +GAMEL( 1978, pwerplay, 0, by17, pwerplay, by17_state, pwerplay, ROT0, "Bally", "Power Play (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING, layout_by17_pwerplay) +GAME( 1978, stk_sprs, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Strikes and Spares", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/by35.cpp b/src/mame/drivers/by35.cpp index 236aa64d2fb..77da1de80cb 100644 --- a/src/mame/drivers/by35.cpp +++ b/src/mame/drivers/by35.cpp @@ -1074,7 +1074,7 @@ DISCRETE_SOUND_END -static MACHINE_CONFIG_START( by35, by35_state ) +static MACHINE_CONFIG_START( by35 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 530000) // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz MCFG_CPU_PROGRAM_MAP(by35_map) @@ -2394,83 +2394,83 @@ ROM_START(suprbowl) ROM_END // AS-2888 sound -GAME( 1979, sst, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Supersonic", MACHINE_IS_SKELETON_MECHANICAL) -GAMEL(1978, playboy, 0, as2888, playboy, by35_state, playboy, ROT0, "Bally", "Playboy", MACHINE_MECHANICAL | MACHINE_NOT_WORKING, layout_by35_playboy) -GAME( 1978, lostwrlp, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Lost World", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1978, smman, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Six Million Dollar Man", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1978, voltan, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Voltan Escapes Cosmic Doom", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1979, startrep, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Star Trek (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1979, kiss, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Kiss", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1979, sst, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Supersonic", MACHINE_IS_SKELETON_MECHANICAL) +GAMEL(1978, playboy, 0, as2888, playboy, by35_state, playboy, ROT0, "Bally", "Playboy", MACHINE_MECHANICAL | MACHINE_NOT_WORKING, layout_by35_playboy) +GAME( 1978, lostwrlp, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Lost World", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1978, smman, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Six Million Dollar Man", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1978, voltan, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Voltan Escapes Cosmic Doom", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1979, startrep, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Star Trek (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1979, kiss, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Kiss", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1979, hglbtrtr, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Harlem Globetrotters On Tour", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1979, dollyptn, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Dolly Parton", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1979, paragon, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Paragon", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1979, dollyptn, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Dolly Parton", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1979, paragon, 0, as2888, by35, by35_state, by35_6, ROT0, "Bally", "Paragon", MACHINE_IS_SKELETON_MECHANICAL) // AS-3022 sound -GAME( 1980, ngndshkr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Nitro Ground Shaker", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, slbmania, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Silverball Mania", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1979, futurspa, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Future Spa", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, spaceinv, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Space Invaders", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, rollston, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Rolling Stones", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, mystic, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Mystic", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, xenon, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Xenon", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, xenonf, xenon, by35, by35, by35_state, by35_6, ROT0, "Bally", "Xenon (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, viking, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Viking", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, hotdoggn, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Hotdoggin'", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, skatebll, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Skateball", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1980, frontier, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Frontier", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1982, speakesy, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Speakeasy", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1982, speakesy4p, speakesy, by35, by35, by35_state, by35_7, ROT0, "Bally", "Speakeasy 4 Player", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1983, bmx, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "BMX", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1983, granslam, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1983, granslam4, granslam, by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam (4 Players)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1983, goldball, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Gold Ball (set 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, ngndshkr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Nitro Ground Shaker", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, slbmania, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Silverball Mania", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1979, futurspa, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Future Spa", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, spaceinv, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Space Invaders", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, rollston, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Rolling Stones", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, mystic, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Mystic", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, xenon, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Xenon", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, xenonf, xenon, by35, by35, by35_state, by35_6, ROT0, "Bally", "Xenon (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, viking, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Viking", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, hotdoggn, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Hotdoggin'", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, skatebll, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Skateball", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1980, frontier, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Frontier", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1982, speakesy, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Speakeasy", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1982, speakesy4p, speakesy, by35, by35, by35_state, by35_7, ROT0, "Bally", "Speakeasy 4 Player", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1983, bmx, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "BMX", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1983, granslam, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1983, granslam4, granslam, by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam (4 Players)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1983, goldball, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Gold Ball (set 1)", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1983, goldballn, goldball, by35, by35, by35_state, by35_7, ROT0, "Bally", "Gold Ball (Field Service Upgrade)", MACHINE_IS_SKELETON_MECHANICAL) // Squawk & Talk sound -GAME( 1981, flashgdn, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1981, flashgdnf, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, flashgdn, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, flashgdnf, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon (French)", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1981, flashgdnv, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon (Vocalizer sound)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1981, fball_ii, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fireball II", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1981, eballdlx, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Eight Ball Deluxe (rev. 15)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1981, eballd14, eballdlx, by35, by35, by35_state, by35_7, ROT0, "Bally", "Eight Ball Deluxe (rev. 14)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1981, embryon, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Embryon", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1981, fathom, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fathom", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1981, centaur, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Centaur", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1981, medusa, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Medusa", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1982, vector, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Vector", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1981, elektra, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Elektra", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1982, spectrm, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spectrum", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1982, spectrm4, spectrm, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spectrum (ver 4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1982, rapidfip, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Rapid Fire", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1982, m_mpac, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, fball_ii, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fireball II", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, eballdlx, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Eight Ball Deluxe (rev. 15)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, eballd14, eballdlx, by35, by35, by35_state, by35_7, ROT0, "Bally", "Eight Ball Deluxe (rev. 14)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, embryon, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Embryon", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, fathom, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fathom", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, centaur, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Centaur", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, medusa, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Medusa", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1982, vector, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Vector", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1981, elektra, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Elektra", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1982, spectrm, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spectrum", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1982, spectrm4, spectrm, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spectrum (ver 4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1982, rapidfip, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Rapid Fire", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1982, m_mpac, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan", MACHINE_IS_SKELETON_MECHANICAL) // Cheap Squeak sound -GAME( 1984, kosteel, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Kings of Steel", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1983, xsandos, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "X's & O's", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1984, kosteel, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Kings of Steel", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1983, xsandos, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "X's & O's", MACHINE_IS_SKELETON_MECHANICAL) GAME( 1984, spyhuntr, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spy Hunter (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1984, fbclass, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fireball Classic", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1984, blakpyra, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Black Pyramid", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1985, cybrnaut, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Cybernaut", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1984, fbclass, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fireball Classic", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1984, blakpyra, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Black Pyramid", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1985, cybrnaut, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Cybernaut", MACHINE_IS_SKELETON_MECHANICAL) // Other manufacturers -GAME( 1984, suprbowl, xsandos, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Super Bowl", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1984, tigerrag, kosteel, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Tiger Rag", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1985, cosflash, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Cosmic Flash", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1985, newwave, blakpyra, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "New Wave", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1985, saturn2, spyhuntr, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Saturn 2", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1985, worlddef, 0, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "World Defender", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, spacehaw, cybrnaut, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Space Hawks", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, darkshad, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Dark Shadow", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, skflight, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Skill Flight", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, cobrap, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Cobra", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, futrquen, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Future Queen", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, f1gpp, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "F1 Grand Prix", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1988, toppin, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Top Pin", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1988, uboat65, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "U-boat 65", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, bullseye, 0, by35, by35, by35_state, by35_7, ROT0, "Grand Products", "301/Bullseye", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1988, bbbowlin, 0, by35, by35, by35_state, by35_7, ROT0, "United", "Big Ball Bowling (Bowler)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1988, monrobwl, 0, by35, by35, by35_state, by35_7, ROT0, "Monroe Bowling Co.", "Stars & Strikes (Bowler)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1984, bigbat, 0, by35, by35, by35_state, by35_7, ROT0, "Bally Midway", "Big Bat (Bat game)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1984, mdntmrdr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally Midway", "Midnight Marauders (Gun game)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1988, blbeauty, 0, by35, by35, by35_state, by35_7, ROT0, "Stern", "Black Beauty (Shuffle)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1984, myststar, 0, by35, by35, by35_state, by35_6, ROT0, "Zaccaria", "Mystic Star", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1984, suprbowl, xsandos, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Super Bowl", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1984, tigerrag, kosteel, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Tiger Rag", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1985, cosflash, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Cosmic Flash", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1985, newwave, blakpyra, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "New Wave", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1985, saturn2, spyhuntr, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Saturn 2", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1985, worlddef, 0, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "World Defender", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, spacehaw, cybrnaut, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Space Hawks", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, darkshad, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Dark Shadow", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, skflight, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Skill Flight", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, cobrap, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Cobra", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, futrquen, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Future Queen", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, f1gpp, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "F1 Grand Prix", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1988, toppin, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Top Pin", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1988, uboat65, 0, nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "U-boat 65", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, bullseye, 0, by35, by35, by35_state, by35_7, ROT0, "Grand Products", "301/Bullseye", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1988, bbbowlin, 0, by35, by35, by35_state, by35_7, ROT0, "United", "Big Ball Bowling (Bowler)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1988, monrobwl, 0, by35, by35, by35_state, by35_7, ROT0, "Monroe Bowling Co.", "Stars & Strikes (Bowler)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1984, bigbat, 0, by35, by35, by35_state, by35_7, ROT0, "Bally Midway", "Big Bat (Bat game)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1984, mdntmrdr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally Midway", "Midnight Marauders (Gun game)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1988, blbeauty, 0, by35, by35, by35_state, by35_7, ROT0, "Stern", "Black Beauty (Shuffle)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1984, myststar, 0, by35, by35, by35_state, by35_6, ROT0, "Zaccaria", "Mystic Star", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/by6803.cpp b/src/mame/drivers/by6803.cpp index fde70694d11..645a7bbe7eb 100644 --- a/src/mame/drivers/by6803.cpp +++ b/src/mame/drivers/by6803.cpp @@ -369,7 +369,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( by6803_state::pia0_timer ) m_pia0->cb1_w(m_pia0_timer); } -static MACHINE_CONFIG_START( by6803, by6803_state ) +static MACHINE_CONFIG_START( by6803 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6803, XTAL_3_579545MHz) MCFG_CPU_PROGRAM_MAP(by6803_map) @@ -714,27 +714,27 @@ ROM_START(trucksp2) ROM_END -GAME( 1985, eballchp, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Eight Ball Champ", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1985, beatclck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Beat the Clock", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, motrdome, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","MotorDome", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, motrdomeg, motrdome, by6803, by6803, by6803_state, by6803, ROT0, "Bally","MotorDome (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, ladyluck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Lady Luck", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, strngsci, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Strange Science", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, strngscg, strngsci, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Strange Science (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, specforc, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Special Force", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, blackblt, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Black Belt", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1986, blackblt2, blackblt, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Black Belt (Squawk and Talk)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, cityslck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","City Slicker", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, hardbody, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Hardbody", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, hardbodyg, hardbody, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Hardbody (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, prtyanim, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Party Animal", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, prtyanimg, prtyanim, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Party Animal (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, hvymetap, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Heavy Metal Meltdown", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, esclwrld, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Escape from the Lost World", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, esclwrldg, esclwrld, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Escape from the Lost World (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, dungdrag, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Dungeons & Dragons", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1988, black100, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Blackwater 100", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1988, black100s, black100, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Blackwater 100 (Single Ball Play)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1988, trucksp3, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Truck Stop (P-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1988, trucksp2, trucksp3, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Truck Stop (P-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1989, atlantip, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Atlantis", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1985, eballchp, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Eight Ball Champ", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1985, beatclck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Beat the Clock", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, motrdome, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "MotorDome", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, motrdomeg, motrdome, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "MotorDome (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, ladyluck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Lady Luck", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, strngsci, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Strange Science", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, strngscg, strngsci, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Strange Science (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, specforc, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Special Force", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, blackblt, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Black Belt", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1986, blackblt2, blackblt, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Black Belt (Squawk and Talk)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, cityslck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "City Slicker", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, hardbody, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Hardbody", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, hardbodyg, hardbody, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Hardbody (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, prtyanim, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Party Animal", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, prtyanimg, prtyanim, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Party Animal (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, hvymetap, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Heavy Metal Meltdown", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, esclwrld, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Escape from the Lost World", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, esclwrldg, esclwrld, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Escape from the Lost World (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, dungdrag, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Dungeons & Dragons", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1988, black100, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Blackwater 100", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1988, black100s, black100, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Blackwater 100 (Single Ball Play)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1988, trucksp3, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Truck Stop (P-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1988, trucksp2, trucksp3, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Truck Stop (P-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1989, atlantip, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally", "Atlantis", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/by68701.cpp b/src/mame/drivers/by68701.cpp index 4dbcec6d9b6..797b98188a0 100644 --- a/src/mame/drivers/by68701.cpp +++ b/src/mame/drivers/by68701.cpp @@ -43,7 +43,7 @@ DRIVER_INIT_MEMBER(by68701_state,by68701) { } -static MACHINE_CONFIG_START( by68701, by68701_state ) +static MACHINE_CONFIG_START( by68701 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6803, 3579545/4) MCFG_CPU_PROGRAM_MAP(by68701_map) @@ -132,7 +132,7 @@ ROM_END GAME(1981, flashgdnp1, flashgdn, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Flash Gordon (prototype rev. 1)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1981, flashgdnp2, flashgdn, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Flash Gordon (prototype rev. 2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, eballdlxp1, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, eballdlxp2, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, eballdlxp3, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, eballdlxp4, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, eballdlxp1, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, eballdlxp2, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, eballdlxp3, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, eballdlxp4, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 4)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/byvid.cpp b/src/mame/drivers/byvid.cpp index 8a76cd98297..76828c7e2eb 100644 --- a/src/mame/drivers/byvid.cpp +++ b/src/mame/drivers/byvid.cpp @@ -740,7 +740,7 @@ uint32_t by133_state::screen_update_granny(screen_device &screen, bitmap_rgb32 & return 0; } -static MACHINE_CONFIG_START( babypac, by133_state ) +static MACHINE_CONFIG_START( babypac ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_3_579545MHz/4) // no xtal, just 2 chips MCFG_CPU_PROGRAM_MAP(main_map) @@ -817,8 +817,8 @@ static MACHINE_CONFIG_DERIVED( granny, babypac ) MCFG_VIDEO_SET_SCREEN("screen") MCFG_SCREEN_ADD( "screen", RASTER ) - MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, TMS9928A_TOTAL_HORZ, TMS9928A_HORZ_DISPLAY_START-12, TMS9928A_HORZ_DISPLAY_START + 256 + 12, \ - TMS9928A_TOTAL_VERT_NTSC, TMS9928A_VERT_DISPLAY_START_NTSC - 12, TMS9928A_VERT_DISPLAY_START_NTSC + 192 + 12 ) + MCFG_SCREEN_RAW_PARAMS( XTAL_10_738635MHz / 2, tms9928a_device::TOTAL_HORZ, tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ + tms9928a_device::TOTAL_VERT_NTSC, tms9928a_device::VERT_DISPLAY_START_NTSC - 12, tms9928a_device::VERT_DISPLAY_START_NTSC + 192 + 12 ) MCFG_SCREEN_UPDATE_DRIVER(by133_state, screen_update_granny) MACHINE_CONFIG_END @@ -877,6 +877,6 @@ ROM_START(granny) ROM_END -GAME( 1982, babypac, 0, babypac, babypac, driver_device, 0, ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1982, babypac2, babypac, babypac, babypac, driver_device, 0, ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1984, granny, 0, granny, granny, driver_device, 0, ROT0, "Bally", "Granny and the Gators", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1982, babypac, 0, babypac, babypac, by133_state, 0, ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1982, babypac2, babypac, babypac, babypac, by133_state, 0, ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1984, granny, 0, granny, granny, by133_state, 0, ROT0, "Bally", "Granny and the Gators", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/bzone.cpp b/src/mame/drivers/bzone.cpp index 3ec19892346..2923fdf4182 100644 --- a/src/mame/drivers/bzone.cpp +++ b/src/mame/drivers/bzone.cpp @@ -535,7 +535,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( bzone_base, bzone_state ) +static MACHINE_CONFIG_START( bzone_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, BZONE_MASTER_CLOCK / 8) @@ -881,9 +881,9 @@ DRIVER_INIT_MEMBER(bzone_state,bradley) * *************************************/ -GAMEL(1980, bzone, 0, bzone, bzone, driver_device, 0, ROT0, "Atari", "Battle Zone (rev 2)", MACHINE_SUPPORTS_SAVE, layout_bzone ) -GAMEL(1980, bzonea, bzone, bzone, bzone, driver_device, 0, ROT0, "Atari", "Battle Zone (rev 1)", MACHINE_SUPPORTS_SAVE, layout_bzone ) -GAMEL(1980, bzonec, bzone, bzone, bzone, driver_device, 0, ROT0, "Atari", "Battle Zone (cocktail)", MACHINE_SUPPORTS_SAVE|MACHINE_NO_COCKTAIL, layout_bzone ) -GAME( 1980, bradley, 0, bzone, bradley, bzone_state, bradley, ROT0, "Atari", "Bradley Trainer", MACHINE_SUPPORTS_SAVE ) -GAMEL(1980, redbaron, 0, redbaron, redbaron, driver_device, 0, ROT0, "Atari", "Red Baron (Revised Hardware)", MACHINE_SUPPORTS_SAVE, layout_redbaron ) -GAMEL(1980, redbarona, redbaron, redbaron, redbaron, driver_device, 0, ROT0, "Atari", "Red Baron", MACHINE_SUPPORTS_SAVE, layout_redbaron ) +GAMEL(1980, bzone, 0, bzone, bzone, bzone_state, 0, ROT0, "Atari", "Battle Zone (rev 2)", MACHINE_SUPPORTS_SAVE, layout_bzone ) +GAMEL(1980, bzonea, bzone, bzone, bzone, bzone_state, 0, ROT0, "Atari", "Battle Zone (rev 1)", MACHINE_SUPPORTS_SAVE, layout_bzone ) +GAMEL(1980, bzonec, bzone, bzone, bzone, bzone_state, 0, ROT0, "Atari", "Battle Zone (cocktail)", MACHINE_SUPPORTS_SAVE|MACHINE_NO_COCKTAIL, layout_bzone ) +GAME( 1980, bradley, 0, bzone, bradley, bzone_state, bradley, ROT0, "Atari", "Bradley Trainer", MACHINE_SUPPORTS_SAVE ) +GAMEL(1980, redbaron, 0, redbaron, redbaron, bzone_state, 0, ROT0, "Atari", "Red Baron (Revised Hardware)", MACHINE_SUPPORTS_SAVE, layout_redbaron ) +GAMEL(1980, redbarona, redbaron, redbaron, redbaron, bzone_state, 0, ROT0, "Atari", "Red Baron", MACHINE_SUPPORTS_SAVE, layout_redbaron ) diff --git a/src/mame/drivers/c10.cpp b/src/mame/drivers/c10.cpp index 647fed9995d..7128a632e2f 100644 --- a/src/mame/drivers/c10.cpp +++ b/src/mame/drivers/c10.cpp @@ -149,7 +149,7 @@ static GFXDECODE_START( c10 ) GFXDECODE_END -static MACHINE_CONFIG_START( c10, c10_state ) +static MACHINE_CONFIG_START( c10 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(c10_mem) @@ -184,5 +184,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, c10, 0, 0, c10, c10, c10_state, c10, "Cromemco", "C-10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1982, c10, 0, 0, c10, c10, c10_state, c10, "Cromemco", "C-10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/c128.cpp b/src/mame/drivers/c128.cpp index 94476a3f0a0..b61047dfef3 100644 --- a/src/mame/drivers/c128.cpp +++ b/src/mame/drivers/c128.cpp @@ -1672,7 +1672,7 @@ void c128_state::machine_reset() // MACHINE_CONFIG( ntsc ) //------------------------------------------------- -static MACHINE_CONFIG_START( ntsc, c128_state ) +static MACHINE_CONFIG_START( ntsc ) // basic hardware MCFG_CPU_ADD(Z80A_TAG, Z80, XTAL_14_31818MHz*2/3.5/2) MCFG_CPU_PROGRAM_MAP(z80_mem) @@ -1843,7 +1843,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( pal ) //------------------------------------------------- -static MACHINE_CONFIG_START( pal, c128_state ) +static MACHINE_CONFIG_START( pal ) // basic hardware MCFG_CPU_ADD(Z80A_TAG, Z80, XTAL_17_734472MHz*2/4.5/2) MCFG_CPU_PROGRAM_MAP(z80_mem) @@ -2177,22 +2177,22 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1985, c128, 0, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, c128p, 0, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (PAL)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, c128_de, c128, 0, c128pal, c128_de, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Germany)", MACHINE_SUPPORTS_SAVE ) -//COMP( 1985, c128_fr, c128, 0, c128pal, c128_fr, driver_device, 0, "Commodore Business Machines", "Commodore 128 (France)", MACHINE_SUPPORTS_SAVE ) -//COMP( 1985, c128_no, c128, 0, c128pal, c128_it, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Norway)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, c128_se, c128, 0, c128pal, c128_se, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, c128d, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (NTSC, prototype)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, c128dp, c128, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (PAL)", MACHINE_SUPPORTS_SAVE ) - -COMP( 1986, c128cr, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128CR (NTSC, prototype)", MACHINE_SUPPORTS_SAVE ) - -COMP( 1987, c128dcr, c128, 0, c128dcr, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1987, c128dcrp, c128, 0, c128dcrp, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (PAL)", MACHINE_SUPPORTS_SAVE ) -COMP( 1987, c128dcr_de, c128, 0, c128dcrp, c128_de, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Germany)", MACHINE_SUPPORTS_SAVE ) -//COMP( 1986, c128dcr_it, c128, 0, c128dcrp, c128_it, driver_device, 0,"Commodore Business Machines", "Commodore 128DCR (Italy)", MACHINE_SUPPORTS_SAVE ) -COMP( 1987, c128dcr_se, c128, 0, c128dcrp, c128_se, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) - -COMP( 1986, c128d81, c128, 0, c128d81, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D/81 (NTSC, prototype)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE COMPANY FULLNAME FLAGS +COMP( 1985, c128, 0, 0, c128, c128, c128_state, 0, "Commodore Business Machines", "Commodore 128 (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, c128p, 0, 0, c128pal, c128, c128_state, 0, "Commodore Business Machines", "Commodore 128 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, c128_de, c128, 0, c128pal, c128_de, c128_state, 0, "Commodore Business Machines", "Commodore 128 (Germany)", MACHINE_SUPPORTS_SAVE ) +//COMP( 1985, c128_fr, c128, 0, c128pal, c128_fr, c128_state, 0, "Commodore Business Machines", "Commodore 128 (France)", MACHINE_SUPPORTS_SAVE ) +//COMP( 1985, c128_no, c128, 0, c128pal, c128_it, c128_state, 0, "Commodore Business Machines", "Commodore 128 (Norway)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, c128_se, c128, 0, c128pal, c128_se, c128_state, 0, "Commodore Business Machines", "Commodore 128 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, c128d, c128, 0, c128, c128, c128_state, 0, "Commodore Business Machines", "Commodore 128D (NTSC, prototype)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, c128dp, c128, 0, c128pal, c128, c128_state, 0, "Commodore Business Machines", "Commodore 128D (PAL)", MACHINE_SUPPORTS_SAVE ) + +COMP( 1986, c128cr, c128, 0, c128, c128, c128_state, 0, "Commodore Business Machines", "Commodore 128CR (NTSC, prototype)", MACHINE_SUPPORTS_SAVE ) + +COMP( 1987, c128dcr, c128, 0, c128dcr, c128, c128_state, 0, "Commodore Business Machines", "Commodore 128DCR (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1987, c128dcrp, c128, 0, c128dcrp, c128, c128_state, 0, "Commodore Business Machines", "Commodore 128DCR (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1987, c128dcr_de, c128, 0, c128dcrp, c128_de, c128_state, 0, "Commodore Business Machines", "Commodore 128DCR (Germany)", MACHINE_SUPPORTS_SAVE ) +//COMP( 1986, c128dcr_it, c128, 0, c128dcrp, c128_it, c128_state, 0,"Commodore Business Machines", "Commodore 128DCR (Italy)", MACHINE_SUPPORTS_SAVE ) +COMP( 1987, c128dcr_se, c128, 0, c128dcrp, c128_se, c128_state, 0, "Commodore Business Machines", "Commodore 128DCR (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) + +COMP( 1986, c128d81, c128, 0, c128d81, c128, c128_state, 0, "Commodore Business Machines", "Commodore 128D/81 (NTSC, prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/c64.cpp b/src/mame/drivers/c64.cpp index 616a95b1563..6f4dfc5955b 100644 --- a/src/mame/drivers/c64.cpp +++ b/src/mame/drivers/c64.cpp @@ -1311,7 +1311,7 @@ void c64_state::machine_reset() // MACHINE_CONFIG( ntsc ) //------------------------------------------------- -static MACHINE_CONFIG_START( ntsc, c64_state ) +static MACHINE_CONFIG_START( ntsc ) // basic hardware MCFG_CPU_ADD(M6510_TAG, M6510, XTAL_14_31818MHz/14) MCFG_CPU_PROGRAM_MAP(c64_mem) @@ -1424,7 +1424,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( ntsc_sx ) //------------------------------------------------- -static MACHINE_CONFIG_START( ntsc_sx, sx64_state ) +static MACHINE_CONFIG_START( ntsc_sx ) MCFG_FRAGMENT_ADD(ntsc) // basic hardware @@ -1442,7 +1442,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( ntsc_dx ) //------------------------------------------------- -static MACHINE_CONFIG_START( ntsc_dx, sx64_state ) +static MACHINE_CONFIG_START( ntsc_dx ) MCFG_FRAGMENT_ADD(ntsc_sx) // devices @@ -1455,7 +1455,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( ntsc_c ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( ntsc_c, ntsc, c64c_state ) +static MACHINE_CONFIG_DERIVED( ntsc_c, ntsc ) MCFG_SOUND_REPLACE(MOS6581_TAG, MOS8580, XTAL_14_31818MHz/14) MCFG_MOS6581_POTX_CALLBACK(READ8(c64_state, sid_potx_r)) MCFG_MOS6581_POTY_CALLBACK(READ8(c64_state, sid_poty_r)) @@ -1467,7 +1467,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( pal ) //------------------------------------------------- -static MACHINE_CONFIG_START( pal, c64_state ) +static MACHINE_CONFIG_START( pal ) // basic hardware MCFG_CPU_ADD(M6510_TAG, M6510, XTAL_17_734472MHz/18) MCFG_CPU_PROGRAM_MAP(c64_mem) @@ -1572,7 +1572,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( pal_sx ) //------------------------------------------------- -static MACHINE_CONFIG_START( pal_sx, sx64_state ) +static MACHINE_CONFIG_START( pal_sx ) MCFG_FRAGMENT_ADD(pal) // basic hardware @@ -1590,7 +1590,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( pal_c ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( pal_c, pal, c64c_state ) +static MACHINE_CONFIG_DERIVED( pal_c, pal ) MCFG_SOUND_REPLACE(MOS6581_TAG, MOS8580, XTAL_17_734472MHz/18) MCFG_MOS6581_POTX_CALLBACK(READ8(c64_state, sid_potx_r)) MCFG_MOS6581_POTY_CALLBACK(READ8(c64_state, sid_poty_r)) @@ -1602,7 +1602,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( pal_gs ) //------------------------------------------------- -static MACHINE_CONFIG_START( pal_gs, c64gs_state ) +static MACHINE_CONFIG_START( pal_gs ) // basic hardware MCFG_CPU_ADD(M6510_TAG, M6510, XTAL_17_734472MHz/18) MCFG_CPU_PROGRAM_MAP(c64_mem) @@ -2020,21 +2020,21 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1982, c64, 0, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1982, c64_jp, c64, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (Japan)", MACHINE_SUPPORTS_SAVE ) -COMP( 1982, c64p, c64, 0, pal, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (PAL)", MACHINE_SUPPORTS_SAVE ) -COMP( 1982, c64_se, c64, 0, pal, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64 / VIC-64S (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, pet64, c64, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "PET 64 / CBM 4064 (NTSC)", MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) -COMP( 1983, edu64, c64, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "Educator 64 (NTSC)", MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) -COMP( 1984, sx64, c64, 0, ntsc_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, sx64p, c64, 0, pal_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (PAL)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, vip64, c64, 0, pal_sx, c64sw, driver_device, 0, "Commodore Business Machines", "VIP-64 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, dx64, c64, 0, ntsc_dx, c64, driver_device, 0, "Commodore Business Machines", "DX-64 (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, tesa6240,c64, 0, pal_sx, c64, driver_device, 0, "Tesa Etikett", "Etikettendrucker 6240", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, c64c, c64, 0, ntsc_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, c64cp, c64, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (PAL)", MACHINE_SUPPORTS_SAVE ) -COMP( 1988, c64c_es, c64, 0, pal_c, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64C (Spain)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, c64c_se, c64, 0, pal_c, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64C (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, c64g, c64, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64G (PAL)", MACHINE_SUPPORTS_SAVE ) -CONS( 1990, c64gs, c64, 0, pal_gs, c64gs, driver_device, 0, "Commodore Business Machines", "Commodore 64 Games System (PAL)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, c64, 0, 0, ntsc, c64, c64_state, 0, "Commodore Business Machines", "Commodore 64 (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, c64_jp, c64, 0, ntsc, c64, c64_state, 0, "Commodore Business Machines", "Commodore 64 (Japan)", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, c64p, c64, 0, pal, c64, c64_state, 0, "Commodore Business Machines", "Commodore 64 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, c64_se, c64, 0, pal, c64sw, c64_state, 0, "Commodore Business Machines", "Commodore 64 / VIC-64S (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, pet64, c64, 0, pet64, c64, c64_state, 0, "Commodore Business Machines", "PET 64 / CBM 4064 (NTSC)", MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) +COMP( 1983, edu64, c64, 0, pet64, c64, c64_state, 0, "Commodore Business Machines", "Educator 64 (NTSC)", MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) +COMP( 1984, sx64, c64, 0, ntsc_sx, c64, sx64_state, 0, "Commodore Business Machines", "SX-64 / Executive 64 (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, sx64p, c64, 0, pal_sx, c64, sx64_state, 0, "Commodore Business Machines", "SX-64 / Executive 64 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, vip64, c64, 0, pal_sx, c64sw, sx64_state, 0, "Commodore Business Machines", "VIP-64 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, dx64, c64, 0, ntsc_dx, c64, sx64_state, 0, "Commodore Business Machines", "DX-64 (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, tesa6240,c64, 0, pal_sx, c64, sx64_state, 0, "Tesa Etikett", "Etikettendrucker 6240", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, c64c, c64, 0, ntsc_c, c64, c64c_state, 0, "Commodore Business Machines", "Commodore 64C (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, c64cp, c64, 0, pal_c, c64, c64c_state, 0, "Commodore Business Machines", "Commodore 64C (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1988, c64c_es, c64, 0, pal_c, c64sw, c64c_state, 0, "Commodore Business Machines", "Commodore 64C (Spain)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, c64c_se, c64, 0, pal_c, c64sw, c64c_state, 0, "Commodore Business Machines", "Commodore 64C (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, c64g, c64, 0, pal_c, c64, c64c_state, 0, "Commodore Business Machines", "Commodore 64G (PAL)", MACHINE_SUPPORTS_SAVE ) +CONS( 1990, c64gs, c64, 0, pal_gs, c64gs, c64gs_state, 0, "Commodore Business Machines", "Commodore 64 Games System (PAL)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/c64dtv.cpp b/src/mame/drivers/c64dtv.cpp index bb05a15effa..c2d0cf6a62b 100644 --- a/src/mame/drivers/c64dtv.cpp +++ b/src/mame/drivers/c64dtv.cpp @@ -37,7 +37,7 @@ INPUT_PORTS_END // MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( c64dtv, c64dtv_state ) +static MACHINE_CONFIG_START( c64dtv ) // video hardware MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_UPDATE_DRIVER(c64dtv_state, screen_update) @@ -66,4 +66,4 @@ ROM_END // GAME DRIVERS //************************************************************************** -CONS( 2005, c64dtv, 0, 0, c64dtv, c64dtv, driver_device, 0, "The Toy:Lobster Company", "Commodore 64 Direct-to-TV (Version 2 050711) (PAL)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 2005, c64dtv, 0, 0, c64dtv, c64dtv, c64dtv_state, 0, "The Toy:Lobster Company", "Commodore 64 Direct-to-TV (Version 2 050711) (PAL)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/c65.cpp b/src/mame/drivers/c65.cpp index e7b8c1f192e..82e6ce4bb5e 100644 --- a/src/mame/drivers/c65.cpp +++ b/src/mame/drivers/c65.cpp @@ -582,7 +582,7 @@ WRITE_LINE_MEMBER(c65_state::cia0_irq) // c65_irq(state || m_vicirq); } -static MACHINE_CONFIG_START( c65, c65_state ) +static MACHINE_CONFIG_START( c65 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M4510,MAIN_CLOCK) diff --git a/src/mame/drivers/c80.cpp b/src/mame/drivers/c80.cpp index 2c0f3163f43..953b98852e0 100644 --- a/src/mame/drivers/c80.cpp +++ b/src/mame/drivers/c80.cpp @@ -251,7 +251,7 @@ void c80_state::machine_start() /* Machine Driver */ -static MACHINE_CONFIG_START( c80, c80_state ) +static MACHINE_CONFIG_START( c80 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, 2500000) /* U880D */ MCFG_CPU_PROGRAM_MAP(c80_mem) @@ -294,5 +294,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, c80, 0, 0, c80, c80, driver_device, 0, "Joachim Czepa", "C-80", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1986, c80, 0, 0, c80, c80, c80_state, 0, "Joachim Czepa", "C-80", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/c900.cpp b/src/mame/drivers/c900.cpp index cce2db85f8e..4ded9072ca8 100644 --- a/src/mame/drivers/c900.cpp +++ b/src/mame/drivers/c900.cpp @@ -39,7 +39,8 @@ public: DECLARE_READ16_MEMBER(port1e_r); DECLARE_READ16_MEMBER(key_r); DECLARE_READ16_MEMBER(stat_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); + private: uint8_t m_term_data; required_device m_maincpu; @@ -83,7 +84,7 @@ READ16_MEMBER( c900_state::stat_r ) return (m_term_data) ? 6 : 4; } -WRITE8_MEMBER( c900_state::kbd_put ) +void c900_state::kbd_put(u8 data) { m_term_data = data; } @@ -106,7 +107,7 @@ static GFXDECODE_START( c900 ) GFXDECODE_ENTRY( "chargen", 0x0000, c900_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( c900, c900_state ) +static MACHINE_CONFIG_START( c900 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z8001, XTAL_12MHz / 2) MCFG_CPU_PROGRAM_MAP(c900_mem) @@ -114,7 +115,7 @@ static MACHINE_CONFIG_START( c900, c900_state ) MCFG_CPU_IO_MAP(c900_io) MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(c900_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(c900_state, kbd_put)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", c900) MCFG_PALETTE_ADD_MONOCHROME("palette") MACHINE_CONFIG_END @@ -131,5 +132,5 @@ ROM_START( c900 ) ROM_LOAD( "380217-01.u2", 0x0000, 0x1000, CRC(64cb4171) SHA1(e60d796170addfd27e2c33090f9c512c7e3f99f5) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, c900, 0, 0, c900, c900, driver_device, 0, "Commodore", "Commodore 900", MACHINE_IS_SKELETON ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1985, c900, 0, 0, c900, c900, c900_state, 0, "Commodore", "Commodore 900", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/cabal.cpp b/src/mame/drivers/cabal.cpp index c902f0c13de..9daf83d4b0c 100644 --- a/src/mame/drivers/cabal.cpp +++ b/src/mame/drivers/cabal.cpp @@ -502,7 +502,7 @@ static GFXDECODE_START( cabal ) GFXDECODE_END -static MACHINE_CONFIG_START( cabal, cabal_state ) +static MACHINE_CONFIG_START( cabal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) /* verified on pcb */ @@ -560,7 +560,7 @@ MACHINE_CONFIG_END /* the bootleg has different sound hardware (2 extra Z80s for ADPCM playback) */ -static MACHINE_CONFIG_START( cabalbl, cabal_state ) +static MACHINE_CONFIG_START( cabalbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) /* verified on pcb */ @@ -611,11 +611,11 @@ static MACHINE_CONFIG_START( cabalbl, cabal_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80) MCFG_SOUND_ADD("msm1", MSM5205, XTAL_12MHz/32) /* verified on pcb (no resonator) */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MCFG_SOUND_ADD("msm2", MSM5205, XTAL_12MHz/32) /* verified on pcb (no resonator)*/ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END @@ -921,11 +921,11 @@ DRIVER_INIT_MEMBER(cabal_state,cabal) } -GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Korea?, Joystick)", MACHINE_SUPPORTS_SAVE ) // korea? -GAME( 1988, cabalbl, cabal, cabalbl, cabalbl,driver_device, 0, ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, cabalbl2,cabal, cabalbl2,cabalj, cabal_state, cabal, ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Korea?, Joystick)", MACHINE_SUPPORTS_SAVE ) // korea? +GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, cabal_state, 0, ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, cabalbl2,cabal, cabalbl2,cabalj, cabal_state, cabal, ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, cabalus, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, cabalus2,cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, cabaluk, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Electrocoin license)", "Cabal (UK, Trackball)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, cabalus, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, cabalus2,cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cabaluk, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Electrocoin license)", "Cabal (UK, Trackball)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cabaret.cpp b/src/mame/drivers/cabaret.cpp index cc4412f52e2..98c8438ab32 100644 --- a/src/mame/drivers/cabaret.cpp +++ b/src/mame/drivers/cabaret.cpp @@ -341,7 +341,7 @@ INTERRUPT_GEN_MEMBER(cabaret_state::cabaret_interrupt) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( cabaret, cabaret_state ) +static MACHINE_CONFIG_START( cabaret ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 2) MCFG_CPU_PROGRAM_MAP(cabaret_map) diff --git a/src/mame/drivers/calchase.cpp b/src/mame/drivers/calchase.cpp index 9f557291980..bed7d0ddce3 100644 --- a/src/mame/drivers/calchase.cpp +++ b/src/mame/drivers/calchase.cpp @@ -639,7 +639,7 @@ void calchase_state::machine_reset() membank("bios_ext")->set_base(memregion("bios")->base() + 0); } -static MACHINE_CONFIG_START( calchase, calchase_state ) +static MACHINE_CONFIG_START( calchase ) MCFG_CPU_ADD("maincpu", PENTIUM, 133000000) // Cyrix 686MX-PR200 CPU MCFG_CPU_PROGRAM_MAP(calchase_map) MCFG_CPU_IO_MAP(calchase_io) @@ -671,7 +671,7 @@ static MACHINE_CONFIG_START( calchase, calchase_state ) MCFG_SOUND_ROUTE_EX(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "rdac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hostinv, calchase_state ) +static MACHINE_CONFIG_START( hostinv ) MCFG_CPU_ADD("maincpu", PENTIUM, 133000000) // Cyrix 686MX-PR200 CPU MCFG_CPU_PROGRAM_MAP(calchase_map) MCFG_CPU_IO_MAP(calchase_io) @@ -773,6 +773,6 @@ ROM_START( eggsplc ) DISK_IMAGE_READONLY( "eggsplc", 0, SHA1(fa38dd6b0d25cde644f68cf639768f137c607eb5) ) ROM_END -GAME( 1998, hostinv, 0, hostinv, calchase, calchase_state, hostinv, ROT0, "The Game Room", "Host Invaders", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, calchase, 0, calchase, calchase, calchase_state, calchase, ROT0, "The Game Room", "California Chase", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, hostinv, 0, hostinv, calchase, calchase_state, hostinv, ROT0, "The Game Room", "Host Invaders", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, calchase, 0, calchase, calchase, calchase_state, calchase, ROT0, "The Game Room", "California Chase", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 2002, eggsplc, 0, calchase, calchase, calchase_state, hostinv, ROT0, "The Game Room", "Eggs Playing Chicken", 0 ) diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp index e8b2d46fa88..ce4405dc98d 100644 --- a/src/mame/drivers/calomega.cpp +++ b/src/mame/drivers/calomega.cpp @@ -2568,7 +2568,7 @@ WRITE_LINE_MEMBER(calomega_state::write_acia_clock) * Machine Drivers * *************************************************/ -static MACHINE_CONFIG_START( sys903, calomega_state ) +static MACHINE_CONFIG_START( sys903 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, CPU_CLOCK) /* confirmed */ MCFG_CPU_PROGRAM_MAP(sys903_map) @@ -3720,7 +3720,7 @@ GAME( 1985, comg240, 0, sys903, gdrwpkrh, calomega_state, sys903, ROT GAME( 1985, comg246, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 24.6 (Hotline)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1985, comg272a, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, amusement)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1985, comg272b, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, gaming)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 198?, comg5108, 0, sys906, stand906, driver_device, 0, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 51.08 (CEI Video Poker, Jacks or Better)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 198?, comg5108, 0, sys906, stand906, calomega_state, 0, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 51.08 (CEI Video Poker, Jacks or Better)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /************ Diagnostic PROMs ************/ GAME( 198?, comg903d, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - System 903 Diag.PROM", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/calorie.cpp b/src/mame/drivers/calorie.cpp index 0bae419c172..faaa1bdc8e9 100644 --- a/src/mame/drivers/calorie.cpp +++ b/src/mame/drivers/calorie.cpp @@ -452,7 +452,7 @@ void calorie_state::machine_reset() } -static MACHINE_CONFIG_START( calorie, calorie_state ) +static MACHINE_CONFIG_START( calorie ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) /* 4 MHz */ @@ -588,5 +588,5 @@ DRIVER_INIT_MEMBER(calorie_state,calorieb) *************************************/ /* Note: the bootleg is identical to the original once decrypted */ -GAME( 1986, calorie, 0, caloriee,calorie, driver_device, 0, ROT0, "Sega", "Calorie Kun vs Moguranian", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, calorie, 0, caloriee,calorie, calorie_state, 0, ROT0, "Sega", "Calorie Kun vs Moguranian", MACHINE_SUPPORTS_SAVE ) GAME( 1986, calorieb, calorie, calorie, calorie, calorie_state, calorieb, ROT0, "bootleg", "Calorie Kun vs Moguranian (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/camplynx.cpp b/src/mame/drivers/camplynx.cpp index 1c4977bd8e8..5a7a584e23f 100644 --- a/src/mame/drivers/camplynx.cpp +++ b/src/mame/drivers/camplynx.cpp @@ -179,7 +179,7 @@ private: //required_device<> m_printer; required_device m_crtc; required_device m_dac; - optional_device m_fdc; + optional_device m_fdc; optional_device m_floppy0; optional_device m_floppy1; }; @@ -458,15 +458,15 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( lynx96k_io, AS_IO, 8, camplynx_state ) AM_IMPORT_FROM(lynx48k_io) - AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_t, read) - AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_t, write) + AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_device, read) + AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_device, write) AM_RANGE(0x0058,0x0058) AM_MIRROR(0xff80) AM_WRITE(port58_w) ADDRESS_MAP_END static ADDRESS_MAP_START( lynx128k_io, AS_IO, 8, camplynx_state ) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_t, read) - AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_t, write) + AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_device, read) + AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_device, write) AM_RANGE(0x0058,0x0058) AM_MIRROR(0xff80) AM_WRITE(port58_w) // AM_RANGE(0x007a,0x007b) AM_MIRROR(0xff80) AM_READ(lynx128k_joysticks_r) // AM_RANGE(0x007c,0x007c) AM_MIRROR(0xff80) AM_READ(lynx128k_printer_r) @@ -810,7 +810,7 @@ static MACHINE_CONFIG_FRAGMENT( lynx_disk ) MCFG_FLOPPY_DRIVE_SOUND(true) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lynx48k, camplynx_state ) +static MACHINE_CONFIG_START( lynx48k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz / 6) @@ -850,7 +850,7 @@ static MACHINE_CONFIG_DERIVED( lynx96k, lynx48k ) MCFG_FRAGMENT_ADD(lynx_disk) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lynx128k, camplynx_state ) +static MACHINE_CONFIG_START( lynx128k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz / 4) @@ -942,7 +942,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, lynx48k, 0, 0, lynx48k, lynx48k, camplynx_state, lynx48k, "Camputers", "Lynx 48k", 0 ) -COMP( 1983, lynx96k, lynx48k, 0, lynx96k, lynx48k, camplynx_state, lynx48k, "Camputers", "Lynx 96k", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, lynx48k, 0, 0, lynx48k, lynx48k, camplynx_state, lynx48k, "Camputers", "Lynx 48k", 0 ) +COMP( 1983, lynx96k, lynx48k, 0, lynx96k, lynx48k, camplynx_state, lynx48k, "Camputers", "Lynx 96k", 0 ) COMP( 1983, lynx128k, lynx48k, 0, lynx128k, lynx48k, camplynx_state, lynx128k, "Camputers", "Lynx 128k", 0 ) diff --git a/src/mame/drivers/canon_s80.cpp b/src/mame/drivers/canon_s80.cpp index 307c8d69dd0..3038a5b630a 100644 --- a/src/mame/drivers/canon_s80.cpp +++ b/src/mame/drivers/canon_s80.cpp @@ -24,8 +24,8 @@ class canons80_state : public driver_device { public: canons80_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - { } + : driver_device(mconfig, type, tag) + { } DECLARE_DRIVER_INIT(canons80); }; @@ -36,14 +36,15 @@ static ADDRESS_MAP_START(canons80_map, AS_PROGRAM, 8, canons80_state ) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END -static MACHINE_CONFIG_START( canons80, canons80_state ) +static MACHINE_CONFIG_START( canons80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6301, 5000000) /* hd63a01xop 5 MHz guessed: TODO: check on PCB */ MCFG_CPU_PROGRAM_MAP(canons80_map) MACHINE_CONFIG_END DRIVER_INIT_MEMBER(canons80_state, canons80) -{} +{ +} ROM_START( canons80 ) ROM_REGION( 0x10000, "maincpu", 0 ) /* 6800 code */ diff --git a/src/mame/drivers/canyon.cpp b/src/mame/drivers/canyon.cpp index 3af43dc4181..ae1ba4e12da 100644 --- a/src/mame/drivers/canyon.cpp +++ b/src/mame/drivers/canyon.cpp @@ -238,7 +238,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( canyon, canyon_state ) +static MACHINE_CONFIG_START( canyon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12_096MHz / 16) @@ -322,5 +322,5 @@ ROM_END * *************************************/ -GAME( 1977, canyon, 0, canyon, canyon, driver_device, 0, ROT0, "Atari", "Canyon Bomber", MACHINE_SUPPORTS_SAVE ) -GAME( 1977, canyonp, canyon, canyon, canyon, driver_device, 0, ROT0, "Atari", "Canyon Bomber (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1977, canyon, 0, canyon, canyon, canyon_state, 0, ROT0, "Atari", "Canyon Bomber", MACHINE_SUPPORTS_SAVE ) +GAME( 1977, canyonp, canyon, canyon, canyon, canyon_state, 0, ROT0, "Atari", "Canyon Bomber (prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/capbowl.cpp b/src/mame/drivers/capbowl.cpp index b9874a45ad4..ed82dc96aff 100644 --- a/src/mame/drivers/capbowl.cpp +++ b/src/mame/drivers/capbowl.cpp @@ -313,7 +313,7 @@ void capbowl_state::machine_reset() } -static MACHINE_CONFIG_START( capbowl, capbowl_state ) +static MACHINE_CONFIG_START( capbowl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809E, MASTER_CLOCK) @@ -482,4 +482,4 @@ GAME( 1988, capbowl2, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT27 GAME( 1988, capbowl3, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, capbowl4, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 4)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, clbowl, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Coors Light Bowling", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, bowlrama, 0, bowlrama, capbowl, driver_device, 0, ROT270, "P&P Marketing", "Bowl-O-Rama Rev 1.0", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, bowlrama, 0, bowlrama, capbowl, capbowl_state, 0, ROT270, "P&P Marketing", "Bowl-O-Rama Rev 1.0", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/capcom.cpp b/src/mame/drivers/capcom.cpp index 182a071247b..1baa5e309c8 100644 --- a/src/mame/drivers/capcom.cpp +++ b/src/mame/drivers/capcom.cpp @@ -43,7 +43,7 @@ DRIVER_INIT_MEMBER(capcom_state,capcom) { } -static MACHINE_CONFIG_START( capcom, capcom_state ) +static MACHINE_CONFIG_START( capcom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16670000) // M68306 MCFG_CPU_PROGRAM_MAP(capcom_map) diff --git a/src/mame/drivers/capr1.cpp b/src/mame/drivers/capr1.cpp index d8c614cb99c..71fac9f798e 100644 --- a/src/mame/drivers/capr1.cpp +++ b/src/mame/drivers/capr1.cpp @@ -102,7 +102,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( cspin2, capr1_state ) +static MACHINE_CONFIG_START( cspin2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) // clock frequency unknown @@ -123,7 +123,7 @@ static MACHINE_CONFIG_START( cspin2, capr1_state ) MCFG_SOUND_ROUTE(2, "mono", 0.15) MCFG_SOUND_ROUTE(3, "mono", 0.40) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -156,4 +156,4 @@ ROM_START( cspin2 ) ROM_END -GAME (1996, cspin2, 0, cspin2, cspin2, driver_device, 0, ROT0, "Taito", "Capriccio Spin 2", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (1996, cspin2, 0, cspin2, cspin2, capr1_state, 0, ROT0, "Taito", "Capriccio Spin 2", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/caprcyc.cpp b/src/mame/drivers/caprcyc.cpp index 9ac04280b94..4ced7c3d5fa 100644 --- a/src/mame/drivers/caprcyc.cpp +++ b/src/mame/drivers/caprcyc.cpp @@ -60,7 +60,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( caprcyc, caprcyc_state ) +static MACHINE_CONFIG_START( caprcyc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", VR4300BE, 100000000) // cpu configuration is unknown @@ -92,4 +92,4 @@ ROM_START( caprcyc ) ROM_END -GAME (1999, caprcyc, 0, caprcyc, caprcyc, driver_device, 0, ROT0, "Taito", "Capriccio Cyclone", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (1999, caprcyc, 0, caprcyc, caprcyc, caprcyc_state, 0, ROT0, "Taito", "Capriccio Cyclone", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/cardline.cpp b/src/mame/drivers/cardline.cpp index 776f1a4da99..3c74d31b663 100644 --- a/src/mame/drivers/cardline.cpp +++ b/src/mame/drivers/cardline.cpp @@ -313,7 +313,7 @@ PALETTE_INIT_MEMBER(cardline_state, cardline) } } -static MACHINE_CONFIG_START( cardline, cardline_state ) +static MACHINE_CONFIG_START( cardline ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C32, MASTER_CLOCK) @@ -349,7 +349,7 @@ static MACHINE_CONFIG_START( cardline, cardline_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) @@ -377,4 +377,4 @@ ROM_START( cardline ) ROM_END -GAME( 199?, cardline, 0, cardline, cardline, driver_device, 0, ROT0, "Veltmeijer", "Card Line" , MACHINE_SUPPORTS_SAVE) +GAME( 199?, cardline, 0, cardline, cardline, cardline_state, 0, ROT0, "Veltmeijer", "Card Line" , MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/carjmbre.cpp b/src/mame/drivers/carjmbre.cpp index 30442716e7b..b7f2629fe5e 100644 --- a/src/mame/drivers/carjmbre.cpp +++ b/src/mame/drivers/carjmbre.cpp @@ -345,7 +345,7 @@ static GFXDECODE_START( carjmbre ) GFXDECODE_END -static MACHINE_CONFIG_START( carjmbre, carjmbre_state ) +static MACHINE_CONFIG_START( carjmbre ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) @@ -419,4 +419,4 @@ ROM_START( carjmbre ) ROM_END -GAME( 1983, carjmbre, 0, carjmbre, carjmbre, driver_device, 0, ROT90, "Omori Electric Co., Ltd.", "Car Jamboree", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1983, carjmbre, 0, carjmbre, carjmbre, carjmbre_state, 0, ROT90, "Omori Electric Co., Ltd.", "Car Jamboree", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/carpolo.cpp b/src/mame/drivers/carpolo.cpp index c6dcb4efaed..93967f1b272 100644 --- a/src/mame/drivers/carpolo.cpp +++ b/src/mame/drivers/carpolo.cpp @@ -231,7 +231,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( carpolo, carpolo_state ) +static MACHINE_CONFIG_START( carpolo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_11_289MHz/12) /* 940.75 kHz */ @@ -288,7 +288,7 @@ static MACHINE_CONFIG_START( carpolo, carpolo_state ) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 239, 0, 255) MCFG_SCREEN_UPDATE_DRIVER(carpolo_state, screen_update_carpolo) - MCFG_SCREEN_VBLANK_DRIVER(carpolo_state, screen_eof_carpolo) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(carpolo_state, screen_vblank_carpolo)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", carpolo) diff --git a/src/mame/drivers/carrera.cpp b/src/mame/drivers/carrera.cpp index 73b05f2e635..4fae5e1dfae 100644 --- a/src/mame/drivers/carrera.cpp +++ b/src/mame/drivers/carrera.cpp @@ -308,7 +308,7 @@ PALETTE_INIT_MEMBER(carrera_state, carrera) } -static MACHINE_CONFIG_START( carrera, carrera_state ) +static MACHINE_CONFIG_START( carrera ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK / 6) MCFG_CPU_PROGRAM_MAP(carrera_map) @@ -359,4 +359,4 @@ ROM_START( carrera ) ROM_END -GAME( 19??, carrera, 0, carrera, carrera, driver_device,0, ROT0, "BS Electronics", "Carrera (Version 6.7)", 0 ) +GAME( 19??, carrera, 0, carrera, carrera, carrera_state, 0, ROT0, "BS Electronics", "Carrera (Version 6.7)", 0 ) diff --git a/src/mame/drivers/casloopy.cpp b/src/mame/drivers/casloopy.cpp index 46de2b0e821..f7e57cc1d2b 100644 --- a/src/mame/drivers/casloopy.cpp +++ b/src/mame/drivers/casloopy.cpp @@ -502,7 +502,7 @@ DEVICE_IMAGE_LOAD_MEMBER( casloopy_state, loopy_cart ) return image_init_result::PASS; } -static MACHINE_CONFIG_START( casloopy, casloopy_state ) +static MACHINE_CONFIG_START( casloopy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",SH2A,8000000) diff --git a/src/mame/drivers/castle.cpp b/src/mame/drivers/castle.cpp index 056273db2b1..0ec73496165 100644 --- a/src/mame/drivers/castle.cpp +++ b/src/mame/drivers/castle.cpp @@ -76,7 +76,7 @@ static INPUT_PORTS_START( castrev ) INPUT_PORTS_END -static MACHINE_CONFIG_START( castle_V1rvE, castle_state ) +static MACHINE_CONFIG_START( castle_V1rvE ) MCFG_CPU_ADD("maincpu", HD6303Y, 1000000) MCFG_CPU_PROGRAM_MAP(V1rvE_mastermap) @@ -91,7 +91,7 @@ static ADDRESS_MAP_START( V2rvA_map, AS_PROGRAM, 8, castle_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( castle_V2rvA, castle_state ) +static MACHINE_CONFIG_START( castle_V2rvA ) MCFG_CPU_ADD("maincpu", HD6303Y, 1000000) MCFG_CPU_PROGRAM_MAP(V2rvA_map) MACHINE_CONFIG_END @@ -113,7 +113,7 @@ ROM_END // 4.00 JACKPOT. VERSION 1 (for revision E CPU) Written by and copyright of David John Powell - 25th February 1987 -GAME( 1987, castrev, 0, castle_V1rvE, castrev, driver_device, 0, ROT0, "Castle","Revolution (Castle) (MACH2000 V1rvE)",MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, castrev, 0, castle_V1rvE, castrev, castle_state, 0, ROT0, "Castle","Revolution (Castle) (MACH2000 V1rvE)", MACHINE_IS_SKELETON_MECHANICAL ) // I'm *guessing* this is on MACH2000 V2rvA hardware, it contains strings saying 'MACH 2000 test' and is designed for a single CPU. -GAME( 198?, castfpt, 0, castle_V2rvA, castrev, driver_device, 0, ROT0, "Castle","Fortune Pot (Castle) (MACH2000 V2rvA)",MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 198?, castfpt, 0, castle_V2rvA, castrev, castle_state, 0, ROT0, "Castle","Fortune Pot (Castle) (MACH2000 V2rvA)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/caswin.cpp b/src/mame/drivers/caswin.cpp index ef2a120315c..10eff0cf4b5 100644 --- a/src/mame/drivers/caswin.cpp +++ b/src/mame/drivers/caswin.cpp @@ -321,7 +321,7 @@ PALETTE_INIT_MEMBER(caswin_state, caswin) } -static MACHINE_CONFIG_START( vvillage, caswin_state ) +static MACHINE_CONFIG_START( vvillage ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(vvillage_mem) @@ -416,7 +416,7 @@ ROM_START( rcasinoo ) ROM_LOAD( "prom1.e8", 0x0020, 0x0020, CRC(2b5c7826) SHA1(c0de392aebd6982e5846c12aeb2e871358be60d7) ) /* MB7051 */ ROM_END -GAME( 1984, rcasino, 0, vvillage, vvillage, driver_device, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-2)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1984, rcasino1, rcasino, vvillage, vvillage, driver_device, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-1, Larger Board)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1984, rcasinoo, rcasino, vvillage, vvillage, driver_device, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-1, Smaller Board)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1985, caswin, rcasino, vvillage, vvillage, driver_device, 0, ROT270, "Aristocrat", "Casino Winner", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1984, rcasino, 0, vvillage, vvillage, caswin_state, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-2)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1984, rcasino1, rcasino, vvillage, vvillage, caswin_state, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-1, Larger Board)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1984, rcasinoo, rcasino, vvillage, vvillage, caswin_state, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-1, Smaller Board)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1985, caswin, rcasino, vvillage, vvillage, caswin_state, 0, ROT270, "Aristocrat", "Casino Winner", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/cat.cpp b/src/mame/drivers/cat.cpp index 75d7aab846b..7bb3cb0c79a 100644 --- a/src/mame/drivers/cat.cpp +++ b/src/mame/drivers/cat.cpp @@ -1047,7 +1047,7 @@ WRITE_LINE_MEMBER(cat_state::prn_ack_ff) // switch the flipflop state on the ris #endif } -static MACHINE_CONFIG_START( cat, cat_state ) +static MACHINE_CONFIG_START( cat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_19_968MHz/4) @@ -1171,4 +1171,4 @@ ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, cat, 0, 0, cat, cat, driver_device, 0, "Canon", "Cat", MACHINE_NOT_WORKING) +COMP( 1987, cat, 0, 0, cat, cat, cat_state, 0, "Canon", "Cat", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp index 96d24aba949..e184b0edcab 100644 --- a/src/mame/drivers/cave.cpp +++ b/src/mame/drivers/cave.cpp @@ -28,8 +28,9 @@ Year + Game License PCB Tilemaps Sprites 95 Donpachi Atlus AT-C01DP-2 038 9429WX727 013 9347E7003 NMK 112 96 Air Gallet Banpresto BP962A 038 9437WX711 013 9346E7002 Z80 96 Hotdog Storm Marble ASTC9501 038 9341EX702 013 Z80 -96 Pac-Slot Namco A0442 038 9444WX010 013 9345E7006 +96 Pac-Slot Namco N-44 EM 038 9444WX010 013 9345E7006 96 Poka Poka Satan Kato's PPS-MAIN 038 9444WX010 013 9607EX013 +97 Tekken Card World Namco EMG4 038 9701WX001 013 9651EX001 97 Dodonpachi Atlus AT-C03 D2 038 9341E7010 013 9338EX701 98 Dangun Feveron Nihon System CV01 038 9808WX003 013 9807EX004 98 ESP Ra.De. Atlus ATC04 038 9841WX002 013 9838EX002 @@ -38,7 +39,7 @@ Year + Game License PCB Tilemaps Sprites 99 Gaia Crusaders Noise Factory ? 038 9838WX003 013 9918EX008 99 Koro Koro Quest Takumi TUG-01B 038 9838WX004 013 9838EX004 99 Crusher Makochan Takumi TUG-01B 038 9838WX004 013 9838EX004 -99 Tobikose! Jumpman Namco TJ0476 038 9919WX007 013 9934WX002 +99 Tobikose! Jumpman Namco EMG4 038 9919WX007 013 9934WX002 01 Thunder Heroes Primetek ? 038 9838WX003 013 9918EX008 ----------------------------------------------------------------------------------------- @@ -123,7 +124,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cave_state::cave_vblank_start) update_irq_state(); cave_get_sprite_info(0); m_agallet_vblank_irq = 1; - machine().scheduler().timer_set(attotime::from_usec(2000), timer_expired_delegate(FUNC(cave_state::cave_vblank_end),this)); + m_vblank_end_timer->adjust(attotime::from_usec(2000)); } TIMER_DEVICE_CALLBACK_MEMBER(cave_state::cave_vblank_start_left) { @@ -1003,6 +1004,29 @@ static ADDRESS_MAP_START( sailormn_map, AS_PROGRAM, 16, cave_state ) ADDRESS_MAP_END +/*************************************************************************** + Tekken Card World +***************************************************************************/ + +static ADDRESS_MAP_START( tekkencw_map, AS_PROGRAM, 16, cave_state ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM + AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery) + AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("spriteram.0") // Sprites + AM_RANGE(0x208000, 0x20ffff) AM_RAM AM_SHARE("spriteram_2.0") // Sprite bank 2 + AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(cave_vram_0_w) AM_SHARE("vram.0") // Layer 0 + AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper + AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") // Inputs + AM_RANGE(0x500000, 0x500005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control + AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("paletteram.0") // Palette + AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause + AM_RANGE(0x700068, 0x700069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog + AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs + AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295 + AM_RANGE(0xc00000, 0xc00001) AM_WRITE(tjumpman_leds_w) // Leds + Hopper + AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM +ADDRESS_MAP_END + + /*************************************************************************** Tobikose! Jumpman ***************************************************************************/ @@ -1049,7 +1073,7 @@ CUSTOM_INPUT_MEMBER(cave_state::tjumpman_hopper_r) static ADDRESS_MAP_START( tjumpman_map, AS_PROGRAM, 16, cave_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM + AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery) AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("spriteram.0") // Sprites AM_RANGE(0x208000, 0x20ffff) AM_RAM AM_SHARE("spriteram_2.0") // Sprite bank 2 AM_RANGE(0x304000, 0x307fff) AM_WRITE(cave_vram_0_w) // Layer 0 - 16x16 tiles mapped here @@ -1089,7 +1113,7 @@ WRITE16_MEMBER(cave_state::pacslot_leds_w) static ADDRESS_MAP_START( pacslot_map, AS_PROGRAM, 16, cave_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM + AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery) AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("spriteram.0") // Sprites AM_RANGE(0x208000, 0x20ffff) AM_RAM AM_SHARE("spriteram_2.0") // Sprite bank 2 AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(cave_vram_0_w) AM_SHARE("vram.0") // Layer 0 @@ -1596,13 +1620,38 @@ static INPUT_PORTS_START( korokoro ) INPUT_PORTS_END +static INPUT_PORTS_START( tekkencw ) + PORT_START("IN0") + PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10) // credits (impulse needed to coin up reliably) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( DEF_STR( Yes ) ) PORT_CODE(KEYCODE_Y) // suru ("do") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Bet" ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cave_state,tjumpman_hopper_r, nullptr) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_CONFNAME( 0x08, 0x08, "Self Test" ) + PORT_CONFSETTING( 0x08, DEF_STR( Off ) ) + PORT_CONFSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME( DEF_STR( No ) ) PORT_CODE(KEYCODE_N) // shinai ("not") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Action" ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // medal (impulse needed to coin up reliably) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + + static INPUT_PORTS_START( tjumpman ) PORT_START("IN0") PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( DEF_STR( Yes ) ) PORT_CODE(KEYCODE_Y) // suru ("do") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( DEF_STR( Yes ) ) PORT_CODE(KEYCODE_Y) // suru ("do") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "1 Bet" ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cave_state,tjumpman_hopper_r, nullptr) @@ -1614,20 +1663,20 @@ static INPUT_PORTS_START( tjumpman ) PORT_CONFNAME( 0x08, 0x08, "Self Test" ) PORT_CONFSETTING( 0x08, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME( DEF_STR( No ) ) PORT_CODE(KEYCODE_N) // shinai ("not") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( DEF_STR( No ) ) PORT_CODE(KEYCODE_N) // shinai ("not") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Go" ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // medal + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // medal (impulse needed to coin up reliably) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "3 Bet" ) INPUT_PORTS_END static INPUT_PORTS_START( pacslot ) PORT_START("IN0") - PORT_SERVICE( 0x01, IP_ACTIVE_LOW ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) // credits + PORT_SERVICE( 0x01, IP_ACTIVE_LOW ) // must stay on during service mode + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10) // credits (impulse needed to coin up reliably) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Pac-Man" ) PORT_CODE(KEYCODE_Y) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Pac-Man" ) PORT_CODE(KEYCODE_Y) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Bet" ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cave_state,tjumpman_hopper_r, nullptr) @@ -1639,9 +1688,9 @@ static INPUT_PORTS_START( pacslot ) PORT_CONFNAME( 0x08, 0x08, "Self Test" ) PORT_CONFSETTING( 0x08, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME( "Ms. Pac-Man" ) PORT_CODE(KEYCODE_N) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Ms. Pac-Man" ) PORT_CODE(KEYCODE_N) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // medal + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // medal (impulse needed to coin up reliably) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END @@ -1939,6 +1988,8 @@ GFXDECODE_END MACHINE_START_MEMBER(cave_state,cave) { + m_vblank_end_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cave_state::cave_vblank_end), this)); + save_item(NAME(m_soundbuf_len)); save_item(NAME(m_soundbuf_data)); @@ -1963,7 +2014,7 @@ MACHINE_RESET_MEMBER(cave_state,cave) Dangun Feveron ***************************************************************************/ -static MACHINE_CONFIG_START( dfeveron, cave_state ) +static MACHINE_CONFIG_START( dfeveron ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2004,7 +2055,7 @@ MACHINE_CONFIG_END ***************************************************************************/ -static MACHINE_CONFIG_START( ddonpach, cave_state ) +static MACHINE_CONFIG_START( ddonpach ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2044,7 +2095,7 @@ MACHINE_CONFIG_END Donpachi ***************************************************************************/ -static MACHINE_CONFIG_START( donpachi, cave_state ) +static MACHINE_CONFIG_START( donpachi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2074,10 +2125,10 @@ static MACHINE_CONFIG_START( donpachi, cave_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", XTAL_4_224MHz/4, OKIM6295_PIN7_HIGH) // pin 7 not verified + MCFG_OKIM6295_ADD("oki1", XTAL_4_224MHz/4, PIN7_HIGH) // pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.60) - MCFG_OKIM6295_ADD("oki2", XTAL_4_224MHz/2, OKIM6295_PIN7_HIGH) // pin 7 not verified + MCFG_OKIM6295_ADD("oki2", XTAL_4_224MHz/2, PIN7_HIGH) // pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("nmk112", NMK112, 0) @@ -2091,7 +2142,7 @@ MACHINE_CONFIG_END Esprade ***************************************************************************/ -static MACHINE_CONFIG_START( esprade, cave_state ) +static MACHINE_CONFIG_START( esprade ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2131,7 +2182,7 @@ MACHINE_CONFIG_END Gaia Crusaders ***************************************************************************/ -static MACHINE_CONFIG_START( gaia, cave_state ) +static MACHINE_CONFIG_START( gaia ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2172,7 +2223,7 @@ MACHINE_CONFIG_END Guwange ***************************************************************************/ -static MACHINE_CONFIG_START( guwange, cave_state ) +static MACHINE_CONFIG_START( guwange ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2211,7 +2262,7 @@ MACHINE_CONFIG_END Hotdog Storm ***************************************************************************/ -static MACHINE_CONFIG_START( hotdogst, cave_state ) +static MACHINE_CONFIG_START( hotdogst ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) @@ -2254,7 +2305,7 @@ static MACHINE_CONFIG_START( hotdogst, cave_state ) MCFG_SOUND_ROUTE(2, "mono", 0.20) MCFG_SOUND_ROUTE(3, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/16, OKIM6295_PIN7_HIGH) // pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/16, PIN7_HIGH) // pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END @@ -2264,7 +2315,7 @@ MACHINE_CONFIG_END Koro Koro Quest ***************************************************************************/ -static MACHINE_CONFIG_START( korokoro, cave_state ) +static MACHINE_CONFIG_START( korokoro ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2311,7 +2362,7 @@ MACHINE_CONFIG_END Mazinger Z ***************************************************************************/ -static MACHINE_CONFIG_START( mazinger, cave_state ) +static MACHINE_CONFIG_START( mazinger ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2357,7 +2408,7 @@ static MACHINE_CONFIG_START( mazinger, cave_state ) MCFG_SOUND_ROUTE(2, "mono", 0.20) MCFG_SOUND_ROUTE(3, "mono", 0.60) - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END @@ -2367,7 +2418,7 @@ MACHINE_CONFIG_END Metamoqester ***************************************************************************/ -static MACHINE_CONFIG_START( metmqstr, cave_state ) +static MACHINE_CONFIG_START( metmqstr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz / 2) @@ -2410,11 +2461,11 @@ static MACHINE_CONFIG_START( metmqstr, cave_state ) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6) - MCFG_OKIM6295_ADD("oki1", XTAL_32MHz / 16 , OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", XTAL_32MHz / 16 , PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) - MCFG_OKIM6295_ADD("oki2", XTAL_32MHz / 16 , OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", XTAL_32MHz / 16 , PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MACHINE_CONFIG_END @@ -2424,7 +2475,7 @@ MACHINE_CONFIG_END Pac-Slot ***************************************************************************/ -static MACHINE_CONFIG_START( pacslot, cave_state ) +static MACHINE_CONFIG_START( pacslot ) MCFG_NVRAM_ADD_0FILL("nvram") @@ -2461,12 +2512,12 @@ static MACHINE_CONFIG_START( pacslot, cave_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", XTAL_28MHz / 28, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", XTAL_28MHz / 28, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // oki2 chip is present but its rom socket is unpopulated - MCFG_OKIM6295_ADD("oki2", XTAL_28MHz / 28, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", XTAL_28MHz / 28, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -2481,7 +2532,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( cave_state::timer_lev2_cb ) m_maincpu->set_input_line(M68K_IRQ_2, HOLD_LINE); // ppsatan: read touch screens } -static MACHINE_CONFIG_START( ppsatan, cave_state ) +static MACHINE_CONFIG_START( ppsatan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2532,7 +2583,7 @@ static MACHINE_CONFIG_START( ppsatan, cave_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 2.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 2.0) MACHINE_CONFIG_END @@ -2544,7 +2595,7 @@ MACHINE_CONFIG_END /* X1 = 12 MHz, X2 = 28 MHz, X3 = 16 MHz. OKI: / 165 mode A ; / 132 mode B */ -static MACHINE_CONFIG_START( pwrinst2, cave_state ) +static MACHINE_CONFIG_START( pwrinst2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* 16 MHz */ @@ -2587,10 +2638,10 @@ static MACHINE_CONFIG_START( pwrinst2, cave_state ) MCFG_SOUND_ROUTE(2, "mono", 0.40) MCFG_SOUND_ROUTE(3, "mono", 0.80) - MCFG_OKIM6295_ADD("oki1", XTAL_3MHz , OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", XTAL_3MHz , PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki2", XTAL_3MHz , OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", XTAL_3MHz , PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MCFG_DEVICE_ADD("nmk112", NMK112, 0) @@ -2599,8 +2650,6 @@ static MACHINE_CONFIG_START( pwrinst2, cave_state ) MACHINE_CONFIG_END - - /*************************************************************************** Sailor Moon / Air Gallet ***************************************************************************/ @@ -2617,7 +2666,7 @@ MACHINE_RESET_MEMBER(cave_state,sailormn) MACHINE_RESET_CALL_MEMBER(cave); } -static MACHINE_CONFIG_START( sailormn, cave_state ) +static MACHINE_CONFIG_START( sailormn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -2662,11 +2711,11 @@ static MACHINE_CONFIG_START( sailormn, cave_state ) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki1", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) - MCFG_OKIM6295_ADD("oki2", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) @@ -2674,11 +2723,60 @@ static MACHINE_CONFIG_START( sailormn, cave_state ) MACHINE_CONFIG_END +/*************************************************************************** + Tekken Card World +***************************************************************************/ + +static MACHINE_CONFIG_START( tekkencw ) + + MCFG_NVRAM_ADD_0FILL("nvram") + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M68000, XTAL_28MHz / 2) + MCFG_CPU_PROGRAM_MAP(tekkencw_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt) + + MCFG_WATCHDOG_ADD("watchdog") + MCFG_WATCHDOG_TIME_INIT(attotime::from_seconds(3)) /* a guess, and certainly wrong */ + + MCFG_MACHINE_START_OVERRIDE(cave_state,cave) + MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) + + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_ENABLE_STREAMING() + + MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(15625/271.5) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(0x200, 240) + MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1) + MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_cave) + + MCFG_GFXDECODE_ADD("gfxdecode", "palette", tjumpman) + MCFG_PALETTE_ADD("palette", 0x8000) + MCFG_PALETTE_INIT_OWNER(cave_state,cave) + + MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_OKIM6295_ADD("oki1", XTAL_28MHz / 28, PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + + // oki2 chip spot and rom socket are both unpopulated +MACHINE_CONFIG_END + + /*************************************************************************** Tobikose! Jumpman ***************************************************************************/ -static MACHINE_CONFIG_START( tjumpman, cave_state ) +static MACHINE_CONFIG_START( tjumpman ) MCFG_NVRAM_ADD_0FILL("nvram") @@ -2715,7 +2813,7 @@ static MACHINE_CONFIG_START( tjumpman, cave_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", XTAL_28MHz / 28, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", XTAL_28MHz / 28, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) @@ -2727,7 +2825,7 @@ MACHINE_CONFIG_END Uo Poko ***************************************************************************/ -static MACHINE_CONFIG_START( uopoko, cave_state ) +static MACHINE_CONFIG_START( uopoko ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -3897,8 +3995,6 @@ U55 ***************************************************************************/ - - #define ROMS_MAZINGER \ ROM_REGION( 0x80000, "maincpu", 0 ) \ ROM_LOAD16_WORD_SWAP( "mzp-0.u24", 0x00000, 0x80000, CRC(43a4279f) SHA1(2c17eb31040bb7f1554bc1c9a968eec5e72af097) ) \ @@ -3921,6 +4017,7 @@ U55 \ ROM_REGION( 0x080000, "oki", 0 ) \ ROM_LOAD( "bp943a-4.u64", 0x000000, 0x080000, CRC(3fc7f29a) SHA1(feb21b918243c0a03dfa4a80cc80b86be4f62680) ) + /* the regions differ only in the EEPROM, hence the macro above - all EEPROMs are Factory Defaulted */ ROM_START( mazinger ) ROMS_MAZINGER @@ -4628,6 +4725,46 @@ ROM_START( sailormnoh ) ROM_END +/*************************************************************************** + + Tekken Card World by Namco, 1997 + Namco EMG4 platform, PCB D0049 + + TMP 68HC000P-16 + + 013 9651EX001 + 038 9701WX001 + + OKI M6295 (the second OKI location is unpopulated) + + Battery + 93C46 EEPROM (at U24) + + 28MHz XTAL + +***************************************************************************/ + +ROM_START( tekkencw ) + ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "mpr0.u41", 0x00000, 0x80000, CRC(5b8919f3) SHA1(580298b6dc36527ab69889c848acab97726a6cc6) ) // 27c240 + + ROM_REGION( 0x100000 * 2, "sprites0", 0 ) /* Sprites: * 2 */ + ROM_LOAD16_BYTE( "obj0.u52", 0x00000, 0x80000, CRC(6d3c0c76) SHA1(92f9c9beae222a2c2a3242f812030e08036c9963) ) // 27c040 + ROM_LOAD16_BYTE( "obj1.u53", 0x00001, 0x80000, CRC(8069b731) SHA1(9f0409c28466503092b74f635602962d9f127de8) ) // "" + + ROM_REGION( 0x80000, "layer0", 0 ) /* Layer 0 */ + ROM_LOAD( "cha0.u60", 0x00000, 0x40000, CRC(2a245ade) SHA1(7217017975c88c3edea613152ee6f2158f8777d7) ) // 27c020 + ROM_LOAD( "cha1.u61", 0x40000, 0x40000, CRC(43f62cce) SHA1(aa12ed0ccb94115ff8f9acf17850e1186c68bcf9) ) // "" + + ROM_REGION( 0x40000, "oki1", 0 ) /* OKIM6295 #1 Samples */ + ROM_LOAD( "voi0.u27", 0x00000, 0x40000, CRC(3bcd9b7d) SHA1(7ecb47127733187f385a75b9db655e35c249de18) ) // 27c020 + + ROM_REGION( 0x117 * 2, "plds", 0 ) + ROM_LOAD( "n44u1d.u1", 0x117*0, 0x117, NO_DUMP ) // GAL16V8D-15LP + ROM_LOAD( "n44u3a.u3", 0x117*1, 0x117, NO_DUMP ) // GAL16V8D-15LP +ROM_END + + /*************************************************************************** Tobikose! Jumpman by Namco, 1999 @@ -5067,86 +5204,86 @@ DRIVER_INIT_MEMBER(cave_state,korokoro) ***************************************************************************/ -GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, cave_state, pwrinst2, ROT0, "Atlus", "Power Instinct 2 (US, Ver. 94/04/08)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, pwrinst2j, pwrinst2, pwrinst2, metmqstr, cave_state, pwrinst2j,ROT0, "Atlus", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, cave_state, pwrinst2, ROT0, "Atlus", "Power Instinct 2 (US, Ver. 94/04/08)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, pwrinst2j, pwrinst2, pwrinst2, metmqstr, cave_state, pwrinst2j, ROT0, "Atlus", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)", MACHINE_SUPPORTS_SAVE ) // The EEPROM determines the region, program roms are the same between sets -GAME( 1994, mazinger, 0, mazinger, cave, cave_state, mazinger, ROT90, "Banpresto / Dynamic Pl. Toei Animation", "Mazinger Z (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, mazingerj, mazinger, mazinger, cave, cave_state, mazinger, ROT90, "Banpresto / Dynamic Pl. Toei Animation", "Mazinger Z (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mazinger, 0, mazinger, cave, cave_state, mazinger, ROT90, "Banpresto / Dynamic Pl. Toei Animation", "Mazinger Z (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mazingerj, mazinger, mazinger, cave, cave_state, mazinger, ROT90, "Banpresto / Dynamic Pl. Toei Animation", "Mazinger Z (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, donpachi, 0, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, donpachij, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, donpachikr, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, donpachihk, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Hong Kong)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, donpachi, 0, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, donpachij, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, donpachikr, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, donpachihk, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Hong Kong)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, metmqstr, 0, metmqstr, metmqstr, cave_state, metmqstr, ROT0, "Banpresto / Pandorabox", "Metamoqester (International)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, cave_state, metmqstr, ROT0, "Banpresto / Pandorabox", "Oni - The Ninja Master (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, metmqstr, 0, metmqstr, metmqstr, cave_state, metmqstr, ROT0, "Banpresto / Pandorabox", "Metamoqester (International)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, cave_state, metmqstr, ROT0, "Banpresto / Pandorabox", "Oni - The Ninja Master (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, plegends, 0, pwrinst2, metmqstr, cave_state, pwrinst2j,ROT0, "Atlus", "Gogetsuji Legends (US, Ver. 95/06/20)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, plegendsj, plegends, pwrinst2, metmqstr, cave_state, pwrinst2j,ROT0, "Atlus", "Gouketsuji Gaiden - Saikyou Densetsu (Japan, Ver. 95/06/20)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, plegends, 0, pwrinst2, metmqstr, cave_state, pwrinst2j, ROT0, "Atlus", "Gogetsuji Legends (US, Ver. 95/06/20)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, plegendsj, plegends, pwrinst2, metmqstr, cave_state, pwrinst2j, ROT0, "Atlus", "Gouketsuji Gaiden - Saikyou Densetsu (Japan, Ver. 95/06/20)", MACHINE_SUPPORTS_SAVE ) // The EEPROM determines the region, program roms are the same between sets -GAME( 1995, sailormn, 0, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnu, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnj, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnk, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnt, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Taiwan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnh, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Hong Kong)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormno, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnou, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnoj, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnok, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnot, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Taiwan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sailormnoh, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Hong Kong)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormn, 0, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnu, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnj, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnk, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnt, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Taiwan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnh, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Hong Kong)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormno, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnou, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnoj, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnok, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnot, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Taiwan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sailormnoh, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Hong Kong)", MACHINE_SUPPORTS_SAVE ) // The EEPROM determines the region, program roms are the same between sets -GAME( 1996, agallet, 0, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agalletu, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agalletj, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Akuu Gallet (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agalletk, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agallett, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Taiwan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agalleth, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Hong Kong)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agallet, 0, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalletu, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalletj, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Akuu Gallet (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalletk, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agallett, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Taiwan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalleth, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Hong Kong)", MACHINE_SUPPORTS_SAVE ) // this set appears to be older, there is some kind of reset circuit / watchdog circuit check on startup, the same check exists in the above set but the code skips over it so presumably it was removed // to avoid boards simply hanging on a black screen if the circuit didn't fire. -GAME( 1996, agalleta, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agalletau, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agalletaj, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Akuu Gallet (older, Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agalletak, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agalletat, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, Taiwan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, agalletah, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, Hong Kong)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalleta, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalletau, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalletaj, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Akuu Gallet (older, Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalletak, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalletat, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, Taiwan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, agalletah, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (older, Hong Kong)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, hotdogst, 0, hotdogst, cave, cave_state, hotdogst, ROT90, "Marble", "Hotdog Storm (International)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, hotdogst, 0, hotdogst, cave, cave_state, hotdogst, ROT90, "Marble", "Hotdog Storm (International)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, pacslot, 0, pacslot, pacslot, cave_state, tjumpman, ROT0, "Namco", "Pac-Slot", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, pacslot, 0, pacslot, pacslot, cave_state, tjumpman, ROT0, "Namco", "Pac-Slot", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ppsatan, 0, ppsatan, ppsatan, cave_state, ppsatan, ROT0, "Kato Seisakujo Co., Ltd.", "Poka Poka Satan (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, ppsatan, 0, ppsatan, ppsatan, cave_state, ppsatan, ROT0, "Kato Seisakujo Co., Ltd.", "Poka Poka Satan (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, tekkencw, 0, tekkencw, tekkencw, cave_state, tjumpman, ROT0, "Namco", "Tekken Card World", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, ddonpach, 0, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (International, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (Japan, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, ddonpach, 0, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (International, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (Japan, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE ) // NOT an official CAVE release, but several PCBs have been converted to it and used on location. -GAME( 2012, ddonpacha, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "hack (trap15)", "DoDonPachi (2012/02/12 Arrange Ver. 1.1) (hack)", MACHINE_SUPPORTS_SAVE ) - +GAME( 2012, ddonpacha, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "hack (trap15)", "DoDonPachi (2012/02/12 Arrange Ver. 1.1) (hack)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, dfeveron, feversos, dfeveron, cave, cave_state, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, feversos, 0, dfeveron, cave, cave_state, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, dfeveron, feversos, dfeveron, cave, cave_state, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, feversos, 0, dfeveron, cave, cave_state, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, esprade, 0, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (International, Ver. 98/04/22)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, espradej, esprade, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (Japan, Ver. 98/04/21)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, espradejo, esprade, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (Japan, Ver. 98/04/14)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, esprade, 0, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (International, Ver. 98/04/22)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, espradej, esprade, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (Japan, Ver. 98/04/21)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, espradejo, esprade, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (Japan, Ver. 98/04/14)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, uopoko, 0, uopoko, cave, cave_state, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, uopokoj, uopoko, uopoko, cave, cave_state, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, uopoko, 0, uopoko, cave, cave_state, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, uopokoj, uopoko, uopoko, cave, cave_state, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, guwange, 0, guwange, guwange, cave_state, guwange, ROT270, "Cave (Atlus license)", "Guwange (Japan, Master Ver. 99/06/24)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, guwanges, guwange, guwange, guwange, cave_state, guwange, ROT270, "Cave (Atlus license)", "Guwange (Japan, Special Ver. 00/07/07)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, guwange, 0, guwange, guwange, cave_state, guwange, ROT270, "Cave (Atlus license)", "Guwange (Japan, Master Ver. 99/06/24)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, guwanges, guwange, guwange, guwange, cave_state, guwange, ROT270, "Cave (Atlus license)", "Guwange (Japan, Special Ver. 00/07/07)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, gaia, 0, gaia, gaia, cave_state, gaia, ROT0, "Noise Factory", "Gaia Crusaders", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // cuts out occasionally +GAME( 1999, gaia, 0, gaia, gaia, cave_state, gaia, ROT0, "Noise Factory", "Gaia Crusaders", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // cuts out occasionally -GAME( 1999, korokoro, 0, korokoro, korokoro, cave_state, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, korokoro, 0, korokoro, korokoro, cave_state, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, crusherm, 0, crusherm, korokoro, cave_state, korokoro, ROT0, "Takumi", "Crusher Makochan (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, crusherm, 0, crusherm, korokoro, cave_state, korokoro, ROT0, "Takumi", "Crusher Makochan (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, tjumpman, 0, tjumpman, tjumpman, cave_state, tjumpman, ROT0, "Namco", "Tobikose! Jumpman", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, tjumpman, 0, tjumpman, tjumpman, cave_state, tjumpman, ROT0, "Namco", "Tobikose! Jumpman", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, theroes, 0, gaia, theroes, cave_state, gaia, ROT0, "Primetek Investments", "Thunder Heroes", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // cuts out occasionally +GAME( 2001, theroes, 0, gaia, theroes, cave_state, gaia, ROT0, "Primetek Investments", "Thunder Heroes", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // cuts out occasionally diff --git a/src/mame/drivers/cavepc.cpp b/src/mame/drivers/cavepc.cpp index 84f915d9be8..4a44bf5a132 100644 --- a/src/mame/drivers/cavepc.cpp +++ b/src/mame/drivers/cavepc.cpp @@ -106,7 +106,7 @@ void cavepc_state::machine_reset() membank("bank1")->set_base(memregion("bios")->base() + 0x30000); } -static MACHINE_CONFIG_START( cavepc, cavepc_state ) +static MACHINE_CONFIG_START( cavepc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PENTIUM3, 200000000) /* AMD Athlon 64 X2 5050e Brisbane 2.60GHz, 1024KB L2 Cache ! */ MCFG_CPU_PROGRAM_MAP(cavepc_map) diff --git a/src/mame/drivers/cb2001.cpp b/src/mame/drivers/cb2001.cpp index 10d2a83fb3e..738e4b73ca5 100644 --- a/src/mame/drivers/cb2001.cpp +++ b/src/mame/drivers/cb2001.cpp @@ -807,7 +807,7 @@ PALETTE_INIT_MEMBER(cb2001_state, cb2001) } } -static MACHINE_CONFIG_START( cb2001, cb2001_state ) +static MACHINE_CONFIG_START( cb2001 ) MCFG_CPU_ADD("maincpu", V35, 20000000) // CPU91A-011-0016JK004; encrypted cpu like nec v25/35 used in some irem game MCFG_V25_CONFIG(cb2001_decryption_table) MCFG_CPU_PROGRAM_MAP(cb2001_map) @@ -869,5 +869,5 @@ ROM_START( scherrym ) ROM_LOAD( "n82s135-2.bin", 0x200, 0x100, CRC(a19821db) SHA1(62dda90dd67dfbc0b96f161f1f2b7a46a5805eae) ) ROM_END -GAME( 2001, cb2001, 0, cb2001, cb2001, driver_device, 0, ROT0, "Dyna", "Cherry Bonus 2001", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) -GAME( 2001, scherrym, 0, cb2001, cb2001, driver_device, 0, ROT0, "Dyna", "Super Cherry Master", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) // 2001 version? (we have bootlegs running on z80 hw of a 1996 version) +GAME( 2001, cb2001, 0, cb2001, cb2001, cb2001_state, 0, ROT0, "Dyna", "Cherry Bonus 2001", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 2001, scherrym, 0, cb2001, cb2001, cb2001_state, 0, ROT0, "Dyna", "Super Cherry Master", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) // 2001 version? (we have bootlegs running on z80 hw of a 1996 version) diff --git a/src/mame/drivers/cball.cpp b/src/mame/drivers/cball.cpp index 1df363c46c8..1a389a62907 100644 --- a/src/mame/drivers/cball.cpp +++ b/src/mame/drivers/cball.cpp @@ -259,7 +259,7 @@ static GFXDECODE_START( cball ) GFXDECODE_END -static MACHINE_CONFIG_START( cball, cball_state ) +static MACHINE_CONFIG_START( cball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_12_096MHz / 16) /* ? */ @@ -304,4 +304,4 @@ ROM_START( cball ) ROM_END -GAME( 1976, cball, 0, cball, cball, driver_device, 0, ROT0, "Atari", "Cannonball (Atari, prototype)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1976, cball, 0, cball, cball, cball_state, 0, ROT0, "Atari", "Cannonball (Atari, prototype)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cbasebal.cpp b/src/mame/drivers/cbasebal.cpp index 57066cb94db..c3ef33e1d61 100644 --- a/src/mame/drivers/cbasebal.cpp +++ b/src/mame/drivers/cbasebal.cpp @@ -258,7 +258,7 @@ void cbasebal_state::machine_reset() m_scroll_y[1] = 0; } -static MACHINE_CONFIG_START( cbasebal, cbasebal_state ) +static MACHINE_CONFIG_START( cbasebal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 6000000) /* ??? */ @@ -287,7 +287,7 @@ static MACHINE_CONFIG_START( cbasebal, cbasebal_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("ymsnd", YM2413, 3579545) diff --git a/src/mame/drivers/cbm2.cpp b/src/mame/drivers/cbm2.cpp index d77d68f55a0..6114471f732 100644 --- a/src/mame/drivers/cbm2.cpp +++ b/src/mame/drivers/cbm2.cpp @@ -2279,7 +2279,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( p500_ntsc ) //------------------------------------------------- -static MACHINE_CONFIG_START( p500_ntsc, p500_state ) +static MACHINE_CONFIG_START( p500_ntsc ) MCFG_MACHINE_START_OVERRIDE(p500_state, p500_ntsc) MCFG_MACHINE_RESET_OVERRIDE(p500_state, p500) @@ -2395,7 +2395,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( p500_pal ) //------------------------------------------------- -static MACHINE_CONFIG_START( p500_pal, p500_state ) +static MACHINE_CONFIG_START( p500_pal ) MCFG_MACHINE_START_OVERRIDE(p500_state, p500_pal) MCFG_MACHINE_RESET_OVERRIDE(p500_state, p500) @@ -2508,7 +2508,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( cbm2lp_ntsc ) //------------------------------------------------- -static MACHINE_CONFIG_START( cbm2lp_ntsc, cbm2_state ) +static MACHINE_CONFIG_START( cbm2lp_ntsc ) MCFG_MACHINE_START_OVERRIDE(cbm2_state, cbm2_ntsc) MCFG_MACHINE_RESET_OVERRIDE(cbm2_state, cbm2) @@ -2665,7 +2665,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( cbm2hp_ntsc ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( cbm2hp_ntsc, cbm2lp_ntsc, cbm2hp_state ) +static MACHINE_CONFIG_DERIVED( cbm2hp_ntsc, cbm2lp_ntsc ) MCFG_DEVICE_MODIFY(MOS6525_2_TAG) MCFG_TPI6525_IN_PC_CB(READ8(cbm2hp_state, tpi2_pc_r)) MACHINE_CONFIG_END @@ -3037,20 +3037,20 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1983, p500, 0, 0, p500_ntsc, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, p500p, p500, 0, p500_pal, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (PAL)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, b500, 0, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B500", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, b128, b500, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B128", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, b256, b500, 0, b256, cbm2, driver_device, 0, "Commodore Business Machines", "B256", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, cbm610, b500, 0, cbm610, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 610", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, cbm620, b500, 0, cbm620, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 620", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, cbm620_hu, b500, 0, cbm620, cbm2_hu, driver_device, 0, "Commodore Business Machines", "CBM 620 (Hungary)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, b128hp, 0, 0, b128hp, cbm2, driver_device, 0, "Commodore Business Machines", "B128-80HP", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, b256hp, b128hp, 0, b256hp, cbm2, driver_device, 0, "Commodore Business Machines", "B256-80HP", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, bx256hp, b128hp, 0, bx256hp, cbm2, driver_device, 0, "Commodore Business Machines", "BX256-80HP", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 8088 co-processor is missing -COMP( 1983, cbm710, b128hp, 0, cbm710, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 710", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, cbm720, b128hp, 0, cbm720, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 720", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, cbm720_de, b128hp, 0, cbm720, cbm2_de, driver_device, 0, "Commodore Business Machines", "CBM 720 (Germany)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -COMP( 1983, cbm720_se, b128hp, 0, cbm720, cbm2_se, driver_device, 0, "Commodore Business Machines", "CBM 720 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, cbm730, b128hp, 0, cbm730, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 730", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 8088 co-processor is missing +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, p500, 0, 0, p500_ntsc, cbm2, p500_state, 0, "Commodore Business Machines", "P500 (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, p500p, p500, 0, p500_pal, cbm2, p500_state, 0, "Commodore Business Machines", "P500 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, b500, 0, 0, b128, cbm2, cbm2_state, 0, "Commodore Business Machines", "B500", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, b128, b500, 0, b128, cbm2, cbm2_state, 0, "Commodore Business Machines", "B128", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, b256, b500, 0, b256, cbm2, cbm2_state, 0, "Commodore Business Machines", "B256", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, cbm610, b500, 0, cbm610, cbm2, cbm2_state, 0, "Commodore Business Machines", "CBM 610", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, cbm620, b500, 0, cbm620, cbm2, cbm2_state, 0, "Commodore Business Machines", "CBM 620", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, cbm620_hu, b500, 0, cbm620, cbm2_hu, cbm2_state, 0, "Commodore Business Machines", "CBM 620 (Hungary)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, b128hp, 0, 0, b128hp, cbm2, cbm2hp_state, 0, "Commodore Business Machines", "B128-80HP", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, b256hp, b128hp, 0, b256hp, cbm2, cbm2hp_state, 0, "Commodore Business Machines", "B256-80HP", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, bx256hp, b128hp, 0, bx256hp, cbm2, cbm2hp_state, 0, "Commodore Business Machines", "BX256-80HP", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 8088 co-processor is missing +COMP( 1983, cbm710, b128hp, 0, cbm710, cbm2, cbm2hp_state, 0, "Commodore Business Machines", "CBM 710", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, cbm720, b128hp, 0, cbm720, cbm2, cbm2hp_state, 0, "Commodore Business Machines", "CBM 720", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, cbm720_de, b128hp, 0, cbm720, cbm2_de, cbm2hp_state, 0, "Commodore Business Machines", "CBM 720 (Germany)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1983, cbm720_se, b128hp, 0, cbm720, cbm2_se, cbm2hp_state, 0, "Commodore Business Machines", "CBM 720 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, cbm730, b128hp, 0, cbm730, cbm2, cbm2hp_state, 0, "Commodore Business Machines", "CBM 730", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 8088 co-processor is missing diff --git a/src/mame/drivers/cbuster.cpp b/src/mame/drivers/cbuster.cpp index e4361c72f8c..afc555c4e31 100644 --- a/src/mame/drivers/cbuster.cpp +++ b/src/mame/drivers/cbuster.cpp @@ -298,7 +298,7 @@ void cbuster_state::machine_reset() m_pri = 0; } -static MACHINE_CONFIG_START( twocrude, cbuster_state ) +static MACHINE_CONFIG_START( twocrude ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* Custom chip 59 @ 12MHz Verified */ @@ -368,10 +368,10 @@ static MACHINE_CONFIG_START( twocrude, cbuster_state ) MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(1, "mono", 0.45) - MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, OKIM6295_PIN7_HIGH) /* 1.0068MHz Verified */ + MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, PIN7_HIGH) /* 1.0068MHz Verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) - MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, OKIM6295_PIN7_HIGH) /* 2.01375MHz Verified */ + MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, PIN7_HIGH) /* 2.01375MHz Verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END diff --git a/src/mame/drivers/cc40.cpp b/src/mame/drivers/cc40.cpp index 151c67a21a0..d3160e006af 100644 --- a/src/mame/drivers/cc40.cpp +++ b/src/mame/drivers/cc40.cpp @@ -168,7 +168,7 @@ DEVICE_IMAGE_LOAD_MEMBER(cc40_state, cc40_cartridge) return image_init_result::FAIL; } - m_cart->rom_alloc(0x20000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); // allocate a larger ROM region to have 4x32K banks + m_cart->rom_alloc(0x20000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); // allocate a larger ROM region to have 4x32K banks m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); return image_init_result::PASS; @@ -303,6 +303,8 @@ READ8_MEMBER(cc40_state::bankswitch_r) WRITE8_MEMBER(cc40_state::bankswitch_w) { + data &= 0x0f; + // d0-d1: system rom bankswitch membank("sysbank")->set_entry(data & 3); @@ -310,7 +312,7 @@ WRITE8_MEMBER(cc40_state::bankswitch_w) if (m_cart_rom) membank("cartbank")->set_entry(data >> 2 & 3); - m_banks = data & 0x0f; + m_banks = data; } READ8_MEMBER(cc40_state::clock_control_r) @@ -327,10 +329,12 @@ void cc40_state::update_clock_divider() WRITE8_MEMBER(cc40_state::clock_control_w) { + data &= 0x0f; + // d0-d2: clock divider // d3: enable clock divider always // other bits: unused? - if (m_clock_control != (data & 0x0f)) + if (m_clock_control != data) { m_clock_control = data; update_clock_divider(); @@ -575,7 +579,7 @@ void cc40_state::machine_start() machine().save().register_postload(save_prepost_delegate(FUNC(cc40_state::postload), this)); } -static MACHINE_CONFIG_START( cc40, cc40_state ) +static MACHINE_CONFIG_START( cc40 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS70C20, XTAL_5MHz / 2) @@ -634,4 +638,5 @@ ROM_START( cc40 ) ROM_END -COMP( 1983, cc40, 0, 0, cc40, cc40, driver_device, 0, "Texas Instruments", "Compact Computer 40", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +COMP( 1983, cc40, 0, 0, cc40, cc40, cc40_state, 0, "Texas Instruments", "Compact Computer 40", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ccastles.cpp b/src/mame/drivers/ccastles.cpp index 70d3d844d65..8a69828290a 100644 --- a/src/mame/drivers/ccastles.cpp +++ b/src/mame/drivers/ccastles.cpp @@ -453,7 +453,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( ccastles, ccastles_state ) +static MACHINE_CONFIG_START( ccastles ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/8) @@ -664,11 +664,11 @@ ROM_END * *************************************/ -GAME( 1983, ccastles, 0, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ccastlesg, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3, German)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ccastlesp, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3, Spanish)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ccastlesf, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3, French)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ccastles3, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ccastles2, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ccastles1, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ccastlesj, ccastles, ccastles, ccastlesj, driver_device,0, ROT0, "Atari", "Crystal Castles (joystick version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ccastles, 0, ccastles, ccastles, ccastles_state, 0, ROT0, "Atari", "Crystal Castles (version 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ccastlesg, ccastles, ccastles, ccastles, ccastles_state, 0, ROT0, "Atari", "Crystal Castles (version 3, German)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ccastlesp, ccastles, ccastles, ccastles, ccastles_state, 0, ROT0, "Atari", "Crystal Castles (version 3, Spanish)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ccastlesf, ccastles, ccastles, ccastles, ccastles_state, 0, ROT0, "Atari", "Crystal Castles (version 3, French)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ccastles3, ccastles, ccastles, ccastles, ccastles_state, 0, ROT0, "Atari", "Crystal Castles (version 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ccastles2, ccastles, ccastles, ccastles, ccastles_state, 0, ROT0, "Atari", "Crystal Castles (version 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ccastles1, ccastles, ccastles, ccastles, ccastles_state, 0, ROT0, "Atari", "Crystal Castles (version 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ccastlesj, ccastles, ccastles, ccastlesj,ccastles_state, 0, ROT0, "Atari", "Crystal Castles (joystick version)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cchance.cpp b/src/mame/drivers/cchance.cpp index f67c8a3e923..02cbdb7c539 100644 --- a/src/mame/drivers/cchance.cpp +++ b/src/mame/drivers/cchance.cpp @@ -209,7 +209,7 @@ void cchance_state::machine_reset() m_bell_io = 0; } -static MACHINE_CONFIG_START( cchance, cchance_state ) +static MACHINE_CONFIG_START( cchance ) MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(main_map) @@ -227,7 +227,7 @@ static MACHINE_CONFIG_START( cchance, cchance_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(cchance_state, screen_update_tnzs) - MCFG_SCREEN_VBLANK_DRIVER(cchance_state, screen_eof_tnzs) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cchance_state, screen_vblank_tnzs)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 512) @@ -256,4 +256,4 @@ ROM_START( cchance ) ROM_LOAD( "prom2", 0x0200, 0x0200, NO_DUMP ) ROM_END -GAME( 1987?, cchance, 0, cchance, cchance, driver_device, 0, ROT0, "", "Cherry Chance", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1987?, cchance, 0, cchance, cchance, cchance_state, 0, ROT0, "", "Cherry Chance", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cchasm.cpp b/src/mame/drivers/cchasm.cpp index 2806c648439..47283484000 100644 --- a/src/mame/drivers/cchasm.cpp +++ b/src/mame/drivers/cchasm.cpp @@ -144,7 +144,7 @@ static const z80_daisy_config daisy_chain[] = * *************************************/ -static MACHINE_CONFIG_START( cchasm, cchasm_state ) +static MACHINE_CONFIG_START( cchasm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CCHASM_68K_CLOCK) /* 8 MHz (from schematics) */ @@ -263,5 +263,5 @@ ROM_END * *************************************/ -GAME( 1983, cchasm, 0, cchasm, cchasm, driver_device, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, cchasm1, cchasm, cchasm, cchasm, driver_device, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, cchasm, 0, cchasm, cchasm, cchasm_state, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, cchasm1, cchasm, cchasm, cchasm, cchasm_state, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp index 0e0790b370e..44adb8029f5 100644 --- a/src/mame/drivers/cclimber.cpp +++ b/src/mame/drivers/cclimber.cpp @@ -1101,7 +1101,7 @@ INTERRUPT_GEN_MEMBER(cclimber_state::bagmanf_vblank_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( root, cclimber_state ) +static MACHINE_CONFIG_START( root ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/3/2) /* 3.072 MHz */ @@ -1217,7 +1217,7 @@ static MACHINE_CONFIG_DERIVED( toprollr, cclimber ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( swimmer, cclimber_state ) +static MACHINE_CONFIG_START( swimmer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* verified on pcb */ @@ -2633,53 +2633,53 @@ GAME( 1980, cclimberj, cclimber, cclimberx, cclimberj, cclimber_state,cclimber GAME( 1980, ccboot, cclimber, cclimberx, cclimber, cclimber_state, cclimberj,ROT0, "bootleg", "Crazy Climber (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, ccboot2, cclimber, cclimberx, cclimber, cclimber_state, cclimberj,ROT0, "bootleg", "Crazy Climber (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, ccbootmr, cclimber, cclimberx, cclimber, cclimber_state, cclimberj,ROT0, "bootleg (Model Racing)", "Crazy Climber (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, cclimbroper, cclimber, cclimber, cclimber, driver_device, 0, ROT0, "bootleg (Operamatic)", "Crazy Climber (Spanish, Operamatic bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, cclimbrrod, cclimber, cclimber, cclimber, driver_device, 0, ROT0, "bootleg (Rodmar)", "Crazy Climber (Spanish, Rodmar bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, cclimbroper, cclimber, cclimber, cclimber, cclimber_state, 0, ROT0, "bootleg (Operamatic)", "Crazy Climber (Spanish, Operamatic bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, cclimbrrod, cclimber, cclimber, cclimber, cclimber_state, 0, ROT0, "bootleg (Rodmar)", "Crazy Climber (Spanish, Rodmar bootleg)", MACHINE_SUPPORTS_SAVE ) /* these sets have ugly colours, no extra attract screen, and no graphics for the extra attract screen in the BG roms - there is a Falcon logo in the text roms which is unused - does the code to display the extra screen still exist in the roms? */ -GAME( 1981, ckong, 0, cclimber, ckong, driver_device, 0, ROT270, "Kyoei / Falcon", "Crazy Kong", MACHINE_SUPPORTS_SAVE ) // on a Falcon FCK-01 PCB, but doesn't display any Falcon copyright -GAME( 1981, ckongalc, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Alca)", "Crazy Kong (Alca bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, monkeyd, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Monkey Donkey", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, dking, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey King", MACHINE_SUPPORTS_SAVE ) // supposedly, possibly by Hafasonic? -GAME( 1981, ckongdks, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey Kong (Spanish Crazy Kong bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ckong, 0, cclimber, ckong, cclimber_state, 0, ROT270, "Kyoei / Falcon", "Crazy Kong", MACHINE_SUPPORTS_SAVE ) // on a Falcon FCK-01 PCB, but doesn't display any Falcon copyright +GAME( 1981, ckongalc, ckong, cclimber, ckong, cclimber_state, 0, ROT270, "bootleg (Alca)", "Crazy Kong (Alca bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, monkeyd, ckong, cclimber, ckong, cclimber_state, 0, ROT270, "bootleg", "Monkey Donkey", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, dking, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey King", MACHINE_SUPPORTS_SAVE ) // supposedly, possibly by Hafasonic? +GAME( 1981, ckongdks, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey Kong (Spanish Crazy Kong bootleg)", MACHINE_SUPPORTS_SAVE ) /* these sets have correct colours, and also contain the graphics used for the extra attract screen in the BG roms, but it is unused - the Falcon logo in the text roms is still unused - does the code to display the extra screen still exist in the roms? */ -GAME( 1981, ckongo, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Orca)", "Crazy Kong (Orca bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, bigkong, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Big Kong", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ckongo, ckong, cclimber, ckong, cclimber_state, 0, ROT270, "bootleg (Orca)", "Crazy Kong (Orca bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, bigkong, ckong, cclimber, ckong, cclimber_state, 0, ROT270, "bootleg", "Big Kong", MACHINE_SUPPORTS_SAVE ) /* these sets have correct colours, and the extra attract screen, they also make use of the Falcon logo, some sets hack out the Falcon text on the extra screen */ -GAME( 1981, ckongpt2, 0, cclimber, ckong, driver_device, 0, ROT270, "Falcon", "Crazy Kong Part II (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ckongpt2a, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "Falcon", "Crazy Kong Part II (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ckongpt2j, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "Falcon", "Crazy Kong Part II (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ckongpt2jeu, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Jeutel)", "Crazy Kong Part II (Jeutel bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ckongpt2, 0, cclimber, ckong, cclimber_state, 0, ROT270, "Falcon", "Crazy Kong Part II (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ckongpt2a, ckongpt2, cclimber, ckong, cclimber_state, 0, ROT270, "Falcon", "Crazy Kong Part II (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ckongpt2j, ckongpt2, cclimber, ckong, cclimber_state, 0, ROT270, "Falcon", "Crazy Kong Part II (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ckongpt2jeu, ckongpt2, cclimber, ckong, cclimber_state, 0, ROT270, "bootleg (Jeutel)", "Crazy Kong Part II (Jeutel bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, ckongpt2b, ckongpt2, cclimber, ckongb, cclimber_state, ckongb, ROT270, "bootleg", "Crazy Kong Part II (alternative levels)", MACHINE_SUPPORTS_SAVE ) // see bagman.cpp for parent -GAME( 1982, bagmanf, bagman, bagmanf, bagmanf, driver_device, 0, ROT270, "bootleg", "Le Bagnard (bootleg on Crazy Kong hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bagmanf, bagman, bagmanf, bagmanf, cclimber_state, 0, ROT270, "bootleg", "Le Bagnard (bootleg on Crazy Kong hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1981, rpatrol, 0, cclimber, rpatrol, cclimber_state, rpatrol, ROT0, "Orca", "River Patrol (Japan)", MACHINE_SUPPORTS_SAVE) -GAME( 1981, rpatrola, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "bootleg", "River Patrol (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, rpatrolb, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "bootleg", "River Patrol (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, silvland, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "Falcon", "Silver Land", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, rpatrola, rpatrol, cclimber, rpatrol, cclimber_state, 0, ROT0, "bootleg", "River Patrol (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, rpatrolb, rpatrol, cclimber, rpatrol, cclimber_state, 0, ROT0, "bootleg", "River Patrol (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, silvland, rpatrol, cclimber, rpatrol, cclimber_state, 0, ROT0, "Falcon", "Silver Land", MACHINE_SUPPORTS_SAVE ) // see pacman.cpp for parent GAME( 1985, cannonb, cannonbp, cannonb, cannonb, cclimber_state, cannonb, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 1, buggy)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game GAME( 1985, cannonb2, cannonbp, cannonb, cannonb, cclimber_state, cannonb2, ROT90, "bootleg (TV Game Gruenberg)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 2, buggy)", MACHINE_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game GAME( 1985, cannonb3, cannonbp, cannonb, cannonb, cclimber_state, cannonb2, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game)", MACHINE_SUPPORTS_SAVE ) // the bonus game is patched out, thus avoiding the protection issue -GAME( 1982, swimmer, 0, swimmer, swimmer, driver_device, 0, ROT0, "Tehkan", "Swimmer (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, swimmera, swimmer, swimmer, swimmer, driver_device, 0, ROT0, "Tehkan", "Swimmer (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, swimmerb, swimmer, swimmer, swimmerb, driver_device, 0, ROT0, "Tehkan", "Swimmer (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, swimmer, 0, swimmer, swimmer, cclimber_state, 0, ROT0, "Tehkan", "Swimmer (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, swimmera, swimmer, swimmer, swimmer, cclimber_state, 0, ROT0, "Tehkan", "Swimmer (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, swimmerb, swimmer, swimmer, swimmerb, cclimber_state, 0, ROT0, "Tehkan", "Swimmer (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, guzzler, 0, guzzler, guzzler, driver_device, 0, ROT90, "Tehkan", "Guzzler", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, guzzlers, guzzler, guzzler, guzzler, driver_device, 0, ROT90, "Tehkan", "Guzzler (Swimmer Conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, guzzler, 0, guzzler, guzzler, cclimber_state, 0, ROT90, "Tehkan", "Guzzler", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, guzzlers, guzzler, guzzler, guzzler, cclimber_state, 0, ROT90, "Tehkan", "Guzzler (Swimmer Conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, yamato, 0, yamato, yamato, cclimber_state, yamato, ROT90, "Sega", "Yamato (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, yamato2, yamato, yamato, yamato, cclimber_state, yamato, ROT90, "Sega", "Yamato (World?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, yamato, 0, yamato, yamato, cclimber_state, yamato, ROT90, "Sega", "Yamato (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, yamato2, yamato, yamato, yamato, cclimber_state, yamato, ROT90, "Sega", "Yamato (World?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1983, toprollr, 0, toprollr, toprollr, cclimber_state, toprollr, ROT90, "Jaleco", "Top Roller", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ccs2810.cpp b/src/mame/drivers/ccs2810.cpp index f9dc670b051..7cc9676938c 100644 --- a/src/mame/drivers/ccs2810.cpp +++ b/src/mame/drivers/ccs2810.cpp @@ -92,7 +92,8 @@ public: DECLARE_WRITE8_MEMBER(port20_w); DECLARE_WRITE8_MEMBER(port34_w); DECLARE_WRITE8_MEMBER(port40_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); + private: uint8_t m_term_data; uint8_t m_26_count; @@ -103,7 +104,7 @@ private: floppy_image_device *m_floppy; required_device m_maincpu; required_device m_terminal; - optional_device m_fdc; + optional_device m_fdc; optional_device m_floppy0; }; @@ -130,7 +131,7 @@ static ADDRESS_MAP_START(ccs2422_io, AS_IO, 8, ccs_state) AM_RANGE(0x20, 0x20) AM_READWRITE(port20_r,port20_w) AM_RANGE(0x25, 0x25) AM_READ(port25_r) AM_RANGE(0x26, 0x26) AM_READ(port26_r) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("fdc", mb8877_t, read, write) + AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("fdc", mb8877_device, read, write) AM_RANGE(0x34, 0x34) AM_READWRITE(port34_r,port34_w) AM_RANGE(0x40, 0x40) AM_WRITE(port40_w) ADDRESS_MAP_END @@ -167,7 +168,7 @@ WRITE8_MEMBER( ccs_state::port20_w ) m_terminal->write(space, 0, data & 0x7f); } -WRITE8_MEMBER( ccs_state::kbd_put ) +void ccs_state::kbd_put(u8 data) { m_term_data = data; } @@ -325,7 +326,7 @@ SLOT_INTERFACE_END //SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) -static MACHINE_CONFIG_START( ccs2810, ccs_state ) +static MACHINE_CONFIG_START( ccs2810 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(ccs2810_mem) @@ -334,13 +335,13 @@ static MACHINE_CONFIG_START( ccs2810, ccs_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ccs_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ccs_state, kbd_put)) /* Devices */ //MCFG_INS8250_ADD( "ins8250", com_intf, XTAL_1_8432MHz ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ccs2422, ccs_state ) +static MACHINE_CONFIG_START( ccs2422 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(ccs2810_mem) @@ -349,7 +350,7 @@ static MACHINE_CONFIG_START( ccs2422, ccs_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ccs_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ccs_state, kbd_put)) /* Devices */ MCFG_MB8877_ADD("fdc", XTAL_16MHz / 8) // UB1793 or MB8877 @@ -375,6 +376,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, ccs2810, 0, 0, ccs2810, ccs2810, ccs_state, ccs2810, "California Computer Systems", "CCS Model 2810 CPU card", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1980, ccs2810, 0, 0, ccs2810, ccs2810, ccs_state, ccs2810, "California Computer Systems", "CCS Model 2810 CPU card", MACHINE_NO_SOUND_HW) COMP( 1980, ccs2422, ccs2810, 0, ccs2422, ccs2810, ccs_state, ccs2422, "California Computer Systems", "CCS Model 2422B FDC card", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/ccs300.cpp b/src/mame/drivers/ccs300.cpp index 7dc4c42788a..78f52e4f770 100644 --- a/src/mame/drivers/ccs300.cpp +++ b/src/mame/drivers/ccs300.cpp @@ -41,7 +41,8 @@ public: DECLARE_READ8_MEMBER(port11_r); DECLARE_WRITE8_MEMBER(port10_w); DECLARE_WRITE8_MEMBER(port40_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); + private: uint8_t m_term_data; required_device m_maincpu; @@ -88,7 +89,7 @@ WRITE8_MEMBER( ccs300_state::port10_w ) m_terminal->write(space, 0, data & 0x7f); } -WRITE8_MEMBER( ccs300_state::kbd_put ) +void ccs300_state::kbd_put(u8 data) { m_term_data = data; } @@ -118,7 +119,7 @@ DRIVER_INIT_MEMBER( ccs300_state, ccs300 ) membank("bankw0")->configure_entry(0, &main[0x0000]); } -static MACHINE_CONFIG_START( ccs300, ccs300_state ) +static MACHINE_CONFIG_START( ccs300 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(ccs300_mem) @@ -127,7 +128,7 @@ static MACHINE_CONFIG_START( ccs300, ccs300_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ccs300_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ccs300_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -138,5 +139,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ COMP( 19??, ccs300, ccs2810, 0, ccs300, ccs300, ccs300_state, ccs300, "California Computer Systems", "CCS Model 300", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/cd2650.cpp b/src/mame/drivers/cd2650.cpp index bed15d8e2ea..1cf80f8a3d5 100644 --- a/src/mame/drivers/cd2650.cpp +++ b/src/mame/drivers/cd2650.cpp @@ -53,7 +53,7 @@ public: DECLARE_READ8_MEMBER(keyin_r); DECLARE_WRITE8_MEMBER(beep_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(cass_r); DECLARE_WRITE_LINE_MEMBER(cass_w); DECLARE_QUICKLOAD_LOAD_MEMBER(cd2650); @@ -182,7 +182,7 @@ static GFXDECODE_START( cd2650 ) GFXDECODE_ENTRY( "chargen", 0x0000, cd2650_charlayout, 0, 1 ) GFXDECODE_END -WRITE8_MEMBER( cd2650_state::kbd_put ) +void cd2650_state::kbd_put(u8 data) { if (data) m_term_data = data; @@ -257,7 +257,7 @@ QUICKLOAD_LOAD_MEMBER( cd2650_state, cd2650 ) return result; } -static MACHINE_CONFIG_START( cd2650, cd2650_state ) +static MACHINE_CONFIG_START( cd2650 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(cd2650_mem) @@ -287,7 +287,7 @@ static MACHINE_CONFIG_START( cd2650, cd2650_state ) /* Devices */ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(cd2650_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(cd2650_state, kbd_put)) MCFG_CASSETTE_ADD( "cassette" ) MACHINE_CONFIG_END @@ -314,5 +314,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, cd2650, 0, 0, cd2650, cd2650, driver_device, 0, "Central Data", "CD 2650", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1977, cd2650, 0, 0, cd2650, cd2650, cd2650_state, 0, "Central Data", "CD 2650", 0 ) diff --git a/src/mame/drivers/cdc721.cpp b/src/mame/drivers/cdc721.cpp index e427048a09f..efcb2f64363 100644 --- a/src/mame/drivers/cdc721.cpp +++ b/src/mame/drivers/cdc721.cpp @@ -111,7 +111,7 @@ uint32_t cdc721_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap return 0; } -static MACHINE_CONFIG_START( cdc721, cdc721_state ) +static MACHINE_CONFIG_START( cdc721 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(cdc721_mem) @@ -141,4 +141,4 @@ ROM_START( cdc721 ) ROM_LOAD( "66315039", 0x0000, 0x1000, CRC(5c9aa968) SHA1(3ec7c5f25562579e6ed3fda7562428ff5e6b9550) ) // chargen ROM_END -COMP( 1981, cdc721, 0, 0, cdc721, cdc721, driver_device, 0, "Control Data Corporation", "CDC721 Terminal", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1981, cdc721, 0, 0, cdc721, cdc721, cdc721_state, 0, "Control Data Corporation", "CDC721 Terminal", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp index a06dac236fd..1e2acade9cb 100644 --- a/src/mame/drivers/cdi.cpp +++ b/src/mame/drivers/cdi.cpp @@ -770,7 +770,7 @@ WRITE8_MEMBER( cdi_state::slave_io_w ) *************************/ // CD-i Mono-I system base -static MACHINE_CONFIG_START( cdimono1_base, cdi_state ) +static MACHINE_CONFIG_START( cdimono1_base ) MCFG_CPU_ADD("maincpu", SCC68070, CLOCK_A/2) MCFG_CPU_PROGRAM_MAP(cdimono1_mem) @@ -816,7 +816,7 @@ static MACHINE_CONFIG_START( cdimono1_base, cdi_state ) MACHINE_CONFIG_END // CD-i model 220 (Mono-II, NTSC) -static MACHINE_CONFIG_START( cdimono2, cdi_state ) +static MACHINE_CONFIG_START( cdimono2 ) MCFG_CPU_ADD("maincpu", SCC68070, CLOCK_A/2) MCFG_CPU_PROGRAM_MAP(cdimono2_mem) @@ -870,7 +870,7 @@ static MACHINE_CONFIG_START( cdimono2, cdi_state ) MCFG_MK48T08_ADD( "mk48t08" ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cdi910, cdi_state ) +static MACHINE_CONFIG_START( cdi910 ) MCFG_CPU_ADD("maincpu", SCC68070, CLOCK_A/2) MCFG_CPU_PROGRAM_MAP(cdi910_mem) @@ -943,7 +943,7 @@ MACHINE_CONFIG_END READ8_MEMBER( cdi_state::quizard_mcu_p1_r ) { - return rand(); + return machine().rand(); } static ADDRESS_MAP_START( mcu_io_map, AS_IO, 8, cdi_state ) @@ -1278,31 +1278,31 @@ ROM_END * Game driver(s) * *************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME */ // BIOS / System -CONS( 1991, cdimono1, 0, 0, cdimono1, cdi, driver_device, 0, "Philips", "CD-i (Mono-I) (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -CONS( 1991, cdimono2, 0, 0, cdimono2, cdimono2, driver_device, 0, "Philips", "CD-i (Mono-II) (NTSC)", MACHINE_NOT_WORKING ) -CONS( 1991, cdi910, 0, 0, cdi910, cdimono2, driver_device, 0, "Philips", "CD-i 910-17P Mini-MMC (PAL)", MACHINE_NOT_WORKING ) -CONS( 1991, cdi490a, 0, 0, cdimono1, cdi, driver_device, 0, "Philips", "CD-i 490", MACHINE_NOT_WORKING ) +CONS( 1991, cdimono1, 0, 0, cdimono1, cdi, cdi_state, 0, "Philips", "CD-i (Mono-I) (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 1991, cdimono2, 0, 0, cdimono2, cdimono2, cdi_state, 0, "Philips", "CD-i (Mono-II) (NTSC)", MACHINE_NOT_WORKING ) +CONS( 1991, cdi910, 0, 0, cdi910, cdimono2, cdi_state, 0, "Philips", "CD-i 910-17P Mini-MMC (PAL)", MACHINE_NOT_WORKING ) +CONS( 1991, cdi490a, 0, 0, cdimono1, cdi, cdi_state, 0, "Philips", "CD-i 490", MACHINE_NOT_WORKING ) // The Quizard games are RETAIL CD-i units, with additional JAMMA adapters & dongles for protection, hence being 'clones' of the system. -GAME( 1995, cdibios, 0, cdimono1_base, quizard, driver_device, 0, ROT0, "Philips", "CD-i (Mono-I) (PAL) BIOS", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IS_BIOS_ROOT ) +GAME( 1995, cdibios, 0, cdimono1_base, quizard, cdi_state, 0, ROT0, "Philips", "CD-i (Mono-I) (PAL) BIOS", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IS_BIOS_ROOT ) -GAME( 1995, quizard, cdibios, quizard1, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.8)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1995, quizard_17, quizard, quizard1, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.7)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1995, quizard_12, quizard, quizard1, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1995, quizard_10, quizard, quizard1, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.0)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1995, quizard, cdibios, quizard1, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard (v1.8)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1995, quizard_17, quizard, quizard1, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard (v1.7)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1995, quizard_12, quizard, quizard1, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard (v1.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1995, quizard_10, quizard, quizard1, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard (v1.0)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1995, quizard2, cdibios, quizard2, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.3)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1995, quizard2_22, quizard2, quizard2, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1995, quizard2, cdibios, quizard2, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard 2 (v2.3)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1995, quizard2_22, quizard2, quizard2, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard 2 (v2.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) // Quizard 3 and 4 will hang after inserting a coin (incomplete protection sims?) -GAME( 1995, quizard3, cdibios, quizard3, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.4)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1996, quizard3_32, quizard3, quizard3, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1995, quizard3, cdibios, quizard3, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard 3 (v3.4)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1996, quizard3_32, quizard3, quizard3, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard 3 (v3.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1998, quizard4, cdibios, quizard4, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1998, quizard4_41, quizard4, quizard4, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1997, quizard4_40, quizard4, quizard4, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.0)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1998, quizard4, cdibios, quizard4, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1998, quizard4_41, quizard4, quizard4, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1997, quizard4_40, quizard4, quizard4, quizard, cdi_state, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.0)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/cedar_magnet.cpp b/src/mame/drivers/cedar_magnet.cpp index efe3a5e1873..e19e894177f 100644 --- a/src/mame/drivers/cedar_magnet.cpp +++ b/src/mame/drivers/cedar_magnet.cpp @@ -750,7 +750,7 @@ INTERRUPT_GEN_MEMBER(cedar_magnet_state::irq) m_cedsprite->irq_hold(); } -static MACHINE_CONFIG_START( cedar_magnet, cedar_magnet_state ) +static MACHINE_CONFIG_START( cedar_magnet ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */ @@ -902,8 +902,8 @@ DRIVER_INIT_MEMBER(cedar_magnet_state, mag_exzi) m_prothack = mag_exzi_protection_hack; } -GAME( 1987, cedmag, 0, cedar_magnet, cedar_magnet, driver_device, 0, ROT0, "EFO SA / Cedar", "Magnet System", MACHINE_IS_BIOS_ROOT ) +GAME( 1987, cedmag, 0, cedar_magnet, cedar_magnet, cedar_magnet_state, 0, ROT0, "EFO SA / Cedar", "Magnet System", MACHINE_IS_BIOS_ROOT ) -GAME( 1987, mag_time, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, mag_time, ROT90, "EFO SA / Cedar", "Time Scanner (TS 2.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Sega -GAME( 1987, mag_exzi, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, mag_exzi, ROT0, "EFO SA / Cedar", "Exzisus (EX 1.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Taito +GAME( 1987, mag_time, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, mag_time, ROT90, "EFO SA / Cedar", "Time Scanner (TS 2.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Sega +GAME( 1987, mag_exzi, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, mag_exzi, ROT0, "EFO SA / Cedar", "Exzisus (EX 1.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Taito GAME( 1987, mag_xain, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, mag_xain, ROT0, "EFO SA / Cedar", "Xain'd Sleena (SC 3.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Technos diff --git a/src/mame/drivers/centiped.cpp b/src/mame/drivers/centiped.cpp index 21f395df5fa..69116644ac6 100644 --- a/src/mame/drivers/centiped.cpp +++ b/src/mame/drivers/centiped.cpp @@ -1679,7 +1679,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( centiped_base, centiped_state ) +static MACHINE_CONFIG_START( centiped_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 12096000/8) /* 1.512 MHz (slows down to 0.75MHz while accessing playfield RAM) */ @@ -1842,7 +1842,7 @@ static MACHINE_CONFIG_DERIVED( mazeinv, milliped ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bullsdrt, centiped_state ) +static MACHINE_CONFIG_START( bullsdrt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 12096000/8) @@ -2191,23 +2191,23 @@ DRIVER_INIT_MEMBER(centiped_state,multiped) *************************************/ // Centipede, Millipede, and clones -GAME( 1980, centiped, 0, centiped, centiped4,driver_device, 0, ROT270, "Atari", "Centipede (revision 4)", MACHINE_SUPPORTS_SAVE ) /* 1 Player Only with Timer Options */ -GAME( 1980, centiped3, centiped, centiped, centiped, driver_device, 0, ROT270, "Atari", "Centipede (revision 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, centiped2, centiped, centiped, centiped, driver_device, 0, ROT270, "Atari", "Centipede (revision 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, centiped1, centiped, centiped, centiped, driver_device, 0, ROT270, "Atari", "Centipede (revision 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, centipdb, centiped, centipdb, centiped, driver_device, 0, ROT270, "bootleg", "Centipede (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, centipdd, centiped, centiped, centiped, driver_device, 0, ROT270, "hack (Two-Bit Score)", "Centipede Dux (hack)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, caterplr, centiped, caterplr, caterplr, driver_device, 0, ROT270, "bootleg (Olympia)", "Caterpillar (bootleg of Centipede)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, millpac, centiped, centipdb, centiped, driver_device, 0, ROT270, "bootleg? (Valadon Automation)", "Millpac (bootleg of Centipede)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, magworm, centiped, magworm, magworm, driver_device, 0, ROT270, "bootleg (Sidam)", "Magic Worm (bootleg of Centipede, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, magworma, centiped, magworm, magworm, driver_device, 0, ROT270, "bootleg", "Magic Worm (bootleg of Centipede, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1982, milliped, 0, milliped, milliped, driver_device, 0, ROT270, "Atari", "Millipede", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, millipdd, milliped, milliped, milliped, driver_device, 0, ROT270, "hack (Two-Bit Score)", "Millipede Dux (hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, centiped, 0, centiped, centiped4,centiped_state, 0, ROT270, "Atari", "Centipede (revision 4)", MACHINE_SUPPORTS_SAVE ) /* 1 Player Only with Timer Options */ +GAME( 1980, centiped3, centiped, centiped, centiped, centiped_state, 0, ROT270, "Atari", "Centipede (revision 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, centiped2, centiped, centiped, centiped, centiped_state, 0, ROT270, "Atari", "Centipede (revision 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, centiped1, centiped, centiped, centiped, centiped_state, 0, ROT270, "Atari", "Centipede (revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, centipdb, centiped, centipdb, centiped, centiped_state, 0, ROT270, "bootleg", "Centipede (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, centipdd, centiped, centiped, centiped, centiped_state, 0, ROT270, "hack (Two-Bit Score)", "Centipede Dux (hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, caterplr, centiped, caterplr, caterplr, centiped_state, 0, ROT270, "bootleg (Olympia)", "Caterpillar (bootleg of Centipede)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, millpac, centiped, centipdb, centiped, centiped_state, 0, ROT270, "bootleg? (Valadon Automation)", "Millpac (bootleg of Centipede)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, magworm, centiped, magworm, magworm, centiped_state, 0, ROT270, "bootleg (Sidam)", "Magic Worm (bootleg of Centipede, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, magworma, centiped, magworm, magworm, centiped_state, 0, ROT270, "bootleg", "Magic Worm (bootleg of Centipede, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1982, milliped, 0, milliped, milliped, centiped_state, 0, ROT270, "Atari", "Millipede", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, millipdd, milliped, milliped, milliped, centiped_state, 0, ROT270, "hack (Two-Bit Score)", "Millipede Dux (hack)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, multiped, 0, multiped, multiped, centiped_state, multiped, ROT270, "hack (Braze Technologies)", "Multipede (Centipede/Millipede multigame kit)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // other Atari games -GAME( 1980, warlords, 0, warlords, warlords, driver_device, 0, ROT0, "Atari", "Warlords", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mazeinv, 0, mazeinv, mazeinv, driver_device, 0, ROT270, "Atari", "Maze Invaders (prototype)", 0 ) +GAME( 1980, warlords, 0, warlords, warlords, centiped_state, 0, ROT0, "Atari", "Warlords", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mazeinv, 0, mazeinv, mazeinv, centiped_state, 0, ROT270, "Atari", "Maze Invaders (prototype)", 0 ) // other manufacturers GAME( 1985, bullsdrt, 0, bullsdrt, bullsdrt, centiped_state, bullsdrt, ROT270, "Shinkai Inc. (Magic Electronics Inc. license)", "Bulls Eye Darts", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cesclass.cpp b/src/mame/drivers/cesclass.cpp index 48e0a078c7b..7cb395f0a4d 100644 --- a/src/mame/drivers/cesclass.cpp +++ b/src/mame/drivers/cesclass.cpp @@ -247,7 +247,7 @@ PALETTE_INIT_MEMBER(cesclassic_state, cesclassic) palette.set_pen_color(i, pal2bit(i), 0, 0); } -static MACHINE_CONFIG_START( cesclassic, cesclassic_state ) +static MACHINE_CONFIG_START( cesclassic ) MCFG_CPU_ADD("maincpu", M68000, 24000000/2 ) MCFG_CPU_PROGRAM_MAP(cesclassic_map) @@ -269,7 +269,7 @@ static MACHINE_CONFIG_START( cesclassic, cesclassic_state ) MCFG_PALETTE_INIT_OWNER(cesclassic_state, cesclassic) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 24000000/16, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 24000000/16, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -301,6 +301,6 @@ ROM_START(tsclass) ROM_END -GAME(1997, hrclass, 0, cesclassic, cesclassic, driver_device, 0, ROT0, "Creative Electronics And Software", "Home Run Classic (v1.21 12-feb-1997)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1997, ccclass, 0, cesclassic, cesclassic, driver_device, 0, ROT0, "Creative Electronics And Software", "Country Club Classic (v1.10 03-apr-1997)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1997, tsclass, 0, cesclassic, cesclassic, driver_device, 0, ROT0, "Creative Electronics And Software", "Trap Shoot Classic (v1.0 21-mar-1997)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1997, hrclass, 0, cesclassic, cesclassic, cesclassic_state, 0, ROT0, "Creative Electronics And Software", "Home Run Classic (v1.21 12-feb-1997)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1997, ccclass, 0, cesclassic, cesclassic, cesclassic_state, 0, ROT0, "Creative Electronics And Software", "Country Club Classic (v1.10 03-apr-1997)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1997, tsclass, 0, cesclassic, cesclassic, cesclassic_state, 0, ROT0, "Creative Electronics And Software", "Trap Shoot Classic (v1.0 21-mar-1997)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/cfx9850.cpp b/src/mame/drivers/cfx9850.cpp index 64c49741a92..8e2375f82f6 100644 --- a/src/mame/drivers/cfx9850.cpp +++ b/src/mame/drivers/cfx9850.cpp @@ -10,6 +10,12 @@ The unit is switched off by default, you have to switch it on by pressing 'Q'. Currently (year2011) it is on by default, the only key that works is '\' which turns it off. After that nothing happens. +Normal operation: +- AC/ON - turns the unit on +- SHIFT + OFF - turns the unit off + +The unit automatically powers off after no operation for about 6 minutes (intro/quick start, page viii). + Debugging information: 1. g 10b3 (Initialise system) 2. cs=23 @@ -28,48 +34,91 @@ class cfx9850_state : public driver_device { public: cfx9850_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_video_ram(*this, "video_ram"), - m_display_ram(*this, "display_ram"), - m_ko_port(*this, "KO.%u", 0), - m_maincpu(*this, "maincpu") { } + : driver_device(mconfig, type, tag) + , m_video_ram(*this, "video_ram") + , m_display_ram(*this, "display_ram") + , m_ko_port(*this, "KO%u", 1) + , m_maincpu(*this, "maincpu") + , m_ko(0) + , m_port(0) + , m_opt(0) + { } DECLARE_WRITE8_MEMBER(kol_w); DECLARE_WRITE8_MEMBER(koh_w); + DECLARE_WRITE8_MEMBER(port_w); + DECLARE_WRITE8_MEMBER(opt_w); DECLARE_READ8_MEMBER(ki_r); DECLARE_READ8_MEMBER(in0_r); required_shared_ptr m_video_ram; required_shared_ptr m_display_ram; - u16 m_ko; // KO lines KO1 - KO14 DECLARE_PALETTE_INIT(cfx9850); u32 screen_update_cfx9850(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); protected: required_ioport_array<12> m_ko_port; required_device m_maincpu; + +private: + u16 m_ko; // KO lines KO1 - KO14 + u8 m_port; // PORT lines PORT0 - PORT7 (serial I/O) + u8 m_opt; // OPT lines OPT0 - OPT7 (contrast) }; static ADDRESS_MAP_START(cfx9850, AS_PROGRAM, 8, cfx9850_state) AM_RANGE( 0x000000, 0x007fff ) AM_ROM AM_RANGE( 0x080000, 0x0807ff ) AM_RAM AM_SHARE("video_ram") -// AM_RANGE( 0x100000, 0x10ffff ) // some memory mapped i/o? -// AM_RANGE( 0x110000, 0x11ffff ) // some memory mapped i/o? +// AM_RANGE( 0x100000, 0x10ffff ) // some memory mapped i/o??? +// AM_RANGE( 0x110000, 0x11ffff ) // some memory mapped i/o??? AM_RANGE( 0x200000, 0x27ffff ) AM_ROM AM_REGION( "bios", 0 ) AM_RANGE( 0x400000, 0x40ffff ) AM_RAM AM_RANGE( 0x600000, 0x6007ff ) AM_MIRROR(0xf800) AM_RAM AM_SHARE("display_ram") -// AM_RANGE( 0xe10000, 0xe1ffff ) // some memory mapped i/o? +// AM_RANGE( 0xe10000, 0xe1ffff ) // some memory mapped i/o??? ADDRESS_MAP_END WRITE8_MEMBER(cfx9850_state::kol_w) { m_ko = (m_ko & 0xff00) | data; + logerror("KO is now %04x\n", m_ko); } + WRITE8_MEMBER(cfx9850_state::koh_w) { m_ko = (m_ko & 0x00ff) | (data << 8); + logerror("KO is now %04x\n", m_ko); +} + + +// 7------- PORT7 - RX enable? +// -6------ PORT6 - NC / CP45 +// --5----- PORT5 - TX enable? +// ---4---- PORT4 - data out (see code at 2225A0) +// ----3--- PORT3 - NC / CP28 +// -----2-- PORT2 - NC / CP29 +// ------1- PORT1 - NC / CP30 +// -------0 PORT0 - display (enable?) related? + CP31 +WRITE8_MEMBER(cfx9850_state::port_w) +{ + m_port = data; + logerror("PORT is now %02x\n", m_port); +} + + +// 7------- OPT7 - NC / CP46 +// -6------ OPT6 - NC / CP25 +// --5----- OPT5 - NC / CP26 +// ---4---- OPT4 - NC / CP27 +// ----3--- OPT3 - contrast (TC74HC4066AFS pin 12) +// -----2-- OPT2 - contrast (TC74HC4066AFS pin 6) +// ------1- OPT1 - contrast (TC74HC4066AFS pin 5) +// -------0 OPT0 - contrast (TC74HC4066AFS pin 13) +WRITE8_MEMBER(cfx9850_state::opt_w) +{ + m_opt = data; + logerror("OPT is now %02x\n", m_opt); } @@ -91,98 +140,104 @@ READ8_MEMBER(cfx9850_state::ki_r) READ8_MEMBER(cfx9850_state::in0_r) { - // battery level - return 0x30; + // battery level? + // bit4 -> if reset CPU keeps restarting (several unknown instructions before jumping to 0) + // perhaps a battery present check? + // bit 5 -> 0 = low battery + + // --XX ---- VDET + // ---- -X-- data-in + return 0x30 & ~ 0x00; } static INPUT_PORTS_START(cfx9850) - PORT_START("KO.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("AC On/Off") PORT_CODE(KEYCODE_BACKSLASH) - PORT_BIT(0xfe, IP_ACTIVE_HIGH, IPT_UNUSED) - - PORT_START("KO.1") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("EXE Enter") PORT_CODE(KEYCODE_ENTER) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("(-) Ares") PORT_CODE(KEYCODE_MINUS) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("EXP Pi") PORT_CODE(KEYCODE_EQUALS) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(". SPACE") PORT_CODE(KEYCODE_SPACE) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0 Z") PORT_CODE(KEYCODE_Z) + PORT_START("KO1") + /* KI1 */ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("AC On/Off") PORT_CODE(KEYCODE_BACKSLASH) + PORT_BIT(0xfe, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START("KO2") + /* KI3 */ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("EXE Enter") PORT_CODE(KEYCODE_ENTER) + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("(-) Ares") PORT_CODE(KEYCODE_MINUS) + /* KI5 */ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("EXP Pi") PORT_CODE(KEYCODE_EQUALS) + /* KI6 */ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(". SPACE") PORT_CODE(KEYCODE_SPACE) + /* KI7 */ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0 Z") PORT_CODE(KEYCODE_Z) PORT_BIT(0x83, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("KO.2") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- ] Y") PORT_CODE(KEYCODE_Y) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("+ [ X") PORT_CODE(KEYCODE_X) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3 W") PORT_CODE(KEYCODE_W) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2 V") PORT_CODE(KEYCODE_V) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1 U") PORT_CODE(KEYCODE_U) + PORT_START("KO3") + /* KI3 */ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- ] Y") PORT_CODE(KEYCODE_Y) + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("+ [ X") PORT_CODE(KEYCODE_X) + /* KI5 */ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3 W") PORT_CODE(KEYCODE_W) + /* KI6 */ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2 V") PORT_CODE(KEYCODE_V) + /* KI7 */ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1 U") PORT_CODE(KEYCODE_U) PORT_BIT(0x83, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("KO.3") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("/ } T") PORT_CODE(KEYCODE_T) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("* { S") PORT_CODE(KEYCODE_S) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6 R") PORT_CODE(KEYCODE_R) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5 Q") PORT_CODE(KEYCODE_Q) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4 P") PORT_CODE(KEYCODE_P) + PORT_START("KO4") + /* KI3 */ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("/ } T") PORT_CODE(KEYCODE_T) + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("* { S") PORT_CODE(KEYCODE_S) + /* KI5 */ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6 R") PORT_CODE(KEYCODE_R) + /* KI6 */ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5 Q") PORT_CODE(KEYCODE_Q) + /* KI7 */ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4 P") PORT_CODE(KEYCODE_P) PORT_BIT(0x83, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("KO.4") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DEL DG") PORT_CODE(KEYCODE_BACKSPACE) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9 O") PORT_CODE(KEYCODE_O) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8 N") PORT_CODE(KEYCODE_N) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7 M") PORT_CODE(KEYCODE_M) + PORT_START("KO5") + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DEL DG") PORT_CODE(KEYCODE_BACKSPACE) + /* KI5 */ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9 O") PORT_CODE(KEYCODE_O) + /* KI6 */ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8 N") PORT_CODE(KEYCODE_N) + /* KI7 */ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7 M") PORT_CODE(KEYCODE_M) PORT_BIT(0x87, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("KO.5") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TAB L") PORT_CODE(KEYCODE_L) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(", K") PORT_CODE(KEYCODE_K) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(") x^-1 J") PORT_CODE(KEYCODE_J) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("( .. I") PORT_CODE(KEYCODE_I) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F<=>0 H") PORT_CODE(KEYCODE_H) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("a b/c G") PORT_CODE(KEYCODE_G) + PORT_START("KO6") + /* KI2 */ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TAB L") PORT_CODE(KEYCODE_L) + /* KI3 */ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(", K") PORT_CODE(KEYCODE_K) + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(") x^-1 J") PORT_CODE(KEYCODE_J) + /* KI5 */ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("( .. I") PORT_CODE(KEYCODE_I) + /* KI6 */ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F<=>0 H") PORT_CODE(KEYCODE_H) + /* KI7 */ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("a b/c G") PORT_CODE(KEYCODE_G) PORT_BIT(0x81, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("KO.6") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("tan tan^-1 F") PORT_CODE(KEYCODE_F) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("cos cas^-1 E") PORT_CODE(KEYCODE_E) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("sin sin^-1 D") PORT_CODE(KEYCODE_D) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ln e^x C") PORT_CODE(KEYCODE_C) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("log 10^x B") PORT_CODE(KEYCODE_B) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("x,d,t A") PORT_CODE(KEYCODE_A) + PORT_START("KO7") + /* KI2 */ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("tan tan^-1 F") PORT_CODE(KEYCODE_F) + /* KI3 */ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("cos cas^-1 E") PORT_CODE(KEYCODE_E) + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("sin sin^-1 D") PORT_CODE(KEYCODE_D) + /* KI5 */ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ln e^x C") PORT_CODE(KEYCODE_C) + /* KI6 */ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("log 10^x B") PORT_CODE(KEYCODE_B) + /* KI7 */ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("x,d,t A") PORT_CODE(KEYCODE_A) PORT_BIT(0x81, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("KO.7") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("EXIT QUIT") PORT_CODE(KEYCODE_STOP) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("/\\ .. ..") PORT_CODE(KEYCODE_COMMA) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("x^2 sqrt ..") PORT_CODE(KEYCODE_SLASH) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ALPHA ..-LOCK") PORT_CODE(KEYCODE_CAPSLOCK) + PORT_START("KO8") + /* KI2 */ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) + /* KI3 */ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("EXIT QUIT") PORT_CODE(KEYCODE_STOP) + /* KI5 */ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("/\\ .. ..") PORT_CODE(KEYCODE_COMMA) + /* KI6 */ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("x^2 sqrt ..") PORT_CODE(KEYCODE_SLASH) + /* KI7 */ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ALPHA ..-LOCK") PORT_CODE(KEYCODE_CAPSLOCK) PORT_BIT(0x81, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("KO.8") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("MENU SET UP") PORT_CODE(KEYCODE_OPENBRACE) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("VARS PRGM") PORT_CODE(KEYCODE_CLOSEBRACE) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("OPTN") PORT_CODE(KEYCODE_LCONTROL) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) + PORT_START("KO9") + /* KI2 */ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) + /* KI3 */ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("MENU SET UP") PORT_CODE(KEYCODE_OPENBRACE) + /* KI5 */ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("VARS PRGM") PORT_CODE(KEYCODE_CLOSEBRACE) + /* KI6 */ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("OPTN") PORT_CODE(KEYCODE_LCONTROL) + /* KI7 */ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_BIT(0x81, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("KO.9") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F6 G<=>T") PORT_CODE(KEYCODE_F6) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F5 G-Solv") PORT_CODE(KEYCODE_F5) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4 Sketch") PORT_CODE(KEYCODE_F4) - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3 V-Window") PORT_CODE(KEYCODE_F3) - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F2 Zoom") PORT_CODE(KEYCODE_F2) - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F1 Trace") PORT_CODE(KEYCODE_F1) + PORT_START("KO10") + /* KI2 */ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F6 G<=>T") PORT_CODE(KEYCODE_F6) + /* KI3 */ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F5 G-Solv") PORT_CODE(KEYCODE_F5) + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4 Sketch") PORT_CODE(KEYCODE_F4) + /* KI5 */ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3 V-Window") PORT_CODE(KEYCODE_F3) + /* KI6 */ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F2 Zoom") PORT_CODE(KEYCODE_F2) + /* KI7 */ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F1 Trace") PORT_CODE(KEYCODE_F1) PORT_BIT(0x81, IP_ACTIVE_HIGH, IPT_UNUSED) // KO11 is not connected - PORT_START("KO.10") + PORT_START("KO11") PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("KO.11") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TEST") PORT_CODE(KEYCODE_TILDE) + PORT_START("KO12") + /* KI4 */ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TEST") PORT_CODE(KEYCODE_TILDE) PORT_BIT(0xf7, IP_ACTIVE_HIGH, IPT_UNUSED) INPUT_PORTS_END @@ -224,11 +279,13 @@ u32 cfx9850_state::screen_update_cfx9850(screen_device &screen, bitmap_ind16 &bi } -static MACHINE_CONFIG_START(cfx9850, cfx9850_state) - MCFG_CPU_ADD("maincpu", HCD62121, 4300000) /* 4.3 MHz */ +static MACHINE_CONFIG_START(cfx9850) + MCFG_CPU_ADD("maincpu", HCD62121, 4300000) /* X1 - 4.3 MHz */ MCFG_CPU_PROGRAM_MAP(cfx9850) MCFG_HCD62121_KOL_CB(WRITE8(cfx9850_state, kol_w)) MCFG_HCD62121_KOH_CB(WRITE8(cfx9850_state, koh_w)) + MCFG_HCD62121_PORT_CB(WRITE8(cfx9850_state, port_w)) + MCFG_HCD62121_OPT_CB(WRITE8(cfx9850_state, opt_w)) MCFG_HCD62121_KI_CB(READ8(cfx9850_state, ki_r)) MCFG_HCD62121_IN0_CB(READ8(cfx9850_state, in0_r)) @@ -241,7 +298,7 @@ static MACHINE_CONFIG_START(cfx9850, cfx9850_state) MCFG_DEFAULT_LAYOUT(layout_lcd) - // TODO: Verify amount of colors and palette + // TODO: Verify amount of colors and palette. Colors can be changed by changing the contrast. MCFG_PALETTE_ADD("palette", 4) MCFG_PALETTE_INIT_OWNER(cfx9850_state, cfx9850) MACHINE_CONFIG_END @@ -260,4 +317,4 @@ ROM_START(cfx9850) ROM_END -COMP(1996, cfx9850, 0, 0, cfx9850, cfx9850, driver_device, 0, "Casio", "CFX-9850G", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +COMP(1996, cfx9850, 0, 0, cfx9850, cfx9850, cfx9850_state, 0, "Casio", "CFX-9850G", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/cgc7900.cpp b/src/mame/drivers/cgc7900.cpp index 3d2df7b32e7..c96adab9e5d 100644 --- a/src/mame/drivers/cgc7900.cpp +++ b/src/mame/drivers/cgc7900.cpp @@ -293,17 +293,6 @@ static ADDRESS_MAP_START( keyboard_mem, AS_PROGRAM, 8, cgc7900_state ) AM_RANGE(0x000, 0x7ff) AM_ROM ADDRESS_MAP_END -/*------------------------------------------------- - ADDRESS_MAP( keyboard_io ) --------------------------------------------------*/ - -static ADDRESS_MAP_START( keyboard_io, AS_IO, 8, cgc7900_state ) -/* AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS)*/ -ADDRESS_MAP_END - /*************************************************************************** INPUT PORTS ***************************************************************************/ @@ -366,14 +355,20 @@ void cgc7900_state::machine_reset() MACHINE_DRIVER( cgc7900 ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( cgc7900, cgc7900_state ) +static MACHINE_CONFIG_START( cgc7900 ) /* basic machine hardware */ MCFG_CPU_ADD(M68000_TAG, M68000, XTAL_28_48MHz/4) MCFG_CPU_PROGRAM_MAP(cgc7900_mem) MCFG_CPU_ADD(I8035_TAG, I8035, 1000000) MCFG_CPU_PROGRAM_MAP(keyboard_mem) - MCFG_CPU_IO_MAP(keyboard_io) + //MCFG_MCS48_PORT_P1_IN_CB(READ8()) + //MCFG_MCS48_PORT_P1_OUT_CB(WRITE8()) + //MCFG_MCS48_PORT_P2_IN_CB(READ8()) + //MCFG_MCS48_PORT_P2_OUT_CB(WRITE8()) + //MCFG_MCS48_PORT_T1_IN_CB(READLINE()) + //MCFG_MCS48_PORT_BUS_IN_CB(READ8()) + //MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8()) MCFG_DEVICE_DISABLE() /* MCFG_CPU_ADD(AM2910_TAG, AM2910, XTAL_17_36MHz) @@ -446,5 +441,5 @@ ROM_END SYSTEM DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, cgc7900, 0, 0, cgc7900, cgc7900, driver_device, 0, "Chromatics", "CGC 7900", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1980, cgc7900, 0, 0, cgc7900, cgc7900, cgc7900_state, 0, "Chromatics", "CGC 7900", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/cgenie.cpp b/src/mame/drivers/cgenie.cpp index b8e7f6135ec..b4ebf9798fa 100644 --- a/src/mame/drivers/cgenie.cpp +++ b/src/mame/drivers/cgenie.cpp @@ -81,7 +81,7 @@ private: required_device m_ram; required_device m_crtc; required_device m_rs232; - required_device m_exp; + required_device m_exp; required_memory_region m_char_rom; required_shared_ptr m_color_ram; required_shared_ptr m_font_ram; @@ -433,7 +433,7 @@ const rgb_t cgenie_state::m_palette_nz[] = // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( cgenie, cgenie_state ) +static MACHINE_CONFIG_START( cgenie ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, XTAL_17_73447MHz / 8) // 2.2168 MHz MCFG_CPU_PROGRAM_MAP(cgenie_mem) @@ -453,10 +453,10 @@ static MACHINE_CONFIG_START( cgenie, cgenie_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("ay8910", AY8910, XTAL_17_73447MHz / 8) - MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("par", parallel_slot_device, pa_r)) - MCFG_AY8910_PORT_A_WRITE_CB(DEVWRITE8("par", parallel_slot_device, pa_w)) - MCFG_AY8910_PORT_B_READ_CB(DEVREAD8("par", parallel_slot_device, pb_r)) - MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITE8("par", parallel_slot_device, pb_w)) + MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("par", cg_parallel_slot_device, pa_r)) + MCFG_AY8910_PORT_A_WRITE_CB(DEVWRITE8("par", cg_parallel_slot_device, pa_w)) + MCFG_AY8910_PORT_B_READ_CB(DEVREAD8("par", cg_parallel_slot_device, pb_r)) + MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITE8("par", cg_parallel_slot_device, pb_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) MCFG_CASSETTE_ADD("cassette") @@ -472,11 +472,11 @@ static MACHINE_CONFIG_START( cgenie, cgenie_state ) MCFG_RS232_DCD_HANDLER(WRITELINE(cgenie_state, rs232_dcd_w)) // cartridge expansion slot - MCFG_EXPANSION_SLOT_ADD("exp") - MCFG_EXPANSION_SLOT_INT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_CG_EXP_SLOT_ADD("exp") + MCFG_CG_EXP_SLOT_INT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) // parallel slot - MCFG_PARALLEL_SLOT_ADD("par") + MCFG_CG_PARALLEL_SLOT_ADD("par") // internal ram MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mame/drivers/chaknpop.cpp b/src/mame/drivers/chaknpop.cpp index d88f3ba3420..23267791a3c 100644 --- a/src/mame/drivers/chaknpop.cpp +++ b/src/mame/drivers/chaknpop.cpp @@ -354,7 +354,7 @@ void chaknpop_state::machine_reset() m_mcu_select = 0; } -static MACHINE_CONFIG_START( chaknpop, chaknpop_state ) +static MACHINE_CONFIG_START( chaknpop ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18MHz / 6) /* Verified on PCB */ @@ -421,5 +421,5 @@ ROM_START( chaknpop ) ROM_END -/* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME ) */ -GAME( 1983, chaknpop, 0, chaknpop, chaknpop, driver_device, 0, ROT0, "Taito Corporation", "Chack'n Pop", MACHINE_SUPPORTS_SAVE ) +/* ( YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS ) */ +GAME( 1983, chaknpop, 0, chaknpop, chaknpop, chaknpop_state, 0, ROT0, "Taito Corporation", "Chack'n Pop", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cham24.cpp b/src/mame/drivers/cham24.cpp index a6ad7a89a63..3ec944ada4b 100644 --- a/src/mame/drivers/cham24.cpp +++ b/src/mame/drivers/cham24.cpp @@ -251,10 +251,6 @@ static INPUT_PORTS_START( cham24 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) INPUT_PORTS_END -void cham24_state::machine_reset() -{ -} - PALETTE_INIT_MEMBER(cham24_state, cham24) { m_ppu->init_palette(palette, 0); @@ -278,6 +274,12 @@ uint32_t cham24_state::screen_update_cham24(screen_device &screen, bitmap_ind16 void cham24_state::machine_start() +{ + /* need nametable ram, though. I doubt this uses more than 2k, but it starts up configured for 4 */ + m_nt_ram = std::make_unique(0x1000); +} + +void cham24_state::machine_reset() { /* switch PRG rom */ uint8_t* dst = memregion("maincpu")->base(); @@ -289,9 +291,7 @@ void cham24_state::machine_start() /* uses 8K swapping, all ROM!*/ m_ppu->space(AS_PROGRAM).install_read_bank(0x0000, 0x1fff, "bank1"); membank("bank1")->set_base(memregion("gfx1")->base()); - - /* need nametable ram, though. I doubt this uses more than 2k, but it starts up configured for 4 */ - m_nt_ram = std::make_unique(0x1000); + m_nt_page[0] = m_nt_ram.get(); m_nt_page[1] = m_nt_ram.get() + 0x400; m_nt_page[2] = m_nt_ram.get() + 0x800; @@ -309,12 +309,11 @@ static GFXDECODE_START( cham24 ) /* none, the ppu generates one */ GFXDECODE_END -static MACHINE_CONFIG_START( cham24, cham24_state ) +static MACHINE_CONFIG_START( cham24 ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", N2A03, N2A03_DEFAULTCLOCK) + MCFG_CPU_ADD("maincpu", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(cham24_map) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/champbas.cpp b/src/mame/drivers/champbas.cpp index 8db48119ce4..c30c85745c4 100644 --- a/src/mame/drivers/champbas.cpp +++ b/src/mame/drivers/champbas.cpp @@ -520,7 +520,7 @@ INTERRUPT_GEN_MEMBER(champbas_state::vblank_irq) } -static MACHINE_CONFIG_START( talbot, champbas_state ) +static MACHINE_CONFIG_START( talbot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) @@ -557,7 +557,7 @@ static MACHINE_CONFIG_START( talbot, champbas_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( champbas, champbas_state ) +static MACHINE_CONFIG_START( champbas ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) @@ -629,7 +629,7 @@ static MACHINE_CONFIG_DERIVED( champbb2, champbasj ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( exctsccr, champbas_state ) +static MACHINE_CONFIG_START( exctsccr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6 ) @@ -690,7 +690,7 @@ static MACHINE_CONFIG_START( exctsccr, champbas_state ) MACHINE_CONFIG_END /* Bootleg running on a modified Champion Baseball board */ -static MACHINE_CONFIG_START( exctsccrb, champbas_state ) +static MACHINE_CONFIG_START( exctsccrb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) @@ -1243,8 +1243,8 @@ DRIVER_INIT_MEMBER(champbas_state,exctsccr) * *************************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR, COMPANY, FULLNAME, FLAGS */ -GAME( 1982, talbot, 0, talbot, talbot, driver_device, 0, ROT270, "Alpha Denshi Co. (Volt Electronics license)", "Talbot", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY, FULLNAME, FLAGS */ +GAME( 1982, talbot, 0, talbot, talbot, champbas_state, 0, ROT270, "Alpha Denshi Co. (Volt Electronics license)", "Talbot", MACHINE_SUPPORTS_SAVE ) GAME( 1983, champbas, 0, champbas, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co. (Sega license)", "Champion Base Ball", MACHINE_SUPPORTS_SAVE ) // no protection GAME( 1983, champbasj, champbas, champbasj, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co.", "Champion Base Ball (Japan set 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/champbwl.cpp b/src/mame/drivers/champbwl.cpp index f78aa2d96e6..7e358ebc34a 100644 --- a/src/mame/drivers/champbwl.cpp +++ b/src/mame/drivers/champbwl.cpp @@ -187,8 +187,8 @@ public: DECLARE_PALETTE_INIT(champbwl); uint32_t screen_update_champbwl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_doraemon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_champbwl(screen_device &screen, bool state); - void screen_eof_doraemon(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_champbwl); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_doraemon); }; PALETTE_INIT_MEMBER(champbwl_state,champbwl) @@ -483,7 +483,7 @@ uint32_t champbwl_state::screen_update_champbwl(screen_device &screen, bitmap_in return 0; } -void champbwl_state::screen_eof_champbwl(screen_device &screen, bool state) +WRITE_LINE_MEMBER(champbwl_state::screen_vblank_champbwl) { // rising edge if (state) @@ -491,7 +491,7 @@ void champbwl_state::screen_eof_champbwl(screen_device &screen, bool state) } -static MACHINE_CONFIG_START( champbwl, champbwl_state ) +static MACHINE_CONFIG_START( champbwl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 16000000/4) /* 4MHz */ @@ -513,7 +513,7 @@ static MACHINE_CONFIG_START( champbwl, champbwl_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(champbwl_state, screen_update_champbwl) - MCFG_SCREEN_VBLANK_DRIVER(champbwl_state, screen_eof_champbwl) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(champbwl_state, screen_vblank_champbwl)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", champbwl) @@ -543,7 +543,7 @@ uint32_t champbwl_state::screen_update_doraemon(screen_device &screen, bitmap_in return 0; } -void champbwl_state::screen_eof_doraemon(screen_device &screen, bool state) +WRITE_LINE_MEMBER(champbwl_state::screen_vblank_doraemon) { // rising edge if (state) @@ -556,7 +556,7 @@ MACHINE_START_MEMBER(champbwl_state,doraemon) membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x4000); } -static MACHINE_CONFIG_START( doraemon, champbwl_state ) +static MACHINE_CONFIG_START( doraemon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_14_31818MHz/4) @@ -577,7 +577,7 @@ static MACHINE_CONFIG_START( doraemon, champbwl_state ) MCFG_SCREEN_SIZE(320, 256) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-16-1) MCFG_SCREEN_UPDATE_DRIVER(champbwl_state, screen_update_doraemon) - MCFG_SCREEN_VBLANK_DRIVER(champbwl_state, screen_eof_doraemon) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(champbwl_state, screen_vblank_doraemon)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", champbwl) @@ -713,5 +713,5 @@ ROM_START( doraemon ) ROM_LOAD( "u27-01.bin", 0x00200, 0x200, CRC(66245fc7) SHA1(c94d9dce7b557c21a3dc1f3f8a1b29594715c994) ) ROM_END -GAME( 1993?,doraemon, 0, doraemon, doraemon, driver_device, 0, ROT0, "Sunsoft / Epoch", "Doraemon no Eawase Montage (prototype)", MACHINE_SUPPORTS_SAVE ) // year not shown, datecodes on pcb suggests late-1993 -GAME( 1989, champbwl, 0, champbwl, champbwl, driver_device, 0, ROT270, "Seta / Romstar Inc.", "Championship Bowling", MACHINE_SUPPORTS_SAVE ) +GAME( 1993?,doraemon, 0, doraemon, doraemon, champbwl_state, 0, ROT0, "Sunsoft / Epoch", "Doraemon no Eawase Montage (prototype)", MACHINE_SUPPORTS_SAVE ) // year not shown, datecodes on pcb suggests late-1993 +GAME( 1989, champbwl, 0, champbwl, champbwl, champbwl_state, 0, ROT270, "Seta / Romstar Inc.", "Championship Bowling", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/chanbara.cpp b/src/mame/drivers/chanbara.cpp index d31dc17f154..d18ae9f683b 100644 --- a/src/mame/drivers/chanbara.cpp +++ b/src/mame/drivers/chanbara.cpp @@ -385,7 +385,7 @@ void chanbara_state::machine_reset() m_scrollhi = 0; } -static MACHINE_CONFIG_START( chanbara, chanbara_state ) +static MACHINE_CONFIG_START( chanbara ) MCFG_CPU_ADD("maincpu", M6809, 12000000/8) MCFG_CPU_PROGRAM_MAP(chanbara_map) diff --git a/src/mame/drivers/chance32.cpp b/src/mame/drivers/chance32.cpp index 1e45c54de6a..6da824a83b1 100644 --- a/src/mame/drivers/chance32.cpp +++ b/src/mame/drivers/chance32.cpp @@ -444,7 +444,7 @@ void chance32_state::machine_reset() } -static MACHINE_CONFIG_START( chance32, chance32_state ) +static MACHINE_CONFIG_START( chance32 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) @@ -474,7 +474,7 @@ static MACHINE_CONFIG_START( chance32, chance32_state ) MCFG_SPEAKER_STANDARD_MONO("mono") /* clock at 1050 kHz match the 8000 Hz samples stored inside the ROM */ - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -517,5 +517,5 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 19??, chance32, 0, chance32, chance32, driver_device, 0, ROT0, "PAL System Co, Ltd.", "Chance Thirty Two", 0, layout_chance32 ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +GAMEL( 19??, chance32, 0, chance32, chance32, chance32_state, 0, ROT0, "PAL System Co, Ltd.", "Chance Thirty Two", 0, layout_chance32 ) diff --git a/src/mame/drivers/changela.cpp b/src/mame/drivers/changela.cpp index b439776f39a..3d34527dea0 100644 --- a/src/mame/drivers/changela.cpp +++ b/src/mame/drivers/changela.cpp @@ -407,7 +407,7 @@ void changela_state::machine_reset() m_dir_31 = 0; } -static MACHINE_CONFIG_START( changela, changela_state ) +static MACHINE_CONFIG_START( changela ) MCFG_CPU_ADD("maincpu", Z80,5000000) MCFG_CPU_PROGRAM_MAP(changela_map) @@ -480,4 +480,4 @@ ROM_START( changela ) ROM_LOAD( "cl88", 0x0000, 0x0020, CRC(da4d6625) SHA1(2d9a268973518252eb36f479ab650af8c16c885c) ) /* math train state machine */ ROM_END -GAMEL( 1983, changela, 0, changela, changela, driver_device, 0, ROT180, "Taito Corporation", "Change Lanes", MACHINE_SUPPORTS_SAVE, layout_changela ) +GAMEL( 1983, changela, 0, changela, changela, changela_state, 0, ROT180, "Taito Corporation", "Change Lanes", MACHINE_SUPPORTS_SAVE, layout_changela ) diff --git a/src/mame/drivers/channelf.cpp b/src/mame/drivers/channelf.cpp index e3f545add2d..d7b666415d3 100644 --- a/src/mame/drivers/channelf.cpp +++ b/src/mame/drivers/channelf.cpp @@ -207,7 +207,7 @@ static MACHINE_CONFIG_FRAGMENT( channelf_cart ) MCFG_SOFTWARE_LIST_ADD("cart_list","channelf") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( channelf, channelf_state ) +static MACHINE_CONFIG_START( channelf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", F8, 3579545/2) /* Colorburst/2 */ MCFG_CPU_PROGRAM_MAP(channelf_map) @@ -234,7 +234,7 @@ static MACHINE_CONFIG_START( channelf, channelf_state ) MCFG_FRAGMENT_ADD( channelf_cart ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sabavdpl, channelf_state ) +static MACHINE_CONFIG_START( sabavdpl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", F8, MASTER_CLOCK_PAL) /* PAL speed */ MCFG_CPU_PROGRAM_MAP(channelf_map) @@ -262,7 +262,7 @@ static MACHINE_CONFIG_START( sabavdpl, channelf_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( channlf2, channelf_state ) +static MACHINE_CONFIG_START( channlf2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", F8, 3579545/2) /* Colorburst / 2 */ MCFG_CPU_PROGRAM_MAP(channelf_map) @@ -290,7 +290,7 @@ static MACHINE_CONFIG_START( channlf2, channelf_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sabavpl2, channelf_state ) +static MACHINE_CONFIG_START( sabavpl2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", F8, MASTER_CLOCK_PAL) /* PAL speed */ MCFG_CPU_PROGRAM_MAP(channelf_map) @@ -342,12 +342,12 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1976, channelf, 0, 0, channelf, channelf, driver_device, 0, "Fairchild", "Channel F", 0 ) -CONS( 1977, sabavdpl, channelf, 0, sabavdpl, channelf, driver_device, 0, "SABA", "SABA Videoplay", 0 ) -CONS( 197?, luxorves, channelf, 0, sabavdpl, channelf, driver_device, 0, "Luxor", "Luxor Video Entertainment System", 0 ) -CONS( 1978, channlf2, 0, channelf, channlf2, channelf, driver_device, 0, "Fairchild", "Channel F II", 0 ) -CONS( 1978, sabavpl2, channlf2, 0, sabavpl2, channelf, driver_device, 0, "SABA", "SABA Videoplay 2", 0 ) -CONS( 197?, luxorvec, channlf2, 0, sabavpl2, channelf, driver_device, 0, "Luxor", "Luxor Video Entertainment Computer", 0 ) -CONS( 197?, itttelma, channlf2, 0, sabavpl2, channelf, driver_device, 0, "ITT", "ITT Tele-Match Processor", 0 ) -CONS( 1978, ingtelma, channlf2, 0, sabavpl2, channelf, driver_device, 0, "Ingelen", "Ingelen Tele-Match Processor", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1976, channelf, 0, 0, channelf, channelf, channelf_state, 0, "Fairchild", "Channel F", 0 ) +CONS( 1977, sabavdpl, channelf, 0, sabavdpl, channelf, channelf_state, 0, "SABA", "SABA Videoplay", 0 ) +CONS( 197?, luxorves, channelf, 0, sabavdpl, channelf, channelf_state, 0, "Luxor", "Luxor Video Entertainment System", 0 ) +CONS( 1978, channlf2, 0, channelf, channlf2, channelf, channelf_state, 0, "Fairchild", "Channel F II", 0 ) +CONS( 1978, sabavpl2, channlf2, 0, sabavpl2, channelf, channelf_state, 0, "SABA", "SABA Videoplay 2", 0 ) +CONS( 197?, luxorvec, channlf2, 0, sabavpl2, channelf, channelf_state, 0, "Luxor", "Luxor Video Entertainment Computer", 0 ) +CONS( 197?, itttelma, channlf2, 0, sabavpl2, channelf, channelf_state, 0, "ITT", "ITT Tele-Match Processor", 0 ) +CONS( 1978, ingtelma, channlf2, 0, sabavpl2, channelf, channelf_state, 0, "Ingelen", "Ingelen Tele-Match Processor", 0 ) diff --git a/src/mame/drivers/chaos.cpp b/src/mame/drivers/chaos.cpp index 56d21282bcf..7618cde825b 100644 --- a/src/mame/drivers/chaos.cpp +++ b/src/mame/drivers/chaos.cpp @@ -50,7 +50,7 @@ public: DECLARE_WRITE8_MEMBER(port1f_w); DECLARE_READ8_MEMBER(port90_r); DECLARE_READ8_MEMBER(port91_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); private: uint8_t m_term_data; virtual void machine_reset() override; @@ -125,7 +125,7 @@ READ8_MEMBER( chaos_state::port91_r ) return ret; } -WRITE8_MEMBER( chaos_state::kbd_put ) +void chaos_state::kbd_put(u8 data) { m_term_data = data; } @@ -138,7 +138,7 @@ void chaos_state::machine_reset() memcpy(m_p_ram+0x7000, ROM+0x3000, 0x1000); } -static MACHINE_CONFIG_START( chaos, chaos_state ) +static MACHINE_CONFIG_START( chaos ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(chaos_mem) @@ -146,7 +146,7 @@ static MACHINE_CONFIG_START( chaos, chaos_state ) /* video hardware */ MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(chaos_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(chaos_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -160,5 +160,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, chaos, 0, 0, chaos, chaos, driver_device, 0, "David Greaves", "Chaos 2", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1983, chaos, 0, 0, chaos, chaos, chaos_state, 0, "David Greaves", "Chaos 2", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/cheekyms.cpp b/src/mame/drivers/cheekyms.cpp index 597df4f82de..85f1e09a641 100644 --- a/src/mame/drivers/cheekyms.cpp +++ b/src/mame/drivers/cheekyms.cpp @@ -121,7 +121,7 @@ INTERRUPT_GEN_MEMBER(cheekyms_state::vblank_irq) } -static MACHINE_CONFIG_START( cheekyms, cheekyms_state ) +static MACHINE_CONFIG_START( cheekyms ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,5000000/2) /* 2.5 MHz */ @@ -197,4 +197,4 @@ ROM_END -GAME( 1980, cheekyms, 0, cheekyms, cheekyms, driver_device, 0, ROT270, "Universal", "Cheeky Mouse", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, cheekyms, 0, cheekyms, cheekyms, cheekyms_state, 0, ROT270, "Universal", "Cheeky Mouse", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/chessmst.cpp b/src/mame/drivers/chessmst.cpp index 9b5fb2c5f69..84e21b1e24b 100644 --- a/src/mame/drivers/chessmst.cpp +++ b/src/mame/drivers/chessmst.cpp @@ -353,7 +353,7 @@ static const z80_daisy_config chessmstdm_daisy_chain[] = { nullptr } }; -static MACHINE_CONFIG_START( chessmst, chessmst_state ) +static MACHINE_CONFIG_START( chessmst ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_9_8304MHz/4) // U880 Z80 clone @@ -378,7 +378,7 @@ static MACHINE_CONFIG_START( chessmst, chessmst_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( chessmsta, chessmst_state ) +static MACHINE_CONFIG_START( chessmsta ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/4) // U880 Z80 clone @@ -403,7 +403,7 @@ static MACHINE_CONFIG_START( chessmsta, chessmst_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( chessmstdm, chessmst_state ) +static MACHINE_CONFIG_START( chessmstdm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) // U880 Z80 clone @@ -465,7 +465,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -COMP( 1984, chessmst, 0, 0, chessmst, chessmst, driver_device, 0, "VEB Mikroelektronik Erfurt", "Chess-Master (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) -COMP( 1984, chessmsta, chessmst, 0, chessmsta, chessmst, driver_device, 0, "VEB Mikroelektronik Erfurt", "Chess-Master (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) -COMP( 1987, chessmstdm,0, 0, chessmstdm, chessmstdm, driver_device, 0, "VEB Mikroelektronik Erfurt", "Chess-Master Diamond", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, chessmst, 0, 0, chessmst, chessmst, chessmst_state, 0, "VEB Mikroelektronik Erfurt", "Chess-Master (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) +COMP( 1984, chessmsta, chessmst, 0, chessmsta, chessmst, chessmst_state, 0, "VEB Mikroelektronik Erfurt", "Chess-Master (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) +COMP( 1987, chessmstdm, 0, 0, chessmstdm, chessmstdm, chessmst_state, 0, "VEB Mikroelektronik Erfurt", "Chess-Master Diamond", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/chesstrv.cpp b/src/mame/drivers/chesstrv.cpp index ee13ff0cff0..8e594e000b3 100644 --- a/src/mame/drivers/chesstrv.cpp +++ b/src/mame/drivers/chesstrv.cpp @@ -213,7 +213,7 @@ void chesstrv_state::machine_start() save_item(NAME(m_matrix)); } -static MACHINE_CONFIG_START( chesstrv, chesstrv_state ) +static MACHINE_CONFIG_START( chesstrv ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", F8, 3000000 ) // Fairchild 3870 MCFG_CPU_PROGRAM_MAP( chesstrv_mem ) @@ -223,7 +223,7 @@ static MACHINE_CONFIG_START( chesstrv, chesstrv_state ) MCFG_DEFAULT_LAYOUT( layout_chesstrv ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( borisdpl, chesstrv_state ) +static MACHINE_CONFIG_START( borisdpl ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", F8, 30000000 ) // Motorola SC80265P MCFG_CPU_PROGRAM_MAP( chesstrv_mem ) @@ -251,6 +251,6 @@ ROM_START( borisdpl ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS( 1980, chesstrv, 0, 0, chesstrv, chesstrv, driver_device, 0, "Acetronic", "Chess Traveller", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) -CONS( 1979, borisdpl, 0, 0, borisdpl, borisdpl, driver_device, 0, "Applied Concepts", "Boris Diplomat", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1980, chesstrv, 0, 0, chesstrv, chesstrv, chesstrv_state, 0, "Acetronic", "Chess Traveller", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) +CONS( 1979, borisdpl, 0, 0, borisdpl, borisdpl, chesstrv_state, 0, "Applied Concepts", "Boris Diplomat", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/chexx.cpp b/src/mame/drivers/chexx.cpp index c33e0b8ea8d..6e4266bfd37 100644 --- a/src/mame/drivers/chexx.cpp +++ b/src/mame/drivers/chexx.cpp @@ -312,7 +312,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(chexx_state::update) #endif } -static MACHINE_CONFIG_START( chexx83, chexx_state ) +static MACHINE_CONFIG_START( chexx83 ) // basic machine hardware MCFG_CPU_ADD("maincpu", M6502, MAIN_CLOCK/2) @@ -419,5 +419,5 @@ ROM_START( faceoffh ) ROM_FILL( 0xe000, 0x2000, 0xff ) // unpopulated ROM_END -GAME( 1983, chexx83, 0, chexx83, chexx83, driver_device, 0, ROT270, "ICE", "Chexx (EM Bubble Hockey, 1983 1.1)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_NO_SOUND ) -GAME( 1983, faceoffh, chexx83, faceoffh, chexx83, driver_device, 0, ROT270, "SoftLogic (Entertainment Enterprises, Ltd. license)", "Face-Off (EM Bubble Hockey)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, chexx83, 0, chexx83, chexx83, chexx_state, 0, ROT270, "ICE", "Chexx (EM Bubble Hockey, 1983 1.1)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_NO_SOUND ) +GAME( 1983, faceoffh, chexx83, faceoffh, chexx83, chexx_state, 0, ROT270, "SoftLogic (Entertainment Enterprises, Ltd. license)", "Face-Off (EM Bubble Hockey)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/chicago.cpp b/src/mame/drivers/chicago.cpp index d426f8ab8f7..fca5cae62f2 100644 --- a/src/mame/drivers/chicago.cpp +++ b/src/mame/drivers/chicago.cpp @@ -50,7 +50,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -93,7 +93,7 @@ void chicago_state::video_start() { } -static MACHINE_CONFIG_START( chicago, chicago_state ) +static MACHINE_CONFIG_START( chicago ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -138,4 +138,4 @@ ROM_START( dmodrbcc ) ROM_END -GAME( 1976, dmodrbcc, 0, chicago, 0, driver_device, 0, ROT0, "Chicago Coin", "Demolition Derby [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, dmodrbcc, 0, chicago, 0, chicago_state, 0, ROT0, "Chicago Coin", "Demolition Derby [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp index e8569978d0d..16421b1e5de 100644 --- a/src/mame/drivers/chihiro.cpp +++ b/src/mame/drivers/chihiro.cpp @@ -375,6 +375,7 @@ Thanks to Alex, Mr Mudkips, and Philip Burke for this info. #include "emu.h" #include "includes/xbox.h" +#include "includes/xbox_pci.h" #include "cpu/i386/i386.h" #include "machine/idehd.h" @@ -393,13 +394,11 @@ Thanks to Alex, Mr Mudkips, and Philip Burke for this info. //#define VERBOSE_MSG ///////////////////////// -extern const device_type JVS_MASTER; +DECLARE_DEVICE_TYPE(JVS_MASTER, jvs_master) class jvs_master : public jvs_host { public: - //friend class mie_device; - // construction/destruction jvs_master(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); int get_sense_line(); @@ -407,10 +406,10 @@ public: int received_packet(uint8_t *buffer); }; -const device_type JVS_MASTER = device_creator; +DEFINE_DEVICE_TYPE(JVS_MASTER, jvs_master, "jvs_master", "JVS MASTER") jvs_master::jvs_master(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : jvs_host(mconfig, JVS_MASTER, "JVS MASTER", tag, owner, clock, "jvs_master", __FILE__) + : jvs_host(mconfig, JVS_MASTER, tag, owner, clock) { } @@ -450,13 +449,13 @@ int jvs_master::received_packet(uint8_t *buffer) ///////////////////////// -extern const device_type OHCI_HLEAN2131QC; +DECLARE_DEVICE_TYPE(OHCI_HLEAN2131QC, ohci_hlean2131qc_device) -class ohci_hlean2131qc_device : public device_t, public ohci_function_device +class ohci_hlean2131qc_device : public device_t, public ohci_function { public: ohci_hlean2131qc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - void initialize(running_machine &machine, ohci_usb_controller *usb_bus_manager) override; + void initialize(running_machine &machine) override; int handle_nonstandard_request(int endpoint, USBSetupPacket *setup) override; int handle_bulk_pid(int endpoint, int pid, uint8_t *buffer, int size) override; void set_region_base(uint8_t *data); @@ -464,6 +463,8 @@ public: protected: virtual void device_start() override; private: + void process_jvs_packet(); + static const USBStandardDeviceDescriptor devdesc; static const USBStandardConfigurationDescriptor condesc; static const USBStandardInterfaceDescriptor intdesc; @@ -493,15 +494,15 @@ private: } jvs; }; -const device_type OHCI_HLEAN2131QC = device_creator; +DEFINE_DEVICE_TYPE(OHCI_HLEAN2131QC, ohci_hlean2131qc_device, "ohci_hlean2131qc", "OHCI Hlean2131qc") -extern const device_type OHCI_HLEAN2131SC; +DECLARE_DEVICE_TYPE(OHCI_HLEAN2131SC, ohci_hlean2131sc_device) -class ohci_hlean2131sc_device : public device_t, public ohci_function_device +class ohci_hlean2131sc_device : public device_t, public ohci_function { public: ohci_hlean2131sc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - void initialize(running_machine &machine, ohci_usb_controller *usb_bus_manager) override; + void initialize(running_machine &machine) override; int handle_nonstandard_request(int endpoint, USBSetupPacket *setup) override; int handle_bulk_pid(int endpoint, int pid, uint8_t *buffer, int size) override; void set_region_base(uint8_t *data); @@ -509,6 +510,8 @@ public: protected: virtual void device_start() override; private: + void process_packet(); + static const USBStandardDeviceDescriptor devdesc; static const USBStandardConfigurationDescriptor condesc; static const USBStandardInterfaceDescriptor intdesc; @@ -522,17 +525,22 @@ private: static const uint8_t strdesc1[]; static const uint8_t strdesc2[]; uint8_t *region; + uint8_t midi_rs232; + uint8_t response[256]; + uint8_t packet[4]; + int response_size; + int step; }; -const device_type OHCI_HLEAN2131SC = device_creator; +DEFINE_DEVICE_TYPE(OHCI_HLEAN2131SC, ohci_hlean2131sc_device, "ohci_hlean2131sc", "OHCI Hlean2131sc") class chihiro_state : public xbox_base_state { public: chihiro_state(const machine_config &mconfig, device_type type, const char *tag) : xbox_base_state(mconfig, type, tag), - usbhack_index(-1), - usbhack_counter(0), + hack_index(-1), + hack_counter(0), dimm_board_memory(nullptr), dimm_board_memory_size(0) { } @@ -551,8 +559,8 @@ public: bus_master_ide_controller_device *ide; naomi_gdrom_board *dimmboard; } chihiro_devs; - int usbhack_index; - int usbhack_counter; + int hack_index; + int hack_counter; uint8_t *dimm_board_memory; uint32_t dimm_board_memory_size; @@ -593,11 +601,11 @@ void chihiro_state::jamtable_disasm(address_space &space, uint32_t address, uint { offs_t base = addr; - uint32_t opcode = cpu.read_byte(space, address, true); + uint32_t opcode = cpu.read_byte(space, addr, true); addr++; - uint32_t op1 = cpu.read_dword(space, address, true); + uint32_t op1 = cpu.read_dword(space, addr, true); addr += 4; - uint32_t op2 = cpu.read_dword(space, address, true); + uint32_t op2 = cpu.read_dword(space, addr, true); addr += 4; char sop1[16]; @@ -722,26 +730,25 @@ void chihiro_state::hack_eeprom() static const struct { const char *game_name; - const bool disable_usb; struct { uint32_t address; uint8_t write_byte; } modify[16]; -} hacks[HACK_ITEMS] = { { "chihiro", false, { { 0x6a79f/*3f79f*/, 0x01 }, { 0x6a7a0/*3f7a0*/, 0x00 }, { 0x6b575/*40575*/, 0x00 }, { 0x6b576/*40576*/, 0x00 }, { 0x6b5af/*405af*/, 0x75 }, { 0x6b78a/*4078a*/, 0x75 }, { 0x6b7ca/*407ca*/, 0x00 }, { 0x6b7b8/*407b8*/, 0x00 }, { 0x8f5b2, 0x75 }, { 0x79a9e/*2ea9e*/, 0x74 }, { 0x79b80/*2eb80*/, 0xeb }, { 0x79b97/*2eb97*/, 0x74 }, { 0, 0 } } }, - { "outr2", true, { { 0x12e4cf, 0x01 }, { 0x12e4d0, 0x00 }, { 0x4793e, 0x01 }, { 0x4793f, 0x00 }, { 0x47aa3, 0x01 }, { 0x47aa4, 0x00 }, { 0x14f2b6, 0x84 }, { 0x14f2d1, 0x75 }, { 0x8732f, 0x7d }, { 0x87384, 0x7d }, { 0x87388, 0xeb }, { 0, 0 } } }, - { "crtaxihr", false, { { 0x14ada5/*11fda5*/, 0x90 },{ 0x14ada6/*11fda6*/, 0x90 }, { 0, 0 } } }, - { "ghostsqu", false, { { 0x78833/*4d833*/, 0x90 },{ 0x78834/*4d834*/, 0x90 }, { 0, 0 } } }, - { "vcop3", false, { { 0x61a23/*36a23*/, 0x90 },{ 0x61a24/*36a24*/, 0x90 }, { 0, 0 } } }, +} hacks[HACK_ITEMS] = { { "chihiro", { { 0x6a79f/*3f79f*/, 0x01 }, { 0x6a7a0/*3f7a0*/, 0x00 }, { 0x6b575/*40575*/, 0x00 }, { 0x6b576/*40576*/, 0x00 }, { 0x6b5af/*405af*/, 0x75 }, { 0x6b78a/*4078a*/, 0x75 }, { 0x6b7ca/*407ca*/, 0x00 }, { 0x6b7b8/*407b8*/, 0x00 }, { 0x8f5b2, 0x75 }, { 0x79a9e/*2ea9e*/, 0x74 }, { 0x79b80/*2eb80*/, 0xeb }, { 0x79b97/*2eb97*/, 0x74 }, { 0, 0 } } }, + { "outr2", { { 0, 0 } } }, + { "crtaxihr", { { 0x14ada5/*11fda5*/, 0x90 }, { 0x14ada6/*11fda6*/, 0x90 }, { 0, 0 } } }, + { "ghostsqu", { { 0x78833/*4d833*/, 0x90 }, { 0x78834/*4d834*/, 0x90 }, { 0, 0 } } }, + { "vcop3", { { 0x61a23/*36a23*/, 0x90 }, { 0x61a24/*36a24*/, 0x90 }, { 0, 0 } } }, }; void chihiro_state::hack_usb() { int p; - if ((usbhack_counter == 0) && (usb_hack_enabled)) - p = 0; - else if (usbhack_counter == 1) // after game loaded - p = usbhack_index; + if (hack_counter == 0) + p = 0; // need to patch the kernel + else if (hack_counter == 1) + p = hack_index; // need to patch the game else p = -1; if (p >= 0) { @@ -751,7 +758,7 @@ void chihiro_state::hack_usb() m_maincpu->space(0).write_byte(hacks[p].modify[a].address, hacks[p].modify[a].write_byte); } } - usbhack_counter++; + hack_counter++; } //************************************************************************** @@ -777,8 +784,8 @@ const uint8_t ohci_hlean2131qc_device::strdesc1[] = { 0x0A,0x03,0x53,0x00,0x45,0 const uint8_t ohci_hlean2131qc_device::strdesc2[] = { 0x0E,0x03,0x42,0x00,0x41,0x00,0x53,0x00,0x45,0x00,0x42,0x03,0xFF,0x0B }; ohci_hlean2131qc_device::ohci_hlean2131qc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, OHCI_HLEAN2131QC, "OHCI Hlean2131qc", tag, owner, clock, "ohci_hlean2131qc", __FILE__), - ohci_function_device() + device_t(mconfig, OHCI_HLEAN2131QC, tag, owner, clock), + ohci_function() { maximum_send = 0; region = nullptr; @@ -788,9 +795,9 @@ ohci_hlean2131qc_device::ohci_hlean2131qc_device(const machine_config &mconfig, jvs.master = nullptr; } -void ohci_hlean2131qc_device::initialize(running_machine &machine, ohci_usb_controller *usb_bus_manager) +void ohci_hlean2131qc_device::initialize(running_machine &machine) { - ohci_function_device::initialize(machine, usb_bus_manager); + ohci_function::initialize(machine); add_device_descriptor(devdesc); add_configuration_descriptor(condesc); add_interface_descriptor(intdesc); @@ -836,7 +843,7 @@ int ohci_hlean2131qc_device::handle_nonstandard_request(int endpoint, USBSetupPa // PINSA register, bits 0-2 connected do dip switches 1-3 on filter board, bit 4 to dip switch 4, bit 5 to dip switch 5, bits 6-7 to buttons 1-2 on filter board // bits 4-1 value must be 10 xor 15, and bit 3 is ignored since its used as the CS pin of the chip endpoints[endpoint].buffer[1] = 0x4b; - // PINSB register, bits 5-7 connected to 3 leds not mounted on pcb, bit 4 connected to re/de pins of max485, bits 2-3 used as uart pins, bit 0-1 give the status of the sense pin of the jvs connector + // PINSB register, bits 5-7 connected to 3 leds not mounted on pcb, bit 4 connected to re/de pins of max485, bits 2-3 used as uart pins, bits 0-1 give the status of the sense pin of the jvs connector // if bits 0-1 are 11, the not all the connected jvs devices have been assigned an address yet endpoints[endpoint].buffer[2] = 0x52 | sense; // OUTB register @@ -1012,65 +1019,70 @@ int ohci_hlean2131qc_device::handle_bulk_pid(int endpoint, int pid, uint8_t *buf printf("\n\r"); #endif // extract packets - int numpk = jvs.buffer_in[1]; - int p = 2; - - for (int n = 0;n < numpk;n++) - { - p++; - if (jvs.buffer_in[p] != 0xe0) - break; - p++; - int dest = jvs.buffer_in[p]; - p++; - int len = jvs.buffer_in[p]; - p++; - if ((p + len) > jvs.buffer_in_expected) - break; - int chk = dest + len; - for (int m = len - 1; m > 0; m--) - chk = chk + (int)jvs.buffer_in[p + m - 1]; - chk = chk & 255; - if (chk != (int)jvs.buffer_in[p + len - 1]) - { - p = p + len; - continue; - } - // use data of this packet - jvs.master->send_packet(dest, len, jvs.buffer_in + p); - // generate response - if (dest == 0xff) - dest = 0; - int recv = jvs.master->received_packet(jvs.buffer_out + jvs.buffer_out_used + 5); - // update buffer_out - if (recv > 0) - { - chk = 0; - for (int m = 0; m < recv; m++) - chk = chk + jvs.buffer_out[jvs.buffer_out_used + 5 + m]; - jvs.buffer_out[jvs.buffer_out_used + 5 + recv] = chk & 255; - jvs.buffer_out_packets++; - // jvs node address - jvs.buffer_out[jvs.buffer_out_used] = (uint8_t)dest; - // dummy - jvs.buffer_out[jvs.buffer_out_used + 1] = 0; - // length following - recv += 2; - jvs.buffer_out[jvs.buffer_out_used + 2] = recv & 255; - jvs.buffer_out[jvs.buffer_out_used + 3] = (recv >> 8) & 255; - // body - jvs.buffer_out[jvs.buffer_out_used + 4] = 0xe0; - jvs.buffer_out_used = jvs.buffer_out_used + recv + 5 - 1; - jvs.buffer_out[1] = (uint8_t)jvs.buffer_out_packets; - } - p = p + len; - } + process_jvs_packet(); } } } return size; } +void ohci_hlean2131qc_device::process_jvs_packet() +{ + int numpk = jvs.buffer_in[1]; + int p = 2; + + for (int n = 0; n < numpk; n++) + { + p++; + if (jvs.buffer_in[p] != 0xe0) + break; + p++; + int dest = jvs.buffer_in[p]; + p++; + int len = jvs.buffer_in[p]; + p++; + if ((p + len) > jvs.buffer_in_expected) + break; + int chk = dest + len; + for (int m = len - 1; m > 0; m--) + chk = chk + (int)jvs.buffer_in[p + m - 1]; + chk = chk & 255; + if (chk != (int)jvs.buffer_in[p + len - 1]) + { + p = p + len; + continue; + } + // use data of this packet + jvs.master->send_packet(dest, len, jvs.buffer_in + p); + // generate response + if (dest == 0xff) + dest = 0; + int recv = jvs.master->received_packet(jvs.buffer_out + jvs.buffer_out_used + 5); + // update buffer_out + if (recv > 0) + { + chk = 0; + for (int m = 0; m < recv; m++) + chk = chk + jvs.buffer_out[jvs.buffer_out_used + 5 + m]; + jvs.buffer_out[jvs.buffer_out_used + 5 + recv] = chk & 255; + jvs.buffer_out_packets++; + // jvs node address + jvs.buffer_out[jvs.buffer_out_used] = (uint8_t)dest; + // dummy + jvs.buffer_out[jvs.buffer_out_used + 1] = 0; + // length following + recv += 2; + jvs.buffer_out[jvs.buffer_out_used + 2] = recv & 255; + jvs.buffer_out[jvs.buffer_out_used + 3] = (recv >> 8) & 255; + // body + jvs.buffer_out[jvs.buffer_out_used + 4] = 0xe0; + jvs.buffer_out_used = jvs.buffer_out_used + recv + 5 - 1; + jvs.buffer_out[1] = (uint8_t)jvs.buffer_out_packets; + } + p = p + len; + } +} + void ohci_hlean2131qc_device::device_start() { } @@ -1090,10 +1102,13 @@ const uint8_t ohci_hlean2131sc_device::strdesc1[] = { 0x0A,0x03,0x53,0x00,0x45,0 const uint8_t ohci_hlean2131sc_device::strdesc2[] = { 0x0E,0x03,0x42,0x00,0x41,0x00,0x53,0x00,0x45,0x00,0x42,0x00,0x44,0x00 }; ohci_hlean2131sc_device::ohci_hlean2131sc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, OHCI_HLEAN2131SC, "OHCI Hlean2131sc", tag, owner, clock, "ohci_hlean2131sc", __FILE__), - ohci_function_device() + device_t(mconfig, OHCI_HLEAN2131SC, tag, owner, clock), + ohci_function() { region = nullptr; + midi_rs232 = 0; + response_size = 0; + step = 0; } void ohci_hlean2131sc_device::set_region_base(uint8_t *data) @@ -1101,9 +1116,9 @@ void ohci_hlean2131sc_device::set_region_base(uint8_t *data) region = data; } -void ohci_hlean2131sc_device::initialize(running_machine &machine, ohci_usb_controller *usb_bus_manager) +void ohci_hlean2131sc_device::initialize(running_machine &machine) { - ohci_function_device::initialize(machine, usb_bus_manager); + ohci_function::initialize(machine); add_device_descriptor(devdesc); add_configuration_descriptor(condesc); add_interface_descriptor(intdesc); @@ -1121,24 +1136,29 @@ void ohci_hlean2131sc_device::initialize(running_machine &machine, ohci_usb_cont int ohci_hlean2131sc_device::handle_nonstandard_request(int endpoint, USBSetupPacket *setup) { -//#ifdef VERBOSE_MSG +#ifdef VERBOSE_MSG printf("Control request to an2131sc: %x %x %x %x %x %x %x\n\r", endpoint, endpoints[endpoint].controldirection, setup->bmRequestType, setup->bRequest, setup->wValue, setup->wIndex, setup->wLength); -//#endif +#endif if (endpoint != 0) return -1; + // default valuse for data stage for (int n = 0; n < setup->wLength; n++) endpoints[endpoint].buffer[n] = 0x50 ^ n; endpoints[endpoint].buffer[1] = 0; + // PINSB register, bits 0-1 uset as rts/cts signals for uart0, bits 2-3 used as uart1, bits 5-7 used as leds (not mounted on pcb) endpoints[endpoint].buffer[2] = 0x52; // PINSB + // OUTB register endpoints[endpoint].buffer[3] = 0x53; // OUTB endpoints[endpoint].buffer[4] = 0; endpoints[endpoint].buffer[5] = 0; - endpoints[endpoint].buffer[6] = 0x56; // PINSC - endpoints[endpoint].buffer[7] = 0x57; // OUTC + // PINSC register, bit 7 selects default value for bit 6 after reset (connected to dip switch 5 on filter board), bits 0-1 used as uart0 pins + endpoints[endpoint].buffer[6] = 0x56; + // OUTC register, bit 6 specifies if uart1 should be connected to midi or rs232 + endpoints[endpoint].buffer[7] = 0x57; // bRequest is a command value if (setup->bRequest == 0x16) { - // this command is used to read data from the first i2c serial eeprom connected to the chip + // this command is used to read data from the i2c serial eeprom connected to the chip // setup->wValue = start address to read from // setup->wIndex = number of bytes to read // data will be transferred to the host using endpoint 1 (IN) @@ -1148,19 +1168,41 @@ int ohci_hlean2131sc_device::handle_nonstandard_request(int endpoint, USBSetupPa } else if (setup->bRequest == 0x17) { - endpoints[endpoint].buffer[0] = 0x99; + endpoints[endpoint].buffer[0] = 0x90; } else if (setup->bRequest == 0x1a) { + // used to get data received by uart0 data transferred with endpoint 2 (IN) endpoints[endpoint].buffer[0] = 0x99; } else if (setup->bRequest == 0x1b) { + // used to get data received by uart 1 data transferred with endpoint 3 (IN) + // setup->wIndex = number of bytes host would like to retrieve (must be lower than 256, 0 means get all available) endpoints[endpoint].buffer[0] = 0; // + endpoints[endpoint].buffer[1] = 0; // bit 0 in buffer overflow bit 1 in parity error + if ((setup->wIndex == 0) || (setup->wIndex > response_size)) + { + endpoints[endpoint].buffer[4] = response_size & 255; // how many bytes to transfer with endpoint 3 + endpoints[endpoint].buffer[5] = (response_size >> 8) & 255; + memcpy(endpoints[3].buffer, response, response_size); + response_size = 0; + } + else + { + endpoints[endpoint].buffer[4] = setup->wIndex & 255; + endpoints[endpoint].buffer[5] = (setup->wIndex >> 8) & 255; + memcpy(endpoints[3].buffer, response, setup->wIndex); + for (int n = setup->wIndex; n < response_size; n++) + response[n - setup->wIndex] = response[n]; + response_size = response_size - setup->wIndex; + } + endpoints[3].remain = setup->wIndex; + endpoints[3].position = endpoints[3].buffer; } else if (setup->bRequest == 0x1d) { - // this command is used to write data to the first i2c serial eeprom connected to the chip + // this command is used to write data to the i2c serial eeprom connected to the chip // no more than 32 bytes can be written at a time // setup->wValue = start address to write to // setup->wIndex = number of bytes to write @@ -1169,27 +1211,34 @@ int ohci_hlean2131sc_device::handle_nonstandard_request(int endpoint, USBSetupPa } else if (setup->bRequest == 0x1e) { - endpoints[endpoint].buffer[0] = 0x99; + endpoints[endpoint].buffer[0] = 0x90; } else if (setup->bRequest == 0x22) { + // send data to be output from uart0 endpoints[endpoint].buffer[0] = 0x99; } else if (setup->bRequest == 0x23) { - endpoints[endpoint].buffer[0] = 0x99; + // this command is used to send data to be output from uart1 + // setup->wIndex = number of bytes to send + // data will be transferred to the host using endpoint 3 (OUT) + endpoints[endpoint].buffer[0] = 0; + endpoints[3].remain = setup->wIndex; + endpoints[3].position = endpoints[3].buffer; } else if (setup->bRequest == 0x25) // { - endpoints[endpoint].buffer[0] = 0x99; + endpoints[endpoint].buffer[0] = 0; } else if (setup->bRequest == 0x26) // { - endpoints[endpoint].buffer[0] = 0x99; + // set uart0 or uart1 mode + endpoints[endpoint].buffer[0] = 0; } else if (setup->bRequest == 0x27) // { - endpoints[endpoint].buffer[0] = 0x99; + endpoints[endpoint].buffer[0] = 0; } else if (setup->bRequest == 0x28) { @@ -1213,23 +1262,41 @@ int ohci_hlean2131sc_device::handle_nonstandard_request(int endpoint, USBSetupPa } else if (setup->bRequest == 0x2d) { + // set pin 1 of PORTB, used as the RTS signal of the rs232 port implemented with uart0 endpoints[endpoint].buffer[0] = 0x99; } - else if (setup->bRequest == 0x2e) // + else if (setup->bRequest == 0x2e) { - endpoints[endpoint].buffer[0] = 0x99; + // switches uart1 between rs232 mode and midi mode + // low byte of wValue sets the mode: 0 mode is selected using pin 7 of PORTC (0 midi 1 rs232), 1 rs232, 2 midi, other values no mode change + endpoints[endpoint].buffer[0] = 0; + midi_rs232 = setup->wValue & 255; } else if (setup->bRequest == 0x2f) { - endpoints[endpoint].buffer[0] = 0x99; + // return low byte of wValue from command 0x2e + endpoints[endpoint].buffer[0] = 0; + endpoints[endpoint].buffer[4] = midi_rs232; } else if (setup->bRequest == 0x30) { - endpoints[endpoint].buffer[0] = 0x99; + // this command first disables external interrupt 0 if the lower 8 bits of setup->wValue are 0 + // or enables it if those bits, seen as a signed 8 bit value, represent a number greater than 0 + // then it will return in byte 4 of the data stage the value 0 if external interrupt 0 has been disabled or value 1 if it has been enabled + // and in byte 5 the value of an 8 bit counter that is incremented at every external interrupt 0 + endpoints[endpoint].buffer[0] = 0; + if ((setup->wValue & 255) == 0) + endpoints[endpoint].buffer[4] = 0; + else if ((setup->wValue & 255) < 128) + endpoints[endpoint].buffer[4] = 1; + endpoints[endpoint].buffer[5] = 0; } else if (setup->bRequest == 0x31) { - endpoints[endpoint].buffer[0] = 0x99; + // set pins 4-7 of PORTB + // bits 4-7 of wValue & 255 set the direction + // bits 4-7 of wValue >> 8 set the level + endpoints[endpoint].buffer[0] = 0; } else endpoints[endpoint].buffer[0] = 0x99; // usnupported command @@ -1240,9 +1307,9 @@ int ohci_hlean2131sc_device::handle_nonstandard_request(int endpoint, USBSetupPa int ohci_hlean2131sc_device::handle_bulk_pid(int endpoint, int pid, uint8_t *buffer, int size) { -//#ifdef VERBOSE_MSG +#ifdef VERBOSE_MSG printf("Bulk request to an2131sc: %x %d %x\n\r", endpoint, pid, size); -//#endif +#endif if (((endpoint == 1) || (endpoint == 2)) && (pid == InPid)) { if (size > endpoints[endpoint].remain) @@ -1251,9 +1318,91 @@ int ohci_hlean2131sc_device::handle_bulk_pid(int endpoint, int pid, uint8_t *buf endpoints[endpoint].position = endpoints[endpoint].position + size; endpoints[endpoint].remain = endpoints[endpoint].remain - size; } + if ((endpoint == 3) && (pid == InPid)) + { + if (size > endpoints[3].remain) + size = endpoints[3].remain; + memcpy(buffer, endpoints[3].position, size); + endpoints[3].position = endpoints[3].position + size; + endpoints[3].remain = endpoints[3].remain - size; + } + if ((endpoint == 3) && (pid == OutPid)) + { + if (size > endpoints[3].remain) + size = endpoints[3].remain; + memcpy(endpoints[3].position, buffer, size); + endpoints[3].position = endpoints[3].position + size; + endpoints[3].remain = endpoints[3].remain - size; + for (int n = 0; n < size; n++) + { + uint8_t byt = buffer[n]; + switch(step) + { + case 0: + if ((byt & 0x80) != 0) + { + packet[0] = byt; + step = 1; + } + break; + case 1: + packet[1] = byt; + step = 2; + break; + case 2: + packet[2] = byt; + step = 3; + break; + case 3: + packet[3] = byt; + step = 0; + process_packet(); + break; + } + } + } return size; } +void ohci_hlean2131sc_device::process_packet() +{ + uint8_t result = 0; +#ifdef VERBOSE_MSG + printf("%02X %02X %02X %02X\n\r", packet[0], packet[1], packet[2], packet[3]); +#endif + if (packet[0] == 0xff) // 00 00 7f + result = 2; + else if (packet[0] == 0x81) // 30 7f 4e + result = 1; // must be 1 + else if (packet[0] == 0xfc) // 00 20 5c + result = 3; + else if (packet[0] == 0xfd) // 00 00 7d + result = 0; + else if (packet[0] == 0xfa) // 00 1f 65 + result = 0; + else if (packet[0] == 0x83) // 40 04 47 + result = 0; + else if (packet[0] == 0x86) // 01 02 05 + result = 0; + else if (packet[0] == 0x88) // 00 04 0c + result = 0; + else if (packet[0] == 0x80) // 01 01 00 + result = 0; + else if (packet[0] == 0x84) // 01 00 05 + result = 0; + else if (packet[0] == 0xf0) // 00 00 70 + result = 0; + else if (packet[0] == 0x9d) + result = 0; + else if (packet[0] == 0x9e) + result = 0; + if (response_size < 256) + { + response[response_size] = result + (result << 4); + response_size++; + } +} + void ohci_hlean2131sc_device::device_start() { } @@ -1283,14 +1432,14 @@ protected: //************************************************************************** // device type definition -const device_type IDE_BASEBOARD = device_creator; +DEFINE_DEVICE_TYPE(IDE_BASEBOARD, ide_baseboard_device, "ide_baseboard", "IDE Baseboard") //------------------------------------------------- // ide_baseboard_device - constructor //------------------------------------------------- ide_baseboard_device::ide_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ata_mass_storage_device(mconfig, IDE_BASEBOARD, "IDE Baseboard", tag, owner, clock, "ide_baseboard", __FILE__) + : ata_mass_storage_device(mconfig, IDE_BASEBOARD, tag, owner, clock) { } @@ -1441,8 +1590,8 @@ void chihiro_state::baseboard_ide_event(int type, uint8_t *read_buffer, uint8_t break; case 0x0101: // third word fourth word - word_write_le(read_buffer + 4, 0xca); // ? - word_write_le(read_buffer + 6, 0xcb); // ? + word_write_le(read_buffer + 4, 0x1234); // dimm board firmware version (1234 -> 12.34) + word_write_le(read_buffer + 6, 0x4567); // ? break; case 0x0102: // second dword @@ -1450,8 +1599,10 @@ void chihiro_state::baseboard_ide_event(int type, uint8_t *read_buffer, uint8_t break; case 0x0103: // dwords 1 3 4 - memcpy(read_buffer + 4, "-abc-abc12345678", 16); // ? + memcpy(read_buffer + 4, "-abc-abc12345678", 16); // dimm board serial number break; + default: + logerror("Unknown baseboard sector command %04X\n", c); } // clear write_buffer[0] = write_buffer[1] = write_buffer[2] = write_buffer[3] = 0; @@ -1541,29 +1692,29 @@ static INPUT_PORTS_START(chihiro) /* Dummy so we can easily get the analog ch # */ PORT_START("A0") - PORT_BIT(0x00ff, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x80ff, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("A1") - PORT_BIT(0x01ff, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x81ff, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("A2") - PORT_BIT(0x02ff, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x82ff, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("A3") - PORT_BIT(0x03ff, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x83ff, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("A4") - PORT_BIT(0x04ff, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x84ff, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("A5") - PORT_BIT(0x05ff, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x85ff, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("A6") - PORT_BIT(0x06ff, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x86ff, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("A7") - PORT_BIT(0x07ff, IP_ACTIVE_LOW, IPT_UNUSED) -INPUT_PORTS_END + PORT_BIT(0x87ff, IP_ACTIVE_LOW, IPT_UNUSED) + INPUT_PORTS_END void chihiro_state::machine_start() { @@ -1581,40 +1732,38 @@ void chihiro_state::machine_start() using namespace std::placeholders; machine().debugger().console().register_command("chihiro", CMDFLAG_NONE, 0, 1, 4, std::bind(&chihiro_state::debug_commands, this, _1, _2)); } - usbhack_index = -1; + hack_index = -1; for (int a = 1; a < HACK_ITEMS; a++) if (strcmp(machine().basename(), hacks[a].game_name) == 0) { - usbhack_index = a; - if (hacks[a].disable_usb == true) - usb_hack_enabled = true; + hack_index = a; break; } - usbhack_counter = 0; + hack_counter = 0; usb_device1 = machine().device("ohci_hlean2131qc"); - usb_device1->initialize(machine(), ohci_usb); + usb_device1->initialize(machine()); usb_device1->set_region_base(memregion(":others")->base()); // temporary - ohci_usb->usb_ohci_plug(1, usb_device1); // connect + machine().device(":pci:02.0")->plug_usb_device(1, usb_device1); // connect usb_device2 = machine().device("ohci_hlean2131sc"); - usb_device2->initialize(machine(), ohci_usb); + usb_device2->initialize(machine()); usb_device2->set_region_base(memregion(":others")->base() + 0x2080); // temporary - ohci_usb->usb_ohci_plug(2, usb_device2); // connect + machine().device(":pci:02.0")->plug_usb_device(2, usb_device2); // connect // savestates - save_item(NAME(usbhack_counter)); + save_item(NAME(hack_counter)); } static SLOT_INTERFACE_START(ide_baseboard) SLOT_INTERFACE("bb", IDE_BASEBOARD) SLOT_INTERFACE_END -static MACHINE_CONFIG_DERIVED_CLASS(chihiro_base, xbox_base, chihiro_state) +static MACHINE_CONFIG_DERIVED(chihiro_base, xbox_base) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(chihiro_map) MCFG_CPU_IO_MAP(chihiro_map_io) //MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide", ide_baseboard, nullptr, "bb", true) - MCFG_DEVICE_MODIFY("ide:0") + MCFG_DEVICE_MODIFY(":pci:09.0:ide:0") MCFG_DEVICE_SLOT_INTERFACE(ide_baseboard, nullptr, true) - MCFG_DEVICE_MODIFY("ide:1") + MCFG_DEVICE_MODIFY(":pci:09.0:ide:1") MCFG_DEVICE_SLOT_INTERFACE(ide_baseboard, "bb", true) // next lines are temporary @@ -1622,7 +1771,7 @@ static MACHINE_CONFIG_DERIVED_CLASS(chihiro_base, xbox_base, chihiro_state) MCFG_DEVICE_ADD("ohci_hlean2131sc", OHCI_HLEAN2131SC, 0) MCFG_DEVICE_ADD("jvs_master", JVS_MASTER, 0) MCFG_SEGA_837_13551_DEVICE_ADD("837_13551", "jvs_master", ":TILT", ":P1", ":P2", ":A0", ":A1", ":A2", ":A3", ":A4", ":A5", ":A6", ":A7", ":OUTPUT") - MACHINE_CONFIG_END +MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED(chihirogd, chihiro_base) MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", "^pic", nullptr, NOOP) @@ -1678,7 +1827,7 @@ ROM_START( hotd3 ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdx-0001", 0, BAD_DUMP SHA1(174c72f851d0c97e8993227467f16b0781ed2f5c) ) + DISK_IMAGE_READONLY( "gdx-0001", 0, SHA1(e41a2b236ec26db2d8b07643b8222e64440d1f31) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) ROM_LOAD("317-0348-com.data", 0x00, 0x50, CRC(d28219ef) SHA1(40dbbc092bc9f99b8d2ae67fbefacd62184f90ec) ) @@ -1768,7 +1917,7 @@ ROM_START( mj2c ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdx-0006c", 0, BAD_DUMP SHA1(505653117a73ed8b256ccf19450e7573a4dc57e9) ) + DISK_IMAGE_READONLY( "gdx-0006c", 0, SHA1(545ef902833d53822a8544dfc3f7538ee6025c9e) ) ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) ROM_LOAD( "317-0374-jpn.pic", 0x000000, 0x004000, CRC(004f77a1) SHA1(bc5c6950293f3bff60bf7913d20a2046aa19ea69) ) @@ -1890,7 +2039,7 @@ ROM_START( ghostsqu ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdx-0012a", 0, BAD_DUMP SHA1(d7d78ce4992cb16ee5b4ac6ca7a37c46b07e8c14) ) + DISK_IMAGE_READONLY( "gdx-0012a", 0, SHA1(d14adac9cdfd8095362fa9600c50bf038d4e5a99) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) ROM_LOAD("317-0398-com.data", 0x00, 0x50, CRC(8c5391a2) SHA1(e64cadeb30c94c3cd4002630cd79cc76c7bde2ed) ) @@ -1900,7 +2049,7 @@ ROM_START( gundamos ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdx-0013", 0, BAD_DUMP SHA1(96b3dafcc2d2d6803fe3bf43a245d43ee5e0e5a6) ) + DISK_IMAGE_READONLY( "gdx-0013", 0, SHA1(f97dceb9b4c4adff51d222ab2e6b9b0fe36394a8) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) ROM_LOAD("317-0400-jpn.data", 0x00, 0x50, CRC(0479c383) SHA1(7e86a037d2f9d09cec61a38cb19de510bf9482b3) ) @@ -1920,7 +2069,7 @@ ROM_START( outr2st ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdx-0014a", 0, BAD_DUMP SHA1(4f9656634c47631f63eab554a13d19b15558217e) ) + DISK_IMAGE_READONLY( "gdx-0014a", 0, SHA1(ed60aa1a402bcb01229b18987af199566b930b0b) ) ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) ROM_LOAD( "317-0396-com.pic", 0x000000, 0x004000, CRC(f94cf26f) SHA1(dd4af2b52935c7b2d8cd196ec1a30c0ef0993322) ) @@ -1930,7 +2079,7 @@ ROM_START( wangmid2j ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdx-0015", 0, BAD_DUMP SHA1(259483fd211a70c23205ffd852316d616c5a2740) ) + DISK_IMAGE_READONLY( "gdx-0015", 0, SHA1(489bdb96cecaa8c45908a630f64b3cf10e433619) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) ROM_LOAD("317-5106-jpn.data", 0x00, 0x50, CRC(75c716aa) SHA1(5c2bcf3d28a80b336c6882d5aeb010d04327f8c1) ) @@ -1960,7 +2109,7 @@ ROM_START( wangmid2 ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdx-0016a", 0, BAD_DUMP SHA1(cb306df60550bbd8df312634cb97014bb39f1631) ) + DISK_IMAGE_READONLY( "gdx-0016a", 0, SHA1(1cbc5e3e9ef1ab26468b9f4ee0fc32a0a320afe7) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) ROM_LOAD("317-5106-com.data", 0x00, 0x50, CRC(75c716aa) SHA1(5c2bcf3d28a80b336c6882d5aeb010d04327f8c1) ) @@ -1970,7 +2119,7 @@ ROM_START( mj3d ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdx-0017d", 0, BAD_DUMP SHA1(cfbbd452c8f4efe0e99f398f5521fc3574b913bb) ) + DISK_IMAGE_READONLY( "gdx-0017d", 0, SHA1(d90e06bd1e4c637cb9949d411da11537e72ac3d2) ) ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) ROM_LOAD( "317-0414-jpn.pic", 0x000000, 0x004000, CRC(27d1c541) SHA1(c85a8229dd769af02ab43c97f09f995743cdb315) ) @@ -1990,7 +2139,7 @@ ROM_START( scg06nt ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdx-0018a", 0, BAD_DUMP SHA1(e6f3dc8066392854ad7d83f81d3cbc81a5e340b3) ) + DISK_IMAGE_READONLY( "gdx-0018a", 0, SHA1(3c10775aefc5e3e49837bf473fb32e94507ee892) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) ROM_LOAD("gdx-0018.data", 0x00, 0x50, CRC(1a210abd) SHA1(43a54d028315d2dfa9f8ea6fb59265e0b980b02f) ) @@ -2035,7 +2184,7 @@ ROM_START( ccfboxa ) ROM_LOAD("317-0567-exp.pic", 0x00, 0x4000, CRC(cd1d2b2d) SHA1(78203ee0339f76eb76da08d7de43e7e44e4b7d32) ) ROM_END -/* CDV-1xxxx (Sega network DVD-ROM games) */ +/* CDV-1xxxx (Sega network CD-ROM and DVD-ROM games) */ ROM_START( questofd ) CHIHIRO_BIOS @@ -2072,6 +2221,34 @@ ROM_START( gundcb79a ) ROM_LOAD("317-0415-jpn.pic", 0x00, 0x4000, CRC(e5490747) SHA1(91de42a562a265e4cfa1788e40985a5b9055a10a) ) ROM_END +// Quest of D Oukoku no Syugosya +// note: all following CD/DVD discs for server PC, game image from CDV-10026D uploaded via network to satellite Chihiro units +ROM_START( qofd3 ) + CHIHIRO_BIOS + + // "Quest of D Ver.3.02" + // DVD QOD 3.02 + // CDV-10026D + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "cdv-10026d", 0, SHA1(b079778f7837100a9b4fa2a536a4efc7817dd2d2) ) // DVD + + // satellite Chihiro security PIC is missing + ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) + ROM_LOAD("317-xxxx-jpn.pic", 0x00, 0x4000, NO_DUMP ) + + // "Quest of D Ver. 3.0" + // CD QOD3 VERSION UPDATE + // CDP-10062 + DISK_REGION("update") + DISK_IMAGE_READONLY( "cdp-10062", 0, SHA1(abe337cb8782155c4cb92895ba22454a175d479d) ) // CD + + // "Quest of D Ver. 2.0" + // DVD QOD CHECK DISC + // CDV-10028 + DISK_REGION("check") + DISK_IMAGE_READONLY( "cdv-10028", 0, SHA1(9f0f64cb4278cf51a42a21f880cda82b585c63f6) ) // DVD +ROM_END + ROM_START( gundcb83 ) CHIHIRO_BIOS @@ -2096,6 +2273,36 @@ ROM_START( gundcb83a ) ROM_LOAD("317-0484-jpn.pic", 0x00, 0x4000, CRC(308995bb) SHA1(9459ca99bfb5c3cf227821739e7008ae9bd6e710) ) ROM_END +// Quest of D The Battle Kingdom +// note: all following CD/DVD discs for server PC, game image from CDV-10035B uploaded via network to satellite Chihiro units +ROM_START( qofdtbk ) + CHIHIRO_BIOS + + // "Quest of D The Battle Kingdom" + // DVD QOD VS + // CDV-10035B + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "cdv-10035b", 0, SHA1(710776b88e7403193c1e0889bbd2d15fc8a92880) ) // DVD + + // satellite Chihiro security PIC + ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) + //PIC16C621A 317-0506-JPN + //(sticker 253-5508-0506J) + ROM_LOAD("317-0506-jpn.pic", 0x00, 0x4000, CRC(e105c6c8) SHA1(63e17b330a2f7d30bf0c263b163469f7f8e6a495) ) + + // "Quest of D The Battle Kingdom" + // CD QOD VS VERSION UPDATE + // CDP-10078 + DISK_REGION("update") + DISK_IMAGE_READONLY( "cdp-10078", 0, SHA1(f7dde6a95c8b9087f984f92248c22a3b148ef645) ) // CD + + // "Quest of D The Battle Kingdom" + // CD QOD SERVICE END + // CDP-10136 + DISK_REGION("serv_end") + DISK_IMAGE_READONLY( "cdp-10136", 0, SHA1(3bfb6258bf9c08e1c8056183d02fe8aa3b65db49) ) // CD +ROM_END + ROM_START( gundcb83b ) CHIHIRO_BIOS @@ -2109,69 +2316,71 @@ ROM_START( gundcb83b ) ROM_END /* Main board */ -/*Chihiro*/ GAME( 2002, chihiro, 0, chihiro_base, chihiro, driver_device, 0, ROT0, "Sega", "Chihiro Bios", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT ) +/*Chihiro*/ GAME( 2002, chihiro, 0, chihiro_base, chihiro, chihiro_state, 0, ROT0, "Sega", "Chihiro Bios", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT ) /* GDX-xxxx (Sega GD-ROM games) */ -/* 0001 */ GAME( 2002, hotd3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Wow Entertainment", "The House of the Dead III (GDX-0001)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0002 GAME( 2003, crtaxhro, crtaxihr, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (GDX-0002)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0002A GAME( 2003, crtaxhra, crtaxihr, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev A) (GDX-0002A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0002B */ GAME( 2003, crtaxihr, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev B) (GDX-0002B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0003 GAME( 2003, vcop3o, vcop3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (GDX-0003)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0003A */ GAME( 2003, vcop3a, vcop3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (Rev A) (GDX-0003A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0003B */ GAME( 2003, vcop3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (Rev B) (GDX-0003B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0004 GAME( 2003, outr2o, outr2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 (GDX-0004)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) -/* 0004A */ GAME( 2003, outr2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 (Rev A) (GDX-0004A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) -// 0005 GAME( 2004, sgolcnpt, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Golf Club Network Pro Tour (GDX-0005)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) -// 0006 GAME( 2004, mj2o, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (GDX-0006)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0006A GAME( 2004, mj2a, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev A) (GDX-0006A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0006B GAME( 2004, mj2b, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev B) (GDX-0006B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0006C */ GAME( 2004, mj2c, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev C) (GDX-0006C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0006D GAME( 2004, mj2d, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev D) (GDX-0006D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0006E GAME( 2004, mj2e, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev E) (GDX-0006E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0006F */ GAME( 2004, mj2f, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev F) (GDX-0006F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0006G */ GAME( 2004, mj2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev G) (GDX-0006G)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0007 */ GAME( 2004, ollie, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Amusement Vision", "Ollie King (GDX-0007)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0008 GAME( 2004, wangmidjo,wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (GDX-0008)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0008A GAME( 2004, wangmidja,wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev A) (GDX-0008A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0008B */ GAME( 2004, wangmidj, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev B) (GDX-0008B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0009 GAME( 2004, wangmido, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (GDX-0009)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0009A GAME( 2004, wangmida, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev A) (GDX-0009A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0009B */ GAME( 2004, wangmid, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev B) (GDX-0009B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0001 */ GAME( 2002, hotd3, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega / Wow Entertainment", "The House of the Dead III (GDX-0001)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0002 GAME( 2003, crtaxhro, crtaxihr, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (GDX-0002)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0002A GAME( 2003, crtaxhra, crtaxihr, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev A) (GDX-0002A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0002B */ GAME( 2003, crtaxihr, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev B) (GDX-0002B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0003 GAME( 2003, vcop3o, vcop3, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Virtua Cop 3 (GDX-0003)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0003A */ GAME( 2003, vcop3a, vcop3, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Virtua Cop 3 (Rev A) (GDX-0003A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0003B */ GAME( 2003, vcop3, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Virtua Cop 3 (Rev B) (GDX-0003B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0004 GAME( 2003, outr2o, outr2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "OutRun 2 (GDX-0004)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) +/* 0004A */ GAME( 2003, outr2, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "OutRun 2 (Rev A) (GDX-0004A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) +// 0005 GAME( 2004, sgolcnpt, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Golf Club Network Pro Tour (GDX-0005)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) +// 0006 GAME( 2004, mj2o, mj2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (GDX-0006)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0006A GAME( 2004, mj2a, mj2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev A) (GDX-0006A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0006B GAME( 2004, mj2b, mj2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev B) (GDX-0006B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0006C */ GAME( 2004, mj2c, mj2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev C) (GDX-0006C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0006D GAME( 2004, mj2d, mj2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev D) (GDX-0006D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0006E GAME( 2004, mj2e, mj2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev E) (GDX-0006E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0006F */ GAME( 2004, mj2f, mj2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev F) (GDX-0006F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0006G */ GAME( 2004, mj2, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev G) (GDX-0006G)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0007 */ GAME( 2004, ollie, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega / Amusement Vision", "Ollie King (GDX-0007)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0008 GAME( 2004, wangmidjo,wangmid, chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (GDX-0008)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0008A GAME( 2004, wangmidja,wangmid, chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev A) (GDX-0008A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0008B */ GAME( 2004, wangmidj, wangmid, chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev B) (GDX-0008B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0009 GAME( 2004, wangmido, wangmid, chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (GDX-0009)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0009A GAME( 2004, wangmida, wangmid, chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev A) (GDX-0009A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0009B */ GAME( 2004, wangmid, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev B) (GDX-0009B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) // 0010 -// 0011 GAME( 2004, outr2stjo,outr2st, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (Japan) (GDX-0011)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) -/* 0011A */ GAME( 2004, outr2stj, outr2st, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (Japan) (Rev A) (GDX-0011A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) -/* 0012 */ GAME( 2004, ghostsqo, ghostsqu, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Ghost Squad (GDX-0012)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0012A */ GAME( 2004, ghostsqu, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Ghost Squad (Rev A) (GDX-0012A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0013 */ GAME( 2005, gundamos, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Banpresto", "Gundam Battle Operating Simulator (GDX-0013)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0014 */ GAME( 2004, outr2sto, outr2st, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (GDX-0014)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0014A */ GAME( 2004, outr2st, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (Rev A) (GDX-0014A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0015 */ GAME( 2005, wangmid2j,wangmid2, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (GDX-0015)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0015A */ GAME( 2005, wangmid2ja,wangmid2,chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (Rev A) (GDX-0015A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0016 */ GAME( 2005, wangmid2o,wangmid2, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (GDX-0016)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0016A */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (Rev A) (GDX-0016A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0017 GAME( 2005, mj3o, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (GDX-0017)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0017A GAME( 2005, mj3a, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev A) (GDX-0017A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0017B GAME( 2005, mj3b, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev B) (GDX-0017B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0017C GAME( 2005, mj3c, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev C) (GDX-0017C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0017D */ GAME( 2005, mj3d, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev D) (GDX-0017D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0017E GAME( 2005, mj3e, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev E) (GDX-0017E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0017F */ GAME( 2005, mj3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev F) (GDX-0017F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0018 GAME( 2005, scg06nto, scg06nt, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (GDX-0018)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0018A */ GAME( 2005, scg06nt, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (Rev A) (GDX-0018A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0011 GAME( 2004, outr2stjo,outr2st, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "OutRun 2 Special Tours (Japan) (GDX-0011)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) +/* 0011A */ GAME( 2004, outr2stj, outr2st, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "OutRun 2 Special Tours (Japan) (Rev A) (GDX-0011A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) +/* 0012 */ GAME( 2004, ghostsqo, ghostsqu, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Ghost Squad (GDX-0012)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0012A */ GAME( 2004, ghostsqu, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Ghost Squad (Rev A) (GDX-0012A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0013 */ GAME( 2005, gundamos, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Banpresto", "Gundam Battle Operating Simulator (GDX-0013)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0014 */ GAME( 2004, outr2sto, outr2st, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "OutRun 2 Special Tours (GDX-0014)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0014A */ GAME( 2004, outr2st, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "OutRun 2 Special Tours (Rev A) (GDX-0014A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0015 */ GAME( 2005, wangmid2j,wangmid2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (GDX-0015)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0015A */ GAME( 2005, wangmid2ja,wangmid2,chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (Rev A) (GDX-0015A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0016 */ GAME( 2005, wangmid2o,wangmid2, chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (GDX-0016)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0016A */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (Rev A) (GDX-0016A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0017 GAME( 2005, mj3o, mj3, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (GDX-0017)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0017A GAME( 2005, mj3a, mj3, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev A) (GDX-0017A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0017B GAME( 2005, mj3b, mj3, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev B) (GDX-0017B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0017C GAME( 2005, mj3c, mj3, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev C) (GDX-0017C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0017D */ GAME( 2005, mj3d, mj3, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev D) (GDX-0017D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0017E GAME( 2005, mj3e, mj3, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev E) (GDX-0017E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0017F */ GAME( 2005, mj3, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev F) (GDX-0017F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0018 GAME( 2005, scg06nto, scg06nt, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (GDX-0018)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0018A */ GAME( 2005, scg06nt, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (Rev A) (GDX-0018A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) // 0019 // 0020 -// 0021 GAME( 2006, mj3evoo, mj3evo, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (GDX-0021)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -// 0021A GAME( 2006, mj3evoa, mj3evo, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev A) (GDX-0021A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0021B */ GAME( 2007, mj3evo, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev B) (GDX-0021B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0021 GAME( 2006, mj3evoo, mj3evo, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (GDX-0021)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0021A GAME( 2006, mj3evoa, mj3evo, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev A) (GDX-0021A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0021B */ GAME( 2007, mj3evo, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev B) (GDX-0021B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) // 0022 // 0023 -// 0024 GAME( 2009, ccfboxo, ccfboxa, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (GDX-0024)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0024A */ GAME( 2009, ccfboxa, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (4.01) (GDX-0024A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) - -/* CDV-1xxxx (Sega network DVD-ROM games) */ -/* 0005C */ GAME( 2004, questofd, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Quest of D (CDV-10005C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0010 */ GAME( 2005, gundcb79, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0079 Card Builder (CDV-10010)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0024B */ GAME( 2006, gundcb79a,gundcb79, chihirogd, chihiro, driver_device, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0079 Card Builder Ver.2.02 (CDV-10024B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0030 */ GAME( 2007, gundcb83, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0083 Card Builder (CDV-10030)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0031 */ GAME( 2007, gundcb83a,gundcb83, chihirogd, chihiro, driver_device, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0083 Card Builder Check Disk (CDV-10031)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0037B */ GAME( 2008, gundcb83b,gundcb83, chihirogd, chihiro, driver_device, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0083 Card Builder Ver.2.10 (CDV-10037B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +// 0024 GAME( 2009, ccfboxo, ccfboxa, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (GDX-0024)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0024A */ GAME( 2009, ccfboxa, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (4.01) (GDX-0024A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) + +/* CDV-1xxxx (Sega network CD-ROM and DVD-ROM games) */ +/* 0005C */ GAME( 2004, questofd, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Quest of D (CDV-10005C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0010 */ GAME( 2005, gundcb79, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0079 Card Builder (CDV-10010)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0024B */ GAME( 2006, gundcb79a,gundcb79, chihirogd, chihiro, chihiro_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0079 Card Builder Ver.2.02 (CDV-10024B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0026D */ GAME( 2007, qofd3, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Quest of D Oukoku no Syugosya Ver. 3.02 (CDV-10026D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0030 */ GAME( 2007, gundcb83, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0083 Card Builder (CDV-10030)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0031 */ GAME( 2007, gundcb83a,gundcb83, chihirogd, chihiro, chihiro_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0083 Card Builder Check Disk (CDV-10031)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0035B */ GAME( 2007, qofdtbk, chihiro, chihirogd, chihiro, chihiro_state, 0, ROT0, "Sega", "Quest of D The Battle Kingdom (CDV-10035B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0037B */ GAME( 2008, gundcb83b,gundcb83, chihirogd, chihiro, chihiro_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam 0083 Card Builder Ver.2.10 (CDV-10037B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/chinagat.cpp b/src/mame/drivers/chinagat.cpp index c5159482ae9..343d1841754 100644 --- a/src/mame/drivers/chinagat.cpp +++ b/src/mame/drivers/chinagat.cpp @@ -107,7 +107,7 @@ public: DECLARE_WRITE8_MEMBER( saiyugoub1_adpcm_rom_addr_w ); DECLARE_WRITE8_MEMBER( saiyugoub1_adpcm_control_w ); DECLARE_WRITE8_MEMBER( saiyugoub1_m5205_clk_w ); - DECLARE_READ8_MEMBER( saiyugoub1_m5205_irq_r ); + DECLARE_READ_LINE_MEMBER(saiyugoub1_m5205_irq_r); DECLARE_WRITE_LINE_MEMBER(saiyugoub1_m5205_irq_w); optional_device m_adpcm; }; @@ -309,7 +309,7 @@ WRITE8_MEMBER(chinagat_state::saiyugoub1_m5205_clk_w ) #endif } -READ8_MEMBER(chinagat_state::saiyugoub1_m5205_irq_r ) +READ_LINE_MEMBER(chinagat_state::saiyugoub1_m5205_irq_r ) { if (m_adpcm_sound_irq) { @@ -394,14 +394,6 @@ static ADDRESS_MAP_START( i8748_map, AS_PROGRAM, 8, chinagat_state ) AM_RANGE(0x0400, 0x07ff) AM_ROM /* i8749 version */ ADDRESS_MAP_END -static ADDRESS_MAP_START( i8748_portmap, AS_IO, 8, chinagat_state ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(saiyugoub1_mcu_command_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_WRITE(saiyugoub1_m5205_clk_w) /* Drives the clock on the m5205 at 1/8 of this frequency */ - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(saiyugoub1_m5205_irq_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(saiyugoub1_adpcm_rom_addr_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(saiyugoub1_adpcm_control_w) -ADDRESS_MAP_END - static INPUT_PORTS_START( chinagat ) @@ -461,20 +453,20 @@ static INPUT_PORTS_START( chinagat ) PORT_DIPSETTING( 0x40, "4" ) PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_START("P2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) @@ -549,7 +541,7 @@ MACHINE_RESET_MEMBER(chinagat_state,chinagat) } -static MACHINE_CONFIG_START( chinagat, chinagat_state ) +static MACHINE_CONFIG_START( chinagat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, MAIN_CLOCK / 2) /* 1.5 MHz (12MHz oscillator / 4 internally) */ @@ -590,11 +582,11 @@ static MACHINE_CONFIG_START( chinagat, chinagat_state ) MCFG_SOUND_ROUTE(0, "mono", 0.80) MCFG_SOUND_ROUTE(1, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", 1065000, OKIM6295_PIN7_HIGH) // pin 7 not verified, clock frequency estimated with recording + MCFG_OKIM6295_ADD("oki", 1065000, PIN7_HIGH) // pin 7 not verified, clock frequency estimated with recording MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( saiyugoub1, chinagat_state ) +static MACHINE_CONFIG_START( saiyugoub1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK / 8) /* 68B09EP 1.5 MHz (12MHz oscillator) */ @@ -609,7 +601,12 @@ static MACHINE_CONFIG_START( saiyugoub1, chinagat_state ) MCFG_CPU_ADD("mcu", I8748, 9263750) /* 9.263750 MHz oscillator, divided by 3*5 internally */ MCFG_CPU_PROGRAM_MAP(i8748_map) - MCFG_CPU_IO_MAP(i8748_portmap) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(chinagat_state, saiyugoub1_mcu_command_r)) + //MCFG_MCS48_PORT_T0_CLK_CUSTOM(chinagat_state, saiyugoub1_m5205_clk_w) /* Drives the clock on the m5205 at 1/8 of this frequency */ + MCFG_MCS48_PORT_T1_IN_CB(READLINE(chinagat_state, saiyugoub1_m5205_irq_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(chinagat_state, saiyugoub1_adpcm_rom_addr_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(chinagat_state, saiyugoub1_adpcm_control_w)) + MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* heavy interleaving to sync up sprite<->main cpu's */ @@ -641,11 +638,11 @@ static MACHINE_CONFIG_START( saiyugoub1, chinagat_state ) MCFG_SOUND_ADD("adpcm", MSM5205, 9263750 / 24) MCFG_MSM5205_VCLK_CB(WRITELINE(chinagat_state, saiyugoub1_m5205_irq_w)) /* Interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S64_4B) /* vclk input mode (6030Hz, 4-bit) */ + MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* vclk input mode (6030Hz, 4-bit) */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( saiyugoub2, chinagat_state ) +static MACHINE_CONFIG_START( saiyugoub2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK / 8) /* 1.5 MHz (12MHz oscillator) */ @@ -919,8 +916,8 @@ DRIVER_INIT_MEMBER(chinagat_state,chinagat) } -/* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS ) */ -GAME( 1988, chinagat, 0, chinagat, chinagat, chinagat_state, chinagat, ROT0, "Technos Japan (Taito / Romstar license)", "China Gate (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, saiyugou, chinagat, chinagat, chinagat, chinagat_state, chinagat, ROT0, "Technos Japan", "Sai Yu Gou Ma Roku (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, saiyugoub1, chinagat, saiyugoub1, chinagat, chinagat_state, chinagat, ROT0, "bootleg", "Sai Yu Gou Ma Roku (Japan bootleg 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, saiyugoub2, chinagat, saiyugoub2, chinagat, chinagat_state, chinagat, ROT0, "bootleg", "Sai Yu Gou Ma Roku (Japan bootleg 2)", MACHINE_SUPPORTS_SAVE ) +// ( YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS ) */ +GAME( 1988, chinagat, 0, chinagat, chinagat, chinagat_state, chinagat, ROT0, "Technos Japan (Taito / Romstar license)", "China Gate (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, saiyugou, chinagat, chinagat, chinagat, chinagat_state, chinagat, ROT0, "Technos Japan", "Sai Yu Gou Ma Roku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, saiyugoub1, chinagat, saiyugoub1, chinagat, chinagat_state, chinagat, ROT0, "bootleg", "Sai Yu Gou Ma Roku (Japan bootleg 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, saiyugoub2, chinagat, saiyugoub2, chinagat, chinagat_state, chinagat, ROT0, "bootleg", "Sai Yu Gou Ma Roku (Japan bootleg 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/chinsan.cpp b/src/mame/drivers/chinsan.cpp index 0ca869a58c5..3a366764cee 100644 --- a/src/mame/drivers/chinsan.cpp +++ b/src/mame/drivers/chinsan.cpp @@ -1,255 +1,110 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood -/* Ganbare Chinsan Ooshoubu - driver by David Haywood +// license: BSD-3-Clause +// copyright-holders: David Haywood, Uki, Dirk Best +/*************************************************************************** -ToDo: -Improve Inputs + Ganbare Chinsan Ooshoubu (がんばれ珍さん!大勝負) + © 1987 Sanritsu -Notes: --ADPCM hook-up is virtually identical to the other Sanritsu games (Jantotsu, Appoooh, Dr. Micro etc.). + Kiki-Ippatsu Mayumi-chan (危機一髪真由美ちゃん) + © 1988 Victory L.L.C. (developed by Sanritsu) -*/ + TODO: + - Figure out the rest of the dip switches + - Verify clock speeds + - Raw screen params -/* + Notes: + - ADPCM hook-up is virtually identical to the other Sanritsu games + (Jantotsu, Appoooh, Dr. Micro etc.). -Ganbare Chinsan Ooshoubu -(c)1987 Sanritsu - -C1-00114-B - -CPU: 317-5012 (MC-8123A) -SOUND: YM2203 - M5205 -OSC: 10.000MHz - 384KHz -Chips: 8255AC-2 - - -MM00.7D prg. -MM01.8D - -MM20.7K chr. -MM21.8K -MM22.9K - -MM40.13D samples - -MM60.2C ? - -MM61.9M color -MM62.9N -MM63.10N - -*/ +***************************************************************************/ #include "emu.h" #include "cpu/z80/z80.h" #include "machine/mc8123.h" +#include "machine/nvram.h" +#include "machine/i8255.h" #include "sound/2203intf.h" #include "sound/msm5205.h" #include "screen.h" #include "speaker.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + class chinsan_state : public driver_device { public: chinsan_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_video(*this, "video"), m_maincpu(*this, "maincpu"), - m_adpcm(*this, "adpcm"), + m_video_ram(*this, "video_ram"), m_color_ram(*this, "color_ram"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } - - /* memory pointers */ - required_shared_ptr m_video; - - /* misc */ - uint8_t m_port_select; - uint32_t m_adpcm_pos; - uint8_t m_adpcm_idle; - uint8_t m_adpcm_data; - uint8_t m_trigger; + m_adpcm(*this, "adpcm"), + m_inputs_p1{ {*this, "p1_0"}, {*this, "p1_1"}, {*this, "p1_2"}, {*this, "p1_3"}, {*this, "p1_4"} }, + m_inputs_p2{ {*this, "p2_0"}, {*this, "p2_1"}, {*this, "p2_2"}, {*this, "p2_3"}, {*this, "p2_4"} }, + m_bank1(*this, "bank1"), m_bank0d(*this, "bank0d"), m_bank1d(*this, "bank1d"), + m_tilemap(nullptr), + m_int_enabled(false), + m_port_select(0xff), + m_adpcm_pos(0), m_adpcm_idle(1), m_adpcm_data(0), m_trigger(0) + { } + + DECLARE_WRITE8_MEMBER(input_select_w); + DECLARE_READ8_MEMBER(input_p2_r); + DECLARE_READ8_MEMBER(input_p1_r); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TILE_GET_INFO_MEMBER(tile_info); + + DECLARE_WRITE8_MEMBER(adpcm_w); + DECLARE_WRITE_LINE_MEMBER(adpcm_int_w); + + INTERRUPT_GEN_MEMBER(vblank_int); DECLARE_WRITE8_MEMBER(ctrl_w); - DECLARE_WRITE8_MEMBER(chinsan_port00_w); - DECLARE_READ8_MEMBER(chinsan_input_port_0_r); - DECLARE_READ8_MEMBER(chinsan_input_port_1_r); - DECLARE_WRITE8_MEMBER(ym_port_w1); - DECLARE_WRITE8_MEMBER(ym_port_w2); - DECLARE_WRITE8_MEMBER(chin_adpcm_w); DECLARE_DRIVER_INIT(chinsan); + +protected: virtual void machine_start() override; virtual void machine_reset() override; - virtual void video_start() override; - DECLARE_PALETTE_INIT(chinsan); - uint32_t screen_update_chinsan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_WRITE_LINE_MEMBER(chin_adpcm_int); - required_device m_maincpu; - required_device m_adpcm; - required_device m_gfxdecode; - required_device m_palette; - std::unique_ptr m_decrypted_opcodes; -}; - - -/************************************* - * - * Video emulation - * - *************************************/ - -PALETTE_INIT_MEMBER(chinsan_state, chinsan) -{ - uint8_t *src = memregion( "color_proms" )->base(); - int i; - - for (i = 0; i < 0x100; i++) - palette.set_pen_color(i, pal4bit(src[i + 0x200]), pal4bit(src[i + 0x100]), pal4bit(src[i + 0x000])); -} -void chinsan_state::video_start() -{ -} - -uint32_t chinsan_state::screen_update_chinsan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - int y, x, count; - count = 0; - for (y = 0; y < 32; y++) - { - for (x = 0; x < 64; x++) - { - int tileno, colour; - tileno = m_video[count] | (m_video[count + 0x800] << 8); - colour = m_video[count + 0x1000] >> 3; - m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,tileno,colour,0,0,x*8,y*8); - count++; - } - } - - return 0; -} - - - -/************************************* - * - * Memory handlers - * - *************************************/ - -WRITE8_MEMBER(chinsan_state::ctrl_w) -{ - membank("bank1")->set_entry(data >> 6); - membank("bank1d")->set_entry(data >> 6); -} - -WRITE8_MEMBER(chinsan_state::ym_port_w1) -{ - logerror("ym_write port 1 %02x\n", data); -} - - -WRITE8_MEMBER(chinsan_state::ym_port_w2) -{ - logerror("ym_write port 2 %02x\n", data); -} - -WRITE8_MEMBER(chinsan_state::chinsan_port00_w) -{ - m_port_select = data; - - if ( - (data != 0x40) && - (data != 0x4f) && - (data != 0x53) && - (data != 0x57) && - (data != 0x5b) && - (data != 0x5d) && - (data != 0x5e)) - logerror("write port 00 %02x\n", data); - -} - -READ8_MEMBER(chinsan_state::chinsan_input_port_0_r) -{ - //return 0xff; // the inputs don't seem to work, so just return ff for now - - switch (m_port_select) - { - /* i doubt these are both really the same.. */ - case 0x40: - case 0x4f: - return ioport("MAHJONG_P2_1")->read(); - - case 0x53: - return ioport("MAHJONG_P2_2")->read(); - - case 0x57: - return ioport("MAHJONG_P2_3")->read(); - - case 0x5b: - return ioport("MAHJONG_P2_4")->read(); - - case 0x5d: - return ioport("MAHJONG_P2_5")->read(); - - case 0x5e: - return ioport("MAHJONG_P2_6")->read(); - } - - printf("chinsan_input_port_0_r unk_r %02x\n", m_port_select); - return machine().rand(); -} - -READ8_MEMBER(chinsan_state::chinsan_input_port_1_r) -{ - switch (m_port_select) - { - /* i doubt these are both really the same.. */ - case 0x40: - case 0x4f: - return ioport("MAHJONG_P1_1")->read(); - - case 0x53: - return ioport("MAHJONG_P1_2")->read(); - - case 0x57: - return ioport("MAHJONG_P1_3")->read(); - - case 0x5b: - return ioport("MAHJONG_P1_4")->read(); +private: + required_device m_maincpu; + required_shared_ptr m_video_ram; + required_shared_ptr m_color_ram; + required_device m_gfxdecode; + optional_device m_adpcm; + required_ioport m_inputs_p1[5]; + required_ioport m_inputs_p2[5]; + required_memory_bank m_bank1; + optional_memory_bank m_bank0d; + optional_memory_bank m_bank1d; - case 0x5d: - return ioport("MAHJONG_P1_5")->read(); + std::unique_ptr m_decrypted_opcodes; - case 0x5e: - return ioport("MAHJONG_P1_6")->read(); - } + tilemap_t *m_tilemap; - printf("chinsan_input_port_1_r unk_r %02x\n", m_port_select); - return machine().rand(); -} + bool m_int_enabled; + uint8_t m_port_select; + uint32_t m_adpcm_pos; + uint8_t m_adpcm_idle; + uint8_t m_adpcm_data; + uint8_t m_trigger; +}; -WRITE8_MEMBER(chinsan_state::chin_adpcm_w) -{ - m_adpcm_pos = (data & 0xff) * 0x100; - m_adpcm_idle = 0; - m_adpcm->reset_w(0); -} -/************************************* - * - * Address maps - * - *************************************/ +//************************************************************************** +// ADDRESS MAPS +//************************************************************************** static ADDRESS_MAP_START( chinsan_map, AS_PROGRAM, 8, chinsan_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("video") + AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram") + AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("video_ram") + AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("color_ram") ADDRESS_MAP_END static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, chinsan_state ) @@ -257,290 +112,290 @@ static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, chinsa AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") ADDRESS_MAP_END -static ADDRESS_MAP_START( chinsan_io, AS_IO, 8, chinsan_state ) +static ADDRESS_MAP_START( chinsan_io_map, AS_IO, 8, chinsan_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(chinsan_port00_w) - AM_RANGE(0x01, 0x01) AM_READ(chinsan_input_port_0_r) - AM_RANGE(0x02, 0x02) AM_READ(chinsan_input_port_1_r) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi", i8255_device, read, write) AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x20, 0x20) AM_WRITE(chin_adpcm_w) - AM_RANGE(0x30, 0x30) AM_WRITE(ctrl_w) // ROM bank + unknown stuff (input mutliplex?) + AM_RANGE(0x20, 0x20) AM_WRITE(adpcm_w) + AM_RANGE(0x30, 0x30) AM_WRITE(ctrl_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mayumi_io_map, AS_IO, 8, chinsan_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x30, 0x30) AM_READ_PORT("extra") AM_WRITE(ctrl_w) + AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppi", i8255_device, read, write) + AM_RANGE(0xd0, 0xd1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) ADDRESS_MAP_END -/************************************* - * - * Input ports - * - *************************************/ +//************************************************************************** +// INPUTS +//************************************************************************** static INPUT_PORTS_START( chinsan ) PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x01, "DSW1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME(0x07, 0x07, DEF_STR( Coinage )) PORT_DIPLOCATION("SW-1:1,2,3") + PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C )) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C )) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C )) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C )) + PORT_DIPSETTING( 0x04, DEF_STR( 4C_1C )) + PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C )) + PORT_DIPSETTING( 0x06, DEF_STR( 2C_1C )) + PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C )) + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW-1:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW-1:5") + PORT_DIPNAME(0x20, 0x00, DEF_STR( Demo_Sounds )) PORT_DIPLOCATION("SW-1:6") + PORT_DIPSETTING( 0x00, DEF_STR( On )) + PORT_DIPSETTING( 0x20, DEF_STR( Off )) + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW-1:7") + PORT_DIPNAME(0x80, 0x80, DEF_STR( Flip_Screen )) PORT_DIPLOCATION("SW-1:8") + PORT_DIPSETTING( 0x00, DEF_STR( On )) + PORT_DIPSETTING( 0x80, DEF_STR( Off )) PORT_START("DSW2") - PORT_DIPNAME( 0x01, 0x01, "DSW2" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - - PORT_START("MAHJONG_P1_1") - PORT_DIPNAME( 0x01, 0x01, "1-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "P1 FF" ) // labaled FF in test mode, is this coin1? - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) // adds coins?, but maybe its the service switch? - - PORT_START("MAHJONG_P1_2") - PORT_DIPNAME( 0x01, 0x01, "1-2" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("MAHJONG_P1_3") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - - PORT_START("MAHJONG_P1_4") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW-2:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW-2:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW-2:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW-2:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW-2:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW-2:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW-2:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW-2:8") + + PORT_START("p1_0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_START("MAHJONG_P1_5") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? + PORT_START("p1_1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_B ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_START("MAHJONG_P1_6") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - - PORT_START("MAHJONG_P2_1") - PORT_DIPNAME( 0x01, 0x01, "2-1" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "P2 FF" ) // labaled FF in test mode, is this coin2 or some other button ? - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Test ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("MAHJONG_P2_2") - PORT_DIPNAME( 0x01, 0x01, "2-2" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("MAHJONG_P2_3") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - - PORT_START("MAHJONG_P2_4") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - - PORT_START("MAHJONG_P2_5") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - - PORT_START("MAHJONG_P2_6") + PORT_START("p1_2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("p1_3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("p1_4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // labeled ff in test mode, i assume this means flip flop + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("p2_0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("p2_1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("p2_2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("p2_3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("p2_4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // labeled ff in test mode, i assume this means flip flop + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Statistics") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) INPUT_PORTS_END +static INPUT_PORTS_START( mayumi ) + PORT_INCLUDE(chinsan) + + PORT_MODIFY("DSW1") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW-1:8") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW-1:7") + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Service_Mode )) PORT_DIPLOCATION("SW-1:6") + PORT_DIPSETTING( 0x04, DEF_STR( Off )) + PORT_DIPSETTING( 0x00, DEF_STR( On )) + PORT_DIPNAME( 0x18, 0x00, DEF_STR( Coinage )) PORT_DIPLOCATION("SW-1:5,4") + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C )) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C )) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_3C )) + PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C )) + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW-1:3") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW-1:2") + PORT_DIPNAME(0x80, 0x80, DEF_STR( Flip_Screen )) PORT_DIPLOCATION("SW-1:1") + PORT_DIPSETTING( 0x00, DEF_STR( On )) + PORT_DIPSETTING( 0x80, DEF_STR( Off )) + + PORT_MODIFY("DSW2") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW-2:8") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW-2:7") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW-2:6") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW-2:5") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW-2:4") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW-2:3") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW-2:2") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW-2:1") + + PORT_MODIFY("p1_4") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_MODIFY("p2_4") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("extra") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW , IPT_COIN1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_TOGGLE + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_TOGGLE PORT_NAME("Statistics") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MEMORY_RESET ) +INPUT_PORTS_END -/************************************* - * - * Graphics definitions - * - *************************************/ +//************************************************************************** +// INPUT PORT HANDLING +//************************************************************************** -static const gfx_layout tiles8x8_layout = +WRITE8_MEMBER( chinsan_state::input_select_w ) { - 8,8, - RGN_FRAC(1,3), - 3, - { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 -}; + // 765----- unknown + // ---43210 input select (shared for player 1 and 2) + + m_port_select = data; +} + +READ8_MEMBER( chinsan_state::input_p1_r ) +{ + uint8_t data = 0xff; + + if (BIT(m_port_select, 0) == 0) data &= m_inputs_p1[0]->read(); + if (BIT(m_port_select, 1) == 0) data &= m_inputs_p1[1]->read(); + if (BIT(m_port_select, 2) == 0) data &= m_inputs_p1[2]->read(); + if (BIT(m_port_select, 3) == 0) data &= m_inputs_p1[3]->read(); + if (BIT(m_port_select, 4) == 0) data &= m_inputs_p1[4]->read(); + + return data; +} + +READ8_MEMBER( chinsan_state::input_p2_r ) +{ + uint8_t data = 0xff; + + if (BIT(m_port_select, 0) == 0) data &= m_inputs_p2[0]->read(); + if (BIT(m_port_select, 1) == 0) data &= m_inputs_p2[1]->read(); + if (BIT(m_port_select, 2) == 0) data &= m_inputs_p2[2]->read(); + if (BIT(m_port_select, 3) == 0) data &= m_inputs_p2[3]->read(); + if (BIT(m_port_select, 4) == 0) data &= m_inputs_p2[4]->read(); + + return data; +} + + +//************************************************************************** +// VIDEO EMULATION +//************************************************************************** + +uint32_t chinsan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_tilemap->mark_all_dirty(); + m_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + return 0; +} + + +//************************************************************************** +// DRAWGFX LAYOUTS +//************************************************************************** static GFXDECODE_START( chinsan ) - GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 32 ) + GFXDECODE_ENTRY("gfx1", 0, gfx_8x8x3_planar, 0, 32) GFXDECODE_END -/************************************* - * - * Sound interface - * - *************************************/ +TILE_GET_INFO_MEMBER( chinsan_state::tile_info ) +{ + uint16_t code = m_video_ram[tile_index] | (m_video_ram[tile_index + 0x800] << 8); + + // 76543--- color + // -----210 unknown + uint8_t color = m_color_ram[tile_index] >> 3; + + SET_TILE_INFO_MEMBER(0, code, color, 0); +} + + +//************************************************************************** +// AUDIO +//************************************************************************** + +WRITE8_MEMBER( chinsan_state::adpcm_w ) +{ + m_adpcm_pos = data << 8; + m_adpcm_idle = 0; + m_adpcm->reset_w(0); +} -WRITE_LINE_MEMBER(chinsan_state::chin_adpcm_int) +WRITE_LINE_MEMBER( chinsan_state::adpcm_int_w ) { if (m_adpcm_pos >= 0x10000 || m_adpcm_idle) { @@ -555,7 +410,7 @@ WRITE_LINE_MEMBER(chinsan_state::chin_adpcm_int) m_adpcm_data = ((m_trigger ? (ROM[m_adpcm_pos] & 0x0f) : (ROM[m_adpcm_pos] & 0xf0) >> 4)); m_adpcm->data_w(m_adpcm_data & 0xf); m_trigger ^= 1; - if(m_trigger == 0) + if (m_trigger == 0) { m_adpcm_pos++; if ((ROM[m_adpcm_pos] & 0xff) == 0x70) @@ -565,84 +420,140 @@ WRITE_LINE_MEMBER(chinsan_state::chin_adpcm_int) } -/************************************* - * - * Machine driver - * - *************************************/ +//************************************************************************** +// MACHINE EMULATION +//************************************************************************** + +INTERRUPT_GEN_MEMBER( chinsan_state::vblank_int ) +{ + if (m_int_enabled) + device.execute().set_input_line(INPUT_LINE_IRQ0, HOLD_LINE); +} + +WRITE8_MEMBER( chinsan_state::ctrl_w ) +{ + // 76------ rom bank + // --5432-- unknown + // ------1- flip screen + // -------0 interrupt enable + + m_int_enabled = bool(BIT(data, 0)); + flip_screen_set(BIT(data, 1)); + + if (m_bank1d.found()) + { + int bank = (BIT(data, 7) << 1) | BIT(data, 6); + m_bank1->set_entry(bank); + m_bank1d->set_entry(bank); + } + else + { + // bank bits have switched for mayumi + int bank = (BIT(data, 6) << 1) | BIT(data, 7); + m_bank1->set_entry(bank); + } +} void chinsan_state::machine_start() { - membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x8000, 0x4000); - membank("bank0d")->set_base(m_decrypted_opcodes.get()); - membank("bank1d")->configure_entries(0, 4, m_decrypted_opcodes.get() + 0x8000, 0x4000); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chinsan_state::tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - save_item(NAME(m_adpcm_idle)); + m_bank1->configure_entries(0, 4, memregion("maincpu")->base() + 0x8000, 0x4000); + + if (m_bank0d.found()) + m_bank0d->set_base(m_decrypted_opcodes.get()); + if (m_bank1d.found()) + m_bank1d->configure_entries(0, 4, m_decrypted_opcodes.get() + 0x8000, 0x4000); + + save_item(NAME(m_int_enabled)); save_item(NAME(m_port_select)); save_item(NAME(m_adpcm_pos)); + save_item(NAME(m_adpcm_idle)); save_item(NAME(m_adpcm_data)); save_item(NAME(m_trigger)); } void chinsan_state::machine_reset() { - m_adpcm_idle = 1; - m_port_select = 0; + m_int_enabled = false; + m_port_select = 0xff; m_adpcm_pos = 0; + m_adpcm_idle = 1; m_adpcm_data = 0; m_trigger = 0; } +DRIVER_INIT_MEMBER( chinsan_state, chinsan ) +{ + m_decrypted_opcodes = std::make_unique(0x18000); + downcast(*m_maincpu).decode(memregion("maincpu")->base(), m_decrypted_opcodes.get(), 0x18000); +} + -static MACHINE_CONFIG_START( chinsan, chinsan_state ) +//************************************************************************** +// MACHINE DEFINTIONS +//************************************************************************** - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80,10000000/2) /* ? MHz */ +// C1-00114-B +static MACHINE_CONFIG_START( chinsan ) + MCFG_CPU_ADD("maincpu", MC8123, XTAL_10MHz/2) // 317-5012 MCFG_CPU_PROGRAM_MAP(chinsan_map) - MCFG_CPU_IO_MAP(chinsan_io) + MCFG_CPU_IO_MAP(chinsan_io_map) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", chinsan_state, irq0_line_hold) + MCFG_CPU_VBLANK_INT_DRIVER("screen", chinsan_state, vblank_int) + + MCFG_NVRAM_ADD_0FILL("nvram") + MCFG_DEVICE_ADD("ppi", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(chinsan_state, input_select_w)) + MCFG_I8255_IN_PORTB_CB(READ8(chinsan_state, input_p2_r)) + MCFG_I8255_IN_PORTC_CB(READ8(chinsan_state, input_p1_r)) - /* video hardware */ + // video hardware MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_SIZE(512, 256) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VISIBLE_AREA(24, 512-24-1, 16, 256-16-1) - MCFG_SCREEN_UPDATE_DRIVER(chinsan_state, screen_update_chinsan) + MCFG_SCREEN_UPDATE_DRIVER(chinsan_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", chinsan) - MCFG_PALETTE_ADD("palette", 0x100) - MCFG_PALETTE_INIT_OWNER(chinsan_state, chinsan) + MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256) - /* sound hardware */ + // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("ymsnd", YM2203, 1500000) /* ? Mhz */ + MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_10MHz/8) MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW1")) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2")) - MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(chinsan_state, ym_port_w1)) - MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(chinsan_state, ym_port_w2)) MCFG_SOUND_ROUTE(0, "mono", 0.15) MCFG_SOUND_ROUTE(1, "mono", 0.15) MCFG_SOUND_ROUTE(2, "mono", 0.15) MCFG_SOUND_ROUTE(3, "mono", 0.10) - MCFG_SOUND_ADD("adpcm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(chinsan_state, chin_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S64_4B) /* 8kHz */ + MCFG_SOUND_ADD("adpcm", MSM5205, XTAL_384kHz) + MCFG_MSM5205_VCLK_CB(WRITELINE(chinsan_state, adpcm_int_w)) + MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) // 8kHz MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( mayumi, chinsan ) + // standard Z80 instead of MC-8123 + MCFG_DEVICE_REMOVE("maincpu") + MCFG_CPU_ADD("maincpu", Z80, XTAL_10MHz/2) + MCFG_CPU_PROGRAM_MAP(chinsan_map) + MCFG_CPU_IO_MAP(mayumi_io_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", chinsan_state, vblank_int) + + // no ADPCM + MCFG_DEVICE_REMOVE("adpcm") +MACHINE_CONFIG_END -/************************************* - * - * ROM definition(s) - * - *************************************/ +//************************************************************************** +// ROM DEFINITIONS +//************************************************************************** ROM_START( chinsan ) ROM_REGION( 0x18000, "maincpu", 0 ) /* encrypted code / data */ @@ -650,13 +561,13 @@ ROM_START( chinsan ) ROM_CONTINUE( 0x00000, 0x08000 ) // first half is blank ROM_LOAD( "mm01.8d", 0x08000, 0x10000, CRC(c69ddbf5) SHA1(9533365c1761b113174d53a2e23ce6a7baca7dfe) ) - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-5012.key", 0x0000, 0x2000, CRC(2ecfb132) SHA1(3110ef82080dd7d908cc6bf34c6643f187f90b29) ) ROM_REGION( 0x30000, "gfx1", 0 ) - ROM_LOAD( "mm20.7k", 0x00000, 0x10000, CRC(54efb409) SHA1(333adadd7f3dc3393dbe334303bae544b3d26c00) ) + ROM_LOAD( "mm22.9k", 0x00000, 0x10000, CRC(6092f6e1) SHA1(32f53027dc954e314d7c5d04ff53f17358bbcf77) ) ROM_LOAD( "mm21.8k", 0x10000, 0x10000, CRC(25f6c827) SHA1(add72a3cfa2f24105e36d0464c2db6a6bedd4139) ) - ROM_LOAD( "mm22.9k", 0x20000, 0x10000, CRC(6092f6e1) SHA1(32f53027dc954e314d7c5d04ff53f17358bbcf77) ) + ROM_LOAD( "mm20.7k", 0x20000, 0x10000, CRC(54efb409) SHA1(333adadd7f3dc3393dbe334303bae544b3d26c00) ) ROM_REGION( 0x10000, "adpcm", 0 ) /* M5205 samples */ ROM_LOAD( "mm40.13d", 0x00000, 0x10000, CRC(a408b8f7) SHA1(60a2644922cb60c0a1a3409761c7e50924360313) ) @@ -664,30 +575,33 @@ ROM_START( chinsan ) ROM_REGION( 0x20, "user2", 0 ) ROM_LOAD( "mm60.2c", 0x000, 0x020, CRC(88477178) SHA1(03c1c9e3e88a5ae9970cb4b872ad4b6e4d77a6da) ) - ROM_REGION( 0x300, "color_proms", 0 ) - ROM_LOAD( "mm61.9m", 0x000, 0x100, CRC(57024262) SHA1(e084e6baa3c529217f6f8e37c9dd5f0687ba2fc4) ) // b + ROM_REGION( 0x300, "proms", 0 ) + ROM_LOAD( "mm63.10n", 0x000, 0x100, CRC(b65e3567) SHA1(f146af51dfaa5b4bf44c4e27f1a0292f8fd07ce9) ) // r ROM_LOAD( "mm62.9n", 0x100, 0x100, CRC(b5a1dbe5) SHA1(770a791c061ce422f860bb8d32f82bbbf9b4d12a) ) // g - ROM_LOAD( "mm63.10n", 0x200, 0x100, CRC(b65e3567) SHA1(f146af51dfaa5b4bf44c4e27f1a0292f8fd07ce9) ) // r + ROM_LOAD( "mm61.9m", 0x200, 0x100, CRC(57024262) SHA1(e084e6baa3c529217f6f8e37c9dd5f0687ba2fc4) ) // b ROM_END +ROM_START( mayumi ) + ROM_REGION( 0x18000, "maincpu", 0 ) + ROM_LOAD( "my00.bin", 0x00000, 0x08000, CRC(33189e37) SHA1(cbf75f56360ef7da5b7b1207b58cd0d72bcaf207) ) + ROM_LOAD( "my01.bin", 0x08000, 0x10000, CRC(5280fb39) SHA1(cee7653f4353031701ec1608881b37073b178d9f) ) // banked -/************************************* - * - * Driver initialization - * - *************************************/ - -DRIVER_INIT_MEMBER(chinsan_state,chinsan) -{ - m_decrypted_opcodes = std::make_unique(0x18000); - mc8123_decode(memregion("maincpu")->base(), m_decrypted_opcodes.get(), memregion("user1")->base(), 0x18000); -} + ROM_REGION( 0x30000, "gfx1", 0 ) + ROM_LOAD( "my10.bin", 0x00000, 0x10000, CRC(3b4f4f97) SHA1(50bda1484e965f15630bd2e05861d74ddeb0d88e) ) + ROM_LOAD( "my20.bin", 0x10000, 0x10000, CRC(18544029) SHA1(74bd8bb422db33bd7af08afbf9b801bd31a3f199) ) + ROM_LOAD( "my30.bin", 0x20000, 0x10000, CRC(7f22d53f) SHA1(f8e5874ba0fa003ba0d6a504b2169acdf1491484) ) + + ROM_REGION( 0x0300, "proms", 0 ) + ROM_LOAD( "my-9m.bin", 0x0000, 0x0100, CRC(b18fd669) SHA1(e2b1477c1bc49994b0b652d63a2205363aab9a74) ) // r + ROM_LOAD( "my-9l.bin", 0x0100, 0x0100, CRC(f3fef561) SHA1(247f579fe91ad7e516c93a873b2ecca780bf6da0) ) // g + ROM_LOAD( "my-9k.bin", 0x0200, 0x0100, CRC(3e7a8012) SHA1(24129586a1c39f68dad274b5afbdd6c027ab0901) ) // b +ROM_END -/************************************* - * - * Game driver(s) - * - *************************************/ +//************************************************************************** +// SYSTEM DRIVERS +//************************************************************************** -GAME( 1987, chinsan, 0, chinsan, chinsan, chinsan_state, chinsan, ROT0, "Sanritsu", "Ganbare Chinsan Ooshoubu (MC-8123A, 317-5012)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS +GAME( 1987, chinsan, 0, chinsan, chinsan, chinsan_state, chinsan, ROT0, "Sanritsu", "Ganbare Chinsan Ooshoubu (MC-8123A, 317-5012)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mayumi, 0, mayumi, mayumi, chinsan_state, 0, ROT0, "Victory L.L.C.", "Kiki-Ippatsu Mayumi-chan", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp index e2f97417977..e5197879165 100644 --- a/src/mame/drivers/chqflag.cpp +++ b/src/mame/drivers/chqflag.cpp @@ -288,7 +288,7 @@ void chqflag_state::machine_reset() m_wheel = 0; } -static MACHINE_CONFIG_START( chqflag, chqflag_state ) +static MACHINE_CONFIG_START( chqflag ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 052001 (verified on pcb) */ @@ -422,6 +422,6 @@ ROM_START( chqflagj ) ROM_END -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT,MONITOR,COMPANY,FULLNAME,FLAGS -GAMEL( 1988, chqflag, 0, chqflag, chqflag, driver_device, 0, ROT90, "Konami", "Chequered Flag", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag ) -GAMEL( 1988, chqflagj, chqflag, chqflag, chqflagj, driver_device, 0, ROT90, "Konami", "Chequered Flag (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME, FLAGS, LAYOUT +GAMEL( 1988, chqflag, 0, chqflag, chqflag, chqflag_state, 0, ROT90, "Konami", "Chequered Flag", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag ) +GAMEL( 1988, chqflagj, chqflag, chqflag, chqflagj, chqflag_state, 0, ROT90, "Konami", "Chequered Flag (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag ) diff --git a/src/mame/drivers/chsuper.cpp b/src/mame/drivers/chsuper.cpp index 32ab18639a2..c5919845220 100644 --- a/src/mame/drivers/chsuper.cpp +++ b/src/mame/drivers/chsuper.cpp @@ -351,7 +351,7 @@ ADDRESS_MAP_END * Machine Drivers * ***************************/ -static MACHINE_CONFIG_START( chsuper, chsuper_state ) +static MACHINE_CONFIG_START( chsuper ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 4) /* HD64180RP8, 8 MHz? */ diff --git a/src/mame/drivers/cidelsa.cpp b/src/mame/drivers/cidelsa.cpp index 333b670de2d..7c696cf59b9 100644 --- a/src/mame/drivers/cidelsa.cpp +++ b/src/mame/drivers/cidelsa.cpp @@ -389,7 +389,7 @@ void cidelsa_state::machine_reset() /* Machine Drivers */ -static MACHINE_CONFIG_START( destryer, cidelsa_state ) +static MACHINE_CONFIG_START( destryer ) /* basic system hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, DESTRYER_CHR1) MCFG_CPU_PROGRAM_MAP(destryer_map) @@ -404,7 +404,7 @@ static MACHINE_CONFIG_START( destryer, cidelsa_state ) MCFG_FRAGMENT_ADD(destryer_video) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( destryera, cidelsa_state ) +static MACHINE_CONFIG_START( destryera ) /* basic system hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, DESTRYER_CHR1) MCFG_CPU_PROGRAM_MAP(destryera_map) @@ -419,7 +419,7 @@ static MACHINE_CONFIG_START( destryera, cidelsa_state ) MCFG_FRAGMENT_ADD(destryer_video) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( altair, cidelsa_state ) +static MACHINE_CONFIG_START( altair ) /* basic system hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, ALTAIR_CHR1) MCFG_CPU_PROGRAM_MAP(altair_map) @@ -448,7 +448,7 @@ static MACHINE_CONFIG_START( altair, cidelsa_state ) MCFG_FRAGMENT_ADD(altair_video) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( draco, draco_state ) +static MACHINE_CONFIG_START( draco ) /* basic system hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, DRACO_CHR1) MCFG_CPU_PROGRAM_MAP(draco_map) @@ -532,7 +532,7 @@ ROM_END /* Game Drivers */ -GAME( 1980, destryer, 0, destryer, destryer, driver_device, 0, ROT90, "Cidelsa", "Destroyer (Cidelsa) (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, destryera,destryer, destryera,destryer, driver_device, 0, ROT90, "Cidelsa", "Destroyer (Cidelsa) (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, altair, 0, altair, altair, driver_device, 0, ROT90, "Cidelsa", "Altair", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, draco, 0, draco, draco, driver_device, 0, ROT90, "Cidelsa", "Draco", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, destryer, 0, destryer, destryer, cidelsa_state, 0, ROT90, "Cidelsa", "Destroyer (Cidelsa) (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, destryera,destryer, destryera,destryer, cidelsa_state, 0, ROT90, "Cidelsa", "Destroyer (Cidelsa) (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, altair, 0, altair, altair, cidelsa_state, 0, ROT90, "Cidelsa", "Altair", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, draco, 0, draco, draco, draco_state, 0, ROT90, "Cidelsa", "Draco", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cinemat.cpp b/src/mame/drivers/cinemat.cpp index bae64d2f0d7..9f8ad15954e 100644 --- a/src/mame/drivers/cinemat.cpp +++ b/src/mame/drivers/cinemat.cpp @@ -149,7 +149,7 @@ READ8_MEMBER(cinemat_state::joystick_read) return 0; else { - int const xval = int16_t(m_maincpu->state_int(CCPU_X) << 4) >> 4; + int const xval = int16_t(m_maincpu->state_int(ccpu_cpu_device::CCPU_X) << 4) >> 4; return ((m_mux_select ? m_analog_x : m_analog_y).read_safe(0) - xval) < 0x800; } } @@ -274,7 +274,7 @@ READ8_MEMBER(cinemat_state::qb3_frame_r) WRITE8_MEMBER(cinemat_state::qb3_ram_bank_w) { - membank("bank1")->set_entry(m_maincpu->state_int(CCPU_P) & 3); + membank("bank1")->set_entry(m_maincpu->state_int(ccpu_cpu_device::CCPU_P) & 3); } @@ -958,11 +958,11 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( cinemat_nojmi_4k, cinemat_state ) +static MACHINE_CONFIG_START( cinemat_nojmi_4k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", CCPU, MASTER_CLOCK/4) - MCFG_CCPU_VECTOR_FUNC(ccpu_vector_delegate(FUNC(cinemat_state::cinemat_vector_callback),(cinemat_state*)owner)) + MCFG_CCPU_VECTOR_FUNC(ccpu_cpu_device::vector_delegate(FUNC(cinemat_state::cinemat_vector_callback),(cinemat_state*)owner)) MCFG_CCPU_EXTERNAL_FUNC(READ8(cinemat_state,joystick_read)) MCFG_CPU_PROGRAM_MAP(program_map_4k) MCFG_CPU_DATA_MAP(data_map) @@ -981,7 +981,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cinemat_jmi_4k, cinemat_nojmi_4k ) MCFG_CPU_MODIFY("maincpu") - MCFG_CCPU_VECTOR_FUNC(ccpu_vector_delegate(FUNC(cinemat_state::cinemat_vector_callback),(cinemat_state*)owner)) + MCFG_CCPU_VECTOR_FUNC(ccpu_cpu_device::vector_delegate(FUNC(cinemat_state::cinemat_vector_callback),(cinemat_state*)owner)) MCFG_CCPU_EXTERNAL_FUNC(DEVREAD8("maincpu",ccpu_cpu_device,read_jmi)) MACHINE_CONFIG_END @@ -1463,27 +1463,27 @@ DRIVER_INIT_MEMBER(cinemat_state,qb3) * *************************************/ -GAME( 1977, spacewar, 0, spacewar, spacewar, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Space Wars", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1978, spaceshp, spacewar,spacewar, spaceshp, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Sega license)", "Space Ship", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAMEL(1979, barrier, 0, barrier, barrier, driver_device, 0, ORIENTATION_FLIP_X ^ ROT270, "Cinematronics (Vectorbeam license)", "Barrier", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_barrier ) // developed by Cinematronics, then (when they noticed it wasn't going to be a successful game) sold to Vectorbeam, and ultimately back in the hands of Cinematronics again after they bought the dying company Vectorbeam +GAME( 1977, spacewar, 0, spacewar, spacewar, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Space Wars", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1978, spaceshp, spacewar,spacewar, spaceshp, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics (Sega license)", "Space Ship", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL(1979, barrier, 0, barrier, barrier, cinemat_state, 0, ORIENTATION_FLIP_X ^ ROT270, "Cinematronics (Vectorbeam license)", "Barrier", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_barrier ) // developed by Cinematronics, then (when they noticed it wasn't going to be a successful game) sold to Vectorbeam, and ultimately back in the hands of Cinematronics again after they bought the dying company Vectorbeam GAME( 1979, speedfrk, 0, speedfrk, speedfrk, cinemat_state, speedfrk, ORIENTATION_FLIP_Y, "Vectorbeam", "Speed Freak", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, starhawk, 0, starhawk, starhawk, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Hawk", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, starhawk, 0, starhawk, starhawk, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Hawk", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAMEL(1979, sundance, 0, sundance, sundance, cinemat_state, sundance, ORIENTATION_FLIP_X ^ ROT270, "Cinematronics", "Sundance", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_sundance ) GAMEL(1979, tailg, 0, tailg, tailg, cinemat_state, tailg, ORIENTATION_FLIP_Y, "Cinematronics", "Tailgunner", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_tailg ) -GAME( 1979, warrior, 0, warrior, warrior, driver_device, 0, ORIENTATION_FLIP_Y, "Vectorbeam", "Warrior", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAMEL(1980, armora, 0, armora, armora, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Armor Attack", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_armora ) -GAMEL(1980, armorap, armora, armora, armora, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Armor Attack (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_armora ) -GAMEL(1980, armorar, armora, armora, armora, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Rock-Ola license)", "Armor Attack (Rock-Ola)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_armora ) -GAME( 1980, ripoff, 0, ripoff, ripoff, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Rip Off", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAMEL(1980, starcas, 0, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (version 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) -GAMEL(1980, starcas1, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (older)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) -GAMEL(1980, starcasp, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) -GAMEL(1980, starcase, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Mottoeis license)", "Star Castle (Mottoeis)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) -GAMEL(1980, stellcas, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "bootleg (Elettronolo)", "Stellar Castle (Elettronolo)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) -GAMEL(1981, spaceftr, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Zaccaria license)", "Space Fortress (Zaccaria)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) -GAMEL(1981, solarq, 0, solarq, solarq, driver_device, 0, ORIENTATION_FLIP_Y ^ ORIENTATION_FLIP_X, "Cinematronics", "Solar Quest", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_solarq ) +GAME( 1979, warrior, 0, warrior, warrior, cinemat_state, 0, ORIENTATION_FLIP_Y, "Vectorbeam", "Warrior", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL(1980, armora, 0, armora, armora, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Armor Attack", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_armora ) +GAMEL(1980, armorap, armora, armora, armora, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Armor Attack (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_armora ) +GAMEL(1980, armorar, armora, armora, armora, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics (Rock-Ola license)", "Armor Attack (Rock-Ola)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_armora ) +GAME( 1980, ripoff, 0, ripoff, ripoff, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Rip Off", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL(1980, starcas, 0, starcas, starcas, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (version 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) +GAMEL(1980, starcas1, starcas, starcas, starcas, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (older)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) +GAMEL(1980, starcasp, starcas, starcas, starcas, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) +GAMEL(1980, starcase, starcas, starcas, starcas, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics (Mottoeis license)", "Star Castle (Mottoeis)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) +GAMEL(1980, stellcas, starcas, starcas, starcas, cinemat_state, 0, ORIENTATION_FLIP_Y, "bootleg (Elettronolo)", "Stellar Castle (Elettronolo)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) +GAMEL(1981, spaceftr, starcas, starcas, starcas, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics (Zaccaria license)", "Space Fortress (Zaccaria)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas ) +GAMEL(1981, solarq, 0, solarq, solarq, cinemat_state, 0, ORIENTATION_FLIP_Y ^ ORIENTATION_FLIP_X, "Cinematronics", "Solar Quest", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_solarq ) GAME( 1981, boxingb, 0, boxingb, boxingb, cinemat_state, boxingb, ORIENTATION_FLIP_Y, "Cinematronics", "Boxing Bugs", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAMEL(1981, wotw, 0, wotw, wotw, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "War of the Worlds", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_wotw ) -GAME( 1981, wotwc, wotw, wotwc, wotw, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "War of the Worlds (color)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAMEL(1982, demon, 0, demon, demon, driver_device, 0, ORIENTATION_FLIP_Y, "Rock-Ola", "Demon", MACHINE_SUPPORTS_SAVE, layout_demon ) +GAMEL(1981, wotw, 0, wotw, wotw, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "War of the Worlds", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_wotw ) +GAME( 1981, wotwc, wotw, wotwc, wotw, cinemat_state, 0, ORIENTATION_FLIP_Y, "Cinematronics", "War of the Worlds (color)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL(1982, demon, 0, demon, demon, cinemat_state, 0, ORIENTATION_FLIP_Y, "Rock-Ola", "Demon", MACHINE_SUPPORTS_SAVE, layout_demon ) GAME( 1982, qb3, 0, qb3, qb3, cinemat_state, qb3, ORIENTATION_FLIP_Y, "Rock-Ola", "QB-3 (prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/circus.cpp b/src/mame/drivers/circus.cpp index facf52901b5..10f3399e1ec 100644 --- a/src/mame/drivers/circus.cpp +++ b/src/mame/drivers/circus.cpp @@ -282,7 +282,7 @@ void circus_state::machine_reset() } -static MACHINE_CONFIG_START( circus, circus_state ) +static MACHINE_CONFIG_START( circus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_11_289MHz / 16) /* 705.562kHz */ @@ -317,7 +317,7 @@ static MACHINE_CONFIG_START( circus, circus_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( robotbwl, circus_state ) +static MACHINE_CONFIG_START( robotbwl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_11_289MHz / 16) /* 705.562kHz */ @@ -359,7 +359,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(circus_state::crash_scanline) m_maincpu->set_input_line(0, ASSERT_LINE); } -static MACHINE_CONFIG_START( crash, circus_state ) +static MACHINE_CONFIG_START( crash ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_11_289MHz / 16) /* 705.562kHz */ @@ -393,7 +393,7 @@ static MACHINE_CONFIG_START( crash, circus_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ripcord, circus_state ) +static MACHINE_CONFIG_START( ripcord ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_11_289MHz / 16) /* 705.562kHz */ @@ -580,9 +580,9 @@ DRIVER_INIT_MEMBER(circus_state,ripcord) } -GAMEL(1977, circus, 0, circus, circus, circus_state, circus, ROT0, "Exidy / Taito", "Circus / Acrobat TV", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) -GAMEL(1977, springbd, circus, circus, circus, circus_state, circus, ROT0, "bootleg (Sub-Electro)", "Springboard (bootleg of Circus)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // looks like a text hack, but we've seen 2 identical copies so it's worth supporting +GAMEL(1977, circus, 0, circus, circus, circus_state, circus, ROT0, "Exidy / Taito", "Circus / Acrobat TV", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) +GAMEL(1977, springbd, circus, circus, circus, circus_state, circus, ROT0, "bootleg (Sub-Electro)", "Springboard (bootleg of Circus)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // looks like a text hack, but we've seen 2 identical copies so it's worth supporting GAME( 1977, robotbwl, 0, robotbwl, robotbwl, circus_state, robotbwl, ROT0, "Exidy", "Robot Bowl", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAMEL(1979, crash, 0, crash, crash, circus_state, crash, ROT0, "Exidy", "Crash", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash ) -GAMEL(1979, smash, crash, crash, crash, circus_state, crash, ROT0, "bootleg", "Smash (Crash bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash ) // looks like a text hack, but it also had a different bezel -GAME( 1979, ripcord, 0, ripcord, ripcord, circus_state, ripcord, ROT0, "Exidy", "Rip Cord", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAMEL(1979, crash, 0, crash, crash, circus_state, crash, ROT0, "Exidy", "Crash", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash ) +GAMEL(1979, smash, crash, crash, crash, circus_state, crash, ROT0, "bootleg", "Smash (Crash bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash ) // looks like a text hack, but it also had a different bezel +GAME( 1979, ripcord, 0, ripcord, ripcord, circus_state, ripcord, ROT0, "Exidy", "Rip Cord", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/circusc.cpp b/src/mame/drivers/circusc.cpp index c2ca81a6df1..3be46e59f90 100644 --- a/src/mame/drivers/circusc.cpp +++ b/src/mame/drivers/circusc.cpp @@ -337,7 +337,7 @@ INTERRUPT_GEN_MEMBER(circusc_state::vblank_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( circusc, circusc_state ) +static MACHINE_CONFIG_START( circusc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI1, 2048000) /* 2 MHz? */ diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp index f458f4570e9..55367f347e0 100644 --- a/src/mame/drivers/cischeat.cpp +++ b/src/mame/drivers/cischeat.cpp @@ -1668,21 +1668,21 @@ INPUT_PORTS_END static INPUT_PORTS_START( captflag ) PORT_START("Buttons") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) // up left - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) // down left - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) // up right - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) // down right + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_NAME("Left Red Stick Up") + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_NAME("Left Red Stick Down") + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_NAME("Right White Stick Up") + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_NAME("Right White Stick Down") PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1) // coin 2 - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 ) // decide + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Decide Button") // decide PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) // coin 1 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE ) // test - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) // select + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Select Button") // select PORT_BIT( 0x4000, IP_ACTIVE_HIGH,IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // prize sensor PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // potery on schems? @@ -1909,7 +1909,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cischeat_state::bigrun_scanline) -static MACHINE_CONFIG_START( bigrun, cischeat_state ) +static MACHINE_CONFIG_START( bigrun ) /* basic machine hardware */ MCFG_CPU_ADD("cpu1", M68000, 10000000) @@ -1959,11 +1959,11 @@ static MACHINE_CONFIG_START( bigrun, cischeat_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) - MCFG_OKIM6295_ADD("oki1", STD_OKI_CLOCK, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", STD_OKI_CLOCK, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) - MCFG_OKIM6295_ADD("oki2", STD_OKI_CLOCK, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", STD_OKI_CLOCK, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) MACHINE_CONFIG_END @@ -2087,7 +2087,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cischeat_state::scudhamm_scanline) m_maincpu->set_input_line(2, HOLD_LINE); } -static MACHINE_CONFIG_START( scudhamm, cischeat_state ) +static MACHINE_CONFIG_START( scudhamm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, 12000000) @@ -2117,11 +2117,11 @@ static MACHINE_CONFIG_START( scudhamm, cischeat_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) - MCFG_OKIM6295_ADD("oki2", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) MACHINE_CONFIG_END @@ -2174,7 +2174,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cischeat_state::captflag_scanline) m_maincpu->set_input_line(3, HOLD_LINE); } -static MACHINE_CONFIG_START( captflag, cischeat_state ) +static MACHINE_CONFIG_START( captflag ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_24MHz / 2) // TMP68000P-12 @@ -2213,12 +2213,12 @@ static MACHINE_CONFIG_START( captflag, cischeat_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, captflag_oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) - MCFG_OKIM6295_ADD("oki2", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, captflag_oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) @@ -3602,13 +3602,13 @@ DRIVER_INIT_MEMBER(cischeat_state, captflag) ***************************************************************************/ -GAMEL( 1989, bigrun, 0, bigrun, bigrun, cischeat_state, bigrun, ROT0, "Jaleco", "Big Run (11th Rallye version)", MACHINE_IMPERFECT_GRAPHICS, layout_cischeat ) // there's a 13th Rallye version (1991) (only on the SNES? Could just be updated title, 1989 -> 11th Paris-Dakar ...) +GAMEL( 1989, bigrun, 0, bigrun, bigrun, cischeat_state, bigrun, ROT0, "Jaleco", "Big Run (11th Rallye version)", MACHINE_IMPERFECT_GRAPHICS, layout_cischeat ) // there's a 13th Rallye version (1991) (only on the SNES? Could just be updated title, 1989 -> 11th Paris-Dakar ...) GAMEL( 1990, cischeat, 0, cischeat, cischeat, cischeat_state, cischeat, ROT0, "Jaleco", "Cisco Heat", MACHINE_IMPERFECT_GRAPHICS, layout_cischeat ) GAMEL( 1991, f1gpstar, 0, f1gpstar, f1gpstar, cischeat_state, f1gpstar, ROT0, "Jaleco", "Grand Prix Star (v3.0)", MACHINE_IMPERFECT_GRAPHICS, layout_f1gpstar ) GAMEL( 1991, f1gpstaro,f1gpstar, f1gpstar, f1gpstar, cischeat_state, f1gpstar, ROT0, "Jaleco", "Grand Prix Star (v2.0)", MACHINE_IMPERFECT_GRAPHICS, layout_f1gpstar ) -GAME ( 1992, armchmp2, 0, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v2.6", MACHINE_IMPERFECT_GRAPHICS ) -GAME ( 1992, armchmp2o,armchmp2, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v1.7", MACHINE_IMPERFECT_GRAPHICS ) -GAME ( 1992, wildplt, 0, wildplt, wildplt, cischeat_state, f1gpstar, ROT0, "Jaleco", "Wild Pilot", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // busted timings +GAME ( 1992, armchmp2, 0, armchmp2, armchmp2, cischeat_state, 0, ROT270, "Jaleco", "Arm Champs II v2.6", MACHINE_IMPERFECT_GRAPHICS ) +GAME ( 1992, armchmp2o,armchmp2, armchmp2, armchmp2, cischeat_state, 0, ROT270, "Jaleco", "Arm Champs II v1.7", MACHINE_IMPERFECT_GRAPHICS ) +GAME ( 1992, wildplt, 0, wildplt, wildplt, cischeat_state, f1gpstar, ROT0, "Jaleco", "Wild Pilot", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // busted timings GAMEL( 1993, f1gpstr2, 0, f1gpstr2, f1gpstr2, cischeat_state, f1gpstar, ROT0, "Jaleco", "F-1 Grand Prix Star II", MACHINE_IMPERFECT_GRAPHICS, layout_f1gpstar ) GAME ( 1993, captflag, 0, captflag, captflag, cischeat_state, captflag, ROT270, "Jaleco", "Captain Flag (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME ( 1994, scudhamm, 0, scudhamm, scudhamm, driver_device, 0, ROT270, "Jaleco", "Scud Hammer", MACHINE_IMPERFECT_GRAPHICS ) +GAME ( 1994, scudhamm, 0, scudhamm, scudhamm, cischeat_state, 0, ROT270, "Jaleco", "Scud Hammer", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/citycon.cpp b/src/mame/drivers/citycon.cpp index f78d856f761..366ff4a5ef0 100644 --- a/src/mame/drivers/citycon.cpp +++ b/src/mame/drivers/citycon.cpp @@ -186,7 +186,7 @@ void citycon_state::machine_reset() } -static MACHINE_CONFIG_START( citycon, citycon_state ) +static MACHINE_CONFIG_START( citycon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2048000) /* 2.048 MHz ??? */ diff --git a/src/mame/drivers/clayshoo.cpp b/src/mame/drivers/clayshoo.cpp index 410042c304c..5daba43baea 100644 --- a/src/mame/drivers/clayshoo.cpp +++ b/src/mame/drivers/clayshoo.cpp @@ -310,7 +310,7 @@ void clayshoo_state::machine_reset() m_analog_port_val = 0; } -static MACHINE_CONFIG_START( clayshoo, clayshoo_state ) +static MACHINE_CONFIG_START( clayshoo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,5068000/4) /* 5.068/4 Mhz (divider is a guess) */ @@ -360,4 +360,4 @@ ROM_END * *************************************/ -GAME( 1979, clayshoo, 0, clayshoo, clayshoo, driver_device, 0, ROT0, "Allied Leisure", "Clay Shoot", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, clayshoo, 0, clayshoo, clayshoo, clayshoo_state, 0, ROT0, "Allied Leisure", "Clay Shoot", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/clcd.cpp b/src/mame/drivers/clcd.cpp index 411122659f5..5ac1b9124fd 100644 --- a/src/mame/drivers/clcd.cpp +++ b/src/mame/drivers/clcd.cpp @@ -734,7 +734,7 @@ static INPUT_PORTS_START( clcd ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // clears screen and goes into infinite loop INPUT_PORTS_END -static MACHINE_CONFIG_START(clcd, clcd_state) +static MACHINE_CONFIG_START(clcd) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02, 2000000) MCFG_CPU_PROGRAM_MAP(clcd_mem) @@ -840,5 +840,5 @@ ROM_START( clcd ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, clcd, 0, 0, clcd, clcd, driver_device, 0, "Commodore Business Machines", "LCD (Prototype)", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1985, clcd, 0, 0, clcd, clcd, clcd_state, 0, "Commodore Business Machines", "LCD (Prototype)", 0 ) diff --git a/src/mame/drivers/cliffhgr.cpp b/src/mame/drivers/cliffhgr.cpp index 71771216d4b..c61458986f5 100644 --- a/src/mame/drivers/cliffhgr.cpp +++ b/src/mame/drivers/cliffhgr.cpp @@ -674,7 +674,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( cliffhgr, cliffhgr_state ) +static MACHINE_CONFIG_START( cliffhgr ) MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4MHz */ MCFG_CPU_PROGRAM_MAP(mainmem) @@ -684,8 +684,8 @@ static MACHINE_CONFIG_START( cliffhgr, cliffhgr_state ) MCFG_NVRAM_ADD_0FILL("nvram") MCFG_LASERDISC_PR8210_ADD("laserdisc") - MCFG_LASERDISC_OVERLAY_DEVICE(TMS9928A_TOTAL_HORZ, TMS9928A_TOTAL_VERT_NTSC, "tms9928a", tms9928a_device, screen_update) - MCFG_LASERDISC_OVERLAY_CLIP(TMS9928A_HORZ_DISPLAY_START-12, TMS9928A_HORZ_DISPLAY_START+32*8+12-1, TMS9928A_VERT_DISPLAY_START_NTSC - 12, TMS9928A_VERT_DISPLAY_START_NTSC+24*8+12-1) + MCFG_LASERDISC_OVERLAY_DEVICE(tms9928a_device::TOTAL_HORZ, tms9928a_device::TOTAL_VERT_NTSC, "tms9928a", tms9928a_device, screen_update) + MCFG_LASERDISC_OVERLAY_CLIP(tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START+32*8+12-1, tms9928a_device::VERT_DISPLAY_START_NTSC - 12, tms9928a_device::VERT_DISPLAY_START_NTSC+24*8+12-1) /* start with the TMS9928a video configuration */ MCFG_DEVICE_ADD( "tms9928a", TMS9128, XTAL_10_738635MHz / 2 ) /* TMS9128NL on the board */ @@ -781,7 +781,7 @@ DRIVER_INIT_MEMBER(cliffhgr_state,cliff) * *************************************/ -GAME( 1983, cliffhgr, 0, cliffhgr, cliffhgr, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Cliff Hanger (set 1)", 0) -GAME( 1983, cliffhgra, cliffhgr, cliffhgr, cliffhgra, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Cliff Hanger (set 2)", 0) -GAME( 1983, cliffhgra2,cliffhgr, cliffhgr, cliffhgra, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Cliff Hanger (set 3)", 0) -GAME( 1983, goaltogo, 0, cliffhgr, goaltogo, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Goal To Go", MACHINE_NOT_WORKING) +GAME( 1983, cliffhgr, 0, cliffhgr, cliffhgr, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Cliff Hanger (set 1)", 0 ) +GAME( 1983, cliffhgra, cliffhgr, cliffhgr, cliffhgra, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Cliff Hanger (set 2)", 0 ) +GAME( 1983, cliffhgra2,cliffhgr, cliffhgr, cliffhgra, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Cliff Hanger (set 3)", 0 ) +GAME( 1983, goaltogo, 0, cliffhgr, goaltogo, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Goal To Go", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/cloak.cpp b/src/mame/drivers/cloak.cpp index 1d2b38bb31f..ecaba50da9f 100644 --- a/src/mame/drivers/cloak.cpp +++ b/src/mame/drivers/cloak.cpp @@ -313,7 +313,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( cloak, cloak_state ) +static MACHINE_CONFIG_START( cloak ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1000000) /* 1 MHz ???? */ @@ -605,11 +605,11 @@ ROM_END * *************************************/ -GAME( 1983, cloak, 0, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (rev 5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, cloaksp, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (Spanish)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, cloakfr, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (French)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, cloakgr, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (German)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, agentx4, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, agentx3, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, agentx2, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, agentx1, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, cloak, 0, cloak, cloak, cloak_state, 0, ROT0, "Atari", "Cloak & Dagger (rev 5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, cloaksp, cloak, cloak, cloak, cloak_state, 0, ROT0, "Atari", "Cloak & Dagger (Spanish)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, cloakfr, cloak, cloak, cloak, cloak_state, 0, ROT0, "Atari", "Cloak & Dagger (French)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, cloakgr, cloak, cloak, cloak, cloak_state, 0, ROT0, "Atari", "Cloak & Dagger (German)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, agentx4, cloak, cloak, cloak, cloak_state, 0, ROT0, "Atari", "Agent X (prototype, rev 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, agentx3, cloak, cloak, cloak, cloak_state, 0, ROT0, "Atari", "Agent X (prototype, rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, agentx2, cloak, cloak, cloak, cloak_state, 0, ROT0, "Atari", "Agent X (prototype, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, agentx1, cloak, cloak, cloak, cloak_state, 0, ROT0, "Atari", "Agent X (prototype, rev 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cloud9.cpp b/src/mame/drivers/cloud9.cpp index a50ff3ad021..3137af7189d 100644 --- a/src/mame/drivers/cloud9.cpp +++ b/src/mame/drivers/cloud9.cpp @@ -404,7 +404,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( cloud9, cloud9_state ) +static MACHINE_CONFIG_START( cloud9 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/8) @@ -498,5 +498,5 @@ ROM_END * *************************************/ -GAME( 1983, cloud9, 0, cloud9, cloud9, driver_device, 0, ROT0, "Atari", "Cloud 9 (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, firebeas, 0, cloud9, firebeas, driver_device, 0, ROT0, "Atari", "Firebeast (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, cloud9, 0, cloud9, cloud9, cloud9_state, 0, ROT0, "Atari", "Cloud 9 (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, firebeas, 0, cloud9, firebeas, cloud9_state, 0, ROT0, "Atari", "Firebeast (prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/clowndwn.cpp b/src/mame/drivers/clowndwn.cpp index dc1f154534e..d169924d2c9 100644 --- a/src/mame/drivers/clowndwn.cpp +++ b/src/mame/drivers/clowndwn.cpp @@ -41,7 +41,7 @@ void clowndwn_state::machine_reset() } -static MACHINE_CONFIG_START( clowndwn, clowndwn_state ) +static MACHINE_CONFIG_START( clowndwn ) /* basic machine hardware */ // MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown (vectors at end? 6xxx ?) @@ -63,4 +63,4 @@ ROM_START( clowndwn ) ROM_LOAD( "CLWNROLL.Z9", 0x1000, 0x1000, CRC(aeef885e) SHA1(bc6805b638625a347e1288a927ce30e030afe9e3) ) ROM_END -GAME( 1987, clowndwn, 0, clowndwn, clowndwn, driver_device, 0, ROT0, "Elwood Electronics", "Clown Roll Down (Elwood)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, clowndwn, 0, clowndwn, clowndwn, clowndwn_state, 0, ROT0, "Elwood Electronics", "Clown Roll Down (Elwood)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/clpoker.cpp b/src/mame/drivers/clpoker.cpp new file mode 100644 index 00000000000..561bb2ef758 --- /dev/null +++ b/src/mame/drivers/clpoker.cpp @@ -0,0 +1,311 @@ +// license:BSD-3-Clause +// copyright-holders:AJR + +/* +Poker Genius (misspelled "Genuis" on title screen) by Chain Leisure + +The following string is copied from the main CPU ROM into NVRAM: +"CLPOK GAME designed by FULL-LIFE at 02-01-1994" + + +PCB is marked Chain Leisure CL-001 + +- 1x Z0840004PSC Z80 CPU +- 1x 12.000 XTAL (second XTAL location is unpopulated) +- 1x AY38910A/P sound chip +- 2x M5L8255AP-5 +- 1x HM86171 RAMDAC +- 1x GM76C88L-15 SRAM (8,192 x 8 Bit) +- 1x HY6116ALP-12 CMOS SRAM (2,048 x 8 Bit) +- 1x MACH110-20JC CMOS +- 2x ATV2500H PLDs +- 1x PLSI1024-60LJ CPLD +- 1x GAL20V8A-15LNC +- 1x (should be 2x) bank of 8 dip-switches + +There also are unpopulated locations that might fit a YM3812 and YM3014. +*/ + +#include "emu.h" +#include "screen.h" +#include "speaker.h" +#include "cpu/z80/z80.h" +#include "machine/i8255.h" +#include "machine/nvram.h" +#include "machine/ticket.h" +#include "sound/ay8910.h" +#include "video/ramdac.h" + +class clpoker_state : public driver_device +{ +public: + clpoker_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_gfxdecode(*this, "gfxdecode") + , m_hopper(*this, "hopper") + , m_videoram(*this, "videoram") + { + } + + DECLARE_WRITE8_MEMBER(output_a_w); + DECLARE_WRITE8_MEMBER(output_b_w); + DECLARE_WRITE8_MEMBER(output_c_w); + + DECLARE_WRITE8_MEMBER(videoram_w); + DECLARE_WRITE_LINE_MEMBER(vblank_w); + + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + +protected: + virtual void video_start() override; + +private: + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_hopper; + required_shared_ptr m_videoram; + + tilemap_t *m_bg_tilemap; + tilemap_t *m_fg_tilemap; + + bool m_nmi_enable; +}; + +static ADDRESS_MAP_START( prg_map, AS_PROGRAM, 8, clpoker_state ) + AM_RANGE(0x0000, 0xbfff) AM_ROM + AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") + AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") + AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("ramdac", ramdac_device, index_w) + AM_RANGE(0xf001, 0xf001) AM_DEVWRITE("ramdac", ramdac_device, pal_w) + AM_RANGE(0xf002, 0xf002) AM_DEVWRITE("ramdac", ramdac_device, mask_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( io_map, AS_IO, 8, clpoker_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi_outputs", i8255_device, read, write) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi_inputs", i8255_device, read, write) + AM_RANGE(0x30, 0x30) AM_DEVREAD("aysnd", ay8910_device, data_r) + AM_RANGE(0x32, 0x32) AM_DEVWRITE("aysnd", ay8910_device, data_w) + AM_RANGE(0x34, 0x34) AM_DEVWRITE("aysnd", ay8910_device, address_w) + AM_RANGE(0xc0, 0xc0) AM_READNOP // mystery read at startup +ADDRESS_MAP_END + +static ADDRESS_MAP_START( ramdac_map, AS_0, 8, clpoker_state ) + AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) +ADDRESS_MAP_END + +WRITE8_MEMBER(clpoker_state::output_a_w) +{ + if (data != 0xff) + { + machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); + m_hopper->motor_w(BIT(data, 4)); + } +} + +WRITE8_MEMBER(clpoker_state::output_b_w) +{ +} + +WRITE8_MEMBER(clpoker_state::output_c_w) +{ + m_nmi_enable = BIT(data, 1); + if (!m_nmi_enable) + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); +} + +static INPUT_PORTS_START( clpoker ) + PORT_START("INA") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) + PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("INB") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("INC") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Double Up") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Small") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Big") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5 / Bet") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel / Take Score") + + PORT_START("DSW1") // $E012 + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unknown ) ) // $E013 + PORT_DIPSETTING( 0x03, "0" ) + PORT_DIPSETTING( 0x02, "1" ) + PORT_DIPSETTING( 0x01, "2" ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coinage ) ) // $E014 + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x08, "1 Coin/10 Credits" ) + PORT_DIPSETTING( 0x04, "1 Coin/20 Credits" ) + PORT_DIPSETTING( 0x00, "1 Coin/50 Credits" ) + PORT_DIPNAME( 0x30, 0x30, "Key In/Out" ) // $E015 + PORT_DIPSETTING( 0x30, "50 Credits" ) + PORT_DIPSETTING( 0x20, "100 Credits" ) + PORT_DIPSETTING( 0x10, "200 Credits" ) + PORT_DIPSETTING( 0x00, "500 Credits" ) + PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" ) // $E016 + PORT_DIPSETTING( 0xc0, "20" ) + PORT_DIPSETTING( 0x80, "40" ) + PORT_DIPSETTING( 0x40, "60" ) + PORT_DIPSETTING( 0x00, "80" ) + + PORT_START("DSW2") // $E017 + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unused ) ) // $E018 + PORT_DIPSETTING( 0x03, "0" ) + PORT_DIPSETTING( 0x02, "1" ) + PORT_DIPSETTING( 0x01, "2" ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unused ) ) // $E019 + PORT_DIPSETTING( 0x0c, "0" ) + PORT_DIPSETTING( 0x08, "1" ) + PORT_DIPSETTING( 0x04, "2" ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Unused ) ) // $E01A + PORT_DIPSETTING( 0x30, "0" ) + PORT_DIPSETTING( 0x20, "1" ) + PORT_DIPSETTING( 0x10, "2" ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Unused ) ) // $E01B + PORT_DIPSETTING( 0xc0, "0" ) + PORT_DIPSETTING( 0x80, "1" ) + PORT_DIPSETTING( 0x40, "2" ) + PORT_DIPSETTING( 0x00, "3" ) +INPUT_PORTS_END + + +TILE_GET_INFO_MEMBER(clpoker_state::get_bg_tile_info) +{ + u16 tileno = (m_videoram[tile_index] << 8) | m_videoram[tile_index + 0x0800]; + SET_TILE_INFO_MEMBER(0, tileno, 0, 0); +} + +TILE_GET_INFO_MEMBER(clpoker_state::get_fg_tile_info) +{ + u16 tileno = (m_videoram[tile_index + 0x1000] << 8) | m_videoram[tile_index + 0x1800]; + SET_TILE_INFO_MEMBER(0, tileno, 0, 0); +} + +WRITE8_MEMBER(clpoker_state::videoram_w) +{ + m_videoram[offset] = data; + (BIT(offset, 12) ? m_fg_tilemap : m_bg_tilemap)->mark_tile_dirty(offset & 0x07ff); +} + +void clpoker_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clpoker_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clpoker_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap->set_transparent_pen(0); + + m_nmi_enable = false; + save_item(NAME(m_nmi_enable)); +} + +WRITE_LINE_MEMBER(clpoker_state::vblank_w) +{ + if (m_nmi_enable) + m_maincpu->set_input_line(INPUT_LINE_NMI, state); +} + +u32 clpoker_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + + +static const gfx_layout gfx_layout = +{ + 8,8, + RGN_FRAC(1,1), + 8, + { 0, 1, 2, 3, 4, 5, 6, 7 }, + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 }, + 8*64, +}; + + +static GFXDECODE_START( clpoker ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_layout, 0x0, 1 ) +GFXDECODE_END + + +static MACHINE_CONFIG_START( clpoker ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 3) // Z0840004PSC, divider not verified + MCFG_CPU_PROGRAM_MAP(prg_map) + MCFG_CPU_IO_MAP(io_map) + + MCFG_NVRAM_ADD_0FILL("nvram") // HY6116ALP-12 + + MCFG_DEVICE_ADD("ppi_outputs", I8255, 0) // M5L8255AP-5 + MCFG_I8255_OUT_PORTA_CB(WRITE8(clpoker_state, output_a_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(clpoker_state, output_b_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(clpoker_state, output_c_w)) + + MCFG_DEVICE_ADD("ppi_inputs", I8255, 0) // M5L8255AP-5 + MCFG_I8255_IN_PORTA_CB(IOPORT("INA")) + MCFG_I8255_IN_PORTB_CB(IOPORT("INB")) + MCFG_I8255_IN_PORTC_CB(IOPORT("INC")) + + MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(60), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW) + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) // wrong + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) // wrong + MCFG_SCREEN_SIZE(64*8, 32*8) // wrong + MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) // probably right + MCFG_SCREEN_UPDATE_DRIVER(clpoker_state, screen_update) + MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(clpoker_state, vblank_w)) + + MCFG_PALETTE_ADD("palette", 0x100) + MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") // HM86171 + + MCFG_GFXDECODE_ADD("gfxdecode", "palette", clpoker) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("aysnd", AY8910, XTAL_12MHz / 8) // AY38910A/P, divider not verified + MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW1")) + MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2")) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_CONFIG_END + + +ROM_START( clpoker ) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD( "5.u7", 0x00000, 0x10000, CRC(96b07104) SHA1(24ec1e44795add0db6215a7687ac2fd3b636980b) ) // 27512, 2nd half empty? + + ROM_REGION(0x80000, "gfx1", 0) + ROM_LOAD32_BYTE( "1.u1", 0x00000, 0x20000, CRC(d1b5a3f1) SHA1(5a08be220b81d9502f1ed61966916384925ba569) ) // 27C010 + ROM_LOAD32_BYTE( "2.u2", 0x00001, 0x20000, CRC(00abb6b2) SHA1(3123c2e18d987895cb1d3359bf2765343289037b) ) // 27C010 + ROM_LOAD32_BYTE( "3.u3", 0x00002, 0x20000, CRC(fcccef5a) SHA1(a0bdba24a6a9ca8aa8b7fdfee10ace3cb17600b4) ) // 27C010 + ROM_LOAD32_BYTE( "4.u4", 0x00003, 0x20000, CRC(be707d36) SHA1(b1cb9dc387a54d895cfaedfbc015598151ddab38) ) // 27C010 + + ROM_REGION(0x1000, "pld", 0) + ROM_LOAD( "plsi1024-60lj.pl1", 0x00, 0x200, NO_DUMP ) + ROM_LOAD( "atv2500h.pl2", 0x00, 0x200, NO_DUMP ) + ROM_LOAD( "atv2500h.pl3", 0x00, 0x200, NO_DUMP ) + ROM_LOAD( "mach110-20jc.pl4", 0x00, 0x200, NO_DUMP ) + ROM_LOAD( "gal20v8a.pl5", 0x00, 0x157, NO_DUMP ) +ROM_END + + +GAME( 1994, clpoker, 0, clpoker, clpoker, clpoker_state, 0, ROT0, "Chain Leisure", "Poker Genius", MACHINE_SUPPORTS_SAVE ) // Year taken from string in main CPU ROM diff --git a/src/mame/drivers/clshroad.cpp b/src/mame/drivers/clshroad.cpp index 8ec556b45d4..ebc199ff253 100644 --- a/src/mame/drivers/clshroad.cpp +++ b/src/mame/drivers/clshroad.cpp @@ -16,10 +16,13 @@ Sound Chips : Custom (NAMCO) XTAL : 18.432 MHz -Notes: - -- firebatl video (https://tmblr.co/ZgJvzv2E2C_z-) shows transparency for the - text layer is not correctly emulated. +TODO: +- few unused video registers (2 and 3); +- clshroad: erratic gameplay speed; +- firebatl: video (https://tmblr.co/ZgJvzv2E2C_z-) shows transparency for the + text layer is not correctly emulated, fixed by initializing VRAM to 0xf0? (that layer seems unused by this game); +- firebatl: bad sprite colors; +- firebatl: remove ROM patch; ***************************************************************************/ @@ -31,11 +34,16 @@ Notes: #include "screen.h" #include "speaker.h" +/* unknown divider, assume /5 */ +#define MAIN_CLOCK XTAL_18_432MHz/5 void clshroad_state::machine_reset() { flip_screen_set(0); m_main_irq_mask = m_sound_irq_mask = 0; + // not initialized by HW, matches grey background on first title screen + for(int i = 0;i<0x800;i++) + m_vram_0[i] = 0xf0; } @@ -268,14 +276,14 @@ INTERRUPT_GEN_MEMBER(clshroad_state::sound_timer_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( firebatl, clshroad_state ) +static MACHINE_CONFIG_START( firebatl ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, 3000000) /* ? */ + MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK) /* ? */ MCFG_CPU_PROGRAM_MAP(clshroad_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", clshroad_state, vblank_irq) - MCFG_CPU_ADD("audiocpu", Z80, 3000000) /* ? */ + MCFG_CPU_ADD("audiocpu", Z80, MAIN_CLOCK) /* ? */ MCFG_CPU_PROGRAM_MAP(clshroad_sound_map) MCFG_CPU_PERIODIC_INT_DRIVER(clshroad_state, sound_timer_irq, 120) /* periodic interrupt, don't know about the frequency */ @@ -302,17 +310,17 @@ static MACHINE_CONFIG_START( firebatl, clshroad_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( clshroad, clshroad_state ) +static MACHINE_CONFIG_START( clshroad ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/4) /* ? real speed unknown. 3MHz is too low and causes problems */ + MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK) /* ? real speed unknown. 3MHz is too low and causes problems */ MCFG_CPU_PROGRAM_MAP(clshroad_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", clshroad_state, irq0_line_hold) /* IRQ, no NMI */ + MCFG_CPU_VBLANK_INT_DRIVER("screen", clshroad_state, vblank_irq) - MCFG_CPU_ADD("audiocpu", Z80, XTAL_18_432MHz/6) /* ? */ + MCFG_CPU_ADD("audiocpu", Z80, MAIN_CLOCK) /* ? */ MCFG_CPU_PROGRAM_MAP(clshroad_sound_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", clshroad_state, irq0_line_hold) /* IRQ, no NMI */ - + //MCFG_CPU_VBLANK_INT_DRIVER("screen", clshroad_state, irq0_line_hold) /* IRQ, no NMI */ + MCFG_CPU_PERIODIC_INT_DRIVER(clshroad_state, sound_timer_irq, 60) /* periodic interrupt, don't know about the frequency */ /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -563,6 +571,6 @@ die once, it would be nice to avoid the hack however } GAME( 1984, firebatl, 0, firebatl, firebatl, clshroad_state, firebatl, ROT90, "Wood Place Inc. (Taito license)", "Fire Battle", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1986, clshroad, 0, clshroad, clshroad, driver_device, 0, ROT0, "Wood Place Inc.", "Clash-Road", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, clshroads,clshroad, clshroad, clshroad, driver_device, 0, ROT0, "Wood Place Inc. (Status Game Corp. license)", "Clash-Road (Status license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, clshroadd,clshroad, clshroad, clshroad, driver_device, 0, ROT0, "Wood Place Inc. (Data East license)", "Clash-Road (Data East license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, clshroad, 0, clshroad, clshroad, clshroad_state, 0, ROT0, "Wood Place Inc.", "Clash-Road", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, clshroads,clshroad, clshroad, clshroad, clshroad_state, 0, ROT0, "Wood Place Inc. (Status Game Corp. license)", "Clash-Road (Status license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, clshroadd,clshroad, clshroad, clshroad, clshroad_state, 0, ROT0, "Wood Place Inc. (Data East license)", "Clash-Road (Data East license)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cm1800.cpp b/src/mame/drivers/cm1800.cpp index c2e9d97ef8e..621b45de5bc 100644 --- a/src/mame/drivers/cm1800.cpp +++ b/src/mame/drivers/cm1800.cpp @@ -43,19 +43,22 @@ class cm1800_state : public driver_device { public: cm1800_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_terminal(*this, TERMINAL_TAG) , - m_maincpu(*this, "maincpu") + : driver_device(mconfig, type, tag) + , m_terminal(*this, TERMINAL_TAG) + , m_maincpu(*this, "maincpu") { } DECLARE_READ8_MEMBER( term_status_r ); DECLARE_READ8_MEMBER( term_r ); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); + +protected: + virtual void machine_reset() override; + uint8_t m_term_data; required_device m_terminal; - virtual void machine_reset() override; required_device m_maincpu; }; @@ -71,7 +74,7 @@ READ8_MEMBER( cm1800_state::term_r ) return ret; } -WRITE8_MEMBER( cm1800_state::kbd_put ) +void cm1800_state::kbd_put(u8 data) { m_term_data = data; } @@ -97,7 +100,7 @@ void cm1800_state::machine_reset() { } -static MACHINE_CONFIG_START( cm1800, cm1800_state ) +static MACHINE_CONFIG_START( cm1800 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(cm1800_mem) @@ -106,7 +109,7 @@ static MACHINE_CONFIG_START( cm1800, cm1800_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(cm1800_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(cm1800_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -117,5 +120,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, cm1800, 0, 0, cm1800, cm1800, driver_device, 0, "", "CM-1800", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1981, cm1800, 0, 0, cm1800, cm1800, cm1800_state, 0, "", "CM-1800", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/cmi.cpp b/src/mame/drivers/cmi.cpp index 96e9ed2dec3..ea224fff911 100644 --- a/src/mame/drivers/cmi.cpp +++ b/src/mame/drivers/cmi.cpp @@ -219,7 +219,6 @@ static const int ch_int_levels[8] = class cmi01a_device : public device_t, public device_sound_interface { public: cmi01a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - cmi01a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); static void set_channel_number(device_t &device, int channel) { dynamic_cast(device).m_channel = channel; } @@ -298,10 +297,10 @@ private: int m_irq_state; }; -const device_type CMI01A_CHANNEL_CARD = device_creator; +DEFINE_DEVICE_TYPE(CMI01A_CHANNEL_CARD, cmi01a_device, "cmi_01a", "Fairlight CMI-01A Channel Card") cmi01a_device::cmi01a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CMI01A_CHANNEL_CARD, "Fairlight CMI-01A Channel Card", tag, owner, clock, "cmi_01a", __FILE__) + : device_t(mconfig, CMI01A_CHANNEL_CARD, tag, owner, clock) , device_sound_interface(mconfig, *this) , m_pia_0(*this, "cmi01a_pia_0") , m_pia_1(*this, "cmi01a_pia_1") @@ -601,7 +600,7 @@ protected: required_memory_region m_qfc9_region; required_device m_floppy0; required_device m_floppy1; - required_device m_wd1791; + required_device m_wd1791; required_device_array m_channels; @@ -2745,7 +2744,7 @@ static SLOT_INTERFACE_START( cmi2x_floppies ) SLOT_INTERFACE( "8dssd", FLOPPY_8_DSSD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( cmi2x, cmi_state ) +static MACHINE_CONFIG_START( cmi2x ) MCFG_CPU_ADD("maincpu1", M6809E, Q209_CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(maincpu1_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", cmi_state, cmi_iix_vblank) diff --git a/src/mame/drivers/cmmb.cpp b/src/mame/drivers/cmmb.cpp index 9b43af914f3..e5a4b32074c 100644 --- a/src/mame/drivers/cmmb.cpp +++ b/src/mame/drivers/cmmb.cpp @@ -381,7 +381,7 @@ void cmmb_state::machine_reset() } -static MACHINE_CONFIG_START( cmmb, cmmb_state ) +static MACHINE_CONFIG_START( cmmb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65SC02, MAIN_CLOCK/5) // Unknown clock, but chip rated for 14MHz @@ -423,4 +423,4 @@ ROM_START( cmmb162 ) ROM_REGION( 0x1000, "gfx", ROMREGION_ERASE00 ) ROM_END -GAME( 2002, cmmb162, 0, cmmb, cmmb, driver_device, 0, ROT270, "Cosmodog / Team Play (Licensed from Infogrames via Midway Games West)", "Centipede / Millipede / Missile Command / Let's Go Bowling (rev 1.62)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +GAME( 2002, cmmb162, 0, cmmb, cmmb, cmmb_state, 0, ROT270, "Cosmodog / Team Play (Licensed from Infogrames via Midway Games West)", "Centipede / Millipede / Missile Command / Let's Go Bowling (rev 1.62)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/cninja.cpp b/src/mame/drivers/cninja.cpp index eb496bb7ba9..eabf178c61c 100644 --- a/src/mame/drivers/cninja.cpp +++ b/src/mame/drivers/cninja.cpp @@ -845,7 +845,7 @@ void cninja_state::machine_reset() m_irq_mask = 0; } -static MACHINE_CONFIG_START( cninja, cninja_state ) +static MACHINE_CONFIG_START( cninja ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -924,15 +924,15 @@ static MACHINE_CONFIG_START( cninja, cninja_state ) MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(1, "mono", 0.45) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( stoneage, cninja_state ) +static MACHINE_CONFIG_START( stoneage ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -1010,10 +1010,10 @@ static MACHINE_CONFIG_START( stoneage, cninja_state ) MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(1, "mono", 0.45) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END @@ -1023,7 +1023,7 @@ static MACHINE_CONFIG_DERIVED( cninjabl2, stoneage ) MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_cninjabl2) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cninjabl, cninja_state ) +static MACHINE_CONFIG_START( cninjabl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -1090,12 +1090,12 @@ static MACHINE_CONFIG_START( cninjabl, cninja_state ) MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(1, "mono", 0.45) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( edrandy, cninja_state ) +static MACHINE_CONFIG_START( edrandy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -1173,15 +1173,15 @@ static MACHINE_CONFIG_START( edrandy, cninja_state ) MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(1, "mono", 0.45) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( robocop2, cninja_state ) +static MACHINE_CONFIG_START( robocop2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -1263,17 +1263,17 @@ static MACHINE_CONFIG_START( robocop2, cninja_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mutantf, cninja_state ) +static MACHINE_CONFIG_START( mutantf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -1353,11 +1353,11 @@ static MACHINE_CONFIG_START( mutantf, cninja_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) MACHINE_CONFIG_END @@ -2326,26 +2326,26 @@ DRIVER_INIT_MEMBER(cninja_state,mutantf) /**********************************************************************************/ -GAME( 1990, edrandy, 0, edrandy, edrandy, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, edrandy2, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, edrandy1, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, edrandyj, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (Japan ver 3)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1991, cninja, 0, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, cninja1, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, cninjau, cninja, cninja, cninjau, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (US ver 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, joemac, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Tatakae Genshizin Joe & Mac (Japan ver 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, stoneage, cninja, stoneage, cninja, cninja_state, stoneage, ROT0, "bootleg", "Stoneage (bootleg of Caveman Ninja)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, cninjabl, cninja, cninjabl, cninja, driver_device, 0, ROT0, "bootleg", "Caveman Ninja (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, cninjabl2,cninja, cninjabl2,cninja, cninja_state, cninjabl2,ROT0, "bootleg", "Tatakae Genshizin Joe & Mac (Japan, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // tile layers need adjusting, sound is wrong - -GAME( 1991, robocop2, 0, robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (Euro/Asia v0.10)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, robocop2u,robocop2,robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.10)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, robocop2ua,robocop2,robocop2,robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.05)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, robocop2j,robocop2,robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (Japan v0.11)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1992, mutantf, 0, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, mutantf4, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, mutantf3, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, mutantf2, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, deathbrd, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Death Brade (Japan ver JM-3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, edrandy, 0, edrandy, edrandy, cninja_state, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, edrandy2, edrandy, edrandy, edrandc, cninja_state, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, edrandy1, edrandy, edrandy, edrandc, cninja_state, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, edrandyj, edrandy, edrandy, edrandc, cninja_state, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (Japan ver 3)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1991, cninja, 0, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, cninja1, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, cninjau, cninja, cninja, cninjau, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (US ver 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, joemac, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Tatakae Genshizin Joe & Mac (Japan ver 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, stoneage, cninja, stoneage, cninja, cninja_state, stoneage, ROT0, "bootleg", "Stoneage (bootleg of Caveman Ninja)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, cninjabl, cninja, cninjabl, cninja, cninja_state, 0, ROT0, "bootleg", "Caveman Ninja (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, cninjabl2,cninja, cninjabl2,cninja, cninja_state, cninjabl2,ROT0, "bootleg", "Tatakae Genshizin Joe & Mac (Japan, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // tile layers need adjusting, sound is wrong + +GAME( 1991, robocop2, 0, robocop2, robocop2, cninja_state, 0, ROT0, "Data East Corporation", "Robocop 2 (Euro/Asia v0.10)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, robocop2u,robocop2, robocop2, robocop2, cninja_state, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.10)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, robocop2ua,robocop2,robocop2, robocop2, cninja_state, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.05)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, robocop2j,robocop2, robocop2, robocop2, cninja_state, 0, ROT0, "Data East Corporation", "Robocop 2 (Japan v0.11)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1992, mutantf, 0, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, mutantf4, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, mutantf3, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, mutantf2, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, deathbrd, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Death Brade (Japan ver JM-3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cntsteer.cpp b/src/mame/drivers/cntsteer.cpp index 56884656be3..20e63ae41df 100644 --- a/src/mame/drivers/cntsteer.cpp +++ b/src/mame/drivers/cntsteer.cpp @@ -904,7 +904,7 @@ MACHINE_RESET_MEMBER(cntsteer_state,cntsteer) MACHINE_RESET_CALL_MEMBER(zerotrgt); } -static MACHINE_CONFIG_START( cntsteer, cntsteer_state ) +static MACHINE_CONFIG_START( cntsteer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) /* ? */ @@ -958,7 +958,7 @@ static MACHINE_CONFIG_START( cntsteer, cntsteer_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( zerotrgt, cntsteer_state ) +static MACHINE_CONFIG_START( zerotrgt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) /* ? */ @@ -1221,7 +1221,7 @@ DRIVER_INIT_MEMBER(cntsteer_state,zerotrgt) /***************************************************************************/ -GAME( 1985, zerotrgt, 0, zerotrgt, zerotrgt, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Zero Target (World, CW)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) +GAME( 1985, zerotrgt, 0, zerotrgt, zerotrgt, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Zero Target (World, CW)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) GAME( 1985, zerotrgta, zerotrgt, zerotrgt, zerotrgta, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Zero Target (World, CT)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) -GAME( 1985, gekitsui, zerotrgt, zerotrgt, zerotrgta, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Gekitsui Oh (Japan)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) -GAME( 1985, cntsteer, 0, cntsteer, cntsteer, cntsteer_state, zerotrgt, ROT270, "Data East Corporation", "Counter Steer (Japan)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_WRONG_COLORS|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gekitsui, zerotrgt, zerotrgt, zerotrgta, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Gekitsui Oh (Japan)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) +GAME( 1985, cntsteer, 0, cntsteer, cntsteer, cntsteer_state, zerotrgt, ROT270, "Data East Corporation", "Counter Steer (Japan)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_WRONG_COLORS|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp index 97fd810c3ba..1f99a30083c 100644 --- a/src/mame/drivers/cobra.cpp +++ b/src/mame/drivers/cobra.cpp @@ -495,24 +495,27 @@ class cobra_jvs : public jvs_device public: cobra_jvs(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_WRITE_LINE_MEMBER(coin_1_w); - DECLARE_WRITE_LINE_MEMBER(coin_2_w); - + //DECLARE_WRITE_LINE_MEMBER(coin_1_w); + //DECLARE_WRITE_LINE_MEMBER(coin_2_w); + static void static_set_main_board(device_t &device, bool enable); + void increase_coin_counter(uint8_t which); + protected: virtual bool switches(uint8_t *&buf, uint8_t count_players, uint8_t bytes_per_switch) override; virtual bool coin_counters(uint8_t *&buf, uint8_t count) override; virtual void function_list(uint8_t *&buf) override; private: + bool is_main_board; int m_coin_counter[2]; optional_ioport m_test_port; optional_ioport_array<2> m_player_ports; }; -const device_type COBRA_JVS = device_creator; +DEFINE_DEVICE_TYPE(COBRA_JVS, cobra_jvs, "cobra_jvs", "JVS (COBRA)") cobra_jvs::cobra_jvs(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : jvs_device(mconfig, COBRA_JVS, "JVS (COBRA)", tag, owner, clock, "cobra_jvs", __FILE__), + : jvs_device(mconfig, COBRA_JVS, tag, owner, clock), m_test_port(*this, ":TEST"), m_player_ports(*this, {":P1", ":P2"}) { @@ -520,6 +523,13 @@ cobra_jvs::cobra_jvs(const machine_config &mconfig, const char *tag, device_t *o m_coin_counter[1] = 0; } +void cobra_jvs::static_set_main_board(device_t &device, bool enable) +{ + cobra_jvs &jvsdev = downcast(device); + jvsdev.is_main_board = enable; +} + +#if 0 WRITE_LINE_MEMBER(cobra_jvs::coin_1_w) { if(state) @@ -531,20 +541,42 @@ WRITE_LINE_MEMBER(cobra_jvs::coin_2_w) if(state) m_coin_counter[1]++; } +#endif -void cobra_jvs::function_list(uint8_t *&buf) +void cobra_jvs::increase_coin_counter(uint8_t which) { + m_coin_counter[which]++; +} + +// TODO: this certainly isn't correct, all three JVS points to the same capabilities! +void cobra_jvs::function_list(uint8_t *&buf) +{ + if(this->is_main_board == false) + return; + // SW input - 2 players, 13 bits - *buf++ = 0x01; *buf++ = 2; *buf++ = 13; *buf++ = 0; + *buf++ = 0x01; + *buf++ = 2; + *buf++ = 13; + *buf++ = 0; // Coin input - 2 slots - *buf++ = 0x02; *buf++ = 2; *buf++ = 0; *buf++ = 0; - + *buf++ = 0x02; + *buf++ = 2; + *buf++ = 0; + *buf++ = 0; + // Analog input - 8 channels - *buf++ = 0x03; *buf++ = 8; *buf++ = 16; *buf++ = 0; + *buf++ = 0x03; + *buf++ = 8; + *buf++ = 16; + *buf++ = 0; // Driver out - 6 channels - *buf++ = 0x12; *buf++ = 6; *buf++ = 0; *buf++ = 0; + *buf++ = 0x12; + *buf++ = 6; + *buf++ = 0; + *buf++ = 0; } bool cobra_jvs::switches(uint8_t *&buf, uint8_t count_players, uint8_t bytes_per_switch) @@ -553,6 +585,9 @@ bool cobra_jvs::switches(uint8_t *&buf, uint8_t count_players, uint8_t bytes_per printf("jvs switch read: num players %d, bytes %d\n", count_players, bytes_per_switch); #endif + if(this->is_main_board == false) + return false; + if (count_players > 2 || bytes_per_switch > 2) return false; @@ -574,10 +609,15 @@ bool cobra_jvs::coin_counters(uint8_t *&buf, uint8_t count) #if LOG_JVS printf("jvs coin counter read: count %d\n", count); #endif - + + if(this->is_main_board == false) + return false; + + //printf("recv %04x\n",m_coin_counter[0]); + if (count > 2) return false; - + *buf++ = m_coin_counter[0] >> 8; *buf++ = m_coin_counter[0]; if(count > 1) @@ -600,10 +640,10 @@ private: int m_send_ptr; }; -const device_type COBRA_JVS_HOST = device_creator; +DEFINE_DEVICE_TYPE(COBRA_JVS_HOST, cobra_jvs_host, "cobra_jvs_host", "JVS-HOST (COBRA)") cobra_jvs_host::cobra_jvs_host(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : jvs_host(mconfig, COBRA_JVS_HOST, "JVS-HOST (COBRA)", tag, owner, clock, "cobra_jvs_host", __FILE__) + : jvs_host(mconfig, COBRA_JVS_HOST, tag, owner, clock) { m_send_ptr = 0; } @@ -656,6 +696,9 @@ public: m_gfxcpu(*this, "gfxcpu"), m_gfx_pagetable(*this, "pagetable"), m_k001604(*this, "k001604"), + m_jvs1(*this, "cobra_jvs1"), + m_jvs2(*this, "cobra_jvs2"), + m_jvs3(*this, "cobra_jvs3"), m_ata(*this, "ata"), m_screen(*this, "screen"), m_palette(*this, "palette"), @@ -672,6 +715,9 @@ public: required_device m_gfxcpu; required_shared_ptr m_gfx_pagetable; required_device m_k001604; + required_device m_jvs1; + required_device m_jvs2; + required_device m_jvs3; required_device m_ata; required_device m_screen; required_device m_palette; @@ -788,6 +834,7 @@ public: DECLARE_DRIVER_INIT(racjamdx); DECLARE_DRIVER_INIT(bujutsu); DECLARE_DRIVER_INIT(cobra); + DECLARE_INPUT_CHANGED_MEMBER(coin_inserted); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; @@ -3152,6 +3199,17 @@ ADDRESS_MAP_END /*****************************************************************************/ +INPUT_CHANGED_MEMBER(cobra_state::coin_inserted) +{ + if(newval) + { + uint8_t coin_chute = (uint8_t)(uintptr_t)param & 1; + m_jvs1->increase_coin_counter(coin_chute); + m_jvs2->increase_coin_counter(coin_chute); + m_jvs3->increase_coin_counter(coin_chute); + } +} + INPUT_PORTS_START( cobra ) PORT_START("TEST") PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_HIGH) /* Test Button */ @@ -3165,43 +3223,43 @@ INPUT_PORTS_START( cobra ) PORT_START("P1") PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_START1 ) - PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("P1 Service") PORT_CODE(KEYCODE_7) + PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1) - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) - PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1) - PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(1) - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(1) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Punch") + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Kick") + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Guard") + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("P2") PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_START2 ) - PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("P2 Service") PORT_CODE(KEYCODE_8) + PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2) - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2) - PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2) - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2) - PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2) - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(2) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Punch") + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Kick") + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Guard") + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("COINS") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1) PORT_WRITE_LINE_DEVICE_MEMBER("cobra_jvs1", cobra_jvs, coin_1_w) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_COIN2) PORT_WRITE_LINE_DEVICE_MEMBER("cobra_jvs1", cobra_jvs, coin_2_w) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1) PORT_CHANGED_MEMBER(DEVICE_SELF, cobra_state,coin_inserted, 0)//PORT_WRITE_LINE_DEVICE_MEMBER("cobra_jvs1", cobra_jvs, coin_1_w) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_COIN2) PORT_CHANGED_MEMBER(DEVICE_SELF, cobra_state,coin_inserted, 1) //PORT_WRITE_LINE_DEVICE_MEMBER("cobra_jvs1", cobra_jvs, coin_2_w) INPUT_PORTS_END WRITE_LINE_MEMBER(cobra_state::ide_interrupt) @@ -3260,7 +3318,7 @@ void cobra_state::machine_reset() dmadac_set_frequency(&m_dmadac[1], 1, 44100); } -static MACHINE_CONFIG_START( cobra, cobra_state ) +static MACHINE_CONFIG_START( cobra ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC603, 100000000) /* 603EV, 100? MHz */ @@ -3316,9 +3374,11 @@ static MACHINE_CONFIG_START( cobra, cobra_state ) MCFG_DEVICE_ADD("cobra_jvs_host", COBRA_JVS_HOST, 4000000) MCFG_JVS_DEVICE_ADD("cobra_jvs1", COBRA_JVS, "cobra_jvs_host") + cobra_jvs::static_set_main_board(*device, true); MCFG_JVS_DEVICE_ADD("cobra_jvs2", COBRA_JVS, "cobra_jvs_host") + cobra_jvs::static_set_main_board(*device, true); MCFG_JVS_DEVICE_ADD("cobra_jvs3", COBRA_JVS, "cobra_jvs_host") - + cobra_jvs::static_set_main_board(*device, true); MACHINE_CONFIG_END /*****************************************************************************/ @@ -3596,5 +3656,5 @@ ROM_END /*************************************************************************/ -GAME( 1997, bujutsu, 0, cobra, cobra, cobra_state, bujutsu, ROT0, "Konami", "Fighting Bujutsu", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1997, racjamdx, 0, cobra, cobra, cobra_state, racjamdx, ROT0, "Konami", "Racing Jam DX", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1997, bujutsu, 0, cobra, cobra, cobra_state, bujutsu, ROT0, "Konami", "Fighting Bujutsu", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, racjamdx, 0, cobra, cobra, cobra_state, racjamdx, ROT0, "Konami", "Racing Jam DX", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp index 10055494949..c9713688e42 100644 --- a/src/mame/drivers/coco12.cpp +++ b/src/mame/drivers/coco12.cpp @@ -31,6 +31,7 @@ #include "bus/coco/coco_fdc.h" #include "bus/coco/coco_multi.h" #include "bus/coco/coco_orch90.h" +#include "bus/coco/coco_gmc.h" #include "bus/coco/coco_pak.h" #include "bus/coco/coco_t4426.h" @@ -96,7 +97,7 @@ INPUT_PORTS_END // INPUT_PORTS( coco_joystick ) //------------------------------------------------- -static INPUT_PORTS_START( coco_joystick ) +INPUT_PORTS_START( coco_joystick ) PORT_START(JOYSTICK_RX_TAG) PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_SENSITIVITY(JOYSTICK_SENSITIVITY) PORT_KEYDELTA(JOYSTICK_DELTA) PORT_MINMAX(0x00,0xFF) PORT_CODE_DEC(KEYCODE_4_PAD) PORT_CODE_INC(KEYCODE_6_PAD) PORT_CODE_DEC(JOYCODE_X_LEFT_SWITCH) PORT_CODE_INC(JOYCODE_X_RIGHT_SWITCH) PORT_PLAYER(1) PORT_CONDITION(CTRL_SEL_TAG, 0x0f, EQUALS, 0x01) PORT_START(JOYSTICK_RY_TAG) @@ -252,9 +253,10 @@ SLOT_INTERFACE_START( coco_cart ) SLOT_INTERFACE("cp400_fdc", CP400_FDC) SLOT_INTERFACE("rs232", COCO_232) SLOT_INTERFACE("orch90", COCO_ORCH90) + SLOT_INTERFACE("games_master", COCO_PAK_GMC) SLOT_INTERFACE("banked_16k", COCO_PAK_BANKED) SLOT_INTERFACE("pak", COCO_PAK) - SLOT_INTERFACE("multi", COCO_MULTIPAK) + SLOT_INTERFACE("multi", COCO_MULTIPAK) MCFG_SLOT_OPTION_CLOCK("multi", DERIVED_CLOCK(1, 1)) SLOT_INTERFACE_END //------------------------------------------------- @@ -298,9 +300,12 @@ DEVICE_INPUT_DEFAULTS_END // MACHINE_CONFIG //------------------------------------------------- -static MACHINE_CONFIG_START( coco, coco12_state ) +static MACHINE_CONFIG_START( coco ) + MCFG_DEVICE_MODIFY(":") + MCFG_DEVICE_CLOCK(XTAL_3_579545MHz) + // basic machine hardware - MCFG_CPU_ADD(MAINCPU_TAG, M6809E, XTAL_3_579545MHz) + MCFG_CPU_ADD(MAINCPU_TAG, M6809E, DERIVED_CLOCK(1, 1)) MCFG_CPU_PROGRAM_MAP(coco_mem) MCFG_CPU_DISASSEMBLE_OVERRIDE(coco_state, dasm_override) @@ -359,7 +364,8 @@ static MACHINE_CONFIG_START( coco, coco12_state ) MCFG_RAM_EXTRA_OPTIONS("4K,16K,32K") // software lists - MCFG_SOFTWARE_LIST_ADD("cart_list","coco_cart") + MCFG_SOFTWARE_LIST_ADD("coco_cart_list", "coco_cart") + MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("dragon_cart_list", "dragon_cart") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cocoe, coco ) @@ -461,12 +467,12 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1980, coco, 0, 0, coco, coco, driver_device, 0, "Tandy Radio Shack", "Color Computer", 0) -COMP( 1981, cocoe, coco, 0, cocoe, coco, driver_device, 0, "Tandy Radio Shack", "Color Computer (Extended BASIC 1.0)", 0) -COMP( 1983, coco2, coco, 0, coco2, coco, driver_device, 0, "Tandy Radio Shack", "Color Computer 2", 0) -COMP( 1985?, coco2b, coco, 0, coco2b, coco, driver_device, 0, "Tandy Radio Shack", "Color Computer 2B", 0) -COMP( 1984, cp400, coco, 0, cp400, coco, driver_device, 0, "Prologica", "CP400", 0) -COMP( 1984, lzcolor64, coco, 0, coco, coco, driver_device, 0, "Digiponto", "LZ Color64", 0) -COMP( 1984, mx1600, coco, 0, coco, coco, driver_device, 0, "Dynacom", "MX-1600", 0) -COMP( 1986, t4426, coco, 0, t4426, coco, driver_device, 0, "Terco AB", "Terco 4426 CNC Programming station", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, coco, 0, 0, coco, coco, coco12_state, 0, "Tandy Radio Shack", "Color Computer", 0 ) +COMP( 1981, cocoe, coco, 0, cocoe, coco, coco12_state, 0, "Tandy Radio Shack", "Color Computer (Extended BASIC 1.0)", 0 ) +COMP( 1983, coco2, coco, 0, coco2, coco, coco12_state, 0, "Tandy Radio Shack", "Color Computer 2", 0 ) +COMP( 1985?, coco2b, coco, 0, coco2b, coco, coco12_state, 0, "Tandy Radio Shack", "Color Computer 2B", 0 ) +COMP( 1984, cp400, coco, 0, cp400, coco, coco12_state, 0, "Prologica", "CP400", 0 ) +COMP( 1984, lzcolor64, coco, 0, coco, coco, coco12_state, 0, "Digiponto", "LZ Color64", 0 ) +COMP( 1984, mx1600, coco, 0, coco, coco, coco12_state, 0, "Dynacom", "MX-1600", 0 ) +COMP( 1986, t4426, coco, 0, t4426, coco, coco12_state, 0, "Terco AB", "Terco 4426 CNC Programming station", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/coco3.cpp b/src/mame/drivers/coco3.cpp index 29e2f9a760d..6253fd7b9c1 100644 --- a/src/mame/drivers/coco3.cpp +++ b/src/mame/drivers/coco3.cpp @@ -241,9 +241,12 @@ DEVICE_INPUT_DEFAULTS_END // MACHINE CONFIGURATION //************************************************************************** -static MACHINE_CONFIG_START( coco3, coco3_state ) +static MACHINE_CONFIG_START( coco3 ) + MCFG_DEVICE_MODIFY(":") + MCFG_DEVICE_CLOCK(XTAL_3_579545MHz) + // basic machine hardware - MCFG_CPU_ADD(MAINCPU_TAG, M6809E, XTAL_3_579545MHz) + MCFG_CPU_ADD(MAINCPU_TAG, M6809E, DERIVED_CLOCK(1, 1)) MCFG_CPU_PROGRAM_MAP(coco3_mem) MCFG_CPU_DISASSEMBLE_OVERRIDE(coco_state, dasm_override) @@ -341,7 +344,7 @@ static MACHINE_CONFIG_DERIVED( coco3p, coco3 ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( coco3h, coco3 ) - MCFG_CPU_REPLACE(MAINCPU_TAG, HD6309, XTAL_3_579545MHz) + MCFG_CPU_REPLACE(MAINCPU_TAG, HD6309, DERIVED_CLOCK(1, 1)) MCFG_CPU_PROGRAM_MAP(coco3_mem) MACHINE_CONFIG_END @@ -371,7 +374,7 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -COMP( 1986, coco3, coco, 0, coco3, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC)", 0) -COMP( 1986, coco3p, coco, 0, coco3p, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (PAL)", 0) -COMP( 19??, coco3h, coco, 0, coco3h, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HD6309)", MACHINE_UNOFFICIAL) -COMP( 19??, coco3dw1, coco, 0, coco3dw1, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HDB-DOS)", MACHINE_UNOFFICIAL) +COMP( 1986, coco3, coco, 0, coco3, coco3, coco3_state, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC)", 0 ) +COMP( 1986, coco3p, coco, 0, coco3p, coco3, coco3_state, 0, "Tandy Radio Shack", "Color Computer 3 (PAL)", 0 ) +COMP( 19??, coco3h, coco, 0, coco3h, coco3, coco3_state, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HD6309)", MACHINE_UNOFFICIAL ) +COMP( 19??, coco3dw1, coco, 0, coco3dw1, coco3, coco3_state, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HDB-DOS)", MACHINE_UNOFFICIAL ) diff --git a/src/mame/drivers/cocoloco.cpp b/src/mame/drivers/cocoloco.cpp index e6a4f8b3fdf..e92e4258d4b 100644 --- a/src/mame/drivers/cocoloco.cpp +++ b/src/mame/drivers/cocoloco.cpp @@ -519,7 +519,7 @@ INPUT_PORTS_END * Machine Drivers * ***********************************/ -static MACHINE_CONFIG_START( cocoloco, cocoloco_state ) +static MACHINE_CONFIG_START( cocoloco ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, CPU_CLOCK) /* confirmed */ @@ -632,7 +632,7 @@ DRIVER_INIT_MEMBER(cocoloco_state, cocob) * Game Drivers * ***********************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 198?, cocoloco, 0, cocoloco, cocoloco, driver_device, 0, ROT90, "Petaco S.A.", "Coco Loco (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 198?, cocolocoa, cocoloco, cocoloco, cocolocoa, driver_device, 0, ROT90, "Recel S.A.", "Coco Loco (set 2)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 198?, cocoloco, 0, cocoloco, cocoloco, cocoloco_state, 0, ROT90, "Petaco S.A.", "Coco Loco (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 198?, cocolocoa, cocoloco, cocoloco, cocolocoa, cocoloco_state, 0, ROT90, "Recel S.A.", "Coco Loco (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 198?, cocolocob, cocoloco, cocoloco, cocoloco, cocoloco_state, cocob, ROT90, "Petaco S.A.", "Coco Loco (set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/codata.cpp b/src/mame/drivers/codata.cpp index c0cfac1652c..4285ed97df7 100644 --- a/src/mame/drivers/codata.cpp +++ b/src/mame/drivers/codata.cpp @@ -30,7 +30,8 @@ public: DECLARE_READ16_MEMBER(keyin_r); DECLARE_READ16_MEMBER(status_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); + private: uint8_t m_term_data; virtual void machine_reset() override; @@ -70,7 +71,7 @@ READ16_MEMBER( codata_state::status_r ) return (m_term_data) ? 0x500 : 0x400; } -WRITE8_MEMBER( codata_state::kbd_put ) +void codata_state::kbd_put(u8 data) { m_term_data = data; } @@ -83,14 +84,14 @@ void codata_state::machine_reset() m_maincpu->reset(); } -static MACHINE_CONFIG_START( codata, codata_state ) +static MACHINE_CONFIG_START( codata ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(codata_mem) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(codata_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(codata_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -109,5 +110,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, codata, 0, 0, codata, codata, driver_device, 0, "Contel Codata Corporation", "Codata", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, codata, 0, 0, codata, codata, codata_state, 0, "Contel Codata Corporation", "Codata", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/coinmstr.cpp b/src/mame/drivers/coinmstr.cpp index c8818ad16ae..b95ad8d7058 100644 --- a/src/mame/drivers/coinmstr.cpp +++ b/src/mame/drivers/coinmstr.cpp @@ -1234,7 +1234,7 @@ uint32_t coinmstr_state::screen_update_coinmstr(screen_device &screen, bitmap_in } -static MACHINE_CONFIG_START( coinmstr, coinmstr_state ) +static MACHINE_CONFIG_START( coinmstr ) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) // 7 MHz. MCFG_CPU_PROGRAM_MAP(coinmstr_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", coinmstr_state, irq0_line_hold) @@ -1550,10 +1550,10 @@ DRIVER_INIT_MEMBER(coinmstr_state,coinmstr) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 1985, quizmstr, 0, quizmstr, quizmstr, coinmstr_state, coinmstr, ROT0, "Loewen Spielautomaten", "Quizmaster (German)", MACHINE_UNEMULATED_PROTECTION ) GAME( 1987, trailblz, 0, trailblz, trailblz, coinmstr_state, coinmstr, ROT0, "Coinmaster", "Trail Blazer", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // or Trail Blazer 2 ? GAME( 1989, supnudg2, 0, supnudg2, supnudg2, coinmstr_state, coinmstr, ROT0, "Coinmaster", "Super Nudger II - P173 (Version 5.21)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1990, pokeroul, 0, pokeroul, pokeroul, driver_device, 0, ROT0, "Coinmaster", "Poker Roulette (Version 8.22)", MACHINE_NOT_WORKING ) -GAME( 1985, jpcoin, 0, jpcoin, jpcoin, driver_device, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster set 1)", 0 ) -GAME( 1990, jpcoin2, 0, jpcoin, jpcoin, driver_device, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster, Amusement Only)", 0 ) +GAME( 1990, pokeroul, 0, pokeroul, pokeroul, coinmstr_state, 0, ROT0, "Coinmaster", "Poker Roulette (Version 8.22)", MACHINE_NOT_WORKING ) +GAME( 1985, jpcoin, 0, jpcoin, jpcoin, coinmstr_state, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster set 1)", 0 ) +GAME( 1990, jpcoin2, 0, jpcoin, jpcoin, coinmstr_state, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster, Amusement Only)", 0 ) diff --git a/src/mame/drivers/coinmvga.cpp b/src/mame/drivers/coinmvga.cpp index 2cbb4927d0c..bf1d3671855 100644 --- a/src/mame/drivers/coinmvga.cpp +++ b/src/mame/drivers/coinmvga.cpp @@ -626,7 +626,7 @@ static ADDRESS_MAP_START( ramdac2_map, AS_0, 8, coinmvga_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( coinmvga, coinmvga_state ) +static MACHINE_CONFIG_START( coinmvga ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83007, CPU_CLOCK) /* xtal */ @@ -882,9 +882,9 @@ DRIVER_INIT_MEMBER(coinmvga_state,cmrltv75) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 2000, colorama, 0, coinmvga, coinmvga, coinmvga_state, colorama, ROT0, "Coinmaster-Gaming, Ltd.", "Colorama (P521, English)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 2000, colorama, 0, coinmvga, coinmvga, coinmvga_state, colorama, ROT0, "Coinmaster-Gaming, Ltd.", "Colorama (P521, English)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) GAME( 2000, coloramas, colorama, coinmvga, coinmvga, coinmvga_state, colorama, ROT0, "Coinmaster-Gaming, Ltd.", "Colorama (P521 V13, Spanish)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) GAME( 2001, cmrltv75, 0, coinmvga, coinmvga, coinmvga_state, cmrltv75, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Roulette P497 V75 (Y2K, Spanish)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) -GAME( 2000, cmkenosp, 0, coinmvga, coinmvga, driver_device, 0, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Keno (Y2K, Spanish, 2000-12-14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) -GAME( 2000, cmkenospa, cmkenosp, coinmvga, coinmvga, driver_device, 0, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Keno (Y2K, Spanish, 2000-12-02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 2000, cmkenosp, 0, coinmvga, coinmvga, coinmvga_state, 0, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Keno (Y2K, Spanish, 2000-12-14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 2000, cmkenospa, cmkenosp, coinmvga, coinmvga, coinmvga_state, 0, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Keno (Y2K, Spanish, 2000-12-02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/coleco.cpp b/src/mame/drivers/coleco.cpp index f52baf74d2f..25ed7bd6624 100644 --- a/src/mame/drivers/coleco.cpp +++ b/src/mame/drivers/coleco.cpp @@ -371,7 +371,7 @@ void coleco_state::machine_reset() /* Machine Drivers */ -static MACHINE_CONFIG_START( coleco, coleco_state ) +static MACHINE_CONFIG_START( coleco ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_7_15909MHz/2) // 3.579545 MHz @@ -487,10 +487,10 @@ ROM_END /* System Drivers */ -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -CONS( 1982, coleco, 0, 0, coleco, coleco, driver_device, 0, "Coleco", "ColecoVision (NTSC)", 0 ) -CONS( 1982, onyx, coleco, 0, coleco, coleco, driver_device, 0, "Microdigital", "Onyx (Brazil/Prototype)", 0 ) -CONS( 1983, colecop, coleco, 0, colecop, coleco, driver_device, 0, "Coleco", "ColecoVision (PAL)", 0 ) -CONS( 1986, czz50, 0, coleco, czz50, czz50, driver_device, 0, "Bit Corporation", "Chuang Zao Zhe 50", 0 ) -CONS( 1988, dina, czz50, 0, dina, czz50, driver_device, 0, "Telegames", "Dina", 0 ) -CONS( 1988, prsarcde, czz50, 0, czz50, czz50, driver_device, 0, "Telegames", "Personal Arcade", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1982, coleco, 0, 0, coleco, coleco, coleco_state, 0, "Coleco", "ColecoVision (NTSC)", 0 ) +CONS( 1982, onyx, coleco, 0, coleco, coleco, coleco_state, 0, "Microdigital", "Onyx (Brazil/Prototype)", 0 ) +CONS( 1983, colecop, coleco, 0, colecop, coleco, coleco_state, 0, "Coleco", "ColecoVision (PAL)", 0 ) +CONS( 1986, czz50, 0, coleco, czz50, czz50, coleco_state, 0, "Bit Corporation", "Chuang Zao Zhe 50", 0 ) +CONS( 1988, dina, czz50, 0, dina, czz50, coleco_state, 0, "Telegames", "Dina", 0 ) +CONS( 1988, prsarcde, czz50, 0, czz50, czz50, coleco_state, 0, "Telegames", "Personal Arcade", 0 ) diff --git a/src/mame/drivers/combatsc.cpp b/src/mame/drivers/combatsc.cpp index 6db944fc147..3a2a48fb9e6 100644 --- a/src/mame/drivers/combatsc.cpp +++ b/src/mame/drivers/combatsc.cpp @@ -697,7 +697,7 @@ void combatsc_state::machine_reset() } /* combat school (original) */ -static MACHINE_CONFIG_START( combatsc, combatsc_state ) +static MACHINE_CONFIG_START( combatsc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, 3000000*4) /* 3 MHz? */ @@ -751,7 +751,7 @@ MACHINE_CONFIG_END /* combat school (bootleg on different hardware) */ -static MACHINE_CONFIG_START( combatscb, combatsc_state ) +static MACHINE_CONFIG_START( combatscb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, 3000000*4) /* 3 MHz? */ @@ -791,7 +791,7 @@ static MACHINE_CONFIG_START( combatscb, combatsc_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MCFG_SOUND_ADD("msm5205", MSM5205, 384000) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* 8KHz playback ? */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -1004,9 +1004,9 @@ DRIVER_INIT_MEMBER(combatsc_state,combatsc) * *************************************/ -GAME( 1988, combatsc, 0, combatsc, combatsc, combatsc_state, combatsc, ROT0, "Konami", "Combat School (joystick)", 0 ) -GAME( 1987, combatsct, combatsc, combatsc, combatsct, driver_device, 0, ROT0, "Konami", "Combat School (trackball)", MACHINE_NOT_WORKING ) -GAME( 1987, combatscj, combatsc, combatsc, combatsct, driver_device, 0, ROT0, "Konami", "Combat School (Japan trackball)", MACHINE_NOT_WORKING ) -GAME( 1987, bootcamp, combatsc, combatsc, combatsct, driver_device, 0, ROT0, "Konami", "Boot Camp (set 1)", MACHINE_NOT_WORKING ) -GAME( 1987, bootcampa, combatsc, combatsc, combatsct, driver_device, 0, ROT0, "Konami", "Boot Camp (set 2)", MACHINE_NOT_WORKING ) -GAME( 1988, combatscb, combatsc, combatscb, combatscb, driver_device, 0, ROT0, "bootleg", "Combat School (bootleg)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) +GAME( 1988, combatsc, 0, combatsc, combatsc, combatsc_state, combatsc, ROT0, "Konami", "Combat School (joystick)", 0 ) +GAME( 1987, combatsct, combatsc, combatsc, combatsct, combatsc_state, 0, ROT0, "Konami", "Combat School (trackball)", MACHINE_NOT_WORKING ) +GAME( 1987, combatscj, combatsc, combatsc, combatsct, combatsc_state, 0, ROT0, "Konami", "Combat School (Japan trackball)", MACHINE_NOT_WORKING ) +GAME( 1987, bootcamp, combatsc, combatsc, combatsct, combatsc_state, 0, ROT0, "Konami", "Boot Camp (set 1)", MACHINE_NOT_WORKING ) +GAME( 1987, bootcampa, combatsc, combatsc, combatsct, combatsc_state, 0, ROT0, "Konami", "Boot Camp (set 2)", MACHINE_NOT_WORKING ) +GAME( 1988, combatscb, combatsc, combatscb, combatscb, combatsc_state, 0, ROT0, "bootleg", "Combat School (bootleg)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/comebaby.cpp b/src/mame/drivers/comebaby.cpp index 8437f6282fa..c706fdb4e93 100644 --- a/src/mame/drivers/comebaby.cpp +++ b/src/mame/drivers/comebaby.cpp @@ -222,7 +222,7 @@ static INPUT_PORTS_START( comebaby ) INPUT_PORTS_END -static MACHINE_CONFIG_START( comebaby, comebaby_state ) +static MACHINE_CONFIG_START( comebaby ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PENTIUM, 2000000000) /* Probably a Pentium .. ?? Mhz*/ MCFG_CPU_PROGRAM_MAP(comebaby_map) @@ -249,4 +249,4 @@ ROM_START(comebaby) ROM_END -GAME( 2000, comebaby, 0, comebaby, comebaby, driver_device, 0, ROT0, "ExPotato", "Come On Baby", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 2000, comebaby, 0, comebaby, comebaby, comebaby_state, 0, ROT0, "ExPotato", "Come On Baby", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/commando.cpp b/src/mame/drivers/commando.cpp index f48e5565a92..4b1c92056b7 100644 --- a/src/mame/drivers/commando.cpp +++ b/src/mame/drivers/commando.cpp @@ -248,7 +248,7 @@ void commando_state::machine_reset() } -static MACHINE_CONFIG_START( commando, commando_state ) +static MACHINE_CONFIG_START( commando ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, PHI_MAIN) // ??? @@ -268,7 +268,7 @@ static MACHINE_CONFIG_START( commando, commando_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(commando_state, screen_update_commando) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", commando) diff --git a/src/mame/drivers/compgolf.cpp b/src/mame/drivers/compgolf.cpp index ba6f2db68b7..981ff425cda 100644 --- a/src/mame/drivers/compgolf.cpp +++ b/src/mame/drivers/compgolf.cpp @@ -221,7 +221,7 @@ void compgolf_state::machine_reset() m_scrolly_hi = 0; } -static MACHINE_CONFIG_START( compgolf, compgolf_state ) +static MACHINE_CONFIG_START( compgolf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) diff --git a/src/mame/drivers/compis.cpp b/src/mame/drivers/compis.cpp index da4699fa33b..a5f069136ea 100644 --- a/src/mame/drivers/compis.cpp +++ b/src/mame/drivers/compis.cpp @@ -110,7 +110,7 @@ public: required_device m_uart; required_device m_rtc; required_device m_cassette; - required_device m_graphics; + required_device m_graphics; required_device m_isbx0; required_device m_isbx1; required_device m_ram; @@ -415,7 +415,7 @@ static ADDRESS_MAP_START( compis_io, AS_IO, 16, compis_state ) AM_RANGE(0x0000, 0x0007) /* PCS0 */ AM_MIRROR(0x78) AM_DEVREADWRITE8(I8255_TAG, i8255_device, read, write, 0xff00) AM_RANGE(0x0080, 0x0087) /* PCS1 */ AM_MIRROR(0x78) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0x00ff) AM_RANGE(0x0100, 0x011f) /* PCS2 */ AM_MIRROR(0x60) AM_DEVREADWRITE8(MM58174A_TAG, mm58274c_device, read, write, 0x00ff) - AM_RANGE(0x0180, 0x01ff) /* PCS3 */ AM_DEVREADWRITE(GRAPHICS_TAG, compis_graphics_slot_t, pcs3_r, pcs3_w) + AM_RANGE(0x0180, 0x01ff) /* PCS3 */ AM_DEVREADWRITE(GRAPHICS_TAG, compis_graphics_slot_device, pcs3_r, pcs3_w) //AM_RANGE(0x0200, 0x0201) /* PCS4 */ AM_MIRROR(0x7e) AM_RANGE(0x0280, 0x028f) /* PCS5 */ AM_MIRROR(0x70) AM_DEVICE(I80130_TAG, i80130_device, io_map) AM_RANGE(0x0300, 0x030f) AM_READWRITE(pcs6_0_1_r, pcs6_0_1_w) @@ -742,7 +742,7 @@ void compis_state::machine_reset() // MACHINE_CONFIG( compis ) //------------------------------------------------- -static MACHINE_CONFIG_START( compis, compis_state ) +static MACHINE_CONFIG_START( compis ) // basic machine hardware MCFG_CPU_ADD(I80186_TAG, I80186, XTAL_15_36MHz) MCFG_CPU_PROGRAM_MAP(compis_mem) @@ -885,6 +885,6 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP(1985, compis, 0, 0, compis, compis, driver_device, 0, "Telenova", "Compis" , MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -COMP(1986, compis2, compis, 0, compis2, compis, driver_device, 0, "Telenova", "Compis II" , MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, compis, 0, 0, compis, compis, compis_state, 0, "Telenova", "Compis", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1986, compis2, compis, 0, compis2, compis, compis_state, 0, "Telenova", "Compis II", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/compucolor.cpp b/src/mame/drivers/compucolor.cpp index 73c565c7359..3fa20bcef25 100644 --- a/src/mame/drivers/compucolor.cpp +++ b/src/mame/drivers/compucolor.cpp @@ -387,7 +387,7 @@ void compucolor2_state::machine_reset() m_rs232->write_dtr(1); } -static MACHINE_CONFIG_START( compucolor2, compucolor2_state ) +static MACHINE_CONFIG_START( compucolor2 ) // basic machine hardware MCFG_CPU_ADD(I8080_TAG, I8080, XTAL_17_9712MHz/9) MCFG_CPU_PROGRAM_MAP(compucolor2_mem) @@ -457,4 +457,4 @@ ROM_START( compclr2 ) ROM_LOAD( "82s129.ug5", 0x00, 0x20, NO_DUMP ) // Color PROM ROM_END -COMP( 1977, compclr2, 0, 0, compucolor2, compucolor2, driver_device, 0, "Intelligent Systems Corporation", "Compucolor II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1977, compclr2, 0, 0, compucolor2, compucolor2, compucolor2_state, 0, "Intelligent Systems Corporation", "Compucolor II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/comquest.cpp b/src/mame/drivers/comquest.cpp index 4c9d82e83fc..88144e85a49 100644 --- a/src/mame/drivers/comquest.cpp +++ b/src/mame/drivers/comquest.cpp @@ -212,7 +212,7 @@ void comquest_state::machine_reset() } -static MACHINE_CONFIG_START( comquest, comquest_state ) +static MACHINE_CONFIG_START( comquest ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6805, 4000000) /* 4000000? */ /*MCFG_CPU_ADD("maincpu", HD63705, 4000000) instruction set looks like m6805/m6808 */ @@ -304,5 +304,5 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT MONITOR COMPANY FULLNAME */ -CONS( 1995, comquest, 0, 0, comquest, comquest, driver_device, 0, "Data Concepts", "ComQuest Plus (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1995, comquest, 0, 0, comquest, comquest, comquest_state, 0, "Data Concepts", "ComQuest Plus (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/comx35.cpp b/src/mame/drivers/comx35.cpp index c1925f003ef..5ebeeadefcc 100644 --- a/src/mame/drivers/comx35.cpp +++ b/src/mame/drivers/comx35.cpp @@ -593,9 +593,9 @@ void comx35_state::machine_reset() // MACHINE_CONFIG( pal ) //------------------------------------------------- -static MACHINE_CONFIG_START( pal, comx35_state ) +static MACHINE_CONFIG_START( pal ) // basic system hardware - MCFG_CPU_ADD(CDP1802_TAG, CDP1802, CDP1869_CPU_CLK_PAL) + MCFG_CPU_ADD(CDP1802_TAG, CDP1802, cdp1869_device::CPU_CLK_PAL) MCFG_CPU_PROGRAM_MAP(comx35_mem) MCFG_CPU_IO_MAP(comx35_io) MCFG_COSMAC_WAIT_CALLBACK(VCC) @@ -609,7 +609,7 @@ static MACHINE_CONFIG_START( pal, comx35_state ) MCFG_FRAGMENT_ADD(comx35_pal_video) // peripheral hardware - MCFG_DEVICE_ADD(CDP1871_TAG, CDP1871, CDP1869_CPU_CLK_PAL/8) + MCFG_DEVICE_ADD(CDP1871_TAG, CDP1871, cdp1869_device::CPU_CLK_PAL/8) MCFG_CDP1871_D1_CALLBACK(IOPORT("D1")) MCFG_CDP1871_D2_CALLBACK(IOPORT("D2")) MCFG_CDP1871_D3_CALLBACK(IOPORT("D3")) @@ -643,9 +643,9 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( ntsc ) //------------------------------------------------- -static MACHINE_CONFIG_START( ntsc, comx35_state ) +static MACHINE_CONFIG_START( ntsc ) // basic system hardware - MCFG_CPU_ADD(CDP1802_TAG, CDP1802, CDP1869_CPU_CLK_NTSC) + MCFG_CPU_ADD(CDP1802_TAG, CDP1802, cdp1869_device::CPU_CLK_NTSC) MCFG_CPU_PROGRAM_MAP(comx35_mem) MCFG_CPU_IO_MAP(comx35_io) MCFG_COSMAC_WAIT_CALLBACK(VCC) @@ -659,7 +659,7 @@ static MACHINE_CONFIG_START( ntsc, comx35_state ) MCFG_FRAGMENT_ADD(comx35_ntsc_video) // peripheral hardware - MCFG_DEVICE_ADD(CDP1871_TAG, CDP1871, CDP1869_CPU_CLK_PAL/8) + MCFG_DEVICE_ADD(CDP1871_TAG, CDP1871, cdp1869_device::CPU_CLK_PAL/8) MCFG_CDP1871_D1_CALLBACK(IOPORT("D1")) MCFG_CDP1871_D2_CALLBACK(IOPORT("D2")) MCFG_CDP1871_D3_CALLBACK(IOPORT("D3")) @@ -720,6 +720,6 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1983, comx35p, 0, 0, pal, comx35, driver_device, 0, "Comx World Operations Ltd", "COMX 35 (PAL)", MACHINE_IMPERFECT_SOUND ) -COMP( 1983, comx35n, comx35p,0, ntsc, comx35, driver_device, 0, "Comx World Operations Ltd", "COMX 35 (NTSC)", MACHINE_IMPERFECT_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, comx35p, 0, 0, pal, comx35, comx35_state, 0, "Comx World Operations Ltd", "COMX 35 (PAL)", MACHINE_IMPERFECT_SOUND ) +COMP( 1983, comx35n, comx35p,0, ntsc, comx35, comx35_state, 0, "Comx World Operations Ltd", "COMX 35 (NTSC)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/concept.cpp b/src/mame/drivers/concept.cpp index 0bfa6f452d2..fe6f6005c76 100644 --- a/src/mame/drivers/concept.cpp +++ b/src/mame/drivers/concept.cpp @@ -208,7 +208,7 @@ SLOT_INTERFACE_END -static MACHINE_CONFIG_START( concept, concept_state ) +static MACHINE_CONFIG_START( concept ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8182000) /* 16.364 MHz / 2 */ MCFG_CPU_PROGRAM_MAP(concept_memmap) @@ -315,5 +315,5 @@ ROM_START( concept ) ROM_LOAD16_BYTE( "mb20l.bin", 0x000001, 0x001000, CRC(b4b59de9) SHA1(3e8b8b5950b5359203c054f94af1fc5b8f0495b9) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1982, concept, 0, 0, concept, concept, driver_device, 0, "Corvus Systems", "Concept" , 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1982, concept, 0, 0, concept, concept, concept_state, 0, "Corvus Systems", "Concept" , 0 ) diff --git a/src/mame/drivers/contra.cpp b/src/mame/drivers/contra.cpp index 70872bf8363..d9f9440ad7c 100644 --- a/src/mame/drivers/contra.cpp +++ b/src/mame/drivers/contra.cpp @@ -195,7 +195,7 @@ void contra_state::machine_start() membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x2000); } -static MACHINE_CONFIG_START( contra, contra_state ) +static MACHINE_CONFIG_START( contra ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, XTAL_24MHz / 2 /* 3000000*4? */) @@ -562,13 +562,13 @@ ROM_START( contrabj1 ) ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */ ROM_END -GAME( 1987, contra, 0, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (US / Asia, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, contra1, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (US / Asia, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, contrae, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (US / Asia, set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, contraj, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, contraj1, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, gryzor, contra, contra, gryzor, driver_device, 0, ROT90, "Konami", "Gryzor (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, gryzor1, contra, contra, gryzor, driver_device, 0, ROT90, "Konami", "Gryzor (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, contrab, contra, contra, contra, driver_device, 0, ROT90, "bootleg", "Contra (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, contrabj, contra, contra, contra, driver_device, 0, ROT90, "bootleg", "Contra (Japan bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, contrabj1, contra, contra, contra, driver_device, 0, ROT90, "bootleg", "Contra (Japan bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, contra, 0, contra, contra, contra_state, 0, ROT90, "Konami", "Contra (US / Asia, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, contra1, contra, contra, contra, contra_state, 0, ROT90, "Konami", "Contra (US / Asia, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, contrae, contra, contra, contra, contra_state, 0, ROT90, "Konami", "Contra (US / Asia, set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, contraj, contra, contra, contra, contra_state, 0, ROT90, "Konami", "Contra (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, contraj1, contra, contra, contra, contra_state, 0, ROT90, "Konami", "Contra (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, gryzor, contra, contra, gryzor, contra_state, 0, ROT90, "Konami", "Gryzor (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, gryzor1, contra, contra, gryzor, contra_state, 0, ROT90, "Konami", "Gryzor (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, contrab, contra, contra, contra, contra_state, 0, ROT90, "bootleg", "Contra (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, contrabj, contra, contra, contra, contra_state, 0, ROT90, "bootleg", "Contra (Japan bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, contrabj1, contra, contra, contra, contra_state, 0, ROT90, "bootleg", "Contra (Japan bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/coolpool.cpp b/src/mame/drivers/coolpool.cpp index f92ee4a445b..ef09bce91c0 100644 --- a/src/mame/drivers/coolpool.cpp +++ b/src/mame/drivers/coolpool.cpp @@ -778,7 +778,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( amerdart, coolpool_state ) +static MACHINE_CONFIG_START( amerdart ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, XTAL_40MHz) @@ -815,7 +815,7 @@ static MACHINE_CONFIG_START( amerdart, coolpool_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( coolpool, coolpool_state ) +static MACHINE_CONFIG_START( coolpool ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, XTAL_40MHz) @@ -1181,11 +1181,11 @@ DRIVER_INIT_MEMBER(coolpool_state,9ballsht) * *************************************/ -GAME( 1989, amerdart, 0, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, amerdart2, amerdart, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, amerdart3, amerdart, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, coolpool, 0, coolpool, coolpool, coolpool_state, coolpool, ROT0, "Catalina", "Cool Pool", 0 ) -GAME( 1993, 9ballsht, 0, 9ballsht, 9ballsht, coolpool_state, 9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 1)", 0 ) -GAME( 1993, 9ballsht2, 9ballsht, 9ballsht, 9ballsht, coolpool_state, 9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 2)", 0 ) -GAME( 1993, 9ballsht3, 9ballsht, 9ballsht, 9ballsht, coolpool_state, 9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 3)", 0 ) +GAME( 1989, amerdart, 0, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, amerdart2, amerdart, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, amerdart3, amerdart, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, coolpool, 0, coolpool, coolpool, coolpool_state, coolpool, ROT0, "Catalina", "Cool Pool", 0 ) +GAME( 1993, 9ballsht, 0, 9ballsht, 9ballsht, coolpool_state, 9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 1)", 0 ) +GAME( 1993, 9ballsht2, 9ballsht, 9ballsht, 9ballsht, coolpool_state, 9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 2)", 0 ) +GAME( 1993, 9ballsht3, 9ballsht, 9ballsht, 9ballsht, coolpool_state, 9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 3)", 0 ) GAME( 1993, 9ballshtc, 9ballsht, 9ballsht, 9ballsht, coolpool_state, 9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout Championship", 0 ) diff --git a/src/mame/drivers/coolridr.cpp b/src/mame/drivers/coolridr.cpp index 3b4a1d70199..28b18846103 100644 --- a/src/mame/drivers/coolridr.cpp +++ b/src/mame/drivers/coolridr.cpp @@ -3714,7 +3714,7 @@ WRITE_LINE_MEMBER(coolridr_state::scsp2_to_sh1_irq) #define MAIN_CLOCK XTAL_28_63636MHz -static MACHINE_CONFIG_START( coolridr, coolridr_state ) +static MACHINE_CONFIG_START( coolridr ) MCFG_CPU_ADD("maincpu", SH2, MAIN_CLOCK) // 28 mhz MCFG_CPU_PROGRAM_MAP(system_h1_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", coolridr_state, system_h1_main, "screen", 0, 1) @@ -3940,5 +3940,5 @@ DRIVER_INIT_MEMBER(coolridr_state, aquastge) m_colbase = 0; } -GAME( 1995, coolridr, 0, coolridr, coolridr, coolridr_state, coolridr, ROT0, "Sega", "Cool Riders",MACHINE_IMPERFECT_SOUND) // region is set in test mode, this set is for Japan, USA and Export (all regions) -GAMEL( 1995, aquastge, 0, aquastge, aquastge, coolridr_state, aquastge, ROT0, "Sega", "Aqua Stage",MACHINE_NOT_WORKING, layout_aquastge) +GAME ( 1995, coolridr, 0, coolridr, coolridr, coolridr_state, coolridr, ROT0, "Sega", "Cool Riders", MACHINE_IMPERFECT_SOUND) // region is set in test mode, this set is for Japan, USA and Export (all regions) +GAMEL( 1995, aquastge, 0, aquastge, aquastge, coolridr_state, aquastge, ROT0, "Sega", "Aqua Stage", MACHINE_NOT_WORKING, layout_aquastge) diff --git a/src/mame/drivers/cop01.cpp b/src/mame/drivers/cop01.cpp index d39649f0faa..e6ebcd6b94b 100644 --- a/src/mame/drivers/cop01.cpp +++ b/src/mame/drivers/cop01.cpp @@ -446,7 +446,7 @@ void cop01_state::machine_reset() } -static MACHINE_CONFIG_START( cop01, cop01_state ) +static MACHINE_CONFIG_START( cop01 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAINCPU_CLOCK/2) /* unknown clock / divider */ @@ -488,7 +488,7 @@ static MACHINE_CONFIG_START( cop01, cop01_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mightguy, cop01_state ) +static MACHINE_CONFIG_START( mightguy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAINCPU_CLOCK/2) /* unknown divider */ @@ -667,6 +667,6 @@ DRIVER_INIT_MEMBER(cop01_state,mightguy) * *************************************/ -GAME( 1985, cop01, 0, cop01, cop01, driver_device, 0, ROT0, "Nichibutsu", "Cop 01 (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, cop01a, cop01, cop01, cop01, driver_device, 0, ROT0, "Nichibutsu", "Cop 01 (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, mightguy, 0, mightguy, mightguy, cop01_state, mightguy, ROT270, "Nichibutsu", "Mighty Guy", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, cop01, 0, cop01, cop01, cop01_state, 0, ROT0, "Nichibutsu", "Cop 01 (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, cop01a, cop01, cop01, cop01, cop01_state, 0, ROT0, "Nichibutsu", "Cop 01 (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, mightguy, 0, mightguy, mightguy, cop01_state, mightguy, ROT270, "Nichibutsu", "Mighty Guy", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cops.cpp b/src/mame/drivers/cops.cpp index 2ca28f682db..a8c44f360ea 100644 --- a/src/mame/drivers/cops.cpp +++ b/src/mame/drivers/cops.cpp @@ -912,7 +912,7 @@ DRIVER_INIT_MEMBER(cops_state,cops) membank("sysbank1")->set_entry(2); } -static MACHINE_CONFIG_START( cops, cops_state ) +static MACHINE_CONFIG_START( cops ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6502,MAIN_CLOCK/2) @@ -948,7 +948,7 @@ static MACHINE_CONFIG_START( cops, cops_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( revlatns, cops_state ) +static MACHINE_CONFIG_START( revlatns ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6502,MAIN_CLOCK/2) @@ -1023,6 +1023,6 @@ ROM_START( revlatns ) ROM_END -GAMEL( 1994, cops, 0, cops, cops, cops_state, cops, ROT0, "Atari Games", "Cops (USA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops ) -GAMEL( 1994, copsuk, cops,cops, cops, cops_state, cops, ROT0, "Nova Productions / Deith Leisure","Cops (UK)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops ) +GAMEL( 1994, cops, 0, cops, cops, cops_state, cops, ROT0, "Atari Games", "Cops (USA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops ) +GAMEL( 1994, copsuk, cops,cops, cops, cops_state, cops, ROT0, "Nova Productions / Deith Leisure","Cops (UK)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops ) GAMEL( 1994, revlatns, 0, revlatns, revlatns, cops_state, cops, ROT0, "Nova Productions", "Revelations", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops ) diff --git a/src/mame/drivers/copsnrob.cpp b/src/mame/drivers/copsnrob.cpp index 5081902011f..8d6fab5b159 100644 --- a/src/mame/drivers/copsnrob.cpp +++ b/src/mame/drivers/copsnrob.cpp @@ -247,7 +247,7 @@ void copsnrob_state::machine_reset() } -static MACHINE_CONFIG_START( copsnrob, copsnrob_state ) +static MACHINE_CONFIG_START( copsnrob ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,14318180/16) /* 894886.25 kHz */ @@ -320,4 +320,4 @@ ROM_END * *************************************/ -GAMEL( 1976, copsnrob, 0, copsnrob, copsnrob, driver_device, 0, ROT0, "Atari", "Cops'n Robbers", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_copsnrob ) +GAMEL( 1976, copsnrob, 0, copsnrob, copsnrob, copsnrob_state, 0, ROT0, "Atari", "Cops'n Robbers", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_copsnrob ) diff --git a/src/mame/drivers/corona.cpp b/src/mame/drivers/corona.cpp index 7f6a48fdc22..8ea7f8695ad 100644 --- a/src/mame/drivers/corona.cpp +++ b/src/mame/drivers/corona.cpp @@ -1343,7 +1343,7 @@ INPUT_PORTS_END * Machine Drivers * *******************************************/ -static MACHINE_CONFIG_START( winner81, corona_state ) +static MACHINE_CONFIG_START( winner81 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, WC81_MAIN_XTAL/8) /* measured */ MCFG_CPU_PROGRAM_MAP(winner81_map) @@ -1378,7 +1378,7 @@ static MACHINE_CONFIG_START( winner81, corona_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( winner82, corona_state ) +static MACHINE_CONFIG_START( winner82 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, WC82_MAIN_XTAL/8) /* measured */ MCFG_CPU_PROGRAM_MAP(winner82_map) @@ -1412,7 +1412,7 @@ static MACHINE_CONFIG_START( winner82, corona_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( re800, corona_state ) +static MACHINE_CONFIG_START( re800 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */ MCFG_CPU_PROGRAM_MAP(re800_map) @@ -1447,7 +1447,7 @@ static MACHINE_CONFIG_START( re800, corona_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rcirulet, corona_state ) +static MACHINE_CONFIG_START( rcirulet ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */ MCFG_CPU_PROGRAM_MAP(re800_map) @@ -1481,7 +1481,7 @@ static MACHINE_CONFIG_START( rcirulet, corona_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( luckyrlt, corona_state ) +static MACHINE_CONFIG_START( luckyrlt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */ MCFG_CPU_PROGRAM_MAP(luckyrlt_map) @@ -1714,13 +1714,13 @@ ROM_END * Game Drivers * ******************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAME( 1981, winner81, winner82, winner81, winner81, driver_device, 0, ROT0, "Corona Co, LTD.", "Winners Circle (81, 28*28 PCB)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, winner81b, winner82, winner82, winner82, driver_device, 0, ROT0, "Corona Co, LTD.", "Winners Circle (81, 18*22 PCB)", 0 ) -GAME( 1982, winner82, 0, winner82, winner82, driver_device, 0, ROT0, "Corona Co, LTD.", "Winners Circle (82)", 0 ) -GAME( 198?, legrandc, winner82, winner82, winner82, driver_device, 0, ROT0, "Isermatic France S.A.", "Le Grandchamps", MACHINE_IMPERFECT_COLORS ) -GAMEL( 1991, re800ea, re800v1, re800, re800, driver_device, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (earlier, no attract)", 0, layout_re800 ) -GAMEL( 1991, re800v1, 0, re800, re800, driver_device, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (v1.0)", 0, layout_re800 ) -GAMEL( 1991, re800v3, 0, re800, re800v3, driver_device, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (v3.0)", MACHINE_IMPERFECT_COLORS, layout_re800 ) -GAMEL( 199?, rcirulet, 0, rcirulet, re800, driver_device, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RCI (6-players, Spanish)", 0, layout_re800 ) -GAMEL( 1990, luckyrlt, 0, luckyrlt, luckyrlt, driver_device, 0, ROT90, "", "Lucky Roulette Plus (6-players, Spanish)", 0, layout_luckyrlt ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAME( 1981, winner81, winner82, winner81, winner81, corona_state, 0, ROT0, "Corona Co, LTD.", "Winners Circle (81, 28*28 PCB)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, winner81b, winner82, winner82, winner82, corona_state, 0, ROT0, "Corona Co, LTD.", "Winners Circle (81, 18*22 PCB)", 0 ) +GAME( 1982, winner82, 0, winner82, winner82, corona_state, 0, ROT0, "Corona Co, LTD.", "Winners Circle (82)", 0 ) +GAME( 198?, legrandc, winner82, winner82, winner82, corona_state, 0, ROT0, "Isermatic France S.A.", "Le Grandchamps", MACHINE_IMPERFECT_COLORS ) +GAMEL( 1991, re800ea, re800v1, re800, re800, corona_state, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (earlier, no attract)", 0, layout_re800 ) +GAMEL( 1991, re800v1, 0, re800, re800, corona_state, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (v1.0)", 0, layout_re800 ) +GAMEL( 1991, re800v3, 0, re800, re800v3, corona_state, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (v3.0)", MACHINE_IMPERFECT_COLORS, layout_re800 ) +GAMEL( 199?, rcirulet, 0, rcirulet, re800, corona_state, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RCI (6-players, Spanish)", 0, layout_re800 ) +GAMEL( 1990, luckyrlt, 0, luckyrlt, luckyrlt, corona_state, 0, ROT90, "", "Lucky Roulette Plus (6-players, Spanish)", 0, layout_luckyrlt ) diff --git a/src/mame/drivers/cortex.cpp b/src/mame/drivers/cortex.cpp index fd96bc7feee..628f58b0307 100644 --- a/src/mame/drivers/cortex.cpp +++ b/src/mame/drivers/cortex.cpp @@ -74,7 +74,7 @@ void cortex_state::machine_reset() m_maincpu->ready_line(ASSERT_LINE); } -static MACHINE_CONFIG_START( cortex, cortex_state ) +static MACHINE_CONFIG_START( cortex ) /* basic machine hardware */ /* TMS9995 CPU @ 12.0 MHz */ // Standard variant, no overflow int @@ -102,5 +102,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, cortex, 0, 0, cortex, cortex, driver_device, 0, "Powertran Cybernetics", "Cortex", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, cortex, 0, 0, cortex, cortex, cortex_state, 0, "Powertran Cybernetics", "Cortex", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/cosmic.cpp b/src/mame/drivers/cosmic.cpp index 9fc7f551b86..8301e79c3ef 100644 --- a/src/mame/drivers/cosmic.cpp +++ b/src/mame/drivers/cosmic.cpp @@ -1000,7 +1000,7 @@ MACHINE_RESET_MEMBER(cosmic_state,cosmicg) m_maincpu->set_input_line(INT_9980A_RESET, CLEAR_LINE); } -static MACHINE_CONFIG_START( cosmic, cosmic_state ) +static MACHINE_CONFIG_START( cosmic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,Z80_MASTER_CLOCK/6) /* 1.8026 MHz */ @@ -1082,7 +1082,7 @@ static MACHINE_CONFIG_DERIVED( cosmica, cosmic ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cosmicg, cosmic_state ) +static MACHINE_CONFIG_START( cosmicg ) /* basic machine hardware */ MCFG_TMS99xx_ADD("maincpu", TMS9980A, COSMICG_MASTER_CLOCK/8, cosmicg_map, cosmicg_io_map) @@ -1597,19 +1597,19 @@ DRIVER_INIT_MEMBER(cosmic_state,panic) } -GAME( 1979, cosmicg, 0, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "Universal", "Cosmic Guerilla", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL /*| MACHINE_SUPPORTS_SAVE */) -GAME( 1979, cosmicgi, cosmicg, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "bootleg (Inder)", "Cosmic Guerilla (Spanish bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL /*| MACHINE_SUPPORTS_SAVE */) -GAME( 1979, cosmica, 0, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (version II)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, cosmica1, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (first version)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, cosmica2, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (early version II?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, nomnlnd, 0, nomnlnd, nomnlnd, cosmic_state, nomnlnd, ROT270, "Universal", "No Man's Land", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, cosmicg, 0, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "Universal", "Cosmic Guerilla", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL /*| MACHINE_SUPPORTS_SAVE */) +GAME( 1979, cosmicgi, cosmicg, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "bootleg (Inder)", "Cosmic Guerilla (Spanish bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL /*| MACHINE_SUPPORTS_SAVE */) +GAME( 1979, cosmica, 0, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (version II)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, cosmica1, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (first version)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, cosmica2, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (early version II?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, nomnlnd, 0, nomnlnd, nomnlnd, cosmic_state, nomnlnd, ROT270, "Universal", "No Man's Land", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1980, nomnlndg, nomnlnd, nomnlnd, nomnlndg, cosmic_state, nomnlnd, ROT270, "Universal (Gottlieb license)", "No Man's Land (Gottlieb)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, magspot, 0, magspot, magspot, driver_device, 0, ROT270, "Universal", "Magical Spot", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, magspot2, 0, magspot, magspot, driver_device, 0, ROT270, "Universal", "Magical Spot II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, panic, 0, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (version E)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, panic2, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, panic3, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, panich, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (harder)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, panicger, panic, panic, panic, cosmic_state, panic, ROT270, "Universal (ADP Automaten license)", "Space Panic (German)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, devzone, 0, devzone, devzone, cosmic_state, devzone, ROT270, "Universal", "Devil Zone", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, magspot, 0, magspot, magspot, cosmic_state, 0, ROT270, "Universal", "Magical Spot", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, magspot2, 0, magspot, magspot, cosmic_state, 0, ROT270, "Universal", "Magical Spot II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, panic, 0, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (version E)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, panic2, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, panic3, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, panich, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (harder)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, panicger, panic, panic, panic, cosmic_state, panic, ROT270, "Universal (ADP Automaten license)", "Space Panic (German)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, devzone, 0, devzone, devzone, cosmic_state, devzone, ROT270, "Universal", "Devil Zone", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1980, devzone2, devzone, devzone, devzone2, cosmic_state, devzone, ROT270, "Universal", "Devil Zone (easier)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cosmicos.cpp b/src/mame/drivers/cosmicos.cpp index 7ab8aa1e817..416c7f16624 100644 --- a/src/mame/drivers/cosmicos.cpp +++ b/src/mame/drivers/cosmicos.cpp @@ -499,7 +499,7 @@ QUICKLOAD_LOAD_MEMBER( cosmicos_state, cosmicos ) /* Machine Driver */ -static MACHINE_CONFIG_START( cosmicos, cosmicos_state ) +static MACHINE_CONFIG_START( cosmicos ) /* basic machine hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz) MCFG_CPU_PROGRAM_MAP(cosmicos_mem) @@ -558,5 +558,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, cosmicos, 0, 0, cosmicos, cosmicos, driver_device, 0, "Radio Bulletin", "Cosmicos", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1979, cosmicos, 0, 0, cosmicos, cosmicos, cosmicos_state, 0, "Radio Bulletin", "Cosmicos", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/cp1.cpp b/src/mame/drivers/cp1.cpp index c9a9205b492..939ccc0e358 100644 --- a/src/mame/drivers/cp1.cpp +++ b/src/mame/drivers/cp1.cpp @@ -42,12 +42,8 @@ public: virtual void machine_reset() override; DECLARE_READ8_MEMBER(port1_r); DECLARE_READ8_MEMBER(port2_r); - DECLARE_READ8_MEMBER(getbus); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); DECLARE_WRITE8_MEMBER(port1_w); DECLARE_WRITE8_MEMBER(port2_w); - DECLARE_WRITE8_MEMBER(putbus); DECLARE_QUICKLOAD_LOAD_MEMBER(quickload); DECLARE_READ8_MEMBER(i8155_read); @@ -113,29 +109,6 @@ WRITE8_MEMBER(cp1_state::port2_w) m_port2 = data; } -READ8_MEMBER(cp1_state::t0_r) -{ - logerror("t0_r\n"); - return 0; -} - -READ8_MEMBER(cp1_state::t1_r) -{ - logerror("t1_r\n"); - return 0; -} - -READ8_MEMBER(cp1_state::getbus) -{ - logerror("getbus\n"); - return 0; -} - -WRITE8_MEMBER(cp1_state::putbus) -{ - logerror("putbus\n"); -} - READ8_MEMBER(cp1_state::i8155_read) { uint8_t data = 0; @@ -209,11 +182,6 @@ WRITE8_MEMBER(cp1_state::i8155_portc_w) static ADDRESS_MAP_START( cp1_io , AS_IO, 8, cp1_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE( 0x00, 0xff ) AM_READWRITE( i8155_read, i8155_write) - AM_RANGE( MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE( port1_r, port1_w ) - AM_RANGE( MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE( port2_r, port2_w ) - AM_RANGE( MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE( getbus, putbus ) - AM_RANGE( MCS48_PORT_T0, MCS48_PORT_T0) AM_READ( t0_r ) - AM_RANGE( MCS48_PORT_T1, MCS48_PORT_T1) AM_READ( t1_r ) ADDRESS_MAP_END /* Input ports */ @@ -283,10 +251,18 @@ QUICKLOAD_LOAD_MEMBER( cp1_state, quickload ) return image_init_result::PASS; } -static MACHINE_CONFIG_START( cp1, cp1_state ) +static MACHINE_CONFIG_START( cp1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8049, XTAL_6MHz) MCFG_CPU_IO_MAP(cp1_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(cp1_state, port1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(cp1_state, port1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(cp1_state, port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(cp1_state, port2_w)) + MCFG_MCS48_PORT_BUS_IN_CB(LOGGER("getbus")) + MCFG_MCS48_PORT_BUS_OUT_CB(LOGGER("putbus")) + MCFG_MCS48_PORT_T0_IN_CB(LOGGER("t0_r")) + MCFG_MCS48_PORT_T1_IN_CB(LOGGER("t1_r")) MCFG_DEVICE_ADD("i8155", I8155, 0) MCFG_I8155_OUT_PORTA_CB(WRITE8(cp1_state, i8155_porta_w)) @@ -321,5 +297,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, cp1, 0, 0, cp1, cp1, driver_device, 0, "Kosmos", "CP1 / Computer Praxis", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, cp1, 0, 0, cp1, cp1, cp1_state, 0, "Kosmos", "CP1 / Computer Praxis", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp index 46068de05dc..490b6489f3c 100644 --- a/src/mame/drivers/cps1.cpp +++ b/src/mame/drivers/cps1.cpp @@ -13,7 +13,7 @@ Paul Leaman (paul@vortexcomputing.demon.co.uk) 68000 clock speeds are unknown for all games (except where commented) todo: move the bootleg sets with modified hardware into their own - drivers, like fcrash.c + drivers, like fcrash.cpp Notes @@ -3298,7 +3298,7 @@ MACHINE_START_MEMBER(cps_state,qsound) membank("bank1")->configure_entries(0, 6, memregion("audiocpu")->base() + 0x10000, 0x4000); } -static MACHINE_CONFIG_START( cps1_10MHz, cps_state ) +static MACHINE_CONFIG_START( cps1_10MHz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz ) /* verified on pcb */ @@ -3314,7 +3314,7 @@ static MACHINE_CONFIG_START( cps1_10MHz, cps_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -3334,7 +3334,7 @@ static MACHINE_CONFIG_START( cps1_10MHz, cps_state ) MCFG_SOUND_ROUTE(1, "mono", 0.35) /* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */ - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80 + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80 MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -9785,6 +9785,52 @@ ROM_START( sf2koryu ) ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) ROM_END +ROM_START( sf2ceupl ) // only the program ROMs were dumped + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "S2.U222", 0x000000, 0x80000, CRC(0804f973) SHA1(3f87ccc9020523f3d9d390f165793f5e426185a3) ) // 27C040 + ROM_LOAD16_BYTE( "S1.U196", 0x000001, 0x80000, CRC(2bc76a02) SHA1(6a51a4be33e61d5c70e53d5f832298ef48572a17) ) // 27C040 + ROM_LOAD16_BYTE( "10.U221", 0x100000, 0x20000, CRC(d1707134) SHA1(5bfdf7bc57bdb85183647ebb175346070dd102ee) ) // 27C010 + ROM_LOAD16_BYTE( "9.U195", 0x100001, 0x20000, CRC(cd1d5666) SHA1(8befd2c324eb29bdad6fc8fb2554cdfaf9808f9b) ) // 27C010 + + ROM_REGION( 0x600000, "gfx", 0 ) + ROMX_LOAD( "s92_01.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-1m.3a + ROMX_LOAD( "s92_02.4a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-3m.5a + ROMX_LOAD( "s92_03.5a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-2m.4a + ROMX_LOAD( "s92_04.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-4m.6a + ROMX_LOAD( "s92_05.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-5m.7a + ROMX_LOAD( "s92_06.8a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-7m.9a + ROMX_LOAD( "s92_07.9a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-6m.8a + ROMX_LOAD( "s92_08.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-8m.10a + ROMX_LOAD( "s92_10.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-10m.3c + ROMX_LOAD( "s92_11.4c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-12m.5c + ROMX_LOAD( "s92_12.5c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-11m.4c + ROMX_LOAD( "s92_13.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-13m.6c + + ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_LOAD( "s92_09.12a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) // == s92_09.11a + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) + ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) ) + ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) + ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) ) + + ROM_REGION( 0x0200, "cboardplds", 0 ) + ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) + ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) +ROM_END + ROM_START( sf2dongb ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "1.8f", 0x000000, 0x80000, CRC(19fffa37) SHA1(db464c64de3aebe929c85ee167961de05d2c16be) ) @@ -10764,6 +10810,53 @@ ROM_START( dinoj ) ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END +ROM_START( dinoa ) // only 22 and 23 in the romset. Seems to come from an official capcom board but no PCB scans / pics available. + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "23.bin", 0x000000, 0x80000, CRC(f477f7a0) SHA1(bad4979093ced8ae09273454c80de704b798e590) ) + ROM_LOAD16_WORD_SWAP( "22.bin", 0x080000, 0x80000, CRC(1e534ca5) SHA1(8233a1a5de2a1fdd2b1c2b8616eda29db4be725a) ) + ROM_LOAD16_WORD_SWAP( "cdj_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) ) // == cde_21a.6f + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd_01.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-1m.3a + ROMX_LOAD( "cd_02.4a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-3m.5a + ROMX_LOAD( "cd_03.5a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-2m.4a + ROMX_LOAD( "cd_04.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-4m.6a + ROMX_LOAD( "cd_05.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-5m.7a + ROMX_LOAD( "cd_06.8a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-7m.9a + ROMX_LOAD( "cd_07.9a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-6m.8a + ROMX_LOAD( "cd_08.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-8m.10a + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD( "cd63b.1a", 0x0000, 0x0117, CRC(ef72e902) SHA1(82fea3f63869c245d0dce2809085208fe719b57a) ) + ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) + ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) ) + + ROM_REGION( 0x0200, "cboardplds", 0 ) + ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) + + ROM_REGION( 0x0200, "dboardplds", 0 ) + ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) + ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) + ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) + ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) +ROM_END + /* Chinese bootleg board */ ROM_START( dinohunt ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ @@ -12407,6 +12500,7 @@ GAME( 1992, sf2m10, sf2ce, sf2m10, sf2hack, cps_state, cps1, GAME( 1992, sf2yyc, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (YYC, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version GAME( 1992, sf2koryu, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg)", MACHINE_SUPPORTS_SAVE ) // 811102 !!! - based on World version GAME( 1992, sf2dongb, sf2ce, cps1_12MHz, sf2, cps_state, sf2dongb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version +GAME( 1992, sf2ceupl, sf2ce, sf2m10, sf2hack, cps_state, cps1, ROT0, "bootleg (UPL)", "Street Fighter II': Champion Edition (UPL bootleg)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on Japan version GAME( 1992, cworld2j, 0, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, cworld2ja, cworld2j, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 90629B-3, no battery)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, cworld2jb, cworld2j, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 91634B-2)", MACHINE_SUPPORTS_SAVE ) @@ -12429,7 +12523,8 @@ GAME( 1992, sf2hfj, sf2hf, cps1_12MHz, sf2j, cps_state, cps1, GAME( 1993, dino, 0, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (World 930201)", MACHINE_SUPPORTS_SAVE ) // "ETC" GAME( 1993, dinou, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (USA 930201)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, dinoj, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs: Kyouryuu Shin Seiki (Japan 930201)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, dinohunt, dino, wofhfh, dinoh, cps_state, dinohunt, ROT0, "bootleg", "Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs)", MACHINE_SUPPORTS_SAVE ) // 930223 - based on Asia TW version, the original is still undumped +GAME( 1993, dinoa, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (Asia TW 930223, bootleg?)", MACHINE_SUPPORTS_SAVE ) // Title screen shows "distributed by Hung Hsi Enterprise". Hung Hsi produced some sf2 bootlegs. +GAME( 1993, dinohunt, dino, wofhfh, dinoh, cps_state, dinohunt, ROT0, "bootleg", "Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs)", MACHINE_SUPPORTS_SAVE ) // 930223 - based on Asia TW version, the original might still be undumped GAME( 1993, punisher, 0, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (World 930422)", MACHINE_SUPPORTS_SAVE ) // "ETC" GAME( 1993, punisheru, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (USA 930422)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, punisherh, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (Hispanic 930422)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp index 6b066c24b50..6b608b988bd 100644 --- a/src/mame/drivers/cps2.cpp +++ b/src/mame/drivers/cps2.cpp @@ -1301,7 +1301,7 @@ MACHINE_START_MEMBER(cps_state,cps2) } -static MACHINE_CONFIG_START( cps2, cps_state ) +static MACHINE_CONFIG_START( cps2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -1322,7 +1322,7 @@ static MACHINE_CONFIG_START( cps2, cps_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -1353,7 +1353,7 @@ static MACHINE_CONFIG_DERIVED( gigaman2, cps2 ) MCFG_CPU_MODIFY("maincpu") - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) MACHINE_CONFIG_END @@ -8182,6 +8182,42 @@ ROM_START( ssf2tbj1 ) ROM_LOAD( "ssf2tbj.key", 0x000000, 0x000014, CRC(bcc2e017) SHA1(9c375eeffa599be4994e8efd7dee9d0e67613a13) ) ROM_END +ROM_START( ssf2tba ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "ssfa.03tb", 0x000000, 0x80000, CRC(8de631d2) SHA1(e9249413149c6799faaece09226cdd37906b1a63) ) + ROM_LOAD16_WORD_SWAP( "ssfa.04ta", 0x080000, 0x80000, CRC(abef3042) SHA1(71062765bd1337780fb347d277ebeca5d7f91c05) ) + ROM_LOAD16_WORD_SWAP( "ssfa.05t", 0x100000, 0x80000, CRC(edfa018f) SHA1(61f80f3a1674c900df34095601db92d98bb28096) ) + ROM_LOAD16_WORD_SWAP( "ssfa.06tb", 0x180000, 0x80000, CRC(2b9d1dbc) SHA1(e7136c2269c54f1fdfcdefdefc5dce0a63f38960) ) + ROM_LOAD16_WORD_SWAP( "ssfa.07t", 0x200000, 0x80000, CRC(f4a25159) SHA1(83967820a82a20030ddb1404e73b73e20605e907) ) + + ROM_REGION( 0xc00000, "gfx", 0 ) + ROMX_LOAD( "ssf.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_LOAD( "ssf-01a", 0x00000, 0x08000, CRC(71fcdfc9) SHA1(c816f47ce10b8e85504638ada9117ec26ddaab77) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "ssf.q01", 0x000000, 0x080000, CRC(a6f9da5c) SHA1(6d19f83a01bd25b838d5c2871f7964529d926c98) ) + ROM_LOAD( "ssf.q02", 0x080000, 0x080000, CRC(8c66ae26) SHA1(32a82aee6ed4480e5a990f9af161734c7c0a1403) ) + ROM_LOAD( "ssf.q03", 0x100000, 0x080000, CRC(695cc2ca) SHA1(c2675f0233608b76de528d2a6ef19846d1348060) ) + ROM_LOAD( "ssf.q04", 0x180000, 0x080000, CRC(9d9ebe32) SHA1(9b26329370041374f1a90b479a172d2bc2801c4d) ) + ROM_LOAD( "ssf.q05", 0x200000, 0x080000, CRC(4770e7b7) SHA1(0e764f0befb9227b0b36508d8ca8ec9be31bcb05) ) + ROM_LOAD( "ssf.q06", 0x280000, 0x080000, CRC(4e79c951) SHA1(1144781d7dc57ef8a6458d982f5c91548ff59e27) ) + ROM_LOAD( "ssf.q07", 0x300000, 0x080000, CRC(cdd14313) SHA1(ebe767a9d4b51dba4282fa0a36a546a88620dd59) ) + ROM_LOAD( "ssf.q08", 0x380000, 0x080000, CRC(6f5a088c) SHA1(6c0b4690479647a99d76335f174be8455b4ff118) ) + + ROM_REGION( 0x20, "key", 0 ) + ROM_LOAD( "ssf2tba.key", 0x000000, 0x000014, CRC(8d2740ed) SHA1(a211373e6f45ef073f36bda2d6fbfc2cd5c7866b) ) +ROM_END + ROM_START( ssf2tbh ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "ssfh.03tb", 0x000000, 0x80000, CRC(6db7d28b) SHA1(b37f3287c51564ee0fdab499787b37166d1eb76d) ) @@ -9869,6 +9905,7 @@ GAME( 1993, ssf2tb, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, GAME( 1993, ssf2tbr1, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 930911)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode GAME( 1993, ssf2tbj, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 931005)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode GAME( 1993, ssf2tbj1, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 930911)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode +GAME( 1993, ssf2tba, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Asia 931005)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode GAME( 1993, ssf2tbh, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Hispanic 931005)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode GAME( 1993, ecofghtr, 0, cps2, ecofghtr, cps_state, ecofghtr, ROT0, "Capcom", "Eco Fighters (World 931203)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, ecofghtru, ecofghtr, cps2, ecofghtr, cps_state, ecofghtr, ROT0, "Capcom", "Eco Fighters (USA 940215)", MACHINE_SUPPORTS_SAVE ) @@ -11612,7 +11649,7 @@ ROM_END GAME( 1993, ddtodd, ddtod, dead_cps2, cps2_4p4b, cps_state, cps2, ROT0, "bootleg", "Dungeons & Dragons: Tower of Doom (Euro 940412 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ecofghtrd,ecofghtr, dead_cps2, ecofghtr, cps_state, ecofghtr, ROT0, "bootleg", "Eco Fighters (World 931203 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ecofghtrd,ecofghtr, dead_cps2, ecofghtr, cps_state, ecofghtr,ROT0, "bootleg", "Eco Fighters (World 931203 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, ssf2ud, ssf2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Super Street Fighter II: The New Challengers (USA 930911 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, ssf2tbd, ssf2, dead_cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "bootleg", "Super Street Fighter II: The Tournament Battle (World 931119 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, armwar1d, armwar, dead_cps2, cps2_3p3b, cps_state, cps2, ROT0, "bootleg", "Armored Warriors (Euro 941011 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp index 1983758a118..f2468a0bc62 100644 --- a/src/mame/drivers/cps3.cpp +++ b/src/mame/drivers/cps3.cpp @@ -324,7 +324,7 @@ Notes: DL-2829 CCU SD07-1514 (QFP208) - Probably a companion CPU or co-processor. Decapping reveals it is manufactured by Toshiba. The 'Work RAM' is connected to it. - DL-2929 IOU SD08-1513 (QFP208) - I/O controller. + DL-2929 IOU SD08-1513 (QFP208) - I/O controller, next to 3.6864MHz XTAL. DL-3329 SSU SD04-1536 (QFP144) - Sound chip, clocked at 21.47725MHz (42.9545/2). It has 32k SRAM connected to it. DL-3429 GLL1 SD06-1537 (QFP144) - DMA memory/bus controller. @@ -1202,7 +1202,7 @@ uint32_t cps3_state::screen_update_cps3(screen_device &screen, bitmap_rgb32 &bit if (!flipx) current_xpos = (xpos+xpos2+((xx*16*xinc)>>16)); else current_xpos = (xpos+xpos2-((xx*16*xinc)>>16)); - //current_xpos += rand()&0x3ff; + //current_xpos += machine().rand()&0x3ff; current_xpos += gscrollx; current_xpos += 1; current_xpos &=0x3ff; @@ -2519,7 +2519,7 @@ static MACHINE_CONFIG_FRAGMENT( simm6_128mbit ) MCFG_FUJITSU_29F016A_ADD("simm6.7") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cps3, cps3_state ) +static MACHINE_CONFIG_START( cps3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH2, 6250000*4) // external clock is 6.25 Mhz, it sets the internal multiplier to 4x (this should probably be handled in the core..) MCFG_CPU_PROGRAM_MAP(cps3_map) @@ -3942,15 +3942,15 @@ GAME( 1999, jojobaner1,jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0 // bootlegs, hold START1 during bootup to change games // newest revision, fixes some issues with Warzard decryption. -GAME( 1999, cps3boot, 0, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (V4)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, cps3boota, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (V5)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3boot, 0, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (V4)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3boota, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (V5)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, cps3booto, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (older)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, cps3bootao, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (older)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3booto, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (older)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3bootao, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (older)", MACHINE_IMPERFECT_GRAPHICS ) // this doesn't play 2nd Impact despite it being listed. 2nd Impact uses separate data/code encryption and can't be decrypted cleanly for a standard SH2. Selecting it just flashes in a copy of 3rd Strike with the 2nd Impact loading screen -GAME( 1999, cps3booto2, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (oldest) (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure and Red Earth only)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3booto2, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (oldest) (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure and Red Earth only)", MACHINE_IMPERFECT_GRAPHICS ) // this does not play Red Earth or the 2 Jojo games. New Generation and 3rd Strike have been heavily modified to work with the separate code/data encryption a dead cart / 2nd Impact cart has. Selecting the other games will give an 'invalid CD' message. GAME( 1999, cps3bootao2, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (oldest) (New Generation, 2nd Impact and 3rd Strike only)", MACHINE_IMPERFECT_GRAPHICS ) // these are test bootleg CDs for running 2nd Impact on a standard SH2 -GAME( 1999, cps3bs32, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, V3)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, cps3bs32a, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, older)", MACHINE_IMPERFECT_GRAPHICS ) // older / buggier hack +GAME( 1999, cps3bs32, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, V3)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, cps3bs32a, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, older)", MACHINE_IMPERFECT_GRAPHICS ) // older / buggier hack diff --git a/src/mame/drivers/craft.cpp b/src/mame/drivers/craft.cpp index 0693991486f..cf54843ddbf 100644 --- a/src/mame/drivers/craft.cpp +++ b/src/mame/drivers/craft.cpp @@ -237,7 +237,7 @@ void craft_state::machine_reset() m_last_cycles = 0; } -static MACHINE_CONFIG_START( craft, craft_state ) +static MACHINE_CONFIG_START( craft ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ATMEGA88, MASTER_CLOCK) @@ -269,5 +269,5 @@ ROM_START( craft ) ROM_LOAD( "eeprom.raw", 0x0000, 0x0200, CRC(e18a2af9) SHA1(81fc6f2d391edfd3244870214fac37929af0ac0c) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ CONS(2008, craft, 0, 0, craft, craft, craft_state, craft, "Linus Akesson", "Craft", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/crbaloon.cpp b/src/mame/drivers/crbaloon.cpp index 034acc2d81f..6ee061aecdc 100644 --- a/src/mame/drivers/crbaloon.cpp +++ b/src/mame/drivers/crbaloon.cpp @@ -359,7 +359,7 @@ INTERRUPT_GEN_MEMBER(crbaloon_state::vblank_irq) } -static MACHINE_CONFIG_START( crbaloon, crbaloon_state ) +static MACHINE_CONFIG_START( crbaloon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CRBALOON_MASTER_XTAL / 3) @@ -436,5 +436,5 @@ ROM_END * *************************************/ -GAME( 1980, crbaloon, 0, crbaloon, crbaloon, driver_device, 0, ROT90, "Taito Corporation", "Crazy Balloon (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, crbaloon2,crbaloon, crbaloon, crbaloon, driver_device, 0, ROT90, "Taito Corporation", "Crazy Balloon (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, crbaloon, 0, crbaloon, crbaloon, crbaloon_state, 0, ROT90, "Taito Corporation", "Crazy Balloon (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, crbaloon2,crbaloon, crbaloon, crbaloon, crbaloon_state, 0, ROT90, "Taito Corporation", "Crazy Balloon (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/crgolf.cpp b/src/mame/drivers/crgolf.cpp index 90687667347..cbfc7c691a4 100644 --- a/src/mame/drivers/crgolf.cpp +++ b/src/mame/drivers/crgolf.cpp @@ -492,7 +492,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( crgolf, crgolf_state ) +static MACHINE_CONFIG_START( crgolf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MASTER_CLOCK/3/2) @@ -535,7 +535,7 @@ static MACHINE_CONFIG_DERIVED( crgolfhi, crgolf ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(crgolf_state, vck_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S64_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -796,11 +796,11 @@ DRIVER_INIT_MEMBER(crgolf_state,crgolfhi) * *************************************/ -GAME( 1984, crgolf, 0, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Crowns Golf (834-5419-04)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, crgolfa, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Crowns Golf (834-5419-03)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, crgolfb, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Crowns Golf (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, crgolfc, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Champion Golf", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, crgolfbt, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "bootleg", "Champion Golf (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, crgolfhi, 0, crgolfhi, crgolf, crgolf_state, crgolfhi, ROT0, "Nasco Japan", "Crowns Golf in Hawaii" , MACHINE_SUPPORTS_SAVE ) +GAME( 1984, crgolf, 0, crgolf, crgolf, crgolf_state, 0, ROT0, "Nasco Japan", "Crowns Golf (834-5419-04)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, crgolfa, crgolf, crgolf, crgolf, crgolf_state, 0, ROT0, "Nasco Japan", "Crowns Golf (834-5419-03)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, crgolfb, crgolf, crgolf, crgolf, crgolf_state, 0, ROT0, "Nasco Japan", "Crowns Golf (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, crgolfc, crgolf, crgolf, crgolf, crgolf_state, 0, ROT0, "Nasco Japan", "Champion Golf", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, crgolfbt, crgolf, crgolf, crgolf, crgolf_state, 0, ROT0, "bootleg", "Champion Golf (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, crgolfhi, 0, crgolfhi, crgolf, crgolf_state, crgolfhi, ROT0, "Nasco Japan", "Crowns Golf in Hawaii", MACHINE_SUPPORTS_SAVE ) -GAME( 198?, mastrglf, 0, mastrglf, crgolf, driver_device, 0, ROT0, "Nasco", "Master's Golf", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) +GAME( 198?, mastrglf, 0, mastrglf, crgolf, crgolf_state, 0, ROT0, "Nasco", "Master's Golf", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/crimfght.cpp b/src/mame/drivers/crimfght.cpp index c35f32de4fb..ed3e8cf900c 100644 --- a/src/mame/drivers/crimfght.cpp +++ b/src/mame/drivers/crimfght.cpp @@ -297,7 +297,7 @@ CUSTOM_INPUT_MEMBER( crimfght_state::system_r ) return data >> 4; } -static MACHINE_CONFIG_START( crimfght, crimfght_state ) +static MACHINE_CONFIG_START( crimfght ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) /* 052001 (verified on pcb) */ @@ -435,6 +435,6 @@ ROM_END ***************************************************************************/ -GAME( 1989, crimfght, 0, crimfght, crimfght, driver_device, 0, ROT0, "Konami", "Crime Fighters (World 2 players)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, crimfghtu, crimfght, crimfght, crimfghtu, driver_device,0, ROT0, "Konami", "Crime Fighters (US 4 Players)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, crimfghtj, crimfght, crimfght, crimfght, driver_device,0, ROT0, "Konami", "Crime Fighters (Japan 2 Players)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, crimfght, 0, crimfght, crimfght, crimfght_state, 0, ROT0, "Konami", "Crime Fighters (World 2 players)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, crimfghtu, crimfght, crimfght, crimfghtu, crimfght_state, 0, ROT0, "Konami", "Crime Fighters (US 4 Players)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, crimfghtj, crimfght, crimfght, crimfght, crimfght_state, 0, ROT0, "Konami", "Crime Fighters (Japan 2 Players)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/crospang.cpp b/src/mame/drivers/crospang.cpp index 827e20ac4bf..78b49862193 100644 --- a/src/mame/drivers/crospang.cpp +++ b/src/mame/drivers/crospang.cpp @@ -336,7 +336,7 @@ void crospang_state::machine_reset() } -static MACHINE_CONFIG_START( crospang, crospang_state ) +static MACHINE_CONFIG_START( crospang ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14318180) @@ -378,7 +378,7 @@ static MACHINE_CONFIG_START( crospang, crospang_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/crshrace.cpp b/src/mame/drivers/crshrace.cpp index fb4c3dc74dd..ab26cbc1f8a 100644 --- a/src/mame/drivers/crshrace.cpp +++ b/src/mame/drivers/crshrace.cpp @@ -418,7 +418,7 @@ void crshrace_state::machine_reset() m_pending_command = 0; } -static MACHINE_CONFIG_START( crshrace, crshrace_state ) +static MACHINE_CONFIG_START( crshrace ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,16000000) /* 16 MHz ??? */ @@ -436,7 +436,8 @@ static MACHINE_CONFIG_START( crshrace, crshrace_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(crshrace_state, screen_update_crshrace) - MCFG_SCREEN_VBLANK_DRIVER(crshrace_state, screen_eof_crshrace) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("spriteram2", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", crshrace) @@ -565,5 +566,5 @@ DRIVER_INIT_MEMBER(crshrace_state,crshrace2) } -GAME( 1993, crshrace, 0, crshrace, crshrace, crshrace_state, crshrace, ROT270, "Video System Co.", "Lethal Crash Race (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, crshrace, 0, crshrace, crshrace, crshrace_state, crshrace, ROT270, "Video System Co.", "Lethal Crash Race (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1993, crshrace2, crshrace, crshrace, crshrace2, crshrace_state, crshrace2, ROT270, "Video System Co.", "Lethal Crash Race (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/crvision.cpp b/src/mame/drivers/crvision.cpp index 2222abc56fd..8676d756ccf 100644 --- a/src/mame/drivers/crvision.cpp +++ b/src/mame/drivers/crvision.cpp @@ -731,10 +731,10 @@ static SLOT_INTERFACE_START(crvision_cart) SLOT_INTERFACE_END /*------------------------------------------------- - MACHINE_CONFIG_START( creativision, crvision_state ) + MACHINE_CONFIG_START( creativision ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( creativision, crvision_state ) +static MACHINE_CONFIG_START( creativision ) // basic machine hardware MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(crvision_map) @@ -797,7 +797,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_DERIVED( pal, creativision ) -------------------------------------------------*/ -static MACHINE_CONFIG_DERIVED_CLASS( pal, creativision, crvision_pal_state ) +static MACHINE_CONFIG_DERIVED( pal, creativision ) // video hardware MCFG_DEVICE_ADD( TMS9929_TAG, TMS9929, XTAL_10_738635MHz / 2 ) MCFG_TMS9928A_VRAM_SIZE(0x4000) @@ -807,10 +807,10 @@ static MACHINE_CONFIG_DERIVED_CLASS( pal, creativision, crvision_pal_state ) MACHINE_CONFIG_END /*------------------------------------------------- - MACHINE_CONFIG_START( lasr2001, laser2001_state ) + MACHINE_CONFIG_START( lasr2001 ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( lasr2001, laser2001_state ) +static MACHINE_CONFIG_START( lasr2001 ) // basic machine hardware MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_17_73447MHz/9) MCFG_CPU_PROGRAM_MAP(lasr2001_map) @@ -895,14 +895,14 @@ ROM_END SYSTEM DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS( 1982, crvision, 0, 0, pal, crvision, driver_device, 0, "Video Technology", "CreatiVision", 0 ) -CONS( 1982, fnvision, crvision, 0, pal, crvision, driver_device, 0, "Video Technology", "FunVision", 0 ) -CONS( 1982, crvisioj, crvision, 0, ntsc, crvision, driver_device, 0, "Cheryco", "CreatiVision (Japan)", 0 ) -CONS( 1982, wizzard, crvision, 0, pal, crvision, driver_device, 0, "Dick Smith Electronics", "Wizzard (Oceania)", 0 ) -CONS( 1982, rameses, crvision, 0, pal, crvision, driver_device, 0, "Hanimex", "Rameses (Oceania)", 0 ) -CONS( 1983, vz2000, crvision, 0, pal, crvision, driver_device, 0, "Dick Smith Electronics", "VZ 2000 (Oceania)", 0 ) -CONS( 1983, crvisio2, crvision, 0, pal, crvision, driver_device, 0, "Video Technology", "CreatiVision MK-II (Europe)", 0 ) -//COMP( 1983, lasr2001, 0, 0, lasr2001, lasr2001, driver_device, 0, "Video Technology", "Laser 2001", MACHINE_NOT_WORKING ) -//COMP( 1983, vz2001, lasr2001, 0, lasr2001, lasr2001, driver_device, 0, "Dick Smith Electronics", "VZ 2001 (Oceania)", MACHINE_NOT_WORKING ) -COMP( 1983, manager, 0, 0, lasr2001, manager, driver_device, 0, "Salora", "Manager (Finland)", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1982, crvision, 0, 0, pal, crvision, crvision_pal_state, 0, "Video Technology", "CreatiVision", 0 ) +CONS( 1982, fnvision, crvision, 0, pal, crvision, crvision_pal_state, 0, "Video Technology", "FunVision", 0 ) +CONS( 1982, crvisioj, crvision, 0, ntsc, crvision, crvision_state, 0, "Cheryco", "CreatiVision (Japan)", 0 ) +CONS( 1982, wizzard, crvision, 0, pal, crvision, crvision_pal_state, 0, "Dick Smith Electronics", "Wizzard (Oceania)", 0 ) +CONS( 1982, rameses, crvision, 0, pal, crvision, crvision_pal_state, 0, "Hanimex", "Rameses (Oceania)", 0 ) +CONS( 1983, vz2000, crvision, 0, pal, crvision, crvision_pal_state, 0, "Dick Smith Electronics", "VZ 2000 (Oceania)", 0 ) +CONS( 1983, crvisio2, crvision, 0, pal, crvision, crvision_pal_state, 0, "Video Technology", "CreatiVision MK-II (Europe)", 0 ) +//COMP( 1983, lasr2001, 0, 0, lasr2001, lasr2001, laser2001_state, 0, "Video Technology", "Laser 2001", MACHINE_NOT_WORKING ) +//COMP( 1983, vz2001, lasr2001, 0, lasr2001, lasr2001, laser2001_state, 0, "Dick Smith Electronics", "VZ 2001 (Oceania)", MACHINE_NOT_WORKING ) +COMP( 1983, manager, 0, 0, lasr2001, manager, laser2001_state, 0, "Salora", "Manager (Finland)", 0 ) diff --git a/src/mame/drivers/crystal.cpp b/src/mame/drivers/crystal.cpp index c0a7a39d24d..93fe482e5b0 100644 --- a/src/mame/drivers/crystal.cpp +++ b/src/mame/drivers/crystal.cpp @@ -279,7 +279,7 @@ public: virtual void machine_start() override; virtual void machine_reset() override; uint32_t screen_update_crystal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_crystal(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_crystal); INTERRUPT_GEN_MEMBER(crystal_interrupt); TIMER_CALLBACK_MEMBER(Timercb); IRQ_CALLBACK_MEMBER(icallback); @@ -695,6 +695,17 @@ static ADDRESS_MAP_START( trivrus_mem, AS_PROGRAM, 32, crystal_state ) // AM_RANGE(0x44414F4C, 0x44414F7F) AM_RAM AM_SHARE("reset_patch") ADDRESS_MAP_END +static ADDRESS_MAP_START( crospuzl_mem, AS_PROGRAM, 32, crystal_state ) + AM_RANGE(0x01500000, 0x01500003) AM_READ(FlashCmd_r) + AM_RANGE(0x01500100, 0x01500103) AM_WRITE(FlashCmd_w) + AM_RANGE(0x01510000, 0x01510003) AM_READ_PORT("IN0") + AM_RANGE(0x01511000, 0x01511003) AM_READ_PORT("IN1") + AM_RANGE(0x01512000, 0x01512003) AM_READ_PORT("IN2") + AM_RANGE(0x01513000, 0x01513003) AM_READ_PORT("IN3") + AM_IMPORT_FROM( trivrus_mem ) + +ADDRESS_MAP_END + // Crazy Dou Di Zhu II // To do: HY04 (pic?) protection @@ -980,7 +991,7 @@ uint32_t crystal_state::screen_update_crystal(screen_device &screen, bitmap_ind1 return 0; } -void crystal_state::screen_eof_crystal(screen_device &screen, bool state) +WRITE_LINE_MEMBER(crystal_state::screen_vblank_crystal) { // rising edge if (state) @@ -1242,6 +1253,113 @@ static INPUT_PORTS_START(trivrus) PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END +static INPUT_PORTS_START(crospuzl) + PORT_START("IN0") + PORT_DIPNAME( 0x01, 0x01, "DSW1" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PORT_DIPNAME( 0x01, 0x01, "IN1" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN2") + PORT_DIPNAME( 0x01, 0x01, "IN2" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN3") + PORT_DIPNAME( 0x01, 0x01, "IN3" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("PCB-SW1") + PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END static INPUT_PORTS_START(crzyddz2) PORT_START("P1_P2") // 1500002 & 1500000 @@ -1308,7 +1426,7 @@ static INPUT_PORTS_START(crzyddz2) INPUT_PORTS_END -static MACHINE_CONFIG_START( crystal, crystal_state ) +static MACHINE_CONFIG_START( crystal ) MCFG_CPU_ADD("maincpu", SE3208, 43000000) MCFG_CPU_PROGRAM_MAP(crystal_mem) @@ -1323,7 +1441,7 @@ static MACHINE_CONFIG_START( crystal, crystal_state ) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479) MCFG_SCREEN_UPDATE_DRIVER(crystal_state, screen_update_crystal) - MCFG_SCREEN_VBLANK_DRIVER(crystal_state, screen_eof_crystal) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(crystal_state, screen_vblank_crystal)) MCFG_SCREEN_PALETTE("palette") MCFG_DEVICE_ADD("vr0", VIDEO_VRENDER0, 0) @@ -1347,6 +1465,10 @@ static MACHINE_CONFIG_DERIVED( trivrus, crystal ) MCFG_CPU_PROGRAM_MAP(trivrus_mem) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( crospuzl, crystal ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(crospuzl_mem) +MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( crzyddz2, crystal ) MCFG_CPU_MODIFY("maincpu") @@ -1440,6 +1562,21 @@ ROM_START( trivrus ) ROM_REGION( 0x1000000, "user2", ROMREGION_ERASEFF ) // Unmapped flash ROM_END +/* + uses ADC 'Amazon-LF' SoC, EISC CPU core - similar to crystal system? +*/ + +ROM_START( crospuzl ) + ROM_REGION( 0x80010, "maincpu", 0 ) + ROM_LOAD("en29lv040a.u5", 0x000000, 0x80010, CRC(d50e8500) SHA1(d681cd18cd0e48854c24291d417d2d6d28fe35c1) ) + + ROM_REGION32_LE( 0x8400010, "user1", ROMREGION_ERASEFF ) // Flash + // mostly empty, but still looks good + ROM_LOAD("k9f1g08u0a.riser", 0x000000, 0x8400010, CRC(7f3c88c3) SHA1(db3169a7b4caab754e9d911998a2ece13c65ce5b) ) + + ROM_REGION( 0x1000000, "user2", ROMREGION_ERASEFF ) // Unmapped flash +ROM_END + ROM_START( psattack ) ROM_REGION( 0x200000, "maincpu", 0 ) ROM_LOAD("5.sys", 0x000000, 0x200000, CRC(f09878e4) SHA1(25b8dbac47d3911615c8874746e420ece13e7181) ) @@ -1673,16 +1810,17 @@ DRIVER_INIT_MEMBER(crystal_state,psattack) } -GAME( 2001, crysbios, 0, crystal, crystal, driver_device, 0, ROT0, "BrezzaSoft", "Crystal System BIOS", MACHINE_IS_BIOS_ROOT ) +GAME( 2001, crysbios, 0, crystal, crystal, crystal_state, 0, ROT0, "BrezzaSoft", "Crystal System BIOS", MACHINE_IS_BIOS_ROOT ) GAME( 2001, crysking, crysbios, crystal, crystal, crystal_state, crysking, ROT0, "BrezzaSoft", "The Crystal of Kings", 0 ) GAME( 2001, evosocc, crysbios, crystal, crystal, crystal_state, evosocc, ROT0, "Evoga", "Evolution Soccer", 0 ) GAME( 2003, topbladv, crysbios, crystal, crystal, crystal_state, topbladv, ROT0, "SonoKong / Expotato", "Top Blade V", 0 ) GAME( 2001, officeye, 0, crystal, officeye, crystal_state, officeye, ROT0, "Danbi", "Office Yeo In Cheon Ha (version 1.2)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // still has some instability issues GAME( 2001, donghaer, 0, crystal, crystal, crystal_state, donghaer, ROT0, "Danbi", "Donggul Donggul Haerong", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) -GAME( 2004?,menghong, 0, crzyddz2, crzyddz2, driver_device, 0, ROT0, "Sealy", "Meng Hong Lou", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) -GAME( 2006, crzyddz2, 0, crzyddz2, crzyddz2, driver_device, 0, ROT0, "Sealy", "Crazy Dou Di Zhu II", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) -GAME( 2009, trivrus, 0, trivrus, trivrus, driver_device, 0, ROT0, "AGT", "Trivia R Us (v1.07)", 0 ) -// has a CF card instead of flash roms +GAME( 2004?,menghong, 0, crzyddz2, crzyddz2, crystal_state, 0, ROT0, "Sealy", "Meng Hong Lou", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) +GAME( 2006, crzyddz2, 0, crzyddz2, crzyddz2, crystal_state, 0, ROT0, "Sealy", "Crazy Dou Di Zhu II", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) +GAME( 2009, trivrus, 0, trivrus, trivrus, crystal_state, 0, ROT0, "AGT", "Trivia R Us (v1.07)", 0 ) // has a CF card instead of flash roms +GAME( 200?, crospuzl, 0, crospuzl, crospuzl, crystal_state, 0, ROT0, "", "Cross Puzzle", MACHINE_NOT_WORKING ) + GAME( 2004, psattack, 0, crystal, crystal, crystal_state, psattack, ROT0, "Uniana", "P's Attack", MACHINE_IS_SKELETON ) // looks like the same kind of hw from strings in the ROM, but scrambled / encrypted? -GAME( 200?, ddz, 0, crystal, crystal, driver_device, 0, ROT0, "IGS?", "Dou Di Zhu", MACHINE_IS_SKELETON ) +GAME( 200?, ddz, 0, crystal, crystal, crystal_state, 0, ROT0, "IGS?", "Dou Di Zhu", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/csplayh5.cpp b/src/mame/drivers/csplayh5.cpp index 7fb98fc1c9d..e76478ddfd7 100644 --- a/src/mame/drivers/csplayh5.cpp +++ b/src/mame/drivers/csplayh5.cpp @@ -429,7 +429,7 @@ static const z80_daisy_config daisy_chain_sound[] = { nullptr } }; -static MACHINE_CONFIG_START( csplayh5, csplayh5_state ) +static MACHINE_CONFIG_START( csplayh5 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,16000000) /* TMP68301-16 */ diff --git a/src/mame/drivers/cswat.cpp b/src/mame/drivers/cswat.cpp index 4dec7886d9a..de9db256c95 100644 --- a/src/mame/drivers/cswat.cpp +++ b/src/mame/drivers/cswat.cpp @@ -132,7 +132,7 @@ READ8_MEMBER(cswat_state::dipswitch_r) READ8_MEMBER(cswat_state::sensors_r) { // ? - return rand(); + return machine().rand(); } static ADDRESS_MAP_START( cswat_map, AS_PROGRAM, 8, cswat_state ) @@ -253,7 +253,7 @@ void cswat_state::machine_start() save_item(NAME(m_nmi_enabled)); } -static MACHINE_CONFIG_START( cswat, cswat_state ) +static MACHINE_CONFIG_START( cswat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809E, XTAL_18_432MHz/3/4) // HD68A09EP, 1.5MHz? @@ -304,4 +304,4 @@ ROM_START( cswat ) ROM_END -GAME( 1984, cswat, 0, cswat, cswat, driver_device, 0, ROT0, "Namco", "Cosmoswat", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1984, cswat, 0, cswat, cswat, cswat_state, 0, ROT0, "Namco", "Cosmoswat", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/ct486.cpp b/src/mame/drivers/ct486.cpp index 2d7e0e7c5ac..8fe4b9c53fe 100644 --- a/src/mame/drivers/ct486.cpp +++ b/src/mame/drivers/ct486.cpp @@ -20,6 +20,7 @@ #include "bus/pc_kbd/pc_kbdc.h" #include "softlist.h" +#include "softlist_dev.h" #include "speaker.h" @@ -31,11 +32,11 @@ class ct486_state : public driver_device { public: ct486_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_cs4031(*this, "cs4031"), - m_isabus(*this, "isabus"), - m_speaker(*this, "speaker") + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_cs4031(*this, "cs4031"), + m_isabus(*this, "isabus"), + m_speaker(*this, "speaker") { } required_device m_maincpu; @@ -103,7 +104,7 @@ ADDRESS_MAP_END // MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( ct486, ct486_state ) +static MACHINE_CONFIG_START( ct486 ) MCFG_CPU_ADD("maincpu", I486, XTAL_25MHz) MCFG_CPU_PROGRAM_MAP(ct486_map) MCFG_CPU_IO_MAP(ct486_io) @@ -199,4 +200,4 @@ ROM_END // GAME DRIVERS //************************************************************************** -COMP( 1993, ct486, 0, 0, ct486, 0, driver_device, 0, "", "PC/AT 486 with CS4031 chipset", 0 ) +COMP( 1993, ct486, 0, 0, ct486, 0, ct486_state, 0, "", "PC/AT 486 with CS4031 chipset", 0 ) diff --git a/src/mame/drivers/cubeqst.cpp b/src/mame/drivers/cubeqst.cpp index 02b3de025ff..9908bf4f8a0 100644 --- a/src/mame/drivers/cubeqst.cpp +++ b/src/mame/drivers/cubeqst.cpp @@ -48,7 +48,9 @@ public: "rdac6", "ldac6", "rdac7", "ldac7" }), - m_generic_paletteram_16(*this, "paletteram") { } + m_generic_paletteram_16(*this, "paletteram") + { + } std::unique_ptr m_depth_buffer; int m_video_field; @@ -510,7 +512,7 @@ WRITE16_MEMBER( cubeqst_state::sound_dac_w ) * *************************************/ -static MACHINE_CONFIG_START( cubeqst, cubeqst_state ) +static MACHINE_CONFIG_START( cubeqst ) MCFG_CPU_ADD("main_cpu", M68000, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(m68k_program_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", cubeqst_state, vblank) @@ -767,5 +769,5 @@ ROM_END * *************************************/ -GAME( 1983, cubeqst, 0, cubeqst, cubeqst, driver_device, 0, ROT0, "Simutrek", "Cube Quest (01/04/84)", 0 ) -GAME( 1983, cubeqsta, cubeqst, cubeqst, cubeqst, driver_device, 0, ROT0, "Simutrek", "Cube Quest (12/30/83)", 0 ) +GAME( 1983, cubeqst, 0, cubeqst, cubeqst, cubeqst_state, 0, ROT0, "Simutrek", "Cube Quest (01/04/84)", 0 ) +GAME( 1983, cubeqsta, cubeqst, cubeqst, cubeqst, cubeqst_state, 0, ROT0, "Simutrek", "Cube Quest (12/30/83)", 0 ) diff --git a/src/mame/drivers/cubo.cpp b/src/mame/drivers/cubo.cpp index 1d79bfd89b8..70cf55fe82f 100644 --- a/src/mame/drivers/cubo.cpp +++ b/src/mame/drivers/cubo.cpp @@ -1024,7 +1024,7 @@ static INPUT_PORTS_START( mgprem11 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( cubo, cubo_state ) +static MACHINE_CONFIG_START( cubo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, amiga_state::CLK_28M_PAL / 2) diff --git a/src/mame/drivers/cultures.cpp b/src/mame/drivers/cultures.cpp index 75ab788546b..47cfadc907e 100644 --- a/src/mame/drivers/cultures.cpp +++ b/src/mame/drivers/cultures.cpp @@ -38,7 +38,7 @@ public: m_bg1_regs_y(*this, "bg1_regs_y"), m_bg2_regs_x(*this, "bg2_regs_x"), m_bg2_regs_y(*this, "bg2_regs_y") - { } + { } /* devices */ required_device m_maincpu; @@ -394,7 +394,7 @@ void cultures_state::machine_reset() -static MACHINE_CONFIG_START( cultures, cultures_state ) +static MACHINE_CONFIG_START( cultures ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MCLK/2) /* 8.000 MHz */ @@ -426,7 +426,7 @@ static MACHINE_CONFIG_START( cultures, cultures_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", MCLK/8, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", MCLK/8, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) @@ -496,4 +496,4 @@ ROM_START( cultures ) ROM_END -GAME( 1994, cultures, 0, cultures, cultures, driver_device, 0, ROT0, "Face", "Jibun wo Migaku Culture School Mahjong Hen", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, cultures, 0, cultures, cultures, cultures_state, 0, ROT0, "Face", "Jibun wo Migaku Culture School Mahjong Hen", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cupidon.cpp b/src/mame/drivers/cupidon.cpp index 2ecdcf66932..dfa492d297c 100644 --- a/src/mame/drivers/cupidon.cpp +++ b/src/mame/drivers/cupidon.cpp @@ -29,7 +29,7 @@ public: { } // devices - required_device m_maincpu; + required_device m_maincpu; required_shared_ptr m_gfxram; uint32_t screen_update_cupidon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -99,7 +99,7 @@ static INPUT_PORTS_START( cupidon ) INPUT_PORTS_END -static MACHINE_CONFIG_START( cupidon, cupidon_state ) +static MACHINE_CONFIG_START( cupidon ) MCFG_CPU_ADD("maincpu", M68340, 16000000) // The access to 3FF00 at the start would suggest this is a 68340 so probably 16 or 25 mhz? MCFG_CPU_PROGRAM_MAP(cupidon_map) @@ -172,13 +172,13 @@ DRIVER_INIT_MEMBER(cupidon_state,funnyfm) } /* (c) date is from string in ROM, revision date is noted next to sets - Spellings are as found in ROM */ -GAME( 2004, tsarevna ,0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Tsarevna (v1.29)", MACHINE_IS_SKELETON ) // 12 Oct 2005 -GAME( 2004, tsarevnaa ,tsarevna, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Tsarevna (v1.31)", MACHINE_IS_SKELETON ) // 17 Jan 2007 +GAME( 2004, tsarevna, 0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon", "Tsarevna (v1.29)", MACHINE_IS_SKELETON ) // 12 Oct 2005 +GAME( 2004, tsarevnaa, tsarevna, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon", "Tsarevna (v1.31)", MACHINE_IS_SKELETON ) // 17 Jan 2007 -GAME( 2004, gangrose ,0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Gangster's Roses (v4.70)", MACHINE_IS_SKELETON ) // 01 Sep 2004 +GAME( 2004, gangrose, 0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon", "Gangster's Roses (v4.70)", MACHINE_IS_SKELETON ) // 01 Sep 2004 -GAME( 2004, funnyfm ,0, cupidon, cupidon, cupidon_state, funnyfm, ROT0, "Kupidon","Funny Farm (v1.17)", MACHINE_IS_SKELETON ) // 02 Mar 2005 -GAME( 2004, funnyfma ,funnyfm, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Funny Farm (v1.26)", MACHINE_IS_SKELETON ) // 08 Aug 2005 -GAME( 2004, funnyfmb ,funnyfm, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Funny Farm (v1.30)", MACHINE_IS_SKELETON ) // 16 May 2006 +GAME( 2004, funnyfm, 0, cupidon, cupidon, cupidon_state, funnyfm, ROT0, "Kupidon", "Funny Farm (v1.17)", MACHINE_IS_SKELETON ) // 02 Mar 2005 +GAME( 2004, funnyfma, funnyfm, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon", "Funny Farm (v1.26)", MACHINE_IS_SKELETON ) // 08 Aug 2005 +GAME( 2004, funnyfmb, funnyfm, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon", "Funny Farm (v1.30)", MACHINE_IS_SKELETON ) // 16 May 2006 -GAME( 2005, cashtrn ,0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Cash Train (v1.10)", MACHINE_IS_SKELETON ) // 09 Jan 2006 +GAME( 2005, cashtrn, 0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon", "Cash Train (v1.10)", MACHINE_IS_SKELETON ) // 09 Jan 2006 diff --git a/src/mame/drivers/cv1k.cpp b/src/mame/drivers/cv1k.cpp index 3cc021fecae..50119e3ea2f 100644 --- a/src/mame/drivers/cv1k.cpp +++ b/src/mame/drivers/cv1k.cpp @@ -432,7 +432,7 @@ void cv1k_state::machine_reset() m_blitter->reset(); } -static MACHINE_CONFIG_START( cv1k, cv1k_state ) +static MACHINE_CONFIG_START( cv1k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH3BE, XTAL_12_8MHz*8) // 102.4MHz diff --git a/src/mame/drivers/cvicny.cpp b/src/mame/drivers/cvicny.cpp index a88c22bcc51..aaa9959447f 100644 --- a/src/mame/drivers/cvicny.cpp +++ b/src/mame/drivers/cvicny.cpp @@ -128,7 +128,7 @@ static INPUT_PORTS_START( cvicny ) INPUT_PORTS_END -static MACHINE_CONFIG_START( cvicny, cvicny_state ) +static MACHINE_CONFIG_START( cvicny ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(cvicny_mem) @@ -145,5 +145,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, cvicny, 0, 0, cvicny, cvicny, driver_device, 0, "", "Practice-z80", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, cvicny, 0, 0, cvicny, cvicny, cvicny_state, 0, "", "Practice-z80", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp index df7d4f5b068..80862607a38 100644 --- a/src/mame/drivers/cvs.cpp +++ b/src/mame/drivers/cvs.cpp @@ -974,7 +974,7 @@ MACHINE_RESET_MEMBER(cvs_state,cvs) } -static MACHINE_CONFIG_START( cvs, cvs_state ) +static MACHINE_CONFIG_START( cvs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, XTAL_14_31818MHz/16) @@ -1641,25 +1641,25 @@ DRIVER_INIT_MEMBER(cvs_state,raiders) * *************************************/ -GAME( 1981, cosmos, 0, cvs, cosmos, driver_device, 0, ROT90, "Century Electronics", "Cosmos", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, darkwar, 0, cvs, darkwar, driver_device, 0, ROT90, "Century Electronics", "Dark Warrior", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, spacefrt, 0, cvs, spacefrt, driver_device, 0, ROT90, "Century Electronics", "Space Fortress (CVS)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, 8ball, 0, cvs, 8ball, driver_device, 0, ROT90, "Century Electronics", "Video Eight Ball", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, 8ball1, 8ball, cvs, 8ball, driver_device, 0, ROT90, "Century Electronics", "Video Eight Ball (Rev.1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, logger, 0, cvs, logger, driver_device, 0, ROT90, "Century Electronics", "Logger", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dazzler, 0, cvs, dazzler, driver_device, 0, ROT90, "Century Electronics", "Dazzler", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, wallst, 0, cvs, wallst, driver_device, 0, ROT90, "Century Electronics", "Wall Street", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, radarzon, 0, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics", "Radar Zone", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, radarzon1, radarzon, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics", "Radar Zone (Rev.1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, radarzont, radarzon, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics (Tuni Electro Service Inc)", "Radar Zone (Tuni)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, outline, radarzon, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics", "Outline", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, goldbug, 0, cvs, goldbug, driver_device, 0, ROT90, "Century Electronics", "Gold Bug", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, diggerc, 0, cvs, diggerc, driver_device, 0, ROT90, "Century Electronics", "Digger (CVS)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, heartatk, 0, cvs, heartatk, driver_device, 0, ROT90, "Century Electronics", "Heart Attack", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hunchbak, 0, cvs, hunchbak, driver_device, 0, ROT90, "Century Electronics", "Hunchback (set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hunchbaka, hunchbak, cvs, hunchbak, cvs_state, hunchbaka, ROT90, "Century Electronics", "Hunchback (set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, superbik, 0, cvs, superbik, cvs_state, superbik, ROT90, "Century Electronics", "Superbike", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, raiders, 0, cvs, raiders, cvs_state, raiders, ROT90, "Century Electronics", "Raiders", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, raidersr3, raiders, cvs, raiders, cvs_state, raiders, ROT90, "Century Electronics", "Raiders (Rev.3)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, hero, 0, cvs, hero, cvs_state, hero, ROT90, "Century Electronics / Seatongrove Ltd", "Hero", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // (C) 1984 CVS on titlescreen, (C) 1983 Seatongrove on highscore screen -GAME( 1984, huncholy, 0, cvs, huncholy, cvs_state, huncholy, ROT90, "Century Electronics / Seatongrove Ltd", "Hunchback Olympic", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, cosmos, 0, cvs, cosmos, cvs_state, 0, ROT90, "Century Electronics", "Cosmos", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, darkwar, 0, cvs, darkwar, cvs_state, 0, ROT90, "Century Electronics", "Dark Warrior", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, spacefrt, 0, cvs, spacefrt, cvs_state, 0, ROT90, "Century Electronics", "Space Fortress (CVS)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, 8ball, 0, cvs, 8ball, cvs_state, 0, ROT90, "Century Electronics", "Video Eight Ball", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, 8ball1, 8ball, cvs, 8ball, cvs_state, 0, ROT90, "Century Electronics", "Video Eight Ball (Rev.1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, logger, 0, cvs, logger, cvs_state, 0, ROT90, "Century Electronics", "Logger", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dazzler, 0, cvs, dazzler, cvs_state, 0, ROT90, "Century Electronics", "Dazzler", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, wallst, 0, cvs, wallst, cvs_state, 0, ROT90, "Century Electronics", "Wall Street", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, radarzon, 0, cvs, radarzon, cvs_state, 0, ROT90, "Century Electronics", "Radar Zone", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, radarzon1, radarzon, cvs, radarzon, cvs_state, 0, ROT90, "Century Electronics", "Radar Zone (Rev.1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, radarzont, radarzon, cvs, radarzon, cvs_state, 0, ROT90, "Century Electronics (Tuni Electro Service Inc)", "Radar Zone (Tuni)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, outline, radarzon, cvs, radarzon, cvs_state, 0, ROT90, "Century Electronics", "Outline", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, goldbug, 0, cvs, goldbug, cvs_state, 0, ROT90, "Century Electronics", "Gold Bug", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, diggerc, 0, cvs, diggerc, cvs_state, 0, ROT90, "Century Electronics", "Digger (CVS)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, heartatk, 0, cvs, heartatk, cvs_state, 0, ROT90, "Century Electronics", "Heart Attack", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hunchbak, 0, cvs, hunchbak, cvs_state, 0, ROT90, "Century Electronics", "Hunchback (set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hunchbaka, hunchbak, cvs, hunchbak, cvs_state, hunchbaka, ROT90, "Century Electronics", "Hunchback (set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, superbik, 0, cvs, superbik, cvs_state, superbik, ROT90, "Century Electronics", "Superbike", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, raiders, 0, cvs, raiders, cvs_state, raiders, ROT90, "Century Electronics", "Raiders", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, raidersr3, raiders, cvs, raiders, cvs_state, raiders, ROT90, "Century Electronics", "Raiders (Rev.3)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, hero, 0, cvs, hero, cvs_state, hero, ROT90, "Century Electronics / Seatongrove Ltd", "Hero", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // (C) 1984 CVS on titlescreen, (C) 1983 Seatongrove on highscore screen +GAME( 1984, huncholy, 0, cvs, huncholy, cvs_state, huncholy, ROT90, "Century Electronics / Seatongrove Ltd", "Hunchback Olympic", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/cxgz80.cpp b/src/mame/drivers/cxgz80.cpp index 78f8bdf58b2..0a34c800ff3 100644 --- a/src/mame/drivers/cxgz80.cpp +++ b/src/mame/drivers/cxgz80.cpp @@ -72,7 +72,7 @@ public: u16 m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments u32 m_display_cache[0x20]; // (internal use) u8 m_display_decay[0x20][0x20]; // (internal use) - + TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick); void display_update(); void set_display_size(int maxx, int maxy); @@ -260,7 +260,7 @@ WRITE8_MEMBER(cxgz80_state::ch2001_leds_w) // 74ls273 Q1-Q4: 74ls145 A-D // 74ls145 0-9: input mux/led select m_inp_mux = 1 << (data & 0xf) & 0x3ff; - + // 74ls273 Q5-Q8: MC14028 A-D // MC14028 Q0-Q7: led data, Q8,Q9: N/C u8 led_data = 1 << (data >> 4 & 0xf) & 0xff; @@ -407,7 +407,7 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( ch2001, cxgz80_state ) +static MACHINE_CONFIG_START( ch2001 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) @@ -445,5 +445,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1984, ch2001, 0, 0, ch2001, ch2001, driver_device, 0, "CXG", "Chess 2001", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1984, ch2001, 0, 0, ch2001, ch2001, cxgz80_state, 0, "CXG", "Chess 2001", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/cxhumax.cpp b/src/mame/drivers/cxhumax.cpp index d09cf159c53..b30b986caab 100644 --- a/src/mame/drivers/cxhumax.cpp +++ b/src/mame/drivers/cxhumax.cpp @@ -1053,7 +1053,7 @@ void cxhumax_state::machine_reset() memset(m_gxa_cmd_regs,0,sizeof(m_gxa_cmd_regs)); } -static MACHINE_CONFIG_START( cxhumax, cxhumax_state ) +static MACHINE_CONFIG_START( cxhumax ) MCFG_CPU_ADD("maincpu", ARM920T, 180000000) // CX24175 (RevC up?) MCFG_CPU_PROGRAM_MAP(cxhumax_map) @@ -1084,5 +1084,5 @@ ROM_START( hxhdci2k ) ROM_LOAD( "24lc64.bin", 0x0000, 0x2000, NO_DUMP) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -SYST( 2008, hxhdci2k, 0, 0, cxhumax, cxhumax, driver_device, 0, "HUMAX", "HUMAX HDCI-2000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +SYST( 2008, hxhdci2k, 0, 0, cxhumax, cxhumax, cxhumax_state, 0, "HUMAX", "HUMAX HDCI-2000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/cyberbal.cpp b/src/mame/drivers/cyberbal.cpp index 6d5ce2752f3..99e897389c8 100644 --- a/src/mame/drivers/cyberbal.cpp +++ b/src/mame/drivers/cyberbal.cpp @@ -395,7 +395,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( cyberbal, cyberbal_state ) +static MACHINE_CONFIG_START( cyberbal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) @@ -435,8 +435,8 @@ static MACHINE_CONFIG_START( cyberbal, cyberbal_state ) MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "lscreen", cyberbal_state::s_mob_config) MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode") - MCFG_TILEMAP_ADD_STANDARD("playfield2", "gfxdecode", 2, cyberbal_state, get_playfield_tile_info, 16,8, SCAN_ROWS, 64,64) - MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha2", "gfxdecode", 2, cyberbal_state, get_alpha_tile_info, 16,8, SCAN_ROWS, 64,32, 0) + MCFG_TILEMAP_ADD_STANDARD("playfield2", "gfxdecode", 2, cyberbal_state, get_playfield2_tile_info, 16,8, SCAN_ROWS, 64,64) + MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha2", "gfxdecode", 2, cyberbal_state, get_alpha2_tile_info, 16,8, SCAN_ROWS, 64,32, 0) MCFG_ATARI_MOTION_OBJECTS_ADD("mob2", "rscreen", cyberbal_state::s_mob_config) MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode") @@ -483,7 +483,7 @@ static MACHINE_CONFIG_DERIVED( cyberbalt, cyberbal ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cyberbal2p, cyberbal_state ) +static MACHINE_CONFIG_START( cyberbal2p ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) @@ -1017,14 +1017,14 @@ DRIVER_INIT_MEMBER(cyberbal_state,cyberbalt) * *************************************/ -GAMEL(1988, cyberbal, 0, cyberbal, cyberbal, driver_device, 0, ROT0, "Atari Games", "Cyberball (rev 4)", 0, layout_dualhsxs ) -GAMEL(1988, cyberbal2, cyberbal, cyberbal, cyberbal, driver_device, 0, ROT0, "Atari Games", "Cyberball (rev 2)", 0, layout_dualhsxs ) -GAMEL(1988, cyberbalp, cyberbal, cyberbal, cyberbal, driver_device, 0, ROT0, "Atari Games", "Cyberball (prototype)", 0, layout_dualhsxs ) +GAMEL(1988, cyberbal, 0, cyberbal, cyberbal, cyberbal_state, 0, ROT0, "Atari Games", "Cyberball (rev 4)", 0, layout_dualhsxs ) +GAMEL(1988, cyberbal2, cyberbal, cyberbal, cyberbal, cyberbal_state, 0, ROT0, "Atari Games", "Cyberball (rev 2)", 0, layout_dualhsxs ) +GAMEL(1988, cyberbalp, cyberbal, cyberbal, cyberbal, cyberbal_state, 0, ROT0, "Atari Games", "Cyberball (prototype)", 0, layout_dualhsxs ) -GAME( 1989, cyberbal2p, cyberbal, cyberbal2p, cyberbal2p, driver_device, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 4)", 0 ) -GAME( 1989, cyberbal2p3, cyberbal, cyberbal2p, cyberbal2p, driver_device, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 3)", 0 ) -GAME( 1989, cyberbal2p2, cyberbal, cyberbal2p, cyberbal2p, driver_device, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 2)", 0 ) -GAME( 1989, cyberbal2p1, cyberbal, cyberbal2p, cyberbal2p, driver_device, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 1)", 0 ) +GAME( 1989, cyberbal2p, cyberbal, cyberbal2p, cyberbal2p, cyberbal_state, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 4)", 0 ) +GAME( 1989, cyberbal2p3, cyberbal, cyberbal2p, cyberbal2p, cyberbal_state, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 3)", 0 ) +GAME( 1989, cyberbal2p2, cyberbal, cyberbal2p, cyberbal2p, cyberbal_state, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 2)", 0 ) +GAME( 1989, cyberbal2p1, cyberbal, cyberbal2p, cyberbal2p, cyberbal_state, 0, ROT0, "Atari Games", "Cyberball 2072 (2 player, rev 1)", 0 ) -GAMEL(1989, cyberbalt, cyberbal, cyberbalt, cyberbal, cyberbal_state, cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 2)", 0, layout_dualhsxs ) -GAMEL(1989, cyberbalt1, cyberbal, cyberbalt, cyberbal, cyberbal_state, cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 1)", 0, layout_dualhsxs ) +GAMEL(1989, cyberbalt, cyberbal, cyberbalt, cyberbal, cyberbal_state, cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 2)", 0, layout_dualhsxs ) +GAMEL(1989, cyberbalt1, cyberbal, cyberbalt, cyberbal, cyberbal_state, cyberbalt, ROT0, "Atari Games", "Tournament Cyberball 2072 (rev 1)", 0, layout_dualhsxs ) diff --git a/src/mame/drivers/cybertnk.cpp b/src/mame/drivers/cybertnk.cpp index b33b2231b5e..27893cc5a88 100644 --- a/src/mame/drivers/cybertnk.cpp +++ b/src/mame/drivers/cybertnk.cpp @@ -831,7 +831,7 @@ GFXDECODE_END */ -static MACHINE_CONFIG_START( cybertnk, cybertnk_state ) +static MACHINE_CONFIG_START( cybertnk ) MCFG_CPU_ADD("maincpu", M68000,XTAL_20MHz/2) MCFG_CPU_PROGRAM_MAP(master_mem) MCFG_CPU_VBLANK_INT_DRIVER("lscreen", cybertnk_state, irq1_line_assert) diff --git a/src/mame/drivers/cybiko.cpp b/src/mame/drivers/cybiko.cpp index a9989184623..67b986f7312 100644 --- a/src/mame/drivers/cybiko.cpp +++ b/src/mame/drivers/cybiko.cpp @@ -384,7 +384,7 @@ static DEVICE_INPUT_DEFAULTS_START( debug_serial ) // set up debug port to defau DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( cybikov1, cybiko_state ) +static MACHINE_CONFIG_START( cybikov1 ) // cpu MCFG_CPU_ADD( "maincpu", H8S2241, XTAL_11_0592MHz ) MCFG_CPU_PROGRAM_MAP( cybikov1_mem ) @@ -397,8 +397,8 @@ static MACHINE_CONFIG_START( cybikov1, cybiko_state ) // screen MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE( 60 ) - MCFG_SCREEN_SIZE( HD66421_WIDTH, HD66421_HEIGHT ) - MCFG_SCREEN_VISIBLE_AREA( 0, HD66421_WIDTH - 1, 0, HD66421_HEIGHT - 1 ) + MCFG_SCREEN_SIZE( hd66421_device::WIDTH, hd66421_device::HEIGHT ) + MCFG_SCREEN_VISIBLE_AREA( 0, hd66421_device::WIDTH - 1, 0, hd66421_device::HEIGHT - 1 ) MCFG_SCREEN_UPDATE_DEVICE("hd66421", hd66421_device, update_screen) MCFG_SCREEN_PALETTE("hd66421:palette") // video @@ -531,7 +531,7 @@ ROM_END // DRIVERS // ////////////// -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 2000, cybikov1, 0, 0, cybikov1, cybiko, cybiko_state, cybiko , "Cybiko Inc", "Cybiko Classic (V1)", MACHINE_IMPERFECT_SOUND ) -COMP( 2000, cybikov2, cybikov1, 0, cybikov2, cybiko, cybiko_state, cybiko , "Cybiko Inc", "Cybiko Classic (V2)", MACHINE_IMPERFECT_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 2000, cybikov1, 0, 0, cybikov1, cybiko, cybiko_state, cybiko, "Cybiko Inc", "Cybiko Classic (V1)", MACHINE_IMPERFECT_SOUND ) +COMP( 2000, cybikov2, cybikov1, 0, cybikov2, cybiko, cybiko_state, cybiko, "Cybiko Inc", "Cybiko Classic (V2)", MACHINE_IMPERFECT_SOUND ) COMP( 2001, cybikoxt, cybikov1, 0, cybikoxt, cybikoxt, cybiko_state, cybikoxt, "Cybiko Inc", "Cybiko Xtreme", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/cyclemb.cpp b/src/mame/drivers/cyclemb.cpp index 449366280b4..99ba6e1790e 100644 --- a/src/mame/drivers/cyclemb.cpp +++ b/src/mame/drivers/cyclemb.cpp @@ -917,7 +917,7 @@ static GFXDECODE_START( cyclemb ) GFXDECODE_ENTRY( "sprite_data", 0, spritelayout_32x32, 0x00, 0x40 ) GFXDECODE_END -static MACHINE_CONFIG_START( cyclemb, cyclemb_state ) +static MACHINE_CONFIG_START( cyclemb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18MHz/3) // Z8400BPS MCFG_CPU_PROGRAM_MAP(cyclemb_map) @@ -1052,5 +1052,5 @@ DRIVER_INIT_MEMBER(cyclemb_state,skydest) m_dsw_pc_hack = 0x554; } -GAME( 1984, cyclemb, 0, cyclemb, cyclemb, cyclemb_state, cyclemb, ROT0, "Taito Corporation", "Cycle Maabou (Japan)", MACHINE_NO_COCKTAIL | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, cyclemb, 0, cyclemb, cyclemb, cyclemb_state, cyclemb, ROT0, "Taito Corporation", "Cycle Maabou (Japan)", MACHINE_NO_COCKTAIL | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1985, skydest, 0, skydest, skydest, cyclemb_state, skydest, ROT0, "Taito Corporation", "Sky Destroyer (Japan)", MACHINE_NO_COCKTAIL | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/czk80.cpp b/src/mame/drivers/czk80.cpp index af850bfa7d1..0b9ed9622cb 100644 --- a/src/mame/drivers/czk80.cpp +++ b/src/mame/drivers/czk80.cpp @@ -69,7 +69,7 @@ public: DECLARE_READ8_MEMBER(port81_r); DECLARE_READ8_MEMBER(portc0_r); DECLARE_WRITE8_MEMBER(port40_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE_LINE_MEMBER(ctc_z0_w); DECLARE_WRITE_LINE_MEMBER(ctc_z1_w); DECLARE_WRITE_LINE_MEMBER(ctc_z2_w); @@ -183,12 +183,12 @@ static SLOT_INTERFACE_START( czk80_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END -WRITE8_MEMBER( czk80_state::kbd_put ) +void czk80_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( czk80, czk80_state ) +static MACHINE_CONFIG_START( czk80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(czk80_mem) @@ -197,7 +197,7 @@ static MACHINE_CONFIG_START( czk80, czk80_state ) MCFG_MACHINE_RESET_OVERRIDE(czk80_state, czk80) MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(czk80_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(czk80_state, kbd_put)) MCFG_UPD765A_ADD("fdc", false, true) MCFG_FLOPPY_DRIVE_ADD("fdc:0", czk80_floppies, "525dd", floppy_image_device::default_floppy_formats) @@ -226,5 +226,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, czk80, 0, 0, czk80, czk80, czk80_state, czk80, "", "CZK-80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 198?, czk80, 0, 0, czk80, czk80, czk80_state, czk80, "", "CZK-80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/d6800.cpp b/src/mame/drivers/d6800.cpp index d3d91ca9c92..974fed413dd 100644 --- a/src/mame/drivers/d6800.cpp +++ b/src/mame/drivers/d6800.cpp @@ -379,7 +379,7 @@ QUICKLOAD_LOAD_MEMBER( d6800_state, d6800 ) return result; } -static MACHINE_CONFIG_START( d6800, d6800_state ) +static MACHINE_CONFIG_START( d6800 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6800, XTAL_4MHz/4) MCFG_CPU_PROGRAM_MAP(d6800_map) @@ -433,5 +433,5 @@ ROM_START( d6800 ) ROMX_LOAD( "d6800d.bin", 0xc000, 0x0800, CRC(ded5712f) SHA1(f594f313a74d7135c9fdd0bcb0093fc5771a9b7d), ROM_BIOS(2) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS, INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, d6800, 0, 0, d6800, d6800, driver_device, 0, "Michael Bauer", "Dream 6800", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1979, d6800, 0, 0, d6800, d6800, d6800_state, 0, "Michael Bauer", "Dream 6800", 0 ) diff --git a/src/mame/drivers/d6809.cpp b/src/mame/drivers/d6809.cpp index 1453f89bcef..a433c42684e 100644 --- a/src/mame/drivers/d6809.cpp +++ b/src/mame/drivers/d6809.cpp @@ -100,7 +100,7 @@ public: required_device m_maincpu; required_device m_terminal; - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); DECLARE_READ8_MEMBER( term_r ); DECLARE_WRITE8_MEMBER( term_w ); uint8_t m_term_data; @@ -134,7 +134,7 @@ static INPUT_PORTS_START( d6809 ) INPUT_PORTS_END -WRITE8_MEMBER( d6809_state::kbd_put ) +void d6809_state::kbd_put(u8 data) { m_term_data = data; } @@ -144,7 +144,7 @@ void d6809_state::machine_reset() } -static MACHINE_CONFIG_START( d6809, d6809_state ) +static MACHINE_CONFIG_START( d6809 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6809E, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(d6809_mem) @@ -152,7 +152,7 @@ static MACHINE_CONFIG_START( d6809, d6809_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(d6809_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(d6809_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -163,5 +163,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, d6809, 0, 0, d6809, d6809, driver_device, 0, "Dunfield", "6809 Portable", MACHINE_IS_SKELETON | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, d6809, 0, 0, d6809, d6809, d6809_state, 0, "Dunfield", "6809 Portable", MACHINE_IS_SKELETON | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/d9final.cpp b/src/mame/drivers/d9final.cpp index 7223405f627..66db5af67b6 100644 --- a/src/mame/drivers/d9final.cpp +++ b/src/mame/drivers/d9final.cpp @@ -293,7 +293,7 @@ void d9final_state::machine_start() membank("bank1")->set_entry(0); } -static MACHINE_CONFIG_START( d9final, d9final_state ) +static MACHINE_CONFIG_START( d9final ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 24000000/4)/* ? MHz */ MCFG_CPU_PROGRAM_MAP(d9final_map) @@ -340,4 +340,4 @@ ROM_END -GAME( 1992, d9final, 0, d9final, d9final, driver_device, 0, ROT0, "Excellent System", "Dream 9 Final (v2.24)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, d9final, 0, d9final, d9final, d9final_state, 0, ROT0, "Excellent System", "Dream 9 Final (v2.24)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dacholer.cpp b/src/mame/drivers/dacholer.cpp index 6c328d238b7..4c8163a5a27 100644 --- a/src/mame/drivers/dacholer.cpp +++ b/src/mame/drivers/dacholer.cpp @@ -648,7 +648,7 @@ PALETTE_INIT_MEMBER(dacholer_state, dacholer) } /* note: clocks are taken from itaten sound reference recording */ -static MACHINE_CONFIG_START( dacholer, dacholer_state ) +static MACHINE_CONFIG_START( dacholer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/4) /* ? */ @@ -692,7 +692,7 @@ static MACHINE_CONFIG_START( dacholer, dacholer_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(dacholer_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 1 / 96 = 3906.25Hz playback - guess */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 1 / 96 = 3906.25Hz playback - guess */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -847,6 +847,6 @@ ROM_START( itaten ) ROM_END -GAME( 1983, dacholer, 0, dacholer, dacholer, driver_device, 0, ROT0, "Nichibutsu", "Dacholer", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, kickboy, 0, dacholer, kickboy, driver_device, 0, ROT0, "Nichibutsu", "Kick Boy", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, itaten, 0, itaten, itaten, driver_device, 0, ROT0, "Nichibutsu / Alice", "Itazura Tenshi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, dacholer, 0, dacholer, dacholer, dacholer_state, 0, ROT0, "Nichibutsu", "Dacholer", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, kickboy, 0, dacholer, kickboy, dacholer_state, 0, ROT0, "Nichibutsu", "Kick Boy", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, itaten, 0, itaten, itaten, dacholer_state, 0, ROT0, "Nichibutsu / Alice", "Itazura Tenshi (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dai.cpp b/src/mame/drivers/dai.cpp index 9975834117a..3fa1cf8da01 100644 --- a/src/mame/drivers/dai.cpp +++ b/src/mame/drivers/dai.cpp @@ -185,7 +185,7 @@ static GFXDECODE_START( dai ) GFXDECODE_END /* machine definition */ -static MACHINE_CONFIG_START( dai, dai_state ) +static MACHINE_CONFIG_START( dai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 2000000) MCFG_CPU_PROGRAM_MAP(dai_mem) @@ -245,7 +245,6 @@ static MACHINE_CONFIG_START( dai, dai_state ) MCFG_SOFTWARE_LIST_ADD("cass_list", "dai_cass") MACHINE_CONFIG_END -#define io_dai io_NULL ROM_START(dai) ROM_REGION(0x14000,"maincpu",0) @@ -258,5 +257,5 @@ ROM_START(dai) ROM_LOAD ("nch.bin", 0x0000, 0x1000, CRC(a9f5b30b) SHA1(24119b2984ab4e50dc0dabae1065ff6d6c1f237d)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1978, dai, 0, 0, dai, dai, driver_device, 0, "Data Applications International", "DAI Personal Computer", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1978, dai, 0, 0, dai, dai, dai_state, 0, "Data Applications International", "DAI Personal Computer", 0) diff --git a/src/mame/drivers/dai3wksi.cpp b/src/mame/drivers/dai3wksi.cpp index 664b9e7a421..f0c0975dfe2 100644 --- a/src/mame/drivers/dai3wksi.cpp +++ b/src/mame/drivers/dai3wksi.cpp @@ -400,7 +400,7 @@ void dai3wksi_state::machine_reset() } -static MACHINE_CONFIG_START( dai3wksi, dai3wksi_state ) +static MACHINE_CONFIG_START( dai3wksi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_10MHz/4) @@ -551,4 +551,4 @@ ROM_END * *************************************/ -GAME( 1979, dai3wksi, 0, dai3wksi, dai3wksi, driver_device, 0, ROT270, "Sun Electronics", "Dai San Wakusei Meteor (Japan)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, dai3wksi, 0, dai3wksi, dai3wksi, dai3wksi_state, 0, ROT270, "Sun Electronics", "Dai San Wakusei Meteor (Japan)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dambustr.cpp b/src/mame/drivers/dambustr.cpp index a1273562894..90351597714 100644 --- a/src/mame/drivers/dambustr.cpp +++ b/src/mame/drivers/dambustr.cpp @@ -251,7 +251,7 @@ DRIVER_INIT_MEMBER(dambustr_state,dambustr) -static MACHINE_CONFIG_START( dambustr, dambustr_state ) +static MACHINE_CONFIG_START( dambustr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ MCFG_CPU_PROGRAM_MAP(dambustr_map) @@ -370,6 +370,6 @@ ROM_START( dambustruk ) ROM_END -GAME( 1981, dambustr, 0, dambustr, dambustr, dambustr_state, dambustr, ROT90, "South West Research", "Dambusters (US, set 1)", 0 ) -GAME( 1981, dambustra, dambustr, dambustr, dambustr, dambustr_state, dambustr, ROT90, "South West Research", "Dambusters (US, set 2)", 0 ) -GAME( 1981, dambustruk, dambustr, dambustr, dambustruk, dambustr_state, dambustr, ROT90, "South West Research", "Dambusters (UK)", 0 ) +GAME( 1981, dambustr, 0, dambustr, dambustr, dambustr_state, dambustr, ROT90, "South West Research", "Dambusters (US, set 1)", 0 ) +GAME( 1981, dambustra, dambustr, dambustr, dambustr, dambustr_state, dambustr, ROT90, "South West Research", "Dambusters (US, set 2)", 0 ) +GAME( 1981, dambustruk, dambustr, dambustr, dambustruk, dambustr_state, dambustr, ROT90, "South West Research", "Dambusters (UK)", 0 ) diff --git a/src/mame/drivers/darius.cpp b/src/mame/drivers/darius.cpp index 12a4f4b8ec9..639135273d7 100644 --- a/src/mame/drivers/darius.cpp +++ b/src/mame/drivers/darius.cpp @@ -734,7 +734,7 @@ void darius_state::machine_reset() } -static MACHINE_CONFIG_START( darius, darius_state ) +static MACHINE_CONFIG_START( darius ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* 8 MHz */ @@ -823,7 +823,7 @@ static MACHINE_CONFIG_START( darius, darius_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(darius_state, darius_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msm5205.l", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msm5205.r", 1.0) @@ -1160,8 +1160,8 @@ ROM_START( dariuse ) ROM_END -GAME( 1986, darius, 0, darius, darius, driver_device, 0, ROT0, "Taito Corporation Japan", "Darius (World, rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dariusu, darius, darius, dariusu, driver_device, 0, ROT0, "Taito America Corporation", "Darius (US, rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dariusj, darius, darius, dariusj, driver_device, 0, ROT0, "Taito Corporation", "Darius (Japan, rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dariuso, darius, darius, dariusj, driver_device, 0, ROT0, "Taito Corporation", "Darius (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dariuse, darius, darius, dariusu, driver_device, 0, ROT0, "Taito Corporation", "Darius Extra Version (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, darius, 0, darius, darius, darius_state, 0, ROT0, "Taito Corporation Japan", "Darius (World, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dariusu, darius, darius, dariusu, darius_state, 0, ROT0, "Taito America Corporation", "Darius (US, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dariusj, darius, darius, dariusj, darius_state, 0, ROT0, "Taito Corporation", "Darius (Japan, rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dariuso, darius, darius, dariusj, darius_state, 0, ROT0, "Taito Corporation", "Darius (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dariuse, darius, darius, dariusu, darius_state, 0, ROT0, "Taito Corporation", "Darius Extra Version (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp index e14f1e4ebd6..e2b454a7513 100644 --- a/src/mame/drivers/darkmist.cpp +++ b/src/mame/drivers/darkmist.cpp @@ -237,7 +237,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(darkmist_state::scanline) -static MACHINE_CONFIG_START( darkmist, darkmist_state ) +static MACHINE_CONFIG_START( darkmist ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(memmap) diff --git a/src/mame/drivers/darkseal.cpp b/src/mame/drivers/darkseal.cpp index b2c8c08d9ee..b7d67a87326 100644 --- a/src/mame/drivers/darkseal.cpp +++ b/src/mame/drivers/darkseal.cpp @@ -228,7 +228,7 @@ GFXDECODE_END /******************************************************************************/ -static MACHINE_CONFIG_START( darkseal, darkseal_state ) +static MACHINE_CONFIG_START( darkseal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* Custom chip 59 */ @@ -296,10 +296,10 @@ static MACHINE_CONFIG_START( darkseal, darkseal_state ) MCFG_SOUND_ROUTE(0, "mono", 0.55) MCFG_SOUND_ROUTE(1, "mono", 0.55) - MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END diff --git a/src/mame/drivers/daruma.cpp b/src/mame/drivers/daruma.cpp index 5290821c49a..49e5f399621 100644 --- a/src/mame/drivers/daruma.cpp +++ b/src/mame/drivers/daruma.cpp @@ -140,7 +140,7 @@ static INPUT_PORTS_START( daruma ) INPUT_PORTS_END -static MACHINE_CONFIG_START( daruma, daruma_state ) +static MACHINE_CONFIG_START( daruma ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C32,11059200) //verified on pcb MCFG_CPU_PROGRAM_MAP(mem_prg) @@ -166,5 +166,5 @@ ROM_START( ds348 ) ROM_LOAD( "daruma_ds348_v1_1.rom", 0x0000, 0x10000, CRC(10bf9036) SHA1(d654a13bc582f5384e759ec6fe5309a642bd8e18) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1998, ds348, 0, 0, daruma, daruma, driver_device, 0, "Sigtron Daruma", "Print Plus DS348 - Dot matrix printer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1998, ds348, 0, 0, daruma, daruma, daruma_state, 0, "Sigtron Daruma", "Print Plus DS348 - Dot matrix printer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/dassault.cpp b/src/mame/drivers/dassault.cpp index 5248221a79f..16f2dbffaa1 100644 --- a/src/mame/drivers/dassault.cpp +++ b/src/mame/drivers/dassault.cpp @@ -537,7 +537,7 @@ DECO16IC_BANK_CB_MEMBER(dassault_state::bank_callback) return ((bank >> 4) & 0xf) << 12; } -static MACHINE_CONFIG_START( dassault, dassault_state ) +static MACHINE_CONFIG_START( dassault ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_28MHz/2) /* 14MHz - Accurate */ @@ -628,11 +628,11 @@ static MACHINE_CONFIG_START( dassault, dassault_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, OKIM6295_PIN7_HIGH) // verified + MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, PIN7_HIGH) // verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) - MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, OKIM6295_PIN7_HIGH) // verified + MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, PIN7_HIGH) // verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) MACHINE_CONFIG_END diff --git a/src/mame/drivers/datum.cpp b/src/mame/drivers/datum.cpp index d37ebeb4514..aee05bd229b 100644 --- a/src/mame/drivers/datum.cpp +++ b/src/mame/drivers/datum.cpp @@ -177,7 +177,7 @@ WRITE8_MEMBER( datum_state::pb_w ) } -static MACHINE_CONFIG_START( datum, datum_state ) +static MACHINE_CONFIG_START( datum ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6802, XTAL_4MHz) // internally divided to 1 MHz MCFG_CPU_PROGRAM_MAP(datum_mem) @@ -207,5 +207,5 @@ ROM_START( datum ) ROM_LOAD( "datum.bin", 0x0000, 0x0800, BAD_DUMP CRC(6fb11628) SHA1(8a77a846b62eee0d12848da76e16b4c66ef445d8) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, datum, 0, 0, datum, datum, driver_device, 0, "Gammatron", "Datum", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, datum, 0, 0, datum, datum, datum_state, 0, "Gammatron", "Datum", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/dblcrown.cpp b/src/mame/drivers/dblcrown.cpp index e4fe267f8fd..90489181cbe 100644 --- a/src/mame/drivers/dblcrown.cpp +++ b/src/mame/drivers/dblcrown.cpp @@ -591,7 +591,7 @@ It needs at least 64 instances because 0xa05b will be eventually nuked by the vb } -static MACHINE_CONFIG_START( dblcrown, dblcrown_state ) +static MACHINE_CONFIG_START( dblcrown ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -653,5 +653,5 @@ ROM_START( dblcrown ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1997, dblcrown, 0, dblcrown, dblcrown, driver_device, 0, ROT0, "Cadence Technology", "Double Crown (v1.0.3)", MACHINE_IMPERFECT_GRAPHICS, layout_dblcrown ) // 1997 DYNA copyright in tile GFX +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +GAMEL( 1997, dblcrown, 0, dblcrown, dblcrown, dblcrown_state, 0, ROT0, "Cadence Technology", "Double Crown (v1.0.3)", MACHINE_IMPERFECT_GRAPHICS, layout_dblcrown ) // 1997 DYNA copyright in tile GFX diff --git a/src/mame/drivers/dblewing.cpp b/src/mame/drivers/dblewing.cpp index f5d0265696c..afb2c969b95 100644 --- a/src/mame/drivers/dblewing.cpp +++ b/src/mame/drivers/dblewing.cpp @@ -367,7 +367,7 @@ void dblewing_state::dblewing_sound_cb( address_space &space, uint16_t data, uin m_audiocpu->set_input_line(0, (m_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE); } -static MACHINE_CONFIG_START( dblewing, dblewing_state ) +static MACHINE_CONFIG_START( dblewing ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_28MHz/2) /* DE102 */ @@ -429,7 +429,7 @@ static MACHINE_CONFIG_START( dblewing, dblewing_state ) MCFG_YM2151_IRQ_HANDLER(WRITELINE(dblewing_state, sound_irq)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) - MCFG_OKIM6295_ADD("oki", XTAL_28MHz/28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_28MHz/28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp index 3a7b9deab8d..e51979e3d70 100644 --- a/src/mame/drivers/dbz.cpp +++ b/src/mame/drivers/dbz.cpp @@ -320,7 +320,7 @@ void dbz_state::machine_reset() m_control = 0; } -static MACHINE_CONFIG_START( dbz, dbz_state ) +static MACHINE_CONFIG_START( dbz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) @@ -379,7 +379,7 @@ static MACHINE_CONFIG_START( dbz, dbz_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -586,6 +586,6 @@ DRIVER_INIT_MEMBER(dbz_state,dbz2) ROM[0xae8/2] = 0x4e71; /* 0x005e */ } -GAME( 1993, dbz, 0, dbz, dbz, dbz_state, dbz, ROT0, "Banpresto", "Dragonball Z (rev B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // crashes MAME in tile/PSAC2 ROM test -GAME( 1993, dbza, dbz, dbz, dbza, dbz_state, dbza, ROT0, "Banpresto", "Dragonball Z (rev A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, dbz, 0, dbz, dbz, dbz_state, dbz, ROT0, "Banpresto", "Dragonball Z (rev B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // crashes MAME in tile/PSAC2 ROM test +GAME( 1993, dbza, dbz, dbz, dbza, dbz_state, dbza, ROT0, "Banpresto", "Dragonball Z (rev A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1994, dbz2, 0, dbz, dbz2, dbz_state, dbz2, ROT0, "Banpresto", "Dragonball Z 2 - Super Battle", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // crashes MAME in tile/PSAC2 ROM test diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp index a1e677aeaa1..dc5b8cfb785 100644 --- a/src/mame/drivers/dccons.cpp +++ b/src/mame/drivers/dccons.cpp @@ -574,7 +574,7 @@ static MACHINE_CONFIG_FRAGMENT( gdrom_config ) MCFG_SOUND_ROUTE(1, "^^^^rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dc, dc_cons_state ) +static MACHINE_CONFIG_START( dc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH4LE, CPU_CLOCK) MCFG_SH4_MD0(1) @@ -654,6 +654,9 @@ MACHINE_CONFIG_END ROM_LOAD_BIOS(3, "dc101d_ch.bin", 0x000000, 0x200000, CRC(a2564fad) SHA1(edc5d3d70a93c935703d26119b37731fd317d2bf) ) // ^^^ dc101d_eu.bin ^^^ is selfmade chinese translation, doesn't work on real hardware, does it must be here at all ? +// note: Dreamcast Flash ROMs actually 256KB MBM29F002TC (VA0) or MBM29LV002TC (VA1) devices, only 2nd 128KB half is used, A17 pin tied to VCC +// sector SA5 (1A000 - 1BFFF) is read-only, contain factory information (region, broadcast, serial number, etc) + ROM_START(dc) DREAMCAST_COMMON_BIOS @@ -674,9 +677,7 @@ ROM_START( dcjp ) ROM_LOAD_BIOS(4, "mpr-21068.ic501", 0x000000, 0x200000, CRC(5454841f) SHA1(1ea132c0fbbf07ef76789eadc07908045c089bd6) ) ROM_REGION(0x020000, "dcflash", 0) - /* ROM_LOAD( "dcjp_ntsc.bad", 0x000000, 0x020000, BAD_DUMP CRC(307a7035) SHA1(1411423a9d071340ea52c56e19c1aafc4e1309ee) ) // Hacked Flash */ - ROM_LOAD( "dcjp_ntsc.bin", 0x000000, 0x020000, BAD_DUMP CRC(5f92bf76) SHA1(be78b834f512ab2cf3d67b96e377c9f3093ff82a) ) // hacked PAL flash - ROM_FILL( 0x1a004, 1, 0x30 ) // patch broadcast back to NTSC + ROM_LOAD( "dcjp_ntsc.bin", 0x000000, 0x020000, CRC(f77c15a1) SHA1(66fd8ee40b207ce03a5fd6abbc00d27bbd5f92bd) ) // from VA0 with 1.004 BIOS ROM_END // normally, with DIP switch 4 off, HKT-100/110/120 AKA "Katana Set 5.xx", will be booted from flash ROM IC507 (first 2 dumps below) @@ -699,8 +700,8 @@ ROM_START( dcdev ) ROM_LOAD( "hkt-0120-flash.bin", 0x000000, 0x020000, CRC(7784c304) SHA1(31ef57f550d8cd13e40263cbc657253089e53034) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS( 1999, dc, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (USA, NTSC)", MACHINE_NOT_WORKING ) -CONS( 1998, dcjp, 0, 0, dc, dc, dc_cons_state, dcjp, "Sega", "Dreamcast (Japan, NTSC)", MACHINE_NOT_WORKING ) -CONS( 1999, dceu, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (Europe, PAL)", MACHINE_NOT_WORKING ) -CONS( 1998, dcdev, 0, 0, dc, dc, dc_cons_state, dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +CONS( 1999, dc, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (USA, NTSC)", MACHINE_NOT_WORKING ) +CONS( 1998, dcjp, 0, 0, dc, dc, dc_cons_state, dcjp, "Sega", "Dreamcast (Japan, NTSC)", MACHINE_NOT_WORKING ) +CONS( 1999, dceu, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (Europe, PAL)", MACHINE_NOT_WORKING ) +CONS( 1998, dcdev, 0, 0, dc, dc, dc_cons_state, dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/dcheese.cpp b/src/mame/drivers/dcheese.cpp index 2d3a4d0b93d..b31ee921a25 100644 --- a/src/mame/drivers/dcheese.cpp +++ b/src/mame/drivers/dcheese.cpp @@ -368,7 +368,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( dcheese, dcheese_state ) +static MACHINE_CONFIG_START( dcheese ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MAIN_OSC) @@ -768,12 +768,12 @@ ROM_END * *************************************/ -GAME( 1993, dcheese, 0, dcheese, dcheese, driver_device, 0, ROT90, "HAR", "Double Cheese", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, lottof2, 0, dcheese, lottof2, driver_device, 0, ROT0, "HAR", "Lotto Fun 2", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, cecmatch, 0, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "ChuckECheese's Match Game", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, fredmem, 0, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (World?, Ticket version, 3/17/95)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, fredmemus, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (US, High Score version, 3/10/95)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, fredmemuk, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (UK, 3/17/95)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, fredmemj, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Japan, High Score version, 3/20/95)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, fredmemc, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Mandarin Chinese, 3/17/95)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, fredmesp, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Spanish, 3/17/95)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, dcheese, 0, dcheese, dcheese, dcheese_state, 0, ROT90, "HAR", "Double Cheese", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, lottof2, 0, dcheese, lottof2, dcheese_state, 0, ROT0, "HAR", "Lotto Fun 2", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, cecmatch, 0, fredmem, fredmem, dcheese_state, 0, ROT0, "Coastal Amusements", "ChuckECheese's Match Game", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fredmem, 0, fredmem, fredmem, dcheese_state, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (World?, Ticket version, 3/17/95)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fredmemus, fredmem, fredmem, fredmem, dcheese_state, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (US, High Score version, 3/10/95)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fredmemuk, fredmem, fredmem, fredmem, dcheese_state, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (UK, 3/17/95)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fredmemj, fredmem, fredmem, fredmem, dcheese_state, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Japan, High Score version, 3/20/95)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fredmemc, fredmem, fredmem, fredmem, dcheese_state, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Mandarin Chinese, 3/17/95)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fredmesp, fredmem, fredmem, fredmem, dcheese_state, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Spanish, 3/17/95)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dcon.cpp b/src/mame/drivers/dcon.cpp index 7bed52872e1..a922d8e6aaa 100644 --- a/src/mame/drivers/dcon.cpp +++ b/src/mame/drivers/dcon.cpp @@ -260,7 +260,7 @@ WRITE16_MEMBER( dcon_state::layer_scroll_w ) /******************************************************************************/ -static MACHINE_CONFIG_START( dcon, dcon_state ) +static MACHINE_CONFIG_START( dcon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -294,7 +294,7 @@ static MACHINE_CONFIG_START( dcon, dcon_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -304,7 +304,7 @@ static MACHINE_CONFIG_START( dcon, dcon_state ) MCFG_SEIBU_SOUND_YM_WRITE_CB(DEVWRITE8("ymsnd", ym3812_device, write)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sdgndmps, dcon_state ) +static MACHINE_CONFIG_START( sdgndmps ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -339,7 +339,7 @@ static MACHINE_CONFIG_START( sdgndmps, dcon_state ) MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -436,4 +436,4 @@ DRIVER_INIT_MEMBER(dcon_state,sdgndmps) GAME( 1991, sdgndmps, 0, sdgndmps, sdgndmps, dcon_state, sdgndmps, ROT0, "Banpresto / Bandai", "SD Gundam Psycho Salamander no Kyoui", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dcon, 0, dcon, dcon, driver_device, 0, ROT0, "Success", "D-Con", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dcon, 0, dcon, dcon, dcon_state, 0, ROT0, "Success", "D-Con", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dct11em.cpp b/src/mame/drivers/dct11em.cpp index 0c17a23b282..3420130780a 100644 --- a/src/mame/drivers/dct11em.cpp +++ b/src/mame/drivers/dct11em.cpp @@ -51,7 +51,7 @@ uint32_t dct11em_state::screen_update_dct11em(screen_device &screen, bitmap_ind1 } -static MACHINE_CONFIG_START( dct11em, dct11em_state ) +static MACHINE_CONFIG_START( dct11em ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",T11, 7500000) // 7.5MHz XTAL MCFG_T11_INITIAL_MODE(0x1403) /* according to specs */ @@ -81,5 +81,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, dct11em, 0, 0, dct11em, dct11em, driver_device, 0, "Digital Equipment Corporation", "DCT11-EM", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, dct11em, 0, 0, dct11em, dct11em, dct11em_state, 0, "Digital Equipment Corporation", "DCT11-EM", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/dday.cpp b/src/mame/drivers/dday.cpp index 941572aa623..84723b93e8d 100644 --- a/src/mame/drivers/dday.cpp +++ b/src/mame/drivers/dday.cpp @@ -55,7 +55,6 @@ write: #include "includes/dday.h" #include "cpu/z80/z80.h" -#include "sound/ay8910.h" #include "speaker.h" @@ -240,8 +239,6 @@ GFXDECODE_END void dday_state::machine_start() { - m_ay1 = machine().device("ay1"); - save_item(NAME(m_control)); save_item(NAME(m_sl_enable)); save_item(NAME(m_sl_image)); @@ -256,7 +253,7 @@ void dday_state::machine_reset() } -static MACHINE_CONFIG_START( dday, dday_state ) +static MACHINE_CONFIG_START( dday ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2000000) /* 2 MHz ? */ @@ -361,5 +358,5 @@ ROM_START( ddayc ) ROM_END -GAME( 1982, dday, 0, dday, dday, driver_device, 0, ROT0, "Olympia", "D-Day", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, ddayc, dday, dday, ddayc, driver_device, 0, ROT0, "Olympia (Centuri license)", "D-Day (Centuri)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dday, 0, dday, dday, dday_state, 0, ROT0, "Olympia", "D-Day", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, ddayc, dday, dday, ddayc, dday_state, 0, ROT0, "Olympia (Centuri license)", "D-Day (Centuri)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ddayjlc.cpp b/src/mame/drivers/ddayjlc.cpp index d8c389d181b..dd34b26f4c5 100644 --- a/src/mame/drivers/ddayjlc.cpp +++ b/src/mame/drivers/ddayjlc.cpp @@ -510,7 +510,7 @@ PALETTE_INIT_MEMBER(ddayjlc_state, ddayjlc) } } -static MACHINE_CONFIG_START( ddayjlc, ddayjlc_state ) +static MACHINE_CONFIG_START( ddayjlc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/3) diff --git a/src/mame/drivers/ddealer.cpp b/src/mame/drivers/ddealer.cpp index 5ec30e5d35f..37e017774ec 100644 --- a/src/mame/drivers/ddealer.cpp +++ b/src/mame/drivers/ddealer.cpp @@ -9,10 +9,9 @@ Appears to be a down-grade of the nmk16 HW TODO: - -When you use the "gun card" the game gives "minus" points, but points are always added, inaccurate protection? - -Understand better the video emulation and convert it to tilemaps; - -Coinage settings based on those listed at www.crazykong.com/dips/DoubleDealer.txt - coin/credit simulation need fixing; - -Decap + emulate MCU, required if the random number generation is going to be accurate; + - Fix MCU simulation for credit subtractions & add coinage settings (currently set to free play for convenience); + - Understand better the video emulation and convert it to tilemaps; + - Decap + emulate MCU, required if the random number generation is going to be accurate; ========================================================================================================== -- @@ -433,7 +432,7 @@ WRITE16_MEMBER(ddealer_state::mcu_shared_w) case 0x41e/2: break;//unused case 0x42e/2: PROT_JSR(0x42e,0x8007,0x6004); break;//cards on playfield/hand (ram side) case 0x43e/2: PROT_JSR(0x43e,0x801d,0x6176); break;//second player sub-routine - case 0x44e/2: PROT_JSR(0x44e,0x8028,0x6932); break;//"gun card" logic + case 0x44e/2: PROT_JSR(0x44e,0x8028,0x6f68); break;//"gun card" logic case 0x45e/2: PROT_JSR(0x45e,0x803e,0x6f90); break;//card delete case 0x46e/2: PROT_JSR(0x46e,0x8033,0x93c2); break;//card movements case 0x47e/2: PROT_JSR(0x47e,0x8026,0x67a0); break;//cards on playfield (vram side) @@ -474,8 +473,8 @@ static ADDRESS_MAP_START( ddealer, AS_PROGRAM, 16, ddealer_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") + AM_RANGE(0x080006, 0x080007) AM_READ_PORT("UNK") AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") - AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("UNK") AM_RANGE(0x084000, 0x084003) AM_DEVWRITE8("ymsnd", ym2203_device, write, 0x00ff) // ym ? AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x08c000, 0x08cfff) AM_RAM AM_SHARE("vregs") // palette ram @@ -500,7 +499,7 @@ static INPUT_PORTS_START( ddealer ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) //used, "test" in service mode, unknown purpose + PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) //used, "test" in service mode, unknown purpose PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -522,11 +521,10 @@ static INPUT_PORTS_START( ddealer ) PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - /*bits 0-7 are almost surely to be coinage.*/ PORT_START("DSW1") PORT_DIPUNUSED_DIPLOC( 0x0001, IP_ACTIVE_LOW, "SW1:8" ) /* Listed as "Always Off" */ PORT_DIPUNUSED_DIPLOC( 0x0002, IP_ACTIVE_LOW, "SW1:7" ) /* Listed as "Always Off" */ - PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:6,5,4") + PORT_DIPNAME( 0x001c, 0x0000, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:6,5,4") PORT_DIPSETTING( 0x0010, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x0018, DEF_STR( 2C_1C ) ) @@ -535,7 +533,7 @@ static INPUT_PORTS_START( ddealer ) PORT_DIPSETTING( 0x0014, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x00e0, 0x00e0, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:3,2,1") + PORT_DIPNAME( 0x00e0, 0x0000, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:3,2,1") PORT_DIPSETTING( 0x0080, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0040, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x00c0, DEF_STR( 2C_1C ) ) @@ -565,6 +563,8 @@ static INPUT_PORTS_START( ddealer ) PORT_DIPUNUSED_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:1" ) /* Listed as "Always Off" */ PORT_START("UNK") + PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // MCU port? + PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END static const gfx_layout charlayout = @@ -615,7 +615,7 @@ INTERRUPT_GEN_MEMBER(ddealer_state::interrupt) device.execute().set_input_line(4, HOLD_LINE); } -static MACHINE_CONFIG_START( ddealer, ddealer_state ) +static MACHINE_CONFIG_START( ddealer ) MCFG_CPU_ADD("maincpu" , M68000, XTAL_16MHz/2) /* 8MHz */ MCFG_CPU_PROGRAM_MAP(ddealer) @@ -692,4 +692,4 @@ ROM_START( ddealer ) ROM_LOAD( "6.ic86", 0x100, 0x100, NO_DUMP ) ROM_END -GAME( 1991, ddealer, 0, ddealer, ddealer, ddealer_state, ddealer, ROT0, "NMK", "Double Dealer", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ddealer, 0, ddealer, ddealer, ddealer_state, ddealer, ROT0, "NMK", "Double Dealer", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp index f31472f5909..fca54f35cc7 100644 --- a/src/mame/drivers/ddenlovr.cpp +++ b/src/mame/drivers/ddenlovr.cpp @@ -14,7 +14,7 @@ Other: Real Time Clock (Oki MSM6242B or 72421B) ---------------------------------------------------------------------------------------------------------------------- Year + Game Board CPU Sound Custom Other ---------------------------------------------------------------------------------------------------------------------- -92 Hf Hana Tengoku D6502208L1+D6107068L1 Z80 YM2149 YM2413 +92 Hf Hana Tengoku D6502208L1+D6107068L1 Z80 AY8910 YM2413 92 Monkey Mole Panic 2xZ80 AY8910 YM2413 M6295 NL-001 1108(x2) 1427(x2) 8251 92 Mj Mysterious Orient D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 93 Mj Mysterious Orient 2 D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 @@ -23,7 +23,7 @@ Year + Game Board CPU Sound Custo 93 Animalandia Jr. 2xZ80 AY8910 YM2413 M6295 NL-001 NL-003(x2) NL-004(x2) 8251 94 Mj Mysterious World D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02? 94 Mj Mysterious Universe D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 -94 Quiz 365 68000 AY8910 YM2413 M6295 +94 Quiz 365 68000 YM2149 YM2413 M6295 94 Rong Rong (J) N8010178L1 Z80 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02F2637 94 Hf Hana Ginga D8102048L1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02? 94 Super Hana Paradise N8010178L1+N73RSUB Z80 YM2413 M6295 NL-002 1108F0406 1427F0071 4L02F2637 @@ -4280,7 +4280,7 @@ static ADDRESS_MAP_START( htengoku_mem_map, AS_PROGRAM, 8, ddenlovr_state ) AM_RANGE( 0x8000, 0x81ff ) AM_WRITE(yarunara_palette_w) // Palette or RTC ADDRESS_MAP_END -static MACHINE_CONFIG_START( htengoku, ddenlovr_state ) +static MACHINE_CONFIG_START( htengoku ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,20000000 / 4) @@ -9614,7 +9614,7 @@ MACHINE_START_MEMBER(ddenlovr_state,sryudens) Don Den Lover Vol.1 ***************************************************************************/ -static MACHINE_CONFIG_START( ddenlovr, ddenlovr_state ) +static MACHINE_CONFIG_START( ddenlovr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_24MHz / 2) @@ -9644,10 +9644,10 @@ static MACHINE_CONFIG_START( ddenlovr, ddenlovr_state ) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_28_63636MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 16) // or /8 ? + MCFG_SOUND_ADD("aysnd", YMZ284, XTAL_28_63636MHz / 16) // or /8 ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -9681,9 +9681,12 @@ static MACHINE_CONFIG_DERIVED( quiz365, ddenlovr ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(quiz365_map) - MCFG_SOUND_MODIFY("aysnd") + MCFG_SOUND_REPLACE("aysnd", YM2149, XTAL_28_63636MHz / 16) // or /8 ? + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_AY8910_PORT_A_READ_CB(READ8(ddenlovr_state, quiz365_input_r)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(ddenlovr_state, ddenlovr_select_w)) + + MCFG_DEVICE_REPLACE("rtc", MSM6242, XTAL_32_768kHz) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( nettoqc, ddenlovr ) @@ -9733,7 +9736,7 @@ WRITE_LINE_MEMBER(ddenlovr_state::quizchq_rtc_irq ) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xfc); } -static MACHINE_CONFIG_START( quizchq, ddenlovr_state ) +static MACHINE_CONFIG_START( quizchq ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Verified */ @@ -9764,7 +9767,7 @@ static MACHINE_CONFIG_START( quizchq, ddenlovr_state ) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_28_63636MHz/8) // 3.579545Mhz, verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.50) - MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz/28, OKIM6295_PIN7_HIGH) // clock frequency verified 1.022MHz, pin 7 verified high + MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz/28, PIN7_HIGH) // clock frequency verified 1.022MHz, pin 7 verified high MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* devices */ @@ -9812,7 +9815,7 @@ WRITE_LINE_MEMBER(ddenlovr_state::mmpanic_rtc_irq ) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xdf); // RST 18, clock } -static MACHINE_CONFIG_START( mmpanic, ddenlovr_state ) +static MACHINE_CONFIG_START( mmpanic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 8000000) @@ -9853,7 +9856,7 @@ static MACHINE_CONFIG_START( mmpanic, ddenlovr_state ) MCFG_SOUND_ADD("aysnd", AY8910, 3579545) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki", 1022720, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1022720, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -9896,7 +9899,7 @@ WRITE_LINE_MEMBER(ddenlovr_state::hanakanz_rtc_irq) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xe2); } -static MACHINE_CONFIG_START( hanakanz, ddenlovr_state ) +static MACHINE_CONFIG_START( hanakanz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,8000000) // TMPZ84C015BF-8 @@ -9927,7 +9930,7 @@ static MACHINE_CONFIG_START( hanakanz, ddenlovr_state ) MCFG_SOUND_ADD("ym2413", YM2413, 3579545) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", 1022720, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1022720, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -9942,7 +9945,7 @@ static MACHINE_CONFIG_DERIVED( hkagerou, hanakanz ) MCFG_CPU_IO_MAP(hkagerou_portmap) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kotbinyo, ddenlovr_state ) +static MACHINE_CONFIG_START( kotbinyo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) // !! KL5C80A12CFP @ 10MHz? (actually 4 times faster than Z80) !! @@ -9973,7 +9976,7 @@ static MACHINE_CONFIG_START( kotbinyo, ddenlovr_state ) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_28_37516MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_28_37516MHz / 28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_28_37516MHz / 28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -10065,7 +10068,7 @@ MACHINE_CONFIG_END Mahjong Super Dai Chuuka Ken ***************************************************************************/ -static MACHINE_CONFIG_START( mjschuka, ddenlovr_state ) +static MACHINE_CONFIG_START( mjschuka ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,XTAL_16MHz/2) @@ -10099,7 +10102,7 @@ static MACHINE_CONFIG_START( mjschuka, ddenlovr_state ) MCFG_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -10361,7 +10364,7 @@ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jongtei, ddenlovr_state ) +static MACHINE_CONFIG_START( jongtei ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) // TMPZ84C015 @@ -10392,7 +10395,7 @@ static MACHINE_CONFIG_START( jongtei, ddenlovr_state ) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_28_63636MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -10413,7 +10416,7 @@ MACHINE_CONFIG_END Mahjong Seiryu Densetsu ***************************************************************************/ -static MACHINE_CONFIG_START( sryudens, ddenlovr_state ) +static MACHINE_CONFIG_START( sryudens ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2) // ? @@ -10444,10 +10447,10 @@ static MACHINE_CONFIG_START( sryudens, ddenlovr_state ) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_28_63636MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 8) + MCFG_SOUND_ADD("aysnd", YMZ284, XTAL_28_63636MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH) // ? + MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, PIN7_HIGH) // ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -10460,7 +10463,7 @@ MACHINE_CONFIG_END ***************************************************************************/ // PCB: NM7001004 -static MACHINE_CONFIG_START( janshinp, ddenlovr_state ) +static MACHINE_CONFIG_START( janshinp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2) @@ -10491,10 +10494,10 @@ static MACHINE_CONFIG_START( janshinp, ddenlovr_state ) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_28_63636MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 8) + MCFG_SOUND_ADD("aysnd", YMZ284, XTAL_28_63636MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH) // ? + MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, PIN7_HIGH) // ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -10527,7 +10530,7 @@ MACHINE_START_MEMBER(ddenlovr_state,seljan2) MACHINE_START_CALL_MEMBER(ddenlovr); } -static MACHINE_CONFIG_START( seljan2, ddenlovr_state ) +static MACHINE_CONFIG_START( seljan2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2) @@ -10563,7 +10566,7 @@ static MACHINE_CONFIG_START( seljan2, ddenlovr_state ) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(ddenlovr_state, ddenlovr_select_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH) // ? + MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, PIN7_HIGH) // ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -10577,7 +10580,7 @@ MACHINE_CONFIG_END ***************************************************************************/ -static MACHINE_CONFIG_START( daimyojn, ddenlovr_state ) +static MACHINE_CONFIG_START( daimyojn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) @@ -10608,7 +10611,7 @@ static MACHINE_CONFIG_START( daimyojn, ddenlovr_state ) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_28_63636MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* devices */ @@ -12916,51 +12919,51 @@ ROM_START( htengoku ) ROM_LOAD( "6510.11b", 0x80000, 0x20000, CRC(0fdd6edf) SHA1(c6870ab538987110337e6e154cba98391c68fb98) ) ROM_END -GAME( 1992, htengoku, 0, htengoku, htengoku, driver_device, 0, ROT180, "Dynax", "Hanafuda Hana Tengoku (Japan)", 0) -GAME( 1992, mmpanic, 0, mmpanic, mmpanic, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Monkey Mole Panic (USA)", MACHINE_NO_COCKTAIL ) -GAME( 1993, mjmyorn2, 0, mjmyornt, mjmyorn2, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient Part 2 - Exotic Dream", MACHINE_NO_COCKTAIL ) -GAME( 1992, mjmyornt, mjmyorn2, mjmyornt, mjmyornt, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient", MACHINE_NO_COCKTAIL ) -GAME( 1993, funkyfig, 0, funkyfig, funkyfig, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter (North America, set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) // scrolling, priority? -GAME( 1993, funkyfiga, funkyfig, funkyfig, funkyfig, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter (North America, set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, quizchq, 0, quizchq, quizchq, driver_device, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1993, quizchql, quizchq, quizchq, quizchq, driver_device, 0, ROT0, "Nakanihon (Laxan license)", "Quiz Channel Question (Ver 1.23) (Taiwan?)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1993, animaljr, 0, mmpanic, animaljr, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Exciting Animal Land Jr. (USA)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) -GAME( 1993, animaljrs, animaljr, mmpanic, animaljr, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Animalandia Jr. (Spanish)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) -GAME( 1993, animaljrj, animaljr, mmpanic, animaljr, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Waiwai Animal Land Jr. (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1994, mjmyster, 0, mjmyster, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 1)", MACHINE_NO_COCKTAIL ) -GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 2)", MACHINE_NO_COCKTAIL ) -GAME( 1994, hginga, 0, hginga, hginga, driver_device, 0, ROT0, "Dynax", "Hanafuda Hana Ginga", MACHINE_NO_COCKTAIL ) -GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe (Japan, D85)", MACHINE_NO_COCKTAIL ) -GAME( 1994, quiz365, 0, quiz365, quiz365, driver_device, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1994, quiz365t, quiz365, quiz365, quiz365, driver_device, 0, ROT0, "Nakanihon / Taito", "Quiz 365 (Hong Kong & Taiwan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1994, rongrong, 0, rongrong, rongrong, ddenlovr_state,rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Europe)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) -GAME( 1994, rongrongj, rongrong, rongrong, rongrong, ddenlovr_state,rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) -GAME( 1994, rongrongg, rongrong, rongrong, rongrong, ddenlovr_state,rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Germany)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) -GAME( 1994, hparadis, 0, hparadis, hparadis, driver_device, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1995, hgokou, 0, hgokou, hgokou, driver_device, 0, ROT0, "Dynax (Alba license)", "Hanafuda Hana Gokou (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1995, hgokbang, hgokou, hgokbang, hgokou, driver_device, 0, ROT0, "Dynax", "Hanafuda Hana Gokou Bangaihen (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1995, mjdchuka, 0, mjchuuka, mjchuuka, driver_device, 0, ROT0, "Dynax", "Mahjong The Dai Chuuka Ken (China, D111)", MACHINE_NO_COCKTAIL ) -GAME( 1995, mjschuka, 0, mjschuka, mjschuka, driver_device, 0, ROT0, "Dynax", "Mahjong Super Dai Chuuka Ken (Japan, D115)", MACHINE_NO_COCKTAIL ) -GAME( 1995, nettoqc, 0, nettoqc, nettoqc, driver_device, 0, ROT0, "Nakanihon", "Nettoh Quiz Champion (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) -GAME( 1995, ultrchmp, nettoqc, ultrchmp, ultrchmp, driver_device, 0, ROT0, "Nakanihon", "Se Gye Hweng Dan Ultra Champion (Korea)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) -GAME( 1995, ultrchmph, nettoqc, ultrchmp, ultrchmp, driver_device, 0, ROT0, "Nakanihon", "Cheng Ba Shi Jie - Chao Shi Kong Guan Jun (Taiwan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) -GAME( 1995, ddenlovj, 0, ddenlovj, ddenlovj, driver_device, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1995, ddenlovrk, ddenlovj, ddenlovrk, ddenlovr, driver_device, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", MACHINE_NO_COCKTAIL ) -GAME( 1995, ddenlovrb, ddenlovj, ddenlovr, ddenlovr, driver_device, 0, ROT0, "bootleg", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", MACHINE_NO_COCKTAIL ) -GAME( 1996, ddenlovr, ddenlovj, ddenlovr, ddenlovr, driver_device, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 (Hong Kong)", MACHINE_NO_COCKTAIL ) -GAME( 1996, hanakanz, 0, hanakanz, hanakanz, driver_device, 0, ROT0, "Dynax", "Hana Kanzashi (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1997, kotbinyo, hanakanz, kotbinyo, kotbinyo, driver_device, 0, ROT0, "Dynax / Shinwhajin", "Kkot Bi Nyo (Korea)", MACHINE_NO_COCKTAIL ) -GAME( 1997, kotbinsp, 0, kotbinsp, kotbinsp, driver_device, 0, ROT0, "Dynax / Shinwhajin", "Kkot Bi Nyo Special (Korea)", MACHINE_NO_COCKTAIL ) -GAME( 1996, akamaru, 0, akamaru, akamaru, driver_device, 0, ROT0, "Dynax (Nakanihon license)", "Panel & Variety Akamaru Q Jousyou Dont-R", MACHINE_NO_COCKTAIL ) -GAME( 1996, janshinp, 0, janshinp, janshinp, driver_device, 0, ROT0, "Dynax / Sigma", "Mahjong Janshin Plus (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1996, dtoyoken, 0, dtoyoken, dtoyoken, driver_device, 0, ROT0, "Dynax / Sigma", "Mahjong Dai Touyouken (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1996, sryudens, 0, sryudens, sryudens, driver_device, 0, ROT0, "Dynax / Face", "Mahjong Seiryu Densetsu (Japan, NM502)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, seljan2, 0, seljan2, seljan2, driver_device, 0, ROT0, "Dynax / Face", "Return Of Sel Jan II (Japan, NM557)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, mjflove, 0, mjflove, mjflove, driver_device, 0, ROT0, "Nakanihon", "Mahjong Fantasic Love (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, hkagerou, 0, hkagerou, hkagerou, driver_device, 0, ROT0, "Nakanihon / Dynax", "Hana Kagerou [BET] (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, driver_device, 0, ROT0, "Dynax", "Mahjong Chuukanejyo (China)", MACHINE_NO_COCKTAIL ) -GAME( 1998, mjreach1, 0, mjreach1, mjreach1, driver_device, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1999, jongtei, 0, jongtei, jongtei, driver_device, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, NM532-01)", MACHINE_NO_COCKTAIL ) -GAME( 2000, mjgnight, 0, mjgnight, mjgnight, driver_device, 0, ROT0, "Techno-Top", "Mahjong Gorgeous Night (Japan, TSM003-01)", MACHINE_NO_COCKTAIL ) -GAME( 2002, daimyojn, 0, daimyojn, daimyojn, driver_device, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", MACHINE_NO_COCKTAIL ) -GAME( 2004, momotaro, 0, daimyojn, daimyojn, ddenlovr_state,momotaro, ROT0, "Techno-Top", "Mahjong Momotarou (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1992, htengoku, 0, htengoku, htengoku, ddenlovr_state, 0, ROT180, "Dynax", "Hanafuda Hana Tengoku (Japan)", 0) +GAME( 1992, mmpanic, 0, mmpanic, mmpanic, ddenlovr_state, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Monkey Mole Panic (USA)", MACHINE_NO_COCKTAIL ) +GAME( 1993, mjmyorn2, 0, mjmyornt, mjmyorn2, ddenlovr_state, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient Part 2 - Exotic Dream", MACHINE_NO_COCKTAIL ) +GAME( 1992, mjmyornt, mjmyorn2, mjmyornt, mjmyornt, ddenlovr_state, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient", MACHINE_NO_COCKTAIL ) +GAME( 1993, funkyfig, 0, funkyfig, funkyfig, ddenlovr_state, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter (North America, set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) // scrolling, priority? +GAME( 1993, funkyfiga, funkyfig, funkyfig, funkyfig, ddenlovr_state, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter (North America, set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, quizchq, 0, quizchq, quizchq, ddenlovr_state, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1993, quizchql, quizchq, quizchq, quizchq, ddenlovr_state, 0, ROT0, "Nakanihon (Laxan license)", "Quiz Channel Question (Ver 1.23) (Taiwan?)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1993, animaljr, 0, mmpanic, animaljr, ddenlovr_state, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Exciting Animal Land Jr. (USA)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) +GAME( 1993, animaljrs, animaljr, mmpanic, animaljr, ddenlovr_state, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Animalandia Jr. (Spanish)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) +GAME( 1993, animaljrj, animaljr, mmpanic, animaljr, ddenlovr_state, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Waiwai Animal Land Jr. (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1994, mjmyster, 0, mjmyster, mjmyster, ddenlovr_state, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 1)", MACHINE_NO_COCKTAIL ) +GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, ddenlovr_state, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 2)", MACHINE_NO_COCKTAIL ) +GAME( 1994, hginga, 0, hginga, hginga, ddenlovr_state, 0, ROT0, "Dynax", "Hanafuda Hana Ginga", MACHINE_NO_COCKTAIL ) +GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, ddenlovr_state, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe (Japan, D85)", MACHINE_NO_COCKTAIL ) +GAME( 1994, quiz365, 0, quiz365, quiz365, ddenlovr_state, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1994, quiz365t, quiz365, quiz365, quiz365, ddenlovr_state, 0, ROT0, "Nakanihon / Taito", "Quiz 365 (Hong Kong & Taiwan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1994, rongrong, 0, rongrong, rongrong, ddenlovr_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Europe)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) +GAME( 1994, rongrongj, rongrong, rongrong, rongrong, ddenlovr_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) +GAME( 1994, rongrongg, rongrong, rongrong, rongrong, ddenlovr_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Germany)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) +GAME( 1994, hparadis, 0, hparadis, hparadis, ddenlovr_state, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1995, hgokou, 0, hgokou, hgokou, ddenlovr_state, 0, ROT0, "Dynax (Alba license)", "Hanafuda Hana Gokou (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1995, hgokbang, hgokou, hgokbang, hgokou, ddenlovr_state, 0, ROT0, "Dynax", "Hanafuda Hana Gokou Bangaihen (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1995, mjdchuka, 0, mjchuuka, mjchuuka, ddenlovr_state, 0, ROT0, "Dynax", "Mahjong The Dai Chuuka Ken (China, D111)", MACHINE_NO_COCKTAIL ) +GAME( 1995, mjschuka, 0, mjschuka, mjschuka, ddenlovr_state, 0, ROT0, "Dynax", "Mahjong Super Dai Chuuka Ken (Japan, D115)", MACHINE_NO_COCKTAIL ) +GAME( 1995, nettoqc, 0, nettoqc, nettoqc, ddenlovr_state, 0, ROT0, "Nakanihon", "Nettoh Quiz Champion (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) +GAME( 1995, ultrchmp, nettoqc, ultrchmp, ultrchmp, ddenlovr_state, 0, ROT0, "Nakanihon", "Se Gye Hweng Dan Ultra Champion (Korea)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) +GAME( 1995, ultrchmph, nettoqc, ultrchmp, ultrchmp, ddenlovr_state, 0, ROT0, "Nakanihon", "Cheng Ba Shi Jie - Chao Shi Kong Guan Jun (Taiwan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS ) +GAME( 1995, ddenlovj, 0, ddenlovj, ddenlovj, ddenlovr_state, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1995, ddenlovrk, ddenlovj, ddenlovrk, ddenlovr, ddenlovr_state, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", MACHINE_NO_COCKTAIL ) +GAME( 1995, ddenlovrb, ddenlovj, ddenlovr, ddenlovr, ddenlovr_state, 0, ROT0, "bootleg", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", MACHINE_NO_COCKTAIL ) +GAME( 1996, ddenlovr, ddenlovj, ddenlovr, ddenlovr, ddenlovr_state, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 (Hong Kong)", MACHINE_NO_COCKTAIL ) +GAME( 1996, hanakanz, 0, hanakanz, hanakanz, ddenlovr_state, 0, ROT0, "Dynax", "Hana Kanzashi (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1997, kotbinyo, hanakanz, kotbinyo, kotbinyo, ddenlovr_state, 0, ROT0, "Dynax / Shinwhajin", "Kkot Bi Nyo (Korea)", MACHINE_NO_COCKTAIL ) +GAME( 1997, kotbinsp, 0, kotbinsp, kotbinsp, ddenlovr_state, 0, ROT0, "Dynax / Shinwhajin", "Kkot Bi Nyo Special (Korea)", MACHINE_NO_COCKTAIL ) +GAME( 1996, akamaru, 0, akamaru, akamaru, ddenlovr_state, 0, ROT0, "Dynax (Nakanihon license)", "Panel & Variety Akamaru Q Jousyou Dont-R", MACHINE_NO_COCKTAIL ) +GAME( 1996, janshinp, 0, janshinp, janshinp, ddenlovr_state, 0, ROT0, "Dynax / Sigma", "Mahjong Janshin Plus (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1996, dtoyoken, 0, dtoyoken, dtoyoken, ddenlovr_state, 0, ROT0, "Dynax / Sigma", "Mahjong Dai Touyouken (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1996, sryudens, 0, sryudens, sryudens, ddenlovr_state, 0, ROT0, "Dynax / Face", "Mahjong Seiryu Densetsu (Japan, NM502)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, seljan2, 0, seljan2, seljan2, ddenlovr_state, 0, ROT0, "Dynax / Face", "Return Of Sel Jan II (Japan, NM557)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, mjflove, 0, mjflove, mjflove, ddenlovr_state, 0, ROT0, "Nakanihon", "Mahjong Fantasic Love (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, hkagerou, 0, hkagerou, hkagerou, ddenlovr_state, 0, ROT0, "Nakanihon / Dynax", "Hana Kagerou [BET] (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, ddenlovr_state, 0, ROT0, "Dynax", "Mahjong Chuukanejyo (China)", MACHINE_NO_COCKTAIL ) +GAME( 1998, mjreach1, 0, mjreach1, mjreach1, ddenlovr_state, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1999, jongtei, 0, jongtei, jongtei, ddenlovr_state, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, NM532-01)", MACHINE_NO_COCKTAIL ) +GAME( 2000, mjgnight, 0, mjgnight, mjgnight, ddenlovr_state, 0, ROT0, "Techno-Top", "Mahjong Gorgeous Night (Japan, TSM003-01)", MACHINE_NO_COCKTAIL ) +GAME( 2002, daimyojn, 0, daimyojn, daimyojn, ddenlovr_state, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", MACHINE_NO_COCKTAIL ) +GAME( 2004, momotaro, 0, daimyojn, daimyojn, ddenlovr_state, momotaro, ROT0, "Techno-Top", "Mahjong Momotarou (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ddragon.cpp b/src/mame/drivers/ddragon.cpp index 37c11373147..e49ecba2734 100644 --- a/src/mame/drivers/ddragon.cpp +++ b/src/mame/drivers/ddragon.cpp @@ -735,6 +735,19 @@ INPUT_PORTS_END static INPUT_PORTS_START( ddungeon ) PORT_INCLUDE(ddragon) + // Dangerous Dungeons installation guide recommends 4-way joystick "for maximum profits" + PORT_MODIFY("P1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY + + PORT_MODIFY("P2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_MODIFY("DSW0") PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) ) PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) ) @@ -819,7 +832,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( toffy ) - PORT_INCLUDE(ddragon) + PORT_INCLUDE(ddungeon) PORT_MODIFY("DSW0") PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) ) @@ -923,7 +936,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( ddragon, ddragon_state ) +static MACHINE_CONFIG_START( ddragon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, MAIN_CLOCK) /* 12 MHz / 4 internally */ @@ -966,12 +979,12 @@ static MACHINE_CONFIG_START( ddragon, ddragon_state ) MCFG_SOUND_ADD("adpcm1", MSM5205, MAIN_CLOCK / 32) MCFG_MSM5205_VCLK_CB(WRITELINE(ddragon_state, dd_adpcm_int_1)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("adpcm2", MSM5205, MAIN_CLOCK / 32) MCFG_MSM5205_VCLK_CB(WRITELINE(ddragon_state, dd_adpcm_int_2)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -993,7 +1006,7 @@ static MACHINE_CONFIG_DERIVED( ddragonba, ddragon ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ddragon6809, ddragon_state ) +static MACHINE_CONFIG_START( ddragon6809 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK / 8) /* 1.5 MHz */ @@ -1036,17 +1049,17 @@ static MACHINE_CONFIG_START( ddragon6809, ddragon_state ) MCFG_SOUND_ADD("adpcm1", MSM5205, MAIN_CLOCK/32) MCFG_MSM5205_VCLK_CB(WRITELINE(ddragon_state, dd_adpcm_int_1)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("adpcm2", MSM5205, MAIN_CLOCK/32) MCFG_MSM5205_VCLK_CB(WRITELINE(ddragon_state, dd_adpcm_int_2)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ddragon2, ddragon_state ) +static MACHINE_CONFIG_START( ddragon2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, MAIN_CLOCK) /* 12 MHz / 4 internally */ @@ -1087,12 +1100,12 @@ static MACHINE_CONFIG_START( ddragon2, ddragon_state ) MCFG_SOUND_ROUTE(0, "mono", 0.60) MCFG_SOUND_ROUTE(1, "mono", 0.60) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( darktowr, ddragon, darktowr_state ) +static MACHINE_CONFIG_DERIVED( darktowr, ddragon ) /* basic machine hardware */ MCFG_CPU_ADD("mcu", M68705P3, XTAL_4MHz) @@ -1102,7 +1115,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( darktowr, ddragon, darktowr_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( toffy, ddragon, toffy_state ) +static MACHINE_CONFIG_DERIVED( toffy, ddragon ) /* basic machine hardware */ MCFG_DEVICE_REMOVE("sub") diff --git a/src/mame/drivers/ddragon3.cpp b/src/mame/drivers/ddragon3.cpp index db6e118c371..4f6616b16ed 100644 --- a/src/mame/drivers/ddragon3.cpp +++ b/src/mame/drivers/ddragon3.cpp @@ -828,7 +828,7 @@ void ddragon3_state::machine_reset() m_io_reg[i] = 0; } -static MACHINE_CONFIG_START( ddragon3, ddragon3_state ) +static MACHINE_CONFIG_START( ddragon3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz / 2) @@ -842,7 +842,7 @@ static MACHINE_CONFIG_START( ddragon3, ddragon3_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 448, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */ MCFG_SCREEN_UPDATE_DRIVER(ddragon3_state, screen_update_ddragon3) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", ddragon3) @@ -861,7 +861,7 @@ static MACHINE_CONFIG_START( ddragon3, ddragon3_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.50) MACHINE_CONFIG_END @@ -898,7 +898,7 @@ static MACHINE_CONFIG_DERIVED( ctribe, ddragon3 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state ) +static MACHINE_CONFIG_START( wwfwfest ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) /* 24 crystal, 12 rated chip */ @@ -914,7 +914,7 @@ static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 448, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */ MCFG_SCREEN_UPDATE_DRIVER(wwfwfest_state, screen_update_wwfwfest) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", wwfwfest) @@ -931,7 +931,7 @@ static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state ) MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(1, "mono", 0.45) - MCFG_OKIM6295_ADD("oki", 1024188, OKIM6295_PIN7_HIGH) /* Verified - Pin 7 tied to +5VDC */ + MCFG_OKIM6295_ADD("oki", 1024188, PIN7_HIGH) /* Verified - Pin 7 tied to +5VDC */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) MACHINE_CONFIG_END @@ -1479,20 +1479,20 @@ ROM_END * *************************************/ -GAME( 1990, ddragon3, 0, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ddragon3j,ddragon3, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ddragon3p,ddragon3, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ddragon3b,ddragon3, ddragon3b,ddragon3b, driver_device,0, ROT0, "bootleg", "Double Dragon 3 - The Rosetta Stone (bootleg)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1990, ctribe, 0, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ctribe1, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US set 1?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ctribeo, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US, older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ctribej, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ctribeb, ctribe, ctribe, ctribeb, driver_device, 0, ROT0, "bootleg", "The Combatribes (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ctribeb2, ctribe, ctribe, ctribeb, driver_device, 0, ROT0, "bootleg", "The Combatribes (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1991, wwfwfest, 0, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (World)", MACHINE_SUPPORTS_SAVE ) /* Euro label but shows FBI "Winners Don't Do drugs" logo */ -GAME( 1991, wwfwfestu, wwfwfest, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan", "WWF WrestleFest (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, wwfwfestb, wwfwfest, wwfwfstb, wwfwfest, driver_device, 0, ROT0, "bootleg", "WWF WrestleFest (US bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, wwfwfestj, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, wwfwfestk, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ddragon3, 0, ddragon3, ddragon3, ddragon3_state, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ddragon3j, ddragon3, ddragon3, ddragon3, ddragon3_state, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ddragon3p, ddragon3, ddragon3, ddragon3, ddragon3_state, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ddragon3b, ddragon3, ddragon3b, ddragon3b, ddragon3_state, 0, ROT0, "bootleg", "Double Dragon 3 - The Rosetta Stone (bootleg)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1990, ctribe, 0, ctribe, ctribe, ddragon3_state, 0, ROT0, "Technos Japan", "The Combatribes (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ctribe1, ctribe, ctribe, ctribe, ddragon3_state, 0, ROT0, "Technos Japan", "The Combatribes (US set 1?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ctribeo, ctribe, ctribe, ctribe, ddragon3_state, 0, ROT0, "Technos Japan", "The Combatribes (US, older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ctribej, ctribe, ctribe, ctribe, ddragon3_state, 0, ROT0, "Technos Japan", "The Combatribes (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ctribeb, ctribe, ctribe, ctribeb, ddragon3_state, 0, ROT0, "bootleg", "The Combatribes (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ctribeb2, ctribe, ctribe, ctribeb, ddragon3_state, 0, ROT0, "bootleg", "The Combatribes (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1991, wwfwfest, 0, wwfwfest, wwfwfest, wwfwfest_state, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (World)", MACHINE_SUPPORTS_SAVE ) // Euro label but shows FBI "Winners Don't Do drugs" logo +GAME( 1991, wwfwfestu, wwfwfest, wwfwfest, wwfwfest, wwfwfest_state, 0, ROT0, "Technos Japan", "WWF WrestleFest (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, wwfwfestb, wwfwfest, wwfwfstb, wwfwfest, wwfwfest_state, 0, ROT0, "bootleg", "WWF WrestleFest (US bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, wwfwfestj, wwfwfest, wwfwfest, wwfwfesta, wwfwfest_state, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, wwfwfestk, wwfwfest, wwfwfest, wwfwfesta, wwfwfest_state, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Korea)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ddribble.cpp b/src/mame/drivers/ddribble.cpp index b4067ab0fd3..51c6d41ba90 100644 --- a/src/mame/drivers/ddribble.cpp +++ b/src/mame/drivers/ddribble.cpp @@ -98,13 +98,13 @@ WRITE8_MEMBER(ddribble_state::ddribble_vlm5030_ctrl_w) membank("vlmbank")->set_entry(data & 0x08 ? 1 : 0); /* b2 : SSG-C rc filter enable */ - m_filter3->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x04 ? CAP_N(150) : 0); /* YM2203-SSG-C */ + m_filter3->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 2200, 1000, data & 0x04 ? CAP_N(150) : 0); /* YM2203-SSG-C */ /* b1 : SSG-B rc filter enable */ - m_filter2->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x02 ? CAP_N(150) : 0); /* YM2203-SSG-B */ + m_filter2->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 2200, 1000, data & 0x02 ? CAP_N(150) : 0); /* YM2203-SSG-B */ /* b0 : SSG-A rc filter enable */ - m_filter1->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x01 ? CAP_N(150) : 0); /* YM2203-SSG-A */ + m_filter1->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 2200, 1000, data & 0x01 ? CAP_N(150) : 0); /* YM2203-SSG-A */ } @@ -256,7 +256,7 @@ void ddribble_state::machine_reset() m_charbank[1] = 0; } -static MACHINE_CONFIG_START( ddribble, ddribble_state ) +static MACHINE_CONFIG_START( ddribble ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_18_432MHz/12) /* verified on pcb */ @@ -379,5 +379,5 @@ ROM_START( ddribblep ) ROM_LOAD( "voice_10.d7", 0x10000, 0x10000, CRC(b4c97494) SHA1(93f7c3c93f6f790c3f480e183da0105b5ac3593b) ) ROM_END -GAME( 1986, ddribble, 0, ddribble, ddribble, driver_device, 0, ROT0, "Konami", "Double Dribble", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ddribblep, ddribble, ddribble, ddribble, driver_device, 0, ROT0, "Konami", "Double Dribble (prototype?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ddribble, 0, ddribble, ddribble, ddribble_state, 0, ROT0, "Konami", "Double Dribble", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ddribblep, ddribble, ddribble, ddribble, ddribble_state, 0, ROT0, "Konami", "Double Dribble (prototype?)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/de_2.cpp b/src/mame/drivers/de_2.cpp index 51e9f3303de..648cfdf89a4 100644 --- a/src/mame/drivers/de_2.cpp +++ b/src/mame/drivers/de_2.cpp @@ -414,7 +414,7 @@ READ8_MEMBER( de_2_state::sound_latch_r ) WRITE8_MEMBER( de_2_state::sample_bank_w ) { - static const uint8_t prescale[4] = { MSM5205_S96_4B, MSM5205_S48_4B, MSM5205_S64_4B, 0 }; + static constexpr uint8_t prescale[4] = { msm5205_device::S96_4B, msm5205_device::S48_4B, msm5205_device::S64_4B, 0 }; m_sample_bank_num = (data & 0x07); m_sample_bank->set_entry(m_sample_bank_num); @@ -518,7 +518,7 @@ WRITE8_MEMBER(de_2_state::lamps_w) } -static MACHINE_CONFIG_START( de_type1, de_2_state ) +static MACHINE_CONFIG_START( de_type1 ) /* basic machine hardware */ MCFG_DECOCPU_TYPE1_ADD("decocpu",XTAL_8MHz / 2, ":maincpu") MCFG_DECOCPU_DISPLAY(READ8(de_2_state,display_r),WRITE8(de_2_state,display_w)) @@ -542,11 +542,11 @@ static MACHINE_CONFIG_START( de_type1, de_2_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MCFG_SOUND_ADD("msm5205", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(de_2_state, msm5205_irq_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( de_type2, de_2_state ) +static MACHINE_CONFIG_START( de_type2 ) /* basic machine hardware */ MCFG_DECOCPU_TYPE2_ADD("decocpu",XTAL_8MHz / 2, ":maincpu") MCFG_DECOCPU_DISPLAY(READ8(de_2_state,display_r),WRITE8(de_2_state,display_w)) @@ -570,11 +570,11 @@ static MACHINE_CONFIG_START( de_type2, de_2_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MCFG_SOUND_ADD("msm5205", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(de_2_state, msm5205_irq_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( de_type2_alpha3, de_2_state ) +static MACHINE_CONFIG_START( de_type2_alpha3 ) /* basic machine hardware */ MCFG_DECOCPU_TYPE2_ADD("decocpu",XTAL_8MHz / 2, ":maincpu") MCFG_DECOCPU_DISPLAY(READ8(de_2_state,display_r),WRITE8(de_2_state,type2alpha3_display_w)) @@ -598,11 +598,11 @@ static MACHINE_CONFIG_START( de_type2_alpha3, de_2_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MCFG_SOUND_ADD("msm5205", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(de_2_state, msm5205_irq_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( de_type3, de_2_state ) +static MACHINE_CONFIG_START( de_type3 ) /* basic machine hardware */ MCFG_DECOCPU_TYPE3_ADD("decocpu",XTAL_8MHz / 2, ":maincpu") MCFG_DECOCPU_DISPLAY(READ8(de_2_state,display_r),WRITE8(de_2_state,alpha3_display_w)) @@ -626,7 +626,7 @@ static MACHINE_CONFIG_START( de_type3, de_2_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MCFG_SOUND_ADD("msm5205", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(de_2_state, msm5205_irq_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50) MACHINE_CONFIG_END @@ -950,29 +950,29 @@ ROM_START(torp_a16) ROM_END -GAME(1990, bttf_a28, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.8)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, bttf_a27, bttf_a28, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.7)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, bttf_a20, bttf_a28, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.0)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, bttf_a21, bttf_a28, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To The Future (2.1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(199?, bttf_g27, bttf_a28, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.7 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, kiko_a10, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "King Kong (1.0)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, lwar_a83, 0, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (8.3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, lwar_a81, lwar_a83, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (8.1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, lwar_e90, lwar_a83, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (9.0 Europe)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, mnfb_c29, 0, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "Monday Night Football (2.9, 50cts)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, mnfb_c27, mnfb_c29, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "Monday Night Football (2.7, 50cts)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, poto_a32, 0, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "The Phantom of the Opera (3.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, poto_a29, poto_a32, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "The Phantom of the Opera (2.9)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, play_a24, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Playboy 35th Anniversary (2.4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, robo_a34, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Robocop (3.4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, robo_a30, robo_a34, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Robocop (3.0)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, ssvc_a26, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (2.6)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, ssvc_b26, ssvc_a26, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (2.6 alternate sound)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, ssvc_a42, ssvc_a26, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (4.2 alternate sound)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, simp_a27, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "The Simpsons (2.7)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, simp_a20, simp_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "The Simpsons (2.0)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, tmac_a24, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (2.4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, tmac_a18, tmac_a24, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (1.8)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, tmac_g18, tmac_a24, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (1.8, Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, torp_e21, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Torpedo Alley (2.1, Europe)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, torp_a16, torp_e21, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Torpedo Alley (1.6)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, bttf_a28, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.8)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, bttf_a27, bttf_a28, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.7)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, bttf_a20, bttf_a28, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.0)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, bttf_a21, bttf_a28, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To The Future (2.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(199?, bttf_g27, bttf_a28, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.7 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, kiko_a10, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "King Kong (1.0)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, lwar_a83, 0, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (8.3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, lwar_a81, lwar_a83, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (8.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, lwar_e90, lwar_a83, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (9.0 Europe)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, mnfb_c29, 0, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "Monday Night Football (2.9, 50cts)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, mnfb_c27, mnfb_c29, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "Monday Night Football (2.7, 50cts)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, poto_a32, 0, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "The Phantom of the Opera (3.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, poto_a29, poto_a32, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "The Phantom of the Opera (2.9)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, play_a24, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Playboy 35th Anniversary (2.4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, robo_a34, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Robocop (3.4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, robo_a30, robo_a34, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Robocop (3.0)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, ssvc_a26, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (2.6)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, ssvc_b26, ssvc_a26, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (2.6 alternate sound)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, ssvc_a42, ssvc_a26, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (4.2 alternate sound)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, simp_a27, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "The Simpsons (2.7)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, simp_a20, simp_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "The Simpsons (2.0)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, tmac_a24, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (2.4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, tmac_a18, tmac_a24, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (1.8)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, tmac_g18, tmac_a24, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (1.8, Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, torp_e21, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Torpedo Alley (2.1, Europe)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, torp_a16, torp_e21, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Torpedo Alley (1.6)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/de_3.cpp b/src/mame/drivers/de_3.cpp index 8d180770039..2217a25314d 100644 --- a/src/mame/drivers/de_3.cpp +++ b/src/mame/drivers/de_3.cpp @@ -391,7 +391,7 @@ DRIVER_INIT_MEMBER(de_3_state,de_3) { } -static MACHINE_CONFIG_START( de_3, de_3_state ) +static MACHINE_CONFIG_START( de_3 ) /* basic machine hardware */ MCFG_DECOCPU_TYPE3_ADD("decocpu",XTAL_8MHz / 2, ":maincpu") MCFG_DECOCPU_DISPLAY(READ8(de_3_state,display_r),WRITE8(de_3_state,display_w)) @@ -1113,6 +1113,22 @@ ROM_START(tmnt_104) ROM_LOAD("tmntf4.rom", 0x20000, 0x20000, CRC(6c38cd84) SHA1(bbe8797fe1622cb8f0842c4d7159760fed080880)) ROM_END +ROM_START(tmnt_104g) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD("tmntb5a.104", 0x4000, 0x4000, CRC(f508eeee) SHA1(5e67fde49f6e7d5d563645df9036d5691be076cf)) + ROM_LOAD("tmntc5g.104", 0x8000, 0x8000, CRC(d7f2fd8b) SHA1(b80f6201ca2981ec4a3869688963884948a6bd72)) + ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF) + ROM_REGION(0x400, "user3", ROMREGION_ERASEFF) + ROM_REGION(0x20000, "gfx3", 0) + ROM_LOAD("tmntdsp.104", 0x00000, 0x10000, CRC(545686b7) SHA1(713df7820d024db3406f5e171f62a53e34474f70)) + ROM_RELOAD(0x10000, 0x10000) + ROM_REGION(0x10000, "soundcpu", 0) + ROM_LOAD("tmntf7.rom", 0x8000, 0x8000, CRC(59ba0153) SHA1(e7b02a656c67a0d866020a60ee90e30bef77f67f)) + ROM_REGION(0x1000000, "bsmt", 0) + ROM_LOAD("tmntf6.rom", 0x00000, 0x20000, CRC(5668d45a) SHA1(65766cb47791ec0a2243015d487f1156a2819fe6)) + ROM_LOAD("tmntf4.rom", 0x20000, 0x20000, CRC(6c38cd84) SHA1(bbe8797fe1622cb8f0842c4d7159760fed080880)) +ROM_END + ROM_START(tmnt_103) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("tmntb5.103", 0x4000, 0x4000, CRC(fcc6c5b0) SHA1(062bbc93de0f8bb1921da4d756a13923f23cf5d9)) @@ -1256,6 +1272,7 @@ GAME(1993, tftc_300, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, GAME(1993, tftc_200, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (2.00)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1993, tftc_104, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (1.04 Spain)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1991, tmnt_104, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.04)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, tmnt_104g, tmnt_104, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.04) Germany", MACHINE_IS_SKELETON_MECHANICAL) GAME(1991, tmnt_103, tmnt_104, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.03)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1994, tomy_400, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (4.00)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1994, tomy_h30, tomy_400, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (3.00, The Netherlands)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/de_3b.cpp b/src/mame/drivers/de_3b.cpp index fa896e1500a..c313f83c317 100644 --- a/src/mame/drivers/de_3b.cpp +++ b/src/mame/drivers/de_3b.cpp @@ -239,7 +239,7 @@ DRIVER_INIT_MEMBER(de_3b_state,de_3b) { } -static MACHINE_CONFIG_START( de_3b, de_3b_state ) +static MACHINE_CONFIG_START( de_3b ) /* basic machine hardware */ MCFG_DECOCPU_TYPE3B_ADD("decocpu",XTAL_8MHz / 2, ":maincpu") MCFG_DECOCPU_DISPLAY(READ8(de_3b_state,display_r),WRITE8(de_3b_state,display_w)) @@ -257,7 +257,7 @@ static MACHINE_CONFIG_START( de_3b, de_3b_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( detest, de_3b_state ) +static MACHINE_CONFIG_START( detest ) /* basic machine hardware */ MCFG_DECOCPU_TYPE3B_ADD("decocpu",XTAL_8MHz / 2, ":maincpu") @@ -677,33 +677,33 @@ ROM_START(detest) ROM_END -GAME(1995, batmanf, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (4.0)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, batmanf3, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (3.0)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, batmanf2, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (2.02)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, batmanf1, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (1.02)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_uk, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (English)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_cn, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Canadian)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_no, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Norwegian)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_sv, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Swedish)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_at, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Austrian)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_ch, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Swiss)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_de, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_be, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Belgian)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_fr, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_nl, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Dutch)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_it, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Italian)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_sp, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Spanish)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_jp, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Japanese)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bmf_time, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Timed Play)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, baywatch, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bay_d300, baywatch, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch (3.00 Dutch)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bay_d400, baywatch, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch (4.00 English)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bay_e400, baywatch, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch (4.00 Dutch)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, frankst, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Mary Shelley's Frankenstein", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, frankstg, frankst, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Mary Shelley's Frankenstein (Germany)",MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, mav_402, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.02)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, mav_401, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.01)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, mav_400, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, mav_100, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (1.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1998, detest, 0, detest, de_3b, de_3b_state, de_3b, ROT0, "Data East", "Data East Test Chip", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1996, ctcheese, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Cut The Cheese (Redemption)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, batmanf, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (4.0)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, batmanf3, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (3.0)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, batmanf2, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (2.02)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, batmanf1, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (1.02)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_uk, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (English)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_cn, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Canadian)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_no, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Norwegian)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_sv, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Swedish)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_at, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Austrian)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_ch, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Swiss)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_de, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_be, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Belgian)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_fr, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_nl, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Dutch)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_it, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Italian)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_sp, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Spanish)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_jp, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Japanese)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bmf_time, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Timed Play)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, baywatch, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bay_d300, baywatch, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch (3.00 Dutch)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bay_d400, baywatch, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch (4.00 English)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bay_e400, baywatch, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch (4.00 Dutch)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, frankst, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Mary Shelley's Frankenstein", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, frankstg, frankst, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Mary Shelley's Frankenstein (Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, mav_402, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.02)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, mav_401, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.01)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, mav_400, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, mav_100, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (1.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1998, detest, 0, detest, de_3b, de_3b_state, de_3b, ROT0, "Data East", "Data East Test Chip", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1996, ctcheese, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Cut The Cheese (Redemption)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/deadang.cpp b/src/mame/drivers/deadang.cpp index d5612a06d73..8a2ba28b320 100644 --- a/src/mame/drivers/deadang.cpp +++ b/src/mame/drivers/deadang.cpp @@ -265,7 +265,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::sub_scanline) /* Machine Drivers */ -static MACHINE_CONFIG_START( deadang, deadang_state ) +static MACHINE_CONFIG_START( deadang ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30,XTAL_16MHz/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ @@ -532,7 +532,7 @@ DRIVER_INIT_MEMBER(deadang_state,ghunter) /* Game Drivers */ -GAME( 1988, deadang, 0, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, deadang, 0, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, ghunter, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu", "Gang Hunter / Dead Angle", MACHINE_SUPPORTS_SAVE ) // Title is 'Gang Hunter' or 'Dead Angle' depending on control method dipswitch GAME( 1988, ghunters, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu (Segasa/Sonic license)", "Gang Hunter / Dead Angle (Spain)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dec0.cpp b/src/mame/drivers/dec0.cpp index 45be093de3d..719b9cbbd10 100644 --- a/src/mame/drivers/dec0.cpp +++ b/src/mame/drivers/dec0.cpp @@ -1449,7 +1449,7 @@ GFXDECODE_END #define DEC0_VBSTART 256-8 -static MACHINE_CONFIG_START( dec0_base, dec0_state ) +static MACHINE_CONFIG_START( dec0_base ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -1510,7 +1510,7 @@ static MACHINE_CONFIG_DERIVED( dec0, dec0_base ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_20MHz / 2 / 10, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_20MHz / 2 / 10, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -1538,7 +1538,7 @@ static MACHINE_CONFIG_DERIVED( dec1, dec0_base ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -1571,7 +1571,7 @@ WRITE_LINE_MEMBER(dec0_automat_state::msm2_vclk_cb) } -static MACHINE_CONFIG_START( automat, dec0_automat_state ) +static MACHINE_CONFIG_START( automat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -1636,17 +1636,17 @@ static MACHINE_CONFIG_START( automat, dec0_automat_state ) MCFG_SOUND_ADD("msm1", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(dec0_automat_state, msm1_vclk_cb)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ADD("msm2", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(dec0_automat_state, msm2_vclk_cb)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END // this seems very similar to the automat bootleg -static MACHINE_CONFIG_START( secretab, dec0_automat_state ) +static MACHINE_CONFIG_START( secretab ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) /* verified on pcb (20MHZ OSC) 68000P12 running at 10Mhz */ @@ -1708,12 +1708,12 @@ static MACHINE_CONFIG_START( secretab, dec0_automat_state ) MCFG_SOUND_ADD("msm1", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(dec0_automat_state, msm1_vclk_cb)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ADD("msm2", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(dec0_automat_state, msm2_vclk_cb)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -3586,9 +3586,9 @@ GAME( 1989, secretagj, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0 GAME( 1989, slyspy, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 4)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, slyspy3, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, slyspy2, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, midres, 0, midres, midres, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, midresu, midres, midres, midresu, driver_device, 0, ROT0, "Data East USA", "Midnight Resistance (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, midresj, midres, midres, midresu, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, midres, 0, midres, midres, dec0_state, 0, ROT0, "Data East Corporation", "Midnight Resistance (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, midresu, midres, midres, midresu, dec0_state, 0, ROT0, "Data East USA", "Midnight Resistance (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, midresj, midres, midres, midresu, dec0_state, 0, ROT0, "Data East Corporation", "Midnight Resistance (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, bouldash, 0, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (World)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, bouldashj, bouldash, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (Japan)", MACHINE_SUPPORTS_SAVE ) @@ -3606,5 +3606,5 @@ GAME( 1989, ffantasybl, hippodrm, ffantasybl, ffantasybl, dec0_state, ffantasybl GAME( 1988, drgninjab2, baddudes, drgninjab, drgninja, dec0_state, drgninja, ROT0, "bootleg", "Dragonninja (bootleg with 68705)", MACHINE_SUPPORTS_SAVE ) // is this the same board as above? (region warning hacked to World, but still shows Japanese text) // these are different to the above but quite similar to each other -GAME( 1988, automat, robocop, automat, robocop, dec0_state, robocop, ROT0, "bootleg", "Automat (bootleg of Robocop)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // sound rom / music from section z with mods for ADPCM? -GAME( 1989, secretab, secretag, secretab, slyspy, driver_device, 0, ROT0, "bootleg", "Secret Agent (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, automat, robocop, automat, robocop, dec0_automat_state, robocop, ROT0, "bootleg", "Automat (bootleg of Robocop)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // sound rom / music from section z with mods for ADPCM? +GAME( 1989, secretab, secretag, secretab, slyspy, dec0_automat_state, 0, ROT0, "bootleg", "Secret Agent (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dec8.cpp b/src/mame/drivers/dec8.cpp index e1d95f58bb8..0d0d93b03c2 100644 --- a/src/mame/drivers/dec8.cpp +++ b/src/mame/drivers/dec8.cpp @@ -72,7 +72,7 @@ WRITE8_MEMBER(dec8_state::dec8_mxc06_karn_buffer_spriteram_w) } /* Only used by ghostb, gondo, garyoret, other games can control buffering */ -void dec8_state::screen_eof_dec8(screen_device &screen, bool state) +WRITE_LINE_MEMBER(dec8_state::screen_vblank_dec8) { // rising edge if (state) @@ -1987,7 +1987,7 @@ void dec8_state::machine_reset() #define DEC8_VBEND 8 #define DEC8_VBSTART 256-8 -static MACHINE_CONFIG_START( lastmisn, dec8_state ) +static MACHINE_CONFIG_START( lastmisn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) @@ -2040,7 +2040,7 @@ static MACHINE_CONFIG_START( lastmisn, dec8_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( shackled, dec8_state ) +static MACHINE_CONFIG_START( shackled ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) @@ -2094,7 +2094,7 @@ static MACHINE_CONFIG_START( shackled, dec8_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gondo, dec8_state ) +static MACHINE_CONFIG_START( gondo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */ @@ -2123,7 +2123,7 @@ static MACHINE_CONFIG_START( gondo, dec8_state ) // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_gondo) - MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dec8_state, screen_vblank_dec8)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", gondo) @@ -2148,7 +2148,7 @@ static MACHINE_CONFIG_START( gondo, dec8_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( garyoret, dec8_state ) +static MACHINE_CONFIG_START( garyoret ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */ @@ -2177,7 +2177,7 @@ static MACHINE_CONFIG_START( garyoret, dec8_state ) // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_garyoret) - MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dec8_state, screen_vblank_dec8)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", gondo) @@ -2202,7 +2202,7 @@ static MACHINE_CONFIG_START( garyoret, dec8_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ghostb, dec8_state ) +static MACHINE_CONFIG_START( ghostb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, 3000000*4) @@ -2235,7 +2235,7 @@ static MACHINE_CONFIG_START( ghostb, dec8_state ) // MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) MCFG_SCREEN_RAW_PARAMS(DEC8_PIXEL_CLOCK, DEC8_HTOTAL, DEC8_HBEND, DEC8_HBSTART, DEC8_VTOTAL, DEC8_VBEND, DEC8_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_ghostb) - MCFG_SCREEN_VBLANK_DRIVER(dec8_state, screen_eof_dec8) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dec8_state, screen_vblank_dec8)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", ghostb) @@ -2266,7 +2266,7 @@ static MACHINE_CONFIG_DERIVED( meikyuh, ghostb ) MCFG_CPU_PROGRAM_MAP(dec8_s_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( csilver, dec8_state ) +static MACHINE_CONFIG_START( csilver ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_12MHz/8) /* verified on pcb */ @@ -2321,11 +2321,11 @@ static MACHINE_CONFIG_START( csilver, dec8_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* verified on pcb */ MCFG_MSM5205_VCLK_CB(WRITELINE(dec8_state, csilver_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.88) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( oscar, dec8_state ) +static MACHINE_CONFIG_START( oscar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, XTAL_12MHz/2) /* verified on pcb */ @@ -2383,7 +2383,7 @@ static MACHINE_CONFIG_START( oscar, dec8_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( srdarwin, dec8_state ) +static MACHINE_CONFIG_START( srdarwin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809,2000000) /* MC68A09EP */ @@ -2429,7 +2429,7 @@ static MACHINE_CONFIG_START( srdarwin, dec8_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cobracom, dec8_state ) +static MACHINE_CONFIG_START( cobracom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) @@ -2935,6 +2935,43 @@ ROM_START( ghostb3 ) ROM_LOAD( "dz20a.11d", 0x0400, 0x0400, CRC(d8fe2d99) SHA1(56f8fcf2f871c7d52d4299a5b9988401ada4319d) ) ROM_END +ROM_START( ghostb3a ) + ROM_REGION( 0x50000, "maincpu", 0 ) + ROM_LOAD( "dz01-2.1d", 0x08000, 0x08000, CRC(1b16890e) SHA1(eebd253d616b6286937b72cfb64612877f383932) ) + ROM_LOAD( "dz02-.3d", 0x10000, 0x10000, CRC(8e117541) SHA1(7dfa6eabb29f39a615f3e5123bddcc7197ab82d0) ) // == dz02.3d (ghostb3) + ROM_LOAD( "dz03-.4d", 0x20000, 0x10000, CRC(5606a8f4) SHA1(e46e887f13f648fe2162cb853b3c20fa60e3d215) ) // == dz03.4d (ghostb3) + ROM_LOAD( "dz04-.6d", 0x30000, 0x10000, CRC(490b4525) SHA1(3066b76f8fe99c8f9f1cdf943209883a199a4184) ) + ROM_LOAD( "dz05-.7d", 0x40000, 0x10000, CRC(b4971d33) SHA1(25e052c4b414c7bd7b6e3ae9c211873902afb5f7) ) // == dz05-1.7d (ghostb3) + + ROM_REGION( 2*0x10000, "audiocpu", 0 ) /* 64K for sound CPU + 64k for decrypted opcodes */ + ROM_LOAD( "dz06.5f", 0x8000, 0x8000, CRC(798f56df) SHA1(aee33cd0c102015114e17f6cb98945e7cc806f55) ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H (fake) MCU */ + ROM_LOAD( "dz.1b", 0x0000, 0x1000, BAD_DUMP CRC(18b7e1e6) SHA1(46b6d914ecee5e743ac805be1545ca44fb016d7d) ) + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "dz00.16b", 0x00000, 0x08000, CRC(992b4f31) SHA1(a9f255286193ccc261a9b6983aabf3c76ebe5ce5) ) + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "dz15.14f", 0x00000, 0x10000, CRC(a01a5fd9) SHA1(c15e11fbc0ede9e4a232abe37e6d221d5789ce8e) ) + ROM_LOAD( "dz16.15f", 0x10000, 0x10000, CRC(5a9a344a) SHA1(f4e8c2bae023ce996e99383873eba23ab6f972a8) ) + ROM_LOAD( "dz12.9f", 0x20000, 0x10000, CRC(817fae99) SHA1(4179501aedbdf5bb0824bf1c13e033685e57a207) ) + ROM_LOAD( "dz14.12f", 0x30000, 0x10000, CRC(0abbf76d) SHA1(fefb0cb7b866452b890bcf8c47b1ed95df35095e) ) + ROM_LOAD( "dz11.8f", 0x40000, 0x10000, CRC(a5e19c24) SHA1(a4aae81a116577ee3cdd9e1a46cae413ae252b76) ) + ROM_LOAD( "dz13.1f", 0x50000, 0x10000, CRC(3e7c0405) SHA1(2cdcb9a902acecec0729a906b7edb44baf130d32) ) + ROM_LOAD( "dz17.17f", 0x60000, 0x10000, CRC(40361b8b) SHA1(6ee59129e236ead3d9b828fb9726311b7a4f2ff6) ) + ROM_LOAD( "dz18.18f", 0x70000, 0x10000, CRC(8d219489) SHA1(0490ad84085d1a60ece1b8ab45f0c551d2ac219d) ) + + ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "dz07.12f", 0x00000, 0x10000, CRC(e7455167) SHA1(a4582ced57862563ef626a25ced4072bc2c95750) ) + ROM_LOAD( "dz08.14f", 0x10000, 0x10000, CRC(32f9ddfe) SHA1(2b8c228b0ca938ab7495d53e1a39275a8b872828) ) + ROM_LOAD( "dz09.15f", 0x20000, 0x10000, CRC(bb6efc02) SHA1(ec501cd4a624d9c36a545dd100bc4f2f8b1e5cc0) ) + ROM_LOAD( "dz10.17f", 0x30000, 0x10000, CRC(6ef9963b) SHA1(f12a2e2b0451a118234b2995185bb14d4998d430) ) + + ROM_REGION( 0x0800, "proms", 0 ) + ROM_LOAD( "dz19a.10d", 0x0000, 0x0400, CRC(47e1f83b) SHA1(f073eea1f33ed7a4862e4efd143debf1e0ee64b4) ) + ROM_LOAD( "dz20a.11d", 0x0400, 0x0400, CRC(d8fe2d99) SHA1(56f8fcf2f871c7d52d4299a5b9988401ada4319d) ) +ROM_END /* Meikyuu Hunter G (also known as Maze Hunter) @@ -3154,7 +3191,7 @@ ROM_START( meikyuha ) ROM_END /* -Main Compoennts +Main Components --------------- Top board (DATA EAST DE-0250-3): @@ -3222,12 +3259,12 @@ ROM_START( csilver ) ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites (3bpp) */ ROM_LOAD( "dx14.15k", 0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) ) - /* 0x10000-0x1ffff empy */ + /* 0x10000-0x1ffff empty */ ROM_LOAD( "dx13.13k", 0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) ) - /* 0x30000-0x3ffff empy */ + /* 0x30000-0x3ffff empty */ ROM_LOAD( "dx12.10k", 0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) ) - /* 0x50000-0x5ffff empy */ - /* 0x60000-0x7ffff empy (no 4th plane) */ + /* 0x50000-0x5ffff empty */ + /* 0x60000-0x7ffff empty (no 4th plane) */ ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles (3bpp) */ ROM_LOAD( "dx06.5f", 0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) ) @@ -3260,12 +3297,12 @@ ROM_START( csilverj ) ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites (3bpp) */ ROM_LOAD( "dx14.b5", 0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) ) - /* 0x10000-0x1ffff empy */ + /* 0x10000-0x1ffff empty */ ROM_LOAD( "dx13.b4", 0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) ) - /* 0x30000-0x3ffff empy */ + /* 0x30000-0x3ffff empty */ ROM_LOAD( "dx12.b3", 0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) ) - /* 0x50000-0x5ffff empy */ - /* 0x60000-0x7ffff empy (no 4th plane) */ + /* 0x50000-0x5ffff empty */ + /* 0x60000-0x7ffff empty (no 4th plane) */ ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles (3bpp) */ ROM_LOAD( "dx06.a7", 0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) ) @@ -3276,6 +3313,45 @@ ROM_START( csilverj ) ROM_LOAD( "dx11.b2", 0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) ) ROM_END +/* Same IC positions to World set */ + +ROM_START( csilverja ) // DE-0250-3 + DE-0251-2 + ROM_REGION( 0x48000, "maincpu", 0 ) + ROM_LOAD( "dx03-1.18d", 0x08000, 0x08000, CRC(d42905be) SHA1(5a406466aa9bb2b2591d02fc87289cb93f7358c6) ) + ROM_LOAD( "dx01.12d", 0x10000, 0x10000, CRC(570fb50c) SHA1(3002f53182834a060fc282be1bc5767906e19ba2) ) + ROM_LOAD( "dx02.13d", 0x20000, 0x10000, CRC(58625890) SHA1(503a969085f6dcb16687217c48136ea22d07c89f) ) + + ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */ + ROM_LOAD( "dx04-1.19d", 0x0000, 0x10000, CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "dx05.3f", 0x10000, 0x08000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) ) + ROM_CONTINUE( 0x08000, 0x08000 ) + + ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */ + ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) + + ROM_REGION( 0x08000, "gfx1", 0 ) /* characters */ + ROM_LOAD( "dx00.3d", 0x00000, 0x08000, CRC(f01ef985) SHA1(d5b823bd7c0efcf3137f8643c5d99a260bed5675) ) + + ROM_REGION( 0x80000, "gfx2", 0 ) /* sprites (3bpp) */ + ROM_LOAD( "dx14.15k", 0x00000, 0x10000, CRC(80f07915) SHA1(ea100f12ef3a68110af911fa9beeb73b388f069d) ) + /* 0x10000-0x1ffff empty */ + ROM_LOAD( "dx13.13k", 0x20000, 0x10000, CRC(d32c02e7) SHA1(d0518ec31e9e3f7b4e76fba5d7c05c33c61a9c72) ) + /* 0x30000-0x3ffff empty */ + ROM_LOAD( "dx12.10k", 0x40000, 0x10000, CRC(ac78b76b) SHA1(c2be347fd950894401123ada8b27bfcfce53e66b) ) + /* 0x50000-0x5ffff empty */ + /* 0x60000-0x7ffff empty (no 4th plane) */ + + ROM_REGION( 0x80000, "gfx3", 0 ) /* tiles (3bpp) */ + ROM_LOAD( "dx06.5f", 0x00000, 0x10000, CRC(b6fb208c) SHA1(027d33f0b5feb6f0433134213cfcef96790eaace) ) + ROM_LOAD( "dx07.7f", 0x10000, 0x10000, CRC(ee3e1817) SHA1(013496976a9ffacf1587b3a6fc0f548becb1ab0e) ) + ROM_LOAD( "dx08.8f", 0x20000, 0x10000, CRC(705900fe) SHA1(53b9d09f9780a3bf3545bc27a2855ebee3884124) ) + ROM_LOAD( "dx09.10f", 0x30000, 0x10000, CRC(3192571d) SHA1(240c6c099f1e6edbf0be7d5a4ec396b056c9f70f) ) + ROM_LOAD( "dx10.12f", 0x40000, 0x10000, CRC(3ef77a32) SHA1(97b97c35a6ca994d2e7a6e7a63101eda9709bcb1) ) + ROM_LOAD( "dx11.13f", 0x50000, 0x10000, CRC(9cf3d5b8) SHA1(df4974f8412ab1cf65871b8e4e3dbee478bf4d21) ) +ROM_END + ROM_START( oscar ) ROM_REGION( 0x20000, "maincpu", 0 ) ROM_LOAD( "du10", 0x08000, 0x08000, CRC(120040d8) SHA1(22d5f84f3ca724cbf39dfc4790f2175ba4945aaf) ) /* Is "DU" code correct for "World" or is */ @@ -3628,26 +3704,28 @@ DRIVER_INIT_MEMBER(dec8_state,cobracom) /******************************************************************************/ -GAME( 1986, lastmisn, 0, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 6)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lastmisno,lastmisn, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lastmisnj,lastmisn, lastmisn, lastmisnj, dec8_state, lastmisn, ROT270, "Data East Corporation", "Last Mission (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, shackled, 0, shackled, shackled, dec8_state, shackled, ROT0, "Data East USA", "Shackled (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, breywood, shackled, shackled, breywood, dec8_state, shackled, ROT0, "Data East Corporation", "Breywood (Japan revision 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, gondo, 0, gondo, gondo, dec8_state, gondo, ROT270, "Data East USA", "Gondomania (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, makyosen, gondo, gondo, gondo, dec8_state, gondo, ROT270, "Data East Corporation", "Makyou Senshi (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, garyoret, 0, garyoret, garyoret, dec8_state, garyoret, ROT0, "Data East Corporation", "Garyo Retsuden (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ghostb, 0, ghostb, ghostb, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ghostb2a, ghostb, ghostb, ghostb2a, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ghostb3, ghostb, ghostb, ghostb3, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, meikyuh, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, meikyuha, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, csilver, 0, csilver, csilver, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, csilverj, csilver, csilver, csilverj, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, oscar, 0, oscar, oscar, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, oscaru, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East USA", "Psycho-Nics Oscar (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, oscarj1, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, oscarj2, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, srdarwin, 0, srdarwin, srdarwin, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, srdarwinj,srdarwin, srdarwin, srdarwinj, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, cobracom, 0, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (World revision 5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, cobracomj,cobracom, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lastmisn, 0, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 6)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lastmisno, lastmisn, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lastmisnj, lastmisn, lastmisn, lastmisnj, dec8_state, lastmisn, ROT270, "Data East Corporation", "Last Mission (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, shackled, 0, shackled, shackled, dec8_state, shackled, ROT0, "Data East USA", "Shackled (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, breywood, shackled, shackled, breywood, dec8_state, shackled, ROT0, "Data East Corporation", "Breywood (Japan revision 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, gondo, 0, gondo, gondo, dec8_state, gondo, ROT270, "Data East USA", "Gondomania (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, makyosen, gondo, gondo, gondo, dec8_state, gondo, ROT270, "Data East Corporation", "Makyou Senshi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, garyoret, 0, garyoret, garyoret, dec8_state, garyoret, ROT0, "Data East Corporation", "Garyo Retsuden (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ghostb, 0, ghostb, ghostb, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ghostb2a, ghostb, ghostb, ghostb2a, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ghostb3, ghostb, ghostb, ghostb3, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ghostb3a, ghostb, ghostb, ghostb3, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players, revision ?)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // ROMs confirmed working on PCB, confirmed problem with the fake MCU ROM +GAME( 1987, meikyuh, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, meikyuha, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, csilver, 0, csilver, csilver, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, csilverj, csilver, csilver, csilverj, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan, revision 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, csilverja, csilver, csilver, csilverj, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan, revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, oscar, 0, oscar, oscar, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, oscaru, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East USA", "Psycho-Nics Oscar (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, oscarj1, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, oscarj2, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, srdarwin, 0, srdarwin, srdarwin, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, srdarwinj, srdarwin, srdarwin, srdarwinj, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, cobracom, 0, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (World revision 5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, cobracomj, cobracom, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/deco156.cpp b/src/mame/drivers/deco156.cpp index a837dc960f7..d909e9cc1bb 100644 --- a/src/mame/drivers/deco156.cpp +++ b/src/mame/drivers/deco156.cpp @@ -339,7 +339,7 @@ DECOSPR_PRIORITY_CB_MEMBER(deco156_state::pri_callback) return 0; } -static MACHINE_CONFIG_START( hvysmsh, deco156_state ) +static MACHINE_CONFIG_START( hvysmsh ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000) /* Unconfirmed */ @@ -381,16 +381,16 @@ static MACHINE_CONFIG_START( hvysmsh, deco156_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", 28000000/28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 28000000/28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 28000000/14, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 28000000/14, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wcvol95, deco156_state ) +static MACHINE_CONFIG_START( wcvol95 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000) /* Unconfirmed */ diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp index ffb6d966dd5..7224cbd3c3a 100644 --- a/src/mame/drivers/deco32.cpp +++ b/src/mame/drivers/deco32.cpp @@ -1824,7 +1824,7 @@ DECO16IC_BANK_CB_MEMBER(deco32_state::captaven_bank_callback) return bank * 0x4000; } -static MACHINE_CONFIG_START( captaven, deco32_state ) +static MACHINE_CONFIG_START( captaven ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, XTAL_28MHz/4) /* verified on pcb (Data East 101 custom)*/ @@ -1897,11 +1897,11 @@ static MACHINE_CONFIG_START( captaven, deco32_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) - MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, OKIM6295_PIN7_HIGH) /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */ + MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, PIN7_HIGH) /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, OKIM6295_PIN7_HIGH) /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */ + MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, PIN7_HIGH) /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) MACHINE_CONFIG_END @@ -1930,7 +1930,7 @@ DECO16IC_BANK_CB_MEMBER(deco32_state::fghthist_bank_callback) return bank * 0x1000; } -static MACHINE_CONFIG_START( fghthist, deco32_state ) /* DE-0380-2 PCB */ +static MACHINE_CONFIG_START( fghthist ) /* DE-0380-2 PCB */ /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000/4) @@ -2006,16 +2006,16 @@ static MACHINE_CONFIG_START( fghthist, deco32_state ) /* DE-0380-2 PCB */ MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fghthsta, deco32_state ) /* DE-0395-1 PCB */ +static MACHINE_CONFIG_START( fghthsta ) /* DE-0395-1 PCB */ /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000/4) @@ -2090,11 +2090,11 @@ static MACHINE_CONFIG_START( fghthsta, deco32_state ) /* DE-0395-1 PCB */ MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) MACHINE_CONFIG_END @@ -2138,7 +2138,7 @@ DECO16IC_BANK_CB_MEMBER(dragngun_state::bank_2_callback) return bank * 0x1000; } -static MACHINE_CONFIG_START( dragngun, dragngun_state ) +static MACHINE_CONFIG_START( dragngun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000/4) @@ -2216,15 +2216,15 @@ static MACHINE_CONFIG_START( dragngun, dragngun_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) - MCFG_OKIM6295_ADD("oki3", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki3", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -2248,7 +2248,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(dragngun_state::lockload_vbl_irq) } -static MACHINE_CONFIG_START( lockload, dragngun_state ) +static MACHINE_CONFIG_START( lockload ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000/4) @@ -2328,11 +2328,11 @@ static MACHINE_CONFIG_START( lockload, dragngun_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.42) MCFG_SOUND_ROUTE(1, "rspeaker", 0.42) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) MACHINE_CONFIG_END @@ -2353,7 +2353,7 @@ DECO16IC_BANK_CB_MEMBER(deco32_state::tattass_bank_callback) return bank * 0x1000; } -static MACHINE_CONFIG_START( tattass, deco32_state ) +static MACHINE_CONFIG_START( tattass ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000/4) // unconfirmed @@ -2420,7 +2420,7 @@ static MACHINE_CONFIG_START( tattass, deco32_state ) MCFG_DECOBSMT_ADD(DECOBSMT_TAG) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( nslasher, deco32_state ) +static MACHINE_CONFIG_START( nslasher ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28322000/4) @@ -2500,11 +2500,11 @@ static MACHINE_CONFIG_START( nslasher, deco32_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.40) MCFG_SOUND_ROUTE(1, "rspeaker", 0.40) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) MACHINE_CONFIG_END diff --git a/src/mame/drivers/deco_ld.cpp b/src/mame/drivers/deco_ld.cpp index b9736735627..7a62b86dfb5 100644 --- a/src/mame/drivers/deco_ld.cpp +++ b/src/mame/drivers/deco_ld.cpp @@ -456,7 +456,7 @@ void deco_ld_state::machine_start() { } -static MACHINE_CONFIG_START( rblaster, deco_ld_state ) +static MACHINE_CONFIG_START( rblaster ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6502,8000000/2) @@ -659,9 +659,9 @@ ROM_END -GAME( 1983, begas, 0, rblaster, begas, driver_device, 0, ROT0, "Data East", "Bega's Battle (Revision 3)", MACHINE_NOT_WORKING ) -GAME( 1983, begas1, begas, rblaster, begas, driver_device, 0, ROT0, "Data East", "Bega's Battle (Revision 1)", MACHINE_NOT_WORKING ) -GAME( 1984, cobra, 0, rblaster, cobra, driver_device, 0, ROT0, "Data East", "Cobra Command (Data East LD, set 1)", MACHINE_NOT_WORKING ) -GAME( 1984, cobraa, cobra, rblaster, cobra, driver_device, 0, ROT0, "Data East", "Cobra Command (Data East LD, set 2)", MACHINE_NOT_WORKING ) // might be a prototype +GAME( 1983, begas, 0, rblaster, begas, deco_ld_state, 0, ROT0, "Data East", "Bega's Battle (Revision 3)", MACHINE_NOT_WORKING ) +GAME( 1983, begas1, begas, rblaster, begas, deco_ld_state, 0, ROT0, "Data East", "Bega's Battle (Revision 1)", MACHINE_NOT_WORKING ) +GAME( 1984, cobra, 0, rblaster, cobra, deco_ld_state, 0, ROT0, "Data East", "Cobra Command (Data East LD, set 1)", MACHINE_NOT_WORKING ) +GAME( 1984, cobraa, cobra, rblaster, cobra, deco_ld_state, 0, ROT0, "Data East", "Cobra Command (Data East LD, set 2)", MACHINE_NOT_WORKING ) // might be a prototype // Thunder Storm (Cobra Command Japanese version) -GAME( 1985, rblaster, 0, rblaster, rblaster, driver_device, 0, ROT0, "Data East", "Road Blaster (Data East LD)", MACHINE_NOT_WORKING ) +GAME( 1985, rblaster, 0, rblaster, rblaster, deco_ld_state, 0, ROT0, "Data East", "Road Blaster (Data East LD)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/deco_mlc.cpp b/src/mame/drivers/deco_mlc.cpp index a2a5b530991..9fee581cfcc 100644 --- a/src/mame/drivers/deco_mlc.cpp +++ b/src/mame/drivers/deco_mlc.cpp @@ -502,7 +502,7 @@ MACHINE_RESET_MEMBER(deco_mlc_state,mlc) m_raster_irq_timer = machine().device("int_timer"); } -static MACHINE_CONFIG_START( avengrgs, deco_mlc_state ) +static MACHINE_CONFIG_START( avengrgs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH2,42000000/2) /* 21 MHz clock confirmed on real board */ @@ -519,7 +519,7 @@ static MACHINE_CONFIG_START( avengrgs, deco_mlc_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(deco_mlc_state, screen_update_mlc) - MCFG_SCREEN_VBLANK_DRIVER(deco_mlc_state, screen_eof_mlc) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(deco_mlc_state, screen_vblank_mlc)) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE) MCFG_GFXDECODE_ADD("gfxdecode", "palette", deco_mlc) @@ -535,7 +535,7 @@ static MACHINE_CONFIG_START( avengrgs, deco_mlc_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mlc, deco_mlc_state ) +static MACHINE_CONFIG_START( mlc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM,42000000/6) /* 42 MHz -> 7MHz clock confirmed on real board */ @@ -552,7 +552,7 @@ static MACHINE_CONFIG_START( mlc, deco_mlc_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(deco_mlc_state, screen_update_mlc) - MCFG_SCREEN_VBLANK_DRIVER(deco_mlc_state, screen_eof_mlc) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(deco_mlc_state, screen_vblank_mlc)) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE) MCFG_GFXDECODE_ADD("gfxdecode", "palette", deco_mlc) diff --git a/src/mame/drivers/decocass.cpp b/src/mame/drivers/decocass.cpp index 4bc706db9c2..55b11a0c13b 100644 --- a/src/mame/drivers/decocass.cpp +++ b/src/mame/drivers/decocass.cpp @@ -29,8 +29,8 @@ Later boardset: (1984 onward, schematic is dated October 1983) One DE-0097C-0 RMS-8 pcb with a 6502 processor, two ay-3-8910s, two eproms (2716 and 2732) plus one prom, and 48k worth of 4116 16kx1 DRAMs; the 6502 processor has its own 4K of SRAM. (audio processor and RAM, Main processor's dram, dipswitches) - One DE-0096C-0 DSP-8 board with a 'DECO 222' custom on it (labeled '8049 // C10707-2') which appears to really be a 'cleverly' disguised 6502, and two proms, plus 4K of sram, and three hm2511-1 1kx1 srams. (main processor and graphics) - One DE-0098C-0 B10-8 (BIO-8 on schematics) board with an 8041, an analog devices ADC0908 8-bit adc, and 4K of SRAM on it. (DECO Cassette control, inputs) + One DE-0096C-0 DSP-8 board with a 'DECO 222' custom on it (labeled '8049 // C10707-2') which appears to really be a 'cleverly' disguised 6502, and two proms, plus 4K of sram, and three hm2511-1 1kx1 srams. (main processor, sprites, missiles, palette) + One DE-0098C-0 B10-8 (BIO-8 on schematics) board with an 8041, an analog devices ADC0908 8-bit adc, and 4K of SRAM on it. (DECO Cassette control, inputs, tilemaps, headlights) One DE-0109C-0 card rack board that the other three boards plug into. (fourth connector for DE-109C-0 is shorter than in earlier versions) The actual cassettes use a custom player hooked to the BIO board, and are roughly microcassette form factor, but are larger and will not fit in a conventional microcassette player. @@ -135,11 +135,6 @@ static ADDRESS_MAP_START( decocass_sound_map, AS_PROGRAM, 8, decocass_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( decocass_mcu_portmap, AS_IO, 8, decocass_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(i8041_p1_r, i8041_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(i8041_p2_r, i8041_p2_w) -ADDRESS_MAP_END - static INPUT_PORTS_START( decocass ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH,IPT_JOYSTICK_RIGHT ) @@ -778,7 +773,7 @@ PALETTE_INIT_MEMBER(decocass_state, decocass) } -static MACHINE_CONFIG_START( decocass, decocass_state ) +static MACHINE_CONFIG_START( decocass ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", DECO_222, HCLK4) /* the earlier revision board doesn't have the 222 but must have the same thing implemented in logic for the M6502 */ @@ -789,7 +784,10 @@ static MACHINE_CONFIG_START( decocass, decocass_state ) MCFG_TIMER_DRIVER_ADD_SCANLINE("audionmi", decocass_state, decocass_audio_nmi_gen, "screen", 0, 8) MCFG_CPU_ADD("mcu", I8041, HCLK) - MCFG_CPU_IO_MAP(decocass_mcu_portmap) + MCFG_MCS48_PORT_P1_IN_CB(READ8(decocass_state, i8041_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(decocass_state, i8041_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(decocass_state, i8041_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(decocass_state, i8041_p2_w)) MCFG_QUANTUM_TIME(attotime::from_hz(4200)) /* interleave CPUs */ diff --git a/src/mame/drivers/dectalk.cpp b/src/mame/drivers/dectalk.cpp index 9a7dfa56a52..4c56da881a7 100644 --- a/src/mame/drivers/dectalk.cpp +++ b/src/mame/drivers/dectalk.cpp @@ -864,7 +864,7 @@ DRIVER_INIT_MEMBER(dectalk_state,dectalk) timer_set(attotime::from_hz(10000), TIMER_OUTFIFO_READ); } -static MACHINE_CONFIG_START( dectalk, dectalk_state ) +static MACHINE_CONFIG_START( dectalk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) /* E74 20MHz OSC (/2) */ MCFG_CPU_PROGRAM_MAP(m68k_mem) @@ -1010,5 +1010,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, dectalk, 0, 0, dectalk, dectalk, dectalk_state, dectalk, "Digital Equipment Corporation", "DECtalk DTC-01", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, dectalk, 0, 0, dectalk, dectalk, dectalk_state, dectalk, "Digital Equipment Corporation", "DECtalk DTC-01", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/decwritr.cpp b/src/mame/drivers/decwritr.cpp index 9a7087ec88e..9b881fff4e7 100644 --- a/src/mame/drivers/decwritr.cpp +++ b/src/mame/drivers/decwritr.cpp @@ -381,7 +381,7 @@ void decwriter_state::machine_reset() // MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( la120, decwriter_state ) +static MACHINE_CONFIG_START( la120 ) MCFG_CPU_ADD("maincpu",I8080, XTAL_18MHz / 9) // 18Mhz xtal on schematics, using an i8224 clock divider/reset sanitizer IC MCFG_CPU_PROGRAM_MAP(la120_mem) @@ -438,5 +438,5 @@ ROM_END //************************************************************************** // DRIVERS //************************************************************************** -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, la120, 0, 0, la120, la120, driver_device, 0, "Digital Equipment Corporation", "DECwriter III (LA120)", MACHINE_NO_SOUND | MACHINE_IS_SKELETON | MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1978, la120, 0, 0, la120, la120, decwriter_state, 0, "Digital Equipment Corporation", "DECwriter III (LA120)", MACHINE_NO_SOUND | MACHINE_IS_SKELETON | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/deniam.cpp b/src/mame/drivers/deniam.cpp index ea4969c5a8e..ca1e338a95d 100644 --- a/src/mame/drivers/deniam.cpp +++ b/src/mame/drivers/deniam.cpp @@ -255,7 +255,7 @@ void deniam_state::machine_reset() m_oki->set_rom_bank(0); } -static MACHINE_CONFIG_START( deniam16b, deniam_state ) +static MACHINE_CONFIG_START( deniam16b ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,XTAL_25MHz/2) /* 12.5Mhz verified */ @@ -290,11 +290,11 @@ static MACHINE_CONFIG_START( deniam16b, deniam_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) - MCFG_OKIM6295_ADD("oki", XTAL_25MHz/24, OKIM6295_PIN7_HIGH) /* 1.041620 measured, = 1.0416666Mhz verified */ + MCFG_OKIM6295_ADD("oki", XTAL_25MHz/24, PIN7_HIGH) /* 1.041620 measured, = 1.0416666Mhz verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( deniam16c, deniam_state ) +static MACHINE_CONFIG_START( deniam16c ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,XTAL_25MHz/2) /* 12.5Mhz verified */ @@ -322,7 +322,7 @@ static MACHINE_CONFIG_START( deniam16c, deniam_state ) MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_25MHz/6) /* "SM64" ym3812 clone; 4.166470 measured, = 4.166666Mhz verified) */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) - MCFG_OKIM6295_ADD("oki", XTAL_25MHz/24, OKIM6295_PIN7_HIGH) /* 1.041620 measured, = 1.0416666Mhz verified */ + MCFG_OKIM6295_ADD("oki", XTAL_25MHz/24, PIN7_HIGH) /* 1.041620 measured, = 1.0416666Mhz verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -420,7 +420,7 @@ ROM_END -GAME( 1996, logicpro, 0, deniam16b, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Logic Pro (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, croquis, logicpro, deniam16b, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Croquis (Germany)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, karianx, 0, deniam16b, karianx, deniam_state, karianx, ROT0, "Deniam", "Karian Cross (Rev. 1.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, logicpr2, 0, deniam16c, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Logic Pro 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, logicpro, 0, deniam16b, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Logic Pro (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, croquis, logicpro, deniam16b, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Croquis (Germany)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, karianx, 0, deniam16b, karianx, deniam_state, karianx, ROT0, "Deniam", "Karian Cross (Rev. 1.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, logicpr2, 0, deniam16c, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Logic Pro 2 (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/deshoros.cpp b/src/mame/drivers/deshoros.cpp index 52669b33d80..b06f519baa4 100644 --- a/src/mame/drivers/deshoros.cpp +++ b/src/mame/drivers/deshoros.cpp @@ -261,7 +261,7 @@ void destiny_state::machine_reset() bank_select_w(m_maincpu->space(AS_PROGRAM), 0, 0); } -static MACHINE_CONFIG_START( destiny, destiny_state ) +static MACHINE_CONFIG_START( destiny ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_4MHz/2) @@ -314,4 +314,4 @@ ROM_START( destiny ) ROM_LOAD( "ag11.18a", 0x16000, 0x2000, CRC(5f7bf9f9) SHA1(281f89c0bccfcc2bdc1d4d0a5b9cc9a8ab2e7869) ) ROM_END -GAME( 1983, destiny, 0, destiny, destiny, driver_device, 0, ROT0, "Data East Corporation", "Destiny - The Fortuneteller (USA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS|MACHINE_NODEVICE_PRINTER ) +GAME( 1983, destiny, 0, destiny, destiny, destiny_state, 0, ROT0, "Data East Corporation", "Destiny - The Fortuneteller (USA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS|MACHINE_NODEVICE_PRINTER ) diff --git a/src/mame/drivers/destroyr.cpp b/src/mame/drivers/destroyr.cpp index 01bcc499706..16b073f793e 100644 --- a/src/mame/drivers/destroyr.cpp +++ b/src/mame/drivers/destroyr.cpp @@ -202,7 +202,7 @@ TIMER_CALLBACK_MEMBER(destroyr_state::frame_callback) void destroyr_state::machine_reset() { - timer_set(m_screen->time_until_pos(0), TIMER_DESTROYR_FRAME); + m_frame_timer->adjust(m_screen->time_until_pos(0)); m_cursor = 0; m_wavemod = 0; @@ -490,7 +490,7 @@ void destroyr_state::machine_start() save_item(NAME(m_potsense)); } -static MACHINE_CONFIG_START( destroyr, destroyr_state ) +static MACHINE_CONFIG_START( destroyr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_12_096MHz / 16) @@ -565,5 +565,5 @@ ROM_START( destroyr1 ) ROM_END -GAMEL( 1977, destroyr, 0, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_destroyr ) -GAMEL( 1977, destroyr1, destroyr, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_destroyr ) +GAMEL( 1977, destroyr, 0, destroyr, destroyr, destroyr_state, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_destroyr ) +GAMEL( 1977, destroyr1, destroyr, destroyr, destroyr, destroyr_state, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_destroyr ) diff --git a/src/mame/drivers/dfruit.cpp b/src/mame/drivers/dfruit.cpp index 4b74475dd79..47adce90c6b 100644 --- a/src/mame/drivers/dfruit.cpp +++ b/src/mame/drivers/dfruit.cpp @@ -39,7 +39,7 @@ public: virtual void video_start() override; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); uint8_t m_ram_bank[4]; uint8_t m_rom_bank; @@ -84,7 +84,7 @@ uint32_t dfruit_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap return 0; } -void dfruit_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(dfruit_state::screen_vblank) { if (state) { @@ -364,7 +364,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(dfruit_state::dfruit_irq_scanline) #define MASTER_CLOCK XTAL_14MHz -static MACHINE_CONFIG_START( dfruit, dfruit_state ) +static MACHINE_CONFIG_START( dfruit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,MASTER_CLOCK/2) //!!! TC0091LVC !!! @@ -381,7 +381,7 @@ static MACHINE_CONFIG_START( dfruit, dfruit_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(dfruit_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(dfruit_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dfruit_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", dfruit ) @@ -417,4 +417,4 @@ ROM_START( dfruit ) ROM_LOAD( "c2.ic10", 0x00000, 0x80000, CRC(d869ab24) SHA1(382e874a846855a7f6f8811625aaa30d9dfa1ce2) ) ROM_END -GAME( 1993, dfruit, 0, dfruit, dfruit, driver_device, 0, ROT0, "Nippon Data Kiki / Star Fish", "Fruit Dream (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, dfruit, 0, dfruit, dfruit, dfruit_state, 0, ROT0, "Nippon Data Kiki / Star Fish", "Fruit Dream (Japan)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/dgn_beta.cpp b/src/mame/drivers/dgn_beta.cpp index a1a82b3af9c..e6f4b25b833 100644 --- a/src/mame/drivers/dgn_beta.cpp +++ b/src/mame/drivers/dgn_beta.cpp @@ -56,10 +56,10 @@ documentation still exists. /* - Colour codes are as below acording to os-9 headers, however the presise values - may not be quite correct, also this will need changing as the pallate seems to - be controled by a 4x4bit register file in the video hardware - The text video ram seems to be aranged of words of character, attribute + Colour codes are as below according to os-9 headers, however the precise values + may not be quite correct, also this will need changing as the palette seems to + be controlled by a 4x4bit register file in the video hardware + The text video ram seems to be arranged of words of character, attribute The colour codes are stored in the attribute byte along with : Underline bit $40 Flash bit $80 @@ -94,8 +94,8 @@ static const unsigned char dgnbeta_palette[] = /* 2005-05-10 - I *THINK* I know how the memory paging works, the 64K memory map is devided - into 16x 4K pages, what is mapped into each page is controled by the IO at + I *THINK* I know how the memory paging works, the 64K memory map is divided + into 16x 4K pages, what is mapped into each page is controlled by the IO at FE00-FE0F like so :- Location Memory page Initialised to @@ -117,7 +117,7 @@ static const unsigned char dgnbeta_palette[] = $FE0F $F000-$FFFF $FF The value stored at each location maps it's page to a 4K page within a 1M address - space. Acording to the Beta product descriptions released by Dragon Data, the + space. According to the Beta product descriptions released by Dragon Data, the machine could have up to 768K of RAM, if this where true then pages $00-$BF could potentially be RAM, and pages $C0-$FF would be ROM. The initialisation code maps in the memory as described above. @@ -127,16 +127,16 @@ static const unsigned char dgnbeta_palette[] = enable the paging hardware. It appears to be more complicated than this, whilst the above is true, there appear to - be 16 sets of banking registers, the active set is controled by the bottom 4 bits of + be 16 sets of banking registers, the active set is controlled by the bottom 4 bits of FCC0, bit 6 has something to do with enabling and disabling banking. 2005-11-28 - The value $C0 is guaranteed not to have any memory in it acording to the os9 headers, + The value $C0 is guaranteed not to have any memory in it according to the os9 headers, quite how the MMU deals with this is still unknown to me. Bit 7 of $FCC0, sets maps in the system task which has fixed values for some pages, - the presise nature of this is yet to be descovered. + the precise nature of this is yet to be discovered. */ @@ -164,12 +164,12 @@ static ADDRESS_MAP_START( dgnbeta_map, AS_PROGRAM, 8, dgn_beta_state ) AM_RANGE(0xfc80, 0xfc80) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0xfc81, 0xfc81) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0xfc82, 0xfC9F) AM_NOP - AM_RANGE(0xFCA0, 0xFCA3) AM_READNOP AM_WRITE(dgnbeta_colour_ram_w) /* 4x4bit colour ram for graphics modes */ + AM_RANGE(0xFCA0, 0xFCA3) AM_READNOP AM_WRITE(dgnbeta_colour_ram_w) /* 4x4bit colour ram for graphics modes */ AM_RANGE(0xFCC0, 0xFCC3) AM_DEVREADWRITE(PIA_2_TAG, pia6821_device, read, write) AM_RANGE(0xfcC4, 0xfcdf) AM_NOP - AM_RANGE(0xfce0, 0xfce3) AM_READWRITE(dgnbeta_wd2797_r ,dgnbeta_wd2797_w) /* Onboard disk interface */ + AM_RANGE(0xfce0, 0xfce3) AM_READWRITE(dgnbeta_wd2797_r, dgnbeta_wd2797_w) /* Onboard disk interface */ AM_RANGE(0xfce4, 0xfdff) AM_NOP - AM_RANGE(0xFE00, 0xFE0F) AM_READWRITE(dgn_beta_page_r ,dgn_beta_page_w) + AM_RANGE(0xFE00, 0xFE0F) AM_READWRITE(dgn_beta_page_r, dgn_beta_page_w) AM_RANGE(0xfe10, 0xfEff) AM_NOP AM_RANGE(0xFF00, 0xFFFF) AM_RAMBANK("bank17") @@ -285,9 +285,7 @@ INPUT_PORTS_END PALETTE_INIT_MEMBER(dgn_beta_state, dgn) { - int i; - - for ( i = 0; i < sizeof(dgnbeta_palette) / 3; i++ ) { + for ( int i = 0; i < sizeof(dgnbeta_palette) / 3; i++ ) { palette.set_pen_color(i, dgnbeta_palette[i*3], dgnbeta_palette[i*3+1], dgnbeta_palette[i*3+2]); } } @@ -297,7 +295,7 @@ static const gfx_layout dgnbeta_charlayout = { 8, 10, /* 8 x 10 characters */ 256, /* 256 characters */ - 1, /* 1 bits per pixel */ + 1, /* 1 bits per pixel */ { 0 }, /* no bitplanes */ /* x offsets */ { 0, 1, 2, 3, 4, 5, 6, 7 }, @@ -310,22 +308,22 @@ static GFXDECODE_START( dgnbeta ) GFXDECODE_ENTRY( "gfx1", 0x0000, dgnbeta_charlayout, 0, 8 ) GFXDECODE_END -FLOPPY_FORMATS_MEMBER( dgn_beta_state::floppy_formats ) +FLOPPY_FORMATS_MEMBER(dgn_beta_state::floppy_formats ) FLOPPY_VDK_FORMAT, FLOPPY_DMK_FORMAT FLOPPY_FORMATS_END -static SLOT_INTERFACE_START( dgn_beta_floppies ) - SLOT_INTERFACE("qd", FLOPPY_525_QD) +static SLOT_INTERFACE_START( dgnbeta_floppies ) + SLOT_INTERFACE("dd", FLOPPY_35_DD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( dgnbeta, dgn_beta_state ) +static MACHINE_CONFIG_START( dgnbeta ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M6809E, DGNBETA_CPU_SPEED_HZ) /* 2 MHz */ MCFG_CPU_PROGRAM_MAP(dgnbeta_map) MCFG_CPU_DISASSEMBLE_OVERRIDE(dgn_beta_state, dgnbeta_dasm_override) - /* both cpus in the beta share the same address/data busses */ + /* both cpus in the beta share the same address/data buses */ MCFG_CPU_ADD(DMACPU_TAG, M6809E, DGNBETA_CPU_SPEED_HZ) /* 2 MHz */ MCFG_CPU_PROGRAM_MAP(dgnbeta_map) @@ -344,42 +342,46 @@ static MACHINE_CONFIG_START( dgnbeta, dgn_beta_state ) /* PIA 0 at $FC20-$FC23 I46 */ MCFG_DEVICE_ADD(PIA_0_TAG, PIA6821, 0) - MCFG_PIA_READPA_HANDLER(READ8(dgn_beta_state,d_pia0_pa_r)) - MCFG_PIA_READPB_HANDLER(READ8(dgn_beta_state,d_pia0_pb_r)) - MCFG_PIA_WRITEPA_HANDLER(WRITE8(dgn_beta_state,d_pia0_pa_w)) - MCFG_PIA_WRITEPB_HANDLER(WRITE8(dgn_beta_state,d_pia0_pb_w)) - MCFG_PIA_CB2_HANDLER(WRITELINE(dgn_beta_state,d_pia0_cb2_w)) - MCFG_PIA_IRQA_HANDLER(WRITELINE(dgn_beta_state,d_pia0_irq_a)) - MCFG_PIA_IRQB_HANDLER(WRITELINE(dgn_beta_state,d_pia0_irq_b)) + MCFG_PIA_READPA_HANDLER(READ8(dgn_beta_state, d_pia0_pa_r)) + MCFG_PIA_READPB_HANDLER(READ8(dgn_beta_state, d_pia0_pb_r)) + MCFG_PIA_WRITEPA_HANDLER(WRITE8(dgn_beta_state, d_pia0_pa_w)) + MCFG_PIA_WRITEPB_HANDLER(WRITE8(dgn_beta_state, d_pia0_pb_w)) + MCFG_PIA_CB2_HANDLER(WRITELINE(dgn_beta_state, d_pia0_cb2_w)) + MCFG_PIA_IRQA_HANDLER(WRITELINE(dgn_beta_state, d_pia0_irq_a)) + MCFG_PIA_IRQB_HANDLER(WRITELINE(dgn_beta_state, d_pia0_irq_b)) /* PIA 1 at $FC24-$FC27 I63 */ MCFG_DEVICE_ADD(PIA_1_TAG, PIA6821, 0) - MCFG_PIA_READPA_HANDLER(READ8(dgn_beta_state,d_pia1_pa_r)) - MCFG_PIA_READPB_HANDLER(READ8(dgn_beta_state,d_pia1_pb_r)) - MCFG_PIA_WRITEPA_HANDLER(WRITE8(dgn_beta_state,d_pia1_pa_w)) - MCFG_PIA_WRITEPB_HANDLER(WRITE8(dgn_beta_state,d_pia1_pb_w)) - MCFG_PIA_IRQA_HANDLER(WRITELINE(dgn_beta_state,d_pia1_irq_a)) - MCFG_PIA_IRQB_HANDLER(WRITELINE(dgn_beta_state,d_pia1_irq_b)) + MCFG_PIA_READPA_HANDLER(READ8(dgn_beta_state, d_pia1_pa_r)) + MCFG_PIA_READPB_HANDLER(READ8(dgn_beta_state, d_pia1_pb_r)) + MCFG_PIA_WRITEPA_HANDLER(WRITE8(dgn_beta_state, d_pia1_pa_w)) + MCFG_PIA_WRITEPB_HANDLER(WRITE8(dgn_beta_state, d_pia1_pb_w)) + MCFG_PIA_IRQA_HANDLER(WRITELINE(dgn_beta_state, d_pia1_irq_a)) + MCFG_PIA_IRQB_HANDLER(WRITELINE(dgn_beta_state, d_pia1_irq_b)) /* PIA 2 at FCC0-FCC3 I28 */ /* This seems to control the RAM paging system, and have the DRQ */ /* from the WD2797 */ MCFG_DEVICE_ADD(PIA_2_TAG, PIA6821, 0) - MCFG_PIA_READPA_HANDLER(READ8(dgn_beta_state,d_pia2_pa_r)) - MCFG_PIA_READPB_HANDLER(READ8(dgn_beta_state,d_pia2_pb_r)) - MCFG_PIA_WRITEPA_HANDLER(WRITE8(dgn_beta_state,d_pia2_pa_w)) - MCFG_PIA_WRITEPB_HANDLER(WRITE8(dgn_beta_state,d_pia2_pb_w)) - MCFG_PIA_IRQA_HANDLER(WRITELINE(dgn_beta_state,d_pia2_irq_a)) - MCFG_PIA_IRQB_HANDLER(WRITELINE(dgn_beta_state,d_pia2_irq_b)) + MCFG_PIA_READPA_HANDLER(READ8(dgn_beta_state, d_pia2_pa_r)) + MCFG_PIA_READPB_HANDLER(READ8(dgn_beta_state, d_pia2_pb_r)) + MCFG_PIA_WRITEPA_HANDLER(WRITE8(dgn_beta_state, d_pia2_pa_w)) + MCFG_PIA_WRITEPB_HANDLER(WRITE8(dgn_beta_state, d_pia2_pb_w)) + MCFG_PIA_IRQA_HANDLER(WRITELINE(dgn_beta_state, d_pia2_irq_a)) + MCFG_PIA_IRQB_HANDLER(WRITELINE(dgn_beta_state, d_pia2_irq_b)) MCFG_WD2797_ADD(FDC_TAG, XTAL_1MHz) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(dgn_beta_state, dgnbeta_fdc_intrq_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(dgn_beta_state, dgnbeta_fdc_drq_w)) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", dgn_beta_floppies, "qd", dgn_beta_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", dgn_beta_floppies, "qd", dgn_beta_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":2", dgn_beta_floppies, "qd", dgn_beta_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":3", dgn_beta_floppies, "qd", dgn_beta_state::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":0", dgnbeta_floppies, "dd", dgn_beta_state::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":1", dgnbeta_floppies, "dd", dgn_beta_state::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":2", dgnbeta_floppies, nullptr, dgn_beta_state::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":3", dgnbeta_floppies, nullptr, dgn_beta_state::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_MC6845_ADD("crtc", HD6845, "screen", XTAL_12_288MHz / 16) //XTAL is guessed MCFG_MC6845_SHOW_BORDER_AREA(false) @@ -394,15 +396,18 @@ static MACHINE_CONFIG_START( dgnbeta, dgn_beta_state ) /* Ram size can now be configured, since the machine was known as either the Dragon Beta or */ /* the Dragon 128, I have added a config for 128K, however, the only working machine known */ /* to exist was fitted with 256K, so I have made this the default. Also available */ - /* documentation seems to sugest a maximum of 768K, so I have included configs increasing */ + /* documentation seems to suggest a maximum of 768K, so I have included configs increasing */ /* in blocks of 128K up to this maximum. */ + + /* software lists */ + MCFG_SOFTWARE_LIST_ADD("flop_list", "dgnbeta_flop") MACHINE_CONFIG_END ROM_START(dgnbeta) ROM_REGION(0x4000,MAINCPU_TAG,0) - ROM_SYSTEM_BIOS( 0, "bootrom", "Dragon beta OS9 boot rom (1984)" ) + ROM_SYSTEM_BIOS( 0, "bootrom", "Dragon Beta OS-9 Boot ROM (15.6.84)" ) ROMX_LOAD("beta_bt.rom" ,0x0000 ,0x4000 ,CRC(4c54c1de) SHA1(141d9fcd2d187c305dff83fce2902a30072aed76), ROM_BIOS(1)) - ROM_SYSTEM_BIOS( 1, "testrom", "Dragon beta test rom (1984?)" ) + ROM_SYSTEM_BIOS( 1, "testrom", "Dragon Beta Test ROM (1984?)" ) ROMX_LOAD("beta_tst.rom" ,0x2000 ,0x2000 ,CRC(01d79d00) SHA1(343e08cf7656b5e8970514868df37ea0af1e2362), ROM_BIOS(2)) ROM_SYSTEM_BIOS( 2, "cfiles", "cfiles rom" ) ROMX_LOAD("beta_cfi.rom" ,0x2000 ,0x2000 ,CRC(d312e4c0) SHA1(5c00daac488eaf8d36d66de6ec6c746ab7b78ecf), ROM_BIOS(3)) @@ -413,5 +418,5 @@ ROM_START(dgnbeta) ROM_LOAD("betachar.rom" ,0x0000 ,0x2000 ,CRC(ca79d66c) SHA1(8e2090d471dd97a53785a7f44a49d3c8c85b41f2)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, dgnbeta, 0, 0, dgnbeta, dgnbeta, driver_device, 0, "Dragon Data Ltd", "Dragon Beta Prototype", MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1984, dgnbeta, 0, 0, dgnbeta, dgnbeta, dgn_beta_state, 0, "Dragon Data Ltd", "Dragon 128 (Beta)", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/dgpix.cpp b/src/mame/drivers/dgpix.cpp index 46aaaed084f..3401d14a68e 100644 --- a/src/mame/drivers/dgpix.cpp +++ b/src/mame/drivers/dgpix.cpp @@ -422,7 +422,7 @@ void dgpix_state::machine_reset() } -static MACHINE_CONFIG_START( dgpix, dgpix_state ) +static MACHINE_CONFIG_START( dgpix ) MCFG_CPU_ADD("maincpu", E132XT, 20000000*4) /* 4x internal multiplier */ MCFG_CPU_PROGRAM_MAP(cpu_map) MCFG_CPU_IO_MAP(io_map) diff --git a/src/mame/drivers/didact.cpp b/src/mame/drivers/didact.cpp index 59067b10c2f..08c0879f2cf 100644 --- a/src/mame/drivers/didact.cpp +++ b/src/mame/drivers/didact.cpp @@ -1353,7 +1353,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(didact_state::scan_artwork) #define CAN09T_BAUDGEN_CLOCK XTAL_1_8432MHz #define CAN09T_ACIA_CLOCK (CAN09T_BAUDGEN_CLOCK / 12) -static MACHINE_CONFIG_START( can09t, can09t_state ) +static MACHINE_CONFIG_START( can09t ) MCFG_CPU_ADD("maincpu", M6809, XTAL_4_9152MHz) // IPL crystal MCFG_CPU_PROGRAM_MAP(can09t_map) @@ -1397,7 +1397,7 @@ MACHINE_CONFIG_END #define CAN09_X1_CLOCK XTAL_22_1184MHz /* UKI 22118.40 Khz */ #define CAN09_CPU_CLOCK (CAN09_X1_CLOCK / 16) /* ~1.38MHz Divider needs to be check but is the most likelly */ -static MACHINE_CONFIG_START( can09, can09_state ) +static MACHINE_CONFIG_START( can09 ) MCFG_CPU_ADD("maincpu", M6809E, CAN09_CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(can09_map) @@ -1407,11 +1407,10 @@ static MACHINE_CONFIG_START( can09, can09_state ) // CRTC init MCFG_MC6845_ADD("crtc", H46505, "screen", CAN09_CPU_CLOCK) // TODO: Check actual clock source, An 8MHz UKI crystal is also nearby -#if 0 MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(can09_state, crtc_update_row) -#endif + //MCFG_MC6845_UPDATE_ROW_CB(can09_state, crtc_update_row) // not written yet + /* Setup loop from data table in ROM: 0xFFCB 0xE020 (CRTC register number), 0xFFD0 0xE021 (CRTC register value) Reg Value Comment 0x00 0x55 Horizontal Total number of characters, @@ -1472,7 +1471,7 @@ static MACHINE_CONFIG_START( can09, can09_state ) #endif MACHINE_CONFIG_END -static MACHINE_CONFIG_START( e100, e100_state ) +static MACHINE_CONFIG_START( e100 ) MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(e100_map) @@ -1530,10 +1529,10 @@ static MACHINE_CONFIG_START( e100, e100_state ) MCFG_PALETTE_ADD_MONOCHROME("palette") /* There is a 50Hz signal from the video circuit to CA1 which generates interrupts and drives a software RTC */ -MCFG_TIMER_DRIVER_ADD_PERIODIC("video50hz", e100_state, rtc_w, attotime::from_hz(100)) /* Will be divided by two through toggle in the handler */ + MCFG_TIMER_DRIVER_ADD_PERIODIC("video50hz", e100_state, rtc_w, attotime::from_hz(100)) /* Will be divided by two through toggle in the handler */ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( md6802, md6802_state ) +static MACHINE_CONFIG_START( md6802 ) MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(md6802_map) MCFG_DEFAULT_LAYOUT(layout_md6802) @@ -1566,7 +1565,7 @@ static MACHINE_CONFIG_START( md6802, md6802_state ) MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, nullptr) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mp68a, mp68a_state ) +static MACHINE_CONFIG_START( mp68a ) // Clock source is based on a N9602N Dual Retriggerable Resettable Monostable Multivibrator oscillator at aprox 505KHz. // Trimpot seems broken/stuck at 5K Ohm thu. ROM code 1Ms delay loops suggest 1MHz+ MCFG_CPU_ADD("maincpu", M6800, 505000) @@ -1677,9 +1676,9 @@ ROM_START( mp68a ) // ROM image from http://elektronikforumet.com/forum/viewtopi ROM_LOAD( "didactB.bin", 0x0a00, 0x0200, CRC(592898dc) SHA1(2962f4817712cae97f3ab37b088fc73e66535ff8) ) ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1979, mp68a, 0, 0, mp68a, mp68a, driver_device, 0, "Didact AB", "mp68a", MACHINE_NO_SOUND_HW ) -COMP( 1982, e100, 0, 0, e100, e100, driver_device, 0, "Didact AB", "Esselte 100", MACHINE_NO_SOUND_HW ) -COMP( 1983, md6802, 0, 0, md6802, md6802, driver_device, 0, "Didact AB", "Mikrodator 6802", MACHINE_NO_SOUND_HW ) -COMP( 1984, can09, 0, 0, can09, can09, driver_device, 0, "Candela Data AB", "Candela CAN09 main unit", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) -COMP( 1984, can09t, 0, 0, can09t, can09t, driver_device, 0, "Candela Data AB", "Candela CAN09 terminal", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1979, mp68a, 0, 0, mp68a, mp68a, mp68a_state, 0, "Didact AB", "mp68a", MACHINE_NO_SOUND_HW ) +COMP( 1982, e100, 0, 0, e100, e100, e100_state, 0, "Didact AB", "Esselte 100", MACHINE_NO_SOUND_HW ) +COMP( 1983, md6802, 0, 0, md6802, md6802, md6802_state, 0, "Didact AB", "Mikrodator 6802", MACHINE_NO_SOUND_HW ) +COMP( 1984, can09, 0, 0, can09, can09, can09_state, 0, "Candela Data AB", "Candela CAN09 main unit", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1984, can09t, 0, 0, can09t, can09t, can09t_state, 0, "Candela Data AB", "Candela CAN09 terminal", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/dietgo.cpp b/src/mame/drivers/dietgo.cpp index b19aa584ac4..263cf340431 100644 --- a/src/mame/drivers/dietgo.cpp +++ b/src/mame/drivers/dietgo.cpp @@ -209,7 +209,7 @@ void dietgo_state::machine_start() { } -static MACHINE_CONFIG_START( dietgo, dietgo_state ) +static MACHINE_CONFIG_START( dietgo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_28MHz/2) /* DE102 (verified on pcb) */ @@ -268,7 +268,7 @@ static MACHINE_CONFIG_START( dietgo, dietgo_state ) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) - MCFG_OKIM6295_ADD("oki", XTAL_32_22MHz/32, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_32_22MHz/32, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END diff --git a/src/mame/drivers/digel804.cpp b/src/mame/drivers/digel804.cpp index 50dbb4fa138..95378832eec 100644 --- a/src/mame/drivers/digel804.cpp +++ b/src/mame/drivers/digel804.cpp @@ -85,7 +85,7 @@ public: required_device m_maincpu; required_device m_speaker; required_device m_acia; - required_device m_vfd; + required_device m_vfd; required_device m_kb; required_device m_ram; required_memory_bank m_rambank; @@ -584,7 +584,7 @@ WRITE_LINE_MEMBER( digel804_state::ep804_acia_irq_w ) { } -static MACHINE_CONFIG_START( digel804, digel804_state ) +static MACHINE_CONFIG_START( digel804 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_6864MHz/2) /* Z80A, X1(aka E0 on schematics): 3.6864Mhz */ MCFG_CPU_PROGRAM_MAP(z80_mem_804_1_4) @@ -723,6 +723,6 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, digel804, 0, 0, digel804, digel804, digel804_state, digel804, "Digelec, Inc", "Digelec 804 EPROM Programmer", MACHINE_NOT_WORKING ) -COMP( 1982, ep804, digel804, 0, ep804, digel804, digel804_state, digel804, "Wavetek/Digelec, Inc", "EP804 EPROM Programmer", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, digel804, 0, 0, digel804, digel804, digel804_state, digel804, "Digelec, Inc", "Digelec 804 EPROM Programmer", MACHINE_NOT_WORKING ) +COMP( 1982, ep804, digel804, 0, ep804, digel804, digel804_state, digel804, "Wavetek/Digelec, Inc", "EP804 EPROM Programmer", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/digijet.cpp b/src/mame/drivers/digijet.cpp index 6a3e18d374d..f21c4a650ad 100644 --- a/src/mame/drivers/digijet.cpp +++ b/src/mame/drivers/digijet.cpp @@ -45,7 +45,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( digijet ) INPUT_PORTS_END -static MACHINE_CONFIG_START( digijet, digijet_state ) +static MACHINE_CONFIG_START( digijet ) /* basic machine hardware */ MCFG_CPU_ADD(I8049_TAG, I8049, XTAL_11MHz) MCFG_CPU_IO_MAP(io_map) @@ -56,5 +56,5 @@ ROM_START( digijet ) ROM_LOAD( "vanagon_85_usa_ca.bin", 0x000, 0x800, CRC(2ed7c4c5) SHA1(ae48d8892b44fe76b48bcefd293c15cd47af3fba) ) // Volkswagen Vanagon, 1985, USA, California ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1985, digijet, 0, 0, digijet, digijet, driver_device, 0, "Volkswagen", "Digijet", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1985, digijet, 0, 0, digijet, digijet, digijet_state, 0, "Volkswagen", "Digijet", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp index bf528eeff99..8e9830fe9dd 100644 --- a/src/mame/drivers/dim68k.cpp +++ b/src/mame/drivers/dim68k.cpp @@ -54,7 +54,7 @@ public: , m_ram(*this, "ram") , m_palette(*this, "palette") , m_p_chargen(*this, "chargen") - { } + { } DECLARE_READ16_MEMBER( dim68k_duart_r ); DECLARE_READ16_MEMBER( dim68k_fdc_r ); @@ -69,7 +69,7 @@ public: DECLARE_WRITE16_MEMBER( dim68k_video_control_w ); DECLARE_WRITE16_MEMBER( dim68k_video_high_w ); DECLARE_WRITE16_MEMBER( dim68k_video_reset_w ); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); MC6845_UPDATE_ROW(crtc_update_row); private: @@ -298,12 +298,12 @@ static SLOT_INTERFACE_START( dim68k_floppies ) SLOT_INTERFACE( "525hd", FLOPPY_525_HD ) SLOT_INTERFACE_END -WRITE8_MEMBER( dim68k_state::kbd_put ) +void dim68k_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( dim68k, dim68k_state ) +static MACHINE_CONFIG_START( dim68k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(dim68k_mem) @@ -334,7 +334,7 @@ static MACHINE_CONFIG_START( dim68k, dim68k_state ) MCFG_MC6845_UPDATE_ROW_CB(dim68k_state, crtc_update_row) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(dim68k_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(dim68k_state, kbd_put)) // software lists MCFG_SOFTWARE_LIST_ADD("flop_list", "dim68k") @@ -397,5 +397,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, dim68k, 0, 0, dim68k, dim68k, driver_device, 0, "Micro Craft", "Dimension 68000", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, dim68k, 0, 0, dim68k, dim68k, dim68k_state, 0, "Micro Craft", "Dimension 68000", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/discoboy.cpp b/src/mame/drivers/discoboy.cpp index 67c630b2995..6bf30e5ad3d 100644 --- a/src/mame/drivers/discoboy.cpp +++ b/src/mame/drivers/discoboy.cpp @@ -44,6 +44,7 @@ Notes: #include "emu.h" #include "cpu/z80/z80.h" #include "machine/74157.h" +#include "machine/bankdev.h" #include "machine/gen_latch.h" #include "sound/msm5205.h" #include "sound/3812intf.h" @@ -51,7 +52,6 @@ Notes: #include "speaker.h" - class discoboy_state : public driver_device { public: @@ -63,10 +63,13 @@ public: m_adpcm_select(*this, "adpcm_select"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), - m_soundlatch(*this, "soundlatch") { } + m_soundlatch(*this, "soundlatch"), + m_ram_att(*this, "att_ram"), + m_rambank1(*this, "rambank1"), + m_ram_1(*this, "ram_1"), + m_ram_2(*this, "ram_2") { } /* video-related */ - uint8_t m_ram_bank; uint8_t m_gfxbank; uint8_t m_port_00; @@ -82,38 +85,30 @@ public: required_device m_soundlatch; /* memory */ - uint8_t m_ram_1[0x800]; - uint8_t m_ram_2[0x800]; + required_shared_ptr m_ram_att; + required_device m_rambank1; + required_shared_ptr m_ram_1; + required_shared_ptr m_ram_2; uint8_t m_ram_3[0x1000]; uint8_t m_ram_4[0x1000]; - uint8_t m_ram_att[0x800]; DECLARE_WRITE8_MEMBER(rambank_select_w); - DECLARE_WRITE8_MEMBER(discoboy_port_00_w); - DECLARE_WRITE8_MEMBER(discoboy_port_01_w); - DECLARE_WRITE8_MEMBER(discoboy_port_06_w); + DECLARE_WRITE8_MEMBER(port_00_w); + DECLARE_WRITE8_MEMBER(port_01_w); + DECLARE_WRITE8_MEMBER(port_06_w); DECLARE_WRITE8_MEMBER(rambank_w); DECLARE_READ8_MEMBER(rambank_r); DECLARE_READ8_MEMBER(rambank2_r); DECLARE_WRITE8_MEMBER(rambank2_w); - DECLARE_READ8_MEMBER(discoboy_ram_att_r); - DECLARE_WRITE8_MEMBER(discoboy_ram_att_w); - DECLARE_READ8_MEMBER(discoboy_port_06_r); + DECLARE_READ8_MEMBER(port_06_r); DECLARE_WRITE8_MEMBER(yunsung8_sound_bankswitch_w); DECLARE_DRIVER_INIT(discoboy); virtual void machine_start() override; virtual void machine_reset() override; - virtual void video_start() override; - uint32_t screen_update_discoboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); DECLARE_WRITE_LINE_MEMBER(yunsung8_adpcm_int); }; - - -void discoboy_state::video_start() -{ -} - void discoboy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) { int flipscreen = 0; @@ -161,7 +156,7 @@ void discoboy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre } -uint32_t discoboy_state::screen_update_discoboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t discoboy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { uint16_t x, y; int i; @@ -219,60 +214,38 @@ uint32_t discoboy_state::screen_update_discoboy(screen_device &screen, bitmap_in return 0; } -#ifdef UNUSED_FUNCTION -void discoboy_state::discoboy_setrombank( uint8_t data ) -{ - uint8_t *ROM = memregion("maincpu")->base(); - data &= 0x2f; - space.membank("bank1")->set_base(&ROM[0x6000 + (data * 0x1000)] ); -} -#endif - WRITE8_MEMBER(discoboy_state::rambank_select_w) { - m_ram_bank = data; + if (data & 0x20) + m_rambank1->set_bank(1); + else + m_rambank1->set_bank(0); + if (data &= 0x83) logerror("rambank_select_w !!!!!"); } -WRITE8_MEMBER(discoboy_state::discoboy_port_00_w) +WRITE8_MEMBER(discoboy_state::port_00_w) { - if (data & 0xfe) logerror("unk discoboy_port_00_w %02x\n",data); + if (data & 0xfe) logerror("unk port_00_w %02x\n",data); m_port_00 = data; } -WRITE8_MEMBER(discoboy_state::discoboy_port_01_w) +WRITE8_MEMBER(discoboy_state::port_01_w) { // 00 10 20 30 during gameplay 1,2,3 other times?? title screen bit 0x40 toggle - //printf("unk discoboy_port_01_w %02x\n",data); + //printf("unk port_01_w %02x\n",data); // discoboy gfxbank m_gfxbank = data & 0xf0; - membank("bank1")->set_entry(data & 0x07); + membank("mainbank")->set_entry(data & 0x07); } -WRITE8_MEMBER(discoboy_state::discoboy_port_06_w) +WRITE8_MEMBER(discoboy_state::port_06_w) { //printf("unk discoboy_port_06_w %02x\n",data); if (data != 0) logerror("port 06!!!! %02x\n",data); } - -WRITE8_MEMBER(discoboy_state::rambank_w) -{ - if (m_ram_bank & 0x20) - m_ram_2[offset] = data; - else - m_ram_1[offset] = data; -} - -READ8_MEMBER(discoboy_state::rambank_r) -{ - if (m_ram_bank & 0x20) - return m_ram_2[offset]; - else - return m_ram_1[offset]; -} - READ8_MEMBER(discoboy_state::rambank2_r) { if (m_port_00 == 0x00) @@ -295,40 +268,35 @@ WRITE8_MEMBER(discoboy_state::rambank2_w) printf("unk rb2_w\n"); } -READ8_MEMBER(discoboy_state::discoboy_ram_att_r) -{ - return m_ram_att[offset]; -} - -WRITE8_MEMBER(discoboy_state::discoboy_ram_att_w) -{ - m_ram_att[offset] = data; -} - static ADDRESS_MAP_START( discoboy_map, AS_PROGRAM, 8, discoboy_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(rambank_r, rambank_w) - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(discoboy_ram_att_r, discoboy_ram_att_w) + AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") + AM_RANGE(0xc000, 0xc7ff) AM_DEVICE("rambank1", address_map_bank_device, amap8) + AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("att_ram") AM_RANGE(0xd000, 0xdfff) AM_READWRITE(rambank2_r, rambank2_w) AM_RANGE(0xe000, 0xefff) AM_RAM AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END +static ADDRESS_MAP_START( rambank1_map, AS_PROGRAM, 8, discoboy_state ) + AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("ram_1") + AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("ram_2") +ADDRESS_MAP_END + -READ8_MEMBER(discoboy_state::discoboy_port_06_r) +READ8_MEMBER(discoboy_state::port_06_r) { return 0x00; } static ADDRESS_MAP_START( io_map, AS_IO, 8, discoboy_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA") AM_WRITE(discoboy_port_00_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(discoboy_port_01_w) + AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA") AM_WRITE(port_00_w) + AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(port_01_w) AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWB") - AM_RANGE(0x06, 0x06) AM_READWRITE(discoboy_port_06_r, discoboy_port_06_w) // ??? + AM_RANGE(0x06, 0x06) AM_READWRITE(port_06_r, port_06_w) // ??? AM_RANGE(0x07, 0x07) AM_WRITE(rambank_select_w) // 0x20 is palette bank bit.. others? ADDRESS_MAP_END @@ -336,7 +304,7 @@ ADDRESS_MAP_END WRITE8_MEMBER(discoboy_state::yunsung8_sound_bankswitch_w) { - /* Note: this is bit 5 on yunsung8.c */ + /* Note: this is bit 5 on yunsung8.cpp */ m_msm->reset_w((data & 0x08) >> 3); membank("sndbank")->set_entry(data & 0x07); @@ -453,7 +421,6 @@ GFXDECODE_END void discoboy_state::machine_start() { - save_item(NAME(m_ram_bank)); save_item(NAME(m_port_00)); save_item(NAME(m_gfxbank)); save_item(NAME(m_toggle)); @@ -461,7 +428,6 @@ void discoboy_state::machine_start() void discoboy_state::machine_reset() { - m_ram_bank = 0; m_port_00 = 0; m_gfxbank = 0; m_toggle = false; @@ -477,7 +443,7 @@ WRITE_LINE_MEMBER(discoboy_state::yunsung8_adpcm_int) m_audiocpu->set_input_line(INPUT_LINE_NMI, m_toggle); } -static MACHINE_CONFIG_START( discoboy, discoboy_state ) +static MACHINE_CONFIG_START( discoboy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* 6 MHz? */ @@ -488,13 +454,20 @@ static MACHINE_CONFIG_START( discoboy, discoboy_state ) MCFG_CPU_ADD("audiocpu", Z80, XTAL_10MHz/2) /* 5 MHz? */ MCFG_CPU_PROGRAM_MAP(sound_map) + MCFG_DEVICE_ADD("rambank1", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(rambank1_map) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(13) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x800) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(512, 256) MCFG_SCREEN_VISIBLE_AREA(8*8, 512-1-8*8, 0+8, 256-1-8) - MCFG_SCREEN_UPDATE_DRIVER(discoboy_state, screen_update_discoboy) + MCFG_SCREEN_UPDATE_DRIVER(discoboy_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", discoboy) @@ -516,7 +489,7 @@ static MACHINE_CONFIG_START( discoboy, discoboy_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(discoboy_state, yunsung8_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) MACHINE_CONFIG_END @@ -580,20 +553,14 @@ DRIVER_INIT_MEMBER(discoboy_state,discoboy) uint8_t *ROM = memregion("maincpu")->base(); uint8_t *AUDIO = memregion("audiocpu")->base(); - memset(m_ram_1, 0, sizeof(m_ram_1)); - memset(m_ram_2, 0, sizeof(m_ram_2)); - memset(m_ram_att,0, sizeof(m_ram_att)); memset(m_ram_3, 0, sizeof(m_ram_3)); memset(m_ram_4, 0, sizeof(m_ram_4)); - save_item(NAME(m_ram_1)); - save_item(NAME(m_ram_2)); - save_item(NAME(m_ram_att)); save_item(NAME(m_ram_3)); save_item(NAME(m_ram_4)); - membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x4000); - membank("bank1")->set_entry(0); + membank("mainbank")->configure_entries(0, 8, &ROM[0x10000], 0x4000); + membank("mainbank")->set_entry(0); membank("sndbank")->configure_entries(0, 8, &AUDIO[0x00000], 0x4000); membank("sndbank")->set_entry(0); } diff --git a/src/mame/drivers/divebomb.cpp b/src/mame/drivers/divebomb.cpp index e06dc334728..bb1bcfd65e1 100644 --- a/src/mame/drivers/divebomb.cpp +++ b/src/mame/drivers/divebomb.cpp @@ -445,7 +445,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( divebomb, divebomb_state ) +static MACHINE_CONFIG_START( divebomb ) MCFG_CPU_ADD("fgcpu", Z80,XTAL1/4) // ? MCFG_CPU_PROGRAM_MAP(divebomb_fgcpu_map) @@ -630,4 +630,4 @@ MACHINE_RESET_MEMBER(divebomb_state, divebomb) *************************************/ // According to a flyer, the world release was to be called 'Gaia'. The Gaia title graphics are present in the ROMs. -GAME( 1989, divebomb, 0, divebomb, divebomb, driver_device, 0, ROT270, "Konami", "Kyuukoukabakugekitai - Dive Bomber Squad (Japan, prototype)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, divebomb, 0, divebomb, divebomb, divebomb_state, 0, ROT270, "Konami", "Kyuukoukabakugekitai - Dive Bomber Squad (Japan, prototype)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/diverboy.cpp b/src/mame/drivers/diverboy.cpp index 0f6195056f4..0183eb8946e 100644 --- a/src/mame/drivers/diverboy.cpp +++ b/src/mame/drivers/diverboy.cpp @@ -265,7 +265,7 @@ void diverboy_state::machine_start() { } -static MACHINE_CONFIG_START( diverboy, diverboy_state ) +static MACHINE_CONFIG_START( diverboy ) MCFG_CPU_ADD("maincpu", M68000, 12000000) /* guess */ MCFG_CPU_PROGRAM_MAP(diverboy_map) @@ -293,7 +293,7 @@ static MACHINE_CONFIG_START( diverboy, diverboy_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -340,4 +340,4 @@ ROM_END -GAME( 1992, diverboy, 0, diverboy, diverboy, driver_device, 0, ORIENTATION_FLIP_X, "Gamart (Electronic Devices Italy license)", "Diver Boy", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, diverboy, 0, diverboy, diverboy, diverboy_state, 0, ORIENTATION_FLIP_X, "Gamart (Electronic Devices Italy license)", "Diver Boy", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/djboy.cpp b/src/mame/drivers/djboy.cpp index b0b88fc8ba4..520b07bca1e 100644 --- a/src/mame/drivers/djboy.cpp +++ b/src/mame/drivers/djboy.cpp @@ -547,7 +547,7 @@ void djboy_state::machine_reset() m_z80_to_beast_full = 0; } -static MACHINE_CONFIG_START( djboy, djboy_state ) +static MACHINE_CONFIG_START( djboy ) MCFG_CPU_ADD("maincpu", Z80, 6000000) MCFG_CPU_PROGRAM_MAP(cpu0_am) @@ -576,7 +576,7 @@ static MACHINE_CONFIG_START( djboy, djboy_state ) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1) MCFG_SCREEN_UPDATE_DRIVER(djboy_state, screen_update_djboy) - MCFG_SCREEN_VBLANK_DRIVER(djboy_state, screen_eof_djboy) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(djboy_state, screen_vblank_djboy)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", djboy) @@ -592,10 +592,10 @@ static MACHINE_CONFIG_START( djboy, djboy_state ) MCFG_SOUND_ADD("ymsnd", YM2203, 3000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki1", 12000000 / 8, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 12000000 / 8, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki2", 12000000 / 8, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 12000000 / 8, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp index c38d9060599..37a23b46f93 100644 --- a/src/mame/drivers/djmain.cpp +++ b/src/mame/drivers/djmain.cpp @@ -1376,7 +1376,7 @@ void djmain_state::machine_reset() * *************************************/ -static MACHINE_CONFIG_START( djmainj, djmain_state ) +static MACHINE_CONFIG_START( djmainj ) /* basic machine hardware */ // popn3 works 9.6 MHz or slower in some songs */ diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp index 6f3bee6af35..b8a96b4fa2a 100644 --- a/src/mame/drivers/dkong.cpp +++ b/src/mame/drivers/dkong.cpp @@ -617,7 +617,7 @@ WRITE8_MEMBER(dkong_state::p8257_drq_w) READ8_MEMBER(dkong_state::dkong_in2_r) { /* mcu status (sound feedback) is inverted bit4 from port B (8039) */ - uint8_t mcustatus = m_dev_vp2->bit4_q_r(space, 0); + uint8_t mcustatus = m_dev_vp2->bit4_q_r(); uint8_t r; r = (ioport("IN2")->read() & 0xBF) | (mcustatus << 6); @@ -811,7 +811,7 @@ static ADDRESS_MAP_START( dkong_map, AS_PROGRAM, 8, dkong_state ) AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */ AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */ - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls175.3d") /* IN0, sound CPU intf */ + AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_DEVWRITE("ls175.3d", latch8_device, write) /* IN0, sound CPU intf */ AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(radarscp_grid_color_w)/* IN1 */ AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2 */ @@ -834,7 +834,7 @@ static ADDRESS_MAP_START( dkongjr_map, AS_PROGRAM, 8, dkong_state ) AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */ - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls174.3d") /* IN0, sound interface */ + AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_DEVWRITE("ls174.3d", latch8_device, write) /* IN0, sound interface */ AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(dkongjr_gfxbank_w) AM_RANGE(0x7c80, 0x7c87) AM_DEVWRITE("ls259.4h", latch8_device, bit0_w) /* latch for sound and signals above */ @@ -861,9 +861,9 @@ static ADDRESS_MAP_START( dkong3_map, AS_PROGRAM, 8, dkong_state ) AM_RANGE(0x6800, 0x6fff) AM_RAM AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */ AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("latch1") - AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_LATCH8_WRITE("latch2") - AM_RANGE(0x7d00, 0x7d00) AM_READ_PORT("DSW0") AM_LATCH8_WRITE("latch3") + AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_DEVWRITE("latch1", latch8_device, write) + AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_DEVWRITE("latch2", latch8_device, write) + AM_RANGE(0x7d00, 0x7d00) AM_READ_PORT("DSW0") AM_DEVWRITE("latch3", latch8_device, write) AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW1") AM_WRITE(dkong3_2a03_reset_w) AM_RANGE(0x7e80, 0x7e80) AM_WRITE(dkong3_coin_counter_w) AM_RANGE(0x7e81, 0x7e81) AM_WRITE(dkong3_gfxbank_w) @@ -1704,7 +1704,7 @@ WRITE_LINE_MEMBER(dkong_state::busreq_w ) m_dma8257->hlda_w(state); } -static MACHINE_CONFIG_START( dkong_base, dkong_state ) +static MACHINE_CONFIG_START( dkong_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CLOCK_1H) @@ -1776,7 +1776,7 @@ static MACHINE_CONFIG_DERIVED( braze, dkong2b ) MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dkong3, dkong_state ) +static MACHINE_CONFIG_START( dkong3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz / 2) /* verified in schematics */ @@ -2571,6 +2571,50 @@ ROM_START( dkingjr ) ROM_LOAD( "mb7051.8j", 0x0300, 0x0020, CRC(a5a6f2ca) SHA1(5507fb6f5c8845c4421c2996e9f76c818d987623) ) /* unknown */ ROM_END + +ROM_START( maguila ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "1.7.bin", 0x0000, 0x1000, CRC(8b1d6956) SHA1(3fb8c84dd5686c9e72a71fd7c21e8f345dd61f2e) ) // content identical to dkongjrb but double size, 1st and 2nd half identical + ROM_CONTINUE( 0x3000, 0x1000 ) + ROM_CONTINUE( 0x0000, 0x1000 ) + ROM_CONTINUE( 0x3000, 0x1000 ) + ROM_LOAD( "2.7.bin", 0x2000, 0x0800, CRC(650c71d6) SHA1(6554502a859b1cc8048c1e531eff1038010ccf32) ) // content identical to dkongjrb but double size, 1st and 2nd half identical + ROM_CONTINUE( 0x4800, 0x0800 ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_CONTINUE( 0x5800, 0x0800 ) + ROM_CONTINUE( 0x2000, 0x0800 ) + ROM_CONTINUE( 0x4800, 0x0800 ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_CONTINUE( 0x5800, 0x0800 ) + ROM_LOAD( "3.7.bin", 0x4000, 0x0800, CRC(56c387b1) SHA1(2b1efc5921c9ff24433785814019a620f7e64859) ) // content identical to dkongjrb but double size, 1st and 2nd half identical + ROM_CONTINUE( 0x2800, 0x0800 ) + ROM_CONTINUE( 0x5000, 0x0800 ) + ROM_CONTINUE( 0x1800, 0x0800 ) + ROM_CONTINUE( 0x4000, 0x0800 ) + ROM_CONTINUE( 0x2800, 0x0800 ) + ROM_CONTINUE( 0x5000, 0x0800 ) + ROM_CONTINUE( 0x1800, 0x0800 ) + + ROM_REGION( 0x1000, "soundcpu", 0 ) /* sound */ + ROM_LOAD( "4.7.bin", 0x0000, 0x1000, CRC(715da5f8) SHA1(f708c3fd374da65cbd9fe2e191152f5d865414a0) ) // 2732 + + ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_LOAD( "9dm.7.bin", 0x0000, 0x1000, CRC(469e2237) SHA1(514f3d37d6ba4c623cccf682c4b7acc1339b949d) ) // 2732 + ROM_LOAD( "10dm.7.bin", 0x1000, 0x1000, CRC(a983198d) SHA1(a99f8e4793c8217cd2328652ca5a123ea7ec2d54) ) // 2732 + + ROM_REGION( 0x4000, "gfx2", 0 ) + ROM_LOAD( "5.bin", 0x0000, 0x1000, CRC(9f531527) SHA1(6b426cea91135ae1924506f964d856fc475c08e1) ) // 2732 + ROM_LOAD( "6.bin", 0x1000, 0x1000, CRC(32fbd41b) SHA1(1f98facc2c20dc4b8722085f269f123601382994) ) // 2732 + ROM_LOAD( "7.bin", 0x2000, 0x1000, CRC(2286bf8e) SHA1(7511e83aa5a4de988048fc2db4de7b3d5aabee8c) ) // 2732 + ROM_LOAD( "8.bin", 0x3000, 0x1000, CRC(627007a0) SHA1(f71091b65978f7f386ba3c30a3ffe824412bbe67) ) // 2732 + + ROM_REGION( 0x0320, "proms", 0 ) // PROMs almost identical to dkingjr + ROM_LOAD( "9k_82s129.9k", 0x0000, 0x0100, CRC(b37d1108) SHA1(4f2276c3d082e18aed567c1e96001b97397d9962) ) /* palette low 4 bits, 3 reads were provided, this is the first */ + ROM_LOAD( "9l_82s129.9l", 0x0100, 0x0100, CRC(bfcaef32) SHA1(f688a08eedc6317eb0d7c39b30dfc8e41a3a9cb8) ) /* palette high 4 bits, 3 reads were provided, this is the first */ + ROM_LOAD( "6b_82s129.6b", 0x0200, 0x0100, CRC(dbf185bf) SHA1(2697a991a4afdf079dd0b7e732f71c7618f43b70) ) /* character color codes on a per-column basis */ + ROM_LOAD( "8j_82s123.8j", 0x0300, 0x0020, CRC(a5a6f2ca) SHA1(5507fb6f5c8845c4421c2996e9f76c818d987623) ) /* unknown */ +ROM_END + ROM_START( pestplce ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "pest.1p", 0x0000, 0x1000, CRC(80d50721) SHA1(9c0e7571b1664dce741595a2d13dc9d7709b35a9) ) @@ -3334,49 +3378,50 @@ DRIVER_INIT_MEMBER(dkong_state,dkingjr) * *************************************/ -GAME( 1980, radarscp, 0, radarscp, radarscp, driver_device, 0, ROT90, "Nintendo", "Radar Scope", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, radarscp1, radarscp, radarscp1, radarscp, driver_device, 0, ROT90, "Nintendo", "Radar Scope (TRS01)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1981, dkong, 0, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, dkonghrd, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong (hard kit)", MACHINE_SUPPORTS_SAVE ) // not sure if original or bootleg (see notes on top of driver file) -GAME( 1981, dkongo, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, dkongj, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, dkongjo, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, dkongjo1, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 3)", MACHINE_SUPPORTS_SAVE ) - -GAME( 2004, dkongf, dkong, dkong2b, dkongf, driver_device, 0, ROT90, "hack (Jeff Kulczycki)", "Donkey Kong Foundry (hack)", MACHINE_SUPPORTS_SAVE ) /* from Jeff's Romhack */ -GAME( 2006, dkongx, dkong, braze, dkongx, dkong_state, dkongx, ROT90, "hack (Braze Technologies)", "Donkey Kong II: Jumpman Returns (hack, V1.2)", MACHINE_SUPPORTS_SAVE ) -GAME( 2006, dkongx11, dkong, braze, dkongx, dkong_state, dkongx, ROT90, "hack (Braze Technologies)", "Donkey Kong II: Jumpman Returns (hack, V1.1)", MACHINE_SUPPORTS_SAVE ) -GAME( 2013, dkongpe, dkong, dkong2b, dkong, driver_device, 0, ROT90, "hack (Clay Cowgill and Mike Mika)", "Donkey Kong: Pauline Edition Rev 5 (2013-04-22)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1982, dkongjr, 0, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong Junior (US set F-2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dkongjrj, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo", "Donkey Kong Jr. (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dkongjnrj, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo", "Donkey Kong Junior (Japan?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dkongjrb, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "bootleg", "Donkey Kong Jr. (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dkongjre, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong Junior (E kit)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dkongjrpb, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "bootleg", "Donkey Kong Junior (P kit, bootleg)", MACHINE_SUPPORTS_SAVE ) // definitely not issued by Nintendo -GAME( 1982, jrking, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "bootleg", "Junior King (bootleg of Donkey Kong Jr.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dkingjr, dkongjr, dkongjr, dkongjr, dkong_state, dkingjr, ROT90, "bootleg", "Donkey King Jr. (bootleg of Donkey Kong Jr.)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1983, dkong3, 0, dkong3, dkong3, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong 3 (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, dkong3j, dkong3, dkong3, dkong3, driver_device, 0, ROT90, "Nintendo", "Donkey Kong 3 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, dkong3b, dkong3, dkong3b, dkong3b, driver_device, 0, ROT90, "bootleg", "Donkey Kong 3 (bootleg on Donkey Kong Jr. hardware)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1983, pestplce, mario, pestplce, pestplce, driver_device, 0, ROT180, "bootleg", "Pest Place", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, radarscp, 0, radarscp, radarscp, dkong_state, 0, ROT90, "Nintendo", "Radar Scope", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, radarscp1, radarscp, radarscp1, radarscp, dkong_state, 0, ROT90, "Nintendo", "Radar Scope (TRS01)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1981, dkong, 0, dkong2b, dkong, dkong_state, 0, ROT90, "Nintendo of America", "Donkey Kong (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, dkonghrd, dkong, dkong2b, dkong, dkong_state, 0, ROT90, "Nintendo of America", "Donkey Kong (hard kit)", MACHINE_SUPPORTS_SAVE ) // not sure if original or bootleg (see notes on top of driver file) +GAME( 1981, dkongo, dkong, dkong2b, dkong, dkong_state, 0, ROT90, "Nintendo", "Donkey Kong (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, dkongj, dkong, dkong2b, dkong, dkong_state, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, dkongjo, dkong, dkong2b, dkong, dkong_state, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, dkongjo1, dkong, dkong2b, dkong, dkong_state, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 3)", MACHINE_SUPPORTS_SAVE ) + +GAME( 2004, dkongf, dkong, dkong2b, dkongf, dkong_state, 0, ROT90, "hack (Jeff Kulczycki)", "Donkey Kong Foundry (hack)", MACHINE_SUPPORTS_SAVE ) /* from Jeff's Romhack */ +GAME( 2006, dkongx, dkong, braze, dkongx, dkong_state, dkongx, ROT90, "hack (Braze Technologies)", "Donkey Kong II: Jumpman Returns (hack, V1.2)", MACHINE_SUPPORTS_SAVE ) +GAME( 2006, dkongx11, dkong, braze, dkongx, dkong_state, dkongx, ROT90, "hack (Braze Technologies)", "Donkey Kong II: Jumpman Returns (hack, V1.1)", MACHINE_SUPPORTS_SAVE ) +GAME( 2013, dkongpe, dkong, dkong2b, dkong, dkong_state, 0, ROT90, "hack (Clay Cowgill and Mike Mika)", "Donkey Kong: Pauline Edition Rev 5 (2013-04-22)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1982, dkongjr, 0, dkongjr, dkongjr, dkong_state, 0, ROT90, "Nintendo of America", "Donkey Kong Junior (US set F-2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dkongjrj, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT90, "Nintendo", "Donkey Kong Jr. (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dkongjnrj, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT90, "Nintendo", "Donkey Kong Junior (Japan?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dkongjrb, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT90, "bootleg", "Donkey Kong Jr. (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dkongjre, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT90, "Nintendo of America", "Donkey Kong Junior (E kit)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dkongjrpb, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT90, "bootleg", "Donkey Kong Junior (P kit, bootleg)", MACHINE_SUPPORTS_SAVE ) // definitely not issued by Nintendo +GAME( 1982, jrking, dkongjr, dkongjr, dkongjr, dkong_state, 0, ROT90, "bootleg", "Junior King (bootleg of Donkey Kong Jr.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dkingjr, dkongjr, dkongjr, dkongjr, dkong_state, dkingjr, ROT90, "bootleg", "Donkey King Jr. (bootleg of Donkey Kong Jr.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, maguila, dkongjr, dkongjr, dkongjr, dkong_state, dkingjr, ROT90, "bootleg (Aguipa)", "Up Maguila (bootleg of Donkey Kong Jr.)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1983, dkong3, 0, dkong3, dkong3, dkong_state, 0, ROT90, "Nintendo of America", "Donkey Kong 3 (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, dkong3j, dkong3, dkong3, dkong3, dkong_state, 0, ROT90, "Nintendo", "Donkey Kong 3 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, dkong3b, dkong3, dkong3b, dkong3b, dkong_state, 0, ROT90, "bootleg", "Donkey Kong 3 (bootleg on Donkey Kong Jr. hardware)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1983, pestplce, mario, pestplce, pestplce, dkong_state, 0, ROT180, "bootleg", "Pest Place", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) /* 2650 based */ -GAME( 1984, herbiedk, huncholy, s2650, herbiedk, driver_device, 0, ROT90, "Century Electronics / Seatongrove Ltd", "Herbie at the Olympics (DK conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hunchbkd, hunchbak, s2650, hunchbkd, driver_device, 0, ROT90, "Century Electronics", "Hunchback (DK conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, sbdk, superbik, s2650, sbdk, driver_device, 0, ROT90, "Century Electronics", "Super Bike (DK conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, herodk, hero, s2650, herodk, dkong_state, herodk, ROT90, "Seatongrove Ltd (Crown license)", "Hero in the Castle of Doom (DK conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, herodku, hero, s2650, herodk, driver_device, 0, ROT90, "Seatongrove Ltd (Crown license)", "Hero in the Castle of Doom (DK conversion not encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, 8ballact, 0, s2650, 8ballact, driver_device, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DK conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, 8ballact2, 8ballact, s2650, 8ballact, driver_device, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DKJr conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, shootgal, 0, s2650, shootgal, driver_device, 0, ROT180, "Seatongrove Ltd (Zaccaria license)", "Shooting Gallery", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, spclforc, 0, spclforc, spclforc, driver_device, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, spcfrcii, 0, spclforc, spclforc, driver_device, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces II", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, herbiedk, huncholy, s2650, herbiedk, dkong_state, 0, ROT90, "Century Electronics / Seatongrove Ltd", "Herbie at the Olympics (DK conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hunchbkd, hunchbak, s2650, hunchbkd, dkong_state, 0, ROT90, "Century Electronics", "Hunchback (DK conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sbdk, superbik, s2650, sbdk, dkong_state, 0, ROT90, "Century Electronics", "Super Bike (DK conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, herodk, hero, s2650, herodk, dkong_state, herodk, ROT90, "Seatongrove Ltd (Crown license)", "Hero in the Castle of Doom (DK conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, herodku, hero, s2650, herodk, dkong_state, 0, ROT90, "Seatongrove Ltd (Crown license)", "Hero in the Castle of Doom (DK conversion not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, 8ballact, 0, s2650, 8ballact, dkong_state, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DK conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, 8ballact2, 8ballact, s2650, 8ballact, dkong_state, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DKJr conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, shootgal, 0, s2650, shootgal, dkong_state, 0, ROT180, "Seatongrove Ltd (Zaccaria license)", "Shooting Gallery", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, spclforc, 0, spclforc, spclforc, dkong_state, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, spcfrcii, 0, spclforc, spclforc, dkong_state, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces II", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) /* EPOS */ -GAME( 1984, drakton, 0, drakton, drakton, dkong_state, drakton, ROT90, "Epos Corporation", "Drakton (DK conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, drktnjr, drakton, drktnjr, drakton, dkong_state, drakton, ROT90, "Epos Corporation", "Drakton (DKJr conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, strtheat, 0, strtheat, strtheat, dkong_state, strtheat, ROT90, "Epos Corporation", "Street Heat", MACHINE_SUPPORTS_SAVE ) // distributed by Cardinal Amusements Products (a division of Epos Corporation) +GAME( 1984, drakton, 0, drakton, drakton, dkong_state, drakton, ROT90, "Epos Corporation", "Drakton (DK conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, drktnjr, drakton, drktnjr, drakton, dkong_state, drakton, ROT90, "Epos Corporation", "Drakton (DKJr conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, strtheat, 0, strtheat, strtheat, dkong_state, strtheat, ROT90, "Epos Corporation", "Street Heat", MACHINE_SUPPORTS_SAVE ) // distributed by Cardinal Amusements Products (a division of Epos Corporation) diff --git a/src/mame/drivers/dlair.cpp b/src/mame/drivers/dlair.cpp index bfc45ed180c..8e71830d632 100644 --- a/src/mame/drivers/dlair.cpp +++ b/src/mame/drivers/dlair.cpp @@ -707,7 +707,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( dlair_base, dlair_state ) +static MACHINE_CONFIG_START( dlair_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK_US/4) @@ -743,7 +743,7 @@ static MACHINE_CONFIG_DERIVED( dlair_ldv1000, dlair_base ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dleuro, dlair_state ) +static MACHINE_CONFIG_START( dleuro ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK_EURO/4) diff --git a/src/mame/drivers/dlair2.cpp b/src/mame/drivers/dlair2.cpp index 4a590f8d824..fe85c02e5c0 100644 --- a/src/mame/drivers/dlair2.cpp +++ b/src/mame/drivers/dlair2.cpp @@ -173,7 +173,7 @@ INTERRUPT_GEN_MEMBER(dlair2_state::dlair2_timer_irq) device.execute().set_input_line_and_vector(0,HOLD_LINE,0x20/4); } -static MACHINE_CONFIG_START( dlair2, dlair2_state ) +static MACHINE_CONFIG_START( dlair2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088 , MAIN_CLOCK/3) /* Schematics show I8088 "max" CPU */ @@ -330,19 +330,19 @@ ROM_START( spacea91_13e ) ROM_END -GAME( 1991, dlair2, 0, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.19)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_319e, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Euro v3.19)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_319s, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Spanish v3.19)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_318, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.18)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_317e, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Euro v3.17)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_316e, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Euro v3.16)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_315, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.15)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_315s, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Spanish v3.15)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_314, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.14)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_312, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Euro v3.12)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_300, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.00)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_211, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v2.11)", MACHINE_IS_SKELETON ) -GAME( 1991, dlair2_200, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v2.00, AMOA prototype)", MACHINE_IS_SKELETON ) - -GAME( 1991, spacea91, spaceace, dlair2, dlair2, driver_device, 0, ROT0, "Cinematronics (Leland Corporation license)", "Space Ace (DL2 Conversion) (US v1.3)", MACHINE_IS_SKELETON ) -GAME( 1991, spacea91_13e, spaceace, dlair2, dlair2, driver_device, 0, ROT0, "Cinematronics (Leland Corporation license)", "Space Ace (DL2 Conversion) (Euro v1.3)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2, 0, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.19)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_319e, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Euro v3.19)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_319s, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Spanish v3.19)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_318, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.18)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_317e, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Euro v3.17)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_316e, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Euro v3.16)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_315, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.15)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_315s, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Spanish v3.15)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_314, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.14)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_312, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (Euro v3.12)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_300, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v3.00)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_211, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v2.11)", MACHINE_IS_SKELETON ) +GAME( 1991, dlair2_200, dlair2, dlair2, dlair2, dlair2_state, 0, ROT0, "Leland Corporation", "Dragon's Lair 2: Time Warp (US v2.00, AMOA prototype)", MACHINE_IS_SKELETON ) + +GAME( 1991, spacea91, spaceace, dlair2, dlair2, dlair2_state, 0, ROT0, "Cinematronics (Leland Corporation license)", "Space Ace (DL2 Conversion) (US v1.3)", MACHINE_IS_SKELETON ) +GAME( 1991, spacea91_13e, spaceace, dlair2, dlair2, dlair2_state, 0, ROT0, "Cinematronics (Leland Corporation license)", "Space Ace (DL2 Conversion) (Euro v1.3)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/dm7000.cpp b/src/mame/drivers/dm7000.cpp index 239a0e5c895..7a9519dbc69 100644 --- a/src/mame/drivers/dm7000.cpp +++ b/src/mame/drivers/dm7000.cpp @@ -293,14 +293,14 @@ WRITE32_MEMBER( dm7000_state::dcr_w ) dcr[offset] = data; } -WRITE8_MEMBER( dm7000_state::kbd_put ) +void dm7000_state::kbd_put(u8 data) { //printf("%02X\n", data); m_term_data = data; m_scc0_lsr = 1; } -static MACHINE_CONFIG_START( dm7000, dm7000_state ) +static MACHINE_CONFIG_START( dm7000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",PPC405GP, 252000000 / 10) // Should be PPC405D4? // Slowed down 10 times in order to get normal response for now @@ -317,7 +317,7 @@ static MACHINE_CONFIG_START( dm7000, dm7000_state ) MCFG_SCREEN_UPDATE_DRIVER(dm7000_state, screen_update_dm7000) MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(dm7000_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(dm7000_state, kbd_put)) MACHINE_CONFIG_END @@ -347,7 +347,7 @@ ROM_START( dm500 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -SYST( 2003, dm7000, 0, 0, dm7000, dm7000, driver_device, 0, "Dream Multimedia", "Dreambox 7000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -SYST( 2004, dm5620, dm7000, 0, dm7000, dm7000, driver_device, 0, "Dream Multimedia", "Dreambox 5620", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -SYST( 2006, dm500, dm7000, 0, dm7000, dm7000, driver_device, 0, "Dream Multimedia", "Dreambox 500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +SYST( 2003, dm7000, 0, 0, dm7000, dm7000, dm7000_state, 0, "Dream Multimedia", "Dreambox 7000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +SYST( 2004, dm5620, dm7000, 0, dm7000, dm7000, dm7000_state, 0, "Dream Multimedia", "Dreambox 5620", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +SYST( 2006, dm500, dm7000, 0, dm7000, dm7000, dm7000_state, 0, "Dream Multimedia", "Dreambox 500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/dmax8000.cpp b/src/mame/drivers/dmax8000.cpp index 40b40fc65d4..079cc54fe8b 100644 --- a/src/mame/drivers/dmax8000.cpp +++ b/src/mame/drivers/dmax8000.cpp @@ -65,7 +65,7 @@ private: required_device m_dart1; required_device m_dart2; required_device m_ctc; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; }; @@ -112,7 +112,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(dmax8000_io, AS_IO, 8, dmax8000_state) ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("fdc", fd1793_t, read, write) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("fdc", fd1793_device, read, write) AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("dart1", z80dart_device, ba_cd_r, ba_cd_w) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio1", z80pio_device, read, write) // fdd controls @@ -167,7 +167,7 @@ static SLOT_INTERFACE_START( floppies ) SLOT_INTERFACE( "drive0", FLOPPY_8_DSDD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( dmax8000, dmax8000_state ) +static MACHINE_CONFIG_START( dmax8000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz ) // no idea what crystal is used, but 4MHz clock is confirmed MCFG_CPU_PROGRAM_MAP(dmax8000_mem) @@ -222,5 +222,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLAS INIT COMPANY FULLNAME FLAGS COMP( 1981, dmax8000, 0, 0, dmax8000, dmax8000, dmax8000_state, dmax8000, "Datamax", "Datamax 8000", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/dmndrby.cpp b/src/mame/drivers/dmndrby.cpp index 6c69ef087c5..64980d656a6 100644 --- a/src/mame/drivers/dmndrby.cpp +++ b/src/mame/drivers/dmndrby.cpp @@ -523,7 +523,7 @@ INTERRUPT_GEN_MEMBER(dmndrby_state::dderby_timer_irq) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xcf); /* RST 08h */ } -static MACHINE_CONFIG_START( dderby, dmndrby_state ) +static MACHINE_CONFIG_START( dderby ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(memmap) @@ -658,6 +658,6 @@ ROM_START( dmndrbya ) ROM_END -/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME */ -GAME( 1994, dmndrby, 0, dderby, dderby, driver_device, 0, ROT0, "Electrocoin", "Diamond Derby (Newer)",MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_COLORS|MACHINE_NOT_WORKING ) // hack? -GAME( 1986, dmndrbya, dmndrby, dderby, dderbya, driver_device, 0, ROT0, "Electrocoin", "Diamond Derby (Original)",MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_COLORS|MACHINE_NOT_WORKING ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME FLAGS +GAME( 1994, dmndrby, 0, dderby, dderby, dmndrby_state, 0, ROT0, "Electrocoin", "Diamond Derby (Newer)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_COLORS|MACHINE_NOT_WORKING ) // hack? +GAME( 1986, dmndrbya, dmndrby, dderby, dderbya, dmndrby_state, 0, ROT0, "Electrocoin", "Diamond Derby (Original)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_COLORS|MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/dms5000.cpp b/src/mame/drivers/dms5000.cpp index 72a4d2f64cb..5cfd0a1560c 100644 --- a/src/mame/drivers/dms5000.cpp +++ b/src/mame/drivers/dms5000.cpp @@ -55,7 +55,7 @@ uint32_t dms5000_state::screen_update_dms5000(screen_device &screen, bitmap_ind1 return 0; } -static MACHINE_CONFIG_START( dms5000, dms5000_state ) +static MACHINE_CONFIG_START( dms5000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8086, XTAL_9_8304MHz) MCFG_CPU_PROGRAM_MAP(dms5000_mem) @@ -83,5 +83,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, dms5000, 0, 0, dms5000, dms5000, driver_device, 0, "Digital Microsystems", "DMS-5000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1982, dms5000, 0, 0, dms5000, dms5000, dms5000_state, 0, "Digital Microsystems", "DMS-5000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/dms86.cpp b/src/mame/drivers/dms86.cpp index 8a8bb7d0997..10be2529544 100644 --- a/src/mame/drivers/dms86.cpp +++ b/src/mame/drivers/dms86.cpp @@ -40,13 +40,15 @@ public: { } - required_device m_maincpu; - required_device m_terminal; DECLARE_READ16_MEMBER( dms86_82_r ); DECLARE_READ16_MEMBER( dms86_84_r ); DECLARE_READ16_MEMBER( dms86_86_r ); DECLARE_READ16_MEMBER( dms86_9a_r ); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); + +protected: + required_device m_maincpu; + required_device m_terminal; uint8_t *m_ram; uint8_t m_term_data; virtual void machine_reset() override; @@ -102,12 +104,12 @@ void dms86_state::machine_reset() { } -WRITE8_MEMBER( dms86_state::kbd_put ) +void dms86_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( dms86, dms86_state ) +static MACHINE_CONFIG_START( dms86 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8086, XTAL_9_8304MHz) MCFG_CPU_PROGRAM_MAP(dms86_mem) @@ -115,7 +117,7 @@ static MACHINE_CONFIG_START( dms86, dms86_state ) MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(dms86_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(dms86_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -127,5 +129,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, dms86, 0, 0, dms86, dms86, driver_device, 0, "Digital Microsystems", "DMS-86", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1982, dms86, 0, 0, dms86, dms86, dms86_state, 0, "Digital Microsystems", "DMS-86", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp index a999ab1e9d3..2d0e62d98ed 100644 --- a/src/mame/drivers/dmv.cpp +++ b/src/mame/drivers/dmv.cpp @@ -315,7 +315,7 @@ UPD7220_DISPLAY_PIXELS_MEMBER( dmv_state::hgdc_display_pixels ) for(int xi=0;xi<16;xi++) { if (bitmap.cliprect().contains(x + xi, y)) - bitmap.pix32(y, x + xi) = ((gfx >> xi) & 1) ? palette[1] : palette[0]; + bitmap.pix32(y, x + xi) = ((gfx >> xi) & 1) ? palette[2] : palette[0]; } } } @@ -336,8 +336,8 @@ UPD7220_DRAW_TEXT_LINE_MEMBER( dmv_state::hgdc_draw_text ) else { const rgb_t *palette = m_palette->palette()->entry_list_raw(); - bg = palette[(attr & 1) ? 1 : 0]; - fg = palette[(attr & 1) ? 0 : 1]; + bg = palette[(attr & 1) ? 2 : 0]; + fg = palette[(attr & 1) ? 0 : 2]; } for( int yi = 0; yi < lr; yi++) @@ -554,11 +554,6 @@ WRITE8_MEMBER(dmv_state::kb_mcu_port2_w) m_slot7->keyint_w(BIT(data, 4)); } -static ADDRESS_MAP_START( dmv_kb_ctrl_io, AS_IO, 8, dmv_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_mcu_port1_r, kb_mcu_port1_w) // bit 0 data from kb, bit 1 data to kb - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_mcu_port2_w) -ADDRESS_MAP_END - static ADDRESS_MAP_START( upd7220_map, AS_0, 16, dmv_state ) ADDRESS_MAP_GLOBAL_MASK(0x1ffff) AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram") @@ -717,14 +712,16 @@ static SLOT_INTERFACE_START(dmv_slot7a) SLOT_INTERFACE("k235", DMV_K235) // K235 Internal 8088 module with interrupt controller SLOT_INTERFACE_END -static MACHINE_CONFIG_START( dmv, dmv_state ) +static MACHINE_CONFIG_START( dmv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_24MHz / 6) MCFG_CPU_PROGRAM_MAP(dmv_mem) MCFG_CPU_IO_MAP(dmv_io) MCFG_CPU_ADD("kb_ctrl_mcu", I8741, XTAL_6MHz) - MCFG_CPU_IO_MAP(dmv_kb_ctrl_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(dmv_state, kb_mcu_port1_r)) // bit 0 data from kb + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dmv_state, kb_mcu_port1_w)) // bit 1 data to kb + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(dmv_state, kb_mcu_port2_w)) MCFG_QUANTUM_PERFECT_CPU("maincpu") @@ -853,5 +850,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, dmv, 0, 0, dmv, dmv, driver_device, 0, "NCR", "Decision Mate V", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, dmv, 0, 0, dmv, dmv, dmv_state, 0, "NCR", "Decision Mate V", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/docastle.cpp b/src/mame/drivers/docastle.cpp index b68e02187d2..0eb7d0e3d4e 100644 --- a/src/mame/drivers/docastle.cpp +++ b/src/mame/drivers/docastle.cpp @@ -563,7 +563,7 @@ void docastle_state::machine_start() save_item(NAME(m_buffer1)); } -static MACHINE_CONFIG_START( docastle, docastle_state ) +static MACHINE_CONFIG_START( docastle ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) @@ -579,18 +579,18 @@ static MACHINE_CONFIG_START( docastle, docastle_state ) MCFG_CPU_VBLANK_INT_DRIVER("screen", docastle_state, nmi_line_pulse) MCFG_DEVICE_ADD("inp1", TMS1025, 0) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT1, IOPORT("DSW2")) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT2, IOPORT("DSW1")) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT3, IOPORT("JOYS")) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT5, IOPORT("BUTTONS")) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT7, IOPORT("SYSTEM")) + MCFG_TMS1025_READ_PORT_CB(PORT1, IOPORT("DSW2")) + MCFG_TMS1025_READ_PORT_CB(PORT2, IOPORT("DSW1")) + MCFG_TMS1025_READ_PORT_CB(PORT3, IOPORT("JOYS")) + MCFG_TMS1025_READ_PORT_CB(PORT5, IOPORT("BUTTONS")) + MCFG_TMS1025_READ_PORT_CB(PORT7, IOPORT("SYSTEM")) MCFG_DEVICE_ADD("inp2", TMS1025, 0) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT1, IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT2, IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT3, IOPORT("JOYS")) MCFG_DEVCB_RSHIFT(4) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT5, IOPORT("BUTTONS")) MCFG_DEVCB_RSHIFT(4) - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT7, IOPORT("SYSTEM")) MCFG_DEVCB_RSHIFT(4) + MCFG_TMS1025_READ_PORT_CB(PORT1, IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4) + MCFG_TMS1025_READ_PORT_CB(PORT2, IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4) + MCFG_TMS1025_READ_PORT_CB(PORT3, IOPORT("JOYS")) MCFG_DEVCB_RSHIFT(4) + MCFG_TMS1025_READ_PORT_CB(PORT5, IOPORT("BUTTONS")) MCFG_DEVCB_RSHIFT(4) + MCFG_TMS1025_READ_PORT_CB(PORT7, IOPORT("SYSTEM")) MCFG_DEVCB_RSHIFT(4) MCFG_WATCHDOG_ADD("watchdog") @@ -652,10 +652,10 @@ static MACHINE_CONFIG_DERIVED( idsoccer, docastle ) MCFG_CPU_PROGRAM_MAP(idsoccer_map) MCFG_DEVICE_MODIFY("inp1") - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT4, IOPORT("JOYS_RIGHT")) + MCFG_TMS1025_READ_PORT_CB(PORT4, IOPORT("JOYS_RIGHT")) MCFG_DEVICE_MODIFY("inp2") - MCFG_TMS1025_READ_PORT_CB(TMS1025_PORT4, IOPORT("JOYS_RIGHT")) MCFG_DEVCB_RSHIFT(4) + MCFG_TMS1025_READ_PORT_CB(PORT4, IOPORT("JOYS_RIGHT")) MCFG_DEVCB_RSHIFT(4) /* video hardware */ MCFG_VIDEO_START_OVERRIDE(docastle_state,dorunrun) @@ -663,7 +663,7 @@ static MACHINE_CONFIG_DERIVED( idsoccer, docastle ) /* sound hardware */ MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* Crystal verified on American Soccer board. */ MCFG_MSM5205_VCLK_CB(WRITELINE(docastle_state, idsoccer_adpcm_int)) // interrupt function - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S64_4B) // 6 kHz ??? + MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) // 6 kHz ??? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MACHINE_CONFIG_END @@ -1087,18 +1087,18 @@ ROM_END /* Game Drivers */ -GAME( 1983, docastle, 0, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do's Castle (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, docastle2, docastle, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do's Castle (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, docastleo, docastle, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do's Castle (older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, douni, docastle, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do vs. Unicorns", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, dorunrun, 0, dorunrun, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, dorunrun2, dorunrun, dorunrun, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, dorunrunc, dorunrun, docastle, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, dorunrunca,dorunrun, docastle, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, spiero, dorunrun, dorunrun, dorunrun, driver_device, 0, ROT0, "Universal", "Super Pierrot (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, dowild, 0, dorunrun, dowild, driver_device, 0, ROT0, "Universal", "Mr. Do's Wild Ride", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, jjack, 0, dorunrun, jjack, driver_device, 0, ROT270, "Universal", "Jumping Jack", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, kickridr, 0, dorunrun, kickridr, driver_device, 0, ROT0, "Universal", "Kick Rider", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, idsoccer, 0, idsoccer, idsoccer, driver_device, 0, ROT0, "Universal", "Indoor Soccer (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1985, idsoccera, idsoccer, idsoccer, idsoccer, driver_device, 0, ROT0, "Universal", "Indoor Soccer (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) -GAME( 1987, asoccer, idsoccer, idsoccer, idsoccer, driver_device, 0, ROT0, "Universal", "American Soccer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, docastle, 0, docastle, docastle, docastle_state, 0, ROT270, "Universal", "Mr. Do's Castle (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, docastle2, docastle, docastle, docastle, docastle_state, 0, ROT270, "Universal", "Mr. Do's Castle (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, docastleo, docastle, docastle, docastle, docastle_state, 0, ROT270, "Universal", "Mr. Do's Castle (older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, douni, docastle, docastle, docastle, docastle_state, 0, ROT270, "Universal", "Mr. Do vs. Unicorns", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, dorunrun, 0, dorunrun, dorunrun, docastle_state, 0, ROT0, "Universal", "Do! Run Run (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, dorunrun2, dorunrun, dorunrun, dorunrun, docastle_state, 0, ROT0, "Universal", "Do! Run Run (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, dorunrunc, dorunrun, docastle, dorunrun, docastle_state, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, dorunrunca,dorunrun, docastle, dorunrun, docastle_state, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, spiero, dorunrun, dorunrun, dorunrun, docastle_state, 0, ROT0, "Universal", "Super Pierrot (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, dowild, 0, dorunrun, dowild, docastle_state, 0, ROT0, "Universal", "Mr. Do's Wild Ride", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, jjack, 0, dorunrun, jjack, docastle_state, 0, ROT270, "Universal", "Jumping Jack", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, kickridr, 0, dorunrun, kickridr, docastle_state, 0, ROT0, "Universal", "Kick Rider", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, idsoccer, 0, idsoccer, idsoccer, docastle_state, 0, ROT0, "Universal", "Indoor Soccer (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1985, idsoccera, idsoccer, idsoccer, idsoccer, docastle_state, 0, ROT0, "Universal", "Indoor Soccer (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) +GAME( 1987, asoccer, idsoccer, idsoccer, idsoccer, docastle_state, 0, ROT0, "Universal", "American Soccer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/dogfgt.cpp b/src/mame/drivers/dogfgt.cpp index ff3ff5bd835..77ee7cd7bf2 100644 --- a/src/mame/drivers/dogfgt.cpp +++ b/src/mame/drivers/dogfgt.cpp @@ -237,7 +237,7 @@ void dogfgt_state::machine_reset() } -static MACHINE_CONFIG_START( dogfgt, dogfgt_state ) +static MACHINE_CONFIG_START( dogfgt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1500000) /* 1.5 MHz ???? */ @@ -379,6 +379,6 @@ ROM_END -GAME( 1984, dogfgt, 0, dogfgt, dogfgt, driver_device, 0, ROT0, "Technos Japan", "Acrobatic Dog-Fight", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, dogfgtu, dogfgt, dogfgt, dogfgt, driver_device, 0, ROT0, "Technos Japan (Data East USA, Inc. license)", "Acrobatic Dog-Fight (USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, dogfgtj, dogfgt, dogfgt, dogfgt, driver_device, 0, ROT0, "Technos Japan", "Dog-Fight (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, dogfgt, 0, dogfgt, dogfgt, dogfgt_state, 0, ROT0, "Technos Japan", "Acrobatic Dog-Fight", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, dogfgtu, dogfgt, dogfgt, dogfgt, dogfgt_state, 0, ROT0, "Technos Japan (Data East USA, Inc. license)", "Acrobatic Dog-Fight (USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, dogfgtj, dogfgt, dogfgt, dogfgt, dogfgt_state, 0, ROT0, "Technos Japan", "Dog-Fight (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dolphunk.cpp b/src/mame/drivers/dolphunk.cpp index df86f67e501..9849a276b79 100644 --- a/src/mame/drivers/dolphunk.cpp +++ b/src/mame/drivers/dolphunk.cpp @@ -224,7 +224,7 @@ static INPUT_PORTS_START( dauphin ) INPUT_PORTS_END -static MACHINE_CONFIG_START( dauphin, dauphin_state ) +static MACHINE_CONFIG_START( dauphin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(dauphin_mem) @@ -264,5 +264,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, dauphin, 0, 0, dauphin, dauphin, driver_device, 0, "LCD EPFL Stoppani", "Dauphin", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1979, dauphin, 0, 0, dauphin, dauphin, dauphin_state, 0, "LCD EPFL Stoppani", "Dauphin", 0 ) diff --git a/src/mame/drivers/dominob.cpp b/src/mame/drivers/dominob.cpp index e0a9ab7f6a0..eacdb5cdb5e 100644 --- a/src/mame/drivers/dominob.cpp +++ b/src/mame/drivers/dominob.cpp @@ -289,7 +289,7 @@ static GFXDECODE_START( dominob ) GFXDECODE_END -static MACHINE_CONFIG_START( dominob, dominob_state ) +static MACHINE_CONFIG_START( dominob ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL_12MHz/2) @@ -361,5 +361,5 @@ ROM_START( dominobv2 ) ROM_LOAD( "u114v2", 0xc0000, 0x40000, CRC(df17ee65) SHA1(1cb434719a8c406726d2c966392be03a2dc1d758) ) ROM_END -GAME( 1996, dominob, 0, dominob, dominob, driver_device, 0, ROT0, "Wonwoo Systems", "Domino Block", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, dominobv2,dominob, dominob, dominob, driver_device, 0, ROT0, "Wonwoo Systems", "Domino Block ver.2", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, dominob, 0, dominob, dominob, dominob_state, 0, ROT0, "Wonwoo Systems", "Domino Block", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, dominobv2,dominob, dominob, dominob, dominob_state, 0, ROT0, "Wonwoo Systems", "Domino Block ver.2", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp index 2caa7dab626..d856e9a3fe4 100644 --- a/src/mame/drivers/dooyong.cpp +++ b/src/mame/drivers/dooyong.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Nicola Salmoria +// copyright-holders:Nicola Salmoria,Vas Crabb /*************************************************************************** Dooyong games @@ -72,7 +72,7 @@ are almost identical, except for much darker BG layer colors). ***************************************************************************/ #include "emu.h" -#include "includes/dooyong.h" +#include "video/dooyong.h" #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" @@ -81,39 +81,681 @@ are almost identical, except for much darker BG layer colors). #include "sound/okim6295.h" #include "sound/ym2151.h" +#include "screen.h" #include "speaker.h" -WRITE8_MEMBER(dooyong_z80_state::bankswitch_w) +namespace { + +class dooyong_state : public driver_device +{ +protected: + dooyong_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_audiocpu(*this, "audiocpu") + , m_gfxdecode(*this, "gfxdecode") + , m_palette(*this, "palette") + , m_bg(*this, "bg") + , m_bg2(*this, "bg2") + , m_fg(*this, "fg") + , m_fg2(*this, "fg2") + { + } + + required_device m_maincpu; + required_device m_audiocpu; + required_device m_gfxdecode; + required_device m_palette; + optional_device m_bg; + optional_device m_bg2; + optional_device m_fg; + optional_device m_fg2; +}; + +class dooyong_z80_state : public dooyong_state +{ +public: + dooyong_z80_state(const machine_config &mconfig, device_type type, const char *tag) + : dooyong_state(mconfig, type, tag) + , m_tx(*this, "tx") + , m_spriteram(*this, "spriteram") + { + } + + enum + { + SPRITE_12BIT = 0x01, + SPRITE_HEIGHT = 0x02, + SPRITE_YSHIFT_BLUEHAWK = 0x04, + SPRITE_YSHIFT_FLYTIGER = 0x08 + }; + + DECLARE_WRITE8_MEMBER(flip_screen_w) + { + flip_screen_set(data); + } + + DECLARE_WRITE8_MEMBER(bankswitch_w) + { + membank("bank1")->set_entry(data & 0x07); + if (data & 0xf8) popmessage("bankswitch %02x",data); + } + + DECLARE_READ8_MEMBER(lastday_tx_r) + { + bool const lane(BIT(offset, 11)); + return m_tx->tileram_r(space, offset & 0x07ffU) >> (lane ? 8 : 0); + } + + DECLARE_WRITE8_MEMBER(lastday_tx_w) + { + bool const lane(BIT(offset, 11)); + m_tx->tileram_w(space, offset & 0x07ffU, uint16_t(data) << (lane ? 8 : 0), lane ? 0xff00U : 0x00ffU); + } + + DECLARE_READ8_MEMBER(bluehawk_tx_r) + { + bool const lane(BIT(offset, 0)); + return m_tx->tileram_r(space, offset >> 1) >> (lane ? 8 : 0); + } + + DECLARE_WRITE8_MEMBER(bluehawk_tx_w) + { + bool const lane(BIT(offset, 0)); + m_tx->tileram_w(space, offset >> 1, uint16_t(data) << (lane ? 8 : 0), lane ? 0xff00U : 0x00ffU); + } + + DECLARE_READ8_MEMBER(paletteram_flytiger_r) + { + if (m_palette_bank) offset |= 0x800; + return m_paletteram_flytiger[offset]; + } + + DECLARE_WRITE8_MEMBER(paletteram_flytiger_w) + { + if (m_palette_bank) offset |= 0x800; + m_paletteram_flytiger[offset] = data; + uint16_t const value = m_paletteram_flytiger[offset & ~1] | (m_paletteram_flytiger[offset | 1] << 8); + m_palette->set_pen_color(offset/2, pal5bit(value >> 10), pal5bit(value >> 5), pal5bit(value >> 0)); + } + + DECLARE_WRITE8_MEMBER(primella_ctrl_w); + DECLARE_WRITE8_MEMBER(flytiger_ctrl_w); + + uint32_t screen_update_bluehawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update_flytiger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update_primella(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + DECLARE_MACHINE_START(cpu_z80) + { + membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000); + } + + DECLARE_VIDEO_START(bluehawk) + { + } + + DECLARE_VIDEO_START(flytiger) + { + m_paletteram_flytiger = make_unique_clear(0x1000); + save_pointer(NAME(m_paletteram_flytiger.get()), 0x1000); + + m_palette_bank = 0; + + /* Register for save/restore */ + save_item(NAME(m_palette_bank)); + save_item(NAME(m_flytiger_pri)); + } + + DECLARE_VIDEO_START(primella) + { + /* Register for save/restore */ + save_item(NAME(m_tx_pri)); + } + +protected: + void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, unsigned extensions = 0); + + std::unique_ptr m_paletteram_flytiger; + uint8_t m_sprites_disabled = 0; + uint8_t m_flytiger_pri = 0; + uint8_t m_tx_pri = 0; + uint8_t m_palette_bank = 0; + + required_device m_tx; + optional_device m_spriteram; +}; + +class dooyong_z80_ym2203_state : public dooyong_z80_state +{ +public: + dooyong_z80_ym2203_state(const machine_config &mconfig, device_type type, const char *tag) + : dooyong_z80_state(mconfig, type, tag) + { + } + + DECLARE_WRITE8_MEMBER(lastday_ctrl_w); + DECLARE_WRITE8_MEMBER(pollux_ctrl_w); + DECLARE_WRITE_LINE_MEMBER(irqhandler_2203_1); + DECLARE_WRITE_LINE_MEMBER(irqhandler_2203_2); + DECLARE_READ8_MEMBER(unk_r); + + DECLARE_MACHINE_RESET(sound_ym2203) + { + m_interrupt_line_1 = 0; + m_interrupt_line_2 = 0; + } + + uint32_t screen_update_lastday(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update_gulfstrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update_pollux(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + DECLARE_VIDEO_START(lastday) + { + /* Register for save/restore */ + save_item(NAME(m_sprites_disabled)); + save_item(NAME(m_interrupt_line_1)); + save_item(NAME(m_interrupt_line_2)); + } + + DECLARE_VIDEO_START(gulfstrm) + { + m_palette_bank = 0; + + /* Register for save/restore */ + save_item(NAME(m_palette_bank)); + save_item(NAME(m_interrupt_line_1)); + save_item(NAME(m_interrupt_line_2)); + } + + DECLARE_VIDEO_START(pollux) + { + m_paletteram_flytiger = make_unique_clear(0x1000); + save_pointer(NAME(m_paletteram_flytiger.get()), 0x1000); + + m_palette_bank = 0; + + /* Register for save/restore */ + save_item(NAME(m_palette_bank)); + save_item(NAME(m_interrupt_line_1)); + save_item(NAME(m_interrupt_line_2)); + } + +protected: + int m_interrupt_line_1 = 0; + int m_interrupt_line_2 = 0; +}; + + +class dooyong_68k_state : public dooyong_state +{ +public: + dooyong_68k_state(const machine_config &mconfig, device_type type, const char *tag) + : dooyong_state(mconfig, type, tag) + , m_spriteram(*this, "spriteram") + { + } + + DECLARE_WRITE16_MEMBER(ctrl_w) + { + if (ACCESSING_BITS_0_7) + { + /* bit 0 flips screen */ + flip_screen_set(data & 0x0001); + + /* bit 4 changes tilemaps priority */ + m_bg2_priority = data & 0x0010; + + /* bit 5 used but unknown */ + } + } + + TIMER_DEVICE_CALLBACK_MEMBER(scanline); + +protected: + void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + uint16_t m_bg2_priority = 0; + required_device m_spriteram; +}; + + +class rshark_state : public dooyong_68k_state +{ +public: + rshark_state(const machine_config &mconfig, device_type type, const char *tag) + : dooyong_68k_state(mconfig, type, tag) + { + } + + uint32_t screen_update_rshark(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + DECLARE_VIDEO_START(rshark) + { + /* Register for save/restore */ + save_item(NAME(m_bg2_priority)); + } +}; + + +class popbingo_state : public dooyong_68k_state +{ +public: + popbingo_state(const machine_config &mconfig, device_type type, const char *tag) + : dooyong_68k_state(mconfig, type, tag) + , m_bg_bitmap() + , m_bg2_bitmap() + , m_screen(*this, "screen") + { + } + + uint32_t screen_update_popbingo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + DECLARE_VIDEO_START(popbingo) + { + m_screen->register_screen_bitmap(m_bg_bitmap); + m_screen->register_screen_bitmap(m_bg2_bitmap); + + /* Register for save/restore */ + save_item(NAME(m_bg2_priority)); // Not used atm + } + +protected: + bitmap_ind16 m_bg_bitmap; + bitmap_ind16 m_bg2_bitmap; + + required_device m_screen; +}; + + + +/* Control registers seem to be different on every game */ + +WRITE8_MEMBER(dooyong_z80_ym2203_state::lastday_ctrl_w) +{ + /* bits 0 and 1 are coin counters */ + machine().bookkeeping().coin_counter_w(0, data & 0x01); + machine().bookkeeping().coin_counter_w(1, data & 0x02); + + /* bit 3 is used but unknown */ + + /* bit 4 disables sprites */ + m_sprites_disabled = data & 0x10; + + /* bit 6 is flip screen */ + flip_screen_set(data & 0x40); +} + +WRITE8_MEMBER(dooyong_z80_ym2203_state::pollux_ctrl_w) +{ +// printf("pollux_ctrl_w %02x\n", data); + + /* bit 0 is flip screen */ + flip_screen_set(data & 0x01); + + /* bits 6 and 7 are coin counters */ + machine().bookkeeping().coin_counter_w(0, data & 0x80); + machine().bookkeeping().coin_counter_w(1, data & 0x40); + + /* bit 1 is used but unknown - palette banking (both write and display based on pollux bombs) */ + uint8_t const last_palbank = m_palette_bank; + if (m_paletteram_flytiger) m_palette_bank = BIT(data, 1); + if (last_palbank != m_palette_bank) + { + m_bg->set_palette_bank(m_palette_bank << 6); + m_fg->set_palette_bank(m_palette_bank << 6); + m_tx->set_palette_bank(m_palette_bank << 6); + } + + /* bit 2 is continuously toggled (unknown) */ + + /* bit 4 is used but unknown - display disable? */ +} + + + +WRITE8_MEMBER(dooyong_z80_state::primella_ctrl_w) { + /* bits 0-2 select ROM bank */ membank("bank1")->set_entry(data & 0x07); - if (data & 0xf8) popmessage("bankswitch %02x",data); + /* bit 3 disables tx layer */ + m_tx_pri = data & 0x08; + + /* bit 4 flips screen */ + flip_screen_set(data & 0x10); + + /* bit 5 used but unknown */ + +// logerror("%04x: bankswitch = %02x\n",space.device().safe_pc(),data&0xe0); +} + + +WRITE8_MEMBER(dooyong_z80_state::flytiger_ctrl_w) +{ + /* bit 0 is flip screen */ + flip_screen_set(data & 0x01); + + /* bits 1, 2 used but unknown */ + + /* bit 3 palette banking */ + uint8_t const last_palbank = m_palette_bank; + m_palette_bank = BIT(data, 3); + if (last_palbank != m_palette_bank) + { + m_bg->set_palette_bank(m_palette_bank << 6); + m_fg->set_palette_bank(m_palette_bank << 6); + m_tx->set_palette_bank(m_palette_bank << 6); + } + + /* bit 4 changes tilemaps priority */ + m_flytiger_pri = data & 0x10; +} + + +void dooyong_z80_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, unsigned extensions) +{ + /* Sprites take 32 bytes each in memory: + MSB LSB + [offs + 0x00] cccc cccc (bits 7-0 of gfx code) + [offs + 0x01] cccx CCCC (bits 10-8 of gfx code, bit 8 of x position, bits 3-0 of color code) + [offs + 0x02] yyyy yyyy + [offs + 0x03] xxxx xxxx (bits 7-0 of x offset) + ... + [offs + 0x1c] ?hhh XY*c (bits 2-0 of height, x flip, y flip, * see note, bit 11 of gfx code) + ... + ? = unused/unknown + E = enable + c = gfx code + x = x position + y = y position + C = color code + w = width + X = x flip + Y = y flip + * = alters y position in bluehawk and flytiger - see code below + bit 11 of gfx code only used by gulfstrm, pollux, bluehawk and flytiger + height only used by pollux, bluehawk and flytiger + x flip and y flip only used by pollux and flytiger */ + + uint8_t const *const buffered_spriteram = m_spriteram->buffer(); + for (int offs = 0; offs < m_spriteram->bytes(); offs += 32) + { + int sx = buffered_spriteram[offs+3] | ((buffered_spriteram[offs+1] & 0x10) << 4); + int sy = buffered_spriteram[offs+2]; + int code = buffered_spriteram[offs] | ((buffered_spriteram[offs+1] & 0xe0) << 3); + int color = buffered_spriteram[offs+1] & 0x0f; + + //TODO: This priority mechanism works for known games, but seems a bit strange. + //Are we missing something? (The obvious spare palette bit isn't it.) + int const pri = (((color == 0x00) || (color == 0x0f)) ? 0xfc : 0xf0); + + bool flipx = false, flipy = false; + int height = 0; + if (extensions) + { + uint8_t const ext = buffered_spriteram[offs+0x1c]; + + if (extensions & SPRITE_12BIT) + code |= ((ext & 0x01) << 11); + + if (extensions & SPRITE_HEIGHT) + { + height = (ext & 0x70) >> 4; + code &= ~height; + + flipx = ext & 0x08; + flipy = ext & 0x04; + } + + if (extensions & SPRITE_YSHIFT_BLUEHAWK) + sy += 6 - ((~ext & 0x02) << 7); + + if (extensions & SPRITE_YSHIFT_FLYTIGER) + sy -=(ext & 0x02) << 7; + } + + if (flip_screen()) + { + sx = 498 - sx; + sy = 240 - (16 * height) - sy; + flipx = !flipx; + flipy = !flipy; + } + + color |= m_palette_bank << 6; + + for (int y = 0; y <= height; y++) + { + m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect, + code + y, + color, + flipx, flipy, + sx, sy + (16 * (flipy ? (height - y) : y)), + screen.priority(), + pri, 15); + } + } +} + + +uint32_t dooyong_z80_ym2203_state::screen_update_lastday(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(m_palette->black_pen(), cliprect); + screen.priority().fill(0, cliprect); + + /* Text layer is offset on this machine */ + m_tx->set_scrolly(flip_screen() ? -8 : 8); + + m_bg->draw(screen, bitmap, cliprect, 0, 1); + m_fg->draw(screen, bitmap, cliprect, 0, 2); + m_tx->draw(screen, bitmap, cliprect, 0, 4); + + if (!m_sprites_disabled) + draw_sprites(screen, bitmap, cliprect); + + return 0; +} + +uint32_t dooyong_z80_ym2203_state::screen_update_gulfstrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(m_palette->black_pen(), cliprect); + screen.priority().fill(0, cliprect); + + /* Text layer is offset on this machine */ + m_tx->set_scrolly(flip_screen() ? -8 : 8); + + m_bg->draw(screen, bitmap, cliprect, 0, 1); + m_fg->draw(screen, bitmap, cliprect, 0, 2); + m_tx->draw(screen, bitmap, cliprect, 0, 4); + + draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT); + + return 0; +} + +uint32_t dooyong_z80_ym2203_state::screen_update_pollux(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(m_palette->black_pen(), cliprect); + screen.priority().fill(0, cliprect); + + m_bg->draw(screen, bitmap, cliprect, 0, 1); + m_fg->draw(screen, bitmap, cliprect, 0, 2); + m_tx->draw(screen, bitmap, cliprect, 0, 4); + + draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT | SPRITE_HEIGHT); + + return 0; +} + +uint32_t dooyong_z80_state::screen_update_flytiger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(m_palette->black_pen(), cliprect); + screen.priority().fill(0, cliprect); + + if (m_flytiger_pri) + { + m_fg->draw(screen, bitmap, cliprect, 0, 1); + m_bg->draw(screen, bitmap, cliprect, 0, 2); + } + else + { + m_bg->draw(screen, bitmap, cliprect, 0, 1); + m_fg->draw(screen, bitmap, cliprect, 0, 2); + } + m_tx->draw(screen, bitmap, cliprect, 0, 4); + + draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT | SPRITE_HEIGHT | SPRITE_YSHIFT_FLYTIGER); + + return 0; +} + + +uint32_t dooyong_z80_state::screen_update_bluehawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(m_palette->black_pen(), cliprect); + screen.priority().fill(0, cliprect); + + m_bg->draw(screen, bitmap, cliprect, 0, 1); + m_fg->draw(screen, bitmap, cliprect, 0, 2); + m_fg2->draw(screen, bitmap, cliprect, 0, 4); + m_tx->draw(screen, bitmap, cliprect, 0, 4); + + draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT | SPRITE_HEIGHT | SPRITE_YSHIFT_BLUEHAWK); + + return 0; +} + +uint32_t dooyong_z80_state::screen_update_primella(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(m_palette->black_pen(), cliprect); + + m_bg->draw(screen, bitmap, cliprect, 0, 0); + if (m_tx_pri) m_tx->draw(screen, bitmap, cliprect, 0, 0); + m_fg->draw(screen, bitmap, cliprect, 0, 0); + if (!m_tx_pri) m_tx->draw(screen, bitmap, cliprect, 0, 0); + + return 0; } -MACHINE_START_MEMBER(dooyong_z80_state, cpu_z80) + + +void dooyong_68k_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000); + /* Sprites take 8 16-bit words each in memory: + MSB LSB + [offs + 0] ???? ???? ???? ???E + [offs + 1] ???? ???? hhhh wwww + [offs + 2] ???? ???? ???? ???? + [offs + 3] cccc cccc cccc cccc + [offs + 4] ???? ???x xxxx xxxx + [offs + 5] ???? ???? ???? ???? + [offs + 6] ???? ???y yyyy yyyy + [offs + 7] ???? ???? ???? CCCC + ? = unused/unknown + E = enable + c = gfx code + x = x offset + y = y offset (signed) + C = color code + w = width + h = height */ + + uint16_t const *const buffered_spriteram = m_spriteram->buffer(); + for (int offs = (m_spriteram->bytes() / 2) - 8; offs >= 0; offs -= 8) + { + if (buffered_spriteram[offs] & 0x0001) /* enable */ + { + int code = buffered_spriteram[offs+3]; + int const color = buffered_spriteram[offs+7] & 0x000f; + //TODO: This priority mechanism works for known games, but seems a bit strange. + //Are we missing something? (The obvious spare palette bit isn't it.) + int const pri = (((color == 0x00) || (color == 0x0f)) ? 0xfc : 0xf0); + int const width = buffered_spriteram[offs+1] & 0x000f; + int const height = (buffered_spriteram[offs+1] & 0x00f0) >> 4; + + bool const flip = flip_screen(); + int sx = buffered_spriteram[offs+4] & 0x01ff; + int sy = (int16_t)buffered_spriteram[offs+6] & 0x01ff; + if (sy & 0x0100) sy |= ~(int)0x01ff; // Correctly sign-extend 9-bit number + if (flip) + { + sx = 498 - (16 * width) - sx; + sy = 240 - (16 * height) - sy; + } + + for (int y = 0; y <= height; y++) + { + int const _y = sy + (16 * (flip ? (height - y) : y)); + for (int x = 0; x <= width; x++) + { + int const _x = sx + (16 * (flip ? (width - x) : x)); + m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, + code, + color, + flip, flip, + _x, _y, + screen.priority(), + pri, 15); + code++; + } + } + } + } } -WRITE8_MEMBER(dooyong_z80_state::flip_screen_w) + +uint32_t rshark_state::screen_update_rshark(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - flip_screen_set(data); + bitmap.fill(m_palette->black_pen(), cliprect); + screen.priority().fill(0, cliprect); + + m_bg->draw(screen, bitmap, cliprect, 0, 1); + m_bg2->draw(screen, bitmap, cliprect, 0, (m_bg2_priority ? 2 : 1)); + m_fg->draw(screen, bitmap, cliprect, 0, 2); + m_fg2->draw(screen, bitmap, cliprect, 0, 2); + + draw_sprites(screen, bitmap, cliprect); + + return 0; } -MACHINE_RESET_MEMBER(dooyong_z80_ym2203_state, sound_ym2203) + +uint32_t popbingo_state::screen_update_popbingo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - m_interrupt_line_1 = 0; - m_interrupt_line_2 = 0; + bitmap.fill(m_palette->black_pen(), cliprect); + screen.priority().fill(0, cliprect); + + m_bg_bitmap.fill(m_palette->black_pen(), cliprect); + m_bg->draw(screen, m_bg_bitmap, cliprect, 0, 1); + + m_bg2_bitmap.fill(m_palette->black_pen(), cliprect); + m_bg2->draw(screen, m_bg2_bitmap, cliprect, 0, 1); + + for (int y = cliprect.min_y; cliprect.max_y >= y; y++) + { + uint16_t const *const bg_src(&m_bg_bitmap.pix16(y, 0)); + uint16_t const *const bg2_src(&m_bg2_bitmap.pix16(y, 0)); + uint16_t *const dst(&bitmap.pix16(y, 0)); + for (int x = cliprect.min_x; cliprect.max_x >= x; x++) + dst[x] = 0x100U | (bg_src[x] << 4) | bg2_src[x]; + } + + draw_sprites(screen, bitmap, cliprect); + + return 0; } + + /*************************************************************************** Memory Structure(s) ***************************************************************************/ -static ADDRESS_MAP_START( lastday_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) +ADDRESS_MAP_START( lastday_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w) @@ -132,7 +774,7 @@ static ADDRESS_MAP_START( lastday_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") ADDRESS_MAP_END -static ADDRESS_MAP_START( pollux_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) +ADDRESS_MAP_START( pollux_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xcfff) AM_RAM @@ -150,7 +792,7 @@ static ADDRESS_MAP_START( pollux_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) AM_RANGE(0xf800, 0xffff) AM_READWRITE(paletteram_flytiger_r, paletteram_flytiger_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( gulfstrm_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) +ADDRESS_MAP_START( gulfstrm_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xcfff) AM_RAM @@ -169,7 +811,7 @@ static ADDRESS_MAP_START( gulfstrm_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state AM_RANGE(0xf800, 0xffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") ADDRESS_MAP_END -static ADDRESS_MAP_START( bluehawk_map, AS_PROGRAM, 8, dooyong_z80_state ) +ADDRESS_MAP_START( bluehawk_map, AS_PROGRAM, 8, dooyong_z80_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSWA") @@ -189,7 +831,7 @@ static ADDRESS_MAP_START( bluehawk_map, AS_PROGRAM, 8, dooyong_z80_state ) AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( flytiger_map, AS_PROGRAM, 8, dooyong_z80_state ) +ADDRESS_MAP_START( flytiger_map, AS_PROGRAM, 8, dooyong_z80_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("spriteram") @@ -208,7 +850,7 @@ static ADDRESS_MAP_START( flytiger_map, AS_PROGRAM, 8, dooyong_z80_state ) AM_RANGE(0xf000, 0xffff) AM_READWRITE(lastday_tx_r, lastday_tx_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( primella_map, AS_PROGRAM, 8, dooyong_z80_state ) +ADDRESS_MAP_START( primella_map, AS_PROGRAM, 8, dooyong_z80_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xcfff) AM_RAM @@ -226,7 +868,7 @@ static ADDRESS_MAP_START( primella_map, AS_PROGRAM, 8, dooyong_z80_state ) AM_RANGE(0xfc08, 0xfc0f) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( rshark_map, AS_PROGRAM, 16, dooyong_68k_state ) +ADDRESS_MAP_START( rshark_map, AS_PROGRAM, 16, dooyong_68k_state ) ADDRESS_MAP_GLOBAL_MASK(0xfffff) /* super-x needs this and is similar */ AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x040000, 0x04cfff) AM_RAM @@ -244,7 +886,7 @@ static ADDRESS_MAP_START( rshark_map, AS_PROGRAM, 16, dooyong_68k_state ) AM_RANGE(0x0cc010, 0x0cc01f) AM_DEVWRITE8("fg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) ADDRESS_MAP_END -static ADDRESS_MAP_START( superx_map, AS_PROGRAM, 16, dooyong_68k_state ) +ADDRESS_MAP_START( superx_map, AS_PROGRAM, 16, dooyong_68k_state ) ADDRESS_MAP_GLOBAL_MASK(0xfffff) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x0d0000, 0x0dcfff) AM_RAM @@ -262,7 +904,7 @@ static ADDRESS_MAP_START( superx_map, AS_PROGRAM, 16, dooyong_68k_state ) AM_RANGE(0x08c010, 0x08c01f) AM_DEVWRITE8("fg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) ADDRESS_MAP_END -static ADDRESS_MAP_START( popbingo_map, AS_PROGRAM, 16, dooyong_68k_state ) +ADDRESS_MAP_START( popbingo_map, AS_PROGRAM, 16, dooyong_68k_state ) ADDRESS_MAP_GLOBAL_MASK(0xfffff) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x040000, 0x04cfff) AM_RAM @@ -282,7 +924,7 @@ static ADDRESS_MAP_START( popbingo_map, AS_PROGRAM, 16, dooyong_68k_state ) AM_RANGE(0x0dc000, 0x0dc01f) AM_RAM // registers of some kind? ADDRESS_MAP_END -static ADDRESS_MAP_START( lastday_sound_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) +ADDRESS_MAP_START( lastday_sound_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) @@ -290,7 +932,7 @@ static ADDRESS_MAP_START( lastday_sound_map, AS_PROGRAM, 8, dooyong_z80_ym2203_s AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym2", ym2203_device, read, write) ADDRESS_MAP_END -static ADDRESS_MAP_START( pollux_sound_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) +ADDRESS_MAP_START( pollux_sound_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) AM_RANGE(0x0000, 0xefff) AM_ROM AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) @@ -298,7 +940,7 @@ static ADDRESS_MAP_START( pollux_sound_map, AS_PROGRAM, 8, dooyong_z80_ym2203_st AM_RANGE(0xf804, 0xf805) AM_DEVREADWRITE("ym2", ym2203_device, read, write) ADDRESS_MAP_END -static ADDRESS_MAP_START( bluehawk_sound_map, AS_PROGRAM, 8, dooyong_state ) +ADDRESS_MAP_START( bluehawk_sound_map, AS_PROGRAM, 8, dooyong_state ) AM_RANGE(0x0000, 0xefff) AM_ROM AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) @@ -312,7 +954,7 @@ ADDRESS_MAP_END ***************************************************************************/ -static INPUT_PORTS_START( dooyongz80_generic ) +INPUT_PORTS_START( dooyongz80_generic ) PORT_START("DSWA") PORT_SERVICE_DIPLOC( 0x01, IP_ACTIVE_LOW, "SWA:1" ) PORT_DIPNAME( 0x02, 0x02, "Coin Type" ) PORT_DIPLOCATION("SWA:2") @@ -398,7 +1040,7 @@ INPUT_PORTS_END ***************************************************************************/ -static INPUT_PORTS_START( dooyongm68_generic ) +INPUT_PORTS_START( dooyongm68_generic ) PORT_START("DSW") PORT_SERVICE_DIPLOC( 0x01, IP_ACTIVE_LOW, "SWA:1" ) PORT_DIPNAME( 0x0002, 0x0002, "Coin Type" ) PORT_DIPLOCATION("SWA:2") @@ -480,7 +1122,7 @@ INPUT_PORTS_END ***************************************************************************/ -static INPUT_PORTS_START( lastday ) +INPUT_PORTS_START( lastday ) PORT_INCLUDE( dooyongz80_generic ) PORT_MODIFY("DSWB") @@ -504,7 +1146,7 @@ static INPUT_PORTS_START( lastday ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) INPUT_PORTS_END -static INPUT_PORTS_START( gulfstrm ) +INPUT_PORTS_START( gulfstrm ) PORT_INCLUDE( dooyongz80_generic ) PORT_MODIFY("DSWB") @@ -528,7 +1170,7 @@ static INPUT_PORTS_START( gulfstrm ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END -static INPUT_PORTS_START( pollux ) +INPUT_PORTS_START( pollux ) PORT_INCLUDE( dooyongz80_generic ) PORT_MODIFY("SYSTEM") @@ -542,11 +1184,11 @@ static INPUT_PORTS_START( pollux ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END -static INPUT_PORTS_START( bluehawk ) +INPUT_PORTS_START( bluehawk ) PORT_INCLUDE( dooyongz80_generic ) INPUT_PORTS_END -static INPUT_PORTS_START( flytiger ) +INPUT_PORTS_START( flytiger ) PORT_INCLUDE( dooyongz80_generic ) PORT_MODIFY("DSWB") @@ -558,7 +1200,7 @@ static INPUT_PORTS_START( flytiger ) // PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") // allows title screen + ending screen colours to cycle (but I'm not sure they're meant to, reference shots suggest not, maybe a debug port?) INPUT_PORTS_END -static INPUT_PORTS_START( sadari ) +INPUT_PORTS_START( sadari ) PORT_INCLUDE( dooyongz80_generic ) PORT_MODIFY("DSWB") @@ -575,7 +1217,7 @@ static INPUT_PORTS_START( sadari ) PORT_DIPSETTING( 0x00, DEF_STR( Asia ) ) INPUT_PORTS_END -static INPUT_PORTS_START( primella ) +INPUT_PORTS_START( primella ) PORT_INCLUDE( dooyongz80_generic ) PORT_MODIFY("DSWB") @@ -589,7 +1231,7 @@ static INPUT_PORTS_START( primella ) PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) INPUT_PORTS_END -static INPUT_PORTS_START( rshark ) +INPUT_PORTS_START( rshark ) PORT_INCLUDE( dooyongm68_generic ) PORT_MODIFY("DSW") @@ -604,7 +1246,7 @@ static INPUT_PORTS_START( rshark ) PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSW", 0x0002, NOTEQUALS, 0x0002) INPUT_PORTS_END -static INPUT_PORTS_START( superx ) +INPUT_PORTS_START( superx ) PORT_INCLUDE( dooyongm68_generic ) PORT_MODIFY("DSW") /* In documentation this switch enables "service mode" but it never had any effect in game */ @@ -613,7 +1255,7 @@ static INPUT_PORTS_START( superx ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END -static INPUT_PORTS_START( popbingo ) +INPUT_PORTS_START( popbingo ) PORT_INCLUDE( dooyongm68_generic ) PORT_MODIFY("DSW") @@ -636,7 +1278,7 @@ INPUT_PORTS_END ***************************************************************************/ -static const gfx_layout lastday_charlayout = +const gfx_layout lastday_charlayout = { 8,8, RGN_FRAC(1,2), @@ -647,7 +1289,7 @@ static const gfx_layout lastday_charlayout = 16*8 }; -static const gfx_layout bluehawk_charlayout = +const gfx_layout bluehawk_charlayout = { 8,8, RGN_FRAC(1,1), @@ -658,7 +1300,7 @@ static const gfx_layout bluehawk_charlayout = 32*8 }; -static const gfx_layout tilelayout = +const gfx_layout tilelayout = { 32,32, RGN_FRAC(1,1), @@ -675,7 +1317,7 @@ static const gfx_layout tilelayout = 512*8 }; -static const gfx_layout spritelayout = +const gfx_layout spritelayout = { 16,16, RGN_FRAC(1,1), @@ -688,7 +1330,7 @@ static const gfx_layout spritelayout = 128*8 }; -static const gfx_layout rshark_spritelayout = +const gfx_layout rshark_spritelayout = { 16,16, RGN_FRAC(1,1), @@ -701,21 +1343,21 @@ static const gfx_layout rshark_spritelayout = 128*8 }; -static GFXDECODE_START( lastday ) +GFXDECODE_START( lastday ) GFXDECODE_ENTRY( "gfx1", 0, lastday_charlayout, 0, 16+64 ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 16+64 ) GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 768, 16+64 ) GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 512, 16+64 ) GFXDECODE_END -static GFXDECODE_START( flytiger ) +GFXDECODE_START( flytiger ) GFXDECODE_ENTRY( "gfx1", 0, lastday_charlayout, 0, 16+64 ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 16+64 ) GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 768, 16+64 ) GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 512, 32+64 ) GFXDECODE_END -static GFXDECODE_START( bluehawk ) +GFXDECODE_START( bluehawk ) GFXDECODE_ENTRY( "gfx1", 0, bluehawk_charlayout, 0, 16 ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 16 ) GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 768, 16 ) @@ -723,14 +1365,14 @@ static GFXDECODE_START( bluehawk ) GFXDECODE_ENTRY( "gfx5", 0, tilelayout, 0, 16 ) GFXDECODE_END -static GFXDECODE_START( primella ) +GFXDECODE_START( primella ) GFXDECODE_ENTRY( "gfx1", 0, bluehawk_charlayout, 0, 16 ) /* no sprites */ GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 768, 16 ) GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 512, 16 ) GFXDECODE_END -static GFXDECODE_START( rshark ) +GFXDECODE_START( rshark ) /* no chars */ GFXDECODE_ENTRY( "gfx1", 0, rshark_spritelayout, 0, 16 ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 16 ) @@ -739,7 +1381,7 @@ static GFXDECODE_START( rshark ) GFXDECODE_ENTRY( "gfx5", 0, spritelayout, 1024, 16 ) GFXDECODE_END -static GFXDECODE_START( popbingo ) +GFXDECODE_START( popbingo ) /* no chars */ GFXDECODE_ENTRY( "gfx1", 0, rshark_spritelayout, 0, 16 ) GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 1 ) @@ -771,7 +1413,7 @@ WRITE_LINE_MEMBER(dooyong_z80_ym2203_state::irqhandler_2203_2) ***************************************************************************/ -static MACHINE_CONFIG_FRAGMENT( sound_2203 ) +MACHINE_CONFIG_FRAGMENT( sound_2203 ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_GENERIC_LATCH_8_ADD("soundlatch") @@ -787,7 +1429,7 @@ static MACHINE_CONFIG_FRAGMENT( sound_2203 ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MACHINE_CONFIG_END -static MACHINE_CONFIG_FRAGMENT( sound_2151 ) +MACHINE_CONFIG_FRAGMENT( sound_2151 ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_GENERIC_LATCH_8_ADD("soundlatch") @@ -797,11 +1439,11 @@ static MACHINE_CONFIG_FRAGMENT( sound_2151 ) MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", XTAL_1MHz, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_FRAGMENT( sound_2151_4mhz ) +MACHINE_CONFIG_FRAGMENT( sound_2151_4mhz ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_GENERIC_LATCH_8_ADD("soundlatch") @@ -811,11 +1453,11 @@ static MACHINE_CONFIG_FRAGMENT( sound_2151_4mhz ) MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* 1MHz (16MHz/16 for most, 8Mhz/8 for Super-X) */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* 1MHz (16MHz/16 for most, 8Mhz/8 for Super-X) */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lastday, dooyong_z80_ym2203_state ) +MACHINE_CONFIG_START( lastday ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* 8MHz verified for Last Day / D-day */ @@ -838,7 +1480,7 @@ static MACHINE_CONFIG_START( lastday, dooyong_z80_ym2203_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_ym2203_state, screen_update_lastday) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", lastday) @@ -868,7 +1510,7 @@ static MACHINE_CONFIG_START( lastday, dooyong_z80_ym2203_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gulfstrm, dooyong_z80_ym2203_state ) +MACHINE_CONFIG_START( gulfstrm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 8000000) /* ??? */ @@ -890,7 +1532,7 @@ static MACHINE_CONFIG_START( gulfstrm, dooyong_z80_ym2203_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_ym2203_state, screen_update_gulfstrm) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", lastday) @@ -907,7 +1549,7 @@ static MACHINE_CONFIG_START( gulfstrm, dooyong_z80_ym2203_state ) MCFG_FRAGMENT_ADD( sound_2203 ) /* 3.579545MHz */ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pollux, dooyong_z80_ym2203_state ) +MACHINE_CONFIG_START( pollux ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* 8Mhz */ @@ -929,7 +1571,7 @@ static MACHINE_CONFIG_START( pollux, dooyong_z80_ym2203_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_ym2203_state, screen_update_pollux) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", lastday) @@ -946,7 +1588,7 @@ static MACHINE_CONFIG_START( pollux, dooyong_z80_ym2203_state ) MCFG_FRAGMENT_ADD( sound_2203 ) /* 3.579545MHz or 4Mhz ??? */ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bluehawk, dooyong_z80_state ) +MACHINE_CONFIG_START( bluehawk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 8000000) /* ??? */ @@ -967,7 +1609,7 @@ static MACHINE_CONFIG_START( bluehawk, dooyong_z80_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_state, screen_update_bluehawk) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", bluehawk) @@ -986,7 +1628,7 @@ static MACHINE_CONFIG_START( bluehawk, dooyong_z80_state ) MCFG_FRAGMENT_ADD( sound_2151 ) /* 3.579545MHz or 4Mhz ??? */ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( flytiger, dooyong_z80_state ) +MACHINE_CONFIG_START( flytiger ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* 8MHz */ @@ -1007,7 +1649,7 @@ static MACHINE_CONFIG_START( flytiger, dooyong_z80_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_state, screen_update_flytiger) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", flytiger) @@ -1025,7 +1667,7 @@ static MACHINE_CONFIG_START( flytiger, dooyong_z80_state ) MCFG_FRAGMENT_ADD( sound_2151 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( primella, dooyong_z80_state ) +MACHINE_CONFIG_START( primella ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* 8MHz */ @@ -1075,7 +1717,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(dooyong_68k_state::scanline) } -static MACHINE_CONFIG_START( dooyong_68k, rshark_state ) +MACHINE_CONFIG_START( dooyong_68k ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) // 8MHz measured on Super-X @@ -1093,7 +1735,7 @@ static MACHINE_CONFIG_START( dooyong_68k, rshark_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(rshark_state, screen_update_rshark) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", rshark) @@ -1114,17 +1756,17 @@ static MACHINE_CONFIG_START( dooyong_68k, rshark_state ) MCFG_FRAGMENT_ADD(sound_2151_4mhz) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( rshark, dooyong_68k ) +MACHINE_CONFIG_DERIVED( rshark, dooyong_68k ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(rshark_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( superx, dooyong_68k ) +MACHINE_CONFIG_DERIVED( superx, dooyong_68k ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(superx_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( popbingo, popbingo_state ) +MACHINE_CONFIG_START( popbingo ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) // 10MHz measured @@ -1143,7 +1785,7 @@ static MACHINE_CONFIG_START( popbingo, popbingo_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(popbingo_state, screen_update_popbingo) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", popbingo) @@ -1161,6 +1803,8 @@ static MACHINE_CONFIG_START( popbingo, popbingo_state ) MCFG_FRAGMENT_ADD(sound_2151_4mhz) MACHINE_CONFIG_END +} // anonymous namespace + /*************************************************************************** @@ -2092,35 +2736,35 @@ ROM_END /* The differences between the two lastday sets are only in the sound program and graphics. The main program is the same. */ -GAME( 1990, lastday, 0, lastday, lastday, driver_device, 0, ROT270, "Dooyong", "The Last Day (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, lastdaya, lastday, lastday, lastday, driver_device, 0, ROT270, "Dooyong", "The Last Day (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ddaydoo, lastday, lastday, lastday, driver_device, 0, ROT270, "Dooyong", "Chulgyeok D-Day (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, lastday, 0, lastday, lastday, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "The Last Day (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, lastdaya, lastday, lastday, lastday, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "The Last Day (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ddaydoo, lastday, lastday, lastday, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "Chulgyeok D-Day (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, gulfstrm, 0, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, gulfstrma,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, gulfstrmb,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, gulfstrmm,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong (Media Shoji license)", "Gulf Storm (Media Shoji)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, gulfstrmk,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, gulfstrm, 0, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "Gulf Storm (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, gulfstrma,gulfstrm, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "Gulf Storm (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, gulfstrmb,gulfstrm, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "Gulf Storm (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, gulfstrmm,gulfstrm, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong (Media Shoji license)", "Gulf Storm (Media Shoji)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, gulfstrmk,gulfstrm, gulfstrm, gulfstrm, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "Gulf Storm (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, pollux, 0, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, polluxa, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, polluxa2, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 3)", MACHINE_SUPPORTS_SAVE ) // Original Dooyong Board distributed by TCH -GAME( 1991, polluxn, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong (NTC / Atlus license)", "Pollux (Japan, NTC license, distributed by Atlus)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, pollux, 0, pollux, pollux, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "Pollux (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, polluxa, pollux, pollux, pollux, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "Pollux (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, polluxa2, pollux, pollux, pollux, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong", "Pollux (set 3)", MACHINE_SUPPORTS_SAVE ) // Original Dooyong Board distributed by TCH +GAME( 1991, polluxn, pollux, pollux, pollux, dooyong_z80_ym2203_state, 0, ROT270, "Dooyong (NTC / Atlus license)", "Pollux (Japan, NTC license, distributed by Atlus)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, flytiger, 0, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, flytigera,flytiger, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, flytiger, 0, flytiger, flytiger, dooyong_z80_state, 0, ROT270, "Dooyong", "Flying Tiger (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, flytigera,flytiger, flytiger, flytiger, dooyong_z80_state, 0, ROT270, "Dooyong", "Flying Tiger (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, bluehawk, 0, bluehawk, bluehawk, driver_device, 0, ROT270, "Dooyong", "Blue Hawk", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, bluehawkn,bluehawk, bluehawk, bluehawk, driver_device, 0, ROT270, "Dooyong (NTC license)", "Blue Hawk (NTC)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, bluehawk, 0, bluehawk, bluehawk, dooyong_z80_state, 0, ROT270, "Dooyong", "Blue Hawk", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, bluehawkn,bluehawk, bluehawk, bluehawk, dooyong_z80_state, 0, ROT270, "Dooyong (NTC license)", "Blue Hawk (NTC)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, sadari, 0, primella, sadari, driver_device, 0, ROT0, "Dooyong (NTC license)", "Sadari", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, sadari, 0, primella, sadari, dooyong_z80_state, 0, ROT0, "Dooyong (NTC license)", "Sadari", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, gundl94, 0, primella, primella, driver_device, 0, ROT0, "Dooyong", "Gun Dealer '94", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, primella, gundl94, primella, primella, driver_device, 0, ROT0, "Dooyong (NTC license)", "Primella", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, gundl94, 0, primella, primella, dooyong_z80_state, 0, ROT0, "Dooyong", "Gun Dealer '94", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, primella, gundl94, primella, primella, dooyong_z80_state, 0, ROT0, "Dooyong (NTC license)", "Primella", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, superx, 0, superx, superx, driver_device, 0, ROT270, "Dooyong (NTC license)", "Super-X (NTC)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, superxm, superx, superx, superx, driver_device, 0, ROT270, "Dooyong (Mitchell license)", "Super-X (Mitchell)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, superx, 0, superx, superx, rshark_state, 0, ROT270, "Dooyong (NTC license)", "Super-X (NTC)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, superxm, superx, superx, superx, rshark_state, 0, ROT270, "Dooyong (Mitchell license)", "Super-X (Mitchell)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, rshark, 0, rshark, rshark, driver_device, 0, ROT270, "Dooyong", "R-Shark", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, rshark, 0, rshark, rshark, rshark_state, 0, ROT270, "Dooyong", "R-Shark", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, popbingo, 0, popbingo, popbingo, driver_device, 0, ROT0, "Dooyong", "Pop Bingo", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, popbingo, 0, popbingo, popbingo, popbingo_state, 0, ROT0, "Dooyong", "Pop Bingo", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dorachan.cpp b/src/mame/drivers/dorachan.cpp index 0d53cd09e56..2f025a98ee1 100644 --- a/src/mame/drivers/dorachan.cpp +++ b/src/mame/drivers/dorachan.cpp @@ -200,7 +200,7 @@ void dorachan_state::machine_reset() m_flip_screen = 0; } -static MACHINE_CONFIG_START( dorachan, dorachan_state ) +static MACHINE_CONFIG_START( dorachan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2000000) @@ -254,4 +254,4 @@ ROM_END * *************************************/ -GAME( 1980, dorachan, 0, dorachan, dorachan, driver_device, 0, ROT270, "Alpha Denshi Co. / Craul Denshi", "Dora-chan (Japan)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, dorachan, 0, dorachan, dorachan, dorachan_state, 0, ROT270, "Alpha Denshi Co. / Craul Denshi", "Dora-chan (Japan)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dotrikun.cpp b/src/mame/drivers/dotrikun.cpp index 76441f045b5..08a76d4747e 100644 --- a/src/mame/drivers/dotrikun.cpp +++ b/src/mame/drivers/dotrikun.cpp @@ -185,7 +185,7 @@ void dotrikun_state::machine_reset() m_color = 0; } -static MACHINE_CONFIG_START( dotrikun, dotrikun_state ) +static MACHINE_CONFIG_START( dotrikun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) @@ -224,5 +224,5 @@ ROM_START( dotrikun2 ) ROM_END -GAMEL(1990, dotrikun, 0, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (new version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW, layout_dotrikun ) -GAMEL(1990, dotrikun2, dotrikun, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (old version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW, layout_dotrikun ) +GAMEL(1990, dotrikun, 0, dotrikun, dotrikun, dotrikun_state, 0, ROT0, "Sega", "Dottori Kun (new version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW, layout_dotrikun ) +GAMEL(1990, dotrikun2, dotrikun, dotrikun, dotrikun, dotrikun_state, 0, ROT0, "Sega", "Dottori Kun (old version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW, layout_dotrikun ) diff --git a/src/mame/drivers/dps1.cpp b/src/mame/drivers/dps1.cpp index cd0f3e04f7f..b961f1d29ef 100644 --- a/src/mame/drivers/dps1.cpp +++ b/src/mame/drivers/dps1.cpp @@ -43,7 +43,7 @@ public: DECLARE_WRITE_LINE_MEMBER(fdc_drq_w); DECLARE_DRIVER_INIT(dps1); DECLARE_MACHINE_RESET(dps1); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); private: bool m_dma_dir; @@ -201,7 +201,7 @@ DRIVER_INIT_MEMBER( dps1_state, dps1 ) static INPUT_PORTS_START( dps1 ) INPUT_PORTS_END -WRITE8_MEMBER( dps1_state::kbd_put ) +void dps1_state::kbd_put(u8 data) { m_term_data = data; } @@ -210,7 +210,7 @@ static SLOT_INTERFACE_START( floppies ) SLOT_INTERFACE( "floppy0", FLOPPY_8_DSDD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( dps1, dps1_state ) +static MACHINE_CONFIG_START( dps1 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(dps1_mem) @@ -219,7 +219,7 @@ static MACHINE_CONFIG_START( dps1, dps1_state ) /* video hardware */ MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(dps1_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(dps1_state, kbd_put)) // floppy MCFG_UPD765A_ADD("fdc", false, true) diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp index 9c267fe9201..7e12cc894e0 100644 --- a/src/mame/drivers/dragon.cpp +++ b/src/mame/drivers/dragon.cpp @@ -16,6 +16,7 @@ #include "cpu/m6809/m6809.h" #include "bus/coco/coco_232.h" #include "bus/coco/coco_orch90.h" +#include "bus/coco/coco_gmc.h" #include "bus/coco/coco_pak.h" #include "bus/coco/coco_fdc.h" #include "bus/coco/coco_multi.h" @@ -36,7 +37,6 @@ static ADDRESS_MAP_START( dragon_mem, AS_PROGRAM, 8, dragon_state ) ADDRESS_MAP_END - //************************************************************************** // INPUT PORTS //************************************************************************** @@ -52,7 +52,7 @@ ADDRESS_MAP_END PA1: 8 9 : ; , - . / PA0: 0 1 2 3 4 5 6 7 */ -static INPUT_PORTS_START( dragon32 ) +static INPUT_PORTS_START( dragon_keyboard ) PORT_START("row0") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, dragon_state, keyboard_changed, nullptr) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, dragon_state, keyboard_changed, nullptr) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') @@ -121,7 +121,18 @@ static INPUT_PORTS_START( dragon32 ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, dragon_state, keyboard_changed, nullptr) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) INPUT_PORTS_END -static SLOT_INTERFACE_START(dragon_cart) +static INPUT_PORTS_START( dragon ) + PORT_INCLUDE(dragon_keyboard) + PORT_INCLUDE(coco_joystick) + PORT_INCLUDE(coco_analog_control) +INPUT_PORTS_END + +MC6847_GET_CHARROM_MEMBER( dragon200e_state::char_rom_r ) +{ + return m_char_rom->base()[(ch * 12 + line) & 0xfff]; +} + +SLOT_INTERFACE_START( dragon_cart ) SLOT_INTERFACE("dragon_fdc", DRAGON_FDC) SLOT_INTERFACE("sdtandy_fdc", SDTANDY_FDC) SLOT_INTERFACE("pak", COCO_PAK) @@ -132,18 +143,16 @@ FLOPPY_FORMATS_MEMBER( dragon_alpha_state::dragon_formats ) FLOPPY_DMK_FORMAT FLOPPY_FORMATS_END -static SLOT_INTERFACE_START( dragon_floppies ) - SLOT_INTERFACE("sssd", FLOPPY_525_SSSD) - SLOT_INTERFACE("sd", FLOPPY_525_SD) - SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD) - SLOT_INTERFACE("dd", FLOPPY_525_DD) - SLOT_INTERFACE("ssqd", FLOPPY_525_SSQD) - SLOT_INTERFACE("qd", FLOPPY_525_QD) +static SLOT_INTERFACE_START( dragon_alpha_floppies ) + SLOT_INTERFACE("dd", FLOPPY_35_DD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( dragon_base, dragon_state ) +static MACHINE_CONFIG_START( dragon_base ) + MCFG_DEVICE_MODIFY(":") + MCFG_DEVICE_CLOCK(XTAL_4_433619MHz) + // basic machine hardware - MCFG_CPU_ADD("maincpu", M6809E, XTAL_4_433619MHz) + MCFG_CPU_ADD("maincpu", M6809E, DERIVED_CLOCK(1, 1)) MCFG_CPU_PROGRAM_MAP(dragon_mem) // devices @@ -170,6 +179,7 @@ static MACHINE_CONFIG_START( dragon_base, dragon_state ) MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_FORMATS(coco_cassette_formats) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED) + MCFG_CASSETTE_INTERFACE("dragon_cass") MCFG_DEVICE_ADD(PRINTER_TAG, PRINTER, 0) @@ -183,6 +193,12 @@ static MACHINE_CONFIG_START( dragon_base, dragon_state ) // sound hardware MCFG_FRAGMENT_ADD( coco_sound ) + + // software lists + MCFG_SOFTWARE_LIST_ADD("dragon_cart_list", "dragon_cart") + MCFG_SOFTWARE_LIST_ADD("dragon_cass_list", "dragon_cass") + MCFG_SOFTWARE_LIST_ADD("dragon_flop_list", "dragon_flop") + MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("coco_cart_list", "coco_cart") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dragon32, dragon_base ) @@ -198,7 +214,7 @@ static MACHINE_CONFIG_DERIVED( dragon32, dragon_base ) MCFG_COCO_CARTRIDGE_HALT_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_HALT)) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( dragon64, dragon_base, dragon64_state ) +static MACHINE_CONFIG_DERIVED( dragon64, dragon_base ) // internal ram MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("64K") @@ -212,25 +228,49 @@ static MACHINE_CONFIG_DERIVED_CLASS( dragon64, dragon_base, dragon64_state ) // acia MCFG_DEVICE_ADD("acia", MOS6551, 0) MCFG_MOS6551_XTAL(XTAL_1_8432MHz) + + // software lists + MCFG_SOFTWARE_LIST_ADD("dragon_flex_list", "dragon_flex") + MCFG_SOFTWARE_LIST_ADD("dragon_os9_list", "dragon_os9") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( d64plus, dragon_base, dragon64_state ) +static MACHINE_CONFIG_DERIVED( dragon200e, dragon64 ) + // video hardware + MCFG_DEVICE_MODIFY(VDG_TAG) + MCFG_MC6847_CHARROM_CALLBACK(dragon200e_state, char_rom_r) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( d64plus, dragon64 ) // internal ram - MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_MODIFY(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("128K") - // cartridge - MCFG_COCO_CARTRIDGE_ADD(CARTRIDGE_TAG, dragon_cart, "dragon_fdc") - MCFG_COCO_CARTRIDGE_CART_CB(WRITELINE(coco_state, cart_w)) - MCFG_COCO_CARTRIDGE_NMI_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_NMI)) - MCFG_COCO_CARTRIDGE_HALT_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_HALT)) - - // acia - MCFG_DEVICE_ADD("acia", MOS6551, 0) - MCFG_MOS6551_XTAL(XTAL_1_8432MHz) + // video hardware + MCFG_SCREEN_ADD("plus_screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(640, 240) + MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1) + MCFG_SCREEN_UPDATE_DEVICE("hd6845", hd6845_device, screen_update) + + // crtc + MCFG_MC6845_ADD("hd6845", HD6845, "plus_screen", 1000000) + MCFG_MC6845_SHOW_BORDER_AREA(false) + MCFG_MC6845_CHAR_WIDTH(8) + + // TODO: + // $FFE0 6845 control register + // $FFE1 6845 data register + // $FFE2 memory bank register - swaps lower memory banks between the standard dragon memory and the + // three additional memory banks (A, B, C): + // 0x00 standard Dragon 32 bank + // 0x01 Bank C - 2k RAM (videoram) + // 0x02 Bank A - 32k RAM (ram offset 0x10000) + // 0x06 Bank B - 32k RAM (ram offset 0x18000) + // MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( dgnalpha, dragon_base, dragon_alpha_state ) +static MACHINE_CONFIG_DERIVED( dgnalpha, dragon_base ) // internal ram MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("64K") @@ -250,10 +290,14 @@ static MACHINE_CONFIG_DERIVED_CLASS( dgnalpha, dragon_base, dragon_alpha_state ) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(dragon_alpha_state, fdc_intrq_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(dragon_alpha_state, fdc_drq_w)) - MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", dragon_floppies, "qd", dragon_alpha_state::dragon_formats) - MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", dragon_floppies, "qd", dragon_alpha_state::dragon_formats) - MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":2", dragon_floppies, "qd", dragon_alpha_state::dragon_formats) - MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":3", dragon_floppies, "qd", dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":2", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":3", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) // sound hardware MCFG_SOUND_ADD(AY8912_TAG, AY8912, 1000000) @@ -266,9 +310,18 @@ static MACHINE_CONFIG_DERIVED_CLASS( dgnalpha, dragon_base, dragon_alpha_state ) MCFG_PIA_WRITEPA_HANDLER(WRITE8(dragon_alpha_state, pia2_pa_w)) MCFG_PIA_IRQA_HANDLER(WRITELINE(dragon_alpha_state, pia2_firq_a)) MCFG_PIA_IRQB_HANDLER(WRITELINE(dragon_alpha_state, pia2_firq_b)) + + // software lists + MCFG_SOFTWARE_LIST_ADD("dgnalpha_flop_list", "dgnalpha_flop") + MCFG_SOFTWARE_LIST_ADD("dragon_flex_list", "dragon_flex") + MCFG_SOFTWARE_LIST_ADD("dragon_os9_list", "dragon_os9") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( tanodr64, dragon64 ) + // video hardware + MCFG_SCREEN_MODIFY(SCREEN_TAG) + MCFG_SCREEN_REFRESH_RATE(60) + // cartridge MCFG_DEVICE_MODIFY(CARTRIDGE_TAG) MCFG_DEVICE_SLOT_INTERFACE(dragon_cart, "sdtandy_fdc", false) @@ -303,14 +356,19 @@ ROM_START(dragon200e) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) ROM_LOAD( "ic18_v1.4e.ic34", 0x0000, 0x4000, CRC(95af0a0a) SHA1(628543ee8b47a56df2b2175cfb763c0051517b90)) ROM_LOAD( "ic17_v1.4e.ic37", 0x8000, 0x4000, CRC(48b985df) SHA1(c25632f3c2cfd1af3ee26b2f233a1ce1eccc365d)) - ROM_REGION( 0x1000, "gfx", ROMREGION_ERASEFF ) + ROM_REGION( 0x1000, "chargen", 0 ) ROM_LOAD( "rom26.ic1", 0x0000, 0x1000, CRC(565724bc) SHA1(da5b756ba2a9c9ecebaa7daa8ba8bfd984d56a6f)) ROM_END ROM_START(d64plus) ROM_REGION(0x10000,"maincpu",0) - ROM_LOAD("d64_1.rom", 0x0000, 0x4000, CRC(60a4634c) SHA1(f119506eaa3b4b70b9aa0dd83761e8cbe043d042)) - ROM_LOAD("d64_2.rom", 0x8000, 0x4000, CRC(17893a42) SHA1(e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e)) + ROM_LOAD("d64_1.rom", 0x0000, 0x4000, CRC(60a4634c) SHA1(f119506eaa3b4b70b9aa0dd83761e8cbe043d042)) + ROM_LOAD("d64_2.rom", 0x8000, 0x4000, CRC(17893a42) SHA1(e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e)) + ROM_REGION(0x0200, "prom", 0) + ROM_LOAD("n82s147an.ic12", 0x0000, 0x0200, CRC(92b6728d) SHA1(bcf7c60c4e5608a58587044458d9cacaca4568aa)) + ROM_REGION(0x2000, "chargen", 0) + ROM_LOAD("chargen.ic22", 0x0000, 0x2000, CRC(514f1450) SHA1(956c99fcca1b52e79bb5d91dbafc817c992e324a)) + ROM_REGION(0x0800, "videoram", ROMREGION_ERASE) ROM_END ROM_START(tanodr64) @@ -321,15 +379,19 @@ ROM_END ROM_START(dgnalpha) ROM_REGION(0x10000,"maincpu",0) - ROM_LOAD("alpha_bt.rom", 0x2000, 0x2000, CRC(c3dab585) SHA1(4a5851aa66eb426e9bb0bba196f1e02d48156068)) + ROM_DEFAULT_BIOS("boot10") + ROM_SYSTEM_BIOS(0, "boot10", "Boot v1.0") + ROMX_LOAD("alpha_bt_10.rom", 0x2000, 0x2000, CRC(c3dab585) SHA1(4a5851aa66eb426e9bb0bba196f1e02d48156068), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(1, "boot04", "Boot v0.4") + ROMX_LOAD("alpha_bt_04.rom", 0x2000, 0x2000, CRC(d6172b56) SHA1(69ea376dbc7418f69e9e809b448d22a4de012344), ROM_BIOS(2)) ROM_LOAD("alpha_ba.rom", 0x8000, 0x4000, CRC(84f68bf9) SHA1(1983b4fb398e3dd9668d424c666c5a0b3f1e2b69)) ROM_END - -COMP( 1982, dragon32, coco, 0, dragon32, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 32", 0) -COMP( 1983, dragon64, coco, 0, dragon64, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 64", 0) -COMP( 1983, dragon200, coco, 0, dragon64, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 200", 0) -COMP( 1983, dragon200e, coco, 0, dragon64, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 200-E", 0) -COMP( 1983, d64plus, coco, 0, d64plus, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 64 Plus", 0) -COMP( 1983, tanodr64, coco, 0, tanodr64, dragon32, driver_device, 0, "Dragon Data Ltd / Tano Ltd", "Tano Dragon 64 (NTSC)", 0) -COMP( 1984, dgnalpha, coco, 0, dgnalpha, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon Alpha Prototype", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, dragon32, 0, 0, dragon32, dragon, dragon_state, 0, "Dragon Data Ltd", "Dragon 32", 0 ) +COMP( 1983, dragon64, dragon32, 0, dragon64, dragon, dragon64_state, 0, "Dragon Data Ltd", "Dragon 64", 0 ) +COMP( 1985, dragon200, dragon32, 0, dragon64, dragon, dragon64_state, 0, "Eurohard S.A.", "Dragon 200", 0 ) +COMP( 1985, dragon200e, dragon32, 0, dragon200e, dragon, dragon200e_state, 0, "Eurohard S.A.", "Dragon 200-E", MACHINE_NOT_WORKING ) +COMP( 1985, d64plus, dragon32, 0, d64plus, dragon, d64plus_state, 0, "Dragon Data Ltd / Compusense", "Dragon 64 Plus", MACHINE_NOT_WORKING ) +COMP( 1983, tanodr64, dragon32, 0, tanodr64, dragon, dragon64_state, 0, "Dragon Data Ltd / Tano Ltd", "Tano Dragon 64 (NTSC)", 0 ) +COMP( 1984, dgnalpha, dragon32, 0, dgnalpha, dragon, dragon_alpha_state, 0, "Dragon Data Ltd", "Dragon Professional (Alpha)", 0 ) diff --git a/src/mame/drivers/dragrace.cpp b/src/mame/drivers/dragrace.cpp index 07c40176dd5..663c2687ebc 100644 --- a/src/mame/drivers/dragrace.cpp +++ b/src/mame/drivers/dragrace.cpp @@ -325,7 +325,7 @@ void dragrace_state::machine_reset() m_gear[1] = 0; } -static MACHINE_CONFIG_START( dragrace, dragrace_state ) +static MACHINE_CONFIG_START( dragrace ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_12_096MHz / 12) @@ -381,4 +381,4 @@ ROM_START( dragrace ) ROM_END -GAMEL(1977, dragrace, 0, dragrace, dragrace, driver_device, 0, 0, "Atari (Kee Games)", "Drag Race", MACHINE_SUPPORTS_SAVE, layout_dragrace ) +GAMEL(1977, dragrace, 0, dragrace, dragrace, dragrace_state, 0, 0, "Atari (Kee Games)", "Drag Race", MACHINE_SUPPORTS_SAVE, layout_dragrace ) diff --git a/src/mame/drivers/dreambal.cpp b/src/mame/drivers/dreambal.cpp index 12ea37fb4c2..f404248ac37 100644 --- a/src/mame/drivers/dreambal.cpp +++ b/src/mame/drivers/dreambal.cpp @@ -304,7 +304,7 @@ void dreambal_state::machine_reset() } // xtals = 28.000, 9.8304 -static MACHINE_CONFIG_START( dreambal, dreambal_state ) +static MACHINE_CONFIG_START( dreambal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 28000000/2) @@ -346,7 +346,7 @@ static MACHINE_CONFIG_START( dreambal, dreambal_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 9830400/8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 9830400/8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp index a712c70a08d..d63e70cd1de 100644 --- a/src/mame/drivers/dreamwld.cpp +++ b/src/mame/drivers/dreamwld.cpp @@ -151,7 +151,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_dreamwld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_dreamwld(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_dreamwld); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); required_device m_maincpu; required_device m_gfxdecode; @@ -281,7 +281,7 @@ void dreamwld_state::video_start() } -void dreamwld_state::screen_eof_dreamwld(screen_device &screen, bool state) +WRITE_LINE_MEMBER(dreamwld_state::screen_vblank_dreamwld) { // rising edge if (state) @@ -792,7 +792,7 @@ void dreamwld_state::machine_reset() } -static MACHINE_CONFIG_START( baryon, dreamwld_state ) +static MACHINE_CONFIG_START( baryon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_32MHz/2) /* 16MHz verified */ @@ -806,7 +806,7 @@ static MACHINE_CONFIG_START( baryon, dreamwld_state ) MCFG_SCREEN_SIZE(512,256) MCFG_SCREEN_VISIBLE_AREA(0, 308-1, 0, 224-1) MCFG_SCREEN_UPDATE_DRIVER(dreamwld_state, screen_update_dreamwld) - MCFG_SCREEN_VBLANK_DRIVER(dreamwld_state, screen_eof_dreamwld) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dreamwld_state, screen_vblank_dreamwld)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 0x1000) @@ -816,7 +816,7 @@ static MACHINE_CONFIG_START( baryon, dreamwld_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/32, OKIM6295_PIN7_LOW) /* 1MHz verified */ + MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/32, PIN7_LOW) /* 1MHz verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) @@ -830,7 +830,7 @@ static MACHINE_CONFIG_DERIVED( dreamwld, baryon ) MCFG_CPU_PROGRAM_MAP(dreamwld_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", dreamwld_state, irq4_line_hold) - MCFG_OKIM6295_ADD("oki2", XTAL_32MHz/32, OKIM6295_PIN7_LOW) /* 1MHz verified */ + MCFG_OKIM6295_ADD("oki2", XTAL_32MHz/32, PIN7_LOW) /* 1MHz verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) @@ -1285,10 +1285,10 @@ ROM_START( gaialast ) ROM_LOAD( "9", 0x000000, 0x10000, CRC(0da8db45) SHA1(7d5bd71c5b0b28ff74c732edd7c662f46f2ab25b) ) ROM_END -GAME( 1997, baryon, 0, baryon, baryon, driver_device, 0, ROT270, "SemiCom / Tirano", "Baryon - Future Assault (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, baryona, baryon, baryon, baryon, driver_device, 0, ROT270, "SemiCom / Tirano", "Baryon - Future Assault (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, cutefght, 0, dreamwld, cutefght, driver_device, 0, ROT0, "SemiCom", "Cute Fighter", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, rolcrush, 0, baryon, rolcrush, driver_device, 0, ROT0, "SemiCom / Exit (Trust license)", "Rolling Crush (version 1.07.E - 1999/02/11, Trust license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, rolcrusha,rolcrush, baryon, rolcrush, driver_device, 0, ROT0, "SemiCom / Exit", "Rolling Crush (version 1.03.E - 1999/01/29)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, gaialast, 0, baryon, gaialast, driver_device, 0, ROT0, "SemiCom / XESS", "Gaia - The Last Choice of Earth", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, dreamwld, 0, dreamwld, dreamwld, driver_device, 0, ROT0, "SemiCom", "Dream World", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, baryon, 0, baryon, baryon, dreamwld_state, 0, ROT270, "SemiCom / Tirano", "Baryon - Future Assault (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, baryona, baryon, baryon, baryon, dreamwld_state, 0, ROT270, "SemiCom / Tirano", "Baryon - Future Assault (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, cutefght, 0, dreamwld, cutefght, dreamwld_state, 0, ROT0, "SemiCom", "Cute Fighter", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, rolcrush, 0, baryon, rolcrush, dreamwld_state, 0, ROT0, "SemiCom / Exit (Trust license)", "Rolling Crush (version 1.07.E - 1999/02/11, Trust license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, rolcrusha,rolcrush, baryon, rolcrush, dreamwld_state, 0, ROT0, "SemiCom / Exit", "Rolling Crush (version 1.03.E - 1999/01/29)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, gaialast, 0, baryon, gaialast, dreamwld_state, 0, ROT0, "SemiCom / XESS", "Gaia - The Last Choice of Earth", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, dreamwld, 0, dreamwld, dreamwld, dreamwld_state, 0, ROT0, "SemiCom", "Dream World", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/drgnmst.cpp b/src/mame/drivers/drgnmst.cpp index 03a8e521f2c..168e48d8f8a 100644 --- a/src/mame/drivers/drgnmst.cpp +++ b/src/mame/drivers/drgnmst.cpp @@ -373,7 +373,7 @@ void drgnmst_state::machine_reset() m_oki0_bank = 0; } -static MACHINE_CONFIG_START( drgnmst, drgnmst_state ) +static MACHINE_CONFIG_START( drgnmst ) MCFG_CPU_ADD("maincpu", M68000, 12000000) /* Confirmed */ MCFG_CPU_PROGRAM_MAP(drgnmst_main_map) @@ -403,11 +403,11 @@ static MACHINE_CONFIG_START( drgnmst, drgnmst_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", 32000000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32000000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) - MCFG_OKIM6295_ADD("oki2", 32000000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32000000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END diff --git a/src/mame/drivers/dribling.cpp b/src/mame/drivers/dribling.cpp index ac8504aae24..3c460dfe637 100644 --- a/src/mame/drivers/dribling.cpp +++ b/src/mame/drivers/dribling.cpp @@ -266,7 +266,7 @@ void dribling_state::machine_reset() } -static MACHINE_CONFIG_START( dribling, dribling_state ) +static MACHINE_CONFIG_START( dribling ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 5000000) @@ -373,6 +373,6 @@ ROM_END * *************************************/ -GAME( 1983, dribling, 0, dribling, dribling, driver_device, 0, ROT0, "Model Racing", "Dribbling", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, driblingo, dribling, dribling, dribling, driver_device, 0, ROT0, "Model Racing (Olympia license)", "Dribbling (Olympia)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, driblingbr, dribling, dribling, dribling, driver_device, 0, ROT0, "bootleg (Videomac)", "Dribbling (bootleg, Brazil)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, dribling, 0, dribling, dribling, dribling_state, 0, ROT0, "Model Racing", "Dribbling", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, driblingo, dribling, dribling, dribling, dribling_state, 0, ROT0, "Model Racing (Olympia license)", "Dribbling (Olympia)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, driblingbr, dribling, dribling, dribling, dribling_state, 0, ROT0, "bootleg (Videomac)", "Dribbling (bootleg, Brazil)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/drmicro.cpp b/src/mame/drivers/drmicro.cpp index 71aa57fbe06..2e407b5aa20 100644 --- a/src/mame/drivers/drmicro.cpp +++ b/src/mame/drivers/drmicro.cpp @@ -238,7 +238,7 @@ void drmicro_state::machine_reset() } -static MACHINE_CONFIG_START( drmicro, drmicro_state ) +static MACHINE_CONFIG_START( drmicro ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MCLK/6) /* 3.072MHz? */ @@ -277,7 +277,7 @@ static MACHINE_CONFIG_START( drmicro, drmicro_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(drmicro_state, pcm_w)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S64_4B) /* 6 KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) MACHINE_CONFIG_END @@ -322,4 +322,4 @@ ROM_END * *************************************/ -GAME( 1983, drmicro, 0, drmicro, drmicro, driver_device, 0, ROT270, "Sanritsu", "Dr. Micro", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, drmicro, 0, drmicro, drmicro, drmicro_state, 0, ROT270, "Sanritsu", "Dr. Micro", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/drtomy.cpp b/src/mame/drivers/drtomy.cpp index 827d5645e4f..f7bc2dfbe1d 100644 --- a/src/mame/drivers/drtomy.cpp +++ b/src/mame/drivers/drtomy.cpp @@ -299,7 +299,7 @@ void drtomy_state::machine_reset() m_oki_bank = 0; } -static MACHINE_CONFIG_START( drtomy, drtomy_state ) +static MACHINE_CONFIG_START( drtomy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,24000000/2) /* ? MHz */ @@ -324,7 +324,7 @@ static MACHINE_CONFIG_START( drtomy, drtomy_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 26000000/16, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 26000000/16, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8) MACHINE_CONFIG_END @@ -355,4 +355,4 @@ ROM_START( drtomy ) ROM_END -GAME( 1993, drtomy, 0, drtomy, drtomy, driver_device, 0, ROT0, "Playmark", "Dr. Tomy", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, drtomy, 0, drtomy, drtomy, drtomy_state, 0, ROT0, "Playmark", "Dr. Tomy", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/drw80pkr.cpp b/src/mame/drivers/drw80pkr.cpp index 01f5f3f0f09..dc21cffa126 100644 --- a/src/mame/drivers/drw80pkr.cpp +++ b/src/mame/drivers/drw80pkr.cpp @@ -56,17 +56,13 @@ public: uint8_t m_pkr_io_ram[0x100]; uint16_t m_video_ram[0x0400]; uint8_t m_color_ram[0x0400]; - DECLARE_WRITE8_MEMBER(t0_w); - DECLARE_WRITE8_MEMBER(t1_w); - DECLARE_WRITE8_MEMBER(p0_w); DECLARE_WRITE8_MEMBER(p1_w); DECLARE_WRITE8_MEMBER(p2_w); - DECLARE_WRITE8_MEMBER(prog_w); + DECLARE_WRITE_LINE_MEMBER(prog_w); DECLARE_WRITE8_MEMBER(bus_w); DECLARE_WRITE8_MEMBER(drw80pkr_io_w); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); - DECLARE_READ8_MEMBER(p0_r); + DECLARE_READ_LINE_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_READ8_MEMBER(p1_r); DECLARE_READ8_MEMBER(p2_r); DECLARE_READ8_MEMBER(bus_r); @@ -95,21 +91,6 @@ void drw80pkr_state::machine_start() * Write Handlers * ******************/ -WRITE8_MEMBER(drw80pkr_state::t0_w) -{ - m_t0 = data; -} - -WRITE8_MEMBER(drw80pkr_state::t1_w) -{ - m_t1 = data; -} - -WRITE8_MEMBER(drw80pkr_state::p0_w) -{ - m_p0 = data; -} - WRITE8_MEMBER(drw80pkr_state::p1_w) { m_p1 = data; @@ -120,9 +101,9 @@ WRITE8_MEMBER(drw80pkr_state::p2_w) m_p2 = data; } -WRITE8_MEMBER(drw80pkr_state::prog_w) +WRITE_LINE_MEMBER(drw80pkr_state::prog_w) { - m_prog = data; + m_prog = state; // Bankswitch Program Memory if (m_prog == 0x01) @@ -216,21 +197,16 @@ WRITE8_MEMBER(drw80pkr_state::drw80pkr_io_w) * Read Handlers * ****************/ -READ8_MEMBER(drw80pkr_state::t0_r) +READ_LINE_MEMBER(drw80pkr_state::t0_r) { return m_t0; } -READ8_MEMBER(drw80pkr_state::t1_r) +READ_LINE_MEMBER(drw80pkr_state::t1_r) { return m_t1; } -READ8_MEMBER(drw80pkr_state::p0_r) -{ - return m_p0; -} - READ8_MEMBER(drw80pkr_state::p1_r) { return m_p1; @@ -428,13 +404,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( drw80pkr_io_map, AS_IO, 8, drw80pkr_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(drw80pkr_io_r, drw80pkr_io_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READWRITE(t0_r, t0_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READWRITE(t1_r, t1_w) - AM_RANGE(MCS48_PORT_P0, MCS48_PORT_P0) AM_READWRITE(p0_r, p0_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_RAM_WRITE(prog_w) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) ADDRESS_MAP_END /************************* @@ -469,11 +438,20 @@ INPUT_PORTS_END * Machine Driver * *************************/ -static MACHINE_CONFIG_START( drw80pkr, drw80pkr_state ) +static MACHINE_CONFIG_START( drw80pkr ) // basic machine hardware MCFG_CPU_ADD("maincpu", I8039, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(drw80pkr_map) MCFG_CPU_IO_MAP(drw80pkr_io_map) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(drw80pkr_state, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(drw80pkr_state, t1_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(drw80pkr_state, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(drw80pkr_state, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(drw80pkr_state, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(drw80pkr_state, p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(drw80pkr_state, prog_w)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(drw80pkr_state, bus_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(drw80pkr_state, bus_w)) MCFG_CPU_VBLANK_INT_DRIVER("screen", drw80pkr_state, irq0_line_hold) @@ -534,6 +512,6 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 1982, drw80pkr, 0, drw80pkr, drw80pkr, drw80pkr_state, drw80pkr, ROT0, "IGT - International Game Technology", "Draw 80 Poker", MACHINE_NOT_WORKING ) GAME( 1983, drw80pk2, 0, drw80pkr, drw80pkr, drw80pkr_state, drw80pkr, ROT0, "IGT - International Game Technology", "Draw 80 Poker - Minn", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/dsb46.cpp b/src/mame/drivers/dsb46.cpp index b6729926993..4b665f66fd9 100644 --- a/src/mame/drivers/dsb46.cpp +++ b/src/mame/drivers/dsb46.cpp @@ -36,7 +36,7 @@ public: DECLARE_READ8_MEMBER(port00_r); DECLARE_READ8_MEMBER(port01_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE8_MEMBER(port1a_w); DECLARE_DRIVER_INIT(dsb46); DECLARE_MACHINE_RESET(dsb46); @@ -104,12 +104,12 @@ READ8_MEMBER( dsb46_state::port00_r ) return ret; } -WRITE8_MEMBER( dsb46_state::kbd_put ) +void dsb46_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( dsb46, dsb46_state ) +static MACHINE_CONFIG_START( dsb46 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(dsb46_mem) @@ -118,7 +118,7 @@ static MACHINE_CONFIG_START( dsb46, dsb46_state ) /* video hardware */ MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(dsb46_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(dsb46_state, kbd_put)) MACHINE_CONFIG_END ROM_START( dsb46 ) diff --git a/src/mame/drivers/dual68.cpp b/src/mame/drivers/dual68.cpp index ea94a995f08..fb175c129c1 100644 --- a/src/mame/drivers/dual68.cpp +++ b/src/mame/drivers/dual68.cpp @@ -26,13 +26,16 @@ public: { } + void kbd_put(u8 data); + DECLARE_WRITE16_MEMBER( dual68_terminal_w ); + +protected: + virtual void machine_reset() override; + required_device m_maincpu; required_device m_terminal; - DECLARE_WRITE8_MEMBER( kbd_put ); - DECLARE_WRITE16_MEMBER( dual68_terminal_w ); //uint8_t m_term_data; required_shared_ptr m_p_ram; - virtual void machine_reset() override; }; @@ -74,12 +77,12 @@ void dual68_state::machine_reset() m_maincpu->reset(); } -WRITE8_MEMBER( dual68_state::kbd_put ) +void dual68_state::kbd_put(u8 data) { //m_term_data = data; } -static MACHINE_CONFIG_START( dual68, dual68_state ) +static MACHINE_CONFIG_START( dual68 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(dual68_mem) @@ -91,7 +94,7 @@ static MACHINE_CONFIG_START( dual68, dual68_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(dual68_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(dual68_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -111,5 +114,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, dual68, 0, 0, dual68, dual68, driver_device, 0, "Dual Systems Corporation", "Dual Systems 68000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, dual68, 0, 0, dual68, dual68, dual68_state, 0, "Dual Systems Corporation", "Dual Systems 68000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/dunhuang.cpp b/src/mame/drivers/dunhuang.cpp index a81d7a672dd..0be6895eb68 100644 --- a/src/mame/drivers/dunhuang.cpp +++ b/src/mame/drivers/dunhuang.cpp @@ -813,7 +813,7 @@ void dunhuang_state::machine_reset() } -static MACHINE_CONFIG_START( dunhuang, dunhuang_state ) +static MACHINE_CONFIG_START( dunhuang ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) @@ -848,7 +848,7 @@ static MACHINE_CONFIG_START( dunhuang, dunhuang_state ) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(dunhuang_state, dunhuang_input_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki", 12000000/8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 12000000/8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -874,4 +874,4 @@ ROM_START( dunhuang ) ROM_LOAD( "rom6.u1", 0x00000, 0x20000, CRC(31cfdc29) SHA1(725249eae9227eadf05418b799e0da0254bb2f51) ) ROM_END -GAME( 1995, dunhuang, 0, dunhuang, dunhuang, driver_device, 0, ROT0, "Spirit", "Mahjong Dunhuang", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, dunhuang, 0, dunhuang, dunhuang, dunhuang_state, 0, ROT0, "Spirit", "Mahjong Dunhuang", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dvk_kcgd.cpp b/src/mame/drivers/dvk_kcgd.cpp index a6d1717b72e..d533826c287 100644 --- a/src/mame/drivers/dvk_kcgd.cpp +++ b/src/mame/drivers/dvk_kcgd.cpp @@ -342,7 +342,7 @@ static GFXDECODE_START( kcgd ) GFXDECODE_ENTRY("maincpu", 0112236, kcgd_charlayout, 0, 1) GFXDECODE_END -static MACHINE_CONFIG_START( kcgd, kcgd_state ) +static MACHINE_CONFIG_START( kcgd ) MCFG_CPU_ADD("maincpu", K1801VM2, XTAL_30_8MHz/4) MCFG_CPU_PROGRAM_MAP(kcgd_mem) MCFG_T11_INITIAL_MODE(0100000) @@ -381,5 +381,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, dvk_kcgd, 0, 0, kcgd, 0, driver_device, 0, "USSR", "DVK KCGD", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, dvk_kcgd, 0, 0, kcgd, 0, kcgd_state, 0, "USSR", "DVK KCGD", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/dvk_ksm.cpp b/src/mame/drivers/dvk_ksm.cpp index 39853d47e42..908bdb2861a 100644 --- a/src/mame/drivers/dvk_ksm.cpp +++ b/src/mame/drivers/dvk_ksm.cpp @@ -2,60 +2,60 @@ // copyright-holders:Sergey Svishchev /*************************************************************************** - KSM (Kontroller Simvolnogo Monitora = Character Display Controller), - a single-board replacement for standalone 15IE-00-013 terminal (ie15.c) - in later-model DVK desktops. - - MPI (Q-Bus clone) board, consumes only power from the bus. - Interfaces with MS7004 (DEC LK201 workalike) keyboard and monochrome CRT. - - Hardware revisions (XXX verify everything): - - 7.102.076 -- has DIP switches, SRAM at 0x2000, model name "KSM" - - 7.102.228 -- no DIP switches, ?? SRAM at 0x2100, model name "KSM-01" - - Two sets of dumps exist: - - one puts SRAM at 0x2000, which is where technical manual puts it, - but chargen has 1 missing pixel in 'G' character. - - another puts SRAM at 0x2100, but has no missing pixel. - Merge them for now into one (SRAM at 0x2000 and no missing pixel). - - Emulates a VT52 without copier (ESC Z response is ESC / M), with - Hold Screen mode and Graphics character set (but it is unique and - mapped to a different range -- 100..137). - - F4 + 0..9 on numeric keypad = setup mode. 0 changes serial port speed, - 1..9 toggle one of mode bits: - - 1 XON/XOFF 0: Off 1: On - 2 Character set 0: N0/N1 2: N2 - 3 Auto LF 0: Off 1: On - 4 Auto repeat 0: On 1: Off - 5 Auto wraparound 0: On 1: Off - 6 Interpret controls 0: Interpret 1: Display - 7 Parity check 0: Off 1: On - 8 Parity bits 0: None 1: Even - 9 Stop bits - - N0/N1 charset has regular ASCII in C0 page and Cyrillic in C1 page, - switching between them via SI/SO. N2 charset has uppercase Cyrillic - chars in place of lowercase Latin ones. - - ESC toggles Cyrillic/Latin mode (depends in the host's terminal driver) - F1 toggles Hold Screen mode (also depends in the host's terminal driver) - F9 resets terminal (clears memory). - F20 toggles on/off-line mode. - - Terminfo description: + KSM (Kontroller Simvolnogo Monitora = Character Display Controller), + a single-board replacement for standalone 15IE-00-013 terminal (ie15.c) + in later-model DVK desktops. + + MPI (Q-Bus clone) board, consumes only power from the bus. + Interfaces with MS7004 (DEC LK201 workalike) keyboard and monochrome CRT. + + Hardware revisions (XXX verify everything): + - 7.102.076 -- has DIP switches, SRAM at 0x2000, model name "KSM" + - 7.102.228 -- no DIP switches, ?? SRAM at 0x2100, model name "KSM-01" + + Two sets of dumps exist: + - one puts SRAM at 0x2000, which is where technical manual puts it, + but chargen has 1 missing pixel in 'G' character. + - another puts SRAM at 0x2100, but has no missing pixel. + Merge them for now into one (SRAM at 0x2000 and no missing pixel). + + Emulates a VT52 without copier (ESC Z response is ESC / M), with + Hold Screen mode and Graphics character set (but it is unique and + mapped to a different range -- 100..137). + + F4 + 0..9 on numeric keypad = setup mode. 0 changes serial port speed, + 1..9 toggle one of mode bits: + + 1 XON/XOFF 0: Off 1: On + 2 Character set 0: N0/N1 2: N2 + 3 Auto LF 0: Off 1: On + 4 Auto repeat 0: On 1: Off + 5 Auto wraparound 0: On 1: Off + 6 Interpret controls 0: Interpret 1: Display + 7 Parity check 0: Off 1: On + 8 Parity bits 0: None 1: Even + 9 Stop bits + + N0/N1 charset has regular ASCII in C0 page and Cyrillic in C1 page, + switching between them via SI/SO. N2 charset has uppercase Cyrillic + chars in place of lowercase Latin ones. + + ESC toggles Cyrillic/Latin mode (depends in the host's terminal driver) + F1 toggles Hold Screen mode (also depends in the host's terminal driver) + F9 resets terminal (clears memory). + F20 toggles on/off-line mode. + + Terminfo description: ksm|DVK KSM, - am, bw, dch1=\EP, ich1=\EQ, - acsc=hRiTjXkClJmFnNqUtEuPv\174wKxW.M\054Q\055S\053\136~_{@}Z0\177, - use=vt52, + am, bw, dch1=\EP, ich1=\EQ, + acsc=hRiTjXkClJmFnNqUtEuPv\174wKxW.M\054Q\055S\053\136~_{@}Z0\177, + use=vt52, - To do: - - verify if pixel stretching is done by hw - - verify details of hw revisions (memory map, DIP presence...) - - baud rate selection + To do: + - verify if pixel stretching is done by hw + - verify details of hw revisions (memory map, DIP presence...) + - baud rate selection ****************************************************************************/ @@ -241,19 +241,19 @@ WRITE_LINE_MEMBER(ksm_state::write_line_clock) } /* - Raster size is 28x11 scan lines. - XXX VBlank is active for 2 topmost on-screen rows and 1 at the bottom. + Raster size is 28x11 scan lines. + XXX VBlank is active for 2 topmost on-screen rows and 1 at the bottom. - Usable raster is 800 x 275 pixels (80 x 25 characters). 24 lines are - available to the user and 25th (topmost) line is the status line. - Status line displays current serial port speed and 9 setup bits. + Usable raster is 800 x 275 pixels (80 x 25 characters). 24 lines are + available to the user and 25th (topmost) line is the status line. + Status line displays current serial port speed and 9 setup bits. - No character attributes are available, but in 'display controls' mode - control characters stored in memory are shown as blinking chars. + No character attributes are available, but in 'display controls' mode + control characters stored in memory are shown as blinking chars. - Character cell is 10 x 11; character generator provides 7 x 8 of that. - 3 extra horizontal pixels are always XXX blank. Blinking XXX cursor may be - displayed on 3 extra scan lines. + Character cell is 10 x 11; character generator provides 7 x 8 of that. + 3 extra horizontal pixels are always XXX blank. Blinking XXX cursor may be + displayed on 3 extra scan lines. */ uint32_t ksm_state::draw_scanline(uint16_t *p, uint16_t offset, uint8_t scanline) @@ -341,7 +341,7 @@ static GFXDECODE_START( ksm ) GFXDECODE_ENTRY("chargen", 0x0000, ksm_charlayout, 0, 1) GFXDECODE_END -static MACHINE_CONFIG_START( ksm, ksm_state ) +static MACHINE_CONFIG_START( ksm ) MCFG_CPU_ADD("maincpu", I8080, XTAL_15_4MHz/10) MCFG_CPU_PROGRAM_MAP(ksm_mem) MCFG_CPU_IO_MAP(ksm_io) @@ -405,5 +405,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, dvk_ksm, 0, 0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1986, dvk_ksm, 0, 0, ksm, ksm, ksm_state, 0, "USSR", "DVK KSM", 0) diff --git a/src/mame/drivers/dwarfd.cpp b/src/mame/drivers/dwarfd.cpp index fb2675c07b4..e78b7bba441 100644 --- a/src/mame/drivers/dwarfd.cpp +++ b/src/mame/drivers/dwarfd.cpp @@ -790,7 +790,7 @@ void dwarfd_state::machine_reset() m_back_color = false; } -static MACHINE_CONFIG_START( dwarfd, dwarfd_state ) +static MACHINE_CONFIG_START( dwarfd ) /* basic machine hardware */ /* FIXME: The 8085A had a max clock of 6MHz, internally divided by 2! */ @@ -1107,11 +1107,11 @@ DRIVER_INIT_MEMBER(dwarfd_state,qc) } -/* YEAR NAME PARENT MACHINE INPUT INIT ORENTATION, COMPANY FULLNAME FLAGS */ -GAME( 1979, pokeresp, 0, pokeresp, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Poker (Electro-Sport)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, dwarfd, 0, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Dwarf Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, dwarfda, dwarfd, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Card Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, quarterh, 0, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 1, Pioneer PR-8210)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1983, quarterha, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 2, Pioneer PR-8210)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1983, quarterhb, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 3, Pioneer LD-V2000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1995, qc, 0, qc, quarterh, dwarfd_state, qc, 0, "ArJay Exports/Prestige Games", "Quarter Horse Classic", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ORENTATION, COMPANY FULLNAME FLAGS +GAME( 1979, pokeresp, 0, pokeresp, dwarfd, dwarfd_state, dwarfd, ROT0, "Electro-Sport", "Poker (Electro-Sport)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, dwarfd, 0, dwarfd, dwarfd, dwarfd_state, dwarfd, ROT0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Dwarf Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, dwarfda, dwarfd, dwarfd, dwarfd, dwarfd_state, dwarfd, ROT0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Card Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, quarterh, 0, dwarfd, quarterh, dwarfd_state, dwarfd, ROT0, "Electro-Sport", "Quarter Horse (set 1, Pioneer PR-8210)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1983, quarterha, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, ROT0, "Electro-Sport", "Quarter Horse (set 2, Pioneer PR-8210)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1983, quarterhb, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, ROT0, "Electro-Sport", "Quarter Horse (set 3, Pioneer LD-V2000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1995, qc, 0, qc, quarterh, dwarfd_state, qc, ROT0, "ArJay Exports/Prestige Games", "Quarter Horse Classic", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/dynadice.cpp b/src/mame/drivers/dynadice.cpp index ed8becac6ca..9f4a665fec0 100644 --- a/src/mame/drivers/dynadice.cpp +++ b/src/mame/drivers/dynadice.cpp @@ -238,7 +238,7 @@ void dynadice_state::machine_reset() m_ay_data = 0; } -static MACHINE_CONFIG_START( dynadice, dynadice_state ) +static MACHINE_CONFIG_START( dynadice ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080,18432000/8) diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp index 6c69d517e20..d94fd2d0218 100644 --- a/src/mame/drivers/dynax.cpp +++ b/src/mame/drivers/dynax.cpp @@ -545,7 +545,7 @@ static ADDRESS_MAP_START( hanamai_io_map, AS_IO, 8, dynax_state ) AM_RANGE( 0x76, 0x76 ) AM_WRITE(dynax_blit_palbank_w) // Layers Palettes (High Bit) AM_RANGE( 0x77, 0x77 ) AM_WRITE(hanamai_layer_half_w) // half of the interleaved layer to write to AM_RANGE( 0x78, 0x79 ) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) // 2 x DSW - AM_RANGE( 0x7a, 0x7b ) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) // AY8910 + AM_RANGE( 0x7a, 0x7b ) AM_DEVWRITE("aysnd", ay8912_device, address_data_w) // AY8912 // AM_RANGE( 0x7c, 0x7c ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x7d, 0x7d ) AM_WRITENOP // AM_RANGE( 0x7e, 0x7e ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank @@ -567,9 +567,9 @@ static ADDRESS_MAP_START( hnoridur_io_map, AS_IO, 8, dynax_state ) AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8910_device, data_r) // AY8910, DSW0 - AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) // AY8910 - AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // + AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912, DSW0 + AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 + AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes @@ -652,9 +652,9 @@ static ADDRESS_MAP_START( hjingi_io_map, AS_IO, 8, dynax_state ) AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8910_device, data_r) // AY8910, DSW0 - AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) // AY8910 - AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // + AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912, DSW0 + AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 + AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer @@ -791,8 +791,8 @@ static ADDRESS_MAP_START( yarunara_io_map, AS_IO, 8, dynax_state ) AM_RANGE( 0x20, 0x20 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset AM_RANGE( 0x22, 0x22 ) AM_WRITE(adpcm_data_w) // MSM5205 data AM_RANGE( 0x24, 0x25 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x28, 0x28 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) // AY8910 - AM_RANGE( 0x2a, 0x2a ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // + AM_RANGE( 0x28, 0x28 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 + AM_RANGE( 0x2a, 0x2a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // AM_RANGE( 0x48, 0x48 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X AM_RANGE( 0x49, 0x49 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y AM_RANGE( 0x4a, 0x4a ) AM_WRITE(yarunara_rombank_w) // BANK ROM Select @@ -830,8 +830,8 @@ static ADDRESS_MAP_START( mcnpshnt_io_map, AS_IO, 8, dynax_state ) AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) // AY8910 - AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // + AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 + AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes @@ -913,8 +913,8 @@ static ADDRESS_MAP_START( nanajign_io_map, AS_IO, 8, dynax_state ) AM_RANGE( 0x00, 0x00 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset AM_RANGE( 0x02, 0x02 ) AM_WRITE(adpcm_data_w) // MSM5205 data AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) // AY8910 - AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // + AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 + AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // AM_RANGE( 0x10, 0x10 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("COINS") // Coins AM_RANGE( 0x12, 0x12 ) AM_READ(hanamai_keyboard_1_r) // P2 @@ -1032,8 +1032,8 @@ static ADDRESS_MAP_START( jantouki_sound_io_map, AS_IO, 8, dynax_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x00, 0x00 ) AM_WRITE(jantouki_sound_rombank_w) // BANK ROM Select AM_RANGE( 0x10, 0x10 ) AM_WRITE(jantouki_sound_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x21, 0x21 ) AM_DEVREAD("aysnd", ay8910_device, data_r) // AY8910 - AM_RANGE( 0x22, 0x23 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) // + AM_RANGE( 0x21, 0x21 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912 + AM_RANGE( 0x22, 0x23 ) AM_DEVWRITE("aysnd", ay8912_device, data_address_w) // AM_RANGE( 0x28, 0x29 ) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) // AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset AM_RANGE( 0x40, 0x40 ) AM_WRITE(adpcm_data_w) // MSM5205 data @@ -1071,8 +1071,8 @@ static ADDRESS_MAP_START( mjelctrn_io_map, AS_IO, 8, dynax_state ) AM_RANGE( 0x00, 0x00 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset AM_RANGE( 0x02, 0x02 ) AM_WRITE(adpcm_data_w) // MSM5205 data AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) // AY8910 - AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // + AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 + AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // AM_RANGE( 0x11, 0x12 ) AM_WRITE(mjelctrn_blitter_ack_w) //? // AM_RANGE( 0x20, 0x20 ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x21, 0x21 ) AM_WRITENOP // CRT Controller @@ -1107,9 +1107,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mjembase_io_map, AS_IO, 8, dynax_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x06, 0x06 ) AM_DEVREAD("aysnd", ay8910_device, data_r) // AY8910, dsw0 - AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) // - AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // + AM_RANGE( 0x06, 0x06 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912, dsw0 + AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // + AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // AM_RANGE( 0x11, 0x12 ) AM_WRITE(mjelctrn_blitter_ack_w) //? AM_RANGE( 0x1c, 0x1c ) AM_READ_PORT("DSW1") AM_RANGE( 0x1e, 0x1e ) AM_READ_PORT("DSW2") @@ -4381,7 +4381,7 @@ MACHINE_START_MEMBER(dynax_state,hnoridur) Castle Of Dracula ***************************************************************************/ -static MACHINE_CONFIG_START( cdracula, dynax_state ) +static MACHINE_CONFIG_START( cdracula ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_21_4772MHz/4) /* 5.3693175MHz measured */ @@ -4411,7 +4411,7 @@ static MACHINE_CONFIG_START( cdracula, dynax_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_4MHz / 4, OKIM6295_PIN7_HIGH) /* 1MHz measured */ + MCFG_OKIM6295_ADD("oki", XTAL_4MHz / 4, PIN7_HIGH) /* 1MHz measured */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -4420,7 +4420,7 @@ MACHINE_CONFIG_END Hana no Mai ***************************************************************************/ -static MACHINE_CONFIG_START( hanamai, dynax_state ) +static MACHINE_CONFIG_START( hanamai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */ @@ -4450,7 +4450,7 @@ static MACHINE_CONFIG_START( hanamai, dynax_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("aysnd", AY8910, 22000000 / 8) + MCFG_SOUND_ADD("aysnd", AY8912, 22000000 / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MCFG_SOUND_ADD("ym2203", YM2203, 22000000 / 8) @@ -4464,7 +4464,7 @@ static MACHINE_CONFIG_START( hanamai, dynax_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(dynax_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -4474,7 +4474,7 @@ MACHINE_CONFIG_END Hana Oriduru ***************************************************************************/ -static MACHINE_CONFIG_START( hnoridur, dynax_state ) +static MACHINE_CONFIG_START( hnoridur ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,XTAL_22MHz / 4) /* 5.5MHz */ @@ -4503,7 +4503,7 @@ static MACHINE_CONFIG_START( hnoridur, dynax_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("aysnd", AY8910, XTAL_22MHz / 16) + MCFG_SOUND_ADD("aysnd", AY8912, XTAL_22MHz / 16) MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW0")) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) @@ -4512,7 +4512,7 @@ static MACHINE_CONFIG_START( hnoridur, dynax_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(dynax_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -4521,7 +4521,7 @@ MACHINE_CONFIG_END Hana Jingi ***************************************************************************/ -static MACHINE_CONFIG_START( hjingi, dynax_state ) +static MACHINE_CONFIG_START( hjingi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_22MHz / 4) @@ -4550,7 +4550,7 @@ static MACHINE_CONFIG_START( hjingi, dynax_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("aysnd", AY8910, XTAL_22MHz / 16) + MCFG_SOUND_ADD("aysnd", AY8912, XTAL_22MHz / 16) MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW0")) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) @@ -4559,7 +4559,7 @@ static MACHINE_CONFIG_START( hjingi, dynax_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz ) MCFG_MSM5205_VCLK_CB(WRITELINE(dynax_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -4568,7 +4568,7 @@ MACHINE_CONFIG_END Sports Match ***************************************************************************/ -static MACHINE_CONFIG_START( sprtmtch, dynax_state ) +static MACHINE_CONFIG_START( sprtmtch ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,22000000 / 4) /* 5.5MHz */ @@ -4613,7 +4613,7 @@ MACHINE_CONFIG_END Mahjong Friday ***************************************************************************/ -static MACHINE_CONFIG_START( mjfriday, dynax_state ) +static MACHINE_CONFIG_START( mjfriday ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,24000000/4) /* 6 MHz? */ @@ -4747,7 +4747,7 @@ MACHINE_START_MEMBER(dynax_state,jantouki) } -static MACHINE_CONFIG_START( jantouki, dynax_state ) +static MACHINE_CONFIG_START( jantouki ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */ @@ -4791,7 +4791,7 @@ static MACHINE_CONFIG_START( jantouki, dynax_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("aysnd", AY8910, 22000000 / 8) + MCFG_SOUND_ADD("aysnd", AY8912, 22000000 / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MCFG_SOUND_ADD("ym2203", YM2203, 22000000 / 8) @@ -4803,7 +4803,7 @@ static MACHINE_CONFIG_START( jantouki, dynax_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(dynax_state, adpcm_int_cpu1)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) /* devices */ @@ -4947,7 +4947,7 @@ WRITE_LINE_MEMBER(dynax_state::tenkai_rtc_irq) } -static MACHINE_CONFIG_START( tenkai, dynax_state ) +static MACHINE_CONFIG_START( tenkai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",TMP91640, 21472700 / 2) @@ -5018,7 +5018,7 @@ MACHINE_RESET_MEMBER(dynax_state,gekisha) gekisha_set_rombank(0); } -static MACHINE_CONFIG_START( gekisha, dynax_state ) +static MACHINE_CONFIG_START( gekisha ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",TMP90841, XTAL_10MHz ) // ? @@ -7475,51 +7475,51 @@ ROM_END ***************************************************************************/ -GAME( 1988, janyuki, 0, janyuki, janyuki, driver_device, 0, ROT0, "Dynax", "Jong Yu Ki (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, hnkochou, 0, hanamai, hnkochou, driver_device, 0, ROT180, "Dynax", "Hana Kochou (Japan, Bet)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hanamai, hnkochou, hanamai, hanamai, driver_device, 0, ROT180, "Dynax", "Hana no Mai (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hjingi, 0, hjingi, hjingi, driver_device, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet)", MACHINE_SUPPORTS_SAVE ) // 1990 05/01 11:58:24 -GAME( 1990, hjingia, hjingi, hjingi, hjingi, driver_device, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet, alt.)", MACHINE_SUPPORTS_SAVE ) // 1990 05/01 11:58:24 -GAME( 1989, hnoridur, hjingi, hnoridur, hnoridur, driver_device, 0, ROT180, "Dynax", "Hana Oriduru (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, drgpunch, 0, sprtmtch, drgpunch, driver_device, 0, ROT0, "Dynax", "Dragon Punch (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, sprtmtch, drgpunch, sprtmtch, sprtmtch, driver_device, 0, ROT0, "Dynax (Fabtek license)", "Sports Match", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, janyuki, 0, janyuki, janyuki, dynax_state, 0, ROT0, "Dynax", "Jong Yu Ki (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, hnkochou, 0, hanamai, hnkochou, dynax_state, 0, ROT180, "Dynax", "Hana Kochou (Japan, Bet)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hanamai, hnkochou, hanamai, hanamai, dynax_state, 0, ROT180, "Dynax", "Hana no Mai (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hjingi, 0, hjingi, hjingi, dynax_state, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet)", MACHINE_SUPPORTS_SAVE ) // 1990 05/01 11:58:24 +GAME( 1990, hjingia, hjingi, hjingi, hjingi, dynax_state, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet, alt.)", MACHINE_SUPPORTS_SAVE ) // 1990 05/01 11:58:24 +GAME( 1989, hnoridur, hjingi, hnoridur, hnoridur, dynax_state, 0, ROT180, "Dynax", "Hana Oriduru (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, drgpunch, 0, sprtmtch, drgpunch, dynax_state, 0, ROT0, "Dynax", "Dragon Punch (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, sprtmtch, drgpunch, sprtmtch, sprtmtch, dynax_state, 0, ROT0, "Dynax (Fabtek license)", "Sports Match", MACHINE_SUPPORTS_SAVE ) /* these 3 are Korean hacks / bootlegs of Dragon Punch / Sports Match */ -GAME( 1994, maya, 0, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 1)", MACHINE_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract -GAME( 1994, mayaa, maya, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 2)", MACHINE_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract -GAME( 1994, mayab, maya, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, mayac, maya, sprtmtch, drgpunch, dynax_state, mayac, ROT0, "Promat", "Maya (set 4, clean)", MACHINE_SUPPORTS_SAVE ) -GAME( 199?, inca, 0, sprtmtch, drgpunch, dynax_state, maya, ROT0, "", "Inca", MACHINE_SUPPORTS_SAVE ) -GAME( 199?, blktouch, 0, sprtmtch, drgpunch, dynax_state, blktouch, ROT0, "Yang Gi Co Ltd.", "Black Touch (Korea)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1989, mjfriday, 0, mjfriday, mjfriday, driver_device, 0, ROT180, "Dynax", "Mahjong Friday (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, gekisha, 0, gekisha, gekisha, driver_device, 0, ROT180, "Dynax", "Mahjong Gekisha", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mcnpshnt, 0, mcnpshnt, mcnpshnt, driver_device, 0, ROT0, "Dynax", "Mahjong Campus Hunting (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, 7jigen, 0, nanajign, nanajign, driver_device, 0, ROT180, "Dynax", "7jigen no Youseitachi - Mahjong 7 Dimensions (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, jantouki, 0, jantouki, jantouki, driver_device, 0, ROT0, "Dynax", "Jong Tou Ki (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjdialq2, 0, mjdialq2, mjdialq2, driver_device, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjdialq2a,mjdialq2, mjdialq2, mjdialq2, driver_device, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan, alt.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, yarunara, 0, yarunara, yarunara, driver_device, 0, ROT180, "Dynax", "Mahjong Yarunara (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjangels, 0, yarunara, yarunara, driver_device, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, quiztvqq, 0, quiztvqq, quiztvqq, driver_device, 0, ROT180, "Dynax", "Quiz TV Gassyuukoku Q&Q (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mjembase, mjelctrn, mjembase, mjembase, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electromagnetic Base", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mjelct3, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mjelct3a, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3a, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, alt., Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, mjelctrb, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3, ROT180, "bootleg", "Mahjong Electron Base (parts 2 & 4, Japan, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, majxtal7, 0, majxtal7, majxtal7, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, neruton, 0, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. B?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, nerutona, neruton, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. A?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, hanayara, 0, yarunara, hanayara, driver_device, 0, ROT180, "Dynax", "Hana wo Yaraneba! (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjcomv1, 0, yarunara, yarunara, driver_device, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, tenkai, 0, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Tenkaigen", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, tenkai2b, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen Part 2 (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg b)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, tenkaicb, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg c)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, tenkaie, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ougonpai, 0, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Ougon No Pai", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ougonpaib,ougonpai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Ougon No Pai (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, mjreach, 0, tenkai, mjreach, dynax_state, mjreach, ROT0, "bootleg / Dynax", "Mahjong Reach (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, cdracula, 0, cdracula, cdracula, driver_device, 0, ROT0, "Yun Sung (Escape license)","Castle Of Dracula", MACHINE_SUPPORTS_SAVE ) // not a dynax board -GAME( 1995, shpeng, 0, sprtmtch, drgpunch, driver_device, 0, ROT0, "WSAC Systems?", "Sea Hunter Penguin", MACHINE_NO_COCKTAIL | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // not a dynax board. proms? -GAME( 1995, intrgirl, 0, sprtmtch, drgpunch, driver_device, 0, ROT0, "Barko", "Intergirl", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // not a dynax board. -GAME( 1996, majrjhdx, 0, majrjhdx, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Raijinhai DX", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, maya, 0, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 1)", MACHINE_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract +GAME( 1994, mayaa, maya, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 2)", MACHINE_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract +GAME( 1994, mayab, maya, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mayac, maya, sprtmtch, drgpunch, dynax_state, mayac, ROT0, "Promat", "Maya (set 4, clean)", MACHINE_SUPPORTS_SAVE ) +GAME( 199?, inca, 0, sprtmtch, drgpunch, dynax_state, maya, ROT0, "", "Inca", MACHINE_SUPPORTS_SAVE ) +GAME( 199?, blktouch, 0, sprtmtch, drgpunch, dynax_state, blktouch, ROT0, "Yang Gi Co Ltd.", "Black Touch (Korea)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1989, mjfriday, 0, mjfriday, mjfriday, dynax_state, 0, ROT180, "Dynax", "Mahjong Friday (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, gekisha, 0, gekisha, gekisha, dynax_state, 0, ROT180, "Dynax", "Mahjong Gekisha", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mcnpshnt, 0, mcnpshnt, mcnpshnt, dynax_state, 0, ROT0, "Dynax", "Mahjong Campus Hunting (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, 7jigen, 0, nanajign, nanajign, dynax_state, 0, ROT180, "Dynax", "7jigen no Youseitachi - Mahjong 7 Dimensions (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, jantouki, 0, jantouki, jantouki, dynax_state, 0, ROT0, "Dynax", "Jong Tou Ki (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjdialq2, 0, mjdialq2, mjdialq2, dynax_state, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjdialq2a,mjdialq2, mjdialq2, mjdialq2, dynax_state, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan, alt.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, yarunara, 0, yarunara, yarunara, dynax_state, 0, ROT180, "Dynax", "Mahjong Yarunara (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjangels, 0, yarunara, yarunara, dynax_state, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, quiztvqq, 0, quiztvqq, quiztvqq, dynax_state, 0, ROT180, "Dynax", "Quiz TV Gassyuukoku Q&Q (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mjembase, mjelctrn, mjembase, mjembase, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electromagnetic Base", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mjelct3, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mjelct3a, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3a, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, alt., Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, mjelctrb, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3, ROT180, "bootleg", "Mahjong Electron Base (parts 2 & 4, Japan, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, majxtal7, 0, majxtal7, majxtal7, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, neruton, 0, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. B?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, nerutona, neruton, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. A?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, hanayara, 0, yarunara, hanayara, dynax_state, 0, ROT180, "Dynax", "Hana wo Yaraneba! (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjcomv1, 0, yarunara, yarunara, dynax_state, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, tenkai, 0, tenkai, tenkai, dynax_state, 0, ROT0, "Dynax", "Mahjong Tenkaigen", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, tenkai2b, tenkai, tenkai, tenkai, dynax_state, 0, ROT0, "bootleg", "Mahjong Tenkaigen Part 2 (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, dynax_state, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg b)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, tenkaicb, tenkai, tenkai, tenkai, dynax_state, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg c)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, tenkaie, tenkai, tenkai, tenkai, dynax_state, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ougonpai, 0, tenkai, tenkai, dynax_state, 0, ROT0, "Dynax", "Mahjong Ougon No Pai", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ougonpaib,ougonpai, tenkai, tenkai, dynax_state, 0, ROT0, "bootleg", "Mahjong Ougon No Pai (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mjreach, 0, tenkai, mjreach, dynax_state, mjreach, ROT0, "bootleg / Dynax", "Mahjong Reach (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, cdracula, 0, cdracula, cdracula, dynax_state, 0, ROT0, "Yun Sung (Escape license)","Castle Of Dracula", MACHINE_SUPPORTS_SAVE ) // not a dynax board +GAME( 1995, shpeng, 0, sprtmtch, drgpunch, dynax_state, 0, ROT0, "WSAC Systems?", "Sea Hunter Penguin", MACHINE_NO_COCKTAIL | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // not a dynax board. proms? +GAME( 1995, intrgirl, 0, sprtmtch, drgpunch, dynax_state, 0, ROT0, "Barko", "Intergirl", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // not a dynax board. +GAME( 1996, majrjhdx, 0, majrjhdx, tenkai, dynax_state, 0, ROT0, "Dynax", "Mahjong Raijinhai DX", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dynduke.cpp b/src/mame/drivers/dynduke.cpp index b87f98df007..cd33836e22a 100644 --- a/src/mame/drivers/dynduke.cpp +++ b/src/mame/drivers/dynduke.cpp @@ -304,7 +304,7 @@ INTERRUPT_GEN_MEMBER(dynduke_state::interrupt) /* Machine Driver */ -static MACHINE_CONFIG_START( dynduke, dynduke_state ) +static MACHINE_CONFIG_START( dynduke ) // basic machine hardware MCFG_CPU_ADD("maincpu", V30, 16000000/2) // NEC V30-8 CPU MCFG_CPU_PROGRAM_MAP(master_map) @@ -332,7 +332,7 @@ static MACHINE_CONFIG_START( dynduke, dynduke_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(dynduke_state, screen_update) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", dynduke) @@ -347,7 +347,7 @@ static MACHINE_CONFIG_START( dynduke, dynduke_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -411,6 +411,10 @@ ROM_START( dynduke ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "26.n2", 0x0000, 0x0100, NO_DUMP ) // N82S135N + ROM_LOAD( "61-d.u3", 0x0100, 0x0100, NO_DUMP ) // N82S1??AN (part number obscured) ROM_END ROM_START( dyndukea ) @@ -459,6 +463,10 @@ ROM_START( dyndukea ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "26.n2", 0x0000, 0x0100, NO_DUMP ) // N82S135N + ROM_LOAD( "61-d.u3", 0x0100, 0x0100, NO_DUMP ) // N82S1??AN (part number obscured) ROM_END ROM_START( dyndukej ) @@ -507,6 +515,10 @@ ROM_START( dyndukej ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "26.n2", 0x0000, 0x0100, NO_DUMP ) // N82S135N + ROM_LOAD( "61-d.u3", 0x0100, 0x0100, NO_DUMP ) // N82S1??AN (part number obscured) ROM_END ROM_START( dyndukeja ) @@ -555,6 +567,10 @@ ROM_START( dyndukeja ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "26.n2", 0x0000, 0x0100, NO_DUMP ) // N82S135N + ROM_LOAD( "61-d.u3", 0x0100, 0x0100, NO_DUMP ) // N82S1??AN (part number obscured) ROM_END ROM_START( dyndukeu ) @@ -603,6 +619,10 @@ ROM_START( dyndukeu ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "26.n2", 0x0000, 0x0100, NO_DUMP ) // N82S135N + ROM_LOAD( "61-d.u3", 0x0100, 0x0100, NO_DUMP ) // N82S1??AN (part number obscured) ROM_END ROM_START( dbldynj ) @@ -651,6 +671,10 @@ ROM_START( dbldynj ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "26.n2", 0x0000, 0x0100, NO_DUMP ) // N82S135N + ROM_LOAD( "61-d.u3", 0x0100, 0x0100, NO_DUMP ) // N82S1??AN (part number obscured) ROM_END ROM_START( dbldynu ) @@ -699,15 +723,19 @@ ROM_START( dbldynu ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "26.n2", 0x0000, 0x0100, NO_DUMP ) // N82S135N + ROM_LOAD( "61-d.u3", 0x0100, 0x0100, NO_DUMP ) // N82S1??AN (part number obscured) ROM_END /* Game Drivers */ -GAME( 1989, dynduke, 0, dynduke, dynduke, driver_device, 0, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Europe, 03SEP89)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dyndukea, dynduke, dynduke, dynduke, driver_device, 0, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Europe, 25JUL89)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dyndukej, dynduke, dynduke, dynduke, driver_device, 0, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Japan, 03SEP89)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dyndukeja, dynduke, dynduke, dynduke, driver_device, 0, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Japan, 25JUL89)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dyndukeu, dynduke, dynduke, dynduke, driver_device, 0, ROT0, "Seibu Kaihatsu (Fabtek license)", "Dynamite Duke (US, 25JUL89)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dbldynj, 0, dbldyn, dynduke, driver_device, 0, ROT0, "Seibu Kaihatsu", "The Double Dynamites (Japan, 13NOV89)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dbldynu, dbldynj, dynduke, dynduke, driver_device, 0, ROT0, "Seibu Kaihatsu (Fabtek license)", "The Double Dynamites (US, 13NOV89)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dynduke, 0, dynduke, dynduke, dynduke_state, 0, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Europe, 03SEP89)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dyndukea, dynduke, dynduke, dynduke, dynduke_state, 0, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Europe, 25JUL89)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dyndukej, dynduke, dynduke, dynduke, dynduke_state, 0, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Japan, 03SEP89)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dyndukeja, dynduke, dynduke, dynduke, dynduke_state, 0, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Japan, 25JUL89)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dyndukeu, dynduke, dynduke, dynduke, dynduke_state, 0, ROT0, "Seibu Kaihatsu (Fabtek license)", "Dynamite Duke (US, 25JUL89)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dbldynj, 0, dbldyn, dynduke, dynduke_state, 0, ROT0, "Seibu Kaihatsu", "The Double Dynamites (Japan, 13NOV89)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dbldynu, dbldynj, dynduke, dynduke, dynduke_state, 0, ROT0, "Seibu Kaihatsu (Fabtek license)", "The Double Dynamites (US, 13NOV89)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/eacc.cpp b/src/mame/drivers/eacc.cpp index 877cfec73d6..0827f550ace 100644 --- a/src/mame/drivers/eacc.cpp +++ b/src/mame/drivers/eacc.cpp @@ -237,7 +237,7 @@ WRITE8_MEMBER( eacc_state::eacc_digit_w ) Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( eacc, eacc_state ) +static MACHINE_CONFIG_START( eacc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6802, XTAL_3_579545MHz) /* Divided by 4 inside the m6802*/ MCFG_CPU_PROGRAM_MAP(eacc_mem) @@ -276,5 +276,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, eacc, 0, 0, eacc, eacc, driver_device, 0, "Electronics Australia", "EA Car Computer", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, eacc, 0, 0, eacc, eacc, eacc_state, 0, "Electronics Australia", "EA Car Computer", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/ec184x.cpp b/src/mame/drivers/ec184x.cpp index 0f959b713b2..4d5566965ed 100644 --- a/src/mame/drivers/ec184x.cpp +++ b/src/mame/drivers/ec184x.cpp @@ -2,9 +2,9 @@ // copyright-holders:Sergey Svishchev /*************************************************************************** - drivers/ec184x.c + drivers/ec184x.c - Driver file for EC-184x series + Driver file for EC-184x series ***************************************************************************/ @@ -208,7 +208,7 @@ ADDRESS_MAP_END // XXX verify everything -static MACHINE_CONFIG_START( ec1840, ec184x_state ) +static MACHINE_CONFIG_START( ec1840 ) MCFG_CPU_ADD("maincpu", I8088, 4096000) MCFG_CPU_PROGRAM_MAP(ec1840_map) MCFG_CPU_IO_MAP(ec1840_io) @@ -231,7 +231,7 @@ static MACHINE_CONFIG_START( ec1840, ec184x_state ) MCFG_RAM_DEFAULT_SIZE("512K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ec1841, ec184x_state ) +static MACHINE_CONFIG_START( ec1841 ) MCFG_CPU_ADD("maincpu", I8086, 4096000) MCFG_CPU_PROGRAM_MAP(ec1841_map) MCFG_CPU_IO_MAP(ec1841_io) @@ -258,7 +258,7 @@ static MACHINE_CONFIG_START( ec1841, ec184x_state ) MACHINE_CONFIG_END // XXX verify everything -static MACHINE_CONFIG_START( ec1847, ec184x_state ) +static MACHINE_CONFIG_START( ec1847 ) MCFG_CPU_ADD("maincpu", I8088, 4772720) MCFG_CPU_PROGRAM_MAP(ec1847_map) MCFG_CPU_IO_MAP(ec1847_io) @@ -355,8 +355,8 @@ ROM_START( ec1847 ) ROM_LOAD( "317_d28_2732.bin", 0x00000, 0x1000, CRC(8939599b) SHA1(53d02460cf93596882a96758ef4bac5fa1ce55b2)) // monochrome font ROM_END -/* YEAR ROM NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP ( 1987, ec1840, ibm5150, 0, ec1840, 0, driver_device, 0, "", "EC-1840", MACHINE_NOT_WORKING) -COMP ( 1987, ec1841, ibm5150, 0, ec1841, 0, ec184x_state, ec1841, "", "EC-1841", 0) -COMP ( 1989, ec1845, ibm5150, 0, ec1841, 0, ec184x_state, ec1841, "", "EC-1845", MACHINE_NOT_WORKING) -COMP ( 1990, ec1847, ibm5150, 0, ec1847, 0, driver_device, 0, "", "EC-1847", MACHINE_NOT_WORKING) +// YEAR ROM NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP ( 1987, ec1840, ibm5150, 0, ec1840, 0, ec184x_state, 0, "", "EC-1840", MACHINE_NOT_WORKING ) +COMP ( 1987, ec1841, ibm5150, 0, ec1841, 0, ec184x_state, ec1841, "", "EC-1841", 0 ) +COMP ( 1989, ec1845, ibm5150, 0, ec1841, 0, ec184x_state, ec1841, "", "EC-1845", MACHINE_NOT_WORKING ) +COMP ( 1990, ec1847, ibm5150, 0, ec1847, 0, ec184x_state, 0, "", "EC-1847", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ec65.cpp b/src/mame/drivers/ec65.cpp index c38efea6062..49d04fa7788 100644 --- a/src/mame/drivers/ec65.cpp +++ b/src/mame/drivers/ec65.cpp @@ -41,7 +41,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); MC6845_UPDATE_ROW(crtc_update_row); private: @@ -90,18 +90,18 @@ ADDRESS_MAP_END static INPUT_PORTS_START( ec65 ) INPUT_PORTS_END -WRITE8_MEMBER( ec65_state::kbd_put ) +void ec65_state::kbd_put(u8 data) { if (data) { - m_via_0->write_pa0((data>>0)&1); - m_via_0->write_pa1((data>>1)&1); - m_via_0->write_pa2((data>>2)&1); - m_via_0->write_pa3((data>>3)&1); - m_via_0->write_pa4((data>>4)&1); - m_via_0->write_pa5((data>>5)&1); - m_via_0->write_pa6((data>>6)&1); - m_via_0->write_pa7((data>>7)&1); + m_via_0->write_pa0(BIT(data, 0)); + m_via_0->write_pa1(BIT(data, 1)); + m_via_0->write_pa2(BIT(data, 2)); + m_via_0->write_pa3(BIT(data, 3)); + m_via_0->write_pa4(BIT(data, 4)); + m_via_0->write_pa5(BIT(data, 5)); + m_via_0->write_pa6(BIT(data, 6)); + m_via_0->write_pa7(BIT(data, 7)); m_via_0->write_ca1(1); m_via_0->write_ca1(0); } @@ -165,7 +165,7 @@ static GFXDECODE_START( ec65 ) GFXDECODE_ENTRY( "chargen", 0x0000, ec65_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( ec65, ec65_state ) +static MACHINE_CONFIG_START( ec65 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6502, XTAL_4MHz / 4) @@ -200,10 +200,10 @@ static MACHINE_CONFIG_START( ec65, ec65_state ) MCFG_MOS6551_XTAL(XTAL_1_8432MHz) MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(ec65_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(ec65_state, kbd_put)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ec65k, ec65k_state ) +static MACHINE_CONFIG_START( ec65k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",G65816, XTAL_4MHz) // can use 4,2 or 1 MHz @@ -243,6 +243,6 @@ ROM_START( ec65k ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, ec65, 0, 0, ec65, ec65, driver_device, 0, "Elektor Electronics", "EC-65", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1985, ec65k, ec65, 0, ec65k, ec65, driver_device, 0, "Elektor Electronics", "EC-65K", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1985, ec65, 0, 0, ec65, ec65, ec65_state, 0, "Elektor Electronics", "EC-65", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1985, ec65k, ec65, 0, ec65k, ec65, ec65k_state, 0, "Elektor Electronics", "EC-65K", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/ecoinf1.cpp b/src/mame/drivers/ecoinf1.cpp index a4ba2c64e56..d390eba3df1 100644 --- a/src/mame/drivers/ecoinf1.cpp +++ b/src/mame/drivers/ecoinf1.cpp @@ -248,7 +248,7 @@ static INPUT_PORTS_START( ecoinf1 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ecoinf1_older, ecoinf1_state ) +static MACHINE_CONFIG_START( ecoinf1_older ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) MCFG_CPU_PROGRAM_MAP(older_memmap) @@ -360,12 +360,12 @@ DRIVER_INIT_MEMBER(ecoinf1_state,ecoinf1) // all roms might really be for the same game, just in different cabinet styles // these ALL contain "Ver 3 BAR-X V1:84 TYPE T" strings -GAME( 19??, ec_barxo, 0 , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 1)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 19??, ec_barxoa, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 2)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 19??, ec_barxob, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 3)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 19??, ec_barxoc, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 4)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 19??, ec_barxod, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 5)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 19??, ec_barxoe, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 6)" , MACHINE_IS_SKELETON_MECHANICAL) -GAME( 19??, ec_bar5, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar 5 (older PCB) (Electrocoin)" , MACHINE_IS_SKELETON_MECHANICAL) // or just another Bar X set? -GAME( 19??, ec_casbxo, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Casino Bar X (older PCB) (Electrocoin) (set 1)" , MACHINE_IS_SKELETON_MECHANICAL) // this one actually has some code offset changes -GAME( 19??, ec_casbxoa,ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Casino Bar X (older PCB) (Electrocoin) (set 2)" , MACHINE_IS_SKELETON_MECHANICAL) +GAME( 19??, ec_barxo, 0 , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 19??, ec_barxoa, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 19??, ec_barxob, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 19??, ec_barxoc, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 19??, ec_barxod, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 19??, ec_barxoe, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 6)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 19??, ec_bar5, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar 5 (older PCB) (Electrocoin)", MACHINE_IS_SKELETON_MECHANICAL) // or just another Bar X set? +GAME( 19??, ec_casbxo, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Casino Bar X (older PCB) (Electrocoin) (set 1)", MACHINE_IS_SKELETON_MECHANICAL) // this one actually has some code offset changes +GAME( 19??, ec_casbxoa,ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Casino Bar X (older PCB) (Electrocoin) (set 2)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/ecoinf2.cpp b/src/mame/drivers/ecoinf2.cpp index c165b87b42c..dcfcd6c3fe7 100644 --- a/src/mame/drivers/ecoinf2.cpp +++ b/src/mame/drivers/ecoinf2.cpp @@ -62,7 +62,7 @@ public: DECLARE_WRITE8_MEMBER(ox_port5c_out_w); DECLARE_DRIVER_INIT(ecoinf2); - void update_lamps(void) + void update_lamps() { for (int i=0; i<16; i++) { @@ -500,7 +500,7 @@ static INPUT_PORTS_START( ecoinf2 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ecoinf2_oxo, ecoinf2_state ) +static MACHINE_CONFIG_START( ecoinf2_oxo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180,4000000) // some of these hit invalid opcodes with a plain z80, some don't? MCFG_CPU_PROGRAM_MAP(oxo_memmap) @@ -790,13 +790,13 @@ DRIVER_INIT_MEMBER(ecoinf2_state,ecoinf2) } // OXO wh type (Phoenix?) (watchdog on port 5c?) -GAME( 19??, ec_oxocg, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Classic Gold (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_oxocl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Club (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_oxogb, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Golden Bars (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_oxorl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Reels (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_oxorv, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Revolution (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_suprl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Super Reels (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_rcc, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Royal Casino Club (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) - -GAME( 19??, ec_sumnd, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Concept Games Ltd", "Super Multi Nudger (Concept / Electrocoin Oxo) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_sumnc, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Concept Games Ltd", "Casino Super Multi Nudger (Concept / Electrocoin Oxo) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_oxocg, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Classic Gold (Electrocoin) (?)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_oxocl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Club (Electrocoin) (?)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_oxogb, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Golden Bars (Electrocoin) (?)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_oxorl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Reels (Electrocoin) (?)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_oxorv, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Revolution (Electrocoin) (?)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_suprl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Super Reels (Electrocoin) (?)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_rcc, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Royal Casino Club (Electrocoin) (?)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) + +GAME( 19??, ec_sumnd, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Concept Games Ltd", "Super Multi Nudger (Concept / Electrocoin Oxo) (?)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_sumnc, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Concept Games Ltd", "Casino Super Multi Nudger (Concept / Electrocoin Oxo) (?)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) diff --git a/src/mame/drivers/ecoinf3.cpp b/src/mame/drivers/ecoinf3.cpp index 3cb5a6b844c..65de23155e8 100644 --- a/src/mame/drivers/ecoinf3.cpp +++ b/src/mame/drivers/ecoinf3.cpp @@ -660,7 +660,7 @@ static INPUT_PORTS_START( ecoinf3 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ecoinf3_pyramid, ecoinf3_state ) +static MACHINE_CONFIG_START( ecoinf3_pyramid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180,8000000) // certainly not a plain z80 at least, invalid opcodes for that @@ -853,15 +853,15 @@ DRIVER_INIT_MEMBER(ecoinf3_state,ecoinf3_swap) // another hw type (similar to stuff in ecoinf2.c) (watchdog on port 58?) -GAME( 19??, ec_pyram, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3_swap, ROT0, "Electrocoin", "Pyramid (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_pyrama, ec_pyram , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pyramid (v6) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_sphin, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3_swap, ROT0, "Electrocoin", "Sphinx (v2) (Electrocoin) (set 1)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_sphina, ec_sphin , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Sphinx (v2) (Electrocoin) (set 2)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_sphinb, ec_sphin , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Sphinx (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_penni, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pennies From Heaven (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_pennia, ec_penni , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pennies From Heaven (v6) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_stair, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Stairway To Heaven (v11) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_staira, ec_stair , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Stairway To Heaven (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_laby, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Labyrinth (v8) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_labya, ec_laby , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Labyrinth (v10) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) -GAME( 19??, ec_secrt, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Secret Castle (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_pyram, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3_swap, ROT0, "Electrocoin", "Pyramid (v1) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_pyrama, ec_pyram , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pyramid (v6) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_sphin, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3_swap, ROT0, "Electrocoin", "Sphinx (v2) (Electrocoin) (set 1)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_sphina, ec_sphin , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Sphinx (v2) (Electrocoin) (set 2)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_sphinb, ec_sphin , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Sphinx (v1) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_penni, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pennies From Heaven (v1) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_pennia, ec_penni , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pennies From Heaven (v6) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_stair, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Stairway To Heaven (v11) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_staira, ec_stair , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Stairway To Heaven (v1) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_laby, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Labyrinth (v8) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_labya, ec_laby , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Labyrinth (v10) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) +GAME( 19??, ec_secrt, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Secret Castle (v1) (Electrocoin)", MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) diff --git a/src/mame/drivers/ecoinfr.cpp b/src/mame/drivers/ecoinfr.cpp index 20e06a39e78..a7317a3160b 100644 --- a/src/mame/drivers/ecoinfr.cpp +++ b/src/mame/drivers/ecoinfr.cpp @@ -769,7 +769,7 @@ void ecoinfr_state::machine_reset() } -static MACHINE_CONFIG_START( ecoinfr, ecoinfr_state ) +static MACHINE_CONFIG_START( ecoinfr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) MCFG_CPU_PROGRAM_MAP(memmap) @@ -1683,24 +1683,24 @@ DRIVER_INIT_MEMBER(ecoinfr_state,ecoinfrbr) } // 3rd party sets with MAB scrambling, game names might be incorrect, should be the same basic hardware as these tho. -GAME( 19??, ec_barxmab, ec_barx , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Electrocoin", "Bar X (MAB PCB) (Electrocoin)" , GAME_FLAGS) // scrambled roms -GAME( 19??, ec_spbg7mab,ec_big7 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Electrocoin", "Super Big 7 (MAB PCB) (Electrocoin) (?)" , GAME_FLAGS) -GAME( 19??, ec_supbxmab,ec_sbarx , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Electrocoin", "Super Bar X (MAB PCB) (Electrocoin) (?)" , GAME_FLAGS) +GAME( 19??, ec_barxmab, ec_barx , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Electrocoin", "Bar X (MAB PCB) (Electrocoin)", GAME_FLAGS ) // scrambled roms +GAME( 19??, ec_spbg7mab,ec_big7 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Electrocoin", "Super Big 7 (MAB PCB) (Electrocoin) (?)", GAME_FLAGS ) +GAME( 19??, ec_supbxmab,ec_sbarx , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Electrocoin", "Super Bar X (MAB PCB) (Electrocoin) (?)", GAME_FLAGS ) //Games using the MAB scrambling, but identified as being from Concept Games -GAME( 19??, ec_casbxcon,ec_casbx , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Casino Bar X (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_multb, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Multi Bar (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_supbxcon,ec_sbarx , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Super Bar X (MAB PCB) (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_casmb, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Casino Multi Bar (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_supmb, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Super Multi Bar (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_stkex, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Stake X (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_bar7, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Bar 7 (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_fltr, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Flutter (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_rdht7, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Red Hot 7 (MAB PCB?) (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_unkt, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "unknown 'T' (MAB PCB?) (Concept Games Ltd) (?)" , GAME_FLAGS) +GAME( 19??, ec_casbxcon,ec_casbx , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Casino Bar X (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_multb, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Multi Bar (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_supbxcon,ec_sbarx , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Super Bar X (MAB PCB) (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_casmb, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Casino Multi Bar (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_supmb, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Super Multi Bar (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_stkex, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Stake X (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_bar7, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Bar 7 (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_fltr, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Flutter (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_rdht7, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Red Hot 7 (MAB PCB?) (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_unkt, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "unknown 'T' (MAB PCB?) (Concept Games Ltd) (?)", GAME_FLAGS ) //These look more like some variant of Astra Gaming hardware than the MAB PCB, but I can't be sure. Certainly they don't seem to be on the base hardware -GAME( 19??, ec_gold7, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Golden 7 (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_mgbel, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Megabell (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_jackb, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Jackpot Bars (MAB PCB?) (Concept Games Ltd) (?)" , GAME_FLAGS) -GAME( 19??, ec_ndgxs, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Nudge Xcess (MAB PCB?) (Concept Games Ltd) (?)" , GAME_FLAGS) +GAME( 19??, ec_gold7, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Golden 7 (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_mgbel, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Megabell (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_jackb, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Jackpot Bars (MAB PCB?) (Concept Games Ltd) (?)", GAME_FLAGS ) +GAME( 19??, ec_ndgxs, 0 , ecoinfr, ecoinfr_barx, ecoinfr_state, ecoinfrmab, ROT0, "Concept Games Ltd", "Nudge Xcess (MAB PCB?) (Concept Games Ltd) (?)", GAME_FLAGS ) diff --git a/src/mame/drivers/egghunt.cpp b/src/mame/drivers/egghunt.cpp index 56848cd393c..6988f9b9c95 100644 --- a/src/mame/drivers/egghunt.cpp +++ b/src/mame/drivers/egghunt.cpp @@ -417,7 +417,7 @@ void egghunt_state::machine_reset() m_vidram_bank = 0; } -static MACHINE_CONFIG_START( egghunt, egghunt_state ) +static MACHINE_CONFIG_START( egghunt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6 MHz ?*/ @@ -448,7 +448,7 @@ static MACHINE_CONFIG_START( egghunt, egghunt_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -475,4 +475,4 @@ ROM_START( egghunt ) ROM_LOAD( "rom1.bin", 0x00000, 0x80000, CRC(f03589bc) SHA1(4d9c8422ac3c4c3ecba3bcf0ed47b8c7d5903f8c) ) ROM_END -GAME( 1995, egghunt, 0, egghunt, egghunt, driver_device, 0, ROT0, "Invi Image", "Egg Hunt", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, egghunt, 0, egghunt, egghunt, egghunt_state, 0, ROT0, "Invi Image", "Egg Hunt", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp index 60f1648454c..ef45136d2cb 100644 --- a/src/mame/drivers/einstein.cpp +++ b/src/mame/drivers/einstein.cpp @@ -108,14 +108,14 @@ MC6845_UPDATE_ROW( einstein_state::crtc_update_row ) char_code = m_crtc_ram[(ma + i) & 0x07ff]; data_byte = data[(char_code << 3) + (ra & 0x07) + ((ra & 0x08) << 8)]; - bitmap.pix32(y, x + 0) = palette[TMS9928A_PALETTE_SIZE + BIT(data_byte, 7)]; - bitmap.pix32(y, x + 1) = palette[TMS9928A_PALETTE_SIZE + BIT(data_byte, 6)]; - bitmap.pix32(y, x + 2) = palette[TMS9928A_PALETTE_SIZE + BIT(data_byte, 5)]; - bitmap.pix32(y, x + 3) = palette[TMS9928A_PALETTE_SIZE + BIT(data_byte, 4)]; - bitmap.pix32(y, x + 4) = palette[TMS9928A_PALETTE_SIZE + BIT(data_byte, 3)]; - bitmap.pix32(y, x + 5) = palette[TMS9928A_PALETTE_SIZE + BIT(data_byte, 2)]; - bitmap.pix32(y, x + 6) = palette[TMS9928A_PALETTE_SIZE + BIT(data_byte, 1)]; - bitmap.pix32(y, x + 7) = palette[TMS9928A_PALETTE_SIZE + BIT(data_byte, 0)]; + bitmap.pix32(y, x + 0) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 7)]; + bitmap.pix32(y, x + 1) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 6)]; + bitmap.pix32(y, x + 2) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 5)]; + bitmap.pix32(y, x + 3) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 4)]; + bitmap.pix32(y, x + 4) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 3)]; + bitmap.pix32(y, x + 5) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 2)]; + bitmap.pix32(y, x + 6) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 1)]; + bitmap.pix32(y, x + 7) = palette[tms9928a_device::PALETTE_SIZE + BIT(data_byte, 0)]; } } @@ -161,14 +161,14 @@ void einstein_state::einstein_scan_keyboard() { uint8_t data = 0xff; - if (!BIT(m_keyboard_line, 0)) data &= m_line0->read(); - if (!BIT(m_keyboard_line, 1)) data &= m_line1->read(); - if (!BIT(m_keyboard_line, 2)) data &= m_line2->read(); - if (!BIT(m_keyboard_line, 3)) data &= m_line3->read(); - if (!BIT(m_keyboard_line, 4)) data &= m_line4->read(); - if (!BIT(m_keyboard_line, 5)) data &= m_line5->read(); - if (!BIT(m_keyboard_line, 6)) data &= m_line6->read(); - if (!BIT(m_keyboard_line, 7)) data &= m_line7->read(); + if (!BIT(m_keyboard_line, 0)) data &= m_line[0]->read(); + if (!BIT(m_keyboard_line, 1)) data &= m_line[1]->read(); + if (!BIT(m_keyboard_line, 2)) data &= m_line[2]->read(); + if (!BIT(m_keyboard_line, 3)) data &= m_line[3]->read(); + if (!BIT(m_keyboard_line, 4)) data &= m_line[4]->read(); + if (!BIT(m_keyboard_line, 5)) data &= m_line[5]->read(); + if (!BIT(m_keyboard_line, 6)) data &= m_line[6]->read(); + if (!BIT(m_keyboard_line, 7)) data &= m_line[7]->read(); m_keyboard_data = data; } @@ -435,8 +435,8 @@ MACHINE_RESET_MEMBER(einstein_state,einstein2) einstein_state::machine_reset(); /* 80 column card palette */ - m_palette->set_pen_color(TMS9928A_PALETTE_SIZE, rgb_t::black()); - m_palette->set_pen_color(TMS9928A_PALETTE_SIZE + 1, rgb_t(0, 224, 0)); + m_palette->set_pen_color(tms9928a_device::PALETTE_SIZE, rgb_t::black()); + m_palette->set_pen_color(tms9928a_device::PALETTE_SIZE + 1, rgb_t(0, 224, 0)); } MACHINE_START_MEMBER(einstein_state,einstein2) @@ -490,7 +490,7 @@ static ADDRESS_MAP_START( einstein_io, AS_IO, 8, einstein_state ) AM_RANGE(0x10, 0x10) AM_MIRROR(0xff06) AM_DEVREADWRITE(IC_I060, i8251_device, data_r, data_w) AM_RANGE(0x11, 0x11) AM_MIRROR(0xff06) AM_DEVREADWRITE(IC_I060, i8251_device, status_r, control_w) /* block 3, wd1770 floppy controller */ - AM_RANGE(0x18, 0x1b) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I042, wd1770_t, read, write) + AM_RANGE(0x18, 0x1b) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I042, wd1770_device, read, write) /* block 4, internal controls */ AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_READWRITE(einstein_kybintmsk_r, einstein_kybintmsk_w) AM_RANGE(0x21, 0x21) AM_MIRROR(0xff00) AM_WRITE(einstein_adcintmsk_w) @@ -685,7 +685,7 @@ static SLOT_INTERFACE_START( einstein_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( einstein, einstein_state ) +static MACHINE_CONFIG_START( einstein ) /* basic machine hardware */ MCFG_CPU_ADD(IC_I001, Z80, XTAL_X002 / 2) MCFG_CPU_PROGRAM_MAP(einstein_mem) @@ -776,7 +776,7 @@ static MACHINE_CONFIG_DERIVED( einstei2, einstein ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", einstei2) /* 2 additional colors for the 80 column screen */ - MCFG_PALETTE_ADD("palette", TMS9928A_PALETTE_SIZE + 2) + MCFG_PALETTE_ADD("palette", tms9928a_device::PALETTE_SIZE + 2) MCFG_MC6845_ADD("crtc", MC6845, "80column", XTAL_X002 / 4) MCFG_MC6845_SHOW_BORDER_AREA(false) @@ -832,7 +832,7 @@ ROM_END GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, einstein, 0, 0, einstein, einstein, driver_device, 0, "Tatung", "Einstein TC-01", 0 ) -COMP( 1984, einstei2, einstein, 0, einstei2, einstein_80col, driver_device, 0, "Tatung", "Einstein TC-01 + 80 column device", 0 ) -COMP( 1984, einst256, 0, 0, einstein, einstein, driver_device, 0, "Tatung", "Einstein 256", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, einstein, 0, 0, einstein, einstein, einstein_state, 0, "Tatung", "Einstein TC-01", 0 ) +COMP( 1984, einstei2, einstein, 0, einstei2, einstein_80col, einstein_state, 0, "Tatung", "Einstein TC-01 + 80 column device", 0 ) +COMP( 1984, einst256, 0, 0, einstein, einstein, einstein_state, 0, "Tatung", "Einstein 256", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/electra.cpp b/src/mame/drivers/electra.cpp index 7ef23853bec..5ee0471face 100644 --- a/src/mame/drivers/electra.cpp +++ b/src/mame/drivers/electra.cpp @@ -51,7 +51,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -94,7 +94,7 @@ void electra_state::video_start() { } -static MACHINE_CONFIG_START( electra, electra_state ) +static MACHINE_CONFIG_START( electra ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -128,4 +128,4 @@ ROM_START( avenger ) ROM_END -GAME( 1975, avenger, 0, electra, 0, driver_device, 0, ROT0, "Electra", "Avenger [TTL]", MACHINE_IS_SKELETON ) +GAME( 1975, avenger, 0, electra, 0, electra_state, 0, ROT0, "Electra", "Avenger [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/electron.cpp b/src/mame/drivers/electron.cpp index d2e90142081..52226514a12 100644 --- a/src/mame/drivers/electron.cpp +++ b/src/mame/drivers/electron.cpp @@ -202,7 +202,7 @@ static INPUT_PORTS_START( electron ) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("BREAK") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12)) PORT_CHANGED_MEMBER(DEVICE_SELF, electron_state, trigger_reset, 0) INPUT_PORTS_END -static MACHINE_CONFIG_START( electron, electron_state ) +static MACHINE_CONFIG_START( electron ) MCFG_CPU_ADD( "maincpu", M6502, XTAL_16MHz/8 ) MCFG_CPU_PROGRAM_MAP( electron_mem ) @@ -284,6 +284,6 @@ ROM_END #define rom_btm2105 rom_electron -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP ( 1983, electron, 0, 0, electron, electron, driver_device, 0, "Acorn", "Acorn Electron", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -COMP ( 1985, btm2105, electron, 0, btm2105, electron, driver_device, 0, "British Telecom Business Systems", "BT Merlin M2105", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP ( 1983, electron, 0, 0, electron, electron, electron_state, 0, "Acorn", "Acorn Electron", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +COMP ( 1985, btm2105, electron, 0, btm2105, electron, electron_state, 0, "British Telecom Business Systems", "BT Merlin M2105", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/elekscmp.cpp b/src/mame/drivers/elekscmp.cpp index 9fa5088b8ae..bf5b9882a55 100644 --- a/src/mame/drivers/elekscmp.cpp +++ b/src/mame/drivers/elekscmp.cpp @@ -141,7 +141,7 @@ static INPUT_PORTS_START( elekscmp ) PORT_BIT(0xfe, IP_ACTIVE_HIGH, IPT_UNUSED) INPUT_PORTS_END -static MACHINE_CONFIG_START( elekscmp, elekscmp_state ) +static MACHINE_CONFIG_START( elekscmp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",INS8060, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(elekscmp_mem) @@ -161,5 +161,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, elekscmp, 0, 0, elekscmp, elekscmp, driver_device, 0, "Elektor Electronics", "Elektor SC/MP", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1977, elekscmp, 0, 0, elekscmp, elekscmp, elekscmp_state, 0, "Elektor Electronics", "Elektor SC/MP", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/elf.cpp b/src/mame/drivers/elf.cpp index c953f21a327..40979ef6ef1 100644 --- a/src/mame/drivers/elf.cpp +++ b/src/mame/drivers/elf.cpp @@ -230,7 +230,7 @@ QUICKLOAD_LOAD_MEMBER( elf2_state, elf ) return image_init_result::PASS; } -static MACHINE_CONFIG_START( elf2, elf2_state ) +static MACHINE_CONFIG_START( elf2 ) /* basic machine hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_579545MHz/2) MCFG_CPU_PROGRAM_MAP(elf2_mem) @@ -285,5 +285,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, elf2, 0, 0, elf2, elf2, driver_device, 0, "Netronics", "Elf II", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1978, elf2, 0, 0, elf2, elf2, elf2_state, 0, "Netronics", "Elf II", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/elwro800.cpp b/src/mame/drivers/elwro800.cpp index 8711f3177ea..57eb89e1666 100644 --- a/src/mame/drivers/elwro800.cpp +++ b/src/mame/drivers/elwro800.cpp @@ -554,7 +554,7 @@ static GFXDECODE_START( elwro800 ) GFXDECODE_END -static MACHINE_CONFIG_START( elwro800, elwro800_state ) +static MACHINE_CONFIG_START( elwro800 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, 3500000) /* 3.5 MHz */ @@ -572,7 +572,7 @@ static MACHINE_CONFIG_START( elwro800, elwro800_state ) MCFG_SCREEN_SIZE(SPEC_SCREEN_WIDTH, SPEC_SCREEN_HEIGHT) MCFG_SCREEN_VISIBLE_AREA(0, SPEC_SCREEN_WIDTH-1, 0, SPEC_SCREEN_HEIGHT-1) MCFG_SCREEN_UPDATE_DRIVER(elwro800_state, screen_update_spectrum ) - MCFG_SCREEN_VBLANK_DRIVER(elwro800_state, screen_eof_spectrum) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(elwro800_state, screen_vblank_spectrum)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 16) @@ -648,5 +648,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, elwro800, 0, 0, elwro800, elwro800, driver_device, 0, "Elwro", "800 Junior", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, elwro800, 0, 0, elwro800, elwro800, elwro800_state, 0, "Elwro", "800 Junior", 0 ) diff --git a/src/mame/drivers/embargo.cpp b/src/mame/drivers/embargo.cpp index c783102994c..7252d429181 100644 --- a/src/mame/drivers/embargo.cpp +++ b/src/mame/drivers/embargo.cpp @@ -254,7 +254,7 @@ void embargo_state::machine_reset() * *************************************/ -static MACHINE_CONFIG_START( embargo, embargo_state ) +static MACHINE_CONFIG_START( embargo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 625000) @@ -299,4 +299,4 @@ ROM_END * *************************************/ -GAME( 1977, embargo, 0, embargo, embargo, driver_device, 0, ROT0, "Cinematronics", "Embargo", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1977, embargo, 0, embargo, embargo, embargo_state, 0, ROT0, "Cinematronics", "Embargo", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/enigma2.cpp b/src/mame/drivers/enigma2.cpp index 0e9ea57593e..7d979fed997 100644 --- a/src/mame/drivers/enigma2.cpp +++ b/src/mame/drivers/enigma2.cpp @@ -589,7 +589,7 @@ static INPUT_PORTS_START( enigma2a ) INPUT_PORTS_END -static MACHINE_CONFIG_START( enigma2, enigma2_state ) +static MACHINE_CONFIG_START( enigma2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -617,7 +617,7 @@ static MACHINE_CONFIG_START( enigma2, enigma2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( enigma2a, enigma2_state ) +static MACHINE_CONFIG_START( enigma2a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, CPU_CLOCK) @@ -706,6 +706,6 @@ DRIVER_INIT_MEMBER(enigma2_state,enigma2) -GAME( 1981, enigma2, 0, enigma2, enigma2, enigma2_state, enigma2, ROT270, "Game Plan (Zilec Electronics license)", "Enigma II", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, enigma2a, enigma2, enigma2a, enigma2a, enigma2_state, enigma2, ROT270, "Zilec Electronics", "Enigma II (Space Invaders hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, enigma2b, enigma2, enigma2a, enigma2a, enigma2_state, enigma2, ROT270, "Zilec Electronics", "Phantoms II (Space Invaders hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, enigma2, 0, enigma2, enigma2, enigma2_state, enigma2, ROT270, "Game Plan (Zilec Electronics license)", "Enigma II", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, enigma2a, enigma2, enigma2a, enigma2a, enigma2_state, enigma2, ROT270, "Zilec Electronics", "Enigma II (Space Invaders hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, enigma2b, enigma2, enigma2a, enigma2a, enigma2_state, enigma2, ROT270, "Zilec Electronics", "Phantoms II (Space Invaders hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/enmirage.cpp b/src/mame/drivers/enmirage.cpp index 01a4ca30f77..7f5d00f250b 100644 --- a/src/mame/drivers/enmirage.cpp +++ b/src/mame/drivers/enmirage.cpp @@ -54,10 +54,10 @@ #include "mirage.lh" -class mirage_state : public driver_device +class enmirage_state : public driver_device { public: - mirage_state(const machine_config &mconfig, device_type type, const char *tag) + enmirage_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_fdc(*this, "wd1772"), @@ -65,29 +65,30 @@ public: { } - required_device m_maincpu; - required_device m_fdc; - required_device m_via; - - virtual void machine_reset() override; - - int last_sndram_bank; - DECLARE_FLOPPY_FORMATS( floppy_formats ); DECLARE_DRIVER_INIT(mirage); - virtual void video_start() override; uint32_t screen_update_mirage(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); DECLARE_WRITE8_MEMBER(mirage_via_write_porta); DECLARE_WRITE8_MEMBER(mirage_via_write_portb); DECLARE_WRITE_LINE_MEMBER(mirage_doc_irq); DECLARE_READ8_MEMBER(mirage_adc_read); +protected: + virtual void machine_reset() override; + virtual void video_start() override; + + required_device m_maincpu; + required_device m_fdc; + required_device m_via; + + int last_sndram_bank; + uint8_t m_l_segs, m_r_segs; int m_l_hi, m_r_hi; }; -FLOPPY_FORMATS_MEMBER( mirage_state::floppy_formats ) +FLOPPY_FORMATS_MEMBER( enmirage_state::floppy_formats ) FLOPPY_ESQ8IMG_FORMAT FLOPPY_FORMATS_END @@ -95,32 +96,32 @@ static SLOT_INTERFACE_START( ensoniq_floppies ) SLOT_INTERFACE( "35dd", FLOPPY_35_DD ) SLOT_INTERFACE_END -WRITE_LINE_MEMBER(mirage_state::mirage_doc_irq) +WRITE_LINE_MEMBER(enmirage_state::mirage_doc_irq) { // m_maincpu->set_input_line(M6809_IRQ_LINE, state); } -READ8_MEMBER(mirage_state::mirage_adc_read) +READ8_MEMBER(enmirage_state::mirage_adc_read) { return 0x00; } -void mirage_state::video_start() +void enmirage_state::video_start() { } -uint32_t mirage_state::screen_update_mirage(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +uint32_t enmirage_state::screen_update_mirage(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return 0; } -void mirage_state::machine_reset() +void enmirage_state::machine_reset() { last_sndram_bank = 0; membank("sndbank")->set_base(memregion("es5503")->base() ); } -static ADDRESS_MAP_START( mirage_map, AS_PROGRAM, 8, mirage_state ) +static ADDRESS_MAP_START( mirage_map, AS_PROGRAM, 8, enmirage_state ) AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("sndbank") // 32k window on 128k of wave RAM AM_RANGE(0x8000, 0xbfff) AM_RAM // main RAM AM_RANGE(0xc000, 0xdfff) AM_RAM // expansion RAM @@ -128,7 +129,7 @@ static ADDRESS_MAP_START( mirage_map, AS_PROGRAM, 8, mirage_state ) AM_RANGE(0xe101, 0xe101) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w) AM_RANGE(0xe200, 0xe2ff) AM_DEVREADWRITE("via6522", via6522_device, read, write) AM_RANGE(0xe400, 0xe4ff) AM_NOP - AM_RANGE(0xe800, 0xe803) AM_DEVREADWRITE("wd1772", wd1772_t, read, write) + AM_RANGE(0xe800, 0xe803) AM_DEVREADWRITE("wd1772", wd1772_device, read, write) AM_RANGE(0xec00, 0xecef) AM_DEVREADWRITE("es5503", es5503_device, read, write) AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("osrom", 0) ADDRESS_MAP_END @@ -137,7 +138,7 @@ ADDRESS_MAP_END // bits 0-2: column select from 0-7 // bits 3/4 = right and left LED enable // bits 5/6/7 keypad rows 0/1/2 return -WRITE8_MEMBER(mirage_state::mirage_via_write_porta) +WRITE8_MEMBER(enmirage_state::mirage_via_write_porta) { uint8_t seg = data & 7; static const int segconv[8] = @@ -193,7 +194,7 @@ WRITE8_MEMBER(mirage_state::mirage_via_write_porta) // bit 1: OUT upper/lower bank (64k halves) // bit 0: OUT bank 0/bank 1 (32k halves) -WRITE8_MEMBER(mirage_state::mirage_via_write_portb) +WRITE8_MEMBER(enmirage_state::mirage_via_write_portb) { int bank = 0; @@ -207,7 +208,7 @@ WRITE8_MEMBER(mirage_state::mirage_via_write_portb) } } -static MACHINE_CONFIG_START( mirage, mirage_state ) +static MACHINE_CONFIG_START( mirage ) MCFG_CPU_ADD("maincpu", M6809E, 4000000) MCFG_CPU_PROGRAM_MAP(mirage_map) @@ -216,15 +217,15 @@ static MACHINE_CONFIG_START( mirage, mirage_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_ES5503_ADD("es5503", 7000000) MCFG_ES5503_OUTPUT_CHANNELS(2) - MCFG_ES5503_IRQ_FUNC(WRITELINE(mirage_state, mirage_doc_irq)) - MCFG_ES5503_ADC_FUNC(READ8(mirage_state, mirage_adc_read)) + MCFG_ES5503_IRQ_FUNC(WRITELINE(enmirage_state, mirage_doc_irq)) + MCFG_ES5503_ADC_FUNC(READ8(enmirage_state, mirage_adc_read)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MCFG_DEVICE_ADD("via6522", VIA6522, 1000000) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mirage_state, mirage_via_write_porta)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mirage_state, mirage_via_write_portb)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(enmirage_state, mirage_via_write_porta)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(enmirage_state, mirage_via_write_portb)) MCFG_VIA6522_IRQ_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE)) MCFG_DEVICE_ADD("acia6850", ACIA6850, 0) @@ -234,7 +235,7 @@ static MACHINE_CONFIG_START( mirage, mirage_state ) MCFG_WD_FDC_INTRQ_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_WD_FDC_DRQ_CALLBACK(INPUTLINE("maincpu", M6809_IRQ_LINE)) - MCFG_FLOPPY_DRIVE_ADD("wd1772:0", ensoniq_floppies, "35dd", mirage_state::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("wd1772:0", ensoniq_floppies, "35dd", enmirage_state::floppy_formats) MACHINE_CONFIG_END static INPUT_PORTS_START( mirage ) @@ -247,7 +248,7 @@ ROM_START( enmirage ) ROM_REGION(0x20000, "es5503", ROMREGION_ERASE) ROM_END -DRIVER_INIT_MEMBER(mirage_state,mirage) +DRIVER_INIT_MEMBER(enmirage_state,mirage) { floppy_connector *con = machine().device("wd1772:0"); floppy_image_device *floppy = con ? con->get_device() : nullptr; @@ -284,4 +285,4 @@ DRIVER_INIT_MEMBER(mirage_state,mirage) m_via->write_pb7(0); } -CONS( 1984, enmirage, 0, 0, mirage, mirage, mirage_state, mirage, "Ensoniq", "Ensoniq Mirage", MACHINE_NOT_WORKING ) +CONS( 1984, enmirage, 0, 0, mirage, mirage, enmirage_state, mirage, "Ensoniq", "Ensoniq Mirage", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/eolith.cpp b/src/mame/drivers/eolith.cpp index 7aeb33a8f28..fd2bb7e2cf2 100644 --- a/src/mame/drivers/eolith.cpp +++ b/src/mame/drivers/eolith.cpp @@ -544,7 +544,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( eolith45, eolith_state ) +static MACHINE_CONFIG_START( eolith45 ) MCFG_CPU_ADD("maincpu", E132N, 45000000) /* 45 MHz */ MCFG_CPU_PROGRAM_MAP(eolith_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", eolith_state, eolith_speedup, "screen", 0, 1) diff --git a/src/mame/drivers/eolith16.cpp b/src/mame/drivers/eolith16.cpp index d2f8d273ad0..4934516b59e 100644 --- a/src/mame/drivers/eolith16.cpp +++ b/src/mame/drivers/eolith16.cpp @@ -172,7 +172,7 @@ PALETTE_INIT_MEMBER(eolith16_state,eolith16) -static MACHINE_CONFIG_START( eolith16, eolith16_state ) +static MACHINE_CONFIG_START( eolith16 ) MCFG_CPU_ADD("maincpu", E116T, 60000000) /* no internal multiplier */ MCFG_CPU_PROGRAM_MAP(eolith16_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", eolith16_state, eolith_speedup, "screen", 0, 1) @@ -195,7 +195,7 @@ static MACHINE_CONFIG_START( eolith16, eolith16_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/ep64.cpp b/src/mame/drivers/ep64.cpp index 9f26f2642eb..ed23248dc19 100644 --- a/src/mame/drivers/ep64.cpp +++ b/src/mame/drivers/ep64.cpp @@ -556,7 +556,7 @@ void ep64_state::machine_reset() // MACHINE_CONFIG( ep64 ) //------------------------------------------------- -static MACHINE_CONFIG_START( ep64, ep64_state ) +static MACHINE_CONFIG_START( ep64 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_8MHz/2) MCFG_CPU_PROGRAM_MAP(ep64_mem) @@ -653,7 +653,7 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1985, ep64, 0, 0, ep64, ep64, driver_device, 0, "Enterprise Computers", "Enterprise Sixty Four", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -COMP( 1985, phc64, ep64, 0, ep64, ep64, driver_device, 0, "Hegener & Glaser", "Mephisto PHC 64 (Germany)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -COMP( 1986, ep128, ep64, 0, ep128, ep64, driver_device, 0, "Enterprise Computers", "Enterprise One Two Eight", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, ep64, 0, 0, ep64, ep64, ep64_state, 0, "Enterprise Computers", "Enterprise Sixty Four", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +COMP( 1985, phc64, ep64, 0, ep64, ep64, ep64_state, 0, "Hegener & Glaser", "Mephisto PHC 64 (Germany)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +COMP( 1986, ep128, ep64, 0, ep128, ep64, ep64_state, 0, "Enterprise Computers", "Enterprise One Two Eight", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/epos.cpp b/src/mame/drivers/epos.cpp index 9d6dfb9b410..f03eb0c3068 100644 --- a/src/mame/drivers/epos.cpp +++ b/src/mame/drivers/epos.cpp @@ -13,11 +13,15 @@ - Super Glob seems like a later revision of The Glob, the most obvious difference being an updated service mode. - These games don't have cocktail mode. - - The divisor 4 was derived using the timing loop used to split the screen - in the middle. This loop takes roughly 24200 cycles, giving + - The CPU clock divisor 4 was derived using the timing loop used to split + the screen in the middle. This loop takes roughly 24200 cycles, giving 2500 + (24200 - 2500) * 2 * 60 = 2754000 = 2.75MHz for the CPU speed, assuming 60 fps and a 2500 cycle VBLANK period. - This should be easy to check since the schematics are available, . + This also matches the IGMO schematic, as it is the /CLK signal, which is + derived from the 11MHz xtal by dividing it down by two 74LS193 chips, one + (U92) dividing the clock by 2, and another (U91) having 3 taps, further + dividing the already divided clock by 2 (/CLK), 4 (/PLOAD) and 8 (CLOCK). + The CLOCK signal drives the AY. - I think theglob2 is earlier than theglob. They only differ in one routine, but it appears to be a bug fix. Also, theglob3 appears to be even older. @@ -25,10 +29,11 @@ - Super Blob uses a busy loop during the color test to split the screen between the two palettes. This effect is not emulated, but since both - halfs of the palette are identical, this is not an issue. See $039c. + halves of the palette are identical, this is not an issue. See $039c. The other games have a different color test, not using the busy loop. - - Fix flip screen support for The Dealer and Beastie Feastie. + - dealer/beastf/revngr84: "PSG registers not OK" in service mode thru + sound menu, internal ay8910 not right? ***************************************************************************/ @@ -38,6 +43,7 @@ #include "cpu/z80/z80.h" #include "machine/i8255.h" #include "machine/watchdog.h" +#include "machine/nvram.h" #include "sound/ay8910.h" #include "screen.h" #include "speaker.h" @@ -70,11 +76,10 @@ static ADDRESS_MAP_START( epos_map, AS_PROGRAM, 8, epos_state ) AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") ADDRESS_MAP_END - static ADDRESS_MAP_START( dealer_map, AS_PROGRAM, 8, epos_state ) AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1") AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("bank2") - AM_RANGE(0x7000, 0x7fff) AM_RAM + AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") ADDRESS_MAP_END @@ -84,7 +89,7 @@ ADDRESS_MAP_END * *************************************/ -static ADDRESS_MAP_START( io_map, AS_IO, 8, epos_state ) +static ADDRESS_MAP_START( epos_io_map, AS_IO, 8, epos_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(port_1_w) @@ -95,15 +100,16 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( dealer_io_map, AS_IO, 8, epos_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x0f) AM_WRITE(dealer_pal_w) AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) AM_RANGE(0x20, 0x24) AM_WRITE(dealer_decrypt_rom) AM_RANGE(0x34, 0x34) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x38, 0x38) AM_READ_PORT("DSW") + AM_RANGE(0x38, 0x38) AM_DEVREAD("aysnd", ay8910_device, data_r) AM_RANGE(0x3c, 0x3c) AM_DEVWRITE("aysnd", ay8910_device, address_w) AM_RANGE(0x40, 0x40) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) ADDRESS_MAP_END -READ8_MEMBER(epos_state::read_prta) +READ8_MEMBER(epos_state::i8255_porta_r) { uint8_t data = 0xff; @@ -121,12 +127,24 @@ READ8_MEMBER(epos_state::read_prta) There's a separate ROM check for banked U04 at 30F3. It looks like dealer/revenger uses ppi8255 to control bankswitching. */ -WRITE8_MEMBER(epos_state::write_prtc) +WRITE8_MEMBER(epos_state::i8255_portc_w) { membank("bank2")->set_entry(data & 0x01); m_input_multiplex = (data >> 5) & 3; } +READ8_MEMBER(epos_state::ay_porta_mpx_r) +{ + return (m_ay_porta_multiplex ? 0xFF : ioport("DSW")->read()); +} + +WRITE8_MEMBER(epos_state::flip_screen_w) +{ + flip_screen_set(BIT(data, 7)); + // bit 6: ay8910 port A/B multiplexer read + m_ay_porta_multiplex = BIT(data, 6); +} + /************************************* * * Port definitions @@ -358,11 +376,11 @@ static INPUT_PORTS_START( dealer ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("INPUTS") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -408,16 +426,18 @@ INPUT_PORTS_END MACHINE_START_MEMBER(epos_state,epos) { - save_item(NAME(m_palette)); + save_item(NAME(m_palette_bank)); save_item(NAME(m_counter)); save_item(NAME(m_input_multiplex)); + save_item(NAME(m_ay_porta_multiplex)); } void epos_state::machine_reset() { - m_palette = 0; + m_palette_bank = 0; m_counter = 0; m_input_multiplex = 3; + m_ay_porta_multiplex = 0; } @@ -433,12 +453,12 @@ MACHINE_START_MEMBER(epos_state,dealer) MACHINE_START_CALL_MEMBER(epos); } -static MACHINE_CONFIG_START( epos, epos_state ) +static MACHINE_CONFIG_START( epos ) /* EPOS TRISTAR 8000 PCB */ /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, 11000000/4) /* 2.75 MHz (see notes) */ + MCFG_CPU_ADD("maincpu", Z80, XTAL_11MHz/4) /* 2.75 MHz schematics confirm 11MHz XTAL (see notes) */ MCFG_CPU_PROGRAM_MAP(epos_map) - MCFG_CPU_IO_MAP(io_map) + MCFG_CPU_IO_MAP(epos_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", epos_state, irq0_line_hold) MCFG_WATCHDOG_ADD("watchdog") @@ -451,27 +471,36 @@ static MACHINE_CONFIG_START( epos, epos_state ) MCFG_SCREEN_VISIBLE_AREA(0, 271, 0, 235) MCFG_SCREEN_UPDATE_DRIVER(epos_state, screen_update) + MCFG_PALETTE_ADD("palette", 32) + MCFG_PALETTE_INIT_OWNER(epos_state, epos) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("aysnd", AY8910, 11000000/4) + MCFG_SOUND_ADD("aysnd", AY8912, XTAL_11MHz/16) /* 0.6875 MHz, confirmed from schematics */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dealer, epos_state ) +static MACHINE_CONFIG_START( dealer ) /* EPOS TRISTAR 9000 PCB */ /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, 11000000/4) /* 2.75 MHz (see notes) */ + MCFG_CPU_ADD("maincpu", Z80, XTAL_22_1184MHz/8) /* 2.7648 MHz (measured) */ MCFG_CPU_PROGRAM_MAP(dealer_map) MCFG_CPU_IO_MAP(dealer_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", epos_state, irq0_line_hold) MCFG_DEVICE_ADD("ppi8255", I8255A, 0) - MCFG_I8255_IN_PORTA_CB(READ8(epos_state, read_prta)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(epos_state, write_prtc)) + MCFG_I8255_IN_PORTA_CB(READ8(epos_state, i8255_porta_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(epos_state, i8255_portc_w)) + MCFG_NVRAM_ADD_0FILL("nvram") + MCFG_MACHINE_START_OVERRIDE(epos_state,dealer) - + + // RAM-based palette instead of prom + MCFG_PALETTE_ADD_INIT_BLACK("palette", 32) +// MCFG_PALETTE_INIT_OWNER(epos_state, epos) + MCFG_WATCHDOG_ADD("watchdog") /* video hardware */ @@ -484,10 +513,11 @@ static MACHINE_CONFIG_START( dealer, epos_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("aysnd", AY8910, 11000000/4) + MCFG_SOUND_ADD("aysnd", AY8910, XTAL_22_1184MHz/32) /* 0.6912 MHz (measured) */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + MCFG_AY8910_PORT_A_READ_CB(READ8(epos_state, ay_porta_mpx_r)) // port a writes? - MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(epos_state, flip_screen_w)) + MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(epos_state, flip_screen_w)) // flipscreen and ay port a multiplex control MACHINE_CONFIG_END @@ -496,7 +526,8 @@ MACHINE_CONFIG_END * ROM definitions * *************************************/ - + +// Tristar 8000 boards: ROM_START( megadon ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "2732u10b.bin", 0x0000, 0x1000, CRC(af8fbe80) SHA1(2d7857616462112fe17343a9357ee51d8f965a0f) ) @@ -609,57 +640,97 @@ ROM_START( igmo ) ROM_END +// Tristar 9000 boards: ROM_START( dealer ) ROM_REGION( 0x40000, "maincpu", 0 ) ROM_LOAD( "u1.bin", 0x0000, 0x2000, CRC(e06f3563) SHA1(0d58cd1f2e1ca89adb9c64d7dd520bb1f2d50f1a) ) ROM_LOAD( "u2.bin", 0x2000, 0x2000, CRC(726bbbd6) SHA1(3538f3d655899c2a0f984c43fb7545ea4be1b231) ) ROM_LOAD( "u3.bin", 0x4000, 0x2000, CRC(ab721455) SHA1(a477da0590e0431172baae972e765473e19dcbff) ) ROM_LOAD( "u4.bin", 0x6000, 0x2000, CRC(ddb903e4) SHA1(4c06a2048b1c6989c363b110a17c33180025b9c8) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "82s123.u66", 0x0000, 0x0020, NO_DUMP ) /* missing */ + + ROM_REGION( 0x1000, "nvram", 0) + ROM_LOAD( "dealer.nv", 0, 0x1000, CRC(a6f88459) SHA1(1deda2a71433c97fe3e5cb39defc285f4fa9c9b8) ) ROM_END /* -Revenger EPOS 1984 +Revenger 84 - EPOS EPOS TRISTAR 9000 ++-------------------------------+ +| | +| DSW | +| 4116 4116 | +| 8910 Z80A 4116 4116 | +| 4116 4116 | +| 6116 BAT 4116 4116 | +| 6116 4116 4116 | +| U4 4116 4116 74S189 | +| U3 4116 4116 74S189 | +| U2 PAL.U13 4116 4116 | +| U1 PAL10L8 8255 DM74S288N | +| 22.1184MHz| +| | +| LM384N | +| VOL | ++--|28 pin Connector|-----------+ + + CPU: Z80A 2.764800 MHz [22.1184MHz/8] +Sound: AY-3-8910 0.691200 MHz [22.1184MHz/32] + XTAL: 22.1184MHz + DSW: 8 position dipswitch bank + BAT: Battery (battery backed up RAM for high scores) + VOL: Volume Pot + +28 Pin non-JAMMA connector + + 4 ROMs at U1 through U4 are 2764 type + BPROM at U60 is a DM74S288N + 2 pals, U12 is a PAL10L8, U13 PAL type is unknown (markings scrubbed off) + +4116 RAS is = 2.764800 MHz [22.1184MHz/8] +4116 CAS is = 1.382400 MHz [22.1184MHz/16] - - - 8910 Z80A 4116 4116 - 4116 4116 - 4116 4116 - 6116 4116 4116 - 6116 4116 4116 - U4 4116 4116 74S189 - U3 4116 4116 74S189 - U2 4116 4116 - U1 8255 - 22.1184MHz */ -ROM_START( revenger ) +ROM_START( revngr84 ) ROM_REGION( 0x40000, "maincpu", 0 ) - ROM_LOAD( "r06124.u1", 0x0000, 0x2000, CRC(fad1a2a5) BAD_DUMP SHA1(a31052c91fe67e2e90441abc40b6483f921ecfe3) ) - ROM_LOAD( "r06124.u2", 0x2000, 0x2000, CRC(a8e0ee7b) BAD_DUMP SHA1(f6f78e8ce40eab07de461b364876c1eb4a78d96e) ) - ROM_LOAD( "r06124.u3", 0x4000, 0x2000, CRC(cca414a5) BAD_DUMP SHA1(1c9dd3ff63d57e9452e63083cdbd7f5d693bb686) ) - ROM_LOAD( "r06124.u4", 0x6000, 0x2000, CRC(0b81c303) BAD_DUMP SHA1(9022d18dec11312eb4bb471c22b563f5f897b4f7) ) + ROM_LOAD( "u_1__revenger__r06254__(c)_epos_corp.m5l2764k.u1", 0x0000, 0x2000, CRC(308f231f) SHA1(cf06695601bd0387e4fcb64d9b34143323e98b07) ) /* labeled as "U 1 // REVENGER // R06254 // (C) EPOS CORP" (hand written R06254 over R06124) */ + ROM_LOAD( "u_2__revenger__r06254__(c)_epos_corp.m5l2764k.u2", 0x2000, 0x2000, CRC(e80bbfb4) SHA1(9302beaef8bbb7376b6a20e9ee5adbcf60d66dd8) ) /* labeled as "U 2 // REVENGER // R06254 // (C) EPOS CORP" (hand written R06254 over R06124) */ + ROM_LOAD( "u_3__revenger__r06254__(c)_epos_corp.m5l2764k.u3", 0x4000, 0x2000, CRC(d9270929) SHA1(a95034b5387a40e02f04bdfa79e1d8e65dad30fe) ) /* labeled as "U 3 // REVENGER // R06254 // (C) EPOS CORP" (hand written R06254 over R06124) */ + ROM_LOAD( "u_4__revenger__r06254__(c)_epos_corp.m5l2764k.u4", 0x6000, 0x2000, CRC(d6e6cfa8) SHA1(f10131bb2e9d088c7b6d6a5d5520073d78ad69cc) ) /* labeled as "U 4 // REVENGER // R06254 // (C) EPOS CORP" (hand written R06254 over R06124) */ ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "82s123.u66", 0x0000, 0x0020, NO_DUMP ) /* missing */ + ROM_LOAD( "dm74s288n.u60", 0x0000, 0x0020, CRC(be2b0641) SHA1(26982903b6d942af8e0a526412d8e01978d76420) ) // unknown purpose + + ROM_REGION( 0x1000, "nvram", 0) + ROM_LOAD( "revngr84.nv", 0, 0x1000, CRC(a4417770) SHA1(92eded82db0810e7818d2f52a0497032f390fcc1) ) ROM_END -ROM_START( beastf ) +ROM_START( revenger ) ROM_REGION( 0x40000, "maincpu", 0 ) - ROM_LOAD( "bf-b09084.u1", 0x0000, 0x2000, CRC(820d4019) SHA1(e953aaeeb626776dd86c521066b553d054ae4422) ) - ROM_LOAD( "bf-b09084.u2", 0x2000, 0x2000, CRC(967405d8) SHA1(dd763be909e6966521b01ee878df9cef865c3b30) ) - ROM_LOAD( "bf-b09084.u3", 0x4000, 0x2000, CRC(3edb5381) SHA1(14c236045e6df7a475c32222652860689d4f68ce) ) - ROM_LOAD( "bf-b09084.u4", 0x6000, 0x2000, CRC(c8cd9640) SHA1(72da881b903ead873cc3f4df27646d1ffdd63c1c) ) + // these roms probably had the same "U x // REVENGER // R06124 // (C) EPOS CORP" printed labels as the newer set above, but without the hand-penned "25" in r06254 written over the printed "12" of r06124 as above + ROM_LOAD( "r06124.u1", 0x0000, 0x2000, BAD_DUMP CRC(fad1a2a5) SHA1(a31052c91fe67e2e90441abc40b6483f921ecfe3) ) + ROM_LOAD( "r06124.u2", 0x2000, 0x2000, BAD_DUMP CRC(a8e0ee7b) SHA1(f6f78e8ce40eab07de461b364876c1eb4a78d96e) ) + ROM_LOAD( "r06124.u3", 0x4000, 0x2000, BAD_DUMP CRC(cca414a5) SHA1(1c9dd3ff63d57e9452e63083cdbd7f5d693bb686) ) + ROM_LOAD( "r06124.u4", 0x6000, 0x2000, BAD_DUMP CRC(0b81c303) SHA1(9022d18dec11312eb4bb471c22b563f5f897b4f7) ) + + ROM_REGION( 0x0020, "proms", 0 ) /* this PROM not included in this dump, but assumed to be the same as above set */ + ROM_LOAD( "dm74s288n.u60", 0x0000, 0x0020, CRC(be2b0641) SHA1(26982903b6d942af8e0a526412d8e01978d76420) ) // unknown purpose + + ROM_REGION( 0x1000, "nvram", 0) + ROM_LOAD( "revngr84.nv", 0, 0x1000, CRC(a4417770) SHA1(92eded82db0810e7818d2f52a0497032f390fcc1) ) +ROM_END - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "82s123.u66", 0x0000, 0x0020, CRC(f4f6ddc5) BAD_DUMP SHA1(cab915acbefb5f451f538dd538bf9b3dd14bb1f5) ) // not dumped, taken from suprglob +ROM_START( beastf ) + ROM_REGION( 0x40000, "maincpu", 0 ) + ROM_LOAD( "u_1__beastie__feastie__b09084.m5l2764k.u1", 0x0000, 0x2000, CRC(820d4019) SHA1(e953aaeeb626776dd86c521066b553d054ae4422) ) /* labeled as "U 1 // BEASTIE // FEASTIE // B09084" */ + ROM_LOAD( "u_2__beastie__feastie__b09084.m5l2764k.u2", 0x2000, 0x2000, CRC(967405d8) SHA1(dd763be909e6966521b01ee878df9cef865c3b30) ) /* labeled as "U 2 // BEASTIE // FEASTIE // B09084" */ + ROM_LOAD( "u_3__beastie__feastie__b09084.m5l2764k.u3", 0x4000, 0x2000, CRC(3edb5381) SHA1(14c236045e6df7a475c32222652860689d4f68ce) ) /* labeled as "U 3 // BEASTIE // FEASTIE // B09084" */ + ROM_LOAD( "u_4__beastie__feastie__b09084.m5l2764k.u4", 0x6000, 0x2000, CRC(c8cd9640) SHA1(72da881b903ead873cc3f4df27646d1ffdd63c1c) ) /* labeled as "U 4 // BEASTIE // FEASTIE // B09084" */ + + ROM_REGION( 0x1000, "nvram", 0) + ROM_LOAD( "beastf.nv", 0, 0x1000, CRC(98017b09) SHA1(0e2b2071bb47fc179d5bc36ef9431a9d2727d36a) ) ROM_END DRIVER_INIT_MEMBER(epos_state,dealer) @@ -709,13 +780,17 @@ DRIVER_INIT_MEMBER(epos_state,dealer) * *************************************/ -GAME( 1982, megadon, 0, epos, megadon, driver_device, 0, ROT270, "Epos Corporation (Photar Industries license)", "Megadon", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, catapult, 0, epos, catapult, driver_device, 0, ROT270, "Epos Corporation", "Catapult", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* bad rom, hold f2 for test mode */ -GAME( 1983, suprglob, 0, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "Super Glob", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, theglob, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, theglob2, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (earlier)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, theglob3, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, igmo, 0, epos, igmo, driver_device, 0, ROT270, "Epos Corporation", "IGMO", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, dealer, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "The Dealer", MACHINE_WRONG_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, revenger, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "Revenger", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, beastf, suprglob, dealer, beastf, epos_state, dealer, ROT270, "Epos Corporation", "Beaste Feastie", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +/* EPOS TRISTAR 8000 PCB based */ +GAME( 1982, megadon, 0, epos, megadon, epos_state, 0, ROT270, "Epos Corporation (Photar Industries license)", "Megadon", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, catapult, 0, epos, catapult, epos_state, 0, ROT270, "Epos Corporation", "Catapult", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* bad rom, hold f2 for test mode */ +GAME( 1983, suprglob, 0, epos, suprglob, epos_state, 0, ROT270, "Epos Corporation", "Super Glob", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, theglob, suprglob, epos, suprglob, epos_state, 0, ROT270, "Epos Corporation", "The Glob", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, theglob2, suprglob, epos, suprglob, epos_state, 0, ROT270, "Epos Corporation", "The Glob (earlier)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, theglob3, suprglob, epos, suprglob, epos_state, 0, ROT270, "Epos Corporation", "The Glob (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, igmo, 0, epos, igmo, epos_state, 0, ROT270, "Epos Corporation", "IGMO", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) + +/* EPOS TRISTAR 9000 PCB based */ +GAME( 1984, dealer, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "The Dealer", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, revngr84, 0, dealer, beastf, epos_state, dealer, ROT270, "Epos Corporation", "Revenger '84 (newer)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, revenger, revngr84, dealer, beastf, epos_state, dealer, ROT270, "Epos Corporation", "Revenger '84 (older)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, beastf, suprglob, dealer, beastf, epos_state, dealer, ROT270, "Epos Corporation", "Beastie Feastie", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/eprom.cpp b/src/mame/drivers/eprom.cpp index d0e7da98a55..9e647a6e4bb 100644 --- a/src/mame/drivers/eprom.cpp +++ b/src/mame/drivers/eprom.cpp @@ -386,7 +386,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( eprom, eprom_state ) +static MACHINE_CONFIG_START( eprom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) @@ -434,7 +434,7 @@ static MACHINE_CONFIG_START( eprom, eprom_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( klaxp, eprom_state ) +static MACHINE_CONFIG_START( klaxp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) @@ -478,7 +478,7 @@ static MACHINE_CONFIG_START( klaxp, eprom_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( guts, eprom_state ) +static MACHINE_CONFIG_START( guts ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) @@ -761,4 +761,4 @@ GAME( 1989, eprom, 0, eprom, eprom, eprom_state, eprom, ROT0, "Atari Games" GAME( 1989, eprom2, eprom, eprom, eprom, eprom_state, eprom, ROT0, "Atari Games", "Escape from the Planet of the Robot Monsters (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, klaxp1, klax, klaxp, klaxp, eprom_state, klaxp, ROT0, "Atari Games", "Klax (prototype set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, klaxp2, klax, klaxp, klaxp, eprom_state, klaxp, ROT0, "Atari Games", "Klax (prototype set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, guts, 0, guts, guts, eprom_state, guts, ROT0, "Atari Games", "Guts n' Glory (prototype)", 0 ) +GAME( 1989, guts, 0, guts, guts, eprom_state, guts, ROT0, "Atari Games", "Guts n' Glory (prototype)", 0 ) diff --git a/src/mame/drivers/equites.cpp b/src/mame/drivers/equites.cpp index 2fd26137390..cf94437cccf 100644 --- a/src/mame/drivers/equites.cpp +++ b/src/mame/drivers/equites.cpp @@ -1039,8 +1039,9 @@ static MACHINE_CONFIG_FRAGMENT( common_sound ) MCFG_CPU_ADD("audiocpu", I8085A, XTAL_6_144MHz) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_portmap) + MCFG_I8085A_CLK_OUT_DEVICE("audio8155") - MCFG_DEVICE_ADD("audio8155", I8155, XTAL_6_144MHz/2) + MCFG_DEVICE_ADD("audio8155", I8155, 0) MCFG_I8155_OUT_PORTA_CB(WRITE8(equites_state, equites_8155_porta_w)) MCFG_I8155_OUT_PORTB_CB(WRITE8(equites_state, equites_8155_portb_w)) MCFG_I8155_OUT_PORTC_CB(WRITE8(equites_state, equites_8155_portc_w)) @@ -1133,7 +1134,7 @@ void equites_state::machine_reset() } -static MACHINE_CONFIG_START( equites, equites_state ) +static MACHINE_CONFIG_START( equites ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz/4) /* 68000P8 running at 3mhz! verified on pcb */ @@ -1178,7 +1179,7 @@ static MACHINE_CONFIG_DERIVED( gekisou, equites ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( splndrbt, equites_state ) +static MACHINE_CONFIG_START( splndrbt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/4) /* 68000P8 running at 6mhz, verified on pcb */ diff --git a/src/mame/drivers/ertictac.cpp b/src/mame/drivers/ertictac.cpp index d08cfda714d..14fba0cf5a3 100644 --- a/src/mame/drivers/ertictac.cpp +++ b/src/mame/drivers/ertictac.cpp @@ -218,7 +218,7 @@ INTERRUPT_GEN_MEMBER(ertictac_state::ertictac_podule_irq) #define NVRAM_SIZE 256 #define NVRAM_PAGE_SIZE 0 /* max size of one write request */ -static MACHINE_CONFIG_START( ertictac, ertictac_state ) +static MACHINE_CONFIG_START( ertictac ) MCFG_CPU_ADD("maincpu", ARM, XTAL_24MHz/3) /* guess, 12MHz 8MHz or 6MHz, what's the correct divider 2, 3 or 4? */ MCFG_CPU_PROGRAM_MAP(ertictac_map) @@ -346,7 +346,7 @@ ROM_START( poizone ) ROM_REGION(0x200000, "vram", ROMREGION_ERASE00) ROM_END -GAME( 1990, ertictac, 0, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic" ,MACHINE_IMPERFECT_SOUND) -GAME( 1990, ertictaca, ertictac, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic (ver 01)" ,MACHINE_IMPERFECT_SOUND) -GAME( 1990, ertictacb, ertictac, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic (set 2)" ,MACHINE_IMPERFECT_SOUND) -GAME( 1991, poizone, 0, ertictac, poizone, ertictac_state, ertictac, ROT0, "Eterna" ,"Poizone" ,MACHINE_IMPERFECT_SOUND|MACHINE_IMPERFECT_GRAPHICS) +GAME( 1990, ertictac, 0, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic", MACHINE_IMPERFECT_SOUND) +GAME( 1990, ertictaca, ertictac, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic (ver 01)", MACHINE_IMPERFECT_SOUND) +GAME( 1990, ertictacb, ertictac, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic (set 2)", MACHINE_IMPERFECT_SOUND) +GAME( 1991, poizone, 0, ertictac, poizone, ertictac_state, ertictac, ROT0, "Eterna", "Poizone", MACHINE_IMPERFECT_SOUND|MACHINE_IMPERFECT_GRAPHICS) diff --git a/src/mame/drivers/esd16.cpp b/src/mame/drivers/esd16.cpp index 97a97ae4c88..f9886edd364 100644 --- a/src/mame/drivers/esd16.cpp +++ b/src/mame/drivers/esd16.cpp @@ -39,9 +39,6 @@ Other ESD games: Tang Tang (c) 2000 - Undumped ESD 05-28-99 version Fire Hawk (c) 2001 - see nmk16.cpp driver -Head Panic -- Nude / Bikini pics don't show in-game, even when set in test mode? - --------------------------------------------------------------------------- Jumping Pop @@ -336,8 +333,8 @@ static INPUT_PORTS_START( jumppop ) PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0800, 0x0800, "BG Modesty" ) PORT_DIPLOCATION("SW2:4") - PORT_DIPSETTING( 0x0800, "Less" ) - PORT_DIPSETTING( 0x0000, "More" ) + PORT_DIPSETTING( 0x0800, "More" ) + PORT_DIPSETTING( 0x0000, "Less" ) PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6") PORT_DIPSETTING( 0x2000, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x3000, DEF_STR( Normal ) ) @@ -608,7 +605,7 @@ DECOSPR_PRIORITY_CB_MEMBER(esd16_state::hedpanic_pri_callback) return 0; // above everything } -static MACHINE_CONFIG_START( esd16, esd16_state ) +static MACHINE_CONFIG_START( esd16 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_16MHz) /* 16MHz */ @@ -650,7 +647,7 @@ static MACHINE_CONFIG_START( esd16, esd16_state ) MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_16MHz/4) /* 4MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* 1MHz */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* 1MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END @@ -670,7 +667,7 @@ static MACHINE_CONFIG_DERIVED( jumppop, esd16 ) MCFG_SOUND_REPLACE("ymsnd", YM3812, XTAL_14MHz/4) /* 3.5MHz - Verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_REPLACE("oki", XTAL_14MHz/16, OKIM6295_PIN7_HIGH) /* 875kHz - Verified */ + MCFG_OKIM6295_REPLACE("oki", XTAL_14MHz/16, PIN7_HIGH) /* 875kHz - Verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END @@ -1621,31 +1618,31 @@ ROM_END ***************************************************************************/ /* ESD 11-09-98 */ -GAME( 1999, multchmp, 0, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (World, ver. 2.5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, multchmpk,multchmp, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (Korea, older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, multchmpa,multchmp, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (World, older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, multchmp, 0, esd16, multchmp, esd16_state, 0, ROT0, "ESD", "Multi Champ (World, ver. 2.5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, multchmpk, multchmp, esd16, multchmp, esd16_state, 0, ROT0, "ESD", "Multi Champ (Korea, older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, multchmpa, multchmp, esd16, multchmp, esd16_state, 0, ROT0, "ESD", "Multi Champ (World, older)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, jumppop, 0, jumppop, jumppop, driver_device, 0, ROT0, "ESD", "Jumping Pop (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, jumppope, jumppop, jumppop, jumppop, driver_device, 0, ROT0, "Emag Soft", "Jumping Pop (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, jumppop, 0, jumppop, jumppop, esd16_state, 0, ROT0, "ESD", "Jumping Pop (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, jumppope, jumppop, jumppop, jumppop, esd16_state, 0, ROT0, "Emag Soft", "Jumping Pop (set 2)", MACHINE_SUPPORTS_SAVE ) /* ESD 05-28-99 */ -GAME( 1999, hedpanico,hedpanic, hedpanio, hedpanic, driver_device, 0, ROT0, "ESD", "Head Panic (ver. 0615, 15/06/1999)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, hedpanico, hedpanic, hedpanio, hedpanic, esd16_state, 0, ROT0, "ESD", "Head Panic (ver. 0615, 15/06/1999)", MACHINE_SUPPORTS_SAVE ) /* ESD 06-10-1999 */ -GAME( 1999, hedpanica,hedpanic, hedpanic, hedpanic, driver_device, 0, ROT0, "ESD", "Head Panic (ver. 0702, 02/07/1999)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, hedpanica, hedpanic, hedpanic, hedpanic, esd16_state, 0, ROT0, "ESD", "Head Panic (ver. 0702, 02/07/1999)", MACHINE_SUPPORTS_SAVE ) /* ESD 08-26-1999 */ -GAME( 2000, mchampdx, 0, mchampdx, hedpanic, driver_device, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 0106, 06/01/2000)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, mchampdxa,mchampdx, mchampdx, hedpanic, driver_device, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 1126, 26/11/1999)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, mchampdxb,mchampdx, mchampdx, hedpanic, driver_device, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 1114, 14/11/1999)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, hedpanic, 0, hedpanic, hedpanic, driver_device, 0, ROT0, "ESD", "Head Panic (ver. 0117, 17/01/2000)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, hedpanicf,hedpanic, hedpanic, hedpanic, driver_device, 0, ROT0, "ESD / Fuuki", "Head Panic (ver. 0315, 15/03/2000)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mchampdx, 0, mchampdx, hedpanic, esd16_state, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 0106, 06/01/2000)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mchampdxa, mchampdx, mchampdx, hedpanic, esd16_state, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 1126, 26/11/1999)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mchampdxb, mchampdx, mchampdx, hedpanic, esd16_state, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 1114, 14/11/1999)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, hedpanic, 0, hedpanic, hedpanic, esd16_state, 0, ROT0, "ESD", "Head Panic (ver. 0117, 17/01/2000)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, hedpanicf, hedpanic, hedpanic, hedpanic, esd16_state, 0, ROT0, "ESD / Fuuki", "Head Panic (ver. 0315, 15/03/2000)", MACHINE_SUPPORTS_SAVE ) /* ESD - This PCB looks identical to the ESD 08-26-1999 PCB */ -GAME( 2000, deluxe5, 0, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 1)", MACHINE_SUPPORTS_SAVE ) // all 4 sets report the same version number? -GAME( 2000, deluxe5a, deluxe5, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, deluxe5b, deluxe5, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, deluxe4u, deluxe5, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 4 U (ver. 0107, 07/01/2000)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, deluxe5, 0, tangtang, hedpanic, esd16_state, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 1)", MACHINE_SUPPORTS_SAVE ) // all 4 sets report the same version number? +GAME( 2000, deluxe5a, deluxe5, tangtang, hedpanic, esd16_state, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, deluxe5b, deluxe5, tangtang, hedpanic, esd16_state, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, deluxe4u, deluxe5, tangtang, hedpanic, esd16_state, 0, ROT0, "ESD", "Deluxe 4 U (ver. 0107, 07/01/2000)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, tangtang, 0, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Tang Tang (ver. 0526, 26/05/2000)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, swatpolc, 0, hedpanic, swatpolc, driver_device, 0, ROT0, "ESD", "SWAT Police", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, tangtang, 0, tangtang, hedpanic, esd16_state, 0, ROT0, "ESD", "Tang Tang (ver. 0526, 26/05/2000)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, swatpolc, 0, hedpanic, swatpolc, esd16_state, 0, ROT0, "ESD", "SWAT Police", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/esh.cpp b/src/mame/drivers/esh.cpp index 7349ef53ad6..33ffff1355e 100644 --- a/src/mame/drivers/esh.cpp +++ b/src/mame/drivers/esh.cpp @@ -350,7 +350,7 @@ void esh_state::machine_start() /* DRIVER */ -static MACHINE_CONFIG_START( esh, esh_state ) +static MACHINE_CONFIG_START( esh ) /* main cpu */ MCFG_CPU_ADD("maincpu", Z80, PCB_CLOCK/6) /* The denominator is a Daphne guess based on PacMan's hardware */ MCFG_CPU_PROGRAM_MAP(z80_0_mem) @@ -465,7 +465,7 @@ DRIVER_INIT_MEMBER(esh_state,esh) { } -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS */ -GAME( 1983, esh, 0, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 1)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_COLORS) -GAME( 1983, esha, esh, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_COLORS) -GAME( 1983, eshb, esh, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 3)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_COLORS) +// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS +GAME( 1983, esh, 0, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 1)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_COLORS) +GAME( 1983, esha, esh, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_COLORS) +GAME( 1983, eshb, esh, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 3)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_COLORS) diff --git a/src/mame/drivers/espial.cpp b/src/mame/drivers/espial.cpp index 8595c9d8b87..fa1cbb24027 100644 --- a/src/mame/drivers/espial.cpp +++ b/src/mame/drivers/espial.cpp @@ -315,7 +315,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( espial, espial_state ) +static MACHINE_CONFIG_START( espial ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3072000) /* 3.072 MHz */ @@ -446,6 +446,6 @@ ROM_END -GAME( 1983, espial, 0, espial, espial, driver_device, 0, ROT0, "Orca / Thunderbolt", "Espial (Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, espialu, espial, espial, espial, driver_device, 0, ROT0, "Orca / Thunderbolt", "Espial (US?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, netwars, 0, netwars, netwars, driver_device, 0, ROT90, "Orca (Esco Trading Co license)", "Net Wars", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, espial, 0, espial, espial, espial_state, 0, ROT0, "Orca / Thunderbolt", "Espial (Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, espialu, espial, espial, espial, espial_state, 0, ROT0, "Orca / Thunderbolt", "Espial (US?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, netwars, 0, netwars, netwars, espial_state, 0, ROT90, "Orca (Esco Trading Co license)", "Net Wars", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/esq1.cpp b/src/mame/drivers/esq1.cpp index 42820375b10..773ce100727 100644 --- a/src/mame/drivers/esq1.cpp +++ b/src/mame/drivers/esq1.cpp @@ -226,11 +226,11 @@ private: void recalc_filter(filter &f); }; -static const device_type ESQ1_FILTERS = device_creator; +DEFINE_DEVICE_TYPE(ESQ1_FILTERS, esq1_filters, "esq1_filters", "ESQ1 Filters stage") esq1_filters::esq1_filters(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ESQ1_FILTERS, "ESQ1 Filters stage", tag, owner, clock, "esq1_filters", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, ESQ1_FILTERS, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } @@ -398,7 +398,7 @@ public: required_device m_maincpu; required_device m_duart; required_device m_filters; - optional_device m_fdc; + optional_device m_fdc; optional_device m_panel; optional_device m_mdout; @@ -584,7 +584,7 @@ INPUT_CHANGED_MEMBER(esq1_state::key_stroke) } } -static MACHINE_CONFIG_START( esq1, esq1_state ) +static MACHINE_CONFIG_START( esq1 ) MCFG_CPU_ADD("maincpu", M6809E, 4000000) // how fast is it? MCFG_CPU_PROGRAM_MAP(esq1_map) @@ -595,7 +595,7 @@ static MACHINE_CONFIG_START( esq1, esq1_state ) MCFG_MC68681_B_TX_CALLBACK(WRITELINE(esq1_state, duart_tx_b)) MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(esq1_state, duart_output)) - MCFG_ESQPANEL2x40_ADD("panel") + MCFG_ESQPANEL2X40_ADD("panel") MCFG_ESQPANEL_TX_CALLBACK(DEVWRITELINE("duart", mc68681_device, rx_b_w)) MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin") @@ -696,6 +696,6 @@ ROM_START( esqm ) ROM_END -CONS( 1986, esq1, 0 , 0, esq1, esq1, driver_device, 0, "Ensoniq", "ESQ-1", MACHINE_NOT_WORKING ) -CONS( 1986, esqm, esq1, 0, esq1, esq1, driver_device, 0, "Ensoniq", "ESQ-M", MACHINE_NOT_WORKING ) -CONS( 1988, sq80, 0, 0, sq80, esq1, driver_device, 0, "Ensoniq", "SQ-80", MACHINE_NOT_WORKING ) +CONS( 1986, esq1, 0 , 0, esq1, esq1, esq1_state, 0, "Ensoniq", "ESQ-1", MACHINE_NOT_WORKING ) +CONS( 1986, esqm, esq1, 0, esq1, esq1, esq1_state, 0, "Ensoniq", "ESQ-M", MACHINE_NOT_WORKING ) +CONS( 1988, sq80, 0, 0, sq80, esq1, esq1_state, 0, "Ensoniq", "SQ-80", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/esq5505.cpp b/src/mame/drivers/esq5505.cpp index 664c23c1eb0..b0463cbcd51 100644 --- a/src/mame/drivers/esq5505.cpp +++ b/src/mame/drivers/esq5505.cpp @@ -186,8 +186,8 @@ public: required_device m_duart; required_device m_otis; required_device m_esp; - required_device m_pump; - optional_device m_fdc; + required_device m_pump; + optional_device m_fdc; required_device m_panel; optional_device m_dmac; required_device m_mdout; @@ -386,7 +386,7 @@ static ADDRESS_MAP_START( vfxsd_map, AS_PROGRAM, 16, esq5505_state ) AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write) AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) AM_RANGE(0x260000, 0x2601ff) AM_DEVREADWRITE8("esp", es5510_device, host_r, host_w, 0x00ff) - AM_RANGE(0x2c0000, 0x2c0007) AM_DEVREADWRITE8("wd1772", wd1772_t, read, write, 0x00ff) + AM_RANGE(0x2c0000, 0x2c0007) AM_DEVREADWRITE8("wd1772", wd1772_device, read, write, 0x00ff) AM_RANGE(0x330000, 0x3bffff) AM_RAM // sequencer memory? AM_RANGE(0xc00000, 0xc3ffff) AM_ROM AM_REGION("osrom", 0) AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram") @@ -397,7 +397,7 @@ static ADDRESS_MAP_START( eps_map, AS_PROGRAM, 16, esq5505_state ) AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write) AM_RANGE(0x240000, 0x2400ff) AM_DEVREADWRITE("mc68450", hd63450_device, read, write) AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0x2c0000, 0x2c0007) AM_DEVREADWRITE8("wd1772", wd1772_t, read, write, 0x00ff) + AM_RANGE(0x2c0000, 0x2c0007) AM_DEVREADWRITE8("wd1772", wd1772_device, read, write, 0x00ff) AM_RANGE(0x580000, 0x7fffff) AM_RAM // sample RAM? AM_RANGE(0xc00000, 0xc1ffff) AM_ROM AM_REGION("osrom", 0) AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram") @@ -604,7 +604,7 @@ INPUT_CHANGED_MEMBER(esq5505_state::key_stroke) } #endif -static MACHINE_CONFIG_START( vfx, esq5505_state ) +static MACHINE_CONFIG_START( vfx ) MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(vfx_map) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(esq5505_state,maincpu_irq_acknowledge_callback) @@ -612,7 +612,7 @@ static MACHINE_CONFIG_START( vfx, esq5505_state ) MCFG_CPU_ADD("esp", ES5510, XTAL_10MHz) MCFG_DEVICE_DISABLE() - MCFG_ESQPANEL2x40_ADD("panel") + MCFG_ESQPANEL2X40_ADD("panel") MCFG_ESQPANEL_TX_CALLBACK(DEVWRITELINE("duart", mc68681_device, rx_b_w)) MCFG_ESQPANEL_ANALOG_CALLBACK(WRITE16(esq5505_state, analog_w)) @@ -654,8 +654,8 @@ static MACHINE_CONFIG_DERIVED(eps, vfx) MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_PROGRAM_MAP(eps_map) - MCFG_ESQPANEL_2x40_REMOVE("panel") - MCFG_ESQPANEL1x22_ADD("panel") + MCFG_ESQPANEL_2X40_REMOVE("panel") + MCFG_ESQPANEL1X22_ADD("panel") MCFG_ESQPANEL_TX_CALLBACK(DEVWRITELINE("duart", mc68681_device, rx_b_w)) MCFG_ESQPANEL_ANALOG_CALLBACK(WRITE16(esq5505_state, analog_w)) @@ -681,7 +681,7 @@ static MACHINE_CONFIG_DERIVED(vfxsd, vfx) MACHINE_CONFIG_END // 32-voice machines with the VFX-SD type config -static MACHINE_CONFIG_START(vfx32, esq5505_state) +static MACHINE_CONFIG_START(vfx32) MCFG_CPU_ADD("maincpu", M68000, XTAL_30_4761MHz / 2) MCFG_CPU_PROGRAM_MAP(vfxsd_map) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(esq5505_state,maincpu_irq_acknowledge_callback) @@ -689,7 +689,7 @@ static MACHINE_CONFIG_START(vfx32, esq5505_state) MCFG_CPU_ADD("esp", ES5510, XTAL_10MHz) MCFG_DEVICE_DISABLE() - MCFG_ESQPANEL2x40_ADD("panel") + MCFG_ESQPANEL2X40_ADD("panel") MCFG_ESQPANEL_TX_CALLBACK(DEVWRITELINE("duart", mc68681_device, rx_b_w)) MCFG_ESQPANEL_ANALOG_CALLBACK(WRITE16(esq5505_state, analog_w)) @@ -734,8 +734,8 @@ static MACHINE_CONFIG_DERIVED(sq1, vfx) MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_PROGRAM_MAP(sq1_map) - MCFG_ESQPANEL_2x40_REMOVE("panel") - MCFG_ESQPANEL2x16_SQ1_ADD("panel") + MCFG_ESQPANEL_2X40_REMOVE("panel") + MCFG_ESQPANEL2X16_SQ1_ADD("panel") MCFG_ESQPANEL_TX_CALLBACK(DEVWRITELINE("duart", mc68681_device, rx_b_w)) MCFG_ESQPANEL_ANALOG_CALLBACK(WRITE16(esq5505_state, analog_w)) MACHINE_CONFIG_END @@ -1013,12 +1013,12 @@ DRIVER_INIT_MEMBER(esq5505_state,denib) } } -CONS( 1988, eps, 0, 0, eps, vfx, esq5505_state, eps, "Ensoniq", "EPS", MACHINE_NOT_WORKING ) // custom VFD: one alphanumeric 22-char row, one graphics-capable row (alpha row can also do bar graphs) -CONS( 1989, vfx, 0, 0, vfx, vfx, esq5505_state, denib, "Ensoniq", "VFX", MACHINE_NOT_WORKING ) // 2x40 VFD -CONS( 1989, vfxsd, 0, 0, vfxsd, vfx, esq5505_state, denib, "Ensoniq", "VFX-SD", MACHINE_NOT_WORKING ) // 2x40 VFD -CONS( 1990, eps16p,eps, 0, eps, vfx, esq5505_state, eps, "Ensoniq", "EPS-16 Plus", MACHINE_NOT_WORKING ) // custom VFD: one alphanumeric 22-char row, one graphics-capable row (alpha row can also do bar graphs) -CONS( 1990, sd1, 0, 0, vfxsd, vfx, esq5505_state, denib, "Ensoniq", "SD-1 (21 voice)", MACHINE_NOT_WORKING ) // 2x40 VFD -CONS( 1990, sq1, 0, 0, sq1, sq1, esq5505_state, sq1, "Ensoniq", "SQ-1", MACHINE_NOT_WORKING ) // 2x16 LCD -CONS( 1990, sqrack,sq1, 0, sq1, sq1, esq5505_state, sq1, "Ensoniq", "SQ-Rack", MACHINE_NOT_WORKING ) // 2x16 LCD -CONS( 1991, sq2, 0, 0, sq1, sq1, esq5505_state, sq1, "Ensoniq", "SQ-2", MACHINE_NOT_WORKING ) // 2x16 LCD -CONS( 1991, sd132, sd1,0, vfx32, vfx, esq5505_state, denib, "Ensoniq", "SD-1 (32 voice)", MACHINE_NOT_WORKING ) // 2x40 VFD +CONS( 1988, eps, 0, 0, eps, vfx, esq5505_state, eps, "Ensoniq", "EPS", MACHINE_NOT_WORKING ) // custom VFD: one alphanumeric 22-char row, one graphics-capable row (alpha row can also do bar graphs) +CONS( 1989, vfx, 0, 0, vfx, vfx, esq5505_state, denib, "Ensoniq", "VFX", MACHINE_NOT_WORKING ) // 2x40 VFD +CONS( 1989, vfxsd, 0, 0, vfxsd, vfx, esq5505_state, denib, "Ensoniq", "VFX-SD", MACHINE_NOT_WORKING ) // 2x40 VFD +CONS( 1990, eps16p,eps, 0, eps, vfx, esq5505_state, eps, "Ensoniq", "EPS-16 Plus", MACHINE_NOT_WORKING ) // custom VFD: one alphanumeric 22-char row, one graphics-capable row (alpha row can also do bar graphs) +CONS( 1990, sd1, 0, 0, vfxsd, vfx, esq5505_state, denib, "Ensoniq", "SD-1 (21 voice)", MACHINE_NOT_WORKING ) // 2x40 VFD +CONS( 1990, sq1, 0, 0, sq1, sq1, esq5505_state, sq1, "Ensoniq", "SQ-1", MACHINE_NOT_WORKING ) // 2x16 LCD +CONS( 1990, sqrack,sq1, 0, sq1, sq1, esq5505_state, sq1, "Ensoniq", "SQ-Rack", MACHINE_NOT_WORKING ) // 2x16 LCD +CONS( 1991, sq2, 0, 0, sq1, sq1, esq5505_state, sq1, "Ensoniq", "SQ-2", MACHINE_NOT_WORKING ) // 2x16 LCD +CONS( 1991, sd132, sd1, 0, vfx32, vfx, esq5505_state, denib, "Ensoniq", "SD-1 (32 voice)", MACHINE_NOT_WORKING ) // 2x40 VFD diff --git a/src/mame/drivers/esqasr.cpp b/src/mame/drivers/esqasr.cpp index aa70e250b48..6a7f5885136 100644 --- a/src/mame/drivers/esqasr.cpp +++ b/src/mame/drivers/esqasr.cpp @@ -60,7 +60,7 @@ public: required_device m_maincpu; required_device m_esp; - required_device m_sq1vfd; + required_device m_sq1vfd; virtual void machine_reset() override; @@ -93,14 +93,14 @@ READ16_MEMBER(esqasr_state::esq5506_read_adc) return 0; } -static MACHINE_CONFIG_START( asr, esqasr_state ) +static MACHINE_CONFIG_START( asr ) MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // actually MC68302 MCFG_CPU_PROGRAM_MAP(asr_map) MCFG_CPU_ADD("esp", ES5510, XTAL_10MHz) MCFG_DEVICE_DISABLE() - MCFG_ESQ2x40_SQ1_ADD("sq1vfd") + MCFG_ESQ2X40_SQ1_ADD("sq1vfd") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("ensoniq", ES5506, XTAL_16MHz) @@ -115,14 +115,14 @@ static MACHINE_CONFIG_START( asr, esqasr_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 2.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( asrx, esqasr_state ) +static MACHINE_CONFIG_START( asrx ) MCFG_CPU_ADD("maincpu", M68020, XTAL_16MHz) // unknown, possibly 68340? MCFG_CPU_PROGRAM_MAP(asrx_map) MCFG_CPU_ADD("esp", ES5510, XTAL_10MHz) MCFG_DEVICE_DISABLE() - MCFG_ESQ2x40_SQ1_ADD("sq1vfd") + MCFG_ESQ2X40_SQ1_ADD("sq1vfd") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("ensoniq", ES5506, XTAL_16MHz) diff --git a/src/mame/drivers/esqkt.cpp b/src/mame/drivers/esqkt.cpp index 3eb8e014c65..a3e5d5ef931 100644 --- a/src/mame/drivers/esqkt.cpp +++ b/src/mame/drivers/esqkt.cpp @@ -201,14 +201,14 @@ WRITE_LINE_MEMBER(esqkt_state::duart_tx_b) m_sq1panel->rx_w(state); } -static MACHINE_CONFIG_START( kt, esqkt_state ) +static MACHINE_CONFIG_START( kt ) MCFG_CPU_ADD("maincpu", M68EC020, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(kt_map) MCFG_CPU_ADD("esp", ES5510, XTAL_10MHz) MCFG_DEVICE_DISABLE() - MCFG_ESQPANEL2x16_SQ1_ADD("sq1panel") + MCFG_ESQPANEL2X16_SQ1_ADD("sq1panel") MCFG_ESQPANEL_TX_CALLBACK(DEVWRITELINE("duart", mc68681_device, rx_b_w)) MCFG_MC68681_ADD("duart", 4000000) diff --git a/src/mame/drivers/esqmr.cpp b/src/mame/drivers/esqmr.cpp index c0c44843a6a..0ba06ae71f4 100644 --- a/src/mame/drivers/esqmr.cpp +++ b/src/mame/drivers/esqmr.cpp @@ -217,8 +217,8 @@ public: , m_sq1vfd(*this, "sq1vfd") { } - required_device m_maincpu; - required_device m_sq1vfd; + required_device m_maincpu; + required_device m_sq1vfd; virtual void machine_reset() override; @@ -248,11 +248,11 @@ READ16_MEMBER(esqmr_state::esq5506_read_adc) return 0; } -static MACHINE_CONFIG_START( mr, esqmr_state ) +static MACHINE_CONFIG_START( mr ) MCFG_CPU_ADD("maincpu", M68340, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(mr_map) - MCFG_ESQ2x40_SQ1_ADD("sq1vfd") + MCFG_ESQ2X40_SQ1_ADD("sq1vfd") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("ensoniq", ES5506, XTAL_16MHz) diff --git a/src/mame/drivers/esripsys.cpp b/src/mame/drivers/esripsys.cpp index 19f56d7371f..ee36118cef8 100644 --- a/src/mame/drivers/esripsys.cpp +++ b/src/mame/drivers/esripsys.cpp @@ -660,7 +660,7 @@ DRIVER_INIT_MEMBER(esripsys_state,esripsys) save_item(NAME(m_fbsel)); } -static MACHINE_CONFIG_START( esripsys, esripsys_state ) +static MACHINE_CONFIG_START( esripsys ) MCFG_CPU_ADD("game_cpu", M6809E, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(game_cpu_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", esripsys_state, esripsys_vblank_irq) diff --git a/src/mame/drivers/et3400.cpp b/src/mame/drivers/et3400.cpp index c32df7506db..ba098e30954 100644 --- a/src/mame/drivers/et3400.cpp +++ b/src/mame/drivers/et3400.cpp @@ -177,7 +177,7 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( et3400, et3400_state ) +static MACHINE_CONFIG_START( et3400 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_4MHz / 4 ) // 1MHz with memory i/o accessory, or 500khz without it MCFG_CPU_PROGRAM_MAP(et3400_mem) @@ -213,4 +213,4 @@ ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1976, et3400, 0, 0, et3400, et3400, driver_device, 0, "Heath Inc", "Heathkit ET-3400", 0 ) +COMP( 1976, et3400, 0, 0, et3400, et3400, et3400_state, 0, "Heath Inc", "Heathkit ET-3400", 0 ) diff --git a/src/mame/drivers/eti660.cpp b/src/mame/drivers/eti660.cpp index dad8f38b48c..62b13eed4be 100644 --- a/src/mame/drivers/eti660.cpp +++ b/src/mame/drivers/eti660.cpp @@ -255,8 +255,8 @@ void eti660_state::machine_reset() m_resetcnt = 0; m_color_on = 0; // fix for F3 soft reboot - m_maincpu->set_state_int(COSMAC_R0, 0); // set R0 to start of rom - m_maincpu->set_state_int(COSMAC_P, 0); // set R0 as the PC register + m_maincpu->set_state_int(cosmac_device::COSMAC_R0, 0); // set R0 to start of rom + m_maincpu->set_state_int(cosmac_device::COSMAC_P, 0); // set R0 as the PC register } void eti660_state::machine_start() @@ -302,7 +302,7 @@ QUICKLOAD_LOAD_MEMBER( eti660_state, eti660 ) /* Machine Drivers */ -static MACHINE_CONFIG_START( eti660, eti660_state ) +static MACHINE_CONFIG_START( eti660 ) /* basic machine hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_8_867238MHz/5) MCFG_CPU_PROGRAM_MAP(eti660_map) @@ -349,5 +349,5 @@ ROM_START( eti660 ) ROM_LOAD( "eti660.bin", 0x0000, 0x0400, CRC(811dfa62) SHA1(c0c4951e02f873f15560bdc3f35cdf3f99653922) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, eti660, 0, 0, eti660, eti660, driver_device, 0, "Electronics Today International", "ETI-660", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, eti660, 0, 0, eti660, eti660, eti660_state, 0, "Electronics Today International", "ETI-660", 0 ) diff --git a/src/mame/drivers/ettrivia.cpp b/src/mame/drivers/ettrivia.cpp index eacb5c5f4c3..82d7aea7a61 100644 --- a/src/mame/drivers/ettrivia.cpp +++ b/src/mame/drivers/ettrivia.cpp @@ -39,11 +39,13 @@ class ettrivia_state : public driver_device { public: ettrivia_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_fg_videoram(*this, "fg_videoram"), - m_bg_videoram(*this, "bg_videoram"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode") { } + : driver_device(mconfig, type, tag) + , m_fg_videoram(*this, "fg_videoram") + , m_bg_videoram(*this, "bg_videoram") + , m_maincpu(*this, "maincpu") + , m_gfxdecode(*this, "gfxdecode") + { + } int m_palreg; int m_gfx_bank; @@ -285,7 +287,7 @@ INTERRUPT_GEN_MEMBER(ettrivia_state::ettrivia_interrupt) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( ettrivia, ettrivia_state ) +static MACHINE_CONFIG_START( ettrivia ) MCFG_CPU_ADD("maincpu", Z80,12000000/4-48000) //should be ok, it gives the 300 interrupts expected MCFG_CPU_PROGRAM_MAP(cpu_map) MCFG_CPU_IO_MAP(io_map) @@ -464,8 +466,8 @@ ROM_START( strvmstr ) ROM_LOAD( "entrtn.hi3", 0x38000, 0x8000, CRC(a8cf603b) SHA1(6efa5753d8d252452b3f5be8635a28364e4d8de1) ) ROM_END -GAME( 1985, promutrv, 0, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 1)", 0 ) -GAME( 1985, promutrva,promutrv, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 2)", 0 ) -GAME( 1985, promutrvb,promutrv, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 3)", 0 ) -GAME( 1985, promutrvc,promutrv, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 4)", 0 ) -GAME( 1986, strvmstr, 0, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Super Trivia Master", MACHINE_WRONG_COLORS ) +GAME( 1985, promutrv, 0, ettrivia, ettrivia, ettrivia_state, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 1)", 0 ) +GAME( 1985, promutrva, promutrv, ettrivia, ettrivia, ettrivia_state, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 2)", 0 ) +GAME( 1985, promutrvb, promutrv, ettrivia, ettrivia, ettrivia_state, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 3)", 0 ) +GAME( 1985, promutrvc, promutrv, ettrivia, ettrivia, ettrivia_state, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 4)", 0 ) +GAME( 1986, strvmstr, 0, ettrivia, ettrivia, ettrivia_state, 0, ROT270, "Enerdyne Technologies Inc.", "Super Trivia Master", MACHINE_WRONG_COLORS ) diff --git a/src/mame/drivers/eurocom2.cpp b/src/mame/drivers/eurocom2.cpp index b4fe6f61cb2..d7051c55b08 100644 --- a/src/mame/drivers/eurocom2.cpp +++ b/src/mame/drivers/eurocom2.cpp @@ -73,12 +73,8 @@ public: , m_fdc(*this, "fdc") , m_p_videoram(*this, "videoram") , m_screen(*this, "screen") - { } - - // driver_device overrides - virtual void machine_reset() override; - virtual void machine_start() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + { + } uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -89,9 +85,7 @@ public: DECLARE_WRITE8_MEMBER(vico_w); DECLARE_READ8_MEMBER(kbd_get); - DECLARE_WRITE8_MEMBER(kbd_put); - - emu_timer *m_sst; + void kbd_put(u8 data); DECLARE_READ_LINE_MEMBER(pia1_ca1_r); DECLARE_READ_LINE_MEMBER(pia1_ca2_r); @@ -99,6 +93,13 @@ public: DECLARE_WRITE_LINE_MEMBER(pia1_cb2_w); protected: + // driver_device overrides + virtual void machine_reset() override; + virtual void machine_start() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + + emu_timer *m_sst; + floppy_image_device *m_floppy; bool m_sst_state, m_kbd_ready; bitmap_ind16 m_tmpbmp; @@ -110,7 +111,7 @@ protected: required_device m_pia1; required_device m_pia2; required_device m_acia; - required_device m_fdc; + required_device m_fdc; required_shared_ptr m_p_videoram; required_device m_screen; }; @@ -251,7 +252,7 @@ READ8_MEMBER(eurocom2_state::kbd_get) return m_kbd_data; } -WRITE8_MEMBER(eurocom2_state::kbd_put) +void eurocom2_state::kbd_put(u8 data) { m_kbd_ready = true; m_kbd_data = data; @@ -333,7 +334,7 @@ static ADDRESS_MAP_START(eurocom2_map, AS_PROGRAM, 8, eurocom2_state) AM_RANGE(0xfcf5, 0xfcf5) AM_DEVREADWRITE("acia", acia6850_device, data_r, data_w) AM_RANGE(0xfcf6, 0xfcf7) AM_WRITE(vico_w) AM_RANGE(0xfcf8, 0xfcfb) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0xfd30, 0xfd37) AM_DEVREADWRITE("fdc", fd1793_t, read, write) + AM_RANGE(0xfd30, 0xfd37) AM_DEVREADWRITE("fdc", fd1793_device, read, write) AM_RANGE(0xfd38, 0xfd38) AM_READWRITE(fdc_aux_r, fdc_aux_w) AM_RANGE(0xfd40, 0xffff) AM_ROM AM_REGION("maincpu", 0xd40) AM_WRITENOP ADDRESS_MAP_END @@ -343,8 +344,8 @@ static ADDRESS_MAP_START(waveterm_map, AS_PROGRAM, 8, waveterm_state) AM_RANGE(0xfd00, 0xfd03) AM_DEVREADWRITE("pia3", pia6821_device, read, write) AM_RANGE(0xfd08, 0xfd0f) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) AM_RANGE(0xfd10, 0xfd17) AM_UNMAP - AM_RANGE(0xfd18, 0xfd18) AM_READ(waveterm_adc) // AD558 ADC -// AM_RANGE(0xfd20, 0xfd20) AM_READ(waveterm_dac) // ZN432 DAC ?? + AM_RANGE(0xfd18, 0xfd18) AM_READ(waveterm_adc) // AD558 ADC +// AM_RANGE(0xfd20, 0xfd20) AM_READ(waveterm_dac) // ZN432 DAC ?? ADDRESS_MAP_END static INPUT_PORTS_START(eurocom2) @@ -426,7 +427,7 @@ static SLOT_INTERFACE_START( eurocom_floppies ) SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( eurocom2, eurocom2_state ) +static MACHINE_CONFIG_START( eurocom2 ) MCFG_CPU_ADD("maincpu", M6809, XTAL_5_3586MHz/4) MCFG_CPU_PROGRAM_MAP(eurocom2_map) @@ -438,21 +439,21 @@ static MACHINE_CONFIG_START( eurocom2, eurocom2_state ) MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(eurocom2_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(eurocom2_state, kbd_put)) MCFG_DEVICE_ADD("pia1", PIA6821, 0) - MCFG_PIA_READCA1_HANDLER(READLINE(eurocom2_state, pia1_ca1_r)) // keyboard strobe - MCFG_PIA_READCA2_HANDLER(READLINE(eurocom2_state, pia1_ca2_r)) // SST output Q14 - MCFG_PIA_READCB1_HANDLER(READLINE(eurocom2_state, pia1_cb1_r)) // SST output Q6 - MCFG_PIA_CB2_HANDLER(WRITELINE(eurocom2_state, pia1_cb2_w)) // SST reset input + MCFG_PIA_READCA1_HANDLER(READLINE(eurocom2_state, pia1_ca1_r)) // keyboard strobe + MCFG_PIA_READCA2_HANDLER(READLINE(eurocom2_state, pia1_ca2_r)) // SST output Q14 + MCFG_PIA_READCB1_HANDLER(READLINE(eurocom2_state, pia1_cb1_r)) // SST output Q6 + MCFG_PIA_CB2_HANDLER(WRITELINE(eurocom2_state, pia1_cb2_w)) // SST reset input MCFG_PIA_READPA_HANDLER(READ8(eurocom2_state, kbd_get)) -// MCFG_PIA_READPB_HANDLER(READ8(eurocom2_state, kbd_get)) -// MCFG_PIA_IRQA_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE)) -// MCFG_PIA_IRQB_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE)) +// MCFG_PIA_READPB_HANDLER(READ8(eurocom2_state, kbd_get)) +// MCFG_PIA_IRQA_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE)) +// MCFG_PIA_IRQB_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE)) MCFG_DEVICE_ADD("pia2", PIA6821, 0) -// MCFG_PIA_IRQA_HANDLER(INPUTLINE("maincpu", M6809_FIRQ_LINE)) -// MCFG_PIA_IRQB_HANDLER(INPUTLINE("maincpu", M6809_FIRQ_LINE)) +// MCFG_PIA_IRQA_HANDLER(INPUTLINE("maincpu", M6809_FIRQ_LINE)) +// MCFG_PIA_IRQB_HANDLER(INPUTLINE("maincpu", M6809_FIRQ_LINE)) MCFG_DEVICE_ADD("acia", ACIA6850, 0) MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE ("rs232", rs232_port_device, write_txd)) @@ -462,14 +463,14 @@ static MACHINE_CONFIG_START( eurocom2, eurocom2_state ) MCFG_RS232_CTS_HANDLER(DEVWRITELINE ("acia", acia6850_device, write_cts)) MCFG_FD1793_ADD("fdc", XTAL_2MHz/2) -// MCFG_WD_FDC_INTRQ_CALLBACK(INPUTLINE("maincpu", M6809_IRQ_LINE)) +// MCFG_WD_FDC_INTRQ_CALLBACK(INPUTLINE("maincpu", M6809_IRQ_LINE)) MCFG_FLOPPY_DRIVE_ADD("fdc:0", eurocom_floppies, "525qd", eurocom2_state::floppy_formats) -// MCFG_FLOPPY_DRIVE_SOUND(true) +// MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD("fdc:1", eurocom_floppies, "525qd", eurocom2_state::floppy_formats) -// MCFG_FLOPPY_DRIVE_SOUND(true) +// MCFG_FLOPPY_DRIVE_SOUND(true) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS(waveterm, eurocom2, waveterm_state) +static MACHINE_CONFIG_DERIVED(waveterm, eurocom2) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(waveterm_map) @@ -481,13 +482,13 @@ static MACHINE_CONFIG_DERIVED_CLASS(waveterm, eurocom2, waveterm_state) // ports A(in/out), B(out), CA1(in), CA2(in), and CB2(out) = interface to PPG bus via DIL socket on WTI board // CB1 -- front panel "End" button MCFG_DEVICE_ADD("pia3", PIA6821, 0) -// MCFG_PIA_READPA_HANDLER(READ8(waveterm_state, pia3_pa_r)) -// MCFG_PIA_WRITEPA_HANDLER(WRITE8(waveterm_state, pia3_pa_w)) +// MCFG_PIA_READPA_HANDLER(READ8(waveterm_state, pia3_pa_r)) +// MCFG_PIA_WRITEPA_HANDLER(WRITE8(waveterm_state, pia3_pa_w)) MCFG_PIA_WRITEPB_HANDLER(WRITE8(waveterm_state, pia3_pb_w)) -// MCFG_PIA_READCA1_HANDLER(READLINE(waveterm_state, pia3_ca1_r)) -// MCFG_PIA_READCA2_HANDLER(READLINE(waveterm_state, pia3_ca2_r)) +// MCFG_PIA_READCA1_HANDLER(READLINE(waveterm_state, pia3_ca1_r)) +// MCFG_PIA_READCA2_HANDLER(READLINE(waveterm_state, pia3_ca2_r)) MCFG_PIA_READCB1_HANDLER(IOPORT("FP")) -// MCFG_PIA_CB2_HANDLER(WRITELINE(waveterm_state, pia3_cb2_w)) +// MCFG_PIA_CB2_HANDLER(WRITELINE(waveterm_state, pia3_cb2_w)) MCFG_DEVICE_ADD("ptm", PTM6840, 0) @@ -517,6 +518,6 @@ ROM_START(waveterm) ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1981, eurocom2, 0, 0, eurocom2, eurocom2, driver_device, 0, "Eltec", "Eurocom II V7", MACHINE_IS_SKELETON) -COMP( 1982, waveterm, eurocom2, 0, waveterm, waveterm, driver_device, 0, "PPG", "Waveterm A", MACHINE_IS_SKELETON) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, eurocom2, 0, 0, eurocom2, eurocom2, eurocom2_state, 0, "Eltec", "Eurocom II V7", MACHINE_IS_SKELETON ) +COMP( 1982, waveterm, eurocom2, 0, waveterm, waveterm, waveterm_state, 0, "PPG", "Waveterm A", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/europc.cpp b/src/mame/drivers/europc.cpp index ab9b0273690..5c84ecef038 100644 --- a/src/mame/drivers/europc.cpp +++ b/src/mame/drivers/europc.cpp @@ -1,11 +1,16 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol #include "emu.h" -#include "coreutil.h" + +#include "cpu/i86/i86.h" +#include "bus/isa/aga.h" #include "machine/genpc.h" #include "machine/nvram.h" #include "machine/pckeybrd.h" +#include "coreutil.h" + + class europc_pc_state : public driver_device { public: @@ -471,7 +476,7 @@ static ADDRESS_MAP_START(europc_io, AS_IO, 8, europc_pc_state ) AM_RANGE(0x02e0, 0x02e0) AM_READ(europc_jim2_r) ADDRESS_MAP_END -static MACHINE_CONFIG_START( europc, europc_pc_state ) +static MACHINE_CONFIG_START( europc ) MCFG_CPU_ADD("maincpu", I8088, 4772720*2) MCFG_CPU_PROGRAM_MAP(europc_map) MCFG_CPU_IO_MAP(europc_io) diff --git a/src/mame/drivers/evmbug.cpp b/src/mame/drivers/evmbug.cpp index 3017b19ebe9..92949083e06 100644 --- a/src/mame/drivers/evmbug.cpp +++ b/src/mame/drivers/evmbug.cpp @@ -29,7 +29,9 @@ public: DECLARE_READ8_MEMBER(rs232_r); DECLARE_WRITE8_MEMBER(rs232_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); + +protected: virtual void machine_reset() override; uint8_t m_term_data; uint8_t m_term_out; @@ -80,7 +82,7 @@ WRITE8_MEMBER( evmbug_state::rs232_w ) m_terminal->write(space, 0, m_term_out & 0x7f); } -WRITE8_MEMBER( evmbug_state::kbd_put ) +void evmbug_state::kbd_put(u8 data) { m_term_data = data; } @@ -92,7 +94,7 @@ void evmbug_state::machine_reset() static_cast(machine().device("maincpu"))->ready_line(ASSERT_LINE); } -static MACHINE_CONFIG_START( evmbug, evmbug_state ) +static MACHINE_CONFIG_START( evmbug ) // basic machine hardware // TMS9995 CPU @ 12.0 MHz // We have no lines connected yet @@ -100,7 +102,7 @@ static MACHINE_CONFIG_START( evmbug, evmbug_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(evmbug_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(evmbug_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -113,5 +115,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 19??, evmbug, 0, 0, evmbug, evmbug, driver_device, 0, "Texas Instruments", "TMAM6095", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 19??, evmbug, 0, 0, evmbug, evmbug, evmbug_state, 0, "Texas Instruments", "TMAM6095", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/excali64.cpp b/src/mame/drivers/excali64.cpp index ae830119a7e..d43f098351e 100644 --- a/src/mame/drivers/excali64.cpp +++ b/src/mame/drivers/excali64.cpp @@ -112,7 +112,7 @@ private: required_device m_dma; required_device m_u12; required_device m_centronics; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; }; @@ -140,7 +140,7 @@ static ADDRESS_MAP_START(excali64_io, AS_IO, 8, excali64_state) AM_RANGE(0xe4, 0xe7) AM_WRITE(porte4_w) AM_RANGE(0xe8, 0xeb) AM_READ(porte8_r) AM_RANGE(0xec, 0xef) AM_WRITE(portec_w) - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("fdc", wd2793_t, read, write) + AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("fdc", wd2793_device, read, write) ADDRESS_MAP_END @@ -544,7 +544,7 @@ MC6845_UPDATE_ROW( excali64_state::update_row ) } } -static MACHINE_CONFIG_START( excali64, excali64_state ) +static MACHINE_CONFIG_START( excali64 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(excali64_mem) @@ -647,5 +647,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, excali64, 0, 0, excali64, excali64, driver_device, 0, "BGR Computers", "Excalibur 64", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1984, excali64, 0, 0, excali64, excali64, excali64_state, 0, "BGR Computers", "Excalibur 64", 0 ) diff --git a/src/mame/drivers/exedexes.cpp b/src/mame/drivers/exedexes.cpp index 3be63007d7f..5770c3329ad 100644 --- a/src/mame/drivers/exedexes.cpp +++ b/src/mame/drivers/exedexes.cpp @@ -217,7 +217,7 @@ void exedexes_state::machine_reset() m_sc2on = 0; } -static MACHINE_CONFIG_START( exedexes, exedexes_state ) +static MACHINE_CONFIG_START( exedexes ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */ @@ -238,7 +238,7 @@ static MACHINE_CONFIG_START( exedexes, exedexes_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(exedexes_state, screen_update_exedexes) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", exedexes) @@ -350,5 +350,5 @@ ROM_END -GAME( 1985, exedexes, 0, exedexes, exedexes, driver_device, 0, ROT270, "Capcom", "Exed Exes", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, savgbees, exedexes, exedexes, exedexes, driver_device, 0, ROT270, "Capcom (Memetron license)", "Savage Bees", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, exedexes, 0, exedexes, exedexes, exedexes_state, 0, ROT270, "Capcom", "Exed Exes", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, savgbees, exedexes, exedexes, exedexes, exedexes_state, 0, ROT270, "Capcom (Memetron license)", "Savage Bees", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/exelv.cpp b/src/mame/drivers/exelv.cpp index 65f98ca3915..ed136ba0385 100644 --- a/src/mame/drivers/exelv.cpp +++ b/src/mame/drivers/exelv.cpp @@ -484,7 +484,7 @@ MACHINE_START_MEMBER( exelv_state, exeltel) } -static MACHINE_CONFIG_START( exl100, exelv_state ) +static MACHINE_CONFIG_START( exl100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS7020_EXL, XTAL_4_9152MHz) @@ -505,11 +505,11 @@ static MACHINE_CONFIG_START( exl100, exelv_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_UPDATE_DEVICE("tms3556", tms3556_device, screen_update) #if TMS3556_DOUBLE_WIDTH - MCFG_SCREEN_SIZE(TMS3556_TOTAL_WIDTH*2, TMS3556_TOTAL_HEIGHT*2) - MCFG_SCREEN_VISIBLE_AREA(0, TMS3556_TOTAL_WIDTH*2-1, 0, TMS3556_TOTAL_HEIGHT*2-1) + MCFG_SCREEN_SIZE(tms3556_device::TOTAL_WIDTH*2, tms3556_device::TOTAL_HEIGHT*2) + MCFG_SCREEN_VISIBLE_AREA(0, tms3556_device::TOTAL_WIDTH*2-1, 0, tms3556_device::TOTAL_HEIGHT*2-1) #else - MCFG_SCREEN_SIZE(TMS3556_TOTAL_WIDTH, TMS3556_TOTAL_HEIGHT*2) - MCFG_SCREEN_VISIBLE_AREA(0, TMS3556_TOTAL_WIDTH-1, 0, TMS3556_TOTAL_HEIGHT-1) + MCFG_SCREEN_SIZE(tms3556_device::TOTAL_WIDTH, tms3556_device::TOTAL_HEIGHT*2) + MCFG_SCREEN_VISIBLE_AREA(0, tms3556_device::TOTAL_WIDTH-1, 0, tms3556_device::TOTAL_HEIGHT-1) #endif MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ @@ -533,7 +533,7 @@ static MACHINE_CONFIG_START( exl100, exelv_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( exeltel, exelv_state ) +static MACHINE_CONFIG_START( exeltel ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS7040, XTAL_4_9152MHz) @@ -554,11 +554,11 @@ static MACHINE_CONFIG_START( exeltel, exelv_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_UPDATE_DEVICE("tms3556", tms3556_device, screen_update) #if TMS3556_DOUBLE_WIDTH - MCFG_SCREEN_SIZE(TMS3556_TOTAL_WIDTH*2, TMS3556_TOTAL_HEIGHT*2) - MCFG_SCREEN_VISIBLE_AREA(0, TMS3556_TOTAL_WIDTH*2-1, 0, TMS3556_TOTAL_HEIGHT*2-1) + MCFG_SCREEN_SIZE(tms3556_device::TOTAL_WIDTH*2, tms3556_device::TOTAL_HEIGHT*2) + MCFG_SCREEN_VISIBLE_AREA(0, tms3556_device::TOTAL_WIDTH*2-1, 0, tms3556_device::TOTAL_HEIGHT*2-1) #else - MCFG_SCREEN_SIZE(TMS3556_TOTAL_WIDTH, TMS3556_TOTAL_HEIGHT*2) - MCFG_SCREEN_VISIBLE_AREA(0, TMS3556_TOTAL_WIDTH-1, 0, TMS3556_TOTAL_HEIGHT-1) + MCFG_SCREEN_SIZE(tms3556_device::TOTAL_WIDTH, tms3556_device::TOTAL_HEIGHT*2) + MCFG_SCREEN_VISIBLE_AREA(0, tms3556_device::TOTAL_WIDTH-1, 0, tms3556_device::TOTAL_HEIGHT-1) #endif MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ @@ -607,6 +607,6 @@ ROM_START(exeltel) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP(1984, exl100, 0, 0, exl100, exelv, driver_device, 0, "Exelvision", "EXL 100", MACHINE_NOT_WORKING) -COMP(1986, exeltel, exl100, 0, exeltel, exelv, driver_device, 0, "Exelvision", "Exeltel", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP(1984, exl100, 0, 0, exl100, exelv, exelv_state, 0, "Exelvision", "EXL 100", MACHINE_NOT_WORKING) +COMP(1986, exeltel, exl100, 0, exeltel, exelv, exelv_state, 0, "Exelvision", "Exeltel", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/exerion.cpp b/src/mame/drivers/exerion.cpp index fd30847f034..1cd99655ffc 100644 --- a/src/mame/drivers/exerion.cpp +++ b/src/mame/drivers/exerion.cpp @@ -370,7 +370,7 @@ void exerion_state::machine_reset() m_background_latches[i] = 0; } -static MACHINE_CONFIG_START( exerion, exerion_state ) +static MACHINE_CONFIG_START( exerion ) MCFG_CPU_ADD("maincpu", Z80, EXERION_CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(main_map) diff --git a/src/mame/drivers/exidy.cpp b/src/mame/drivers/exidy.cpp index b8285b9f436..e93afaa2a44 100644 --- a/src/mame/drivers/exidy.cpp +++ b/src/mame/drivers/exidy.cpp @@ -803,7 +803,7 @@ MACHINE_START_MEMBER(exidy_state,teetert) * *************************************/ -static MACHINE_CONFIG_START( base, exidy_state ) +static MACHINE_CONFIG_START( base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, EXIDY_CPU_CLOCK) @@ -1115,6 +1115,11 @@ ROM_START( mtrap ) ROM_REGION( 0x0800, "gfx1", 0 ) ROM_LOAD( "mtl11d.bin", 0x0000, 0x0800, CRC(c6e4d339) SHA1(b091923e4d52e93d7c567afba217a10b2a3735fc) ) + + ROM_REGION( 0x140, "proms", 0 ) // were dumped from a bootleg, very probably they are the same, but marked as bad dump for precaution. They also match the teetert ones. + ROM_LOAD( "74s288.6c", 0x0000, 0x0020, BAD_DUMP CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) ) // 6331 according to the Mouse Trap manual + ROM_LOAD( "24s10n.1c", 0x0020, 0x0100, BAD_DUMP CRC(43b35bb7) SHA1(0a0cecea8faff9f3ff4c2ceda0b5b25e8e1cd667) ) // 6301 according to the Mouse Trap manual + ROM_LOAD( "74s288.3d", 0x0120, 0x0020, BAD_DUMP CRC(e26f9053) SHA1(eec35b6aa2c2d305418306bf4a1754a0583f109f) ) // 6331 according to the Mouse Trap manual ROM_END @@ -1140,6 +1145,11 @@ ROM_START( mtrap2 ) ROM_REGION( 0x0800, "gfx1", 0 ) ROM_LOAD( "mtl11d.bin", 0x0000, 0x0800, CRC(c6e4d339) SHA1(b091923e4d52e93d7c567afba217a10b2a3735fc) ) + + ROM_REGION( 0x140, "proms", 0 ) // were dumped from a bootleg, very probably they are the same, but marked as bad dump for precaution. They also match the teetert ones. + ROM_LOAD( "74s288.6c", 0x0000, 0x0020, BAD_DUMP CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) ) // 6331 according to the Mouse Trap manual + ROM_LOAD( "24s10n.1c", 0x0020, 0x0100, BAD_DUMP CRC(43b35bb7) SHA1(0a0cecea8faff9f3ff4c2ceda0b5b25e8e1cd667) ) // 6301 according to the Mouse Trap manual + ROM_LOAD( "74s288.3d", 0x0120, 0x0020, BAD_DUMP CRC(e26f9053) SHA1(eec35b6aa2c2d305418306bf4a1754a0583f109f) ) // 6331 according to the Mouse Trap manual ROM_END @@ -1165,6 +1175,11 @@ ROM_START( mtrap3 ) ROM_REGION( 0x0800, "gfx1", 0 ) ROM_LOAD( "mtl11d.bin", 0x0000, 0x0800, CRC(c6e4d339) SHA1(b091923e4d52e93d7c567afba217a10b2a3735fc) ) + + ROM_REGION( 0x140, "proms", 0 ) // were dumped from a bootleg, very probably they are the same, but marked as bad dump for precaution. They also match the teetert ones. + ROM_LOAD( "74s288.6c", 0x0000, 0x0020, BAD_DUMP CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) ) // 6331 according to the Mouse Trap manual + ROM_LOAD( "24s10n.1c", 0x0020, 0x0100, BAD_DUMP CRC(43b35bb7) SHA1(0a0cecea8faff9f3ff4c2ceda0b5b25e8e1cd667) ) // 6301 according to the Mouse Trap manual + ROM_LOAD( "74s288.3d", 0x0120, 0x0020, BAD_DUMP CRC(e26f9053) SHA1(eec35b6aa2c2d305418306bf4a1754a0583f109f) ) // 6331 according to the Mouse Trap manual ROM_END @@ -1190,6 +1205,11 @@ ROM_START( mtrap4 ) ROM_REGION( 0x0800, "gfx1", 0 ) ROM_LOAD( "mtl11d.bin", 0x0000, 0x0800, CRC(c6e4d339) SHA1(b091923e4d52e93d7c567afba217a10b2a3735fc) ) + + ROM_REGION( 0x140, "proms", 0 ) // were dumped from a bootleg, very probably they are the same, but marked as bad dump for precaution. They also match the teetert ones. + ROM_LOAD( "74s288.6c", 0x0000, 0x0020, BAD_DUMP CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) ) // 6331 according to the Mouse Trap manual + ROM_LOAD( "24s10n.1c", 0x0020, 0x0100, BAD_DUMP CRC(43b35bb7) SHA1(0a0cecea8faff9f3ff4c2ceda0b5b25e8e1cd667) ) // 6301 according to the Mouse Trap manual + ROM_LOAD( "74s288.3d", 0x0120, 0x0020, BAD_DUMP CRC(e26f9053) SHA1(eec35b6aa2c2d305418306bf4a1754a0583f109f) ) // 6331 according to the Mouse Trap manual ROM_END ROM_START( mtrapb ) @@ -1212,8 +1232,46 @@ ROM_START( mtrapb ) ROM_REGION( 0x0800, "gfx1", 0 ) ROM_LOAD( "2516.j6", 0x0000, 0x0800, CRC(c6e4d339) SHA1(b091923e4d52e93d7c567afba217a10b2a3735fc) ) + + ROM_REGION( 0x140, "proms", 0 ) // were dumped from a bootleg, very probably they are the same, but marked as bad dump for precaution. They also match the teetert ones. + ROM_LOAD( "74s288.6c", 0x0000, 0x0020, BAD_DUMP CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) ) // 6331 according to the Mouse Trap manual + ROM_LOAD( "24s10n.1c", 0x0020, 0x0100, BAD_DUMP CRC(43b35bb7) SHA1(0a0cecea8faff9f3ff4c2ceda0b5b25e8e1cd667) ) // 6301 according to the Mouse Trap manual + ROM_LOAD( "74s288.3d", 0x0120, 0x0020, BAD_DUMP CRC(e26f9053) SHA1(eec35b6aa2c2d305418306bf4a1754a0583f109f) ) // 6331 according to the Mouse Trap manual ROM_END +/* +This bootleg was manufactured in Italy. 2 different PCBs were dumped and dumps match. +main PCB is marked: "900T.C" +piggyback PCB is marked: "LC" (it's Italian for "Lato Componenti" = Component Side) +piggyback PCB fits into main PCB @ 8l +*/ + +ROM_START( mtrapb2 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "ms11.2p", 0xa000, 0x1000, CRC(2879cb8d) SHA1(738bd3cd968fd733adcfe0fb5efdb2e2fcfb344e) ) + ROM_LOAD( "ms10.2m", 0xb000, 0x1000, CRC(d7378af9) SHA1(44c8ba4c84f51306e5bdd64e6c255d1c1018db72) ) + ROM_LOAD( "ms9.2l", 0xc000, 0x1000, CRC(be667e64) SHA1(c5f686e3c403691f14992354af690dc89e1722f7) ) + ROM_LOAD( "ms8.2k", 0xd000, 0x1000, CRC(de0442f8) SHA1(61774921adf016b3a2ae18baa79af60dca2d9e45) ) + ROM_LOAD( "ms6.2f", 0xe000, 0x1000, CRC(cdf8c6a8) SHA1(932ae9c0ea5700bd79862efa94742136d8e15641) ) + ROM_LOAD( "ms6.2f", 0xf000, 0x1000, CRC(77d3f2e6) SHA1(2c21dd7ee326ccb41d3c64eec90a19198382edea) ) + + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "ms1a.10j", 0x6000, 0x2000, CRC(d4160aa8) SHA1(d3bae8fa54e71c397ec60f998a012e088588a2e4) ) + + ROM_REGION( 0x4000, "cvsdcpu", 0 ) /* 16k for digital sound processor */ + ROM_LOAD( "ms2a.8d", 0x0000,0x1000,CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) ) + ROM_LOAD( "ms3a.8e", 0x1000,0x1000,CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) ) + ROM_LOAD( "ms4a.8f", 0x2000,0x1000,CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) ) + ROM_LOAD( "ms5a.8h", 0x3000,0x1000,CRC(658482a6) SHA1(c0d770fbeaa7cb3e0eef47d8caa0f8a78841692e) ) + + ROM_REGION( 0x0800, "gfx1", 0 ) + ROM_LOAD( "ms11d.6j", 0x0000, 0x0800, CRC(c6e4d339) SHA1(b091923e4d52e93d7c567afba217a10b2a3735fc) ) + + ROM_REGION( 0x140, "proms", 0 ) + ROM_LOAD( "74s288.6c", 0x0000, 0x0020, CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) ) + ROM_LOAD( "24s10n.1c", 0x0020, 0x0100, CRC(43b35bb7) SHA1(0a0cecea8faff9f3ff4c2ceda0b5b25e8e1cd667) ) + ROM_LOAD( "74s288.3d", 0x0120, 0x0020, CRC(e26f9053) SHA1(eec35b6aa2c2d305418306bf4a1754a0583f109f) ) +ROM_END ROM_START( venture ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -1584,33 +1642,34 @@ DRIVER_INIT_MEMBER(exidy_state,fax) GAME( 1979, sidetrac, 0, sidetrac, sidetrac, exidy_state, sidetrac, ROT0, "Exidy", "Side Trak", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // "Side Track" on title screen, but cabinet/flyers/documentation clearly indicates otherwise, "Side Trak" it is -GAME( 1980, targ, 0, targ, targ, exidy_state, targ, ROT0, "Exidy", "Targ", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, targc, targ, targ, targ, exidy_state, targ, ROT0, "Exidy", "Targ (cocktail?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, targ, 0, targ, targ, exidy_state, targ, ROT0, "Exidy", "Targ", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, targc, targ, targ, targ, exidy_state, targ, ROT0, "Exidy", "Targ (cocktail?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spectar, 0, spectar, spectar, exidy_state, spectar, ROT0, "Exidy", "Spectar (revision 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spectar1, spectar, spectar, spectar, exidy_state, spectar, ROT0, "Exidy", "Spectar (revision 1?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, rallys, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Novar)", "Rallys (bootleg of Spectar, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, rallysa, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Musik Box Brescia)", "Rallys (bootleg of Spectar, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, panzer, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Proel)", "Panzer (bootleg of Spectar)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spectar, 0, spectar, spectar, exidy_state, spectar, ROT0, "Exidy", "Spectar (revision 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spectar1, spectar, spectar, spectar, exidy_state, spectar, ROT0, "Exidy", "Spectar (revision 1?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, rallys, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Novar)", "Rallys (bootleg of Spectar, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, rallysa, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Musik Box Brescia)", "Rallys (bootleg of Spectar, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, panzer, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Proel)", "Panzer (bootleg of Spectar)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1980, phantoma, spectar, rallys, phantoma, exidy_state, phantoma, ROT0, "bootleg (Jeutel)", "Phantomas (bootleg of Spectar)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1980, phantom, spectar, rallys, phantoma, exidy_state, phantoma, ROT0, "bootleg (Proel)", "Phantom (bootleg of Spectar)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mtrap, 0, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mtrap2, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mtrap3, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mtrap4, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mtrapb, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "bootleg", "Mouse Trap (bootleg)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1981, venture, 0, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 5 set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, venture2, venture, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 5 set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, venture4, venture, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 4)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1982, teetert, 0, teetert, teetert, exidy_state, teetert, ROT0, "Exidy", "Teeter Torture (prototype)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1982, pepper2, 0, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Pepper II (version 8)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pepper27, pepper2, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Pepper II (version 7)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1982, hardhat, 0, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Hard Hat", MACHINE_SUPPORTS_SAVE ) - -GAME( 1983, fax, 0, fax, fax, exidy_state, fax, ROT0, "Exidy", "FAX", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, fax2, fax, fax, fax, exidy_state, fax, ROT0, "Exidy", "FAX 2", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mtrap, 0, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mtrap2, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mtrap3, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mtrap4, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mtrapb, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "bootleg", "Mouse Trap (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mtrapb2, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "bootleg", "Mouse Trap (version 4, bootleg)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1981, venture, 0, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 5 set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, venture2, venture, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 5 set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, venture4, venture, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 4)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1982, teetert, 0, teetert, teetert, exidy_state, teetert, ROT0, "Exidy", "Teeter Torture (prototype)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1982, pepper2, 0, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Pepper II (version 8)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pepper27, pepper2, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Pepper II (version 7)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1982, hardhat, 0, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Hard Hat", MACHINE_SUPPORTS_SAVE ) + +GAME( 1983, fax, 0, fax, fax, exidy_state, fax, ROT0, "Exidy", "FAX", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, fax2, fax, fax, fax, exidy_state, fax, ROT0, "Exidy", "FAX 2", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/exidy440.cpp b/src/mame/drivers/exidy440.cpp index fd78f84ec2b..7b6ff76b66a 100644 --- a/src/mame/drivers/exidy440.cpp +++ b/src/mame/drivers/exidy440.cpp @@ -992,7 +992,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( exidy440, exidy440_state ) +static MACHINE_CONFIG_START( exidy440 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MAIN_CPU_CLOCK) @@ -2071,18 +2071,18 @@ DRIVER_INIT_MEMBER(exidy440_state,yukon) * *************************************/ -GAME( 1983, crossbow, 0, exidy440, crossbow, exidy440_state, exidy440, ROT0, "Exidy", "Crossbow (version 2.0)", 0 ) -GAME( 1984, cheyenne, 0, exidy440, cheyenne, exidy440_state, exidy440, ROT0, "Exidy", "Cheyenne (version 1.0)", 0 ) -GAME( 1985, combat, 0, exidy440, combat, exidy440_state, exidy440, ROT0, "Exidy", "Combat (version 3.0)", 0 ) -GAME( 1985, catch22, combat, exidy440, catch22, exidy440_state, exidy440, ROT0, "Exidy", "Catch-22 (version 8.0)", 0 ) -GAME( 1985, cracksht, 0, exidy440, cracksht, exidy440_state, exidy440, ROT0, "Exidy", "Crackshot (version 2.0)", 0 ) -GAME( 1986, claypign, 0, exidy440, claypign, exidy440_state, claypign, ROT0, "Exidy", "Clay Pigeon (version 2.0)", 0 ) -GAME( 1986, chiller, 0, exidy440, chiller, exidy440_state, exidy440, ROT0, "Exidy", "Chiller (version 3.0)", 0 ) +GAME( 1983, crossbow, 0, exidy440, crossbow, exidy440_state, exidy440, ROT0, "Exidy", "Crossbow (version 2.0)", 0 ) +GAME( 1984, cheyenne, 0, exidy440, cheyenne, exidy440_state, exidy440, ROT0, "Exidy", "Cheyenne (version 1.0)", 0 ) +GAME( 1985, combat, 0, exidy440, combat, exidy440_state, exidy440, ROT0, "Exidy", "Combat (version 3.0)", 0 ) +GAME( 1985, catch22, combat, exidy440, catch22, exidy440_state, exidy440, ROT0, "Exidy", "Catch-22 (version 8.0)", 0 ) +GAME( 1985, cracksht, 0, exidy440, cracksht, exidy440_state, exidy440, ROT0, "Exidy", "Crackshot (version 2.0)", 0 ) +GAME( 1986, claypign, 0, exidy440, claypign, exidy440_state, claypign, ROT0, "Exidy", "Clay Pigeon (version 2.0)", 0 ) +GAME( 1986, chiller, 0, exidy440, chiller, exidy440_state, exidy440, ROT0, "Exidy", "Chiller (version 3.0)", 0 ) GAME( 1986, topsecex, 0, topsecex, topsecex, exidy440_state, topsecex, ROT0, "Exidy", "Top Secret (Exidy) (version 1.0)", 0 ) -GAME( 1987, hitnmiss, 0, exidy440, hitnmiss, exidy440_state, exidy440, ROT0, "Exidy", "Hit 'n Miss (version 3.0)", 0 ) -GAME( 1987, hitnmiss2,hitnmiss, exidy440, hitnmiss, exidy440_state, exidy440, ROT0, "Exidy", "Hit 'n Miss (version 2.0)", 0 ) -GAME( 1988, whodunit, 0, exidy440, whodunit, exidy440_state, exidy440, ROT0, "Exidy", "Who Dunit (version 9.0)", 0 ) -GAME( 1988, whodunit8,whodunit, exidy440, whodunit, exidy440_state, exidy440, ROT0, "Exidy", "Who Dunit (version 8.0)", 0 ) -GAME( 1988, showdown, 0, exidy440, showdown, exidy440_state, showdown, ROT0, "Exidy", "Showdown (version 5.0)", 0 ) -GAME( 1989, yukon, 0, exidy440, showdown, exidy440_state, yukon, ROT0, "Exidy", "Yukon (version 2.0)", 0 ) -GAME( 1989, yukon1, yukon, exidy440, showdown, exidy440_state, yukon, ROT0, "Exidy", "Yukon (version 1.0)", 0 ) +GAME( 1987, hitnmiss, 0, exidy440, hitnmiss, exidy440_state, exidy440, ROT0, "Exidy", "Hit 'n Miss (version 3.0)", 0 ) +GAME( 1987, hitnmiss2,hitnmiss, exidy440, hitnmiss, exidy440_state, exidy440, ROT0, "Exidy", "Hit 'n Miss (version 2.0)", 0 ) +GAME( 1988, whodunit, 0, exidy440, whodunit, exidy440_state, exidy440, ROT0, "Exidy", "Who Dunit (version 9.0)", 0 ) +GAME( 1988, whodunit8,whodunit, exidy440, whodunit, exidy440_state, exidy440, ROT0, "Exidy", "Who Dunit (version 8.0)", 0 ) +GAME( 1988, showdown, 0, exidy440, showdown, exidy440_state, showdown, ROT0, "Exidy", "Showdown (version 5.0)", 0 ) +GAME( 1989, yukon, 0, exidy440, showdown, exidy440_state, yukon, ROT0, "Exidy", "Yukon (version 2.0)", 0 ) +GAME( 1989, yukon1, yukon, exidy440, showdown, exidy440_state, yukon, ROT0, "Exidy", "Yukon (version 1.0)", 0 ) diff --git a/src/mame/drivers/exidyttl.cpp b/src/mame/drivers/exidyttl.cpp index cbaef90b02a..5b6d385ccac 100644 --- a/src/mame/drivers/exidyttl.cpp +++ b/src/mame/drivers/exidyttl.cpp @@ -52,7 +52,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -95,7 +95,7 @@ void exidyttl_state::video_start() { } -static MACHINE_CONFIG_START( attack, exidyttl_state ) +static MACHINE_CONFIG_START( attack ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -110,7 +110,7 @@ static MACHINE_CONFIG_START( attack, exidyttl_state ) MCFG_FIXFREQ_SYNC_THRESHOLD(0.30) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( deathrac, exidyttl_state ) +static MACHINE_CONFIG_START( deathrac ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -211,6 +211,6 @@ ROM_START( deathrac ) ROM_LOAD( "6331-36.t7", 0x0000, 0x0020, CRC(15e00a2a) SHA1(cd43d227a34e5444ed9d8a4acf5497df9c789c73) ) ROM_END -GAME( 1977, attckexd, 0, attack, 0, driver_device, 0, ROT0, "Exidy", "Attack (Set 1) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1977, attckexd2, attckexd, attack, 0, driver_device, 0, ROT0, "Exidy", "Attack (Set 2) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1976, deathrac, 0, deathrac, 0, driver_device, 0, ROT0, "Exidy", "Death Race [TTL]", MACHINE_IS_SKELETON ) +GAME( 1977, attckexd, 0, attack, 0, exidyttl_state, 0, ROT0, "Exidy", "Attack (Set 1) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1977, attckexd2, attckexd, attack, 0, exidyttl_state, 0, ROT0, "Exidy", "Attack (Set 2) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, deathrac, 0, deathrac, 0, exidyttl_state, 0, ROT0, "Exidy", "Death Race [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/exp85.cpp b/src/mame/drivers/exp85.cpp index 9b09545fe13..ebd436ca302 100644 --- a/src/mame/drivers/exp85.cpp +++ b/src/mame/drivers/exp85.cpp @@ -178,7 +178,7 @@ void exp85_state::machine_start() /* Machine Driver */ -static MACHINE_CONFIG_START( exp85, exp85_state ) +static MACHINE_CONFIG_START( exp85 ) /* basic machine hardware */ MCFG_CPU_ADD(I8085A_TAG, I8085A, XTAL_6_144MHz) MCFG_CPU_PROGRAM_MAP(exp85_mem) @@ -233,5 +233,5 @@ ROM_START( exp85 ) ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, exp85, 0, 0, exp85, exp85, driver_device, 0, "Netronics", "Explorer/85", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1979, exp85, 0, 0, exp85, exp85, exp85_state, 0, "Netronics", "Explorer/85", 0 ) diff --git a/src/mame/drivers/expro02.cpp b/src/mame/drivers/expro02.cpp index f18f09f308c..691fcd9b5d1 100644 --- a/src/mame/drivers/expro02.cpp +++ b/src/mame/drivers/expro02.cpp @@ -876,7 +876,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( expro02, expro02_state ) +static MACHINE_CONFIG_START( expro02 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -921,7 +921,7 @@ static MACHINE_CONFIG_START( expro02, expro02_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 12000000/6, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 12000000/6, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) @@ -960,7 +960,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( supmodel, comad_noview2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(supmodel_map) - MCFG_OKIM6295_REPLACE("oki", 1584000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_REPLACE("oki", 1584000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -978,7 +978,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( galhustl, comad_noview2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(galhustl_map) - MCFG_OKIM6295_REPLACE("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_REPLACE("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) @@ -990,7 +990,7 @@ static MACHINE_CONFIG_DERIVED( zipzap, comad_noview2 ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(zipzap_map) - MCFG_OKIM6295_REPLACE("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_REPLACE("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) @@ -1822,42 +1822,42 @@ DRIVER_INIT_MEMBER(expro02_state,expro02) * *************************************/ -GAME( 1990, galsnew, 0, expro02, expro02, expro02_state, expro02, ROT90, "Kaneko", "Gals Panic (US, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, galsnewa, galsnew, expro02, galsnewa, expro02_state, expro02, ROT90, "Kaneko", "Gals Panic (Export, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, galsnewj, galsnew, expro02, galsnewj, expro02_state, expro02, ROT90, "Kaneko (Taito license)", "Gals Panic (Japan, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, galsnewk, galsnew, expro02, galsnewj, expro02_state, expro02, ROT90, "Kaneko (Inter license)", "Gals Panic (Korea, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, galsnew, 0, expro02, expro02, expro02_state, expro02, ROT90, "Kaneko", "Gals Panic (US, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, galsnewa, galsnew, expro02, galsnewa, expro02_state, expro02, ROT90, "Kaneko", "Gals Panic (Export, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, galsnewj, galsnew, expro02, galsnewj, expro02_state, expro02, ROT90, "Kaneko (Taito license)", "Gals Panic (Japan, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, galsnewk, galsnew, expro02, galsnewj, expro02_state, expro02, ROT90, "Kaneko (Inter license)", "Gals Panic (Korea, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) /* the first version of Fantasia clones the EXPRO02 almost exactly, including the encrypted tiles*/ -GAME( 1994, fantasia, 0, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940429 PCB, set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, fantasiab, fantasia, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940429 PCB, set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, fantasiaa, fantasia, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940307 PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fantasia, 0, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940429 PCB, set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fantasiab, fantasia, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940429 PCB, set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fantasiaa, fantasia, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940307 PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) /* subsequent releases remove the encrypted tile (View2 layer) but leave the unused writes to it in the program code */ -GAME( 1994, fantasian,fantasia, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "Fantasia (940803 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, fantasian,fantasia, fantasia, fantasiaa, expro02_state, 0, ROT90, "Comad & New Japan System", "Fantasia (940803 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, supmodel, 0, supmodel, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "Super Model",MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "C" nudity level +GAME( 1994, supmodel, 0, supmodel, fantasiaa, expro02_state, 0, ROT90, "Comad & New Japan System", "Super Model",MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "C" nudity level -GAME( 1995, newfant, 0, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "New Fantasia (1995 copyright)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // the only difference between the two is the gfx rom containing the copyright -GAME( 1994, newfanta, newfant, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "New Fantasia (1994 copyright)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, fantsy95, newfant, fantasia, fantasiaa, driver_device, 0, ROT90, "Hi-max Technology Inc.", "Fantasy '95", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "C" nudity level +GAME( 1995, newfant, 0, fantasia, fantasiaa, expro02_state, 0, ROT90, "Comad & New Japan System", "New Fantasia (1995 copyright)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // the only difference between the two is the gfx rom containing the copyright +GAME( 1994, newfanta, newfant, fantasia, fantasiaa, expro02_state, 0, ROT90, "Comad & New Japan System", "New Fantasia (1994 copyright)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, fantsy95, newfant, fantasia, fantasiaa, expro02_state, 0, ROT90, "Hi-max Technology Inc.", "Fantasy '95", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "C" nudity level // the PCB label (A/B) could be related to the 3 different levels of nudity Comad offered -GAME( 1996, missw96, 0, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000A PCB, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level -GAME( 1996, missw96a, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000A PCB, set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level -GAME( 1996, missw96b, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000A PCB, set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level -GAME( 1996, missw96c, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000B PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "B" nudity level +GAME( 1996, missw96, 0, fantasia, missw96, expro02_state, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000A PCB, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level +GAME( 1996, missw96a, missw96, fantasia, missw96, expro02_state, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000A PCB, set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level +GAME( 1996, missw96b, missw96, fantasia, missw96, expro02_state, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000A PCB, set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level +GAME( 1996, missw96c, missw96, fantasia, missw96, expro02_state, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000B PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "B" nudity level -GAME( 1996, missmw96, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss Mister World '96 (Nude)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, missmw96, missw96, fantasia, missw96, expro02_state, 0, ROT0, "Comad", "Miss Mister World '96 (Nude)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, smissw, 0, smissw, missw96, driver_device, 0, ROT0, "Comad", "Super Miss World", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // 951127 PCB +GAME( 1996, smissw, 0, smissw, missw96, expro02_state, 0, ROT0, "Comad", "Super Miss World", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // 951127 PCB -GAME( 1997, fantsia2, 0, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "Fantasia II (Explicit)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level -GAME( 1997, fantsia2a,fantsia2, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "Fantasia II (Less Explicit)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "B" nudity level -GAME( 1998, fantsia2n,fantsia2, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "Fantasia II (1998)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level +GAME( 1997, fantsia2, 0, fantsia2, missw96, expro02_state, 0, ROT0, "Comad", "Fantasia II (Explicit)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level +GAME( 1997, fantsia2a,fantsia2, fantsia2, missw96, expro02_state, 0, ROT0, "Comad", "Fantasia II (Less Explicit)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "B" nudity level +GAME( 1998, fantsia2n,fantsia2, fantsia2, missw96, expro02_state, 0, ROT0, "Comad", "Fantasia II (1998)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level -GAME( 2002, wownfant, 0, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "WOW New Fantasia", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "B" nudity level -GAME( 2002, missw02, 0, fantsia2, missw96, driver_device, 0, ROT0, "Daigom", "Miss World 2002", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level +GAME( 2002, wownfant, 0, fantsia2, missw96, expro02_state, 0, ROT0, "Comad", "WOW New Fantasia", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "B" nudity level +GAME( 2002, missw02, 0, fantsia2, missw96, expro02_state, 0, ROT0, "Daigom", "Miss World 2002", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // "A" nudity level -GAME( 1996, pgalvip, 0, galhustl, galhustl, driver_device, 0, ROT0, "ACE International / Afega","Pocket Gals V.I.P (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // roms were all AFEGA stickered, select screen seems wrong? maybe not a final version. -GAME( 1997, pgalvipa, pgalvip, galhustl, galhustl, driver_device, 0, ROT0, "", "Pocket Gals V.I.P (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, galhustl, pgalvip, galhustl, galhustl, driver_device, 0, ROT0, "ACE International", "Gals Hustler", MACHINE_SUPPORTS_SAVE ) // hack of the above? +GAME( 1996, pgalvip, 0, galhustl, galhustl, expro02_state, 0, ROT0, "ACE International / Afega","Pocket Gals V.I.P (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // roms were all AFEGA stickered, select screen seems wrong? maybe not a final version. +GAME( 1997, pgalvipa, pgalvip, galhustl, galhustl, expro02_state, 0, ROT0, "", "Pocket Gals V.I.P (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, galhustl, pgalvip, galhustl, galhustl, expro02_state, 0, ROT0, "ACE International", "Gals Hustler", MACHINE_SUPPORTS_SAVE ) // hack of the above? -GAME( 1995, zipzap, 0, zipzap, zipzap, driver_device, 0, ROT90, "Barko Corp", "Zip & Zap", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, zipzap, 0, zipzap, zipzap, expro02_state, 0, ROT90, "Barko Corp", "Zip & Zap", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/exprraid.cpp b/src/mame/drivers/exprraid.cpp index 53529696c91..b3b3e2685da 100644 --- a/src/mame/drivers/exprraid.cpp +++ b/src/mame/drivers/exprraid.cpp @@ -499,7 +499,7 @@ void exprraid_state::machine_reset() } -static MACHINE_CONFIG_START( exprraid, exprraid_state ) +static MACHINE_CONFIG_START( exprraid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", DECO16, XTAL_12MHz / 8) diff --git a/src/mame/drivers/exterm.cpp b/src/mame/drivers/exterm.cpp index 7c072b6cd4d..5ad8d5ec2dd 100644 --- a/src/mame/drivers/exterm.cpp +++ b/src/mame/drivers/exterm.cpp @@ -397,7 +397,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( exterm, exterm_state ) +static MACHINE_CONFIG_START( exterm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, 40000000) @@ -501,4 +501,4 @@ ROM_END * *************************************/ -GAME( 1989, exterm, 0, exterm, exterm, driver_device, 0, ROT0, "Gottlieb / Premier Technology", "Exterminator", 0 ) +GAME( 1989, exterm, 0, exterm, exterm, exterm_state, 0, ROT0, "Gottlieb / Premier Technology", "Exterminator", 0 ) diff --git a/src/mame/drivers/extrema.cpp b/src/mame/drivers/extrema.cpp index 4412839f895..77ee3833237 100644 --- a/src/mame/drivers/extrema.cpp +++ b/src/mame/drivers/extrema.cpp @@ -43,7 +43,7 @@ static INPUT_PORTS_START( extrema ) INPUT_PORTS_END -static MACHINE_CONFIG_START( extrema, extrema_state ) +static MACHINE_CONFIG_START( extrema ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 6000000) MCFG_CPU_PROGRAM_MAP(extrema_map) @@ -158,13 +158,13 @@ ROM_END -GAME( 200?, maski, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Maski Show (Russia) (Extrema)", MACHINE_IS_SKELETON) -GAME( 200?, adults, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Adults Only (Russia) (Extrema)", MACHINE_IS_SKELETON) -GAME( 200?, bloto, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Blits Loto (Russia) (Extrema)", MACHINE_IS_SKELETON) -GAME( 200?, blpearl, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Black Pearl (Russia) (Extrema)", MACHINE_IS_SKELETON) -GAME( 200?, grancan, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Grand Canyon (Russia) (Extrema)", MACHINE_IS_SKELETON) -GAME( 200?, luckshel, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Lucky Shell (Russia) (Extrema)", MACHINE_IS_SKELETON) -GAME( 200?, exsafar, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Safari (Russia) (Extrema)", MACHINE_IS_SKELETON) -GAME( 200?, strlink, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Strong Link (Russia) (Extrema)", MACHINE_IS_SKELETON) -GAME( 200?, extrmth, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Treasure Hunt (Russia) (Extrema)", MACHINE_IS_SKELETON) -GAME( 200?, extrmti, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Treasure Island (Russia) (Extrema)", MACHINE_IS_SKELETON) +GAME( 200?, maski, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Maski Show (Russia) (Extrema)", MACHINE_IS_SKELETON ) +GAME( 200?, adults, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Adults Only (Russia) (Extrema)", MACHINE_IS_SKELETON ) +GAME( 200?, bloto, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Blits Loto (Russia) (Extrema)", MACHINE_IS_SKELETON ) +GAME( 200?, blpearl, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Black Pearl (Russia) (Extrema)", MACHINE_IS_SKELETON ) +GAME( 200?, grancan, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Grand Canyon (Russia) (Extrema)", MACHINE_IS_SKELETON ) +GAME( 200?, luckshel, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Lucky Shell (Russia) (Extrema)", MACHINE_IS_SKELETON ) +GAME( 200?, exsafar, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Safari (Russia) (Extrema)", MACHINE_IS_SKELETON ) +GAME( 200?, strlink, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Strong Link (Russia) (Extrema)", MACHINE_IS_SKELETON ) +GAME( 200?, extrmth, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Treasure Hunt (Russia) (Extrema)", MACHINE_IS_SKELETON ) +GAME( 200?, extrmti, 0, extrema, extrema, extrema_state, 0, ROT0, "Extrema", "Treasure Island (Russia) (Extrema)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/exzisus.cpp b/src/mame/drivers/exzisus.cpp index 1ca41be0465..5f13dc2cdc4 100644 --- a/src/mame/drivers/exzisus.cpp +++ b/src/mame/drivers/exzisus.cpp @@ -225,7 +225,7 @@ GFXDECODE_END /* All clocks are unconfirmed */ -static MACHINE_CONFIG_START( exzisus, exzisus_state ) +static MACHINE_CONFIG_START( exzisus ) /* basic machine hardware */ MCFG_CPU_ADD("cpua", Z80, 6000000) @@ -390,6 +390,6 @@ ROM_START( exzisust ) ROM_LOAD( "b23-05.16l", 0x00800, 0x00400, CRC(87f0f69a) SHA1(37df6fd56245fab9beaabfd86fd8f95d7c42c2a5) ) ROM_END -GAME( 1987, exzisus, 0, exzisus, exzisus, driver_device, 0, ROT0, "Taito Corporation", "Exzisus (Japan, dedicated)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, exzisusa, exzisus, exzisus, exzisus, driver_device, 0, ROT0, "Taito Corporation", "Exzisus (Japan, conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, exzisust, exzisus, exzisus, exzisus, driver_device, 0, ROT0, "Taito Corporation (TAD license)", "Exzisus (TAD license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, exzisus, 0, exzisus, exzisus, exzisus_state, 0, ROT0, "Taito Corporation", "Exzisus (Japan, dedicated)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, exzisusa, exzisus, exzisus, exzisus, exzisus_state, 0, ROT0, "Taito Corporation", "Exzisus (Japan, conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, exzisust, exzisus, exzisus, exzisus, exzisus_state, 0, ROT0, "Taito Corporation (TAD license)", "Exzisus (TAD license)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/f-32.cpp b/src/mame/drivers/f-32.cpp index e1d966fa8a8..cfed6a7e63c 100644 --- a/src/mame/drivers/f-32.cpp +++ b/src/mame/drivers/f-32.cpp @@ -156,7 +156,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( mosaicf2, mosaicf2_state ) +static MACHINE_CONFIG_START( mosaicf2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", E132XN, XTAL_20MHz*4) /* 4x internal multiplier */ @@ -186,7 +186,7 @@ static MACHINE_CONFIG_START( mosaicf2, mosaicf2_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_14_31818MHz/8, OKIM6295_PIN7_HIGH) /* 1.7897725 MHz */ + MCFG_OKIM6295_ADD("oki", XTAL_14_31818MHz/8, PIN7_HIGH) /* 1.7897725 MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -232,7 +232,7 @@ static ADDRESS_MAP_START( royalpk2_io, AS_IO, 32, mosaicf2_state ) AM_RANGE(0x6a00, 0x6a03) AM_WRITE_PORT("EEPROMOUT") ADDRESS_MAP_END -static MACHINE_CONFIG_START( royalpk2, mosaicf2_state ) +static MACHINE_CONFIG_START( royalpk2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", GMS30C2132, XTAL_50MHz) @@ -262,7 +262,7 @@ static MACHINE_CONFIG_START( royalpk2, mosaicf2_state ) // MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) // MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_14_31818MHz/8, OKIM6295_PIN7_HIGH) /* 1.7897725 MHz */ + MCFG_OKIM6295_ADD("oki", XTAL_14_31818MHz/8, PIN7_HIGH) /* 1.7897725 MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) @@ -364,5 +364,5 @@ ROM_START( royalpk2 ) ROM_END -GAME( 1999, mosaicf2, 0, mosaicf2, mosaicf2, driver_device, 0, ROT0, "F2 System", "Mosaic (F2 System)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, royalpk2, 0, royalpk2, royalpk2, driver_device, 0, ROT0, "F2 System", "Royal Poker 2 (Network version 3.12)", MACHINE_NOT_WORKING ) +GAME( 1999, mosaicf2, 0, mosaicf2, mosaicf2, mosaicf2_state, 0, ROT0, "F2 System", "Mosaic (F2 System)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, royalpk2, 0, royalpk2, royalpk2, mosaicf2_state, 0, ROT0, "F2 System", "Royal Poker 2 (Network version 3.12)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/f1gp.cpp b/src/mame/drivers/f1gp.cpp index aefd269ba62..857299a4e14 100644 --- a/src/mame/drivers/f1gp.cpp +++ b/src/mame/drivers/f1gp.cpp @@ -33,6 +33,8 @@ #include "sound/2610intf.h" #include "sound/okim6295.h" +#include "video/vsystem_gga.h" + #include "screen.h" #include "speaker.h" @@ -85,6 +87,7 @@ static ADDRESS_MAP_START( f1gp_cpu1_map, AS_PROGRAM, 16, f1gp_state ) AM_RANGE(0xfff002, 0xfff005) AM_WRITE(f1gp_fgscroll_w) AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2") AM_RANGE(0xfff008, 0xfff009) AM_READWRITE8(command_pending_r, sound_command_w, 0x00ff) + AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) AM_RANGE(0xfff040, 0xfff05f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3") ADDRESS_MAP_END @@ -181,7 +184,7 @@ static ADDRESS_MAP_START( f1gpb_cpu1_map, AS_PROGRAM, 16, f1gp_state ) AM_RANGE(0xfff00e, 0xfff00f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) AM_RANGE(0xfff00c, 0xfff00d) AM_WRITE(f1gpb_misc_w) AM_RANGE(0xfff010, 0xfff011) AM_WRITENOP - AM_RANGE(0xfff020, 0xfff023) AM_RAM //? + AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3") AM_RANGE(0xfff800, 0xfff809) AM_RAM AM_SHARE("rozregs") ADDRESS_MAP_END @@ -389,7 +392,7 @@ MACHINE_RESET_MEMBER(f1gp_state,f1gp) m_scroll[1] = 0; } -static MACHINE_CONFIG_START( f1gp, f1gp_state ) +static MACHINE_CONFIG_START( f1gp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,XTAL_20MHz/2) /* verified on pcb */ @@ -421,6 +424,8 @@ static MACHINE_CONFIG_START( f1gp, f1gp_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, f1gp_old_tile_callback ) MCFG_VSYSTEM_SPR2_SET_GFXREGION(1) @@ -453,7 +458,7 @@ static MACHINE_CONFIG_START( f1gp, f1gp_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( f1gpb, f1gp_state ) +static MACHINE_CONFIG_START( f1gpb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,10000000) /* 10 MHz ??? */ @@ -482,12 +487,14 @@ static MACHINE_CONFIG_START( f1gpb, f1gp_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VIDEO_START_OVERRIDE(f1gp_state,f1gpb) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END @@ -505,6 +512,7 @@ static MACHINE_CONFIG_DERIVED( f1gp2, f1gp ) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(f1gp_state, screen_update_f1gp2) + MCFG_DEVICE_REMOVE("gga") MCFG_DEVICE_REMOVE("vsystem_spr_old") MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0) MCFG_VSYSTEM_SPR_SET_TILE_INDIRECT( f1gp_state, f1gp2_tile_callback ) @@ -664,7 +672,7 @@ ROM_START( f1gp2 ) ROM_END -GAME( 1991, f1gp, 0, f1gp, f1gp, driver_device, 0, ROT90, "Video System Co.", "F-1 Grand Prix", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, f1gpb, f1gp, f1gpb, f1gp, driver_device, 0, ROT90, "bootleg (Playmark)", "F-1 Grand Prix (Playmark bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // PCB marked 'Super Formula II', manufactured by Playmark. +GAME( 1991, f1gp, 0, f1gp, f1gp, f1gp_state, 0, ROT90, "Video System Co.", "F-1 Grand Prix", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, f1gpb, f1gp, f1gpb, f1gp, f1gp_state, 0, ROT90, "bootleg (Playmark)", "F-1 Grand Prix (Playmark bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // PCB marked 'Super Formula II', manufactured by Playmark. -GAME( 1992, f1gp2, 0, f1gp2, f1gp2, driver_device, 0, ROT90, "Video System Co.", "F-1 Grand Prix Part II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, f1gp2, 0, f1gp2, f1gp2, f1gp_state, 0, ROT90, "Video System Co.", "F-1 Grand Prix Part II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/famibox.cpp b/src/mame/drivers/famibox.cpp index 31ba4eca55d..8df471a3a9f 100644 --- a/src/mame/drivers/famibox.cpp +++ b/src/mame/drivers/famibox.cpp @@ -544,9 +544,9 @@ void famibox_state::machine_start() m_coins = 0; } -static MACHINE_CONFIG_START( famibox, famibox_state ) +static MACHINE_CONFIG_START( famibox ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", N2A03, N2A03_DEFAULTCLOCK) + MCFG_CPU_ADD("maincpu", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(famibox_map) /* video hardware */ @@ -607,4 +607,4 @@ ROM_START(famibox) ROM_END -GAME( 1986, famibox, 0, famibox, famibox, driver_device, 0, ROT0, "Nintendo", "FamicomBox", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) +GAME( 1986, famibox, 0, famibox, famibox, famibox_state, 0, ROT0, "Nintendo", "FamicomBox", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/fantland.cpp b/src/mame/drivers/fantland.cpp index bb0ceb9c5c3..e2d7ab1a668 100644 --- a/src/mame/drivers/fantland.cpp +++ b/src/mame/drivers/fantland.cpp @@ -839,7 +839,7 @@ INTERRUPT_GEN_MEMBER(fantland_state::fantland_sound_irq) device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x80 / 4); } -static MACHINE_CONFIG_START( fantland, fantland_state ) +static MACHINE_CONFIG_START( fantland ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 8000000) // ? @@ -890,7 +890,7 @@ WRITE_LINE_MEMBER(fantland_state::galaxygn_sound_irq) m_audiocpu->set_input_line_and_vector(0, state ? ASSERT_LINE : CLEAR_LINE, 0x80/4); } -static MACHINE_CONFIG_START( galaxygn, fantland_state ) +static MACHINE_CONFIG_START( galaxygn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, 8000000) // ? @@ -972,7 +972,7 @@ MACHINE_RESET_MEMBER(fantland_state,borntofi) borntofi_adpcm_stop(m_msm4, 3); } -static MACHINE_CONFIG_START( borntofi, fantland_state ) +static MACHINE_CONFIG_START( borntofi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V20, 16000000/2) // D701080C-8 - NEC D70108C-8 V20 CPU, running at 8.000MHz [16/2] @@ -1006,27 +1006,27 @@ static MACHINE_CONFIG_START( borntofi, fantland_state ) // OKI M5205 running at 384kHz [18.432/48]. Sample rate = 384000 / 48 MCFG_SOUND_ADD("msm1", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(fantland_state, borntofi_adpcm_int_0)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MCFG_SOUND_ADD("msm2", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(fantland_state, borntofi_adpcm_int_1)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MCFG_SOUND_ADD("msm3", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(fantland_state, borntofi_adpcm_int_2)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MCFG_SOUND_ADD("msm4", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(fantland_state, borntofi_adpcm_int_3)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wheelrun, fantland_state ) +static MACHINE_CONFIG_START( wheelrun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V20, XTAL_18MHz/2) // D701080C-8 (V20) @@ -1416,8 +1416,8 @@ ROM_START( wheelrun ) ROM_END -GAME( 19??, borntofi, 0, borntofi, borntofi, driver_device, 0, ROT0, "International Games", "Born To Fight", MACHINE_SUPPORTS_SAVE ) -GAME( 19??, fantland, 0, fantland, fantland, driver_device, 0, ROT0, "Electronic Devices Italy", "Fantasy Land (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 19??, fantlanda, fantland, fantland, fantland, driver_device, 0, ROT0, "Electronic Devices Italy", "Fantasy Land (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 19??, wheelrun, 0, wheelrun, wheelrun, driver_device, 0, ROT0, "International Games", "Wheels Runner", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, galaxygn, 0, galaxygn, galaxygn, driver_device, 0, ROT90, "Electronic Devices Italy", "Galaxy Gunners", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 19??, borntofi, 0, borntofi, borntofi, fantland_state, 0, ROT0, "International Games", "Born To Fight", MACHINE_SUPPORTS_SAVE ) +GAME( 19??, fantland, 0, fantland, fantland, fantland_state, 0, ROT0, "Electronic Devices Italy", "Fantasy Land (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 19??, fantlanda, fantland, fantland, fantland, fantland_state, 0, ROT0, "Electronic Devices Italy", "Fantasy Land (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 19??, wheelrun, 0, wheelrun, wheelrun, fantland_state, 0, ROT0, "International Games", "Wheels Runner", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, galaxygn, 0, galaxygn, galaxygn, fantland_state, 0, ROT90, "Electronic Devices Italy", "Galaxy Gunners", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fanucs15.cpp b/src/mame/drivers/fanucs15.cpp index c9cb662a2f4..ea3cac1c0e1 100644 --- a/src/mame/drivers/fanucs15.cpp +++ b/src/mame/drivers/fanucs15.cpp @@ -359,7 +359,7 @@ void fanucs15_state::machine_reset() { } -static MACHINE_CONFIG_START( fanucs15, fanucs15_state ) +static MACHINE_CONFIG_START( fanucs15 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68020, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(maincpu_mem) @@ -419,5 +419,5 @@ ROM_START( fanucs15 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1990, fanucs15, 0, 0, fanucs15, fanucs15, driver_device, 0, "Fanuc", "System 15", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1990, fanucs15, 0, 0, fanucs15, fanucs15, fanucs15_state, 0, "Fanuc", "System 15", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp index 14b47870293..7e2366bb5d6 100644 --- a/src/mame/drivers/fanucspmg.cpp +++ b/src/mame/drivers/fanucspmg.cpp @@ -954,7 +954,7 @@ FLOPPY_FORMATS_MEMBER( fanucspmg_state::floppy_formats ) FLOPPY_IMD_FORMAT FLOPPY_FORMATS_END -static MACHINE_CONFIG_START( fanucspmg, fanucspmg_state ) +static MACHINE_CONFIG_START( fanucspmg ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, I8086, XTAL_15MHz/3) MCFG_CPU_PROGRAM_MAP(maincpu_mem) @@ -1042,6 +1042,6 @@ ROM_START( fanucspgm ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, fanucspg, 0, 0, fanucspmg, fanucspmg, fanucspmg_state, fanucspmg, "Fanuc", "System P Model G", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1983, fanucspgm, fanucspg, 0, fanucspmgm, fanucspmg, fanucspmg_state, fanucspmg, "Fanuc", "System P Model G (monochrome)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1983, fanucspg, 0, 0, fanucspmg, fanucspmg, fanucspmg_state, fanucspmg, "Fanuc", "System P Model G", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1983, fanucspgm, fanucspg, 0, fanucspmgm, fanucspmg, fanucspmg_state, fanucspmg, "Fanuc", "System P Model G (monochrome)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/fastfred.cpp b/src/mame/drivers/fastfred.cpp index 580e8cd5e07..07b2bf5e9ca 100644 --- a/src/mame/drivers/fastfred.cpp +++ b/src/mame/drivers/fastfred.cpp @@ -648,7 +648,7 @@ INTERRUPT_GEN_MEMBER(fastfred_state::sound_timer_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( fastfred, fastfred_state ) +static MACHINE_CONFIG_START( fastfred ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12_432MHz/4) /* 3.108 MHz; xtal from pcb pics, divider not verified */ @@ -1060,13 +1060,13 @@ DRIVER_INIT_MEMBER(fastfred_state,imago) m_hardware_type = 3; } -GAME( 1982, flyboy, 0, fastfred, flyboy, fastfred_state, flyboy, ROT90, "Kaneko", "Fly-Boy", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, flyboyb, flyboy, fastfred, flyboy, fastfred_state, flyboyb, ROT90, "bootleg", "Fly-Boy (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, flyboy, 0, fastfred, flyboy, fastfred_state, flyboy, ROT90, "Kaneko", "Fly-Boy", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, flyboyb, flyboy, fastfred, flyboy, fastfred_state, flyboyb, ROT90, "bootleg", "Fly-Boy (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, fastfred, flyboy, fastfred, fastfred, fastfred_state, fastfred, ROT90, "Kaneko (Atari license)", "Fast Freddie", MACHINE_SUPPORTS_SAVE ) GAME( 1983, jumpcoas, 0, jumpcoas, jumpcoas, fastfred_state, jumpcoas, ROT90, "Kaneko", "Jump Coaster", MACHINE_SUPPORTS_SAVE ) GAME( 1983, jumpcoast,jumpcoas, jumpcoas, jumpcoas, fastfred_state, jumpcoas, ROT90, "Kaneko (Taito license)", "Jump Coaster (Taito)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, boggy84, 0, jumpcoas, boggy84, fastfred_state, boggy84, ROT90, "Kaneko", "Boggy '84", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, boggy84b, boggy84, jumpcoas, boggy84, fastfred_state, boggy84b, ROT90, "bootleg (Eddie's Games)", "Boggy '84 (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, boggy84, 0, jumpcoas, boggy84, fastfred_state, boggy84, ROT90, "Kaneko", "Boggy '84", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, boggy84b, boggy84, jumpcoas, boggy84, fastfred_state, boggy84b, ROT90, "bootleg (Eddie's Games)", "Boggy '84 (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, redrobin, 0, fastfred, redrobin, fastfred_state, flyboyb, ROT90, "Elettronolo", "Red Robin", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, imago, 0, imago, imago, fastfred_state, imago, ROT90, "Acom", "Imago (cocktail set)", 0 ) -GAME( 1983, imagoa, imago, imago, imagoa, fastfred_state, imago, ROT90, "Acom", "Imago (no cocktail set)", 0 ) +GAME( 1984, imago, 0, imago, imago, fastfred_state, imago, ROT90, "Acom", "Imago (cocktail set)", 0 ) +GAME( 1983, imagoa, imago, imago, imagoa, fastfred_state, imago, ROT90, "Acom", "Imago (no cocktail set)", 0 ) diff --git a/src/mame/drivers/fastinvaders.cpp b/src/mame/drivers/fastinvaders.cpp index b08b0deaebe..76c9fc8770b 100644 --- a/src/mame/drivers/fastinvaders.cpp +++ b/src/mame/drivers/fastinvaders.cpp @@ -630,7 +630,7 @@ static GFXDECODE_START( fastinvaders ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( fastinvaders, fastinvaders_state ) +static MACHINE_CONFIG_START( fastinvaders ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, 6144100/2 ) // 6144100 Xtal /2 internaly @@ -777,6 +777,6 @@ ROM_START( fi6845 ) ROM_LOAD( "93427.bin", 0x0000, 0x0100, CRC(f59c8573) SHA1(5aed4866abe1690fd0f088af1cfd99b3c85afe9a) ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS*/ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 1979, fi6845, 0, fastinvaders_6845, fastinvaders, fastinvaders_state, fi6845, ROT270, "Fiberglass", "Fast Invaders (6845 version)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1979, fi8275, fi6845, fastinvaders_8275, fastinvaders, fastinvaders_state,fi6845, ROT270, "Fiberglass", "Fast Invaders (8275 version)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1979, fi8275, fi6845, fastinvaders_8275, fastinvaders, fastinvaders_state, fi6845, ROT270, "Fiberglass", "Fast Invaders (8275 version)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/fastlane.cpp b/src/mame/drivers/fastlane.cpp index f65fcd5f1ad..89ab60e33ee 100644 --- a/src/mame/drivers/fastlane.cpp +++ b/src/mame/drivers/fastlane.cpp @@ -199,7 +199,7 @@ void fastlane_state::machine_start() membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x4000); } -static MACHINE_CONFIG_START( fastlane, fastlane_state ) +static MACHINE_CONFIG_START( fastlane ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, XTAL_24MHz/2) // 3MHz(XTAL_24MHz/8) internally @@ -267,4 +267,4 @@ ROM_START( fastlane ) ROM_END -GAME( 1987, fastlane, 0, fastlane, fastlane, driver_device, 0, ROT90, "Konami", "Fast Lane", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, fastlane, 0, fastlane, fastlane, fastlane_state, 0, ROT90, "Konami", "Fast Lane", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fb01.cpp b/src/mame/drivers/fb01.cpp index e712ac0f546..a9545ac87a9 100644 --- a/src/mame/drivers/fb01.cpp +++ b/src/mame/drivers/fb01.cpp @@ -172,7 +172,7 @@ PALETTE_INIT_MEMBER(fb01_state, fb01) } -static MACHINE_CONFIG_START( fb01, fb01_state ) +static MACHINE_CONFIG_START( fb01 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) MCFG_CPU_PROGRAM_MAP(fb01_mem) @@ -231,5 +231,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1986, fb01, 0, 0, fb01, fb01, driver_device, 0, "Yamaha", "FB-01", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1986, fb01, 0, 0, fb01, fb01, fb01_state, 0, "Yamaha", "FB-01", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fc100.cpp b/src/mame/drivers/fc100.cpp index 5f4d8deedfa..6ef23b9fe4c 100644 --- a/src/mame/drivers/fc100.cpp +++ b/src/mame/drivers/fc100.cpp @@ -512,7 +512,7 @@ DRIVER_INIT_MEMBER( fc100_state, fc100 ) membank("bankr")->configure_entry(1, &ram[0]); } -static MACHINE_CONFIG_START( fc100, fc100_state ) +static MACHINE_CONFIG_START( fc100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_7_15909MHz/2) MCFG_CPU_PROGRAM_MAP(fc100_mem) @@ -522,7 +522,7 @@ static MACHINE_CONFIG_START( fc100, fc100_state ) MCFG_DEVICE_ADD("vdg", M5C6847P1, XTAL_7_15909MHz/3) // Clock not verified MCFG_MC6847_INPUT_CALLBACK(READ8(fc100_state, mc6847_videoram_r)) MCFG_MC6847_CHARROM_CALLBACK(fc100_state, get_char_rom) - MCFG_MC6847_FIXED_MODE(MC6847_MODE_INTEXT) + MCFG_MC6847_FIXED_MODE(m5c6847p1_device::MODE_INTEXT) // other lines not connected MCFG_SCREEN_MC6847_NTSC_ADD("screen", "vdg") @@ -577,5 +577,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -CONS( 1982, fc100, 0, 0, fc100, fc100, fc100_state, fc100, "Goldstar", "FC-100", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS( 1982, fc100, 0, 0, fc100, fc100, fc100_state, fc100, "Goldstar", "FC-100", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/fccpu20.cpp b/src/mame/drivers/fccpu20.cpp index 1e5aa35b4f1..15c5bb2f918 100644 --- a/src/mame/drivers/fccpu20.cpp +++ b/src/mame/drivers/fccpu20.cpp @@ -140,37 +140,37 @@ static SLOT_INTERFACE_START(cpu21yb_vme_cards) SLOT_INTERFACE_END /* Machine configurations */ -MACHINE_CONFIG_START (cpu20, cpu20_state) +MACHINE_CONFIG_START (cpu20) MCFG_VME_DEVICE_ADD("vme") MCFG_VME_SLOT_ADD ("vme", 1, cpu20_vme_cards, "fccpu20") MACHINE_CONFIG_END -MACHINE_CONFIG_START (cpu21s, cpu20_state) +MACHINE_CONFIG_START (cpu21s) MCFG_VME_DEVICE_ADD("vme") MCFG_VME_SLOT_ADD ("vme", 1, cpu21s_vme_cards, "fccpu21s") MACHINE_CONFIG_END -MACHINE_CONFIG_START (cpu21, cpu20_state) +MACHINE_CONFIG_START (cpu21) MCFG_VME_DEVICE_ADD("vme") MCFG_VME_SLOT_ADD ("vme", 1, cpu21_vme_cards, "fccpu21") MACHINE_CONFIG_END -MACHINE_CONFIG_START (cpu21a, cpu20_state) +MACHINE_CONFIG_START (cpu21a) MCFG_VME_DEVICE_ADD("vme") MCFG_VME_SLOT_ADD ("vme", 1, cpu21a_vme_cards, "fccpu21a") MACHINE_CONFIG_END -MACHINE_CONFIG_START (cpu21ya, cpu20_state) +MACHINE_CONFIG_START (cpu21ya) MCFG_VME_DEVICE_ADD("vme") MCFG_VME_SLOT_ADD ("vme", 1, cpu21ya_vme_cards, "fccpu21ya") MACHINE_CONFIG_END -MACHINE_CONFIG_START (cpu21b, cpu20_state) +MACHINE_CONFIG_START (cpu21b) MCFG_VME_DEVICE_ADD("vme") MCFG_VME_SLOT_ADD ("vme", 1, cpu21b_vme_cards, "fccpu21b") MACHINE_CONFIG_END -MACHINE_CONFIG_START (cpu21yb, cpu20_state) +MACHINE_CONFIG_START (cpu21yb) MCFG_VME_DEVICE_ADD("vme") MCFG_VME_SLOT_ADD ("vme", 1, cpu21yb_vme_cards, "fccpu21yb") MACHINE_CONFIG_END @@ -188,10 +188,10 @@ ROM_START(fccpu20sbc) ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP (1986, fccpu20sbc, 0, 0, cpu20, cpu20, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-20", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1986, fccpu21ssbc, fccpu20sbc, 0, cpu21s, cpu20, cpu20_state, cpu21s, "Force Computers Gmbh", "SYS68K/CPU-21S", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1986, fccpu21sbc, fccpu20sbc, 0, cpu21, cpu20, cpu20_state, cpu21, "Force Computers Gmbh", "SYS68K/CPU-21", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1986, fccpu21asbc, fccpu20sbc, 0, cpu21a, cpu20, cpu20_state, cpu21a, "Force Computers Gmbh", "SYS68K/CPU-21A", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1986, fccpu21yasbc, fccpu20sbc, 0, cpu21ya, cpu20, cpu20_state, cpu21ya, "Force Computers Gmbh", "SYS68K/CPU-21YA", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1986, fccpu21bsbc, fccpu20sbc, 0, cpu21b, cpu20, cpu20_state, cpu21b, "Force Computers Gmbh", "SYS68K/CPU-21B", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1986, fccpu21ybsbc, fccpu20sbc, 0, cpu21yb, cpu20, cpu20_state, cpu21yb, "Force Computers Gmbh", "SYS68K/CPU-21YB", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1986, fccpu20sbc, 0, 0, cpu20, cpu20, cpu20_state, 0, "Force Computers GmbH", "SYS68K/CPU-20", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1986, fccpu21ssbc, fccpu20sbc, 0, cpu21s, cpu20, cpu20_state, cpu21s, "Force Computers GmbH", "SYS68K/CPU-21S", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1986, fccpu21sbc, fccpu20sbc, 0, cpu21, cpu20, cpu20_state, cpu21, "Force Computers GmbH", "SYS68K/CPU-21", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1986, fccpu21asbc, fccpu20sbc, 0, cpu21a, cpu20, cpu20_state, cpu21a, "Force Computers GmbH", "SYS68K/CPU-21A", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1986, fccpu21yasbc, fccpu20sbc, 0, cpu21ya, cpu20, cpu20_state, cpu21ya, "Force Computers GmbH", "SYS68K/CPU-21YA", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1986, fccpu21bsbc, fccpu20sbc, 0, cpu21b, cpu20, cpu20_state, cpu21b, "Force Computers GmbH", "SYS68K/CPU-21B", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1986, fccpu21ybsbc, fccpu20sbc, 0, cpu21yb, cpu20, cpu20_state, cpu21yb, "Force Computers GmbH", "SYS68K/CPU-21YB", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) diff --git a/src/mame/drivers/fccpu30.cpp b/src/mame/drivers/fccpu30.cpp index 8f9138af502..abd99b262c0 100644 --- a/src/mame/drivers/fccpu30.cpp +++ b/src/mame/drivers/fccpu30.cpp @@ -643,7 +643,7 @@ SLOT_INTERFACE_END /* * Machine configuration */ -static MACHINE_CONFIG_START (cpu30, cpu30_state) +static MACHINE_CONFIG_START (cpu30) /* basic machine hardware */ MCFG_CPU_ADD ("maincpu", M68030, XTAL_25MHz) MCFG_CPU_PROGRAM_MAP (cpu30_mem) @@ -883,7 +883,7 @@ ROM_END /* * System ROM information * - * FGA-002 Bootprom version 3.1 is released May 28, 1990, coprighted by FORCE Computers Gmbh + * FGA-002 Bootprom version 3.1 is released May 28, 1990, coprighted by FORCE Computers GmbH * * Bootprom PIT setup sequence - To start VMEPROM, the rotary switches must both be set to 'F' (PI/T #1 port A) * -------------------------------------------------------------------------------------------------------------- @@ -1021,30 +1021,30 @@ void fga002_device::check_interrupts()() */ /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP (1988, fccpu30, 0, 0, cpu30, cpu30, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1988, fccpu30x, fccpu30, 0, cpu30x, cpu30, cpu30_state, cpu30x, "Force Computers Gmbh", "SYS68K/CPU-30X", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1988, fccpu30xa, fccpu30, 0, cpu30xa, cpu30, cpu30_state, cpu30xa, "Force Computers Gmbh", "SYS68K/CPU-30XA", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1988, fccpu30za, fccpu30, 0, cpu30za, cpu30, cpu30_state, cpu30za, "Force Computers Gmbh", "SYS68K/CPU-30ZA", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1996, fccpu30zbe, fccpu30, 0, cpu30zbe, cpu30, cpu30_state, cpu30zbe, "Force Computers Gmbh", "SYS68K/CPU-30ZBE", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1996, fccpu30be8, fccpu30, 0, cpu30be8, cpu30, cpu30_state, cpu30be8, "Force Computers Gmbh", "SYS68K/CPU-30BE/8", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1996, fccpu30be16, fccpu30, 0, cpu30be16, cpu30, cpu30_state, cpu30be16, "Force Computers Gmbh", "SYS68K/CPU-30BE/16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1996, fccpu30lite4, fccpu30, 0, cpu30lite4, cpu30, cpu30_state, cpu30lite4, "Force Computers Gmbh", "SYS68K/CPU-30Lite/4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (1996, fccpu30lite8, fccpu30, 0, cpu30lite8, cpu30, cpu30_state, cpu30lite8, "Force Computers Gmbh", "SYS68K/CPU-30Lite/8", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -COMP (199?, fccpu33, fccpu30, 0, cpu33, cpu30, cpu30_state, cpu33, "Force Computers Gmbh", "SYS68K/CPU-33", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP (1988, fccpu30, 0, 0, cpu30, cpu30, cpu30_state, 0, "Force Computers GmbH", "SYS68K/CPU-30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1988, fccpu30x, fccpu30, 0, cpu30x, cpu30, cpu30_state, cpu30x, "Force Computers GmbH", "SYS68K/CPU-30X", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1988, fccpu30xa, fccpu30, 0, cpu30xa, cpu30, cpu30_state, cpu30xa, "Force Computers GmbH", "SYS68K/CPU-30XA", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1988, fccpu30za, fccpu30, 0, cpu30za, cpu30, cpu30_state, cpu30za, "Force Computers GmbH", "SYS68K/CPU-30ZA", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1996, fccpu30zbe, fccpu30, 0, cpu30zbe, cpu30, cpu30_state, cpu30zbe, "Force Computers GmbH", "SYS68K/CPU-30ZBE", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1996, fccpu30be8, fccpu30, 0, cpu30be8, cpu30, cpu30_state, cpu30be8, "Force Computers GmbH", "SYS68K/CPU-30BE/8", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1996, fccpu30be16, fccpu30, 0, cpu30be16, cpu30, cpu30_state, cpu30be16, "Force Computers GmbH", "SYS68K/CPU-30BE/16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1996, fccpu30lite4, fccpu30, 0, cpu30lite4, cpu30, cpu30_state, cpu30lite4, "Force Computers GmbH", "SYS68K/CPU-30Lite/4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1996, fccpu30lite8, fccpu30, 0, cpu30lite8, cpu30, cpu30_state, cpu30lite8, "Force Computers GmbH", "SYS68K/CPU-30Lite/8", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (199?, fccpu33, fccpu30, 0, cpu33, cpu30, cpu30_state, cpu33, "Force Computers GmbH", "SYS68K/CPU-33", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) /* Below are not fully configured variants defaulting to generic cpu30 */ /* The following boards were manufactured for Ericsson to be used in their fixed network switches. They support hot swap and the Ericsson APNbus */ /* SYS68K/CPU-30SEN-R/32 assumed as generic until spec is found. 25 MHz 68030 based CPU board with DMAC, 32 MByte Shared RAM capacity and VMEPROM. 4 MByte System Flash memory, SCSI via on-board EAGLE Controller FC68165 with DMA, 2 serial I/O ports, APNbus interface, VMEPROM firmware */ -COMP (1997, fccpu30senr, 0, 0, cpu30, cpu30, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-30SEN-R", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1997, fccpu30senr, 0, 0, cpu30, cpu30, cpu30_state, 0, "Force Computers GmbH", "SYS68K/CPU-30SEN-R", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) /* SYS68K/CPU-30SEN-R-501/4 assumed as generic until spec is found. 25 MHz 68030 based CPU board with DMAC, 4 MByte Shared RAM capacity and VMEPROM. 48V DC/DC onboard, metric backplane connectors, BYB501 PCB formfactor (TVJ807). 4 MByte System Flash memory, SCSI via onboard EAGLEController FC68165 with DMA, 2 serial I/O ports, APNbus interface, VMEPROM firmware*/ -COMP (1997, fccpu30senr501, 0, 0, cpu30, cpu30, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-30SEN-R-501", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +COMP (1997, fccpu30senr501, 0, 0, cpu30, cpu30, cpu30_state, 0, "Force Computers GmbH", "SYS68K/CPU-30SEN-R-501", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) /*CPU-33XB MC68030 25MHz CPU, 68882 FPC, 1MB, 2 SERIAL, RS-232, VME BOARD*/ -//COMP (1990, cpu33xb, 0, 0, cpu30, cpu30, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-33XB", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +//COMP (1990, cpu33xb, 0, 0, cpu30, cpu30, cpu30_state, 0, "Force Computers GmbH", "SYS68K/CPU-33XB", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) /*CPU-33B/4 MC68030 25MHz CPU, 68882 FPC, 1MB, 2 SERIAL, RS-232, VME BOARD*/ -//COMP (1990, cpu30b4, 0, 0, cpu30, cpu30, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-33B/4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +//COMP (1990, cpu30b4, 0, 0, cpu30, cpu30, cpu30_state, 0, "Force Computers GmbH", "SYS68K/CPU-33B/4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) diff --git a/src/mame/drivers/fcombat.cpp b/src/mame/drivers/fcombat.cpp index d0b76df12cd..c39e71b8380 100644 --- a/src/mame/drivers/fcombat.cpp +++ b/src/mame/drivers/fcombat.cpp @@ -286,7 +286,7 @@ void fcombat_state::machine_reset() m_ty = 0; } -static MACHINE_CONFIG_START( fcombat, fcombat_state ) +static MACHINE_CONFIG_START( fcombat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 10000000/3) diff --git a/src/mame/drivers/fcrash.cpp b/src/mame/drivers/fcrash.cpp index 123c060e418..9b6b1545431 100644 --- a/src/mame/drivers/fcrash.cpp +++ b/src/mame/drivers/fcrash.cpp @@ -1559,7 +1559,7 @@ MACHINE_RESET_MEMBER(cps_state,fcrash) m_sample_select2 = 0; } -static MACHINE_CONFIG_START( fcrash, cps_state ) +static MACHINE_CONFIG_START( fcrash ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -1579,7 +1579,7 @@ static MACHINE_CONFIG_START( fcrash, cps_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -1606,12 +1606,12 @@ static MACHINE_CONFIG_START( fcrash, cps_state ) MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int1)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int2)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END @@ -1623,7 +1623,7 @@ static MACHINE_CONFIG_DERIVED( cawingbl, fcrash ) MCFG_MACHINE_START_OVERRIDE(cps_state, cawingbl) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kodb, cps_state ) +static MACHINE_CONFIG_START( kodb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -1642,7 +1642,7 @@ static MACHINE_CONFIG_START( kodb, cps_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -1661,11 +1661,11 @@ static MACHINE_CONFIG_START( kodb, cps_state ) MCFG_SOUND_ROUTE(1, "mono", 0.35) /* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */ - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80 + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80 MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sf2mdt, cps_state ) +static MACHINE_CONFIG_START( sf2mdt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -1685,7 +1685,7 @@ static MACHINE_CONFIG_START( sf2mdt, cps_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -1705,12 +1705,12 @@ static MACHINE_CONFIG_START( sf2mdt, cps_state ) /* has 2x MSM5205 instead of OKI6295 */ MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int1)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int2)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END @@ -1719,7 +1719,7 @@ static MACHINE_CONFIG_DERIVED( sf2b, sf2mdt) MCFG_CPU_PROGRAM_MAP(sf2b_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( knightsb, cps_state ) +static MACHINE_CONFIG_START( knightsb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24000000 / 2) @@ -1738,7 +1738,7 @@ static MACHINE_CONFIG_START( knightsb, cps_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -1759,12 +1759,12 @@ static MACHINE_CONFIG_START( knightsb, cps_state ) /* has 2x MSM5205 instead of OKI6295 */ MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int1)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int2)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END @@ -2101,7 +2101,7 @@ MACHINE_START_MEMBER(cps_state, dinopic) m_sprite_x_offset = 0; } -static MACHINE_CONFIG_START( dinopic, cps_state ) +static MACHINE_CONFIG_START( dinopic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -2122,7 +2122,7 @@ static MACHINE_CONFIG_START( dinopic, cps_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -2135,7 +2135,7 @@ static MACHINE_CONFIG_START( dinopic, cps_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -2261,7 +2261,7 @@ DRIVER_INIT_MEMBER(cps_state, dinopic) // sound cpu is (239 V 249521 VC5006 KABUKI DL-030P-110V) - recycled Kabuki Z80 from genuine Capcom HW? // 3x8 dsws -static MACHINE_CONFIG_START( sgyxz, cps_state ) +static MACHINE_CONFIG_START( sgyxz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(sgyxz_map) @@ -2279,7 +2279,7 @@ static MACHINE_CONFIG_START( sgyxz, cps_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) MCFG_PALETTE_ADD("palette", 0xc00) @@ -2299,7 +2299,7 @@ static MACHINE_CONFIG_START( sgyxz, cps_state ) MCFG_SOUND_ROUTE(1, "mono", 0.35) /* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */ - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80 + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80 MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -2354,7 +2354,7 @@ MACHINE_START_MEMBER(cps_state, punipic) m_sprite_x_offset = 0; } -static MACHINE_CONFIG_START( punipic, cps_state ) +static MACHINE_CONFIG_START( punipic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -2375,7 +2375,7 @@ static MACHINE_CONFIG_START( punipic, cps_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -2388,7 +2388,7 @@ static MACHINE_CONFIG_START( punipic, cps_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -2549,7 +2549,7 @@ DRIVER_INIT_MEMBER(cps_state, punipic3) // ************************************************************************* SF2M1 -static MACHINE_CONFIG_START( sf2m1, cps_state ) +static MACHINE_CONFIG_START( sf2m1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz ) @@ -2565,7 +2565,7 @@ static MACHINE_CONFIG_START( sf2m1, cps_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -2580,7 +2580,7 @@ static MACHINE_CONFIG_START( sf2m1, cps_state ) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(0, "mono", 0.35) MCFG_SOUND_ROUTE(1, "mono", 0.35) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -2882,7 +2882,7 @@ MACHINE_START_MEMBER(cps_state, slampic) m_sprite_x_offset = 0; } -static MACHINE_CONFIG_START( slampic, cps_state ) +static MACHINE_CONFIG_START( slampic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -2903,7 +2903,7 @@ static MACHINE_CONFIG_START( slampic, cps_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -2914,7 +2914,7 @@ static MACHINE_CONFIG_START( slampic, cps_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -2983,7 +2983,7 @@ static ADDRESS_MAP_START( varthb_map, AS_PROGRAM, 16, cps_state ) AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram") ADDRESS_MAP_END -static MACHINE_CONFIG_START( varthb, cps_state ) +static MACHINE_CONFIG_START( varthb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -3002,7 +3002,7 @@ static MACHINE_CONFIG_START( varthb, cps_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1) - MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1) @@ -3021,7 +3021,7 @@ static MACHINE_CONFIG_START( varthb, cps_state ) MCFG_SOUND_ROUTE(0, "mono", 0.35) MCFG_SOUND_ROUTE(1, "mono", 0.35) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END diff --git a/src/mame/drivers/feversoc.cpp b/src/mame/drivers/feversoc.cpp index 7a343c7aae1..b7a98d826c8 100644 --- a/src/mame/drivers/feversoc.cpp +++ b/src/mame/drivers/feversoc.cpp @@ -273,7 +273,7 @@ WRITE16_MEMBER(feversoc_state::feversoc_irq_ack) m_maincpu->set_input_line(8, CLEAR_LINE); } -static MACHINE_CONFIG_START( feversoc, feversoc_state ) +static MACHINE_CONFIG_START( feversoc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",SH2,MASTER_CLOCK) @@ -296,7 +296,7 @@ static MACHINE_CONFIG_START( feversoc, feversoc_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", MASTER_CLOCK/16, OKIM6295_PIN7_LOW) //pin 7 & frequency not verified (clock should be 28,6363 / n) + MCFG_OKIM6295_ADD("oki", MASTER_CLOCK/16, PIN7_LOW) //pin 7 & frequency not verified (clock should be 28,6363 / n) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6) MCFG_EEPROM_SERIAL_93C56_ADD("eeprom") diff --git a/src/mame/drivers/fgoal.cpp b/src/mame/drivers/fgoal.cpp index 282dfc6746d..6545b82484b 100644 --- a/src/mame/drivers/fgoal.cpp +++ b/src/mame/drivers/fgoal.cpp @@ -364,7 +364,7 @@ void fgoal_state::machine_reset() m_prev_coin = 0; } -static MACHINE_CONFIG_START( fgoal, fgoal_state ) +static MACHINE_CONFIG_START( fgoal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 10065000 / 10) /* ? */ @@ -437,5 +437,5 @@ ROM_START( fgoala ) ROM_END -GAME( 1979, fgoal, 0, fgoal, fgoal, driver_device, 0, ROT90, "Taito", "Field Goal (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, fgoala, fgoal, fgoal, fgoal, driver_device, 0, ROT90, "Taito", "Field Goal (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, fgoal, 0, fgoal, fgoal, fgoal_state, 0, ROT90, "Taito", "Field Goal (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, fgoala, fgoal, fgoal, fgoal, fgoal_state, 0, ROT90, "Taito", "Field Goal (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp index 8153c2a43ce..652a19e0bd6 100644 --- a/src/mame/drivers/fidel6502.cpp +++ b/src/mame/drivers/fidel6502.cpp @@ -1,6 +1,6 @@ // license:BSD-3-Clause // copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco,hap -// thanks-to:Berger,yovan +// thanks-to:Berger,yoyo_chessboard /****************************************************************************** Fidelity Electronics 6502 based board driver @@ -493,13 +493,14 @@ public: DECLARE_WRITE8_MEMBER(fdesdis_lcd_w); DECLARE_READ8_MEMBER(fdesdis_input_r); DECLARE_DRIVER_INIT(fdesdis); - + // Phantom DECLARE_MACHINE_RESET(fphantom); DECLARE_DRIVER_INIT(fphantom); // Chesster DECLARE_WRITE8_MEMBER(chesster_control_w); + DECLARE_WRITE8_MEMBER(kishon_control_w); DECLARE_DRIVER_INIT(chesster); }; @@ -1004,9 +1005,17 @@ WRITE8_MEMBER(fidel6502_state::chesster_control_w) membank("bank1")->set_entry((m_led_select >> 2 & 3) | (m_speech_bank >> 1 & 4)); } +WRITE8_MEMBER(fidel6502_state::kishon_control_w) +{ + chesster_control_w(space, offset, data); + + // 2 more bankswitch bits: 74259(2) Q2 to A17, Q0 to A18 + membank("bank1")->set_entry((m_led_select >> 2 & 3) | (m_speech_bank >> 1 & 4) | (m_speech_bank << 1 & 8) | (m_speech_bank << 4 & 0x10)); +} + DRIVER_INIT_MEMBER(fidel6502_state, chesster) { - membank("bank1")->configure_entries(0, 8, memregion("user1")->base(), 0x4000); + membank("bank1")->configure_entries(0, memregion("user1")->bytes() / 0x4000, memregion("user1")->base(), 0x4000); } @@ -1149,179 +1158,19 @@ static ADDRESS_MAP_START( chesster_map, AS_PROGRAM, 8, fidel6502_state ) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END +static ADDRESS_MAP_START( kishon_map, AS_PROGRAM, 8, fidel6502_state ) + AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x1ff8) AM_READWRITE(fdesdis_input_r, kishon_control_w) + AM_IMPORT_FROM( chesster_map ) +ADDRESS_MAP_END + /****************************************************************************** Input Ports ******************************************************************************/ -static INPUT_PORTS_START( cb_buttons ) - PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.4") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.5") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.6") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.7") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") -INPUT_PORTS_END - -static INPUT_PORTS_START( cb_magnets ) - PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.4") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.5") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.6") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.7") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") -INPUT_PORTS_END - - static INPUT_PORTS_START( rsc ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( fidel_cb_buttons ) PORT_START("IN.8") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("ST") @@ -1336,7 +1185,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( csc ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( fidel_cb_buttons ) PORT_MODIFY("IN.0") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker") @@ -1408,7 +1257,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( eas ) - PORT_INCLUDE( cb_magnets ) + PORT_INCLUDE( fidel_cb_magnets ) PORT_MODIFY("IN.0") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("DM") @@ -1449,7 +1298,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( eag ) - PORT_INCLUDE( cb_magnets ) + PORT_INCLUDE( fidel_cb_magnets ) PORT_MODIFY("IN.0") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL") @@ -1502,18 +1351,18 @@ static INPUT_PORTS_START( sc12_base ) INPUT_PORTS_END static INPUT_PORTS_START( sc12 ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( fidel_cb_buttons ) PORT_INCLUDE( sc12_base ) INPUT_PORTS_END static INPUT_PORTS_START( playmatic ) - PORT_INCLUDE( cb_magnets ) + PORT_INCLUDE( fidel_cb_magnets ) PORT_INCLUDE( sc12_base ) INPUT_PORTS_END static INPUT_PORTS_START( fexcelb ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( fidel_cb_buttons ) PORT_START("IN.8") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear") @@ -1557,7 +1406,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( fdesdis ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( fidel_cb_buttons ) PORT_START("IN.8") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear") @@ -1582,7 +1431,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( fphantom ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( fidel_cb_buttons ) INPUT_PORTS_END @@ -1591,7 +1440,7 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( rsc, fidel6502_state ) +static MACHINE_CONFIG_START( rsc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1800000) // measured approx 1.81MHz @@ -1619,10 +1468,10 @@ static MACHINE_CONFIG_START( rsc, fidel6502_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( csc, fidel6502_state ) +static MACHINE_CONFIG_START( csc ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M6502, 3900000/2) // from 3.9MHz resonator + MCFG_CPU_ADD("maincpu", M6502, XTAL_3_9MHz/2) // from 3.9MHz resonator MCFG_CPU_PROGRAM_MAP(csc_map) MCFG_CPU_PERIODIC_INT_DRIVER(fidel6502_state, irq0_line_hold, 600) // 38400kHz/64 @@ -1664,7 +1513,7 @@ static MACHINE_CONFIG_DERIVED( su9, csc ) MCFG_DEFAULT_LAYOUT(layout_fidel_su9) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( eas, fidel6502_state ) +static MACHINE_CONFIG_START( eas ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R65C02, XTAL_3MHz) @@ -1708,7 +1557,7 @@ static MACHINE_CONFIG_DERIVED( eag, eas ) MCFG_DEFAULT_LAYOUT(layout_fidel_eag) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sc9, fidel6502_state ) +static MACHINE_CONFIG_START( sc9 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1400000) // from ceramic resonator "681 JSA", measured @@ -1736,7 +1585,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( sc9b, sc9 ) /* basic machine hardware */ - MCFG_CPU_REPLACE("maincpu", M6502, 2000000) // approximation + MCFG_CPU_REPLACE("maincpu", M6502, XTAL_3_9MHz/2) // R6502AP, 3.9MHz resonator MCFG_CPU_PROGRAM_MAP(sc9b_map) MACHINE_CONFIG_END @@ -1749,7 +1598,7 @@ static MACHINE_CONFIG_DERIVED( playmatic, sc9 ) MCFG_DEFAULT_LAYOUT(layout_fidel_playmatic) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sc12, fidel6502_state ) +static MACHINE_CONFIG_START( sc12 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R65C02, XTAL_4MHz) @@ -1774,7 +1623,7 @@ static MACHINE_CONFIG_START( sc12, fidel6502_state ) MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fexcel, fidel6502_state ) +static MACHINE_CONFIG_START( fexcel ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65SC02, XTAL_12MHz/4) // G65SC102P-3, 12.0M ceramic resonator @@ -1858,7 +1707,7 @@ static MACHINE_CONFIG_DERIVED( fexceld, fexcelb ) MCFG_DEFAULT_LAYOUT(layout_fidel_exd) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fdes2100d, fidel6502_state ) +static MACHINE_CONFIG_START( fdes2100d ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02, XTAL_6MHz) // W65C02P-6 @@ -1884,7 +1733,7 @@ static MACHINE_CONFIG_DERIVED( fdes2000d, fdes2100d ) MCFG_CPU_PROGRAM_MAP(fdesdis_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fphantom, fidel6502_state ) +static MACHINE_CONFIG_START( fphantom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R65C02, XTAL_4_9152MHz) // R65C02P4 @@ -1903,7 +1752,7 @@ static MACHINE_CONFIG_START( fphantom, fidel6502_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( chesster, fidel6502_state ) +static MACHINE_CONFIG_START( chesster ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R65C02, XTAL_5MHz) // RP65C02G @@ -1923,6 +1772,14 @@ static MACHINE_CONFIG_START( chesster, fidel6502_state ) MCFG_SOUND_ROUTE_EX(0, "dac8", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac8", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( kishon, chesster ) + + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_DEVICE_CLOCK(XTAL_3_579545MHz) + MCFG_CPU_PROGRAM_MAP(kishon_map) +MACHINE_CONFIG_END + /****************************************************************************** @@ -2206,14 +2063,14 @@ ROM_END ROM_START( fscc9 ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD("b30", 0xc000, 0x2000, CRC(b845c458) SHA1(d3fda65dbd9fae44fa4b93f8207839d8fa0c367a) ) // HN48364P - ROM_LOAD("b31", 0xe000, 0x2000, CRC(cbaf97d7) SHA1(7ed8e68bb74713d9e2ff1d9c037012320b7bfcbf) ) // " + ROM_LOAD("101-1034a01", 0xc000, 0x2000, CRC(b845c458) SHA1(d3fda65dbd9fae44fa4b93f8207839d8fa0c367a) ) // HN48364P + ROM_LOAD("101-1034b02", 0xe000, 0x2000, CRC(cbaf97d7) SHA1(7ed8e68bb74713d9e2ff1d9c037012320b7bfcbf) ) // " ROM_END ROM_START( fscc9b ) // this one came from an overclocked board, let's assume the roms were unmodified ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD("b30", 0xc000, 0x2000, CRC(65288753) SHA1(651f5ca5969ddd72a20cbebdec2de83c4bf10650) ) - ROM_LOAD("b31", 0xe000, 0x2000, CRC(238b092f) SHA1(7ddffc6dba822aee9d8ad6815b23024ed5cdfd26) ) + ROM_LOAD("101-1034b01", 0xc000, 0x2000, CRC(65288753) SHA1(651f5ca5969ddd72a20cbebdec2de83c4bf10650) ) + ROM_LOAD("101-1034c02", 0xe000, 0x2000, CRC(238b092f) SHA1(7ddffc6dba822aee9d8ad6815b23024ed5cdfd26) ) ROM_END ROM_START( fscc9ps ) @@ -2332,62 +2189,71 @@ ROM_START( chesstera ) // model 6120, PCB label 510.1141C01 ROM_LOAD("101-1091a02.ic10", 0x0000, 0x20000, CRC(2b4d243c) SHA1(921e51978facb502b207b4f64a73b1e74127e826) ) // AMI, 27C010 or equivalent ROM_END +ROM_START( kishon ) // model 6120G or 6127(same), PCB label 510.1141C01 + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("kishon.ic9", 0x8000, 0x8000, CRC(121c007f) SHA1(652e9ea47b6bb1632d10eb0fcd7f98cdba22fce7) ) // 27C256 + + ROM_REGION( 0x80000, "user1", 0 ) + ROM_LOAD("kishon_v2.6_1-14-91.ic10", 0x0000, 0x80000, CRC(50598869) SHA1(2087e0c2f40a2408fe217a6502c8c3a247bdd063) ) // Toshiba TC544000P-12, aka 101-1094A01 +ROM_END + /****************************************************************************** Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT, COMPANY, FULLNAME, FLAGS */ -CONS( 1981, reversic, 0, 0, rsc, rsc, driver_device, 0, "Fidelity Electronics", "Reversi Sensory Challenger (green version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) - -CONS( 1981, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1981, cscsp, csc, 0, csc, cscg, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1981, cscg, csc, 0, csc, cscg, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1981, cscfr, csc, 0, csc, cscg, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) - -CONS( 1983, super9cc, 0, 0, su9, su9, driver_device, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1983, super9ccsp, super9cc, 0, su9, su9g, driver_device, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1983, super9ccg, super9cc, 0, su9, su9g, driver_device, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1983, super9ccfr, super9cc, 0, su9, su9g, driver_device, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) - -CONS( 1983, feasbu, 0, 0, eas, eas, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1983, feasbusp, feasbu, 0, eas, easg, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1983, feasbug, feasbu, 0, eas, easg, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1983, feasbufr, feasbu, 0, eas, easg, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1984, feasgla, feasbu, 0, eas, eas, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1984, feasglasp, feasbu, 0, eas, easg, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1984, feasglag, feasbu, 0, eas, easg, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1984, feasglafr, feasbu, 0, eas, easg, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) - -CONS( 1986, feag2100, 0, 0, eag, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1986, feag2100sp, feag2100, 0, eag, eagg, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1986, feag2100g, feag2100, 0, eag, eagg, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1986, feag2100fr, feag2100, 0, eag, eagg, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) - -CONS( 1982, fscc9, 0, 0, sc9, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 9", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1982, fscc9b, fscc9, 0, sc9b, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 9 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1983, fscc9ps, fscc9, 0, playmatic, playmatic, driver_device, 0, "Fidelity Electronics", "Sensory 9 Playmatic 'S'", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // Fidelity West Germany - -CONS( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) - -CONS( 1987, fexcel, 0, 0, fexcelb, fexcelb, driver_device, 0, "Fidelity Electronics", "The Excellence (model 6080B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, fexceld, fexcel, 0, fexceld, fexcelb, driver_device, 0, "Fidelity Electronics", "Excel Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1985, fexcel12, fexcel, 0, fexcel, fexcel, driver_device, 0, "Fidelity Electronics", "The Excellence (model EP12, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // 1st version of The Excellence -CONS( 1985, fexcel124, fexcel, 0, fexcel4, fexcel, driver_device, 0, "Fidelity Electronics", "The Excellence (model EP12, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1985, fexcela, fexcel, 0, fexcel, fexcel, driver_device, 0, "Fidelity Electronics", "The Excellence (model 6080)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) - -CONS( 1986, fexcelp, 0, 0, fexcelp, fexcel, driver_device, 0, "Fidelity Electronics", "The Par Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1986, fexcelpb, fexcelp, 0, fexcelp, fexcel, driver_device, 0, "Fidelity Electronics", "The Par Excellence (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1986, granits, fexcelp, 0, granits, fexcel, driver_device, 0, "hack (RCS)", "Granit 'S'", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1988, fdes2000, fexcelp, 0, fdes2000, fdes, driver_device, 0, "Fidelity Electronics", "Designer 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // Excellence series hardware -CONS( 1988, fdes2100, fexcelp, 0, fdes2100, fdes, driver_device, 0, "Fidelity Electronics", "Designer 2100", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // " - -CONS( 1988, fdes2100d, 0, 0, fdes2100d, fdesdis, fidel6502_state, fdesdis, "Fidelity Electronics", "Designer 2100 Display (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1988, fdes2000d, fdes2100d,0, fdes2000d, fdesdis, fidel6502_state, fdesdis, "Fidelity Electronics", "Designer 2000 Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) - -CONS( 1988, fphantom, 0, 0, fphantom, fphantom, fidel6502_state, fphantom, "Fidelity Electronics", "Phantom (Fidelity)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) - -CONS( 1990, chesster, 0, 0, chesster, chesster, fidel6502_state, chesster, "Fidelity Electronics", "Chesster Challenger (V1.3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, chesstera, chesster, 0, chesster, chesster, fidel6502_state, chesster, "Fidelity Electronics", "Chesster Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1981, reversic, 0, 0, rsc, rsc, fidel6502_state, 0, "Fidelity Electronics", "Reversi Sensory Challenger (green version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1981, csc, 0, 0, csc, csc, fidel6502_state, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1981, cscsp, csc, 0, csc, cscg, fidel6502_state, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1981, cscg, csc, 0, csc, cscg, fidel6502_state, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1981, cscfr, csc, 0, csc, cscg, fidel6502_state, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1983, super9cc, 0, 0, su9, su9, fidel6502_state, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1983, super9ccsp, super9cc, 0, su9, su9g, fidel6502_state, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1983, super9ccg, super9cc, 0, su9, su9g, fidel6502_state, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1983, super9ccfr, super9cc, 0, su9, su9g, fidel6502_state, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1983, feasbu, 0, 0, eas, eas, fidel6502_state, 0, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1983, feasbusp, feasbu, 0, eas, easg, fidel6502_state, 0, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1983, feasbug, feasbu, 0, eas, easg, fidel6502_state, 0, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1983, feasbufr, feasbu, 0, eas, easg, fidel6502_state, 0, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1984, feasgla, feasbu, 0, eas, eas, fidel6502_state, 0, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1984, feasglasp, feasbu, 0, eas, easg, fidel6502_state, 0, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1984, feasglag, feasbu, 0, eas, easg, fidel6502_state, 0, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1984, feasglafr, feasbu, 0, eas, easg, fidel6502_state, 0, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1986, feag2100, 0, 0, eag, eag, fidel6502_state, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1986, feag2100sp, feag2100, 0, eag, eagg, fidel6502_state, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1986, feag2100g, feag2100, 0, eag, eagg, fidel6502_state, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1986, feag2100fr, feag2100, 0, eag, eagg, fidel6502_state, 0, "Fidelity Electronics", "Elite Avant Garde 2100 (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1982, fscc9, 0, 0, sc9, sc12, fidel6502_state, 0, "Fidelity Electronics", "Sensory Chess Challenger 9", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1982, fscc9b, fscc9, 0, sc9b, sc12, fidel6502_state, 0, "Fidelity Electronics", "Sensory Chess Challenger 9 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1983, fscc9ps, fscc9, 0, playmatic, playmatic, fidel6502_state, 0, "Fidelity Electronics", "Sensory 9 Playmatic 'S'", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // Fidelity West Germany + +CONS( 1984, fscc12, 0, 0, sc12, sc12, fidel6502_state, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1987, fexcel, 0, 0, fexcelb, fexcelb, fidel6502_state, 0, "Fidelity Electronics", "The Excellence (model 6080B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, fidel6502_state, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, fexceld, fexcel, 0, fexceld, fexcelb, fidel6502_state, 0, "Fidelity Electronics", "Excel Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1985, fexcel12, fexcel, 0, fexcel, fexcel, fidel6502_state, 0, "Fidelity Electronics", "The Excellence (model EP12, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // 1st version of The Excellence +CONS( 1985, fexcel124, fexcel, 0, fexcel4, fexcel, fidel6502_state, 0, "Fidelity Electronics", "The Excellence (model EP12, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1985, fexcela, fexcel, 0, fexcel, fexcel, fidel6502_state, 0, "Fidelity Electronics", "The Excellence (model 6080)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1986, fexcelp, 0, 0, fexcelp, fexcel, fidel6502_state, 0, "Fidelity Electronics", "The Par Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1986, fexcelpb, fexcelp, 0, fexcelp, fexcel, fidel6502_state, 0, "Fidelity Electronics", "The Par Excellence (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1986, granits, fexcelp, 0, granits, fexcel, fidel6502_state, 0, "hack (RCS)", "Granit 'S'", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1988, fdes2000, fexcelp, 0, fdes2000, fdes, fidel6502_state, 0, "Fidelity Electronics", "Designer 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // Excellence series hardware +CONS( 1988, fdes2100, fexcelp, 0, fdes2100, fdes, fidel6502_state, 0, "Fidelity Electronics", "Designer 2100", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // " + +CONS( 1988, fdes2100d, 0, 0, fdes2100d, fdesdis, fidel6502_state, fdesdis, "Fidelity Electronics", "Designer 2100 Display (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1988, fdes2000d, fdes2100d,0, fdes2000d, fdesdis, fidel6502_state, fdesdis, "Fidelity Electronics", "Designer 2000 Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1988, fphantom, 0, 0, fphantom, fphantom, fidel6502_state, fphantom, "Fidelity Electronics", "Phantom (Fidelity)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) + +CONS( 1990, chesster, 0, 0, chesster, chesster, fidel6502_state, chesster, "Fidelity Electronics", "Chesster Challenger (V1.3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, chesstera, chesster, 0, chesster, chesster, fidel6502_state, chesster, "Fidelity Electronics", "Chesster Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1991, kishon, chesster, 0, kishon, chesster, fidel6502_state, chesster, "Fidelity Electronics", "Kishon Chesster", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp index 056928c3058..36e4c65f0d6 100644 --- a/src/mame/drivers/fidel68k.cpp +++ b/src/mame/drivers/fidel68k.cpp @@ -345,173 +345,8 @@ ADDRESS_MAP_END Input Ports ******************************************************************************/ -static INPUT_PORTS_START( cb_buttons ) - PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.4") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.5") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.6") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - - PORT_START("IN.7") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") -INPUT_PORTS_END - -static INPUT_PORTS_START( cb_magnets ) - PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.4") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.5") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.6") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.7") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") -INPUT_PORTS_END - - static INPUT_PORTS_START( fexcel68k ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( fidel_cb_buttons ) PORT_START("IN.8") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear") @@ -526,7 +361,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( eag ) - PORT_INCLUDE( cb_magnets ) + PORT_INCLUDE( fidel_cb_magnets ) PORT_MODIFY("IN.0") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL") @@ -554,7 +389,7 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( fexcel68k, fidel68k_state ) +static MACHINE_CONFIG_START( fexcel68k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) // HD68HC000P12 @@ -573,7 +408,7 @@ static MACHINE_CONFIG_START( fexcel68k, fidel68k_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( eag, fidel68k_state ) +static MACHINE_CONFIG_START( eag ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -691,12 +526,12 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1987, fexcel68k, 0, 0, fexcel68k, fexcel68k, driver_device, 0, "Fidelity Electronics", "Excel 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1987, fexcel68k, 0, 0, fexcel68k, fexcel68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1989, feagv2, 0, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1989, feagv2a, feagv2, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, feagv7, feagv2, 0, eagv7, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, feagv9, feagv2, 0, eagv9, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, feagv10, feagv2, 0, eagv10, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 2002, feagv11, feagv2, 0, eagv11, eag, driver_device, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1989, feagv2, 0, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1989, feagv2a, feagv2, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, feagv7, feagv2, 0, eagv7, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, feagv9, feagv2, 0, eagv9, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, feagv10, feagv2, 0, eagv10, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 2002, feagv11, feagv2, 0, eagv11, eag, fidel68k_state, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/fidelmcs48.cpp b/src/mame/drivers/fidelmcs48.cpp new file mode 100644 index 00000000000..9d5d510a4dd --- /dev/null +++ b/src/mame/drivers/fidelmcs48.cpp @@ -0,0 +1,186 @@ +// license:BSD-3-Clause +// copyright-holders:hap +// thanks-to:yoyo_chessboard +/****************************************************************************** + + Fidelity generic MCS-48 based chess computer driver + + NOTE: MAME doesn't include a generalized implementation for boardpieces yet, + greatly affecting user playability of emulated electronic board games. + As workaround for the chess games, use an external chess GUI on the side, + such as Arena(in editmode). + + TODO: + - nothing + +****************************************************************************** + +Sensory Chess Challenger 6 (model SC6): +- PCB label 510-1045B01 +- INS8040N-11 MCU, 11MHz XTAL +- external 4KB ROM 2332 101-1035A01, in module slot +- buzzer, 2 7seg LEDs, 8*8 chessboard buttons + +******************************************************************************/ + +#include "emu.h" +#include "includes/fidelbase.h" + +#include "cpu/mcs48/mcs48.h" +#include "sound/volt_reg.h" +#include "speaker.h" + +// internal artwork +#include "fidel_sc6.lh" // clickable + + +class fidelmcs48_state : public fidelbase_state +{ +public: + fidelmcs48_state(const machine_config &mconfig, device_type type, const char *tag) + : fidelbase_state(mconfig, type, tag) + { } + + // SC6 + void sc6_prepare_display(); + DECLARE_WRITE8_MEMBER(sc6_mux_w); + DECLARE_WRITE8_MEMBER(sc6_select_w); + DECLARE_READ8_MEMBER(sc6_input_r); + DECLARE_READ_LINE_MEMBER(sc6_input6_r); + DECLARE_READ_LINE_MEMBER(sc6_input7_r); +}; + + + +// Devices, I/O + +/****************************************************************************** + SC6 +******************************************************************************/ + +// MCU ports/generic + +void fidelmcs48_state::sc6_prepare_display() +{ + // 2 7seg leds + set_display_segmask(3, 0x7f); + display_matrix(7, 2, m_7seg_data, m_led_select); +} + +WRITE8_MEMBER(fidelmcs48_state::sc6_mux_w) +{ + // P24-P27: 7442 A-D + u16 sel = 1 << (data >> 4 & 0xf) & 0x3ff; + + // 7442 0-8: input mux, 7seg data + m_inp_mux = sel & 0x1ff; + m_7seg_data = sel & 0x7f; + sc6_prepare_display(); + + // 7442 9: speaker out + m_dac->write(BIT(sel, 9)); +} + +WRITE8_MEMBER(fidelmcs48_state::sc6_select_w) +{ + // P16,P17: digit select + m_led_select = ~data >> 6 & 3; + sc6_prepare_display(); +} + +READ8_MEMBER(fidelmcs48_state::sc6_input_r) +{ + // P10-P15: multiplexed inputs low + return (~read_inputs(9) & 0x3f) | 0xc0; +} + +READ_LINE_MEMBER(fidelmcs48_state::sc6_input6_r) +{ + // T0: multiplexed inputs bit 6 + return ~read_inputs(9) >> 6 & 1; +} + +READ_LINE_MEMBER(fidelmcs48_state::sc6_input7_r) +{ + // T1: multiplexed inputs bit 7 + return ~read_inputs(9) >> 7 & 1; +} + + + +/****************************************************************************** + Address Maps +******************************************************************************/ + +// SC6 + +static ADDRESS_MAP_START( sc6_map, AS_PROGRAM, 8, fidelmcs48_state ) + AM_RANGE(0x0000, 0x0fff) AM_ROM +ADDRESS_MAP_END + + + +/****************************************************************************** + Input Ports +******************************************************************************/ + +static INPUT_PORTS_START( sc6 ) + PORT_INCLUDE( fidel_cb_buttons ) + + PORT_START("IN.8") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("RV / Pawn") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("DM / Knight") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("TB / Bishop") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("LV / Rook") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("PV / Queen") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("PB / King") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE") +INPUT_PORTS_END + + + +/****************************************************************************** + Machine Drivers +******************************************************************************/ + +static MACHINE_CONFIG_START( sc6 ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", I8040, XTAL_11MHz) + MCFG_CPU_PROGRAM_MAP(sc6_map) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(fidelmcs48_state, sc6_mux_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(fidelmcs48_state, sc6_input_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(fidelmcs48_state, sc6_select_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(fidelmcs48_state, sc6_input6_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(fidelmcs48_state, sc6_input7_r)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_fidel_sc6) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("speaker") + MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) +MACHINE_CONFIG_END + + + +/****************************************************************************** + ROM Definitions +******************************************************************************/ + +ROM_START( fscc6 ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD("101-1035a01", 0x0000, 0x1000, CRC(0024971f) SHA1(76b16364913ada2fb94b9e6a8524b924e6832ddf) ) // 2332 +ROM_END + + + +/****************************************************************************** + Drivers +******************************************************************************/ + +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1982, fscc6, 0, 0, sc6, sc6, fidelmcs48_state, 0, "Fidelity", "Sensory Chess Challenger 6", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp index cf8739ad306..5bac65002c7 100644 --- a/src/mame/drivers/fidelz80.cpp +++ b/src/mame/drivers/fidelz80.cpp @@ -1,6 +1,6 @@ // license:BSD-3-Clause // copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco,hap -// thanks-to:Berger +// thanks-to:Berger,yoyo_chessboard /****************************************************************************** Fidelity Electronics Z80 based board driver @@ -20,6 +20,7 @@ - VBRC card scanner - VBRC MCU T1 is unknown - Z80 WAIT pin is not fully emulated, affecting VBRC speech busy state + - DSC: what controls the 2 middle leds? or unused? Read the official manual(s) on how to play. @@ -504,6 +505,8 @@ expect that the software reads these once on startup only. // internal artwork #include "fidel_cc.lh" // clickable #include "fidel_bcc.lh" // clickable +#include "fidel_dsc.lh" // clickable +#include "fidel_sc8.lh" // clickable #include "fidel_vcc.lh" // clickable #include "fidel_vbrc.lh" #include "fidel_vsc.lh" // clickable @@ -530,6 +533,9 @@ public: optional_device m_beeper_off; optional_device m_beeper; + TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); } + TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); } + DECLARE_INPUT_CHANGED_MEMBER(reset_button); // CC10 and VCC/UVC @@ -548,6 +554,10 @@ public: DECLARE_READ8_MEMBER(bcc_input_r); DECLARE_WRITE8_MEMBER(bcc_control_w); + // SCC + DECLARE_READ8_MEMBER(scc_input_r); + DECLARE_WRITE8_MEMBER(scc_control_w); + // VSC void vsc_prepare_display(); DECLARE_READ8_MEMBER(vsc_io_trampoline_r); @@ -563,10 +573,16 @@ public: void vbrc_prepare_display(); DECLARE_WRITE8_MEMBER(vbrc_speech_w); DECLARE_WRITE8_MEMBER(vbrc_mcu_p1_w); - DECLARE_READ8_MEMBER(vbrc_mcu_t0_r); - DECLARE_READ8_MEMBER(vbrc_mcu_t1_r); + DECLARE_READ_LINE_MEMBER(vbrc_mcu_t0_r); + DECLARE_READ_LINE_MEMBER(vbrc_mcu_t1_r); DECLARE_READ8_MEMBER(vbrc_mcu_p2_r); DECLARE_WRITE8_MEMBER(vbrc_ioexp_port_w); + + // DSC + void dsc_prepare_display(); + DECLARE_WRITE8_MEMBER(dsc_control_w); + DECLARE_WRITE8_MEMBER(dsc_select_w); + DECLARE_READ8_MEMBER(dsc_input_r); }; @@ -900,6 +916,33 @@ READ8_MEMBER(fidelz80_state::bcc_input_r) +/****************************************************************************** + SCC +******************************************************************************/ + +// TTL + +WRITE8_MEMBER(fidelz80_state::scc_control_w) +{ + // a0-a2,d7: led data + u8 mask = 1 << (offset & 7); + m_led_data = (m_led_data & ~mask) | ((data & 0x80) ? mask : 0); + + // d0-d3: led select, input mux (row 9 is speaker out) + // d4: corner led(direct) + m_inp_mux = 1 << (data & 0xf); + m_dac->write(BIT(m_inp_mux, 9)); + display_matrix(8, 9, m_led_data, (m_inp_mux & 0xff) | (data << 4 & 0x100)); +} + +READ8_MEMBER(fidelz80_state::scc_input_r) +{ + // d0-d7: multiplexed inputs (active low) + return ~read_inputs(9); +} + + + /****************************************************************************** VSC ******************************************************************************/ @@ -1016,28 +1059,67 @@ WRITE8_MEMBER(fidelz80_state::vbrc_ioexp_port_w) WRITE8_MEMBER(fidelz80_state::vbrc_mcu_p1_w) { - // d0-d7: select digits, input mux + // P10-P17: select digits, input mux m_inp_mux = m_led_select = data; vbrc_prepare_display(); } READ8_MEMBER(fidelz80_state::vbrc_mcu_p2_r) { - // d0-d3: I8243 P2 - // d4-d7: multiplexed inputs (active low) - return (m_i8243->i8243_p2_r(space, offset) & 0x0f) | (read_inputs(8) << 4 ^ 0xf0); + // P20-P23: I8243 P2 + // P24-P27: multiplexed inputs (active low) + return (m_i8243->p2_r(space, offset) & 0x0f) | (read_inputs(8) << 4 ^ 0xf0); } -READ8_MEMBER(fidelz80_state::vbrc_mcu_t0_r) +READ_LINE_MEMBER(fidelz80_state::vbrc_mcu_t0_r) { // T0: card scanner? return 0; } -READ8_MEMBER(fidelz80_state::vbrc_mcu_t1_r) +READ_LINE_MEMBER(fidelz80_state::vbrc_mcu_t1_r) { // T1: ? (locks up on const 0 or 1) - return rand() & 1; + return machine().rand() & 1; +} + + + +/****************************************************************************** + DSC +******************************************************************************/ + +// TTL + +void fidelz80_state::dsc_prepare_display() +{ + // 4 7seg leds + set_display_segmask(0xf, 0x7f); + display_matrix(8, 4, m_7seg_data, m_led_select); +} + +WRITE8_MEMBER(fidelz80_state::dsc_control_w) +{ + // d0-d7: input mux, 7seg data + m_inp_mux = ~data; + m_7seg_data = data; + dsc_prepare_display(); +} + +WRITE8_MEMBER(fidelz80_state::dsc_select_w) +{ + // d4: speaker out + m_dac->write(BIT(~data, 4)); + + // d0-d3: digit select + m_led_select = data & 0xf; + dsc_prepare_display(); +} + +READ8_MEMBER(fidelz80_state::dsc_input_r) +{ + // d0-d7: multiplexed inputs (active low) + return ~read_inputs(8); } @@ -1083,6 +1165,19 @@ static ADDRESS_MAP_START( bcc_io, AS_IO, 8, fidelz80_state ) ADDRESS_MAP_END +// SCC + +static ADDRESS_MAP_START( scc_map, AS_PROGRAM, 8, fidelz80_state ) + AM_RANGE(0x0000, 0x0fff) AM_ROM + AM_RANGE(0x5000, 0x50ff) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( scc_io, AS_IO, 8, fidelz80_state ) + ADDRESS_MAP_GLOBAL_MASK(0x07) + AM_RANGE(0x00, 0x07) AM_READWRITE(scc_input_r, scc_control_w) +ADDRESS_MAP_END + + // VSC static ADDRESS_MAP_START( vsc_map, AS_PROGRAM, 8, fidelz80_state ) @@ -1132,13 +1227,16 @@ static ADDRESS_MAP_START( vbrc_main_io, AS_IO, 8, fidelz80_state ) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("mcu", i8041_device, upi41_master_r, upi41_master_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( vbrc_mcu_map, AS_IO, 8, fidelz80_state ) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(vbrc_mcu_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(vbrc_mcu_p2_r) AM_DEVWRITE("i8243", i8243_device, i8243_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(vbrc_mcu_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(vbrc_mcu_t1_r) + +// DSC + +static ADDRESS_MAP_START( dsc_map, AS_PROGRAM, 8, fidelz80_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x1fff) AM_WRITE(dsc_control_w) + AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_WRITE(dsc_select_w) + AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(dsc_input_r) + AM_RANGE(0xa000, 0xa3ff) AM_MIRROR(0x1c00) AM_RAM ADDRESS_MAP_END @@ -1319,7 +1417,7 @@ INPUT_PORTS_END // sensory board games -static INPUT_PORTS_START( cb_buttons ) +INPUT_PORTS_START( fidel_cb_buttons ) PORT_START("IN.0") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") @@ -1401,10 +1499,93 @@ static INPUT_PORTS_START( cb_buttons ) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") INPUT_PORTS_END -static INPUT_PORTS_START( vsc ) - PORT_INCLUDE( cb_buttons ) +INPUT_PORTS_START( fidel_cb_magnets ) + PORT_START("IN.0") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + + PORT_START("IN.1") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_START("IN.8") // buttons on the right + PORT_START("IN.2") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + + PORT_START("IN.3") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + + PORT_START("IN.4") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + + PORT_START("IN.5") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + + PORT_START("IN.6") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + + PORT_START("IN.7") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") +INPUT_PORTS_END + + +static INPUT_PORTS_START( scc ) + PORT_INCLUDE( fidel_cb_buttons ) + + PORT_START("IN.8") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Pawn") PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Rook") PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Knight") @@ -1413,8 +1594,13 @@ static INPUT_PORTS_START( vsc ) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("King") PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL") PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("RE") +INPUT_PORTS_END + - PORT_START("IN.9") // buttons beside the display +static INPUT_PORTS_START( vsc ) + PORT_INCLUDE( scc ) + + PORT_START("IN.9") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("TM") PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("RV") PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_NAME("Speaker") @@ -1442,12 +1628,33 @@ static INPUT_PORTS_START( vscg ) INPUT_PORTS_END +static INPUT_PORTS_START( dsc ) + PORT_INCLUDE( fidel_cb_buttons ) + + PORT_MODIFY("IN.4") + PORT_BIT(0x8f, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_MODIFY("IN.6") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Black King") + + PORT_MODIFY("IN.7") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Black") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("White King") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("White") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("RV") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("RE") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("PB") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("LV") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("CL") +INPUT_PORTS_END + + /****************************************************************************** Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( bcc, fidelz80_state ) +static MACHINE_CONFIG_START( bcc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) @@ -1464,7 +1671,24 @@ static MACHINE_CONFIG_START( bcc, fidelz80_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cc10, fidelz80_state ) +static MACHINE_CONFIG_START( scc ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", Z80, XTAL_3_9MHz) + MCFG_CPU_PROGRAM_MAP(scc_map) + MCFG_CPU_IO_MAP(scc_io) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_fidel_sc8) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("speaker") + MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( cc10 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) @@ -1488,7 +1712,7 @@ static MACHINE_CONFIG_START( cc10, fidelz80_state ) MCFG_TIMER_DRIVER_ADD("beeper_off", fidelz80_state, beeper_off_callback) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vcc, fidelz80_state ) +static MACHINE_CONFIG_START( vcc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) @@ -1514,20 +1738,20 @@ static MACHINE_CONFIG_START( vcc, fidelz80_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vsc, fidelz80_state ) +static MACHINE_CONFIG_START( vsc ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, 3900000) // 3.9MHz resonator + MCFG_CPU_ADD("maincpu", Z80, XTAL_3_9MHz) // 3.9MHz resonator MCFG_CPU_PROGRAM_MAP(vsc_map) MCFG_CPU_IO_MAP(vsc_io) - MCFG_CPU_PERIODIC_INT_DRIVER(fidelz80_state, nmi_line_pulse, 600) // 555 timer, approx 600hz + MCFG_CPU_PERIODIC_INT_DRIVER(fidelz80_state, nmi_line_pulse, 587) // 555 timer, measured MCFG_DEVICE_ADD("ppi8255", I8255, 0) MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, vsc_ppi_porta_w)) MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, vsc_ppi_portb_w)) MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, vsc_ppi_portc_w)) - MCFG_DEVICE_ADD("z80pio", Z80PIO, 3900000) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_3_9MHz) MCFG_Z80PIO_IN_PA_CB(READ8(fidelz80_state, vsc_pio_porta_r)) MCFG_Z80PIO_IN_PB_CB(READ8(fidelz80_state, vsc_pio_portb_r)) MCFG_Z80PIO_OUT_PB_CB(WRITE8(fidelz80_state, vsc_pio_portb_w)) @@ -1542,7 +1766,7 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vbrc, fidelz80_state ) +static MACHINE_CONFIG_START( vbrc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz/2) @@ -1550,8 +1774,13 @@ static MACHINE_CONFIG_START( vbrc, fidelz80_state ) MCFG_CPU_IO_MAP(vbrc_main_io) MCFG_QUANTUM_PERFECT_CPU("maincpu") - MCFG_CPU_ADD("mcu", I8041, XTAL_5MHz) // or XTAL_5MHz/4? - MCFG_CPU_IO_MAP(vbrc_mcu_map) + MCFG_CPU_ADD("mcu", I8041, XTAL_5MHz) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(fidelz80_state, vbrc_mcu_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(fidelz80_state, vbrc_mcu_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(DEVWRITE8("i8243", i8243_device, p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(fidelz80_state, vbrc_mcu_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(fidelz80_state, vbrc_mcu_t1_r)) MCFG_I8243_ADD("i8243", NOOP, WRITE8(fidelz80_state, vbrc_ioexp_port_w)) @@ -1565,6 +1794,25 @@ static MACHINE_CONFIG_START( vbrc, fidelz80_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75) MACHINE_CONFIG_END +static MACHINE_CONFIG_START( dsc ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", Z80, XTAL_3_9MHz) // 3.9MHz resonator + MCFG_CPU_PROGRAM_MAP(dsc_map) + MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidelz80_state, irq_on, attotime::from_hz(523)) // from 555 timer (22nF, 120K, 2.7K) + MCFG_TIMER_START_DELAY(attotime::from_hz(523) - attotime::from_usec(41)) // active for 41us + MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidelz80_state, irq_off, attotime::from_hz(523)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_fidel_dsc) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("speaker") + MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) +MACHINE_CONFIG_END + /****************************************************************************** @@ -1576,12 +1824,19 @@ ROM_START( cc10 ) ROM_LOAD( "cc10b", 0x0000, 0x1000, CRC(afd3ca99) SHA1(870d09b2b52ccb8572d69642c59b5215d5fb26ab) ) // 2332 ROM_END -ROM_START( cc7 ) + +ROM_START( cc7 ) // model BCC ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "cn19103n_bcc-revb", 0x0000, 0x1000, CRC(a397d471) SHA1(9b12bc442fccee40f4d8500c792bc9d886c5e1a5) ) // 2332 ROM_END +ROM_START( fscc8 ) // model SCC, PCB label 510-1011 REV.2 + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "101-32017", 0x0000, 0x1000, CRC(5340820d) SHA1(e3494c7624b3cacbbb9a0a8cc9e1ed3e00326dfd) ) // 2732 +ROM_END + + ROM_START( vcc ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD("101-32103.bin", 0x0000, 0x1000, CRC(257bb5ab) SHA1(f7589225bb8e5f3eac55f23e2bd526be780b38b5) ) // 32014.VCC??? at location b3? @@ -1711,7 +1966,7 @@ ROM_START( vbrc ) // AKA model 7002 ROM_LOAD("101-64109.f3", 0x2000, 0x2000, CRC(320afa0f) SHA1(90edfe0ac19b108d232cda376b03a3a24befad4c) ) ROM_LOAD("101-64110.e3", 0x4000, 0x2000, CRC(3040d0bd) SHA1(caa55fc8d9196e408fb41e7171a68e5099519813) ) - ROM_REGION( 0x1000, "mcu", 0 ) + ROM_REGION( 0x0400, "mcu", 0 ) ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) ) ROM_REGION( 0x1000, "speech", 0 ) @@ -1725,7 +1980,7 @@ ROM_START( bridgec3 ) // 510-1016 Rev.1 PCB has neither locations nor ic labels, ROM_LOAD("7014_red.f3", 0x2000, 0x2000, CRC(74af0019) SHA1(8dc05950c254ca050b95b93e5d0cf48f913a6d49) ) // red sticker ROM_LOAD("7014_blue.e3", 0x4000, 0x2000, CRC(341d9ca6) SHA1(370876573bb9408e75f4fc797304b6c64af0590a) ) // blue sticker - ROM_REGION( 0x1000, "mcu", 0 ) + ROM_REGION( 0x0400, "mcu", 0 ) ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) ) // "NEC P07021-027 || D8041C 563 100-1009" ROM_REGION( 0x1000, "speech", 0 ) @@ -1733,29 +1988,39 @@ ROM_START( bridgec3 ) // 510-1016 Rev.1 PCB has neither locations nor ic labels, ROM_END +ROM_START( damesc ) // model DSC, PCB label 510-1030A01 + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "101-1027a01", 0x0000, 0x2000, CRC(d86c985c) SHA1(20f923a24420050fd16e1172f5e889f144d17ac9) ) // MOS 2364 +ROM_END + + /****************************************************************************** Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1978, cc10, 0, 0, cc10, cc10, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, cc7, 0, 0, bcc, bcc, driver_device, 0, "Fidelity Electronics", "Chess Challenger 7 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1978, cc10, 0, 0, cc10, cc10, fidelz80_state, 0, "Fidelity Electronics", "Chess Challenger 10 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, cc7, 0, 0, bcc, bcc, fidelz80_state, 0, "Fidelity Electronics", "Chess Challenger 7 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1980, fscc8, 0, 0, scc, scc, fidelz80_state, 0, "Fidelity Electronics", "Sensory Chess Challenger 8", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + +CONS( 1979, vcc, 0, 0, vcc, vcc, fidelz80_state, 0, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, vccsp, vcc, 0, vcc, vccsp, fidelz80_state, 0, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, vccg, vcc, 0, vcc, vccg, fidelz80_state, 0, "Fidelity Electronics", "Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, vccfr, vcc, 0, vcc, vccfr, fidelz80_state, 0, "Fidelity Electronics", "Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, vcc, 0, 0, vcc, vcc, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, vccsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, vccg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, vccfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, uvc, vcc, 0, vcc, vcc, fidelz80_state, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, uvcsp, vcc, 0, vcc, vccsp, fidelz80_state, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, uvcg, vcc, 0, vcc, vccg, fidelz80_state, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, uvcfr, vcc, 0, vcc, vccfr, fidelz80_state, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, uvc, vcc, 0, vcc, vcc, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, uvcsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, uvcg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, uvcfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, vsc, 0, 0, vsc, vsc, fidelz80_state, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, vscsp, vsc, 0, vsc, vscg, fidelz80_state, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, vscg, vsc, 0, vsc, vscg, fidelz80_state, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, vscfr, vsc, 0, vsc, vscg, fidelz80_state, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, vscsp, vsc, 0, vsc, vscg, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, vscg, vsc, 0, vsc, vscg, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, vscfr, vsc, 0, vsc, vscg, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, vbrc, 0, 0, vbrc, vbrc, fidelz80_state, 0, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1980, bridgec3, vbrc, 0, vbrc, vbrc, fidelz80_state, 0, "Fidelity Electronics", "Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -CONS( 1979, vbrc, 0, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -CONS( 1980, bridgec3, vbrc, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1981, damesc, 0, 0, dsc, dsc, fidelz80_state, 0, "Fidelity Electronics", "Dame Sensory Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/finalizr.cpp b/src/mame/drivers/finalizr.cpp index dc71a032558..1475eb8c3d8 100644 --- a/src/mame/drivers/finalizr.cpp +++ b/src/mame/drivers/finalizr.cpp @@ -77,7 +77,7 @@ WRITE8_MEMBER(finalizr_state::i8039_irqen_w) m_audiocpu->set_input_line(0, CLEAR_LINE); } -READ8_MEMBER(finalizr_state::i8039_T1_r) +READ_LINE_MEMBER(finalizr_state::i8039_T1_r) { /* I suspect the clock-out from the I8039 T0 line should be connected here (See the i8039_T0_w handler below). @@ -138,10 +138,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, finalizr_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_WRITE(i8039_T0_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(i8039_T1_r) ADDRESS_MAP_END @@ -264,7 +260,7 @@ void finalizr_state::machine_reset() m_irq_enable = 0; } -static MACHINE_CONFIG_START( finalizr, finalizr_state ) +static MACHINE_CONFIG_START( finalizr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI1, XTAL_18_432MHz/6) /* ??? */ @@ -274,6 +270,10 @@ static MACHINE_CONFIG_START( finalizr, finalizr_state ) MCFG_CPU_ADD("audiocpu", I8039,XTAL_18_432MHz/2) /* 9.216MHz clkin ?? */ MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(finalizr_state, i8039_irqen_w)) + //MCFG_MCS48_PORT_T0_CLK_CUSTOM(finalizr_state, i8039_T0_w) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(finalizr_state, i8039_T1_r)) MCFG_WATCHDOG_ADD("watchdog") @@ -363,5 +363,5 @@ ROM_END -GAME( 1985, finalizr, 0, finalizr, finalizr, driver_device, 0, ROT90, "Konami", "Finalizer - Super Transformation", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, finalizrb, finalizr, finalizr, finalizrb, driver_device, 0, ROT90, "bootleg", "Finalizer - Super Transformation (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, finalizr, 0, finalizr, finalizr, finalizr_state, 0, ROT90, "Konami", "Finalizer - Super Transformation", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, finalizrb, finalizr, finalizr, finalizrb, finalizr_state, 0, ROT90, "bootleg", "Finalizer - Super Transformation (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fireball.cpp b/src/mame/drivers/fireball.cpp index f1c6ac2f2c6..f1333b21b5a 100644 --- a/src/mame/drivers/fireball.cpp +++ b/src/mame/drivers/fireball.cpp @@ -492,7 +492,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( fireball_state::int_0 ) *************************/ -static MACHINE_CONFIG_START( fireball, fireball_state ) +static MACHINE_CONFIG_START( fireball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8031, CPU_CLK) // MCFG_CPU_PROGRAM_MAP(fireball_map) @@ -526,5 +526,5 @@ ROM_END /************************* * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS*/ -GAME( 1989, fireball, 0, fireball, fireball, driver_device, 0, ROT0, "Valco", "Fireball", MACHINE_MECHANICAL ) //1989 by rom name +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1989, fireball, 0, fireball, fireball, fireball_state, 0, ROT0, "Valco", "Fireball", MACHINE_MECHANICAL ) //1989 by rom name diff --git a/src/mame/drivers/firebeat.cpp b/src/mame/drivers/firebeat.cpp index 888d0bc33e6..8b8b1d4275a 100644 --- a/src/mame/drivers/firebeat.cpp +++ b/src/mame/drivers/firebeat.cpp @@ -1278,7 +1278,7 @@ static SLOT_INTERFACE_START(firebeat_ata_devices) SLOT_INTERFACE("cdrom", ATAPI_FIXED_CDROM) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( firebeat, firebeat_state ) +static MACHINE_CONFIG_START( firebeat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GCX, XTAL_64MHz) @@ -1338,7 +1338,7 @@ static MACHINE_CONFIG_START( firebeat, firebeat_state ) MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(DEVICE_SELF_OWNER, firebeat_state, midi_uart_ch1_irq_callback)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( firebeat2, firebeat_state ) +static MACHINE_CONFIG_START( firebeat2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GCX, XTAL_64MHz) diff --git a/src/mame/drivers/firefox.cpp b/src/mame/drivers/firefox.cpp index f4c337c75aa..c53c0be9c8f 100644 --- a/src/mame/drivers/firefox.cpp +++ b/src/mame/drivers/firefox.cpp @@ -710,7 +710,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( firefox, firefox_state ) +static MACHINE_CONFIG_START( firefox ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809E, MASTER_XTAL/2) @@ -876,5 +876,5 @@ ROM_END * *************************************/ -GAME( 1984, firefox, 0, firefox, firefox, driver_device, 0, ROT0, "Atari", "Fire Fox (set 1)", 0 ) -GAME( 1984, firefoxa, firefox, firefox, firefox, driver_device, 0, ROT0, "Atari", "Fire Fox (set 2)", 0 ) +GAME( 1984, firefox, 0, firefox, firefox, firefox_state, 0, ROT0, "Atari", "Fire Fox (set 1)", 0 ) +GAME( 1984, firefoxa, firefox, firefox, firefox, firefox_state, 0, ROT0, "Atari", "Fire Fox (set 2)", 0 ) diff --git a/src/mame/drivers/firetrap.cpp b/src/mame/drivers/firetrap.cpp index ddcf4f0850a..a5e87c82127 100644 --- a/src/mame/drivers/firetrap.cpp +++ b/src/mame/drivers/firetrap.cpp @@ -626,7 +626,7 @@ void firetrap_state::machine_reset() m_coin_command_pending = 0; } -static MACHINE_CONFIG_START( firetrap, firetrap_state ) +static MACHINE_CONFIG_START( firetrap ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, FIRETRAP_XTAL/2) // 6 MHz @@ -662,11 +662,11 @@ static MACHINE_CONFIG_START( firetrap, firetrap_state ) MCFG_SOUND_ADD("msm", MSM5205, FIRETRAP_XTAL/32) // 375 kHz MCFG_MSM5205_VCLK_CB(WRITELINE(firetrap_state, firetrap_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 7.8125kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 7.8125kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( firetrapbl, firetrap_state ) +static MACHINE_CONFIG_START( firetrapbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, FIRETRAP_XTAL/2) // 6 MHz @@ -702,7 +702,7 @@ static MACHINE_CONFIG_START( firetrapbl, firetrap_state ) MCFG_SOUND_ADD("msm", MSM5205, FIRETRAP_XTAL/32) // 375 kHz MCFG_MSM5205_VCLK_CB(WRITELINE(firetrap_state, firetrap_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 7.8125kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 7.8125kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -970,7 +970,7 @@ ROM_END -GAME( 1986, firetrap, 0, firetrap, firetrap, driver_device, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Fire Trap (US, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, firetrapa, firetrap, firetrap, firetrap, driver_device, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Fire Trap (US, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, firetrapj, firetrap, firetrap, firetrapj, driver_device, 0, ROT90, "Wood Place Inc.", "Fire Trap (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, firetrapbl, firetrap, firetrapbl, firetrapbl, driver_device, 0, ROT90, "bootleg", "Fire Trap (Japan bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, firetrap, 0, firetrap, firetrap, firetrap_state, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Fire Trap (US, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, firetrapa, firetrap, firetrap, firetrap, firetrap_state, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Fire Trap (US, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, firetrapj, firetrap, firetrap, firetrapj, firetrap_state, 0, ROT90, "Wood Place Inc.", "Fire Trap (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, firetrapbl, firetrap, firetrapbl, firetrapbl, firetrap_state, 0, ROT90, "bootleg", "Fire Trap (Japan bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/firetrk.cpp b/src/mame/drivers/firetrk.cpp index a9500e8919e..52936390711 100644 --- a/src/mame/drivers/firetrk.cpp +++ b/src/mame/drivers/firetrk.cpp @@ -855,7 +855,7 @@ static GFXDECODE_START( montecar ) GFXDECODE_END -static MACHINE_CONFIG_START( firetrk, firetrk_state ) +static MACHINE_CONFIG_START( firetrk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, MASTER_CLOCK/12) /* 750Khz during service mode */ @@ -1012,6 +1012,6 @@ ROM_START( montecar ) ROM_END -GAMEL(1977, superbug, 0, superbug, superbug, driver_device, 0, ROT270, "Atari (Kee Games)", "Super Bug", 0, layout_superbug ) -GAME( 1978, firetrk, 0, firetrk, firetrk, driver_device, 0, ROT270, "Atari", "Fire Truck / Smokey Joe", 0 ) -GAME( 1979, montecar, 0, montecar, montecar, driver_device, 0, ROT270, "Atari", "Monte Carlo", 0 ) +GAMEL(1977, superbug, 0, superbug, superbug, firetrk_state, 0, ROT270, "Atari (Kee Games)", "Super Bug", 0, layout_superbug ) +GAME( 1978, firetrk, 0, firetrk, firetrk, firetrk_state, 0, ROT270, "Atari", "Fire Truck / Smokey Joe", 0 ) +GAME( 1979, montecar, 0, montecar, montecar, firetrk_state, 0, ROT270, "Atari", "Monte Carlo", 0 ) diff --git a/src/mame/drivers/fitfight.cpp b/src/mame/drivers/fitfight.cpp index da1ddd3e295..541dc8dfb66 100644 --- a/src/mame/drivers/fitfight.cpp +++ b/src/mame/drivers/fitfight.cpp @@ -723,7 +723,7 @@ void fitfight_state::machine_reset() m_fof_700000_data = 0; } -static MACHINE_CONFIG_START( fitfight, fitfight_state ) +static MACHINE_CONFIG_START( fitfight ) MCFG_CPU_ADD("maincpu",M68000, 12000000) MCFG_CPU_PROGRAM_MAP(fitfight_main_map) @@ -755,11 +755,11 @@ static MACHINE_CONFIG_START( fitfight, fitfight_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1333333, OKIM6295_PIN7_LOW) // ~8080Hz ??? TODO: find out the real frequency + MCFG_OKIM6295_ADD("oki", 1333333, PIN7_LOW) // ~8080Hz ??? TODO: find out the real frequency MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bbprot, fitfight_state ) +static MACHINE_CONFIG_START( bbprot ) MCFG_CPU_ADD("maincpu",M68000, 12000000) MCFG_CPU_PROGRAM_MAP(bbprot_main_map) @@ -782,7 +782,7 @@ static MACHINE_CONFIG_START( bbprot, fitfight_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1333333, OKIM6295_PIN7_LOW) // ~8080Hz ??? TODO: find out the real frequency + MCFG_OKIM6295_ADD("oki", 1333333, PIN7_LOW) // ~8080Hz ??? TODO: find out the real frequency MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1021,7 +1021,7 @@ DRIVER_INIT_MEMBER(fitfight_state,hotmindff) /* GAME */ -GAME( 199?, fitfight, 0, fitfight, fitfight, fitfight_state, fitfight, ROT0, "bootleg", "Fit of Fighting", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 199?, histryma, 0, fitfight, histryma, fitfight_state, histryma, ROT0, "bootleg", "The History of Martial Arts", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 199?, bbprot, 0, bbprot, bbprot, fitfight_state, bbprot, ROT0, "", "unknown fighting game 'BB' (prototype)", MACHINE_IS_INCOMPLETE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 199?, hotmindff, hotmind, fitfight, fitfight, fitfight_state, hotmindff, ROT0, "Playmark", "Hot Mind (Fit of Fighting hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // need to fix scroll offsets + inputs +GAME( 199?, fitfight, 0, fitfight, fitfight, fitfight_state, fitfight, ROT0, "bootleg", "Fit of Fighting", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 199?, histryma, 0, fitfight, histryma, fitfight_state, histryma, ROT0, "bootleg", "The History of Martial Arts", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 199?, bbprot, 0, bbprot, bbprot, fitfight_state, bbprot, ROT0, "", "unknown fighting game 'BB' (prototype)", MACHINE_IS_INCOMPLETE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 199?, hotmindff, hotmind, fitfight, fitfight, fitfight_state, hotmindff, ROT0, "Playmark", "Hot Mind (Fit of Fighting hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // need to fix scroll offsets + inputs diff --git a/src/mame/drivers/fk1.cpp b/src/mame/drivers/fk1.cpp index 61ba3ffdf0f..bb36819802b 100644 --- a/src/mame/drivers/fk1.cpp +++ b/src/mame/drivers/fk1.cpp @@ -404,7 +404,7 @@ uint32_t fk1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c return 0; } -static MACHINE_CONFIG_START( fk1, fk1_state ) +static MACHINE_CONFIG_START( fk1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_8MHz / 2) MCFG_CPU_PROGRAM_MAP(fk1_mem) @@ -474,5 +474,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, fk1, 0, 0, fk1, fk1, driver_device, 0, "Statni statek Klicany", "FK-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, fk1, 0, 0, fk1, fk1, fk1_state, 0, "Statni statek Klicany", "FK-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/flicker.cpp b/src/mame/drivers/flicker.cpp index 2d5747ed358..324381adfcf 100644 --- a/src/mame/drivers/flicker.cpp +++ b/src/mame/drivers/flicker.cpp @@ -207,7 +207,7 @@ sound to produce. We need to change this to just one pulse per actual sound. */ } -static MACHINE_CONFIG_START( flicker, flicker_state ) +static MACHINE_CONFIG_START( flicker ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I4004, XTAL_5MHz / 8) MCFG_CPU_PROGRAM_MAP(flicker_rom) @@ -228,5 +228,5 @@ ROM_START(flicker) ROM_LOAD("flicker.rom", 0x0000, 0x0400, CRC(c692e586) SHA1(5cabb28a074d18b589b5b8f700c57e1610071c68)) ROM_END -// YEAR GAME PARENT MACHINE INPUT CLASS INIT ORIENTATION COMPANY DESCRIPTION FLAGS -GAME(1974, flicker, 0, flicker, flicker, driver_device, 0, ROT0, "Dave Nutting Associates / Bally", "Flicker (prototype)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +// YEAR GAME PARENT MACHINE INPUT CLASS INIT ORIENTATION COMPANY DESCRIPTION FLAGS +GAME(1974, flicker, 0, flicker, flicker, flicker_state, 0, ROT0, "Dave Nutting Associates / Bally", "Flicker (prototype)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/flipjack.cpp b/src/mame/drivers/flipjack.cpp index 70bdc3f059f..cbd9408b1d2 100644 --- a/src/mame/drivers/flipjack.cpp +++ b/src/mame/drivers/flipjack.cpp @@ -435,7 +435,7 @@ void flipjack_state::machine_start() } -static MACHINE_CONFIG_START( flipjack, flipjack_state ) +static MACHINE_CONFIG_START( flipjack ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4) @@ -503,4 +503,4 @@ ROM_START( flipjack ) ROM_END -GAME( 1983?, flipjack, 0, flipjack, flipjack, driver_device, 0, ROT90, "Jackson Co., Ltd.", "Flipper Jack", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // copyright not shown, datecodes on pcb suggests mid-1983 +GAME( 1983?, flipjack, 0, flipjack, flipjack, flipjack_state, 0, ROT90, "Jackson Co., Ltd.", "Flipper Jack", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // copyright not shown, datecodes on pcb suggests mid-1983 diff --git a/src/mame/drivers/flkatck.cpp b/src/mame/drivers/flkatck.cpp index 11bfa29b78d..63e527f7241 100644 --- a/src/mame/drivers/flkatck.cpp +++ b/src/mame/drivers/flkatck.cpp @@ -207,7 +207,7 @@ void flkatck_state::machine_reset() m_flipscreen = 0; } -static MACHINE_CONFIG_START( flkatck, flkatck_state ) +static MACHINE_CONFIG_START( flkatck ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP, 24/8 MHz */ @@ -310,6 +310,6 @@ ROM_START( flkatcka ) ROM_LOAD( "mask2m.11a", 0x000000, 0x040000, CRC(6d1ea61c) SHA1(9e6eb9ac61838df6e1f74e74bb72f3edf1274aed) ) ROM_END -GAME( 1987, mx5000, 0, flkatck, flkatck, driver_device, 0, ROT90, "Konami", "MX5000", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, flkatck, mx5000, flkatck, flkatck, driver_device, 0, ROT90, "Konami", "Flak Attack (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, flkatcka,mx5000, flkatck, flkatck, driver_device, 0, ROT90, "Konami", "Flak Attack (Japan, PWB 450593 sub-board)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, mx5000, 0, flkatck, flkatck, flkatck_state, 0, ROT90, "Konami", "MX5000", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, flkatck, mx5000, flkatck, flkatck, flkatck_state, 0, ROT90, "Konami", "Flak Attack (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, flkatcka,mx5000, flkatck, flkatck, flkatck_state, 0, ROT90, "Konami", "Flak Attack (Japan, PWB 450593 sub-board)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/flower.cpp b/src/mame/drivers/flower.cpp index 63bfbfa3289..8e5d9de2f03 100644 --- a/src/mame/drivers/flower.cpp +++ b/src/mame/drivers/flower.cpp @@ -1,9 +1,19 @@ // license:BSD-3-Clause -// copyright-holders:David Haywood +// copyright-holders:Angelo Salese +/****************************************************************************** -// **** SKELETON DRIVER **** original removed due to unresolved licensing. + Flower (c) 1986 Clarue -/* + driver by Angelo Salese, + original "wiped off due of not anymore licenseable" driver by insideoutboy. + + TODO: + - sprite zooming; + - some video glitches; + - $a000 outputs; + - sound, third z80 not hooked up; + +=============================================================================== Flower (c)1986 Komax (USA license) (c)1986 Sega/Alpha (Sega game number 834-5998) @@ -71,7 +81,9 @@ CHIP # POSITION TYPE Video Green | 39 | 40 | Video Red GND | 41 | 42 | GND GND | 43 | 44 | GND -*/ + +******************************************************************************/ + #include "emu.h" #include "cpu/z80/z80.h" @@ -82,22 +94,33 @@ class flower_state : public driver_device public: flower_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), m_palette(*this, "palette"), m_gfxdecode(*this, "gfxdecode"), m_txvram(*this, "txvram"), m_bgvram(*this, "bgvram"), - m_fgvram(*this, "fgvram") + m_fgvram(*this, "fgvram"), + m_workram(*this, "workram"), + m_bgscroll(*this, "bgscroll"), + m_fgscroll(*this, "fgscroll") { } + required_device m_maincpu; required_device m_palette; required_device m_gfxdecode; required_shared_ptr m_txvram; required_shared_ptr m_bgvram; required_shared_ptr m_fgvram; + required_shared_ptr m_workram; + required_shared_ptr m_bgscroll; + required_shared_ptr m_fgscroll; + + DECLARE_INPUT_CHANGED_MEMBER(coin_inserted); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void legacy_tx_draw(bitmap_ind16 &bitmap,const rectangle &cliprect); void legacy_layers_draw(bitmap_ind16 &bitmap,const rectangle &cliprect); + void sprites_draw(bitmap_ind16 &bitmap,const rectangle &cliprect); }; @@ -140,33 +163,91 @@ void flower_state::legacy_tx_draw(bitmap_ind16 &bitmap,const rectangle &cliprect void flower_state::legacy_layers_draw(bitmap_ind16 &bitmap,const rectangle &cliprect) { gfx_element *gfx_1 = m_gfxdecode->gfx(1); + int bg_ybase = m_bgscroll[0]; + int fg_ybase = m_fgscroll[0]; int count; - - for (count=0;count<32*32;count++) + + for (count=0;count<16*16;count++) { int x = count % 16; int y = count / 16; uint8_t tile, attr; - + tile = m_bgvram[count]; attr = m_bgvram[count+0x100]; if(attr & 0xf) // debug attr = machine().rand() & 0xf0; - gfx_1->opaque(bitmap,cliprect, tile, attr >> 4, 0, 0, x*16, y*16); - + gfx_1->opaque(bitmap,cliprect, tile, attr >> 4, 0, 0, x*16, (y*16 - bg_ybase) & 0xff); + } + + + for (count=0;count<16*16;count++) + { + int x = count % 16; + int y = count / 16; + uint8_t tile, attr; + tile = m_fgvram[count]; attr = m_fgvram[count+0x100]; if(attr & 0xf) attr = machine().rand() & 0xf0; - gfx_1->transpen(bitmap,cliprect, tile, attr >> 4, 0, 0, x*16, y*16, 15); + gfx_1->transpen(bitmap,cliprect, tile, attr >> 4, 0, 0, x*16, (y*16 - fg_ybase) & 0xff, 15); + } +} + +/* + [0] YYYY YYYY Y offset + [1] YXoo oooo Flip Y/X, tile number + [2] ---- b--b tile bank select + [3] Yyyy Xxxx Y size, Y zoom, X size, X zoom + [4] xxxx xxxx X offset LSB + [5] XXXX XXXX X offset MSB + [6] cccc ---- color base + */ +void flower_state::sprites_draw(bitmap_ind16 &bitmap,const rectangle &cliprect) +{ + uint8_t *spr_ptr = &m_workram[0x1e08]; + gfx_element *gfx_2 = m_gfxdecode->gfx(2); + + for(int i=0;i<0x1fb;i+=8) + { + uint8_t tile = (spr_ptr[i+1] & 0x3f); + uint8_t color = spr_ptr[i+6] >> 4; + int x = (spr_ptr[i+4] | (spr_ptr[i+5]<<8))-55; + int y = 241-spr_ptr[i+0]; + uint8_t attr = spr_ptr[i+2]; + uint8_t fy = spr_ptr[i+1] & 0x80; + uint8_t fx = spr_ptr[i+1] & 0x40; + uint8_t ysize = ((spr_ptr[i+3] & 0x80) >> 7) + 1; + uint8_t xsize = ((spr_ptr[i+3] & 0x08) >> 3) + 1; + + if(ysize == 2) + y-=16; + + tile |= (attr & 1) << 6; + tile |= (attr & 8) << 4; + // TODO: zoom + for(int yi=0;yitranspen(bitmap,cliprect, tile+tile_offs, color, fx, fy, x+xi*16, y+yi*16, 15); + } + } } } uint32_t flower_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ) { legacy_layers_draw(bitmap,cliprect); + sprites_draw(bitmap,cliprect); legacy_tx_draw(bitmap,cliprect); return 0; } @@ -175,12 +256,87 @@ static ADDRESS_MAP_START( shared_map, AS_PROGRAM, 8, flower_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("workram") AM_RANGE(0xa000, 0xa000) AM_WRITENOP + AM_RANGE(0xa100, 0xa100) AM_READ_PORT("P1") + AM_RANGE(0xa101, 0xa101) AM_READ_PORT("P2") + AM_RANGE(0xa102, 0xa102) AM_READ_PORT("DSW1") + AM_RANGE(0xa103, 0xa103) AM_READ_PORT("DSW2") AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("txvram") AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_SHARE("bgvram") + AM_RANGE(0xf200, 0xf200) AM_RAM AM_SHARE("bgscroll") AM_RANGE(0xf800, 0xf9ff) AM_RAM AM_SHARE("fgvram") + AM_RANGE(0xfa00, 0xfa00) AM_RAM AM_SHARE("fgscroll") ADDRESS_MAP_END +INPUT_CHANGED_MEMBER(flower_state::coin_inserted) +{ + m_maincpu->set_input_line(INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE); +} + static INPUT_PORTS_START( flower ) + PORT_START("P1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Laser") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Missile") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Cutter") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("P2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Laser") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Missile") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL PORT_NAME("P2 Cutter") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("DSW1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, flower_state,coin_inserted, 0) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) + PORT_DIPNAME( 0x08, 0x08, "Energy Decrease" ) PORT_DIPLOCATION("SW2:4") + PORT_DIPSETTING( 0x08, "Slow" ) + PORT_DIPSETTING( 0x00, "Fast" ) + PORT_DIPNAME( 0x10, 0x10, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW2:5") + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, "Keep Weapons When Destroyed" ) PORT_DIPLOCATION("SW2:6") // check code at 0x74a2 + PORT_DIPSETTING( 0x20, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7") // "Enemy Bullets" + PORT_DIPSETTING( 0x40, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hard ) ) + PORT_DIPNAME( 0x80, 0x80, "Shot Range" ) PORT_DIPLOCATION("SW2:8") // check code at 0x75f9 + PORT_DIPSETTING( 0x80, "Short" ) + PORT_DIPSETTING( 0x00, "Long" ) + + PORT_START("DSW2") + PORT_DIPNAME( 0x07, 0x05, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2,3") + PORT_DIPSETTING( 0x07, "1" ) + PORT_DIPSETTING( 0x06, "2" ) + PORT_DIPSETTING( 0x05, "3" ) + PORT_DIPSETTING( 0x04, "4" ) + PORT_DIPSETTING( 0x03, "5" ) + PORT_DIPSETTING( 0x02, "6" ) + PORT_DIPSETTING( 0x01, "7" ) + PORT_DIPSETTING( 0x00, "Infinite (Cheat)") + PORT_DIPNAME( 0x18, 0x18, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:4,5") + PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x18, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:6") // check code at 0x759f + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7") + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:8") + PORT_DIPSETTING( 0x80, "30k, then every 50k" ) + PORT_DIPSETTING( 0x00, "50k, then every 80k" ) INPUT_PORTS_END static const gfx_layout charlayout = @@ -211,7 +367,7 @@ static GFXDECODE_START( flower ) GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0, 16 ) GFXDECODE_END -static MACHINE_CONFIG_START( flower, flower_state ) +static MACHINE_CONFIG_START( flower ) MCFG_CPU_ADD("maincpu",Z80,4000000) MCFG_CPU_PROGRAM_MAP(shared_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", flower_state, irq0_line_hold) @@ -222,7 +378,7 @@ static MACHINE_CONFIG_START( flower, flower_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_UPDATE_DRIVER(flower_state, screen_update) - MCFG_SCREEN_RAW_PARAMS(XTAL_3_579545MHz*2, 442, 0, 288, 263, 16, 240) /* generic NTSC video timing at 256x224 */ + MCFG_SCREEN_RAW_PARAMS(XTAL_3_579545MHz*2, 442, 0, 272, 263, 16, 240) /* generic NTSC video timing at 256x224 */ MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", flower) @@ -299,7 +455,6 @@ ROM_START( flowerj ) /* Sega/Alpha version. Sega game number 834-5998 */ ROM_LOAD( "12.16e", 0x4000, 0x2000, CRC(e3779f7f) SHA1(8e12d06b3cdc2fcb7b77cc35f8eca45544cc4873) ) ROM_LOAD( "11.14e", 0x6000, 0x2000, CRC(8801b34f) SHA1(256059fcd16b21e076db1c18fd9669128df1d658) ) - ROM_REGION( 0x8000, "sound1", 0 ) ROM_LOAD( "4.12a", 0x0000, 0x8000, CRC(851ed9fd) SHA1(5dc048b612e45da529502bf33d968737a7b0a646) ) /* 8-bit samples */ @@ -319,5 +474,5 @@ ROM_START( flowerj ) /* Sega/Alpha version. Sega game number 834-5998 */ ROM_END -GAME( 1986, flower, 0, flower, flower, driver_device, 0, ROT0, "Clarue (Komax license)", "Flower (US)", MACHINE_IS_SKELETON ) -GAME( 1986, flowerj, flower, flower, flower, driver_device, 0, ROT0, "Clarue (Sega / Alpha Denshi Co. license)", "Flower (Japan)", MACHINE_IS_SKELETON ) +GAME( 1986, flower, 0, flower, flower, flower_state, 0, ROT0, "Clarue (Komax license)", "Flower (US)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND|MACHINE_IMPERFECT_GRAPHICS|MACHINE_NO_COCKTAIL ) +GAME( 1986, flowerj, flower, flower, flower, flower_state, 0, ROT0, "Clarue (Sega / Alpha Denshi Co. license)", "Flower (Japan)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND|MACHINE_IMPERFECT_GRAPHICS|MACHINE_NO_COCKTAIL ) diff --git a/src/mame/drivers/flstory.cpp b/src/mame/drivers/flstory.cpp index 006bf279c6d..03f67c8eef7 100644 --- a/src/mame/drivers/flstory.cpp +++ b/src/mame/drivers/flstory.cpp @@ -1013,7 +1013,7 @@ MACHINE_RESET_MEMBER(flstory_state,flstory) m_from_mcu = 0; } -static MACHINE_CONFIG_START( flstory, flstory_state ) +static MACHINE_CONFIG_START( flstory ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_10_733MHz/2) /* verified on pcb */ @@ -1075,7 +1075,7 @@ static MACHINE_CONFIG_START( flstory, flstory_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( onna34ro, flstory_state ) +static MACHINE_CONFIG_START( onna34ro ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 10733000/2) /* ??? */ @@ -1138,7 +1138,7 @@ static MACHINE_CONFIG_START( onna34ro, flstory_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( victnine, flstory_state ) +static MACHINE_CONFIG_START( victnine ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 8000000/2) /* 4 MHz */ @@ -1207,7 +1207,7 @@ MACHINE_RESET_MEMBER(flstory_state,rumba) m_mcu_cmd = 0; } -static MACHINE_CONFIG_START( rumba, flstory_state ) +static MACHINE_CONFIG_START( rumba ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) /* verified on pcb */ @@ -1559,9 +1559,9 @@ ROM_START( rumba ) ROM_END -GAME( 1985, flstory, 0, flstory, flstory, driver_device, 0, ROT180, "Taito", "The FairyLand Story", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, flstoryj, flstory, flstory, flstory, driver_device, 0, ROT180, "Taito", "The FairyLand Story (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, onna34ro, 0, onna34ro, onna34ro, driver_device, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, driver_device, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, victnine, 0, victnine, victnine, driver_device, 0, ROT0, "Taito", "Victorious Nine", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, rumba, 0, rumba, rumba, driver_device, 0, ROT270, "Taito", "Rumba Lumber", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1985, flstory, 0, flstory, flstory, flstory_state, 0, ROT180, "Taito", "The FairyLand Story", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, flstoryj, flstory, flstory, flstory, flstory_state, 0, ROT180, "Taito", "The FairyLand Story (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, onna34ro, 0, onna34ro, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, victnine, 0, victnine, victnine, flstory_state, 0, ROT0, "Taito", "Victorious Nine", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, rumba, 0, rumba, rumba, flstory_state, 0, ROT270, "Taito", "Rumba Lumber", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/flyball.cpp b/src/mame/drivers/flyball.cpp index 05c7d9b5b87..2947cf7eee8 100644 --- a/src/mame/drivers/flyball.cpp +++ b/src/mame/drivers/flyball.cpp @@ -65,6 +65,7 @@ public: uint8_t m_potmask; uint8_t m_potsense; + emu_timer *m_pot_assert_timer[64]; emu_timer *m_pot_clear_timer; emu_timer *m_quarter_timer; @@ -206,7 +207,7 @@ TIMER_CALLBACK_MEMBER(flyball_state::quarter_callback) for (i = 0; i < 64; i++) if (potsense[i] != 0) - timer_set(m_screen->time_until_pos(scanline + i), TIMER_POT_ASSERT, potsense[i]); + m_pot_assert_timer[potsense[i]]->adjust(m_screen->time_until_pos(scanline + i), potsense[i]); scanline += 0x40; scanline &= 0xff; @@ -432,6 +433,8 @@ void flyball_state::machine_start() buf[i ^ 0x1ff] = ROM[i]; memcpy(ROM, &buf[0], len); + for (int i = 0; i < 64; i++) + m_pot_assert_timer[i] = timer_alloc(TIMER_POT_ASSERT); m_pot_clear_timer = timer_alloc(TIMER_POT_CLEAR); m_quarter_timer = timer_alloc(TIMER_QUARTER); @@ -458,7 +461,7 @@ void flyball_state::machine_reset() } -static MACHINE_CONFIG_START( flyball, flyball_state ) +static MACHINE_CONFIG_START( flyball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/16) @@ -538,5 +541,5 @@ ROM_END * *************************************/ -GAME( 1976, flyball, 0, flyball, flyball, driver_device, 0, 0, "Atari", "Flyball (rev 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1976, flyball1, flyball, flyball, flyball, driver_device, 0, 0, "Atari", "Flyball (rev 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1976, flyball, 0, flyball, flyball, flyball_state, 0, 0, "Atari", "Flyball (rev 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1976, flyball1, flyball, flyball, flyball, flyball_state, 0, 0, "Atari", "Flyball (rev 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fm7.cpp b/src/mame/drivers/fm7.cpp index 4d079895e1b..5cd069931b0 100644 --- a/src/mame/drivers/fm7.cpp +++ b/src/mame/drivers/fm7.cpp @@ -1167,7 +1167,7 @@ void fm7_state::fm7_mmr_refresh(address_space& space) { if (m_basic_ptr) { - membank("fbasic_bank_r")->set_base(m_rom_ptr); + membank("fbasic_bank_r")->set_base(m_basic_ptr); } } else @@ -2055,7 +2055,7 @@ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) \ MCFG_ADDRESS_MAP_BANK_STRIDE(0x1000) -static MACHINE_CONFIG_START( fm7, fm7_state ) +static MACHINE_CONFIG_START( fm7 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(fm7_mem) @@ -2113,7 +2113,7 @@ static MACHINE_CONFIG_START( fm7, fm7_state ) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fm8, fm7_state ) +static MACHINE_CONFIG_START( fm8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 1200000) // 1.2MHz 68A09 MCFG_CPU_PROGRAM_MAP(fm8_mem) @@ -2164,7 +2164,7 @@ static MACHINE_CONFIG_START( fm8, fm7_state ) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fm77av, fm7_state ) +static MACHINE_CONFIG_START( fm77av ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_2MHz) // actually MB68B09E, but the 6809E core runs too slowly MCFG_CPU_PROGRAM_MAP(fm77av_mem) @@ -2243,7 +2243,7 @@ static MACHINE_CONFIG_START( fm77av, fm7_state ) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fm11, fm7_state ) +static MACHINE_CONFIG_START( fm11 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_2MHz) // 2MHz 68B09E MCFG_CPU_PROGRAM_MAP(fm11_mem) @@ -2315,7 +2315,7 @@ static MACHINE_CONFIG_START( fm11, fm7_state ) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fm16beta, fm7_state ) +static MACHINE_CONFIG_START( fm16beta ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, XTAL_8MHz) // 8MHz i8086 MCFG_CPU_PROGRAM_MAP(fm16_mem) @@ -2528,13 +2528,13 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, fm8, 0, 0, fm8, fm8, fm7_state, fm7, "Fujitsu", "FM-8", 0) -COMP( 1982, fm7, 0, 0, fm7, fm7, fm7_state, fm7, "Fujitsu", "FM-7", 0) -COMP( 1984, fmnew7, fm7, 0, fm7, fm7, fm7_state, fm7, "Fujitsu", "FM-NEW7", 0) -COMP( 1985, fm77av, fm7, 0, fm77av, fm7, fm7_state, fm7, "Fujitsu", "FM-77AV", MACHINE_IMPERFECT_GRAPHICS) -COMP( 1985, fm7740sx, fm7, 0, fm77av, fm7, fm7_state, fm7, "Fujitsu", "FM-77AV40SX", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1981, fm8, 0, 0, fm8, fm8, fm7_state, fm7, "Fujitsu", "FM-8", 0) +COMP( 1982, fm7, 0, 0, fm7, fm7, fm7_state, fm7, "Fujitsu", "FM-7", 0) +COMP( 1984, fmnew7, fm7, 0, fm7, fm7, fm7_state, fm7, "Fujitsu", "FM-NEW7", 0) +COMP( 1985, fm77av, fm7, 0, fm77av, fm7, fm7_state, fm7, "Fujitsu", "FM-77AV", MACHINE_IMPERFECT_GRAPHICS) +COMP( 1985, fm7740sx, fm7, 0, fm77av, fm7, fm7_state, fm7, "Fujitsu", "FM-77AV40SX", MACHINE_NOT_WORKING) // These may be separated into a separate driver, depending on how different they are to the FM-8/FM-7 -COMP( 1982, fm11, 0, 0, fm11, fm7, fm7_state, fm7, "Fujitsu", "FM-11 EX", MACHINE_NOT_WORKING) -COMP( 1982, fm16beta, 0, 0, fm16beta, fm7, fm7_state, fm7, "Fujitsu", "FM-16\xCE\xB2", MACHINE_NOT_WORKING) +COMP( 1982, fm11, 0, 0, fm11, fm7, fm7_state, fm7, "Fujitsu", "FM-11 EX", MACHINE_NOT_WORKING) +COMP( 1982, fm16beta, 0, 0, fm16beta, fm7, fm7_state, fm7, "Fujitsu", "FM-16\xCE\xB2", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp index bb2f2c7cd44..e798455731d 100644 --- a/src/mame/drivers/fmtowns.cpp +++ b/src/mame/drivers/fmtowns.cpp @@ -2788,12 +2788,12 @@ static MACHINE_CONFIG_FRAGMENT( towns_base ) MCFG_RAM_EXTRA_OPTIONS("2M,4M,8M,16M,32M,64M,96M") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( towns, towns_state ) +static MACHINE_CONFIG_START( towns ) MCFG_FRAGMENT_ADD(towns_base) MCFG_NVRAM_ADD_0FILL("nvram") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( townsux, towns16_state ) +static MACHINE_CONFIG_START( townsux ) MCFG_FRAGMENT_ADD(towns_base) MCFG_CPU_REPLACE("maincpu",I386SX, 16000000) @@ -2846,7 +2846,7 @@ static MACHINE_CONFIG_DERIVED( townsftv, towns ) MCFG_RAM_EXTRA_OPTIONS("32M,68M") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( marty, marty_state ) +static MACHINE_CONFIG_START( marty ) MCFG_FRAGMENT_ADD(towns_base) MCFG_CPU_REPLACE("maincpu",I386SX, 16000000) @@ -2985,14 +2985,14 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, fmtowns, 0, 0, towns, towns, driver_device, 0, "Fujitsu", "FM-Towns", MACHINE_NOT_WORKING) -COMP( 1989, fmtownsa, fmtowns, 0, towns, towns, driver_device, 0, "Fujitsu", "FM-Towns (alternate)", MACHINE_NOT_WORKING) -COMP( 1991, fmtownsux,fmtowns, 0, townsux, towns, driver_device, 0, "Fujitsu", "FM-Towns II UX", MACHINE_NOT_WORKING) -COMP( 1992, fmtownshr,fmtowns, 0, townshr, towns, driver_device, 0, "Fujitsu", "FM-Towns II HR", MACHINE_NOT_WORKING) -COMP( 1993, fmtownsmx,fmtowns, 0, townshr, towns, driver_device, 0, "Fujitsu", "FM-Towns II MX", MACHINE_NOT_WORKING) -COMP( 1994, fmtownsftv,fmtowns, 0, townsftv, towns, driver_device, 0, "Fujitsu", "FM-Towns II FreshTV", MACHINE_NOT_WORKING) -COMP( 19??, fmtownssj,fmtowns, 0, townssj, towns, driver_device, 0, "Fujitsu", "FM-Towns II SJ", MACHINE_NOT_WORKING) -CONS( 1993, fmtmarty, 0, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Marty", MACHINE_NOT_WORKING) -CONS( 1993, fmtmarty2,fmtmarty, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Marty 2", MACHINE_NOT_WORKING) -CONS( 1994, carmarty, fmtmarty, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Car Marty", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1989, fmtowns, 0, 0, towns, towns, towns_state, 0, "Fujitsu", "FM-Towns", MACHINE_NOT_WORKING) +COMP( 1989, fmtownsa, fmtowns, 0, towns, towns, towns_state, 0, "Fujitsu", "FM-Towns (alternate)", MACHINE_NOT_WORKING) +COMP( 1991, fmtownsux,fmtowns, 0, townsux, towns, towns16_state, 0, "Fujitsu", "FM-Towns II UX", MACHINE_NOT_WORKING) +COMP( 1992, fmtownshr,fmtowns, 0, townshr, towns, towns_state, 0, "Fujitsu", "FM-Towns II HR", MACHINE_NOT_WORKING) +COMP( 1993, fmtownsmx,fmtowns, 0, townshr, towns, towns_state, 0, "Fujitsu", "FM-Towns II MX", MACHINE_NOT_WORKING) +COMP( 1994, fmtownsftv,fmtowns, 0, townsftv, towns, towns_state, 0, "Fujitsu", "FM-Towns II FreshTV", MACHINE_NOT_WORKING) +COMP( 19??, fmtownssj,fmtowns, 0, townssj, towns, towns_state, 0, "Fujitsu", "FM-Towns II SJ", MACHINE_NOT_WORKING) +CONS( 1993, fmtmarty, 0, 0, marty, marty, marty_state, 0, "Fujitsu", "FM-Towns Marty", MACHINE_NOT_WORKING) +CONS( 1993, fmtmarty2,fmtmarty, 0, marty, marty, marty_state, 0, "Fujitsu", "FM-Towns Marty 2", MACHINE_NOT_WORKING) +CONS( 1994, carmarty, fmtmarty, 0, marty, marty, marty_state, 0, "Fujitsu", "FM-Towns Car Marty", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/foodf.cpp b/src/mame/drivers/foodf.cpp index 3ad8678a66e..ec09b5f7673 100644 --- a/src/mame/drivers/foodf.cpp +++ b/src/mame/drivers/foodf.cpp @@ -335,7 +335,7 @@ READ8_MEMBER(foodf_state::pot_r) * *************************************/ -static MACHINE_CONFIG_START( foodf, foodf_state ) +static MACHINE_CONFIG_START( foodf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/2) @@ -505,7 +505,7 @@ ROM_END * *************************************/ -GAME( 1982, foodf, 0, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, foodf2, foodf, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, foodf1, foodf, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, foodfc, foodf, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (cocktail)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, foodf, 0, foodf, foodf, foodf_state, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, foodf2, foodf, foodf, foodf, foodf_state, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, foodf1, foodf, foodf, foodf, foodf_state, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, foodfc, foodf, foodf, foodf, foodf_state, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (cocktail)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/force68k.cpp b/src/mame/drivers/force68k.cpp index ea32699b052..93aa110cd62 100644 --- a/src/mame/drivers/force68k.cpp +++ b/src/mame/drivers/force68k.cpp @@ -429,7 +429,7 @@ SLOT_INTERFACE_END /* * Machine configuration */ -static MACHINE_CONFIG_START (fccpu1, force68k_state) +static MACHINE_CONFIG_START (fccpu1) /* basic machine hardware */ MCFG_CPU_ADD ("maincpu", M68000, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP (force68k_mem) @@ -499,27 +499,27 @@ MACHINE_CONFIG_END * CPU-6 family is device and adressmap compatible with CPU-1 but with additions * such as an optional 68881 FPU */ -static MACHINE_CONFIG_START (fccpu6, force68k_state) +static MACHINE_CONFIG_START (fccpu6) MCFG_CPU_ADD ("maincpu", M68000, XTAL_8MHz) /* Jumper B10 Mode B */ MCFG_CPU_PROGRAM_MAP (force68k_mem) MACHINE_CONFIG_END -static MACHINE_CONFIG_START (fccpu6a, force68k_state) +static MACHINE_CONFIG_START (fccpu6a) MCFG_CPU_ADD ("maincpu", M68000, XTAL_12_5MHz) /* Jumper B10 Mode A */ MCFG_CPU_PROGRAM_MAP (force68k_mem) MACHINE_CONFIG_END -static MACHINE_CONFIG_START (fccpu6v, force68k_state) +static MACHINE_CONFIG_START (fccpu6v) MCFG_CPU_ADD ("maincpu", M68010, XTAL_8MHz) /* Jumper B10 Mode B */ MCFG_CPU_PROGRAM_MAP (force68k_mem) MACHINE_CONFIG_END -static MACHINE_CONFIG_START (fccpu6va, force68k_state) +static MACHINE_CONFIG_START (fccpu6va) MCFG_CPU_ADD ("maincpu", M68010, XTAL_12_5MHz) /* Jumper B10 Mode A */ MCFG_CPU_PROGRAM_MAP (force68k_mem) MACHINE_CONFIG_END -static MACHINE_CONFIG_START (fccpu6vb, force68k_state) +static MACHINE_CONFIG_START (fccpu6vb) MCFG_CPU_ADD ("maincpu", M68010, XTAL_12_5MHz) /* Jumper B10 Mode A */ MCFG_CPU_PROGRAM_MAP (force68k_mem) MACHINE_CONFIG_END @@ -608,10 +608,10 @@ ROM_END #endif /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, fccpu1, 0, 0, fccpu1, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-1", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) -//COMP( 1989, fccpu6, 0, 0, fccpu6, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6", MACHINE_IS_SKELETON ) -//COMP( 1989, fccpu6a, 0, 0, fccpu6a, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6a", MACHINE_IS_SKELETON ) -//COMP( 1989, fccpu6v, 0, 0, fccpu6v, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6v", MACHINE_IS_SKELETON ) -//COMP( 1989, fccpu6va, 0, 0, fccpu6va, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6va", MACHINE_IS_SKELETON ) -//COMP( 1989, fccpu6vb, 0, 0, fccpu6vb, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6vb", MACHINE_IS_SKELETON ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, fccpu1, 0, 0, fccpu1, force68k, force68k_state, 0, "Force Computers GmbH", "SYS68K/CPU-1", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +//COMP( 1989, fccpu6, 0, 0, fccpu6, force68k, force68k_state, 0, "Force Computers GmbH", "SYS68K/CPU-6", MACHINE_IS_SKELETON ) +//COMP( 1989, fccpu6a, 0, 0, fccpu6a, force68k, force68k_state, 0, "Force Computers GmbH", "SYS68K/CPU-6a", MACHINE_IS_SKELETON ) +//COMP( 1989, fccpu6v, 0, 0, fccpu6v, force68k, force68k_state, 0, "Force Computers GmbH", "SYS68K/CPU-6v", MACHINE_IS_SKELETON ) +//COMP( 1989, fccpu6va, 0, 0, fccpu6va, force68k, force68k_state, 0, "Force Computers GmbH", "SYS68K/CPU-6va", MACHINE_IS_SKELETON ) +//COMP( 1989, fccpu6vb, 0, 0, fccpu6vb, force68k, force68k_state, 0, "Force Computers GmbH", "SYS68K/CPU-6vb", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/forte2.cpp b/src/mame/drivers/forte2.cpp index 8968e8b3307..c4292dc3a49 100644 --- a/src/mame/drivers/forte2.cpp +++ b/src/mame/drivers/forte2.cpp @@ -117,7 +117,7 @@ void forte2_state::machine_start() } -static MACHINE_CONFIG_START( pesadelo, forte2_state ) +static MACHINE_CONFIG_START( pesadelo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) diff --git a/src/mame/drivers/fortecar.cpp b/src/mame/drivers/fortecar.cpp index b39d8ad14b7..6302322c6e5 100644 --- a/src/mame/drivers/fortecar.cpp +++ b/src/mame/drivers/fortecar.cpp @@ -672,7 +672,7 @@ void fortecar_state::machine_reset() * Machine Drivers * ***********************************/ -static MACHINE_CONFIG_START( fortecar, fortecar_state ) +static MACHINE_CONFIG_START( fortecar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz, measured */ MCFG_CPU_PROGRAM_MAP(fortecar_map) @@ -781,6 +781,6 @@ DRIVER_INIT_MEMBER(fortecar_state, fortecar) * Game Drivers * ***********************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT GAMEL( 1994, fortecrd, 0, fortecar, fortecar, fortecar_state, fortecar, ROT0, "Fortex Ltd", "Forte Card (Ver 110, Spanish)", 0, layout_fortecrd ) GAMEL( 1994, fortecar, fortecrd, fortecar, fortecar, fortecar_state, fortecar, ROT0, "Fortex Ltd", "Forte Card (Ver 103, English)", MACHINE_NOT_WORKING, layout_fortecrd ) diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp index 536dd69b5fb..968f0cca55e 100644 --- a/src/mame/drivers/fp1100.cpp +++ b/src/mame/drivers/fp1100.cpp @@ -634,7 +634,7 @@ DRIVER_INIT_MEMBER( fp1100_state, fp1100 ) membank("bankw0")->configure_entry(0, &wram[0x0000]); } -static MACHINE_CONFIG_START( fp1100, fp1100_state ) +static MACHINE_CONFIG_START( fp1100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK/4) MCFG_CPU_PROGRAM_MAP(fp1100_map) @@ -699,5 +699,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ COMP( 1983, fp1100, 0, 0, fp1100, fp1100, fp1100_state, fp1100, "Casio", "FP-1100", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/fp200.cpp b/src/mame/drivers/fp200.cpp index 38f228b773f..20c85836f26 100644 --- a/src/mame/drivers/fp200.cpp +++ b/src/mame/drivers/fp200.cpp @@ -579,7 +579,7 @@ READ_LINE_MEMBER( fp200_state::sid_r ) return (ioport("KEYMOD")->read() >> m_keyb_mux) & 1; } -static MACHINE_CONFIG_START( fp200, fp200_state ) +static MACHINE_CONFIG_START( fp200 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8085A,MAIN_CLOCK) @@ -625,4 +625,4 @@ ROM_START( fp200 ) ROM_REGION( 0x800, "chargen", ROMREGION_ERASE00 ) ROM_END -COMP( 1982, fp200, 0, 0, fp200, fp200, driver_device, 0, "Casio", "FP-200 (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1982, fp200, 0, 0, fp200, fp200, fp200_state, 0, "Casio", "FP-200 (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/fp6000.cpp b/src/mame/drivers/fp6000.cpp index 200dd9df10f..529bf34ea79 100644 --- a/src/mame/drivers/fp6000.cpp +++ b/src/mame/drivers/fp6000.cpp @@ -289,7 +289,7 @@ void fp6000_state::machine_reset() { } -static MACHINE_CONFIG_START( fp6000, fp6000_state ) +static MACHINE_CONFIG_START( fp6000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 16000000/2) MCFG_CPU_PROGRAM_MAP(fp6000_map) @@ -327,5 +327,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, fp6000, 0, 0, fp6000, fp6000, driver_device, 0, "Casio", "FP-6000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1985, fp6000, 0, 0, fp6000, fp6000, fp6000_state, 0, "Casio", "FP-6000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/freekick.cpp b/src/mame/drivers/freekick.cpp index 5e67ee8f78d..e1223c2e3f0 100644 --- a/src/mame/drivers/freekick.cpp +++ b/src/mame/drivers/freekick.cpp @@ -708,8 +708,8 @@ MACHINE_RESET_MEMBER(freekick_state,oigas) m_cnt = 0; } -static MACHINE_CONFIG_START( omega, freekick_state ) - MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) // unknown divisor +static MACHINE_CONFIG_START( omega ) + MCFG_CPU_ADD("maincpu", MC8123, XTAL_18_432MHz/6) // unknown divisor MCFG_CPU_PROGRAM_MAP(omega_map) MCFG_CPU_IO_MAP(omega_io_map) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) @@ -741,7 +741,7 @@ static MACHINE_CONFIG_START( omega, freekick_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( base, freekick_state ) +static MACHINE_CONFIG_START( base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) @@ -782,8 +782,11 @@ static MACHINE_CONFIG_DERIVED( pbillrd, base ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pbillrdm, pbillrd ) - MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_REPLACE("maincpu", MC8123, XTAL_12MHz/4) + MCFG_CPU_PROGRAM_MAP(pbillrd_map) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) + MCFG_CPU_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB + MCFG_CPU_VBLANK_INT_DRIVER("screen", freekick_state, freekick_irqgen) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( freekickb, base ) @@ -827,6 +830,24 @@ static MACHINE_CONFIG_DERIVED( gigas, base ) MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( gigasm, base ) + + /* basic machine hardware */ + MCFG_CPU_REPLACE("maincpu", MC8123, XTAL_12MHz/4) + MCFG_CPU_PROGRAM_MAP(gigas_map) + MCFG_CPU_IO_MAP(gigas_io_map) + MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) + MCFG_CPU_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB + MCFG_CPU_VBLANK_INT_DRIVER("screen", freekick_state, freekick_irqgen) + + MCFG_MACHINE_START_OVERRIDE(freekick_state,freekick) + MCFG_MACHINE_RESET_OVERRIDE(freekick_state,freekick) + + /* video hardware */ + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas) +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( oigas, gigas ) /* basic machine hardware */ @@ -876,7 +897,7 @@ ROM_START( pbillrds ) /* Encrytped with a Sega MC-8123 (317-0030) CPU module */ ROM_LOAD( "10625.8r", 0x4000, 0x8000, CRC(8977c724) SHA1(f00835a04dc6fa7d8c1e382dace515f2aa7d6f44) ) /* encrypted */ ROM_LOAD( "10627.10n", 0xc000, 0x4000, CRC(2335e6dd) SHA1(82352b6f4abea88aad3a96ca63cccccb6e278f48) ) /* encrypted */ - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0030.key", 0x0000, 0x2000, CRC(9223f06d) SHA1(51a22a4c80fe273526bde68918c13c6476cec383) ) ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */ @@ -904,7 +925,7 @@ ROM_START( pbillrdsa ) /* all ROMs were HN4827128G-25, except 17, HN27256G-25, C ROM_LOAD( "17", 0x4000, 0x8000, CRC(9bb3d467) SHA1(5d61c80c920363cbcb548f4a08434e2a05b3d5f3) ) /* encrypted */ ROM_LOAD( "19", 0xc000, 0x4000, CRC(2335e6dd) SHA1(82352b6f4abea88aad3a96ca63cccccb6e278f48) ) /* encrypted */ - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0030.key", 0x0000, 0x2000, CRC(9223f06d) SHA1(51a22a4c80fe273526bde68918c13c6476cec383) ) ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */ @@ -1178,7 +1199,7 @@ ROM_START( gigas ) /* From an actual Sega board 834-6167 with mc-8123: 317-5002 ROM_LOAD( "8.8n", 0x00000, 0x4000, CRC(34ea8262) SHA1(a71c865ffccfc79455402c53639c4fa77a746cf1) ) ROM_LOAD( "7.8r", 0x04000, 0x8000, CRC(43653909) SHA1(30f6666ba5c0f016299f462c4c07c81ee4832808) ) /* 27256 */ - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-5002.key", 0x0000, 0x2000, CRC(86a7e5f6) SHA1(3ff3a17c02eb5610182b6febfada4e8eca0c5eea) ) ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */ @@ -1304,7 +1325,7 @@ ROM_START( omega ) ROM_LOAD("17.m10", 0x0000, 0x4000, CRC(c7de0993) SHA1(35ecd464935faba1dc7d0dbf48e1b17153626bfd)) // 27128 ROM_LOAD("8.n10", 0x4000, 0x8000, CRC(9bb61910) SHA1(f8a1210dbf93e901e246e6adf4cd905acc3ef376)) // 27256 - ROM_REGION(0x2000, "user1", 0) // MC8123 key + ROM_REGION(0x2000, "maincpu:key", 0) // MC8123 key ROM_LOAD("omega.key", 0x0000, 0x2000, CRC(0a63943f) SHA1(9e581ea0c5bf6c0ed5d402d3bab053766b8e44c2)) ROM_REGION(0xc000, "gfx1", 0) @@ -1350,7 +1371,7 @@ DRIVER_INIT_MEMBER(freekick_state,gigasb) DRIVER_INIT_MEMBER(freekick_state,pbillrds) { uint8_t *decrypted_opcodes = auto_alloc_array(machine(), uint8_t, 0x10000); - mc8123_decode(memregion("maincpu")->base(), decrypted_opcodes, memregion("user1")->base(), 0x10000); + downcast(*m_maincpu).decode(memregion("maincpu")->base(), decrypted_opcodes, 0x10000); membank("bank0d")->set_base(decrypted_opcodes); m_bank1d->configure_entries(0, 2, decrypted_opcodes + 0x8000, 0x4000); } @@ -1358,7 +1379,7 @@ DRIVER_INIT_MEMBER(freekick_state,pbillrds) DRIVER_INIT_MEMBER(freekick_state,gigas) { uint8_t *decrypted_opcodes = auto_alloc_array(machine(), uint8_t, 0xc000); - mc8123_decode(memregion("maincpu")->base(), decrypted_opcodes, memregion("user1")->base(), 0xc000); + downcast(*m_maincpu).decode(memregion("maincpu")->base(), decrypted_opcodes, 0xc000); membank("bank0d")->set_base(decrypted_opcodes); m_bank1d->set_base(decrypted_opcodes + 0x8000); } @@ -1370,20 +1391,20 @@ DRIVER_INIT_MEMBER(freekick_state,gigas) * Game driver(s) * *************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1986, gigas, 0, gigas, gigas, freekick_state, gigas, ROT270, "Sega", "Gigas (MC-8123, 317-5002)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, gigasb, gigas, gigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Gigas (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, oigas, gigas , oigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Oigas (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, gigasm2b, 0, gigas, gigasm2, freekick_state, gigasb, ROT270, "bootleg", "Gigas Mark II (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, omega, 0, omega, omega, freekick_state, gigas, ROT270, "Nihon System", "Omega", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, pbillrd, 0, pbillrd, pbillrd, driver_device, 0, ROT0, "Nihon System", "Perfect Billiard", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, pbillrds, pbillrd, pbillrdm, pbillrd, freekick_state, pbillrds,ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-0030)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, pbillrdsa, pbillrd, pbillrdm, pbillrd, freekick_state, pbillrds,ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-5008)", MACHINE_SUPPORTS_SAVE ) // sticker on CPU module different (wrong?) functionality the same -GAME( 1987, freekick, 0, freekickb, freekck, driver_device, 0, ROT270, "Nihon System (Merit license)", "Free Kick (NS6201-A 1987.10)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, freekicka, freekick, freekickb, freekck, driver_device, 0, ROT270, "Nihon System", "Free Kick (NS6201-A 1987.9)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, freekickb1,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, freekickb2,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, freekickb3,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, countrun, 0, freekickb, countrun, driver_device, 0, ROT0, "Nihon System (Sega license)", "Counter Run (NS6201-A 1988.3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // CPU module not dumped -GAME( 1988, countrunb, countrun, freekickb, countrun, driver_device, 0, ROT0, "bootleg", "Counter Run (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, countrunb2,countrun, freekickb, countrun, driver_device, 0, ROT0, "bootleg", "Counter Run (bootleg set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1986, gigas, 0, gigasm, gigas, freekick_state, gigas, ROT270, "Sega", "Gigas (MC-8123, 317-5002)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, gigasb, gigas, gigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Gigas (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, oigas, gigas , oigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Oigas (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, gigasm2b, 0, gigas, gigasm2, freekick_state, gigasb, ROT270, "bootleg", "Gigas Mark II (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, omega, 0, omega, omega, freekick_state, gigas, ROT270, "Nihon System", "Omega", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, pbillrd, 0, pbillrd, pbillrd, freekick_state, 0, ROT0, "Nihon System", "Perfect Billiard", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, pbillrds, pbillrd, pbillrdm, pbillrd, freekick_state, pbillrds, ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-0030)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, pbillrdsa, pbillrd, pbillrdm, pbillrd, freekick_state, pbillrds, ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-5008)", MACHINE_SUPPORTS_SAVE ) // sticker on CPU module different (wrong?) functionality the same +GAME( 1987, freekick, 0, freekickb, freekck, freekick_state, 0, ROT270, "Nihon System (Merit license)", "Free Kick (NS6201-A 1987.10)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, freekicka, freekick, freekickb, freekck, freekick_state, 0, ROT270, "Nihon System", "Free Kick (NS6201-A 1987.9)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, freekickb1, freekick, freekickb, freekck, freekick_state, 0, ROT270, "bootleg", "Free Kick (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, freekickb2, freekick, freekickb, freekck, freekick_state, 0, ROT270, "bootleg", "Free Kick (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, freekickb3, freekick, freekickb, freekck, freekick_state, 0, ROT270, "bootleg", "Free Kick (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, countrun, 0, freekickb, countrun, freekick_state, 0, ROT0, "Nihon System (Sega license)", "Counter Run (NS6201-A 1988.3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // CPU module not dumped +GAME( 1988, countrunb, countrun, freekickb, countrun, freekick_state, 0, ROT0, "bootleg", "Counter Run (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, countrunb2, countrun, freekickb, countrun, freekick_state, 0, ROT0, "bootleg", "Counter Run (bootleg set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fresh.cpp b/src/mame/drivers/fresh.cpp index 15057673c66..a923cfc9e0c 100644 --- a/src/mame/drivers/fresh.cpp +++ b/src/mame/drivers/fresh.cpp @@ -23,8 +23,9 @@ rom 5 and 6 are prg roms #include "emu.h" #include "cpu/m68000/m68000.h" +#include "sound/ym2413.h" #include "screen.h" - +#include "speaker.h" @@ -168,47 +169,48 @@ uint32_t fresh_state::screen_update_fresh(screen_device &screen, bitmap_ind16 &b static ADDRESS_MAP_START( fresh_map, AS_PROGRAM, 16, fresh_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xC00000, 0xC0ffff) AM_RAM_WRITE( fresh_bg_2_videoram_w ) AM_SHARE( "bg_videoram_2" ) - AM_RANGE(0xC10000, 0xC1ffff) AM_RAM_WRITE( fresh_attr_2_videoram_w ) AM_SHARE( "attr_videoram_2" ) - AM_RANGE(0xC20000, 0xC2ffff) AM_RAM_WRITE( fresh_bg_videoram_w ) AM_SHARE( "bg_videoram" ) - AM_RANGE(0xC30000, 0xC3ffff) AM_RAM_WRITE( fresh_attr_videoram_w ) AM_SHARE( "attr_videoram" ) - -// AM_RANGE(0xC70000, 0xC70001) AM_RAM -// AM_RANGE(0xC70002, 0xC70003) AM_RAM - AM_RANGE(0xC71000, 0xC71001) AM_WRITE(c71000_write) -// AM_RANGE(0xC72000, 0xC72001) AM_RAM -// AM_RANGE(0xC72002, 0xC72003) AM_RAM -// AM_RANGE(0xC73000, 0xC73001) AM_RAM -// AM_RANGE(0xC73002, 0xC73003) AM_RAM - AM_RANGE(0xC74000, 0xC74001) AM_WRITE(c74000_write) - AM_RANGE(0xC75000, 0xC75001) AM_WRITE(c75000_write) - AM_RANGE(0xC76000, 0xC76001) AM_WRITE(c76000_write) -// AM_RANGE(0xC77000, 0xC77001) AM_RAM -// AM_RANGE(0xC77002, 0xC77003) AM_RAM + AM_RANGE(0xc00000, 0xc0ffff) AM_RAM_WRITE(fresh_bg_2_videoram_w) AM_SHARE("bg_videoram_2") + AM_RANGE(0xc10000, 0xc1ffff) AM_RAM_WRITE(fresh_attr_2_videoram_w) AM_SHARE("attr_videoram_2") + AM_RANGE(0xc20000, 0xc2ffff) AM_RAM_WRITE(fresh_bg_videoram_w) AM_SHARE("bg_videoram") + AM_RANGE(0xc30000, 0xc3ffff) AM_RAM_WRITE(fresh_attr_videoram_w) AM_SHARE("attr_videoram") + +// AM_RANGE(0xc70000, 0xc70001) AM_RAM +// AM_RANGE(0xc70002, 0xc70003) AM_RAM + AM_RANGE(0xc71000, 0xc71001) AM_WRITE(c71000_write) +// AM_RANGE(0xc72000, 0xc72001) AM_RAM +// AM_RANGE(0xc72002, 0xc72003) AM_RAM +// AM_RANGE(0xc73000, 0xc73001) AM_RAM +// AM_RANGE(0xc73002, 0xc73003) AM_RAM + AM_RANGE(0xc74000, 0xc74001) AM_WRITE(c74000_write) + AM_RANGE(0xc75000, 0xc75001) AM_WRITE(c75000_write) + AM_RANGE(0xc76000, 0xc76001) AM_WRITE(c76000_write) +// AM_RANGE(0xc77000, 0xc77001) AM_RAM +// AM_RANGE(0xc77002, 0xc77003) AM_RAM // written together - AM_RANGE(0xC40000, 0xC417ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0xC50000, 0xC517ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext") + AM_RANGE(0xc40000, 0xc417ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0xc50000, 0xc517ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext") + + AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE8("ymsnd", ym2413_device, register_port_w, 0x00ff) + AM_RANGE(0xd10000, 0xd10001) AM_DEVWRITE8("ymsnd", ym2413_device, data_port_w, 0x00ff) -// AM_RANGE(0xD00000, 0xD00001) AM_RAM -// AM_RANGE(0xD10000, 0xD10001) AM_RAM - AM_RANGE(0xD30000, 0xD30001) AM_WRITE(d30000_write) - AM_RANGE(0xD40000, 0xD40001) AM_READ_PORT("IN0") //AM_WRITENOP // checks for 0x10 -// AM_RANGE(0xD40002, 0xD40003) AM_WRITENOP - AM_RANGE(0xD70000, 0xD70001) AM_READ_PORT("IN1") // checks for 0x10, dead loop if fail + AM_RANGE(0xd30000, 0xd30001) AM_WRITE(d30000_write) + AM_RANGE(0xd40000, 0xd40001) AM_READ_PORT("IN0") //AM_WRITENOP // checks for 0x10 +// AM_RANGE(0xd40002, 0xd40003) AM_WRITENOP + AM_RANGE(0xd70000, 0xd70001) AM_READ_PORT("IN1") // checks for 0x10, dead loop if fail - AM_RANGE(0xE00000, 0xE00001) AM_READ_PORT("DSW0") //AM_WRITENOP - AM_RANGE(0xE20000, 0xE20001) AM_READ_PORT("DSW1") //AM_WRITENOP - AM_RANGE(0xE40000, 0xE40001) AM_READ_PORT("DSW2") - AM_RANGE(0xE60000, 0xE60001) AM_READ_PORT("DSW3") - AM_RANGE(0xE80000, 0xE80001) AM_READ_PORT("IN6") - AM_RANGE(0xEA0000, 0xEA0001) AM_READ_PORT("IN7") - AM_RANGE(0xEC0000, 0xEC0001) AM_READ_PORT("IN8") - AM_RANGE(0xEE0000, 0xEE0001) AM_READ_PORT("IN9") + AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") //AM_WRITENOP + AM_RANGE(0xe20000, 0xe20001) AM_READ_PORT("DSW1") //AM_WRITENOP + AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("DSW2") + AM_RANGE(0xe60000, 0xe60001) AM_READ_PORT("DSW3") + AM_RANGE(0xe80000, 0xe80001) AM_READ_PORT("IN6") + AM_RANGE(0xea0000, 0xea0001) AM_READ_PORT("IN7") + AM_RANGE(0xec0000, 0xec0001) AM_READ_PORT("IN8") + AM_RANGE(0xee0000, 0xee0001) AM_READ_PORT("IN9") - AM_RANGE(0xF00000, 0xF0FFFF) AM_RAM + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM ADDRESS_MAP_END @@ -587,7 +589,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(fresh_state::fake_scanline) } -static MACHINE_CONFIG_START( fresh, fresh_state ) +static MACHINE_CONFIG_START( fresh ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24000000/2 ) @@ -609,6 +611,10 @@ static MACHINE_CONFIG_START( fresh, fresh_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fresh) /* sound hw? */ + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("ymsnd", YM2413, 4000000) // actual clock and type unknown + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -628,4 +634,4 @@ ROM_END // title shows Fruit Fresh but on resetting you get text strings of 'Dream World V2.41SI 97. 1.28' -GAME( 1996, fresh, 0, fresh, fresh, driver_device, 0, ROT0, "Chain Leisure", "Fruit Fresh (Italy)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 1996, fresh, 0, fresh, fresh, fresh_state, 0, ROT0, "Chain Leisure", "Fruit Fresh (Italy)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/fromanc2.cpp b/src/mame/drivers/fromanc2.cpp index da1c4422fbf..87e843d972d 100644 --- a/src/mame/drivers/fromanc2.cpp +++ b/src/mame/drivers/fromanc2.cpp @@ -501,7 +501,7 @@ void fromanc2_state::machine_reset() m_datalatch_2l = 0; } -static MACHINE_CONFIG_START( fromanc2, fromanc2_state ) +static MACHINE_CONFIG_START( fromanc2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,32000000/2) /* 16.00 MHz */ @@ -561,7 +561,7 @@ static MACHINE_CONFIG_START( fromanc2, fromanc2_state ) MCFG_SOUND_ROUTE(2, "mono", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fromancr, fromanc2_state ) +static MACHINE_CONFIG_START( fromancr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,32000000/2) /* 16.00 MHz */ @@ -621,7 +621,7 @@ static MACHINE_CONFIG_START( fromancr, fromanc2_state ) MCFG_SOUND_ROUTE(2, "mono", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fromanc4, fromanc2_state ) +static MACHINE_CONFIG_START( fromanc4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,32000000/2) /* 16.00 MHz */ @@ -811,5 +811,5 @@ DRIVER_INIT_MEMBER(fromanc2_state,fromanc4) *************************************/ GAME( 1995, fromanc2, 0, fromanc2, fromanc2, fromanc2_state, fromanc2, ROT0, "Video System Co.", "Taisen Idol-Mahjong Final Romance 2 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, fromancr, 0, fromancr, fromanc2, fromanc2_state, fromanc2, ROT0, "Video System Co.", "Taisen Mahjong Final Romance R (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, fromanc4, 0, fromanc4, fromanc4, fromanc2_state, fromanc4, ROT0, "Video System Co.", "Taisen Mahjong Final Romance 4 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, fromancr, 0, fromancr, fromanc2, fromanc2_state, fromanc2, ROT0, "Video System Co.", "Taisen Mahjong Final Romance R (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, fromanc4, 0, fromanc4, fromanc4, fromanc2_state, fromanc4, ROT0, "Video System Co.", "Taisen Mahjong Final Romance 4 (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fromance.cpp b/src/mame/drivers/fromance.cpp index 90bfaeefab9..c4c2fc687da 100644 --- a/src/mame/drivers/fromance.cpp +++ b/src/mame/drivers/fromance.cpp @@ -86,6 +86,7 @@ with the following code: #include "sound/ay8910.h" #include "sound/msm5205.h" #include "sound/ym2413.h" +#include "video/vsystem_gga.h" #include "speaker.h" @@ -307,8 +308,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( nekkyoku_sub_io_map, AS_IO, 8, fromance_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_WRITE(fromance_crtc_data_w) - AM_RANGE(0x11, 0x11) AM_WRITE(fromance_crtc_register_w) + AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) AM_RANGE(0x12, 0x12) AM_READNOP // unknown AM_RANGE(0xe0, 0xe0) AM_WRITE(fromance_rombank_w) AM_RANGE(0xe1, 0xe1) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w) @@ -321,8 +321,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( idolmj_sub_io_map, AS_IO, 8, fromance_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_WRITE(fromance_crtc_data_w) - AM_RANGE(0x11, 0x11) AM_WRITE(fromance_crtc_register_w) + AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) AM_RANGE(0x12, 0x12) AM_READNOP // unknown AM_RANGE(0x20, 0x20) AM_WRITE(fromance_rombank_w) AM_RANGE(0x21, 0x21) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w) @@ -335,8 +334,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( fromance_sub_io_map, AS_IO, 8, fromance_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_WRITE(fromance_crtc_data_w) - AM_RANGE(0x11, 0x11) AM_WRITE(fromance_crtc_register_w) + AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) AM_RANGE(0x12, 0x12) AM_READNOP // unknown AM_RANGE(0x20, 0x20) AM_WRITE(fromance_rombank_w) AM_RANGE(0x21, 0x21) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w) @@ -904,8 +902,6 @@ MACHINE_START_MEMBER(fromance_state,fromance) MACHINE_RESET_MEMBER(fromance_state,fromance) { - int i; - m_directionflag = 0; m_commanddata = 0; m_portselect = 0; @@ -925,13 +921,9 @@ MACHINE_RESET_MEMBER(fromance_state,fromance) m_scrolly[1] = 0; m_gfxreg = 0; m_flipscreen = 0; - m_crtc_register = 0; - - for (i = 0; i < 0x10; i++) - m_crtc_data[i] = 0; } -static MACHINE_CONFIG_START( nekkyoku, fromance_state ) +static MACHINE_CONFIG_START( nekkyoku ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6.00 Mhz ? */ @@ -956,6 +948,9 @@ static MACHINE_CONFIG_START( nekkyoku, fromance_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromance) MCFG_PALETTE_ADD("palette", 1024) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w)) + MCFG_VIDEO_START_OVERRIDE(fromance_state,nekkyoku) /* sound hardware */ @@ -966,12 +961,12 @@ static MACHINE_CONFIG_START( nekkyoku, fromance_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(fromance_state, fromance_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( idolmj, fromance_state ) +static MACHINE_CONFIG_START( idolmj ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6.00 Mhz ? */ @@ -996,6 +991,9 @@ static MACHINE_CONFIG_START( idolmj, fromance_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromance) MCFG_PALETTE_ADD("palette", 2048) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w)) + MCFG_VIDEO_START_OVERRIDE(fromance_state,fromance) /* sound hardware */ @@ -1006,12 +1004,12 @@ static MACHINE_CONFIG_START( idolmj, fromance_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(fromance_state, fromance_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fromance, fromance_state ) +static MACHINE_CONFIG_START( fromance ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6.00 Mhz ? */ @@ -1036,6 +1034,9 @@ static MACHINE_CONFIG_START( fromance, fromance_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromance) MCFG_PALETTE_ADD("palette", 2048) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w)) + MCFG_VIDEO_START_OVERRIDE(fromance_state,fromance) /* sound hardware */ @@ -1046,7 +1047,7 @@ static MACHINE_CONFIG_START( fromance, fromance_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(fromance_state, fromance_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -1270,11 +1271,11 @@ ROM_END * *************************************/ -GAME( 1988, nekkyoku, 0, nekkyoku, nekkyoku, driver_device, 0, ROT0, "Video System Co.", "Rettou Juudan Nekkyoku Janshi - Higashi Nippon Hen (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1988, idolmj, 0, idolmj, idolmj, driver_device, 0, ROT0, "System Service", "Idol-Mahjong Housoukyoku (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mjnatsu, 0, fromance, mjnatsu, driver_device, 0, ROT0, "Video System Co.", "Mahjong Natsu Monogatari (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, natsuiro, mjnatsu, fromance, mjnatsu, driver_device, 0, ROT0, "Video System Co.", "Natsuiro Mahjong (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mfunclub, 0, fromance, mjnatsu, driver_device, 0, ROT0, "Video System Co.", "Mahjong Fun Club - Idol Saizensen (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, daiyogen, 0, fromance, daiyogen, driver_device, 0, ROT0, "Video System Co.", "Mahjong Daiyogen (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, nmsengen, 0, fromance, nmsengen, driver_device, 0, ROT0, "Video System Co.", "Nekketsu Mahjong Sengen! AFTER 5 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, fromance, 0, fromance, fromance, driver_device, 0, ROT0, "Video System Co.", "Idol-Mahjong Final Romance (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, nekkyoku, 0, nekkyoku, nekkyoku, fromance_state, 0, ROT0, "Video System Co.", "Rettou Juudan Nekkyoku Janshi - Higashi Nippon Hen (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1988, idolmj, 0, idolmj, idolmj, fromance_state, 0, ROT0, "System Service", "Idol-Mahjong Housoukyoku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mjnatsu, 0, fromance, mjnatsu, fromance_state, 0, ROT0, "Video System Co.", "Mahjong Natsu Monogatari (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, natsuiro, mjnatsu, fromance, mjnatsu, fromance_state, 0, ROT0, "Video System Co.", "Natsuiro Mahjong (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mfunclub, 0, fromance, mjnatsu, fromance_state, 0, ROT0, "Video System Co.", "Mahjong Fun Club - Idol Saizensen (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, daiyogen, 0, fromance, daiyogen, fromance_state, 0, ROT0, "Video System Co.", "Mahjong Daiyogen (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, nmsengen, 0, fromance, nmsengen, fromance_state, 0, ROT0, "Video System Co.", "Nekketsu Mahjong Sengen! AFTER 5 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, fromance, 0, fromance, fromance, fromance_state, 0, ROT0, "Video System Co.", "Idol-Mahjong Final Romance (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fruitpc.cpp b/src/mame/drivers/fruitpc.cpp index f5c5ad4cd3a..83db1e1ef05 100644 --- a/src/mame/drivers/fruitpc.cpp +++ b/src/mame/drivers/fruitpc.cpp @@ -27,13 +27,13 @@ class fruitpc_state : public pcat_base_state { public: fruitpc_state(const machine_config &mconfig, device_type type, const char *tag) - : pcat_base_state(mconfig, type, tag), - m_isabus(*this, "isa"), - m_inp1(*this, "INP1"), - m_inp2(*this, "INP2"), - m_inp3(*this, "INP3"), - m_inp4(*this, "INP4") - { } + : pcat_base_state(mconfig, type, tag) + , m_isabus(*this, "isa") + , m_inp1(*this, "INP1") + , m_inp2(*this, "INP2") + , m_inp3(*this, "INP3") + , m_inp4(*this, "INP4") + { } required_device m_isabus; required_ioport m_inp1; @@ -122,7 +122,7 @@ static MACHINE_CONFIG_FRAGMENT( fruitpc_sb_conf ) MCFG_DEVICE_SLOT_INTERFACE(pc_joysticks, nullptr, true) // remove joystick MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fruitpc, fruitpc_state ) +static MACHINE_CONFIG_START( fruitpc ) MCFG_CPU_ADD("maincpu", I486, 66000000) // ST STPCD0166BTC3 66 MHz 486 CPU MCFG_CPU_PROGRAM_MAP(fruitpc_map) MCFG_CPU_IO_MAP(fruitpc_io) @@ -164,7 +164,7 @@ ROM_START( fruitpc ) DISK_IMAGE( "fruit", 0,SHA1(df250ff06a97fa141a4144034f7035ac2947c53c) ) ROM_END -GAME( 2006, fruitpc, 0, fruitpc, fruitpc, driver_device, 0, ROT0, "", "Fruit Land", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2006, fruitpc, 0, fruitpc, fruitpc, fruitpc_state, 0, ROT0, "", "Fruit Land", MACHINE_IMPERFECT_GRAPHICS ) // this doesn't really belong here, but is some kind of x86 pc-like hardware, exact CPU type etc. unknown // hardware ia by Paokai, motherboard has logos, large chip with logo too, http://www.paokai.com.tw/ @@ -176,4 +176,4 @@ ROM_START( gogostrk ) DISK_IMAGE( "ggs-5-2-07", 0,SHA1(f214fd39ec8ac02f008823f4b179ea6c6835e1b8) ) ROM_END -GAME( 2007, gogostrk, 0, fruitpc, fruitpc, driver_device, 0, ROT0, "American Alpha / Paokai", "Go Go Strike", MACHINE_NOT_WORKING ) // motherboard is dated 2006, if the CF card string is a date it's 2007 +GAME( 2007, gogostrk, 0, fruitpc, fruitpc, fruitpc_state, 0, ROT0, "American Alpha / Paokai", "Go Go Strike", MACHINE_NOT_WORKING ) // motherboard is dated 2006, if the CF card string is a date it's 2007 diff --git a/src/mame/drivers/ft68m.cpp b/src/mame/drivers/ft68m.cpp index 953ba0d28d1..2cf43e58d92 100644 --- a/src/mame/drivers/ft68m.cpp +++ b/src/mame/drivers/ft68m.cpp @@ -30,14 +30,17 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ16_MEMBER(keyin_r); DECLARE_READ16_MEMBER(status_r); DECLARE_READ16_MEMBER(switches_r); + private: uint8_t m_term_data; virtual void machine_reset() override; + required_shared_ptr m_p_base; + required_device m_maincpu; required_device m_terminal; }; @@ -88,12 +91,12 @@ void ft68m_state::machine_reset() m_maincpu->reset(); } -WRITE8_MEMBER( ft68m_state::kbd_put ) +void ft68m_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( ft68m, ft68m_state ) +static MACHINE_CONFIG_START( ft68m ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_19_6608MHz / 2) @@ -101,7 +104,7 @@ static MACHINE_CONFIG_START( ft68m, ft68m_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ft68m_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ft68m_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -124,5 +127,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, ft68m, 0, 0, ft68m, ft68m, driver_device, 0, "Forward Technology", "FT-68M", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 198?, ft68m, 0, 0, ft68m, ft68m, ft68m_state, 0, "Forward Technology", "FT-68M", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/fungames.cpp b/src/mame/drivers/fungames.cpp index ac526d7153c..5f9ab905536 100644 --- a/src/mame/drivers/fungames.cpp +++ b/src/mame/drivers/fungames.cpp @@ -47,7 +47,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -90,7 +90,7 @@ void fungames_state::video_start() { } -static MACHINE_CONFIG_START( fungames, fungames_state ) +static MACHINE_CONFIG_START( fungames ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -134,5 +134,5 @@ ROM_START( take5 ) ROM_END -GAME( 1976, biplane4, 0, fungames, 0, driver_device, 0, ROT0, "Fun Games", "Biplane 4 [TTL]", MACHINE_IS_SKELETON ) -GAME( 1975, take5, 0, fungames, 0, driver_device, 0, ROT0, "Fun Games", "Take 5 [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, biplane4, 0, fungames, 0, fungames_state, 0, ROT0, "Fun Games", "Biplane 4 [TTL]", MACHINE_IS_SKELETON ) +GAME( 1975, take5, 0, fungames, 0, fungames_state, 0, ROT0, "Fun Games", "Take 5 [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/funkball.cpp b/src/mame/drivers/funkball.cpp index 66940c5843c..bd0bc704f68 100644 --- a/src/mame/drivers/funkball.cpp +++ b/src/mame/drivers/funkball.cpp @@ -764,7 +764,7 @@ void funkball_state::machine_reset() m_voodoo_pci_regs.base_addr = 0xff000000; } -static MACHINE_CONFIG_START( funkball, funkball_state ) +static MACHINE_CONFIG_START( funkball ) MCFG_CPU_ADD("maincpu", MEDIAGX, 66666666*3.5) // 66,6 MHz x 3.5 MCFG_CPU_PROGRAM_MAP(funkball_map) MCFG_CPU_IO_MAP(funkball_io) @@ -783,7 +783,7 @@ static MACHINE_CONFIG_START( funkball, funkball_state ) MCFG_DEVICE_PROGRAM_MAP(flashbank_map) MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(32) - MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(64) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(32) MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000) /* video hardware */ @@ -822,4 +822,4 @@ ROM_START( funkball ) ROM_END -GAME(1998, funkball, 0, funkball, funkball, driver_device, 0, ROT0, "dgPIX Entertainment Inc.", "Funky Ball", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1998, funkball, 0, funkball, funkball, funkball_state, 0, ROT0, "dgPIX Entertainment Inc.", "Funky Ball", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/funkybee.cpp b/src/mame/drivers/funkybee.cpp index 3f237c9c38c..b92d57baf76 100644 --- a/src/mame/drivers/funkybee.cpp +++ b/src/mame/drivers/funkybee.cpp @@ -282,7 +282,7 @@ void funkybee_state::machine_reset() m_gfx_bank = 0; } -static MACHINE_CONFIG_START( funkybee, funkybee_state ) +static MACHINE_CONFIG_START( funkybee ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3072000) /* 3.072 MHz */ @@ -419,7 +419,7 @@ ROM_START( skylancre ) ROM_LOAD( "18s030.1a", 0x0000, 0x0020, CRC(e645bacb) SHA1(5f4c299c4cf165fd229731c0e5799a34892bf28e) ) ROM_END -GAME( 1982, funkybee, 0, funkybee, funkybee, driver_device, 0, ROT90, "Orca", "Funky Bee", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, funkybeeb, funkybee, funkybee, funkybeeb, driver_device,0, ROT90, "bootleg", "Funky Bee (bootleg, harder)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, skylancr, 0, funkybee, skylancr, driver_device, 0, ROT90, "Orca", "Sky Lancer", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, skylancre, skylancr, funkybee, skylancre, driver_device,0, ROT90, "Orca (Esco Trading Co license)", "Sky Lancer (Esco Trading Co license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, funkybee, 0, funkybee, funkybee, funkybee_state, 0, ROT90, "Orca", "Funky Bee", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, funkybeeb, funkybee, funkybee, funkybeeb, funkybee_state, 0, ROT90, "bootleg", "Funky Bee (bootleg, harder)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, skylancr, 0, funkybee, skylancr, funkybee_state, 0, ROT90, "Orca", "Sky Lancer", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, skylancre, skylancr, funkybee, skylancre, funkybee_state, 0, ROT90, "Orca (Esco Trading Co license)", "Sky Lancer (Esco Trading Co license)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/funkyjet.cpp b/src/mame/drivers/funkyjet.cpp index d3e6b4476ae..c93ded46258 100644 --- a/src/mame/drivers/funkyjet.cpp +++ b/src/mame/drivers/funkyjet.cpp @@ -310,7 +310,7 @@ void funkyjet_state::machine_start() { } -static MACHINE_CONFIG_START( funkyjet, funkyjet_state ) +static MACHINE_CONFIG_START( funkyjet ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_28MHz/2) /* 28 MHz crystal */ @@ -365,7 +365,7 @@ static MACHINE_CONFIG_START( funkyjet, funkyjet_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki", XTAL_28MHz/28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_28MHz/28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END diff --git a/src/mame/drivers/funtech.cpp b/src/mame/drivers/funtech.cpp index dcd6263c6db..1ecd23625dd 100644 --- a/src/mame/drivers/funtech.cpp +++ b/src/mame/drivers/funtech.cpp @@ -484,7 +484,7 @@ void fun_tech_corp_state::machine_reset() { } -static MACHINE_CONFIG_START( funtech, fun_tech_corp_state ) +static MACHINE_CONFIG_START( funtech ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */ @@ -530,4 +530,4 @@ ROM_START( fts2in1 ) ROM_LOAD16_BYTE( "u30.bin", 0x00001, 0x20000, CRC(d572bddc) SHA1(06499aeb47085a02af9eb4987ed987f9a3a397f7) ) ROM_END -GAMEL( 1993, fts2in1, 0, funtech, funtech, driver_device, 0, ROT0, "Fun Tech Corporation", "Super Two In One", 0, layout_fts2in1 ) +GAMEL( 1993, fts2in1, 0, funtech, funtech, fun_tech_corp_state, 0, ROT0, "Fun Tech Corporation", "Super Two In One", 0, layout_fts2in1 ) diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp index a45cded895f..9db102d1b23 100644 --- a/src/mame/drivers/funworld.cpp +++ b/src/mame/drivers/funworld.cpp @@ -2970,7 +2970,7 @@ MACHINE_RESET_MEMBER(funworld_state, lunapark) * Machine Drivers * **************************/ -static MACHINE_CONFIG_START( fw1stpal, funworld_state ) +static MACHINE_CONFIG_START( fw1stpal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65SC02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(funworld_map) @@ -6897,90 +6897,90 @@ DRIVER_INIT_MEMBER(funworld_state, rcdinch) /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ // Jolly Card based... -GAMEL( 1985, jollycrd, 0, fw1stpal, funworld, driver_device, 0, ROT0, "TAB Austria", "Jolly Card (Austrian, set 1)", 0, layout_jollycrd ) -GAMEL( 1985, jollycrda, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "TAB Austria", "Jolly Card (Austrian, set 2)", 0, layout_jollycrd ) -GAMEL( 1985, jolyc3x3, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "TAB Austria", "Jolly Card (3x3 deal)", 0, layout_jollycrd ) -GAMEL( 1993, jolycmzs, jollycrd, cuoreuno, jolyc980, driver_device, 0, ROT0, "MZS Tech", "Jolly Card Professional 2.0 (MZS Tech)", 0, layout_jollycrd ) -GAMEL( 2000, jolyc980, jollycrd, cuoreuno, jolyc980, driver_device, 0, ROT0, "Spale Soft", "Jolly Card Professional 2.0 (Spale Soft)", 0, layout_jollycrd ) -GAMEL( 1998, jolycdev, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "TAB Austria / Evona Electronic", "Jolly Card (Evona Electronic)", 0, layout_jollycrd ) -GAMEL( 1985, jolyccra, jollycrd, cuoreuno, jolycdcr, driver_device, 0, ROT0, "TAB Austria", "Jolly Card (Croatian, set 1)", 0, layout_jollycrd ) -GAMEL( 1993, jolyccrb, jollycrd, cuoreuno, jolycdcr, driver_device, 0, ROT0, "Soft Design", "Jolly Card (Croatian, set 2)", 0, layout_jollycrd ) -GAMEL( 1985, sjcd2kx3, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "M.P.", "Super Joly 2000 - 3x", 0, layout_jollycrd ) -GAME( 1986, jolycdab, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "Inter Games", "Jolly Card (Austrian, Fun World, bootleg)", MACHINE_NOT_WORKING ) +GAMEL( 1985, jollycrd, 0, fw1stpal, funworld, funworld_state, 0, ROT0, "TAB Austria", "Jolly Card (Austrian, set 1)", 0, layout_jollycrd ) +GAMEL( 1985, jollycrda, jollycrd, fw1stpal, funworld, funworld_state, 0, ROT0, "TAB Austria", "Jolly Card (Austrian, set 2)", 0, layout_jollycrd ) +GAMEL( 1985, jolyc3x3, jollycrd, fw1stpal, funworld, funworld_state, 0, ROT0, "TAB Austria", "Jolly Card (3x3 deal)", 0, layout_jollycrd ) +GAMEL( 1993, jolycmzs, jollycrd, cuoreuno, jolyc980, funworld_state, 0, ROT0, "MZS Tech", "Jolly Card Professional 2.0 (MZS Tech)", 0, layout_jollycrd ) +GAMEL( 2000, jolyc980, jollycrd, cuoreuno, jolyc980, funworld_state, 0, ROT0, "Spale Soft", "Jolly Card Professional 2.0 (Spale Soft)", 0, layout_jollycrd ) +GAMEL( 1998, jolycdev, jollycrd, fw1stpal, funworld, funworld_state, 0, ROT0, "TAB Austria / Evona Electronic", "Jolly Card (Evona Electronic)", 0, layout_jollycrd ) +GAMEL( 1985, jolyccra, jollycrd, cuoreuno, jolycdcr, funworld_state, 0, ROT0, "TAB Austria", "Jolly Card (Croatian, set 1)", 0, layout_jollycrd ) +GAMEL( 1993, jolyccrb, jollycrd, cuoreuno, jolycdcr, funworld_state, 0, ROT0, "Soft Design", "Jolly Card (Croatian, set 2)", 0, layout_jollycrd ) +GAMEL( 1985, sjcd2kx3, jollycrd, fw1stpal, funworld, funworld_state, 0, ROT0, "M.P.", "Super Joly 2000 - 3x", 0, layout_jollycrd ) +GAME( 1986, jolycdab, jollycrd, fw1stpal, funworld, funworld_state, 0, ROT0, "Inter Games", "Jolly Card (Austrian, Fun World, bootleg)", MACHINE_NOT_WORKING ) GAMEL( 1992, jolycdsp, jollycrd, cuoreuno, jolycdit, funworld_state, ctunk, ROT0, "TAB Austria", "Jolly Card (Spanish, blue TAB board, encrypted)", 0, layout_royalcrd ) -GAMEL( 1990, jolycdid, jollycrd, cuoreuno, jolycdcr, driver_device, 0, ROT0, "bootleg", "Jolly Card (Italian, different colors, set 1)", 0, layout_jollycrd ) // italian, CPLD, different colors. -GAMEL( 1990, jolycdie, jollycrd, cuoreuno, jolycdib, driver_device, 0, ROT0, "bootleg", "Jolly Card (Italian, different colors, set 2)", 0, layout_jollycrd ) // not from TAB blue PCB +GAMEL( 1990, jolycdid, jollycrd, cuoreuno, jolycdcr, funworld_state, 0, ROT0, "bootleg", "Jolly Card (Italian, different colors, set 1)", 0, layout_jollycrd ) // italian, CPLD, different colors. +GAMEL( 1990, jolycdie, jollycrd, cuoreuno, jolycdib, funworld_state, 0, ROT0, "bootleg", "Jolly Card (Italian, different colors, set 2)", 0, layout_jollycrd ) // not from TAB blue PCB // Bonus Card based... -GAMEL( 1986, bonuscrd, 0, fw2ndpal, bonuscrd, driver_device, 0, ROT0, "Fun World", "Bonus Card (Austrian)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background -GAMEL( 1986, bonuscrda, bonuscrd, fw2ndpal, bonuscrd, driver_device, 0, ROT0, "Fun World", "Bonus Card (Austrian, ATG Electronic hack)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background -GAMEL( 1986, bigdeal, bonuscrd, fw2ndpal, bigdeal, driver_device, 0, ROT0, "Fun World", "Big Deal (Hungarian, set 1)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) -GAMEL( 1986, bigdealb, bonuscrd, fw2ndpal, bigdeal, driver_device, 0, ROT0, "Fun World", "Big Deal (Hungarian, set 2)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) +GAMEL( 1986, bonuscrd, 0, fw2ndpal, bonuscrd, funworld_state, 0, ROT0, "Fun World", "Bonus Card (Austrian)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background +GAMEL( 1986, bonuscrda, bonuscrd, fw2ndpal, bonuscrd, funworld_state, 0, ROT0, "Fun World", "Bonus Card (Austrian, ATG Electronic hack)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background +GAMEL( 1986, bigdeal, bonuscrd, fw2ndpal, bigdeal, funworld_state, 0, ROT0, "Fun World", "Big Deal (Hungarian, set 1)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) +GAMEL( 1986, bigdealb, bonuscrd, fw2ndpal, bigdeal, funworld_state, 0, ROT0, "Fun World", "Big Deal (Hungarian, set 2)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) // CMC Italian jamma PCB's... -GAMEL( 1996, cuoreuno, 0, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Cuore 1 (Italian)", 0, layout_jollycrd ) -GAMEL( 1997, elephfam, 0, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Elephant Family (Italian, new)", 0, layout_jollycrd ) -GAMEL( 1996, elephfmb, elephfam, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Elephant Family (Italian, old)", 0, layout_jollycrd ) -GAMEL( 1996, pool10, 0, cuoreuno, pool10, driver_device, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 1)", 0, layout_jollycrd ) -GAMEL( 1996, pool10b, pool10, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 2)", 0, layout_jollycrd ) -GAMEL( 1996, pool10c, pool10, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 3)", 0, layout_jollycrd ) -GAMEL( 1997, pool10d, pool10, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 4)", 0, layout_jollycrd ) -GAMEL( 1997, pool10f, pool10, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 5)", 0, layout_jollycrd ) -GAMEL( 1996, pool10g, pool10, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 6)", 0, layout_jollycrd ) -GAMEL( 1996, pool10h, pool10, cuoreuno, pool10, driver_device, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 7)", 0, layout_jollycrd ) -GAMEL( 1997, pool10i, pool10, cuoreuno, pool10, driver_device, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 8)", 0, layout_jollycrd ) -GAMEL( 2001, royal, pool10, royalcd1, royal, driver_device, 0, ROT0, "", "Royal (Pool 10 hack)", 0, layout_jollycrd ) -GAMEL( 1997, tortufam, 0, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Tortuga Family (Italian)", 0, layout_jollycrd ) -GAMEL( 1996, potgame, 0, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Pot Game (Italian)", 0, layout_jollycrd ) -GAMEL( 1996, bottle10, 0, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Bottle 10 (Italian, set 1)", 0, layout_jollycrd ) -GAMEL( 1996, bottl10b, bottle10, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Bottle 10 (Italian, set 2)", 0, layout_jollycrd ) -GAMEL( 1998, lunapark, 0, lunapark, lunapark, driver_device, 0, ROT0, "", "Luna Park (set 1, dual program)", 0, layout_jollycrd ) // mirrored video RAM (4000/5000 to 6000/7000). -GAMEL( 1998, lunaparkb, lunapark, lunapark, lunapark, driver_device, 0, ROT0, "", "Luna Park (set 2, dual program)", 0, layout_jollycrd ) // mirrored video RAM (4000/5000 to 6000/7000). -GAMEL( 1998, lunaparkc, lunapark, cuoreuno, cuoreuno, driver_device, 0, ROT0, "", "Luna Park (set 3)", 0, layout_jollycrd ) // regular video RAM 6000/7000. -GAMEL( 1998, crystal, 0, cuoreuno, cuoreuno, driver_device, 0, ROT0, "J.C.D. srl", "Crystal Colours (CMC hardware)", 0, layout_jollycrd ) +GAMEL( 1996, cuoreuno, 0, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Cuore 1 (Italian)", 0, layout_jollycrd ) +GAMEL( 1997, elephfam, 0, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Elephant Family (Italian, new)", 0, layout_jollycrd ) +GAMEL( 1996, elephfmb, elephfam, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Elephant Family (Italian, old)", 0, layout_jollycrd ) +GAMEL( 1996, pool10, 0, cuoreuno, pool10, funworld_state, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 1)", 0, layout_jollycrd ) +GAMEL( 1996, pool10b, pool10, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 2)", 0, layout_jollycrd ) +GAMEL( 1996, pool10c, pool10, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 3)", 0, layout_jollycrd ) +GAMEL( 1997, pool10d, pool10, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 4)", 0, layout_jollycrd ) +GAMEL( 1997, pool10f, pool10, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 5)", 0, layout_jollycrd ) +GAMEL( 1996, pool10g, pool10, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 6)", 0, layout_jollycrd ) +GAMEL( 1996, pool10h, pool10, cuoreuno, pool10, funworld_state, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 7)", 0, layout_jollycrd ) +GAMEL( 1997, pool10i, pool10, cuoreuno, pool10, funworld_state, 0, ROT0, "C.M.C.", "Pool 10 (Italian, set 8)", 0, layout_jollycrd ) +GAMEL( 2001, royal, pool10, royalcd1, royal, funworld_state, 0, ROT0, "", "Royal (Pool 10 hack)", 0, layout_jollycrd ) +GAMEL( 1997, tortufam, 0, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Tortuga Family (Italian)", 0, layout_jollycrd ) +GAMEL( 1996, potgame, 0, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Pot Game (Italian)", 0, layout_jollycrd ) +GAMEL( 1996, bottle10, 0, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Bottle 10 (Italian, set 1)", 0, layout_jollycrd ) +GAMEL( 1996, bottl10b, bottle10, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "C.M.C.", "Bottle 10 (Italian, set 2)", 0, layout_jollycrd ) +GAMEL( 1998, lunapark, 0, lunapark, lunapark, funworld_state, 0, ROT0, "", "Luna Park (set 1, dual program)", 0, layout_jollycrd ) // mirrored video RAM (4000/5000 to 6000/7000). +GAMEL( 1998, lunaparkb, lunapark, lunapark, lunapark, funworld_state, 0, ROT0, "", "Luna Park (set 2, dual program)", 0, layout_jollycrd ) // mirrored video RAM (4000/5000 to 6000/7000). +GAMEL( 1998, lunaparkc, lunapark, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "", "Luna Park (set 3)", 0, layout_jollycrd ) // regular video RAM 6000/7000. +GAMEL( 1998, crystal, 0, cuoreuno, cuoreuno, funworld_state, 0, ROT0, "J.C.D. srl", "Crystal Colours (CMC hardware)", 0, layout_jollycrd ) // Royal Card based... -GAMEL( 1991, royalcrd, 0, royalcd2, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 1)", 0, layout_jollycrd ) -GAMEL( 1991, royalcrda, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 2)", 0, layout_jollycrd ) -GAMEL( 1991, royalcrdb, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian/Polish, set 3)", 0, layout_jollycrd ) -GAMEL( 1991, royalcrdc, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 4)", MACHINE_IMPERFECT_GRAPHICS, layout_jollycrd ) -GAMEL( 1991, royalcrdd, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 5)", 0, layout_royalcrd ) -GAMEL( 1991, royalcrde, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 6)", 0, layout_jollycrd ) -GAMEL( 1991, royalcrdt, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (TAB original)", 0, layout_jollycrd ) +GAMEL( 1991, royalcrd, 0, royalcd2, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 1)", 0, layout_jollycrd ) +GAMEL( 1991, royalcrda, royalcrd, royalcd2, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 2)", 0, layout_jollycrd ) +GAMEL( 1991, royalcrdb, royalcrd, royalcd1, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Royal Card (Austrian/Polish, set 3)", 0, layout_jollycrd ) +GAMEL( 1991, royalcrdc, royalcrd, royalcd2, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 4)", MACHINE_IMPERFECT_GRAPHICS, layout_jollycrd ) +GAMEL( 1991, royalcrdd, royalcrd, royalcd1, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 5)", 0, layout_royalcrd ) +GAMEL( 1991, royalcrde, royalcrd, royalcd1, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 6)", 0, layout_jollycrd ) +GAMEL( 1991, royalcrdt, royalcrd, royalcd1, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Royal Card (TAB original)", 0, layout_jollycrd ) GAME( 1991, royalcrdf, royalcrd, royalcd1, royalcrd, funworld_state, royalcdc, ROT0, "Evona Electronic","Royal Card (Slovak, encrypted)", MACHINE_NOT_WORKING ) -GAMEL( 1990, royalcrdg, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "bootleg", "Royal Card (Austrian, set 7, CMC C1030 HW)", 0, layout_jollycrd ) // big CPLD -GAMEL( 1991, royalcrdh, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 8)", 0 , layout_jollycrd ) -GAMEL( 1991, royalcdfr, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (French)", 0, layout_jollycrd ) -GAME( 1993, royalcrdp, royalcrd, cuoreuno, royalcrd, driver_device, 0, ROT0, "Digital Dreams", "Royal Card v2.0 Professional", 0 ) -GAMEL( 199?, witchryl, 0, witchryl, witchryl, driver_device, 0, ROT0, "Video Klein", "Witch Royal (Export version 2.1)", 0, layout_jollycrd ) +GAMEL( 1990, royalcrdg, royalcrd, royalcd1, royalcrd, funworld_state, 0, ROT0, "bootleg", "Royal Card (Austrian, set 7, CMC C1030 HW)", 0, layout_jollycrd ) // big CPLD +GAMEL( 1991, royalcrdh, royalcrd, royalcd2, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 8)", 0 , layout_jollycrd ) +GAMEL( 1991, royalcdfr, royalcrd, royalcd1, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Royal Card (French)", 0, layout_jollycrd ) +GAME( 1993, royalcrdp, royalcrd, cuoreuno, royalcrd, funworld_state, 0, ROT0, "Digital Dreams", "Royal Card v2.0 Professional", 0 ) +GAMEL( 199?, witchryl, 0, witchryl, witchryl, funworld_state, 0, ROT0, "Video Klein", "Witch Royal (Export version 2.1)", 0, layout_jollycrd ) // Lucky Lady based... -GAMEL( 1991, lluck3x3, royalcrd, cuoreuno, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Lucky Lady (3x3 deal)", 0, layout_jollycrd ) -GAMEL( 1991, lluck4x1, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Lucky Lady (4x1 aces)", 0, layout_jollycrd ) +GAMEL( 1991, lluck3x3, royalcrd, cuoreuno, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Lucky Lady (3x3 deal)", 0, layout_jollycrd ) +GAMEL( 1991, lluck4x1, royalcrd, royalcd1, royalcrd, funworld_state, 0, ROT0, "TAB Austria", "Lucky Lady (4x1 aces)", 0, layout_jollycrd ) // Magic Card 2 based... -GAMEL( 1996, magicrd2, 0, magicrd2, magicrd2, driver_device, 0, ROT0, "Impera", "Magic Card II (Bulgarian)", 0, layout_jollycrd ) -GAMEL( 1996, magicrd2a, magicrd2, magicrd2, magicrd2, driver_device, 0, ROT0, "Impera", "Magic Card II (Nov, Yugoslavian)", 0, layout_jollycrd ) +GAMEL( 1996, magicrd2, 0, magicrd2, magicrd2, funworld_state, 0, ROT0, "Impera", "Magic Card II (Bulgarian)", 0, layout_jollycrd ) +GAMEL( 1996, magicrd2a, magicrd2, magicrd2, magicrd2, funworld_state, 0, ROT0, "Impera", "Magic Card II (Nov, Yugoslavian)", 0, layout_jollycrd ) GAME( 1996, magicrd2b, magicrd2, magicrd2, magicrd2, funworld_state, magicd2b, ROT0, "Impera", "Magic Card II (green TAB or Impera board)", 0 ) GAME( 1996, magicrd2c, magicrd2, magicrd2, magicrd2, funworld_state, magicd2c, ROT0, "Impera", "Magic Card II (blue TAB board, encrypted)", 0 ) // Joker Card based... -GAMEL( 1993, vegasslw, 0, fw2ndpal, vegasslw, driver_device, 0, ROT0, "Fun World", "Royal Vegas Joker Card (slow deal)", 0, layout_jollycrd ) -GAMEL( 1993, vegasfst, vegasslw, fw2ndpal, vegasfst, driver_device, 0, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal)", 0, layout_jollycrd ) -GAMEL( 1993, vegasfte, vegasslw, fw2ndpal, vegasfte, driver_device, 0, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal, English gfx)", 0, layout_jollycrd ) -GAMEL( 1993, vegasmil, vegasslw, fw2ndpal, vegasmil, driver_device, 0, ROT0, "Mile", "Royal Vegas Joker Card (fast deal, Mile)", 0, layout_jollycrd ) +GAMEL( 1993, vegasslw, 0, fw2ndpal, vegasslw, funworld_state, 0, ROT0, "Fun World", "Royal Vegas Joker Card (slow deal)", 0, layout_jollycrd ) +GAMEL( 1993, vegasfst, vegasslw, fw2ndpal, vegasfst, funworld_state, 0, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal)", 0, layout_jollycrd ) +GAMEL( 1993, vegasfte, vegasslw, fw2ndpal, vegasfte, funworld_state, 0, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal, English gfx)", 0, layout_jollycrd ) +GAMEL( 1993, vegasmil, vegasslw, fw2ndpal, vegasmil, funworld_state, 0, ROT0, "Mile", "Royal Vegas Joker Card (fast deal, Mile)", 0, layout_jollycrd ) // Jolly Joker based... -GAMEL( 198?, jolyjokr, 0, fw1stpal, funworld, driver_device, 0, ROT0, "Impera", "Jolly Joker (98bet, set 1)", 0, layout_jollycrd ) -GAMEL( 198?, jolyjokra, jolyjokr, fw1stpal, jolyjokra, driver_device, 0, ROT0, "Impera", "Jolly Joker (98bet, set 2)", 0, layout_jollycrd ) -GAMEL( 198?, jolyjokrb, jolyjokr, fw1stpal, funworld, driver_device, 0, ROT0, "Impera", "Jolly Joker (40bet, Croatian hack)", 0, layout_jollycrd ) -GAMEL( 198?, jolyjokrc, jolyjokr, fw1stpal, funworld, driver_device, 0, ROT0, "Apple Time", "Jolly Joker (Apple Time)", MACHINE_NOT_WORKING, layout_jollycrd ) // bad program ROM... +GAMEL( 198?, jolyjokr, 0, fw1stpal, funworld, funworld_state, 0, ROT0, "Impera", "Jolly Joker (98bet, set 1)", 0, layout_jollycrd ) +GAMEL( 198?, jolyjokra, jolyjokr, fw1stpal, jolyjokra, funworld_state, 0, ROT0, "Impera", "Jolly Joker (98bet, set 2)", 0, layout_jollycrd ) +GAMEL( 198?, jolyjokrb, jolyjokr, fw1stpal, funworld, funworld_state, 0, ROT0, "Impera", "Jolly Joker (40bet, Croatian hack)", 0, layout_jollycrd ) +GAMEL( 198?, jolyjokrc, jolyjokr, fw1stpal, funworld, funworld_state, 0, ROT0, "Apple Time", "Jolly Joker (Apple Time)", MACHINE_NOT_WORKING, layout_jollycrd ) // bad program ROM... // Encrypted games... GAME( 1992, multiwin, 0, fw1stpal, funworld, funworld_state, multiwin, ROT0, "Fun World", "Multi Win (Ver.0167, encrypted)", MACHINE_NOT_WORKING ) -GAME( 1993, powercrd, 0, fw2ndpal, funworld, driver_device, 0, ROT0, "Fun World", "Power Card (Ver 0263, encrypted)", MACHINE_NOT_WORKING ) // clone of Bonus Card. -GAME( 1993, megacard, 0, fw2ndpal, funworld, driver_device, 0, ROT0, "Fun World", "Mega Card (Ver.0210, encrypted)", MACHINE_NOT_WORKING ) -GAME( 1993, jokercrd, 0, fw2ndpal, funworld, driver_device, 0, ROT0, "Vesely Svet", "Joker Card (Ver.A267BC, encrypted)", MACHINE_NOT_WORKING ) +GAME( 1993, powercrd, 0, fw2ndpal, funworld, funworld_state, 0, ROT0, "Fun World", "Power Card (Ver 0263, encrypted)", MACHINE_NOT_WORKING ) // clone of Bonus Card. +GAME( 1993, megacard, 0, fw2ndpal, funworld, funworld_state, 0, ROT0, "Fun World", "Mega Card (Ver.0210, encrypted)", MACHINE_NOT_WORKING ) +GAME( 1993, jokercrd, 0, fw2ndpal, funworld, funworld_state, 0, ROT0, "Vesely Svet", "Joker Card (Ver.A267BC, encrypted)", MACHINE_NOT_WORKING ) GAME( 198?, saloon, 0, saloon, saloon, funworld_state, saloon, ROT0, "", "Saloon (French, encrypted)", MACHINE_NOT_WORKING ) // Encrypted TAB blue PCB... @@ -6998,14 +6998,14 @@ GAME( 199?, mongolnw, 0, royalcd1, royalcrd, funworld_state, mongolnw, GAME( 199?, soccernw, 0, royalcd1, royalcrd, funworld_state, soccernw, ROT0, "", "Soccer New (Italian)", MACHINE_UNEMULATED_PROTECTION ) // Other games... -GAME( 198?, funquiz, 0, funquiz, funquiz, driver_device, 0, ROT0, "Fun World / Oehlinger", "Fun World Quiz (Austrian)", 0 ) -GAMEL( 1986, novoplay, 0, fw2ndpal, novoplay, driver_device, 0, ROT0, "Admiral/Novomatic", "Novo Play Multi Card / Club Card", 0, layout_novoplay ) -GAME( 1991, intrgmes, 0, intrgmes, funworld, driver_device, 0, ROT0, "Inter Games", "Unknown Inter Games poker", MACHINE_NOT_WORKING ) -GAMEL( 1985, fw_a7_11, 0, fw_a7_11, funworld, driver_device, 0, ROT0, "Fun World", "Unknown Fun World A7-11 game 1", MACHINE_NOT_WORKING, layout_jollycrd ) -GAMEL( 1985, fw_a7_11a, fw_a7_11, fw_a7_11, funworld, driver_device, 0, ROT0, "Fun World", "Unknown Fun World A7-11 game 2", MACHINE_NOT_WORKING, layout_jollycrd ) -GAMEL( 1991, fw_a0_1, 0, fw_a7_11, funworld, driver_device, 0, ROT0, "Fun World", "Unknown Fun World A0-1 game", MACHINE_NOT_WORKING, layout_jollycrd ) +GAME( 198?, funquiz, 0, funquiz, funquiz, funworld_state, 0, ROT0, "Fun World / Oehlinger", "Fun World Quiz (Austrian)", 0 ) +GAMEL( 1986, novoplay, 0, fw2ndpal, novoplay, funworld_state, 0, ROT0, "Admiral/Novomatic", "Novo Play Multi Card / Club Card", 0, layout_novoplay ) +GAME( 1991, intrgmes, 0, intrgmes, funworld, funworld_state, 0, ROT0, "Inter Games", "Unknown Inter Games poker", MACHINE_NOT_WORKING ) +GAMEL( 1985, fw_a7_11, 0, fw_a7_11, funworld, funworld_state, 0, ROT0, "Fun World", "Unknown Fun World A7-11 game 1", MACHINE_NOT_WORKING, layout_jollycrd ) +GAMEL( 1985, fw_a7_11a, fw_a7_11, fw_a7_11, funworld, funworld_state, 0, ROT0, "Fun World", "Unknown Fun World A7-11 game 2", MACHINE_NOT_WORKING, layout_jollycrd ) +GAMEL( 1991, fw_a0_1, 0, fw_a7_11, funworld, funworld_state, 0, ROT0, "Fun World", "Unknown Fun World A0-1 game", MACHINE_NOT_WORKING, layout_jollycrd ) // These are 2-in-1 stealth boards, they can run the Poker game, or, using completely separate hardware on the same PCB, a NES / MSX Multigames! -GAMEL( 1991, royalcrd_nes, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "bootleg", "Royal Card (stealth with NES multigame)", MACHINE_NOT_WORKING, layout_jollycrd ) -GAMEL( 1991, royalcrd_msx, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "bootleg", "Royal Card (stealth with MSX multigame)", MACHINE_NOT_WORKING, layout_jollycrd ) +GAMEL( 1991, royalcrd_nes, royalcrd, royalcd2, royalcrd, funworld_state, 0, ROT0, "bootleg", "Royal Card (stealth with NES multigame)", MACHINE_NOT_WORKING, layout_jollycrd ) +GAMEL( 1991, royalcrd_msx, royalcrd, royalcd2, royalcrd, funworld_state, 0, ROT0, "bootleg", "Royal Card (stealth with MSX multigame)", MACHINE_NOT_WORKING, layout_jollycrd ) diff --git a/src/mame/drivers/funybubl.cpp b/src/mame/drivers/funybubl.cpp index 2a353ac37b8..66e89082315 100644 --- a/src/mame/drivers/funybubl.cpp +++ b/src/mame/drivers/funybubl.cpp @@ -216,7 +216,7 @@ void funybubl_state::machine_start() } -static MACHINE_CONFIG_START( funybubl, funybubl_state ) +static MACHINE_CONFIG_START( funybubl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6 MHz?? */ @@ -247,7 +247,7 @@ static MACHINE_CONFIG_START( funybubl, funybubl_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -314,5 +314,5 @@ ROM_START( funybublc ) ROM_END -GAME( 1999, funybubl, 0, funybubl, funybubl, driver_device, 0, ROT0, "In Chang Electronic Co", "Funny Bubble", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, funybublc,funybubl, funybubl, funybubl, driver_device, 0, ROT0, "Comad", "Funny Bubble (Comad version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, funybubl, 0, funybubl, funybubl, funybubl_state, 0, ROT0, "In Chang Electronic Co", "Funny Bubble", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, funybublc,funybubl, funybubl, funybubl, funybubl_state, 0, ROT0, "Comad", "Funny Bubble (Comad version)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fuukifg2.cpp b/src/mame/drivers/fuukifg2.cpp index fd9edf74689..9a6f67a37cf 100644 --- a/src/mame/drivers/fuukifg2.cpp +++ b/src/mame/drivers/fuukifg2.cpp @@ -438,7 +438,7 @@ void fuuki16_state::machine_reset() } -static MACHINE_CONFIG_START( fuuki16, fuuki16_state ) +static MACHINE_CONFIG_START( fuuki16 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz / 2) /* 16 MHz */ @@ -478,7 +478,7 @@ static MACHINE_CONFIG_START( fuuki16, fuuki16_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) - MCFG_OKIM6295_ADD("oki", XTAL_32MHz / 32, OKIM6295_PIN7_HIGH) /* 1 Mhz */ + MCFG_OKIM6295_ADD("oki", XTAL_32MHz / 32, PIN7_HIGH) /* 1 Mhz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.85) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.85) MACHINE_CONFIG_END @@ -665,6 +665,6 @@ ROM_END ***************************************************************************/ -GAME( 1995, gogomile, 0, fuuki16, gogomile, driver_device, 0, ROT0, "Fuuki", "Susume! Mile Smile / Go Go! Mile Smile (newer)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, gogomileo, gogomile, fuuki16, gogomileo, driver_device, 0, ROT0, "Fuuki", "Susume! Mile Smile / Go Go! Mile Smile (older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, pbancho, 0, fuuki16, pbancho, driver_device, 0, ROT0, "Fuuki", "Gyakuten!! Puzzle Bancho (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, gogomile, 0, fuuki16, gogomile, fuuki16_state, 0, ROT0, "Fuuki", "Susume! Mile Smile / Go Go! Mile Smile (newer)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, gogomileo, gogomile, fuuki16, gogomileo, fuuki16_state, 0, ROT0, "Fuuki", "Susume! Mile Smile / Go Go! Mile Smile (older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, pbancho, 0, fuuki16, pbancho, fuuki16_state, 0, ROT0, "Fuuki", "Gyakuten!! Puzzle Bancho (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fuukifg3.cpp b/src/mame/drivers/fuukifg3.cpp index 89e1003381a..4d524b7bbd0 100644 --- a/src/mame/drivers/fuukifg3.cpp +++ b/src/mame/drivers/fuukifg3.cpp @@ -546,7 +546,7 @@ void fuuki32_state::machine_reset() } -static MACHINE_CONFIG_START(fuuki32, fuuki32_state) +static MACHINE_CONFIG_START(fuuki32) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, CPU_CLOCK) /* 20MHz verified */ @@ -562,7 +562,7 @@ static MACHINE_CONFIG_START(fuuki32, fuuki32_state) MCFG_SCREEN_SIZE(64 * 8, 32 * 8) MCFG_SCREEN_VISIBLE_AREA(0, 40 * 8 - 1, 0, 30 * 8 - 1) MCFG_SCREEN_UPDATE_DRIVER(fuuki32_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(fuuki32_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(fuuki32_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", fuuki32) @@ -725,7 +725,7 @@ ROM_END ***************************************************************************/ -GAME( 1998, asurabld, 0, fuuki32, asurabld, driver_device, 0, ROT0, "Fuuki", "Asura Blade - Sword of Dynasty (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, asurabld, 0, fuuki32, asurabld, fuuki32_state, 0, ROT0, "Fuuki", "Asura Blade - Sword of Dynasty (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2000, asurabus, 0, fuuki32, asurabus, driver_device, 0, ROT0, "Fuuki", "Asura Buster - Eternal Warriors (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2000, asurabusa, asurabus, fuuki32, asurabusa,driver_device, 0, ROT0, "Fuuki", "Asura Buster - Eternal Warriors (Japan) (ARCADIA review build)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // has pause function on P1 button 4 +GAME( 2000, asurabus, 0, fuuki32, asurabus, fuuki32_state, 0, ROT0, "Fuuki", "Asura Buster - Eternal Warriors (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2000, asurabusa, asurabus, fuuki32, asurabusa,fuuki32_state, 0, ROT0, "Fuuki", "Asura Buster - Eternal Warriors (Japan) (ARCADIA review build)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // has pause function on P1 button 4 diff --git a/src/mame/drivers/g627.cpp b/src/mame/drivers/g627.cpp index 66c0919f050..069c750b811 100644 --- a/src/mame/drivers/g627.cpp +++ b/src/mame/drivers/g627.cpp @@ -286,7 +286,7 @@ WRITE8_MEMBER( g627_state::lamp_w ) } } -static MACHINE_CONFIG_START( g627, g627_state ) +static MACHINE_CONFIG_START( g627 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 14138000/8) MCFG_CPU_PROGRAM_MAP(g627_map) diff --git a/src/mame/drivers/gaelco.cpp b/src/mame/drivers/gaelco.cpp index d073b99ef58..fee5dc06cc1 100644 --- a/src/mame/drivers/gaelco.cpp +++ b/src/mame/drivers/gaelco.cpp @@ -498,7 +498,7 @@ void gaelco_state::machine_start() membank("okibank")->configure_entries(0, 16, memregion("oki")->base(), 0x10000); } -static MACHINE_CONFIG_START( bigkarnk, gaelco_state ) +static MACHINE_CONFIG_START( bigkarnk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* MC68000P10, 10 MHz */ @@ -534,11 +534,11 @@ static MACHINE_CONFIG_START( bigkarnk, gaelco_state ) MCFG_SOUND_ADD("ymsnd", YM3812, 3580000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( maniacsq, gaelco_state ) +static MACHINE_CONFIG_START( maniacsq ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,24000000/2) /* 12 MHz */ @@ -564,12 +564,12 @@ static MACHINE_CONFIG_START( maniacsq, gaelco_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( squash, gaelco_state ) +static MACHINE_CONFIG_START( squash ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* MC68000P12, 12 MHz */ @@ -597,12 +597,12 @@ static MACHINE_CONFIG_START( squash, gaelco_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( thoop, gaelco_state ) +static MACHINE_CONFIG_START( thoop ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* MC68000P12, 12 MHz */ @@ -630,7 +630,7 @@ static MACHINE_CONFIG_START( thoop, gaelco_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -856,9 +856,9 @@ ROM_END * *************************************/ -GAME( 1991, bigkarnk, 0, bigkarnk, bigkarnk, driver_device, 0, ROT0, "Gaelco", "Big Karnak", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, biomtoy, 0, maniacsq, biomtoy, driver_device, 0, ROT0, "Gaelco", "Biomechanical Toy (Ver. 1.0.1885)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, biomtoya, biomtoy, maniacsq, biomtoy, driver_device, 0, ROT0, "Gaelco", "Biomechanical Toy (Ver. 1.0.1884)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, maniacsp, maniacsq, maniacsq, maniacsq, driver_device, 0, ROT0, "Gaelco", "Maniac Square (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, squash, 0, squash, squash, driver_device, 0, ROT0, "Gaelco", "Squash (Ver. 1.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, thoop, 0, thoop, thoop, driver_device, 0, ROT0, "Gaelco", "Thunder Hoop (Ver. 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, bigkarnk, 0, bigkarnk, bigkarnk, gaelco_state, 0, ROT0, "Gaelco", "Big Karnak", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, biomtoy, 0, maniacsq, biomtoy, gaelco_state, 0, ROT0, "Gaelco", "Biomechanical Toy (Ver. 1.0.1885)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, biomtoya, biomtoy, maniacsq, biomtoy, gaelco_state, 0, ROT0, "Gaelco", "Biomechanical Toy (Ver. 1.0.1884)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, maniacsp, maniacsq, maniacsq, maniacsq, gaelco_state, 0, ROT0, "Gaelco", "Maniac Square (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, squash, 0, squash, squash, gaelco_state, 0, ROT0, "Gaelco", "Squash (Ver. 1.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, thoop, 0, thoop, thoop, gaelco_state, 0, ROT0, "Gaelco", "Thunder Hoop (Ver. 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gaelco2.cpp b/src/mame/drivers/gaelco2.cpp index 6e5b3f82fe1..0931650c4bb 100644 --- a/src/mame/drivers/gaelco2.cpp +++ b/src/mame/drivers/gaelco2.cpp @@ -159,7 +159,7 @@ static INPUT_PORTS_START( maniacsq ) PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END -static MACHINE_CONFIG_START( maniacsq, gaelco2_state ) +static MACHINE_CONFIG_START( maniacsq ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 26000000/2) /* 13 MHz? */ MCFG_CPU_PROGRAM_MAP(maniacsq_map) @@ -174,7 +174,7 @@ static MACHINE_CONFIG_START( maniacsq, gaelco2_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", 0x0080000) @@ -292,7 +292,7 @@ static INPUT_PORTS_START( bang ) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, -6.0 / 240, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(2) INPUT_PORTS_END -static MACHINE_CONFIG_START( bang, bang_state ) +static MACHINE_CONFIG_START( bang ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 30000000/2) /* 15 MHz */ MCFG_CPU_PROGRAM_MAP(bang_map) @@ -309,7 +309,7 @@ static MACHINE_CONFIG_START( bang, bang_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", 0x0200000) @@ -531,7 +531,7 @@ static INPUT_PORTS_START( alighunt ) PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END -static MACHINE_CONFIG_START( alighunt, gaelco2_state ) +static MACHINE_CONFIG_START( alighunt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24000000/2) /* 12 MHz */ MCFG_CPU_PROGRAM_MAP(alighunt_map) @@ -546,7 +546,7 @@ static MACHINE_CONFIG_START( alighunt, gaelco2_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", 0x0400000) @@ -767,7 +767,7 @@ static INPUT_PORTS_START( touchgo ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE4 ) PORT_TOGGLE INPUT_PORTS_END -static MACHINE_CONFIG_START( touchgo, gaelco2_state ) +static MACHINE_CONFIG_START( touchgo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 32000000/2) /* 16 MHz */ MCFG_CPU_PROGRAM_MAP(touchgo_map) @@ -793,7 +793,7 @@ static MACHINE_CONFIG_START( touchgo, gaelco2_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2_right) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_VIDEO_START_OVERRIDE(gaelco2_state,gaelco2_dual) @@ -981,7 +981,7 @@ static INPUT_PORTS_START( snowboar ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) INPUT_PORTS_END -static MACHINE_CONFIG_START( snowboar, gaelco2_state ) +static MACHINE_CONFIG_START( snowboar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 30000000/2) /* 15 MHz */ MCFG_CPU_PROGRAM_MAP(snowboar_map) @@ -998,7 +998,7 @@ static MACHINE_CONFIG_START( snowboar, gaelco2_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", 0x0400000) @@ -1218,7 +1218,7 @@ static INPUT_PORTS_START( wrally2 ) PORT_BIT( 0xff, 0x8A, IPT_PADDLE_V ) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(25) PORT_KEYDELTA(25) PORT_REVERSE PORT_NAME("P2 Wheel") INPUT_PORTS_END -static MACHINE_CONFIG_START( wrally2, wrally2_state ) +static MACHINE_CONFIG_START( wrally2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 26000000/2) /* 13 MHz */ MCFG_CPU_PROGRAM_MAP(wrally2_map) @@ -1246,7 +1246,7 @@ static MACHINE_CONFIG_START( wrally2, wrally2_state ) MCFG_SCREEN_SIZE(384, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(gaelco2_state, screen_update_gaelco2_right) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") @@ -1529,17 +1529,17 @@ GAME( 1995, touchgon, touchgo, touchgo, touchgo, gaelco2_state, touchgop, ROT GAME( 1995, touchgoe, touchgo, touchgo, touchgo, gaelco2_state, touchgop, ROT0, "Gaelco", "Touch & Go (earlier revision)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) GAME( 1995, touchgok, touchgo, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (Korea, unprotected)", MACHINE_IMPERFECT_SOUND ) // doesn't say 'Korea' but was sourced there, shows 2 copyright lines like the 'earlier revision' -GAME( 1995, wrally2, 0, wrally2, wrally2, driver_device, 0, ROT0, "Gaelco", "World Rally 2: Twin Racing", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1995, wrally2, 0, wrally2, wrally2, wrally2_state, 0, ROT0, "Gaelco", "World Rally 2: Twin Racing", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1996, maniacsq, 0, maniacsq, maniacsq, driver_device, 0, ROT0, "Gaelco", "Maniac Square (unprotected)", 0 ) +GAME( 1996, maniacsq, 0, maniacsq, maniacsq, gaelco2_state, 0, ROT0, "Gaelco", "Maniac Square (unprotected)", 0 ) GAME( 1996, maniacsqa,maniacsq, maniacsq, maniacsq, gaelco2_state, maniacsqa,ROT0, "Gaelco", "Maniac Square (protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1996, snowboar, 0, snowboar, snowboar, driver_device, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", 0 ) +GAME( 1996, snowboar, 0, snowboar, snowboar, gaelco2_state, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", 0 ) GAME( 1996, snowboara,snowboar, snowboar, snowboar, gaelco2_state, snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", 0 ) GAME( 1998, bang, 0, bang, bang, bang_state, bang, ROT0, "Gaelco", "Bang!", 0 ) GAME( 1998, bangj, bang, bang, bang, bang_state, bang, ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 ) // are these ACTUALLY Gaelco hardware, or do they just use the same Dallas? -GAME( 1999, grtesoro, 0, maniacsq, maniacsq, driver_device, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v5.01) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1999, grtesoro4, grtesoro,maniacsq, maniacsq, driver_device, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v4.0) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1999, grtesoro, 0, maniacsq, maniacsq, gaelco2_state, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v5.01) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1999, grtesoro4, grtesoro,maniacsq, maniacsq, gaelco2_state, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v4.0) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/gaelco3d.cpp b/src/mame/drivers/gaelco3d.cpp index aaa1aaee09a..da3e681a04f 100644 --- a/src/mame/drivers/gaelco3d.cpp +++ b/src/mame/drivers/gaelco3d.cpp @@ -279,7 +279,7 @@ READ16_MEMBER(gaelco3d_state::eeprom_data_r) { /* bit 0 is clock */ /* bit 1 active */ - result &= ~GAELCOSER_EXT_STATUS_MASK; + result &= ~uint32_t(gaelco_serial_device::EXT_STATUS_MASK); result |= m_serial->status_r(space, 0); } @@ -950,7 +950,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( gaelco3d, gaelco3d_state ) +static MACHINE_CONFIG_START( gaelco3d ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 15000000) @@ -1222,6 +1222,38 @@ ROM_START( radikalba ) // ROM_LOAD( "rab.35", 0x0060000, 0x020000, CRC(bbcf6977) SHA1(0282c8ba79c35ed1240711d5812bfb590d151738) ) ROM_END +ROM_START( footbpow ) + ROM_REGION( 0x200000, "maincpu", 0 ) /* 68020 code */ + ROM_LOAD32_BYTE( "fop_7.ic7", 0x000000, 0x80000, CRC(a2d7ec69) SHA1(27e4f3d27882152244c0f9d5a984e0f1bd7b7d3f) ) + ROM_LOAD32_BYTE( "fop_12.ic12", 0x000001, 0x80000, CRC(443caf77) SHA1(2b0c6dccee28fb3caa0b2493f59ddbd29897aed9) ) + ROM_LOAD32_BYTE( "fop_13.ic13", 0x000002, 0x80000, CRC(57723eda) SHA1(09972b09444b6704dcc966033bfab61ea57d0cd0) ) + ROM_LOAD32_BYTE( "fop_19.ic19", 0x000003, 0x80000, CRC(aa59cd2d) SHA1(7cc6edfd0896e4d2c881b16d5ad07361bdeff11d) ) + + ROM_REGION16_LE( 0x400000, "user1", 0 ) /* ADSP-2115 code & data */ + ROM_LOAD( "fop_ic23.ic23", 0x0000000, 0x400000, CRC(3c02f7c6) SHA1(2325f2a1b260ac60929c82640ced481ad67bb2e0) ) + + ROM_REGION32_LE( 0x800000, "user2", 0 ) + ROM_LOAD32_WORD( "fop_ic48.ic48", 0x000000, 0x400000, CRC(09ae0cde) SHA1(30dc06e8f36674986f2271054a9708f7dfdaf485) ) // redumped + ROM_LOAD32_WORD( "fop_ic42.ic42", 0x000002, 0x400000, CRC(da1f9461) SHA1(8b69ceb4221f6231c6eff0645359d6c2ae6d9d96) ) // redumped + + ROM_REGION( 0x2000000, "gfx1", 0 ) + ROM_LOAD( "fop_ic8.ic8", 0x0000000, 0x400000, CRC(eaff30ec) SHA1(63f5d33b98194a206c558f9e02c432e7e05aa0e6) ) + ROM_LOAD( "fop_ic10.ic10", 0x0800000, 0x400000, CRC(536c822b) SHA1(235e96af470785f6cca010782560a4071f285901) ) + ROM_LOAD( "fop_ic15.ic15", 0x1000000, 0x400000, CRC(c8903051) SHA1(b5927a0bbba017d42b98e7850df966cfa9eeb64a) ) + ROM_LOAD( "fop_ic17.ic17", 0x1c00000, 0x400000, CRC(559a38ae) SHA1(e36d596ad90d0f3657d677e3afa984be30c1fa3b) ) // redumped + + ROM_REGION( 0x0080000, "gfx2", 0 ) + ROM_LOAD( "fop_24.ic24", 0x0000000, 0x020000, CRC(3214ae1b) SHA1(3ae2fa28ef603b34b3c72313c513f200e2750b85) ) + ROM_LOAD( "fop_25.ic25", 0x0020000, 0x020000, CRC(69a8734c) SHA1(835db85371d8fbf0c1a2bc0c6109286f12c95794) ) + ROM_LOAD( "fop_26.ic26", 0x0040000, 0x020000, CRC(b5877b68) SHA1(6f6f00da84d6d84895691266c2022fd4cd92f228) ) + ROM_LOAD( "fop_27.ic27", 0x0060000, 0x020000, CRC(58309912) SHA1(eb62ccfd75fc168338d30bc30214e6f9f62e5e70) ) + /* these 4 are copies of the previous 4 */ +// ROM_LOAD( "fop_34.ic34", 0x0000000, 0x020000, CRC(3214ae1b) SHA1(3ae2fa28ef603b34b3c72313c513f200e2750b85) ) +// ROM_LOAD( "fop_35.ic35", 0x0020000, 0x020000, CRC(69a8734c) SHA1(835db85371d8fbf0c1a2bc0c6109286f12c95794) ) +// ROM_LOAD( "fop_36.ic36", 0x0040000, 0x020000, CRC(b5877b68) SHA1(6f6f00da84d6d84895691266c2022fd4cd92f228) ) +// ROM_LOAD( "fop_37.ic37", 0x0060000, 0x020000, CRC(58309912) SHA1(eb62ccfd75fc168338d30bc30214e6f9f62e5e70) ) +ROM_END + /************************************* * @@ -1249,3 +1281,5 @@ GAME( 1997, surfplnt40, surfplnt, gaelco3d, surfplnt, gaelco3d_state, gaelco3d, GAME( 1998, radikalb, 0, gaelco3d2, radikalb, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Radikal Bikers (Version 2.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) GAME( 1998, radikalba, radikalb, gaelco3d2, radikalb, gaelco3d_state, gaelco3d, ROT0, "Gaelco (Atari license)", "Radikal Bikers (Version 2.02, Atari license)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) + +GAME( 2000, footbpow, 0, gaelco3d2, radikalb, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Football Power", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/gaelcopc.cpp b/src/mame/drivers/gaelcopc.cpp new file mode 100644 index 00000000000..90e5459f576 --- /dev/null +++ b/src/mame/drivers/gaelcopc.cpp @@ -0,0 +1,137 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood +/* Gaelco PC based hardware + +TODO: +- tokyocop can't be emulated without proper mb bios + +Custom motherboard with +82815 +82801 +82562 (LAN) +RTM 560-25R (Audio) +TI4200 128Mb AGP +256 Mb PC133 +Pentium 4 (??? XXXXMhz) + +I/O Board with Altera Flex EPF15K50EQC240-3 + +The graphics cards are swappable between nVidia cards from +the era. There is no protection on the games, you can just swap out +hard drives to change games, though they do seem to have their own +motherboard bioses. + +*/ + + +#include "emu.h" +#include "cpu/i386/i386.h" +#include "screen.h" + + +class gaelcopc_state : public driver_device +{ +public: + gaelcopc_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { } + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + +protected: + + // devices + required_device m_maincpu; + + // driver_device overrides + virtual void video_start() override; +}; + + +void gaelcopc_state::video_start() +{ +} + +uint32_t gaelcopc_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +static ADDRESS_MAP_START( gaelcopc_map, AS_PROGRAM, 32, gaelcopc_state ) + AM_RANGE(0x00000000, 0x0001ffff) AM_ROM +ADDRESS_MAP_END + +static INPUT_PORTS_START( gaelcopc ) +INPUT_PORTS_END + + +static MACHINE_CONFIG_START( gaelcopc ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", PENTIUM, 2000000000) /* Pentium4? */ + MCFG_CPU_PROGRAM_MAP(gaelcopc_map) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_UPDATE_DRIVER(gaelcopc_state, screen_update) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(64*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) + MCFG_SCREEN_PALETTE("palette") + + MCFG_PALETTE_ADD("palette", 0x100) +MACHINE_CONFIG_END + + +ROM_START(tokyocop) + ROM_REGION32_LE(0x80000, "maincpu", 0) /* motherboard bios */ + ROM_LOAD("al1.u10", 0x000000, 0x80000, CRC(e426e030) SHA1(52bdb6d46c12150077169ac3add8c450326ad4af) ) + +/* Dumper's note: The drive was ordered from Gaelco and they used a 250 GB drive that apparently used to have something +else on it because when I ripped the entire drive and compressed it, the compressed image was 30 GB which is too much for me +to upload. So I just ripped the partitions (it had 3) and the size was reasonable. This rip was burned into another drive and +tested working on the real hardware. It uses the same hardware and bios as the kit version.*/ + + DISK_REGION( "disks" ) + DISK_IMAGE( "tokyocop", 0, SHA1(f3b60046da7094743822191473e05ee9cbc1af86) ) +ROM_END + +ROM_START(tokyocopk) + ROM_REGION32_LE(0x80000, "maincpu", 0) /* motherboard bios */ + ROM_LOAD("al1.u10", 0x000000, 0x80000, CRC(e426e030) SHA1(52bdb6d46c12150077169ac3add8c450326ad4af) ) + + DISK_REGION( "disks" ) // Maxtor 2F040J0310613 VAM051JJ0 + DISK_IMAGE( "tokyocopk", 0, SHA1(3805e41903719d8ed163f9879db65e71aba2e3e7) ) +ROM_END + +ROM_START(tokyocopi) + ROM_REGION32_LE(0x80000, "maincpu", 0) /* motherboard bios */ + ROM_LOAD("tokyocopi.pcbios", 0x000000, 0x80000, NO_DUMP ) + + DISK_REGION( "disks" ) + DISK_IMAGE( "tokyocopi", 0, SHA1(a3cf011c8ef8ec80724c28e1534191b40ae8515d) ) +ROM_END + +ROM_START(rriders) + ROM_REGION32_LE(0x80000, "maincpu", 0) /* motherboard bios */ + ROM_LOAD("22-03.u10", 0x000000, 0x80000, CRC(0ccae12f) SHA1(a8878fa73d5a4f5e9b6e3f35994fddea08cd3c2d) ) + + DISK_REGION( "disks" ) // 250 MB compact flash card + DISK_IMAGE( "rriders", 0, SHA1(46e10517ee1b383e03c88cac67a54318c227e3e1) ) +ROM_END + +ROM_START(tuningrc) + ROM_REGION32_LE(0x80000, "maincpu", 0) /* motherboard bios */ + ROM_LOAD("310j.u10", 0x000000, 0x80000, CRC(70b0797a) SHA1(696f602e83359d5d36798d4d2962ee85171e3622) ) + + DISK_REGION( "disks" ) // Hitachi HDS728080PLAT20 ATA/IDE + DISK_IMAGE( "tuningrc", 0, SHA1(4055cdc0b0c0e99252b90fbfafc48b693b144d67) ) +ROM_END + + +GAME( 2003, tokyocop, 0, gaelcopc, gaelcopc, gaelcopc_state, 0, ROT0, "Gaelco", "Tokyo Cop (US, dedicated version)", MACHINE_IS_SKELETON ) +GAME( 2003, tokyocopk, tokyocop, gaelcopc, gaelcopc, gaelcopc_state, 0, ROT0, "Gaelco", "Tokyo Cop (US, kit version)", MACHINE_IS_SKELETON ) +GAME( 2003, tokyocopi, tokyocop, gaelcopc, gaelcopc, gaelcopc_state, 0, ROT0, "Gaelco", "Tokyo Cop (Italy)", MACHINE_IS_SKELETON ) +GAME( 2004, rriders, 0, gaelcopc, gaelcopc, gaelcopc_state, 0, ROT0, "Gaelco", "Ring Riders (Software version v2.2)", MACHINE_IS_SKELETON ) +GAME( 2005, tuningrc, 0, gaelcopc, gaelcopc, gaelcopc_state, 0, ROT0, "Gaelco", "Gaelco Championship Tuning Race", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/gaiden.cpp b/src/mame/drivers/gaiden.cpp index e984e8fc034..50fbc7ac9ba 100644 --- a/src/mame/drivers/gaiden.cpp +++ b/src/mame/drivers/gaiden.cpp @@ -742,7 +742,7 @@ static GFXDECODE_START( drgnbowl ) GFXDECODE_END -static MACHINE_CONFIG_START( shadoww, gaiden_state ) +static MACHINE_CONFIG_START( shadoww ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 18432000/2) /* 9.216 MHz */ @@ -801,7 +801,7 @@ static MACHINE_CONFIG_START( shadoww, gaiden_state ) MCFG_SOUND_ROUTE(2, "mono", 0.15) MCFG_SOUND_ROUTE(3, "mono", 0.60) - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MACHINE_CONFIG_END @@ -814,7 +814,7 @@ static MACHINE_CONFIG_DERIVED( raiga, shadoww ) MCFG_GFXDECODE_MODIFY("gfxdecode", raiga) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( drgnbowl, gaiden_state ) +static MACHINE_CONFIG_START( drgnbowl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 20000000/2) /* 10 MHz */ @@ -853,7 +853,7 @@ static MACHINE_CONFIG_START( drgnbowl, gaiden_state ) MCFG_YM2151_ADD("ymsnd", 4000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -936,7 +936,7 @@ static ADDRESS_MAP_START( mastninj_map, AS_PROGRAM, 16, gaiden_state ) // AM_RANGE(0x07a808, 0x07a809) AM_WRITE(gaiden_flip_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( mastninj, gaiden_state ) +static MACHINE_CONFIG_START( mastninj ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz? */ @@ -988,7 +988,7 @@ static MACHINE_CONFIG_START( mastninj, gaiden_state ) MCFG_SOUND_ROUTE(3, "mono", 0.60) /* no OKI on the bootleg */ -// MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) +// MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MACHINE_CONFIG_END @@ -1662,19 +1662,19 @@ DRIVER_INIT_MEMBER(gaiden_state,mastninj) DRIVER_INIT_CALL(shadoww); } -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1988, shadoww, 0, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Shadow Warriors (World, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, shadowwa, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Shadow Warriors (World, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gaiden, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Gaiden (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, ryukendn, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, ryukendna, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mastninj, shadoww, mastninj, common, gaiden_state, mastninj, ROT0, "bootleg", "Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sprites need fixing, sound and yscroll too. - it is confirmed the curtains don't scroll on the pcb -GAME( 1992, drgnbowl, 0, drgnbowl, drgnbowl, gaiden_state, drgnbowl, ROT0, "Nics", "Dragon Bowl (set 1, encrypted program)", MACHINE_SUPPORTS_SAVE ) // Dragon Bowl is based on Ninja Gaiden code -GAME( 1992, drgnbowla, drgnbowl, drgnbowl, drgnbowl, gaiden_state, drgnbowla,ROT0, "Nics", "Dragon Bowl (set 2, unencrypted program)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1989, wildfang, 0, shadoww, wildfang, gaiden_state, wildfang, ROT0, "Tecmo", "Wild Fang / Tecmo Knight", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wildfangs, wildfang, shadoww, tknight, gaiden_state, wildfang, ROT0, "Tecmo", "Wild Fang", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tknight, wildfang, shadoww, tknight, gaiden_state, wildfang, ROT0, "Tecmo", "Tecmo Knight", MACHINE_SUPPORTS_SAVE ) - -GAME( 1991, stratof, 0, raiga, raiga, gaiden_state, raiga, ROT0, "Tecmo", "Raiga - Strato Fighter (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, raiga, stratof, raiga, raiga, gaiden_state, raiga, ROT0, "Tecmo", "Raiga - Strato Fighter (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY, FULLNAME,FLAGS +GAME( 1988, shadoww, 0, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Shadow Warriors (World, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, shadowwa, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Shadow Warriors (World, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gaiden, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Gaiden (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, ryukendn, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, ryukendna, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mastninj, shadoww, mastninj, common, gaiden_state, mastninj, ROT0, "bootleg", "Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sprites need fixing, sound and yscroll too. - it is confirmed the curtains don't scroll on the pcb +GAME( 1992, drgnbowl, 0, drgnbowl, drgnbowl, gaiden_state, drgnbowl, ROT0, "Nics", "Dragon Bowl (set 1, encrypted program)", MACHINE_SUPPORTS_SAVE ) // Dragon Bowl is based on Ninja Gaiden code +GAME( 1992, drgnbowla, drgnbowl, drgnbowl, drgnbowl, gaiden_state, drgnbowla,ROT0, "Nics", "Dragon Bowl (set 2, unencrypted program)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1989, wildfang, 0, shadoww, wildfang, gaiden_state, wildfang, ROT0, "Tecmo", "Wild Fang / Tecmo Knight", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wildfangs, wildfang, shadoww, tknight, gaiden_state, wildfang, ROT0, "Tecmo", "Wild Fang", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tknight, wildfang, shadoww, tknight, gaiden_state, wildfang, ROT0, "Tecmo", "Tecmo Knight", MACHINE_SUPPORTS_SAVE ) + +GAME( 1991, stratof, 0, raiga, raiga, gaiden_state, raiga, ROT0, "Tecmo", "Raiga - Strato Fighter (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, raiga, stratof, raiga, raiga, gaiden_state, raiga, ROT0, "Tecmo", "Raiga - Strato Fighter (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gal3.cpp b/src/mame/drivers/gal3.cpp index 2e8ac930b6d..4dc61cc4a5c 100644 --- a/src/mame/drivers/gal3.cpp +++ b/src/mame/drivers/gal3.cpp @@ -128,7 +128,7 @@ better notes (complete chip lists) for each board still needed #include "emu.h" #include "includes/namcos2.h" -#include "includes/namcoic.h" +#include "machine/namcoic.h" #include "cpu/m68000/m68000.h" #include "cpu/tms32025/tms32025.h" @@ -593,7 +593,7 @@ static GFXDECODE_START( namcos21 ) GFXDECODE_ENTRY( "obj_board1", 0x000000, tile_layout, 0x000, 0x20 ) GFXDECODE_END -static MACHINE_CONFIG_START( gal3, gal3_state ) +static MACHINE_CONFIG_START( gal3 ) MCFG_CPU_ADD("maincpu", M68020, 49152000/2) MCFG_CPU_PROGRAM_MAP(cpu_mst_map) MCFG_CPU_VBLANK_INT_DRIVER("lscreen", gal3_state, irq1_line_hold) @@ -644,12 +644,12 @@ static MACHINE_CONFIG_START( gal3, gal3_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140_16g", 8000000/374) - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM21) //to be verified + MCFG_C140_BANK_TYPE(SYSTEM21) //to be verified MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) MCFG_C140_ADD("c140_16a", 8000000/374) - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM21) + MCFG_C140_BANK_TYPE(SYSTEM21) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) MACHINE_CONFIG_END @@ -866,6 +866,6 @@ ROM_START( gal3 ) DISK_IMAGE_READONLY( "gal3_ld2", 0, NO_DUMP ) ROM_END -/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */ -GAMEL( 199?, gal3, 0, gal3, gal3, driver_device, 0, ROT0, "Namco", "Galaxian 3 - Theater 6 : Project Dragoon", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_dualhsxs ) +/* YEAR, NAME PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */ +GAMEL( 199?, gal3, 0, gal3, gal3, gal3_state, 0, ROT0, "Namco", "Galaxian 3 - Theater 6 : Project Dragoon", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_dualhsxs ) //GAMEL( 199?, gal3zlgr, 0, gal3, gal3, driver_device, 0, ROT0, "Namco", "Galaxian 3 - Theater 6 J2 : Attack of The Zolgear", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_dualhsxs ) diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp index 432d0e171c2..c97daa9e8bd 100644 --- a/src/mame/drivers/galaga.cpp +++ b/src/mame/drivers/galaga.cpp @@ -1605,7 +1605,7 @@ INTERRUPT_GEN_MEMBER(galaga_state::sub_vblank_irq) device.execute().set_input_line(0, ASSERT_LINE); } -static MACHINE_CONFIG_START( bosco, bosco_state ) +static MACHINE_CONFIG_START( bosco ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ @@ -1668,7 +1668,7 @@ static MACHINE_CONFIG_START( bosco, bosco_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 16, 224+16) MCFG_SCREEN_UPDATE_DRIVER(bosco_state, screen_update_bosco) - MCFG_SCREEN_VBLANK_DRIVER(bosco_state, screen_eof_bosco) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(bosco_state, screen_vblank_bosco)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", bosco) @@ -1690,7 +1690,7 @@ static MACHINE_CONFIG_START( bosco, bosco_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( galaga, galaga_state ) +static MACHINE_CONFIG_START( galaga ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ @@ -1733,7 +1733,7 @@ static MACHINE_CONFIG_START( galaga, galaga_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224) MCFG_SCREEN_UPDATE_DRIVER(galaga_state, screen_update_galaga) - MCFG_SCREEN_VBLANK_DRIVER(galaga_state, screen_eof_galaga) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(galaga_state, screen_vblank_galaga)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", galaga) @@ -1775,7 +1775,7 @@ static MACHINE_CONFIG_DERIVED( galagab, galaga ) MCFG_DEVICE_REMOVE("discrete") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( xevious, xevious_state ) +static MACHINE_CONFIG_START( xevious ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ @@ -1875,7 +1875,7 @@ static MACHINE_CONFIG_DERIVED( battles, xevious ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( digdug, digdug_state ) +static MACHINE_CONFIG_START( digdug ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ @@ -2557,6 +2557,39 @@ ROM_START( gatsbee ) ROM_LOAD( "prom-2.5c", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ ROM_END +ROM_START( nebulbee ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "nebulbee.01", 0x0000, 0x1000, CRC(f405f2c4) SHA1(9249afeffd8df0f24539ea9b4f88c23a6ad58d8c) ) + ROM_LOAD( "nebulbee.02", 0x1000, 0x1000, CRC(31022b60) SHA1(90e64afb4128c6dfeeee89635ea9f97a34f70f5f) ) + ROM_LOAD( "gg1_3.2m", 0x2000, 0x1000, CRC(753ce503) SHA1(481f443aea3ed3504ec2f3a6bfcf3cd47e2f8f81) ) + ROM_LOAD( "nebulbee.04", 0x3000, 0x1000, CRC(d76788a5) SHA1(adcb83cf64951d86c701a99b410e9230912f8a48) ) + + ROM_REGION( 0x10000, "sub", 0 ) + ROM_LOAD( "gg1-5", 0x0000, 0x1000, CRC(3102fccd) SHA1(d29b68d6aab3217fa2106b3507b9273ff3f927bf) ) + + ROM_REGION( 0x10000, "sub2", 0 ) + ROM_LOAD( "gg1-7", 0x0000, 0x1000, CRC(8995088d) SHA1(d6cb439de0718826d1a0363c9d77de8740b18ecf) ) + + ROM_REGION( 0x10000, "sub3", 0 ) /* 64k for a Z80 which emulates the custom I/O chip (not used) */ + ROM_LOAD( "nebulbee.07", 0x0000, 0x1000, CRC(035e300c) SHA1(cfda2467e71c27381b7150ff8fc7b69d61df123a) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD( "gg1_9.4l", 0x0000, 0x1000, CRC(58b2f47c) SHA1(62f1279a784ab2f8218c4137c7accda00e6a3490) ) + + ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_LOAD( "gg1_11.4d", 0x0000, 0x1000, CRC(ad447c80) SHA1(e697c180178cabd1d32483c5d8889a40633f7857) ) + ROM_LOAD( "gg1_10.4f", 0x1000, 0x1000, CRC(dd6f1afc) SHA1(c340ed8c25e0979629a9a1730edc762bd72d0cff) ) + + ROM_REGION( 0x0320, "proms", 0 ) + ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) ) + ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) ) + ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) ) + ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) ) + + ROM_REGION( 0x0100, "namco", 0 ) + ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) ) +ROM_END + /********************************************************************************************** Xevious & clones **********************************************************************************************/ @@ -3434,39 +3467,40 @@ DRIVER_INIT_MEMBER(xevious_state,battles) /* Original Namco hardware, with Namco Customs */ -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1981, bosco, 0, bosco, bosco, driver_device, 0, ROT0, "Namco", "Bosconian (new version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1981, boscoo, bosco, bosco, bosco, driver_device, 0, ROT0, "Namco", "Bosconian (old version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1981, boscoo2, bosco, bosco, bosco, driver_device, 0, ROT0, "Namco", "Bosconian (older version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1981, boscomd, bosco, bosco, boscomd, driver_device, 0, ROT0, "Namco (Midway license)", "Bosconian (Midway, new version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1981, boscomdo, bosco, bosco, boscomd, driver_device, 0, ROT0, "Namco (Midway license)", "Bosconian (Midway, old version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS +GAME( 1981, bosco, 0, bosco, bosco, bosco_state, 0, ROT0, "Namco", "Bosconian (new version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1981, boscoo, bosco, bosco, bosco, bosco_state, 0, ROT0, "Namco", "Bosconian (old version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1981, boscoo2, bosco, bosco, bosco, bosco_state, 0, ROT0, "Namco", "Bosconian (older version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1981, boscomd, bosco, bosco, boscomd, bosco_state, 0, ROT0, "Namco (Midway license)", "Bosconian (Midway, new version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1981, boscomdo, bosco, bosco, boscomd, bosco_state, 0, ROT0, "Namco (Midway license)", "Bosconian (Midway, old version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1981, galaga, 0, galaga, galaga, galaga_state, galaga, ROT90, "Namco", "Galaga (Namco rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1981, galagao, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco", "Galaga (Namco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1981, galagamw, galaga, galaga, galagamw, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1981, galagamk, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1981, galagamf, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 1 with fast shoot hack)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1981, galaga, 0, galaga, galaga, galaga_state, galaga, ROT90, "Namco", "Galaga (Namco rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1981, galagao, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco", "Galaga (Namco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1981, galagamw, galaga, galaga, galagamw, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1981, galagamk, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1981, galagamf, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 1 with fast shoot hack)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1982, xevious, 0, xevious, xevious, xevious_state, xevious, ROT90, "Namco", "Xevious (Namco)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, xevious, 0, xevious, xevious, xevious_state, xevious, ROT90, "Namco", "Xevious (Namco)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, xeviousa, xevious, xevious, xeviousa, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari, harder)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, xeviousb, xevious, xevious, xeviousb, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, xeviousc, xevious, xevious, xeviousa, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari, Namco PCB)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, sxevious, xevious, xevious, sxevious, xevious_state, xevious, ROT90, "Namco", "Super Xevious", MACHINE_SUPPORTS_SAVE ) GAME( 1984, sxeviousj, xevious, xevious, sxevious, xevious_state, xevious, ROT90, "Namco", "Super Xevious (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, digdug, 0, digdug, digdug, driver_device, 0, ROT90, "Namco", "Dig Dug (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, digdug1, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco", "Dig Dug (rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, digdugat, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco (Atari license)", "Dig Dug (Atari, rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, digdugat1, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco (Atari license)", "Dig Dug (Atari, rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, digsid, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco (Sidam license)", "Dig Dug (manufactured by Sidam)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, digdug, 0, digdug, digdug, digdug_state, 0, ROT90, "Namco", "Dig Dug (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, digdug1, digdug, digdug, digdug, digdug_state, 0, ROT90, "Namco", "Dig Dug (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, digdugat, digdug, digdug, digdug, digdug_state, 0, ROT90, "Namco (Atari license)", "Dig Dug (Atari, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, digdugat1, digdug, digdug, digdug, digdug_state, 0, ROT90, "Namco (Atari license)", "Dig Dug (Atari, rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, digsid, digdug, digdug, digdug, digdug_state, 0, ROT90, "Namco (Sidam license)", "Dig Dug (manufactured by Sidam)", MACHINE_SUPPORTS_SAVE ) /* Bootlegs with replacement I/O chips */ -GAME( 1981, gallag, galaga, galagab, galaga, galaga_state, galaga, ROT90, "bootleg", "Gallag", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gatsbee, galaga, galagab, gatsbee, galaga_state, gatsbee, ROT90, "hack", "Gatsbee", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1982, gallag, galaga, galagab, galaga, galaga_state, galaga, ROT90, "bootleg", "Gallag", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gatsbee, galaga, galagab, gatsbee, galaga_state, gatsbee, ROT90, "hack (Uchida)", "Gatsbee", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1981, nebulbee, galaga, galagab, galaga, galaga_state, galaga, ROT90, "bootleg", "Nebulous Bee", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1982, xevios, xevious, xevious, xevious, xevious_state, xevios, ROT90, "bootleg", "Xevios", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1982, battles, xevious, battles, xevious, xevious_state, battles, ROT90, "bootleg", "Battles (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1982, battles2, xevious, xevious, xevious, xevious_state, xevios, ROT90, "bootleg", "Battles (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dzigzag, digdug, dzigzag, digdug, driver_device, 0, ROT90, "bootleg", "Zig Zag (Dig Dug hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dzigzag, digdug, dzigzag, digdug, digdug_state, 0, ROT90, "bootleg", "Zig Zag (Dig Dug hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/galastrm.cpp b/src/mame/drivers/galastrm.cpp index fb5454f2e93..a82dfadee9f 100644 --- a/src/mame/drivers/galastrm.cpp +++ b/src/mame/drivers/galastrm.cpp @@ -28,7 +28,7 @@ ENSONIQ 5701,5510,5505 OSC1:16MHz OSC2:30.47618MHz ---------------------------------------------------------- -based on driver from drivers/gunbustr.c by Bryan McPhail & David Graves +based on driver from drivers/gunbustr.cpp by Bryan McPhail & David Graves Written by Hau 07/03/2008 @@ -49,6 +49,12 @@ $305.b invincibility /*********************************************************************/ +void galastrm_state::machine_start() +{ + m_interrupt6_timer = timer_alloc(TIMER_GALASTRM_INTERRUPT6); +} + + INTERRUPT_GEN_MEMBER(galastrm_state::galastrm_interrupt) { m_frame_counter ^= 1; @@ -163,7 +169,7 @@ READ32_MEMBER(galastrm_state::galastrm_adstick_ctrl_r) WRITE32_MEMBER(galastrm_state::galastrm_adstick_ctrl_w) { - timer_set(downcast(&space.device())->cycles_to_attotime(1000), TIMER_GALASTRM_INTERRUPT6); + m_interrupt6_timer->adjust(m_maincpu->cycles_to_attotime(1000)); } /*********************************************************** @@ -279,7 +285,7 @@ GFXDECODE_END /***************************************************************************/ -static MACHINE_CONFIG_START( galastrm, galastrm_state ) +static MACHINE_CONFIG_START( galastrm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, 16000000) /* 16 MHz */ MCFG_CPU_PROGRAM_MAP(galastrm_map) @@ -358,4 +364,4 @@ ROM_START( galastrm ) ROM_END -GAME( 1992, galastrm, 0, galastrm, galastrm, driver_device, 0, ROT0, "Taito Corporation", "Galactic Storm (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, galastrm, 0, galastrm, galastrm, galastrm_state, 0, ROT0, "Taito Corporation", "Galactic Storm (Japan)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/galaxi.cpp b/src/mame/drivers/galaxi.cpp index 6332928c77b..093a0c2fe65 100644 --- a/src/mame/drivers/galaxi.cpp +++ b/src/mame/drivers/galaxi.cpp @@ -445,7 +445,7 @@ void galaxi_state::machine_reset() Machine Drivers ***************************************************************************/ -static MACHINE_CONFIG_START( galaxi, galaxi_state ) +static MACHINE_CONFIG_START( galaxi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) @@ -470,7 +470,7 @@ static MACHINE_CONFIG_START( galaxi, galaxi_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", SND_CLOCK, OKIM6295_PIN7_LOW) // ? + MCFG_OKIM6295_ADD("oki", SND_CLOCK, PIN7_LOW) // ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -576,7 +576,7 @@ ROM_END Game Drivers ***************************************************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 2000, galaxi, 0, galaxi, galaxi, driver_device, 0, ROT0, "B.R.L.", "Galaxi (v2.0)", MACHINE_SUPPORTS_SAVE, layout_galaxi ) -GAMEL( 2000, magjoker, 0, magjoker, magjoker, driver_device, 0, ROT0, "B.R.L.", "Magic Joker (v1.25.10.2000)", MACHINE_SUPPORTS_SAVE, layout_galaxi ) -GAMEL( 2001, lastfour, 0, lastfour, magjoker, driver_device, 0, ROT0, "B.R.L.", "Last Four (09:12 16/01/2001)", MACHINE_SUPPORTS_SAVE, layout_galaxi ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 2000, galaxi, 0, galaxi, galaxi, galaxi_state, 0, ROT0, "B.R.L.", "Galaxi (v2.0)", MACHINE_SUPPORTS_SAVE, layout_galaxi ) +GAMEL( 2000, magjoker, 0, magjoker, magjoker, galaxi_state, 0, ROT0, "B.R.L.", "Magic Joker (v1.25.10.2000)", MACHINE_SUPPORTS_SAVE, layout_galaxi ) +GAMEL( 2001, lastfour, 0, lastfour, magjoker, galaxi_state, 0, ROT0, "B.R.L.", "Last Four (09:12 16/01/2001)", MACHINE_SUPPORTS_SAVE, layout_galaxi ) diff --git a/src/mame/drivers/galaxia.cpp b/src/mame/drivers/galaxia.cpp index bc775353c04..f466b79b188 100644 --- a/src/mame/drivers/galaxia.cpp +++ b/src/mame/drivers/galaxia.cpp @@ -283,7 +283,7 @@ static GFXDECODE_START( astrowar ) GFXDECODE_END -static MACHINE_CONFIG_START( galaxia, galaxia_state ) +static MACHINE_CONFIG_START( galaxia ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, XTAL_14_31818MHz/8) @@ -325,7 +325,7 @@ static MACHINE_CONFIG_START( galaxia, galaxia_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( astrowar, galaxia_state ) +static MACHINE_CONFIG_START( astrowar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, XTAL_14_31818MHz/8) @@ -468,8 +468,8 @@ ROM_START( astrowar ) ROM_LOAD( "astro.3d", 0x00400, 0x0400, CRC(822505aa) SHA1(f9d3465e14bb850a286f8b4f42aa0a4044413b67) ) ROM_END -GAME( 1979, galaxia, 0, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1979, galaxiaa, galaxia, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1979, galaxiab, galaxia, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 3)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1979, galaxiac, galaxia, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 4)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1980, astrowar, 0, astrowar, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Astro Wars", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1979, galaxia, 0, galaxia, galaxia, galaxia_state, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1979, galaxiaa, galaxia, galaxia, galaxia, galaxia_state, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1979, galaxiab, galaxia, galaxia, galaxia, galaxia_state, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 3)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1979, galaxiac, galaxia, galaxia, galaxia, galaxia_state, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 4)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1980, astrowar, 0, astrowar, galaxia, galaxia_state, 0, ROT90, "Zaccaria / Zelco", "Astro Wars", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index dc8d18b377a..8dc5ad18386 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -1325,7 +1325,7 @@ CUSTOM_INPUT_MEMBER(galaxian_state::kingball_noise_r) { /* bit 5 is the NOISE line from the sound circuit. The code just verifies that it's working, doesn't actually use return value, so we can just use - rand() */ + machine().rand() */ return machine().rand() & 1; } @@ -5586,7 +5586,7 @@ DISCRETE_SOUND_END * *************************************/ -static MACHINE_CONFIG_START( galaxian_base, galaxian_state ) +static MACHINE_CONFIG_START( galaxian_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, GALAXIAN_PIXEL_CLOCK/3/2) @@ -8775,7 +8775,6 @@ ROM_START( atlantisb ) /* Artic Multi-System */ ROM_LOAD( "sn74s288n.6l", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) ROM_END - ROM_START( tenspot ) /* Game A - Survivor */ ROM_REGION( 0x4000, "game_0_cpu", 0 ) diff --git a/src/mame/drivers/galaxold.cpp b/src/mame/drivers/galaxold.cpp index 782622ae9dc..e28080d5ac1 100644 --- a/src/mame/drivers/galaxold.cpp +++ b/src/mame/drivers/galaxold.cpp @@ -2167,7 +2167,7 @@ static GFXDECODE_START( _4in1 ) GFXDECODE_END -static MACHINE_CONFIG_START( galaxold_base, galaxold_state ) +static MACHINE_CONFIG_START( galaxold_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, PIXEL_CLOCK/2) /* 3.072 MHz */ @@ -2385,7 +2385,7 @@ static MACHINE_CONFIG_DERIVED( ozon1, galaxold_base ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( drivfrcg, galaxold_state ) +static MACHINE_CONFIG_START( drivfrcg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/6) @@ -2470,7 +2470,7 @@ static MACHINE_CONFIG_DERIVED( tazzmang, galaxian ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( racknrol, galaxold_state ) +static MACHINE_CONFIG_START( racknrol ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, PIXEL_CLOCK/2) @@ -2497,7 +2497,7 @@ static MACHINE_CONFIG_START( racknrol, galaxold_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hexpoola, galaxold_state ) +static MACHINE_CONFIG_START( hexpoola ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, PIXEL_CLOCK/2) @@ -3434,41 +3434,41 @@ DRIVER_INIT_MEMBER(galaxold_state,guttangt) /* Z80 games */ -// YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY, FULLNAME, FLAGS, LAYOUT -GAME( 1981, vpool, hustler, mooncrst, vpool, driver_device, 0, ROT90, "bootleg", "Video Pool (bootleg on Moon Cresta hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, rockclim, 0, rockclim, rockclim, driver_device, 0, ROT180, "Taito", "Rock Climber", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ckongg, ckong, ckongg, ckongg, driver_device, 0, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ckongmc, ckong, ckongmc, ckongmc, driver_device, 0, ROT90, "bootleg", "Crazy Kong (bootleg on Moon Cresta hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // set was marked as 'King Kong on Galaxian' -GAME( 1981, ckonggx, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, ckongcv, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 2)", MACHINE_NOT_WORKING ) -GAME( 1982, ckongis, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 3)", MACHINE_NOT_WORKING ) -GAME( 1981, scramblb, scramble, scramblb, scramblb, driver_device, 0, ROT90, "bootleg", "Scramble (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, scramb2, scramble, scramb2, scramb2, driver_device, 0, ROT90, "bootleg", "Scramble (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, scrambler, scramble, scrambler, scrambler, driver_device, 0, ROT90, "bootleg (Reben S.A.)", "Scramble (Reben S.A. Spanish bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, 4in1, 0, 4in1, 4in1, galaxold_state, 4in1, ROT90, "Armenia / Food and Fun", "4 Fun in 1", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bagmanmc, bagman, bagmanmc, bagmanmc, driver_device, 0, ROT90, "bootleg", "Bagman (bootleg on Moon Cresta hardware, set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, bagmanm2, bagman, bagmanmc, bagmanmc, driver_device, 0, ROT90, "bootleg (GIB)", "Bagman (bootleg on Moon Cresta hardware, set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dkongjrm, dkongjr, dkongjrm, dkongjrm, driver_device, 0, ROT90, "bootleg", "Donkey Kong Jr. (bootleg on Moon Cresta hardware)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, porter, dockman, porter, porter, driver_device, 0, ROT90, "bootleg", "Port Man (bootleg on Moon Cresta hardware)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL ) -GAME( 1982, tazzmang, tazmania, tazzmang, tazzmang, driver_device, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, tazzmang2, tazmania, tazzmang, tazzmang, driver_device, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware with Starfield)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, bongo, 0, bongo, bongo, driver_device, 0, ROT90, "Jetsoft", "Bongo", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ozon1, 0, ozon1, ozon1, driver_device, 0, ROT90, "Proma", "Ozon I", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, guttangt, locomotn, guttang, guttangt, galaxold_state, guttangt, ROT270, "bootleg (Recreativos Franco?)", "Guttang Gottong (bootleg on Galaxian type hardware)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // or by 'Tren' ? +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY, FULLNAME, FLAGS, LAYOUT +GAME( 1981, vpool, hustler, mooncrst, vpool, galaxold_state, 0, ROT90, "bootleg", "Video Pool (bootleg on Moon Cresta hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, rockclim, 0, rockclim, rockclim, galaxold_state, 0, ROT180, "Taito", "Rock Climber", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ckongg, ckong, ckongg, ckongg, galaxold_state, 0, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ckongmc, ckong, ckongmc, ckongmc, galaxold_state, 0, ROT90, "bootleg", "Crazy Kong (bootleg on Moon Cresta hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // set was marked as 'King Kong on Galaxian' +GAME( 1981, ckonggx, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, ckongcv, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 2)", MACHINE_NOT_WORKING ) +GAME( 1982, ckongis, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 3)", MACHINE_NOT_WORKING ) +GAME( 1981, scramblb, scramble, scramblb, scramblb, galaxold_state, 0, ROT90, "bootleg", "Scramble (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, scramb2, scramble, scramb2, scramb2, galaxold_state, 0, ROT90, "bootleg", "Scramble (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, scrambler, scramble, scrambler, scrambler, galaxold_state, 0, ROT90, "bootleg (Reben S.A.)", "Scramble (Reben S.A. Spanish bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, 4in1, 0, 4in1, 4in1, galaxold_state, 4in1, ROT90, "Armenia / Food and Fun", "4 Fun in 1", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bagmanmc, bagman, bagmanmc, bagmanmc, galaxold_state, 0, ROT90, "bootleg", "Bagman (bootleg on Moon Cresta hardware, set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, bagmanm2, bagman, bagmanmc, bagmanmc, galaxold_state, 0, ROT90, "bootleg (GIB)", "Bagman (bootleg on Moon Cresta hardware, set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dkongjrm, dkongjr, dkongjrm, dkongjrm, galaxold_state, 0, ROT90, "bootleg", "Donkey Kong Jr. (bootleg on Moon Cresta hardware)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, porter, dockman, porter, porter, galaxold_state, 0, ROT90, "bootleg", "Port Man (bootleg on Moon Cresta hardware)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL ) +GAME( 1982, tazzmang, tazmania, tazzmang, tazzmang, galaxold_state, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, tazzmang2, tazmania, tazzmang, tazzmang, galaxold_state, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware with Starfield)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, bongo, 0, bongo, bongo, galaxold_state, 0, ROT90, "Jetsoft", "Bongo", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ozon1, 0, ozon1, ozon1, galaxold_state, 0, ROT90, "Proma", "Ozon I", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, guttangt, locomotn, guttang, guttangt, galaxold_state, guttangt, ROT270, "bootleg (Recreativos Franco?)", "Guttang Gottong (bootleg on Galaxian type hardware)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // or by 'Tren' ? // Videotron cartridge system -GAME( 1981, hustlerb3, hustler, videotron, hustlerb3, driver_device, 0, ROT90, "bootleg (Videotron)", "Video Pool (Video Hustler bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, froggerv, frogger, videotron, froggerv, driver_device, 0, ROT90, "bootleg (Videotron / Gamepack)", "Frogger (Videotron bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hustlerb3, hustler, videotron, hustlerb3, galaxold_state, 0, ROT90, "bootleg (Videotron)", "Video Pool (Video Hustler bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, froggerv, frogger, videotron, froggerv, galaxold_state, 0, ROT90, "bootleg (Videotron / Gamepack)", "Frogger (Videotron bootleg)", MACHINE_SUPPORTS_SAVE ) /* S2650 games */ -// YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY, FULLNAME, FLAGS, LAYOUT -GAME( 1983, hunchbkg, hunchbak, hunchbkg, hunchbkg, driver_device, 0, ROT90, "Century Electronics", "Hunchback (Galaxian hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, spcwarp, 0, spcwarp, hunchbkg, driver_device, 0, ROT90, "Century Electronics", "Space Warp? (Cosmos conversion on Galaxian hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) // bad dump -GAME( 1984, drivfrcg, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "Shinkai Inc. (Magic Electronics USA license)", "Driving Force (Galaxian conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, drivfrct, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "bootleg (EMT Germany)", "Top Racer (bootleg of Driving Force)", MACHINE_SUPPORTS_SAVE ) // Video Klein PCB -GAME( 1985, drivfrcb, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "bootleg (Elsys Software)", "Driving Force (Galaxian conversion bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, racknrol, 0, racknrol, racknrol, driver_device, 0, ROT0, "Senko Industries (Status license from Shinkai Inc.)", "Rack + Roll", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, hexpool, racknrol, racknrol, racknrol, driver_device, 0, ROT90, "Senko Industries (Shinkai Inc. license)", "Hex Pool (Shinkai)", MACHINE_SUPPORTS_SAVE ) // still has Senko logo in gfx rom -GAME( 1985, hexpoola, racknrol, hexpoola, racknrol, driver_device, 0, ROT90, "Senko Industries", "Hex Pool (Senko)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvchlng, 0, racknrol, trvchlng, driver_device, 0, ROT90, "Joyland (Senko license)", "Trivia Challenge", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY, FULLNAME, FLAGS, LAYOUT +GAME( 1983, hunchbkg, hunchbak, hunchbkg, hunchbkg, galaxold_state, 0, ROT90, "Century Electronics", "Hunchback (Galaxian hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, spcwarp, 0, spcwarp, hunchbkg, galaxold_state, 0, ROT90, "Century Electronics", "Space Warp? (Cosmos conversion on Galaxian hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) // bad dump +GAME( 1984, drivfrcg, drivfrcp, drivfrcg, drivfrcg, galaxold_state, 0, ROT90, "Shinkai Inc. (Magic Electronics USA license)", "Driving Force (Galaxian conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, drivfrct, drivfrcp, drivfrcg, drivfrcg, galaxold_state, 0, ROT90, "bootleg (EMT Germany)", "Top Racer (bootleg of Driving Force)", MACHINE_SUPPORTS_SAVE ) // Video Klein PCB +GAME( 1985, drivfrcb, drivfrcp, drivfrcg, drivfrcg, galaxold_state, 0, ROT90, "bootleg (Elsys Software)", "Driving Force (Galaxian conversion bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, racknrol, 0, racknrol, racknrol, galaxold_state, 0, ROT0, "Senko Industries (Status license from Shinkai Inc.)", "Rack + Roll", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, hexpool, racknrol, racknrol, racknrol, galaxold_state, 0, ROT90, "Senko Industries (Shinkai Inc. license)", "Hex Pool (Shinkai)", MACHINE_SUPPORTS_SAVE ) // still has Senko logo in gfx rom +GAME( 1985, hexpoola, racknrol, hexpoola, racknrol, galaxold_state, 0, ROT90, "Senko Industries", "Hex Pool (Senko)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvchlng, 0, racknrol, trvchlng, galaxold_state, 0, ROT90, "Joyland (Senko license)", "Trivia Challenge", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1985, bullsdrtg, bullsdrt, bullsdrtg, racknrol, galaxold_state, bullsdrtg, ROT90, "Senko Industries", "Bulls Eye Darts (Galaxian conversion)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS ) diff --git a/src/mame/drivers/galaxy.cpp b/src/mame/drivers/galaxy.cpp index d941e53809c..dc9794d77cf 100644 --- a/src/mame/drivers/galaxy.cpp +++ b/src/mame/drivers/galaxy.cpp @@ -172,7 +172,7 @@ static GFXDECODE_START( galaxy ) GFXDECODE_END -static MACHINE_CONFIG_START( galaxy, galaxy_state ) +static MACHINE_CONFIG_START( galaxy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL / 2) MCFG_CPU_PROGRAM_MAP(galaxy_mem) @@ -214,7 +214,7 @@ static MACHINE_CONFIG_START( galaxy, galaxy_state ) MCFG_RAM_EXTRA_OPTIONS("2K,22K,38K,54K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( galaxyp, galaxy_state ) +static MACHINE_CONFIG_START( galaxyp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL / 2) MCFG_CPU_PROGRAM_MAP(galaxyp_mem) @@ -274,6 +274,6 @@ ROM_START (galaxyp) ROM_LOAD ("galchr.bin", 0x0000, 0x0800, CRC(5c3b5bb5) SHA1(19429a61dc5e55ddec3242a8f695e06dd7961f88)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP(1983, galaxy, 0, 0, galaxy, galaxy, galaxy_state, galaxy, "Voja Antonic / Elektronika inzenjering", "Galaksija", 0) -COMP(1985, galaxyp, galaxy, 0, galaxyp,galaxyp, galaxy_state,galaxyp,"Nenad Dunjic", "Galaksija plus", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP(1983, galaxy, 0, 0, galaxy, galaxy, galaxy_state, galaxy, "Voja Antonic / Elektronika inzenjering", "Galaksija", 0) +COMP(1985, galaxyp, galaxy, 0, galaxyp,galaxyp, galaxy_state, galaxyp,"Nenad Dunjic", "Galaksija plus", 0) diff --git a/src/mame/drivers/galeb.cpp b/src/mame/drivers/galeb.cpp index 3b7c629f0d0..4c5d2350640 100644 --- a/src/mame/drivers/galeb.cpp +++ b/src/mame/drivers/galeb.cpp @@ -163,7 +163,7 @@ static INPUT_PORTS_START( galeb ) INPUT_PORTS_END /* Machine driver */ -static MACHINE_CONFIG_START( galeb, galeb_state ) +static MACHINE_CONFIG_START( galeb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1000000) MCFG_CPU_PROGRAM_MAP(galeb_mem) @@ -204,5 +204,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, galeb, 0, 0, galeb, galeb, driver_device, 0, "PEL Varazdin", "Galeb", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, galeb, 0, 0, galeb, galeb, galeb_state, 0, "PEL Varazdin", "Galeb", 0 ) diff --git a/src/mame/drivers/galgame.cpp b/src/mame/drivers/galgame.cpp index 79640e233c6..8e71c8b0589 100644 --- a/src/mame/drivers/galgame.cpp +++ b/src/mame/drivers/galgame.cpp @@ -318,7 +318,7 @@ void galaxygame_state::machine_reset() m_interrupt = 0; } -static MACHINE_CONFIG_START( galaxygame, galaxygame_state ) +static MACHINE_CONFIG_START( galaxygame ) MCFG_CPU_ADD("maincpu", T11, 3000000 ) MCFG_CPU_PROGRAM_MAP(galaxygame_map) diff --git a/src/mame/drivers/galgames.cpp b/src/mame/drivers/galgames.cpp index 7681b9c3c22..4e1d7b2efde 100644 --- a/src/mame/drivers/galgames.cpp +++ b/src/mame/drivers/galgames.cpp @@ -53,12 +53,11 @@ Notes: ***************************************************************************/ -class galgames_slot_device; -extern const device_type GALGAMES_CART; -extern const device_type GALGAMES_BIOS_CART; -extern const device_type GALGAMES_STARPAK2_CART; -extern const device_type GALGAMES_STARPAK3_CART; -extern const device_type GALGAMES_SLOT; +DECLARE_DEVICE_TYPE(GALGAMES_CART, galgames_cart_device) +DECLARE_DEVICE_TYPE(GALGAMES_BIOS_CART, galgames_bios_cart_device) +DECLARE_DEVICE_TYPE(GALGAMES_STARPAK2_CART, galgames_starpak2_cart_device) +DECLARE_DEVICE_TYPE(GALGAMES_STARPAK3_CART, galgames_starpak3_cart_device) +DECLARE_DEVICE_TYPE(GALGAMES_SLOT, galgames_slot_device) // CART declaration @@ -67,7 +66,7 @@ class galgames_cart_device : public device_t, public device_rom_interface public: // construction/destruction galgames_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - galgames_cart_device(mconfig, GALGAMES_CART, "Galaxy Games StarPak Cartridge", tag, owner, clock, "starpak_cart", __FILE__) + galgames_cart_device(mconfig, GALGAMES_CART, tag, owner, clock) { } // static configuration @@ -96,12 +95,9 @@ protected: galgames_cart_device( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - uint32_t clock, - const char *shortname, - const char *source); + uint32_t clock); // device-level overrides virtual void device_start() override { } @@ -131,7 +127,7 @@ protected: }; // device type definition -const device_type GALGAMES_CART = device_creator; +DEFINE_DEVICE_TYPE(GALGAMES_CART, galgames_cart_device, "starpak_cart", "Galaxy Games StarPak Cartridge") #define MCFG_GALGAMES_CART_INDEX(_cart) \ galgames_cart_device::static_set_cart(*device, _cart); @@ -156,14 +152,14 @@ class galgames_bios_cart_device : public galgames_cart_device public: // construction/destruction galgames_bios_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - galgames_cart_device(mconfig, GALGAMES_BIOS_CART, "Galaxy Games BIOS Cartridge", tag, owner, clock, "galgames_bios_cart", __FILE__) + galgames_cart_device(mconfig, GALGAMES_BIOS_CART, tag, owner, clock) { } protected: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override { return MACHINE_CONFIG_NAME(bios); } }; -const device_type GALGAMES_BIOS_CART = device_creator; +DEFINE_DEVICE_TYPE(GALGAMES_BIOS_CART, galgames_bios_cart_device, "galgames_bios_cart", "Galaxy Games BIOS Cartridge") #define MCFG_GALGAMES_BIOS_CART_ADD(_tag, _cart) \ MCFG_DEVICE_ADD(_tag, GALGAMES_BIOS_CART, 0) \ @@ -186,14 +182,14 @@ class galgames_starpak2_cart_device : public galgames_cart_device public: // construction/destruction galgames_starpak2_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - galgames_cart_device(mconfig, GALGAMES_STARPAK2_CART, "Galaxy Games StarPak 2 Cartridge", tag, owner, clock, "starpak2_cart", __FILE__) + galgames_cart_device(mconfig, GALGAMES_STARPAK2_CART, tag, owner, clock) { } protected: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override { return MACHINE_CONFIG_NAME(starpak2); } }; -const device_type GALGAMES_STARPAK2_CART = device_creator; +DEFINE_DEVICE_TYPE(GALGAMES_STARPAK2_CART, galgames_starpak2_cart_device, "starpak2_cart", "Galaxy Games StarPak 2 Cartridge") #define MCFG_GALGAMES_STARPAK2_CART_ADD(_tag, _cart) \ MCFG_DEVICE_ADD(_tag, GALGAMES_STARPAK2_CART, 0) \ @@ -218,14 +214,14 @@ class galgames_starpak3_cart_device : public galgames_cart_device public: // construction/destruction galgames_starpak3_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - galgames_cart_device(mconfig, GALGAMES_STARPAK3_CART, "Galaxy Games StarPak 3 Cartridge", tag, owner, clock, "starpak3_cart", __FILE__) + galgames_cart_device(mconfig, GALGAMES_STARPAK3_CART, tag, owner, clock) { } protected: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override { return MACHINE_CONFIG_NAME(starpak3); } }; -const device_type GALGAMES_STARPAK3_CART = device_creator; +DEFINE_DEVICE_TYPE(GALGAMES_STARPAK3_CART, galgames_starpak3_cart_device, "starpak3_cart", "Galaxy Games StarPak 3 Cartridge") #define MCFG_GALGAMES_STARPAK3_CART_ADD(_tag, _cart) \ MCFG_DEVICE_ADD(_tag, GALGAMES_STARPAK3_CART, 0) \ @@ -306,7 +302,7 @@ protected: }; // device type definition -const device_type GALGAMES_SLOT = device_creator; +DEFINE_DEVICE_TYPE(GALGAMES_SLOT, galgames_slot_device, "starpak_slot", "Galaxy Games Slot") #define MCFG_GALGAMES_SLOT_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, GALGAMES_SLOT, 0) @@ -316,13 +312,10 @@ const device_type GALGAMES_SLOT = device_creator; galgames_cart_device::galgames_cart_device( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - uint32_t clock, - const char *shortname, - const char *source): - device_t(mconfig, type, name, tag, owner, clock, shortname, source), + uint32_t clock): + device_t(mconfig, type, tag, owner, clock), device_rom_interface(mconfig, *this, 21, ENDIANNESS_BIG, 16), m_mconfig_additions(nullptr), m_cart(0), @@ -568,7 +561,7 @@ DEVICE_ADDRESS_MAP_START( slot_map, 16, galgames_slot_device ) ADDRESS_MAP_END galgames_slot_device::galgames_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, GALGAMES_SLOT, "Galaxy Games Slot", tag, owner, clock, "galgames_slot", __FILE__), + device_t(mconfig, GALGAMES_SLOT, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("slot_space", ENDIANNESS_BIG, 16,22, 0, address_map_delegate(FUNC(galgames_slot_device::slot_map), this)), m_ram(*this, "ram"), @@ -968,7 +961,7 @@ int galgames_compute_addr(uint16_t reg_low, uint16_t reg_mid, uint16_t reg_high) return reg_low | (reg_mid << 16); } -static MACHINE_CONFIG_START( galgames_base, galgames_state ) +static MACHINE_CONFIG_START( galgames_base ) MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) MCFG_CPU_PROGRAM_MAP(galgames_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galgames_state, scanline_interrupt, "screen", 0, 1) @@ -996,8 +989,7 @@ static MACHINE_CONFIG_START( galgames_base, galgames_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_OKIM6295_ADD("oki", XTAL_24MHz / 8, OKIM6295_PIN7_LOW) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_24MHz / 16, PIN7_HIGH) // clock frequency & pin 7 not verified (voices in galgame4 seem ok) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1180,7 +1172,42 @@ ROM_START( galgame3 ) GALGAMES_MB_PALS ROM_END +/*************************************************************************** + +Galaxy Games StarPak 4 +(Cartridge not dumped, but files from a dev board provided by the developer) + +***************************************************************************/ + +ROM_START( galgame4 ) + ROM_REGION16_BE( 0x200000, "cart0", 0 ) + GALGAMES_BIOS_ROMS + + ROM_REGION( 0x800000, "cart1", 0 ) + ROM_LOAD16_BYTE( "sp4.u2", 0x000000, 0x100000, CRC(e51bc5e1) SHA1(dacf6cefd792713b34382b827952b66e2cb5c2b4) ) // JANUARY 12, 1998 + ROM_LOAD16_BYTE( "sp4.u1", 0x000001, 0x100000, CRC(695ab775) SHA1(e88d5f982df19e70be6124e6fdf20830475641e0) ) // "" + ROM_LOAD16_BYTE( "sp4.u6", 0x200000, 0x100000, CRC(7716895d) SHA1(8f86ffe2d94d3e756a3b7661d480e3a8c53cf178) ) + ROM_LOAD16_BYTE( "sp4.u5", 0x200001, 0x100000, CRC(6c699ba3) SHA1(f675997e1b808758f79a21b883161526242990b4) ) + ROM_LOAD16_BYTE( "sp4.u8", 0x400000, 0x100000, CRC(cdf45446) SHA1(da4e1667c7c47239e770018a7d3b8c1e4e2f4a63) ) + ROM_LOAD16_BYTE( "sp4.u7", 0x400001, 0x100000, CRC(813c46c8) SHA1(3fd4192ec7e8d5e6bfbc2a37d9b4bbebe6132b99) ) + ROM_LOAD16_BYTE( "sp4.u10", 0x600000, 0x100000, CRC(52dbf088) SHA1(da7c37366e884f40f1dea243d4aea0b2d2b314db) ) + ROM_LOAD16_BYTE( "sp4.u9", 0x600001, 0x100000, CRC(9ded1dc2) SHA1(5319edfccf47d02dfd3664cb3782cc2281c769c4) ) + + ROM_REGION( 0x2000, "cart1:pic", 0 ) + ROM_LOAD( "sp4.pic", 0x000, 0x2000, CRC(008ef1ba) SHA1(4065fcf00922de3e629084f4f4815355f271c954) ) + + ROM_REGION( 0x200000, "cart2", ROMREGION_ERASEFF ) + ROM_REGION( 0x200000, "cart3", ROMREGION_ERASEFF ) + ROM_REGION( 0x200000, "cart4", ROMREGION_ERASEFF ) + + ROM_REGION( 0x40000, "oki", ROMREGION_ERASE ) + // RAM, filled by the 68000 and fed to the OKI + + GALGAMES_MB_PALS +ROM_END + -GAME( 1998, galgbios, 0, galgbios, galgames, driver_device, 0, ROT0, "Creative Electronics & Software", "Galaxy Games BIOS", MACHINE_IS_BIOS_ROOT ) -GAME( 1998, galgame2, galgbios, galgame2, galgames, driver_device, 0, ROT0, "Creative Electronics & Software / Namco", "Galaxy Games StarPak 2", 0 ) -GAME( 1998, galgame3, galgbios, galgame3, galgames, driver_device, 0, ROT0, "Creative Electronics & Software / Atari", "Galaxy Games StarPak 3", 0 ) +GAME( 1998, galgbios, 0, galgbios, galgames, galgames_state, 0, ROT0, "Creative Electronics & Software", "Galaxy Games BIOS", MACHINE_IS_BIOS_ROOT ) +GAME( 1998, galgame2, galgbios, galgame2, galgames, galgames_state, 0, ROT0, "Creative Electronics & Software / Namco", "Galaxy Games StarPak 2", 0 ) +GAME( 1998, galgame3, galgbios, galgame3, galgames, galgames_state, 0, ROT0, "Creative Electronics & Software / Atari", "Galaxy Games StarPak 3", 0 ) +GAME( 1998, galgame4, galgbios, galgame3, galgames, galgames_state, 0, ROT0, "Creative Electronics & Software", "Galaxy Games StarPak 4 (prototype)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/galivan.cpp b/src/mame/drivers/galivan.cpp index 1b434edd8a4..0a9ce0d9447 100644 --- a/src/mame/drivers/galivan.cpp +++ b/src/mame/drivers/galivan.cpp @@ -418,7 +418,7 @@ MACHINE_RESET_MEMBER(galivan_state,ninjemak) m_ninjemak_dispdisable = 0; } -static MACHINE_CONFIG_START( galivan, galivan_state ) +static MACHINE_CONFIG_START( galivan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* 6 MHz? */ @@ -443,7 +443,7 @@ static MACHINE_CONFIG_START( galivan, galivan_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(galivan_state, screen_update_galivan) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", galivan) @@ -468,7 +468,7 @@ static MACHINE_CONFIG_START( galivan, galivan_state ) MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ninjemak, galivan_state ) +static MACHINE_CONFIG_START( ninjemak ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* 6 MHz? */ @@ -495,7 +495,7 @@ static MACHINE_CONFIG_START( ninjemak, galivan_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(galivan_state, screen_update_ninjemak) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", galivan) @@ -1180,16 +1180,16 @@ DRIVER_INIT_MEMBER(galivan_state,youmab) } -GAME( 1985, galivan, 0, galivan, galivan, driver_device, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/26/1985)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, galivan2, galivan, galivan, galivan, driver_device, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/16/1985)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, galivan3, galivan, galivan, galivan, driver_device, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/11/1985)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dangar, 0, galivan, dangar, driver_device, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (4/07/1987)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dangara, dangar, galivan, dangar2, driver_device, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (12/1/1986)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dangarb, dangar, galivan, dangar2, driver_device, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (9/26/1986)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dangarj, dangar, galivan, dangar2, driver_device, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (9/26/1986, Japan)", MACHINE_SUPPORTS_SAVE|MACHINE_NOT_WORKING ) // no sprites visable -GAME( 1986, dangarbt, dangar, galivan, dangarb, driver_device, 0, ROT270, "bootleg", "Ufo Robo Dangar (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ninjemak, 0, ninjemak, ninjemak, driver_device, 0, ROT270, "Nichibutsu", "Ninja Emaki (US)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) -GAME( 1986, youma, ninjemak, ninjemak, ninjemak, driver_device, 0, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) -GAME( 1986, youma2, ninjemak, ninjemak, ninjemak, driver_device, 0, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan, alt)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) +GAME( 1985, galivan, 0, galivan, galivan, galivan_state, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/26/1985)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, galivan2, galivan, galivan, galivan, galivan_state, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/16/1985)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, galivan3, galivan, galivan, galivan, galivan_state, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/11/1985)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dangar, 0, galivan, dangar, galivan_state, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (4/07/1987)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dangara, dangar, galivan, dangar2, galivan_state, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (12/1/1986)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dangarb, dangar, galivan, dangar2, galivan_state, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (9/26/1986)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dangarj, dangar, galivan, dangar2, galivan_state, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (9/26/1986, Japan)", MACHINE_SUPPORTS_SAVE|MACHINE_NOT_WORKING ) // no sprites visable +GAME( 1986, dangarbt, dangar, galivan, dangarb, galivan_state, 0, ROT270, "bootleg", "Ufo Robo Dangar (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ninjemak, 0, ninjemak, ninjemak, galivan_state, 0, ROT270, "Nichibutsu", "Ninja Emaki (US)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) +GAME( 1986, youma, ninjemak, ninjemak, ninjemak, galivan_state, 0, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) +GAME( 1986, youma2, ninjemak, ninjemak, ninjemak, galivan_state, 0, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan, alt)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) GAME( 1986, youmab, ninjemak, youmab, ninjemak, galivan_state, youmab, ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) // player is invincible GAME( 1986, youmab2, ninjemak, youmab, ninjemak, galivan_state, youmab, ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) // "" diff --git a/src/mame/drivers/galpani2.cpp b/src/mame/drivers/galpani2.cpp index 6d9fb7a5692..0caf5eb790f 100644 --- a/src/mame/drivers/galpani2.cpp +++ b/src/mame/drivers/galpani2.cpp @@ -619,7 +619,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(galpani2_state::galpani2_interrupt2) m_subcpu->set_input_line(3, HOLD_LINE); } -static MACHINE_CONFIG_START( galpani2, galpani2_state ) +static MACHINE_CONFIG_START( galpani2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_27MHz/2) /* Confirmed on galpani2i PCB */ @@ -660,10 +660,10 @@ static MACHINE_CONFIG_START( galpani2, galpani2_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", XTAL_20MHz/10, OKIM6295_PIN7_HIGH) /* Confirmed on galpani2i PCB */ + MCFG_OKIM6295_ADD("oki1", XTAL_20MHz/10, PIN7_HIGH) /* Confirmed on galpani2i PCB */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", XTAL_20MHz/10, OKIM6295_PIN7_HIGH) /* Confirmed on galpani2i PCB */ + MCFG_OKIM6295_ADD("oki2", XTAL_20MHz/10, PIN7_HIGH) /* Confirmed on galpani2i PCB */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -1200,15 +1200,15 @@ ROM_START( gp2quiz ) ROM_LOAD( "gp2-101-0044.u60", 0x200000, 0x100000, CRC(3c45134f) SHA1(a5362bfcc6beb6e776c1bce4544475f8947fccea) ) ROM_END -GAME( 1993, galpani2, 0, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Asia)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, galpani2e, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (English)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, galpani2e2,galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (English, 2 PCB ver.)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, galpani2g, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Germany, 2 PCB ver.)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, galpani2i, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Italy, single PCB)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, galpani2gs,galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Germany, single PCB)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, galpani2t, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Taiwan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, galpani2j, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Japan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) // it is a 'quiz edition' but the title screen doesn't say, maybe all Japanese versions have the Quiz +GAME( 1993, galpani2, 0, galpani2, galpani2, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II (Asia)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, galpani2e, galpani2, galpani2, galpani2, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II (English)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, galpani2e2,galpani2, galpani2, galpani2, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II (English, 2 PCB ver.)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, galpani2g, galpani2, galpani2, galpani2, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II (Germany, 2 PCB ver.)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, galpani2i, galpani2, galpani2, galpani2, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II (Italy, single PCB)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, galpani2gs,galpani2, galpani2, galpani2, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II (Germany, single PCB)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, galpani2t, galpani2, galpani2, galpani2, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II (Taiwan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, galpani2j, galpani2, galpani2, galpani2, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II (Japan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) // it is a 'quiz edition' but the title screen doesn't say, maybe all Japanese versions have the Quiz -GAME( 1993, gp2quiz, 0, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II - Quiz Version", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) // this one has 'quiz edition' on the title screen +GAME( 1993, gp2quiz, 0, galpani2, galpani2, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II - Quiz Version", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) // this one has 'quiz edition' on the title screen -GAME( 1994, gp2se, 0, galpani2, gp2se, driver_device, 0, ROT90, "Kaneko", "Gals Panic II' - Special Edition (Japan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, gp2se, 0, galpani2, gp2se, galpani2_state, 0, ROT90, "Kaneko", "Gals Panic II' - Special Edition (Japan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/galpani3.cpp b/src/mame/drivers/galpani3.cpp index 30f068024a9..99e238bcfe1 100644 --- a/src/mame/drivers/galpani3.cpp +++ b/src/mame/drivers/galpani3.cpp @@ -501,7 +501,7 @@ static ADDRESS_MAP_START( galpani3_map, AS_PROGRAM, 16, galpani3_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( galpani3, galpani3_state ) +static MACHINE_CONFIG_START( galpani3 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_28_63636MHz/2) // Confirmed from PCB MCFG_CPU_PROGRAM_MAP(galpani3_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galpani3_state, galpani3_vblank, "screen", 0, 1) @@ -646,7 +646,7 @@ ROM_END -GAME( 1995, galpani3, 0, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Euro)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, galpani3j, galpani3, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, galpani3k, galpani3, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Korea)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, galpani3hk,galpani3, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Hong Kong)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, galpani3, 0, galpani3, galpani3, galpani3_state, 0, ROT90, "Kaneko", "Gals Panic 3 (Euro)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, galpani3j, galpani3, galpani3, galpani3, galpani3_state, 0, ROT90, "Kaneko", "Gals Panic 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, galpani3k, galpani3, galpani3, galpani3, galpani3_state, 0, ROT90, "Kaneko", "Gals Panic 3 (Korea)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, galpani3hk,galpani3, galpani3, galpani3, galpani3_state, 0, ROT90, "Kaneko", "Gals Panic 3 (Hong Kong)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/galpanic.cpp b/src/mame/drivers/galpanic.cpp index a4ef62d4241..155a36a3cfe 100644 --- a/src/mame/drivers/galpanic.cpp +++ b/src/mame/drivers/galpanic.cpp @@ -7,13 +7,13 @@ Gals Panic 1990 Kaneko driver by Nicola Salmoria The version of Gals Panic in this driver is the one using the PANDORA chip -for sprites, other boardsets use a different sprite chip, see expro02.c +for sprites, other boardsets use a different sprite chip, see expro02.cpp Notes about Gals Panic: ----------------------- -The current ROM set is strange because two ROMs overlap two others replacing -the program. +The current unprotected ROM set is strange because two ROMs overlap two others +replacing the program. It's definitely a Kaneko boardset, but it could very well be they converted some other game to run Gals Panic, because there's some ROMs piggybacked @@ -52,7 +52,7 @@ Stephh's additional notes : * In this version, there is a "Coin Mode" Dip Switch, but no "Character Test" Dip Switch. * Area 0xe00000-0xe00014 is a "calculator" area. I've tried to - simulate it (see machine/kaneko_hit.c) by comparing the code + simulate it (see machine/kaneko_hit.cpp) by comparing the code with the other set. I don't know if there are some other unmapped reads, but the game seems to run fine with what I've done. * When you press the "Tilt" button, the game enters in an endless @@ -83,7 +83,7 @@ void galpanic_state::machine_start() membank("okibank")->configure_entries(0, 16, memregion("oki")->base(), 0x10000); } -void galpanic_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(galpanic_state::screen_vblank) { // rising edge if (state) @@ -150,9 +150,12 @@ static ADDRESS_MAP_START( galpanic_map, AS_PROGRAM, 16, galpanic_state ) AM_RANGE(0xb00000, 0xb00001) AM_WRITENOP /* ??? */ AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */ AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* ??? */ - AM_RANGE(0xe00000, 0xe00015) AM_DEVREADWRITE("calc1_mcu", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) ADDRESS_MAP_END +static ADDRESS_MAP_START( galpanica_map, AS_PROGRAM, 16, galpanic_state ) + AM_IMPORT_FROM(galpanic_map) + AM_RANGE(0xe00000, 0xe00015) AM_DEVREADWRITE("calc1_mcu", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) +ADDRESS_MAP_END static ADDRESS_MAP_START( galpanic_oki_map, AS_0, 8, galpanic_state ) AM_RANGE(0x00000, 0x2ffff) AM_ROM @@ -227,7 +230,7 @@ static GFXDECODE_START( galpanic ) GFXDECODE_END -static MACHINE_CONFIG_START( galpanic, galpanic_state ) +static MACHINE_CONFIG_START( galpanic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* verified on pcb */ @@ -243,7 +246,7 @@ static MACHINE_CONFIG_START( galpanic, galpanic_state ) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1) MCFG_SCREEN_UPDATE_DRIVER(galpanic_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(galpanic_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(galpanic_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", galpanic) @@ -255,21 +258,22 @@ static MACHINE_CONFIG_START( galpanic, galpanic_state ) MCFG_KANEKO_PANDORA_OFFSETS(0, -16) MCFG_KANEKO_PANDORA_GFXDECODE("gfxdecode") - MCFG_DEVICE_ADD("calc1_mcu", KANEKO_HIT, 0) - kaneko_hit_device::set_type(*device, 0); - /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/6, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/6, PIN7_LOW) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, galpanic_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( galpanica, galpanic ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(galpanica_map) /* basic machine hardware */ + MCFG_DEVICE_ADD("calc1_mcu", KANEKO_HIT, 0) + kaneko_hit_device::set_type(*device, 0); /* arm watchdog */ MCFG_WATCHDOG_MODIFY("watchdog") @@ -325,5 +329,26 @@ ROM_START( galpanica ) /* PAMERA-04 PCB with the CALC1 MCU used */ ROM_LOAD( "pm007e.u", 0x80000, 0x80000, CRC(c7ed7950) SHA1(133258b058d3c562208d0d00b9fac71202647c32) ) ROM_END -GAME( 1990, galpanic, 0, galpanic, galpanic, driver_device, 0, ROT90, "Kaneko", "Gals Panic (Unprotected)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, galpanica,galpanic, galpanica,galpanica, driver_device, 0, ROT90, "Kaneko", "Gals Panic (MCU Protected)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +ROM_START( galpanicb ) /* PAMERA-04 PCB with the CALC1 MCU used */ + ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "pm109p.u88-01.ic6", 0x000000, 0x20000, CRC(a6d60dba) SHA1(2a63642709051c27b9a366c433127426bb579c35) ) // read as 27C010 + ROM_LOAD16_BYTE( "pm110p.u87-01.ic5", 0x000001, 0x20000, CRC(3214fd48) SHA1(d8d77cb6b74caea2545f4e62eb9223aaf770785a) ) // read as 27C010 + ROM_LOAD16_BYTE( "pm004e.8", 0x100001, 0x80000, CRC(d3af52bc) SHA1(46be057106388578defecab1cdd1793ec76ebe92) ) + ROM_LOAD16_BYTE( "pm005e.7", 0x100000, 0x80000, CRC(d7ec650c) SHA1(6c2250c74381497154bf516e0cf1db6bb56bb446) ) + ROM_LOAD16_BYTE( "pm000e.15", 0x200001, 0x80000, CRC(5d220f3f) SHA1(7ff373e01027c8832712f7a2d732f8e49b875878) ) + ROM_LOAD16_BYTE( "pm001e.14", 0x200000, 0x80000, CRC(90433eb1) SHA1(8688a85747ad9ecac395d782f130baa64fb9d12b) ) + ROM_LOAD16_BYTE( "pm002e.17", 0x300001, 0x80000, CRC(713ee898) SHA1(c9f608a57fb90e5ee15eb76a74a7afcc406d5b4e) ) + ROM_LOAD16_BYTE( "pm003e.16", 0x300000, 0x80000, CRC(6bb060fd) SHA1(4fc3946866c5a55e8340b62b5ad9beae723ce0da) ) + + ROM_REGION( 0x100000, "gfx1", 0 ) /* sprites */ + ROM_LOAD( "pm006e.67", 0x000000, 0x100000, CRC(57aec037) SHA1(e6ba095b6892d4dcd76ba3343a97dd98ae29dc24) ) + + ROM_REGION( 0x100000, "oki", 0 ) /* OKIM6295 samples */ + /* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */ + ROM_LOAD( "pm008e.l", 0x00000, 0x80000, CRC(d9379ba8) SHA1(5ae7c743319b1a12f2b101a9f0f8fe0728ed1476) ) + ROM_LOAD( "pm007e.u", 0x80000, 0x80000, CRC(c7ed7950) SHA1(133258b058d3c562208d0d00b9fac71202647c32) ) +ROM_END + +GAME( 1990, galpanic, 0, galpanic, galpanic, galpanic_state, 0, ROT90, "Kaneko", "Gals Panic (Unprotected)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, galpanica, galpanic, galpanica, galpanica, galpanic_state, 0, ROT90, "Kaneko", "Gals Panic (MCU Protected, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, galpanicb, galpanic, galpanica, galpanica, galpanic_state, 0, ROT90, "Kaneko", "Gals Panic (MCU Protected, set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/galspnbl.cpp b/src/mame/drivers/galspnbl.cpp index 66bfb33ebab..cedc5820fe4 100644 --- a/src/mame/drivers/galspnbl.cpp +++ b/src/mame/drivers/galspnbl.cpp @@ -212,7 +212,7 @@ void galspnbl_state::machine_start() { } -static MACHINE_CONFIG_START( galspnbl, galspnbl_state ) +static MACHINE_CONFIG_START( galspnbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* 12 MHz ??? - Use value from Tecmo's Super Pinball Action - NEEDS VERIFICATION!! */ @@ -254,7 +254,7 @@ static MACHINE_CONFIG_START( galspnbl, galspnbl_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, OKIM6295_PIN7_HIGH) /* Use value from Super Pinball Action - clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, PIN7_HIGH) /* Use value from Super Pinball Action - clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -319,5 +319,5 @@ ROM_START( hotpinbl ) ROM_END -GAME( 1995, hotpinbl, 0, galspnbl, hotpinbl, driver_device, 0, ROT90, "Comad & New Japan System", "Hot Pinball", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, galspnbl, 0, galspnbl, galspnbl, driver_device, 0, ROT90, "Comad", "Gals Pinball", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, hotpinbl, 0, galspnbl, hotpinbl, galspnbl_state, 0, ROT90, "Comad & New Japan System", "Hot Pinball", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, galspnbl, 0, galspnbl, galspnbl, galspnbl_state, 0, ROT90, "Comad", "Gals Pinball", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gamate.cpp b/src/mame/drivers/gamate.cpp index edf56c3761d..132cdc1e4d0 100644 --- a/src/mame/drivers/gamate.cpp +++ b/src/mame/drivers/gamate.cpp @@ -14,8 +14,11 @@ ******************************************************************************/ #include "emu.h" -#include "includes/gamate.h" +#include "audio/gamate.h" +#include "bus/generic/carts.h" +#include "bus/generic/slot.h" +#include "cpu/m6502/m6502.h" #include "rendlay.h" #include "screen.h" #include "softlist.h" @@ -374,7 +377,7 @@ INTERRUPT_GEN_MEMBER(gamate_state::gamate_interrupt) { } -static MACHINE_CONFIG_START( gamate, gamate_state ) +static MACHINE_CONFIG_START( gamate ) MCFG_CPU_ADD("maincpu", M6502, 4433000/2) MCFG_CPU_PROGRAM_MAP(gamate_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", gamate_state, gamate_interrupt) @@ -430,5 +433,5 @@ ROM_START(gamate) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -CONS( 1990, gamate, 0, 0, gamate, gamate, gamate_state, gamate, "Bit Corp", "Gamate", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS( 1990, gamate, 0, 0, gamate, gamate, gamate_state, gamate, "Bit Corp", "Gamate", 0 ) diff --git a/src/mame/drivers/gambl186.cpp b/src/mame/drivers/gambl186.cpp index b9d896ea5e3..0334298b544 100644 --- a/src/mame/drivers/gambl186.cpp +++ b/src/mame/drivers/gambl186.cpp @@ -465,7 +465,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( gambl186, gambl186_state ) +static MACHINE_CONFIG_START( gambl186 ) MCFG_CPU_ADD("maincpu", I80186, XTAL_40MHz) MCFG_CPU_PROGRAM_MAP(gambl186_map) MCFG_CPU_IO_MAP(gambl186_io) @@ -524,6 +524,6 @@ ROM_START( gambl186b ) ROM_END // version numbering isn't clear, rom labels don't agree with test mode display. -GAME( 1997, gambl186, 0, gambl186, gambl186, driver_device, 0, ROT0, "EGD", "Multi Game (Versione 4.0.3 - 1.5.7, 05-FEV-99(397)) (V398?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Versione 4.0.3 (1.5.7), csmb15A, CSMB_0015A (IT), - 05-FEV-99(397) -GAME( 1997, gambl186a, gambl186, gambl186, gambl186, driver_device, 0, ROT0, "EGD", "Multi Game (Versione 4.0.3 - 1.5.7, 05-FEV-99(397)) (V399?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // same? -GAME( 1997, gambl186b, gambl186, gambl186, gambl186, driver_device, 0, ROT0, "EGD", "Multi Game (Versione 3.8.6T - 1.5.6, 25-AUG-97) (V378?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Versione 3.8.6T (1.5.6), mult5_it, CSMB-0000F (IT), 25-AUG-97 +GAME( 1997, gambl186, 0, gambl186, gambl186, gambl186_state, 0, ROT0, "EGD", "Multi Game (Versione 4.0.3 - 1.5.7, 05-FEV-99(397)) (V398?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Versione 4.0.3 (1.5.7), csmb15A, CSMB_0015A (IT), - 05-FEV-99(397) +GAME( 1997, gambl186a, gambl186, gambl186, gambl186, gambl186_state, 0, ROT0, "EGD", "Multi Game (Versione 4.0.3 - 1.5.7, 05-FEV-99(397)) (V399?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // same? +GAME( 1997, gambl186b, gambl186, gambl186, gambl186, gambl186_state, 0, ROT0, "EGD", "Multi Game (Versione 3.8.6T - 1.5.6, 25-AUG-97) (V378?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Versione 3.8.6T (1.5.6), mult5_it, CSMB-0000F (IT), 25-AUG-97 diff --git a/src/mame/drivers/gamecom.cpp b/src/mame/drivers/gamecom.cpp index 468abc79744..5a3763bfbca 100644 --- a/src/mame/drivers/gamecom.cpp +++ b/src/mame/drivers/gamecom.cpp @@ -247,7 +247,7 @@ INTERRUPT_GEN_MEMBER(gamecom_state::gamecom_interrupt) m_maincpu->set_input_line(sm8500_cpu_device::LCDC_INT, ASSERT_LINE ); } -static MACHINE_CONFIG_START( gamecom, gamecom_state ) +static MACHINE_CONFIG_START( gamecom ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", SM8500, XTAL_11_0592MHz/2 ) /* actually it's an sm8521 microcontroller containing an sm8500 cpu */ MCFG_CPU_PROGRAM_MAP( gamecom_mem_map) @@ -303,5 +303,5 @@ ROM_START( gamecom ) ROM_LOAD( "external.bin", 0x00000, 0x40000, CRC(e235a589) SHA1(97f782e72d738f4d7b861363266bf46b438d9b50) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -CONS( 1997, gamecom, 0, 0, gamecom, gamecom, gamecom_state, gamecom, "Tiger", "Game.com", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS( 1997, gamecom, 0, 0, gamecom, gamecom, gamecom_state, gamecom, "Tiger", "Game.com", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/gamecstl.cpp b/src/mame/drivers/gamecstl.cpp index 19f16bd744a..03a738d3590 100644 --- a/src/mame/drivers/gamecstl.cpp +++ b/src/mame/drivers/gamecstl.cpp @@ -428,7 +428,7 @@ void gamecstl_state::machine_reset() membank("bank1")->set_base(memregion("bios")->base() + 0x30000); } -static MACHINE_CONFIG_START( gamecstl, gamecstl_state ) +static MACHINE_CONFIG_START( gamecstl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PENTIUM3, 200000000) MCFG_CPU_PROGRAM_MAP(gamecstl_map) @@ -493,5 +493,5 @@ ROM_END /*****************************************************************************/ -GAME(2002, gamecstl, 0, gamecstl, gamecstl, gamecstl_state, gamecstl, ROT0, "Cristaltec", "GameCristal", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(2002, gamecstl, 0, gamecstl, gamecstl, gamecstl_state, gamecstl, ROT0, "Cristaltec", "GameCristal", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) GAME(2002, gamecst2, gamecstl, gamecstl, gamecstl, gamecstl_state, gamecstl, ROT0, "Cristaltec", "GameCristal (version 2.613)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/gameking.cpp b/src/mame/drivers/gameking.cpp index 6ec2dc1d045..3ea039eaa36 100644 --- a/src/mame/drivers/gameking.cpp +++ b/src/mame/drivers/gameking.cpp @@ -276,7 +276,7 @@ INTERRUPT_GEN_MEMBER(gameking_state::gameking_frame_int) // guess to get over bi } -static MACHINE_CONFIG_START( gameking, gameking_state ) +static MACHINE_CONFIG_START( gameking ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R65C02, 6000000) MCFG_CPU_PROGRAM_MAP(gameking_mem) @@ -320,9 +320,9 @@ ROM_START(gamekin3) ROM_LOAD("gm220.bin", 0x10000, 0x80000, CRC(1dc43bd5) SHA1(f9dcd3cb76bb7cb10565a1acb070ab375c082b4c) ) ROM_END -CONS(2003, gameking, 0, 0, gameking1, gameking, gameking_state, gameking, "TimeTop", "GameKing GM-218", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 2003, gameking, 0, 0, gameking1, gameking, gameking_state, gameking, "TimeTop", "GameKing GM-218", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // the GameKing 2 (GM-219) is probably identical HW -CONS(2003, gamekin3, 0, 0, gameking3, gameking, gameking_state, gameking, "TimeTop", "GameKing 3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 2003, gamekin3, 0, 0, gameking3, gameking, gameking_state, gameking, "TimeTop", "GameKing 3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // gameking 3: similiar cartridges, accepts gameking cartridges, gameking3 cartridges not working on gameking (illegal cartridge scroller) // my gameking bios backup solution might work on it diff --git a/src/mame/drivers/gameplan.cpp b/src/mame/drivers/gameplan.cpp index 6b7d4101535..1460568edfa 100644 --- a/src/mame/drivers/gameplan.cpp +++ b/src/mame/drivers/gameplan.cpp @@ -68,9 +68,9 @@ Notes: TODO: - The board has, instead of a watchdog, a timed reset that has to be disabled on startup. The disable line is tied to CA2 of VIA2, but I don't see writes - to that pin in the log. Missing support in machine/6522via.c? + to that pin in the log. Missing support in machine/6522via.cpp? - Kaos needs a kludge to avoid a deadlock (see the via_irq() function below). - I don't know if this is a shortcoming of the driver or of 6522via.c. + I don't know if this is a shortcoming of the driver or of 6522via.cpp. - Investigate and document the 8910 dip switches - Fix the input ports of Kaos @@ -956,7 +956,7 @@ MACHINE_RESET_MEMBER(gameplan_state,gameplan) m_video_data = 0; } -static MACHINE_CONFIG_START( gameplan, gameplan_state ) +static MACHINE_CONFIG_START( gameplan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, GAMEPLAN_MAIN_CPU_CLOCK) @@ -1060,6 +1060,21 @@ ROM_START( megatack ) ROM_LOAD( "megatsnd.e1", 0xe000, 0x0800, CRC(0c186bdb) SHA1(233af9481a3979971f2d5aa75ec8df4333aa5e0d) ) ROM_END +ROM_START( megatacka ) // original Centuri PCB + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "meg-e2.bin", 0xc000, 0x0800, CRC(9664c7b1) SHA1(356e7f5f3b2a9b829fac53e7bf9193278b4de2ed) ) + ROM_LOAD( "meg-f2.bin", 0xc800, 0x0800, CRC(67c42523) SHA1(f9fc88cdea05a2d0e89e3ba9b545bf3476b37d2d) ) + ROM_LOAD( "meg-g2.bin", 0xd000, 0x0800, CRC(71f36604) SHA1(043988126343b6224e8e1d6c0dbba6b6b08fe493) ) + ROM_LOAD( "meg-j2.bin", 0xd800, 0x0800, CRC(4ddcc145) SHA1(3a6d42a58c388eaaf6561351fa98936d98975e0b) ) + ROM_LOAD( "meg-j1.bin", 0xe000, 0x0800, CRC(911d5d9a) SHA1(92bfe0f69a6e563363df59ebee745d7b3cfc0141) ) + ROM_LOAD( "meg-g1.bin", 0xe800, 0x0800, CRC(22a51c9b) SHA1(556e09216ed85eaf3870f85515c273c7eb1ab13a) ) + ROM_LOAD( "meg-f1.bin", 0xf000, 0x0800, CRC(2ffa51ac) SHA1(7c5d8295c5e71a9918a02d203139b024bd3bf8f4) ) + ROM_LOAD( "meg-e1.bin", 0xf800, 0x0800, CRC(01dbe4ad) SHA1(af72778ae112f24a92fb3007bb456331c3896b50) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "megatsnd.e1", 0xe000, 0x0800, CRC(0c186bdb) SHA1(233af9481a3979971f2d5aa75ec8df4333aa5e0d) ) // missing for this board, using the one from the parent +ROM_END + ROM_START( challeng ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "chall.6", 0xa000, 0x1000, CRC(b30fe7f5) SHA1(ce93a57d626f90d31ddedbc35135f70758949dfa) ) @@ -1160,11 +1175,12 @@ ROM_END * *************************************/ -GAME( 1980, killcom, 0, gameplan, killcom, driver_device, 0, ROT0, "Game Plan (Centuri license)", "Killer Comet", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, megatack, 0, gameplan, megatack, driver_device, 0, ROT0, "Game Plan (Centuri license)", "Megatack", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, challeng, 0, gameplan, challeng, driver_device, 0, ROT0, "Game Plan (Centuri license)", "Challenger", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, kaos, 0, gameplan, kaos, driver_device, 0, ROT270, "Game Plan", "Kaos", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, leprechn, 0, leprechn, leprechn, driver_device, 0, ROT0, "Tong Electronic", "Leprechaun", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, potogold, leprechn, leprechn, potogold, driver_device, 0, ROT0, "Tong Electronic (Game Plan license)", "Pot of Gold", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, leprechp, leprechn, leprechn, potogold, driver_device, 0, ROT0, "Tong Electronic (Pacific Polytechnical license)", "Leprechaun (Pacific)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, piratetr, 0, leprechn, piratetr, driver_device, 0, ROT0, "Tong Electronic", "Pirate Treasure", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, killcom, 0, gameplan, killcom, gameplan_state, 0, ROT0, "Game Plan (Centuri license)", "Killer Comet", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, megatack, 0, gameplan, megatack, gameplan_state, 0, ROT0, "Game Plan (Centuri license)", "Megatack (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, megatacka, megatack, gameplan, megatack, gameplan_state, 0, ROT0, "Game Plan (Centuri license)", "Megatack (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, challeng, 0, gameplan, challeng, gameplan_state, 0, ROT0, "Game Plan (Centuri license)", "Challenger", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, kaos, 0, gameplan, kaos, gameplan_state, 0, ROT270, "Game Plan", "Kaos", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, leprechn, 0, leprechn, leprechn, gameplan_state, 0, ROT0, "Tong Electronic", "Leprechaun", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, potogold, leprechn, leprechn, potogold, gameplan_state, 0, ROT0, "Tong Electronic (Game Plan license)", "Pot of Gold", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, leprechp, leprechn, leprechn, potogold, gameplan_state, 0, ROT0, "Tong Electronic (Pacific Polytechnical license)", "Leprechaun (Pacific)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, piratetr, 0, leprechn, piratetr, gameplan_state, 0, ROT0, "Tong Electronic", "Pirate Treasure", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gamepock.cpp b/src/mame/drivers/gamepock.cpp index 50325e3ca79..2db060cf319 100644 --- a/src/mame/drivers/gamepock.cpp +++ b/src/mame/drivers/gamepock.cpp @@ -41,7 +41,7 @@ static INPUT_PORTS_START( gamepock ) INPUT_PORTS_END -static MACHINE_CONFIG_START( gamepock, gamepock_state ) +static MACHINE_CONFIG_START( gamepock ) MCFG_CPU_ADD("maincpu", UPD78C06, XTAL_6MHz) /* uPD78C06AG */ MCFG_CPU_PROGRAM_MAP( gamepock_mem) MCFG_UPD7810_PORTA_WRITE_CB(WRITE8(gamepock_state, port_a_w)) @@ -80,4 +80,4 @@ ROM_START( gamepock ) ROM_END -CONS( 1984, gamepock, 0, 0, gamepock, gamepock, driver_device, 0, "Epoch", "Game Pocket Computer", 0 ) +CONS( 1984, gamepock, 0, 0, gamepock, gamepock, gamepock_state, 0, "Epoch", "Game Pocket Computer", 0 ) diff --git a/src/mame/drivers/gammagic.cpp b/src/mame/drivers/gammagic.cpp index 33bffb291de..0bb6a173b03 100644 --- a/src/mame/drivers/gammagic.cpp +++ b/src/mame/drivers/gammagic.cpp @@ -122,7 +122,7 @@ void gammagic_state::machine_start() { } -static MACHINE_CONFIG_START( gammagic, gammagic_state ) +static MACHINE_CONFIG_START( gammagic ) MCFG_CPU_ADD("maincpu", PENTIUM, 133000000) // Intel Pentium 133 MCFG_CPU_PROGRAM_MAP(gammagic_map) MCFG_CPU_IO_MAP(gammagic_io) @@ -181,6 +181,6 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1999, gammagic, 0, gammagic, gammagic, driver_device, 0, ROT0, "Bally Gaming Co.", "Game Magic", MACHINE_IS_SKELETON ) -GAME( 1999, 99bottles, gammagic, gammagic, gammagic, driver_device, 0, ROT0, "Bally Gaming Co.", "99 Bottles of Beer", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1999, gammagic, 0, gammagic, gammagic, gammagic_state, 0, ROT0, "Bally Gaming Co.", "Game Magic", MACHINE_IS_SKELETON ) +GAME( 1999, 99bottles, gammagic, gammagic, gammagic, gammagic_state, 0, ROT0, "Bally Gaming Co.", "99 Bottles of Beer", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/gamtor.cpp b/src/mame/drivers/gamtor.cpp index 2b7aa1ca10a..9c0b05891c4 100644 --- a/src/mame/drivers/gamtor.cpp +++ b/src/mame/drivers/gamtor.cpp @@ -77,7 +77,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( gaminator, gaminator_state ) +static MACHINE_CONFIG_START( gaminator ) MCFG_CPU_ADD("maincpu", MCF5206E, 40000000) /* definitely Coldfire, model / clock uncertain */ MCFG_CPU_PROGRAM_MAP(gaminator_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", gaminator_state, irq6_line_hold) // irq6 seems to be needed to get past the ROM checking diff --git a/src/mame/drivers/gaplus.cpp b/src/mame/drivers/gaplus.cpp index a4b0fc366cf..4646a889490 100644 --- a/src/mame/drivers/gaplus.cpp +++ b/src/mame/drivers/gaplus.cpp @@ -214,25 +214,25 @@ void gaplus_state::device_timer(emu_timer &timer, device_timer_id id, int param, { switch (id) { - case TIMER_NAMCOIO_RUN: - namcoio_run(ptr, param); + case TIMER_NAMCOIO0_RUN: + namcoio0_run(ptr, param); + break; + case TIMER_NAMCOIO1_RUN: + namcoio1_run(ptr, param); break; default: assert_always(false, "Unknown id in gaplus_state::device_timer"); } } -TIMER_CALLBACK_MEMBER(gaplus_state::namcoio_run) +TIMER_CALLBACK_MEMBER(gaplus_state::namcoio0_run) { - switch (param) - { - case 0: - m_namco58xx->customio_run(); - break; - case 1: - m_namco56xx->customio_run(); - break; - } + m_namco58xx->customio_run(); +} + +TIMER_CALLBACK_MEMBER(gaplus_state::namcoio1_run) +{ + m_namco56xx->customio_run(); } INTERRUPT_GEN_MEMBER(gaplus_state::vblank_main_irq) @@ -241,10 +241,10 @@ INTERRUPT_GEN_MEMBER(gaplus_state::vblank_main_irq) m_maincpu->set_input_line(0, ASSERT_LINE); if (!m_namco58xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */ - timer_set(attotime::from_usec(50), TIMER_NAMCOIO_RUN, 0); + m_namcoio0_run_timer->adjust(attotime::from_usec(50)); if (!m_namco56xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */ - timer_set(attotime::from_usec(50), TIMER_NAMCOIO_RUN, 1); + m_namcoio1_run_timer->adjust(attotime::from_usec(50)); } INTERRUPT_GEN_MEMBER(gaplus_state::gapluso_vblank_main_irq) @@ -253,10 +253,10 @@ INTERRUPT_GEN_MEMBER(gaplus_state::gapluso_vblank_main_irq) m_maincpu->set_input_line(0, ASSERT_LINE); if (!m_namco58xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */ - timer_set(attotime::from_usec(50), TIMER_NAMCOIO_RUN, 1); + m_namcoio1_run_timer->adjust(attotime::from_usec(50)); if (!m_namco56xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */ - timer_set(attotime::from_usec(50), TIMER_NAMCOIO_RUN, 0); + m_namcoio0_run_timer->adjust(attotime::from_usec(50)); } INTERRUPT_GEN_MEMBER(gaplus_state::vblank_sub_irq) @@ -490,6 +490,9 @@ WRITE8_MEMBER(gaplus_state::out_lamps1) void gaplus_state::machine_start() { + m_namcoio0_run_timer = timer_alloc(TIMER_NAMCOIO0_RUN); + m_namcoio1_run_timer = timer_alloc(TIMER_NAMCOIO1_RUN); + switch (m_type) { case GAME_GALAGA3: @@ -509,7 +512,7 @@ void gaplus_state::machine_start() } -static MACHINE_CONFIG_START( gaplus, gaplus_state ) +static MACHINE_CONFIG_START( gaplus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 24576000/16) /* 1.536 MHz */ @@ -528,7 +531,7 @@ static MACHINE_CONFIG_START( gaplus, gaplus_state ) MCFG_WATCHDOG_ADD("watchdog") - MCFG_DEVICE_ADD("namcoio_1", NAMCO56XX, 0) + MCFG_DEVICE_ADD("namcoio_1", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2")) @@ -536,7 +539,7 @@ static MACHINE_CONFIG_START( gaplus, gaplus_state ) MCFG_NAMCO56XX_OUT_0_CB(WRITE8(gaplus_state, out_lamps0)) MCFG_NAMCO56XX_OUT_1_CB(WRITE8(gaplus_state, out_lamps1)) - MCFG_DEVICE_ADD("namcoio_2", NAMCO58XX, 0) + MCFG_DEVICE_ADD("namcoio_2", NAMCO_58XX, 0) MCFG_NAMCO58XX_IN_0_CB(IOPORT("DSWA_HIGH")) MCFG_NAMCO58XX_IN_1_CB(IOPORT("DSWB_LOW")) MCFG_NAMCO58XX_IN_2_CB(IOPORT("DSWB_HIGH")) @@ -557,7 +560,7 @@ static MACHINE_CONFIG_START( gaplus, gaplus_state ) MCFG_SCREEN_SIZE(36*8, 28*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(gaplus_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(gaplus_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(gaplus_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", gaplus) @@ -580,13 +583,13 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gaplusd, gaplus ) - MCFG_DEVICE_REPLACE("namcoio_1", NAMCO58XX, 0) + MCFG_DEVICE_REPLACE("namcoio_1", NAMCO_58XX, 0) MCFG_NAMCO58XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO58XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO58XX_IN_2_CB(IOPORT("P2")) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) - MCFG_DEVICE_REPLACE("namcoio_2", NAMCO56XX, 0) + MCFG_DEVICE_REPLACE("namcoio_2", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(IOPORT("DSWA_HIGH")) MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSWB_LOW")) MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSWB_HIGH")) @@ -599,13 +602,13 @@ static MACHINE_CONFIG_DERIVED( gapluso, gaplusd ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_VBLANK_INT_DRIVER("screen", gaplus_state, gapluso_vblank_main_irq) - MCFG_DEVICE_REPLACE("namcoio_1", NAMCO56XX, 0) + MCFG_DEVICE_REPLACE("namcoio_1", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2")) MCFG_NAMCO56XX_IN_3_CB(IOPORT("BUTTONS")) - MCFG_DEVICE_REPLACE("namcoio_2", NAMCO58XX, 0) + MCFG_DEVICE_REPLACE("namcoio_2", NAMCO_58XX, 0) MCFG_NAMCO58XX_IN_0_CB(IOPORT("DSWA_HIGH")) MCFG_NAMCO58XX_IN_1_CB(IOPORT("DSWB_LOW")) MCFG_NAMCO58XX_IN_2_CB(IOPORT("DSWB_HIGH")) diff --git a/src/mame/drivers/gatron.cpp b/src/mame/drivers/gatron.cpp index 2dcef27e1e0..659dda32ff0 100644 --- a/src/mame/drivers/gatron.cpp +++ b/src/mame/drivers/gatron.cpp @@ -563,7 +563,7 @@ GFXDECODE_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( gat, gatron_state ) +static MACHINE_CONFIG_START( gat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/24) /* 666.66 kHz, guess */ @@ -638,7 +638,7 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1983, poker41, 0, gat, poker41, driver_device, 0, ROT0, "Game-A-Tron", "Four In One Poker", 0, layout_poker41 ) -GAMEL( 1983, pulltabs, 0, gat, pulltabs, driver_device, 0, ROT0, "Game-A-Tron", "Pull Tabs", 0, layout_pulltabs ) -GAMEL( 1983, bingo, 0, gat, bingo, driver_device, 0, ROT0, "Game-A-Tron", "Bingo", 0, layout_bingo ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +GAMEL( 1983, poker41, 0, gat, poker41, gatron_state, 0, ROT0, "Game-A-Tron", "Four In One Poker", 0, layout_poker41 ) +GAMEL( 1983, pulltabs, 0, gat, pulltabs, gatron_state, 0, ROT0, "Game-A-Tron", "Pull Tabs", 0, layout_pulltabs ) +GAMEL( 1983, bingo, 0, gat, bingo, gatron_state, 0, ROT0, "Game-A-Tron", "Bingo", 0, layout_bingo ) diff --git a/src/mame/drivers/gauntlet.cpp b/src/mame/drivers/gauntlet.cpp index a1eb2ba0c42..ad4aefc67af 100644 --- a/src/mame/drivers/gauntlet.cpp +++ b/src/mame/drivers/gauntlet.cpp @@ -491,7 +491,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( gauntlet_base, gauntlet_state ) +static MACHINE_CONFIG_START( gauntlet_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2) @@ -1697,35 +1697,35 @@ DRIVER_INIT_MEMBER(gauntlet_state,vindctr2) * *************************************/ -GAME( 1985, gauntlet, 0, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 14)", 0 ) -GAME( 1985, gauntlets, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (Spanish, rev 15)", 0 ) -GAME( 1985, gauntletj, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (Japanese, rev 13)", 0 ) -GAME( 1985, gauntletg, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (German, rev 10)", 0 ) -GAME( 1985, gauntletj12, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (Japanese, rev 12)", 0 ) -GAME( 1985, gauntletr9, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 9)", 0 ) -GAME( 1985, gauntletgr8, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (German, rev 8)", 0 ) -GAME( 1985, gauntletr7, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 7)", 0 ) -GAME( 1985, gauntletgr6, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (German, rev 6)", 0 ) -GAME( 1985, gauntletr5, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 5)", 0 ) -GAME( 1985, gauntletr4, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 4)", 0 ) -GAME( 1985, gauntletgr3, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (German, rev 3)", 0 ) -GAME( 1985, gauntletr2, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 2)", 0 ) -GAME( 1985, gauntletr1, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 1)", 0 ) - -GAME( 1985, gauntlet2p, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, rev 6)", 0 ) -GAME( 1985, gauntlet2pj, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, Japanese, rev 5)", 0 ) -GAME( 1985, gauntlet2pg, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, German, rev 4)", 0 ) -GAME( 1985, gauntlet2pr3, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, rev 3)", 0 ) -GAME( 1985, gauntlet2pj2, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, Japanese, rev 2)", 0 ) -GAME( 1985, gauntlet2pg1, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, German, rev 1)", 0 ) - -GAME( 1986, gaunt2, 0, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II", 0 ) -GAME( 1986, gaunt2g, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (German)", 0 ) - -GAME( 1986, gaunt22p, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (2 Players, rev 2)", 0 ) -GAME( 1986, gaunt22p1, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (2 Players, rev 1)", 0 ) -GAME( 1986, gaunt22pg, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (2 Players, German)", 0 ) - -GAME( 1988, vindctr2, 0, vindctr2, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 3)", 0 ) -GAME( 1988, vindctr2r2, vindctr2, vindctr2, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 2)", 0 ) -GAME( 1988, vindctr2r1, vindctr2, vindctr2, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 1)", 0 ) +GAME( 1985, gauntlet, 0, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 14)", 0 ) +GAME( 1985, gauntlets, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (Spanish, rev 15)", 0 ) +GAME( 1985, gauntletj, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (Japanese, rev 13)", 0 ) +GAME( 1985, gauntletg, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (German, rev 10)", 0 ) +GAME( 1985, gauntletj12, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (Japanese, rev 12)", 0 ) +GAME( 1985, gauntletr9, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 9)", 0 ) +GAME( 1985, gauntletgr8, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (German, rev 8)", 0 ) +GAME( 1985, gauntletr7, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 7)", 0 ) +GAME( 1985, gauntletgr6, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (German, rev 6)", 0 ) +GAME( 1985, gauntletr5, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 5)", 0 ) +GAME( 1985, gauntletr4, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 4)", 0 ) +GAME( 1985, gauntletgr3, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (German, rev 3)", 0 ) +GAME( 1985, gauntletr2, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 2)", 0 ) +GAME( 1985, gauntletr1, gauntlet, gauntlet, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (rev 1)", 0 ) + +GAME( 1985, gauntlet2p, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, rev 6)", 0 ) +GAME( 1985, gauntlet2pj, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, Japanese, rev 5)", 0 ) +GAME( 1985, gauntlet2pg, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, German, rev 4)", 0 ) +GAME( 1985, gauntlet2pr3, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, rev 3)", 0 ) +GAME( 1985, gauntlet2pj2, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, Japanese, rev 2)", 0 ) +GAME( 1985, gauntlet2pg1, gauntlet, gaunt2p, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet (2 Players, German, rev 1)", 0 ) + +GAME( 1986, gaunt2, 0, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II", 0 ) +GAME( 1986, gaunt2g, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (German)", 0 ) + +GAME( 1986, gaunt22p, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (2 Players, rev 2)", 0 ) +GAME( 1986, gaunt22p1, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (2 Players, rev 1)", 0 ) +GAME( 1986, gaunt22pg, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Atari Games", "Gauntlet II (2 Players, German)", 0 ) + +GAME( 1988, vindctr2, 0, vindctr2, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 3)", 0 ) +GAME( 1988, vindctr2r2, vindctr2, vindctr2, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 2)", 0 ) +GAME( 1988, vindctr2r1, vindctr2, vindctr2, vindctr2, gauntlet_state, vindctr2, ROT0, "Atari Games", "Vindicators Part II (rev 1)", 0 ) diff --git a/src/mame/drivers/gb.cpp b/src/mame/drivers/gb.cpp index 928668dea91..311dcd8b649 100644 --- a/src/mame/drivers/gb.cpp +++ b/src/mame/drivers/gb.cpp @@ -625,7 +625,7 @@ PALETTE_INIT_MEMBER(megaduck_state, megaduck) } -static MACHINE_CONFIG_START( gameboy, gb_state ) +static MACHINE_CONFIG_START( gameboy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", LR35902, XTAL_4_194304Mhz) @@ -665,7 +665,7 @@ static MACHINE_CONFIG_START( gameboy, gb_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( supergb, gb_state ) +static MACHINE_CONFIG_START( supergb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", LR35902, 4295454) /* 4.295454 MHz, derived from SNES xtal */ MCFG_CPU_PROGRAM_MAP(sgb_map) @@ -740,7 +740,7 @@ static MACHINE_CONFIG_DERIVED( gbpocket, gameboy ) MCFG_MGB_PPU_ADD("ppu", "maincpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gbcolor, gb_state ) +static MACHINE_CONFIG_START( gbcolor ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", LR35902, XTAL_4_194304Mhz) // todo XTAL_8_388MHz @@ -786,7 +786,7 @@ static MACHINE_CONFIG_START( gbcolor, gb_state ) MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gb_list","gameboy") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( megaduck, megaduck_state ) +static MACHINE_CONFIG_START( megaduck ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", LR35902, XTAL_4_194304Mhz) /* 4.194304 MHz */ @@ -866,12 +866,12 @@ ROM_START(megaduck) ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS(1990, gameboy, 0, 0, gameboy, gameboy, driver_device, 0, "Nintendo", "Game Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) -CONS(1994, supergb, gameboy, 0, supergb, gameboy, driver_device, 0, "Nintendo", "Super Game Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) -CONS(1998, supergb2, gameboy, 0, supergb2, gameboy, driver_device, 0, "Nintendo", "Super Game Boy 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) -CONS(1996, gbpocket, gameboy, 0, gbpocket, gameboy, driver_device, 0, "Nintendo", "Game Boy Pocket", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) -CONS(1998, gbcolor, 0, 0, gbcolor, gameboy, driver_device, 0, "Nintendo", "Game Boy Color", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +CONS(1990, gameboy, 0, 0, gameboy, gameboy, gb_state, 0, "Nintendo", "Game Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +CONS(1994, supergb, gameboy, 0, supergb, gameboy, gb_state, 0, "Nintendo", "Super Game Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +CONS(1998, supergb2, gameboy, 0, supergb2, gameboy, gb_state, 0, "Nintendo", "Super Game Boy 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +CONS(1996, gbpocket, gameboy, 0, gbpocket, gameboy, gb_state, 0, "Nintendo", "Game Boy Pocket", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +CONS(1998, gbcolor, 0, 0, gbcolor, gameboy, gb_state, 0, "Nintendo", "Game Boy Color", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) // Sound is not 100% yet, it generates some sounds which could be ok. Since we're lacking a real system there's no way to verify. -CONS( 1993, megaduck, 0, 0, megaduck, gameboy, driver_device, 0, "Welback Holdings (Timlex International) / Creatronic / Videojet / Cougar USA", "Mega Duck / Cougar Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 1993, megaduck, 0, 0, megaduck, gameboy, megaduck_state, 0, "Welback Holdings (Timlex International) / Creatronic / Videojet / Cougar USA", "Mega Duck / Cougar Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp index dbd69b29c38..0596c095117 100644 --- a/src/mame/drivers/gba.cpp +++ b/src/mame/drivers/gba.cpp @@ -1397,7 +1397,7 @@ static SLOT_INTERFACE_START(gba_cart) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( gbadv, gba_state ) +static MACHINE_CONFIG_START( gbadv ) MCFG_CPU_ADD("maincpu", ARM7, XTAL_16_777216MHz) MCFG_CPU_PROGRAM_MAP(gba_map) @@ -1435,5 +1435,5 @@ ROM_START( gba ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS(2001, gba, 0, 0, gbadv, gbadv, driver_device, 0, "Nintendo", "Game Boy Advance", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS(2001, gba, 0, 0, gbadv, gbadv, gba_state, 0, "Nintendo", "Game Boy Advance", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/gberet.cpp b/src/mame/drivers/gberet.cpp index 63c8e06c465..cf6b5edf565 100644 --- a/src/mame/drivers/gberet.cpp +++ b/src/mame/drivers/gberet.cpp @@ -405,7 +405,7 @@ MACHINE_RESET_MEMBER(gberet_state,gberet) m_spritebank = 0; } -static MACHINE_CONFIG_START( gberet, gberet_state ) +static MACHINE_CONFIG_START( gberet ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) // X1S (generated by a custom IC) @@ -445,7 +445,7 @@ static MACHINE_CONFIG_DERIVED( mrgoemon, gberet ) MCFG_CPU_PROGRAM_MAP(mrgoemon_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gberetb, gberet_state ) +static MACHINE_CONFIG_START( gberetb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_20MHz/4) // divider guessed @@ -589,7 +589,7 @@ DRIVER_INIT_MEMBER(gberet_state,mrgoemon) * *************************************/ -GAME( 1985, gberet, 0, gberet, gberet, driver_device, 0, ROT0, "Konami", "Green Beret", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, rushatck, gberet, gberet, gberet, driver_device, 0, ROT0, "Konami", "Rush'n Attack (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, gberetb, gberet, gberetb, gberetb, driver_device, 0, ROT0, "bootleg", "Green Beret (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gberet, 0, gberet, gberet, gberet_state, 0, ROT0, "Konami", "Green Beret", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, rushatck, gberet, gberet, gberet, gberet_state, 0, ROT0, "Konami", "Rush'n Attack (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gberetb, gberet, gberetb, gberetb, gberet_state, 0, ROT0, "bootleg", "Green Beret (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, mrgoemon, 0, mrgoemon, mrgoemon, gberet_state, mrgoemon, ROT0, "Konami", "Mr. Goemon (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gcpinbal.cpp b/src/mame/drivers/gcpinbal.cpp index ffda8f064cc..32229922207 100644 --- a/src/mame/drivers/gcpinbal.cpp +++ b/src/mame/drivers/gcpinbal.cpp @@ -112,7 +112,7 @@ INTERRUPT_GEN_MEMBER(gcpinbal_state::gcpinbal_interrupt) { /* Unsure of actual sequence */ - timer_set(downcast(&device)->cycles_to_attotime(500), TIMER_GCPINBAL_INTERRUPT1); + m_int1_timer->adjust(m_maincpu->cycles_to_attotime(500)); device.execute().set_input_line(4, HOLD_LINE); } @@ -411,6 +411,8 @@ GFXDECODE_END void gcpinbal_state::machine_start() { + m_int1_timer = timer_alloc(TIMER_GCPINBAL_INTERRUPT1); + save_item(NAME(m_scrollx)); save_item(NAME(m_scrolly)); save_item(NAME(m_bg0_gfxset)); @@ -445,7 +447,7 @@ void gcpinbal_state::machine_reset() m_msm_bank = 0; } -static MACHINE_CONFIG_START( gcpinbal, gcpinbal_state ) +static MACHINE_CONFIG_START( gcpinbal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16 MHz */ @@ -473,7 +475,7 @@ static MACHINE_CONFIG_START( gcpinbal, gcpinbal_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_DEVICE_ADD("adpcm_select", HCT157, 0) @@ -481,7 +483,7 @@ static MACHINE_CONFIG_START( gcpinbal, gcpinbal_state ) MCFG_SOUND_ADD("msm", MSM6585, XTAL_640kHz) MCFG_MSM6585_VCLK_CB(WRITELINE(gcpinbal_state, gcp_adpcm_int)) /* VCK function */ - MCFG_MSM6585_PRESCALER_SELECTOR(MSM6585_S40) /* 16 kHz */ + MCFG_MSM6585_PRESCALER_SELECTOR(S40) /* 16 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -540,5 +542,5 @@ ROM_START( gcpinbal ) ROM_END -GAME( 1994, pwrflip, 0, gcpinbal, gcpinbal, driver_device, 0, ROT270, "Excellent System", "Power Flipper Pinball Shooting v1.33", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, gcpinbal, 0, gcpinbal, gcpinbal, driver_device, 0, ROT270, "Excellent System", "Grand Cross v1.02F", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, pwrflip, 0, gcpinbal, gcpinbal, gcpinbal_state, 0, ROT270, "Excellent System", "Power Flipper Pinball Shooting v1.33", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, gcpinbal, 0, gcpinbal, gcpinbal, gcpinbal_state, 0, ROT270, "Excellent System", "Grand Cross v1.02F", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp index 532c2ca46a7..6f41c07974b 100644 --- a/src/mame/drivers/gei.cpp +++ b/src/mame/drivers/gei.cpp @@ -1025,7 +1025,7 @@ INTERRUPT_GEN_MEMBER(gei_state::vblank_irq) } -static MACHINE_CONFIG_START( getrivia, gei_state ) +static MACHINE_CONFIG_START( getrivia ) MCFG_CPU_ADD("maincpu",Z80,4000000) /* 4 MHz */ MCFG_CPU_PROGRAM_MAP(getrivia_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", gei_state, vblank_irq) @@ -1889,66 +1889,66 @@ DRIVER_INIT_MEMBER(gei_state,geimulti) membank("bank1")->set_base(memregion("bank")->base() + 0x0000); } -GAME( 1982, jokpoker, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1983, jokpokera,jokpoker, jokpokera,gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1983, jokpokerb,jokpoker, jokpokera,gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1983, jokpokerc,jokpoker, jokpokera,gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1982, superbwl, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1982, gs4002, 0, gselect, gselect, driver_device, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1982, gs4002a, gs4002, gselect, gselect, driver_device, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1982, amuse, 0, amuse, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1982, amuse1, amuse, amuse1, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1983, amuse1a, amuse, amuse1, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1984, gepoker, 0, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gepoker1, gepoker, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gepoker2, gepoker, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gepoker3, gepoker, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1984, gtsers1, 0, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers2, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers3, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers4, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers5, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers7, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsersa, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsersb, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers8, 0, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers8a, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers9, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers10, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers11, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers11a,gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gtsers12, gtsers8, findout, gt103, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, gtsers14, gtsers8, findout, gt103, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, gtsers15, gtsers8, findout, gt103, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 15)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gt103a1, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Unsorted question roms)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gt103aa, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gt103ab, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, gt103asx, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1985, sextriv1, 0, getrivia, sextriv1, driver_device, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1985, sextriv2, sextriv1, getrivia, sextriv1, driver_device, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1986, gt507uk, 0, findout, gt507uk, driver_device, 0, ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1986, quiz, 0, findout, quiz, driver_device, 0, ROT0, "Elettronolo", "Quiz (Revision 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1986, quizvid, 0, quizvid, quiz, driver_device, 0, ROT0, "bootleg", "Video Quiz", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1986, reelfun, 0, findout, reelfun, driver_device, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, reelfun1, reelfun, findout, reelfun, driver_device, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1987, findout, 0, findout, findout, driver_device, 0, ROT0, "Elettronolo", "Find Out (Version 4.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1986, suprpokr, 0, suprpokr, suprpokr, driver_device, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.19S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, suprpokra,suprpokr, suprpokr, suprpokr, driver_device, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.15S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, suprpokrb,suprpokr, suprpokr, suprpokr, driver_device, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1991, quiz211, 0, findout, quiz, driver_device, 0, ROT0, "Elettronolo", "Quiz (Revision 2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1992, sexappl, 0, findout, sexappl, driver_device, 0, ROT0, "Grayhound Electronics", "Sex Appeal (Version 6.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - -GAME( 1992, geimulti, 0, geimulti, geimulti, gei_state, geimulti, ROT0, "Grayhound Electronics", "GEI Multi Game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1992, sprtauth, 0, sprtauth, sprtauth, gei_state, geimulti, ROT0, "Classic Games", "Sports Authority", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1982, jokpoker, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, jokpokera, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, jokpokerb, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, jokpokerc, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1982, superbwl, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1982, gs4002, 0, gselect, gselect, gei_state, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1982, gs4002a, gs4002, gselect, gselect, gei_state, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1982, amuse, 0, amuse, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1982, amuse1, amuse, amuse1, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, amuse1a, amuse, amuse1, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1984, gepoker, 0, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gepoker1, gepoker, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gepoker2, gepoker, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gepoker3, gepoker, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1984, gtsers1, 0, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers2, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers3, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers4, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers5, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers7, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsersa, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsersb, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers8, 0, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers8a, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers9, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers10, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers11, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers11a, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gtsers12, gtsers8, findout, gt103, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, gtsers14, gtsers8, findout, gt103, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, gtsers15, gtsers8, findout, gt103, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 15)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gt103a1, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Unsorted question roms)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gt103aa, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gt103ab, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, gt103asx, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1985, sextriv1, 0, getrivia, sextriv1, gei_state, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1985, sextriv2, sextriv1, getrivia, sextriv1, gei_state, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1986, gt507uk, 0, findout, gt507uk, gei_state, 0, ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1986, quiz, 0, findout, quiz, gei_state, 0, ROT0, "Elettronolo", "Quiz (Revision 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1986, quizvid, 0, quizvid, quiz, gei_state, 0, ROT0, "bootleg", "Video Quiz", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1986, reelfun, 0, findout, reelfun, gei_state, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, reelfun1, reelfun, findout, reelfun, gei_state, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1987, findout, 0, findout, findout, gei_state, 0, ROT0, "Elettronolo", "Find Out (Version 4.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1986, suprpokr, 0, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.19S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, suprpokra, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.15S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, suprpokrb, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1991, quiz211, 0, findout, quiz, gei_state, 0, ROT0, "Elettronolo", "Quiz (Revision 2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1992, sexappl, 0, findout, sexappl, gei_state, 0, ROT0, "Grayhound Electronics", "Sex Appeal (Version 6.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) + +GAME( 1992, geimulti, 0, geimulti, geimulti, gei_state, geimulti, ROT0, "Grayhound Electronics", "GEI Multi Game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1992, sprtauth, 0, sprtauth, sprtauth, gei_state, geimulti, ROT0, "Classic Games", "Sports Authority", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/geneve.cpp b/src/mame/drivers/geneve.cpp index 3e319004d3b..2eea30ac2af 100644 --- a/src/mame/drivers/geneve.cpp +++ b/src/mame/drivers/geneve.cpp @@ -210,9 +210,10 @@ #include "sound/sn76496.h" #include "bus/ti99x/genboard.h" -#include "bus/ti99x/joyport.h" -#include "bus/ti99_peb/peribox.h" +#include "bus/ti99/colorbus/colorbus.h" +#include "bus/ti99/joyport/joyport.h" +#include "bus/ti99/peb/peribox.h" #include "speaker.h" @@ -234,8 +235,10 @@ public: m_keyboard(*this, GKEYBOARD_TAG), m_mapper(*this, GMAPPER_TAG), m_peribox(*this, PERIBOX_TAG), - m_mouse(*this, GMOUSE_TAG), - m_joyport(*this,JOYPORT_TAG) { } + m_joyport(*this, JOYPORT_TAG), + m_colorbus(*this, COLORBUS_TAG) + { + } // CRU (Communication Register Unit) handling DECLARE_READ8_MEMBER(cruread); @@ -263,8 +266,8 @@ public: required_device m_keyboard; required_device m_mapper; required_device m_peribox; - required_device m_mouse; - required_device m_joyport; + required_device m_joyport; + required_device m_colorbus; DECLARE_WRITE_LINE_MEMBER( inta ); DECLARE_WRITE_LINE_MEMBER( intb ); @@ -274,7 +277,6 @@ public: DECLARE_DRIVER_INIT(geneve); virtual void machine_start() override; virtual void machine_reset() override; - TIMER_DEVICE_CALLBACK_MEMBER(geneve_hblank_interrupt); DECLARE_WRITE_LINE_MEMBER(set_tms9901_INT2_from_v9938); @@ -452,7 +454,7 @@ READ8_MEMBER( geneve_state::read_by_9901 ) switch (offset & 0x03) { - case TMS9901_CB_INT7: + case tms9901_device::CB_INT7: // // Read pins INT3*-INT7* of Geneve's 9901. // bit 1: INTA status @@ -466,7 +468,7 @@ READ8_MEMBER( geneve_state::read_by_9901 ) answer |= m_joyport->read_port()<<3; break; - case TMS9901_INT8_INT15: + case tms9901_device::INT8_INT15: // Read pins int8_t*-INT15* of Geneve 9901. // // bit 0: keyboard interrupt @@ -477,7 +479,7 @@ READ8_MEMBER( geneve_state::read_by_9901 ) // bit 5 & 7: used as output // bit 6: unused if (m_keyint==CLEAR_LINE) answer |= 0x01; - if (m_mouse->left_button()==CLEAR_LINE) answer |= 0x04; + if (m_colorbus->left_button()==CLEAR_LINE) answer |= 0x04; // TODO: add clock interrupt if (m_intb==CLEAR_LINE) answer |= 0x10; if (m_video_wait==ASSERT_LINE) answer |= 0x20; @@ -485,17 +487,17 @@ READ8_MEMBER( geneve_state::read_by_9901 ) if (TRACE_LINES) logerror("INT15-8 = %02x\n", answer); break; - case TMS9901_P0_P7: + case tms9901_device::P0_P7: // Read pins P0-P7 of TMS9901. All pins are configured as outputs, so nothing here. break; - case TMS9901_P8_P15: + case tms9901_device::P8_P15: // Read pins P8-P15 of TMS 9901. // bit 4: mouse left button // video wait is an output; no input possible here if (m_intb==CLEAR_LINE) answer |= 0x04; // mirror from above // TODO: 0x08 = real-time clock int - if (m_mouse->left_button()==CLEAR_LINE) answer |= 0x10; // mirror from above + if (m_colorbus->left_button()==CLEAR_LINE) answer |= 0x10; // mirror from above if (m_keyint==CLEAR_LINE) answer |= 0x40; // Joystick up (mirror of bit 7) @@ -602,8 +604,17 @@ WRITE_LINE_MEMBER( geneve_state::mapper_ready ) */ WRITE_LINE_MEMBER(geneve_state::set_tms9901_INT2_from_v9938) { - m_int2 = (state!=0)? ASSERT_LINE : CLEAR_LINE; - m_tms9901->set_single_int(2, state); + // This method is frequently called without level change, so we only + // react on changes + if (state != m_int2) + { + m_int2 = (state!=0)? ASSERT_LINE : CLEAR_LINE; + m_tms9901->set_single_int(2, state); + if (state!=0) + { + m_colorbus->poll(); + } + } } /* @@ -615,25 +626,6 @@ WRITE_LINE_MEMBER( geneve_state::keyboard_interrupt ) m_tms9901->set_single_int(8, state); } -/* - scanline interrupt -*/ -TIMER_DEVICE_CALLBACK_MEMBER(geneve_state::geneve_hblank_interrupt) -{ - int scanline = param; - - if (scanline == 0) // was 262 - { - // TODO - // The technical docs do not say anything about the way the mouse - // is queried. It sounds plausible that the mouse is sampled once - // per vertical interrupt; however, the mouse sometimes shows jerky - // behaviour. Maybe we should use an autonomous timer with a higher - // rate? -> to be checked - m_mouse->poll(); - } -} - WRITE8_MEMBER( geneve_state::external_operation ) { static const char* extop[8] = { "inv1", "inv2", "IDLE", "RSET", "inv3", "CKON", "CKOF", "LREX" }; @@ -692,7 +684,7 @@ void geneve_state::machine_reset() m_joyport->write_port(0x01); // select Joystick 1 } -static MACHINE_CONFIG_START( geneve_60hz, geneve_state ) +static MACHINE_CONFIG_START( geneve_60hz ) // basic machine hardware // TMS9995 CPU @ 12.0 MHz MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, memmap, crumap) @@ -704,7 +696,6 @@ static MACHINE_CONFIG_START( geneve_60hz, geneve_state ) MCFG_V9938_ADD(VDP_TAG, SCREEN_TAG, 0x20000, XTAL_21_4772MHz) /* typical 9938 clock, not verified */ MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(geneve_state, set_tms9901_INT2_from_v9938)) MCFG_V99X8_SCREEN_ADD_NTSC(SCREEN_TAG, VDP_TAG, XTAL_21_4772MHz) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", geneve_state, geneve_hblank_interrupt, SCREEN_TAG, 0, 1) /* 262.5 in 60Hz, 312.5 in 50Hz */ // Main board components MCFG_DEVICE_ADD(TMS9901_TAG, TMS9901, 3000000) @@ -744,8 +735,8 @@ static MACHINE_CONFIG_START( geneve_60hz, geneve_state ) // User interface devices MCFG_DEVICE_ADD( GKEYBOARD_TAG, GENEVE_KEYBOARD, 0 ) MCFG_GENEVE_KBINT_HANDLER( WRITELINE(geneve_state, keyboard_interrupt) ) - MCFG_GENEVE_MOUSE_ADD( GMOUSE_TAG ) MCFG_GENEVE_JOYPORT_ADD( JOYPORT_TAG ) + MCFG_COLORBUS_MOUSE_ADD( COLORBUS_TAG ) // PFM expansion MCFG_AT29C040_ADD( PFM512_TAG ) @@ -775,5 +766,5 @@ ROM_START(geneve) ROM_LOAD_OPTIONAL("gnmbt100.bin", 0x8000, 0x4000, CRC(19b89479) SHA1(6ef297eda78dc705946f6494e9d7e95e5216ec47)) /* CPU ROMs GenMod */ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1987,geneve, 0, 0, geneve_60hz, geneve, geneve_state, geneve, "Myarc", "Geneve 9640" , MACHINE_SUPPORTS_SAVE) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1987, geneve, 0, 0, geneve_60hz, geneve, geneve_state, geneve, "Myarc", "Geneve 9640", MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/geniusiq.cpp b/src/mame/drivers/geniusiq.cpp index 2817b9362c0..c1e3b2dbeab 100644 --- a/src/mame/drivers/geniusiq.cpp +++ b/src/mame/drivers/geniusiq.cpp @@ -792,7 +792,7 @@ DEVICE_IMAGE_UNLOAD_MEMBER(geniusiq_state,iq128_cart) } -static MACHINE_CONFIG_START( iq128, geniusiq_state ) +static MACHINE_CONFIG_START( iq128 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) // The main crystal is at 32MHz, not sure whats the CPU freq MCFG_CPU_PROGRAM_MAP(geniusiq_mem) @@ -828,7 +828,7 @@ static MACHINE_CONFIG_DERIVED( iqtv512, iq128 ) MCFG_AMD_29F040_ADD("flash") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gl8008cx, gl8008cx_state ) +static MACHINE_CONFIG_START( gl8008cx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) // TODO wrong CPU and frequency MCFG_CPU_PROGRAM_MAP(gl8008cx_mem) @@ -892,12 +892,12 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1997, iq128, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Genius IQ 128 (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1997, iq128_fr, iq128, 0, iq128, geniusiq, driver_device, 0, "Video Technology", "Genius IQ 128 (France)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1998, iqtv512, 0, 0, iqtv512, geniusiq_de, driver_device, 0, "Video Technology", "Genius IQ TV 512 (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1999, gl8008cx, 0, 0, gl8008cx, gl8008cx, driver_device, 0, "Video Technology", "Genius Leader 8008 CX (Germany)", MACHINE_IS_SKELETON) -COMP( 1999, bs9009cx, 0, 0, gl8008cx, gl8008cx, driver_device, 0, "Video Technology", "BrainStation 9009 CXL (Germany)", MACHINE_IS_SKELETON) -COMP( 1998, itunlim, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Vtech IT Unlimited (UK)", MACHINE_NO_SOUND) -COMP( 19??, iqunlim, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Vtech IQ Unlimited (Germany)", MACHINE_IS_SKELETON) -COMP( 19??, glmmc, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Genius Leader Master Mega Color (Germany)", MACHINE_IS_SKELETON) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1997, iq128, 0, 0, iq128, geniusiq_de, geniusiq_state, 0, "Video Technology", "Genius IQ 128 (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1997, iq128_fr, iq128, 0, iq128, geniusiq, geniusiq_state, 0, "Video Technology", "Genius IQ 128 (France)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1998, iqtv512, 0, 0, iqtv512, geniusiq_de, geniusiq_state, 0, "Video Technology", "Genius IQ TV 512 (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1999, gl8008cx, 0, 0, gl8008cx, gl8008cx, gl8008cx_state, 0, "Video Technology", "Genius Leader 8008 CX (Germany)", MACHINE_IS_SKELETON) +COMP( 1999, bs9009cx, 0, 0, gl8008cx, gl8008cx, gl8008cx_state, 0, "Video Technology", "BrainStation 9009 CXL (Germany)", MACHINE_IS_SKELETON) +COMP( 1998, itunlim, 0, 0, iq128, geniusiq_de, geniusiq_state, 0, "Video Technology", "Vtech IT Unlimited (UK)", MACHINE_NO_SOUND) +COMP( 19??, iqunlim, 0, 0, iq128, geniusiq_de, geniusiq_state, 0, "Video Technology", "Vtech IQ Unlimited (Germany)", MACHINE_IS_SKELETON) +COMP( 19??, glmmc, 0, 0, iq128, geniusiq_de, geniusiq_state, 0, "Video Technology", "Genius Leader Master Mega Color (Germany)", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/genpc.cpp b/src/mame/drivers/genpc.cpp index af1adf7be39..5d3ac1b84e2 100644 --- a/src/mame/drivers/genpc.cpp +++ b/src/mame/drivers/genpc.cpp @@ -43,7 +43,7 @@ static DEVICE_INPUT_DEFAULTS_START(vga) DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x00) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( pcmda, genpc_state ) +static MACHINE_CONFIG_START( pcmda ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, 4772720) MCFG_CPU_PROGRAM_MAP(pc8_map) @@ -151,9 +151,9 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1987, pc, ibm5150, 0, pccga, 0, driver_device, 0, "", "PC (CGA)" , 0) -COMP( 1987, pcega, ibm5150, 0, pcega, 0, driver_device, 0, "", "PC (EGA)" , 0) -COMP ( 1987, pcmda, ibm5150, 0, pcmda, 0, driver_device, 0, "", "PC (MDA)" , 0) -COMP ( 1987, pcherc, ibm5150, 0, pcherc, 0, driver_device, 0, "", "PC (Hercules)" , 0) -COMP ( 1987, pcvga, ibm5150, 0, pcvga, 0, driver_device, 0, "", "PC (VGA)" , 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME +COMP( 1987, pc, ibm5150, 0, pccga, 0, genpc_state, 0, "", "PC (CGA)", 0 ) +COMP( 1987, pcega, ibm5150, 0, pcega, 0, genpc_state, 0, "", "PC (EGA)", 0 ) +COMP ( 1987, pcmda, ibm5150, 0, pcmda, 0, genpc_state, 0, "", "PC (MDA)", 0 ) +COMP ( 1987, pcherc, ibm5150, 0, pcherc, 0, genpc_state, 0, "", "PC (Hercules)", 0 ) +COMP ( 1987, pcvga, ibm5150, 0, pcvga, 0, genpc_state, 0, "", "PC (VGA)", 0 ) diff --git a/src/mame/drivers/ggconnie.cpp b/src/mame/drivers/ggconnie.cpp index e89dd7d1748..67e7d24d83a 100644 --- a/src/mame/drivers/ggconnie.cpp +++ b/src/mame/drivers/ggconnie.cpp @@ -178,7 +178,7 @@ static INPUT_PORTS_START(ggconnie) PORT_DIPSETTING(0x00, DEF_STR(On) ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ggconnie, ggconnie_state ) +static MACHINE_CONFIG_START( ggconnie ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H6280, PCE_MAIN_CLOCK/3) MCFG_CPU_PROGRAM_MAP(sgx_mem) @@ -186,7 +186,7 @@ static MACHINE_CONFIG_START( ggconnie, ggconnie_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/3, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242) + MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/3, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242) MCFG_SCREEN_UPDATE_DRIVER( ggconnie_state, screen_update ) MCFG_SCREEN_PALETTE("huc6260:palette") @@ -223,7 +223,7 @@ static MACHINE_CONFIG_START( ggconnie, ggconnie_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) - MCFG_OKIM6295_ADD("oki", PCE_MAIN_CLOCK/12, OKIM6295_PIN7_HIGH) /* unknown clock / pin 7 */ + MCFG_OKIM6295_ADD("oki", PCE_MAIN_CLOCK/12, PIN7_HIGH) /* unknown clock / pin 7 */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) MACHINE_CONFIG_END @@ -237,4 +237,4 @@ ROM_START(ggconnie) ROM_LOAD( "adpcm_u31.bin", 0x00000, 0x80000, CRC(de514c2b) SHA1(da73aa825d73646f556f6d4dbb46f43acf7c3357) ) ROM_END -GAME( 1996, ggconnie, 0, ggconnie, ggconnie, pce_common_state, pce_common, ROT0, "Eighting", "Go! Go! Connie chan Jaka Jaka Janken", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 1996, ggconnie, 0, ggconnie, ggconnie, ggconnie_state, pce_common, ROT0, "Eighting", "Go! Go! Connie chan Jaka Jaka Janken", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ghosteo.cpp b/src/mame/drivers/ghosteo.cpp index 9e2e070df2f..27d6c3eb1cc 100644 --- a/src/mame/drivers/ghosteo.cpp +++ b/src/mame/drivers/ghosteo.cpp @@ -611,7 +611,7 @@ void ghosteo_state::machine_reset() m_maincpu->space(AS_PROGRAM).install_read_handler(0x4d000010, 0x4d000013,read32_delegate(FUNC(ghosteo_state::bballoon_speedup_r), this)); } -static MACHINE_CONFIG_START( ghosteo, ghosteo_state ) +static MACHINE_CONFIG_START( ghosteo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM9, 200000000) @@ -770,6 +770,6 @@ DRIVER_INIT_MEMBER(ghosteo_state,touryuu) m_rom_pagesize = 0x210; } -GAME( 2003, bballoon, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "Eolith", "BnB Arcade", MACHINE_IMPERFECT_SOUND ) -GAME( 2005, hapytour, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "GAV Company", "Happy Tour", MACHINE_IMPERFECT_SOUND ) -GAME( 2005, touryuu, 0, touryuu, touryuu, ghosteo_state, touryuu, ROT0, "Yuki Enterprise", "Touryuumon (V1.1)?", MACHINE_IMPERFECT_SOUND ) // On first boot inputs won't work, TODO: hook-up default eeprom +GAME( 2003, bballoon, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "Eolith", "BnB Arcade", MACHINE_IMPERFECT_SOUND ) +GAME( 2005, hapytour, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "GAV Company", "Happy Tour", MACHINE_IMPERFECT_SOUND ) +GAME( 2005, touryuu, 0, touryuu, touryuu, ghosteo_state, touryuu, ROT0, "Yuki Enterprise", "Touryuumon (V1.1)?", MACHINE_IMPERFECT_SOUND ) // On first boot inputs won't work, TODO: hook-up default eeprom diff --git a/src/mame/drivers/giclassic.cpp b/src/mame/drivers/giclassic.cpp new file mode 100644 index 00000000000..137c7eb5f01 --- /dev/null +++ b/src/mame/drivers/giclassic.cpp @@ -0,0 +1,377 @@ +// license:BSD-3-Clause +// copyright-holders:R. Belmont +/*************************************************************************** + + GI Classic / GI Classic EX + (c) 1995, 1998 Konami + Preliminary driver by R. Belmont + + GI Classic EX Main PCB: + Main CPU: 68000 + Video: 056832 + 058143 (GX tilemaps) + Video: 055673(x2) + 053246 (GX sprites) + Video: 055555 (Mixer) + 053252 (x2) (CRTC?) + + GI Classic EX Satellite PCB: + Main CPU: 68000-12 + Video: 056832 / 058143 (GX tilemaps) + Video: 000907 LCD Controller + + WANTED: main PCB and any other PCBs for GI Classic EX, plus any and all + PCBs for other games also believed to be on this h/w: + - GI-Classic (1995) + - GI-Classic Special (1996) + - GI-Classic WINDS (1996) + - GI-Classic WINDS EX (1998) + + Other "GI" games, list from http://www.konami.jp/am/g1/ + - GI-LEADING SIRE (1999) + - GI-LEADING SIRE Ver. 2 (2000) + - GI-LEADING SIRE Ver. 3 (2001) + - GI-WINNING SIRE (2002) + - GI-TURFWILD (2003) + - GI-WINNING SIRE Ver. 2 (2003) + - GI-TURFWILD 2 (2004) + - GI-TURFWILD 3 (2005) + - GI-HORSEPARK (2005) + - GI-HORSEPARK EX (2006) + - GI-HORSEPARK EX STD (2006) + - GI-HORSEPARK GX STD (2009) + - GI-HORSEPARK GX (2009) + - GI-Turf TV (2010) + +***************************************************************************/ + +#include "emu.h" +#include "cpu/m68000/m68000.h" +#include "machine/k053252.h" +#include "video/k055555.h" +#include "video/k054156_k054157_k056832.h" +#include "video/k053246_k053247_k055673.h" +#include "video/konami_helper.h" +#include "screen.h" +#include "speaker.h" + +class giclassic_state : public driver_device +{ +public: + giclassic_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_k056832(*this, "k056832"), + m_palette(*this, "palette") + { } + + required_device m_maincpu; + required_device m_k056832; + required_device m_palette; + + DECLARE_PALETTE_INIT(giclassic); + + INTERRUPT_GEN_MEMBER(giclassic_interrupt); + + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + uint32_t screen_update_giclassic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + K056832_CB_MEMBER(tile_callback); + + DECLARE_WRITE16_MEMBER(control_w); + DECLARE_READ16_MEMBER(vrom_r); + +private: + uint8_t m_control; +}; + +// -------------------------------------------------------------------------------------------------------------- +// Client portion +// -------------------------------------------------------------------------------------------------------------- + +K056832_CB_MEMBER(giclassic_state::tile_callback) +{ + *color = (*color & 0xf); +} + +void giclassic_state::video_start() +{ +} + +uint32_t giclassic_state::screen_update_giclassic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(0, cliprect); + screen.priority().fill(0, cliprect); + + m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, 0, 1); + m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, 0, 2); + m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 4); +// m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 8); + + return 0; +} + +INTERRUPT_GEN_MEMBER(giclassic_state::giclassic_interrupt) +{ + if (m_control & 2) + { + m_maincpu->set_input_line(M68K_IRQ_1, HOLD_LINE); + m_maincpu->set_input_line(M68K_IRQ_3, HOLD_LINE); + } +} + +WRITE16_MEMBER(giclassic_state::control_w) +{ + // bits: + // 0 = ? + // 1 = IRQ enable + // 2 = ? + // 3 = extra VROM readback bank + // 4 = screen on? + + m_control = data & 0xff; +} + +READ16_MEMBER(giclassic_state::vrom_r) +{ + if (m_control & 8) + { + return m_k056832->piratesh_rom_r(space, offset + 0x1000); + } + + return m_k056832->piratesh_rom_r(space, offset); +} + +static ADDRESS_MAP_START( satellite_main, AS_PROGRAM, 16, giclassic_state ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0) + AM_RANGE(0x100000, 0x103fff) AM_RAM + AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0x800000, 0x801fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) + AM_RANGE(0x900000, 0x90003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) + AM_RANGE(0xb00000, 0xb01fff) AM_READ(vrom_r) + AM_RANGE(0xc00000, 0xc00001) AM_WRITE(control_w) + AM_RANGE(0xd00000, 0xd0003f) AM_RAM // these must read/write or 26S (LCD controller) fails + AM_RANGE(0xe00000, 0xe0001f) AM_DEVWRITE8("k056832", k056832_device, b_w, 0xff00) + AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset +ADDRESS_MAP_END + +static INPUT_PORTS_START( giclassic ) +INPUT_PORTS_END + +void giclassic_state::machine_start() +{ +} + +void giclassic_state::machine_reset() +{ +} + +// -------------------------------------------------------------------------------------------------------------- +// Server portion +// -------------------------------------------------------------------------------------------------------------- + +class giclassicsvr_state : public driver_device +{ +public: + giclassicsvr_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_k056832(*this, "k056832"), + m_k055673(*this, "k055673"), + m_palette(*this, "palette") + { } + + required_device m_maincpu; + required_device m_k056832; + required_device m_k055673; + required_device m_palette; + + INTERRUPT_GEN_MEMBER(giclassicsvr_interrupt); + + virtual void machine_start() override; + virtual void machine_reset() override; + uint32_t screen_update_giclassicsvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + K056832_CB_MEMBER(tile_callback); + K055673_CB_MEMBER(sprite_callback); + + DECLARE_WRITE16_MEMBER(control_w); + DECLARE_READ16_MEMBER(control_r); + +private: + uint16 m_control; +}; + +WRITE16_MEMBER(giclassicsvr_state::control_w) +{ + m_control = data; +} + +READ16_MEMBER(giclassicsvr_state::control_r) +{ + return m_control; +} + +INTERRUPT_GEN_MEMBER(giclassicsvr_state::giclassicsvr_interrupt) +{ + //if (m_control & 2) + { + m_maincpu->set_input_line(M68K_IRQ_4, HOLD_LINE); + m_maincpu->set_input_line(M68K_IRQ_5, HOLD_LINE); + } +} + +K056832_CB_MEMBER(giclassicsvr_state::tile_callback) +{ +} + +K055673_CB_MEMBER(giclassicsvr_state::sprite_callback) +{ + int c = *color; + + *color = (c & 0x001f); + //int pri = (c >> 5) & 7; + // .... .... ...x xxxx - Color + // .... .... xxx. .... - Priority? + // .... ..x. .... .... - ? + // ..x. .... .... .... - ? + + *priority_mask = 0; + + // 0 - Sprites over everything + // f0 - + // f0 cc - + // f0 cc aa - + + // 1111 0000 + // 1100 1100 + // 1010 1010 +} + + +uint32_t giclassicsvr_state::screen_update_giclassicsvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(0, cliprect); + screen.priority().fill(0, cliprect); + + m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, 0, 1); + m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, 0, 2); + m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 4); + m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 8); + + return 0; +} + +static ADDRESS_MAP_START( server_main, AS_PROGRAM, 16, giclassicsvr_state ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0) + AM_RANGE(0x080000, 0x08ffff) AM_RAM + AM_RANGE(0x090000, 0x093fff) AM_RAM + AM_RANGE(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0x180000, 0x183fff) AM_RAM + AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) + AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES + AM_RANGE(0x300060, 0x30006f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES + AM_RANGE(0x308000, 0x30803f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) + AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252a", k053252_device, read, write, 0x00ff) // CRTC 1 + AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252b", k053252_device, read, write, 0xff00) // CRTC 2 + AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset + AM_RANGE(0x398000, 0x398001) AM_READWRITE(control_r, control_w) + AM_RANGE(0x400000, 0x41ffff) AM_RAM +ADDRESS_MAP_END + +static INPUT_PORTS_START( giclassvr ) +INPUT_PORTS_END + +void giclassicsvr_state::machine_start() +{ +} + +void giclassicsvr_state::machine_reset() +{ +} + +static MACHINE_CONFIG_START( giclassic ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz / 2) // PCB is marked "68000 12 MHz", but only visible osc is 20 MHz + MCFG_CPU_PROGRAM_MAP(satellite_main) + MCFG_CPU_VBLANK_INT_DRIVER("screen", giclassic_state, giclassic_interrupt) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(59.62) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(600, 384) + MCFG_SCREEN_VISIBLE_AREA(0, 599, 0, 383) + MCFG_SCREEN_UPDATE_DRIVER(giclassic_state, screen_update_giclassic) + MCFG_SCREEN_PALETTE("palette") + + MCFG_PALETTE_ADD("palette", 256) + MCFG_PALETTE_ENABLE_SHADOWS() + MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) + + MCFG_DEVICE_ADD("k056832", K056832, 0) + MCFG_K056832_CB(giclassic_state, tile_callback) + MCFG_K056832_CONFIG("gfx1", K056832_BPP_4PIRATESH, 1, 0, "none") + MCFG_K056832_PALETTE("palette") +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( giclassvr ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // unknown speed + MCFG_CPU_PROGRAM_MAP(server_main) + MCFG_CPU_VBLANK_INT_DRIVER("screen", giclassicsvr_state, giclassicsvr_interrupt) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(59.62) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(600, 384) + MCFG_SCREEN_VISIBLE_AREA(0, 599, 0, 383) + MCFG_SCREEN_UPDATE_DRIVER(giclassicsvr_state, screen_update_giclassicsvr) + MCFG_SCREEN_PALETTE("palette") + + MCFG_PALETTE_ADD("palette", 16384) + MCFG_PALETTE_ENABLE_SHADOWS() + MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) + + MCFG_DEVICE_ADD("k056832", K056832, 0) + MCFG_K056832_CB(giclassicsvr_state, tile_callback) + MCFG_K056832_CONFIG("gfx1", K056832_BPP_4PIRATESH, 0, 0, "none") + MCFG_K056832_PALETTE("palette") + + MCFG_DEVICE_ADD("k055673", K055673, 0) + MCFG_K055673_CB(giclassicsvr_state, sprite_callback) + MCFG_K055673_CONFIG("gfx2", K055673_LAYOUT_PS, -60, 24) + MCFG_K055673_PALETTE("palette") + + MCFG_DEVICE_ADD("k053252a", K053252, XTAL_32MHz/4) + MCFG_K053252_OFFSETS(40, 16) // TODO + + MCFG_DEVICE_ADD("k053252b", K053252, XTAL_32MHz/4) + MCFG_K053252_OFFSETS(40, 16) // TODO +MACHINE_CONFIG_END + +ROM_START( giclasex ) + ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */ + ROM_LOAD16_WORD_SWAP( "gsgu760ae01.12t", 0x000000, 0x080000, CRC(f0f9c118) SHA1(1753d53946bc0703d329e4a09c452713b260da75) ) + + ROM_REGION( 0x100000, "gfx1", 0 ) /* tilemaps */ + ROM_LOAD( "gsgu760ae03.14c", 0x000000, 0x080000, CRC(1663d327) SHA1(98c1a9653d38f4918f78b3a11af0c29c658201f5) ) + ROM_LOAD( "gsgu760ae02.14e", 0x080000, 0x080000, CRC(2b9fe163) SHA1(f60190a9689a70d6c5bb14fb46b7ac2267cf0969) ) +ROM_END + +ROM_START( giclassvr ) + ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */ + ROM_LOAD16_WORD_SWAP( "gsgu_760_fd01.34e.bin", 0x000000, 0x080000, CRC(da89c1d7) SHA1(551d050a9b6e54fbf98e966eb37924b644037893) ) + + ROM_REGION( 0x100000, "gfx1", 0 ) /* tilemaps */ + ROM_LOAD( "gsgu_760_ad04.25q", 0x080000, 0x080000, CRC(71a45742) SHA1(fbddd54f5fb236662f7cc7e9b350723bc5404f72) ) + ROM_LOAD( "gsgu_760_ad05.25r", 0x000000, 0x080000, CRC(44221eec) SHA1(966452e606e828b536ed11cbdd626a2fe3165199) ) + + ROM_REGION( 0x100000, "gfx2", 0 ) /* tilemaps */ + ROM_LOAD32_WORD( "gsgu_760_ad02.34j", 0x000000, 0x080000, CRC(6d33c720) SHA1(35da3e1f0133a76480d2078fae89ea87b841ffc7) ) + ROM_LOAD32_WORD( "gsgu_760_ad02.34k", 0x000002, 0x080000, CRC(8057a417) SHA1(82d4a1d84729e9f0a8aff4c219a19601b89caf15) ) +ROM_END + +GAME( 1998, giclasex, 0, giclassic, giclassic, giclassic_state, 0, 0, "Konami", "GI-Classic EX (satellite terminal)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND_HW) +GAME( 1998, giclassvr, 0, giclassvr, giclassvr, giclassicsvr_state, 0, 0, "Konami", "GI-Classic EX (server)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/gijoe.cpp b/src/mame/drivers/gijoe.cpp index 94e0b981c89..b02c9d9172c 100644 --- a/src/mame/drivers/gijoe.cpp +++ b/src/mame/drivers/gijoe.cpp @@ -192,25 +192,11 @@ INTERRUPT_GEN_MEMBER(gijoe_state::gijoe_interrupt) device.execute().set_input_line(5, HOLD_LINE); } -WRITE16_MEMBER(gijoe_state::sound_cmd_w) -{ - if (ACCESSING_BITS_0_7) - { - data &= 0xff; - m_soundlatch->write(space, 0, data); - } -} - WRITE16_MEMBER(gijoe_state::sound_irq_w) { m_audiocpu->set_input_line(0, HOLD_LINE); } -READ16_MEMBER(gijoe_state::sound_status_r) -{ - return m_soundlatch2->read(space, 0); -} - static ADDRESS_MAP_START( gijoe_map, AS_PROGRAM, 16, gijoe_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("spriteram") // Sprites @@ -224,9 +210,7 @@ static ADDRESS_MAP_START( gijoe_map, AS_PROGRAM, 16, gijoe_state ) AM_RANGE(0x190000, 0x190fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x1a0000, 0x1a001f) AM_DEVWRITE("k053251", k053251_device, lsb_w) AM_RANGE(0x1b0000, 0x1b003f) AM_DEVWRITE("k056832", k056832_device, word_w) - AM_RANGE(0x1c000c, 0x1c000d) AM_WRITE(sound_cmd_w) - AM_RANGE(0x1c0014, 0x1c0015) AM_READ(sound_status_r) - AM_RANGE(0x1c0000, 0x1c001f) AM_RAM + AM_RANGE(0x1c0000, 0x1c001f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(sound_irq_w) AM_RANGE(0x1e0000, 0x1e0001) AM_READ_PORT("P1_P2") AM_RANGE(0x1e0002, 0x1e0003) AM_READ_PORT("P3_P4") @@ -245,9 +229,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, gijoe_state ) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_RANGE(0xf800, 0xfa2f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xfc02, 0xfc02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x0000, 0xffff) AM_ROM + AM_RANGE(0xfc00, 0xfc03) AM_DEVICE("k054321", k054321_device, sound_map) + AM_RANGE(0x0000, 0xefff) AM_ROM ADDRESS_MAP_END static INPUT_PORTS_START( gijoe ) @@ -306,7 +289,7 @@ void gijoe_state::machine_reset() m_cur_control2 = 0; } -static MACHINE_CONFIG_START( gijoe, gijoe_state ) +static MACHINE_CONFIG_START( gijoe ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz Confirmed */ @@ -347,8 +330,7 @@ static MACHINE_CONFIG_START( gijoe, gijoe_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker") MCFG_DEVICE_ADD("k054539", K054539, XTAL_18_432MHz) MCFG_K054539_TIMER_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) @@ -472,7 +454,7 @@ ROM_START( gijoej ) ROM_END -GAME( 1992, gijoe, 0, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (World, EAB, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, gijoea, gijoe, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (World, EB8, prototype?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, gijoeu, gijoe, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (US, UAB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, gijoej, gijoe, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (Japan, JAA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, gijoe, 0, gijoe, gijoe, gijoe_state, 0, ROT0, "Konami", "G.I. Joe (World, EAB, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, gijoea, gijoe, gijoe, gijoe, gijoe_state, 0, ROT0, "Konami", "G.I. Joe (World, EB8, prototype?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, gijoeu, gijoe, gijoe, gijoe, gijoe_state, 0, ROT0, "Konami", "G.I. Joe (US, UAB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, gijoej, gijoe, gijoe, gijoe, gijoe_state, 0, ROT0, "Konami", "G.I. Joe (Japan, JAA)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gimix.cpp b/src/mame/drivers/gimix.cpp index 9a00d2216f6..73ed134221f 100644 --- a/src/mame/drivers/gimix.cpp +++ b/src/mame/drivers/gimix.cpp @@ -141,7 +141,7 @@ private: void refresh_memory(); required_device m_maincpu; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_ram; @@ -572,7 +572,7 @@ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) \ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) \ MCFG_ADDRESS_MAP_BANK_STRIDE(0x1000) -static MACHINE_CONFIG_START( gimix, gimix_state ) +static MACHINE_CONFIG_START( gimix ) // basic machine hardware MCFG_CPU_ADD("maincpu", M6809E, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(gimix_mem) @@ -684,4 +684,4 @@ ROM_START( gimix ) ROM_LOAD( "gimixhd.h11", 0x000000, 0x001000, CRC(35c12201) SHA1(51ac9052f9757d79c7f5bd3aa5d8421e98cfcc37) ) ROM_END -COMP( 1980, gimix, 0, 0, gimix, gimix, driver_device, 0, "Gimix", "Gimix 6809 System", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1980, gimix, 0, 0, gimix, gimix, gimix_state, 0, "Gimix", "Gimix 6809 System", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ginganin.cpp b/src/mame/drivers/ginganin.cpp index ffa0acd5a46..c850edc6878 100644 --- a/src/mame/drivers/ginganin.cpp +++ b/src/mame/drivers/ginganin.cpp @@ -243,7 +243,7 @@ WRITE_LINE_MEMBER(ginganin_state::ptm_irq) } -static MACHINE_CONFIG_START( ginganin, ginganin_state ) +static MACHINE_CONFIG_START( ginganin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MAIN_CLOCK) diff --git a/src/mame/drivers/gizmondo.cpp b/src/mame/drivers/gizmondo.cpp index 33c1aefb832..f7a89a55bdc 100644 --- a/src/mame/drivers/gizmondo.cpp +++ b/src/mame/drivers/gizmondo.cpp @@ -183,7 +183,7 @@ DRIVER_INIT_MEMBER(gizmondo_state,gizmondo) // do nothing } -static MACHINE_CONFIG_START( gizmondo, gizmondo_state ) +static MACHINE_CONFIG_START( gizmondo ) MCFG_CPU_ADD("maincpu", ARM9, 40000000) MCFG_CPU_PROGRAM_MAP(gizmondo_map) diff --git a/src/mame/drivers/gkigt.cpp b/src/mame/drivers/gkigt.cpp index 8297782b0d6..f663092a6bf 100644 --- a/src/mame/drivers/gkigt.cpp +++ b/src/mame/drivers/gkigt.cpp @@ -109,12 +109,12 @@ public: DECLARE_READ32_MEMBER(igt_gk_28010008_r) { - return rand(); // don't quite understand this one + return machine().rand(); // don't quite understand this one }; DECLARE_READ32_MEMBER(igt_gk_28030000_r) { - return rand(); + return machine().rand(); }; DECLARE_READ32_MEMBER(uart_status_r); @@ -234,7 +234,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( igt_gameking, igt_gameking_state ) +static MACHINE_CONFIG_START( igt_gameking ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I960, XTAL_24MHz) @@ -480,13 +480,13 @@ ROM_START( gkkey ) ROM_REGION( 0x200000, "snd", ROMREGION_ERASEFF ) ROM_END -GAME( 1994, ms3, 0, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Multistar 3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1994, ms72c, 0, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Multistar 7 2c", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2003, gkigt4, 0, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (v4.x)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2003, gkigt4ms, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (v4.x, MS)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2003, gkigt43, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (v4.3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2003, gkigt43n, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (v4.3, NJ)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2003, gkigtez, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (EZ Pay, v4.0, MS)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2003, gkigt5p, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (Triple-Five Play)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2003, igtsc, 0, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Super Cherry", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // SIMM dumps are bad. -GAME( 2003, gkkey, 0, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (Set Chips)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // only 2 are good dumps +GAME( 1994, ms3, 0, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Multistar 3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1994, ms72c, 0, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Multistar 7 2c", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2003, gkigt4, 0, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Game King (v4.x)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2003, gkigt4ms, gkigt4, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Game King (v4.x, MS)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2003, gkigt43, gkigt4, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Game King (v4.3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2003, gkigt43n, gkigt4, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Game King (v4.3, NJ)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2003, gkigtez, gkigt4, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Game King (EZ Pay, v4.0, MS)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2003, gkigt5p, gkigt4, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Game King (Triple-Five Play)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2003, igtsc, 0, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Super Cherry", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // SIMM dumps are bad. +GAME( 2003, gkkey, 0, igt_gameking, igt_gameking, igt_gameking_state, 0, ROT0, "IGT", "Game King (Set Chips)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // only 2 are good dumps diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp index cdc5cf0208a..83707497479 100644 --- a/src/mame/drivers/gladiatr.cpp +++ b/src/mame/drivers/gladiatr.cpp @@ -290,16 +290,6 @@ READ8_MEMBER(gladiatr_state::ucpu_p2_r) return BITSWAP8(m_dsw1->read(), 0,1,2,3,4,5,6,7); } -READ8_MEMBER(gladiatr_state::cctl_t_r) -{ - return BIT(m_coins->read(), offset + 2); -} - -READ8_MEMBER(gladiatr_state::ccpu_t_r) -{ - return BIT(m_coins->read(), offset); -} - WRITE8_MEMBER(gladiatr_state::ccpu_p2_w) { // FIXME: active high or active low? (bootleg MCU never uses these outputs) @@ -307,13 +297,13 @@ WRITE8_MEMBER(gladiatr_state::ccpu_p2_w) machine().bookkeeping().coin_counter_w(1, BIT(data, 7)); } -READ8_MEMBER(gladiatr_state::tclk_r) +READ_LINE_MEMBER(gladiatr_state::tclk_r) { // fed to t0 on comms MCUs - return m_tclk_val ? 0x01 : 0x00; + return m_tclk_val ? 1 : 0; } -READ8_MEMBER(gladiatr_state::ucpu_t1_r) +READ_LINE_MEMBER(gladiatr_state::ucpu_t1_r) { // connected to p1 on other MCU return BIT(m_csnd_p1, 1); @@ -332,7 +322,7 @@ WRITE8_MEMBER(gladiatr_state::ucpu_p1_w) m_ucpu_p1 = data; } -READ8_MEMBER(gladiatr_state::csnd_t1_r) +READ_LINE_MEMBER(gladiatr_state::csnd_t1_r) { // connected to p1 on other MCU return BIT(m_ucpu_p1, 1); @@ -540,33 +530,6 @@ static ADDRESS_MAP_START( gladiatr_cpu2_io, AS_IO, 8, gladiatr_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( cctl_io_map, AS_IO, 8, gladiatr_state ) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(cctl_t_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(cctl_p1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(cctl_p2_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( ccpu_io_map, AS_IO, 8, gladiatr_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ_PORT("IN0") - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ_PORT("IN1") AM_WRITE(ccpu_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(ccpu_t_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( ucpu_io_map, AS_IO, 8, gladiatr_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(ucpu_p1_r, ucpu_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(ucpu_p2_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tclk_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(ucpu_t1_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( csnd_io_map, AS_IO, 8, gladiatr_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(csnd_p1_r, csnd_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(csnd_p2_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tclk_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(csnd_t1_r) -ADDRESS_MAP_END - - static INPUT_PORTS_START( gladiatr ) PORT_START("DSW1") /* (8741-0 parallel port)*/ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2") @@ -713,7 +676,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( ppking, ppking_state ) +static MACHINE_CONFIG_START( ppking ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */ @@ -762,11 +725,11 @@ static MACHINE_CONFIG_START( ppking, ppking_state ) MCFG_SOUND_ROUTE(3, "mono", 0.50) MCFG_SOUND_ADD("msm", MSM5205, XTAL_455kHz) /* verified on pcb */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* vclk input mode */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* vclk input mode */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gladiatr, gladiatr_state ) +static MACHINE_CONFIG_START( gladiatr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */ @@ -785,16 +748,31 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state ) MCFG_NVRAM_ADD_0FILL("nvram") MCFG_DEVICE_ADD("cctl", I8741, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_IO_MAP(cctl_io_map) + MCFG_MCS48_PORT_T0_IN_CB(IOPORT("COINS")) MCFG_DEVCB_RSHIFT(3) + MCFG_MCS48_PORT_T1_IN_CB(IOPORT("COINS")) MCFG_DEVCB_RSHIFT(2) + MCFG_MCS48_PORT_P1_IN_CB(READ8(gladiatr_state, cctl_p1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(gladiatr_state, cctl_p2_r)) MCFG_DEVICE_ADD("ccpu", I8741, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_IO_MAP(ccpu_io_map) + MCFG_MCS48_PORT_P1_IN_CB(IOPORT("IN0")) + MCFG_MCS48_PORT_P2_IN_CB(IOPORT("IN1")) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(gladiatr_state, ccpu_p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(IOPORT("COINS")) MCFG_DEVCB_RSHIFT(1) + MCFG_MCS48_PORT_T1_IN_CB(IOPORT("COINS")) MCFG_DEVCB_RSHIFT(0) MCFG_DEVICE_ADD("ucpu", I8741, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_IO_MAP(ucpu_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(gladiatr_state, ucpu_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(gladiatr_state, ucpu_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(gladiatr_state, ucpu_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(gladiatr_state, tclk_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(gladiatr_state, ucpu_t1_r)) MCFG_DEVICE_ADD("csnd", I8741, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_IO_MAP(csnd_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(gladiatr_state, csnd_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(gladiatr_state, csnd_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(gladiatr_state, csnd_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(gladiatr_state, tclk_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(gladiatr_state, csnd_t1_r)) /* lazy way to make polled serial between MCUs work */ MCFG_QUANTUM_PERFECT_CPU("ucpu") @@ -831,7 +809,7 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state ) MCFG_SOUND_ROUTE(3, "mono", 0.50) MCFG_SOUND_ADD("msm", MSM5205, XTAL_455kHz) /* verified on pcb */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* vclk input mode */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* vclk input mode */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END diff --git a/src/mame/drivers/glasgow.cpp b/src/mame/drivers/glasgow.cpp index 29e70448073..52a7de6d130 100644 --- a/src/mame/drivers/glasgow.cpp +++ b/src/mame/drivers/glasgow.cpp @@ -704,7 +704,7 @@ static INPUT_PORTS_START( old_keyboard ) //Glasgow,Dallas INPUT_PORTS_END -static MACHINE_CONFIG_START( glasgow, glasgow_state ) +static MACHINE_CONFIG_START( glasgow ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(glasgow_mem) @@ -795,10 +795,10 @@ ROM_END ***************************************************************************/ /* YEAR, NAME, PARENT, COMPAT, MACHINE, INPUT, CLASS, INIT, COMPANY, FULLNAME, FLAGS */ -CONS( 1984, glasgow, 0, 0, glasgow, old_keyboard, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto III S Glasgow", 0) -CONS( 1984, amsterd, 0, 0, amsterd, new_keyboard, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Amsterdam", MACHINE_NOT_WORKING) -CONS( 1984, dallas, glasgow, 0, glasgow, old_keyboard, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas", MACHINE_NOT_WORKING) -CONS( 1984, roma, amsterd, 0, glasgow, new_keyboard, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Roma", MACHINE_NOT_WORKING) -CONS( 1984, dallas32, amsterd, 0, dallas32, new_keyboard, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas 32 Bit", MACHINE_NOT_WORKING) -CONS( 1984, roma32, amsterd, 0, dallas32, new_keyboard, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Roma 32 Bit", MACHINE_NOT_WORKING) -CONS( 1984, dallas16, amsterd, 0, amsterd, new_keyboard, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas 16 Bit", MACHINE_NOT_WORKING) +CONS( 1984, glasgow, 0, 0, glasgow, old_keyboard, glasgow_state, 0, "Hegener & Glaser Muenchen", "Mephisto III S Glasgow", 0) +CONS( 1984, amsterd, 0, 0, amsterd, new_keyboard, glasgow_state, 0, "Hegener & Glaser Muenchen", "Mephisto Amsterdam", MACHINE_NOT_WORKING) +CONS( 1984, dallas, glasgow, 0, glasgow, old_keyboard, glasgow_state, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas", MACHINE_NOT_WORKING) +CONS( 1984, roma, amsterd, 0, glasgow, new_keyboard, glasgow_state, 0, "Hegener & Glaser Muenchen", "Mephisto Roma", MACHINE_NOT_WORKING) +CONS( 1984, dallas32, amsterd, 0, dallas32, new_keyboard, glasgow_state, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas 32 Bit", MACHINE_NOT_WORKING) +CONS( 1984, roma32, amsterd, 0, dallas32, new_keyboard, glasgow_state, 0, "Hegener & Glaser Muenchen", "Mephisto Roma 32 Bit", MACHINE_NOT_WORKING) +CONS( 1984, dallas16, amsterd, 0, amsterd, new_keyboard, glasgow_state, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas 16 Bit", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/glass.cpp b/src/mame/drivers/glass.cpp index 866056a7359..a20990f28de 100644 --- a/src/mame/drivers/glass.cpp +++ b/src/mame/drivers/glass.cpp @@ -199,7 +199,7 @@ void glass_state::machine_reset() m_blitter_serial_buffer[i] = 0; } -static MACHINE_CONFIG_START( glass, glass_state ) +static MACHINE_CONFIG_START( glass ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz verified on PCB */ @@ -223,7 +223,7 @@ static MACHINE_CONFIG_START( glass, glass_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_1MHz, OKIM6295_PIN7_HIGH) /* 1MHz Resonator & pin 7 high verified on PCB */ + MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* 1MHz Resonator & pin 7 high verified on PCB */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/globalfr.cpp b/src/mame/drivers/globalfr.cpp index b64b666aba7..705f92e48c6 100644 --- a/src/mame/drivers/globalfr.cpp +++ b/src/mame/drivers/globalfr.cpp @@ -28,10 +28,10 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_vfd(*this, "vfd") - { } + { } required_device m_maincpu; - optional_device m_vfd; + optional_device m_vfd; // serial vfd @@ -63,7 +63,7 @@ INPUT_PORTS_END /******************************************************************************/ -static MACHINE_CONFIG_START( globalfr, globalfr_state ) +static MACHINE_CONFIG_START( globalfr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M37702S1, 4000000) MCFG_CPU_PROGRAM_MAP(globalfr_map) @@ -197,32 +197,32 @@ ROM_END /******************************************************************************/ // standalone game or topbox? -GAME( 199?, gl_snbev, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Saturday Night Beaver (Global) (Stealth?) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, gl_snbeva, gl_snbev, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Saturday Night Beaver (Global) (Stealth?) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_snbev, 0, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Saturday Night Beaver (Global) (Stealth?) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_snbeva, gl_snbev, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Saturday Night Beaver (Global) (Stealth?) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // standalone game or topbox? -GAME( 199?, gl_grncl, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Grid Runner Club (Global) (Stealth?) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, gl_grncla, gl_grncl, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Grid Runner Club (Global) (Stealth?) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_grncl, 0, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Grid Runner Club (Global) (Stealth?) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_grncla, gl_grncl, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Grid Runner Club (Global) (Stealth?) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, gl_dow, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels (Global) (v1.4) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_dowp, gl_dow, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels (Global) (v1.4 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 199?, gl_dow, 0, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Deals On Wheels (Global) (v1.4) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_dowp, gl_dow, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Deals On Wheels (Global) (v1.4 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, gl_dowcl,0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels Club (Global) (v1.6) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_dowclp,gl_dowcl,globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels Club (Global) (v1.6 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 199?, gl_dowcl, 0, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Deals On Wheels Club (Global) (v1.6) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_dowclp, gl_dowcl, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Deals On Wheels Club (Global) (v1.6 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, gl_wywh, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.9) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_wywhp, gl_wywh, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.9 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_wywh24, gl_wywh, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.4) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_wywh24p,gl_wywh, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.4 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 199?, gl_wywh, 0, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.9) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_wywhp, gl_wywh, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.9 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_wywh24, gl_wywh, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.4) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_wywh24p, gl_wywh, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.4 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, gl_coc, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v3.0) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_cocp, gl_coc, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v3.0 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_coc29, gl_coc, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v2.9) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_coc29p,gl_coc, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v2.9 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 199?, gl_coc, 0, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v3.0) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_cocp, gl_coc, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v3.0 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_coc29, gl_coc, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v2.9) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_coc29p, gl_coc, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v2.9 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, gl_uyr, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Up Yer Riggin Club (Global) (v2.8) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_uyrp, gl_uyr, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Up Yer Riggin Club (Global) (v2.8 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 199?, gl_uyr, 0, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Up Yer Riggin Club (Global) (v2.8) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_uyrp, gl_uyr, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Up Yer Riggin Club (Global) (v2.8 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, gl_hbh, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel (Global) (v1.0) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_hbhcl,0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (v1.9) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_hbhclp,gl_hbhcl, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (v1.9 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 199?, gl_hbhcla,gl_hbhcl, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (Set 2) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 199?, gl_hbh, 0, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Heartbreak Hotel (Global) (v1.0) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_hbhcl, 0, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (v1.9) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_hbhclp, gl_hbhcl, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (v1.9 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, gl_hbhcla, gl_hbhcl, globalfr, globalfr, globalfr_state, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (Set 2) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/globalvr.cpp b/src/mame/drivers/globalvr.cpp index 72aee844101..3cb38e4eac2 100644 --- a/src/mame/drivers/globalvr.cpp +++ b/src/mame/drivers/globalvr.cpp @@ -84,7 +84,7 @@ static INPUT_PORTS_START( globalvr ) INPUT_PORTS_END -static MACHINE_CONFIG_START( globalvr, globalvr_state ) +static MACHINE_CONFIG_START( globalvr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PENTIUM, 100000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(globalvr_map) @@ -146,15 +146,15 @@ ROM_START( nfsug ) ROM_END -/* OS/Global VR specific Setup Installers */ -GAME( 2002, hyperv2, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Hyper V2 (Global VR) Install - 06/12/02", MACHINE_IS_SKELETON ) -GAME( 2001, hyperv2a, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Hyper V2 (Global VR) Install - 09/30/01", MACHINE_IS_SKELETON ) -GAME( 2001, gvrxpsys, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Global VR XP OS Install - 09/30/01", MACHINE_IS_SKELETON ) -GAME( 2002, gvrxpsup, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Global VR XP OS Update/Install - 06/11/02", MACHINE_IS_SKELETON ) +// OS/Global VR specific Setup Installers +GAME( 2002, hyperv2, 0, globalvr, globalvr, globalvr_state, 0, ROT0, "Global VR", "Hyper V2 (Global VR) Install - 06/12/02", MACHINE_IS_SKELETON ) +GAME( 2001, hyperv2a, 0, globalvr, globalvr, globalvr_state, 0, ROT0, "Global VR", "Hyper V2 (Global VR) Install - 09/30/01", MACHINE_IS_SKELETON ) +GAME( 2001, gvrxpsys, 0, globalvr, globalvr, globalvr_state, 0, ROT0, "Global VR", "Global VR XP OS Install - 09/30/01", MACHINE_IS_SKELETON ) +GAME( 2002, gvrxpsup, 0, globalvr, globalvr, globalvr_state, 0, ROT0, "Global VR", "Global VR XP OS Update/Install - 06/11/02", MACHINE_IS_SKELETON ) -/* Game Installer CDs */ -GAME( 2000, bhead2k, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2000 Install - 05/27/03", MACHINE_IS_SKELETON ) -GAME( 2000, bhead2ka, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2000 Install - 09/16/01", MACHINE_IS_SKELETON ) -GAME( 2002, bhead2k2, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2002 Install - 05/27/03", MACHINE_IS_SKELETON ) -GAME( 2003, bhead2k3, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2003 Desert War Install - 05/27/03", MACHINE_IS_SKELETON ) -GAME( 2005, nfsug, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Need For Speed: Underground Install (2 Discs) (v1.1)", MACHINE_IS_SKELETON ) +// Game Installer CDs +GAME( 2000, bhead2k, 0, globalvr, globalvr, globalvr_state, 0, ROT0, "Global VR", "Beach Head 2000 Install - 05/27/03", MACHINE_IS_SKELETON ) +GAME( 2000, bhead2ka, 0, globalvr, globalvr, globalvr_state, 0, ROT0, "Global VR", "Beach Head 2000 Install - 09/16/01", MACHINE_IS_SKELETON ) +GAME( 2002, bhead2k2, 0, globalvr, globalvr, globalvr_state, 0, ROT0, "Global VR", "Beach Head 2002 Install - 05/27/03", MACHINE_IS_SKELETON ) +GAME( 2003, bhead2k3, 0, globalvr, globalvr, globalvr_state, 0, ROT0, "Global VR", "Beach Head 2003 Desert War Install - 05/27/03", MACHINE_IS_SKELETON ) +GAME( 2005, nfsug, 0, globalvr, globalvr, globalvr_state, 0, ROT0, "Global VR", "Need For Speed: Underground Install (2 Discs) (v1.1)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/gluck2.cpp b/src/mame/drivers/gluck2.cpp index cf3f3b5af6f..a0155e09fb2 100644 --- a/src/mame/drivers/gluck2.cpp +++ b/src/mame/drivers/gluck2.cpp @@ -515,7 +515,7 @@ GFXDECODE_END * Machine Drivers * *********************************************/ -static MACHINE_CONFIG_START( gluck2, gluck2_state ) +static MACHINE_CONFIG_START( gluck2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/16) /* guess */ @@ -586,5 +586,5 @@ ROM_END * Game Drivers * *********************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ -GAME( 1992, gluck2, 0, gluck2, gluck2, driver_device, 0, ROT0, "Yung Yu / CYE", "Good Luck II", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... +GAME( 1992, gluck2, 0, gluck2, gluck2, gluck2_state, 0, ROT0, "Yung Yu / CYE", "Good Luck II", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gmaster.cpp b/src/mame/drivers/gmaster.cpp index ecc0083885b..b98decd6318 100644 --- a/src/mame/drivers/gmaster.cpp +++ b/src/mame/drivers/gmaster.cpp @@ -329,7 +329,7 @@ void gmaster_state::machine_start() } -static MACHINE_CONFIG_START( gmaster, gmaster_state ) +static MACHINE_CONFIG_START( gmaster ) MCFG_CPU_ADD("maincpu", UPD7810, XTAL_12MHz/2/*?*/) // upd78c11 in the unit MCFG_CPU_PROGRAM_MAP(gmaster_mem) MCFG_UPD7810_PORTA_READ_CB(IOPORT("JOY")) diff --git a/src/mame/drivers/gng.cpp b/src/mame/drivers/gng.cpp index ce93aa172a9..6428b72f815 100644 --- a/src/mame/drivers/gng.cpp +++ b/src/mame/drivers/gng.cpp @@ -342,7 +342,7 @@ void gng_state::machine_reset() } } -static MACHINE_CONFIG_START( gng, gng_state ) +static MACHINE_CONFIG_START( gng ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_12MHz/8) /* verified on pcb */ @@ -363,7 +363,7 @@ static MACHINE_CONFIG_START( gng, gng_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(gng_state, screen_update_gng) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", gng) @@ -784,14 +784,14 @@ DRIVER_INIT_MEMBER(gng_state,diamond) -GAME( 1985, gng, 0, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, gnga, gng, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, gngbl, gng, gng, gng, driver_device, 0, ROT0, "bootleg", "Ghosts'n Goblins (bootleg with Cross)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, gngprot, gng, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, gngblita, gng, gng, gng, driver_device, 0, ROT0, "bootleg", "Ghosts'n Goblins (Italian bootleg, harder)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, gngc, gng, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 3)", MACHINE_SUPPORTS_SAVE ) // rev c? -GAME( 1985, gngt, gng, gng, gng, driver_device, 0, ROT0, "Capcom (Taito America license)", "Ghosts'n Goblins (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, makaimur, gng, gng, makaimur, driver_device, 0, ROT0, "Capcom", "Makai-Mura (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, makaimurc, gng, gng, makaimur, driver_device, 0, ROT0, "Capcom", "Makai-Mura (Japan Revision C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, makaimurg, gng, gng, makaimur, driver_device, 0, ROT0, "Capcom", "Makai-Mura (Japan Revision G)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, diamond, 0, gng, diamond, gng_state, diamond, ROT0, "KH Video", "Diamond Run", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gng, 0, gng, gng, gng_state, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gnga, gng, gng, gng, gng_state, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gngbl, gng, gng, gng, gng_state, 0, ROT0, "bootleg", "Ghosts'n Goblins (bootleg with Cross)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gngprot, gng, gng, gng, gng_state, 0, ROT0, "Capcom", "Ghosts'n Goblins (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gngblita, gng, gng, gng, gng_state, 0, ROT0, "bootleg", "Ghosts'n Goblins (Italian bootleg, harder)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gngc, gng, gng, gng, gng_state, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 3)", MACHINE_SUPPORTS_SAVE ) // rev c? +GAME( 1985, gngt, gng, gng, gng, gng_state, 0, ROT0, "Capcom (Taito America license)", "Ghosts'n Goblins (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, makaimur, gng, gng, makaimur, gng_state, 0, ROT0, "Capcom", "Makai-Mura (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, makaimurc, gng, gng, makaimur, gng_state, 0, ROT0, "Capcom", "Makai-Mura (Japan Revision C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, makaimurg, gng, gng, makaimur, gng_state, 0, ROT0, "Capcom", "Makai-Mura (Japan Revision G)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, diamond, 0, gng, diamond, gng_state, diamond, ROT0, "KH Video", "Diamond Run", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/go2000.cpp b/src/mame/drivers/go2000.cpp index e7bb2bf49d9..2241cd56978 100644 --- a/src/mame/drivers/go2000.cpp +++ b/src/mame/drivers/go2000.cpp @@ -333,7 +333,7 @@ void go2000_state::machine_start() } -static MACHINE_CONFIG_START( go2000, go2000_state ) +static MACHINE_CONFIG_START( go2000 ) MCFG_CPU_ADD("maincpu", M68000, 10000000) MCFG_CPU_PROGRAM_MAP(go2000_map) @@ -380,4 +380,4 @@ ROM_START( go2000 ) ROM_END -GAME( 2000, go2000, 0, go2000, go2000, driver_device, 0, ROT0, "SunA?", "Go 2000", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, go2000, 0, go2000, go2000, go2000_state, 0, ROT0, "SunA?", "Go 2000", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/goal92.cpp b/src/mame/drivers/goal92.cpp index 0b9783f4cf3..dc3962d3cec 100644 --- a/src/mame/drivers/goal92.cpp +++ b/src/mame/drivers/goal92.cpp @@ -294,7 +294,7 @@ void goal92_state::machine_reset() m_adpcm_toggle = 0; } -static MACHINE_CONFIG_START( goal92, goal92_state ) +static MACHINE_CONFIG_START( goal92 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,12000000) @@ -313,7 +313,7 @@ static MACHINE_CONFIG_START( goal92, goal92_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) // black border at bottom is a game bug... MCFG_SCREEN_UPDATE_DRIVER(goal92_state, screen_update_goal92) - MCFG_SCREEN_VBLANK_DRIVER(goal92_state, screen_eof_goal92) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(goal92_state, screen_vblank_goal92)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", goal92) @@ -334,7 +334,7 @@ static MACHINE_CONFIG_START( goal92, goal92_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(goal92_state, goal92_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END @@ -401,4 +401,4 @@ ROM_END -GAME( 1992, goal92, cupsoc, goal92, goal92, driver_device, 0, ROT0, "bootleg", "Goal! '92", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, goal92, cupsoc, goal92, goal92, goal92_state, 0, ROT0, "bootleg", "Goal! '92", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/goindol.cpp b/src/mame/drivers/goindol.cpp index 119c76192bb..f5989b52587 100644 --- a/src/mame/drivers/goindol.cpp +++ b/src/mame/drivers/goindol.cpp @@ -233,7 +233,7 @@ void goindol_state::machine_reset() m_prot_toggle = 0; } -static MACHINE_CONFIG_START( goindol, goindol_state ) +static MACHINE_CONFIG_START( goindol ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* XTAL confirmed, divisor is not */ @@ -410,4 +410,4 @@ DRIVER_INIT_MEMBER(goindol_state,goindol) GAME( 1987, goindol, 0, goindol, goindol, goindol_state, goindol, ROT90, "SunA", "Goindol (World)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) GAME( 1987, goindolu, goindol, goindol, goindol, goindol_state, goindol, ROT90, "SunA", "Goindol (US)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) GAME( 1987, goindolk, goindol, goindol, goindol, goindol_state, goindol, ROT90, "SunA", "Goindol (Korea)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, homo, goindol, goindol, homo, driver_device, 0, ROT90, "bootleg", "Homo", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, homo, goindol, goindol, homo, goindol_state, 0, ROT90, "bootleg", "Homo", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/goldngam.cpp b/src/mame/drivers/goldngam.cpp index b1989ad8a6d..ab1a3f8df24 100644 --- a/src/mame/drivers/goldngam.cpp +++ b/src/mame/drivers/goldngam.cpp @@ -546,7 +546,7 @@ GFXDECODE_END *************************/ -static MACHINE_CONFIG_START( swisspkr, goldngam_state ) +static MACHINE_CONFIG_START( swisspkr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK) @@ -614,6 +614,6 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1990, swisspkr, 0, swisspkr, goldngam, driver_device, 0, ROT0, "Golden Games / C+M Technics AG", "Swiss Poker ('50 SG-.10', V2.5)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) -GAME( 1998, moviecrd, 0, moviecrd, goldngam, driver_device, 0, ROT0, "Golden Games / C+M Technics AG", "Movie Card", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1990, swisspkr, 0, swisspkr, goldngam, goldngam_state, 0, ROT0, "Golden Games / C+M Technics AG", "Swiss Poker ('50 SG-.10', V2.5)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 1998, moviecrd, 0, moviecrd, goldngam, goldngam_state, 0, ROT0, "Golden Games / C+M Technics AG", "Movie Card", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp index 37edaa077be..99cebc26239 100644 --- a/src/mame/drivers/goldnpkr.cpp +++ b/src/mame/drivers/goldnpkr.cpp @@ -4023,7 +4023,7 @@ MACHINE_RESET_MEMBER(goldnpkr_state, mondial) * Machine Drivers * *********************************************/ -static MACHINE_CONFIG_START( goldnpkr_base, goldnpkr_state ) +static MACHINE_CONFIG_START( goldnpkr_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, CPU_CLOCK) @@ -10845,79 +10845,79 @@ DRIVER_INIT_MEMBER(goldnpkr_state, bchancep) * Game Drivers * *********************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1981, goldnpkr, 0, goldnpkr, goldnpkr, driver_device, 0, ROT0, "Bonanza Enterprises, Ltd", "Golden Poker Double Up (Big Boy)", 0, layout_goldnpkr ) -GAMEL( 1981, goldnpkb, goldnpkr, goldnpkr, goldnpkr, driver_device, 0, ROT0, "Bonanza Enterprises, Ltd", "Golden Poker Double Up (Mini Boy)", 0, layout_goldnpkr ) - -GAMEL( 198?, videtron, 0, goldnpkr, videtron, driver_device, 0, ROT0, "", "Videotron Poker (cards selector, set 1)", 0, layout_goldnpkr ) -GAMEL( 198?, videtron2, videtron, goldnpkr, videtron, driver_device, 0, ROT0, "", "Videotron Poker (cards selector, set 2)", 0, layout_goldnpkr ) -GAMEL( 198?, videtrna, videtron, goldnpkr, goldnpkr, driver_device, 0, ROT0, "", "Videotron Poker (normal controls)", 0, layout_goldnpkr ) - -GAMEL( 198?, pottnpkr, 0, pottnpkr, pottnpkr, driver_device, 0, ROT0, "bootleg", "Jack Potten's Poker (set 1)", 0, layout_goldnpkr ) -GAMEL( 198?, potnpkra, pottnpkr, pottnpkr, potnpkra, driver_device, 0, ROT0, "bootleg", "Jack Potten's Poker (set 2)", 0, layout_goldnpkr ) -GAMEL( 198?, potnpkrb, pottnpkr, pottnpkr, pottnpkr, driver_device, 0, ROT0, "bootleg", "Jack Potten's Poker (set 3)", 0, layout_goldnpkr ) -GAMEL( 198?, potnpkrc, pottnpkr, pottnpkr, potnpkrc, driver_device, 0, ROT0, "bootleg", "Jack Potten's Poker (set 4)", 0, layout_goldnpkr ) -GAMEL( 198?, potnpkrd, pottnpkr, pottnpkr, potnpkrc, driver_device, 0, ROT0, "bootleg", "Jack Potten's Poker (set 5)", 0, layout_goldnpkr ) -GAMEL( 198?, potnpkre, pottnpkr, pottnpkr, pottnpkr, driver_device, 0, ROT0, "bootleg", "Jack Potten's Poker (set 6)", 0, layout_goldnpkr ) -GAMEL( 198?, potnpkrf, pottnpkr, goldnpkr, goldnpkr, driver_device, 0, ROT0, "bootleg", "Jack Potten's Poker (set 7, Royale GFX)", 0, layout_goldnpkr ) -GAMEL( 198?, potnpkrg, pottnpkr, pottnpkr, potnpkra, driver_device, 0, ROT0, "bootleg", "Jack Potten's Poker (set 8, Australian)", 0, layout_goldnpkr ) -GAMEL( 198?, potnpkrh, pottnpkr, pottnpkr, goldnpkr, driver_device, 0, ROT0, "bootleg", "Jack Potten's Poker (set 9, 'just 4 fun')", 0, layout_goldnpkr ) -GAMEL( 198?, ngold, pottnpkr, pottnpkr, ngold, driver_device, 0, ROT0, "", "Jack Potten's Poker (NGold, set 1)", 0, layout_goldnpkr ) -GAMEL( 198?, ngolda, pottnpkr, pottnpkr, ngold, driver_device, 0, ROT0, "", "Jack Potten's Poker (NGold, set 2)", 0, layout_goldnpkr ) -GAMEL( 198?, ngoldb, pottnpkr, pottnpkr, ngoldb, driver_device, 0, ROT0, "", "Jack Potten's Poker (NGold, set 3)", 0, layout_goldnpkr ) - -GAMEL( 1990, bsuerte, 0, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 1)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertea, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 2)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuerteb, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 3)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertec, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 4)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuerted, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 5)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertee, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 6)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertef, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 7)", 0, layout_goldnpkr ) -GAME( 1991, bsuerteg, bsuerte, witchcrd, bsuertew, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 8)", 0 ) -GAME( 1991, bsuerteh, bsuerte, witchcrd, bsuertew, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 9)", 0 ) -GAMEL( 1991, bsuertei, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 10)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertej, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 11)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertek, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 12)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertel, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 13)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertem, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 14)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuerten, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 15, Prodel PCB)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuerteo, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 16)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertep, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 17)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuerteq, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 18)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuerter, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 19)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertes, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 20)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertet, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 21)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuerteu, bsuerte, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Buena Suerte (Spanish, set 22)", 0, layout_goldnpkr ) -GAMEL( 1991, bsuertev, bsuerte, witchcrd, bsuertev, driver_device, 0, ROT0, "", "Buena Suerte (Spanish/Portuguese, set 23)", 0, layout_goldnpkr ) -GAMEL( 1991, goodluck, bsuerte, witchcrd, goodluck, driver_device, 0, ROT0, "", "Good Luck", 0, layout_goldnpkr ) - -GAMEL( 1991, falcnwld, 0, wildcard, wildcard, driver_device, 0, ROT0, "TVG", "Falcons Wild - Wild Card 1991 (TVG)", 0, layout_goldnpkr ) -GAMEL( 1990, falcnwlda, falcnwld, wildcard, wildcard, driver_device, 0, ROT0, "Video Klein", "Falcons Wild - World Wide Poker (Video Klein, set 1)", 0, layout_goldnpkr ) -GAMEL( 1990, falcnwldb, falcnwld, wildcard, wildcard, driver_device, 0, ROT0, "Video Klein", "Falcons Wild - World Wide Poker (Video Klein, set 2)", 0, layout_goldnpkr ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1981, goldnpkr, 0, goldnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "Bonanza Enterprises, Ltd", "Golden Poker Double Up (Big Boy)", 0, layout_goldnpkr ) +GAMEL( 1981, goldnpkb, goldnpkr, goldnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "Bonanza Enterprises, Ltd", "Golden Poker Double Up (Mini Boy)", 0, layout_goldnpkr ) + +GAMEL( 198?, videtron, 0, goldnpkr, videtron, goldnpkr_state, 0, ROT0, "", "Videotron Poker (cards selector, set 1)", 0, layout_goldnpkr ) +GAMEL( 198?, videtron2, videtron, goldnpkr, videtron, goldnpkr_state, 0, ROT0, "", "Videotron Poker (cards selector, set 2)", 0, layout_goldnpkr ) +GAMEL( 198?, videtrna, videtron, goldnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "", "Videotron Poker (normal controls)", 0, layout_goldnpkr ) + +GAMEL( 198?, pottnpkr, 0, pottnpkr, pottnpkr, goldnpkr_state, 0, ROT0, "bootleg", "Jack Potten's Poker (set 1)", 0, layout_goldnpkr ) +GAMEL( 198?, potnpkra, pottnpkr, pottnpkr, potnpkra, goldnpkr_state, 0, ROT0, "bootleg", "Jack Potten's Poker (set 2)", 0, layout_goldnpkr ) +GAMEL( 198?, potnpkrb, pottnpkr, pottnpkr, pottnpkr, goldnpkr_state, 0, ROT0, "bootleg", "Jack Potten's Poker (set 3)", 0, layout_goldnpkr ) +GAMEL( 198?, potnpkrc, pottnpkr, pottnpkr, potnpkrc, goldnpkr_state, 0, ROT0, "bootleg", "Jack Potten's Poker (set 4)", 0, layout_goldnpkr ) +GAMEL( 198?, potnpkrd, pottnpkr, pottnpkr, potnpkrc, goldnpkr_state, 0, ROT0, "bootleg", "Jack Potten's Poker (set 5)", 0, layout_goldnpkr ) +GAMEL( 198?, potnpkre, pottnpkr, pottnpkr, pottnpkr, goldnpkr_state, 0, ROT0, "bootleg", "Jack Potten's Poker (set 6)", 0, layout_goldnpkr ) +GAMEL( 198?, potnpkrf, pottnpkr, goldnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "bootleg", "Jack Potten's Poker (set 7, Royale GFX)", 0, layout_goldnpkr ) +GAMEL( 198?, potnpkrg, pottnpkr, pottnpkr, potnpkra, goldnpkr_state, 0, ROT0, "bootleg", "Jack Potten's Poker (set 8, Australian)", 0, layout_goldnpkr ) +GAMEL( 198?, potnpkrh, pottnpkr, pottnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "bootleg", "Jack Potten's Poker (set 9, 'just 4 fun')", 0, layout_goldnpkr ) +GAMEL( 198?, ngold, pottnpkr, pottnpkr, ngold, goldnpkr_state, 0, ROT0, "", "Jack Potten's Poker (NGold, set 1)", 0, layout_goldnpkr ) +GAMEL( 198?, ngolda, pottnpkr, pottnpkr, ngold, goldnpkr_state, 0, ROT0, "", "Jack Potten's Poker (NGold, set 2)", 0, layout_goldnpkr ) +GAMEL( 198?, ngoldb, pottnpkr, pottnpkr, ngoldb, goldnpkr_state, 0, ROT0, "", "Jack Potten's Poker (NGold, set 3)", 0, layout_goldnpkr ) + +GAMEL( 1990, bsuerte, 0, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 1)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertea, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 2)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuerteb, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 3)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertec, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 4)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuerted, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 5)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertee, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 6)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertef, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 7)", 0, layout_goldnpkr ) +GAME( 1991, bsuerteg, bsuerte, witchcrd, bsuertew, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 8)", 0 ) +GAME( 1991, bsuerteh, bsuerte, witchcrd, bsuertew, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 9)", 0 ) +GAMEL( 1991, bsuertei, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 10)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertej, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 11)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertek, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 12)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertel, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 13)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertem, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 14)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuerten, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 15, Prodel PCB)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuerteo, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 16)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertep, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 17)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuerteq, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 18)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuerter, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 19)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertes, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 20)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertet, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 21)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuerteu, bsuerte, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish, set 22)", 0, layout_goldnpkr ) +GAMEL( 1991, bsuertev, bsuerte, witchcrd, bsuertev, goldnpkr_state, 0, ROT0, "", "Buena Suerte (Spanish/Portuguese, set 23)", 0, layout_goldnpkr ) +GAMEL( 1991, goodluck, bsuerte, witchcrd, goodluck, goldnpkr_state, 0, ROT0, "", "Good Luck", 0, layout_goldnpkr ) + +GAMEL( 1991, falcnwld, 0, wildcard, wildcard, goldnpkr_state, 0, ROT0, "TVG", "Falcons Wild - Wild Card 1991 (TVG)", 0, layout_goldnpkr ) +GAMEL( 1990, falcnwlda, falcnwld, wildcard, wildcard, goldnpkr_state, 0, ROT0, "Video Klein", "Falcons Wild - World Wide Poker (Video Klein, set 1)", 0, layout_goldnpkr ) +GAMEL( 1990, falcnwldb, falcnwld, wildcard, wildcard, goldnpkr_state, 0, ROT0, "Video Klein", "Falcons Wild - World Wide Poker (Video Klein, set 2)", 0, layout_goldnpkr ) GAME( 1983, falcnwldc, falcnwld, wildcrdb, wildcard, goldnpkr_state, flcnw, ROT0, "Falcon", "Falcons Wild - World Wide Poker (Falcon original)", MACHINE_NOT_WORKING ) GAMEL( 1991, witchcrd, 0, witchcrd, witchcrd, goldnpkr_state, vkdlsc, ROT0, "Video Klein?", "Witch Card (Video Klein CPU box, set 1)", 0, layout_goldnpkr ) -GAME( 1991, witchcda, witchcrd, witchcrd, witchcda, driver_device, 0, ROT0, "", "Witch Card (Spanish, witch game, set 1)", 0 ) -GAME( 1991, witchcdb, witchcrd, witchcrd, witchcda, driver_device, 0, ROT0, "", "Witch Card (Spanish, witch game, set 2)", 0 ) -GAME( 1991, witchcdc, witchcrd, witchcrd, witchcdc, driver_device, 0, ROT0, "", "Witch Card (English, no witch game)", 0 ) -GAMEL( 1994, witchcdd, witchcrd, witchcrd, witchcdd, driver_device, 0, ROT0, "Proma", "Witch Card (German, WC3050, set 1 )", 0, layout_goldnpkr ) +GAME( 1991, witchcda, witchcrd, witchcrd, witchcda, goldnpkr_state, 0, ROT0, "", "Witch Card (Spanish, witch game, set 1)", 0 ) +GAME( 1991, witchcdb, witchcrd, witchcrd, witchcda, goldnpkr_state, 0, ROT0, "", "Witch Card (Spanish, witch game, set 2)", 0 ) +GAME( 1991, witchcdc, witchcrd, witchcrd, witchcdc, goldnpkr_state, 0, ROT0, "", "Witch Card (English, no witch game)", 0 ) +GAMEL( 1994, witchcdd, witchcrd, witchcrd, witchcdd, goldnpkr_state, 0, ROT0, "Proma", "Witch Card (German, WC3050, set 1 )", 0, layout_goldnpkr ) GAMEL( 1991, witchcde, witchcrd, witchcrd, witchcrd, goldnpkr_state, vkdlsc, ROT0, "Video Klein", "Witch Card (Video Klein CPU box, set 2)", 0, layout_goldnpkr ) -GAMEL( 1985, witchcdf, witchcrd, witchcrd, witchcdf, driver_device, 0, ROT0, "PM / Beck Elektronik", "Witch Card (English, witch game, lamps)", 0, layout_goldnpkr ) -GAMEL( 199?, witchcdg, witchcrd, wcfalcon, witchcrd, driver_device, 0, ROT0, "Falcon", "Witch Card (Falcon, enhanced sound)", 0, layout_goldnpkr ) -GAMEL( 1994, witchcdh, witchcrd, witchcrd, witchcdd, driver_device, 0, ROT0, "Proma", "Witch Card (German, WC3050, set 2 )", 0, layout_goldnpkr ) -GAMEL( 1994, witchcdi, witchcrd, witchcrd, witchcdd, driver_device, 0, ROT0, "Proma", "Witch Card (German, WC3050, 27-4-94)", 0, layout_goldnpkr ) +GAMEL( 1985, witchcdf, witchcrd, witchcrd, witchcdf, goldnpkr_state, 0, ROT0, "PM / Beck Elektronik", "Witch Card (English, witch game, lamps)", 0, layout_goldnpkr ) +GAMEL( 199?, witchcdg, witchcrd, wcfalcon, witchcrd, goldnpkr_state, 0, ROT0, "Falcon", "Witch Card (Falcon, enhanced sound)", 0, layout_goldnpkr ) +GAMEL( 1994, witchcdh, witchcrd, witchcrd, witchcdd, goldnpkr_state, 0, ROT0, "Proma", "Witch Card (German, WC3050, set 2 )", 0, layout_goldnpkr ) +GAMEL( 1994, witchcdi, witchcrd, witchcrd, witchcdd, goldnpkr_state, 0, ROT0, "Proma", "Witch Card (German, WC3050, 27-4-94)", 0, layout_goldnpkr ) -GAMEL( 1991, witchgme, 0, witchcrd, witchcrd, driver_device, 0, ROT0, "Video Klein", "Witch Game (Video Klein, set 1)", 0, layout_goldnpkr ) -GAMEL( 1997, witchcdk, witchgme, witchcrd, witchcrd, driver_device, 0, ROT0, "Video Klein", "Witch Game (Video Klein, set 2)", MACHINE_NOT_WORKING, layout_goldnpkr ) +GAMEL( 1991, witchgme, 0, witchcrd, witchcrd, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Game (Video Klein, set 1)", 0, layout_goldnpkr ) +GAMEL( 1997, witchcdk, witchgme, witchcrd, witchcrd, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Game (Video Klein, set 2)", MACHINE_NOT_WORKING, layout_goldnpkr ) GAMEL( 1994, witchjol, 0, wcrdxtnd, witchjol, goldnpkr_state, vkdlsa, ROT0, "Video Klein", "Jolli Witch (Export, 6T/12T ver 1.57D)", 0, layout_goldnpkr ) GAMEL( 2001, wldwitch, 0, wcrdxtnd, wldwitch, goldnpkr_state, vkdlsww, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.84A)", 0, layout_goldnpkr ) /* Ver 184A, 2001-09-12 */ GAMEL( 1992, wldwitcha, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwa, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.57-SP)", 0, layout_goldnpkr ) /* Ver 157-SP, 1992-12-25 */ -GAMEL( 1992, wldwitchb, wldwitch, wcrdxtnd, wldwitch, driver_device, 0, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.57-TE)", MACHINE_NOT_WORKING, layout_goldnpkr ) /* Ver 157-TE, 1992-12-25 */ +GAMEL( 1992, wldwitchb, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, 0, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.57-TE)", MACHINE_NOT_WORKING, layout_goldnpkr ) /* Ver 157-TE, 1992-12-25 */ GAMEL( 1994, wldwitchc, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwc, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62A)", 0, layout_goldnpkr ) /* Ver 162A, 1994-04-26 */ GAMEL( 1994, wldwitchd, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwd, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62B)", 0, layout_goldnpkr ) /* Ver 162B, 1994-04-26 */ -GAMEL( 1994, wldwitche, wldwitch, wcrdxtnd, wldwitch, driver_device, 0, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62A-F)", MACHINE_NOT_WORKING, layout_goldnpkr ) /* Ver 162A-F, 1994-04-26 */ +GAMEL( 1994, wldwitche, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, 0, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62A-F)", MACHINE_NOT_WORKING, layout_goldnpkr ) /* Ver 162A-F, 1994-04-26 */ GAMEL( 1994, wldwitchf, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwc, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62A alt)", 0, layout_goldnpkr ) /* Ver 162A alt, 1994-11-03 */ GAMEL( 1994, wldwitchg, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwd, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62B alt)", 0, layout_goldnpkr ) /* Ver 162B alt, 1994-11-03 */ GAMEL( 1995, wldwitchh, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwh, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.65A)", 0, layout_goldnpkr ) /* Ver 165A, 1995-11-16 */ @@ -10936,57 +10936,57 @@ GAMEL( 1999, wldwitcht, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwt, GAMEL( 2000, wldwitchu, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwu, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.79A)", 0, layout_goldnpkr ) /* Ver 179A, 2000-05-10 */ GAMEL( 2001, wldwitchv, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwv, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.83A)", 0, layout_goldnpkr ) /* Ver 183A, 2001-06-13 */ -GAMEL( 1998, wupndown, 0, wcrdxtnd, wupndown, driver_device, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 1.02)", 0, layout_upndown ) /* Ver 1.02, 1998-10-26 */ -GAMEL( 1998, wupndowna, wupndown, wcrdxtnd, wupndown, driver_device, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 0.99, set 1)", 0, layout_upndown ) /* Ver 0.99, 1998-04-09 */ -GAMEL( 1998, wupndownb, wupndown, wcrdxtnd, wupndown, driver_device, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 0.99, set 2)", 0, layout_upndown ) /* Ver 0.99, 1998-03-23 */ -GAMEL( 1998, wupndownc, wupndown, wcrdxtnd, wupndown, driver_device, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 0.99, set 3)", 0, layout_upndown ) /* Ver 0.99 alt, 1998-05-11 */ -GAMEL( 1998, wupndownd, wupndown, wcrdxtnd, wupndown, driver_device, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 0.99T)", 0, layout_upndown ) /* Ver 0.99T, 1998-03-23 */ +GAMEL( 1998, wupndown, 0, wcrdxtnd, wupndown, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 1.02)", 0, layout_upndown ) /* Ver 1.02, 1998-10-26 */ +GAMEL( 1998, wupndowna, wupndown, wcrdxtnd, wupndown, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 0.99, set 1)", 0, layout_upndown ) /* Ver 0.99, 1998-04-09 */ +GAMEL( 1998, wupndownb, wupndown, wcrdxtnd, wupndown, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 0.99, set 2)", 0, layout_upndown ) /* Ver 0.99, 1998-03-23 */ +GAMEL( 1998, wupndownc, wupndown, wcrdxtnd, wupndown, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 0.99, set 3)", 0, layout_upndown ) /* Ver 0.99 alt, 1998-05-11 */ +GAMEL( 1998, wupndownd, wupndown, wcrdxtnd, wupndown, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Up & Down (Export, 6T/12T ver 0.99T)", 0, layout_upndown ) /* Ver 0.99T, 1998-03-23 */ GAMEL( 1992, wstrike, 0, wcrdxtnd, wstrike, goldnpkr_state, wstrike, ROT0, "Video Klein", "Witch Strike (Export, 6T/12T ver 1.01A)", 0, layout_goldnpkr ) GAMEL( 1992, wstrikea, wstrike, wcrdxtnd, wstrike, goldnpkr_state, wstrike, ROT0, "Video Klein", "Witch Strike (Export, 6T/12T ver 1.01B)", 0, layout_goldnpkr ) -GAMEL( 1996, wtchjack, 0, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.87-89)", 0, layout_goldnpkr ) /* Ver 0.87-89 / 1996-10-08 GFX OK */ -GAMEL( 1996, wtchjacka, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.87-88)", 0, layout_goldnpkr ) /* Ver 0.87-88 / 1996-10-02, GFX OK */ -GAMEL( 1996, wtchjackb, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.87)", 0, layout_goldnpkr ) /* Ver 0.87 / 1996-07-16, GFX OK */ -GAMEL( 1996, wtchjackc, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.70S)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.70S / 1996-03-26 */ -GAMEL( 1996, wtchjackd, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.70P)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.70P / 1996-03-26 */ -GAMEL( 1995, wtchjacke, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.65)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.65 / 1995-10-19 */ -GAMEL( 1995, wtchjackf, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.64)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.64 / 1995-09-13 */ -GAMEL( 1995, wtchjackg, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.62)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.62 / 1995-08-02 */ -GAMEL( 1995, wtchjackh, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.40T)", MACHINE_NOT_WORKING, layout_goldnpkr ) /* Ver 0.40T / 1995-02-27 */ -GAMEL( 1995, wtchjacki, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.40)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.40 / 1995-02-27 */ -GAMEL( 1994, wtchjackj, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jackpot (Export, 6T/12T ver 0.25)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.25 / 1994-11-24 */ +GAMEL( 1996, wtchjack, 0, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.87-89)", 0, layout_goldnpkr ) /* Ver 0.87-89 / 1996-10-08 GFX OK */ +GAMEL( 1996, wtchjacka, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.87-88)", 0, layout_goldnpkr ) /* Ver 0.87-88 / 1996-10-02, GFX OK */ +GAMEL( 1996, wtchjackb, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.87)", 0, layout_goldnpkr ) /* Ver 0.87 / 1996-07-16, GFX OK */ +GAMEL( 1996, wtchjackc, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.70S)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.70S / 1996-03-26 */ +GAMEL( 1996, wtchjackd, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.70P)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.70P / 1996-03-26 */ +GAMEL( 1995, wtchjacke, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.65)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.65 / 1995-10-19 */ +GAMEL( 1995, wtchjackf, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.64)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.64 / 1995-09-13 */ +GAMEL( 1995, wtchjackg, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.62)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.62 / 1995-08-02 */ +GAMEL( 1995, wtchjackh, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.40T)", MACHINE_NOT_WORKING, layout_goldnpkr ) /* Ver 0.40T / 1995-02-27 */ +GAMEL( 1995, wtchjacki, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.40)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.40 / 1995-02-27 */ +GAMEL( 1994, wtchjackj, wtchjack, wcrdxtnd, wtchjack, goldnpkr_state, 0, ROT0, "Video Klein", "Witch Jackpot (Export, 6T/12T ver 0.25)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.25 / 1994-11-24 */ /*************************************** OTHER SETS ***************************************/ /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1981, pmpoker, 0, goldnpkr, pmpoker, driver_device, 0, ROT0, "PM / Beck Elektronik", "PlayMan Poker (German)", 0, layout_pmpoker ) -GAMEL( 198?, royale, 0, goldnpkr, goldnpkr, driver_device, 0, ROT0, "", "Royale (set 1)", 0, layout_goldnpkr ) -GAMEL( 198?, royalea, royale, goldnpkr, goldnpkr, driver_device, 0, ROT0, "", "Royale (set 2)", 0, layout_goldnpkr ) -GAME( 1993, sloco93, 0, witchcrd, sloco93, driver_device, 0, ROT0, "", "Super Loco 93 (Spanish, set 1)", 0 ) -GAME( 1993, sloco93a, sloco93, witchcrd, sloco93, driver_device, 0, ROT0, "", "Super Loco 93 (Spanish, set 2)", 0 ) -GAME( 198?, maverik, 0, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Maverik", 0 ) -GAMEL( 1986, brasil86, 0, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Brasil 86", 0, layout_goldnpkr ) -GAMEL( 1987, brasil87, 0, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Brasil 87", 0, layout_goldnpkr ) -GAMEL( 1989, brasil89, 0, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Brasil 89 (set 1)", 0, layout_goldnpkr ) -GAMEL( 1989, brasil89a, brasil89, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Brasil 89 (set 2)", 0, layout_goldnpkr ) -GAME( 1993, brasil93, 0, witchcrd, bsuerte, driver_device, 0, ROT0, "", "Brasil 93", 0 ) // no lamps -GAME( 1991, poker91, 0, witchcrd, poker91, driver_device, 0, ROT0, "", "Poker 91", 0 ) -GAME( 198?, genie, 0, genie, genie, driver_device, 0, ROT0, "Video Fun Games Ltd.", "Genie (ICP-1, set 1)", 0 ) -GAME( 198?, geniea, genie, geniea, geniea, driver_device, 0, ROT0, "", "Genie (ICP-1, set 2)", 0 ) -GAMEL( 1983, silverga, 0, goldnpkr, goldnpkr, driver_device, 0, ROT0, "", "Silver Game", 0, layout_goldnpkr ) -GAME( 1987, caspoker, 0, goldnpkr, caspoker, driver_device, 0, ROT0, "PM / Beck Elektronik", "Casino Poker (Ver PM86LO-35-5, German)", MACHINE_IMPERFECT_COLORS ) - -GAMEL( 198?, superdbl, pottnpkr, goldnpkr, goldnpkr, driver_device, 0, ROT0, "Karateco", "Super Double (French)", 0, layout_goldnpkr ) -GAME( 198?, pokerdub, 0, pottnpkr, goldnpkr, driver_device, 0, ROT0, "", "unknown French poker game", MACHINE_NOT_WORKING ) // lacks of 2nd program ROM. +GAMEL( 1981, pmpoker, 0, goldnpkr, pmpoker, goldnpkr_state, 0, ROT0, "PM / Beck Elektronik", "PlayMan Poker (German)", 0, layout_pmpoker ) +GAMEL( 198?, royale, 0, goldnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "", "Royale (set 1)", 0, layout_goldnpkr ) +GAMEL( 198?, royalea, royale, goldnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "", "Royale (set 2)", 0, layout_goldnpkr ) +GAME( 1993, sloco93, 0, witchcrd, sloco93, goldnpkr_state, 0, ROT0, "", "Super Loco 93 (Spanish, set 1)", 0 ) +GAME( 1993, sloco93a, sloco93, witchcrd, sloco93, goldnpkr_state, 0, ROT0, "", "Super Loco 93 (Spanish, set 2)", 0 ) +GAME( 198?, maverik, 0, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Maverik", 0 ) +GAMEL( 1986, brasil86, 0, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Brasil 86", 0, layout_goldnpkr ) +GAMEL( 1987, brasil87, 0, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Brasil 87", 0, layout_goldnpkr ) +GAMEL( 1989, brasil89, 0, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Brasil 89 (set 1)", 0, layout_goldnpkr ) +GAMEL( 1989, brasil89a, brasil89, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Brasil 89 (set 2)", 0, layout_goldnpkr ) +GAME( 1993, brasil93, 0, witchcrd, bsuerte, goldnpkr_state, 0, ROT0, "", "Brasil 93", 0 ) // no lamps +GAME( 1991, poker91, 0, witchcrd, poker91, goldnpkr_state, 0, ROT0, "", "Poker 91", 0 ) +GAME( 198?, genie, 0, genie, genie, goldnpkr_state, 0, ROT0, "Video Fun Games Ltd.", "Genie (ICP-1, set 1)", 0 ) +GAME( 198?, geniea, genie, geniea, geniea, goldnpkr_state, 0, ROT0, "", "Genie (ICP-1, set 2)", 0 ) +GAMEL( 1983, silverga, 0, goldnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "", "Silver Game", 0, layout_goldnpkr ) +GAME( 1987, caspoker, 0, goldnpkr, caspoker, goldnpkr_state, 0, ROT0, "PM / Beck Elektronik", "Casino Poker (Ver PM86LO-35-5, German)", MACHINE_IMPERFECT_COLORS ) + +GAMEL( 198?, superdbl, pottnpkr, goldnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "Karateco", "Super Double (French)", 0, layout_goldnpkr ) +GAME( 198?, pokerdub, 0, pottnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "", "unknown French poker game", MACHINE_NOT_WORKING ) // lacks of 2nd program ROM. GAME( 198?, pokerduc, 0, goldnpkr, goldnpkr, goldnpkr_state, icp1db, ROT0, "", "unknown encrypted poker game", MACHINE_NOT_WORKING ) // encrypted. -GAME( 198?, pokersis, 0, bchancep, goldnpkr, driver_device, 0, ROT0, "Sisteme France", "unknown Sisteme France Poker", MACHINE_NOT_WORKING ) // fix banking (4 prgs?)... +GAME( 198?, pokersis, 0, bchancep, goldnpkr, goldnpkr_state, 0, ROT0, "Sisteme France", "unknown Sisteme France Poker", MACHINE_NOT_WORKING ) // fix banking (4 prgs?)... GAMEL( 198?, bchancep, 0, bchancep, goldnpkr, goldnpkr_state, bchancep, ROT0, "", "Bonne Chance! (Golden Poker prequel HW, set 1)", MACHINE_NOT_WORKING, layout_goldnpkr ) -GAMEL( 198?, bchanceq, 0, goldnpkr, goldnpkr, driver_device, 0, ROT0, "", "Bonne Chance! (Golden Poker prequel HW, set 2)", MACHINE_NOT_WORKING, layout_goldnpkr ) +GAMEL( 198?, bchanceq, 0, goldnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "", "Bonne Chance! (Golden Poker prequel HW, set 2)", MACHINE_NOT_WORKING, layout_goldnpkr ) -GAME( 1987, pokermon, 0, mondial, mondial, driver_device, 0, ROT0, "", "Mundial/Mondial (Italian/French)", 0 ) // banked selectable program -GAME( 1998, super98, bsuerte, witchcrd, super98, driver_device, 0, ROT0, "", "Super 98 (3-hands, ICP-1)", MACHINE_NOT_WORKING ) // program checks zeropage registers for changes... +GAME( 1987, pokermon, 0, mondial, mondial, goldnpkr_state, 0, ROT0, "", "Mundial/Mondial (Italian/French)", 0 ) // banked selectable program +GAME( 1998, super98, bsuerte, witchcrd, super98, goldnpkr_state, 0, ROT0, "", "Super 98 (3-hands, ICP-1)", MACHINE_NOT_WORKING ) // program checks zeropage registers for changes... -GAME( 198?, animpkr, 0, pottnpkr, goldnpkr, driver_device, 0, ROT0, "", "unknown animal-themed game (bottom)", MACHINE_NOT_WORKING ) // banked selectable program (bottom). -GAME( 198?, animpkra, animpkr, pottnpkr, goldnpkr, driver_device, 0, ROT0, "", "unknown animal-themed game (top)", MACHINE_NOT_WORKING ) // banked selectable program (top). +GAME( 198?, animpkr, 0, pottnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "", "unknown animal-themed game (bottom)", MACHINE_NOT_WORKING ) // banked selectable program (bottom). +GAME( 198?, animpkra, animpkr, pottnpkr, goldnpkr, goldnpkr_state, 0, ROT0, "", "unknown animal-themed game (top)", MACHINE_NOT_WORKING ) // banked selectable program (top). diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp index e0603cbd732..3c6b9ef14cb 100644 --- a/src/mame/drivers/goldstar.cpp +++ b/src/mame/drivers/goldstar.cpp @@ -222,6 +222,7 @@ #include "includes/goldstar.h" #include "cpu/z80/z80.h" +#include "cpu/mcs51/mcs51.h" #include "machine/i8255.h" #include "machine/nvram.h" #include "sound/ay8910.h" @@ -8058,7 +8059,7 @@ WRITE8_MEMBER(goldstar_state::ay8910_outputb_w) } -static MACHINE_CONFIG_START( goldstar, goldstar_state ) +static MACHINE_CONFIG_START( goldstar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8089,13 +8090,13 @@ static MACHINE_CONFIG_START( goldstar, goldstar_state ) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW3")) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", OKI_CLOCK, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", OKI_CLOCK, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( goldstbl, goldstar_state ) +static MACHINE_CONFIG_START( goldstbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8126,7 +8127,7 @@ static MACHINE_CONFIG_START( goldstbl, goldstar_state ) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW3")) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", OKI_CLOCK, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", OKI_CLOCK, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -8139,7 +8140,7 @@ static MACHINE_CONFIG_DERIVED( goldfrui, goldstbl ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( star100, sanghopm_state ) +static MACHINE_CONFIG_START( star100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8172,13 +8173,13 @@ static MACHINE_CONFIG_START( star100, sanghopm_state ) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW6")) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", OKI_CLOCK, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", OKI_CLOCK, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( super9, goldstar_state ) +static MACHINE_CONFIG_START( super9 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8211,7 +8212,7 @@ static MACHINE_CONFIG_START( super9, goldstar_state ) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW3")) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", OKI_CLOCK, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", OKI_CLOCK, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -8276,7 +8277,7 @@ PALETTE_INIT_MEMBER(goldstar_state, lucky8) } -static MACHINE_CONFIG_START( ncb3, cb3_state ) +static MACHINE_CONFIG_START( ncb3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8346,7 +8347,7 @@ static MACHINE_CONFIG_DERIVED( cm97, ncb3 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wcherry, goldstar_state ) +static MACHINE_CONFIG_START( wcherry ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8395,7 +8396,7 @@ static MACHINE_CONFIG_START( wcherry, goldstar_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cm, cmaster_state ) +static MACHINE_CONFIG_START( cm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8442,7 +8443,7 @@ static MACHINE_CONFIG_DERIVED( cmasterc, cm ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cmast91, goldstar_state ) +static MACHINE_CONFIG_START( cmast91 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8492,7 +8493,7 @@ INTERRUPT_GEN_MEMBER(wingco_state::masked_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( lucky8, wingco_state ) +static MACHINE_CONFIG_START( lucky8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8547,7 +8548,7 @@ static MACHINE_CONFIG_START( lucky8, wingco_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bingowng, wingco_state ) +static MACHINE_CONFIG_START( bingowng ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8669,7 +8670,7 @@ PALETTE_INIT_MEMBER(wingco_state, magodds) } } -static MACHINE_CONFIG_START( magodds, wingco_state ) +static MACHINE_CONFIG_START( magodds ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8724,7 +8725,7 @@ static MACHINE_CONFIG_START( magodds, wingco_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kkotnoli, goldstar_state ) +static MACHINE_CONFIG_START( kkotnoli ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8768,7 +8769,7 @@ static MACHINE_CONFIG_START( kkotnoli, goldstar_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ladylinr, goldstar_state ) +static MACHINE_CONFIG_START( ladylinr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8811,7 +8812,7 @@ static MACHINE_CONFIG_START( ladylinr, goldstar_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wcat3, wingco_state ) +static MACHINE_CONFIG_START( wcat3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8868,7 +8869,7 @@ MACHINE_CONFIG_END /* diff with cm machine driver: gfxdecode, OKI & portmap */ -static MACHINE_CONFIG_START( amcoe1, cmaster_state ) +static MACHINE_CONFIG_START( amcoe1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8909,7 +8910,7 @@ static MACHINE_CONFIG_START( amcoe1, cmaster_state ) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW5")) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", OKI_CLOCK, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", OKI_CLOCK, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -8924,7 +8925,7 @@ MACHINE_CONFIG_END /* diff with cm machine driver: gfxdecode, AY8910 volume & portmap */ -static MACHINE_CONFIG_START( amcoe2, cmaster_state ) +static MACHINE_CONFIG_START( amcoe2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -8982,7 +8983,7 @@ INTERRUPT_GEN_MEMBER(unkch_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( unkch, unkch_state ) +static MACHINE_CONFIG_START( unkch ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -9021,7 +9022,7 @@ MACHINE_CONFIG_END // hw unknown - should be somewhat similar to cm -static MACHINE_CONFIG_START( pkrmast, goldstar_state ) +static MACHINE_CONFIG_START( pkrmast ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -9054,7 +9055,7 @@ static MACHINE_CONFIG_START( pkrmast, goldstar_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( megaline, unkch_state ) +static MACHINE_CONFIG_START( megaline ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -9104,14 +9105,17 @@ static MACHINE_CONFIG_START( megaline, unkch_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bonusch, unkch_state ) +static MACHINE_CONFIG_START( bonusch ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) + MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 2) MCFG_CPU_PROGRAM_MAP(bonusch_map) MCFG_CPU_IO_MAP(bonusch_portmap) MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, nmi_line_pulse) + MCFG_CPU_ADD("mcu", I80C51, XTAL_12MHz) + MCFG_DEVICE_DISABLE() + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -10552,6 +10556,43 @@ ROM_START( cmast99b ) ROM_LOAD( "82s129.u46", 0x0000, 0x0100, CRC(50ec383b) SHA1(ae95b92bd3946b40134bcdc22708d5c6b0f4c23e) BAD_DUMP ) ROM_END +/* + A-Plan + (C) 1993 WeaShing H.K. + + TMP91P640 @ 5MHz or 10MHz (or SDIP64 gfx chip of some kind?) + Z80 [clock probably 12/4] + 8255 x2 + YM2149 [clock probably 12/8] + 12MHz and 10MHz XTALs + 6116 2kx8 SRAM x4 + BPROM 82S129 x2 + 8-position DIPSW x5 + PCB number only says 'WEASHING' +*/ + +ROM_START( aplan ) // Has "DYNA QL-1 V1.01" string. + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "u18", 0x00000, 0x10000, CRC(e0e5328d) SHA1(fd02c65fecada69a0953372a39e520a80c744109) ) + + ROM_REGION( 0x18000, "gfx1", 0 ) + ROM_LOAD( "u64", 0x00000, 0x8000, CRC(2e593152) SHA1(ca0f587b26ed6e962e100d9178b6f79995a26fec) ) + ROM_LOAD( "u67", 0x08000, 0x8000, CRC(aa865924) SHA1(574c4ba06e0bb37624ebd0fd7f5bfa4d0be62eba) ) + ROM_LOAD( "u68", 0x10000, 0x8000, CRC(3043a99c) SHA1(cf936a866cc90b1cb477914e484e1d21165d6526) ) + + ROM_REGION( 0x10000, "gfx2", 0 ) /* ??? */ + ROM_LOAD( "u56", 0x0000, 0x4000, CRC(e1ea0658) SHA1(1f31c493556f6ff6564be439040914a18a56ea64) ) + ROM_LOAD( "u58", 0x4000, 0x4000, CRC(aa5ae1a5) SHA1(f4a9b3d97ac4df81fc071962698eab4b63e2e608) ) + ROM_LOAD( "u60", 0x8000, 0x4000, CRC(ba6cc02d) SHA1(80f06761eeb08b3852041f7a1773059c69420c44) ) + ROM_LOAD( "u62", 0xc000, 0x4000, CRC(609a6300) SHA1(ec8301c603a2af2aeecbef83d5cfba1796209988) ) + + ROM_REGION( 0x10000, "user1", 0 ) + ROM_FILL( 0x0000, 0x10000, 0xff ) // (girl bitmaps, not present) + + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "82s129.u45", 0x000, 0x100, CRC(0489b760) SHA1(78f8632b17a76335183c5c204cdec856988368b0) ) + ROM_LOAD( "82s129.u46", 0x100, 0x100, CRC(21eb5b19) SHA1(9b8425bdb97f11f4855c998c7792c3291fd07470) ) +ROM_END ROM_START( chryangl ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -14294,6 +14335,9 @@ ROM_START( bonusch ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "10.1u", 0x00000, 0x10000, CRC(5098eba6) SHA1(40a33a25d3589dfe7e228f1874239fbfbc5250e4) ) + ROM_REGION( 0x1000, "mcu", 0 ) + ROM_LOAD( "0.5p", 0x0000, 0x1000, NO_DUMP ) + ROM_REGION( 0x20000, "gfx1", 0 ) ROM_LOAD( "1.1c", 0x00000, 0x10000, CRC(33ce67c0) SHA1(8f3d7e78a4616bebafed2779b7f793d41576c9c8) ) ROM_LOAD( "2.1e", 0x10000, 0x10000, CRC(fc394767) SHA1(645bf0e60a7061771aa73bb4d10603eaaad17f20) ) @@ -15964,30 +16008,30 @@ DRIVER_INIT_MEMBER(wingco_state, flam7_tw) YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ GAMEL( 199?, goldstar, 0, goldstar, goldstar, goldstar_state, goldstar, ROT0, "IGS", "Golden Star", 0, layout_goldstar ) -GAMEL( 199?, goldstbl, goldstar, goldstbl, goldstar, driver_device, 0, ROT0, "IGS", "Golden Star (Blue version)", 0, layout_goldstar ) -GAME( 199?, moonlght, goldstar, moonlght, goldstar, driver_device, 0, ROT0, "bootleg", "Moon Light (v.0629, low program)", 0 ) -GAME( 199?, moonlghta, goldstar, moonlght, goldstar, driver_device, 0, ROT0, "bootleg", "Moon Light (v.0629, high program)", 0 ) -GAME( 199?, moonlghtb, goldstar, moonlght, goldstar, driver_device, 0, ROT0, "bootleg", "Moon Light (v.02L0A, low program)", MACHINE_IMPERFECT_COLORS ) // need to check the odd palette value at 0xc780. should be black. -GAME( 199?, moonlghtc, goldstar, moonlght, goldstar, driver_device, 0, ROT0, "bootleg", "Moon Light (v.02L0A, high program, alt gfx)", MACHINE_IMPERFECT_COLORS ) // need to check the odd palette value at 0xc780. should be black. +GAMEL( 199?, goldstbl, goldstar, goldstbl, goldstar, goldstar_state, 0, ROT0, "IGS", "Golden Star (Blue version)", 0, layout_goldstar ) +GAME( 199?, moonlght, goldstar, moonlght, goldstar, goldstar_state, 0, ROT0, "bootleg", "Moon Light (v.0629, low program)", 0 ) +GAME( 199?, moonlghta, goldstar, moonlght, goldstar, goldstar_state, 0, ROT0, "bootleg", "Moon Light (v.0629, high program)", 0 ) +GAME( 199?, moonlghtb, goldstar, moonlght, goldstar, goldstar_state, 0, ROT0, "bootleg", "Moon Light (v.02L0A, low program)", MACHINE_IMPERFECT_COLORS ) // need to check the odd palette value at 0xc780. should be black. +GAME( 199?, moonlghtc, goldstar, moonlght, goldstar, goldstar_state, 0, ROT0, "bootleg", "Moon Light (v.02L0A, high program, alt gfx)", MACHINE_IMPERFECT_COLORS ) // need to check the odd palette value at 0xc780. should be black. GAMEL( 199?, chrygld, 0, chrygld, chrygld, cb3_state, chrygld, ROT0, "bootleg", "Cherry Gold I (set 1)", 0, layout_chrygld ) GAMEL( 199?, chry10, 0, chrygld, chry10, cb3_state, chry10, ROT0, "bootleg", "Cherry 10 (bootleg with PIC16F84)", 0, layout_chrygld ) -GAME( 199?, goldfrui, goldstar, goldfrui, goldstar, driver_device, 0, ROT0, "bootleg", "Gold Fruit", 0 ) // maybe fullname should be 'Gold Fruit (main 40%)' +GAME( 199?, goldfrui, goldstar, goldfrui, goldstar, goldstar_state, 0, ROT0, "bootleg", "Gold Fruit", 0 ) // maybe fullname should be 'Gold Fruit (main 40%)' GAME( 2001, super9, goldstar, super9, goldstar, goldstar_state, super9, ROT0, "Playmark", "Super Nove (Playmark)", MACHINE_NOT_WORKING ) // need to decode gfx and see the program loops/reset... GAME( 2001, wcherry, 0, wcherry, chrygld, goldstar_state, wcherry, ROT0, "bootleg", "Win Cherry (ver 0.16 - 19990219)", MACHINE_NOT_WORKING ) -GAME( 199?, star100, 0, star100, star100, driver_device, 0, ROT0, "Sang Ho", "Ming Xing 100 (Star 100)", MACHINE_IMPERFECT_COLORS ) +GAME( 199?, star100, 0, star100, star100, sanghopm_state, 0, ROT0, "Sang Ho", "Ming Xing 100 (Star 100)", MACHINE_IMPERFECT_COLORS ) // are these really dyna, or bootlegs? -GAMEL( 199?, ncb3, 0, ncb3, ncb3, driver_device, 0, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, set 1)", 0, layout_cherryb3 ) -GAMEL( 199?, cb3a, ncb3, ncb3, cb3a, driver_device, 0, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, set 2)", 0, layout_cherryb3 ) +GAMEL( 199?, ncb3, 0, ncb3, ncb3, cb3_state, 0, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, set 1)", 0, layout_cherryb3 ) +GAMEL( 199?, cb3a, ncb3, ncb3, cb3a, cb3_state, 0, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, set 2)", 0, layout_cherryb3 ) GAMEL( 199?, cb3, ncb3, ncb3, ncb3, cb3_state, cb3, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, encrypted)", 0, layout_cherryb3 ) GAMEL( 199?, cb3b, ncb3, cherrys, ncb3, cb3_state, cherrys, ROT0, "Dyna", "Cherry Bonus III (alt)", 0, layout_cherryb3 ) GAME( 199?, cb3c, ncb3, cb3c, chrygld, cb3_state, cb3, ROT0, "bootleg", "Cherry Bonus III (alt, set 2)", MACHINE_NOT_WORKING) -GAMEL( 199?, cb3d, ncb3, ncb3, ncb3, driver_device, 0, ROT0, "bootleg", "Cherry Bonus III (set 3)", 0, layout_cherryb3 ) +GAMEL( 199?, cb3d, ncb3, ncb3, ncb3, cb3_state, 0, ROT0, "bootleg", "Cherry Bonus III (set 3)", 0, layout_cherryb3 ) GAMEL( 199?, cb3e, ncb3, cb3e, chrygld, cb3_state, cb3e, ROT0, "bootleg", "Cherry Bonus III (set 4, encrypted bootleg)", 0, layout_chrygld ) GAMEL( 199?, chryglda, ncb3, cb3e, chrygld, cb3_state, cb3e, ROT0, "bootleg", "Cherry Gold I (set 2, encrypted bootleg)", 0, layout_chrygld ) // Runs in CB3e hardware. -GAME( 1996, cmast97, ncb3, cm97, chrygld, driver_device, 0, ROT0, "Dyna", "Cherry Master '97", MACHINE_NOT_WORKING) // fix prom decode +GAME( 1996, cmast97, ncb3, cm97, chrygld, cb3_state, 0, ROT0, "Dyna", "Cherry Master '97", MACHINE_NOT_WORKING) // fix prom decode // looks like a hack of Cherry Bonus 3 GAME( 199?, chryangl, ncb3, cm, chryangl, cmaster_state, cmv4, ROT0, "", "Cherry Angel", MACHINE_NOT_WORKING ) @@ -16005,7 +16049,7 @@ GAMEL( 1992, cmv4, 0, cm, cmv4, cmaster_state, cmv4, GAMEL( 1992, cmv4a, cmv4, cm, cmv4, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master (ver.4, set 2)", MACHINE_NOT_WORKING, layout_cmv4 ) // stealth game? GAMEL( 199?, cmwm, cmv4, cm, cmv4, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master (Watermelon bootleg / hack)", 0, layout_cmv4 ) // CM Fruit Bonus ver.2 T bootleg/hack GAMEL( 1995, cmfun, cmv4, cm, cmv4, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master (Fun USA v2.5 bootleg / hack)", 0, layout_cmv4 ) -GAMEL( 1991, cmaster, 0, cm, cmaster, driver_device, 0, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 1)", 0, layout_cmaster ) +GAMEL( 1991, cmaster, 0, cm, cmaster, cmaster_state, 0, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 1)", 0, layout_cmaster ) GAMEL( 1991, cmasterb, cmaster, cm, cmasterb, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 2)", 0, layout_cmasterb ) GAMEL( 1991, cmezspin, cmaster, cm, cmezspin, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (E-Z Spin bootleg / hack)", 0, layout_cmezspin ) // CM Fruit Bonus 55 ver.2 bootleg/hack GAMEL( 1991, cmasterc, cmaster, cmasterc, cmasterc, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 3)", 0, layout_cmasterc ) @@ -16018,45 +16062,46 @@ GAMEL( 1991, cmasterh, cmaster, cm, cmasterb, cmaster_state, cmv4, GAMEL( 1991, tonypok, 0, cm, tonypok, cmaster_state, tonypok, ROT0, "Corsica", "Poker Master (Tony-Poker V3.A, hack?)", 0 , layout_tonypok ) -GAME( 199?, jkrmast, 0, pkrmast, pkrmast, driver_device, 0, ROT0, "", "Joker Master", MACHINE_NOT_WORKING ) // encrypted? -GAME( 199?, pkrmast, jkrmast, pkrmast, pkrmast, driver_device, 0, ROT0, "", "Poker Master (ED-1993 set 1)", MACHINE_NOT_WORKING ) // incomplete dump + encrypted? -GAME( 1993, pkrmasta, jkrmast, pkrmast, pkrmast, driver_device, 0, ROT0, "", "Poker Master (ED-1993 set 2)", MACHINE_NOT_WORKING ) // incomplete dump + encrypted? +GAME( 199?, jkrmast, 0, pkrmast, pkrmast, goldstar_state, 0, ROT0, "", "Joker Master", MACHINE_NOT_WORKING ) // encrypted? +GAME( 199?, pkrmast, jkrmast, pkrmast, pkrmast, goldstar_state, 0, ROT0, "", "Poker Master (ED-1993 set 1)", MACHINE_NOT_WORKING ) // incomplete dump + encrypted? +GAME( 1993, pkrmasta, jkrmast, pkrmast, pkrmast, goldstar_state, 0, ROT0, "", "Poker Master (ED-1993 set 2)", MACHINE_NOT_WORKING ) // incomplete dump + encrypted? GAME( 1991, cmast91, 0, cmast91, cmast91, goldstar_state, cmast91, ROT0, "Dyna", "Cherry Master '91 (ver.1.30)", 0 ) GAME( 1992, cmast92, 0, cmast91, cmast91, goldstar_state, cmast91, ROT0, "Dyna", "Cherry Master '92", MACHINE_NOT_WORKING ) // no gfx roms are dumped GAME( 1999, cmast99, 0, cm, cmast99, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master '99 (V9B.00)", MACHINE_NOT_WORKING ) GAME( 1999, cmast99b, cmast99, cm, cmast99, cmaster_state, cmv4, ROT0, "bootleg", "Cherry Master '99 (V9B.00 bootleg / hack)", MACHINE_NOT_WORKING ) +GAME( 1993, aplan, 0, cm, cmast99, cmaster_state, cmv4, ROT0, "WeaShing H.K.", "A-Plan", MACHINE_NOT_WORKING ) // --- Wing W-4 hardware --- -GAMEL( 1989, lucky8, 0, lucky8, lucky8, driver_device, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 1, W-4)", 0, layout_lucky8 ) // 2 control sets... +GAMEL( 1989, lucky8, 0, lucky8, lucky8, wingco_state, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 1, W-4)", 0, layout_lucky8 ) // 2 control sets... GAMEL( 1989, lucky8a, lucky8, lucky8, lucky8a, wingco_state, lucky8a, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 2, W-4)", 0, layout_lucky8 ) // 2 control sets... -GAMEL( 1989, lucky8b, lucky8, lucky8, lucky8b, driver_device, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 3, W-4, extended gfx)", 0, layout_lucky8p1 ) // only 1 control set... +GAMEL( 1989, lucky8b, lucky8, lucky8, lucky8b, wingco_state, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 3, W-4, extended gfx)", 0, layout_lucky8p1 ) // only 1 control set... GAMEL( 1989, lucky8c, lucky8, lucky8, lucky8, wingco_state, lucky8a, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 4, W-4)", 0, layout_lucky8 ) // 2 control sets... -GAMEL( 1989, lucky8d, lucky8, lucky8, lucky8d, driver_device, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 5, W-4, main 40%, d-up 60%)", 0, layout_lucky8 ) // 2 control sets... -GAMEL( 1989, lucky8e, lucky8, lucky8, lucky8d, driver_device, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 6, W-4, main 40%, d-up 60%)", 0, layout_lucky8 ) // 2 control sets... -GAMEL( 198?, ns8lines, 0, lucky8, lucky8b, driver_device, 0, ROT0, "", "New Lucky 8 Lines / New Super 8 Lines (W-4)", 0, layout_lucky8p1 ) // only 1 control set... -GAMEL( 1985, ns8linesa, ns8lines, lucky8, lucky8b, driver_device, 0, ROT0, "Yamate (bootleg)", "New Lucky 8 Lines / New Super 8 Lines (W-4, Lucky97 HW)", 0, layout_lucky8p1 ) // only 1 control set... -GAMEL( 198?, ns8linew, ns8lines, lucky8, ns8linew, driver_device, 0, ROT0, "", "New Lucky 8 Lines / New Super 8 Lines (F-5, Witch Bonus)", 0, layout_lucky8 ) // 2 control sets... -GAMEL( 198?, ns8linewa, ns8lines, lucky8, ns8linwa, driver_device, 0, ROT0, "", "New Lucky 8 Lines / New Super 8 Lines (W-4, Witch Bonus)", 0, layout_lucky8p1 ) // only 1 control set... -GAME( 198?, luckybar, 0, lucky8, ns8linew, driver_device, 0, ROT0, "", "Lucky Bar (W-4 with mc68705 MCU)", MACHINE_NOT_WORKING ) // MC68705 MCU -GAME( 198?, chryangla, ncb3, lucky8, ns8linew, driver_device, 0, ROT0, "", "Cherry Angel (encrypted, W-4 hardware)", MACHINE_NOT_WORKING ) -GAMEL( 198?, kkotnoli, 0, kkotnoli, kkotnoli, driver_device, 0, ROT0, "hack", "Kkot No Li (Kill the Bees)", MACHINE_IMPERFECT_COLORS, layout_lucky8 ) -GAME( 198?, ladylinr, 0, ladylinr, ladylinr, driver_device, 0, ROT0, "TAB Austria", "Lady Liner", 0 ) -GAME( 198?, wcat3, 0, wcat3, lucky8, driver_device, 0, ROT0, "E.A.I.", "Wild Cat 3", MACHINE_NOT_WORKING ) +GAMEL( 1989, lucky8d, lucky8, lucky8, lucky8d, wingco_state, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 5, W-4, main 40%, d-up 60%)", 0, layout_lucky8 ) // 2 control sets... +GAMEL( 1989, lucky8e, lucky8, lucky8, lucky8d, wingco_state, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 6, W-4, main 40%, d-up 60%)", 0, layout_lucky8 ) // 2 control sets... +GAMEL( 198?, ns8lines, 0, lucky8, lucky8b, wingco_state, 0, ROT0, "", "New Lucky 8 Lines / New Super 8 Lines (W-4)", 0, layout_lucky8p1 ) // only 1 control set... +GAMEL( 1985, ns8linesa, ns8lines, lucky8, lucky8b, wingco_state, 0, ROT0, "Yamate (bootleg)", "New Lucky 8 Lines / New Super 8 Lines (W-4, Lucky97 HW)", 0, layout_lucky8p1 ) // only 1 control set... +GAMEL( 198?, ns8linew, ns8lines, lucky8, ns8linew, wingco_state, 0, ROT0, "", "New Lucky 8 Lines / New Super 8 Lines (F-5, Witch Bonus)", 0, layout_lucky8 ) // 2 control sets... +GAMEL( 198?, ns8linewa, ns8lines, lucky8, ns8linwa, wingco_state, 0, ROT0, "", "New Lucky 8 Lines / New Super 8 Lines (W-4, Witch Bonus)", 0, layout_lucky8p1 ) // only 1 control set... +GAME( 198?, luckybar, 0, lucky8, ns8linew, wingco_state, 0, ROT0, "", "Lucky Bar (W-4 with mc68705 MCU)", MACHINE_NOT_WORKING ) // MC68705 MCU +GAME( 198?, chryangla, ncb3, lucky8, ns8linew, wingco_state, 0, ROT0, "", "Cherry Angel (encrypted, W-4 hardware)", MACHINE_NOT_WORKING ) +GAMEL( 198?, kkotnoli, 0, kkotnoli, kkotnoli, goldstar_state, 0, ROT0, "hack", "Kkot No Li (Kill the Bees)", MACHINE_IMPERFECT_COLORS, layout_lucky8 ) +GAME( 198?, ladylinr, 0, ladylinr, ladylinr, goldstar_state, 0, ROT0, "TAB Austria", "Lady Liner", 0 ) +GAME( 198?, wcat3, 0, wcat3, lucky8, wingco_state, 0, ROT0, "E.A.I.", "Wild Cat 3", MACHINE_NOT_WORKING ) -GAME( 1985, luckylad, 0, lucky8, luckylad, driver_device, 0, ROT0, "Wing Co., Ltd.", "Lucky Lady (Wing, encrypted)", MACHINE_NOT_WORKING ) // encrypted (see notes in rom_load)... -GAME( 1991, megaline, 0, megaline, megaline, driver_device, 0, ROT0, "Fun World", "Mega Lines", MACHINE_NOT_WORKING ) +GAME( 1985, luckylad, 0, lucky8, luckylad, wingco_state, 0, ROT0, "Wing Co., Ltd.", "Lucky Lady (Wing, encrypted)", MACHINE_NOT_WORKING ) // encrypted (see notes in rom_load)... +GAME( 1991, megaline, 0, megaline, megaline, unkch_state, 0, ROT0, "Fun World", "Mega Lines", MACHINE_NOT_WORKING ) -GAMEL( 1993, bingowng, 0, bingowng, bingowng, driver_device, 0, ROT0, "Wing Co., Ltd.", "Bingo (set 1)", 0, layout_bingowng ) -GAMEL( 1993, bingownga, bingowng, bingownga,bingownga,driver_device, 0, ROT0, "Wing Co., Ltd.", "Bingo (set 2)", 0, layout_bingowng ) +GAMEL( 1993, bingowng, 0, bingowng, bingowng, wingco_state, 0, ROT0, "Wing Co., Ltd.", "Bingo (set 1)", 0, layout_bingowng ) +GAMEL( 1993, bingownga, bingowng, bingownga,bingownga,wingco_state, 0, ROT0, "Wing Co., Ltd.", "Bingo (set 2)", 0, layout_bingowng ) -GAME( 2002, mbs2euro, 0, mbstar, mbstar, driver_device, 0, ROT0, "Auto-Data Graz", "Mega Bonus Star II (Euro, Millennium Edition)", MACHINE_NOT_WORKING ) // need more work in memory map, inputs, and reels alignment. +GAME( 2002, mbs2euro, 0, mbstar, mbstar, wingco_state, 0, ROT0, "Auto-Data Graz", "Mega Bonus Star II (Euro, Millennium Edition)", MACHINE_NOT_WORKING ) // need more work in memory map, inputs, and reels alignment. // --- Flaming 7's hardware (W-4 derivative) --- -GAME( 199?, fl7_3121, 0, flam7_w4, flam7_w4, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (W4 Hardware, Red, White & Blue 7's + Hollywood Nights)", 0 ) +GAME( 199?, fl7_3121, 0, flam7_w4, flam7_w4, wingco_state, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (W4 Hardware, Red, White & Blue 7's + Hollywood Nights)", 0 ) GAME( 199?, fl7_50, 0, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 50 Bonus)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS ) GAME( 199?, fl7_500, fl7_50, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 500 Bonus)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS ) GAME( 199?, fl7_2000, fl7_50, flaming7, flaming7, wingco_state, flaming7, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 2000 Bonus)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS ) @@ -16065,13 +16110,13 @@ GAME( 199?, fl7_tw, fl7_50, flam7_tw, flaming7, wingco_state, flam7_tw, // --- Wing W-8 hardware --- -GAME( 1990, bonusch, 0, bonusch, bonusch, driver_device, 0, ROT0, "Wing Co., Ltd.", "Bonus Chance (W-8)", MACHINE_NOT_WORKING ) // M80C51F MCU +GAME( 1990, bonusch, 0, bonusch, bonusch, unkch_state, 0, ROT0, "Wing Co., Ltd.", "Bonus Chance (W-8)", MACHINE_NOT_WORKING ) // M80C51F MCU // --- Magical Odds hardware --- -GAME( 1992, magodds, 0, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 1)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, magoddsa, magodds, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 2)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, magoddsb, magodds, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 3)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, magodds, 0, magodds, magodds, wingco_state, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 1)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, magoddsa, magodds, magodds, magodds, wingco_state, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 2)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, magoddsb, magodds, magodds, magodds, wingco_state, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 3)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1991, magoddsc, magodds, magodds, magoddsc, wingco_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 4, custom encrypted CPU block)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING |MACHINE_NO_SOUND) GAME( 1991, magoddsd, magodds, magodds, magoddsc, wingco_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 5, custom encrypted CPU block)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING |MACHINE_NO_SOUND) @@ -16114,13 +16159,13 @@ GAME( 1996, roypok96c, roypok96, amcoe2, roypok96a, cmaster_state, rp96sub, some sets are messy and appear to have mismatched graphic roms, they need to be sorted out properly */ /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1996, nfb96se, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 1, v97-3.3c Portuguese)", 0 ) +GAME( 1996, nfb96se, nfb96, amcoe2, nfb96bl, cmaster_state, 0, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 1, v97-3.3c Portuguese)", 0 ) GAME( 1996, nfb96sea, nfb96, amcoe2, nfb96bl, cmaster_state, nfb96sea, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 2, v97-3.3c English)", MACHINE_WRONG_COLORS ) // encrypted program -GAME( 1996, nfb96seb, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 3, v97-3.3c Portuguese)", MACHINE_WRONG_COLORS ) -GAME( 2002, carb2002, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "Carriage Bonus 2002 (bootleg)", MACHINE_WRONG_COLORS ) -GAME( 2003, carb2003, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "Carriage Bonus 2003 (bootleg)", MACHINE_WRONG_COLORS ) +GAME( 1996, nfb96seb, nfb96, amcoe2, nfb96bl, cmaster_state, 0, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 3, v97-3.3c Portuguese)", MACHINE_WRONG_COLORS ) +GAME( 2002, carb2002, nfb96, amcoe2, nfb96bl, cmaster_state, 0, ROT0, "bootleg", "Carriage Bonus 2002 (bootleg)", MACHINE_WRONG_COLORS ) +GAME( 2003, carb2003, nfb96, amcoe2, nfb96bl, cmaster_state, 0, ROT0, "bootleg", "Carriage Bonus 2003 (bootleg)", MACHINE_WRONG_COLORS ) -GAME( 2003, nfm, 0, nfm, nfm, driver_device, 0, ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", MACHINE_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06" +GAME( 2003, nfm, 0, nfm, nfm, cmaster_state, 0, ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", MACHINE_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06" // super cherry master sets... @@ -16144,7 +16189,7 @@ GAMEL( 198?, cmpacmana, cmpacman, cm, cmpacman, cmaster_state, cm, R GAMEL( 198?, cmtetris, 0, cm, cmtetris, cmaster_state, cm, ROT0, "", "Tetris + Cherry Master (Corsica, v8.01, set 1)", 0, layout_cmpacman ) // need to press K/L to switch between games... GAMEL( 198?, cmtetrsa, 0, cm, cmtetris, cmaster_state, cm, ROT0, "", "Tetris + Cherry Master (Corsica, v8.01, set 2)", MACHINE_NOT_WORKING, layout_cmpacman ) // seems banked... GAMEL( 198?, cmtetrsb, 0, cm, cmtetris, cmaster_state, cm, ROT0, "", "Tetris + Cherry Master (+K, Canada Version, encrypted)", MACHINE_NOT_WORKING, layout_cmpacman ) // different Tetris game. press insert to throttle and see the attract running. -GAMEL( 1997, crazybon, 0, pkrmast, crazybon, driver_device, 0, ROT0, "bootleg (Crazy Co.)", "Crazy Bonus 2002", MACHINE_IMPERFECT_COLORS, layout_crazybon ) // Windows ME desktop... but not found the way to switch it. +GAMEL( 1997, crazybon, 0, pkrmast, crazybon, goldstar_state, 0, ROT0, "bootleg (Crazy Co.)", "Crazy Bonus 2002", MACHINE_IMPERFECT_COLORS, layout_crazybon ) // Windows ME desktop... but not found the way to switch it. /* other possible stealth sets: - cmv4a ---> see the 1fxx zone. put a bp in 1f9f to see the loop. diff --git a/src/mame/drivers/gomoku.cpp b/src/mame/drivers/gomoku.cpp index 32d2412485e..492e70594d0 100644 --- a/src/mame/drivers/gomoku.cpp +++ b/src/mame/drivers/gomoku.cpp @@ -25,6 +25,7 @@ todo: #include "emu.h" #include "includes/gomoku.h" +#include "audio/gomoku.h" #include "cpu/z80/z80.h" #include "speaker.h" @@ -122,7 +123,7 @@ static GFXDECODE_START( gomoku ) GFXDECODE_END -static MACHINE_CONFIG_START( gomoku, gomoku_state ) +static MACHINE_CONFIG_START( gomoku ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/12) /* 1.536 MHz ? */ MCFG_CPU_PROGRAM_MAP(gomoku_map) @@ -181,5 +182,5 @@ ROM_START( gomoku ) ROM_END -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME -GAME( 1981, gomoku, 0, gomoku, gomoku, driver_device, 0, ROT90, "Nichibutsu", "Gomoku Narabe Renju", 0 ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE INIT, MONITOR, COMPANY, FULLNAME, FLAGS +GAME( 1981, gomoku, 0, gomoku, gomoku, gomoku_state, 0, ROT90, "Nichibutsu", "Gomoku Narabe Renju", 0 ) diff --git a/src/mame/drivers/good.cpp b/src/mame/drivers/good.cpp index 3000fa23278..f5043b2005a 100644 --- a/src/mame/drivers/good.cpp +++ b/src/mame/drivers/good.cpp @@ -47,7 +47,9 @@ public: m_fg_tilemapram(*this, "fg_tilemapram"), m_bg_tilemapram(*this, "bg_tilemapram"), m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode") { } + m_gfxdecode(*this, "gfxdecode") + { + } /* memory pointers */ required_shared_ptr m_fg_tilemapram; @@ -282,7 +284,7 @@ static GFXDECODE_START( good ) GFXDECODE_END -static MACHINE_CONFIG_START( good, good_state ) +static MACHINE_CONFIG_START( good ) MCFG_CPU_ADD("maincpu", M68000, 16000000 /2) MCFG_CPU_PROGRAM_MAP(good_map) @@ -304,7 +306,7 @@ static MACHINE_CONFIG_START( good, good_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) MACHINE_CONFIG_END @@ -325,4 +327,4 @@ ROM_START( good ) ROM_LOAD16_BYTE( "grp-04", 0x40001, 0x20000, CRC(83dbbb52) SHA1(e597f3cbb54b5cdf2230ea6318f970319061e31b) ) ROM_END -GAME( 1998, good, 0, good, good, driver_device, 0, ROT0, "", "Good (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, good, 0, good, good, good_state, 0, ROT0, "", "Good (Korea)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/goodejan.cpp b/src/mame/drivers/goodejan.cpp index a05a7f8bad8..7f1567c554d 100644 --- a/src/mame/drivers/goodejan.cpp +++ b/src/mame/drivers/goodejan.cpp @@ -630,7 +630,7 @@ WRITE16_MEMBER( goodejan_state::layer_scroll_w ) -static MACHINE_CONFIG_START( goodejan, goodejan_state ) +static MACHINE_CONFIG_START( goodejan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, GOODEJAN_MHZ2/2) @@ -665,7 +665,7 @@ static MACHINE_CONFIG_START( goodejan, goodejan_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", GOODEJAN_MHZ2/16, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", GOODEJAN_MHZ2/16, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -708,7 +708,7 @@ ROM_START( totmejan ) ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "e-jan.0911", 0x00000, 0x80000, CRC(a7fb93c2) SHA1(c2e1300f142032c087c96e1a785af28a6d678947) ) - ROM_REGION( 0x200, "user1", 0 ) /* not used */ + ROM_REGION( 0x100, "proms", 0 ) /* not used */ ROM_LOAD( "fmj08.083", 0x000, 0x100, CRC(9657b7ad) SHA1(e9b469c2b3534593f7fe0ea19cbbf93b55957e42) ) ROM_END @@ -740,7 +740,7 @@ ROM_START( goodejan ) ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "e-jan.911", 0x00000, 0x80000, CRC(6d2cbc35) SHA1(61f47e2a94b8877906224f46d8301a26a0b9e55f) ) - ROM_REGION( 0x200, "user1", 0 ) /* not used */ + ROM_REGION( 0x100, "proms", 0 ) /* not used */ ROM_LOAD( "fmj08.083", 0x000, 0x100, CRC(9657b7ad) SHA1(e9b469c2b3534593f7fe0ea19cbbf93b55957e42) ) ROM_END @@ -772,10 +772,10 @@ ROM_START( goodejana ) ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "e-jan.911", 0x00000, 0x80000, CRC(6d2cbc35) SHA1(61f47e2a94b8877906224f46d8301a26a0b9e55f) ) - ROM_REGION( 0x200, "user1", 0 ) /* not used */ + ROM_REGION( 0x100, "proms", 0 ) /* not used */ ROM_LOAD( "fmj08.083", 0x000, 0x100, CRC(9657b7ad) SHA1(e9b469c2b3534593f7fe0ea19cbbf93b55957e42) ) ROM_END -GAME( 1991, totmejan, 0, totmejan, goodejan, driver_device, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Tottemo E Jong", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, goodejan, 0, goodejan, goodejan, driver_device, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, goodejana,goodejan, goodejan, goodejan, driver_device, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, totmejan, 0, totmejan, goodejan, goodejan_state, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Tottemo E Jong", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, goodejan, 0, goodejan, goodejan, goodejan_state, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, goodejana,goodejan, goodejan, goodejan, goodejan_state, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gotcha.cpp b/src/mame/drivers/gotcha.cpp index e8c78beb988..ba423131407 100644 --- a/src/mame/drivers/gotcha.cpp +++ b/src/mame/drivers/gotcha.cpp @@ -262,7 +262,7 @@ void gotcha_state::machine_reset() m_banksel = 0; } -static MACHINE_CONFIG_START( gotcha, gotcha_state ) +static MACHINE_CONFIG_START( gotcha ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,14318180) /* 14.31818 MHz */ @@ -304,7 +304,7 @@ static MACHINE_CONFIG_START( gotcha, gotcha_state ) MCFG_SOUND_ROUTE(0, "mono", 0.80) MCFG_SOUND_ROUTE(1, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END @@ -388,5 +388,5 @@ ROM_START( ppchamp ) ROM_LOAD( "uz11", 0x00000, 0x80000, CRC(3d96274c) SHA1(c7a670af86194c370bf8fb30afbe027ab78a0227) ) ROM_END -GAMEL( 1997, gotcha, 0, gotcha, gotcha, driver_device, 0, ROT0, "Dongsung / Para", "Got-cha Mini Game Festival", MACHINE_SUPPORTS_SAVE, layout_gotcha ) -GAMEL( 1997, ppchamp, gotcha, gotcha, gotcha, driver_device, 0, ROT0, "Dongsung / Para", "Pasha Pasha Champ Mini Game Festival (Korea)", MACHINE_SUPPORTS_SAVE, layout_gotcha ) +GAMEL( 1997, gotcha, 0, gotcha, gotcha, gotcha_state, 0, ROT0, "Dongsung / Para", "Got-cha Mini Game Festival", MACHINE_SUPPORTS_SAVE, layout_gotcha ) +GAMEL( 1997, ppchamp, gotcha, gotcha, gotcha, gotcha_state, 0, ROT0, "Dongsung / Para", "Pasha Pasha Champ Mini Game Festival (Korea)", MACHINE_SUPPORTS_SAVE, layout_gotcha ) diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp index 038f4927883..01f8a174b66 100644 --- a/src/mame/drivers/gottlieb.cpp +++ b/src/mame/drivers/gottlieb.cpp @@ -1764,7 +1764,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( gottlieb_core, gottlieb_state ) +static MACHINE_CONFIG_START( gottlieb_core ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, CPU_CLOCK/3) @@ -1806,7 +1806,7 @@ static MACHINE_CONFIG_DERIVED( g2laser, gottlieb_core ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MCFG_LASERDISC_PR8210_ADD("laserdisc") - MCFG_LASERDISC_AUDIO(laserdisc_audio_delegate(&gottlieb_state::laserdisc_audio_process, (gottlieb_state*)owner)) + MCFG_LASERDISC_AUDIO(laserdisc_device::audio_delegate(&gottlieb_state::laserdisc_audio_process, downcast(owner))) MCFG_LASERDISC_OVERLAY_DRIVER(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb_state, screen_update_gottlieb) MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8) MCFG_LASERDISC_OVERLAY_PALETTE("palette") @@ -1827,7 +1827,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gottlieb1_votrax, gottlieb_core ) - MCFG_SOUND_ADD("r1sound", GOTTLIEB_SOUND_REV1_WITH_VOTRAX, 0) + MCFG_SOUND_ADD("r1sound", GOTTLIEB_SOUND_REV1_VOTRAX, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END @@ -1864,7 +1864,7 @@ static MACHINE_CONFIG_DERIVED( cobram3, gottlieb_core ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MCFG_LASERDISC_PR8210_ADD("laserdisc") - MCFG_LASERDISC_AUDIO(laserdisc_audio_delegate(&gottlieb_state::laserdisc_audio_process, (gottlieb_state*)owner)) + MCFG_LASERDISC_AUDIO(laserdisc_device::audio_delegate(&gottlieb_state::laserdisc_audio_process, downcast(owner))) MCFG_LASERDISC_OVERLAY_DRIVER(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, gottlieb_state, screen_update_gottlieb) MCFG_LASERDISC_OVERLAY_CLIP(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8) MCFG_LASERDISC_OVERLAY_PALETTE("palette") diff --git a/src/mame/drivers/gotya.cpp b/src/mame/drivers/gotya.cpp index ca07e25bac6..ebd89eab829 100644 --- a/src/mame/drivers/gotya.cpp +++ b/src/mame/drivers/gotya.cpp @@ -185,7 +185,7 @@ void gotya_state::machine_reset() m_theme_playing = 0; } -static MACHINE_CONFIG_START( gotya, gotya_state ) +static MACHINE_CONFIG_START( gotya ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,18432000/6) /* 3.072 MHz ??? */ @@ -279,5 +279,5 @@ ROM_START( gotya ) ROM_LOAD( "gb-07.bin", 0x7000, 0x1000, CRC(92a9f8bf) SHA1(9231cd86f24f1e6a585c3a919add50c1f8e42a4c) ) ROM_END -GAME( 1981, thehand, 0, gotya, gotya, driver_device, 0, ROT270, "T.I.C.", "The Hand", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, gotya, thehand, gotya, gotya, driver_device, 0, ROT270, "Game-A-Tron", "Got-Ya (12/24/1981, prototype?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, thehand, 0, gotya, gotya, gotya_state, 0, ROT270, "T.I.C.", "The Hand", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, gotya, thehand, gotya, gotya, gotya_state, 0, ROT270, "Game-A-Tron", "Got-Ya (12/24/1981, prototype?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/goupil.cpp b/src/mame/drivers/goupil.cpp index 645c9f9a913..c5a80b0eb3b 100644 --- a/src/mame/drivers/goupil.cpp +++ b/src/mame/drivers/goupil.cpp @@ -90,7 +90,7 @@ private: required_device m_via_video; required_device m_via_keyb; required_device m_via_modem; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; floppy_image_device *m_floppy; @@ -127,7 +127,7 @@ static ADDRESS_MAP_START(goupil_mem, AS_PROGRAM, 8, goupil_g1_state) AM_RANGE(0xE860,0xE86F) AM_DEVREADWRITE("m_via_modem", via6522_device, read, write) - AM_RANGE(0xe8f0,0xe8ff) AM_DEVREADWRITE("fd1791", fd1791_t, read, write) + AM_RANGE(0xe8f0,0xe8ff) AM_DEVREADWRITE("fd1791", fd1791_device, read, write) //AM_RANGE(0xf08a,0xf08a) AM_READWRITE( fdc_sel0_r, fdc_sel0_w ) //AM_RANGE(0xf08b,0xf08b) AM_READWRITE( fdc_sel1_r, fdc_sel1_w ) @@ -424,7 +424,7 @@ WRITE_LINE_MEMBER( goupil_g1_state::via_video_ca2_w ) old_state_ca2 = state; } -static MACHINE_CONFIG_START( goupil_g1, goupil_g1_state ) +static MACHINE_CONFIG_START( goupil_g1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6808, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(goupil_mem) @@ -507,5 +507,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, goupilg1, 0, 0, goupil_g1, goupil_g1,driver_device, 0, "SMT", "Goupil G1", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1979, goupilg1, 0, 0, goupil_g1, goupil_g1, goupil_g1_state, 0, "SMT", "Goupil G1", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/gp2x.cpp b/src/mame/drivers/gp2x.cpp index 3c1e9fabbcd..b2ad1c2d44f 100644 --- a/src/mame/drivers/gp2x.cpp +++ b/src/mame/drivers/gp2x.cpp @@ -356,7 +356,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( gp2x ) INPUT_PORTS_END -static MACHINE_CONFIG_START( gp2x, gp2x_state ) +static MACHINE_CONFIG_START( gp2x ) MCFG_CPU_ADD("maincpu", ARM9, 80000000) MCFG_CPU_PROGRAM_MAP(gp2x_map) @@ -392,4 +392,4 @@ ROM_START(gp2x) ROMX_LOAD( "gp2xyaffs.v4", 0x300000, 0x2dfed0, CRC(e77efc53) SHA1(21477ff77aacb84005bc465a03066d71031a6098), ROM_BIOS(3)) ROM_END -CONS(2005, gp2x, 0, 0, gp2x, gp2x, driver_device, 0, "Game Park Holdings", "GP2X", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +CONS(2005, gp2x, 0, 0, gp2x, gp2x, gp2x_state, 0, "Game Park Holdings", "GP2X", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) diff --git a/src/mame/drivers/gp32.cpp b/src/mame/drivers/gp32.cpp index abe3966d1d6..3f54ef58e9c 100644 --- a/src/mame/drivers/gp32.cpp +++ b/src/mame/drivers/gp32.cpp @@ -1682,7 +1682,7 @@ void gp32_state::machine_reset() s3c240x_machine_reset(); } -static MACHINE_CONFIG_START( gp32, gp32_state ) +static MACHINE_CONFIG_START( gp32 ) MCFG_CPU_ADD("maincpu", ARM9, 40000000) MCFG_CPU_PROGRAM_MAP(gp32_map) @@ -1730,4 +1730,4 @@ ROM_START( gp32 ) #endif ROM_END -CONS(2001, gp32, 0, 0, gp32, gp32, driver_device, 0, "Game Park Holdings", "GP32", ROT270|MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +CONS(2001, gp32, 0, 0, gp32, gp32, gp32_state, 0, "Game Park Holdings", "GP32", ROT270|MACHINE_NOT_WORKING|MACHINE_NO_SOUND) diff --git a/src/mame/drivers/gp_1.cpp b/src/mame/drivers/gp_1.cpp index d8f3a4f282f..80eeffe1a79 100644 --- a/src/mame/drivers/gp_1.cpp +++ b/src/mame/drivers/gp_1.cpp @@ -420,7 +420,7 @@ static const z80_daisy_config daisy_chain[] = { nullptr } }; -static MACHINE_CONFIG_START( gp_1, gp_1_state ) +static MACHINE_CONFIG_START( gp_1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2457600) MCFG_CPU_PROGRAM_MAP(gp_1_map) @@ -532,13 +532,13 @@ ROM_START(vegasgp) ROM_LOAD( "140b.13", 0x0800, 0x0800, CRC(cf26d67b) SHA1(05481e880e23a7bc1d1716b52ac1effc0db437f2)) ROM_END -GAME(1978, gp_110, 0, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Model 110", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING) -GAME(1978, blvelvet, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Black Velvet", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME(1978, camlight, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Camel Lights", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME(1978, foxylady, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Foxy Lady", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME(1978, real, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Real", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME(1978, rio, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Rio", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME(1978, chucklck, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Chuck-A-Luck", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME(1979, famlyfun, 0, gp_1s, gp_1, driver_device, 0, ROT0, "Game Plan", "Family Fun!", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME(1979, startrip, 0, gp_1s, gp_1, driver_device, 0, ROT0, "Game Plan", "Star Trip", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME(1979, vegasgp, 0, gp_1s, gp_1, driver_device, 0, ROT0, "Game Plan", "Vegas (Game Plan)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1978, gp_110, 0, gp_1, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Model 110", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING) +GAME(1978, blvelvet, gp_110, gp_1, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Black Velvet", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1978, camlight, gp_110, gp_1, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Camel Lights", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1978, foxylady, gp_110, gp_1, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Foxy Lady", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1978, real, gp_110, gp_1, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Real", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1978, rio, gp_110, gp_1, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Rio", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1978, chucklck, gp_110, gp_1, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Chuck-A-Luck", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1979, famlyfun, 0, gp_1s, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Family Fun!", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1979, startrip, 0, gp_1s, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Star Trip", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1979, vegasgp, 0, gp_1s, gp_1, gp_1_state, 0, ROT0, "Game Plan", "Vegas (Game Plan)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/gp_2.cpp b/src/mame/drivers/gp_2.cpp index 1636b36a47a..6f3012edc0f 100644 --- a/src/mame/drivers/gp_2.cpp +++ b/src/mame/drivers/gp_2.cpp @@ -570,7 +570,7 @@ static const z80_daisy_config daisy_chain[] = { nullptr } }; -static MACHINE_CONFIG_START( gp_2, gp_2_state ) +static MACHINE_CONFIG_START( gp_2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2457600) MCFG_CPU_PROGRAM_MAP(gp_2_map) @@ -808,24 +808,24 @@ ROM_START(suprnova) ROM_END // GP1 dips -GAME(1979, sshootep, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Sharpshooter", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1979, coneyis, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Old Coney Island!", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1980, lizard, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Pinball Lizard", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1982, suprnova, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Super Nova", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1983, sshootr2, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Sharp Shooter II", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1979, sshootep, 0, gp_2, gp_1, gp_2_state, 0, ROT0, "Game Plan", "Sharpshooter", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1979, coneyis, 0, gp_2, gp_1, gp_2_state, 0, ROT0, "Game Plan", "Old Coney Island!", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1980, lizard, 0, gp_2, gp_1, gp_2_state, 0, ROT0, "Game Plan", "Pinball Lizard", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1982, suprnova, 0, gp_2, gp_1, gp_2_state, 0, ROT0, "Game Plan", "Super Nova", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1983, sshootr2, 0, gp_2, gp_1, gp_2_state, 0, ROT0, "Game Plan", "Sharp Shooter II", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // GP2 dips -GAME(1981, gwarfare, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Global Warfare", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1982, mbossy, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Mike Bossy", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, attila, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Attila The Hun", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1981, gwarfare, 0, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Global Warfare", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1982, mbossy, 0, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Mike Bossy", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, attila, 0, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Attila The Hun", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // revolving match -GAME(1984, agent777, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Agents 777", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1985, cpthook, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Captain Hook", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1985, ladyshot, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1985, ladyshota, ladyshot, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1984, agent777, 0, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Agents 777", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1985, cpthook, 0, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Captain Hook", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1985, ladyshot, 0, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1985, ladyshota, ladyshot, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // credit (start) button not working -GAME(1985, andromep, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Andromeda (set 1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, andromepa, andromep, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Andromeda (set 2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, cyclopes, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Cyclopes", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, andromep, 0, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Andromeda (set 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, andromepa, andromep, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Andromeda (set 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, cyclopes, 0, gp_2, gp_2, gp_2_state, 0, ROT0, "Game Plan", "Cyclopes", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/gpworld.cpp b/src/mame/drivers/gpworld.cpp index 926c60d7625..9b8199f4432 100644 --- a/src/mame/drivers/gpworld.cpp +++ b/src/mame/drivers/gpworld.cpp @@ -70,6 +70,7 @@ public: uint8_t m_ldp_read_latch; uint8_t m_ldp_write_latch; uint8_t m_brake_gas; + emu_timer *m_irq_stop_timer; required_device m_laserdisc; required_shared_ptr m_sprite_ram; required_shared_ptr m_palette_ram; @@ -82,11 +83,11 @@ public: DECLARE_WRITE8_MEMBER(palette_write); DECLARE_DRIVER_INIT(gpworld); virtual void machine_start() override; - uint32_t screen_update_gpworld(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(vblank_callback_gpworld); - void gpworld_draw_tiles(bitmap_rgb32 &bitmap,const rectangle &cliprect); + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(vblank_callback); + void draw_tiles(bitmap_rgb32 &bitmap,const rectangle &cliprect); inline void draw_pixel(bitmap_rgb32 &bitmap,const rectangle &cliprect,int x,int y,int color,int flip); - void gpworld_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect); + void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect); required_device m_maincpu; required_device m_gfxdecode; required_device m_palette; @@ -104,7 +105,7 @@ protected: /* VIDEO GOODS */ -void gpworld_state::gpworld_draw_tiles(bitmap_rgb32 &bitmap,const rectangle &cliprect) +void gpworld_state::draw_tiles(bitmap_rgb32 &bitmap,const rectangle &cliprect) { uint8_t characterX, characterY; @@ -133,7 +134,7 @@ void gpworld_state::draw_pixel(bitmap_rgb32 &bitmap,const rectangle &cliprect,in bitmap.pix32(y, x) = m_palette->pen(color); } -void gpworld_state::gpworld_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect) +void gpworld_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect) { const int SPR_Y_TOP = 0; const int SPR_Y_BOTTOM = 1; @@ -243,12 +244,12 @@ void gpworld_state::gpworld_draw_sprites(bitmap_rgb32 &bitmap, const rectangle & } -uint32_t gpworld_state::screen_update_gpworld(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +uint32_t gpworld_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { bitmap.fill(0, cliprect); - gpworld_draw_tiles(bitmap, cliprect); - gpworld_draw_sprites(bitmap, cliprect); + draw_tiles(bitmap, cliprect); + draw_sprites(bitmap, cliprect); return 0; } @@ -256,6 +257,7 @@ uint32_t gpworld_state::screen_update_gpworld(screen_device &screen, bitmap_rgb3 void gpworld_state::machine_start() { + m_irq_stop_timer = timer_alloc(TIMER_IRQ_STOP); } @@ -455,7 +457,7 @@ void gpworld_state::device_timer(emu_timer &timer, device_timer_id id, int param } } -INTERRUPT_GEN_MEMBER(gpworld_state::vblank_callback_gpworld) +INTERRUPT_GEN_MEMBER(gpworld_state::vblank_callback) { /* Do an NMI if the enabled bit is set */ if (m_nmi_enable) @@ -467,7 +469,7 @@ INTERRUPT_GEN_MEMBER(gpworld_state::vblank_callback_gpworld) /* The time the IRQ line stays high is set just long enough to happen after the NMI - hacky? */ device.execute().set_input_line(0, ASSERT_LINE); - timer_set(attotime::from_usec(100), TIMER_IRQ_STOP); + m_irq_stop_timer->adjust(attotime::from_usec(100)); } static const gfx_layout gpworld_tile_layout = @@ -486,17 +488,17 @@ static GFXDECODE_START( gpworld ) GFXDECODE_END /* DRIVER */ -static MACHINE_CONFIG_START( gpworld, gpworld_state ) +static MACHINE_CONFIG_START( gpworld ) /* main cpu */ MCFG_CPU_ADD("maincpu", Z80, GUESSED_CLOCK) MCFG_CPU_PROGRAM_MAP(mainmem) MCFG_CPU_IO_MAP(mainport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", gpworld_state, vblank_callback_gpworld) + MCFG_CPU_VBLANK_INT_DRIVER("screen", gpworld_state, vblank_callback) MCFG_LASERDISC_LDV1000_ADD("laserdisc") - MCFG_LASERDISC_OVERLAY_DRIVER(512, 256, gpworld_state, screen_update_gpworld) + MCFG_LASERDISC_OVERLAY_DRIVER(512, 256, gpworld_state, screen_update) MCFG_LASERDISC_OVERLAY_PALETTE("palette") /* video hardware */ @@ -559,5 +561,5 @@ DRIVER_INIT_MEMBER(gpworld_state,gpworld) } -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS) */ +/* YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS) */ GAME( 1984, gpworld, 0, gpworld, gpworld, gpworld_state, gpworld, ROT0, "Sega", "GP World", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) diff --git a/src/mame/drivers/gradius3.cpp b/src/mame/drivers/gradius3.cpp index 7ee8624a245..f5861caaac8 100644 --- a/src/mame/drivers/gradius3.cpp +++ b/src/mame/drivers/gradius3.cpp @@ -274,7 +274,7 @@ void gradius3_state::machine_reset() } -static MACHINE_CONFIG_START( gradius3, gradius3_state ) +static MACHINE_CONFIG_START( gradius3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -509,7 +509,7 @@ ROM_END -GAME( 1989, gradius3, 0, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (World, program code R)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, gradius3j, gradius3, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (Japan, program code S)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, gradius3js, gradius3, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (Japan, program code S, split)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, gradius3a, gradius3, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (Asia)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, gradius3, 0, gradius3, gradius3, gradius3_state, 0, ROT0, "Konami", "Gradius III (World, program code R)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, gradius3j, gradius3, gradius3, gradius3, gradius3_state, 0, ROT0, "Konami", "Gradius III (Japan, program code S)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, gradius3js, gradius3, gradius3, gradius3, gradius3_state, 0, ROT0, "Konami", "Gradius III (Japan, program code S, split)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, gradius3a, gradius3, gradius3, gradius3, gradius3_state, 0, ROT0, "Konami", "Gradius III (Asia)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/grchamp.cpp b/src/mame/drivers/grchamp.cpp index 9a854405c87..70b2416ac8b 100644 --- a/src/mame/drivers/grchamp.cpp +++ b/src/mame/drivers/grchamp.cpp @@ -644,7 +644,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( grchamp, grchamp_state ) +static MACHINE_CONFIG_START( grchamp ) /* basic machine hardware */ /* CPU BOARD */ @@ -765,4 +765,4 @@ ROM_END * *************************************/ -GAMEL( 1981, grchamp, 0, grchamp, grchamp, driver_device, 0, ROT270, "Taito", "Grand Champion", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_grchamp ) +GAMEL( 1981, grchamp, 0, grchamp, grchamp, grchamp_state, 0, ROT270, "Taito", "Grand Champion", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_grchamp ) diff --git a/src/mame/drivers/grfd2301.cpp b/src/mame/drivers/grfd2301.cpp index c277766e1ea..09fcb7b1f2d 100644 --- a/src/mame/drivers/grfd2301.cpp +++ b/src/mame/drivers/grfd2301.cpp @@ -108,7 +108,7 @@ uint32_t grfd2301_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -static MACHINE_CONFIG_START( grfd2301, grfd2301_state ) +static MACHINE_CONFIG_START( grfd2301 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(grfd2301_mem) @@ -135,4 +135,4 @@ ROM_START( grfd2301 ) ROM_LOAD( "c10_char.bin", 0x0000, 0x2000, BAD_DUMP CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf)) ROM_END -COMP( 198?, grfd2301, 0, 0, grfd2301, grfd2301, driver_device, 0, "Genrad", "Futuredata 2301 Network Processor", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 198?, grfd2301, 0, 0, grfd2301, grfd2301, grfd2301_state, 0, "Genrad", "Futuredata 2301 Network Processor", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/gridlee.cpp b/src/mame/drivers/gridlee.cpp index 87f60fde51f..9e72dedd806 100644 --- a/src/mame/drivers/gridlee.cpp +++ b/src/mame/drivers/gridlee.cpp @@ -410,7 +410,7 @@ static const char *const sample_names[] = * *************************************/ -static MACHINE_CONFIG_START( gridlee, gridlee_state ) +static MACHINE_CONFIG_START( gridlee ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, GRIDLEE_CPU_CLOCK) @@ -478,4 +478,4 @@ ROM_END * *************************************/ -GAME( 1983, gridlee, 0, gridlee, gridlee, driver_device, 0, ROT0, "Videa", "Gridlee", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, gridlee, 0, gridlee, gridlee, gridlee_state, 0, ROT0, "Videa", "Gridlee", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/groundfx.cpp b/src/mame/drivers/groundfx.cpp index d97f23a7910..7f131bc59bc 100644 --- a/src/mame/drivers/groundfx.cpp +++ b/src/mame/drivers/groundfx.cpp @@ -105,7 +105,7 @@ CUSTOM_INPUT_MEMBER(groundfx_state::coin_word_r) return m_coin_word; } -WRITE32_MEMBER(groundfx_state::groundfx_input_w) +WRITE32_MEMBER(groundfx_state::input_w) { switch (offset) { @@ -135,16 +135,16 @@ WRITE32_MEMBER(groundfx_state::groundfx_input_w) } } -READ32_MEMBER(groundfx_state::groundfx_adc_r) +READ32_MEMBER(groundfx_state::adc_r) { return (ioport("AN0")->read() << 8) | ioport("AN1")->read(); } -WRITE32_MEMBER(groundfx_state::groundfx_adc_w) +WRITE32_MEMBER(groundfx_state::adc_w) { /* One interrupt per input port (4 per frame, though only 2 used). 1000 cycle delay is arbitrary */ - timer_set(downcast(&space.device())->cycles_to_attotime(1000), TIMER_GROUNDFX_INTERRUPT5); + m_interrupt5_timer->adjust(m_maincpu->cycles_to_attotime(1000)); } WRITE32_MEMBER(groundfx_state::rotate_control_w)/* only a guess that it's rotation */ @@ -189,8 +189,8 @@ static ADDRESS_MAP_START( groundfx_map, AS_PROGRAM, 32, groundfx_state ) AM_RANGE(0x400000, 0x400003) AM_WRITE(motor_control_w) /* gun vibration */ AM_RANGE(0x500000, 0x500003) AM_READ_PORT("BUTTONS") AM_RANGE(0x500004, 0x500007) AM_READ_PORT("SYSTEM") - AM_RANGE(0x500000, 0x500007) AM_WRITE(groundfx_input_w) /* eeprom etc. */ - AM_RANGE(0x600000, 0x600003) AM_READWRITE(groundfx_adc_r,groundfx_adc_w) + AM_RANGE(0x500000, 0x500007) AM_WRITE(input_w) /* eeprom etc. */ + AM_RANGE(0x600000, 0x600003) AM_READWRITE(adc_r, adc_w) AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("snd_shared") AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */ AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w) // debugging @@ -241,7 +241,7 @@ static INPUT_PORTS_START( groundfx ) PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, groundfx_state,coin_word_r, nullptr) + PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, groundfx_state, coin_word_r, nullptr) PORT_START("AN0") /* IN 2, steering wheel */ PORT_BIT( 0xff, 0x7f, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_REVERSE PORT_PLAYER(1) @@ -305,18 +305,18 @@ GFXDECODE_END MACHINE DRIVERS ***********************************************************/ -INTERRUPT_GEN_MEMBER(groundfx_state::groundfx_interrupt) +INTERRUPT_GEN_MEMBER(groundfx_state::interrupt) { m_frame_counter^=1; device.execute().set_input_line(4, HOLD_LINE); } -static MACHINE_CONFIG_START( groundfx, groundfx_state ) +static MACHINE_CONFIG_START( groundfx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_40MHz/2) /* 20MHz - verified */ MCFG_CPU_PROGRAM_MAP(groundfx_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", groundfx_state, groundfx_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", groundfx_state, interrupt) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -328,7 +328,7 @@ static MACHINE_CONFIG_START( groundfx, groundfx_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 3*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(groundfx_state, screen_update_groundfx) + MCFG_SCREEN_UPDATE_DRIVER(groundfx_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", groundfx) @@ -397,17 +397,16 @@ ROM_START( groundfx ) ROM_END -READ32_MEMBER(groundfx_state::irq_speedup_r_groundfx) +READ32_MEMBER(groundfx_state::irq_speedup_r) { - cpu_device *cpu = downcast(&space.device()); int ptr; - offs_t sp = cpu->sp(); + offs_t sp = m_maincpu->sp(); if ((sp&2)==0) ptr=m_ram[(sp&0x1ffff)/4]; else ptr=(((m_ram[(sp&0x1ffff)/4])&0x1ffff)<<16) | (m_ram[((sp&0x1ffff)/4)+1]>>16); - if (cpu->pc()==0x1ece && ptr==0x1b9a) - cpu->spin_until_interrupt(); + if (m_maincpu->pc()==0x1ece && ptr==0x1b9a) + m_maincpu->spin_until_interrupt(); return m_ram[0xb574/4]; } @@ -415,26 +414,24 @@ READ32_MEMBER(groundfx_state::irq_speedup_r_groundfx) DRIVER_INIT_MEMBER(groundfx_state,groundfx) { - uint32_t offset,i; uint8_t *gfx = memregion("gfx3")->base(); int size=memregion("gfx3")->bytes(); - int data; + + m_interrupt5_timer = timer_alloc(TIMER_GROUNDFX_INTERRUPT5); /* Speedup handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x20b574, 0x20b577, read32_delegate(FUNC(groundfx_state::irq_speedup_r_groundfx),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x20b574, 0x20b577, read32_delegate(FUNC(groundfx_state::irq_speedup_r),this)); /* make SCC tile GFX format suitable for gfxdecode */ - offset = size/2; - for (i = size/2+size/4; i>0) & 3; - d2 = (data>>2) & 3; - d3 = (data>>4) & 3; - d4 = (data>>6) & 3; + int data = gfx[i]; + int d1 = (data>>0) & 3; + int d2 = (data>>2) & 3; + int d3 = (data>>4) & 3; + int d4 = (data>>6) & 3; gfx[offset] = (d1<<2) | (d2<<6); offset++; diff --git a/src/mame/drivers/gstream.cpp b/src/mame/drivers/gstream.cpp index 70537bb2bd9..e9d4ab198e9 100644 --- a/src/mame/drivers/gstream.cpp +++ b/src/mame/drivers/gstream.cpp @@ -866,7 +866,7 @@ void gstream_state::machine_reset() m_oki_bank_2 = 0; } -static MACHINE_CONFIG_START( gstream, gstream_state ) +static MACHINE_CONFIG_START( gstream ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", E132XT, 16000000*4) /* 4x internal multiplier */ @@ -894,14 +894,14 @@ static MACHINE_CONFIG_START( gstream, gstream_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", 1000000, OKIM6295_PIN7_HIGH) /* 1 Mhz? */ + MCFG_OKIM6295_ADD("oki1", 1000000, PIN7_HIGH) /* 1 Mhz? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) - MCFG_OKIM6295_ADD("oki2", 1000000, OKIM6295_PIN7_HIGH) /* 1 Mhz? */ + MCFG_OKIM6295_ADD("oki2", 1000000, PIN7_HIGH) /* 1 Mhz? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( x2222, gstream_state ) +static MACHINE_CONFIG_START( x2222 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", E132XT, 16000000*4) /* 4x internal multiplier */ @@ -927,7 +927,7 @@ static MACHINE_CONFIG_START( x2222, gstream_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", 1000000, OKIM6295_PIN7_HIGH) /* 1 Mhz? */ + MCFG_OKIM6295_ADD("oki1", 1000000, PIN7_HIGH) /* 1 Mhz? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END @@ -1173,6 +1173,6 @@ DRIVER_INIT_MEMBER(gstream_state,x2222) } -GAME( 2002, gstream, 0, gstream, gstream, gstream_state, gstream, ROT270, "Oriental Soft Japan", "G-Stream G2020", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, x2222, 0, x2222, x2222, gstream_state, x2222, ROT270, "Oriental Soft / Promat", "X2222 (final debug?)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +GAME( 2002, gstream, 0, gstream, gstream, gstream_state, gstream, ROT270, "Oriental Soft Japan", "G-Stream G2020", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, x2222, 0, x2222, x2222, gstream_state, x2222, ROT270, "Oriental Soft / Promat", "X2222 (final debug?)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) GAME( 2000, x2222o, x2222, x2222, x2222, gstream_state, x2222, ROT270, "Oriental Soft / Promat", "X2222 (5-level prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/gstriker.cpp b/src/mame/drivers/gstriker.cpp index 1018d0e60ab..20e2a254940 100644 --- a/src/mame/drivers/gstriker.cpp +++ b/src/mame/drivers/gstriker.cpp @@ -38,6 +38,7 @@ Missing mixer registers (mainly layer enable/disable) #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" +#include "machine/vs9209.h" #include "sound/2610intf.h" #include "speaker.h" @@ -191,12 +192,18 @@ void gstriker_state::machine_start() /*** MISC READ / WRITE HANDLERS **********************************************/ -READ16_MEMBER(gstriker_state::dmmy_8f) +READ8_MEMBER(gstriker_state::dmmy_8f) { m_dmmy_8f_ret = ~m_dmmy_8f_ret; return m_dmmy_8f_ret; } +WRITE8_MEMBER(gstriker_state::unknown_output_w) +{ + if (data != 0) + logerror("Unknown output write: %02X\n", data); +} + /*** SOUND RELATED ***********************************************************/ @@ -280,12 +287,7 @@ static ADDRESS_MAP_START( gstriker_map, AS_PROGRAM, 16, gstriker_state ) AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("zoomtilemap", mb60553_zooming_tilemap_device, regs_r, regs_w ) AM_RANGE(0x200040, 0x20005f) AM_RAM AM_SHARE("mixerregs1") AM_RANGE(0x200060, 0x20007f) AM_RAM AM_SHARE("mixerregs2") - AM_RANGE(0x200080, 0x200081) AM_READ_PORT("P1") - AM_RANGE(0x200082, 0x200083) AM_READ_PORT("P2") - AM_RANGE(0x200084, 0x200085) AM_READ_PORT("SYSTEM") - AM_RANGE(0x200086, 0x200087) AM_READ_PORT("DSW1") - AM_RANGE(0x200088, 0x200089) AM_READ_PORT("DSW2") - AM_RANGE(0x20008e, 0x20008f) AM_READ(dmmy_8f) + AM_RANGE(0x200080, 0x20009f) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff) AM_RANGE(0x2000a0, 0x2000a1) AM_WRITE(sound_command_w) AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("work_ram") @@ -311,208 +313,199 @@ ADDRESS_MAP_END static INPUT_PORTS_START( gstriker_generic ) PORT_START("SYSTEM") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE2 ) // "Test" - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN) // vbl? - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // "Test" + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) // vbl? PORT_START("P1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) // "Spare" - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) // "Spare" PORT_START("P2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) // "Spare" - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) // "Spare" INPUT_PORTS_END static INPUT_PORTS_START( gstriker ) PORT_INCLUDE( gstriker_generic ) PORT_START("DSW1") - PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0003, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x000c, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x0010, 0x0000, "2 Players VS CPU Game" ) // "Cooperation Coin" - PORT_DIPSETTING( 0x0010, "1 Credit" ) - PORT_DIPSETTING( 0x0000, "2 Credits" ) - PORT_DIPNAME( 0x0020, 0x0000, "Player VS Player Game" ) // "Competitive Coin" - PORT_DIPSETTING( 0x0020, "1 Credit" ) - PORT_DIPSETTING( 0x0000, "2 Credits" ) - PORT_DIPNAME( 0x0040, 0x0040, "New Challenger" ) /* unknown purpose */ - PORT_DIPSETTING( 0x0040, DEF_STR( No ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x0080, 0x0080, "Maximum Players" ) // "Cabinet Type" - PORT_DIPSETTING( 0x0000, "1" ) - PORT_DIPSETTING( 0x0080, "2" ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x10, 0x00, "2 Players VS CPU Game" ) // "Cooperation Coin" + PORT_DIPSETTING( 0x10, "1 Credit" ) + PORT_DIPSETTING( 0x00, "2 Credits" ) + PORT_DIPNAME( 0x20, 0x00, "Player VS Player Game" ) // "Competitive Coin" + PORT_DIPSETTING( 0x20, "1 Credit" ) + PORT_DIPSETTING( 0x00, "2 Credits" ) + PORT_DIPNAME( 0x40, 0x40, "New Challenger" ) /* unknown purpose */ + PORT_DIPSETTING( 0x40, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x80, 0x80, "Maximum Players" ) // "Cabinet Type" + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x80, "2" ) PORT_START("DSW2") - PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) ) - PORT_DIPNAME( 0x0006, 0x0006, "Player(s) VS CPU Time" ) // "Tournament Time" - PORT_DIPSETTING( 0x0006, "1:30" ) - PORT_DIPSETTING( 0x0004, "2:00" ) - PORT_DIPSETTING( 0x0002, "3:00" ) - PORT_DIPSETTING( 0x0000, "4:00" ) - PORT_DIPNAME( 0x0018, 0x0018, "Player VS Player Time" ) // "Competitive Time" - PORT_DIPSETTING( 0x0018, "2:00" ) - PORT_DIPSETTING( 0x0010, "3:00" ) - PORT_DIPSETTING( 0x0008, "4:00" ) - PORT_DIPSETTING( 0x0000, "5:00" ) - PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Demo_Sounds ) ) // "Demo Sound" - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, "Communication Mode" ) // "Master/Slave" - PORT_DIPSETTING( 0x0040, "Master" ) - PORT_DIPSETTING( 0x0000, "Slave" ) - PORT_SERVICE( 0x0080, IP_ACTIVE_LOW ) // "Self Test Mode" - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hard ) ) + PORT_DIPNAME( 0x06, 0x06, "Player(s) VS CPU Time" ) // "Tournament Time" + PORT_DIPSETTING( 0x06, "1:30" ) + PORT_DIPSETTING( 0x04, "2:00" ) + PORT_DIPSETTING( 0x02, "3:00" ) + PORT_DIPSETTING( 0x00, "4:00" ) + PORT_DIPNAME( 0x18, 0x18, "Player VS Player Time" ) // "Competitive Time" + PORT_DIPSETTING( 0x18, "2:00" ) + PORT_DIPSETTING( 0x10, "3:00" ) + PORT_DIPSETTING( 0x08, "4:00" ) + PORT_DIPSETTING( 0x00, "5:00" ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) // "Demo Sound" + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, "Communication Mode" ) // "Master/Slave" + PORT_DIPSETTING( 0x40, "Master" ) + PORT_DIPSETTING( 0x00, "Slave" ) + PORT_SERVICE( 0x80, IP_ACTIVE_LOW ) // "Self Test Mode" INPUT_PORTS_END static INPUT_PORTS_START( twrldc94 ) PORT_INCLUDE( gstriker_generic ) PORT_START("DSW1") - PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x0003, DEF_STR( 1C_6C ) ) - - PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0028, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x0018, DEF_STR( 1C_6C ) ) - - PORT_DIPNAME( 0x00c0, 0x00c0, "Play Time" ) - PORT_DIPSETTING( 0x0000, "P v CPU 1:00, P v P 1:30" ) - PORT_DIPSETTING( 0x00c0, "P v CPU 1:30, P v P 2:00" ) - PORT_DIPSETTING( 0x0040, "P v CPU 2:00, P v P 2:30" ) - PORT_DIPSETTING( 0x0080, "P v CPU 2:30, P v P 3:00" ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_6C ) ) + + PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) ) + + PORT_DIPNAME( 0xc0, 0xc0, "Play Time" ) + PORT_DIPSETTING( 0x00, "P v CPU 1:00, P v P 1:30" ) + PORT_DIPSETTING( 0xc0, "P v CPU 1:30, P v P 2:00" ) + PORT_DIPSETTING( 0x40, "P v CPU 2:00, P v P 2:30" ) + PORT_DIPSETTING( 0x80, "P v CPU 2:30, P v P 3:00" ) PORT_START("DSW2") - PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Very_Hard ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) ) - - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, "Show Configuration" ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, "Countdown" ) - PORT_DIPSETTING( 0x0010, "54 sec" ) - PORT_DIPSETTING( 0x0000, "60 sec" ) - PORT_DIPNAME( 0x0020, 0x0020, "Start credit" ) - PORT_DIPSETTING( 0x0020, "1" ) - PORT_DIPSETTING( 0x0000, "2" ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_SERVICE( 0x0080, IP_ACTIVE_LOW ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Very_Hard ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x03, DEF_STR( Normal ) ) + + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, "Show Configuration" ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, "Countdown" ) + PORT_DIPSETTING( 0x10, "54 sec" ) + PORT_DIPSETTING( 0x00, "60 sec" ) + PORT_DIPNAME( 0x20, 0x20, "Start credit" ) + PORT_DIPSETTING( 0x20, "1" ) + PORT_DIPSETTING( 0x00, "2" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x80, IP_ACTIVE_LOW ) INPUT_PORTS_END static INPUT_PORTS_START( vgoalsoc ) PORT_INCLUDE( gstriker_generic ) PORT_START("DSW1") - PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x0003, DEF_STR( 1C_6C ) ) - - PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0028, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x0018, DEF_STR( 1C_6C ) ) - - PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR (Unknown) ) // Probably difficulty - PORT_DIPSETTING( 0x0080, "A" ) - PORT_DIPSETTING( 0x00c0, "B" ) - PORT_DIPSETTING( 0x0040, "C" ) - PORT_DIPSETTING( 0x0000, "D" ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_6C ) ) + + PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) ) + + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR (Unknown) ) // Probably difficulty + PORT_DIPSETTING( 0x80, "A" ) + PORT_DIPSETTING( 0xc0, "B" ) + PORT_DIPSETTING( 0x40, "C" ) + PORT_DIPSETTING( 0x00, "D" ) PORT_START("DSW2") - PORT_DIPNAME( 0x0003, 0x0003, "Player VS CPU Time" ) // no coperative - PORT_DIPSETTING( 0x0002, "1:00" ) - PORT_DIPSETTING( 0x0003, "1:30" ) - PORT_DIPSETTING( 0x0001, "2:00" ) - PORT_DIPSETTING( 0x0000, "2:30" ) - PORT_DIPNAME( 0x000c, 0x000c, "Player VS Player Time" ) - PORT_DIPSETTING( 0x0008, "1:30" ) - PORT_DIPSETTING( 0x000c, "2:00" ) - PORT_DIPSETTING( 0x0004, "2:30" ) - PORT_DIPSETTING( 0x0000, "3:00" ) - PORT_DIPNAME( 0x0010, 0x0010, "Countdown" ) - PORT_DIPSETTING( 0x0010, "54 sec" ) - PORT_DIPSETTING( 0x0000, "60 sec" ) - PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, "DWS2:6" ) // hangs at POST - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, "Start credit" ) - PORT_DIPSETTING( 0x0080, "1" ) - PORT_DIPSETTING( 0x0000, "2" ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_DIPNAME( 0x03, 0x03, "Player VS CPU Time" ) // no coperative + PORT_DIPSETTING( 0x02, "1:00" ) + PORT_DIPSETTING( 0x03, "1:30" ) + PORT_DIPSETTING( 0x01, "2:00" ) + PORT_DIPSETTING( 0x00, "2:30" ) + PORT_DIPNAME( 0x0c, 0x0c, "Player VS Player Time" ) + PORT_DIPSETTING( 0x08, "1:30" ) + PORT_DIPSETTING( 0x0c, "2:00" ) + PORT_DIPSETTING( 0x04, "2:30" ) + PORT_DIPSETTING( 0x00, "3:00" ) + PORT_DIPNAME( 0x10, 0x10, "Countdown" ) + PORT_DIPSETTING( 0x10, "54 sec" ) + PORT_DIPSETTING( 0x00, "60 sec" ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, "DWS2:6" ) // hangs at POST + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Start credit" ) + PORT_DIPSETTING( 0x80, "1" ) + PORT_DIPSETTING( 0x00, "2" ) INPUT_PORTS_END /*** MACHINE DRIVER **********************************************************/ -static MACHINE_CONFIG_START( gstriker, gstriker_state ) +static MACHINE_CONFIG_START( gstriker ) MCFG_CPU_ADD("maincpu", M68000, 10000000) MCFG_CPU_PROGRAM_MAP(gstriker_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", gstriker_state, irq1_line_hold) @@ -521,6 +514,14 @@ static MACHINE_CONFIG_START( gstriker, gstriker_state ) MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_io_map) + MCFG_DEVICE_ADD("io", VS9209, 0) + MCFG_VS9209_IN_PORTA_CB(IOPORT("P1")) + MCFG_VS9209_IN_PORTB_CB(IOPORT("P2")) + MCFG_VS9209_IN_PORTC_CB(IOPORT("SYSTEM")) + MCFG_VS9209_IN_PORTD_CB(IOPORT("DSW1")) + MCFG_VS9209_IN_PORTE_CB(IOPORT("DSW2")) + MCFG_VS9209_IN_PORTH_CB(READ8(gstriker_state, dmmy_8f)) + MCFG_SCREEN_ADD("screen", RASTER) // MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) MCFG_SCREEN_REFRESH_RATE(60) @@ -1006,7 +1007,7 @@ WRITE16_MEMBER(gstriker_state::vbl_toggle_w) void gstriker_state::mcu_init() { - m_dmmy_8f_ret = 0xFFFF; + m_dmmy_8f_ret = 0xff; m_pending_command = 0; m_mcu_data = 0; @@ -1043,9 +1044,9 @@ DRIVER_INIT_MEMBER(gstriker_state,vgoalsoc) /*** GAME DRIVERS ************************************************************/ -GAME( 1993, gstriker, 0, gstriker, gstriker, driver_device, 0, ROT0, "Human", "Grand Striker", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, gstrikera, gstriker, gstriker, gstriker, driver_device, 0, ROT0, "Human", "Grand Striker (Americas)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, gstrikerj, gstriker, gstriker, gstriker, driver_device, 0, ROT0, "Human", "Grand Striker (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, gstriker, 0, gstriker, gstriker, gstriker_state, 0, ROT0, "Human", "Grand Striker", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, gstrikera, gstriker, gstriker, gstriker, gstriker_state, 0, ROT0, "Human", "Grand Striker (Americas)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, gstrikerj, gstriker, gstriker, gstriker, gstriker_state, 0, ROT0, "Human", "Grand Striker (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) /* Similar, but not identical hardware, appear to be protected by an MCU :-( */ diff --git a/src/mame/drivers/gsword.cpp b/src/mame/drivers/gsword.cpp index b0bbff0a297..eb61afc0d3d 100644 --- a/src/mame/drivers/gsword.cpp +++ b/src/mame/drivers/gsword.cpp @@ -382,12 +382,6 @@ READ8_MEMBER(josvolly_state::mcu2_p2_r) return 0x7fU & ioport("DSW2")->read(); } -READ8_MEMBER(josvolly_state::mcu2_test_r) -{ - // TEST0 and TEST1 are driven by P20 and P21 on the other MCU - return BIT(m_mcu1_p2, offset); -} - WRITE8_MEMBER(josvolly_state::cpu2_nmi_enable_w) { m_cpu2_nmi_enable = true; @@ -536,17 +530,6 @@ static ADDRESS_MAP_START( josvolly_cpu2_io_map, AS_IO, 8, josvolly_state ) AM_RANGE(0xC1, 0xC1) AM_WRITE(cpu2_irq_clear_w); ADDRESS_MAP_END -static ADDRESS_MAP_START( josvolly_mcu1_io_map, AS_IO, 8, josvolly_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu1_p1_r, mcu1_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu1_p2_r, mcu1_p2_w) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( josvolly_mcu2_io_map, AS_IO, 8, josvolly_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu2_p1_r, mcu2_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu2_p2_r, mcu2_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(mcu2_test_r) -ADDRESS_MAP_END - static INPUT_PORTS_START( gsword ) PORT_START("IN0") /* IN0 (8741-2 port1?) */ @@ -791,7 +774,7 @@ static GFXDECODE_START( gsword ) GFXDECODE_END -static MACHINE_CONFIG_START( gsword, gsword_state ) +static MACHINE_CONFIG_START( gsword ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18MHz/6) /* verified on pcb */ @@ -845,11 +828,11 @@ static MACHINE_CONFIG_START( gsword, gsword_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* vclk input mode */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* vclk input mode */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( josvolly, josvolly_state ) +static MACHINE_CONFIG_START( josvolly ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18000000/4) /* ? */ @@ -863,10 +846,19 @@ static MACHINE_CONFIG_START( josvolly, josvolly_state ) MCFG_CPU_VBLANK_INT_DRIVER("screen", josvolly_state, irq0_line_assert) MCFG_DEVICE_ADD("mcu1", I8741, 18000000/2) /* ? */ - MCFG_CPU_IO_MAP(josvolly_mcu1_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(josvolly_state, mcu1_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(josvolly_state, mcu1_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(josvolly_state, mcu1_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(josvolly_state, mcu1_p2_w)) MCFG_DEVICE_ADD("mcu2", I8741, 12000000/2) /* ? */ - MCFG_CPU_IO_MAP(josvolly_mcu2_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(josvolly_state, mcu2_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(josvolly_state, mcu2_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(josvolly_state, mcu2_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(josvolly_state, mcu2_p2_w)) + // TEST0 and TEST1 are driven by P20 and P21 on the other MCU + MCFG_MCS48_PORT_T0_IN_CB(DEVREAD8("mcu1", i8741_device, p2_r)) MCFG_DEVCB_RSHIFT(0) + MCFG_MCS48_PORT_T1_IN_CB(DEVREAD8("mcu1", i8741_device, p2_r)) MCFG_DEVCB_RSHIFT(1) MCFG_DEVICE_ADD("aa_007", I8255, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN1")) // 1PL @@ -1050,6 +1042,6 @@ ROM_START( josvolly ) ROM_END -GAME( 1983, josvolly, 0, josvolly, josvolly, driver_device, 0, ROT90, "Allumer / Taito Corporation", "Joshi Volleyball", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, josvolly, 0, josvolly, josvolly, josvolly_state, 0, ROT90, "Allumer / Taito Corporation", "Joshi Volleyball", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1984, gsword, 0, gsword, gsword, gsword_state, gsword, ROT0, "Allumer / Taito Corporation", "Great Swordsman (World?)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, gsword2, gsword, gsword, gsword, gsword_state, gsword2, ROT0, "Allumer / Taito Corporation", "Great Swordsman (Japan?)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gticlub.cpp b/src/mame/drivers/gticlub.cpp index 5f392819340..957b090daf7 100644 --- a/src/mame/drivers/gticlub.cpp +++ b/src/mame/drivers/gticlub.cpp @@ -934,7 +934,7 @@ uint32_t gticlub_state::screen_update_hangplt(screen_device &screen, bitmap_rgb3 return 0; } -static MACHINE_CONFIG_START( gticlub, gticlub_state ) +static MACHINE_CONFIG_START( gticlub ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GA, XTAL_64MHz/2) /* PowerPC 403GA 32MHz */ @@ -1004,7 +1004,7 @@ static MACHINE_CONFIG_START( gticlub, gticlub_state ) MCFG_DEVICE_ADD("konppc", KONPPC, 0) MCFG_KONPPC_CGBOARD_NUMBER(1) - MCFG_KONPPC_CGBOARD_TYPE(CGBOARD_TYPE_GTICLUB) + MCFG_KONPPC_CGBOARD_TYPE(GTICLUB) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( thunderh, gticlub ) @@ -1041,7 +1041,7 @@ MACHINE_RESET_MEMBER(gticlub_state,hangplt) m_dsp2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); } -static MACHINE_CONFIG_START( hangplt, gticlub_state ) +static MACHINE_CONFIG_START( hangplt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GA, XTAL_64MHz/2) /* PowerPC 403GA 32MHz */ @@ -1131,7 +1131,7 @@ static MACHINE_CONFIG_START( hangplt, gticlub_state ) MCFG_DEVICE_ADD("konppc", KONPPC, 0) MCFG_KONPPC_CGBOARD_NUMBER(2) - MCFG_KONPPC_CGBOARD_TYPE(CGBOARD_TYPE_HANGPLT) + MCFG_KONPPC_CGBOARD_TYPE(HANGPLT) MACHINE_CONFIG_END /*************************************************************************/ diff --git a/src/mame/drivers/gts1.cpp b/src/mame/drivers/gts1.cpp index 561272aeec5..09b65fddff2 100644 --- a/src/mame/drivers/gts1.cpp +++ b/src/mame/drivers/gts1.cpp @@ -385,8 +385,8 @@ WRITE8_MEMBER(gts1_state::gts1_solenoid_w) break; case 14: // RAM control W/R LOG(("%s: RAM control W/R <- %x\n", __FUNCTION__, data)); - break; m_nvram_wr = (data & 1) ? true : false; + break; case 15: // spare LOG(("%s: spare [%x] <- %x\n", __FUNCTION__, offset, data)); break; @@ -675,7 +675,7 @@ WRITE8_MEMBER(gts1_state::gts1_do_w) } -static MACHINE_CONFIG_START( gts1, gts1_state ) +static MACHINE_CONFIG_START( gts1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPS4_2, XTAL_3_579545MHz) // divided by 18 in the CPU MCFG_CPU_PROGRAM_MAP(gts1_map) diff --git a/src/mame/drivers/gts3.cpp b/src/mame/drivers/gts3.cpp index b9a32fe3365..6a7262468e6 100644 --- a/src/mame/drivers/gts3.cpp +++ b/src/mame/drivers/gts3.cpp @@ -274,7 +274,7 @@ DRIVER_INIT_MEMBER( gts3_state, gts3 ) { } -static MACHINE_CONFIG_START( gts3, gts3_state ) +static MACHINE_CONFIG_START( gts3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02, XTAL_4MHz / 2) MCFG_CPU_PROGRAM_MAP(gts3_map) diff --git a/src/mame/drivers/gts3a.cpp b/src/mame/drivers/gts3a.cpp index 7041ad77a4e..8cbf012e168 100644 --- a/src/mame/drivers/gts3a.cpp +++ b/src/mame/drivers/gts3a.cpp @@ -330,7 +330,7 @@ MC6845_UPDATE_ROW( gts3a_state::crtc_update_row ) } } -static MACHINE_CONFIG_START( gts3a, gts3a_state ) +static MACHINE_CONFIG_START( gts3a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02, XTAL_4MHz / 2) MCFG_CPU_PROGRAM_MAP(gts3a_map) @@ -1266,42 +1266,42 @@ ROM_START(wcsoccerd2) ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(8b2795b0) SHA1(b838d4e410c815421099c65b0d3b22227dae17c6)) ROM_END -GAME(1992, smb, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, smb1, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, smb2, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, smb3, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, smbmush, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers Mushroom World", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, cueball, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, cueball2, cueball, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, cueball3, cueball, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, sfight2, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, sfight2a, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, sfight2b, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, teedoffp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, teedoffp1, teedoffp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, teedoffp3, teedoffp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, gladiatp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Gladiators", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, wipeout, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Wipeout (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, rescu911, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Rescue 911 (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, wcsoccer, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "World Challenge Soccer (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, wcsoccerd2, wcsoccer, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "World Challenge Soccer (disp.rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, stargatp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, stargatp1, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, stargatp2, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, stargatp3, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, stargatp4, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, stargatp5, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, shaqattq, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Shaq Attaq (rev.5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, shaqattq2, shaqattq, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Shaq Attaq (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, freddy, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Freddy: A Nightmare on Elm Street (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, freddy4, freddy, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Freddy: A Nightmare on Elm Street (rev.4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, bighurt, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Frank Thomas' Big Hurt (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, waterwld, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, waterwld2, waterwld, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, snspares, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.6)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, snspares2, snspares, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, snspares1, snspares, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, andretti, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1995, andretti4, andretti, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti (rev.T4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1996, barbwire, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Barb Wire", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1996, brooks, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Brooks & Dunn (rev.T1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, smb, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, smb1, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, smb2, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, smb3, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, smbmush, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers Mushroom World", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, cueball, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, cueball2, cueball, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, cueball3, cueball, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, sfight2, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, sfight2a, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, sfight2b, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, teedoffp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, teedoffp1, teedoffp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, teedoffp3, teedoffp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, gladiatp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Gladiators", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, wipeout, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Wipeout (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, rescu911, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Rescue 911 (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, wcsoccer, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "World Challenge Soccer (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, wcsoccerd2, wcsoccer, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "World Challenge Soccer (disp.rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, stargatp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, stargatp1, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, stargatp2, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, stargatp3, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, stargatp4, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, stargatp5, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, shaqattq, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Shaq Attaq (rev.5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, shaqattq2, shaqattq, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Shaq Attaq (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, freddy, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Freddy: A Nightmare on Elm Street (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, freddy4, freddy, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Freddy: A Nightmare on Elm Street (rev.4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, bighurt, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Frank Thomas' Big Hurt (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, waterwld, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, waterwld2, waterwld, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, snspares, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.6)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, snspares2, snspares, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, snspares1, snspares, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, andretti, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1995, andretti4, andretti, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti (rev.T4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1996, barbwire, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Barb Wire", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1996, brooks, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Brooks & Dunn (rev.T1)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/gts80.cpp b/src/mame/drivers/gts80.cpp index 1bb92bf44e8..e5b3d813570 100644 --- a/src/mame/drivers/gts80.cpp +++ b/src/mame/drivers/gts80.cpp @@ -344,7 +344,7 @@ DRIVER_INIT_MEMBER( gts80_state, gts80 ) } /* with Sound Board */ -static MACHINE_CONFIG_START( gts80, gts80_state ) +static MACHINE_CONFIG_START( gts80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_3_579545MHz/4) MCFG_CPU_PROGRAM_MAP(gts80_map) @@ -784,28 +784,28 @@ ROM_START(s80tst) ROM_LOAD("80tst-s2.snd", 0x7800, 0x0800, CRC(1a4b1e9d) SHA1(18e7ffbdbdaf83ab1c8daa5fa5201d9f54390758)) ROM_END -/* disp1 */GAME(1981, s80tst, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "System 80 Test", MACHINE_IS_SKELETON_MECHANICAL) - -/* disp1 */GAME(1980, panthera, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Panthera", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1980, spidermn, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "The Amazing Spider-Man", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1980, circusp, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Circus", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1980, cntforce, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Counterforce", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1980, starrace, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Star Race", MACHINE_IS_SKELETON_MECHANICAL) -/* disp2 */GAME(1980, jamesb, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "James Bond (Timed Play)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp2 */GAME(1980, jamesb2, jamesb, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "James Bond (3/5-Ball)", MACHINE_IS_SKELETON_MECHANICAL) -/* cust */GAME(1980, timeline, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Time Line", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1981, forceii, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Force II", MACHINE_IS_SKELETON_MECHANICAL) -/* cust */GAME(1981, pnkpnthr, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Pink Panther", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1981, marsp, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Mars - God of War", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1981, s80tst, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "System 80 Test", MACHINE_IS_SKELETON_MECHANICAL) + +/* disp1 */GAME(1980, panthera, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Panthera", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1980, spidermn, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "The Amazing Spider-Man", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1980, circusp, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Circus", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1980, cntforce, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Counterforce", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1980, starrace, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Star Race", MACHINE_IS_SKELETON_MECHANICAL) +/* disp2 */GAME(1980, jamesb, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "James Bond (Timed Play)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp2 */GAME(1980, jamesb2, jamesb, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "James Bond (3/5-Ball)", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1980, timeline, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Time Line", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1981, forceii, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Force II", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1981, pnkpnthr, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Pink Panther", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1981, marsp, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Mars - God of War", MACHINE_IS_SKELETON_MECHANICAL) /* disp1 */GAME(1981, marspf, marsp, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Mars - God of War (French speech)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1981, marspp, marsp, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Mars - God of War (Prototype)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1981, vlcno_ax, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1981, vlcno_1c, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 1)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1981, vlcno_1b, vlcno_1c, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 2)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp1 */GAME(1981, vlcno_1a, vlcno_1c, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 3)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp2 */GAME(1981, blckhole, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Rev. 4)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp2 */GAME(1981, blckhole2, blckhole, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Rev. 2)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp2 */GAME(1981, blckhols, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Sound Only)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp2 */GAME(1982, hh, 0, gts80_hh, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Haunted House (Rev. 2)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp2 */GAME(1982, hh_1, hh, gts80_hh, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Haunted House (Rev. 1)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp2 */GAME(1981, eclipse, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Eclipse", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1981, marspp, marsp, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Mars - God of War (Prototype)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1981, vlcno_ax, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1981, vlcno_1c, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 1)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1981, vlcno_1b, vlcno_1c, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 2)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp1 */GAME(1981, vlcno_1a, vlcno_1c, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 3)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp2 */GAME(1981, blckhole, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Rev. 4)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp2 */GAME(1981, blckhole2, blckhole, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Rev. 2)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp2 */GAME(1981, blckhols, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Sound Only)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp2 */GAME(1982, hh, 0, gts80_hh, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Haunted House (Rev. 2)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp2 */GAME(1982, hh_1, hh, gts80_hh, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Haunted House (Rev. 1)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp2 */GAME(1981, eclipse, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Eclipse", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/gts80a.cpp b/src/mame/drivers/gts80a.cpp index b3fece393f4..28656075ca2 100644 --- a/src/mame/drivers/gts80a.cpp +++ b/src/mame/drivers/gts80a.cpp @@ -335,7 +335,7 @@ DRIVER_INIT_MEMBER( gts80a_state, gts80a ) } /* with Sound Board */ -static MACHINE_CONFIG_START( gts80a, gts80a_state ) +static MACHINE_CONFIG_START( gts80a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_3_579545MHz/4) MCFG_CPU_PROGRAM_MAP(gts80a_map) @@ -441,7 +441,7 @@ static ADDRESS_MAP_START( video_io_map, AS_IO, 8, caveman_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_DERIVED_CLASS( caveman, gts80a_ss, caveman_state ) +static MACHINE_CONFIG_DERIVED( caveman, gts80a_ss ) MCFG_CPU_ADD("video_cpu", I8088, 5000000) MCFG_CPU_PROGRAM_MAP(video_map) MCFG_CPU_IO_MAP(video_io_map) @@ -709,6 +709,17 @@ ROM_START(rocky) ROM_LOAD("672-s2.snd", 0x7800, 0x0800, CRC(5e77117a) SHA1(7836b1ee0b2afe621ae414d5710111b550db0e63)) ROM_END +ROM_START(rockyf) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD("u2_80a.bin", 0x2000, 0x1000, CRC(241de1d4) SHA1(9d5942704cbdec6565d6335e33e9f7e4c60a41ac)) + ROM_LOAD("u3_80a.bin", 0x3000, 0x1000, CRC(2d77ccdc) SHA1(47241ccd365e8d74d5aa5b775acf6445cc95b8a8)) + ROM_LOAD("672-2x.cpu", 0x1000, 0x0800, CRC(8e2f0d39) SHA1(eb0982d2bfa910b3c95d6d55c04dc58395789411)) + + ROM_REGION(0x10000, "r1sound:audiocpu", 0) + ROM_LOAD("f672-s1.snd", 0x7000, 0x0800, CRC(57a0ce22) SHA1(cdc167b5eb72e8c3235d3ffd9143faf8e6c0a2ef)) + ROM_LOAD("f672-s2.snd", 0x7800, 0x0800, CRC(87a0474f) SHA1(62fe995f3bc7fe23422d75b043d508c2f84f745a)) +ROM_END + /*------------------------------------------------------------------- / Royal Flush Deluxe (#681) /-------------------------------------------------------------------*/ @@ -793,28 +804,29 @@ ROM_START(touchdn) ROM_END -/* cust */GAME(1981, dvlsdre, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Devil's Dare", MACHINE_IS_SKELETON_MECHANICAL) -/* cust */GAME(1981, dvlsdre2, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Devil's Dare (Sound Only)", MACHINE_IS_SKELETON_MECHANICAL) -/* cust */GAME(1982, rocky, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Rocky", MACHINE_IS_SKELETON_MECHANICAL) -/* cust */GAME(1982, spirit, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Spirit", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1982, punk, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Punk!", MACHINE_IS_SKELETON_MECHANICAL) -/* cust */GAME(1982, striker, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Striker", MACHINE_IS_SKELETON_MECHANICAL) -/* cust */GAME(1983, krullp, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Krull (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1983, qbquest, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Q*Bert's Quest", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1983, sorbit, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Super Orbit", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1983, rflshdlx, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Royal Flush Deluxe", MACHINE_IS_SKELETON_MECHANICAL) -/* cust */GAME(1983, goinnuts, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Goin' Nuts", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1983, amazonh, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Amazon Hunt", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1983, amazonha, amazonh,gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Amazon Hunt (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1983, rackempp, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Rack 'em Up! (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1983, raimfire, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Ready...Aim...Fire!", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1984, jack2opn, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Jacks to Open", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1984, touchdn, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Touchdown", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1984, alienstr, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Alien Star", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1984, thegames, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "The Games", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1984, eldorado, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "El Dorado City of Gold", MACHINE_IS_SKELETON_MECHANICAL) -/* disp3 */GAME(1985, icefever, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Ice Fever", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1981, dvlsdre, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Devil's Dare", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1981, dvlsdre2, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Devil's Dare (Sound Only)", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1982, rocky, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Rocky", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1982, rockyf, rocky, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Rocky (French speech)", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1982, spirit, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Spirit", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1982, punk, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Punk!", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1982, striker, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Striker", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1983, krullp, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Krull (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1983, qbquest, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Q*Bert's Quest", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1983, sorbit, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Super Orbit", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1983, rflshdlx, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Royal Flush Deluxe", MACHINE_IS_SKELETON_MECHANICAL) +/* cust */GAME(1983, goinnuts, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Goin' Nuts", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1983, amazonh, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Amazon Hunt", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1983, amazonha, amazonh, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Amazon Hunt (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1983, rackempp, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Rack 'em Up! (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1983, raimfire, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Ready...Aim...Fire!", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1984, jack2opn, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Jacks to Open", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1984, touchdn, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Touchdown", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1984, alienstr, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Alien Star", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1984, thegames, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "The Games", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1984, eldorado, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "El Dorado City of Gold", MACHINE_IS_SKELETON_MECHANICAL) +/* disp3 */GAME(1985, icefever, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Ice Fever", MACHINE_IS_SKELETON_MECHANICAL) /* custom (+video) */ -GAME(1981, caveman, 0, caveman, caveman, gts80a_state, gts80a, ROT0, "Gottlieb", "Caveman (Pinball/Video Combo, set 1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, cavemana, caveman, caveman, caveman, gts80a_state, gts80a, ROT0, "Gottlieb", "Caveman (Pinball/Video Combo, set 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, caveman, 0, caveman, caveman, caveman_state, gts80a, ROT0, "Gottlieb", "Caveman (Pinball/Video Combo, set 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, cavemana, caveman, caveman, caveman, caveman_state, gts80a, ROT0, "Gottlieb", "Caveman (Pinball/Video Combo, set 2)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/gts80b.cpp b/src/mame/drivers/gts80b.cpp index ad9b87979e2..e6bcb349895 100644 --- a/src/mame/drivers/gts80b.cpp +++ b/src/mame/drivers/gts80b.cpp @@ -374,7 +374,7 @@ DRIVER_INIT_MEMBER( gts80b_state, gts80b ) } /* with Sound Board */ -static MACHINE_CONFIG_START( gts80b, gts80b_state ) +static MACHINE_CONFIG_START( gts80b ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_3_579545MHz/4) MCFG_CPU_PROGRAM_MAP(gts80b_map) @@ -1715,71 +1715,71 @@ ROM_START(s80btest) ROM_LOAD("testd.snd", 0x8000, 0x2000, CRC(5d04a6d9) SHA1(f83bd8692146af7d234c1a32d0b688e76d1b2b85)) ROM_END -GAME(1985, bountyh, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bounty Hunter", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, bountyhg, bountyh, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bounty Hunter (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, triplay, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Chicago Cubs' Triple Play", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, bountyh, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bounty Hunter", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, bountyhg, bountyh, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bounty Hunter (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, triplay, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Chicago Cubs' Triple Play", MACHINE_IS_SKELETON_MECHANICAL) GAME(1985, triplaya, triplay, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Chicago Cubs' Triple Play (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, rock, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, rockg, rock, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, tagteamp, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, tagteampg, tagteamp, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, tagteamp2, tagteamp, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, raven, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Raven", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, ravena, raven, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Raven (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, raveng, raven, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Raven (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, hlywoodh, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hollywood Heat", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, hlywoodhf, hlywoodh, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hollywood Heat (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, hlywoodhg, hlywoodh, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hollywood Heat (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, rock_enc, rock, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock Encore", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, rock_encg, rock, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock Encore (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, genesisp, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Genesis", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, genesispf, genesisp, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Genesis (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, genesispg, genesisp, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Genesis (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, amazonh2, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Amazon Hunt II (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, sprbreak, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, sprbreaka, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, sprbreakf, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, sprbreakg, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, sprbreaks, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (single ball game)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, goldwing, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Gold Wings", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, goldwingf, goldwing, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Gold Wings (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, goldwingg, goldwing, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Gold Wings (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, mntecrlo, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, mntecrloa, mntecrlo, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball, alternate set)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, mntecrlof, mntecrlo, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball, French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, mntecrlog, mntecrlo, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball, German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, mntecrlo2, mntecrlo, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball, rev. 2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, arena, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, arenaa, arena, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, arenaf, arena, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, arenag, arena, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, victoryp, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Victory (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, victorypf, victoryp, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Victory (Pinball, French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, victorypg, victoryp, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Victory (Pinball, German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, diamondp, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Diamond Lady", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, diamondpf, diamondp, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Diamond Lady (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, diamondpg, diamondp, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Diamond Lady (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, txsector, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "TX-Sector", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, txsectorf, txsector, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "TX-Sector (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, txsectorg, txsector, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "TX-Sector (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bighouse, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Big House", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bighousef, bighouse, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Big House (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bighouseg, bighouse, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Big House (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, robowars, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Robo-War", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, robowarsf, robowars, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Robo-War (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, excalibr, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Excalibur", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, excalibrf, excalibr, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Excalibur (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, excalibrg, excalibr, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Excalibur (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, badgirls, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bad Girls", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, badgirlsf, badgirls, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bad Girls (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, badgirlsg, badgirls, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bad Girls (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, hotshots, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hot Shots", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, hotshotsf, hotshots, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hot Shots (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, hotshotsg, hotshots, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hot Shots (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bonebstr, 0, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc.", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bonebstrf, bonebstr, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc. (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bonebstrg, bonebstr, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc. (German)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, nmoves, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "International Concepts", "Night Moves", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, amazonh3, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Amazon Hunt III (French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, amazonh3a, amazonh3, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Amazon Hunt III (rev. 1, French)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(198?, s80btest, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "System 80B Test", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, rock, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, rockg, rock, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, tagteamp, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, tagteampg, tagteamp, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, tagteamp2, tagteamp, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling (rev.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, raven, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Raven", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, ravena, raven, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Raven (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, raveng, raven, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Raven (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, hlywoodh, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hollywood Heat", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, hlywoodhf, hlywoodh, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hollywood Heat (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, hlywoodhg, hlywoodh, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hollywood Heat (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, rock_enc, rock, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock Encore", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, rock_encg, rock, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock Encore (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, genesisp, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Genesis", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, genesispf, genesisp, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Genesis (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, genesispg, genesisp, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Genesis (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, amazonh2, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Amazon Hunt II (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, sprbreak, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, sprbreaka, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, sprbreakf, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, sprbreakg, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, sprbreaks, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (single ball game)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, goldwing, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Gold Wings", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, goldwingf, goldwing, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Gold Wings (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, goldwingg, goldwing, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Gold Wings (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, mntecrlo, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, mntecrloa, mntecrlo, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball, alternate set)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, mntecrlof, mntecrlo, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball, French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, mntecrlog, mntecrlo, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball, German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, mntecrlo2, mntecrlo, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball, rev. 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, arena, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, arenaa, arena, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, arenaf, arena, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, arenag, arena, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, victoryp, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Victory (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, victorypf, victoryp, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Victory (Pinball, French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, victorypg, victoryp, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Victory (Pinball, German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, diamondp, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Diamond Lady", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, diamondpf, diamondp, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Diamond Lady (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, diamondpg, diamondp, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Diamond Lady (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, txsector, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "TX-Sector", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, txsectorf, txsector, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "TX-Sector (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, txsectorg, txsector, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "TX-Sector (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bighouse, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Big House", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bighousef, bighouse, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Big House (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bighouseg, bighouse, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Big House (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, robowars, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Robo-War", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, robowarsf, robowars, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Robo-War (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, excalibr, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Excalibur", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, excalibrf, excalibr, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Excalibur (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, excalibrg, excalibr, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Excalibur (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, badgirls, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bad Girls", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, badgirlsf, badgirls, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bad Girls (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, badgirlsg, badgirls, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bad Girls (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, hotshots, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hot Shots", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, hotshotsf, hotshots, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hot Shots (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, hotshotsg, hotshots, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hot Shots (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bonebstr, 0, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc.", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bonebstrf, bonebstr, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc. (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bonebstrg, bonebstr, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc. (German)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, nmoves, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "International Concepts", "Night Moves", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, amazonh3, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Amazon Hunt III (French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, amazonh3a, amazonh3, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Amazon Hunt III (rev. 1, French)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(198?, s80btest, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "System 80B Test", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/guab.cpp b/src/mame/drivers/guab.cpp index 7ef39617c86..56d18f3568c 100644 --- a/src/mame/drivers/guab.cpp +++ b/src/mame/drivers/guab.cpp @@ -101,7 +101,7 @@ private: required_device m_maincpu; required_device m_tms34061; required_device m_sn; - required_device m_fdc; + required_device m_fdc; required_device m_floppy; required_device m_palette; @@ -126,7 +126,7 @@ static ADDRESS_MAP_START( guab_map, AS_PROGRAM, 16, guab_state ) AM_RANGE(0x0c00a0, 0x0c00a1) AM_DEVREADWRITE8("acia6850_2", acia6850_device, status_r, control_w, 0x00ff) AM_RANGE(0x0c00a2, 0x0c00a3) AM_DEVREADWRITE8("acia6850_2", acia6850_device, data_r, data_w, 0x00ff) AM_RANGE(0x0c00c0, 0x0c00cf) AM_DEVREADWRITE8("6840ptm", ptm6840_device, read, write, 0x00ff) - AM_RANGE(0x0c00e0, 0x0c00e7) AM_DEVREADWRITE8("fdc", wd1773_t, read, write, 0x00ff) + AM_RANGE(0x0c00e0, 0x0c00e7) AM_DEVREADWRITE8("fdc", wd1773_device, read, write, 0x00ff) AM_RANGE(0x080000, 0x080fff) AM_RAM AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff) AM_RANGE(0x100002, 0x100003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff) @@ -449,7 +449,7 @@ SLOT_INTERFACE_END // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( guab, guab_state ) +static MACHINE_CONFIG_START( guab ) /* TODO: Verify clock */ MCFG_CPU_ADD("maincpu", M68000, 8000000) MCFG_CPU_PROGRAM_MAP(guab_map) @@ -553,7 +553,7 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS -GAME( 1986, guab, 0, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break", 0 ) -GAME( 1986, crisscrs, 0, guab, guab, driver_device, 0, ROT0, "JPM", "Criss Cross (Sweden)", MACHINE_NOT_WORKING ) -GAME( 1988, tenup, 0, guab, tenup, driver_device, 0, ROT0, "JPM", "Ten Up", 0 ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS +GAME( 1986, guab, 0, guab, guab, guab_state, 0, ROT0, "JPM", "Give us a Break", 0 ) +GAME( 1986, crisscrs, 0, guab, guab, guab_state, 0, ROT0, "JPM", "Criss Cross (Sweden)", MACHINE_NOT_WORKING ) +GAME( 1988, tenup, 0, guab, tenup, guab_state, 0, ROT0, "JPM", "Ten Up", 0 ) diff --git a/src/mame/drivers/gumbo.cpp b/src/mame/drivers/gumbo.cpp index d0f9450a544..8cff2256311 100644 --- a/src/mame/drivers/gumbo.cpp +++ b/src/mame/drivers/gumbo.cpp @@ -233,7 +233,7 @@ static GFXDECODE_START( gumbo ) GFXDECODE_END -static MACHINE_CONFIG_START( gumbo, gumbo_state ) +static MACHINE_CONFIG_START( gumbo ) MCFG_CPU_ADD("maincpu", M68000, XTAL_14_31818MHz/2) MCFG_CPU_PROGRAM_MAP(gumbo_map) @@ -254,7 +254,7 @@ static MACHINE_CONFIG_START( gumbo, gumbo_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", XTAL_14_31818MHz/16, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_14_31818MHz/16, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) MACHINE_CONFIG_END @@ -397,10 +397,10 @@ ROM_START( dblpointd ) ROM_LOAD( "d15.bin", 0x40000, 0x40000, CRC(6b899a51) SHA1(04114ec9695caaac722800ac1a4ffb563ec433c9) ) ROM_END -GAME( 1994, gumbo, 0, gumbo, gumbo, driver_device, 0, ROT0, "Min Corp.", "Gumbo", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, mspuzzleg,gumbo, gumbo, gumbo, driver_device, 0, ROT0, "Min Corp.", "Miss Puzzle (Clone of Gumbo)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, msbingo, 0, mspuzzle, msbingo, driver_device, 0, ROT0, "Min Corp.", "Miss Bingo", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, mspuzzle, 0, mspuzzle, mspuzzle, driver_device, 0, ROT90, "Min Corp.", "Miss Puzzle", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, mspuzzlen,mspuzzle, mspuzzle, mspuzzle, driver_device, 0, ROT90, "Min Corp.", "Miss Puzzle (Nudes)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, dblpoint, 0, dblpoint, dblpoint, driver_device, 0, ROT0, "Min Corp.", "Double Point", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, dblpointd,dblpoint, dblpoint, dblpoint, driver_device, 0, ROT0, "bootleg? (Dong Bang Electron)", "Double Point (Dong Bang Electron, bootleg?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, gumbo, 0, gumbo, gumbo, gumbo_state, 0, ROT0, "Min Corp.", "Gumbo", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mspuzzleg,gumbo, gumbo, gumbo, gumbo_state, 0, ROT0, "Min Corp.", "Miss Puzzle (Clone of Gumbo)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, msbingo, 0, mspuzzle, msbingo, gumbo_state, 0, ROT0, "Min Corp.", "Miss Bingo", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mspuzzle, 0, mspuzzle, mspuzzle, gumbo_state, 0, ROT90, "Min Corp.", "Miss Puzzle", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mspuzzlen,mspuzzle, mspuzzle, mspuzzle, gumbo_state, 0, ROT90, "Min Corp.", "Miss Puzzle (Nudes)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, dblpoint, 0, dblpoint, dblpoint, gumbo_state, 0, ROT0, "Min Corp.", "Double Point", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, dblpointd,dblpoint, dblpoint, dblpoint, gumbo_state, 0, ROT0, "bootleg? (Dong Bang Electron)", "Double Point (Dong Bang Electron, bootleg?)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gunbustr.cpp b/src/mame/drivers/gunbustr.cpp index 5fa812e813f..2c6b8970702 100644 --- a/src/mame/drivers/gunbustr.cpp +++ b/src/mame/drivers/gunbustr.cpp @@ -36,7 +36,7 @@ Todo: - FLIPX support in taitoic.c is not quite correct - the Taito logo is wrong, + FLIPX support in the video chips is not quite correct - the Taito logo is wrong, and the floor in the Doom levels has horizontal scrolling where it shouldn't. No networked machine support @@ -69,7 +69,7 @@ void gunbustr_state::device_timer(emu_timer &timer, device_timer_id id, int para INTERRUPT_GEN_MEMBER(gunbustr_state::gunbustr_interrupt) { - timer_set(downcast(&device)->cycles_to_attotime(200000-500), TIMER_GUNBUSTR_INTERRUPT5); + m_interrupt5_timer->adjust(m_maincpu->cycles_to_attotime(200000-500)); device.execute().set_input_line(4, HOLD_LINE); } @@ -140,7 +140,7 @@ READ32_MEMBER(gunbustr_state::gunbustr_gun_r) WRITE32_MEMBER(gunbustr_state::gunbustr_gun_w) { /* 10000 cycle delay is arbitrary */ - timer_set(downcast(&space.device())->cycles_to_attotime(10000), TIMER_GUNBUSTR_INTERRUPT5); + m_interrupt5_timer->adjust(m_maincpu->cycles_to_attotime(10000)); } @@ -276,7 +276,7 @@ GFXDECODE_END MACHINE DRIVERS ***********************************************************/ -static MACHINE_CONFIG_START( gunbustr, gunbustr_state ) +static MACHINE_CONFIG_START( gunbustr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_16MHz) @@ -428,6 +428,8 @@ DRIVER_INIT_MEMBER(gunbustr_state,gunbustr) { /* Speedup handler */ m_maincpu->space(AS_PROGRAM).install_read_handler(0x203acc, 0x203acf, read32_delegate(FUNC(gunbustr_state::main_cycle_r),this)); + + m_interrupt5_timer = timer_alloc(TIMER_GUNBUSTR_INTERRUPT5); } DRIVER_INIT_MEMBER(gunbustr_state,gunbustrj) @@ -438,6 +440,6 @@ DRIVER_INIT_MEMBER(gunbustr_state,gunbustrj) m_coin_lockout = false; } -GAME( 1992, gunbustr, 0, gunbustr, gunbustr, gunbustr_state, gunbustr, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Gunbuster (World)", 0 ) -GAME( 1992, gunbustru, gunbustr, gunbustr, gunbustr, gunbustr_state, gunbustr, ORIENTATION_FLIP_X, "Taito America Corporation", "Gunbuster (US)", 0 ) -GAME( 1992, gunbustrj, gunbustr, gunbustr, gunbustr, gunbustr_state, gunbustrj,ORIENTATION_FLIP_X, "Taito Corporation", "Gunbuster (Japan)", 0 ) +GAME( 1992, gunbustr, 0, gunbustr, gunbustr, gunbustr_state, gunbustr, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Gunbuster (World)", 0 ) +GAME( 1992, gunbustru, gunbustr, gunbustr, gunbustr, gunbustr_state, gunbustr, ORIENTATION_FLIP_X, "Taito America Corporation", "Gunbuster (US)", 0 ) +GAME( 1992, gunbustrj, gunbustr, gunbustr, gunbustr, gunbustr_state, gunbustrj,ORIENTATION_FLIP_X, "Taito Corporation", "Gunbuster (Japan)", 0 ) diff --git a/src/mame/drivers/gundealr.cpp b/src/mame/drivers/gundealr.cpp index 957968f49f9..d8f8efb793d 100644 --- a/src/mame/drivers/gundealr.cpp +++ b/src/mame/drivers/gundealr.cpp @@ -414,7 +414,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(gundealr_state::gundealr_scanline) m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xcf); /* RST 10h */ } -static MACHINE_CONFIG_START( gundealr, gundealr_state ) +static MACHINE_CONFIG_START( gundealr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* 6 MHz verified for Yam! Yam!? */ @@ -649,11 +649,11 @@ ROM_END -GAME( 1990, gundealr, 0, gundealr, gundealr, driver_device, 0, ROT270, "Dooyong", "Gun Dealer", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, gundealra, gundealr, gundealr, gundealr, driver_device, 0, ROT270, "Dooyong", "Gun Dealer (alt card set)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, gundealrt, gundealr, gundealr, gundealt, driver_device, 0, ROT270, "Dooyong (Tecmo license)", "Gun Dealer (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, gundealrbl, gundealr, yamyam, gundealr, driver_device, 0, ROT270, "bootleg", "Gun Dealer (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, gundealr, 0, gundealr, gundealr, gundealr_state, 0, ROT270, "Dooyong", "Gun Dealer", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, gundealra, gundealr, gundealr, gundealr, gundealr_state, 0, ROT270, "Dooyong", "Gun Dealer (alt card set)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, gundealrt, gundealr, gundealr, gundealt, gundealr_state, 0, ROT270, "Dooyong (Tecmo license)", "Gun Dealer (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, gundealrbl, gundealr, yamyam, gundealr, gundealr_state, 0, ROT270, "bootleg", "Gun Dealer (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, yamyam, 0, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Yam! Yam!?", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, yamyamk, yamyam, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Yam! Yam!? (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, wiseguy, yamyam, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Wise Guy", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, yamyam, 0, yamyam, yamyam, gundealr_state, 0, ROT0, "Dooyong", "Yam! Yam!?", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, yamyamk, yamyam, yamyam, yamyam, gundealr_state, 0, ROT0, "Dooyong", "Yam! Yam!? (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, wiseguy, yamyam, yamyam, yamyam, gundealr_state, 0, ROT0, "Dooyong", "Wise Guy", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gunpey.cpp b/src/mame/drivers/gunpey.cpp index e9becf43084..46a0d91f5db 100644 --- a/src/mame/drivers/gunpey.cpp +++ b/src/mame/drivers/gunpey.cpp @@ -215,21 +215,21 @@ public: std::unique_ptr m_blit_buffer; uint16_t m_blit_ram[0x10]; uint8_t m_irq_cause, m_irq_mask; - DECLARE_WRITE8_MEMBER(gunpey_status_w); - DECLARE_READ8_MEMBER(gunpey_status_r); - DECLARE_READ8_MEMBER(gunpey_inputs_r); - DECLARE_WRITE8_MEMBER(gunpey_blitter_w); - DECLARE_WRITE8_MEMBER(gunpey_blitter_upper_w); - DECLARE_WRITE8_MEMBER(gunpey_blitter_upper2_w); - DECLARE_WRITE8_MEMBER(gunpey_output_w); - DECLARE_WRITE16_MEMBER(gunpey_vram_bank_w); - DECLARE_WRITE16_MEMBER(gunpey_vregs_addr_w); + DECLARE_WRITE8_MEMBER(status_w); + DECLARE_READ8_MEMBER(status_r); + DECLARE_READ8_MEMBER(inputs_r); + DECLARE_WRITE8_MEMBER(blitter_w); + DECLARE_WRITE8_MEMBER(blitter_upper_w); + DECLARE_WRITE8_MEMBER(blitter_upper2_w); + DECLARE_WRITE8_MEMBER(output_w); + DECLARE_WRITE16_MEMBER(vram_bank_w); + DECLARE_WRITE16_MEMBER(vregs_addr_w); DECLARE_DRIVER_INIT(gunpey); virtual void video_start() override; - uint32_t screen_update_gunpey(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_DEVICE_CALLBACK_MEMBER(gunpey_scanline); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TIMER_DEVICE_CALLBACK_MEMBER(scanline); TIMER_CALLBACK_MEMBER(blitter_end); - void gunpey_irq_check(uint8_t irq_type); + void irq_check(uint8_t irq_type); uint8_t draw_gfx(bitmap_ind16 &bitmap,const rectangle &cliprect,int count,uint8_t scene_gradient); uint16_t m_vram_bank; uint16_t m_vreg_addr; @@ -239,6 +239,8 @@ public: uint8_t* m_vram; + emu_timer *m_blitter_end_timer; + // work variables for the decompression int m_srcx; int m_srcxbase; @@ -261,7 +263,7 @@ public: void get_stream_next_byte(void); int get_stream_bit(void); - uint32_t gunpey_state_get_stream_bits(int bits); + uint32_t get_stream_bits(int bits); int write_dest_byte(uint8_t usedata); //uint16_t main_m_vram[0x800][0x800]; @@ -271,6 +273,8 @@ public: void gunpey_state::video_start() { m_blit_buffer = std::make_unique(512*512); + + m_blitter_end_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gunpey_state::blitter_end), this)); } uint8_t gunpey_state::draw_gfx(bitmap_ind16 &bitmap,const rectangle &cliprect,int count,uint8_t scene_gradient) @@ -547,7 +551,7 @@ uint8_t gunpey_state::draw_gfx(bitmap_ind16 &bitmap,const rectangle &cliprect,in return m_wram[count+0] & 0x80; } -uint32_t gunpey_state::screen_update_gunpey(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t gunpey_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { //uint16_t *blit_buffer = m_blit_buffer; uint16_t vram_bank = m_vram_bank & 0x7fff; @@ -596,7 +600,7 @@ uint32_t gunpey_state::screen_update_gunpey(screen_device &screen, bitmap_ind16 return 0; } -void gunpey_state::gunpey_irq_check(uint8_t irq_type) +void gunpey_state::irq_check(uint8_t irq_type) { m_irq_cause |= irq_type; @@ -606,22 +610,22 @@ void gunpey_state::gunpey_irq_check(uint8_t irq_type) m_maincpu->set_input_line_and_vector(0, CLEAR_LINE, 0x200/4); } -WRITE8_MEMBER(gunpey_state::gunpey_status_w) +WRITE8_MEMBER(gunpey_state::status_w) { if(offset == 1) { m_irq_cause &= ~data; - gunpey_irq_check(0); + irq_check(0); } if(offset == 0) { m_irq_mask = data; - gunpey_irq_check(0); + irq_check(0); } } -READ8_MEMBER(gunpey_state::gunpey_status_r) +READ8_MEMBER(gunpey_state::status_r) { if(offset == 1) return m_irq_cause; @@ -629,7 +633,7 @@ READ8_MEMBER(gunpey_state::gunpey_status_r) return m_irq_mask; } -READ8_MEMBER(gunpey_state::gunpey_inputs_r) +READ8_MEMBER(gunpey_state::inputs_r) { switch(offset+0x7f40) { @@ -645,7 +649,7 @@ READ8_MEMBER(gunpey_state::gunpey_inputs_r) TIMER_CALLBACK_MEMBER(gunpey_state::blitter_end) { - gunpey_irq_check(4); + irq_check(4); } void gunpey_state::get_stream_next_byte(void) @@ -686,7 +690,7 @@ int gunpey_state::get_stream_bit(void) return bit; } -uint32_t gunpey_state::gunpey_state_get_stream_bits(int bits) +uint32_t gunpey_state::get_stream_bits(int bits) { uint32_t output = 0; for (int i=0;icycles_to_attotime(m_xsize*m_ysize), timer_expired_delegate(FUNC(gunpey_state::blitter_end),this)); + m_blitter_end_timer->adjust(m_maincpu->cycles_to_attotime(m_xsize*m_ysize)); /* @@ -1254,20 +1258,20 @@ WRITE8_MEMBER(gunpey_state::gunpey_blitter_w) } } -WRITE8_MEMBER(gunpey_state::gunpey_blitter_upper_w) +WRITE8_MEMBER(gunpey_state::blitter_upper_w) { //printf("gunpey_blitter_upper_w %02x %02x\n", offset, data); } -WRITE8_MEMBER(gunpey_state::gunpey_blitter_upper2_w) +WRITE8_MEMBER(gunpey_state::blitter_upper2_w) { //printf("gunpey_blitter_upper2_w %02x %02x\n", offset, data); } -WRITE8_MEMBER(gunpey_state::gunpey_output_w) +WRITE8_MEMBER(gunpey_state::output_w) { //bit 0 is coin counter // popmessage("%02x",data); @@ -1275,12 +1279,12 @@ WRITE8_MEMBER(gunpey_state::gunpey_output_w) m_oki->set_rom_bank((data & 0x70) >> 4); } -WRITE16_MEMBER(gunpey_state::gunpey_vram_bank_w) +WRITE16_MEMBER(gunpey_state::vram_bank_w) { COMBINE_DATA(&m_vram_bank); } -WRITE16_MEMBER(gunpey_state::gunpey_vregs_addr_w) +WRITE16_MEMBER(gunpey_state::vregs_addr_w) { COMBINE_DATA(&m_vreg_addr); } @@ -1295,21 +1299,21 @@ static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 16, gunpey_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 16, gunpey_state ) - AM_RANGE(0x7f40, 0x7f45) AM_READ8(gunpey_inputs_r,0xffff) + AM_RANGE(0x7f40, 0x7f45) AM_READ8(inputs_r,0xffff) - AM_RANGE(0x7f48, 0x7f49) AM_WRITE8(gunpey_output_w,0x00ff) + AM_RANGE(0x7f48, 0x7f49) AM_WRITE8(output_w,0x00ff) AM_RANGE(0x7f80, 0x7f81) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xffff) AM_RANGE(0x7f88, 0x7f89) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x7fc8, 0x7fc9) AM_READWRITE8(gunpey_status_r, gunpey_status_w, 0xffff ) - AM_RANGE(0x7fd0, 0x7fdf) AM_WRITE8(gunpey_blitter_w, 0xffff ) - AM_RANGE(0x7fe0, 0x7fe5) AM_WRITE8(gunpey_blitter_upper_w, 0xffff ) - AM_RANGE(0x7ff0, 0x7ff5) AM_WRITE8(gunpey_blitter_upper2_w, 0xffff ) + AM_RANGE(0x7fc8, 0x7fc9) AM_READWRITE8(status_r, status_w, 0xffff ) + AM_RANGE(0x7fd0, 0x7fdf) AM_WRITE8(blitter_w, 0xffff ) + AM_RANGE(0x7fe0, 0x7fe5) AM_WRITE8(blitter_upper_w, 0xffff ) + AM_RANGE(0x7ff0, 0x7ff5) AM_WRITE8(blitter_upper2_w, 0xffff ) //AM_RANGE(0x7FF0, 0x7FF1) AM_RAM - AM_RANGE(0x7fec, 0x7fed) AM_WRITE(gunpey_vregs_addr_w) - AM_RANGE(0x7fee, 0x7fef) AM_WRITE(gunpey_vram_bank_w) + AM_RANGE(0x7fec, 0x7fed) AM_WRITE(vregs_addr_w) + AM_RANGE(0x7fee, 0x7fef) AM_WRITE(vram_bank_w) ADDRESS_MAP_END @@ -1406,14 +1410,14 @@ INPUT_PORTS_END 0x40 almost certainly vblank (reads inputs) 0x80 */ -TIMER_DEVICE_CALLBACK_MEMBER(gunpey_state::gunpey_scanline) +TIMER_DEVICE_CALLBACK_MEMBER(gunpey_state::scanline) { int scanline = param; if(scanline == 240) { //printf("frame\n"); - gunpey_irq_check(0x50); + irq_check(0x50); } } @@ -1421,7 +1425,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(gunpey_state::gunpey_scanline) -// this isn't a real decode as such, but the graphic data is all stored in pages 2048 bytes wide at varying BPP levelsl, some (BG data) compressed with what is likely a lossy scheme +// this isn't a real decode as such, but the graphic data is all stored in pages 2048 bytes wide at varying BPP levels, some (BG data) compressed with what is likely a lossy scheme // palette data is in here too, the blocks at the bottom right of all this? static GFXLAYOUT_RAW( gunpey, 2048, 1, 2048*8, 2048*8 ) @@ -1434,18 +1438,18 @@ GFXDECODE_END /***************************************************************************************/ -static MACHINE_CONFIG_START( gunpey, gunpey_state ) +static MACHINE_CONFIG_START( gunpey ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, 57242400 / 4) MCFG_CPU_PROGRAM_MAP(mem_map) MCFG_CPU_IO_MAP(io_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gunpey_state, gunpey_scanline, "screen", 0, 1) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gunpey_state, scanline, "screen", 0, 1) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(57242400/8, 442, 0, 320, 264, 0, 240) /* just to get ~60 Hz */ - MCFG_SCREEN_UPDATE_DRIVER(gunpey_state, screen_update_gunpey) + MCFG_SCREEN_UPDATE_DRIVER(gunpey_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette") @@ -1453,7 +1457,7 @@ static MACHINE_CONFIG_START( gunpey, gunpey_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker") - MCFG_OKIM6295_ADD("oki", XTAL_16_9344MHz / 8, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", XTAL_16_9344MHz / 8, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) @@ -1496,4 +1500,4 @@ DRIVER_INIT_MEMBER(gunpey_state,gunpey) // ... } -GAME( 2000, gunpey, 0, gunpey, gunpey, gunpey_state, gunpey, ROT0, "Banpresto", "Gunpey (Japan)",MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS) +GAME( 2000, gunpey, 0, gunpey, gunpey, gunpey_state, gunpey, ROT0, "Banpresto", "Gunpey (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/gunsmoke.cpp b/src/mame/drivers/gunsmoke.cpp index fc62ca64daf..b8a18cd3377 100644 --- a/src/mame/drivers/gunsmoke.cpp +++ b/src/mame/drivers/gunsmoke.cpp @@ -299,7 +299,7 @@ void gunsmoke_state::machine_reset() m_sprite3bank = 0; } -static MACHINE_CONFIG_START( gunsmoke, gunsmoke_state ) +static MACHINE_CONFIG_START( gunsmoke ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) // 4 MHz @@ -649,9 +649,9 @@ ROM_END // this information is not displayed onscreen -GAME( 1985, gunsmoke, 0, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom", "Gun.Smoke (World, 851115)", MACHINE_SUPPORTS_SAVE ) // GSE_03 -GAME( 1985, gunsmokeb, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "bootleg", "Gun.Smoke (World, 851115) (bootleg)", MACHINE_SUPPORTS_SAVE ) // based on above version, warning message patched out -GAME( 1985, gunsmokej, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom", "Gun.Smoke (Japan, 851115)", MACHINE_SUPPORTS_SAVE ) // GSJ_03 -GAME( 1986, gunsmokeu, gunsmoke, gunsmoke, gunsmokeu, driver_device, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 860408)", MACHINE_SUPPORTS_SAVE ) // GSA_03 -GAME( 1985, gunsmokeua, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 851115, set 1)", MACHINE_SUPPORTS_SAVE ) // GSR_03 (03A on the chip) -GAME( 1986, gunsmokeub, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 851115, set 2)", MACHINE_SUPPORTS_SAVE ) // GSR_03 +GAME( 1985, gunsmoke, 0, gunsmoke, gunsmoke, gunsmoke_state, 0, ROT270, "Capcom", "Gun.Smoke (World, 851115)", MACHINE_SUPPORTS_SAVE ) // GSE_03 +GAME( 1985, gunsmokeb, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, 0, ROT270, "bootleg", "Gun.Smoke (World, 851115) (bootleg)", MACHINE_SUPPORTS_SAVE ) // based on above version, warning message patched out +GAME( 1985, gunsmokej, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, 0, ROT270, "Capcom", "Gun.Smoke (Japan, 851115)", MACHINE_SUPPORTS_SAVE ) // GSJ_03 +GAME( 1986, gunsmokeu, gunsmoke, gunsmoke, gunsmokeu, gunsmoke_state, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 860408)", MACHINE_SUPPORTS_SAVE ) // GSA_03 +GAME( 1985, gunsmokeua, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 851115, set 1)", MACHINE_SUPPORTS_SAVE ) // GSR_03 (03A on the chip) +GAME( 1986, gunsmokeub, gunsmoke, gunsmoke, gunsmoke, gunsmoke_state, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 851115, set 2)", MACHINE_SUPPORTS_SAVE ) // GSR_03 diff --git a/src/mame/drivers/gyruss.cpp b/src/mame/drivers/gyruss.cpp index 9dee79b4581..27af1c3f08a 100644 --- a/src/mame/drivers/gyruss.cpp +++ b/src/mame/drivers/gyruss.cpp @@ -234,8 +234,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( audio_cpu2_io_map, AS_IO, 8, gyruss_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(gyruss_dac_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(gyruss_irq_clear_w) ADDRESS_MAP_END @@ -463,7 +461,7 @@ INTERRUPT_GEN_MEMBER(gyruss_state::slave_vblank_irq) device.execute().set_input_line(0, ASSERT_LINE); } -static MACHINE_CONFIG_START( gyruss, gyruss_state ) +static MACHINE_CONFIG_START( gyruss ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ @@ -481,6 +479,8 @@ static MACHINE_CONFIG_START( gyruss, gyruss_state ) MCFG_CPU_ADD("audio2", I8039, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(audio_cpu2_map) MCFG_CPU_IO_MAP(audio_cpu2_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(gyruss_state, gyruss_dac_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(gyruss_state, gyruss_irq_clear_w)) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) @@ -691,7 +691,7 @@ DRIVER_INIT_MEMBER(gyruss_state,gyruss) } -GAME( 1983, gyruss, 0, gyruss, gyruss, gyruss_state, gyruss, ROT90, "Konami", "Gyruss", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, gyruss, 0, gyruss, gyruss, gyruss_state, gyruss, ROT90, "Konami", "Gyruss", MACHINE_SUPPORTS_SAVE ) GAME( 1983, gyrussce, gyruss, gyruss, gyrussce, gyruss_state, gyruss, ROT90, "Konami (Centuri license)", "Gyruss (Centuri)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, gyrussb, gyruss, gyruss, gyruss, gyruss_state, gyruss, ROT90, "bootleg?", "Gyruss (bootleg?)", MACHINE_SUPPORTS_SAVE ) /* Supposed Taito NZ license, but (c) Konami */ -GAME( 1983, venus, gyruss, gyruss, gyruss, gyruss_state, gyruss, ROT90, "bootleg", "Venus (bootleg of Gyruss)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, gyrussb, gyruss, gyruss, gyruss, gyruss_state, gyruss, ROT90, "bootleg?", "Gyruss (bootleg?)", MACHINE_SUPPORTS_SAVE ) /* Supposed Taito NZ license, but (c) Konami */ +GAME( 1983, venus, gyruss, gyruss, gyruss, gyruss_state, gyruss, ROT90, "bootleg", "Venus (bootleg of Gyruss)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/h19.cpp b/src/mame/drivers/h19.cpp index e45d4d7049e..3f1ba78d62a 100644 --- a/src/mame/drivers/h19.cpp +++ b/src/mame/drivers/h19.cpp @@ -2,25 +2,22 @@ // copyright-holders:Robbbert, Mark Garlanger /*************************************************************************** - Heathkit H19 + Heathkit H19 - A smart terminal designed and manufactured by Heath Company. + A smart terminal designed and manufactured by Heath Company. - The keyboard consists of a 9x10 matrix connected to a MM5740AAC/N - mask-programmed keyboard controller. The output of this passes - through a rom. + The keyboard consists of a 9x10 matrix connected to a MM5740AAC/N + mask-programmed keyboard controller. The output of this passes + through a rom. - Input can also come from the serial port (a 8250). - Either device will signal an interrupt to the CPU when a key - is pressed/data is received. + Input can also come from the serial port (a 8250). + Either device will signal an interrupt to the CPU when a key + is pressed/data is received. - TODO: - - Finish connecting up the 8250 - - enable 8520 interrupts - - speed up emulation - - super19 version has the videoram at D800. This is not emulated. - However, a keyclick can be heard, to assure you it does in fact work. + TODO: + - speed up emulation + - update SW401 baud rate options for Watz ROM + - update SW401 & SW402 definitions for Super-19 ROM ****************************************************************************/ /*************************************************************************** @@ -65,6 +62,7 @@ Address Description #define H19_CLOCK (XTAL_12_288MHz / 6) #define MC6845_CLOCK (XTAL_12_288MHz /8) #define INS8250_CLOCK (XTAL_12_288MHz /4) + // Capacitor value in pF #define H19_KEY_DEBOUNCE_CAPACITOR 5000 #define MM5740_CLOCK (mm5740_device::calc_effective_clock_key_debounce(H19_KEY_DEBOUNCE_CAPACITOR)) @@ -74,7 +72,6 @@ Address Description #define KBDC_TAG "mm5740" - class h19_state : public driver_device { public: @@ -110,25 +107,26 @@ public: MC6845_UPDATE_ROW(crtc_update_row); private: - //uint8_t m_term_data; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void machine_reset() override; + required_device m_palette; - required_device m_maincpu; - required_device m_crtc; + required_device m_maincpu; + required_device m_crtc; required_device m_ace; - required_device m_beep; - required_shared_ptr m_p_videoram; - required_region_ptr m_p_chargen; - required_device m_mm5740; - required_memory_region m_kbdrom; - required_ioport m_kbspecial; - - uint8_t m_transchar; - bool m_strobe; + required_device m_beep; + required_shared_ptr m_p_videoram; + required_region_ptr m_p_chargen; + required_device m_mm5740; + required_memory_region m_kbdrom; + required_ioport m_kbspecial; + + uint8_t m_transchar; + bool m_strobe; + bool m_keyclickactive; + bool m_bellactive; + uint16_t translate_mm5740_b(uint16_t b); - bool m_keyclickactive; - bool m_bellactive; }; void h19_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) @@ -155,30 +153,30 @@ void h19_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo static ADDRESS_MAP_START(h19_mem, AS_PROGRAM, 8, h19_state) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x4100) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("videoram") + AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x2000) AM_ROM + AM_RANGE(0x4000, 0x4100) AM_MIRROR(0x3e00) AM_RAM + AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM AM_SHARE("videoram") ADDRESS_MAP_END static ADDRESS_MAP_START( h19_io, AS_IO, 8, h19_state) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x1F) AM_READ_PORT("SW401") - AM_RANGE(0x20, 0x3F) AM_READ_PORT("SW402") + AM_RANGE(0x00, 0x00) AM_MIRROR(0x1f) AM_READ_PORT("SW401") + AM_RANGE(0x20, 0x20) AM_MIRROR(0x1f) AM_READ_PORT("SW402") AM_RANGE(0x40, 0x47) AM_MIRROR(0x18) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w ) - AM_RANGE(0x60, 0x60) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x80, 0x9F) AM_READ(kbd_key_r) - AM_RANGE(0xA0, 0xBF) AM_READ(kbd_flags_r) - AM_RANGE(0xC0, 0xDF) AM_WRITE(h19_keyclick_w) - AM_RANGE(0xE0, 0xFF) AM_WRITE(h19_bell_w) + AM_RANGE(0x60, 0x60) AM_MIRROR(0x1E) AM_DEVWRITE("crtc", mc6845_device, address_w) + AM_RANGE(0x61, 0x61) AM_MIRROR(0x1E) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) + AM_RANGE(0x80, 0x80) AM_MIRROR(0x1f) AM_READ(kbd_key_r) + AM_RANGE(0xA0, 0xA0) AM_MIRROR(0x1f) AM_READ(kbd_flags_r) + AM_RANGE(0xC0, 0xC0) AM_MIRROR(0x1f) AM_WRITE(h19_keyclick_w) + AM_RANGE(0xE0, 0xE0) AM_MIRROR(0x1f) AM_WRITE(h19_bell_w) ADDRESS_MAP_END /* Input ports */ static INPUT_PORTS_START( h19 ) PORT_START("MODIFIERS") - // bit 0 connects to B8 of MM5740 - low if either shift key is + // bit 0 connects to B8 of MM5740 - low if either shift key is // bit 7 is low if a key is pressed PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CapsLock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Break") PORT_CODE(KEYCODE_PAUSE) @@ -273,7 +271,6 @@ static INPUT_PORTS_START( h19 ) PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Scroll") PORT_CODE(KEYCODE_LWIN) - PORT_START("X8") PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') @@ -286,7 +283,6 @@ static INPUT_PORTS_START( h19 ) PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) - PORT_START("X9") PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@') @@ -421,15 +417,13 @@ READ8_MEMBER(h19_state::kbd_key_r) READ8_MEMBER(h19_state::kbd_flags_r) { - uint8_t rv = 0; uint16_t modifiers = m_kbspecial->read(); - - rv = modifiers & 0xff; + uint8_t rv = modifiers & 0x7f; // check both shifts if (((modifiers & 0x020) == 0) || ((modifiers & 0x100) == 0)) { - rv |= 0x1; + rv |= KB_STATUS_SHIFT_KEYS_MASK; } // invert offline switch @@ -465,20 +459,16 @@ WRITE_LINE_MEMBER(h19_state::mm5740_data_ready_w) } } - MC6845_UPDATE_ROW( h19_state::crtc_update_row ) { const rgb_t *palette = m_palette->palette()->entry_list_raw(); - uint8_t chr,gfx; - uint16_t mem,x; uint32_t *p = &bitmap.pix32(y); - for (x = 0; x < x_count; x++) + for (uint16_t x = 0; x < x_count; x++) { - uint8_t inv=0; - if (x == cursor_x) inv=0xff; - mem = (ma + x) & 0x7ff; - chr = m_p_videoram[mem]; + uint8_t inv = (x == cursor_x) ? 0xff : 0; + + uint8_t chr = m_p_videoram[(ma + x) & 0x7ff]; if (chr & 0x80) { @@ -487,7 +477,7 @@ MC6845_UPDATE_ROW( h19_state::crtc_update_row ) } /* get pattern of pixels for that character scanline */ - gfx = m_p_chargen[(chr<<4) | ra] ^ inv; + uint8_t gfx = m_p_chargen[(chr<<4) | ra] ^ inv; /* Display a scanline of a character (8 pixels) */ *p++ = palette[BIT(gfx, 7)]; @@ -520,13 +510,14 @@ static GFXDECODE_START( h19 ) GFXDECODE_ENTRY( "chargen", 0x0000, h19_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( h19, h19_state ) +static MACHINE_CONFIG_START( h19 ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu",Z80, H19_CLOCK) // From schematics + MCFG_CPU_ADD("maincpu", Z80, H19_CLOCK) // From schematics MCFG_CPU_PROGRAM_MAP(h19_mem) MCFG_CPU_IO_MAP(h19_io) /* video hardware */ + // TODO: make configurable, Heath offered 3 different CRTs - White, Green, Amber. MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green()) MCFG_SCREEN_REFRESH_RATE(60) // TODO- this is adjustable by dipswitch. MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ @@ -539,12 +530,12 @@ static MACHINE_CONFIG_START( h19, h19_state ) MCFG_MC6845_ADD("crtc", MC6845, "screen", MC6845_CLOCK) MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) + MCFG_MC6845_CHAR_WIDTH(8) MCFG_MC6845_UPDATE_ROW_CB(h19_state, crtc_update_row) MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) // frame pulse MCFG_DEVICE_ADD("ins8250", INS8250, INS8250_CLOCK) - MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", 0)) // interrupt + MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(KBDC_TAG, MM5740, MM5740_CLOCK) MCFG_MM5740_MATRIX_X1(IOPORT("X1")) @@ -608,9 +599,10 @@ ROM_START( watz19 ) ROM_LOAD( "keybd.bin", 0x0000, 0x0800, CRC(58dc8217) SHA1(1b23705290bdf9fc6342065c6a528c04bff67b13)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, h19, 0, 0, h19, h19, driver_device, 0, "Heath Inc", "Heathkit H-19", 0 ) -/* TODO - verify the years for these third-party replacement ROMs. */ -COMP( 1982, super19, h19, 0, h19, h19, driver_device, 0, "Heath Inc", "Heathkit H-19 w/ Super-19 ROM", MACHINE_NOT_WORKING ) -COMP( 1982, watz19, h19, 0, h19, h19, driver_device, 0, "Heath Inc", "Heathkit H-19 w/ Watzman ROM", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1979, h19, 0, 0, h19, h19, h19_state, 0, "Heath Inc", "Heathkit H-19", 0 ) +//Super-19 ROM - ATG Systems, Inc - Adv in Sextant Issue 4, Winter 1983. With the magazine lead-time, likely released late 1982. +COMP( 1982, super19, h19, 0, h19, h19, h19_state, 0, "Heath Inc", "Heathkit H-19 w/ Super-19 ROM", 0 ) +// Watzman ROM - HUG p/n 885-1121, announced in REMark Issue 33, Oct. 1982 +COMP( 1982, watz19, h19, 0, h19, h19, h19_state, 0, "Heath Inc", "Heathkit H-19 w/ Watzman ROM", 0 ) diff --git a/src/mame/drivers/h8.cpp b/src/mame/drivers/h8.cpp index c9efaed1d60..470b8ca8bc1 100644 --- a/src/mame/drivers/h8.cpp +++ b/src/mame/drivers/h8.cpp @@ -242,7 +242,7 @@ the data is /INTE while the clock is /M1. If the system is in Single Instruction a int20 (output of 2nd flipflop) will occur after 4 M1 steps, to pause the running program. But, all of this can only occur if bit 5 of port F0 is low. */ - bool state = (data & I8085_STATUS_M1) ? 0 : 1; + bool state = (data & i8080_cpu_device::STATUS_M1) ? 0 : 1; bool c,a = (m_irq_ctl & 0x80) ? 1 : 0; if (m_irq_ctl & 2) @@ -307,7 +307,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(h8_state::h8_p) } } -static MACHINE_CONFIG_START( h8, h8_state ) +static MACHINE_CONFIG_START( h8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, H8_CLOCK) MCFG_CPU_PROGRAM_MAP(h8_mem) @@ -366,5 +366,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS, INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, h8, 0, 0, h8, h8, driver_device, 0, "Heath, Inc.", "Heathkit H8", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS, INIT COMPANY FULLNAME FLAGS */ +COMP( 1977, h8, 0, 0, h8, h8, h8_state, 0, "Heath, Inc.", "Heathkit H8", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/h89.cpp b/src/mame/drivers/h89.cpp index 3a9dabd68c8..99f71df9a83 100644 --- a/src/mame/drivers/h89.cpp +++ b/src/mame/drivers/h89.cpp @@ -177,7 +177,7 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( h89, h89_state ) +static MACHINE_CONFIG_START( h89 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_12_288MHz / 6) MCFG_CPU_PROGRAM_MAP(h89_mem) @@ -206,5 +206,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, h89, 0, 0, h89, h89, driver_device, 0, "Heath Inc", "Heathkit H89", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1979, h89, 0, 0, h89, h89, h89_state, 0, "Heath Inc", "Heathkit H89", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/halleys.cpp b/src/mame/drivers/halleys.cpp index 392cd9d0960..9b3e8152c86 100644 --- a/src/mame/drivers/halleys.cpp +++ b/src/mame/drivers/halleys.cpp @@ -1919,7 +1919,7 @@ void halleys_state::machine_reset() } -static MACHINE_CONFIG_START( halleys, halleys_state ) +static MACHINE_CONFIG_START( halleys ) MCFG_CPU_ADD("maincpu", M6809, XTAL_19_968MHz/12) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(halleys_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", halleys_state, halleys_scanline, "screen", 0, 1) @@ -2223,8 +2223,8 @@ DRIVER_INIT_MEMBER(halleys_state,halley87) //************************************************************************** // Game Definitions -GAME( 1984, benberob, 0, benberob, benberob, halleys_state, benberob, ROT0, "Taito", "Ben Bero Beh (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL ) -GAME( 1986, halleys, 0, halleys, halleys, halleys_state, halleys, ROT90, "Taito America Corporation (Coin-It license)", "Halley's Comet (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) -GAME( 1986, halleysc, halleys, halleys, halleys, halleys_state, halleys, ROT90, "Taito Corporation", "Halley's Comet (Japan, Newer)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) -GAME( 1986, halleycj, halleys, halleys, halleys, halleys_state, halleys, ROT90, "Taito Corporation", "Halley's Comet (Japan, Older)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) -GAME( 1986, halley87, halleys, halleys, halleys, halleys_state, halley87, ROT90, "Taito Corporation", "Halley's Comet '87", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) +GAME( 1984, benberob, 0, benberob, benberob, halleys_state, benberob, ROT0, "Taito", "Ben Bero Beh (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL ) +GAME( 1986, halleys, 0, halleys, halleys, halleys_state, halleys, ROT90, "Taito America Corporation (Coin-It license)", "Halley's Comet (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) +GAME( 1986, halleysc, halleys, halleys, halleys, halleys_state, halleys, ROT90, "Taito Corporation", "Halley's Comet (Japan, Newer)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) +GAME( 1986, halleycj, halleys, halleys, halleys, halleys_state, halleys, ROT90, "Taito Corporation", "Halley's Comet (Japan, Older)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) +GAME( 1986, halley87, halleys, halleys, halleys, halleys_state, halley87, ROT90, "Taito Corporation", "Halley's Comet '87", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) diff --git a/src/mame/drivers/hanaawas.cpp b/src/mame/drivers/hanaawas.cpp index 9ca0ec9bb0e..cf0caebe318 100644 --- a/src/mame/drivers/hanaawas.cpp +++ b/src/mame/drivers/hanaawas.cpp @@ -213,7 +213,7 @@ void hanaawas_state::machine_reset() m_mux = 0; } -static MACHINE_CONFIG_START( hanaawas, hanaawas_state ) +static MACHINE_CONFIG_START( hanaawas ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,18432000/6) /* 3.072 MHz ??? */ @@ -272,4 +272,4 @@ ROM_START( hanaawas ) ROM_END -GAME( 1982, hanaawas, 0, hanaawas, hanaawas, driver_device, 0, ROT0, "Seta Kikaku, Ltd.", "Hana Awase", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, hanaawas, 0, hanaawas, hanaawas, hanaawas_state, 0, ROT0, "Seta Kikaku, Ltd.", "Hana Awase", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hankin.cpp b/src/mame/drivers/hankin.cpp index 10c46d70915..7a4d7466d87 100644 --- a/src/mame/drivers/hankin.cpp +++ b/src/mame/drivers/hankin.cpp @@ -490,7 +490,7 @@ WRITE_LINE_MEMBER( hankin_state::ic2_cb2_w ) m_ic2_cb2 = state; } -static MACHINE_CONFIG_START( hankin, hankin_state ) +static MACHINE_CONFIG_START( hankin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6802, 3276800) MCFG_CPU_PROGRAM_MAP(hankin_map) @@ -602,8 +602,8 @@ ROM_START(empsback) ROM_END -GAME(1978, fjholden, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "FJ Holden", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, orbit1, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "Orbit 1", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1980, shark, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "Shark", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1980, howzat, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "Howzat!", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1981, empsback, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "The Empire Strike Back", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, fjholden, 0, hankin, hankin, hankin_state, 0, ROT0, "Hankin", "FJ Holden", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, orbit1, 0, hankin, hankin, hankin_state, 0, ROT0, "Hankin", "Orbit 1", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1980, shark, 0, hankin, hankin, hankin_state, 0, ROT0, "Hankin", "Shark", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1980, howzat, 0, hankin, hankin, hankin_state, 0, ROT0, "Hankin", "Howzat!", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1981, empsback, 0, hankin, hankin, hankin_state, 0, ROT0, "Hankin", "The Empire Strike Back", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/hapyfish.cpp b/src/mame/drivers/hapyfish.cpp index cd41f22da9f..d109e6154d0 100644 --- a/src/mame/drivers/hapyfish.cpp +++ b/src/mame/drivers/hapyfish.cpp @@ -53,7 +53,7 @@ void hapyfish_state::video_start() -static MACHINE_CONFIG_START( hapyfish, hapyfish_state ) +static MACHINE_CONFIG_START( hapyfish ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM9, 20000000) // ?? ARM baesd CPU @@ -82,5 +82,4 @@ ROM_START( hapyfsh2 ) ROM_LOAD( "flash.u28", 0x00000000, 0x84000000, CRC(f00a25cd) SHA1(9c33f8e26b84cea957d9c37fb83a686b948c6834) ) ROM_END - GAME( 201?, hapyfsh2, 0, hapyfish, hapyfish, driver_device, 0, ROT0, "bootleg", "Happy Fish (V2 PCB, 302-in-1)", MACHINE_IS_SKELETON ) - +GAME( 201?, hapyfsh2, 0, hapyfish, hapyfish, hapyfish_state, 0, ROT0, "bootleg", "Happy Fish (V2 PCB, 302-in-1)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/harddriv.cpp b/src/mame/drivers/harddriv.cpp index db8f68209b0..11b9652fc94 100644 --- a/src/mame/drivers/harddriv.cpp +++ b/src/mame/drivers/harddriv.cpp @@ -340,8 +340,8 @@ Notes: * *************************************/ -harddriv_state::harddriv_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +harddriv_state::harddriv_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), /* device_video_interface(mconfig, *this, false), */ m_maincpu(*this, "maincpu"), m_gsp(*this, "gsp"), @@ -1635,7 +1635,7 @@ static MACHINE_CONFIG_FRAGMENT( harddriv ) MCFG_FRAGMENT_ADD( driver_msp ) /* basic machine hardware */ /* original driver board with MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ - MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ + MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD, 0) /* driver sound board */ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( harddrivc ) @@ -1643,7 +1643,7 @@ static MACHINE_CONFIG_FRAGMENT( harddrivc ) /* basic machine hardware */ /* multisync board with MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ - MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ + MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD, 0) /* driver sound board */ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( racedriv ) @@ -1652,7 +1652,7 @@ static MACHINE_CONFIG_FRAGMENT( racedriv ) /* basic machine hardware */ /* original driver board without MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ MCFG_FRAGMENT_ADD( dsk ) /* DSK board */ - MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ + MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD, 0) /* driver sound board */ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( racedrivc ) @@ -1662,7 +1662,7 @@ static MACHINE_CONFIG_FRAGMENT( racedrivc ) /* basic machine hardware */ /* multisync board without MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ MCFG_FRAGMENT_ADD( dsk ) /* DSK board */ - MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ + MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD, 0) /* driver sound board */ MACHINE_CONFIG_END @@ -1673,7 +1673,7 @@ static MACHINE_CONFIG_FRAGMENT( racedrivc_panorama_side ) /* basic machine hardware */ /* multisync board without MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ // MCFG_FRAGMENT_ADD( dsk ) /* DSK board */ -// MCFG_DEVICE_ADD("sound_board", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ +// MCFG_DEVICE_ADD("sound_board", HARDDRIV_SOUND_BOARD, 0) /* driver sound board */ MACHINE_CONFIG_END WRITE_LINE_MEMBER(harddriv_state::sound_int_write_line) @@ -1749,10 +1749,10 @@ static MACHINE_CONFIG_FRAGMENT( hdrivair ) MCFG_FRAGMENT_ADD( dsk2 ) /* DSK II board */ MACHINE_CONFIG_END -const device_type HARDDRIV_BOARD_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(HARDDRIV_BOARD, harddriv_board_device_state, "harddriv_board", "Hard Drivin' Board Device") harddriv_board_device_state::harddriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : harddriv_state(mconfig, HARDDRIV_BOARD_DEVICE, "Hard Drivin' Board Device", tag, owner, clock, "harddriv_board_device", __FILE__) + : harddriv_state(mconfig, HARDDRIV_BOARD, tag, owner, clock) { } @@ -1775,10 +1775,10 @@ void harddrivc_board_device_state::device_start() harddriv_state::device_start(); } -const device_type HARDDRIVC_BOARD_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(HARDDRIVC_BOARD, harddrivc_board_device_state, "harddrivc_board", "Hard Drivin' C Board Device") harddrivc_board_device_state::harddrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : harddriv_state(mconfig, HARDDRIVC_BOARD_DEVICE, "Hard Drivin' C Board Device", tag, owner, clock, "harddrivc_board_device", __FILE__) + : harddriv_state(mconfig, HARDDRIVC_BOARD, tag, owner, clock) { } @@ -1802,21 +1802,21 @@ void racedrivb1_board_device_state::device_start() harddriv_state::device_start(); } -const device_type RACEDRIV_BOARD_DEVICE = device_creator; -const device_type RACEDRIVB1_BOARD_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(RACEDRIV_BOARD, racedriv_board_device_state, "racedriv_board", "Race Drivin' Board Device") +DEFINE_DEVICE_TYPE(RACEDRIVB1_BOARD, racedrivb1_board_device_state, "racedrivb1_board", "Race Drivin' B1 Board Device") racedriv_board_device_state::racedriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : harddriv_state(mconfig, RACEDRIV_BOARD_DEVICE, "Race Drivin' Board Device", tag, owner, clock, "racedriv_board_device", __FILE__) + : racedriv_board_device_state(mconfig, RACEDRIV_BOARD, tag, owner, clock) { } -racedriv_board_device_state::racedriv_board_device_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : harddriv_state(mconfig, type, name, tag, owner, clock, shortname, source) +racedriv_board_device_state::racedriv_board_device_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : harddriv_state(mconfig, type, tag, owner, clock) { } racedrivb1_board_device_state::racedrivb1_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : racedriv_board_device_state(mconfig, RACEDRIVB1_BOARD_DEVICE, "Race Drivin' B1 Board Device", tag, owner, clock, "racedrivb1_board_device", __FILE__) + : racedriv_board_device_state(mconfig, RACEDRIVB1_BOARD, tag, owner, clock) { } @@ -1848,27 +1848,27 @@ void racedrivc_panorama_side_board_device_state::device_start() -const device_type RACEDRIVC_BOARD_DEVICE = device_creator; -const device_type RACEDRIVC1_BOARD_DEVICE = device_creator; -const device_type RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(RACEDRIVC_BOARD, racedrivc_board_device_state, "racedrivc_board", "Race Drivin' C Board Device") +DEFINE_DEVICE_TYPE(RACEDRIVC1_BOARD, racedrivc1_board_device_state, "racedrivc1_board", "Race Drivin' C1 Board Device") +DEFINE_DEVICE_TYPE(RACEDRIVC_PANORAMA_SIDE_BOARD, racedrivc_panorama_side_board_device_state, "racedrivc_panorama_side_board", "Race Drivin' C Panorama Board Device") racedrivc_board_device_state::racedrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : harddriv_state(mconfig, RACEDRIVC_BOARD_DEVICE, "Race Drivin' C Board Device", tag, owner, clock, "racedrivc_board_device", __FILE__) + : racedrivc_board_device_state(mconfig, RACEDRIVC_BOARD, tag, owner, clock) { } -racedrivc_board_device_state::racedrivc_board_device_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : harddriv_state(mconfig, type, name, tag, owner, clock, shortname, source) +racedrivc_board_device_state::racedrivc_board_device_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : harddriv_state(mconfig, type, tag, owner, clock) { } racedrivc1_board_device_state::racedrivc1_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : racedrivc_board_device_state(mconfig, RACEDRIVC1_BOARD_DEVICE, "Race Drivin' C1 Board Device", tag, owner, clock, "racedrivc1_board_device", __FILE__) + : racedrivc_board_device_state(mconfig, RACEDRIVC1_BOARD, tag, owner, clock) { } racedrivc_panorama_side_board_device_state::racedrivc_panorama_side_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : racedrivc_board_device_state(mconfig, RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE, "Race Drivin' C Panorama Board Device", tag, owner, clock, "racedrivc_panorama_side_board_device", __FILE__) + : racedrivc_board_device_state(mconfig, RACEDRIVC_PANORAMA_SIDE_BOARD, tag, owner, clock) { } @@ -1891,10 +1891,10 @@ void stunrun_board_device_state::device_start() harddriv_state::device_start(); } -const device_type STUNRUN_BOARD_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(STUNRUN_BOARD, stunrun_board_device_state, "stunrun_board", "Stun Runner Board Device") stunrun_board_device_state::stunrun_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : harddriv_state(mconfig, STUNRUN_BOARD_DEVICE, "Stun Runner Board Device", tag, owner, clock, "stunrun_board_device", __FILE__) + : harddriv_state(mconfig, STUNRUN_BOARD, tag, owner, clock) { } @@ -1923,27 +1923,27 @@ void steeltalp_board_device_state::device_start() harddriv_state::device_start(); } -const device_type STEELTAL_BOARD_DEVICE = device_creator; -const device_type STEELTAL1_BOARD_DEVICE = device_creator; -const device_type STEELTALP_BOARD_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(STEELTAL_BOARD, steeltal_board_device_state, "steeltal_board", "Steel Talons Board Device") +DEFINE_DEVICE_TYPE(STEELTAL1_BOARD, steeltal1_board_device_state, "steeltal1_board", "Steel Talons 1 Board Device") +DEFINE_DEVICE_TYPE(STEELTALP_BOARD, steeltalp_board_device_state, "steeltalp_board", "Steel Talons P Board Device") steeltal_board_device_state::steeltal_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : harddriv_state(mconfig, STEELTAL_BOARD_DEVICE, "Steel Talons Board Device", tag, owner, clock, "steeltal_board_device", __FILE__) + : steeltal_board_device_state(mconfig, STEELTAL_BOARD, tag, owner, clock) { } -steeltal_board_device_state::steeltal_board_device_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : harddriv_state(mconfig, type, name, tag, owner, clock, shortname, source) +steeltal_board_device_state::steeltal_board_device_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : harddriv_state(mconfig, type, tag, owner, clock) { } steeltal1_board_device_state::steeltal1_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : steeltal_board_device_state(mconfig, STEELTAL1_BOARD_DEVICE, "Steel Talons 1 Board Device", tag, owner, clock, "steeltal1_board_device", __FILE__) + : steeltal_board_device_state(mconfig, STEELTAL1_BOARD, tag, owner, clock) { } steeltalp_board_device_state::steeltalp_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : steeltal_board_device_state(mconfig, STEELTALP_BOARD_DEVICE, "Steel Talons P Board Device", tag, owner, clock, "steeltalp_board_device", __FILE__) + : steeltal_board_device_state(mconfig, STEELTALP_BOARD, tag, owner, clock) { } @@ -1960,10 +1960,10 @@ void strtdriv_board_device_state::device_start() harddriv_state::device_start(); } -const device_type STRTDRIV_BOARD_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(STRTDRIV_BOARD, strtdriv_board_device_state, "strtdriv_board", "Street Drivin' Board Device") strtdriv_board_device_state::strtdriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : harddriv_state(mconfig, STRTDRIV_BOARD_DEVICE, "Street Drivin' Board Device", tag, owner, clock, "strtdriv_board_device", __FILE__) + : harddriv_state(mconfig, STRTDRIV_BOARD, tag, owner, clock) { } @@ -1986,21 +1986,21 @@ void hdrivairp_board_device_state::device_start() harddriv_state::device_start(); } -const device_type HDRIVAIR_BOARD_DEVICE = device_creator; -const device_type HDRIVAIRP_BOARD_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(HDRIVAIR_BOARD, hdrivair_board_device_state, "hdrivair_board", "Hard Drivin' Airborne Board Device") +DEFINE_DEVICE_TYPE(HDRIVAIRP_BOARD, hdrivairp_board_device_state, "hdrivairp_board", "Hard Drivin' Airborne P Board Device") hdrivair_board_device_state::hdrivair_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : harddriv_state(mconfig, HDRIVAIR_BOARD_DEVICE, "Hard Drivin' Airborne Board Device", tag, owner, clock, "hdrivair_board_device", __FILE__) + : hdrivair_board_device_state(mconfig, HDRIVAIR_BOARD, tag, owner, clock) { } -hdrivair_board_device_state::hdrivair_board_device_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : harddriv_state(mconfig, type, name, tag, owner, clock, shortname, source) +hdrivair_board_device_state::hdrivair_board_device_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : harddriv_state(mconfig, type, tag, owner, clock) { } hdrivairp_board_device_state::hdrivairp_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : hdrivair_board_device_state(mconfig, HDRIVAIRP_BOARD_DEVICE, "Hard Drivin' Airborne P Board Device", tag, owner, clock, "hrdrvairp_board_device", __FILE__) + : hdrivair_board_device_state(mconfig, HDRIVAIRP_BOARD, tag, owner, clock) { } @@ -2011,56 +2011,56 @@ machine_config_constructor hdrivair_board_device_state::device_mconfig_additions -static MACHINE_CONFIG_START( harddriv_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", HARDDRIV_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( harddriv_machine ) + MCFG_DEVICE_ADD("mainpcb", HARDDRIV_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( harddrivc_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", HARDDRIVC_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( harddrivc_machine ) + MCFG_DEVICE_ADD("mainpcb", HARDDRIVC_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( racedriv_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", RACEDRIV_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( racedriv_machine ) + MCFG_DEVICE_ADD("mainpcb", RACEDRIV_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( racedrivb1_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", RACEDRIVB1_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( racedrivb1_machine ) + MCFG_DEVICE_ADD("mainpcb", RACEDRIVB1_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( racedrivc_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", RACEDRIVC_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( racedrivc_machine ) + MCFG_DEVICE_ADD("mainpcb", RACEDRIVC_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( racedrivc1_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", RACEDRIVC1_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( racedrivc1_machine ) + MCFG_DEVICE_ADD("mainpcb", RACEDRIVC1_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( stunrun_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", STUNRUN_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( stunrun_machine ) + MCFG_DEVICE_ADD("mainpcb", STUNRUN_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( strtdriv_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", STRTDRIV_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( strtdriv_machine ) + MCFG_DEVICE_ADD("mainpcb", STRTDRIV_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hdrivair_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", HDRIVAIR_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( hdrivair_machine ) + MCFG_DEVICE_ADD("mainpcb", HDRIVAIR_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hdrivairp_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", HDRIVAIRP_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( hdrivairp_machine ) + MCFG_DEVICE_ADD("mainpcb", HDRIVAIRP_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( steeltal_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", STEELTAL_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( steeltal_machine ) + MCFG_DEVICE_ADD("mainpcb", STEELTAL_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( steeltal1_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", STEELTAL1_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( steeltal1_machine ) + MCFG_DEVICE_ADD("mainpcb", STEELTAL1_BOARD, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( steeltalp_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", STEELTALP_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( steeltalp_machine ) + MCFG_DEVICE_ADD("mainpcb", STEELTALP_BOARD, 0) MACHINE_CONFIG_END WRITE_LINE_MEMBER(harddriv_new_state::tx_a) @@ -2070,10 +2070,10 @@ WRITE_LINE_MEMBER(harddriv_new_state::tx_a) m_rightpcb->get_duart()->rx_a_w(state); } -static MACHINE_CONFIG_START( racedriv_panorama_machine, harddriv_new_state ) - MCFG_DEVICE_ADD("mainpcb", RACEDRIV_BOARD_DEVICE, 0) - MCFG_DEVICE_ADD("leftpcb", RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE, 0) - MCFG_DEVICE_ADD("rightpcb", RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE, 0) +static MACHINE_CONFIG_START( racedriv_panorama_machine ) + MCFG_DEVICE_ADD("mainpcb", RACEDRIV_BOARD, 0) + MCFG_DEVICE_ADD("leftpcb", RACEDRIVC_PANORAMA_SIDE_BOARD, 0) + MCFG_DEVICE_ADD("rightpcb", RACEDRIVC_PANORAMA_SIDE_BOARD, 0) // MCFG_QUANTUM_TIME(attotime::from_hz(100000)) MCFG_DEVICE_MODIFY("mainpcb:duartn68681") @@ -5240,64 +5240,64 @@ void harddriv_state::init_hdrivairp(void) * *************************************/ -GAME( 1988, harddriv, 0, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 7)", 0 ) -GAME( 1988, harddrivb, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 7)", 0 ) -GAME( 1988, harddrivg, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 7)", 0 ) -GAME( 1988, harddrivj, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 7)", 0 ) -GAME( 1988, harddrivb6, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 6)", 0 ) -GAME( 1988, harddrivj6, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 6)", 0 ) -GAME( 1988, harddrivb5, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 5)", 0 ) -GAME( 1988, harddrivg4, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 4)", 0 ) -GAME( 1988, harddriv3, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 3)", 0 ) -GAME( 1988, harddriv2, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 2)", 0 ) -GAME( 1988, harddriv1, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 1)", 0 ) - -GAME( 1990, harddrivc, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 2)", 0 ) -GAME( 1990, harddrivcg, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, German, rev 2)", 0 ) -GAME( 1990, harddrivcb, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, British, rev 2)", 0 ) -GAME( 1990, harddrivc1, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 1)", 0 ) - -GAME( 1989, stunrun, 0, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 6)", 0 ) -GAME( 1989, stunrunj, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 7, Japan)", 0 ) -GAME( 1989, stunrun5, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5)", 0 ) -GAME( 1989, stunrune, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5, Europe)", 0 ) -GAME( 1989, stunrun4, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 4)", 0 ) -GAME( 1989, stunrun3, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3)", 0 ) -GAME( 1989, stunrun3e, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3, Europe)", 0 ) -GAME( 1989, stunrun2, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2)", 0 ) -GAME( 1989, stunrun2e, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2, Europe)", 0 ) -GAME( 1989, stunrun0, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 0)", 0 ) -GAME( 1989, stunrunp, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (upright prototype)", 0 ) - -GAME( 1990, racedriv, 0, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 5)", 0 ) -GAME( 1990, racedrivb, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 5)", 0 ) -GAME( 1990, racedrivg, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 5)", 0 ) -GAME( 1990, racedriv4, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 4)", 0 ) -GAME( 1990, racedrivb4, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 4)", 0 ) -GAME( 1990, racedrivg4, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 4)", 0 ) -GAME( 1990, racedriv3, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 3)", 0 ) -GAME( 1990, racedriv2, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 2)", 0 ) -GAME( 1990, racedriv1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 1)", 0 ) -GAME( 1990, racedrivb1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 1)", 0 ) -GAME( 1990, racedrivg1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 2)", 0 ) - -GAME( 1990, racedrivc, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 5)", 0 ) -GAME( 1990, racedrivcb, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 5)", 0 ) -GAME( 1990, racedrivcg, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 5)", 0 ) -GAME( 1990, racedrivc4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 4)", 0 ) -GAME( 1990, racedrivcb4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 4)", 0 ) -GAME( 1990, racedrivcg4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 4)", 0 ) -GAME( 1990, racedrivc2, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 ) -GAME( 1990, racedrivc1, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 ) - -GAMEL( 1990, racedrivpan, racedriv, racedriv_panorama_machine, racedriv_pan, driver_device, 0, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", 0, layout_racedrivpan ) - -GAME( 1991, steeltal, 0, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 ) -GAME( 1991, steeltalg, steeltal, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 ) -GAME( 1991, steeltal1, steeltal, steeltal1_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (rev 1)", 0 ) -GAME( 1991, steeltalp, steeltal, steeltalp_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (prototype)", MACHINE_NOT_WORKING ) - -GAME( 1993, strtdriv, 0, strtdriv_machine, strtdriv, driver_device, 0, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 ) - -GAME( 1993, hdrivair, 0, hdrivair_machine, hdrivair, driver_device, 0, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", MACHINE_IMPERFECT_SOUND ) -GAME( 1993, hdrivairp, hdrivair, hdrivairp_machine, hdrivair, driver_device, 0,ROT0, "Atari Games", "Hard Drivin's Airborne (prototype, early rev)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1988, harddriv, 0, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 7)", 0 ) +GAME( 1988, harddrivb, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 7)", 0 ) +GAME( 1988, harddrivg, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 7)", 0 ) +GAME( 1988, harddrivj, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 7)", 0 ) +GAME( 1988, harddrivb6, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 6)", 0 ) +GAME( 1988, harddrivj6, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 6)", 0 ) +GAME( 1988, harddrivb5, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 5)", 0 ) +GAME( 1988, harddrivg4, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 4)", 0 ) +GAME( 1988, harddriv3, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 3)", 0 ) +GAME( 1988, harddriv2, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 2)", 0 ) +GAME( 1988, harddriv1, harddriv, harddriv_machine, harddriv, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 1)", 0 ) + +GAME( 1990, harddrivc, harddriv, harddrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 2)", 0 ) +GAME( 1990, harddrivcg, harddriv, harddrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (compact, German, rev 2)", 0 ) +GAME( 1990, harddrivcb, harddriv, harddrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (compact, British, rev 2)", 0 ) +GAME( 1990, harddrivc1, harddriv, harddrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 1)", 0 ) + +GAME( 1989, stunrun, 0, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 6)", 0 ) +GAME( 1989, stunrunj, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 7, Japan)", 0 ) +GAME( 1989, stunrun5, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5)", 0 ) +GAME( 1989, stunrune, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5, Europe)", 0 ) +GAME( 1989, stunrun4, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 4)", 0 ) +GAME( 1989, stunrun3, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3)", 0 ) +GAME( 1989, stunrun3e, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3, Europe)", 0 ) +GAME( 1989, stunrun2, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2)", 0 ) +GAME( 1989, stunrun2e, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2, Europe)", 0 ) +GAME( 1989, stunrun0, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 0)", 0 ) +GAME( 1989, stunrunp, stunrun, stunrun_machine, stunrun, harddriv_new_state, 0, ROT0, "Atari Games", "S.T.U.N. Runner (upright prototype)", 0 ) + +GAME( 1990, racedriv, 0, racedriv_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 5)", 0 ) +GAME( 1990, racedrivb, racedriv, racedriv_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 5)", 0 ) +GAME( 1990, racedrivg, racedriv, racedriv_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 5)", 0 ) +GAME( 1990, racedriv4, racedriv, racedriv_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 4)", 0 ) +GAME( 1990, racedrivb4, racedriv, racedriv_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 4)", 0 ) +GAME( 1990, racedrivg4, racedriv, racedriv_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 4)", 0 ) +GAME( 1990, racedriv3, racedriv, racedriv_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 3)", 0 ) +GAME( 1990, racedriv2, racedriv, racedriv_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 2)", 0 ) +GAME( 1990, racedriv1, racedriv, racedrivb1_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 1)", 0 ) +GAME( 1990, racedrivb1, racedriv, racedrivb1_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 1)", 0 ) +GAME( 1990, racedrivg1, racedriv, racedrivb1_machine, racedriv, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 2)", 0 ) + +GAME( 1990, racedrivc, racedriv, racedrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 5)", 0 ) +GAME( 1990, racedrivcb, racedriv, racedrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 5)", 0 ) +GAME( 1990, racedrivcg, racedriv, racedrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 5)", 0 ) +GAME( 1990, racedrivc4, racedriv, racedrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 4)", 0 ) +GAME( 1990, racedrivcb4, racedriv, racedrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 4)", 0 ) +GAME( 1990, racedrivcg4, racedriv, racedrivc_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 4)", 0 ) +GAME( 1990, racedrivc2, racedriv, racedrivc1_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 ) +GAME( 1990, racedrivc1, racedriv, racedrivc1_machine, racedrivc, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 ) + +GAMEL( 1990, racedrivpan, racedriv, racedriv_panorama_machine, racedriv_pan, harddriv_new_state, 0, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", 0, layout_racedrivpan ) + +GAME( 1991, steeltal, 0, steeltal_machine, steeltal, harddriv_new_state, 0, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 ) +GAME( 1991, steeltalg, steeltal, steeltal_machine, steeltal, harddriv_new_state, 0, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 ) +GAME( 1991, steeltal1, steeltal, steeltal1_machine, steeltal, harddriv_new_state, 0, ROT0, "Atari Games", "Steel Talons (rev 1)", 0 ) +GAME( 1991, steeltalp, steeltal, steeltalp_machine, steeltal, harddriv_new_state, 0, ROT0, "Atari Games", "Steel Talons (prototype)", MACHINE_NOT_WORKING ) + +GAME( 1993, strtdriv, 0, strtdriv_machine, strtdriv, harddriv_new_state, 0, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 ) + +GAME( 1993, hdrivair, 0, hdrivair_machine, hdrivair, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", MACHINE_IMPERFECT_SOUND ) +GAME( 1993, hdrivairp, hdrivair, hdrivairp_machine, hdrivair, harddriv_new_state, 0, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype, early rev)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/harriet.cpp b/src/mame/drivers/harriet.cpp index b3d9dec6a74..5fd82f1a3ac 100644 --- a/src/mame/drivers/harriet.cpp +++ b/src/mame/drivers/harriet.cpp @@ -29,29 +29,30 @@ public: { } - // devices - required_device m_maincpu; - required_device m_terminal; - // screen updates uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint8_t m_teletype_data; - uint8_t m_teletype_status; - DECLARE_READ8_MEMBER(unk_r); DECLARE_WRITE8_MEMBER(unk_w); DECLARE_WRITE8_MEMBER(serial_w); DECLARE_READ8_MEMBER(unk2_r); DECLARE_READ8_MEMBER(unk3_r); DECLARE_READ8_MEMBER(keyboard_status_r); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); + protected: // driver_device overrides virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; + + // devices + required_device m_maincpu; + required_device m_terminal; + + uint8_t m_teletype_data; + uint8_t m_teletype_status; }; void harriet_state::video_start() @@ -177,7 +178,7 @@ static INPUT_PORTS_START( harriet ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END -WRITE8_MEMBER( harriet_state::kbd_put ) +void harriet_state::kbd_put(u8 data) { m_teletype_data = data; m_teletype_status |= 0x80; @@ -192,7 +193,7 @@ void harriet_state::machine_reset() } -static MACHINE_CONFIG_START( harriet, harriet_state ) +static MACHINE_CONFIG_START( harriet ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68010,XTAL_8MHz) // TODO: clock @@ -200,7 +201,7 @@ static MACHINE_CONFIG_START( harriet, harriet_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(harriet_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(harriet_state, kbd_put)) MCFG_PALETTE_ADD("palette", 8) @@ -223,4 +224,4 @@ ROM_START( harriet ) ROM_LOAD16_BYTE( "harriet 36-74c.tdb v5.01 hibyte 2a0c.bin", 0x0000, 0x4000, CRC(a61f441d) SHA1(76af6eddd5c042f1b2eef590eb822379944b9b28) ) ROM_END -COMP( 1990, harriet, 0, 0, harriet, harriet, driver_device, 0, "Quantel", "Harriet", MACHINE_IS_SKELETON ) +COMP( 1990, harriet, 0, 0, harriet, harriet, harriet_state, 0, "Quantel", "Harriet", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/hazelgr.cpp b/src/mame/drivers/hazelgr.cpp index b22c62381f9..cca9a43c63c 100644 --- a/src/mame/drivers/hazelgr.cpp +++ b/src/mame/drivers/hazelgr.cpp @@ -35,7 +35,7 @@ static INPUT_PORTS_START( haze ) INPUT_PORTS_END -static MACHINE_CONFIG_START( haze, haze_state ) +static MACHINE_CONFIG_START( haze ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,2000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(haze_map) @@ -49,4 +49,4 @@ ROM_START( hg_frd ) ROM_END -GAME( 198?, hg_frd, 0, haze, haze, driver_device, 0, ROT0, "Hazel Grove", "Fruit Deuce (Hazel Grove)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 198?, hg_frd, 0, haze, haze, haze_state, 0, ROT0, "Hazel Grove", "Fruit Deuce (Hazel Grove)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/hazeltin.cpp b/src/mame/drivers/hazeltin.cpp index 69f067f8312..d8a68012ecc 100644 --- a/src/mame/drivers/hazeltin.cpp +++ b/src/mame/drivers/hazeltin.cpp @@ -167,36 +167,36 @@ public: private: required_device m_maincpu; - required_device m_video_board; - required_device m_u9; - required_device m_u10; - required_device m_u11; - required_device m_u12; - required_device m_u13; - required_device m_u14; - required_device m_u15; - required_device m_u16; - required_device m_u22; - required_device m_u23; - required_device m_u24; - required_device m_u25; - required_device m_u26; - required_device m_u27; - required_device m_u28; - required_device m_u29; - required_device m_cpu_db0; - required_device m_cpu_db1; - required_device m_cpu_db2; - required_device m_cpu_db3; - required_device m_cpu_db4; - required_device m_cpu_db5; - required_device m_cpu_db6; - required_device m_cpu_db7; - required_device m_cpu_ba4; - required_device m_cpu_iowq; - required_device m_video_out; - required_device m_vblank_out; - required_device m_tvinterq_out; + required_device m_video_board; + required_device m_u9; + required_device m_u10; + required_device m_u11; + required_device m_u12; + required_device m_u13; + required_device m_u14; + required_device m_u15; + required_device m_u16; + required_device m_u22; + required_device m_u23; + required_device m_u24; + required_device m_u25; + required_device m_u26; + required_device m_u27; + required_device m_u28; + required_device m_u29; + required_device m_cpu_db0; + required_device m_cpu_db1; + required_device m_cpu_db2; + required_device m_cpu_db3; + required_device m_cpu_db4; + required_device m_cpu_db5; + required_device m_cpu_db6; + required_device m_cpu_db7; + required_device m_cpu_ba4; + required_device m_cpu_iowq; + required_device m_video_out; + required_device m_vblank_out; + required_device m_tvinterq_out; required_device m_uart; required_device m_kbdc; required_ioport m_baud_dips; @@ -686,7 +686,7 @@ static GFXDECODE_START( hazl1500 ) GFXDECODE_ENTRY( CHAR_EPROM_TAG, 0x0000, hazl1500_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( hazl1500, hazl1500_state ) +static MACHINE_CONFIG_START( hazl1500 ) /* basic machine hardware */ MCFG_CPU_ADD(CPU_TAG, I8080, XTAL_18MHz/9) // 18MHz crystal on schematics, using an i8224 clock gen/driver IC MCFG_CPU_PROGRAM_MAP(hazl1500_mem) @@ -784,5 +784,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, hazl1500, 0, 0, hazl1500, hazl1500, driver_device, 0, "Hazeltine Corporation", "Hazeltine 1500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1977, hazl1500, 0, 0, hazl1500, hazl1500, hazl1500_state, 0, "Hazeltine Corporation", "Hazeltine 1500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/hcastle.cpp b/src/mame/drivers/hcastle.cpp index 7125a710ba2..55509e598f0 100644 --- a/src/mame/drivers/hcastle.cpp +++ b/src/mame/drivers/hcastle.cpp @@ -188,7 +188,7 @@ void hcastle_state::machine_reset() m_old_pf2 = -1; } -static MACHINE_CONFIG_START( hcastle, hcastle_state ) +static MACHINE_CONFIG_START( hcastle ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* Derived from 24 MHz clock */ @@ -381,8 +381,8 @@ ROM_END -GAME( 1988, hcastle, 0, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Haunted Castle (version M)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hcastlek, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Haunted Castle (version K)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hcastlee, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Haunted Castle (version E)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, akumajou, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Akuma-Jou Dracula (Japan version P)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, akumajoun, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Akuma-Jou Dracula (Japan version N)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hcastle, 0, hcastle, hcastle, hcastle_state, 0, ROT0, "Konami", "Haunted Castle (version M)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hcastlek, hcastle, hcastle, hcastle, hcastle_state, 0, ROT0, "Konami", "Haunted Castle (version K)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hcastlee, hcastle, hcastle, hcastle, hcastle_state, 0, ROT0, "Konami", "Haunted Castle (version E)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, akumajou, hcastle, hcastle, hcastle, hcastle_state, 0, ROT0, "Konami", "Akuma-Jou Dracula (Japan version P)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, akumajoun, hcastle, hcastle, hcastle, hcastle_state, 0, ROT0, "Konami", "Akuma-Jou Dracula (Japan version N)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/headonb.cpp b/src/mame/drivers/headonb.cpp index ccbb0bad2b6..aa7dda8b505 100644 --- a/src/mame/drivers/headonb.cpp +++ b/src/mame/drivers/headonb.cpp @@ -157,7 +157,7 @@ static GFXDECODE_START( headonb ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( headonb, headonb_state ) +static MACHINE_CONFIG_START( headonb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080A, XTAL_20MHz / 10) // divider guessed @@ -205,4 +205,4 @@ ROM_START( headonb ) ROM_END -GAME( 1979, headonb, headon, headonb, headonb, driver_device, 0, ROT0, "bootleg (EFG Sanremo)", "Head On (bootleg on dedicated hardware)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, headonb, headon, headonb, headonb, headonb_state, 0, ROT0, "bootleg (EFG Sanremo)", "Head On (bootleg on dedicated hardware)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hec2hrp.cpp b/src/mame/drivers/hec2hrp.cpp index 7b990ed4edd..c99902e50e3 100644 --- a/src/mame/drivers/hec2hrp.cpp +++ b/src/mame/drivers/hec2hrp.cpp @@ -182,7 +182,7 @@ static ADDRESS_MAP_START( hec2mdhrx_io , AS_IO, 8, hec2hrp_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) // Minidisc commands and changing the rom page !*/ - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("wd179x", fd1793_t, read, write) + AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("wd179x", fd1793_device, read, write) AM_RANGE(0x08, 0x08) AM_WRITE(minidisc_control_w) AM_RANGE(0x0f0,0x0ff) AM_READWRITE(hector_io_8255_r, hector_io_8255_w ) ADDRESS_MAP_END @@ -401,7 +401,7 @@ SLOT_INTERFACE_END /******************************************************************************/ -static MACHINE_CONFIG_START( hec2hr, hec2hrp_state ) +static MACHINE_CONFIG_START( hec2hr ) /******************************************************************************/ /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_5MHz) @@ -436,7 +436,7 @@ static MACHINE_CONFIG_START( hec2hr, hec2hrp_state ) MACHINE_CONFIG_END /*****************************************************************************/ -static MACHINE_CONFIG_START( hec2hrp, hec2hrp_state ) +static MACHINE_CONFIG_START( hec2hrp ) /*****************************************************************************/ /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_5MHz) @@ -475,7 +475,7 @@ static SLOT_INTERFACE_START( hector_floppies ) SLOT_INTERFACE_END /*****************************************************************************/ -static MACHINE_CONFIG_START( hec2mx40, hec2hrp_state ) +static MACHINE_CONFIG_START( hec2mx40 ) /*****************************************************************************/ /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_5MHz) @@ -519,7 +519,7 @@ static MACHINE_CONFIG_START( hec2mx40, hec2hrp_state ) MACHINE_CONFIG_END /*****************************************************************************/ -static MACHINE_CONFIG_START( hec2hrx, hec2hrp_state ) +static MACHINE_CONFIG_START( hec2hrx ) /*****************************************************************************/ /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_5MHz) @@ -563,7 +563,7 @@ static MACHINE_CONFIG_START( hec2hrx, hec2hrp_state ) MACHINE_CONFIG_END /*****************************************************************************/ -static MACHINE_CONFIG_START( hec2mdhrx, hec2hrp_state ) +static MACHINE_CONFIG_START( hec2mdhrx ) /*****************************************************************************/ // minidisc /* basic machine hardware */ @@ -605,7 +605,7 @@ static MACHINE_CONFIG_START( hec2mdhrx, hec2hrp_state ) MACHINE_CONFIG_END /*****************************************************************************/ -static MACHINE_CONFIG_START( hec2mx80, hec2hrp_state ) +static MACHINE_CONFIG_START( hec2mx80 ) /*****************************************************************************/ /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_5MHz) @@ -726,11 +726,11 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP(1983, hec2hrp, 0, interact, hec2hrp, hec2hrp, driver_device,0, "Micronique", "Hector 2HR+", MACHINE_IMPERFECT_SOUND) -COMP(1980, victor, hec2hrp, 0, hec2hrp, hec2hrp, driver_device,0, "Micronique", "Victor", MACHINE_IMPERFECT_SOUND) -COMP(1983, hec2hr, hec2hrp, 0, hec2hr, hec2hrp, driver_device,0, "Micronique", "Hector 2HR", MACHINE_IMPERFECT_SOUND) -COMP(1984, hec2hrx, hec2hrp, 0, hec2hrx, hec2hrp, driver_device,0, "Micronique", "Hector HRX + Disc2", MACHINE_IMPERFECT_SOUND) -COMP(1985, hec2mdhrx, hec2hrp, 0, hec2mdhrx, hec2hrp, driver_device,0, "Micronique", "Hector HRX + mini Disc" , MACHINE_IMPERFECT_SOUND) -COMP(1985, hec2mx80, hec2hrp, 0, hec2mx80, hec2hrp, driver_device,0, "Micronique", "Hector MX 80c + Disc2" , MACHINE_IMPERFECT_SOUND) -COMP(1985, hec2mx40, hec2hrp, 0, hec2mx40, hec2hrp, driver_device,0, "Micronique", "Hector MX 40c + Disc2" , MACHINE_IMPERFECT_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP(1983, hec2hrp, 0, interact, hec2hrp, hec2hrp, hec2hrp_state, 0, "Micronique", "Hector 2HR+", MACHINE_IMPERFECT_SOUND) +COMP(1980, victor, hec2hrp, 0, hec2hrp, hec2hrp, hec2hrp_state, 0, "Micronique", "Victor", MACHINE_IMPERFECT_SOUND) +COMP(1983, hec2hr, hec2hrp, 0, hec2hr, hec2hrp, hec2hrp_state, 0, "Micronique", "Hector 2HR", MACHINE_IMPERFECT_SOUND) +COMP(1984, hec2hrx, hec2hrp, 0, hec2hrx, hec2hrp, hec2hrp_state, 0, "Micronique", "Hector HRX + Disc2", MACHINE_IMPERFECT_SOUND) +COMP(1985, hec2mdhrx, hec2hrp, 0, hec2mdhrx, hec2hrp, hec2hrp_state, 0, "Micronique", "Hector HRX + mini Disc", MACHINE_IMPERFECT_SOUND) +COMP(1985, hec2mx80, hec2hrp, 0, hec2mx80, hec2hrp, hec2hrp_state, 0, "Micronique", "Hector MX 80c + Disc2", MACHINE_IMPERFECT_SOUND) +COMP(1985, hec2mx40, hec2hrp, 0, hec2mx40, hec2hrp, hec2hrp_state, 0, "Micronique", "Hector MX 40c + Disc2", MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/hexion.cpp b/src/mame/drivers/hexion.cpp index 76c8ebf933f..6af765a64a1 100644 --- a/src/mame/drivers/hexion.cpp +++ b/src/mame/drivers/hexion.cpp @@ -239,7 +239,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(hexion_state::scanline) } -static MACHINE_CONFIG_START( hexion, hexion_state ) +static MACHINE_CONFIG_START( hexion ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4) /* Z80B 6 MHz @ 17F, xtal verified, divider not verified */ @@ -266,7 +266,7 @@ static MACHINE_CONFIG_START( hexion, hexion_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* MSM6295GS @ 5E, clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) /* MSM6295GS @ 5E, clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_K051649_ADD("k051649", XTAL_24MHz/16) /* KONAMI 051649 // 2212P003 // JAPAN 8910EAJ @ 1D, xtal verified, divider not verified */ @@ -279,7 +279,7 @@ static MACHINE_CONFIG_DERIVED( hexionb, hexion ) MCFG_DEVICE_REMOVE("k051649") - MCFG_OKIM6295_ADD("oki2", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -337,5 +337,5 @@ ROM_START( hexionb ) //PAL20L10 @U31 ROM_END -GAME( 1992, hexion, 0, hexion, hexion, driver_device, 0, ROT0, "Konami", "Hexion (Japan ver JAB)", 0 ) -GAME( 1992, hexionb,hexion, hexionb,hexion, driver_device, 0, ROT0, "bootleg (Impeuropex Corp.)", "Hexion (Asia ver AAA, bootleg)", 0 ) // we're missing an original Asia AAA +GAME( 1992, hexion, 0, hexion, hexion, hexion_state, 0, ROT0, "Konami", "Hexion (Japan ver JAB)", 0 ) +GAME( 1992, hexionb,hexion, hexionb,hexion, hexion_state, 0, ROT0, "bootleg (Impeuropex Corp.)", "Hexion (Asia ver AAA, bootleg)", 0 ) // we're missing an original Asia AAA diff --git a/src/mame/drivers/hh_amis2k.cpp b/src/mame/drivers/hh_amis2k.cpp index 015d56c7ddd..5ee4e0e37ea 100644 --- a/src/mame/drivers/hh_amis2k.cpp +++ b/src/mame/drivers/hh_amis2k.cpp @@ -305,7 +305,7 @@ static const u8 wildfire_7seg_table[0x10] = }; -static MACHINE_CONFIG_START( wildfire, wildfire_state ) +static MACHINE_CONFIG_START( wildfire ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", AMI_S2152, MASTER_CLOCK) @@ -343,4 +343,5 @@ ROM_START( wildfire ) ROM_END -CONS( 1979, wildfire, 0, 0, wildfire, wildfire, driver_device, 0, "Parker Brothers", "Wildfire (patent)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) // note: pretty sure that it matches the commercial release +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1979, wildfire, 0, 0, wildfire, wildfire, wildfire_state, 0, "Parker Brothers", "Wildfire (patent)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) // note: pretty sure that it matches the commercial release diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp index 46bb4676f32..ecaaa8fd89f 100644 --- a/src/mame/drivers/hh_cop400.cpp +++ b/src/mame/drivers/hh_cop400.cpp @@ -320,7 +320,7 @@ static INPUT_PORTS_START( ctstein ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Blue Button") INPUT_PORTS_END -static MACHINE_CONFIG_START( ctstein, ctstein_state ) +static MACHINE_CONFIG_START( ctstein ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP421, 850000) // approximation - RC osc. R=12K, C=100pF @@ -443,7 +443,7 @@ static INPUT_PORTS_START( h2hbaskb ) PORT_CONFSETTING( 0x0c, "Soccer" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( h2hbaskb, h2hbaskb_state ) +static MACHINE_CONFIG_START( h2hbaskb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP420, 850000) // approximation - RC osc. R=43K, C=101pF @@ -555,7 +555,7 @@ static INPUT_PORTS_START( einvaderc ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( einvaderc, einvaderc_state ) +static MACHINE_CONFIG_START( einvaderc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP444L, 900000) // approximation - RC osc. R=47K, C=100pF @@ -716,7 +716,7 @@ void lchicken_state::machine_start() save_item(NAME(m_motor_pos)); } -static MACHINE_CONFIG_START( lchicken, lchicken_state ) +static MACHINE_CONFIG_START( lchicken ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP421, 850000) // approximation - RC osc. R=12K, C=100pF @@ -826,7 +826,7 @@ static INPUT_PORTS_START( funjacks ) PORT_CONFSETTING( 0x08, "2" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( funjacks, funjacks_state ) +static MACHINE_CONFIG_START( funjacks ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP410, 1000000) // approximation - RC osc. R=47K, C=56pF @@ -911,7 +911,7 @@ static INPUT_PORTS_START( funrlgl ) PORT_CONFSETTING( 0x00, "2" ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("IN.1") // fake + PORT_START("RESET") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, funrlgl_state, reset_button, nullptr) INPUT_PORTS_END @@ -921,7 +921,7 @@ INPUT_CHANGED_MEMBER(funrlgl_state::reset_button) m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); } -static MACHINE_CONFIG_START( funrlgl, funrlgl_state ) +static MACHINE_CONFIG_START( funrlgl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP410, 1000000) // approximation - RC osc. R=51K, C=91pF @@ -1057,7 +1057,7 @@ static INPUT_PORTS_START( mdallas ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("North") // N INPUT_PORTS_END -static MACHINE_CONFIG_START( mdallas, mdallas_state ) +static MACHINE_CONFIG_START( mdallas ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP444L, 1000000) // approximation - RC osc. R=57K, C=101pF @@ -1141,7 +1141,7 @@ static INPUT_PORTS_START( plus1 ) PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( plus1, plus1_state ) +static MACHINE_CONFIG_START( plus1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP410, 1000000) // approximation - RC osc. R=51K, C=100pF @@ -1269,7 +1269,7 @@ static INPUT_PORTS_START( lightfgt ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_COCKTAIL INPUT_PORTS_END -static MACHINE_CONFIG_START( lightfgt, lightfgt_state ) +static MACHINE_CONFIG_START( lightfgt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP421, 950000) // approximation - RC osc. R=82K, C=56pF @@ -1423,7 +1423,7 @@ base pulled high with 4.7K resistor, connects directly to G3, 1K resistor to G2, */ -static MACHINE_CONFIG_START( bship82, bship82_state ) +static MACHINE_CONFIG_START( bship82 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP420, 750000) // approximation - RC osc. R=14K, C=100pF @@ -1555,7 +1555,7 @@ static INPUT_PORTS_START( qkracer ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Tables") INPUT_PORTS_END -static MACHINE_CONFIG_START( qkracer, qkracer_state ) +static MACHINE_CONFIG_START( qkracer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP420, 1000000) // approximation - RC osc. R=47K, C=100pF @@ -1652,24 +1652,24 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1979, ctstein, 0, 0, ctstein, ctstein, driver_device, 0, "Castle Toy", "Einstein (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1979, ctstein, 0, 0, ctstein, ctstein, ctstein_state, 0, "Castle Toy", "Einstein (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, h2hbaskb, 0, 0, h2hbaskb, h2hbaskb, driver_device, 0, "Coleco", "Head to Head Basketball/Hockey/Soccer (COP420L version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, h2hbaskb, 0, 0, h2hbaskb, h2hbaskb, h2hbaskb_state, 0, "Coleco", "Head to Head Basketball/Hockey/Soccer (COP420L version)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, einvaderc, einvader, 0, einvaderc, einvaderc, driver_device, 0, "Entex", "Space Invader (Entex, COP444L version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, einvaderc, einvader, 0, einvaderc, einvaderc, einvaderc_state, 0, "Entex", "Space Invader (Entex, COP444L version)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, lchicken, 0, 0, lchicken, lchicken, driver_device, 0, "LJN", "I Took a Lickin' From a Chicken", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL ) +CONS( 1980, lchicken, 0, 0, lchicken, lchicken, lchicken_state, 0, "LJN", "I Took a Lickin' From a Chicken", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL ) -CONS( 1979, funjacks, 0, 0, funjacks, funjacks, driver_device, 0, "Mattel", "Funtronics Jacks", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, driver_device, 0, "Mattel", "Funtronics Red Light Green Light", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, mdallas, 0, 0, mdallas, mdallas, driver_device, 0, "Mattel", "Dalla$ (J.R. handheld)", MACHINE_SUPPORTS_SAVE ) // *** +CONS( 1979, funjacks, 0, 0, funjacks, funjacks, funjacks_state, 0, "Mattel", "Funtronics Jacks", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, funrlgl_state, 0, "Mattel", "Funtronics Red Light Green Light", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, mdallas, 0, 0, mdallas, mdallas, mdallas_state, 0, "Mattel", "Dalla$ (J.R. handheld)", MACHINE_SUPPORTS_SAVE ) // *** -CONS( 1980, plus1, 0, 0, plus1, plus1, driver_device, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE ) // *** -CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1982, bship82, bship, 0, bship82, bship82, driver_device, 0, "Milton Bradley", "Electronic Battleship (1982 version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** +CONS( 1980, plus1, 0, 0, plus1, plus1, plus1_state, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE ) // *** +CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, lightfgt_state, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1982, bship82, bship, 0, bship82, bship82, bship82_state, 0, "Milton Bradley", "Electronic Battleship (1982 version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** -CONS( 1978, qkracer, 0, 0, qkracer, qkracer, driver_device, 0, "National Semiconductor", "QuizKid Racer (COP420 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +CONS( 1978, qkracer, 0, 0, qkracer, qkracer, qkracer_state, 0, "National Semiconductor", "QuizKid Racer (COP420 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) // ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction // with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc. diff --git a/src/mame/drivers/hh_hmcs40.cpp b/src/mame/drivers/hh_hmcs40.cpp index 88737aab60c..c110e00974d 100644 --- a/src/mame/drivers/hh_hmcs40.cpp +++ b/src/mame/drivers/hh_hmcs40.cpp @@ -75,12 +75,15 @@ - gckong random lockups (tap the jump button repeatedly): mcu stack overflow, works ok if stack levels is increased, 38800 B rev. has more stack levels? Or it could be a race condition: irq happening too late/early. - - bultrman building explosions are wrong, especially visible on the first one - - epacman booting the game in demo mode, pacman should go straight to the + - epacman2 booting the game in demo mode, pacman should go straight to the upper-left power pill: mcu cycle/interrupt timing related - - Though very uncommon when compared to games with LED/lamp display, - some games may manipulate VFD plate brightness by strobing it longer, + - Though very uncommon when compared to games with LED/lamp display, some + games may manipulate VFD plate brightness by strobing it longer/shorter, eg. cgalaxn when the player ship explodes. + - Related to the above issue: bultrman sometimes strobes D0/D1/D2 for a very + short duration, causing (unwanted) dimly lit segments on the real machine. + On MAME they will show with full brightness, see eg. building explosions. + Currently there's a workaround in place. - bzaxxon 3D effect is difficult to simulate ***************************************************************************/ @@ -382,7 +385,7 @@ public: WRITE8_MEMBER(bambball_state::plate_w) { // R1x-R3x(,D0-D3): vfd matrix plate - int shift = (offset - HMCS40_PORT_R1X) * 4; + int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); // update display @@ -402,7 +405,7 @@ WRITE16_MEMBER(bambball_state::grid_w) m_grid = data >> 7 & 0x1ff; // D0-D3: more plates (update display there) - plate_w(space, 3 + HMCS40_PORT_R1X, data & 0xf); + plate_w(space, 3 + hmcs40_cpu_device::PORT_R1X, data & 0xf); } READ8_MEMBER(bambball_state::input_r) @@ -441,7 +444,7 @@ static INPUT_PORTS_START( bambball ) PORT_CONFSETTING( 0x00, "2" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bambball, bambball_state ) +static MACHINE_CONFIG_START( bambball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation @@ -503,7 +506,7 @@ void bmboxing_state::prepare_display() WRITE8_MEMBER(bmboxing_state::plate_w) { // R1x-R3x: vfd matrix plate - int shift = (offset - HMCS40_PORT_R1X) * 4; + int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); prepare_display(); } @@ -577,7 +580,7 @@ static INPUT_PORTS_START( bmboxing ) PORT_BIT( 0xfff8, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bmboxing, bmboxing_state ) +static MACHINE_CONFIG_START( bmboxing ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation @@ -702,7 +705,7 @@ INPUT_CHANGED_MEMBER(bfriskyt_state::input_changed) update_int1(); } -static MACHINE_CONFIG_START( bfriskyt, bfriskyt_state ) +static MACHINE_CONFIG_START( bfriskyt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -812,7 +815,7 @@ static INPUT_PORTS_START( packmon ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) INPUT_PORTS_END -static MACHINE_CONFIG_START( packmon, packmon_state ) +static MACHINE_CONFIG_START( packmon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -947,7 +950,7 @@ INPUT_CHANGED_MEMBER(msthawk_state::input_changed) update_int0(); } -static MACHINE_CONFIG_START( msthawk, msthawk_state ) +static MACHINE_CONFIG_START( msthawk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -1068,7 +1071,7 @@ INPUT_CHANGED_MEMBER(bzaxxon_state::input_changed) update_int1(); } -static MACHINE_CONFIG_START( bzaxxon, bzaxxon_state ) +static MACHINE_CONFIG_START( bzaxxon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 450000) // approximation @@ -1184,7 +1187,7 @@ INPUT_CHANGED_MEMBER(zackman_state::input_changed) update_int0(); } -static MACHINE_CONFIG_START( zackman, zackman_state ) +static MACHINE_CONFIG_START( zackman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -1311,7 +1314,7 @@ INPUT_CHANGED_MEMBER(bpengo_state::input_changed) update_int0(); } -static MACHINE_CONFIG_START( bpengo, bpengo_state ) +static MACHINE_CONFIG_START( bpengo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -1436,7 +1439,7 @@ INPUT_CHANGED_MEMBER(bbtime_state::input_changed) update_int0(); } -static MACHINE_CONFIG_START( bbtime, bbtime_state ) +static MACHINE_CONFIG_START( bbtime ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -1536,7 +1539,7 @@ static INPUT_PORTS_START( bdoramon ) PORT_CONFSETTING( 0x08, DEF_STR( On ) ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bdoramon, bdoramon_state ) +static MACHINE_CONFIG_START( bdoramon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -1609,7 +1612,8 @@ WRITE16_MEMBER(bultrman_state::grid_w) m_grid = data >> 8 & 0xff; // D0-D2: plate 15-17 (update display there) - plate_w(space, 4, data & 7); + //plate_w(space, 4, data & 7); + plate_w(space, 4, data & (1 << offset) & 7); } @@ -1628,7 +1632,7 @@ static INPUT_PORTS_START( bultrman ) PORT_BIT( 0xff8f, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bultrman, bultrman_state ) +static MACHINE_CONFIG_START( bultrman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 350000) // approximation @@ -1689,7 +1693,7 @@ void machiman_state::prepare_display() WRITE8_MEMBER(machiman_state::plate_w) { // R0x-R3x,R6012: vfd matrix plate - int shift = (offset == HMCS40_PORT_R6X) ? 16 : offset * 4; + int shift = (offset == hmcs40_cpu_device::PORT_R6X) ? 16 : offset * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); prepare_display(); } @@ -1717,7 +1721,7 @@ static INPUT_PORTS_START( machiman ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY INPUT_PORTS_END -static MACHINE_CONFIG_START( machiman, machiman_state ) +static MACHINE_CONFIG_START( machiman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -1784,7 +1788,7 @@ public: WRITE8_MEMBER(pairmtch_state::plate_w) { // R2x,R3x,R6x: vfd matrix plate - int shift = (offset == HMCS40_PORT_R6X) ? 8 : (offset-2) * 4; + int shift = (offset == hmcs40_cpu_device::PORT_R6X) ? 8 : (offset-2) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); display_matrix(12, 6, m_plate, m_grid); } @@ -1867,7 +1871,7 @@ static INPUT_PORTS_START( pairmtch ) PORT_BIT( 0x86bf, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( pairmtch, pairmtch_state ) +static MACHINE_CONFIG_START( pairmtch ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -1989,7 +1993,7 @@ static INPUT_PORTS_START( alnattck ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Fire") INPUT_PORTS_END -static MACHINE_CONFIG_START( alnattck, alnattck_state ) +static MACHINE_CONFIG_START( alnattck ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -2116,7 +2120,7 @@ void cdkong_state::machine_start() save_item(NAME(m_speaker_volume)); } -static MACHINE_CONFIG_START( cdkong, cdkong_state ) +static MACHINE_CONFIG_START( cdkong ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -2192,11 +2196,11 @@ void cgalaxn_state::prepare_display() WRITE8_MEMBER(cgalaxn_state::grid_w) { // R10,R11: input mux - if (offset == HMCS40_PORT_R1X) + if (offset == hmcs40_cpu_device::PORT_R1X) m_inp_mux = data & 3; // R1x-R3x: vfd matrix grid - int shift = (offset - HMCS40_PORT_R1X) * 4; + int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4; m_grid = (m_grid & ~(0xf << shift)) | (data << shift); prepare_display(); } @@ -2249,7 +2253,7 @@ INPUT_CHANGED_MEMBER(cgalaxn_state::player_switch) prepare_display(); } -static MACHINE_CONFIG_START( cgalaxn, cgalaxn_state ) +static MACHINE_CONFIG_START( cgalaxn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -2315,7 +2319,7 @@ public: WRITE8_MEMBER(cpacman_state::plate_w) { // R1x-R6x(,D1,D2): vfd matrix plate - int shift = (offset - HMCS40_PORT_R1X) * 4; + int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); // update display @@ -2336,7 +2340,7 @@ WRITE16_MEMBER(cpacman_state::grid_w) m_grid = data >> 5 & 0x7ff; // D1,D2: plate 8,14 (update display there) - plate_w(space, 6 + HMCS40_PORT_R1X, data >> 1 & 3); + plate_w(space, 6 + hmcs40_cpu_device::PORT_R1X, data >> 1 & 3); } READ8_MEMBER(cpacman_state::input_r) @@ -2368,7 +2372,7 @@ static INPUT_PORTS_START( cpacman ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) INPUT_PORTS_END -static MACHINE_CONFIG_START( cpacman, cpacman_state ) +static MACHINE_CONFIG_START( cpacman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -2432,7 +2436,7 @@ public: WRITE8_MEMBER(cmspacmn_state::plate_w) { // R1x-R6x(,D0,D1): vfd matrix plate - int shift = (offset - HMCS40_PORT_R1X) * 4; + int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); // update display @@ -2453,7 +2457,7 @@ WRITE16_MEMBER(cmspacmn_state::grid_w) m_grid = data >> 5 & 0x7ff; // D0,D1: more plates (update display there) - plate_w(space, 6 + HMCS40_PORT_R1X, data & 3); + plate_w(space, 6 + hmcs40_cpu_device::PORT_R1X, data & 3); } READ8_MEMBER(cmspacmn_state::input_r) @@ -2485,7 +2489,7 @@ static INPUT_PORTS_START( cmspacmn ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) INPUT_PORTS_END -static MACHINE_CONFIG_START( cmspacmn, cmspacmn_state ) +static MACHINE_CONFIG_START( cmspacmn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -2632,7 +2636,7 @@ static INPUT_PORTS_START( sag ) PORT_CONFSETTING( 0x02, "2" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( sag, sag_state ) +static MACHINE_CONFIG_START( sag ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 450000) // approximation @@ -2703,7 +2707,7 @@ WRITE16_MEMBER(egalaxn2_state::grid_w) WRITE8_MEMBER(egalaxn2_state::plate_w) { // R1x-R6x: vfd matrix plate - int shift = (offset - HMCS40_PORT_R1X) * 4; + int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); prepare_display(); } @@ -2747,7 +2751,7 @@ static INPUT_PORTS_START( egalaxn2 ) PORT_CONFSETTING( 0x04, "2" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( egalaxn2, egalaxn2_state ) +static MACHINE_CONFIG_START( egalaxn2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -2788,7 +2792,7 @@ MACHINE_CONFIG_END 2 VFD revisions are known, the difference is Pac-Man's color: cyan or red. ***************************************************************************/ -#if 0 + class epacman2_state : public egalaxn2_state { public: @@ -2796,7 +2800,7 @@ public: : egalaxn2_state(mconfig, type, tag) { } }; -#endif + // handlers are identical to Galaxian 2, so we can use those // config @@ -2996,7 +3000,7 @@ void eturtles_state::machine_start() save_item(NAME(m_cop_irq)); } -static MACHINE_CONFIG_START( eturtles, eturtles_state ) +static MACHINE_CONFIG_START( eturtles ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -3106,7 +3110,7 @@ static INPUT_PORTS_START( estargte ) PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( estargte, estargte_state ) +static MACHINE_CONFIG_START( estargte ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -3232,7 +3236,7 @@ static INPUT_PORTS_START( ghalien ) PORT_CONFSETTING( 0x8000, "Professional" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ghalien, ghalien_state ) +static MACHINE_CONFIG_START( ghalien ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -3359,7 +3363,7 @@ INPUT_CHANGED_MEMBER(gckong_state::input_changed) update_int1(); } -static MACHINE_CONFIG_START( gckong, gckong_state ) +static MACHINE_CONFIG_START( gckong ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -3373,8 +3377,8 @@ static MACHINE_CONFIG_START( gckong, gckong_state ) /* video hardware */ MCFG_SCREEN_SVG_ADD("screen", "svg") MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_SIZE(479, 1080) - MCFG_SCREEN_VISIBLE_AREA(0, 479-1, 0, 1080-1) + MCFG_SCREEN_SIZE(506, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 506-1, 0, 1080-1) MCFG_DEFAULT_LAYOUT(layout_svg) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) @@ -3478,7 +3482,7 @@ INPUT_CHANGED_MEMBER(gdigdug_state::input_changed) update_int1(); } -static MACHINE_CONFIG_START( gdigdug, gdigdug_state ) +static MACHINE_CONFIG_START( gdigdug ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -3547,7 +3551,7 @@ void mwcbaseb_state::prepare_display() WRITE8_MEMBER(mwcbaseb_state::plate_w) { // R1x-R3x,R6x: vfd matrix plate - int shift = (offset == HMCS40_PORT_R6X) ? 12 : (offset - HMCS40_PORT_R1X) * 4; + int shift = (offset == hmcs40_cpu_device::PORT_R6X) ? 12 : (offset - hmcs40_cpu_device::PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); prepare_display(); } @@ -3640,7 +3644,7 @@ INPUT_PORTS_END static const s16 mwcbaseb_speaker_levels[] = { 0, 0x3fff, -0x4000, 0, -0x4000, 0, -0x8000, -0x4000 }; -static MACHINE_CONFIG_START( mwcbaseb, mwcbaseb_state ) +static MACHINE_CONFIG_START( mwcbaseb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -3728,7 +3732,7 @@ static INPUT_PORTS_START( pbqbert ) PORT_BIT( 0xe1ff, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( pbqbert, pbqbert_state ) +static MACHINE_CONFIG_START( pbqbert ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation @@ -3853,7 +3857,7 @@ INPUT_CHANGED_MEMBER(kingman_state::input_changed) update_int0(); } -static MACHINE_CONFIG_START( kingman, kingman_state ) +static MACHINE_CONFIG_START( kingman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -3974,7 +3978,7 @@ INPUT_CHANGED_MEMBER(tmtron_state::input_changed) update_int1(); } -static MACHINE_CONFIG_START( tmtron, tmtron_state ) +static MACHINE_CONFIG_START( tmtron ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation @@ -4031,7 +4035,7 @@ public: WRITE8_MEMBER(vinvader_state::plate_w) { // R1x-R3x(,D4-D6): vfd matrix plate - int shift = (offset - HMCS40_PORT_R1X) * 4; + int shift = (offset - hmcs40_cpu_device::PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); // update display @@ -4048,7 +4052,7 @@ WRITE16_MEMBER(vinvader_state::grid_w) m_grid = data >> 7 & 0x1ff; // D4-D6: more plates (update display there) - plate_w(space, 3 + HMCS40_PORT_R1X, data >> 4 & 7); + plate_w(space, 3 + hmcs40_cpu_device::PORT_R1X, data >> 4 & 7); } @@ -4068,7 +4072,7 @@ static INPUT_PORTS_START( vinvader ) PORT_BIT( 0xfff5, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( vinvader, vinvader_state ) +static MACHINE_CONFIG_START( vinvader ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation @@ -4384,8 +4388,8 @@ ROM_START( gckong ) ROM_LOAD( "hd38800b01", 0x0000, 0x1000, CRC(d5a2cca3) SHA1(37bb5784383daab672ed1e0e2362c7a40d8d9b3f) ) ROM_CONTINUE( 0x1e80, 0x0100 ) - ROM_REGION( 349591, "svg", 0) - ROM_LOAD( "gckong.svg", 0, 349591, BAD_DUMP CRC(94b5fcdf) SHA1(a797feb71d18d0320e846eca72a0df92d111ee1e) ) // by kevtris, ver. 25 apr 2016 - BAD_DUMP: needs overlay + ROM_REGION( 356769, "svg", 0) + ROM_LOAD( "gckong.svg", 0, 356769, CRC(e2559b53) SHA1(519309c3a88b5d7f4c0ac5ae05dcdc1153377765) ) // by kevtris/hap, ver. 12 may 2017 ROM_END @@ -4450,47 +4454,47 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1979, bambball, 0, 0, bambball, bambball, driver_device, 0, "Bambino", "Dribble Away Basketball", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, driver_device, 0, "Bambino", "Knock-Em Out Boxing", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1979, bambball, 0, 0, bambball, bambball, bambball_state, 0, "Bambino", "Dribble Away Basketball", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, bmboxing_state, 0, "Bambino", "Knock-Em Out Boxing", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, driver_device, 0, "Bandai", "Frisky Tom (Bandai)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, packmon, 0, 0, packmon, packmon, driver_device, 0, "Bandai", "Packri Monster", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, msthawk, 0, 0, msthawk, msthawk, driver_device, 0, "Bandai (Mattel license)", "Star Hawk (Mattel)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, bzaxxon, 0, 0, bzaxxon, bzaxxon, driver_device, 0, "Bandai", "Zaxxon (Bandai)", MACHINE_SUPPORTS_SAVE ) -CONS( 1983, zackman, 0, 0, zackman, zackman, driver_device, 0, "Bandai", "Zackman", MACHINE_SUPPORTS_SAVE ) -CONS( 1983, bpengo, 0, 0, bpengo, bpengo, driver_device, 0, "Bandai", "Pengo (Bandai)", MACHINE_SUPPORTS_SAVE ) -CONS( 1983, bbtime, 0, 0, bbtime, bbtime, driver_device, 0, "Bandai", "Burger Time (Bandai)", MACHINE_SUPPORTS_SAVE ) -CONS( 1983, bdoramon, 0, 0, bdoramon, bdoramon, driver_device, 0, "Bandai", "Dokodemo Dorayaki Doraemon", MACHINE_SUPPORTS_SAVE ) -CONS( 1983, bultrman, 0, 0, bultrman, bultrman, driver_device, 0, "Bandai", "Ultraman Monster Battle", MACHINE_SUPPORTS_SAVE ) -CONS( 1984, machiman, 0, 0, machiman, machiman, driver_device, 0, "Bandai", "Machine Man", MACHINE_SUPPORTS_SAVE ) -CONS( 1984, pairmtch, 0, 0, pairmtch, pairmtch, driver_device, 0, "Bandai", "Pair Match", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, bfriskyt_state, 0, "Bandai", "Frisky Tom (Bandai)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, packmon, 0, 0, packmon, packmon, packmon_state, 0, "Bandai", "Packri Monster", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, msthawk, 0, 0, msthawk, msthawk, msthawk_state, 0, "Bandai (Mattel license)", "Star Hawk (Mattel)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, bzaxxon, 0, 0, bzaxxon, bzaxxon, bzaxxon_state, 0, "Bandai", "Zaxxon (Bandai)", MACHINE_SUPPORTS_SAVE ) +CONS( 1983, zackman, 0, 0, zackman, zackman, zackman_state, 0, "Bandai", "Zackman", MACHINE_SUPPORTS_SAVE ) +CONS( 1983, bpengo, 0, 0, bpengo, bpengo, bpengo_state, 0, "Bandai", "Pengo (Bandai)", MACHINE_SUPPORTS_SAVE ) +CONS( 1983, bbtime, 0, 0, bbtime, bbtime, bbtime_state, 0, "Bandai", "Burger Time (Bandai)", MACHINE_SUPPORTS_SAVE ) +CONS( 1983, bdoramon, 0, 0, bdoramon, bdoramon, bdoramon_state, 0, "Bandai", "Dokodemo Dorayaki Doraemon", MACHINE_SUPPORTS_SAVE ) +CONS( 1983, bultrman, 0, 0, bultrman, bultrman, bultrman_state, 0, "Bandai", "Ultraman Monster Battle", MACHINE_SUPPORTS_SAVE ) +CONS( 1984, machiman, 0, 0, machiman, machiman, machiman_state, 0, "Bandai", "Machine Man", MACHINE_SUPPORTS_SAVE ) +CONS( 1984, pairmtch, 0, 0, pairmtch, pairmtch, pairmtch_state, 0, "Bandai", "Pair Match", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, alnattck, 0, 0, alnattck, alnattck, driver_device, 0, "Coleco", "Alien Attack", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, cdkong, 0, 0, cdkong, cdkong, driver_device, 0, "Coleco", "Donkey Kong (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, driver_device, 0, "Coleco", "Galaxian (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -CONS( 1981, cpacman, 0, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 29)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 28)", MACHINE_SUPPORTS_SAVE ) -CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Coleco", "Ms. Pac-Man (Coleco)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, alnattck, 0, 0, alnattck, alnattck, alnattck_state, 0, "Coleco", "Alien Attack", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, cdkong, 0, 0, cdkong, cdkong, cdkong_state, 0, "Coleco", "Donkey Kong (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, cgalaxn_state, 0, "Coleco", "Galaxian (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +CONS( 1981, cpacman, 0, 0, cpacman, cpacman, cpacman_state, 0, "Coleco", "Pac-Man (Coleco, Rev. 29)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, cpacman_state, 0, "Coleco", "Pac-Man (Coleco, Rev. 28)", MACHINE_SUPPORTS_SAVE ) +CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, cmspacmn_state, 0, "Coleco", "Ms. Pac-Man (Coleco)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, sag_si2, 0, 0, sag, sag, driver_device, 0, "Entex", "Select-A-Game: Space Invader 2", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) // suspect bad dump -CONS( 1981, sag_bb4, 0, 0, sag, sag, driver_device, 0, "Entex", "Select-A-Game: Baseball 4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -CONS( 1981, sag_pb, 0, 0, sag, sag, driver_device, 0, "Entex", "Select-A-Game: Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, epacman2, 0, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex, cyan Pacman)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, epacman2r, epacman2, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex, red Pacman)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, estargte, 0, 0, estargte, estargte, driver_device, 0, "Entex", "Stargate (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, eturtles, 0, 0, eturtles, eturtles, driver_device, 0, "Entex", "Turtles (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, sag_si2, 0, 0, sag, sag, sag_state, 0, "Entex", "Select-A-Game: Space Invader 2", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) // suspect bad dump +CONS( 1981, sag_bb4, 0, 0, sag, sag, sag_state, 0, "Entex", "Select-A-Game: Baseball 4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +CONS( 1981, sag_pb, 0, 0, sag, sag, sag_state, 0, "Entex", "Select-A-Game: Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, egalaxn2_state, 0, "Entex", "Galaxian 2 (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, epacman2, 0, 0, epacman2, epacman2, epacman2_state, 0, "Entex", "Pac Man 2 (Entex, cyan Pacman)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, epacman2r, epacman2, 0, epacman2, epacman2, epacman2_state, 0, "Entex", "Pac Man 2 (Entex, red Pacman)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, estargte, 0, 0, estargte, estargte, estargte_state, 0, "Entex", "Stargate (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, eturtles, 0, 0, eturtles, eturtles, eturtles_state, 0, "Entex", "Turtles (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, ghalien, 0, 0, ghalien, ghalien, driver_device, 0, "Gakken", "Heiankyo Alien (Gakken)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, gckong, 0, 0, gckong, gckong, driver_device, 0, "Gakken", "Crazy Kong (Gakken)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -CONS( 1983, gdigdug, 0, 0, gdigdug, gdigdug, driver_device, 0, "Gakken", "Dig Dug (Gakken)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, ghalien, 0, 0, ghalien, ghalien, ghalien_state, 0, "Gakken", "Heiankyo Alien (Gakken)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, gckong, 0, 0, gckong, gckong, gckong_state, 0, "Gakken", "Crazy Kong (Gakken)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1983, gdigdug, 0, 0, gdigdug, gdigdug, gdigdug_state, 0, "Gakken", "Dig Dug (Gakken)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, mwcbaseb, 0, 0, mwcbaseb, mwcbaseb, driver_device, 0, "Mattel", "World Championship Baseball", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, mwcbaseb, 0, 0, mwcbaseb, mwcbaseb, mwcbaseb_state, 0, "Mattel", "World Championship Baseball", MACHINE_SUPPORTS_SAVE ) -CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", MACHINE_SUPPORTS_SAVE ) +CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, pbqbert_state, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", MACHINE_SUPPORTS_SAVE ) -CONS( 1984, tmtron, 0, 0, tmtron, tmtron, driver_device, 0, "Tomy", "Tron (Tomy)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, kingman, 0, 0, kingman, kingman, kingman_state, 0, "Tomy", "Kingman", MACHINE_SUPPORTS_SAVE ) +CONS( 1984, tmtron, 0, 0, tmtron, tmtron, tmtron_state, 0, "Tomy", "Tron (Tomy)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, vinvader, 0, 0, vinvader, vinvader, driver_device, 0, "VTech", "Invaders (VTech)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, vinvader, 0, 0, vinvader, vinvader, vinvader_state, 0, "VTech", "Invaders (VTech)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hh_melps4.cpp b/src/mame/drivers/hh_melps4.cpp index 5e2f507835c..63d24125ece 100644 --- a/src/mame/drivers/hh_melps4.cpp +++ b/src/mame/drivers/hh_melps4.cpp @@ -310,7 +310,7 @@ static INPUT_PORTS_START( cfrogger ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_melps4_state, reset_button, nullptr) INPUT_PORTS_END -static MACHINE_CONFIG_START( cfrogger, cfrogger_state ) +static MACHINE_CONFIG_START( cfrogger ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M58846, XTAL_600kHz) @@ -426,7 +426,7 @@ static INPUT_PORTS_START( gjungler ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_melps4_state, reset_button, nullptr) INPUT_PORTS_END -static MACHINE_CONFIG_START( gjungler, gjungler_state ) +static MACHINE_CONFIG_START( gjungler ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M58846, XTAL_600kHz) @@ -481,7 +481,7 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1981, cfrogger, 0, 0, cfrogger, cfrogger, driver_device, 0, "Coleco", "Frogger (Coleco)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1981, cfrogger, 0, 0, cfrogger, cfrogger, cfrogger_state, 0, "Coleco", "Frogger (Coleco)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, gjungler, 0, 0, gjungler, gjungler, driver_device, 0, "Gakken / Konami", "Jungler (Gakken)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, gjungler, 0, 0, gjungler, gjungler, gjungler_state, 0, "Gakken / Konami", "Jungler (Gakken)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hh_pic16.cpp b/src/mame/drivers/hh_pic16.cpp index 89db9e6376f..98f8247d90a 100644 --- a/src/mame/drivers/hh_pic16.cpp +++ b/src/mame/drivers/hh_pic16.cpp @@ -58,8 +58,9 @@ #include "tbaskb.lh" #include "touchme.lh" // clickable #include "ttfball.lh" +#include "us2pfball.lh" -//#include "hh_pic16_test.lh" // common test-layout - use external artwork +#include "hh_pic16_test.lh" // common test-layout - use external artwork class hh_pic16_state : public driver_device @@ -374,7 +375,7 @@ INPUT_PORTS_END static const s16 touchme_speaker_levels[] = { 0, 0x7fff, -0x8000, 0 }; -static MACHINE_CONFIG_START( touchme, touchme_state ) +static MACHINE_CONFIG_START( touchme ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PIC1655, 300000) // approximation - RC osc. R=100K, C=47pF @@ -404,7 +405,7 @@ MACHINE_CONFIG_END Caprice Pro-Action Baseball (manufactured by Calfax) * PIC 1655A-043 - * x + * 1 7seg LED + 36 other LEDs, CD4028, 1-bit sound ***************************************************************************/ @@ -416,51 +417,84 @@ public: { } void prepare_display(); - DECLARE_READ8_MEMBER(read_a); DECLARE_WRITE8_MEMBER(write_b); DECLARE_WRITE8_MEMBER(write_c); + + DECLARE_INPUT_CHANGED_MEMBER(reset_button); }; // handlers void pabball_state::prepare_display() { -} + // CD4028 BCD to decimal decoder + u16 sel = m_c & 0xf; + if (sel & 8) sel &= 9; + sel = 1 << sel; -READ8_MEMBER(pabball_state::read_a) -{ - return 0xf; + // CD4028 9 is 7seg + set_display_segmask(0x200, 0xff); + display_matrix(8, 10, m_b, sel); } WRITE8_MEMBER(pabball_state::write_b) { + // B: led data + m_b = ~data; + prepare_display(); } WRITE8_MEMBER(pabball_state::write_c) { + // C2: RTCC pin + m_maincpu->set_input_line(PIC16C5x_RTCC, data >> 2 & 1); + + // C7: speaker out + m_speaker->level_w(data >> 7 & 1); + + // C0-C3: CD4028 A-D + m_c = data; + prepare_display(); } // config static INPUT_PORTS_START( pabball ) - PORT_START("IN.0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) + PORT_START("IN.0") // port A + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Curve Left") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL PORT_NAME("P2 Curve Right") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Straight") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN.1") // port C + PORT_BIT( 0xcf, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Hit") + PORT_CONFNAME( 0x20, 0x00, DEF_STR( Players ) ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x20, "2" ) + + PORT_START("RESET") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, pabball_state, reset_button, nullptr) INPUT_PORTS_END -static MACHINE_CONFIG_START( pabball, pabball_state ) +INPUT_CHANGED_MEMBER(pabball_state::reset_button) +{ + // reset button is directly tied to MCLR pin + m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); +} + +static MACHINE_CONFIG_START( pabball ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", PIC1655, 1000000) // approximation - RC osc. R=18K, C=27pF - MCFG_PIC16C5x_READ_A_CB(READ8(pabball_state, read_a)) + MCFG_CPU_ADD("maincpu", PIC1655, 1200000) // approximation - RC osc. R=18K, C=27pF + MCFG_PIC16C5x_READ_A_CB(IOPORT("IN.0")) MCFG_PIC16C5x_WRITE_B_CB(WRITE8(pabball_state, write_b)) + MCFG_PIC16C5x_READ_C_CB(IOPORT("IN.1")) MCFG_PIC16C5x_WRITE_C_CB(WRITE8(pabball_state, write_c)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_pic16_state, display_decay_tick, attotime::from_msec(1)) - //MCFG_DEFAULT_LAYOUT(layout_pabball) + MCFG_DEFAULT_LAYOUT(layout_hh_pic16_test) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -565,7 +599,7 @@ static INPUT_PORTS_START( melodym ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Note") INPUT_PORTS_END -static MACHINE_CONFIG_START( melodym, melodym_state ) +static MACHINE_CONFIG_START( melodym ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PIC1655, 1000000) // approximation @@ -665,7 +699,7 @@ INPUT_PORTS_END static const s16 maniac_speaker_levels[] = { 0, 0x7fff, -0x8000, 0 }; -static MACHINE_CONFIG_START( maniac, maniac_state ) +static MACHINE_CONFIG_START( maniac ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PIC1655, 1000000) // approximation - RC osc. R=~13.4K, C=470pF @@ -821,7 +855,7 @@ void leboom_state::machine_start() save_item(NAME(m_speaker_volume)); } -static MACHINE_CONFIG_START( leboom, leboom_state ) +static MACHINE_CONFIG_START( leboom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PIC1655, 1000000) // approximation @@ -931,7 +965,7 @@ static INPUT_PORTS_START( tbaskb ) PORT_CONFSETTING( 0x00, "2" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( tbaskb, tbaskb_state ) +static MACHINE_CONFIG_START( tbaskb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PIC1655, 950000) // approximation - RC osc. R=18K, C=47pF @@ -1040,7 +1074,7 @@ INPUT_PORTS_END static const s16 rockpin_speaker_levels[] = { 0, 0x7fff, -0x8000, 0 }; -static MACHINE_CONFIG_START( rockpin, rockpin_state ) +static MACHINE_CONFIG_START( rockpin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PIC1650, 450000) // approximation - RC osc. R=47K, C=47pF @@ -1158,7 +1192,7 @@ static INPUT_PORTS_START( hccbaskb ) PORT_CONFSETTING( 0x00, "2" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( hccbaskb, hccbaskb_state ) +static MACHINE_CONFIG_START( hccbaskb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PIC1655, 950000) // approximation - RC osc. R=15K, C=47pF @@ -1310,7 +1344,7 @@ static INPUT_PORTS_START( ttfballa ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY INPUT_PORTS_END -static MACHINE_CONFIG_START( ttfball, ttfball_state ) +static MACHINE_CONFIG_START( ttfball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PIC1655, 1000000) // approximation - RC osc. R=27K(set 1) or 33K(set 2), C=68pF @@ -1336,7 +1370,7 @@ MACHINE_CONFIG_END U.S. Games Programmable Baseball * PIC 1650A-133 - * x + * 3 7seg LEDs + 36 other LEDs, 1-bit sound known releases: - USA(1): Programmable Baseball @@ -1352,54 +1386,86 @@ public: { } void prepare_display(); - DECLARE_READ8_MEMBER(read_a); + DECLARE_WRITE8_MEMBER(write_a); DECLARE_WRITE8_MEMBER(write_b); DECLARE_WRITE8_MEMBER(write_c); + DECLARE_WRITE8_MEMBER(write_d); }; // handlers void uspbball_state::prepare_display() { + // D0-D2 are 7segs + set_display_segmask(7, 0x7f); + display_matrix(16, 6, m_c << 8 | m_b, m_d); } -READ8_MEMBER(uspbball_state::read_a) +WRITE8_MEMBER(uspbball_state::write_a) { - return 0xff; + // A0: speaker out + m_speaker->level_w(data & 1); } WRITE8_MEMBER(uspbball_state::write_b) { + // B: digit segment data + m_b = BITSWAP8(data,0,1,2,3,4,5,6,7); + prepare_display(); } WRITE8_MEMBER(uspbball_state::write_c) { + // C: led data + m_c = ~data; + prepare_display(); +} + +WRITE8_MEMBER(uspbball_state::write_d) +{ + // D0-D5: led/digit select + m_d = ~data; + prepare_display(); } // config static INPUT_PORTS_START( uspbball ) - PORT_START("IN.0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) + PORT_START("IN.0") // port A + PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Curve Right") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Slow") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL PORT_NAME("P2 Fast") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_COCKTAIL PORT_NAME("P2 Curve Left") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_COCKTAIL PORT_NAME("P2 Change Up/Fielder") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Batter") + + PORT_START("IN.1") // port D + PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_CONFNAME( 0x80, 0x80, DEF_STR( Players ) ) + PORT_CONFSETTING( 0x80, "1" ) + PORT_CONFSETTING( 0x00, "2" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( uspbball, uspbball_state ) +static MACHINE_CONFIG_START( uspbball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PIC1650, 1000000) // approximation - RC osc. R=22K, C=47pF - MCFG_PIC16C5x_READ_A_CB(READ8(uspbball_state, read_a)) + MCFG_PIC16C5x_READ_A_CB(IOPORT("IN.0")) + MCFG_PIC16C5x_WRITE_A_CB(WRITE8(uspbball_state, write_a)) + MCFG_PIC16C5x_READ_B_CB(CONSTANT(0xff)) MCFG_PIC16C5x_WRITE_B_CB(WRITE8(uspbball_state, write_b)) + MCFG_PIC16C5x_READ_C_CB(CONSTANT(0xff)) MCFG_PIC16C5x_WRITE_C_CB(WRITE8(uspbball_state, write_c)) + MCFG_PIC16C5x_READ_D_CB(IOPORT("IN.1")) + MCFG_PIC16C5x_WRITE_D_CB(WRITE8(uspbball_state, write_d)) MCFG_DEVICE_ADD("clock", CLOCK, 1000000/4) // PIC CLKOUT, tied to RTCC MCFG_CLOCK_SIGNAL_HANDLER(INPUTLINE("maincpu", PIC16C5x_RTCC)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_pic16_state, display_decay_tick, attotime::from_msec(1)) - //MCFG_DEFAULT_LAYOUT(layout_uspbball) + MCFG_DEFAULT_LAYOUT(layout_hh_pic16_test) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1432,53 +1498,109 @@ public: void prepare_display(); DECLARE_READ8_MEMBER(read_a); + DECLARE_WRITE8_MEMBER(write_a); DECLARE_WRITE8_MEMBER(write_b); DECLARE_WRITE8_MEMBER(write_c); + DECLARE_WRITE8_MEMBER(write_d); }; // handlers void us2pfball_state::prepare_display() { + set_display_segmask(0xff, 0x7f); + display_matrix(7, 10, m_c, m_d | (m_a << 6 & 0x300)); } READ8_MEMBER(us2pfball_state::read_a) { - return 0xff; + // A0,A1: multiplexed inputs, A4-A7: other inputs + return (read_inputs(4) & 3) | (m_inp_matrix[4]->read() & 0xf0) | 0x0c; +} + +WRITE8_MEMBER(us2pfball_state::write_a) +{ + // A2,A3: leds + m_a = data; + prepare_display(); } WRITE8_MEMBER(us2pfball_state::write_b) { + // B0-B3: input mux + m_inp_mux = data & 0xf; } WRITE8_MEMBER(us2pfball_state::write_c) { + // C7: speaker out + m_speaker->level_w(data >> 7 & 1); + + // C0-C6: digit segments + m_c = data; + prepare_display(); +} + +WRITE8_MEMBER(us2pfball_state::write_d) +{ + // D0-D7: digit select + m_d = ~data; + prepare_display(); } // config static INPUT_PORTS_START( us2pfball ) - PORT_START("IN.0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) + PORT_START("IN.0") // B0 port A low + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_16WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_16WAY + + PORT_START("IN.1") // B1 port A low + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_16WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_16WAY + + PORT_START("IN.2") // B2 port A low + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_16WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_16WAY + + PORT_START("IN.3") // B3 port A low + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_16WAY + + PORT_START("IN.4") // port A high + PORT_CONFNAME( 0x10, 0x10, DEF_STR( Players ) ) + PORT_CONFSETTING( 0x10, "1" ) + PORT_CONFSETTING( 0x00, "2" ) + PORT_CONFNAME( 0x20, 0x20, DEF_STR( Difficulty ) ) + PORT_CONFSETTING( 0x20, "1" ) // college + PORT_CONFSETTING( 0x00, "2" ) // pro + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SELECT ) PORT_TOGGLE PORT_NAME("Play Selector") // pass + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Kick/Pass") // K/P + + PORT_START("IN.5") // port B + PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START ) PORT_NAME("Status/Score") // S INPUT_PORTS_END -static MACHINE_CONFIG_START( us2pfball, us2pfball_state ) +static MACHINE_CONFIG_START( us2pfball ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", PIC1650, 1000000) // approximation - RC osc. R=39K, C=75pF + MCFG_CPU_ADD("maincpu", PIC1650, 800000) // approximation - RC osc. R=39K, C=75pF MCFG_PIC16C5x_READ_A_CB(READ8(us2pfball_state, read_a)) + MCFG_PIC16C5x_WRITE_A_CB(WRITE8(us2pfball_state, write_a)) + MCFG_PIC16C5x_READ_B_CB(IOPORT("IN.5")) MCFG_PIC16C5x_WRITE_B_CB(WRITE8(us2pfball_state, write_b)) + MCFG_PIC16C5x_READ_C_CB(CONSTANT(0xff)) MCFG_PIC16C5x_WRITE_C_CB(WRITE8(us2pfball_state, write_c)) + MCFG_PIC16C5x_READ_D_CB(CONSTANT(0xff)) + MCFG_PIC16C5x_WRITE_D_CB(WRITE8(us2pfball_state, write_d)) - MCFG_DEVICE_ADD("clock", CLOCK, 1000000/4) // PIC CLKOUT, tied to RTCC + MCFG_DEVICE_ADD("clock", CLOCK, 800000/4) // PIC CLKOUT, tied to RTCC MCFG_CLOCK_SIGNAL_HANDLER(INPUTLINE("maincpu", PIC16C5x_RTCC)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_pic16_state, display_decay_tick, attotime::from_msec(1)) - //MCFG_DEFAULT_LAYOUT(layout_us2pfball) + MCFG_DEFAULT_LAYOUT(layout_us2pfball) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1568,24 +1690,24 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1979, touchme, 0, 0, touchme, touchme, driver_device, 0, "Atari", "Touch Me (handheld, Rev 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1979, touchme, 0, 0, touchme, touchme, touchme_state, 0, "Atari", "Touch Me (handheld, Rev 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, pabball, 0, 0, pabball, pabball, driver_device, 0, "Caprice / Calfax", "Pro-Action Baseball", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1979, pabball, 0, 0, pabball, pabball, pabball_state, 0, "Caprice / Calfax", "Pro-Action Baseball", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -CONS( 1980, melodym, 0, 0, melodym, melodym, driver_device, 0, "GAF", "Melody Madness", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, melodym, 0, 0, melodym, melodym, melodym_state, 0, "GAF", "Melody Madness", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, maniac, 0, 0, maniac, maniac, driver_device, 0, "Ideal", "Maniac", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, maniac, 0, 0, maniac, maniac, maniac_state, 0, "Ideal", "Maniac", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, leboom, 0, 0, leboom, leboom, driver_device, 0, "Lakeside", "Le Boom", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, leboom, 0, 0, leboom, leboom, leboom_state, 0, "Lakeside", "Le Boom", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, tbaskb, 0, 0, tbaskb, tbaskb, driver_device, 0, "Tandy Radio Shack", "Electronic Basketball (Tandy)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, tbaskb, 0, 0, tbaskb, tbaskb, tbaskb_state, 0, "Tandy Radio Shack", "Electronic Basketball (Tandy)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, rockpin, 0, 0, rockpin, rockpin, driver_device, 0, "Tiger Electronics", "Rocket Pinball", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, hccbaskb, 0, 0, hccbaskb, hccbaskb, driver_device, 0, "Tiger Electronics", "Half Court Computer Basketball", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, rockpin, 0, 0, rockpin, rockpin, rockpin_state, 0, "Tiger Electronics", "Rocket Pinball", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, hccbaskb, 0, 0, hccbaskb, hccbaskb, hccbaskb_state, 0, "Tiger Electronics", "Half Court Computer Basketball", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, ttfball, 0, 0, ttfball, ttfball, driver_device, 0, "Toytronic", "Football (Toytronic, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -CONS( 1979, ttfballa, ttfball, 0, ttfball, ttfballa, driver_device, 0, "Toytronic", "Football (Toytronic, set 2)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, ttfball, 0, 0, ttfball, ttfball, ttfball_state, 0, "Toytronic", "Football (Toytronic, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +CONS( 1979, ttfballa, ttfball, 0, ttfball, ttfballa, ttfball_state, 0, "Toytronic", "Football (Toytronic, set 2)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, uspbball, 0, 0, uspbball, uspbball, driver_device, 0, "U.S. Games", "Programmable Baseball", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -CONS( 1981, us2pfball, 0, 0, us2pfball, us2pfball, driver_device, 0, "U.S. Games", "Electronic 2-Player Football", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1981, uspbball, 0, 0, uspbball, uspbball, uspbball_state, 0, "U.S. Games", "Programmable Baseball", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1981, us2pfball, 0, 0, us2pfball, us2pfball, us2pfball_state, 0, "U.S. Games", "Electronic 2-Player Football", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hh_sm500.cpp b/src/mame/drivers/hh_sm500.cpp new file mode 100644 index 00000000000..af9091652f4 --- /dev/null +++ b/src/mame/drivers/hh_sm500.cpp @@ -0,0 +1,130 @@ +// license:BSD-3-Clause +// copyright-holders:hap +/*************************************************************************** + + Sharp SM500(and derivatives) handhelds. + + TODO: + - it's a skeleton driver + +***************************************************************************/ + +#include "emu.h" + +#include "cpu/sm510/kb1013vk1-2.h" +#include "sound/spkrdev.h" + +#include "screen.h" +#include "speaker.h" + +//#include "hh_sm500_test.lh" // common test-layout - use external artwork + + +class hh_sm500_state : public driver_device +{ +public: + hh_sm500_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_inp_matrix(*this, "IN.%u", 0), + m_speaker(*this, "speaker") + { } + + // devices + required_device m_maincpu; + optional_ioport_array<2> m_inp_matrix; // max 2 + optional_device m_speaker; + + // misc common + u16 m_inp_mux; // multiplexed inputs mask + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; +}; + + +// machine start/reset + +void hh_sm500_state::machine_start() +{ + // zerofill + m_inp_mux = 0; + + // register for savestates + save_item(NAME(m_inp_mux)); +} + +void hh_sm500_state::machine_reset() +{ +} + + + +/*************************************************************************** + + Helper Functions + +***************************************************************************/ + + + +/*************************************************************************** + + Minidrivers (subclass, I/O, Inputs, Machine Config) + +***************************************************************************/ + +/*************************************************************************** + + IM-02 Nu, Pogodi! + * KB1013VK1-2, die label V2-2 VK1-2 + +***************************************************************************/ + +class nupogodi_state : public hh_sm500_state +{ +public: + nupogodi_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_sm500_state(mconfig, type, tag) + { } +}; + +// handlers + + +// config + +static INPUT_PORTS_START( nupogodi ) +INPUT_PORTS_END + +static MACHINE_CONFIG_START( nupogodi ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", KB1013VK12, XTAL_32_768kHz) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + + Game driver(s) + +***************************************************************************/ + +ROM_START( nupogodi ) + ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "nupogodi.bin", 0x0000, 0x0740, CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) +ROM_END + + + +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1984, nupogodi, 0, 0, nupogodi, nupogodi, nupogodi_state, 0, "Elektronika", "Nu, pogodi!", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp index 9515983b463..e3f45513494 100644 --- a/src/mame/drivers/hh_sm510.cpp +++ b/src/mame/drivers/hh_sm510.cpp @@ -2,17 +2,21 @@ // copyright-holders:hap, Sean Riddle /*************************************************************************** - Sharp SM510 MCU x.. + Sharp SM510/SM511 handhelds. TODO: - - barnacles + - svg lcd screen background/foreground (not supported in core) + - ktmnt: "LIMIT" flickers when going underwater on level 1 ***************************************************************************/ #include "emu.h" + #include "cpu/sm510/sm510.h" -#include "cpu/sm510/kb1013vk1-2.h" #include "sound/spkrdev.h" + +#include "rendlay.h" +#include "screen.h" #include "speaker.h" #include "hh_sm510_test.lh" // common test-layout - use external artwork @@ -31,7 +35,7 @@ public: // devices required_device m_maincpu; - optional_ioport_array<5> m_inp_matrix; // max 5 + optional_ioport_array<7> m_inp_matrix; // max 7 optional_device m_speaker; // misc common @@ -43,10 +47,12 @@ public: virtual void update_k_line(); virtual DECLARE_INPUT_CHANGED_MEMBER(input_changed); + virtual DECLARE_INPUT_CHANGED_MEMBER(acl_button); virtual DECLARE_READ8_MEMBER(input_r); virtual DECLARE_WRITE8_MEMBER(input_w); + virtual DECLARE_WRITE8_MEMBER(piezo_r1_w); + virtual DECLARE_WRITE8_MEMBER(piezo_r2_w); virtual DECLARE_WRITE16_MEMBER(lcd_segment_w); - virtual DECLARE_WRITE8_MEMBER(sm511_melody_w); protected: virtual void machine_start() override; @@ -142,15 +148,27 @@ READ8_MEMBER(hh_sm510_state::input_r) return read_inputs(m_inp_lines); } +INPUT_CHANGED_MEMBER(hh_sm510_state::acl_button) +{ + // ACL button is directly tied to MCU ACL pin + m_maincpu->set_input_line(SM510_INPUT_LINE_ACL, newval ? ASSERT_LINE : CLEAR_LINE); +} + // other generic output handlers -WRITE8_MEMBER(hh_sm510_state::sm511_melody_w) +WRITE8_MEMBER(hh_sm510_state::piezo_r1_w) { - // SM511 R pin is melody output + // R1 to piezo (SM511 R pin is melody output) m_speaker->level_w(data & 1); } +WRITE8_MEMBER(hh_sm510_state::piezo_r2_w) +{ + // R2 to piezo + m_speaker->level_w(data >> 1 & 1); +} + @@ -177,21 +195,80 @@ public: { m_inp_lines = 3; } - - DECLARE_WRITE8_MEMBER(speaker_w); }; -// handlers +// config -WRITE8_MEMBER(ktopgun_state::speaker_w) -{ - m_speaker->level_w(data >> 0 & 1); -} +static INPUT_PORTS_START( ktopgun ) + PORT_START("IN.0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_START("IN.1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + + PORT_START("IN.2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start") + PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("All Clear") +INPUT_PORTS_END + +static MACHINE_CONFIG_START( ktopgun ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz) + MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) + MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r)) + MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w)) + + /* video hardware */ + MCFG_SCREEN_SVG_ADD("screen", "svg") + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_SIZE(1611, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 1611-1, 0, 1080-1) + MCFG_DEFAULT_LAYOUT(layout_svg) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + + Konami Contra + * PCB label BH002 + * Sharp SM511 under epoxy (die label KMS73B, KMS773) + + Contra handheld is titled simply "C" in the USA. + +***************************************************************************/ + +class kcontra_state : public hh_sm510_state +{ +public: + kcontra_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_sm510_state(mconfig, type, tag) + { + m_inp_lines = 3; + } +}; // config -static INPUT_PORTS_START( ktopgun ) +static INPUT_PORTS_START( kcontra ) PORT_START("IN.0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) @@ -205,22 +282,28 @@ static INPUT_PORTS_START( ktopgun ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_START("IN.2") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start") PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("All Clear") INPUT_PORTS_END -static MACHINE_CONFIG_START( ktopgun, ktopgun_state ) +static MACHINE_CONFIG_START( kcontra ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz) - MCFG_SM510_WRITE_SEGA_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGB_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) + MCFG_CPU_ADD("maincpu", SM511, XTAL_32_768kHz) + MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r)) MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) - MCFG_SM510_WRITE_R_CB(WRITE8(ktopgun_state, speaker_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w)) - MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test) + /* video hardware */ + MCFG_SCREEN_SVG_ADD("screen", "svg") + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_SIZE(1501, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 1501-1, 0, 1080-1) + MCFG_DEFAULT_LAYOUT(layout_svg) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -236,7 +319,7 @@ MACHINE_CONFIG_END Konami Teenage Mutant Ninja Turtles * PCB label BH005 - * Sharp SM511 under epoxy (die label KMS 73B, KMS 774) + * Sharp SM511 under epoxy (die label KMS73B, KMS774) ***************************************************************************/ @@ -260,32 +343,35 @@ static INPUT_PORTS_START( ktmnt ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_START("IN.1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game Select") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Sound") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("On/Start") - //Wouldn't be better if IPT_START for "On/Start" was used??? - //Well, this here is a very preliminary driver, nothing final yet. How about some tea??? + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start") PORT_START("IN.2") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("All Clear") INPUT_PORTS_END -static MACHINE_CONFIG_START( ktmnt, ktmnt_state ) +static MACHINE_CONFIG_START( ktmnt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SM511, XTAL_32_768kHz) - MCFG_SM510_WRITE_SEGA_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGB_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) + MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r)) MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) - MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, sm511_melody_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w)) - MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test) + /* video hardware */ + MCFG_SCREEN_SVG_ADD("screen", "svg") + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_SIZE(1380, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 1380-1, 0, 1080-1) + MCFG_DEFAULT_LAYOUT(layout_svg) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -301,7 +387,7 @@ MACHINE_CONFIG_END Konami Gradius * PCB label BH004 - * Sharp SM511 under epoxy (die label KMS 73B, KMS 774) + * Sharp SM511 under epoxy (die label KMS73B, KMS774) ***************************************************************************/ @@ -319,7 +405,7 @@ public: static INPUT_PORTS_START( kgradius ) PORT_START("IN.0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Sound") @@ -329,20 +415,26 @@ static INPUT_PORTS_START( kgradius ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("All Clear") INPUT_PORTS_END -static MACHINE_CONFIG_START( kgradius, kgradius_state ) +static MACHINE_CONFIG_START( kgradius ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SM511, XTAL_32_768kHz) - MCFG_SM510_WRITE_SEGA_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGB_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) + MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r)) MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) - MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, sm511_melody_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w)) - MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test) + /* video hardware */ + MCFG_SCREEN_SVG_ADD("screen", "svg") + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_SIZE(1435, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 1435-1, 0, 1080-1) + MCFG_DEFAULT_LAYOUT(layout_svg) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -358,7 +450,7 @@ MACHINE_CONFIG_END Konami Lone Ranger * PCB label BH009 - * Sharp SM511 under epoxy (die label KMS 73B, KMS 781) + * Sharp SM511 under epoxy (die label KMS73B, KMS781) ***************************************************************************/ @@ -375,31 +467,37 @@ public: // config static INPUT_PORTS_START( kloneran ) - PORT_START("IN.0") // S3? + PORT_START("IN.0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) - PORT_START("IN.1") // S2? + PORT_START("IN.1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Sound") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start") + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("All Clear") INPUT_PORTS_END -static MACHINE_CONFIG_START( kloneran, kloneran_state ) +static MACHINE_CONFIG_START( kloneran ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SM511, XTAL_32_768kHz) - MCFG_SM510_WRITE_SEGA_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGB_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) + MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r)) MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) - MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, sm511_melody_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w)) - MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test) + /* video hardware */ + MCFG_SCREEN_SVG_ADD("screen", "svg") + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_SIZE(1495, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 1495-1, 0, 1080-1) + MCFG_DEFAULT_LAYOUT(layout_svg) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -410,62 +508,126 @@ MACHINE_CONFIG_END + /*************************************************************************** Nintendo Game & Watch: Mickey & Donald (model DM-53) * PCB label DM-53 - * Sharp SM510 label DM-53 (die label CMS54C, CMS565) + * Sharp SM510 label DM-53 52ZC (die label CMS54C, CMS565) ***************************************************************************/ -class gnwmndon_state : public hh_sm510_state +class dm53_state : public hh_sm510_state { public: - gnwmndon_state(const machine_config &mconfig, device_type type, const char *tag) + dm53_state(const machine_config &mconfig, device_type type, const char *tag) : hh_sm510_state(mconfig, type, tag) { m_inp_lines = 2; } - - DECLARE_WRITE8_MEMBER(speaker_w); }; -// handlers +// config -WRITE8_MEMBER(gnwmndon_state::speaker_w) -{ - m_speaker->level_w(data >> 1 & 1); -} +static INPUT_PORTS_START( dm53 ) + PORT_START("IN.0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + + PORT_START("IN.1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm") + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL") +INPUT_PORTS_END +static MACHINE_CONFIG_START( dm53 ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz) + MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) + MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r)) + MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r2_w)) + + /* video hardware */ + MCFG_SCREEN_SVG_ADD("screen", "svg") + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_SIZE(802, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 802-1, 0, 1080-1) + MCFG_DEFAULT_LAYOUT(layout_svg) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + + Nintendo Game & Watch: Donkey Kong II (model JR-55) + * PCB label JR-55 + * Sharp SM510 label JR-55 53YC (die label CMS54C, KMS560) + +***************************************************************************/ + +class jr55_state : public hh_sm510_state +{ +public: + jr55_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_sm510_state(mconfig, type, tag) + { + m_inp_lines = 3; + } +}; // config -static INPUT_PORTS_START( gnwmndon ) +static INPUT_PORTS_START( jr55 ) PORT_START("IN.0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_START("IN.1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // time - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // b - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // a - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // alarm + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + + PORT_START("IN.2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm") + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL") INPUT_PORTS_END -static MACHINE_CONFIG_START( gnwmndon, gnwmndon_state ) +static MACHINE_CONFIG_START( jr55 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz) - MCFG_SM510_WRITE_SEGA_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGB_CB(WRITE16(hh_sm510_state, lcd_segment_w)) - MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) + MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r)) MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) - MCFG_SM510_WRITE_R_CB(WRITE8(gnwmndon_state, speaker_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w)) - MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test) + /* video hardware */ + MCFG_SCREEN_SVG_ADD("screen", "svg") + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_SIZE(802, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 802-1, 0, 1080-1) + MCFG_DEFAULT_LAYOUT(layout_svg) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -479,33 +641,141 @@ MACHINE_CONFIG_END /*************************************************************************** - IM-02 Nu, Pogodi! - * KB1013VK1-2, die label V2-2 VK1-2 + Nintendo Game & Watch: Mario's Cement Factory (model ML-102) + * Sharp SM510 label ML-102 298D (die label CMS54C, KMS577) ***************************************************************************/ -class nupogodi_state : public hh_sm510_state +class ml102_state : public hh_sm510_state { public: - nupogodi_state(const machine_config &mconfig, device_type type, const char *tag) + ml102_state(const machine_config &mconfig, device_type type, const char *tag) : hh_sm510_state(mconfig, type, tag) { m_inp_lines = 2; } }; -// handlers +// config + +static INPUT_PORTS_START( ml102 ) + PORT_START("IN.0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm") + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL") +INPUT_PORTS_END + +static MACHINE_CONFIG_START( ml102 ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz) + MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) + MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r)) + MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w)) + + /* video hardware */ + MCFG_SCREEN_SVG_ADD("screen", "svg") + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_SIZE(1759, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 1759-1, 0, 1080-1) + MCFG_DEFAULT_LAYOUT(layout_svg) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + +/*************************************************************************** + + Nintendo Game & Watch: Boxing (model BX-301) + * Sharp SM511 label BX-301 287C (die label KMS73B, KMS744) + + Also known as Punch-Out!! in the USA. + +***************************************************************************/ + +class bx301_state : public hh_sm510_state +{ +public: + bx301_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_sm510_state(mconfig, type, tag) + { + m_inp_lines = 7; + } +}; + // config -static INPUT_PORTS_START( nupogodi ) +static INPUT_PORTS_START( bx301 ) + PORT_START("IN.0") + PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_PLAYER(2) + + PORT_START("IN.1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.2") + PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_PLAYER(2) + + PORT_START("IN.3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.4") + PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_PLAYER(2) + + PORT_START("IN.5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm") + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL") INPUT_PORTS_END -static MACHINE_CONFIG_START( nupogodi, nupogodi_state ) +static MACHINE_CONFIG_START( bx301 ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", KB1013VK12, XTAL_32_768kHz) + MCFG_CPU_ADD("maincpu", SM511, XTAL_32_768kHz) + MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, lcd_segment_w)) + MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r)) + MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w)) + + /* video hardware */ + MCFG_SCREEN_SVG_ADD("screen", "svg") + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_SIZE(1920, 529) + MCFG_SCREEN_VISIBLE_AREA(0, 1920-1, 0, 529-1) + MCFG_DEFAULT_LAYOUT(layout_svg) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -526,65 +796,108 @@ MACHINE_CONFIG_END ROM_START( ktopgun ) // except for filler/unused bytes, ROM listing in patent US5137277 "BH003 Top Gun" is same ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "cms54c_kms598", 0x0000, 0x1000, CRC(50870b35) SHA1(cda1260c2e1c180995eced04b7d7ff51616dcef5) ) + + ROM_REGION( 423317, "svg", 0) + ROM_LOAD( "ktopgun.svg", 0, 423317, BAD_DUMP CRC(1e341717) SHA1(74f4ae3fa0e4aacfda76d46753a5a06f115d221f) ) // by Sean, ver. 11 apr 2017 ROM_END -ROM_START( ktmnt ) // except for filler/unused bytes, ROM listing in patent US5150899 "BH005 TMNT" prog/music is same +ROM_START( kcontra ) // except for filler/unused bytes, ROM listing in patent US5120057 "BH002 C (Contra)" program/melody is same ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "kms73b_kms774.prog", 0x0000, 0x1000, CRC(a1064f87) SHA1(92156c35fbbb414007ee6804fe635128a741d5f1) ) + ROM_LOAD( "kms73b_kms773.program", 0x0000, 0x1000, CRC(bf834877) SHA1(055dd56ec16d63afba61ab866481fd9c029fb54d) ) - ROM_REGION( 0x100, "maincpu:music", 0 ) - ROM_LOAD( "kms73b_kms774.music", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) ) + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "kms73b_kms773.melody", 0x000, 0x100, CRC(23d02b99) SHA1(703938e496db0eeacd14fe7605d4b5c39e0a5bc8) ) + + ROM_REGION( 710430, "svg", 0) + ROM_LOAD( "kcontra.svg", 0, 710430, BAD_DUMP CRC(66cfc3a2) SHA1(bd38d62bb14321dfec2f99c1cd9346fb5f1fd856) ) // by Sean, ver. 11 apr 2017 ROM_END -ROM_START( kcontra ) // except for filler/unused bytes, ROM listing in patent US5120057 "BH002 C (Contra)" prog/music is same +ROM_START( ktmnt ) // except for filler/unused bytes, ROM listing in patent US5150899 "BH005 TMNT" program/melody is same ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "kms73b_kms773.prog", 0x0000, 0x1000, CRC(bf834877) SHA1(055dd56ec16d63afba61ab866481fd9c029fb54d) ) + ROM_LOAD( "kms73b_kms774.program", 0x0000, 0x1000, CRC(a1064f87) SHA1(92156c35fbbb414007ee6804fe635128a741d5f1) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "kms73b_kms774.melody", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) ) - ROM_REGION( 0x100, "maincpu:music", 0 ) - ROM_LOAD( "kms73b_kms773.music", 0x000, 0x100, CRC(23d02b99) SHA1(703938e496db0eeacd14fe7605d4b5c39e0a5bc8) ) + ROM_REGION( 607424, "svg", 0) + ROM_LOAD( "ktmnt.svg", 0, 607424, BAD_DUMP CRC(54ce0f2e) SHA1(1cd2d4c3026e8693f234ddfbbbe5f24311e5981d) ) // by Sean, ver. 11 apr 2017 ROM_END ROM_START( kgradius ) ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "kms73b_kms771.prog", 0x0000, 0x1000, CRC(830c2afc) SHA1(bb9ebd4e52831cc02cd92dd4b37675f34cf37b8c) ) + ROM_LOAD( "kms73b_kms771.program", 0x0000, 0x1000, CRC(830c2afc) SHA1(bb9ebd4e52831cc02cd92dd4b37675f34cf37b8c) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "kms73b_kms771.melody", 0x000, 0x100, CRC(4c586b73) SHA1(14c5ab2898013a577f678970a648c374749cc66d) ) - ROM_REGION( 0x100, "maincpu:music", 0 ) - ROM_LOAD( "kms73b_kms771.music", 0x000, 0x100, CRC(4c586b73) SHA1(14c5ab2898013a577f678970a648c374749cc66d) ) + ROM_REGION( 628695, "svg", 0) + ROM_LOAD( "kgradius.svg", 0, 628695, BAD_DUMP CRC(56ac8ee8) SHA1(c47190e7aaebbe84ed1ad55a8e88f5ebb18f939b) ) // by Sean, ver. 11 apr 2017 ROM_END ROM_START( kloneran ) ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "kms73b_kms781.prog", 0x0000, 0x1000, CRC(52b9735f) SHA1(06c5ef6e7e781b1176d4c1f2445f765ccf18b3f7) ) + ROM_LOAD( "kms73b_kms781.program", 0x0000, 0x1000, CRC(52b9735f) SHA1(06c5ef6e7e781b1176d4c1f2445f765ccf18b3f7) ) - ROM_REGION( 0x100, "maincpu:music", 0 ) - ROM_LOAD( "kms73b_kms781.music", 0x000, 0x100, CRC(a393de36) SHA1(55089f04833ccb318524ab2b584c4817505f4019) ) + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "kms73b_kms781.melody", 0x000, 0x100, CRC(a393de36) SHA1(55089f04833ccb318524ab2b584c4817505f4019) ) + + ROM_REGION( 630184, "svg", 0) + ROM_LOAD( "kloneran.svg", 0, 630184, BAD_DUMP CRC(9b254520) SHA1(c9c85df44cc16f59f25df418b2e1aeba9f2f470c) ) // by Sean, ver. 11 apr 2017 ROM_END -ROM_START( gnwmndon ) +ROM_START( gnw_dm53 ) ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "dm53_cms54c_565", 0x0000, 0x1000, CRC(e21fc0f5) SHA1(3b65ccf9f98813319410414e11a3231b787cdee6) ) + ROM_LOAD( "dm53_cms54c_cms565", 0x0000, 0x1000, CRC(e21fc0f5) SHA1(3b65ccf9f98813319410414e11a3231b787cdee6) ) + + ROM_REGION( 195362, "svg", 0) + ROM_LOAD( "gnw_dm53.svg", 0, 195362, BAD_DUMP CRC(3aa1cdfa) SHA1(cc938d05160fdefb9f030e9d9caeaf6ff472ffe3) ) // by OG/hap, ver. 17 may 2017 ROM_END -ROM_START( nupogodi ) - ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 ) - ROM_LOAD( "nupogodi.bin", 0x0000, 0x0740, CRC(cb820c32) SHA1(7e94fc255f32db725d5aa9e196088e490c1a1443) ) +ROM_START( gnw_jr55 ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "jr55_cms54c_kms560", 0x0000, 0x1000, CRC(46aed0ae) SHA1(72f75ccbd84aea094148c872fc7cc1683619a18a) ) + + ROM_REGION( 405524, "svg", 0) + ROM_LOAD( "gnw_jr55.svg", 0, 405524, BAD_DUMP CRC(5124fd7a) SHA1(5043fcb27975d79a358451824d5b341bd4f7193a) ) // by Reinier/hap, ver. 7 may 2017 +ROM_END + + +ROM_START( gnw_ml102 ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "ml102_cms54c_kms577", 0x0000, 0x1000, CRC(c1128dea) SHA1(8647e36f43a0e37756a3c7b6a3f08d4c8243f1cc) ) + + ROM_REGION( 300571, "svg", 0) + ROM_LOAD( "gnw_ml102.svg", 0, 300571, BAD_DUMP CRC(8d8be5a9) SHA1(ee3a761ee956b86c064c83a15e4b833f83c23520) ) // by Sean/hap/JonasP, ver. 17 may 2017 ROM_END +ROM_START( gnw_bx301 ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "bx301_kms73b_kms744.program", 0x0000, 0x1000, CRC(0fdf0303) SHA1(0b791c9d4874e9534d0a9b7a8968ce02fe4bee96) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "bx301_kms73b_kms744.melody", 0x000, 0x100, CRC(439d943d) SHA1(52880df15ec7513f96482f455ef3d9778aa24750) ) + + ROM_REGION( 258514, "svg", 0) + ROM_LOAD( "gnw_bx301.svg", 0, 258514, BAD_DUMP CRC(7b251101) SHA1(002e41374517f1fd8cecd66a2b2338aac736f319) ) // by Sean, ver. 11 apr 2017 +ROM_END + -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1989, kcontra, 0, 0, ktmnt, ktopgun, driver_device, 0, "Konami", "Contra (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) -CONS( 1989, ktopgun, 0, 0, ktopgun, ktopgun, driver_device, 0, "Konami", "Top Gun (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) -CONS( 1989, ktmnt, 0, 0, ktmnt, ktmnt, driver_device, 0, "Konami", "Teenage Mutant Ninja Turtles (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) -CONS( 1989, kgradius, 0, 0, kgradius, kgradius, driver_device, 0, "Konami", "Gradius (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) -CONS( 1989, kloneran, 0, 0, kloneran, kloneran, driver_device, 0, "Konami", "Lone Ranger (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) -CONS( 1982, gnwmndon, 0, 0, gnwmndon, gnwmndon, driver_device, 0, "Nintendo", "Game & Watch: Mickey & Donald", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1989, ktopgun, 0, 0, ktopgun, ktopgun, ktopgun_state, 0, "Konami", "Top Gun (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, kcontra, 0, 0, kcontra, kcontra, kcontra_state, 0, "Konami", "Contra (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, ktmnt, 0, 0, ktmnt, ktmnt, ktmnt_state, 0, "Konami", "Teenage Mutant Ninja Turtles (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, kgradius, 0, 0, kgradius, kgradius, kgradius_state, 0, "Konami", "Gradius (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, kloneran, 0, 0, kloneran, kloneran, kloneran_state, 0, "Konami", "Lone Ranger (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1984, nupogodi, 0, 0, nupogodi, nupogodi, driver_device, 0, "Elektronika", "Nu, pogodi!", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) +CONS( 1982, gnw_dm53, 0, 0, dm53, dm53, dm53_state, 0, "Nintendo", "Game & Watch: Mickey & Donald", MACHINE_SUPPORTS_SAVE ) +CONS( 1983, gnw_jr55, 0, 0, jr55, jr55, jr55_state, 0, "Nintendo", "Game & Watch: Donkey Kong II", MACHINE_SUPPORTS_SAVE ) +CONS( 1983, gnw_ml102, 0, 0, ml102, ml102, ml102_state, 0, "Nintendo", "Game & Watch: Mario's Cement Factory", MACHINE_SUPPORTS_SAVE ) +CONS( 1984, gnw_bx301, 0, 0, bx301, bx301, bx301_state, 0, "Nintendo", "Game & Watch: Boxing", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index cbded704dde..9eff9992015 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -82,6 +82,7 @@ @MP3476 TMS1100 1979, Milton Bradley Super Simon MP3479 TMS1100 1980, MicroVision cartridge: Baseball MP3481 TMS1100 1979, MicroVision cartridge: Connect Four + *MP3489 TMS1100 1980, Kenner Live Action Football @MP3491 TMS1100 1979, Mattel Thoroughbred Horse Race Analyzer MP3496 TMS1100 1980, MicroVision cartridge: Sea Duel M34009 TMS1100 1981, MicroVision cartridge: Alien Raiders (note: MP3498, MP3499, M3400x..) @@ -123,7 +124,6 @@ - some of the games rely on the fact that faster/longer strobed leds appear brighter, eg. tc4/h2hfootb(offense), bankshot(cue ball), ... - stopthiep: unable to start a game (may be intentional?) - - tbreakup: some of the leds flicker (rom and PLAs doublechecked) - 7in1ss: in 2-player mode, game select and skill select can be configured after selecting a game? - bship discrete sound, netlist is documented @@ -528,7 +528,7 @@ INPUT_PORTS_END static const s16 matchnum_speaker_levels[4] = { 0, 0x7fff, -0x8000, 0 }; -static MACHINE_CONFIG_START( matchnum, matchnum_state ) +static MACHINE_CONFIG_START( matchnum ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 325000) // approximation - RC osc. R=47K, C=47pF @@ -708,7 +708,7 @@ static const u16 mathmagi_output_pla[0x20] = lA+lF+lE+lD+lC // G }; -static MACHINE_CONFIG_START( mathmagi, mathmagi_state ) +static MACHINE_CONFIG_START( mathmagi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 175000) // approximation - RC osc. R=68K, C=82pF @@ -814,7 +814,7 @@ static INPUT_PORTS_START( bcheetah ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") INPUT_PORTS_END -static MACHINE_CONFIG_START( bcheetah, bcheetah_state ) +static MACHINE_CONFIG_START( bcheetah ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 100000) // approximation - RC osc. R=47K, C=47pF @@ -941,7 +941,7 @@ static INPUT_PORTS_START( amaztron ) PORT_BIT( 0x1c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( amaztron, amaztron_state ) +static MACHINE_CONFIG_START( amaztron ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 300000) // approximation - RC osc. R=33K?, C=100pF @@ -1118,7 +1118,7 @@ static const u16 zodiac_output_pla[0x20] = lB+lC+lD+lE+lF // U }; -static MACHINE_CONFIG_START( zodiac, zodiac_state ) +static MACHINE_CONFIG_START( zodiac ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 500000) // approximation - RC osc. R=18K, C=100pF @@ -1234,7 +1234,7 @@ static INPUT_PORTS_START( cqback ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY INPUT_PORTS_END -static MACHINE_CONFIG_START( cqback, cqback_state ) +static MACHINE_CONFIG_START( cqback ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 310000) // approximation - RC osc. R=33K, C=100pF @@ -1352,7 +1352,7 @@ static INPUT_PORTS_START( h2hfootb ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY INPUT_PORTS_END -static MACHINE_CONFIG_START( h2hfootb, h2hfootb_state ) +static MACHINE_CONFIG_START( h2hfootb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 310000) // approximation - RC osc. R=39K, C=100pF @@ -1491,7 +1491,7 @@ void h2hbaseb_state::machine_reset() set_clock(); } -static MACHINE_CONFIG_START( h2hbaseb, h2hbaseb_state ) +static MACHINE_CONFIG_START( h2hbaseb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1170, 350000) // see set_clock @@ -1603,7 +1603,7 @@ static INPUT_PORTS_START( h2hboxing ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Block") INPUT_PORTS_END -static MACHINE_CONFIG_START( h2hboxing, h2hboxing_state ) +static MACHINE_CONFIG_START( h2hboxing ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 350000) // approximation - RC osc. R=39K, C=100pF @@ -1629,7 +1629,7 @@ MACHINE_CONFIG_END Coleco Quiz Wiz Challenger * TMS1000NLL M32001-N2 (die label 1000E, M32001) * 4 7seg LEDs, 17 other LEDs, 1-bit sound - + This is a 4-player version of Quiz Wiz, a multiple choice quiz game. According to the manual, Quiz Wiz cartridges are compatible with it. The question books are needed to play, as well as optional game pieces. @@ -1664,6 +1664,9 @@ public: DECLARE_WRITE16_MEMBER(write_r); DECLARE_WRITE16_MEMBER(write_o); DECLARE_READ8_MEMBER(read_k); + +protected: + virtual void machine_start() override; }; // handlers @@ -1763,7 +1766,15 @@ static INPUT_PORTS_START( quizwizc ) PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( quizwizc, quizwizc_state ) +void quizwizc_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // register for savestates + save_item(NAME(m_pinout)); +} + +static MACHINE_CONFIG_START( quizwizc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 300000) // approximation - RC osc. R=43K, C=100pF @@ -1781,6 +1792,7 @@ static MACHINE_CONFIG_START( quizwizc, quizwizc_state ) /* cartridge */ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "quizwiz_cart") + MCFG_GENERIC_MANDATORY MCFG_GENERIC_LOAD(quizwizc_state, cartridge) MCFG_SOFTWARE_LIST_ADD("cart_list", "quizwiz") MACHINE_CONFIG_END @@ -1829,6 +1841,9 @@ public: DECLARE_WRITE16_MEMBER(write_r); DECLARE_WRITE16_MEMBER(write_o); DECLARE_READ8_MEMBER(read_k); + +protected: + virtual void machine_start() override; }; // handlers @@ -1927,7 +1942,15 @@ static INPUT_PORTS_START( tc4 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 D/K Button") INPUT_PORTS_END -static MACHINE_CONFIG_START( tc4, tc4_state ) +void tc4_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // register for savestates + save_item(NAME(m_pinout)); +} + +static MACHINE_CONFIG_START( tc4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1400, 450000) // approximation - RC osc. R=27.3K, C=100pF @@ -2042,7 +2065,7 @@ static INPUT_PORTS_START( cnbaskb ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( cnbaskb, cnbaskb_state ) +static MACHINE_CONFIG_START( cnbaskb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 400000) // approximation - RC osc. R=39K, C=47pF @@ -2155,7 +2178,7 @@ static INPUT_PORTS_START( cmsport ) PORT_CONFSETTING( 0x08, "2" ) // professional INPUT_PORTS_END -static MACHINE_CONFIG_START( cmsport, cmsport_state ) +static MACHINE_CONFIG_START( cmsport ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 375000) // approximation - RC osc. R=47K, C=47pF @@ -2281,7 +2304,7 @@ INPUT_PORTS_END static const s16 cnfball_speaker_levels[4] = { 0, 0x7fff, -0x8000, 0 }; -static MACHINE_CONFIG_START( cnfball, cnfball_state ) +static MACHINE_CONFIG_START( cnfball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 400000) // approximation - RC osc. R=39K, C=47pF @@ -2407,7 +2430,7 @@ static const u16 cnfball2_output_pla[0x20] = 0, 0, 0, 0, 0, 0, 0, 0 }; -static MACHINE_CONFIG_START( cnfball2, cnfball2_state ) +static MACHINE_CONFIG_START( cnfball2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 375000) // approximation - RC osc. R=47K, C=47pF @@ -2436,7 +2459,7 @@ MACHINE_CONFIG_END CONIC 102-001, led PCB: CONIC 100-003 REV A itac * TMS1000NLL MP0908 (die label 1000B, MP0908) * 2 7seg LEDs, 30 other LEDs, 1-bit sound - + This is a peg solitaire game, with random start position. known releases: @@ -2549,7 +2572,7 @@ INPUT_CHANGED_MEMBER(eleciq_state::reset_button) m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); } -static MACHINE_CONFIG_START( eleciq, eleciq_state ) +static MACHINE_CONFIG_START( eleciq ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 325000) // approximation - RC osc. R=47K, C=50pF @@ -2654,7 +2677,7 @@ static INPUT_PORTS_START( esoccer ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL INPUT_PORTS_END -static MACHINE_CONFIG_START( esoccer, esoccer_state ) +static MACHINE_CONFIG_START( esoccer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 350000) // approximation - RC osc. R=47K, C=33pF @@ -2788,7 +2811,7 @@ static INPUT_PORTS_START( ebball ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Batter") INPUT_PORTS_END -static MACHINE_CONFIG_START( ebball, ebball_state ) +static MACHINE_CONFIG_START( ebball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 375000) // approximation - RC osc. R=43K, C=47pF @@ -2911,7 +2934,7 @@ static INPUT_PORTS_START( ebball2 ) PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ebball2, ebball2_state ) +static MACHINE_CONFIG_START( ebball2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 350000) // approximation - RC osc. R=47K, C=47pF @@ -3091,7 +3114,7 @@ void ebball3_state::machine_reset() set_clock(); } -static MACHINE_CONFIG_START( ebball3, ebball3_state ) +static MACHINE_CONFIG_START( ebball3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 340000) // see set_clock @@ -3202,7 +3225,7 @@ static INPUT_PORTS_START( esbattle ) PORT_CONFSETTING( 0x00, "2" ) // Manual INPUT_PORTS_END -static MACHINE_CONFIG_START( esbattle, esbattle_state ) +static MACHINE_CONFIG_START( esbattle ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 425000) // approximation - RC osc. R=47K, C=33pF @@ -3311,7 +3334,7 @@ void einvader_state::machine_reset() set_clock(); } -static MACHINE_CONFIG_START( einvader, einvader_state ) +static MACHINE_CONFIG_START( einvader ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 320000) // see set_clock @@ -3431,7 +3454,7 @@ static INPUT_PORTS_START( efootb4 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( efootb4, efootb4_state ) +static MACHINE_CONFIG_START( efootb4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1670, 475000) // approximation - RC osc. R=42K, C=47pF @@ -3552,7 +3575,7 @@ static INPUT_PORTS_START( ebaskb2 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY INPUT_PORTS_END -static MACHINE_CONFIG_START( ebaskb2, ebaskb2_state ) +static MACHINE_CONFIG_START( ebaskb2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 360000) // approximation - RC osc. R=33K, C=82pF @@ -3691,7 +3714,7 @@ void raisedvl_state::machine_reset() set_clock(); } -static MACHINE_CONFIG_START( raisedvl, raisedvl_state ) +static MACHINE_CONFIG_START( raisedvl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 350000) // see set_clock @@ -3822,7 +3845,7 @@ INPUT_CHANGED_MEMBER(f2pbball_state::reset_button) m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); } -static MACHINE_CONFIG_START( f2pbball, f2pbball_state ) +static MACHINE_CONFIG_START( f2pbball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 325000) // approximation - RC osc. R=51K, C=39pF @@ -3966,7 +3989,7 @@ void gpoker_state::machine_reset() m_beeper->set_state(0); } -static MACHINE_CONFIG_START( gpoker, gpoker_state ) +static MACHINE_CONFIG_START( gpoker ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1370, 350000) // approximation - RC osc. R=47K, C=47pF @@ -4079,7 +4102,7 @@ static INPUT_PORTS_START( gjackpot ) PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( gjackpot, gjackpot_state ) +static MACHINE_CONFIG_START( gjackpot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1670, 450000) // approximation - RC osc. R=47K, C=47pF @@ -4184,7 +4207,7 @@ static INPUT_PORTS_START( ginv1000 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ginv1000, ginv1000_state ) +static MACHINE_CONFIG_START( ginv1000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1370, 340000) // approximation @@ -4327,7 +4350,7 @@ static INPUT_PORTS_START( fxmcr165 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("Address Set") INPUT_PORTS_END -static MACHINE_CONFIG_START( fxmcr165, fxmcr165_state ) +static MACHINE_CONFIG_START( fxmcr165 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, XTAL_400kHz) @@ -4455,7 +4478,7 @@ INPUT_PORTS_END static const s16 elecdet_speaker_levels[4] = { 0, 0x3fff, 0x3fff, 0x7fff }; -static MACHINE_CONFIG_START( elecdet, elecdet_state ) +static MACHINE_CONFIG_START( elecdet ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation @@ -4583,7 +4606,7 @@ static INPUT_PORTS_START( starwbc ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Right") INPUT_PORTS_END -static MACHINE_CONFIG_START( starwbc, starwbc_state ) +static MACHINE_CONFIG_START( starwbc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 325000) // approximation - RC osc. R=51K, C=47pF @@ -4710,7 +4733,7 @@ static INPUT_PORTS_START( astro ) PORT_CONFSETTING( 0x08, "Astro" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( astro, astro_state ) +static MACHINE_CONFIG_START( astro ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1470, 450000) // approximation - RC osc. R=4.7K, C=33pF @@ -4875,7 +4898,7 @@ static const u16 elecbowl_output_pla[0x20] = 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f }; -static MACHINE_CONFIG_START( elecbowl, elecbowl_state ) +static MACHINE_CONFIG_START( elecbowl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 350000) // approximation - RC osc. R=33K, C=100pF @@ -5029,7 +5052,7 @@ static INPUT_PORTS_START( horseran ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") INPUT_PORTS_END -static MACHINE_CONFIG_START( horseran, horseran_state ) +static MACHINE_CONFIG_START( horseran ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 300000) // approximation - RC osc. R=56K, C=47pF @@ -5207,7 +5230,7 @@ static INPUT_PORTS_START( mdndclab ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Dragon Attacks / Dragon Wakes") INPUT_PORTS_END -static MACHINE_CONFIG_START( mdndclab, mdndclab_state ) +static MACHINE_CONFIG_START( mdndclab ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 475000) // approximation - RC osc. R=27K, C=100pF @@ -5311,7 +5334,7 @@ static INPUT_PORTS_START( comp4 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") INPUT_PORTS_END -static MACHINE_CONFIG_START( comp4, comp4_state ) +static MACHINE_CONFIG_START( comp4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation @@ -5461,7 +5484,7 @@ static INPUT_PORTS_START( bship ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Clear Last Entry") INPUT_PORTS_END -static MACHINE_CONFIG_START( bship, bship_state ) +static MACHINE_CONFIG_START( bship ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 200000) // approximation - RC osc. R=100K, C=47pF @@ -5544,7 +5567,7 @@ WRITE16_MEMBER(bshipb_state::write_o) m_sn->vco_w(data >> 4 & 1); // O5: R11 27K to SN76477 pin 23 - m_sn->one_shot_cap_w((data & 0x20) ? RES_K(27) : RES_INF); + m_sn->one_shot_cap_w((data & 0x20) ? RES_K(27) : 0); // O6: SN76477 pin 25 m_sn->mixer_b_w(data >> 6 & 1); @@ -5564,7 +5587,7 @@ READ8_MEMBER(bshipb_state::read_k) // buttons are same as bship set -static MACHINE_CONFIG_START( bshipb, bshipb_state ) +static MACHINE_CONFIG_START( bshipb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 200000) // approximation - RC osc. R=100K, C=47pF @@ -5682,7 +5705,7 @@ static INPUT_PORTS_START( simon ) PORT_CONFSETTING( 0x01, "4" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( simon, simon_state ) +static MACHINE_CONFIG_START( simon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 350000) // approximation - RC osc. R=33K, C=100pF @@ -5823,7 +5846,7 @@ void ssimon_state::machine_reset() set_clock(); } -static MACHINE_CONFIG_START( ssimon, ssimon_state ) +static MACHINE_CONFIG_START( ssimon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 275000) // see set_clock @@ -6003,7 +6026,7 @@ void bigtrak_state::machine_start() static const s16 bigtrak_speaker_levels[8] = { 0, 0x7fff/3, 0x7fff/3, 0x7fff/3*2, 0x7fff/3, 0x7fff/3*2, 0x7fff/3*2, 0x7fff }; -static MACHINE_CONFIG_START( bigtrak, bigtrak_state ) +static MACHINE_CONFIG_START( bigtrak ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 200000) // approximation - RC osc. R=83K, C=100pF @@ -6236,7 +6259,7 @@ void mbdtower_state::machine_start() save_item(NAME(m_sensor_blind)); } -static MACHINE_CONFIG_START( mbdtower, mbdtower_state ) +static MACHINE_CONFIG_START( mbdtower ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1400, 425000) // approximation - RC osc. R=43K, C=56pF @@ -6355,7 +6378,7 @@ static INPUT_PORTS_START( cnsector ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Teach Mode") INPUT_PORTS_END -static MACHINE_CONFIG_START( cnsector, cnsector_state ) +static MACHINE_CONFIG_START( cnsector ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation @@ -6469,7 +6492,7 @@ INPUT_PORTS_END static const s16 merlin_speaker_levels[8] = { 0, 0x7fff/3, 0x7fff/3, 0x7fff/3*2, 0x7fff/3, 0x7fff/3*2, 0x7fff/3*2, 0x7fff }; -static MACHINE_CONFIG_START( merlin, merlin_state ) +static MACHINE_CONFIG_START( merlin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 350000) // approximation - RC osc. R=33K, C=100pF @@ -6533,7 +6556,7 @@ static INPUT_PORTS_START( mmerlin ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Score") // instead of Hit Me INPUT_PORTS_END -static MACHINE_CONFIG_START( mmerlin, mmerlin_state ) +static MACHINE_CONFIG_START( mmerlin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1400, 425000) // approximation - RC osc. R=30K, C=100pF @@ -6648,7 +6671,7 @@ INPUT_PORTS_END static const s16 stopthief_speaker_levels[7] = { 0, 0x7fff/6, 0x7fff/5, 0x7fff/4, 0x7fff/3, 0x7fff/2, 0x7fff }; -static MACHINE_CONFIG_START( stopthief, stopthief_state ) +static MACHINE_CONFIG_START( stopthief ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation @@ -6757,7 +6780,7 @@ static INPUT_PORTS_START( bankshot ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bankshot, bankshot_state ) +static MACHINE_CONFIG_START( bankshot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1400, 475000) // approximation - RC osc. R=24K, C=100pF @@ -6868,7 +6891,7 @@ static INPUT_PORTS_START( splitsec ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( splitsec, splitsec_state ) +static MACHINE_CONFIG_START( splitsec ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1400, 475000) // approximation - RC osc. R=24K, C=100pF @@ -6986,7 +7009,7 @@ static const s16 lostreas_speaker_levels[16] = 0x7fff/8, 0x7fff/7, 0x7fff/6, 0x7fff/5, 0x7fff/4, 0x7fff/3, 0x7fff/2, 0x7fff/1 }; -static MACHINE_CONFIG_START( lostreas, lostreas_state ) +static MACHINE_CONFIG_START( lostreas ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 425000) // approximation - RC osc. R=39K, C=47pF @@ -7096,7 +7119,7 @@ static INPUT_PORTS_START( tcfball ) PORT_CONFSETTING( 0x08, "2" ) // professional INPUT_PORTS_END -static MACHINE_CONFIG_START( tcfball, tcfball_state ) +static MACHINE_CONFIG_START( tcfball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 375000) // approximation - RC osc. R=56K, C=24pF @@ -7160,7 +7183,7 @@ static const u16 tcfballa_output_pla[0x20] = 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -static MACHINE_CONFIG_START( tcfballa, tcfballa_state ) +static MACHINE_CONFIG_START( tcfballa ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 375000) // approximation - RC osc. R=47K, C=50pF @@ -7324,7 +7347,7 @@ static const u16 tandy12_output_pla[0x20] = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -static MACHINE_CONFIG_START( tandy12, tandy12_state ) +static MACHINE_CONFIG_START( tandy12 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 400000) // approximation - RC osc. R=39K, C=47pF @@ -7433,7 +7456,7 @@ static INPUT_PORTS_START( monkeysee ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".") INPUT_PORTS_END -static MACHINE_CONFIG_START( monkeysee, monkeysee_state ) +static MACHINE_CONFIG_START( monkeysee ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 250000) // approximation - RC osc. R=68K, C=47pF @@ -7582,7 +7605,7 @@ static INPUT_PORTS_START( speechp ) PORT_CONFSETTING( 0x00, DEF_STR( Normal ) ) INPUT_PORTS_END -static MACHINE_CONFIG_START( speechp, speechp_state ) +static MACHINE_CONFIG_START( speechp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 400000) // approximation - RC osc. R=39K, C=47pF @@ -7687,7 +7710,7 @@ INPUT_PORTS_END static const s16 copycat_speaker_levels[4] = { 0, 0x7fff, -0x8000, 0 }; -static MACHINE_CONFIG_START( copycat, copycat_state ) +static MACHINE_CONFIG_START( copycat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 320000) // approximation - RC osc. R=47K, C=47pF @@ -7763,7 +7786,7 @@ static INPUT_PORTS_START( copycatm2 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Green Button") INPUT_PORTS_END -static MACHINE_CONFIG_START( copycatm2, copycatm2_state ) +static MACHINE_CONFIG_START( copycatm2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1730, 275000) // approximation - RC osc. R=100K, C=47pF @@ -7834,7 +7857,7 @@ static INPUT_PORTS_START( ditto ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Red Button") INPUT_PORTS_END -static MACHINE_CONFIG_START( ditto, ditto_state ) +static MACHINE_CONFIG_START( ditto ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1730, 275000) // approximation - RC osc. R=100K, C=47pF @@ -7949,7 +7972,7 @@ static INPUT_PORTS_START( ss7in1 ) PORT_BIT( 0x0c, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ss7in1, ss7in1_state ) +static MACHINE_CONFIG_START( ss7in1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1400, 450000) // approximation - RC osc. R=47K, C=47pF @@ -8041,10 +8064,6 @@ void tbreakup_state::prepare_display() m_display_state[y] = (m_r >> y & 1) ? (m_o & 0x7f) : 0; } - // 22 round leds from O2-O7 and expander port 7 - for (int y = 2; y < 8; y++) - m_display_state[y] = (m_o >> y & 1) ? m_exp_port[6] : 0; - // 24 rectangular leds from expander ports 1-6 (not strobed) for (int y = 0; y < 6; y++) m_display_state[y+8] = m_exp_port[y]; @@ -8082,6 +8101,10 @@ WRITE16_MEMBER(tbreakup_state::write_o) // O0-O3: TMS1025 port H m_expander->write_h(space, 0, data & 0xf); + // 22 round leds from O2-O7 and expander port 7 (update here) + for (int y = 2; y < 8; y++) + m_display_state[y] = (data >> y & 1) ? m_exp_port[6] : 0; + // O0-O7: led state m_o = data; prepare_display(); @@ -8130,6 +8153,7 @@ void tbreakup_state::machine_reset() { hh_tms1k_state::machine_reset(); set_clock(); + m_expander->write_ms(1); // Vss } void tbreakup_state::machine_start() @@ -8141,7 +8165,7 @@ void tbreakup_state::machine_start() save_item(NAME(m_exp_port)); } -static MACHINE_CONFIG_START( tbreakup, tbreakup_state ) +static MACHINE_CONFIG_START( tbreakup ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1040, 325000) // see set_clock @@ -8150,13 +8174,13 @@ static MACHINE_CONFIG_START( tbreakup, tbreakup_state ) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tbreakup_state, write_o)) MCFG_DEVICE_ADD("expander", TMS1025, 0) - MCFG_TMS1025_WRITE_PORT_CB(TMS1025_PORT1, WRITE8(tbreakup_state, expander_w)) - MCFG_TMS1025_WRITE_PORT_CB(TMS1025_PORT2, WRITE8(tbreakup_state, expander_w)) - MCFG_TMS1025_WRITE_PORT_CB(TMS1025_PORT3, WRITE8(tbreakup_state, expander_w)) - MCFG_TMS1025_WRITE_PORT_CB(TMS1025_PORT4, WRITE8(tbreakup_state, expander_w)) - MCFG_TMS1025_WRITE_PORT_CB(TMS1025_PORT5, WRITE8(tbreakup_state, expander_w)) - MCFG_TMS1025_WRITE_PORT_CB(TMS1025_PORT6, WRITE8(tbreakup_state, expander_w)) - MCFG_TMS1025_WRITE_PORT_CB(TMS1025_PORT7, WRITE8(tbreakup_state, expander_w)) + MCFG_TMS1025_WRITE_PORT_CB(PORT1, WRITE8(tbreakup_state, expander_w)) + MCFG_TMS1025_WRITE_PORT_CB(PORT2, WRITE8(tbreakup_state, expander_w)) + MCFG_TMS1025_WRITE_PORT_CB(PORT3, WRITE8(tbreakup_state, expander_w)) + MCFG_TMS1025_WRITE_PORT_CB(PORT4, WRITE8(tbreakup_state, expander_w)) + MCFG_TMS1025_WRITE_PORT_CB(PORT5, WRITE8(tbreakup_state, expander_w)) + MCFG_TMS1025_WRITE_PORT_CB(PORT6, WRITE8(tbreakup_state, expander_w)) + MCFG_TMS1025_WRITE_PORT_CB(PORT7, WRITE8(tbreakup_state, expander_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_tbreakup) @@ -8272,7 +8296,7 @@ INPUT_CHANGED_MEMBER(phpball_state::flipper_button) output().set_lamp_value(90 + (int)(uintptr_t)param, newval); } -static MACHINE_CONFIG_START( phpball, phpball_state ) +static MACHINE_CONFIG_START( phpball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 375000) // approximation - RC osc. R=47K, C=47pF @@ -8407,7 +8431,7 @@ static const u16 ssports4_output_pla[0x20] = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }; -static MACHINE_CONFIG_START( ssports4, ssports4_state ) +static MACHINE_CONFIG_START( ssports4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, 375000) // approximation - RC osc. R=47K, C=47pF @@ -9174,91 +9198,91 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1979, matchnum, 0, 0, matchnum, matchnum, driver_device, 0, "A-One LSI", "Match Number", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1979, matchnum, 0, 0, matchnum, matchnum, matchnum_state, 0, "A-One LSI", "Match Number", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electronics Inc.", "Mathemagician", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, mathmagi_state, 0, "APF Electronics Inc.", "Mathemagician", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -CONS( 1979, bcheetah, 0, 0, bcheetah, bcheetah, driver_device, 0, "Bandai", "System Control Car: Cheetah", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_MECHANICAL ) // *** +CONS( 1979, bcheetah, 0, 0, bcheetah, bcheetah, bcheetah_state, 0, "Bandai", "System Control Car: Cheetah", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_MECHANICAL ) // *** -CONS( 1978, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** -COMP( 1979, zodiac, 0, 0, zodiac, zodiac, driver_device, 0, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE ) -CONS( 1978, cqback, 0, 0, cqback, cqback, driver_device, 0, "Coleco", "Electronic Quarterback", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, h2hfootb, 0, 0, h2hfootb, h2hfootb, driver_device, 0, "Coleco", "Head to Head Football", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, driver_device, 0, "Coleco", "Head to Head Baseball", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, h2hboxing, 0, 0, h2hboxing, h2hboxing, driver_device, 0, "Coleco", "Head to Head Boxing", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, quizwizc, 0, 0, quizwizc, quizwizc, driver_device, 0, "Coleco", "Quiz Wiz Challenger", MACHINE_SUPPORTS_SAVE ) // *** -CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +CONS( 1978, amaztron, 0, 0, amaztron, amaztron, amaztron_state, 0, "Coleco", "Amaze-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** +COMP( 1979, zodiac, 0, 0, zodiac, zodiac, zodiac_state, 0, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE ) +CONS( 1978, cqback, 0, 0, cqback, cqback, cqback_state, 0, "Coleco", "Electronic Quarterback", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, h2hfootb, 0, 0, h2hfootb, h2hfootb, h2hfootb_state, 0, "Coleco", "Head to Head Football", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, h2hbaseb_state, 0, "Coleco", "Head to Head Baseball", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, h2hboxing, 0, 0, h2hboxing, h2hboxing, h2hboxing_state, 0, "Coleco", "Head to Head Boxing", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, quizwizc, 0, 0, quizwizc, quizwizc, quizwizc_state, 0, "Coleco", "Quiz Wiz Challenger", MACHINE_SUPPORTS_SAVE ) // *** +CONS( 1981, tc4, 0, 0, tc4, tc4, tc4_state, 0, "Coleco", "Total Control 4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -CONS( 1979, cnbaskb, 0, 0, cnbaskb, cnbaskb, driver_device, 0, "Conic", "Electronic Basktetball (Conic)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, cmsport, 0, 0, cmsport, cmsport, driver_device, 0, "Conic", "Electronic Multisport", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -CONS( 1979, cnfball, 0, 0, cnfball, cnfball, driver_device, 0, "Conic", "Electronic Football (Conic, TMS1000 version)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, cnfball2, 0, 0, cnfball2, cnfball2, driver_device, 0, "Conic", "Electronic Football II (Conic)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, eleciq, 0, 0, eleciq, eleciq, driver_device, 0, "Conic", "Electronic I.Q.", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, cnbaskb, 0, 0, cnbaskb, cnbaskb, cnbaskb_state, 0, "Conic", "Electronic Basketball (Conic)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, cmsport, 0, 0, cmsport, cmsport, cmsport_state, 0, "Conic", "Electronic Multisport", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +CONS( 1979, cnfball, 0, 0, cnfball, cnfball, cnfball_state, 0, "Conic", "Electronic Football (Conic, TMS1000 version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, cnfball2, 0, 0, cnfball2, cnfball2, cnfball2_state, 0, "Conic", "Electronic Football II (Conic)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, eleciq, 0, 0, eleciq, eleciq, eleciq_state, 0, "Conic", "Electronic I.Q.", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, esoccer, 0, 0, esoccer, esoccer, driver_device, 0, "Entex", "Electronic Soccer (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Electronic Baseball (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, ebball2, 0, 0, ebball2, ebball2, driver_device, 0, "Entex", "Electronic Baseball 2 (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, ebball3, 0, 0, ebball3, ebball3, driver_device, 0, "Entex", "Electronic Baseball 3 (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, esbattle, 0, 0, esbattle, esbattle, driver_device, 0, "Entex", "Space Battle (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, einvader, 0, 0, einvader, einvader, driver_device, 0, "Entex", "Space Invader (Entex, TMS1100 version)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, efootb4 , 0, 0, efootb4, efootb4, driver_device, 0, "Entex", "Color Football 4 (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, ebaskb2 , 0, 0, ebaskb2, ebaskb2, driver_device, 0, "Entex", "Electronic Basketball 2 (Entex)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, raisedvl, 0, 0, raisedvl, raisedvl, driver_device, 0, "Entex", "Raise The Devil", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +CONS( 1979, esoccer, 0, 0, esoccer, esoccer, esoccer_state, 0, "Entex", "Electronic Soccer (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, ebball, 0, 0, ebball, ebball, ebball_state, 0, "Entex", "Electronic Baseball (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, ebball2, 0, 0, ebball2, ebball2, ebball2_state, 0, "Entex", "Electronic Baseball 2 (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, ebball3, 0, 0, ebball3, ebball3, ebball3_state, 0, "Entex", "Electronic Baseball 3 (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, esbattle, 0, 0, esbattle, esbattle, esbattle_state, 0, "Entex", "Space Battle (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, einvader, 0, 0, einvader, einvader, einvader_state, 0, "Entex", "Space Invader (Entex, TMS1100 version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, efootb4 , 0, 0, efootb4, efootb4, efootb4_state, 0, "Entex", "Color Football 4 (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, ebaskb2 , 0, 0, ebaskb2, ebaskb2, ebaskb2_state, 0, "Entex", "Electronic Basketball 2 (Entex)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, raisedvl, 0, 0, raisedvl, raisedvl, raisedvl_state, 0, "Entex", "Raise The Devil", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -CONS( 1979, f2pbball, 0, 0, f2pbball, f2pbball, driver_device, 0, "Fonas", "2 Player Baseball (Fonas)", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, f2pbball, 0, 0, f2pbball, f2pbball, f2pbball_state, 0, "Fonas", "2 Player Baseball (Fonas)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, gpoker, 0, 0, gpoker, gpoker, driver_device, 0, "Gakken", "Poker (Gakken, 1979 version)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, gjackpot, 0, 0, gjackpot, gjackpot, driver_device, 0, "Gakken", "Jackpot: Gin Rummy & Black Jack", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, ginv1000, 0, 0, ginv1000, ginv1000, driver_device, 0, "Gakken", "Galaxy Invader 1000", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, fxmcr165, 0, 0, fxmcr165, fxmcr165, driver_device, 0, "Gakken", "FX-Micom R-165", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, gpoker, 0, 0, gpoker, gpoker, gpoker_state, 0, "Gakken", "Poker (Gakken, 1979 version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, gjackpot, 0, 0, gjackpot, gjackpot, gjackpot_state, 0, "Gakken", "Jackpot: Gin Rummy & Black Jack", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, ginv1000, 0, 0, ginv1000, ginv1000, ginv1000_state, 0, "Gakken", "Galaxy Invader 1000", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, fxmcr165, 0, 0, fxmcr165, fxmcr165, fxmcr165_state, 0, "Gakken", "FX-Micom R-165", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, elecdet, 0, 0, elecdet, elecdet, driver_device, 0, "Ideal", "Electronic Detective", MACHINE_SUPPORTS_SAVE ) // *** +CONS( 1979, elecdet, 0, 0, elecdet, elecdet, elecdet_state, 0, "Ideal", "Electronic Detective", MACHINE_SUPPORTS_SAVE ) // *** -CONS( 1979, starwbc, 0, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, starwbcp, starwbc, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, starwbc, 0, 0, starwbc, starwbc, starwbc_state, 0, "Kenner", "Star Wars - Electronic Battle Command", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, starwbcp, starwbc, 0, starwbc, starwbc, starwbc_state, 0, "Kenner", "Star Wars - Electronic Battle Command (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -COMP( 1979, astro, 0, 0, astro, astro, driver_device, 0, "Kosmos", "Astro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, astro, 0, 0, astro, astro, astro_state, 0, "Kosmos", "Astro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, driver_device, 0, "Marx", "Electronic Bowling (Marx)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // *** +CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, elecbowl_state, 0, "Marx", "Electronic Bowling (Marx)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // *** -COMP( 1979, horseran, 0, 0, horseran, horseran, driver_device, 0, "Mattel", "Thoroughbred Horse Race Analyzer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -CONS( 1980, mdndclab, 0, 0, mdndclab, mdndclab, driver_device, 0, "Mattel", "Dungeons & Dragons - Computer Labyrinth Game", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** +COMP( 1979, horseran, 0, 0, horseran, horseran, horseran_state, 0, "Mattel", "Thoroughbred Horse Race Analyzer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +CONS( 1980, mdndclab, 0, 0, mdndclab, mdndclab, mdndclab_state, 0, "Mattel", "Dungeons & Dragons - Computer Labyrinth Game", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** -CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW ) -CONS( 1977, bship, 0, 0, bship, bship, driver_device, 0, "Milton Bradley", "Electronic Battleship (1977 version, model 4750A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // *** -CONS( 1977, bshipb, bship, 0, bshipb, bship, driver_device, 0, "Milton Bradley", "Electronic Battleship (1977 version, model 4750B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // *** -CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, simonf, simon, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev F)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, driver_device, 0, "Milton Bradley", "Big Trak", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) // *** -CONS( 1981, mbdtower, 0, 0, mbdtower, mbdtower, driver_device, 0, "Milton Bradley", "Dark Tower (Milton Bradley)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL ) // *** +CONS( 1977, comp4, 0, 0, comp4, comp4, comp4_state, 0, "Milton Bradley", "Comp IV", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW ) +CONS( 1977, bship, 0, 0, bship, bship, bship_state, 0, "Milton Bradley", "Electronic Battleship (1977 version, model 4750A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // *** +CONS( 1977, bshipb, bship, 0, bshipb, bship, bshipb_state, 0, "Milton Bradley", "Electronic Battleship (1977 version, model 4750B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // *** +CONS( 1978, simon, 0, 0, simon, simon, simon_state, 0, "Milton Bradley", "Simon (Rev A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, simonf, simon, 0, simon, simon, simon_state, 0, "Milton Bradley", "Simon (Rev F)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, ssimon, 0, 0, ssimon, ssimon, ssimon_state, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, bigtrak_state, 0, "Milton Bradley", "Big Trak", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) // *** +CONS( 1981, mbdtower, 0, 0, mbdtower, mbdtower, mbdtower_state, 0, "Milton Bradley", "Dark Tower (Milton Bradley)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL ) // *** -CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW ) // *** -CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, stopthief, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", MACHINE_SUPPORTS_SAVE ) // *** -CONS( 1979, stopthiefp,stopthief,0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // *** -CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1982, lostreas, 0, 0, lostreas, lostreas, driver_device, 0, "Parker Brothers", "Lost Treasure - The Electronic Deep-Sea Diving Game (Electronic Dive-Control Center)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** +CONS( 1977, cnsector, 0, 0, cnsector, cnsector, cnsector_state, 0, "Parker Brothers", "Code Name: Sector", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW ) // *** +CONS( 1978, merlin, 0, 0, merlin, merlin, merlin_state, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, stopthief, 0, 0, stopthief, stopthief, stopthief_state, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", MACHINE_SUPPORTS_SAVE ) // *** +CONS( 1979, stopthiefp, stopthief, 0, stopthief, stopthief, stopthief_state, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // *** +CONS( 1980, bankshot, 0, 0, bankshot, bankshot, bankshot_state, 0, "Parker Brothers", "Bank Shot - Electronic Pool", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, splitsec, 0, 0, splitsec, splitsec, splitsec_state, 0, "Parker Brothers", "Split Second", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, mmerlin_state, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1982, lostreas, 0, 0, lostreas, lostreas, lostreas_state, 0, "Parker Brothers", "Lost Treasure - The Electronic Deep-Sea Diving Game (Electronic Dive-Control Center)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** -CONS( 1980, tcfball, 0, 0, tcfball, tcfball, driver_device, 0, "Tandy Radio Shack", "Championship Football (model 60-2150)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, tcfballa, tcfball, 0, tcfballa, tcfballa, driver_device, 0, "Tandy Radio Shack", "Championship Football (model 60-2151)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: *** -CONS( 1982, monkeysee, 0, 0, monkeysee, monkeysee, driver_device, 0, "Tandy Radio Shack", "Monkey See (1982 version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, tcfball, 0, 0, tcfball, tcfball, tcfball_state, 0, "Tandy Radio Shack", "Championship Football (model 60-2150)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, tcfballa, tcfball, 0, tcfballa, tcfballa, tcfballa_state, 0, "Tandy Radio Shack", "Championship Football (model 60-2151)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, tandy12, 0, 0, tandy12, tandy12, tandy12_state, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: *** +CONS( 1982, monkeysee, 0, 0, monkeysee, monkeysee, monkeysee_state, 0, "Tandy Radio Shack", "Monkey See (1982 version)", MACHINE_SUPPORTS_SAVE ) -COMP( 1976, speechp, 0, 0, speechp, speechp, driver_device, 0, "Telesensory Systems, Inc.", "Speech+", MACHINE_SUPPORTS_SAVE ) +COMP( 1976, speechp, 0, 0, speechp, speechp, speechp_state, 0, "Telesensory Systems, Inc.", "Speech+", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, copycat, 0, 0, copycat, copycat, driver_device, 0, "Tiger Electronics", "Copy Cat (model 7-520)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1989, copycatm2, copycat, 0, copycatm2, copycatm2, driver_device, 0, "Tiger Electronics", "Copy Cat (model 7-522)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1981, ditto, 0, 0, ditto, ditto, driver_device, 0, "Tiger Electronics", "Ditto", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1982, 7in1ss, 0, 0, ss7in1, ss7in1, driver_device, 0, "Tiger Electronics", "7 in 1 Sports Stadium", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +CONS( 1979, copycat, 0, 0, copycat, copycat, copycat_state, 0, "Tiger Electronics", "Copy Cat (model 7-520)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1989, copycatm2, copycat, 0, copycatm2, copycatm2, copycatm2_state, 0, "Tiger Electronics", "Copy Cat (model 7-522)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1981, ditto, 0, 0, ditto, ditto, ditto_state, 0, "Tiger Electronics", "Ditto", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1982, 7in1ss, 0, 0, ss7in1, ss7in1, ss7in1_state, 0, "Tiger Electronics", "7 in 1 Sports Stadium", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, driver_device, 0, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, phpball, 0, 0, phpball, phpball, driver_device, 0, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, tbreakup_state, 0, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, phpball, 0, 0, phpball, phpball, phpball_state, 0, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -CONS( 1980, ssports4, 0, 0, ssports4, ssports4, driver_device, 0, "U.S. Games", "Super Sports-4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +CONS( 1980, ssports4, 0, 0, ssports4, ssports4, ssports4_state, 0, "U.S. Games", "Super Sports-4", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) // ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction // with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc. diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp index 43010dfff21..8cd3b477e5f 100644 --- a/src/mame/drivers/hh_ucom4.cpp +++ b/src/mame/drivers/hh_ucom4.cpp @@ -15,15 +15,17 @@ FIP = fluorescent indicator panel g = number of grids - A = revision of the VFD - M = custom display - 20 = unique display part number + r = revision of the VFD + c = custom display + s = unique display part number known chips: serial device etc. ---------------------------------------------------------------- + *055 uPD546C 1979, Fidelity Checker Challenger (CR) + @017 uPD552C 1979, Bambino UFO Master-Blaster Station (ET-02) @042 uPD552C 1980, Tomy Cosmic Combat (TN-??) @043 uPD552C 1979, Bambino Kick The Goal Soccer (ET-10) @@ -50,6 +52,7 @@ @511 uPD557LC 1980, Takatoku Toys Game Robot 9/Mego Fabulous Fred @512 uPD557LC 1980, Castle Toy Tactix + *513 uPD557LC 1980, Castle Toy Name That Tune @060 uPD650C 1979, Mattel Computer Gin *085 uPD650C 1980, Roland TR-808 @@ -345,7 +348,7 @@ INPUT_PORTS_END static const s16 ufombs_speaker_levels[] = { 0, 0x7fff, -0x8000, 0 }; -static MACHINE_CONFIG_START( ufombs, ufombs_state ) +static MACHINE_CONFIG_START( ufombs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation @@ -491,7 +494,7 @@ INPUT_PORTS_END static const s16 ssfball_speaker_levels[] = { 0, 0x7fff, -0x8000, 0 }; -static MACHINE_CONFIG_START( ssfball, ssfball_state ) +static MACHINE_CONFIG_START( ssfball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, 400000) // approximation @@ -619,7 +622,7 @@ static INPUT_PORTS_START( bmsoccer ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Shoot") INPUT_PORTS_END -static MACHINE_CONFIG_START( bmsoccer, bmsoccer_state ) +static MACHINE_CONFIG_START( bmsoccer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation @@ -727,7 +730,7 @@ static INPUT_PORTS_START( bmsafari ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY INPUT_PORTS_END -static MACHINE_CONFIG_START( bmsafari, bmsafari_state ) +static MACHINE_CONFIG_START( bmsafari ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation @@ -877,7 +880,7 @@ INPUT_PORTS_END static const s16 splasfgt_speaker_levels[] = { 0, 0x7fff, -0x8000, 0 }; -static MACHINE_CONFIG_START( splasfgt, splasfgt_state ) +static MACHINE_CONFIG_START( splasfgt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, 400000) // approximation @@ -981,7 +984,7 @@ static INPUT_PORTS_START( bcclimbr ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT ) INPUT_PORTS_END -static MACHINE_CONFIG_START( bcclimbr, bcclimbr_state ) +static MACHINE_CONFIG_START( bcclimbr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) @@ -1104,7 +1107,7 @@ static INPUT_PORTS_START( tactix ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( tactix, tactix_state ) +static MACHINE_CONFIG_START( tactix ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D557L, 400000) // approximation @@ -1198,7 +1201,7 @@ static INPUT_PORTS_START( invspace ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( invspace, invspace_state ) +static MACHINE_CONFIG_START( invspace ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D552, XTAL_400kHz) @@ -1316,7 +1319,7 @@ static INPUT_PORTS_START( efball ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY INPUT_PORTS_END -static MACHINE_CONFIG_START( efball, efball_state ) +static MACHINE_CONFIG_START( efball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) @@ -1415,7 +1418,7 @@ static INPUT_PORTS_START( galaxy2 ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( galaxy2, galaxy2_state ) +static MACHINE_CONFIG_START( galaxy2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) @@ -1533,7 +1536,7 @@ static INPUT_PORTS_START( astrocmd ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) INPUT_PORTS_END -static MACHINE_CONFIG_START( astrocmd, astrocmd_state ) +static MACHINE_CONFIG_START( astrocmd ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) @@ -1629,7 +1632,7 @@ static INPUT_PORTS_START( edracula ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) INPUT_PORTS_END -static MACHINE_CONFIG_START( edracula, edracula_state ) +static MACHINE_CONFIG_START( edracula ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) @@ -1711,7 +1714,7 @@ static INPUT_PORTS_START( mcompgin ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( mcompgin, mcompgin_state ) +static MACHINE_CONFIG_START( mcompgin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D650, 400000) // approximation @@ -1818,7 +1821,7 @@ static INPUT_PORTS_START( mvbfree ) PORT_CONFSETTING( 0x08, "3" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( mvbfree, mvbfree_state ) +static MACHINE_CONFIG_START( mvbfree ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, 400000) // approximation @@ -1937,7 +1940,7 @@ static INPUT_PORTS_START( grobot9 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_ucom4_state, single_interrupt_line, nullptr) PORT_NAME("Start-Pitch") INPUT_PORTS_END -static MACHINE_CONFIG_START( grobot9, grobot9_state ) +static MACHINE_CONFIG_START( grobot9 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D557L, 160000) // approximation @@ -2027,7 +2030,7 @@ static INPUT_PORTS_START( tccombat ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY INPUT_PORTS_END -static MACHINE_CONFIG_START( tccombat, tccombat_state ) +static MACHINE_CONFIG_START( tccombat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation @@ -2184,7 +2187,7 @@ void tmtennis_state::machine_reset() set_clock(); } -static MACHINE_CONFIG_START( tmtennis, tmtennis_state ) +static MACHINE_CONFIG_START( tmtennis ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D552, 360000) // see set_clock @@ -2293,7 +2296,7 @@ static INPUT_PORTS_START( tmpacman ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( tmpacman, tmpacman_state ) +static MACHINE_CONFIG_START( tmpacman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_430kHz) @@ -2396,7 +2399,7 @@ static INPUT_PORTS_START( tmscramb ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( tmscramb, tmscramb_state ) +static MACHINE_CONFIG_START( tmscramb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) @@ -2496,7 +2499,7 @@ static INPUT_PORTS_START( tcaveman ) PORT_CONFSETTING( 0x08, "Professional" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( tcaveman, tcaveman_state ) +static MACHINE_CONFIG_START( tcaveman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) @@ -2628,7 +2631,7 @@ static INPUT_PORTS_START( alnchase ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( alnchase, alnchase_state ) +static MACHINE_CONFIG_START( alnchase ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) @@ -2849,36 +2852,36 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1979, ufombs, 0, 0, ufombs, ufombs, driver_device, 0, "Bambino", "UFO Master-Blaster Station", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, ssfball, 0, 0, ssfball, ssfball, driver_device, 0, "Bambino", "Superstar Football", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, bmsoccer, 0, 0, bmsoccer, bmsoccer, driver_device, 0, "Bambino", "Kick The Goal Soccer", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, bmsafari, 0, 0, bmsafari, bmsafari, driver_device, 0, "Bambino", "Safari (Bambino)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, driver_device, 0, "Bambino", "Space Laser Fight", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1979, ufombs, 0, 0, ufombs, ufombs, ufombs_state, 0, "Bambino", "UFO Master-Blaster Station", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, ssfball, 0, 0, ssfball, ssfball, ssfball_state, 0, "Bambino", "Superstar Football", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, bmsoccer, 0, 0, bmsoccer, bmsoccer, bmsoccer_state, 0, "Bambino", "Kick The Goal Soccer", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, bmsafari, 0, 0, bmsafari, bmsafari, bmsafari_state, 0, "Bambino", "Safari (Bambino)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, splasfgt_state, 0, "Bambino", "Space Laser Fight", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, driver_device, 0, "Bandai", "Crazy Climber (Bandai)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, bcclimbr_state, 0, "Bandai", "Crazy Climber (Bandai)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, tactix, 0, 0, tactix, tactix, driver_device, 0, "Castle Toy", "Tactix (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, tactix, 0, 0, tactix, tactix, tactix_state, 0, "Castle Toy", "Tactix (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, invspace, 0, 0, invspace, invspace, driver_device, 0, "Epoch", "Invader From Space", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, efball, 0, 0, efball, efball, driver_device, 0, "Epoch", "Electronic Football (Epoch)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, galaxy2, 0, 0, galaxy2, galaxy2, driver_device, 0, "Epoch", "Galaxy II (VFD Rev. D)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, galaxy2b, galaxy2, 0, galaxy2b, galaxy2, driver_device, 0, "Epoch", "Galaxy II (VFD Rev. B)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, driver_device, 0, "Epoch", "Astro Command", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, invspace, 0, 0, invspace, invspace, invspace_state, 0, "Epoch", "Invader From Space", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, efball, 0, 0, efball, efball, efball_state, 0, "Epoch", "Electronic Football (Epoch)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, galaxy2, 0, 0, galaxy2, galaxy2, galaxy2_state, 0, "Epoch", "Galaxy II (VFD Rev. D)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, galaxy2b, galaxy2, 0, galaxy2b, galaxy2, galaxy2_state, 0, "Epoch", "Galaxy II (VFD Rev. B)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, astrocmd_state, 0, "Epoch", "Astro Command", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, edracula, 0, 0, edracula, edracula, edracula_state, 0, "Epoch", "Dracula (Epoch)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, mcompgin, 0, 0, mcompgin, mcompgin, driver_device, 0, "Mattel", "Computer Gin", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1979, mcompgin, 0, 0, mcompgin, mcompgin, mcompgin_state, 0, "Mattel", "Computer Gin", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, driver_device, 0, "Mego", "Mini-Vid Break Free", MACHINE_SUPPORTS_SAVE ) +CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, mvbfree_state, 0, "Mego", "Mini-Vid Break Free", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, grobot9, 0, 0, grobot9, grobot9, driver_device, 0, "Takatoku Toys", "Game Robot 9", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: *** +CONS( 1980, grobot9, 0, 0, grobot9, grobot9, grobot9_state, 0, "Takatoku Toys", "Game Robot 9", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: *** -CONS( 1980, tccombat, 0, 0, tccombat, tccombat, driver_device, 0, "Tomy", "Cosmic Combat", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomy)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", "Pac Man (Tomy)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, driver_device, 0, "Tomy", "Scramble (Tomy)", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, tcaveman, 0, 0, tcaveman, tcaveman, driver_device, 0, "Tomy", "Caveman (Tomy)", MACHINE_SUPPORTS_SAVE ) -CONS( 1984, alnchase, 0, 0, alnchase, alnchase, driver_device, 0, "Tomy", "Alien Chase", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, tccombat, 0, 0, tccombat, tccombat, tccombat_state, 0, "Tomy", "Cosmic Combat", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, tmtennis_state, 0, "Tomy", "Tennis (Tomy)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, tmpacman_state, 0, "Tomy", "Pac Man (Tomy)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, tmscramb_state, 0, "Tomy", "Scramble (Tomy)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, tcaveman, 0, 0, tcaveman, tcaveman, tcaveman_state, 0, "Tomy", "Caveman (Tomy)", MACHINE_SUPPORTS_SAVE ) +CONS( 1984, alnchase, 0, 0, alnchase, alnchase, alnchase_state, 0, "Tomy", "Alien Chase", MACHINE_SUPPORTS_SAVE ) // ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction // with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc. diff --git a/src/mame/drivers/hideseek.cpp b/src/mame/drivers/hideseek.cpp index 2d72d3c9750..cc98210c28c 100644 --- a/src/mame/drivers/hideseek.cpp +++ b/src/mame/drivers/hideseek.cpp @@ -96,7 +96,7 @@ PALETTE_INIT_MEMBER(hideseek_state, hideseek) -static MACHINE_CONFIG_START( hideseek, hideseek_state ) +static MACHINE_CONFIG_START( hideseek ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH2, 7372800 * 4 ) diff --git a/src/mame/drivers/higemaru.cpp b/src/mame/drivers/higemaru.cpp index bae44989a52..0f9b8914cf9 100644 --- a/src/mame/drivers/higemaru.cpp +++ b/src/mame/drivers/higemaru.cpp @@ -162,7 +162,7 @@ static GFXDECODE_START( higemaru ) GFXDECODE_END -static MACHINE_CONFIG_START( higemaru, higemaru_state ) +static MACHINE_CONFIG_START( higemaru ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) /* 3 MHz Sharp LH0080A Z80A-CPU-D */ @@ -223,4 +223,4 @@ ROM_START( higemaru ) ROM_END -GAME( 1984, higemaru, 0, higemaru, higemaru, driver_device, 0, ROT0, "Capcom", "Pirate Ship Higemaru", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, higemaru, 0, higemaru, higemaru, higemaru_state, 0, ROT0, "Capcom", "Pirate Ship Higemaru", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/highvdeo.cpp b/src/mame/drivers/highvdeo.cpp index 7476e1f0cf8..6fa7329ea31 100644 --- a/src/mame/drivers/highvdeo.cpp +++ b/src/mame/drivers/highvdeo.cpp @@ -1124,7 +1124,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, highvdeo_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( tv_vcf, highvdeo_state ) +static MACHINE_CONFIG_START( tv_vcf ) MCFG_CPU_ADD("maincpu", V30, XTAL_12MHz/2 ) // ? MCFG_CPU_PROGRAM_MAP(tv_vcf_map) MCFG_CPU_IO_MAP(tv_vcf_io) @@ -1202,7 +1202,7 @@ static MACHINE_CONFIG_DERIVED( ciclone, tv_tcf ) MCFG_CPU_VBLANK_INT_DRIVER("screen", highvdeo_state, vblank_irq_80186) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( brasil, highvdeo_state ) +static MACHINE_CONFIG_START( brasil ) MCFG_CPU_ADD("maincpu", I80186, 20000000 ) // fashion doesn't like 20/2 Mhz MCFG_CPU_PROGRAM_MAP(brasil_map) MCFG_CPU_IO_MAP(brasil_io) @@ -1228,7 +1228,7 @@ static MACHINE_CONFIG_START( brasil, highvdeo_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( grancapi, highvdeo_state ) +static MACHINE_CONFIG_START( grancapi ) MCFG_CPU_ADD("maincpu", I80186, 20000000 ) MCFG_CPU_PROGRAM_MAP(brasil_map) MCFG_CPU_IO_MAP(grancapi_io) @@ -1254,7 +1254,7 @@ static MACHINE_CONFIG_START( grancapi, highvdeo_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( magicbom, highvdeo_state ) +static MACHINE_CONFIG_START( magicbom ) MCFG_CPU_ADD("maincpu", I80186, 20000000 ) MCFG_CPU_PROGRAM_MAP(brasil_map) MCFG_CPU_IO_MAP(magicbom_io) @@ -1646,20 +1646,20 @@ DRIVER_INIT_MEMBER(highvdeo_state, record) } -GAMEL( 2000, tour4000, 0, tv_vcf, tv_vcf, driver_device, 0, ROT0, "High Video", "Tour 4000", 0, layout_fashion ) -GAMEL( 2000, cfever40, 0, tv_vcf, tv_vcf, driver_device, 0, ROT0, "High Video", "Casino Fever 4.0", 0, layout_fashion ) -GAMEL( 2000, cfever50, 0, tv_vcf, tv_vcf, driver_device, 0, ROT0, "High Video", "Casino Fever 5.0", 0, layout_fashion ) -GAMEL( 2000, tour4010, 0, tv_ncf, tv_ncf, driver_device, 0, ROT0, "High Video", "Tour 4010", 0, layout_fashion ) -GAMEL( 2000, cfever51, 0, tv_ncf, tv_ncf, driver_device, 0, ROT0, "High Video", "Casino Fever 5.1", 0, layout_fashion ) -GAMEL( 2000, cfever61, 0, tv_ncf, tv_ncf, driver_device, 0, ROT0, "High Video", "Casino Fever 6.1", 0, layout_fashion ) -GAMEL( 2000, nyjoker, 0, nyjoker, nyjoker, driver_device, 0, ROT0, "High Video", "New York Joker", 0, layout_fashion ) -GAMEL( 2000, cfever1k, 0, tv_tcf, tv_tcf, driver_device, 0, ROT0, "High Video", "Casino Fever 1k", 0, layout_fashion ) -GAMEL( 2000, girotutt, 0, tv_tcf, tv_tcf, driver_device, 0, ROT0, "High Video", "GiroTutto", 0, layout_fashion ) -GAMEL( 2000, galeone, 0, nyjoker, nyjoker, driver_device, 0, ROT0, "San Remo Games", "Il Galeone", 0, layout_fashion ) -GAMEL( 2000, ciclone, 0, ciclone, tv_tcf, highvdeo_state, ciclone, ROT0, "High Video", "Ciclone", 0, layout_fashion ) -GAMEL( 2000, newmcard, 0, newmcard, tv_tcf, driver_device, 0, ROT0, "High Video", "New Magic Card", 0, layout_fashion ) -GAMEL( 2000, brasil, 0, brasil, brasil, driver_device, 0, ROT0, "High Video", "Bra$il (Version 3)", 0, layout_fashion ) -GAMEL( 2000, fashion, brasil, brasil, fashion, highvdeo_state, fashion, ROT0, "High Video", "Fashion (Version 2.14)", 0, layout_fashion ) -GAMEL( 2000, grancapi, 0, grancapi, brasil, driver_device, 0, ROT0, "High Video", "Gran Capitan (Version 3)", MACHINE_NOT_WORKING, layout_fashion ) -GAMEL( 2000, magicbom, 0, magicbom, fashion, highvdeo_state, fashion, ROT0, "High Video", "Magic Bomb (Version 1)", MACHINE_NOT_WORKING, layout_fashion ) -GAMEL( 2000, record, 0, newmcard, tv_tcf, highvdeo_state, record, ROT0, "High Video", "Record (Version 1)", 0, layout_fashion ) +GAMEL( 2000, tour4000, 0, tv_vcf, tv_vcf, highvdeo_state, 0, ROT0, "High Video", "Tour 4000", 0, layout_fashion ) +GAMEL( 2000, cfever40, 0, tv_vcf, tv_vcf, highvdeo_state, 0, ROT0, "High Video", "Casino Fever 4.0", 0, layout_fashion ) +GAMEL( 2000, cfever50, 0, tv_vcf, tv_vcf, highvdeo_state, 0, ROT0, "High Video", "Casino Fever 5.0", 0, layout_fashion ) +GAMEL( 2000, tour4010, 0, tv_ncf, tv_ncf, highvdeo_state, 0, ROT0, "High Video", "Tour 4010", 0, layout_fashion ) +GAMEL( 2000, cfever51, 0, tv_ncf, tv_ncf, highvdeo_state, 0, ROT0, "High Video", "Casino Fever 5.1", 0, layout_fashion ) +GAMEL( 2000, cfever61, 0, tv_ncf, tv_ncf, highvdeo_state, 0, ROT0, "High Video", "Casino Fever 6.1", 0, layout_fashion ) +GAMEL( 2000, nyjoker, 0, nyjoker, nyjoker, highvdeo_state, 0, ROT0, "High Video", "New York Joker", 0, layout_fashion ) +GAMEL( 2000, cfever1k, 0, tv_tcf, tv_tcf, highvdeo_state, 0, ROT0, "High Video", "Casino Fever 1k", 0, layout_fashion ) +GAMEL( 2000, girotutt, 0, tv_tcf, tv_tcf, highvdeo_state, 0, ROT0, "High Video", "GiroTutto", 0, layout_fashion ) +GAMEL( 2000, galeone, 0, nyjoker, nyjoker, highvdeo_state, 0, ROT0, "San Remo Games", "Il Galeone", 0, layout_fashion ) +GAMEL( 2000, ciclone, 0, ciclone, tv_tcf, highvdeo_state, ciclone, ROT0, "High Video", "Ciclone", 0, layout_fashion ) +GAMEL( 2000, newmcard, 0, newmcard, tv_tcf, highvdeo_state, 0, ROT0, "High Video", "New Magic Card", 0, layout_fashion ) +GAMEL( 2000, brasil, 0, brasil, brasil, highvdeo_state, 0, ROT0, "High Video", "Bra$il (Version 3)", 0, layout_fashion ) +GAMEL( 2000, fashion, brasil, brasil, fashion, highvdeo_state, fashion, ROT0, "High Video", "Fashion (Version 2.14)", 0, layout_fashion ) +GAMEL( 2000, grancapi, 0, grancapi, brasil, highvdeo_state, 0, ROT0, "High Video", "Gran Capitan (Version 3)", MACHINE_NOT_WORKING, layout_fashion ) +GAMEL( 2000, magicbom, 0, magicbom, fashion, highvdeo_state, fashion, ROT0, "High Video", "Magic Bomb (Version 1)", MACHINE_NOT_WORKING, layout_fashion ) +GAMEL( 2000, record, 0, newmcard, tv_tcf, highvdeo_state, record, ROT0, "High Video", "Record (Version 1)", 0, layout_fashion ) diff --git a/src/mame/drivers/hikaru.cpp b/src/mame/drivers/hikaru.cpp index aa18d0d14cf..d44c03e70f3 100644 --- a/src/mame/drivers/hikaru.cpp +++ b/src/mame/drivers/hikaru.cpp @@ -481,7 +481,7 @@ static ADDRESS_MAP_START( hikaru_map_slave, AS_PROGRAM, 64, hikaru_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( hikaru, hikaru_state ) +static MACHINE_CONFIG_START( hikaru ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH4LE, CPU_CLOCK) // MCFG_SH4_MD0(1) @@ -806,11 +806,11 @@ ROM_START( sgnascaro ) ROM_PARAMETER( ":rom_board:key", "56dedf33" ) ROM_END -GAME( 2000, hikaru, 0, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Hikaru Bios", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT ) -GAME( 1999, braveff, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Brave Fire Fighters", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -GAME( 2000, airtrix, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Air Trix (Rev A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -GAME( 2000, airtrixo, airtrix, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Air Trix (original)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -GAME( 2000, sgnascar, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega / Electronic Arts", "NASCAR Racing (Rev A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -GAME( 2000, sgnascaro,sgnascar, hikaru, hikaru, driver_device, 0, ROT0, "Sega / Electronic Arts", "NASCAR Racing (original)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -GAME( 2001, pharrier, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Planet Harriers (Rev A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -GAME( 2001, podrace, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Star Wars Pod Racer", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +GAME( 2000, hikaru, 0, hikaru, hikaru, hikaru_state, 0, ROT0, "Sega", "Hikaru Bios", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT ) +GAME( 1999, braveff, hikaru, hikaru, hikaru, hikaru_state, 0, ROT0, "Sega", "Brave Fire Fighters", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +GAME( 2000, airtrix, hikaru, hikaru, hikaru, hikaru_state, 0, ROT0, "Sega", "Air Trix (Rev A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +GAME( 2000, airtrixo, airtrix, hikaru, hikaru, hikaru_state, 0, ROT0, "Sega", "Air Trix (original)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +GAME( 2000, sgnascar, hikaru, hikaru, hikaru, hikaru_state, 0, ROT0, "Sega / Electronic Arts", "NASCAR Racing (Rev A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +GAME( 2000, sgnascaro,sgnascar, hikaru, hikaru, hikaru_state, 0, ROT0, "Sega / Electronic Arts", "NASCAR Racing (original)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +GAME( 2001, pharrier, hikaru, hikaru, hikaru, hikaru_state, 0, ROT0, "Sega", "Planet Harriers (Rev A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +GAME( 2001, podrace, hikaru, hikaru, hikaru, hikaru_state, 0, ROT0, "Sega", "Star Wars Pod Racer", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/himesiki.cpp b/src/mame/drivers/himesiki.cpp index 2646e71d392..ee067fe50e6 100644 --- a/src/mame/drivers/himesiki.cpp +++ b/src/mame/drivers/himesiki.cpp @@ -422,7 +422,7 @@ void himesiki_state::machine_reset() m_flipscreen = 0; } -static MACHINE_CONFIG_START( himesiki, himesiki_state ) +static MACHINE_CONFIG_START( himesiki ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CLK2) /* it's a 6.000 MHz rated part, but near the 8 Mhz XTAL?? - Android skips lots of frames at 6, crashes at 4 */ @@ -563,8 +563,8 @@ ROM_START( androidp ) ROM_END -GAME( 1989, himesiki, 0, himesiki, himesiki, driver_device, 0, ROT90, "Hi-Soft", "Himeshikibu (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, himesiki, 0, himesiki, himesiki, himesiki_state, 0, ROT90, "Hi-Soft", "Himeshikibu (Japan)", MACHINE_SUPPORTS_SAVE ) // the game changed significantly between these 2 versions -GAME( 198?, androidp, 0, himesiki, androidp, driver_device, 0, ROT90, "Nasco", "Android (prototype, later build)", MACHINE_SUPPORTS_SAVE ) -GAME( 198?, androidpo, androidp, himesiki, androidpo, driver_device, 0, ROT90, "Nasco", "Android (prototype, early build)", MACHINE_SUPPORTS_SAVE ) +GAME( 198?, androidp, 0, himesiki, androidp, himesiki_state, 0, ROT90, "Nasco", "Android (prototype, later build)", MACHINE_SUPPORTS_SAVE ) +GAME( 198?, androidpo, androidp, himesiki, androidpo, himesiki_state, 0, ROT90, "Nasco", "Android (prototype, early build)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hitme.cpp b/src/mame/drivers/hitme.cpp index 067ec706d89..dd0bc7f7403 100644 --- a/src/mame/drivers/hitme.cpp +++ b/src/mame/drivers/hitme.cpp @@ -311,7 +311,7 @@ void hitme_state::machine_reset() m_timeout_time = attotime::zero; } -static MACHINE_CONFIG_START( hitme, hitme_state ) +static MACHINE_CONFIG_START( hitme ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, MASTER_CLOCK/16) @@ -690,9 +690,9 @@ ROM_END * *************************************/ -GAME( 1976, hitme, 0, hitme, hitme, driver_device, 0, ROT0, "Ramtek", "Hit Me (set 1)", MACHINE_SUPPORTS_SAVE ) // 05/1976 -GAME( 1976, hitme1, hitme, hitme, hitme, driver_device, 0, ROT0, "Ramtek", "Hit Me (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1976, m21, hitme, hitme, hitme, driver_device, 0, ROT0, "Mirco Games", "21 (Mirco)", MACHINE_SUPPORTS_SAVE ) // 08/1976, licensed? -GAME( 1978, super21, 0, hitme, super21, driver_device, 0, ROT0, "Mirco Games", "Super Twenty One", MACHINE_SUPPORTS_SAVE ) -GAMEL(1976, barricad, 0, barricad, barricad, driver_device, 0, ROT0, "Ramtek", "Barricade", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_barricad ) -GAMEL(1976, brickyrd, barricad, barricad, barricad, driver_device, 0, ROT0, "Ramtek", "Brickyard", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_barricad ) +GAME( 1976, hitme, 0, hitme, hitme, hitme_state, 0, ROT0, "Ramtek", "Hit Me (set 1)", MACHINE_SUPPORTS_SAVE ) // 05/1976 +GAME( 1976, hitme1, hitme, hitme, hitme, hitme_state, 0, ROT0, "Ramtek", "Hit Me (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1976, m21, hitme, hitme, hitme, hitme_state, 0, ROT0, "Mirco Games", "21 (Mirco)", MACHINE_SUPPORTS_SAVE ) // 08/1976, licensed? +GAME( 1978, super21, 0, hitme, super21, hitme_state, 0, ROT0, "Mirco Games", "Super Twenty One", MACHINE_SUPPORTS_SAVE ) +GAMEL(1976, barricad, 0, barricad, barricad, hitme_state, 0, ROT0, "Ramtek", "Barricade", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_barricad ) +GAMEL(1976, brickyrd, barricad, barricad, barricad, hitme_state, 0, ROT0, "Ramtek", "Brickyard", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_barricad ) diff --git a/src/mame/drivers/hitpoker.cpp b/src/mame/drivers/hitpoker.cpp index 44c2ca5c417..c761c9f8eb1 100644 --- a/src/mame/drivers/hitpoker.cpp +++ b/src/mame/drivers/hitpoker.cpp @@ -469,7 +469,7 @@ INTERRUPT_GEN_MEMBER(hitpoker_state::hitpoker_irq) device.execute().set_input_line(MC68HC11_IRQ_LINE, HOLD_LINE); } -static MACHINE_CONFIG_START( hitpoker, hitpoker_state ) +static MACHINE_CONFIG_START( hitpoker ) MCFG_CPU_ADD("maincpu", MC68HC11,1000000) MCFG_CPU_PROGRAM_MAP(hitpoker_map) MCFG_CPU_IO_MAP(hitpoker_io) diff --git a/src/mame/drivers/hk68v10.cpp b/src/mame/drivers/hk68v10.cpp index e5fbeb53234..049dc5c2ed8 100644 --- a/src/mame/drivers/hk68v10.cpp +++ b/src/mame/drivers/hk68v10.cpp @@ -332,7 +332,7 @@ SLOT_INTERFACE_END /* * Machine configuration */ -static MACHINE_CONFIG_START (hk68v10, hk68v10_state) +static MACHINE_CONFIG_START (hk68v10) /* basic machine hardware */ MCFG_CPU_ADD ("maincpu", M68010, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP (hk68v10_mem) @@ -389,5 +389,5 @@ ROM_LOAD16_BYTE ("hk68kv10U12.bin", 0xFC0000, 0x2000, CRC (f2d688e9) SHA1 (e6869 ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP (1985, hk68v10, 0, 0, hk68v10, hk68v10, driver_device, 0, "Heurikon Corporation", "HK68/V10", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP (1985, hk68v10, 0, 0, hk68v10, hk68v10, hk68v10_state, 0, "Heurikon Corporation", "HK68/V10", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) diff --git a/src/mame/drivers/hnayayoi.cpp b/src/mame/drivers/hnayayoi.cpp index ed5612dea54..7054fa664d4 100644 --- a/src/mame/drivers/hnayayoi.cpp +++ b/src/mame/drivers/hnayayoi.cpp @@ -534,7 +534,7 @@ void hnayayoi_state::machine_reset() } -static MACHINE_CONFIG_START( hnayayoi, hnayayoi_state ) +static MACHINE_CONFIG_START( hnayayoi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 20000000/4 ) /* 5 MHz ???? */ @@ -570,7 +570,7 @@ static MACHINE_CONFIG_START( hnayayoi, hnayayoi_state ) MCFG_SOUND_ROUTE(3, "mono", 0.80) MCFG_SOUND_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -679,6 +679,6 @@ DRIVER_INIT_MEMBER(hnayayoi_state,hnfubuki) } -GAME( 1987, hnayayoi, 0, hnayayoi, hnayayoi, driver_device, 0, ROT0, "Dyna Electronics", "Hana Yayoi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, hnayayoi, 0, hnayayoi, hnayayoi, hnayayoi_state, 0, ROT0, "Dyna Electronics", "Hana Yayoi (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, hnfubuki, hnayayoi, hnfubuki, hnfubuki, hnayayoi_state, hnfubuki, ROT0, "Dynax", "Hana Fubuki [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, untoucha, 0, untoucha, untoucha, driver_device, 0, ROT0, "Dynax", "Untouchable (Ver. 2.10)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, untoucha, 0, untoucha, untoucha, hnayayoi_state, 0, ROT0, "Dynax", "Untouchable (Ver. 2.10)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hng64.cpp b/src/mame/drivers/hng64.cpp index 1f3a531136f..241faead712 100644 --- a/src/mame/drivers/hng64.cpp +++ b/src/mame/drivers/hng64.cpp @@ -1530,7 +1530,7 @@ void hng64_state::machine_reset() MACHINE_CONFIG_EXTERN(hng64_audio); -static MACHINE_CONFIG_START(hng64, hng64_state) +static MACHINE_CONFIG_START(hng64) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", VR4300BE, HNG64_MASTER_CLOCK) // actually R4300 MCFG_MIPS3_ICACHE_SIZE(16384) @@ -1547,7 +1547,7 @@ static MACHINE_CONFIG_START(hng64, hng64_state) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(hng64_state, screen_update_hng64) - MCFG_SCREEN_VBLANK_DRIVER(hng64_state, screen_eof_hng64) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(hng64_state, screen_vblank_hng64)) MCFG_PALETTE_ADD("palette", 0x1000) MCFG_PALETTE_FORMAT(XRGB) diff --git a/src/mame/drivers/holeland.cpp b/src/mame/drivers/holeland.cpp index 3d22462253f..9f2181304a7 100644 --- a/src/mame/drivers/holeland.cpp +++ b/src/mame/drivers/holeland.cpp @@ -268,7 +268,7 @@ static GFXDECODE_START( crzrally ) GFXDECODE_END -static MACHINE_CONFIG_START( holeland, holeland_state ) +static MACHINE_CONFIG_START( holeland ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3355700) /* measured 298ns on PCB */ @@ -343,7 +343,7 @@ Notes: */ -static MACHINE_CONFIG_START( crzrally, holeland_state ) +static MACHINE_CONFIG_START( crzrally ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 20000000/4) /* 5 MHz */ @@ -533,8 +533,8 @@ ROM_START( crzrallyg ) ROM_END -GAME( 1984, holeland, 0, holeland, holeland, driver_device, 0, ROT0, "Tecfri", "Hole Land (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, holeland2, holeland, holeland, holeland2, driver_device, 0, ROT0, "Tecfri", "Hole Land (Spain)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) //attract is different -GAME( 1985, crzrally, 0, crzrally, crzrally, driver_device, 0, ROT270, "Tecfri", "Crazy Rally (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, crzrallya, crzrally, crzrally, crzrally, driver_device, 0, ROT270, "Tecfri", "Crazy Rally (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, crzrallyg, crzrally, crzrally, crzrally, driver_device, 0, ROT270, "Tecfri (Gecas license)", "Crazy Rally (Gecas license)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, holeland, 0, holeland, holeland, holeland_state, 0, ROT0, "Tecfri", "Hole Land (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, holeland2, holeland, holeland, holeland2, holeland_state, 0, ROT0, "Tecfri", "Hole Land (Spain)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) //attract is different +GAME( 1985, crzrally, 0, crzrally, crzrally, holeland_state, 0, ROT270, "Tecfri", "Crazy Rally (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, crzrallya, crzrally, crzrally, crzrally, holeland_state, 0, ROT270, "Tecfri", "Crazy Rally (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, crzrallyg, crzrally, crzrally, crzrally, holeland_state, 0, ROT270, "Tecfri (Gecas license)", "Crazy Rally (Gecas license)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/homedata.cpp b/src/mame/drivers/homedata.cpp index a1a8423c637..c1bc171ae4e 100644 --- a/src/mame/drivers/homedata.cpp +++ b/src/mame/drivers/homedata.cpp @@ -712,23 +712,23 @@ INPUT_PORTS_END static INPUT_PORTS_START( reikaids ) PORT_START("IN0") // 0x7801 - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* punch */ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) /* kick */ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) /* jump */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Punch") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Kick") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Jump / Defense") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_START("IN1") // 0x7802 - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* punch */ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) /* kick */ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) /* jump */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Punch") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Kick") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Jump / Defense") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) PORT_START("IN2") // 0x7803 @@ -742,45 +742,45 @@ static INPUT_PORTS_START( reikaids ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Allow_Continue ) ) + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) ) + PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:2,3") PORT_DIPSETTING( 0x06, "20k then every 60k" ) PORT_DIPSETTING( 0x04, "30k then every 80k" ) PORT_DIPSETTING( 0x02, "20k" ) PORT_DIPSETTING( 0x00, "30k" ) - PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) ) + PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4,5") PORT_DIPSETTING( 0x18, "2" ) PORT_DIPSETTING( 0x10, "3" ) PORT_DIPSETTING( 0x08, "4" ) PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x20, 0x20, "Time" ) + PORT_DIPNAME( 0x20, 0x20, "Time" ) PORT_DIPLOCATION("SW1:6") PORT_DIPSETTING( 0x20, "60" ) PORT_DIPSETTING( 0x00, "45" ) - PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" ) + PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" ) PORT_DIPLOCATION("SW1:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" ) + PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2") PORT_DIPSETTING( 0x03, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x02, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Flip_Screen ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:5") PORT_DIPSETTING( 0x10, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coinage ) ) + PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:6,7,8") PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) @@ -794,8 +794,8 @@ INPUT_PORTS_END static INPUT_PORTS_START( battlcry ) PORT_INCLUDE( reikaids ) - PORT_MODIFY("DSW1") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Allow_Continue ) ) + PORT_MODIFY("DSW1") // According to manual these DSW #s should be reversed + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:1,2,3") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, "Up To Stage 1" ) PORT_DIPSETTING( 0x06, "Up To Stage 2" ) @@ -803,29 +803,32 @@ static INPUT_PORTS_START( battlcry ) PORT_DIPSETTING( 0x05, "Up To Stage 4" ) PORT_DIPSETTING( 0x03, "Up To Stage 5" ) PORT_DIPSETTING( 0x07, "Up To Stage 6" ) - PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) ) + PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4,5") PORT_DIPSETTING( 0x18, "1" ) PORT_DIPSETTING( 0x10, "2" ) PORT_DIPSETTING( 0x08, "3" ) PORT_DIPSETTING( 0x00, "4" ) - PORT_DIPNAME( 0x20, 0x20, "Time" ) + PORT_DIPNAME( 0x20, 0x20, "Time" ) PORT_DIPLOCATION("SW1:6") PORT_DIPSETTING( 0x20, "90" ) PORT_DIPSETTING( 0x00, "120" ) - PORT_DIPNAME( 0x40, 0x40, "Test Mode" ) + PORT_DIPNAME( 0x40, 0x40, "Test Mode" ) PORT_DIPLOCATION("SW1:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Unused - Leave OFF" ) PORT_DIPLOCATION("SW1:8") + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_MODIFY("DSW2") - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "Background Music" ) + PORT_DIPNAME( 0x08, 0x08, "Background Music" ) PORT_DIPLOCATION("SW2:4") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coinage ) ) + PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:6,7,8") PORT_DIPSETTING( 0x80, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x40, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0xc0, DEF_STR( 2C_1C ) ) @@ -836,7 +839,6 @@ static INPUT_PORTS_START( battlcry ) PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) INPUT_PORTS_END - static INPUT_PORTS_START( mj_keyboard ) PORT_START("KEY0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) @@ -1209,7 +1211,7 @@ MACHINE_RESET_MEMBER(homedata_state,reikaids) m_gfx_bank[1] = 0; // this is not used by reikaids } -static MACHINE_CONFIG_START( mrokumei, homedata_state ) +static MACHINE_CONFIG_START( mrokumei ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 16000000/4) /* 4MHz ? */ @@ -1231,7 +1233,7 @@ static MACHINE_CONFIG_START( mrokumei, homedata_state ) // visible area can be changed at runtime MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_mrokumei) - MCFG_SCREEN_VBLANK_DRIVER(homedata_state, screen_eof_homedata) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(homedata_state, screen_vblank_homedata)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", mrokumei) @@ -1256,7 +1258,7 @@ MACHINE_CONFIG_END /**************************************************************************/ -static MACHINE_CONFIG_START( reikaids, homedata_state ) +static MACHINE_CONFIG_START( reikaids ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 16000000/4) /* 4MHz ? */ @@ -1284,7 +1286,7 @@ static MACHINE_CONFIG_START( reikaids, homedata_state ) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 256-1-16) MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_reikaids) - MCFG_SCREEN_VBLANK_DRIVER(homedata_state, screen_eof_homedata) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(homedata_state, screen_vblank_homedata)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", reikaids) @@ -1312,7 +1314,7 @@ MACHINE_CONFIG_END /**************************************************************************/ -static MACHINE_CONFIG_START( pteacher, homedata_state ) +static MACHINE_CONFIG_START( pteacher ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 16000000/4) /* 4MHz ? */ @@ -1342,7 +1344,7 @@ static MACHINE_CONFIG_START( pteacher, homedata_state ) // visible area can be changed at runtime MCFG_SCREEN_VISIBLE_AREA(0*8, 54*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(homedata_state, screen_update_pteacher) - MCFG_SCREEN_VBLANK_DRIVER(homedata_state, screen_eof_homedata) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(homedata_state, screen_vblank_homedata)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", pteacher) @@ -1481,7 +1483,7 @@ GFXDECODE_END /* clocks are 16mhz and 9mhz */ -static MACHINE_CONFIG_START( mirderby, homedata_state ) +static MACHINE_CONFIG_START( mirderby ) MCFG_CPU_ADD("maincpu", M6809, 16000000/8) /* 2 Mhz */ MCFG_CPU_PROGRAM_MAP(cpu2_map) @@ -2062,25 +2064,25 @@ DRIVER_INIT_MEMBER(homedata_state,mirderby) } -GAME( 1987, hourouki, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Hourouki Part 1 - Seisyun Hen (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, mhgaiden, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Hourouki Gaiden (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjhokite, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Hourouki Okite (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjclinic, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Clinic (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjclinica, mjclinic, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Clinic (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mrokumei, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Rokumeikan (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, hourouki, 0, mrokumei, mjhokite, homedata_state, 0, ROT0, "Home Data", "Mahjong Hourouki Part 1 - Seisyun Hen (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, mhgaiden, 0, mrokumei, mjhokite, homedata_state, 0, ROT0, "Home Data", "Mahjong Hourouki Gaiden (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjhokite, 0, mrokumei, mjhokite, homedata_state, 0, ROT0, "Home Data", "Mahjong Hourouki Okite (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjclinic, 0, mrokumei, mjhokite, homedata_state, 0, ROT0, "Home Data", "Mahjong Clinic (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjclinica, mjclinic, mrokumei, mjhokite, homedata_state, 0, ROT0, "Home Data", "Mahjong Clinic (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mrokumei, 0, mrokumei, mjhokite, homedata_state, 0, ROT0, "Home Data", "Mahjong Rokumeikan (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, reikaids, 0, reikaids, reikaids, homedata_state, reikaids, ROT0, "Home Data", "Reikai Doushi (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, battlcry, 0, reikaids, battlcry, homedata_state, battlcry, ROT0, "Home Data", "Battlecry", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mjkojink, 0, pteacher, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Kojinkyouju (Private Teacher) (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjjoship, 0, pteacher, mjjoship, driver_device, 0, ROT0, "Home Data", "Mahjong Joshi Pro-wres -Give up 5 byou mae- (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, vitaminc, 0, pteacher, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Vitamin C (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mjyougo, 0, pteacher, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong-yougo no Kisotairyoku (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjkinjas, 0, mjkinjas, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Kinjirareta Asobi (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992?,jogakuen, 0, pteacher, jogakuen, homedata_state, jogakuen, ROT0, "Windom", "Mahjong Jogakuen (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, reikaids, 0, reikaids, reikaids, homedata_state, reikaids, ROT0, "Home Data", "Reikai Doushi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, battlcry, 0, reikaids, battlcry, homedata_state, battlcry, ROT0, "Home Data", "Battlecry", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mjkojink, 0, pteacher, pteacher, homedata_state, 0, ROT0, "Home Data", "Mahjong Kojinkyouju (Private Teacher) (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjjoship, 0, pteacher, mjjoship, homedata_state, 0, ROT0, "Home Data", "Mahjong Joshi Pro-wres -Give up 5 byou mae- (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, vitaminc, 0, pteacher, pteacher, homedata_state, 0, ROT0, "Home Data", "Mahjong Vitamin C (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mjyougo, 0, pteacher, pteacher, homedata_state, 0, ROT0, "Home Data", "Mahjong-yougo no Kisotairyoku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjkinjas, 0, mjkinjas, pteacher, homedata_state, 0, ROT0, "Home Data", "Mahjong Kinjirareta Asobi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992?,jogakuen, 0, pteacher, jogakuen, homedata_state, jogakuen, ROT0, "Windom", "Mahjong Jogakuen (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, lemnangl, 0, lemnangl, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Lemon Angel (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjprivat, 0, lemnangl, pteacher, driver_device, 0, ROT0, "Matoba", "Mahjong Private (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, lemnangl, 0, lemnangl, pteacher, homedata_state, 0, ROT0, "Home Data", "Mahjong Lemon Angel (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjprivat, 0, lemnangl, pteacher, homedata_state, 0, ROT0, "Matoba", "Mahjong Private (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991?,mjikaga, 0, lemnangl, mjikaga, homedata_state, mjikaga, ROT0, "Mitchell", "Mahjong Ikaga Desu ka (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1991?,mjikaga, 0, lemnangl, mjikaga, homedata_state, mjikaga, ROT0, "Mitchell", "Mahjong Ikaga Desu ka (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mirderby, 0, mirderby, mirderby, homedata_state, mirderby, ROT0, "Home Data?", "Miracle Derby - Ascot", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +GAME( 1988, mirderby, 0, mirderby, mirderby, homedata_state, mirderby, ROT0, "Home Data?", "Miracle Derby - Ascot", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/homelab.cpp b/src/mame/drivers/homelab.cpp index 8393ede6b99..383a0db1cfe 100644 --- a/src/mame/drivers/homelab.cpp +++ b/src/mame/drivers/homelab.cpp @@ -732,7 +732,7 @@ QUICKLOAD_LOAD_MEMBER( homelab_state,homelab) } /* Machine driver */ -static MACHINE_CONFIG_START( homelab, homelab_state ) +static MACHINE_CONFIG_START( homelab ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz / 2) MCFG_CPU_PROGRAM_MAP(homelab2_mem) @@ -764,7 +764,7 @@ static MACHINE_CONFIG_START( homelab, homelab_state ) MCFG_QUICKLOAD_ADD("quickload", homelab_state, homelab, "htp", 2) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( homelab3, homelab_state ) +static MACHINE_CONFIG_START( homelab3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 4) MCFG_CPU_PROGRAM_MAP(homelab3_mem) @@ -797,7 +797,7 @@ static MACHINE_CONFIG_START( homelab3, homelab_state ) MCFG_QUICKLOAD_ADD("quickload", homelab_state, homelab, "htp", 2) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( brailab4, homelab_state ) +static MACHINE_CONFIG_START( brailab4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 4) MCFG_CPU_PROGRAM_MAP(brailab4_mem) @@ -910,9 +910,9 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, homelab2, 0, 0, homelab, homelab, driver_device, 0, "Jozsef and Endre Lukacs", "Homelab 2 / Aircomp 16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) -COMP( 1983, homelab3, homelab2, 0, homelab3, homelab3, driver_device, 0, "Jozsef and Endre Lukacs", "Homelab 3", MACHINE_NOT_WORKING ) -COMP( 1984, homelab4, homelab2, 0, homelab3, homelab3, driver_device, 0, "Jozsef and Endre Lukacs", "Homelab 4", MACHINE_NOT_WORKING ) -COMP( 1984, brailab4, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab 4", MACHINE_NOT_WORKING ) -COMP( 1988, braiplus, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab Plus", MACHINE_NOT_WORKING | MACHINE_IS_SKELETON ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1982, homelab2, 0, 0, homelab, homelab, homelab_state, 0, "Jozsef and Endre Lukacs", "Homelab 2 / Aircomp 16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1983, homelab3, homelab2, 0, homelab3, homelab3, homelab_state, 0, "Jozsef and Endre Lukacs", "Homelab 3", MACHINE_NOT_WORKING ) +COMP( 1984, homelab4, homelab2, 0, homelab3, homelab3, homelab_state, 0, "Jozsef and Endre Lukacs", "Homelab 4", MACHINE_NOT_WORKING ) +COMP( 1984, brailab4, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab 4", MACHINE_NOT_WORKING ) +COMP( 1988, braiplus, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab Plus", MACHINE_NOT_WORKING | MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/homerun.cpp b/src/mame/drivers/homerun.cpp index 4fc062d6d21..2176b59d42d 100644 --- a/src/mame/drivers/homerun.cpp +++ b/src/mame/drivers/homerun.cpp @@ -347,7 +347,7 @@ void homerun_state::machine_reset() /**************************************************************************/ -static MACHINE_CONFIG_START( dynashot, homerun_state ) +static MACHINE_CONFIG_START( dynashot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_20MHz/4) @@ -452,6 +452,6 @@ ROM_START( ganjaja ) ROM_END -GAME( 1988, homerun, 0, homerun, homerun, driver_device, 0, ROT0, "Jaleco", "Moero!! Pro Yakyuu Homerun Kyousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, dynashot, 0, dynashot, dynashot, driver_device, 0, ROT0, "Jaleco", "Dynamic Shoot Kyousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ganjaja, 0, ganjaja, ganjaja, driver_device, 0, ROT0, "Jaleco", "Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, homerun, 0, homerun, homerun, homerun_state, 0, ROT0, "Jaleco", "Moero!! Pro Yakyuu Homerun Kyousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, dynashot, 0, dynashot, dynashot, homerun_state, 0, ROT0, "Jaleco", "Dynamic Shoot Kyousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ganjaja, 0, ganjaja, ganjaja, homerun_state, 0, ROT0, "Jaleco", "Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/homez80.cpp b/src/mame/drivers/homez80.cpp index 880bf285b71..0a21d013dc0 100644 --- a/src/mame/drivers/homez80.cpp +++ b/src/mame/drivers/homez80.cpp @@ -278,7 +278,7 @@ INTERRUPT_GEN_MEMBER(homez80_state::homez80_interrupt) m_irq ^= 1; } -static MACHINE_CONFIG_START( homez80, homez80_state ) +static MACHINE_CONFIG_START( homez80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_8MHz / 2) MCFG_CPU_PROGRAM_MAP(homez80_mem) @@ -309,5 +309,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 2008, homez80, 0, 0, homez80, homez80, driver_device, 0, "Kun-Szabo Marton", "Homebrew Z80 Computer", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 2008, homez80, 0, 0, homez80, homez80, homez80_state, 0, "Kun-Szabo Marton", "Homebrew Z80 Computer", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/horizon.cpp b/src/mame/drivers/horizon.cpp index 895b8150437..c40e693cccd 100644 --- a/src/mame/drivers/horizon.cpp +++ b/src/mame/drivers/horizon.cpp @@ -141,7 +141,7 @@ SLOT_INTERFACE_END // MACHINE_CONFIG( horizon ) //------------------------------------------------- -static MACHINE_CONFIG_START( horizon, horizon_state ) +static MACHINE_CONFIG_START( horizon ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(horizon_mem) @@ -218,6 +218,6 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1976, nshrz, 0, 0, horizon, horizon, driver_device, 0, "North Star Computers", "Horizon (North Star Computers)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) -COMP( 1979, vector1, nshrz, 0, horizon, horizon, driver_device, 0, "Vector Graphic", "Vector 1+ (DD drive)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1976, nshrz, 0, 0, horizon, horizon, horizon_state, 0, "North Star Computers", "Horizon (North Star Computers)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1979, vector1, nshrz, 0, horizon, horizon, horizon_state, 0, "Vector Graphic", "Vector 1+ (DD drive)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/hornet.cpp b/src/mame/drivers/hornet.cpp index 4f86929cf3c..e68fd5b00a8 100644 --- a/src/mame/drivers/hornet.cpp +++ b/src/mame/drivers/hornet.cpp @@ -1004,7 +1004,7 @@ ADC12138_IPT_CONVERT_CB(hornet_state::adc12138_input_callback) return (double)(value) / 2047.0; } -static MACHINE_CONFIG_START( hornet, hornet_state ) +static MACHINE_CONFIG_START( hornet ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GA, XTAL_64MHz/2) /* PowerPC 403GA 32MHz */ @@ -1063,7 +1063,7 @@ static MACHINE_CONFIG_START( hornet, hornet_state ) MCFG_DEVICE_ADD("konppc", KONPPC, 0) MCFG_KONPPC_CGBOARD_NUMBER(1) - MCFG_KONPPC_CGBOARD_TYPE(CGBOARD_TYPE_HORNET) + MCFG_KONPPC_CGBOARD_TYPE(HORNET) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( hornet_2board, hornet ) @@ -1120,7 +1120,7 @@ static MACHINE_CONFIG_DERIVED( hornet_2board, hornet ) MCFG_DEVICE_REMOVE("konppc") MCFG_DEVICE_ADD("konppc", KONPPC, 0) MCFG_KONPPC_CGBOARD_NUMBER(2) - MCFG_KONPPC_CGBOARD_TYPE(CGBOARD_TYPE_HORNET) + MCFG_KONPPC_CGBOARD_TYPE(HORNET) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( terabrst, hornet ) diff --git a/src/mame/drivers/hotblock.cpp b/src/mame/drivers/hotblock.cpp index 1dd41f02888..49abf987b1a 100644 --- a/src/mame/drivers/hotblock.cpp +++ b/src/mame/drivers/hotblock.cpp @@ -206,7 +206,7 @@ static INPUT_PORTS_START( hotblock ) INPUT_PORTS_END -static MACHINE_CONFIG_START( hotblock, hotblock_state ) +static MACHINE_CONFIG_START( hotblock ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, 10000000) @@ -241,4 +241,4 @@ ROM_START( hotblock ) ROM_LOAD( "hotblk6.ic5", 0x080000, 0x080000, CRC(3176d231) SHA1(ac22fd0e9820c6714f51a3d8315eb5d43ef91eeb) ) ROM_END -GAME( 1993, hotblock, 0, hotblock, hotblock, driver_device, 0, ROT0, "NIX?", "Hot Blocks - Tetrix II", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, hotblock, 0, hotblock, hotblock, hotblock_state, 0, ROT0, "NIX?", "Hot Blocks - Tetrix II", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hotstuff.cpp b/src/mame/drivers/hotstuff.cpp index 4ff5e2d339e..2fae269a5be 100644 --- a/src/mame/drivers/hotstuff.cpp +++ b/src/mame/drivers/hotstuff.cpp @@ -126,7 +126,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( hotstuff ) INPUT_PORTS_END -static MACHINE_CONFIG_START( hotstuff, hotstuff_state ) +static MACHINE_CONFIG_START( hotstuff ) MCFG_CPU_ADD("maincpu", M68000, 16000000) MCFG_CPU_PROGRAM_MAP(hotstuff_map) @@ -153,4 +153,4 @@ ROM_START( hotstuff ) ROM_LOAD16_WORD_SWAP( "hot stuff symbol u8 (68000).bin", 0x00000, 0x80000, CRC(f154a157) SHA1(92ae0fb977e2dcc0377487d768f95c6e447e990b) ) ROM_END -GAME( ????, hotstuff, 0, hotstuff, hotstuff, driver_device, 0, ROT0, "Olympic Video Gaming", "Olympic Hot Stuff (TAS 5 Reel System)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( ????, hotstuff, 0, hotstuff, hotstuff, hotstuff_state, 0, ROT0, "Olympic Video Gaming", "Olympic Hot Stuff (TAS 5 Reel System)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/hp16500.cpp b/src/mame/drivers/hp16500.cpp index 4737c674b71..0a87fb13037 100644 --- a/src/mame/drivers/hp16500.cpp +++ b/src/mame/drivers/hp16500.cpp @@ -397,7 +397,7 @@ uint32_t hp16500_state::screen_update_hp16500(screen_device &screen, bitmap_rgb3 return 0; } -static MACHINE_CONFIG_START( hp1650, hp16500_state ) +static MACHINE_CONFIG_START( hp1650 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68000, 10000000) MCFG_CPU_PROGRAM_MAP(hp1650_map) @@ -417,7 +417,7 @@ static MACHINE_CONFIG_START( hp1650, hp16500_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hp1651, hp16500_state ) +static MACHINE_CONFIG_START( hp1651 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68000, 10000000) MCFG_CPU_PROGRAM_MAP(hp1651_map) @@ -437,7 +437,7 @@ static MACHINE_CONFIG_START( hp1651, hp16500_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hp16500a, hp16500_state ) +static MACHINE_CONFIG_START( hp16500a ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68000, 10000000) MCFG_CPU_PROGRAM_MAP(hp16500a_map) @@ -457,7 +457,7 @@ static MACHINE_CONFIG_START( hp16500a, hp16500_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hp16500, hp16500_state ) +static MACHINE_CONFIG_START( hp16500 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68EC030, 25000000) MCFG_CPU_PROGRAM_MAP(hp16500_map) @@ -503,7 +503,7 @@ ROM_START( hp16500b ) ROM_LOAD32_BYTE( "16500-80017.bin", 0x000003, 0x008000, CRC(e0b1096b) SHA1(426bb9a4756d8087bded4f6b61365d733ffbb09a) ) ROM_END -COMP( 1989, hp1650b, 0, 0, hp1650, hp16500, driver_device, 0, "Hewlett Packard", "HP 1650b", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -COMP( 1989, hp1651b, 0, 0, hp1651, hp16500, driver_device, 0, "Hewlett Packard", "HP 1651b", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -COMP( 1991, hp165ka0, 0, 0, hp16500a, hp16500, driver_device, 0, "Hewlett Packard", "HP 16500a", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -COMP( 1991, hp16500b, 0, 0, hp16500, hp16500, driver_device, 0, "Hewlett Packard", "HP 16500b", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +COMP( 1989, hp1650b, 0, 0, hp1650, hp16500, hp16500_state, 0, "Hewlett Packard", "HP 1650b", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +COMP( 1989, hp1651b, 0, 0, hp1651, hp16500, hp16500_state, 0, "Hewlett Packard", "HP 1651b", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +COMP( 1991, hp165ka0, 0, 0, hp16500a, hp16500, hp16500_state, 0, "Hewlett Packard", "HP 16500a", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +COMP( 1991, hp16500b, 0, 0, hp16500, hp16500, hp16500_state, 0, "Hewlett Packard", "HP 16500b", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) diff --git a/src/mame/drivers/hp48.cpp b/src/mame/drivers/hp48.cpp index 545aab99639..d703b139449 100644 --- a/src/mame/drivers/hp48.cpp +++ b/src/mame/drivers/hp48.cpp @@ -1257,7 +1257,7 @@ ADDRESS_MAP_END /*************************** driver ********************************/ -static MACHINE_CONFIG_START( hp48_common, hp48_state ) +static MACHINE_CONFIG_START( hp48_common ) /* cpu */ MCFG_CPU_ADD ( "maincpu", SATURN, 3937007 ) /* almost 4 MHz */ @@ -1352,10 +1352,10 @@ MACHINE_CONFIG_END COMP ( 1990, hp48sx, 0 , 0, hp48sx, hp48sx, hp48_state, hp48, "Hewlett Packard", "HP48SX", 0 ) -COMP ( 1991, hp48s , hp48sx, 0, hp48s, hp48sx, hp48_state, hp48, "Hewlett Packard", "HP48S", 0 ) +COMP ( 1991, hp48s , hp48sx, 0, hp48s, hp48sx, hp48_state, hp48, "Hewlett Packard", "HP48S", 0 ) COMP ( 1993, hp48gx, 0 , 0, hp48gx, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP48GX", 0 ) -COMP ( 1993, hp48g , hp48gx, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP48G", 0 ) +COMP ( 1993, hp48g , hp48gx, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP48G", 0 ) COMP ( 1998, hp48gp, hp48gx, 0, hp48gp, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP48G+", 0 ) -COMP ( 1999, hp49g , 0, 0, hp49g, hp49g, hp48_state, hp48, "Hewlett Packard", "HP49G", 0 ) -COMP ( 1995, hp38g , 0, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP38G", 0 ) -COMP ( 2000, hp39g , 0, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP39G", MACHINE_NOT_WORKING ) +COMP ( 1999, hp49g , 0, 0, hp49g, hp49g, hp48_state, hp48, "Hewlett Packard", "HP49G", 0 ) +COMP ( 1995, hp38g , 0, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP38G", 0 ) +COMP ( 2000, hp39g , 0, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP39G", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/hp49gp.cpp b/src/mame/drivers/hp49gp.cpp index 23dc2dd7cf9..a1592d9fcf0 100644 --- a/src/mame/drivers/hp49gp.cpp +++ b/src/mame/drivers/hp49gp.cpp @@ -276,7 +276,7 @@ DRIVER_INIT_MEMBER(hp49gp_state,hp49gp) lcd_spi_init(); } -static MACHINE_CONFIG_START( hp49gp, hp49gp_state ) +static MACHINE_CONFIG_START( hp49gp ) MCFG_CPU_ADD("maincpu", ARM9, 400000000) MCFG_CPU_PROGRAM_MAP(hp49gp_map) diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp index 8338550fb0d..d545cf1a13a 100644 --- a/src/mame/drivers/hp64k.cpp +++ b/src/mame/drivers/hp64k.cpp @@ -171,249 +171,249 @@ class hp64k_state : public driver_device { public: - hp64k_state(const machine_config &mconfig, device_type type, const char *tag); - - virtual void driver_start() override; - //virtual void machine_start(); - virtual void video_start() override; - virtual void machine_reset() override; - - uint8_t hp64k_crtc_filter(uint8_t data); - DECLARE_WRITE16_MEMBER(hp64k_crtc_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_crtc_drq_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_crtc_vrtc_w); - - I8275_DRAW_CHARACTER_MEMBER(crtc_display_pixels); - - DECLARE_READ16_MEMBER(hp64k_rear_sw_r); - - IRQ_CALLBACK_MEMBER(hp64k_irq_callback); - void hp64k_update_irl(void); - DECLARE_WRITE16_MEMBER(hp64k_irl_mask_w); - - TIMER_DEVICE_CALLBACK_MEMBER(hp64k_kb_scan); - DECLARE_READ16_MEMBER(hp64k_kb_r); - - TIMER_DEVICE_CALLBACK_MEMBER(hp64k_line_sync); - DECLARE_READ16_MEMBER(hp64k_deltat_r); - DECLARE_WRITE16_MEMBER(hp64k_deltat_w); - - DECLARE_READ16_MEMBER(hp64k_slot_r); - DECLARE_WRITE16_MEMBER(hp64k_slot_w); - DECLARE_WRITE16_MEMBER(hp64k_slot_sel_w); - - DECLARE_READ16_MEMBER(hp64k_flp_r); - DECLARE_WRITE16_MEMBER(hp64k_flp_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_flp_drq_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_flp_intrq_w); - void hp64k_update_floppy_dma(void); - void hp64k_update_floppy_irq(void); - void hp64k_update_drv_ctrl(void); - DECLARE_WRITE8_MEMBER(hp64k_floppy0_rdy); - DECLARE_WRITE8_MEMBER(hp64k_floppy1_rdy); - void hp64k_floppy_idx_cb(floppy_image_device *floppy , int state); - void hp64k_floppy_wpt_cb(floppy_image_device *floppy , int state); - - DECLARE_READ16_MEMBER(hp64k_usart_r); - DECLARE_WRITE16_MEMBER(hp64k_usart_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_rxrdy_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_txrdy_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_txd_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_dtr_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_rts_w); - DECLARE_WRITE16_MEMBER(hp64k_loopback_w); - void hp64k_update_loopback(void); - DECLARE_WRITE_LINE_MEMBER(hp64k_rs232_rxd_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_rs232_dcd_w); - DECLARE_WRITE_LINE_MEMBER(hp64k_rs232_cts_w); - - DECLARE_WRITE16_MEMBER(hp64k_beep_w); - TIMER_DEVICE_CALLBACK_MEMBER(hp64k_beeper_off); - - DECLARE_WRITE_LINE_MEMBER(hp64k_baud_clk_w); + hp64k_state(const machine_config &mconfig, device_type type, const char *tag); + + virtual void driver_start() override; + //virtual void machine_start(); + virtual void video_start() override; + virtual void machine_reset() override; + + uint8_t hp64k_crtc_filter(uint8_t data); + DECLARE_WRITE16_MEMBER(hp64k_crtc_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_crtc_drq_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_crtc_vrtc_w); + + I8275_DRAW_CHARACTER_MEMBER(crtc_display_pixels); + + DECLARE_READ16_MEMBER(hp64k_rear_sw_r); + + IRQ_CALLBACK_MEMBER(hp64k_irq_callback); + void hp64k_update_irl(void); + DECLARE_WRITE16_MEMBER(hp64k_irl_mask_w); + + TIMER_DEVICE_CALLBACK_MEMBER(hp64k_kb_scan); + DECLARE_READ16_MEMBER(hp64k_kb_r); + + TIMER_DEVICE_CALLBACK_MEMBER(hp64k_line_sync); + DECLARE_READ16_MEMBER(hp64k_deltat_r); + DECLARE_WRITE16_MEMBER(hp64k_deltat_w); + + DECLARE_READ16_MEMBER(hp64k_slot_r); + DECLARE_WRITE16_MEMBER(hp64k_slot_w); + DECLARE_WRITE16_MEMBER(hp64k_slot_sel_w); + + DECLARE_READ16_MEMBER(hp64k_flp_r); + DECLARE_WRITE16_MEMBER(hp64k_flp_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_flp_drq_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_flp_intrq_w); + void hp64k_update_floppy_dma(void); + void hp64k_update_floppy_irq(void); + void hp64k_update_drv_ctrl(void); + DECLARE_WRITE8_MEMBER(hp64k_floppy0_rdy); + DECLARE_WRITE8_MEMBER(hp64k_floppy1_rdy); + void hp64k_floppy_idx_cb(floppy_image_device *floppy , int state); + void hp64k_floppy_wpt_cb(floppy_image_device *floppy , int state); + + DECLARE_READ16_MEMBER(hp64k_usart_r); + DECLARE_WRITE16_MEMBER(hp64k_usart_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_rxrdy_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_txrdy_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_txd_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_dtr_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_rts_w); + DECLARE_WRITE16_MEMBER(hp64k_loopback_w); + void hp64k_update_loopback(void); + DECLARE_WRITE_LINE_MEMBER(hp64k_rs232_rxd_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_rs232_dcd_w); + DECLARE_WRITE_LINE_MEMBER(hp64k_rs232_cts_w); + + DECLARE_WRITE16_MEMBER(hp64k_beep_w); + TIMER_DEVICE_CALLBACK_MEMBER(hp64k_beeper_off); + + DECLARE_WRITE_LINE_MEMBER(hp64k_baud_clk_w); private: - required_device m_cpu; - required_device m_crtc; - required_device m_palette; - required_ioport m_io_key0; - required_ioport m_io_key1; - required_ioport m_io_key2; - required_ioport m_io_key3; - required_device m_fdc; - required_device m_floppy0; - required_device m_floppy1; - required_device m_ss0; - required_device m_ss1; - required_ioport m_rear_panel_sw; - required_ioport m_rs232_sw; - required_device m_beeper; - required_device m_beep_timer; - required_device m_baud_rate; - required_ioport m_s5_sw; - required_device m_uart; - required_device m_rs232; - - // Character generator - const uint8_t *m_chargen; - - uint32_t m_crtc_ptr; - bool m_crtc_drq; - bool m_vrtc; - - // Interrupt handling - uint8_t m_irl_mask; - uint8_t m_irl_pending; - - // State of keyboard - ioport_value m_kb_state[ 4 ]; - uint8_t m_kb_row_col; - bool m_kb_scan_on; - bool m_kb_pressed; - - // Slot selection - std::vector m_low32k_ram; - uint8_t m_slot_select; - uint8_t m_slot_map; - - // Floppy I/F - uint8_t m_floppy_in_latch_msb; // U23 - uint8_t m_floppy_in_latch_lsb; // U38 - uint8_t m_floppy_out_latch_msb; // U22 - uint8_t m_floppy_out_latch_lsb; // U37 - uint8_t m_floppy_if_ctrl; // U24 - bool m_floppy_dmaen; - bool m_floppy_dmai; - bool m_floppy_mdci; - bool m_floppy_intrq; - bool m_floppy_drq; - bool m_floppy0_wpt; - bool m_floppy1_wpt; - uint8_t m_floppy_drv_ctrl; // U39 - uint8_t m_floppy_status; // U25 - - typedef enum { - HP64K_FLPST_IDLE, - HP64K_FLPST_DMAWR1, - HP64K_FLPST_DMAWR2, - HP64K_FLPST_DMARD1, - HP64K_FLPST_DMARD2 - } floppy_state_t; - - floppy_state_t m_floppy_if_state; - floppy_image_device *m_current_floppy; - - // RS232 I/F - bool m_16x_clk; - bool m_baud_clk; - uint8_t m_16x_div; - bool m_loopback; - bool m_txd_state; - bool m_dtr_state; - bool m_rts_state; + required_device m_cpu; + required_device m_crtc; + required_device m_palette; + required_ioport m_io_key0; + required_ioport m_io_key1; + required_ioport m_io_key2; + required_ioport m_io_key3; + required_device m_fdc; + required_device m_floppy0; + required_device m_floppy1; + required_device m_ss0; + required_device m_ss1; + required_ioport m_rear_panel_sw; + required_ioport m_rs232_sw; + required_device m_beeper; + required_device m_beep_timer; + required_device m_baud_rate; + required_ioport m_s5_sw; + required_device m_uart; + required_device m_rs232; + + // Character generator + const uint8_t *m_chargen; + + uint32_t m_crtc_ptr; + bool m_crtc_drq; + bool m_vrtc; + + // Interrupt handling + uint8_t m_irl_mask; + uint8_t m_irl_pending; + + // State of keyboard + ioport_value m_kb_state[ 4 ]; + uint8_t m_kb_row_col; + bool m_kb_scan_on; + bool m_kb_pressed; + + // Slot selection + std::vector m_low32k_ram; + uint8_t m_slot_select; + uint8_t m_slot_map; + + // Floppy I/F + uint8_t m_floppy_in_latch_msb; // U23 + uint8_t m_floppy_in_latch_lsb; // U38 + uint8_t m_floppy_out_latch_msb; // U22 + uint8_t m_floppy_out_latch_lsb; // U37 + uint8_t m_floppy_if_ctrl; // U24 + bool m_floppy_dmaen; + bool m_floppy_dmai; + bool m_floppy_mdci; + bool m_floppy_intrq; + bool m_floppy_drq; + bool m_floppy0_wpt; + bool m_floppy1_wpt; + uint8_t m_floppy_drv_ctrl; // U39 + uint8_t m_floppy_status; // U25 + + typedef enum { + HP64K_FLPST_IDLE, + HP64K_FLPST_DMAWR1, + HP64K_FLPST_DMAWR2, + HP64K_FLPST_DMARD1, + HP64K_FLPST_DMARD2 + } floppy_state_t; + + floppy_state_t m_floppy_if_state; + floppy_image_device *m_current_floppy; + + // RS232 I/F + bool m_16x_clk; + bool m_baud_clk; + uint8_t m_16x_div; + bool m_loopback; + bool m_txd_state; + bool m_dtr_state; + bool m_rts_state; }; static ADDRESS_MAP_START(cpu_mem_map , AS_PROGRAM , 16 , hp64k_state) - AM_RANGE(0x0000 , 0x3fff) AM_ROM - AM_RANGE(0x4000 , 0x7fff) AM_READWRITE(hp64k_slot_r , hp64k_slot_w) - AM_RANGE(0x8000 , 0x8001) AM_WRITE(hp64k_crtc_w) - AM_RANGE(0x8002 , 0xffff) AM_RAM + AM_RANGE(0x0000 , 0x3fff) AM_ROM + AM_RANGE(0x4000 , 0x7fff) AM_READWRITE(hp64k_slot_r , hp64k_slot_w) + AM_RANGE(0x8000 , 0x8001) AM_WRITE(hp64k_crtc_w) + AM_RANGE(0x8002 , 0xffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START(cpu_io_map , AS_IO , 16 , hp64k_state) - // PA = 0, IC = [0..3] - // Keyboard input - AM_RANGE(HP_MAKE_IOADDR(0 , 0) , HP_MAKE_IOADDR(0 , 3)) AM_READ(hp64k_kb_r) - // PA = 2, IC = [0..3] - // Line sync interrupt clear/watchdog reset - AM_RANGE(HP_MAKE_IOADDR(2 , 0) , HP_MAKE_IOADDR(2 , 3)) AM_READWRITE(hp64k_deltat_r , hp64k_deltat_w) - // PA = 4, IC = [0..3] - // Floppy I/F - AM_RANGE(HP_MAKE_IOADDR(4 , 0) , HP_MAKE_IOADDR(4 , 3)) AM_READWRITE(hp64k_flp_r , hp64k_flp_w) - // PA = 5, IC = [0..3] - // Write to USART - AM_RANGE(HP_MAKE_IOADDR(5 , 0) , HP_MAKE_IOADDR(5 , 3)) AM_WRITE(hp64k_usart_w) - // PA = 6, IC = [0..3] - // Read from USART - AM_RANGE(HP_MAKE_IOADDR(6 , 0) , HP_MAKE_IOADDR(6 , 3)) AM_READ(hp64k_usart_r) - // PA = 7, IC = 2 - // Rear-panel switches and loopback relay control - AM_RANGE(HP_MAKE_IOADDR(7 , 2) , HP_MAKE_IOADDR(7 , 2)) AM_READWRITE(hp64k_rear_sw_r , hp64k_loopback_w) - // PA = 9, IC = [0..3] - // Beeper control & interrupt status read - AM_RANGE(HP_MAKE_IOADDR(9 , 0) , HP_MAKE_IOADDR(9 , 3)) AM_WRITE(hp64k_beep_w) - // PA = 10, IC = [0..3] - // Slot selection - AM_RANGE(HP_MAKE_IOADDR(10 , 0) , HP_MAKE_IOADDR(10 , 3)) AM_WRITE(hp64k_slot_sel_w) - // PA = 12, IC = [0..3] - // Interrupt mask - AM_RANGE(HP_MAKE_IOADDR(12 , 0) , HP_MAKE_IOADDR(12 , 3)) AM_WRITE(hp64k_irl_mask_w) + // PA = 0, IC = [0..3] + // Keyboard input + AM_RANGE(HP_MAKE_IOADDR(0 , 0) , HP_MAKE_IOADDR(0 , 3)) AM_READ(hp64k_kb_r) + // PA = 2, IC = [0..3] + // Line sync interrupt clear/watchdog reset + AM_RANGE(HP_MAKE_IOADDR(2 , 0) , HP_MAKE_IOADDR(2 , 3)) AM_READWRITE(hp64k_deltat_r , hp64k_deltat_w) + // PA = 4, IC = [0..3] + // Floppy I/F + AM_RANGE(HP_MAKE_IOADDR(4 , 0) , HP_MAKE_IOADDR(4 , 3)) AM_READWRITE(hp64k_flp_r , hp64k_flp_w) + // PA = 5, IC = [0..3] + // Write to USART + AM_RANGE(HP_MAKE_IOADDR(5 , 0) , HP_MAKE_IOADDR(5 , 3)) AM_WRITE(hp64k_usart_w) + // PA = 6, IC = [0..3] + // Read from USART + AM_RANGE(HP_MAKE_IOADDR(6 , 0) , HP_MAKE_IOADDR(6 , 3)) AM_READ(hp64k_usart_r) + // PA = 7, IC = 2 + // Rear-panel switches and loopback relay control + AM_RANGE(HP_MAKE_IOADDR(7 , 2) , HP_MAKE_IOADDR(7 , 2)) AM_READWRITE(hp64k_rear_sw_r , hp64k_loopback_w) + // PA = 9, IC = [0..3] + // Beeper control & interrupt status read + AM_RANGE(HP_MAKE_IOADDR(9 , 0) , HP_MAKE_IOADDR(9 , 3)) AM_WRITE(hp64k_beep_w) + // PA = 10, IC = [0..3] + // Slot selection + AM_RANGE(HP_MAKE_IOADDR(10 , 0) , HP_MAKE_IOADDR(10 , 3)) AM_WRITE(hp64k_slot_sel_w) + // PA = 12, IC = [0..3] + // Interrupt mask + AM_RANGE(HP_MAKE_IOADDR(12 , 0) , HP_MAKE_IOADDR(12 , 3)) AM_WRITE(hp64k_irl_mask_w) ADDRESS_MAP_END hp64k_state::hp64k_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig , type , tag), - m_cpu(*this , "cpu"), - m_crtc(*this , "crtc"), - m_palette(*this , "palette"), - m_io_key0(*this , "KEY0"), - m_io_key1(*this , "KEY1"), - m_io_key2(*this , "KEY2"), - m_io_key3(*this , "KEY3"), - m_fdc(*this , "fdc"), - m_floppy0(*this , "fdc:0"), - m_floppy1(*this , "fdc:1"), - m_ss0(*this , "fdc_rdy0"), - m_ss1(*this , "fdc_rdy1"), - m_rear_panel_sw(*this , "rear_sw"), - m_rs232_sw(*this , "rs232_sw"), - m_beeper(*this , "beeper"), - m_beep_timer(*this , "beep_timer"), - m_baud_rate(*this , "baud_rate"), - m_s5_sw(*this , "s5_sw"), - m_uart(*this , "uart"), - m_rs232(*this , "rs232") + : driver_device(mconfig , type , tag), + m_cpu(*this , "cpu"), + m_crtc(*this , "crtc"), + m_palette(*this , "palette"), + m_io_key0(*this , "KEY0"), + m_io_key1(*this , "KEY1"), + m_io_key2(*this , "KEY2"), + m_io_key3(*this , "KEY3"), + m_fdc(*this , "fdc"), + m_floppy0(*this , "fdc:0"), + m_floppy1(*this , "fdc:1"), + m_ss0(*this , "fdc_rdy0"), + m_ss1(*this , "fdc_rdy1"), + m_rear_panel_sw(*this , "rear_sw"), + m_rs232_sw(*this , "rs232_sw"), + m_beeper(*this , "beeper"), + m_beep_timer(*this , "beep_timer"), + m_baud_rate(*this , "baud_rate"), + m_s5_sw(*this , "s5_sw"), + m_uart(*this , "uart"), + m_rs232(*this , "rs232") { } void hp64k_state::driver_start() { - // 32kW for lower RAM - m_low32k_ram.resize(0x8000); + // 32kW for lower RAM + m_low32k_ram.resize(0x8000); } void hp64k_state::video_start() { - m_chargen = memregion("chargen")->base(); + m_chargen = memregion("chargen")->base(); } void hp64k_state::machine_reset() { - m_crtc_drq = false; - m_vrtc = false; - m_crtc_ptr = 0; - m_irl_mask = 0; - m_irl_pending = 0; - memset(&m_kb_state[ 0 ] , 0 , sizeof(m_kb_state)); - m_kb_row_col = 0; - m_kb_scan_on = true; - m_slot_select = 0; - m_slot_map = 3; - m_floppy_if_ctrl = ~0; - m_floppy_dmaen = false; - m_floppy_dmai = false; - m_floppy_mdci = false; - m_floppy_intrq = false; - m_floppy_drv_ctrl = ~0; - m_floppy_if_state = HP64K_FLPST_IDLE; - m_current_floppy = nullptr; - m_floppy0_wpt = false; - m_floppy1_wpt = false; - m_beeper->set_state(0); - m_baud_rate->str_w((m_s5_sw->read() >> 1) & 0xf); - m_16x_clk = (m_rs232_sw->read() & 0x02) != 0; - m_loopback = false; - m_txd_state = true; - m_dtr_state = true; - m_rts_state = true; + m_crtc_drq = false; + m_vrtc = false; + m_crtc_ptr = 0; + m_irl_mask = 0; + m_irl_pending = 0; + memset(&m_kb_state[ 0 ] , 0 , sizeof(m_kb_state)); + m_kb_row_col = 0; + m_kb_scan_on = true; + m_slot_select = 0; + m_slot_map = 3; + m_floppy_if_ctrl = ~0; + m_floppy_dmaen = false; + m_floppy_dmai = false; + m_floppy_mdci = false; + m_floppy_intrq = false; + m_floppy_drv_ctrl = ~0; + m_floppy_if_state = HP64K_FLPST_IDLE; + m_current_floppy = nullptr; + m_floppy0_wpt = false; + m_floppy1_wpt = false; + m_beeper->set_state(0); + m_baud_rate->str_w((m_s5_sw->read() >> 1) & 0xf); + m_16x_clk = (m_rs232_sw->read() & 0x02) != 0; + m_loopback = false; + m_txd_state = true; + m_dtr_state = true; + m_rts_state = true; } @@ -1008,419 +1008,418 @@ WRITE_LINE_MEMBER(hp64k_state::hp64k_dtr_w) WRITE_LINE_MEMBER(hp64k_state::hp64k_rts_w) { - if (BIT(m_s5_sw->read() , 0)) { - // Full duplex, RTS/ = 0 - state = 0; - } - m_rts_state = state; - if (m_loopback) { - m_uart->write_cts(state); - } - m_rs232->write_rts(state); + if (BIT(m_s5_sw->read() , 0)) { + // Full duplex, RTS/ = 0 + state = 0; + } + m_rts_state = state; + if (m_loopback) { + m_uart->write_cts(state); + } + m_rs232->write_rts(state); } WRITE16_MEMBER(hp64k_state::hp64k_loopback_w) { - m_loopback = BIT(data , 11); - hp64k_update_loopback(); + m_loopback = BIT(data , 11); + hp64k_update_loopback(); } void hp64k_state::hp64k_update_loopback(void) { - if (m_loopback) { - m_uart->write_rxd(m_txd_state); - m_uart->write_dsr(m_dtr_state); - m_uart->write_cts(m_rts_state); - } else { - m_uart->write_rxd(m_rs232->rxd_r()); - m_uart->write_dsr(m_rs232->dcd_r()); - m_uart->write_cts(m_rs232->cts_r()); - } + if (m_loopback) { + m_uart->write_rxd(m_txd_state); + m_uart->write_dsr(m_dtr_state); + m_uart->write_cts(m_rts_state); + } else { + m_uart->write_rxd(m_rs232->rxd_r()); + m_uart->write_dsr(m_rs232->dcd_r()); + m_uart->write_cts(m_rs232->cts_r()); + } } WRITE_LINE_MEMBER(hp64k_state::hp64k_rs232_rxd_w) { - if (!m_loopback) { - m_uart->write_rxd(state); - } + if (!m_loopback) { + m_uart->write_rxd(state); + } } WRITE_LINE_MEMBER(hp64k_state::hp64k_rs232_dcd_w) { - if (!m_loopback) { - m_uart->write_dsr(state); - } + if (!m_loopback) { + m_uart->write_dsr(state); + } } WRITE_LINE_MEMBER(hp64k_state::hp64k_rs232_cts_w) { - if (!m_loopback) { - m_uart->write_cts(state); - } + if (!m_loopback) { + m_uart->write_cts(state); + } } WRITE16_MEMBER(hp64k_state::hp64k_beep_w) { - if (!BIT(offset , 0)) { - m_beeper->set_state(1); - // Duration is bogus: in the real hw envelope decays exponentially with RC=~136 ms - m_beep_timer->adjust(attotime::from_msec(130)); - } + if (!BIT(offset , 0)) { + m_beeper->set_state(1); + // Duration is bogus: in the real hw envelope decays exponentially with RC=~136 ms + m_beep_timer->adjust(attotime::from_msec(130)); + } } TIMER_DEVICE_CALLBACK_MEMBER(hp64k_state::hp64k_beeper_off) { - m_beeper->set_state(0); + m_beeper->set_state(0); } WRITE_LINE_MEMBER(hp64k_state::hp64k_baud_clk_w) { - if (!m_16x_clk) { - if (state && !m_baud_clk) { - m_16x_div++; - } - m_baud_clk = !!state; - state = BIT(m_16x_div , 3); + if (!m_16x_clk) { + if (state && !m_baud_clk) { + m_16x_div++; } - m_uart->write_txc(state); - m_uart->write_rxc(state); + m_baud_clk = !!state; + state = BIT(m_16x_div , 3); + } + m_uart->write_txc(state); + m_uart->write_rxc(state); } static INPUT_PORTS_START(hp64k) - // Keyboard is arranged in a 8 x 16 matrix. Of the 128 possible positions, only 77 are used. - // For key arrangement on the matrix, see [1] pg 334 - // Keys are mapped on bit b of KEYn - // where b = (row & 1) << 4 + column, n = row >> 1 - // column = [0..15] - // row = [0..7] - PORT_START("KEY0") - PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2) - PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') - PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') - PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') - PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') - PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') - PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') - PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') - PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') - PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t') - PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') - PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') - PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') - PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') - PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') - PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=') - PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('^') PORT_CHAR('~') - PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('\\') PORT_CHAR('|') - PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) - PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_UNUSED) - - PORT_START("KEY1") - PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') - PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') - PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') - PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') - PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') - PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') - PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("RECALL") - PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_NAME("CLRLINE") - PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F11) PORT_NAME("CAPS") - PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F12) PORT_NAME("RESET") - PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("SK1") - PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("SK2") - PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_NAME("SK3") - PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("SK4") - PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("SK5") - PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_NAME("SK6") - PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("SK7") - PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("SK8") - PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_UNUSED) - - PORT_START("KEY2") - PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) - PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') - PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') - PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') - PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') - PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') - PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') - PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') - PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_NAME("INSCHAR") - PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_NAME("DELCHAR") - PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') - PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') - PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') - PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') - PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@') PORT_CHAR('`') - PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR('{') - PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('_') PORT_CHAR(UCHAR_MAMEKEY(DEL)) - PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_NAME("ROLLUP") - PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) - PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PGDN) PORT_NAME("NEXTPG") - - PORT_START("KEY3") - PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') - PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') - PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') - PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') - PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+') - PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*') - PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']') PORT_CHAR('}') - PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) - PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) - PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) - PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) - PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') - PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') - PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') - PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') - PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') - PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') - PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) - PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_END) PORT_NAME("ROLLDN") - PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) - PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_NAME("PREVPG") - - PORT_START("rear_sw") - PORT_DIPNAME(0x8000 , 0x8000 , "E9-6 jumper") - PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) - PORT_DIPSETTING(0x8000 , DEF_STR(No)) - PORT_DIPNAME(0x4000 , 0x4000 , "E9-5 jumper") - PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) - PORT_DIPSETTING(0x4000 , DEF_STR(No)) - PORT_DIPNAME(0x2000 , 0x2000 , "E9-4 jumper") - PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) - PORT_DIPSETTING(0x2000 , DEF_STR(No)) - PORT_DIPNAME(0x1000 , 0x1000 , "E9-3 jumper") - PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) - PORT_DIPSETTING(0x1000 , DEF_STR(No)) - PORT_DIPNAME(0x0800 , 0x0800 , "E9-2 jumper") - PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) - PORT_DIPSETTING(0x0800 , DEF_STR(No)) - PORT_DIPNAME(0x0400 , 0x0400 , "E9-1 jumper") - PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) - PORT_DIPSETTING(0x0400 , DEF_STR(No)) - PORT_DIPNAME(0x0018 , 0x0000 , "System source") - PORT_DIPLOCATION("S1:!7,!6") - PORT_DIPSETTING(0x0000 , "Sys bus") - PORT_DIPSETTING(0x0008 , "Local storage-talk only") - PORT_DIPSETTING(0x0010 , "Local storage-addressable") - PORT_DIPSETTING(0x0018 , "Performance verification") - PORT_DIPNAME(0x0300 , 0x0000 , "Upper bus address (N/U)") - PORT_DIPLOCATION("S1:!2,!1") - PORT_DIPSETTING(0x0000 , "0") - PORT_DIPSETTING(0x0100 , "1") - PORT_DIPSETTING(0x0200 , "2") - PORT_DIPSETTING(0x0300 , "3") - PORT_DIPNAME(0x0007 , 0x0000 , "System bus address") - PORT_DIPLOCATION("S1:!5,!4,!3") - PORT_DIPSETTING(0x0000 , "0") - PORT_DIPSETTING(0x0001 , "1") - PORT_DIPSETTING(0x0002 , "2") - PORT_DIPSETTING(0x0003 , "3") - PORT_DIPSETTING(0x0004 , "4") - PORT_DIPSETTING(0x0005 , "5") - PORT_DIPSETTING(0x0006 , "6") - PORT_DIPSETTING(0x0007 , "7") - PORT_DIPNAME(0x0080 , 0x0000 , "RS232 mode") - PORT_DIPLOCATION("S4 IO:!8") - PORT_DIPSETTING(0x0000 , "Terminal") - PORT_DIPSETTING(0x0080 , "Modem") - - PORT_START("rs232_sw") - PORT_DIPNAME(0xc0 , 0x00 , "Stop bits") - PORT_DIPLOCATION("S4 IO:!2,!1") - PORT_DIPSETTING(0x00 , "Invalid") - PORT_DIPSETTING(0x40 , "1") - PORT_DIPSETTING(0x80 , "1.5") - PORT_DIPSETTING(0xc0 , "2") - PORT_DIPNAME(0x20 , 0x00 , "Parity") - PORT_DIPLOCATION("S4 IO:!3") - PORT_DIPSETTING(0x00 , "Odd") - PORT_DIPSETTING(0x20 , "Even") - PORT_DIPNAME(0x10 , 0x00 , "Parity enable") - PORT_DIPLOCATION("S4 IO:!4") - PORT_DIPSETTING(0x00 , DEF_STR(No)) - PORT_DIPSETTING(0x10 , DEF_STR(Yes)) - PORT_DIPNAME(0x0c , 0x00 , "Char length") - PORT_DIPLOCATION("S4 IO:!6,!5") - PORT_DIPSETTING(0x00 , "5") - PORT_DIPSETTING(0x04 , "6") - PORT_DIPSETTING(0x08 , "7") - PORT_DIPSETTING(0x0c , "8") - PORT_DIPNAME(0x02 , 0x00 , "Baud rate factor") - PORT_DIPLOCATION("S4 IO:!7") - PORT_DIPSETTING(0x00 , "1x") - PORT_DIPSETTING(0x02 , "16x") - - PORT_START("s5_sw") - PORT_DIPNAME(0x01 , 0x00 , "Duplex") - PORT_DIPLOCATION("S5 IO:!1") - PORT_DIPSETTING(0x00 , "Half duplex") - PORT_DIPSETTING(0x01 , "Full duplex") - PORT_DIPNAME(0x1e , 0x00 , "Baud rate") - PORT_DIPLOCATION("S5 IO:!5,!4,!3,!2") - PORT_DIPSETTING(0x00 , "50") - PORT_DIPSETTING(0x02 , "75") - PORT_DIPSETTING(0x04 , "110") - PORT_DIPSETTING(0x06 , "134.5") - PORT_DIPSETTING(0x08 , "150") - PORT_DIPSETTING(0x0a , "300") - PORT_DIPSETTING(0x0c , "600") - PORT_DIPSETTING(0x0e , "1200") - PORT_DIPSETTING(0x10 , "1800") - PORT_DIPSETTING(0x12 , "2000") - PORT_DIPSETTING(0x14 , "2400") - PORT_DIPSETTING(0x16 , "3600") - PORT_DIPSETTING(0x18 , "4800") - PORT_DIPSETTING(0x1a , "7200") - PORT_DIPSETTING(0x1c , "9600") - PORT_DIPSETTING(0x1e , "19200") - + // Keyboard is arranged in a 8 x 16 matrix. Of the 128 possible positions, only 77 are used. + // For key arrangement on the matrix, see [1] pg 334 + // Keys are mapped on bit b of KEYn + // where b = (row & 1) << 4 + column, n = row >> 1 + // column = [0..15] + // row = [0..7] + PORT_START("KEY0") + PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2) + PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') + PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') + PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') + PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') + PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') + PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') + PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') + PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') + PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t') + PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') + PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') + PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') + PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') + PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') + PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=') + PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('^') PORT_CHAR('~') + PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('\\') PORT_CHAR('|') + PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) + PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_UNUSED) + + PORT_START("KEY1") + PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') + PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') + PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') + PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') + PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') + PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') + PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("RECALL") + PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_NAME("CLRLINE") + PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F11) PORT_NAME("CAPS") + PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F12) PORT_NAME("RESET") + PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("SK1") + PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("SK2") + PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_NAME("SK3") + PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("SK4") + PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("SK5") + PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_NAME("SK6") + PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("SK7") + PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("SK8") + PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_UNUSED) + + PORT_START("KEY2") + PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) + PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') + PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') + PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') + PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') + PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') + PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') + PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') + PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_NAME("INSCHAR") + PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_NAME("DELCHAR") + PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') + PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') + PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') + PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') + PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@') PORT_CHAR('`') + PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR('{') + PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('_') PORT_CHAR(UCHAR_MAMEKEY(DEL)) + PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_NAME("ROLLUP") + PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) + PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PGDN) PORT_NAME("NEXTPG") + + PORT_START("KEY3") + PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') + PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') + PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') + PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') + PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+') + PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*') + PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']') PORT_CHAR('}') + PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) + PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) + PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) + PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) + PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') + PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') + PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') + PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') + PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') + PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') + PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) + PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_END) PORT_NAME("ROLLDN") + PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) + PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_NAME("PREVPG") + + PORT_START("rear_sw") + PORT_DIPNAME(0x8000 , 0x8000 , "E9-6 jumper") + PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) + PORT_DIPSETTING(0x8000 , DEF_STR(No)) + PORT_DIPNAME(0x4000 , 0x4000 , "E9-5 jumper") + PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) + PORT_DIPSETTING(0x4000 , DEF_STR(No)) + PORT_DIPNAME(0x2000 , 0x2000 , "E9-4 jumper") + PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) + PORT_DIPSETTING(0x2000 , DEF_STR(No)) + PORT_DIPNAME(0x1000 , 0x1000 , "E9-3 jumper") + PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) + PORT_DIPSETTING(0x1000 , DEF_STR(No)) + PORT_DIPNAME(0x0800 , 0x0800 , "E9-2 jumper") + PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) + PORT_DIPSETTING(0x0800 , DEF_STR(No)) + PORT_DIPNAME(0x0400 , 0x0400 , "E9-1 jumper") + PORT_DIPSETTING(0x0000 , DEF_STR(Yes)) + PORT_DIPSETTING(0x0400 , DEF_STR(No)) + PORT_DIPNAME(0x0018 , 0x0000 , "System source") + PORT_DIPLOCATION("S1:!7,!6") + PORT_DIPSETTING(0x0000 , "Sys bus") + PORT_DIPSETTING(0x0008 , "Local storage-talk only") + PORT_DIPSETTING(0x0010 , "Local storage-addressable") + PORT_DIPSETTING(0x0018 , "Performance verification") + PORT_DIPNAME(0x0300 , 0x0000 , "Upper bus address (N/U)") + PORT_DIPLOCATION("S1:!2,!1") + PORT_DIPSETTING(0x0000 , "0") + PORT_DIPSETTING(0x0100 , "1") + PORT_DIPSETTING(0x0200 , "2") + PORT_DIPSETTING(0x0300 , "3") + PORT_DIPNAME(0x0007 , 0x0000 , "System bus address") + PORT_DIPLOCATION("S1:!5,!4,!3") + PORT_DIPSETTING(0x0000 , "0") + PORT_DIPSETTING(0x0001 , "1") + PORT_DIPSETTING(0x0002 , "2") + PORT_DIPSETTING(0x0003 , "3") + PORT_DIPSETTING(0x0004 , "4") + PORT_DIPSETTING(0x0005 , "5") + PORT_DIPSETTING(0x0006 , "6") + PORT_DIPSETTING(0x0007 , "7") + PORT_DIPNAME(0x0080 , 0x0000 , "RS232 mode") + PORT_DIPLOCATION("S4 IO:!8") + PORT_DIPSETTING(0x0000 , "Terminal") + PORT_DIPSETTING(0x0080 , "Modem") + + PORT_START("rs232_sw") + PORT_DIPNAME(0xc0 , 0x00 , "Stop bits") + PORT_DIPLOCATION("S4 IO:!2,!1") + PORT_DIPSETTING(0x00 , "Invalid") + PORT_DIPSETTING(0x40 , "1") + PORT_DIPSETTING(0x80 , "1.5") + PORT_DIPSETTING(0xc0 , "2") + PORT_DIPNAME(0x20 , 0x00 , "Parity") + PORT_DIPLOCATION("S4 IO:!3") + PORT_DIPSETTING(0x00 , "Odd") + PORT_DIPSETTING(0x20 , "Even") + PORT_DIPNAME(0x10 , 0x00 , "Parity enable") + PORT_DIPLOCATION("S4 IO:!4") + PORT_DIPSETTING(0x00 , DEF_STR(No)) + PORT_DIPSETTING(0x10 , DEF_STR(Yes)) + PORT_DIPNAME(0x0c , 0x00 , "Char length") + PORT_DIPLOCATION("S4 IO:!6,!5") + PORT_DIPSETTING(0x00 , "5") + PORT_DIPSETTING(0x04 , "6") + PORT_DIPSETTING(0x08 , "7") + PORT_DIPSETTING(0x0c , "8") + PORT_DIPNAME(0x02 , 0x00 , "Baud rate factor") + PORT_DIPLOCATION("S4 IO:!7") + PORT_DIPSETTING(0x00 , "1x") + PORT_DIPSETTING(0x02 , "16x") + + PORT_START("s5_sw") + PORT_DIPNAME(0x01 , 0x00 , "Duplex") + PORT_DIPLOCATION("S5 IO:!1") + PORT_DIPSETTING(0x00 , "Half duplex") + PORT_DIPSETTING(0x01 , "Full duplex") + PORT_DIPNAME(0x1e , 0x00 , "Baud rate") + PORT_DIPLOCATION("S5 IO:!5,!4,!3,!2") + PORT_DIPSETTING(0x00 , "50") + PORT_DIPSETTING(0x02 , "75") + PORT_DIPSETTING(0x04 , "110") + PORT_DIPSETTING(0x06 , "134.5") + PORT_DIPSETTING(0x08 , "150") + PORT_DIPSETTING(0x0a , "300") + PORT_DIPSETTING(0x0c , "600") + PORT_DIPSETTING(0x0e , "1200") + PORT_DIPSETTING(0x10 , "1800") + PORT_DIPSETTING(0x12 , "2000") + PORT_DIPSETTING(0x14 , "2400") + PORT_DIPSETTING(0x16 , "3600") + PORT_DIPSETTING(0x18 , "4800") + PORT_DIPSETTING(0x1a , "7200") + PORT_DIPSETTING(0x1c , "9600") + PORT_DIPSETTING(0x1e , "19200") INPUT_PORTS_END static SLOT_INTERFACE_START(hp64k_floppies) - SLOT_INTERFACE("525dd" , FLOPPY_525_DD) + SLOT_INTERFACE("525dd" , FLOPPY_525_DD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START(hp64k , hp64k_state) - MCFG_CPU_ADD("cpu" , HP_5061_3011 , 6250000) - MCFG_CPU_PROGRAM_MAP(cpu_mem_map) - MCFG_CPU_IO_MAP(cpu_io_map) - MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(hp64k_state , hp64k_irq_callback) - MCFG_QUANTUM_TIME(attotime::from_hz(100)) - - // Actual keyboard refresh rate should be between 1 and 2 kHz - MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer" , hp64k_state , hp64k_kb_scan , attotime::from_hz(100)) - - // Line sync timer. A line frequency of 50 Hz is assumed. - MCFG_TIMER_DRIVER_ADD_PERIODIC("linesync_timer" , hp64k_state , hp64k_line_sync , attotime::from_hz(50)) - - // Clock = 25 MHz / 9 * (112/114) - MCFG_DEVICE_ADD("crtc" , I8275 , 2729045) - MCFG_VIDEO_SET_SCREEN("screen") - MCFG_I8275_CHARACTER_WIDTH(9) - MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(hp64k_state , crtc_display_pixels) - MCFG_I8275_DRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_crtc_drq_w)) - MCFG_I8275_VRTC_CALLBACK(WRITELINE(hp64k_state , hp64k_crtc_vrtc_w)) - - MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green()) - MCFG_SCREEN_UPDATE_DEVICE("crtc" , i8275_device , screen_update) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(720 , 390) - MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") - - MCFG_FD1791_ADD("fdc" , XTAL_4MHz / 4) - MCFG_WD_FDC_FORCE_READY - MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_flp_intrq_w)) - MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_flp_drq_w)) - MCFG_FLOPPY_DRIVE_ADD("fdc:0" , hp64k_floppies , "525dd" , floppy_image_device::default_floppy_formats) - MCFG_SLOT_FIXED(true) - MCFG_FLOPPY_DRIVE_ADD("fdc:1" , hp64k_floppies , "525dd" , floppy_image_device::default_floppy_formats) - MCFG_SLOT_FIXED(true) - - MCFG_DEVICE_ADD("fdc_rdy0" , TTL74123 , 0) - MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE) - MCFG_TTL74123_RESISTOR_VALUE(RES_K(68.1)) - // Warning! Duration formula is not correct for LS123, actual capacitor is 10 uF - MCFG_TTL74123_CAPACITOR_VALUE(CAP_U(16)) - MCFG_TTL74123_B_PIN_VALUE(1) - MCFG_TTL74123_CLEAR_PIN_VALUE(1) - MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITE8(hp64k_state , hp64k_floppy0_rdy)); - - MCFG_DEVICE_ADD("fdc_rdy1" , TTL74123 , 0) - MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE) - MCFG_TTL74123_RESISTOR_VALUE(RES_K(68.1)) - MCFG_TTL74123_CAPACITOR_VALUE(CAP_U(16)) - MCFG_TTL74123_B_PIN_VALUE(1) - MCFG_TTL74123_CLEAR_PIN_VALUE(1) - MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITE8(hp64k_state , hp64k_floppy1_rdy)); - - MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("beeper" , BEEP , 2500) - MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 1.00) - - MCFG_TIMER_DRIVER_ADD("beep_timer" , hp64k_state , hp64k_beeper_off); - - MCFG_DEVICE_ADD("baud_rate" , COM8116 , XTAL_5_0688MHz) - MCFG_COM8116_FR_HANDLER(WRITELINE(hp64k_state , hp64k_baud_clk_w)); - - MCFG_DEVICE_ADD("uart" , I8251 , 0) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(hp64k_state , hp64k_rxrdy_w)); - MCFG_I8251_TXRDY_HANDLER(WRITELINE(hp64k_state , hp64k_txrdy_w)); - MCFG_I8251_TXD_HANDLER(WRITELINE(hp64k_state , hp64k_txd_w)); - MCFG_I8251_DTR_HANDLER(WRITELINE(hp64k_state , hp64k_dtr_w)); - MCFG_I8251_RTS_HANDLER(WRITELINE(hp64k_state , hp64k_rts_w)); - - MCFG_RS232_PORT_ADD("rs232" , default_rs232_devices , nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(hp64k_state , hp64k_rs232_rxd_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(hp64k_state , hp64k_rs232_dcd_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE(hp64k_state , hp64k_rs232_cts_w)) +static MACHINE_CONFIG_START(hp64k) + MCFG_CPU_ADD("cpu" , HP_5061_3011 , 6250000) + MCFG_CPU_PROGRAM_MAP(cpu_mem_map) + MCFG_CPU_IO_MAP(cpu_io_map) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(hp64k_state , hp64k_irq_callback) + MCFG_QUANTUM_TIME(attotime::from_hz(100)) + + // Actual keyboard refresh rate should be between 1 and 2 kHz + MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer" , hp64k_state , hp64k_kb_scan , attotime::from_hz(100)) + + // Line sync timer. A line frequency of 50 Hz is assumed. + MCFG_TIMER_DRIVER_ADD_PERIODIC("linesync_timer" , hp64k_state , hp64k_line_sync , attotime::from_hz(50)) + + // Clock = 25 MHz / 9 * (112/114) + MCFG_DEVICE_ADD("crtc" , I8275 , 2729045) + MCFG_VIDEO_SET_SCREEN("screen") + MCFG_I8275_CHARACTER_WIDTH(9) + MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(hp64k_state , crtc_display_pixels) + MCFG_I8275_DRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_crtc_drq_w)) + MCFG_I8275_VRTC_CALLBACK(WRITELINE(hp64k_state , hp64k_crtc_vrtc_w)) + + MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green()) + MCFG_SCREEN_UPDATE_DEVICE("crtc" , i8275_device , screen_update) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_SIZE(720 , 390) + MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") + + MCFG_FD1791_ADD("fdc" , XTAL_4MHz / 4) + MCFG_WD_FDC_FORCE_READY + MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_flp_intrq_w)) + MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_flp_drq_w)) + MCFG_FLOPPY_DRIVE_ADD("fdc:0" , hp64k_floppies , "525dd" , floppy_image_device::default_floppy_formats) + MCFG_SLOT_FIXED(true) + MCFG_FLOPPY_DRIVE_ADD("fdc:1" , hp64k_floppies , "525dd" , floppy_image_device::default_floppy_formats) + MCFG_SLOT_FIXED(true) + + MCFG_DEVICE_ADD("fdc_rdy0" , TTL74123 , 0) + MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE) + MCFG_TTL74123_RESISTOR_VALUE(RES_K(68.1)) + // Warning! Duration formula is not correct for LS123, actual capacitor is 10 uF + MCFG_TTL74123_CAPACITOR_VALUE(CAP_U(16)) + MCFG_TTL74123_B_PIN_VALUE(1) + MCFG_TTL74123_CLEAR_PIN_VALUE(1) + MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITE8(hp64k_state , hp64k_floppy0_rdy)); + + MCFG_DEVICE_ADD("fdc_rdy1" , TTL74123 , 0) + MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE) + MCFG_TTL74123_RESISTOR_VALUE(RES_K(68.1)) + MCFG_TTL74123_CAPACITOR_VALUE(CAP_U(16)) + MCFG_TTL74123_B_PIN_VALUE(1) + MCFG_TTL74123_CLEAR_PIN_VALUE(1) + MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITE8(hp64k_state , hp64k_floppy1_rdy)); + + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("beeper" , BEEP , 2500) + MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 1.00) + + MCFG_TIMER_DRIVER_ADD("beep_timer" , hp64k_state , hp64k_beeper_off); + + MCFG_DEVICE_ADD("baud_rate" , COM8116 , XTAL_5_0688MHz) + MCFG_COM8116_FR_HANDLER(WRITELINE(hp64k_state , hp64k_baud_clk_w)); + + MCFG_DEVICE_ADD("uart" , I8251 , 0) + MCFG_I8251_RXRDY_HANDLER(WRITELINE(hp64k_state , hp64k_rxrdy_w)); + MCFG_I8251_TXRDY_HANDLER(WRITELINE(hp64k_state , hp64k_txrdy_w)); + MCFG_I8251_TXD_HANDLER(WRITELINE(hp64k_state , hp64k_txd_w)); + MCFG_I8251_DTR_HANDLER(WRITELINE(hp64k_state , hp64k_dtr_w)); + MCFG_I8251_RTS_HANDLER(WRITELINE(hp64k_state , hp64k_rts_w)); + + MCFG_RS232_PORT_ADD("rs232" , default_rs232_devices , nullptr) + MCFG_RS232_RXD_HANDLER(WRITELINE(hp64k_state , hp64k_rs232_rxd_w)) + MCFG_RS232_DCD_HANDLER(WRITELINE(hp64k_state , hp64k_rs232_dcd_w)) + MCFG_RS232_CTS_HANDLER(WRITELINE(hp64k_state , hp64k_rs232_cts_w)) MACHINE_CONFIG_END ROM_START(hp64k) - ROM_REGION(0x8000 , "cpu" , ROMREGION_16BIT | ROMREGION_BE | ROMREGION_INVERT) - ROM_LOAD16_BYTE("64100_80022.bin" , 0x0000 , 0x1000 , CRC(38b2aae5) SHA1(bfd0f126bfaf3724dc501979ad2d46afc41913aa)) - ROM_LOAD16_BYTE("64100_80020.bin" , 0x0001 , 0x1000 , CRC(ac01b436) SHA1(be1e827ea1393a95abb02a52ab5cc35dc2cd96e4)) - ROM_LOAD16_BYTE("64100_80023.bin" , 0x2000 , 0x1000 , CRC(6b4bc2ce) SHA1(00e6c58ccae9640dc81cb3e92db90a8c69b02a93)) - ROM_LOAD16_BYTE("64100_80021.bin" , 0x2001 , 0x1000 , CRC(74f9d33c) SHA1(543a845a992b0ceac3e0491acdfb178df0adeb1f)) - ROM_LOAD16_BYTE("64100_80026.bin" , 0x4000 , 0x1000 , CRC(a74e834b) SHA1(a2ff9765628985d9bab4cb44ba23257a9b8d0965)) - ROM_LOAD16_BYTE("64100_80024.bin" , 0x4001 , 0x1000 , CRC(2e15a1d2) SHA1(ce4330f8f8015a26c02f0965b95baf7dfd615512)) - ROM_LOAD16_BYTE("64100_80027.bin" , 0x6000 , 0x1000 , CRC(b93c0e7a) SHA1(b239446d3d6e9d3dba6c0278b2771abe1623e1ad)) - ROM_LOAD16_BYTE("64100_80025.bin" , 0x6001 , 0x1000 , CRC(e6353085) SHA1(48d78835c798f2caf6ee539057676d4f3c8a4df9)) - - ROM_REGION(0x800 , "chargen" , 0) - ROM_LOAD("1816_1496_82S191.bin" , 0 , 0x800 , CRC(32a52664) SHA1(8b2a49a32510103ff424e8481d5ed9887f609f2f)) + ROM_REGION(0x8000 , "cpu" , ROMREGION_16BIT | ROMREGION_BE | ROMREGION_INVERT) + ROM_LOAD16_BYTE("64100_80022.bin" , 0x0000 , 0x1000 , CRC(38b2aae5) SHA1(bfd0f126bfaf3724dc501979ad2d46afc41913aa)) + ROM_LOAD16_BYTE("64100_80020.bin" , 0x0001 , 0x1000 , CRC(ac01b436) SHA1(be1e827ea1393a95abb02a52ab5cc35dc2cd96e4)) + ROM_LOAD16_BYTE("64100_80023.bin" , 0x2000 , 0x1000 , CRC(6b4bc2ce) SHA1(00e6c58ccae9640dc81cb3e92db90a8c69b02a93)) + ROM_LOAD16_BYTE("64100_80021.bin" , 0x2001 , 0x1000 , CRC(74f9d33c) SHA1(543a845a992b0ceac3e0491acdfb178df0adeb1f)) + ROM_LOAD16_BYTE("64100_80026.bin" , 0x4000 , 0x1000 , CRC(a74e834b) SHA1(a2ff9765628985d9bab4cb44ba23257a9b8d0965)) + ROM_LOAD16_BYTE("64100_80024.bin" , 0x4001 , 0x1000 , CRC(2e15a1d2) SHA1(ce4330f8f8015a26c02f0965b95baf7dfd615512)) + ROM_LOAD16_BYTE("64100_80027.bin" , 0x6000 , 0x1000 , CRC(b93c0e7a) SHA1(b239446d3d6e9d3dba6c0278b2771abe1623e1ad)) + ROM_LOAD16_BYTE("64100_80025.bin" , 0x6001 , 0x1000 , CRC(e6353085) SHA1(48d78835c798f2caf6ee539057676d4f3c8a4df9)) + + ROM_REGION(0x800 , "chargen" , 0) + ROM_LOAD("1816_1496_82S191.bin" , 0 , 0x800 , CRC(32a52664) SHA1(8b2a49a32510103ff424e8481d5ed9887f609f2f)) ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1979, hp64k, 0, 0, hp64k, hp64k, driver_device, 0, "HP", "HP 64000" , 0) +COMP( 1979, hp64k, 0, 0, hp64k, hp64k, hp64k_state, 0, "HP", "HP 64000" , 0) diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp index 4e3cd26e4f5..90d979d6a36 100644 --- a/src/mame/drivers/hp9845.cpp +++ b/src/mame/drivers/hp9845.cpp @@ -12,27 +12,27 @@ // ******************************* // // What's in: -// - Emulation of 45B and 45C systems +// - Emulation of 45B, 45C and 45T systems // - Emulation of both 5061-3001 CPUs // - LPU & PPU ROMs // - LPU & PPU RAMs // - Text mode screen // - Graphic screen // - Keyboard -// - T15 tape drive +// - T14 and T15 tape drive // - Software list to load optional ROMs // - Beeper // - Correct character generator ROMs (a huge "thank you" to Ansgar Kueckes for the dumps!) +// - 98775 light pen controller +// - Display softkeys on 45C & 45T // What's not yet in: -// - Better naming of tape drive image (it's now "magt", should be "t15") +// - Better naming of tape drive image (it's now "magt1" and "magt2", should be "t15" and "t14") // - Better documentation of this file -// - Emulation of 45T system -// - Display softkeys on 45C & 45T // - Better keyboard mapping // - German keyboard // What's wrong: // - Speed, as usual -// - Light pen sometimes behaves erratically in 45C +// - Light pen tracing sometimes behaves erratically in 45C and 45T // What will probably never be in: // - Integral printer (firmware and character generator ROMs are very difficult to dump) // - Fast LPU processor (dump of microcode PROMs is not available) @@ -52,7 +52,7 @@ // Debugging #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" #define BIT_MASK(n) (1U << (n)) @@ -78,7 +78,7 @@ Timing and pixel size for real 98750A are slightly different between alpha and graphics raster (dual raster): - alpha graphics + alpha graphics ------------------------------------------------------ Matrix: 720x375 560x455 Clock frequency: 20.85 MHz 20.85 MHz @@ -95,7 +95,7 @@ hold up to 30 rows with full size characters plus some lines for one row with cropped characters: - 98770A 98780A + 98770A 98780A ------------------------------------------------------ Matrix: 720x455 720x455 Clock frequency: 29.7984 MHz 28.224 MHz @@ -109,8 +109,8 @@ */ // Base address of video buffer -#define VIDEO_BUFFER_BASE_LOW 0x16000 // for 98770A and 98780A -#define VIDEO_BUFFER_BASE_HIGH 0x17000 // for 98750A +#define VIDEO_BUFFER_BASE_LOW 0x16000 // for 98770A and 98780A +#define VIDEO_BUFFER_BASE_HIGH 0x17000 // for 98750A // For test "B" of alpha video to succeed this must be < 234 // Basically "B" test is designed to intentionally prevent line buffer to be filled so that display is blanked @@ -129,7 +129,7 @@ #define VIDEO_HTOTAL (VIDEO_CHAR_WIDTH * VIDEO_CHAR_TOTAL) #define VIDEO_VTOTAL (VIDEO_CHAR_HEIGHT * VIDEO_ROWS_TOTAL) #define VIDEO_ACTIVE_SCANLINES (VIDEO_CHAR_HEIGHT * VIDEO_CHAR_ROWS) -#define VIDEO_TOT_HPIXELS (VIDEO_CHAR_WIDTH * VIDEO_CHAR_COLUMNS) +#define VIDEO_TOT_HPIXELS (VIDEO_CHAR_WIDTH * VIDEO_CHAR_COLUMNS) // Constants of graphic video // Pixel clock is 20.8494 MHz (the same as alpha video) @@ -147,36 +147,52 @@ #define GVIDEO_VBSTART (GVIDEO_VBEND + GVIDEO_VPIXELS) #define GVIDEO_MEM_SIZE 16384 #define GVIDEO_ADDR_MASK (GVIDEO_MEM_SIZE - 1) -#define GVIDEO_PA 13 // Constants of 98770A video // HBEND & VBEND probably are not really 0 -#define VIDEO_770_PIXEL_CLOCK 29798400 -#define VIDEO_770_HTOTAL 1024 -#define VIDEO_770_HBEND 0 -#define VIDEO_770_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH) -#define VIDEO_770_VTOTAL 485 -#define VIDEO_770_VBEND 0 -#define VIDEO_770_VBSTART (VIDEO_770_VBEND + GVIDEO_VPIXELS) -#define VIDEO_770_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part -#define VIDEO_770_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part - -#define I_GR 0xb0 // graphics intensity -#define I_AL 0xd0 // alpha intensity -#define I_CU 0xf0 // graphics cursor intensity -#define I_LP 0xff // light pen cursor intensity +#define VIDEO_770_PIXEL_CLOCK 29798400 +#define VIDEO_770_HTOTAL 1024 +#define VIDEO_770_HBEND 0 +#define VIDEO_770_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH) +#define VIDEO_770_VTOTAL 485 +#define VIDEO_770_VBEND 0 +#define VIDEO_770_VBSTART (VIDEO_770_VBEND + GVIDEO_VPIXELS) +#define VIDEO_770_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part +#define VIDEO_770_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part + +// Constants of 98780A video +#define VIDEO_780_PIXEL_CLOCK 28224000 +#define VIDEO_780_HTOTAL 896 +#define VIDEO_780_VTOTAL 525 +#define VIDEO_780_HBEND 0 +#define VIDEO_780_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH) +#define VIDEO_780_VBEND 0 +#define VIDEO_780_VBSTART (VIDEO_780_VBEND + GVIDEO_VPIXELS) +#define VIDEO_780_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part +#define VIDEO_780_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part + +#define I_GR 0xb0 // graphics intensity +#define I_AL 0xd0 // alpha intensity +#define I_CU 0xf0 // graphics cursor intensity +#define I_LP 0xff // light pen cursor intensity // Palette indexes (for monochromatic screens) -#define PEN_BLACK 0 // Black -#define PEN_GRAPHIC 1 // Graphics -#define PEN_ALPHA 2 // Text -#define PEN_CURSOR 3 // Graphic cursor -#define PEN_LP 4 // Light pen cursor +#define PEN_BLACK 0 // Black +#define PEN_GRAPHIC 1 // Graphics +#define PEN_ALPHA 2 // Text +#define PEN_CURSOR 3 // Graphic cursor +#define PEN_LP 4 // Light pen cursor + +// Light pen constants +constexpr unsigned LP_FOV = 9; // Field of view +constexpr unsigned LP_XOFFSET = 5; // x-offset of LP (due to delay in hit recognition) // Peripheral Addresses (PA) -#define IO_SLOT_FIRST_PA 1 -#define IO_SLOT_LAST_PA 12 -#define T15_PA 15 +#define IO_SLOT_FIRST_PA 1 +#define IO_SLOT_LAST_PA 12 +#define GVIDEO_PA 13 +#define T14_PA 14 +#define T15_PA 15 #define KEY_SCAN_OSCILLATOR 327680 @@ -356,6 +372,7 @@ hp9845_base_state::hp9845_base_state(const machine_config &mconfig, device_type m_io_key1(*this , "KEY1"), m_io_key2(*this , "KEY2"), m_io_key3(*this , "KEY3"), + m_t14(*this , "t14"), m_t15(*this , "t15"), m_beeper(*this , "beeper"), m_beep_timer(*this , "beep_timer"), @@ -364,8 +381,7 @@ hp9845_base_state::hp9845_base_state(const machine_config &mconfig, device_type m_io_slot2(*this , "slot2"), m_io_slot3(*this , "slot3"), m_ram(*this , RAM_TAG), - m_chargen(*this , "chargen"), - m_optional_chargen(*this , "optional_chargen") + m_chargen(*this , "chargen") { } @@ -470,7 +486,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(hp9845_base_state::gv_timer) advance_gv_fsm(false , false); } -attotime hp9845_base_state::time_to_gv_mem_availability(void) const +attotime hp9845_base_state::time_to_gv_mem_availability() const { if (m_graphic_sel) { int hpos = m_screen->hpos(); @@ -498,7 +514,7 @@ IRQ_CALLBACK_MEMBER(hp9845_base_state::irq_callback) } } -void hp9845_base_state::update_irq(void) +void hp9845_base_state::update_irq() { m_ppu->set_input_line(HPHYBRID_IRL , m_irl_pending != 0); m_ppu->set_input_line(HPHYBRID_IRH , m_irh_pending != 0); @@ -529,7 +545,7 @@ void hp9845_base_state::irq_w(uint8_t sc , int state) update_irq(); } -void hp9845_base_state::update_flg_sts(void) +void hp9845_base_state::update_flg_sts() { bool sts = BIT(m_sts_status , m_pa); bool flg = BIT(m_flg_status , m_pa); @@ -676,6 +692,21 @@ WRITE8_MEMBER(hp9845_base_state::pa_w) } } +WRITE_LINE_MEMBER(hp9845_base_state::t14_irq_w) +{ + irq_w(T14_PA , state); +} + +WRITE_LINE_MEMBER(hp9845_base_state::t14_flg_w) +{ + flg_w(T14_PA , state); +} + +WRITE_LINE_MEMBER(hp9845_base_state::t14_sts_w) +{ + sts_w(T14_PA , state); +} + WRITE_LINE_MEMBER(hp9845_base_state::t15_irq_w) { irq_w(T15_PA , state); @@ -709,7 +740,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(scanline_timer); - void vblank_w(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(vblank_w); protected: void set_graphic_mode(bool graphic); @@ -719,7 +750,10 @@ protected: void graphic_video_render(unsigned video_scanline); virtual void advance_gv_fsm(bool ds , bool trigger) override; - void update_graphic_bits(void); + void update_graphic_bits(); + + // Optional character generator + required_region_ptr m_optional_chargen; uint8_t m_video_attr; uint16_t m_gv_cursor_w; // U38 & U39 (GS) @@ -727,7 +761,8 @@ protected: }; hp9845b_state::hp9845b_state(const machine_config &mconfig, device_type type, const char *tag) - : hp9845_base_state(mconfig , type , tag) + : hp9845_base_state(mconfig , type , tag), + m_optional_chargen(*this , "optional_chargen") { } @@ -750,10 +785,10 @@ void hp9845b_state::machine_start() m_graphic_mem.resize(GVIDEO_MEM_SIZE); // initialize palette - m_palette->set_pen_color(PEN_BLACK , 0x00, 0x00, 0x00); // black - m_palette->set_pen_color(PEN_GRAPHIC, 0x00, I_GR, 0x00); // graphics - m_palette->set_pen_color(PEN_ALPHA , 0x00, I_AL, 0x00); // alpha - m_palette->set_pen_color(PEN_CURSOR , 0x00, I_CU, 0x00); // graphics cursor + m_palette->set_pen_color(PEN_BLACK , 0x00, 0x00, 0x00); // black + m_palette->set_pen_color(PEN_GRAPHIC, 0x00, I_GR, 0x00); // graphics + m_palette->set_pen_color(PEN_ALPHA , 0x00, I_AL, 0x00); // alpha + m_palette->set_pen_color(PEN_CURSOR , 0x00, I_CU, 0x00); // graphics cursor } void hp9845b_state::machine_reset() @@ -785,7 +820,7 @@ READ16_MEMBER(hp9845b_state::graphic_r) if (m_gv_dma_en) { BIT_SET(res, 6); } - BIT_SET(res, 5); // ID + BIT_SET(res, 5); // ID break; case 2: @@ -865,7 +900,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(hp9845b_state::scanline_timer) } } -void hp9845b_state::vblank_w(screen_device &screen, bool state) +WRITE_LINE_MEMBER(hp9845b_state::vblank_w) { // VBlank signal is fed into HALT flag of PPU m_ppu->halt_w(state); @@ -1200,7 +1235,7 @@ void hp9845b_state::advance_gv_fsm(bool ds , bool trigger) update_graphic_bits(); } -void hp9845b_state::update_graphic_bits(void) +void hp9845b_state::update_graphic_bits() { bool gv_ready = m_gv_fsm_state == GV_STAT_WAIT_DS_0 || m_gv_fsm_state == GV_STAT_WAIT_DS_1 || @@ -1218,39 +1253,24 @@ void hp9845b_state::update_graphic_bits(void) } // *************** -// hp9845ct_state +// hp9845ct_base_state // *************** -/* - For 9845C and 9845T we just add the light pen support via MAME's lightgun device. - - Note that the LIGHTGUN device needs '-lightgun' and '-lightgun_device mouse' for light gun emulation if no real light gun device is installed. - */ -static INPUT_PORTS_START(hp9845ct) - PORT_INCLUDE(hp9845_base) - PORT_START("LIGHTPENX") - PORT_BIT( 0x3ff, 0x000, IPT_LIGHTGUN_X ) PORT_SENSITIVITY(20) PORT_MINMAX(0, VIDEO_TOT_HPIXELS - 1) PORT_CROSSHAIR(X, 1.0, 0.0, 0) - - PORT_START("LIGHTPENY") - PORT_BIT( 0x3ff, 0x000, IPT_LIGHTGUN_Y ) PORT_SENSITIVITY(20) PORT_MINMAX(0, GVIDEO_VPIXELS - 1) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) - - PORT_START("GKEY") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Gkey") -INPUT_PORTS_END - -class hp9845ct_state : public hp9845_base_state +class hp9845ct_base_state : public hp9845_base_state { public: - hp9845ct_state(const machine_config &mconfig, device_type type, const char *tag); + hp9845ct_base_state(const machine_config &mconfig, device_type type, const char *tag); virtual void machine_start() override; virtual void machine_reset() override; uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void vblank_w(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(vblank_w); + DECLARE_INPUT_CHANGED_MEMBER(softkey_changed); protected: + required_ioport m_io_softkeys; required_ioport m_lightpen_x; required_ioport m_lightpen_y; required_ioport m_lightpen_sw; @@ -1260,14 +1280,21 @@ protected: void video_fill_buff(bool buff_idx); virtual void plot(uint16_t x, uint16_t y, bool draw_erase) = 0; void draw_line(unsigned x0 , unsigned y0 , unsigned x1 , unsigned y1); - void update_line_pattern(void); + void update_line_pattern(); + void pattern_fill(uint16_t x0 , uint16_t y0 , uint16_t x1 , uint16_t y1 , unsigned fill_idx); static uint16_t get_gv_mem_addr(unsigned x , unsigned y); - void update_graphic_bits(void); + virtual void update_graphic_bits(void) = 0; + static int get_wrapped_scanline(unsigned scanline); + void render_lp_cursor(unsigned video_scanline , unsigned pen_idx); void lp_r4_w(uint16_t data); - uint16_t lp_r4_r(void); + uint16_t lp_r4_r(); void lp_r5_w(uint16_t data); - void compute_lp_data(void); + bool lp_segment_intersect(unsigned yline) const; + void compute_lp_data(); + void lp_scanline_update(unsigned video_scanline); + + virtual void update_gcursor(void) = 0; bool m_alpha_sel; bool m_gv_sk_en; @@ -1292,9 +1319,9 @@ protected: uint16_t m_gv_last_xpt; uint16_t m_gv_last_ypt; uint16_t m_gv_lp_data[ 3 ]; + uint16_t m_gv_next_lp_data[ 3 ]; + unsigned m_gv_next_lp_scanline[ 3 ]; bool m_gv_lp_selftest; - bool m_gv_lp_xwindow; - bool m_gv_lp_ywindow; bool m_gv_lp_interlace; bool m_gv_lp_vblank; bool m_gv_lp_1sthit; @@ -1306,26 +1333,59 @@ protected: bool m_gv_lp_sw; uint8_t m_gv_lp_reg_cnt; bool m_gv_lp_int_en; + bool m_gv_lp_hit_lt192; + bool m_gv_lp_int_256; + uint16_t m_gv_lxc; + uint16_t m_gv_lyc; + uint8_t m_gv_softkey; static const uint16_t m_line_type[]; static const uint16_t m_area_fill[]; }; -hp9845ct_state::hp9845ct_state(const machine_config &mconfig, device_type type, const char *tag) +/* + For 9845C and 9845T we just add the light pen support via MAME's lightgun device. + + Note that the LIGHTGUN device needs '-lightgun' and '-lightgun_device mouse' for light gun emulation if no real light gun device is installed. + */ +static INPUT_PORTS_START(hp9845ct) + PORT_INCLUDE(hp9845_base) + PORT_START("SOFTKEYS") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Softkey0") PORT_CHANGED_MEMBER(DEVICE_SELF, hp9845ct_base_state, softkey_changed, 0) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Softkey1") PORT_CHANGED_MEMBER(DEVICE_SELF, hp9845ct_base_state, softkey_changed, 0) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Softkey2") PORT_CHANGED_MEMBER(DEVICE_SELF, hp9845ct_base_state, softkey_changed, 0) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Softkey3") PORT_CHANGED_MEMBER(DEVICE_SELF, hp9845ct_base_state, softkey_changed, 0) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Softkey4") PORT_CHANGED_MEMBER(DEVICE_SELF, hp9845ct_base_state, softkey_changed, 0) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Softkey5") PORT_CHANGED_MEMBER(DEVICE_SELF, hp9845ct_base_state, softkey_changed, 0) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Softkey6") PORT_CHANGED_MEMBER(DEVICE_SELF, hp9845ct_base_state, softkey_changed, 0) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Softkey7") PORT_CHANGED_MEMBER(DEVICE_SELF, hp9845ct_base_state, softkey_changed, 0) + + PORT_START("LIGHTPENX") + PORT_BIT( 0x3ff, 0x000, IPT_LIGHTGUN_X ) PORT_SENSITIVITY(20) PORT_MINMAX(0, VIDEO_TOT_HPIXELS - 1) PORT_CROSSHAIR(X, 1.0, 0.0, 0) + + PORT_START("LIGHTPENY") + PORT_BIT( 0x3ff, 0x000, IPT_LIGHTGUN_Y ) PORT_SENSITIVITY(20) PORT_MINMAX(0, GVIDEO_VPIXELS - 1) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) + + PORT_START("GKEY") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Gkey") +INPUT_PORTS_END + +hp9845ct_base_state::hp9845ct_base_state(const machine_config &mconfig, device_type type, const char *tag) : hp9845_base_state(mconfig , type , tag), + m_io_softkeys(*this, "SOFTKEYS"), m_lightpen_x(*this, "LIGHTPENX"), m_lightpen_y(*this, "LIGHTPENY"), m_lightpen_sw(*this, "GKEY") { } -void hp9845ct_state::machine_start() +void hp9845ct_base_state::machine_start() { // Common part first hp9845_base_state::machine_start(); } -void hp9845ct_state::machine_reset() +void hp9845ct_base_state::machine_reset() { // Common part first hp9845_base_state::machine_reset(); @@ -1335,8 +1395,6 @@ void hp9845ct_state::machine_reset() m_gv_gr_en = false; m_gv_opt_en = false; m_gv_dsa_en = false; - // TODO: check - //m_gv_lp_status = true; // required by Test ROM m_gv_lp_status = false; m_gv_sk_status = false; m_gv_lp_cursor_x = 944; @@ -1355,8 +1413,6 @@ void hp9845ct_state::machine_reset() m_gv_last_xpt = 0; m_gv_last_ypt = 0; m_gv_lp_selftest = false; - m_gv_lp_xwindow = false; - m_gv_lp_ywindow = false; m_gv_lp_interlace = false; m_gv_lp_vblank = false; m_gv_lp_1sthit = false; @@ -1371,14 +1427,14 @@ void hp9845ct_state::machine_reset() update_graphic_bits(); } -uint32_t hp9845ct_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +uint32_t hp9845ct_base_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect); return 0; } -void hp9845ct_state::vblank_w(screen_device &screen, bool state) +WRITE_LINE_MEMBER(hp9845ct_base_state::vblank_w) { // VBlank signal is fed into HALT flag of PPU m_ppu->halt_w(state); @@ -1394,8 +1450,6 @@ void hp9845ct_state::vblank_w(screen_device &screen, bool state) // lightpen m_gv_lp_vblank = true; - m_gv_lp_xwindow = false; - m_gv_lp_ywindow = false; m_gv_lp_sw = m_lightpen_sw->read(); m_gv_lp_x = m_lightpen_x->read(); if (m_gv_lp_x > (VIDEO_TOT_HPIXELS - 1)) { @@ -1405,25 +1459,39 @@ void hp9845ct_state::vblank_w(screen_device &screen, bool state) if (m_gv_lp_y > (GVIDEO_VPIXELS - 1)) { m_gv_lp_y = GVIDEO_VPIXELS - 1; } - - // TODO: right place to call it? - compute_lp_data(); - // VB interrupt - if (m_gv_lp_vbint) { - m_gv_lp_status = true; - } - update_graphic_bits(); } else { m_gv_lp_vblank = false; + update_gcursor(); + } +} + +INPUT_CHANGED_MEMBER(hp9845ct_base_state::softkey_changed) +{ + if (!m_gv_sk_status) { + uint8_t softkey_data = m_io_softkeys->read(); + unsigned softkey; + for (softkey = 0; softkey < 8 && BIT(softkey_data , 7 - softkey); softkey++) { + } + LOG("SK %02x => %u\n" , softkey_data , softkey); + if (softkey < 8) { + // softkey pressed + m_gv_softkey = softkey; + m_gv_sk_status = true; + update_graphic_bits(); + } + for (softkey = 0; softkey < 8; softkey++) { + output().set_indexed_value("Softkey" , softkey , !BIT(softkey_data , 7 - softkey)); + } + } } -void hp9845ct_state::set_video_mar(uint16_t mar) +void hp9845ct_base_state::set_video_mar(uint16_t mar) { m_video_mar = (mar & 0x1fff) | VIDEO_BUFFER_BASE_LOW; } -void hp9845ct_state::video_fill_buff(bool buff_idx) +void hp9845ct_base_state::video_fill_buff(bool buff_idx) { unsigned char_idx = 0; unsigned iters = 0; @@ -1481,7 +1549,7 @@ void hp9845ct_state::video_fill_buff(bool buff_idx) } } -void hp9845ct_state::draw_line(unsigned x0 , unsigned y0 , unsigned x1 , unsigned y1) +void hp9845ct_base_state::draw_line(unsigned x0 , unsigned y0 , unsigned x1 , unsigned y1) { int dx, dy, sx, sy, x, y, err, e2; @@ -1489,7 +1557,7 @@ void hp9845ct_state::draw_line(unsigned x0 , unsigned y0 , unsigned x1 , unsigne x = x0; y = y0; dx = abs((int) (x1 - x)); - sx = x < x1 ? 1 : -1; // actually always 1 because of normalization + sx = x < x1 ? 1 : -1; // actually always 1 because of normalization dy = abs((int) (y1 - y)); sy = y < y1 ? 1 : -1; err = (dx > dy ? dx : -dy) / 2; @@ -1512,7 +1580,7 @@ void hp9845ct_state::draw_line(unsigned x0 , unsigned y0 , unsigned x1 , unsigne } } -void hp9845ct_state::update_line_pattern(void) +void hp9845ct_base_state::update_line_pattern() { // update line pattern m_gv_repeat_count++; @@ -1524,62 +1592,95 @@ void hp9845ct_state::update_line_pattern(void) } } -uint16_t hp9845ct_state::get_gv_mem_addr(unsigned x , unsigned y) +void hp9845ct_base_state::pattern_fill(uint16_t x0 , uint16_t y0 , uint16_t x1 , uint16_t y1 , unsigned fill_idx) { - return (uint16_t)((x + y * 35) & GVIDEO_ADDR_MASK); + uint16_t x,y,xmax,ymax; + uint16_t pixel_mask, fill_mask; + + x = std::min(x0 , x1); + xmax = std::max(x0 , x1); + y = std::min(y0 , y1); + ymax = std::max(y0 , y1); + + for (;y <= ymax; y++) { + fill_mask = (m_area_fill[ fill_idx ] << (y % 4) * 4) & 0xf000; + fill_mask |= (fill_mask >> 4) | (fill_mask >> 8) | (fill_mask >> 12); + for (;x <= xmax; x++) { + pixel_mask = (0x8000 >> (x % 16)); + plot(x , y , (pixel_mask & fill_mask) != 0); + } + } } -void hp9845ct_state::update_graphic_bits(void) +uint16_t hp9845ct_base_state::get_gv_mem_addr(unsigned x , unsigned y) { - bool gv_ready = m_gv_lp_int_en && m_gv_lp_status; + return (uint16_t)((x + y * 35) & GVIDEO_ADDR_MASK); +} - if (m_gv_gr_en && !gv_ready) { - gv_ready = m_gv_fsm_state == GV_STAT_WAIT_DS_0 || - m_gv_fsm_state == GV_STAT_WAIT_TRIG_0 || - m_gv_fsm_state == GV_STAT_WAIT_DS_1 || - m_gv_fsm_state == GV_STAT_WAIT_DS_2 || - m_gv_fsm_state == GV_STAT_WAIT_TRIG_1; +int hp9845ct_base_state::get_wrapped_scanline(unsigned scanline) +{ + // The 770's VTOTAL applies to 780, too. + // The 780 hw generates a line clock (GVclk in Duell's schematics) that's suppressed + // for lines in [485..524] range so that the total number of lines per frame counted + // by this clock matches the total count of lines in 770 (i.e. 485). + int wrapped_cursor_y = (int)scanline; + if (wrapped_cursor_y >= GVIDEO_VPIXELS && wrapped_cursor_y < VIDEO_770_VTOTAL) { + wrapped_cursor_y -= VIDEO_770_VTOTAL; } - flg_w(GVIDEO_PA , gv_ready); + return wrapped_cursor_y; +} - bool irq = m_gv_int_en && !m_gv_dma_en && gv_ready; +void hp9845ct_base_state::render_lp_cursor(unsigned video_scanline , unsigned pen_idx) +{ + int cursor_y_top = get_wrapped_scanline(m_gv_lp_cursor_y); -#if 0 - // DEBUG DEBUG DEBUG - static bool last_irq = false; - if (!last_irq && irq) { - logerror("GV IRQ 0->1\n"); + bool yw; + if (m_gv_lp_cursor_fs) { + yw = true; + } else { + yw = (int)video_scanline >= cursor_y_top && + (int)video_scanline <= (cursor_y_top + 48); + } + if (!yw) { + return; } - last_irq = irq; -#endif - irq_w(GVIDEO_PA , irq); + if (!m_gv_lp_cursor_fs && m_gv_lp_cursor_x >= (VIDEO_TOT_HPIXELS + 24)) { + return; + } - bool dmar = gv_ready && m_gv_dma_en; + bool yc = video_scanline == (cursor_y_top + 24); - m_ppu->dmar_w(dmar); + const pen_t &pen = m_palette->pen(pen_idx); + if (!yc) { + if (m_gv_lp_cursor_x < VIDEO_TOT_HPIXELS) { + m_bitmap.pix32(video_scanline , m_gv_lp_cursor_x) = pen; + } + } else if (m_gv_lp_cursor_fs) { + for (unsigned x = 0; x < VIDEO_TOT_HPIXELS; x++) { + m_bitmap.pix32(video_scanline , x) = pen; + } + } else { + for (unsigned x = std::max(0 , (int)m_gv_lp_cursor_x - 24); x <= (m_gv_lp_cursor_x + 25) && x < VIDEO_TOT_HPIXELS; x++) { + m_bitmap.pix32(video_scanline , x) = pen; + } + } } -void hp9845ct_state::lp_r4_w(uint16_t data) +void hp9845ct_base_state::lp_r4_w(uint16_t data) { if (m_gv_lp_en) { switch (m_gv_lp_reg_cnt) { case 2: // LP Y cursor + threshold + interlace + vertical blank interrupt m_gv_lp_cursor_y = ((~data >> 6) & 0x1ff); -#if 0 - if (m_gv_lp_cursor_y < 454) - m_gv_lp_cursor_y += 24; - else - m_gv_lp_cursor_y -= 461; -#endif m_gv_lp_fullbright = BIT(data, 1); m_gv_lp_threshold = BIT(data, 3); m_gv_lp_interlace = !BIT(data, 4); - m_gv_lp_vbint = !BIT(data, 5); - LOG(("LP Y cursor y = %d, threshold = %d, interlace = %d, vbint = %d\n", - m_gv_lp_cursor_y, m_gv_lp_threshold, m_gv_lp_interlace, m_gv_lp_vbint)); + m_gv_lp_vbint = BIT(data, 5); + LOG("LP Y cursor y = %d, threshold = %d, interlace = %d, vbint = %d\n", + m_gv_lp_cursor_y, m_gv_lp_threshold, m_gv_lp_interlace, m_gv_lp_vbint); m_gv_lp_reg_cnt--; break; @@ -1587,7 +1688,7 @@ void hp9845ct_state::lp_r4_w(uint16_t data) // LP X cursor + cursor type m_gv_lp_cursor_x = ((data >> 6) & 0x3ff) + 1; m_gv_lp_cursor_fs = !BIT(data, 0); - LOG(("LP X cursor x = %d, fs = %d\n", m_gv_lp_cursor_x, m_gv_lp_cursor_fs)); + LOG("LP X cursor x = %d, fs = %d\n", m_gv_lp_cursor_x, m_gv_lp_cursor_fs); m_gv_lp_reg_cnt--; break; @@ -1597,7 +1698,7 @@ void hp9845ct_state::lp_r4_w(uint16_t data) } } -uint16_t hp9845ct_state::lp_r4_r(void) +uint16_t hp9845ct_base_state::lp_r4_r() { uint16_t res = 0; @@ -1627,7 +1728,6 @@ uint16_t hp9845ct_state::lp_r4_r(void) if (m_gv_lp_sw) { BIT_SET(res, 14); } - // TODO: correct? if (m_gv_lp_1sthit) { BIT_SET(res, 15); } @@ -1641,16 +1741,36 @@ uint16_t hp9845ct_state::lp_r4_r(void) return res; } -void hp9845ct_state::lp_r5_w(uint16_t data) +void hp9845ct_base_state::lp_r5_w(uint16_t data) { m_gv_lp_reg_cnt = data & 7; - m_gv_lp_en = (data & 0x700) == 0x400; // enables writes on R4 to set LP data (actually FB bit), also enables LP command processing and LP IRQs + m_gv_lp_en = (data & 0x700) == 0x400; // enables writes on R4 to set LP data (actually FB bit), also enables LP command processing and LP IRQs m_gv_lp_int_en = (data & 0x500) == 0x400; m_gv_lp_selftest = m_gv_lp_en && m_gv_lp_reg_cnt == 7; update_graphic_bits(); } -void hp9845ct_state::compute_lp_data(void) +bool hp9845ct_base_state::lp_segment_intersect(unsigned yline) const +{ + int xp = m_gv_lp_x; + int yp = m_gv_lp_y; + int xc = (int)m_gv_lp_cursor_x + 1 - LP_XOFFSET; + + unsigned h = (unsigned)abs((int)yline - yp); + + if (h > LP_FOV) { + return false; + } + + int dt = (int)sqrt(LP_FOV * LP_FOV - h * h); + int ex = xp - dt; + int fx = xp + dt; + + // Consider [xc..xc+24] segment (i.e. the right-hand side of cursor interlace window) + return fx >= xc && ex <= (xc + 24); +} + +void hp9845ct_base_state::compute_lp_data() { // get LP hit data, returns three words for cmd=6 and one word for cmd=4 // actually simulating the 9845 lightpen is a bit more complex, since YHI, XLEFT and YLO @@ -1661,88 +1781,152 @@ void hp9845ct_state::compute_lp_data(void) // bit 13 = xwindow (YHI + XLEFT + YLO) = X is in [xcursor-24, xcursor+24] and Y in [ycursor-8,ycursor+8] // bit 14 = sw (YHI) bzw. ywindow (XLEFT + YLO) // bit 15 = 1st hit (YHI) = valid hit - // TODO: check - m_gv_lp_status = true; + + bool xwindow[ 3 ] = { false , false , false }; + bool ywindow[ 3 ] = { false , false , false }; + // hit coordinates + uint16_t yhi = 0; + uint16_t xleft = 0; + uint16_t yleft = 0; + uint16_t ylo = 0; + uint16_t xp = m_gv_lp_x; // light gun pointer + uint16_t yp = m_gv_lp_y; + int yc = get_wrapped_scanline(m_gv_lp_cursor_y) + 24; + if (m_gv_lp_selftest) { - int offset = 57 - VIDEO_770_ALPHA_L_LIM; - m_gv_lp_xwindow = true; - m_gv_lp_ywindow = true; - m_gv_lp_data[0] = (~(m_gv_lp_cursor_y + 16)) & 0x1ff; // YHI - m_gv_lp_data[1] = (~(m_gv_lp_cursor_x + offset)) & 0x3ff; // XLEFT - m_gv_lp_data[2] = (~(m_gv_lp_cursor_y + 32)) & 0x1ff; // YLO + constexpr int offset = 57 - VIDEO_770_ALPHA_L_LIM; + xwindow[ 0 ] = xwindow[ 1 ] = xwindow[ 2 ] = true; + ywindow[ 0 ] = ywindow[ 1 ] = ywindow[ 2 ] = true; + yhi = m_gv_lp_cursor_y + 16; // YHI + xleft = m_gv_lp_cursor_x + offset; // XLEFT + yleft = yhi; + ylo = m_gv_lp_cursor_y + 32; // YLO } else { - uint8_t fov = 9; // field of view = [cursor - fov, cursor + fov] - uint16_t xp = m_gv_lp_x; // light gun pointer - uint16_t yp = m_gv_lp_y; - uint16_t xc = m_gv_lp_cursor_x + 1; // 9845 light pen crosshair cursor - uint16_t yc = m_gv_lp_cursor_y + 24; - uint16_t yhi, xleft, ylo; // hit coordinates - uint16_t xoffset; // delay for hit detection on horizontal line - // try to calculate YHI, XLEFT, YLO hit coordinates with respect to LP cursor - // should give a better match with the prediction algorithm in the firmware - uint16_t dx = 0, dy = fov; - xoffset = 14; // longer delay due to bright line - // if vertical line of the cursor is within field of view, get y delta to intersection - if (abs(xc - xp) <= fov) - dy = (uint16_t)sqrt((fov * fov) - ((xc - xp) * (xc - xp))); - // if horizontal line of the cursor is within field of view, get x delta to intersection - if (abs(yc - yp) <= fov) - dx = (uint16_t)sqrt((fov * fov) - ((yc - yp) * (yc - yp))); - // check whether intersection with vertical line of the cursor is within window - if ((yp + dy >= yc - 24) && (yp - dy <= yc - 24)) { - // return the first hit in the window - yhi = (yp - dy > yc - 24) || !m_gv_lp_interlace ? yp - dy : yc - 24; - // return the last hit in the window - ylo = (yp + dy < yc + 24) || !m_gv_lp_interlace ? yp + dy : yc + 24; + // Hit in a cursor-only part. + bool yhi_hit = false; + uint16_t y_top = std::max(0 , (int)yp - (int)LP_FOV); + + // XLEFT: x coordinate of 1st hit in the frame or hit on cursor line + unsigned dy = abs((int)yp - yc); + if (dy <= LP_FOV) { + // Hit on horizontal cursor line + xleft = (uint16_t)std::max(0 , (int)xp - (int)sqrt(LP_FOV * LP_FOV - dy * dy)); + yleft = yc; } else { - // otherwise return (simulated) first hit in view of field - yhi = yp - fov; - ylo = yp + fov; - } - // check whether intersection with horizontal line of the cursor is within window - if ((xp + dx >= xc - 24) && (xp - dx <= xc + 24)) - // return the first hit on the horizontal bar of the cursor - xleft = (xp - dx > xc - 24) ? xp - dx - fov + xoffset : xp + dx - fov + xoffset; - else - // otherwise return (simulated) first hit in view of field - xleft = xp - fov + xoffset; - m_gv_lp_data[0] = ~yhi & 0x1ff; // YHI - m_gv_lp_data[1] = ~xleft & 0x3ff; // XLEFT - m_gv_lp_data[2] = ~ylo & 0x1ff; // YLO + // 1st hit in the frame + dy = abs((int)yp - (int)y_top); + xleft = (uint16_t)std::max(0 , (int)xp - (int)sqrt(LP_FOV * LP_FOV - dy * dy)); + yleft = y_top; + } + xleft += LP_XOFFSET; if (m_gv_lp_interlace) { - m_gv_lp_xwindow = ((xp > (xc - 24)) && (xp < (xc + 24))); - m_gv_lp_ywindow = ((yp > (yc - 24)) && (yp < (yc + 24))); - } else { - m_gv_lp_xwindow = false; - m_gv_lp_ywindow = false; + // **** Interlaced mode **** + unsigned ywd_top = (unsigned)std::max(yc - 24 , 0); + unsigned ywd_bot = std::min((unsigned)(GVIDEO_VPIXELS - 1) , (unsigned)(yc + 24)); + unsigned even_odd = (unsigned)m_screen->frame_number() & 1; + + // Scan the cursor window [yc-24..yc+24] + // Only consider each other line. LSB of frame number selects either even-numbered + // (0) or odd-numbered lines (1). + for (unsigned line = ywd_top; line <= ywd_bot; line++) { + if ((line & 1) == even_odd) { + // YHI: y coordinate of 1st hit in the frame or 1st hit in cursor-only part + bool curs_hit = lp_segment_intersect(line); + if (!yhi_hit && curs_hit) { + yhi = line; + yhi_hit = true; + } + // YLO: y coordinate of last hit in cursor-only part + if (curs_hit) { + ylo = line; + } + } + } + } + + if (!m_gv_lp_interlace || !yhi_hit) { + // **** Non-interlaced mode **** + // YHI: y coordinate of 1st hit in the frame + yhi = y_top; + + // YLO: y coordinate of last hit in the frame + ylo = std::min((unsigned)(GVIDEO_VPIXELS - 1) , yp + LP_FOV); } + + xwindow[ 0 ] = yhi_hit; + xwindow[ 1 ] = yhi_hit && yleft >= yhi; + xwindow[ 2 ] = yhi_hit; + + ywindow[ 1 ] = yleft == yc; + ywindow[ 2 ] = yleft == yc && ylo >= yleft; + } + m_gv_next_lp_data[ 0 ] = ~yhi & 0x1ff; // YHI + m_gv_next_lp_data[ 1 ] = ~xleft & 0x3ff; // XLEFT + m_gv_next_lp_data[ 2 ] = ~ylo & 0x1ff; // YLO + + if (!xwindow[ 0 ]) { + BIT_SET(m_gv_next_lp_data[ 0 ], 13); + } + if (!xwindow[ 1 ]) { + BIT_SET(m_gv_next_lp_data[ 1 ], 13); + } + if (!xwindow[ 2 ]) { + BIT_SET(m_gv_next_lp_data[ 2 ], 13); + } + if (!ywindow[ 1 ]) { + BIT_SET(m_gv_next_lp_data[ 1 ], 14); + } + if (!ywindow[ 2 ]) { + BIT_SET(m_gv_next_lp_data[ 2 ], 14); + } + + m_gv_next_lp_scanline[ 0 ] = yhi; + m_gv_next_lp_scanline[ 1 ] = yleft; + m_gv_next_lp_scanline[ 2 ] = ylo; + + m_gv_lp_hit_lt192 = yhi < 192; + LOG("LP data %d %d %d %d (%u;%d) (%u;%u) %u %u %u %04x %04x %04x\n" , m_gv_lp_selftest , m_gv_lp_interlace , m_gv_lp_sw , m_gv_lp_hit_lt192 , m_gv_lp_cursor_x , yc , m_gv_lp_x , m_gv_lp_y , yhi , xleft , ylo , m_gv_next_lp_data[ 0 ] , m_gv_next_lp_data[ 1 ] , m_gv_next_lp_data[ 2 ]); +} + +void hp9845ct_base_state::lp_scanline_update(unsigned video_scanline) +{ + if (video_scanline == 0) { + compute_lp_data(); } - // TODO: debug - //m_gv_lp_data[0] |= 0x8000; - if (!m_gv_lp_xwindow) { - BIT_SET(m_gv_lp_data[ 0 ], 13); - BIT_SET(m_gv_lp_data[ 1 ], 13); - BIT_SET(m_gv_lp_data[ 2 ], 13); + + if (video_scanline == 256 && !m_gv_lp_status && m_gv_lp_hit_lt192) { + LOG("Hit < 192 @%d\n" , m_screen->vpos()); + m_gv_lp_status = true; + m_gv_lp_int_256 = true; + update_graphic_bits(); } - if (!m_gv_lp_ywindow) { - BIT_SET(m_gv_lp_data[ 1 ], 14); - BIT_SET(m_gv_lp_data[ 2 ], 14); + + if (video_scanline == 456) { + // VB interrupt + if (m_gv_lp_vbint || !m_gv_lp_int_256) { + m_gv_lp_status = true; + } + m_gv_lp_int_256 = false; + update_graphic_bits(); } - if (!m_gv_lp_status) { - BIT_SET(m_gv_lp_data[ 0 ], 11); - BIT_SET(m_gv_lp_data[ 1 ], 11); - BIT_SET(m_gv_lp_data[ 2 ], 11); + + for (unsigned i = 0; i < 3; i++) { + if (m_gv_next_lp_scanline[ i ] == video_scanline) { + m_gv_lp_data[ i ] = m_gv_next_lp_data[ i ]; + if (!m_gv_lp_status) { + BIT_SET(m_gv_lp_data[ i ], 11); + } + m_gv_lp_1sthit = true; + } } - m_gv_lp_1sthit = true; - LOG(("LP data %d %04x %04x %04x\n" , m_gv_lp_selftest , m_gv_lp_data[ 0 ] , m_gv_lp_data[ 1 ] , m_gv_lp_data[ 2 ])); } -const uint16_t hp9845ct_state::m_line_type[] = { +const uint16_t hp9845ct_base_state::m_line_type[] = { 0xffff, 0xaaaa, 0xff00, 0xfff0, 0xfffa, 0xfff6, 0xffb6, 0x0000 }; -const uint16_t hp9845ct_state::m_area_fill[] = { +const uint16_t hp9845ct_base_state::m_area_fill[] = { 0xffff, 0xefff, 0xefbf, 0xefaf, 0xafaf, 0xadaf, 0xada7, 0xada5, 0xa5a5, 0xa4a5, 0xa4a1, 0xa4a0, 0xa0a0, 0x80a0, 0x8020, 0x8000 }; @@ -1750,7 +1934,7 @@ const uint16_t hp9845ct_state::m_area_fill[] = { // *************** // hp9845c_state // *************** -class hp9845c_state : public hp9845ct_state +class hp9845c_state : public hp9845ct_base_state { public: hp9845c_state(const machine_config &mconfig, device_type type, const char *tag); @@ -1768,33 +1952,41 @@ protected: void video_render_buff(unsigned video_scanline , unsigned line_in_row, bool buff_idx); void graphic_video_render(unsigned video_scanline); virtual void plot(uint16_t x, uint16_t y, bool draw_erase) override; - void pattern_fill(uint16_t x0 , uint16_t y0 , uint16_t x1 , uint16_t y1); - void check_io_counter_restore(void); - void advance_io_counter(void); + void check_io_counter_restore(); + void advance_io_counter(); virtual void advance_gv_fsm(bool ds , bool trigger) override; + virtual void update_graphic_bits() override; + + virtual void update_gcursor(void) override; // Palette indexes static constexpr unsigned pen_graphic(unsigned rgb) { return rgb; } static constexpr unsigned pen_alpha(unsigned rgb) { return 8 + rgb; } static constexpr unsigned pen_cursor(unsigned rgb) { return 16 + rgb; } + // Optional character generator + required_region_ptr m_optional_chargen; + std::vector m_graphic_mem[ 3 ]; uint16_t m_gv_music_memory; uint8_t m_gv_cursor_color; uint8_t m_gv_plane; bool m_gv_plane_wrap; + bool m_gv_lp_int_latched; + bool m_gv_sk_int_latched; }; hp9845c_state::hp9845c_state(const machine_config &mconfig, device_type type, const char *tag) - : hp9845ct_state(mconfig , type , tag) + : hp9845ct_base_state(mconfig , type , tag), + m_optional_chargen(*this , "optional_chargen") { } void hp9845c_state::machine_start() { // Common part first - hp9845ct_state::machine_start(); + hp9845ct_base_state::machine_start(); m_graphic_mem[ 0 ].resize(GVIDEO_MEM_SIZE); m_graphic_mem[ 1 ].resize(GVIDEO_MEM_SIZE); @@ -1802,40 +1994,40 @@ void hp9845c_state::machine_start() // initialize palette // graphics colors - m_palette->set_pen_color(0, 0x00, 0x00, 0x00); // black - m_palette->set_pen_color(1, I_GR, 0x00, 0x00); // red - m_palette->set_pen_color(2, 0x00, I_GR, 0x00); // green - m_palette->set_pen_color(3, I_GR, I_GR, 0x00); // yellow - m_palette->set_pen_color(4, 0x00, 0x00, I_GR); // blue - m_palette->set_pen_color(5, I_GR, 0x00, I_GR); // magenta - m_palette->set_pen_color(6, 0x00, I_GR, I_GR); // cyan - m_palette->set_pen_color(7, I_GR, I_GR, I_GR); // white + m_palette->set_pen_color(0, 0x00, 0x00, 0x00); // black + m_palette->set_pen_color(1, I_GR, 0x00, 0x00); // red + m_palette->set_pen_color(2, 0x00, I_GR, 0x00); // green + m_palette->set_pen_color(3, I_GR, I_GR, 0x00); // yellow + m_palette->set_pen_color(4, 0x00, 0x00, I_GR); // blue + m_palette->set_pen_color(5, I_GR, 0x00, I_GR); // magenta + m_palette->set_pen_color(6, 0x00, I_GR, I_GR); // cyan + m_palette->set_pen_color(7, I_GR, I_GR, I_GR); // white // alpha colors - m_palette->set_pen_color(8, 0x00, 0x00, 0x00); // black - m_palette->set_pen_color(9, I_AL, 0x00, 0x00); // red - m_palette->set_pen_color(10, 0x00, I_AL, 0x00); // green - m_palette->set_pen_color(11, I_AL, I_AL, 0x00); // yellow - m_palette->set_pen_color(12, 0x00, 0x00, I_AL); // blue - m_palette->set_pen_color(13, I_AL, 0x00, I_AL); // magenta - m_palette->set_pen_color(14, 0x00, I_AL, I_AL); // cyan - m_palette->set_pen_color(15, I_AL, I_AL, I_AL); // white + m_palette->set_pen_color(8, 0x00, 0x00, 0x00); // black + m_palette->set_pen_color(9, I_AL, 0x00, 0x00); // red + m_palette->set_pen_color(10, 0x00, I_AL, 0x00); // green + m_palette->set_pen_color(11, I_AL, I_AL, 0x00); // yellow + m_palette->set_pen_color(12, 0x00, 0x00, I_AL); // blue + m_palette->set_pen_color(13, I_AL, 0x00, I_AL); // magenta + m_palette->set_pen_color(14, 0x00, I_AL, I_AL); // cyan + m_palette->set_pen_color(15, I_AL, I_AL, I_AL); // white // cursor colors - m_palette->set_pen_color(16, 0x80, 0x80, 0x80); // grey - m_palette->set_pen_color(17, I_CU, 0x00, 0x00); // red - m_palette->set_pen_color(18, 0x00, I_CU, 0x00); // green - m_palette->set_pen_color(19, I_CU, I_CU, 0x00); // yellow - m_palette->set_pen_color(20, 0x00, 0x00, I_CU); // blue - m_palette->set_pen_color(21, I_CU, 0x00, I_CU); // magenta - m_palette->set_pen_color(22, 0x00, I_CU, I_CU); // cyan - m_palette->set_pen_color(23, I_CU, I_CU, I_CU); // white + m_palette->set_pen_color(16, 0x80, 0x80, 0x80); // grey + m_palette->set_pen_color(17, I_CU, 0x00, 0x00); // red + m_palette->set_pen_color(18, 0x00, I_CU, 0x00); // green + m_palette->set_pen_color(19, I_CU, I_CU, 0x00); // yellow + m_palette->set_pen_color(20, 0x00, 0x00, I_CU); // blue + m_palette->set_pen_color(21, I_CU, 0x00, I_CU); // magenta + m_palette->set_pen_color(22, 0x00, I_CU, I_CU); // cyan + m_palette->set_pen_color(23, I_CU, I_CU, I_CU); // white } void hp9845c_state::machine_reset() { // Common part first - hp9845ct_state::machine_reset(); + hp9845ct_base_state::machine_reset(); set_video_mar(0); @@ -1845,6 +2037,8 @@ void hp9845c_state::machine_reset() m_gv_cursor_color = 7; m_gv_plane = 0; m_gv_plane_wrap = false; + m_gv_lp_int_latched = false; + m_gv_sk_int_latched = false; } READ16_MEMBER(hp9845c_state::graphic_r) @@ -1852,14 +2046,23 @@ READ16_MEMBER(hp9845c_state::graphic_r) uint16_t res = 0; switch (offset) { + case 2: + // R6: data register with DMA TC + m_gv_dma_en = false; + // Intentional fall-through + case 0: // R4: data register if (m_gv_lp_en) { res = lp_r4_r(); + } else if (m_gv_sk_int_latched) { + res = m_gv_softkey; + m_gv_sk_status = false; } else { res = m_gv_data_r; } advance_gv_fsm(true , false); + update_graphic_bits(); break; case 1: @@ -1870,27 +2073,14 @@ READ16_MEMBER(hp9845c_state::graphic_r) if (m_gv_dma_en) { BIT_SET(res, 6); } - if (m_gv_lp_status && m_gv_lp_int_en) { - BIT_SET(res, 0); // Lightpen service request (also automatically set after system reset) - } - if (m_gv_sk_status) { - BIT_SET(res, 1); // Softkey service request - m_gv_sk_status = false; + if (m_gv_lp_int_latched) { + BIT_SET(res, 0); // Lightpen service request } - BIT_SET(res, 11); // ID - - update_graphic_bits(); - break; - - case 2: - // R6: data register with DMA TC - m_gv_dma_en = false; - if (m_gv_lp_en) { - res = lp_r4_r(); - } else { - res = m_gv_data_r; + if (m_gv_sk_int_latched) { + BIT_SET(res, 1); // Softkey service request } - advance_gv_fsm(true , false); + // TODO: check! Should it be 10 instead? + BIT_SET(res, 11); // ID break; case 3: @@ -1898,14 +2088,14 @@ READ16_MEMBER(hp9845c_state::graphic_r) break; } - LOG(("rd gv R%u = %04x\n", 4 + offset , res)); + LOG("rd gv R%u = %04x\n", 4 + offset , res); return res; } WRITE16_MEMBER(hp9845c_state::graphic_w) { - LOG(("wr gv R%u = %04x\n", 4 + offset , data)); + LOG("wr gv R%u = %04x\n", 4 + offset , data); switch (offset) { case 0: @@ -1920,15 +2110,16 @@ WRITE16_MEMBER(hp9845c_state::graphic_w) m_gv_cmd = (uint8_t)(data & 0xf); m_gv_dma_en = BIT(data , 6) != 0; m_gv_int_en = BIT(data , 7) != 0; - m_gv_gr_en = BIT(data , 8); // enables graphics controller & vector generator command processing and IRQs - m_gv_sk_en = BIT(data , 9); // enables reads on R4 to return SK keycode, also enables SK IRQs - m_gv_opt_en = BIT(data , 11); // not really used - m_gv_dsa_en = BIT(data , 12); // for factory use only (unknown) + m_gv_gr_en = BIT(data , 8); // enables graphics controller & vector generator command processing and IRQs + m_gv_sk_en = BIT(data , 9); // enables reads on R4 to return SK keycode, also enables SK IRQs + m_gv_opt_en = BIT(data , 11); // not really used + m_gv_dsa_en = BIT(data , 12); // for factory use only (unknown) if (BIT(data, 5)) { - m_gv_fsm_state = GV_STAT_RESET; // command/reset state machine + m_gv_fsm_state = GV_STAT_RESET; // command/reset state machine } advance_gv_fsm(false , false); lp_r5_w(data); + update_graphic_bits(); break; case 2: @@ -1950,12 +2141,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(hp9845c_state::scanline_timer) { unsigned video_scanline = param; - if (m_graphic_sel) { - if (video_scanline >= VIDEO_770_VBEND && video_scanline < VIDEO_770_VBSTART) { + if (video_scanline >= VIDEO_770_VBEND && video_scanline < VIDEO_770_VBSTART) { + if (m_graphic_sel) { graphic_video_render(video_scanline - VIDEO_770_VBEND); } - } - if (video_scanline >= VIDEO_770_VBEND && video_scanline < VIDEO_770_VBSTART) { unsigned row = (video_scanline - VIDEO_770_VBEND) / VIDEO_CHAR_HEIGHT; unsigned line_in_row = (video_scanline - VIDEO_770_VBEND) - row * VIDEO_CHAR_HEIGHT; @@ -1965,7 +2154,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(hp9845c_state::scanline_timer) video_fill_buff(!m_video_buff_idx); } video_render_buff(video_scanline , line_in_row , m_video_buff_idx); + // Lightpen cursor + if (m_graphic_sel) { + render_lp_cursor(video_scanline - VIDEO_770_VBEND , pen_cursor(7)); + } } + lp_scanline_update(video_scanline - VIDEO_770_VBEND); } void hp9845c_state::set_graphic_mode(bool graphic , bool alpha) @@ -1999,21 +2193,32 @@ void hp9845c_state::video_render_buff(unsigned video_scanline , unsigned line_in bool cursor_line = line_in_row == 12; bool ul_line = line_in_row == 14; unsigned video_frame = (unsigned)m_screen->frame_number(); - bool cursor_blink = BIT(video_frame , 3); - bool char_blink = BIT(video_frame , 4); + bool cursor_blink = BIT(video_frame , 4); + bool char_blink = !BIT(video_frame , 4); for (unsigned i = 0; i < 80; i++) { uint8_t charcode = m_video_buff[ buff_idx ].chars[ i ] & 0x7f; uint8_t attrs = m_video_buff[ buff_idx ].attrs[ i ]; uint16_t chrgen_addr = ((uint16_t)(charcode ^ 0x7f) << 4) | line_in_row; uint16_t pixels; + uint8_t color = (attrs >> 4) & 7; - if ((ul_line && BIT(attrs , 3)) || - (cursor_line && cursor_blink && BIT(attrs , 0))) { + if (ul_line && BIT(attrs , 3)) { + // Color of underline: same as character + pixels = ~0; + } else if (cursor_line && cursor_blink && BIT(attrs , 0)) { + // Color of cursor: white + color = 7; pixels = ~0; } else if (char_blink && BIT(attrs , 2)) { pixels = 0; } else if (BIT(m_video_buff[ buff_idx ].chars[ i ] , 7)) { + // 98770A has hw support to fill the 1st and the 9th column of character matrix + // with pixels in 2nd and 8th columns, respectively. This feature is used in + // 98780A to make horizontal lines of line-drawing characters appear continuous + // (see hp9845t_state::video_render_buff). + // Apparently, though, HP did not use this feature at all in real + // machines (i.e. horizontal lines are broken by gaps) pixels = (uint16_t)(m_optional_chargen[ chrgen_addr ] & 0x7f) << 1; } else { pixels = (uint16_t)(m_chargen[ chrgen_addr ] & 0x7f) << 1; @@ -2030,11 +2235,11 @@ void hp9845c_state::video_render_buff(unsigned video_scanline , unsigned line_in if (m_graphic_sel && x >= VIDEO_770_ALPHA_L_LIM && x < VIDEO_770_ALPHA_R_LIM) { // alpha overlays graphics (non-dominating) if (pixel) { - m_bitmap.pix32(video_scanline , x) = pen[ pen_alpha((attrs >> 4) & 7) ]; + m_bitmap.pix32(video_scanline , x) = pen[ pen_alpha(color) ]; } } else { // Graphics disabled or alpha-only zone - m_bitmap.pix32(video_scanline , x) = pen[ pixel ? pen_alpha((attrs >> 4) & 7) : pen_alpha(0) ]; + m_bitmap.pix32(video_scanline , x) = pen[ pixel ? pen_alpha(color) : pen_alpha(0) ]; } } } @@ -2045,43 +2250,32 @@ void hp9845c_state::graphic_video_render(unsigned video_scanline) { // video_scanline is 0-based, i.e. the topmost visible line of graphic screen is 0 const pen_t *pen = m_palette->pens(); - bool yc, yw, blink, lp_cursor; + bool yc, yw; uint16_t word0, word1, word2; uint8_t pen0, pen1, pen2; - yc = (video_scanline + 42) == m_gv_cursor_y; - // apply music memory pen0 = (m_gv_music_memory & 0x001) | ((m_gv_music_memory & 0x008) >> 2) | ((m_gv_music_memory & 0x040) >> 4); pen1 = ((m_gv_music_memory & 0x002) >> 1) | ((m_gv_music_memory & 0x010) >> 3) | ((m_gv_music_memory & 0x080) >> 5); pen2 = ((m_gv_music_memory & 0x004) >> 2) | ((m_gv_music_memory & 0x020) >> 4) | ((m_gv_music_memory & 0x100) >> 6); - // 49 pixel lightpen cross hair cursor - lp_cursor = (m_gv_lp_cursor_x < VIDEO_TOT_HPIXELS) && (m_gv_lp_cursor_y < GVIDEO_VPIXELS); - if (lp_cursor) { - yc = video_scanline == (m_gv_lp_cursor_y + 24); - if (m_gv_lp_cursor_fs) - yw = true; - else - yw = video_scanline >= m_gv_lp_cursor_y && - video_scanline <= (m_gv_lp_cursor_y + 49); - blink = true; - } else if (m_gv_cursor_fs) { - yw = true; - // Steady cursor - blink = true; + if (m_gv_cursor_fs) { + // Full-screen cursor + yw = false; + yc = video_scanline == m_gv_cursor_y; + } else if (m_gv_cursor_gc) { + // 15 x 15 crosshair + int cursor_y_top = get_wrapped_scanline(m_gv_cursor_y); + int int_scanline = (int)video_scanline; + yw = (int_scanline >= (cursor_y_top + 1) && int_scanline <= (cursor_y_top + 6)) || + (int_scanline >= (cursor_y_top + 10) && int_scanline <= (cursor_y_top + 15)); + yc = int_scanline == cursor_y_top + 8; } else { - // 15 pixel - yw = ((video_scanline + 50) > m_gv_cursor_y && - (video_scanline + 50) < (m_gv_cursor_y + 7)) || - ((video_scanline + 50) > (m_gv_cursor_y + 9) && - (video_scanline + 50) < (m_gv_cursor_y + 16)); - if (m_gv_cursor_gc) { - blink = true; - } else { - // Blinking cursor (frame freq. / 16) - blink = BIT(m_screen->frame_number() , 3) != 0; - } + // 9-pixel blinking line + int cursor_y_top = get_wrapped_scanline(m_gv_cursor_y); + int int_scanline = (int)video_scanline; + yw = false; + yc = int_scanline == cursor_y_top + 8; } unsigned mem_idx = get_gv_mem_addr(0 , video_scanline); @@ -2092,21 +2286,26 @@ void hp9845c_state::graphic_video_render(unsigned video_scanline) mem_idx++; unsigned x = i; for (uint16_t mask = 0x8000; mask != 0; mask >>= 1) { - bool xc = false; - bool xw = false; + bool cursor = false; unsigned pixel; - if (lp_cursor) { - // lightpen cursor - xc = (x + VIDEO_770_ALPHA_L_LIM) == m_gv_lp_cursor_x; - xw = m_gv_lp_cursor_fs || ((x + 24 + VIDEO_770_ALPHA_L_LIM) >= m_gv_lp_cursor_x && (x + VIDEO_770_ALPHA_L_LIM - 25) <= m_gv_lp_cursor_x); + if (m_gv_cursor_fs) { + // Full-screen cursor + cursor = yc || (x + 111) == m_gv_cursor_x; } else if (m_gv_cursor_gc) { - xc = (x + 61) == m_gv_cursor_x; - xw = m_gv_cursor_fs || ((x + 69) > m_gv_cursor_x && (x + 53) < m_gv_cursor_x && ((x + 62) < m_gv_cursor_x || (x + 60) > m_gv_cursor_x)); + bool xc = (x + 103) == m_gv_cursor_x; + bool xw = ((x + 96) <= m_gv_cursor_x && (x + 101) >= m_gv_cursor_x) || + ((x + 105) <= m_gv_cursor_x && (x + 110) >= m_gv_cursor_x); + + // 15 x 15 crosshair + cursor = (yc && xw) || (yw && xc); + } else if (BIT(m_screen->frame_number() , 3)) { + // 9-pixel blinking line + cursor = yc && (x + 107) >= m_gv_cursor_x && (x + 99) <= m_gv_cursor_x; } - if (blink && ((xw && yc) || (yw && xc && (m_gv_cursor_gc || lp_cursor)))) { - // Cursor (LP cursor is white) - pixel = lp_cursor ? pen_cursor(7) : pen_cursor(m_gv_cursor_color); + if (cursor) { + // Cursor + pixel = pen_cursor(m_gv_cursor_color); } else { // Normal pixel pixel = pen_graphic(((word0 & mask) ? pen0 : 0) | ((word1 & mask) ? pen1 : 0) | ((word2 & mask) ? pen2 : 0)); @@ -2163,27 +2362,7 @@ void hp9845c_state::plot(uint16_t x, uint16_t y, bool draw_erase) } } -void hp9845c_state::pattern_fill(uint16_t x0 , uint16_t y0 , uint16_t x1 , uint16_t y1) -{ - uint16_t x,y,xmax,ymax; - uint16_t pixel_mask, fill_mask; - - x = std::min(x0 , x1); - xmax = std::max(x0 , x1); - y = std::min(y0 , y1); - ymax = std::max(y0 , y1); - - for (;y <= ymax; y++) { - fill_mask = (m_area_fill[ m_gv_line_type_area_fill & 0xf ] << (y % 4) * 4) & 0xf000; - fill_mask |= (fill_mask >> 4) | (fill_mask >> 8) | (fill_mask >> 12); - for (;x <= xmax; x++) { - pixel_mask = (0x8000 >> (x % 16)); - plot(x , y , (pixel_mask & fill_mask) != 0); - } - } -} - -void hp9845c_state::check_io_counter_restore(void) +void hp9845c_state::check_io_counter_restore() { if (m_gv_last_cmd != m_gv_cmd) { // restore memory counter @@ -2198,7 +2377,7 @@ void hp9845c_state::check_io_counter_restore(void) } } -void hp9845c_state::advance_io_counter(void) +void hp9845c_state::advance_io_counter() { m_gv_plane++; if (m_gv_plane > 2) { @@ -2232,19 +2411,19 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger) if (m_gv_cmd == 0x1) { // read words command check_io_counter_restore(); - LOG(("read words, last = %x\n", m_gv_last_cmd)); - m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> read stream + LOG("read words, last = %x\n", m_gv_last_cmd); + m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> read stream m_gv_last_cmd = m_gv_cmd; } else if (ds) { if ((m_gv_cmd == 0x0) || (m_gv_cmd == 0x2)) { // write words & clear/set words commands check_io_counter_restore(); - if (m_gv_cmd == 0x2) LOG(("clear/set words, last = %x\n", m_gv_last_cmd)); - else LOG(("write words, last = %x\n", m_gv_last_cmd)); - m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> write stream + if (m_gv_cmd == 0x2) LOG("clear/set words, last = %x\n", m_gv_last_cmd); + else LOG("write words, last = %x\n", m_gv_last_cmd); + m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> write stream } else { // any other command - m_gv_fsm_state = GV_STAT_WAIT_TRIG_0; // -> wait for trigger + m_gv_fsm_state = GV_STAT_WAIT_TRIG_0; // -> wait for trigger } m_gv_last_cmd = m_gv_cmd; } else { @@ -2256,62 +2435,54 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger) // process data on R4 or R6 if (act_trig) { switch (m_gv_cmd) { - case 0x8: // load X I/O address - m_gv_word_x_position = ~m_gv_data_w & 0x3f; // 0..34 - LOG(("load X I/O adress = %04x\n", m_gv_word_x_position)); + case 0x8: // load X I/O address + m_gv_word_x_position = ~m_gv_data_w & 0x3f; // 0..34 + LOG("load X I/O adress = %04x\n", m_gv_word_x_position); m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position); m_gv_plane = 0; m_gv_plane_wrap = false; break; - case 0x9: // load Y I/O address - m_gv_word_y_position = ~m_gv_data_w & 0x1ff; // 0..454 - LOG(("load Y I/O adress = %04x\n", m_gv_word_y_position)); + case 0x9: // load Y I/O address + m_gv_word_y_position = ~m_gv_data_w & 0x1ff; // 0..454 + LOG("load Y I/O adress = %04x\n", m_gv_word_y_position); m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position); m_gv_plane = 0; m_gv_plane_wrap = false; break; - case 0xa: // load memory control + case 0xa: // load memory control m_gv_memory_control = m_gv_data_w & 0x7f; - LOG(("load memory control = %04x\n", m_gv_memory_control)); + LOG("load memory control = %04x\n", m_gv_memory_control); break; - case 0xb: // set line type/area fill + case 0xb: // set line type/area fill m_gv_line_type_area_fill = m_gv_data_w & 0x1ff; if (BIT(m_gv_line_type_area_fill, 4)) { m_gv_line_type_mask = m_line_type[ m_gv_line_type_area_fill & 0x7 ]; m_gv_repeat_count = 0; } - LOG(("set line type = %04x\n", m_gv_line_type_area_fill)); + LOG("set line type = %04x\n", m_gv_line_type_area_fill); break; - case 0xc: // load color mask + case 0xc: // load color mask m_gv_music_memory = m_gv_data_w & 0x1ff; - LOG(("load color mask = %04x\n", m_gv_music_memory)); + LOG("load color mask = %04x\n", m_gv_music_memory); break; - case 0xd: // load end points + case 0xd: // load end points m_gv_ypt = ~m_gv_data_w & 0x1ff; - LOG(("load end points y = %d\n", m_gv_ypt)); + LOG("load end points y = %d\n", m_gv_ypt); break; - case 0xe: // Y cursor position & color - m_gv_cursor_color = ~m_gv_data_w & 0x7; - m_gv_cursor_y = 1073 - (m_gv_data_w >> 6); - if (m_gv_cursor_fs) m_gv_cursor_y -= 8; - LOG(("Y cursor position = %d, color = %d\n", m_gv_cursor_y, m_gv_cursor_color)); + case 0xe: // Y cursor position & color + m_gv_lyc = m_gv_data_w; break; - case 0xf: // X cursor position & type - m_gv_cursor_fs = BIT(m_gv_data_w, 0); - m_gv_cursor_gc = BIT(m_gv_data_w, 1) || m_gv_cursor_fs; - m_gv_cursor_x = ((m_gv_data_w >> 6) & 0x3ff) - 42; - if (m_gv_cursor_fs) m_gv_cursor_x -= 8; - - LOG(("X cursor position = %d, fs = %d, gc = %d\n", m_gv_cursor_x, m_gv_cursor_fs, m_gv_cursor_gc)); + case 0xf: // X cursor position & type + m_gv_lxc = m_gv_data_w; break; default: logerror("unknown 98770A command = %d, parm = 0x%04x\n", m_gv_cmd, m_gv_data_w); } if (m_gv_cmd == 0xd) { - m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> get second data word + m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> get second data word } else { get_out = true; - m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> done + m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> done } } else { get_out = true; @@ -2324,9 +2495,9 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger) if (time_mem_av.is_zero()) { // Read a word from graphic memory m_gv_data_r = m_graphic_mem[ m_gv_plane ][ m_gv_io_counter ]; - LOG(("read words @%04x = %04x, plane #%d\n" , m_gv_io_counter , m_gv_data_r, m_gv_plane + 1)); + LOG("read words @%04x = %04x, plane #%d\n" , m_gv_io_counter , m_gv_data_r, m_gv_plane + 1); advance_io_counter(); - m_gv_fsm_state = GV_STAT_WAIT_DS_1; // -> proceed with read stream + m_gv_fsm_state = GV_STAT_WAIT_DS_1; // -> proceed with read stream } else { m_gv_timer->adjust(time_mem_av); get_out = true; @@ -2337,7 +2508,7 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger) // wait for data word to be read if (ds) { // -- next word - m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> process data word + m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> process data word } else { // -- done get_out = true; @@ -2348,7 +2519,7 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger) // wait for data word to be written if (ds) { // -- next word - m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> process data word + m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> process data word } else { // done get_out = true; @@ -2363,21 +2534,21 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger) m_gv_xpt = ~m_gv_data_w & 0x3ff; if (BIT(m_gv_data_w, 10)) { // draw vector - LOG(("load end points x = %d (draw)\n", m_gv_xpt)); - m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector + LOG("load end points x = %d (draw)\n", m_gv_xpt); + m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector } else { - LOG(("load end points x = %d (move)\n", m_gv_xpt)); + LOG("load end points x = %d (move)\n", m_gv_xpt); m_gv_last_xpt = m_gv_xpt; m_gv_last_ypt = m_gv_ypt; - m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> proceed with next word pair + m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> proceed with next word pair } } else if (m_gv_cmd == 0x2) { // clear/set words command m_gv_data_w = BIT(m_gv_memory_control, m_gv_plane + 3) ? 0xffff : 0; - m_gv_fsm_state = GV_STAT_WAIT_MEM_1; // -> proceed with next word + m_gv_fsm_state = GV_STAT_WAIT_MEM_1; // -> proceed with next word } else if (m_gv_cmd == 0x0) { // write words command - m_gv_fsm_state = GV_STAT_WAIT_MEM_1; // -> proceed with next word + m_gv_fsm_state = GV_STAT_WAIT_MEM_1; // -> proceed with next word } } else { // done @@ -2390,12 +2561,12 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger) time_mem_av = time_to_gv_mem_availability(); if (time_mem_av.is_zero()) { // Write a full word to graphic memory - LOG(("write words @%04x = %04x, plane #%d\n" , m_gv_io_counter , m_gv_data_w, m_gv_plane + 1)); + LOG("write words @%04x = %04x, plane #%d\n" , m_gv_io_counter , m_gv_data_w, m_gv_plane + 1); if ((m_gv_cmd == 0x0) || BIT(m_gv_memory_control, m_gv_plane)) { m_graphic_mem[ m_gv_plane ][ m_gv_io_counter ] = m_gv_data_w; } advance_io_counter(); - m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with write stream + m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with write stream } else { m_gv_timer->adjust(time_mem_av); get_out = true; @@ -2427,13 +2598,13 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger) draw_line(x0 , y0 , x1 , y1); } else { // fill area with pattern - LOG(("area fill (%d,%d) -> (%d,%d) pattern=%04x\n", m_gv_last_xpt, m_gv_last_ypt, m_gv_xpt, m_gv_ypt, m_gv_line_type_area_fill)); + LOG("area fill (%d,%d) -> (%d,%d) pattern=%04x\n", m_gv_last_xpt, m_gv_last_ypt, m_gv_xpt, m_gv_ypt, m_gv_line_type_area_fill); - pattern_fill(m_gv_xpt , m_gv_ypt , m_gv_last_xpt , m_gv_last_ypt); + pattern_fill(m_gv_xpt , m_gv_ypt , m_gv_last_xpt , m_gv_last_ypt , m_gv_line_type_area_fill & 0xf); } m_gv_last_xpt = m_gv_xpt; m_gv_last_ypt = m_gv_ypt; - m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> proceed with next word pair + m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> proceed with next word pair } else { m_gv_timer->adjust(time_mem_av); get_out = true; @@ -2452,62 +2623,954 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger) update_graphic_bits(); } -static MACHINE_CONFIG_START( hp9845a, hp9845_state ) - //MCFG_CPU_ADD("lpu", HP_5061_3010, XTAL_11_4MHz) - //MCFG_CPU_ADD("ppu", HP_5061_3011, XTAL_11_4MHz) +void hp9845c_state::update_graphic_bits() +{ + bool lp_int = m_gv_lp_int_en && m_gv_lp_status; + bool sk_int = m_gv_sk_status && m_gv_sk_en; - // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_UPDATE_DRIVER(hp9845_state, screen_update) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(560, 455) - MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, 455-1) + if (lp_int && !m_gv_sk_int_latched) { + m_gv_lp_int_latched = true; + } else if (sk_int && !m_gv_lp_int_latched) { + m_gv_sk_int_latched = true; + } else if (!lp_int && !sk_int) { + m_gv_lp_int_latched = false; + m_gv_sk_int_latched = false; + } - MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845a_rom") -MACHINE_CONFIG_END + bool gv_ready = m_gv_lp_int_latched || m_gv_sk_int_latched; -static MACHINE_CONFIG_START( hp9835a, hp9845_state ) - //MCFG_CPU_ADD("lpu", HP_5061_3001, XTAL_11_4MHz) - //MCFG_CPU_ADD("ppu", HP_5061_3001, XTAL_11_4MHz) + if (m_gv_gr_en && !gv_ready) { + gv_ready = m_gv_fsm_state == GV_STAT_WAIT_DS_0 || + m_gv_fsm_state == GV_STAT_WAIT_TRIG_0 || + m_gv_fsm_state == GV_STAT_WAIT_DS_1 || + m_gv_fsm_state == GV_STAT_WAIT_DS_2 || + m_gv_fsm_state == GV_STAT_WAIT_TRIG_1; + } - // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_UPDATE_DRIVER(hp9845_state, screen_update) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(560, 455) - MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, 455-1) + flg_w(GVIDEO_PA , gv_ready); - MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9835a_rom") + bool irq = m_gv_int_en && !m_gv_dma_en && gv_ready; + + irq_w(GVIDEO_PA , irq); + + bool dmar = gv_ready && m_gv_dma_en; + + m_ppu->dmar_w(dmar); +} + +void hp9845c_state::update_gcursor(void) +{ + m_gv_cursor_color = ~m_gv_lyc & 0x7; + m_gv_cursor_y = (~m_gv_lyc >> 6) & 0x1ff; + m_gv_cursor_fs = BIT(m_gv_lxc, 0); + m_gv_cursor_gc = BIT(m_gv_lxc, 1); + m_gv_cursor_x = (m_gv_lxc >> 6) & 0x3ff; +} + +// *************** +// hp9845t_state +// *************** +class hp9845t_state : public hp9845ct_base_state +{ +public: + hp9845t_state(const machine_config &mconfig, device_type type, const char *tag); + + virtual void machine_start() override; + virtual void machine_reset() override; + + virtual DECLARE_READ16_MEMBER(graphic_r) override; + virtual DECLARE_WRITE16_MEMBER(graphic_w) override; + + TIMER_DEVICE_CALLBACK_MEMBER(scanline_timer); + +protected: + virtual void set_graphic_mode(bool graphic , bool alpha) override; + void video_render_buff(unsigned video_scanline , unsigned line_in_row, bool buff_idx); + void graphic_video_render(unsigned video_scanline); + virtual void plot(uint16_t x, uint16_t y, bool draw_erase) override; + void draw_arc(uint16_t x0, uint16_t y0, int xstart, int ystart, uint16_t radius, int quadrant, int& draw_counter); + void draw_full_arc(int x0 , int y0 , int dx , int dy , int draw_counter); + + virtual void advance_gv_fsm(bool ds , bool trigger) override; + virtual void update_graphic_bits() override; + + virtual void update_gcursor(void) override; + + std::vector m_graphic_mem; + + bool m_gv_stat; + bool m_gv_increment_to_next_row; + + uint16_t m_gv_scan_start_x; + uint16_t m_gv_scan_start_y; + uint8_t m_gv_rb_control; + uint16_t m_gv_rb_counter; + uint16_t m_gv_rb_memory[ 256 ]; + uint16_t m_gv_arc[ 4 ]; + uint8_t m_gv_arc_parm; + bool m_back_arrow_cursor; + + static const uint8_t m_back_arrow_shape[]; +}; + +hp9845t_state::hp9845t_state(const machine_config &mconfig, device_type type, const char *tag) + : hp9845ct_base_state(mconfig , type , tag) +{ +} + +void hp9845t_state::machine_start() +{ + // Common part first + hp9845ct_base_state::machine_start(); + + m_graphic_mem.resize(GVIDEO_MEM_SIZE); + + // initialize palette + m_palette->set_pen_color(PEN_BLACK , 0x00, 0x00, 0x00); // black + m_palette->set_pen_color(PEN_GRAPHIC, 0x00, I_GR, 0x00); // graphics + m_palette->set_pen_color(PEN_ALPHA , 0x00, I_AL, 0x00); // alpha + m_palette->set_pen_color(PEN_CURSOR , 0x00, I_CU, 0x00); // graphics cursor + m_palette->set_pen_color(PEN_LP , 0x00, I_LP, 0x00); // lightpen cursor +} + +void hp9845t_state::machine_reset() +{ + // Common part first + hp9845ct_base_state::machine_reset(); + + m_gv_stat = false; + m_gv_increment_to_next_row = false; + m_gv_scan_start_x = 0; + m_gv_scan_start_y = 0; + m_gv_rb_control = 0; + m_gv_rb_counter = 0; + memset(m_gv_rb_memory, 0, sizeof(m_gv_rb_memory)); + m_back_arrow_cursor = false; + + set_video_mar(0); +} + +READ16_MEMBER(hp9845t_state::graphic_r) +{ + uint16_t res = 0; + + switch (offset) { + case 2: + // R6: data register with DMA TC + m_gv_dma_en = false; + // Intentional fall-through + + case 0: + // R4: data register + if (m_gv_lp_en) { + res = lp_r4_r(); + } else if (m_gv_sk_en) { + res = m_gv_softkey; + m_gv_sk_status = false; + } else { + res = m_gv_data_r; + } + advance_gv_fsm(true , false); + update_graphic_bits(); + break; + + case 1: + // R5: status register + if (m_gv_int_en) { + BIT_SET(res, 7); + } + if (m_gv_dma_en) { + BIT_SET(res, 6); + } + if (m_gv_lp_status && m_gv_lp_int_en) { + BIT_SET(res, 0); // Lightpen service request + } + // TODO: gsr/ + if (m_gv_sk_status) { + BIT_SET(res, 1); // Softkey service request + } + BIT_SET(res, 9); // ID + BIT_SET(res, 11); // ID + if (m_gv_stat) { + BIT_SET(res, 13); // error indication + } + break; + + case 3: + // R7: not mapped + break; + } + + LOG("rd gv R%u = %04x\n", 4 + offset , res); + + return res; +} + +WRITE16_MEMBER(hp9845t_state::graphic_w) +{ + LOG("wr gv R%u = %04x\n", 4 + offset , data); + + switch (offset) { + case 0: + // R4: data register + m_gv_data_w = data; + advance_gv_fsm(true , false); + lp_r4_w(data); + if (m_gv_lp_int_en) { + m_gv_lp_fullbright = BIT(data , 1); + } + break; + + case 1: + // R5: command register + m_gv_cmd = (uint8_t)(data & 0xf); + m_gv_dma_en = BIT(data , 6) != 0; + m_gv_int_en = BIT(data , 7) != 0; + m_gv_gr_en = BIT(data , 8); // enables graphics controller & vector generator command processing and IRQs + m_gv_sk_en = (data & 0xb00) == 0x200; // enables reads on R4 to return SK keycode, also enables SK IRQs + m_gv_opt_en = BIT(data , 11); // not really used + m_gv_dsa_en = BIT(data , 12); // for factory use only (function unknown) + m_gv_fsm_state = GV_STAT_RESET; // command/reset state machine + lp_r5_w(data); + advance_gv_fsm(false , false); + break; + + case 2: + // R6: data register with DMA TC + m_gv_dma_en = false; + m_gv_data_w = data; + lp_r4_w(data); + if (m_gv_lp_int_en) { + m_gv_lp_fullbright = BIT(data , 1); + } + advance_gv_fsm(true , false); + break; + + case 3: + // R7: not mapped + break; + } +} + +TIMER_DEVICE_CALLBACK_MEMBER(hp9845t_state::scanline_timer) +{ + unsigned video_scanline = param; + + if (video_scanline >= VIDEO_780_VBEND && video_scanline < VIDEO_780_VBSTART) { + if (m_graphic_sel) { + graphic_video_render(video_scanline - VIDEO_780_VBEND); + } + unsigned row = (video_scanline - VIDEO_780_VBEND) / VIDEO_CHAR_HEIGHT; + unsigned line_in_row = (video_scanline - VIDEO_780_VBEND) - row * VIDEO_CHAR_HEIGHT; + + if (line_in_row == 0) { + // Start of new row, swap buffers + m_video_buff_idx = !m_video_buff_idx; + video_fill_buff(!m_video_buff_idx); + } + video_render_buff(video_scanline , line_in_row , m_video_buff_idx); + // Lightpen cursor + if (m_graphic_sel) { + render_lp_cursor(video_scanline - VIDEO_780_VBEND , PEN_LP); + } + } + lp_scanline_update(video_scanline - VIDEO_780_VBEND); +} + +void hp9845t_state::set_graphic_mode(bool graphic , bool alpha) +{ + m_back_arrow_cursor = graphic; // triggers back arrow cursor, 98780A uses video on/off command for enabling/disabling graphics + m_alpha_sel = alpha; +} + +void hp9845t_state::video_render_buff(unsigned video_scanline , unsigned line_in_row, bool buff_idx) +{ + if (!m_video_buff[ buff_idx ].full) { + m_video_blanked = true; + } + + const pen_t *pen = m_palette->pens(); + + if (m_video_blanked || !m_alpha_sel) { + // Blank scanline + for (unsigned i = 0; i < VIDEO_780_ALPHA_L_LIM; i++) { + m_bitmap.pix32(video_scanline , i) = pen[ PEN_BLACK ]; + } + if (!m_graphic_sel) { + for (unsigned i = VIDEO_780_ALPHA_L_LIM; i < VIDEO_780_ALPHA_R_LIM; i++) { + m_bitmap.pix32(video_scanline , i) = pen[ PEN_BLACK ]; + } + } + for (unsigned i = VIDEO_780_ALPHA_R_LIM; i < VIDEO_TOT_HPIXELS; i++) { + m_bitmap.pix32(video_scanline , i) = pen[ PEN_BLACK ]; + } + } else { + bool cursor_line = line_in_row == 12; + bool ul_line = line_in_row == 14; + unsigned video_frame = (unsigned)m_screen->frame_number(); + bool cursor_blink = BIT(video_frame , 3); + bool char_blink = BIT(video_frame , 4); + + for (unsigned i = 0; i < 80; i++) { + uint8_t attrs = m_video_buff[ buff_idx ].attrs[ i ]; + uint16_t pixels; + + if (!BIT(attrs , 2) || char_blink) { + if (ul_line && BIT(attrs , 3)) { + pixels = ~0; + } else { + // The 98780A uses two identical 4KB ROMs interlaced to keep up with the speed of + // the video circuit. Each of the 4K ROMs contains the full character set. + // The 98780A fills row 0 (space between characters) controlled by row 1 and 2 from + // the character ROM, thereby providing line drawing characters for continuous lines + uint8_t charcode = m_video_buff[ buff_idx ].chars[ i ]; + uint16_t chrgen_addr = ((uint16_t)(charcode ^ 0xff) << 4) | (line_in_row + 1); + pixels = (uint16_t)m_chargen[ chrgen_addr ] << 1; + if ((charcode & 0xe0) == 0xe0 && (pixels & 0x6) == 0x6) { + pixels |= 1; + } + } + } else { + pixels = 0; + } + + if (cursor_blink && BIT(attrs , 0)) { + if (m_back_arrow_cursor) { + // back arrow cursor (HP's hardware easter egg) + pixels |= m_back_arrow_shape[ line_in_row ]; + } else if (cursor_line) { + pixels = ~0; + } + } + + if (BIT(attrs , 1)) { + pixels = ~pixels; + } + + for (unsigned j = 0; j < 9; j++) { + bool pixel = (pixels & (1U << j)) != 0; + unsigned x = i * 9 + j; + + if (m_graphic_sel && x >= VIDEO_780_ALPHA_L_LIM && x < VIDEO_780_ALPHA_R_LIM) { + // alpha overlays graphics (non-dominating) + if (pixel) { + m_bitmap.pix32(video_scanline , x) = pen[ PEN_ALPHA ]; + } + } else { + // Graphics disabled or alpha-only zone + m_bitmap.pix32(video_scanline , x) = pen[ pixel ? PEN_ALPHA : PEN_BLACK ]; + } + } + } + } +} + +void hp9845t_state::graphic_video_render(unsigned video_scanline) +{ + // video_scanline is 0-based, i.e. the topmost visible line of graphic screen is 0 + const pen_t *pen = m_palette->pens(); + bool yc, yw; + uint16_t word; + + if (m_gv_cursor_fs) { + // Full-screen cursor + yw = false; + yc = video_scanline == m_gv_cursor_y; + } else if (m_gv_cursor_gc) { + // 9 x 9 crosshair + int cursor_y_top = get_wrapped_scanline(m_gv_cursor_y); + int int_scanline = (int)video_scanline; + yw = int_scanline >= cursor_y_top && int_scanline <= (cursor_y_top + 8); + yc = int_scanline == cursor_y_top + 4; + } else { + // 9-pixel blinking line + int cursor_y_top = get_wrapped_scanline(m_gv_cursor_y); + int int_scanline = (int)video_scanline; + yw = false; + yc = int_scanline == cursor_y_top + 4; + } + + unsigned mem_idx = get_gv_mem_addr(m_gv_scan_start_x >> 4, video_scanline + m_gv_scan_start_y); + for (unsigned i = 0; i < GVIDEO_HPIXELS; i += 16) { + word = m_graphic_mem[ mem_idx ]; + mem_idx++; + // Is wraparound better? + if (mem_idx > GVIDEO_ADDR_MASK) return; + unsigned x = i; + for (uint16_t mask = 0x8000; mask != 0; mask >>= 1) { + bool cursor = false; + unsigned pixel; + if (m_gv_cursor_fs) { + // Full-screen cursor + cursor = yc || (x + 184) == m_gv_cursor_x; + } else if (m_gv_cursor_gc) { + bool xc = (x + 184) == m_gv_cursor_x; + bool xw = (x + 180) <= m_gv_cursor_x && (x + 188) >= m_gv_cursor_x; + + // 9 x 9 crosshair + cursor = (yc && xw) || (yw && xc); + } else if (BIT(m_screen->frame_number() , 3)) { + // 9-pixel blinking line + cursor = yc && (x + 188) >= m_gv_cursor_x && (x + 180) <= m_gv_cursor_x; + } + if (cursor) { + pixel = PEN_CURSOR; + } else { + // Normal pixel + if (m_gv_lp_fullbright) + pixel = word & mask ? PEN_LP : PEN_BLACK; + else + pixel = word & mask ? PEN_GRAPHIC : PEN_BLACK; + } + m_bitmap.pix32(video_scanline , VIDEO_780_ALPHA_L_LIM + x++) = pen[ pixel ]; + } + } +} + +void hp9845t_state::plot(uint16_t x, uint16_t y, bool draw_erase) +{ + uint16_t addr, pixel_mask; + bool do_draw; + + pixel_mask = 0x8000 >> (x & 0xf); + addr = get_gv_mem_addr(x >> 4 , y); + if (BIT(m_gv_rb_control, 1)) { + // save graphics memory to rubber band memory + if (m_graphic_mem[ addr ] & pixel_mask) + m_gv_rb_memory[m_gv_rb_counter/16] |= 0x1 << (m_gv_rb_counter % 16); // set + else + m_gv_rb_memory[m_gv_rb_counter/16] &= ~(0x1 << (m_gv_rb_counter % 16)); // clear + m_gv_rb_counter++; + if (m_gv_rb_counter > 4095) { + m_gv_stat = true; // we might prevent data corruption here, but the original hardware doesn't + m_gv_rb_counter = 0; + } + } else if (BIT(m_gv_rb_control, 0)) { + // restore graphics memory from rubber band memory + if (BIT(m_gv_rb_memory[m_gv_rb_counter / 16], m_gv_rb_counter % 16)) + m_graphic_mem[ addr ] |= pixel_mask; // set + else + m_graphic_mem[ addr ] &= ~pixel_mask; // clear + m_gv_rb_counter++; + if (m_gv_rb_counter > 4095) { + m_gv_stat = true; + m_gv_rb_counter = 0; + } + } else { + // draw/erase pixel + do_draw = m_gv_memory_control ? draw_erase : !draw_erase; + if (do_draw) + m_graphic_mem[ addr ] |= pixel_mask; + else + m_graphic_mem[ addr ] &= ~pixel_mask; + } +} + +void hp9845t_state::draw_arc(uint16_t x0, uint16_t y0, int xstart, int ystart, uint16_t radius, int quadrant, int& draw_counter) +{ + int i, x1, y1, d; + bool draw_erase; + bool do_plot = (xstart < 0) || (ystart < 0); + int save_x1[560]; + + /* quadrants: + * + * 1 | 0 + * ---+--- + * 2 | 3 + * + * Note: we are using Horn's algorithm here, however it is not 100% pixel + * accurate with the original vector generator + */ + + d = -radius; + x1 = radius; + y1 = 0; + i = 0; + while ((x1 > 0) && (draw_counter > 0)) { + // check for plot start + if (!do_plot) { + if ((quadrant % 2) == 0) { + if ((x1 <= xstart) && (y1 >= ystart)) do_plot = true; + } else { + if ((y1 >= xstart) && (x1 <= ystart)) do_plot = true; + } + } + + // draw pixels in quadrants + draw_erase = BIT(m_gv_line_type_mask, 15); + if (do_plot) { + switch (quadrant) { + case 0: + plot(x0 + x1, y0 - y1, draw_erase); // quadrant 0 + break; + case 1: + plot(x0 - y1, y0 - x1, draw_erase); // quadrant 1 + break; + case 2: + plot(x0 - x1, y0 + y1, draw_erase); // quadrant 2 + break; + case 3: + plot(x0 + y1, y0 + x1, draw_erase); // quadrant 3 + break; + } + } + + // update coordinates + if (x1 > y1) { + save_x1[i++] = x1; + d += 2 * y1 + 1; + y1++; + if (do_plot) draw_counter--; + if (d > 0) { + x1--; + if (do_plot) draw_counter--; + d -= 2 * x1; + } + if (x1 <= y1) draw_counter++; + } + else { + x1--; + y1 = save_x1[--i]; + if (do_plot) { + draw_counter--; + if (save_x1[i] != save_x1[i+1]) + draw_counter--; + } + } + update_line_pattern(); + } +} + +void hp9845t_state::draw_full_arc(int x0 , int y0 , int dx , int dy , int draw_counter) +{ + // radius + int radius = sqrt(dx * dx + dy * dy); + + LOG("midpoint = (%d,%d) radius = %d ctrl = %d count = %d\n", x0, y0, radius, m_gv_memory_control, draw_counter); + + /* quadrants: + * + * 1 | 0 + * ---+--- + * 2 | 3 + */ + + int quadrant = 0; + + // determine the start quadrant + if (dx > 0) + quadrant = (dy < 0) ? 1 : 2; + else + quadrant = (dy <= 0) ? 0 : 3; + + draw_arc(x0, y0, abs(dx), abs(dy), radius, quadrant, draw_counter); + while (draw_counter > 0) { + quadrant++; + if (quadrant > 3) { + quadrant = 0; + } + draw_arc(x0, y0, -1, -1, radius, quadrant, draw_counter); + } +} + +void hp9845t_state::advance_gv_fsm(bool ds , bool trigger) +{ + if (!m_gv_gr_en) { + return; + } + + bool get_out = false; + + attotime time_mem_av; + + do { + switch (m_gv_fsm_state) { + case GV_STAT_WAIT_DS_0: + // inital state (same as GV_STAT_RESET), command received + if (m_gv_cmd == 0x9) { + // read words command + if (m_gv_last_cmd != m_gv_cmd) { + m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position); + } + LOG("read words, last = %x\n", m_gv_last_cmd); + m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> read stream + m_gv_last_cmd = m_gv_cmd; + } else if (m_gv_cmd == 0xd) { + // fast clear/set command + m_gv_fsm_state = GV_STAT_WAIT_MEM_2; + m_gv_last_cmd = m_gv_cmd; + } else if (ds) { + if (m_gv_cmd == 0x8) { + // write words command + if (m_gv_last_cmd != m_gv_cmd) { + m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position); + } + LOG("write words\n"); + m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> write stream + } else { + // any other command + m_gv_fsm_state = GV_STAT_WAIT_TRIG_0; // -> wait for trigger + } + m_gv_last_cmd = m_gv_cmd; + } else { + get_out = true; + } + break; + + case GV_STAT_WAIT_TRIG_0: + // process data on R4 or R6 + switch (m_gv_cmd) { + case 0x1: // load end points + m_gv_ypt = m_gv_data_w & 0x3ff; + LOG("load end points y = %d\n", m_gv_ypt); + break; + case 0x3: // load arc + m_gv_arc_parm = 0; + m_gv_arc[ m_gv_arc_parm ] = m_gv_data_w; + LOG("load arc parm%d = %04x\n", m_gv_arc_parm, m_gv_arc[m_gv_arc_parm]); + m_gv_arc_parm++; + break; + case 0x5: // load scan + m_gv_scan_start_x = m_gv_data_w & 0x3ff; // 0..559 + LOG("load scan x = %d\n", m_gv_scan_start_x); + break; + case 0x6: // set line type/area fill + m_gv_line_type_area_fill = m_gv_data_w & 0x1ff; + if (BIT(m_gv_line_type_area_fill, 4)) { + m_gv_line_type_mask = m_line_type[ m_gv_line_type_area_fill & 0x7 ]; + m_gv_repeat_count = 0; + } + LOG("set line type = %04x\n", m_gv_line_type_area_fill); + break; + case 0x7: // load X/Y I/O address + m_gv_word_y_position = m_gv_data_w & 0x1ff; // 0..454 + LOG("load X/Y I/O adress y = %04x\n", m_gv_word_y_position); + break; + case 0xa: // load memory control + // A single bit is saved (InvBit) + m_gv_memory_control = (m_gv_data_w & 0x9) == 9 || (m_gv_data_w & 0x12) == 0x12 || (m_gv_data_w & 0x24) == 0x24; + LOG("load memory control = %04x\n", m_gv_memory_control); + break; + case 0xb: // video on/off - enable graphics video output (1=on 2=off) + m_graphic_sel = BIT(m_gv_data_w, 0); + LOG("video on/off parm = %d\n", m_gv_data_w & 0x3); + break; + case 0xc: // load color mask (no effect, just for compatibility with 9845c), takes a single word as parameter + break; + case 0xe: // Y cursor position + m_gv_lyc = m_gv_data_w; + break; + case 0xf: // X cursor position + m_gv_lxc = m_gv_data_w; + break; + default: + LOG("unknown 98780A command = %d, parm = 0x%04x\n", m_gv_cmd, m_gv_data_w); + } + if ((m_gv_cmd == 0x1) || (m_gv_cmd == 0x3) || (m_gv_cmd == 0x5) || (m_gv_cmd == 0x7)) { + m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> get second data word + } else { + get_out = true; + m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> done + } + break; + + case GV_STAT_WAIT_MEM_0: + // process data during read transfer + time_mem_av = time_to_gv_mem_availability(); + if (time_mem_av.is_zero()) { + // Read a word from graphic memory + m_gv_data_r = m_graphic_mem[ m_gv_io_counter ]; + LOG("read words @%04x = %04x\n" , m_gv_io_counter , m_gv_data_r); + m_gv_io_counter = (m_gv_io_counter + 1) & GVIDEO_ADDR_MASK; + m_gv_fsm_state = GV_STAT_WAIT_DS_1; // -> proceed with read stream + } else { + m_gv_timer->adjust(time_mem_av); + get_out = true; + } + break; + + case GV_STAT_WAIT_DS_1: + // wait for data word to be read + if (ds) { + // -- next word + m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> process data word + } else { + // -- done + get_out = true; + } + break; + + case GV_STAT_WAIT_DS_2: + // wait for data word to be written + if (ds) { + // -- next word + m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> process data word + } else { + // done + get_out = true; + } + break; + + case GV_STAT_WAIT_TRIG_1: + // process multi-word parameters & data during write transfer + switch (m_gv_cmd) { + case 0x1: + // load endpoints command + m_gv_xpt = m_gv_data_w & 0x3ff; + // RB control is actually set whenever a data word is written into R4/R6 register, not just here + m_gv_rb_control = (m_gv_data_w >> 13) & 0x7; + if (BIT(m_gv_rb_control, 2)) { + m_gv_rb_counter = 0; + m_gv_stat = false; + } + if (BIT(m_gv_data_w, 11)) { + // draw vector + LOG("load end points x = %d, rb = %d (draw)\n", m_gv_xpt, m_gv_rb_control); + m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector + } else { + LOG("load end points x = %d, rb = %d (move)\n", m_gv_xpt, m_gv_rb_control); + m_gv_last_xpt = m_gv_xpt; + m_gv_last_ypt = m_gv_ypt; + m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> proceed with next word pair + } + break; + + case 0x3: + // load arc + m_gv_arc[ m_gv_arc_parm ] = m_gv_data_w; + LOG("load arc parm%d = %04x\n", m_gv_arc_parm, m_gv_arc[m_gv_arc_parm]); + m_gv_arc_parm++; + if (m_gv_arc_parm < 4) { + m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with next word + } else { + m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector + } + break; + + case 0x5: + // load scan + m_gv_scan_start_y = m_gv_data_w & 0x3ff; // 0..454 + LOG("load scan y = %d\n", m_gv_scan_start_y); + m_gv_fsm_state = GV_STAT_WAIT_DS_0; + break; + + case 0x7: + // load X/Y I/O address + m_gv_word_x_position = (m_gv_data_w & 0x3f0) >> 4; // 0..34 + m_gv_increment_to_next_row = BIT(m_gv_data_w, 11); + m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position); + LOG("load X/Y I/O adress x = %04x increment = %d\n", m_gv_word_x_position, m_gv_increment_to_next_row); + m_gv_fsm_state = GV_STAT_WAIT_DS_0; + break; + + case 0x8: + // write words command + m_gv_fsm_state = GV_STAT_WAIT_MEM_1; // -> proceed with next word + break; + } + break; + + case GV_STAT_WAIT_MEM_1: + // -- transfer from bus to graphics memory to bus within write transfer + time_mem_av = time_to_gv_mem_availability(); + if (time_mem_av.is_zero()) { + // Write a full word to graphic memory + LOG("write words @%04x = %04x\n" , m_gv_io_counter , m_gv_data_w); + m_graphic_mem[ m_gv_io_counter ] = m_gv_data_w; + if (!m_gv_increment_to_next_row || (m_gv_word_x_position < 34)) { + m_gv_io_counter = (m_gv_io_counter + 1) & GVIDEO_ADDR_MASK; + } + m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with write stream + } else { + m_gv_timer->adjust(time_mem_av); + get_out = true; + } + break; + + case GV_STAT_WAIT_MEM_2: + // vector generator + time_mem_av = time_to_gv_mem_availability(); + if (time_mem_av.is_zero()) { + if (m_gv_cmd == 0xd) { + // fast clear/set command + if (m_gv_memory_control) { + LOG("fast clear/set (set)\n"); + for (auto& el : m_graphic_mem) { + el = 0xffff; + } + } else { + LOG("fast clear/set (clear)\n"); + for (auto& el : m_graphic_mem) { + el = 0; + } + } + } else { + if (m_gv_cmd == 0x3) { + // draw arc/circle + // drawing is performed counter-clockwise by using Horn's algorithm + // m_gv_arc[0] is the delta last load endpoint y coordinate minus the midpoint y coordinate + // m_gv_arc[1] is the delta last load endpoint x coordinate minus the midpoint x coordinate + // m_gv_arc[2] is the (probably) the start count (?), actually ignored + // m_gv_arc[3] is the total horizontal + vertical count for the 4 quadrants counter-clockwise, starting at the last load endpoint (equals 4 times radius for full circles) + LOG("arc draw\n"); + + // midpoint + int dx = BIT(m_gv_arc[ 1 ] , 15) ? (int)m_gv_arc[ 1 ] - 65536 : m_gv_arc[ 1 ] & 0x7ff; + int dy = BIT(m_gv_arc[ 0 ] , 15) ? (int)m_gv_arc[ 0 ] - 65536 : m_gv_arc[ 0 ]; + int x0 = m_gv_xpt + dx; + int y0 = m_gv_ypt - dy; + + draw_full_arc(x0 , y0 , dx , dy , m_gv_arc[ 3 ]); + } else if (BIT (m_gv_line_type_area_fill, 4)) { + unsigned x0; + unsigned x1; + unsigned y0; + unsigned y1; + + LOG("line draw (%d,%d)->(%d,%d)\n", m_gv_last_xpt, m_gv_last_ypt, m_gv_xpt, m_gv_ypt); + + // vector generator uses normalization + if (m_gv_xpt > m_gv_last_xpt) { + x0 = m_gv_last_xpt; + y0 = m_gv_last_ypt; + x1 = m_gv_xpt; + y1 = m_gv_ypt; + } else { + x0 = m_gv_xpt; + y0 = m_gv_ypt; + x1 = m_gv_last_xpt; + y1 = m_gv_last_ypt; + } + draw_line(x0 , y0 , x1 , y1); + } else { + // fill area with pattern + LOG("area fill (%d,%d) -> (%d,%d) pattern=%04x\n", m_gv_last_xpt, m_gv_last_ypt, m_gv_xpt, m_gv_ypt, m_gv_line_type_area_fill); + + pattern_fill(m_gv_xpt , m_gv_ypt , m_gv_last_xpt , m_gv_last_ypt , 15 - (m_gv_line_type_area_fill & 0xf)); + } + m_gv_last_xpt = m_gv_xpt; + m_gv_last_ypt = m_gv_ypt; + } + m_gv_fsm_state = GV_STAT_WAIT_DS_0; + } else { + m_gv_timer->adjust(time_mem_av); + } + get_out = true; + break; + + default: + logerror("Invalid state reached %d\n" , m_gv_fsm_state); + m_gv_fsm_state = GV_STAT_RESET; + } + + ds = false; + } while (!get_out); + + update_graphic_bits(); +} + +void hp9845t_state::update_graphic_bits() +{ + bool gv_ready = (m_gv_lp_int_en && m_gv_lp_status) || (m_gv_sk_en && m_gv_sk_status); + + if (m_gv_gr_en && !gv_ready) { + gv_ready = m_gv_fsm_state == GV_STAT_WAIT_DS_0 || + m_gv_fsm_state == GV_STAT_WAIT_DS_1 || + m_gv_fsm_state == GV_STAT_WAIT_DS_2; + } + + // WARNING! Race conditions here! + // FLG and IRQ are raised together. In enhgfxb ROM a SFC instruction + // that spins on itself waiting for FLG to be true was getting + // stuck because the interrupt always took precedence (and the ISR + // cleared the FLG bit). + // In real hw there was a non-zero chance that SFC exited the loop before + // interrupt was serviced. In case SFC stayed in the loop, it got another + // chance at the next interrupt. + // Fix for this problem is in commit 27004d00 + // My apologies to Tony Duell for doubting at one point the correctness + // of his 98780A schematics.. :) + flg_w(GVIDEO_PA , gv_ready); + + bool irq = m_gv_int_en && !m_gv_dma_en && gv_ready; + + irq_w(GVIDEO_PA , irq); + + bool dmar = gv_ready && m_gv_dma_en; + + m_ppu->dmar_w(dmar); +} + +void hp9845t_state::update_gcursor(void) +{ + m_gv_cursor_fs = (m_gv_lyc & 0x3) == 0; + m_gv_cursor_gc = !BIT(m_gv_lyc , 1); + m_gv_cursor_y = (~m_gv_lyc >> 7) & 0x1ff; + m_gv_cursor_x = (m_gv_lxc >> 6) & 0x3ff; +} + +const uint8_t hp9845t_state::m_back_arrow_shape[] = { + 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, + 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00 +}; + +static MACHINE_CONFIG_START( hp9845a ) + //MCFG_CPU_ADD("lpu", HP_5061_3010, XTAL_11_4MHz) + //MCFG_CPU_ADD("ppu", HP_5061_3011, XTAL_11_4MHz) + + // video hardware + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_UPDATE_DRIVER(hp9845_state, screen_update) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) + MCFG_SCREEN_SIZE(560, 455) + MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, 455-1) + + MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845a_rom") +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( hp9835a ) + //MCFG_CPU_ADD("lpu", HP_5061_3001, XTAL_11_4MHz) + //MCFG_CPU_ADD("ppu", HP_5061_3001, XTAL_11_4MHz) + + // video hardware + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_UPDATE_DRIVER(hp9845_state, screen_update) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) + MCFG_SCREEN_SIZE(560, 455) + MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, 455-1) + + MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9835a_rom") MACHINE_CONFIG_END /* - Global memory map in blocks of 32 kwords / 64 kbytes each: - - block 0: 0x000000 - 0x007fff (LPU RAM) - block 1: 0x008000 - 0x00ffff (PPU RAM, only 0x00c000 - 0x00ffff used) - block 2: 0x010000 - 0x017fff (unused) - block 3: 0x018000 - 0x01ffff (LPU system ROM) - block 4: 0x020000 - 0x027fff (LPU RAM) - block 5: 0x028000 - 0x02ffff (PPU system ROM) - block 6: 0x030000 - 0x037fff (LPU RAM) - block 7: 0x038000 - 0x03ffff (LPU option ROM) - block 10: 0x040000 - 0x047fff (LPU RAM) - block 11: 0x048000 - 0x04ffff (PPU option ROM) - block 12: 0x050000 - 0x057fff (LPU RAM) - block 13: 0x058000 - 0x05ffff (LPU option ROM) - block 14: 0x060000 - 0x067fff (LPU RAM) - block 15: 0x068000 - 0x06ffff (PPU option ROM) - block 16: 0x070000 - 0x077fff (LPU RAM) - block 17: 0x078000 - 0x07ffff (unused) - - notes: - - all block numbers are octal - - blocks 20 to 76 are reserved for 512 kbyte RAM boards (p/n 09845-66590) - - block 45 is reserved for the Test ROM - - memory addresses are continuous (for convenience, the mapping below uses block numbers as - address part above 0xffff, so there are gaps between 0x8000 and 0xffff which are masked out). + Global memory map in blocks of 32 kwords / 64 kbytes each: + + block 0: 0x000000 - 0x007fff (LPU RAM) + block 1: 0x008000 - 0x00ffff (PPU RAM, only 0x00c000 - 0x00ffff used) + block 2: 0x010000 - 0x017fff (unused) + block 3: 0x018000 - 0x01ffff (LPU system ROM) + block 4: 0x020000 - 0x027fff (LPU RAM) + block 5: 0x028000 - 0x02ffff (PPU system ROM) + block 6: 0x030000 - 0x037fff (LPU RAM) + block 7: 0x038000 - 0x03ffff (LPU option ROM) + block 10: 0x040000 - 0x047fff (LPU RAM) + block 11: 0x048000 - 0x04ffff (PPU option ROM) + block 12: 0x050000 - 0x057fff (LPU RAM) + block 13: 0x058000 - 0x05ffff (LPU option ROM) + block 14: 0x060000 - 0x067fff (LPU RAM) + block 15: 0x068000 - 0x06ffff (PPU option ROM) + block 16: 0x070000 - 0x077fff (LPU RAM) + block 17: 0x078000 - 0x07ffff (unused) + + notes: + - all block numbers are octal + - blocks 20 to 76 are reserved for 512 kbyte RAM boards (p/n 09845-66590) + - block 45 is reserved for the Test ROM + - memory addresses are continuous (for convenience, the mapping below uses block numbers as + address part above 0xffff, so there are gaps between 0x8000 and 0xffff which are masked out). - all LPU RAM is dynamically mapped at machine start according to -ramsize option */ @@ -2530,6 +3593,9 @@ static ADDRESS_MAP_START(ppu_io_map , AS_IO , 16 , hp9845_base_state) // PA = 13, IC = 0..3 // Graphic video AM_RANGE(HP_MAKE_IOADDR(GVIDEO_PA , 0) , HP_MAKE_IOADDR(GVIDEO_PA , 3)) AM_READWRITE(graphic_r , graphic_w) + // PA = 14, IC = 0..3 + // Left-hand side tape drive (T14) + AM_RANGE(HP_MAKE_IOADDR(T14_PA , 0) , HP_MAKE_IOADDR(T14_PA , 3)) AM_DEVREADWRITE("t14" , hp_taco_device , reg_r , reg_w) // PA = 15, IC = 0..3 // Right-hand side tape drive (T15) AM_RANGE(HP_MAKE_IOADDR(T15_PA , 0) , HP_MAKE_IOADDR(T15_PA , 3)) AM_DEVREADWRITE("t15" , hp_taco_device , reg_r , reg_w) @@ -2566,6 +3632,10 @@ static MACHINE_CONFIG_FRAGMENT(hp9845_base) MCFG_TACO_IRQ_HANDLER(WRITELINE(hp9845_base_state , t15_irq_w)) MCFG_TACO_FLG_HANDLER(WRITELINE(hp9845_base_state , t15_flg_w)) MCFG_TACO_STS_HANDLER(WRITELINE(hp9845_base_state , t15_sts_w)) + MCFG_DEVICE_ADD("t14" , HP_TACO , 4000000) + MCFG_TACO_IRQ_HANDLER(WRITELINE(hp9845_base_state , t14_irq_w)) + MCFG_TACO_FLG_HANDLER(WRITELINE(hp9845_base_state , t14_flg_w)) + MCFG_TACO_STS_HANDLER(WRITELINE(hp9845_base_state , t14_sts_w)) // In real machine there were 8 slots for LPU ROMs and 8 slots for PPU ROMs in // right-hand side and left-hand side drawers, respectively. @@ -2612,12 +3682,12 @@ static MACHINE_CONFIG_FRAGMENT(hp9845_base) MCFG_RAM_EXTRA_OPTIONS("64K, 320K, 448K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START(hp9845b, hp9845b_state) +static MACHINE_CONFIG_START(hp9845b) MCFG_FRAGMENT_ADD(hp9845_base) // video hardware MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(hp9845b_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(hp9845b_state, vblank_w) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(hp9845b_state, vblank_w)) MCFG_SCREEN_COLOR(rgb_t::green()) // These parameters are for alpha video MCFG_SCREEN_RAW_PARAMS(VIDEO_PIXEL_CLOCK , VIDEO_HTOTAL , 0 , VIDEO_HBSTART , VIDEO_VTOTAL , 0 , VIDEO_ACTIVE_SCANLINES) @@ -2630,12 +3700,12 @@ static MACHINE_CONFIG_START(hp9845b, hp9845b_state) MACHINE_CONFIG_END -static MACHINE_CONFIG_START(hp9845c, hp9845c_state) +static MACHINE_CONFIG_START(hp9845c) MCFG_FRAGMENT_ADD(hp9845_base) // video hardware MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(hp9845c_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(hp9845c_state, vblank_w) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(hp9845c_state, vblank_w)) MCFG_SCREEN_RAW_PARAMS(VIDEO_770_PIXEL_CLOCK , VIDEO_770_HTOTAL , VIDEO_770_HBEND , VIDEO_770_HBSTART , VIDEO_770_VTOTAL , VIDEO_770_VBEND , VIDEO_770_VBSTART) MCFG_PALETTE_ADD("palette", 24) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845c_state, scanline_timer, "screen", 0, 1) @@ -2644,7 +3714,22 @@ static MACHINE_CONFIG_START(hp9845c, hp9845c_state) MACHINE_CONFIG_END -ROM_START( hp9845a ) +static MACHINE_CONFIG_START(hp9845t) + MCFG_FRAGMENT_ADD(hp9845_base) + // video hardware + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_UPDATE_DRIVER(hp9845t_state, screen_update) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(hp9845t_state, vblank_w)) + MCFG_SCREEN_COLOR(rgb_t::green()) + MCFG_SCREEN_RAW_PARAMS(VIDEO_780_PIXEL_CLOCK , VIDEO_780_HTOTAL , VIDEO_780_HBEND , VIDEO_780_HBSTART , VIDEO_780_VTOTAL , VIDEO_780_VBEND , VIDEO_780_VBSTART) + MCFG_PALETTE_ADD("palette", 5) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845t_state, scanline_timer, "screen", 0, 1) + + MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom") + +MACHINE_CONFIG_END + + ROM_START( hp9845a ) ROM_REGION( 0200000, "lpu", ROMREGION_16BIT | ROMREGION_BE ) ROM_LOAD( "09845-65544-65547-03-system_lpu.bin", 0000000, 0200000, CRC(47beb87f) SHA1(456caefacafcf19435e1e7e68b1c1e4010841664) ) @@ -2744,8 +3829,6 @@ ROM_START( hp9845b ) #endif ROM_END -#define rom_hp9845t rom_hp9845b - ROM_START( hp9845c ) ROM_REGION(0x800 , "chargen" , 0) ROM_LOAD("chrgen.bin" , 0 , 0x800 , CRC(fe9e844f) SHA1(0c45ae00766ceba94a19bd5e154bd6d23e208cca)) @@ -2760,10 +3843,22 @@ ROM_START( hp9845c ) ROM_LOAD("9845-PPU-Color-Enhanced-Graphics.bin", 0, 0x10000, CRC(96e11edc) SHA1(3f1da50edb35dfc57ec2ecfd816a8c8230e110bd)) ROM_END -COMP( 1978, hp9845a, 0, 0, hp9845a, hp9845, driver_device, 0, "Hewlett-Packard", "9845A", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1978, hp9845s, hp9845a, 0, hp9845a, hp9845, driver_device, 0, "Hewlett-Packard", "9845S", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1979, hp9835a, 0, 0, hp9835a, hp9845, driver_device, 0, "Hewlett-Packard", "9835A", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1979, hp9835b, hp9835a, 0, hp9835a, hp9845, driver_device, 0, "Hewlett-Packard", "9835B", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1980, hp9845b, 0, 0, hp9845b, hp9845_base,driver_device, 0, "Hewlett-Packard", "9845B", 0 ) -COMP( 1980, hp9845t, hp9845b, 0, hp9845b, hp9845_base,driver_device, 0, "Hewlett-Packard", "9845T", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1981, hp9845c, 0, 0, hp9845c, hp9845ct,driver_device, 0, "Hewlett-Packard", "9845C", 0 ) +ROM_START( hp9845t ) + ROM_REGION(0x1000 , "chargen" , 0) + ROM_LOAD("1818-1395.bin" , 0 , 0x1000 , CRC(7b555edf) SHA1(3b08e094635ef02aef9a2e37b049c61bcf1ec037)) + + ROM_REGION(0x10000, "lpu", ROMREGION_16BIT | ROMREGION_BE) + ROM_LOAD("9845-LPU-Standard-Processor.bin", 0, 0x10000, CRC(dc266c1b) SHA1(1cf3267f13872fbbfc035b70f8b4ec6b5923f182)) + + ROM_REGION(0x10000, "ppu", ROMREGION_16BIT | ROMREGION_BE) + ROM_LOAD("9845-PPU-Color-Enhanced-Graphics.bin", 0, 0x10000, CRC(96e11edc) SHA1(3f1da50edb35dfc57ec2ecfd816a8c8230e110bd)) +ROM_END + +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1977, hp9845a, 0, 0, hp9845a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9845A", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1977, hp9845s, hp9845a, 0, hp9845a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9845S", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1979, hp9835a, 0, 0, hp9835a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9835A", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1979, hp9835b, hp9835a, 0, hp9835a, hp9845, hp9845_state, 0, "Hewlett-Packard", "9835B", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1979, hp9845b, 0, 0, hp9845b, hp9845_base, hp9845b_state, 0, "Hewlett-Packard", "9845B", 0 ) +COMP( 1982, hp9845t, 0, 0, hp9845t, hp9845ct, hp9845t_state, 0, "Hewlett-Packard", "9845T", 0 ) +COMP( 1980, hp9845c, 0, 0, hp9845c, hp9845ct, hp9845c_state, 0, "Hewlett-Packard", "9845C", 0 ) diff --git a/src/mame/drivers/hp9k.cpp b/src/mame/drivers/hp9k.cpp index 4334057d4d6..5326d2c905a 100644 --- a/src/mame/drivers/hp9k.cpp +++ b/src/mame/drivers/hp9k.cpp @@ -392,7 +392,7 @@ WRITE8_MEMBER( hp9k_state::kbd_put ) } -static MACHINE_CONFIG_START( hp9k, hp9k_state ) +static MACHINE_CONFIG_START( hp9k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(hp9k_mem) @@ -429,5 +429,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, hp9816, 0, 0, hp9k, hp9k, hp9k_state, hp9k, "Hewlett Packard", "HP 9816" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1982, hp9816, 0, 0, hp9k, hp9k, hp9k_state, hp9k, "Hewlett Packard", "HP 9816" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/hp9k_3xx.cpp b/src/mame/drivers/hp9k_3xx.cpp index 1f2db5192c5..742672e1f72 100644 --- a/src/mame/drivers/hp9k_3xx.cpp +++ b/src/mame/drivers/hp9k_3xx.cpp @@ -287,7 +287,7 @@ WRITE32_MEMBER(hp9k3xx_state::buserror_w) } } -static MACHINE_CONFIG_START( hp9k310, hp9k3xx_state ) +static MACHINE_CONFIG_START( hp9k310 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68010, 10000000) MCFG_CPU_PROGRAM_MAP(hp9k310_map) @@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( hp9k310, hp9k3xx_state ) MCFG_SCREEN_REFRESH_RATE(70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hp9k320, hp9k3xx_state ) +static MACHINE_CONFIG_START( hp9k320 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68020FPU, 16670000) MCFG_CPU_PROGRAM_MAP(hp9k320_map) @@ -317,7 +317,7 @@ static MACHINE_CONFIG_START( hp9k320, hp9k3xx_state ) MCFG_SCREEN_REFRESH_RATE(70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hp9k330, hp9k3xx_state ) +static MACHINE_CONFIG_START( hp9k330 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68020PMMU, 16670000) MCFG_CPU_PROGRAM_MAP(hp9k330_map) @@ -332,7 +332,7 @@ static MACHINE_CONFIG_START( hp9k330, hp9k3xx_state ) MCFG_SCREEN_REFRESH_RATE(70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hp9k340, hp9k3xx_state ) +static MACHINE_CONFIG_START( hp9k340 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68030, 16670000) MCFG_CPU_PROGRAM_MAP(hp9k330_map) @@ -347,7 +347,7 @@ static MACHINE_CONFIG_START( hp9k340, hp9k3xx_state ) MCFG_SCREEN_REFRESH_RATE(70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hp9k370, hp9k3xx_state ) +static MACHINE_CONFIG_START( hp9k370 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68030, 33000000) MCFG_CPU_PROGRAM_MAP(hp9k370_map) @@ -362,7 +362,7 @@ static MACHINE_CONFIG_START( hp9k370, hp9k3xx_state ) MCFG_SCREEN_REFRESH_RATE(70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hp9k380, hp9k3xx_state ) +static MACHINE_CONFIG_START( hp9k380 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68040, 25000000) // 25 MHz? 33? MCFG_CPU_PROGRAM_MAP(hp9k330_map) @@ -377,7 +377,7 @@ static MACHINE_CONFIG_START( hp9k380, hp9k3xx_state ) MCFG_SCREEN_REFRESH_RATE(70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hp9k382, hp9k3xx_state ) +static MACHINE_CONFIG_START( hp9k382 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68040, 25000000) // 25 MHz? 33? MCFG_CPU_PROGRAM_MAP(hp9k382_map) @@ -459,11 +459,11 @@ ROM_START( hp9k382 ) ROM_LOAD( "1818-5282_8ce61e951207_28c64.bin", 0x000000, 0x002000, CRC(740442f3) SHA1(ab65bd4eec1024afb97fc2dd3bd3f017e90f49ae) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, hp9k310, 0, 0, hp9k310, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/310", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1985, hp9k320, 0, 0, hp9k320, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/320", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1987, hp9k330, 0, 0, hp9k330, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/330", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1989, hp9k340, hp9k330,0, hp9k340, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/340", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1988, hp9k370, hp9k330,0, hp9k370, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/370", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1991, hp9k380, 0, 0, hp9k380, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/380", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1991, hp9k382, 0, 0, hp9k382, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/382", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1985, hp9k310, 0, 0, hp9k310, hp9k330, hp9k3xx_state, 0, "Hewlett-Packard", "HP9000/310", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1985, hp9k320, 0, 0, hp9k320, hp9k330, hp9k3xx_state, 0, "Hewlett-Packard", "HP9000/320", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1987, hp9k330, 0, 0, hp9k330, hp9k330, hp9k3xx_state, 0, "Hewlett-Packard", "HP9000/330", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1989, hp9k340, hp9k330,0, hp9k340, hp9k330, hp9k3xx_state, 0, "Hewlett-Packard", "HP9000/340", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1988, hp9k370, hp9k330,0, hp9k370, hp9k330, hp9k3xx_state, 0, "Hewlett-Packard", "HP9000/370", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1991, hp9k380, 0, 0, hp9k380, hp9k330, hp9k3xx_state, 0, "Hewlett-Packard", "HP9000/380", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1991, hp9k382, 0, 0, hp9k382, hp9k330, hp9k3xx_state, 0, "Hewlett-Packard", "HP9000/382", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/hp_ipc.cpp b/src/mame/drivers/hp_ipc.cpp index e59559cb791..9b6c4115f90 100644 --- a/src/mame/drivers/hp_ipc.cpp +++ b/src/mame/drivers/hp_ipc.cpp @@ -1,11 +1,52 @@ // license:BSD-3-Clause -// copyright-holders: +// copyright-holders:Sergey Svishchev /****************************************************************************** - Integral Personal Computer (HP9807A) Hewlett-Packard, 1985 +Driver to-do list +================= + +- softlist: merge dumps from coho.org and classiccmp.org +- keyboard: NMI generation, autorepeat +- HP-HIL mouse +- RTC chip: proper month, day +- switchable graphics resolution ("_desktop" mode uses 640x400) +- HP-IB chip +- CS/80, SS/80 storage protocol(s) and drives +- HP-IL printer +- sound (needs dump of COP452) + +QA +- diagnstc.td0: display test [cannot execute] +- diagnstc.td0: complete keyboard test [keyboard stops responding] +- diagnstc.td0: speaker test +- diagnstc.td0: printer test ++ diagnstc.td0: auto: floppy disc test ++ diagnstc.td0: auto: ram test +- diagnstc.td0: auto: rtc test [cannot execute] +- diagnstc.td0: auto: short keyboard test [cannot execute + keyboard stops responding] + +maybe +- drive AP line of MLC from a timer +- RTC standby interrupt? +- what does _desktop do except setting 640x400 mode? +- non-HLE keyboard and mouse? (need dumps of COP4xx) + +slot devices +- 82915A -- 300/1200 bps modem; http://www.hpmuseum.net/display_item.php?hw=920 +- 82919A -- serial; http://www.hpmuseum.net/display_item.php?hw=445 +- 82920A -- current loop; http://www.hpmuseum.net/display_item.php?hw=975 +- 82922A -- BCD interface; http://www.hpmuseum.net/display_item.php?hw=921 +- 82923A -- GPIO; http://www.hpmuseum.net/display_item.php?hw=976 +- 82924A -- HP-IL; http://www.hpmuseum.net/display_item.php?hw=922 +- 82968A -- up to 256 KB of ROM on top of operating system PCA +- 82971A -- up to 1 MB of EPROM or 2 MB or masked ROM +- 82998A -- HP-IB; http://www.hpmuseum.net/display_item.php?hw=933 +- 98071A -- 640x400 composite Video + Serial; http://www.hpmuseum.net/display_item.php?hw=935 + + This is a portable mains-powered UNIX workstation computer system produced by Hewlett-Packard and launched in 1985 Basic hardware specs are.... - 68000 CPU at 7.96MHz @@ -74,7 +115,7 @@ Notes: LS74 - 74LS74 at U2 provides system clock dividers /4 /2 MB81256 - Fujitsu MB81256 256Kx1 DRAM. Total RAM 512Kx8/256Kx16. HP part# 1818-3308. U20-U35 (DIP16) TMS4500 - Texas Instruments TMS4500A DRAM Controller at U4. Clock input 3.98MHz [15.92/4] (DIP40) - U58 - HP-HIL Keyboard Interface 'Cerberus'. Clock input on pin 24 is unknown (DIP24) + U58 - 1RD2-6001, HP-HIL Master Link Controller 'Cerberus'. Clock input on pin 24 is unknown (DIP24) U60 - Unknown IC used as an interrupt encoder. Possibly a logic chip? (DIP20) 555 - 555 Timer J1/J2 - Connectors joining to LOGIC B PCA (logic A to logic B bus) @@ -121,13 +162,13 @@ HP Part# 00095-60952 | J14 J6 J5 J4 J3 J7 J1 J8 J9 J12 | |------------------------------------------------------------------------------------------------------| Notes: - GPU - GPU (Graphics Processor) at U1. Clock input 3MHz [24/8]. VSync on pin 45, HSync on pin 46 (DIP48) + GPU - 1LL3-0005 GPU (Graphics Processor) at U1. Clock input 3MHz [24/8]. VSync on pin 45, HSync on pin 46 (DIP48) 16Kx4 - 16Kx4 DRAM, organised as 32Kx8bit/16Kx16bit at U3, U4, U5 & U6. Chip type unknown, likely Fujitsu MB81416 (DIP18) WD2797 - Western Digital WD2797 Floppy Disk Controller at U18. Clock input 2MHz [24/2/3/2] (DIP40) HP-IL(1) - HP-IL 1LJ7-0015 'Saturn' Thinkjet Printer Controller IC at U28. Clock input 3MHz on pin 9 [24/8] (DIP48) - HP-IL(2) - HP-IL Interface IC at U31. Clock input 2MHz on pin 22 [24/2/3/2] (DIP28) + HP-IL(2) - HP-IL 1LB3 Interface IC at U31. Clock input 2MHz on pin 22 [24/2/3/2] (DIP28) 1Kb - 1Kb RAM at U27 for printer buffer (DIP28, type unknown, very old, with only DATA0,1,2,3, C/D and DIN,DOUT) - ROM - 16Kb (2Kx8?) Some kind of very early DIP28 PROM/ROM? Same pinout as 1Kb RAM above. Holds the character font table for the printer + ROM - 16Kb (32Kx4) Some kind of very early DIP28 PROM/ROM? Same pinout as 1Kb RAM above. Holds the character font table for the printer Four versions of this ROM exist, one each for Japan/Arabic/Hebrew and one for all other regions NS58167A - National Semiconductor NS58167A Clock Controller RTC at U44. Clock input 32.768kHz (DIP24) LM358 - National Semiconductor LM358 Operational Amplifier at U40 (DIP8) @@ -246,7 +287,7 @@ F80000-FFFFFF - Reserved 512Kb Access to 800000-FFFFFF can be remapped by the MMU registers. -Interrupts +Interrupts (all autovectored) ---------- High Priority 7 - Soft reset from keyboard (NMI) /\ 6 - RTC or NBIR3 (external I/O) @@ -259,10 +300,81 @@ Low Priority 1 - RTC Note external interrupt lines NBIR0 to NBIR3 can be asserted by an interface connected to the external I/O port +Useful links etc. +----------------- + +bitsavers://pdf/hp/integral/00095-90126_Integral_Personal_Computer_Service_Jan86.pdf + +bitsavers://pdf/hp/hp-hil/45918A-90001_HP-HIL_Technical_Reference_Manual_Jan86.pdf + HP-HIL MLC, SLC datasheets + +bitsavers://pdf/sony/floppy/Sony_OA-D32_Microfloppy_Service_Nov83.pdf + OA-D32W + +http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1983-01.pdf + HP-IL issue + +http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1985-10.pdf + IPC issue + +http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1987-06.pdf + HP-HIL article + +http://www.hpmuseum.net/pdf/ComputerNews_1985_Jan15_37pages_OCR.pdf + introducing the IPC + +http://www.hpmuseum.net/pdf/ComputerFocus_1985_Nov_25pages_OCR.pdf + SysV upgrade + +http://www.hpmuseum.net/pdf/InformationSystemsAndManufacturingNews_81pages_Jun1-86_OCR.pdf + EPROM/ROM modules + +http://www.hpmuseum.net/pdf/HPChannels_1986_11_37pages_Nov86_OCR.pdf + SW Eng ROM and serial option for it + +http://www.coho.org/~pete/downloads/IPC/burst/Freeware/IPC_Driver_Writers_Disc/hp-ux.5.0.0 + kernel namelist + +http://www.hpmuseum.net/display_item.php?hw=122 + overview, manuals, software + +http://www.ambry.com/hp-computer-model/9807A.html + replacement parts + +http://www.brouhaha.com/~eric/hpcalc/chips/ + chip part numbers + + +Software to look for +-------------------- + +00095-60978 "Service ROM - Used in trobleshooting the integral PC" via ambry +00095-60925 "Service ROM" via service manual +00095-60969 "Service Diagnostic Disc" via service manual +00095-60950 "I/O Component-Level Diagnostic Disc" via serial interface service manual + +00095-60006 (original System III-based HP-UX 1.0 ROM) +82995A (same bits as 82991A; the latter is an upgrade kit, former was pre-installed) +82989J Technical Basic ROM (Jan'1986) +82987A Software Engineering ROM (Nov'1986) (possibly can be rebuilt from floppy images on coho?) + ******************************************************************************/ #include "emu.h" + +#include "bus/hp_hil/hp_hil.h" +#include "bus/hp_hil/hil_devices.h" #include "cpu/m68000/m68000.h" +#include "formats/hp_ipc_dsk.h" +#include "machine/bankdev.h" +#include "machine/mm58167.h" +#include "machine/ram.h" +#include "machine/wd_fdc.h" +#include "video/hp1ll3.h" + +#include "rendlay.h" + +#include "screen.h" class hp_ipc_state : public driver_device @@ -271,81 +383,381 @@ public: hp_ipc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") + , m_bankdev(*this, "bankdev") + , m_fdc(*this, "fdc") + , m_ram(*this, RAM_TAG) + , m_screen(*this, "screen") { } + virtual void machine_start() override; + virtual void machine_reset() override; + + DECLARE_READ16_MEMBER(mem_r); + DECLARE_WRITE16_MEMBER(mem_w); + DECLARE_READ16_MEMBER(mmu_r); DECLARE_WRITE16_MEMBER(mmu_w); DECLARE_READ16_MEMBER(ram_r); DECLARE_WRITE16_MEMBER(ram_w); + DECLARE_READ16_MEMBER(trap_r); + DECLARE_WRITE16_MEMBER(trap_w); + + DECLARE_READ8_MEMBER(floppy_id_r); + DECLARE_WRITE8_MEMBER(floppy_id_w); + DECLARE_FLOPPY_FORMATS(floppy_formats); + + DECLARE_WRITE_LINE_MEMBER(irq_1); + DECLARE_WRITE_LINE_MEMBER(irq_2); + DECLARE_WRITE_LINE_MEMBER(irq_3); + DECLARE_WRITE_LINE_MEMBER(irq_4); + DECLARE_WRITE_LINE_MEMBER(irq_5); + DECLARE_WRITE_LINE_MEMBER(irq_6); + DECLARE_WRITE_LINE_MEMBER(irq_7); + + emu_timer *m_bus_error_timer; private: required_device m_maincpu; + required_device m_bankdev; + required_device m_fdc; + required_device m_ram; + required_device m_screen; + + uint32_t m_mmu[4], m_lowest_ram_addr; + uint16_t *m_internal_ram; + int m_fc; - uint32_t m_mmu[4]; - uint16_t m_internal_ram[0x40000]; + floppy_image_device *m_floppy; + + inline uint32_t get_ram_address(offs_t offset) + { + return (m_mmu[(m_maincpu->get_fc() >> 1) & 3] + offset) & 0x3FFFFF; + } - inline uint32_t get_ram_address(offs_t offset) { return (m_mmu[(m_maincpu->get_fc() >> 1) & 3] + offset) & 0x3FFFFF; } +protected: + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + void set_bus_error(uint32_t address, bool write, uint16_t mem_mask); + bool m_bus_error; }; -static ADDRESS_MAP_START(hp_ipc_mem, AS_PROGRAM, 16, hp_ipc_state) - AM_RANGE(0x000000, 0x07FFFF) AM_ROM - AM_RANGE(0x600000, 0x60FFFF) AM_WRITE(mmu_w) - AM_RANGE(0x800000, 0xFFFFFF) AM_READWRITE(ram_r, ram_w) +void hp_ipc_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + m_bus_error = false; +} + +void hp_ipc_state::set_bus_error(uint32_t address, bool write, uint16_t mem_mask) +{ + if (m_bus_error) + { + return; + } + if (!ACCESSING_BITS_8_15) + { + address++; + } + m_bus_error = true; + m_maincpu->set_buserror_details(address, write, m_maincpu->get_fc()); + m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE); + m_bus_error_timer->adjust(m_maincpu->cycles_to_attotime(16)); // let rmw cycles complete +} + +static ADDRESS_MAP_START(hp_ipc_mem_outer, AS_PROGRAM, 16, hp_ipc_state) + AM_RANGE(0x000000, 0xFFFFFF) AM_READWRITE(mem_r, mem_w) ADDRESS_MAP_END +static ADDRESS_MAP_START(hp_ipc_mem_inner, AS_PROGRAM, 16, hp_ipc_state) +// user mode + AM_RANGE(0x1000000, 0x17FFFFF) AM_READWRITE(ram_r, ram_w) + AM_RANGE(0x1800000, 0x187FFFF) AM_ROM AM_REGION("maincpu", 0) + AM_RANGE(0x1E20000, 0x1E2000F) AM_DEVREADWRITE8("gpu", hp1ll3_device, read, write, 0x00ff) + AM_RANGE(0x1E40000, 0x1E4002F) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0x00ff) + +// supervisor mode + AM_RANGE(0x0000000, 0x007FFFF) AM_ROM AM_REGION("maincpu", 0) // Internal ROM (operating system PCA) + AM_RANGE(0x0080000, 0x00FFFFF) AM_UNMAP // Internal ROM (option ROM PCA) + AM_RANGE(0x0100000, 0x04FFFFF) AM_UNMAP // External ROM modules + AM_RANGE(0x0600000, 0x060FFFF) AM_READWRITE(mmu_r, mmu_w) + AM_RANGE(0x0610000, 0x0610007) AM_READWRITE8(floppy_id_r, floppy_id_w, 0x00ff) + AM_RANGE(0x0610008, 0x061000F) AM_DEVREADWRITE8("fdc", wd2797_device, read, write, 0x00ff) + AM_RANGE(0x0620000, 0x062000F) AM_DEVREADWRITE8("gpu", hp1ll3_device, read, write, 0x00ff) + AM_RANGE(0x0630000, 0x063FFFF) AM_NOP // AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff) + AM_RANGE(0x0640000, 0x064002F) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0x00ff) + AM_RANGE(0x0650000, 0x065FFFF) AM_NOP // HP-IL Printer (optional; ROM sets _desktop to 0 if not mapped) -- sys/lpint.h + AM_RANGE(0x0660000, 0x06600FF) AM_DEVREADWRITE8("mlc", hp_hil_mlc_device, read, write, 0x00ff) // 'caravan', scrn/caravan.h + AM_RANGE(0x0670000, 0x067FFFF) AM_NOP // Speaker (NatSemi COP 452) + AM_RANGE(0x0680000, 0x068FFFF) AM_NOP // 'SIMON (98628) fast HP-IB card' -- sys/simon.h + AM_RANGE(0x0700000, 0x07FFFFF) AM_UNMAP // External I/O + AM_RANGE(0x0800000, 0x0FFFFFF) AM_READWRITE(ram_r, ram_w) + +// bus error handler + AM_RANGE(0x0000000, 0x1FFFFFF) AM_READWRITE(trap_r, trap_w) +ADDRESS_MAP_END static INPUT_PORTS_START(hp_ipc) INPUT_PORTS_END +READ16_MEMBER(hp_ipc_state::mmu_r) +{ + uint16_t data = (m_mmu[offset & 3] >> 10); + + return data; +} + WRITE16_MEMBER(hp_ipc_state::mmu_w) { - logerror("mmu_w: offset = %08x, data = %04x, register = %d, data_to_add = %08x\n", offset, data, offset & 3, (data & 0xFFF) << 10); m_mmu[offset & 3] = (data & 0xFFF) << 10; } +READ16_MEMBER(hp_ipc_state::mem_r) +{ + int fc = m_maincpu->get_fc() & 4; + + if (fc != m_fc) + { + m_fc = fc; + m_bankdev->set_bank(m_fc ? 0 : 1); + } + + return m_bankdev->read16(space, offset, mem_mask); +} + +WRITE16_MEMBER(hp_ipc_state::mem_w) +{ + int fc = m_maincpu->get_fc() & 4; + + if (fc != m_fc) + { + m_fc = fc; + m_bankdev->set_bank(m_fc ? 0 : 1); + } + + m_bankdev->write16(space, offset, data, mem_mask); +} + +READ16_MEMBER(hp_ipc_state::trap_r) +{ + if (!machine().side_effect_disabled()) set_bus_error((offset << 1) & 0xFFFFFF, 0, mem_mask); + + return 0xffff; +} + +WRITE16_MEMBER(hp_ipc_state::trap_w) +{ + if (!machine().side_effect_disabled()) set_bus_error((offset << 1) & 0xFFFFFF, 1, mem_mask); +} + READ16_MEMBER(hp_ipc_state::ram_r) { uint32_t ram_address = get_ram_address(offset); + uint16_t data = 0xffff; - //logerror("RAM read, offset = %08x, ram address = %08X\n", offset, ram_address); - - if (ram_address < 0x380000) + if (ram_address < m_lowest_ram_addr) { - // External RAM modules + if (!machine().side_effect_disabled()) set_bus_error((offset << 1) + 0x800000, 0, mem_mask); } else if (ram_address < 0x3c0000) { // Internal RAM - return m_internal_ram[offset & 0x3ffff]; + data = m_internal_ram[ram_address - m_lowest_ram_addr]; } - return 0xffff; -} + return data; +} WRITE16_MEMBER(hp_ipc_state::ram_w) { uint32_t ram_address = get_ram_address(offset); - //logerror("RAM write, offset = %08x, ram address = %08X, data = %04x\n", offset, ram_address, data); - - if (ram_address < 0x380000) + if (ram_address < m_lowest_ram_addr) { - // External RAM modules + if (!machine().side_effect_disabled()) set_bus_error((offset << 1) + 0x800000, 1, mem_mask); } else if (ram_address < 0x3c0000) { // Internal RAM - m_internal_ram[offset & 0x3ffff] = data; + COMBINE_DATA(&m_internal_ram[ram_address - m_lowest_ram_addr]); + } +} + + +/* + * bit 6 -- INTRQ + * bit 1 -- disk changed (from drive) + * bit 0 -- write protect (from drive) + */ +READ8_MEMBER(hp_ipc_state::floppy_id_r) +{ + uint8_t data = 0; + + data = (m_fdc->intrq_r() << 6); + + if (m_floppy) + { + data |= (m_fdc->intrq_r() << 6) | (m_floppy->dskchg_r() << 1) | m_floppy->wpt_r(); + } + + return data; +} + +/* + * bit 7 -- 1: motor on (via inverter to drive's /MTorOn) + * bit 3 -- 1: head 0, 0: head 1 (via inverter to drive's /SSO) + * bit 1 -- 1: drive select (via inverter to drive's /DRIVE SEL 1) + * bit 0 -- 1: reset disc_changed (via inverter to drive's /DSKRST) + */ +WRITE8_MEMBER(hp_ipc_state::floppy_id_w) +{ + floppy_image_device *floppy0 = m_fdc->subdevice("0")->get_device(); + + if (!BIT(data, 1)) + { + if (m_floppy == nullptr) + { + m_floppy = floppy0; + m_fdc->set_floppy(m_floppy); + } + } + else + { + m_floppy = nullptr; + } + + if (m_floppy) + { + m_floppy->ss_w(BIT(data, 3)); + m_floppy->mon_w(!BIT(data, 7)); + if (BIT(data, 0)) + m_floppy->dskchg_w(0); + } + else + { + floppy0->mon_w(1); } } -static MACHINE_CONFIG_START(hp_ipc, hp_ipc_state) - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M68000, 15920000 / 2) - MCFG_CPU_PROGRAM_MAP(hp_ipc_mem) +WRITE_LINE_MEMBER(hp_ipc_state::irq_1) +{ + m_maincpu->set_input_line_and_vector(M68K_IRQ_1, state, M68K_INT_ACK_AUTOVECTOR); +} + +WRITE_LINE_MEMBER(hp_ipc_state::irq_2) +{ + m_maincpu->set_input_line_and_vector(M68K_IRQ_2, state, M68K_INT_ACK_AUTOVECTOR); +} + +WRITE_LINE_MEMBER(hp_ipc_state::irq_3) +{ + m_maincpu->set_input_line_and_vector(M68K_IRQ_3, state, M68K_INT_ACK_AUTOVECTOR); +} + +WRITE_LINE_MEMBER(hp_ipc_state::irq_4) +{ + m_maincpu->set_input_line_and_vector(M68K_IRQ_4, state, M68K_INT_ACK_AUTOVECTOR); +} + +WRITE_LINE_MEMBER(hp_ipc_state::irq_5) +{ + m_maincpu->set_input_line_and_vector(M68K_IRQ_5, state, M68K_INT_ACK_AUTOVECTOR); +} + +WRITE_LINE_MEMBER(hp_ipc_state::irq_6) +{ + m_maincpu->set_input_line_and_vector(M68K_IRQ_6, state, M68K_INT_ACK_AUTOVECTOR); +} + +WRITE_LINE_MEMBER(hp_ipc_state::irq_7) +{ + m_maincpu->set_input_line_and_vector(M68K_IRQ_7, state, M68K_INT_ACK_AUTOVECTOR); +} + + +void hp_ipc_state::machine_start() +{ + m_bus_error_timer = timer_alloc(0); + + m_bankdev->set_bank(1); + + m_lowest_ram_addr = 0x3c0000 - (m_ram->size() >> 1); + m_internal_ram = (uint16_t *) m_ram->pointer(); +} + +void hp_ipc_state::machine_reset() +{ + m_floppy = nullptr; +} + + +FLOPPY_FORMATS_MEMBER( hp_ipc_state::floppy_formats ) + FLOPPY_HP_IPC_FORMAT +FLOPPY_FORMATS_END + +static SLOT_INTERFACE_START( hp_ipc_floppies ) + SLOT_INTERFACE( "35dd", SONY_OA_D32W ) +SLOT_INTERFACE_END + +/* + * IRQ levels (page 5-4) + * + * 7 Soft reset from keyboard, non-maskable + * 6 Real-time clock or NBIR3 (ext. I/O) + * 5 Disc Drive or NBIR2 + * 4 GPU or NBIR1 + * 3 HP-IB, printer, or NBIR0 + * 2 HP-HIL devices (keyboard, mouse) + * 1 Real-time clock + */ +static MACHINE_CONFIG_START(hp_ipc) + MCFG_CPU_ADD("maincpu", M68000, XTAL_15_92MHz / 2) + MCFG_CPU_PROGRAM_MAP(hp_ipc_mem_outer) + + MCFG_DEVICE_ADD("bankdev", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(hp_ipc_mem_inner) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(25) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x1000000) + + // horizontal time = 60 us (min) + // ver.refresh period = ~300 us + // ver.period = 16.7ms (~60 hz) + MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::amber()) + MCFG_SCREEN_UPDATE_DEVICE("gpu", hp1ll3_device, screen_update) + MCFG_SCREEN_RAW_PARAMS(XTAL_6MHz * 2, 720, 0, 512, 278, 0, 256) +// when _desktop == 0: +// MCFG_SCREEN_RAW_PARAMS(XTAL_6MHz * 2, 720, 0, 640, 480, 0, 400) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("mlc", hp_hil_mlc_device, ap_w)) // XXX actually it's driven by 555 (U59) + MCFG_DEFAULT_LAYOUT(layout_lcd) + + MCFG_SCREEN_PALETTE("palette") + MCFG_PALETTE_ADD_MONOCHROME("palette") + + MCFG_HP1LL3_ADD("gpu") +// MCFG_HP1LL3_IRQ_CALLBACK(WRITELINE(hp_ipc_state, irq_4)) + MCFG_VIDEO_SET_SCREEN("screen") + + // XXX actual clock is 1MHz; remove this workaround (and change 2000 to 100 in hp_ipc_dsk.cpp) + // XXX when floppy code correctly handles 600 rpm drives. + MCFG_WD2797_ADD("fdc", XTAL_2MHz) + MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(hp_ipc_state, irq_5)) + MCFG_FLOPPY_DRIVE_ADD("fdc:0", hp_ipc_floppies, "35dd", hp_ipc_state::floppy_formats) + + MCFG_SOFTWARE_LIST_ADD("flop_list","hp_ipc") + + MCFG_DEVICE_ADD("rtc", MM58167, XTAL_32_768kHz) + MCFG_MM58167_IRQ_CALLBACK(WRITELINE(hp_ipc_state, irq_1)) +// MCFG_MM58167_STANDBY_IRQ_CALLBACK(WRITELINE(hp_ipc_state, irq_6)) + + MCFG_DEVICE_ADD("mlc", HP_HIL_MLC, XTAL_15_92MHz/2) + MCFG_HP_HIL_INT_CALLBACK(WRITELINE(hp_ipc_state, irq_2)) + MCFG_HP_HIL_NMI_CALLBACK(WRITELINE(hp_ipc_state, irq_7)) + MCFG_HP_HIL_SLOT_ADD("mlc", "hil1", hp_hil_devices, "hp_ipc_kbd") + + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("512K") + MCFG_RAM_EXTRA_OPTIONS("768K,1M,1576K,2M,3M,4M,5M,6M,7M,7680K") MACHINE_CONFIG_END @@ -355,4 +767,4 @@ ROM_START(hp_ipc) ROM_END -COMP(1985, hp_ipc, 0, 0, hp_ipc, hp_ipc, driver_device, 0, "HP", "Integral Personal Computer", MACHINE_IS_SKELETON) +COMP(1985, hp_ipc, 0, 0, hp_ipc, hp_ipc, hp_ipc_state, 0, "HP", "Integral Personal Computer", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_KEYBOARD) diff --git a/src/mame/drivers/hprot1.cpp b/src/mame/drivers/hprot1.cpp index 188297ca4a5..56d9913e638 100644 --- a/src/mame/drivers/hprot1.cpp +++ b/src/mame/drivers/hprot1.cpp @@ -300,7 +300,7 @@ HD44780_PIXEL_UPDATE(hprot1_state::hprot1_pixel_update) } } -static MACHINE_CONFIG_START( hprot1, hprot1_state ) +static MACHINE_CONFIG_START( hprot1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C31, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(i80c31_prg) @@ -380,5 +380,5 @@ COMP( 2002, hprot1, 0, 0, hprot1, hprot1, hprot1_state, hprot1 COMP( 2006, hprotr8a, hprot1, 0, hprotr8a, hprotr8a, hprot1_state, hprot1, "HENRY", "Henry Prot CARD I (REV.08A)", MACHINE_NOT_WORKING) /* fw version: "V6.5QI I" Release date: September 18th, 2006. */ -COMP( 2003, hprot2r6, hprot1, 0, hprot2r6, hprot2r6, hprot1_state, hprot1, "HENRY", "Henry Prot CARD II (REV.6)", MACHINE_NOT_WORKING) +COMP( 2003, hprot2r6, hprot1, 0, hprot2r6, hprot2r6, hprot1_state, hprot1, "HENRY", "Henry Prot CARD II (REV.6)", MACHINE_NOT_WORKING) /* fw version: "V5.8CF II" Release date: June 23rd, 2003. */ diff --git a/src/mame/drivers/hpz80unk.cpp b/src/mame/drivers/hpz80unk.cpp index c84bcaa369f..4a6f78632d5 100644 --- a/src/mame/drivers/hpz80unk.cpp +++ b/src/mame/drivers/hpz80unk.cpp @@ -55,7 +55,7 @@ public: DECLARE_READ8_MEMBER(port03_r); DECLARE_READ8_MEMBER(port04_r); DECLARE_READ8_MEMBER(portfc_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); required_shared_ptr m_p_rom; uint8_t m_term_data; uint8_t m_port02_data; @@ -114,12 +114,12 @@ void hpz80unk_state::machine_reset() // this should be rom/ram banking } -WRITE8_MEMBER( hpz80unk_state::kbd_put ) +void hpz80unk_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( hpz80unk, hpz80unk_state ) +static MACHINE_CONFIG_START( hpz80unk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(hpz80unk_mem) @@ -127,7 +127,7 @@ static MACHINE_CONFIG_START( hpz80unk, hpz80unk_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(hpz80unk_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(hpz80unk_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -155,5 +155,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, hpz80unk, 0, 0, hpz80unk, hpz80unk, driver_device, 0, "Hewlett-Packard", "unknown Z80-based mainframe", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1977, hpz80unk, 0, 0, hpz80unk, hpz80unk, hpz80unk_state, 0, "Hewlett-Packard", "unknown Z80-based mainframe", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/ht68k.cpp b/src/mame/drivers/ht68k.cpp index 0a810999b29..900c70bcc2b 100644 --- a/src/mame/drivers/ht68k.cpp +++ b/src/mame/drivers/ht68k.cpp @@ -54,7 +54,7 @@ public: required_device m_maincpu; required_device m_duart; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_floppy2; @@ -73,7 +73,7 @@ static ADDRESS_MAP_START(ht68k_mem, AS_PROGRAM, 16, ht68k_state) AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("p_ram") // 512 KB RAM / ROM at boot //AM_RANGE(0x00080000, 0x000fffff) // Expansion //AM_RANGE(0x00d80000, 0x00d8ffff) // Printer - AM_RANGE(0x00e00000, 0x00e00007) AM_MIRROR(0xfff8) AM_DEVREADWRITE8("wd1770", wd1770_t, read, write, 0x00ff) // FDC WD1770 + AM_RANGE(0x00e00000, 0x00e00007) AM_MIRROR(0xfff8) AM_DEVREADWRITE8("wd1770", wd1770_device, read, write, 0x00ff) // FDC WD1770 AM_RANGE(0x00e80000, 0x00e800ff) AM_MIRROR(0xff00) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff ) AM_RANGE(0x00f00000, 0x00f07fff) AM_ROM AM_MIRROR(0xf8000) AM_REGION("user1",0) ADDRESS_MAP_END @@ -123,7 +123,7 @@ static SLOT_INTERFACE_START( ht68k_floppies ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( ht68k, ht68k_state ) +static MACHINE_CONFIG_START( ht68k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(ht68k_mem) @@ -158,5 +158,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, ht68k, 0, 0, ht68k, ht68k, driver_device, 0, "Hawthorne Technology", "TinyGiant HT68k", MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1987, ht68k, 0, 0, ht68k, ht68k, ht68k_state, 0, "Hawthorne Technology", "TinyGiant HT68k", MACHINE_NO_SOUND) diff --git a/src/mame/drivers/huebler.cpp b/src/mame/drivers/huebler.cpp index 60eb7e4ad31..13e77786de1 100644 --- a/src/mame/drivers/huebler.cpp +++ b/src/mame/drivers/huebler.cpp @@ -309,7 +309,7 @@ static GFXDECODE_START( amu880 ) GFXDECODE_END -static MACHINE_CONFIG_START( amu880, amu880_state ) +static MACHINE_CONFIG_START( amu880 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_10MHz/4) // U880D MCFG_CPU_PROGRAM_MAP(amu880_mem) @@ -378,5 +378,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, amu880, 0, 0, amu880, amu880, driver_device, 0, "Militaerverlag der DDR", "Ausbaufaehiger Mikrocomputer mit dem U 880", MACHINE_NO_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, amu880, 0, 0, amu880, amu880, amu880_state, 0, "Militaerverlag der DDR", "Ausbaufaehiger Mikrocomputer mit dem U 880", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/hunter2.cpp b/src/mame/drivers/hunter2.cpp index fa4c0713aad..5ea770d3db2 100644 --- a/src/mame/drivers/hunter2.cpp +++ b/src/mame/drivers/hunter2.cpp @@ -365,7 +365,7 @@ WRITE_LINE_MEMBER(hunter2_state::rxd_w) m_maincpu->set_input_line(NSC800_RSTB, ASSERT_LINE); } -static MACHINE_CONFIG_START( hunter2, hunter2_state ) +static MACHINE_CONFIG_START( hunter2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NSC800, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(hunter2_mem) @@ -442,5 +442,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS COMP( 1981, hunter2, 0, 0, hunter2, hunter2, hunter2_state, hunter2, "Husky", "Hunter 2", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/hvyunit.cpp b/src/mame/drivers/hvyunit.cpp index c88cfec5542..3dd8fb8f6c5 100644 --- a/src/mame/drivers/hvyunit.cpp +++ b/src/mame/drivers/hvyunit.cpp @@ -148,7 +148,7 @@ public: virtual void video_start() override; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); TIMER_DEVICE_CALLBACK_MEMBER(scanline); }; @@ -220,7 +220,7 @@ uint32_t hvyunit_state::screen_update(screen_device &screen, bitmap_ind16 &bitma return 0; } -void hvyunit_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(hvyunit_state::screen_vblank) { // rising edge if (state) @@ -644,7 +644,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(hvyunit_state::scanline) * *************************************/ -static MACHINE_CONFIG_START( hvyunit, hvyunit_state ) +static MACHINE_CONFIG_START( hvyunit ) MCFG_CPU_ADD("master", Z80, 6000000) MCFG_CPU_PROGRAM_MAP(master_memory) @@ -672,7 +672,7 @@ static MACHINE_CONFIG_START( hvyunit, hvyunit_state ) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1) MCFG_SCREEN_UPDATE_DRIVER(hvyunit_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(hvyunit_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(hvyunit_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", hvyunit) @@ -815,7 +815,7 @@ ROM_END * *************************************/ -GAME( 1988, hvyunit, 0, hvyunit, hvyunit, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hvyunitj, hvyunit, hvyunit, hvyunitj, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Newer)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hvyunitjo,hvyunit, hvyunit, hvyunitj, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Older)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hvyunitu, hvyunit, hvyunit, hvyunitj, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit -U.S.A. Version- (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hvyunit, 0, hvyunit, hvyunit, hvyunit_state, 0, ROT0, "Kaneko / Taito", "Heavy Unit (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hvyunitj, hvyunit, hvyunit, hvyunitj, hvyunit_state, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Newer)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hvyunitjo,hvyunit, hvyunit, hvyunitj, hvyunit_state, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Older)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hvyunitu, hvyunit, hvyunit, hvyunitj, hvyunit_state, 0, ROT0, "Kaneko / Taito", "Heavy Unit -U.S.A. Version- (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hx20.cpp b/src/mame/drivers/hx20.cpp index 6243512b079..6e14fcbdccc 100644 --- a/src/mame/drivers/hx20.cpp +++ b/src/mame/drivers/hx20.cpp @@ -817,7 +817,7 @@ void hx20_state::machine_start() // MACHINE_CONFIG( hx20 ) //------------------------------------------------- -static MACHINE_CONFIG_START( hx20, hx20_state ) +static MACHINE_CONFIG_START( hx20 ) // basic machine hardware MCFG_CPU_ADD(HD6301V1_MAIN_TAG, HD63701, XTAL_2_4576MHz) MCFG_CPU_PROGRAM_MAP(hx20_mem) @@ -920,6 +920,6 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1983, ehx20, 0, 0, hx20, hx20, driver_device, 0, "Epson", "Epson HX-20", MACHINE_NOT_WORKING ) -COMP( 1983, ehx20e, ehx20, 0, hx20, hx20e, driver_device, 0, "Epson", "Epson HX-20 (Europe)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, ehx20, 0, 0, hx20, hx20, hx20_state, 0, "Epson", "Epson HX-20", MACHINE_NOT_WORKING ) +COMP( 1983, ehx20e, ehx20, 0, hx20, hx20e, hx20_state, 0, "Epson", "Epson HX-20 (Europe)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/hyhoo.cpp b/src/mame/drivers/hyhoo.cpp index 9b5770f3682..e753ba0a1f6 100644 --- a/src/mame/drivers/hyhoo.cpp +++ b/src/mame/drivers/hyhoo.cpp @@ -224,7 +224,7 @@ static INPUT_PORTS_START( hyhoo2 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( hyhoo, hyhoo_state ) +static MACHINE_CONFIG_START( hyhoo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 5000000) /* 5.00 MHz ?? */ @@ -309,5 +309,5 @@ ROM_START( hyhoo2 ) ROM_END -GAME( 1987, hyhoo, 0, hyhoo, hyhoo, driver_device, 0, ROT90, "Nichibutsu", "Hayaoshi Taisen Quiz Hyhoo (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, hyhoo2, 0, hyhoo2, hyhoo2, driver_device, 0, ROT90, "Nichibutsu", "Hayaoshi Taisen Quiz Hyhoo 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, hyhoo, 0, hyhoo, hyhoo, hyhoo_state, 0, ROT90, "Nichibutsu", "Hayaoshi Taisen Quiz Hyhoo (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, hyhoo2, 0, hyhoo2, hyhoo2, hyhoo_state, 0, ROT90, "Nichibutsu", "Hayaoshi Taisen Quiz Hyhoo 2 (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hyperscan.cpp b/src/mame/drivers/hyperscan.cpp index ab9439b9449..91447a27ce3 100644 --- a/src/mame/drivers/hyperscan.cpp +++ b/src/mame/drivers/hyperscan.cpp @@ -79,7 +79,7 @@ public: DECLARE_READ32_MEMBER(spg290_regs_r); DECLARE_WRITE32_MEMBER(spg290_regs_w); void spg290_timers_update(); - void spg290_vblank_irq(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(spg290_vblank_irq); inline uint32_t spg290_read_mem(uint32_t offset); inline void spg290_write_mem(uint32_t offset, uint32_t data); void spg290_argb1555(bitmap_rgb32 &bitmap, const rectangle &cliprect, uint16_t posy, uint16_t posx, uint16_t argb); @@ -549,7 +549,7 @@ void hyperscan_state::spg290_timers_update() } } -void hyperscan_state::spg290_vblank_irq(screen_device &screen, bool state) +WRITE_LINE_MEMBER(hyperscan_state::spg290_vblank_irq) { if (state && m_ppu.irq_control & 0x01) // VBlanking Start IRQ { @@ -616,7 +616,7 @@ void hyperscan_state::machine_reset() } -static MACHINE_CONFIG_START( hyperscan, hyperscan_state ) +static MACHINE_CONFIG_START( hyperscan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SCORE7, XTAL_27MHz * 4) // 108MHz S+core 7 MCFG_CPU_PROGRAM_MAP(spg290_mem) @@ -628,7 +628,7 @@ static MACHINE_CONFIG_START( hyperscan, hyperscan_state ) MCFG_SCREEN_UPDATE_DRIVER(hyperscan_state, spg290_screen_update) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) - MCFG_SCREEN_VBLANK_DRIVER(hyperscan_state, spg290_vblank_irq) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(hyperscan_state, spg290_vblank_irq)) MACHINE_CONFIG_END @@ -644,5 +644,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 2006, hs, 0, 0, hyperscan , hyperscan , driver_device, 0, "Mattel", "HyperScan", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 2006, hs, 0, 0, hyperscan, hyperscan, hyperscan_state, 0, "Mattel", "HyperScan", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/hyperspt.cpp b/src/mame/drivers/hyperspt.cpp index b96ef7ed5ed..ce9f7df21ae 100644 --- a/src/mame/drivers/hyperspt.cpp +++ b/src/mame/drivers/hyperspt.cpp @@ -283,7 +283,7 @@ INTERRUPT_GEN_MEMBER(hyperspt_state::vblank_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( hyperspt, hyperspt_state ) +static MACHINE_CONFIG_START( hyperspt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI1, XTAL_18_432MHz/12) /* verified on pcb */ @@ -569,9 +569,9 @@ ROM_START( roadf3 ) // This hack was found on an original GX330 (Hyper Sports) P ROM_LOAD( "82s129.a9", 0x0120, 0x0100, CRC(5b3b5f2a) SHA1(e83556fba6d50ad20dff6e19bd300ba0c30cc6e2) ) // identical to a09_c29.bin ROM_END -GAME( 1984, hyperspt, 0, hyperspt, hyperspt, driver_device, 0, ROT0, "Konami (Centuri license)", "Hyper Sports", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, hypersptb, hyperspt, hypersptb, hyperspt, driver_device, 0, ROT0, "bootleg", "Hyper Sports (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // has ADPCM vis MSM5205 instead of VLM -GAME( 1984, hpolym84, hyperspt, hyperspt, hyperspt, driver_device, 0, ROT0, "Konami", "Hyper Olympic '84", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, roadf, 0, roadf, roadf, driver_device, 0, ROT90, "Konami", "Road Fighter (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, roadf2, roadf, roadf, roadf, driver_device, 0, ROT90, "Konami", "Road Fighter (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, roadf3, roadf, roadf, roadf, driver_device, 0, ROT90, "hack", "Road Fighter (set 3, conversion hack on Hyper Sports PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, hyperspt, 0, hyperspt, hyperspt, hyperspt_state, 0, ROT0, "Konami (Centuri license)", "Hyper Sports", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, hypersptb, hyperspt, hypersptb, hyperspt, hyperspt_state, 0, ROT0, "bootleg", "Hyper Sports (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // has ADPCM vis MSM5205 instead of VLM +GAME( 1984, hpolym84, hyperspt, hyperspt, hyperspt, hyperspt_state, 0, ROT0, "Konami", "Hyper Olympic '84", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, roadf, 0, roadf, roadf, hyperspt_state, 0, ROT90, "Konami", "Road Fighter (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, roadf2, roadf, roadf, roadf, hyperspt_state, 0, ROT90, "Konami", "Road Fighter (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, roadf3, roadf, roadf, roadf, hyperspt_state, 0, ROT90, "hack", "Road Fighter (set 3, conversion hack on Hyper Sports PCB)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hyprduel.cpp b/src/mame/drivers/hyprduel.cpp index 13c90e45ecd..e178b21a2b0 100644 --- a/src/mame/drivers/hyprduel.cpp +++ b/src/mame/drivers/hyprduel.cpp @@ -26,7 +26,7 @@ Imagetek Inc 14220 071 -- Written by Hau 03/29/2009 -based on driver from drivers/metro.c by Luca Elia +based on driver from drivers/metro.cpp by Luca Elia spthx to kikur,Cha,teioh,kokkyu,teruchu,aya,sgo --- @@ -63,7 +63,7 @@ TIMER_CALLBACK_MEMBER(hyprduel_state::vblank_end_callback) m_requested_int &= ~param; } -TIMER_DEVICE_CALLBACK_MEMBER(hyprduel_state::hyprduel_interrupt) +TIMER_DEVICE_CALLBACK_MEMBER(hyprduel_state::interrupt) { int line = param; @@ -73,7 +73,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(hyprduel_state::hyprduel_interrupt) m_requested_int |= 0x20; m_maincpu->set_input_line(2, HOLD_LINE); /* the duration is a guess */ - machine().scheduler().timer_set(attotime::from_usec(2500), timer_expired_delegate(FUNC(hyprduel_state::vblank_end_callback),this), 0x20); + m_vblank_end_timer->adjust(attotime::from_usec(2500), 0x20); } else m_requested_int |= 0x12; /* hsync */ @@ -81,12 +81,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(hyprduel_state::hyprduel_interrupt) update_irq_state(); } -READ16_MEMBER(hyprduel_state::hyprduel_irq_cause_r) +READ16_MEMBER(hyprduel_state::irq_cause_r) { return m_requested_int; } -WRITE16_MEMBER(hyprduel_state::hyprduel_irq_cause_w) +WRITE16_MEMBER(hyprduel_state::irq_cause_w) { if (ACCESSING_BITS_0_7) { @@ -100,7 +100,7 @@ WRITE16_MEMBER(hyprduel_state::hyprduel_irq_cause_w) } -WRITE16_MEMBER(hyprduel_state::hyprduel_subcpu_control_w) +WRITE16_MEMBER(hyprduel_state::subcpu_control_w) { switch (data) { @@ -200,7 +200,7 @@ TIMER_CALLBACK_MEMBER(hyprduel_state::magerror_irq_callback) that the blitter can readily use (which is a form of compression) */ -READ16_MEMBER(hyprduel_state::hyprduel_bankedrom_r) +READ16_MEMBER(hyprduel_state::bankedrom_r) { uint8_t *ROM = memregion("gfx1")->base(); size_t len = memregion("gfx1")->bytes(); @@ -257,7 +257,7 @@ READ16_MEMBER(hyprduel_state::hyprduel_bankedrom_r) ***************************************************************************/ -TIMER_CALLBACK_MEMBER(hyprduel_state::hyprduel_blit_done) +TIMER_CALLBACK_MEMBER(hyprduel_state::blit_done) { m_requested_int |= 1 << m_blitter_bit; update_irq_state(); @@ -272,15 +272,15 @@ void hyprduel_state::blt_write( address_space &space, const int tmap, const offs { switch( tmap ) { - case 1: hyprduel_vram_0_w(space, offs,data,mask); break; - case 2: hyprduel_vram_1_w(space, offs, data, mask); break; - case 3: hyprduel_vram_2_w(space, offs, data, mask); break; + case 1: vram_0_w(space, offs,data,mask); break; + case 2: vram_1_w(space, offs, data, mask); break; + case 3: vram_2_w(space, offs, data, mask); break; } // logerror("%s : Blitter %X] %04X <- %04X & %04X\n", space.machine().describe_context(), tmap, offs, data, mask); } -WRITE16_MEMBER(hyprduel_state::hyprduel_blitter_w) +WRITE16_MEMBER(hyprduel_state::blitter_w) { COMBINE_DATA(&m_blitter_regs[offset]); @@ -332,7 +332,7 @@ WRITE16_MEMBER(hyprduel_state::hyprduel_blitter_w) another blit. */ if (b1 == 0) { - machine().scheduler().timer_set(attotime::from_usec(500), timer_expired_delegate(FUNC(hyprduel_state::hyprduel_blit_done),this)); + m_blit_done_timer->adjust(attotime::from_usec(500)); return; } @@ -415,27 +415,27 @@ WRITE16_MEMBER(hyprduel_state::hyprduel_blitter_w) static ADDRESS_MAP_START( hyprduel_map, AS_PROGRAM, 16, hyprduel_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(hyprduel_vram_0_w) AM_SHARE("vram_0") /* Layer 0 */ - AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(hyprduel_vram_1_w) AM_SHARE("vram_1") /* Layer 1 */ - AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(hyprduel_vram_2_w) AM_SHARE("vram_2") /* Layer 2 */ - AM_RANGE(0x460000, 0x46ffff) AM_READ(hyprduel_bankedrom_r) /* Banked ROM */ - AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(hyprduel_paletteram_w) AM_SHARE("paletteram") /* Palette */ + AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") /* Layer 0 */ + AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") /* Layer 1 */ + AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram_2") /* Layer 2 */ + AM_RANGE(0x460000, 0x46ffff) AM_READ(bankedrom_r) /* Banked ROM */ + AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") /* Palette */ AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") /* Sprites */ AM_RANGE(0x475000, 0x477fff) AM_RAM /* only used memory test */ AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") /* Tiles Set */ - AM_RANGE(0x478840, 0x47884d) AM_WRITE(hyprduel_blitter_w) AM_SHARE("blitter_regs") /* Tiles Blitter */ - AM_RANGE(0x478860, 0x47886b) AM_WRITE(hyprduel_window_w) AM_SHARE("window") /* Tilemap Window */ - AM_RANGE(0x478870, 0x47887b) AM_RAM_WRITE(hyprduel_scrollreg_w) AM_SHARE("scroll") /* Scroll Regs */ - AM_RANGE(0x47887c, 0x47887d) AM_WRITE(hyprduel_scrollreg_init_w) + AM_RANGE(0x478840, 0x47884d) AM_WRITE(blitter_w) AM_SHARE("blitter_regs") /* Tiles Blitter */ + AM_RANGE(0x478860, 0x47886b) AM_WRITE(window_w) AM_SHARE("window") /* Tilemap Window */ + AM_RANGE(0x478870, 0x47887b) AM_RAM_WRITE(scrollreg_w) AM_SHARE("scroll") /* Scroll Regs */ + AM_RANGE(0x47887c, 0x47887d) AM_WRITE(scrollreg_init_w) AM_RANGE(0x478880, 0x478881) AM_WRITENOP AM_RANGE(0x478890, 0x478891) AM_WRITENOP AM_RANGE(0x4788a0, 0x4788a1) AM_WRITENOP - AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(hyprduel_irq_cause_r, hyprduel_irq_cause_w) /* IRQ Cause,Acknowledge */ + AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(irq_cause_r, irq_cause_w) /* IRQ Cause,Acknowledge */ AM_RANGE(0x4788a4, 0x4788a5) AM_RAM AM_SHARE("irq_enable") /* IRQ Enable */ AM_RANGE(0x4788aa, 0x4788ab) AM_RAM AM_SHARE("rombank") /* Rom Bank */ AM_RANGE(0x4788ac, 0x4788ad) AM_RAM AM_SHARE("screenctrl") /* Screen Control */ AM_RANGE(0x479700, 0x479713) AM_RAM AM_SHARE("videoregs") /* Video Registers */ - AM_RANGE(0x800000, 0x800001) AM_WRITE(hyprduel_subcpu_control_w) + AM_RANGE(0x800000, 0x800001) AM_WRITE(subcpu_control_w) AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE("sharedram1") AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("SERVICE") AM_WRITENOP AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW") @@ -461,23 +461,23 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( magerror_map, AS_PROGRAM, 16, hyprduel_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x400001) AM_WRITE(hyprduel_subcpu_control_w) - AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(hyprduel_vram_0_w) AM_SHARE("vram_0") /* Layer 0 */ - AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(hyprduel_vram_1_w) AM_SHARE("vram_1") /* Layer 1 */ - AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(hyprduel_vram_2_w) AM_SHARE("vram_2") /* Layer 2 */ - AM_RANGE(0x860000, 0x86ffff) AM_READ(hyprduel_bankedrom_r) /* Banked ROM */ - AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(hyprduel_paletteram_w) AM_SHARE("paletteram") /* Palette */ + AM_RANGE(0x400000, 0x400001) AM_WRITE(subcpu_control_w) + AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") /* Layer 0 */ + AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") /* Layer 1 */ + AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram_2") /* Layer 2 */ + AM_RANGE(0x860000, 0x86ffff) AM_READ(bankedrom_r) /* Banked ROM */ + AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") /* Palette */ AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") /* Sprites */ AM_RANGE(0x875000, 0x877fff) AM_RAM /* only used memory test */ AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") /* Tiles Set */ - AM_RANGE(0x878840, 0x87884d) AM_WRITE(hyprduel_blitter_w) AM_SHARE("blitter_regs") /* Tiles Blitter */ - AM_RANGE(0x878860, 0x87886b) AM_WRITE(hyprduel_window_w) AM_SHARE("window") /* Tilemap Window */ - AM_RANGE(0x878870, 0x87887b) AM_RAM_WRITE(hyprduel_scrollreg_w) AM_SHARE("scroll") /* Scroll Regs */ - AM_RANGE(0x87887c, 0x87887d) AM_WRITE(hyprduel_scrollreg_init_w) + AM_RANGE(0x878840, 0x87884d) AM_WRITE(blitter_w) AM_SHARE("blitter_regs") /* Tiles Blitter */ + AM_RANGE(0x878860, 0x87886b) AM_WRITE(window_w) AM_SHARE("window") /* Tilemap Window */ + AM_RANGE(0x878870, 0x87887b) AM_RAM_WRITE(scrollreg_w) AM_SHARE("scroll") /* Scroll Regs */ + AM_RANGE(0x87887c, 0x87887d) AM_WRITE(scrollreg_init_w) AM_RANGE(0x878880, 0x878881) AM_WRITENOP AM_RANGE(0x878890, 0x878891) AM_WRITENOP AM_RANGE(0x8788a0, 0x8788a1) AM_WRITENOP - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(hyprduel_irq_cause_r, hyprduel_irq_cause_w) /* IRQ Cause, Acknowledge */ + AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(irq_cause_r, irq_cause_w) /* IRQ Cause, Acknowledge */ AM_RANGE(0x8788a4, 0x8788a5) AM_RAM AM_SHARE("irq_enable") /* IRQ Enable */ AM_RANGE(0x8788aa, 0x8788ab) AM_RAM AM_SHARE("rombank") /* Rom Bank */ AM_RANGE(0x8788ac, 0x8788ad) AM_RAM AM_SHARE("screenctrl") /* Screen Control */ @@ -638,6 +638,9 @@ MACHINE_START_MEMBER(hyprduel_state,hyprduel) save_item(NAME(m_requested_int)); save_item(NAME(m_subcpu_resetline)); save_item(NAME(m_cpu_trigger)); + + m_blit_done_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hyprduel_state::blit_done), this)); + m_vblank_end_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hyprduel_state::vblank_end_callback), this)); } MACHINE_START_MEMBER(hyprduel_state,magerror) @@ -646,12 +649,12 @@ MACHINE_START_MEMBER(hyprduel_state,magerror) m_magerror_irq_timer->adjust(attotime::zero, 0, attotime::from_hz(968)); /* tempo? */ } -static MACHINE_CONFIG_START( hyprduel, hyprduel_state ) +static MACHINE_CONFIG_START( hyprduel ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,20000000/2) /* 10MHz */ MCFG_CPU_PROGRAM_MAP(hyprduel_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hyprduel_state, hyprduel_interrupt, "screen", 0, 1) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hyprduel_state, interrupt, "screen", 0, 1) MCFG_CPU_ADD("sub", M68000,20000000/2) /* 10MHz */ MCFG_CPU_PROGRAM_MAP(hyprduel_map2) @@ -665,7 +668,7 @@ static MACHINE_CONFIG_START( hyprduel, hyprduel_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(320, 224) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, FIRST_VISIBLE_LINE, LAST_VISIBLE_LINE) - MCFG_SCREEN_UPDATE_DRIVER(hyprduel_state, screen_update_hyprduel) + MCFG_SCREEN_UPDATE_DRIVER(hyprduel_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", 14220) @@ -681,18 +684,18 @@ static MACHINE_CONFIG_START( hyprduel, hyprduel_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) - MCFG_OKIM6295_ADD("oki", 4000000/16/16*132, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 4000000/16/16*132, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.57) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.57) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( magerror, hyprduel_state ) +static MACHINE_CONFIG_START( magerror ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,20000000/2) /* 10MHz */ MCFG_CPU_PROGRAM_MAP(magerror_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hyprduel_state, hyprduel_interrupt, "screen", 0, 1) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hyprduel_state, interrupt, "screen", 0, 1) MCFG_CPU_ADD("sub", M68000,20000000/2) /* 10MHz */ MCFG_CPU_PROGRAM_MAP(magerror_map2) @@ -706,7 +709,7 @@ static MACHINE_CONFIG_START( magerror, hyprduel_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(320, 224) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, FIRST_VISIBLE_LINE, LAST_VISIBLE_LINE) - MCFG_SCREEN_UPDATE_DRIVER(hyprduel_state, screen_update_hyprduel) + MCFG_SCREEN_UPDATE_DRIVER(hyprduel_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", 14220) @@ -721,7 +724,7 @@ static MACHINE_CONFIG_START( magerror, hyprduel_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) - MCFG_OKIM6295_ADD("oki", 4000000/16/16*132, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 4000000/16/16*132, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.57) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.57) MACHINE_CONFIG_END diff --git a/src/mame/drivers/i7000.cpp b/src/mame/drivers/i7000.cpp index 1d0b7d77ca4..f8c38bdf255 100644 --- a/src/mame/drivers/i7000.cpp +++ b/src/mame/drivers/i7000.cpp @@ -32,11 +32,11 @@ - 4 internal expansion slots * Ports: - 1 composite video output for a color monitor - - 2 cassete interfaces + - 2 cassette interfaces - 1 RS-232C serial port - 1 parallel interface * Storage: - - Cassetes recorder + - Cassette recorder - Up to 4 external floppy drives: 8" (FD/DD, 1,1MB) or 5" 1/4 - Up to 1 external 10 MB hard-drive @@ -44,6 +44,7 @@ #include "emu.h" #include "bus/generic/carts.h" +#include "bus/generic/slot.h" #include "cpu/z80/z80.h" //CPU was actually a NSC800 (Z80 compatible) #include "machine/i8279.h" #include "machine/pit8253.h" @@ -331,7 +332,7 @@ MC6845_ON_UPDATE_ADDR_CHANGED(i7000_state::crtc_addr) } -static MACHINE_CONFIG_START( i7000, i7000_state ) +static MACHINE_CONFIG_START( i7000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NSC800, XTAL_4MHz) @@ -414,5 +415,5 @@ ROM_START( i7000 ) ROM_LOAD( "i7000_telex_ci09.rom", 0x0000, 0x1000, CRC(c1c8fcc8) SHA1(cbf5fb600e587b998f190a9e3fb398a51d8a5e87) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS COMP( 1982, i7000, 0, 0, i7000, i7000, i7000_state, i7000, "Itautec", "I-7000", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/ibm3153.cpp b/src/mame/drivers/ibm3153.cpp index d5e0e0225b0..92d66ff8fea 100644 --- a/src/mame/drivers/ibm3153.cpp +++ b/src/mame/drivers/ibm3153.cpp @@ -93,7 +93,7 @@ void ibm3153_state::machine_reset() { } -static MACHINE_CONFIG_START( ibm3153, ibm3153_state ) +static MACHINE_CONFIG_START( ibm3153 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C32, XTAL_16MHz) // no idea of clock MCFG_CPU_PROGRAM_MAP(ibm3153_mem) @@ -123,5 +123,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1999?, ibm3153, 0, 0, ibm3153, ibm3153, driver_device, 0, "IBM", "IBM 3153 Terminal", MACHINE_IS_SKELETON) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1999?, ibm3153, 0, 0, ibm3153, ibm3153, ibm3153_state, 0, "IBM", "IBM 3153 Terminal", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/ibm6580.cpp b/src/mame/drivers/ibm6580.cpp index 97b3cd07d45..b88d7feb381 100644 --- a/src/mame/drivers/ibm6580.cpp +++ b/src/mame/drivers/ibm6580.cpp @@ -93,6 +93,7 @@ Displaywriter System Manual S544-2023-0 (?) -- mentioned in US patents 4648071 a #include "machine/pit8253.h" #include "machine/ibm6580_kbd.h" //nclude "machine/ibm6580_fdc.h" +#include "machine/ram.h" #include "machine/upd765.h" #include "screen.h" @@ -134,6 +135,7 @@ public: ibm6580_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_p_videoram(*this, "videoram") + , m_ram(*this, RAM_TAG) , m_maincpu(*this, "maincpu") , m_pic8259(*this, "pic8259") , m_pit8253(*this, "pit8253") @@ -157,7 +159,7 @@ public: DECLARE_WRITE8_MEMBER(video_w); DECLARE_READ8_MEMBER(video_r); - void vblank_w(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(vblank_w); DECLARE_READ8_MEMBER(ppi_a_r); DECLARE_WRITE8_MEMBER(led_w); @@ -200,6 +202,7 @@ private: bool floppy_mcu_cr_full(); required_shared_ptr m_p_videoram; + required_device m_ram; required_device m_maincpu; required_device m_pic8259; required_device m_pit8253; @@ -316,7 +319,7 @@ READ8_MEMBER(ibm6580_state::video_r) return data; } -void ibm6580_state::vblank_w(screen_device &screen, bool state) +WRITE_LINE_MEMBER(ibm6580_state::vblank_w) { // if (state) // m_pic8259->ir6_w(state); @@ -474,11 +477,6 @@ WRITE_LINE_MEMBER(ibm6580_state::floppy_intrq) m_floppy_idle = true; } -WRITE_LINE_MEMBER(ibm6580_state::floppy_hdl) -{ - m_floppy_hdl = !state; -} - WRITE_LINE_MEMBER(ibm6580_state::hrq_w) { m_maincpu->set_input_line(INPUT_LINE_HALT, state); @@ -648,6 +646,7 @@ READ8_MEMBER(ibm6580_state::floppy_r) case 5: // 815a data = m_fdc->fifo_r(space, offset); + break; case 6: // 815c if (!m_floppy_mcu_sr.empty()) @@ -680,7 +679,6 @@ READ8_MEMBER(ibm6580_state::floppy_r) static ADDRESS_MAP_START(ibm6580_mem, AS_PROGRAM, 16, ibm6580_state) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x3ffff) AM_RAM // system RAM AM_RANGE(0x90000, 0x90001) AM_WRITE(unk_latch_w) AM_RANGE(0xef000, 0xeffff) AM_RAM AM_SHARE("videoram") // 66-line vram starts at 0xec000 AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1", 0) @@ -688,10 +686,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(ibm6580_io, AS_IO, 16, ibm6580_state) ADDRESS_MAP_UNMAP_HIGH -// -// AM_RANGE(0x0028, 0x0028) AM_DEVREADWRITE8("upd8251", i8251_device, data_r, data_w) -// AM_RANGE(0x0029, 0x0029) AM_DEVREADWRITE8("upd8251", i8251_device, status_r, control_w) -// AM_RANGE(0x0000, 0x0007) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff) AM_RANGE(0x0008, 0x000f) AM_WRITE (pic_latch_w) AM_RANGE(0x0010, 0x0017) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff) @@ -699,8 +693,10 @@ static ADDRESS_MAP_START(ibm6580_io, AS_IO, 16, ibm6580_state) AM_RANGE(0x0040, 0x005f) AM_READWRITE8(p40_r, p40_w, 0x00ff) AM_RANGE(0x0070, 0x007f) AM_UNMAP AM_RANGE(0x0120, 0x0127) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff) - AM_RANGE(0x0140, 0x014f) AM_UNMAP - AM_RANGE(0x0160, 0x016f) AM_UNMAP + AM_RANGE(0x0140, 0x0141) AM_DEVREADWRITE8("upd8251a", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x0142, 0x0143) AM_DEVREADWRITE8("upd8251a", i8251_device, status_r, control_w, 0x00ff) + AM_RANGE(0x0160, 0x0161) AM_DEVREADWRITE8("upd8251b", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0x0162, 0x0163) AM_DEVREADWRITE8("upd8251b", i8251_device, status_r, control_w, 0x00ff) AM_RANGE(0x4000, 0x400f) AM_UNMAP AM_RANGE(0x5000, 0x500f) AM_UNMAP AM_RANGE(0x6000, 0x601f) AM_UNMAP @@ -841,7 +837,12 @@ PALETTE_INIT_MEMBER( ibm6580_state, ibm6580 ) void ibm6580_state::machine_start() { - m_fdc->set_rate(500000); + address_space &program = m_maincpu->space(AS_PROGRAM); + + program.install_readwrite_bank(0, m_ram->size() - 1, "bank10"); + membank("bank10")->set_base(m_ram->pointer()); + + m_fdc->set_rate(500000); // XXX workaround } void ibm6580_state::machine_reset() @@ -869,29 +870,25 @@ void ibm6580_state::video_start() memset(m_p_videoram, 0x0, 0x1000); } -FLOPPY_FORMATS_MEMBER( ibm6580_state::floppy_formats ) - FLOPPY_HFE_FORMAT, - FLOPPY_IPF_FORMAT, - FLOPPY_MFI_FORMAT, - FLOPPY_TD0_FORMAT, - FLOPPY_IMD_FORMAT -FLOPPY_FORMATS_END0 - static SLOT_INTERFACE_START( dw_floppies ) SLOT_INTERFACE( "8sssd", IBM_6360 ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( ibm6580, ibm6580_state ) +static MACHINE_CONFIG_START( ibm6580 ) MCFG_CPU_ADD("maincpu", I8086, XTAL_14_7456MHz/3) MCFG_CPU_PROGRAM_MAP(ibm6580_mem) MCFG_CPU_IO_MAP(ibm6580_io) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb) + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("128K") + MCFG_RAM_EXTRA_OPTIONS("160K,192K,224K,256K,320K,384K") + MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_25MHz/2, 833, 0, 640, 428, 0, 400) MCFG_SCREEN_UPDATE_DRIVER(ibm6580_state, screen_update) MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_DRIVER(ibm6580_state, vblank_w) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ibm6580_state, vblank_w)) MCFG_DEFAULT_LAYOUT(layout_ibm6580) MCFG_PALETTE_ADD("palette", 3) @@ -925,9 +922,32 @@ static MACHINE_CONFIG_START( ibm6580, ibm6580_state ) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(ibm6580_state, floppy_intrq)) // MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("pic8259", pic8259_device, ir4_w)) MCFG_UPD765_DRQ_CALLBACK(DEVWRITELINE("dma8257", i8257_device, dreq0_w)) -// MCFG_UPD765_HDL_CALLBACK(WRITELINE(ibm6580_state, floppy_hdl)) - MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", dw_floppies, "8sssd", ibm6580_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", dw_floppies, "8sssd", ibm6580_state::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats) + + MCFG_DEVICE_ADD( "upd8251a", I8251, 0) + MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232a", rs232_port_device, write_txd)) + MCFG_I8251_DTR_HANDLER(DEVWRITELINE("rs232a", rs232_port_device, write_dtr)) + MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232a", rs232_port_device, write_rts)) + MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir2_w)) + MCFG_I8251_TXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir2_w)) + + MCFG_RS232_PORT_ADD("rs232a", default_rs232_devices, nullptr) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("upd8251a", i8251_device, write_rxd)) + MCFG_RS232_DSR_HANDLER(DEVWRITELINE("upd8251a", i8251_device, write_dsr)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("upd8251a", i8251_device, write_cts)) + + MCFG_DEVICE_ADD( "upd8251b", I8251, 0) + MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232b", rs232_port_device, write_txd)) + MCFG_I8251_DTR_HANDLER(DEVWRITELINE("rs232b", rs232_port_device, write_dtr)) + MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232b", rs232_port_device, write_rts)) + MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir2_w)) + MCFG_I8251_TXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir2_w)) + + MCFG_RS232_PORT_ADD("rs232b", default_rs232_devices, nullptr) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("upd8251b", i8251_device, write_rxd)) + MCFG_RS232_DSR_HANDLER(DEVWRITELINE("upd8251b", i8251_device, write_dsr)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("upd8251b", i8251_device, write_cts)) MCFG_SOFTWARE_LIST_ADD("flop_list", "ibm6580") MACHINE_CONFIG_END @@ -937,11 +957,11 @@ ROM_START( ibm6580 ) ROM_REGION16_LE( 0x4000, "user1", 0 ) ROM_DEFAULT_BIOS("old") - ROM_SYSTEM_BIOS(0, "old", "old bios") + ROM_SYSTEM_BIOS(0, "old", "old bios - 1981") ROMX_LOAD("8493823_8K.BIN", 0x0001, 0x2000, CRC(aa5524c0) SHA1(9938f2a82828b17966cb0be7fdbf73803c1f10d3),ROM_SKIP(1)|ROM_BIOS(1)) ROMX_LOAD("8493822_8K.BIN", 0x0000, 0x2000, CRC(90e7e73a) SHA1(d3ee7a4d2cb8f4920b5d95e8c7f4fef06599d24e),ROM_SKIP(1)|ROM_BIOS(1)) - ROM_SYSTEM_BIOS(1, "new", "new bios") + ROM_SYSTEM_BIOS(1, "new", "new bios - 1983?") // was downloaded via DDT86 ROMX_LOAD( "DWROM16KB.bin", 0x0000, 0x4000, BAD_DUMP CRC(ced87929) SHA1(907a46f288809bc93a1f59f3fbef18bd44be42d9),ROM_BIOS(2)) @@ -951,5 +971,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, ibm6580, 0, 0, ibm6580, ibm6580, driver_device, 0, "IBM", "IBM 6580 Displaywriter", MACHINE_IS_SKELETON) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1980, ibm6580, 0, 0, ibm6580, ibm6580, ibm6580_state, 0, "IBM", "IBM 6580 Displaywriter", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/ibmpc.cpp b/src/mame/drivers/ibmpc.cpp index 0e3db41f1eb..01f9aa926b3 100644 --- a/src/mame/drivers/ibmpc.cpp +++ b/src/mame/drivers/ibmpc.cpp @@ -286,7 +286,7 @@ static DEVICE_INPUT_DEFAULTS_START(cga) DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x20) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( ibm5150, ibmpc_state ) +static MACHINE_CONFIG_START( ibm5150 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, XTAL_14_31818MHz/3) MCFG_CPU_PROGRAM_MAP(pc8_map) @@ -323,7 +323,7 @@ static MACHINE_CONFIG_DERIVED( ibm5140, ibm5150 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ibm5160, ibmpc_state ) +static MACHINE_CONFIG_START( ibm5160 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, XTAL_14_31818MHz/3) MCFG_CPU_PROGRAM_MAP(pc8_map) @@ -555,8 +555,8 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1981, ibm5150, 0, 0, ibm5150, 0, driver_device, 0, "International Business Machines", "IBM PC 5150" , 0) -COMP( 1982, ibm5155, ibm5150, 0, ibm5150, 0, driver_device, 0, "International Business Machines", "IBM PC 5155" , 0) -COMP( 1985, ibm5140, ibm5150, 0, ibm5140, 0, driver_device, 0, "International Business Machines", "IBM PC 5140 Convertible" , MACHINE_NOT_WORKING) -COMP( 1982, ibm5160, ibm5150, 0, ibm5160, 0, driver_device, 0, "International Business Machines", "IBM XT 5160" , 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, ibm5150, 0, 0, ibm5150, 0, ibmpc_state, 0, "International Business Machines", "IBM PC 5150", 0 ) +COMP( 1982, ibm5155, ibm5150, 0, ibm5150, 0, ibmpc_state, 0, "International Business Machines", "IBM PC 5155", 0 ) +COMP( 1985, ibm5140, ibm5150, 0, ibm5140, 0, ibmpc_state, 0, "International Business Machines", "IBM PC 5140 Convertible", MACHINE_NOT_WORKING ) +COMP( 1982, ibm5160, ibm5150, 0, ibm5160, 0, ibmpc_state, 0, "International Business Machines", "IBM XT 5160", 0 ) diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp index de7382b4a2d..5e211507869 100644 --- a/src/mame/drivers/ibmpcjr.cpp +++ b/src/mame/drivers/ibmpcjr.cpp @@ -575,7 +575,7 @@ static ADDRESS_MAP_START(ibmpcjx_io, AS_IO, 8, pcjr_state) AM_IMPORT_FROM( ibmpcjr_io ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( ibmpcjr, pcjr_state) +static MACHINE_CONFIG_START( ibmpcjr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, 4900000) MCFG_CPU_PROGRAM_MAP(ibmpcjr_map) @@ -713,7 +713,7 @@ ROM_START( ibmpcjx ) ROM_LOAD("kanji.rom", 0x00000, 0x38000, BAD_DUMP CRC(eaa6e3c3) SHA1(35554587d02d947fae8446964b1886fff5c9d67f)) // hand-made rom ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS // pcjr COMP( 1983, ibmpcjr, ibm5150, 0, ibmpcjr, ibmpcjr, pcjr_state, pcjr, "International Business Machines", "IBM PC Jr", MACHINE_IMPERFECT_COLORS ) COMP( 1985, ibmpcjx, ibm5150, 0, ibmpcjx, ibmpcjr, pcjr_state, pcjr, "International Business Machines", "IBM PC JX", MACHINE_IMPERFECT_COLORS | MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/icatel.cpp b/src/mame/drivers/icatel.cpp index 240fce9f9fa..c172f16cb04 100644 --- a/src/mame/drivers/icatel.cpp +++ b/src/mame/drivers/icatel.cpp @@ -239,7 +239,7 @@ HD44780_PIXEL_UPDATE(icatel_state::icatel_pixel_update) } } -static MACHINE_CONFIG_START( icatel, icatel_state ) +static MACHINE_CONFIG_START( icatel ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C31, XTAL_2_097152MHz) MCFG_CPU_PROGRAM_MAP(i80c31_prg) @@ -270,6 +270,6 @@ ROM_START( icatel ) ROM_LOAD( "icatel_tpci_em._4_v16.05.ci14", 0x00000, 0x8000, CRC(d310586e) SHA1(21736ad5a06cf9695f8cc5ff2dc2d19b101504f5) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1995, icatel, 0, 0, icatel, 0, icatel_state, icatel, "Icatel", "TPCI (Brazilian public payphone)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1995, icatel, 0, 0, icatel, 0, icatel_state, icatel, "Icatel", "TPCI (Brazilian public payphone)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) /*The hardware was clearly manufactured in 1995. There's no evindence of the actual date of the firmware.*/ diff --git a/src/mame/drivers/ice_bozopail.cpp b/src/mame/drivers/ice_bozopail.cpp index 76320a23b22..fe0df02664c 100644 --- a/src/mame/drivers/ice_bozopail.cpp +++ b/src/mame/drivers/ice_bozopail.cpp @@ -20,10 +20,10 @@ http://www.highwaygames.com/arcade-machines/bozo-s-grand-prize-game-6751/ #include "emu.h" #include "speaker.h" -class ice_bozopail : public driver_device +class ice_bozopail_state : public driver_device { public: - ice_bozopail(const machine_config &mconfig, device_type type, const char *tag) + ice_bozopail_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) // ,m_maincpu(*this, "maincpu") { } @@ -39,16 +39,16 @@ INPUT_PORTS_END -void ice_bozopail::machine_start() +void ice_bozopail_state::machine_start() { } -void ice_bozopail::machine_reset() +void ice_bozopail_state::machine_reset() { } -static MACHINE_CONFIG_START( ice_bozoice_bozo, ice_bozopail ) +static MACHINE_CONFIG_START( ice_bozoice_bozo ) /* basic machine hardware */ // MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown @@ -67,4 +67,4 @@ ROM_START( ice_bozo ) ROM_LOAD( "ICE-BOZO.U9", 0x100000, 0x100000, CRC(26fd9d60) SHA1(41fe8d42db1eb16b413bd5a0f16bf0d081c3cc97) ) ROM_END -GAME( 1997?, ice_bozo, 0, ice_bozoice_bozo, ice_bozoice_bozo, driver_device, 0, ROT0, "Innovative Creations in Entertainment", "Bozo's Pail Toss (v2.07)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1997?, ice_bozo, 0, ice_bozoice_bozo, ice_bozoice_bozo, ice_bozopail_state, 0, ROT0, "Innovative Creations in Entertainment", "Bozo's Pail Toss (v2.07)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/ice_tbd.cpp b/src/mame/drivers/ice_tbd.cpp index 1d5fada7d9d..6f1aa892198 100644 --- a/src/mame/drivers/ice_tbd.cpp +++ b/src/mame/drivers/ice_tbd.cpp @@ -25,8 +25,8 @@ class ice_tbd_state : public driver_device public: ice_tbd_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) - ,m_maincpu(*this, "maincpu") - { } + , m_maincpu(*this, "maincpu") + { } virtual void machine_start() override; virtual void machine_reset() override; @@ -51,7 +51,7 @@ void ice_tbd_state::machine_reset() { } -static MACHINE_CONFIG_START( ice_tbd, ice_tbd_state ) +static MACHINE_CONFIG_START( ice_tbd ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,8000000) /* ? MHz */ @@ -66,4 +66,4 @@ ROM_START( ice_tbd ) ROM_END -GAME( 1988, ice_tbd, 0, ice_tbd, ice_tbd, driver_device, 0, ROT0, "Innovative Creations in Entertainment", "Turbo Drive (ICE)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1988, ice_tbd, 0, ice_tbd, ice_tbd, ice_tbd_state, 0, ROT0, "Innovative Creations in Entertainment", "Turbo Drive (ICE)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/icecold.cpp b/src/mame/drivers/icecold.cpp index 4071226bf82..de83b8e417e 100644 --- a/src/mame/drivers/icecold.cpp +++ b/src/mame/drivers/icecold.cpp @@ -329,7 +329,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(icecold_state::icecold_motors_timer) } } -static MACHINE_CONFIG_START( icecold, icecold_state ) +static MACHINE_CONFIG_START( icecold ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_6MHz/4) @@ -399,5 +399,5 @@ ROM_START(zekepeak) ROM_END -GAME(1983, icecold, 0, icecold, icecold, driver_device, 0, ROT0, "Taito", "Ice Cold Beer", MACHINE_NOT_WORKING | MACHINE_MECHANICAL) -GAME(1983, zekepeak, icecold, icecold, icecold, driver_device, 0, ROT0, "Taito", "Zeke's Peak", MACHINE_NOT_WORKING | MACHINE_MECHANICAL) +GAME(1983, icecold, 0, icecold, icecold, icecold_state, 0, ROT0, "Taito", "Ice Cold Beer", MACHINE_NOT_WORKING | MACHINE_MECHANICAL) +GAME(1983, zekepeak, icecold, icecold, icecold, icecold_state, 0, ROT0, "Taito", "Zeke's Peak", MACHINE_NOT_WORKING | MACHINE_MECHANICAL) diff --git a/src/mame/drivers/ichiban.cpp b/src/mame/drivers/ichiban.cpp index a73da32455d..43fe1b3449f 100644 --- a/src/mame/drivers/ichiban.cpp +++ b/src/mame/drivers/ichiban.cpp @@ -115,7 +115,7 @@ void ichibanjyan_state::machine_reset() } -static MACHINE_CONFIG_START( ichibanjyan, ichibanjyan_state ) +static MACHINE_CONFIG_START( ichibanjyan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,MAIN_CLOCK/3) @@ -167,4 +167,4 @@ ROM_START( ichiban ) ROM_LOAD( "mjb.u38", 0x400, 0x200, CRC(0ef881cb) SHA1(44b61a443d683f5cb2d1b1a4f74d8a8f41021de5) ) ROM_END -GAME( 199?, ichiban, 0, ichibanjyan, ichibanjyan, driver_device, 0, ROT0, "Excel", "Ichi Ban Jyan", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 199?, ichiban, 0, ichibanjyan, ichibanjyan, ichibanjyan_state, 0, ROT0, "Excel", "Ichi Ban Jyan", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/idsa.cpp b/src/mame/drivers/idsa.cpp index d297f837a2c..60e4f61e149 100644 --- a/src/mame/drivers/idsa.cpp +++ b/src/mame/drivers/idsa.cpp @@ -263,7 +263,7 @@ void idsa_state::machine_reset() m_irqcnt = 0; } -static MACHINE_CONFIG_START( idsa, idsa_state ) +static MACHINE_CONFIG_START( idsa ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz / 2) MCFG_CPU_PROGRAM_MAP(maincpu_map) @@ -308,5 +308,5 @@ ROM_START(bsktbllp) ROM_END -GAME( 1985, v1, 0, idsa, idsa, driver_device, 0, ROT0, "IDSA", "V.1", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, bsktbllp, 0, idsa, idsa, driver_device, 0, ROT0, "IDSA", "Basket Ball", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1985, v1, 0, idsa, idsa, idsa_state, 0, ROT0, "IDSA", "V.1", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, bsktbllp, 0, idsa, idsa, idsa_state, 0, ROT0, "IDSA", "Basket Ball", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/ie15.cpp b/src/mame/drivers/ie15.cpp index ac4bb501d65..96ced86bd46 100644 --- a/src/mame/drivers/ie15.cpp +++ b/src/mame/drivers/ie15.cpp @@ -14,684 +14,28 @@ #include "emu.h" #include "machine/ie15_kbd.h" +#include "machine/ie15.h" -#include "bus/rs232/rs232.h" -#include "cpu/ie15/ie15.h" -#include "sound/beep.h" -#include "screen.h" -#include "speaker.h" -#include "ie15.lh" - - -#define SCREEN_PAGE (80*48) - -#define IE_TRUE 0x80 -#define IE_FALSE 0 - -#define IE15_TOTAL_HORZ 1000 -#define IE15_DISP_HORZ 800 -#define IE15_HORZ_START 200 - -#define IE15_TOTAL_VERT (28*11) -#define IE15_DISP_VERT (25*11) -#define IE15_VERT_START (2*11) -#define IE15_STATUSLINE 11 - - -#define VERBOSE_DBG 1 /* general debug messages */ - -#define DBG_LOG(N,M,A) \ - do { \ - if(VERBOSE_DBG>=N) \ - { \ - if( M ) \ - logerror("%11.6f at %s: %-24s",machine().time().as_double(),machine().describe_context(),(char*)M ); \ - logerror A; \ - } \ - } while (0) - - -class ie15_state : public driver_device, - public device_serial_interface +class ie15_state : public driver_device { public: - ie15_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , device_serial_interface(mconfig, *this) - , m_maincpu(*this, "maincpu") - , m_p_videoram(*this, "video") - , m_p_chargen(*this, "chargen") - , m_beeper(*this, "beeper") - , m_rs232(*this, "rs232") - , m_screen(*this, "screen") - , m_io_keyboard(*this, "keyboard") + ie15_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_ie15(*this, "ie15") { } - DECLARE_WRITE16_MEMBER( kbd_put ); - DECLARE_WRITE_LINE_MEMBER( serial_rx_callback ); - DECLARE_WRITE8_MEMBER( mem_w ); - DECLARE_READ8_MEMBER( mem_r ); - DECLARE_WRITE8_MEMBER( mem_addr_lo_w ); - DECLARE_WRITE8_MEMBER( mem_addr_hi_w ); - DECLARE_WRITE8_MEMBER( mem_addr_inc_w ); - DECLARE_WRITE8_MEMBER( mem_addr_dec_w ); - DECLARE_READ8_MEMBER( flag_r ); - DECLARE_WRITE8_MEMBER( flag_w ); - DECLARE_WRITE8_MEMBER( beep_w ); - DECLARE_READ8_MEMBER( kb_r ); - DECLARE_READ8_MEMBER( kb_ready_r ); - DECLARE_READ8_MEMBER( kb_s_red_r ); - DECLARE_READ8_MEMBER( kb_s_sdv_r ); - DECLARE_READ8_MEMBER( kb_s_dk_r ); - DECLARE_READ8_MEMBER( kb_s_dupl_r ); - DECLARE_READ8_MEMBER( kb_s_lin_r ); - DECLARE_WRITE8_MEMBER( kb_ready_w ); - DECLARE_READ8_MEMBER( serial_tx_ready_r ); - DECLARE_WRITE8_MEMBER( serial_w ); - DECLARE_READ8_MEMBER( serial_rx_ready_r ); - DECLARE_READ8_MEMBER( serial_r ); - DECLARE_WRITE8_MEMBER( serial_speed_w ); - DECLARE_PALETTE_INIT( ie15 ); - TIMER_CALLBACK_MEMBER(ie15_beepoff); - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - -private: - static const device_timer_id TIMER_HBLANK = 0; - void scanline_callback(); - void update_leds(); - void draw_scanline(uint32_t *p, uint16_t offset, uint8_t scanline); - std::unique_ptr m_tmpbmp; - - emu_timer *m_hblank_timer; - - uint8_t m_long_beep; - uint8_t m_kb_control; - uint8_t m_kb_data; - uint8_t m_kb_flag0; - uint8_t m_kb_flag; - uint8_t m_kb_ruslat; - uint8_t m_latch; - - struct { - uint8_t cursor; - uint8_t enable; - uint8_t line25; - uint32_t ptr1; - uint32_t ptr2; - } m_video; - - uint8_t m_serial_rx_ready; - uint8_t m_serial_tx_ready; - int m_hblank; - int m_vpos; - int m_marker_scanline; - - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - virtual void rcv_complete() override; - virtual void tra_callback() override; - virtual void tra_complete() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - - required_device m_maincpu; - required_region_ptr m_p_videoram; - required_region_ptr m_p_chargen; - required_device m_beeper; - required_device m_rs232; - required_device m_screen; - required_ioport m_io_keyboard; + required_device m_ie15; }; -READ8_MEMBER( ie15_state::mem_r ) { - uint8_t ret; - - ret = m_p_videoram[m_video.ptr1]; - if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0 && m_video.ptr1 >= SCREEN_PAGE) - { - DBG_LOG(2,"memory",("R @ %03x == %02x\n", m_video.ptr1, ret)); - } - m_video.ptr1++; - m_video.ptr1 &= 0xfff; - m_latch = 0; - return ret; -} - -WRITE8_MEMBER( ie15_state::mem_w ) { - if ((m_latch ^= 1) == 0) { - if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0 && m_video.ptr1 >= SCREEN_PAGE) - { - DBG_LOG(2,"memory",("W @ %03x <- %02x\n", m_video.ptr1, data)); - } - m_p_videoram[m_video.ptr1++] = data; - m_video.ptr1 &= 0xfff; - } -} - -WRITE8_MEMBER( ie15_state::mem_addr_inc_w ) { - if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0) - { - DBG_LOG(2,"memory",("++ %03x\n", m_video.ptr1)); - } - m_video.ptr1++; - m_video.ptr1 &= 0xfff; - if (m_video.enable) - m_video.ptr2 = m_video.ptr1; -} - -WRITE8_MEMBER( ie15_state::mem_addr_dec_w ) { - if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0) - { - DBG_LOG(2,"memory",("-- %03x\n", m_video.ptr1)); - } - m_video.ptr1--; - m_video.ptr1 &= 0xfff; - if (m_video.enable) - m_video.ptr2 = m_video.ptr1; -} - -WRITE8_MEMBER( ie15_state::mem_addr_lo_w ) { - uint16_t tmp = m_video.ptr1; - - tmp &= 0xff0; - tmp |= ((data >> 4) & 0xf); - if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0) - { - DBG_LOG(2,"memory",("lo %03x <- %02x = %03x\n", m_video.ptr1, data, tmp)); - } - m_video.ptr1 = tmp; - if (m_video.enable) - m_video.ptr2 = tmp; -} - -WRITE8_MEMBER( ie15_state::mem_addr_hi_w ) { - uint16_t tmp = m_video.ptr1; - - tmp &= 0xf; - tmp |= (data << 4); - if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0) - { - DBG_LOG(2,"memory",("hi %03x <- %02x = %03x\n", m_video.ptr1, data, tmp)); - } - m_video.ptr1 = tmp; - if (m_video.enable) - m_video.ptr2 = tmp; -} - -TIMER_CALLBACK_MEMBER(ie15_state::ie15_beepoff) -{ - m_beeper->set_state(0); -} - -WRITE8_MEMBER( ie15_state::beep_w ) { - uint16_t length = (m_long_beep & IE_TRUE) ? 150 : 400; - - if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0) - { - DBG_LOG(1,"beep",("(%s)\n", m_long_beep ? "short" : "long")); - } - machine().scheduler().timer_set(attotime::from_msec(length), timer_expired_delegate(FUNC(ie15_state::ie15_beepoff),this)); - m_beeper->set_state(1); -} - -/* keyboard */ - -// active high -READ8_MEMBER( ie15_state::kb_r ) { - DBG_LOG(2,"keyboard",("R %02X '%c'\n", m_kb_data, m_kb_data < 0x20 ? ' ' : m_kb_data)); - return m_kb_data; -} - -// active low -READ8_MEMBER( ie15_state::kb_ready_r ) { - m_kb_flag &= IE_TRUE; - if (m_kb_flag != m_kb_flag0) { - DBG_LOG(2,"keyboard",("? %c\n", m_kb_flag ? 'n' : 'y')); - m_kb_flag0 = m_kb_flag; - } - return m_kb_flag; -} - -// active low -WRITE8_MEMBER( ie15_state::kb_ready_w ) { - DBG_LOG(2,"keyboard",("clear ready\n")); - m_kb_flag = IE_TRUE | IE_KB_ACK; -} - - -// active high; active = interpret controls, inactive = display controls -READ8_MEMBER( ie15_state::kb_s_red_r ) { - return m_io_keyboard->read() & IE_KB_RED ? IE_TRUE : 0; -} - -// active high; active = setup mode -READ8_MEMBER( ie15_state::kb_s_sdv_r ) { - return m_kb_control & IE_KB_SDV ? IE_TRUE : 0; -} - -// active high; active = keypress detected on aux keypad -READ8_MEMBER( ie15_state::kb_s_dk_r ) { - return m_kb_control & IE_KB_DK ? IE_TRUE : 0; -} - -// active low; active = full duplex, inactive = half duplex -READ8_MEMBER( ie15_state::kb_s_dupl_r ) { - return m_io_keyboard->read() & IE_KB_DUP ? IE_TRUE : 0; -} - -// active high; active = on-line, inactive = local editing -READ8_MEMBER( ie15_state::kb_s_lin_r ) { - return m_io_keyboard->read() & IE_KB_LIN ? IE_TRUE : 0; -} - -/* serial port */ - -void ie15_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); - - switch(id) - { - case TIMER_HBLANK: - if (m_hblank) // Transitioning from in blanking to out of blanking - { - m_hblank = 0; - m_hblank_timer->adjust(m_screen->time_until_pos((m_vpos+1) % IE15_TOTAL_VERT, 0)); - scanline_callback(); - } - else // Transitioning from out of blanking to in blanking - { - m_hblank = 1; - m_hblank_timer->adjust(m_screen->time_until_pos(m_vpos, IE15_HORZ_START)); - } - break; - } -} - -WRITE_LINE_MEMBER( ie15_state::serial_rx_callback ) -{ - device_serial_interface::rx_w(state); -} - -void ie15_state::rcv_complete() -{ - receive_register_extract(); - m_serial_rx_ready = IE_FALSE; -} - -void ie15_state::tra_callback() -{ - uint8_t bit = transmit_register_get_data_bit(); - m_rs232->write_txd(bit); -} - -void ie15_state::tra_complete() -{ - m_serial_tx_ready = IE_TRUE; -} - -// active low -READ8_MEMBER( ie15_state::serial_rx_ready_r ) { - return m_serial_rx_ready; -} - -// active high -READ8_MEMBER( ie15_state::serial_tx_ready_r ) { - return m_serial_tx_ready; -} - -// not called unless data are ready -READ8_MEMBER( ie15_state::serial_r ) { - uint8_t data; - - data = get_received_char(); - m_serial_rx_ready = IE_TRUE; - DBG_LOG(1,"serial",("R %02X '%c'\n", data, data < 0x20?' ':data)); - return data; -} - -WRITE8_MEMBER( ie15_state::serial_w ) { - DBG_LOG(1,"serial",("W %02X '%c'\n", data, data < 0x20?' ':data)); - - m_serial_tx_ready = IE_FALSE; - transmit_register_setup(data); -} -WRITE8_MEMBER( ie15_state::serial_speed_w ) { - return; -} - -READ8_MEMBER( ie15_state::flag_r ) { - switch (offset) - { - case 0: // hsync pulse (not hblank) - return m_hblank; - case 1: // marker scanline - return m_marker_scanline; - case 2: // vblank - return !m_screen->vblank(); - case 4: - return m_kb_ruslat; - default: - break; - } - if (machine().debug_flags & DEBUG_FLAG_ENABLED) - { - DBG_LOG(2,"flag",("read %d: ?\n", offset)); - } - return 0; -} - -WRITE8_MEMBER( ie15_state::flag_w ) { - switch (offset) - { - case 0: - m_video.enable = data; - break; - case 1: - m_video.cursor = data; - break; - case 2: - m_long_beep = data; - break; - case 3: - m_video.line25 = data; - break; - case 4: - m_kb_ruslat = data; - break; - default: - break; - } - if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0 && !offset) - { - DBG_LOG(2,"flag",("%sset %d\n", data?"":"re", offset)); - } -} - -static ADDRESS_MAP_START( ie15_mem, AS_PROGRAM, 8, ie15_state ) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -static ADDRESS_MAP_START( ie15_io, AS_IO, 8, ie15_state ) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(000, 000) AM_READWRITE(mem_r, mem_w) // 00h W: memory request, R: memory data [6.1.2.2] - AM_RANGE(001, 001) AM_READ(serial_rx_ready_r) AM_WRITENOP // 01h W: memory latch [6.1.2.2] - AM_RANGE(002, 002) AM_WRITE(mem_addr_hi_w) // 02h W: memory address high [6.1.2.2] - AM_RANGE(003, 003) AM_WRITE(mem_addr_lo_w) // 03h W: memory address low [6.1.2.2] - AM_RANGE(004, 004) AM_WRITE(mem_addr_inc_w) // 04h W: memory address counter + [6.1.2.2] - AM_RANGE(005, 005) AM_WRITE(mem_addr_dec_w) // 05h W: memory address counter - [6.1.2.2] - AM_RANGE(006, 006) AM_READWRITE(serial_r, serial_w) // 06h W: serial port data [6.1.5.4] -// port 7 is handled in cpu core - AM_RANGE(010, 010) AM_READWRITE(serial_tx_ready_r, beep_w) // 08h W: speaker control [6.1.5.4] - AM_RANGE(011, 011) AM_READ(kb_r) // 09h R: keyboard data [6.1.5.2] - AM_RANGE(012, 012) AM_READ(kb_s_red_r) // 0Ah I: keyboard mode "RED" [6.1.5.2] - AM_RANGE(013, 013) AM_READ(kb_ready_r) // 0Bh R: keyboard data ready [6.1.5.2] - AM_RANGE(014, 014) AM_READWRITE(kb_s_sdv_r, serial_speed_w) // 0Ch W: serial port speed [6.1.3.1], R: keyboard mode "SDV" [6.1.5.2] - AM_RANGE(015, 015) AM_READWRITE(kb_s_dk_r, kb_ready_w) // 0Dh I: keyboard mode "DK" [6.1.5.2] - AM_RANGE(016, 016) AM_READ(kb_s_dupl_r) // 0Eh I: keyboard mode "DUPL" [6.1.5.2] - AM_RANGE(017, 017) AM_READ(kb_s_lin_r) // 0Fh I: keyboard mode "LIN" [6.1.5.2] -// simulation of flag registers - AM_RANGE(020, 027) AM_READWRITE(flag_r, flag_w) -ADDRESS_MAP_END - -/* Input ports */ -static INPUT_PORTS_START( ie15 ) - PORT_START("keyboard") - PORT_DIPNAME(IE_KB_RED, IE_KB_RED, "RED (Interpret controls)") - PORT_DIPSETTING(0x00, "Off") - PORT_DIPSETTING(IE_KB_RED, "On") - PORT_DIPNAME(IE_KB_DUP, IE_KB_DUP, "DUP (Full duplex)") - PORT_DIPSETTING(0x00, "Off") - PORT_DIPSETTING(IE_KB_DUP, "On") - PORT_DIPNAME(IE_KB_LIN, IE_KB_LIN, "LIN (Online)") - PORT_DIPSETTING(0x00, "Off") - PORT_DIPSETTING(IE_KB_LIN, "On") -INPUT_PORTS_END - -WRITE16_MEMBER( ie15_state::kbd_put ) -{ - DBG_LOG(2,"keyboard",("W %02X<-%02X '%c' %02X (%c)\n", m_kb_data, data, 'x' /* data < 0x20 ? ' ' : (data & 255) */, - m_kb_flag, m_kb_flag ? 'n' : 'y')); - m_kb_control = (data >> 8) & 255; - // send new key only when firmware has processed previous one - if (m_kb_flag == IE_TRUE) { - m_kb_data = data & 255; - m_kb_flag = 0; - } -} - -void ie15_state::machine_start() -{ - m_hblank_timer = timer_alloc(TIMER_HBLANK); - m_hblank_timer->adjust(attotime::never); -} - -void ie15_state::machine_reset() -{ - memset(&m_video, 0, sizeof(m_video)); - m_kb_ruslat = m_long_beep = m_kb_control = m_kb_data = m_kb_flag0 = 0; - m_kb_flag = IE_TRUE; - - m_hblank = 1; - m_hblank_timer->adjust(m_screen->time_until_pos(0, IE15_HORZ_START)); - m_vpos = m_screen->vpos(); - m_marker_scanline = (m_vpos % 11) > 7; - - m_beeper->set_state(0); - - m_serial_tx_ready = m_serial_rx_ready = IE_TRUE; - set_data_frame(1 /* start bits */, 8 /* data bits */, PARITY_NONE, STOP_BITS_1); - // device supports rates from 150 to 9600 baud but null_modem has hardcoded 9600 - set_rate(9600); -} - -void ie15_state::video_start() -{ - m_video.ptr1 = m_video.ptr2 = m_latch = 0; - - m_tmpbmp = std::make_unique(IE15_TOTAL_HORZ * IE15_TOTAL_VERT); -} - -/* - Usable raster is 800 x 275 pixels (80 x 25 characters). 24 lines are - available to the user and 25th (topmost) line is the status line. - Status line, if enabled, displays current serial port speed, 16 setup - bits, and clock. There is no NVRAM, so setup bits are always 0 after - reset and clock starts counting at 0 XXX. - - No character attributes are available, but in 'display controls' mode - control characters stored in memory are shown as blinking chars. - - Character cell is 10 x 11; character generator provides 7 x 8 of that. - 3 extra horizontal pixels are always blank. Blinking cursor may be - displayed on 3 extra scan lines. - - On each scan line, video board draws 80 characters from any location - in video memory; this is used by firmware to provide instant scroll - and cursor, which is a character with code 0x7F stored in XXX. - - Video board output is controlled by - - control flag 0 "disable video": 0 == disable - - control flag 1 "cursor": 0 == if this scan line is one of extra 3, - enable video every 5 frames. - - control flag 3 "status line": 0 == current scan line is part of status line - - keyboard mode 'RED' ('display controls'): if character code is - less than 0x20 and RED is set, enable video every 5 frames; if RED is - unset, disable video. - - XXX 'dotted look' is caused by strobe at 2x pixel clock -- use HLSL for this. -*/ - -void ie15_state::draw_scanline(uint32_t *p, uint16_t offset, uint8_t scanline) -{ - static const uint32_t palette[2] = { 0xff000000, 0xff00c000 }; - - uint8_t ra = scanline % 8; - uint32_t ra_high = 0x200 | ra; - bool blink((m_screen->frame_number() % 10) > 4); - bool red(m_io_keyboard->read() & IE_KB_RED); - bool blink_red_line25 = blink && red && m_video.line25; - bool cursor_blank = scanline > 7 && (!m_video.cursor || blink); - - if (cursor_blank) - { - for (uint16_t x = 0; x < 80*10; x++) - { - *p++ = palette[0]; - } - } - else - { - for (uint16_t x = offset; x < offset + 80; x++) - { - uint16_t chr = m_p_videoram[x] << 3; - uint8_t gfx = m_p_chargen[chr | ra]; - - if (chr < (0x20<<3)) - { - if (blink_red_line25) - gfx = m_p_chargen[chr | ra_high]; - else - gfx = 0; - } - - *p++ = palette[BIT(gfx, 7)]; - *p++ = palette[BIT(gfx, 6)]; - *p++ = palette[BIT(gfx, 5)]; - *p++ = palette[BIT(gfx, 4)]; - *p++ = palette[BIT(gfx, 3)]; - *p++ = palette[BIT(gfx, 2)]; - *p++ = palette[BIT(gfx, 1)]; - *p++ = palette[0]; - *p++ = palette[0]; - *p++ = palette[0]; - } - } -} - -void ie15_state::update_leds() -{ - uint8_t data = m_io_keyboard->read(); - output().set_value("lat_led", m_kb_ruslat ^ 1); - output().set_value("nr_led", BIT(m_kb_control, IE_KB_NR_BIT) ^ 1); - output().set_value("pch_led", BIT(data, IE_KB_PCH_BIT) ^ 1); - output().set_value("dup_led", BIT(data, IE_KB_DUP_BIT) ^ 1); - output().set_value("lin_led", BIT(data, IE_KB_LIN_BIT) ^ 1); - output().set_value("red_led", BIT(data, IE_KB_RED_BIT) ^ 1); - output().set_value("sdv_led", BIT(m_kb_control, IE_KB_SDV_BIT) ^ 1); - output().set_value("prd_led", 1); // XXX -} - -/* - VBlank is active for 3 topmost on-screen rows and 1 at the bottom; however, control flag 3 overrides VBlank, - allowing status line to be switched on and off. -*/ -void ie15_state::scanline_callback() -{ - int y = m_vpos; - - m_vpos++; - m_vpos %= IE15_TOTAL_VERT; - m_marker_scanline = (m_vpos % 11) > 7; - - DBG_LOG(3,"scanline_cb", - ("addr %03x frame %d x %.4d y %.3d row %.2d e:c:s %d:%d:%d\n", - m_video.ptr2, (int)m_screen->frame_number(), m_screen->hpos(), y, - y%11, m_video.enable, m_video.cursor, m_video.line25)); - - if (y < IE15_VERT_START) return; - y -= IE15_VERT_START; - if (y >= IE15_DISP_VERT) return; - - if (!m_video.enable || (y < IE15_STATUSLINE && m_video.line25)) { - memset(&m_tmpbmp[(y + IE15_VERT_START) * IE15_TOTAL_HORZ], 0, sizeof(uint32_t) * IE15_TOTAL_HORZ); - } else { - draw_scanline(&m_tmpbmp[(y + IE15_VERT_START) * IE15_TOTAL_HORZ + IE15_HORZ_START], m_video.ptr2, y % 11); - } -} - -uint32_t ie15_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -{ - update_leds(); - memcpy(&bitmap.pix32(0), &m_tmpbmp[0], sizeof(uint32_t) * IE15_TOTAL_HORZ * IE15_TOTAL_VERT); - return 0; -} - - -/* F4 Character Displayer */ -static const gfx_layout ie15_charlayout = -{ - 7, 8, /* 7x8 pixels in 10x11 cell */ - 256, /* 256 characters */ - 1, /* 1 bits per pixel */ - { 0 }, /* no bitplanes */ - /* x offsets */ - { 0, 1, 2, 3, 4, 5, 6 }, - /* y offsets */ - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 /* every char takes 8 bytes */ -}; - -static GFXDECODE_START( ie15 ) - GFXDECODE_ENTRY("chargen", 0x0000, ie15_charlayout, 0, 1) -GFXDECODE_END - -PALETTE_INIT_MEMBER( ie15_state, ie15 ) -{ - palette.set_pen_color(0, rgb_t::black()); // black - palette.set_pen_color(1, 0x00, 0xc0, 0x00); // green -} - -static MACHINE_CONFIG_START( ie15, ie15_state ) - /* Basic machine hardware */ - MCFG_CPU_ADD("maincpu", IE15, XTAL_30_8MHz/10) - MCFG_CPU_PROGRAM_MAP(ie15_mem) - MCFG_CPU_IO_MAP(ie15_io) - - /* Video hardware */ - MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green()) - MCFG_SCREEN_UPDATE_DRIVER(ie15_state, screen_update) - MCFG_SCREEN_RAW_PARAMS(XTAL_30_8MHz/2, IE15_TOTAL_HORZ, IE15_HORZ_START, - IE15_HORZ_START+IE15_DISP_HORZ, IE15_TOTAL_VERT, IE15_VERT_START, - IE15_VERT_START+IE15_DISP_VERT); - - MCFG_DEFAULT_LAYOUT(layout_ie15) - - MCFG_GFXDECODE_ADD("gfxdecode", "palette", ie15) - MCFG_PALETTE_ADD_MONOCHROME("palette") - - /* Devices */ - MCFG_DEVICE_ADD("keyboard", IE15_KEYBOARD, 0) - MCFG_IE15_KEYBOARD_CB(WRITE16(ie15_state, kbd_put)) - - MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "null_modem") - MCFG_RS232_RXD_HANDLER(WRITELINE(ie15_state, serial_rx_callback)) - - MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("beeper", BEEP, 2400) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) +static MACHINE_CONFIG_START( ie15 ) + MCFG_DEVICE_ADD("ie15", IE15, 0) MACHINE_CONFIG_END -/* ROM definition */ -ROM_START( ie15 ) - ROM_REGION(0x1000, "maincpu", ROMREGION_ERASE00) - ROM_DEFAULT_BIOS("5chip") - ROM_SYSTEM_BIOS(0, "5chip", "5-chip firmware (newer)") - ROMX_LOAD("dump1.bin", 0x0000, 0x1000, CRC(14b82284) SHA1(5ac4159fbb1c3b81445605e26cd97a713ae12b5f), ROM_BIOS(1)) - ROM_SYSTEM_BIOS(1, "6chip", "6-chip firmware (older)") - ROMX_LOAD("dump5.bin", 0x0000, 0x1000, CRC(01f2e065) SHA1(2b72dc0594e38a528400cd25aed0c47e0c432895), ROM_BIOS(2)) - - ROM_REGION(0x1000, "video", ROMREGION_ERASE00) - - ROM_REGION(0x0800, "chargen", ROMREGION_ERASE00) - ROM_LOAD("chargen-15ie.bin", 0x0000, 0x0800, CRC(ed16bf6b) SHA1(6af9fb75f5375943d5c0ce9ed408e0fb4621b17e)) +ROM_START(ie15) ROM_END -/* Driver */ - -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, ie15, 0, 0, ie15, ie15, driver_device, 0, "USSR", "15IE-00-013", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, ie15, 0, 0, ie15, 0, ie15_state, 0, "USSR", "15IE-00-013", 0) diff --git a/src/mame/drivers/if800.cpp b/src/mame/drivers/if800.cpp index ddb34e7d184..cd747ad7597 100644 --- a/src/mame/drivers/if800.cpp +++ b/src/mame/drivers/if800.cpp @@ -80,7 +80,7 @@ static ADDRESS_MAP_START( upd7220_map, AS_0, 16, if800_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram") ADDRESS_MAP_END -static MACHINE_CONFIG_START( if800, if800_state ) +static MACHINE_CONFIG_START( if800 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 8000000) MCFG_CPU_PROGRAM_MAP(if800_map) @@ -114,5 +114,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, if800, 0, 0, if800, if800, driver_device, 0, "Oki Electric", "if800 model 60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, if800, 0, 0, if800, if800, if800_state, 0, "Oki Electric", "if800 model 60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/igs009.cpp b/src/mame/drivers/igs009.cpp index 21709d53c71..9be65e7f25f 100644 --- a/src/mame/drivers/igs009.cpp +++ b/src/mame/drivers/igs009.cpp @@ -808,7 +808,7 @@ INTERRUPT_GEN_MEMBER(igs009_state::interrupt) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( jingbell, igs009_state ) +static MACHINE_CONFIG_START( jingbell ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 2) /* HD64180RP8, 8 MHz? */ MCFG_CPU_PROGRAM_MAP(jingbell_map) @@ -845,7 +845,7 @@ static MACHINE_CONFIG_START( jingbell, igs009_state ) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz / 12, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_12MHz / 12, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1166,4 +1166,4 @@ GAME( 1997, jingbella, jingbell, jingbell, jingbell, igs009_state, jingbell, GAME( 1997, jingbellb, jingbell, jingbell, jingbell, igs009_state, jingbell, ROT0, "IGS", "Jingle Bell (EU, V153UE)", MACHINE_SUPPORTS_SAVE ) GAME( 1995, jingbellc, jingbell, jingbell, jingbell, igs009_state, jingbelli, ROT0, "IGS", "Jingle Bell (EU, V141UE)", MACHINE_SUPPORTS_SAVE ) GAME( 1995?, jingbelli, jingbell, jingbell, jingbell, igs009_state, jingbelli, ROT0, "IGS", "Jingle Bell (Italy, V133I)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, gp98, 0, gp98, jingbell, driver_device, 0, ROT0, "Romtec Co. Ltd", "Grand Prix '98 (V100K)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, gp98, 0, gp98, jingbell, igs009_state, 0, ROT0, "Romtec Co. Ltd", "Grand Prix '98 (V100K)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp index d9d350a29a0..b2736bcdfa8 100644 --- a/src/mame/drivers/igs011.cpp +++ b/src/mame/drivers/igs011.cpp @@ -231,7 +231,7 @@ public: virtual void machine_start() override; virtual void video_start() override; uint32_t screen_update_igs011(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_vbowl(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_vbowl); INTERRUPT_GEN_MEMBER(lhb_vblank_irq); void wlcc_decrypt(); void lhb_decrypt(); @@ -2689,7 +2689,7 @@ READ16_MEMBER(igs011_state::vbowl_unk_r) return 0xffff; } -void igs011_state::screen_eof_vbowl(screen_device &screen, bool state) +WRITE_LINE_MEMBER(igs011_state::screen_vblank_vbowl) { // rising edge if (state) @@ -3989,7 +3989,7 @@ static GFXDECODE_START( igs011_hi ) GFXDECODE_END #endif -static MACHINE_CONFIG_START( igs011_base, igs011_state ) +static MACHINE_CONFIG_START( igs011_base ) MCFG_CPU_ADD("maincpu",M68000, XTAL_22MHz/3) MCFG_NVRAM_ADD_0FILL("nvram") @@ -4009,7 +4009,7 @@ static MACHINE_CONFIG_START( igs011_base, igs011_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_22MHz/21, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_22MHz/21, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -4130,7 +4130,7 @@ static MACHINE_CONFIG_DERIVED( vbowl, igs011_base ) // irq 4 points to an apparently unneeded routine MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VBLANK_DRIVER(igs011_state, screen_eof_vbowl) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(igs011_state, screen_vblank_vbowl)) // MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs011_hi) MCFG_DEVICE_REMOVE("oki") diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp index a175eaa785f..6395e52441a 100644 --- a/src/mame/drivers/igs017.cpp +++ b/src/mame/drivers/igs017.cpp @@ -3249,7 +3249,7 @@ MACHINE_RESET_MEMBER(igs017_state,iqblocka) m_input_select = 0; } -static MACHINE_CONFIG_START( iqblocka, igs017_state ) +static MACHINE_CONFIG_START( iqblocka ) MCFG_CPU_ADD("maincpu", Z180, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(iqblocka_map) MCFG_CPU_IO_MAP(iqblocka_io) @@ -3283,7 +3283,7 @@ static MACHINE_CONFIG_START( iqblocka, igs017_state ) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz / 16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz / 16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -3314,7 +3314,7 @@ MACHINE_RESET_MEMBER(igs017_state,mgcs) memset(m_igs_magic, 0, sizeof(m_igs_magic)); } -static MACHINE_CONFIG_START( mgcs, igs017_state ) +static MACHINE_CONFIG_START( mgcs ) MCFG_CPU_ADD("maincpu", M68000, XTAL_22MHz / 2) MCFG_CPU_PROGRAM_MAP(mgcs) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1) @@ -3345,7 +3345,7 @@ static MACHINE_CONFIG_START( mgcs, igs017_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_8MHz / 8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_8MHz / 8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -3353,7 +3353,7 @@ MACHINE_CONFIG_END // lhzb2 -static MACHINE_CONFIG_START( lhzb2, igs017_state ) +static MACHINE_CONFIG_START( lhzb2 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_22MHz / 2) MCFG_CPU_PROGRAM_MAP(lhzb2) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1) @@ -3391,7 +3391,7 @@ static MACHINE_CONFIG_START( lhzb2, igs017_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_8MHz / 8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_8MHz / 8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -3405,7 +3405,7 @@ MACHINE_RESET_MEMBER(igs017_state,lhzb2a) lhzb2a_input_addr_w(m_maincpu->space(AS_PROGRAM), 0, 0xf0); } -static MACHINE_CONFIG_START( lhzb2a, igs017_state ) +static MACHINE_CONFIG_START( lhzb2a ) MCFG_CPU_ADD("maincpu", M68000, XTAL_22MHz/2) MCFG_CPU_PROGRAM_MAP(lhzb2a) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1) @@ -3434,7 +3434,7 @@ static MACHINE_CONFIG_START( lhzb2a, igs017_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_22MHz / 22, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_22MHz / 22, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -3442,7 +3442,7 @@ MACHINE_CONFIG_END // slqz2 -static MACHINE_CONFIG_START( slqz2, igs017_state ) +static MACHINE_CONFIG_START( slqz2 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_22MHz / 2) MCFG_CPU_PROGRAM_MAP(slqz2) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1) @@ -3478,7 +3478,7 @@ static MACHINE_CONFIG_START( slqz2, igs017_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_8MHz / 8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_8MHz / 8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -3486,7 +3486,7 @@ MACHINE_CONFIG_END // sdmg2 -static MACHINE_CONFIG_START( sdmg2, igs017_state ) +static MACHINE_CONFIG_START( sdmg2 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_22MHz/2) MCFG_CPU_PROGRAM_MAP(sdmg2) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgcs_interrupt, "screen", 0, 1) @@ -3516,7 +3516,7 @@ static MACHINE_CONFIG_START( sdmg2, igs017_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_22MHz / 22, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_22MHz / 22, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -3534,7 +3534,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::mgdh_interrupt) m_maincpu->set_input_line(3, HOLD_LINE); // lev 3 instead of 2 } -static MACHINE_CONFIG_START( mgdha, igs017_state ) +static MACHINE_CONFIG_START( mgdha ) MCFG_CPU_ADD("maincpu", M68000, XTAL_22MHz / 2) MCFG_CPU_PROGRAM_MAP(mgdha_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igs017_state, mgdh_interrupt, "screen", 0, 1) @@ -3563,14 +3563,14 @@ static MACHINE_CONFIG_START( mgdha, igs017_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_22MHz / 22, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_22MHz / 22, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END // tjsb -static MACHINE_CONFIG_START( tjsb, igs017_state ) +static MACHINE_CONFIG_START( tjsb ) MCFG_CPU_ADD("maincpu", Z180, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(tjsb_map) MCFG_CPU_IO_MAP(tjsb_io) @@ -3606,14 +3606,14 @@ static MACHINE_CONFIG_START( tjsb, igs017_state ) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz / 16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz / 16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END // spkrform -static MACHINE_CONFIG_START( spkrform, igs017_state ) +static MACHINE_CONFIG_START( spkrform ) MCFG_CPU_ADD("maincpu", Z180, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(spkrform_map) MCFG_CPU_IO_MAP(spkrform_io) @@ -3647,7 +3647,7 @@ static MACHINE_CONFIG_START( spkrform, igs017_state ) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz / 16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz / 16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END diff --git a/src/mame/drivers/igs_fear.cpp b/src/mame/drivers/igs_fear.cpp index cad0ea39f1a..e864fad5fcb 100644 --- a/src/mame/drivers/igs_fear.cpp +++ b/src/mame/drivers/igs_fear.cpp @@ -75,7 +75,7 @@ WRITE_LINE_MEMBER(igs_fear_state::sound_irq) } -static MACHINE_CONFIG_START( igs_fear, igs_fear_state ) +static MACHINE_CONFIG_START( igs_fear ) MCFG_CPU_ADD("maincpu",ARM7, 50000000/2) MCFG_CPU_PROGRAM_MAP(igs_igs_fear_map) diff --git a/src/mame/drivers/igs_m027.cpp b/src/mame/drivers/igs_m027.cpp index 0a8d950c17f..7db33800f5c 100644 --- a/src/mame/drivers/igs_m027.cpp +++ b/src/mame/drivers/igs_m027.cpp @@ -333,7 +333,7 @@ INTERRUPT_GEN_MEMBER(igs_m027_state::igs_majhong_interrupt) } -static MACHINE_CONFIG_START( igs_majhong, igs_m027_state ) +static MACHINE_CONFIG_START( igs_majhong ) MCFG_CPU_ADD("maincpu",ARM7, 20000000) MCFG_CPU_PROGRAM_MAP(igs_majhong_map) @@ -367,7 +367,7 @@ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( amazonia, igs_m027_state ) +static MACHINE_CONFIG_START( amazonia ) MCFG_CPU_ADD("maincpu",ARM7, 20000000) MCFG_CPU_PROGRAM_MAP(igs_majhong_map) diff --git a/src/mame/drivers/igs_m036.cpp b/src/mame/drivers/igs_m036.cpp index c9759711520..3bbcec427fe 100644 --- a/src/mame/drivers/igs_m036.cpp +++ b/src/mame/drivers/igs_m036.cpp @@ -245,7 +245,7 @@ void igs_m036_state::pgm_create_dummy_internal_arm_region(void) #define IGS036_CPU ARM7 -static MACHINE_CONFIG_START( igs_m036, igs_m036_state ) +static MACHINE_CONFIG_START( igs_m036 ) MCFG_CPU_ADD("maincpu",IGS036_CPU, 20000000) MCFG_CPU_PROGRAM_MAP(igs_m036_map) @@ -264,7 +264,7 @@ static MACHINE_CONFIG_START( igs_m036, igs_m036_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( igs_m036_tt, igs_m036_state ) +static MACHINE_CONFIG_START( igs_m036_tt ) MCFG_CPU_ADD("maincpu",IGS036_CPU, 20000000) MCFG_CPU_PROGRAM_MAP(igs_m036_map) @@ -319,10 +319,10 @@ DRIVER_INIT_MEMBER(igs_m036_state, igsm312) ***************************************************************************/ -GAME( 200?, cjdh2, 0, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CN)", MACHINE_IS_SKELETON ) -GAME( 200?, cjdh2a, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNA)", MACHINE_IS_SKELETON ) -GAME( 200?, cjdh2b, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNB)", MACHINE_IS_SKELETON ) -GAME( 200?, cjdh2c, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V215CN)", MACHINE_IS_SKELETON ) +GAME( 200?, cjdh2, 0, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CN)", MACHINE_IS_SKELETON ) +GAME( 200?, cjdh2a, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNA)", MACHINE_IS_SKELETON ) +GAME( 200?, cjdh2b, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNB)", MACHINE_IS_SKELETON ) +GAME( 200?, cjdh2c, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V215CN)", MACHINE_IS_SKELETON ) GAME( 200?, cjddzsp, 0, igs_m036_tt, igs_m036, igs_m036_state, cjddzsp, ROT0, "IGS", "Super Dou Di Zhu Special (V122CN)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/igspc.cpp b/src/mame/drivers/igspc.cpp index 2acd3fc9b2f..8e217f8961e 100644 --- a/src/mame/drivers/igspc.cpp +++ b/src/mame/drivers/igspc.cpp @@ -75,7 +75,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( speeddrv, speeddrv_state ) +static MACHINE_CONFIG_START( speeddrv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I486, 40000000 ) // ?? at least a pentium MCFG_CPU_PROGRAM_MAP(speeddrv_map) @@ -113,5 +113,5 @@ DRIVER_INIT_MEMBER(speeddrv_state,speeddrv) { } -GAME( 2004, speeddrv, 0, speeddrv, speeddrv, speeddrv_state, speeddrv, ROT0, "IGS", "Speed Driver", MACHINE_IS_SKELETON ) -GAME( 200?, eztouch, 0, speeddrv, speeddrv, speeddrv_state, speeddrv, ROT0, "IGS", "EZ Touch (v116 China)", MACHINE_IS_SKELETON ) +GAME( 2004, speeddrv, 0, speeddrv, speeddrv, speeddrv_state, speeddrv, ROT0, "IGS", "Speed Driver", MACHINE_IS_SKELETON ) +GAME( 200?, eztouch, 0, speeddrv, speeddrv, speeddrv_state, speeddrv, ROT0, "IGS", "EZ Touch (v116 China)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp index 5597e6280b2..c7fdab10abb 100644 --- a/src/mame/drivers/igspoker.cpp +++ b/src/mame/drivers/igspoker.cpp @@ -66,6 +66,7 @@ FIX: PK Tetris have an input named AMUSE which I couldn't map. Maybe it is #include "emu.h" #include "cpu/z80/z80.h" +#include "machine/i8255.h" #include "sound/ym2413.h" #include "sound/okim6295.h" #include "screen.h" @@ -382,9 +383,7 @@ static ADDRESS_MAP_START( igspoker_io_map, AS_IO, 8, igspoker_state ) AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */ AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */ AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */ - AM_RANGE(0x5080, 0x5080) AM_WRITE(igs_nmi_and_coins_w) - AM_RANGE(0x5081, 0x5081) AM_READ_PORT("SERVICE") /* Services */ - AM_RANGE(0x5082, 0x5082) AM_READ_PORT("COINS") /* Coing & Kbd */ + AM_RANGE(0x5080, 0x5083) AM_DEVREADWRITE("ppi", i8255_device, read, write) AM_RANGE(0x5090, 0x5090) AM_WRITE(custom_io_w) AM_RANGE(0x5091, 0x5091) AM_READ(custom_io_r) AM_WRITE(igs_lamps_w ) /* Keyboard */ AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2") /* Not connected */ @@ -1778,7 +1777,7 @@ static GFXDECODE_START( cpokerpk ) GFXDECODE_ENTRY( "gfx2", 0x00000, charlayout2, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( igspoker, igspoker_state ) +static MACHINE_CONFIG_START( igspoker ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, 3579545) @@ -1786,6 +1785,11 @@ static MACHINE_CONFIG_START( igspoker, igspoker_state ) MCFG_CPU_IO_MAP(igspoker_io_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", igspoker_state, igs_interrupt, "screen", 0, 1) + MCFG_DEVICE_ADD("ppi", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(igspoker_state, igs_nmi_and_coins_w)) + MCFG_I8255_IN_PORTB_CB(IOPORT("SERVICE")) + MCFG_I8255_IN_PORTC_CB(IOPORT("COINS")) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(57) @@ -1822,11 +1826,13 @@ static MACHINE_CONFIG_DERIVED( number10, igspoker ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(number10_io_map) + MCFG_DEVICE_REMOVE("ppi") + MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(igspoker_state, screen_update_cpokerpk) MCFG_VIDEO_START_OVERRIDE(igspoker_state,cpokerpk) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz / 12, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_12MHz / 12, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2700,7 +2706,7 @@ GAMEL( 199?, citalcup, cpokerpk, cpokerpk, cpokerpk, igspoker_state, cpokerpk, GAMEL( 2000, igs_ncs2, 0, igs_ncs, igs_ncs, igspoker_state, igs_ncs2, ROT0, "IGS", "New Champion Skill (v100n 2000)", MACHINE_IMPERFECT_GRAPHICS, layout_igspoker ) -GAMEL( 1998, stellecu, 0, number10, number10, driver_device, 0, ROT0, "Sure", "Stelle e Cubi (Italy)", MACHINE_NOT_WORKING, layout_igspoker ) +GAMEL( 1998, stellecu, 0, number10, number10, igspoker_state, 0, ROT0, "Sure", "Stelle e Cubi (Italy)", MACHINE_NOT_WORKING, layout_igspoker ) GAMEL( 1993?,pktet346, 0, pktetris, pktet346, igspoker_state, pktet346, ROT0, "IGS", "PK Tetris (v346I)", 0, layout_igspoker ) diff --git a/src/mame/drivers/ikki.cpp b/src/mame/drivers/ikki.cpp index 4ed29121a72..ee138c77303 100644 --- a/src/mame/drivers/ikki.cpp +++ b/src/mame/drivers/ikki.cpp @@ -238,7 +238,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(ikki_state::ikki_irq) -static MACHINE_CONFIG_START( ikki, ikki_state ) +static MACHINE_CONFIG_START( ikki ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,8000000/2) /* 4.000MHz */ @@ -356,5 +356,5 @@ ROM_END * *************************************/ -GAME( 1985, ikki, 0, ikki, ikki, driver_device, 0, ROT0, "Sun Electronics", "Ikki (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, farmer, ikki, ikki, ikki, driver_device, 0, ROT0, "Sun Electronics", "Farmers Rebellion", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, ikki, 0, ikki, ikki, ikki_state, 0, ROT0, "Sun Electronics", "Ikki (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, farmer, ikki, ikki, ikki, ikki_state, 0, ROT0, "Sun Electronics", "Farmers Rebellion", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/imds.cpp b/src/mame/drivers/imds.cpp index 2c6df441971..0536b13d75f 100644 --- a/src/mame/drivers/imds.cpp +++ b/src/mame/drivers/imds.cpp @@ -37,7 +37,7 @@ public: required_device m_terminal; DECLARE_READ8_MEMBER(term_r); DECLARE_READ8_MEMBER(term_status_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); uint8_t m_term_data; virtual void machine_reset() override; }; @@ -69,7 +69,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( imds ) INPUT_PORTS_END -WRITE8_MEMBER( imds_state::kbd_put ) +void imds_state::kbd_put(u8 data) { m_term_data = data; } @@ -88,7 +88,7 @@ void imds_state::machine_reset() // nullptr //}; -static MACHINE_CONFIG_START( imds, imds_state ) +static MACHINE_CONFIG_START( imds ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_4MHz) // no idea of clock. MCFG_CPU_PROGRAM_MAP(imds_mem) @@ -98,7 +98,7 @@ static MACHINE_CONFIG_START( imds, imds_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(imds_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(imds_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -112,5 +112,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, imds, 0, 0, imds, imds, driver_device, 0, "Intel", "Intellec MDS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, imds, 0, 0, imds, imds, imds_state, 0, "Intel", "Intellec MDS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/imds2.cpp b/src/mame/drivers/imds2.cpp index 306c69a76f8..147c71eeea9 100644 --- a/src/mame/drivers/imds2.cpp +++ b/src/mame/drivers/imds2.cpp @@ -155,18 +155,6 @@ static ADDRESS_MAP_START(ioc_io_map , AS_IO , 8 , imds2_state) AM_RANGE(0xf0 , 0xf8) AM_DEVREADWRITE("iocdma" , i8257_device , read , write) ADDRESS_MAP_END -static ADDRESS_MAP_START(pio_io_map , AS_IO , 8 , imds2_state) - AM_RANGE(MCS48_PORT_P1 , MCS48_PORT_P1) AM_READWRITE(imds2_pio_port_p1_r , imds2_pio_port_p1_w) - AM_RANGE(MCS48_PORT_P2 , MCS48_PORT_P2) AM_READWRITE(imds2_pio_port_p2_r , imds2_pio_port_p2_w) -ADDRESS_MAP_END - -static ADDRESS_MAP_START(kb_io_map , AS_IO , 8 , imds2_state) - AM_RANGE(MCS48_PORT_P1 , MCS48_PORT_P1) AM_WRITE(imds2_kb_port_p1_w) - AM_RANGE(MCS48_PORT_P2 , MCS48_PORT_P2) AM_READ(imds2_kb_port_p2_r) - AM_RANGE(MCS48_PORT_T0 , MCS48_PORT_T0) AM_READ(imds2_kb_port_t0_r) - AM_RANGE(MCS48_PORT_T1 , MCS48_PORT_T1) AM_READ(imds2_kb_port_t1_r) -ADDRESS_MAP_END - imds2_state::imds2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig , type , tag), m_ipccpu(*this , "ipccpu"), @@ -366,14 +354,14 @@ WRITE8_MEMBER(imds2_state::imds2_kb_port_p1_w) m_kb_p1 = data; } -READ8_MEMBER(imds2_state::imds2_kb_port_t0_r) +READ_LINE_MEMBER(imds2_state::imds2_kb_port_t0_r) { // T0 tied low // It appears to be some kind of strapping option on kb hw return 0; } -READ8_MEMBER(imds2_state::imds2_kb_port_t1_r) +READ_LINE_MEMBER(imds2_state::imds2_kb_port_t1_r) { // T1 tied low // It appears to be some kind of strapping option on kb hw @@ -765,7 +753,7 @@ static SLOT_INTERFACE_START( imds2_floppies ) SLOT_INTERFACE( "8sssd", FLOPPY_8_SSSD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START(imds2 , imds2_state) +static MACHINE_CONFIG_START(imds2) MCFG_CPU_ADD("ipccpu" , I8085A , IPC_XTAL_Y2 / 2) // 4 MHz MCFG_CPU_PROGRAM_MAP(ipc_mem_map) MCFG_CPU_IO_MAP(ipc_io_map) @@ -869,11 +857,17 @@ static MACHINE_CONFIG_START(imds2 , imds2_state) MCFG_SLOT_FIXED(true) MCFG_CPU_ADD("iocpio" , I8041 , IOC_XTAL_Y3) - MCFG_CPU_IO_MAP(pio_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(imds2_state, imds2_pio_port_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(imds2_state, imds2_pio_port_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(imds2_state, imds2_pio_port_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(imds2_state, imds2_pio_port_p2_w)) MCFG_QUANTUM_TIME(attotime::from_hz(100)) MCFG_CPU_ADD("kbcpu", I8741, XTAL_3_579545MHz) /* 3.579545 MHz */ - MCFG_CPU_IO_MAP(kb_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(imds2_state, imds2_kb_port_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(imds2_state, imds2_kb_port_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(imds2_state, imds2_kb_port_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(imds2_state, imds2_kb_port_t1_r)) MCFG_QUANTUM_TIME(attotime::from_hz(100)) MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") @@ -919,5 +913,5 @@ ROM_START(imds2) ROM_LOAD ("ioc_a19.bin" , 0x0000 , 0x0400 , CRC(47487d0f) SHA1(0ed98f9f06622949ee3cc2ffc572fb9702db0f81)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1979, imds2, 0, 0, imds2, imds2, driver_device, 0, "Intel", "Intellec MDS-II" , 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1979, imds2, 0, 0, imds2, imds2, imds2_state, 0, "Intel", "Intellec MDS-II" , 0) diff --git a/src/mame/drivers/imolagp.cpp b/src/mame/drivers/imolagp.cpp index 206390450ff..e6d07a7bcb2 100644 --- a/src/mame/drivers/imolagp.cpp +++ b/src/mame/drivers/imolagp.cpp @@ -484,7 +484,7 @@ void imolagp_state::machine_reset() } -static MACHINE_CONFIG_START( imolagp, imolagp_state ) +static MACHINE_CONFIG_START( imolagp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3000000) // ? (assume slower than slave) @@ -572,6 +572,6 @@ ROM_START( imolagpo ) ROM_END -/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */ -GAMEL(1983?, imolagp, 0, imolagp, imolagp, driver_device, 0, ROT90, "RB Bologna", "Imola Grand Prix (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE, layout_imolagp ) // made by Alberici? year not shown, PCB labels suggests it's from 1983 -GAMEL(1983?, imolagpo, imolagp, imolagp, imolagpo, driver_device, 0, ROT90, "RB Bologna", "Imola Grand Prix (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE, layout_imolagp ) // " +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME, FLAGS +GAMEL(1983?, imolagp, 0, imolagp, imolagp, imolagp_state, 0, ROT90, "RB Bologna", "Imola Grand Prix (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE, layout_imolagp ) // made by Alberici? year not shown, PCB labels suggests it's from 1983 +GAMEL(1983?, imolagpo, imolagp, imolagp, imolagpo, imolagp_state, 0, ROT90, "RB Bologna", "Imola Grand Prix (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE, layout_imolagp ) // " diff --git a/src/mame/drivers/imsai.cpp b/src/mame/drivers/imsai.cpp index 4c6e92f6eea..6d118bbdb2c 100644 --- a/src/mame/drivers/imsai.cpp +++ b/src/mame/drivers/imsai.cpp @@ -36,7 +36,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(keyin_r); DECLARE_READ8_MEMBER(status_r); DECLARE_WRITE8_MEMBER(control_w); @@ -90,7 +90,7 @@ READ8_MEMBER( imsai_state::status_r ) return (m_term_data) ? 3 : 1; } -WRITE8_MEMBER( imsai_state::kbd_put ) +void imsai_state::kbd_put(u8 data) { m_term_data = data; } @@ -110,7 +110,7 @@ void imsai_state::machine_reset() m_term_data = 0; } -static MACHINE_CONFIG_START( imsai, imsai_state ) +static MACHINE_CONFIG_START( imsai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8085A, XTAL_6MHz) MCFG_CPU_PROGRAM_MAP(imsai_mem) @@ -118,7 +118,7 @@ static MACHINE_CONFIG_START( imsai, imsai_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(imsai_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(imsai_state, kbd_put)) /* Devices */ MCFG_DEVICE_ADD("uart", I8251, 0) @@ -138,5 +138,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, imsai, 0, 0, imsai, imsai, driver_device, 0, "Imsai", "MPU-B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1978, imsai, 0, 0, imsai, imsai, imsai_state, 0, "Imsai", "MPU-B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/inder.cpp b/src/mame/drivers/inder.cpp index 999faa5ca1e..9f015d29bef 100644 --- a/src/mame/drivers/inder.cpp +++ b/src/mame/drivers/inder.cpp @@ -1302,7 +1302,7 @@ WRITE8_MEMBER( inder_state::ppic_w ) { // pc4 - READY line back to cpu board, but not used if (BIT(data, 5) != BIT(m_portc, 5)) - m_msm->set_prescaler_selector(*m_msm, BIT(data, 5) ? MSM5205_S48_4B : MSM5205_S96_4B); // S1 pin + m_msm->set_prescaler_selector(*m_msm, BIT(data, 5) ? msm5205_device::S48_4B : msm5205_device::S96_4B); // S1 pin m_7a->clock_w(BIT(data, 6)); m_7a->preset_w(!BIT(data, 7)); m_9a->preset_w(!BIT(data, 7)); @@ -1346,7 +1346,7 @@ DRIVER_INIT_MEMBER( inder_state, inder1 ) m_game = 1; } -static MACHINE_CONFIG_START( brvteam, inder_state ) +static MACHINE_CONFIG_START( brvteam ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz / 2) MCFG_CPU_PROGRAM_MAP(brvteam_map) @@ -1364,7 +1364,7 @@ static MACHINE_CONFIG_START( brvteam, inder_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "snvol", 2.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( canasta, inder_state ) +static MACHINE_CONFIG_START( canasta ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz / 2) MCFG_CPU_PROGRAM_MAP(canasta_map) @@ -1382,7 +1382,7 @@ static MACHINE_CONFIG_START( canasta, inder_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "ayvol", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lapbylap, inder_state ) +static MACHINE_CONFIG_START( lapbylap ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz / 2) MCFG_CPU_PROGRAM_MAP(lapbylap_map) @@ -1406,7 +1406,7 @@ static MACHINE_CONFIG_START( lapbylap, inder_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "ayvol", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( inder, inder_state ) +static MACHINE_CONFIG_START( inder ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz / 2) MCFG_CPU_PROGRAM_MAP(inder_map) @@ -1425,7 +1425,7 @@ static MACHINE_CONFIG_START( inder, inder_state ) MCFG_SPEAKER_STANDARD_MONO("msmvol") MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(inder_state, vck_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmvol", 1.0) /* Devices */ @@ -1640,13 +1640,13 @@ ROM_END // old cpu board, 6 digits, sn76489 -GAME(1985, brvteam, 0, brvteam, brvteam, driver_device, 0, ROT0, "Inder", "Brave Team", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1985, brvteam, 0, brvteam, brvteam, inder_state, 0, ROT0, "Inder", "Brave Team", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // old cpu board, 7 digits, ay8910 -GAME(1986, canasta, 0, canasta, canasta, driver_device, 0, ROT0, "Inder", "Canasta '86'", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1986, canasta, 0, canasta, canasta, inder_state, 0, ROT0, "Inder", "Canasta '86'", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // old cpu board, 7 digits, sound cpu with 2x ay8910 -GAME(1986, lapbylap, 0, lapbylap, lapbylap, driver_device, 0, ROT0, "Inder", "Lap By Lap", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1986, lapbylap, 0, lapbylap, lapbylap, inder_state, 0, ROT0, "Inder", "Lap By Lap", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // new cpu board, sound board with msm5205 GAME(1987, pinmoonl, 0, inder, pinmoonl, inder_state, inder, ROT0, "Inder", "Moon Light (Inder)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/inderp.cpp b/src/mame/drivers/inderp.cpp index 140b6c103c3..9b4a7f3cff1 100644 --- a/src/mame/drivers/inderp.cpp +++ b/src/mame/drivers/inderp.cpp @@ -43,7 +43,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( inderp ) INPUT_PORTS_END -static MACHINE_CONFIG_START( inderp, inderp_state ) +static MACHINE_CONFIG_START( inderp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1000000) MCFG_CPU_PROGRAM_MAP(maincpu_map) @@ -78,5 +78,5 @@ ROM_START(centauri2) ROM_END -GAME( 1979, centauri, 0, inderp, inderp, driver_device, 0, ROT0, "Inder", "Centaur (Inder)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1979, centauri2, centauri, inderp, inderp, driver_device, 0, ROT0, "Inder", "Centaur (alternate set)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1979, centauri, 0, inderp, inderp, inderp_state, 0, ROT0, "Inder", "Centaur (Inder)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1979, centauri2, centauri, inderp, inderp, inderp_state, 0, ROT0, "Inder", "Centaur (alternate set)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/indiana.cpp b/src/mame/drivers/indiana.cpp index 944183ef999..693aa262e87 100644 --- a/src/mame/drivers/indiana.cpp +++ b/src/mame/drivers/indiana.cpp @@ -17,8 +17,12 @@ #include "emu.h" #include "bus/rs232/keyboard.h" #include "cpu/m68000/m68000.h" +#include "bus/isa/com.h" +#include "bus/isa/fdc.h" +#include "bus/isa/ide.h" #include "bus/isa/isa.h" #include "bus/isa/isa_cards.h" +#include "bus/isa/vga.h" #include "machine/mc68901.h" #define M68K_TAG "maincpu" @@ -82,7 +86,7 @@ static DEVICE_INPUT_DEFAULTS_START( keyboard ) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( indiana, indiana_state ) +static MACHINE_CONFIG_START( indiana ) /* basic machine hardware */ MCFG_CPU_ADD(M68K_TAG, M68030, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(indiana_mem) @@ -119,5 +123,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1993, indiana, 0, 0, indiana, indiana, indiana_state, indiana, "Indiana University", "Indiana University 68030 board", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1993, indiana, 0, 0, indiana, indiana, indiana_state, indiana, "Indiana University", "Indiana University 68030 board", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/indigo.cpp b/src/mame/drivers/indigo.cpp index cc8e0b9322e..892b85a2977 100644 --- a/src/mame/drivers/indigo.cpp +++ b/src/mame/drivers/indigo.cpp @@ -573,7 +573,7 @@ static MACHINE_CONFIG_FRAGMENT( cdrom_config ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "^^^^mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( indigo3k, indigo_state ) +static MACHINE_CONFIG_START( indigo3k ) MCFG_CPU_ADD("maincpu", R3041, 33000000) MCFG_R3000_ENDIANNESS(ENDIANNESS_BIG) MCFG_CPU_PROGRAM_MAP(indigo3k_map) @@ -626,6 +626,6 @@ ROM_START( indigo4k ) ROM_LOAD( "ip20prom.070-8116-004.bin", 0x000000, 0x080000, CRC(940d960e) SHA1(596aba530b53a147985ff3f6f853471ce48c866c) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -COMP( 1991, indigo3k, 0, 0, indigo3k, indigo, driver_device, 0, "Silicon Graphics Inc", "IRIS Indigo (R3000, 33MHz)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1993, indigo4k, 0, 0, indigo4k, indigo, driver_device, 0, "Silicon Graphics Inc", "IRIS Indigo (R4400, 150MHz, Ver. 4.0.5D Rev A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1991, indigo3k, 0, 0, indigo3k, indigo, indigo_state, 0, "Silicon Graphics Inc", "IRIS Indigo (R3000, 33MHz)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1993, indigo4k, 0, 0, indigo4k, indigo, indigo_state, 0, "Silicon Graphics Inc", "IRIS Indigo (R4400, 150MHz, Ver. 4.0.5D Rev A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/indy_indigo2.cpp b/src/mame/drivers/indy_indigo2.cpp index e138aca954a..f5937b1d7b6 100644 --- a/src/mame/drivers/indy_indigo2.cpp +++ b/src/mame/drivers/indy_indigo2.cpp @@ -83,8 +83,6 @@ class ioc2_device : public device_t { public: - ioc2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint8_t id); - DECLARE_WRITE32_MEMBER( write ); DECLARE_READ32_MEMBER( read ); @@ -98,6 +96,8 @@ public: void raise_local1_irq(uint8_t source_mask); protected: + ioc2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t id); + virtual void device_start() override; virtual void device_reset() override; machine_config_constructor device_mconfig_additions() const override; @@ -141,28 +141,32 @@ class ioc2_guinness_device : public ioc2_device { public: ioc2_guinness_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ioc2_guinness_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : ioc2_device(mconfig, type, name, tag, owner, clock, shortname, source, 0x01) { } +protected: + ioc2_guinness_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : ioc2_device(mconfig, type, tag, owner, clock, 0x01) + { } }; class ioc2_full_house_device : public ioc2_device { public: ioc2_full_house_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ioc2_full_house_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : ioc2_device(mconfig, type, name, tag, owner, clock, shortname, source, 0x20) { } +protected: + ioc2_full_house_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : ioc2_device(mconfig, type, tag, owner, clock, 0x20) + { } }; -const device_type SGI_IOC2_GUINNESS = device_creator; -const device_type SGI_IOC2_FULL_HOUSE = device_creator; +DEFINE_DEVICE_TYPE(SGI_IOC2_GUINNESS, ioc2_guinness_device, "ioc2g", "SGI IOC2 (Guiness)") +DEFINE_DEVICE_TYPE(SGI_IOC2_FULL_HOUSE, ioc2_full_house_device, "ioc2f", "SGI IOC2 (Full House)") ioc2_guinness_device::ioc2_guinness_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ioc2_guinness_device(mconfig, SGI_IOC2_GUINNESS, "SGI IOC2 (Guinness)", tag, owner, clock, "ioc2g", __FILE__) + : ioc2_guinness_device(mconfig, SGI_IOC2_GUINNESS, tag, owner, clock) { } ioc2_full_house_device::ioc2_full_house_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ioc2_full_house_device(mconfig, SGI_IOC2_FULL_HOUSE, "SGI IOC2 (Full House)", tag, owner, clock, "ioc2f", __FILE__) + : ioc2_full_house_device(mconfig, SGI_IOC2_FULL_HOUSE, tag, owner, clock) { } @@ -215,8 +219,8 @@ machine_config_constructor ioc2_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME(ioc2_device); } -ioc2_device::ioc2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, uint8_t id) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +ioc2_device::ioc2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t id) + : device_t(mconfig, type, tag, owner, clock) , m_maincpu(*this, "^maincpu") , m_scc(*this, SCC_TAG) , m_pi1(*this, PI1_TAG) @@ -1477,7 +1481,7 @@ static MACHINE_CONFIG_FRAGMENT( cdrom_config ) MCFG_SOUND_ROUTE( 1, "^^^^rspeaker", 1.0 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ip225015, ip22_state ) +static MACHINE_CONFIG_START( ip225015 ) MCFG_CPU_ADD( "maincpu", R5000BE, 50000000*3 ) //MCFG_MIPS3_ICACHE_SIZE(32768) //MCFG_MIPS3_DCACHE_SIZE(32768) @@ -1575,7 +1579,7 @@ ROM_START( ip244415 ) ROM_LOAD( "ip244415.bin", 0x000000, 0x080000, CRC(2f37825a) SHA1(0d48c573b53a307478820b85aacb57b868297ca3) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1993, ip225015, 0, 0, ip225015, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indy (R5000, 150MHz)", MACHINE_NOT_WORKING ) -COMP( 1993, ip224613, 0, 0, ip224613, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indy (R4600, 133MHz)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1993, ip225015, 0, 0, ip225015, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indy (R5000, 150MHz)", MACHINE_NOT_WORKING ) +COMP( 1993, ip224613, 0, 0, ip224613, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indy (R4600, 133MHz)", MACHINE_NOT_WORKING ) COMP( 1994, ip244415, 0, 0, ip244415, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indigo2 (R4400, 150MHz)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/instantm.cpp b/src/mame/drivers/instantm.cpp index 78610da5423..c2fb903b228 100644 --- a/src/mame/drivers/instantm.cpp +++ b/src/mame/drivers/instantm.cpp @@ -57,7 +57,7 @@ void instantm_state::machine_reset() // OSC1 = XTAL_3_579545MHz -static MACHINE_CONFIG_START( instantm, instantm_state ) +static MACHINE_CONFIG_START( instantm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL_3_579545MHz) @@ -78,4 +78,4 @@ ROM_START( instantm ) ROM_END -GAME( 199?, instantm, 0, instantm, instantm, driver_device, 0, ROT0, "Capcom / Polaroid", "Polaroid Instant Memories", MACHINE_IS_SKELETON ) +GAME( 199?, instantm, 0, instantm, instantm, instantm_state, 0, ROT0, "Capcom / Polaroid", "Polaroid Instant Memories", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/instruct.cpp b/src/mame/drivers/instruct.cpp index c2af4a3452a..1cbc607c521 100644 --- a/src/mame/drivers/instruct.cpp +++ b/src/mame/drivers/instruct.cpp @@ -405,7 +405,7 @@ QUICKLOAD_LOAD_MEMBER( instruct_state, instruct ) return result; } -static MACHINE_CONFIG_START( instruct, instruct_state ) +static MACHINE_CONFIG_START( instruct ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",S2650, XTAL_3_579545MHz / 4) MCFG_CPU_PROGRAM_MAP(instruct_mem) @@ -438,5 +438,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, instruct, 0, 0, instruct, instruct, driver_device, 0, "Signetics", "Signetics Instructor 50", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1978, instruct, 0, 0, instruct, instruct, instruct_state, 0, "Signetics", "Signetics Instructor 50", 0 ) diff --git a/src/mame/drivers/interact.cpp b/src/mame/drivers/interact.cpp index 3a09bff57e0..0c2cde72d9b 100644 --- a/src/mame/drivers/interact.cpp +++ b/src/mame/drivers/interact.cpp @@ -120,7 +120,7 @@ uint32_t interact_state::screen_update_interact(screen_device &screen, bitmap_in return 0; } -static MACHINE_CONFIG_START( interact, interact_state ) +static MACHINE_CONFIG_START( interact ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_2MHz) @@ -157,7 +157,7 @@ static MACHINE_CONFIG_START( interact, interact_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hector1, interact_state ) +static MACHINE_CONFIG_START( hector1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_1_75MHz) @@ -296,6 +296,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP(1979, interact, 0, 0, interact, interact, driver_device, 0, "Interact", "Interact Family Computer", MACHINE_IMPERFECT_SOUND) -COMP(1983, hector1, interact, 0, hector1, interact, driver_device, 0, "Micronique", "Hector 1", MACHINE_IMPERFECT_SOUND) +/* YEAR NAME PARENT COMPA MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP(1979, interact, 0, 0, interact, interact, interact_state, 0, "Interact", "Interact Family Computer", MACHINE_IMPERFECT_SOUND) +COMP(1983, hector1, interact, 0, hector1, interact, interact_state, 0, "Micronique", "Hector 1", MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/intrscti.cpp b/src/mame/drivers/intrscti.cpp index 69d993bf9e9..497df9a1f8f 100644 --- a/src/mame/drivers/intrscti.cpp +++ b/src/mame/drivers/intrscti.cpp @@ -176,7 +176,7 @@ static GFXDECODE_START( intrscti ) GFXDECODE_END -static MACHINE_CONFIG_START( intrscti, intrscti_state ) +static MACHINE_CONFIG_START( intrscti ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* ? MHz */ diff --git a/src/mame/drivers/intv.cpp b/src/mame/drivers/intv.cpp index 12834066b12..c22ecb51e7f 100644 --- a/src/mame/drivers/intv.cpp +++ b/src/mame/drivers/intv.cpp @@ -455,7 +455,7 @@ INTERRUPT_GEN_MEMBER(intv_state::intv_interrupt2) timer_set(m_keyboard->cycles_to_attotime(100), TIMER_INTV_INTERRUPT2_COMPLETE); } -static MACHINE_CONFIG_START( intv, intv_state ) +static MACHINE_CONFIG_START( intv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", CP1610, XTAL_3_579545MHz/4) /* Colorburst/4 */ MCFG_CPU_PROGRAM_MAP(intv_mem) @@ -469,8 +469,8 @@ static MACHINE_CONFIG_START( intv, intv_state ) MCFG_SCREEN_REFRESH_RATE(59.92) //MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2400)) /* not accurate */ MCFG_SCREEN_UPDATE_DRIVER(intv_state, screen_update_intv) - MCFG_SCREEN_SIZE((STIC_OVERSCAN_LEFT_WIDTH+STIC_BACKTAB_WIDTH*STIC_CARD_WIDTH-1+STIC_OVERSCAN_RIGHT_WIDTH)*STIC_X_SCALE*INTV_X_SCALE, (STIC_OVERSCAN_TOP_HEIGHT+STIC_BACKTAB_HEIGHT*STIC_CARD_HEIGHT+STIC_OVERSCAN_BOTTOM_HEIGHT)*STIC_Y_SCALE*INTV_Y_SCALE) - MCFG_SCREEN_VISIBLE_AREA(0, (STIC_OVERSCAN_LEFT_WIDTH+STIC_BACKTAB_WIDTH*STIC_CARD_WIDTH-1+STIC_OVERSCAN_RIGHT_WIDTH)*STIC_X_SCALE*INTV_X_SCALE-1, 0, (STIC_OVERSCAN_TOP_HEIGHT+STIC_BACKTAB_HEIGHT*STIC_CARD_HEIGHT+STIC_OVERSCAN_BOTTOM_HEIGHT)*STIC_Y_SCALE*INTV_Y_SCALE-1) + MCFG_SCREEN_SIZE(stic_device::SCREEN_WIDTH*INTV_X_SCALE, stic_device::SCREEN_HEIGHT*INTV_Y_SCALE) + MCFG_SCREEN_VISIBLE_AREA(0, stic_device::SCREEN_WIDTH*INTV_X_SCALE-1, 0, stic_device::SCREEN_HEIGHT*INTV_Y_SCALE-1) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 0x400) @@ -547,8 +547,8 @@ static MACHINE_CONFIG_DERIVED( intvkbd, intv ) /* crt controller */ MCFG_DEVICE_ADD("crtc", TMS9927, XTAL_7_15909MHz) MCFG_TMS9927_CHAR_WIDTH(8) - MCFG_TMS9927_OVERSCAN(STIC_OVERSCAN_LEFT_WIDTH*STIC_X_SCALE*INTVKBD_X_SCALE, STIC_OVERSCAN_RIGHT_WIDTH*STIC_X_SCALE*INTVKBD_X_SCALE, - STIC_OVERSCAN_TOP_HEIGHT*STIC_Y_SCALE*INTVKBD_Y_SCALE, STIC_OVERSCAN_BOTTOM_HEIGHT*STIC_Y_SCALE*INTVKBD_Y_SCALE) + MCFG_TMS9927_OVERSCAN(stic_device::OVERSCAN_LEFT_WIDTH*stic_device::X_SCALE*INTVKBD_X_SCALE, stic_device::OVERSCAN_RIGHT_WIDTH*stic_device::X_SCALE*INTVKBD_X_SCALE, + stic_device::OVERSCAN_TOP_HEIGHT*stic_device::Y_SCALE*INTVKBD_Y_SCALE, stic_device::OVERSCAN_BOTTOM_HEIGHT*stic_device::Y_SCALE*INTVKBD_Y_SCALE) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(intv_state, screen_update_intvkbd) @@ -652,10 +652,10 @@ DRIVER_INIT_MEMBER(intv_state,intvkbd) ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ CONS( 1979, intv, 0, 0, intv, 0, intv_state, intv, "Mattel", "Intellivision", MACHINE_SUPPORTS_SAVE ) CONS( 1981, intvsrs, intv, 0, intv, 0, intv_state, intv, "Sears", "Super Video Arcade", MACHINE_SUPPORTS_SAVE ) -COMP( 1981, intvkbd, intv, 0, intvkbd, intvkbd, intv_state, intvkbd, "Mattel", "Intellivision Keyboard Component (Unreleased)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1981, intvkbd, intv, 0, intvkbd, intvkbd, intv_state, intvkbd, "Mattel", "Intellivision Keyboard Component (Unreleased)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) CONS( 1982, intv2, intv, 0, intv2, 0, intv_state, intv, "Mattel", "Intellivision II", MACHINE_SUPPORTS_SAVE ) // made up, user friendlier machines with pre-mounted passthu expansions diff --git a/src/mame/drivers/inufuku.cpp b/src/mame/drivers/inufuku.cpp index fcbd860299e..32c44add03e 100644 --- a/src/mame/drivers/inufuku.cpp +++ b/src/mame/drivers/inufuku.cpp @@ -354,7 +354,7 @@ void inufuku_state::machine_reset() m_tx_palettebank = 0; } -static MACHINE_CONFIG_START( inufuku, inufuku_state ) +static MACHINE_CONFIG_START( inufuku ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 32000000/2) /* 16.00 MHz */ @@ -376,7 +376,7 @@ static MACHINE_CONFIG_START( inufuku, inufuku_state ) MCFG_SCREEN_SIZE(2048, 256) MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 223) MCFG_SCREEN_UPDATE_DRIVER(inufuku_state, screen_update_inufuku) - MCFG_SCREEN_VBLANK_DRIVER(inufuku_state, screen_eof_inufuku) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(inufuku_state, screen_vblank_inufuku)) MCFG_SCREEN_PALETTE("palette") MCFG_DEVICE_ADD("vsystem_spr", VSYSTEM_SPR, 0) @@ -479,5 +479,5 @@ ROM_END ******************************************************************************/ -GAME( 1998, inufuku, 0, inufuku, inufuku, driver_device, 0, ROT0, "Video System Co.", "Quiz & Variety Sukusuku Inufuku (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 3on3dunk, 0, _3on3dunk, inufuku, driver_device, 0, ROT0, "Video System Co.", "3 On 3 Dunk Madness (US, prototype? 1997/02/04)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // tilemap priority is wrong in places (basketball before explosion in attract, highscores) +GAME( 1998, inufuku, 0, inufuku, inufuku, inufuku_state, 0, ROT0, "Video System Co.", "Quiz & Variety Sukusuku Inufuku (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 3on3dunk, 0, _3on3dunk, inufuku, inufuku_state, 0, ROT0, "Video System Co.", "3 On 3 Dunk Madness (US, prototype? 1997/02/04)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // tilemap priority is wrong in places (basketball before explosion in attract, highscores) diff --git a/src/mame/drivers/invqix.cpp b/src/mame/drivers/invqix.cpp index 7bec200f66f..f03e5006da0 100644 --- a/src/mame/drivers/invqix.cpp +++ b/src/mame/drivers/invqix.cpp @@ -277,7 +277,7 @@ WRITE16_MEMBER(invqix_state::vctl_w) static ADDRESS_MAP_START(invqix_prg_map, AS_PROGRAM, 16, invqix_state) AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_REGION("program", 0) AM_RANGE(0x200000, 0x21ffff) AM_RAM - AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write_TMP_register, 0x00ff) + AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write_tmp_register, 0x00ff) AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write, 0xff00) AM_RANGE(0x400002, 0x400003) AM_DEVREAD8("oki", okim9810_device, read, 0xff00) AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("vram") @@ -327,7 +327,7 @@ static INPUT_PORTS_START( invqix ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( invqix, invqix_state ) +static MACHINE_CONFIG_START( invqix ) MCFG_CPU_ADD("maincpu", H8S2394, XTAL_20MHz) MCFG_CPU_PROGRAM_MAP(invqix_prg_map) MCFG_CPU_IO_MAP(invqix_io_map) @@ -364,4 +364,4 @@ ROM_START( invqix ) ROM_LOAD16_WORD_SWAP( "93c46.ic6", 0x000000, 0x000080, CRC(564b744e) SHA1(4d9ea7dc253797c513258d07a936dfb63d8ed18c) ) ROM_END -GAME( 2003, invqix, 0, invqix, invqix, driver_device, 0, ROT270, "Taito / Namco", "Space Invaders / Qix Silver Anniversary Edition (Ver. 2.03)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, invqix, 0, invqix, invqix, invqix_state, 0, ROT270, "Taito / Namco", "Space Invaders / Qix Silver Anniversary Edition (Ver. 2.03)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ipc.cpp b/src/mame/drivers/ipc.cpp index b537510e628..0df64b30376 100644 --- a/src/mame/drivers/ipc.cpp +++ b/src/mame/drivers/ipc.cpp @@ -59,7 +59,7 @@ public: required_device m_terminal; DECLARE_READ8_MEMBER( ipc_f4_r ); DECLARE_READ8_MEMBER( ipc_f5_r ); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); uint8_t *m_ram; uint8_t m_term_data; virtual void machine_reset() override; @@ -99,15 +99,15 @@ INPUT_PORTS_END void ipc_state::machine_reset() { - m_maincpu->set_state_int(I8085_PC, 0xE800); + m_maincpu->set_state_int(i8085a_cpu_device::I8085_PC, 0xE800); } -WRITE8_MEMBER( ipc_state::kbd_put ) +void ipc_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( ipc, ipc_state ) +static MACHINE_CONFIG_START( ipc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8085A, XTAL_19_6608MHz / 4) MCFG_CPU_PROGRAM_MAP(ipc_mem) @@ -115,7 +115,7 @@ static MACHINE_CONFIG_START( ipc, ipc_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ipc_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ipc_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -135,6 +135,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 19??, ipb, 0, 0, ipc, ipc, driver_device, 0, "Intel", "iPB", MACHINE_NO_SOUND) -COMP( 19??, ipc, ipb, 0, ipc, ipc, driver_device, 0, "Intel", "iPC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 19??, ipb, 0, 0, ipc, ipc, ipc_state, 0, "Intel", "iPB", MACHINE_NO_SOUND) +COMP( 19??, ipc, ipb, 0, ipc, ipc, ipc_state, 0, "Intel", "iPC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/ipds.cpp b/src/mame/drivers/ipds.cpp index 102050d1ddc..c92b9eecaea 100644 --- a/src/mame/drivers/ipds.cpp +++ b/src/mame/drivers/ipds.cpp @@ -33,7 +33,7 @@ public: DECLARE_READ8_MEMBER(ipds_b1_r); DECLARE_READ8_MEMBER(ipds_c0_r); DECLARE_WRITE8_MEMBER(ipds_b1_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); I8275_DRAW_CHARACTER_MEMBER( crtc_display_pixels ); uint8_t m_term_data; virtual void machine_reset() override; @@ -121,12 +121,12 @@ static GFXDECODE_START( ipds ) GFXDECODE_END -WRITE8_MEMBER( ipds_state::kbd_put ) +void ipds_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( ipds, ipds_state ) +static MACHINE_CONFIG_START( ipds ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8085A, XTAL_19_6608MHz / 4) MCFG_CPU_PROGRAM_MAP(ipds_mem) @@ -147,7 +147,7 @@ static MACHINE_CONFIG_START( ipds, ipds_state ) MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(ipds_state, crtc_display_pixels) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(ipds_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(ipds_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -164,5 +164,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, ipds, 0, 0, ipds, ipds, driver_device, 0, "Intel", "iPDS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1982, ipds, 0, 0, ipds, ipds, ipds_state, 0, "Intel", "iPDS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/iq151.cpp b/src/mame/drivers/iq151.cpp index 2e57b3bfaf9..e1f76ff7d83 100644 --- a/src/mame/drivers/iq151.cpp +++ b/src/mame/drivers/iq151.cpp @@ -380,7 +380,7 @@ static SLOT_INTERFACE_START(iq151_cart) SLOT_INTERFACE("amos3" , IQ151_AMOS3) // AMOS cart 3 SLOT_INTERFACE_END -static MACHINE_CONFIG_START( iq151, iq151_state ) +static MACHINE_CONFIG_START( iq151 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(iq151_mem) @@ -476,5 +476,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, iq151, 0, 0, iq151, iq151, iq151_state, iq151, "ZPA Novy Bor", "IQ-151", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, iq151, 0, 0, iq151, iq151, iq151_state, iq151, "ZPA Novy Bor", "IQ-151", 0 ) diff --git a/src/mame/drivers/iqblock.cpp b/src/mame/drivers/iqblock.cpp index 843c582b3ce..54fcc6acd6e 100644 --- a/src/mame/drivers/iqblock.cpp +++ b/src/mame/drivers/iqblock.cpp @@ -339,7 +339,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( iqblock, iqblock_state ) +static MACHINE_CONFIG_START( iqblock ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6 MHz */ diff --git a/src/mame/drivers/iris3130.cpp b/src/mame/drivers/iris3130.cpp index 070c1ae8460..96c5ea9f1d7 100644 --- a/src/mame/drivers/iris3130.cpp +++ b/src/mame/drivers/iris3130.cpp @@ -418,7 +418,7 @@ static DEVICE_INPUT_DEFAULTS_START( ip2_terminal ) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( sgi_ip2, sgi_ip2_state ) +static MACHINE_CONFIG_START( sgi_ip2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68020, 16000000) MCFG_CPU_PROGRAM_MAP(sgi_ip2_map) @@ -507,5 +507,5 @@ ROM_START( sgi_ip2 ) ROM_LOAD( "sgi-ip2-u93.ip2.2-008.od", 0x10000, 0x8000, CRC(bf967590) SHA1(1aac48e4f5531a25c5482f64de5cd3c7a9931f11) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS COMP( 1985, sgi_ip2, 0, 0, sgi_ip2, sgi_ip2, sgi_ip2_state, sgi_ip2, "Silicon Graphics Inc", "IRIS 3130 (IP2)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/irisha.cpp b/src/mame/drivers/irisha.cpp index 17d9752d6d3..d39c175397d 100644 --- a/src/mame/drivers/irisha.cpp +++ b/src/mame/drivers/irisha.cpp @@ -57,6 +57,7 @@ private: uint8_t m_keyboard_cnt; uint8_t m_ppi_porta; uint8_t m_ppi_portc; + emu_timer *m_key_timer; void update_speaker(); virtual void machine_start() override; virtual void machine_reset() override; @@ -361,7 +362,8 @@ void irisha_state::machine_start() for ( uint8_t i = 0; i < 10; i++ ) m_io_ports[i] = ioport( keynames[i] ); - machine().scheduler().timer_pulse(attotime::from_msec(30), timer_expired_delegate(FUNC(irisha_state::irisha_key),this)); + m_key_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(irisha_state::irisha_key),this)); + m_key_timer->adjust(attotime::from_msec(30), 0, attotime::from_msec(30)); } void irisha_state::machine_reset() @@ -374,7 +376,7 @@ void irisha_state::machine_reset() } /* Machine driver */ -static MACHINE_CONFIG_START( irisha, irisha_state ) +static MACHINE_CONFIG_START( irisha ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_16MHz / 9) MCFG_CPU_PROGRAM_MAP(irisha_mem) @@ -427,5 +429,5 @@ ROM_START( irisha ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, irisha, 0, 0, irisha, irisha, driver_device, 0, "MGU", "Irisha", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1983, irisha, 0, 0, irisha, irisha, irisha_state, 0, "MGU", "Irisha", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/irobot.cpp b/src/mame/drivers/irobot.cpp index a95673ab6c2..8669ef200e7 100644 --- a/src/mame/drivers/irobot.cpp +++ b/src/mame/drivers/irobot.cpp @@ -298,7 +298,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( irobot, irobot_state ) +static MACHINE_CONFIG_START( irobot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK/8) diff --git a/src/mame/drivers/ironhors.cpp b/src/mame/drivers/ironhors.cpp index 3aa0484b5e4..53f1e5affeb 100644 --- a/src/mame/drivers/ironhors.cpp +++ b/src/mame/drivers/ironhors.cpp @@ -360,7 +360,7 @@ void ironhors_state::machine_reset() m_spriterambank = 0; } -static MACHINE_CONFIG_START( ironhors, ironhors_state ) +static MACHINE_CONFIG_START( ironhors ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809,18432000/6) /* 3.072 MHz??? mod by Shingo Suzuki 1999/10/15 */ @@ -533,6 +533,6 @@ ROM_END * *************************************/ -GAME( 1986, ironhors, 0, ironhors, ironhors, driver_device, 0, ROT0, "Konami", "Iron Horse", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dairesya, ironhors, ironhors, dairesya, driver_device, 0, ROT0, "Konami (Kawakusu license)", "Dai Ressya Goutou (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, farwest, ironhors, farwest, ironhors, driver_device, 0, ROT0, "bootleg?", "Far West", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ironhors, 0, ironhors, ironhors, ironhors_state, 0, ROT0, "Konami", "Iron Horse", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dairesya, ironhors, ironhors, dairesya, ironhors_state, 0, ROT0, "Konami (Kawakusu license)", "Dai Ressya Goutou (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, farwest, ironhors, farwest, ironhors, ironhors_state, 0, ROT0, "bootleg?", "Far West", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp index 9e8d648e93d..c1afa9151f3 100644 --- a/src/mame/drivers/isbc.cpp +++ b/src/mame/drivers/isbc.cpp @@ -25,7 +25,8 @@ able to deal with 256byte sectors so fails to load the irmx 512byte sector image #include "machine/pit8253.h" #include "machine/i8255.h" #include "machine/i8251.h" -#include "machine/z80dart.h" +//#include "machine/z80dart.h" +#include "machine/z80sio.h" #include "bus/centronics/ctronics.h" #include "bus/isbx/isbx.h" #include "machine/isbc_215g.h" @@ -42,27 +43,37 @@ public: m_pic_0(*this, "pic_0"), m_pic_1(*this, "pic_1"), m_centronics(*this, "centronics"), - m_cent_status_in(*this, "cent_status_in") + m_cent_status_in(*this, "cent_status_in"), + m_bios(*this, "user1"), + m_biosram(*this, "biosram") { } required_device m_maincpu; optional_device m_uart8251; - optional_device m_uart8274; +// optional_device m_uart8274; + optional_device m_uart8274; required_device m_pic_0; optional_device m_pic_1; optional_device m_centronics; optional_device m_cent_status_in; + optional_memory_region m_bios; + optional_shared_ptr m_biosram; DECLARE_WRITE_LINE_MEMBER(write_centronics_ack); DECLARE_WRITE_LINE_MEMBER(isbc86_tmr2_w); DECLARE_WRITE_LINE_MEMBER(isbc286_tmr2_w); - DECLARE_WRITE_LINE_MEMBER(isbc_uart8274_irq); +// DECLARE_WRITE_LINE_MEMBER(isbc_uart8274_irq); DECLARE_READ8_MEMBER(get_slave_ack); DECLARE_WRITE8_MEMBER(ppi_c_w); + DECLARE_WRITE8_MEMBER(upperen_w); + DECLARE_READ16_MEMBER(bioslo_r); + DECLARE_WRITE16_MEMBER(bioslo_w); protected: void machine_reset() override; +private: + bool m_upperen; }; void isbc_state::machine_reset() @@ -74,6 +85,7 @@ void isbc_state::machine_reset() } if(m_uart8251) m_uart8251->write_cts(0); + m_upperen = false; } static ADDRESS_MAP_START(rpc86_mem, AS_PROGRAM, 16, isbc_state) @@ -139,8 +151,9 @@ static ADDRESS_MAP_START(isbc286_io, AS_IO, 16, isbc_state) AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff) AM_RANGE(0x00c4, 0x00c7) AM_DEVREADWRITE8("pic_1", pic8259_device, read, write, 0x00ff) AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff) + AM_RANGE(0x00c8, 0x00cf) AM_WRITE8(upperen_w, 0xff00) AM_RANGE(0x00d0, 0x00d7) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) - AM_RANGE(0x00d8, 0x00df) AM_DEVREADWRITE8("uart8274", i8274_device, cd_ba_r, cd_ba_w, 0x00ff) + AM_RANGE(0x00d8, 0x00df) AM_DEVREADWRITE8("uart8274", i8274_new_device, cd_ba_r, cd_ba_w, 0x00ff) AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("isbc_215g", isbc_215g_device, write, 0x00ff) ADDRESS_MAP_END @@ -154,7 +167,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(isbc2861_mem, AS_PROGRAM, 16, isbc_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000, 0xdffff) AM_RAM - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("user1",0) + AM_RANGE(0xe0000, 0xfffff) AM_READWRITE(bioslo_r, bioslo_w) AM_SHARE("biosram") +// AM_RANGE(0x100000, 0x1fffff) AM_RAM // FIXME: XENIX doesn't like this, IRMX is okay with it AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("user1",0) ADDRESS_MAP_END @@ -216,13 +230,35 @@ WRITE8_MEMBER( isbc_state::ppi_c_w ) m_pic_1->ir7_w(0); } +WRITE8_MEMBER(isbc_state::upperen_w) +{ + m_upperen = true; +} + +READ16_MEMBER(isbc_state::bioslo_r) +{ + if(m_upperen) + return m_biosram[offset]; + else if(offset >= 0x8000) + return m_bios->as_u16(offset - 0x8000); + return 0xffff; +} + +WRITE16_MEMBER(isbc_state::bioslo_w) +{ + if(m_upperen) + COMBINE_DATA(&m_biosram[offset]); +} + +#if 0 WRITE_LINE_MEMBER(isbc_state::isbc_uart8274_irq) { m_uart8274->m1_r(); // always set m_pic_0->ir6_w(state); } +#endif -static MACHINE_CONFIG_START( isbc86, isbc_state ) +static MACHINE_CONFIG_START( isbc86 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, XTAL_5MHz) MCFG_CPU_PROGRAM_MAP(isbc86_mem) @@ -254,7 +290,7 @@ static MACHINE_CONFIG_START( isbc86, isbc_state ) MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", isbc86_terminal) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rpc86, isbc_state ) +static MACHINE_CONFIG_START( rpc86 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, XTAL_5MHz) MCFG_CPU_PROGRAM_MAP(rpc86_mem) @@ -311,7 +347,7 @@ static MACHINE_CONFIG_DERIVED( isbc8630, rpc86 ) MCFG_ISBC_215_IRQ(DEVWRITELINE("pic_0", pic8259_device, ir5_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( isbc286, isbc_state ) +static MACHINE_CONFIG_START( isbc286 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80286, XTAL_16MHz/2) MCFG_CPU_PROGRAM_MAP(isbc286_mem) @@ -325,7 +361,8 @@ static MACHINE_CONFIG_START( isbc286, isbc_state ) MCFG_PIT8253_CLK0(XTAL_22_1184MHz/18) MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("pic_0", pic8259_device, ir0_w)) MCFG_PIT8253_CLK1(XTAL_22_1184MHz/18) - MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("uart8274", z80dart_device, rxtxcb_w)) +// MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("uart8274", z80dart_device, rxtxcb_w)) + MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("uart8274", i8274_new_device, rxtxcb_w)) MCFG_PIT8253_CLK2(XTAL_22_1184MHz/18) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(isbc_state, isbc286_tmr2_w)) @@ -344,6 +381,7 @@ static MACHINE_CONFIG_START( isbc286, isbc_state ) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") MCFG_I8274_ADD("uart8274", XTAL_16MHz/4, 0, 0, 0, 0) +#if 0 MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_txd)) MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_dtr)) MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_rts)) @@ -351,16 +389,38 @@ static MACHINE_CONFIG_START( isbc286, isbc_state ) MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_dtr)) MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_rts)) MCFG_Z80DART_OUT_INT_CB(WRITELINE(isbc_state, isbc_uart8274_irq)) +#else + MCFG_Z80SIO_OUT_TXDA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_txd)) + MCFG_Z80SIO_OUT_DTRA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_dtr)) + MCFG_Z80SIO_OUT_RTSA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_rts)) + MCFG_Z80SIO_OUT_TXDB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_txd)) + MCFG_Z80SIO_OUT_DTRB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_dtr)) + MCFG_Z80SIO_OUT_RTSB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_rts)) +// MCFG_Z80SIO_OUT_INT_CB(WRITELINE(isbc_state, isbc_uart8274_irq)) + MCFG_Z80SIO_OUT_INT_CB(DEVWRITELINE("pic_0", pic8259_device, ir6_w)) +#endif MCFG_RS232_PORT_ADD("rs232a", default_rs232_devices, nullptr) +#if 0 MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart8274", z80dart_device, rxa_w)) MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart8274", z80dart_device, dcda_w)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart8274", z80dart_device, ctsa_w)) +#else + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart8274", i8274_new_device, rxa_w)) + MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart8274", i8274_new_device, dcda_w)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart8274", i8274_new_device, ctsa_w)) +#endif MCFG_RS232_PORT_ADD("rs232b", default_rs232_devices, "terminal") +#if 0 MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart8274", z80dart_device, rxb_w)) MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart8274", z80dart_device, dcdb_w)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart8274", z80dart_device, ctsb_w)) +#else + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart8274", i8274_new_device, rxb_w)) + MCFG_RS232_DCD_HANDLER(DEVWRITELINE("uart8274", i8274_new_device, dcdb_w)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart8274", i8274_new_device, ctsb_w)) +#endif MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", isbc286_terminal) MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, nullptr) @@ -413,6 +473,78 @@ ROM_START( isbc286 ) ROM_LOAD16_BYTE( "u36.bin", 0x00000, 0x10000, CRC(22db075f) SHA1(fd29ea77f5fc0697c8f8b66aca549aad5b9db3ea)) ROM_END +/* + * :uart8274 A Reg 00 <- 18 - Channel reset command + * :uart8274 A Reg 04 <- 44 - x16 clock, 1 stop bit, no parity + * :uart8274 A Reg 05 <- ea - Tx Enabled, Tx 8 bits, Send Break 0, RTS=0, ?? - Read out Status Register 1 (Errors and All Sent flag) + * :uart8274 A Reg 05 <- e2 - Tx Disabled, Tx 8 bits, Send Break 0, RTS=0, DTR=0 + * :uart8274 A Reg 03 <- c0 - Rx Disabled, Rx 8 bits, No Auto Enables + * :uart8274 A Reg 05 <- ea - Tx Enabled, Tx 8 bits, Send Break 0, RTS=0, DTR=0 + * :uart8274 A Reg 04 <- 4e - x16 clock, 2 stop bit, even parity but parity disabled + * :uart8274 A Reg 05 <- ea - Tx Enabled, Tx 8 bits, Send Break 0, RTS=0, DTR=0 + * :uart8274 A Reg 03 <- c1 - Rx Enabled, Rx 8 bits, No Auto Enables + * :uart8274 A Reg 07 <- 00 - Hi SYNC bits + * :uart8274 A Reg 06 <- 00 - Lo SYNC bits + * :uart8274 A Reg 02 <- 04 - RTSB selected, non vectored mode, 85-1 mode selected, A over B interleaved int prios + * :uart8274 B Reg 02 <- 26 - interrupt vector 26 + * :uart8274 A Reg 01 <- 00 - Rx INT/DMA int disabled, no vector modification + * :uart8274 A Reg 02 <- 04 - RTSB selected, non vectored mode, 85-1 mode selected, A over B interleaved int prios + + * :uart8274 B Reg 02 <- a5 - interrupt vector a5 + * :uart8274 B Reg 02 <- 00 - interrupt vector 0 + + * :uart8274 B Reg 04 <- 44 - x16 clock, 1 stop bit, no parity + * :uart8274 B Reg 01 <- 1e - Wait disabled, Int mode 3, vector modified, Tx int/DMA enabled + * :uart8274 A Reg 04 <- 44 - x16 clock, 1 stop bit, no parity + * :uart8274 A Reg 01 <- 1e - Wait disabled, Int mode 3, vector modified, Tx int/DMA enabled + + * :uart8274 B Reg 04 <- 44 - x16 clock, 1 stop bit, no parity + * :uart8274 B Reg 01 <- 1e - Wait disabled, Int mode 3, vector modified, Tx int/DMA enabled + * :uart8274 B Reg 03 <- c1 - Rx Enabled, Rx 8 bits, No Auto Enables + * :uart8274 B Reg 05 <- ea - Tx Enabled, Tx 8 bits, Send Break 0, RTS=0, DTR=0 + + * :uart8274 B Reg 04 <- 44 - x16 clock, 1 stop bit, no parity + * :uart8274 B Reg 01 <- 1e - Wait disabled, Int mode 3, vector modified, Tx int/DMA enabled + * :uart8274 B Reg 03 <- c1 - Rx Enabled, Rx 8 bits, No Auto Enables + * :uart8274 B Reg 05 <- ea - Tx Enabled, Tx 8 bits, Send Break 0, RTS=0, DTR=0 +*/ ROM_START( isbc2861 ) ROM_REGION( 0x10000, "user1", ROMREGION_ERASEFF ) ROM_SYSTEM_BIOS( 0, "v11", "iSDM Monitor V1.1" ) @@ -442,11 +574,11 @@ ROM_START( rpc86 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 19??, rpc86, 0, 0, rpc86, isbc, driver_device, 0, "Intel", "RPC 86",MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1978, isbc86, 0, 0, isbc86, isbc, driver_device, 0, "Intel", "iSBC 86/12A",MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1981, isbc8605, 0, 0, isbc8605, isbc, driver_device, 0, "Intel", "iSBC 86/05",MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1981, isbc8630, 0, 0, isbc8630, isbc, driver_device, 0, "Intel", "iSBC 86/30",MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 19??, isbc286, 0, 0, isbc286, isbc, driver_device, 0, "Intel", "iSBC 286",MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1983, isbc2861, 0, 0, isbc2861, isbc, driver_device, 0, "Intel", "iSBC 286/10", MACHINE_NO_SOUND_HW) -COMP( 1983, isbc28612,0, 0, isbc2861, isbc, driver_device, 0, "Intel", "iSBC 286/12", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 19??, rpc86, 0, 0, rpc86, isbc, isbc_state, 0, "Intel", "RPC 86", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 1978, isbc86, 0, 0, isbc86, isbc, isbc_state, 0, "Intel", "iSBC 86/12A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 1981, isbc8605, 0, 0, isbc8605, isbc, isbc_state, 0, "Intel", "iSBC 86/05", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 1981, isbc8630, 0, 0, isbc8630, isbc, isbc_state, 0, "Intel", "iSBC 86/30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 19??, isbc286, 0, 0, isbc286, isbc, isbc_state, 0, "Intel", "iSBC 286", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 1983, isbc2861, 0, 0, isbc2861, isbc, isbc_state, 0, "Intel", "iSBC 286/10", MACHINE_NO_SOUND_HW) +COMP( 1983, isbc28612, 0, 0, isbc2861, isbc, isbc_state, 0, "Intel", "iSBC 286/12", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/isbc8010.cpp b/src/mame/drivers/isbc8010.cpp index e7e0f9a60cc..a3f662c6a0c 100644 --- a/src/mame/drivers/isbc8010.cpp +++ b/src/mame/drivers/isbc8010.cpp @@ -159,7 +159,7 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) // set up terminal to default to DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( isbc8010, isbc8010_state ) +static MACHINE_CONFIG_START( isbc8010 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080A, XTAL_18_432MHz/9) MCFG_CPU_PROGRAM_MAP(isbc8010_mem) @@ -260,7 +260,7 @@ ROM_END #define rom_isbc8010a rom_isbc8010 #define rom_isbc8010b rom_isbc8010 -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1975, isbc8010, 0, 0, isbc8010, isbc8010, driver_device, 0, "Intel", "iSBC 80/10", MACHINE_NO_SOUND_HW ) -COMP( 1977, isbc8010a, isbc8010, 0, isbc8010a, isbc8010, driver_device, 0, "Intel", "iSBC 80/10A", MACHINE_NO_SOUND_HW ) -COMP( 1979, isbc8010b, isbc8010, 0, isbc8010b, isbc8010, driver_device, 0, "Intel", "iSBC 80/10B", MACHINE_NO_SOUND_HW ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1975, isbc8010, 0, 0, isbc8010, isbc8010, isbc8010_state, 0, "Intel", "iSBC 80/10", MACHINE_NO_SOUND_HW ) +COMP( 1977, isbc8010a, isbc8010, 0, isbc8010a, isbc8010, isbc8010_state, 0, "Intel", "iSBC 80/10A", MACHINE_NO_SOUND_HW ) +COMP( 1979, isbc8010b, isbc8010, 0, isbc8010b, isbc8010, isbc8010_state, 0, "Intel", "iSBC 80/10B", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/isbc8030.cpp b/src/mame/drivers/isbc8030.cpp index bc4b96f2877..0c4437fc8e5 100644 --- a/src/mame/drivers/isbc8030.cpp +++ b/src/mame/drivers/isbc8030.cpp @@ -135,7 +135,7 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) // set up terminal to default to DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( isbc8030, isbc8030_state ) +static MACHINE_CONFIG_START( isbc8030 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_22_1184MHz / 4) MCFG_CPU_PROGRAM_MAP(isbc8030_mem) @@ -173,5 +173,5 @@ ROM_START( isbc8030 ) ROM_LOAD( "mon830.bin", 0x0000, 0x0800, CRC(cda15115) SHA1(242dad14a919568178b363c3e27f22ec0a5849b3)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, isbc8030, 0, 0, isbc8030, isbc8030, driver_device, 0, "Intel", "iSBC 80/30", MACHINE_NO_SOUND_HW ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1978, isbc8030, 0, 0, isbc8030, isbc8030, isbc8030_state, 0, "Intel", "iSBC 80/30", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/iskr103x.cpp b/src/mame/drivers/iskr103x.cpp index 3edef43c13d..638423fdb8d 100644 --- a/src/mame/drivers/iskr103x.cpp +++ b/src/mame/drivers/iskr103x.cpp @@ -2,15 +2,15 @@ // copyright-holders:Sergey Svishchev /*************************************************************************** - drivers/iskr103x.c + drivers/iskr103x.c - Driver file for Iskra-1030, 1031 + Driver file for Iskra-1030, 1031 - TODO - - fix cyrillic chargen upload for CGA and MDA - - replace DIP switch definition - - keyboard test is not passing (code 301) - - hard disk is connected but untested + TODO + - fix cyrillic chargen upload for CGA and MDA + - replace DIP switch definition + - keyboard test is not passing (code 301) + - hard disk is connected but untested ***************************************************************************/ @@ -60,7 +60,7 @@ static DEVICE_INPUT_DEFAULTS_START(iskr1031) DEVICE_INPUT_DEFAULTS_END // XXX -static MACHINE_CONFIG_START( iskr1030m, iskr103x_state ) +static MACHINE_CONFIG_START( iskr1030m ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 4772720) MCFG_CPU_PROGRAM_MAP(iskr1031_map) @@ -114,6 +114,6 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP ( 1989, iskr1030m, ibm5150, 0, iskr1030m, 0, driver_device, 0, "Schetmash", "Iskra 1030M", MACHINE_NOT_WORKING) -COMP ( 1989, iskr1031, ibm5150, 0, iskr1031, 0, driver_device, 0, "", "Iskra 1031", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP ( 1989, iskr1030m, ibm5150, 0, iskr1030m, 0, iskr103x_state, 0, "Schetmash", "Iskra 1030M", MACHINE_NOT_WORKING ) +COMP ( 1989, iskr1031, ibm5150, 0, iskr1031, 0, iskr103x_state, 0, "", "Iskra 1031", 0 ) diff --git a/src/mame/drivers/istellar.cpp b/src/mame/drivers/istellar.cpp index 4a273d6637c..3f28c9cd07b 100644 --- a/src/mame/drivers/istellar.cpp +++ b/src/mame/drivers/istellar.cpp @@ -339,7 +339,7 @@ INTERRUPT_GEN_MEMBER(istellar_state::vblank_callback_istellar) /* DRIVER */ -static MACHINE_CONFIG_START( istellar, istellar_state ) +static MACHINE_CONFIG_START( istellar ) /* main cpu */ MCFG_CPU_ADD("maincpu", Z80, GUESSED_CLOCK) MCFG_CPU_PROGRAM_MAP(z80_0_mem) @@ -434,5 +434,5 @@ DRIVER_INIT_MEMBER(istellar_state,istellar) #endif } -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS) */ -GAME( 1983, istellar, 0, istellar, istellar, istellar_state, istellar, ROT0, "Funai/Gakken", "Interstellar Laser Fantasy", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS) +GAME( 1983, istellar, 0, istellar, istellar, istellar_state, istellar, ROT0, "Funai/Gakken", "Interstellar Laser Fantasy", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/istrebiteli.cpp b/src/mame/drivers/istrebiteli.cpp index 9848869264d..8f413efc0e2 100644 --- a/src/mame/drivers/istrebiteli.cpp +++ b/src/mame/drivers/istrebiteli.cpp @@ -56,14 +56,14 @@ private: uint8_t m_prev_data; }; -extern const device_type ISTREBITELI_SOUND; +DECLARE_DEVICE_TYPE(ISTREBITELI_SOUND, istrebiteli_sound_device) ////////////////////////////////////////////////////////////// -const device_type ISTREBITELI_SOUND = device_creator; +DEFINE_DEVICE_TYPE(ISTREBITELI_SOUND, istrebiteli_sound_device, "istrebiteli_sound", "Istrebiteli Sound") istrebiteli_sound_device::istrebiteli_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ISTREBITELI_SOUND, "Istrebiteli Sound", tag, owner, clock, "istrebiteli_sound", __FILE__), + : device_t(mconfig, ISTREBITELI_SOUND, tag, owner, clock), device_sound_interface(mconfig, *this), m_channel(nullptr), m_rom(nullptr), @@ -94,7 +94,7 @@ void istrebiteli_sound_device::sound_stream_update(sound_stream &stream, stream_ // below is huge guess if ((m_prev_data & 0x40) == 0) // b6 noice enable ? - smpl &= rand() & 1; + smpl &= machine().rand() & 1; smpl *= (m_prev_data & 0x80) ? 1000 : 4000; // b7 volume ? *sample++ = smpl; @@ -413,7 +413,7 @@ static GFXDECODE_START( istrebiteli ) GFXDECODE_ENTRY( "sprite", 0x0200, projectile_layout, 0, 2 ) GFXDECODE_END -static MACHINE_CONFIG_START( istreb, istrebiteli_state) +static MACHINE_CONFIG_START( istreb ) /* basic machine hardware */ MCFG_CPU_ADD(I8080_TAG, I8080, XTAL_8MHz / 4) // KR580VM80A MCFG_CPU_PROGRAM_MAP(mem_map) @@ -466,4 +466,4 @@ ROM_START( istreb ) ROM_LOAD( "003-w3.bin", 0x000, 0x200, CRC(54eb4893) SHA1(c7a4724045c645ab728074ed7fef1882d9776005) ) ROM_END -GAME( 198?, istreb, 0, istreb, istreb, driver_device, 0, ROT0, "Terminal", "Istrebiteli", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 198?, istreb, 0, istreb, istreb, istrebiteli_state, 0, ROT0, "Terminal", "Istrebiteli", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/iteagle.cpp b/src/mame/drivers/iteagle.cpp index 4bef385c3ab..82f9c71dd9a 100644 --- a/src/mame/drivers/iteagle.cpp +++ b/src/mame/drivers/iteagle.cpp @@ -153,7 +153,7 @@ void iteagle_state::machine_reset() #define PCI_ID_VIDEO ":pci:09.0" #define PCI_ID_EEPROM ":pci:0a.0" -static MACHINE_CONFIG_START( iteagle, iteagle_state ) +static MACHINE_CONFIG_START( iteagle ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", VR4310LE, 166666666) @@ -162,6 +162,8 @@ static MACHINE_CONFIG_START( iteagle, iteagle_state ) MCFG_PCI_ROOT_ADD( ":pci") MCFG_VRC4373_ADD( PCI_ID_NILE, ":maincpu") + MCFG_VRC4373_SET_RAM(0x00800000) + MCFG_VRC4373_SET_SIMM0(0x02000000) MCFG_ITEAGLE_PERIPH_ADD( PCI_ID_PERIPH) MCFG_IDE_PCI_ADD( PCI_ID_IDE, 0x1080C693, 0x00, 0x0) MCFG_IDE_PCI_IRQ_ADD( ":maincpu", MIPS3_IRQ2) @@ -583,20 +585,20 @@ ROM_END * *************************************/ -GAME( 2000, iteagle, 0, iteagle, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Eagle BIOS", MACHINE_IS_BIOS_ROOT ) -GAME( 1998, virtpool, iteagle, virtpool, virtpool, driver_device, 0, ROT0, "Incredible Technologies", "Virtual Pool", MACHINE_NOT_WORKING ) // random lockups on loading screens -GAME( 2002, carnking, iteagle, carnking, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", 0 ) -GAME( 2000, gtfore01, iteagle, gtfore01, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! (v1.00.25)", 0 ) -GAME( 2001, gtfore02, iteagle, gtfore02, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2002 (v2.01.06)", 0 ) -GAME( 2002, gtfore03, iteagle, gtfore03, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2003 (v3.00.10)", 0 ) -GAME( 2002, gtfore03a, gtfore03, gtfore03, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2003 (v3.00.09)", 0 ) -GAME( 2003, gtfore04, iteagle, gtfore04, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2004 Extra (v4.00.08)", 0 ) -GAME( 2003, gtfore04a, gtfore04, gtfore04, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2004 (v4.00.00)", 0 ) -GAME( 2004, gtfore05, iteagle, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.06)", 0 ) -GAME( 2004, gtfore05a, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.02)", 0 ) -GAME( 2004, gtfore05b, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.00)", 0 ) -GAME( 2004, gtfore05c, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.00.00)", 0 ) -GAME( 2005, gtfore06, iteagle, gtfore06, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2006 Complete (v6.00.01)", 0 ) -GAME( 2002, bbhsc, iteagle, bbhsc, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING ) // doesn't boot -GAME( 2002, bbh2sp, iteagle, bbh2sp, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter II - Sportsman's Paradise (v2.02.11)", MACHINE_NOT_WORKING ) // SW51-2 needs to be off -GAME( 2006, bbhcotw, iteagle, bbhcotw, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING ) // random lockups +GAME( 2000, iteagle, 0, iteagle, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Eagle BIOS", MACHINE_IS_BIOS_ROOT ) +GAME( 1998, virtpool, iteagle, virtpool, virtpool, iteagle_state, 0, ROT0, "Incredible Technologies", "Virtual Pool", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // random lockups on loading screens +GAME( 2002, carnking, iteagle, carnking, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, gtfore01, iteagle, gtfore01, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! (v1.00.25)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, gtfore02, iteagle, gtfore02, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2002 (v2.01.06)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, gtfore03, iteagle, gtfore03, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2003 (v3.00.10)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, gtfore03a, gtfore03, gtfore03, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2003 (v3.00.09)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, gtfore04, iteagle, gtfore04, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2004 Extra (v4.00.08)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, gtfore04a, gtfore04, gtfore04, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2004 (v4.00.00)", MACHINE_SUPPORTS_SAVE ) +GAME( 2004, gtfore05, iteagle, gtfore05, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.06)", MACHINE_SUPPORTS_SAVE ) +GAME( 2004, gtfore05a, gtfore05, gtfore05, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.02)", MACHINE_SUPPORTS_SAVE ) +GAME( 2004, gtfore05b, gtfore05, gtfore05, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.00)", MACHINE_SUPPORTS_SAVE ) +GAME( 2004, gtfore05c, gtfore05, gtfore05, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.00.00)", MACHINE_SUPPORTS_SAVE ) +GAME( 2005, gtfore06, iteagle, gtfore06, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2006 Complete (v6.00.01)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, bbhsc, iteagle, bbhsc, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // doesn't boot +GAME( 2002, bbh2sp, iteagle, bbh2sp, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter II - Sportsman's Paradise (v2.02.11)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // SW51-2 needs to be off +GAME( 2006, bbhcotw, iteagle, bbhcotw, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // random lockups diff --git a/src/mame/drivers/itech32.cpp b/src/mame/drivers/itech32.cpp index 9aa1288a2f9..eaffb85ebbb 100644 --- a/src/mame/drivers/itech32.cpp +++ b/src/mame/drivers/itech32.cpp @@ -1672,7 +1672,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( timekill, itech32_state ) +static MACHINE_CONFIG_START( timekill ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp index 4ceb96e8ef3..d75b7071c19 100644 --- a/src/mame/drivers/itech8.cpp +++ b/src/mame/drivers/itech8.cpp @@ -323,10 +323,9 @@ ITV4400 = IT custom blitter - --------------------- - Slick Shot/Poker Dice - --------------------- - (Likely Dyno Bop as well) + ------------------------------ + Slick Shot/Poker Dice/Dyno Bop + ------------------------------ +------------------------------------+-+ | Z80PGM 4Mhz itvs5 | | @@ -1656,7 +1655,7 @@ WRITE_LINE_MEMBER(itech8_state::generate_tms34061_interrupt) /************* core pieces ******************/ -static MACHINE_CONFIG_START( itech8_core_lo, itech8_state ) +static MACHINE_CONFIG_START( itech8_core_lo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, CLOCK_8MHz/4) @@ -1713,7 +1712,7 @@ static MACHINE_CONFIG_FRAGMENT( itech8_sound_ym2203 ) MCFG_SOUND_ROUTE(2, "mono", 0.07) MCFG_SOUND_ROUTE(3, "mono", 0.75) - MCFG_OKIM6295_ADD("oki", CLOCK_8MHz/8, OKIM6295_PIN7_HIGH) // was /128, not /132, so unsure so pin 7 not verified + MCFG_OKIM6295_ADD("oki", CLOCK_8MHz/8, PIN7_HIGH) // was /128, not /132, so unsure so pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) MACHINE_CONFIG_END @@ -1748,7 +1747,7 @@ static MACHINE_CONFIG_FRAGMENT( itech8_sound_ym3812 ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) - MCFG_OKIM6295_ADD("oki", CLOCK_8MHz/8, OKIM6295_PIN7_HIGH) // was /128, not /132, so unsure so pin 7 not verified + MCFG_OKIM6295_ADD("oki", CLOCK_8MHz/8, PIN7_HIGH) // was /128, not /132, so unsure so pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) MACHINE_CONFIG_END @@ -1764,7 +1763,7 @@ static MACHINE_CONFIG_FRAGMENT( itech8_sound_ym3812_external ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", M6809_FIRQ_LINE)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) - MCFG_OKIM6295_ADD("oki", CLOCK_8MHz/8, OKIM6295_PIN7_HIGH) // was /128, not /132, so unsure so pin 7 not verified + MCFG_OKIM6295_ADD("oki", CLOCK_8MHz/8, PIN7_HIGH) // was /128, not /132, so unsure so pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) MACHINE_CONFIG_END @@ -2247,16 +2246,14 @@ ROM_START( slikshot16 ) ROM_END - - ROM_START( dynobop ) ROM_REGION( 0x1c000, "maincpu", 0 ) - ROM_LOAD( "dynobop.u5", 0x04000, 0x4000, CRC(98452c40) SHA1(9b9316fc258792e0d825f16e0fadf8e0c35a864e) ) - ROM_CONTINUE( 0x10000, 0xc000 ) - ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 ) + ROM_LOAD( "dyno_pgm_1.1_u5.u5", 0x04000, 0x4000, CRC(98452c40) SHA1(9b9316fc258792e0d825f16e0fadf8e0c35a864e) ) + ROM_CONTINUE( 0x10000, 0xc000 ) + ROM_COPY( "maincpu", 0x14000, 0x08000, 0x8000 ) ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "dynobop.u27", 0x08000, 0x8000, CRC(a37d862b) SHA1(922eeae184df2c5c28040da27699dd55744f8dca) ) + ROM_LOAD( "dyno_snd-u27.u27", 0x08000, 0x8000, CRC(a37d862b) SHA1(922eeae184df2c5c28040da27699dd55744f8dca) ) ROM_REGION( 0x10000, "sub", 0 ) ROM_LOAD( "dynobop.u53", 0x00000, 0x0800, CRC(04b85918) SHA1(409aef2e71937c7654334999df9313909d757966) ) @@ -2265,11 +2262,11 @@ ROM_START( dynobop ) ROM_CONTINUE( 0x00000, 0x0800 ) ROM_REGION( 0xc0000, "grom", 0 ) - ROM_LOAD( "dynobop.gr0", 0x00000, 0x20000, CRC(3525a7a3) SHA1(fe0b08203c135d55507506936dc34e1503e4906b) ) - ROM_LOAD( "dynobop.gr1", 0x20000, 0x20000, CRC(1544a232) SHA1(60bba76537c82887db8e38c6a87c528afdd385d0) ) + ROM_LOAD( "grom00-dyno.grom0", 0x00000, 0x20000, CRC(3525a7a3) SHA1(fe0b08203c135d55507506936dc34e1503e4906b) ) + ROM_LOAD( "grom01-dyno.grom1", 0x20000, 0x20000, CRC(1544a232) SHA1(60bba76537c82887db8e38c6a87c528afdd385d0) ) ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "dynobop.sr0", 0x00000, 0x10000, CRC(b355bf1d) SHA1(c9745638feb33ec181b8d9a894421f9854286cd9) ) + ROM_LOAD( "dyno_vr-srom0.srom0", 0x00000, 0x10000, CRC(b355bf1d) SHA1(c9745638feb33ec181b8d9a894421f9854286cd9) ) ROM_END @@ -2740,47 +2737,47 @@ DRIVER_INIT_MEMBER(itech8_state,rimrockn) *************************************/ /* Wheel of Fortune-style PCB */ -GAME( 1989, wfortune, 0, wfortune, wfortune, driver_device, 0, ROT0, "GameTek", "Wheel Of Fortune (set 1)", 0 ) -GAME( 1989, wfortunea,wfortune, wfortune, wfortune, driver_device, 0, ROT0, "GameTek", "Wheel Of Fortune (set 2)", 0 ) +GAME( 1989, wfortune, 0, wfortune, wfortune, itech8_state, 0, ROT0, "GameTek", "Wheel Of Fortune (set 1)", 0 ) +GAME( 1989, wfortunea,wfortune, wfortune, wfortune, itech8_state, 0, ROT0, "GameTek", "Wheel Of Fortune (set 2)", 0 ) /* Grudge Match-style PCB */ -GAME( 1989, grmatch, 0, grmatch, grmatch, itech8_state, grmatch, ROT0, "Yankee Game Technology", "Grudge Match (Yankee Game Technology)", 0 ) +GAME( 1989, grmatch, 0, grmatch, grmatch, itech8_state, grmatch, ROT0, "Yankee Game Technology", "Grudge Match (Yankee Game Technology)", 0 ) /* Strata Bowling-style PCB */ -GAME( 1990, stratab, 0, stratab_hi, stratab, driver_device, 0, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V3)", 0 ) // still says V1 in service mode? -GAME( 1990, stratab1, stratab, stratab_hi, stratab, driver_device, 0, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V1)", 0 ) -GAME( 1990, gtg, 0, stratab_hi, gtg, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf (Joystick, v3.1)", 0 ) -GAME( 1989, gtgt, gtg, stratab_hi, gtgt, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf (Trackball, v2.0)", 0 ) -GAME( 1989, gtgt1, gtg, stratab_hi, gtgt, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf (Trackball, v1.0)", 0 ) -GAME( 1989, gtg2t, gtg2, stratab_hi, gtg2t, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf II (Trackball, V1.1)", 0 ) -GAME( 1991, gtg2j, gtg2, stratab_lo, gtg, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf II (Joystick, V1.0)", 0 ) +GAME( 1990, stratab, 0, stratab_hi, stratab, itech8_state, 0, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V3)", 0 ) // still says V1 in service mode? +GAME( 1990, stratab1, stratab, stratab_hi, stratab, itech8_state, 0, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V1)", 0 ) +GAME( 1990, gtg, 0, stratab_hi, gtg, itech8_state, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf (Joystick, v3.1)", 0 ) +GAME( 1989, gtgt, gtg, stratab_hi, gtgt, itech8_state, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf (Trackball, v2.0)", 0 ) +GAME( 1989, gtgt1, gtg, stratab_hi, gtgt, itech8_state, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf (Trackball, v1.0)", 0 ) +GAME( 1989, gtg2t, gtg2, stratab_hi, gtg2t, itech8_state, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf II (Trackball, V1.1)", 0 ) +GAME( 1991, gtg2j, gtg2, stratab_lo, gtg, itech8_state, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf II (Joystick, V1.0)", 0 ) /* Slick Shot-style PCB */ GAME( 1990, slikshot, 0, slikshot_hi, slikshot, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Slick Shot (V2.2)", MACHINE_MECHANICAL ) GAME( 1990, slikshot17,slikshot, slikshot_hi, slikshot, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Slick Shot (V1.7)", MACHINE_MECHANICAL ) GAME( 1990, slikshot16,slikshot, slikshot_hi, slikshot, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Slick Shot (V1.6)", MACHINE_MECHANICAL ) -GAME( 1990, dynobop, 0, slikshot_hi, dynobop, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Dyno Bop", MACHINE_MECHANICAL ) +GAME( 1990, dynobop, 0, slikshot_hi, dynobop, itech8_state, slikshot, ROT90, "Grand Products/Incredible Technologies", "Dyno Bop (V1.1)", MACHINE_MECHANICAL ) GAME( 1990, sstrike, 0, sstrike, sstrike, itech8_state, sstrike, ROT270, "Strata/Incredible Technologies", "Super Strike Bowling", MACHINE_MECHANICAL ) -GAME( 1991, pokrdice, 0, slikshot_lo_noz80, pokrdice, driver_device,0, ROT90, "Strata/Incredible Technologies", "Poker Dice", 0 ) +GAME( 1991, pokrdice, 0, slikshot_lo_noz80, pokrdice, itech8_state, 0, ROT90, "Strata/Incredible Technologies", "Poker Dice", 0 ) GAME( 1990, stratabs, stratab, sstrike, stratabs, itech8_state, sstrike, ROT270, "Strata/Incredible Technologies", "Strata Bowling (V1 4T, Super Strike Bowling type PCB)", MACHINE_NOT_WORKING ) // need to figure out the control hookup for this set, service mode indicates it's still a trackball like stratab /* Hot Shots Tennis-style PCB */ GAME( 1990, hstennis, 0, hstennis_hi, hstennis, itech8_state, hstennis, ROT90, "Strata/Incredible Technologies", "Hot Shots Tennis (V1.1)", 0 ) GAME( 1990, hstennis10,hstennis, hstennis_hi, hstennis, itech8_state, hstennis, ROT90, "Strata/Incredible Technologies", "Hot Shots Tennis (V1.0)", 0 ) GAME( 1991, arlingtn, 0, hstennis_hi, arlingtn, itech8_state, arligntn, ROT0, "Strata/Incredible Technologies", "Arlington Horse Racing (v1.21-D)", 0 ) -GAME( 1991, peggle, 0, hstennis_lo, peggle, itech8_state, peggle, ROT90, "Strata/Incredible Technologies", "Peggle (Joystick, v1.0)", 0 ) -GAME( 1991, pegglet, peggle, hstennis_lo, pegglet, itech8_state, peggle, ROT90, "Strata/Incredible Technologies", "Peggle (Trackball, v1.0)", 0 ) +GAME( 1991, peggle, 0, hstennis_lo, peggle, itech8_state, peggle, ROT90, "Strata/Incredible Technologies", "Peggle (Joystick, v1.0)", 0 ) +GAME( 1991, pegglet, peggle, hstennis_lo, pegglet, itech8_state, peggle, ROT90, "Strata/Incredible Technologies", "Peggle (Trackball, v1.0)", 0 ) GAME( 1992, neckneck, 0, hstennis_lo, neckneck, itech8_state, neckneck, ROT0, "Bundra Games/Incredible Technologies", "Neck-n-Neck (v1.2)", 0 ) /* Rim Rockin' Basketball-style PCB */ -GAME( 1991, rimrockn, 0, rimrockn, rimrockn, itech8_state, rimrockn, ROT0, "Strata/Incredible Technologies", "Rim Rockin' Basketball (V2.2)", 0 ) -GAME( 1991, rimrockn20, rimrockn, rimrockn, rimrockn, itech8_state, rimrockn, ROT0, "Strata/Incredible Technologies", "Rim Rockin' Basketball (V2.0)", 0 ) -GAME( 1991, rimrockn16, rimrockn, rimrockn, rimrockn, itech8_state, rimrockn, ROT0, "Strata/Incredible Technologies", "Rim Rockin' Basketball (V1.6)", 0 ) -GAME( 1991, rimrockn12, rimrockn, rimrockn, rimrockn, itech8_state, rimrockn, ROT0, "Strata/Incredible Technologies", "Rim Rockin' Basketball (V1.2)", 0 ) +GAME( 1991, rimrockn, 0, rimrockn, rimrockn, itech8_state, rimrockn, ROT0, "Strata/Incredible Technologies", "Rim Rockin' Basketball (V2.2)", 0 ) +GAME( 1991, rimrockn20, rimrockn, rimrockn, rimrockn, itech8_state, rimrockn, ROT0, "Strata/Incredible Technologies", "Rim Rockin' Basketball (V2.0)", 0 ) +GAME( 1991, rimrockn16, rimrockn, rimrockn, rimrockn, itech8_state, rimrockn, ROT0, "Strata/Incredible Technologies", "Rim Rockin' Basketball (V1.6)", 0 ) +GAME( 1991, rimrockn12, rimrockn, rimrockn, rimrockn, itech8_state, rimrockn, ROT0, "Strata/Incredible Technologies", "Rim Rockin' Basketball (V1.2)", 0 ) /* Ninja Clowns-style PCB */ -GAME( 1991, ninclown, 0, ninclown, ninclown, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Ninja Clowns (08/27/91)", 0 ) +GAME( 1991, ninclown, 0, ninclown, ninclown, itech8_state, 0, ROT0, "Strata/Incredible Technologies", "Ninja Clowns (08/27/91)", 0 ) /* Golden Tee Golf II-style PCB */ -GAME( 1992, gpgolf, 0, gtg2, gpgolf, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Golden Par Golf (Joystick, V1.1)", 0 ) -GAME( 1992, gtg2, 0, gtg2, gtg2, driver_device, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf II (Trackball, V2.2)", 0 ) +GAME( 1992, gpgolf, 0, gtg2, gpgolf, itech8_state, 0, ROT0, "Strata/Incredible Technologies", "Golden Par Golf (Joystick, V1.1)", 0 ) +GAME( 1992, gtg2, 0, gtg2, gtg2, itech8_state, 0, ROT0, "Strata/Incredible Technologies", "Golden Tee Golf II (Trackball, V2.2)", 0 ) diff --git a/src/mame/drivers/itgambl2.cpp b/src/mame/drivers/itgambl2.cpp index 698055beeff..857aad36c04 100644 --- a/src/mame/drivers/itgambl2.cpp +++ b/src/mame/drivers/itgambl2.cpp @@ -270,7 +270,7 @@ PALETTE_INIT_MEMBER(itgambl2_state, itgambl2) * Machine Drivers * **************************/ -static MACHINE_CONFIG_START( itgambl2, itgambl2_state ) +static MACHINE_CONFIG_START( itgambl2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83337, MAIN_CLOCK) @@ -1100,24 +1100,24 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1999, ntcash, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "NtCash", MACHINE_IS_SKELETON ) -GAME( 1999, wizard, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "A.A.", "Wizard (Ver 1.0)", MACHINE_IS_SKELETON ) -GAME( 200?, trstar2k, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "A.M.", "Triple Star 2000", MACHINE_IS_SKELETON ) -GAME( 2001, laser2k1, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Laser 2001 (Ver 1.2)", MACHINE_IS_SKELETON ) -GAME( 2001, mdrink, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Magic Drink (Ver 1.2)", MACHINE_IS_SKELETON ) -GAME( 2001, te0144, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Puzzle Bobble (Italian Gambling Game)", MACHINE_IS_SKELETON ) -GAME( 200?, cmagica, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Carta Magica (Ver 1.8)", MACHINE_IS_SKELETON ) -GAME( 200?, mcard_h8, cmagica, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Magic Card (H8, English)", MACHINE_IS_SKELETON ) -GAME( 200?, millsun, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Millennium Sun", MACHINE_IS_SKELETON ) -GAME( 200?, sspac2k1, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Super Space 2001", MACHINE_IS_SKELETON ) -GAME( 200?, elvis, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Elvis?", MACHINE_IS_SKELETON ) -GAME( 200?, sstar, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Super Star", MACHINE_IS_SKELETON ) -GAME( 2001, pirati, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "Cin", "Pirati", MACHINE_IS_SKELETON ) -GAME( 200?, mnumitg, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Magic Number (Italian Gambling Game, Ver 1.5)", MACHINE_IS_SKELETON ) -GAME( 200?, mclass, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Magic Class (Ver 2.2)", MACHINE_IS_SKELETON ) -GAME( 200?, europass, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Euro Pass (Ver 1.1)", MACHINE_IS_SKELETON ) -GAME( 200?, thedrink, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "The Drink", MACHINE_IS_SKELETON ) -GAME( 200?, unkh8gam, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "unknown H8 Italian Gambling game", MACHINE_IS_SKELETON ) -GAME( 200?, eurodsr, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Euro Double Star Record (ver.1.2)", MACHINE_IS_SKELETON ) -GAME( 200?, granfrat, 0, itgambl2, itgambl2, driver_device, 0, ROT0, "", "Grande Fratello (Ver. 1.7)", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1999, ntcash, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "NtCash", MACHINE_IS_SKELETON ) +GAME( 1999, wizard, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "A.A.", "Wizard (Ver 1.0)", MACHINE_IS_SKELETON ) +GAME( 200?, trstar2k, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "A.M.", "Triple Star 2000", MACHINE_IS_SKELETON ) +GAME( 2001, laser2k1, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Laser 2001 (Ver 1.2)", MACHINE_IS_SKELETON ) +GAME( 2001, mdrink, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Magic Drink (Ver 1.2)", MACHINE_IS_SKELETON ) +GAME( 2001, te0144, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Puzzle Bobble (Italian Gambling Game)", MACHINE_IS_SKELETON ) +GAME( 200?, cmagica, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Carta Magica (Ver 1.8)", MACHINE_IS_SKELETON ) +GAME( 200?, mcard_h8, cmagica, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Magic Card (H8, English)", MACHINE_IS_SKELETON ) +GAME( 200?, millsun, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Millennium Sun", MACHINE_IS_SKELETON ) +GAME( 200?, sspac2k1, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Super Space 2001", MACHINE_IS_SKELETON ) +GAME( 200?, elvis, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Elvis?", MACHINE_IS_SKELETON ) +GAME( 200?, sstar, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Super Star", MACHINE_IS_SKELETON ) +GAME( 2001, pirati, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "Cin", "Pirati", MACHINE_IS_SKELETON ) +GAME( 200?, mnumitg, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Magic Number (Italian Gambling Game, Ver 1.5)", MACHINE_IS_SKELETON ) +GAME( 200?, mclass, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Magic Class (Ver 2.2)", MACHINE_IS_SKELETON ) +GAME( 200?, europass, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Euro Pass (Ver 1.1)", MACHINE_IS_SKELETON ) +GAME( 200?, thedrink, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "The Drink", MACHINE_IS_SKELETON ) +GAME( 200?, unkh8gam, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "unknown H8 Italian Gambling game", MACHINE_IS_SKELETON ) +GAME( 200?, eurodsr, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Euro Double Star Record (ver.1.2)", MACHINE_IS_SKELETON ) +GAME( 200?, granfrat, 0, itgambl2, itgambl2, itgambl2_state, 0, ROT0, "", "Grande Fratello (Ver. 1.7)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/itgambl3.cpp b/src/mame/drivers/itgambl3.cpp index a7450add868..522f43567ec 100644 --- a/src/mame/drivers/itgambl3.cpp +++ b/src/mame/drivers/itgambl3.cpp @@ -258,7 +258,7 @@ PALETTE_INIT_MEMBER(itgambl3_state, itgambl3) * Machine Drivers * **************************/ -static MACHINE_CONFIG_START( itgambl3, itgambl3_state ) +static MACHINE_CONFIG_START( itgambl3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83044, MAIN_CLOCK) /* wrong CPU, but we have not a M16C core ATM */ @@ -279,7 +279,7 @@ static MACHINE_CONFIG_START( itgambl3, itgambl3_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", MAIN_CLOCK/16, OKIM6295_PIN7_HIGH) /* 1MHz */ + MCFG_OKIM6295_ADD("oki", MAIN_CLOCK/16, PIN7_HIGH) /* 1MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -515,10 +515,10 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 200?, ejollyx5, 0, itgambl3, itgambl3, driver_device, 0, ROT0, "Solar Games", "Euro Jolly X5", MACHINE_IS_SKELETON ) -GAME( 200?, grandprx, 0, itgambl3, itgambl3, driver_device, 0, ROT0, "4fun", "Grand Prix", MACHINE_IS_SKELETON ) -GAME( 200?, supjolly, 0, itgambl3, itgambl3, driver_device, 0, ROT0, "", "Super Jolly", MACHINE_IS_SKELETON ) -GAME( 200?, x5jokers, 0, itgambl3, itgambl3, driver_device, 0, ROT0, "Electronic Projects", "X Five Jokers (Version 1.12)", MACHINE_IS_SKELETON ) -GAME( 200?, queenotg, 0, itgambl3, itgambl3, driver_device, 0, ROT0, "", "Queen of the Games", MACHINE_IS_SKELETON ) -GAME( 200?, ejollyx9, 0, itgambl3, itgambl3, driver_device, 0, ROT0, "Solar Games", "Euro Jolly X9", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 200?, ejollyx5, 0, itgambl3, itgambl3, itgambl3_state, 0, ROT0, "Solar Games", "Euro Jolly X5", MACHINE_IS_SKELETON ) +GAME( 200?, grandprx, 0, itgambl3, itgambl3, itgambl3_state, 0, ROT0, "4fun", "Grand Prix", MACHINE_IS_SKELETON ) +GAME( 200?, supjolly, 0, itgambl3, itgambl3, itgambl3_state, 0, ROT0, "", "Super Jolly", MACHINE_IS_SKELETON ) +GAME( 200?, x5jokers, 0, itgambl3, itgambl3, itgambl3_state, 0, ROT0, "Electronic Projects", "X Five Jokers (Version 1.12)", MACHINE_IS_SKELETON ) +GAME( 200?, queenotg, 0, itgambl3, itgambl3, itgambl3_state, 0, ROT0, "", "Queen of the Games", MACHINE_IS_SKELETON ) +GAME( 200?, ejollyx9, 0, itgambl3, itgambl3, itgambl3_state, 0, ROT0, "Solar Games", "Euro Jolly X9", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/itgamble.cpp b/src/mame/drivers/itgamble.cpp index 968d49e713f..e7a8f8d9d44 100644 --- a/src/mame/drivers/itgamble.cpp +++ b/src/mame/drivers/itgamble.cpp @@ -208,7 +208,7 @@ void itgamble_state::machine_reset() * Machine Drivers * **************************/ -static MACHINE_CONFIG_START( itgamble, itgamble_state ) +static MACHINE_CONFIG_START( itgamble ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83048, MAIN_CLOCK/2) @@ -228,7 +228,7 @@ static MACHINE_CONFIG_START( itgamble, itgamble_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", SND_CLOCK, OKIM6295_PIN7_HIGH) /* 1MHz resonator */ + MCFG_OKIM6295_ADD("oki", SND_CLOCK, PIN7_HIGH) /* 1MHz resonator */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -237,7 +237,7 @@ static MACHINE_CONFIG_DERIVED( mnumber, itgamble ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(MNUMBER_MAIN_CLOCK/2) /* probably the wrong CPU */ - MCFG_OKIM6295_REPLACE("oki", MNUMBER_SND_CLOCK/16, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_REPLACE("oki", MNUMBER_SND_CLOCK/16, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -248,7 +248,7 @@ static MACHINE_CONFIG_DERIVED( ejollyx5, itgamble ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(EJOLLYX5_MAIN_CLOCK/2) /* up to 10MHz.*/ - MCFG_OKIM6295_REPLACE("oki", MNUMBER_SND_CLOCK/16, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_REPLACE("oki", MNUMBER_SND_CLOCK/16, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END #endif @@ -703,16 +703,16 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 2000, capunc, 0, itgamble, itgamble, driver_device, 0, ROT0, "Nazionale Elettronica", "Capitan Uncino (Ver 1.2)", MACHINE_IS_SKELETON ) -GAME( 2001, capcor, 0, itgamble, itgamble, driver_device, 0, ROT0, "Nazionale Elettronica", "Capitani Coraggiosi (Ver 1.3)", MACHINE_IS_SKELETON ) -GAME( 2002, laperla, 0, itgamble, itgamble, driver_device, 0, ROT0, "Nazionale Elettronica", "La Perla Nera (Ver 2.0)", MACHINE_IS_SKELETON ) -GAME( 2001, laperlag, 0, itgamble, itgamble, driver_device, 0, ROT0, "Nazionale Elettronica", "La Perla Nera Gold (Ver 2.0)", MACHINE_IS_SKELETON ) -GAME( 2001, euro2k2, 0, itgamble, itgamble, driver_device, 0, ROT0, "Nazionale Elettronica", "Europa 2002 (Ver 2.0, set 1)", MACHINE_IS_SKELETON ) -GAME( 2001, euro2k2a, euro2k2, itgamble, itgamble, driver_device, 0, ROT0, "Nazionale Elettronica", "Europa 2002 (Ver 2.0, set 2)", MACHINE_IS_SKELETON ) -GAME( 2002, euro2k2s, euro2k2, itgamble, itgamble, driver_device, 0, ROT0, "Nazionale Elettronica", "Europa 2002 Space (Ver 3.0)", MACHINE_IS_SKELETON ) -GAME( 200?, abacus, 0, itgamble, itgamble, driver_device, 0, ROT0, "", "Abacus (Ver 1.0)", MACHINE_IS_SKELETON ) -GAME( 200?, bookthr, 0, itgamble, itgamble, driver_device, 0, ROT0, "", "Book Theatre (Ver 1.2)", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 2000, capunc, 0, itgamble, itgamble, itgamble_state, 0, ROT0, "Nazionale Elettronica", "Capitan Uncino (Ver 1.2)", MACHINE_IS_SKELETON ) +GAME( 2001, capcor, 0, itgamble, itgamble, itgamble_state, 0, ROT0, "Nazionale Elettronica", "Capitani Coraggiosi (Ver 1.3)", MACHINE_IS_SKELETON ) +GAME( 2002, laperla, 0, itgamble, itgamble, itgamble_state, 0, ROT0, "Nazionale Elettronica", "La Perla Nera (Ver 2.0)", MACHINE_IS_SKELETON ) +GAME( 2001, laperlag, 0, itgamble, itgamble, itgamble_state, 0, ROT0, "Nazionale Elettronica", "La Perla Nera Gold (Ver 2.0)", MACHINE_IS_SKELETON ) +GAME( 2001, euro2k2, 0, itgamble, itgamble, itgamble_state, 0, ROT0, "Nazionale Elettronica", "Europa 2002 (Ver 2.0, set 1)", MACHINE_IS_SKELETON ) +GAME( 2001, euro2k2a, euro2k2, itgamble, itgamble, itgamble_state, 0, ROT0, "Nazionale Elettronica", "Europa 2002 (Ver 2.0, set 2)", MACHINE_IS_SKELETON ) +GAME( 2002, euro2k2s, euro2k2, itgamble, itgamble, itgamble_state, 0, ROT0, "Nazionale Elettronica", "Europa 2002 Space (Ver 3.0)", MACHINE_IS_SKELETON ) +GAME( 200?, abacus, 0, itgamble, itgamble, itgamble_state, 0, ROT0, "", "Abacus (Ver 1.0)", MACHINE_IS_SKELETON ) +GAME( 200?, bookthr, 0, itgamble, itgamble, itgamble_state, 0, ROT0, "", "Book Theatre (Ver 1.2)", MACHINE_IS_SKELETON ) /* different hardware */ -GAME( 2000, mnumber, 0, mnumber, itgamble, driver_device, 0, ROT0, "MM / BRL Bologna", "Mystery Number", MACHINE_IS_SKELETON ) +GAME( 2000, mnumber, 0, mnumber, itgamble, itgamble_state, 0, ROT0, "MM / BRL Bologna", "Mystery Number", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/itt3030.cpp b/src/mame/drivers/itt3030.cpp index 46e1ae388b8..070e3a943de 100644 --- a/src/mame/drivers/itt3030.cpp +++ b/src/mame/drivers/itt3030.cpp @@ -227,35 +227,15 @@ public: , m_palette(*this, "palette") { } - // devices - required_device m_maincpu; - required_device m_kbdmcu; - required_device m_ram; - required_device m_crtc; - required_device m_48kbank; - required_device m_fdc; - required_device m_floppy0; - required_device m_floppy1; - required_device m_beep; - - required_ioport_array<16> m_keyrows; - - // shared pointers - required_shared_ptr m_vram; - // screen updates uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); -protected: - // driver_device overrides - virtual void machine_start() override; - virtual void machine_reset() override; public: DECLARE_READ8_MEMBER(vsync_r); DECLARE_WRITE8_MEMBER( beep_w ); DECLARE_WRITE8_MEMBER(bank_w); - DECLARE_READ8_MEMBER(kbd_matrix_r); + DECLARE_READ_LINE_MEMBER(kbd_matrix_r); DECLARE_WRITE8_MEMBER(kbd_matrix_w); DECLARE_READ8_MEMBER(kbd_port2_r); DECLARE_WRITE8_MEMBER(kbd_port2_w); @@ -270,6 +250,27 @@ public: DECLARE_WRITE_LINE_MEMBER(fdchld_w); DECLARE_PALETTE_INIT(itt3030); +protected: + // driver_device overrides + virtual void machine_start() override; + virtual void machine_reset() override; + + // devices + required_device m_maincpu; + required_device m_kbdmcu; + required_device m_ram; + required_device m_crtc; + required_device m_48kbank; + required_device m_fdc; + required_device m_floppy0; + required_device m_floppy1; + required_device m_beep; + + required_ioport_array<16> m_keyrows; + + // shared pointers + required_shared_ptr m_vram; + private: uint8_t m_kbdclk, m_kbdread, m_kbdport2; required_device m_gfxdecode; @@ -462,7 +463,7 @@ static ADDRESS_MAP_START( itt3030_io, AS_IO, 8, itt3030_state ) AM_RANGE(0xf6, 0xf6) AM_WRITE(bank_w) ADDRESS_MAP_END -READ8_MEMBER(itt3030_state::kbd_matrix_r) +READ_LINE_MEMBER(itt3030_state::kbd_matrix_r) { return m_kbdread; } @@ -494,17 +495,6 @@ READ8_MEMBER(itt3030_state::kbd_port2_r) return m_kbdport2; } -// Schematics + i8278 datasheet says: -// Port 1 goes to the keyboard matrix. -// bits 0-2 select bit to read back, bits 3-6 choose column to read from, bit 7 clocks the process (rising edge strobes the row, falling edge reads the data) -// T0 is the key matrix return -// pin 23 is the UPI-41 host IRQ line, it's unknown how it's connected to the Z80 -static ADDRESS_MAP_START( kbdmcu_io, AS_IO, 8, itt3030_state ) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(kbd_matrix_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kbd_matrix_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(kbd_port2_r, kbd_port2_w) -ADDRESS_MAP_END - static INPUT_PORTS_START( itt3030 ) PORT_START("ROW.0") PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4)) @@ -666,15 +656,23 @@ PALETTE_INIT_MEMBER(itt3030_state, itt3030) palette.set_pen_color(2, rgb_t::black()); } -static MACHINE_CONFIG_START( itt3030, itt3030_state ) +static MACHINE_CONFIG_START( itt3030 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(itt3030_map) MCFG_CPU_IO_MAP(itt3030_io) + // Schematics + i8278 datasheet says: + // Port 1 goes to the keyboard matrix. + // bits 0-2 select bit to read back, bits 3-6 choose column to read from, bit 7 clocks the process (rising edge strobes the row, falling edge reads the data) + // T0 is the key matrix return + // pin 23 is the UPI-41 host IRQ line, it's unknown how it's connected to the Z80 MCFG_CPU_ADD("kbdmcu", I8741, XTAL_6MHz) - MCFG_CPU_IO_MAP(kbdmcu_io) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(itt3030_state, kbd_matrix_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(itt3030_state, kbd_matrix_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(itt3030_state, kbd_port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(itt3030_state, kbd_port2_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -735,4 +733,4 @@ ROM_START( itt3030 ) ROM_LOAD( "8741ad.bin", 0x0000, 0x0400, CRC(cabf4394) SHA1(e5d1416b568efa32b578ca295a29b7b5d20c0def)) ROM_END -COMP( 1982, itt3030, 0, 0, itt3030, itt3030, driver_device, 0, "ITT RFA", "ITT3030", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1982, itt3030, 0, 0, itt3030, itt3030, itt3030_state, 0, "ITT RFA", "ITT3030", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/jack.cpp b/src/mame/drivers/jack.cpp index d941f12fd22..e17e13ab373 100644 --- a/src/mame/drivers/jack.cpp +++ b/src/mame/drivers/jack.cpp @@ -902,7 +902,7 @@ MACHINE_RESET_MEMBER(jack_state,joinem) /***************************************************************/ -static MACHINE_CONFIG_START( jack, jack_state ) +static MACHINE_CONFIG_START( jack ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18MHz/6) diff --git a/src/mame/drivers/jackal.cpp b/src/mame/drivers/jackal.cpp index ecb2710a4ed..d619c1d3c79 100644 --- a/src/mame/drivers/jackal.cpp +++ b/src/mame/drivers/jackal.cpp @@ -3,7 +3,7 @@ // thanks-to:Kenneth Lin (original driver author) /*************************************************************************** - jackal.c + jackal.cpp Notes: - This game uses two 005885 gfx chip in parallel. The unique thing about it is @@ -355,7 +355,7 @@ void jackal_state::machine_reset() m_irq_enable = 0; } -static MACHINE_CONFIG_START( jackal, jackal_state ) +static MACHINE_CONFIG_START( jackal ) /* basic machine hardware */ MCFG_CPU_ADD("master", M6809, MASTER_CLOCK/12) // verified on pcb @@ -488,6 +488,49 @@ ROM_START( jackalj ) /* 8-Way Joystick: You can only shoot in the direction you' ROM_LOAD( "631r09.14h", 0x0100, 0x0100, CRC(a74dd86c) SHA1(571f606f8fc0fd3d98d26761de79ccb4cc9ab044) ) /* MMI 63S141AN or compatible (silkscreened 6301) */ ROM_END +ROM_START( jackalbl ) // This is based on jackalr. Was dumped from 2 different PCBs. + ROM_REGION( 0x20000, "master", 0 ) /* Banked 64k for 1st CPU */ + ROM_LOAD( "EPR-A-3.BIN", 0x04000, 0x8000, CRC(5fffee27) SHA1(224d5fd26dd1e0f15a3c99fd2fffbb76f641416e) ) // also found labeled "3.17" + ROM_LOAD( "EPR-A-2.BIN", 0x0c000, 0x4000, CRC(ae2a290a) SHA1(e9bee75a02aef5cf330dccb9e7a45b0171a8c1d7) ) // also found labeled "2.20" + ROM_LOAD( "EPR-A-4.BIN", 0x14000, 0x8000, CRC(976c8431) SHA1(c199f57c25380d741aec85b0e0bfb6acf383e6a6) ) // also found labeled "4.18" + + ROM_REGION( 0x10000, "slave", 0 ) /* 64k for 2nd cpu (Graphics & Sound)*/ + ROM_LOAD( "EPR-A-1.BIN", 0x8000, 0x8000, CRC(54aa2d29) SHA1(ebc6b3a5db5120cc33d62e3213d0e881f658282d) ) // also found labeled "1.19" + + ROM_REGION( 0x80000, "gfx1", 0 ) + /* same data, different layout */ + ROM_LOAD16_WORD_SWAP( "EPR-A-17.BIN", 0x00000, 0x08000, CRC(a96720b6) SHA1(d3c2a1848fa9d9d1232e58e412bdd69032fe2c83) ) // also found labeled "17.5" + ROM_LOAD16_WORD_SWAP( "EPR-A-18.BIN", 0x08000, 0x08000, CRC(932d0ecb) SHA1(20bf789f45c5b3ba90012e1a945523236578a014) ) // also found labeled "18.6" + ROM_LOAD16_WORD_SWAP( "EPR-A-19.BIN", 0x10000, 0x08000, CRC(1e3412e7) SHA1(dc0be23d6c89b7b131c3bd5cd117123e5f9d971c) ) // also found labeled "19.7" + ROM_LOAD16_WORD_SWAP( "EPR-A-20.BIN", 0x18000, 0x08000, CRC(4b0d15be) SHA1(657c861357b5881e4ff356b1f27345b11e6c0696) ) // also found labeled "20.8" + ROM_LOAD16_WORD_SWAP( "EPR-A-6.BIN", 0x20000, 0x08000, CRC(ec7141ad) SHA1(eb631ca58364827659fba1cb3dca326c2e5bf5b7) ) // also found labeled "6.9" + ROM_LOAD16_WORD_SWAP( "EPR-A-5.BIN", 0x28000, 0x08000, CRC(c6375c74) SHA1(55090485307c6581556632fadbf704431734b145) ) // also found labeled "5.10" + ROM_LOAD16_WORD_SWAP( "EPR-A-7.BIN", 0x30000, 0x08000, CRC(03e1de04) SHA1(c5f17633f4d5907310effb490488053861a55f6c) ) // also found labeled "7.11" + ROM_LOAD16_WORD_SWAP( "EPR-A-8.BIN", 0x38000, 0x08000, CRC(f946ada7) SHA1(fd9a0786436cbdb4c844f71342232e4e6645d98f) ) // also found labeled "8.12" + ROM_LOAD16_WORD_SWAP( "EPR-A-13.BIN", 0x40000, 0x08000, CRC(7c29c59e) SHA1(c2764f99ab4b39e7c0e43f58f69d6c353d0357aa) ) // also found labeled "13.1" + ROM_LOAD16_WORD_SWAP( "EPR-A-14.BIN", 0x48000, 0x08000, CRC(f2bbff39) SHA1(f39dfdb3301f9b01d58071ffee41c467757d99d9) ) // also found labeled "14.2" + ROM_LOAD16_WORD_SWAP( "EPR-A-15.BIN", 0x50000, 0x08000, CRC(594dbaaf) SHA1(e3f05acbdba8e8644dbabb065832476c1cb20569) ) // also found labeled "15.3" + ROM_LOAD16_WORD_SWAP( "EPR-A-16.BIN", 0x58000, 0x08000, CRC(069bf945) SHA1(93ecc7dd779d16d825680bbc4986a312758db52f) ) // also found labeled "16.4" + ROM_LOAD16_WORD_SWAP( "EPR-A-9.BIN", 0x60000, 0x08000, CRC(c00cef79) SHA1(94af2f4a67d1425fbb64b58ed7e618c8b38df203) ) // also found labeled "9.13" + ROM_LOAD16_WORD_SWAP( "EPR-A-10.BIN", 0x68000, 0x08000, CRC(0aed6cd7) SHA1(88f81be5d8b2679349bf5cf2d4e02aff25c5118b) ) // also found labeled "10.14" + ROM_LOAD16_WORD_SWAP( "EPR-A-11.BIN", 0x70000, 0x08000, CRC(a48e9f60) SHA1(6d5af16c16b40fb092fdba6dce852b94ac4767f4) ) // also found labeled "11.15" + ROM_LOAD16_WORD_SWAP( "EPR-A-12.BIN", 0x78000, 0x08000, CRC(79b7c71c) SHA1(8510226114ab9098ec48e02840465fc8b69b5262) ) // also found labeled "12.16" + + ROM_REGION( 0x0200, "proms", 0 ) /* color lookup tables */ + ROM_LOAD( "n82s129n.prom2", 0x0000, 0x0100, CRC(7553a172) SHA1(eadf1b4157f62c3af4602da764268df954aa0018) ) + ROM_LOAD( "n82s129n.prom1", 0x0100, 0x0100, CRC(a74dd86c) SHA1(571f606f8fc0fd3d98d26761de79ccb4cc9ab044) ) + + ROM_REGION( 0x1000, "pals", 0 ) /* currently not used by the emulation */ + ROM_LOAD( "pal16r6cn.pal1", 0x0000, 0x0104, CRC(9bba948f) SHA1(5f42568489f16f8b3719eb2ec178e7c61d7ce25f) ) + ROM_LOAD( "ampal16l8pc.pal2", 0x0200, 0x0104, CRC(17c9de2f) SHA1(2db42618f9ca1174bdcdbf92ea91ebc1a79bc6d2) ) + ROM_LOAD( "ampal16r4pc.pal3", 0x0400, 0x0104, CRC(e54cd288) SHA1(5b8ae5a2a4a9ec3fab603b063fd18c96dd1fd0cf) ) + ROM_LOAD( "pal16r8acn.pal4", 0x0600, 0x0104, CRC(5cc45e00) SHA1(cbd871addbac6310c8593fe8e8d5a962c2b45b2c) ) + ROM_LOAD( "pal20l8a-2cns.pal5", 0x0800, 0x0144, NO_DUMP ) // read protected + ROM_LOAD( "pal20l8acns.pal6", 0x0a00, 0x0144, NO_DUMP ) // read protected + ROM_LOAD( "pal16l8pc.pal7", 0x0c00, 0x0104, CRC(e8cdc259) SHA1(6917ef8f4f09aa099a48b8ae2d10bcd10961fb43) ) + ROM_LOAD( "d5c121.ep1200", 0x0e00, 0x0200, NO_DUMP ) // not dumped yet +ROM_END + ROM_START( topgunbl ) /* Rotary Joystick: Shot direction is controlled via the Rotary function of the joystick */ ROM_REGION( 0x20000, "master", 0 ) /* Banked 64k for 1st CPU */ ROM_LOAD( "t-3.c5", 0x04000, 0x8000, CRC(7826ad38) SHA1(875e87867924905b9b83bc203eb7ffe81cf72233) ) @@ -528,8 +571,9 @@ ROM_END * *************************************/ -GAME( 1986, jackal, 0, jackal, jackal, driver_device, 0, ROT90, "Konami", "Jackal (World, 8-way Joystick)", 0 ) -GAME( 1986, jackalr, jackal, jackal, jackalr, driver_device, 0, ROT90, "Konami", "Jackal (World, Rotary Joystick)", 0 ) -GAME( 1986, topgunr, jackal, jackal, jackal, driver_device, 0, ROT90, "Konami", "Top Gunner (US, 8-way Joystick)", 0 ) -GAME( 1986, jackalj, jackal, jackal, jackal, driver_device, 0, ROT90, "Konami", "Tokushu Butai Jackal (Japan, 8-way Joystick)", 0 ) -GAME( 1986, topgunbl, jackal, jackal, jackalr, driver_device, 0, ROT90, "bootleg", "Top Gunner (bootleg, Rotary Joystick)", 0 ) +GAME( 1986, jackal, 0, jackal, jackal, jackal_state, 0, ROT90, "Konami", "Jackal (World, 8-way Joystick)", 0 ) +GAME( 1986, jackalr, jackal, jackal, jackalr, jackal_state, 0, ROT90, "Konami", "Jackal (World, Rotary Joystick)", 0 ) +GAME( 1986, topgunr, jackal, jackal, jackal, jackal_state, 0, ROT90, "Konami", "Top Gunner (US, 8-way Joystick)", 0 ) +GAME( 1986, jackalj, jackal, jackal, jackal, jackal_state, 0, ROT90, "Konami", "Tokushu Butai Jackal (Japan, 8-way Joystick)", 0 ) +GAME( 1986, jackalbl, jackal, jackal, jackalr, jackal_state, 0, ROT90, "bootleg", "Jackal (bootleg, Rotary Joystick)", 0 ) +GAME( 1986, topgunbl, jackal, jackal, jackalr, jackal_state, 0, ROT90, "bootleg", "Top Gunner (bootleg, Rotary Joystick)", 0 ) diff --git a/src/mame/drivers/jackie.cpp b/src/mame/drivers/jackie.cpp index a9d5fb3888f..287301a6965 100644 --- a/src/mame/drivers/jackie.cpp +++ b/src/mame/drivers/jackie.cpp @@ -47,6 +47,7 @@ Note #include "emu.h" #include "cpu/z80/z80.h" +#include "machine/i8255.h" #include "sound/ym2413.h" #include "screen.h" #include "speaker.h" @@ -403,11 +404,8 @@ static ADDRESS_MAP_START( jackie_io_map, AS_IO, 8, jackie_state ) AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */ AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */ AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */ - AM_RANGE(0x5080, 0x5080) AM_WRITE(nmi_and_coins_w) - AM_RANGE(0x5081, 0x5081) AM_READ_PORT("SERVICE") - AM_RANGE(0x5082, 0x5082) AM_READ_PORT("COINS") - AM_RANGE(0x5090, 0x5090) AM_READ_PORT("BUTTONS1") - AM_RANGE(0x5091, 0x5091) AM_WRITE(lamps_w ) + AM_RANGE(0x5080, 0x5083) AM_DEVREADWRITE("ppi1", i8255_device, read, write) + AM_RANGE(0x5090, 0x5093) AM_DEVREADWRITE("ppi2", i8255_device, read, write) AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2") AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write) AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w) @@ -597,7 +595,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(jackie_state::irq) m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( jackie, jackie_state ) +static MACHINE_CONFIG_START( jackie ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 2) @@ -605,6 +603,14 @@ static MACHINE_CONFIG_START( jackie, jackie_state ) MCFG_CPU_IO_MAP(jackie_io_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", jackie_state, irq, "screen", 0, 1) + MCFG_DEVICE_ADD("ppi1", I8255A, 0) // D8255AC + MCFG_I8255_OUT_PORTA_CB(WRITE8(jackie_state, nmi_and_coins_w)) + MCFG_I8255_IN_PORTB_CB(IOPORT("SERVICE")) + MCFG_I8255_IN_PORTC_CB(IOPORT("COINS")) + + MCFG_DEVICE_ADD("ppi2", I8255A, 0) // D8255AC + MCFG_I8255_IN_PORTA_CB(IOPORT("BUTTONS1")) + MCFG_I8255_OUT_PORTB_CB(WRITE8(jackie_state, lamps_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/jackpool.cpp b/src/mame/drivers/jackpool.cpp index 8432bea81ee..c8fb44318e3 100644 --- a/src/mame/drivers/jackpool.cpp +++ b/src/mame/drivers/jackpool.cpp @@ -267,7 +267,7 @@ INTERRUPT_GEN_MEMBER(jackpool_state::jackpool_interrupt) } -static MACHINE_CONFIG_START( jackpool, jackpool_state ) +static MACHINE_CONFIG_START( jackpool ) MCFG_CPU_ADD("maincpu", M68000, 12000000) // ? MCFG_CPU_PROGRAM_MAP(jackpool_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", jackpool_state, jackpool_interrupt) // ? @@ -289,7 +289,7 @@ static MACHINE_CONFIG_START( jackpool, jackpool_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/jade.cpp b/src/mame/drivers/jade.cpp index ad281aea28b..4cf9240d770 100644 --- a/src/mame/drivers/jade.cpp +++ b/src/mame/drivers/jade.cpp @@ -31,7 +31,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(keyin_r); DECLARE_READ8_MEMBER(status_r); private: @@ -74,7 +74,7 @@ READ8_MEMBER( jade_state::status_r ) return (m_term_data) ? 5 : 4; } -WRITE8_MEMBER( jade_state::kbd_put ) +void jade_state::kbd_put(u8 data) { m_term_data = data; } @@ -84,7 +84,7 @@ void jade_state::machine_reset() m_term_data = 0; } -static MACHINE_CONFIG_START( jade, jade_state ) +static MACHINE_CONFIG_START( jade ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(jade_mem) @@ -92,7 +92,7 @@ static MACHINE_CONFIG_START( jade, jade_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(jade_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(jade_state, kbd_put)) /* Devices */ MCFG_DEVICE_ADD("uart", I8251, 0) @@ -106,5 +106,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 19??, jade, 0, 0, jade, jade, driver_device, 0, "Jade", "JGZ80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 19??, jade, 0, 0, jade, jade, jade_state, 0, "Jade", "JGZ80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/jaguar.cpp b/src/mame/drivers/jaguar.cpp index f909f68a59e..21aa7600dcf 100644 --- a/src/mame/drivers/jaguar.cpp +++ b/src/mame/drivers/jaguar.cpp @@ -334,6 +334,7 @@ Notes: #include "emu.h" #include "includes/jaguar.h" + #include "bus/generic/slot.h" #include "bus/generic/carts.h" #include "cpu/m68000/m68000.h" @@ -342,6 +343,7 @@ Notes: #include "imagedev/chd_cd.h" #include "imagedev/snapquik.h" #include "machine/eepromser.h" +#include "machine/idehd.h" #include "machine/watchdog.h" #include "machine/vt83c461.h" #include "sound/cdda.h" @@ -370,15 +372,13 @@ IRQ_CALLBACK_MEMBER(jaguar_state::jaguar_irq_callback) /// HACK: Maximum force requests data but doesn't transfer it all before issuing another command. /// According to the ATA specification this is not allowed, more investigation is required. -#include "machine/idehd.h" - -extern const device_type COJAG_HARDDISK; +DECLARE_DEVICE_TYPE(COJAG_HARDDISK, cojag_hdd) class cojag_hdd : public ide_hdd_device { public: cojag_hdd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ide_hdd_device(mconfig, COJAG_HARDDISK, "HDD CoJag", tag, owner, clock, "cojag_hdd", __FILE__) + : ide_hdd_device(mconfig, COJAG_HARDDISK, tag, owner, clock) { } @@ -394,7 +394,7 @@ public: } }; -const device_type COJAG_HARDDISK = device_creator; +DEFINE_DEVICE_TYPE(COJAG_HARDDISK, cojag_hdd, "cojag_hdd", "HDD CoJag") SLOT_INTERFACE_START(cojag_devices) SLOT_INTERFACE("hdd", COJAG_HARDDISK) @@ -1801,7 +1801,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( cojagr3k, jaguar_state ) +static MACHINE_CONFIG_START( cojagr3k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R3041, R3000_CLOCK) @@ -1851,7 +1851,7 @@ static MACHINE_CONFIG_DERIVED( cojag68k, cojagr3k ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jaguar, jaguar_state ) +static MACHINE_CONFIG_START( jaguar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, JAGUAR_CLOCK/2) diff --git a/src/mame/drivers/jailbrek.cpp b/src/mame/drivers/jailbrek.cpp index 97583d59fb5..96e5171613e 100644 --- a/src/mame/drivers/jailbrek.cpp +++ b/src/mame/drivers/jailbrek.cpp @@ -259,7 +259,7 @@ void jailbrek_state::machine_reset() m_nmi_enable = 0; } -static MACHINE_CONFIG_START( jailbrek, jailbrek_state ) +static MACHINE_CONFIG_START( jailbrek ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI1, MASTER_CLOCK/12) @@ -421,6 +421,6 @@ ROM_START( jailbrekb ) ROM_LOAD( "k8.bin", 0x0000, 0x0001, NO_DUMP ) /* PAL16L8 */ ROM_END -GAME( 1986, jailbrek, 0, jailbrek, jailbrek, driver_device, 0, ROT0, "Konami", "Jail Break", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, jailbrekb,jailbrek, jailbrek, jailbrek, driver_device, 0, ROT0, "bootleg","Jail Break (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, manhatan, jailbrek, jailbrek, jailbrek, driver_device, 0, ROT0, "Konami", "Manhattan 24 Bunsyo (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, jailbrek, 0, jailbrek, jailbrek, jailbrek_state, 0, ROT0, "Konami", "Jail Break", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, jailbrekb, jailbrek, jailbrek, jailbrek, jailbrek_state, 0, ROT0, "bootleg", "Jail Break (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, manhatan, jailbrek, jailbrek, jailbrek, jailbrek_state, 0, ROT0, "Konami", "Manhattan 24 Bunsyo (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/jalmah.cpp b/src/mame/drivers/jalmah.cpp index 74582939bb9..4778b53f678 100644 --- a/src/mame/drivers/jalmah.cpp +++ b/src/mame/drivers/jalmah.cpp @@ -1413,7 +1413,7 @@ void jalmah_state::machine_reset() } } -static MACHINE_CONFIG_START( jalmah, jalmah_state ) +static MACHINE_CONFIG_START( jalmah ) MCFG_CPU_ADD("maincpu" , M68000, 12000000) /* 68000-8 */ MCFG_CPU_PROGRAM_MAP(jalmah) MCFG_CPU_VBLANK_INT_DRIVER("screen", jalmah_state, irq2_line_hold) @@ -1436,7 +1436,7 @@ static MACHINE_CONFIG_START( jalmah, jalmah_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("mcusim", jalmah_state, jalmah_mcu_sim, attotime::from_hz(10000)) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 4000000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 4000000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -2475,10 +2475,10 @@ DRIVER_INIT_MEMBER(jalmah_state,suchipi) } /*First version of the MCU*/ -GAME( 1989, urashima, 0, urashima, urashima, jalmah_state, urashima, ROT0, "UPL", "Otogizoushi Urashima Mahjong (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1989, daireika, 0, jalmah, daireika, jalmah_state, daireika, ROT0, "Jaleco / NMK", "Mahjong Daireikai (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1990, mjzoomin, 0, jalmah, mjzoomin, jalmah_state, mjzoomin, ROT0, "Jaleco", "Mahjong Channel Zoom In (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1989, urashima, 0, urashima, urashima, jalmah_state, urashima, ROT0, "UPL", "Otogizoushi Urashima Mahjong (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1989, daireika, 0, jalmah, daireika, jalmah_state, daireika, ROT0, "Jaleco / NMK", "Mahjong Daireikai (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1990, mjzoomin, 0, jalmah, mjzoomin, jalmah_state, mjzoomin, ROT0, "Jaleco", "Mahjong Channel Zoom In (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) /*Second version of the MCU*/ -GAME( 1990, kakumei, 0, jalmah, kakumei, jalmah_state, kakumei, ROT0, "Jaleco", "Mahjong Kakumei (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1990, kakumei, 0, jalmah, kakumei, jalmah_state, kakumei, ROT0, "Jaleco", "Mahjong Kakumei (Japan)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1992, kakumei2, 0, jalmah, kakumei2, jalmah_state, kakumei2, ROT0, "Jaleco", "Mahjong Kakumei 2 - Princess League (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1993, suchipi, 0, jalmah, suchipi, jalmah_state, suchipi, ROT0, "Jaleco", "Idol Janshi Suchie-Pai Special (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, suchipi, 0, jalmah, suchipi, jalmah_state, suchipi, ROT0, "Jaleco", "Idol Janshi Suchie-Pai Special (Japan)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/jangou.cpp b/src/mame/drivers/jangou.cpp index 8615d4a1e69..2ecedbc4979 100644 --- a/src/mame/drivers/jangou.cpp +++ b/src/mame/drivers/jangou.cpp @@ -44,15 +44,17 @@ class jangou_state : public driver_device { public: jangou_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_cpu_0(*this, "cpu0"), - m_cpu_1(*this, "cpu1"), - m_nsc(*this, "nsc"), - m_msm(*this, "msm"), - m_cvsd(*this, "cvsd"), - m_palette(*this, "palette"), - m_blitter(*this, "blitter"), - m_soundlatch(*this, "soundlatch") { } + : driver_device(mconfig, type, tag) + , m_cpu_0(*this, "cpu0") + , m_cpu_1(*this, "cpu1") + , m_nsc(*this, "nsc") + , m_msm(*this, "msm") + , m_cvsd(*this, "cvsd") + , m_palette(*this, "palette") + , m_blitter(*this, "blitter") + , m_soundlatch(*this, "soundlatch") + { + } /* sound-related */ // Jangou CVSD Sound @@ -168,7 +170,7 @@ uint32_t jangou_state::screen_update_jangou(screen_device &screen, bitmap_ind16 for (y = cliprect.min_y; y <= cliprect.max_y; ++y) { - uint8_t *src = &m_blitter->m_blit_buffer[y * 256 + cliprect.min_x]; + const uint8_t *src = &m_blitter->blit_buffer(y, cliprect.min_x); uint16_t *dst = &m_tmp_bitmap->pix16(y, cliprect.min_x); for (x = cliprect.min_x; x <= cliprect.max_x; x += 2) @@ -836,7 +838,7 @@ MACHINE_RESET_MEMBER(jangou_state,jngolady) } /* Note: All frequencies and dividers are unverified */ -static MACHINE_CONFIG_START( jangou, jangou_state ) +static MACHINE_CONFIG_START( jangou ) /* basic machine hardware */ MCFG_CPU_ADD("cpu0", Z80, MASTER_CLOCK / 8) @@ -895,7 +897,7 @@ static MACHINE_CONFIG_DERIVED( jngolady, jangou ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(jangou_state, jngolady_vclk_cb)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -1265,13 +1267,13 @@ DRIVER_INIT_MEMBER(jangou_state,luckygrl) * *************************************/ -GAME( 1983, jangou, 0, jangou, jangou, driver_device, 0, ROT0, "Nichibutsu", "Jangou [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, macha, 0, jangou, macha, driver_device, 0, ROT0, "Logitec", "Monoshiri Quiz Osyaberi Macha (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, jangou, 0, jangou, jangou, jangou_state, 0, ROT0, "Nichibutsu", "Jangou [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, macha, 0, jangou, macha, jangou_state, 0, ROT0, "Logitec", "Monoshiri Quiz Osyaberi Macha (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, jngolady, 0, jngolady, jngolady, jangou_state, jngolady, ROT0, "Nichibutsu", "Jangou Lady (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, cntrygrl, 0, cntrygrl, cntrygrl, driver_device, 0, ROT0, "Royal Denshi", "Country Girl (Japan set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, cntrygrla, cntrygrl, cntrygrl, cntrygrl, driver_device, 0, ROT0, "Nichibutsu", "Country Girl (Japan set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, fruitbun, cntrygrl, cntrygrl, cntrygrl, driver_device, 0, ROT0, "Nichibutsu", "Fruits & Bunny (World?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, roylcrdn, 0, roylcrdn, roylcrdn, driver_device, 0, ROT0, "Nichibutsu", "Royal Card (Nichibutsu)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, cntrygrl, 0, cntrygrl, cntrygrl, jangou_state, 0, ROT0, "Royal Denshi", "Country Girl (Japan set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, cntrygrla, cntrygrl, cntrygrl, cntrygrl, jangou_state, 0, ROT0, "Nichibutsu", "Country Girl (Japan set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, fruitbun, cntrygrl, cntrygrl, cntrygrl, jangou_state, 0, ROT0, "Nichibutsu", "Fruits & Bunny (World?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, roylcrdn, 0, roylcrdn, roylcrdn, jangou_state, 0, ROT0, "Nichibutsu", "Royal Card (Nichibutsu)", MACHINE_SUPPORTS_SAVE ) /* The following might not run there... */ GAME( 1984?, luckygrl, 0, cntrygrl, cntrygrl, jangou_state, luckygrl, ROT0, "Wing Co., Ltd.", "Lucky Girl? (Wing)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/jankenmn.cpp b/src/mame/drivers/jankenmn.cpp index 260874eaab0..df5fd004b31 100644 --- a/src/mame/drivers/jankenmn.cpp +++ b/src/mame/drivers/jankenmn.cpp @@ -362,7 +362,7 @@ static const z80_daisy_config daisy_chain[] = * Machine Config * *********************************************/ -static MACHINE_CONFIG_START( jankenmn, jankenmn_state ) +static MACHINE_CONFIG_START( jankenmn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* 2.5 MHz */ MCFG_Z80_DAISY_CHAIN(daisy_chain) @@ -389,7 +389,7 @@ static MACHINE_CONFIG_START( jankenmn, jankenmn_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("speaker") - MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC + MCFG_SOUND_ADD("dac", AD7523, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END @@ -416,5 +416,5 @@ ROM_END * Game Drivers * *********************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... LAYOUT */ -GAMEL( 1991, jankenmn, 0, jankenmn, jankenmn, driver_device, 0, ROT0, "Sunwise", "Janken Man Kattara Ageru", MACHINE_SUPPORTS_SAVE, layout_jankenmn ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1991, jankenmn, 0, jankenmn, jankenmn, jankenmn_state, 0, ROT0, "Sunwise", "Janken Man Kattara Ageru", MACHINE_SUPPORTS_SAVE, layout_jankenmn ) diff --git a/src/mame/drivers/jantotsu.cpp b/src/mame/drivers/jantotsu.cpp index a77895515d8..afa91d7ff59 100644 --- a/src/mame/drivers/jantotsu.cpp +++ b/src/mame/drivers/jantotsu.cpp @@ -494,7 +494,7 @@ void jantotsu_state::machine_reset() m_adpcm_trigger = 0; } -static MACHINE_CONFIG_START( jantotsu, jantotsu_state ) +static MACHINE_CONFIG_START( jantotsu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MAIN_CLOCK/4) @@ -525,7 +525,7 @@ static MACHINE_CONFIG_START( jantotsu, jantotsu_state ) MCFG_SOUND_ADD("adpcm", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(jantotsu_state, jan_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S64_4B) /* 6 KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END @@ -562,4 +562,4 @@ ROM_END * *************************************/ -GAME( 1983, jantotsu, 0, jantotsu, jantotsu, driver_device, 0, ROT270, "Sanritsu", "4nin-uchi Mahjong Jantotsu", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, jantotsu, 0, jantotsu, jantotsu, jantotsu_state, 0, ROT270, "Sanritsu", "4nin-uchi Mahjong Jantotsu", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/jchan.cpp b/src/mame/drivers/jchan.cpp index 5da50b63809..490624d5e18 100644 --- a/src/mame/drivers/jchan.cpp +++ b/src/mame/drivers/jchan.cpp @@ -576,7 +576,7 @@ INPUT_PORTS_END /* machine driver */ -static MACHINE_CONFIG_START( jchan, jchan_state ) +static MACHINE_CONFIG_START( jchan ) MCFG_CPU_ADD("maincpu", M68000, 16000000) MCFG_CPU_PROGRAM_MAP(jchan_main) @@ -713,5 +713,5 @@ DRIVER_INIT_MEMBER( jchan_state, jchan ) /* game drivers */ -GAME( 1995, jchan, 0, jchan, jchan, jchan_state, jchan, ROT0, "Kaneko", "Jackie Chan - The Kung-Fu Master", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, jchan2, 0, jchan, jchan2, jchan_state, jchan, ROT0, "Kaneko", "Jackie Chan in Fists of Fire", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, jchan, 0, jchan, jchan, jchan_state, jchan, ROT0, "Kaneko", "Jackie Chan - The Kung-Fu Master", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, jchan2, 0, jchan, jchan2, jchan_state, jchan, ROT0, "Kaneko", "Jackie Chan in Fists of Fire", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/jclub2.cpp b/src/mame/drivers/jclub2.cpp index e23e859bc21..a1ed108ca9d 100644 --- a/src/mame/drivers/jclub2.cpp +++ b/src/mame/drivers/jclub2.cpp @@ -1,181 +1,318 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia -/************************************************************************************************************************************** +/************************************************************************************************************ + + Seta's Jockey Club II (ジョッキークラブ II) + + Various hardware revisions, all use a MC68EC020FG16 CPU. + + --------------------------------------------------------------------------------------------- + Year + Game PCB Video Sound Other + --------------------------------------------------------------------------------------------- + 1994 Jockey Club II (older hw) E06-00409/E06-00407* ST-0020 ST-0016 ST-0013 ST-0017 + 1996 Jockey Club II (newer hw) E79-001 rev 01a ST-0032 <-- ST-0013 ST-0017 + 2001 Dark Horse (bootleg hw) - 3 x FPGA M6295 - + --------------------------------------------------------------------------------------------- + * Spotted also on E48-0027 Terminal P.C.B. + + ST-0013: unknown function. Doesn't seem to be used anywhere else? + ST-0016: Z80 with integrated video + sound capabilities. Video functionality is probably not used here. + ST-0017: unknown function (maybe I/O or RLE). Also used in srmp6 (see srmp6.cpp). + ST-0020: zooming sprites + blitter + tilemaps chip. Also used by gdfs in ssv.cpp (see st0020.cpp) + ST-0032: similar to ST-0020 but the ram / list formats aren't the same. Maybe it handles sound as + there doesn't seem to be any other dedicated sound chip. Doesn't seem to be used anywhere else? + + Notes: + - Reset, Meter, Last Game and Config (in later games) are revolving keys, so once you turn them they stay "active". + - Boot with Test switch on (F2) for service mode. Note that Config (if present) has to be off for this to work. + - The EEPROM holds an ID at $14 e.g. SETA1997JC26203W: + + 6 = config version, 203 = program version, W = fixed wide monitor (N = fixed normal, ' ' = configurable, E = Extended config) + + The ID can be reprogrammed by booting with a key combination (see below) that enables Write ID mode. + Later games require to enter a valid Vender Code (up to 8 hex digits) which is saved (encoded as 8 bytes) + at address $2a in the EEPROM (shown in service mode after the version) with a matching configuration id at $28 (2 bytes). + The code affects the game settings (accounting for e.g. laws of the target market) and appearence (e.g. hiding the game title) + Vender Codes and configuration ids for e.g. jclub2v203 are at 209B6C. Enter the digits using these inputs -> outputs: + + P1 start + 1..8 -> 1..8 | 7-8 -> A | P1 start + 7-8 -> F | P1 start + other keys -> 9 | any key -> F | payout -> end + + - Administrator Setup allows the setting of 3 rows of 8 characters (0-9 A-Z !). The meaning is unknown. Edit them with: + + 6-7 -> left | 7-8 -> right | start -> down | 1 -> increment | 1-2 -> decrement | payout -> end + + - The program can be upgraded by placing a ROM in the socket next to the main program ROM. + - An undumped v4.00 exists, with copyright 1994-97 Seta Corporation on the E84-0001 Rev.B hardware. + + jclub2v100/jclub2v101 (these can generate a valid EEPROM without a vender code): + - Boot with Reset + P1 Start : Configuration Setup (operator options) + - Boot with Reset + P1 Cancel : Backup Data Clear (needed to clear hardware/emergency/ID errors) + - Boot with Test + P1 Start : Write To ID Code (writes ID to EEPROM, configurable monitor) + - Boot with Test + P1 Payout + P1 Cancel : Write To ID Code(Wide) (writes ID to EEPROM, fixed wide monitor) + + jclub2v110 (from this version onwards a vender code is needed to generate a valid EEPROM): + - All of the above plus... + - Boot with Test + P1 Start + P1 Cancel : Write To ID Code(A) (writes ID to EEPROM, configurable monitor, no game title) + - Boot with invalid ID in the EEPROM i.e. : Now Update ID Enter Vender Code (update ID in EEPROM from a previous version) + EEPROM does not contain SETA at $14 and JC2X at $1c, where X is from the current version: + + ' '(v100) | A(v101) | 2/3(v110) | 4/5(v112) | 6(v203) | Z(v200-220) + + Bug: this will be triggered if the EEPROM is blank or from a newer version, but the update will fail even with a correct vender code! + Simply use the key combination for Write ID (thus writing the ID from scratch). + + jclub2v112: + - Vender codes are associated with a set of features encoded by up to 3 letters (e.g. AEW) shown after writing the ID: + 1) A / empty = no game title (Anonymous?) / game title + 2) E / empty = more configuration options (Extended?) if the monitor is not fixed (the last letter of the ID becomes E) + 3) W / N / empty = Fixed Wide / Fixed Normal / Configurable monitor (goes in the last letter of the ID, unless it's E) + - Boot with Reset + P1 Start : Configuration Setup (operator options) + - Boot with Reset + P1 Cancel : Backup Data Clear (needed to clear hardware/emergency/ID errors) + - Boot with Test + P1 Start + P1 Cancel : Write ID Enter Write Code (writes ID to EEPROM, features depend on vender code) + - They fixed the Update ID bug: it will only show if the EEPROM can be updated. Otherwise Broken ID will be shown (equivalent to Write ID). + + jclub2v200 and above: + - Vender codes are associated with an hex number instead of the 3 letters above: + $00 (on some sets produces Failed Write Sequence) .. $10, $20x (special with some settings shown but not changeable) + - Boot with Test + P1 Payout + P1 Cancel : Administrator Setup (release payout quickly! Or it will end with a failure) + + jclub2v203 and above: + - Boot with Reset + P1 Start : Configuration Setup (press Test for operator options) + - Boot with Reset + Test + P1 Cancel : Backup All Clear (needed to clear hardware/emergency/ID errors) + + darkhors (allegedly based on v400): + - Sprite ram is parsed and converted from the original format (ST-0032 zooming sprites + tilemaps) + to this hardware's plain sprites + 2 tilemaps. + - Boot with Config : System Setup (has printer and rtc setup) + - Boot with Reset + Test + P1 Cancel : Backup All Clear + - Boot with Config + P1 Payout + P1 Cancel : Administrator Setup (release payout quickly, or it will end with a failure) + - Boot with Config + P1 Start + P1 Cancel : Write ID Enter Write Code + + To do: + - Emulate coin double sensor. At the moment you will need to enter the config menu and change to single sensor + - Visible area under non-wide setting is $160 pixels wide instead of $150 + - Extend palette to 0x20000 entries (palette_device::allocate_palette() prevents more than 0x10000) + - Correct clocks + - darkhors: fix the disalignment between sprites and tilemap (gap in the fence) during play. Other screens are fine + +************************************************************************************************************/ +#include "emu.h" +#include "cpu/m68000/m68000.h" +#include "machine/eepromser.h" +#include "machine/nvram.h" +#include "machine/st0016.h" +#include "machine/ticket.h" +#include "machine/watchdog.h" +#include "sound/okim6295.h" +#include "speaker.h" +#include "video/st0020.h" +#include "jclub2o.lh" +#include "jclub2.lh" - Jockey Club II driver +// Common between all hardware (jclub2o, jclub2 and darkhors) +class common_state : public driver_device +{ +public: + common_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_gamecpu(*this, "gamecpu"), + m_eeprom(*this, "eeprom"), + m_hopper1(*this, "hopper1"), m_hopper2(*this, "hopper2"), + m_palette(*this, "palette"), + m_key1(*this, "KEY1.%u", 0), m_key2(*this, "KEY2.%u", 0), + m_input_sel1(0), m_input_sel2(0), + m_out1(0), m_out2(0), m_out3(0) + { } - various hardware revisions - all use a MC68EC020FG16 CPU + uint8_t read_key(required_ioport_array<8> & key, uint8_t mask); - extra customs + DECLARE_READ8_MEMBER(console_r); + DECLARE_WRITE8_MEMBER(console_w); + DECLARE_READ8_MEMBER(console_status_r); - jclub2 : SETA ST-0032 (video + sound? **1), SETA ST-0013, SETA ST-0017 ( PCB E79-001 rev 01a ) - jclub2o : SETA ST-0020 (video), SETA ST-0016 (sound + video? **2), SETA ST-0013, SETA ST-0017 ( E06-00409 / E06-00407 ) - darkhors: (bootleg hardware) + DECLARE_WRITE32_MEMBER(eeprom_93c46_w); - ------ + TIMER_DEVICE_CALLBACK_MEMBER(scanline_irq); - ST-0020 is a zooming sprite / blitter chip, also used by gdfs in ssv.c (see st0020.c) - ST-0016 is a z80 with integrated video + sound capabilities **1 - ST-0017 is also used in srmp6.c, what is it? I/O? RLE? +protected: + required_device m_gamecpu; + required_device m_eeprom; + required_device m_hopper1, m_hopper2; + required_device m_palette; + required_ioport_array<8> m_key1, m_key2; - ST-0013 doesn't seem to be used anywhere else? - ST-0032 doesn't seem to be used anywhere else? **2 + uint8_t m_input_sel1, m_input_sel2; - ------ + uint32_t m_out1, m_out2, m_out3; - **1 ST-0032 seems to be similar to ST-0020 but the ram / list formats aren't the same, maybe it handles sound as there doesn't - seem to be any other dedicated sound chip + void debug_out(); +}; - **2 ST-0016 video functionality is probably not used +// Newer jclub2 hardware (without ST-0016) +class jclub2_state : public common_state +{ +public: + jclub2_state(const machine_config &mconfig, device_type type, const char *tag) : + common_state(mconfig, type, tag), + m_st0020(*this, "st0020") + { } + DECLARE_WRITE32_MEMBER(input_sel1_out3_w); + DECLARE_WRITE32_MEMBER(input_sel2_w); + DECLARE_READ32_MEMBER(p1_r); + DECLARE_READ32_MEMBER(p2_r); + DECLARE_WRITE32_MEMBER(out1_w); + DECLARE_WRITE32_MEMBER(out2_w); -**************************************************************************************************************************************/ + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); +private: + required_device m_st0020; +}; +// Older jclub2 hardware (with ST-0016) +class jclub2o_state : public jclub2_state +{ +public: + jclub2o_state(const machine_config &mconfig, device_type type, const char *tag) : + jclub2_state(mconfig, type, tag) + { } + DECLARE_WRITE32_MEMBER(eeprom_s29290_w); + // ST-0016 <-> 68EC020 + DECLARE_READ8_MEMBER(cmd1_r); + DECLARE_READ8_MEMBER(cmd2_r); + DECLARE_WRITE8_MEMBER(cmd1_w); + DECLARE_WRITE8_MEMBER(cmd2_w); + DECLARE_READ8_MEMBER(cmd_stat_r); + WRITE8_MEMBER(st0016_rom_bank_w); // temp? -/* + // 68EC020 <-> ST-0016 + DECLARE_READ32_MEMBER(cmd1_word_r); + DECLARE_READ32_MEMBER(cmd2_word_r); + DECLARE_WRITE32_MEMBER(cmd1_word_w); + DECLARE_WRITE32_MEMBER(cmd2_word_w); + DECLARE_READ32_MEMBER(cmd_stat_word_r); + +private: + uint8_t m_cmd1; + uint8_t m_cmd2; + uint8_t m_cmd_stat; +}; - -= Dark Horse =- - driver by Luca Elia (l.elia@tin.it) +// bootleg darkhors hardware +class darkhors_state : public common_state +{ +public: + darkhors_state(const machine_config &mconfig, device_type type, const char *tag) : + common_state(mconfig, type, tag), + m_tmapram(*this, "tmapram"), + m_tmapscroll(*this, "tmapscroll"), + m_tmapram2(*this, "tmapram2"), + m_tmapscroll2(*this, "tmapscroll2"), + m_spriteram(*this, "spriteram"), + m_gfxdecode(*this, "gfxdecode") + { } -A bootleg of 1997 Seta's "Jockey Club II" on inferior hardware: + DECLARE_WRITE32_MEMBER(input_sel_w); + DECLARE_READ32_MEMBER(input_r); + DECLARE_WRITE32_MEMBER(out1_w); -|-----------------------------------------------------------| -| M6295 SND GM76C512 GM76C512 |-------| | -| GM76C512 GM76C512 |ACTEL | | -| EEPROM PRG1 GM76C512 GM76C512 |A40MX04| | -| GM76C512 GM76C512 | | | -| PRG2 |-------| | -| |-------| 62256 GM71C4260 | -| |ACTEL | 3.6V_BATT 62256 GM71C4260 | -| |A40MX04| 68EC020 GAL | -| | | GAL GAL | -|J |-------| | -|A GFX1 GFX2 | -|M | -|M GFX3 | -|A | -| GFX4 | -| 62256 | -| GFX5 | -| 62256 |-------| | -| 62256 |ACTEL | GFX6 | -| |A42MX09| | -| 62256 | | GFX7 | -| |-------| | -| GAL GFX8 | -| GAL | -| 36MHz | -|-----------------------------------------------------------| + DECLARE_WRITE32_MEMBER(tmapram_w); + DECLARE_WRITE32_MEMBER(tmapram2_w); -Notes: + TILE_GET_INFO_MEMBER(get_tile_info_0); + TILE_GET_INFO_MEMBER(get_tile_info_1); -- Sprite ram is parsed and converted from the original format (gdfs zooming sprites + - ssv row sprites?, see ssv.c) to this harware's plain sprites + 2 tilemaps. -- During boot press: Test (F1) for test menu; Service (9) for config menu. -- This game uses 72 input keys! + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); -To do: + DECLARE_DRIVER_INIT(darkhors); + DECLARE_VIDEO_START(darkhors); -- Emulate coin double sensor. At the moment you will need to enter the config menu - (9 during boot), change to single sensor, press 9 again then 1 to save. -- Remove the patch to pass the eeprom test. -- Extend palette to 0x20000 entries (palette_start prevents more than 0x10000). -- Fix the disalignment between sprites and tilemap (gap in the fence) during play, - without breaking the other screens, which are fine. -- Implement a few missing inputs / outputs. -- Correct clocks +private: + required_shared_ptr m_tmapram; + required_shared_ptr m_tmapscroll; + required_shared_ptr m_tmapram2; + required_shared_ptr m_tmapscroll2; + required_shared_ptr m_spriteram; -***************************************************************************/ + required_device m_gfxdecode; -#include "emu.h" -#include "cpu/m68000/m68000.h" -#include "machine/eepromser.h" -#include "machine/nvram.h" -#include "machine/st0016.h" -#include "sound/okim6295.h" -#include "video/st0020.h" -#include "speaker.h" + tilemap_t *m_tmap; + tilemap_t *m_tmap2; +}; + + +/*************************************************************************** + + Common Functions + +***************************************************************************/ -class darkhors_state : public driver_device +READ8_MEMBER(common_state::console_r) { -public: - darkhors_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_tmapram(*this, "tmapram"), - m_tmapscroll(*this, "tmapscroll"), - m_tmapram2(*this, "tmapram2"), - m_tmapscroll2(*this, "tmapscroll2"), - m_spriteram(*this, "spriteram"), - m_gdfs_st0020(*this, "st0020_spr"), - m_gamecpu(*this, "gamecpu"), - m_eeprom(*this, "eeprom"), - m_palette(*this, "palette"), - m_gfxdecode(*this, "gfxdecode") - { } + return 0; +} - tilemap_t *m_tmap; - tilemap_t *m_tmap2; - optional_shared_ptr m_tmapram; - optional_shared_ptr m_tmapscroll; - optional_shared_ptr m_tmapram2; - optional_shared_ptr m_tmapscroll2; - uint32_t m_input_sel; - uint32_t m_input_sel_jc_1p; - uint32_t m_input_sel_jc_2p; - int m_jclub2_gfx_index; - optional_shared_ptr m_spriteram; - optional_device m_gdfs_st0020; - required_device m_gamecpu; - required_device m_eeprom; - required_device m_palette; - DECLARE_WRITE32_MEMBER(darkhors_tmapram_w); - DECLARE_WRITE32_MEMBER(darkhors_tmapram2_w); - DECLARE_WRITE32_MEMBER(darkhors_input_sel_w); - DECLARE_READ32_MEMBER(darkhors_input_sel_r); - DECLARE_READ32_MEMBER(p_4e0000); - DECLARE_READ32_MEMBER(p_580004); - DECLARE_WRITE32_MEMBER(jclub2_input_sel_w_p2); - DECLARE_WRITE32_MEMBER(jclub2_input_sel_w_p1); - DECLARE_WRITE32_MEMBER(darkhors_unk1_w); - DECLARE_WRITE32_MEMBER(darkhors_eeprom_w); - DECLARE_WRITE32_MEMBER(jclub2o_eeprom_w); - DECLARE_DRIVER_INIT(darkhors); - TILE_GET_INFO_MEMBER(get_tile_info_0); - TILE_GET_INFO_MEMBER(get_tile_info_1); - DECLARE_VIDEO_START(darkhors); - DECLARE_VIDEO_START(jclub2); - DECLARE_VIDEO_START(jclub2o); - uint32_t screen_update_darkhors(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_jclub2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_jclub2o(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_DEVICE_CALLBACK_MEMBER(darkhors_irq); - void draw_sprites_darkhors(bitmap_ind16 &bitmap, const rectangle &cliprect); - optional_device m_gfxdecode; +WRITE8_MEMBER(common_state::console_w) +{ +} - WRITE8_MEMBER(st0016_rom_bank_w); // temp? -}; +READ8_MEMBER(common_state::console_status_r) +{ + // bit 0: 1 = can send to debug console + // bi1 1: 1 = can read from debug console + return 0x3; +} +uint8_t common_state::read_key(required_ioport_array<8> & key, uint8_t mask) +{ + switch(mask) + { + case 0x01: return key[0]->read(); + case 0x02: return key[1]->read(); + case 0x04: return key[2]->read(); + case 0x08: return key[3]->read(); + case 0x10: return key[4]->read(); + case 0x20: return key[5]->read(); + case 0x40: return key[6]->read(); + case 0x80: return key[7]->read(); + } + return 0xff; +} -#define DARKHORS_DEBUG 0 +void common_state::debug_out() +{ +// popmessage("OUT: %04X | %04X | %02X--", m_out1 >> 16, m_out2 >> 16, m_out3 >> 24); +} /*************************************************************************** - Video Hardware - + (jclub2) ***************************************************************************/ +uint32_t jclub2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(m_palette->black_pen(), cliprect); + + m_st0020->update_screen(screen, bitmap, cliprect, true); + + return 0; +} +/*************************************************************************** + Video Hardware + (darkhors) +***************************************************************************/ TILE_GET_INFO_MEMBER(darkhors_state::get_tile_info_0) { @@ -191,37 +328,36 @@ TILE_GET_INFO_MEMBER(darkhors_state::get_tile_info_1) SET_TILE_INFO_MEMBER(0, tile/2, (color & 0x200) ? (color & 0x1ff) : ((color & 0x0ff) * 4) , 0); } -WRITE32_MEMBER(darkhors_state::darkhors_tmapram_w) +WRITE32_MEMBER(darkhors_state::tmapram_w) { COMBINE_DATA(&m_tmapram[offset]); m_tmap->mark_tile_dirty(offset); } -WRITE32_MEMBER(darkhors_state::darkhors_tmapram2_w) +WRITE32_MEMBER(darkhors_state::tmapram2_w) { COMBINE_DATA(&m_tmapram2[offset]); m_tmap2->mark_tile_dirty(offset); } -void darkhors_state::draw_sprites_darkhors(bitmap_ind16 &bitmap, const rectangle &cliprect) +void darkhors_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) { uint32_t *s = m_spriteram; uint32_t *end = m_spriteram + 0x02000/4; for ( ; s < end; s += 8/4 ) { - int attr, code, color, sx, sy, flipx, flipy; + int sx = (s[ 0 ] >> 16); + int sy = (s[ 0 ] & 0xffff); + int attr = (s[ 1 ] >> 16); + int code = (s[ 1 ] & 0xffff); - sx = (s[ 0 ] >> 16); - sy = (s[ 0 ] & 0xffff); - attr = (s[ 1 ] >> 16); - code = (s[ 1 ] & 0xffff); + // List end + if (sx & 0x8000) + break; - // Last sprite - if (sx & 0x8000) break; - - flipx = 0; - flipy = 0; - color = (attr & 0x0200) ? (attr & 0x1ff) : (attr & 0x1ff) * 4; + int flipx = 0; + int flipy = 0; + int color = (attr & 0x0200) ? (attr & 0x1ff) : (attr & 0x1ff) * 4; // Sign extend the position sx = (sx & 0x1ff) - (sx & 0x200); @@ -231,8 +367,8 @@ void darkhors_state::draw_sprites_darkhors(bitmap_ind16 &bitmap, const rectangle sy += 0xf8; m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, - code/2, color, - flipx, flipy, sx, sy, 0); + code/2, color, + flipx, flipy, sx, sy, 0); } } @@ -243,14 +379,14 @@ VIDEO_START_MEMBER(darkhors_state,darkhors) m_tmap->set_transparent_pen(0); m_tmap2->set_transparent_pen(0); - m_gfxdecode->gfx(0)->set_granularity(64); /* 256 colour sprites with palette selectable on 64 colour boundaries */ + m_gfxdecode->gfx(0)->set_granularity(64); // 256 colour sprites with palette selectable on 64 colour boundaries } -uint32_t darkhors_state::screen_update_darkhors(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t darkhors_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int layers_ctrl = -1; -#if DARKHORS_DEBUG +#ifdef MAME_DEBUG if (machine().input().code_pressed(KEYCODE_Z)) { int mask = 0; @@ -270,10 +406,10 @@ uint32_t darkhors_state::screen_update_darkhors(screen_device &screen, bitmap_in m_tmap2->set_scrollx(0, (m_tmapscroll2[0] >> 16) - 5); m_tmap2->set_scrolly(0, (m_tmapscroll2[0] & 0xffff) - 0xff ); if (layers_ctrl & 2) m_tmap2->draw(screen, bitmap, cliprect, 0, 0); - if (layers_ctrl & 4) draw_sprites_darkhors(bitmap,cliprect); + if (layers_ctrl & 4) draw_sprites(bitmap,cliprect); -#if DARKHORS_DEBUG +#ifdef MAME_DEBUG #if 0 popmessage("%04X-%04X %04X-%04X %04X-%04X %04X-%04X %04X-%04X %04X-%04X", m_tmapscroll[0] >> 16, m_tmapscroll[0] & 0xffff, @@ -285,488 +421,415 @@ uint32_t darkhors_state::screen_update_darkhors(screen_device &screen, bitmap_in ); #endif #endif + return 0; } /*************************************************************************** - Memory Map - ***************************************************************************/ +// I/O (both older and newer jclub2 hardware) -WRITE32_MEMBER(darkhors_state::jclub2o_eeprom_w) //seiko s-2929 is used on old style pcb +WRITE32_MEMBER(jclub2_state::input_sel2_w) { - if (data & ~0xff000000) - logerror("%s: Unknown EEPROM bit written %08X\n",machine().describe_context(),data); + // sometimes 0x80000000 bit is set + // (it is cleared before reading from 4d0000.b / 4d0004.b / 4d0008.b / 4d000c.b) + if (ACCESSING_BITS_16_23) + m_input_sel2 = data >> 16; +} + +WRITE32_MEMBER(jclub2_state::input_sel1_out3_w) +{ + COMBINE_DATA(&m_out3); - if ( ACCESSING_BITS_24_31 ) + if (ACCESSING_BITS_16_23) + m_input_sel1 = data >> 16; + if (ACCESSING_BITS_24_31) { - // latch the bit - m_eeprom->di_write((data & 0x01000000) >> 24); + // 0x0800 P2 divider coil + // - + debug_out(); + } +} - // reset line asserted: reset. - m_eeprom->cs_write((data & 0x08000000) ? ASSERT_LINE : CLEAR_LINE ); +READ32_MEMBER(jclub2_state::p1_r) +{ + uint32_t ret = ioport("P1LOW")->read() & 0x00ffffff; + return ret | (read_key(m_key1, m_input_sel1) << 24); +} - // clock line asserted: write latch or select next bit to read - m_eeprom->clk_write((data & 0x04000000) ? ASSERT_LINE : CLEAR_LINE ); +READ32_MEMBER(jclub2_state::p2_r) +{ + uint32_t ret = ioport("P2LOW")->read() & 0x00ffffff; + return ret | (read_key(m_key2, m_input_sel2) << 24); +} + +WRITE32_MEMBER(jclub2_state::out1_w) +{ + COMBINE_DATA(&m_out1); + if (ACCESSING_BITS_16_31) + { + // 0x1000 P2 hopper rotate + // - + // 0x0200 P1 divider coil + // 0x0100 P2 lockout coil + // 0x0080 P1 lockout coil + // - + // 0x0020 counter meter 6 + // 0x0010 counter meter 1 + // 0x0008 counter meter 4 + // 0x0004 counter meter 3 + // 0x0002 counter meter 5 + // 0x0001 counter meter 2 + + m_hopper2->motor_w( data & 0x10000000); + machine().bookkeeping().coin_lockout_w(1, (~data) & 0x01000000); + machine().bookkeeping().coin_lockout_w(0, (~data) & 0x00800000); + + debug_out(); + } +} + +WRITE32_MEMBER(jclub2_state::out2_w) +{ + COMBINE_DATA(&m_out2); + if (ACCESSING_BITS_16_31) + { + // 0x8000 P1 hopper rotate + + m_hopper1->motor_w(data & 0x80000000); + + debug_out(); } } -WRITE32_MEMBER(darkhors_state::darkhors_eeprom_w) +// Older hardware (ST-0020 + ST-0016) only + +WRITE32_MEMBER(jclub2o_state::eeprom_s29290_w) { if (data & ~0xff000000) - logerror("%s: Unknown EEPROM bit written %08X\n",machine().describe_context(),data); + logerror("%s: Unknown EEPROM bit written %08X\n", machine().describe_context(), data); - if ( ACCESSING_BITS_24_31 ) + if (ACCESSING_BITS_24_31) { // latch the bit - m_eeprom->di_write((data & 0x04000000) >> 26); + m_eeprom->di_write((data & 0x01000000) >> 24); // reset line asserted: reset. - m_eeprom->cs_write((data & 0x01000000) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->cs_write((data & 0x08000000) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x04000000) ? ASSERT_LINE : CLEAR_LINE ); } } +// 68EC020 <-> ST-0016 + +READ32_MEMBER(jclub2o_state::cmd1_word_r) +{ + m_cmd_stat &= ~0x02; + return m_cmd1 << 24; +} +READ32_MEMBER(jclub2o_state::cmd2_word_r) +{ + m_cmd_stat &= ~0x08; + return m_cmd2 << 24; +} -WRITE32_MEMBER(darkhors_state::darkhors_input_sel_w) +READ32_MEMBER(jclub2o_state::cmd_stat_word_r) { - COMBINE_DATA(&m_input_sel); -// if (ACCESSING_BITS_16_31) popmessage("%04X",data >> 16); + return m_cmd_stat << 24; } -static int mask_to_bit( int mask ) +WRITE32_MEMBER(jclub2o_state::cmd1_word_w) { - switch( mask ) + if (ACCESSING_BITS_24_31) { - default: - case 0x01: return 0; - case 0x02: return 1; - case 0x04: return 2; - case 0x08: return 3; - case 0x10: return 4; - case 0x20: return 5; - case 0x40: return 6; - case 0x80: return 7; + m_cmd_stat |= 0x01; + m_cmd1 = data >> 24; + logerror("%s: cmd1_w %02x\n", machine().describe_context(), m_cmd1); } } - -READ32_MEMBER(darkhors_state::darkhors_input_sel_r) +WRITE32_MEMBER(jclub2o_state::cmd2_word_w) { - // from bit mask to bit number - int bit_p1 = mask_to_bit((m_input_sel & 0x00ff0000) >> 16); - int bit_p2 = mask_to_bit((m_input_sel & 0xff000000) >> 24); - static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7" }; - - return (ioport(portnames[bit_p1])->read() & 0x00ffffff) | - (ioport(portnames[bit_p2])->read() & 0xff000000) ; + if (ACCESSING_BITS_24_31) + { + m_cmd_stat |= 0x04; + m_cmd2 = data >> 24; + logerror("%s: cmd2_w %02x\n", machine().describe_context(), m_cmd2); + } } +static ADDRESS_MAP_START( jclub2o_map, AS_PROGRAM, 32, jclub2o_state ) + AM_RANGE(0x000000, 0x27ffff) AM_ROM + AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") // battery + AM_RANGE(0x490000, 0x490003) AM_WRITE(eeprom_s29290_w) -READ32_MEMBER(darkhors_state::p_580004) -{ -uint32_t ret = ioport("580004")->read()& 0x00ffffff; -switch (m_input_sel_jc_2p){ - case 0x01: return ret | (ioport("580004-01")->read()<<24); - case 0x02: return ret | (ioport("580004-02")->read()<<24); - case 0x04: return ret | (ioport("580004-04")->read()<<24); - case 0x08: return ret | (ioport("580004-08")->read()<<24); - case 0x10: return ret | (ioport("580004-10")->read()<<24); - case 0x20: return ret | (ioport("580004-20")->read()<<24); - case 0x40: return ret | (ioport("580004-40")->read()<<24); - case 0x80: return ret | (ioport("580004-80")->read()<<24); - } + AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(out2_w) +// AM_RANGE(0x4a0010, 0x4a0013) AM_WRITE +// AM_RANGE(0x4a0020, 0x4a0023) AM_WRITE +// AM_RANGE(0x4a0030, 0x4a0033) AM_WRITE - return ret; -} + // ST-0016 + AM_RANGE(0x4b0000, 0x4b0003) AM_READWRITE(cmd1_word_r, cmd1_word_w) + AM_RANGE(0x4b0004, 0x4b0007) AM_READWRITE(cmd2_word_r, cmd2_word_w) + AM_RANGE(0x4b0008, 0x4b000b) AM_READ(cmd_stat_word_r) + AM_RANGE(0x4d0000, 0x4d0003) AM_READNOP AM_WRITENOP // reads seem unused? this write would go to two 7-segs (but the code is never called) + AM_RANGE(0x4d0004, 0x4d0007) AM_READNOP + AM_RANGE(0x4d0008, 0x4d000b) AM_READNOP + AM_RANGE(0x4d000c, 0x4d000f) AM_READNOP -READ32_MEMBER(darkhors_state::p_4e0000) -{ -uint32_t ret = ioport("4E0000")->read()& 0x00ffffff; -switch (m_input_sel_jc_2p){ - case 0x01: return ret | (ioport("4E0000-01")->read()<<24); - case 0x02: return ret | (ioport("4E0000-02")->read()<<24); - case 0x04: return ret | (ioport("4E0000-04")->read()<<24); - case 0x08: return ret | (ioport("4E0000-08")->read()<<24); - case 0x10: return ret | (ioport("4E0000-10")->read()<<24); - case 0x20: return ret | (ioport("4E0000-20")->read()<<24); - case 0x40: return ret | (ioport("4E0000-40")->read()<<24); - case 0x80: return ret | (ioport("4E0000-80")->read()<<24); - } + AM_RANGE(0x4e0000, 0x4e0003) AM_READ(p2_r) AM_WRITE(input_sel2_w) - return ret; -} + AM_RANGE(0x580000, 0x580003) AM_READ_PORT("EEPROM") + AM_RANGE(0x580004, 0x580007) AM_READ(p1_r) + AM_RANGE(0x580008, 0x58000b) AM_READ_PORT("COIN") + AM_RANGE(0x58000c, 0x58000f) AM_WRITE(input_sel1_out3_w) + AM_RANGE(0x580010, 0x580013) AM_WRITE(out1_w) +// AM_RANGE(0x580018, 0x58001b) AM_WRITE +// AM_RANGE(0x58001c, 0x58001f) AM_WRITE + + AM_RANGE(0x580200, 0x580203) AM_DEVREAD16("watchdog", watchdog_timer_device, reset16_r, 0xffff0000) + + AM_RANGE(0x580400, 0x580403) AM_READWRITE8(console_r, console_w, 0x00ff0000) + AM_RANGE(0x580420, 0x580423) AM_READ8(console_status_r, 0x00ff0000) //AM_WRITE +// AM_RANGE(0x580440, 0x580443) AM_WRITE + + // ST-0020 + AM_RANGE(0x600000, 0x67ffff) AM_DEVREADWRITE16( "st0020", st0020_device, sprram_r, sprram_w, 0xffffffff ); + AM_RANGE(0x680000, 0x69ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0x6a0000, 0x6bffff) AM_RAM + AM_RANGE(0x6c0000, 0x6c00ff) AM_DEVREADWRITE16( "st0020", st0020_device, regs_r, regs_w, 0xffffffff ); + AM_RANGE(0x700000, 0x7fffff) AM_DEVREADWRITE16( "st0020", st0020_device, gfxram_r, gfxram_w, 0xffffffff ); +ADDRESS_MAP_END + + +// ST-0016 map -WRITE32_MEMBER(darkhors_state::jclub2_input_sel_w_p1) +// common rombank? should go in machine/st0016 with larger address space exposed? +WRITE8_MEMBER(jclub2o_state::st0016_rom_bank_w) { - //sometimes 0x80000000 bit is set!!! - COMBINE_DATA(&m_input_sel); - m_input_sel_jc_1p = (m_input_sel & 0x00ff0000) >> 16; + membank("bank1")->set_base(memregion("maincpu")->base() + (data* 0x4000)); } +READ8_MEMBER(jclub2o_state::cmd1_r) +{ + m_cmd_stat &= ~0x01; + return m_cmd1; +} +READ8_MEMBER(jclub2o_state::cmd2_r) +{ + m_cmd_stat &= ~0x04; + return m_cmd2; +} +READ8_MEMBER(jclub2o_state::cmd_stat_r) +{ + return m_cmd_stat; +} -WRITE32_MEMBER(darkhors_state::jclub2_input_sel_w_p2) +WRITE8_MEMBER(jclub2o_state::cmd1_w) { - COMBINE_DATA(&m_input_sel); - m_input_sel_jc_2p = (m_input_sel & 0x00ff0000) >> 16; + m_cmd1 = data; + m_cmd_stat |= 0x02; + logerror("%s: cmd1_w %02x\n", machine().describe_context(), m_cmd1); } +WRITE8_MEMBER(jclub2o_state::cmd2_w) +{ + m_cmd2 = data; + m_cmd_stat |= 0x08; + logerror("%s: cmd2_w %02x\n", machine().describe_context(), m_cmd2); +} + +static ADDRESS_MAP_START( st0016_mem, AS_PROGRAM, 8, jclub2o_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") + AM_RANGE(0xe800, 0xe8ff) AM_RAM + //AM_RANGE(0xe900, 0xe9ff) // sound - internal + //AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) + AM_RANGE(0xf000, 0xffff) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( st0016_io, AS_IO, 8, jclub2o_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + //AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w) + AM_RANGE(0xc0, 0xc0) AM_READWRITE(cmd1_r, cmd1_w) + AM_RANGE(0xc1, 0xc1) AM_READWRITE(cmd2_r, cmd2_w) + AM_RANGE(0xc2, 0xc2) AM_READ(cmd_stat_r) + AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w) + AM_RANGE(0xe7, 0xe7) AM_WRITENOP // watchdog? + //AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r) +ADDRESS_MAP_END + +// Newer hardware (ST-0032) only -WRITE32_MEMBER(darkhors_state::darkhors_unk1_w) +WRITE32_MEMBER(common_state::eeprom_93c46_w) { - // 0x1000 lockout -// if (ACCESSING_BITS_16_31) popmessage("%04X",data >> 16); -} + if (data & ~0xff000000) + logerror("%s: Unknown EEPROM bit written %08X\n", machine().describe_context(), data); -static ADDRESS_MAP_START( darkhors_map, AS_PROGRAM, 32, darkhors_state ) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x41ffff) AM_RAM + if (ACCESSING_BITS_24_31) + { + // latch the bit + m_eeprom->di_write((data & 0x04000000) >> 26); - AM_RANGE(0x490040, 0x490043) AM_WRITE(darkhors_eeprom_w) - AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("4e0080") AM_WRITE(darkhors_unk1_w) + // reset line asserted: reset. + m_eeprom->cs_write((data & 0x01000000) ? ASSERT_LINE : CLEAR_LINE ); - AM_RANGE(0x580000, 0x580003) AM_READ_PORT("580000") - AM_RANGE(0x580004, 0x580007) AM_READ_PORT("580004") - AM_RANGE(0x580008, 0x58000b) AM_READ(darkhors_input_sel_r) - AM_RANGE(0x58000c, 0x58000f) AM_WRITE(darkhors_input_sel_w) - AM_RANGE(0x580084, 0x580087) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff000000) - AM_RANGE(0x580200, 0x580203) AM_READNOP - AM_RANGE(0x580400, 0x580403) AM_READ_PORT("580400") - AM_RANGE(0x580420, 0x580423) AM_READ_PORT("580420") + // clock line asserted: write latch or select next bit to read + m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); + } +} - AM_RANGE(0x800000, 0x86bfff) AM_RAM - AM_RANGE(0x86c000, 0x86ffff) AM_RAM_WRITE(darkhors_tmapram_w) AM_SHARE("tmapram") - AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(darkhors_tmapram2_w) AM_SHARE("tmapram2") - AM_RANGE(0x874000, 0x87dfff) AM_RAM - AM_RANGE(0x87e000, 0x87ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x880000, 0x89ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x8a0000, 0x8bffff) AM_RAM // this should still be palette ram! - AM_RANGE(0x8c0120, 0x8c012f) AM_WRITEONLY AM_SHARE("tmapscroll") - AM_RANGE(0x8c0130, 0x8c013f) AM_WRITEONLY AM_SHARE("tmapscroll2") -ADDRESS_MAP_END +static ADDRESS_MAP_START( jclub2_map, AS_PROGRAM, 32, jclub2_state ) + AM_RANGE(0x000000, 0x27ffff) AM_ROM + AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") // battery + AM_RANGE(0x490000, 0x490003) AM_WRITE(eeprom_93c46_w) + AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(out2_w) -static ADDRESS_MAP_START( jclub2_map, AS_PROGRAM, 32, darkhors_state ) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") //all 68k ram is battery backup - //AM_RANGE(0x400000, 0x41ffff) AM_RAM + AM_RANGE(0x4d0000, 0x4d0003) AM_READNOP AM_WRITENOP // reads seem unused? this write would go to two 7-segs (but the code is never called) + AM_RANGE(0x4d0004, 0x4d0007) AM_READNOP + AM_RANGE(0x4d0008, 0x4d000b) AM_READNOP + AM_RANGE(0x4d000c, 0x4d000f) AM_READNOP - AM_RANGE(0x490000, 0x490003) AM_WRITE(darkhors_eeprom_w) - AM_RANGE(0x4E0000, 0x4E0003) AM_READ(p_4e0000) //input 2p - AM_RANGE(0x4E0000, 0x4E0003) AM_WRITE(jclub2_input_sel_w_p1) - AM_RANGE(0x580000, 0x580003) AM_READ_PORT("580000") //eeprom related? - AM_RANGE(0x580004, 0x580007) AM_READ(p_580004) //system + some 1p input here - AM_RANGE(0x580008, 0x58000b) AM_READ_PORT("580008") //input 1p + coins - AM_RANGE(0x58000c, 0x58000f) AM_WRITE(jclub2_input_sel_w_p2) - AM_RANGE(0x580200, 0x580203) AM_READNOP //???? + AM_RANGE(0x4e0000, 0x4e0003) AM_READ(p2_r) AM_WRITE(input_sel2_w) - AM_RANGE(0x800000, 0x87ffff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_sprram_r, st0020_sprram_w, 0xffffffff ); + AM_RANGE(0x580000, 0x580003) AM_READ_PORT("EEPROM") + AM_RANGE(0x580004, 0x580007) AM_READ(p1_r) + AM_RANGE(0x580008, 0x58000b) AM_READ_PORT("COIN") + AM_RANGE(0x58000c, 0x58000f) AM_WRITE(input_sel1_out3_w) + AM_RANGE(0x580010, 0x580013) AM_WRITE(out1_w) +// AM_RANGE(0x580018, 0x58001b) AM_WRITE +// AM_RANGE(0x58001c, 0x58001f) AM_WRITE - AM_RANGE(0x880000, 0x89ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x8a0000, 0x8bffff) AM_RAM // this should still be palette ram! + AM_RANGE(0x580200, 0x580203) AM_DEVREAD16("watchdog", watchdog_timer_device, reset16_r, 0xffff0000) -// AM_RANGE(0x8C0000, 0x8C00ff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_blitram_r, st0020_blitram_w, 0xffffffff ); - AM_RANGE(0x8E0000, 0x8E01ff) AM_RAM + AM_RANGE(0x580400, 0x580403) AM_READWRITE8(console_r, console_w, 0x00ff0000) + AM_RANGE(0x580420, 0x580423) AM_READ8(console_status_r, 0x00ff0000) //AM_WRITE +// AM_RANGE(0x580440, 0x580443) AM_WRITE - AM_RANGE(0x900000, 0x9fffff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_gfxram_r, st0020_gfxram_w, 0xffffffff ); + // ST-0032 + AM_RANGE(0x800000, 0x87ffff) AM_DEVREADWRITE16( "st0020", st0020_device, sprram_r, sprram_w, 0xffffffff ); + AM_RANGE(0x880000, 0x89ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0x8a0000, 0x8bffff) AM_RAM // this should still be palette ram! + AM_RANGE(0x8c0000, 0x8c00ff) AM_DEVREADWRITE16( "st0020", st0020_device, regs_r, regs_w, 0xffffffff ); + AM_RANGE(0x8e0000, 0x8e01ff) AM_RAM // sound? + AM_RANGE(0x8e0200, 0x8e0203) AM_RAM + AM_RANGE(0x8e0210, 0x8e0213) AM_RAM + AM_RANGE(0x900000, 0x9fffff) AM_DEVREADWRITE16( "st0020", st0020_device, gfxram_r, gfxram_w, 0xffffffff ); ADDRESS_MAP_END +// bootleg darkhors hardware +WRITE32_MEMBER(darkhors_state::input_sel_w) +{ + if (ACCESSING_BITS_16_23) + m_input_sel1 = data >> 16; + if (ACCESSING_BITS_24_31) + m_input_sel2 = data >> 24; +} -static ADDRESS_MAP_START( jclub2o_map, AS_PROGRAM, 32, darkhors_state ) - - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") //all 68k ram is battery backup - //AM_RANGE(0x400000, 0x41ffff) AM_RAM +READ32_MEMBER(darkhors_state::input_r) +{ + return (read_key(m_key1, m_input_sel1) << 16) | + (read_key(m_key2, m_input_sel2) << 24) ; +} - AM_RANGE(0x490000, 0x490003) AM_WRITE(jclub2o_eeprom_w) //eeprom s2929 not 93c46 - AM_RANGE(0x4E0000, 0x4E0003) AM_READ(p_4e0000) //input 2p - AM_RANGE(0x4E0000, 0x4E0003) AM_WRITE(jclub2_input_sel_w_p1) - AM_RANGE(0x580000, 0x580003) AM_READ_PORT("580000") //eeprom read - AM_RANGE(0x580004, 0x580007) AM_READ(p_580004) //system + some 1p keyboard input here - AM_RANGE(0x580008, 0x58000b) AM_READ_PORT("580008") //input 1p + coins - AM_RANGE(0x58000c, 0x58000f) AM_WRITE(jclub2_input_sel_w_p2) +WRITE32_MEMBER(darkhors_state::out1_w) +{ + COMBINE_DATA(&m_out1); + if (ACCESSING_BITS_16_31) + { + // note: the output test is buggy and crashes + // when pressing start (rts @ 328b8) + + // 0x8000 P2 lockout coil + // 0x4000 P2 divider coil + // 0x2000 P2 hopper rotate + // 0x1000 P1 lockout coil + // 0x0800 P1 divider coil + // 0x0400 P1 hopper rotate + // - + // 0x0100 tower lamp 3 + // 0x0080 tower lamp 2 + // 0x0040 tower lamp 1 + // 0x0020 counter meter 6 + // 0x0010 counter meter 5 + // 0x0008 counter meter 4 + // 0x0004 counter meter 3 + // 0x0002 counter meter 2 + // 0x0001 counter meter 1 + + machine().bookkeeping().coin_lockout_w(1, (~data) & 0x80000000); + machine().bookkeeping().coin_lockout_w(0, (~data) & 0x10000000); + + debug_out(); + } +} - AM_RANGE(0x580200, 0x580203) AM_READNOP //???? +static ADDRESS_MAP_START( darkhors_map, AS_PROGRAM, 32, darkhors_state ) + AM_RANGE(0x000000, 0x0fffff) AM_ROM + AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") // battery + + AM_RANGE(0x490040, 0x490043) AM_WRITE(eeprom_93c46_w) + AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("SERVICE") AM_WRITE(out1_w) + + AM_RANGE(0x580000, 0x580003) AM_READ_PORT("UNKNOWN") + AM_RANGE(0x580004, 0x580007) AM_READ_PORT("COIN") + AM_RANGE(0x580008, 0x58000b) AM_READ(input_r) + AM_RANGE(0x58000c, 0x58000f) AM_WRITE(input_sel_w) +// AM_RANGE(0x580010, 0x580013) AM_WRITE +// AM_RANGE(0x580018, 0x58001b) AM_WRITE +// AM_RANGE(0x58001c, 0x58001f) AM_WRITE + AM_RANGE(0x580084, 0x580087) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff000000) +// AM_RANGE(0x58008c, 0x58008f) AM_WRITE + AM_RANGE(0x580200, 0x580203) AM_DEVREAD16("watchdog", watchdog_timer_device, reset16_r, 0xffff0000) - AM_RANGE(0x600000, 0x67ffff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_sprram_r, st0020_sprram_w, 0xffffffff ); - AM_RANGE(0x680000, 0x69ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x6a0000, 0x6bffff) AM_RAM - AM_RANGE(0x6C0000, 0x6C00ff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_blitram_r, st0020_blitram_w, 0xffffffff ); - AM_RANGE(0x700000, 0x7fffff) AM_DEVREADWRITE16( "st0020_spr", st0020_device, st0020_gfxram_r, st0020_gfxram_w, 0xffffffff ); + AM_RANGE(0x580400, 0x580403) AM_READWRITE8(console_r, console_w, 0x00ff0000) + AM_RANGE(0x580420, 0x580423) AM_READ8(console_status_r, 0x00ff0000) + AM_RANGE(0x800000, 0x86bfff) AM_RAM + AM_RANGE(0x86c000, 0x86ffff) AM_RAM_WRITE(tmapram_w) AM_SHARE("tmapram") + AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(tmapram2_w) AM_SHARE("tmapram2") + AM_RANGE(0x874000, 0x87dfff) AM_RAM + AM_RANGE(0x87e000, 0x87ffff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x880000, 0x89ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0x8a0000, 0x8bffff) AM_RAM // this should still be palette ram! + AM_RANGE(0x8c0120, 0x8c012f) AM_WRITEONLY AM_SHARE("tmapscroll") + AM_RANGE(0x8c0130, 0x8c013f) AM_WRITEONLY AM_SHARE("tmapscroll2") ADDRESS_MAP_END - /*************************************************************************** - Input Ports - ***************************************************************************/ -static INPUT_PORTS_START( darkhors ) - PORT_START("580000") - PORT_BIT( 0xff7fffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("?") PORT_CODE(KEYCODE_RCONTROL) - - PORT_START("580004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_BILL1 ) // bill in - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_COIN1 ) // coin in s1 - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN3 ) // coin in s2 - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN1 ) // coin drop - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SPECIAL ) // hopper full - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1") PORT_CODE(KEYCODE_ENTER) // bill in p2 - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_COIN2 ) // coin in s1 p2 - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_COIN4 ) // coin in s2 p2 - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_COIN2 ) // coin drop p2 - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_SPECIAL) // hopper full p2 - - PORT_START("580400") - PORT_BIT( 0xfffcffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0") PORT_CODE(KEYCODE_0_PAD) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("9") PORT_CODE(KEYCODE_9_PAD) - - PORT_START("580420") - PORT_BIT( 0xfffcffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0*") PORT_CODE(KEYCODE_0_PAD) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("9*") PORT_CODE(KEYCODE_9_PAD) - - PORT_START("4e0080") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_SERVICE1 ) // config - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_SERVICE2 ) // reset - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE3 ) // meter - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_SERVICE4 ) // lastgame - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // test - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // door 1 - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // door 2 - PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_START1 ) // start - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Payout") PORT_CODE(KEYCODE_LCONTROL) // payout - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Cancel") PORT_CODE(KEYCODE_LALT) // cancel - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_START2 ) // start p2 - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Payout") PORT_CODE(KEYCODE_RCONTROL) // payout p2 - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Cancel") PORT_CODE(KEYCODE_RALT) // cancel p2 - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN0") /* 580008(0) */ - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1") PORT_CODE(KEYCODE_1_PAD) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2") PORT_CODE(KEYCODE_2_PAD) - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3") PORT_CODE(KEYCODE_3_PAD) - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4") PORT_CODE(KEYCODE_4_PAD) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 5") PORT_CODE(KEYCODE_5_PAD) - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 6") PORT_CODE(KEYCODE_6_PAD) - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 7") PORT_CODE(KEYCODE_7_PAD) - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 8") PORT_CODE(KEYCODE_8_PAD) - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 6") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 7") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 8") //PORT_CODE(KEYCODE_) - - PORT_START("IN1") /* 580008(1) */ - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-2") PORT_CODE(KEYCODE_Z) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-3") PORT_CODE(KEYCODE_A) - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-4") PORT_CODE(KEYCODE_Q) - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-5") PORT_CODE(KEYCODE_Y) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-6") PORT_CODE(KEYCODE_J) - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-7") PORT_CODE(KEYCODE_0_PAD) - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-8") PORT_CODE(KEYCODE_ENTER_PAD) - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-2") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-3") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-4") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-5") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-6") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-7") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-8") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN2") /* 580008(2) */ - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-3") PORT_CODE(KEYCODE_X) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-4") PORT_CODE(KEYCODE_S) - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-5") PORT_CODE(KEYCODE_W) - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-6") PORT_CODE(KEYCODE_U) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-7") PORT_CODE(KEYCODE_K) - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-8") PORT_CODE(KEYCODE_DEL_PAD) - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-3") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-4") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-5") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-6") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-7") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-8") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN3") /* 580008(3) */ - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-4") PORT_CODE(KEYCODE_C) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-5") PORT_CODE(KEYCODE_D) - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-6") PORT_CODE(KEYCODE_E) - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-7") PORT_CODE(KEYCODE_I) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-8") PORT_CODE(KEYCODE_L) - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-4") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-5") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-6") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-7") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-8") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN4") /* 580008(4) */ - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-5") PORT_CODE(KEYCODE_V) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-6") PORT_CODE(KEYCODE_F) - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-7") PORT_CODE(KEYCODE_R) - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-8") PORT_CODE(KEYCODE_O) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-5") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-6") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-7") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-8") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN5") /* 580008(5) */ - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 5-6") PORT_CODE(KEYCODE_B) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 5-7") PORT_CODE(KEYCODE_G) - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 5-8") PORT_CODE(KEYCODE_T) - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5-6") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5-7") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5-8") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN6") /* 580008(6) */ - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 6-7") PORT_CODE(KEYCODE_N) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 6-8") PORT_CODE(KEYCODE_H) - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 6-7") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 6-8") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN7") /* 580008(7) */ - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 7-8") PORT_CODE(KEYCODE_M) - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 7-8") //PORT_CODE(KEYCODE_) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) +/*************************************************************************** + Keyboards (39 pressure sensitive keys) -INPUT_PORTS_END + white---------------------- cyan------------------- + 1-2 1-3 1-4 1-5 1-6 1-7 1-8 2-3 2-4 2-5 2-6 2-7 2-8 + orange------------- green---------- grey------- yel + 3-4 3-5 3-6 3-7 3-8 4-5 4-6 4-7 4-8 5-6 5-7 5-8 CAN + cyan--- whi red---------------------------- yellow- + 6-7 6-8 7-8 1 2 3 4 5 6 7 8 PAY STA +***************************************************************************/ -static INPUT_PORTS_START( jclub2 ) - - - PORT_START("580000") - PORT_BIT( 0x7fffffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) - - PORT_START("580008") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Payout") PORT_CODE(KEYCODE_LCONTROL) // payout 1p - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_START1 ) // start 1p - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 coin out") PORT_CODE(KEYCODE_RSHIFT) //coin out 2p - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 coin out") PORT_CODE(KEYCODE_LSHIFT) //coin out 1p - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_COIN1 ) //1p coin drop - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_COIN3 ) //2p coin drop - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_COIN1 ) //1p coin in s1 - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_COIN2 ) //1p coin in s2 - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_COIN3 ) //2p coin in s1 - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_COIN4 ) //2p coin in s2 - - PORT_START("580004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_SERVICE2 ) //reset - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_SERVICE3 ) //meter - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE4 ) //last game - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Cancel") PORT_CODE(KEYCODE_LALT) // cancel 1p - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) //test - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 hopper full") PORT_CODE(KEYCODE_CLOSEBRACE) //hopper full 2p - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 hopper full") PORT_CODE(KEYCODE_OPENBRACE) //hopper full 1p - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 1p - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 1p - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 1p - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 1p - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 1p - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 1p - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 1p - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 1p - - PORT_START("580004-01") //1P - PORT_BIT( 0x00, IP_ACTIVE_LOW, IPT_UNKNOWN ) +static INPUT_PORTS_START( keyboards ) + PORT_START("KEY1.0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1") PORT_CODE(KEYCODE_1_PAD) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2") PORT_CODE(KEYCODE_2_PAD) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3") PORT_CODE(KEYCODE_3_PAD) @@ -775,148 +838,235 @@ static INPUT_PORTS_START( jclub2 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 6") PORT_CODE(KEYCODE_6_PAD) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 7") PORT_CODE(KEYCODE_7_PAD) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 8") PORT_CODE(KEYCODE_8_PAD) - - PORT_START("580004-02") //1P + PORT_START("KEY2.0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 6") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 7") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 8") + + PORT_START("KEY1.1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-2") PORT_CODE(KEYCODE_Z) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-3") PORT_CODE(KEYCODE_A) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-4") PORT_CODE(KEYCODE_Q) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-5") PORT_CODE(KEYCODE_Y) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-6") PORT_CODE(KEYCODE_J) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-7") PORT_CODE(KEYCODE_0_PAD) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-8") PORT_CODE(KEYCODE_ENTER_PAD) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("KEY2.1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-2") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-3") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-4") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-5") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-6") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-7") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-8") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-2") PORT_CODE(KEYCODE_Q) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-3") PORT_CODE(KEYCODE_W) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-4") PORT_CODE(KEYCODE_E) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-5") PORT_CODE(KEYCODE_R) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-6") PORT_CODE(KEYCODE_T) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-7") PORT_CODE(KEYCODE_Y) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 1-8") PORT_CODE(KEYCODE_U) - - PORT_START("580004-04") //1P + PORT_START("KEY1.2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-3") PORT_CODE(KEYCODE_X) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-4") PORT_CODE(KEYCODE_S) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-5") PORT_CODE(KEYCODE_W) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-6") PORT_CODE(KEYCODE_U) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-7") PORT_CODE(KEYCODE_K) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-8") PORT_CODE(KEYCODE_DEL_PAD) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-3") PORT_CODE(KEYCODE_I) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-4") PORT_CODE(KEYCODE_O) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-5") PORT_CODE(KEYCODE_A) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-6") PORT_CODE(KEYCODE_S) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-7") PORT_CODE(KEYCODE_D) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 2-8") PORT_CODE(KEYCODE_F) - - PORT_START("580004-08") //1P - PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-4") PORT_CODE(KEYCODE_G) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-5") PORT_CODE(KEYCODE_H) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-6") PORT_CODE(KEYCODE_J) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-7") PORT_CODE(KEYCODE_K) + PORT_START("KEY2.2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-3") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-4") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-5") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-6") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-7") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-8") + PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("KEY1.3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-4") PORT_CODE(KEYCODE_C) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-5") PORT_CODE(KEYCODE_D) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-6") PORT_CODE(KEYCODE_E) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-7") PORT_CODE(KEYCODE_I) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 3-8") PORT_CODE(KEYCODE_L) + PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("KEY2.3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-4") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-5") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-6") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-7") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-8") + PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_START("580004-10") //1P + PORT_START("KEY1.4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-5") PORT_CODE(KEYCODE_V) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-6") PORT_CODE(KEYCODE_F) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-7") PORT_CODE(KEYCODE_R) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-8") PORT_CODE(KEYCODE_O) + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("KEY2.4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-5") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-6") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-7") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-8") PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-5") PORT_CODE(KEYCODE_Z) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-6") PORT_CODE(KEYCODE_X) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-7") PORT_CODE(KEYCODE_C) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 4-8") PORT_CODE(KEYCODE_V) - - PORT_START("580004-20") //1P - PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("KEY1.5") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 5-6") PORT_CODE(KEYCODE_B) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 5-7") PORT_CODE(KEYCODE_N) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 5-8") PORT_CODE(KEYCODE_M) - + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 5-7") PORT_CODE(KEYCODE_G) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 5-8") PORT_CODE(KEYCODE_T) + PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("KEY2.5") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5-6") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5-7") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5-8") + PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_START("580004-40") //1P + PORT_START("KEY1.6") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 6-7") PORT_CODE(KEYCODE_N) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 6-8") PORT_CODE(KEYCODE_H) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("KEY2.6") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 6-7") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 6-8") PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 6-7") PORT_CODE(KEYCODE_COMMA) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 6-8") PORT_CODE(KEYCODE_STOP) - - PORT_START("580004-80") //1P + PORT_START("KEY1.7") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 7-8") PORT_CODE(KEYCODE_M) PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 7-8") PORT_CODE(KEYCODE_SLASH) - - - PORT_START("4E0000") // 4E0000 - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Payout") PORT_CODE(KEYCODE_RCONTROL) // payout 2p - PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_START2 ) // start 2p - PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Cancel") PORT_CODE(KEYCODE_RALT) // cancel 2p - PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //unused??? - PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 2p - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 2p - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 2p - PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 2p - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 2p - PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 2p - PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 2p - PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) //keyboard input 2p - - PORT_START("4E0000-01") //2P - PORT_BIT( 0x00, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1") PORT_CODE(KEYCODE_1_PAD) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2") PORT_CODE(KEYCODE_2_PAD) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3") PORT_CODE(KEYCODE_3_PAD) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4") PORT_CODE(KEYCODE_4_PAD) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5") PORT_CODE(KEYCODE_5_PAD) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 6") PORT_CODE(KEYCODE_6_PAD) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 7") PORT_CODE(KEYCODE_7_PAD) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 8") PORT_CODE(KEYCODE_8_PAD) - - PORT_START("4E0000-02") //2P - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-2") PORT_CODE(KEYCODE_Q) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-3") PORT_CODE(KEYCODE_W) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-4") PORT_CODE(KEYCODE_E) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-5") PORT_CODE(KEYCODE_R) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-6") PORT_CODE(KEYCODE_T) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-7") PORT_CODE(KEYCODE_Y) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 1-8") PORT_CODE(KEYCODE_U) + PORT_START("KEY2.7") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 7-8") + PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END - PORT_START("4E0000-04") //2P - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-3") PORT_CODE(KEYCODE_I) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-4") PORT_CODE(KEYCODE_O) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-5") PORT_CODE(KEYCODE_A) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-6") PORT_CODE(KEYCODE_S) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-7") PORT_CODE(KEYCODE_D) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 2-8") PORT_CODE(KEYCODE_F) - - PORT_START("4E0000-08") //2P - PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-4") PORT_CODE(KEYCODE_G) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-5") PORT_CODE(KEYCODE_H) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-6") PORT_CODE(KEYCODE_J) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-7") PORT_CODE(KEYCODE_K) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 3-8") PORT_CODE(KEYCODE_L) +static INPUT_PORTS_START( jclub2v100 ) + // P2 at 4e0000.b, P1 at 580004.b + PORT_INCLUDE( keyboards ) + + PORT_START("EEPROM") // 580000.w + PORT_BIT( 0x74ff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_CONFNAME(0x01000000, 0x01000000, "Coin Chutes Polarity" ) + PORT_CONFSETTING( 0x01000000, DEF_STR( Normal) ) + PORT_CONFSETTING( 0x00000000, "Reverse" ) // warning message + PORT_CONFNAME(0x02000000, 0x02000000, "Main Loop Down" ) + PORT_CONFSETTING( 0x02000000, DEF_STR( Off ) ) + PORT_CONFSETTING( 0x00000000, DEF_STR( On ) ) // Emergency Error 0001 + PORT_CONFNAME(0x08000000, 0x08000000, "System Int Down") + PORT_CONFSETTING( 0x08000000, DEF_STR( Off ) ) + PORT_CONFSETTING( 0x00000000, DEF_STR( On ) ) // Emergency Error 0002 + PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) + + PORT_START("COIN") // 580008.w + PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Payout") PORT_CODE(KEYCODE_LCONTROL) + PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00400000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper2", ticket_dispenser_device, line_r) // P2 coin out + PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper1", ticket_dispenser_device, line_r) // P1 coin out + PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(15) // P1 coin drop + PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(15) // P2 coin drop + PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE( 5) // P1 coin in s1 + PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // P1 coin in s2 + PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE( 5) // P2 coin in s1 + PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10) // P2 coin in s2 + + PORT_START("P1LOW") // 580004.w (low byte) + PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Reset Key") PORT_TOGGLE // reset error condition, e.g. coin time-out error + PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Meter Key") PORT_TOGGLE + PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Last Game Key") PORT_TOGGLE + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Cancel") PORT_CODE(KEYCODE_LALT) + PORT_SERVICE_NO_TOGGLE( 0x00100000, IP_ACTIVE_LOW ) // test switch (on during boot: service mode, but make sure Config Key is off!) + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_SPECIAL ) // P2 hopper full + PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_SPECIAL ) // P1 hopper full + + PORT_START("P2LOW") // 4e0000.w (low byte) + PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Payout") PORT_CODE(KEYCODE_RCONTROL) + PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Cancel") PORT_CODE(KEYCODE_RALT) + PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END - PORT_START("4E0000-10") //2P - PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-5") PORT_CODE(KEYCODE_Z) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-6") PORT_CODE(KEYCODE_X) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-7") PORT_CODE(KEYCODE_C) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 4-8") PORT_CODE(KEYCODE_V) +static INPUT_PORTS_START( jclub2v112 ) + PORT_INCLUDE(jclub2v100) + + PORT_MODIFY("EEPROM") // 580000.w + PORT_BIT( 0x74ff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_CONFNAME(0x03000000, 0x03000000, "Backup Battery" ) + PORT_CONFSETTING( 0x00000000, "Off (0)" ) // Hardware Error 0001 + PORT_CONFSETTING( 0x01000000, "Off (1)" ) // "" + PORT_CONFSETTING( 0x02000000, "Low" ) // warning message (checked at boot) + PORT_CONFSETTING( 0x03000000, DEF_STR( On ) ) + PORT_CONFNAME(0x08000000, 0x08000000, "Disable Coins?") // causes lockout and coins to not register (same as an hardware error) + PORT_CONFSETTING( 0x08000000, DEF_STR( Off )) + PORT_CONFSETTING( 0x00000000, DEF_STR( On )) + PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) +INPUT_PORTS_END - PORT_START("4E0000-20") //2P - PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5-6") PORT_CODE(KEYCODE_B) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5-7") PORT_CODE(KEYCODE_N) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 5-8") PORT_CODE(KEYCODE_M) - PORT_START("4E0000-40") //2P - PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 6-7") PORT_CODE(KEYCODE_COMMA) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Bet 6-8") PORT_CODE(KEYCODE_STOP) +static INPUT_PORTS_START( darkhors ) + // P2 at 580008.b, P1 at 580009.b + PORT_INCLUDE( keyboards ) + + // Battery status register reads have been replaced with a constant value (fbff) in the code + + PORT_START("UNKNOWN") // 580000.w + PORT_BIT( 0xff7f0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("?") PORT_CODE(KEYCODE_RSHIFT) + + PORT_START("COIN") // 580004.w + PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Bill 1") PORT_CODE(KEYCODE_BACKSPACE) // P1 bill-in + PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE( 5) // P1 coin in s1 + PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // P1 coin in s2 + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(15) // P1 coin drop + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SPECIAL ) // P1 hopper full + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_OTHER ) // P1 coin out sensor + PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Bill 2") PORT_CODE(KEYCODE_ENTER) // P2 bill-in + PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE( 5) // P2 coin in s1 + PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10) // P2 coin in s2 + PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(15) // P2 coin drop + PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_SPECIAL ) // P2 hopper full + PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_OTHER ) // P2 coin out sensor + PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_START("4E0000-80") //2P - PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Bet 7-8") PORT_CODE(KEYCODE_SLASH) + PORT_START("SERVICE") // 4e0080.w + PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("Config Key") PORT_TOGGLE // on during boot: clear backup data (prevents service mode) + PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Reset Key") PORT_TOGGLE // reset error condition, e.g. coin time-out error + PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Meter Key") PORT_TOGGLE + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Last Game Key") PORT_TOGGLE + PORT_SERVICE_NO_TOGGLE( 0x00100000, IP_ACTIVE_LOW ) // test switch (on during boot: service mode, but make sure Config Key is off!) + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Door 1") PORT_CODE(KEYCODE_OPENBRACE) PORT_TOGGLE + PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Door 2") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_TOGGLE + PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // door 3 in service mode! + PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Payout") PORT_CODE(KEYCODE_LCONTROL) + PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Cancel") PORT_CODE(KEYCODE_LALT) + PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Payout") PORT_CODE(KEYCODE_RCONTROL) + PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Cancel") PORT_CODE(KEYCODE_RALT) + PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested during lev 3 (vblank) interrupt INPUT_PORTS_END -/*************************************************************************** +/*************************************************************************** Gfx Layouts - + (darkhors) ***************************************************************************/ @@ -938,403 +1088,434 @@ static GFXDECODE_START( darkhors ) GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0, 0x10000/64 ) // color codes should be doubled GFXDECODE_END - - /*************************************************************************** - Machine Drivers - ***************************************************************************/ -TIMER_DEVICE_CALLBACK_MEMBER(darkhors_state::darkhors_irq) +TIMER_DEVICE_CALLBACK_MEMBER(common_state::scanline_irq) { int scanline = param; - if(scanline == 248) + if (scanline == 248) m_gamecpu->set_input_line(5, HOLD_LINE); - if(scanline == 0) + if (scanline == 0) m_gamecpu->set_input_line(3, HOLD_LINE); - if(scanline == 128) + if (scanline == 128) m_gamecpu->set_input_line(4, HOLD_LINE); } -static MACHINE_CONFIG_START( darkhors, darkhors_state ) - MCFG_CPU_ADD("gamecpu", M68EC020, 12000000) // 36MHz/3 ?? - MCFG_CPU_PROGRAM_MAP(darkhors_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkhors_state, darkhors_irq, "screen", 0, 1) +// Older hardware (ST-0020 + ST-0016) +static MACHINE_CONFIG_START( jclub2o ) + MCFG_CPU_ADD("gamecpu", M68EC020, 12000000) + MCFG_CPU_PROGRAM_MAP(jclub2o_map) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", common_state, scanline_irq, "screen", 0, 1) - MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") + MCFG_CPU_ADD("maincpu",ST0016_CPU, 8000000) + MCFG_CPU_PROGRAM_MAP(st0016_mem) + MCFG_CPU_IO_MAP(st0016_io) + MCFG_CPU_VBLANK_INT_DRIVER("screen", jclub2o_state, irq0_line_hold) + + MCFG_NVRAM_ADD_0FILL("nvram") + MCFG_EEPROM_SERIAL_S29290_ADD("eeprom") // S-29290 (16 bits) + MCFG_WATCHDOG_ADD("watchdog") + + MCFG_TICKET_DISPENSER_ADD("hopper1", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) + MCFG_TICKET_DISPENSER_ADD("hopper2", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) - /* video hardware */ + // video hardware MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(0x190, 0x100+16) - MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1) - MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update_darkhors) + MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 0x10, 0x100-1) + MCFG_SCREEN_UPDATE_DRIVER(jclub2_state, screen_update) MCFG_SCREEN_PALETTE("palette") - MCFG_GFXDECODE_ADD("gfxdecode", "palette", darkhors) MCFG_PALETTE_ADD("palette", 0x10000) MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_VIDEO_START_OVERRIDE(darkhors_state,darkhors) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_DEVICE_ADD("st0020", ST0020_SPRITES, 0) + st0020_device::static_set_is_jclub2(*device, 1); + MCFG_ST0020_SPRITES_PALETTE("palette") - MCFG_OKIM6295_ADD("oki", 528000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + // layout + MCFG_DEFAULT_LAYOUT(layout_jclub2o) MACHINE_CONFIG_END - -VIDEO_START_MEMBER(darkhors_state,jclub2) -{ -} - -uint32_t darkhors_state::screen_update_jclub2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - // this isn't an st0020.. - m_gdfs_st0020->st0020_draw_all(bitmap, cliprect); - - return 0; -} - -static MACHINE_CONFIG_START( jclub2, darkhors_state ) +// Newer hardware (ST-0032) +static MACHINE_CONFIG_START( jclub2 ) MCFG_CPU_ADD("gamecpu", M68EC020, 12000000) MCFG_CPU_PROGRAM_MAP(jclub2_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkhors_state, darkhors_irq, "screen", 0, 1) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", common_state, scanline_irq, "screen", 0, 1) MCFG_NVRAM_ADD_0FILL("nvram") - MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") // 93C46 ( 8 bits) + MCFG_WATCHDOG_ADD("watchdog") + + MCFG_TICKET_DISPENSER_ADD("hopper1", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) + MCFG_TICKET_DISPENSER_ADD("hopper2", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) - /* video hardware */ + // video hardware MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(0x190, 0x100+16) MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1) - MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update_jclub2) + MCFG_SCREEN_UPDATE_DRIVER(jclub2_state, screen_update) MCFG_SCREEN_PALETTE("palette") - // NOT an ST0020 but instead ST0032, ram format isn't compatible at least - MCFG_DEVICE_ADD("st0020_spr", ST0020_SPRITES, 0) - st0020_device::set_is_st0032(*device, 1); - st0020_device::set_is_jclub2o(*device, 1); // offsets - MCFG_ST0020_SPRITES_PALETTE("palette") - MCFG_PALETTE_ADD("palette", 0x10000) MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_VIDEO_START_OVERRIDE(darkhors_state,jclub2) -MACHINE_CONFIG_END - - - -static ADDRESS_MAP_START( st0016_mem, AS_PROGRAM, 8, darkhors_state ) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - //AM_RANGE(0xe900, 0xe9ff) // sound - internal - //AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) - AM_RANGE(0xe82f, 0xe830) AM_READNOP - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -// common rombank? should go in machine/st0016 with larger address space exposed? -WRITE8_MEMBER(darkhors_state::st0016_rom_bank_w) -{ - membank("bank1")->set_base(memregion("maincpu")->base() + (data* 0x4000)); -} - - -static ADDRESS_MAP_START( st0016_io, AS_IO, 8, darkhors_state ) - ADDRESS_MAP_GLOBAL_MASK(0xff) - //AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w) - //AM_RANGE(0xc0, 0xc0) AM_READ(cmd1_r) - //AM_RANGE(0xc1, 0xc1) AM_READ(cmd2_r) - //AM_RANGE(0xc2, 0xc2) AM_READ(cmd_stat8_r) - AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w) - //AM_RANGE(0xe7, 0xe7) AM_WRITE(st0016_rom_bank_w) - //AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r) -ADDRESS_MAP_END - - -VIDEO_START_MEMBER(darkhors_state,jclub2o) -{ -} + // NOT an ST0020 but instead ST0032, ram format isn't compatible at least + MCFG_DEVICE_ADD("st0020", ST0020_SPRITES, 0) + st0020_device::static_set_is_st0032(*device, 1); + st0020_device::static_set_is_jclub2(*device, 1); // offsets + MCFG_ST0020_SPRITES_PALETTE("palette") -uint32_t darkhors_state::screen_update_jclub2o(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_gdfs_st0020->st0020_draw_all(bitmap, cliprect); - return 0; -} + // layout + MCFG_DEFAULT_LAYOUT(layout_jclub2o) +MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jclub2o, darkhors_state ) - MCFG_CPU_ADD("gamecpu", M68EC020, 12000000) - MCFG_CPU_PROGRAM_MAP(jclub2o_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkhors_state, darkhors_irq, "screen", 0, 1) - MCFG_CPU_ADD("maincpu",ST0016_CPU,8000000) - MCFG_CPU_PROGRAM_MAP(st0016_mem) - MCFG_CPU_IO_MAP(st0016_io) - MCFG_CPU_VBLANK_INT_DRIVER("screen", darkhors_state, irq0_line_hold) +static MACHINE_CONFIG_START( darkhors ) + MCFG_CPU_ADD("gamecpu", M68EC020, 12000000) // 36MHz/3 ?? + MCFG_CPU_PROGRAM_MAP(darkhors_map) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", common_state, scanline_irq, "screen", 0, 1) MCFG_NVRAM_ADD_0FILL("nvram") - MCFG_EEPROM_SERIAL_93C56_ADD("eeprom") //not correct + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") + MCFG_WATCHDOG_ADD("watchdog") - /* video hardware */ + MCFG_TICKET_DISPENSER_ADD("hopper1", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) + MCFG_TICKET_DISPENSER_ADD("hopper2", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) + + // video hardware MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(0x190, 0x100) + MCFG_SCREEN_SIZE(0x190, 0x100+16) MCFG_SCREEN_VISIBLE_AREA(0, 0x190-1, 8, 0x100-8-1) - MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update_jclub2o) + MCFG_SCREEN_UPDATE_DRIVER(darkhors_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 0x10000) MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) - MCFG_DEVICE_ADD("st0020_spr", ST0020_SPRITES, 0) - st0020_device::set_is_jclub2o(*device, 1); - MCFG_ST0020_SPRITES_PALETTE("palette") + MCFG_GFXDECODE_ADD("gfxdecode", "palette", darkhors) + MCFG_VIDEO_START_OVERRIDE(darkhors_state, darkhors) - MCFG_VIDEO_START_OVERRIDE(darkhors_state,jclub2o) + // layout + MCFG_DEFAULT_LAYOUT(layout_jclub2) + // sound hardware + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_OKIM6295_ADD("oki", 528000, PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END /*************************************************************************** - ROMs Loading +***************************************************************************/ + +/*************************************************************************** + +Jockey Club II by SETA 1994-1995 + +Other hardware version (older): + +Main PCB : E06-00409 +Sub PCB : E06-00407 (I/O, nothing else) + +Main CPU : MC68EC020FG16 + +Many XTALs : 48.0000 MHz, 33.3333 MHz, 4.91520 MHz, 42.9545 MHz(x2), 105.0000 MHz + (the 105.0000 Xtal is sometimes replaced by a tiny pcb silkscreened 108.0000 MHz(!), with ICS ICS1494N, MB3771 and 14.3181 MHz Xtal) + +Graphics : SETA ST-0020 + +Others : SETA ST-0013 + SETA ST-0016 <-- z80 core + simple gfx + sound, see st0016.cpp + SETA ST-0017 + +Rams : Toshiba TC514800AJ-70 + Toshiba TC514000ASJ-70 (x8) + Sharp LH5168D + +Eproms : SX006A-01.u26, JC2-110x.u27, SX006-04.u87 (sound) + SX006B-01.u26, JC2-110x.u27, SX006-04.u87 (sound) + SX006A-01.u26, JC2-112x.u27, SX006-04.u87 (sound) + SX006B-01.u26, JC2-112x.u27, SX006-04.u87 (sound) + (u26 read as 5716200) + +Provided to you by Belgium Dump Team Gerald (COY) on 18/01/2007. ***************************************************************************/ -ROM_START( darkhors ) - ROM_REGION( 0x100000, "gamecpu", 0 ) // 68EC020 code - ROM_LOAD32_WORD_SWAP( "prg2", 0x00000, 0x80000, CRC(f2ec5818) SHA1(326937a331496880f517f41b0b8ab54e55fd7af7) ) - ROM_LOAD32_WORD_SWAP( "prg1", 0x00002, 0x80000, CRC(b80f8f59) SHA1(abc26dd8b36da0d510978364febe385f69fb317f) ) +// Not the main cpu, but "maincpu" is hardcoded in machine/st0016.cpp +#define JCLUB2O_SOUND_ROMS \ + ROM_REGION( 0x80000, "maincpu", 0 ) /* z80 core (used for sound) */ \ + ROM_LOAD( "sx006-04.u87", 0x00000, 0x80000, CRC(a87adedd) SHA1(1cd5af2d03738fff2230b46241659179467c828c) ) /* SoundDriverV1.26 */ - ROM_REGION( 0x400000, "gfx1", 0 ) - ROM_LOAD( "gfx1", 0x000000, 0x80000, CRC(e9fe9967) SHA1(a79d75c09f0eac6372de8d6e98c5eecf38ef750c) ) - ROM_LOAD( "gfx2", 0x080000, 0x80000, CRC(0853c5c5) SHA1(2b49ffe607278817f1f8219a79f5906be53ee6f4) ) - ROM_LOAD( "gfx3", 0x100000, 0x80000, CRC(6e89278f) SHA1(044c15e00ea95fd3f108fa916000a1000789c8e8) ) - ROM_LOAD( "gfx4", 0x180000, 0x80000, CRC(f28407ab) SHA1(47933719cff8099fc079fd736b4b08176f3aff66) ) - ROM_LOAD( "gfx5", 0x200000, 0x80000, CRC(281402cd) SHA1(77f8e5e02c6e7161299c06e65a078c1cdda1ba66) ) - ROM_LOAD( "gfx6", 0x280000, 0x80000, CRC(8ea0149b) SHA1(7792fd7e07a7baa4e15f50b6528c78fb15b40b40) ) - ROM_LOAD( "gfx7", 0x300000, 0x80000, BAD_DUMP CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) ) // FIXED BITS (11111111) - ROM_FILL( 0x300000, 0x80000, 0x00 ) // a zero-fill seems fine - ROM_LOAD( "gfx8", 0x380000, 0x80000, CRC(590bec2a) SHA1(7fdbb21f1a3eccde65e91eb2443a0e01487c59c3) ) // 000xxxxxxxxxxxxxxxx = 0x00 +ROM_START( jclub2v100 ) + JCLUB2O_SOUND_ROMS + ROM_REGION( 0x280000, "gamecpu", 0 ) + ROM_LOAD16_WORD_SWAP( "sx006a-01.u26", 0x000000, 0x200000, CRC(55e249bc) SHA1(ed0f066ed17f047760b712cbbfba1a62d4b452ba) ) // v1.00 (1994 ' ' 100, 5 OCT. 1994) + ROM_FILL( 0x200000, 0x080000, 0xff) // no upgrade rom - ROM_REGION( 0x80000, "oki", 0 ) // Samples - ROM_LOAD( "snd", 0x00000, 0x80000, CRC(7aeb12d3) SHA1(3e81725fc206baa7559da87552a0cd73b7616155) ) + ROM_REGION16_BE( 0x100, "eeprom", 0 ) + // 1.00 + ROM_LOAD16_WORD_SWAP( "eeprom_jc2v100", 0x000, 0x100, CRC(1ced2e6c) SHA1(7bc7d40a9fde3256c52db5db2ad28a036557b99a) ) // from MAME (SETA1994JC2 100 ) +ROM_END - ROM_REGION( 0x80, "eeprom", 0 ) // EEPROM - ROM_LOAD( "eeprom", 0x0000, 0x0080, CRC(1f434f66) SHA1(e1bee11d83fb72aed9c312bdc794d8b9a6645534) ) +ROM_START( jclub2v101 ) + JCLUB2O_SOUND_ROMS + ROM_REGION( 0x280000, "gamecpu", 0 ) + ROM_LOAD16_WORD_SWAP( "sx006b-01.u26", 0x000000, 0x200000, CRC(f730dded) SHA1(efb966dcb98440a072d4825ef2788c85acdfd103) ) // v1.01 (1995 A 101, 20 FEB. 1995) + ROM_FILL( 0x200000, 0x080000, 0xff) // no upgrade rom + + ROM_REGION16_BE( 0x100, "eeprom", 0 ) + // 1.01 (JC2A) + ROM_LOAD16_WORD_SWAP( "eeprom_jc2v101", 0x000, 0x100, CRC(2960b967) SHA1(8089ffea7d3fe5a558cccad9e285978c8099ba26) ) // from MAME (SETA1995JC2A101 ) ROM_END -/* +ROM_START( jclub2v110 ) + JCLUB2O_SOUND_ROMS + ROM_REGION( 0x280000, "gamecpu", 0 ) + ROM_LOAD16_WORD_SWAP( "sx006b-01.u26", 0x000000, 0x200000, CRC(f730dded) SHA1(efb966dcb98440a072d4825ef2788c85acdfd103) ) // v1.01 (1995 A 101, 20 FEB. 1995) + ROM_LOAD16_WORD_SWAP( "jc2-110x.u27", 0x200000, 0x080000, CRC(03aa6882) SHA1(e0343bc77a19994ddafa614891663b40e1476332) ) // v1.10X (1996 2/3 110, 5 MAY. 1996) -Jockey Club II Original sets + ROM_REGION16_BE( 0x100, "eeprom", 0 ) + // 1.10X (JC22110 ) + ROM_LOAD16_WORD_SWAP( "eeprom_jc2v110", 0x000, 0x100, CRC(ea23dfb2) SHA1(de3d771024c55f907e32bb313eaa9d28b3a9d533) ) // from MAME (SETA1996JC22110 ) +ROM_END - -- unlike the bootleg these appear to have the graphics compressed in the main program roms. (CPS3 / SRMP6 -like) (I think CPS3 is a SETA design) - -- the older hardware uses an st-0016 for sound (see st0016.c) - -- the program can be upgraded by placing a ROM in the socket next to the main program ROM. +ROM_START( jclub2v112 ) + JCLUB2O_SOUND_ROMS + ROM_REGION( 0x280000, "gamecpu", 0 ) + ROM_LOAD16_WORD_SWAP( "sx006b-01.u26", 0x000000, 0x200000, CRC(f730dded) SHA1(efb966dcb98440a072d4825ef2788c85acdfd103) ) // v1.01 (1995 A 101, 20 FEB. 1995) + ROM_LOAD16_WORD_SWAP( "jc2-112x.u27", 0x200000, 0x080000, CRC(e1ab93bd) SHA1(78b618b3f7819bd5351ebf949f328fec7795cec9) ) // v1.12X (1996 4/5 112, 3 JUN. 1996) -There is known to be an undumped v4.00 with copyright 1994-97 Seta Corporation on the E84-0001 Rev.B hardware. + ROM_REGION16_BE( 0x100, "eeprom", 0 ) + // 1.12X (JC24112E) + ROM_LOAD16_WORD_SWAP( "eeprom_jc2v112", 0x000, 0x100, CRC(be1d26f9) SHA1(1b6c6fd1c3298439206d73cb934dd1c30aee8a6c) ) // from MAME (SETA1996JC24112E) +ROM_END - */ +ROM_START( jclub2v203 ) + JCLUB2O_SOUND_ROMS + ROM_REGION( 0x280000, "gamecpu", 0 ) + ROM_LOAD16_WORD_SWAP( "sx006b-01.u26", 0x000000, 0x200000, CRC(f730dded) SHA1(efb966dcb98440a072d4825ef2788c85acdfd103) ) // v1.01 (1995 A 101, 20 FEB. 1995) + ROM_LOAD16_WORD_SWAP( "203x-rom1.u27", 0x200000, 0x080000, CRC(7446ed3e) SHA1(b0936e42549280e2965159270429c4fdacba114a) ) // v2.03X (1997 6 203, 26 MAR. 1997) Release Candidate + ROM_REGION16_BE( 0x100, "eeprom", 0 ) + // 2.03X (JC26203 :00020400C5IK) +// ROM_LOAD16_WORD_SWAP( "eeprom-jclub2o.bin", 0x000, 0x100, CRC(dd1c88ec) SHA1(acb67e41e832f203361e0f93afcd4eaf963fd13e) ) // dump (SETA1997JC26203 ) + ROM_LOAD16_WORD_SWAP( "eeprom_jc2v203", 0x000, 0x100, CRC(c1bc58e7) SHA1(4670c94fd655d223f21254167e4334b81affdf8d) ) // from MAME (SETA1997JC26203 ) +ROM_END +/*************************************************************************** - /* Jockey Club II by SETA 1996 -PCB E79-001 rev 01a (Newer) - -Main CPU : MC68EC020FG16 +PCB : E79-001 rev 01a (Newer) -Graphics : SETA ST-0032 70C600JF505 +Main CPU : MC68EC020FG16 -Others : - SETA ST-0013 - SETA ST-0017 +Graphics : SETA ST-0032 70C600JF505 -Xtal : 42.9545 MHz, 60.0000 MHz, 33.3333 MHz +Others : SETA ST-0013 + SETA ST-0017 +XTALs : 42.9545 MHz, 60.0000 MHz, 33.3333 MHz -Rams : Toshiba : TC5118160CJ-60 (x3) - NKK N341256SJ-15 (x2) - NEC D43001GU-70LL (x4) +Rams : Toshiba : TC5118160CJ-60 (x3) + NKK N341256SJ-15 (x2) + NEC D43001GU-70LL (x4) -Gals : gal16V8B(x2) ref : M88-03 M88-04 +Gals : gal16V8B(x2) ref : M88-03 M88-04 -Eeprom : 93c46 +Eeprom : 93c46 -Eproms : M88-01.u38,M88-023.u6 (read as 578200) (1st set) - M88-01A.u38,M88-02.u6 (2nd set) - M88-01B.u38,M88-02.u6 (3rd set) - M88-01.u38,M88-02.u6,Z201x.u39 (4th set) - M88-01A.u38,M88-02.u6 M88-03D.u39 (5th set) - M88-01B.u38,M88-02.u6,M88-03D.u39 (6th set) +Eproms : M88-01.u38, M88-02.u6 (1st set) + M88-01A.u38, M88-02.u6 (2nd set) + M88-01B.u38, M88-02.u6 (3rd set) + M88-01.u38, M88-02.u6, Z201x.u39 (4th set) + M88-01A.u38, M88-02.u6, M88-03D.u39 (5th set) + M88-01B.u38, M88-02.u6, M88-03D.u39 (6th set) + (u6 read as 578200) Provided to you by Belgium Dump Team Gerald (COY) on 18/01/2007. -*/ +***************************************************************************/ -// ToDo: check for other similarities with CPS3 hardware, there are more than a few things which look the same. +#define JCLUB2_OTHER_ROMS \ + ROM_REGION( 0x100000, "samples", 0 ) \ + ROM_LOAD( "m88-02.u6", 0x00000, 0x100000, CRC(0dd3436a) SHA1(809d3b7a26d36f71da04036fd8ab5d0c5089392a) ) \ + \ + ROM_REGION( 0x117, "pld", 0 ) \ + ROM_LOAD( "gal16v8b-m88-03.bin", 0x000, 0x117, CRC(6d9c882e) SHA1(84cb95ab540290c2f8b740668360e9c643a67dcf) ) \ + ROM_LOAD( "gal16v8b-m88-04.bin", 0x000, 0x117, CRC(5e79f292) SHA1(5e44c234e2b15d486a1af71fee986892aa245b4d) ) -// this contains mutliple sets, although splitting them as listed above makes no sense.. especially not the 'subcpu' roms -ROM_START( jclub2 ) - ROM_REGION( 0x200000, "gamecpu", 0 ) // 68EC020 code + compressed GFX - // main program (similar to main program of bootleg - ROM_LOAD16_WORD_SWAP( "m88-01b.u38",0x00000, 0x200000, CRC(f1054c69) SHA1(be6d92653f0d3cc0a36a2ff0798043f4a95439bc) ) - ROM_LOAD16_WORD_SWAP( "m88-01a.u38",0x00000, 0x200000, CRC(c1243e1c) SHA1(2a5857738b8950daf77ddaa8304b765f809f8241) ) // alt revision? - ROM_LOAD16_WORD_SWAP( "m88-01.u38", 0x00000, 0x200000, CRC(84476b68) SHA1(1014d23d3cebbfa9aa3bfb90505529989a8eedfa) ) // alt revision? +ROM_START( jclub2v200 ) + JCLUB2_OTHER_ROMS + ROM_REGION( 0x280000, "gamecpu", 0 ) + ROM_LOAD16_WORD_SWAP( "m88-01.u38", 0x000000, 0x200000, CRC(84476b68) SHA1(1014d23d3cebbfa9aa3bfb90505529989a8eedfa) ) // v2.00 (1996 Z 200 , 27 SEP. 1996) + ROM_FILL( 0x200000, 0x080000, 0xff) // no upgrade rom - ROM_REGION( 0x200000, "patch", 0 ) // 68EC020 code - // it appears that the operator could place a ROM in the socket next to the main CPU rom to update the main program rom by - // overriding the initial 0x80000 bytes of the program rom. - ROM_LOAD16_WORD_SWAP( "m88-03d.u39",0x00000, 0x080000, CRC(723dd22b) SHA1(0ca622e0dd315f29e72dd9b82fb419d306ec5df8) ) - ROM_LOAD16_WORD_SWAP( "z201x.u39",0x00000, 0x080000, CRC(1fb79c16) SHA1(c8914f7dfc17c412f6ca756f8eb6d6a35e3b6214) ) + ROM_REGION( 0x80, "eeprom", 0 ) + // 2.00 (JC2Z200 :0000000004HQ) + ROM_LOAD( "eeprom_jc2v200", 0x00, 0x80, CRC(90cc44da) SHA1(5c43d88009537884112950544fc74874cd0e745c) ) // from MAME (SETA1996JC2Z200 ) +ROM_END - ROM_REGION( 0x100000, "oki", 0 ) // Samples? (not oki probably one of the ST-xx customs, no idea if the dump is good) - // data distribution would indicate this is a sound rom - ROM_LOAD( "m88-02.u6", 0x00000, 0x100000, CRC(0dd3436a) SHA1(809d3b7a26d36f71da04036fd8ab5d0c5089392a) ) +ROM_START( jclub2v201 ) + JCLUB2_OTHER_ROMS + ROM_REGION( 0x280000, "gamecpu", 0 ) + ROM_LOAD16_WORD_SWAP( "m88-01.u38", 0x000000, 0x200000, CRC(84476b68) SHA1(1014d23d3cebbfa9aa3bfb90505529989a8eedfa) ) // v2.00 (1996 Z 200 , 27 SEP. 1996) + ROM_LOAD16_WORD_SWAP( "z201x.u39", 0x200000, 0x080000, CRC(1fb79c16) SHA1(c8914f7dfc17c412f6ca756f8eb6d6a35e3b6214) ) // v2.01X (1996 Z 201 , 20 NOV. 1996) - ROM_REGION( 0x80000, "misc", ROMREGION_ERASEFF ) - ROM_LOAD( "gal16v8b-m88-03.bin", 0x000, 0x117, CRC(6d9c882e) SHA1(84cb95ab540290c2f8b740668360e9c643a67dcf) ) - ROM_LOAD( "gal16v8b-m88-04.bin", 0x000, 0x117, CRC(5e79f292) SHA1(5e44c234e2b15d486a1af71fee986892aa245b4d) ) - - ROM_REGION( 0x80, "eeprom", 0 ) // EEPROM - ROM_LOAD( "eeprom-jclub2.bin", 0x0000, 0x0080, CRC(1513cdc8) SHA1(22ff752f3e0f8f611c234a1dc4327aa360b4d6eb) ) + ROM_REGION( 0x80, "eeprom", 0 ) + // 2.01X (JC2Z201 :00000400248Q) + ROM_LOAD( "eeprom_jc2v201", 0x00, 0x80, CRC(e81deb16) SHA1(f96c7953e7c5221f6c1cfccc7aa331e7453eca00) ) // from MAME (SETA1996JC2Z201 ) ROM_END -/* -Jockey Club II by SETA 1994-1995 +ROM_START( jclub2v204 ) + JCLUB2_OTHER_ROMS + ROM_REGION( 0x280000, "gamecpu", 0 ) + ROM_LOAD16_WORD_SWAP( "m88-01a.u38", 0x000000, 0x200000, CRC(c1243e1c) SHA1(2a5857738b8950daf77ddaa8304b765f809f8241) ) // v2.04 (1997 Z 2040, 30 APR. 1997) + ROM_FILL( 0x200000, 0x080000, 0xff) // no upgrade rom -Other hardware version (older): + ROM_REGION( 0x80, "eeprom", 0 ) + // 2.04 (JC2Z2040:00000400248Q) + ROM_LOAD( "eeprom_jc2v204", 0x00, 0x80, CRC(fb25ba0f) SHA1(14c8951648e77cf9abe61ad4399d9be8abc93b2a) ) // from MAME (SETA1997JC2Z2040) +ROM_END -Main PCB: E06-00409 -Sub PCb : E06-00407 (I/O nothing else) +ROM_START( jclub2v205 ) + JCLUB2_OTHER_ROMS + ROM_REGION( 0x280000, "gamecpu", 0 ) + ROM_LOAD16_WORD_SWAP( "m88-01b.u38", 0x000000, 0x200000, CRC(f1054c69) SHA1(be6d92653f0d3cc0a36a2ff0798043f4a95439bc) ) // v2.05 (1997 Z 2050, 21 JUL. 1997) + ROM_FILL( 0x200000, 0x080000, 0xff) // no upgrade rom -Main CPU : MC68EC020FG16 + ROM_REGION( 0x80, "eeprom", 0 ) + // 2.05 (JC2Z2050:00000400248Q) + ROM_LOAD( "eeprom_jc2v205", 0x00, 0x80, CRC(9f1fdcd5) SHA1(8e492c6450c56859f582ed89b384caa979a912f0) ) // from MAME (SETA1997JC2Z2050) +ROM_END -Many XTAL : 48.0000 MHz,33.3333 MHz,4.91520 MHz,42.9545 MHz(x2),105.0000 MHz (this 105.0000 Xtal is sometimes replaced by a tiny pcb silscreened 108.0000 MHz(!), with ICS ICS1494N, MB3771 and 14.3181 MHz Xtal) +ROM_START( jclub2v220 ) + JCLUB2_OTHER_ROMS + ROM_REGION( 0x280000, "gamecpu", ROMREGION_ERASEFF ) + ROM_LOAD16_WORD_SWAP( "m88-01b.u38", 0x000000, 0x200000, CRC(f1054c69) SHA1(be6d92653f0d3cc0a36a2ff0798043f4a95439bc) ) // v2.05 (1997 Z 2050, 21 JUL. 1997) + ROM_LOAD16_WORD_SWAP( "m88-03d.u39", 0x200000, 0x080000, CRC(723dd22b) SHA1(0ca622e0dd315f29e72dd9b82fb419d306ec5df8) ) // v2.20X (1997 Z 2201, 14 APR. 1998) -Graphics: SETA ST-0020 + ROM_REGION( 0x80, "eeprom", 0 ) + // 2.20X (JC2Z2201:00000400248Q) + ROM_LOAD( "eeprom_jc2v220", 0x00, 0x80, CRC(bde1f064) SHA1(a9b6cfabcc63b1429c4e0c9b162ce7be60c3c515) ) // from MAME (SETA1997JC2Z2201) +ROM_END -Others : - SETA ST-0013 - SETA ST-0016 <-- z80 core + simple gfx + sound, see st0016.c - SETA ST-0017 +/*************************************************************************** -Rams : Toshiba TC514800AJ-70 - Toshiba TC514000ASJ-70 (x8) - Sharp LH5168D +Dark Horse (2001) -Eproms : SX006A-01.u26 read as 5716200,JC2-110x.u27,SX006-04.u87 (sound) - SX006B-01.u26,JC2-110x.u27,SX006-04.u87 (sound) - SX006A-01.u26,JC2-112x.u27,SX006-04.u87 (sound) - SX006B-01.u26,JC2-112x.u27,SX006-04.u87 (sound) +A bootleg of Jockey Club II on inferior hardware -Provided to you by Belgium Dump Team Gerald (COY) on 18/01/2007. +|-----------------------------------------------------------| +| M6295 SND GM76C512 GM76C512 |-------| | +| GM76C512 GM76C512 |ACTEL | | +| EEPROM PRG1 GM76C512 GM76C512 |A40MX04| | +| GM76C512 GM76C512 | | | +| PRG2 |-------| | +| |-------| 62256 GM71C4260 | +| |ACTEL | 3.6V_BATT 62256 GM71C4260 | +| |A40MX04| 68EC020 GAL | +| | | GAL GAL | +|J |-------| | +|A GFX1 GFX2 | +|M | +|M GFX3 | +|A | +| GFX4 | +| 62256 | +| GFX5 | +| 62256 |-------| | +| 62256 |ACTEL | GFX6 | +| |A42MX09| | +| 62256 | | GFX7 | +| |-------| | +| GAL GFX8 | +| GAL | +| 36MHz | +|-----------------------------------------------------------| -*/ +***************************************************************************/ -// this contains mutliple sets -ROM_START( jclub2o ) - ROM_REGION( 0x200000, "gamecpu", 0 ) // 68EC020 code + compressed gfx - ROM_LOAD16_WORD_SWAP( "sx006a-01.106",0x00000, 0x200000, CRC(55e249bc) SHA1(ed0f066ed17f047760b712cbbfba1a62d4b452ba) ) - ROM_LOAD16_WORD_SWAP( "sx006b-01.u26",0x00000, 0x200000, CRC(f730dded) SHA1(efb966dcb98440a072d4825ef2788c85acdfd103) ) // alt revision? +ROM_START( darkhors ) + ROM_REGION( 0x100000, "gamecpu", 0 ) // 68EC020 code + ROM_LOAD32_WORD_SWAP( "prg2", 0x00000, 0x80000, CRC(f2ec5818) SHA1(326937a331496880f517f41b0b8ab54e55fd7af7) ) // 27 JUN. 1997 + ROM_LOAD32_WORD_SWAP( "prg1", 0x00002, 0x80000, CRC(b80f8f59) SHA1(abc26dd8b36da0d510978364febe385f69fb317f) ) - ROM_REGION( 0x200000, "patch", 0 ) // 68EC020 code - // it appears that the operator could place a ROM in the socket next to the main CPU rom to update the main program rom by - // overriding the initial 0x80000 bytes of the program rom. - ROM_LOAD16_WORD_SWAP( "jc2-110x.u27",0x00000, 0x080000, CRC(03aa6882) SHA1(e0343bc77a19994ddafa614891663b40e1476332) ) - ROM_LOAD16_WORD_SWAP( "jc2-112x.u27",0x00000, 0x080000, CRC(e1ab93bd) SHA1(78b618b3f7819bd5351ebf949f328fec7795cec9) ) // alt revision? + ROM_REGION( 0x400000, "gfx1", 0 ) + ROM_LOAD( "gfx1", 0x000000, 0x80000, CRC(e9fe9967) SHA1(a79d75c09f0eac6372de8d6e98c5eecf38ef750c) ) + ROM_LOAD( "gfx2", 0x080000, 0x80000, CRC(0853c5c5) SHA1(2b49ffe607278817f1f8219a79f5906be53ee6f4) ) + ROM_LOAD( "gfx3", 0x100000, 0x80000, CRC(6e89278f) SHA1(044c15e00ea95fd3f108fa916000a1000789c8e8) ) + ROM_LOAD( "gfx4", 0x180000, 0x80000, CRC(f28407ab) SHA1(47933719cff8099fc079fd736b4b08176f3aff66) ) + ROM_LOAD( "gfx5", 0x200000, 0x80000, CRC(281402cd) SHA1(77f8e5e02c6e7161299c06e65a078c1cdda1ba66) ) + ROM_LOAD( "gfx6", 0x280000, 0x80000, CRC(8ea0149b) SHA1(7792fd7e07a7baa4e15f50b6528c78fb15b40b40) ) + ROM_LOAD( "gfx7", 0x300000, 0x80000, BAD_DUMP CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) ) // FIXED BITS (11111111) + ROM_FILL( 0x300000, 0x80000, 0x00 ) // a zero-fill seems fine + ROM_LOAD( "gfx8", 0x380000, 0x80000, CRC(590bec2a) SHA1(7fdbb21f1a3eccde65e91eb2443a0e01487c59c3) ) // 000xxxxxxxxxxxxxxxx = 0x00 - ROM_REGION( 0x80000, "maincpu", 0 ) // z80 core (used for sound?) - ROM_LOAD( "sx006-04.u87", 0x00000, 0x80000, CRC(a87adedd) SHA1(1cd5af2d03738fff2230b46241659179467c828c) ) + ROM_REGION( 0x80000, "oki", 0 ) // Samples + ROM_LOAD( "snd", 0x00000, 0x80000, CRC(7aeb12d3) SHA1(3e81725fc206baa7559da87552a0cd73b7616155) ) - ROM_REGION16_BE( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!! - ROM_LOAD( "eeprom-jclub2o.bin", 0x0000, 0x100, CRC(dd1c88ec) SHA1(acb67e41e832f203361e0f93afcd4eaf963fd13e) ) //jclub2ob ones + ROM_REGION( 0x80, "eeprom", 0 ) // EEPROM + ROM_LOAD( "eeprom", 0x000, 0x080, CRC(1f434f66) SHA1(e1bee11d83fb72aed9c312bdc794d8b9a6645534) ) // (SETA1997JC2W400 ) ROM_END -/* - Jockey Club II (26-mar-1997) - 8 Horses, old style PCB. - Maybe upgraded to a release candidate software revision. -*/ -ROM_START( jclub2ob ) - ROM_REGION( 0x200000, "gamecpu", 0 ) // 68EC020 code + compressed gfx - ROM_LOAD16_WORD_SWAP( "sx006a-01.u26",0x00000, 0x200000, CRC(55e249bc) SHA1(ed0f066ed17f047760b712cbbfba1a62d4b452ba) ) - - ROM_REGION( 0x200000, "patch", 0 ) // 68EC020 code - // it appears that the operator could place a ROM in the socket next to the main CPU rom to update the main program rom by - // overriding the initial 0x80000 bytes of the program rom. - ROM_LOAD16_WORD_SWAP( "203x-rom1.u27",0x00000, 0x080000, CRC(7446ed3e) SHA1(b0936e42549280e2965159270429c4fdacba114a) ) - - ROM_REGION( 0x80000, "maincpu", 0 ) // z80 core (used for sound?) - ROM_LOAD( "sx006-04.u87", 0x00000, 0x80000, CRC(a87adedd) SHA1(1cd5af2d03738fff2230b46241659179467c828c) ) - - ROM_REGION16_BE( 0x100, "eeprom", 0 ) // eeprom 16 bit one!!! - ROM_LOAD( "eeprom-jclub2o.bin", 0x0000, 0x100, CRC(dd1c88ec) SHA1(acb67e41e832f203361e0f93afcd4eaf963fd13e) ) -ROM_END /*************************************************************************** - Game Drivers - ***************************************************************************/ DRIVER_INIT_MEMBER(darkhors_state,darkhors) { - // the dumped eeprom bytes are in a different order to how MAME expects them to be + // the dumped eeprom bytes are in a different order to how MAME expects them to be!? // (offset 0x00, 0x40, 0x01, 0x41, 0x02, 0x42 ..... ) - // I guess this is the difference between the internal organization on the real - // device, and how MAME represents it? - - // the eeprom contains the game ID, which must be valid for it to boot - // is there a way (key sequence) to reprogram it?? - // I bet the original sets need similar get further in their boot sequence - uint8_t *eeprom = (uint8_t *) memregion("eeprom")->base(); - if (eeprom != 0x00) + // The eeprom contains the game ID, which must be valid for it to boot + uint8_t *eeprom = (uint8_t *)memregion("eeprom")->base(); + if (eeprom) { size_t len = memregion("eeprom")->bytes(); std::vector temp(len); - int i; - for (i = 0; i < len; i++) + + for (int i = 0; i < len; i++) temp[i] = eeprom[BITSWAP8(i,7,5,4,3,2,1,0,6)]; memcpy(eeprom, &temp[0], len); - } } -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 199?, jclub2, 0, jclub2, jclub2, driver_device, 0, ROT0, "Seta", "Jockey Club II (newer hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 199?, jclub2o, jclub2, jclub2o, jclub2, driver_device, 0, ROT0, "Seta", "Jockey Club II (older hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 199?, jclub2ob, jclub2, jclub2o, jclub2, driver_device, 0, ROT0, "Seta", "Jockey Club II (older hardware, set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2001, darkhors, jclub2, darkhors,darkhors,darkhors_state, darkhors,ROT0, "bootleg", "Dark Horse (bootleg of Jockey Club II)", MACHINE_IMPERFECT_GRAPHICS ) - - -//test boot = test mode -//reset +start 1p at boot, when msg on screen press test without release other key = setup -//reset +cancel 1p = backup all clear -//reset, test, meter and last game are keys so once you turn them they stay "active" -/* -boot with -- F1 (test) to enter the test -- 0 + 1 (reset+start1) to run the setup -- 0 + left alt (reset + p1 cancel) to clear data -- 0 + 1 + f1 (IIRC) to write ID -*/ + +// Older hardware (ST-0020 + ST-0016) +GAME( 1994, jclub2v100, jclub2v112, jclub2o, jclub2v100, jclub2o_state, 0, ROT0, "Seta", "Jockey Club II (v1.00, older hardware)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, jclub2v101, jclub2v112, jclub2o, jclub2v100, jclub2o_state, 0, ROT0, "Seta", "Jockey Club II (v1.01, older hardware)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, jclub2v110, jclub2v112, jclub2o, jclub2v100, jclub2o_state, 0, ROT0, "Seta", "Jockey Club II (v1.10X, older hardware)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, jclub2v112, 0, jclub2o, jclub2v112, jclub2o_state, 0, ROT0, "Seta", "Jockey Club II (v1.12X, older hardware)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, jclub2v203, jclub2v112, jclub2o, jclub2v112, jclub2o_state, 0, ROT0, "Seta", "Jockey Club II (v2.03X RC, older hardware, prototype)", MACHINE_IMPERFECT_GRAPHICS ) +// Newer hardware (ST-0032) +GAME( 1996, jclub2v200, jclub2v112, jclub2, jclub2v112, jclub2_state, 0, ROT0, "Seta", "Jockey Club II (v2.00, newer hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 1996, jclub2v201, jclub2v112, jclub2, jclub2v112, jclub2_state, 0, ROT0, "Seta", "Jockey Club II (v2.01X, newer hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 1997, jclub2v204, jclub2v112, jclub2, jclub2v112, jclub2_state, 0, ROT0, "Seta", "Jockey Club II (v2.04, newer hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 1997, jclub2v205, jclub2v112, jclub2, jclub2v112, jclub2_state, 0, ROT0, "Seta", "Jockey Club II (v2.05, newer hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 1998, jclub2v220, jclub2v112, jclub2, jclub2v112, jclub2_state, 0, ROT0, "Seta", "Jockey Club II (v2.20X, newer hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +// Bootleg hardware +GAME( 2001, darkhors, jclub2v112, darkhors, darkhors, darkhors_state, darkhors, ROT0, "bootleg", "Dark Horse (USA v4.00, bootleg of Jockey Club II)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/jedi.cpp b/src/mame/drivers/jedi.cpp index ed22eeaf888..18acb2347f7 100644 --- a/src/mame/drivers/jedi.cpp +++ b/src/mame/drivers/jedi.cpp @@ -333,7 +333,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( jedi, jedi_state ) +static MACHINE_CONFIG_START( jedi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, JEDI_MAIN_CPU_CLOCK) @@ -398,4 +398,4 @@ ROM_END * *************************************/ -GAME( 1984, jedi, 0, jedi, jedi, driver_device, 0, ROT0, "Atari", "Return of the Jedi", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, jedi, 0, jedi, jedi, jedi_state, 0, ROT0, "Atari", "Return of the Jedi", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/jeutel.cpp b/src/mame/drivers/jeutel.cpp index ed9e8efc485..ea5ce245d55 100644 --- a/src/mame/drivers/jeutel.cpp +++ b/src/mame/drivers/jeutel.cpp @@ -104,14 +104,13 @@ WRITE8_MEMBER( jeutel_state::porta_w ) { if ((data & 0xf0) == 0xf0) { - m_tms->ctl_w(space, offset, TMS5110_CMD_RESET); + m_tms->ctl_w(space, offset, tms5110_device::CMD_RESET); m_tms->pdc_w(1); m_tms->pdc_w(0); } - else - if ((data & 0xf0) == 0xd0) + else if ((data & 0xf0) == 0xd0) { - m_tms->ctl_w(space, offset, TMS5110_CMD_SPEAK); + m_tms->ctl_w(space, offset, tms5110_device::CMD_SPEAK); m_tms->pdc_w(1); m_tms->pdc_w(0); } @@ -184,7 +183,7 @@ DRIVER_INIT_MEMBER( jeutel_state, jeutel ) { } -static MACHINE_CONFIG_START( jeutel, jeutel_state ) +static MACHINE_CONFIG_START( jeutel ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3300000) MCFG_CPU_PROGRAM_MAP(jeutel_map) @@ -268,5 +267,5 @@ ROM_START(olympic) ROM_END -GAME(1983, leking, 0, jeutel, jeutel, jeutel_state, jeutel, ROT0, "Jeutel", "Le King", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, leking, 0, jeutel, jeutel, jeutel_state, jeutel, ROT0, "Jeutel", "Le King", MACHINE_IS_SKELETON_MECHANICAL) GAME(1984, olympic, 0, jeutel, jeutel, jeutel_state, jeutel, ROT0, "Jeutel", "Olympic Games", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/joctronic.cpp b/src/mame/drivers/joctronic.cpp index f31a9449c90..0c928469386 100644 --- a/src/mame/drivers/joctronic.cpp +++ b/src/mame/drivers/joctronic.cpp @@ -310,7 +310,7 @@ void joctronic_state::machine_reset() static INPUT_PORTS_START( joctronic ) INPUT_PORTS_END -static MACHINE_CONFIG_START( joctronic, joctronic_state ) +static MACHINE_CONFIG_START( joctronic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) // 3 MHz - uses WAIT MCFG_CPU_PROGRAM_MAP(maincpu_map) // 139 @@ -346,7 +346,7 @@ static MACHINE_CONFIG_START( joctronic, joctronic_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( slalom03, joctronic_state ) +static MACHINE_CONFIG_START( slalom03 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) // 6 MHz - uses WAIT MCFG_CPU_PROGRAM_MAP(slalom03_maincpu_map) // 138, 368, 32 @@ -382,7 +382,7 @@ static MACHINE_CONFIG_START( slalom03, joctronic_state ) MCFG_74157_OUT_CB(DEVWRITE8("oki", msm5205_device, data_w)) MCFG_SOUND_ADD("oki", MSM5205, XTAL_12MHz/2/16) // 375 kHz - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) // frequency modifiable during operation + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) // frequency modifiable during operation MCFG_MSM5205_VCLK_CB(WRITELINE(joctronic_state, vclk_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -441,7 +441,7 @@ ROM_START(slalom03) ROM_END -GAME( 1986, punkywil, 0, joctronic, joctronic, driver_device, 0, ROT0, "Joctronic", "Punky Willy", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1986, walkyria, 0, joctronic, joctronic, driver_device, 0, ROT0, "Joctronic", "Walkyria", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, bldyrolr, 0, bldyrolr, joctronic, driver_device, 0, ROT0, "Playbar", "Bloody Roller", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1988, slalom03, 0, slalom03, joctronic, driver_device, 0, ROT0, "Stargame", "Slalom Code 0.3", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, punkywil, 0, joctronic, joctronic, joctronic_state, 0, ROT0, "Joctronic", "Punky Willy", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, walkyria, 0, joctronic, joctronic, joctronic_state, 0, ROT0, "Joctronic", "Walkyria", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, bldyrolr, 0, bldyrolr, joctronic, joctronic_state, 0, ROT0, "Playbar", "Bloody Roller", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1988, slalom03, 0, slalom03, joctronic, joctronic_state, 0, ROT0, "Stargame", "Slalom Code 0.3", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/jokrwild.cpp b/src/mame/drivers/jokrwild.cpp index 99113017d09..fa12026fc2f 100644 --- a/src/mame/drivers/jokrwild.cpp +++ b/src/mame/drivers/jokrwild.cpp @@ -402,7 +402,7 @@ WRITE8_MEMBER(jokrwild_state::testb_w) * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( jokrwild, jokrwild_state ) +static MACHINE_CONFIG_START( jokrwild ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/2) /* guess */ @@ -505,5 +505,5 @@ DRIVER_INIT_MEMBER(jokrwild_state,jokrwild) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 1988, jokrwild, 0, jokrwild, jokrwild, jokrwild_state, jokrwild, ROT0, "Sigma", "Joker's Wild (encrypted)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/jollyjgr.cpp b/src/mame/drivers/jollyjgr.cpp index 7cc7832d790..aef633e7937 100644 --- a/src/mame/drivers/jollyjgr.cpp +++ b/src/mame/drivers/jollyjgr.cpp @@ -137,7 +137,8 @@ public: m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), - m_bm_palette(*this, "bm_palette") { } + m_bm_palette(*this, "bm_palette") + { } /* memory pointers */ required_shared_ptr m_videoram; @@ -669,7 +670,7 @@ void jollyjgr_state::machine_reset() m_tilemap_bank = 0; } -static MACHINE_CONFIG_START( jollyjgr, jollyjgr_state ) +static MACHINE_CONFIG_START( jollyjgr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18MHz/6) /* 3MHz verified */ MCFG_CPU_PROGRAM_MAP(jollyjgr_map) @@ -778,5 +779,5 @@ ROM_END * *************************************/ -GAME( 1981, fspiderb, 0, fspider, fspider, driver_device, 0, ROT90, "Taito Corporation", "Frog & Spiders (bootleg?)", MACHINE_SUPPORTS_SAVE ) // comes from a Fawaz Group bootleg(?) board -GAME( 1982, jollyjgr, 0, jollyjgr, jollyjgr, driver_device, 0, ROT90, "Taito Corporation", "Jolly Jogger", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, fspiderb, 0, fspider, fspider, jollyjgr_state, 0, ROT90, "Taito Corporation", "Frog & Spiders (bootleg?)", MACHINE_SUPPORTS_SAVE ) // comes from a Fawaz Group bootleg(?) board +GAME( 1982, jollyjgr, 0, jollyjgr, jollyjgr, jollyjgr_state, 0, ROT90, "Taito Corporation", "Jolly Jogger", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/jongkyo.cpp b/src/mame/drivers/jongkyo.cpp index 7370947a73d..49783c3b31a 100644 --- a/src/mame/drivers/jongkyo.cpp +++ b/src/mame/drivers/jongkyo.cpp @@ -490,7 +490,7 @@ void jongkyo_state::machine_reset() } -static MACHINE_CONFIG_START( jongkyo, jongkyo_state ) +static MACHINE_CONFIG_START( jongkyo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SEGA_315_5084,JONGKYO_CLOCK/4) diff --git a/src/mame/drivers/jonos.cpp b/src/mame/drivers/jonos.cpp index a3075fefd59..21fc52f2988 100644 --- a/src/mame/drivers/jonos.cpp +++ b/src/mame/drivers/jonos.cpp @@ -117,7 +117,7 @@ static GFXDECODE_START( jonos ) GFXDECODE_END -static MACHINE_CONFIG_START( jonos, jonos_state ) +static MACHINE_CONFIG_START( jonos ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(jonos_mem) @@ -153,5 +153,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, jonos, 0, 0, jonos, jonos, jonos_state, jonos, "Jonos", "Escort", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 198?, jonos, 0, 0, jonos, jonos, jonos_state, jonos, "Jonos", "Escort", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/joystand.cpp b/src/mame/drivers/joystand.cpp index e92b4d032f1..d2b2303da42 100644 --- a/src/mame/drivers/joystand.cpp +++ b/src/mame/drivers/joystand.cpp @@ -579,7 +579,7 @@ INTERRUPT_GEN_MEMBER(joystand_state::joystand_interrupt) m_tmp68301->external_interrupt_1(); } -static MACHINE_CONFIG_START( joystand, joystand_state ) +static MACHINE_CONFIG_START( joystand ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // !! TMP68301 !! @@ -610,7 +610,7 @@ static MACHINE_CONFIG_START( joystand, joystand_state ) MCFG_SOUND_ADD("ym2413", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz / 16, OKIM6295_PIN7_HIGH) // pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_16MHz / 16, PIN7_HIGH) // pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) // cart @@ -686,4 +686,4 @@ ROM_START( joystand ) ROM_LOAD( "jsp-xct.ic5", 0x000, 0x117, NO_DUMP ) ROM_END -GAME( 1997, joystand, 0, joystand, joystand, driver_device, 0, ROT0, "Yuvo", "Joy Stand Private", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1997, joystand, 0, joystand, joystand, joystand_state, 0, ROT0, "Yuvo", "Joy Stand Private", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/jp.cpp b/src/mame/drivers/jp.cpp index d1322f61742..64617ccf8f7 100644 --- a/src/mame/drivers/jp.cpp +++ b/src/mame/drivers/jp.cpp @@ -272,7 +272,7 @@ DRIVER_INIT_MEMBER( jp_state, jp ) { } -static MACHINE_CONFIG_START( jp, jp_state ) +static MACHINE_CONFIG_START( jp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz / 2) MCFG_CPU_PROGRAM_MAP(jp_map) @@ -483,17 +483,17 @@ ROM_START(petaco2) ROM_END // different hardware -GAME(1984, petaco, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Petaco", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, petaco, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Petaco", MACHINE_IS_SKELETON_MECHANICAL) // mostly ok -GAME(1985, petacon, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Petaco (new hardware)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1985, petacona, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Petaco (new hardware, alternate set)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME(1985, petaco2, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Petaco 2", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1985, faeton, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Faeton", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1986, halley, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Halley Comet", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1986, halleya, halley, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Halley Comet (alternate version)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1986, aqualand, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Aqualand", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1986, america, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "America 1492", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1986, olympus, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Olympus", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1987, lortium, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Lortium", MACHINE_IS_SKELETON_MECHANICAL) -GAME(19??, pimbal, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Pimbal (Pinball 3000)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, petacon, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Petaco (new hardware)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1985, petacona, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Petaco (new hardware, alternate set)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1985, petaco2, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Petaco 2", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1985, faeton, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Faeton", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1986, halley, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Halley Comet", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1986, halleya, halley, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Halley Comet (alternate version)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1986, aqualand, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Aqualand", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1986, america, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "America 1492", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1986, olympus, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Olympus", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1987, lortium, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Lortium", MACHINE_IS_SKELETON_MECHANICAL) +GAME(19??, pimbal, 0, jp, jp, jp_state, jp, ROT0, "Juegos Populares", "Pimbal (Pinball 3000)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/jpmimpct.cpp b/src/mame/drivers/jpmimpct.cpp index f513aabd29c..5b07067699c 100644 --- a/src/mame/drivers/jpmimpct.cpp +++ b/src/mame/drivers/jpmimpct.cpp @@ -835,7 +835,7 @@ WRITE_LINE_MEMBER(jpmimpct_state::tms_irq) * *************************************/ -static MACHINE_CONFIG_START( jpmimpct, jpmimpct_state ) +static MACHINE_CONFIG_START( jpmimpct ) MCFG_CPU_ADD("maincpu", M68000, 8000000) MCFG_CPU_PROGRAM_MAP(m68k_program_map) @@ -1307,7 +1307,7 @@ INPUT_PORTS_END * *************************************/ -MACHINE_CONFIG_START( impctawp, jpmimpct_state ) +MACHINE_CONFIG_START( impctawp ) MCFG_CPU_ADD("maincpu",M68000, 8000000) MCFG_CPU_PROGRAM_MAP(awp68k_program_map) @@ -1745,20 +1745,20 @@ ROM_END /* Video */ -GAME( 1995, cluedo, 0, jpmimpct, cluedo, driver_device, 0, ROT0, "JPM", "Cluedo (prod. 2D)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, cluedod, cluedo, jpmimpct, cluedo, driver_device, 0, ROT0, "JPM", "Cluedo (prod. 2D) (Protocol)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, cluedo2c, cluedo, jpmimpct, cluedo, driver_device, 0, ROT0, "JPM", "Cluedo (prod. 2C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, cluedo2, cluedo, jpmimpct, cluedo, driver_device, 0, ROT0, "JPM", "Cluedo (prod. 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, trivialp, 0, jpmimpct, trivialp, driver_device, 0, ROT0, "JPM", "Trivial Pursuit (New Edition) (prod. 1D)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, trivialpd,trivialp,jpmimpct, trivialp, driver_device, 0, ROT0, "JPM", "Trivial Pursuit (New Edition) (prod. 1D) (Protocol)",MACHINE_SUPPORTS_SAVE ) -GAME( 1996, trivialpo,trivialp,jpmimpct, trivialp, driver_device, 0, ROT0, "JPM", "Trivial Pursuit", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, scrabble, 0, jpmimpct, scrabble, driver_device, 0, ROT0, "JPM", "Scrabble (rev. F)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, scrabbled,scrabble,jpmimpct, scrabble, driver_device, 0, ROT0, "JPM", "Scrabble (rev. F) (Protocol)",MACHINE_SUPPORTS_SAVE ) -GAME( 1998, hngmnjpm, 0, jpmimpct, hngmnjpm, driver_device, 0, ROT0, "JPM", "Hangman (JPM)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, hngmnjpmd,hngmnjpm,jpmimpct, hngmnjpm, driver_device, 0, ROT0, "JPM", "Hangman (JPM) (Protocol)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, coronatn, 0, jpmimpct, coronatn, driver_device, 0, ROT0, "JPM", "Coronation Street Quiz Game", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, coronatnd,coronatn,jpmimpct, coronatn, driver_device, 0, ROT0, "JPM", "Coronation Street Quiz Game (Protocol)", MACHINE_SUPPORTS_SAVE ) -GAME( 199?, tqst, 0, jpmimpct, cluedo , driver_device, 0, ROT0, "JPM", "Treasure Quest" , MACHINE_NOT_WORKING) // incomplete (ACE?) -GAME( 199?, snlad, 0, jpmimpct, cluedo , driver_device, 0, ROT0, "JPM", "Snake & Ladders" , MACHINE_NOT_WORKING) // incomplete -GAME( 199?, buzzundr, 0, jpmimpct, cluedo , driver_device, 0, ROT0, "Ace", "Buzzundrum (Ace)", MACHINE_NOT_WORKING ) -GAME( 199?, monspdr , 0, jpmimpct, cluedo , driver_device, 0, ROT0, "Ace", "Money Spider (Ace)", MACHINE_NOT_WORKING ) +GAME( 1995, cluedo, 0, jpmimpct, cluedo, jpmimpct_state, 0, ROT0, "JPM", "Cluedo (prod. 2D)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cluedod, cluedo, jpmimpct, cluedo, jpmimpct_state, 0, ROT0, "JPM", "Cluedo (prod. 2D) (Protocol)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cluedo2c, cluedo, jpmimpct, cluedo, jpmimpct_state, 0, ROT0, "JPM", "Cluedo (prod. 2C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cluedo2, cluedo, jpmimpct, cluedo, jpmimpct_state, 0, ROT0, "JPM", "Cluedo (prod. 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, trivialp, 0, jpmimpct, trivialp, jpmimpct_state, 0, ROT0, "JPM", "Trivial Pursuit (New Edition) (prod. 1D)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, trivialpd,trivialp,jpmimpct, trivialp, jpmimpct_state, 0, ROT0, "JPM", "Trivial Pursuit (New Edition) (prod. 1D) (Protocol)",MACHINE_SUPPORTS_SAVE ) +GAME( 1996, trivialpo,trivialp,jpmimpct, trivialp, jpmimpct_state, 0, ROT0, "JPM", "Trivial Pursuit", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, scrabble, 0, jpmimpct, scrabble, jpmimpct_state, 0, ROT0, "JPM", "Scrabble (rev. F)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, scrabbled,scrabble,jpmimpct, scrabble, jpmimpct_state, 0, ROT0, "JPM", "Scrabble (rev. F) (Protocol)",MACHINE_SUPPORTS_SAVE ) +GAME( 1998, hngmnjpm, 0, jpmimpct, hngmnjpm, jpmimpct_state, 0, ROT0, "JPM", "Hangman (JPM)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, hngmnjpmd,hngmnjpm,jpmimpct, hngmnjpm, jpmimpct_state, 0, ROT0, "JPM", "Hangman (JPM) (Protocol)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, coronatn, 0, jpmimpct, coronatn, jpmimpct_state, 0, ROT0, "JPM", "Coronation Street Quiz Game", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, coronatnd,coronatn,jpmimpct, coronatn, jpmimpct_state, 0, ROT0, "JPM", "Coronation Street Quiz Game (Protocol)", MACHINE_SUPPORTS_SAVE ) +GAME( 199?, tqst, 0, jpmimpct, cluedo , jpmimpct_state, 0, ROT0, "JPM", "Treasure Quest" , MACHINE_NOT_WORKING) // incomplete (ACE?) +GAME( 199?, snlad, 0, jpmimpct, cluedo , jpmimpct_state, 0, ROT0, "JPM", "Snake & Ladders" , MACHINE_NOT_WORKING) // incomplete +GAME( 199?, buzzundr, 0, jpmimpct, cluedo , jpmimpct_state, 0, ROT0, "Ace", "Buzzundrum (Ace)", MACHINE_NOT_WORKING ) +GAME( 199?, monspdr , 0, jpmimpct, cluedo , jpmimpct_state, 0, ROT0, "Ace", "Money Spider (Ace)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/jpmimpctsw.cpp b/src/mame/drivers/jpmimpctsw.cpp index 0c20d12eb7b..d3821917b22 100644 --- a/src/mame/drivers/jpmimpctsw.cpp +++ b/src/mame/drivers/jpmimpctsw.cpp @@ -7877,1277 +7877,1277 @@ ROM_END /* Mechanical Below */ #define GAME_FLAGS MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL|MACHINE_NO_SOUND|MACHINE_CLICKABLE_ARTWORK -GAME( 199?, j6fifth , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "5th Dimension (Ace) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6fifth , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "5th Dimension (Ace) (IMPACT)", GAME_FLAGS ) -GAMEL( 199?, j6aceclb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Ace Of Clubs (Crystal) (IMPACT, set 1)", GAME_FLAGS, layout_j6aceclb ) -GAMEL( 199?, j6aceclba , j6aceclb , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Ace Of Clubs (Crystal) (IMPACT, set 2)", GAME_FLAGS, layout_j6aceclb ) +GAMEL( 199?, j6aceclb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Ace Of Clubs (Crystal) (IMPACT, set 1)", GAME_FLAGS, layout_j6aceclb ) +GAMEL( 199?, j6aceclba , j6aceclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Ace Of Clubs (Crystal) (IMPACT, set 2)", GAME_FLAGS, layout_j6aceclb ) -GAME( 199?, j6acehi , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Aces High (Ace) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6acehi , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Aces High (Ace) (IMPACT)", GAME_FLAGS ) -GAMEL( 199?, j6amdrm , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Mdm", "American Dream (Mdm) (IMPACT)", GAME_FLAGS, layout_j6amdrm ) +GAMEL( 199?, j6amdrm , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Mdm", "American Dream (Mdm) (IMPACT)", GAME_FLAGS, layout_j6amdrm ) -GAMEL( 199?, j6arcade , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 1)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadea , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 2)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadeb , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 3)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadec , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 4)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcaded , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 5)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadee , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 1)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadef , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 2)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadeg , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 3)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadeh , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 4)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadei , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 5)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadej , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 6)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6arcadek , j6arcade , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 7)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcade , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 1)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadea , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 2)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadeb , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 3)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadec , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 4)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcaded , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V9, set 5)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadee , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 1)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadef , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 2)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadeg , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 3)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadeh , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 4)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadei , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 5)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadej , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 6)", GAME_FLAGS, layout_j6arcadee ) +GAMEL( 199?, j6arcadek , j6arcade , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Arcadia (JPM) (IMPACT) (V10, set 7)", GAME_FLAGS, layout_j6arcadee ) -GAMEL( 199?, j6bnkrcl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V6, set 1)", GAME_FLAGS, layout_j6bnkrcl ) -GAMEL( 199?, j6bnkrcla , j6bnkrcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V6, set 2)", GAME_FLAGS, layout_j6bnkrcl ) -GAMEL( 199?, j6bnkrclb , j6bnkrcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V6, set 3)", GAME_FLAGS, layout_j6bnkrcl ) -GAMEL( 199?, j6bnkrclc , j6bnkrcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V2)", GAME_FLAGS, layout_j6bnkrcl ) +GAMEL( 199?, j6bnkrcl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V6, set 1)", GAME_FLAGS, layout_j6bnkrcl ) +GAMEL( 199?, j6bnkrcla , j6bnkrcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V6, set 2)", GAME_FLAGS, layout_j6bnkrcl ) +GAMEL( 199?, j6bnkrclb , j6bnkrcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V6, set 3)", GAME_FLAGS, layout_j6bnkrcl ) +GAMEL( 199?, j6bnkrclc , j6bnkrcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Banker Club (JPM) (IMPACT) (V2)", GAME_FLAGS, layout_j6bnkrcl ) // all ERROR 5.5 -GAMEL( 199?, j6big50 , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6big50 ) -GAMEL( 199?, j6big50a , j6big50 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6big50 ) -GAMEL( 199?, j6big50b , j6big50 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6big50 ) -GAMEL( 199?, j6big50c , j6big50 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6big50 ) -GAMEL( 199?, j6big50d , j6big50 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6big50 ) +GAMEL( 199?, j6big50 , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6big50 ) +GAMEL( 199?, j6big50a , j6big50 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6big50 ) +GAMEL( 199?, j6big50b , j6big50 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6big50 ) +GAMEL( 199?, j6big50c , j6big50 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6big50 ) +GAMEL( 199?, j6big50d , j6big50 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big 50 (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6big50 ) // all ERROR 2.9 // the code in brackets is just what it shows at startup, not sure what it means at the moment -GAME( 199?, j6bigbnk , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 1)", GAME_FLAGS ) -GAME( 199?, j6bigbnka , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 2)", GAME_FLAGS ) -GAME( 199?, j6bigbnkb , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 3)", GAME_FLAGS ) -GAME( 199?, j6bigbnkc , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 4)", GAME_FLAGS ) -GAME( 199?, j6bigbnkd , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB8 H18)", GAME_FLAGS ) -GAME( 199?, j6bigbnke , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB8 P H18)", GAME_FLAGS ) -GAME( 199?, j6bigbnkf , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB8 AH18)", GAME_FLAGS ) -GAME( 199?, j6bigbnkg , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB6 C 16) (set 1)", GAME_FLAGS ) -GAME( 199?, j6bigbnkh , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB6 C 16) (set 2)", GAME_FLAGS ) -GAME( 199?, j6bigbnki , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2B H11)", GAME_FLAGS ) -GAME( 199?, j6bigbnkj , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2BP H11)", GAME_FLAGS ) -GAME( 199?, j6bigbnkk , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2B AH11)", GAME_FLAGS ) -GAME( 199?, j6bigbnkl , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2BI H11)", GAME_FLAGS ) -GAME( 199?, j6bigbnkm , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2II H08)", GAME_FLAGS ) -GAME( 199?, j6bigbnkn , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB 9C 19)", GAME_FLAGS ) -GAME( 199?, j6bigbnko , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB5 I H15)", GAME_FLAGS ) -GAME( 199?, j6bigbnkp , j6bigbnk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB4 I H09)", GAME_FLAGS ) -GAME( 199?, j6bbankr , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Big Banker (Crystal) (IMPACT) (BB 2 T 2)", GAME_FLAGS ) // same game as above or not? - - -GAMEL( 199?, j6bigbuk , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbuka , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbukb , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbukc , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbukd , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbuke , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbukf , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbukg , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbukh , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbuki , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6bigbukc ) -GAMEL( 199?, j6bigbukj , j6bigbuk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6bigbukc ) - -GAME( 199?, j6bigcsh , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Big Cash Machine (Empire) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6bigpct , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Big Picture (Ace) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6bigpcta , j6bigpct , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Big Picture (Ace) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6bigpctb , j6bigpct , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Big Picture (Ace) (IMPACT) (set 3)", GAME_FLAGS ) - -GAMEL( 199?, j6bigtop , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Top Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6bigtopa ) -GAMEL( 199?, j6bigtopa , j6bigtop , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Top Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6bigtopa ) -GAMEL( 199?, j6bigtopb , j6bigtop , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Top Club (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6bigtopa ) -GAMEL( 199?, j6bigtopc , j6bigtop , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Top Club (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6bigtopa ) - -GAME( 199?, j6bigwhl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6bigwhla , j6bigwhl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6bigwhlb , j6bigwhl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6bigwhlc , j6bigwhl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6bigwhld , j6bigwhl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6bigwhle , j6bigwhl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6bigbnk , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 1)", GAME_FLAGS ) +GAME( 199?, j6bigbnka , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 2)", GAME_FLAGS ) +GAME( 199?, j6bigbnkb , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 3)", GAME_FLAGS ) +GAME( 199?, j6bigbnkc , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 4)", GAME_FLAGS ) +GAME( 199?, j6bigbnkd , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB8 H18)", GAME_FLAGS ) +GAME( 199?, j6bigbnke , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB8 P H18)", GAME_FLAGS ) +GAME( 199?, j6bigbnkf , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB8 AH18)", GAME_FLAGS ) +GAME( 199?, j6bigbnkg , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB6 C 16) (set 1)", GAME_FLAGS ) +GAME( 199?, j6bigbnkh , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB6 C 16) (set 2)", GAME_FLAGS ) +GAME( 199?, j6bigbnki , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2B H11)", GAME_FLAGS ) +GAME( 199?, j6bigbnkj , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2BP H11)", GAME_FLAGS ) +GAME( 199?, j6bigbnkk , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2B AH11)", GAME_FLAGS ) +GAME( 199?, j6bigbnkl , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2BI H11)", GAME_FLAGS ) +GAME( 199?, j6bigbnkm , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB2II H08)", GAME_FLAGS ) +GAME( 199?, j6bigbnkn , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB 9C 19)", GAME_FLAGS ) +GAME( 199?, j6bigbnko , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB5 I H15)", GAME_FLAGS ) +GAME( 199?, j6bigbnkp , j6bigbnk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Banker (JPM) (IMPACT) (BB4 I H09)", GAME_FLAGS ) +GAME( 199?, j6bbankr , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Big Banker (Crystal) (IMPACT) (BB 2 T 2)", GAME_FLAGS ) // same game as above or not? + + +GAMEL( 199?, j6bigbuk , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbuka , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbukb , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbukc , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbukd , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbuke , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbukf , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbukg , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbukh , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbuki , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6bigbukc ) +GAMEL( 199?, j6bigbukj , j6bigbuk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Bucks (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6bigbukc ) + +GAME( 199?, j6bigcsh , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Big Cash Machine (Empire) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6bigpct , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Big Picture (Ace) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6bigpcta , j6bigpct , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Big Picture (Ace) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6bigpctb , j6bigpct , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Big Picture (Ace) (IMPACT) (set 3)", GAME_FLAGS ) + +GAMEL( 199?, j6bigtop , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Top Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6bigtopa ) +GAMEL( 199?, j6bigtopa , j6bigtop , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Top Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6bigtopa ) +GAMEL( 199?, j6bigtopb , j6bigtop , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Top Club (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6bigtopa ) +GAMEL( 199?, j6bigtopc , j6bigtop , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Top Club (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6bigtopa ) + +GAME( 199?, j6bigwhl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6bigwhla , j6bigwhl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6bigwhlb , j6bigwhl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6bigwhlc , j6bigwhl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6bigwhld , j6bigwhl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6bigwhle , j6bigwhl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Big Wheel (JPM) (IMPACT) (set 6)", GAME_FLAGS ) // ERROR 8.3 -GAMEL( 199?, j6bnza , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO1 H06)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzaa , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO1 P H06)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzab , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO1 AH06)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzac , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO1 I H06)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzad , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO 9 14)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzae , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO 9P 14)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzaf , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO 9 A 14)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzag , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO 9I 14)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzah , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO5 H10)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzai , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO5 I H10)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzaj , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (incomplete pair)", GAME_FLAGS, layout_j6bnza ) -GAMEL( 199?, j6bnzak , j6bnza , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO06 11)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnza , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO1 H06)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzaa , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO1 P H06)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzab , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO1 AH06)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzac , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO1 I H06)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzad , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO 9 14)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzae , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO 9P 14)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzaf , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO 9 A 14)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzag , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO 9I 14)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzah , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO5 H10)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzai , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO5 I H10)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzaj , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (incomplete pair)", GAME_FLAGS, layout_j6bnza ) +GAMEL( 199?, j6bnzak , j6bnza , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Bonanza (JPM) (IMPACT) (BO06 11)", GAME_FLAGS, layout_j6bnza ) -GAME( 199?, j6brkout , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Breakout (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6brkouta , j6brkout , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Breakout (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6brkout , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Breakout (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6brkouta , j6brkout , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Breakout (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6bucks , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Bucks Fizz (Ace) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6bucks , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Bucks Fizz (Ace) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6cpclb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Caesar's Palace Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6cpclba , j6cpclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Caesar's Palace Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6cpclbb , j6cpclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Caesar's Palace Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6cpclb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Caesar's Palace Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6cpclba , j6cpclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Caesar's Palace Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6cpclbb , j6cpclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Caesar's Palace Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAMEL( 199?, j6camelt , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6camelt ) -GAMEL( 199?, j6camelta , j6camelt , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6camelt ) -GAMEL( 199?, j6cameltb , j6camelt , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6camelt ) -GAMEL( 199?, j6cameltc , j6camelt , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6camelt ) -GAMEL( 199?, j6cameltd , j6camelt , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6camelt ) +GAMEL( 199?, j6camelt , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6camelt ) +GAMEL( 199?, j6camelta , j6camelt , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6camelt ) +GAMEL( 199?, j6cameltb , j6camelt , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6camelt ) +GAMEL( 199?, j6cameltc , j6camelt , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6camelt ) +GAMEL( 199?, j6cameltd , j6camelt , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Camelot (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6camelt ) -GAME( 199?, j6scarlt , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Captain Scarlet (Ace) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6scarlt , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Captain Scarlet (Ace) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6cshbox , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Cash Box Club (Empire) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6cshboxa , j6cshbox , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Cash Box Club (Empire) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6cshboxb , j6cshbox , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Cash Box Club (Empire) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6cshbox , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Cash Box Club (Empire) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6cshboxa , j6cshbox , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Cash Box Club (Empire) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6cshboxb , j6cshbox , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Cash Box Club (Empire) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6cshbeu , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Cash Box Club (Empire) (Euro) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6cshbeu , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Cash Box Club (Empire) (Euro) (IMPACT)", GAME_FLAGS ) // ERROR 5.5 -GAME( 199?, j6cshbst , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6cshbsta , j6cshbst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6cshbstb , j6cshbst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6cshbstc , j6cshbst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6cshbstd , j6cshbst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 5)", GAME_FLAGS ) - - -GAME( 199?, j6cshcnt , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Countdown (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6cshcnta , j6cshcnt , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Countdown (JPM) (IMPACT) (set 2)", GAME_FLAGS ) - -GAME( 199?, j6cshrd , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6cshrda , j6cshrd , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6cshrdb , j6cshrd , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6cshrdc , j6cshrd , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6cshrdd , j6cshrd , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 5)", GAME_FLAGS ) - -GAME( 199?, j6cshtwr , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Towers (JPM) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6cshvgs , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6cshvgsa , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6cshvgsb , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6cshvgsc , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6cshvgsd , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6cshvgse , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6cshvgsf , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6cshvgsg , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6cshvgsh , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6cshvgsi , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6cshvgsj , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6cshvgsk , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 12)", GAME_FLAGS ) -GAME( 199?, j6cshvgsl , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 13)", GAME_FLAGS ) -GAME( 199?, j6cshvgsm , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 14)", GAME_FLAGS ) -GAME( 199?, j6cshvgsn , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 15)", GAME_FLAGS ) -GAME( 199?, j6cshvgso , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 16)", GAME_FLAGS ) -GAME( 199?, j6cshvgsp , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 17)", GAME_FLAGS ) -GAME( 199?, j6cshvgsq , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 18)", GAME_FLAGS ) -GAME( 199?, j6cshvgsr , j6cshvgs , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 19)", GAME_FLAGS ) - - -GAME( 199?, j6cas5 , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6cas5a , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6cas5b , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6cas5c , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6cas5d , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6cas5e , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6cas5f , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6cas5g , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6cas5h , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6cas5i , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6cas5j , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6cas5k , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 12)", GAME_FLAGS ) -GAME( 199?, j6cas5l , j6cas5 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 13)", GAME_FLAGS ) - - -GAMEL( 199?, j6cascz , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6cascza , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczb , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczc , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczd , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6cascze , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczf , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczg , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczh , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczi , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczj , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczk , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczl , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6cascze ) -GAMEL( 199?, j6casczm , j6cascz , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 14)", GAME_FLAGS, layout_j6cascze ) - - -GAME( 199?, j6cccla , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6ccclaa , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6ccclab , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6ccclac , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6ccclad , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6ccclae , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6ccclaf , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6ccclag , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6ccclah , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6ccclai , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6ccclaj , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6ccclak , j6cccla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 12)", GAME_FLAGS ) - -GAMEL( 199?, j6cascla , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclaa , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclab , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclac , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclad , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclae , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclaf , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclag , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclah , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclai , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclaj , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclak , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclal , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclam , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 14)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclan , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 15)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclao , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 16)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclap , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 17)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclaq , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 18)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclar , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 19)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclas , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 20)", GAME_FLAGS, layout_j6casclaf ) -GAMEL( 199?, j6casclat , j6cascla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 21)", GAME_FLAGS, layout_j6casclaf ) - -GAME( 199?, j6casclb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6casclba , j6casclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Crazy Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) - -GAME( 199?, j6caslas , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Las Vegas (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6caslasa , j6caslas , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Las Vegas (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6caslasb , j6caslas , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Las Vegas (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6caslasc , j6caslas , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Casino Las Vegas (JPM) (IMPACT) (set 4)", GAME_FLAGS ) - -GAME( 199?, j6cheque , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cheque Mate (JPM) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6cluclb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6cluclba , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6cluclbb , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6cluclbc , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6cluclbd , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6cluclbe , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6cluclbf , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6cluclbg , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6cluclbh , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6cluclbi , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6cluclbj , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6cluclbk , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 12)", GAME_FLAGS ) -GAME( 199?, j6cluclbl , j6cluclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 13)", GAME_FLAGS ) - - -GAME( 199?, j6col , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6cola , j6col , impctawp, tbirds, driver_device, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6colb , j6col , impctawp, tbirds, driver_device, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6colc , j6col , impctawp, tbirds, driver_device, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6cold , j6col , impctawp, tbirds, driver_device, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6cole , j6col , impctawp, tbirds, driver_device, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6colf , j6col , impctawp, tbirds, driver_device, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6cshbst , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6cshbsta , j6cshbst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6cshbstb , j6cshbst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6cshbstc , j6cshbst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6cshbstd , j6cshbst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Buster (JPM) (IMPACT) (set 5)", GAME_FLAGS ) + + +GAME( 199?, j6cshcnt , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Countdown (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6cshcnta , j6cshcnt , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Countdown (JPM) (IMPACT) (set 2)", GAME_FLAGS ) + +GAME( 199?, j6cshrd , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6cshrda , j6cshrd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6cshrdb , j6cshrd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6cshrdc , j6cshrd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6cshrdd , j6cshrd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Cash Raider (Ace) (IMPACT) (set 5)", GAME_FLAGS ) + +GAME( 199?, j6cshtwr , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Towers (JPM) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6cshvgs , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6cshvgsa , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6cshvgsb , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6cshvgsc , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6cshvgsd , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6cshvgse , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6cshvgsf , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6cshvgsg , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6cshvgsh , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6cshvgsi , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6cshvgsj , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6cshvgsk , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 12)", GAME_FLAGS ) +GAME( 199?, j6cshvgsl , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 13)", GAME_FLAGS ) +GAME( 199?, j6cshvgsm , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 14)", GAME_FLAGS ) +GAME( 199?, j6cshvgsn , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 15)", GAME_FLAGS ) +GAME( 199?, j6cshvgso , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 16)", GAME_FLAGS ) +GAME( 199?, j6cshvgsp , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 17)", GAME_FLAGS ) +GAME( 199?, j6cshvgsq , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 18)", GAME_FLAGS ) +GAME( 199?, j6cshvgsr , j6cshvgs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cash Vegas Strip (JPM) (IMPACT) (set 19)", GAME_FLAGS ) + + +GAME( 199?, j6cas5 , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6cas5a , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6cas5b , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6cas5c , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6cas5d , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6cas5e , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6cas5f , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6cas5g , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6cas5h , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6cas5i , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6cas5j , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6cas5k , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 12)", GAME_FLAGS ) +GAME( 199?, j6cas5l , j6cas5 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino 5ive Liner (JPM) (IMPACT) (set 13)", GAME_FLAGS ) + + +GAMEL( 199?, j6cascz , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6cascza , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczb , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczc , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczd , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6cascze , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczf , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczg , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczh , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczi , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczj , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczk , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczl , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6cascze ) +GAMEL( 199?, j6casczm , j6cascz , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy (JPM) (IMPACT) (set 14)", GAME_FLAGS, layout_j6cascze ) + + +GAME( 199?, j6cccla , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6ccclaa , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6ccclab , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6ccclac , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6ccclad , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6ccclae , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6ccclaf , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6ccclag , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6ccclah , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6ccclai , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6ccclaj , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6ccclak , j6cccla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic (JPM) (IMPACT) (set 12)", GAME_FLAGS ) + +GAMEL( 199?, j6cascla , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclaa , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclab , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclac , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclad , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclae , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclaf , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclag , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclah , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclai , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclaj , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclak , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclal , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclam , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 14)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclan , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 15)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclao , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 16)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclap , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 17)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclaq , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 18)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclar , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 19)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclas , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 20)", GAME_FLAGS, layout_j6casclaf ) +GAMEL( 199?, j6casclat , j6cascla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Classic Club (JPM) (IMPACT) (set 21)", GAME_FLAGS, layout_j6casclaf ) + +GAME( 199?, j6casclb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6casclba , j6casclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Crazy Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) + +GAME( 199?, j6caslas , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Las Vegas (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6caslasa , j6caslas , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Las Vegas (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6caslasb , j6caslas , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Las Vegas (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6caslasc , j6caslas , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Casino Las Vegas (JPM) (IMPACT) (set 4)", GAME_FLAGS ) + +GAME( 199?, j6cheque , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cheque Mate (JPM) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6cluclb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6cluclba , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6cluclbb , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6cluclbc , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6cluclbd , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6cluclbe , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6cluclbf , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6cluclbg , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6cluclbh , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6cluclbi , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6cluclbj , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6cluclbk , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 12)", GAME_FLAGS ) +GAME( 199?, j6cluclbl , j6cluclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cluedo Club (JPM) (IMPACT) (set 13)", GAME_FLAGS ) + + +GAME( 199?, j6col , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6cola , j6col , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6colb , j6col , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6colc , j6col , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6cold , j6col , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6cole , j6col , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6colf , j6col , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Mdm", "Coliseum (Mdm) (IMPACT) (set 7)", GAME_FLAGS ) // seems like the same game as some of the roms in the above, they're probably mixed up, or the same thing -GAMEL( 199?, j6colcsh , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6colcsh ) -GAMEL( 199?, j6colcsha , j6colcsh , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6colcsh ) -GAMEL( 199?, j6colcshb , j6colcsh , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6colcsh ) -GAMEL( 199?, j6colcshc , j6colcsh , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6colcsh ) -GAMEL( 199?, j6colcshd , j6colcsh , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6colcsh ) +GAMEL( 199?, j6colcsh , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6colcsh ) +GAMEL( 199?, j6colcsha , j6colcsh , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6colcsh ) +GAMEL( 199?, j6colcshb , j6colcsh , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6colcsh ) +GAMEL( 199?, j6colcshc , j6colcsh , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6colcsh ) +GAMEL( 199?, j6colcshd , j6colcsh , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Coliseum Cash (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6colcsh ) -GAME( 199?, j6colmon , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6colmona , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6colmonb , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6colmonc , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6colmond , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6colmone , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6colmonf , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6colmong , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6colmonh , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6colmoni , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6colmonj , j6colmon , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6colmon , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6colmona , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6colmonb , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6colmonc , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6colmond , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6colmone , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6colmonf , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6colmong , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6colmonh , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6colmoni , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6colmonj , j6colmon , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Colour Of Money (JPM) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6coprob , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6coproba , j6coprob , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6coprobb , j6coprob , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6coprobc , j6coprob , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6coprobd , j6coprob , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6coprobe , j6coprob , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6coprob , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6coproba , j6coprob , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6coprobb , j6coprob , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6coprobc , j6coprob , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6coprobd , j6coprob , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6coprobe , j6coprob , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Cops 'n' Robbers (Qps) (IMPACT) (set 6)", GAME_FLAGS ) -GAMEL( 199?, j6crack , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6cracka , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6crackb , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6crackc , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6crackd , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6cracke , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6crackf , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6crackg , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6crackh , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6cracki , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6crack ) -GAMEL( 199?, j6crackj , j6crack , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6crack , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6cracka , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6crackb , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6crackc , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6crackd , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6cracke , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6crackf , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6crackg , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6crackh , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6cracki , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6crack ) +GAMEL( 199?, j6crackj , j6crack , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cracker (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6crack ) -GAME( 199?, j6crzclb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Crazy Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6crzclba , j6crzclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Crazy Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6crzclbb , j6crzclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Crazy Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6crzclbc , j6crzclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Crazy Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6crzclb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Crazy Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6crzclba , j6crzclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Crazy Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6crzclbb , j6crzclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Crazy Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6crzclbc , j6crzclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Crazy Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6crsfir , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cross Fire (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6crsfira , j6crsfir , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Cross Fire (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6crsfir , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cross Fire (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6crsfira , j6crsfir , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Cross Fire (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6daygld , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6dayglda , j6daygld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6daygldb , j6daygld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6daygldc , j6daygld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6daygldd , j6daygld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6dayglde , j6daygld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6daygld , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6dayglda , j6daygld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6daygldb , j6daygld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6daygldc , j6daygld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6daygldd , j6daygld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6dayglde , j6daygld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Daytona Gold (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6dayml , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Daytona Millennium (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6daymla , j6dayml , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Daytona Millennium (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6daymlb , j6dayml , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Daytona Millennium (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6dayml , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Daytona Millennium (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6daymla , j6dayml , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Daytona Millennium (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6daymlb , j6dayml , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Daytona Millennium (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6dmnjkr , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Demon Jokers (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6dmnjkra , j6dmnjkr , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Demon Jokers (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6dmnjkrb , j6dmnjkr , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Demon Jokers (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6dmnjkrc , j6dmnjkr , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Demon Jokers (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6reddmn , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Demon (JPM) (IMPACT)", GAME_FLAGS ) // the same as Demon Jokers but with a different sound rom? +GAME( 199?, j6dmnjkr , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Demon Jokers (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6dmnjkra , j6dmnjkr , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Demon Jokers (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6dmnjkrb , j6dmnjkr , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Demon Jokers (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6dmnjkrc , j6dmnjkr , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Demon Jokers (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6reddmn , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Demon (JPM) (IMPACT)", GAME_FLAGS ) // the same as Demon Jokers but with a different sound rom? -GAME( 199?, j6dmngz , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Diamond Geezer (JPM) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6dmngz , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Diamond Geezer (JPM) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6dyfl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6dyfla , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6dyflb , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6dyflc , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6dyfld , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6dyfle , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6dyflf , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6dyflg , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6dyflh , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6dyfli , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6dyflj , j6dyfl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6dyfl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6dyfla , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6dyflb , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6dyflc , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6dyfld , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6dyfle , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6dyflf , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6dyflg , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6dyflh , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6dyfli , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6dyflj , j6dyfl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Do You Feel Lucky (JPM) (IMPACT) (set 11)", GAME_FLAGS ) -GAMEL( 199?, j6drdogh , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Dr Dough (Qps) (IMPACT)", GAME_FLAGS, layout_j6drdogh ) +GAMEL( 199?, j6drdogh , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Dr Dough (Qps) (IMPACT)", GAME_FLAGS, layout_j6drdogh ) -GAMEL( 199?, j6euphor , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 1)", GAME_FLAGS, layout_j6euphor ) -GAMEL( 199?, j6euphora , j6euphor , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 2)", GAME_FLAGS, layout_j6euphor ) -GAMEL( 199?, j6euphorb , j6euphor , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 3)", GAME_FLAGS, layout_j6euphor ) -GAMEL( 199?, j6euphorc , j6euphor , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 4)", GAME_FLAGS, layout_j6euphor ) -GAMEL( 199?, j6euphord , j6euphor , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 5)", GAME_FLAGS, layout_j6euphor ) -GAMEL( 199?, j6euphore , j6euphor , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 6)", GAME_FLAGS, layout_j6euphor ) -GAMEL( 199?, j6euphorf , j6euphor , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 7)", GAME_FLAGS, layout_j6euphor ) +GAMEL( 199?, j6euphor , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 1)", GAME_FLAGS, layout_j6euphor ) +GAMEL( 199?, j6euphora , j6euphor , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 2)", GAME_FLAGS, layout_j6euphor ) +GAMEL( 199?, j6euphorb , j6euphor , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 3)", GAME_FLAGS, layout_j6euphor ) +GAMEL( 199?, j6euphorc , j6euphor , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 4)", GAME_FLAGS, layout_j6euphor ) +GAMEL( 199?, j6euphord , j6euphor , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 5)", GAME_FLAGS, layout_j6euphor ) +GAMEL( 199?, j6euphore , j6euphor , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 6)", GAME_FLAGS, layout_j6euphor ) +GAMEL( 199?, j6euphorf , j6euphor , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Euphoria (Ace) (IMPACT) (set 7)", GAME_FLAGS, layout_j6euphor ) -GAMEL( 199?, j6fastfr , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Fast Fruits Club (Qps) (IMPACT) (set 1)", GAME_FLAGS, layout_j6fastfr ) -GAMEL( 199?, j6fastfra , j6fastfr , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Fast Fruits Club (Qps) (IMPACT) (set 2)", GAME_FLAGS, layout_j6fastfr ) +GAMEL( 199?, j6fastfr , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Fast Fruits Club (Qps) (IMPACT) (set 1)", GAME_FLAGS, layout_j6fastfr ) +GAMEL( 199?, j6fastfra , j6fastfr , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Fast Fruits Club (Qps) (IMPACT) (set 2)", GAME_FLAGS, layout_j6fastfr ) -GAME( 199?, j6fasttk , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Fast Trak (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6fasttka , j6fasttk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Fast Trak (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6fasttkb , j6fasttk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Fast Trak (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6fasttkc , j6fasttk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Fast Trak (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6fasttk , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Fast Trak (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6fasttka , j6fasttk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Fast Trak (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6fasttkb , j6fasttk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Fast Trak (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6fasttkc , j6fasttk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Fast Trak (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6filth , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Filthy Rich Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6filtha , j6filth , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Filthy Rich Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6filthb , j6filth , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Filthy Rich Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6filthc , j6filth , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Filthy Rich Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6filth , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Filthy Rich Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6filtha , j6filth , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Filthy Rich Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6filthb , j6filth , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Filthy Rich Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6filthc , j6filth , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Filthy Rich Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6firbl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6firbla , j6firbl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6firblb , j6firbl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6firblc , j6firbl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6firbld , j6firbl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6firbl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6firbla , j6firbl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6firblb , j6firbl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6firblc , j6firbl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6firbld , j6firbl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Fireball (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6fireck , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6firecka , j6fireck , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6fireckb , j6fireck , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6fireckc , j6fireck , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6fireckd , j6fireck , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6firecke , j6fireck , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6fireck , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6firecka , j6fireck , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6fireckb , j6fireck , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6fireckc , j6fireck , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6fireckd , j6fireck , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6firecke , j6fireck , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6firclb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6firclba , j6firclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6firclbb , j6firclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6firclbc , j6firclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Firecracker Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6firclb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6firclba , j6firclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6firclbb , j6firclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6firclbc , j6firclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Firecracker Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6fivalv , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Five Alive Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6fivalva , j6fivalv , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Five Alive Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6fivalvb , j6fivalv , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Five Alive Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6fivalv , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Five Alive Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6fivalva , j6fivalv , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Five Alive Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6fivalvb , j6fivalv , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Five Alive Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6fiveln , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Five Liner (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6fivelna , j6fiveln , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Five Liner (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6fivelnb , j6fiveln , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Five Liner (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6fivelnc , j6fiveln , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Five Liner (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6fiveln , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Five Liner (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6fivelna , j6fiveln , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Five Liner (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6fivelnb , j6fiveln , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Five Liner (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6fivelnc , j6fiveln , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Five Liner (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6frc10 , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6frc10a , j6frc10 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6frc10b , j6frc10 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6frc10c , j6frc10 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6frc10d , j6frc10 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6frc10 , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6frc10a , j6frc10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6frc10b , j6frc10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6frc10c , j6frc10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6frc10d , j6frc10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Force 10 (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6framft , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Frame & Fortune Club (JPM) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6framft , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Frame & Fortune Club (JPM) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6frtmch , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "The Fruit Machine (JPM) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6frtmch , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "The Fruit Machine (JPM) (IMPACT)", GAME_FLAGS ) -GAMEL( 199?, j6frtpot , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Fruitpots (Qps) (IMPACT) (set 1)", GAME_FLAGS, layout_j6frtpot ) -GAMEL( 199?, j6frtpota , j6frtpot , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Fruitpots (Qps) (IMPACT) (set 2)", GAME_FLAGS, layout_j6frtpot ) -GAMEL( 199?, j6frtpotb , j6frtpot , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Fruitpots (Qps) (IMPACT) (set 3)", GAME_FLAGS, layout_j6frtpot ) -GAMEL( 199?, j6frtpotc , j6frtpot , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Fruitpots (Qps) (IMPACT) (set 4)", GAME_FLAGS, layout_j6frtpot ) +GAMEL( 199?, j6frtpot , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Fruitpots (Qps) (IMPACT) (set 1)", GAME_FLAGS, layout_j6frtpot ) +GAMEL( 199?, j6frtpota , j6frtpot , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Fruitpots (Qps) (IMPACT) (set 2)", GAME_FLAGS, layout_j6frtpot ) +GAMEL( 199?, j6frtpotb , j6frtpot , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Fruitpots (Qps) (IMPACT) (set 3)", GAME_FLAGS, layout_j6frtpot ) +GAMEL( 199?, j6frtpotc , j6frtpot , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Fruitpots (Qps) (IMPACT) (set 4)", GAME_FLAGS, layout_j6frtpot ) -GAME( 199?, j6gforce , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6gforcea , j6gforce , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6gforceb , j6gforce , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6gforcec , j6gforce , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6gforced , j6gforce , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (15GBP Jackpot)", GAME_FLAGS ) +GAME( 199?, j6gforce , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6gforcea , j6gforce , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6gforceb , j6gforce , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6gforcec , j6gforce , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6gforced , j6gforce , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "G Force (JPM) (IMPACT) (15GBP Jackpot)", GAME_FLAGS ) -GAME( 199?, j6gldday , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Day (JPM) (IMPACT)", GAME_FLAGS ) // this is the same as j6dmnjkra +GAME( 199?, j6gldday , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Day (JPM) (IMPACT)", GAME_FLAGS ) // this is the same as j6dmnjkra -GAMEL( 199?, j6gidogh , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "G.I. Dough (Ace) (IMPACT)", GAME_FLAGS, layout_j6gidogh ) +GAMEL( 199?, j6gidogh , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "G.I. Dough (Ace) (IMPACT)", GAME_FLAGS, layout_j6gidogh ) -GAMEL( 199?, j6guab , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6guabc ) -GAMEL( 199?, j6guaba , j6guab , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6guabc ) -GAMEL( 199?, j6guabb , j6guab , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6guabc ) -GAMEL( 199?, j6guabc , j6guab , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6guabc ) -GAMEL( 199?, j6guabd , j6guab , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6guabc ) -GAMEL( 199?, j6guabe , j6guab , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6guabc ) -GAMEL( 199?, j6guabf , j6guab , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6guabc ) +GAMEL( 199?, j6guab , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6guabc ) +GAMEL( 199?, j6guaba , j6guab , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6guabc ) +GAMEL( 199?, j6guabb , j6guab , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6guabc ) +GAMEL( 199?, j6guabc , j6guab , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6guabc ) +GAMEL( 199?, j6guabd , j6guab , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6guabc ) +GAMEL( 199?, j6guabe , j6guab , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6guabc ) +GAMEL( 199?, j6guabf , j6guab , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Give Us A Break (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6guabc ) -GAMEL( 199?, j6guabcl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Give Us A Break Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6guabcl ) -GAMEL( 199?, j6guabcla , j6guabcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Give Us A Break Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6guabcl ) +GAMEL( 199?, j6guabcl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Give Us A Break Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6guabcl ) +GAMEL( 199?, j6guabcla , j6guabcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Give Us A Break Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6guabcl ) -GAMEL( 199?, j6gldclb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Gladiator Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6gldclb ) -GAMEL( 199?, j6gldclba , j6gldclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Gladiator Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6gldclb ) -GAMEL( 199?, j6gldclbb , j6gldclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Gladiator Club (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6gldclb ) +GAMEL( 199?, j6gldclb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Gladiator Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6gldclb ) +GAMEL( 199?, j6gldclba , j6gldclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Gladiator Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6gldclb ) +GAMEL( 199?, j6gldclbb , j6gldclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Gladiator Club (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6gldclb ) -GAME( 199?, j6gldmin , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Gold Mine (Empire) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6gldmin , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Gold Mine (Empire) (IMPACT)", GAME_FLAGS ) -GAMEL( 199?, j6gogold , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Go For Gold (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6gogold ) -GAMEL( 199?, j6gogolda , j6gogold , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Go For Gold (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6gogold ) -GAMEL( 199?, j6gogoldb , j6gogold , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Go For Gold (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6gogold ) -GAMEL( 199?, j6gogoldc , j6gogold , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Go For Gold (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6gogold ) +GAMEL( 199?, j6gogold , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Go For Gold (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6gogold ) +GAMEL( 199?, j6gogolda , j6gogold , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Go For Gold (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6gogold ) +GAMEL( 199?, j6gogoldb , j6gogold , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Go For Gold (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6gogold ) +GAMEL( 199?, j6gogoldc , j6gogold , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Go For Gold (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6gogold ) -GAME( 199?, j6golddm , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Demons (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6golddma , j6golddm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Demons (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6golddm , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Demons (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6golddma , j6golddm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Demons (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAMEL( 199?, j6goldgl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldgla , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldglb , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldglc , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldgld , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldgle , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldglf , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldglg , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldglh , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldgli , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldglj , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldglk , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6goldgll , j6goldgl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldgl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldgla , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldglb , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldglc , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldgld , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldgle , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldglf , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldglg , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldglh , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldgli , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldglj , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldglk , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6goldgla ) +GAMEL( 199?, j6goldgll , j6goldgl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Golden Goal (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6goldgla ) -GAMEL( 199?, j6hapyhr , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Happy Hour (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6hapyhrb ) -GAMEL( 199?, j6hapyhra , j6hapyhr , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Happy Hour (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6hapyhrb ) -GAMEL( 199?, j6hapyhrb , j6hapyhr , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Happy Hour (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6hapyhrb ) +GAMEL( 199?, j6hapyhr , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Happy Hour (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6hapyhrb ) +GAMEL( 199?, j6hapyhra , j6hapyhr , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Happy Hour (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6hapyhrb ) +GAMEL( 199?, j6hapyhrb , j6hapyhr , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Happy Hour (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6hapyhrb ) -GAME( 199?, j6hifly , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hi Flyer (Crystal) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6hifly , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hi Flyer (Crystal) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6impact , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Impact (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6impacta , j6impact , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Impact (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6impactb , j6impact , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Impact (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6impactc , j6impact , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Impact (JPM) (IMPACT) (15GBP Jackpot)", GAME_FLAGS ) +GAME( 199?, j6impact , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Impact (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6impacta , j6impact , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Impact (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6impactb , j6impact , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Impact (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6impactc , j6impact , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Impact (JPM) (IMPACT) (15GBP Jackpot)", GAME_FLAGS ) -GAME( 199?, j6hilosv , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6hilosva , j6hilosv , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6hilosvb , j6hilosv , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6hilosvc , j6hilosv , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6hilosvd , j6hilosv , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 5)", GAME_FLAGS ) // incomplete pair -GAME( 199?, j6hilosve , j6hilosv , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 6)", GAME_FLAGS ) // incomplete pair +GAME( 199?, j6hilosv , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6hilosva , j6hilosv , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6hilosvb , j6hilosv , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6hilosvc , j6hilosv , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6hilosvd , j6hilosv , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 5)", GAME_FLAGS ) // incomplete pair +GAME( 199?, j6hilosve , j6hilosv , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (IMPACT) (set 6)", GAME_FLAGS ) // incomplete pair -GAME( 199?, j6hirol , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6hirola , j6hirol , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6hirolb , j6hirol , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6hirolc , j6hirol , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6hirold , j6hirol , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6hirol , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6hirola , j6hirol , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6hirolb , j6hirol , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6hirolc , j6hirol , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6hirold , j6hirol , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Roller (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6hirlcl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Roller Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6hirlcla , j6hirlcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Roller Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6hirlclb , j6hirlcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Roller Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6hirlclc , j6hirlcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Hi Roller Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6hirlcl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Roller Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6hirlcla , j6hirlcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Roller Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6hirlclb , j6hirlcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Roller Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6hirlclc , j6hirlcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Hi Roller Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6histk , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Hi Stakes (Qps) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6histka , j6histk , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Hi Stakes (Qps) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6histk , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Hi Stakes (Qps) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6histka , j6histk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Hi Stakes (Qps) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6hiphop , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6hiphopa , j6hiphop , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6hiphopb , j6hiphop , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6hiphopc , j6hiphop , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6hiphopd , j6hiphop , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 5)", GAME_FLAGS ) - - -GAME( 199?, j6hotsht , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6hotshta , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6hotshtb , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6hotshtc , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6hotshtd , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6hotshte , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6hotshtf , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6hotshtg , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6hotshth , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6hotshti , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6hotshtj , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6hotshtk , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 12)", GAME_FLAGS ) -GAME( 199?, j6hotshtl , j6hotsht , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 13)", GAME_FLAGS ) - - -GAMEL( 199?, j6impuls , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6impulsc ) -GAMEL( 199?, j6impulsa , j6impuls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6impulsc ) -GAMEL( 199?, j6impulsb , j6impuls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6impulsc ) -GAMEL( 199?, j6impulsc , j6impuls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6impulsc ) -GAMEL( 199?, j6impulsd , j6impuls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6impulsc ) -GAMEL( 199?, j6impulse , j6impuls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6impulsc ) -GAMEL( 199?, j6impulsf , j6impuls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6impulsc ) +GAME( 199?, j6hiphop , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6hiphopa , j6hiphop , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6hiphopb , j6hiphop , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6hiphopc , j6hiphop , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6hiphopd , j6hiphop , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hip Hopper (Ace) (IMPACT) (set 5)", GAME_FLAGS ) + + +GAME( 199?, j6hotsht , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6hotshta , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6hotshtb , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6hotshtc , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6hotshtd , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6hotshte , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6hotshtf , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6hotshtg , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6hotshth , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6hotshti , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6hotshtj , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6hotshtk , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 12)", GAME_FLAGS ) +GAME( 199?, j6hotshtl , j6hotsht , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Hot Shot (Ace) (IMPACT) (set 13)", GAME_FLAGS ) + + +GAMEL( 199?, j6impuls , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6impulsc ) +GAMEL( 199?, j6impulsa , j6impuls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6impulsc ) +GAMEL( 199?, j6impulsb , j6impuls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6impulsc ) +GAMEL( 199?, j6impulsc , j6impuls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6impulsc ) +GAMEL( 199?, j6impulsd , j6impuls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6impulsc ) +GAMEL( 199?, j6impulse , j6impuls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6impulsc ) +GAMEL( 199?, j6impulsf , j6impuls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Impulse (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6impulsc ) -GAMEL( 199?, j6indy , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indya , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyb , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyc , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyd , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indye , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyf , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyg , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyh , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyi , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyj , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyk , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6indyi ) -GAMEL( 199?, j6indyge , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT, German set 1)", GAME_FLAGS, layout_j6indyi ) // was marked as Sys5 'Indy 500' but is clearly IMPACT and has Indiana Jones / Holy Grail strings (might be a different game to the english set) -GAMEL( 199?, j6indyge2 , j6indy , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT, German set 2)", GAME_FLAGS, layout_j6indyi ) - -GAME( 199?, j6showtm , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6showtma , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6showtmb , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6showtmc , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6showtmd , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6showtme , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6showtmf , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6showtmg , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6showtmh , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6showtmi , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6showtmj , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6showtmk , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 12)", GAME_FLAGS ) -GAME( 199?, j6showtml , j6showtm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 13)", GAME_FLAGS ) - -GAME( 199?, j6jackjs , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Jackpot Justice (Qps) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6jackjsa , j6jackjs , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Jackpot Justice (Qps) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6jackjsb , j6jackjs , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Jackpot Justice (Qps) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6jackjsc , j6jackjs , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Jackpot Justice (Qps) (IMPACT) (set 4)", GAME_FLAGS ) - -GAME( 199?, j6jkrgld , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6jkrpls , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6jkrplsa , j6jkrpls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6jkrplsb , j6jkrpls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6jkrplsc , j6jkrpls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6jkrplsd , j6jkrpls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6jkrplse , j6jkrpls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 6)", GAME_FLAGS ) - -GAME( 199?, j6jkpldx , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Plus Deluxe (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6jkpldxa , j6jkpldx , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Plus Deluxe (JPM) (IMPACT) (set 2)", GAME_FLAGS ) - - -GAME( 199?, j6jkwld , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Jokers Wild (JPM) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6jungfv , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Jungle Fever (Ace) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6kamel , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Kameleon (JPM) (IMPACT)", GAME_FLAGS ) - -GAMEL( 199?, j6kungfu , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 1)", GAME_FLAGS, layout_j6kungfud ) -GAMEL( 199?, j6kungfua , j6kungfu , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 2)", GAME_FLAGS, layout_j6kungfud ) -GAMEL( 199?, j6kungfub , j6kungfu , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 3)", GAME_FLAGS, layout_j6kungfud ) -GAMEL( 199?, j6kungfuc , j6kungfu , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 4)", GAME_FLAGS, layout_j6kungfud ) -GAMEL( 199?, j6kungfud , j6kungfu , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 5)", GAME_FLAGS, layout_j6kungfud ) - - -GAME( 199?, j6luckla , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Lucky Las Vegas (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6lucklaa , j6luckla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Lucky Las Vegas (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6lucklab , j6luckla , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Lucky Las Vegas (JPM) (IMPACT) (set 3)", GAME_FLAGS ) - -GAME( 199?, j6magcir , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6magcira , j6magcir , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6magcirb , j6magcir , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6magcirc , j6magcir , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6magcird , j6magcir , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) - - -GAME( 199?, j6mavrk , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6mavrka , j6mavrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6mavrkb , j6mavrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6mavrkc , j6mavrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6mavrkd , j6mavrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 5)", GAME_FLAGS ) - -GAME( 199?, j6maxod , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maximum Overdrive (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6maxoda , j6maxod , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maximum Overdrive (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6maxodb , j6maxod , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maximum Overdrive (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6maxodc , j6maxod , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maximum Overdrive (JPM) (IMPACT) (set 4)", GAME_FLAGS ) - -GAME( 199?, j6maxcsh , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Maximus Cash (JPM) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6medal , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6medala , j6medal , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6medalb , j6medal , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6medalc , j6medal , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6medald , j6medal , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 5)", GAME_FLAGS ) - - -GAMEL( 199?, j6megbck , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6megbck ) -GAMEL( 199?, j6megbcka , j6megbck , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6megbck ) -GAMEL( 199?, j6megbckb , j6megbck , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6megbck ) -GAMEL( 199?, j6megbckc , j6megbck , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6megbck ) -GAMEL( 199?, j6megbckd , j6megbck , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6megbck ) - -GAME( 199?, j6monmad , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Money Madness (Ace) (IMPACT)", GAME_FLAGS ) - - -GAMEL( 199?, j6montlk , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6montlkb ) -GAMEL( 199?, j6montlka , j6montlk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6montlkb ) -GAMEL( 199?, j6montlkb , j6montlk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6montlkb ) -GAMEL( 199?, j6montlkc , j6montlk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6montlkb ) -GAMEL( 199?, j6montlkd , j6montlk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6montlkb ) -GAMEL( 199?, j6montlke , j6montlk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6montlkb ) -GAMEL( 199?, j6montlkf , j6montlk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6montlkb ) -GAMEL( 199?, j6montlkg , j6montlk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6montlkb ) -GAMEL( 199?, j6montlkh , j6montlk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6montlkb ) - - -GAMEL( 199?, j6mono60 , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60a , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60b , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60c , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60d , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60e , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60f , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60g , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60h , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60i , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60j , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60k , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6mono60 ) -GAMEL( 199?, j6mono60l , j6mono60 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6indy , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indya , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyb , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyc , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyd , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indye , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyf , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyg , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyh , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyi , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyj , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyk , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6indyi ) +GAMEL( 199?, j6indyge , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT, German set 1)", GAME_FLAGS, layout_j6indyi ) // was marked as Sys5 'Indy 500' but is clearly IMPACT and has Indiana Jones / Holy Grail strings (might be a different game to the english set) +GAMEL( 199?, j6indyge2 , j6indy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Indiana Jones (JPM) (IMPACT, German set 2)", GAME_FLAGS, layout_j6indyi ) + +GAME( 199?, j6showtm , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6showtma , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6showtmb , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6showtmc , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6showtmd , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6showtme , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6showtmf , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6showtmg , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6showtmh , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6showtmi , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6showtmj , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6showtmk , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 12)", GAME_FLAGS ) +GAME( 199?, j6showtml , j6showtm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "It's Showtime (JPM) (IMPACT) (set 13)", GAME_FLAGS ) + +GAME( 199?, j6jackjs , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Jackpot Justice (Qps) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6jackjsa , j6jackjs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Jackpot Justice (Qps) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6jackjsb , j6jackjs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Jackpot Justice (Qps) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6jackjsc , j6jackjs , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Jackpot Justice (Qps) (IMPACT) (set 4)", GAME_FLAGS ) + +GAME( 199?, j6jkrgld , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6jkrpls , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6jkrplsa , j6jkrpls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6jkrplsb , j6jkrpls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6jkrplsc , j6jkrpls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6jkrplsd , j6jkrpls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6jkrplse , j6jkrpls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Plus (JPM) (IMPACT) (set 6)", GAME_FLAGS ) + +GAME( 199?, j6jkpldx , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Plus Deluxe (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6jkpldxa , j6jkpldx , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Plus Deluxe (JPM) (IMPACT) (set 2)", GAME_FLAGS ) + + +GAME( 199?, j6jkwld , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Jokers Wild (JPM) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6jungfv , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Jungle Fever (Ace) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6kamel , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Kameleon (JPM) (IMPACT)", GAME_FLAGS ) + +GAMEL( 199?, j6kungfu , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 1)", GAME_FLAGS, layout_j6kungfud ) +GAMEL( 199?, j6kungfua , j6kungfu , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 2)", GAME_FLAGS, layout_j6kungfud ) +GAMEL( 199?, j6kungfub , j6kungfu , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 3)", GAME_FLAGS, layout_j6kungfud ) +GAMEL( 199?, j6kungfuc , j6kungfu , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 4)", GAME_FLAGS, layout_j6kungfud ) +GAMEL( 199?, j6kungfud , j6kungfu , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Kung Fu (Ace) (IMPACT) (set 5)", GAME_FLAGS, layout_j6kungfud ) + + +GAME( 199?, j6luckla , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Lucky Las Vegas (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6lucklaa , j6luckla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Lucky Las Vegas (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6lucklab , j6luckla , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Lucky Las Vegas (JPM) (IMPACT) (set 3)", GAME_FLAGS ) + +GAME( 199?, j6magcir , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6magcira , j6magcir , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6magcirb , j6magcir , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6magcirc , j6magcir , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6magcird , j6magcir , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Magic Circle Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) + + +GAME( 199?, j6mavrk , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6mavrka , j6mavrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6mavrkb , j6mavrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6mavrkc , j6mavrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6mavrkd , j6mavrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maverick (JPM) (IMPACT) (set 5)", GAME_FLAGS ) + +GAME( 199?, j6maxod , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maximum Overdrive (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6maxoda , j6maxod , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maximum Overdrive (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6maxodb , j6maxod , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maximum Overdrive (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6maxodc , j6maxod , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maximum Overdrive (JPM) (IMPACT) (set 4)", GAME_FLAGS ) + +GAME( 199?, j6maxcsh , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Maximus Cash (JPM) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6medal , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6medala , j6medal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6medalb , j6medal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6medalc , j6medal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6medald , j6medal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Medallion Job (Qps) (IMPACT) (set 5)", GAME_FLAGS ) + + +GAMEL( 199?, j6megbck , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6megbck ) +GAMEL( 199?, j6megbcka , j6megbck , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6megbck ) +GAMEL( 199?, j6megbckb , j6megbck , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6megbck ) +GAMEL( 199?, j6megbckc , j6megbck , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6megbck ) +GAMEL( 199?, j6megbckd , j6megbck , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Mega Bucks (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6megbck ) + +GAME( 199?, j6monmad , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Money Madness (Ace) (IMPACT)", GAME_FLAGS ) + + +GAMEL( 199?, j6montlk , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6montlkb ) +GAMEL( 199?, j6montlka , j6montlk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6montlkb ) +GAMEL( 199?, j6montlkb , j6montlk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6montlkb ) +GAMEL( 199?, j6montlkc , j6montlk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6montlkb ) +GAMEL( 199?, j6montlkd , j6montlk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6montlkb ) +GAMEL( 199?, j6montlke , j6montlk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6montlkb ) +GAMEL( 199?, j6montlkf , j6montlk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6montlkb ) +GAMEL( 199?, j6montlkg , j6montlk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6montlkb ) +GAMEL( 199?, j6montlkh , j6montlk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Money Talks (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6montlkb ) + + +GAMEL( 199?, j6mono60 , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60a , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60b , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60c , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60d , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60e , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60f , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60g , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60h , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60i , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60j , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60k , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6mono60 ) +GAMEL( 199?, j6mono60l , j6mono60 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6mono60 ) -GAME( 199?, j6monobn , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly Bingo (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6monobna , j6monobn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly Bingo (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6monobnb , j6monobn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Monopoly Bingo (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6monobn , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly Bingo (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6monobna , j6monobn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly Bingo (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6monobnb , j6monobn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Monopoly Bingo (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6outlaw , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Outlaw (JPM) (IMPACT, v3)", GAME_FLAGS ) -GAME( 199?, j6outlawd , j6outlaw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Outlaw (JPM) (IMPACT, v3) (Protocol)", GAME_FLAGS ) -GAME( 199?, j6outlawc , j6outlaw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Outlaw (JPM) (IMPACT, Club?)", GAME_FLAGS ) +GAME( 199?, j6outlaw , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Outlaw (JPM) (IMPACT, v3)", GAME_FLAGS ) +GAME( 199?, j6outlawd , j6outlaw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Outlaw (JPM) (IMPACT, v3) (Protocol)", GAME_FLAGS ) +GAME( 199?, j6outlawc , j6outlaw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Outlaw (JPM) (IMPACT, Club?)", GAME_FLAGS ) -GAME( 199?, j6oxo , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6oxoa , j6oxo , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6oxob , j6oxo , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6oxoc , j6oxo , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6oxod , j6oxo , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6oxoe , j6oxo , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6oxo , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6oxoa , j6oxo , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6oxob , j6oxo , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6oxoc , j6oxo , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6oxod , j6oxo , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6oxoe , j6oxo , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAMEL( 199?, j6oxobin , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6oxobin ) -GAMEL( 199?, j6oxobina , j6oxobin , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6oxobin ) -GAMEL( 199?, j6oxobinb , j6oxobin , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6oxobin ) -GAMEL( 199?, j6oxobinc , j6oxobin , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6oxobin ) -GAMEL( 199?, j6oxobind , j6oxobin , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6oxobin ) -GAMEL( 199?, j6oxobine , j6oxobin , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6oxobin ) -GAMEL( 199?, j6oxobinf , j6oxobin , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6oxobin ) +GAMEL( 199?, j6oxobin , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6oxobin ) +GAMEL( 199?, j6oxobina , j6oxobin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6oxobin ) +GAMEL( 199?, j6oxobinb , j6oxobin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6oxobin ) +GAMEL( 199?, j6oxobinc , j6oxobin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6oxobin ) +GAMEL( 199?, j6oxobind , j6oxobin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6oxobin ) +GAMEL( 199?, j6oxobine , j6oxobin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6oxobin ) +GAMEL( 199?, j6oxobinf , j6oxobin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Oxo Bingo (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6oxobin ) - -GAME( 199?, j6pacman , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Pac Man Plus (Qps) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6papa , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6papaa , j6papa , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6papab , j6papa , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6papac , j6papa , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6papad , j6papa , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6papae , j6papa , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6papaf , j6papa , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 7)", GAME_FLAGS ) - - -GAME( 199?, j6phxgld , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6phxglda , j6phxgld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6phxgldb , j6phxgld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6phxgldc , j6phxgld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6phxgldd , j6phxgld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6phxglde , j6phxgld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6phxgldf , j6phxgld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6phxgldg , j6phxgld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 8)", GAME_FLAGS ) - -GAME( 199?, j6pnxgd , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Gold De Luxe (JPM) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6pnxmil , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Millennium (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6pnxmila , j6pnxmil , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Millennium (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6pnxmilb , j6pnxmil , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Millennium (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6pnxmilc , j6pnxmil , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Phoenix Millennium (JPM) (IMPACT) (set 4)", GAME_FLAGS ) - - -GAME( 199?, j6pinwzd , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6pinwzda , j6pinwzd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6pinwzdb , j6pinwzd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6pinwzdc , j6pinwzd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6pinwzdd , j6pinwzd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6pinwzde , j6pinwzd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6pinwzc , j6pinwzd , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Pinball Wizard (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6pinwzca , j6pinwzd , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Pinball Wizard (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6pinwzcb , j6pinwzd , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Pinball Wizard (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) - -GAME( 199?, j6pirgld , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pirates Gold (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6pirglda , j6pirgld , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pirates Gold (JPM) (IMPACT) (set 2)", GAME_FLAGS ) - -GAME( 199?, j6popoli , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Popeye & Olive (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6popolia , j6popoli , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Popeye & Olive (JPM) (IMPACT) (set 2)", GAME_FLAGS ) - - -GAME( 199?, j6pog , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 1)", GAME_FLAGS ) // has video roms, why? (misplaced? hybrid?) -GAME( 199?, j6poga , j6pog , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6pogb , j6pog , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6pogc , j6pog , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6pogd , j6pog , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 5)", GAME_FLAGS ) - - -GAME( 199?, j6pogcls , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pot Of Gold Classic (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6pogclsa , j6pogcls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pot Of Gold Classic (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6pogclsb , j6pogcls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Pot Of Gold Classic (JPM) (IMPACT) (set 3)", GAME_FLAGS ) - - -GAME( 199?, j6pwrlin , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Power Lines (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6pwrlina , j6pwrlin , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Power Lines (JPM) (IMPACT) (set 2)", GAME_FLAGS ) - - -GAME( 199?, j6pwrspn , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6pwrspna , j6pwrspn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6pwrspnb , j6pwrspn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6pwrspnc , j6pwrspn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6pwrspnd , j6pwrspn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6pwrspne , j6pwrspn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 6)", GAME_FLAGS ) - - -GAME( 199?, j6quantm , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Quantum Leap (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6quantma , j6quantm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Quantum Leap (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6quantmb , j6quantm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Quantum Leap (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6quantmc , j6quantm , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Quantum Leap (JPM) (IMPACT) (set 4)", GAME_FLAGS ) - -GAMEL( 199?, j6quick , 0 , impctawp, tbirds, driver_device, 0, ROT0, "RAL", "Quicksilver (RAL) (IMPACT)", GAME_FLAGS, layout_j6quick ) - -GAME( 199?, j6rager , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert (JPM) [German] (IMPACT)", GAME_FLAGS ) - -GAMEL( 199?, j6ra , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6ra ) -GAMEL( 199?, j6raa , j6ra , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6ra ) -GAMEL( 199?, j6rab , j6ra , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6ra ) -GAMEL( 199?, j6rac , j6ra , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6ra ) -GAMEL( 199?, j6rad , j6ra , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6ra ) - -GAME( 199?, j6raclb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6raclba , j6raclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6raclbb , j6raclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6raclbc , j6raclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6raclbd , j6raclb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) - - -GAMEL( 199?, j6redarw , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwa , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwb , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwc , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwd , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwe , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwf , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwg , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwh , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwi , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarwj , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6redarwf ) -GAMEL( 199?, j6redarww , j6redarw , impctawp, tbirds, driver_device, 0, ROT0, "Whitbread / JPM", "Red Arrow (Whitbread / JPM) (IMPACT)", GAME_FLAGS, layout_j6redarwf ) - -GAME( 2002, j6rh6 , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 2002, j6rh6a , j6rh6 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 2002, j6rh6b , j6rh6 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 2002, j6rh6c , j6rh6 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 2002, j6rh6d , j6rh6 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 2002, j6rh6e , j6rh6 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 6)", GAME_FLAGS ) - - -GAMEL( 199?, j6rhchil , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 1)", GAME_FLAGS, layout_j6rhchil ) -GAMEL( 199?, j6rhchila , j6rhchil , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 2)", GAME_FLAGS, layout_j6rhchil ) -GAMEL( 199?, j6rhchilb , j6rhchil , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 3)", GAME_FLAGS, layout_j6rhchil ) -GAMEL( 199?, j6rhchilc , j6rhchil , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 4)", GAME_FLAGS, layout_j6rhchil ) -GAMEL( 199?, j6rhchild , j6rhchil , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 5)", GAME_FLAGS, layout_j6rhchil ) - - -GAMEL( 199?, j6rh6cl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6rh6cld ) -GAMEL( 199?, j6rh6cla , j6rh6cl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6rh6cld ) -GAMEL( 199?, j6rh6clb , j6rh6cl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6rh6cld ) -GAMEL( 199?, j6rh6clc , j6rh6cl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6rh6cld ) -GAMEL( 199?, j6rh6cld , j6rh6cl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6rh6cld ) - - -GAMEL( 199?, j6reelmn , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6reelmn ) -GAMEL( 199?, j6reelmna , j6reelmn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6reelmn ) -GAMEL( 199?, j6reelmnb , j6reelmn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6reelmn ) -GAMEL( 199?, j6reelmnc , j6reelmn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6reelmn ) -GAMEL( 199?, j6reelmnd , j6reelmn , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6reelmn ) - -GAME( 199?, j6reelth , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Reel Thing (Ace) (IMPACT) set 1)", GAME_FLAGS ) -GAME( 199?, j6reeltha , j6reelth , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Reel Thing (Ace) (IMPACT) set 2)", GAME_FLAGS ) -GAME( 199?, j6reelthb , j6reelth , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Reel Thing (Ace) (IMPACT) set 3)", GAME_FLAGS ) - -GAME( 199?, j6richpk , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Rich Pickings (Ace) (IMPACT)", GAME_FLAGS ) - -GAMEL( 199?, j6rico , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6rico ) -GAMEL( 199?, j6ricoa , j6rico , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6rico ) -GAMEL( 199?, j6ricob , j6rico , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6rico ) -GAMEL( 199?, j6ricoc , j6rico , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6rico ) -GAMEL( 199?, j6ricod , j6rico , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6rico ) -GAMEL( 199?, j6ricoe , j6rico , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6rico ) - -GAME( 199?, j6robin , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Robin Hood (Ace) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6robina , j6robin , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Robin Hood (Ace) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6robinb , j6robin , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Robin Hood (Ace) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6robinc , j6robin , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Robin Hood (Ace) (IMPACT) (set 4)", GAME_FLAGS ) - - -GAMEL( 199?, j6roller , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollera , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerb , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerc , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerd , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollere , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerf , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerg , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerh , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rolleri , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerj , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerk , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerl , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerm , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 14)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollern , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 15)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollero , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 16)", GAME_FLAGS, layout_j6rollerd ) -GAMEL( 199?, j6rollerp , j6roller , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 17)", GAME_FLAGS, layout_j6rollerd ) - - -GAME( 199?, j6rccls , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster Classic (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6rcclsa , j6rccls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster Classic (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6rcclsb , j6rccls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster Classic (JPM) (IMPACT) (set 3)", GAME_FLAGS ) - -GAME( 199?, j6royfls , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6royflsa , j6royfls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6royflsb , j6royfls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6royflsc , j6royfls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6royflsd , j6royfls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6royflse , j6royfls , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 6)", GAME_FLAGS ) - - -GAME( 199?, j6samur , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6samura , j6samur , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6samurb , j6samur , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6samurc , j6samur , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6samurd , j6samur , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) - - -GAME( 199?, j6sidewd , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6sidewda , j6sidewd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6sidewdb , j6sidewd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6sidewdc , j6sidewd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6sidewdd , j6sidewd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6sidewde , j6sidewd , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 6)", GAME_FLAGS ) - - -GAMEL( 199?, j6snakes , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6snakes ) -GAMEL( 199?, j6snakesa , j6snakes , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6snakes ) -GAMEL( 199?, j6snakesb , j6snakes , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6snakes ) -GAMEL( 199?, j6snakesc , j6snakes , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6snakes ) -GAMEL( 199?, j6snakesd , j6snakes , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6snakes ) -GAMEL( 199?, j6snakese , j6snakes , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6snakes ) -GAMEL( 199?, j6snakesf , j6snakes , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6snakes ) -GAMEL( 199?, j6snakesg , j6snakes , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6snakes ) - - -GAME( 199?, j6sonic , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6sonica , j6sonic , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6sonicb , j6sonic , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6sonicc , j6sonic , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6sonicd , j6sonic , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6sonice , j6sonic , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6sonicf , j6sonic , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6sonicg , j6sonic , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6sonich , j6sonic , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 9)", GAME_FLAGS ) // incomplete pair - -GAME( 199?, j6spcinv , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Space Invaders (Crystal) (IMPACT)", GAME_FLAGS ) - -GAMEL( 199?, j6stards , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Stardust (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6stards ) -GAMEL( 199?, j6stardsa , j6stards , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Stardust (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6stards ) -GAMEL( 199?, j6stardsb , j6stards , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Stardust (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6stards ) -GAMEL( 199?, j6stardsc , j6stards , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Stardust (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6stards ) - - -GAME( 199?, j6start , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Starturn (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6starta , j6start , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Starturn (JPM) (IMPACT) (set 2)", GAME_FLAGS ) - -GAME( 199?, j6strk10 , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6strk10a , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6strk10b , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6strk10c , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6strk10d , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6strk10e , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6strk10f , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6strk10g , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6strk10h , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6strk10i , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6strk10j , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6strk10k , j6strk10 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 12)", GAME_FLAGS ) - - -GAME( 199?, j6supbrk , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6supbrka , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6supbrkb , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6supbrkc , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6supbrkd , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6supbrke , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6supbrkf , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6supbrkg , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6supbrkh , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6supbrki , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6supbrkj , j6supbrk , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 11)", GAME_FLAGS ) - - -GAMEL( 199?, j6swpdrp , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Swop Till Ya Drop (JPM) (IMPACT)", GAME_FLAGS, layout_j6swpdrp ) - -GAME( 199?, j6bags , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Three Bags Full (JPM) (IMPACT)", GAME_FLAGS ) - -GAME( 199?, j6roof , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Thru' The Roof (Ace) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6roofa , j6roof , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Thru' The Roof (Ace) (IMPACT) (set 2)", GAME_FLAGS ) - -GAME( 199?, j6tbirds , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6tbirdsa , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6tbirdsb , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6tbirdsc , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6tbirdsd , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6tbirdse , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6tbirdsf , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6tbirdsg , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6tbirdsh , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6tbirdsi , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6tbirdsj , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6tbirdsk , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 12)", GAME_FLAGS ) -GAME( 199?, j6tbirdsl , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 13)", GAME_FLAGS ) -GAME( 199?, j6tbirdsm , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 14)", GAME_FLAGS ) -GAME( 199?, j6tbirdsn , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 15)", GAME_FLAGS ) -GAME( 199?, j6tbirdso , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 16)", GAME_FLAGS ) -GAME( 199?, j6tbirdsp , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 17)", GAME_FLAGS ) -GAME( 199?, j6tbirdsq , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 18)", GAME_FLAGS ) -GAME( 199?, j6tbirdsr , j6tbirds , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 19)", GAME_FLAGS ) - -GAME( 199?, j6tbrdcl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6tbrdcla , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6tbrdclb , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6tbrdclc , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6tbrdcld , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6tbrdcle , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6tbrdclf , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6tbrdclg , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6tbrdclh , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 9)", GAME_FLAGS ) -GAME( 199?, j6tbrdcli , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 10)", GAME_FLAGS ) -GAME( 199?, j6tbrdclj , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 11)", GAME_FLAGS ) -GAME( 199?, j6tbrdclk , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 12)", GAME_FLAGS ) -GAME( 199?, j6tbrdcll , j6tbrdcl , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 13)", GAME_FLAGS ) - - -GAMEL( 199?, j6tomb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6tombc ) -GAMEL( 199?, j6tomba , j6tomb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6tombc ) -GAMEL( 199?, j6tombb , j6tomb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6tombc ) -GAMEL( 199?, j6tombc , j6tomb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6tombc ) -GAMEL( 199?, j6tombd , j6tomb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6tombc ) -GAMEL( 199?, j6tombe , j6tomb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6tombc ) -GAMEL( 199?, j6tombf , j6tomb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6tombc ) -GAMEL( 199?, j6tombg , j6tomb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6tombc ) - -GAMEL( 199?, j6topflg , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Top Flight (Ace) (IMPACT)", GAME_FLAGS, layout_j6topflg ) - -GAME( 199?, j6tutti , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Tutti Frutti (Qps) (IMPACT)", GAME_FLAGS ) - -GAMEL( 199?, j6twst , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 1)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twsta , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 2)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twstb , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 3)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twstc , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 4)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twstd , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 5)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twste , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 6)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twstf , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 7)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twstg , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 8)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twsth , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 9)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twsti , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 10)", GAME_FLAGS, layout_j6twst ) -GAMEL( 199?, j6twstj , j6twst , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 11)", GAME_FLAGS, layout_j6twst ) - -GAME( 199?, j6twstdt , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Twister (JPM) [Dutch] (IMPACT)", GAME_FLAGS ) - - -GAMEL( 199?, j6untch , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Untouchables (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6untch ) -GAMEL( 199?, j6untcha , j6untch , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Untouchables (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6untch ) - - -GAME( 199?, j6pompay , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Up Pompay (Ace) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6pompaya , j6pompay , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Up Pompay (Ace) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6pompayb , j6pompay , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Up Pompay (Ace) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6pompayc , j6pompay , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Up Pompay (Ace) (IMPACT) (set 4)", GAME_FLAGS ) - -GAMEL( 199?, j6vindal , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Vindaloot (JPM) (IMPACT)", GAME_FLAGS, layout_j6vindal ) - -GAMEL( 199?, j6vivark , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarka , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarkb , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarkc , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarkd , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarke , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarkf , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarkg , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarkh , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarki , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarkj , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6vivark ) -GAMEL( 199?, j6vivarkk , j6vivark , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6vivark ) - -GAME( 199?, j6vivrkc , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6vivrkca , j6vivrkc , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6vivrkcb , j6vivrkc , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Viva Rock Vegas Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) - - -GAMEL( 199?, j6wldkng , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Wild King Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6wldkng ) -GAMEL( 199?, j6wldknga , j6wldkng , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Wild King Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6wldkng ) - - -GAME( 199?, j6wthing , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Wild Thing (Empire) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6wthinga , j6wthing , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Wild Thing (Empire) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6wthingb , j6wthing , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Wild Thing (Empire) (IMPACT) (set 3)", GAME_FLAGS ) - -GAME( 199?, j6wildw , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6wildwa , j6wildw , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6wildwb , j6wildw , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6wildwc , j6wildw , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6wildwd , j6wildw , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6wildwe , j6wildw , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6wildwf , j6wildw , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6wildwg , j6wildw , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 8)", GAME_FLAGS ) + +GAME( 199?, j6pacman , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Pac Man Plus (Qps) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6papa , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6papaa , j6papa , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6papab , j6papa , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6papac , j6papa , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6papad , j6papa , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6papae , j6papa , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6papaf , j6papa , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Paparazzi (Empire) (IMPACT) (set 7)", GAME_FLAGS ) + + +GAME( 199?, j6phxgld , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6phxglda , j6phxgld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6phxgldb , j6phxgld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6phxgldc , j6phxgld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6phxgldd , j6phxgld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6phxglde , j6phxgld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6phxgldf , j6phxgld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6phxgldg , j6phxgld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Gold (JPM) (IMPACT) (set 8)", GAME_FLAGS ) + +GAME( 199?, j6pnxgd , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Gold De Luxe (JPM) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6pnxmil , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Millennium (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6pnxmila , j6pnxmil , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Millennium (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6pnxmilb , j6pnxmil , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Millennium (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6pnxmilc , j6pnxmil , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Phoenix Millennium (JPM) (IMPACT) (set 4)", GAME_FLAGS ) + + +GAME( 199?, j6pinwzd , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6pinwzda , j6pinwzd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6pinwzdb , j6pinwzd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6pinwzdc , j6pinwzd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6pinwzdd , j6pinwzd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6pinwzde , j6pinwzd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pinball Wizard (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6pinwzc , j6pinwzd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Pinball Wizard (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6pinwzca , j6pinwzd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Pinball Wizard (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6pinwzcb , j6pinwzd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Pinball Wizard (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) + +GAME( 199?, j6pirgld , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pirates Gold (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6pirglda , j6pirgld , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pirates Gold (JPM) (IMPACT) (set 2)", GAME_FLAGS ) + +GAME( 199?, j6popoli , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Popeye & Olive (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6popolia , j6popoli , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Popeye & Olive (JPM) (IMPACT) (set 2)", GAME_FLAGS ) + + +GAME( 199?, j6pog , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 1)", GAME_FLAGS ) // has video roms, why? (misplaced? hybrid?) +GAME( 199?, j6poga , j6pog , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6pogb , j6pog , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6pogc , j6pog , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6pogd , j6pog , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Pot Of Gold (Ace) (IMPACT) (set 5)", GAME_FLAGS ) + + +GAME( 199?, j6pogcls , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pot Of Gold Classic (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6pogclsa , j6pogcls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pot Of Gold Classic (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6pogclsb , j6pogcls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Pot Of Gold Classic (JPM) (IMPACT) (set 3)", GAME_FLAGS ) + + +GAME( 199?, j6pwrlin , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Power Lines (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6pwrlina , j6pwrlin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Power Lines (JPM) (IMPACT) (set 2)", GAME_FLAGS ) + + +GAME( 199?, j6pwrspn , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6pwrspna , j6pwrspn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6pwrspnb , j6pwrspn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6pwrspnc , j6pwrspn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6pwrspnd , j6pwrspn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6pwrspne , j6pwrspn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Powerspin (JPM) (IMPACT) (set 6)", GAME_FLAGS ) + + +GAME( 199?, j6quantm , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Quantum Leap (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6quantma , j6quantm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Quantum Leap (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6quantmb , j6quantm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Quantum Leap (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6quantmc , j6quantm , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Quantum Leap (JPM) (IMPACT) (set 4)", GAME_FLAGS ) + +GAMEL( 199?, j6quick , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "RAL", "Quicksilver (RAL) (IMPACT)", GAME_FLAGS, layout_j6quick ) + +GAME( 199?, j6rager , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert (JPM) [German] (IMPACT)", GAME_FLAGS ) + +GAMEL( 199?, j6ra , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6ra ) +GAMEL( 199?, j6raa , j6ra , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6ra ) +GAMEL( 199?, j6rab , j6ra , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6ra ) +GAMEL( 199?, j6rac , j6ra , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6ra ) +GAMEL( 199?, j6rad , j6ra , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6ra ) + +GAME( 199?, j6raclb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6raclba , j6raclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6raclbb , j6raclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6raclbc , j6raclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6raclbd , j6raclb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Alert Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) + + +GAMEL( 199?, j6redarw , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwa , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwb , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwc , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwd , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwe , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwf , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwg , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwh , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwi , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarwj , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Arrow (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6redarwf ) +GAMEL( 199?, j6redarww , j6redarw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Whitbread / JPM", "Red Arrow (Whitbread / JPM) (IMPACT)", GAME_FLAGS, layout_j6redarwf ) + +GAME( 2002, j6rh6 , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 2002, j6rh6a , j6rh6 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 2002, j6rh6b , j6rh6 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 2002, j6rh6c , j6rh6 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 2002, j6rh6d , j6rh6 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 2002, j6rh6e , j6rh6 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot 6 (JPM) (IMPACT) (set 6)", GAME_FLAGS ) + + +GAMEL( 199?, j6rhchil , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 1)", GAME_FLAGS, layout_j6rhchil ) +GAMEL( 199?, j6rhchila , j6rhchil , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 2)", GAME_FLAGS, layout_j6rhchil ) +GAMEL( 199?, j6rhchilb , j6rhchil , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 3)", GAME_FLAGS, layout_j6rhchil ) +GAMEL( 199?, j6rhchilc , j6rhchil , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 4)", GAME_FLAGS, layout_j6rhchil ) +GAMEL( 199?, j6rhchild , j6rhchil , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Red Hot Chili Stepper (Ace) (IMPACT) (set 5)", GAME_FLAGS, layout_j6rhchil ) + + +GAMEL( 199?, j6rh6cl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6rh6cld ) +GAMEL( 199?, j6rh6cla , j6rh6cl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6rh6cld ) +GAMEL( 199?, j6rh6clb , j6rh6cl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6rh6cld ) +GAMEL( 199?, j6rh6clc , j6rh6cl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6rh6cld ) +GAMEL( 199?, j6rh6cld , j6rh6cl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Red Hot Six Club (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6rh6cld ) + + +GAMEL( 199?, j6reelmn , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6reelmn ) +GAMEL( 199?, j6reelmna , j6reelmn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6reelmn ) +GAMEL( 199?, j6reelmnb , j6reelmn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6reelmn ) +GAMEL( 199?, j6reelmnc , j6reelmn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6reelmn ) +GAMEL( 199?, j6reelmnd , j6reelmn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Reel Money (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6reelmn ) + +GAME( 199?, j6reelth , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Reel Thing (Ace) (IMPACT) set 1)", GAME_FLAGS ) +GAME( 199?, j6reeltha , j6reelth , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Reel Thing (Ace) (IMPACT) set 2)", GAME_FLAGS ) +GAME( 199?, j6reelthb , j6reelth , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Reel Thing (Ace) (IMPACT) set 3)", GAME_FLAGS ) + +GAME( 199?, j6richpk , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Rich Pickings (Ace) (IMPACT)", GAME_FLAGS ) + +GAMEL( 199?, j6rico , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6rico ) +GAMEL( 199?, j6ricoa , j6rico , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6rico ) +GAMEL( 199?, j6ricob , j6rico , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6rico ) +GAMEL( 199?, j6ricoc , j6rico , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6rico ) +GAMEL( 199?, j6ricod , j6rico , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6rico ) +GAMEL( 199?, j6ricoe , j6rico , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Ricochet (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6rico ) + +GAME( 199?, j6robin , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Robin Hood (Ace) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6robina , j6robin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Robin Hood (Ace) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6robinb , j6robin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Robin Hood (Ace) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6robinc , j6robin , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Robin Hood (Ace) (IMPACT) (set 4)", GAME_FLAGS ) + + +GAMEL( 199?, j6roller , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollera , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerb , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerc , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerd , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollere , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerf , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerg , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerh , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rolleri , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerj , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerk , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerl , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 13)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerm , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 14)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollern , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 15)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollero , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 16)", GAME_FLAGS, layout_j6rollerd ) +GAMEL( 199?, j6rollerp , j6roller , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster (JPM) (IMPACT) (set 17)", GAME_FLAGS, layout_j6rollerd ) + + +GAME( 199?, j6rccls , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster Classic (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6rcclsa , j6rccls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster Classic (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6rcclsb , j6rccls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster Classic (JPM) (IMPACT) (set 3)", GAME_FLAGS ) + +GAME( 199?, j6royfls , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6royflsa , j6royfls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6royflsb , j6royfls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6royflsc , j6royfls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6royflsd , j6royfls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6royflse , j6royfls , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Royal Flush Club (JPM) (IMPACT) (set 6)", GAME_FLAGS ) + + +GAME( 199?, j6samur , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6samura , j6samur , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6samurb , j6samur , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6samurc , j6samur , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6samurd , j6samur , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Samurai Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) + + +GAME( 199?, j6sidewd , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6sidewda , j6sidewd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6sidewdb , j6sidewd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6sidewdc , j6sidewd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6sidewdd , j6sidewd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6sidewde , j6sidewd , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sidewinder (JPM) (IMPACT) (set 6)", GAME_FLAGS ) + + +GAMEL( 199?, j6snakes , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6snakes ) +GAMEL( 199?, j6snakesa , j6snakes , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6snakes ) +GAMEL( 199?, j6snakesb , j6snakes , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6snakes ) +GAMEL( 199?, j6snakesc , j6snakes , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6snakes ) +GAMEL( 199?, j6snakesd , j6snakes , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6snakes ) +GAMEL( 199?, j6snakese , j6snakes , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6snakes ) +GAMEL( 199?, j6snakesf , j6snakes , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6snakes ) +GAMEL( 199?, j6snakesg , j6snakes , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Snakes & Ladders (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6snakes ) + + +GAME( 199?, j6sonic , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6sonica , j6sonic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6sonicb , j6sonic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6sonicc , j6sonic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6sonicd , j6sonic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6sonice , j6sonic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6sonicf , j6sonic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6sonicg , j6sonic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6sonich , j6sonic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Sonic The Hedgehog (JPM) (IMPACT) (set 9)", GAME_FLAGS ) // incomplete pair + +GAME( 199?, j6spcinv , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Space Invaders (Crystal) (IMPACT)", GAME_FLAGS ) + +GAMEL( 199?, j6stards , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Stardust (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6stards ) +GAMEL( 199?, j6stardsa , j6stards , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Stardust (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6stards ) +GAMEL( 199?, j6stardsb , j6stards , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Stardust (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6stards ) +GAMEL( 199?, j6stardsc , j6stards , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Stardust (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6stards ) + + +GAME( 199?, j6start , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Starturn (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6starta , j6start , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Starturn (JPM) (IMPACT) (set 2)", GAME_FLAGS ) + +GAME( 199?, j6strk10 , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6strk10a , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6strk10b , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6strk10c , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6strk10d , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6strk10e , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6strk10f , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6strk10g , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6strk10h , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6strk10i , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6strk10j , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6strk10k , j6strk10 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Strike 10 (Ace) (IMPACT) (set 12)", GAME_FLAGS ) + + +GAME( 199?, j6supbrk , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6supbrka , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6supbrkb , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6supbrkc , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6supbrkd , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6supbrke , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6supbrkf , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6supbrkg , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6supbrkh , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6supbrki , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6supbrkj , j6supbrk , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Super Breakout (JPM) (IMPACT) (set 11)", GAME_FLAGS ) + + +GAMEL( 199?, j6swpdrp , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Swop Till Ya Drop (JPM) (IMPACT)", GAME_FLAGS, layout_j6swpdrp ) + +GAME( 199?, j6bags , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Three Bags Full (JPM) (IMPACT)", GAME_FLAGS ) + +GAME( 199?, j6roof , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Thru' The Roof (Ace) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6roofa , j6roof , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Thru' The Roof (Ace) (IMPACT) (set 2)", GAME_FLAGS ) + +GAME( 199?, j6tbirds , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6tbirdsa , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6tbirdsb , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6tbirdsc , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6tbirdsd , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6tbirdse , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6tbirdsf , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6tbirdsg , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6tbirdsh , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6tbirdsi , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6tbirdsj , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6tbirdsk , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 12)", GAME_FLAGS ) +GAME( 199?, j6tbirdsl , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 13)", GAME_FLAGS ) +GAME( 199?, j6tbirdsm , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 14)", GAME_FLAGS ) +GAME( 199?, j6tbirdsn , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 15)", GAME_FLAGS ) +GAME( 199?, j6tbirdso , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 16)", GAME_FLAGS ) +GAME( 199?, j6tbirdsp , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 17)", GAME_FLAGS ) +GAME( 199?, j6tbirdsq , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 18)", GAME_FLAGS ) +GAME( 199?, j6tbirdsr , j6tbirds , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds (JPM) (IMPACT) (set 19)", GAME_FLAGS ) + +GAME( 199?, j6tbrdcl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6tbrdcla , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6tbrdclb , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6tbrdclc , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6tbrdcld , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6tbrdcle , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6tbrdclf , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6tbrdclg , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6tbrdclh , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 9)", GAME_FLAGS ) +GAME( 199?, j6tbrdcli , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 10)", GAME_FLAGS ) +GAME( 199?, j6tbrdclj , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 11)", GAME_FLAGS ) +GAME( 199?, j6tbrdclk , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 12)", GAME_FLAGS ) +GAME( 199?, j6tbrdcll , j6tbrdcl , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Thunderbirds Club (JPM) (IMPACT) (set 13)", GAME_FLAGS ) + + +GAMEL( 199?, j6tomb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6tombc ) +GAMEL( 199?, j6tomba , j6tomb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6tombc ) +GAMEL( 199?, j6tombb , j6tomb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6tombc ) +GAMEL( 199?, j6tombc , j6tomb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6tombc ) +GAMEL( 199?, j6tombd , j6tomb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6tombc ) +GAMEL( 199?, j6tombe , j6tomb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6tombc ) +GAMEL( 199?, j6tombf , j6tomb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6tombc ) +GAMEL( 199?, j6tombg , j6tomb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Tomb Raider (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6tombc ) + +GAMEL( 199?, j6topflg , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Top Flight (Ace) (IMPACT)", GAME_FLAGS, layout_j6topflg ) + +GAME( 199?, j6tutti , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Tutti Frutti (Qps) (IMPACT)", GAME_FLAGS ) + +GAMEL( 199?, j6twst , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 1)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twsta , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 2)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twstb , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 3)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twstc , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 4)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twstd , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 5)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twste , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 6)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twstf , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 7)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twstg , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 8)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twsth , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 9)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twsti , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 10)", GAME_FLAGS, layout_j6twst ) +GAMEL( 199?, j6twstj , j6twst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Twister (Ace) (IMPACT) (set 11)", GAME_FLAGS, layout_j6twst ) + +GAME( 199?, j6twstdt , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Twister (JPM) [Dutch] (IMPACT)", GAME_FLAGS ) + + +GAMEL( 199?, j6untch , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Untouchables (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6untch ) +GAMEL( 199?, j6untcha , j6untch , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Untouchables (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6untch ) + + +GAME( 199?, j6pompay , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Up Pompay (Ace) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6pompaya , j6pompay , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Up Pompay (Ace) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6pompayb , j6pompay , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Up Pompay (Ace) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6pompayc , j6pompay , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Up Pompay (Ace) (IMPACT) (set 4)", GAME_FLAGS ) + +GAMEL( 199?, j6vindal , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Vindaloot (JPM) (IMPACT)", GAME_FLAGS, layout_j6vindal ) + +GAMEL( 199?, j6vivark , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarka , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarkb , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarkc , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarkd , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarke , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarkf , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 7)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarkg , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 8)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarkh , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 9)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarki , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 10)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarkj , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 11)", GAME_FLAGS, layout_j6vivark ) +GAMEL( 199?, j6vivarkk , j6vivark , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas (JPM) (IMPACT) (set 12)", GAME_FLAGS, layout_j6vivark ) + +GAME( 199?, j6vivrkc , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6vivrkca , j6vivrkc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6vivrkcb , j6vivrkc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Viva Rock Vegas Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) + + +GAMEL( 199?, j6wldkng , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Wild King Club (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6wldkng ) +GAMEL( 199?, j6wldknga , j6wldkng , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Wild King Club (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6wldkng ) + + +GAME( 199?, j6wthing , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Wild Thing (Empire) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6wthinga , j6wthing , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Wild Thing (Empire) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6wthingb , j6wthing , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Wild Thing (Empire) (IMPACT) (set 3)", GAME_FLAGS ) + +GAME( 199?, j6wildw , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6wildwa , j6wildw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6wildwb , j6wildw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6wildwc , j6wildw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6wildwd , j6wildw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6wildwe , j6wildw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6wildwf , j6wildw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6wildwg , j6wildw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "Wild West (Ace) (IMPACT) (set 8)", GAME_FLAGS ) -GAMEL( 199?, j6wizard , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6wizardd ) -GAMEL( 199?, j6wizarda , j6wizard , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6wizardd ) -GAMEL( 199?, j6wizardb , j6wizard , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6wizardd ) -GAMEL( 199?, j6wizardc , j6wizard , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6wizardd ) -GAMEL( 199?, j6wizardd , j6wizard , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6wizardd ) -GAMEL( 199?, j6wizarde , j6wizard , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6wizardd ) +GAMEL( 199?, j6wizard , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 1)", GAME_FLAGS, layout_j6wizardd ) +GAMEL( 199?, j6wizarda , j6wizard , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 2)", GAME_FLAGS, layout_j6wizardd ) +GAMEL( 199?, j6wizardb , j6wizard , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 3)", GAME_FLAGS, layout_j6wizardd ) +GAMEL( 199?, j6wizardc , j6wizard , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 4)", GAME_FLAGS, layout_j6wizardd ) +GAMEL( 199?, j6wizardd , j6wizard , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 5)", GAME_FLAGS, layout_j6wizardd ) +GAMEL( 199?, j6wizarde , j6wizard , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Wizard Of Odds (JPM) (IMPACT) (set 6)", GAME_FLAGS, layout_j6wizardd ) -GAME( 199?, j6knight , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6knighta , j6knight , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6knightb , j6knight , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6knightc , j6knight , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6knightd , j6knight , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6knighte , j6knight , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6knight , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6knighta , j6knight , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6knightb , j6knight , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6knightc , j6knight , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6knightd , j6knight , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6knighte , j6knight , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Your Lucky Knight (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6svndb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Ace", "7 Deadly Bins (Ace) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6svndb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Ace", "7 Deadly Bins (Ace) (IMPACT)", GAME_FLAGS ) -GAMEL( 199?, j6ewn , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Each Way Nudger (JPM) (IMPACT)", GAME_FLAGS, layout_j6ewn ) +GAMEL( 199?, j6ewn , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Each Way Nudger (JPM) (IMPACT)", GAME_FLAGS, layout_j6ewn ) -GAME( 199?, j6hikar , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hi Karate (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6hikara , j6hikar , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hi Karate (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6hikarb , j6hikar , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hi Karate (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6hikar , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hi Karate (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6hikara , j6hikar , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hi Karate (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6hikarb , j6hikar , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hi Karate (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6hisprt , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "High Spirits (Empire) (IMPACT) (prototype?)", GAME_FLAGS ) // roms are marked 'DEMO' +GAME( 199?, j6hisprt , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "High Spirits (Empire) (IMPACT) (prototype?)", GAME_FLAGS ) // roms are marked 'DEMO' -GAME( 199?, j6rcclub , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6rccluba , j6rcclub , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6rcclubb , j6rcclub , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Roller Coaster Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6rcclub , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6rccluba , j6rcclub , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6rcclubb , j6rcclub , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Roller Coaster Club (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6slvgst , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6slvgsta , j6slvgst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6slvgstb , j6slvgst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6slvgstc , j6slvgst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6slvgstd , j6slvgst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6slvgste , j6slvgst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6slvgstf , j6slvgst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6slvgstg , j6slvgst , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6slvgst , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6slvgsta , j6slvgst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6slvgstb , j6slvgst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6slvgstc , j6slvgst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6slvgstd , j6slvgst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6slvgste , j6slvgst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6slvgstf , j6slvgst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6slvgstg , j6slvgst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Silver Ghost (JPM) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6footy , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Football Fever (Empire) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6footya , j6footy , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Football Fever (Empire) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6footyb , j6footy , impctawp, tbirds, driver_device, 0, ROT0, "Empire", "Football Fever (Empire) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6footy , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Football Fever (Empire) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6footya , j6footy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Football Fever (Empire) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6footyb , j6footy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Empire", "Football Fever (Empire) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6fbcrz , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Football Crazy (JPM) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6fbcrz , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Football Crazy (JPM) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6h5clb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "High Five Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6h5clba , j6h5clb , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "High Five Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6h5clb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "High Five Club (JPM) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6h5clba , j6h5clb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "High Five Club (JPM) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6bmc , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Big Money Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6bmca , j6bmc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Big Money Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6bmc , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Big Money Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6bmca , j6bmc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Big Money Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6bno , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Big Nite Out (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6bnoa , j6bno , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Big Nite Out (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6bnob , j6bno , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Big Nite Out (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6bnoc , j6bno , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Big Nite Out (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6bno , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Big Nite Out (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6bnoa , j6bno , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Big Nite Out (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6bnob , j6bno , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Big Nite Out (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6bnoc , j6bno , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Big Nite Out (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) -GAMEL( 199?, j6btbw , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6btbwd ) -GAMEL( 199?, j6btbwa , j6btbw , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6btbwd ) -GAMEL( 199?, j6btbwb , j6btbw , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6btbwd ) -GAMEL( 199?, j6btbwc , j6btbw , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6btbwd ) -GAMEL( 199?, j6btbwd , j6btbw , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6btbwd ) +GAMEL( 199?, j6btbw , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6btbwd ) +GAMEL( 199?, j6btbwa , j6btbw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6btbwd ) +GAMEL( 199?, j6btbwb , j6btbw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6btbwd ) +GAMEL( 199?, j6btbwc , j6btbw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6btbwd ) +GAMEL( 199?, j6btbwd , j6btbw , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Born To Be Wild Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6btbwd ) -GAMEL( 199?, j6cpal , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6cpal ) -GAMEL( 199?, j6cpala , j6cpal , impctawp, tbirds, driver_device, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6cpal ) // marked as ACE -GAMEL( 1998, j6cpalb , j6cpal , impctawp, tbirds, driver_device, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6cpal ) -GAMEL( 1998, j6cpalc , j6cpal , impctawp, tbirds, driver_device, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6cpal ) -GAMEL( 1998, j6cpald , j6cpal , impctawp, tbirds, driver_device, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6cpal ) -GAMEL( 1998, j6cpale , j6cpal , impctawp, tbirds, driver_device, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 6)", GAME_FLAGS, layout_j6cpal ) -GAMEL( 1998, j6cpalf , j6cpal , impctawp, tbirds, driver_device, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 7)", GAME_FLAGS, layout_j6cpal ) -GAMEL( 1998, j6cpalg , j6cpal , impctawp, tbirds, driver_device, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 8)", GAME_FLAGS, layout_j6cpal ) +GAMEL( 199?, j6cpal , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6cpal ) +GAMEL( 199?, j6cpala , j6cpal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6cpal ) // marked as ACE +GAMEL( 1998, j6cpalb , j6cpal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6cpal ) +GAMEL( 1998, j6cpalc , j6cpal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6cpal ) +GAMEL( 1998, j6cpald , j6cpal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6cpal ) +GAMEL( 1998, j6cpale , j6cpal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 6)", GAME_FLAGS, layout_j6cpal ) +GAMEL( 1998, j6cpalf , j6cpal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 7)", GAME_FLAGS, layout_j6cpal ) +GAMEL( 1998, j6cpalg , j6cpal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Whitbread / Crystal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 8)", GAME_FLAGS, layout_j6cpal ) -GAME( 199?, j6cdivr , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Cash Diver (Crystal) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6cdivr , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Cash Diver (Crystal) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6ccc , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Casino Crazy Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6ccca , j6ccc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Casino Crazy Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6cccb , j6ccc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Casino Crazy Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6cccc , j6ccc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Casino Crazy Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6ccc , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Casino Crazy Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6ccca , j6ccc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Casino Crazy Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6cccb , j6ccc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Casino Crazy Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6cccc , j6ccc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Casino Crazy Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6colic , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6colica , j6colic , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6colicb , j6colic , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6colicc , j6colic , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6colicd , j6colic , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6colic , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6colica , j6colic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6colicb , j6colic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6colicc , j6colic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6colicd , j6colic , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Coliseum (Crystal) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6crakr , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Cracker (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6crakra , j6crakr , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Cracker (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6crakrb , j6crakr , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Cracker (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6crakr , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Cracker (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6crakra , j6crakr , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Cracker (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6crakrb , j6crakr , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Cracker (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6ewndg , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Each Way Nudger (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6ewndga , j6ewndg , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Each Way Nudger (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6ewndgb , j6ewndg , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Each Way Nudger (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6ewndg , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Each Way Nudger (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6ewndga , j6ewndg , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Each Way Nudger (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6ewndgb , j6ewndg , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Each Way Nudger (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6easy , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Easy Money (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6easya , j6easy , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Easy Money (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6easyb , j6easy , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Easy Money (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6easyc , j6easy , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Easy Money (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6easy , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Easy Money (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6easya , j6easy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Easy Money (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6easyb , j6easy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Easy Money (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6easyc , j6easy , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Easy Money (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) -GAMEL( 199?, j6ffc , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6ffce ) -GAMEL( 199?, j6ffca , j6ffc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6ffce ) -GAMEL( 199?, j6ffcb , j6ffc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6ffce ) -GAMEL( 199?, j6ffcc , j6ffc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6ffce ) -GAMEL( 199?, j6ffcd , j6ffc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6ffce ) -GAMEL( 199?, j6ffce , j6ffc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 6)", GAME_FLAGS, layout_j6ffce ) +GAMEL( 199?, j6ffc , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6ffce ) +GAMEL( 199?, j6ffca , j6ffc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6ffce ) +GAMEL( 199?, j6ffcb , j6ffc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6ffce ) +GAMEL( 199?, j6ffcc , j6ffc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6ffce ) +GAMEL( 199?, j6ffcd , j6ffc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6ffce ) +GAMEL( 199?, j6ffce , j6ffc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Frame & Fortune Club (Crystal) (IMPACT) (set 6)", GAME_FLAGS, layout_j6ffce ) -GAME( 199?, j6grc , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Gold Rush Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6grca , j6grc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Gold Rush Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6grc , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Gold Rush Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6grca , j6grc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Gold Rush Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6hdc , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6hdca , j6hdc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6hdcb , j6hdc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6hdcc , j6hdc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6hdcd , j6hdc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6hdce , j6hdc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6hdcf , j6hdc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6hdcg , j6hdc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 8)", GAME_FLAGS ) +GAME( 199?, j6hdc , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6hdca , j6hdc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6hdcb , j6hdc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6hdcc , j6hdc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6hdcd , j6hdc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6hdce , j6hdc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6hdcf , j6hdc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6hdcg , j6hdc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Hot Dogs Club (Crystal) (IMPACT) (set 8)", GAME_FLAGS ) -GAME( 199?, j6impls , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Impulse (Crystal) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6impls , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Impulse (Crystal) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6kapang , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Kapang! (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6kapanga , j6kapang , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Kapang! (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6kapang , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Kapang! (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6kapanga , j6kapang , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Kapang! (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAMEL( 199?, j6kfc , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Kung Fu Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6kfc ) -GAMEL( 199?, j6kfca , j6kfc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Kung Fu Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6kfc ) -GAMEL( 199?, j6kfcb , j6kfc , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Kung Fu Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6kfc ) +GAMEL( 199?, j6kfc , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Kung Fu Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6kfc ) +GAMEL( 199?, j6kfca , j6kfc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Kung Fu Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6kfc ) +GAMEL( 199?, j6kfcb , j6kfc , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Kung Fu Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6kfc ) -GAME( 199?, j6lucklo , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Lucky Lottery Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6luckloa , j6lucklo , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Lucky Lottery Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6lucklo , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Lucky Lottery Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6luckloa , j6lucklo , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Lucky Lottery Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAMEL( 199?, j6monst , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6monst ) -GAMEL( 199?, j6monsta , j6monst , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6monst ) -GAMEL( 199?, j6monstb , j6monst , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6monst ) -GAMEL( 199?, j6monstc , j6monst , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6monst ) -GAMEL( 199?, j6monstd , j6monst , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6monst ) +GAMEL( 199?, j6monst , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6monst ) +GAMEL( 199?, j6monsta , j6monst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6monst ) +GAMEL( 199?, j6monstb , j6monst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6monst ) +GAMEL( 199?, j6monstc , j6monst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6monst ) +GAMEL( 199?, j6monstd , j6monst , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Monster Cash Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6monst ) -GAME( 199?, j6pinfvr , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Pinball Fever (Crystal) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6pinfvr , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Pinball Fever (Crystal) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6potg , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Pot Of Gold (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6potga , j6potg , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Pot Of Gold (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6potgb , j6potg , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Pot Of Gold (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6potg , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Pot Of Gold (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6potga , j6potg , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Pot Of Gold (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6potgb , j6potg , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Pot Of Gold (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6ramese , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6ramesea , j6ramese , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6rameseb , j6ramese , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6ramesec , j6ramese , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6ramesed , j6ramese , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6ramesee , j6ramese , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6ramesef , j6ramese , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 7)", GAME_FLAGS ) +GAME( 199?, j6ramese , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6ramesea , j6ramese , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6rameseb , j6ramese , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6ramesec , j6ramese , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6ramesed , j6ramese , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6ramesee , j6ramese , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6ramesef , j6ramese , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Rameses' Riches Club (Crystal) (IMPACT) (set 7)", GAME_FLAGS ) -GAME( 199?, j6r2rum , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6r2ruma , j6r2rum , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6r2rumb , j6r2rum , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6r2rumc , j6r2rum , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6r2rumd , j6r2rum , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 5)", GAME_FLAGS ) -GAME( 199?, j6r2rume , j6r2rum , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 6)", GAME_FLAGS ) +GAME( 199?, j6r2rum , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6r2ruma , j6r2rum , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6r2rumb , j6r2rum , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6r2rumc , j6r2rum , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6r2rumd , j6r2rum , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 5)", GAME_FLAGS ) +GAME( 199?, j6r2rume , j6r2rum , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Ready To Rumble (Crystal) (IMPACT) (set 6)", GAME_FLAGS ) -GAME( 199?, j6redal , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Red Alert (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6redala , j6redal , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Red Alert (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6redal , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Red Alert (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6redala , j6redal , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Red Alert (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6reelb , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Reel Bingo Classic Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6reelba , j6reelb , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Reel Bingo Classic Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6reelb , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Reel Bingo Classic Club (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6reelba , j6reelb , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Reel Bingo Classic Club (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAMEL( 199?, j6slagn , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6slagng ) -GAMEL( 199?, j6slagna , j6slagn , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6slagng ) -GAMEL( 199?, j6slagnb , j6slagn , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6slagng ) -GAMEL( 199?, j6slagnc , j6slagn , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6slagng ) -GAMEL( 199?, j6slagnd , j6slagn , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6slagng ) -GAMEL( 199?, j6slagne , j6slagn , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 6)", GAME_FLAGS, layout_j6slagng ) -GAMEL( 199?, j6slagnf , j6slagn , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 7)", GAME_FLAGS, layout_j6slagng ) -GAMEL( 199?, j6slagng , j6slagn , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 8)", GAME_FLAGS, layout_j6slagng ) -GAMEL( 199?, j6slagnh , j6slagn , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 9)", GAME_FLAGS, layout_j6slagng ) +GAMEL( 199?, j6slagn , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 1)", GAME_FLAGS, layout_j6slagng ) +GAMEL( 199?, j6slagna , j6slagn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 2)", GAME_FLAGS, layout_j6slagng ) +GAMEL( 199?, j6slagnb , j6slagn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 3)", GAME_FLAGS, layout_j6slagng ) +GAMEL( 199?, j6slagnc , j6slagn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 4)", GAME_FLAGS, layout_j6slagng ) +GAMEL( 199?, j6slagnd , j6slagn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 5)", GAME_FLAGS, layout_j6slagng ) +GAMEL( 199?, j6slagne , j6slagn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 6)", GAME_FLAGS, layout_j6slagng ) +GAMEL( 199?, j6slagnf , j6slagn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 7)", GAME_FLAGS, layout_j6slagng ) +GAMEL( 199?, j6slagng , j6slagn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 8)", GAME_FLAGS, layout_j6slagng ) +GAMEL( 199?, j6slagnh , j6slagn , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 9)", GAME_FLAGS, layout_j6slagng ) -GAME( 199?, j6thril , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Thriller (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6thrila , j6thril , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Thriller (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6thril , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Thriller (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6thrila , j6thril , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Thriller (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6tqust , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Treasure Quest (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) -GAME( 199?, j6tqusta , j6tqust , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Treasure Quest (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) -GAME( 199?, j6tqustb , j6tqust , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Treasure Quest (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) -GAME( 199?, j6tqustc , j6tqust , impctawp, tbirds, driver_device, 0, ROT0, "Crystal", "Treasure Quest (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) +GAME( 199?, j6tqust , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Treasure Quest (Crystal) (IMPACT) (set 1)", GAME_FLAGS ) +GAME( 199?, j6tqusta , j6tqust , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Treasure Quest (Crystal) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6tqustb , j6tqust , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Treasure Quest (Crystal) (IMPACT) (set 3)", GAME_FLAGS ) +GAME( 199?, j6tqustc , j6tqust , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Crystal", "Treasure Quest (Crystal) (IMPACT) (set 4)", GAME_FLAGS ) -GAME( 199?, j6gldpl , 0 , impctawp, tbirds, driver_device, 0, ROT0, "Qps", "Golden Palace (Qps) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6gldpl , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "Qps", "Golden Palace (Qps) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6shoot , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM / Whitbread", "ShootOut (JPM / Whitbread) (IMPACT)", GAME_FLAGS ) +GAME( 199?, j6shoot , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM / Whitbread", "ShootOut (JPM / Whitbread) (IMPACT)", GAME_FLAGS ) -GAME( 199?, j6milln , 0 , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Millionaire (JPM) (IMPACT) (set 1)", GAME_FLAGS ) // was marked as SWP, should this be a video game? - Apparently it's just a link box using the same hardware, but for 3 PC based units which aren't dumped -GAME( 199?, j6millna , j6milln , impctawp, tbirds, driver_device, 0, ROT0, "JPM", "Millionaire (JPM) (IMPACT) (set 2)", GAME_FLAGS ) +GAME( 199?, j6milln , 0 , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Millionaire (JPM) (IMPACT) (set 1)", GAME_FLAGS ) // was marked as SWP, should this be a video game? - Apparently it's just a link box using the same hardware, but for 3 PC based units which aren't dumped +GAME( 199?, j6millna , j6milln , impctawp, tbirds, jpmimpct_state, 0, ROT0, "JPM", "Millionaire (JPM) (IMPACT) (set 2)", GAME_FLAGS ) diff --git a/src/mame/drivers/jpmmps.cpp b/src/mame/drivers/jpmmps.cpp index b4d2a2c30b5..1f4609a5223 100644 --- a/src/mame/drivers/jpmmps.cpp +++ b/src/mame/drivers/jpmmps.cpp @@ -244,7 +244,7 @@ void jpmmps_state::machine_reset() static_cast(machine().device("maincpu"))->ready_line(ASSERT_LINE); } -static MACHINE_CONFIG_START( jpmmps, jpmmps_state ) +static MACHINE_CONFIG_START( jpmmps ) // CPU TMS9995, standard variant; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9995, MAIN_CLOCK, jpmmps_map, jpmmps_io_map) @@ -2111,211 +2111,211 @@ ROM_END -GAMEL(198?, j2adnote ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2adnotea,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2adnoteb,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2adnotec,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2adnoted,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2adnotee,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2adnotef,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2adnoteg,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2adnoteh,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 9)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2adnotei,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 10)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) -GAMEL(198?, j2bankch ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Bank Chase (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2bankch ) -GAME(198?, j2bankrd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Bank Raid (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2bigbnk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Big Banker (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2bigbnk ) -GAMEL(198?, j2bigbox ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Big Box (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2bigbox ) -GAME(198?, j2bigbuk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Big Buck$ (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2bigdl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Big Deal (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2blkchy ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Black Cherry (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2cashbn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Bonus Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashbn ) -GAME(198?, j2cashfl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Falls (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2cashrl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Reels (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashrl ) -GAMEL(198?, j2cashrv ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Reserve (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashrv ) -GAMEL(198?, j2cashro ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Rolls (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashro ) -GAMEL(198?, j2cashtk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Track (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashtk ) -GAME(198?, j2cashtd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Track Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2coppot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Copper Pot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2coppot ) -GAME(198?, j2coprun ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Copper Run (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2cprndx ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Copper Run Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cprndx ) -GAME(198?, j2crkbnk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Crack The Bank (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2droplt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Drop The Lot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2droplt ) -GAME(198?, j2dropld ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Drop The Lot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2ewn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Each Way Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2ewn ) -GAMEL(198?, j2ews ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Each Way Shuffle (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2ews ) -GAMEL(198?, j2exec ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Executive Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2exec ) -GAMEL(198?, j2fasttk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Fast Trak (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fasttk ) -GAMEL(198?, j2fqueen ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Find The Queen (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fqueen ) -GAMEL(198?, j2fiveal ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Five Alive (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fiveal ) -GAMEL(198?, j2fiveln ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Five Liner (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fiveln ) -GAMEL(198?, j2fws ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Five Way Shuffle (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fws ) -GAMEL(198?, j2fwsa ,j2fws ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Five Way Shuffle (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fws ) -GAME(198?, j2frmtch ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Fruit Match (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2fullhs ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Full House Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fullhs ) -GAMEL(198?, j2ghostb ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Ghostbuster (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2ghostb ) -GAME(198?, j2goldrn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Gold Run (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2goldbr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Golden Bars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2goldbr ) -GAMEL(198?, j2gldchy ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Golden Cherry (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2gldchy ) -GAME(198?, j2gldwin ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Golden Win (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2hinote ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hi Note (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hinote ) -GAMEL(198?, j2hiroll ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hi Roller (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hiroll ) -GAMEL(198?, j2hotpot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hot Pot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hotpot ) -GAME(198?, j2hotptd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hot Pot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2hotsht ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hot Shot Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hotsht ) -GAMEL(198?, j2hypnot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hypernote (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hypnot ) -GAMEL(198?, j2jackbr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Jackpot Bars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2jackbr ) -GAME(198?, j2jackdc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Jackpot Dice (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2jokers ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Jokers (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2kingcl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","King Of Clubs (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2kingcl ) -GAMEL(198?, j2litean ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Lite A Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2litean ) -GAMEL(198?, j2lovsht ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Loot Shoot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2lovsht ) -GAMEL(198?, j2lovshd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Loot Shoot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2lovshd ) -GAMEL(198?, j2luckar ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Lucky Arrows (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2luckar ) -GAMEL(198?, j2lucky2 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Lucky 2s (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2lucky2 ) -GAMEL(198?, j2monblt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Money Belt (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2monblt ) -GAMEL(198?, j2mongam ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Money Game (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2mongam ) -GAME(198?, j2mongmd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Money Game Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2multwn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Multi Win (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2notexc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Note Exchange (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2notexca,j2notexc ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Note Exchange (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2notexcb,j2notexc ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Note Exchange (Set 3) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2notesh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Note Shoot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2notesh ) -GAMEL(198?, j2nudbnz ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Bonanza Deluxe (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nudbnz ) -GAME(198?, j2nudbnza,j2nudbnz ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Bonanza Deluxe (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2nuddup ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Double Up (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2nuddud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Double Up Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2nudup3 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Double Up MkIII (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2nudshf ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Shuffler (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nudshf ) -GAME(198?, j2plsmon ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Plus Money (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2plsmnd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Plus Money Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2plsmnd ) -GAMEL(198?, j2plsnud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Plus Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2plsnud ) -GAME(198?, j2potlck ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pot Luck (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2pndrsh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pound Rush (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2pndrsh ) -GAME(198?, j2pyramd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pyramid (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2reelbn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Bingo Club (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelbn ) -GAMEL(198?, j2reelbna,j2reelbn ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Bingo Club (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelbn ) -GAMEL(198?, j2reelbo ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Bonus (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelbo ) -GAME(198?, j2reelmg ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Magic (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2reelmgd,j2reelmg ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Magic (JPM) [Dutch] (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2reelmc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Magic Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelmc ) -GAMEL(198?, j2reelmo ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Money (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelmo ) -GAME(198?, j2rotnot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Rota Note (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2roulcl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Roulette Club (JPM) [Mps] (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2rdclb ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Royal Deal Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2rdclb ) -GAMEL(198?, j2slvrgh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Silver Ghost (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2slvrgh ) -GAMEL(198?, j2sldgld ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Solid Gold (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2sldgld ) -GAMEL(198?, j2spcrsv ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Special Reserve (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2spcrsv ) -GAMEL(198?, j2stahed ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Streets Ahead (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2stahed ) -GAME(198?, j2supfrt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Fruit (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2supfrc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Fruit Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2supfrc ) -GAMEL(1987, j2supsft ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supashifta (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2supsft ) -GAMEL(198?, j2supstp ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Steppa (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2supstp ) -GAMEL(198?, j2suptrk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Track (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2suptrk ) -GAME(198?, j2suprft ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Super Fruit (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2supln ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Super Line (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2suppot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Super Pots (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2suprl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Super Reel (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2suprsh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supershot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2suprsh ) -GAME(198?, j2supstr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Superstars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2swbank ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Switch Back (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2swbank ) -GAMEL(198?, j2take2 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Take 2 (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2take2 ) -GAME(198?, j2topsht ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Top Shot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2westrn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Western (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) - - -GAMEL(198?, j2blustr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Blue Streak (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2blustr ) -GAMEL(198?, j2cshalm ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cash Alarm (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshalm ) -GAMEL(198?, j2cshcrd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cash Cards (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshcrd ) -GAMEL(198?, j2cshfil ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cash-Filla (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshfil ) -GAMEL(198?, j2cshsmh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cash Smash (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshsmh ) -GAMEL(198?, j2criscr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Criss Cross Jackpot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2criscr ) -GAMEL(198?, j2frucnx ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Fruit Connexion (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2frucnx ) -GAMEL(198?, j2hitmon ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Hit Money (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hitmon ) -GAMEL(198?, j2penny ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","In For A Penny In For A Pound (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2penny ) -GAMEL(198?, j2maxima ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Maxima (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2maxima ) -GAMEL(198?, j2montrp ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Money Trapper (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2montrp ) -GAMEL(198?, j2nudmon ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Nudge Money (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nudmon ) -GAMEL(198?, j2paypkt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Pay Packet (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2paypkt ) -GAMEL(198?, j2silvcl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Silver Classic (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2silvcl ) -GAMEL(198?, j2silvsh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Silver Shot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2silvsh ) -GAMEL(198?, j2sstrea ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Supa Streak (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2sstrea ) -GAMEL(198?, j2tstplt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Test Pilot (Set 1) (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2tstplt ) -GAMEL(198?, j2tstplta,j2tstplt ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Test Pilot (Set 2) (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2tstplt ) - -GAME(198?, j2bonanz ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Eurocoin","Bonanza (Eurocoin) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2supchy ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Eurocoin","Super Cherry (Eurocoin) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) - -GAMEL(198?, j2hilocl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Crystal","Hi Lo Climber Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hilocl ) -GAMEL(198?, j2litnot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Crystal","Lite A Note Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2litnot ) -GAMEL(198?, j2missis ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Crystal","Mississippi Gambler Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2missis ) - -GAMEL(198?, j2always ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Always Eight (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2always ) -GAMEL(198?, j2coinsh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Coin Shoot (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2coinsh ) -GAMEL(198?, j2nudfev ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Nudge Fever (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nudfev ) -GAMEL(198?, j2trail ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Trailblazer (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2trail ) -GAME(198?, j2wag ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Win-A-Gain (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) - -GAMEL(198?, j2cshnud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","Cash Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshnud ) -GAME(198?, j2fivepn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","Fivepenny Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2nolimt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","No Limit Nudge (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nolimt ) - -GAME(198?, j2strk10 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Ace?","Strike Ten (Ace) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) // there was another (68k based) game in this set, which makes me wonder if this one is by Ace at all - - - - -GAME(198?, j2bkroll ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Bank Roll (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2bodym ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Body Match (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2cvault ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Vault (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cvault ) -GAME(198?, j2cashab ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cashablanca (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2cashry ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cashino Royale (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2casino ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Casino Classic (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2coinct ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Coin Count (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2loots ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Loot Shoot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2match ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Match It (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2monbnd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Money Bands (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2monmtx ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Money Matrix (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2tst ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","MPS 1 Test Rom (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2nudnud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2pinac ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pinnacle (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2pinclb ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pinnacle Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2reelcz ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Crazy (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelcz ) -GAME(198?, j2reeldc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Deal Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2topcd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Top Card (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2xxx ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Triple X (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2tupnud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Tuppenny Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2wrb ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Wild Reel Bingo (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2ncsp ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","unknown 'ncsp0pp' (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2nrrp ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","unknown 'nprpopp' (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2nsc15 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","unknown 'nsc15' (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2nsw12 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","unknown 'nsw12' (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) - -GAME(198?, j2club77 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Club 77 (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2contnd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","Continuous Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL(198?, j2crown ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Crown Dealer (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2crown ) -GAME(198?, j2hirola ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Hi Roll (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2monmin ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Money Mine (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2notspn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Note Spinner (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2super7 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Super 7's (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2sex ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Super Exchanger (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2sng ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Cotswold Microsystems","Super Nudge Gambler (Cotswold Microsystems) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2tupnd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","Tuppenny Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2008 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","unknown '008' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2chsn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","unknown 'chsnsn05' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2lhs ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","unknown 'lhs' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2nn2 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","unknown 'nn_2' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2rm941 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","unknown 'rm941' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2pharo ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Pharoah (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) - -GAME(198?, j2nud5p ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","5p Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2b7 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Bar 7? (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2ss ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Stepper (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2nbz ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Bonanza (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) - -GAME(198?, j2clbbin ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Crystal?","Club Bingo (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) - -GAME(198?, j2sirich ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Strike It Rich (JPM) (MPS) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) // I don't think this is MayGay, it was just in a MayGay set with some actual MayGay roms -GAME(198?, j2siricha,j2sirich ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Strike It Rich (JPM) (MPS) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // I don't think this is MayGay, it was just in a MayGay set with some actual MayGay roms - -GAME(198?, j2hcash ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Hot Cash (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j2sset ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "","Sunset Strip (v2.0) (Unk) (MPS?)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2adnote ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2adnotea,j2adnote ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2adnoteb,j2adnote ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2adnotec,j2adnote ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2adnoted,j2adnote ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2adnotee,j2adnote ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2adnotef,j2adnote ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2adnoteg,j2adnote ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2adnoteh,j2adnote ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 9)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2adnotei,j2adnote ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 10)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2adnote ) +GAMEL(198?, j2bankch ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Bank Chase (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2bankch ) +GAME (198?, j2bankrd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Bank Raid (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2bigbnk ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Big Banker (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2bigbnk ) +GAMEL(198?, j2bigbox ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Big Box (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2bigbox ) +GAME (198?, j2bigbuk ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Big Buck$ (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2bigdl ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Big Deal (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2blkchy ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Black Cherry (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2cashbn ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Cash Bonus Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashbn ) +GAME (198?, j2cashfl ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Cash Falls (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2cashrl ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Cash Reels (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashrl ) +GAMEL(198?, j2cashrv ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Cash Reserve (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashrv ) +GAMEL(198?, j2cashro ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Cash Rolls (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashro ) +GAMEL(198?, j2cashtk ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Cash Track (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cashtk ) +GAME (198?, j2cashtd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Cash Track Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2coppot ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Copper Pot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2coppot ) +GAME (198?, j2coprun ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Copper Run (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2cprndx ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Copper Run Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cprndx ) +GAME (198?, j2crkbnk ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Crack The Bank (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2droplt ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Drop The Lot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2droplt ) +GAME (198?, j2dropld ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Drop The Lot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2ewn ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Each Way Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2ewn ) +GAMEL(198?, j2ews ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Each Way Shuffle (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2ews ) +GAMEL(198?, j2exec ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Executive Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2exec ) +GAMEL(198?, j2fasttk ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Fast Trak (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fasttk ) +GAMEL(198?, j2fqueen ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Find The Queen (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fqueen ) +GAMEL(198?, j2fiveal ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Five Alive (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fiveal ) +GAMEL(198?, j2fiveln ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Five Liner (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fiveln ) +GAMEL(198?, j2fws ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Five Way Shuffle (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fws ) +GAMEL(198?, j2fwsa ,j2fws ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Five Way Shuffle (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fws ) +GAME (198?, j2frmtch ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Fruit Match (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2fullhs ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Full House Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2fullhs ) +GAMEL(198?, j2ghostb ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Ghostbuster (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2ghostb ) +GAME (198?, j2goldrn ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Gold Run (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2goldbr ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Golden Bars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2goldbr ) +GAMEL(198?, j2gldchy ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Golden Cherry (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2gldchy ) +GAME (198?, j2gldwin ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Golden Win (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2hinote ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Hi Note (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hinote ) +GAMEL(198?, j2hiroll ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Hi Roller (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hiroll ) +GAMEL(198?, j2hotpot ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Hot Pot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hotpot ) +GAME (198?, j2hotptd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Hot Pot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2hotsht ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Hot Shot Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hotsht ) +GAMEL(198?, j2hypnot ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Hypernote (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hypnot ) +GAMEL(198?, j2jackbr ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Jackpot Bars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2jackbr ) +GAME (198?, j2jackdc ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Jackpot Dice (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2jokers ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Jokers (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2kingcl ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","King Of Clubs (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2kingcl ) +GAMEL(198?, j2litean ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Lite A Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2litean ) +GAMEL(198?, j2lovsht ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Loot Shoot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2lovsht ) +GAMEL(198?, j2lovshd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Loot Shoot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2lovshd ) +GAMEL(198?, j2luckar ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Lucky Arrows (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2luckar ) +GAMEL(198?, j2lucky2 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Lucky 2s (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2lucky2 ) +GAMEL(198?, j2monblt ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Money Belt (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2monblt ) +GAMEL(198?, j2mongam ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Money Game (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2mongam ) +GAME (198?, j2mongmd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Money Game Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2multwn ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Multi Win (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2notexc ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Note Exchange (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2notexca,j2notexc ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Note Exchange (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2notexcb,j2notexc ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Note Exchange (Set 3) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2notesh ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Note Shoot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2notesh ) +GAMEL(198?, j2nudbnz ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Nudge Bonanza Deluxe (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nudbnz ) +GAME (198?, j2nudbnza,j2nudbnz ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Nudge Bonanza Deluxe (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2nuddup ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Nudge Double Up (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2nuddud ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Nudge Double Up Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2nudup3 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Nudge Double Up MkIII (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2nudshf ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Nudge Shuffler (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nudshf ) +GAME (198?, j2plsmon ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Plus Money (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2plsmnd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Plus Money Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2plsmnd ) +GAMEL(198?, j2plsnud ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Plus Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2plsnud ) +GAME (198?, j2potlck ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Pot Luck (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2pndrsh ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Pound Rush (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2pndrsh ) +GAME (198?, j2pyramd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Pyramid (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2reelbn ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Reel Bingo Club (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelbn ) +GAMEL(198?, j2reelbna,j2reelbn ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Reel Bingo Club (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelbn ) +GAMEL(198?, j2reelbo ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Reel Bonus (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelbo ) +GAME (198?, j2reelmg ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Reel Magic (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2reelmgd,j2reelmg ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Reel Magic (JPM) [Dutch] (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2reelmc ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Reel Magic Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelmc ) +GAMEL(198?, j2reelmo ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Reel Money (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelmo ) +GAME (198?, j2rotnot ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Rota Note (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2roulcl ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Roulette Club (JPM) [Mps] (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2rdclb ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Royal Deal Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2rdclb ) +GAMEL(198?, j2slvrgh ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Silver Ghost (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2slvrgh ) +GAMEL(198?, j2sldgld ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Solid Gold (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2sldgld ) +GAMEL(198?, j2spcrsv ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Special Reserve (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2spcrsv ) +GAMEL(198?, j2stahed ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Streets Ahead (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2stahed ) +GAME (198?, j2supfrt ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Supa Fruit (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2supfrc ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Supa Fruit Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2supfrc ) +GAMEL(1987, j2supsft ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Supashifta (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2supsft ) +GAMEL(198?, j2supstp ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Supa Steppa (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2supstp ) +GAMEL(198?, j2suptrk ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Supa Track (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2suptrk ) +GAME (198?, j2suprft ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Super Fruit (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2supln ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Super Line (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2suppot ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Super Pots (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2suprl ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Super Reel (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2suprsh ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Supershot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2suprsh ) +GAME (198?, j2supstr ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Superstars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2swbank ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Switch Back (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2swbank ) +GAMEL(198?, j2take2 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Take 2 (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2take2 ) +GAME (198?, j2topsht ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Top Shot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2westrn ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Western (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) + + +GAMEL(198?, j2blustr ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Blue Streak (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2blustr ) +GAMEL(198?, j2cshalm ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Cash Alarm (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshalm ) +GAMEL(198?, j2cshcrd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Cash Cards (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshcrd ) +GAMEL(198?, j2cshfil ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Cash-Filla (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshfil ) +GAMEL(198?, j2cshsmh ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Cash Smash (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshsmh ) +GAMEL(198?, j2criscr ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Criss Cross Jackpot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2criscr ) +GAMEL(198?, j2frucnx ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Fruit Connexion (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2frucnx ) +GAMEL(198?, j2hitmon ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Hit Money (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hitmon ) +GAMEL(198?, j2penny ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","In For A Penny In For A Pound (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2penny ) +GAMEL(198?, j2maxima ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Maxima (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2maxima ) +GAMEL(198?, j2montrp ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Money Trapper (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2montrp ) +GAMEL(198?, j2nudmon ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Nudge Money (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nudmon ) +GAMEL(198?, j2paypkt ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Pay Packet (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2paypkt ) +GAMEL(198?, j2silvcl ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Silver Classic (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2silvcl ) +GAMEL(198?, j2silvsh ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Silver Shot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2silvsh ) +GAMEL(198?, j2sstrea ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Supa Streak (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2sstrea ) +GAMEL(198?, j2tstplt ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Test Pilot (Set 1) (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2tstplt ) +GAMEL(198?, j2tstplta,j2tstplt ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Test Pilot (Set 2) (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2tstplt ) + +GAME (198?, j2bonanz ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Eurocoin","Bonanza (Eurocoin) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2supchy ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Eurocoin","Super Cherry (Eurocoin) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) + +GAMEL(198?, j2hilocl ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Crystal","Hi Lo Climber Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2hilocl ) +GAMEL(198?, j2litnot ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Crystal","Lite A Note Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2litnot ) +GAMEL(198?, j2missis ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Crystal","Mississippi Gambler Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2missis ) + +GAMEL(198?, j2always ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","Always Eight (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2always ) +GAMEL(198?, j2coinsh ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","Coin Shoot (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2coinsh ) +GAMEL(198?, j2nudfev ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","Nudge Fever (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nudfev ) +GAMEL(198?, j2trail ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","Trailblazer (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2trail ) +GAME (198?, j2wag ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","Win-A-Gain (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) + +GAMEL(198?, j2cshnud ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Mdm","Cash Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cshnud ) +GAME (198?, j2fivepn ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Mdm","Fivepenny Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2nolimt ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Mdm","No Limit Nudge (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2nolimt ) + +GAME (198?, j2strk10 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Ace?","Strike Ten (Ace) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) // there was another (68k based) game in this set, which makes me wonder if this one is by Ace at all + + + + +GAME (198?, j2bkroll ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Bank Roll (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2bodym ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Body Match (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2cvault ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Cash Vault (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2cvault ) +GAME (198?, j2cashab ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Cashablanca (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2cashry ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Cashino Royale (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2casino ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Casino Classic (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2coinct ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Coin Count (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2loots ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","Loot Shoot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2match ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Match It (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2monbnd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Money Bands (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2monmtx ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","Money Matrix (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2tst ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","MPS 1 Test Rom (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2nudnud ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Nudge Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2pinac ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Pinnacle (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2pinclb ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Pinnacle Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2reelcz ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Reel Crazy (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2reelcz ) +GAME (198?, j2reeldc ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Reel Deal Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2topcd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","Top Card (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2xxx ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","Triple X (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2tupnud ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Tuppenny Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2wrb ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Wild Reel Bingo (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2ncsp ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","unknown 'ncsp0pp' (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2nrrp ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Bwb","unknown 'nprpopp' (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2nsc15 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","unknown 'nsc15' (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2nsw12 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Pcp","unknown 'nsw12' (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) + +GAME (198?, j2club77 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Club 77 (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2contnd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Mdm","Continuous Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAMEL(198?, j2crown ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Crown Dealer (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL, layout_j2crown ) +GAME (198?, j2hirola ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Hi Roll (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2monmin ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Money Mine (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2notspn ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Note Spinner (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2super7 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Super 7's (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2sex ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Super Exchanger (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2sng ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Cotswold Microsystems","Super Nudge Gambler (Cotswold Microsystems) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2tupnd ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Mdm","Tuppenny Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2008 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","unknown '008' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2chsn ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","unknown 'chsnsn05' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2lhs ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","unknown 'lhs' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2nn2 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","unknown 'nn_2' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2rm941 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","unknown 'rm941' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2pharo ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Pharoah (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) + +GAME (198?, j2nud5p ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","5p Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2b7 ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Bar 7? (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2ss ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Supa Stepper (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2nbz ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Nudge Bonanza (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) + +GAME (198?, j2clbbin ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "Crystal?","Club Bingo (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) + +GAME (198?, j2sirich ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Strike It Rich (JPM) (MPS) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) // I don't think this is MayGay, it was just in a MayGay set with some actual MayGay roms +GAME (198?, j2siricha,j2sirich ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "JPM","Strike It Rich (JPM) (MPS) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // I don't think this is MayGay, it was just in a MayGay set with some actual MayGay roms + +GAME (198?, j2hcash ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Hot Cash (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j2sset ,0 ,jpmmps,jpmmps, jpmmps_state, 0,ROT0, "","Sunset Strip (v2.0) (Unk) (MPS?)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/jpms80.cpp b/src/mame/drivers/jpms80.cpp index df240e73caa..43968eccf46 100644 --- a/src/mame/drivers/jpms80.cpp +++ b/src/mame/drivers/jpms80.cpp @@ -95,7 +95,7 @@ void jpms80_state::machine_reset() static_cast(machine().device("maincpu"))->ready_line(ASSERT_LINE); } -static MACHINE_CONFIG_START( jpms80, jpms80_state ) +static MACHINE_CONFIG_START( jpms80 ) // CPU TMS9995, standard variant; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9995, MAIN_CLOCK, jpms80_map, jpms80_io_map) MCFG_SPEAKER_STANDARD_MONO("mono") @@ -306,7 +306,7 @@ ROM_END GAMEL(198?, j80bac ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Bank A Coin (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80bac ) GAMEL(198?, j80bounc ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Bouncer (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80bounc ) GAMEL(198?, j80frogh ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Frog Hop (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80frogh ) -GAME(198?, j80fruit ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Fruit Snappa (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j80fruit ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Fruit Snappa (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) GAMEL(198?, j80golds ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Golden Steppa (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80golds ) GAMEL(198?, j80hotln ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Hot Lines (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80hotln ) GAMEL(198?, j80myspn ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Mystery Spin (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80myspn ) @@ -316,16 +316,16 @@ GAMEL(198?, j80rra ,j80rr ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JP GAMEL(198?, j80supst ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Supa Steppa (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80supst ) GAMEL(198?, j80supbk ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Superbank (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80supbk ) GAMEL(198?, j80topsp ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Top Sprint (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80topsp ) -GAME(198?, j80topup ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Top Up (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j80tumbl ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Tumble (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j80topup ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Top Up (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j80tumbl ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Tumble (JPM) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) GAMEL(198?, j80wsprt, 0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Winsprint (JPM) (V4, 5x20p) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80wsprt2 ) GAMEL(198?, j80wsprt3, j80wsprt ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Winsprint (JPM) (V3, 50p, 5 credits) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80wsprt2 ) GAMEL(198?, j80wsprt2,j80wsprt ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Winsprint (JPM) (V2, 10x10p) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL, layout_j80wsprt2 ) -GAME(198?, j80blbnk ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "PCP","Blankity Bank (PCP) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j80blbnk ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "PCP","Blankity Bank (PCP) (SYSTEM80)", MACHINE_IS_SKELETON_MECHANICAL ) // these look like they're probably SYSTEM80, not 100% sure tho -GAME(198?, j80alad ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Aladdin's Cave (PCP)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j80fortr ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Fortune Trail (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j80mster ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Masterspy (Pcp)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j80plsnd ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Plus Nudge (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j80alad ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Aladdin's Cave (PCP)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j80fortr ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Fortune Trail (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j80mster ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Masterspy (Pcp)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (198?, j80plsnd ,0 ,jpms80,jpms80, jpms80_state,jpms80,ROT0, "JPM","Plus Nudge (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/jpmsru.cpp b/src/mame/drivers/jpmsru.cpp index 98a3a895991..b64a708524a 100644 --- a/src/mame/drivers/jpmsru.cpp +++ b/src/mame/drivers/jpmsru.cpp @@ -63,11 +63,11 @@ ADDRESS_MAP_END static INPUT_PORTS_START( jpmsru ) INPUT_PORTS_END -static MACHINE_CONFIG_START( jpmsru, jpmsru_state ) +static MACHINE_CONFIG_START( jpmsru ) MCFG_TMS99xx_ADD("maincpu", TMS9980A, MAIN_CLOCK, jpmsru_map, jpmsru_io) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jpmsru_4, jpmsru_state ) +static MACHINE_CONFIG_START( jpmsru_4 ) MCFG_TMS99xx_ADD("maincpu", TMS9980A, MAIN_CLOCK, jpmsru_4_map, jpmsru_io) MACHINE_CONFIG_END @@ -164,22 +164,22 @@ ROM_START( j_unk ) ROM_LOAD( "sruunk1.p3", 0x0800, 0x000400, CRC(25138e03) SHA1(644fc6144ea74f08dc892f106ad494ba364afe86) ) ROM_END -GAME(198?, j_ewnud ,0 ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Nudger (Barcrest?, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_ewnda ,j_ewnud ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Nudger (Barcrest?, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_ewnd20 ,j_ewnud ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Nudger (Barcrest?, set 3, version 20?)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_ews ,0 ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Shifter (Barcrest?, set 1, version 16)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_ews8a ,j_ews ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Shifter (Barcrest?, set 2, version 8a)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_ewnud ,0 ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Nudger (Barcrest?, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_ewnda ,j_ewnud ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Nudger (Barcrest?, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_ewnd20 ,j_ewnud ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Nudger (Barcrest?, set 3, version 20?)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_ews ,0 ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Shifter (Barcrest?, set 1, version 16)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_ews8a ,j_ews ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "Barcrest?","Each Way Shifter (Barcrest?, set 2, version 8a)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_luckac ,0 ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "","Lucky Aces (Unk)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_super2 ,0 ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Super 2 (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_luckac ,0 ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "","Lucky Aces (Unk)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_super2 ,0 ,jpmsru,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Super 2 (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_luck2 ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "","Lucky Twos?", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_luck2 ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "","Lucky Twos?", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_nuddup ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Nudge Double Up (JPM SRU, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_nuddup ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Nudge Double Up (JPM SRU, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_nuddup2,j_nuddup ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Nudge Double Up (JPM SRU, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_nuddup2,j_nuddup ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Nudge Double Up (JPM SRU, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(198?, j_unk ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM?","unknown SRU Game (JPM?)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_unk ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM?","unknown SRU Game (JPM?)", MACHINE_IS_SKELETON_MECHANICAL ) // this one is different again? -GAME(198?, j_plus2 ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Plus 2 (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(198?, j_plus2 ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Plus 2 (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/jpmsys5.cpp b/src/mame/drivers/jpmsys5.cpp index fb807e877a5..07186fe79f0 100644 --- a/src/mame/drivers/jpmsys5.cpp +++ b/src/mame/drivers/jpmsys5.cpp @@ -619,7 +619,7 @@ MACHINE_RESET_MEMBER(jpmsys5_state,jpmsys5v) * *************************************/ -static MACHINE_CONFIG_START( jpmsys5v, jpmsys5_state ) +static MACHINE_CONFIG_START( jpmsys5v ) MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(68000_map) @@ -835,7 +835,7 @@ MACHINE_RESET_MEMBER(jpmsys5_state,jpmsys5) *************************************/ // later (incompatible with earlier revision) motherboards used a YM2413 -MACHINE_CONFIG_START( jpmsys5_ym, jpmsys5_state ) +MACHINE_CONFIG_START( jpmsys5_ym ) MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(68000_awp_map) @@ -889,7 +889,7 @@ MACHINE_CONFIG_START( jpmsys5_ym, jpmsys5_state ) MACHINE_CONFIG_END // the first rev PCB used an SAA1099 -MACHINE_CONFIG_START( jpmsys5, jpmsys5_state ) +MACHINE_CONFIG_START( jpmsys5 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(68000_awp_map_saa) @@ -1039,8 +1039,8 @@ ROM_END /* Video based titles */ -GAME( 1994, monopoly , 0 , jpmsys5v, monopoly, driver_device, 0, ROT0, "JPM", "Monopoly (JPM) (SYSTEM5 VIDEO, set 1)", 0 ) -GAME( 1994, monopolya , monopoly , jpmsys5v, monopoly, driver_device, 0, ROT0, "JPM", "Monopoly (JPM) (SYSTEM5 VIDEO, set 2)", 0 ) -GAME( 1995, monoplcl , monopoly , jpmsys5v, monopoly, driver_device, 0, ROT0, "JPM", "Monopoly Classic (JPM) (SYSTEM5 VIDEO)", 0 ) -GAME( 1995, monopldx , 0 , jpmsys5v, monopoly, driver_device, 0, ROT0, "JPM", "Monopoly Deluxe (JPM) (SYSTEM5 VIDEO)", 0 ) -GAME( 199?, cashcade , 0 , jpmsys5v, monopoly, driver_device, 0, ROT0, "JPM", "Cashcade (JPM) (SYSTEM5 VIDEO)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) // shows a loading error.. is the set incomplete? +GAME( 1994, monopoly , 0 , jpmsys5v, monopoly, jpmsys5_state, 0, ROT0, "JPM", "Monopoly (JPM) (SYSTEM5 VIDEO, set 1)", 0 ) +GAME( 1994, monopolya , monopoly , jpmsys5v, monopoly, jpmsys5_state, 0, ROT0, "JPM", "Monopoly (JPM) (SYSTEM5 VIDEO, set 2)", 0 ) +GAME( 1995, monoplcl , monopoly , jpmsys5v, monopoly, jpmsys5_state, 0, ROT0, "JPM", "Monopoly Classic (JPM) (SYSTEM5 VIDEO)", 0 ) +GAME( 1995, monopldx , 0 , jpmsys5v, monopoly, jpmsys5_state, 0, ROT0, "JPM", "Monopoly Deluxe (JPM) (SYSTEM5 VIDEO)", 0 ) +GAME( 199?, cashcade , 0 , jpmsys5v, monopoly, jpmsys5_state, 0, ROT0, "JPM", "Cashcade (JPM) (SYSTEM5 VIDEO)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) // shows a loading error.. is the set incomplete? diff --git a/src/mame/drivers/jpmsys5sw.cpp b/src/mame/drivers/jpmsys5sw.cpp index 14d0f3bf66f..f1ff1c6c530 100644 --- a/src/mame/drivers/jpmsys5sw.cpp +++ b/src/mame/drivers/jpmsys5sw.cpp @@ -1410,228 +1410,228 @@ ROM_END #define GAME_FLAGS MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL|MACHINE_NO_SOUND|MACHINE_CLICKABLE_ARTWORK -GAME( 199?, j5tstal , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "JPM System 5 Alpha Display Test Utility (JPM) (SYSTEM5)", GAME_FLAGS ) -GAME( 199?, j5tst1 , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "JPM System 5 Test Set (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5tst2 , j5tst1 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "JPM System 5 Test Set (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5tstal , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "JPM System 5 Alpha Display Test Utility (JPM) (SYSTEM5)", GAME_FLAGS ) +GAME( 199?, j5tst1 , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "JPM System 5 Test Set (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5tst2 , j5tst1 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "JPM System 5 Test Set (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) /* SAA based board */ -GAME( 199?, j5fifth , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "5th Avenue (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) +GAME( 199?, j5fifth , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "5th Avenue (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) -GAME( 199?, j5clbnud , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Club Nudger (JPM) (SYSTEM5-SAA, set 1)", GAME_FLAGS ) -GAME( 199?, j5clbnuda , j5clbnud , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Club Nudger (JPM) (SYSTEM5-SAA, set 2)", GAME_FLAGS ) +GAME( 199?, j5clbnud , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Club Nudger (JPM) (SYSTEM5-SAA, set 1)", GAME_FLAGS ) +GAME( 199?, j5clbnuda , j5clbnud , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Club Nudger (JPM) (SYSTEM5-SAA, set 2)", GAME_FLAGS ) -GAMEL( 199?, j5firebl , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Fireball (JPM) (SYSTEM5-SAA, set 1)", GAME_FLAGS, layout_j5firebl ) -GAMEL( 199?, j5firebla , j5firebl , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Fireball (JPM) (SYSTEM5-SAA, set 2)", GAME_FLAGS, layout_j5firebl ) -GAMEL( 199?, j5fireblb , j5firebl , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Fireball (JPM) (SYSTEM5-SAA, set 3)", GAME_FLAGS, layout_j5firebl ) +GAMEL( 199?, j5firebl , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fireball (JPM) (SYSTEM5-SAA, set 1)", GAME_FLAGS, layout_j5firebl ) +GAMEL( 199?, j5firebla , j5firebl , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fireball (JPM) (SYSTEM5-SAA, set 2)", GAME_FLAGS, layout_j5firebl ) +GAMEL( 199?, j5fireblb , j5firebl , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fireball (JPM) (SYSTEM5-SAA, set 3)", GAME_FLAGS, layout_j5firebl ) -GAME( 199?, j5frmag , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Fruit Magic (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) +GAME( 199?, j5frmag , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fruit Magic (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) -GAME( 199?, j5goldbr , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Golden Bars (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) +GAME( 199?, j5goldbr , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Golden Bars (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) -GAME( 199?, j5reelgh , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Reel Ghost (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) +GAME( 199?, j5reelgh , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Reel Ghost (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) -GAME( 199?, j5sup4 , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Super 4 (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) +GAME( 199?, j5sup4 , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Super 4 (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) -GAMEL( 199?, j5suphi , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Super Hi-Lo (JPM) (SYSTEM5-SAA)", GAME_FLAGS, layout_j5suphi ) +GAMEL( 199?, j5suphi , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Super Hi-Lo (JPM) (SYSTEM5-SAA)", GAME_FLAGS, layout_j5suphi ) -GAMEL( 199?, j5swop , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Swop A Fruit Club (JPM) (SYSTEM5-SAA)", GAME_FLAGS, layout_j5swop ) +GAMEL( 199?, j5swop , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Swop A Fruit Club (JPM) (SYSTEM5-SAA)", GAME_FLAGS, layout_j5swop ) -GAME( 199?, j5td , 0 , jpmsys5, popeye, driver_device, 0, ROT0, "JPM", "Tumbling Dice (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) +GAME( 199?, j5td , 0 , jpmsys5, popeye, jpmsys5_state, 0, ROT0, "JPM", "Tumbling Dice (JPM) (SYSTEM5-SAA)", GAME_FLAGS ) /* YM based board */ -GAME( 199?, j5ar80 , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) // This was also listed as by 'Crystal'. There was Crystal ROM in the set, but it wasn't an JPM SYS5 rom... -GAME( 199?, j5ar80a , j5ar80 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5ar80b , j5ar80 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) -GAME( 199?, j5ar80c , j5ar80 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) -GAME( 199?, j5ar80d , j5ar80 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) - -GAMEL( 199?, j5ar80cl , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Around The World Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5ar80cla ) -GAMEL( 199?, j5ar80cla , j5ar80cl , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Around The World Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5ar80cla ) -GAMEL( 199?, j5ar80clb , j5ar80cl , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Around The World Club (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5ar80cla ) -GAMEL( 199?, j5ar80clc , j5ar80cl , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Around The World Club (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5ar80cla ) - -GAME( 199?, j5buc , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Buccaneer (JPM) (SYSTEM5)", GAME_FLAGS ) - -GAMEL( 199?, j5cir , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5cira ) -GAMEL( 199?, j5cira , j5cir , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5cira ) -GAMEL( 199?, j5cirb , j5cir , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5cira ) -GAMEL( 199?, j5circ , j5cir , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5cira ) -GAMEL( 199?, j5cird , j5cir , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 5)", GAME_FLAGS, layout_j5cira ) -GAMEL( 199?, j5cire , j5cir , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 6)", GAME_FLAGS, layout_j5cira ) - - -GAME( 199?, j5daytn , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Daytona (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5daytna , j5daytn , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Daytona (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) - -GAME( 199?, j5daycls , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Daytona Classic (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5dayclsa , j5daycls , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Daytona Classic (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) - -GAME( 199?, j5dirty , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Dirty Dozen (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5dirtya , j5dirty , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Dirty Dozen (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5dirtyb , j5dirty , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Dirty Dozen (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) -GAME( 199?, j5dirtyc , j5dirty , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Dirty Dozen (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) - -GAME( 199?, j5fairgd , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) // or just 'Fairground' ? -GAME( 199?, j5fairgda , j5fairgd , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5fairgdb , j5fairgd , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) -GAME( 199?, j5fairgdc , j5fairgd , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) -GAME( 199?, j5fairgdd , j5fairgd , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) -GAME( 199?, j5fairgde , j5fairgd , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 6)", GAME_FLAGS ) - -GAMEL( 199?, j5fair , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5faira , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairb , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairc , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5faird , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 5)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5faire , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 6)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairf , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 7)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairg , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 8)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairh , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 9)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairi , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 10)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairj , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 11)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairk , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 12)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairl , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 13)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairm , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 14)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairn , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 15)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairo , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 16)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairp , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 17)", GAME_FLAGS, layout_j5fairp ) -GAMEL( 199?, j5fairq , j5fair , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 18)", GAME_FLAGS, layout_j5fairp ) - -GAME( 199?, j5filth , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5filtha , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5filthb , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) -GAME( 199?, j5filthc , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) -GAME( 199?, j5filthd , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) -GAME( 199?, j5filthe , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 6)", GAME_FLAGS ) -GAME( 199?, j5filthf , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 7)", GAME_FLAGS ) -GAME( 199?, j5filthg , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 8)", GAME_FLAGS ) -GAME( 199?, j5filthh , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 9)", GAME_FLAGS ) -GAME( 199?, j5filthi , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 10)", GAME_FLAGS ) -GAME( 199?, j5filthj , j5filth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 11)", GAME_FLAGS ) - - -GAME( 199?, j5hagar , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5hagara , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5hagarb , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) -GAME( 199?, j5hagarc , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) -GAME( 199?, j5hagard , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) -GAME( 199?, j5hagare , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 6)", GAME_FLAGS ) -GAME( 199?, j5hagarf , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 7)", GAME_FLAGS ) -GAME( 199?, j5hagarg , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 8)", GAME_FLAGS ) -GAME( 199?, j5hagarh , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 9)", GAME_FLAGS ) -GAME( 199?, j5hagari , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 10)", GAME_FLAGS ) -GAME( 199?, j5hagarj , j5hagar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 11)", GAME_FLAGS ) - -GAME( 199?, j5hagsho , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar Showcase (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5hagshoa , j5hagsho , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar Showcase (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5hagshob , j5hagsho , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar Showcase (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) -GAME( 199?, j5hagshoc , j5hagsho , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hagar Showcase (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) +GAME( 199?, j5ar80 , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) // This was also listed as by 'Crystal'. There was Crystal ROM in the set, but it wasn't an JPM SYS5 rom... +GAME( 199?, j5ar80a , j5ar80 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5ar80b , j5ar80 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) +GAME( 199?, j5ar80c , j5ar80 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) +GAME( 199?, j5ar80d , j5ar80 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Around The World In Eighty Days (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) + +GAMEL( 199?, j5ar80cl , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Around The World Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5ar80cla ) +GAMEL( 199?, j5ar80cla , j5ar80cl , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Around The World Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5ar80cla ) +GAMEL( 199?, j5ar80clb , j5ar80cl , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Around The World Club (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5ar80cla ) +GAMEL( 199?, j5ar80clc , j5ar80cl , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Around The World Club (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5ar80cla ) + +GAME( 199?, j5buc , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Buccaneer (JPM) (SYSTEM5)", GAME_FLAGS ) + +GAMEL( 199?, j5cir , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5cira ) +GAMEL( 199?, j5cira , j5cir , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5cira ) +GAMEL( 199?, j5cirb , j5cir , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5cira ) +GAMEL( 199?, j5circ , j5cir , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5cira ) +GAMEL( 199?, j5cird , j5cir , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 5)", GAME_FLAGS, layout_j5cira ) +GAMEL( 199?, j5cire , j5cir , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Circus (JPM) (SYSTEM5, set 6)", GAME_FLAGS, layout_j5cira ) + + +GAME( 199?, j5daytn , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Daytona (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5daytna , j5daytn , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Daytona (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) + +GAME( 199?, j5daycls , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Daytona Classic (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5dayclsa , j5daycls , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Daytona Classic (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) + +GAME( 199?, j5dirty , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Dirty Dozen (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5dirtya , j5dirty , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Dirty Dozen (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5dirtyb , j5dirty , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Dirty Dozen (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) +GAME( 199?, j5dirtyc , j5dirty , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Dirty Dozen (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) + +GAME( 199?, j5fairgd , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) // or just 'Fairground' ? +GAME( 199?, j5fairgda , j5fairgd , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5fairgdb , j5fairgd , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) +GAME( 199?, j5fairgdc , j5fairgd , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) +GAME( 199?, j5fairgdd , j5fairgd , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) +GAME( 199?, j5fairgde , j5fairgd , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground Attraction Club (JPM) (SYSTEM5, set 6)", GAME_FLAGS ) + +GAMEL( 199?, j5fair , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5faira , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairb , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairc , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5faird , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 5)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5faire , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 6)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairf , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 7)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairg , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 8)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairh , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 9)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairi , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 10)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairj , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 11)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairk , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 12)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairl , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 13)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairm , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 14)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairn , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 15)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairo , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 16)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairp , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 17)", GAME_FLAGS, layout_j5fairp ) +GAMEL( 199?, j5fairq , j5fair , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Fairground (JPM) (SYSTEM5, set 18)", GAME_FLAGS, layout_j5fairp ) + +GAME( 199?, j5filth , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5filtha , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5filthb , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) +GAME( 199?, j5filthc , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) +GAME( 199?, j5filthd , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) +GAME( 199?, j5filthe , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 6)", GAME_FLAGS ) +GAME( 199?, j5filthf , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 7)", GAME_FLAGS ) +GAME( 199?, j5filthg , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 8)", GAME_FLAGS ) +GAME( 199?, j5filthh , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 9)", GAME_FLAGS ) +GAME( 199?, j5filthi , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 10)", GAME_FLAGS ) +GAME( 199?, j5filthj , j5filth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Filthy Rich (JPM) (SYSTEM5, set 11)", GAME_FLAGS ) + + +GAME( 199?, j5hagar , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5hagara , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5hagarb , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) +GAME( 199?, j5hagarc , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) +GAME( 199?, j5hagard , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) +GAME( 199?, j5hagare , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 6)", GAME_FLAGS ) +GAME( 199?, j5hagarf , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 7)", GAME_FLAGS ) +GAME( 199?, j5hagarg , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 8)", GAME_FLAGS ) +GAME( 199?, j5hagarh , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 9)", GAME_FLAGS ) +GAME( 199?, j5hagari , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 10)", GAME_FLAGS ) +GAME( 199?, j5hagarj , j5hagar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar (JPM) (SYSTEM5, set 11)", GAME_FLAGS ) + +GAME( 199?, j5hagsho , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar Showcase (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5hagshoa , j5hagsho , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar Showcase (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5hagshob , j5hagsho , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar Showcase (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) +GAME( 199?, j5hagshoc , j5hagsho , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hagar Showcase (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) -GAMEL( 199?, j5holly , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5hollyc ) -GAMEL( 199?, j5hollya , j5holly , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5hollyc ) -GAMEL( 199?, j5hollyb , j5holly , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5hollyc ) -GAMEL( 199?, j5hollyc , j5holly , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5hollyc ) -GAMEL( 199?, j5hollyd , j5holly , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 5)", GAME_FLAGS, layout_j5hollyc ) -GAMEL( 199?, j5hollye , j5holly , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 6)", GAME_FLAGS, layout_j5hollyc ) +GAMEL( 199?, j5holly , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5hollyc ) +GAMEL( 199?, j5hollya , j5holly , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5hollyc ) +GAMEL( 199?, j5hollyb , j5holly , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5hollyc ) +GAMEL( 199?, j5hollyc , j5holly , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5hollyc ) +GAMEL( 199?, j5hollyd , j5holly , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 5)", GAME_FLAGS, layout_j5hollyc ) +GAMEL( 199?, j5hollye , j5holly , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hollywood Nights (JPM) (SYSTEM5, set 6)", GAME_FLAGS, layout_j5hollyc ) -GAMEL( 199?, j5hotdog , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hot Dogs (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5hotdoga ) -GAMEL( 199?, j5hotdoga , j5hotdog , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hot Dogs (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5hotdoga ) +GAMEL( 199?, j5hotdog , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hot Dogs (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5hotdoga ) +GAMEL( 199?, j5hotdoga , j5hotdog , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hot Dogs (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5hotdoga ) -GAMEL( 199?, j5indsum , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Indian Summer (JPM) (SYSTEM5)", GAME_FLAGS, layout_j5indsum ) - - -GAMEL( 199?, j5intr , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Intrigue (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5intr ) -GAMEL( 199?, j5intra , j5intr , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Intrigue (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5intr ) -GAMEL( 199?, j5intrb , j5intr , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Intrigue (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5intr ) -GAMEL( 199?, j5intrc , j5intr , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Intrigue (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5intr ) - -GAME( 199?, j5jokgld , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5jokglda , j5jokgld , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5jokgldb , j5jokgld , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) -GAME( 199?, j5jokgldc , j5jokgld , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) -GAME( 199?, j5jokgldd , j5jokgld , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) -GAME( 199?, j5jokglde , j5jokgld , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 6)", GAME_FLAGS ) -GAME( 199?, j5jokgldf , j5jokgld , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 7)", GAME_FLAGS ) -GAME( 199?, j5jokgldg , j5jokgld , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 8)", GAME_FLAGS ) -GAME( 199?, j5jokgldh , j5jokgld , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 9)", GAME_FLAGS ) - -GAMEL( 199?, j5nite , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Nite Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5nite ) -GAMEL( 199?, j5nitea , j5nite , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Nite Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5nite ) - -GAMEL( 199?, j5palm , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Palm Springs (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5palma ) // doesn't behave well -GAMEL( 199?, j5palma , j5palm , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Palm Springs (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5palma ) - -GAME( 199?, j5phnx , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Phoenix (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5phnxa , j5phnx , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Phoenix (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) - -GAMEL( 199?, j5popeye , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5popeye ) // (20p/8 GBP Token) ? -GAMEL( 199?, j5popeyea , j5popeye , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5popeye ) -GAMEL( 199?, j5popeyeb , j5popeye , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5popeye ) -GAMEL( 199?, j5popeyec , j5popeye , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5popeye ) -GAMEL( 199?, j5popeyed , j5popeye , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 5)", GAME_FLAGS, layout_j5popeye ) -GAMEL( 199?, j5popeyee , j5popeye , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 6)", GAME_FLAGS, layout_j5popeye ) -GAMEL( 199?, j5popeyef , j5popeye , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 7)", GAME_FLAGS, layout_j5popeye ) -GAMEL( 199?, j5popeyeg , j5popeye , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 8)", GAME_FLAGS, layout_j5popeye ) -GAMEL( 199?, j5popeyeh , j5popeye , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 9)", GAME_FLAGS, layout_j5popeye ) -GAMEL( 199?, j5popeyei , j5popeye , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 10)", GAME_FLAGS, layout_j5popeye ) - -GAME( 199?, j5popth , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye's Treasure Hunt (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5poptha , j5popth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye's Treasure Hunt (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5popthb , j5popth , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Popeye's Treasure Hunt (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) - -GAME( 199?, j5popprz , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Prize Popeye Vending (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5popprza , j5popprz , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Prize Popeye Vending (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) - - -GAME( 199?, j5roul , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Roulette (JPM) (SYSTEM5)", GAME_FLAGS ) +GAMEL( 199?, j5indsum , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Indian Summer (JPM) (SYSTEM5)", GAME_FLAGS, layout_j5indsum ) + + +GAMEL( 199?, j5intr , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Intrigue (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5intr ) +GAMEL( 199?, j5intra , j5intr , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Intrigue (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5intr ) +GAMEL( 199?, j5intrb , j5intr , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Intrigue (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5intr ) +GAMEL( 199?, j5intrc , j5intr , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Intrigue (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5intr ) + +GAME( 199?, j5jokgld , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5jokglda , j5jokgld , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5jokgldb , j5jokgld , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) +GAME( 199?, j5jokgldc , j5jokgld , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) +GAME( 199?, j5jokgldd , j5jokgld , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 5)", GAME_FLAGS ) +GAME( 199?, j5jokglde , j5jokgld , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 6)", GAME_FLAGS ) +GAME( 199?, j5jokgldf , j5jokgld , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 7)", GAME_FLAGS ) +GAME( 199?, j5jokgldg , j5jokgld , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 8)", GAME_FLAGS ) +GAME( 199?, j5jokgldh , j5jokgld , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Jokers Gold (JPM) (SYSTEM5, set 9)", GAME_FLAGS ) + +GAMEL( 199?, j5nite , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Nite Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5nite ) +GAMEL( 199?, j5nitea , j5nite , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Nite Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5nite ) + +GAMEL( 199?, j5palm , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Palm Springs (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5palma ) // doesn't behave well +GAMEL( 199?, j5palma , j5palm , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Palm Springs (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5palma ) + +GAME( 199?, j5phnx , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Phoenix (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5phnxa , j5phnx , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Phoenix (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) + +GAMEL( 199?, j5popeye , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5popeye ) // (20p/8 GBP Token) ? +GAMEL( 199?, j5popeyea , j5popeye , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5popeye ) +GAMEL( 199?, j5popeyeb , j5popeye , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5popeye ) +GAMEL( 199?, j5popeyec , j5popeye , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 4)", GAME_FLAGS, layout_j5popeye ) +GAMEL( 199?, j5popeyed , j5popeye , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 5)", GAME_FLAGS, layout_j5popeye ) +GAMEL( 199?, j5popeyee , j5popeye , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 6)", GAME_FLAGS, layout_j5popeye ) +GAMEL( 199?, j5popeyef , j5popeye , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 7)", GAME_FLAGS, layout_j5popeye ) +GAMEL( 199?, j5popeyeg , j5popeye , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 8)", GAME_FLAGS, layout_j5popeye ) +GAMEL( 199?, j5popeyeh , j5popeye , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 9)", GAME_FLAGS, layout_j5popeye ) +GAMEL( 199?, j5popeyei , j5popeye , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye (JPM) (SYSTEM5, set 10)", GAME_FLAGS, layout_j5popeye ) + +GAME( 199?, j5popth , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye's Treasure Hunt (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5poptha , j5popth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye's Treasure Hunt (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5popthb , j5popth , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Popeye's Treasure Hunt (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) + +GAME( 199?, j5popprz , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Prize Popeye Vending (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5popprza , j5popprz , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Prize Popeye Vending (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) + + +GAME( 199?, j5roul , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Roulette (JPM) (SYSTEM5)", GAME_FLAGS ) -GAME( 199?, j5roulcl , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Roulette Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5roulcla , j5roulcl , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Roulette Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5roulclb , j5roulcl , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Roulette Club (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) -GAME( 199?, j5roulclc , j5roulcl , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Roulette Club (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) +GAME( 199?, j5roulcl , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Roulette Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5roulcla , j5roulcl , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Roulette Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5roulclb , j5roulcl , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Roulette Club (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) +GAME( 199?, j5roulclc , j5roulcl , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Roulette Club (JPM) (SYSTEM5, set 4)", GAME_FLAGS ) -GAME( 199?, j5slvree , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Silver Reels (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5slvreea , j5slvree , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Silver Reels (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5slvree , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Silver Reels (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5slvreea , j5slvree , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Silver Reels (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5slvstr , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Silver Streak (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5slvstra , j5slvstr , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Silver Streak (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAME( 199?, j5slvstrb , j5slvstr , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Silver Streak (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) +GAME( 199?, j5slvstr , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Silver Streak (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5slvstra , j5slvstr , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Silver Streak (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5slvstrb , j5slvstr , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Silver Streak (JPM) (SYSTEM5, set 3)", GAME_FLAGS ) -GAME( 199?, j5street , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Streetwise (JPM) (SYSTEM5)", GAME_FLAGS ) // doesn't behave well +GAME( 199?, j5street , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Streetwise (JPM) (SYSTEM5)", GAME_FLAGS ) // doesn't behave well -GAMEL( 199?, j5supbar , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Super Bars (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5supbara ) -GAMEL( 199?, j5supbara , j5supbar , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Super Bars (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5supbara ) +GAMEL( 199?, j5supbar , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Super Bars (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5supbara ) +GAMEL( 199?, j5supbara , j5supbar , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Super Bars (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5supbara ) -GAMEL( 199?, j5term , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Terminator (JPM) (SYSTEM5)", GAME_FLAGS, layout_j5term ) +GAMEL( 199?, j5term , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Terminator (JPM) (SYSTEM5)", GAME_FLAGS, layout_j5term ) -GAMEL( 199?, j5topshp , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Top Of The Shop Club (JPM) (SYSTEM5)", GAME_FLAGS, layout_j5topshp ) +GAMEL( 199?, j5topshp , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Top Of The Shop Club (JPM) (SYSTEM5)", GAME_FLAGS, layout_j5topshp ) -GAMEL( 199?, j5trail , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Trailblazer Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5trail ) -GAMEL( 199?, j5traila , j5trail , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Trailblazer Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5trail ) -GAMEL( 199?, j5trailb , j5trail , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Trailblazer Club (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5trail ) +GAMEL( 199?, j5trail , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Trailblazer Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5trail ) +GAMEL( 199?, j5traila , j5trail , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Trailblazer Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5trail ) +GAMEL( 199?, j5trailb , j5trail , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Trailblazer Club (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5trail ) -GAMEL( 199?, j5uj , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Union Jackpot (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5ujb ) -GAMEL( 199?, j5uja , j5uj , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Union Jackpot (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5ujb ) -GAMEL( 199?, j5ujb , j5uj , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Union Jackpot (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5ujb ) +GAMEL( 199?, j5uj , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Union Jackpot (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5ujb ) +GAMEL( 199?, j5uja , j5uj , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Union Jackpot (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5ujb ) +GAMEL( 199?, j5ujb , j5uj , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Union Jackpot (JPM) (SYSTEM5, set 3)", GAME_FLAGS, layout_j5ujb ) -GAMEL( 199?, j5wsc , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Wall Street Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5wsc ) -GAMEL( 199?, j5wsca , j5wsc , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Wall Street Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5wsc ) +GAMEL( 199?, j5wsc , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Wall Street Club (JPM) (SYSTEM5, set 1)", GAME_FLAGS, layout_j5wsc ) +GAMEL( 199?, j5wsca , j5wsc , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Wall Street Club (JPM) (SYSTEM5, set 2)", GAME_FLAGS, layout_j5wsc ) -GAMEL( 199?, j5movie , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "Crystal", "Movie Magic Club (Crystal) (SYSTEM5)", GAME_FLAGS, layout_j5movie ) // apparently by Crystal +GAMEL( 199?, j5movie , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "Crystal", "Movie Magic Club (Crystal) (SYSTEM5)", GAME_FLAGS, layout_j5movie ) // apparently by Crystal -GAME( 199?, j5nudfic , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Nudge Fiction (JPM) (SYSTEM5)", GAME_FLAGS ) +GAME( 199?, j5nudfic , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Nudge Fiction (JPM) (SYSTEM5)", GAME_FLAGS ) -GAME( 199?, j5revo , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Revolver (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) -GAME( 199?, j5revoa , j5revo , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Revolver (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) +GAME( 199?, j5revo , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Revolver (JPM) (SYSTEM5, set 1)", GAME_FLAGS ) +GAME( 199?, j5revoa , j5revo , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Revolver (JPM) (SYSTEM5, set 2)", GAME_FLAGS ) -GAMEL( 199?, j5sizl , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Sizzling (JPM) (SYSTEM5)", GAME_FLAGS, layout_j5sizl ) +GAMEL( 199?, j5sizl , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Sizzling (JPM) (SYSTEM5)", GAME_FLAGS, layout_j5sizl ) -GAME( 199?, j5hilos , 0 , jpmsys5_ym, popeye, driver_device, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (SYSTEM5)", GAME_FLAGS ) +GAME( 199?, j5hilos , 0 , jpmsys5_ym, popeye, jpmsys5_state, 0, ROT0, "JPM", "Hi Lo Silver (JPM) (SYSTEM5)", GAME_FLAGS ) diff --git a/src/mame/drivers/jpmsys7.cpp b/src/mame/drivers/jpmsys7.cpp index 87232a18117..8f7c2a323ed 100644 --- a/src/mame/drivers/jpmsys7.cpp +++ b/src/mame/drivers/jpmsys7.cpp @@ -52,7 +52,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( jpmsys7 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( jpmsys7, jpmsys7_state ) +static MACHINE_CONFIG_START( jpmsys7 ) MCFG_CPU_ADD("maincpu", MCF5206E, 40000000) // seems to be a Coldfire of some kind MCFG_CPU_PROGRAM_MAP(jpmsys7_map) MCFG_MCF5206E_PERIPHERAL_ADD("maincpu_onboard") @@ -225,15 +225,15 @@ ROM_START( j7bullio ) ROM_END -GAME( 200?, j7bmagic ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Black Magic (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7cexprs ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Cash Xpress (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7crztrl ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Crazy Trails (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7fantaz ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Fantaztec (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7kerchn ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Ker - Chinq (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7razzma ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Razzamataz (JPM) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7razzmaa ,j7razzma, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Razzamataz (JPM) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7r2roll ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Ready To Roll (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7tubgld ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Turbo Gold (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7wldwkd ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "JPM","Wild 'N' Wicked (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7bullio ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "Ace","Bullionaire (Ace)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 200?, j7clbmag ,0, jpmsys7, jpmsys7, driver_device, 0, ROT0, "Qps","Club Magic (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7bmagic ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Black Magic (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7cexprs ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Cash Xpress (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7crztrl ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Crazy Trails (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7fantaz ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Fantaztec (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7kerchn ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Ker - Chinq (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7razzma ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Razzamataz (JPM) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7razzmaa ,j7razzma, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Razzamataz (JPM) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7r2roll ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Ready To Roll (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7tubgld ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Turbo Gold (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7wldwkd ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "JPM","Wild 'N' Wicked (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7bullio ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "Ace","Bullionaire (Ace)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 200?, j7clbmag ,0, jpmsys7, jpmsys7, jpmsys7_state, 0, ROT0, "Qps","Club Magic (JPM)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/jr100.cpp b/src/mame/drivers/jr100.cpp index 9276ee528af..99c469c80a4 100644 --- a/src/mame/drivers/jr100.cpp +++ b/src/mame/drivers/jr100.cpp @@ -364,7 +364,7 @@ QUICKLOAD_LOAD_MEMBER( jr100_state,jr100) return image_init_result::PASS; } -static MACHINE_CONFIG_START( jr100, jr100_state ) +static MACHINE_CONFIG_START( jr100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6802, XTAL_14_31818MHz / 4) // clock devided internaly by 4 @@ -420,6 +420,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, jr100, 0, 0, jr100, jr100, driver_device, 0, "National", "JR-100", 0) -COMP( 1981, jr100u, jr100, 0, jr100, jr100, driver_device, 0, "Panasonic", "JR-100U", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, jr100, 0, 0, jr100, jr100, jr100_state, 0, "National", "JR-100", 0 ) +COMP( 1981, jr100u, jr100, 0, jr100, jr100, jr100_state, 0, "Panasonic", "JR-100U", 0 ) diff --git a/src/mame/drivers/jr200.cpp b/src/mame/drivers/jr200.cpp index 21d92e7903b..1050335963b 100644 --- a/src/mame/drivers/jr200.cpp +++ b/src/mame/drivers/jr200.cpp @@ -532,7 +532,7 @@ void jr200_state::machine_reset() } -static MACHINE_CONFIG_START( jr200, jr200_state ) +static MACHINE_CONFIG_START( jr200 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6802, XTAL_14_31818MHz / 4) /* MN1800A, ? Mhz assumption that it is same as JR-100*/ MCFG_CPU_PROGRAM_MAP(jr200_mem) @@ -596,6 +596,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, jr200, 0, 0, jr200, jr200, driver_device, 0, "National", "JR-200", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1982, jr200u, jr200, 0, jr200, jr200, driver_device, 0, "Panasonic", "JR-200U", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, jr200, 0, 0, jr200, jr200, jr200_state, 0, "National", "JR-200", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1982, jr200u, jr200, 0, jr200, jr200, jr200_state, 0, "Panasonic", "JR-200U", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/jrpacman.cpp b/src/mame/drivers/jrpacman.cpp index 7484ab4c550..792915d0a79 100644 --- a/src/mame/drivers/jrpacman.cpp +++ b/src/mame/drivers/jrpacman.cpp @@ -275,7 +275,7 @@ INTERRUPT_GEN_MEMBER(jrpacman_state::vblank_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( jrpacman, jrpacman_state ) +static MACHINE_CONFIG_START( jrpacman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ diff --git a/src/mame/drivers/jtc.cpp b/src/mame/drivers/jtc.cpp index 8618b25e7db..d8fd6fc83a5 100644 --- a/src/mame/drivers/jtc.cpp +++ b/src/mame/drivers/jtc.cpp @@ -720,7 +720,7 @@ static GFXDECODE_START( jtces40 ) GFXDECODE_ENTRY( UB8830D_TAG, 0x1000, jtces40_charlayout, 0, 8 ) GFXDECODE_END -static MACHINE_CONFIG_START( basic, jtc_state ) +static MACHINE_CONFIG_START( basic ) /* basic machine hardware */ MCFG_CPU_ADD(UB8830D_TAG, UB8830D, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(jtc_mem) @@ -760,7 +760,7 @@ static MACHINE_CONFIG_DERIVED( jtc, basic ) MCFG_RAM_DEFAULT_SIZE("2K") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( jtces88, jtc, jtces88_state ) +static MACHINE_CONFIG_DERIVED( jtces88, jtc ) /* basic machine hardware */ MCFG_CPU_MODIFY(UB8830D_TAG) MCFG_CPU_PROGRAM_MAP(jtc_es1988_mem) @@ -770,7 +770,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( jtces88, jtc, jtces88_state ) MCFG_RAM_DEFAULT_SIZE("4K") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( jtces23, basic, jtces23_state ) +static MACHINE_CONFIG_DERIVED( jtces23, basic ) /* basic machine hardware */ MCFG_CPU_MODIFY(UB8830D_TAG) MCFG_CPU_PROGRAM_MAP(jtc_es23_mem) @@ -792,7 +792,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( jtces23, basic, jtces23_state ) MCFG_RAM_DEFAULT_SIZE("4K") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( jtces40, basic, jtces40_state ) +static MACHINE_CONFIG_DERIVED( jtces40, basic ) /* basic machine hardware */ MCFG_CPU_MODIFY(UB8830D_TAG) MCFG_CPU_PROGRAM_MAP(jtc_es40_mem) @@ -846,8 +846,8 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, jtc, 0, 0, jtc, jtc, driver_device, 0, "Jugend+Technik", "CompJU+TEr", MACHINE_NOT_WORKING ) -COMP( 1988, jtces88, jtc, 0, jtces88,jtc, driver_device, 0, "Jugend+Technik", "CompJU+TEr (EMR-ES 1988)", MACHINE_NOT_WORKING ) -COMP( 1989, jtces23, jtc, 0, jtces23,jtces23, driver_device, 0, "Jugend+Technik", "CompJU+TEr (ES 2.3)", MACHINE_NOT_WORKING ) -COMP( 1990, jtces40, jtc, 0, jtces40,jtces40, driver_device, 0, "Jugend+Technik", "CompJU+TEr (ES 4.0)", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, jtc, 0, 0, jtc, jtc, jtc_state, 0, "Jugend+Technik", "CompJU+TEr", MACHINE_NOT_WORKING ) +COMP( 1988, jtces88, jtc, 0, jtces88,jtc, jtces88_state, 0, "Jugend+Technik", "CompJU+TEr (EMR-ES 1988)", MACHINE_NOT_WORKING ) +COMP( 1989, jtces23, jtc, 0, jtces23,jtces23, jtces23_state, 0, "Jugend+Technik", "CompJU+TEr (ES 2.3)", MACHINE_NOT_WORKING ) +COMP( 1990, jtces40, jtc, 0, jtces40,jtces40, jtces40_state, 0, "Jugend+Technik", "CompJU+TEr (ES 4.0)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/jubilee.cpp b/src/mame/drivers/jubilee.cpp index 79bd3f9383e..93bf71f8549 100644 --- a/src/mame/drivers/jubilee.cpp +++ b/src/mame/drivers/jubilee.cpp @@ -656,7 +656,7 @@ GFXDECODE_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( jubileep, jubilee_state ) +static MACHINE_CONFIG_START( jubileep ) // Main CPU TMS9980A, no line connections. MCFG_TMS99xx_ADD("maincpu", TMS9980A, CPU_CLOCK, jubileep_map, jubileep_cru_map) @@ -706,5 +706,5 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1985, jubileep, 0, jubileep, jubileep, driver_device, 0, ROT0, "Jubilee", "Double-Up Poker (Jubilee)", MACHINE_NO_SOUND ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1985, jubileep, 0, jubileep, jubileep, jubilee_state, 0, ROT0, "Jubilee", "Double-Up Poker (Jubilee)", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/juicebox.cpp b/src/mame/drivers/juicebox.cpp index a017084154a..0ad95457959 100644 --- a/src/mame/drivers/juicebox.cpp +++ b/src/mame/drivers/juicebox.cpp @@ -201,7 +201,7 @@ READ32_MEMBER(juicebox_state::s3c44b0_gpio_port_r) } break; } -// data = ((rand() & 0xFF) << 24) | ((rand() & 0xFF) << 16) | ((rand() & 0xFF) << 8) | ((rand() & 0xFF) << 0); +// data = ((machine().rand() & 0xFF) << 24) | ((machine().rand() & 0xFF) << 16) | ((machine().rand() & 0xFF) << 8) | ((machine().rand() & 0xFF) << 0); return data; } @@ -301,7 +301,7 @@ DRIVER_INIT_MEMBER(juicebox_state,juicebox) // do nothing } -static MACHINE_CONFIG_START( juicebox, juicebox_state ) +static MACHINE_CONFIG_START( juicebox ) MCFG_CPU_ADD("maincpu", ARM7, 66000000) MCFG_CPU_PROGRAM_MAP(juicebox_map) diff --git a/src/mame/drivers/jungleyo.cpp b/src/mame/drivers/jungleyo.cpp index 078fc267c60..12c7a5f3de9 100644 --- a/src/mame/drivers/jungleyo.cpp +++ b/src/mame/drivers/jungleyo.cpp @@ -111,7 +111,7 @@ static GFXDECODE_START( jungleyo ) GFXDECODE_END -static MACHINE_CONFIG_START( jungleyo, jungleyo_state ) +static MACHINE_CONFIG_START( jungleyo ) MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(jungleyo_map) @@ -132,7 +132,7 @@ static MACHINE_CONFIG_START( jungleyo, jungleyo_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/16, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/16, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) MACHINE_CONFIG_END @@ -157,4 +157,4 @@ ROM_START( jungleyo ) ROM_END -GAME( 1999, jungleyo, 0, jungleyo, jungleyo, driver_device, 0, ROT0, "Yonshi", "Jungle (VI3.02)", MACHINE_NOT_WORKING ) +GAME( 1999, jungleyo, 0, jungleyo, jungleyo, jungleyo_state, 0, ROT0, "Yonshi", "Jungle (VI3.02)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/junior.cpp b/src/mame/drivers/junior.cpp index bae6c5b28ce..b6872389740 100644 --- a/src/mame/drivers/junior.cpp +++ b/src/mame/drivers/junior.cpp @@ -35,12 +35,13 @@ class junior_state : public driver_device { public: junior_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_riot(*this, "riot") - , - m_maincpu(*this, "maincpu") { } + : driver_device(mconfig, type, tag) + , m_riot(*this, "riot") + , m_maincpu(*this, "maincpu") + { + } - required_device m_riot; + required_device m_riot; DECLARE_READ8_MEMBER(junior_riot_a_r); DECLARE_READ8_MEMBER(junior_riot_b_r); DECLARE_WRITE8_MEMBER(junior_riot_a_w); @@ -62,8 +63,8 @@ static ADDRESS_MAP_START(junior_mem, AS_PROGRAM, 8, junior_state) ADDRESS_MAP_GLOBAL_MASK(0x1FFF) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x03ff) AM_RAM // 1K RAM - AM_RANGE(0x1a00, 0x1a7f) AM_DEVICE("riot", mos6532_t, ram_map) - AM_RANGE(0x1a80, 0x1a9f) AM_DEVICE("riot", mos6532_t, io_map) + AM_RANGE(0x1a00, 0x1a7f) AM_DEVICE("riot", mos6532_new_device, ram_map) + AM_RANGE(0x1a80, 0x1a9f) AM_DEVICE("riot", mos6532_new_device, io_map) AM_RANGE(0x1c00, 0x1fff) AM_ROM // Monitor ADDRESS_MAP_END @@ -211,7 +212,7 @@ void junior_state::machine_reset() } -static MACHINE_CONFIG_START( junior, junior_state ) +static MACHINE_CONFIG_START( junior ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6502, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(junior_mem) @@ -221,7 +222,7 @@ static MACHINE_CONFIG_START( junior, junior_state ) MCFG_DEFAULT_LAYOUT( layout_junior ) /* Devices */ - MCFG_DEVICE_ADD("riot", MOS6532n, XTAL_1MHz) + MCFG_DEVICE_ADD("riot", MOS6532_NEW, XTAL_1MHz) MCFG_MOS6530n_IN_PA_CB(READ8(junior_state, junior_riot_a_r)) MCFG_MOS6530n_OUT_PA_CB(WRITE8(junior_state, junior_riot_a_w)) MCFG_MOS6530n_IN_PB_CB(READ8(junior_state, junior_riot_b_r)) @@ -249,5 +250,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, junior, 0, 0, junior, junior, driver_device, 0, "Elektor Electronics", "Junior Computer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1980, junior, 0, 0, junior, junior, junior_state, 0, "Elektor Electronics", "Junior Computer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/junofrst.cpp b/src/mame/drivers/junofrst.cpp index 07652b29703..019af9dce2c 100644 --- a/src/mame/drivers/junofrst.cpp +++ b/src/mame/drivers/junofrst.cpp @@ -245,7 +245,7 @@ WRITE8_MEMBER(junofrst_state::portB_w) C += 220000; /* 220000pF = 0.22uF */ data >>= 2; - filter[i]->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 200, CAP_P(C)); + filter[i]->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 2200, 200, CAP_P(C)); } } @@ -337,8 +337,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mcu_io_map, AS_IO, 8, junofrst_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w) ADDRESS_MAP_END @@ -412,7 +410,7 @@ INTERRUPT_GEN_MEMBER(junofrst_state::_30hz_irq) device.execute().set_input_line(0, ASSERT_LINE); } -static MACHINE_CONFIG_START( junofrst, junofrst_state ) +static MACHINE_CONFIG_START( junofrst ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI1, 1500000) /* 1.5 MHz ??? */ @@ -425,6 +423,8 @@ static MACHINE_CONFIG_START( junofrst, junofrst_state ) MCFG_CPU_ADD("mcu", I8039,8000000) /* 8MHz crystal */ MCFG_CPU_PROGRAM_MAP(mcu_map) MCFG_CPU_IO_MAP(mcu_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(junofrst_state, i8039_irqen_and_status_w)) MCFG_WATCHDOG_ADD("watchdog") diff --git a/src/mame/drivers/jupace.cpp b/src/mame/drivers/jupace.cpp index bbb555bfd8b..1c696430197 100644 --- a/src/mame/drivers/jupace.cpp +++ b/src/mame/drivers/jupace.cpp @@ -745,7 +745,7 @@ void ace_state::machine_start() // MACHINE_CONFIG( ace ) //------------------------------------------------- -static MACHINE_CONFIG_START( ace, ace_state ) +static MACHINE_CONFIG_START( ace ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_6_5MHz/2) MCFG_CPU_PROGRAM_MAP(ace_mem) @@ -835,5 +835,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1981, jupace, 0, 0, ace, ace, driver_device, 0, "Jupiter Cantab", "Jupiter Ace" , 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, jupace, 0, 0, ace, ace, ace_state, 0, "Jupiter Cantab", "Jupiter Ace", 0 ) diff --git a/src/mame/drivers/jupiter.cpp b/src/mame/drivers/jupiter.cpp index fa8e63511d8..f429a35de49 100644 --- a/src/mame/drivers/jupiter.cpp +++ b/src/mame/drivers/jupiter.cpp @@ -46,7 +46,7 @@ static ADDRESS_MAP_START( jupiter_m6800_mem, AS_PROGRAM, 8, jupiter2_state ) // AM_RANGE(0xff58, 0xff5c) Cartridge Disk Controller PIA // AM_RANGE(0xff60, 0xff76) DMA Controller // AM_RANGE(0xff80, 0xff83) Floppy PIA - AM_RANGE(0xff84, 0xff87) AM_DEVREADWRITE(INS1771N1_TAG, wd_fdc_t, read, write) + AM_RANGE(0xff84, 0xff87) AM_DEVREADWRITE(INS1771N1_TAG, wd_fdc_device_base, read, write) // AM_RANGE(0xff90, 0xff93) Hytype Parallel Printer PIA // AM_RANGE(0xffa0, 0xffa7) Persci Floppy Disk Controller // AM_RANGE(0xffb0, 0xffb3) Video PIA @@ -120,7 +120,7 @@ READ8_MEMBER( jupiter3_state::status_r ) return (m_term_data) ? 0x80 : 0x00; } -WRITE8_MEMBER( jupiter3_state::kbd_put ) +void jupiter3_state::kbd_put(u8 data) { if (data) m_term_data = data ^ 0x80; @@ -213,7 +213,7 @@ void jupiter3_state::machine_reset() // MACHINE_CONFIG( jupiter ) //------------------------------------------------- -static MACHINE_CONFIG_START( jupiter, jupiter2_state ) +static MACHINE_CONFIG_START( jupiter ) // basic machine hardware MCFG_CPU_ADD(MCM6571AP_TAG, M6800, 2000000) MCFG_CPU_PROGRAM_MAP(jupiter_m6800_mem) @@ -236,7 +236,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( jupiter3 ) //------------------------------------------------- -static MACHINE_CONFIG_START( jupiter3, jupiter3_state ) +static MACHINE_CONFIG_START( jupiter3 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, 4000000) MCFG_CPU_PROGRAM_MAP(jupiter3_mem) @@ -259,7 +259,7 @@ static MACHINE_CONFIG_START( jupiter3, jupiter3_state ) MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":1", jupiter_floppies, nullptr, floppy_image_device::default_floppy_formats) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(jupiter3_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(jupiter3_state, kbd_put)) // internal ram MCFG_RAM_ADD(RAM_TAG) @@ -355,6 +355,6 @@ DRIVER_INIT_MEMBER(jupiter3_state,jupiter3) // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1976, jupiter2, 0, 0, jupiter, jupiter, jupiter2_state, jupiter, "Wave Mate", "Jupiter II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) -COMP( 1976, jupiter3, 0, 0, jupiter3, jupiter, jupiter3_state, jupiter3,"Wave Mate", "Jupiter III", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1976, jupiter2, 0, 0, jupiter, jupiter, jupiter2_state, jupiter, "Wave Mate", "Jupiter II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1976, jupiter3, 0, 0, jupiter3, jupiter, jupiter3_state, jupiter3,"Wave Mate", "Jupiter III", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/jvh.cpp b/src/mame/drivers/jvh.cpp index 68c5c44b120..ec0a0920eb9 100644 --- a/src/mame/drivers/jvh.cpp +++ b/src/mame/drivers/jvh.cpp @@ -106,14 +106,14 @@ DRIVER_INIT_MEMBER(jvh_state,jvh) { } -static MACHINE_CONFIG_START( jvh, jvh_state ) +static MACHINE_CONFIG_START( jvh ) // CPU TMS9980A; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9980A, 1000000, jvh_map, escape_io) MCFG_CPU_ADD("cpu2", M6800, 1000000) MCFG_CPU_PROGRAM_MAP(jvh_sub_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jvh2, jvh_state ) +static MACHINE_CONFIG_START( jvh2 ) // CPU TMS9980At; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9980A, 1000000, jvh_map, movmastr_io) MCFG_CPU_ADD("cpu2", M6800, 1000000) diff --git a/src/mame/drivers/k1003.cpp b/src/mame/drivers/k1003.cpp index 39843f93e97..d8dd1baabf6 100644 --- a/src/mame/drivers/k1003.cpp +++ b/src/mame/drivers/k1003.cpp @@ -134,7 +134,7 @@ void k1003_state::machine_reset() { } -static MACHINE_CONFIG_START( k1003, k1003_state ) +static MACHINE_CONFIG_START( k1003 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8008, 800000) MCFG_CPU_PROGRAM_MAP(k1003_mem) @@ -193,5 +193,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, k1003, 0, 0, k1003, k1003, driver_device, 0, "Robotron", "K1003", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1978, k1003, 0, 0, k1003, k1003, k1003_state, 0, "Robotron", "K1003", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/k28.cpp b/src/mame/drivers/k28.cpp index 07f5393573f..29c5ba93168 100644 --- a/src/mame/drivers/k28.cpp +++ b/src/mame/drivers/k28.cpp @@ -81,8 +81,7 @@ public: DECLARE_READ8_MEMBER(mcu_p1_r); DECLARE_READ8_MEMBER(mcu_p2_r); DECLARE_WRITE8_MEMBER(mcu_p2_w); - DECLARE_WRITE8_MEMBER(mcu_prog_w); - DECLARE_READ8_MEMBER(mcu_t1_r); + DECLARE_WRITE_LINE_MEMBER(mcu_prog_w); DECLARE_INPUT_CHANGED_MEMBER(power_on); void power_off(); @@ -333,10 +332,9 @@ WRITE8_MEMBER(k28_state::mcu_p2_w) m_phoneme = (m_phoneme & ~0xf) | (data & 0xf); } -WRITE8_MEMBER(k28_state::mcu_prog_w) +WRITE_LINE_MEMBER(k28_state::mcu_prog_w) { // 8021 PROG: clock VFD driver - int state = (data) ? 1 : 0; bool rise = state == 1 && !m_vfd_clock; m_vfd_clock = state; @@ -374,19 +372,9 @@ WRITE8_MEMBER(k28_state::mcu_prog_w) } } -READ8_MEMBER(k28_state::mcu_t1_r) -{ - // 8021 T1: SC-01 A/R pin - return m_speech->request() ? 1 : 0; -} - static ADDRESS_MAP_START( k28_mcu_map, AS_IO, 8, k28_state ) AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_WRITE(mcu_p0_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(mcu_p1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_p2_r, mcu_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_WRITE(mcu_prog_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(mcu_t1_r) ADDRESS_MAP_END @@ -477,11 +465,16 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( k28, k28_state ) +static MACHINE_CONFIG_START( k28 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8021, XTAL_3_579545MHz) MCFG_CPU_IO_MAP(k28_mcu_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(k28_state, mcu_p1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(k28_state, mcu_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(k28_state, mcu_p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(k28_state, mcu_prog_w)) + MCFG_MCS48_PORT_T1_IN_CB(DEVREADLINE("speech", votrax_sc01_device, request)) // SC-01 A/R pin MCFG_DEVICE_ADD("tms6100", TMS6100, XTAL_3_579545MHz) // CLK tied to 8021 ALE pin @@ -515,5 +508,5 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -COMP( 1981, k28, 0, 0, k28, k28, driver_device, 0, "Tiger Electronics", "K28: Talking Learning Computer (model 7-230)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +COMP( 1981, k28, 0, 0, k28, k28, k28_state, 0, "Tiger Electronics", "K28: Talking Learning Computer (model 7-230)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/k8915.cpp b/src/mame/drivers/k8915.cpp index 4e8961cf462..4ef64f931d1 100644 --- a/src/mame/drivers/k8915.cpp +++ b/src/mame/drivers/k8915.cpp @@ -29,7 +29,7 @@ public: DECLARE_READ8_MEMBER(k8915_52_r); DECLARE_READ8_MEMBER(k8915_53_r); DECLARE_WRITE8_MEMBER(k8915_a8_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_DRIVER_INIT(k8915); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -140,12 +140,12 @@ uint32_t k8915_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, return 0; } -WRITE8_MEMBER( k8915_state::kbd_put ) +void k8915_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( k8915, k8915_state ) +static MACHINE_CONFIG_START( k8915 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(k8915_mem) @@ -163,7 +163,7 @@ static MACHINE_CONFIG_START( k8915, k8915_state ) MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(k8915_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(k8915_state, kbd_put)) MACHINE_CONFIG_END @@ -179,5 +179,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, k8915, 0, 0, k8915, k8915, k8915_state, k8915, "Robotron", "K8915", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, k8915, 0, 0, k8915, k8915, k8915_state, k8915, "Robotron", "K8915", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp index 07ebbf9d49e..26804b6c377 100644 --- a/src/mame/drivers/kaneko16.cpp +++ b/src/mame/drivers/kaneko16.cpp @@ -1862,7 +1862,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(kaneko16_state::kaneko16_interrupt) 6-7] rte */ -static MACHINE_CONFIG_START( berlwall, kaneko16_berlwall_state ) +static MACHINE_CONFIG_START( berlwall ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* MC68000P12 */ @@ -1911,7 +1911,7 @@ static MACHINE_CONFIG_START( berlwall, kaneko16_berlwall_state ) MCFG_SOUND_ADD("ym2149_2", YM2149, 1000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki", 12000000/6, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 12000000/6, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -1921,7 +1921,7 @@ MACHINE_CONFIG_END Bakuretsu Breaker ***************************************************************************/ -static MACHINE_CONFIG_START( bakubrkr, kaneko16_state ) +static MACHINE_CONFIG_START( bakubrkr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* verified on pcb */ @@ -1977,7 +1977,7 @@ static MACHINE_CONFIG_START( bakubrkr, kaneko16_state ) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(kaneko16_state, eeprom_w)) /* outputs B: 0,EEPROM reset */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/6, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/6, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1996,7 +1996,7 @@ MACHINE_CONFIG_END 6-7] busy loop */ -static MACHINE_CONFIG_START( blazeon, kaneko16_state ) +static MACHINE_CONFIG_START( blazeon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,12000000) /* TMP68HC000-12 */ @@ -2050,7 +2050,7 @@ MACHINE_CONFIG_END Wing Force ***************************************************************************/ -static MACHINE_CONFIG_START( wingforc, kaneko16_state ) +static MACHINE_CONFIG_START( wingforc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* TMP68HC000N-16 */ @@ -2097,7 +2097,7 @@ static MACHINE_CONFIG_START( wingforc, kaneko16_state ) MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2116,7 +2116,7 @@ MACHINE_CONFIG_END VIDEO_UPDATE_AFTER_VBLANK fixes the mangled/wrong colored sprites */ -static MACHINE_CONFIG_START( gtmr, kaneko16_gtmr_state ) +static MACHINE_CONFIG_START( gtmr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* verified on pcb */ @@ -2167,16 +2167,16 @@ static MACHINE_CONFIG_START( gtmr, kaneko16_gtmr_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/8, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/8, PIN7_LOW) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/8, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/8, PIN7_LOW) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gtmre, gtmr ) MCFG_DEVICE_MODIFY("toybox") - MCFG_TOYBOX_TABLE_TYPE(TABLE_ALT) + MCFG_TOYBOX_TABLE_TYPE(ALT) MACHINE_CONFIG_END /*************************************************************************** @@ -2228,7 +2228,7 @@ static MACHINE_CONFIG_DERIVED( bonkadv, gtmr ) MCFG_DEVICE_MODIFY("toybox") - MCFG_TOYBOX_GAME_TYPE(GAME_BONK) + MCFG_TOYBOX_GAME_TYPE(BONK) MCFG_DEVICE_MODIFY("kan_hit") kaneko_hit_device::set_type(*device, 0); @@ -2239,7 +2239,7 @@ MACHINE_CONFIG_END Magical Crystal ***************************************************************************/ -static MACHINE_CONFIG_START( mgcrystl, kaneko16_state ) +static MACHINE_CONFIG_START( mgcrystl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* verified on pcb, TMP68HC000N-12 @U31 and X2 is 12MHz */ @@ -2294,7 +2294,7 @@ static MACHINE_CONFIG_START( mgcrystl, kaneko16_state ) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(kaneko16_state, eeprom_w)) /* outputs B: 0,EEPROM reset */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/6, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/6, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2368,7 +2368,7 @@ static ADDRESS_MAP_START( shogwarr_oki2_map, AS_0, 8, kaneko16_shogwarr_state ) AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("bank11") ADDRESS_MAP_END -static MACHINE_CONFIG_START( shogwarr, kaneko16_shogwarr_state ) +static MACHINE_CONFIG_START( shogwarr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) @@ -2418,11 +2418,11 @@ static MACHINE_CONFIG_START( shogwarr, kaneko16_shogwarr_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/8, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/8, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, shogwarr_oki1_map) - MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/8, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/8, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, shogwarr_oki2_map) MACHINE_CONFIG_END @@ -4483,7 +4483,7 @@ GAME( 1992, explbrkr, 0, bakubrkr, bakubrkr, kaneko16_state, kan GAME( 1992, bakubrkr, explbrkr, bakubrkr, bakubrkr, kaneko16_state, kaneko16, ROT90, "Kaneko", "Bakuretsu Breaker", MACHINE_SUPPORTS_SAVE ) GAME( 1993, wingforc, 0, wingforc, wingforc, kaneko16_state, kaneko16, ROT270,"A.I (Atlus license)", "Wing Force (Japan, prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, bonkadv, 0, bonkadv , bonkadv, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "B.C. Kid / Bonk's Adventure / Kyukyoku!! PC Genjin", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, bonkadv, 0, bonkadv, bonkadv, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "B.C. Kid / Bonk's Adventure / Kyukyoku!! PC Genjin", MACHINE_SUPPORTS_SAVE ) GAME( 1994, bloodwar, 0, bloodwar, bloodwar, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "Blood Warrior", MACHINE_SUPPORTS_SAVE ) GAME( 1994, oedfight, bloodwar, bloodwar, bloodwar, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "Oedo Fight (Japan Bloodshed Ver.)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, gtmr, 0, gtmr, gtmr, kaneko16_gtmr_state, gtmr, ROT0, "Kaneko", "1000 Miglia: Great 1000 Miles Rally (94/07/18)", MACHINE_SUPPORTS_SAVE ) // this set shows 'PCB by Jinwei Co Ltd. ROC' diff --git a/src/mame/drivers/kangaroo.cpp b/src/mame/drivers/kangaroo.cpp index e74f17150ba..01dc3ac888c 100644 --- a/src/mame/drivers/kangaroo.cpp +++ b/src/mame/drivers/kangaroo.cpp @@ -426,7 +426,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( nomcu, kangaroo_state ) +static MACHINE_CONFIG_START( nomcu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4) @@ -572,7 +572,7 @@ ROM_END * *************************************/ -GAME( 1981, fnkyfish, 0, nomcu, fnkyfish, driver_device, 0, ROT90, "Sun Electronics", "Funky Fish", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, kangaroo, 0, mcu, kangaroo, driver_device, 0, ROT90, "Sun Electronics", "Kangaroo", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, kangarooa, kangaroo, mcu, kangaroo, driver_device, 0, ROT90, "Sun Electronics (Atari license)", "Kangaroo (Atari)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, kangaroob, kangaroo, nomcu, kangaroo, driver_device, 0, ROT90, "bootleg", "Kangaroo (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, fnkyfish, 0, nomcu, fnkyfish, kangaroo_state, 0, ROT90, "Sun Electronics", "Funky Fish", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, kangaroo, 0, mcu, kangaroo, kangaroo_state, 0, ROT90, "Sun Electronics", "Kangaroo", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, kangarooa, kangaroo, mcu, kangaroo, kangaroo_state, 0, ROT90, "Sun Electronics (Atari license)", "Kangaroo (Atari)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, kangaroob, kangaroo, nomcu, kangaroo, kangaroo_state, 0, ROT90, "bootleg", "Kangaroo (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/karnov.cpp b/src/mame/drivers/karnov.cpp index 0e265f1b1d8..6df531ebaee 100644 --- a/src/mame/drivers/karnov.cpp +++ b/src/mame/drivers/karnov.cpp @@ -803,7 +803,7 @@ void karnov_state::machine_reset() } -static MACHINE_CONFIG_START( karnov, karnov_state ) +static MACHINE_CONFIG_START( karnov ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz */ @@ -849,7 +849,7 @@ static MACHINE_CONFIG_START( karnov, karnov_state ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( karnovjbl, karnov ) - /* X-TALs: + /* X-TALs: Top board next to #9 is 20.000 MHz Top board next to the microcontroller is 6.000 MHz Bottom board next to the ribbon cable is 12.000 MHz*/ @@ -882,7 +882,7 @@ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wndrplnt, karnov_state ) +static MACHINE_CONFIG_START( wndrplnt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz */ @@ -1393,13 +1393,13 @@ DRIVER_INIT_MEMBER(karnov_state,chelnovj) * *************************************/ -GAME( 1987, karnov, 0, karnov, karnov, karnov_state, karnov, ROT0, "Data East USA", "Karnov (US, rev 6)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, karnova, karnov, karnov, karnov, karnov_state, karnov, ROT0, "Data East USA", "Karnov (US, rev 5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, karnovj, karnov, karnov, karnov, karnov_state, karnovj, ROT0, "Data East Corporation", "Karnov (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, karnovjbl,karnov, karnovjbl,karnov, karnov_state, karnovj, ROT0, "bootleg (K. J. Corporation)", "Karnov (Japan, bootleg with NEC D8748HD)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, wndrplnt, 0, wndrplnt, wndrplnt, karnov_state, wndrplnt, ROT270, "Data East Corporation", "Wonder Planet (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, chelnov, 0, karnov, chelnov, karnov_state, chelnov, ROT0, "Data East Corporation", "Chelnov - Atomic Runner (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, chelnovu, chelnov, karnov, chelnovu, karnov_state, chelnovu, ROT0, "Data East USA", "Chelnov - Atomic Runner (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, chelnovj, chelnov, karnov, chelnovj, karnov_state, chelnovj, ROT0, "Data East Corporation", "Chelnov - Atomic Runner (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, chelnovjbl,chelnov,chelnovjbl,chelnovj,karnov_state, chelnovj, ROT0, "bootleg", "Chelnov - Atomic Runner (Japan, bootleg with I8031, set 1)", MACHINE_SUPPORTS_SAVE ) // todo: hook up MCU instead of using simulation code -GAME( 1988, chelnovjbla,chelnov,chelnovjbl,chelnovj,karnov_state,chelnovj, ROT0, "bootleg", "Chelnov - Atomic Runner (Japan, bootleg with I8031, set 2)", MACHINE_SUPPORTS_SAVE ) // ^^ +GAME( 1987, karnov, 0, karnov, karnov, karnov_state, karnov, ROT0, "Data East USA", "Karnov (US, rev 6)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, karnova, karnov, karnov, karnov, karnov_state, karnov, ROT0, "Data East USA", "Karnov (US, rev 5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, karnovj, karnov, karnov, karnov, karnov_state, karnovj, ROT0, "Data East Corporation", "Karnov (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, karnovjbl, karnov, karnovjbl, karnov, karnov_state, karnovj, ROT0, "bootleg (K. J. Corporation)", "Karnov (Japan, bootleg with NEC D8748HD)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, wndrplnt, 0, wndrplnt, wndrplnt, karnov_state, wndrplnt, ROT270, "Data East Corporation", "Wonder Planet (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, chelnov, 0, karnov, chelnov, karnov_state, chelnov, ROT0, "Data East Corporation", "Chelnov - Atomic Runner (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, chelnovu, chelnov, karnov, chelnovu, karnov_state, chelnovu, ROT0, "Data East USA", "Chelnov - Atomic Runner (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, chelnovj, chelnov, karnov, chelnovj, karnov_state, chelnovj, ROT0, "Data East Corporation", "Chelnov - Atomic Runner (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, chelnovjbl, chelnov, chelnovjbl, chelnovj, karnov_state, chelnovj, ROT0, "bootleg", "Chelnov - Atomic Runner (Japan, bootleg with I8031, set 1)", MACHINE_SUPPORTS_SAVE ) // todo: hook up MCU instead of using simulation code +GAME( 1988, chelnovjbla, chelnov, chelnovjbl, chelnovj, karnov_state, chelnovj, ROT0, "bootleg", "Chelnov - Atomic Runner (Japan, bootleg with I8031, set 2)", MACHINE_SUPPORTS_SAVE ) // ^^ diff --git a/src/mame/drivers/kas89.cpp b/src/mame/drivers/kas89.cpp index 5da34fe0055..6f012930174 100644 --- a/src/mame/drivers/kas89.cpp +++ b/src/mame/drivers/kas89.cpp @@ -752,7 +752,7 @@ INPUT_PORTS_END * Machine Driver * **************************************/ -static MACHINE_CONFIG_START( kas89, kas89_state ) +static MACHINE_CONFIG_START( kas89 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* Confirmed */ @@ -857,5 +857,5 @@ DRIVER_INIT_MEMBER(kas89_state,kas89) * Game Driver(s) * **************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT GAMEL( 1989, kas89, 0, kas89, kas89, kas89_state, kas89, ROT90, "SFC S.R.L.", "Kasino '89", MACHINE_IMPERFECT_SOUND, layout_kas89 ) diff --git a/src/mame/drivers/kaypro.cpp b/src/mame/drivers/kaypro.cpp index a5d2039f6bf..68cf60d01b7 100644 --- a/src/mame/drivers/kaypro.cpp +++ b/src/mame/drivers/kaypro.cpp @@ -71,7 +71,7 @@ static ADDRESS_MAP_START( kayproii_io, AS_IO, 8, kaypro_state ) AM_RANGE(0x04, 0x07) AM_READWRITE(kaypro_sio_r, kaypro_sio_w) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80pio_g", z80pio_device, read_alt, write_alt) AM_RANGE(0x0c, 0x0f) AM_DEVWRITE("brg", com8116_device, str_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1793_t, read, write) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1793_device, read, write) AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("z80pio_s", z80pio_device, read_alt, write_alt) ADDRESS_MAP_END @@ -82,7 +82,7 @@ static ADDRESS_MAP_START( kaypro2x_io, AS_IO, 8, kaypro_state ) AM_RANGE(0x04, 0x07) AM_READWRITE(kaypro_sio_r, kaypro_sio_w) AM_RANGE(0x08, 0x0b) AM_DEVWRITE("brg", com8116_device, stt_w) AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("z80sio_2x", z80sio0_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1793_t, read, write) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1793_device, read, write) AM_RANGE(0x14, 0x17) AM_READWRITE(kaypro2x_system_port_r,kaypro2x_system_port_w) AM_RANGE(0x18, 0x1b) AM_DEVWRITE("cent_data_out", output_latch_device, write) AM_RANGE(0x1c, 0x1c) AM_READWRITE(kaypro2x_status_r,kaypro2x_index_w) @@ -195,7 +195,7 @@ static SLOT_INTERFACE_START( kaypro_floppies ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( kayproii, kaypro_state ) +static MACHINE_CONFIG_START( kayproii ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_20MHz / 8) MCFG_CPU_PROGRAM_MAP(kaypro_map) @@ -265,7 +265,7 @@ static MACHINE_CONFIG_DERIVED( kaypro4, kayproii ) MCFG_Z80PIO_OUT_PA_CB(WRITE8(kaypro_state, kaypro4_pio_system_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kaypro2x, kaypro_state ) +static MACHINE_CONFIG_START( kaypro2x ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(kaypro_map) @@ -454,13 +454,13 @@ ROM_START(robie) ROM_LOAD("81-235.u9", 0x0000, 0x1000, CRC(5f72da5b) SHA1(8a597000cce1a7e184abfb7bebcb564c6bf24fb7) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -COMP( 1982, kayproii, 0, 0, kayproii, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro II - 2/83" , 0 ) -COMP( 1983, kaypro4, kayproii, 0, kaypro4, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 4 - 4/83" , 0 ) // model 81-004 -COMP( 1983, kaypro4p88, kayproii, 0, kaypro4, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 4 plus88 - 4/83" , MACHINE_NOT_WORKING ) // model 81-004 with an added 8088 daughterboard and rom -COMP( 198?, omni2, kayproii, 0, omni2, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Omni II Logic Analyzer" , 0 ) -COMP( 1984, kaypro2x, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 2x" , MACHINE_NOT_WORKING ) // model 81-025 -COMP( 1984, kaypro4a, kaypro2x, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 4 - 4/84" , MACHINE_NOT_WORKING ) // model 81-015 +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ +COMP( 1982, kayproii, 0, 0, kayproii, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro II - 2/83" , 0 ) +COMP( 1983, kaypro4, kayproii, 0, kaypro4, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 4 - 4/83" , 0 ) // model 81-004 +COMP( 1983, kaypro4p88, kayproii, 0, kaypro4, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 4 plus88 - 4/83" , MACHINE_NOT_WORKING ) // model 81-004 with an added 8088 daughterboard and rom +COMP( 198?, omni2, kayproii, 0, omni2, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Omni II Logic Analyzer" , 0 ) +COMP( 1984, kaypro2x, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 2x" , MACHINE_NOT_WORKING ) // model 81-025 +COMP( 1984, kaypro4a, kaypro2x, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 4 - 4/84" , MACHINE_NOT_WORKING ) // model 81-015 // Kaypro 4/84 plus 88 goes here, model 81-015 with an added 8088 daughterboard and rom -COMP( 1983, kaypro10, 0, 0, kaypro10, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 10" , MACHINE_NOT_WORKING ) // model 81-005 -COMP( 1984, robie, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro Robie" , MACHINE_NOT_WORKING ) // model 81-005 +COMP( 1983, kaypro10, 0, 0, kaypro10, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 10" , MACHINE_NOT_WORKING ) // model 81-005 +COMP( 1984, robie, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro Robie" , MACHINE_NOT_WORKING ) // model 81-005 diff --git a/src/mame/drivers/kc.cpp b/src/mame/drivers/kc.cpp index e83ba542781..72661bfbdb1 100644 --- a/src/mame/drivers/kc.cpp +++ b/src/mame/drivers/kc.cpp @@ -90,7 +90,7 @@ extern SLOT_INTERFACE_START(kc85_exp) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( kc85_3, kc_state ) +static MACHINE_CONFIG_START( kc85_3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, KC85_3_CLOCK) MCFG_CPU_PROGRAM_MAP(kc85_3_mem) @@ -174,7 +174,7 @@ static MACHINE_CONFIG_START( kc85_3, kc_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kc85_4, kc85_4_state ) +static MACHINE_CONFIG_START( kc85_4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, KC85_4_CLOCK) MCFG_CPU_PROGRAM_MAP(kc85_4_mem) @@ -316,8 +316,8 @@ ROM_START(kc85_5) ROMX_LOAD( "caos43e.855", 0x2000, 0x2000, CRC(b66fc6c3) SHA1(521ac2fbded4148220f8af2d5a5ab99634364079), ROM_BIOS(2)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1987, kc85_2, 0, 0, kc85_3, kc85, driver_device, 0, "VEB Mikroelektronik", "HC900 / KC 85/2", MACHINE_NOT_WORKING) -COMP( 1987, kc85_3, kc85_2, 0, kc85_3, kc85, driver_device, 0, "VEB Mikroelektronik", "KC 85/3", MACHINE_NOT_WORKING) -COMP( 1989, kc85_4, kc85_2, 0, kc85_4, kc85, driver_device, 0, "VEB Mikroelektronik", "KC 85/4", MACHINE_NOT_WORKING) -COMP( 1989, kc85_5, kc85_2, 0, kc85_5, kc85, driver_device, 0, "VEB Mikroelektronik", "KC 85/5", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1987, kc85_2, 0, 0, kc85_3, kc85, kc_state, 0, "VEB Mikroelektronik", "HC900 / KC 85/2", MACHINE_NOT_WORKING) +COMP( 1987, kc85_3, kc85_2, 0, kc85_3, kc85, kc_state, 0, "VEB Mikroelektronik", "KC 85/3", MACHINE_NOT_WORKING) +COMP( 1989, kc85_4, kc85_2, 0, kc85_4, kc85, kc85_4_state, 0, "VEB Mikroelektronik", "KC 85/4", MACHINE_NOT_WORKING) +COMP( 1989, kc85_5, kc85_2, 0, kc85_5, kc85, kc85_4_state, 0, "VEB Mikroelektronik", "KC 85/5", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/kchamp.cpp b/src/mame/drivers/kchamp.cpp index cb925f7af52..632d54e53af 100644 --- a/src/mame/drivers/kchamp.cpp +++ b/src/mame/drivers/kchamp.cpp @@ -390,7 +390,7 @@ void kchamp_state::machine_reset() m_sound_nmi_enable = 0; } -static MACHINE_CONFIG_START( kchampvs, kchamp_state ) +static MACHINE_CONFIG_START( kchampvs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) /* verified on pcb */ @@ -437,7 +437,7 @@ static MACHINE_CONFIG_START( kchampvs, kchamp_state ) MCFG_SOUND_ADD("msm", MSM5205, 375000) /* verified on pcb, discrete circuit clock */ MCFG_MSM5205_VCLK_CB(WRITELINE(kchamp_state, msmint)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 1 / 96 = 3906.25Hz playback */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 1 / 96 = 3906.25Hz playback */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END @@ -445,7 +445,7 @@ MACHINE_CONFIG_END * 1 Player Version * ********************/ -static MACHINE_CONFIG_START( kchamp, kchamp_state ) +static MACHINE_CONFIG_START( kchamp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) /* 12MHz / 4 = 3.0 MHz */ @@ -754,8 +754,8 @@ DRIVER_INIT_MEMBER(kchamp_state,kchampvs2) -GAME( 1984, kchamp, 0, kchamp, kchamp, driver_device, 0, ROT90, "Data East USA", "Karate Champ (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, karatedo, kchamp, kchamp, kchamp, driver_device, 0, ROT90, "Data East Corporation", "Karate Dou (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, kchamp, 0, kchamp, kchamp, kchamp_state, 0, ROT90, "Data East USA", "Karate Champ (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, karatedo, kchamp, kchamp, kchamp, kchamp_state, 0, ROT90, "Data East Corporation", "Karate Dou (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, kchampvs, kchamp, kchampvs, kchampvs, kchamp_state, kchampvs, ROT90, "Data East USA", "Karate Champ (US VS version, set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, kchampvs2, kchamp, kchampvs, kchampvs, kchamp_state, kchampvs2, ROT90, "Data East USA", "Karate Champ (US VS version, set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, karatevs, kchamp, kchampvs, kchampvs, kchamp_state, kchampvs, ROT90, "Data East Corporation", "Taisen Karate Dou (Japan VS version)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/kenseim.cpp b/src/mame/drivers/kenseim.cpp index 8fb73325ee5..7952391f98e 100644 --- a/src/mame/drivers/kenseim.cpp +++ b/src/mame/drivers/kenseim.cpp @@ -470,7 +470,7 @@ static const z80_daisy_config daisy_chain_gamecpu[] = { nullptr } }; -static MACHINE_CONFIG_DERIVED_CLASS( kenseim, cps1_12MHz, kenseim_state ) +static MACHINE_CONFIG_DERIVED( kenseim, cps1_12MHz ) /* basic machine hardware */ MCFG_CPU_ADD("gamecpu", TMPZ84C011, XTAL_16MHz/2) // tmpz84c011-8 diff --git a/src/mame/drivers/kickgoal.cpp b/src/mame/drivers/kickgoal.cpp index f653a717aba..c6da4e43fd3 100644 --- a/src/mame/drivers/kickgoal.cpp +++ b/src/mame/drivers/kickgoal.cpp @@ -628,7 +628,7 @@ void kickgoal_state::machine_reset() m_m6295_key_delay = 0; } -static MACHINE_CONFIG_START( kickgoal, kickgoal_state ) +static MACHINE_CONFIG_START( kickgoal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */ @@ -663,11 +663,11 @@ static MACHINE_CONFIG_START( kickgoal, kickgoal_state ) //MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 12000000/8, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 12000000/8, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( actionhw, kickgoal_state ) +static MACHINE_CONFIG_START( actionhw ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* verified on pcb */ @@ -701,7 +701,7 @@ static MACHINE_CONFIG_START( actionhw, kickgoal_state ) //MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -778,5 +778,5 @@ DRIVER_INIT_MEMBER(kickgoal_state,kickgoal) } -GAME( 1995, kickgoal,0, kickgoal, kickgoal, kickgoal_state, kickgoal, ROT0, "TCH", "Kick Goal", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, actionhw,0, actionhw, kickgoal, kickgoal_state, kickgoal, ROT0, "TCH", "Action Hollywood", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, kickgoal, 0, kickgoal, kickgoal, kickgoal_state, kickgoal, ROT0, "TCH", "Kick Goal", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, actionhw, 0, actionhw, kickgoal, kickgoal_state, kickgoal, ROT0, "TCH", "Action Hollywood", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/kim1.cpp b/src/mame/drivers/kim1.cpp index 23fa7bdf16a..1c620f98f28 100644 --- a/src/mame/drivers/kim1.cpp +++ b/src/mame/drivers/kim1.cpp @@ -245,7 +245,7 @@ void kim1_state::machine_reset() // MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( kim1, kim1_state ) +static MACHINE_CONFIG_START( kim1 ) // basic machine hardware MCFG_CPU_ADD("maincpu", M6502, 1000000) /* 1 MHz */ MCFG_CPU_PROGRAM_MAP(kim1_map) @@ -290,5 +290,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1975, kim1, 0, 0, kim1, kim1, driver_device, 0, "MOS Technologies", "KIM-1" , MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1975, kim1, 0, 0, kim1, kim1, kim1_state, 0, "MOS Technologies", "KIM-1" , MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/kingdrby.cpp b/src/mame/drivers/kingdrby.cpp index 087bc841830..15b9b1e4436 100644 --- a/src/mame/drivers/kingdrby.cpp +++ b/src/mame/drivers/kingdrby.cpp @@ -926,7 +926,7 @@ PALETTE_INIT_MEMBER(kingdrby_state,kingdrbb) } } -static MACHINE_CONFIG_START( kingdrby, kingdrby_state ) +static MACHINE_CONFIG_START( kingdrby ) MCFG_CPU_ADD("master", Z80, CLK_2) MCFG_CPU_PROGRAM_MAP(master_map) MCFG_CPU_IO_MAP(master_io_map) @@ -1012,7 +1012,7 @@ static MACHINE_CONFIG_DERIVED( cowrace, kingdrbb ) MCFG_GFXDECODE_MODIFY("gfxdecode", cowrace) MCFG_PALETTE_MODIFY("palette") MCFG_PALETTE_INIT_OWNER(kingdrby_state,kingdrby) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_REPLACE("aysnd", YM2203, 3000000) @@ -1192,7 +1192,7 @@ ROM_START( kingdrbb2 ) ROM_END -GAMEL( 1981, kingdrby, 0, kingdrby, kingdrby, driver_device, 0, ROT0, "Tazmi", "King Derby (1981)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_kingdrby ) -GAME ( 1986, kingdrbb, kingdrby, kingdrbb, kingdrbb, driver_device, 0, ROT0, "bootleg (Casino Electronics)", "King Derby (Taiwan bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS ) -GAMEL( 198?, kingdrbb2, kingdrby, kingdrby, kingdrby, driver_device, 0, ROT0, "bootleg", "King Derby (bootleg set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_kingdrby ) -GAME ( 2000, cowrace, kingdrby, cowrace, kingdrbb, driver_device, 0, ROT0, "bootleg (Gate In)", "Cow Race (King Derby hack)", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS ) +GAMEL( 1981, kingdrby, 0, kingdrby, kingdrby, kingdrby_state, 0, ROT0, "Tazmi", "King Derby (1981)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_kingdrby ) +GAME ( 1986, kingdrbb, kingdrby, kingdrbb, kingdrbb, kingdrby_state, 0, ROT0, "bootleg (Casino Electronics)", "King Derby (Taiwan bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS ) +GAMEL( 198?, kingdrbb2, kingdrby, kingdrby, kingdrby, kingdrby_state, 0, ROT0, "bootleg", "King Derby (bootleg set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_kingdrby ) +GAME ( 2000, cowrace, kingdrby, cowrace, kingdrbb, kingdrby_state, 0, ROT0, "bootleg (Gate In)", "Cow Race (King Derby hack)", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS ) diff --git a/src/mame/drivers/kingobox.cpp b/src/mame/drivers/kingobox.cpp index 52ad6cfdbca..211268f3fb5 100644 --- a/src/mame/drivers/kingobox.cpp +++ b/src/mame/drivers/kingobox.cpp @@ -460,7 +460,7 @@ void kingofb_state::machine_reset() m_palette_bank = 0; } -static MACHINE_CONFIG_START( kingofb, kingofb_state ) +static MACHINE_CONFIG_START( kingofb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4.0 MHz */ @@ -514,7 +514,7 @@ MACHINE_CONFIG_END /* Ring King */ -static MACHINE_CONFIG_START( ringking, kingofb_state ) +static MACHINE_CONFIG_START( ringking ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4.0 MHz */ @@ -573,40 +573,41 @@ MACHINE_CONFIG_END ***************************************************************************/ +/* King of Boxer sets */ ROM_START( kingofb ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "d09_22.bin", 0x00000, 0x4000, CRC(6220bfa2) SHA1(cb329406ed07b71f9d2c40fc6c2c196daaa56fc8) ) - ROM_LOAD( "e09_23.bin", 0x04000, 0x4000, CRC(5782fdd8) SHA1(6c8c1114ce7863f9e8331796e2c5fb4928904b55) ) + ROM_LOAD( "22.d9", 0x00000, 0x4000, CRC(6220bfa2) SHA1(cb329406ed07b71f9d2c40fc6c2c196daaa56fc8) ) + ROM_LOAD( "23.e9", 0x04000, 0x4000, CRC(5782fdd8) SHA1(6c8c1114ce7863f9e8331796e2c5fb4928904b55) ) ROM_REGION( 0x10000, "video", 0 ) /* 64k for the video cpu */ - ROM_LOAD( "b09_21.bin", 0x00000, 0x4000, CRC(3fb39489) SHA1(cddd939cb57bb684427cf5c8538ad0e9f8f4586d) ) + ROM_LOAD( "21.b9", 0x00000, 0x4000, CRC(3fb39489) SHA1(cddd939cb57bb684427cf5c8538ad0e9f8f4586d) ) ROM_REGION( 0x10000, "sprite", 0 ) /* 64k for the sprite cpu */ - ROM_LOAD( "j09_dcr.bin", 0x00000, 0x2000, CRC(379f4f84) SHA1(c8171e15fe243857b6ca8f32c1cc09f12fa4c07c) ) + ROM_LOAD( "17.j9", 0x00000, 0x2000, CRC(379f4f84) SHA1(c8171e15fe243857b6ca8f32c1cc09f12fa4c07c) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "f05_18.bin", 0x00000, 0x4000, CRC(c057e28e) SHA1(714d8f14d55a070efcf205f8946269181bf2198b) ) - ROM_LOAD( "h05_19.bin", 0x04000, 0x4000, CRC(060253dd) SHA1(9a24fc6aca64262e935971f96b3a103df9711f20) ) - ROM_LOAD( "j05_20.bin", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) + ROM_LOAD( "18.f4", 0x00000, 0x4000, CRC(c057e28e) SHA1(714d8f14d55a070efcf205f8946269181bf2198b) ) + ROM_LOAD( "19.h4", 0x04000, 0x4000, CRC(060253dd) SHA1(9a24fc6aca64262e935971f96b3a103df9711f20) ) + ROM_LOAD( "20.j4", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "vd15_13.bin", 0x00000, 0x2000, CRC(e36d4f4f) SHA1(059799b04a7d3e02c1a7f9a5b878d06afef305df) ) /* characters */ + ROM_LOAD( "13.d14", 0x00000, 0x2000, CRC(e36d4f4f) SHA1(059799b04a7d3e02c1a7f9a5b878d06afef305df) ) /* characters */ ROM_REGION( 0x18000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "vb01_01.bin", 0x00000, 0x4000, CRC(ce6580af) SHA1(9a94c681d4c54ca6c2f41ba1e51c61f54e844c77) ) - ROM_LOAD( "vb04_03.bin", 0x04000, 0x4000, CRC(cf74ea50) SHA1(9b0bdf636f9b31e6c7074d606d431a849a51e518) ) - ROM_LOAD( "vb07_05.bin", 0x08000, 0x4000, CRC(d8b53975) SHA1(52ad0b26fef7bb20d1bf953c5ebd519656682bac) ) - ROM_LOAD( "vb03_02.bin", 0x0c000, 0x4000, CRC(4ab506d2) SHA1(8c293d38429a1462f49462d623c47c402e3372f0) ) - ROM_LOAD( "vb05_04.bin", 0x10000, 0x4000, CRC(ecf95a2c) SHA1(b93d0ebdbde9311194a91fb3d6e5d5f33cc87e9d) ) - ROM_LOAD( "vb08_06.bin", 0x14000, 0x4000, CRC(8200cb2b) SHA1(c9e66027d796dd523eddf378d0e9a62ebcc8f6c8) ) + ROM_LOAD( "1.b1", 0x00000, 0x4000, CRC(ce6580af) SHA1(9a94c681d4c54ca6c2f41ba1e51c61f54e844c77) ) + ROM_LOAD( "3.b4", 0x04000, 0x4000, CRC(cf74ea50) SHA1(9b0bdf636f9b31e6c7074d606d431a849a51e518) ) + ROM_LOAD( "5.b7", 0x08000, 0x4000, CRC(d8b53975) SHA1(52ad0b26fef7bb20d1bf953c5ebd519656682bac) ) + ROM_LOAD( "2.b3", 0x0c000, 0x4000, CRC(4ab506d2) SHA1(8c293d38429a1462f49462d623c47c402e3372f0) ) + ROM_LOAD( "4.b5", 0x10000, 0x4000, CRC(ecf95a2c) SHA1(b93d0ebdbde9311194a91fb3d6e5d5f33cc87e9d) ) + ROM_LOAD( "6.b8", 0x14000, 0x4000, CRC(8200cb2b) SHA1(c9e66027d796dd523eddf378d0e9a62ebcc8f6c8) ) ROM_REGION( 0xc000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "vd01_07.bin", 0x00000, 0x2000, CRC(3d472a22) SHA1(85a2e25cee8f85ac0d2ee12f60f97e26539ebd52) ) - ROM_LOAD( "vd04_09.bin", 0x02000, 0x2000, CRC(cc002ea9) SHA1(194aa60809c2ae12be2d7533170988e47549c239) ) - ROM_LOAD( "vd07_11.bin", 0x04000, 0x2000, CRC(23c1b3ee) SHA1(8a8a187920243f3d3870a2fa71b0f6494e53107a) ) - ROM_LOAD( "vd03_08.bin", 0x06000, 0x2000, CRC(d6b1b8fe) SHA1(6bbe02a0a9e080f3ed3c32d64afb81905b42082f) ) - ROM_LOAD( "vd05_10.bin", 0x08000, 0x2000, CRC(fce71e5a) SHA1(a68ad30e8e207d24bc5543dcbcbc3e39260b6cc5) ) - ROM_LOAD( "vd08_12.bin", 0x0a000, 0x2000, CRC(3f68b991) SHA1(487e7d793fe6c1dbecd5f54f790105bbb44a21de) ) + ROM_LOAD( "7.d1", 0x00000, 0x2000, CRC(3d472a22) SHA1(85a2e25cee8f85ac0d2ee12f60f97e26539ebd52) ) + ROM_LOAD( "9.d4", 0x02000, 0x2000, CRC(cc002ea9) SHA1(194aa60809c2ae12be2d7533170988e47549c239) ) + ROM_LOAD( "11.d7", 0x04000, 0x2000, CRC(23c1b3ee) SHA1(8a8a187920243f3d3870a2fa71b0f6494e53107a) ) + ROM_LOAD( "8.d3", 0x06000, 0x2000, CRC(d6b1b8fe) SHA1(6bbe02a0a9e080f3ed3c32d64afb81905b42082f) ) + ROM_LOAD( "10.d5", 0x08000, 0x2000, CRC(fce71e5a) SHA1(a68ad30e8e207d24bc5543dcbcbc3e39260b6cc5) ) + ROM_LOAD( "12.d8", 0x0a000, 0x2000, CRC(3f68b991) SHA1(487e7d793fe6c1dbecd5f54f790105bbb44a21de) ) ROM_REGION( 0x0300, "proms", 0 ) ROM_LOAD( "vb14_col.bin", 0x0000, 0x0100, CRC(c58e5121) SHA1(2e6658e24c183d8dacf4ff84a38060e57d11f265) ) /* red component */ @@ -618,7 +619,96 @@ ROM_START( kingofb ) ROM_LOAD( "pal14h4-vh07.bin", 0x0100, 0x003c, CRC(7e59d45a) SHA1(4a900e424c9edc9f8664f935edccbe4b4759188a) ) ROM_END -/* Ring King */ +ROM_START( kingofbj ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "22.d9", 0x00000, 0x4000, CRC(6220bfa2) SHA1(cb329406ed07b71f9d2c40fc6c2c196daaa56fc8) ) // 27128 + ROM_LOAD( "23.e9", 0x04000, 0x4000, CRC(5782fdd8) SHA1(6c8c1114ce7863f9e8331796e2c5fb4928904b55) ) // 27128 + + ROM_REGION( 0x10000, "video", 0 ) /* 64k for the video cpu */ + ROM_LOAD( "21.b9", 0x00000, 0x4000, CRC(3fb39489) SHA1(cddd939cb57bb684427cf5c8538ad0e9f8f4586d) ) // 27128 + + ROM_REGION( 0x10000, "sprite", 0 ) /* 64k for the sprite cpu */ + ROM_LOAD( "17.j9", 0x00000, 0x2000, CRC(379f4f84) SHA1(c8171e15fe243857b6ca8f32c1cc09f12fa4c07c) ) // 2764 + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "18.f4", 0x00000, 0x4000, CRC(c057e28e) SHA1(714d8f14d55a070efcf205f8946269181bf2198b) ) // 27128 + ROM_LOAD( "19.h4", 0x04000, 0x4000, CRC(060253dd) SHA1(9a24fc6aca64262e935971f96b3a103df9711f20) ) // 27128 + ROM_LOAD( "20.j4", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) // 27128 + + ROM_REGION( 0x2000, "gfx1", 0 ) /* characters (Japanese) */ + ROM_LOAD( "13.d14", 0x00000, 0x2000, CRC(988a77bf) SHA1(c047c076d47479448ce2454c10010b672a1b457d) ) // 2764 - Same label different data than kingofb + + ROM_REGION( 0x18000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "1.b1", 0x00000, 0x4000, CRC(7b6f390e) SHA1(8338d6af1c1825ce0b1fc118f33f49a4f7222b9c) ) // 27128 - Same label different data than kingofb + ROM_LOAD( "3.b4", 0x04000, 0x4000, CRC(cf74ea50) SHA1(9b0bdf636f9b31e6c7074d606d431a849a51e518) ) // 27128 + ROM_LOAD( "5.b7", 0x08000, 0x4000, CRC(d8b53975) SHA1(52ad0b26fef7bb20d1bf953c5ebd519656682bac) ) // 27128 + ROM_LOAD( "2.b3", 0x0c000, 0x4000, CRC(4ab506d2) SHA1(8c293d38429a1462f49462d623c47c402e3372f0) ) // 27128 + ROM_LOAD( "4.b5", 0x10000, 0x4000, CRC(ecf95a2c) SHA1(b93d0ebdbde9311194a91fb3d6e5d5f33cc87e9d) ) // 27128 + ROM_LOAD( "6.b8", 0x14000, 0x4000, CRC(8200cb2b) SHA1(c9e66027d796dd523eddf378d0e9a62ebcc8f6c8) ) // 27128 + + ROM_REGION( 0xc000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "7.d1", 0x00000, 0x2000, CRC(3d472a22) SHA1(85a2e25cee8f85ac0d2ee12f60f97e26539ebd52) ) // 2764 + ROM_LOAD( "9.d4", 0x02000, 0x2000, CRC(cc002ea9) SHA1(194aa60809c2ae12be2d7533170988e47549c239) ) // 2764 + ROM_LOAD( "11.d7", 0x04000, 0x2000, CRC(23c1b3ee) SHA1(8a8a187920243f3d3870a2fa71b0f6494e53107a) ) // 2764 + ROM_LOAD( "8.d3", 0x06000, 0x2000, CRC(d6b1b8fe) SHA1(6bbe02a0a9e080f3ed3c32d64afb81905b42082f) ) // 2764 + ROM_LOAD( "10.d5", 0x08000, 0x2000, CRC(fce71e5a) SHA1(a68ad30e8e207d24bc5543dcbcbc3e39260b6cc5) ) // 2764 + ROM_LOAD( "12.d8", 0x0a000, 0x2000, CRC(3f68b991) SHA1(487e7d793fe6c1dbecd5f54f790105bbb44a21de) ) // 2764 + + ROM_REGION( 0x0300, "proms", 0 ) // not dumped for this set, probably identical + ROM_LOAD( "vb14_col.bin", 0x0000, 0x0100, CRC(c58e5121) SHA1(2e6658e24c183d8dacf4ff84a38060e57d11f265) ) /* red component */ + ROM_LOAD( "vb15_col.bin", 0x0100, 0x0100, CRC(5ab06f25) SHA1(f5e0aabf40ce6d11771e0678fea248abd5b95b3c) ) /* green component */ + ROM_LOAD( "vb16_col.bin", 0x0200, 0x0100, CRC(1171743f) SHA1(ddfce0ff213381a2fc94337681e599cb28db840c) ) /* blue component */ + + ROM_REGION( 0x0200, "plds", 0 ) // not dumped for this set, probably identical + ROM_LOAD( "pal12h6-vh02.bin", 0x0000, 0x0034, CRC(6cc0fdf2) SHA1(12eef0d49def671aa7dbb4cce91cfbe40697dcea) ) + ROM_LOAD( "pal14h4-vh07.bin", 0x0100, 0x003c, CRC(7e59d45a) SHA1(4a900e424c9edc9f8664f935edccbe4b4759188a) ) +ROM_END + +/* Ring King sets */ +ROM_START( ringkingw ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "15.d9", 0x00000, 0x4000, CRC(8263f517) SHA1(942012bfcc98dd2cd0437e015a164933c99d0f36) ) + ROM_LOAD( "16.e9", 0x04000, 0x4000, CRC(daadd700) SHA1(2405e954a28d18ae8c30955d0ad7c25c9abb2bd3) ) + + ROM_REGION( 0x10000, "video", 0 ) /* 64k for the video cpu */ + ROM_LOAD( "14.b9", 0x00000, 0x4000, CRC(76a73c95) SHA1(ca47917d8843b2867b66f74c6bc2f29bb90e11dc) ) + + ROM_REGION( 0x10000, "sprite", 0 ) /* 64k for the sprite cpu */ + ROM_LOAD( "17.j9", 0x00000, 0x2000, CRC(379f4f84) SHA1(c8171e15fe243857b6ca8f32c1cc09f12fa4c07c) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "18.f4", 0x00000, 0x4000, CRC(c057e28e) SHA1(714d8f14d55a070efcf205f8946269181bf2198b) ) + ROM_LOAD( "19.h4", 0x04000, 0x4000, CRC(060253dd) SHA1(9a24fc6aca64262e935971f96b3a103df9711f20) ) + ROM_LOAD( "20.j4", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) + + ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_LOAD( "13.d14", 0x00000, 0x2000, CRC(e36d4f4f) SHA1(059799b04a7d3e02c1a7f9a5b878d06afef305df) ) /* characters */ + + ROM_REGION( 0x18000, "gfx2", 0 ) /* sprites */ + ROM_LOAD( "1.b1", 0x00000, 0x4000, CRC(ce6580af) SHA1(9a94c681d4c54ca6c2f41ba1e51c61f54e844c77) ) + ROM_LOAD( "3.b4", 0x04000, 0x4000, CRC(cf74ea50) SHA1(9b0bdf636f9b31e6c7074d606d431a849a51e518) ) + ROM_LOAD( "5.b7", 0x08000, 0x4000, CRC(d8b53975) SHA1(52ad0b26fef7bb20d1bf953c5ebd519656682bac) ) + ROM_LOAD( "2.b3", 0x0c000, 0x4000, CRC(4ab506d2) SHA1(8c293d38429a1462f49462d623c47c402e3372f0) ) + ROM_LOAD( "4.b5", 0x10000, 0x4000, CRC(ecf95a2c) SHA1(b93d0ebdbde9311194a91fb3d6e5d5f33cc87e9d) ) + ROM_LOAD( "6.b8", 0x14000, 0x4000, CRC(8200cb2b) SHA1(c9e66027d796dd523eddf378d0e9a62ebcc8f6c8) ) + + ROM_REGION( 0xc000, "gfx3", 0 ) /* tiles */ + ROM_LOAD( "7.d1", 0x00000, 0x2000, CRC(019a88b0) SHA1(9c2d4bb643b7bd14c4f347906707854d7a5cd340) ) // Same label different data than kingofb + ROM_LOAD( "9.d4", 0x02000, 0x2000, CRC(bfdc741a) SHA1(2b874ef61eae8fab99d08a0273d69b90bb52b3f1) ) // Same label different data than kingofb + ROM_LOAD( "11.d7", 0x04000, 0x2000, CRC(3cc7bdc5) SHA1(31f3fd5892232701f375822a146853b71bad804b) ) // Same label different data than kingofb + ROM_LOAD( "8.d3", 0x06000, 0x2000, CRC(65f1281b) SHA1(a7db40464d52c615ffa40a577edf09fd6b1a677a) ) // Same label different data than kingofb + ROM_LOAD( "10.d5", 0x08000, 0x2000, CRC(af5013e7) SHA1(26e737138ab0e8dc28bea1f81d1f83345419e611) ) // Same label different data than kingofb + ROM_LOAD( "12.d8", 0x0a000, 0x2000, CRC(1f6654d6) SHA1(edd234b6daeaeaad335c8c725380bebd5c11063e) ) // Same label different data than kingofb + + ROM_REGION( 0x0300, "proms", ROMREGION_ERASE00 ) + /* PROMs are encoded here like the kingofb ones... */ + + ROM_REGION( 0x0c00, "user1", 0 ) /* color proms */ + ROM_LOAD( "prom2.bin", 0x0000, 0x0400, CRC(8ce34029) SHA1(b5150afe72ced9a396997dc11691a4ac4ed2cf2a) ) /* red component */ + ROM_LOAD( "prom3.bin", 0x0400, 0x0400, CRC(54cfe913) SHA1(d93f4bbf232e3893b953470e3e8f66426b4d9a64) ) /* green component */ + ROM_LOAD( "prom1.bin", 0x0800, 0x0400, CRC(913f5975) SHA1(3d1e40eeb4d5a3a4bd42ec73d05bfca13b2f1805) ) /* blue component */ +ROM_END + ROM_START( ringking ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "cx13.9f", 0x00000, 0x8000, CRC(93e38c02) SHA1(8f96f16f2904ef83101448fdf201b98b8e75e1d6) ) @@ -632,7 +722,7 @@ ROM_START( ringking ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "cx12.4ef", 0x00000, 0x8000, CRC(1d5d6c6b) SHA1(ea771f3e25850319f2fecfc91400fc1b9df606ef) ) - ROM_LOAD( "j05_20.bin", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) + ROM_LOAD( "20.j4", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) ROM_REGION( 0x2000, "gfx1", 0 ) ROM_LOAD( "cx08.13b", 0x00000, 0x2000, CRC(dbd7c1c2) SHA1(57cba817c4499a2677866911a8df5df26f899b8f) ) /* characters */ @@ -669,7 +759,7 @@ ROM_START( ringking2 ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "cx12.4ef", 0x00000, 0x8000, CRC(1d5d6c6b) SHA1(ea771f3e25850319f2fecfc91400fc1b9df606ef) ) - ROM_LOAD( "j05_20.bin", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) + ROM_LOAD( "20.j4", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) ROM_REGION( 0x2000, "gfx1", 0 ) ROM_LOAD( "cx08.13b", 0x00000, 0x2000, CRC(dbd7c1c2) SHA1(57cba817c4499a2677866911a8df5df26f899b8f) ) /* characters */ @@ -695,39 +785,39 @@ ROM_END ROM_START( ringking3 ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "14.9d", 0x00000, 0x4000, CRC(63627b8b) SHA1(eea736c8eec59fa561b9d1b5aa43df5410d8dde7) ) - ROM_LOAD( "15.9e", 0x04000, 0x4000, CRC(e7557489) SHA1(49dce8f6ce26283fbdca17d75699de4d636a900a) ) - ROM_LOAD( "16.9f", 0x08000, 0x4000, CRC(a3b3bb16) SHA1(4b4cb95a6bf4608ada1669208d9cabc3f856585a) ) + ROM_LOAD( "14.d9", 0x00000, 0x4000, CRC(63627b8b) SHA1(eea736c8eec59fa561b9d1b5aa43df5410d8dde7) ) + ROM_LOAD( "15.e9", 0x04000, 0x4000, CRC(e7557489) SHA1(49dce8f6ce26283fbdca17d75699de4d636a900a) ) + ROM_LOAD( "16.f9", 0x08000, 0x4000, CRC(a3b3bb16) SHA1(4b4cb95a6bf4608ada1669208d9cabc3f856585a) ) ROM_REGION( 0x10000, "video", 0 ) /* 64k for the video cpu */ - ROM_LOAD( "13.9b", 0x00000, 0x4000, CRC(f33f94a2) SHA1(58e9eef6525f6bbec4d9586e1fe5884a8af84739) ) + ROM_LOAD( "13.b9", 0x00000, 0x4000, CRC(f33f94a2) SHA1(58e9eef6525f6bbec4d9586e1fe5884a8af84739) ) ROM_REGION( 0x10000, "sprite", 0 ) /* 64k for the sprite cpu */ ROM_LOAD( "j09_dcr.bin", 0x00000, 0x2000, CRC(379f4f84) SHA1(c8171e15fe243857b6ca8f32c1cc09f12fa4c07c) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "f05_18.bin", 0x00000, 0x4000, CRC(c057e28e) SHA1(714d8f14d55a070efcf205f8946269181bf2198b) ) - ROM_LOAD( "h05_19.bin", 0x04000, 0x4000, CRC(060253dd) SHA1(9a24fc6aca64262e935971f96b3a103df9711f20) ) - ROM_LOAD( "j05_20.bin", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) + ROM_LOAD( "18.f4", 0x00000, 0x4000, CRC(c057e28e) SHA1(714d8f14d55a070efcf205f8946269181bf2198b) ) + ROM_LOAD( "19.h4", 0x04000, 0x4000, CRC(060253dd) SHA1(9a24fc6aca64262e935971f96b3a103df9711f20) ) + ROM_LOAD( "20.j4", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "12.15d", 0x00000, 0x2000, CRC(988a77bf) SHA1(c047c076d47479448ce2454c10010b672a1b457d) ) /* characters (Japanese) */ + ROM_LOAD( "12.d15", 0x00000, 0x2000, CRC(988a77bf) SHA1(c047c076d47479448ce2454c10010b672a1b457d) ) /* characters (Japanese) - same data as 13.d14 from kingofbj */ ROM_REGION( 0x18000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "vb01_01.bin", 0x00000, 0x4000, CRC(ce6580af) SHA1(9a94c681d4c54ca6c2f41ba1e51c61f54e844c77) ) - ROM_LOAD( "vb04_03.bin", 0x04000, 0x4000, CRC(cf74ea50) SHA1(9b0bdf636f9b31e6c7074d606d431a849a51e518) ) - ROM_LOAD( "vb07_05.bin", 0x08000, 0x4000, CRC(d8b53975) SHA1(52ad0b26fef7bb20d1bf953c5ebd519656682bac) ) - ROM_LOAD( "vb03_02.bin", 0x0c000, 0x4000, CRC(4ab506d2) SHA1(8c293d38429a1462f49462d623c47c402e3372f0) ) - ROM_LOAD( "vb05_04.bin", 0x10000, 0x4000, CRC(ecf95a2c) SHA1(b93d0ebdbde9311194a91fb3d6e5d5f33cc87e9d) ) - ROM_LOAD( "vb08_06.bin", 0x14000, 0x4000, CRC(8200cb2b) SHA1(c9e66027d796dd523eddf378d0e9a62ebcc8f6c8) ) + ROM_LOAD( "1.b1", 0x00000, 0x4000, CRC(ce6580af) SHA1(9a94c681d4c54ca6c2f41ba1e51c61f54e844c77) ) + ROM_LOAD( "3.b4", 0x04000, 0x4000, CRC(cf74ea50) SHA1(9b0bdf636f9b31e6c7074d606d431a849a51e518) ) + ROM_LOAD( "5.b7", 0x08000, 0x4000, CRC(d8b53975) SHA1(52ad0b26fef7bb20d1bf953c5ebd519656682bac) ) + ROM_LOAD( "2.b3", 0x0c000, 0x4000, CRC(4ab506d2) SHA1(8c293d38429a1462f49462d623c47c402e3372f0) ) + ROM_LOAD( "4.b5", 0x10000, 0x4000, CRC(ecf95a2c) SHA1(b93d0ebdbde9311194a91fb3d6e5d5f33cc87e9d) ) + ROM_LOAD( "6.b8", 0x14000, 0x4000, CRC(8200cb2b) SHA1(c9e66027d796dd523eddf378d0e9a62ebcc8f6c8) ) ROM_REGION( 0xc000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "7.1d", 0x00000, 0x2000, CRC(019a88b0) SHA1(9c2d4bb643b7bd14c4f347906707854d7a5cd340) ) - ROM_LOAD( "9.4d", 0x02000, 0x2000, CRC(bfdc741a) SHA1(2b874ef61eae8fab99d08a0273d69b90bb52b3f1) ) - ROM_LOAD( "11.7d", 0x04000, 0x2000, CRC(3cc7bdc5) SHA1(31f3fd5892232701f375822a146853b71bad804b) ) - ROM_LOAD( "8.3d", 0x06000, 0x2000, CRC(65f1281b) SHA1(a7db40464d52c615ffa40a577edf09fd6b1a677a) ) - ROM_LOAD( "10.5d", 0x08000, 0x2000, CRC(af5013e7) SHA1(26e737138ab0e8dc28bea1f81d1f83345419e611) ) - ROM_LOAD( "12.8d", 0x0a000, 0x2000, CRC(1f6654d6) SHA1(edd234b6daeaeaad335c8c725380bebd5c11063e) ) + ROM_LOAD( "7.d1", 0x00000, 0x2000, CRC(019a88b0) SHA1(9c2d4bb643b7bd14c4f347906707854d7a5cd340) ) // Same label different data than kingofb + ROM_LOAD( "9.d4", 0x02000, 0x2000, CRC(bfdc741a) SHA1(2b874ef61eae8fab99d08a0273d69b90bb52b3f1) ) // Same label different data than kingofb + ROM_LOAD( "11.d7", 0x04000, 0x2000, CRC(3cc7bdc5) SHA1(31f3fd5892232701f375822a146853b71bad804b) ) // Same label different data than kingofb + ROM_LOAD( "8.d3", 0x06000, 0x2000, CRC(65f1281b) SHA1(a7db40464d52c615ffa40a577edf09fd6b1a677a) ) // Same label different data than kingofb + ROM_LOAD( "10.d5", 0x08000, 0x2000, CRC(af5013e7) SHA1(26e737138ab0e8dc28bea1f81d1f83345419e611) ) // Same label different data than kingofb + ROM_LOAD( "12.d8", 0x0a000, 0x2000, CRC(1f6654d6) SHA1(edd234b6daeaeaad335c8c725380bebd5c11063e) ) // Same label different data than kingofb ROM_REGION( 0x0300, "proms", 0 ) /* we load the ringking PROMs and then expand the first to look like the kingofb ones... */ @@ -735,50 +825,6 @@ ROM_START( ringking3 ) ROM_LOAD( "82s129.1a", 0x0200, 0x0100, CRC(d345cbb3) SHA1(6318022ebbbe59d4c0a207801fffed1167b98a66) ) /* blue component */ ROM_END -ROM_START( ringkingw ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "15.9d", 0x00000, 0x4000, CRC(8263f517) SHA1(942012bfcc98dd2cd0437e015a164933c99d0f36) ) - ROM_LOAD( "16.9e", 0x04000, 0x4000, CRC(daadd700) SHA1(2405e954a28d18ae8c30955d0ad7c25c9abb2bd3) ) - - ROM_REGION( 0x10000, "video", 0 ) /* 64k for the video cpu */ - ROM_LOAD( "14.9b", 0x00000, 0x4000, CRC(76a73c95) SHA1(ca47917d8843b2867b66f74c6bc2f29bb90e11dc) ) - - ROM_REGION( 0x10000, "sprite", 0 ) /* 64k for the sprite cpu */ - ROM_LOAD( "17.xx", 0x00000, 0x2000, CRC(379f4f84) SHA1(c8171e15fe243857b6ca8f32c1cc09f12fa4c07c) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "18.4f", 0x00000, 0x4000, CRC(c057e28e) SHA1(714d8f14d55a070efcf205f8946269181bf2198b) ) - ROM_LOAD( "19.4h", 0x04000, 0x4000, CRC(060253dd) SHA1(9a24fc6aca64262e935971f96b3a103df9711f20) ) - ROM_LOAD( "20.4j", 0x08000, 0x4000, CRC(64c137a4) SHA1(e38adeb19e24357cc5581f0a3097c1d24914e25c) ) - - ROM_REGION( 0x2000, "gfx1", 0 ) - ROM_LOAD( "13.14d", 0x00000, 0x2000, CRC(e36d4f4f) SHA1(059799b04a7d3e02c1a7f9a5b878d06afef305df) ) /* characters */ - - ROM_REGION( 0x18000, "gfx2", 0 ) /* sprites */ - ROM_LOAD( "1.1b", 0x00000, 0x4000, CRC(ce6580af) SHA1(9a94c681d4c54ca6c2f41ba1e51c61f54e844c77) ) - ROM_LOAD( "3.3b", 0x04000, 0x4000, CRC(cf74ea50) SHA1(9b0bdf636f9b31e6c7074d606d431a849a51e518) ) - ROM_LOAD( "5.5b", 0x08000, 0x4000, CRC(d8b53975) SHA1(52ad0b26fef7bb20d1bf953c5ebd519656682bac) ) - ROM_LOAD( "2.2b", 0x0c000, 0x4000, CRC(4ab506d2) SHA1(8c293d38429a1462f49462d623c47c402e3372f0) ) - ROM_LOAD( "4.4b", 0x10000, 0x4000, CRC(ecf95a2c) SHA1(b93d0ebdbde9311194a91fb3d6e5d5f33cc87e9d) ) - ROM_LOAD( "6.6b", 0x14000, 0x4000, CRC(8200cb2b) SHA1(c9e66027d796dd523eddf378d0e9a62ebcc8f6c8) ) - - ROM_REGION( 0xc000, "gfx3", 0 ) /* tiles */ - ROM_LOAD( "7.1d", 0x00000, 0x2000, CRC(019a88b0) SHA1(9c2d4bb643b7bd14c4f347906707854d7a5cd340) ) - ROM_LOAD( "9.1d", 0x02000, 0x2000, CRC(bfdc741a) SHA1(2b874ef61eae8fab99d08a0273d69b90bb52b3f1) ) - ROM_LOAD( "11.1d", 0x04000, 0x2000, CRC(3cc7bdc5) SHA1(31f3fd5892232701f375822a146853b71bad804b) ) - ROM_LOAD( "8.1d", 0x06000, 0x2000, CRC(65f1281b) SHA1(a7db40464d52c615ffa40a577edf09fd6b1a677a) ) - ROM_LOAD( "10.1d", 0x08000, 0x2000, CRC(af5013e7) SHA1(26e737138ab0e8dc28bea1f81d1f83345419e611) ) - ROM_LOAD( "12.1d", 0x0a000, 0x2000, CRC(1f6654d6) SHA1(edd234b6daeaeaad335c8c725380bebd5c11063e) ) - - ROM_REGION( 0x0300, "proms", ROMREGION_ERASE00 ) - /* PROMs are encoded here like the kingofb ones... */ - - ROM_REGION( 0x0c00, "user1", 0 ) /* color proms */ - ROM_LOAD( "prom2.bin", 0x0000, 0x0400, CRC(8ce34029) SHA1(b5150afe72ced9a396997dc11691a4ac4ed2cf2a) ) /* red component */ - ROM_LOAD( "prom3.bin", 0x0400, 0x0400, CRC(54cfe913) SHA1(d93f4bbf232e3893b953470e3e8f66426b4d9a64) ) /* green component */ - ROM_LOAD( "prom1.bin", 0x0800, 0x0400, CRC(913f5975) SHA1(3d1e40eeb4d5a3a4bd42ec73d05bfca13b2f1805) ) /* blue component */ -ROM_END - DRIVER_INIT_MEMBER(kingofb_state,ringking3) { int i; @@ -813,8 +859,9 @@ DRIVER_INIT_MEMBER(kingofb_state,ringkingw) } -GAME( 1985, kingofb, 0, kingofb, kingofb, driver_device, 0, ROT90, "Wood Place Inc.", "King of Boxer (English)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, ringking, kingofb, ringking, ringking, driver_device, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Ring King (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, ringking2, kingofb, ringking, ringking, driver_device, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Ring King (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, ringking3, kingofb, kingofb, kingofb, kingofb_state, ringking3,ROT90, "Wood Place Inc. (Data East USA license)", "Ring King (US set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, ringkingw, kingofb, kingofb, kingofb, kingofb_state, ringkingw,ROT90, "Wood Place Inc.", "Ring King (US, Wood Place Inc.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, kingofb, 0, kingofb, kingofb, kingofb_state, 0, ROT90, "Wood Place Inc.", "King of Boxer (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, kingofbj, kingofb, kingofb, kingofb, kingofb_state, 0, ROT90, "Wood Place Inc.", "King of Boxer (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, ringkingw, kingofb, kingofb, kingofb, kingofb_state, ringkingw, ROT90, "Wood Place Inc.", "Ring King (US, Wood Place Inc.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, ringking, kingofb, ringking, ringking, kingofb_state, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Ring King (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, ringking2, kingofb, ringking, ringking, kingofb_state, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Ring King (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, ringking3, kingofb, kingofb, kingofb, kingofb_state, ringking3, ROT90, "Wood Place Inc. (Data East USA license)", "Ring King (US set 3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/kingpin.cpp b/src/mame/drivers/kingpin.cpp index b581089475e..27cb6ce9abf 100644 --- a/src/mame/drivers/kingpin.cpp +++ b/src/mame/drivers/kingpin.cpp @@ -127,7 +127,7 @@ static INPUT_PORTS_START( kingpin ) INPUT_PORTS_END -static MACHINE_CONFIG_START( kingpin, kingpin_state ) +static MACHINE_CONFIG_START( kingpin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) @@ -210,5 +210,5 @@ ROM_START( maxideal ) ROM_END -GAME( 1983, kingpin, 0, kingpin, kingpin, driver_device, 0, 0, "ACL Manufacturing", "Kingpin", 0) -GAME( 1983, maxideal, 0, kingpin, kingpin, driver_device, 0, 0, "ACL Manufacturing", "Maxi-Dealer", 0) +GAME( 1983, kingpin, 0, kingpin, kingpin, kingpin_state, 0, 0, "ACL Manufacturing", "Kingpin", 0 ) +GAME( 1983, maxideal, 0, kingpin, kingpin, kingpin_state, 0, 0, "ACL Manufacturing", "Maxi-Dealer", 0 ) diff --git a/src/mame/drivers/kinst.cpp b/src/mame/drivers/kinst.cpp index 58c7bda6d7f..1f5c56702a5 100644 --- a/src/mame/drivers/kinst.cpp +++ b/src/mame/drivers/kinst.cpp @@ -166,6 +166,7 @@ public: required_shared_ptr m_rombase; uint32_t *m_video_base; const uint8_t *m_control_map; + emu_timer *m_irq0_stop_timer; DECLARE_READ32_MEMBER(kinst_control_r); DECLARE_WRITE32_MEMBER(kinst_control_w); DECLARE_READ32_MEMBER(kinst_ide_r); @@ -208,6 +209,8 @@ void kinst_state::machine_start() m_maincpu->add_fastram(0x08000000, 0x087fffff, false, m_rambase2); m_maincpu->add_fastram(0x00000000, 0x0007ffff, false, m_rambase); m_maincpu->add_fastram(0x1fc00000, 0x1fc7ffff, true, m_rombase); + + m_irq0_stop_timer = timer_alloc(TIMER_IRQ0_STOP); } @@ -302,7 +305,7 @@ void kinst_state::device_timer(emu_timer &timer, device_timer_id id, int param, INTERRUPT_GEN_MEMBER(kinst_state::irq0_start) { device.execute().set_input_line(0, ASSERT_LINE); - timer_set(attotime::from_usec(50), TIMER_IRQ0_STOP); + m_irq0_stop_timer->adjust(attotime::from_usec(50)); } @@ -663,7 +666,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( kinst, kinst_state ) +static MACHINE_CONFIG_START( kinst ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R4600LE, MASTER_CLOCK*2) @@ -929,7 +932,7 @@ DRIVER_INIT_MEMBER(kinst_state,kinst2) * *************************************/ -GAME( 1994, kinst, 0, kinst, kinst, kinst_state, kinst, ROT0, "Rare", "Killer Instinct (v1.5d)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, kinst, 0, kinst, kinst, kinst_state, kinst, ROT0, "Rare", "Killer Instinct (v1.5d)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, kinst14, kinst, kinst, kinst2, kinst_state, kinst, ROT0, "Rare", "Killer Instinct (v1.4)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, kinst13, kinst, kinst, kinst2, kinst_state, kinst, ROT0, "Rare", "Killer Instinct (v1.3)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, kinstp, kinst, kinst, kinst2, kinst_state, kinst, ROT0, "Rare", "Killer Instinct (proto v4.7)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/kissproto.cpp b/src/mame/drivers/kissproto.cpp index d732fb116be..60a8c68dd86 100644 --- a/src/mame/drivers/kissproto.cpp +++ b/src/mame/drivers/kissproto.cpp @@ -46,7 +46,7 @@ DRIVER_INIT_MEMBER(kissp_state,kissp) { } -static MACHINE_CONFIG_START( kissp, kissp_state ) +static MACHINE_CONFIG_START( kissp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8035, 6000000/15) MCFG_CPU_PROGRAM_MAP(kissp_map) @@ -72,5 +72,5 @@ ROM_START(kissp2) ROM_RELOAD( 0x4800, 0x0800) ROM_END -GAME( 1979, kissp, kiss, kissp, kissp, kissp_state, kissp, ROT0, "Bally", "Kiss (prototype)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1979, kissp, kiss, kissp, kissp, kissp_state, kissp, ROT0, "Bally", "Kiss (prototype)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1979, kissp2, kiss, kissp, kissp, kissp_state, kissp, ROT0, "Bally", "Kiss (prototype v.2)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/klax.cpp b/src/mame/drivers/klax.cpp index f5bdbcbd1e0..7446c8b27f3 100644 --- a/src/mame/drivers/klax.cpp +++ b/src/mame/drivers/klax.cpp @@ -126,20 +126,20 @@ static INPUT_PORTS_START( klax ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0x0600, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) - PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) - PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) PORT_START("P2") PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x0600, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_SERVICE( 0x0800, IP_ACTIVE_LOW ) - PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) - PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) INPUT_PORTS_END @@ -190,7 +190,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( klax, klax_state ) +static MACHINE_CONFIG_START( klax ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) @@ -226,7 +226,7 @@ static MACHINE_CONFIG_START( klax, klax_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", ATARI_CLOCK_14MHz/4/4, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", ATARI_CLOCK_14MHz/4/4, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -438,10 +438,10 @@ ROM_END * *************************************/ -GAME( 1989, klax, 0, klax, klax, driver_device, 0, ROT0, "Atari Games", "Klax (set 1)", 0 ) -GAME( 1989, klax2, klax, klax, klax, driver_device, 0, ROT0, "Atari Games", "Klax (set 2)", 0 ) -GAME( 1989, klax3, klax, klax, klax, driver_device, 0, ROT0, "Atari Games", "Klax (set 3)", 0 ) -GAME( 1989, klaxj, klax, klax, klax, driver_device, 0, ROT0, "Atari Games", "Klax (Japan)", 0 ) -GAME( 1989, klaxd, klax, klax, klax, driver_device, 0, ROT0, "Atari Games", "Klax (Germany)", 0 ) +GAME( 1989, klax, 0, klax, klax, klax_state, 0, ROT0, "Atari Games", "Klax (set 1)", 0 ) +GAME( 1989, klax2, klax, klax, klax, klax_state, 0, ROT0, "Atari Games", "Klax (set 2)", 0 ) +GAME( 1989, klax3, klax, klax, klax, klax_state, 0, ROT0, "Atari Games", "Klax (set 3)", 0 ) +GAME( 1989, klaxj, klax, klax, klax, klax_state, 0, ROT0, "Atari Games", "Klax (Japan)", 0 ) +GAME( 1989, klaxd, klax, klax, klax, klax_state, 0, ROT0, "Atari Games", "Klax (Germany)", 0 ) -GAME( 1989, klax2bl, klax, klax2bl, klax, driver_device, 0, ROT0, "bootleg", "Klax (set 2, bootleg)", MACHINE_NOT_WORKING ) +GAME( 1989, klax2bl, klax, klax2bl, klax, klax_state, 0, ROT0, "bootleg", "Klax (set 2, bootleg)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/kncljoe.cpp b/src/mame/drivers/kncljoe.cpp index 39e5df12cac..2f07c4a98fe 100644 --- a/src/mame/drivers/kncljoe.cpp +++ b/src/mame/drivers/kncljoe.cpp @@ -252,7 +252,7 @@ void kncljoe_state::machine_reset() m_flipscreen = 0; } -static MACHINE_CONFIG_START( kncljoe, kncljoe_state ) +static MACHINE_CONFIG_START( kncljoe ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_6MHz) /* verified on pcb */ @@ -397,6 +397,6 @@ ROM_END -GAME( 1985, kncljoe, 0, kncljoe, kncljoe, driver_device, 0, ROT0, "Seibu Kaihatsu (Taito license)", "Knuckle Joe (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, kncljoea, kncljoe, kncljoe, kncljoe, driver_device, 0, ROT0, "Seibu Kaihatsu (Taito license)", "Knuckle Joe (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, bcrusher, kncljoe, kncljoe, kncljoe, driver_device, 0, ROT0, "bootleg", "Bone Crusher", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, kncljoe, 0, kncljoe, kncljoe, kncljoe_state, 0, ROT0, "Seibu Kaihatsu (Taito license)", "Knuckle Joe (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, kncljoea, kncljoe, kncljoe, kncljoe, kncljoe_state, 0, ROT0, "Seibu Kaihatsu (Taito license)", "Knuckle Joe (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, bcrusher, kncljoe, kncljoe, kncljoe, kncljoe_state, 0, ROT0, "bootleg", "Bone Crusher", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/koftball.cpp b/src/mame/drivers/koftball.cpp index 3802e8e960b..2dcd56578bd 100644 --- a/src/mame/drivers/koftball.cpp +++ b/src/mame/drivers/koftball.cpp @@ -28,8 +28,6 @@ ft5_v6_c4.u58 / */ -#define NVRAM_HACK 1 - #include "emu.h" #include "cpu/m68000/m68000.h" #include "sound/okim6295.h" @@ -39,6 +37,8 @@ ft5_v6_c4.u58 / #include "speaker.h" +#define NVRAM_HACK 1 + class koftball_state : public driver_device { public: @@ -228,7 +228,7 @@ static GFXDECODE_START( koftball ) GFXDECODE_END -static MACHINE_CONFIG_START( koftball, koftball_state ) +static MACHINE_CONFIG_START( koftball ) MCFG_CPU_ADD("maincpu", M68000, XTAL_21_4772MHz / 2) MCFG_CPU_PROGRAM_MAP(koftball_mem) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", koftball_state, bmc_interrupt, "screen", 0, 1) @@ -252,7 +252,7 @@ static MACHINE_CONFIG_START( koftball, koftball_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) - MCFG_OKIM6295_ADD("oki", 1122000, OKIM6295_PIN7_LOW) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", 1122000, PIN7_LOW) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END diff --git a/src/mame/drivers/koikoi.cpp b/src/mame/drivers/koikoi.cpp index 7c066b35e9c..1f8ccecccab 100644 --- a/src/mame/drivers/koikoi.cpp +++ b/src/mame/drivers/koikoi.cpp @@ -347,7 +347,7 @@ void koikoi_state::machine_reset() m_ioram[i] = 0; } -static MACHINE_CONFIG_START( koikoi, koikoi_state ) +static MACHINE_CONFIG_START( koikoi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,KOIKOI_CRYSTAL/4) /* ?? */ @@ -432,4 +432,4 @@ ROM_END * *************************************/ -GAME( 1982, koikoi, 0, koikoi, koikoi, driver_device, 0, ROT270, "Kiwako", "Koi Koi Part 2", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, koikoi, 0, koikoi, koikoi, koikoi_state, 0, ROT270, "Kiwako", "Koi Koi Part 2", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/konamigq.cpp b/src/mame/drivers/konamigq.cpp index 522c1571306..d5fa61e8106 100644 --- a/src/mame/drivers/konamigq.cpp +++ b/src/mame/drivers/konamigq.cpp @@ -311,7 +311,7 @@ MACHINE_RESET_MEMBER(konamigq_state,konamigq) { } -static MACHINE_CONFIG_START( konamigq, konamigq_state ) +static MACHINE_CONFIG_START( konamigq ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", CXD8530BQ, XTAL_67_7376MHz) MCFG_CPU_PROGRAM_MAP(konamigq_map) @@ -319,8 +319,8 @@ static MACHINE_CONFIG_START( konamigq, konamigq_state ) MCFG_RAM_MODIFY("maincpu:ram") MCFG_RAM_DEFAULT_SIZE("4M") - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate(&konamigq_state::scsi_dma_read, (konamigq_state *) owner ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate(&konamigq_state::scsi_dma_write, (konamigq_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&konamigq_state::scsi_dma_read, (konamigq_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&konamigq_state::scsi_dma_write, (konamigq_state *) owner ) ) MCFG_CPU_ADD("soundcpu", M68000, XTAL_32MHz/4) /* 8MHz - measured */ MCFG_CPU_PROGRAM_MAP(konamigq_sound_map) diff --git a/src/mame/drivers/konamigv.cpp b/src/mame/drivers/konamigv.cpp index c8aa17a5015..52176b87920 100644 --- a/src/mame/drivers/konamigv.cpp +++ b/src/mame/drivers/konamigv.cpp @@ -320,7 +320,7 @@ static MACHINE_CONFIG_FRAGMENT( cdrom_config ) MCFG_SOUND_ROUTE( 1, "^^^^rspeaker", 1.0 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( konamigv, konamigv_state ) +static MACHINE_CONFIG_START( konamigv ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8530BQ, XTAL_67_7376MHz ) MCFG_CPU_PROGRAM_MAP( konamigv_map ) @@ -328,8 +328,8 @@ static MACHINE_CONFIG_START( konamigv, konamigv_state ) MCFG_RAM_MODIFY("maincpu:ram") MCFG_RAM_DEFAULT_SIZE("2M") - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate(&konamigv_state::scsi_dma_read, (konamigv_state *) owner ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate(&konamigv_state::scsi_dma_write, (konamigv_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&konamigv_state::scsi_dma_read, (konamigv_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&konamigv_state::scsi_dma_write, (konamigv_state *) owner ) ) MCFG_DEVICE_ADD("mb89371", MB89371, 0) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -848,19 +848,19 @@ ROM_START( tmoshspa ) ROM_END /* BIOS placeholder */ -GAME( 1995, konamigv, 0, konamigv, konamigv, driver_device, 0, ROT0, "Konami", "Baby Phoenix/GV System", MACHINE_IS_BIOS_ROOT ) - -GAME( 1996, powyak96, konamigv, konamigv, konamigv, driver_device, 0, ROT0, "Konami", "Jikkyou Powerful Pro Yakyuu '96 (GV017 Japan 1.03)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, hyperath, konamigv, konamigv, konamigv, driver_device, 0, ROT0, "Konami", "Hyper Athlete (GV021 Japan 1.00)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, lacrazyc, konamigv, konamigv, konamigv, driver_device, 0, ROT0, "Konami", "Let's Attack Crazy Cross (GV027 Asia 1.10)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, susume, lacrazyc, konamigv, konamigv, driver_device, 0, ROT0, "Konami", "Susume! Taisen Puzzle-Dama (GV027 Japan 1.20)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, btchamp, konamigv, btchamp, btchamp, driver_device, 0, ROT0, "Konami", "Beat the Champ (GV053 UAA01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, kdeadeye, konamigv, kdeadeye, kdeadeye, driver_device, 0, ROT0, "Konami", "Dead Eye (GV054 UAA01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, weddingr, konamigv, konamigv, weddingr, driver_device, 0, ROT0, "Konami", "Wedding Rhapsody (GX624 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, tmosh, konamigv, tmosh, konamigv, driver_device, 0, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart (GQ673 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1997, tmoshs, konamigv, tmosh, konamigv, driver_device, 0, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal Version (GE755 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1997, tmoshsp, konamigv, tmosh, konamigv, driver_device, 0, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1997, tmoshspa, tmoshsp, tmosh, konamigv, driver_device, 0, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1998, nagano98, konamigv, konamigv, konamigv, driver_device, 0, ROT0, "Konami", "Nagano Winter Olympics '98 (GX720 EAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) -GAME( 1998, naganoj, nagano98, konamigv, konamigv, driver_device, 0, ROT0, "Konami", "Hyper Olympic in Nagano (GX720 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +GAME( 1995, konamigv, 0, konamigv, konamigv, konamigv_state, 0, ROT0, "Konami", "Baby Phoenix/GV System", MACHINE_IS_BIOS_ROOT ) + +GAME( 1996, powyak96, konamigv, konamigv, konamigv, konamigv_state, 0, ROT0, "Konami", "Jikkyou Powerful Pro Yakyuu '96 (GV017 Japan 1.03)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, hyperath, konamigv, konamigv, konamigv, konamigv_state, 0, ROT0, "Konami", "Hyper Athlete (GV021 Japan 1.00)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, lacrazyc, konamigv, konamigv, konamigv, konamigv_state, 0, ROT0, "Konami", "Let's Attack Crazy Cross (GV027 Asia 1.10)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, susume, lacrazyc, konamigv, konamigv, konamigv_state, 0, ROT0, "Konami", "Susume! Taisen Puzzle-Dama (GV027 Japan 1.20)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, btchamp, konamigv, btchamp, btchamp, konamigv_state, 0, ROT0, "Konami", "Beat the Champ (GV053 UAA01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, kdeadeye, konamigv, kdeadeye, kdeadeye, konamigv_state, 0, ROT0, "Konami", "Dead Eye (GV054 UAA01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, weddingr, konamigv, konamigv, weddingr, konamigv_state, 0, ROT0, "Konami", "Wedding Rhapsody (GX624 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, tmosh, konamigv, tmosh, konamigv, konamigv_state, 0, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart (GQ673 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1997, tmoshs, konamigv, tmosh, konamigv, konamigv_state, 0, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal Version (GE755 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1997, tmoshsp, konamigv, tmosh, konamigv, konamigv_state, 0, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1997, tmoshspa, tmoshsp, tmosh, konamigv, konamigv_state, 0, ROT0, "Konami", "Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1998, nagano98, konamigv, konamigv, konamigv, konamigv_state, 0, ROT0, "Konami", "Nagano Winter Olympics '98 (GX720 EAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) +GAME( 1998, naganoj, nagano98, konamigv, konamigv, konamigv_state, 0, ROT0, "Konami", "Hyper Olympic in Nagano (GX720 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) GAME( 2000, simpbowl, konamigv, simpbowl, simpbowl, konamigv_state, simpbowl, ROT0, "Konami", "Simpsons Bowling (GQ829 UAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp index b84e5086145..5cde5f8072d 100644 --- a/src/mame/drivers/konamigx.cpp +++ b/src/mame/drivers/konamigx.cpp @@ -1609,7 +1609,7 @@ WRITE_LINE_MEMBER(konamigx_state::hblank_irq_ack_w) m_gx_syncen |= 0x40; } -static MACHINE_CONFIG_START( konamigx, konamigx_state ) +static MACHINE_CONFIG_START( konamigx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, MASTER_CLOCK) MCFG_CPU_PROGRAM_MAP(gx_type2_map) @@ -2272,8 +2272,8 @@ ROM_START( rungun2 ) /* main program */ ROM_REGION( 0x800000, "maincpu", 0 ) GX_BIOS - ROM_LOAD32_WORD_SWAP( "505uaa03.27b", 0x200000, 512*1024, CRC(ad7f9ded) SHA1(824448daeb6109b822667e54baa1c73484642ac9)) - ROM_LOAD32_WORD_SWAP( "505uaa02.31b", 0x200002, 512*1024, CRC(cfca23f7) SHA1(dfea871f0aaf6b2db6d924ddfd4174e7a14333e8)) + ROM_LOAD32_WORD_SWAP( "505uaa03.27b", 0x200000, 512*1024, CRC(ad7f9ded) SHA1(824448daeb6109b822667e54baa1c73484642ac9) ) + ROM_LOAD32_WORD_SWAP( "505uaa02.31b", 0x200002, 512*1024, CRC(cfca23f7) SHA1(dfea871f0aaf6b2db6d924ddfd4174e7a14333e8) ) /* data roms */ ROM_LOAD32_WORD_SWAP( "505a05.29r", 0x400000, 1024*1024, CRC(5da5d695) SHA1(02bfbfa4ba0213a23819828a9be02923740dccd6) ) @@ -2371,18 +2371,18 @@ ROM_START( rushhero ) ROM_LOAD32_WORD_SWAP( "605uab02.31m", 0x200002, 512*1024, CRC(94c3d835) SHA1(f48d34987fa6575a2c41d3ca3359e9e2cbc817e0) ) /* data roms */ - ROM_LOAD32_WORD_SWAP( "605a05.29r", 0x400000, 1024*1024, CRC(9bca4297) SHA1(c20be1ffcee8bd56f69d4fcc19d0035b3f74b8f2)) - ROM_LOAD32_WORD_SWAP( "605a04.31r", 0x400002, 1024*1024, CRC(f6788154) SHA1(093c145d5348b4f10193acc258f5539bd59138a1)) + ROM_LOAD32_WORD_SWAP( "605a05.29r", 0x400000, 1024*1024, CRC(9bca4297) SHA1(c20be1ffcee8bd56f69d4fcc19d0035b3f74b8f2) ) + ROM_LOAD32_WORD_SWAP( "605a04.31r", 0x400002, 1024*1024, CRC(f6788154) SHA1(093c145d5348b4f10193acc258f5539bd59138a1) ) /* sound program */ ROM_REGION( 0x40000, "soundcpu", 0 ) - ROM_LOAD16_BYTE("605a06.9m", 0x000000, 128*1024, CRC(9ca03dce) SHA1(008106e864d8390d7ae8645a2fe06d0eaaa746e0)) - ROM_LOAD16_BYTE("605a07.7m", 0x000001, 128*1024, CRC(3116a8b0) SHA1(f0899d7027464d9aad45ffa6a464288a51a80dc1)) + ROM_LOAD16_BYTE("605a06.9m", 0x000000, 128*1024, CRC(9ca03dce) SHA1(008106e864d8390d7ae8645a2fe06d0eaaa746e0) ) + ROM_LOAD16_BYTE("605a07.7m", 0x000001, 128*1024, CRC(3116a8b0) SHA1(f0899d7027464d9aad45ffa6a464288a51a80dc1) ) /* tiles */ ROM_REGION( 0x600000, "gfx1", ROMREGION_ERASE00 ) - ROM_LOAD16_BYTE( "605a21.11r", 0x000000, 1024*1024, CRC(0e5add29) SHA1(f80d81ff8110825ba19ebc3cf50480b8cf275571)) - ROM_LOAD16_BYTE( "605a20.11m", 0x000001, 1024*1024, CRC(a8fb4288) SHA1(b0ee6c2add5a8063f771ac8bbdfd78c0382a5036)) + ROM_LOAD16_BYTE( "605a21.11r", 0x000000, 1024*1024, CRC(0e5add29) SHA1(f80d81ff8110825ba19ebc3cf50480b8cf275571) ) + ROM_LOAD16_BYTE( "605a20.11m", 0x000001, 1024*1024, CRC(a8fb4288) SHA1(b0ee6c2add5a8063f771ac8bbdfd78c0382a5036) ) /* sprites */ ROM_REGION( 0x3000000, "gfx2", ROMREGION_ERASE00 ) @@ -2392,8 +2392,8 @@ ROM_START( rushhero ) _48_WORD_ROM_LOAD( "605a17.16r", 0x0c00000, 4*1024*1024, CRC(7a8f1cf9) SHA1(4c07f846915bded61c40876a10f5457e8895ad58) ) _48_WORD_ROM_LOAD( "605a13.21r", 0x0c00002, 4*1024*1024, CRC(9a6dff6d) SHA1(cbc200bde5933098e768db8d3021f77bdfe454b8) ) _48_WORD_ROM_LOAD( "605a09.25r", 0x0c00004, 4*1024*1024, CRC(624fd486) SHA1(edd81d5487f8239ffa89b931430cf41f06a17cf6) ) - _48_WORD_ROM_LOAD( "605a14.14m", 0x1800000, 4*1024*1024, CRC(4d4dbecb) SHA1(7c3cb2739d6b729d855d652b1991c7af6cd79d1c) ) - _48_WORD_ROM_LOAD( "605a18.18m", 0x1800002, 4*1024*1024, CRC(b5115d76) SHA1(48c3119afb649c58d4df36806fe5530ddd379782) ) + _48_WORD_ROM_LOAD( "605a18.14m", 0x1800000, 4*1024*1024, CRC(4d4dbecb) SHA1(7c3cb2739d6b729d855d652b1991c7af6cd79d1c) ) + _48_WORD_ROM_LOAD( "605a14.18m", 0x1800002, 4*1024*1024, CRC(b5115d76) SHA1(48c3119afb649c58d4df36806fe5530ddd379782) ) _48_WORD_ROM_LOAD( "605a10.23m", 0x1800004, 4*1024*1024, CRC(4f47d434) SHA1(c4503993c738e1b8df6f045f5a82504363682db7) ) _48_WORD_ROM_LOAD( "605a16.16m", 0x2400000, 4*1024*1024, CRC(aab542ca) SHA1(9728b028f48768236f47a7a9bddb27944297b583) ) _48_WORD_ROM_LOAD( "605a12.21m", 0x2400002, 4*1024*1024, CRC(194ffad0) SHA1(1c56f4e89bfe72b435793b907e7ca3e62ecddf4b) ) @@ -2401,11 +2401,11 @@ ROM_START( rushhero ) /* PSAC2 tiles */ ROM_REGION( 0x200000, "gfx3", 0 ) - ROM_LOAD("605a24.22h", 0x000000, 2*1024*1024, CRC(73f06065) SHA1(8ca6747204a4c2cf59f19bcc9fce280e796e4a6e)) + ROM_LOAD("605a24.22h", 0x000000, 2*1024*1024, CRC(73f06065) SHA1(8ca6747204a4c2cf59f19bcc9fce280e796e4a6e) ) /* sound data */ ROM_REGION( 0x400000, "shared", 0 ) - ROM_LOAD( "605a23.7r", 0x000000, 4*1024*1024, BAD_DUMP CRC(992c4751) SHA1(18ecfc21138f9dc62f0658750808bbef649510f7)) //speaker samples are distorted + ROM_LOAD( "605a23.7r", 0x000000, 4*1024*1024, CRC(458ecee1) SHA1(4adcbbff312597716c6db1cd5df6cdf7022d4961) ) ROM_END /* Taisen Tokkae-dama */ diff --git a/src/mame/drivers/konamim2.cpp b/src/mame/drivers/konamim2.cpp index fb180a6874e..71149b07a8a 100644 --- a/src/mame/drivers/konamim2.cpp +++ b/src/mame/drivers/konamim2.cpp @@ -1269,7 +1269,7 @@ void konamim2_state::machine_reset() cde_init(); } -static MACHINE_CONFIG_START( m2, konamim2_state ) +static MACHINE_CONFIG_START( m2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC602, 66000000) /* actually PPC602, 66MHz */ @@ -1302,7 +1302,7 @@ static MACHINE_CONFIG_START( m2, konamim2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS ( 3do_m2, m2, konamim2_state ) +static MACHINE_CONFIG_DERIVED ( 3do_m2, m2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(3do_m2_main) @@ -1458,4 +1458,4 @@ GAME( 1998, evilngt, 0, m2, m2, konamim2_state, m2, ROT0, "Konami", "Evi GAME( 1998, evilngte, evilngt, m2, m2, konamim2_state, m2, ROT0, "Konami", "Evil Night (ver EAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) GAME( 1998, hellngt, evilngt, m2, m2, konamim2_state, m2, ROT0, "Konami", "Hell Night (ver EAA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -CONS( 199?, 3do_m2, 0, 0, 3do_m2, m2, driver_device, 0, "3DO", "3DO M2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 199?, 3do_m2, 0, 0, 3do_m2, m2, konamim2_state, 0, "3DO", "3DO M2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/konendev.cpp b/src/mame/drivers/konendev.cpp index 4bbbfdc35ed..9e583f34f53 100644 --- a/src/mame/drivers/konendev.cpp +++ b/src/mame/drivers/konendev.cpp @@ -299,7 +299,7 @@ INTERRUPT_GEN_MEMBER(konendev_state::vbl_interrupt) device.execute().set_input_line(INPUT_LINE_IRQ3, ASSERT_LINE); } -static MACHINE_CONFIG_START( konendev, konendev_state ) +static MACHINE_CONFIG_START( konendev ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GCX, 32000000) // Clock unknown MCFG_CPU_PROGRAM_MAP(konendev_map) diff --git a/src/mame/drivers/konin.cpp b/src/mame/drivers/konin.cpp index db194aa5e59..68c15cf24f3 100644 --- a/src/mame/drivers/konin.cpp +++ b/src/mame/drivers/konin.cpp @@ -102,7 +102,7 @@ WRITE_LINE_MEMBER( konin_state::clock_w ) m_uart->write_rxc(state); } -static MACHINE_CONFIG_START( konin, konin_state ) +static MACHINE_CONFIG_START( konin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(konin_mem) @@ -140,5 +140,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, konin, 0, 0, konin, konin, driver_device, 0, "Mera-Elzab", "Konin", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, konin, 0, 0, konin, konin, konin_state, 0, "Mera-Elzab", "Konin", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/konmedal.cpp b/src/mame/drivers/konmedal.cpp index 438e046e6f5..0b6dbb22163 100644 --- a/src/mame/drivers/konmedal.cpp +++ b/src/mame/drivers/konmedal.cpp @@ -206,10 +206,10 @@ void konmedal_state::machine_reset() { } -static MACHINE_CONFIG_START( konmedal, konmedal_state ) +static MACHINE_CONFIG_START( konmedal ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, 4000000) // unknown + MCFG_CPU_ADD("maincpu", Z80, XTAL_14_31818MHz/2) // z84c0008pec 8mhz part, 14.31818Mhz xtal verified on PCB, divisor unknown MCFG_CPU_PROGRAM_MAP(medal_main) MCFG_CPU_VBLANK_INT_DRIVER("screen", konmedal_state, konmedal_interrupt) @@ -235,7 +235,7 @@ static MACHINE_CONFIG_START( konmedal, konmedal_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL_16_9344MHz) + MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL_16_9344MHz) // 16.9344MHz xtal verified on PCB MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -261,4 +261,4 @@ ROM_START( tsukande ) ROM_LOAD( "441a12.10e", 0x080000, 0x080000, CRC(dc2dd5bc) SHA1(28ef6c96c360d706a4296a686f3f2a54fce61bfb) ) ROM_END -GAME( 1995, tsukande, 0, konmedal, konmedal, driver_device, 0, 0, "Konami", "Tsukande Toru Chicchi", MACHINE_NOT_WORKING) +GAME( 1995, tsukande, 0, konmedal, konmedal, konmedal_state, 0, ROT0, "Konami", "Tsukande Toru Chicchi", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/kontest.cpp b/src/mame/drivers/kontest.cpp index e794a2fd9ad..22f3610345d 100644 --- a/src/mame/drivers/kontest.cpp +++ b/src/mame/drivers/kontest.cpp @@ -247,7 +247,7 @@ void kontest_state::machine_reset() m_control = 0; } -static MACHINE_CONFIG_START( kontest, kontest_state ) +static MACHINE_CONFIG_START( kontest ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MAIN_CLOCK/8) @@ -291,4 +291,4 @@ ROM_START( kontest ) ROM_LOAD( "800a02.4f", 0x000000, 0x000020, CRC(6d604171) SHA1(6b1366fb53cecbde6fb651142a77917dd16daf69) ) ROM_END -GAME( 1987?, kontest, 0, kontest, kontest, driver_device, 0, ROT0, "Konami", "Konami Test Board (GX800, Japan)", MACHINE_SUPPORTS_SAVE ) // late 1987 or early 1988 +GAME( 1987?, kontest, 0, kontest, kontest, kontest_state, 0, ROT0, "Konami", "Konami Test Board (GX800, Japan)", MACHINE_SUPPORTS_SAVE ) // late 1987 or early 1988 diff --git a/src/mame/drivers/kopunch.cpp b/src/mame/drivers/kopunch.cpp index 50abe9a3b3c..2ca5856dcb4 100644 --- a/src/mame/drivers/kopunch.cpp +++ b/src/mame/drivers/kopunch.cpp @@ -229,7 +229,7 @@ void kopunch_state::machine_start() save_item(NAME(m_scrollx)); } -static MACHINE_CONFIG_START( kopunch, kopunch_state ) +static MACHINE_CONFIG_START( kopunch ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, 4000000) // 4 MHz? @@ -312,4 +312,4 @@ ROM_START( kopunch ) ROM_END -GAME( 1981, kopunch, 0, kopunch, kopunch, driver_device, 0, ROT270, "Sega", "KO Punch", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, kopunch, 0, kopunch, kopunch, kopunch_state, 0, ROT270, "Sega", "KO Punch", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/kramermc.cpp b/src/mame/drivers/kramermc.cpp index 03f0fd2d900..9197df36af2 100644 --- a/src/mame/drivers/kramermc.cpp +++ b/src/mame/drivers/kramermc.cpp @@ -109,7 +109,7 @@ static INPUT_PORTS_START( kramermc ) INPUT_PORTS_END /* Machine driver */ -static MACHINE_CONFIG_START( kramermc, kramermc_state ) +static MACHINE_CONFIG_START( kramermc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 1500000) MCFG_CPU_PROGRAM_MAP(kramermc_mem) @@ -150,5 +150,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, kramermc, 0, 0, kramermc, kramermc, kramermc_state, kramermc,"Manfred Kramer", "Kramer MC", MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, kramermc, 0, 0, kramermc, kramermc, kramermc_state, kramermc,"Manfred Kramer", "Kramer MC", MACHINE_NO_SOUND) diff --git a/src/mame/drivers/kron.cpp b/src/mame/drivers/kron.cpp index 74e7888b7d0..6af2118dba0 100644 --- a/src/mame/drivers/kron.cpp +++ b/src/mame/drivers/kron.cpp @@ -290,7 +290,7 @@ WRITE_LINE_MEMBER(kron180_state::keyb_interrupt) /* * Machine configuration */ -static MACHINE_CONFIG_START (kron180, kron180_state) +static MACHINE_CONFIG_START (kron180) /* basic machine hardware */ MCFG_CPU_ADD ("maincpu", Z180, XTAL_12_288MHz) MCFG_CPU_PROGRAM_MAP (kron180_mem) @@ -321,5 +321,5 @@ ROM_START (kron180) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP (1995, kron180, 0, 0, kron180, kron180, driver_device, 0, "Kron Ltd", "Kron K-180", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP ( 1995, kron180, 0, 0, kron180, kron180, kron180_state, 0, "Kron Ltd", "Kron K-180", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ksayakyu.cpp b/src/mame/drivers/ksayakyu.cpp index 8c4846940ec..4ec6e1a2dd1 100644 --- a/src/mame/drivers/ksayakyu.cpp +++ b/src/mame/drivers/ksayakyu.cpp @@ -10,8 +10,7 @@ TODO: - sprite glitches (sometimes) .. missing vertical flip flag? <- (*) - sound cpu int freq (timer ? $a010 writes ?) -(*) this looks a BTANB, when the player slide the relative sand drawing is made with the text tilemap and it's virtually impossible -to fix it without breaking anything else. -AS +(*) this was caused by flip Y being hooked up as bit 6 in text videoram attribute. -AS M6100097A @@ -251,7 +250,7 @@ void ksayakyu_state::machine_reset() m_flipscreen = 0; } -static MACHINE_CONFIG_START( ksayakyu, ksayakyu_state ) +static MACHINE_CONFIG_START( ksayakyu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MAIN_CLOCK/8) //divider is guessed @@ -334,4 +333,4 @@ ROM_START( ksayakyu ) ROM_LOAD( "9f.bin", 0x0000, 0x0100, CRC(ff71b27f) SHA1(6aad2bd2be997595a05ddb81d24df8fe1435910b) ) ROM_END -GAME( 1985, ksayakyu, 0, ksayakyu, ksayakyu, driver_device, 0, ORIENTATION_FLIP_Y, "Taito Corporation", "Kusayakyuu", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, ksayakyu, 0, ksayakyu, ksayakyu, ksayakyu_state, 0, ORIENTATION_FLIP_Y, "Taito Corporation", "Kusayakyuu", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp index 0edb5b2d609..4d70db2351d 100644 --- a/src/mame/drivers/ksys573.cpp +++ b/src/mame/drivers/ksys573.cpp @@ -2021,7 +2021,7 @@ static MACHINE_CONFIG_FRAGMENT( cr589_config ) MCFG_SOUND_ROUTE( 1, "^^^^rspeaker", 1.0 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( konami573, ksys573_state ) +static MACHINE_CONFIG_START( konami573 ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8530CQ, XTAL_67_7376MHz ) MCFG_CPU_PROGRAM_MAP( konami573_map ) @@ -2029,8 +2029,8 @@ static MACHINE_CONFIG_START( konami573, ksys573_state ) MCFG_RAM_MODIFY( "maincpu:ram" ) MCFG_RAM_DEFAULT_SIZE( "4M" ) - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate(&ksys573_state::cdrom_dma_read, (ksys573_state *) owner ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate(&ksys573_state::cdrom_dma_write, (ksys573_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&ksys573_state::cdrom_dma_read, (ksys573_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&ksys573_state::cdrom_dma_write, (ksys573_state *) owner ) ) MCFG_MACHINE_RESET_OVERRIDE( ksys573_state, konami573 ) @@ -2308,7 +2308,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gtrfrk5m, k573d ) MCFG_FRAGMENT_ADD( casszi ) - MCFG_FRAGMENT_ADD( pccard1_16mb ) + MCFG_FRAGMENT_ADD( pccard1_32mb ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gtrfrk7m, k573d ) @@ -4742,117 +4742,117 @@ ROM_START( strgchmp ) ROM_LOAD( "710uaa.22h", 0x000000, 0x002000, CRC(a3e93d49) SHA1(630daa1a02320433a068eb5214f6b30acc06df76) ) ROM_END -GAME( 1997, sys573, 0, konami573, konami573, driver_device, 0, ROT0, "Konami", "System 573 BIOS", MACHINE_IS_BIOS_ROOT ) - -GAME( 1997, strgchmp, sys573, konami573, hndlchmp, driver_device, 0, ROT0, "Konami", "Steering Champ (GQ710 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, hndlchmp, strgchmp, konami573, hndlchmp, driver_device, 0, ROT0, "Konami", "Handle Champ (GQ710 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, darkhleg, sys573, konami573x, konami573, driver_device, 0, ROT0, "Konami", "Dark Horse Legend (GX706 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, fbaitbc, sys573, fbaitbc, fbaitbc, driver_device, 0, ROT0, "Konami", "Fisherman's Bait - A Bass Challenge (GE765 VER. UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, bassangl, fbaitbc, fbaitbc, fbaitbc, driver_device, 0, ROT0, "Konami", "Bass Angler (GE765 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, powyakex, sys573, konami573x, konami573, driver_device, 0, ROT0, "Konami", "Jikkyou Powerful Pro Yakyuu EX (GX802 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, konam80s, sys573, konami573x, konami573, driver_device, 0, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, konam80u, konam80s, konami573x, konami573, driver_device, 0, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, konam80j, konam80s, konami573x, konami573, driver_device, 0, ROT90, "Konami", "Konami 80's Gallery (GC826 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, konam80a, konam80s, konami573x, konami573, driver_device, 0, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, konam80k, konam80s, konami573x, konami573, driver_device, 0, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, dstage, sys573, dsftkd, ddr, ksys573_state, ddr, ROT0, "Konami", "Dancing Stage - Internet Ranking Ver (GC845 VER. EBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, dstagea, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dancing Stage (GN845 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddru, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution (GN845 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, ddrj, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution - Internet Ranking Ver (GC845 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, ddrja, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution (GC845 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1998, ddrjb, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution (GC845 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1999, ddra, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution (GN845 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, fbait2bc, sys573, fbaitbc, fbaitbc, driver_device, 0, ROT0, "Konami", "Fisherman's Bait 2 - A Bass Challenge (GE865 VER. UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, bassang2, fbait2bc, fbaitbc, fbaitbc, driver_device, 0, ROT0, "Konami", "Bass Angler 2 (GE865 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, hyperbbc, sys573, hyperbbc, hyperbbc, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GQ876 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, hyperbbca, hyperbbc, hyperbbc, hyperbbc, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GQ876 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, hyperbbck, hyperbbc, hyperbbc, hyperbbc, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GE876 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, gchgchmp, sys573, gchgchmp, gchgchmp, driver_device, 0, ROT0, "Konami", "Gachaga Champ (GE877 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, drmn, sys573, drmn, drmn, ksys573_state, drmn, ROT0, "Konami", "DrumMania (GQ881 VER. JAD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1999, gtrfrks, sys573, gtrfrks, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks (GQ886 VER. EAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, gtrfrksu, gtrfrks, gtrfrks, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks (GQ886 VER. UAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, gtrfrksj, gtrfrks, gtrfrks, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks (GQ886 VER. JAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, gtrfrksa, gtrfrks, gtrfrks, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks (GQ886 VER. AAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, fbaitmc, sys573, fbaitbc, fbaitmc, driver_device, 0, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. EA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, fbaitmcu, fbaitmc, fbaitbc, fbaitmc, driver_device, 0, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. UA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, fbaitmcj, fbaitmc, fbaitbc, fbaitmc, driver_device, 0, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. JA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, fbaitmca, fbaitmc, fbaitbc, fbaitmc, driver_device, 0, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. AA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2m, sys573, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix (GN895 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2ml, ddr2m, ddr2ml, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2mla, ddr2m, ddr2ml, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddrbocd, ddr2m, ddr2ml, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution Best of Cool Dancers (GE892 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2mc, ddr2m, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX CLUB VERSiON (GE896 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, ddr2mc2, ddr2m, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX substream CLUB VERSiON 2 (GE984 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, gtrfrk2m, sys573, gtrfrk2m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 2nd Mix Ver 1.01 (GQ883 VER. JAD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, dsftkd, sys573, dsftkd, ddr, ksys573_state, ddr, ROT0, "Konami", "Dancing Stage featuring TRUE KiSS DESTiNATiON (G*884 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, cr589fw, sys573, konami573, konami573, driver_device, 0, ROT0, "Konami", "CD-ROM Drive Updater 2.0 (700B04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, cr589fwa, sys573, konami573, konami573, driver_device, 0, ROT0, "Konami", "CD-ROM Drive Updater (700A04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, ddr3mk, sys573, ddr3m, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ -GAME( 2000, ddr3mka, ddr3mk, ddr3m, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ -GAME( 1999, ddr3ma, ddr3mk, ddr3m, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.1 */ -GAME( 1999, ddr3mj, ddr3mk, ddr3m, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.0 */ -GAME( 1999, ddrsbm, sys573, ddrsolo, ddrsolo, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution Solo Bass Mix (GQ894 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1999, ddrs2k, sys573, ddrs2k, ddrsolo, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ -GAME( 1999, ddrs2kj, ddrs2k, ddrs2k, ddrsolo, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.2 */ -GAME( 1999, hypbbc2p, sys573, hypbbc2p, hypbbc2p, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, hypbbc2pk, hypbbc2p, hypbbc2p, hypbbc2p, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, dsfdct, sys573, ddr3m, ddr, driver_device, 0, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JCA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1999, dsfdcta, dsfdct, dsfdcta, ddr, ksys573_state, ddr, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, drmn2m, sys573, drmn2m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 2nd Mix (GE912 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.5 */ -GAME( 1999, drmn2mpu, drmn2m, drmn2m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 2nd Mix Session Power Up Kit (GE912 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.5 */ -GAME( 1999, stepchmp, sys573, salarymc, hyperbbc, ksys573_state, salarymc, ROT0, "Konami", "Step Champ (GQ930 VER. JA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) -GAME( 2000, dncfrks, sys573, dmx, dmx, driver_device, 0, ROT0, "Konami", "Dance Freaks (G*874 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ -GAME( 2000, dmx, dncfrks, dmx, dmx, driver_device, 0, ROT0, "Konami", "Dance Maniax (G*874 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ -GAME( 2000, gunmania, sys573, gunmania, gunmania, driver_device, 0, ROT0, "Konami", "GunMania (GL906 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 2000, fghtmn, sys573, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ -GAME( 2000, fghtmna, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ -GAME( 2000, pnchmn, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Punch Mania: Hokuto No Ken (GQ918 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ -GAME( 2000, pnchmna, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Punch Mania: Hokuto No Ken (GQ918 VER. JAB ALT CD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ -GAME( 2000, fghtmnk, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ -GAME( 2000, fghtmnu, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ -GAME( 2000, dsem, sys573, dsem, ddr, driver_device, 0, ROT0, "Konami", "Dancing Stage Euro Mix (G*936 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.7 */ -GAME( 2000, gtrfrk3m, sys573, gtrfrk3m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.4 */ -GAME( 2000, gtfrk3ma, gtrfrk3m, gtrfrk3m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.4 */ -GAME( 2000, gtfrk3mb, gtrfrk3m, gtrfrk5m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 3rd Mix - security cassette versionup (949JAZ02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.4 */ -GAME( 2000, pnchmn2, sys573, pnchmn2, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Punch Mania 2: Hokuto No Ken (GQA09 JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ -GAME( 2000, salarymc, sys573, salarymc, hypbbc2p, ksys573_state, salarymc, ROT0, "Konami", "Salary Man Champ (GCA18 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, ddr3mp, sys573, ddr3mp, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ -GAME( 2000, pcnfrk3m, sys573, drmn2m, drmn, driver_device, 0, ROT0, "Konami", "Percussion Freaks 3rd Mix (G*A23 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, drmn3m, pcnfrk3m, drmn2m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 3rd Mix (G*A23 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, gtrfrk4m, sys573, gtrfrk3m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 4th Mix (G*A24 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4m, sys573, ddr3mp, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4mj, ddr4m, ddr3mp, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4ms, sys573, ddr4ms, ddrsolo, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. ABA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4msj, ddr4ms, ddr4ms, ddrsolo, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, dsfdr, sys573, dsfdr, ddr, driver_device, 0, ROT0, "Konami", "Dancing Stage Featuring Disney's Rave (GCA37JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddrusa, sys573, ddrusa, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution USA (G*A44 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4mp, sys573, ddr3mp, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2000, ddr4mps, sys573, ddr4ms, ddrsolo, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2000, dmx2m, sys573, dmx, dmx, driver_device, 0, ROT0, "Konami", "Dance Maniax 2nd Mix (G*A39 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2000, drmn4m, sys573, drmn4m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 4th Mix (G*A25 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2001, gtrfrk5m, sys573, gtrfrk5m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 5th Mix (G*A26 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, ddr5m, sys573, ddr5m, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution 5th Mix (G*A27 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, dmx2majp, sys573, dmx, dmx, driver_device, 0, ROT0, "Konami", "Dance Maniax 2nd Mix Append J-Paradise (G*A38 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, mamboagg, sys573, mamboagg, mamboagg, driver_device, 0, ROT0, "Konami", "Mambo A Go-Go (GQA40 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2001, mamboagga, mamboagg, mamboagga, mamboagg, driver_device, 0, ROT0, "Konami", "Mambo A Go-Go e-Amusement (GQA40 VER. JRB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2001, drmn5m, sys573, drmn4m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 5th Mix (G*B05 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, gtrfrk6m, sys573, gtrfrk5m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 6th Mix (G*B06 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, drmn6m, sys573, drmn4m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 6th Mix (G*B16 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2001, gtrfrk7m, sys573, gtrfrk7m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 7th Mix (G*B17 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2001, ddrmax, sys573, ddr5m, ddr, driver_device, 0, ROT0, "Konami", "DDR Max - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2002, ddrmax2, sys573, ddr5m, ddr, driver_device, 0, ROT0, "Konami", "DDR Max 2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, mrtlbeat, sys573, ddr5m, ddr, driver_device, 0, ROT0, "Konami", "Martial Beat (G*B47 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2002, drmn7m, sys573, drmn4m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 7th Mix power-up ver. (G*C07 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, drmn7ma, drmn7m, drmn4m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 7th Mix (G*C07 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, gtrfrk8m, sys573, gtrfrk7m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 8th Mix power-up ver. (G*C08 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, gtrfrk8ma, gtrfrk8m, gtrfrk7m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 8th Mix (G*C08 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, dsem2, sys573, ddr5m, ddr, driver_device, 0, ROT0, "Konami", "Dancing Stage Euro Mix 2 (G*C23 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, ddrextrm, sys573, ddr5m, ddr, driver_device, 0, ROT0, "Konami", "Dance Dance Revolution Extreme (G*C36 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2003, drmn8m, sys573, drmn4m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 8th Mix (G*C07 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2003, gtrfrk9m, sys573, gtrfrk7m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 9th Mix (G*C39 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2003, drmn9m, sys573, drmn4m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 9th Mix (G*D09 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2003, gtfrk10m, sys573, gtrfrk7m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 10th Mix (G*D10 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2003, gtfrk10ma, gtfrk10m, gtrfrk7m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 10th Mix (G*D10 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2003, gtfrk10mb, gtfrk10m, gtfrk10mb, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 10th Mix eAmusement (G*D10 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2004, gtfrk11m, sys573, gtrfrk7m, gtrfrks, driver_device, 0, ROT0, "Konami", "Guitar Freaks 11th Mix (G*D39 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2004, drmn10m, sys573, drmn4m, drmn, driver_device, 0, ROT0, "Konami", "DrumMania 10th Mix (G*D40 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 1997, sys573, 0, konami573, konami573, ksys573_state, 0, ROT0, "Konami", "System 573 BIOS", MACHINE_IS_BIOS_ROOT ) + +GAME( 1997, strgchmp, sys573, konami573, hndlchmp, ksys573_state, 0, ROT0, "Konami", "Steering Champ (GQ710 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, hndlchmp, strgchmp, konami573, hndlchmp, ksys573_state, 0, ROT0, "Konami", "Handle Champ (GQ710 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, darkhleg, sys573, konami573x, konami573, ksys573_state, 0, ROT0, "Konami", "Dark Horse Legend (GX706 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, fbaitbc, sys573, fbaitbc, fbaitbc, ksys573_state, 0, ROT0, "Konami", "Fisherman's Bait - A Bass Challenge (GE765 VER. UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, bassangl, fbaitbc, fbaitbc, fbaitbc, ksys573_state, 0, ROT0, "Konami", "Bass Angler (GE765 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, powyakex, sys573, konami573x, konami573, ksys573_state, 0, ROT0, "Konami", "Jikkyou Powerful Pro Yakyuu EX (GX802 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, konam80s, sys573, konami573x, konami573, ksys573_state, 0, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, konam80u, konam80s, konami573x, konami573, ksys573_state, 0, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, konam80j, konam80s, konami573x, konami573, ksys573_state, 0, ROT90, "Konami", "Konami 80's Gallery (GC826 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, konam80a, konam80s, konami573x, konami573, ksys573_state, 0, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, konam80k, konam80s, konami573x, konami573, ksys573_state, 0, ROT90, "Konami", "Konami 80's AC Special (GC826 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, dstage, sys573, dsftkd, ddr, ksys573_state, ddr, ROT0, "Konami", "Dancing Stage - Internet Ranking Ver (GC845 VER. EBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, dstagea, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dancing Stage (GN845 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddru, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution (GN845 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, ddrj, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution - Internet Ranking Ver (GC845 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, ddrja, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution (GC845 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1998, ddrjb, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution (GC845 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, ddra, dstage, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution (GN845 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, fbait2bc, sys573, fbaitbc, fbaitbc, ksys573_state, 0, ROT0, "Konami", "Fisherman's Bait 2 - A Bass Challenge (GE865 VER. UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, bassang2, fbait2bc, fbaitbc, fbaitbc, ksys573_state, 0, ROT0, "Konami", "Bass Angler 2 (GE865 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, hyperbbc, sys573, hyperbbc, hyperbbc, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GQ876 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, hyperbbca, hyperbbc, hyperbbc, hyperbbc, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GQ876 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, hyperbbck, hyperbbc, hyperbbc, hyperbbc, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GE876 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, gchgchmp, sys573, gchgchmp, gchgchmp, ksys573_state, 0, ROT0, "Konami", "Gachaga Champ (GE877 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, drmn, sys573, drmn, drmn, ksys573_state, drmn, ROT0, "Konami", "DrumMania (GQ881 VER. JAD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, gtrfrks, sys573, gtrfrks, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks (GQ886 VER. EAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, gtrfrksu, gtrfrks, gtrfrks, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks (GQ886 VER. UAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, gtrfrksj, gtrfrks, gtrfrks, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks (GQ886 VER. JAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, gtrfrksa, gtrfrks, gtrfrks, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks (GQ886 VER. AAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, fbaitmc, sys573, fbaitbc, fbaitmc, ksys573_state, 0, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. EA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, fbaitmcu, fbaitmc, fbaitbc, fbaitmc, ksys573_state, 0, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. UA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, fbaitmcj, fbaitmc, fbaitbc, fbaitmc, ksys573_state, 0, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. JA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, fbaitmca, fbaitmc, fbaitbc, fbaitmc, ksys573_state, 0, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. AA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2m, sys573, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix (GN895 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2ml, ddr2m, ddr2ml, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2mla, ddr2m, ddr2ml, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddrbocd, ddr2m, ddr2ml, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution Best of Cool Dancers (GE892 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2mc, ddr2m, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX CLUB VERSiON (GE896 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, ddr2mc2, ddr2m, ddr, ddr, ksys573_state, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX substream CLUB VERSiON 2 (GE984 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, gtrfrk2m, sys573, gtrfrk2m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 2nd Mix Ver 1.01 (GQ883 VER. JAD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, dsftkd, sys573, dsftkd, ddr, ksys573_state, ddr, ROT0, "Konami", "Dancing Stage featuring TRUE KiSS DESTiNATiON (G*884 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, cr589fw, sys573, konami573, konami573, ksys573_state, 0, ROT0, "Konami", "CD-ROM Drive Updater 2.0 (700B04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, cr589fwa, sys573, konami573, konami573, ksys573_state, 0, ROT0, "Konami", "CD-ROM Drive Updater (700A04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, ddr3mk, sys573, ddr3m, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ +GAME( 2000, ddr3mka, ddr3mk, ddr3m, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ +GAME( 1999, ddr3ma, ddr3mk, ddr3m, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.1 */ +GAME( 1999, ddr3mj, ddr3mk, ddr3m, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.0 */ +GAME( 1999, ddrsbm, sys573, ddrsolo, ddrsolo, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution Solo Bass Mix (GQ894 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, ddrs2k, sys573, ddrs2k, ddrsolo, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.3 */ +GAME( 1999, ddrs2kj, ddrs2k, ddrs2k, ddrsolo, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.2 */ +GAME( 1999, hypbbc2p, sys573, hypbbc2p, hypbbc2p, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, hypbbc2pk, hypbbc2p, hypbbc2p, hypbbc2p, ksys573_state, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, dsfdct, sys573, ddr3m, ddr, ksys573_state, 0, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JCA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, dsfdcta, dsfdct, dsfdcta, ddr, ksys573_state, ddr, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, drmn2m, sys573, drmn2m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 2nd Mix (GE912 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.5 */ +GAME( 1999, drmn2mpu, drmn2m, drmn2m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 2nd Mix Session Power Up Kit (GE912 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.5 */ +GAME( 1999, stepchmp, sys573, salarymc, hyperbbc, ksys573_state, salarymc, ROT0, "Konami", "Step Champ (GQ930 VER. JA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 2000, dncfrks, sys573, dmx, dmx, ksys573_state, 0, ROT0, "Konami", "Dance Freaks (G*874 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ +GAME( 2000, dmx, dncfrks, dmx, dmx, ksys573_state, 0, ROT0, "Konami", "Dance Maniax (G*874 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ +GAME( 2000, gunmania, sys573, gunmania, gunmania, ksys573_state, 0, ROT0, "Konami", "GunMania (GL906 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 2000, fghtmn, sys573, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ +GAME( 2000, fghtmna, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ +GAME( 2000, pnchmn, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Punch Mania: Hokuto No Ken (GQ918 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ +GAME( 2000, pnchmna, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Punch Mania: Hokuto No Ken (GQ918 VER. JAB ALT CD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ +GAME( 2000, fghtmnk, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ +GAME( 2000, fghtmnu, fghtmn, pnchmn, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Fighting Mania (QG918 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ +GAME( 2000, dsem, sys573, dsem, ddr, ksys573_state, 0, ROT0, "Konami", "Dancing Stage Euro Mix (G*936 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.7 */ +GAME( 2000, gtrfrk3m, sys573, gtrfrk3m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.4 */ +GAME( 2000, gtfrk3ma, gtrfrk3m, gtrfrk3m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.4 */ +GAME( 2000, gtfrk3mb, gtrfrk3m, gtrfrk5m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 3rd Mix - security cassette versionup (949JAZ02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.4 */ +GAME( 2000, pnchmn2, sys573, pnchmn2, pnchmn, ksys573_state, pnchmn, ROT0, "Konami", "Punch Mania 2: Hokuto No Ken (GQA09 JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* motor/artwork/network */ +GAME( 2000, salarymc, sys573, salarymc, hypbbc2p, ksys573_state, salarymc, ROT0, "Konami", "Salary Man Champ (GCA18 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, ddr3mp, sys573, ddr3mp, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.6 */ +GAME( 2000, pcnfrk3m, sys573, drmn2m, drmn, ksys573_state, 0, ROT0, "Konami", "Percussion Freaks 3rd Mix (G*A23 VER. KAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, drmn3m, pcnfrk3m, drmn2m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 3rd Mix (G*A23 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, gtrfrk4m, sys573, gtrfrk3m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 4th Mix (G*A24 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4m, sys573, ddr3mp, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4mj, ddr4m, ddr3mp, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4ms, sys573, ddr4ms, ddrsolo, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. ABA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4msj, ddr4ms, ddr4ms, ddrsolo, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, dsfdr, sys573, dsfdr, ddr, ksys573_state, 0, ROT0, "Konami", "Dancing Stage Featuring Disney's Rave (GCA37JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddrusa, sys573, ddrusa, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution USA (G*A44 VER. UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4mp, sys573, ddr3mp, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2000, ddr4mps, sys573, ddr4ms, ddrsolo, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2000, dmx2m, sys573, dmx, dmx, ksys573_state, 0, ROT0, "Konami", "Dance Maniax 2nd Mix (G*A39 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2000, drmn4m, sys573, drmn4m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 4th Mix (G*A25 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2001, gtrfrk5m, sys573, gtrfrk5m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 5th Mix (G*A26 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, ddr5m, sys573, ddr5m, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution 5th Mix (G*A27 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, dmx2majp, sys573, dmx, dmx, ksys573_state, 0, ROT0, "Konami", "Dance Maniax 2nd Mix Append J-Paradise (G*A38 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, mamboagg, sys573, mamboagg, mamboagg, ksys573_state, 0, ROT0, "Konami", "Mambo A Go-Go (GQA40 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2001, mamboagga, mamboagg, mamboagga, mamboagg, ksys573_state, 0, ROT0, "Konami", "Mambo A Go-Go e-Amusement (GQA40 VER. JRB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2001, drmn5m, sys573, drmn4m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 5th Mix (G*B05 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, gtrfrk6m, sys573, gtrfrk5m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 6th Mix (G*B06 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, drmn6m, sys573, drmn4m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 6th Mix (G*B16 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2001, gtrfrk7m, sys573, gtrfrk7m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 7th Mix (G*B17 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2001, ddrmax, sys573, ddr5m, ddr, ksys573_state, 0, ROT0, "Konami", "DDR Max - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2002, ddrmax2, sys573, ddr5m, ddr, ksys573_state, 0, ROT0, "Konami", "DDR Max 2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, mrtlbeat, sys573, ddr5m, ddr, ksys573_state, 0, ROT0, "Konami", "Martial Beat (G*B47 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2002, drmn7m, sys573, drmn4m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 7th Mix power-up ver. (G*C07 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, drmn7ma, drmn7m, drmn4m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 7th Mix (G*C07 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, gtrfrk8m, sys573, gtrfrk7m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 8th Mix power-up ver. (G*C08 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, gtrfrk8ma, gtrfrk8m, gtrfrk7m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 8th Mix (G*C08 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, dsem2, sys573, ddr5m, ddr, ksys573_state, 0, ROT0, "Konami", "Dancing Stage Euro Mix 2 (G*C23 VER. EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, ddrextrm, sys573, ddr5m, ddr, ksys573_state, 0, ROT0, "Konami", "Dance Dance Revolution Extreme (G*C36 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2003, drmn8m, sys573, drmn4m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 8th Mix (G*C07 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2003, gtrfrk9m, sys573, gtrfrk7m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 9th Mix (G*C39 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2003, drmn9m, sys573, drmn4m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 9th Mix (G*D09 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2003, gtfrk10m, sys573, gtrfrk7m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 10th Mix (G*D10 VER. JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2003, gtfrk10ma, gtfrk10m, gtrfrk7m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 10th Mix (G*D10 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2003, gtfrk10mb, gtfrk10m, gtfrk10mb, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 10th Mix eAmusement (G*D10 VER. JBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2004, gtfrk11m, sys573, gtrfrk7m, gtrfrks, ksys573_state, 0, ROT0, "Konami", "Guitar Freaks 11th Mix (G*D39 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2004, drmn10m, sys573, drmn4m, drmn, ksys573_state, 0, ROT0, "Konami", "DrumMania 10th Mix (G*D40 VER. JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* BOOT VER 1.95 */ diff --git a/src/mame/drivers/kungfur.cpp b/src/mame/drivers/kungfur.cpp index 60e8417ef1d..a2ac5aaddca 100644 --- a/src/mame/drivers/kungfur.cpp +++ b/src/mame/drivers/kungfur.cpp @@ -284,7 +284,7 @@ void kungfur_state::machine_reset() m_control = 0; } -static MACHINE_CONFIG_START( kungfur, kungfur_state ) +static MACHINE_CONFIG_START( kungfur ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 8000000/2) // 4MHz? @@ -310,12 +310,12 @@ static MACHINE_CONFIG_START( kungfur, kungfur_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("adpcm1", MSM5205, XTAL_384kHz) // clock verified with recording MCFG_MSM5205_VCLK_CB(WRITELINE(kungfur_state, kfr_adpcm1_int)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ADD("adpcm2", MSM5205, XTAL_384kHz) // " MCFG_MSM5205_VCLK_CB(WRITELINE(kungfur_state, kfr_adpcm2_int)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -340,4 +340,4 @@ ROM_START( kungfur ) ROM_LOAD( "kr6.bin", 0x20000, 0x10000, CRC(9ea75d4a) SHA1(57445ccb961acb11a25cdac81f2e543d92bcb7f9) ) ROM_END -GAMEL(1987, kungfur, 0, kungfur, kungfur, driver_device, 0, ROT0, "Namco", "Kung-Fu Roushi", MACHINE_SUPPORTS_SAVE, layout_kungfur ) +GAMEL(1987, kungfur, 0, kungfur, kungfur, kungfur_state, 0, ROT0, "Namco", "Kung-Fu Roushi", MACHINE_SUPPORTS_SAVE, layout_kungfur ) diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp index 5a2fc951ae3..e24626db159 100644 --- a/src/mame/drivers/kurukuru.cpp +++ b/src/mame/drivers/kurukuru.cpp @@ -848,7 +848,7 @@ void kurukuru_state::machine_reset() * Machine Driver * *************************************************/ -static MACHINE_CONFIG_START( kurukuru, kurukuru_state ) +static MACHINE_CONFIG_START( kurukuru ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, CPU_CLOCK) @@ -881,12 +881,12 @@ static MACHINE_CONFIG_START( kurukuru, kurukuru_state ) MCFG_SOUND_ADD("adpcm", MSM5205, M5205_CLOCK) MCFG_MSM5205_VCLK_CB(WRITELINE(kurukuru_state, kurukuru_msm5205_vck)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* changed on the fly */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* changed on the fly */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ppj, kurukuru_state ) +static MACHINE_CONFIG_START( ppj ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, CPU_CLOCK) @@ -919,7 +919,7 @@ static MACHINE_CONFIG_START( ppj, kurukuru_state ) MCFG_SOUND_ADD("adpcm", MSM5205, M5205_CLOCK) MCFG_MSM5205_VCLK_CB(WRITELINE(kurukuru_state, kurukuru_msm5205_vck)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) // changed on the fly + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // changed on the fly MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -982,9 +982,9 @@ ROM_END * Game Drivers * ***************************************************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1990, kurukuru, 0, kurukuru, kurukuru, driver_device, 0, ROT0, "Success / Taiyo Jidoki", "Kuru Kuru Pyon Pyon (Japan)", 0 ) -GAME( 199?, ppj, 0, ppj, ppj, driver_device, 0, ROT0, "Success / Taiyo Jidoki", "Pyon Pyon Jump (V1.40, Japan)", 0 ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1990, kurukuru, 0, kurukuru, kurukuru, kurukuru_state, 0, ROT0, "Success / Taiyo Jidoki", "Kuru Kuru Pyon Pyon (Japan)", 0 ) +GAME( 199?, ppj, 0, ppj, ppj, kurukuru_state, 0, ROT0, "Success / Taiyo Jidoki", "Pyon Pyon Jump (V1.40, Japan)", 0 ) // unemulated.... diff --git a/src/mame/drivers/kyocera.cpp b/src/mame/drivers/kyocera.cpp index 22bfe9e15d7..8614d1bc70e 100644 --- a/src/mame/drivers/kyocera.cpp +++ b/src/mame/drivers/kyocera.cpp @@ -1339,7 +1339,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(tandy200_state::tandy200_tp_tick) m_tp = !m_tp; } -static MACHINE_CONFIG_START( kc85, kc85_state ) +static MACHINE_CONFIG_START( kc85 ) /* basic machine hardware */ MCFG_CPU_ADD(I8085_TAG, I8085A, XTAL_4_9152MHz) MCFG_CPU_PROGRAM_MAP(kc85_mem) @@ -1389,7 +1389,7 @@ static MACHINE_CONFIG_START( kc85, kc85_state ) MCFG_RAM_EXTRA_OPTIONS("32K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pc8201, pc8201_state ) +static MACHINE_CONFIG_START( pc8201 ) /* basic machine hardware */ MCFG_CPU_ADD(I8085_TAG, I8085A, XTAL_4_9152MHz) MCFG_CPU_PROGRAM_MAP(pc8201_mem) @@ -1449,7 +1449,7 @@ static MACHINE_CONFIG_DERIVED( pc8300, pc8201 ) MCFG_RAM_EXTRA_OPTIONS("64K,96K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( trsm100, trsm100_state ) +static MACHINE_CONFIG_START( trsm100 ) /* basic machine hardware */ MCFG_CPU_ADD(I8085_TAG, I8085A, XTAL_4_9152MHz) MCFG_CPU_PROGRAM_MAP(kc85_mem) @@ -1504,7 +1504,7 @@ static MACHINE_CONFIG_DERIVED( tandy102, trsm100 ) MCFG_RAM_EXTRA_OPTIONS("32K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tandy200, tandy200_state ) +static MACHINE_CONFIG_START( tandy200 ) /* basic machine hardware */ MCFG_CPU_ADD(I8085_TAG, I8085A, XTAL_4_9152MHz) MCFG_CPU_PROGRAM_MAP(tandy200_mem) @@ -1621,13 +1621,13 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1983, kc85, 0, 0, kc85, kc85, driver_device, 0, "Kyosei", "Kyotronic 85 (Japan)", 0 ) -COMP( 1983, m10, kc85, 0, kc85, olivm10, driver_device, 0, "Olivetti", "M-10", 0 ) -//COMP( 1983, m10m, kc85, 0, kc85, olivm10, driver_device, 0, "Olivetti", "M-10 Modem (US)", 0 ) -COMP( 1983, trsm100, 0, 0, trsm100, kc85, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model 100", 0 ) -COMP( 1986, tandy102, trsm100,0, tandy102, kc85, driver_device, 0, "Tandy Radio Shack", "Tandy 102", 0 ) -COMP( 1983, pc8201, 0, 0, pc8201, pc8201, driver_device, 0, "NEC", "PC-8201 (Japan)", MACHINE_NOT_WORKING ) // keyboard layout wrong -COMP( 1983, pc8201a, pc8201, 0, pc8201, pc8201a, driver_device, 0, "NEC", "PC-8201A", 0 ) -COMP( 1987, npc8300, pc8201, 0, pc8300, pc8201a, driver_device, 0, "NEC", "PC-8300", MACHINE_NOT_WORKING ) -COMP( 1984, tandy200, 0, 0, tandy200, kc85, driver_device, 0, "Tandy Radio Shack", "Tandy 200", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1983, kc85, 0, 0, kc85, kc85, kc85_state, 0, "Kyosei", "Kyotronic 85 (Japan)", 0 ) +COMP( 1983, m10, kc85, 0, kc85, olivm10, kc85_state, 0, "Olivetti", "M-10", 0 ) +//COMP( 1983, m10m, kc85, 0, kc85, olivm10, kc85_state, 0, "Olivetti", "M-10 Modem (US)", 0 ) +COMP( 1983, trsm100, 0, 0, trsm100, kc85, trsm100_state, 0, "Tandy Radio Shack", "TRS-80 Model 100", 0 ) +COMP( 1986, tandy102, trsm100,0, tandy102, kc85, trsm100_state, 0, "Tandy Radio Shack", "Tandy 102", 0 ) +COMP( 1983, pc8201, 0, 0, pc8201, pc8201, pc8201_state, 0, "NEC", "PC-8201 (Japan)", MACHINE_NOT_WORKING ) // keyboard layout wrong +COMP( 1983, pc8201a, pc8201, 0, pc8201, pc8201a, pc8201_state, 0, "NEC", "PC-8201A", 0 ) +COMP( 1987, npc8300, pc8201, 0, pc8300, pc8201a, pc8201_state, 0, "NEC", "PC-8300", MACHINE_NOT_WORKING ) +COMP( 1984, tandy200, 0, 0, tandy200, kc85, tandy200_state, 0, "Tandy Radio Shack", "Tandy 200", 0 ) diff --git a/src/mame/drivers/kyugo.cpp b/src/mame/drivers/kyugo.cpp index 861a6d96cd0..51a605bfa17 100644 --- a/src/mame/drivers/kyugo.cpp +++ b/src/mame/drivers/kyugo.cpp @@ -518,7 +518,7 @@ INTERRUPT_GEN_MEMBER(kyugo_state::vblank_irq) } -static MACHINE_CONFIG_START( kyugo_base, kyugo_state ) +static MACHINE_CONFIG_START( kyugo_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* verified on pcb */ @@ -1414,23 +1414,23 @@ DRIVER_INIT_MEMBER(kyugo_state,srdmissn) * *************************************/ -GAME( 1984, gyrodine, 0, gyrodine, gyrodine, driver_device, 0, ROT90, "Crux", "Gyrodine", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, gyrodinet, gyrodine, gyrodine, gyrodine, driver_device, 0, ROT90, "Crux (Taito Corporation license)", "Gyrodine (Taito Corporation license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, buzzard, gyrodine, gyrodine, gyrodine, driver_device, 0, ROT90, "Crux", "Buzzard", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, repulse, 0, repulse, repulse, driver_device, 0, ROT90, "Crux / Sega", "Repulse", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, 99lstwar, repulse, repulse, repulse, driver_device, 0, ROT90, "Crux / Proma", "'99: The Last War (set 1)", MACHINE_SUPPORTS_SAVE ) // Crux went bankrupt during Repulse development, -GAME( 1985, 99lstwara, repulse, repulse, repulse, driver_device, 0, ROT90, "Crux / Proma", "'99: The Last War (set 2)", MACHINE_SUPPORTS_SAVE ) // some of their staff later worked on the newer games on this hardware, -GAME( 1985, 99lstwark, repulse, repulse, repulse, driver_device, 0, ROT90, "Crux / Kyugo", "'99: The Last War (Kyugo)", MACHINE_SUPPORTS_SAVE ) // directly for Kyugo? (Flashgal, Legend, SRD Mission, Airwolf, Planet Probe) -GAME( 1985, sonofphx, repulse, repulse, repulse, driver_device, 0, ROT90, "bootleg (Associated Overseas MFR, Inc.)", "Son of Phoenix (bootleg of Repulse)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, flashgal, 0, repulse, flashgal, driver_device, 0, ROT0, "Kyugo / Sega", "Flashgal (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, flashgalk, flashgal, repulse, flashgal, driver_device, 0, ROT0, "Kyugo / Sega", "Flashgal (set 1, Kyugo logo)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, flashgala, flashgal, flashgala, flashgal, driver_device, 0, ROT0, "Kyugo / Sega", "Flashgal (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, srdmissn, 0, srdmissn, srdmissn, kyugo_state, srdmissn, ROT90, "Kyugo / Taito Corporation", "S.R.D. Mission", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, fx, srdmissn, srdmissn, srdmissn, kyugo_state, srdmissn, ROT90, "bootleg", "F-X (bootleg of S.R.D. Mission)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, legend, 0, legend, legend, kyugo_state, srdmissn, ROT0, "Kyugo / Sega", "Legend", MACHINE_SUPPORTS_SAVE ) // no copyright (maybe also a bootleg?) -GAME( 1986, legendb, legend, legend, legend, kyugo_state, srdmissn, ROT0, "bootleg", "Legion (bootleg of Legend)", MACHINE_SUPPORTS_SAVE ) // no copyright -GAME( 1987, airwolf, 0, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo", "Airwolf", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, airwolfa, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo (United Amusements license)", "Airwolf (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, skywolf, airwolf, srdmissn, skywolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, skywolf2, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, skywolf3, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, gyrodine, 0, gyrodine, gyrodine, kyugo_state, 0, ROT90, "Crux", "Gyrodine", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, gyrodinet, gyrodine, gyrodine, gyrodine, kyugo_state, 0, ROT90, "Crux (Taito Corporation license)", "Gyrodine (Taito Corporation license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, buzzard, gyrodine, gyrodine, gyrodine, kyugo_state, 0, ROT90, "Crux", "Buzzard", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, repulse, 0, repulse, repulse, kyugo_state, 0, ROT90, "Crux / Sega", "Repulse", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, 99lstwar, repulse, repulse, repulse, kyugo_state, 0, ROT90, "Crux / Proma", "'99: The Last War (set 1)", MACHINE_SUPPORTS_SAVE ) // Crux went bankrupt during Repulse development, +GAME( 1985, 99lstwara, repulse, repulse, repulse, kyugo_state, 0, ROT90, "Crux / Proma", "'99: The Last War (set 2)", MACHINE_SUPPORTS_SAVE ) // some of their staff later worked on the newer games on this hardware, +GAME( 1985, 99lstwark, repulse, repulse, repulse, kyugo_state, 0, ROT90, "Crux / Kyugo", "'99: The Last War (Kyugo)", MACHINE_SUPPORTS_SAVE ) // directly for Kyugo? (Flashgal, Legend, SRD Mission, Airwolf, Planet Probe) +GAME( 1985, sonofphx, repulse, repulse, repulse, kyugo_state, 0, ROT90, "bootleg (Associated Overseas MFR, Inc.)", "Son of Phoenix (bootleg of Repulse)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, flashgal, 0, repulse, flashgal, kyugo_state, 0, ROT0, "Kyugo / Sega", "Flashgal (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, flashgalk, flashgal, repulse, flashgal, kyugo_state, 0, ROT0, "Kyugo / Sega", "Flashgal (set 1, Kyugo logo)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, flashgala, flashgal, flashgala, flashgal, kyugo_state, 0, ROT0, "Kyugo / Sega", "Flashgal (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, srdmissn, 0, srdmissn, srdmissn, kyugo_state, srdmissn, ROT90, "Kyugo / Taito Corporation", "S.R.D. Mission", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, fx, srdmissn, srdmissn, srdmissn, kyugo_state, srdmissn, ROT90, "bootleg", "F-X (bootleg of S.R.D. Mission)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, legend, 0, legend, legend, kyugo_state, srdmissn, ROT0, "Kyugo / Sega", "Legend", MACHINE_SUPPORTS_SAVE ) // no copyright (maybe also a bootleg?) +GAME( 1986, legendb, legend, legend, legend, kyugo_state, srdmissn, ROT0, "bootleg", "Legion (bootleg of Legend)", MACHINE_SUPPORTS_SAVE ) // no copyright +GAME( 1987, airwolf, 0, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo", "Airwolf", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, airwolfa, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo (United Amusements license)", "Airwolf (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, skywolf, airwolf, srdmissn, skywolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, skywolf2, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, skywolf3, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/labyrunr.cpp b/src/mame/drivers/labyrunr.cpp index 636cd9aa1e3..a00f76b25ae 100644 --- a/src/mame/drivers/labyrunr.cpp +++ b/src/mame/drivers/labyrunr.cpp @@ -165,7 +165,7 @@ void labyrunr_state::machine_start() membank("bank1")->configure_entries(0, 6, &ROM[0x10000], 0x4000); } -static MACHINE_CONFIG_START( labyrunr, labyrunr_state ) +static MACHINE_CONFIG_START( labyrunr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, 3000000*4) /* 24MHz/8? */ @@ -269,6 +269,6 @@ ROM_START( labyrunrk ) ROM_END -GAME( 1987, tricktrp, 0, labyrunr, labyrunr, driver_device, 0, ROT90, "Konami", "Trick Trap (World?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, labyrunr, tricktrp, labyrunr, labyrunr, driver_device, 0, ROT90, "Konami", "Labyrinth Runner (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, labyrunrk,tricktrp, labyrunr, labyrunr, driver_device, 0, ROT90, "Konami", "Labyrinth Runner (World Ver. K)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, tricktrp, 0, labyrunr, labyrunr, labyrunr_state, 0, ROT90, "Konami", "Trick Trap (World?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, labyrunr, tricktrp, labyrunr, labyrunr, labyrunr_state, 0, ROT90, "Konami", "Labyrinth Runner (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, labyrunrk,tricktrp, labyrunr, labyrunr, labyrunr_state, 0, ROT90, "Konami", "Labyrinth Runner (World Ver. K)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ladybug.cpp b/src/mame/drivers/ladybug.cpp index 21cdf5af40e..e733d789d38 100644 --- a/src/mame/drivers/ladybug.cpp +++ b/src/mame/drivers/ladybug.cpp @@ -513,7 +513,7 @@ MACHINE_START_MEMBER(ladybug_state,ladybug) { } -static MACHINE_CONFIG_START( ladybug, ladybug_state ) +static MACHINE_CONFIG_START( ladybug ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz */ @@ -736,10 +736,10 @@ DRIVER_INIT_MEMBER(ladybug_state,dorodon) } -GAME( 1981, cavenger, 0, ladybug, cavenger, driver_device, 0, ROT0, "Universal", "Cosmic Avenger", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ladybug, 0, ladybug, ladybug, driver_device, 0, ROT270, "Universal", "Lady Bug", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ladybugb, ladybug, ladybug, ladybug, driver_device, 0, ROT270, "bootleg", "Lady Bug (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ladybugb2, ladybug, ladybug, ladybug, driver_device, 0, ROT270, "bootleg (Model Racing)", "Coccinelle (bootleg of Lady Bug, set 2)", MACHINE_SUPPORTS_SAVE ) // title removed, but manual names it Coccinelle -GAME( 1982, dorodon, 0, dorodon, dorodon, ladybug_state, dorodon, ROT270, "UPL (Falcon license?)", "Dorodon (set 1)", MACHINE_SUPPORTS_SAVE ) // license or bootleg? -GAME( 1982, dorodon2, dorodon, dorodon, dorodon, ladybug_state, dorodon, ROT270, "UPL (Falcon license?)", "Dorodon (set 2)", MACHINE_SUPPORTS_SAVE ) // " -GAME( 1982, snapjack, 0, ladybug, snapjack, driver_device, 0, ROT0, "Universal", "Snap Jack", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, cavenger, 0, ladybug, cavenger, ladybug_state, 0, ROT0, "Universal", "Cosmic Avenger", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ladybug, 0, ladybug, ladybug, ladybug_state, 0, ROT270, "Universal", "Lady Bug", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ladybugb, ladybug, ladybug, ladybug, ladybug_state, 0, ROT270, "bootleg", "Lady Bug (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ladybugb2, ladybug, ladybug, ladybug, ladybug_state, 0, ROT270, "bootleg (Model Racing)", "Coccinelle (bootleg of Lady Bug, set 2)", MACHINE_SUPPORTS_SAVE ) // title removed, but manual names it Coccinelle +GAME( 1982, dorodon, 0, dorodon, dorodon, ladybug_state, dorodon, ROT270, "UPL (Falcon license?)", "Dorodon (set 1)", MACHINE_SUPPORTS_SAVE ) // license or bootleg? +GAME( 1982, dorodon2, dorodon, dorodon, dorodon, ladybug_state, dorodon, ROT270, "UPL (Falcon license?)", "Dorodon (set 2)", MACHINE_SUPPORTS_SAVE ) // " +GAME( 1982, snapjack, 0, ladybug, snapjack, ladybug_state, 0, ROT0, "Universal", "Snap Jack", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ladyfrog.cpp b/src/mame/drivers/ladyfrog.cpp index 6f91ad613e3..fd79cf25778 100644 --- a/src/mame/drivers/ladyfrog.cpp +++ b/src/mame/drivers/ladyfrog.cpp @@ -281,7 +281,7 @@ void ladyfrog_state::machine_reset() m_snd_data = 0; } -static MACHINE_CONFIG_START( ladyfrog, ladyfrog_state ) +static MACHINE_CONFIG_START( ladyfrog ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,8000000/2) @@ -386,8 +386,8 @@ ROM_START( touchemea ) ROM_LOAD( "8.ic10", 0x20000, 0x10000, CRC(fc6808bf) SHA1(f1f1b75a79dfdb500012f9b52c6364f0a13dce2d) ) ROM_END -GAME( 1990, ladyfrog, 0, ladyfrog, ladyfrog, driver_device, 0, ORIENTATION_SWAP_XY, "Mondial Games", "Lady Frog", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ladyfrog, 0, ladyfrog, ladyfrog, ladyfrog_state, 0, ORIENTATION_SWAP_XY, "Mondial Games", "Lady Frog", MACHINE_SUPPORTS_SAVE ) // toucheme art style is similar to ladyfrog, so it's probably the same manufacturer -GAME( 19??, toucheme, 0, toucheme, toucheme, driver_device, 0, ORIENTATION_SWAP_XY, "", "Touche Me (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 19??, touchemea,toucheme, toucheme, toucheme, driver_device, 0, ORIENTATION_SWAP_XY, "", "Touche Me (set 2, harder)", MACHINE_SUPPORTS_SAVE ) +GAME( 19??, toucheme, 0, toucheme, toucheme, ladyfrog_state, 0, ORIENTATION_SWAP_XY, "", "Touche Me (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 19??, touchemea, toucheme, toucheme, toucheme, ladyfrog_state, 0, ORIENTATION_SWAP_XY, "", "Touche Me (set 2, harder)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/laser3k.cpp b/src/mame/drivers/laser3k.cpp index bd73426e89b..15c81db8508 100644 --- a/src/mame/drivers/laser3k.cpp +++ b/src/mame/drivers/laser3k.cpp @@ -960,7 +960,7 @@ PALETTE_INIT_MEMBER(laser3k_state, laser3k) palette.set_pen_colors(0, laser3k_palette, ARRAY_LENGTH(laser3k_palette)); } -static MACHINE_CONFIG_START( laser3k, laser3k_state ) +static MACHINE_CONFIG_START( laser3k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1021800) MCFG_CPU_PROGRAM_MAP(laser3k_map) @@ -1035,5 +1035,5 @@ ROM_START(las3000) ROM_LOAD ( "l3kdisk.rom", 0x0000, 0x0100, CRC(2d4b1584) SHA1(989780b77e100598124df7b72663e5a31a3339c0)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1983, las3000, 0, 0, laser3k, laser3k, driver_device, 0, "Video Technology", "Laser 3000", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, las3000, 0, 0, laser3k, laser3k, laser3k_state, 0, "Video Technology", "Laser 3000", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/laserbas.cpp b/src/mame/drivers/laserbas.cpp index db3f131962d..9baf4974385 100644 --- a/src/mame/drivers/laserbas.cpp +++ b/src/mame/drivers/laserbas.cpp @@ -404,7 +404,7 @@ INPUT_PORTS_END #define CLOCK 16680000 #define PIT_CLOCK (CLOCK/16) // 12 divider ? -static MACHINE_CONFIG_START( laserbas, laserbas_state ) +static MACHINE_CONFIG_START( laserbas ) MCFG_CPU_ADD("maincpu", Z80, CLOCK / 4) MCFG_CPU_PROGRAM_MAP(laserbas_memory) @@ -546,6 +546,6 @@ ROM_START( futflash ) ROM_LOAD( "ff.8", 0xf000, 0x0800, CRC(623f558f) SHA1(be6c6565df658555f21c43a8c2459cf399794a84) ) ROM_END -GAME( 1980, futflash, 0, laserbas, laserbas, driver_device, 0, ROT270, "Hoei", "Future Flash", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, laserbas, futflash, laserbas, laserbas, driver_device, 0, ROT270, "Hoei (Amstar license)", "Laser Base (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, laserbasa,futflash, laserbas, laserbas, driver_device, 0, ROT270, "Hoei (Amstar license)", "Laser Base (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, futflash, 0, laserbas, laserbas, laserbas_state, 0, ROT270, "Hoei", "Future Flash", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, laserbas, futflash, laserbas, laserbas, laserbas_state, 0, ROT270, "Hoei (Amstar license)", "Laser Base (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, laserbasa, futflash, laserbas, laserbas, laserbas_state, 0, ROT270, "Hoei (Amstar license)", "Laser Base (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/laserbat.cpp b/src/mame/drivers/laserbat.cpp index db01721f61f..4bfe2148713 100644 --- a/src/mame/drivers/laserbat.cpp +++ b/src/mame/drivers/laserbat.cpp @@ -466,7 +466,7 @@ void laserbat_state_base::device_timer(emu_timer &timer, device_timer_id id, int } -static MACHINE_CONFIG_START( laserbat_base, laserbat_state_base ) +static MACHINE_CONFIG_START( laserbat_base ) // basic machine hardware MCFG_CPU_ADD("maincpu", S2650, XTAL_14_31818MHz/4) @@ -498,7 +498,7 @@ static MACHINE_CONFIG_START( laserbat_base, laserbat_state_base ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( laserbat, laserbat_base, laserbat_state ) +static MACHINE_CONFIG_DERIVED( laserbat, laserbat_base ) // video hardware MCFG_PALETTE_ADD("palette", 256) @@ -523,14 +523,14 @@ static MACHINE_CONFIG_DERIVED_CLASS( laserbat, laserbat_base, laserbat_state ) MCFG_SN76477_ENABLE(0) // AB SOUND MCFG_TMS3615_ADD("synth_low", XTAL_4MHz/16/2) // from the other one's /2 clock output - MCFG_SOUND_ROUTE(TMS3615_FOOTAGE_8, "speaker", 1.0) + MCFG_SOUND_ROUTE(tms3615_device::FOOTAGE_8, "speaker", 1.0) MCFG_TMS3615_ADD("synth_high", XTAL_4MHz/16) // 4MHz divided down with a 74LS161 - MCFG_SOUND_ROUTE(TMS3615_FOOTAGE_8, "speaker", 1.0) + MCFG_SOUND_ROUTE(tms3615_device::FOOTAGE_8, "speaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( catnmous, laserbat_base, catnmous_state ) +static MACHINE_CONFIG_DERIVED( catnmous, laserbat_base ) // video hardware MCFG_PALETTE_ADD("palette", 256) @@ -728,7 +728,7 @@ ROM_START( catnmousa ) ROM_END -GAME( 1981, laserbat, 0, laserbat, laserbat, laserbat_state_base, laserbat, ROT0, "Zaccaria", "Laser Battle", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, lazarian, laserbat, laserbat, lazarian, laserbat_state_base, laserbat, ROT0, "Zaccaria (Bally Midway license)", "Lazarian", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, catnmous, 0, catnmous, catnmous, laserbat_state_base, laserbat, ROT90, "Zaccaria", "Cat and Mouse (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, catnmousa, catnmous, catnmous, catnmous, laserbat_state_base, laserbat, ROT90, "Zaccaria", "Cat and Mouse (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, laserbat, 0, laserbat, laserbat, laserbat_state, laserbat, ROT0, "Zaccaria", "Laser Battle", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, lazarian, laserbat, laserbat, lazarian, laserbat_state, laserbat, ROT0, "Zaccaria (Bally Midway license)", "Lazarian", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, catnmous, 0, catnmous, catnmous, catnmous_state, laserbat, ROT90, "Zaccaria", "Cat and Mouse (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, catnmousa, catnmous, catnmous, catnmous, catnmous_state, laserbat, ROT90, "Zaccaria", "Cat and Mouse (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lasso.cpp b/src/mame/drivers/lasso.cpp index 9eb4608ea68..68168d4a4b2 100644 --- a/src/mame/drivers/lasso.cpp +++ b/src/mame/drivers/lasso.cpp @@ -481,7 +481,7 @@ MACHINE_RESET_MEMBER(lasso_state,wwjgtin) m_track_enable = 0; } -static MACHINE_CONFIG_START( base, lasso_state ) +static MACHINE_CONFIG_START( base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 11289000/16) /* guess */ @@ -870,10 +870,10 @@ ROM_END ***************************************************************************/ -GAME( 1982, lasso, 0, lasso, lasso, driver_device, 0, ROT90, "SNK", "Lasso", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, chameleo, 0, chameleo, chameleo, driver_device, 0, ROT0, "Jaleco", "Chameleon", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, wwjgtin, 0, wwjgtin, wwjgtin, driver_device, 0, ROT0, "Jaleco / Casio", "Wai Wai Jockey Gate-In!", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, photof, wwjgtin, wwjgtin, wwjgtin, driver_device, 0, ROT0, "Jaleco / Casio", "Photo Finish (bootleg?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, pinbo, 0, pinbo, pinbo, driver_device, 0, ROT90, "Jaleco", "Pinbo (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, pinboa, pinbo, pinbo, pinboa, driver_device, 0, ROT90, "Jaleco", "Pinbo (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pinbos, pinbo, pinbo, pinboa, driver_device, 0, ROT90, "bootleg (Strike)", "Pinbo (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, lasso, 0, lasso, lasso, lasso_state, 0, ROT90, "SNK", "Lasso", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, chameleo, 0, chameleo, chameleo, lasso_state, 0, ROT0, "Jaleco", "Chameleon", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, wwjgtin, 0, wwjgtin, wwjgtin, lasso_state, 0, ROT0, "Jaleco / Casio", "Wai Wai Jockey Gate-In!", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, photof, wwjgtin, wwjgtin, wwjgtin, lasso_state, 0, ROT0, "Jaleco / Casio", "Photo Finish (bootleg?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, pinbo, 0, pinbo, pinbo, lasso_state, 0, ROT90, "Jaleco", "Pinbo (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, pinboa, pinbo, pinbo, pinboa, lasso_state, 0, ROT90, "Jaleco", "Pinbo (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pinbos, pinbo, pinbo, pinboa, lasso_state, 0, ROT90, "bootleg (Strike)", "Pinbo (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lastbank.cpp b/src/mame/drivers/lastbank.cpp index 39236b51a7e..ca83256c4fb 100644 --- a/src/mame/drivers/lastbank.cpp +++ b/src/mame/drivers/lastbank.cpp @@ -32,7 +32,7 @@ public: m_vdp(*this, "tc0091lvc"), m_oki(*this, "oki"), m_essnd(*this, "essnd") - { } + { } required_device m_maincpu; required_device m_vdp; @@ -41,7 +41,7 @@ public: virtual void video_start() override; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); uint8_t m_ram_bank[4]; uint8_t m_rom_bank; @@ -100,7 +100,7 @@ uint32_t lastbank_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -void lastbank_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(lastbank_state::screen_vblank) { if (state) { @@ -527,7 +527,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(lastbank_state::lastbank_irq_scanline) } } -static MACHINE_CONFIG_START( lastbank, lastbank_state ) +static MACHINE_CONFIG_START( lastbank ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,MASTER_CLOCK/4) //!!! TC0091LVC !!! @@ -553,7 +553,7 @@ static MACHINE_CONFIG_START( lastbank, lastbank_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(lastbank_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(lastbank_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(lastbank_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", lastbank ) @@ -567,7 +567,7 @@ static MACHINE_CONFIG_START( lastbank, lastbank_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) MCFG_ES8712_ADD("essnd", 12000) @@ -602,4 +602,4 @@ ROM_START( lastbank ) ROM_LOAD( "7.u60", 0x00000, 0x80000, CRC(41be7146) SHA1(00f1c0d5809efccf888e27518a2a5876c4b633d8) ) ROM_END -GAME( 1994, lastbank, 0, lastbank, lastbank, driver_device, 0, ROT0, "Excellent System", "Last Bank (v1.16)", 0 ) +GAME( 1994, lastbank, 0, lastbank, lastbank, lastbank_state, 0, ROT0, "Excellent System", "Last Bank (v1.16)", 0 ) diff --git a/src/mame/drivers/lastduel.cpp b/src/mame/drivers/lastduel.cpp index 8d6e1f879a1..2199a1f60ca 100644 --- a/src/mame/drivers/lastduel.cpp +++ b/src/mame/drivers/lastduel.cpp @@ -483,7 +483,7 @@ void lastduel_state::machine_reset() m_scroll[i] = 0; } -static MACHINE_CONFIG_START( lastduel, lastduel_state ) +static MACHINE_CONFIG_START( lastduel ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) // Unconfirmed - could be 8MHz @@ -504,7 +504,7 @@ static MACHINE_CONFIG_START( lastduel, lastduel_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(lastduel_state, screen_update_lastduel) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") @@ -528,7 +528,7 @@ static MACHINE_CONFIG_START( lastduel, lastduel_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( madgear, lastduel_state ) +static MACHINE_CONFIG_START( madgear ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -549,7 +549,7 @@ static MACHINE_CONFIG_START( madgear, lastduel_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(lastduel_state, screen_update_madgear) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") @@ -571,7 +571,7 @@ static MACHINE_CONFIG_START( madgear, lastduel_state ) MCFG_SOUND_ADD("ym2", YM2203, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) - MCFG_OKIM6295_ADD("oki", XTAL_10MHz/10, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_10MHz/10, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.98) MACHINE_CONFIG_END @@ -893,16 +893,16 @@ ROM_END /******************************************************************************/ -GAME( 1988, lastduel, 0, lastduel, lastduel, driver_device, 0, ROT270, "Capcom", "Last Duel (US New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, lastduelo, lastduel, lastduel, lastduel, driver_device, 0, ROT270, "Capcom", "Last Duel (US Old Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, lastduelj, lastduel, lastduel, lastduel, driver_device, 0, ROT270, "Capcom", "Last Duel (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, lastduelb, lastduel, lastduel, lastduel, driver_device, 0, ROT270, "bootleg", "Last Duel (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, lastduel, 0, lastduel, lastduel, lastduel_state, 0, ROT270, "Capcom", "Last Duel (US New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, lastduelo, lastduel, lastduel, lastduel, lastduel_state, 0, ROT270, "Capcom", "Last Duel (US Old Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, lastduelj, lastduel, lastduel, lastduel, lastduel_state, 0, ROT270, "Capcom", "Last Duel (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, lastduelb, lastduel, lastduel, lastduel, lastduel_state, 0, ROT270, "bootleg", "Last Duel (bootleg)", MACHINE_SUPPORTS_SAVE ) // are both Mad Gear and Led Storm really US sets, both have a (c) Capcom USA, but so do several World sets from Capcom during this era, including Led Storm Rally 2011. None of these display a region warning, 2011 does. // the region warning text is however still present in the ROM (albeit unused) and does appear to indicate both are US sets, so it's possible the title was revised to avoid confusion with the older Led Storm Rally 2011. -GAME( 1989, madgear, 0, madgear, madgear, driver_device, 0, ROT270, "Capcom", "Mad Gear (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, madgearj, madgear, madgear, madgear, driver_device, 0, ROT270, "Capcom", "Mad Gear (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, ledstorm, madgear, madgear, madgear, driver_device, 0, ROT270, "Capcom", "Led Storm (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, madgear, 0, madgear, madgear, lastduel_state, 0, ROT270, "Capcom", "Mad Gear (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, madgearj, madgear, madgear, madgear, lastduel_state, 0, ROT270, "Capcom", "Mad Gear (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, ledstorm, madgear, madgear, madgear, lastduel_state, 0, ROT270, "Capcom", "Led Storm (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, leds2011, 0, madgear, madgear, driver_device, 0, ROT270, "Capcom", "Led Storm Rally 2011 (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, leds2011u, leds2011, madgear, madgear, driver_device, 0, ROT270, "Capcom", "Led Storm Rally 2011 (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, leds2011, 0, madgear, madgear, lastduel_state, 0, ROT270, "Capcom", "Led Storm Rally 2011 (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, leds2011u, leds2011, madgear, madgear, lastduel_state, 0, ROT270, "Capcom", "Led Storm Rally 2011 (US)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lastfght.cpp b/src/mame/drivers/lastfght.cpp index 326147d30b9..760628ad48c 100644 --- a/src/mame/drivers/lastfght.cpp +++ b/src/mame/drivers/lastfght.cpp @@ -561,7 +561,7 @@ void lastfght_state::machine_reset() m_c00006 = 0; } -static MACHINE_CONFIG_START( lastfght, lastfght_state ) +static MACHINE_CONFIG_START( lastfght ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83044, 32000000/2) diff --git a/src/mame/drivers/laz_aftrshok.cpp b/src/mame/drivers/laz_aftrshok.cpp index 28bd3e4e52e..e3fcd308fea 100644 --- a/src/mame/drivers/laz_aftrshok.cpp +++ b/src/mame/drivers/laz_aftrshok.cpp @@ -62,7 +62,7 @@ void aftrshok_state::machine_reset() } -static MACHINE_CONFIG_START( aftrshok, aftrshok_state ) +static MACHINE_CONFIG_START( aftrshok ) /* basic machine hardware */ // MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown @@ -73,7 +73,7 @@ static MACHINE_CONFIG_START( aftrshok, aftrshok_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // maybe + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // maybe MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -100,5 +100,5 @@ ROM_START( aftrshoka ) ROM_END -GAME( 19??, aftrshok, 0, aftrshok, aftrshok, driver_device, 0, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 19??, aftrshoka, aftrshok, aftrshok, aftrshok, driver_device, 0, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 19??, aftrshok, 0, aftrshok, aftrshok, aftrshok_state, 0, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 19??, aftrshoka, aftrshok, aftrshok, aftrshok, aftrshok_state, 0, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/laz_awetoss.cpp b/src/mame/drivers/laz_awetoss.cpp index 6e39139461b..637dcc01953 100644 --- a/src/mame/drivers/laz_awetoss.cpp +++ b/src/mame/drivers/laz_awetoss.cpp @@ -42,7 +42,7 @@ void awetoss_state::machine_reset() } -static MACHINE_CONFIG_START( awetoss, awetoss_state ) +static MACHINE_CONFIG_START( awetoss ) /* basic machine hardware */ // MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown @@ -53,7 +53,7 @@ static MACHINE_CONFIG_START( awetoss, awetoss_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // maybe + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // maybe MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -81,4 +81,4 @@ ROM_START( awetoss ) ROM_LOAD( "AWSMTOSS.U11", 0x30000, 0x10000, CRC(8ae9d4f0) SHA1(58d1d8972c8e4c9a7c63e9d63e267ea81515d22a) ) ROM_END -GAME( 19??, awetoss, 0, awetoss, awetoss, driver_device, 0, ROT0, "Lazer-tron", "Awesome Toss'em (Lazer-tron)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 19??, awetoss, 0, awetoss, awetoss, awetoss_state, 0, ROT0, "Lazer-tron", "Awesome Toss'em (Lazer-tron)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/laz_ribrac.cpp b/src/mame/drivers/laz_ribrac.cpp index d8b19d7aecf..35332cc3c89 100644 --- a/src/mame/drivers/laz_ribrac.cpp +++ b/src/mame/drivers/laz_ribrac.cpp @@ -46,7 +46,7 @@ void laz_ribrac_state::machine_reset() } -static MACHINE_CONFIG_START( laz_ribrac, laz_ribrac_state ) +static MACHINE_CONFIG_START( laz_ribrac ) /* basic machine hardware */ // MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown @@ -56,7 +56,7 @@ static MACHINE_CONFIG_START( laz_ribrac, laz_ribrac_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // maybe + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // maybe MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -79,4 +79,4 @@ ROM_START( ribrac ) ROM_LOAD( "RIBBITR_SND.U11", 0x30000, 0x10000, NO_DUMP ) ROM_END -GAME( 1993, ribrac, 0, laz_ribrac, laz_ribrac, driver_device, 0, ROT0, "Lazer-tron", "Ribbit Racing (Lazer-tron)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1993, ribrac, 0, laz_ribrac, laz_ribrac, laz_ribrac_state, 0, ROT0, "Lazer-tron", "Ribbit Racing (Lazer-tron)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/lazercmd.cpp b/src/mame/drivers/lazercmd.cpp index 89aa2419121..ee3cfc03341 100644 --- a/src/mame/drivers/lazercmd.cpp +++ b/src/mame/drivers/lazercmd.cpp @@ -622,7 +622,7 @@ void lazercmd_state::machine_reset() } -static MACHINE_CONFIG_START( lazercmd, lazercmd_state ) +static MACHINE_CONFIG_START( lazercmd ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/12) /* 666 kHz? */ @@ -661,7 +661,7 @@ static MACHINE_CONFIG_START( lazercmd, lazercmd_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( medlanes, lazercmd_state ) +static MACHINE_CONFIG_START( medlanes ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/12) /* 666 kHz */ @@ -696,7 +696,7 @@ static MACHINE_CONFIG_START( medlanes, lazercmd_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bbonk, lazercmd_state ) +static MACHINE_CONFIG_START( bbonk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/12) /* 666 kHz */ diff --git a/src/mame/drivers/lb186.cpp b/src/mame/drivers/lb186.cpp index acd2cbfd20d..7969c061306 100644 --- a/src/mame/drivers/lb186.cpp +++ b/src/mame/drivers/lb186.cpp @@ -15,15 +15,16 @@ class lb186_state : public driver_device { public: - lb186_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_fdc(*this, "fdc"), - m_scsi(*this, "scsibus:7:ncr5380") - {} + lb186_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_fdc(*this, "fdc") + , m_scsi(*this, "scsibus:7:ncr5380") + { + } required_device m_maincpu; - required_device m_fdc; + required_device m_fdc; required_device m_scsi; DECLARE_WRITE8_MEMBER(sio_out_w); @@ -93,7 +94,7 @@ static ADDRESS_MAP_START( lb186_io, AS_IO, 16, lb186_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x1000, 0x101f) AM_DEVREADWRITE8("sc2681", mc68681_device, read, write, 0x00ff) AM_RANGE(0x1080, 0x108f) AM_DEVREADWRITE8("scsibus:7:ncr5380", ncr5380n_device, read, write, 0x00ff) - AM_RANGE(0x1100, 0x1107) AM_DEVREADWRITE8("fdc", wd1772_t, read, write, 0x00ff) + AM_RANGE(0x1100, 0x1107) AM_DEVREADWRITE8("fdc", wd1772_device, read, write, 0x00ff) AM_RANGE(0x1180, 0x1181) AM_READWRITE8(scsi_dack_r, scsi_dack_w, 0x00ff) AM_RANGE(0x1200, 0x1201) AM_WRITE8(drive_sel_w, 0x00ff) ADDRESS_MAP_END @@ -118,7 +119,7 @@ FLOPPY_FORMATS_MEMBER( lb186_state::floppy_formats ) FLOPPY_NASLITE_FORMAT FLOPPY_FORMATS_END -static MACHINE_CONFIG_START( lb186, lb186_state ) +static MACHINE_CONFIG_START( lb186 ) MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(lb186_map) MCFG_CPU_IO_MAP(lb186_io) @@ -160,4 +161,4 @@ ROM_START( lb186 ) ROM_LOAD16_BYTE("a75516_v3.35.rom", 0x0001, 0x2000, CRC(9d9a5e22) SHA1(070be31c622f50508e8cbdb797c79978b6a4b8f6)) ROM_END -COMP( 1985, lb186, 0, 0, lb186, 0, driver_device, 0, "Ampro Computers", "Little Board/186", MACHINE_NO_SOUND_HW ) +COMP( 1985, lb186, 0, 0, lb186, 0, lb186_state, 0, "Ampro Computers", "Little Board/186", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/lbeach.cpp b/src/mame/drivers/lbeach.cpp index 908a6e49284..fd9e89deb9f 100644 --- a/src/mame/drivers/lbeach.cpp +++ b/src/mame/drivers/lbeach.cpp @@ -324,7 +324,7 @@ void lbeach_state::machine_reset() { } -static MACHINE_CONFIG_START( lbeach, lbeach_state ) +static MACHINE_CONFIG_START( lbeach ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_16MHz / 32) // Motorola MC6800P, 500kHz @@ -376,4 +376,4 @@ ROM_START( lbeach ) ROM_END -GAMEL(1979, lbeach, 0, lbeach, lbeach, driver_device, 0, ROT0, "Olympia / Seletron", "Long Beach", MACHINE_IMPERFECT_COLORS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_lbeach ) +GAMEL(1979, lbeach, 0, lbeach, lbeach, lbeach_state, 0, ROT0, "Olympia / Seletron", "Long Beach", MACHINE_IMPERFECT_COLORS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_lbeach ) diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp index ef866d363ac..ca64d778460 100644 --- a/src/mame/drivers/lc80.cpp +++ b/src/mame/drivers/lc80.cpp @@ -325,7 +325,7 @@ void lc80_state::machine_start() /* Machine Driver */ -static MACHINE_CONFIG_START( lc80, lc80_state ) +static MACHINE_CONFIG_START( lc80 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, 900000) /* UD880D */ MCFG_CPU_PROGRAM_MAP(lc80_mem) @@ -364,7 +364,7 @@ static MACHINE_CONFIG_START( lc80, lc80_state ) MCFG_RAM_EXTRA_OPTIONS("2K,3K,4K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lc80_2, lc80_state ) +static MACHINE_CONFIG_START( lc80_2 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, 1800000) /* UD880D */ MCFG_CPU_PROGRAM_MAP(lc80_mem) @@ -437,7 +437,7 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, lc80, 0, 0, lc80, lc80, driver_device, 0, "VEB Mikroelektronik", "Lerncomputer LC 80", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, lc80_2, lc80, 0, lc80_2, lc80, driver_device, 0, "VEB Mikroelektronik", "Lerncomputer LC 80.2", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, sc80, lc80, 0, lc80_2, lc80, driver_device, 0, "VEB Mikroelektronik", "Schachcomputer SC-80", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, lc80, 0, 0, lc80, lc80, lc80_state, 0, "VEB Mikroelektronik", "Lerncomputer LC 80", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, lc80_2, lc80, 0, lc80_2, lc80, lc80_state, 0, "VEB Mikroelektronik", "Lerncomputer LC 80.2", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, sc80, lc80, 0, lc80_2, lc80, lc80_state, 0, "VEB Mikroelektronik", "Schachcomputer SC-80", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lcmate2.cpp b/src/mame/drivers/lcmate2.cpp index 25fbc3ec82f..1164fc52101 100644 --- a/src/mame/drivers/lcmate2.cpp +++ b/src/mame/drivers/lcmate2.cpp @@ -223,7 +223,7 @@ static GFXDECODE_START( lcmate2 ) GFXDECODE_END -static MACHINE_CONFIG_START( lcmate2, lcmate2_state ) +static MACHINE_CONFIG_START( lcmate2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) // confirmed MCFG_CPU_PROGRAM_MAP(lcmate2_mem) @@ -266,5 +266,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, lcmate2, 0, 0, lcmate2, lcmate2, driver_device, 0, "Vtech", "Laser Compumate 2", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, lcmate2, 0, 0, lcmate2, lcmate2, lcmate2_state, 0, "Vtech", "Laser Compumate 2", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ldplayer.cpp b/src/mame/drivers/ldplayer.cpp index 9fda0081662..eac15f4d01f 100644 --- a/src/mame/drivers/ldplayer.cpp +++ b/src/mame/drivers/ldplayer.cpp @@ -620,13 +620,13 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( ldplayer_ntsc, ldplayer_state ) +static MACHINE_CONFIG_START( ldplayer_ntsc ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( ldv1000, ldplayer_ntsc, ldv1000_state ) +static MACHINE_CONFIG_DERIVED( ldv1000, ldplayer_ntsc ) MCFG_LASERDISC_LDV1000_ADD("laserdisc") - MCFG_LASERDISC_GET_DISC(laserdisc_get_disc_delegate(&ldplayer_state::get_disc_static, device)) + MCFG_LASERDISC_GET_DISC(laserdisc_device::get_disc_delegate(&ldplayer_state::get_disc_static, device)) MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -636,9 +636,9 @@ static MACHINE_CONFIG_DERIVED_CLASS( ldv1000, ldplayer_ntsc, ldv1000_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( pr8210, ldplayer_ntsc, pr8210_state ) +static MACHINE_CONFIG_DERIVED( pr8210, ldplayer_ntsc ) MCFG_LASERDISC_PR8210_ADD("laserdisc") - MCFG_LASERDISC_GET_DISC(laserdisc_get_disc_delegate(&ldplayer_state::get_disc_static, device)) + MCFG_LASERDISC_GET_DISC(laserdisc_device::get_disc_delegate(&ldplayer_state::get_disc_static, device)) MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -672,5 +672,5 @@ ROM_END * *************************************/ -GAME( 2008, simldv1000, 0, ldv1000, ldplayer, driver_device, 0, ROT0, "MAME", "Pioneer LDV-1000 Simulator", 0 ) -GAMEL(2008, simpr8210, 0, pr8210, ldplayer, driver_device, 0, ROT0, "MAME", "Pioneer PR-8210 Simulator", 0, layout_pr8210 ) +GAME( 2008, simldv1000, 0, ldv1000, ldplayer, ldv1000_state, 0, ROT0, "MAME", "Pioneer LDV-1000 Simulator", 0 ) +GAMEL(2008, simpr8210, 0, pr8210, ldplayer, pr8210_state, 0, ROT0, "MAME", "Pioneer PR-8210 Simulator", 0, layout_pr8210 ) diff --git a/src/mame/drivers/leapster.cpp b/src/mame/drivers/leapster.cpp index ee2b853bfcf..432337c87c0 100644 --- a/src/mame/drivers/leapster.cpp +++ b/src/mame/drivers/leapster.cpp @@ -233,7 +233,7 @@ public: DECLARE_READ32_MEMBER(leapster_random_r) { - return rand() | (rand()<<16); // there is a loop checking that this is above a certain value + return machine().rand() | (machine().rand()<<16); // there is a loop checking that this is above a certain value } DECLARE_WRITE32_MEMBER(leapster_aux004b_w) @@ -301,7 +301,7 @@ static ADDRESS_MAP_START( leapster_aux, AS_IO, 32, leapster_state ) AM_RANGE(0x00000012c, 0x00000012f) AM_WRITE(leapster_aux004b_w) // this address isn't used by ARC internal stuff afaik, so probably leapster specific ADDRESS_MAP_END -static MACHINE_CONFIG_START( leapster, leapster_state ) +static MACHINE_CONFIG_START( leapster ) /* basic machine hardware */ // CPU is ArcTangent-A5 '5.1' (ARCompact core) MCFG_CPU_ADD("maincpu", ARCA5, 96000000/10) @@ -338,5 +338,5 @@ DRIVER_INIT_MEMBER(leapster_state,leapster) { } -CONS(2003, leapster, 0, 0, leapster, leapster, leapster_state, leapster, "LeapFrog", "Leapster (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -CONS(2005, leapstertv, leapster, 0, leapster, leapster, leapster_state, leapster, "LeapFrog", "Leapster TV (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +CONS( 2003, leapster, 0, 0, leapster, leapster, leapster_state, leapster, "LeapFrog", "Leapster (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +CONS( 2005, leapstertv, leapster, 0, leapster, leapster, leapster_state, leapster, "LeapFrog", "Leapster TV (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/legionna.cpp b/src/mame/drivers/legionna.cpp index 61121ceee76..4e58a996f4c 100644 --- a/src/mame/drivers/legionna.cpp +++ b/src/mame/drivers/legionna.cpp @@ -1156,7 +1156,7 @@ GFXDECODE_END /*****************************************************************************/ -static MACHINE_CONFIG_START( legionna, legionna_state ) +static MACHINE_CONFIG_START( legionna ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,20000000/2) /* ??? */ @@ -1196,7 +1196,7 @@ static MACHINE_CONFIG_START( legionna, legionna_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -1207,7 +1207,7 @@ static MACHINE_CONFIG_START( legionna, legionna_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( heatbrl, legionna_state ) +static MACHINE_CONFIG_START( heatbrl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,20000000/2) /* ??? */ @@ -1249,7 +1249,7 @@ static MACHINE_CONFIG_START( heatbrl, legionna_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -1259,7 +1259,7 @@ static MACHINE_CONFIG_START( heatbrl, legionna_state ) MCFG_SEIBU_SOUND_YM_WRITE_CB(DEVWRITE8("ymsnd", ym3812_device, write)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( godzilla, legionna_state ) +static MACHINE_CONFIG_START( godzilla ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 20000000/2) @@ -1303,7 +1303,7 @@ static MACHINE_CONFIG_START( godzilla, legionna_state ) MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -1313,7 +1313,7 @@ static MACHINE_CONFIG_START( godzilla, legionna_state ) MCFG_SEIBU_SOUND_YM_WRITE_CB(DEVWRITE8("ymsnd", ym2151_device, write)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( denjinmk, legionna_state ) +static MACHINE_CONFIG_START( denjinmk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 20000000/2) @@ -1356,7 +1356,7 @@ static MACHINE_CONFIG_START( denjinmk, legionna_state ) MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -1366,7 +1366,7 @@ static MACHINE_CONFIG_START( denjinmk, legionna_state ) MCFG_SEIBU_SOUND_YM_WRITE_CB(DEVWRITE8("ymsnd", ym2151_device, write)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( grainbow, legionna_state ) +static MACHINE_CONFIG_START( grainbow ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 20000000/2) @@ -1409,7 +1409,7 @@ static MACHINE_CONFIG_START( grainbow, legionna_state ) MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -1420,7 +1420,7 @@ static MACHINE_CONFIG_START( grainbow, legionna_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cupsoc, legionna_state ) +static MACHINE_CONFIG_START( cupsoc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,20000000/2) @@ -1462,7 +1462,7 @@ static MACHINE_CONFIG_START( cupsoc, legionna_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -2185,6 +2185,9 @@ ROM_START( cupsoc ) ROM_REGION( 0x080000, "user1", 0 ) ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) + + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "soc07.u0910", 0x000, 0x200, NO_DUMP ) // N82S147AN ROM_END ROM_START( cupsoca ) @@ -2222,6 +2225,9 @@ ROM_START( cupsoca ) ROM_REGION( 0x080000, "user1", 0 ) ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) + + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "soc07.u0910", 0x000, 0x200, NO_DUMP ) // N82S147AN ROM_END ROM_START( cupsocb ) @@ -2259,6 +2265,9 @@ ROM_START( cupsocb ) ROM_REGION( 0x080000, "user1", 0 ) ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) + + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "soc07.u0910", 0x000, 0x200, NO_DUMP ) // N82S147AN ROM_END ROM_START( cupsocs ) @@ -2296,6 +2305,9 @@ ROM_START( cupsocs ) ROM_REGION( 0x080000, "user1", 0 ) ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) + + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "soc07.u0910", 0x000, 0x200, NO_DUMP ) // N82S147AN ROM_END @@ -2335,6 +2347,9 @@ ROM_START( cupsocs2 ) ROM_REGION( 0x080000, "user1", 0 ) ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) + + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "soc07.u0910", 0x000, 0x200, NO_DUMP ) // N82S147AN ROM_END ROM_START( olysoc92 ) @@ -2372,6 +2387,9 @@ ROM_START( olysoc92 ) ROM_REGION( 0x080000, "user1", 0 ) ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) + + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "soc07.u0910", 0x000, 0x200, NO_DUMP ) // N82S147AN ROM_END ROM_START( olysoc92a ) @@ -2409,6 +2427,9 @@ ROM_START( olysoc92a ) ROM_REGION( 0x080000, "user1", 0 ) ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) + + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "soc07.u0910", 0x000, 0x200, NO_DUMP ) // N82S147AN ROM_END @@ -2447,6 +2468,9 @@ ROM_START( olysoc92b ) ROM_REGION( 0x080000, "user1", 0 ) ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) ) + + ROM_REGION( 0x200, "proms", 0 ) + ROM_LOAD( "soc07.u0910", 0x000, 0x200, NO_DUMP ) // N82S147AN ROM_END @@ -2509,25 +2533,25 @@ DRIVER_INIT_MEMBER(legionna_state,legiongfx) -GAME( 1992, legionna, 0, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation", "Legionnaire (World)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, legionnau,legionna, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation (Fabtek license)", "Legionnaire (US)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, legionnaj,legionna, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation", "Legionnaire (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, legionna, 0, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation", "Legionnaire (World)", 0 ) +GAME( 1992, legionnau,legionna, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation (Fabtek license)", "Legionnaire (US)", 0 ) +GAME( 1992, legionnaj,legionna, legionna, legionna, legionna_state, legiongfx, ROT0, "TAD Corporation", "Legionnaire (Japan)", 0 ) -GAME( 1992, heatbrl, 0, heatbrl, heatbrl, driver_device, 0, ROT0, "TAD Corporation", "Heated Barrel (World version 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, heatbrl2, heatbrl, heatbrl, heatbrl, driver_device, 0, ROT0, "TAD Corporation", "Heated Barrel (World version 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, heatbrlo, heatbrl, heatbrl, heatbrl, driver_device, 0, ROT0, "TAD Corporation", "Heated Barrel (World old version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, heatbrlu, heatbrl, heatbrl, heatbrl, driver_device, 0, ROT0, "TAD Corporation", "Heated Barrel (US)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, heatbrle, heatbrl, heatbrl, heatbrl, driver_device, 0, ROT0, "TAD Corporation (Electronic Devices license)", "Heated Barrel (Electronic Devices license)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, heatbrl, 0, heatbrl, heatbrl, legionna_state, 0, ROT0, "TAD Corporation", "Heated Barrel (World version 3)", 0 ) +GAME( 1992, heatbrl2, heatbrl, heatbrl, heatbrl, legionna_state, 0, ROT0, "TAD Corporation", "Heated Barrel (World version 2)", 0 ) +GAME( 1992, heatbrlo, heatbrl, heatbrl, heatbrl, legionna_state, 0, ROT0, "TAD Corporation", "Heated Barrel (World old version)", 0 ) +GAME( 1992, heatbrlu, heatbrl, heatbrl, heatbrl, legionna_state, 0, ROT0, "TAD Corporation", "Heated Barrel (US)", 0 ) +GAME( 1992, heatbrle, heatbrl, heatbrl, heatbrl, legionna_state, 0, ROT0, "TAD Corporation (Electronic Devices license)", "Heated Barrel (Electronic Devices license)", 0 ) -GAME( 1993, godzilla, 0, godzilla, godzilla, driver_device, 0, ROT0, "Banpresto", "Godzilla (Japan)", 0 ) -GAME( 1993, grainbow, 0, grainbow, grainbow, driver_device, 0, ROT0, "Banpresto", "SD Gundam Sangokushi Rainbow Tairiku Senki", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1993, denjinmk, 0, denjinmk, denjinmk, driver_device, 0, ROT0, "Winkysoft (Banpresto license)", "Denjin Makai", MACHINE_IMPERFECT_COLORS ) +GAME( 1993, godzilla, 0, godzilla, godzilla, legionna_state, 0, ROT0, "Banpresto", "Godzilla (Japan)", 0 ) +GAME( 1993, grainbow, 0, grainbow, grainbow, legionna_state, 0, ROT0, "Banpresto", "SD Gundam Sangokushi Rainbow Tairiku Senki", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1993, denjinmk, 0, denjinmk, denjinmk, legionna_state, 0, ROT0, "Winkysoft (Banpresto license)", "Denjin Makai", MACHINE_IMPERFECT_COLORS ) -GAME( 1992, cupsoc, 0, cupsoc, cupsoc, legionna_state, cupsoc, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, cupsoca, cupsoc, cupsoc, cupsoc, legionna_state, cupsoc, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, cupsocb, cupsoc, cupsoc, cupsoc, legionna_state, cupsocs, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, cupsocs, cupsoc, cupsocs, cupsoc, legionna_state, cupsocs, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, cupsocs2, cupsoc, cupsocs, cupsoc, legionna_state, cupsocs, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, olysoc92, cupsoc, cupsoc, cupsoc, legionna_state, olysoc92, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, olysoc92a,cupsoc, cupsoc, cupsoc, legionna_state, olysoc92, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, olysoc92b,cupsoc, cupsoc, cupsoc, legionna_state, olysoc92, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, cupsoc, 0, cupsoc, cupsoc, legionna_state, cupsoc, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, cupsoca, cupsoc, cupsoc, cupsoc, legionna_state, cupsoc, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, cupsocb, cupsoc, cupsoc, cupsoc, legionna_state, cupsocs, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, cupsocs, cupsoc, cupsocs, cupsoc, legionna_state, cupsocs, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, cupsocs2, cupsoc, cupsocs, cupsoc, legionna_state, cupsocs, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, olysoc92, cupsoc, cupsoc, cupsoc, legionna_state, olysoc92, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, olysoc92a,cupsoc, cupsoc, cupsoc, legionna_state, olysoc92, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, olysoc92b,cupsoc, cupsoc, cupsoc, legionna_state, olysoc92, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/leland.cpp b/src/mame/drivers/leland.cpp index 64e83f6bd87..c4e2a4f43d9 100644 --- a/src/mame/drivers/leland.cpp +++ b/src/mame/drivers/leland.cpp @@ -60,6 +60,8 @@ #include "emu.h" #include "includes/leland.h" +#include "audio/leland.h" + #include "cpu/z80/z80.h" #include "machine/nvram.h" #include "sound/volt_reg.h" @@ -938,7 +940,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( leland, leland_state ) +static MACHINE_CONFIG_START( leland ) /* basic machine hardware */ MCFG_CPU_ADD("master", Z80, MASTER_CLOCK/2) @@ -1020,7 +1022,7 @@ static MACHINE_CONFIG_DERIVED( lelandi, quarterb ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ataxx, leland_state ) +static MACHINE_CONFIG_START( ataxx ) /* basic machine hardware */ MCFG_CPU_ADD("master", Z80, 6000000) diff --git a/src/mame/drivers/lemmings.cpp b/src/mame/drivers/lemmings.cpp index 3fb5d5d7bbd..e3e04e32afb 100644 --- a/src/mame/drivers/lemmings.cpp +++ b/src/mame/drivers/lemmings.cpp @@ -233,7 +233,7 @@ void lemmings_state::machine_start() { } -static MACHINE_CONFIG_START( lemmings, lemmings_state ) +static MACHINE_CONFIG_START( lemmings ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -254,7 +254,7 @@ static MACHINE_CONFIG_START( lemmings, lemmings_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(lemmings_state, screen_update_lemmings) - MCFG_SCREEN_VBLANK_DRIVER(lemmings_state, screen_eof_lemmings) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(lemmings_state, screen_vblank_lemmings)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", lemmings) MCFG_PALETTE_ADD("palette", 1024) @@ -283,7 +283,7 @@ static MACHINE_CONFIG_START( lemmings, lemmings_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki", 1023924, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1023924, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END @@ -322,4 +322,4 @@ ROM_END /******************************************************************************/ -GAME( 1991, lemmings, 0, lemmings, lemmings, driver_device, 0, ROT0, "Data East USA", "Lemmings (US prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, lemmings, 0, lemmings, lemmings, lemmings_state, 0, ROT0, "Data East USA", "Lemmings (US prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lethal.cpp b/src/mame/drivers/lethal.cpp index 8a00ea24dcd..08cbdccc65f 100644 --- a/src/mame/drivers/lethal.cpp +++ b/src/mame/drivers/lethal.cpp @@ -252,7 +252,6 @@ maybe some sprite placement issues #include "cpu/m6809/m6809.h" #include "cpu/m6809/hd6309.h" #include "cpu/z80/z80.h" -#include "machine/gen_latch.h" #include "machine/eepromser.h" #include "sound/k054539.h" #include "screen.h" @@ -292,14 +291,15 @@ INTERRUPT_GEN_MEMBER(lethal_state::lethalen_interrupt) device.execute().set_input_line(HD6309_IRQ_LINE, HOLD_LINE); } -WRITE8_MEMBER(lethal_state::sound_irq_w) +READ8_MEMBER(lethal_state::sound_irq_r) { m_soundcpu->set_input_line(0, HOLD_LINE); + return 0x00; } -READ8_MEMBER(lethal_state::sound_status_r) +WRITE8_MEMBER(lethal_state::sound_irq_w) { - return 0xf; + m_soundcpu->set_input_line(0, HOLD_LINE); } WRITE8_MEMBER(lethal_state::le_bankswitch_w) @@ -346,7 +346,7 @@ static ADDRESS_MAP_START( le_main, AS_PROGRAM, 8, lethal_state ) AM_RANGE(0x4000, 0x403f) AM_DEVWRITE("k056832", k056832_device, write) AM_RANGE(0x4040, 0x404f) AM_DEVWRITE("k056832", k056832_device, b_w) AM_RANGE(0x4080, 0x4080) AM_READNOP // watchdog - AM_RANGE(0x4090, 0x4090) AM_READNOP + AM_RANGE(0x4090, 0x4090) AM_READWRITE(sound_irq_r, sound_irq_w) AM_RANGE(0x40a0, 0x40a0) AM_READNOP AM_RANGE(0x40c4, 0x40c4) AM_WRITE(control2_w) AM_RANGE(0x40c8, 0x40d0) AM_WRITE(lethalen_palette_control) // PCU1-PCU3 on the schematics @@ -364,9 +364,7 @@ static ADDRESS_MAP_START( bank4000_map, AS_PROGRAM, 8, lethal_state ) // VRD = 0 or 1, CBNK = 0 AM_RANGE(0x0840, 0x084f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w) AM_RANGE(0x0880, 0x089f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k054000", k054000_device, read, write) - AM_RANGE(0x08c6, 0x08c6) AM_MIRROR(0x8000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) //cmd_w - AM_RANGE(0x08c7, 0x08c7) AM_MIRROR(0x8000) AM_WRITE(sound_irq_w) - AM_RANGE(0x08ca, 0x08ca) AM_MIRROR(0x8000) AM_READ(sound_status_r) + AM_RANGE(0x08c0, 0x08cf) AM_DEVICE("k054321", k054321_device, main_map) AM_RANGE(0x1000, 0x17ff) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w) // VRD = 0, CBNK = 0 @@ -386,9 +384,7 @@ static ADDRESS_MAP_START( le_sound, AS_PROGRAM, 8, lethal_state ) AM_RANGE(0x0000, 0xefff) AM_ROM AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_RANGE(0xf800, 0xfa2f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xfc02, 0xfc02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xfc03, 0xfc03) AM_READNOP + AM_RANGE(0xfc00, 0xfc03) AM_DEVICE("k054321", k054321_device, sound_map) ADDRESS_MAP_END static INPUT_PORTS_START( lethalen ) @@ -490,7 +486,7 @@ void lethal_state::machine_reset() m_bank4000->set_bank(0); } -static MACHINE_CONFIG_START( lethalen, lethal_state ) +static MACHINE_CONFIG_START( lethalen ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, MAIN_CLOCK/2) /* verified on pcb */ @@ -538,8 +534,7 @@ static MACHINE_CONFIG_START( lethalen, lethal_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker") MCFG_DEVICE_ADD("k054539", K054539, XTAL_18_432MHz) MCFG_K054539_TIMER_HANDLER(INPUTLINE("soundcpu", INPUT_LINE_NMI)) @@ -758,14 +753,14 @@ ROM_END // date strings are at 0x3fd00 in the main program rom -GAME( 1992, lethalen, 0, lethalen, lethalen, driver_device, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver UAE, 11/19/92 15:04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes UE to eeprom -GAME( 1992, lethalenub, lethalen, lethalen, lethalen, driver_device, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver UAB, 09/01/92 11:12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes UB to eeprom -GAME( 1992, lethalenua, lethalen, lethalen, lethalen, driver_device, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver UAA, 08/17/92 21:38)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes UA to eeprom -GAME( 1992, lethalenux, lethalen, lethalen, lethalen, driver_device, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver unknown, US, 08/06/92 15:11, hacked/proto?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes UA to eeprom but earlier than suspected UAA set, might be a proto, might be hacked, fails rom test, definitely a good dump, another identical set was found in Italy +GAME( 1992, lethalen, 0, lethalen, lethalen, lethal_state, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver UAE, 11/19/92 15:04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes UE to eeprom +GAME( 1992, lethalenub, lethalen, lethalen, lethalen, lethal_state, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver UAB, 09/01/92 11:12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes UB to eeprom +GAME( 1992, lethalenua, lethalen, lethalen, lethalen, lethal_state, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver UAA, 08/17/92 21:38)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes UA to eeprom +GAME( 1992, lethalenux, lethalen, lethalen, lethalen, lethal_state, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver unknown, US, 08/06/92 15:11, hacked/proto?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes UA to eeprom but earlier than suspected UAA set, might be a proto, might be hacked, fails rom test, definitely a good dump, another identical set was found in Italy -GAME( 1992, lethaleneae,lethalen, lethalen, lethalene, driver_device, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAE, 11/19/92 16:24)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes EE to eeprom -GAME( 1992, lethaleneab,lethalen, lethalen, lethalene, driver_device, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAB, 10/14/92 19:53)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes EC to eeprom, so might actually be EC -GAME( 1992, lethaleneaa,lethalen, lethalen, lethalene, driver_device, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAA, 09/09/92 09:44)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes EA to eeprom +GAME( 1992, lethaleneae,lethalen, lethalen, lethalene, lethal_state, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAE, 11/19/92 16:24)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes EE to eeprom +GAME( 1992, lethaleneab,lethalen, lethalen, lethalene, lethal_state, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAB, 10/14/92 19:53)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes EC to eeprom, so might actually be EC +GAME( 1992, lethaleneaa,lethalen, lethalen, lethalene, lethal_state, 0, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver EAA, 09/09/92 09:44)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes EA to eeprom // different mirror / display setup -GAME( 1992, lethalenj, lethalen, lethalej, lethalenj, driver_device, 0, ORIENTATION_FLIP_X, "Konami", "Lethal Enforcers (ver JAD, 12/04/92 17:16)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes JC to eeprom?! +GAME( 1992, lethalenj, lethalen, lethalej, lethalenj, lethal_state, 0, ORIENTATION_FLIP_X, "Konami", "Lethal Enforcers (ver JAD, 12/04/92 17:16)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // writes JC to eeprom?! diff --git a/src/mame/drivers/lethalj.cpp b/src/mame/drivers/lethalj.cpp index d55fd3490e7..46d4f812ada 100644 --- a/src/mame/drivers/lethalj.cpp +++ b/src/mame/drivers/lethalj.cpp @@ -629,7 +629,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( gameroom, lethalj_state ) +static MACHINE_CONFIG_START( gameroom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, MASTER_CLOCK) @@ -652,13 +652,13 @@ static MACHINE_CONFIG_START( gameroom, lethalj_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", SOUND_CLOCK, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", SOUND_CLOCK, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8) - MCFG_OKIM6295_ADD("oki2", SOUND_CLOCK, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", SOUND_CLOCK, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8) - MCFG_OKIM6295_ADD("oki3", SOUND_CLOCK, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki3", SOUND_CLOCK, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.8) MACHINE_CONFIG_END @@ -1040,14 +1040,14 @@ DRIVER_INIT_MEMBER(lethalj_state,cclownz) * *************************************/ -GAME( 1996, lethalj, 0, lethalj, lethalj, driver_device, 0, ROT0, "The Game Room", "Lethal Justice (Version 2.3)", 0 ) -GAME( 1996, franticf, 0, gameroom, franticf, driver_device, 0, ROT0, "The Game Room", "Frantic Fred", MACHINE_NOT_WORKING ) -GAME( 1997, eggventr, 0, gameroom, eggventr, driver_device, 0, ROT0, "The Game Room", "Egg Venture (Release 10)", 0 ) -GAME( 1997, eggventr8, eggventr, gameroom, eggventr, driver_device, 0, ROT0, "The Game Room", "Egg Venture (Release 8)", 0 ) -GAME( 1997, eggventr7, eggventr, gameroom, eggventr, driver_device, 0, ROT0, "The Game Room", "Egg Venture (Release 7)", 0 ) -GAME( 1997, eggventr2, eggventr, gameroom, eggventr2, driver_device, 0, ROT0, "The Game Room", "Egg Venture (Release 2)", 0 ) -GAME( 1997, eggventra, eggventr, gameroom, eggventr, driver_device, 0, ROT0, "The Game Room (A.L. Australia license)", "Egg Venture (A.L. Release)", 0 ) -GAME( 1997, eggventrd, eggventr, gameroom, eggvntdx, driver_device, 0, ROT0, "The Game Room", "Egg Venture Deluxe", 0 ) +GAME( 1996, lethalj, 0, lethalj, lethalj, lethalj_state, 0, ROT0, "The Game Room", "Lethal Justice (Version 2.3)", 0 ) +GAME( 1996, franticf, 0, gameroom, franticf, lethalj_state, 0, ROT0, "The Game Room", "Frantic Fred", MACHINE_NOT_WORKING ) +GAME( 1997, eggventr, 0, gameroom, eggventr, lethalj_state, 0, ROT0, "The Game Room", "Egg Venture (Release 10)", 0 ) +GAME( 1997, eggventr8, eggventr, gameroom, eggventr, lethalj_state, 0, ROT0, "The Game Room", "Egg Venture (Release 8)", 0 ) +GAME( 1997, eggventr7, eggventr, gameroom, eggventr, lethalj_state, 0, ROT0, "The Game Room", "Egg Venture (Release 7)", 0 ) +GAME( 1997, eggventr2, eggventr, gameroom, eggventr2, lethalj_state, 0, ROT0, "The Game Room", "Egg Venture (Release 2)", 0 ) +GAME( 1997, eggventra, eggventr, gameroom, eggventr, lethalj_state, 0, ROT0, "The Game Room (A.L. Australia license)", "Egg Venture (A.L. Release)", 0 ) +GAME( 1997, eggventrd, eggventr, gameroom, eggvntdx, lethalj_state, 0, ROT0, "The Game Room", "Egg Venture Deluxe", 0 ) GAME( 1997, ripribit, 0, gameroom, ripribit, lethalj_state, ripribit, ROT0, "LAI Games", "Ripper Ribbit (Version 3.5)", 0 ) GAME( 1997, ripribita, ripribit, gameroom, ripribit, lethalj_state, ripribit, ROT0, "LAI Games", "Ripper Ribbit (Version 2.8.4)", 0 ) GAME( 1999, cfarm, 0, gameroom, cfarm, lethalj_state, cfarm, ROT90, "LAI Games", "Chicken Farm (Version 2.0)", 0 ) diff --git a/src/mame/drivers/lft.cpp b/src/mame/drivers/lft.cpp index e067ac93994..315a6bf97e5 100644 --- a/src/mame/drivers/lft.cpp +++ b/src/mame/drivers/lft.cpp @@ -19,9 +19,10 @@ public: : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_terminal(*this, "terminal") - {} + { + } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE16_MEMBER(term_w); DECLARE_READ16_MEMBER(keyin_r); DECLARE_READ16_MEMBER(status_r); @@ -67,7 +68,7 @@ READ16_MEMBER( lft_state::status_r ) return (m_term_data) ? 5 : 4; } -WRITE8_MEMBER( lft_state::kbd_put ) +void lft_state::kbd_put(u8 data) { m_term_data = data; } @@ -82,7 +83,7 @@ void lft_state::machine_reset() m_term_data = 0; } -static MACHINE_CONFIG_START( lft, lft_state ) +static MACHINE_CONFIG_START( lft ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80186, 4000000) // no idea MCFG_CPU_PROGRAM_MAP(lft_mem) @@ -90,7 +91,7 @@ static MACHINE_CONFIG_START( lft, lft_state ) /* video hardware */ MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(lft_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(lft_state, kbd_put)) MACHINE_CONFIG_END @@ -112,6 +113,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( ????, lft1510, 0, 0, lft, lft, driver_device, 0, "LFT", "LFT 1510", MACHINE_IS_SKELETON) -COMP( ????, lft1230, lft1510, 0, lft, lft, driver_device, 0, "LFT", "LFT 1230", MACHINE_IS_SKELETON) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( ????, lft1510, 0, 0, lft, lft, lft_state, 0, "LFT", "LFT 1510", MACHINE_IS_SKELETON) +COMP( ????, lft1230, lft1510, 0, lft, lft, lft_state, 0, "LFT", "LFT 1230", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/lg-dvd.cpp b/src/mame/drivers/lg-dvd.cpp index 6255b4f2f1d..e3aba7d3d0b 100644 --- a/src/mame/drivers/lg-dvd.cpp +++ b/src/mame/drivers/lg-dvd.cpp @@ -9,13 +9,15 @@ #include "emu.h" #include "cpu/mcs51/mcs51.h" -class lg_dvd_state : public driver_device { +class lg_dvd_state : public driver_device +{ public: lg_dvd_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - maincpu(*this, "maincpu") + : driver_device(mconfig, type, tag) + , maincpu(*this, "maincpu") { } +protected: required_device maincpu; }; @@ -26,7 +28,7 @@ static ADDRESS_MAP_START( lg_dvd_map, AS_PROGRAM, 8, lg_dvd_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) ADDRESS_MAP_END -static MACHINE_CONFIG_START( lg, lg_dvd_state ) +static MACHINE_CONFIG_START( lg ) MCFG_CPU_ADD( "maincpu", I80C52, XTAL_16MHz ) MCFG_CPU_PROGRAM_MAP( lg_dvd_map ) MACHINE_CONFIG_END @@ -39,4 +41,4 @@ ROM_START( lggp40 ) ROMX_LOAD( "firm-1.01.bin", 0x000000, 0x100000, CRC(28820e0c) SHA1(c5f2c1e14e6cff2e57c5196cabcebfaaff7284ce), ROM_BIOS(2) ) ROM_END -SYST( 2011, lggp40, 0, 0, lg, lg, driver_device, 0, "LG", "GP40NW10 dvd writer", MACHINE_NOT_WORKING|MACHINE_NO_SOUND_HW ) +SYST( 2011, lggp40, 0, 0, lg, lg, lg_dvd_state, 0, "LG", "GP40NW10 dvd writer", MACHINE_NOT_WORKING|MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/lgp.cpp b/src/mame/drivers/lgp.cpp index c9ccb9c9d93..a18a7cdf148 100644 --- a/src/mame/drivers/lgp.cpp +++ b/src/mame/drivers/lgp.cpp @@ -397,7 +397,7 @@ PALETTE_INIT_MEMBER(lgp_state, lgp) } /* DRIVER */ -static MACHINE_CONFIG_START( lgp, lgp_state ) +static MACHINE_CONFIG_START( lgp ) /* main cpu */ MCFG_CPU_ADD("maincpu", Z80, CPU_PCB_CLOCK) MCFG_CPU_PROGRAM_MAP(main_program_map) @@ -609,6 +609,6 @@ DRIVER_INIT_MEMBER(lgp_state,lgp) { } -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS) */ -GAME( 1983, lgp, 0, lgp, lgp, lgp_state, lgp, ROT0, "Taito", "Laser Grand Prix", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME( 1983, lgpalt, lgp, lgp, lgp, lgp_state, lgp, ROT0, "Taito", "Laser Grand Prix (alternate)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS) */ +GAME( 1983, lgp, 0, lgp, lgp, lgp_state, lgp, ROT0, "Taito", "Laser Grand Prix", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME( 1983, lgpalt, lgp, lgp, lgp, lgp_state, lgp, ROT0, "Taito", "Laser Grand Prix (alternate)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) diff --git a/src/mame/drivers/liberate.cpp b/src/mame/drivers/liberate.cpp index d4c810d4eb6..12f62bc03c5 100644 --- a/src/mame/drivers/liberate.cpp +++ b/src/mame/drivers/liberate.cpp @@ -728,7 +728,7 @@ MACHINE_RESET_MEMBER(liberate_state,liberate) m_bank = 0; } -static MACHINE_CONFIG_START( liberate_base, liberate_state ) +static MACHINE_CONFIG_START( liberate_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",DECO16, 2000000) @@ -815,7 +815,7 @@ static MACHINE_CONFIG_DERIVED( prosoccr, liberate_base ) MCFG_VIDEO_START_OVERRIDE(liberate_state,prosoccr) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( prosport, liberate_state ) +static MACHINE_CONFIG_START( prosport ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", DECO16, 2000000) diff --git a/src/mame/drivers/liberatr.cpp b/src/mame/drivers/liberatr.cpp index 989b607e1fa..601fdc054a0 100644 --- a/src/mame/drivers/liberatr.cpp +++ b/src/mame/drivers/liberatr.cpp @@ -415,7 +415,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( liberatr, liberatr_state ) +static MACHINE_CONFIG_START( liberatr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/16) /* 1.25Mhz divided from 20Mhz master clock */ @@ -532,5 +532,5 @@ ROM_END * *************************************/ -GAME( 1982, liberatr, 0, liberatr, liberatr, driver_device, 0, ROT0, "Atari", "Liberator (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, liberatr2,liberatr, liberat2, liberatr, driver_device, 0, ROT0, "Atari", "Liberator (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, liberatr, 0, liberatr, liberatr, liberatr_state, 0, ROT0, "Atari", "Liberator (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, liberatr2,liberatr, liberat2, liberatr, liberatr_state, 0, ROT0, "Atari", "Liberator (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/limenko.cpp b/src/mame/drivers/limenko.cpp index aa249e7be94..b4157858677 100644 --- a/src/mame/drivers/limenko.cpp +++ b/src/mame/drivers/limenko.cpp @@ -730,7 +730,7 @@ GFXDECODE_END *****************************************************************************************************/ -static MACHINE_CONFIG_START( limenko, limenko_state ) +static MACHINE_CONFIG_START( limenko ) MCFG_CPU_ADD("maincpu", E132XN, 20000000*4) /* 4x internal multiplier */ MCFG_CPU_PROGRAM_MAP(limenko_map) MCFG_CPU_IO_MAP(limenko_io_map) @@ -766,7 +766,7 @@ static MACHINE_CONFIG_START( limenko, limenko_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( spotty, limenko_state ) +static MACHINE_CONFIG_START( spotty ) MCFG_CPU_ADD("maincpu", GMS30C2232, 20000000) /* 20 MHz, no internal multiplier */ MCFG_CPU_PROGRAM_MAP(spotty_map) MCFG_CPU_IO_MAP(spotty_io_map) @@ -796,7 +796,7 @@ static MACHINE_CONFIG_START( spotty, limenko_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 4000000 / 4 , OKIM6295_PIN7_HIGH) //? + MCFG_OKIM6295_ADD("oki", 4000000 / 4 , PIN7_HIGH) //? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1161,10 +1161,10 @@ DRIVER_INIT_MEMBER(limenko_state,spotty) save_item(NAME(m_spotty_sound_cmd)); } -GAME( 2000, dynabomb, 0, limenko, sb2003, limenko_state, dynabomb, ROT0, "Limenko", "Dynamite Bomber (Korea, Rev 1.5)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2000, legendoh, 0, limenko, legendoh, limenko_state, legendoh, ROT0, "Limenko", "Legend of Heroes", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2003, sb2003, 0, limenko, sb2003, limenko_state, sb2003, ROT0, "Limenko", "Super Bubble 2003 (World, Ver 1.0)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2003, sb2003a, sb2003, limenko, sb2003, limenko_state, sb2003, ROT0, "Limenko", "Super Bubble 2003 (Asia, Ver 1.0)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2000, dynabomb, 0, limenko, sb2003, limenko_state, dynabomb, ROT0, "Limenko", "Dynamite Bomber (Korea, Rev 1.5)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2000, legendoh, 0, limenko, legendoh, limenko_state, legendoh, ROT0, "Limenko", "Legend of Heroes", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2003, sb2003, 0, limenko, sb2003, limenko_state, sb2003, ROT0, "Limenko", "Super Bubble 2003 (World, Ver 1.0)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2003, sb2003a, sb2003, limenko, sb2003, limenko_state, sb2003, ROT0, "Limenko", "Super Bubble 2003 (Asia, Ver 1.0)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // this game only uses the same graphics chip used in Limenko's system -GAME( 2001, spotty, 0, spotty, spotty, limenko_state, spotty, ROT0, "Prince Co.", "Spotty (Ver. 2.0.2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2001, spotty, 0, spotty, spotty, limenko_state, spotty, ROT0, "Prince Co.", "Spotty (Ver. 2.0.2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lindbergh.cpp b/src/mame/drivers/lindbergh.cpp index 6bcd5e0cfb3..2ce6da999d2 100644 --- a/src/mame/drivers/lindbergh.cpp +++ b/src/mame/drivers/lindbergh.cpp @@ -389,7 +389,7 @@ void lindbergh_state::machine_reset() { } -static MACHINE_CONFIG_START(lindbergh, lindbergh_state) +static MACHINE_CONFIG_START(lindbergh) MCFG_CPU_ADD("maincpu", PENTIUM4, 28000000U*5) /* Actually Celeron D at 2,8 GHz */ MCFG_PCI_ROOT_ADD( ":pci") @@ -609,22 +609,22 @@ ROM_START(lbvbiosu) DISK_IMAGE_READONLY("dvp-0021b", 0, SHA1(362ac028ba19ba4762678953a033034a5ee8ad53)) ROM_END -GAME(1999, lindbios, 0, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Sega Lindbergh Bios", MACHINE_IS_BIOS_ROOT) -GAME(2005, hotd4, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "House of the Dead 4 (Export) (Rev B)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2005, hotd4a, hotd4, lindbergh, 0, driver_device, 0, ROT0, "Sega", "House of the Dead 4 (Export) (Rev A)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2005, vf5, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Virtua Fighter 5 (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2006, abclimax, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "After Burner Climax (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2006, letsgoju, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Let's Go Jungle (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2006, outr2sdx, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "OutRun 2 SP SDX", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2006, psmash3, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Power Smash 3 / Virtua Tennis 3 (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2006, vtennis3, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Virtua Tennis 3 (Japan)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2007, 2spicy, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "2 Spicy", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2007, ghostsev, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Ghost Squad Evolution", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2007, initiad4, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Initial D4 (Rev D)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2007, initiad4c, initiad4, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Initial D4 (Rev C)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2007, segartv, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Sega Race-TV (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2008, hotdex, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "House of the Dead EX (Japan)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2008, primevah, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Primeval Hunt", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2008, rambo, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Rambo (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(2009, hummerxt, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "Hummer Extreme", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) -GAME(200?, lbvbiosu, lindbios, lindbergh, 0, driver_device, 0, ROT0, "Sega", "VBios updater", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(1999, lindbios, 0, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Sega Lindbergh Bios", MACHINE_IS_BIOS_ROOT) +GAME(2005, hotd4, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "House of the Dead 4 (Export) (Rev B)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2005, hotd4a, hotd4, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "House of the Dead 4 (Export) (Rev A)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2005, vf5, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Virtua Fighter 5 (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2006, abclimax, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "After Burner Climax (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2006, letsgoju, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Let's Go Jungle (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2006, outr2sdx, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "OutRun 2 SP SDX", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2006, psmash3, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Power Smash 3 / Virtua Tennis 3 (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2006, vtennis3, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Virtua Tennis 3 (Japan)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2007, 2spicy, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "2 Spicy", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2007, ghostsev, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Ghost Squad Evolution", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2007, initiad4, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Initial D4 (Rev D)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2007, initiad4c, initiad4, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Initial D4 (Rev C)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2007, segartv, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Sega Race-TV (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2008, hotdex, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "House of the Dead EX (Japan)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2008, primevah, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Primeval Hunt", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2008, rambo, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Rambo (Export)", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(2009, hummerxt, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "Hummer Extreme", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) +GAME(200?, lbvbiosu, lindbios, lindbergh, 0, lindbergh_state, 0, ROT0, "Sega", "VBios updater", MACHINE_NOT_WORKING|MACHINE_UNEMULATED_PROTECTION|MACHINE_NO_SOUND) diff --git a/src/mame/drivers/lisa.cpp b/src/mame/drivers/lisa.cpp index fb67ddd07f8..05b196400dc 100644 --- a/src/mame/drivers/lisa.cpp +++ b/src/mame/drivers/lisa.cpp @@ -95,7 +95,7 @@ static const floppy_interface lisa_floppy_interface = ***************************************************************************/ /* Lisa1 and Lisa 2 machine */ -static MACHINE_CONFIG_START( lisa, lisa_state ) +static MACHINE_CONFIG_START( lisa ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 5093760) /* 20.37504 MHz / 4 */ MCFG_CPU_PROGRAM_MAP(lisa_map) @@ -479,8 +479,8 @@ ROM_END Lisa drivers boot MacWorks, but do not boot the Lisa OS, which is why we set the MACHINE_NOT_WORKING flag... */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1983, lisa, 0, 0, lisa, lisa, lisa_state, lisa2, "Apple Computer", "Lisa", MACHINE_NOT_WORKING ) -COMP( 1984, lisa2, 0, 0, lisa, lisa, lisa_state, lisa2, "Apple Computer", "Lisa2", MACHINE_NOT_WORKING ) -COMP( 1984, lisa210, lisa2, 0, lisa210, lisa, lisa_state, lisa210, "Apple Computer", "Lisa2/10", MACHINE_NOT_WORKING ) -COMP( 1985, macxl, lisa2, 0, macxl, lisa, lisa_state, mac_xl, "Apple Computer", "Macintosh XL", /*MACHINE_NOT_WORKING*/0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1983, lisa, 0, 0, lisa, lisa, lisa_state, lisa2, "Apple Computer", "Lisa", MACHINE_NOT_WORKING ) +COMP( 1984, lisa2, 0, 0, lisa, lisa, lisa_state, lisa2, "Apple Computer", "Lisa2", MACHINE_NOT_WORKING ) +COMP( 1984, lisa210, lisa2, 0, lisa210, lisa, lisa_state, lisa210, "Apple Computer", "Lisa2/10", MACHINE_NOT_WORKING ) +COMP( 1985, macxl, lisa2, 0, macxl, lisa, lisa_state, mac_xl, "Apple Computer", "Macintosh XL", /*MACHINE_NOT_WORKING*/0 ) diff --git a/src/mame/drivers/littlerb.cpp b/src/mame/drivers/littlerb.cpp index 7e17e2abc02..ceb23f816d7 100644 --- a/src/mame/drivers/littlerb.cpp +++ b/src/mame/drivers/littlerb.cpp @@ -248,7 +248,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(littlerb_state::littlerb_sound_step_cb) m_soundframe++; } -static MACHINE_CONFIG_START( littlerb, littlerb_state ) +static MACHINE_CONFIG_START( littlerb ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(littlerb_main) @@ -278,4 +278,4 @@ ROM_START( littlerb ) ROM_END -GAME( 1994, littlerb, 0, littlerb, littlerb, driver_device, 0, ROT0, "TCH", "Little Robin", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND ) +GAME( 1994, littlerb, 0, littlerb, littlerb, littlerb_state, 0, ROT0, "TCH", "Little Robin", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/lkage.cpp b/src/mame/drivers/lkage.cpp index a9d9a413903..46a9b723d3b 100644 --- a/src/mame/drivers/lkage.cpp +++ b/src/mame/drivers/lkage.cpp @@ -505,7 +505,7 @@ void lkage_state::machine_reset() } -static MACHINE_CONFIG_START( lkage, lkage_state ) +static MACHINE_CONFIG_START( lkage ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK) @@ -554,7 +554,7 @@ static MACHINE_CONFIG_START( lkage, lkage_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lkageb, lkage_state ) +static MACHINE_CONFIG_START( lkageb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MAIN_CPU_CLOCK) @@ -935,10 +935,10 @@ DRIVER_INIT_MEMBER(lkage_state,bygone) m_sprite_dx=1; } -GAME( 1984, lkage, 0, lkage, lkage, lkage_state, lkage, ROT0, "Taito Corporation", "The Legend of Kage", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, lkageo, lkage, lkage, lkage, lkage_state, lkage, ROT0, "Taito Corporation", "The Legend of Kage (older)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, lkageoo, lkage, lkage, lkage, lkage_state, lkage, ROT0, "Taito Corporation", "The Legend of Kage (oldest)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, lkageb, lkage, lkageb, lkageb, lkage_state, lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, lkageb2, lkage, lkageb, lkageb, lkage_state, lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, lkageb3, lkage, lkageb, lkageb, lkage_state, lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, bygone, 0, lkage, bygone, lkage_state, bygone, ROT0, "Taito Corporation", "Bygone (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, lkage, 0, lkage, lkage, lkage_state, lkage, ROT0, "Taito Corporation", "The Legend of Kage", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, lkageo, lkage, lkage, lkage, lkage_state, lkage, ROT0, "Taito Corporation", "The Legend of Kage (older)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, lkageoo, lkage, lkage, lkage, lkage_state, lkage, ROT0, "Taito Corporation", "The Legend of Kage (oldest)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, lkageb, lkage, lkageb, lkageb, lkage_state, lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, lkageb2, lkage, lkageb, lkageb, lkage_state, lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, lkageb3, lkage, lkageb, lkageb, lkage_state, lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, bygone, 0, lkage, bygone, lkage_state, bygone, ROT0, "Taito Corporation", "Bygone (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/llc.cpp b/src/mame/drivers/llc.cpp index 62d593778c5..ade1d3c994c 100644 --- a/src/mame/drivers/llc.cpp +++ b/src/mame/drivers/llc.cpp @@ -125,24 +125,21 @@ static INPUT_PORTS_START( llc2 ) INPUT_PORTS_END -WRITE8_MEMBER( llc_state::kbd_put ) +void llc_state::kbd_put(u8 data) { - static uint8_t s1[16]={0x40, 0x1e, 0x12, 0x1b, 0x19, 0x14, 0x15, 0x1d, 0x16, 0x17, 0x1c, 0x3c, 0x3f, 0x3d, 0x3e, 0x10}; // 0x20 to 0x2F - static uint8_t s2[7] ={0x1a, 0x11, 0x7c, 0x13, 0x7b, 0x1f, 0x00}; // 0x3A to 0x40 - static uint8_t s3[6] ={0x5c, 0x00, 0x5b, 0x7e, 0x00, 0x5e}; // 0x5B to 0x60 + static constexpr uint8_t s1[16]={0x40, 0x1e, 0x12, 0x1b, 0x19, 0x14, 0x15, 0x1d, 0x16, 0x17, 0x1c, 0x3c, 0x3f, 0x3d, 0x3e, 0x10}; // 0x20 to 0x2F + static constexpr uint8_t s2[7] ={0x1a, 0x11, 0x7c, 0x13, 0x7b, 0x1f, 0x00}; // 0x3A to 0x40 + static constexpr uint8_t s3[6] ={0x5c, 0x00, 0x5b, 0x7e, 0x00, 0x5e}; // 0x5B to 0x60 m_term_data = data; if ((data >= 0x20) && (data <= 0x2f)) m_term_data = s1[data-0x20]; - else - if ((data >= 0x3a) && (data <= 0x40)) + else if ((data >= 0x3a) && (data <= 0x40)) m_term_data = s2[data-0x3a]; - else - if ((data >= 0x5b) && (data <= 0x60)) + else if ((data >= 0x5b) && (data <= 0x60)) m_term_data = s3[data-0x5b]; - else - if (data >= 0x7b) + else if (data >= 0x7b) m_term_data = 0; if (m_term_data) @@ -198,7 +195,7 @@ static GFXDECODE_START( llc2 ) GFXDECODE_END /* Machine driver */ -static MACHINE_CONFIG_START( llc1, llc_state ) +static MACHINE_CONFIG_START( llc1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3MHz) MCFG_Z80_DAISY_CHAIN(llc1_daisy_chain) @@ -239,10 +236,10 @@ static MACHINE_CONFIG_START( llc1, llc_state ) MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg3)) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(llc_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(llc_state, kbd_put)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( llc2, llc_state ) +static MACHINE_CONFIG_START( llc2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3MHz) MCFG_Z80_DAISY_CHAIN(llc2_daisy_chain) @@ -310,6 +307,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, llc1, 0, 0, llc1, llc1, llc_state, llc1, "SCCH", "LLC-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1984, llc2, llc1, 0, llc2, llc2, llc_state, llc2, "SCCH", "LLC-2", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, llc1, 0, 0, llc1, llc1, llc_state, llc1, "SCCH", "LLC-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 1984, llc2, llc1, 0, llc2, llc2, llc_state, llc2, "SCCH", "LLC-2", 0 ) diff --git a/src/mame/drivers/lockon.cpp b/src/mame/drivers/lockon.cpp index a1e45abf147..9dc1be38a12 100644 --- a/src/mame/drivers/lockon.cpp +++ b/src/mame/drivers/lockon.cpp @@ -480,7 +480,7 @@ void lockon_state::machine_reset() m_main_inten = 0; } -static MACHINE_CONFIG_START( lockon, lockon_state ) +static MACHINE_CONFIG_START( lockon ) MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(main_v30) @@ -504,7 +504,7 @@ static MACHINE_CONFIG_START( lockon, lockon_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(lockon_state, screen_update_lockon) - MCFG_SCREEN_VBLANK_DRIVER(lockon_state, screen_eof_lockon) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(lockon_state, screen_vblank_lockon)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", lockon) @@ -778,5 +778,5 @@ ROM_END * *************************************/ -GAME( 1986, lockon, 0, lockon, lockon, driver_device, 0, ROT0, "Tatsumi", "Lock-On (rev. E)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lockonc, lockon, lockon, lockone, driver_device, 0, ROT0, "Tatsumi", "Lock-On (rev. C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lockon, 0, lockon, lockon, lockon_state, 0, ROT0, "Tatsumi", "Lock-On (rev. E)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lockonc, lockon, lockon, lockone, lockon_state, 0, ROT0, "Tatsumi", "Lock-On (rev. C)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lola8a.cpp b/src/mame/drivers/lola8a.cpp index def2ca69321..7a22a1d7f13 100644 --- a/src/mame/drivers/lola8a.cpp +++ b/src/mame/drivers/lola8a.cpp @@ -248,7 +248,7 @@ WRITE_LINE_MEMBER(lola8a_state::crtc_vsync) m_maincpu->set_input_line(I8085_RST75_LINE, state? ASSERT_LINE : CLEAR_LINE); } -static MACHINE_CONFIG_START( lola8a, lola8a_state ) +static MACHINE_CONFIG_START( lola8a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_4_9152MHz) MCFG_CPU_PROGRAM_MAP(lola8a_mem) @@ -294,5 +294,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, lola8a, 0, 0, lola8a, lola8a, driver_device, 0, "Institut Ivo Lola Ribar", "Lola 8A", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1986, lola8a, 0, 0, lola8a, lola8a, lola8a_state, 0, "Institut Ivo Lola Ribar", "Lola 8A", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/looping.cpp b/src/mame/drivers/looping.cpp index 005b631a11a..d3e82a0eacb 100644 --- a/src/mame/drivers/looping.cpp +++ b/src/mame/drivers/looping.cpp @@ -621,7 +621,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( looping, looping_state ) +static MACHINE_CONFIG_START( looping ) // CPU TMS9995, standard variant; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9995, MAIN_CPU_CLOCK, looping_map, looping_io_map) diff --git a/src/mame/drivers/lordgun.cpp b/src/mame/drivers/lordgun.cpp index 999097f95d5..15f60657248 100644 --- a/src/mame/drivers/lordgun.cpp +++ b/src/mame/drivers/lordgun.cpp @@ -632,7 +632,7 @@ void lordgun_state::machine_start() save_item(NAME(m_whitescreen)); } -static MACHINE_CONFIG_START( lordgun, lordgun_state ) +static MACHINE_CONFIG_START( lordgun ) MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz / 2) MCFG_CPU_PROGRAM_MAP(lordgun_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", lordgun_state, irq4_line_hold) @@ -679,12 +679,12 @@ static MACHINE_CONFIG_START( lordgun, lordgun_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_20MHz / 20, OKIM6295_PIN7_HIGH) // ? 5MHz can't be right! + MCFG_OKIM6295_ADD("oki", XTAL_20MHz / 20, PIN7_HIGH) // ? 5MHz can't be right! MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( aliencha, lordgun_state ) +static MACHINE_CONFIG_START( aliencha ) MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz / 2) MCFG_CPU_PROGRAM_MAP(aliencha_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", lordgun_state, irq4_line_hold) @@ -732,10 +732,10 @@ static MACHINE_CONFIG_START( aliencha, lordgun_state ) MCFG_YMF278B_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_20MHz / 20, OKIM6295_PIN7_HIGH) // ? 5MHz can't be right + MCFG_OKIM6295_ADD("oki", XTAL_20MHz / 20, PIN7_HIGH) // ? 5MHz can't be right MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki2", XTAL_20MHz / 20, OKIM6295_PIN7_HIGH) // ? 5MHz can't be right + MCFG_OKIM6295_ADD("oki2", XTAL_20MHz / 20, PIN7_HIGH) // ? 5MHz can't be right MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1080,6 +1080,6 @@ DRIVER_INIT_MEMBER(lordgun_state, aliencha) ***************************************************************************/ -GAME( 1994, lordgun, 0, lordgun, lordgun, lordgun_state, lordgun, ROT0, "IGS", "Lord of Gun (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, aliencha, 0, aliencha, aliencha, driver_device, 0, ROT0, "IGS", "Alien Challenge (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, alienchac, aliencha, aliencha, aliencha, driver_device, 0, ROT0, "IGS", "Alien Challenge (China)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, lordgun, 0, lordgun, lordgun, lordgun_state, lordgun, ROT0, "IGS", "Lord of Gun (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, aliencha, 0, aliencha, aliencha, lordgun_state, 0, ROT0, "IGS", "Alien Challenge (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, alienchac, aliencha, aliencha, aliencha, lordgun_state, 0, ROT0, "IGS", "Alien Challenge (China)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lsasquad.cpp b/src/mame/drivers/lsasquad.cpp index 7f981732f4a..93809d7a60d 100644 --- a/src/mame/drivers/lsasquad.cpp +++ b/src/mame/drivers/lsasquad.cpp @@ -560,7 +560,7 @@ MACHINE_RESET_MEMBER(lsasquad_state,lsasquad) } /* Note: lsasquad clock values are not verified */ -static MACHINE_CONFIG_START( lsasquad, lsasquad_state ) +static MACHINE_CONFIG_START( lsasquad ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK / 4) @@ -616,7 +616,7 @@ static MACHINE_CONFIG_DERIVED( storming, lsasquad ) MCFG_DEVICE_REMOVE("bmcu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( daikaiju, lsasquad_state ) +static MACHINE_CONFIG_START( daikaiju ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK / 4) @@ -786,6 +786,6 @@ ROM_START( daikaiju ) ROM_END -GAME( 1986, lsasquad, 0, lsasquad, lsasquad, driver_device, 0, ROT270, "Taito", "Land Sea Air Squad / Riku Kai Kuu Saizensen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1986, storming, lsasquad, storming, storming, driver_device, 0, ROT270, "bootleg", "Storming Party / Riku Kai Kuu Saizensen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1986, daikaiju, 0, daikaiju, daikaiju, driver_device, 0, ROT270, "Taito", "Daikaiju no Gyakushu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lsasquad, 0, lsasquad, lsasquad, lsasquad_state, 0, ROT270, "Taito", "Land Sea Air Squad / Riku Kai Kuu Saizensen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, storming, lsasquad, storming, storming, lsasquad_state, 0, ROT270, "bootleg", "Storming Party / Riku Kai Kuu Saizensen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, daikaiju, 0, daikaiju, daikaiju, lsasquad_state, 0, ROT270, "Taito", "Daikaiju no Gyakushu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ltcasino.cpp b/src/mame/drivers/ltcasino.cpp index 6a61524c346..05df8f26cd7 100644 --- a/src/mame/drivers/ltcasino.cpp +++ b/src/mame/drivers/ltcasino.cpp @@ -651,7 +651,7 @@ uint32_t ltcasino_state::screen_update_ltcasino(screen_device &screen, bitmap_in } -static MACHINE_CONFIG_START( ltcasino, ltcasino_state ) +static MACHINE_CONFIG_START( ltcasino ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,2000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(ltcasino_map) @@ -728,6 +728,6 @@ DRIVER_INIT_MEMBER(ltcasino_state,mv4in1) -GAME( 1982, ltcasino, 0, ltcasino, ltcasino, driver_device, 0, ROT0, "Digital Controls Inc.", "Little Casino (older)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1983, mv4in1, ltcasino, ltcasino, mv4in1, ltcasino_state, mv4in1, ROT0, "Entertainment Enterprises, Ltd.", "Mini Vegas 4in1", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1984, ltcasinn, 0, ltcasino, ltcasinn, driver_device, 0, ROT0, "Digital Controls Inc.", "Little Casino (newer)", MACHINE_NOT_WORKING ) +GAME( 1982, ltcasino, 0, ltcasino, ltcasino, ltcasino_state, 0, ROT0, "Digital Controls Inc.", "Little Casino (older)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1983, mv4in1, ltcasino, ltcasino, mv4in1, ltcasino_state, mv4in1, ROT0, "Entertainment Enterprises, Ltd.", "Mini Vegas 4in1", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1984, ltcasinn, 0, ltcasino, ltcasinn, ltcasino_state, 0, ROT0, "Digital Controls Inc.", "Little Casino (newer)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ltd.cpp b/src/mame/drivers/ltd.cpp index 9607f6cf7ef..9d270503ab1 100644 --- a/src/mame/drivers/ltd.cpp +++ b/src/mame/drivers/ltd.cpp @@ -515,7 +515,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r ) } } -static MACHINE_CONFIG_START( ltd3, ltd_state ) +static MACHINE_CONFIG_START( ltd3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6802, XTAL_3_579545MHz) MCFG_CPU_PROGRAM_MAP(ltd3_map) @@ -531,7 +531,7 @@ static MACHINE_CONFIG_START( ltd3, ltd_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_r", ltd_state, timer_r, attotime::from_hz(500)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ltd4, ltd_state ) +static MACHINE_CONFIG_START( ltd4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6803, XTAL_3_579545MHz) // guess, no details available MCFG_CPU_PROGRAM_MAP(ltd4_map) @@ -590,12 +590,6 @@ ROM_START(hustlerp) ROM_RELOAD(0x0800, 0x0800) ROM_END -ROM_START(hustlerpa) - ROM_REGION(0x1000, "roms", 0) - ROM_LOAD("hustler_2.bin", 0x0000, 0x0800, CRC(83c79157) SHA1(286fd0c984870639fcd7d7b8f6a5a5ddabcddcf5)) - ROM_RELOAD(0x0800, 0x0800) -ROM_END - /*------------------------------------------------------------------- / Martian Queen /-------------------------------------------------------------------*/ @@ -749,7 +743,6 @@ GAME(1981, arizona, 0, ltd3, ltd3, ltd_state, atla_ltd, ROT0, "LTD", GAME(1981, atla_ltd, 0, ltd3, ltd3, ltd_state, atla_ltd, ROT0, "LTD", "Atlantis (LTD)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) GAME(1981, discodan, 0, ltd3, ltd3, ltd_state, atla_ltd, ROT0, "LTD", "Disco Dancing", MACHINE_IS_SKELETON_MECHANICAL) GAME(1981, hustlerp, 0, ltd3, ltd3, ltd_state, atla_ltd, ROT0, "LTD", "Hustler", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, hustlerpa, hustlerp, ltd3, ltd3, ltd_state, atla_ltd, ROT0, "LTD", "Hustler (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1981, kkongltd, 0, ltd3, ltd3, ltd_state, atla_ltd, ROT0, "LTD", "King Kong", MACHINE_IS_SKELETON_MECHANICAL) GAME(198?, vikngkng, 0, ltd3, ltd3, ltd_state, atla_ltd, ROT0, "LTD", "Viking King", MACHINE_IS_SKELETON_MECHANICAL) GAME(1981, force, 0, ltd3, ltd3, ltd_state, atla_ltd, ROT0, "LTD", "Force", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/luckgrln.cpp b/src/mame/drivers/luckgrln.cpp index d11ee713476..7679bc041e5 100644 --- a/src/mame/drivers/luckgrln.cpp +++ b/src/mame/drivers/luckgrln.cpp @@ -71,7 +71,7 @@ Other notes Has some optocouplers, high voltage drivers, and what looks like additional - I/O conenctors. + I/O connectors. Reset switch cuts power supply going to Video/Work RAM. @@ -86,7 +86,7 @@ #include "speaker.h" #include "luckgrln.lh" - +#include "7smash.lh" class luckgrln_state : public driver_device { @@ -757,23 +757,23 @@ static INPUT_PORTS_START( luckgrln ) PORT_START("DSW3") PORT_DIPNAME( 0x07, 0x04, "Key In" ) - PORT_DIPSETTING( 0x07, "1 Pulse / 5 Credits" ) - PORT_DIPSETTING( 0x06, "1 Pulse / 10 Credits" ) - PORT_DIPSETTING( 0x05, "1 Pulse / 50 Credits" ) - PORT_DIPSETTING( 0x04, "1 Pulse / 100 Credits" ) - PORT_DIPSETTING( 0x03, "1 Pulse / 200 Credits" ) - PORT_DIPSETTING( 0x02, "1 Pulse / 300 Credits" ) - PORT_DIPSETTING( 0x01, "1 Pulse / 500 Credits" ) - PORT_DIPSETTING( 0x00, "1 Pulse / 1000 Credits" ) + PORT_DIPSETTING( 0x07, "1 Pulse/5 Credits" ) + PORT_DIPSETTING( 0x06, "1 Pulse/10 Credits" ) + PORT_DIPSETTING( 0x05, "1 Pulse/50 Credits" ) + PORT_DIPSETTING( 0x04, "1 Pulse/100 Credits" ) + PORT_DIPSETTING( 0x03, "1 Pulse/200 Credits" ) + PORT_DIPSETTING( 0x02, "1 Pulse/300 Credits" ) + PORT_DIPSETTING( 0x01, "1 Pulse/500 Credits" ) + PORT_DIPSETTING( 0x00, "1 Pulse/1000 Credits" ) PORT_DIPNAME( 0x38, 0x10, DEF_STR( Coin_A ) ) PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x28, DEF_STR( 1C_4C ) ) PORT_DIPSETTING( 0x20, DEF_STR( 1C_5C ) ) PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x10, "1 Coin / 10 Credits" ) - PORT_DIPSETTING( 0x08, "1 Coin / 25 Credits" ) - PORT_DIPSETTING( 0x00, "1 Coin / 50 Credits" ) + PORT_DIPSETTING( 0x10, "1 Coin/10 Credits" ) + PORT_DIPSETTING( 0x08, "1 Coin/25 Credits" ) + PORT_DIPSETTING( 0x00, "1 Coin/50 Credits" ) PORT_DIPNAME( 0x40, 0x40, "DSW3-40" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -783,9 +783,9 @@ static INPUT_PORTS_START( luckgrln ) PORT_START("DSW4") PORT_DIPNAME( 0x0f, 0x04, "Coin C" ) - PORT_DIPSETTING( 0x0f, "10 Coins / 1 Credit" ) + PORT_DIPSETTING( 0x0f, "10 Coins/1 Credit" ) PORT_DIPSETTING( 0x0e, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x0d, "5 Coins / 2 Credits" ) + PORT_DIPSETTING( 0x0d, "5 Coins/2 Credits" ) PORT_DIPSETTING( 0x0c, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0b, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x0a, DEF_STR( 2C_1C ) ) @@ -794,20 +794,20 @@ static INPUT_PORTS_START( luckgrln ) PORT_DIPSETTING( 0x07, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x06, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0x05, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x04, "1 Coin / 10 Credits" ) - PORT_DIPSETTING( 0x03, "1 Coin / 20 Credits" ) - PORT_DIPSETTING( 0x02, "1 Coin / 25 Credits" ) - PORT_DIPSETTING( 0x01, "1 Coin / 50 Credits" ) - PORT_DIPSETTING( 0x00, "1 Coin / 100 Credits" ) + PORT_DIPSETTING( 0x04, "1 Coin/10 Credits" ) + PORT_DIPSETTING( 0x03, "1 Coin/20 Credits" ) + PORT_DIPSETTING( 0x02, "1 Coin/25 Credits" ) + PORT_DIPSETTING( 0x01, "1 Coin/50 Credits" ) + PORT_DIPSETTING( 0x00, "1 Coin/100 Credits" ) PORT_DIPNAME( 0x70, 0x10, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x70, "10 Coins / 1 Credit" ) + PORT_DIPSETTING( 0x70, "10 Coins/1 Credit" ) PORT_DIPSETTING( 0x60, DEF_STR( 9C_1C ) ) PORT_DIPSETTING( 0x50, DEF_STR( 6C_1C ) ) PORT_DIPSETTING( 0x40, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x30, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x10, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, "1 Coin / 200 Credits" ) + PORT_DIPSETTING( 0x00, "1 Coin/200 Credits" ) PORT_DIPNAME( 0x80, 0x80, "DSW4-80" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -838,96 +838,96 @@ static INPUT_PORTS_START( luckgrln ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END + static INPUT_PORTS_START( _7smash ) PORT_START("DSW1") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_DIPNAME( 0x01, 0x01, "Reel Speed" ) + PORT_DIPSETTING( 0x01, DEF_STR( High ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Low ) ) + PORT_DIPNAME( 0x02, 0x02, "Renchan Pattern" ) + PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) + PORT_DIPNAME( 0x0c, 0x0c, "Key In Value" ) + PORT_DIPSETTING( 0x00, "200" ) + PORT_DIPSETTING( 0x04, "100" ) + PORT_DIPSETTING( 0x08, "50" ) + PORT_DIPSETTING( 0x0c, "10" ) + PORT_DIPNAME( 0x70, 0x60, "Percentage" ) + PORT_DIPSETTING( 0x00, "-- (Invalid 1)" ) + PORT_DIPSETTING( 0x10, "-- (Invalid 2)" ) + PORT_DIPSETTING( 0x20, "-- (Invalid 3)" ) + PORT_DIPSETTING( 0x30, "80%" ) + PORT_DIPSETTING( 0x40, "85%" ) + PORT_DIPSETTING( 0x50, "90%" ) + PORT_DIPSETTING( 0x60, "95%" ) + PORT_DIPSETTING( 0x70, "105%" ) + PORT_DIPNAME( 0x80, 0x80, "Reset Mode" ) + PORT_DIPSETTING( 0x80, "Auto" ) + PORT_DIPSETTING( 0x00, "Manual" ) PORT_START("DSW2") - PORT_DIPNAME( 0x01, 0x01, "DSW2" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x03, 0x03, "Payout Mode" ) + PORT_DIPSETTING( 0x00, "0" ) + PORT_DIPSETTING( 0x01, "1" ) + PORT_DIPSETTING( 0x02, "2" ) + PORT_DIPSETTING( 0x03, "3" ) + PORT_DIPNAME( 0x04, 0x04, "Coin Sw Active" ) + PORT_DIPSETTING( 0x04, DEF_STR( Low ) ) + PORT_DIPSETTING( 0x00, DEF_STR( High ) ) + PORT_DIPNAME( 0x18, 0x00, "Hopper Limit" ) + PORT_DIPSETTING( 0x00, "Unlimited" ) + PORT_DIPSETTING( 0x08, "1000" ) + PORT_DIPSETTING( 0x10, "500" ) + PORT_DIPSETTING( 0x18, "300" ) + PORT_DIPNAME( 0x60, 0x60, "Panel Type" ) + PORT_DIPSETTING( 0x00, "D" ) + PORT_DIPSETTING( 0x20, "C" ) + PORT_DIPSETTING( 0x40, "B" ) + PORT_DIPSETTING( 0x60, "A" ) // inputs and layout are for this Panel Type only, ToDo: expand with conditional inputs + PORT_DIPNAME( 0x80, 0x80, "Alt. Test" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - + PORT_START("DSW3") - PORT_DIPNAME( 0x01, 0x01, "DSW3" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x0c, "10 Coins/1 Credit" ) + PORT_DIPSETTING( 0x08, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) + PORT_DIPNAME( 0xf0, 0x00, "Coin C" ) + PORT_DIPSETTING( 0x00, "1 Coin/200 Credits" ) + PORT_DIPSETTING( 0x10, "1 Coin/100 Credits" ) + PORT_DIPSETTING( 0x20, "1 Coin/50 Credits" ) + PORT_DIPSETTING( 0x30, "1 Coin/25 Credits" ) + PORT_DIPSETTING( 0x40, "1 Coin/20 Credits" ) + PORT_DIPSETTING( 0x50, "1 Coin/10 Credits" ) + PORT_DIPSETTING( 0x60, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x70, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x90, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0xa0, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0xb0, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0xc0, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0xd0, "5 Coins/2 Credits" ) + PORT_DIPSETTING( 0xe0, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0xf0, "10 Coins/1 Credit" ) + PORT_START("DSW4") - PORT_DIPNAME( 0x01, 0x01, "DSW4" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("DSW5") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Slot 3 / Odds") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Slot 2 / Bet") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Slot 1") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Stop 3 / Odds") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop 2 / Bet") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Stop 1") PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN1") @@ -986,7 +986,7 @@ INTERRUPT_GEN_MEMBER(luckgrln_state::luckgrln_irq) m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( luckgrln, luckgrln_state ) +static MACHINE_CONFIG_START( luckgrln ) MCFG_CPU_ADD("maincpu", Z180,8000000) MCFG_CPU_PROGRAM_MAP(mainmap) MCFG_CPU_IO_MAP(portmap) @@ -1092,8 +1092,8 @@ ROM_END /********************************************* * Game Drivers * -********************************************** +**********************************************/ - YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1991, luckgrln, 0, luckgrln, luckgrln, luckgrln_state, luckgrln, ROT0, "Wing Co., Ltd.", "Lucky Girl (newer Z180 based hardware)", MACHINE_NO_SOUND, layout_luckgrln ) -GAMEL( 1993, 7smash, 0, _7smash, _7smash, driver_device, 0, ROT0, "Sovic", "7 Smash", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_luckgrln ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULL NAME FLAGS LAYOUT +GAMEL( 1991, luckgrln, 0, luckgrln, luckgrln, luckgrln_state, luckgrln, ROT0, "Wing Co., Ltd.", "Lucky Girl (newer Z180 based hardware)", MACHINE_NO_SOUND, layout_luckgrln ) +GAMEL( 1993, 7smash, 0, _7smash, _7smash, luckgrln_state, 0, ROT0, "Sovic", "7 Smash", MACHINE_NO_SOUND, layout_7smash ) diff --git a/src/mame/drivers/lucky74.cpp b/src/mame/drivers/lucky74.cpp index dd49c52350f..e5d048f1372 100644 --- a/src/mame/drivers/lucky74.cpp +++ b/src/mame/drivers/lucky74.cpp @@ -1461,7 +1461,7 @@ WRITE_LINE_MEMBER(lucky74_state::lucky74_adpcm_int) * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( lucky74, lucky74_state ) +static MACHINE_CONFIG_START( lucky74 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, C_06B49P_CLKOUT_03) /* 3 MHz. */ @@ -1526,7 +1526,7 @@ static MACHINE_CONFIG_START( lucky74, lucky74_state ) MCFG_SOUND_ADD("msm", MSM5205, C_06B49P_CLKOUT_06) /* 375 kHz. */ MCFG_MSM5205_VCLK_CB(WRITELINE(lucky74_state, lucky74_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END @@ -1743,10 +1743,10 @@ ROM_END /********************************************* * Game Drivers * -********************************************** +**********************************************/ - YEAR NAME PARENT MACHINE INPUT STATS INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1988, lucky74, 0, lucky74, lucky74, driver_device, 0, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 1)", 0, layout_lucky74 ) -GAMEL( 1988, lucky74a, lucky74, lucky74, lucky74a, driver_device, 0, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 3)", 0, layout_lucky74 ) -GAMEL( 1988, lucky74b, lucky74, lucky74, lucky74, driver_device, 0, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 2)", MACHINE_NOT_WORKING, layout_lucky74 ) -GAME( 1989, excitbj, 0, lucky74, excitbj, driver_device, 0, ROT0, "Sega", "Exciting Black Jack", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATS INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1988, lucky74, 0, lucky74, lucky74, lucky74_state, 0, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 1)", 0, layout_lucky74 ) +GAMEL( 1988, lucky74a, lucky74, lucky74, lucky74a, lucky74_state, 0, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 3)", 0, layout_lucky74 ) +GAMEL( 1988, lucky74b, lucky74, lucky74, lucky74, lucky74_state, 0, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 2)", MACHINE_NOT_WORKING, layout_lucky74 ) +GAME( 1989, excitbj, 0, lucky74, excitbj, lucky74_state, 0, ROT0, "Sega", "Exciting Black Jack", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/lvcards.cpp b/src/mame/drivers/lvcards.cpp index 5d3b6bb70fc..e72db16f15a 100644 --- a/src/mame/drivers/lvcards.cpp +++ b/src/mame/drivers/lvcards.cpp @@ -451,7 +451,7 @@ GFXDECODE_END /* Sound Interfaces */ -static MACHINE_CONFIG_START( lvcards, lvcards_state ) +static MACHINE_CONFIG_START( lvcards ) // basic machine hardware MCFG_CPU_ADD("maincpu",Z80, 18432000/4) // unknown frequency, assume same as tehkanwc.cpp MCFG_CPU_PROGRAM_MAP(lvcards_map) @@ -564,6 +564,6 @@ ROM_START( ponttehk ) ROM_LOAD( "pon24s10.001", 0x0200, 0x0100, CRC(c64ecee8) SHA1(80c9ec21e135235f7f2d41ce7900cf3904123823) ) /* blue component */ ROM_END -GAME( 1985, lvcards, 0, lvcards, lvcards, driver_device, 0, ROT0, "Tehkan", "Lovely Cards", 0 ) -GAME( 1985, lvpoker, lvcards, lvpoker, lvpoker, driver_device, 0, ROT0, "Tehkan", "Lovely Poker [BET]", 0 ) -GAME( 1985, ponttehk, 0, ponttehk, ponttehk, driver_device, 0, ROT0, "Tehkan", "Pontoon (Tehkan)", 0 ) +GAME( 1985, lvcards, 0, lvcards, lvcards, lvcards_state, 0, ROT0, "Tehkan", "Lovely Cards", 0 ) +GAME( 1985, lvpoker, lvcards, lvpoker, lvpoker, lvcards_state, 0, ROT0, "Tehkan", "Lovely Poker [BET]", 0 ) +GAME( 1985, ponttehk, 0, ponttehk, ponttehk, lvcards_state, 0, ROT0, "Tehkan", "Pontoon (Tehkan)", 0 ) diff --git a/src/mame/drivers/lviv.cpp b/src/mame/drivers/lviv.cpp index 6be2f7aa9a1..d8e589371d6 100644 --- a/src/mame/drivers/lviv.cpp +++ b/src/mame/drivers/lviv.cpp @@ -420,7 +420,7 @@ INPUT_PORTS_END /* machine definition */ -static MACHINE_CONFIG_START( lviv, lviv_state ) +static MACHINE_CONFIG_START( lviv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 2500000) MCFG_CPU_PROGRAM_MAP(lviv_mem) @@ -489,5 +489,5 @@ ROM_START(lviv) ROMX_LOAD("lvivp.bin", 0x10000, 0x4000, CRC(f171c282) SHA1(c7dc2bdb02400e6b5cdcc50040eb06f506a7ed84), ROM_BIOS(3)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, lviv, 0, 0, lviv, lviv, driver_device, 0, "V. I. Lenin", "PK-01 Lviv" , 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1989, lviv, 0, 0, lviv, lviv, lviv_state, 0, "V. I. Lenin", "PK-01 Lviv", 0 ) diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp index 65a063bd636..0aeb8016876 100644 --- a/src/mame/drivers/lwings.cpp +++ b/src/mame/drivers/lwings.cpp @@ -916,7 +916,7 @@ void lwings_state::machine_reset() m_adpcm = 0; } -static MACHINE_CONFIG_START( lwings, lwings_state ) +static MACHINE_CONFIG_START( lwings ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on PCB */ @@ -938,7 +938,7 @@ static MACHINE_CONFIG_START( lwings, lwings_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", lwings) @@ -972,7 +972,7 @@ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fball, lwings_state ) +static MACHINE_CONFIG_START( fball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) @@ -994,7 +994,7 @@ static MACHINE_CONFIG_START( fball, lwings_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) // the 16-pixel black border on left edge is correct, test mode actually uses that area MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", lwings) @@ -1007,7 +1007,7 @@ static MACHINE_CONFIG_START( fball, lwings_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, fball_oki_map) @@ -1041,7 +1041,7 @@ static MACHINE_CONFIG_DERIVED( trojan, lwings ) MCFG_GENERIC_LATCH_8_ADD("soundlatch2") MCFG_SOUND_ADD("5205", MSM5205, XTAL_384kHz) /* verified on PCB */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* slave mode */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* slave mode */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -1740,24 +1740,24 @@ DRIVER_INIT_MEMBER(lwings_state, avengersb) * *************************************/ -GAME( 1985, sectionz, 0, lwings, sectionz, driver_device, 0, ROT0, "Capcom", "Section Z (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, sectionza, sectionz, lwings, sectionz, driver_device, 0, ROT0, "Capcom", "Section Z (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sectionz, 0, lwings, sectionz, lwings_state, 0, ROT0, "Capcom", "Section Z (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sectionza, sectionz, lwings, sectionz, lwings_state, 0, ROT0, "Capcom", "Section Z (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwings, 0, lwings, lwings, driver_device, 0, ROT90, "Capcom", "Legendary Wings (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwings2, lwings, lwings, lwings, driver_device, 0, ROT90, "Capcom", "Legendary Wings (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwingsj, lwings, lwings, lwings, driver_device, 0, ROT90, "Capcom", "Ares no Tsubasa (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwingsb, lwings, lwings, lwingsb, driver_device, 0, ROT90, "bootleg", "Legendary Wings (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwings, 0, lwings, lwings, lwings_state, 0, ROT90, "Capcom", "Legendary Wings (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwings2, lwings, lwings, lwings, lwings_state, 0, ROT90, "Capcom", "Legendary Wings (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwingsj, lwings, lwings, lwings, lwings_state, 0, ROT90, "Capcom", "Ares no Tsubasa (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwingsb, lwings, lwings, lwingsb, lwings_state, 0, ROT90, "bootleg", "Legendary Wings (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojan, 0, trojan, trojanls, driver_device, 0, ROT0, "Capcom", "Trojan (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojana, trojan, trojan, trojanls, driver_device, 0, ROT0, "Capcom", "Trojan (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanr, trojan, trojan, trojan, driver_device, 0, ROT0, "Capcom (Romstar license)", "Trojan (Romstar)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanj, trojan, trojan, trojan, driver_device, 0, ROT0, "Capcom", "Tatakai no Banka (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanb, trojan, trojan, trojanls, driver_device, 0, ROT0, "bootleg", "Trojan (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojan, 0, trojan, trojanls, lwings_state, 0, ROT0, "Capcom", "Trojan (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojana, trojan, trojan, trojanls, lwings_state, 0, ROT0, "Capcom", "Trojan (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanr, trojan, trojan, trojan, lwings_state, 0, ROT0, "Capcom (Romstar license)", "Trojan (Romstar)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanj, trojan, trojan, trojan, lwings_state, 0, ROT0, "Capcom", "Tatakai no Banka (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanb, trojan, trojan, trojanls, lwings_state, 0, ROT0, "bootleg", "Trojan (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, avengers, 0, avengers, avengers, driver_device, 0, ROT90, "Capcom", "Avengers (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, avengers2, avengers, avengers, avengers, driver_device, 0, ROT90, "Capcom", "Avengers (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, buraiken, avengers, avengers, avengers, driver_device, 0, ROT90, "Capcom", "Hissatsu Buraiken (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, avengers, 0, avengers, avengers, lwings_state, 0, ROT90, "Capcom", "Avengers (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, avengers2, avengers, avengers, avengers, lwings_state, 0, ROT90, "Capcom", "Avengers (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, buraiken, avengers, avengers, avengers, lwings_state, 0, ROT90, "Capcom", "Hissatsu Buraiken (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, buraikenb, avengers, avengersb,avengers, lwings_state, avengersb, ROT90, "Capcom", "Hissatsu Buraiken (Japan, bootleg?)", MACHINE_SUPPORTS_SAVE ) // unprotected at least // cloned lwings hardware -GAME( 1992, fball, 0, fball, fball, driver_device, 0, ROT0, "FM Work", "Fire Ball (FM Work)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fball, 0, fball, fball, lwings_state, 0, ROT0, "FM Work", "Fire Ball (FM Work)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lwriter.cpp b/src/mame/drivers/lwriter.cpp index bffd21052d6..93cea41ba28 100644 --- a/src/mame/drivers/lwriter.cpp +++ b/src/mame/drivers/lwriter.cpp @@ -349,7 +349,7 @@ WRITE_LINE_MEMBER(lwriter_state::scc_int) #define CPU_CLK (XTAL_22_3210MHz / 2) // Based on pictures form here: http://picclick.co.uk/Apple-Postscript-LaserWriter-IINT-Printer-640-4105-M6009-Mainboard-282160713108.html#&gid=1&pid=7 #define RXC_CLK ((CPU_CLK - (87 * 16 * 70)) / 3) // Tuned to get 9600 baud according to manual, needs rework based on real hardware -static MACHINE_CONFIG_START( lwriter, lwriter_state ) +static MACHINE_CONFIG_START( lwriter ) MCFG_CPU_ADD("maincpu", M68000, CPU_CLK) MCFG_CPU_PROGRAM_MAP(maincpu_map) MCFG_SCC8530_ADD("scc", CPU_CLK, RXC_CLK, 0, RXC_CLK, 0) @@ -435,5 +435,5 @@ ROM_START(lwriter) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT, COMPANY, FULLNAME, FLAGS */ -CONS( 1988, lwriter, 0, 0, lwriter, lwriter, driver_device, 0, "Apple", "Apple Laser Writer II NT", MACHINE_IS_SKELETON) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1988, lwriter, 0, 0, lwriter, lwriter, lwriter_state, 0, "Apple Computer", "Apple Laser Writer II NT", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/lynx.cpp b/src/mame/drivers/lynx.cpp index 598ed06981c..6f0cd93a68a 100644 --- a/src/mame/drivers/lynx.cpp +++ b/src/mame/drivers/lynx.cpp @@ -75,7 +75,7 @@ void lynx_state::sound_cb() lynx_timer_count_down(1); } -static MACHINE_CONFIG_START( lynx, lynx_state ) +static MACHINE_CONFIG_START( lynx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65SC02, 4000000) /* vti core, integrated in vlsi, stz, but not bbr bbs */ MCFG_CPU_PROGRAM_MAP(lynx_mem) @@ -198,6 +198,6 @@ QUICKLOAD_LOAD_MEMBER( lynx_state, lynx ) ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1989, lynx, 0, 0, lynx, lynx, driver_device, 0, "Atari", "Lynx", MACHINE_SUPPORTS_SAVE ) -// CONS( 1991, lynx2, lynx, 0, lynx2, lynx, driver_device, 0, "Atari", "Lynx II", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1989, lynx, 0, 0, lynx, lynx, lynx_state, 0, "Atari", "Lynx", MACHINE_SUPPORTS_SAVE ) +// CONS( 1991, lynx2, lynx, 0, lynx2, lynx, lynx_state, 0, "Atari", "Lynx II", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/m10.cpp b/src/mame/drivers/m10.cpp index 8489e7787b3..1611df8ba6e 100644 --- a/src/mame/drivers/m10.cpp +++ b/src/mame/drivers/m10.cpp @@ -170,6 +170,8 @@ PALETTE_INIT_MEMBER(m10_state,m10) MACHINE_START_MEMBER(m10_state,m10) { + m_interrupt_timer = timer_alloc(TIMER_INTERRUPT); + save_item(NAME(m_bottomline)); save_item(NAME(m_flip)); save_item(NAME(m_last)); @@ -475,12 +477,12 @@ TIMER_CALLBACK_MEMBER(m10_state::interrupt_callback) if (param == 0) { m_maincpu->set_input_line(0, ASSERT_LINE); - timer_set(m_screen->time_until_pos(IREMM10_VBSTART + 16), TIMER_INTERRUPT, 1); + m_interrupt_timer->adjust(m_screen->time_until_pos(IREMM10_VBSTART + 16), 1); } if (param == 1) { m_maincpu->set_input_line(0, ASSERT_LINE); - timer_set(m_screen->time_until_pos(IREMM10_VBSTART + 24), TIMER_INTERRUPT, 2); + m_interrupt_timer->adjust(m_screen->time_until_pos(IREMM10_VBSTART + 24), 2); } if (param == -1) m_maincpu->set_input_line(0, CLEAR_LINE); @@ -502,7 +504,7 @@ void m10_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo INTERRUPT_GEN_MEMBER(m10_state::m11_interrupt) { device.execute().set_input_line(0, ASSERT_LINE); - //timer_set(m_screen->time_until_pos(IREMM10_VBEND), TIMER_INTERRUPT, -1); + //m_interrupt_timer->adjust(m_screen->time_until_pos(IREMM10_VBEND), -1); } INTERRUPT_GEN_MEMBER(m10_state::m10_interrupt) @@ -514,7 +516,7 @@ INTERRUPT_GEN_MEMBER(m10_state::m10_interrupt) INTERRUPT_GEN_MEMBER(m10_state::m15_interrupt) { device.execute().set_input_line(0, ASSERT_LINE); - timer_set(m_screen->time_until_pos(IREMM10_VBSTART + 1, 80), TIMER_INTERRUPT, -1); + m_interrupt_timer->adjust(m_screen->time_until_pos(IREMM10_VBSTART + 1, 80), -1); } /************************************* @@ -807,7 +809,7 @@ static const char *const m10_sample_names[] = * *************************************/ -static MACHINE_CONFIG_START( m10, m10_state ) +static MACHINE_CONFIG_START( m10 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,IREMM10_CPU_CLOCK) @@ -870,7 +872,7 @@ static MACHINE_CONFIG_DERIVED( m11, m10 ) /* sound hardware */ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( m15, m10_state ) +static MACHINE_CONFIG_START( m15 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,IREMM15_CPU_CLOCK) @@ -1043,10 +1045,10 @@ ROM_START( greenber ) ROM_LOAD( "gb9", 0x3000, 0x0400, CRC(c27b9ba3) SHA1(a2f4f0c4b61eb03bba13ae5d25dc01009a4f86ee) ) // ok ? ROM_END -GAME( 1979, andromed, 0, m11, skychut, m10_state, andromed, ROT270, "IPM", "Andromeda (Japan?)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, ipminvad, 0, m10, ipminvad, driver_device, 0, ROT270, "IPM", "IPM Invader", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, andromed, 0, m11, skychut, m10_state, andromed, ROT270, "IPM", "Andromeda (Japan?)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, ipminvad, 0, m10, ipminvad, m10_state, 0, ROT270, "IPM", "IPM Invader", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) GAME( 1979, ipminvad1, ipminvad, m10, ipminvad, m10_state, ipminva1, ROT270, "IPM", "IPM Invader (Incomplete Dump)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, skychut, 0, m11, skychut, driver_device, 0, ROT270, "Irem", "Sky Chuter", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, spacbeam, 0, m15, spacbeam, driver_device, 0, ROT270, "Irem", "Space Beam", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) // IPM or Irem? -GAME( 1979, headoni, 0, headoni, headoni, driver_device, 0, ROT270, "Irem", "Head On (Irem, M-15 Hardware)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, greenber, 0, m15, spacbeam, driver_device, 0, ROT270, "Irem", "Green Beret (Irem)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, skychut, 0, m11, skychut, m10_state, 0, ROT270, "Irem", "Sky Chuter", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, spacbeam, 0, m15, spacbeam, m10_state, 0, ROT270, "Irem", "Space Beam", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) // IPM or Irem? +GAME( 1979, headoni, 0, headoni, headoni, m10_state, 0, ROT270, "Irem", "Head On (Irem, M-15 Hardware)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, greenber, 0, m15, spacbeam, m10_state, 0, ROT270, "Irem", "Green Beret (Irem)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/m107.cpp b/src/mame/drivers/m107.cpp index 74f6b79bcd2..ddb546e8a7e 100644 --- a/src/mame/drivers/m107.cpp +++ b/src/mame/drivers/m107.cpp @@ -346,6 +346,7 @@ static INPUT_PORTS_START( dsoccr94 ) PORT_DIPSETTING( 0x0300, "1000" ) PORT_DIPSETTING( 0x0100, "1500" ) PORT_DIPSETTING( 0x0200, "2000" ) + /* Manual says not to use these SW3:3-8 */ PORT_MODIFY("DSW") /* Dip switch bank 1 */ @@ -372,27 +373,6 @@ static INPUT_PORTS_START( dsoccr94 ) PORT_DIPNAME( 0x0020, 0x0020, "Starting Button" ) PORT_DIPLOCATION("SW1:6") PORT_DIPSETTING( 0x0000, "Button 1" ) PORT_DIPSETTING( 0x0020, "Start Button" ) - - /* Manual says not to use these SW3:3-8 */ - PORT_START("DSW3") /* Dip switch bank 3 */ - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:3") - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:5") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:6") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:7") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:8") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( wpksoc ) @@ -792,7 +772,7 @@ GFXDECODE_END /***************************************************************************/ -static MACHINE_CONFIG_START( firebarr, m107_state ) +static MACHINE_CONFIG_START( firebarr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V33, 28000000/2) /* NEC V33, 28MHz clock */ @@ -1080,11 +1060,11 @@ DRIVER_INIT_MEMBER(m107_state,wpksoc) /***************************************************************************/ -GAME( 1993, airass, 0, airass, firebarr, m107_state, firebarr, ROT270, "Irem", "Air Assault (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // possible location test, but sound code is newer than Japan version -GAME( 1993, firebarr, airass, firebarr, firebarr, m107_state, firebarr, ROT270, "Irem", "Fire Barrel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, airass, 0, airass, firebarr, m107_state, firebarr, ROT270, "Irem", "Air Assault (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // possible location test, but sound code is newer than Japan version +GAME( 1993, firebarr, airass, firebarr, firebarr, m107_state, firebarr, ROT270, "Irem", "Fire Barrel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, dsoccr94, 0, dsoccr94, dsoccr94, m107_state, dsoccr94, ROT0, "Irem (Data East Corporation license)", "Dream Soccer '94 (World, M107 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, dsoccr94k, dsoccr94, dsoccr94, dsoccr94, m107_state, dsoccr94, ROT0, "Irem (Data East Corporation license)", "Dream Soccer '94 (Korea, M107 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // default team selected is Korea, so likely a Korean set +GAME( 1994, dsoccr94, 0, dsoccr94, dsoccr94, m107_state, dsoccr94, ROT0, "Irem (Data East Corporation license)", "Dream Soccer '94 (World, M107 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, dsoccr94k, dsoccr94, dsoccr94, dsoccr94, m107_state, dsoccr94, ROT0, "Irem (Data East Corporation license)", "Dream Soccer '94 (Korea, M107 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // default team selected is Korea, so likely a Korean set -GAME( 1995, wpksoc, 0, wpksoc, wpksoc, m107_state, wpksoc, ROT0, "Jaleco", "World PK Soccer", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, kftgoal, wpksoc, wpksoc, wpksoc, m107_state, wpksoc, ROT0, "Jaleco", "Kick for the Goal", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, wpksoc, 0, wpksoc, wpksoc, m107_state, wpksoc, ROT0, "Jaleco", "World PK Soccer", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, kftgoal, wpksoc, wpksoc, wpksoc, m107_state, wpksoc, ROT0, "Jaleco", "Kick for the Goal", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/m14.cpp b/src/mame/drivers/m14.cpp index e8a92f1cae4..e7ef6f520a0 100644 --- a/src/mame/drivers/m14.cpp +++ b/src/mame/drivers/m14.cpp @@ -14,14 +14,11 @@ TODO: - I'm not sure about the hopper hook-up, it could also be that the player should press start + button 1 + ron buttons (= 0x43) instead of being "automatic"; - Inputs are grossly mapped; +- ball and paddle drawing are a guesswork; Notes: - Unlike most Arcade games, if you call a ron but you don't have a legit hand you'll automatically lose the match. This is commonly named chombo in rii'chi mahjong rules; -- If you make the timer to run out, you'll lose the turn but you don't get any visible message - (presumably signaled by a sound effect); -- As you could expect, the cpu hands are actually pre-determined, so you actually play alone - against a variable number of available tiles; ============================================================================================== @@ -65,7 +62,10 @@ public: m_video_ram(*this, "video_ram"), m_color_ram(*this, "color_ram"), m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode") { } + m_screen(*this, "screen"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette") + { } /* video-related */ tilemap_t *m_m14_tilemap; @@ -74,19 +74,29 @@ public: /* input-related */ uint8_t m_hop_mux; + uint8_t m_ballx,m_bally; + uint8_t m_paddlex; /* devices */ required_device m_maincpu; + required_device m_screen; required_device m_gfxdecode; + required_device m_palette; DECLARE_WRITE8_MEMBER(m14_vram_w); DECLARE_WRITE8_MEMBER(m14_cram_w); DECLARE_READ8_MEMBER(m14_rng_r); DECLARE_READ8_MEMBER(input_buttons_r); DECLARE_WRITE8_MEMBER(hopper_w); + DECLARE_WRITE8_MEMBER(ball_x_w); + DECLARE_WRITE8_MEMBER(ball_y_w); + DECLARE_WRITE8_MEMBER(paddle_x_w); + DECLARE_INPUT_CHANGED_MEMBER(left_coin_inserted); DECLARE_INPUT_CHANGED_MEMBER(right_coin_inserted); + TILE_GET_INFO_MEMBER(m14_get_tile_info); + void draw_ball_and_paddle(bitmap_ind16 &bitmap, const rectangle &cliprect); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; @@ -102,10 +112,10 @@ public: * *************************************/ -/* guess, might not be 100% accurate. */ PALETTE_INIT_MEMBER(m14_state, m14) { int i; + const rgb_t green_pen = rgb_t(pal1bit(0), pal1bit(1), pal1bit(0)); for (i = 0; i < 0x20; i++) { @@ -114,7 +124,7 @@ PALETTE_INIT_MEMBER(m14_state, m14) if (i & 0x01) color = rgb_t(pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 3)); else - color = (i & 0x10) ? rgb_t::white() : rgb_t::black(); + color = (i & 0x10) ? rgb_t::white() : green_pen; palette.set_pen_color(i, color); } @@ -126,7 +136,7 @@ TILE_GET_INFO_MEMBER(m14_state::m14_get_tile_info) int color = m_color_ram[tile_index] & 0x0f; /* colorram & 0xf0 used but unknown purpose*/ - + SET_TILE_INFO_MEMBER(0, code, color, @@ -136,11 +146,50 @@ TILE_GET_INFO_MEMBER(m14_state::m14_get_tile_info) void m14_state::video_start() { m_m14_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m14_state::m14_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + + +} + +void m14_state::draw_ball_and_paddle(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + int xi,yi; + //const rgb_t white_pen = rgb_t::white(); + const uint8_t white_pen = 0x1f; + const int xoffs = -8; // matches left-right wall bounces + const int p_ybase = 184; // matches ball bounce to paddle + int resx,resy; + + // draw ball + for(xi=0;xi<4;xi++) + for(yi=0;yi<4;yi++) + { + resx = flip_screen() ? 32*8-(m_ballx+xi+xoffs) : m_ballx+xi+xoffs; + resy = flip_screen() ? 28*8-(m_bally+yi) : m_bally+yi; + + if(cliprect.contains(resx,resy)) + bitmap.pix16(resy, resx) = m_palette->pen(white_pen); + } + + // draw paddle + for(xi=0;xi<16;xi++) + for(yi=0;yi<4;yi++) + { + resx = flip_screen() ? 32*8-(m_paddlex+xi+xoffs) : (m_paddlex+xi+xoffs); + resy = flip_screen() ? 28*8-(p_ybase+yi) : p_ybase+yi; + + if(cliprect.contains(resx,resy)) + bitmap.pix16(resy, resx) = m_palette->pen(white_pen); + } + + } + uint32_t m14_state::screen_update_m14(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_m14_tilemap->draw(screen, bitmap, cliprect, 0, 0); + draw_ball_and_paddle(bitmap,cliprect); + return 0; } @@ -166,7 +215,8 @@ WRITE8_MEMBER(m14_state::m14_cram_w) READ8_MEMBER(m14_state::m14_rng_r) { /* graphic artifacts happens if this doesn't return random values. */ - return (machine().rand() & 0x0f) | 0xf0; /* | (ioport("IN1")->read() & 0x80)*/; + /* guess directly tied to screen frame number */ + return (m_screen->frame_number() & 0x7f) | (ioport("IN1")->read() & 0x80); } /* Here routes the hopper & the inputs */ @@ -181,25 +231,31 @@ READ8_MEMBER(m14_state::input_buttons_r) return ioport("IN0")->read(); } -#if 0 -WRITE8_MEMBER(m14_state::test_w) -{ - static uint8_t x[5]; - - x[offset] = data; - - popmessage("%02x %02x %02x %02x %02x",x[0],x[1],x[2],x[3],x[4]); -} -#endif - WRITE8_MEMBER(m14_state::hopper_w) { /* ---- x--- coin out */ /* ---- --x- hopper/input mux? */ + /* ---- ---x flip screen */ m_hop_mux = data & 2; + flip_screen_set(data & 1); //popmessage("%02x",data); } +WRITE8_MEMBER(m14_state::ball_x_w) +{ + m_ballx = data; +} + +WRITE8_MEMBER(m14_state::ball_y_w) +{ + m_bally = data; +} + +WRITE8_MEMBER(m14_state::paddle_x_w) +{ + m_paddlex = data; +} + /************************************* * * Memory Map @@ -215,11 +271,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( m14_io_map, AS_IO, 8, m14_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf8, 0xf8) AM_READ_PORT("AN_PADDLE") AM_WRITENOP - AM_RANGE(0xf9, 0xf9) AM_READ(input_buttons_r) AM_WRITENOP - AM_RANGE(0xfa, 0xfa) AM_READ(m14_rng_r) AM_WRITENOP + AM_RANGE(0xf8, 0xf8) AM_READ_PORT("AN_PADDLE") AM_WRITE(ball_x_w) + AM_RANGE(0xf9, 0xf9) AM_READ(input_buttons_r) AM_WRITE(ball_y_w) + AM_RANGE(0xfa, 0xfa) AM_READ(m14_rng_r) AM_WRITE(paddle_x_w) AM_RANGE(0xfb, 0xfb) AM_READ_PORT("DSW") AM_WRITE(hopper_w) - AM_RANGE(0xf8, 0xfc) AM_WRITENOP + AM_RANGE(0xfc, 0xfc) AM_WRITENOP // sound ADDRESS_MAP_END /************************************* @@ -247,11 +303,11 @@ static INPUT_PORTS_START( m14 ) PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_MINMAX(0,0xff) PORT_SENSITIVITY(5) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_REVERSE PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) //could be reach too - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) //affects medal settings? - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Fire / Discard") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Ron") + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x04, "Coin A 5\u30de\u30a4 Coin B 1\u30de\u30a4" ) + PORT_DIPSETTING( 0x00, "Coin A & B 1\u30de\u30a4" ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -265,14 +321,17 @@ static INPUT_PORTS_START( m14 ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("IN1") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Reach") PORT_START("DSW") //this whole port is stored at work ram $2112. - PORT_DIPNAME( 0x01, 0x00, "Show available tiles" ) // debug mode for the rng? + PORT_DIPNAME( 0x01, 0x01, "Show available tiles" ) // difficulty even PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x01, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Cocktail ) ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) @@ -321,6 +380,9 @@ INTERRUPT_GEN_MEMBER(m14_state::m14_irq) void m14_state::machine_start() { save_item(NAME(m_hop_mux)); + save_item(NAME(m_ballx)); + save_item(NAME(m_bally)); + save_item(NAME(m_paddlex)); } void m14_state::machine_reset() @@ -329,15 +391,14 @@ void m14_state::machine_reset() } -static MACHINE_CONFIG_START( m14, m14_state ) +static MACHINE_CONFIG_START( m14 ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu",I8085A,6000000/2) //guess: 6 Mhz internally divided by 2 + MCFG_CPU_ADD("maincpu",I8085A,6000000) //guess: 6 Mhz internally divided by 2 MCFG_CPU_PROGRAM_MAP(m14_map) MCFG_CPU_IO_MAP(m14_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", m14_state, m14_irq) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -383,4 +444,4 @@ ROM_START( ptrmj ) ROM_LOAD( "mgpa10.bin", 0x0400, 0x0400, CRC(e1a4ebdc) SHA1(d9df42424ede17f0634d8d0a56c0374a33c55333) ) ROM_END -GAME( 1979, ptrmj, 0, m14, m14, driver_device, 0, ROT0, "Irem", "PT Reach Mahjong (Japan)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // IPM or Irem? +GAME( 1979, ptrmj, 0, m14, m14, m14_state, 0, ROT0, "Irem", "PT Reach Mahjong (Japan)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // was already Irem according to the official flyer diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp index ac0bf307675..5c39ecb5ade 100644 --- a/src/mame/drivers/m20.cpp +++ b/src/mame/drivers/m20.cpp @@ -84,7 +84,7 @@ public: required_device m_ttyi8251; required_device m_i8255; required_device m_i8259; - required_device m_fd1797; + required_device m_fd1797; required_device m_floppy0; required_device m_floppy1; optional_device m_apb; @@ -698,7 +698,7 @@ void m20_state::install_memory() static ADDRESS_MAP_START(m20_io, AS_IO, 16, m20_state) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x07) AM_DEVREADWRITE8("fd1797", fd1797_t, read, write, 0x00ff) + AM_RANGE(0x00, 0x07) AM_DEVREADWRITE8("fd1797", fd1797_device, read, write, 0x00ff) AM_RANGE(0x20, 0x21) AM_READWRITE(port21_r, port21_w); @@ -760,8 +760,8 @@ void m20_state::machine_reset() memcpy(RAM, ROM, 8); // we need only the reset vector m_maincpu->reset(); // reset the CPU to ensure it picks up the new vector m_kbdi8251->write_cts(0); - if(m_apb) - m_apb->m_8086->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); + if (m_apb) + m_apb->halt(); } @@ -778,7 +778,7 @@ static SLOT_INTERFACE_START(keyboard) SLOT_INTERFACE("m20", M20_KEYBOARD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( m20, m20_state ) +static MACHINE_CONFIG_START( m20 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z8001, MAIN_CLOCK) MCFG_CPU_PROGRAM_MAP(m20_program_mem) @@ -867,6 +867,6 @@ ROM_START(m40) ROM_REGION(0x4000, "apb_bios", ROMREGION_ERASEFF) // Processor board with 8086 ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, m20, 0, 0, m20, 0, driver_device, 0, "Olivetti", "Olivetti L1 M20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1981, m40, m20, 0, m20, 0, driver_device, 0, "Olivetti", "Olivetti L1 M40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, m20, 0, 0, m20, 0, m20_state, 0, "Olivetti", "Olivetti L1 M20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1981, m40, m20, 0, m20, 0, m20_state, 0, "Olivetti", "Olivetti L1 M40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/m24.cpp b/src/mame/drivers/m24.cpp index 21ac6bd26c9..fbacf36ffeb 100644 --- a/src/mame/drivers/m24.cpp +++ b/src/mame/drivers/m24.cpp @@ -5,13 +5,16 @@ #include "cpu/i86/i86.h" #include "cpu/tms7000/tms7000.h" +#include "imagedev/floppy.h" #include "machine/m24_kbd.h" #include "machine/m24_z8000.h" #include "machine/mm58274c.h" #include "machine/genpc.h" + #include "formats/pc_dsk.h" #include "formats/naslite_dsk.h" #include "formats/m20_dsk.h" + #include "softlist.h" class m24_state : public driver_device @@ -58,7 +61,7 @@ void m24_state::machine_reset() m_i86_halt = false; m_i86_halt_perm = false; if(m_z8000_apb) - m_z8000_apb->m_z8000->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); + m_z8000_apb->halt_w(ASSERT_LINE); } READ8_MEMBER(m24_state::keyboard_r) @@ -140,7 +143,7 @@ WRITE_LINE_MEMBER(m24_state::dma_hrq_w) if(!m_i86_halt) m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); if(m_z8000_apb && !m_z8000_apb->halted()) - m_z8000_apb->m_z8000->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE); + m_z8000_apb->halt_w(state ? ASSERT_LINE : CLEAR_LINE); /* Assert HLDA */ m_mb->m_dma8237->hack_w(state); @@ -151,7 +154,7 @@ WRITE_LINE_MEMBER(m24_state::int_w) if(!m_i86_halt) m_maincpu->set_input_line(INPUT_LINE_IRQ0, state ? ASSERT_LINE : CLEAR_LINE); if(m_z8000_apb && !m_z8000_apb->halted()) - m_z8000_apb->m_z8000->set_input_line(INPUT_LINE_IRQ1, state ? ASSERT_LINE : CLEAR_LINE); + m_z8000_apb->int_w(state ? ASSERT_LINE : CLEAR_LINE); } WRITE_LINE_MEMBER(m24_state::halt_i86_w) @@ -243,7 +246,7 @@ static MACHINE_CONFIG_FRAGMENT( cfg_m20_format ) static_cast(device)->set_formats(m24_state::floppy_formats); MACHINE_CONFIG_END -static MACHINE_CONFIG_START( olivetti, m24_state ) +static MACHINE_CONFIG_START( olivetti ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(m24_map) @@ -308,5 +311,5 @@ ROM_START( m240 ) ROM_LOAD("pdbd.tms2516.keyboardmcureplacementdaughterboard_10u", 0x000, 0x800, BAD_DUMP CRC(b8c4c18a) SHA1(25b4c24e19ff91924c53557c66513ab242d926c6)) ROM_END -COMP( 1983, m24, ibm5150, 0, olivetti, m24, driver_device, 0, "Olivetti", "M24", MACHINE_NOT_WORKING) -COMP( 1987, m240, ibm5150, 0, olivetti, m24, driver_device, 0, "Olivetti", "M240", MACHINE_NOT_WORKING) +COMP( 1983, m24, ibm5150, 0, olivetti, m24, m24_state, 0, "Olivetti", "M24", MACHINE_NOT_WORKING ) +COMP( 1987, m240, ibm5150, 0, olivetti, m24, m24_state, 0, "Olivetti", "M240", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/m5.cpp b/src/mame/drivers/m5.cpp index 2c7d99b81eb..9f98433bddf 100644 --- a/src/mame/drivers/m5.cpp +++ b/src/mame/drivers/m5.cpp @@ -1051,7 +1051,7 @@ static ADDRESS_MAP_START( brno_io, AS_IO, 8, brno_state ) AM_RANGE(0x68, 0x6b) AM_READWRITE(ramsel_r, ramsel_w) // CASEN 0=access to ramdisk enabled, 0xff=ramdisk access disabled(data protection), &80=ROM2+48k RAM, &81=ROM2+4k RAM AM_RANGE(0x6c, 0x6f) AM_READWRITE(romsel_r, romsel_w) // RAMEN 0=rom enable; 0xff=rom+sord ram disabled (ramdisk visible) // AM_RANGE(0x70, 0x73) AM_MIRROR(0x04) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) // PIO - AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE(WD2797_TAG, wd_fdc_t, read, write) // WD2797 registers -> 78 - status/cmd, 79 - track #, 7a - sector #, 7b - data + AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE(WD2797_TAG, wd_fdc_device_base, read, write) // WD2797 registers -> 78 - status/cmd, 79 - track #, 7a - sector #, 7b - data AM_RANGE(0x7c, 0x7c) AM_READWRITE(fd_r, fd_w) // drive select ADDRESS_MAP_END @@ -1396,7 +1396,7 @@ void brno_state::machine_reset() // MACHINE_CONFIG( m5 ) //------------------------------------------------- -static MACHINE_CONFIG_START( m5, m5_state ) +static MACHINE_CONFIG_START( m5 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_14_31818MHz/4) MCFG_CPU_PROGRAM_MAP(m5_mem) @@ -1487,7 +1487,7 @@ MACHINE_CONFIG_END //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( brno, m5, brno_state ) +static MACHINE_CONFIG_DERIVED( brno, m5 ) // basic machine hardware MCFG_CPU_MODIFY(Z80_TAG) @@ -1606,7 +1606,7 @@ DRIVER_INIT_MEMBER(brno_state,brno) // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1983, m5, 0, 0, ntsc, m5, m5_state, ntsc, "Sord", "m.5 (Japan)", 0 ) -COMP( 1983, m5p, m5, 0, pal, m5, m5_state, pal, "Sord", "m.5 (Europe)", 0 ) -COMP( 1983, m5p_brno, m5, 0, brno, m5, brno_state, brno, "Sord", "m.5 (Europe) BRNO mod", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, m5, 0, 0, ntsc, m5, m5_state, ntsc, "Sord", "m.5 (Japan)", 0 ) +COMP( 1983, m5p, m5, 0, pal, m5, m5_state, pal, "Sord", "m.5 (Europe)", 0 ) +COMP( 1983, m5p_brno, m5, 0, brno, m5, brno_state, brno, "Sord", "m.5 (Europe) BRNO mod", 0 ) diff --git a/src/mame/drivers/m52.cpp b/src/mame/drivers/m52.cpp index 07814650a63..8b3c336f057 100644 --- a/src/mame/drivers/m52.cpp +++ b/src/mame/drivers/m52.cpp @@ -392,7 +392,7 @@ void m52_state::machine_reset() m_bgcontrol = 0; } -static MACHINE_CONFIG_START( m52, m52_state ) +static MACHINE_CONFIG_START( m52 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) @@ -586,7 +586,7 @@ ROM_END * *************************************/ -GAME( 1982, mpatrol, 0, m52, mpatrol, driver_device, 0, ROT0, "Irem", "Moon Patrol", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mpatrolw, mpatrol, m52, mpatrolw, driver_device, 0, ROT0, "Irem (Williams license)", "Moon Patrol (Williams)", MACHINE_SUPPORTS_SAVE ) // USA -GAME( 1982, mranger, mpatrol, m52, mpatrol, driver_device, 0, ROT0, "bootleg", "Moon Ranger (bootleg of Moon Patrol)", MACHINE_SUPPORTS_SAVE ) // Italy -GAME( 1988, alpha1v, 0, alpha1v, alpha1v, driver_device, 0, ROT0, "Vision Electronics", "Alpha One (Vision Electronics)", MACHINE_NOT_WORKING| MACHINE_NO_SOUND| MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mpatrol, 0, m52, mpatrol, m52_state, 0, ROT0, "Irem", "Moon Patrol", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mpatrolw, mpatrol, m52, mpatrolw, m52_state, 0, ROT0, "Irem (Williams license)", "Moon Patrol (Williams)", MACHINE_SUPPORTS_SAVE ) // USA +GAME( 1982, mranger, mpatrol, m52, mpatrol, m52_state, 0, ROT0, "bootleg", "Moon Ranger (bootleg of Moon Patrol)", MACHINE_SUPPORTS_SAVE ) // Italy +GAME( 1988, alpha1v, 0, alpha1v, alpha1v, m52_state, 0, ROT0, "Vision Electronics", "Alpha One (Vision Electronics)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/m57.cpp b/src/mame/drivers/m57.cpp index 5a9f85c00d4..7ad550e65e6 100644 --- a/src/mame/drivers/m57.cpp +++ b/src/mame/drivers/m57.cpp @@ -228,7 +228,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( m57, m57_state ) +static MACHINE_CONFIG_START( m57 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* verified on pcb */ @@ -333,5 +333,5 @@ ROM_END * *************************************/ -GAME( 1983, troangel, 0, m57, troangel, driver_device, 0, ROT0, "Irem", "Tropical Angel", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, newtangl, troangel, m57, troangel, driver_device, 0, ROT0, "Irem", "New Tropical Angel", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, troangel, 0, m57, troangel, m57_state, 0, ROT0, "Irem", "Tropical Angel", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, newtangl, troangel, m57, troangel, m57_state, 0, ROT0, "Irem", "New Tropical Angel", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/m58.cpp b/src/mame/drivers/m58.cpp index d92775a9389..ee4e8b3876f 100644 --- a/src/mame/drivers/m58.cpp +++ b/src/mame/drivers/m58.cpp @@ -191,7 +191,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( yard, m58_state ) +static MACHINE_CONFIG_START( yard ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/3/2) @@ -426,10 +426,10 @@ ROM_START( 10yard85 ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR, COMPANY, FULLNAME, FLAGS */ -GAME( 1983, 10yard, 0, yard, yard, driver_device, 0, ROT0, "Irem", "10-Yard Fight (World, set 1)", MACHINE_SUPPORTS_SAVE ) // no copyright -GAME( 1983, 10yardj, 10yard, yard, yard, driver_device, 0, ROT0, "Irem", "10-Yard Fight (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, vs10yard, 10yard, yard, vs10yard, driver_device, 0, ROT0, "Irem", "Vs 10-Yard Fight (World, 11/05/84)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, vs10yardj, 10yard, yard, vs10yarj, driver_device, 0, ROT0, "Irem", "Vs 10-Yard Fight (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, vs10yardu, 10yard, yard, vs10yard, driver_device, 0, ROT0, "Irem (Taito license)", "Vs 10-Yard Fight (US, Taito license)", MACHINE_SUPPORTS_SAVE ) // had '85 stickers, but doesn't have '85 on the title screen like the set below -GAME( 1985, 10yard85, 10yard, yard, yard, driver_device, 0, ROT0, "Irem (Taito license)", "10-Yard Fight '85 (US, Taito license)", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME, FLAGS */ +GAME( 1983, 10yard, 0, yard, yard, m58_state, 0, ROT0, "Irem", "10-Yard Fight (World, set 1)", MACHINE_SUPPORTS_SAVE ) // no copyright +GAME( 1983, 10yardj, 10yard, yard, yard, m58_state, 0, ROT0, "Irem", "10-Yard Fight (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, vs10yard, 10yard, yard, vs10yard, m58_state, 0, ROT0, "Irem", "Vs 10-Yard Fight (World, 11/05/84)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, vs10yardj, 10yard, yard, vs10yarj, m58_state, 0, ROT0, "Irem", "Vs 10-Yard Fight (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, vs10yardu, 10yard, yard, vs10yard, m58_state, 0, ROT0, "Irem (Taito license)", "Vs 10-Yard Fight (US, Taito license)", MACHINE_SUPPORTS_SAVE ) // had '85 stickers, but doesn't have '85 on the title screen like the set below +GAME( 1985, 10yard85, 10yard, yard, yard, m58_state, 0, ROT0, "Irem (Taito license)", "10-Yard Fight '85 (US, Taito license)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/m62.cpp b/src/mame/drivers/m62.cpp index a770110b9c0..88e85d42e6a 100644 --- a/src/mame/drivers/m62.cpp +++ b/src/mame/drivers/m62.cpp @@ -932,7 +932,7 @@ void m62_state::machine_reset() m_bankcontrol[1] = 0; } -static MACHINE_CONFIG_START( ldrun, m62_state ) +static MACHINE_CONFIG_START( ldrun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 24000000/6) @@ -2180,25 +2180,25 @@ DRIVER_INIT_MEMBER(m62_state,youjyudn) membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000); } -GAME( 1984, kungfum, 0, kungfum, kungfum, driver_device, 0, ROT0, "Irem", "Kung-Fu Master (World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, kungfumd, kungfum, kungfum, kungfum, driver_device, 0, ROT0, "Irem (Data East USA license)", "Kung-Fu Master (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, spartanx, kungfum, kungfum, kungfum, driver_device, 0, ROT0, "Irem", "Spartan X (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, kungfub, kungfum, kungfum, kungfum, driver_device, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, kungfub2, kungfum, kungfum, kungfum, driver_device, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, battroad, 0, battroad, battroad, m62_state, battroad, ROT90, "Irem", "The Battle-Road", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, ldrun, 0, ldrun, ldrun, driver_device, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, ldruna, ldrun, ldrun, ldrun, driver_device, 0, ROT0, "Irem (licensed from Broderbund, Digital Controls Inc. license)", "Lode Runner (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, ldrun2, 0, ldrun2, ldrun2, m62_state, ldrun2, ROT0, "Irem (licensed from Broderbund)", "Lode Runner II - The Bungeling Strikes Back", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) /* Japanese version is called Bangeringu Teikoku No Gyakushuu */ -GAME( 1985, ldrun3, 0, ldrun3, ldrun3, driver_device, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - The Golden Labyrinth", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1985, ldrun3j, ldrun3, ldrun3, ldrun3, driver_device, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - Majin No Fukkatsu (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, ldrun4, 0, ldrun4, ldrun4, m62_state, ldrun4, ROT0, "Irem (licensed from Broderbund)", "Lode Runner IV - Teikoku Karano Dasshutsu (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1985, lotlot, 0, lotlot, lotlot, driver_device, 0, ROT0, "Irem (licensed from Tokuma Shoten)", "Lot Lot", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, kidniki, 0, kidniki, kidniki, m62_state, kidniki, ROT0, "Irem", "Kid Niki - Radical Ninja (World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, kidnikiu, kidniki, kidniki, kidniki, m62_state, kidniki, ROT0, "Irem (Data East USA license)", "Kid Niki - Radical Ninja (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, yanchamr, kidniki, kidniki, kidniki, m62_state, kidniki, ROT0, "Irem", "Kaiketsu Yanchamaru (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1987, lithero, kidniki, kidniki, kidniki, m62_state, kidniki, ROT0, "bootleg", "Little Hero", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1985, spelunkr, 0, spelunkr, spelunkr, m62_state, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1985, spelunkrj,spelunkr, spelunkr, spelunkr, m62_state, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, spelunk2, 0, spelunk2, spelunk2, m62_state, spelunk2, ROT0, "Irem (licensed from Broderbund)", "Spelunker II", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1986, youjyudn, 0, youjyudn, youjyudn, m62_state, youjyudn, ROT270, "Irem", "Youjyuden (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1985, horizon, 0, horizon, horizon, driver_device, 0, ROT0, "Irem", "Horizon (Irem)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, kungfum, 0, kungfum, kungfum, m62_state, 0, ROT0, "Irem", "Kung-Fu Master (World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, kungfumd, kungfum, kungfum, kungfum, m62_state, 0, ROT0, "Irem (Data East USA license)", "Kung-Fu Master (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, spartanx, kungfum, kungfum, kungfum, m62_state, 0, ROT0, "Irem", "Spartan X (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, kungfub, kungfum, kungfum, kungfum, m62_state, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, kungfub2, kungfum, kungfum, kungfum, m62_state, 0, ROT0, "bootleg", "Kung-Fu Master (bootleg set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, battroad, 0, battroad, battroad, m62_state, battroad, ROT90, "Irem", "The Battle-Road", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, ldrun, 0, ldrun, ldrun, m62_state, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, ldruna, ldrun, ldrun, ldrun, m62_state, 0, ROT0, "Irem (licensed from Broderbund, Digital Controls Inc. license)", "Lode Runner (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, ldrun2, 0, ldrun2, ldrun2, m62_state, ldrun2, ROT0, "Irem (licensed from Broderbund)", "Lode Runner II - The Bungeling Strikes Back", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) /* Japanese version is called Bangeringu Teikoku No Gyakushuu */ +GAME( 1985, ldrun3, 0, ldrun3, ldrun3, m62_state, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - The Golden Labyrinth", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1985, ldrun3j, ldrun3, ldrun3, ldrun3, m62_state, 0, ROT0, "Irem (licensed from Broderbund)", "Lode Runner III - Majin No Fukkatsu (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, ldrun4, 0, ldrun4, ldrun4, m62_state, ldrun4, ROT0, "Irem (licensed from Broderbund)", "Lode Runner IV - Teikoku Karano Dasshutsu (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1985, lotlot, 0, lotlot, lotlot, m62_state, 0, ROT0, "Irem (licensed from Tokuma Shoten)", "Lot Lot", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, kidniki, 0, kidniki, kidniki, m62_state, kidniki, ROT0, "Irem", "Kid Niki - Radical Ninja (World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, kidnikiu, kidniki, kidniki, kidniki, m62_state, kidniki, ROT0, "Irem (Data East USA license)", "Kid Niki - Radical Ninja (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, yanchamr, kidniki, kidniki, kidniki, m62_state, kidniki, ROT0, "Irem", "Kaiketsu Yanchamaru (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1987, lithero, kidniki, kidniki, kidniki, m62_state, kidniki, ROT0, "bootleg", "Little Hero", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1985, spelunkr, 0, spelunkr, spelunkr, m62_state, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1985, spelunkrj,spelunkr, spelunkr, spelunkr, m62_state, spelunkr, ROT0, "Irem (licensed from Broderbund)", "Spelunker (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, spelunk2, 0, spelunk2, spelunk2, m62_state, spelunk2, ROT0, "Irem (licensed from Broderbund)", "Spelunker II", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1986, youjyudn, 0, youjyudn, youjyudn, m62_state, youjyudn, ROT270, "Irem", "Youjyuden (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1985, horizon, 0, horizon, horizon, m62_state, 0, ROT0, "Irem", "Horizon (Irem)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/m63.cpp b/src/mame/drivers/m63.cpp index 57c9016fd72..126e820ff15 100644 --- a/src/mame/drivers/m63.cpp +++ b/src/mame/drivers/m63.cpp @@ -191,7 +191,7 @@ public: DECLARE_WRITE8_MEMBER(p1_w); DECLARE_WRITE8_MEMBER(p2_w); DECLARE_READ8_MEMBER(snd_status_r); - DECLARE_READ8_MEMBER(irq_r); + DECLARE_READ_LINE_MEMBER(irq_r); DECLARE_READ8_MEMBER(snddata_r); DECLARE_WRITE8_MEMBER(fghtbskt_samples_w); SAMPLES_START_CB_MEMBER(fghtbskt_sh_start); @@ -432,7 +432,7 @@ READ8_MEMBER(m63_state::snd_status_r) return m_sound_status; } -READ8_MEMBER(m63_state::irq_r) +READ_LINE_MEMBER(m63_state::irq_r) { if (m_sound_irq) { @@ -518,9 +518,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_port_map, AS_IO, 8, m63_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(snddata_r, snddata_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(irq_r) ADDRESS_MAP_END @@ -752,7 +749,7 @@ INTERRUPT_GEN_MEMBER(m63_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( m63, m63_state ) +static MACHINE_CONFIG_START( m63 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,XTAL_12MHz/4) /* 3 MHz */ @@ -762,6 +759,9 @@ static MACHINE_CONFIG_START( m63, m63_state ) MCFG_CPU_ADD("soundcpu",I8039,XTAL_12MHz/4) /* ????? */ MCFG_CPU_PROGRAM_MAP(i8039_map) MCFG_CPU_IO_MAP(i8039_port_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(m63_state, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(m63_state, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(m63_state, irq_r)) MCFG_CPU_PERIODIC_INT_DRIVER(m63_state, snd_irq, 60) MCFG_MACHINE_START_OVERRIDE(m63_state,m63) @@ -799,7 +799,7 @@ static MACHINE_CONFIG_DERIVED( atomboy, m63 ) MCFG_CPU_PERIODIC_INT_DRIVER(m63_state, snd_irq, 60/2) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fghtbskt, m63_state ) +static MACHINE_CONFIG_START( fghtbskt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) /* 3 MHz */ diff --git a/src/mame/drivers/m6805evs.cpp b/src/mame/drivers/m6805evs.cpp index f42260193ce..ca262cc0301 100644 --- a/src/mame/drivers/m6805evs.cpp +++ b/src/mame/drivers/m6805evs.cpp @@ -98,7 +98,7 @@ void m6805evs_state::machine_reset() { } -static MACHINE_CONFIG_START( m6805evs, m6805evs_state ) +static MACHINE_CONFIG_START( m6805evs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6805, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(m6805evs_mem) @@ -116,5 +116,5 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -COMP( 1990, m6805evs, 0, 0, m6805evs, m6805evs, driver_device, 0, "Motorola", "M68HC05EVS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1990, m6805evs, 0, 0, m6805evs, m6805evs, m6805evs_state, 0, "Motorola", "M68HC05EVS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/m68705prg.cpp b/src/mame/drivers/m68705prg.cpp index 965fa9bb8cf..31a22791ffb 100644 --- a/src/mame/drivers/m68705prg.cpp +++ b/src/mame/drivers/m68705prg.cpp @@ -219,7 +219,7 @@ INPUT_PORTS_START(m68705prg) INPUT_PORTS_END -MACHINE_CONFIG_START(m68705prg, m68705prg_state_base) +MACHINE_CONFIG_START(m68705prg) MCFG_QUANTUM_PERFECT_CPU("mcu") MCFG_GENERIC_SOCKET_ADD("eprom_image", generic_plain_slot, "eprom") @@ -235,28 +235,28 @@ MACHINE_CONFIG_START(m68705prg, m68705prg_state_base) MCFG_DEFAULT_LAYOUT(layout_m68705prg) MACHINE_CONFIG_END -MACHINE_CONFIG_DERIVED_CLASS(m68705p3prg, m68705prg, p3prg_state) +MACHINE_CONFIG_DERIVED(m68705p3prg, m68705prg) MCFG_CPU_ADD("mcu", M68705P3, XTAL_1MHz) MCFG_M68705_PORTB_W_CB(WRITE8(p3prg_state, pb_w)) MCFG_MACHINE_RESET_OVERRIDE(p3prg_state, m68705prg) MACHINE_CONFIG_END -MACHINE_CONFIG_DERIVED_CLASS(m68705p5prg, m68705prg, p5prg_state) +MACHINE_CONFIG_DERIVED(m68705p5prg, m68705prg) MCFG_CPU_ADD("mcu", M68705P5, XTAL_1MHz) MCFG_M68705_PORTB_W_CB(WRITE8(p5prg_state, pb_w)) MCFG_MACHINE_RESET_OVERRIDE(p5prg_state, m68705prg) MACHINE_CONFIG_END -MACHINE_CONFIG_DERIVED_CLASS(m68705r3prg, m68705prg, r3prg_state) +MACHINE_CONFIG_DERIVED(m68705r3prg, m68705prg) MCFG_CPU_ADD("mcu", M68705R3, XTAL_1MHz) MCFG_M68705_PORTB_W_CB(WRITE8(r3prg_state, pb_w)) MCFG_MACHINE_RESET_OVERRIDE(r3prg_state, m68705prg) MACHINE_CONFIG_END -MACHINE_CONFIG_DERIVED_CLASS(m68705u3prg, m68705prg, u3prg_state) +MACHINE_CONFIG_DERIVED(m68705u3prg, m68705prg) MCFG_CPU_ADD("mcu", M68705U3, XTAL_1MHz) MCFG_M68705_PORTB_W_CB(WRITE8(u3prg_state, pb_w)) @@ -287,8 +287,8 @@ ROM_END } // anonymous namespace -// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS -COMP( 1984, 705p5prg, 0, 0, m68705p5prg, m68705prg, m68705prg_state_base, m68705prg, "Motorola", "MC68705P5 Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1984, 705p3prg, 705p5prg, 0, m68705p3prg, m68705prg, m68705prg_state_base, m68705prg, "Motorola", "MC68705P3 Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1984, 705r3prg, 705p5prg, 0, m68705r3prg, m68705prg, m68705prg_state_base, m68705prg, "Motorola", "MC68705R3 Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1984, 705u3prg, 705p5prg, 0, m68705u3prg, m68705prg, m68705prg_state_base, m68705prg, "Motorola", "MC68705U3 Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, 705p5prg, 0, 0, m68705p5prg, m68705prg, p5prg_state, m68705prg, "Motorola", "MC68705P5 Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1984, 705p3prg, 705p5prg, 0, m68705p3prg, m68705prg, p3prg_state, m68705prg, "Motorola", "MC68705P3 Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1984, 705r3prg, 705p5prg, 0, m68705r3prg, m68705prg, r3prg_state, m68705prg, "Motorola", "MC68705R3 Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1984, 705u3prg, 705p5prg, 0, m68705u3prg, m68705prg, u3prg_state, m68705prg, "Motorola", "MC68705U3 Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp index 2f5ae1657ec..5c0cdbab664 100644 --- a/src/mame/drivers/m72.cpp +++ b/src/mame/drivers/m72.cpp @@ -407,7 +407,7 @@ READ8_MEMBER(m72_state::mcu_data_r) INTERRUPT_GEN_MEMBER(m72_state::mcu_int) { //m_mcu_snd_cmd_latch |= 0x11; /* 0x10 is special as well - FIXME */ - m_mcu_snd_cmd_latch = 0x11;// | (machine.rand() & 1); /* 0x10 is special as well - FIXME */ + m_mcu_snd_cmd_latch = 0x11;// | (machine().rand() & 1); /* 0x10 is special as well - FIXME */ device.execute().set_input_line(1, ASSERT_LINE); } @@ -1877,7 +1877,7 @@ static MACHINE_CONFIG_FRAGMENT( m72_audio_chips ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("m72", M72, 0) + MCFG_SOUND_ADD("m72", IREM_M72_AUDIO, 0) MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) @@ -1888,7 +1888,7 @@ static MACHINE_CONFIG_FRAGMENT( m72_audio_chips ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( m72_base, m72_state ) +static MACHINE_CONFIG_START( m72_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ @@ -2000,7 +2000,7 @@ MACHINE_CONFIG_END /****************************************** M84 ***********************************************/ // M84 -static MACHINE_CONFIG_START( rtype2, m72_state ) +static MACHINE_CONFIG_START( rtype2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ @@ -2045,7 +2045,7 @@ MACHINE_CONFIG_END // M84 // is the upd71059c present and unused, or has it been removed from the PCB? it isn't needed beacuse the V35 has it's own IRQ controller. -static MACHINE_CONFIG_START( cosmccop, m72_state ) +static MACHINE_CONFIG_START( cosmccop ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V35,MASTER_CLOCK/2) @@ -2094,7 +2094,7 @@ M82-A-A as the top board M82-B-A and as the bottom board */ -static MACHINE_CONFIG_START( m82, m72_state ) +static MACHINE_CONFIG_START( m82 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ @@ -2130,7 +2130,7 @@ MACHINE_CONFIG_END M85-A-B / M85-B */ -static MACHINE_CONFIG_START( poundfor, m72_state ) +static MACHINE_CONFIG_START( poundfor ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ @@ -3779,11 +3779,11 @@ ROM_END /* M72 */ -GAME( 1987, rtype, 0, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rtypej, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rtypejp, rtype, rtype, rtypep, driver_device, 0, ROT0, "Irem", "R-Type (Japan prototype)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rtypeu, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem (Nintendo of America license)", "R-Type (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rtypeb, rtype, rtype, rtype, driver_device, 0, ROT0, "bootleg", "R-Type (World bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rtype, 0, rtype, rtype, m72_state, 0, ROT0, "Irem", "R-Type (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rtypej, rtype, rtype, rtype, m72_state, 0, ROT0, "Irem", "R-Type (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rtypejp, rtype, rtype, rtypep, m72_state, 0, ROT0, "Irem", "R-Type (Japan prototype)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rtypeu, rtype, rtype, rtype, m72_state, 0, ROT0, "Irem (Nintendo of America license)", "R-Type (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rtypeb, rtype, rtype, rtype, m72_state, 0, ROT0, "bootleg", "R-Type (World bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1987, bchopper, 0, m72, bchopper, m72_state, bchopper, ROT0, "Irem", "Battle Chopper", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1987, mrheli, bchopper, m72_8751, bchopper, m72_state, m72_8751, ROT0, "Irem", "Mr. HELI no Daibouken (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) @@ -3800,7 +3800,7 @@ GAME( 1989, lohtb2, loht, m72_8751, loht, m72_state, m72_875 GAME( 1989, xmultiplm72, xmultipl, m72_xmultipl,xmultipl, m72_state, m72_8751, ROT0, "Irem", "X Multiply (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dbreedm72, dbreed, m72_dbreed, dbreed, m72_state, dbreedm72, ROT0, "Irem", "Dragon Breed (M72 PCB version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // probably Japan version +GAME( 1989, dbreedm72, dbreed, m72_dbreed, dbreed, m72_state, dbreedm72, ROT0, "Irem", "Dragon Breed (M72 PCB version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // probably Japan version GAME( 1991, gallop, cosmccop, m72, gallop, m72_state, gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) @@ -3809,40 +3809,40 @@ GAME( 1990, airduelm72, airduel, m72, airduel, m72_state, airduel GAME( 1990, dkgensanm72, hharry, m72, hharry, m72_state, dkgenm72, ROT0, "Irem", "Daiku no Gensan (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) /* M81 */ -GAME( 1989, xmultipl, 0, m81_xmultipl,m81_xmultipl,driver_device,0, ROT0, "Irem", "X Multiply (World, M81)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dbreed, 0, m81_dbreed, m81_dbreed,driver_device,0, ROT0, "Irem", "Dragon Breed (M81 PCB version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hharry, 0, m81_hharry, m81_hharry,driver_device,0, ROT0, "Irem", "Hammerin' Harry (World, M81)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, xmultipl, 0, m81_xmultipl,m81_xmultipl,m72_state,0, ROT0, "Irem", "X Multiply (World, M81)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dbreed, 0, m81_dbreed, m81_dbreed,m72_state,0, ROT0, "Irem", "Dragon Breed (M81 PCB version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hharry, 0, m81_hharry, m81_hharry,m72_state,0, ROT0, "Irem", "Hammerin' Harry (World, M81)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) /* M82 */ -GAME( 1990, majtitle, 0, m82, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M82-A-A + M82-B-A -GAME( 1990, majtitlej, majtitle, m82, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^ +GAME( 1990, majtitle, 0, m82, rtype2, m72_state, 0, ROT0, "Irem", "Major Title (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M82-A-A + M82-B-A +GAME( 1990, majtitlej, majtitle, m82, rtype2, m72_state, 0, ROT0, "Irem", "Major Title (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^ -GAME( 1990, airduel, 0, m82, airduel, driver_device, 0, ROT270, "Irem", "Air Duel (World, M82-A-A + M82-B-A)", MACHINE_SUPPORTS_SAVE ) // Major Title conversion +GAME( 1990, airduel, 0, m82, airduel, m72_state, 0, ROT270, "Irem", "Air Duel (World, M82-A-A + M82-B-A)", MACHINE_SUPPORTS_SAVE ) // Major Title conversion -GAME( 2009, rtypem82b, rtype, m82, rtype, driver_device, 0, ROT0, "bootleg", "R-Type (Japan, bootleg Major Title conversion, M82)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // unofficial conversion of Major Title, extensive wiremods, made in 2009 by Paul Swan +GAME( 2009, rtypem82b, rtype, m82, rtype, m72_state, 0, ROT0, "bootleg", "R-Type (Japan, bootleg Major Title conversion, M82)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // unofficial conversion of Major Title, extensive wiremods, made in 2009 by Paul Swan -GAME( 1997, rtype2m82b, rtype2, m82, rtype2, driver_device, 0, ROT0, "bootleg", "R-Type II (Japan, bootleg Major Title conversion, M82)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // made in 1997 by Chris Hardy +GAME( 1997, rtype2m82b, rtype2, m82, rtype2, m72_state, 0, ROT0, "bootleg", "R-Type II (Japan, bootleg Major Title conversion, M82)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // made in 1997 by Chris Hardy /* M84 */ -GAME( 1990, hharryu, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem America", "Hammerin' Harry (US, M84)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, dkgensan, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem", "Daiku no Gensan (Japan, M84)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hharryu, hharry, hharryu, hharry, m72_state, 0, ROT0, "Irem America", "Hammerin' Harry (US, M84)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, dkgensan, hharry, hharryu, hharry, m72_state, 0, ROT0, "Irem", "Daiku no Gensan (Japan, M84)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, rtype2, 0, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, rtype2j, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, rtype2jc, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan, revision C)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, rtype2, 0, rtype2, rtype2, m72_state, 0, ROT0, "Irem", "R-Type II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, rtype2j, rtype2, rtype2, rtype2, m72_state, 0, ROT0, "Irem", "R-Type II (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, rtype2jc, rtype2, rtype2, rtype2, m72_state, 0, ROT0, "Irem", "R-Type II (Japan, revision C)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, cosmccop, 0, cosmccop, gallop, driver_device, 0, ROT0, "Irem", "Cosmic Cop (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, cosmccop, 0, cosmccop, gallop, m72_state, 0, ROT0, "Irem", "Cosmic Cop (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ltswords, 0, kengo, kengo, driver_device, 0, ROT0, "Irem", "Lightning Swords", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, kengo, ltswords, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, kengoa, ltswords, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // has 'for use in Japan' message, above set doesn't +GAME( 1991, ltswords, 0, kengo, kengo, m72_state, 0, ROT0, "Irem", "Lightning Swords", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, kengo, ltswords, kengo, kengo, m72_state, 0, ROT0, "Irem", "Ken-Go (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, kengoa, ltswords, kengo, kengo, m72_state, 0, ROT0, "Irem", "Ken-Go (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // has 'for use in Japan' message, above set doesn't /* M85 */ -GAME( 1990, poundfor, 0, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M85-A-B / M85-B -GAME( 1990, poundforj, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^ -GAME( 1990, poundforu, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem America", "Pound for Pound (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^ +GAME( 1990, poundfor, 0, poundfor, poundfor, m72_state, 0, ROT270, "Irem", "Pound for Pound (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // M85-A-B / M85-B +GAME( 1990, poundforj, poundfor, poundfor, poundfor, m72_state, 0, ROT270, "Irem", "Pound for Pound (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^ +GAME( 1990, poundforu, poundfor, poundfor, poundfor, m72_state, 0, ROT270, "Irem America", "Pound for Pound (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // ^ /* bootlegs, unique hw */ -GAME( 1989, lohtb, loht, m72, loht, driver_device, 0, ROT0, "bootleg", "Legend of Hero Tonma (unprotected bootleg)", MACHINE_NOT_WORKING| MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, lohtb, loht, m72, loht, m72_state, 0, ROT0, "bootleg", "Legend of Hero Tonma (unprotected bootleg)", MACHINE_NOT_WORKING| MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/m79152pc.cpp b/src/mame/drivers/m79152pc.cpp index d216e0d588d..35c976fe304 100644 --- a/src/mame/drivers/m79152pc.cpp +++ b/src/mame/drivers/m79152pc.cpp @@ -110,7 +110,7 @@ static GFXDECODE_START( m79152pc ) GFXDECODE_ENTRY( "chargen", 0x0000, m79152pc_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( m79152pc, m79152pc_state ) +static MACHINE_CONFIG_START( m79152pc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(m79152pc_mem) @@ -141,5 +141,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( ????, m79152pc, 0, 0, m79152pc, m79152pc, driver_device, 0, "Mera-Elzab", "MERA 79152 PC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( ????, m79152pc, 0, 0, m79152pc, m79152pc, m79152pc_state, 0, "Mera-Elzab", "MERA 79152 PC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/m79amb.cpp b/src/mame/drivers/m79amb.cpp index 116018e518d..ab39c3f088e 100644 --- a/src/mame/drivers/m79amb.cpp +++ b/src/mame/drivers/m79amb.cpp @@ -189,7 +189,7 @@ INTERRUPT_GEN_MEMBER(m79amb_state::m79amb_interrupt) device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xcf); /* RST 08h */ } -static MACHINE_CONFIG_START( m79amb, m79amb_state ) +static MACHINE_CONFIG_START( m79amb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_19_6608MHz / 10) diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp index 4f601bcb9f0..bbc32655550 100644 --- a/src/mame/drivers/m90.cpp +++ b/src/mame/drivers/m90.cpp @@ -718,7 +718,7 @@ INTERRUPT_GEN_MEMBER(m90_state::bomblord_interrupt) /* Basic hardware -- no decryption table is setup for CPU */ -static MACHINE_CONFIG_START( m90, m90_state ) +static MACHINE_CONFIG_START( m90 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V35, XTAL_32MHz/2) MCFG_CPU_PROGRAM_MAP(m90_main_cpu_map) @@ -750,7 +750,7 @@ static MACHINE_CONFIG_START( m90, m90_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("m72", M72, 0) + MCFG_SOUND_ADD("m72", IREM_M72_AUDIO, 0) MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) @@ -1258,20 +1258,20 @@ DRIVER_INIT_MEMBER(m90_state,bomblord) -GAME( 1991, hasamu, 0, hasamu, hasamu, driver_device, 0, ROT0, "Irem", "Hasamu (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, dynablst, 0, bombrman, dynablst, driver_device, 0, ROT0, "Irem (licensed from Hudson Soft)", "Dynablaster / Bomber Man", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, bombrman, dynablst, bombrman, bombrman, driver_device, 0, ROT0, "Irem (licensed from Hudson Soft)", "Bomber Man (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, atompunk, dynablst, bombrman, atompunk, driver_device, 0, ROT0, "Irem America (licensed from Hudson Soft)", "Atomic Punk (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dynablstb,dynablst, dynablsb, dynablsb, driver_device, 0, ROT0, "bootleg (Seitu)", "Dynablaster / Bomber Man (bootleg, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dynablstb2,dynablst,dynablsb, dynablsb, driver_device, 0, ROT0, "bootleg (Seitu)", "Dynablaster / Bomber Man (bootleg, set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dynablstb3,dynablst,dynablsb, dynablsb, driver_device, 0, ROT0, "bootleg (Seitu)", "Dynablaster / Bomber Man (bootleg, set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // PCB has Playmark labels -GAME( 1992, bbmanw, 0, bbmanw, bbmanw, driver_device, 0, ROT0, "Irem", "Bomber Man World / New Dyna Blaster - Global Quest", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, bbmanwj, bbmanw, bbmanw, bbmanwj, driver_device, 0, ROT0, "Irem", "Bomber Man World (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, bbmanwja, bbmanw, bbmanwj, bbmanwj, driver_device, 0, ROT0, "Irem", "Bomber Man World (Japan, revised sound hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, newapunk, bbmanw, bbmanw, newapunk, driver_device, 0, ROT0, "Irem America", "New Atomic Punk - Global Quest (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, bomblord, bbmanw, bomblord, bbmanw, m90_state, bomblord, ROT0, "bootleg", "Bomber Lord (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, quizf1, 0, quizf1, quizf1, m90_state, quizf1, ROT0, "Irem", "Quiz F1 1-2 Finish (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, riskchal, 0, riskchal, riskchal, driver_device, 0, ROT0, "Irem", "Risky Challenge", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, gussun, riskchal, riskchal, riskchal, driver_device, 0, ROT0, "Irem", "Gussun Oyoyo (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, matchit2, 0, matchit2, matchit2, driver_device, 0, ROT0, "Tamtex", "Match It II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, shisen2, matchit2, matchit2, shisen2, driver_device, 0, ROT0, "Tamtex", "Shisensho II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, hasamu, 0, hasamu, hasamu, m90_state, 0, ROT0, "Irem", "Hasamu (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, dynablst, 0, bombrman, dynablst, m90_state, 0, ROT0, "Irem (licensed from Hudson Soft)", "Dynablaster / Bomber Man", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, bombrman, dynablst, bombrman, bombrman, m90_state, 0, ROT0, "Irem (licensed from Hudson Soft)", "Bomber Man (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, atompunk, dynablst, bombrman, atompunk, m90_state, 0, ROT0, "Irem America (licensed from Hudson Soft)", "Atomic Punk (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dynablstb,dynablst, dynablsb, dynablsb, m90_state, 0, ROT0, "bootleg (Seitu)", "Dynablaster / Bomber Man (bootleg, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dynablstb2,dynablst,dynablsb, dynablsb, m90_state, 0, ROT0, "bootleg (Seitu)", "Dynablaster / Bomber Man (bootleg, set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dynablstb3,dynablst,dynablsb, dynablsb, m90_state, 0, ROT0, "bootleg (Seitu)", "Dynablaster / Bomber Man (bootleg, set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // PCB has Playmark labels +GAME( 1992, bbmanw, 0, bbmanw, bbmanw, m90_state, 0, ROT0, "Irem", "Bomber Man World / New Dyna Blaster - Global Quest", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, bbmanwj, bbmanw, bbmanw, bbmanwj, m90_state, 0, ROT0, "Irem", "Bomber Man World (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, bbmanwja, bbmanw, bbmanwj, bbmanwj, m90_state, 0, ROT0, "Irem", "Bomber Man World (Japan, revised sound hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, newapunk, bbmanw, bbmanw, newapunk, m90_state, 0, ROT0, "Irem America", "New Atomic Punk - Global Quest (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, bomblord, bbmanw, bomblord, bbmanw, m90_state, bomblord, ROT0, "bootleg", "Bomber Lord (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, quizf1, 0, quizf1, quizf1, m90_state, quizf1, ROT0, "Irem", "Quiz F1 1-2 Finish (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, riskchal, 0, riskchal, riskchal, m90_state, 0, ROT0, "Irem", "Risky Challenge", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, gussun, riskchal, riskchal, riskchal, m90_state, 0, ROT0, "Irem", "Gussun Oyoyo (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, matchit2, 0, matchit2, matchit2, m90_state, 0, ROT0, "Tamtex", "Match It II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, shisen2, matchit2, matchit2, shisen2, m90_state, 0, ROT0, "Tamtex", "Shisensho II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/m92.cpp b/src/mame/drivers/m92.cpp index cadf88db39d..2a4af7dadbf 100644 --- a/src/mame/drivers/m92.cpp +++ b/src/mame/drivers/m92.cpp @@ -965,7 +965,7 @@ void m92_state::m92_sprite_interrupt() } -static MACHINE_CONFIG_START( m92, m92_state ) +static MACHINE_CONFIG_START( m92 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",V33,XTAL_18MHz/2) @@ -1068,7 +1068,7 @@ static MACHINE_CONFIG_DERIVED( ppan, m92 ) MCFG_VIDEO_START_OVERRIDE(m92_state,ppan) - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/mac.cpp b/src/mame/drivers/mac.cpp index d42f940160c..79b75997ee4 100644 --- a/src/mame/drivers/mac.cpp +++ b/src/mame/drivers/mac.cpp @@ -906,7 +906,7 @@ static const floppy_interface mac_floppy_interface = "floppy_3_5" }; -static MACHINE_CONFIG_START( mac512ke, mac_state ) +static MACHINE_CONFIG_START( mac512ke ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, C7M) /* 7.8336 MHz */ @@ -1029,7 +1029,7 @@ static MACHINE_CONFIG_DERIVED( macclasc, macplus ) MCFG_MACKBD_REMOVE(MACKBD_TAG) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( macprtb, mac_state ) +static MACHINE_CONFIG_START( macprtb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, C15M) MCFG_CPU_PROGRAM_MAP(macprtb_map) @@ -1053,7 +1053,7 @@ static MACHINE_CONFIG_START( macprtb, mac_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_ASC_ADD("asc", C15M, ASC_TYPE_ASC, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -1090,7 +1090,7 @@ static MACHINE_CONFIG_START( macprtb, mac_state ) MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( macii, mac_state ) +static MACHINE_CONFIG_START( macii ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68020PMMU, C15M) @@ -1101,7 +1101,7 @@ static MACHINE_CONFIG_START( macii, mac_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_ASC_ADD("asc", C15M, ASC_TYPE_ASC, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -1168,7 +1168,7 @@ static MACHINE_CONFIG_DERIVED( maciihmu, macii ) MCFG_CPU_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( maciifx, mac_state ) +static MACHINE_CONFIG_START( maciifx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68030, 40000000) @@ -1177,7 +1177,7 @@ static MACHINE_CONFIG_START( maciifx, mac_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_ASC_ADD("asc", C15M, ASC_TYPE_ASC, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -1275,7 +1275,7 @@ static MACHINE_CONFIG_DERIVED( maclc, macii ) MCFG_NUBUS_OUT_IRQE_CB(WRITELINE(mac_state, nubus_irq_e_w)) MCFG_NUBUS_SLOT_ADD("pds","lcpds", mac_lcpds_cards, nullptr) - MCFG_ASC_REPLACE("asc", C15M, ASC_TYPE_V8, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_REPLACE("asc", C15M, V8, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -1329,7 +1329,7 @@ static MACHINE_CONFIG_DERIVED( maclc3, maclc ) MCFG_RAM_DEFAULT_SIZE("4M") MCFG_RAM_EXTRA_OPTIONS("8M,16M,32M,48M,64M,80M") - MCFG_ASC_REPLACE("asc", C15M, ASC_TYPE_SONORA, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_REPLACE("asc", C15M, SONORA, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -1442,7 +1442,7 @@ static MACHINE_CONFIG_DERIVED( maciicx, maciix ) // IIcx is a IIx with only s MCFG_NUBUS_SLOT_REMOVE("nbe") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( macse30, mac_state ) +static MACHINE_CONFIG_START( macse30 ) MCFG_CPU_ADD("maincpu", M68030, C15M) MCFG_CPU_PROGRAM_MAP(macse30_map) @@ -1465,7 +1465,7 @@ static MACHINE_CONFIG_START( macse30, mac_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_ASC_ADD("asc", C15M, ASC_TYPE_ASC, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -1520,7 +1520,7 @@ static MACHINE_CONFIG_START( macse30, mac_state ) MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( macpb140, mac_state ) +static MACHINE_CONFIG_START( macpb140 ) MCFG_CPU_ADD("maincpu", M68030, C15M) MCFG_CPU_PROGRAM_MAP(macpb140_map) @@ -1543,7 +1543,7 @@ static MACHINE_CONFIG_START( macpb140, mac_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_ASC_ADD("asc", C15M, ASC_TYPE_ASC, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -1608,7 +1608,7 @@ static MACHINE_CONFIG_DERIVED( macpb170, macpb140 ) MCFG_RAM_EXTRA_OPTIONS("6M,8M") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( macpb160, mac_state ) +static MACHINE_CONFIG_START( macpb160 ) MCFG_CPU_ADD("maincpu", M68030, 25000000) MCFG_CPU_PROGRAM_MAP(macpb160_map) @@ -1631,7 +1631,7 @@ static MACHINE_CONFIG_START( macpb160, mac_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_ASC_ADD("asc", C15M, ASC_TYPE_ASC, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -1724,7 +1724,7 @@ static MACHINE_CONFIG_DERIVED( macclas2, maclc ) MCFG_SCREEN_VISIBLE_AREA(0, MAC_H_VIS-1, 0, MAC_V_VIS-1) MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbv) - MCFG_ASC_REPLACE("asc", C15M, ASC_TYPE_EAGLE, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_REPLACE("asc", C15M, EAGLE, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -1814,7 +1814,7 @@ static MACHINE_CONFIG_DERIVED( maciisi, macii ) MCFG_QUANTUM_PERFECT_CPU("maincpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pwrmac, mac_state ) +static MACHINE_CONFIG_START( pwrmac ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC601, 60000000) @@ -1882,7 +1882,7 @@ static MACHINE_CONFIG_START( pwrmac, mac_state ) MCFG_CUDA_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( macqd700, mac_state ) +static MACHINE_CONFIG_START( macqd700 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68040, 25000000) MCFG_CPU_PROGRAM_MAP(quadra700_map) @@ -1902,7 +1902,7 @@ static MACHINE_CONFIG_START( macqd700, mac_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_ASC_ADD("asc", C15M, ASC_TYPE_EASC, WRITELINE(mac_state, mac_asc_irq)) + MCFG_ASC_ADD("asc", C15M, EASC, WRITELINE(mac_state, mac_asc_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -2309,37 +2309,37 @@ ROM_START( maclc520 ) ROM_LOAD( "ede66cbd.rom", 0x000000, 0x100000, CRC(a893cb0f) SHA1(c54ee2f45020a4adeb7451adce04cd6e5fb69790) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -//COMP( 1983, mactw, 0, 0, mac128k, macplus, mac_state, mac128k512k, "Apple Computer", "Macintosh (4.3T Prototype)", MACHINE_NOT_WORKING ) -COMP( 1987, macse, 0, 0, macse, macadb, mac_state, macse, "Apple Computer", "Macintosh SE", 0 ) -COMP( 1987, macsefd, 0, 0, macse, macadb, mac_state, macse, "Apple Computer", "Macintosh SE (FDHD)", 0 ) -COMP( 1987, macii, 0, 0, macii, macadb, mac_state, macii, "Apple Computer", "Macintosh II", 0 ) -COMP( 1987, maciihmu, macii, 0, maciihmu, macadb, mac_state, macii, "Apple Computer", "Macintosh II (w/o 68851 MMU)", 0 ) -COMP( 1988, mac2fdhd, 0, 0, macii, macadb, mac_state, maciifdhd, "Apple Computer", "Macintosh II (FDHD)", 0 ) -COMP( 1988, maciix, mac2fdhd, 0, maciix, macadb, mac_state, maciix, "Apple Computer", "Macintosh IIx", 0 ) -COMP( 1989, macprtb, 0, 0, macprtb, macadb, mac_state, macprtb, "Apple Computer", "Macintosh Portable", MACHINE_NOT_WORKING ) -COMP( 1989, macse30, mac2fdhd, 0, macse30, macadb, mac_state, macse30, "Apple Computer", "Macintosh SE/30", 0 ) -COMP( 1989, maciicx, mac2fdhd, 0, maciicx, macadb, mac_state, maciicx, "Apple Computer", "Macintosh IIcx", 0 ) -COMP( 1989, maciici, 0, 0, maciici, maciici, mac_state, maciici, "Apple Computer", "Macintosh IIci", 0 ) -COMP( 1990, maciifx, 0, 0, maciifx, macadb, mac_state, maciifx, "Apple Computer", "Macintosh IIfx", MACHINE_NOT_WORKING ) -COMP( 1990, macclasc, 0, 0, macclasc, macadb, mac_state, macclassic, "Apple Computer", "Macintosh Classic", 0 ) -COMP( 1990, maclc, 0, 0, maclc, maciici, mac_state, maclc, "Apple Computer", "Macintosh LC", MACHINE_IMPERFECT_SOUND ) -COMP( 1990, maciisi, 0, 0, maciisi, maciici, mac_state, maciisi, "Apple Computer", "Macintosh IIsi", 0 ) -COMP( 1991, macpb100, 0, 0, macprtb, macadb, mac_state, macprtb, "Apple Computer", "Macintosh PowerBook 100", MACHINE_NOT_WORKING ) -COMP( 1991, macpb140, 0, 0, macpb140, macadb, mac_state, macpb140, "Apple Computer", "Macintosh PowerBook 140", MACHINE_NOT_WORKING ) -COMP( 1991, macpb170, macpb140, 0, macpb170, macadb, mac_state, macpb140, "Apple Computer", "Macintosh PowerBook 170", MACHINE_NOT_WORKING ) -COMP( 1991, macqd700, macpb140, 0, macqd700, macadb, mac_state, macquadra700, "Apple Computer", "Macintosh Quadra 700", MACHINE_NOT_WORKING ) -COMP( 1991, macclas2, 0, 0, macclas2, macadb, mac_state, macclassic2, "Apple Computer", "Macintosh Classic II", MACHINE_IMPERFECT_SOUND ) -COMP( 1991, maclc2, 0, 0, maclc2, maciici, mac_state, maclc2, "Apple Computer", "Macintosh LC II", MACHINE_IMPERFECT_SOUND ) -COMP( 1992, macpb145, macpb140, 0, macpb145, macadb, mac_state, macpb140, "Apple Computer", "Macintosh PowerBook 145", MACHINE_NOT_WORKING ) -COMP( 1992, macpb160, 0, 0, macpb160, macadb, mac_state, macpb160, "Apple Computer", "Macintosh PowerBook 160", MACHINE_NOT_WORKING ) -COMP( 1992, macpb180, macpb160, 0, macpb180, macadb, mac_state, macpb160, "Apple Computer", "Macintosh PowerBook 180", MACHINE_NOT_WORKING ) -COMP( 1992, macpb180c,macpb160, 0, macpb180c,macadb, mac_state, macpb160, "Apple Computer", "Macintosh PowerBook 180c", MACHINE_NOT_WORKING ) -COMP( 1992, macpd210, 0, 0, macpd210, macadb, mac_state, macpd210, "Apple Computer", "Macintosh PowerBook Duo 210", MACHINE_NOT_WORKING ) -COMP( 1993, maccclas, 0, 0, maccclas, macadb, mac_state, maclrcclassic,"Apple Computer", "Macintosh Color Classic", MACHINE_NOT_WORKING ) -COMP( 1992, macpb145b,macpb140, 0, macpb170, macadb, mac_state, macpb140, "Apple Computer", "Macintosh PowerBook 145B", MACHINE_NOT_WORKING ) -COMP( 1993, maclc3, 0, 0, maclc3, maciici, mac_state, maclc3, "Apple Computer", "Macintosh LC III", MACHINE_IMPERFECT_SOUND ) -COMP( 1993, maciivx, 0, 0, maciivx, maciici, mac_state, maciivx, "Apple Computer", "Macintosh IIvx", MACHINE_IMPERFECT_SOUND ) -COMP( 1993, maciivi, maciivx, 0, maciivi, maciici, mac_state, maciivx, "Apple Computer", "Macintosh IIvi", MACHINE_IMPERFECT_SOUND ) -COMP( 1993, maclc520, 0, 0, maclc520, maciici, mac_state, maclc520, "Apple Computer", "Macintosh LC 520", MACHINE_NOT_WORKING ) -COMP( 1994, pmac6100, 0, 0, pwrmac, macadb, mac_state, macpm6100, "Apple Computer", "Power Macintosh 6100/60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +//COMP( 1983, mactw, 0, 0, mac128k, macplus, mac_state, mac128k512k, "Apple Computer", "Macintosh (4.3T Prototype)", MACHINE_NOT_WORKING ) +COMP( 1987, macse, 0, 0, macse, macadb, mac_state, macse, "Apple Computer", "Macintosh SE", 0 ) +COMP( 1987, macsefd, 0, 0, macse, macadb, mac_state, macse, "Apple Computer", "Macintosh SE (FDHD)", 0 ) +COMP( 1987, macii, 0, 0, macii, macadb, mac_state, macii, "Apple Computer", "Macintosh II", 0 ) +COMP( 1987, maciihmu, macii, 0, maciihmu, macadb, mac_state, macii, "Apple Computer", "Macintosh II (w/o 68851 MMU)", 0 ) +COMP( 1988, mac2fdhd, 0, 0, macii, macadb, mac_state, maciifdhd, "Apple Computer", "Macintosh II (FDHD)", 0 ) +COMP( 1988, maciix, mac2fdhd, 0, maciix, macadb, mac_state, maciix, "Apple Computer", "Macintosh IIx", 0 ) +COMP( 1989, macprtb, 0, 0, macprtb, macadb, mac_state, macprtb, "Apple Computer", "Macintosh Portable", MACHINE_NOT_WORKING ) +COMP( 1989, macse30, mac2fdhd, 0, macse30, macadb, mac_state, macse30, "Apple Computer", "Macintosh SE/30", 0 ) +COMP( 1989, maciicx, mac2fdhd, 0, maciicx, macadb, mac_state, maciicx, "Apple Computer", "Macintosh IIcx", 0 ) +COMP( 1989, maciici, 0, 0, maciici, maciici, mac_state, maciici, "Apple Computer", "Macintosh IIci", 0 ) +COMP( 1990, maciifx, 0, 0, maciifx, macadb, mac_state, maciifx, "Apple Computer", "Macintosh IIfx", MACHINE_NOT_WORKING ) +COMP( 1990, macclasc, 0, 0, macclasc, macadb, mac_state, macclassic, "Apple Computer", "Macintosh Classic", 0 ) +COMP( 1990, maclc, 0, 0, maclc, maciici, mac_state, maclc, "Apple Computer", "Macintosh LC", MACHINE_IMPERFECT_SOUND ) +COMP( 1990, maciisi, 0, 0, maciisi, maciici, mac_state, maciisi, "Apple Computer", "Macintosh IIsi", 0 ) +COMP( 1991, macpb100, 0, 0, macprtb, macadb, mac_state, macprtb, "Apple Computer", "Macintosh PowerBook 100", MACHINE_NOT_WORKING ) +COMP( 1991, macpb140, 0, 0, macpb140, macadb, mac_state, macpb140, "Apple Computer", "Macintosh PowerBook 140", MACHINE_NOT_WORKING ) +COMP( 1991, macpb170, macpb140, 0, macpb170, macadb, mac_state, macpb140, "Apple Computer", "Macintosh PowerBook 170", MACHINE_NOT_WORKING ) +COMP( 1991, macqd700, macpb140, 0, macqd700, macadb, mac_state, macquadra700, "Apple Computer", "Macintosh Quadra 700", MACHINE_NOT_WORKING ) +COMP( 1991, macclas2, 0, 0, macclas2, macadb, mac_state, macclassic2, "Apple Computer", "Macintosh Classic II", MACHINE_IMPERFECT_SOUND ) +COMP( 1991, maclc2, 0, 0, maclc2, maciici, mac_state, maclc2, "Apple Computer", "Macintosh LC II", MACHINE_IMPERFECT_SOUND ) +COMP( 1992, macpb145, macpb140, 0, macpb145, macadb, mac_state, macpb140, "Apple Computer", "Macintosh PowerBook 145", MACHINE_NOT_WORKING ) +COMP( 1992, macpb160, 0, 0, macpb160, macadb, mac_state, macpb160, "Apple Computer", "Macintosh PowerBook 160", MACHINE_NOT_WORKING ) +COMP( 1992, macpb180, macpb160, 0, macpb180, macadb, mac_state, macpb160, "Apple Computer", "Macintosh PowerBook 180", MACHINE_NOT_WORKING ) +COMP( 1992, macpb180c,macpb160, 0, macpb180c,macadb, mac_state, macpb160, "Apple Computer", "Macintosh PowerBook 180c", MACHINE_NOT_WORKING ) +COMP( 1992, macpd210, 0, 0, macpd210, macadb, mac_state, macpd210, "Apple Computer", "Macintosh PowerBook Duo 210", MACHINE_NOT_WORKING ) +COMP( 1993, maccclas, 0, 0, maccclas, macadb, mac_state, maclrcclassic,"Apple Computer", "Macintosh Color Classic", MACHINE_NOT_WORKING ) +COMP( 1992, macpb145b,macpb140, 0, macpb170, macadb, mac_state, macpb140, "Apple Computer", "Macintosh PowerBook 145B", MACHINE_NOT_WORKING ) +COMP( 1993, maclc3, 0, 0, maclc3, maciici, mac_state, maclc3, "Apple Computer", "Macintosh LC III", MACHINE_IMPERFECT_SOUND ) +COMP( 1993, maciivx, 0, 0, maciivx, maciici, mac_state, maciivx, "Apple Computer", "Macintosh IIvx", MACHINE_IMPERFECT_SOUND ) +COMP( 1993, maciivi, maciivx, 0, maciivi, maciici, mac_state, maciivx, "Apple Computer", "Macintosh IIvi", MACHINE_IMPERFECT_SOUND ) +COMP( 1993, maclc520, 0, 0, maclc520, maciici, mac_state, maclc520, "Apple Computer", "Macintosh LC 520", MACHINE_NOT_WORKING ) +COMP( 1994, pmac6100, 0, 0, pwrmac, macadb, mac_state, macpm6100, "Apple Computer", "Power Macintosh 6100/60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/mac128.cpp b/src/mame/drivers/mac128.cpp index 3557adbe421..0da4c911a62 100644 --- a/src/mame/drivers/mac128.cpp +++ b/src/mame/drivers/mac128.cpp @@ -202,6 +202,8 @@ public: /* keycode buffer (used for keypad/arrow key transition) */ int m_keycode_buf[2]; int m_keycode_buf_index; + + int m_cb2_in; #endif /* keyboard matrix to detect transition - macadb needs to stop relying on this */ @@ -380,6 +382,24 @@ void mac128_state::set_via_interrupt(int value) void mac128_state::vblank_irq() { +#ifndef MAC_USE_EMULATED_KBD + /* handle keyboard */ + if (m_kbd_comm == true && m_kbd_receive == false) + { + int keycode = scan_keyboard(); + + if (keycode != 0x7B) + { + /* if key pressed, send the code */ + + logerror("keyboard enquiry successful, keycode %X\n", keycode); + + m_inquiry_timeout->reset(); + kbd_shift_out(keycode); + } + } +#endif + m_ca1_data ^= 1; m_via->write_ca1(m_ca1_data); @@ -940,19 +960,35 @@ TIMER_CALLBACK_MEMBER(mac128_state::kbd_clock) if (m_kbd_comm == TRUE) { - for (i=0; i<8; i++) + for (i=0; i<9; i++) { /* Put data on CB2 if we are sending*/ if (m_kbd_receive == FALSE) + { m_via->write_cb2(m_kbd_shift_reg&0x80?1:0); - m_kbd_shift_reg <<= 1; + if (i > 0) + { + m_kbd_shift_reg <<= 1; + } + } + m_via->write_cb1(0); m_via->write_cb1(1); + + if (m_kbd_receive == TRUE) + { + if (i < 8) + { + m_kbd_shift_reg <<= 1; + m_kbd_shift_reg |= (m_cb2_in & 1); + } + } } if (m_kbd_receive == TRUE) { m_kbd_receive = FALSE; /* Process the command received from mac */ + //printf("Mac sent %02x\n", m_kbd_shift_reg & 0xff); keyboard_receive(m_kbd_shift_reg & 0xff); } else @@ -967,6 +1003,7 @@ void mac128_state::kbd_shift_out(int data) { if (m_kbd_comm == TRUE) { + //printf("%02x to Mac\n", data); m_kbd_shift_reg = data; machine().scheduler().timer_set(attotime::from_msec(1), timer_expired_delegate(FUNC(mac128_state::kbd_clock),this)); } @@ -974,6 +1011,7 @@ void mac128_state::kbd_shift_out(int data) WRITE_LINE_MEMBER(mac128_state::mac_via_out_cb2) { + //printf("CB2 = %d, kbd_comm = %d\n", state, m_kbd_comm); if (m_kbd_comm == FALSE && state == 0) { /* Mac pulls CB2 down to initiate communication */ @@ -984,7 +1022,7 @@ WRITE_LINE_MEMBER(mac128_state::mac_via_out_cb2) if (m_kbd_comm == TRUE && m_kbd_receive == TRUE) { /* Shift in what mac is sending */ - m_kbd_shift_reg = (m_kbd_shift_reg & ~1) | state; + m_cb2_in = state; } } @@ -1003,6 +1041,7 @@ TIMER_CALLBACK_MEMBER(mac128_state::inquiry_timeout_func) */ void mac128_state::keyboard_receive(int val) { + //printf("Mac sent %02x\n", val); switch (val) { case 0x10: @@ -1288,7 +1327,7 @@ static const floppy_interface mac_floppy_interface = "floppy_3_5" }; -static MACHINE_CONFIG_START( mac512ke, mac128_state ) +static MACHINE_CONFIG_START( mac512ke ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, C7M) /* 7.8336 MHz */ MCFG_CPU_PROGRAM_MAP(mac512ke_map) diff --git a/src/mame/drivers/macp.cpp b/src/mame/drivers/macp.cpp index 2ac419edd5a..9a8e29d0e09 100644 --- a/src/mame/drivers/macp.cpp +++ b/src/mame/drivers/macp.cpp @@ -44,7 +44,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( cicplay ) INPUT_PORTS_END -static MACHINE_CONFIG_START( macp, macp_state ) +static MACHINE_CONFIG_START( macp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2500000) MCFG_CPU_PROGRAM_MAP(macp_map) @@ -112,20 +112,18 @@ ROM_START(nbamac) ROM_LOAD("mac_snd.bin", 0x0000, 0x8000, CRC(d7aedbac) SHA1(4b59028e08b2d7ff8f19596022ba6e830cf736e2)) ROM_END +ROM_START(glxplay) + ROM_REGION(0x4000, "maincpu", 0) + ROM_LOAD("1083-1.cpu", 0x0000, 0x2000, CRC(3df33169) SHA1(657720aab4cccf3364f013acb3f5dbc46fe0e05c)) + ROM_LOAD("1083-2.cpu", 0x2000, 0x2000, CRC(47b4f49e) SHA1(59853ac56bb9e2dc7b848dc46ebd27c21b9d2e82)) +ROM_END + ROM_START(kidnap) ROM_REGION(0x4000, "maincpu", 0) ROM_LOAD("kidnap_1.bin", 0x0000, 0x2000, CRC(4b8f9bb1) SHA1(16672c1a5e55ba5963fbd8834443dbead9bdff10) BAD_DUMP) ROM_LOAD("kidnap_2.bin", 0x2000, 0x2000, CRC(4333d9ba) SHA1(362bcc9caaf37ad7efc116c3bee9b99cbbfa0563)) ROM_END -/* not dumped yet -ROM_START(glxplay) - ROM_REGION(0x4000, "maincpu", 0) - ROM_LOAD("1083-1.cpu", 0x0000, 0x2000, NO_DUMP) - ROM_LOAD("1083-2.cpu", 0x2000, 0x2000, NO_DUMP) -ROM_END -*/ - ROM_START(glxplay2) ROM_REGION(0x4000, "maincpu", 0) ROM_LOAD("1382-1.cpu", 0x0000, 0x2000, CRC(da43b0b9) SHA1(b13b260c61b3bd0b7632aabcdbcf4cdd5cbe4b22)) @@ -133,14 +131,14 @@ ROM_START(glxplay2) ROM_END // MAC S.A. pinballs -GAME( 1986, macgalxy, 0, macp0, macp, driver_device, 0, ROT0, "MAC S.A.", "MAC's Galaxy", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, spctrain, 0, macp, macp, driver_device, 0, ROT0, "MAC S.A.", "Space Train (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1988, spcpnthr, 0, macpmsm, macp, driver_device, 0, ROT0, "MAC S.A.", "Space Panther", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 19??, mac_1808, 0, macpmsm, macp, driver_device, 0, ROT0, "MAC S.A.", "Unknown Game (MAC #1808)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1995, macjungn, 0, macpmsm, macp, driver_device, 0, ROT0, "MAC S.A.", "MAC Jungle (New version)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1996, nbamac, 0, macpmsm, macp, driver_device, 0, ROT0, "MAC S.A.", "NBA MAC", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, macgalxy, 0, macp0, macp, macp_state, 0, ROT0, "MAC S.A.", "MAC's Galaxy", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, spctrain, 0, macp, macp, macp_state, 0, ROT0, "MAC S.A.", "Space Train (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1988, spcpnthr, 0, macpmsm, macp, macp_state, 0, ROT0, "MAC S.A.", "Space Panther", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 19??, mac_1808, 0, macpmsm, macp, macp_state, 0, ROT0, "MAC S.A.", "Unknown Game (MAC #1808)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1995, macjungn, 0, macpmsm, macp, macp_state, 0, ROT0, "MAC S.A.", "MAC Jungle (New version)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1996, nbamac, 0, macpmsm, macp, macp_state, 0, ROT0, "MAC S.A.", "NBA MAC", MACHINE_IS_SKELETON_MECHANICAL ) // CICPlay pinballs -GAME( 1986, kidnap, 0, macp0, cicplay, driver_device, 0, ROT0, "CICPlay", "Kidnap", MACHINE_IS_SKELETON_MECHANICAL ) -// GAME( 1986, glxplay, 0, macp0, cicplay, driver_device, 0, ROT0, "CICPlay", "Galaxy Play", MACHINE_IS_SKELETON_MECHANICAL ) // not dumped yet -GAME( 1987, glxplay2, 0, macp0, cicplay, driver_device, 0, ROT0, "CICPlay", "Galaxy Play 2", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1985, glxplay, 0, macp0, cicplay, macp_state, 0, ROT0, "CICPlay", "Galaxy Play", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, kidnap, 0, macp0, cicplay, macp_state, 0, ROT0, "CICPlay", "Kidnap", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, glxplay2, 0, macp0, cicplay, macp_state, 0, ROT0, "CICPlay", "Galaxy Play 2", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/macpci.cpp b/src/mame/drivers/macpci.cpp index e76ed9d4dac..a2e325b925d 100644 --- a/src/mame/drivers/macpci.cpp +++ b/src/mame/drivers/macpci.cpp @@ -89,7 +89,7 @@ uint32_t macpci_state::screen_update_pippin(screen_device &screen, bitmap_ind16 return 0; } -static MACHINE_CONFIG_START( pippin, macpci_state ) +static MACHINE_CONFIG_START( pippin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC603, 66000000) MCFG_CPU_PROGRAM_MAP(pippin_mem) @@ -167,5 +167,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1996, pippin, 0, 0, pippin, pippin, driver_device, 0, "Apple / Bandai", "Pippin @mark", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1996, pippin, 0, 0, pippin, pippin, macpci_state, 0, "Apple / Bandai", "Pippin @mark", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/macrossp.cpp b/src/mame/drivers/macrossp.cpp index 57c12137b40..6da90c12abc 100644 --- a/src/mame/drivers/macrossp.cpp +++ b/src/mame/drivers/macrossp.cpp @@ -539,7 +539,7 @@ void macrossp_state::machine_reset() m_snd_toggle = 0; } -static MACHINE_CONFIG_START( macrossp, macrossp_state ) +static MACHINE_CONFIG_START( macrossp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, 50000000/2) /* 25 MHz */ @@ -557,7 +557,7 @@ static MACHINE_CONFIG_START( macrossp, macrossp_state ) MCFG_SCREEN_SIZE(32*16, 16*16) MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 0*16, 15*16-1) MCFG_SCREEN_UPDATE_DRIVER(macrossp_state, screen_update_macrossp) - MCFG_SCREEN_VBLANK_DRIVER(macrossp_state, screen_eof_macrossp) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(macrossp_state, screen_vblank_macrossp)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", macrossp) diff --git a/src/mame/drivers/macs.cpp b/src/mame/drivers/macs.cpp index 709a24aff47..dbdabaa62aa 100644 --- a/src/mame/drivers/macs.cpp +++ b/src/mame/drivers/macs.cpp @@ -486,7 +486,7 @@ ST0016_DMA_OFFS_CB(macs_state::dma_offset) return m_cart_bank; } -static MACHINE_CONFIG_START( macs, macs_state ) +static MACHINE_CONFIG_START( macs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",ST0016_CPU,8000000) /* 8 MHz ? */ MCFG_CPU_PROGRAM_MAP(macs_mem) @@ -767,11 +767,11 @@ DRIVER_INIT_MEMBER(macs_state,kisekaem) } -GAME( 1995, macsbios, 0, macs, macs_m, macs_state, macs, ROT0, "I'Max", "Multi Amenity Cassette System BIOS", MACHINE_IS_BIOS_ROOT | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1995, mac2bios, 0, macs, macs_m, macs_state, macs2, ROT0, "I'Max", "Multi Amenity Cassette System 2 BIOS", MACHINE_IS_BIOS_ROOT | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1995, macsbios, 0, macs, macs_m, macs_state, macs, ROT0, "I'Max", "Multi Amenity Cassette System BIOS", MACHINE_IS_BIOS_ROOT | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1995, mac2bios, 0, macs, macs_m, macs_state, macs2, ROT0, "I'Max", "Multi Amenity Cassette System 2 BIOS", MACHINE_IS_BIOS_ROOT | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1995, kisekaem, macsbios, macs, kisekaem, macs_state, kisekaem, ROT0, "I'Max", "Kisekae Mahjong", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) -GAME( 1995, kisekaeh, macsbios, macs, macs_h, macs_state, kisekaeh, ROT0, "I'Max", "Kisekae Hanafuda", MACHINE_NOT_WORKING |MACHINE_IMPERFECT_SOUND) -GAME( 1996, cultname, macsbios, macs, macs_m, macs_state, macs, ROT0, "I'Max", "Seimei-Kantei-Meimei-Ki Cult Name", MACHINE_NOT_WORKING |MACHINE_IMPERFECT_SOUND) -GAME( 1999, yuka, macsbios, macs, macs_h, macs_state, macs2, ROT0, "Yubis / T.System", "Yu-Ka", 0 ) -GAME( 1999, yujan, macsbios, macs, macs_m, macs_state, macs2, ROT0, "Yubis / T.System", "Yu-Jan", 0 ) +GAME( 1995, kisekaem, macsbios, macs, kisekaem, macs_state, kisekaem, ROT0, "I'Max", "Kisekae Mahjong", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, kisekaeh, macsbios, macs, macs_h, macs_state, kisekaeh, ROT0, "I'Max", "Kisekae Hanafuda", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, cultname, macsbios, macs, macs_m, macs_state, macs, ROT0, "I'Max", "Seimei-Kantei-Meimei-Ki Cult Name", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, yuka, macsbios, macs, macs_h, macs_state, macs2, ROT0, "Yubis / T.System", "Yu-Ka", 0 ) +GAME( 1999, yujan, macsbios, macs, macs_m, macs_state, macs2, ROT0, "Yubis / T.System", "Yu-Jan", 0 ) diff --git a/src/mame/drivers/madalien.cpp b/src/mame/drivers/madalien.cpp index ba4a1054aae..6586f1144e2 100644 --- a/src/mame/drivers/madalien.cpp +++ b/src/mame/drivers/madalien.cpp @@ -162,7 +162,7 @@ static INPUT_PORTS_START( madalien ) INPUT_PORTS_END -static MACHINE_CONFIG_START( madalien, madalien_state ) +static MACHINE_CONFIG_START( madalien ) /* main CPU */ MCFG_CPU_ADD("maincpu", M6502, MADALIEN_MAIN_CLOCK / 8) /* 1324kHz */ @@ -464,6 +464,6 @@ ROM_START( madalienb ) ROM_END /* set parent machine inp init */ -GAME( 1980, madalien, 0, madalien, madalien, driver_device, 0, ROT270, "Data East Corporation", "Mad Alien (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, madaliena,madalien, madalien, madalien, driver_device, 0, ROT270, "Data East Corporation", "Mad Alien (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, madalienb,madalien, madalien, madalien, driver_device, 0, ROT270, "Data East Corporation", "Mad Alien (set 2, alt gfx)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, madalien, 0, madalien, madalien, madalien_state, 0, ROT270, "Data East Corporation", "Mad Alien (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, madaliena,madalien, madalien, madalien, madalien_state, 0, ROT270, "Data East Corporation", "Mad Alien (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, madalienb,madalien, madalien, madalien, madalien_state, 0, ROT270, "Data East Corporation", "Mad Alien (set 2, alt gfx)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/madmotor.cpp b/src/mame/drivers/madmotor.cpp index dad6e18407b..d81b46b4b0d 100644 --- a/src/mame/drivers/madmotor.cpp +++ b/src/mame/drivers/madmotor.cpp @@ -232,7 +232,7 @@ void madmotor_state::machine_reset() m_flipscreen = 0; } -static MACHINE_CONFIG_START( madmotor, madmotor_state ) +static MACHINE_CONFIG_START( madmotor ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* Custom chip 59, 24 MHz crystal */ @@ -286,10 +286,10 @@ static MACHINE_CONFIG_START( madmotor, madmotor_state ) MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(1, "mono", 0.45) - MCFG_OKIM6295_ADD("oki1", 1023924, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", 1023924, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki2", 2047848, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", 2047848, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END diff --git a/src/mame/drivers/magic10.cpp b/src/mame/drivers/magic10.cpp index 0057e4db9cc..477a5de51ae 100644 --- a/src/mame/drivers/magic10.cpp +++ b/src/mame/drivers/magic10.cpp @@ -737,7 +737,7 @@ GFXDECODE_END * Machine Drivers * ****************************/ -static MACHINE_CONFIG_START( magic10, magic10_state ) +static MACHINE_CONFIG_START( magic10 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) // 10 MHz. MCFG_CPU_PROGRAM_MAP(magic10_map) @@ -760,7 +760,7 @@ static MACHINE_CONFIG_START( magic10, magic10_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1492,7 +1492,7 @@ DRIVER_INIT_MEMBER(magic10_state, altaten) * Game Drivers * ******************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT GAMEL( 1995, magic10, 0, magic10, magic10, magic10_state, magic10, ROT0, "A.W.P. Games", "Magic's 10 (ver. 16.55)", 0, layout_sgsafari ) GAMEL( 1995, magic10a, magic10, magic10, magic10, magic10_state, magic10, ROT0, "A.W.P. Games", "Magic's 10 (ver. 16.54)", 0, layout_sgsafari ) GAMEL( 1995, magic10b, magic10, magic10a, magic10, magic10_state, magic10, ROT0, "A.W.P. Games", "Magic's 10 (ver. 16.45)", 0, layout_sgsafari ) diff --git a/src/mame/drivers/magicard.cpp b/src/mame/drivers/magicard.cpp index 2ff9031ceb1..1f481203b9d 100644 --- a/src/mame/drivers/magicard.cpp +++ b/src/mame/drivers/magicard.cpp @@ -751,7 +751,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, magicard_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( magicard, magicard_state ) +static MACHINE_CONFIG_START( magicard ) MCFG_CPU_ADD("maincpu", SCC68070, CLOCK_A / 2) /* SCC-68070 CCA84 datasheet */ MCFG_CPU_PROGRAM_MAP(magicard_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", magicard_state, magicard_irq) /* no interrupts? (it erases the vectors..) */ @@ -902,7 +902,7 @@ DRIVER_INIT_MEMBER(magicard_state, magicard) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 199?, magicard, 0, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Magic Card (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) GAME( 199?, magicarda, magicard, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Magic Card (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/magicfly.cpp b/src/mame/drivers/magicfly.cpp index ee116e13b3a..fec2be3368a 100644 --- a/src/mame/drivers/magicfly.cpp +++ b/src/mame/drivers/magicfly.cpp @@ -932,7 +932,7 @@ GFXDECODE_END * Machine Drivers * *********************************************/ -static MACHINE_CONFIG_START( magicfly, magicfly_state ) +static MACHINE_CONFIG_START( magicfly ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 16) /* guess */ @@ -1056,7 +1056,7 @@ ROM_END * Game Drivers * *********************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ -GAME( 198?, magicfly, 0, magicfly, magicfly, driver_device, 0, ROT0, "P&A Games", "Magic Fly", 0 ) -GAME( 198?, 7mezzo, 0, 7mezzo, 7mezzo, driver_device, 0, ROT0, "", "7 e Mezzo", 0 ) -GAME( 198?, bchance, 0, bchance, bchance, driver_device, 0, ROT0, "", "Bonne Chance! (French/English)", MACHINE_IMPERFECT_GRAPHICS ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 198?, magicfly, 0, magicfly, magicfly, magicfly_state, 0, ROT0, "P&A Games", "Magic Fly", 0 ) +GAME( 198?, 7mezzo, 0, 7mezzo, 7mezzo, magicfly_state, 0, ROT0, "", "7 e Mezzo", 0 ) +GAME( 198?, bchance, 0, bchance, bchance, magicfly_state, 0, ROT0, "", "Bonne Chance! (French/English)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/magictg.cpp b/src/mame/drivers/magictg.cpp index feede417431..c5c8b27649a 100644 --- a/src/mame/drivers/magictg.cpp +++ b/src/mame/drivers/magictg.cpp @@ -897,7 +897,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( magictg, magictg_state ) +static MACHINE_CONFIG_START( magictg ) MCFG_CPU_ADD("mips", R5000BE, 150000000) /* TODO: CPU type and clock are unknown */ //MCFG_MIPS3_ICACHE_SIZE(16384) /* TODO: Unknown */ //MCFG_MIPS3_DCACHE_SIZE(16384) /* TODO: Unknown */ @@ -1013,5 +1013,5 @@ ROM_END * *************************************/ -GAME( 1997, magictg, 0, magictg, magictg, driver_device, 0, ROT0, "Acclaim", "Magic the Gathering: Armageddon (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1997, magictga, magictg, magictg, magictg, driver_device, 0, ROT0, "Acclaim", "Magic the Gathering: Armageddon (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1997, magictg, 0, magictg, magictg, magictg_state, 0, ROT0, "Acclaim", "Magic the Gathering: Armageddon (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1997, magictga, magictg, magictg, magictg, magictg_state, 0, ROT0, "Acclaim", "Magic the Gathering: Armageddon (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/magmax.cpp b/src/mame/drivers/magmax.cpp index fb26b84c386..56952be50bb 100644 --- a/src/mame/drivers/magmax.cpp +++ b/src/mame/drivers/magmax.cpp @@ -334,7 +334,7 @@ static GFXDECODE_START( magmax ) GFXDECODE_END -static MACHINE_CONFIG_START( magmax, magmax_state ) +static MACHINE_CONFIG_START( magmax ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ @@ -426,4 +426,4 @@ ROM_START( magmax ) ROM_END -GAME( 1985, magmax, 0, magmax, magmax, driver_device, 0, ROT0, "Nichibutsu", "Mag Max", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, magmax, 0, magmax, magmax, magmax_state, 0, ROT0, "Nichibutsu", "Mag Max", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/magnum.cpp b/src/mame/drivers/magnum.cpp index 773f44273d7..33ce723634a 100644 --- a/src/mame/drivers/magnum.cpp +++ b/src/mame/drivers/magnum.cpp @@ -16,20 +16,23 @@ class magnum_state : public driver_device { public: - magnum_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_palette(*this, "palette"), - m_cgrom(*this, "cgrom"), - m_beep(*this, "beep") - {} + magnum_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_palette(*this, "palette") + , m_cgrom(*this, "cgrom") + , m_beep(*this, "beep") + { + } DECLARE_READ8_MEMBER(lcd_r); DECLARE_WRITE8_MEMBER(lcd_w); DECLARE_WRITE8_MEMBER(beep_w); u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + protected: virtual void machine_reset() override; virtual void machine_start() override; + private: required_device m_palette; required_memory_region m_cgrom; @@ -140,7 +143,7 @@ static ADDRESS_MAP_START( magnum_io, AS_IO, 16, magnum_state ) AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("rtc", cdp1879_device, read, write, 0x00ff) ADDRESS_MAP_END -static MACHINE_CONFIG_START( magnum, magnum_state ) +static MACHINE_CONFIG_START( magnum ) MCFG_CPU_ADD("maincpu", I80186, XTAL_12MHz / 2) MCFG_CPU_PROGRAM_MAP(magnum_map) MCFG_CPU_IO_MAP(magnum_io) @@ -181,4 +184,4 @@ ROM_START( magnum ) ROM_LOAD("hd44780_a00.bin", 0x0000, 0x1000, BAD_DUMP CRC(01d108e2) SHA1(bc0cdf0c9ba895f22e183c7bd35a3f655f2ca96f)) ROM_END -COMP( 1983, magnum, 0, 0, magnum, 0, driver_device, 0, "Dulmont", "Magnum", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1983, magnum, 0, 0, magnum, 0, magnum_state, 0, "Dulmont", "Magnum", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/magtouch.cpp b/src/mame/drivers/magtouch.cpp index 5fe05796c7a..c4518a6f057 100644 --- a/src/mame/drivers/magtouch.cpp +++ b/src/mame/drivers/magtouch.cpp @@ -182,7 +182,7 @@ static MACHINE_CONFIG_FRAGMENT( magtouch_sb_conf ) MCFG_DEVICE_SLOT_INTERFACE(pc_joysticks, nullptr, true) // remove joystick MACHINE_CONFIG_END -static MACHINE_CONFIG_START( magtouch, magtouch_state ) +static MACHINE_CONFIG_START( magtouch ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I386, 14318180*2) /* I386 ?? Mhz */ MCFG_CPU_PROGRAM_MAP(magtouch_map) @@ -243,4 +243,4 @@ ROM_START(magtouch) ROM_FILL(0x511ba, 1, 0xeb) // skip csum ROM_END -GAME( 1995, magtouch, 0, magtouch, magtouch, driver_device, 0, ROT0, "Micro Manufacturing", "Magical Touch", MACHINE_UNEMULATED_PROTECTION ) +GAME( 1995, magtouch, 0, magtouch, magtouch, magtouch_state, 0, ROT0, "Micro Manufacturing", "Magical Touch", MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/mainevt.cpp b/src/mame/drivers/mainevt.cpp index 9909d64fa3a..03feedd4207 100644 --- a/src/mame/drivers/mainevt.cpp +++ b/src/mame/drivers/mainevt.cpp @@ -406,7 +406,7 @@ INTERRUPT_GEN_MEMBER(mainevt_state::devstors_sound_timer_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( mainevt, mainevt_state ) +static MACHINE_CONFIG_START( mainevt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, 3000000*4) /* ?? */ @@ -454,7 +454,7 @@ static MACHINE_CONFIG_START( mainevt, mainevt_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( devstors, mainevt_state ) +static MACHINE_CONFIG_START( devstors ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, 3000000*4) /* ?? */ @@ -720,11 +720,11 @@ ROM_END -GAME( 1988, mainevt, 0, mainevt, mainevt, driver_device, 0, ROT0, "Konami", "The Main Event (4 Players ver. Y)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mainevto, mainevt, mainevt, mainevt, driver_device, 0, ROT0, "Konami", "The Main Event (4 Players ver. F)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mainevt2p,mainevt, mainevt, mainev2p, driver_device, 0, ROT0, "Konami", "The Main Event (2 Players ver. X)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, ringohja, mainevt, mainevt, mainev2p, driver_device, 0, ROT0, "Konami", "Ring no Ohja (Japan 2 Players ver. N)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, devstors, 0, devstors, devstors, driver_device, 0, ROT90, "Konami", "Devastators (ver. Z)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, devstors2,devstors, devstors, devstor2, driver_device, 0, ROT90, "Konami", "Devastators (ver. X)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, devstors3,devstors, devstors, devstors, driver_device, 0, ROT90, "Konami", "Devastators (ver. V)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, garuka, devstors, devstors, devstor2, driver_device, 0, ROT90, "Konami", "Garuka (Japan ver. W)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mainevt, 0, mainevt, mainevt, mainevt_state, 0, ROT0, "Konami", "The Main Event (4 Players ver. Y)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mainevto, mainevt, mainevt, mainevt, mainevt_state, 0, ROT0, "Konami", "The Main Event (4 Players ver. F)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mainevt2p,mainevt, mainevt, mainev2p, mainevt_state, 0, ROT0, "Konami", "The Main Event (2 Players ver. X)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, ringohja, mainevt, mainevt, mainev2p, mainevt_state, 0, ROT0, "Konami", "Ring no Ohja (Japan 2 Players ver. N)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, devstors, 0, devstors, devstors, mainevt_state, 0, ROT90, "Konami", "Devastators (ver. Z)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, devstors2,devstors, devstors, devstor2, mainevt_state, 0, ROT90, "Konami", "Devastators (ver. X)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, devstors3,devstors, devstors, devstors, mainevt_state, 0, ROT90, "Konami", "Devastators (ver. V)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, garuka, devstors, devstors, devstor2, mainevt_state, 0, ROT90, "Konami", "Garuka (Japan ver. W)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mainsnk.cpp b/src/mame/drivers/mainsnk.cpp index cdb6ebc5575..23646543f57 100644 --- a/src/mame/drivers/mainsnk.cpp +++ b/src/mame/drivers/mainsnk.cpp @@ -389,7 +389,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( mainsnk, mainsnk_state ) +static MACHINE_CONFIG_START( mainsnk ) MCFG_CPU_ADD("maincpu", Z80, 3360000) MCFG_CPU_PROGRAM_MAP(main_map) @@ -491,5 +491,5 @@ ROM_START( canvas ) ROM_END -GAME( 1984, mainsnk, 0, mainsnk, mainsnk, driver_device, 0, ROT0, "SNK", "Main Event (1984)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, canvas, 0, mainsnk, canvas, driver_device, 0, ROT0, "SNK", "Canvas Croquis", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, mainsnk, 0, mainsnk, mainsnk, mainsnk_state, 0, ROT0, "SNK", "Main Event (1984)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, canvas, 0, mainsnk, canvas, mainsnk_state, 0, ROT0, "SNK", "Canvas Croquis", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/majorpkr.cpp b/src/mame/drivers/majorpkr.cpp index 12b871bd641..69c8bc63c0b 100644 --- a/src/mame/drivers/majorpkr.cpp +++ b/src/mame/drivers/majorpkr.cpp @@ -985,7 +985,7 @@ GFXDECODE_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( majorpkr, majorpkr_state ) +static MACHINE_CONFIG_START( majorpkr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) // 6 MHz. MCFG_CPU_PROGRAM_MAP(map) @@ -1026,7 +1026,7 @@ static MACHINE_CONFIG_START( majorpkr, majorpkr_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", OKI_CLOCK, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 verified. + MCFG_OKIM6295_ADD("oki", OKI_CLOCK, PIN7_HIGH) // clock frequency & pin 7 verified. MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/malzak.cpp b/src/mame/drivers/malzak.cpp index bc92e18aacb..1b83286f986 100644 --- a/src/mame/drivers/malzak.cpp +++ b/src/mame/drivers/malzak.cpp @@ -299,7 +299,7 @@ void malzak_state::machine_reset() m_malzak_y = 0; } -static MACHINE_CONFIG_START( malzak, malzak_state ) +static MACHINE_CONFIG_START( malzak ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 3800000/4) @@ -413,5 +413,5 @@ ROM_START( malzak2 ) ROM_END -GAME( 19??, malzak, 0, malzak, malzak, driver_device, 0, ROT0, "Kitronix", "Malzak", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 19??, malzak2, malzak, malzak2, malzak2, driver_device, 0, ROT0, "Kitronix", "Malzak II", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 19??, malzak, 0, malzak, malzak, malzak_state, 0, ROT0, "Kitronix", "Malzak", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 19??, malzak2, malzak, malzak2, malzak2, malzak_state, 0, ROT0, "Kitronix", "Malzak II", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/manohman.cpp b/src/mame/drivers/manohman.cpp index 08aff866efb..e0e42b5c6ff 100644 --- a/src/mame/drivers/manohman.cpp +++ b/src/mame/drivers/manohman.cpp @@ -140,10 +140,10 @@ #define SECONDARY_CLOCK XTAL_3_6864MHz -class _manohman_state : public driver_device +class manohman_state : public driver_device { public: - _manohman_state(const machine_config &mconfig, device_type type, const char *tag) + manohman_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu") { } @@ -155,7 +155,7 @@ public: * Memory Map Definition * *********************************************/ -static ADDRESS_MAP_START( manohman_map, AS_PROGRAM, 16, _manohman_state ) +static ADDRESS_MAP_START( manohman_map, AS_PROGRAM, 16, manohman_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_RANGE(0x100000, 0x100001) AM_NOP // smell to MAX696 watchdog... AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) @@ -209,7 +209,7 @@ INPUT_PORTS_END * Machine Config * *********************************************/ -static MACHINE_CONFIG_START( manohman, _manohman_state ) +static MACHINE_CONFIG_START( manohman ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK) // 8 MHz MCFG_CPU_PROGRAM_MAP(manohman_map) @@ -236,5 +236,5 @@ ROM_END * Game Drivers * *********************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ -GAME( 199?, manohman, 0, manohman, manohman, driver_device, 0, ROT0, "Merkur", "Mann, oh-Mann", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_REQUIRES_ARTWORK ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 199?, manohman, 0, manohman, manohman, manohman_state, 0, ROT0, "Merkur", "Mann, oh-Mann", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_REQUIRES_ARTWORK ) diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp index def351c0926..0cae9597044 100644 --- a/src/mame/drivers/mappy.cpp +++ b/src/mame/drivers/mappy.cpp @@ -1707,17 +1707,17 @@ static MACHINE_CONFIG_FRAGMENT( superpac_common ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( superpac, mappy_state ) +static MACHINE_CONFIG_START( superpac ) MCFG_FRAGMENT_ADD(superpac_common) - MCFG_DEVICE_ADD("namcoio_1", NAMCO56XX, 0) + MCFG_DEVICE_ADD("namcoio_1", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2")) MCFG_NAMCO56XX_IN_3_CB(IOPORT("BUTTONS")) - MCFG_DEVICE_ADD("namcoio_2", NAMCO56XX, 0) + MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux)) MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) @@ -1725,21 +1725,21 @@ static MACHINE_CONFIG_START( superpac, mappy_state ) MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pacnpal, mappy_state ) +static MACHINE_CONFIG_START( pacnpal ) MCFG_FRAGMENT_ADD(superpac_common) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, pacnpal_main_vblank_irq) // also update the custom I/O chips - MCFG_DEVICE_ADD("namcoio_1", NAMCO56XX, 0) + MCFG_DEVICE_ADD("namcoio_1", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2")) MCFG_NAMCO56XX_IN_3_CB(IOPORT("BUTTONS")) MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_lamps)) - MCFG_DEVICE_ADD("namcoio_2", NAMCO59XX, 0) + MCFG_DEVICE_ADD("namcoio_2", NAMCO_59XX, 0) MCFG_NAMCO59XX_IN_0_CB(READ8(mappy_state, dipB_mux)) MCFG_NAMCO59XX_IN_1_CB(READ8(mappy_state, dipA_l)) MCFG_NAMCO59XX_IN_2_CB(READ8(mappy_state, dipA_h)) @@ -1748,20 +1748,20 @@ static MACHINE_CONFIG_START( pacnpal, mappy_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( grobda, mappy_state ) +static MACHINE_CONFIG_START( grobda ) MCFG_FRAGMENT_ADD(superpac_common) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, grobda_main_vblank_irq) // also update the custom I/O chips - MCFG_DEVICE_ADD("namcoio_1", NAMCO58XX, 0) + MCFG_DEVICE_ADD("namcoio_1", NAMCO_58XX, 0) MCFG_NAMCO58XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO58XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO58XX_IN_2_CB(IOPORT("P2")) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) - MCFG_DEVICE_ADD("namcoio_2", NAMCO56XX, 0) + MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux)) MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) @@ -1775,7 +1775,7 @@ static MACHINE_CONFIG_START( grobda, mappy_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( phozon, mappy_state ) +static MACHINE_CONFIG_START( phozon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, PIXEL_CLOCK/4) /* MAIN CPU */ @@ -1797,13 +1797,13 @@ static MACHINE_CONFIG_START( phozon, mappy_state ) MCFG_MACHINE_START_OVERRIDE(mappy_state,mappy) MCFG_MACHINE_RESET_OVERRIDE(mappy_state,phozon) - MCFG_DEVICE_ADD("namcoio_1", NAMCO58XX, 0) + MCFG_DEVICE_ADD("namcoio_1", NAMCO_58XX, 0) MCFG_NAMCO58XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO58XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO58XX_IN_2_CB(IOPORT("P2")) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) - MCFG_DEVICE_ADD("namcoio_2", NAMCO56XX, 0) + MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_muxi)) MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) @@ -1871,17 +1871,17 @@ static MACHINE_CONFIG_FRAGMENT( mappy_common ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mappy, mappy_state ) +static MACHINE_CONFIG_START( mappy ) MCFG_FRAGMENT_ADD(mappy_common) - MCFG_DEVICE_ADD("namcoio_1", NAMCO58XX, 0) + MCFG_DEVICE_ADD("namcoio_1", NAMCO_58XX, 0) MCFG_NAMCO58XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO58XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO58XX_IN_2_CB(IOPORT("P2")) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) - MCFG_DEVICE_ADD("namcoio_2", NAMCO58XX, 0) + MCFG_DEVICE_ADD("namcoio_2", NAMCO_58XX, 0) MCFG_NAMCO58XX_IN_0_CB(READ8(mappy_state, dipB_mux)) MCFG_NAMCO58XX_IN_1_CB(READ8(mappy_state, dipA_l)) MCFG_NAMCO58XX_IN_2_CB(READ8(mappy_state, dipA_h)) @@ -1889,7 +1889,7 @@ static MACHINE_CONFIG_START( mappy, mappy_state ) MCFG_NAMCO58XX_OUT_0_CB(WRITE8(mappy_state, out_mux)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( digdug2, mappy_state ) +static MACHINE_CONFIG_START( digdug2 ) MCFG_FRAGMENT_ADD(mappy_common) @@ -1899,13 +1899,13 @@ static MACHINE_CONFIG_START( digdug2, mappy_state ) MCFG_WATCHDOG_MODIFY("watchdog") MCFG_WATCHDOG_VBLANK_INIT("screen", 0) - MCFG_DEVICE_ADD("namcoio_1", NAMCO58XX, 0) + MCFG_DEVICE_ADD("namcoio_1", NAMCO_58XX, 0) MCFG_NAMCO58XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO58XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO58XX_IN_2_CB(IOPORT("P2")) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) - MCFG_DEVICE_ADD("namcoio_2", NAMCO56XX, 0) + MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux)) MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) @@ -1921,21 +1921,21 @@ static MACHINE_CONFIG_DERIVED( todruaga, digdug2 ) MCFG_PALETTE_ENTRIES(64*4+64*16) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( motos, mappy_state ) +static MACHINE_CONFIG_START( motos ) MCFG_FRAGMENT_ADD(mappy_common) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, motos_main_vblank_irq) // also update the custom I/O chips - MCFG_DEVICE_ADD("namcoio_1", NAMCO56XX, 0) + MCFG_DEVICE_ADD("namcoio_1", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1")) MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2")) MCFG_NAMCO56XX_IN_3_CB(IOPORT("BUTTONS")) MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_lamps)) - MCFG_DEVICE_ADD("namcoio_2", NAMCO56XX, 0) + MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux)) MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l)) MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h)) @@ -2457,25 +2457,25 @@ DRIVER_INIT_MEMBER(mappy_state,motos) /* 2x6809, static tilemap, 2bpp sprites (Super Pacman type) */ -GAME( 1982, superpac, 0, superpac, superpac, mappy_state, superpac, ROT90, "Namco", "Super Pac-Man", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, superpacm,superpac, superpac, superpac, mappy_state, superpac, ROT90, "Namco (Bally Midway license)", "Super Pac-Man (Midway)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, pacnpal, 0, pacnpal, pacnpal, mappy_state, pacnpal, ROT90, "Namco", "Pac & Pal", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, pacnpal2, pacnpal, pacnpal, pacnpal, mappy_state, pacnpal, ROT90, "Namco", "Pac & Pal (older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, pacnchmp, pacnpal, pacnpal, pacnpal, mappy_state, pacnpal, ROT90, "Namco", "Pac-Man & Chomp Chomp", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, grobda, 0, grobda, grobda, mappy_state, grobda, ROT90, "Namco", "Grobda (New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, grobda2, grobda, grobda, grobda, mappy_state, grobda, ROT90, "Namco", "Grobda (Old Ver. set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, grobda3, grobda, grobda, grobda, mappy_state, grobda, ROT90, "Namco", "Grobda (Old Ver. set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, superpac, 0, superpac, superpac, mappy_state, superpac, ROT90, "Namco", "Super Pac-Man", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, superpacm,superpac, superpac, superpac, mappy_state, superpac, ROT90, "Namco (Bally Midway license)", "Super Pac-Man (Midway)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, pacnpal, 0, pacnpal, pacnpal, mappy_state, pacnpal, ROT90, "Namco", "Pac & Pal", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, pacnpal2, pacnpal, pacnpal, pacnpal, mappy_state, pacnpal, ROT90, "Namco", "Pac & Pal (older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, pacnchmp, pacnpal, pacnpal, pacnpal, mappy_state, pacnpal, ROT90, "Namco", "Pac-Man & Chomp Chomp", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, grobda, 0, grobda, grobda, mappy_state, grobda, ROT90, "Namco", "Grobda (New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, grobda2, grobda, grobda, grobda, mappy_state, grobda, ROT90, "Namco", "Grobda (Old Ver. set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, grobda3, grobda, grobda, grobda, mappy_state, grobda, ROT90, "Namco", "Grobda (Old Ver. set 2)", MACHINE_SUPPORTS_SAVE ) /* 3x6809, static tilemap, 2bpp sprites (Gaplus type) */ -GAME( 1983, phozon, 0, phozon, phozon, mappy_state, phozon, ROT90, "Namco", "Phozon (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, phozons, phozon, phozon, phozon, mappy_state, phozon, ROT90, "Namco (Sidam license)", "Phozon (Sidam)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, phozon, 0, phozon, phozon, mappy_state, phozon, ROT90, "Namco", "Phozon (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, phozons, phozon, phozon, phozon, mappy_state, phozon, ROT90, "Namco (Sidam license)", "Phozon (Sidam)", MACHINE_SUPPORTS_SAVE ) /* 2x6809, scroling tilemap, 4bpp sprites (Super Pacman type) */ -GAME( 1983, mappy, 0, mappy, mappy, mappy_state, mappy, ROT90, "Namco", "Mappy (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, mappyj, mappy, mappy, mappy, mappy_state, mappy, ROT90, "Namco", "Mappy (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, todruaga, 0, todruaga, todruaga, mappy_state, druaga, ROT90, "Namco", "The Tower of Druaga (New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, todruagao,todruaga, todruaga, todruaga, mappy_state, druaga, ROT90, "Namco", "The Tower of Druaga (Old Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, todruagas,todruaga, todruaga, todruaga, mappy_state, druaga, ROT90, "bootleg? (Sidam)", "The Tower of Druaga (Sidam)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, digdug2, 0, digdug2, digdug2, mappy_state, digdug2, ROT90, "Namco", "Dig Dug II (New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, digdug2o, digdug2, digdug2, digdug2, mappy_state, digdug2, ROT90, "Namco", "Dig Dug II (Old Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, motos, 0, motos, motos, mappy_state, motos, ROT90, "Namco", "Motos", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mappy, 0, mappy, mappy, mappy_state, mappy, ROT90, "Namco", "Mappy (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mappyj, mappy, mappy, mappy, mappy_state, mappy, ROT90, "Namco", "Mappy (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, todruaga, 0, todruaga, todruaga, mappy_state, druaga, ROT90, "Namco", "The Tower of Druaga (New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, todruagao,todruaga, todruaga, todruaga, mappy_state, druaga, ROT90, "Namco", "The Tower of Druaga (Old Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, todruagas,todruaga, todruaga, todruaga, mappy_state, druaga, ROT90, "bootleg? (Sidam)", "The Tower of Druaga (Sidam)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, digdug2, 0, digdug2, digdug2, mappy_state, digdug2, ROT90, "Namco", "Dig Dug II (New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, digdug2o, digdug2, digdug2, digdug2, mappy_state, digdug2, ROT90, "Namco", "Dig Dug II (Old Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, motos, 0, motos, motos, mappy_state, motos, ROT90, "Namco", "Motos", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/marineb.cpp b/src/mame/drivers/marineb.cpp index 55661a882c5..442bda78bb2 100644 --- a/src/mame/drivers/marineb.cpp +++ b/src/mame/drivers/marineb.cpp @@ -537,7 +537,7 @@ INTERRUPT_GEN_MEMBER(marineb_state::wanted_vblank_irq) } -static MACHINE_CONFIG_START( marineb, marineb_state ) +static MACHINE_CONFIG_START( marineb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz? */ @@ -874,13 +874,13 @@ ROM_END /* year name parent machine inputs */ -GAME( 1982, marineb, 0, marineb, marineb, driver_device, 0, ROT0, "Orca", "Marine Boy", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, changes, 0, changes, changes, driver_device, 0, ROT0, "Orca", "Changes", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, changesa, changes, changes, changes, driver_device, 0, ROT0, "Orca (Eastern Micro Electronics, Inc. license)", "Changes (EME license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, looper, changes, changes, changes, driver_device, 0, ROT0, "Orca", "Looper", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, springer, 0, springer, marineb, driver_device, 0, ROT270, "Orca", "Springer", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hoccer, 0, hoccer, hoccer, driver_device, 0, ROT90, "Eastern Micro Electronics, Inc.", "Hoccer (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hoccer2, hoccer, hoccer, hoccer, driver_device, 0, ROT90, "Eastern Micro Electronics, Inc.", "Hoccer (set 2)" , MACHINE_SUPPORTS_SAVE ) /* earlier */ -GAME( 1983, bcruzm12, 0, bcruzm12, bcruzm12, driver_device,0, ROT90, "Sigma Enterprises Inc.", "Battle Cruiser M-12", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hopprobo, 0, hopprobo, marineb, driver_device, 0, ROT90, "Sega", "Hopper Robo", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, wanted, 0, wanted, wanted, driver_device, 0, ROT90, "Sigma Enterprises Inc.", "Wanted", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, marineb, 0, marineb, marineb, marineb_state, 0, ROT0, "Orca", "Marine Boy", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, changes, 0, changes, changes, marineb_state, 0, ROT0, "Orca", "Changes", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, changesa, changes, changes, changes, marineb_state, 0, ROT0, "Orca (Eastern Micro Electronics, Inc. license)", "Changes (EME license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, looper, changes, changes, changes, marineb_state, 0, ROT0, "Orca", "Looper", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, springer, 0, springer, marineb, marineb_state, 0, ROT270, "Orca", "Springer", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hoccer, 0, hoccer, hoccer, marineb_state, 0, ROT90, "Eastern Micro Electronics, Inc.", "Hoccer (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hoccer2, hoccer, hoccer, hoccer, marineb_state, 0, ROT90, "Eastern Micro Electronics, Inc.", "Hoccer (set 2)" , MACHINE_SUPPORTS_SAVE ) /* earlier */ +GAME( 1983, bcruzm12, 0, bcruzm12, bcruzm12, marineb_state, 0, ROT90, "Sigma Enterprises Inc.", "Battle Cruiser M-12", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hopprobo, 0, hopprobo, marineb, marineb_state, 0, ROT90, "Sega", "Hopper Robo", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, wanted, 0, wanted, wanted, marineb_state, 0, ROT90, "Sigma Enterprises Inc.", "Wanted", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/marinedt.cpp b/src/mame/drivers/marinedt.cpp index 73139b4b655..b4b1518757c 100644 --- a/src/mame/drivers/marinedt.cpp +++ b/src/mame/drivers/marinedt.cpp @@ -112,7 +112,7 @@ static INPUT_PORTS_START( marinedt ) INPUT_PORTS_END -static MACHINE_CONFIG_START( marinedt, marinedt_state ) +static MACHINE_CONFIG_START( marinedt ) MACHINE_CONFIG_END ROM_START( marinedt ) @@ -143,4 +143,4 @@ ROM_START( marinedt ) ROM_LOAD( "mg17.bpr", 0x0060, 0x0020, CRC(13261a02) SHA1(050edd18e4f79d19d5206f55f329340432fd4099) ) ROM_END -GAME( 1981, marinedt, 0, marinedt, marinedt, driver_device, 0, ROT270, "Taito", "Marine Date", MACHINE_IS_SKELETON ) +GAME( 1981, marinedt, 0, marinedt, marinedt, marinedt_state, 0, ROT270, "Taito", "Marine Date", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/mario.cpp b/src/mame/drivers/mario.cpp index e2acb770428..7503dc23d0c 100644 --- a/src/mame/drivers/mario.cpp +++ b/src/mame/drivers/mario.cpp @@ -332,7 +332,7 @@ INTERRUPT_GEN_MEMBER(mario_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( mario_base, mario_state ) +static MACHINE_CONFIG_START( mario_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, Z80_CLOCK) /* verified on pcb */ @@ -546,8 +546,8 @@ ROM_END * *************************************/ -GAME( 1983, mario, 0, mario, mario, driver_device, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Revision F)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, marioe, mario, mario, marioe, driver_device, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Revision E)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, marioo, mario, mario, marioo, driver_device, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Unknown Rev)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, marioj, mario, mario, marioj, driver_device, 0, ROT0, "Nintendo", "Mario Bros. (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, masao, mario, masao, mario, driver_device, 0, ROT0, "bootleg", "Masao", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mario, 0, mario, mario, mario_state, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Revision F)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, marioe, mario, mario, marioe, mario_state, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Revision E)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, marioo, mario, mario, marioo, mario_state, 0, ROT0, "Nintendo of America", "Mario Bros. (US, Unknown Rev)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, marioj, mario, mario, marioj, mario_state, 0, ROT0, "Nintendo", "Mario Bros. (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, masao, mario, masao, mario, mario_state, 0, ROT0, "bootleg", "Masao", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/markham.cpp b/src/mame/drivers/markham.cpp index 8481b4f0595..212762dd692 100644 --- a/src/mame/drivers/markham.cpp +++ b/src/mame/drivers/markham.cpp @@ -177,7 +177,7 @@ static GFXDECODE_START( markham ) GFXDECODE_END -static MACHINE_CONFIG_START( markham, markham_state ) +static MACHINE_CONFIG_START( markham ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,8000000/2) /* 4.000MHz */ @@ -245,4 +245,4 @@ ROM_START( markham ) ROM_END -GAME( 1983, markham, 0, markham, markham, driver_device, 0, ROT0, "Sun Electronics", "Markham", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, markham, 0, markham, markham, markham_state, 0, ROT0, "Sun Electronics", "Markham", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/marywu.cpp b/src/mame/drivers/marywu.cpp index 11826be3965..951cfdc68fe 100644 --- a/src/mame/drivers/marywu.cpp +++ b/src/mame/drivers/marywu.cpp @@ -181,7 +181,7 @@ static ADDRESS_MAP_START( io_map, AS_IO, 8, marywu_state ) AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READ(port_r) ADDRESS_MAP_END -static MACHINE_CONFIG_START( marywu , marywu_state ) +static MACHINE_CONFIG_START( marywu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C31, XTAL_10_738635MHz) //actual CPU is a Winbond w78c31b-24 MCFG_CPU_PROGRAM_MAP(program_map) @@ -214,5 +214,5 @@ ROM_START( marywu ) ROM_LOAD( "marywu_sunkiss_chen.rom", 0x0000, 0x8000, CRC(11f67c7d) SHA1(9c1fd1a5cc6e2b0d675f0217aa8ff21c30609a0c) ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( ????, marywu, 0, marywu, marywu, driver_device, 0, ROT0, "", " Labeled 'WU- MARY-1A' Music by: SunKiss Chen", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( ????, marywu, 0, marywu, marywu, marywu_state, 0, ROT0, "", " Labeled 'WU- MARY-1A' Music by: SunKiss Chen", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/mastboy.cpp b/src/mame/drivers/mastboy.cpp index 08fa73396c2..9f7ffc4c21e 100644 --- a/src/mame/drivers/mastboy.cpp +++ b/src/mame/drivers/mastboy.cpp @@ -906,7 +906,7 @@ void mastboy_state::machine_reset() -static MACHINE_CONFIG_START( mastboy, mastboy_state ) +static MACHINE_CONFIG_START( mastboy ) MCFG_CPU_ADD("maincpu", Z180, 12000000/2) /* HD647180X0CP6-1M1R */ MCFG_CPU_PROGRAM_MAP(mastboy_map) MCFG_CPU_IO_MAP(mastboy_io_map) @@ -935,7 +935,7 @@ static MACHINE_CONFIG_START( mastboy, mastboy_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(mastboy_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -1056,6 +1056,6 @@ ROM_START( mastboyia ) /* 0x1c0000 to 0x1fffff EMPTY */ ROM_END -GAME( 1991, mastboy, 0, mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mastboyi, mastboy, mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mastboyia,mastboy, mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mastboy, 0, mastboy, mastboy, mastboy_state, 0, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mastboyi, mastboy, mastboy, mastboy, mastboy_state, 0, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mastboyia,mastboy, mastboy, mastboy, mastboy_state, 0, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A, set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/matmania.cpp b/src/mame/drivers/matmania.cpp index 33b915f8f4c..534eb6fa618 100644 --- a/src/mame/drivers/matmania.cpp +++ b/src/mame/drivers/matmania.cpp @@ -295,7 +295,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( matmania, matmania_state ) +static MACHINE_CONFIG_START( matmania ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1500000) /* 1.5 MHz ???? */ @@ -338,7 +338,7 @@ static MACHINE_CONFIG_START( matmania, matmania_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( maniach, matmania_state ) +static MACHINE_CONFIG_START( maniach ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1500000) /* 1.5 MHz ???? */ @@ -614,7 +614,7 @@ ROM_END * *************************************/ -GAME( 1985, matmania, 0, matmania, matmania, driver_device, 0, ROT270, "Technos Japan (Taito America license)", "Mat Mania", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, excthour, matmania, matmania, maniach, driver_device, 0, ROT270, "Technos Japan (Taito license)", "Exciting Hour", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, maniach, 0, maniach, maniach, driver_device, 0, ROT270, "Technos Japan (Taito America license)", "Mania Challenge (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, maniach2, maniach, maniach, maniach, driver_device, 0, ROT270, "Technos Japan (Taito America license)", "Mania Challenge (set 2)", MACHINE_SUPPORTS_SAVE ) /* earlier version? */ +GAME( 1985, matmania, 0, matmania, matmania, matmania_state, 0, ROT270, "Technos Japan (Taito America license)", "Mat Mania", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, excthour, matmania, matmania, maniach, matmania_state, 0, ROT270, "Technos Japan (Taito license)", "Exciting Hour", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, maniach, 0, maniach, maniach, matmania_state, 0, ROT270, "Technos Japan (Taito America license)", "Mania Challenge (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, maniach2, maniach, maniach, maniach, matmania_state, 0, ROT270, "Technos Japan (Taito America license)", "Mania Challenge (set 2)", MACHINE_SUPPORTS_SAVE ) // earlier version? diff --git a/src/mame/drivers/maxaflex.cpp b/src/mame/drivers/maxaflex.cpp index 3154c9c8caf..0f01a02f143 100644 --- a/src/mame/drivers/maxaflex.cpp +++ b/src/mame/drivers/maxaflex.cpp @@ -305,9 +305,9 @@ TIMER_DEVICE_CALLBACK_MEMBER( maxaflex_state::mf_interrupt ) m_antic->generic_interrupt(2); } -static MACHINE_CONFIG_START( maxaflex, maxaflex_state ) +static MACHINE_CONFIG_START( maxaflex ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M6502, FREQ_17_EXACT) + MCFG_CPU_ADD("maincpu", M6502, pokey_device::FREQ_17_EXACT) MCFG_CPU_PROGRAM_MAP(a600xl_mem) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", maxaflex_state, mf_interrupt, "screen", 0, 1) @@ -332,9 +332,9 @@ static MACHINE_CONFIG_START( maxaflex, maxaflex_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_VISIBLE_AREA(MIN_X, MAX_X, MIN_Y, MAX_Y) - MCFG_SCREEN_REFRESH_RATE(FRAME_RATE_60HZ) - MCFG_SCREEN_SIZE(HWIDTH*8, TOTAL_LINES_60HZ) + MCFG_SCREEN_VISIBLE_AREA_ANTIC() + MCFG_SCREEN_REFRESH_RATE_ANTIC_60HZ() + MCFG_SCREEN_SIZE_ANTIC_60HZ() MCFG_SCREEN_UPDATE_DEVICE("antic", antic_device, screen_update) MCFG_SCREEN_PALETTE("palette") @@ -345,7 +345,7 @@ static MACHINE_CONFIG_START( maxaflex, maxaflex_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("pokey", POKEY, FREQ_17_EXACT) + MCFG_SOUND_ADD("pokey", POKEY, pokey_device::FREQ_17_EXACT) MCFG_POKEY_INTERRUPT_CB(atari_common_state, interrupt_cb) MCFG_POKEY_OUTPUT_RC(RES_K(1), CAP_U(0.0), 5.0) @@ -417,8 +417,8 @@ ROM_START(mf_flip) ROM_END -GAME( 1984, maxaflex, 0, maxaflex, a600xl, driver_device, 0, ROT0, "Exidy", "Max-A-Flex", MACHINE_IS_BIOS_ROOT ) -GAME( 1982, mf_achas, maxaflex, maxaflex, a600xl, driver_device, 0, ROT0, "Exidy / First Star Software", "Astro Chase (Max-A-Flex)", 0 ) -GAME( 1983, mf_brist, maxaflex, maxaflex, a600xl, driver_device, 0, ROT0, "Exidy / First Star Software", "Bristles (Max-A-Flex)", 0 ) -GAME( 1983, mf_flip, maxaflex, maxaflex, a600xl, driver_device, 0, ROT0, "Exidy / First Star Software", "Flip & Flop (Max-A-Flex)", 0 ) -GAME( 1984, mf_bdash, maxaflex, maxaflex, a600xl, driver_device, 0, ROT0, "Exidy / First Star Software", "Boulder Dash (Max-A-Flex)", 0 ) +GAME( 1984, maxaflex, 0, maxaflex, a600xl, maxaflex_state, 0, ROT0, "Exidy", "Max-A-Flex", MACHINE_IS_BIOS_ROOT ) +GAME( 1982, mf_achas, maxaflex, maxaflex, a600xl, maxaflex_state, 0, ROT0, "Exidy / First Star Software", "Astro Chase (Max-A-Flex)", 0 ) +GAME( 1983, mf_brist, maxaflex, maxaflex, a600xl, maxaflex_state, 0, ROT0, "Exidy / First Star Software", "Bristles (Max-A-Flex)", 0 ) +GAME( 1983, mf_flip, maxaflex, maxaflex, a600xl, maxaflex_state, 0, ROT0, "Exidy / First Star Software", "Flip & Flop (Max-A-Flex)", 0 ) +GAME( 1984, mf_bdash, maxaflex, maxaflex, a600xl, maxaflex_state, 0, ROT0, "Exidy / First Star Software", "Boulder Dash (Max-A-Flex)", 0 ) diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp index 3f4de5b3cb6..a236c2d786a 100644 --- a/src/mame/drivers/maygay1b.cpp +++ b/src/mame/drivers/maygay1b.cpp @@ -767,7 +767,7 @@ ADDRESS_MAP_END // machine driver for maygay m1 board ///////////////////////////////// -MACHINE_CONFIG_START( maygay_m1, maygay1b_state ) +MACHINE_CONFIG_START( maygay_m1 ) MCFG_CPU_ADD("maincpu", M6809, M1_MASTER_CLOCK/2) MCFG_CPU_PROGRAM_MAP(m1_memmap) diff --git a/src/mame/drivers/maygayep.cpp b/src/mame/drivers/maygayep.cpp index 469a2a08eaa..d0579fb5a31 100644 --- a/src/mame/drivers/maygayep.cpp +++ b/src/mame/drivers/maygayep.cpp @@ -103,7 +103,7 @@ DRIVER_INIT_MEMBER(maygayep_state,maygayep) } -static MACHINE_CONFIG_START( maygayep, maygayep_state ) +static MACHINE_CONFIG_START( maygayep ) MCFG_CPU_ADD("maincpu", H83002, 16000000 ) MCFG_CPU_PROGRAM_MAP( maygayep_map ) diff --git a/src/mame/drivers/maygaysw.cpp b/src/mame/drivers/maygaysw.cpp index e095ac2b885..d92474910c4 100644 --- a/src/mame/drivers/maygaysw.cpp +++ b/src/mame/drivers/maygaysw.cpp @@ -125,7 +125,7 @@ static INPUT_PORTS_START( maygayew ) INPUT_PORTS_END -static MACHINE_CONFIG_START( maygayew, maygayew_state ) +static MACHINE_CONFIG_START( maygayew ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,8000000) // MC68306FC16 - standard 68000 core + peripherals @@ -430,15 +430,15 @@ ROM_START( mg_scl ) ROM_END // complete(?) dump -GAME( 199?, mg_gbr , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "Guinness Book Of Records (Maygay M2)", MACHINE_IS_SKELETON ) -GAME( 199?, mg_risk , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "Risk (Maygay M2)", MACHINE_IS_SKELETON ) -GAME( 199?, mg_bb , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "Big Break (Maygay M2)", MACHINE_IS_SKELETON ) -GAME( 199?, mg_lug , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "London Underground (Maygay M2)", MACHINE_IS_SKELETON ) -GAME( 199?, mg_alad , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "Aladdin's Cave (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_gbr , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "Guinness Book Of Records (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_risk , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "Risk (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_bb , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "Big Break (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_lug , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "London Underground (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_alad , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "Aladdin's Cave (Maygay M2)", MACHINE_IS_SKELETON ) // incomplete dumps -GAME( 199?, mg_ewg , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "Each Way Gambler (Maygay M2)", MACHINE_IS_SKELETON ) -GAME( 199?, mg_jv , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "Jack & Vera (Maygay M2)", MACHINE_IS_SKELETON ) -GAME( 199?, mg_pbw , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "Pinball Wizard (Maygay M2)", MACHINE_IS_SKELETON ) -GAME( 199?, mg_scl , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "Super Clue (Maygay M2)", MACHINE_IS_SKELETON ) -GAME( 199?, mg_kf , 0 , maygayew, maygayew, driver_device, 0, ROT0, "Maygay", "Krypton Factor (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_ewg , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "Each Way Gambler (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_jv , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "Jack & Vera (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_pbw , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "Pinball Wizard (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_scl , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "Super Clue (Maygay M2)", MACHINE_IS_SKELETON ) +GAME( 199?, mg_kf , 0 , maygayew, maygayew, maygayew_state, 0, ROT0, "Maygay", "Krypton Factor (Maygay M2)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/maygayv1.cpp b/src/mame/drivers/maygayv1.cpp index 6bc9d95668c..2288214dd6d 100644 --- a/src/mame/drivers/maygayv1.cpp +++ b/src/mame/drivers/maygayv1.cpp @@ -250,7 +250,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_maygayv1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_maygayv1(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_maygayv1); INTERRUPT_GEN_MEMBER(vsync_interrupt); DECLARE_WRITE8_MEMBER(data_from_i8031); DECLARE_READ8_MEMBER(data_to_i8031); @@ -437,7 +437,7 @@ uint32_t maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_in return 0; } -void maygayv1_state::screen_eof_maygayv1(screen_device &screen, bool state) +WRITE_LINE_MEMBER(maygayv1_state::screen_vblank_maygayv1) { // rising edge if (state) @@ -864,7 +864,7 @@ INTERRUPT_GEN_MEMBER(maygayv1_state::vsync_interrupt) } -static MACHINE_CONFIG_START( maygayv1, maygayv1_state ) +static MACHINE_CONFIG_START( maygayv1 ) MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK / 2) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", maygayv1_state, vsync_interrupt) @@ -892,7 +892,7 @@ static MACHINE_CONFIG_START( maygayv1, maygayv1_state ) MCFG_SCREEN_SIZE(640, 300) MCFG_SCREEN_VISIBLE_AREA(0, 640 - 1, 0, 300 - 1) MCFG_SCREEN_UPDATE_DRIVER(maygayv1_state, screen_update_maygayv1) - MCFG_SCREEN_VBLANK_DRIVER(maygayv1_state, screen_eof_maygayv1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(maygayv1_state, screen_vblank_maygayv1)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 16) diff --git a/src/mame/drivers/mayumi.cpp b/src/mame/drivers/mayumi.cpp deleted file mode 100644 index e6787480bc7..00000000000 --- a/src/mame/drivers/mayumi.cpp +++ /dev/null @@ -1,440 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Uki -/***************************************************************************** - - Kikiippatsu Mayumi-chan (c) 1988 Victory L.L.C. - - Driver by Uki - -*****************************************************************************/ - -#include "emu.h" -#include "cpu/z80/z80.h" -#include "machine/nvram.h" -#include "machine/i8255.h" -#include "sound/2203intf.h" -#include "screen.h" -#include "speaker.h" - -#define MCLK XTAL_10MHz - - -class mayumi_state : public driver_device -{ -public: - mayumi_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_i8255(*this, "i8255"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode") - { } - - /* memory pointers */ - required_shared_ptr m_videoram; - required_device m_i8255; -// uint8_t * m_nvram; // this currently uses generic nvram handlers - - /* video-related */ - tilemap_t *m_tilemap; - - /* misc */ - int m_int_enable; - int m_input_sel; - uint8_t key_matrix_r(uint8_t offset); - DECLARE_WRITE8_MEMBER(mayumi_videoram_w); - DECLARE_WRITE8_MEMBER(bank_sel_w); - DECLARE_WRITE8_MEMBER(input_sel_w); - DECLARE_READ8_MEMBER(key_matrix_1p_r); - DECLARE_READ8_MEMBER(key_matrix_2p_r); - TILE_GET_INFO_MEMBER(get_tile_info); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - uint32_t screen_update_mayumi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(mayumi_interrupt); - required_device m_maincpu; - required_device m_gfxdecode; -}; - - -/************************************* - * - * Video emulation - * - *************************************/ - -TILE_GET_INFO_MEMBER(mayumi_state::get_tile_info) -{ - int code = m_videoram[tile_index] + (m_videoram[tile_index + 0x800] & 0x1f) * 0x100; - int col = (m_videoram[tile_index + 0x1000] >> 3) & 0x1f; - - SET_TILE_INFO_MEMBER(0, code, col, 0); -} - -void mayumi_state::video_start() -{ - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mayumi_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); -} - -WRITE8_MEMBER(mayumi_state::mayumi_videoram_w) -{ - m_videoram[offset] = data; - m_tilemap->mark_tile_dirty(offset & 0x7ff); -} - -uint32_t mayumi_state::screen_update_mayumi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_tilemap->draw(screen, bitmap, cliprect, 0, 0); - return 0; -} - -/************************************* - * - * Interrupt generator - * - *************************************/ - -INTERRUPT_GEN_MEMBER(mayumi_state::mayumi_interrupt) -{ - if (m_int_enable) - device.execute().set_input_line(0, HOLD_LINE); -} - -/************************************* - * - * Memory handlers - * - *************************************/ - -WRITE8_MEMBER(mayumi_state::bank_sel_w) -{ - int bank = BIT(data, 7) | (BIT(data, 6) << 1); - - membank("bank1")->set_entry(bank); - - m_int_enable = data & 1; - - flip_screen_set(data & 2); -} - -/************************************* - * - * Address maps - * - *************************************/ - -static ADDRESS_MAP_START( mayumi_map, AS_PROGRAM, 8, mayumi_state ) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mayumi_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( mayumi_io_map, AS_IO, 8, mayumi_state ) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0") AM_WRITE(bank_sel_w) - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("i8255", i8255_device, read, write) - AM_RANGE(0xd0, 0xd1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END - -/************************************* - * - * Input ports - * - *************************************/ - -static INPUT_PORTS_START( mayumi ) - PORT_START("DSW1") - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "Unknown 1-2" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "Unknown 1-3" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x18, 0x00, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x10, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x04, 0x04, "Service Mode (DSW 1-6)" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "Unknown 1-7" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x01, 0x01, "Unknown 1-8" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("DSW2") - PORT_DIPNAME( 0x80, 0x80, "Unknown 2-1" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "Unknown 2-2" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "Unknown 2-3" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4" ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "Unknown 2-5" ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, "Unknown 2-6" ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "Unknown 2-7" ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x01, 0x01, "Unknown 2-8" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("KEY0") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY1") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_B ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_F ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_J ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_N ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY2") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY3") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY4") - PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY5") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY6") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY7") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY8") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY9") - PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("IN0") - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW , IPT_COIN1 ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_SERVICE( 0x10, IP_ACTIVE_HIGH ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) // analyzer - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MEMORY_RESET ) // memory reset -INPUT_PORTS_END - -WRITE8_MEMBER(mayumi_state::input_sel_w) -{ - m_input_sel = data; -} - -uint8_t mayumi_state::key_matrix_r(uint8_t offset) -{ - int p, i, ret; - static const char *const keynames[2][5] = - { - { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" }, - { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" } - }; - - ret = 0xff; - - p = ~m_input_sel & 0x1f; - - for (i = 0; i < 5; i++) - { - if (BIT(p, i)) - ret &= ioport(keynames[offset][i])->read(); - } - - return ret; -} - -READ8_MEMBER(mayumi_state::key_matrix_1p_r) -{ - return key_matrix_r(0); -} - -READ8_MEMBER(mayumi_state::key_matrix_2p_r) -{ - return key_matrix_r(1); -} - -/************************************* - * - * Graphics definitions - * - *************************************/ - -static const gfx_layout charlayout = -{ - 8,8, /* 8*8 characters */ - RGN_FRAC(1,3), /* 8192 characters */ - 3, /* 3 bits per pixel */ - { RGN_FRAC(0,3),RGN_FRAC(1,3),RGN_FRAC(2,3) }, - { STEP8(0,1) }, - { STEP8(0,8) }, - 8*8 -}; - -static GFXDECODE_START( mayumi ) - GFXDECODE_ENTRY( "gfx1", 0x00000, charlayout, 0, 32 ) -GFXDECODE_END - -/************************************* - * - * Machine driver - * - *************************************/ - -void mayumi_state::machine_start() -{ - uint8_t *ROM = memregion("maincpu")->base(); - - membank("bank1")->configure_entries(0, 4, &ROM[0x8000], 0x4000); - membank("bank1")->set_entry(0); - - save_item(NAME(m_int_enable)); - save_item(NAME(m_input_sel)); -} - -void mayumi_state::machine_reset() -{ - m_int_enable = 0; - m_input_sel = 0; -} - -static MACHINE_CONFIG_START( mayumi, mayumi_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, MCLK/2) /* 5.000 MHz ? */ - MCFG_CPU_PROGRAM_MAP(mayumi_map) - MCFG_CPU_IO_MAP(mayumi_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mayumi_state, mayumi_interrupt) - - MCFG_DEVICE_ADD("i8255", I8255, 0) - MCFG_I8255_OUT_PORTA_CB(WRITE8(mayumi_state, input_sel_w)) - MCFG_I8255_IN_PORTB_CB(READ8(mayumi_state, key_matrix_2p_r)) - MCFG_I8255_IN_PORTC_CB(READ8(mayumi_state, key_matrix_1p_r)) - - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(2*8, 62*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(mayumi_state, screen_update_mayumi) - MCFG_SCREEN_PALETTE("palette") - - MCFG_GFXDECODE_ADD("gfxdecode", "palette", mayumi) - MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("ymsnd", YM2203, MCLK/4) - MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW1")) - MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2")) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.40) - - MCFG_NVRAM_ADD_0FILL("nvram") - -MACHINE_CONFIG_END - -/************************************* - * - * ROM definition(s) - * - *************************************/ - -ROM_START( mayumi ) - ROM_REGION( 0x18000, "maincpu", 0 ) /* CPU */ - ROM_LOAD( "my00.bin", 0x00000, 0x08000, CRC(33189e37) SHA1(cbf75f56360ef7da5b7b1207b58cd0d72bcaf207) ) - ROM_LOAD( "my01.bin", 0x08000, 0x10000, CRC(5280fb39) SHA1(cee7653f4353031701ec1608881b37073b178d9f) ) // Banked - - ROM_REGION( 0x30000, "gfx1", 0 ) /* gfx */ - ROM_LOAD( "my30.bin", 0x00000, 0x10000, CRC(7f22d53f) SHA1(f8e5874ba0fa003ba0d6a504b2169acdf1491484) ) - ROM_LOAD( "my20.bin", 0x10000, 0x10000, CRC(18544029) SHA1(74bd8bb422db33bd7af08afbf9b801bd31a3f199) ) - ROM_LOAD( "my10.bin", 0x20000, 0x10000, CRC(3b4f4f97) SHA1(50bda1484e965f15630bd2e05861d74ddeb0d88e) ) - - ROM_REGION( 0x0300, "proms", 0 ) /* color PROMs */ - ROM_LOAD( "my-9m.bin", 0x0000, 0x0100, CRC(b18fd669) SHA1(e2b1477c1bc49994b0b652d63a2205363aab9a74) ) // R - ROM_LOAD( "my-9l.bin", 0x0100, 0x0100, CRC(f3fef561) SHA1(247f579fe91ad7e516c93a873b2ecca780bf6da0) ) // G - ROM_LOAD( "my-9k.bin", 0x0200, 0x0100, CRC(3e7a8012) SHA1(24129586a1c39f68dad274b5afbdd6c027ab0901) ) // B -ROM_END - -/************************************* - * - * Game driver(s) - * - *************************************/ - -GAME( 1988, mayumi, 0, mayumi, mayumi, driver_device, 0, ROT0, "Sanritsu / Victory L.L.C.", "Kikiippatsu Mayumi-chan (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mazerbla.cpp b/src/mame/drivers/mazerbla.cpp index bda6e7bb89c..d6d8534491b 100644 --- a/src/mame/drivers/mazerbla.cpp +++ b/src/mame/drivers/mazerbla.cpp @@ -222,7 +222,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(mazerbla); uint32_t screen_update_mazerbla(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); INTERRUPT_GEN_MEMBER(sound_interrupt); TIMER_CALLBACK_MEMBER(deferred_ls670_0_w); TIMER_CALLBACK_MEMBER(deferred_ls670_1_w); @@ -291,7 +291,7 @@ uint32_t mazerbla_state::screen_update_mazerbla(screen_device &screen, bitmap_rg return 0; } -void mazerbla_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(mazerbla_state::screen_vblank) { if (state) { @@ -1441,7 +1441,7 @@ void mazerbla_state::machine_reset() memset(m_lookup_ram, 0, ARRAY_LENGTH(m_lookup_ram)); } -static MACHINE_CONFIG_START( mazerbla, mazerbla_state ) +static MACHINE_CONFIG_START( mazerbla ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ @@ -1483,7 +1483,7 @@ static MACHINE_CONFIG_START( mazerbla, mazerbla_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( greatgun, mazerbla_state ) +static MACHINE_CONFIG_START( greatgun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ @@ -1515,7 +1515,7 @@ static MACHINE_CONFIG_START( greatgun, mazerbla_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(mazerbla_state, screen_update_mazerbla) - MCFG_SCREEN_VBLANK_DRIVER(mazerbla_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mazerbla_state, screen_vblank)) MCFG_PALETTE_ADD("palette", 256+1) MCFG_PALETTE_INIT_OWNER(mazerbla_state, mazerbla) @@ -1666,4 +1666,4 @@ DRIVER_INIT_MEMBER(mazerbla_state,greatgun) GAME( 1983, mazerbla, 0, mazerbla, mazerbla, mazerbla_state, mazerbla, ROT0, "Stern Electronics", "Mazer Blazer (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1983, mazerblaa, mazerbla, mazerbla, mazerbla, mazerbla_state, mazerbla, ROT0, "Stern Electronics", "Mazer Blazer (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, greatgun, 0, greatgun, greatgun, mazerbla_state, greatgun, ROT0, "Stern Electronics", "Great Guns", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, greatgun, 0, greatgun, greatgun, mazerbla_state, greatgun, ROT0, "Stern Electronics", "Great Guns", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mbc200.cpp b/src/mame/drivers/mbc200.cpp index 22934fbba2b..db2075b1658 100644 --- a/src/mame/drivers/mbc200.cpp +++ b/src/mame/drivers/mbc200.cpp @@ -78,7 +78,7 @@ public: DECLARE_WRITE8_MEMBER(pm_porta_w); DECLARE_WRITE8_MEMBER(pm_portb_w); DECLARE_READ8_MEMBER(keyboard_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); MC6845_UPDATE_ROW(update_row); required_device m_palette; @@ -93,7 +93,7 @@ private: required_device m_maincpu; required_device m_beep; required_device m_speaker; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; }; @@ -144,7 +144,7 @@ static ADDRESS_MAP_START( mbc200_io , AS_IO, 8, mbc200_state) //AM_RANGE(0xe0, 0xe0) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) //AM_RANGE(0xe1, 0xe1) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) AM_RANGE(0xe0, 0xe1) AM_READ(keyboard_r) AM_WRITENOP - AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("fdc", mb8876_t, read, write) + AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("fdc", mb8876_device, read, write) AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("ppi_m", i8255_device, read, write) AM_RANGE(0xec, 0xec) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) AM_RANGE(0xed, 0xed) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) @@ -207,7 +207,7 @@ READ8_MEMBER( mbc200_state::keyboard_r ) } // convert standard control keys to expected code; -WRITE8_MEMBER( mbc200_state::kbd_put ) +void mbc200_state::kbd_put(u8 data) { switch (data) { @@ -290,7 +290,7 @@ static GFXDECODE_START( mbc200 ) GFXDECODE_END -static MACHINE_CONFIG_START( mbc200, mbc200_state ) +static MACHINE_CONFIG_START( mbc200 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_8MHz/2) // NEC D780C-1 MCFG_CPU_PROGRAM_MAP(mbc200_mem) @@ -344,7 +344,7 @@ static MACHINE_CONFIG_START( mbc200, mbc200_state ) /* Keyboard */ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(mbc200_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(mbc200_state, kbd_put)) /* software lists */ MCFG_SOFTWARE_LIST_ADD("flop_list", "mbc200") @@ -361,5 +361,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, mbc200, 0, 0, mbc200, mbc200, driver_device, 0, "Sanyo", "MBC-200", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, mbc200, 0, 0, mbc200, mbc200, mbc200_state, 0, "Sanyo", "MBC-200", 0 ) diff --git a/src/mame/drivers/mbc55x.cpp b/src/mame/drivers/mbc55x.cpp index 9d03830d6f1..7857eb5b514 100644 --- a/src/mame/drivers/mbc55x.cpp +++ b/src/mame/drivers/mbc55x.cpp @@ -238,7 +238,7 @@ static SLOT_INTERFACE_START( mbc55x_floppies ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( mbc55x, mbc55x_state ) +static MACHINE_CONFIG_START( mbc55x ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, I8088, 3600000) MCFG_CPU_PROGRAM_MAP(mbc55x_mem) @@ -249,7 +249,7 @@ static MACHINE_CONFIG_START( mbc55x, mbc55x_state ) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,896,0,300,262,0,200) MCFG_SCREEN_UPDATE_DEVICE(VID_MC6845_NAME, mc6845_device, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(mbc55x_state, screen_eof_mbc55x) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mbc55x_state, screen_vblank_mbc55x)) MCFG_PALETTE_ADD("palette", SCREEN_NO_COLOURS * 3) MCFG_PALETTE_INIT_OWNER(mbc55x_state, mbc55x) @@ -315,5 +315,5 @@ ROM_START( mbc55x ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, mbc55x, 0, 0, mbc55x, mbc55x, driver_device, 0, "Sanyo", "MBC-55x", 0 /*MACHINE_NO_SOUND*/) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, mbc55x, 0, 0, mbc55x, mbc55x, mbc55x_state, 0, "Sanyo", "MBC-55x", 0 /*MACHINE_NO_SOUND*/) diff --git a/src/mame/drivers/mbee.cpp b/src/mame/drivers/mbee.cpp index ec8bc737c15..23ca1f16d99 100644 --- a/src/mame/drivers/mbee.cpp +++ b/src/mame/drivers/mbee.cpp @@ -282,7 +282,7 @@ static ADDRESS_MAP_START(mbee56_io, AS_IO, 8, mbee_state) AM_RANGE(0x0b, 0x0b) AM_WRITE(port0b_w) AM_RANGE(0x0c, 0x0c) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) AM_RANGE(0x0d, 0x0d) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) - AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_t, read, write) + AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_device, read, write) AM_RANGE(0x48, 0x4f) AM_READWRITE(fdc_status_r, fdc_motor_w) ADDRESS_MAP_END @@ -299,7 +299,7 @@ static ADDRESS_MAP_START(mbee128_io, AS_IO, 8, mbee_state) AM_RANGE(0x0c, 0x0c) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) AM_RANGE(0x0d, 0x0d) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) AM_RANGE(0x1c, 0x1f) AM_READWRITE(port1c_r, port1c_w) - AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_t, read, write) + AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_device, read, write) AM_RANGE(0x48, 0x4f) AM_READWRITE(fdc_status_r, fdc_motor_w) AM_RANGE(0x50, 0x57) AM_WRITE(mbee128_50_w) ADDRESS_MAP_END @@ -320,7 +320,7 @@ static ADDRESS_MAP_START(mbee256_io, AS_IO, 8, mbee_state) // AM_RANGE(0x0010, 0x0013) AM_MIRROR(0xff00) Optional SN76489AN audio chip AM_RANGE(0x0018, 0x001b) AM_MIRROR(0xff00) AM_READ(port18_r) AM_RANGE(0x001c, 0x001f) AM_MIRROR(0xff00) AM_READWRITE(port1c_r, port1c_w) - AM_RANGE(0x0044, 0x0047) AM_MIRROR(0xff00) AM_DEVREADWRITE("fdc", wd2793_t, read, write) + AM_RANGE(0x0044, 0x0047) AM_MIRROR(0xff00) AM_DEVREADWRITE("fdc", wd2793_device, read, write) AM_RANGE(0x0048, 0x004f) AM_MIRROR(0xff00) AM_READWRITE(fdc_status_r, fdc_motor_w) AM_RANGE(0x0050, 0x0057) AM_MIRROR(0xff00) AM_WRITE(mbee256_50_w) // AM_RANGE(0x0058, 0x005f) AM_MIRROR(0xff00) External options: floppy drive, hard drive and keyboard @@ -631,7 +631,7 @@ static SLOT_INTERFACE_START( mbee_floppies ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( mbee, mbee_state ) +static MACHINE_CONFIG_START( mbee ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 6) /* 2 MHz */ MCFG_CPU_PROGRAM_MAP(mbee_mem) @@ -690,7 +690,7 @@ static MACHINE_CONFIG_START( mbee, mbee_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mbeeic, mbee_state ) +static MACHINE_CONFIG_START( mbeeic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_5MHz / 4) /* 3.37500 MHz */ MCFG_CPU_PROGRAM_MAP(mbeeic_mem) @@ -1191,4 +1191,4 @@ COMP( 1986, mbee56, mbee, 0, mbee56, mbee, mbee_state, mbee56, COMP( 1986, mbee128, mbee, 0, mbee128, mbee128, mbee_state, mbee128, "Applied Technology", "Microbee 128k Standard" , MACHINE_NOT_WORKING ) COMP( 1986, mbee128p, mbee, 0, mbee128p, mbee128, mbee_state, mbee128, "Applied Technology", "Microbee 128k Premium" , MACHINE_NOT_WORKING ) COMP( 1987, mbee256, mbee, 0, mbee256, mbee256, mbee_state, mbee256, "Applied Technology", "Microbee 256TC" , MACHINE_NOT_WORKING ) -COMP( 2012, mbeepp, mbee, 0, mbee256, mbee128, mbee_state, mbee128, "Microbee Systems", "Microbee Premium Plus" , MACHINE_NOT_WORKING ) +COMP( 2012, mbeepp, mbee, 0, mbee256, mbee128, mbee_state, mbee128, "Microbee Systems", "Microbee Premium Plus" , MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/mc10.cpp b/src/mame/drivers/mc10.cpp index d02d766b6c5..ad84fdaaf4d 100644 --- a/src/mame/drivers/mc10.cpp +++ b/src/mame/drivers/mc10.cpp @@ -482,7 +482,7 @@ INPUT_PORTS_END MACHINE DRIVERS ***************************************************************************/ -static MACHINE_CONFIG_START( mc10, mc10_state ) +static MACHINE_CONFIG_START( mc10 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6803, XTAL_3_579545MHz) /* 0,894886 MHz */ @@ -518,7 +518,7 @@ static MACHINE_CONFIG_START( mc10, mc10_state ) MCFG_SOFTWARE_LIST_ADD("cass_list", "mc10") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( alice32, mc10_state ) +static MACHINE_CONFIG_START( alice32 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6803, XTAL_3_579545MHz) @@ -609,8 +609,8 @@ ROM_END GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, mc10, 0, 0, mc10, mc10, mc10_state, mc10, "Tandy Radio Shack", "MC-10", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, alice, mc10, 0, mc10, alice, mc10_state, mc10, "Matra & Hachette", "Alice", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, alice32, 0, 0, alice32, alice, mc10_state, mc10, "Matra & Hachette", "Alice 32", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -COMP( 1985, alice90, alice32, 0, alice90, alice, mc10_state, mc10, "Matra & Hachette", "Alice 90", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, mc10, 0, 0, mc10, mc10, mc10_state, mc10, "Tandy Radio Shack", "MC-10", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, alice, mc10, 0, mc10, alice, mc10_state, mc10, "Matra & Hachette", "Alice", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, alice32, 0, 0, alice32, alice, mc10_state, mc10, "Matra & Hachette", "Alice 32", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +COMP( 1985, alice90, alice32, 0, alice90, alice, mc10_state, mc10, "Matra & Hachette", "Alice 90", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mc1000.cpp b/src/mame/drivers/mc1000.cpp index e3b855bbc00..43c0152a153 100644 --- a/src/mame/drivers/mc1000.cpp +++ b/src/mame/drivers/mc1000.cpp @@ -531,7 +531,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mc1000_state::ne555_tick) m_maincpu->set_input_line(INPUT_LINE_IRQ0, param); } -static MACHINE_CONFIG_START( mc1000, mc1000_state ) +static MACHINE_CONFIG_START( mc1000 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, 3579545) @@ -593,5 +593,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, mc1000, 0, 0, mc1000, mc1000, driver_device, 0, "CCE", "MC-1000", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1985, mc1000, 0, 0, mc1000, mc1000, mc1000_state, 0, "CCE", "MC-1000", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mc1502.cpp b/src/mame/drivers/mc1502.cpp index abb22a65c03..b2634587a62 100644 --- a/src/mame/drivers/mc1502.cpp +++ b/src/mame/drivers/mc1502.cpp @@ -2,9 +2,9 @@ // copyright-holders:Sergey Svishchev /*************************************************************************** - drivers/mc1502.c + drivers/mc1502.c - Driver file for Elektronika MS 1502 + Driver file for Elektronika MS 1502 ***************************************************************************/ @@ -196,10 +196,10 @@ MACHINE_START_MEMBER(mc1502_state, mc1502) DBG_LOG(0, "init", ("machine_start()\n")); /* - Keyboard polling circuit holds IRQ1 high until a key is - pressed, then it starts a timer that pulses IRQ1 low each - 40ms (check) for 20ms (check) until all keys are released. - Last pulse causes BIOS to write a 'break' scancode into port 60h. + Keyboard polling circuit holds IRQ1 high until a key is + pressed, then it starts a timer that pulses IRQ1 low each + 40ms (check) for 20ms (check) until all keys are released. + Last pulse causes BIOS to write a 'break' scancode into port 60h. */ m_pic8259->ir1_w(1); memset(&m_kbd, 0, sizeof(m_kbd)); @@ -241,7 +241,7 @@ static INPUT_PORTS_START( mc1502 ) PORT_INCLUDE( mc7007_3_keyboard ) INPUT_PORTS_END -static MACHINE_CONFIG_START( mc1502, mc1502_state ) +static MACHINE_CONFIG_START( mc1502 ) MCFG_CPU_ADD("maincpu", I8088, XTAL_16MHz/3) MCFG_CPU_PROGRAM_MAP(mc1502_map) MCFG_CPU_IO_MAP(mc1502_io) @@ -318,7 +318,7 @@ static MACHINE_CONFIG_START( mc1502, mc1502_state ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) MCFG_SOFTWARE_LIST_ADD("flop_list","mc1502_flop") -// MCFG_SOFTWARE_LIST_ADD("cass_list","mc1502_cass") +// MCFG_SOFTWARE_LIST_ADD("cass_list","mc1502_cass") MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("608K") /* 96 base + 512 on expansion card */ @@ -398,6 +398,6 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP ( 1989, mc1502, 0, 0, mc1502, mc1502, mc1502_state, mc1502, "NPO Microprocessor", "Elektronika MS 1502", 0) -COMP ( 1988, pk88, 0, 0, mc1502, mc1502, mc1502_state, mc1502, "NPO Microprocessor", "Elektronika PK-88", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP ( 1989, mc1502, 0, 0, mc1502, mc1502, mc1502_state, mc1502, "NPO Microprocessor", "Elektronika MS 1502", 0 ) +COMP ( 1988, pk88, 0, 0, mc1502, mc1502, mc1502_state, mc1502, "NPO Microprocessor", "Elektronika PK-88", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/mc80.cpp b/src/mame/drivers/mc80.cpp index da71367b000..47134d37dfa 100644 --- a/src/mame/drivers/mc80.cpp +++ b/src/mame/drivers/mc80.cpp @@ -161,7 +161,7 @@ static const z80_daisy_config mc8030_daisy_chain[] = { nullptr } }; -static MACHINE_CONFIG_START( mc8020, mc80_state ) +static MACHINE_CONFIG_START( mc8020 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_2_4576MHz) MCFG_CPU_PROGRAM_MAP(mc8020_mem) @@ -198,7 +198,7 @@ static MACHINE_CONFIG_START( mc8020, mc80_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("mc8020_kbd", mc80_state, mc8020_kbd, attotime::from_hz(50)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mc8030, mc80_state ) +static MACHINE_CONFIG_START( mc8030 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_2_4576MHz) MCFG_CPU_PROGRAM_MAP(mc8030_mem) @@ -301,6 +301,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, mc8020, 0, 0, mc8020, mc8020, driver_device, 0, "VEB Elektronik Gera", "MC-80.21/22", MACHINE_NO_SOUND) -COMP( 198?, mc8030, mc8020, 0, mc8030, mc8030, driver_device, 0, "VEB Elektronik Gera", "MC-80.30/31", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | ORIENTATION_FLIP_X) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, mc8020, 0, 0, mc8020, mc8020, mc80_state, 0, "VEB Elektronik Gera", "MC-80.21/22", MACHINE_NO_SOUND ) +COMP( 198?, mc8030, mc8020, 0, mc8030, mc8030, mc80_state, 0, "VEB Elektronik Gera", "MC-80.30/31", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | ORIENTATION_FLIP_X ) diff --git a/src/mame/drivers/mcatadv.cpp b/src/mame/drivers/mcatadv.cpp index 3f7daf348e8..fbba4532907 100644 --- a/src/mame/drivers/mcatadv.cpp +++ b/src/mame/drivers/mcatadv.cpp @@ -428,7 +428,7 @@ void mcatadv_state::machine_start() save_item(NAME(m_palette_bank2)); } -static MACHINE_CONFIG_START( mcatadv, mcatadv_state ) +static MACHINE_CONFIG_START( mcatadv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* verified on pcb */ @@ -447,7 +447,7 @@ static MACHINE_CONFIG_START( mcatadv, mcatadv_state ) MCFG_SCREEN_SIZE(320, 256) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1) MCFG_SCREEN_UPDATE_DRIVER(mcatadv_state, screen_update_mcatadv) - MCFG_SCREEN_VBLANK_DRIVER(mcatadv_state, screen_eof_mcatadv) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mcatadv_state, screen_vblank_mcatadv)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", mcatadv) @@ -668,9 +668,9 @@ ROM_START( nostk ) ROM_END -GAME( 1993, mcatadv, 0, mcatadv, mcatadv, driver_device, 0, ROT0, "Wintechno", "Magical Cat Adventure", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, mcatadvj, mcatadv, mcatadv, mcatadv, driver_device, 0, ROT0, "Wintechno", "Magical Cat Adventure (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, catt, mcatadv, mcatadv, mcatadv, driver_device, 0, ROT0, "Wintechno", "Catt (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, nost, 0, nost, nost, driver_device, 0, ROT270, "Face", "Nostradamus", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, nostj, nost, nost, nost, driver_device, 0, ROT270, "Face", "Nostradamus (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, nostk, nost, nost, nost, driver_device, 0, ROT270, "Face", "Nostradamus (Korea)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, mcatadv, 0, mcatadv, mcatadv, mcatadv_state, 0, ROT0, "Wintechno", "Magical Cat Adventure", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, mcatadvj, mcatadv, mcatadv, mcatadv, mcatadv_state, 0, ROT0, "Wintechno", "Magical Cat Adventure (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, catt, mcatadv, mcatadv, mcatadv, mcatadv_state, 0, ROT0, "Wintechno", "Catt (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, nost, 0, nost, nost, mcatadv_state, 0, ROT270, "Face", "Nostradamus", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, nostj, nost, nost, nost, mcatadv_state, 0, ROT270, "Face", "Nostradamus (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, nostk, nost, nost, nost, mcatadv_state, 0, ROT270, "Face", "Nostradamus (Korea)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mcb216.cpp b/src/mame/drivers/mcb216.cpp index 86112783d16..0190e2b4100 100644 --- a/src/mame/drivers/mcb216.cpp +++ b/src/mame/drivers/mcb216.cpp @@ -48,7 +48,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(keyin_r); DECLARE_READ8_MEMBER(status_r); DECLARE_MACHINE_RESET(mcb216); @@ -99,7 +99,7 @@ READ8_MEMBER( mcb216_state::status_r ) return (m_term_data) ? 0xc0 : 0x80; } -WRITE8_MEMBER( mcb216_state::kbd_put ) +void mcb216_state::kbd_put(u8 data) { m_term_data = data; } @@ -115,7 +115,7 @@ MACHINE_RESET_MEMBER( mcb216_state, cb308 ) m_maincpu->set_state_int(Z80_PC, 0xe000); } -static MACHINE_CONFIG_START( mcb216, mcb216_state ) +static MACHINE_CONFIG_START( mcb216 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(mcb216_mem) @@ -124,10 +124,10 @@ static MACHINE_CONFIG_START( mcb216, mcb216_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mcb216_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(mcb216_state, kbd_put)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cb308, mcb216_state ) +static MACHINE_CONFIG_START( cb308 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(cb308_mem) @@ -136,7 +136,7 @@ static MACHINE_CONFIG_START( cb308, mcb216_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mcb216_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(mcb216_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -156,6 +156,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, mcb216, 0, 0, mcb216, mcb216, driver_device, 0, "Cromemco", "MCB-216", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) -COMP( 1977, cb308, mcb216, 0, cb308, mcb216, driver_device, 0, "Cromemco", "CB-308", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1979, mcb216, 0, 0, mcb216, mcb216, mcb216_state, 0, "Cromemco", "MCB-216", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1977, cb308, mcb216, 0, cb308, mcb216, mcb216_state, 0, "Cromemco", "CB-308", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/mccpm.cpp b/src/mame/drivers/mccpm.cpp index b008301b972..03003623456 100644 --- a/src/mame/drivers/mccpm.cpp +++ b/src/mame/drivers/mccpm.cpp @@ -74,7 +74,7 @@ public: required_device m_terminal; DECLARE_READ8_MEMBER(mccpm_f0_r); DECLARE_READ8_MEMBER(mccpm_f1_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); required_shared_ptr m_p_ram; uint8_t m_term_data; virtual void machine_reset() override; @@ -119,12 +119,12 @@ void mccpm_state::machine_reset() memcpy(m_p_ram, bios, 0x1000); } -WRITE8_MEMBER( mccpm_state::kbd_put ) +void mccpm_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( mccpm, mccpm_state ) +static MACHINE_CONFIG_START( mccpm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(mccpm_mem) @@ -132,7 +132,7 @@ static MACHINE_CONFIG_START( mccpm, mccpm_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mccpm_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(mccpm_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -148,5 +148,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, mccpm, 0, 0, mccpm, mccpm, driver_device, 0, "GRAF Elektronik Systeme GmbH", "mc-CP/M-Computer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, mccpm, 0, 0, mccpm, mccpm, mccpm_state, 0, "GRAF Elektronik Systeme GmbH", "mc-CP/M-Computer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/mcr.cpp b/src/mame/drivers/mcr.cpp index 473d593a37f..f23f8a8afad 100644 --- a/src/mame/drivers/mcr.cpp +++ b/src/mame/drivers/mcr.cpp @@ -1756,7 +1756,7 @@ static const char *const twotiger_sample_names[] = *************************************/ /* 90009 CPU board plus 90908/90913/91483 sound board */ -static MACHINE_CONFIG_START( mcr_90009, mcr_state ) +static MACHINE_CONFIG_START( mcr_90009 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_OSC_MCR_I/8) diff --git a/src/mame/drivers/mcr3.cpp b/src/mame/drivers/mcr3.cpp index 966eb0c4bf6..86e679b00a8 100644 --- a/src/mame/drivers/mcr3.cpp +++ b/src/mame/drivers/mcr3.cpp @@ -1084,7 +1084,7 @@ GFXDECODE_END *************************************/ /* Core MCR monoboard system with no sound */ -static MACHINE_CONFIG_START( mcrmono, mcr3_state ) +static MACHINE_CONFIG_START( mcrmono ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4) diff --git a/src/mame/drivers/mcr68.cpp b/src/mame/drivers/mcr68.cpp index d24ea59af70..dc51a33f966 100644 --- a/src/mame/drivers/mcr68.cpp +++ b/src/mame/drivers/mcr68.cpp @@ -889,7 +889,7 @@ GFXDECODE_END =================================================================*/ -static MACHINE_CONFIG_START( mcr68, mcr68_state ) +static MACHINE_CONFIG_START( mcr68 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 7723800) diff --git a/src/mame/drivers/meadows.cpp b/src/mame/drivers/meadows.cpp index 4d7032e1587..32e492caa48 100644 --- a/src/mame/drivers/meadows.cpp +++ b/src/mame/drivers/meadows.cpp @@ -610,7 +610,7 @@ static const char *const bowl3d_sample_names[] = * *************************************/ -static MACHINE_CONFIG_START( meadows, meadows_state ) +static MACHINE_CONFIG_START( meadows ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ @@ -647,7 +647,7 @@ static MACHINE_CONFIG_START( meadows, meadows_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( minferno, meadows_state ) +static MACHINE_CONFIG_START( minferno ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/24) /* 5MHz / 8 / 3 = 208.33 kHz */ @@ -671,7 +671,7 @@ static MACHINE_CONFIG_START( minferno, meadows_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bowl3d, meadows_state ) +static MACHINE_CONFIG_START( bowl3d ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ @@ -881,7 +881,7 @@ DRIVER_INIT_MEMBER(meadows_state,minferno) * *************************************/ -GAMEL( 1978, deadeye, 0, meadows, meadows, driver_device, 0, ROT0, "Meadows Games, Inc.", "Dead Eye", 0, layout_deadeye ) -GAME ( 1978, bowl3d, 0, bowl3d, bowl3d, driver_device, 0, ROT90, "Meadows Games, Inc.", "3-D Bowling", MACHINE_NO_SOUND ) -GAMEL( 1978, gypsyjug, 0, meadows, meadows, meadows_state, gypsyjug, ROT0, "Meadows Games, Inc.", "Gypsy Juggler", MACHINE_IMPERFECT_GRAPHICS, layout_gypsyjug ) +GAMEL( 1978, deadeye, 0, meadows, meadows, meadows_state, 0, ROT0, "Meadows Games, Inc.", "Dead Eye", 0, layout_deadeye ) +GAME ( 1978, bowl3d, 0, bowl3d, bowl3d, meadows_state, 0, ROT90, "Meadows Games, Inc.", "3-D Bowling", MACHINE_NO_SOUND ) +GAMEL( 1978, gypsyjug, 0, meadows, meadows, meadows_state, gypsyjug, ROT0, "Meadows Games, Inc.", "Gypsy Juggler", MACHINE_IMPERFECT_GRAPHICS, layout_gypsyjug ) GAMEL( 1978, minferno, 0, minferno, minferno, meadows_state, minferno, ROT0, "Meadows Games, Inc.", "Inferno (Meadows)", MACHINE_NO_SOUND, layout_minferno ) diff --git a/src/mame/drivers/meadwttl.cpp b/src/mame/drivers/meadwttl.cpp index 58f51227d44..7413708041d 100644 --- a/src/mame/drivers/meadwttl.cpp +++ b/src/mame/drivers/meadwttl.cpp @@ -49,7 +49,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -92,7 +92,7 @@ void meadwttl_state::video_start() { } -static MACHINE_CONFIG_START( meadows, meadwttl_state ) +static MACHINE_CONFIG_START( meadows ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -165,7 +165,7 @@ ROM_END -GAME( 1976, bombaway, 0, meadows, 0, driver_device, 0, ROT0, "Meadows", "Bombs Away [TTL]", MACHINE_IS_SKELETON ) -GAME( 1976, ckidzo, 0, meadows, 0, driver_device, 0, ROT0, "Meadows", "Ckidzo [TTL]", MACHINE_IS_SKELETON ) -GAME( 1976, cgunship, 0, meadows, 0, driver_device, 0, ROT0, "Meadows", "Cobra Gunship [TTL]", MACHINE_IS_SKELETON ) -GAME( 1976, mead4in1, 0, meadows, 0, driver_device, 0, ROT0, "Meadows", "Meadows 4 in 1 [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, bombaway, 0, meadows, 0, meadwttl_state, 0, ROT0, "Meadows", "Bombs Away [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, ckidzo, 0, meadows, 0, meadwttl_state, 0, ROT0, "Meadows", "Ckidzo [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, cgunship, 0, meadows, 0, meadwttl_state, 0, ROT0, "Meadows", "Cobra Gunship [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, mead4in1, 0, meadows, 0, meadwttl_state, 0, ROT0, "Meadows", "Meadows 4 in 1 [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp index 8afdc14d266..989c9006bc3 100644 --- a/src/mame/drivers/mediagx.cpp +++ b/src/mame/drivers/mediagx.cpp @@ -870,7 +870,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, mediagx_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( mediagx, mediagx_state ) +static MACHINE_CONFIG_START( mediagx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MEDIAGX, 166000000) diff --git a/src/mame/drivers/megadriv.cpp b/src/mame/drivers/megadriv.cpp index 5a56afe0e00..b1c29f07c1c 100644 --- a/src/mame/drivers/megadriv.cpp +++ b/src/mame/drivers/megadriv.cpp @@ -354,7 +354,7 @@ MACHINE_RESET_MEMBER(md_cons_state, ms_megadriv) } // same as screen_eof_megadriv but with addition of 32x and SegaCD/MegaCD pieces -void md_cons_state::screen_eof_console(screen_device &screen, bool state) +WRITE_LINE_MEMBER(md_cons_state::screen_vblank_console) { if (m_io_reset.read_safe(0) & 0x01) m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); @@ -369,38 +369,35 @@ void md_cons_state::screen_eof_console(screen_device &screen, bool state) m_vdp->m_megadriv_scanline_timer->adjust(attotime::zero); if (m_32x) - { - m_32x->m_32x_vblank_flag = 0; - m_32x->m_32x_hcount_compare_val = -1; - m_32x->update_total_scanlines(mode3); - } + m_32x->screen_eof(mode3); + if (m_segacd) m_segacd->update_total_scanlines(mode3); } } } -static MACHINE_CONFIG_START( ms_megadriv, md_cons_state ) +static MACHINE_CONFIG_START( ms_megadriv ) MCFG_FRAGMENT_ADD( md_ntsc ) MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megadriv) MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv) MCFG_SCREEN_MODIFY("megadriv") - MCFG_SCREEN_VBLANK_DRIVER(md_cons_state, screen_eof_console) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_cons_state, screen_vblank_console)) MCFG_MD_CARTRIDGE_ADD("mdslot", md_cart, nullptr) MCFG_SOFTWARE_LIST_ADD("cart_list","megadriv") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ms_megadpal, md_cons_state ) +static MACHINE_CONFIG_START( ms_megadpal ) MCFG_FRAGMENT_ADD( md_pal ) MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megadriv) MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv) MCFG_SCREEN_MODIFY("megadriv") - MCFG_SCREEN_VBLANK_DRIVER(md_cons_state, screen_eof_console) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_cons_state, screen_vblank_console)) MCFG_MD_CARTRIDGE_ADD("mdslot", md_cart, nullptr) MCFG_SOFTWARE_LIST_ADD("cart_list","megadriv") @@ -581,7 +578,7 @@ void md_cons_state::_32x_scanline_helper_callback(int scanline) m_32x->_32x_render_videobuffer_to_screenbuffer_helper(scanline); } -static MACHINE_CONFIG_START( genesis_32x, md_cons_state ) +static MACHINE_CONFIG_START( genesis_32x ) MCFG_FRAGMENT_ADD( md_ntsc ) MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common) @@ -596,7 +593,7 @@ static MACHINE_CONFIG_START( genesis_32x, md_cons_state ) MCFG_SEGA_32X_PALETTE("gen_vdp:palette") MCFG_SCREEN_MODIFY("megadriv") - MCFG_SCREEN_VBLANK_DRIVER(md_cons_state, screen_eof_console) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_cons_state, screen_vblank_console)) // we need to remove and re-add the sound system because the balance is different // due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is slient?!) @@ -622,7 +619,7 @@ static MACHINE_CONFIG_START( genesis_32x, md_cons_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mdj_32x, md_cons_state ) +static MACHINE_CONFIG_START( mdj_32x ) MCFG_FRAGMENT_ADD( md_ntsc ) MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common) @@ -637,7 +634,7 @@ static MACHINE_CONFIG_START( mdj_32x, md_cons_state ) MCFG_SEGA_32X_PALETTE("gen_vdp:palette") MCFG_SCREEN_MODIFY("megadriv") - MCFG_SCREEN_VBLANK_DRIVER(md_cons_state, screen_eof_console) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_cons_state, screen_vblank_console)) // we need to remove and re-add the sound system because the balance is different // due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is slient?!) @@ -663,7 +660,7 @@ static MACHINE_CONFIG_START( mdj_32x, md_cons_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( md_32x, md_cons_state ) +static MACHINE_CONFIG_START( md_32x ) MCFG_FRAGMENT_ADD( md_pal ) MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common) @@ -678,7 +675,7 @@ static MACHINE_CONFIG_START( md_32x, md_cons_state ) MCFG_SEGA_32X_PALETTE("gen_vdp:palette") MCFG_SCREEN_MODIFY("megadriv") - MCFG_SCREEN_VBLANK_DRIVER(md_cons_state, screen_eof_console) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_cons_state, screen_vblank_console)) // we need to remove and re-add the sound system because the balance is different // due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is slient?!) @@ -736,14 +733,14 @@ ROM_END /****************************************** SegaCD emulation ****************************************/ -static MACHINE_CONFIG_START( genesis_scd, md_cons_state ) +static MACHINE_CONFIG_START( genesis_scd ) MCFG_FRAGMENT_ADD( md_ntsc ) MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd) MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv) MCFG_SCREEN_MODIFY("megadriv") - MCFG_SCREEN_VBLANK_DRIVER(md_cons_state, screen_eof_console) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_cons_state, screen_vblank_console)) MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_US, 0) MCFG_GFX_PALETTE("gen_vdp:palette") @@ -754,14 +751,14 @@ static MACHINE_CONFIG_START( genesis_scd, md_cons_state ) MCFG_SOFTWARE_LIST_ADD("cd_list","segacd") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( md_scd, md_cons_state ) +static MACHINE_CONFIG_START( md_scd ) MCFG_FRAGMENT_ADD( md_pal ) MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd) MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv) MCFG_SCREEN_MODIFY("megadriv") - MCFG_SCREEN_VBLANK_DRIVER(md_cons_state, screen_eof_console) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_cons_state, screen_vblank_console)) MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_EUROPE, 0) MCFG_GFX_PALETTE("gen_vdp:palette") @@ -772,14 +769,14 @@ static MACHINE_CONFIG_START( md_scd, md_cons_state ) MCFG_SOFTWARE_LIST_ADD("cd_list","megacd") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mdj_scd, md_cons_state ) +static MACHINE_CONFIG_START( mdj_scd ) MCFG_FRAGMENT_ADD( md_ntsc ) MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd) MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv) MCFG_SCREEN_MODIFY("megadriv") - MCFG_SCREEN_VBLANK_DRIVER(md_cons_state, screen_eof_console) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_cons_state, screen_vblank_console)) MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_JAPAN, 0) MCFG_GFX_PALETTE("gen_vdp:palette") diff --git a/src/mame/drivers/megadrvb.cpp b/src/mame/drivers/megadrvb.cpp index c474d004107..22dfbbe709d 100644 --- a/src/mame/drivers/megadrvb.cpp +++ b/src/mame/drivers/megadrvb.cpp @@ -283,7 +283,7 @@ static ADDRESS_MAP_START( md_bootleg_map, AS_PROGRAM, 16, md_boot_state ) AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_SHARE("megadrive_ram") ADDRESS_MAP_END -MACHINE_CONFIG_START( md_bootleg, md_boot_state ) +MACHINE_CONFIG_START( md_bootleg ) MCFG_FRAGMENT_ADD( md_ntsc ) MCFG_CPU_MODIFY("maincpu") @@ -678,7 +678,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( megadrvb, md_boot_state ) +static MACHINE_CONFIG_START( megadrvb ) MCFG_FRAGMENT_ADD(md_ntsc) MCFG_MACHINE_START_OVERRIDE(md_boot_state, md_bootleg) MACHINE_CONFIG_END @@ -697,7 +697,7 @@ MACHINE_START_MEMBER(md_boot_state, md_6button) m_io_timeout[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(md_base_state::io_timeout_timer_callback),this), (void*)(uintptr_t)i); } -static MACHINE_CONFIG_START( megadrvb_6b, md_boot_state ) +static MACHINE_CONFIG_START( megadrvb_6b ) MCFG_FRAGMENT_ADD(md_ntsc) MCFG_MACHINE_START_OVERRIDE(md_boot_state, md_6button) MACHINE_CONFIG_END diff --git a/src/mame/drivers/megaphx.cpp b/src/mame/drivers/megaphx.cpp index 56581c376f4..5e478fb9615 100644 --- a/src/mame/drivers/megaphx.cpp +++ b/src/mame/drivers/megaphx.cpp @@ -1,5 +1,5 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood +// license: BSD-3-Clause +// copyright-holders: David Haywood, Dirk Best /* Dinamic / Inder arcade hardware @@ -14,6 +14,23 @@ trivia: Test mode graphics are the same as Little Robin(?!), TMS is very similar too, suggesting they share a common codebase. + PIC16C54 info: + - The PIC has 5 functions: + * Read dip switches (serially connected) [cmd 0x82 0x86] + * Read the two start buttons [returned with all commands] + * Provide 4 security codes. For the dumped PIC those are: + 0x4a 0x6f 0x61 0x6e (Joan). Not used by Mega Phoenix. [cmd 0x8a 0x8e 0x92 0x96] + * Watchdog enable. Not used by Mega Phoenix. [cmd 9a] + * Provide PIC software version to the game. This is 0x11 here. [all other cmds] + - Communication with the game is achieved using a 8255 PPI on port C that is + connected serially to the PIC. For port assignments see the code below. + - The game sends an 8-bit command. After each bit, the PIC sends an answer bit. + The start buttons are always bits 2 and 3 here. + - All sent commands look like this: 1ccccc10 + - After the command was received, the PIC will send an additional 8 bits + with the result. + + ToDo: - where should roms 6/7 map, they contain the 68k vectors, but the game expects RAM at 0, and it doesn't seem to read any of the other data from those roms.. they contain @@ -22,7 +39,7 @@ - how does banking work? when the irq callbacks happen for each irq level? currently no way to access this because it's a daisy chain setup with the ctc? - even if i hack that the title screen speech doesn't work properly - is there a timing register like little robin? I/O: - - port_c_r / port_c_w should go through the 8255 but I don't see how to hook them up that way? various bits of the writes are lost? + - Verify when m_ppi_to_pic_command is set and cleared. It's currently guessed but seems to work fine this way. -- @@ -59,10 +76,7 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "cpu/pic16c5x/pic16c5x.h" - - - - +#include "machine/74166.h" #include "machine/i8255.h" #include "machine/inder_sb.h" #include "machine/inder_vid.h" @@ -76,305 +90,253 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_mainram(*this, "mainram"), - port_c_value(0), m_indersb(*this, "inder_sb"), - m_indervid(*this, "inder_vid") + m_indervid(*this, "inder_vid"), + m_ppi(*this, "ppi8255_0"), + m_dsw_shifter{ {*this, "ttl166_1"}, {*this, "ttl166_2"} }, + m_dsw_data(0), + m_ppi_to_pic_command(0), m_ppi_to_pic_clock(0), m_ppi_to_pic_data(0), + m_pic_to_ppi_clock(0), m_pic_to_ppi_data(0) + { } + + DECLARE_READ8_MEMBER(pic_porta_r); + DECLARE_WRITE8_MEMBER(pic_porta_w); + DECLARE_READ8_MEMBER(pic_portb_r); + DECLARE_WRITE8_MEMBER(pic_portb_w); + DECLARE_READ8_MEMBER(ppi_portc_r); + DECLARE_WRITE8_MEMBER(ppi_portc_w); + DECLARE_WRITE_LINE_MEMBER(dsw_w); - { - } + DECLARE_DRIVER_INIT(megaphx); +private: required_device m_maincpu; required_shared_ptr m_mainram; - - - - - - DECLARE_DRIVER_INIT(megaphx); - - DECLARE_READ8_MEMBER(port_c_r); - DECLARE_WRITE8_MEMBER(port_c_w); - - int m_pic_is_reset; - int m_pic_shift_pos; - int m_pic_data; - int m_pic_data_bit; - int m_pic_clock; - int m_pic_readbit; - - uint16_t m_pic_result; - - uint8_t port_c_value; - required_device m_indersb; required_device m_indervid; - - - + required_device m_ppi; + required_device m_dsw_shifter[2]; + + int m_dsw_data; + int m_ppi_to_pic_command; + int m_ppi_to_pic_clock; + int m_ppi_to_pic_data; + int m_pic_to_ppi_clock; + int m_pic_to_ppi_data; }; static ADDRESS_MAP_START( megaphx_68k_map, AS_PROGRAM, 16, megaphx_state ) AM_RANGE(0x000000, 0x0013ff) AM_RAM AM_SHARE("mainram") // maps over part of the rom?? - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("roms67", 0x00000) // or the rom doesn't map here? it contains the service mode grid amongst other things.. - AM_RANGE(0x040000, 0x040007) AM_DEVREADWRITE("inder_vid:tms", tms34010_device, host_r, host_w) - AM_RANGE(0x050000, 0x050001) AM_DEVWRITE("inder_sb", inder_sb_device, megaphx_0x050000_w) AM_RANGE(0x050002, 0x050003) AM_DEVREAD("inder_sb", inder_sb_device, megaphx_0x050002_r) - - - AM_RANGE(0x060004, 0x060005) AM_READ8( port_c_r, 0x00ff ) - AM_RANGE(0x060006, 0x060007) AM_WRITE8( port_c_w, 0x00ff ) - AM_RANGE(0x060000, 0x060003) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff) - + AM_RANGE(0x060000, 0x060007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff) AM_RANGE(0x800000, 0x83ffff) AM_ROM AM_REGION("roms01", 0x00000) // code + bg gfx are in here AM_RANGE(0x840000, 0x87ffff) AM_ROM AM_REGION("roms23", 0x00000) // bg gfx are in here AM_RANGE(0x880000, 0x8bffff) AM_ROM AM_REGION("roms45", 0x00000) // bg gfx + title screen in here - ADDRESS_MAP_END static INPUT_PORTS_START( megaphx ) - PORT_START("P0") // verified in test mode - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // shield - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) // unused ? (in test mode) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) // high score entry - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) // high score entry - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) - - PORT_START("P1") // verified in test mode - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) // shield - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) // unused ? (in test mode) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) // high score entry - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) //high score entry - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - - - PORT_START("PIC1") // via PIC (check the other bits aren't used for anything, eg. screen timing for sound playback like little robin) - PORT_DIPNAME( 0x0001, 0x0001, "XX" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - - PORT_START("DSW1") // via PIC - PORT_DIPNAME( 0x0007, 0x0003, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x0007, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x0006, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0005, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0003, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x0038, 0x0018, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x0038, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x0030, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0028, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0018, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x00c0, 0x0080, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x0000, "1" ) - PORT_DIPSETTING( 0x0040, "2" ) - PORT_DIPSETTING( 0x0080, "3" ) - PORT_DIPSETTING( 0x00c0, "4" ) - - - PORT_START("DSW2") // via PIC // some of these are difficulty - PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_SERVICE( 0x0002, IP_ACTIVE_HIGH ) - PORT_DIPNAME( 0x001c, 0x0010, "Difficulty?" ) // in hammer boy at least.. - PORT_DIPSETTING( 0x0000, "0" ) - PORT_DIPSETTING( 0x0004, "1" ) - PORT_DIPSETTING( 0x0008, "2" ) - PORT_DIPSETTING( 0x000c, "3" ) - PORT_DIPSETTING( 0x0010, "4" ) - PORT_DIPSETTING( 0x0014, "5" ) - PORT_DIPSETTING( 0x0018, "6" ) - PORT_DIPSETTING( 0x001c, "7" ) - PORT_DIPNAME( 0x0020, 0x0020, "DSW2-20" ) // something to do with time in hammer boy?? - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, "DSW2-40" ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, "DSW2-80" ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_START("P1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) // shield + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1) // unused? (in test mode) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(1) // high score entry + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) // high score entry + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(1) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(1) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) + + PORT_START("P2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) // shield + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2) // unused? (in test mode) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(2) // high score entry + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) // high score entry + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(2) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) + + PORT_START("START") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_START2) + + PORT_START("DSW1") + PORT_DIPNAME(0x07, 0x03, DEF_STR( Coin_A )) PORT_DIPLOCATION("SW1:!1,!2,!3") + PORT_DIPSETTING( 0x07, DEF_STR( 5C_1C )) + PORT_DIPSETTING( 0x06, DEF_STR( 4C_1C )) + PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C )) + PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C )) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C )) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C )) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C )) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C )) + PORT_DIPNAME(0x38, 0x18, DEF_STR( Coin_B )) PORT_DIPLOCATION("SW1:!4,!5,!6") + PORT_DIPSETTING( 0x38, DEF_STR( 5C_1C )) + PORT_DIPSETTING( 0x30, DEF_STR( 4C_1C )) + PORT_DIPSETTING( 0x28, DEF_STR( 3C_1C )) + PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C )) + PORT_DIPSETTING( 0x18, DEF_STR( 1C_1C )) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C )) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_3C )) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C )) + PORT_DIPNAME(0xc0, 0x80, DEF_STR( Lives )) PORT_DIPLOCATION("SW1:!7,!8") + PORT_DIPSETTING( 0x00, "2") + PORT_DIPSETTING( 0x40, "3") + PORT_DIPSETTING( 0x80, "4") + PORT_DIPSETTING( 0xc0, "5") + + PORT_START("DSW2") + PORT_DIPNAME(0x01, 0x00, DEF_STR( Demo_Sounds )) PORT_DIPLOCATION("SW2:!1") + PORT_DIPSETTING( 0x01, DEF_STR( Off )) + PORT_DIPSETTING( 0x00, DEF_STR( On )) + PORT_SERVICE_DIPLOC(0x02, IP_ACTIVE_HIGH, "SW2:!2") + PORT_DIPNAME(0x1c, 0x10, DEF_STR( Difficulty)) PORT_DIPLOCATION("SW2:!3,!4,!5") // sets the enemy speed + PORT_DIPSETTING( 0x00, "0") + PORT_DIPSETTING( 0x04, "1") + PORT_DIPSETTING( 0x08, "2") + PORT_DIPSETTING( 0x0c, "3") + PORT_DIPSETTING( 0x10, "4") + PORT_DIPSETTING( 0x14, "5") + PORT_DIPSETTING( 0x18, "6") + PORT_DIPSETTING( 0x1c, "7") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:!6") // something to do with time in hammer boy?? + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:!7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:!8") INPUT_PORTS_END +READ8_MEMBER( megaphx_state::pic_porta_r ) +{ + uint8_t data = 0; + + // 3- serial clock + // -0 serial data -/* why don't the port_c read/writes work properly when hooked through the 8255? */ + // clear when the pic starts reading the command + m_ppi_to_pic_command = 0; -// the PIC is accessed serially through clock / data lines, each time 16-bits are accessed.. -// not 100% sure if the command takes effect after all 16-bits are written, or after 8.. + data |= m_ppi_to_pic_data << 0; + data |= m_ppi_to_pic_clock << 3; -READ8_MEMBER(megaphx_state::port_c_r) + return data; +} + +WRITE8_MEMBER( megaphx_state::pic_porta_w ) { - //printf("read port c - write value was %02x\n", port_c_value); + // 2-- serial clock + // -1- not used + // --0 serial data -// int pc = machine().device("maincpu")->safe_pc(); - uint8_t ret = 0; + m_pic_to_ppi_data = BIT(data, 0); + m_pic_to_ppi_clock = BIT(data, 2); +} -// printf("(%06x) port_c_r (thru 8255)\n", pc); +READ8_MEMBER( megaphx_state::pic_portb_r ) +{ + uint8_t data = 0; + + // 5--- start2 + // -4-- start1 + // --1- dip switch data + // ---0 ppi to pic command incoming + + data |= m_ppi_to_pic_command << 0; + data |= m_dsw_data << 1; + data |= ioport("START")->read() << 4; - if (m_pic_clock == 1) ret |= 0x08; - if (m_pic_readbit == 1) ret |= 0x02; -// return ioport("SYS")->read(); - return ret; + return data; } +WRITE8_MEMBER( megaphx_state::pic_portb_w ) +{ + // 7--- not used + // -6-- watchdog (not enabled by megaphx) + // --3- dsw clock + // ---2 dsw shift/load + + m_dsw_shifter[0]->shift_load_w(BIT(data, 2)); + m_dsw_shifter[1]->shift_load_w(BIT(data, 2)); + m_dsw_shifter[0]->clock_w(BIT(data, 3)); + m_dsw_shifter[1]->clock_w(BIT(data, 3)); +} -WRITE8_MEMBER(megaphx_state::port_c_w) +READ8_MEMBER( megaphx_state::ppi_portc_r ) { -// int pc = machine().device("maincpu")->safe_pc(); - port_c_value = (data & 0x0f); - - if (port_c_value == 0x9) - { - // printf("Assert PIC reset line\n"); - m_pic_is_reset = 1; - } - else if (port_c_value == 0x8) - { - // printf("Clear PIC reset line\n"); - m_pic_is_reset = 0; - - m_pic_shift_pos = 0; - m_pic_data = 0; - m_pic_data_bit = 0; - m_pic_readbit = 0; - m_pic_clock = 1; - - } - else if (port_c_value == 0xd) - { - // printf("Set PIC data line\n"); - m_pic_data_bit = 1; - } - else if (port_c_value == 0xc) - { - // printf("Clear PIC data line\n"); - m_pic_data_bit = 0; - } - else if (port_c_value == 0xf) - { - if (m_pic_clock == 0) - { - // printf("Set PIC clock line | pos %d | bit %d\n", m_pic_shift_pos, m_pic_data_bit); - - - - - - m_pic_clock = 1; - - } - } - else if (port_c_value == 0xe) - { - if (m_pic_clock == 1) - { - m_pic_data |= m_pic_data_bit << m_pic_shift_pos; - - if (m_pic_shift_pos == 8) - { - //printf("------------------ sending command %02x\n", m_pic_data); - - if (m_pic_data == 0xfe) // get software version?? - { - m_pic_result = (ioport("PIC1")->read()) | (0xFF << 8); - } - else if (m_pic_data == 0x82) // dsw1 - { - m_pic_result = (ioport("PIC1")->read()) | ((ioport("DSW1")->read()) << 8); - } - else if (m_pic_data == 0x86) // dsw2 - { - m_pic_result = (ioport("PIC1")->read()) | ((ioport("DSW2")->read()) << 8); - } - else - { - printf("unknown PIC command %02x\n", m_pic_data); - } - } - - m_pic_readbit = (m_pic_result >> (m_pic_shift_pos)) & 1; - - - m_pic_shift_pos++; - - - // printf("Clear PIC clock line\n"); - m_pic_clock = 0; - } - } - else - { - // printf("Unknown write to PIC %02x (PC %06x)\n", port_c_value, pc); - } + uint8_t data = 0; + // 3--- pic to ppi clock + // -2-- unknown + // --1- pic to ppi data + // ---0 unknown + data |= m_pic_to_ppi_data << 1; + data |= m_pic_to_ppi_clock << 3; + return data; } +WRITE8_MEMBER( megaphx_state::ppi_portc_w ) +{ + // 7--- ppi to pic clock + // -6-- ppi to pic data + // --5- unknown + // ---4 ppi to pic command -static MACHINE_CONFIG_START( megaphx, megaphx_state ) + // only set, don't clear here. otherwise the pic has no chance to pick it up + if (BIT(data, 4)) + m_ppi_to_pic_command = BIT(data, 4); + m_ppi_to_pic_data = BIT(data, 6); + m_ppi_to_pic_clock = BIT(data, 7); +} + +WRITE_LINE_MEMBER( megaphx_state::dsw_w ) +{ + m_dsw_data = state; +} + +static MACHINE_CONFIG_START( megaphx ) MCFG_CPU_ADD("maincpu", M68000, 8000000) // ?? can't read xtal due to reflections, CPU is an 8Mhz part MCFG_CPU_PROGRAM_MAP(megaphx_68k_map) MCFG_CPU_ADD("pic", PIC16C54, 12000000) /* 3MHz */ - /* Program and Data Maps are internal to the MCU */ + MCFG_PIC16C5x_READ_A_CB(READ8(megaphx_state, pic_porta_r)) + MCFG_PIC16C5x_WRITE_A_CB(WRITE8(megaphx_state, pic_porta_w)) + MCFG_PIC16C5x_READ_B_CB(READ8(megaphx_state, pic_portb_r)) + MCFG_PIC16C5x_WRITE_B_CB(WRITE8(megaphx_state, pic_portb_w)) - MCFG_INDER_AUDIO_ADD("inder_sb") + MCFG_QUANTUM_PERFECT_CPU("maincpu") + + MCFG_TTL166_ADD("ttl166_1") + MCFG_TTL166_DATA_CB(IOPORT("DSW1")) + MCFG_TTL166_QH_CB(DEVWRITELINE("ttl166_2", ttl166_device, serial_w)) + + MCFG_TTL166_ADD("ttl166_2") + MCFG_TTL166_DATA_CB(IOPORT("DSW2")) + MCFG_TTL166_QH_CB(WRITELINE(megaphx_state, dsw_w)) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) - MCFG_I8255_IN_PORTA_CB(IOPORT("P0")) - MCFG_I8255_IN_PORTB_CB(IOPORT("P1")) - // PORT C should be connected to above functions but values are incorrect + MCFG_I8255_IN_PORTA_CB(IOPORT("P1")) + MCFG_I8255_IN_PORTB_CB(IOPORT("P2")) + MCFG_I8255_IN_PORTC_CB(READ8(megaphx_state, ppi_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(megaphx_state, ppi_portc_w)) MCFG_INDER_VIDEO_ADD("inder_vid") + + MCFG_INDER_AUDIO_ADD("inder_sb") MACHINE_CONFIG_END -DRIVER_INIT_MEMBER(megaphx_state,megaphx) +DRIVER_INIT_MEMBER(megaphx_state, megaphx) { uint16_t *src = (uint16_t*)memregion( "roms67" )->base(); // copy vector table? - it must be writable because the game write the irq vector.. memcpy(m_mainram, src, 0x80); - - } diff --git a/src/mame/drivers/megaplay.cpp b/src/mame/drivers/megaplay.cpp index b045ec1b227..7981be137f2 100644 --- a/src/mame/drivers/megaplay.cpp +++ b/src/mame/drivers/megaplay.cpp @@ -53,6 +53,7 @@ Bugs: #include "emu.h" #include "cpu/z80/z80.h" +#include "machine/cxd1095.h" #include "sound/sn76496.h" #include "includes/megadriv.h" @@ -75,9 +76,7 @@ public: DECLARE_READ16_MEMBER(extra_ram_r); DECLARE_WRITE16_MEMBER(extra_ram_w); - DECLARE_READ8_MEMBER(bios_banksel_r); DECLARE_WRITE8_MEMBER(bios_banksel_w); - DECLARE_READ8_MEMBER(bios_gamesel_r); DECLARE_WRITE8_MEMBER(bios_gamesel_w); DECLARE_WRITE16_MEMBER(mp_io_write); DECLARE_READ16_MEMBER(mp_io_read); @@ -388,12 +387,23 @@ static INPUT_PORTS_START ( mp_shnb3 ) PORT_DIPSETTING( 0x0c, DEF_STR ( Normal ) ) INPUT_PORTS_END -/*MEGAPLAY specific*/ +static INPUT_PORTS_START ( mp_gunhe ) + PORT_INCLUDE( megaplay ) -READ8_MEMBER(mplay_state::bios_banksel_r) -{ - return m_bios_bank; -} + PORT_MODIFY("DSW1") /* DSW C (per game settings) */ + PORT_DIPNAME( 0x03, 0x01, "Initial Players" ) PORT_DIPLOCATION("SW3:1,2") + PORT_DIPSETTING( 0x00, "4" ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x02, "2" ) + PORT_DIPSETTING( 0x03, "1" ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR ( Difficulty ) ) PORT_DIPLOCATION("SW3:3,4") + PORT_DIPSETTING( 0x00, "Expert" ) + PORT_DIPSETTING( 0x04, DEF_STR ( Hard ) ) + PORT_DIPSETTING( 0x08, DEF_STR ( Easy ) ) + PORT_DIPSETTING( 0x0c, DEF_STR ( Normal ) ) +INPUT_PORTS_END + +/*MEGAPLAY specific*/ WRITE8_MEMBER(mplay_state::bios_banksel_w) { @@ -407,11 +417,6 @@ WRITE8_MEMBER(mplay_state::bios_banksel_w) // logerror("BIOS: ROM bank %i selected [0x%02x]\n",bios_bank >> 6, data); } -READ8_MEMBER(mplay_state::bios_gamesel_r) -{ - return m_bios_6403; -} - WRITE8_MEMBER(mplay_state::bios_gamesel_w) { m_bios_6403 = data; @@ -524,7 +529,7 @@ WRITE8_MEMBER(mplay_state::bios_width_w) READ8_MEMBER(mplay_state::bios_6404_r) { // logerror("BIOS: 0x6404 read: returned 0x%02x\n",bios_6404 | (bios_6403 & 0x10) >> 4); - return (m_bios_6404 & 0xfe) | ((m_bios_6403 & 0x10) >> 4); + return ((m_bios_6403 & 0x10) >> 4); // return m_bios_6404 | (m_bios_6403 & 0x10) >> 4; } @@ -578,15 +583,8 @@ static ADDRESS_MAP_START( megaplay_bios_map, AS_PROGRAM, 8, mplay_state ) AM_RANGE(0x4000, 0x4fff) AM_RAM AM_RANGE(0x5000, 0x5fff) AM_RAM AM_RANGE(0x6000, 0x6000) AM_WRITE(game_w) - AM_RANGE(0x6200, 0x6200) AM_READ_PORT("DSW0") - AM_RANGE(0x6201, 0x6201) AM_READ_PORT("DSW1") - AM_RANGE(0x6203, 0x6203) AM_READWRITE(bios_banksel_r, bios_banksel_w) - AM_RANGE(0x6204, 0x6204) AM_READWRITE(bios_6204_r, bios_width_w) - AM_RANGE(0x6400, 0x6400) AM_READ_PORT("TEST") - AM_RANGE(0x6401, 0x6401) AM_READ_PORT("COIN") - AM_RANGE(0x6402, 0x6402) AM_READWRITE(bios_6402_r, bios_6402_w) - AM_RANGE(0x6403, 0x6403) AM_READWRITE(bios_gamesel_r, bios_gamesel_w) - AM_RANGE(0x6404, 0x6404) AM_READWRITE(bios_6404_r, bios_6404_w) + AM_RANGE(0x6200, 0x6207) AM_DEVREADWRITE("io1", cxd1095_device, read, write) + AM_RANGE(0x6400, 0x6407) AM_DEVREADWRITE("io2", cxd1095_device, read, write) AM_RANGE(0x6600, 0x6600) AM_READWRITE(bios_6600_r, bios_6600_w) AM_RANGE(0x6001, 0x67ff) AM_WRITEONLY AM_RANGE(0x6800, 0x77ff) AM_RAM AM_SHARE("ic3_ram") @@ -627,9 +625,9 @@ uint32_t mplay_state::screen_update_megplay(screen_device &screen, bitmap_rgb32 for (int y = 0; y < 224; y++) { uint32_t* lineptr = &bitmap.pix32(y); - uint32_t* srcptr = &m_vdp1->get_bitmap().pix32(y + SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT); + uint32_t* srcptr = &m_vdp1->get_bitmap().pix32(y + sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT); - for (int x = 0; x < SEGA315_5124_WIDTH; x++) + for (int x = 0; x < sega315_5124_device::WIDTH; x++) { uint32_t src = srcptr[x] & 0xffffff; @@ -653,7 +651,7 @@ MACHINE_RESET_MEMBER(mplay_state,megaplay) MACHINE_RESET_CALL_MEMBER(megadriv); } -static MACHINE_CONFIG_START( megaplay, mplay_state ) +static MACHINE_CONFIG_START( megaplay ) /* basic machine hardware */ MCFG_FRAGMENT_ADD(md_ntsc) @@ -665,6 +663,22 @@ static MACHINE_CONFIG_START( megaplay, mplay_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + MCFG_DEVICE_ADD("io1", CXD1095, 0) + MCFG_CXD1095_IN_PORTA_CB(IOPORT("DSW0")) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("DSW1")) + MCFG_CXD1095_OUT_PORTD_CB(WRITE8(mplay_state, bios_banksel_w)) + MCFG_CXD1095_IN_PORTE_CB(READ8(mplay_state, bios_6204_r)) + MCFG_CXD1095_OUT_PORTE_CB(WRITE8(mplay_state, bios_width_w)) + + MCFG_DEVICE_ADD("io2", CXD1095, 0) + MCFG_CXD1095_IN_PORTA_CB(IOPORT("TEST")) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("COIN")) + MCFG_CXD1095_IN_PORTC_CB(READ8(mplay_state, bios_6402_r)) + MCFG_CXD1095_OUT_PORTC_CB(WRITE8(mplay_state, bios_6402_w)) + MCFG_CXD1095_OUT_PORTD_CB(WRITE8(mplay_state, bios_gamesel_w)) + MCFG_CXD1095_IN_PORTE_CB(READ8(mplay_state, bios_6404_r)) + MCFG_CXD1095_OUT_PORTE_CB(WRITE8(mplay_state, bios_6404_w)) + MCFG_SOUND_ADD("sn2", SN76496, MASTER_CLOCK/15) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) /* 3.58 MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25) /* 3.58 MHz */ @@ -672,8 +686,8 @@ static MACHINE_CONFIG_START( megaplay, mplay_state ) /* New update functions to handle the extra layer */ MCFG_SCREEN_MODIFY("megadriv") MCFG_SCREEN_RAW_PARAMS(XTAL_10_738635MHz/2, \ - SEGA315_5124_WIDTH , SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256, \ - SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT + 224) + sega315_5124_device::WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256, \ + sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224) MCFG_SCREEN_UPDATE_DRIVER(mplay_state, screen_update_megplay) // Megaplay has an additional SMS VDP as an overlay @@ -851,6 +865,17 @@ ROM_START( mp_shnb3 ) /* Shinobi 3 */ MEGAPLAY_BIOS ROM_END +ROM_START( mp_gunhe ) /* Gunstar Heroes */ + ROM_REGION( 0x400000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "mpr-16390.ic1", 0x000000, 0x100000, CRC(d963a748) SHA1(adf231c5180a9307fd6675fe77fffd4c5bfa3d6a) ) + /* Game Instruction rom copied to 0x300000 - 0x310000 (odd / even bytes equal) */ + + ROM_REGION( 0x8000, "user1", 0 ) /* Game Instructions */ + ROM_LOAD( "epr-15175-10.ic2", 0x000000, 0x08000, CRC(e4f08233) SHA1(b7e0ad3f6ae1c56df6ec76375842050f08afcbef) ) + + ROM_REGION( 0x20000, "mtbios", 0 ) /* Bios */ + MEGAPLAY_BIOS +ROM_END READ16_MEMBER(mplay_state::extra_ram_r ) { @@ -929,10 +954,12 @@ Streets Of Rage II 171-6215A 837-9165-05 610-0297-05 MPR-1542 Bio-Hazard Battle 171-6215A 837-9165-06 610-0298-06 MPR-15699-F (838200) EPR-15175-06 (27256) n/a Sonic The Hedgehog 2 171-6215A 837-9165-07 610-0297-07 MPR-16011 (838200) EPR-15175-07 (27256) n/a Shinobi III 171-6215A 837-9165-09 610-0297-09 MPR-16197 (838200) EPR-15175-09 (27256) n/a +Gunstar Heroes 171-6215A 837-9165-10 610-0297-09** MPR-16390 (838200B) EPR-15175-10 (27256) n/a Mazin Wars 171-6215A 837-9165-11 610-0297-11 MPR-16460 (838200) EPR-15175-11 (27256) n/a * This is the code for Tecmo World Cup, as the ROMs in the Columns 3 cart didn't have original Sega part numbers it's probably a converted TWC cart +** Probably reused cart case */ /* -- */ GAME( 1993, megaplay, 0, megaplay, megaplay, mplay_state, megaplay, ROT0, "Sega", "Mega Play BIOS", MACHINE_IS_BIOS_ROOT ) @@ -940,20 +967,19 @@ didn't have original Sega part numbers it's probably a converted TWC cart /* 02 */ GAME( 1993, mp_gaxe2, megaplay, megaplay, mp_gaxe2, mplay_state, megaplay, ROT0, "Sega", "Golden Axe II (Mega Play) (Rev B)" , 0 ) /* 02 */ GAME( 1993, mp_gaxe2a,mp_gaxe2, megaplay, mp_gaxe2, mplay_state, megaplay, ROT0, "Sega", "Golden Axe II (Mega Play)" , 0 ) /* 03 */ GAME( 1993, mp_gslam, megaplay, megaplay, mp_gslam, mplay_state, megaplay, ROT0, "Sega", "Grand Slam (Mega Play)",0 ) -/* 04 */ GAME( 1993, mp_twc, megaplay, megaplay, mp_twc, mplay_state, megaplay, ROT0, "Sega", "Tecmo World Cup (Mega Play)" , 0 ) -/* 05 */ GAME( 1993, mp_sor2, megaplay, megaplay, mp_sor2, mplay_state, megaplay, ROT0, "Sega", "Streets of Rage II (Mega Play)" , 0 ) -/* 06 */ GAME( 1993, mp_bio, megaplay, megaplay, mp_bio, mplay_state, megaplay, ROT0, "Sega", "Bio-hazard Battle (Mega Play)" , 0 ) +/* 04 */ GAME( 1993, mp_twc, megaplay, megaplay, mp_twc, mplay_state, megaplay, ROT0, "Sega", "Tecmo World Cup (Mega Play)" , 0 ) +/* 05 */ GAME( 1993, mp_sor2, megaplay, megaplay, mp_sor2, mplay_state, megaplay, ROT0, "Sega", "Streets of Rage II (Mega Play)" , 0 ) +/* 06 */ GAME( 1993, mp_bio, megaplay, megaplay, mp_bio, mplay_state, megaplay, ROT0, "Sega", "Bio-hazard Battle (Mega Play)" , 0 ) /* 07 */ GAME( 1993, mp_soni2, megaplay, megaplay, mp_soni2, mplay_state, megaplay, ROT0, "Sega", "Sonic The Hedgehog 2 (Mega Play)" , 0 ) /* 08 */ /* 09 */ GAME( 1993, mp_shnb3, megaplay, megaplay, mp_shnb3, mplay_state, megaplay, ROT0, "Sega", "Shinobi III (Mega Play)" , 0 ) -/* 10 */ +/* 10 */ GAME( 1993, mp_gunhe, megaplay, megaplay, mp_gunhe, mplay_state, megaplay, ROT0, "Sega", "Gunstar Heroes (Mega Play)" , 0 ) /* 11 */ GAME( 1993, mp_mazin, megaplay, megaplay, mp_mazin, mplay_state, megaplay, ROT0, "Sega", "Mazin Wars / Mazin Saga (Mega Play)",0 ) /* ?? */ GAME( 1993, mp_col3, megaplay, megaplay, megaplay, mplay_state, megaplay, ROT0, "Sega", "Columns III (Mega Play)" , 0 ) -/* Also confirmed to exist: -Gunstar Heroes +/* Not confirmed to exist: system16.com lists 'Streets of Rage' but this seems unlikely, there are no gaps in the numbering prior to 'Streets of Rage 2' diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp index b1ac8ac7ab6..452108eeafd 100644 --- a/src/mame/drivers/megasys1.cpp +++ b/src/mame/drivers/megasys1.cpp @@ -1604,7 +1604,7 @@ GFXDECODE_END /* Provided by Jim Hernandez: 3.5MHz for FM, 30KHz (!) for ADPCM */ -static MACHINE_CONFIG_START( system_A, megasys1_state ) +static MACHINE_CONFIG_START( system_A ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, SYS_A_CPU_CLOCK) /* 6MHz verified */ @@ -1624,7 +1624,7 @@ static MACHINE_CONFIG_START( system_A, megasys1_state ) MCFG_SCREEN_RAW_PARAMS(SYS_A_CPU_CLOCK,406,0,256,263,16,240) MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(megasys1_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) @@ -1649,11 +1649,11 @@ static MACHINE_CONFIG_START( system_A, megasys1_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) - MCFG_OKIM6295_ADD("oki1", OKI4_SOUND_CLOCK, OKIM6295_PIN7_HIGH) /* 4MHz verified */ + MCFG_OKIM6295_ADD("oki1", OKI4_SOUND_CLOCK, PIN7_HIGH) /* 4MHz verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) - MCFG_OKIM6295_ADD("oki2", OKI4_SOUND_CLOCK, OKIM6295_PIN7_HIGH) /* 4MHz verified */ + MCFG_OKIM6295_ADD("oki2", OKI4_SOUND_CLOCK, PIN7_HIGH) /* 4MHz verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) MACHINE_CONFIG_END @@ -1693,7 +1693,7 @@ static MACHINE_CONFIG_DERIVED( system_B_monkelf, system_B ) MCFG_CPU_PROGRAM_MAP(megasys1B_monkelf_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( system_Bbl, megasys1_state ) +static MACHINE_CONFIG_START( system_Bbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, SYS_B_CPU_CLOCK) @@ -1709,7 +1709,7 @@ static MACHINE_CONFIG_START( system_Bbl, megasys1_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(megasys1_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) @@ -1727,7 +1727,7 @@ static MACHINE_CONFIG_START( system_Bbl, megasys1_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") /* just the one OKI, used for sound and music */ - MCFG_OKIM6295_ADD("oki1", OKI4_SOUND_CLOCK, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", OKI4_SOUND_CLOCK, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) MACHINE_CONFIG_END @@ -1736,11 +1736,11 @@ static MACHINE_CONFIG_DERIVED( system_B_hayaosi1, system_B ) /* basic machine hardware */ - MCFG_OKIM6295_REPLACE("oki1", 2000000, OKIM6295_PIN7_HIGH) /* correct speed, but unknown OSC + divider combo */ + MCFG_OKIM6295_REPLACE("oki1", 2000000, PIN7_HIGH) /* correct speed, but unknown OSC + divider combo */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) - MCFG_OKIM6295_REPLACE("oki2", 2000000, OKIM6295_PIN7_HIGH) /* correct speed, but unknown OSC + divider combo */ + MCFG_OKIM6295_REPLACE("oki2", 2000000, PIN7_HIGH) /* correct speed, but unknown OSC + divider combo */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) MACHINE_CONFIG_END @@ -1771,7 +1771,7 @@ MACHINE_CONFIG_END ***************************************************************************/ -static MACHINE_CONFIG_START( system_D, megasys1_state ) +static MACHINE_CONFIG_START( system_D ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, SYS_D_CPU_CLOCK) /* 8MHz */ @@ -1787,7 +1787,7 @@ static MACHINE_CONFIG_START( system_D, megasys1_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(megasys1_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", ABC) @@ -1802,7 +1802,7 @@ static MACHINE_CONFIG_START( system_D, megasys1_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", SYS_D_CPU_CLOCK/4, OKIM6295_PIN7_HIGH) /* 2MHz (8MHz / 4) */ + MCFG_OKIM6295_ADD("oki1", SYS_D_CPU_CLOCK/4, PIN7_HIGH) /* 2MHz (8MHz / 4) */ MCFG_DEVICE_ADDRESS_MAP(AS_0, megasys1D_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1821,7 +1821,7 @@ MACHINE_CONFIG_END ***************************************************************************/ -static MACHINE_CONFIG_START( system_Z, megasys1_state ) +static MACHINE_CONFIG_START( system_Z ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, SYS_A_CPU_CLOCK) /* 6MHz (12MHz / 2) */ @@ -4091,7 +4091,7 @@ ROM_END void megasys1_state::rodland_gfx_unmangle(const char *region) { uint8_t *rom = memregion(region)->base(); - int size = memregion(region)->bytes(); + uint32_t size = memregion(region)->bytes(); int i; /* data lines swap: 76543210 -> 64537210 */ @@ -4120,7 +4120,7 @@ void megasys1_state::rodland_gfx_unmangle(const char *region) void megasys1_state::jitsupro_gfx_unmangle(const char *region) { uint8_t *rom = memregion(region)->base(); - int size = memregion(region)->bytes(); + uint32_t size = memregion(region)->bytes(); int i; /* data lines swap: 76543210 -> 43576210 */ @@ -4144,7 +4144,7 @@ void megasys1_state::jitsupro_gfx_unmangle(const char *region) void megasys1_state::stdragona_gfx_unmangle(const char *region) { uint8_t *rom = memregion(region)->base(); - int size = memregion(region)->bytes(); + uint32_t size = memregion(region)->bytes(); int i; /* data lines swap: 76543210 -> 37564210 */ @@ -4591,14 +4591,14 @@ DRIVER_INIT_MEMBER(megasys1_state,monkelf) *************************************/ // Type Z -GAME( 1988, lomakai, 0, system_Z, lomakai, driver_device, 0, ROT0, "Jaleco", "Legend of Makai (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, makaiden, lomakai, system_Z, lomakai, driver_device, 0, ROT0, "Jaleco", "Makai Densetsu (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, lomakai, 0, system_Z, lomakai, megasys1_state, 0, ROT0, "Jaleco", "Legend of Makai (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, makaiden, lomakai, system_Z, lomakai, megasys1_state, 0, ROT0, "Jaleco", "Makai Densetsu (Japan)", MACHINE_SUPPORTS_SAVE ) // Type A -GAME( 1988, p47, 0, system_A, p47, driver_device, 0, ROT0, "Jaleco", "P-47 - The Phantom Fighter (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, p47j, p47, system_A, p47, driver_device, 0, ROT0, "Jaleco", "P-47 - The Freedom Fighter (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, p47je, p47, system_A, p47, driver_device, 0, ROT0, "Jaleco", "P-47 - The Freedom Fighter (Japan, Export)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, kickoff, 0, system_A, kickoff, driver_device, 0, ROT0, "Jaleco", "Kick Off (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, p47, 0, system_A, p47, megasys1_state, 0, ROT0, "Jaleco", "P-47 - The Phantom Fighter (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, p47j, p47, system_A, p47, megasys1_state, 0, ROT0, "Jaleco", "P-47 - The Freedom Fighter (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, p47je, p47, system_A, p47, megasys1_state, 0, ROT0, "Jaleco", "P-47 - The Freedom Fighter (Japan, Export)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, kickoff, 0, system_A, kickoff, megasys1_state, 0, ROT0, "Jaleco", "Kick Off (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, tshingen, 0, system_A, tshingen, megasys1_state, phantasm, ROT0, "Jaleco", "Shingen Samurai-Fighter (Japan, English)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1988, tshingena,tshingen, system_A, tshingen, megasys1_state, phantasm, ROT0, "Jaleco", "Takeda Shingen (Japan, Japanese)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1988, kazan, 0, system_A_iganinju, kazan, megasys1_state, iganinju, ROT0, "Jaleco", "Ninja Kazan (World)", MACHINE_SUPPORTS_SAVE ) @@ -4626,7 +4626,7 @@ GAME( 1990, monkelf, avspirit, system_B_monkelf, avspirit, megasys1_state, mon GAME( 1991, edf, 0, system_B, edf, megasys1_state, edf, ROT0, "Jaleco", "E.D.F. : Earth Defense Force (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, edfa, edf, system_B, edf, megasys1_state, edf, ROT0, "Jaleco", "E.D.F. : Earth Defense Force (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, edfu, edf, system_B, edf, megasys1_state, edf, ROT0, "Jaleco", "E.D.F. : Earth Defense Force (North America)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, edfbl, edf, system_Bbl, edf, driver_device, 0, ROT0, "bootleg","E.D.F. : Earth Defense Force (bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, edfbl, edf, system_Bbl, edf, megasys1_state, 0, ROT0, "bootleg","E.D.F. : Earth Defense Force (bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1993, hayaosi1, 0, system_B_hayaosi1, hayaosi1, megasys1_state, hayaosi1, ROT0, "Jaleco", "Hayaoshi Quiz Ouza Ketteisen - The King Of Quiz", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // Type C diff --git a/src/mame/drivers/megatech.cpp b/src/mame/drivers/megatech.cpp index 09091c55f16..a2f6dfb4c3d 100644 --- a/src/mame/drivers/megatech.cpp +++ b/src/mame/drivers/megatech.cpp @@ -72,6 +72,7 @@ Sonic Hedgehog 2 171-6215A 837-6963-62 610-0239-62 MPR */ #include "emu.h" #include "cpu/z80/z80.h" +#include "machine/cxd1095.h" #include "sound/sn76496.h" #include "rendlay.h" @@ -105,8 +106,10 @@ public: DECLARE_READ8_MEMBER(cart_select_r); DECLARE_WRITE8_MEMBER(cart_select_w); - DECLARE_READ8_MEMBER(bios_ctrl_r); - DECLARE_WRITE8_MEMBER(bios_ctrl_w); + DECLARE_READ8_MEMBER(bios_portc_r); + DECLARE_READ8_MEMBER(bios_porte_r); + DECLARE_WRITE8_MEMBER(bios_portd_w); + DECLARE_WRITE8_MEMBER(bios_porte_w); DECLARE_READ8_MEMBER(read_68k_banked_data); DECLARE_WRITE8_MEMBER(write_68k_banked_data); DECLARE_WRITE8_MEMBER(mt_z80_bank_w); @@ -137,7 +140,7 @@ public: uint32_t screen_update_main(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_menu(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_main(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_main); private: uint8_t m_mt_cart_select_reg; @@ -302,10 +305,6 @@ static INPUT_PORTS_START( megatech ) /* Genesis Input Ports */ INPUT_PORTS_END /* MEGATECH specific */ -READ8_MEMBER(mtech_state::cart_select_r ) -{ - return m_mt_cart_select_reg; -} READ8_MEMBER(mtech_state::sms_count_r) { @@ -453,7 +452,7 @@ void mtech_state::switch_cart(int gameno) } } -WRITE8_MEMBER(mtech_state::cart_select_w ) +WRITE8_MEMBER(mtech_state::cart_select_w) { /* seems to write the slot number.. but it stores something in (banked?) ram @@ -464,27 +463,25 @@ WRITE8_MEMBER(mtech_state::cart_select_w ) } -READ8_MEMBER(mtech_state::bios_ctrl_r ) +READ8_MEMBER(mtech_state::bios_portc_r) { - if (offset == 0) - return 0; - if (offset == 2) - return m_bios_ctrl[offset] & 0xfe; + return 0; +} - return m_bios_ctrl[offset]; +READ8_MEMBER(mtech_state::bios_porte_r) +{ + return 0; } -WRITE8_MEMBER(mtech_state::bios_ctrl_w ) +WRITE8_MEMBER(mtech_state::bios_portd_w) { - if (offset == 1) - { - output().set_value("Alarm_sound", BIT(data, 7)); - m_bios_ctrl_inputs = data & 0x04; // Genesis/SMS input ports disable bit - } - else if (offset == 2) - output().set_value("Flash_screen", BIT(data, 1)); + output().set_value("Alarm_sound", BIT(data, 7)); + m_bios_ctrl_inputs = data & 0x04; // Genesis/SMS input ports disable bit +} - m_bios_ctrl[offset] = data; +WRITE8_MEMBER(mtech_state::bios_porte_w) +{ + output().set_value("Flash_screen", BIT(data, 1)); } /* this sets 0x300000 which may indicate that the 68k can see the instruction rom @@ -525,13 +522,8 @@ static ADDRESS_MAP_START( megatech_bios_map, AS_PROGRAM, 8, mtech_state ) AM_RANGE(0x3000, 0x3fff) AM_READWRITE(banked_ram_r, banked_ram_w) // copies instruction data here at startup, must be banked AM_RANGE(0x4000, 0x5fff) AM_RAM // plain ram? AM_RANGE(0x6000, 0x6000) AM_WRITE(mt_z80_bank_w ) - AM_RANGE(0x6400, 0x6400) AM_READ_PORT("BIOS_DSW0") - AM_RANGE(0x6401, 0x6401) AM_READ_PORT("BIOS_DSW1") - AM_RANGE(0x6404, 0x6404) AM_READWRITE(cart_select_r, cart_select_w) // cart select & ram bank - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("BIOS_IN0") - AM_RANGE(0x6801, 0x6801) AM_READ_PORT("BIOS_IN1") - AM_RANGE(0x6802, 0x6807) AM_READWRITE(bios_ctrl_r, bios_ctrl_w) -// AM_RANGE(0x6805, 0x6805) AM_READ_PORT("???") + AM_RANGE(0x6400, 0x6407) AM_DEVREADWRITE("io1", cxd1095_device, read, write) + AM_RANGE(0x6800, 0x6807) AM_DEVREADWRITE("io2", cxd1095_device, read, write) AM_RANGE(0x7000, 0x77ff) AM_ROM // from bios rom (0x7000-0x77ff populated in ROM) //AM_RANGE(0x7800, 0x7fff) AM_RAM // ? AM_RANGE(0x8000, 0x9fff) AM_READWRITE(read_68k_banked_data, write_68k_banked_data) // window into 68k address space, reads instr rom and writes to reset banks on z80 carts? @@ -625,9 +617,9 @@ uint32_t mtech_state::screen_update_main(screen_device &screen, bitmap_rgb32 &bi for (int y = 0; y < 224; y++) { uint32_t* lineptr = &bitmap.pix32(y); - uint32_t* srcptr = &m_vdp->get_bitmap().pix32(y + SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT); + uint32_t* srcptr = &m_vdp->get_bitmap().pix32(y + sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT); - for (int x = 0; x < SEGA315_5124_WIDTH; x++) + for (int x = 0; x < sega315_5124_device::WIDTH; x++) lineptr[x] = srcptr[x]; } #endif @@ -635,10 +627,10 @@ uint32_t mtech_state::screen_update_main(screen_device &screen, bitmap_rgb32 &bi return 0; } -void mtech_state::screen_eof_main(screen_device &screen, bool state) +WRITE_LINE_MEMBER(mtech_state::screen_vblank_main) { if (!m_current_MACHINE_IS_sms) - screen_eof_megadriv(screen, state); + screen_vblank_megadriv(state); } MACHINE_RESET_MEMBER(mtech_state, megatech) @@ -676,7 +668,7 @@ uint32_t mtech_state::screen_update_menu(screen_device &screen, bitmap_rgb32 &bi } -static MACHINE_CONFIG_START( megatech, mtech_state ) +static MACHINE_CONFIG_START( megatech ) /* basic machine hardware */ MCFG_FRAGMENT_ADD(md_ntsc) @@ -685,16 +677,29 @@ static MACHINE_CONFIG_START( megatech, mtech_state ) MCFG_CPU_PROGRAM_MAP(megatech_bios_map) MCFG_CPU_IO_MAP(megatech_bios_portmap) + MCFG_DEVICE_ADD("io1", CXD1095, 0) + MCFG_CXD1095_IN_PORTA_CB(IOPORT("BIOS_DSW0")) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("BIOS_DSW1")) + MCFG_CXD1095_OUT_PORTE_CB(WRITE8(mtech_state, cart_select_w)) + + MCFG_DEVICE_ADD("io2", CXD1095, 0) + MCFG_CXD1095_IN_PORTA_CB(IOPORT("BIOS_IN0")) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("BIOS_IN1")) + MCFG_CXD1095_IN_PORTC_CB(READ8(mtech_state, bios_portc_r)) + MCFG_CXD1095_OUT_PORTD_CB(WRITE8(mtech_state, bios_portd_w)) + MCFG_CXD1095_IN_PORTE_CB(READ8(mtech_state, bios_porte_r)) + MCFG_CXD1095_OUT_PORTE_CB(WRITE8(mtech_state, bios_porte_w)) + MCFG_MACHINE_RESET_OVERRIDE(mtech_state, megatech) MCFG_DEFAULT_LAYOUT(layout_dualhovu) MCFG_SCREEN_MODIFY("megadriv") MCFG_SCREEN_RAW_PARAMS(XTAL_10_738635MHz/2, \ - SEGA315_5124_WIDTH , SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256, \ - SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT + 224) + sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256, \ + sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224) MCFG_SCREEN_UPDATE_DRIVER(mtech_state, screen_update_main) - MCFG_SCREEN_VBLANK_DRIVER(mtech_state, screen_eof_main) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mtech_state, screen_vblank_main)) MCFG_DEVICE_MODIFY("gen_vdp") MCFG_SEGA315_5313_INT_CB(INPUTLINE("genesis_snd_z80", 0)) @@ -702,8 +707,8 @@ static MACHINE_CONFIG_START( megatech, mtech_state ) MCFG_SCREEN_ADD("menu", RASTER) // check frq MCFG_SCREEN_RAW_PARAMS(XTAL_10_738635MHz/2, \ - SEGA315_5124_WIDTH , SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256, \ - SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT + 224) + sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256, \ + sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224) MCFG_SCREEN_UPDATE_DRIVER(mtech_state, screen_update_menu) MCFG_DEVICE_ADD("vdp1", SEGA315_5246, 0) diff --git a/src/mame/drivers/megazone.cpp b/src/mame/drivers/megazone.cpp index 524e028228e..85928fbea61 100644 --- a/src/mame/drivers/megazone.cpp +++ b/src/mame/drivers/megazone.cpp @@ -59,7 +59,7 @@ WRITE8_MEMBER(megazone_state::megazone_port_b_w) C += 220000; /* 220000pF = 0.22uF */ data >>= 2; - dynamic_cast(machine().device(fltname[i]))->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 200, CAP_P(C)); + downcast(machine().device(fltname[i]))->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 2200, 200, CAP_P(C)); } } @@ -130,8 +130,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( megazone_i8039_io_map, AS_IO, 8, megazone_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w) ADDRESS_MAP_END static INPUT_PORTS_START( megazone ) @@ -237,7 +235,7 @@ INTERRUPT_GEN_MEMBER(megazone_state::vblank_irq) } -static MACHINE_CONFIG_START( megazone, megazone_state ) +static MACHINE_CONFIG_START( megazone ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI1, 18432000/9) /* 2 MHz */ @@ -252,6 +250,8 @@ static MACHINE_CONFIG_START( megazone, megazone_state ) MCFG_CPU_ADD("daccpu", I8039,14318000/2) /* 1/2 14MHz crystal */ MCFG_CPU_PROGRAM_MAP(megazone_i8039_map) MCFG_CPU_IO_MAP(megazone_i8039_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(megazone_state, i8039_irqen_and_status_w)) MCFG_QUANTUM_TIME(attotime::from_hz(900)) @@ -515,8 +515,8 @@ ROM_START( megazonec ) ROM_END -GAME( 1983, megazone, 0, megazone, megazone, driver_device, 0, ROT90, "Konami", "Mega Zone (Konami set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, megazonea, megazone, megazone, megazona, driver_device, 0, ROT90, "Konami", "Mega Zone (Konami set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, megazoneb, megazone, megazone, megazone, driver_device, 0, ROT90, "Konami (Kosuka license)", "Mega Zone (Kosuka set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, megazonec, megazone, megazone, megazone, driver_device, 0, ROT90, "Konami (Kosuka license)", "Mega Zone (Kosuka set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, megazonei, megazone, megazone, megazone, driver_device, 0, ROT90, "Konami (Interlogic license)", "Mega Zone (Interlogic)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazone, 0, megazone, megazone, megazone_state, 0, ROT90, "Konami", "Mega Zone (Konami set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazonea, megazone, megazone, megazona, megazone_state, 0, ROT90, "Konami", "Mega Zone (Konami set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazoneb, megazone, megazone, megazone, megazone_state, 0, ROT90, "Konami (Kosuka license)", "Mega Zone (Kosuka set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazonec, megazone, megazone, megazone, megazone_state, 0, ROT90, "Konami (Kosuka license)", "Mega Zone (Kosuka set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazonei, megazone, megazone, megazone, megazone_state, 0, ROT90, "Konami (Interlogic license)", "Mega Zone (Interlogic)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/meijinsn.cpp b/src/mame/drivers/meijinsn.cpp index 116b72b6784..92e12ed11e7 100644 --- a/src/mame/drivers/meijinsn.cpp +++ b/src/mame/drivers/meijinsn.cpp @@ -350,7 +350,7 @@ void meijinsn_state::machine_reset() } -static MACHINE_CONFIG_START( meijinsn, meijinsn_state ) +static MACHINE_CONFIG_START( meijinsn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 9000000 ) @@ -414,4 +414,4 @@ ROM_START( meijinsn ) ROM_LOAD( "clr", 0x00, 0x20, CRC(7b95b5a7) SHA1(c15be28bcd6f5ffdde659f2d352ae409f04b2557) ) ROM_END -GAME( 1986, meijinsn, 0, meijinsn, meijinsn, driver_device, 0, ROT0, "SNK", "Meijinsen", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, meijinsn, 0, meijinsn, meijinsn, meijinsn_state, 0, ROT0, "SNK", "Meijinsen", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mekd2.cpp b/src/mame/drivers/mekd2.cpp index 4bdfb6e8ef8..69b2269e7dc 100644 --- a/src/mame/drivers/mekd2.cpp +++ b/src/mame/drivers/mekd2.cpp @@ -364,7 +364,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mekd2_state::mekd2_p) ************************************************************/ -static MACHINE_CONFIG_START( mekd2, mekd2_state ) +static MACHINE_CONFIG_START( mekd2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_MEKD2 / 2) /* 614.4 kHz */ MCFG_CPU_PROGRAM_MAP(mekd2_mem) @@ -424,5 +424,5 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, mekd2, 0, 0, mekd2, mekd2, driver_device, 0, "Motorola", "MEK6800D2" , 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1977, mekd2, 0, 0, mekd2, mekd2, mekd2_state, 0, "Motorola", "MEK6800D2" , 0 ) diff --git a/src/mame/drivers/mephisto.cpp b/src/mame/drivers/mephisto.cpp index 03f660ccf15..0649fd98a7a 100644 --- a/src/mame/drivers/mephisto.cpp +++ b/src/mame/drivers/mephisto.cpp @@ -354,7 +354,7 @@ void mephisto_state::machine_reset() } -static MACHINE_CONFIG_START( mephisto, mephisto_state ) +static MACHINE_CONFIG_START( mephisto ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M65C02,4915200) /* 65C02 */ MCFG_CPU_PROGRAM_MAP(mephisto_mem) @@ -456,7 +456,7 @@ DRIVER_INIT_MEMBER(mephisto_state,mephisto) ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ CONS( 1984, mm2, mm4, 0, mm2, mephisto, mephisto_state, mephisto, "Hegener & Glaser", "Mephisto MM2 Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) CONS( 1986, rebel5, mm4, 0, rebel5, mephisto, mephisto_state, mephisto, "Hegener & Glaser", "Mephisto Rebell 5,0 Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/mephistp.cpp b/src/mame/drivers/mephistp.cpp index 9f2c8fb6cad..103459f6e4d 100644 --- a/src/mame/drivers/mephistp.cpp +++ b/src/mame/drivers/mephistp.cpp @@ -162,7 +162,7 @@ void mephisto_pinball_state::machine_reset() { } -static MACHINE_CONFIG_START( mephisto, mephisto_pinball_state ) +static MACHINE_CONFIG_START( mephisto ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, XTAL_18MHz/3) MCFG_CPU_PROGRAM_MAP(mephisto_map) @@ -247,6 +247,6 @@ ROM_START(mephistp1) ROM_END -GAME(1987, mephistp, 0, mephisto, mephisto, driver_device, 0, ROT0, "Stargame", "Mephisto (rev. 1.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, mephistp1, mephistp, mephisto, mephisto, driver_device, 0, ROT0, "Stargame", "Mephisto (rev. 1.1)", MACHINE_IS_SKELETON_MECHANICAL) -//GAME(1988, sport2k, 0, sport2k, sport2k, driver_device, 0, ROT0, "Unidesa", "Cirsa Sport 2000", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, mephistp, 0, mephisto, mephisto, mephisto_pinball_state, 0, ROT0, "Stargame", "Mephisto (rev. 1.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, mephistp1, mephistp, mephisto, mephisto, mephisto_pinball_state, 0, ROT0, "Stargame", "Mephisto (rev. 1.1)", MACHINE_IS_SKELETON_MECHANICAL) +//GAME(1988, sport2k, 0, sport2k, sport2k, mephisto_pinball_state, 0, ROT0, "Unidesa", "Cirsa Sport 2000", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/merit.cpp b/src/mame/drivers/merit.cpp index 14351066f71..e360fc2df53 100644 --- a/src/mame/drivers/merit.cpp +++ b/src/mame/drivers/merit.cpp @@ -1357,7 +1357,7 @@ MACHINE_START_MEMBER(merit_state,casino5) membank("bank2")->set_entry(0); } -static MACHINE_CONFIG_START( pitboss, merit_state ) +static MACHINE_CONFIG_START( pitboss ) MCFG_CPU_ADD("maincpu",Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(pitboss_map) MCFG_CPU_IO_MAP(trvwhiz_io_map) @@ -2451,34 +2451,34 @@ DRIVER_INIT_MEMBER(merit_state,dtrvwz5) /* Gambling type games */ -GAME( 1983, pitboss, 0, pitboss, pitbossa, driver_device, 0, ROT0, "Merit", "The Pit Boss (2214-07, U5-0A)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) /* "7" hand written over a 5 */ -GAME( 1983, pitboss04, pitboss, casino5, pitboss, driver_device, 0, ROT0, "Merit", "The Pit Boss (2214-04)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1983, pitboss03, pitboss, pitboss, pitbossa, driver_device, 0, ROT0, "Merit", "The Pit Boss (2214-03, U5-0C)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1983, pitboss03a, pitboss, pitboss, pitbossa1,driver_device, 0, ROT0, "Merit", "The Pit Boss (2214-03, U5-1C)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1983, pitbossm4, pitboss, pitboss, pitbossb, driver_device, 0, ROT0, "Merit", "The Pit Boss (M4A1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1983, pitbossps, pitboss, pitboss, pitbossa, driver_device, 0, ROT0, "Merit", "The Pit Boss (PSB1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1983, mdchoice, pitboss, pitboss, mdchoice, driver_device, 0, ROT0, "Merit", "Dealer's Choice (E4A1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) /* Copyright year based on other Pit Boss sets */ -GAME( 1983, mpchoice, pitboss, pitboss, mpchoice, driver_device, 0, ROT0, "Merit", "Player's Choice (M4C1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1983, pitboss, 0, pitboss, pitbossa, merit_state, 0, ROT0, "Merit", "The Pit Boss (2214-07, U5-0A)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) /* "7" hand written over a 5 */ +GAME( 1983, pitboss04, pitboss, casino5, pitboss, merit_state, 0, ROT0, "Merit", "The Pit Boss (2214-04)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1983, pitboss03, pitboss, pitboss, pitbossa, merit_state, 0, ROT0, "Merit", "The Pit Boss (2214-03, U5-0C)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1983, pitboss03a, pitboss, pitboss, pitbossa1,merit_state, 0, ROT0, "Merit", "The Pit Boss (2214-03, U5-1C)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1983, pitbossm4, pitboss, pitboss, pitbossb, merit_state, 0, ROT0, "Merit", "The Pit Boss (M4A1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1983, pitbossps, pitboss, pitboss, pitbossa, merit_state, 0, ROT0, "Merit", "The Pit Boss (PSB1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1983, mdchoice, pitboss, pitboss, mdchoice, merit_state, 0, ROT0, "Merit", "Dealer's Choice (E4A1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) /* Copyright year based on other Pit Boss sets */ +GAME( 1983, mpchoice, pitboss, pitboss, mpchoice, merit_state, 0, ROT0, "Merit", "Player's Choice (M4C1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1989, casino5, 0, casino5, casino5, driver_device, 0, ROT0, "Merit", "Casino Five (3315-02, U5-2B)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, casino5a, casino5, casino5, casino5, driver_device, 0, ROT0, "Merit", "Casino Five (3315-02, U5-0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, casino5, 0, casino5, casino5, merit_state, 0, ROT0, "Merit", "Casino Five (3315-02, U5-2B)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, casino5a, casino5, casino5, casino5, merit_state, 0, ROT0, "Merit", "Casino Five (3315-02, U5-0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, mroundup, 0, pitboss, mroundup, driver_device, 0, ROT0, "Merit", "The Round Up", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1984, mroundup, 0, pitboss, mroundup, merit_state, 0, ROT0, "Merit", "The Round Up", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1984, chkndraw, 0, pitboss, chkndraw, driver_device, 0, ROT0, "Merit", "Chicken Draw (2131-04, U5-1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1984, chkndrawa, chkndraw, pitboss, chkndraw, driver_device, 0, ROT0, "Merit", "Chicken Draw (2131-04, U5-0)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1984, chkndraw, 0, pitboss, chkndraw, merit_state, 0, ROT0, "Merit", "Chicken Draw (2131-04, U5-1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1984, chkndrawa, chkndraw, pitboss, chkndraw, merit_state, 0, ROT0, "Merit", "Chicken Draw (2131-04, U5-0)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1987, riviera, 0, dodge, riviera, driver_device, 0, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-4A)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1986, rivieraa, riviera, dodge, riviera, driver_device, 0, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1986, rivierab, riviera, dodge, rivierab, driver_device, 0, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-2D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1987, riviera, 0, dodge, riviera, merit_state, 0, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-4A)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1986, rivieraa, riviera, dodge, riviera, merit_state, 0, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1986, rivierab, riviera, dodge, rivierab, merit_state, 0, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-2D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1986, bigappg, 0, bigappg, bigappg, driver_device, 0, ROT0, "Big Apple Games / Merit", "The Big Apple (2131-13, U5-0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, misdraw, 0, misdraw, bigappg, driver_device, 0, ROT0, "Big Apple Games / Merit", "Michigan Super Draw (2131-16, U5-2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, iowapp, 0, dodge, iowapp, driver_device, 0, ROT0, "Merit", "Iowa Premium Player (2131-21, U5-1)", MACHINE_SUPPORTS_SAVE ) /* Copyright year based on rom label */ +GAME( 1986, bigappg, 0, bigappg, bigappg, merit_state, 0, ROT0, "Big Apple Games / Merit", "The Big Apple (2131-13, U5-0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, misdraw, 0, misdraw, bigappg, merit_state, 0, ROT0, "Big Apple Games / Merit", "Michigan Super Draw (2131-16, U5-2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, iowapp, 0, dodge, iowapp, merit_state, 0, ROT0, "Merit", "Iowa Premium Player (2131-21, U5-1)", MACHINE_SUPPORTS_SAVE ) /* Copyright year based on rom label */ -GAME( 1986, dodgectya,dodgecty,dodge, dodge, driver_device, 0, ROT0, "Merit", "Dodge City (2131-82, U5-0D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1986, dodgectyb,dodgecty,dodge, dodge, driver_device, 0, ROT0, "Merit", "Dodge City (2131-82, U5-50)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1986, dodgectyc,dodgecty,dodge, dodge, driver_device, 0, ROT0, "Merit", "Dodge City (2131-82, U5-0 GT)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1986, dodgectya,dodgecty,dodge, dodge, merit_state, 0, ROT0, "Merit", "Dodge City (2131-82, U5-0D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1986, dodgectyb,dodgecty,dodge, dodge, merit_state, 0, ROT0, "Merit", "Dodge City (2131-82, U5-50)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1986, dodgectyc,dodgecty,dodge, dodge, merit_state, 0, ROT0, "Merit", "Dodge City (2131-82, U5-0 GT)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* Trivia and Word games */ @@ -2508,6 +2508,6 @@ GAME( 1986, phrcrazev,phrcraze,phrcraze, phrcrazs, merit_state, key_7, ROT90, " GAME( 1987, dtrvwz5, 0, dtrvwz5, dtrvwh5, merit_state, dtrvwz5,ROT0, "Merit", "Deluxe Trivia ? Whiz (6221-70, U5-0A Edition 5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, couple, 0, couple, couple, merit_state, couple, ROT0, "Merit", "The Couples (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1988, couplep, couple, couple, couplep, merit_state, couple, ROT0, "Merit", "The Couples (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1988, couplei, couple, couple, couple, merit_state, couple, ROT0, "Merit", "The Couples (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1988, couple, 0, couple, couple, merit_state, couple, ROT0, "Merit", "The Couples (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1988, couplep, couple, couple, couplep, merit_state, couple, ROT0, "Merit", "The Couples (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1988, couplei, couple, couple, couple, merit_state, couple, ROT0, "Merit", "The Couples (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/meritm.cpp b/src/mame/drivers/meritm.cpp index 77937db1ddb..f1cf7319f2b 100644 --- a/src/mame/drivers/meritm.cpp +++ b/src/mame/drivers/meritm.cpp @@ -201,7 +201,6 @@ public: m_microtouch(*this, "microtouch") , m_uart(*this, "ns16550"), m_maincpu(*this, "maincpu"), - m_palette(*this, "v9938_0:palette"), m_bank1(*this, "bank1"), m_bank2(*this, "bank2"), m_bank3(*this, "bank3"), @@ -217,7 +216,6 @@ public: optional_device m_microtouch; optional_device m_uart; required_device m_maincpu; - required_device m_palette; required_memory_bank m_bank1; optional_memory_bank m_bank2; optional_memory_bank m_bank3; @@ -347,7 +345,7 @@ uint32_t meritm_state::screen_update_meritm(screen_device &screen, bitmap_ind16 popmessage("Layer 1 %sabled",m_layer1_enabled ? "en" : "dis"); } - bitmap.fill(m_palette->black_pen(), cliprect); + bitmap.fill(m_v9938_0->black_pen(), cliprect); if ( m_layer0_enabled ) { @@ -1087,7 +1085,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(meritm_state::vblank_end_tick) m_z80pio_0->port_a_write(m_vint); } -static MACHINE_CONFIG_START( meritm_crt250, meritm_state ) +static MACHINE_CONFIG_START( meritm_crt250 ) MCFG_CPU_ADD("maincpu", Z80, SYSTEM_CLK/6) MCFG_CPU_PROGRAM_MAP(meritm_crt250_map) MCFG_CPU_IO_MAP(meritm_crt250_io_map) @@ -1233,7 +1231,7 @@ This set also has additional bonuses for certain winning hands, but requires a m */ ROM_START( meritjp ) /* Uses a small daughter card CRT-255 & Dallas DS1225Y NV SRAM */ ROM_REGION( 0x80000, "maincpu", 0 ) - ROM_LOAD( "9131-01_u9-00.u9", 0x00000, 0x10000, CRC(dadaac6a) SHA1(798068f3cef6f5d41dd8ee4315e220932f31a3f7) ) /* 9131-01 U9-00 - Has REPLAYS feature */ + ROM_LOAD( "9131-09_u9-00.u9", 0x00000, 0x10000, CRC(dadaac6a) SHA1(798068f3cef6f5d41dd8ee4315e220932f31a3f7) ) /* 9131-09 U9-00 - Has REPLAYS feature */ ROM_LOAD( "9131-01_u10-r0.u10", 0x10000, 0x10000, CRC(ebee75e2) SHA1(1ba1c92684d0f5251bb5b57a29b39467b57a1170) ) ROM_LOAD( "9131-01_u11-r0.u11", 0x20000, 0x10000, CRC(f2db6f5d) SHA1(3f734a7e8c72c14bf4a3e6f595819311739394d3) ) ROM_END @@ -2294,63 +2292,63 @@ DRIVER_INIT_MEMBER(meritm_state,megat3te) } /* CRT-250 */ -GAME( 1987, americna, 0, meritm_crt250, americna, driver_device, 0, ROT0, "Merit", "Americana (9131-01)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1987, americnaa, americna, meritm_crt250, americna, driver_device, 0, ROT0, "Merit", "Americana (9131-00)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1988, meritjp, 0, meritm_crt250, americna, driver_device, 0, ROT0, "Merit", "Merit Joker Poker (9131-01)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1988, dodgecty, 0, meritm_crt250, dodgecty, driver_device, 0, ROT0, "Merit", "Dodge City (9131-02)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1988, pitboss2, 0, meritm_crt250, pitboss2, driver_device, 0, ROT0, "Merit", "Pit Boss II (9221-01C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1988, spitboss, 0, meritm_crt250, spitboss, driver_device, 0, ROT0, "Merit", "Super Pit Boss (9221-02A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1990, pitbosss, 0, meritm_crt250, pitbosss, driver_device, 0, ROT0, "Merit", "Pit Boss Superstar (9221-10-00B)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1990, pitbosssa, pitbosss, meritm_crt250, pitbosss, driver_device, 0, ROT0, "Merit", "Pit Boss Superstar (9221-10-00A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, pitbosssc, pitbosss, meritm_crt250, pitbosss, driver_device, 0, ROT0, "Merit", "Pit Boss Superstar (9221-12-01)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1987, americna, 0, meritm_crt250, americna, meritm_state, 0, ROT0, "Merit", "Americana (9131-01)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1987, americnaa, americna, meritm_crt250, americna, meritm_state, 0, ROT0, "Merit", "Americana (9131-00)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1988, meritjp, 0, meritm_crt250, americna, meritm_state, 0, ROT0, "Merit", "Merit Joker Poker (9131-09)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1988, dodgecty, 0, meritm_crt250, dodgecty, meritm_state, 0, ROT0, "Merit", "Dodge City (9131-02)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1988, pitboss2, 0, meritm_crt250, pitboss2, meritm_state, 0, ROT0, "Merit", "Pit Boss II (9221-01C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1988, spitboss, 0, meritm_crt250, spitboss, meritm_state, 0, ROT0, "Merit", "Super Pit Boss (9221-02A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1990, pitbosss, 0, meritm_crt250, pitbosss, meritm_state, 0, ROT0, "Merit", "Pit Boss Superstar (9221-10-00B)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1990, pitbosssa, pitbosss, meritm_crt250, pitbosss, meritm_state, 0, ROT0, "Merit", "Pit Boss Superstar (9221-10-00A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, pitbosssc, pitbosss, meritm_crt250, pitbosss, meritm_state, 0, ROT0, "Merit", "Pit Boss Superstar (9221-12-01)", MACHINE_IMPERFECT_GRAPHICS ) /* CRT-250 + CRT-252 + CRT-256 + CRT-258 */ -GAME( 1994, mtjpoker, 0, meritm_crt250_crt252_crt258, mtjpoker, driver_device, 0, ROT0, "Merit", "Merit Touch Joker Poker (9132-00)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, megat, 0, meritm_crt250_crt252_crt258, pbst30, driver_device, 0, ROT0, "Merit", "Pit Boss Megatouch (9234-20-01)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, pbst30, 0, meritm_crt250_crt252_crt258, pbst30, driver_device, 0, ROT0, "Merit", "Pit Boss Supertouch 30 (9234-10-01)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, pbst30a, pbst30, meritm_crt250_crt252_crt258, pbst30, driver_device, 0, ROT0, "Merit", "Pit Boss Supertouch 30 (9234-00-01)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, mtjpoker, 0, meritm_crt250_crt252_crt258, mtjpoker, meritm_state, 0, ROT0, "Merit", "Merit Touch Joker Poker (9132-00)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, megat, 0, meritm_crt250_crt252_crt258, pbst30, meritm_state, 0, ROT0, "Merit", "Pit Boss Megatouch (9234-20-01)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, pbst30, 0, meritm_crt250_crt252_crt258, pbst30, meritm_state, 0, ROT0, "Merit", "Pit Boss Supertouch 30 (9234-10-01)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, pbst30a, pbst30, meritm_crt250_crt252_crt258, pbst30, meritm_state, 0, ROT0, "Merit", "Pit Boss Supertouch 30 (9234-00-01)", MACHINE_IMPERFECT_GRAPHICS ) /* CRT-250 + CRT-254 + CRT-256 */ -GAME( 1993, pbss330, 0, meritm_crt250_questions, pbss330, driver_device, 0, ROT0, "Merit", "Pit Boss Superstar III 30 (9233-00-01)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, pitbossm, 0, meritm_crt250_questions, pitbossm, driver_device, 0, ROT0, "Merit", "Pit Boss Megastar (9244-00-01)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, pitbossma, pitbossm, meritm_crt250_questions, pitbossa, driver_device, 0, ROT0, "Merit", "Pit Boss Megastar (9243-00-01)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, pbss330, 0, meritm_crt250_questions, pbss330, meritm_state, 0, ROT0, "Merit", "Pit Boss Superstar III 30 (9233-00-01)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, pitbossm, 0, meritm_crt250_questions, pitbossm, meritm_state, 0, ROT0, "Merit", "Pit Boss Megastar (9244-00-01)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, pitbossma, pitbossm, meritm_crt250_questions, pitbossa, meritm_state, 0, ROT0, "Merit", "Pit Boss Megastar (9243-00-01)", MACHINE_IMPERFECT_GRAPHICS ) /* CRT-260 NON-touchscreen based */ -GAME( 1995, realbrod, 0, meritm_crt260, realbrod, driver_device, 0, ROT0, "Merit", "The Real Broadway (9131-20-00 R0A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, realbrod, 0, meritm_crt260, realbrod, meritm_state, 0, ROT0, "Merit", "The Real Broadway (9131-20-00 R0A)", MACHINE_IMPERFECT_GRAPHICS ) /* CRT-260 */ -GAME( 1994, megat2, 0, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROG, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, megat2a , megat2, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, megat2b , megat2, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, megat2mn, megat2, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-02 ROG, Minnesota version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, megat2ca, megat2, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-06 ROG, California version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, megat2caa, megat2, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-06 ROE, California version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat3, 0, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch III (9255-20-01 RON, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, megat3a, megat3, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch III (9255-20-01 ROK, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, megat3b, megat3, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch III (9255-20-01 ROF, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, megat3c, megat3, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch III (9255-20-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, megat3d, megat3, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch III (9255-20-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat3ca, megat3, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch III (9255-20-06 RON, California version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, megat3caa, megat3, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch III (9255-20-06 ROD, California version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, megat3nj, megat3, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch III (9255-20-07 ROG, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat3te, megat3, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch III Tournament Edition (9255-30-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4, 0, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4a, megat4, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4b, megat4, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4c, megat4, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4d, megat4, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 RO, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4s, megat4, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROG, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4sa, megat4, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4sb, megat4, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4smn, megat4, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-02 ROC, Minnesota version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4snj, megat4, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-07 ROG, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4te, megat4, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch IV Tournament Edition (9255-50-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4tea, megat4, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch IV Tournament Edition (9255-50-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4st, megat4, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Super Megatouch IV Tournament Edition (9255-51-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, megat4stg, megat4, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Super Megatouch IV Turnier Version (9255-51-50 ROA, Bi-Lingual GER/ENG version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, megat5, 0, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch 5 (9255-60-01 ROI, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, megat5a, megat5, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch 5 (9255-60-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_NOT_WORKING ) -GAME( 1998, megat5nj, megat5, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch 5 (9255-60-07 RON, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, megat5t, megat5, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch 5 Tournament Edition (9255-70-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, megat5tg, megat5, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch 5 Turnier Version (9255-70-50 ROD, Bi-Lingual GER/ENG version)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, megat6, 0, meritm_crt260, meritm_crt260, driver_device, 0, ROT0, "Merit", "Megatouch 6 (9255-80-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, megat2, 0, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROG, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, megat2a , megat2, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, megat2b , megat2, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, megat2mn, megat2, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-02 ROG, Minnesota version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, megat2ca, megat2, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-06 ROG, California version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, megat2caa, megat2, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Pit Boss Megatouch II (9255-10-06 ROE, California version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat3, 0, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch III (9255-20-01 RON, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, megat3a, megat3, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch III (9255-20-01 ROK, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, megat3b, megat3, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch III (9255-20-01 ROF, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, megat3c, megat3, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch III (9255-20-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, megat3d, megat3, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch III (9255-20-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat3ca, megat3, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch III (9255-20-06 RON, California version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, megat3caa, megat3, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch III (9255-20-06 ROD, California version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, megat3nj, megat3, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch III (9255-20-07 ROG, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat3te, megat3, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch III Tournament Edition (9255-30-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4, 0, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4a, megat4, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4b, megat4, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4c, megat4, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4d, megat4, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch IV (9255-40-01 RO, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4s, megat4, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROG, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4sa, megat4, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROE, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4sb, megat4, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4smn, megat4, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-02 ROC, Minnesota version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4snj, megat4, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Super Megatouch IV (9255-41-07 ROG, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4te, megat4, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch IV Tournament Edition (9255-50-01 ROD, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4tea, megat4, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch IV Tournament Edition (9255-50-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4st, megat4, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Super Megatouch IV Tournament Edition (9255-51-01 ROB, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, megat4stg, megat4, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Super Megatouch IV Turnier Version (9255-51-50 ROA, Bi-Lingual GER/ENG version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, megat5, 0, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch 5 (9255-60-01 ROI, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, megat5a, megat5, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch 5 (9255-60-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_NOT_WORKING ) +GAME( 1998, megat5nj, megat5, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch 5 (9255-60-07 RON, New Jersey version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, megat5t, megat5, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch 5 Tournament Edition (9255-70-01 ROC, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, megat5tg, megat5, meritm_crt260, meritm_crt260, meritm_state, megat3te, ROT0, "Merit", "Megatouch 5 Turnier Version (9255-70-50 ROD, Bi-Lingual GER/ENG version)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, megat6, 0, meritm_crt260, meritm_crt260, meritm_state, 0, ROT0, "Merit", "Megatouch 6 (9255-80-01 ROA, Standard version)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/mermaid.cpp b/src/mame/drivers/mermaid.cpp index f5daf2efc84..08f498f09b2 100644 --- a/src/mame/drivers/mermaid.cpp +++ b/src/mame/drivers/mermaid.cpp @@ -429,7 +429,7 @@ INTERRUPT_GEN_MEMBER(mermaid_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( mermaid, mermaid_state ) +static MACHINE_CONFIG_START( mermaid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) // ??? @@ -444,7 +444,7 @@ static MACHINE_CONFIG_START( mermaid, mermaid_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(mermaid_state, screen_update_mermaid) - MCFG_SCREEN_VBLANK_DRIVER(mermaid_state, screen_eof_mermaid) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mermaid_state, screen_vblank_mermaid)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", mermaid) @@ -473,7 +473,7 @@ static MACHINE_CONFIG_DERIVED( rougien, mermaid ) MCFG_SOUND_ADD("adpcm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(mermaid_state, rougien_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END @@ -582,6 +582,6 @@ ROM_END /* Game Drivers */ -GAME( 1982, mermaid, 0, mermaid, mermaid, driver_device, 0, ROT0, "Sanritsu / Rock-Ola", "Mermaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1982, yachtmn, mermaid, mermaid, yachtmn, driver_device, 0, ROT0, "Sanritsu / Esco", "Yachtsman", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1982, rougien, 0, rougien, rougien, driver_device, 0, ROT0, "Sanritsu", "Rougien", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1982, mermaid, 0, mermaid, mermaid, mermaid_state, 0, ROT0, "Sanritsu / Rock-Ola", "Mermaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1982, yachtmn, mermaid, mermaid, yachtmn, mermaid_state, 0, ROT0, "Sanritsu / Esco", "Yachtsman", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1982, rougien, 0, rougien, rougien, mermaid_state, 0, ROT0, "Sanritsu", "Rougien", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/mes.cpp b/src/mame/drivers/mes.cpp index d21bcae7a7a..fcbff5f8f06 100644 --- a/src/mame/drivers/mes.cpp +++ b/src/mame/drivers/mes.cpp @@ -21,7 +21,7 @@ public: , m_maincpu(*this, "maincpu") , m_p_videoram(*this, "videoram") , m_p_chargen(*this, "chargen") - { } + { } uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -102,7 +102,7 @@ uint32_t mes_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c return 0; } -static MACHINE_CONFIG_START( mes, mes_state ) +static MACHINE_CONFIG_START( mes ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(mes_mem) @@ -136,5 +136,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, mes, 0, 0, mes, mes, driver_device, 0, "Schleicher", "MES", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, mes, 0, 0, mes, mes, mes_state, 0, "Schleicher", "MES", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/metalmx.cpp b/src/mame/drivers/metalmx.cpp index bdb9d70843d..5d4f4b24870 100644 --- a/src/mame/drivers/metalmx.cpp +++ b/src/mame/drivers/metalmx.cpp @@ -685,7 +685,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( metalmx, metalmx_state ) +static MACHINE_CONFIG_START( metalmx ) MCFG_CPU_ADD("maincpu", M68EC020, XTAL_14_31818MHz) MCFG_CPU_PROGRAM_MAP(main_map) diff --git a/src/mame/drivers/metlclsh.cpp b/src/mame/drivers/metlclsh.cpp index eb07074ab7f..90ce18be6fd 100644 --- a/src/mame/drivers/metlclsh.cpp +++ b/src/mame/drivers/metlclsh.cpp @@ -273,7 +273,7 @@ void metlclsh_state::machine_reset() m_gfxbank = 0; } -static MACHINE_CONFIG_START( metlclsh, metlclsh_state ) +static MACHINE_CONFIG_START( metlclsh ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 1500000) // ? @@ -416,4 +416,4 @@ ROM_START( metlclsh ) ROM_LOAD( "82s123.prm", 0x0000, 0x20, CRC(6844cc88) SHA1(89d23367aa6ff541205416e82781fe938dfeeb52) ) ROM_END -GAME( 1985, metlclsh, 0, metlclsh, metlclsh, driver_device, 0, ROT0, "Data East", "Metal Clash (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, metlclsh, 0, metlclsh, metlclsh, metlclsh_state, 0, ROT0, "Data East", "Metal Clash (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/metlfrzr.cpp b/src/mame/drivers/metlfrzr.cpp index 6ae92b9fc92..6d87987e312 100644 --- a/src/mame/drivers/metlfrzr.cpp +++ b/src/mame/drivers/metlfrzr.cpp @@ -356,7 +356,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(metlfrzr_state::scanline) m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0x08); /* RST 08h */ } -static MACHINE_CONFIG_START(metlfrzr, metlfrzr_state) +static MACHINE_CONFIG_START(metlfrzr) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 2) diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp index 1cb17cc7911..73aab2891d9 100644 --- a/src/mame/drivers/metro.cpp +++ b/src/mame/drivers/metro.cpp @@ -235,7 +235,7 @@ INTERRUPT_GEN_MEMBER(metro_state::karatour_interrupt) m_requested_int[m_vblank_bit] = 1; /* write to scroll registers, the duration is a guess */ - timer_set(attotime::from_usec(2500), TIMER_KARATOUR_IRQ); + m_karatour_irq_timer->adjust(attotime::from_usec(2500)); m_requested_int[5] = 1; update_irq_state(); @@ -617,7 +617,7 @@ WRITE16_MEMBER(metro_state::metro_blitter_w) another blit. */ if (b1 == 0) { - timer_set(attotime::from_usec(500), TIMER_METRO_BLIT_DONE); + m_blit_done_timer->adjust(attotime::from_usec(500)); return; } @@ -1703,7 +1703,7 @@ public: DECLARE_WRITE_LINE_MEMBER( ce_w ); DECLARE_WRITE_LINE_MEMBER( clk_w ); - template static devcb_base &set_data_cb(device_t &device, _Object object) { return downcast(device).data_cb.set_callback(object); } + template static devcb_base &set_data_cb(device_t &device, Object &&cb) { return downcast(device).data_cb.set_callback(std::forward(cb)); } protected: virtual void device_start() override; @@ -1717,13 +1717,13 @@ private: uint8_t value; }; -const device_type PUZZLET_IO = device_creator; +DEFINE_DEVICE_TYPE(PUZZLET_IO, puzzlet_io_device, "puzzlet_io", "Puzzlet Coin/Start I/O") puzzlet_io_device::puzzlet_io_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PUZZLET_IO, "Puzzlet Coin/Start I/O", tag, owner, clock, "puzzlet_io", __FILE__), - data_cb(*this), - port(*this, ":IN0") + : device_t(mconfig, PUZZLET_IO, tag, owner, clock) + , data_cb(*this) + , port(*this, ":IN0") { } @@ -3106,50 +3106,130 @@ static INPUT_PORTS_START( puzzlet ) PORT_START("IN1") // IN1 - 7f8880.w PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) // Next - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) // Next PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // Rotate CW - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) // Rotate CW PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // Push - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) // Push PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") // IN2 - port 7 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("DSW0") // IN3 - dsw? - PORT_DIPUNKNOWN( 0x0001, 0x0001 ) - PORT_DIPUNKNOWN( 0x0002, 0x0002 ) - PORT_DIPUNKNOWN( 0x0004, 0x0004 ) + PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPUNKNOWN( 0x0002, 0x0002 ) // possibly Demo_Sounds? Verify when sound works. + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Free_Play ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPUNKNOWN( 0x0008, 0x0008 ) - PORT_DIPUNKNOWN( 0x0010, 0x0010 ) + PORT_DIPNAME( 0x0010, 0x0010, "Nudity" ) + PORT_DIPSETTING( 0x0010, "Topless" ) + PORT_DIPSETTING( 0x0000, "Full" ) PORT_DIPUNKNOWN( 0x0020, 0x0020 ) - PORT_DIPUNKNOWN( 0x0040, 0x0040 ) + PORT_DIPUNKNOWN( 0x0040, 0x0040 ) // both 0x0040 and 0x0080 switch from 14 to 16 pieces to complete the puzzle. What's the difference between them? PORT_DIPUNKNOWN( 0x0080, 0x0080 ) - PORT_DIPUNKNOWN( 0x0100, 0x0100 ) - PORT_DIPUNKNOWN( 0x0200, 0x0200 ) - PORT_DIPUNKNOWN( 0x0400, 0x0400 ) - PORT_DIPUNKNOWN( 0x0800, 0x0800 ) - PORT_DIPUNKNOWN( 0x1000, 0x1000 ) - PORT_DIPUNKNOWN( 0x2000, 0x2000 ) - PORT_DIPUNKNOWN( 0x4000, 0x4000 ) - PORT_DIPUNKNOWN( 0x8000, 0x8000 ) + PORT_DIPNAME( 0xff00, 0xff00, DEF_STR( Coinage ) ) // all other settings redundant + PORT_DIPSETTING( 0xef00, DEF_STR( 9C_1C ) ) + PORT_DIPSETTING( 0xe700, "9 Coins/2 Credits" ) + PORT_DIPSETTING( 0xeb00, "9 Coins/3 Credits" ) + PORT_DIPSETTING( 0xe300, "9 Coins/4 Credits" ) + PORT_DIPSETTING( 0xed00, "9 Coins/5 Credits" ) + PORT_DIPSETTING( 0xe500, "9 Coins/6 Credits" ) + PORT_DIPSETTING( 0xe900, "9 Coins/7 Credits" ) + PORT_DIPSETTING( 0xe100, "9 Coins/8 Credits" ) + PORT_DIPSETTING( 0xee00, "9 Coins/9 Credits" ) + PORT_DIPSETTING( 0x1f00, DEF_STR( 8C_1C ) ) + PORT_DIPSETTING( 0x1700, "8 Coins/2 Credits" ) + PORT_DIPSETTING( 0x1b00, "8 Coins/3 Credits" ) + PORT_DIPSETTING( 0x1300, "8 Coins/4 Credits" ) + PORT_DIPSETTING( 0x1d00, "8 Coins/5 Credits" ) + PORT_DIPSETTING( 0x1500, "8 Coins/6 Credits" ) + PORT_DIPSETTING( 0x1900, "8 Coins/7 Credits" ) + PORT_DIPSETTING( 0x1100, "8 Coins/8 Credits" ) + PORT_DIPSETTING( 0x1e00, "8 Coins/9 Credits" ) + PORT_DIPSETTING( 0x9f00, DEF_STR( 7C_1C ) ) + PORT_DIPSETTING( 0x9700, "7 Coins/2 Credits" ) + PORT_DIPSETTING( 0x9b00, "7 Coins/3 Credits" ) + PORT_DIPSETTING( 0x9300, "7 Coins/4 Credits" ) + PORT_DIPSETTING( 0x9d00, "7 Coins/5 Credits" ) + PORT_DIPSETTING( 0x9500, "7 Coins/6 Credits" ) + PORT_DIPSETTING( 0x9900, "7 Coins/7 Credits" ) + PORT_DIPSETTING( 0x9100, "7 Coins/8 Credits" ) + PORT_DIPSETTING( 0x9e00, "7 Coins/9 Credits" ) + PORT_DIPSETTING( 0x5f00, DEF_STR( 6C_1C ) ) + PORT_DIPSETTING( 0x5700, "6 Coins/2 Credits" ) + PORT_DIPSETTING( 0x5b00, "6 Coins/3 Credits" ) + PORT_DIPSETTING( 0x5300, "6 Coins/4 Credits" ) + PORT_DIPSETTING( 0x5d00, "6 Coins/5 Credits" ) + PORT_DIPSETTING( 0x5500, "6 Coins/6 Credits" ) + PORT_DIPSETTING( 0x5900, "6 Coins/7 Credits" ) + PORT_DIPSETTING( 0x5100, "6 Coins/8 Credits" ) + PORT_DIPSETTING( 0x5e00, "6 Coins/9 Credits" ) + PORT_DIPSETTING( 0xdf00, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0xd700, "5 Coins/2 Credits" ) + PORT_DIPSETTING( 0xdb00, DEF_STR( 5C_3C ) ) + PORT_DIPSETTING( 0xd300, "5 Coins/4 Credits" ) + PORT_DIPSETTING( 0xdd00, "5 Coins/5 Credits" ) + PORT_DIPSETTING( 0xd500, "5 Coins/6 Credits" ) + PORT_DIPSETTING( 0xd900, "5 Coins/7 Credits" ) + PORT_DIPSETTING( 0xd100, "5 Coins/8 Credits" ) + PORT_DIPSETTING( 0xde00, "5 Coins/9 Credits" ) + PORT_DIPSETTING( 0x3f00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x3700, DEF_STR( 4C_2C ) ) + PORT_DIPSETTING( 0x3b00, DEF_STR( 4C_3C ) ) + PORT_DIPSETTING( 0x3300, DEF_STR( 4C_4C ) ) + PORT_DIPSETTING( 0x3d00, DEF_STR( 4C_5C ) ) + PORT_DIPSETTING( 0x3500, "4 Coins/6 Credits" ) + PORT_DIPSETTING( 0x3900, DEF_STR( 4C_7C ) ) + PORT_DIPSETTING( 0x3100, "4 Coins/8 Credits" ) + PORT_DIPSETTING( 0x3e00, "4 Coins/9 Credits" ) + PORT_DIPSETTING( 0xbf00, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0xb700, DEF_STR( 3C_2C ) ) + PORT_DIPSETTING( 0xbb00, DEF_STR( 3C_3C ) ) + PORT_DIPSETTING( 0xb300, DEF_STR( 3C_4C ) ) + PORT_DIPSETTING( 0xbd00, "3 Coins/5 Credits" ) + PORT_DIPSETTING( 0xb500, "3 Coins/6 Credits" ) + PORT_DIPSETTING( 0xb900, "3 Coins/7 Credits" ) + PORT_DIPSETTING( 0xb100, "3 Coins/8 Credits" ) + PORT_DIPSETTING( 0xbe00, "3 Coins/9 Credits" ) + PORT_DIPSETTING( 0x7f00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x7700, DEF_STR( 2C_2C ) ) + PORT_DIPSETTING( 0x7b00, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x7300, DEF_STR( 2C_4C ) ) + PORT_DIPSETTING( 0x7d00, DEF_STR( 2C_5C ) ) + PORT_DIPSETTING( 0x7500, DEF_STR( 2C_6C ) ) + PORT_DIPSETTING( 0x7900, DEF_STR( 2C_7C ) ) + PORT_DIPSETTING( 0x7100, DEF_STR( 2C_8C ) ) + PORT_DIPSETTING( 0x7e00, "2 Coins/9 Credits" ) + PORT_DIPSETTING( 0xff00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0xf700, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0xfb00, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0xf300, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0xfd00, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0xf500, DEF_STR( 1C_6C ) ) + PORT_DIPSETTING( 0xf900, DEF_STR( 1C_7C ) ) + PORT_DIPSETTING( 0xf100, DEF_STR( 1C_8C ) ) + PORT_DIPSETTING( 0xfe00, DEF_STR( 1C_9C ) ) INPUT_PORTS_END @@ -3583,7 +3663,7 @@ void metro_state::machine_start() -static MACHINE_CONFIG_START( msgogo, metro_state ) +static MACHINE_CONFIG_START( msgogo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -3664,7 +3744,7 @@ static MACHINE_CONFIG_FRAGMENT( daitorid_upd7810_sound ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( daitorid, metro_state ) +static MACHINE_CONFIG_START( daitorid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) @@ -3697,12 +3777,12 @@ static MACHINE_CONFIG_START( daitorid, metro_state ) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", UPD7810_INTF2)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", 1200000, OKIM6295_PIN7_HIGH) // sample rate = M6295 clock / 132 + MCFG_OKIM6295_ADD("oki", 1200000, PIN7_HIGH) // sample rate = M6295 clock / 132 MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dharma, metro_state ) +static MACHINE_CONFIG_START( dharma ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -3731,7 +3811,7 @@ static MACHINE_CONFIG_START( dharma, metro_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, OKIM6295_PIN7_HIGH) // sample rate = M6295 clock / 132 + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, PIN7_HIGH) // sample rate = M6295 clock / 132 MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -3739,7 +3819,7 @@ static MACHINE_CONFIG_START( dharma, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( karatour, metro_state ) +static MACHINE_CONFIG_START( karatour ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -3768,7 +3848,7 @@ static MACHINE_CONFIG_START( karatour, metro_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, OKIM6295_PIN7_HIGH) // was /128.. so pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, PIN7_HIGH) // was /128.. so pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -3776,7 +3856,7 @@ static MACHINE_CONFIG_START( karatour, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( 3kokushi, metro_state ) +static MACHINE_CONFIG_START( 3kokushi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -3805,7 +3885,7 @@ static MACHINE_CONFIG_START( 3kokushi, metro_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, OKIM6295_PIN7_HIGH) // was /128.. so pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, PIN7_HIGH) // was /128.. so pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -3813,7 +3893,7 @@ static MACHINE_CONFIG_START( 3kokushi, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lastfort, metro_state ) +static MACHINE_CONFIG_START( lastfort ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -3842,14 +3922,14 @@ static MACHINE_CONFIG_START( lastfort, metro_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, OKIM6295_PIN7_LOW) // sample rate = M6295 clock / 165 + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, PIN7_LOW) // sample rate = M6295 clock / 165 MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lastforg, metro_state ) +static MACHINE_CONFIG_START( lastforg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -3878,14 +3958,14 @@ static MACHINE_CONFIG_START( lastforg, metro_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, OKIM6295_PIN7_HIGH) // was /128.. so pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, PIN7_HIGH) // was /128.. so pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dokyusei, metro_state ) +static MACHINE_CONFIG_START( dokyusei ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -3910,14 +3990,14 @@ static MACHINE_CONFIG_START( dokyusei, metro_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dokyusp, metro_state ) +static MACHINE_CONFIG_START( dokyusp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) @@ -3946,7 +4026,7 @@ static MACHINE_CONFIG_START( dokyusp, metro_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -3954,7 +4034,7 @@ static MACHINE_CONFIG_START( dokyusp, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gakusai, metro_state ) +static MACHINE_CONFIG_START( gakusai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 26.6660MHz/2?, OSCs listed are 26.6660MHz & 3.579545MHz */ @@ -3983,7 +4063,7 @@ static MACHINE_CONFIG_START( gakusai, metro_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -3991,7 +4071,7 @@ static MACHINE_CONFIG_START( gakusai, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gakusai2, metro_state ) +static MACHINE_CONFIG_START( gakusai2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 26.6660MHz/2?, OSCs listed are 26.6660MHz & 3.579545MHz */ @@ -4020,7 +4100,7 @@ static MACHINE_CONFIG_START( gakusai2, metro_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -4028,7 +4108,7 @@ static MACHINE_CONFIG_START( gakusai2, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pangpoms, metro_state ) +static MACHINE_CONFIG_START( pangpoms ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -4057,7 +4137,7 @@ static MACHINE_CONFIG_START( pangpoms, metro_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, OKIM6295_PIN7_HIGH) // was /128.. so pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, PIN7_HIGH) // was /128.. so pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -4065,7 +4145,7 @@ static MACHINE_CONFIG_START( pangpoms, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( poitto, metro_state ) +static MACHINE_CONFIG_START( poitto ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -4094,7 +4174,7 @@ static MACHINE_CONFIG_START( poitto, metro_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, OKIM6295_PIN7_HIGH) // was /128.. so pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, PIN7_HIGH) // was /128.. so pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -4102,7 +4182,7 @@ static MACHINE_CONFIG_START( poitto, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pururun, metro_state ) +static MACHINE_CONFIG_START( pururun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* Not confirmed */ @@ -4135,12 +4215,12 @@ static MACHINE_CONFIG_START( pururun, metro_state ) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", UPD7810_INTF2)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_3_579545MHz/3, OKIM6295_PIN7_HIGH) // sample rate = M6295 clock / 132 + MCFG_OKIM6295_ADD("oki", XTAL_3_579545MHz/3, PIN7_HIGH) // sample rate = M6295 clock / 132 MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( skyalert, metro_state ) +static MACHINE_CONFIG_START( skyalert ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -4169,7 +4249,7 @@ static MACHINE_CONFIG_START( skyalert, metro_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, OKIM6295_PIN7_LOW) // sample rate = M6295 clock / 165 + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, PIN7_LOW) // sample rate = M6295 clock / 165 MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -4177,7 +4257,7 @@ static MACHINE_CONFIG_START( skyalert, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( toride2g, metro_state ) +static MACHINE_CONFIG_START( toride2g ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -4206,7 +4286,7 @@ static MACHINE_CONFIG_START( toride2g, metro_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/20, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) @@ -4214,7 +4294,7 @@ static MACHINE_CONFIG_START( toride2g, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mouja, metro_state ) +static MACHINE_CONFIG_START( mouja ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -4240,7 +4320,7 @@ static MACHINE_CONFIG_START( mouja, metro_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/1024*132, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/1024*132, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, mouja_okimap) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) @@ -4249,7 +4329,7 @@ static MACHINE_CONFIG_START( mouja, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vmetal, metro_state ) +static MACHINE_CONFIG_START( vmetal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -4274,7 +4354,7 @@ static MACHINE_CONFIG_START( vmetal, metro_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_1MHz, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_ES8712_ADD("essnd", 12000) @@ -4285,7 +4365,7 @@ static MACHINE_CONFIG_START( vmetal, metro_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( blzntrnd, metro_state ) +static MACHINE_CONFIG_START( blzntrnd ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -4335,7 +4415,7 @@ static MACHINE_CONFIG_DERIVED( gstrik2, blzntrnd ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( puzzlet, metro_state ) +static MACHINE_CONFIG_START( puzzlet ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83007, XTAL_20MHz) // H8/3007 - Hitachi HD6413007F20 CPU. Clock 20MHz @@ -4367,7 +4447,7 @@ static MACHINE_CONFIG_START( puzzlet, metro_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_20MHz/5, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", XTAL_20MHz/5, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_20MHz/5) @@ -6134,6 +6214,8 @@ void metro_state::metro_common( ) m_irq_line = 2; *m_irq_enable = 0; + + m_blit_done_timer = timer_alloc(TIMER_METRO_BLIT_DONE); } @@ -6161,6 +6243,8 @@ DRIVER_INIT_MEMBER(metro_state,karatour) m_vram_2[i] = machine().rand(); } + m_karatour_irq_timer = timer_alloc(TIMER_KARATOUR_IRQ); + DRIVER_INIT_CALL(metro); } @@ -6217,6 +6301,8 @@ DRIVER_INIT_MEMBER(metro_state,blzntrnd) { metro_common(); m_irq_line = 1; + + m_karatour_irq_timer = timer_alloc(TIMER_KARATOUR_IRQ); } DRIVER_INIT_MEMBER(metro_state,vmetal) @@ -6252,6 +6338,12 @@ DRIVER_INIT_MEMBER(metro_state,puzzlet) m_blitter_bit = 3; } +DRIVER_INIT_MEMBER(metro_state,lastfortg) +{ + DRIVER_INIT_CALL(metro); + m_karatour_irq_timer = timer_alloc(TIMER_KARATOUR_IRQ); +} + /*************************************************************************** @@ -6276,7 +6368,7 @@ GAME( 1994, lastfort, 0, lastfort, lastfort, metro_state, metro, ROT0 GAME( 1994, lastforte, lastfort, lastfort, lastfero, metro_state, metro, ROT0, "Metro", "Last Fortress - Toride (Erotic, Rev C)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, lastfortea,lastfort, lastfort, lastfero, metro_state, metro, ROT0, "Metro", "Last Fortress - Toride (Erotic, Rev A)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, lastfortk, lastfort, lastfort, lastfero, metro_state, metro, ROT0, "Metro", "Last Fortress - Toride (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, lastfortg, lastfort, lastforg, ladykill, metro_state, metro, ROT0, "Metro", "Last Fortress - Toride (German)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, lastfortg, lastfort, lastforg, ladykill, metro_state, lastfortg,ROT0, "Metro", "Last Fortress - Toride (German)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, toride2g, 0, toride2g, toride2g, metro_state, metro, ROT0, "Metro", "Toride II Adauchi Gaiden", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1994, toride2gg, toride2g, toride2g, toride2g, metro_state, metro, ROT0, "Metro", "Toride II Adauchi Gaiden (German)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1994, toride2gk, toride2g, toride2g, toride2g, metro_state, metro, ROT0, "Metro", "Toride II Bok Su Oi Jeon Adauchi Gaiden (Korea)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mexico86.cpp b/src/mame/drivers/mexico86.cpp index 1c63c75317b..2079685a432 100644 --- a/src/mame/drivers/mexico86.cpp +++ b/src/mame/drivers/mexico86.cpp @@ -423,7 +423,7 @@ void mexico86_state::machine_reset() m_charbank = 0; } -static MACHINE_CONFIG_START( mexico86, mexico86_state ) +static MACHINE_CONFIG_START( mexico86 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, 24000000/4) /* 6 MHz, Uses clock divided 24MHz OSC */ @@ -699,9 +699,9 @@ ROM_END * *************************************/ -GAME( 1986, kikikai, 0, kikikai, kikikai, driver_device, 0, ROT90, "Taito Corporation", "KiKi KaiKai", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, knightb, kikikai, knightb, kikikai, driver_device, 0, ROT90, "bootleg", "Knight Boy", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, kicknrun, 0, mexico86, mexico86, driver_device, 0, ROT0, "Taito Corporation", "Kick and Run (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, kicknrunu,kicknrun, mexico86, mexico86, driver_device, 0, ROT0, "Taito America Corp", "Kick and Run (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, mexico86, kicknrun, mexico86, mexico86, driver_device, 0, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, mexico86a,kicknrun, mexico86, mexico86, driver_device, 0, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, kikikai, 0, kikikai, kikikai, mexico86_state, 0, ROT90, "Taito Corporation", "KiKi KaiKai", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, knightb, kikikai, knightb, kikikai, mexico86_state, 0, ROT90, "bootleg", "Knight Boy", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, kicknrun, 0, mexico86, mexico86, mexico86_state, 0, ROT0, "Taito Corporation", "Kick and Run (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, kicknrunu,kicknrun, mexico86, mexico86, mexico86_state, 0, ROT0, "Taito America Corp", "Kick and Run (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, mexico86, kicknrun, mexico86, mexico86, mexico86_state, 0, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, mexico86a,kicknrun, mexico86, mexico86, mexico86_state, 0, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/meyc8080.cpp b/src/mame/drivers/meyc8080.cpp index e7b54bd7cd7..cd76389a247 100644 --- a/src/mame/drivers/meyc8080.cpp +++ b/src/mame/drivers/meyc8080.cpp @@ -579,7 +579,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( meyc8080, meyc8080_state ) +static MACHINE_CONFIG_START( meyc8080 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_20MHz / 10) // divider guessed @@ -732,8 +732,8 @@ ROM_END * *************************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL(1982, wldarrow, 0, meyc8080, wldarrow, driver_device, 0, ROT0, "Meyco Games, Inc.", "Wild Arrow (color, Standard V4.8)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_wldarrow ) // B&W version not dumped yet -GAMEL(1984, mdrawpkr, 0, meyc8080, mdrawpkr, driver_device, 0, ROT0, "Meyco Games, Inc.", "Draw Poker - Joker's Wild (Standard)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_mdrawpkr ) // year not shown, but it is in mdrawpkra -GAMEL(1984, mdrawpkra, mdrawpkr, meyc8080, mdrawpkra, driver_device, 0, ROT0, "Meyco Games, Inc.", "Draw Poker - Joker's Wild (02-11)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_mdrawpkr ) -GAMEL(1983, casbjack, 0, meyc8080, casbjack, driver_device, 0, ROT0, "Meyco Games, Inc.", "Casino Black Jack (color, Standard 00-05)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_meybjack ) // B&W version not dumped yet +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL(1982, wldarrow, 0, meyc8080, wldarrow, meyc8080_state, 0, ROT0, "Meyco Games, Inc.", "Wild Arrow (color, Standard V4.8)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_wldarrow ) // B&W version not dumped yet +GAMEL(1984, mdrawpkr, 0, meyc8080, mdrawpkr, meyc8080_state, 0, ROT0, "Meyco Games, Inc.", "Draw Poker - Joker's Wild (Standard)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_mdrawpkr ) // year not shown, but it is in mdrawpkra +GAMEL(1984, mdrawpkra, mdrawpkr, meyc8080, mdrawpkra, meyc8080_state, 0, ROT0, "Meyco Games, Inc.", "Draw Poker - Joker's Wild (02-11)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_mdrawpkr ) +GAMEL(1983, casbjack, 0, meyc8080, casbjack, meyc8080_state, 0, ROT0, "Meyco Games, Inc.", "Casino Black Jack (color, Standard 00-05)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_meybjack ) // B&W version not dumped yet diff --git a/src/mame/drivers/meyc8088.cpp b/src/mame/drivers/meyc8088.cpp index bbacd7ba5ed..b9c04a86964 100644 --- a/src/mame/drivers/meyc8088.cpp +++ b/src/mame/drivers/meyc8088.cpp @@ -71,7 +71,7 @@ public: DECLARE_PALETTE_INIT(meyc8088); uint32_t screen_update_meyc8088(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_meyc8088(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_meyc8088); TIMER_DEVICE_CALLBACK_MEMBER(heartbeat_callback); }; @@ -160,7 +160,7 @@ uint32_t meyc8088_state::screen_update_meyc8088(screen_device &screen, bitmap_in return 0; } -void meyc8088_state::screen_eof_meyc8088(screen_device &screen, bool state) +WRITE_LINE_MEMBER(meyc8088_state::screen_vblank_meyc8088) { // INTR on LC255 (pulses at start and end of vblank), INTA hardwired to $20 generic_pulse_irq_line_and_vector(*m_maincpu, 0, 0x20, 1); @@ -345,7 +345,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( meyc8088, meyc8088_state ) +static MACHINE_CONFIG_START( meyc8088 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, (XTAL_15MHz / 3) * 0.95) // NOTE: underclocked to prevent errors on diagnostics, MAME i8088 cycle timing is probably inaccurate @@ -373,7 +373,7 @@ static MACHINE_CONFIG_START( meyc8088, meyc8088_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_15MHz/3, 320, 0, 256, 261, 0, 224) MCFG_SCREEN_UPDATE_DRIVER(meyc8088_state, screen_update_meyc8088) - MCFG_SCREEN_VBLANK_DRIVER(meyc8088_state, screen_eof_meyc8088) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(meyc8088_state, screen_vblank_meyc8088)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 32) @@ -399,4 +399,4 @@ ROM_START( gldarrow ) ROM_END -GAMEL(1984, gldarrow, 0, meyc8088, gldarrow, driver_device, 0, ROT0, "Meyco Games, Inc.", "Golden Arrow (Standard G8-03)", 0, layout_gldarrow ) +GAMEL(1984, gldarrow, 0, meyc8088, gldarrow, meyc8088_state, 0, ROT0, "Meyco Games, Inc.", "Golden Arrow (Standard G8-03)", 0, layout_gldarrow ) diff --git a/src/mame/drivers/mgames.cpp b/src/mame/drivers/mgames.cpp index 64953836fdd..7137711733f 100644 --- a/src/mame/drivers/mgames.cpp +++ b/src/mame/drivers/mgames.cpp @@ -632,7 +632,7 @@ static GFXDECODE_START( mgames ) GFXDECODE_END -static MACHINE_CONFIG_START( mgames, mgames_state ) +static MACHINE_CONFIG_START( mgames ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MASTER_CLOCK/6) /* 3 MHz? */ MCFG_CPU_PROGRAM_MAP(main_map) @@ -680,5 +680,5 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... LAYOUT */ -GAMEL( 1981, mgames, 0, mgames, mgames, driver_device, 0, ROT0, "Merit", "Match Games", MACHINE_WRONG_COLORS | MACHINE_NO_SOUND, layout_mgames ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... LAYOUT */ +GAMEL( 1981, mgames, 0, mgames, mgames, mgames_state, 0, ROT0, "Merit", "Match Games", MACHINE_WRONG_COLORS | MACHINE_NO_SOUND, layout_mgames ) diff --git a/src/mame/drivers/mgavegas.cpp b/src/mame/drivers/mgavegas.cpp index 6b48e387cfa..654620edce3 100644 --- a/src/mame/drivers/mgavegas.cpp +++ b/src/mame/drivers/mgavegas.cpp @@ -59,9 +59,9 @@ public: m_ticket(*this, "hopper"), m_filter1(*this, "filter1"), m_filter2(*this, "filter2") + { } - { } uint8_t m_int; //OUT1 @@ -546,8 +546,8 @@ void mgavegas_state::machine_reset() m_mc=0; m_mr=0; - m_filter1->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 0, 0, CAP_N(1) ); /* RC out of MSM5205 R=1K C=1nF */ - m_filter2->filter_rc_set_RC(FLT_RC_HIGHPASS, 3846, 0, 0, CAP_N(100 )); /*ALP3B active-hybrid filter fc=2.6Khz 2poles???*/ + m_filter1->filter_rc_set_RC(filter_rc_device::LOWPASS, 1000, 0, 0, CAP_N(1) ); /* RC out of MSM5205 R=1K C=1nF */ + m_filter2->filter_rc_set_RC(filter_rc_device::HIGHPASS, 3846, 0, 0, CAP_N(100 )); /*ALP3B active-hybrid filter fc=2.6Khz 2poles???*/ } @@ -587,7 +587,7 @@ DRIVER_INIT_MEMBER(mgavegas_state,mgavegas133) *************************/ -static MACHINE_CONFIG_START( mgavegas, mgavegas_state ) +static MACHINE_CONFIG_START( mgavegas ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLK) MCFG_CPU_PROGRAM_MAP(mgavegas_map) @@ -607,7 +607,7 @@ static MACHINE_CONFIG_START( mgavegas, mgavegas_state ) MCFG_AY8910_PORT_B_READ_CB(READ8(mgavegas_state, ay8910_b_r)) MCFG_SOUND_ADD("5205", MSM5205, MSM_CLK) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S64_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter1", 2.0) @@ -656,7 +656,7 @@ ROM_END /************************* * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS*/ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 1985, mgavegas, 0, mgavegas, mgavegas, mgavegas_state, mgavegas, ROT0, "MGA", "Vegas 1 (Ver 2.3 dual coin pulse, shorter)", MACHINE_MECHANICAL ) -GAME( 1985, mgavegas21, mgavegas, mgavegas, mgavegas, mgavegas_state, mgavegas21, ROT0, "MGA", "Vegas 1 (Ver 2.1 dual coin pulse, longer)", MACHINE_MECHANICAL ) -GAME( 1985, mgavegas133, mgavegas, mgavegas, mgavegas, mgavegas_state, mgavegas133,ROT0, "MGA", "Vegas 1 (Ver 1.33 single coin pulse)", MACHINE_MECHANICAL ) +GAME( 1985, mgavegas21, mgavegas, mgavegas, mgavegas, mgavegas_state, mgavegas21, ROT0, "MGA", "Vegas 1 (Ver 2.1 dual coin pulse, longer)", MACHINE_MECHANICAL ) +GAME( 1985, mgavegas133, mgavegas, mgavegas, mgavegas, mgavegas_state, mgavegas133,ROT0, "MGA", "Vegas 1 (Ver 1.33 single coin pulse)", MACHINE_MECHANICAL ) diff --git a/src/mame/drivers/mgolf.cpp b/src/mame/drivers/mgolf.cpp index 3a46e4c6c41..7b93183085f 100644 --- a/src/mame/drivers/mgolf.cpp +++ b/src/mame/drivers/mgolf.cpp @@ -362,7 +362,7 @@ void mgolf_state::machine_reset() } -static MACHINE_CONFIG_START( mgolf, mgolf_state ) +static MACHINE_CONFIG_START( mgolf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 12096000 / 16) /* ? */ @@ -409,4 +409,4 @@ ROM_START( mgolf ) ROM_END -GAME( 1978, mgolf, 0, mgolf, mgolf, driver_device, 0, ROT270, "Atari", "Atari Mini Golf (prototype)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1978, mgolf, 0, mgolf, mgolf, mgolf_state, 0, ROT270, "Atari", "Atari Mini Golf (prototype)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mhavoc.cpp b/src/mame/drivers/mhavoc.cpp index a8dcde55d5b..122bef9afa8 100644 --- a/src/mame/drivers/mhavoc.cpp +++ b/src/mame/drivers/mhavoc.cpp @@ -526,7 +526,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( mhavoc, mhavoc_state ) +static MACHINE_CONFIG_START( mhavoc ) /* basic machine hardware */ MCFG_CPU_ADD("alpha", M6502, MHAVOC_CLOCK_2_5M) /* 2.5 MHz */ @@ -805,9 +805,9 @@ ROM_END * *************************************/ -GAME( 1983, mhavoc, 0, mhavoc, mhavoc, driver_device, 0, ROT0, "Atari", "Major Havoc (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, mhavoc2, mhavoc, mhavoc, mhavoc, driver_device, 0, ROT0, "Atari", "Major Havoc (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mhavoc, 0, mhavoc, mhavoc, mhavoc_state, 0, ROT0, "Atari", "Major Havoc (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mhavoc2, mhavoc, mhavoc, mhavoc, mhavoc_state, 0, ROT0, "Atari", "Major Havoc (rev 2)", MACHINE_SUPPORTS_SAVE ) GAME( 2006, mhavocrv, mhavoc, mhavocrv, mhavocrv, mhavoc_state, mhavocrv, ROT0, "Atari / JMA (hack/homebrew)", "Major Havoc (Return to Vax)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, mhavocp, mhavoc, mhavoc, mhavocp, driver_device, 0, ROT0, "Atari", "Major Havoc (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, alphaone, mhavoc, alphaone, alphaone, driver_device, 0, ROT0, "Atari", "Alpha One (prototype, 3 lives)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, alphaonea,mhavoc, alphaone, alphaone, driver_device, 0, ROT0, "Atari", "Alpha One (prototype, 5 lives)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mhavocp, mhavoc, mhavoc, mhavocp, mhavoc_state, 0, ROT0, "Atari", "Major Havoc (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, alphaone, mhavoc, alphaone, alphaone, mhavoc_state, 0, ROT0, "Atari", "Alpha One (prototype, 3 lives)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, alphaonea,mhavoc, alphaone, alphaone, mhavoc_state, 0, ROT0, "Atari", "Alpha One (prototype, 5 lives)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mice.cpp b/src/mame/drivers/mice.cpp index f3a868c04b6..61661a6965a 100644 --- a/src/mame/drivers/mice.cpp +++ b/src/mame/drivers/mice.cpp @@ -32,11 +32,14 @@ public: { } - required_device m_maincpu; - required_device m_terminal; DECLARE_READ8_MEMBER(port50_r); DECLARE_READ8_MEMBER(port51_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); + +protected: + required_device m_maincpu; + required_device m_terminal; + uint8_t m_term_data; virtual void machine_reset() override; }; @@ -76,12 +79,12 @@ void mice_state::machine_reset() { } -WRITE8_MEMBER( mice_state::kbd_put ) +void mice_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( mice, mice_state ) +static MACHINE_CONFIG_START( mice ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_6_144MHz) MCFG_CPU_PROGRAM_MAP(mice_mem) @@ -89,7 +92,7 @@ static MACHINE_CONFIG_START( mice, mice_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mice_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(mice_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -117,5 +120,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, mice, 0, 0, mice, mice, driver_device, 0, "Microtek International Inc", "Mice", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1980, mice, 0, 0, mice, mice, mice_state, 0, "Microtek International Inc", "Mice", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/micral.cpp b/src/mame/drivers/micral.cpp index 3130e5d0c71..c681b8b7bd4 100644 --- a/src/mame/drivers/micral.cpp +++ b/src/mame/drivers/micral.cpp @@ -247,7 +247,7 @@ MACHINE_RESET_MEMBER( micral_state, micral ) m_maincpu->set_state_int(Z80_PC, 0xf800); } -static MACHINE_CONFIG_START( micral, micral_state ) +static MACHINE_CONFIG_START( micral ) // basic machine hardware MCFG_CPU_ADD( "maincpu", Z80, XTAL_4MHz ) MCFG_CPU_PROGRAM_MAP(micral_mem) @@ -289,5 +289,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, micral, 0, 0, micral, micral, micral_state, micral, "Bull R2E", "Micral 80-22G", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, micral, 0, 0, micral, micral, micral_state, micral, "Bull R2E", "Micral 80-22G", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/micro20.cpp b/src/mame/drivers/micro20.cpp index 8f4f9b7f7f5..91372e586ca 100644 --- a/src/mame/drivers/micro20.cpp +++ b/src/mame/drivers/micro20.cpp @@ -141,16 +141,16 @@ static ADDRESS_MAP_START(micro20_map, AS_PROGRAM, 32, micro20_state ) AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram") AM_RANGE(0x00200000, 0x002fffff) AM_READ(buserror_r) AM_RANGE(0x00800000, 0x0083ffff) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_t, status_r, cmd_w, 0xff000000) - AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_t, track_r, track_w, 0x00ff0000) - AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_t, sector_r, sector_w, 0x0000ff00) - AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_t, data_r, data_w, 0x000000ff) + AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, status_r, cmd_w, 0xff000000) + AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, track_r, track_w, 0x00ff0000) + AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, sector_r, sector_w, 0x0000ff00) + AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, data_r, data_w, 0x000000ff) AM_RANGE(0xffff8080, 0xffff808f) AM_DEVREADWRITE8(DUART_A_TAG, mc68681_device, read, write, 0xffffffff) AM_RANGE(0xffff80a0, 0xffff80af) AM_DEVREADWRITE8(DUART_B_TAG, mc68681_device, read, write, 0xffffffff) AM_RANGE(0xffff80c0, 0xffff80df) AM_DEVREADWRITE8(PIT_TAG, pit68230_device, read, write, 0xffffffff) ADDRESS_MAP_END -static MACHINE_CONFIG_START( micro20, micro20_state ) +static MACHINE_CONFIG_START( micro20 ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, M68020, XTAL_16_67MHz) MCFG_CPU_PROGRAM_MAP(micro20_map) @@ -200,6 +200,4 @@ ROM_START( micro20 ) ROM_LOAD32_BYTE( "d24-31_u13_d115.bin", 0x000000, 0x010000, CRC(3646d943) SHA1(97ee54063e2fe49fef2ff68d0f2e39345a75eac5) ) ROM_END -COMP( 1984, micro20, 0, 0, micro20, micro20, driver_device, 0, "GMX", "Micro 20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) - - +COMP( 1984, micro20, 0, 0, micro20, micro20, micro20_state, 0, "GMX", "Micro 20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/micro3d.cpp b/src/mame/drivers/micro3d.cpp index 150b22b84f2..b2dc7d7ba21 100644 --- a/src/mame/drivers/micro3d.cpp +++ b/src/mame/drivers/micro3d.cpp @@ -25,6 +25,7 @@ #include "emu.h" #include "includes/micro3d.h" +#include "audio/micro3d.h" #include "cpu/am29000/am29000.h" #include "cpu/m68000/m68000.h" @@ -292,7 +293,7 @@ ADDRESS_MAP_END * *************************************/ -static MACHINE_CONFIG_START( micro3d, micro3d_state ) +static MACHINE_CONFIG_START( micro3d ) MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz / 2) MCFG_CPU_PROGRAM_MAP(hostmem) @@ -644,8 +645,8 @@ ROM_END * *************************************/ -GAME( 1991, f15se, 0, micro3d, f15se, micro3d_state, micro3d, ROT0, "Microprose Games Inc.", "F-15 Strike Eagle (rev. 2.2 02/25/91)", MACHINE_IMPERFECT_SOUND ) -GAME( 1991, f15se21, f15se, micro3d, f15se, micro3d_state, micro3d, ROT0, "Microprose Games Inc.", "F-15 Strike Eagle (rev. 2.1 02/04/91)", MACHINE_IMPERFECT_SOUND ) -GAME( 1992, botss, 0, micro3d, botss, micro3d_state, botss, ROT0, "Microprose Games Inc.", "Battle of the Solar System (rev. 1.1a 7/23/92)", MACHINE_IMPERFECT_SOUND ) -GAME( 1992, botss11, botss, micro3d, botss11, micro3d_state, micro3d, ROT0, "Microprose Games Inc.", "Battle of the Solar System (rev. 1.1 3/24/92)", MACHINE_IMPERFECT_SOUND ) -GAME( 1992, tankbatl, 0, micro3d, tankbatl, micro3d_state, micro3d, ROT0, "Microprose Games Inc.", "Tank Battle (prototype rev. 4/21/92)", MACHINE_IMPERFECT_SOUND ) +GAME( 1991, f15se, 0, micro3d, f15se, micro3d_state, micro3d, ROT0, "Microprose Games Inc.", "F-15 Strike Eagle (rev. 2.2 02/25/91)", MACHINE_IMPERFECT_SOUND ) +GAME( 1991, f15se21, f15se, micro3d, f15se, micro3d_state, micro3d, ROT0, "Microprose Games Inc.", "F-15 Strike Eagle (rev. 2.1 02/04/91)", MACHINE_IMPERFECT_SOUND ) +GAME( 1992, botss, 0, micro3d, botss, micro3d_state, botss, ROT0, "Microprose Games Inc.", "Battle of the Solar System (rev. 1.1a 7/23/92)", MACHINE_IMPERFECT_SOUND ) +GAME( 1992, botss11, botss, micro3d, botss11, micro3d_state, micro3d, ROT0, "Microprose Games Inc.", "Battle of the Solar System (rev. 1.1 3/24/92)", MACHINE_IMPERFECT_SOUND ) +GAME( 1992, tankbatl, 0, micro3d, tankbatl, micro3d_state, micro3d, ROT0, "Microprose Games Inc.", "Tank Battle (prototype rev. 4/21/92)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/microdec.cpp b/src/mame/drivers/microdec.cpp index b8a42c53e4f..d9c301d9ffd 100644 --- a/src/mame/drivers/microdec.cpp +++ b/src/mame/drivers/microdec.cpp @@ -48,7 +48,7 @@ public: DECLARE_READ8_MEMBER(status_r); DECLARE_READ8_MEMBER(keyin_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(portf5_r); DECLARE_READ8_MEMBER(portf6_r); DECLARE_WRITE8_MEMBER(portf6_w); @@ -183,7 +183,7 @@ void microdec_state::machine_reset() m_term_data = 0; } -WRITE8_MEMBER( microdec_state::kbd_put ) +void microdec_state::kbd_put(u8 data) { m_term_data = data; } @@ -201,7 +201,7 @@ DRIVER_INIT_MEMBER( microdec_state, microdec ) membank("bankw0")->configure_entry(0, &main[0x1000]); } -static MACHINE_CONFIG_START( microdec, microdec_state ) +static MACHINE_CONFIG_START( microdec ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(microdec_mem) @@ -209,7 +209,7 @@ static MACHINE_CONFIG_START( microdec, microdec_state ) /* video hardware */ MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(microdec_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(microdec_state, kbd_put)) MCFG_UPD765A_ADD("fdc", true, true) MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) @@ -249,6 +249,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1982, md2, 0, 0, microdec, microdec, microdec_state, microdec, "Morrow Designs", "Micro Decision MD-2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) COMP( 1982, md3, md2, 0, microdec, microdec, microdec_state, microdec, "Morrow Designs", "Micro Decision MD-3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/microkit.cpp b/src/mame/drivers/microkit.cpp index 765c95e04db..a0fbb10e271 100644 --- a/src/mame/drivers/microkit.cpp +++ b/src/mame/drivers/microkit.cpp @@ -78,7 +78,7 @@ INPUT_PORTS_END READ_LINE_MEMBER( microkit_state::clear_r ) { if (m_resetcnt < 0x10) - m_maincpu->set_state_int(COSMAC_R0, 0x8001); // skip IDL + m_maincpu->set_state_int(cosmac_device::COSMAC_R0, 0x8001); // skip IDL if (m_resetcnt < 0x20) m_resetcnt++; // set reset pin to normal @@ -113,7 +113,7 @@ static DEVICE_INPUT_DEFAULTS_START( serial_keyb ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( microkit, microkit_state ) +static MACHINE_CONFIG_START( microkit ) // basic machine hardware MCFG_CPU_ADD("maincpu", CDP1802, 1750000) MCFG_CPU_PROGRAM_MAP(microkit_mem) @@ -134,4 +134,4 @@ ROM_START( microkit ) ROM_LOAD( "4.2a", 0x100, 0x100, CRC(27267bad) SHA1(838df9be2dc175584a1a6ee1770039118e49482e) ) ROM_END -COMP( 1975, microkit, 0, 0, microkit, microkit, driver_device, 0, "RCA", "COSMAC Microkit", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1975, microkit, 0, 0, microkit, microkit, microkit_state, 0, "RCA", "COSMAC Microkit", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/micronic.cpp b/src/mame/drivers/micronic.cpp index 708f2783d35..761c69429a2 100644 --- a/src/mame/drivers/micronic.cpp +++ b/src/mame/drivers/micronic.cpp @@ -348,7 +348,7 @@ WRITE_LINE_MEMBER( micronic_state::mc146818_irq ) } -static MACHINE_CONFIG_START( micronic, micronic_state ) +static MACHINE_CONFIG_START( micronic ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_3_579545MHz) MCFG_CPU_PROGRAM_MAP(micronic_mem) @@ -397,5 +397,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, micronic, 0, 0, micronic, micronic, driver_device, 0, "Victor Micronic", "Micronic 1000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, micronic, 0, 0, micronic, micronic, micronic_state, 0, "Victor Micronic", "Micronic 1000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/micropin.cpp b/src/mame/drivers/micropin.cpp index d84eff02b73..2126c9d8784 100644 --- a/src/mame/drivers/micropin.cpp +++ b/src/mame/drivers/micropin.cpp @@ -283,7 +283,7 @@ DRIVER_INIT_MEMBER( micropin_state, micropin ) { } -static MACHINE_CONFIG_START( micropin, micropin_state ) +static MACHINE_CONFIG_START( micropin ) /* basic machine hardware */ MCFG_CPU_ADD("v1cpu", M6800, XTAL_2MHz / 2) MCFG_CPU_PROGRAM_MAP(micropin_map) @@ -320,7 +320,7 @@ static MACHINE_CONFIG_START( micropin, micropin_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", micropin_state, timer_a, attotime::from_hz(100)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pentacup2, micropin_state ) +static MACHINE_CONFIG_START( pentacup2 ) /* basic machine hardware */ MCFG_CPU_ADD("v2cpu", I8085A, 2000000) MCFG_CPU_PROGRAM_MAP(pentacup2_map) diff --git a/src/mame/drivers/microtan.cpp b/src/mame/drivers/microtan.cpp index 05e4b51f29a..6bb45857199 100644 --- a/src/mame/drivers/microtan.cpp +++ b/src/mame/drivers/microtan.cpp @@ -209,7 +209,7 @@ static GFXDECODE_START( microtan ) GFXDECODE_END -static MACHINE_CONFIG_START( microtan, microtan_state ) +static MACHINE_CONFIG_START( microtan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 750000) // 750 kHz MCFG_CPU_PROGRAM_MAP(microtan_map) @@ -284,5 +284,5 @@ ROM_START( microtan ) ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME -COMP( 1979, microtan, 0, 0, microtan, microtan, microtan_state, microtan, "Tangerine", "Microtan 65" , 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1979, microtan, 0, 0, microtan, microtan, microtan_state, microtan, "Tangerine", "Microtan 65" , 0 ) diff --git a/src/mame/drivers/microvsn.cpp b/src/mame/drivers/microvsn.cpp index cf0ae613865..e2e650aed09 100644 --- a/src/mame/drivers/microvsn.cpp +++ b/src/mame/drivers/microvsn.cpp @@ -47,14 +47,14 @@ public: DECLARE_MACHINE_START(microvision); DECLARE_MACHINE_RESET(microvision); - void screen_vblank(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); DECLARE_DEVICE_IMAGE_LOAD_MEMBER( microvsn_cart ); // i8021 interface DECLARE_WRITE8_MEMBER(i8021_p0_write); DECLARE_WRITE8_MEMBER(i8021_p1_write); DECLARE_WRITE8_MEMBER(i8021_p2_write); - DECLARE_READ8_MEMBER(i8021_t1_read); + DECLARE_READ_LINE_MEMBER(i8021_t1_read); DECLARE_READ8_MEMBER(i8021_bus_read); // TMS1100 interface @@ -253,7 +253,7 @@ uint32_t microvision_state::screen_update(screen_device &screen, bitmap_ind16 &b } -void microvision_state::screen_vblank(screen_device &screen, bool state) +WRITE_LINE_MEMBER(microvision_state::screen_vblank) { if ( state ) { @@ -388,7 +388,7 @@ WRITE8_MEMBER( microvision_state::i8021_p2_write ) } -READ8_MEMBER( microvision_state::i8021_t1_read ) +READ_LINE_MEMBER( microvision_state::i8021_t1_read ) { return m_t1; } @@ -634,17 +634,17 @@ INPUT_PORTS_END static ADDRESS_MAP_START( microvision_8021_io, AS_IO, 8, microvision_state ) AM_RANGE( 0x00, 0xFF ) AM_WRITE( i8021_p0_write ) - AM_RANGE( MCS48_PORT_P0, MCS48_PORT_P0 ) AM_WRITE( i8021_p0_write ) - AM_RANGE( MCS48_PORT_P1, MCS48_PORT_P1 ) AM_WRITE( i8021_p1_write ) - AM_RANGE( MCS48_PORT_P2, MCS48_PORT_P2 ) AM_WRITE( i8021_p2_write ) - AM_RANGE( MCS48_PORT_T1, MCS48_PORT_T1 ) AM_READ( i8021_t1_read ) - AM_RANGE( MCS48_PORT_BUS, MCS48_PORT_BUS ) AM_READ( i8021_bus_read ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( microvision, microvision_state ) +static MACHINE_CONFIG_START( microvision ) MCFG_CPU_ADD("maincpu1", I8021, 2000000) // approximately - MCFG_CPU_IO_MAP( microvision_8021_io ) + MCFG_CPU_IO_MAP(microvision_8021_io) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(microvision_state, i8021_p1_write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(microvision_state, i8021_p2_write)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(microvision_state, i8021_t1_read)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(microvision_state, i8021_bus_read)) + MCFG_CPU_ADD("maincpu2", TMS1100, 500000) // most games seem to be running at approximately this speed MCFG_TMS1XXX_OUTPUT_PLA( microvision_output_pla_0 ) MCFG_TMS1XXX_READ_K_CB( READ8( microvision_state, tms1100_read_k ) ) @@ -660,7 +660,7 @@ static MACHINE_CONFIG_START( microvision, microvision_state ) MCFG_MACHINE_RESET_OVERRIDE(microvision_state, microvision ) MCFG_SCREEN_UPDATE_DRIVER(microvision_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(microvision_state, screen_vblank) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(microvision_state, screen_vblank)) MCFG_SCREEN_SIZE(16, 16) MCFG_SCREEN_VISIBLE_AREA(0, 15, 0, 15) MCFG_SCREEN_PALETTE("palette") @@ -695,4 +695,4 @@ ROM_START( microvsn ) ROM_END -CONS( 1979, microvsn, 0, 0, microvision, microvision, driver_device, 0, "Milton Bradley", "MicroVision", MACHINE_NOT_WORKING ) +CONS( 1979, microvsn, 0, 0, microvision, microvision, microvision_state, 0, "Milton Bradley", "MicroVision", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/midas.cpp b/src/mame/drivers/midas.cpp index 2dfdd7effb6..bb4139bb056 100644 --- a/src/mame/drivers/midas.cpp +++ b/src/mame/drivers/midas.cpp @@ -98,7 +98,7 @@ public: required_device m_screen; required_shared_ptr m_zoomram; - void screen_eof_midas(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_midas); }; @@ -611,14 +611,14 @@ void midas_state::machine_reset() { } -void midas_state::screen_eof_midas(screen_device &screen, bool state) +WRITE_LINE_MEMBER(midas_state::screen_vblank_midas) { if (state) m_sprgen->buffer_vram(); } -static MACHINE_CONFIG_START( livequiz, midas_state ) +static MACHINE_CONFIG_START( livequiz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) @@ -631,7 +631,7 @@ static MACHINE_CONFIG_START( livequiz, midas_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(midas_state, screen_update_midas) - MCFG_SCREEN_VBLANK_DRIVER(midas_state, screen_eof_midas) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(midas_state, screen_vblank_midas)) MCFG_DEVICE_ADD("spritegen", NEOGEO_SPRITE_MIDAS, 0) @@ -646,7 +646,7 @@ static MACHINE_CONFIG_START( livequiz, midas_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hammer, midas_state ) +static MACHINE_CONFIG_START( hammer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_28MHz / 2) @@ -663,7 +663,7 @@ static MACHINE_CONFIG_START( hammer, midas_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(midas_state, screen_update_midas) - MCFG_SCREEN_VBLANK_DRIVER(midas_state, screen_eof_midas) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(midas_state, screen_vblank_midas)) MCFG_DEVICE_ADD("spritegen", NEOGEO_SPRITE_MIDAS, 0) @@ -888,4 +888,4 @@ ROM_START( hammer ) ROM_END GAME( 1999, livequiz, 0, livequiz, livequiz, midas_state, livequiz, ROT0, "Andamiro", "Live Quiz Show", 0 ) -GAME( 2000, hammer, 0, hammer, hammer, driver_device, 0, ROT0, "Andamiro", "Hammer", 0 ) +GAME( 2000, hammer, 0, hammer, hammer, midas_state, 0, ROT0, "Andamiro", "Hammer", 0 ) diff --git a/src/mame/drivers/midqslvr.cpp b/src/mame/drivers/midqslvr.cpp index eb7f3bba092..3e77183a6ae 100644 --- a/src/mame/drivers/midqslvr.cpp +++ b/src/mame/drivers/midqslvr.cpp @@ -407,7 +407,7 @@ void midqslvr_state::machine_reset() membank("video_bank2")->set_base(memregion("video_bios")->base() + 0x4000); } -static MACHINE_CONFIG_START( midqslvr, midqslvr_state ) +static MACHINE_CONFIG_START( midqslvr ) MCFG_CPU_ADD("maincpu", PENTIUM, 333000000) // actually Celeron 333 MCFG_CPU_PROGRAM_MAP(midqslvr_map) MCFG_CPU_IO_MAP(midqslvr_io) @@ -498,11 +498,11 @@ ROM_START( ultarctcup ) ROM_END // there are almost certainly multiple versions of these; updates were offered on floppy disk. The version numbers for the existing CHDs are unknown. -GAME(1999, hydrthnd, 0, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Hydro Thunder", MACHINE_IS_SKELETON) +GAME(1999, hydrthnd, 0, midqslvr, at_keyboard, midqslvr_state, 0, ROT0, "Midway Games", "Hydro Thunder", MACHINE_IS_SKELETON) -GAME(2000, offrthnd, 0, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Offroad Thunder", MACHINE_IS_SKELETON) +GAME(2000, offrthnd, 0, midqslvr, at_keyboard, midqslvr_state, 0, ROT0, "Midway Games", "Offroad Thunder", MACHINE_IS_SKELETON) -GAME(2001, arctthnd, 0, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Arctic Thunder (v1.002)", MACHINE_IS_SKELETON) +GAME(2001, arctthnd, 0, midqslvr, at_keyboard, midqslvr_state, 0, ROT0, "Midway Games", "Arctic Thunder (v1.002)", MACHINE_IS_SKELETON) -GAME(2001, ultarctc, 0, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Ultimate Arctic Thunder", MACHINE_IS_SKELETON) -GAME(2004, ultarctcup, ultarctc, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Ultimate Arctic Thunder Update CD ver 1.950 (5/3/04)", MACHINE_IS_SKELETON) +GAME(2001, ultarctc, 0, midqslvr, at_keyboard, midqslvr_state, 0, ROT0, "Midway Games", "Ultimate Arctic Thunder", MACHINE_IS_SKELETON) +GAME(2004, ultarctcup, ultarctc, midqslvr, at_keyboard, midqslvr_state, 0, ROT0, "Midway Games", "Ultimate Arctic Thunder Update CD ver 1.950 (5/3/04)", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/midtunit.cpp b/src/mame/drivers/midtunit.cpp index 789209e22e3..b9584cca122 100644 --- a/src/mame/drivers/midtunit.cpp +++ b/src/mame/drivers/midtunit.cpp @@ -590,7 +590,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( tunit_core, midtunit_state ) +static MACHINE_CONFIG_START( tunit_core ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, CPU_CLOCK) diff --git a/src/mame/drivers/midvunit.cpp b/src/mame/drivers/midvunit.cpp index 37652825b7e..928002c0ab7 100644 --- a/src/mame/drivers/midvunit.cpp +++ b/src/mame/drivers/midvunit.cpp @@ -48,6 +48,8 @@ Known to exist but not dumped: void midvunit_state::machine_start() { + m_adc_ready_timer = timer_alloc(TIMER_ADC_READY); + save_item(NAME(m_cmos_protected)); save_item(NAME(m_control_data)); save_item(NAME(m_adc_data)); @@ -145,7 +147,7 @@ WRITE32_MEMBER(midvunit_state::midvunit_adc_w) logerror("adc_w: unexpected which = %02X\n", which + 4); else m_adc_data = m_adc_ports[which].read_safe(0); - timer_set(attotime::from_msec(1), TIMER_ADC_READY); + m_adc_ready_timer->adjust(attotime::from_msec(1)); } else logerror("adc_w without enabling writes!\n"); @@ -1120,7 +1122,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( midvcommon, midvunit_state ) +static MACHINE_CONFIG_START( midvcommon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS32031, CPU_CLOCK) diff --git a/src/mame/drivers/midwunit.cpp b/src/mame/drivers/midwunit.cpp index 8ce72e6bcdf..8628f2ad1e5 100644 --- a/src/mame/drivers/midwunit.cpp +++ b/src/mame/drivers/midwunit.cpp @@ -620,7 +620,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( wunit, midwunit_state ) +static MACHINE_CONFIG_START( wunit ) MCFG_CPU_ADD("maincpu", TMS34010, 50000000) MCFG_CPU_PROGRAM_MAP(main_map) diff --git a/src/mame/drivers/midxunit.cpp b/src/mame/drivers/midxunit.cpp index 850c904eab2..f63e779554c 100644 --- a/src/mame/drivers/midxunit.cpp +++ b/src/mame/drivers/midxunit.cpp @@ -241,7 +241,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( midxunit, midxunit_state ) +static MACHINE_CONFIG_START( midxunit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34020, 40000000) diff --git a/src/mame/drivers/midyunit.cpp b/src/mame/drivers/midyunit.cpp index 1e109bd5baf..2d3c1ab7560 100644 --- a/src/mame/drivers/midyunit.cpp +++ b/src/mame/drivers/midyunit.cpp @@ -272,16 +272,16 @@ INPUT_PORTS_END static INPUT_PORTS_START( trog ) PORT_START("IN0") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Punch") PORT_PLAYER(1) PORT_BIT( 0x00e0, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Punch") PORT_PLAYER(2) PORT_BIT( 0xe000, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -297,17 +297,17 @@ static INPUT_PORTS_START( trog ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED ) /* video freeze */ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START3 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START4 ) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(3) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(3) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(3) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(3) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P3 Punch") PORT_PLAYER(3) PORT_START("IN2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(4) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(4) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(4) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(4) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P4 Punch") PORT_PLAYER(4) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -365,6 +365,37 @@ static INPUT_PORTS_START( trog ) PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END +static INPUT_PORTS_START( trogpa4 ) + PORT_INCLUDE(trog) + + // Player controls the hand in this prototype version. + PORT_MODIFY("IN0") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Bone") PORT_PLAYER(1) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Bone") PORT_PLAYER(2) + + PORT_MODIFY("IN1") + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P3 Bone") PORT_PLAYER(3) + + PORT_MODIFY("IN2") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P4 Bone") PORT_PLAYER(4) +INPUT_PORTS_END + static INPUT_PORTS_START( hiimpact ) PORT_START("IN0") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) @@ -1070,7 +1101,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( zunit, midyunit_state ) +static MACHINE_CONFIG_START( zunit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, FAST_MASTER_CLOCK) @@ -1112,7 +1143,7 @@ MACHINE_CONFIG_END * *************************************/ -static MACHINE_CONFIG_START( yunit_core, midyunit_state ) +static MACHINE_CONFIG_START( yunit_core ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, SLOW_MASTER_CLOCK) @@ -1233,7 +1264,7 @@ static MACHINE_CONFIG_DERIVED( mkyawdim, yunit_core ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_8MHz / 8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_8MHz / 8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END @@ -3024,7 +3055,7 @@ GAME( 1990, trog, 0, yunit_cvsd_4bit_slow, trog, midyunit_state, GAME( 1990, trog4, trog, yunit_cvsd_4bit_slow, trog, midyunit_state, trog, ROT0, "Midway", "Trog (rev LA4 03/11/91)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, trog3, trog, yunit_cvsd_4bit_slow, trog, midyunit_state, trog, ROT0, "Midway", "Trog (rev LA3 02/14/91)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, trogpa6, trog, yunit_cvsd_4bit_slow, trog, midyunit_state, trog, ROT0, "Midway", "Trog (prototype, rev PA6-PAC 09/09/90)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, trogpa4, trog, yunit_cvsd_4bit_slow, trog, midyunit_state, trog, ROT0, "Midway", "Trog (prototype, rev 4.00 07/27/90)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, trogpa4, trog, yunit_cvsd_4bit_slow, trogpa4, midyunit_state, trog, ROT0, "Midway", "Trog (prototype, rev 4.00 07/27/90)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, smashtv, 0, yunit_cvsd_6bit_slow, smashtv, midyunit_state, smashtv, ROT0, "Williams", "Smash T.V. (rev 8.00)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, smashtv6, smashtv, yunit_cvsd_6bit_slow, smashtv, midyunit_state, smashtv, ROT0, "Williams", "Smash T.V. (rev 6.00)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/midzeus.cpp b/src/mame/drivers/midzeus.cpp index 7e05ec50d03..aaf7c032c7e 100644 --- a/src/mame/drivers/midzeus.cpp +++ b/src/mame/drivers/midzeus.cpp @@ -37,6 +37,7 @@ The Grid v1.2 10/18/2000 #include "crusnexo.lh" +#define LOG_FW (0) #define CPU_CLOCK XTAL_60MHz @@ -51,7 +52,8 @@ static int32_t gun_x[2], gun_y[2]; static uint8_t crusnexo_leds_select; static uint8_t keypad_select; -static uint8_t bitlatch[10]; +static uint32_t disk_asic[0x10]; +static uint32_t disk_asic_jr[0x10]; static uint8_t cmos_protected; @@ -72,6 +74,8 @@ public: required_device m_zeus; DECLARE_WRITE_LINE_MEMBER(zeus_irq); + DECLARE_READ32_MEMBER(zeus2_timekeeper_r); + DECLARE_WRITE32_MEMBER(zeus2_timekeeper_w); private: }; @@ -88,8 +92,10 @@ MACHINE_START_MEMBER(midzeus_state,midzeus) timer[0] = machine().scheduler().timer_alloc(timer_expired_delegate()); timer[1] = machine().scheduler().timer_alloc(timer_expired_delegate()); - gun_timer[0] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(midzeus_state::invasn_gun_callback),this)); - gun_timer[1] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(midzeus_state::invasn_gun_callback),this)); + gun_timer[0] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(midzeus_state::invasn_gun_callback), this)); + gun_timer[1] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(midzeus_state::invasn_gun_callback), this)); + + m_display_irq_off_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(midzeus_state::display_irq_off), this)); save_item(NAME(gun_control)); save_item(NAME(gun_irq_state)); @@ -107,6 +113,9 @@ MACHINE_RESET_MEMBER(midzeus_state,midzeus) m_maincpu->reset(); cmos_protected = true; + memset(disk_asic_jr, 0x0, 0x10 * 4); + disk_asic_jr[6] = 0xa0; // Rev3 Athens + memset(disk_asic, 0x0, 0x10 * 4); } @@ -125,7 +134,7 @@ TIMER_CALLBACK_MEMBER(midzeus_state::display_irq_off) INTERRUPT_GEN_MEMBER(midzeus_state::display_irq) { device.execute().set_input_line(0, ASSERT_LINE); - machine().scheduler().timer_set(attotime::from_hz(30000000), timer_expired_delegate(FUNC(midzeus_state::display_irq_off),this)); + m_display_irq_off_timer->adjust(attotime::from_hz(30000000)); } WRITE_LINE_MEMBER(midzeus2_state::zeus_irq) @@ -142,10 +151,10 @@ WRITE_LINE_MEMBER(midzeus2_state::zeus_irq) WRITE32_MEMBER(midzeus_state::cmos_w) { - if (bitlatch[2] && !cmos_protected) + if (disk_asic_jr[2] && !cmos_protected) COMBINE_DATA(&m_nvram[offset]); else - logerror("%06X:timekeeper_w with bitlatch[2] = %d, cmos_protected = %d\n", space.device().safe_pc(), bitlatch[2], cmos_protected); + logerror("%06X:timekeeper_w with disk_asic_jr[2] = %d, cmos_protected = %d\n", space.device().safe_pc(), disk_asic_jr[2], cmos_protected); cmos_protected = true; } @@ -170,17 +179,17 @@ WRITE32_MEMBER(midzeus_state::cmos_protect_w) * *************************************/ -READ32_MEMBER(midzeus_state::zeus2_timekeeper_r) +READ32_MEMBER(midzeus2_state::zeus2_timekeeper_r) { return m_m48t35->read(space, offset, 0xff) | 0xffffff00; } -WRITE32_MEMBER(midzeus_state::zeus2_timekeeper_w) +WRITE32_MEMBER(midzeus2_state::zeus2_timekeeper_w) { - if (bitlatch[2] && !cmos_protected) + if (disk_asic_jr[2] && !cmos_protected) m_m48t35->write(space, offset, data, 0xff); else - logerror("%s:zeus2_timekeeper_w with bitlatch[2] = %d, cmos_protected = %d\n", machine().describe_context(), bitlatch[2], cmos_protected); + logerror("%s:zeus2_timekeeper_w with disk_asic_jr[2] = %d, cmos_protected = %d\n", machine().describe_context(), disk_asic_jr[2], cmos_protected); cmos_protected = true; } @@ -193,114 +202,198 @@ READ32_MEMBER(midzeus_state::zpram_r) WRITE32_MEMBER(midzeus_state::zpram_w) { - if (bitlatch[2]) + if (disk_asic_jr[2]) COMBINE_DATA(&m_nvram[offset]); else - logerror("%06X:zpram_w with bitlatch[2] = %d\n", space.device().safe_pc(), bitlatch[2]); + logerror("%06X:zpram_w with disk_asic_jr[2] = %d\n", space.device().safe_pc(), disk_asic_jr[2]); +} + + + +/************************************* +* +* Disk ASIC registers +* +*************************************/ +READ32_MEMBER(midzeus_state::disk_asic_r) +{ + uint32_t retVal = disk_asic[offset]; + switch (offset) + { + // Sys Control + // Bit 0: zeus reset + // Bit 3: io reset + // Bit 15:8 Version + case 0: + retVal = (retVal & 0xffff00ff) | 0x3300; + break; + // Interrupt Status / Control + // 0x004: IFIFO Interrupt + // 0x200: Firewire + case 1: + retVal = 0x0; + break; + // Test + case 2: + break; + // Wait State Config + case 3: + break; + // IDE Config + case 4: + break; + // PSRAM Config + case 5: + break; + // Unknown + default: + logerror("%06X:disk_asic_r(%X) Unknown\n", space.device().safe_pc(), offset); + break; + } + return retVal; } +WRITE32_MEMBER(midzeus_state::disk_asic_w) +{ + disk_asic[offset] = data; + + switch (offset) + { + // Sys Control + // Bit 0: zeus reset + // Bit 3: io reset + case 0: + break; + // Interrupt Status / Control + // 0x004: IFIFO Interrupt + // 0x200: Enable Firewire interrupt + case 1: + break; + // Test + case 2: + break; + // Wait State Config + case 3: + break; + // IDE Config + case 4: + break; + // PSRAM Config + case 5: + break; + // Unknown + default: + logerror("%06X:disk_asic_w(%X)=%08X Unknown\n", space.device().safe_pc(), offset, data); + break; + } +} /************************************* * - * Miscellaneous bit latches + * Disk ASIC JR registers * *************************************/ - -READ32_MEMBER(midzeus_state::bitlatches_r) +READ32_MEMBER(midzeus_state::disk_asic_jr_r) { + uint32_t retVal = disk_asic_jr[offset]; switch (offset) { - /* unknown purpose; two bits are apparently used */ + // miscelaneous hw wait states case 1: - return bitlatch[offset] | ~3; - - /* CMOS/ZPRAM extra enable latch; only low bit is used */ + break; + /* CMOS/ZPRAM write enable; only low bit is used */ case 2: - return bitlatch[offset] | ~1; + break; + // return disk_asic_jr[offset] | ~1; - /* unknown purpose; mk4/invasn/thegrid read at startup; invasn freaks if it is 1 at startup */ - /* only low bit is used */ + /* reset status; bit 0 is watchdog reset; mk4/invasn/thegrid read at startup; invasn freaks if it is 1 at startup */ case 3: - return bitlatch[offset] | ~1; + break; + // return disk_asic_jr[offset] | ~1; /* ROM bank selection on Zeus 2; two bits are used */ case 5: - return bitlatch[offset] | ~3; + // return disk_asic_jr[offset] | ~3; - /* unknown purpose; crusnexo reads at startup: if (val & 0xf0) == 0xa0 it affects */ + /* disk asic jr id; crusnexo reads at startup: if (val & 0xf0) == 0xa0 it affects */ /* how the Zeus is used (reg 0x5d is set to 0x54580006) */ /* thegrid does the same, writing either 0xD4580006 or 0xC4180006 depending */ /* this is the value reported as DISK JR ASIC version in thegrid startup test */ + // Set in reset + // a0 = Rev3 Athens + // 90 = Rev2 Athens case 6: - return 0xa0 | ~0xff; + break; /* unknown purpose */ default: - logerror("%06X:bitlatches_r(%X)\n", space.device().safe_pc(), offset); + logerror("%06X:disk_asic_jr_r(%X)\n", space.device().safe_pc(), offset); break; } - return ~0; + return retVal; } -WRITE32_MEMBER(midzeus_state::bitlatches_w) +WRITE32_MEMBER(midzeus_state::disk_asic_jr_w) { - uint32_t oldval = bitlatch[offset]; - bitlatch[offset] = data; + //uint32_t oldval = disk_asic_jr[offset]; + disk_asic_jr[offset] = data; switch (offset) { - /* unknown purpose */ - default: - if (oldval ^ data) - logerror("%06X:bitlatches_w(%X) = %X\n", space.device().safe_pc(), offset, data); - break; - - /* unknown purpose; crusnexo toggles this between 0 and 1 every 20 frames; thegrid writes 1 */ + /* disk asic jr led; crusnexo toggles this between 0 and 1 every 20 frames; thegrid writes 1 */ case 0: if (data != 0 && data != 1) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); + logerror("%06X:disk_asic_jr_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); break; - /* unknown purpose; mk4/invasn write 1 here at initialization; crusnexo/thegrid write 3 */ + /* miscellaneous hardware wait states; mk4/invasn write 1 here at initialization; crusnexo/thegrid write 3 */ case 1: if (data != 1 && data != 3) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); + logerror("%06X:disk_asic_jr_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); break; - /* CMOS/ZPRAM extra enable latch; only low bit is used */ + /* CMOS/ZPRAM write enable; only low bit is used */ case 2: break; + /* reset status; bit 0 is watchdog reset; mk4/invasn/thegrid read at startup; invasn freaks if it is 1 at startup */ + case 3: + break; + /* unknown purpose; invasn writes 2 here at startup */ case 4: if (data != 2) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); + logerror("%06X:disk_asic_jr_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); break; /* ROM bank selection on Zeus 2 */ case 5: - membank("bank1")->set_entry(bitlatch[offset] & 3); + membank("bank1")->set_entry(disk_asic_jr[offset] & 3); break; - /* unknown purpose; crusnexo/thegrid write 1 at startup */ + /* zeus2 ws; 0=zeus access 1 wait state, 2=unlock roms; crusnexo/thegrid write 1 at startup */ case 7: - if (data != 1) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); break; - /* unknown purpose; crusnexo writes 4 at startup; thegrid writes 6 */ + /* romsize; crusnexo writes 4 at startup; thegrid writes 6 */ case 8: if (data != 4 && data != 6) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); + logerror("%06X:disk_asic_jr_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); break; - /* unknown purpose; thegrid writes 1 at startup */ + /* trackball reset; thegrid writes 1 at startup */ case 9: if (data != 1) - logerror("%06X:bitlatches_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); + logerror("%06X:disk_asic_jr_w(%X) = %X (unexpected)\n", space.device().safe_pc(), offset, data); + break; + /* unknown purpose */ + default: + //if (oldval ^ data) + logerror("%06X:disk_asic_jr_w(%X) = %X\n", space.device().safe_pc(), offset, data); break; + } } @@ -356,33 +449,75 @@ WRITE32_MEMBER(midzeus_state::crusnexo_leds_w) /************************************* * - * Link controller access (Zeus 2 only) + * Firewwire access (Zeus 2 only) * *************************************/ - -// read 8d0003, check bit 1, skip some stuff if 0 -// write junk to 9e0000 - -READ32_MEMBER(midzeus_state::linkram_r) +READ32_MEMBER(midzeus_state::firewire_r) { - logerror("%06X:unknown_8a000_r(%02X)\n", space.device().safe_pc(), offset); - if (offset == 0) - return 0x30313042; - else if (offset == 0x3c) - return 0xffffffff; - else if (offset == 0x30) - // ??? - return 0xffffffff; - else if (offset == 0xc) - // ??? - return 0xffffffff; - return m_linkram[offset]; + uint32_t retVal = 0; + if (offset < 0x40) + retVal = m_firewire[offset / 4]; + + switch (offset) { + case 0: + // Version + retVal = 0x30313042; + break; + case 0x0c: + // Interrupt + retVal = 0xf4000000;// &m_firewire[0x10 / 4]; + break; + case 0x30: + // Asynchronous Transmit FIFO Status + // 8:0 space available + retVal = 0x1ff; + break; + case 0x3c: + // General Rx FIFO Status + // 0x80000000 = Empty + // 0x40000000 = Control Data + // 0x20000000 = Packet Complete + retVal = 0x80000000; + break; + case 0xc0: + // General Rx FIFO + retVal = 0x0; + break; + } + if LOG_FW logerror("%06X:firewire_r(%02X)=%08X\n", space.device().safe_pc(), offset, retVal); + return retVal; } -WRITE32_MEMBER(midzeus_state::linkram_w) +WRITE32_MEMBER(midzeus_state::firewire_w) { - logerror("%06X:unknown_8a000_w(%02X) = %08X\n", space.device().safe_pc(), offset, data); - COMBINE_DATA(&m_linkram[offset]); + // 0x08 // Control + // Bit 0: Flush bad packets from Rx FIFO + // Bit 6: IRP2En + // Bit 7: IRP1En + // Bit 8: TrgEn + // Bit 20: Reset Rx + // Bit 21: Reset Tx + // Bit 22: Enable Acknowledge + // Bit 23: Iso Rx Enable + // Bit 24: Iso Rx Enable + // Bit 25: Async Rx Enable + // Bit 26: Async Tx Enable + // Bit 30: Rx Self ID packets + // Bit 31: Rx Packets adddressed to phy + // 0x00200000 Reset Tx + // 0x00100000 Reset Rx + // 0x1c // FIFO Control + // Bit 0:8: ITF Size + // Bit 9:17: ATF Size + // Bit 18:26 Trigger Size + // Bit 29: Clear GRF + // Bit 32: Clear ATF + // 0x20 // Diagnostics + // Bit 31: Enable Snooping + + if (offset < 0x40) + COMBINE_DATA(&m_firewire[offset / 4]); + if LOG_FW logerror("%06X:firewire_w(%02X) = %08X\n", space.device().safe_pc(), offset, data); } @@ -467,6 +602,20 @@ CUSTOM_INPUT_MEMBER(midzeus_state::keypad_r) return bits; } +READ32_MEMBER(midzeus_state::grid_keypad_r) +{ + uint32_t bits = (ioport("KEYPAD")->read() >> ((offset >> 1) << 2)) & 0xf; + return bits; +} + +READ32_MEMBER(midzeus_state::trackball_r) +{ + if (offset==0) + return ioport("TRACKY1")->read(); + else + return ioport("TRACKX1")->read(); +} + /************************************* @@ -585,7 +734,7 @@ static ADDRESS_MAP_START( zeus_map, AS_PROGRAM, 32, midzeus_state ) AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("tms32031_ctl") AM_RANGE(0x880000, 0x8803ff) AM_READWRITE(zeus_r, zeus_w) AM_SHARE("zeusbase") - AM_RANGE(0x8d0000, 0x8d0004) AM_READWRITE(bitlatches_r, bitlatches_w) + AM_RANGE(0x8d0000, 0x8d0009) AM_READWRITE(disk_asic_jr_r, disk_asic_jr_w) AM_RANGE(0x990000, 0x99000f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog? AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE(cmos_r, cmos_w) AM_SHARE("nvram") @@ -600,11 +749,12 @@ static ADDRESS_MAP_START( zeus2_map, AS_PROGRAM, 32, midzeus2_state ) AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("tms32031_ctl") AM_RANGE(0x880000, 0x88007f) AM_DEVREADWRITE("zeus2", zeus2_device, zeus2_r, zeus2_w) - AM_RANGE(0x8a0000, 0x8a003f) AM_READWRITE(linkram_r, linkram_w) AM_SHARE("linkram") - AM_RANGE(0x8d0000, 0x8d000a) AM_READWRITE(bitlatches_r, bitlatches_w) + AM_RANGE(0x8a0000, 0x8a00cf) AM_READWRITE(firewire_r, firewire_w) AM_SHARE("firewire") + AM_RANGE(0x8d0000, 0x8d0009) AM_READWRITE(disk_asic_jr_r, disk_asic_jr_w) AM_RANGE(0x900000, 0x91ffff) AM_READWRITE(zpram_r, zpram_w) AM_SHARE("nvram") AM_MIRROR(0x020000) AM_RANGE(0x990000, 0x99000f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) AM_RANGE(0x9c0000, 0x9c000f) AM_READWRITE(analog_r, analog_w) + AM_RANGE(0x9d0000, 0x9d000f) AM_READWRITE(disk_asic_r, disk_asic_w) AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog? AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE(zeus2_timekeeper_r, zeus2_timekeeper_w) AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE(cmos_protect_w) @@ -983,72 +1133,52 @@ INPUT_PORTS_END static INPUT_PORTS_START( thegrid ) PORT_START("DIPS") /* DS1 */ - PORT_DIPNAME( 0x0001, 0x0001, "Show Blood" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) /* Manual states that switches 2-7 are Unused */ - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, "Coinage Source" ) - PORT_DIPSETTING( 0x0100, "Dipswitch" ) + PORT_DIPNAME( 0x0100, 0x0100, "Show Blood" ) + PORT_DIPSETTING( 0x0100, "Show Blood" ) + PORT_DIPSETTING( 0x0000, "Do not show blood" ) + PORT_DIPUNUSED( 0xfe00, 0xfe00) + PORT_DIPNAME( 0x0001, 0x0001, "Coinage Source" ) + PORT_DIPSETTING( 0x0001, "Dipswitch" ) PORT_DIPSETTING( 0x0000, "CMOS" ) - PORT_DIPNAME( 0x3e00, 0x3e00, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x3e00, "USA-1" ) - PORT_DIPSETTING( 0x3800, "USA-2" ) - PORT_DIPSETTING( 0x3c00, "USA-10" ) - PORT_DIPSETTING( 0x3a00, "USA-14" ) - PORT_DIPSETTING( 0x3600, "USA-DC1" ) - PORT_DIPSETTING( 0x3000, "USA-DC2" ) - PORT_DIPSETTING( 0x3200, "USA-DC4" ) - PORT_DIPSETTING( 0x3400, "USA-DC5" ) - PORT_DIPSETTING( 0x2e00, "French-ECA1" ) - PORT_DIPSETTING( 0x2c00, "French-ECA2" ) - PORT_DIPSETTING( 0x2a00, "French-ECA3" ) - PORT_DIPSETTING( 0x2800, "French-ECA4" ) - PORT_DIPSETTING( 0x2600, "French-ECA5" ) - PORT_DIPSETTING( 0x2400, "French-ECA6" ) - PORT_DIPSETTING( 0x2200, "French-ECA7" ) - PORT_DIPSETTING( 0x2000, "French-ECA8" ) - PORT_DIPSETTING( 0x1e00, "German-1" ) - PORT_DIPSETTING( 0x1c00, "German-2" ) - PORT_DIPSETTING( 0x1a00, "German-3" ) - PORT_DIPSETTING( 0x1800, "German-4" ) - PORT_DIPSETTING( 0x1600, "German-5" ) - PORT_DIPSETTING( 0x1400, "German-ECA1" ) - PORT_DIPSETTING( 0x1200, "German-ECA2" ) - PORT_DIPSETTING( 0x1000, "German-ECA3" ) - PORT_DIPSETTING( 0x0800, "UK-4" ) - PORT_DIPSETTING( 0x0600, "UK-5" ) - PORT_DIPSETTING( 0x0e00, "UK-1 ECA" ) - PORT_DIPSETTING( 0x0c00, "UK-2 ECA" ) - PORT_DIPSETTING( 0x0a00, "UK-3 ECA" ) - PORT_DIPSETTING( 0x0400, "UK-6 ECA" ) - PORT_DIPSETTING( 0x0200, "UK-7 ECA" ) + PORT_DIPNAME( 0x003e, 0x003e, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x003e, "USA-1" ) + PORT_DIPSETTING( 0x0038, "USA-2" ) + PORT_DIPSETTING( 0x003c, "USA-10" ) + PORT_DIPSETTING( 0x003a, "USA-14" ) + PORT_DIPSETTING( 0x0036, "USA-DC1" ) + PORT_DIPSETTING( 0x0030, "USA-DC2" ) + PORT_DIPSETTING( 0x0032, "USA-DC4" ) + PORT_DIPSETTING( 0x0034, "USA-DC5" ) + PORT_DIPSETTING( 0x002e, "French-ECA1" ) + PORT_DIPSETTING( 0x002c, "French-ECA2" ) + PORT_DIPSETTING( 0x002a, "French-ECA3" ) + PORT_DIPSETTING( 0x0028, "French-ECA4" ) + PORT_DIPSETTING( 0x0026, "French-ECA5" ) + PORT_DIPSETTING( 0x0024, "French-ECA6" ) + PORT_DIPSETTING( 0x0022, "French-ECA7" ) + PORT_DIPSETTING( 0x0020, "French-ECA8" ) + PORT_DIPSETTING( 0x001e, "German-1" ) + PORT_DIPSETTING( 0x001c, "German-2" ) + PORT_DIPSETTING( 0x001a, "German-3" ) + PORT_DIPSETTING( 0x0018, "German-4" ) + PORT_DIPSETTING( 0x0016, "German-5" ) + PORT_DIPSETTING( 0x0014, "German-ECA1" ) + PORT_DIPSETTING( 0x0012, "German-ECA2" ) + PORT_DIPSETTING( 0x0010, "German-ECA3" ) + PORT_DIPSETTING( 0x0008, "UK-4" ) + PORT_DIPSETTING( 0x0006, "UK-5" ) + PORT_DIPSETTING( 0x000e, "UK-1 ECA" ) + PORT_DIPSETTING( 0x000c, "UK-2 ECA" ) + PORT_DIPSETTING( 0x000a, "UK-3 ECA" ) + PORT_DIPSETTING( 0x0004, "UK-6 ECA" ) + PORT_DIPSETTING( 0x0002, "UK-7 ECA" ) PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) /* Manual states switches 7 & 8 are Unused */ - PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) /* Manual states switches 7 & 8 are Unused */ + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, "Game Mode" ) + PORT_DIPSETTING( 0x0080, "Normal" ) + PORT_DIPSETTING( 0x0000, "Test" ) PORT_START("SYSTEM") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -1090,10 +1220,31 @@ static INPUT_PORTS_START( thegrid ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("49WAYX") - PORT_BIT( 0xff, 0x38, IPT_AD_STICK_X ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) + PORT_BIT( 0xff, 0x38, IPT_AD_STICK_X ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_REVERSE PORT_START("49WAYY") - PORT_BIT( 0xff, 0x38, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) + PORT_BIT( 0xff, 0x38, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_REVERSE + + PORT_START("KEYPAD") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) /* keypad 1 */ + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) /* keypad 4 */ + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) /* keypad 7 */ + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad *") PORT_CODE(KEYCODE_MINUS_PAD) /* keypad * */ + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) /* keypad 2 */ + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) /* keypad 5 */ + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) /* keypad 8 */ + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) /* keypad 0 */ + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) /* keypad 3 */ + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) /* keypad 6 */ + PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) /* keypad 9 */ + PORT_BIT(0x800, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad #") PORT_CODE(KEYCODE_PLUS_PAD) /* keypad # */ + + PORT_START("TRACKX1") + PORT_BIT(0xff, 0x00, IPT_TRACKBALL_X) PORT_SENSITIVITY(1) PORT_KEYDELTA(1) PORT_PLAYER(1) + + PORT_START("TRACKY1") + PORT_BIT(0xff, 0x00, IPT_TRACKBALL_Y) PORT_SENSITIVITY(1) PORT_KEYDELTA(1) PORT_REVERSE PORT_PLAYER(1) + INPUT_PORTS_END @@ -1104,12 +1255,12 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( midzeus, midzeus_state ) +static MACHINE_CONFIG_START( midzeus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS32032, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(zeus_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", midzeus_state, display_irq) + MCFG_CPU_VBLANK_INT_DRIVER("screen", midzeus_state, display_irq) MCFG_MACHINE_START_OVERRIDE(midzeus_state,midzeus) MCFG_MACHINE_RESET_OVERRIDE(midzeus_state,midzeus) @@ -1146,7 +1297,7 @@ static MACHINE_CONFIG_DERIVED( invasn, midzeus ) MCFG_MIDWAY_IOASIC_UPPER(468/* or 488 */) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( midzeus2, midzeus2_state ) +static MACHINE_CONFIG_START( midzeus2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS32032, CPU_CLOCK) @@ -1529,6 +1680,8 @@ DRIVER_INIT_MEMBER(midzeus_state,crusnexo) DRIVER_INIT_MEMBER(midzeus_state,thegrid) { membank("bank1")->configure_entries(0, 3, memregion("user2")->base(), 0x400000*4); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8c0000, 0x8c0001, read32_delegate(FUNC(midzeus_state::trackball_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x9b0000, 0x9b0004, read32_delegate(FUNC(midzeus_state::grid_keypad_r), this)); } @@ -1539,16 +1692,16 @@ DRIVER_INIT_MEMBER(midzeus_state,thegrid) * *************************************/ -GAME( 1997, mk4, 0, mk4, mk4, midzeus_state, mk4, ROT0, "Midway", "Mortal Kombat 4 (version 3.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mk4a, mk4, mk4, mk4, midzeus_state, mk4, ROT0, "Midway", "Mortal Kombat 4 (version 2.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mk4b, mk4, mk4, mk4, midzeus_state, mk4, ROT0, "Midway", "Mortal Kombat 4 (version 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1999, invasnab, 0, invasn, invasn, midzeus_state, invasn, ROT0, "Midway", "Invasion - The Abductors (version 5.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1999, invasnab4,invasnab, invasn, invasn, midzeus_state, invasn, ROT0, "Midway", "Invasion - The Abductors (version 4.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1999, invasnab3,invasnab, invasn, invasn, midzeus_state, invasn, ROT0, "Midway", "Invasion - The Abductors (version 3.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAMEL( 1999, crusnexo, 0, crusnexo, crusnexo, midzeus_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 2.4)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) -GAMEL( 1999, crusnexoa,crusnexo, crusnexo, crusnexo, midzeus_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 2.0)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) -GAMEL( 1999, crusnexob,crusnexo, crusnexo, crusnexo, midzeus_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 1.6)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) -GAMEL( 1999, crusnexoc,crusnexo, crusnexo, crusnexo, midzeus_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 1.3)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) -GAMEL( 1999, crusnexod,crusnexo, crusnexo, crusnexo, midzeus_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 1.0)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) -GAME( 2001, thegrid, 0, thegrid, thegrid, midzeus_state, thegrid, ROT0, "Midway", "The Grid (version 1.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 2001, thegrida, thegrid, thegrid, thegrid, midzeus_state, thegrid, ROT0, "Midway", "The Grid (version 1.1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mk4, 0, mk4, mk4, midzeus_state, mk4, ROT0, "Midway", "Mortal Kombat 4 (version 3.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mk4a, mk4, mk4, mk4, midzeus_state, mk4, ROT0, "Midway", "Mortal Kombat 4 (version 2.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mk4b, mk4, mk4, mk4, midzeus_state, mk4, ROT0, "Midway", "Mortal Kombat 4 (version 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, invasnab, 0, invasn, invasn, midzeus_state, invasn, ROT0, "Midway", "Invasion - The Abductors (version 5.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, invasnab4,invasnab, invasn, invasn, midzeus_state, invasn, ROT0, "Midway", "Invasion - The Abductors (version 4.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, invasnab3,invasnab, invasn, invasn, midzeus_state, invasn, ROT0, "Midway", "Invasion - The Abductors (version 3.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAMEL( 1999, crusnexo, 0, crusnexo, crusnexo, midzeus2_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 2.4)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) +GAMEL( 1999, crusnexoa,crusnexo, crusnexo, crusnexo, midzeus2_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 2.0)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) +GAMEL( 1999, crusnexob,crusnexo, crusnexo, crusnexo, midzeus2_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 1.6)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) +GAMEL( 1999, crusnexoc,crusnexo, crusnexo, crusnexo, midzeus2_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 1.3)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) +GAMEL( 1999, crusnexod,crusnexo, crusnexo, crusnexo, midzeus2_state, crusnexo, ROT0, "Midway", "Cruis'n Exotica (version 1.0)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_crusnexo ) +GAME( 2001, thegrid, 0, thegrid, thegrid, midzeus2_state, thegrid, ROT0, "Midway", "The Grid (version 1.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 2001, thegrida, thegrid, thegrid, thegrid, midzeus2_state, thegrid, ROT0, "Midway", "The Grid (version 1.1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mikie.cpp b/src/mame/drivers/mikie.cpp index 35ded5f2f99..0efa89c21d3 100644 --- a/src/mame/drivers/mikie.cpp +++ b/src/mame/drivers/mikie.cpp @@ -254,7 +254,7 @@ INTERRUPT_GEN_MEMBER(mikie_state::vblank_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( mikie, mikie_state ) +static MACHINE_CONFIG_START( mikie ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, OSC/12) @@ -382,6 +382,6 @@ ROM_END * *************************************/ -GAME( 1984, mikie, 0, mikie, mikie, driver_device, 0, ROT270, "Konami", "Mikie", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, mikiej, mikie, mikie, mikie, driver_device, 0, ROT270, "Konami", "Shinnyuushain Tooru-kun", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, mikiehs, mikie, mikie, mikie, driver_device, 0, ROT270, "Konami", "Mikie (High School Graffiti)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, mikie, 0, mikie, mikie, mikie_state, 0, ROT270, "Konami", "Mikie", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, mikiej, mikie, mikie, mikie, mikie_state, 0, ROT270, "Konami", "Shinnyuushain Tooru-kun", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, mikiehs, mikie, mikie, mikie, mikie_state, 0, ROT270, "Konami", "Mikie (High School Graffiti)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mikro80.cpp b/src/mame/drivers/mikro80.cpp index 0c1d3ff91d2..a529f0eb037 100644 --- a/src/mame/drivers/mikro80.cpp +++ b/src/mame/drivers/mikro80.cpp @@ -160,7 +160,7 @@ static GFXDECODE_START( mikro80 ) GFXDECODE_ENTRY( "gfx1", 0x0000, mikro80_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( mikro80, mikro80_state ) +static MACHINE_CONFIG_START( mikro80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, 2000000) MCFG_CPU_PROGRAM_MAP(mikro80_mem) @@ -237,7 +237,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, mikro80, 0, 0, mikro80, mikro80, mikro80_state, mikro80, "", "Mikro-80", 0) -COMP( 1993, radio99, mikro80, 0, radio99, mikro80, mikro80_state, radio99, "", "Radio-99DM", 0) -COMP( 1987, kristall2, mikro80, 0, kristall, mikro80, mikro80_state, mikro80, "", "Kristall-2", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, mikro80, 0, 0, mikro80, mikro80, mikro80_state, mikro80, "", "Mikro-80", 0) +COMP( 1993, radio99, mikro80, 0, radio99, mikro80, mikro80_state, radio99, "", "Radio-99DM", 0) +COMP( 1987, kristall2, mikro80, 0, kristall, mikro80, mikro80_state, mikro80, "", "Kristall-2", 0) diff --git a/src/mame/drivers/mikromik.cpp b/src/mame/drivers/mikromik.cpp index 8cbeaed5fdf..3e54905b2a9 100644 --- a/src/mame/drivers/mikromik.cpp +++ b/src/mame/drivers/mikromik.cpp @@ -455,18 +455,18 @@ void mm1_state::machine_reset() // MACHINE_CONFIG( mm1 ) //------------------------------------------------- -static MACHINE_CONFIG_START( mm1, mm1_state ) +static MACHINE_CONFIG_START( mm1 ) // basic system hardware MCFG_CPU_ADD(I8085A_TAG, I8085A, XTAL_6_144MHz) MCFG_CPU_PROGRAM_MAP(mm1_map) MCFG_I8085A_SID(READLINE(mm1_state, dsra_r)) - MCFG_I8085A_SOD(DEVWRITELINE(KB_TAG, mm1_keyboard_t, bell_w)) + MCFG_I8085A_SOD(DEVWRITELINE(KB_TAG, mm1_keyoard_device, bell_w)) MCFG_QUANTUM_PERFECT_CPU(I8085A_TAG) // peripheral hardware MCFG_DEVICE_ADD(I8212_TAG, I8212, 0) MCFG_I8212_IRQ_CALLBACK(INPUTLINE(I8085A_TAG, I8085_RST65_LINE)) - MCFG_I8212_DI_CALLBACK(DEVREAD8(KB_TAG, mm1_keyboard_t, read)) + MCFG_I8212_DI_CALLBACK(DEVREAD8(KB_TAG, mm1_keyoard_device, read)) MCFG_DEVICE_ADD(I8237_TAG, AM9517A, XTAL_6_144MHz/2) MCFG_I8237_OUT_HREQ_CB(WRITELINE(mm1_state, dma_hrq_w)) @@ -576,6 +576,6 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1981, mm1m6, 0, 0, mm1m6, mm1, driver_device, 0, "Nokia Data", "MikroMikko 1 M6", MACHINE_SUPPORTS_SAVE ) -COMP( 1981, mm1m7, mm1m6, 0, mm1m7, mm1, driver_device, 0, "Nokia Data", "MikroMikko 1 M7", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, mm1m6, 0, 0, mm1m6, mm1, mm1_state, 0, "Nokia Data", "MikroMikko 1 M6", MACHINE_SUPPORTS_SAVE ) +COMP( 1981, mm1m7, mm1m6, 0, mm1m7, mm1, mm1_state, 0, "Nokia Data", "MikroMikko 1 M7", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mikrosha.cpp b/src/mame/drivers/mikrosha.cpp index 233fdbde003..cfdf4570cda 100644 --- a/src/mame/drivers/mikrosha.cpp +++ b/src/mame/drivers/mikrosha.cpp @@ -203,7 +203,7 @@ static GFXDECODE_START( mikrosha ) GFXDECODE_ENTRY( "gfx1", 0x0000, mikrosha_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( mikrosha, mikrosha_state ) +static MACHINE_CONFIG_START( mikrosha ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_16MHz / 9) MCFG_CPU_PROGRAM_MAP(mikrosha_mem) @@ -283,6 +283,6 @@ ROM_START( m86rk ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, mikrosha, radio86,0, mikrosha, mikrosha, radio86_state, radio86, "Lianozovo Electromechanical Factory", "Mikrosha", 0) -COMP( 1987, m86rk, radio86,0, mikrosha, mikrosha, radio86_state, radio86, "", "Mikrosha-86RK", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1987, mikrosha, radio86, 0, mikrosha, mikrosha, mikrosha_state, radio86, "Lianozovo Electromechanical Factory", "Mikrosha", 0) +COMP( 1987, m86rk, radio86, 0, mikrosha, mikrosha, mikrosha_state, radio86, "", "Mikrosha-86RK", 0) diff --git a/src/mame/drivers/mil4000.cpp b/src/mame/drivers/mil4000.cpp index 52b0d120002..3b18ba1868d 100644 --- a/src/mame/drivers/mil4000.cpp +++ b/src/mame/drivers/mil4000.cpp @@ -537,7 +537,7 @@ static GFXDECODE_START( mil4000 ) GFXDECODE_END -static MACHINE_CONFIG_START( mil4000, mil4000_state ) +static MACHINE_CONFIG_START( mil4000 ) MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(mil4000_map) // irq 2/4/5 point to the same place, others invalid @@ -559,7 +559,7 @@ static MACHINE_CONFIG_START( mil4000, mil4000_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", mil4000) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // frequency from 1000 kHz resonator. pin 7 high not verified. + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // frequency from 1000 kHz resonator. pin 7 high not verified. MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -748,10 +748,10 @@ ROM_START( chewheel ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 2000, mil4000, 0, mil4000, mil4000, driver_device, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 2.0)", 0, layout_mil4000 ) -GAMEL( 2000, mil4000a, mil4000, mil4000, mil4000, driver_device, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 1.8)", 0, layout_mil4000 ) -GAMEL( 2000, mil4000b, mil4000, mil4000, mil4000, driver_device, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 1.5)", 0, layout_mil4000 ) -GAMEL( 2000, mil4000c, mil4000, mil4000, mil4000, driver_device, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 1.6)", 0, layout_mil4000 ) -GAMEL( 200?, top21, 0, mil4000, mil4000, driver_device, 0, ROT0, "Assogiochi Assago", "Top XXI (Version 1.2)", 0, layout_mil4000 ) -GAMEL( 200?, chewheel, 0, chewheel, mil4000, driver_device, 0, ROT0, "Assogiochi Assago", "Cherry Wheel (Version 1.7)", MACHINE_UNEMULATED_PROTECTION, layout_mil4000 ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 2000, mil4000, 0, mil4000, mil4000, mil4000_state, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 2.0)", 0, layout_mil4000 ) +GAMEL( 2000, mil4000a, mil4000, mil4000, mil4000, mil4000_state, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 1.8)", 0, layout_mil4000 ) +GAMEL( 2000, mil4000b, mil4000, mil4000, mil4000, mil4000_state, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 1.5)", 0, layout_mil4000 ) +GAMEL( 2000, mil4000c, mil4000, mil4000, mil4000, mil4000_state, 0, ROT0, "Sure Milano", "Millennium Nuovo 4000 (Version 1.6)", 0, layout_mil4000 ) +GAMEL( 200?, top21, 0, mil4000, mil4000, mil4000_state, 0, ROT0, "Assogiochi Assago", "Top XXI (Version 1.2)", 0, layout_mil4000 ) +GAMEL( 200?, chewheel, 0, chewheel, mil4000, mil4000_state, 0, ROT0, "Assogiochi Assago", "Cherry Wheel (Version 1.7)", MACHINE_UNEMULATED_PROTECTION, layout_mil4000 ) diff --git a/src/mame/drivers/mini2440.cpp b/src/mame/drivers/mini2440.cpp index 6d4ad637a96..1a5689435c6 100644 --- a/src/mame/drivers/mini2440.cpp +++ b/src/mame/drivers/mini2440.cpp @@ -219,7 +219,7 @@ DRIVER_INIT_MEMBER(mini2440_state,mini2440) // do nothing } -static MACHINE_CONFIG_START( mini2440, mini2440_state ) +static MACHINE_CONFIG_START( mini2440 ) MCFG_CPU_ADD("maincpu", ARM920T, 400000000) MCFG_CPU_PROGRAM_MAP(mini2440_map) @@ -254,7 +254,7 @@ static MACHINE_CONFIG_START( mini2440, mini2440_state ) MCFG_S3C2440_NAND_DATA_W_CB(WRITE8(mini2440_state, s3c2440_nand_data_w)) MCFG_DEVICE_ADD("nand", NAND, 0) - MCFG_NAND_TYPE(NAND_CHIP_K9F1G08U0B) + MCFG_NAND_TYPE(K9F1G08U0B) MCFG_NAND_RNB_CALLBACK(DEVWRITELINE("s3c2440", s3c2440_device, frnb_w)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/miniboy7.cpp b/src/mame/drivers/miniboy7.cpp index feac53e1b2b..bf86128018a 100644 --- a/src/mame/drivers/miniboy7.cpp +++ b/src/mame/drivers/miniboy7.cpp @@ -501,7 +501,7 @@ GFXDECODE_END * Machine Drivers * ***********************************/ -static MACHINE_CONFIG_START( miniboy7, miniboy7_state ) +static MACHINE_CONFIG_START( miniboy7 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 16) /* guess */ @@ -624,6 +624,6 @@ ROM_END * Game Drivers * ***********************************/ -// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT -GAMEL( 1983, miniboy7, 0, miniboy7, miniboy7, driver_device, 0, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 1)", MACHINE_NO_COCKTAIL, layout_miniboy7 ) -GAMEL( 1983, miniboy7a, miniboy7, miniboy7, miniboy7, driver_device, 0, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 2)", MACHINE_NO_COCKTAIL, layout_miniboy7 ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1983, miniboy7, 0, miniboy7, miniboy7, miniboy7_state, 0, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 1)", MACHINE_NO_COCKTAIL, layout_miniboy7 ) +GAMEL( 1983, miniboy7a, miniboy7, miniboy7, miniboy7, miniboy7_state, 0, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 2)", MACHINE_NO_COCKTAIL, layout_miniboy7 ) diff --git a/src/mame/drivers/minicom.cpp b/src/mame/drivers/minicom.cpp index a1695237b4a..e094f8dffba 100644 --- a/src/mame/drivers/minicom.cpp +++ b/src/mame/drivers/minicom.cpp @@ -225,7 +225,7 @@ DRIVER_INIT_MEMBER( minicom_state, minicom ) { } -static MACHINE_CONFIG_START( minicom, minicom_state ) +static MACHINE_CONFIG_START( minicom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I87C52, XTAL_10MHz) /*FIX-ME: verify the correct clock frequency */ MCFG_CPU_IO_MAP(i87c52_io) @@ -249,6 +249,6 @@ ROM_START( mcom4_02 ) ROM_LOAD( "ultratec_minicom_iv_20020419.rom", 0x0000, 0x2000, CRC(99b6cc35) SHA1(32577005bf02042f893c8880f8ce5b3d8a5f55f9) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1997, minicom, 0, 0, minicom, 0, minicom_state, minicom, "Ultratec", "Minicom IV (1997-08-11)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) /* fw release data: 11th Aug 1997 */ -COMP( 2002, mcom4_02, 0, 0, minicom, 0, minicom_state, minicom, "Ultratec", "Minicom IV (2002-04-19)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) /* fw release data: 19th Apr 2002 */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1997, minicom, 0, 0, minicom, 0, minicom_state, minicom, "Ultratec", "Minicom IV (1997-08-11)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) // fw release data: 11th Aug 1997 +COMP( 2002, mcom4_02, 0, 0, minicom, 0, minicom_state, minicom, "Ultratec", "Minicom IV (2002-04-19)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) // fw release data: 19th Apr 2002 diff --git a/src/mame/drivers/miniforce.cpp b/src/mame/drivers/miniforce.cpp index 1c194060602..6e73d8390a4 100644 --- a/src/mame/drivers/miniforce.cpp +++ b/src/mame/drivers/miniforce.cpp @@ -173,7 +173,7 @@ SLOT_INTERFACE_END /* * Machine configuration */ -MACHINE_CONFIG_START (miniforce, miniforce_state) +MACHINE_CONFIG_START (miniforce) // MCFG_CPU_PROGRAM_MAP (miniforce_mem) MCFG_VME_DEVICE_ADD("vme") MCFG_VME_SLOT_ADD ("vme", 1, miniforce_vme_cards, "fccpu21") @@ -191,5 +191,5 @@ ROM_START(miniforce) ROM_END /* Drivers TODO: setup distinct miniforce machine configurations */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP (1987, miniforce, 0, 0, miniforce, miniforce, driver_device, 0, "Force Computers", "miniFORCE", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP (1987, miniforce, 0, 0, miniforce, miniforce, miniforce_state, 0, "Force Computers", "miniFORCE", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER) diff --git a/src/mame/drivers/minitel_2_rpic.cpp b/src/mame/drivers/minitel_2_rpic.cpp new file mode 100644 index 00000000000..723fef8f52b --- /dev/null +++ b/src/mame/drivers/minitel_2_rpic.cpp @@ -0,0 +1,449 @@ +// license:BSD-3-Clause +// copyright-holders: Jean-Francois DEL NERO +/*************************************************************************** + + Minitel 2 + + The Minitel is a small, on-line computer/Videotex terminal with multi-services that + can be connected to any French telephone line. This terminal was widely used in France + during the 80's and 90's. + + There are several modeles and version. Most of them are based on a mcu from the 8051 family + and a EF9345 like semi graphic video chip. + + The current implementation is an Minitel 2 from "La RADIOTECHNIQUE PORTENSEIGNE" / RPIC (Philips) + You can found more informations about this hardware there : + http://hxc2001.free.fr/minitel + + What is implemented and working : + + - Main MCU + - Video output + - Keyboard + + What is not yet implemented : + + - Modem and sound output. + - The rear serial port. + - Parameters I2C 24C02 EEPROM. + + The original firmware and the experimental demo rom are currently both working. + + Please note the current special function keys assignation : + + F1 -> Suite + F2 -> Retour + F3 -> Envoi + F4 -> Repetition + F5 -> TEL + F6 -> Guide + F7 -> Sommaire + F8 -> Connexion/Fin + F9 -> Fonction + F10-> ON / OFF + + With the official ROM you need to press F10 to switch on the CRT. + +****************************************************************************/ + +#include "emu.h" + +#include "cpu/mcs51/mcs51.h" +#include "video/ef9345.h" + +#include "screen.h" +#include "softlist.h" + +#include "logmacro.h" + +// IO expander latch usage definitions +enum +{ + CTRL_REG_DTMF = 0x02, + CTRL_REG_MCBC = 0x04, + CTRL_REG_OPTO = 0x08, + CTRL_REG_RELAY = 0x10, + CTRL_REG_CRTON = 0x20 +}; + +// 80C32 Port IO usage definitions +enum +{ + PORT_1_KBSERIN = 0x01, + PORT_1_MDM_DCD = 0x02, + PORT_1_MDM_PRD = 0x04, + PORT_1_MDM_TXD = 0x08, + PORT_1_MDM_RTS = 0x10, + PORT_1_KBLOAD = 0x20, + PORT_1_SCL = 0x40, + PORT_1_SDA = 0x80 +}; + +class minitel_state : public driver_device +{ +public: + minitel_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_ts9347(*this, "ts9347") + , m_palette(*this, "palette") + , m_io_kbd(*this, "Y%u", 0) + { + } + + required_device m_maincpu; + required_device m_ts9347; + required_device m_palette; + + TIMER_DEVICE_CALLBACK_MEMBER(minitel_scanline); + + DECLARE_WRITE8_MEMBER ( port_w ); + DECLARE_READ8_MEMBER ( port_r ); + + DECLARE_WRITE8_MEMBER ( dev_crtl_reg_w ); + DECLARE_READ8_MEMBER ( dev_keyb_ser_r ); + + DECLARE_READ8_MEMBER ( ts9347_io_r ); + DECLARE_WRITE8_MEMBER ( ts9347_io_w ); + +protected: + required_ioport_array<16> m_io_kbd; + virtual void machine_start() override; + + char port0, port1, port2, port3; + + int keyboard_para_ser; + unsigned char keyboard_x_row_reg; + + unsigned char last_ctrl_reg; +}; + +void minitel_state::machine_start() +{ + m_palette->set_pen_color( 0, 0, 0, 0); + m_palette->set_pen_color( 1, 86, 86, 86); + m_palette->set_pen_color( 2, 172, 172, 172); + m_palette->set_pen_color( 3, 255, 255, 255); + m_palette->set_pen_color( 4, 44, 44, 44); + m_palette->set_pen_color( 5, 86, 86, 86); + m_palette->set_pen_color( 6, 172, 172, 172); + m_palette->set_pen_color( 7, 255, 255, 255); +} + +WRITE8_MEMBER(minitel_state::port_w) +{ + LOG("port_w: write %02X to PORT (offset=%02X)\n", data, offset); + + switch(offset| 0x20000) + { + case MCS51_PORT_P0: + port0 = data; + break; + case MCS51_PORT_P1: + + if( (port1 ^ data) & PORT_1_KBSERIN ) + { + LOG("PORT_1_KBSERIN : %d \n", data & PORT_1_KBSERIN ); + } + + if( (port1 ^ data) & PORT_1_MDM_DCD ) + { + LOG("PORT_1_MDM_DCD : %d \n", data & PORT_1_MDM_DCD ); + } + + if( (port1 ^ data) & PORT_1_MDM_PRD ) + { + LOG("PORT_1_MDM_PRD : %d \n", data & PORT_1_MDM_PRD ); + } + + if( (port1 ^ data) & PORT_1_MDM_TXD ) + { + LOG("PORT_1_MDM_TXD : %d \n", data & PORT_1_MDM_TXD ); + } + + if( (port1 ^ data) & PORT_1_MDM_RTS ) + { + LOG("PORT_1_MDM_RTS : %d \n", data & PORT_1_MDM_RTS ); + } + + if( (port1 ^ data) & PORT_1_KBLOAD ) + { + LOG("PORT_1_KBLOAD : %d PC:0x%x\n", data & PORT_1_KBLOAD,m_maincpu->pc() ); + + if(data & PORT_1_KBLOAD) + keyboard_para_ser = 1; + else + keyboard_para_ser = 0; + } + + if( (port1 ^ data) & PORT_1_SCL ) + { + LOG("PORT_1_SCL : %d \n", data & PORT_1_SCL ); + } + + if( (port1 ^ data) & PORT_1_SDA ) + { + LOG("PORT_1_SDA : %d \n", data & PORT_1_SDA ); + } + + port1=data; + break; + + case MCS51_PORT_P2: + port2=data; + break; + + case MCS51_PORT_P3: + port3=data; + break; + } +} + +READ8_MEMBER(minitel_state::port_r) +{ + LOG("port_r: read PORT (offset=%02X) %x\n", offset,m_maincpu->pc()); + + switch(offset | 0x20000) + { + case MCS51_PORT_P0: + LOG("port_r: read %02X from PORT0\n", port0); + return port0; + case MCS51_PORT_P1: + LOG("port_r: read %02X from PORT1 - Keyboard -> %x\n", port1,((keyboard_x_row_reg>>7)&1)); + return ( (port1&0xFE) | ((keyboard_x_row_reg>>7)&1) ) ; + case MCS51_PORT_P2: + LOG("port_r: read %02X from PORT2\n", port2); + return port2; + case MCS51_PORT_P3: + LOG("port_r: read %02X from PORT3\n", port3); + return port3; + } + return 0; +} + +WRITE8_MEMBER(minitel_state::dev_crtl_reg_w) +{ + if( last_ctrl_reg != data) + { + LOG("minitel_state::hw_ctrl_reg : %x %x\n",offset, data); + + if( (last_ctrl_reg ^ data) & CTRL_REG_DTMF ) + { + LOG("CTRL_REG_DTMF : %d \n", data & CTRL_REG_DTMF ); + } + + if( (last_ctrl_reg ^ data) & CTRL_REG_MCBC ) + { + LOG("CTRL_REG_MCBC : %d \n", data & CTRL_REG_MCBC ); + } + + if( (last_ctrl_reg ^ data) & CTRL_REG_OPTO ) + { + LOG("CTRL_REG_OPTO : %d \n", data & CTRL_REG_OPTO ); + } + + if( (last_ctrl_reg ^ data) & CTRL_REG_RELAY ) + { + LOG("CTRL_REG_RELAY : %d \n", data & CTRL_REG_RELAY ); + } + + if( (last_ctrl_reg ^ data) & CTRL_REG_CRTON ) + { + LOG("CTRL_REG_CRTON : %d \n", data & CTRL_REG_CRTON ); + } + } + + last_ctrl_reg = data; +} + +READ8_MEMBER(minitel_state::dev_keyb_ser_r) +{ + LOG("minitel_state::keyb read : %x\n",offset); + + if ( keyboard_para_ser ) + { + // load the 4014 with the keyboard row state + keyboard_x_row_reg = m_io_kbd[(offset>>8)&0xF]->read(); + LOG("4014 Load : 0x%.2X 0x%.2X\n",(offset>>8)&0xF,keyboard_x_row_reg); + } + else + { + //shift the keyboard register... + keyboard_x_row_reg = keyboard_x_row_reg << 1; + } + + return 0xFF; +} + +READ8_MEMBER ( minitel_state::ts9347_io_r ) +{ + return m_ts9347->data_r(space, offset, 0xff); +} + +WRITE8_MEMBER ( minitel_state::ts9347_io_w ) +{ + LOG("minitel_state::ts9347_io_w : %x %x\n",offset, data); + + m_ts9347->data_w(space, offset, data, 0xff); +} + +TIMER_DEVICE_CALLBACK_MEMBER(minitel_state::minitel_scanline) +{ + m_ts9347->update_scanline((uint16_t)param); +} + +static ADDRESS_MAP_START( mem_prg, AS_PROGRAM, 8, minitel_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mem_io, AS_IO, 8, minitel_state ) + AM_RANGE(0x2000, 0x3fff) AM_READWRITE(dev_keyb_ser_r, dev_crtl_reg_w) + /* ts9347 */ + AM_RANGE(0x4000, 0x5ffF) AM_READWRITE(ts9347_io_r, ts9347_io_w) + AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READWRITE(port_r, port_w) +ADDRESS_MAP_END + +/* Input ports */ +static INPUT_PORTS_START( minitel2 ) + PORT_START("Y0") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('-') + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Suite") PORT_CODE(KEYCODE_F1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Retour") PORT_CODE(KEYCODE_F2) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') + + PORT_START("Y1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Connexion/Fin") PORT_CODE(KEYCODE_F8) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Fonction") PORT_CODE(KEYCODE_F9) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT) // Right maj + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) // Left maj + + PORT_START("Y2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') + + PORT_START("Y3") + + PORT_START("Y4") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Envoi") PORT_CODE(KEYCODE_F3) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Repetition") PORT_CODE(KEYCODE_F4) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') + + PORT_START("Y5") + + PORT_START("Y6") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('?') + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Tel") PORT_CODE(KEYCODE_F5) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') + + PORT_START("Y7") + + PORT_START("Y8") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR(']') + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BS") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BackS Delete") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(DEL)) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') + + PORT_START("Y9") + + PORT_START("Y10") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('*') + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('#') + + PORT_START("Y11") + + PORT_START("Y12") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("On/Off") PORT_CODE(KEYCODE_F10) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') + + PORT_START("Y13") + + PORT_START("Y14") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('\'') + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('[') + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Guide") PORT_CODE(KEYCODE_F6) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Sommaire") PORT_CODE(KEYCODE_F7) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') + + PORT_START("Y15") + +INPUT_PORTS_END + +static MACHINE_CONFIG_START( minitel2 ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", I80C32, XTAL_14_31818MHz) //verified on pcb + MCFG_CPU_PROGRAM_MAP(mem_prg) + MCFG_CPU_IO_MAP(mem_io) + + MCFG_DEVICE_ADD("ts9347", TS9347, 0) + MCFG_EF9345_PALETTE("palette") + MCFG_TIMER_DRIVER_ADD_SCANLINE("minitel_sl", minitel_state, minitel_scanline, "screen", 0, 10) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_UPDATE_DEVICE("ts9347", ts9347_device, screen_update) + MCFG_SCREEN_SIZE(512, 312) + MCFG_SCREEN_VISIBLE_AREA(2, 512-10, 0, 278-1) + MCFG_PALETTE_ADD("palette", 8+1) + +MACHINE_CONFIG_END + +ROM_START( minitel2 ) + + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) + ROM_DEFAULT_BIOS("FT_BV4") + + ROM_SYSTEM_BIOS(0, "FT_BV4", "Minitel 2 ROM BV4") + ROMX_LOAD( "MINITEL2_BV4.BIN", 0x0000, 0x8000, CRC(8844A0A7) SHA1(D3E9079B080DBCEE27AD870EC6C39AC42E7DEACF), ROM_BIOS(1) ) + + ROM_SYSTEM_BIOS(1, "DEMOV1", "Minitel 2 Demo") + ROMX_LOAD( "demo_minitel.bin", 0x0000, 0x8000, CRC(607F2482) SHA1(7965EDBEF68E45D09DC67A4684DA56003EFF6328), ROM_BIOS(2) ) + + ROM_REGION( 0x4000, "ts9347", 0 ) + ROM_LOAD( "charset.rom", 0x0000, 0x2000, BAD_DUMP CRC(b2f49eb3) SHA1(d0ef530be33bfc296314e7152302d95fdf9520fc) ) // from dcvg5k +ROM_END + +COMP( 1989, minitel2, 0, 0, minitel2, minitel2, minitel_state, 0, "Philips", "Minitel 2", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/minivadr.cpp b/src/mame/drivers/minivadr.cpp index b2e11eb42d6..c6ce4e7eca5 100644 --- a/src/mame/drivers/minivadr.cpp +++ b/src/mame/drivers/minivadr.cpp @@ -105,7 +105,7 @@ static INPUT_PORTS_START( minivadr ) INPUT_PORTS_END -static MACHINE_CONFIG_START( minivadr, minivadr_state ) +static MACHINE_CONFIG_START( minivadr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,24000000 / 6) /* 4 MHz ? */ @@ -136,4 +136,4 @@ ROM_START( minivadr ) ROM_END -GAME( 1990, minivadr, 0, minivadr, minivadr, driver_device, 0, ROT0, "Taito Corporation", "Mini Vaders", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +GAME( 1990, minivadr, 0, minivadr, minivadr, minivadr_state, 0, ROT0, "Taito Corporation", "Mini Vaders", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/mirage.cpp b/src/mame/drivers/mirage.cpp index 2a977a668f6..a8beb19edd7 100644 --- a/src/mame/drivers/mirage.cpp +++ b/src/mame/drivers/mirage.cpp @@ -284,7 +284,7 @@ void miragemj_state::machine_reset() m_mux_data = 0; } -static MACHINE_CONFIG_START( mirage, miragemj_state ) +static MACHINE_CONFIG_START( mirage ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 28000000/2) @@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( mirage, miragemj_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(miragemj_state, screen_update_mirage) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", mirage) @@ -331,10 +331,10 @@ static MACHINE_CONFIG_START( mirage, miragemj_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki_bgm", 2000000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki_bgm", 2000000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki_sfx", 1000000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki_sfx", 1000000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END diff --git a/src/mame/drivers/mirax.cpp b/src/mame/drivers/mirax.cpp index ff0a166a23b..d95f34d3adb 100644 --- a/src/mame/drivers/mirax.cpp +++ b/src/mame/drivers/mirax.cpp @@ -474,7 +474,7 @@ INTERRUPT_GEN_MEMBER(mirax_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( mirax, mirax_state ) +static MACHINE_CONFIG_START( mirax ) MCFG_CPU_ADD("maincpu", Z80, 12000000/4) // ceramic potted module, encrypted z80 MCFG_CPU_PROGRAM_MAP(mirax_main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", mirax_state, vblank_irq) @@ -588,5 +588,5 @@ DRIVER_INIT_MEMBER(mirax_state,mirax) m_flipscreen_y = 0; } -GAME( 1985, mirax, 0, mirax, mirax, mirax_state, mirax, ROT90, "Current Technologies", "Mirax (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, mirax, 0, mirax, mirax, mirax_state, mirax, ROT90, "Current Technologies", "Mirax (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, miraxa, mirax, mirax, miraxa, mirax_state, mirax, ROT90, "Current Technologies", "Mirax (set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/missb2.cpp b/src/mame/drivers/missb2.cpp index b0dea93a3c0..63b24d5ad9d 100644 --- a/src/mame/drivers/missb2.cpp +++ b/src/mame/drivers/missb2.cpp @@ -31,20 +31,23 @@ class missb2_state : public bublbobl_state { public: missb2_state(const machine_config &mconfig, device_type type, const char *tag) - : bublbobl_state(mconfig, type, tag), - m_bgvram(*this, "bgvram"), - m_bgpalette(*this, "bgpalette") - { } + : bublbobl_state(mconfig, type, tag) + , m_bgvram(*this, "bgvram") + , m_bgpalette(*this, "bgpalette") + { } - required_shared_ptr m_bgvram; - required_device m_bgpalette; DECLARE_WRITE8_MEMBER(missb2_bg_bank_w); DECLARE_WRITE_LINE_MEMBER(irqhandler); DECLARE_DRIVER_INIT(missb2); DECLARE_MACHINE_START(missb2); DECLARE_MACHINE_RESET(missb2); uint32_t screen_update_missb2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + +protected: void configure_banks(); + + required_shared_ptr m_bgvram; + required_device m_bgpalette; }; @@ -437,7 +440,7 @@ MACHINE_RESET_MEMBER(missb2_state,missb2) m_sound_status = 0; } -static MACHINE_CONFIG_START( missb2, missb2_state ) +static MACHINE_CONFIG_START( missb2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_XTAL/4) // 6 MHz @@ -483,7 +486,7 @@ static MACHINE_CONFIG_START( missb2, missb2_state ) MCFG_YM3526_IRQ_HANDLER(WRITELINE(missb2_state, irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) MACHINE_CONFIG_END @@ -581,4 +584,4 @@ DRIVER_INIT_MEMBER(missb2_state,missb2) /* Game Drivers */ GAME( 1996, missb2, 0, missb2, missb2, missb2_state, missb2, ROT0, "Alpha Co.", "Miss Bubble II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, bublpong, missb2, bublpong, missb2, missb2_state, missb2, ROT0, "Top Ltd.", "Bubble Pong Pong", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, bublpong, missb2, bublpong, missb2, missb2_state, missb2, ROT0, "Top Ltd.", "Bubble Pong Pong", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/missile.cpp b/src/mame/drivers/missile.cpp index 49196586e38..3b84b23e051 100644 --- a/src/mame/drivers/missile.cpp +++ b/src/mame/drivers/missile.cpp @@ -1134,7 +1134,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( missile, missile_state ) +static MACHINE_CONFIG_START( missile ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/8) @@ -1485,17 +1485,17 @@ DRIVER_INIT_MEMBER(missile_state,missilem) * *************************************/ -GAME( 1980, missile, 0, missile, missile, driver_device, 0, ROT0, "Atari", "Missile Command (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, missile2, missile, missile, missile, driver_device, 0, ROT0, "Atari", "Missile Command (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, missile1, missile, missile, missile, driver_device, 0, ROT0, "Atari", "Missile Command (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, missile, 0, missile, missile, missile_state, 0, ROT0, "Atari", "Missile Command (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, missile2, missile, missile, missile, missile_state, 0, ROT0, "Atari", "Missile Command (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, missile1, missile, missile, missile, missile_state, 0, ROT0, "Atari", "Missile Command (rev 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, suprmatk, missile, missile, suprmatk, missile_state, suprmatk, ROT0, "Atari / General Computer Corporation", "Super Missile Attack (for rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, suprmatkd,missile, missile, suprmatk, driver_device, 0, ROT0, "Atari / General Computer Corporation", "Super Missile Attack (not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, suprmatkd,missile, missile, suprmatk, missile_state, 0, ROT0, "Atari / General Computer Corporation", "Super Missile Attack (not encrypted)", MACHINE_SUPPORTS_SAVE ) /* the following bootleg has extremely similar program ROMs to missile1, but has different unknown sound hardware and 2 more ROMs */ -GAME( 1981, missilea, missile, missilea, missile, driver_device, 0, ROT0, "bootleg (Ugames)", "Missile Attack", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, missilea, missile, missilea, missile, missile_state, 0, ROT0, "bootleg (Ugames)", "Missile Attack", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) /* the following bootlegs are on different hardware and don't work */ -GAME( 1980, mcombat, missile, missileb, missileb, driver_device, 0, ROT0, "bootleg (Videotron)", "Missile Combat (Videotron bootleg, set 1)", MACHINE_NOT_WORKING ) -GAME( 1980, mcombata, missile, missileb, missileb, driver_device, 0, ROT0, "bootleg (Videotron)", "Missile Combat (Videotron bootleg, set 2)", MACHINE_NOT_WORKING ) -GAME( 1980, mcombats, missile, missileb, missileb, driver_device, 0, ROT0, "bootleg (Sidam)", "Missile Combat (Sidam bootleg)", MACHINE_NOT_WORKING ) -GAME( 2005, missilem, missile, missilea, missileb, missile_state, missilem, ROT0, "hack (Braze Technologies)", "Missile Command Multigame", MACHINE_NOT_WORKING ) +GAME( 1980, mcombat, missile, missileb, missileb, missile_state, 0, ROT0, "bootleg (Videotron)", "Missile Combat (Videotron bootleg, set 1)", MACHINE_NOT_WORKING ) +GAME( 1980, mcombata, missile, missileb, missileb, missile_state, 0, ROT0, "bootleg (Videotron)", "Missile Combat (Videotron bootleg, set 2)", MACHINE_NOT_WORKING ) +GAME( 1980, mcombats, missile, missileb, missileb, missile_state, 0, ROT0, "bootleg (Sidam)", "Missile Combat (Sidam bootleg)", MACHINE_NOT_WORKING ) +GAME( 2005, missilem, missile, missilea, missileb, missile_state, missilem, ROT0, "hack (Braze Technologies)", "Missile Command Multigame", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/mitchell.cpp b/src/mame/drivers/mitchell.cpp index 162e20c7eb5..2f1ba30e072 100644 --- a/src/mame/drivers/mitchell.cpp +++ b/src/mame/drivers/mitchell.cpp @@ -17,7 +17,7 @@ TODO: - understand what bits 0 and 3 of input port 0x05 are - + - correct sound clocks for the MSM5205 bootlegs ****************************************************************************** Pang @@ -331,13 +331,13 @@ static ADDRESS_MAP_START( mitchell_map, AS_PROGRAM, 8, mitchell_state ) AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r,pang_paletteram_w) /* Banked palette RAM */ AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r,pang_colorram_w) AM_SHARE("colorram") /* Attribute RAM */ AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r,pang_videoram_w) AM_SHARE("videoram")/* Banked char / OBJ RAM */ - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("ram") /* Work RAM */ + AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */ ADDRESS_MAP_END static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, mitchell_state ) AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("ram") /* Work RAM */ + AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */ ADDRESS_MAP_END static ADDRESS_MAP_START( mitchell_io_map, AS_IO, 8, mitchell_state ) @@ -363,7 +363,7 @@ static ADDRESS_MAP_START( spangbl_map, AS_PROGRAM, 8, mitchell_state ) AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r, pang_paletteram_w) /* Banked palette RAM */ AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r, pang_colorram_w) AM_SHARE("colorram")/* Attribute RAM */ AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r, pang_videoram_w) AM_SHARE("videoram") /* Banked char / OBJ RAM */ - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("ram") /* Work RAM */ + AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */ ADDRESS_MAP_END WRITE8_MEMBER(mitchell_state::sound_command_w) @@ -1163,7 +1163,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mitchell_state::mitchell_irq) } } -static MACHINE_CONFIG_START( mgakuen, mitchell_state ) +static MACHINE_CONFIG_START( mgakuen ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* probably same clock as the other mitchell hardware games */ @@ -1195,7 +1195,7 @@ static MACHINE_CONFIG_START( mgakuen, mitchell_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* probably same clock as the other mitchell hardware games */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* probably same clock as the other mitchell hardware games */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_16MHz/4) /* probably same clock as the other mitchell hardware games */ @@ -1203,7 +1203,7 @@ static MACHINE_CONFIG_START( mgakuen, mitchell_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pang, mitchell_state ) +static MACHINE_CONFIG_START( pang ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz/2) /* verified on pcb */ @@ -1236,7 +1236,7 @@ static MACHINE_CONFIG_START( pang, mitchell_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ADD("ymsnd",YM2413, XTAL_16MHz/4) /* verified on pcb */ @@ -1288,7 +1288,7 @@ static MACHINE_CONFIG_DERIVED( spangbl, pangnv ) MCFG_DEVICE_REMOVE("scantimer") - MCFG_CPU_ADD("audiocpu", Z80, 8000000) + MCFG_CPU_ADD("audiocpu", Z80, 4000000) // Z80A CPU; clock unknown MCFG_CPU_PROGRAM_MAP(spangbl_sound_map) MCFG_GFXDECODE_MODIFY("gfxdecode", spangbl) @@ -1296,9 +1296,9 @@ static MACHINE_CONFIG_DERIVED( spangbl, pangnv ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_DEVICE_REMOVE("oki") - MCFG_SOUND_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(mitchell_state, spangbl_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 4KHz 4-bit */ + MCFG_SOUND_ADD("msm", MSM5205, 384000) // clock and prescaler unknown + MCFG_MSM5205_VCLK_CB(WRITELINE(mitchell_state, spangbl_adpcm_int)) // controls music as well as ADCPM rate + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_DEVICE_ADD("adpcm_select", LS157, 0) @@ -1313,7 +1313,7 @@ static MACHINE_CONFIG_DERIVED( pangba, spangbl ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mstworld, mitchell_state ) +static MACHINE_CONFIG_START( mstworld ) /* basic machine hardware */ /* it doesn't glitch with the clock speed set to 4x normal, however this is incorrect.. @@ -1352,12 +1352,12 @@ static MACHINE_CONFIG_START( mstworld, mitchell_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 990000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 990000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( marukin, mitchell_state ) +static MACHINE_CONFIG_START( marukin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* verified on pcb */ @@ -1387,7 +1387,7 @@ static MACHINE_CONFIG_START( marukin, mitchell_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_16MHz/4) /* verified on pcb */ @@ -1412,7 +1412,7 @@ Vsync is 59.09hz */ -static MACHINE_CONFIG_START( pkladiesbl, mitchell_state ) +static MACHINE_CONFIG_START( pkladiesbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */ @@ -1442,7 +1442,7 @@ static MACHINE_CONFIG_START( pkladiesbl, mitchell_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* It should be a OKIM5205 with a 384khz resonator */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* It should be a OKIM5205 with a 384khz resonator */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("ymsnd", YM2413, 3750000) /* verified on pcb, read the comments */ @@ -1807,6 +1807,44 @@ ROM_START( pangba ) ROM_LOAD( "pang.10", 0x010000, 0x10000, CRC(082151ee) SHA1(0857b9f7430e0fc6217eafbaf008ff9da8e7a493) ) ROM_END +ROM_START( pangbb ) + ROM_REGION( 2*0x50000, "maincpu", 0 ) + ROM_LOAD( "3", 0x50000, 0x08000, CRC(2548534f) SHA1(c67964e1d0b51ea7bb62685055dee1910e9f0fb9) ) + ROM_CONTINUE( 0x00000, 0x08000 ) + ROM_LOAD( "2", 0x60000, 0x04000, CRC(8167b646) SHA1(db131cb53e81abd070db83721752a8f5473afbb9) ) + ROM_CONTINUE( 0x10000, 0x04000 ) + ROM_CONTINUE( 0x64000, 0x04000 ) + ROM_CONTINUE( 0x14000, 0x04000 ) + ROM_CONTINUE( 0x68000, 0x04000 ) + ROM_CONTINUE( 0x18000, 0x04000 ) + ROM_CONTINUE( 0x6c000, 0x04000 ) + ROM_CONTINUE( 0x1c000, 0x04000 ) + ROM_LOAD( "1", 0x70000, 0x04000, CRC(5c3afca2) SHA1(130c801495d83e2336b8c5b04ca168e76e9e0da8) ) + ROM_CONTINUE( 0x20000, 0x04000 ) + ROM_CONTINUE( 0x74000, 0x04000 ) + ROM_CONTINUE( 0x24000, 0x04000 ) + + ROM_REGION( 0x20000, "audiocpu", 0 ) /* Sound Z80 + M5205(?) samples */ + ROM_LOAD( "24", 0x00000, 0x10000, CRC(09c43210) SHA1(79b5aed2c5d6d9110129885e8979c1f13b7b8aac) ) // Same music as pangba, but arranged for YM2413 instead of YM3812 + + ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT | ROMREGION_ERASEFF ) + ROM_LOAD16_BYTE( "14", 0x000001, 0x10000, CRC(c90095ee) SHA1(bf380f289eb42030a9f911aa5f697ba76f5723db) ) + ROM_LOAD16_BYTE( "6", 0x000000, 0x10000, CRC(c0133cf3) SHA1(07916f7ce6bbaea75b68f5d1d2cb4486825fc397) ) + ROM_LOAD16_BYTE( "13", 0x020001, 0x10000, CRC(a49e98ec) SHA1(8a3d13bd755b58b0bc1d1497363409a1eeade129) ) + ROM_LOAD16_BYTE( "5", 0x020000, 0x10000, CRC(5804ae3e) SHA1(33de9aea7aa201aa650b0b6c5347713bf10cc13d) ) + + ROM_LOAD16_BYTE( "16", 0x080001, 0x10000, CRC(bc508935) SHA1(1a11144b563befc11015d75e3867c07329ee6f32) ) + ROM_LOAD16_BYTE( "8", 0x080000, 0x10000, CRC(53a99bb6) SHA1(ffb75c5541d7c1478f05717b2cfa4bfe9b4654cd) ) + ROM_LOAD16_BYTE( "15", 0x0a0001, 0x10000, CRC(bf5c09b9) SHA1(f66a901292b190aa39dc2460363307e94c358d4d) ) + ROM_LOAD16_BYTE( "7", 0x0a0000, 0x10000, CRC(8b718670) SHA1(c22005a665a9e0bcfc3ddbc22ca4a2a261224ce1) ) + + ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) + ROM_LOAD( "11", 0x020000, 0x10000, CRC(07191732) SHA1(7de03ddb07b2afad311b9ed5c84e04bef62d0050) ) + ROM_LOAD( "9", 0x030000, 0x10000, CRC(6496be82) SHA1(9c7ef4c6c3a0361f3118339a0c63b0923045d6c3) ) + ROM_LOAD( "12", 0x000000, 0x10000, CRC(fa247a04) SHA1(b5cab5f65eb3af3deeea6afba955056ca51f39af) ) + ROM_LOAD( "10", 0x010000, 0x10000, CRC(082151ee) SHA1(0857b9f7430e0fc6217eafbaf008ff9da8e7a493) ) +ROM_END + ROM_START( cworld ) ROM_REGION( 0x50000, "maincpu", 0 ) ROM_LOAD( "cw05.bin", 0x00000, 0x08000, CRC(d3c1723d) SHA1(b67f63e39f4301909c967555222820b54e98a205) ) @@ -2249,8 +2287,6 @@ DRIVER_INIT_MEMBER(mitchell_state,pangb) { m_input_type = 0; bootleg_decode(); - if (m_nvram != nullptr) - m_nvram->set_base(&m_dummy_nvram, sizeof(m_dummy_nvram)); /* for pangba */ } DRIVER_INIT_MEMBER(mitchell_state,cworld) { @@ -2265,27 +2301,23 @@ DRIVER_INIT_MEMBER(mitchell_state,hatena) DRIVER_INIT_MEMBER(mitchell_state,spang) { m_input_type = 3; - m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80); /* NVRAM */ configure_banks(spang_decode); } DRIVER_INIT_MEMBER(mitchell_state,spangbl) { m_input_type = 3; - m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80); /* NVRAM */ bootleg_decode(); } DRIVER_INIT_MEMBER(mitchell_state,spangj) { m_input_type = 3; - m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80); /* NVRAM */ configure_banks(spangj_decode); } DRIVER_INIT_MEMBER(mitchell_state,sbbros) { m_input_type = 3; - m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80); /* NVRAM */ configure_banks(sbbros_decode); } DRIVER_INIT_MEMBER(mitchell_state,qtono1) @@ -2329,13 +2361,11 @@ DRIVER_INIT_MEMBER(mitchell_state,marukin) DRIVER_INIT_MEMBER(mitchell_state,block) { m_input_type = 2; - m_nvram->set_base(&memregion("maincpu")->base()[0xff80], 0x80); /* NVRAM */ configure_banks(block_decode); } DRIVER_INIT_MEMBER(mitchell_state,blockbl) { m_input_type = 2; - m_nvram->set_base(&memregion("maincpu")->base()[0xff80], 0x80); /* NVRAM */ bootleg_decode(); } @@ -2404,14 +2434,15 @@ GAME( 1989, bbros, pang, pang, pang, mitchell_state, pang, GAME( 1989, pompingw, pang, pang, pang, mitchell_state, pang, ROT0, "Mitchell", "Pomping World (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, pangb, pang, pang, pang, mitchell_state, pangb, ROT0, "bootleg", "Pang (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, pangbold, pang, pang, pang, mitchell_state, pangb, ROT0, "bootleg", "Pang (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pangba, pang, pangba, pang, mitchell_state, pangb, ROT0, "bootleg", "Pang (bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pangba, pang, pangba, pang, mitchell_state, pangb, ROT0, "bootleg", "Pang (bootleg, set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1989, pangb2, pang, pang, pang, mitchell_state, pangb, ROT0, "bootleg", "Pang (bootleg, set 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pangbb, pang, spangbl, pang, mitchell_state, pangb, ROT0, "bootleg", "Pang (bootleg, set 5)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1989, cworld, 0, pang, qtono1, mitchell_state, cworld, ROT0, "Capcom", "Capcom World (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, hatena, 0, pang, qtono1, mitchell_state, hatena, ROT0, "Capcom", "Adventure Quiz 2 - Hatena? no Daibouken (Japan 900228)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, spang, 0, pangnv, pang, mitchell_state, spang, ROT0, "Mitchell", "Super Pang (World 900914)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, sbbros, spang, pangnv, pang, mitchell_state, sbbros, ROT0, "Mitchell (Capcom license)", "Super Buster Bros. (USA 901001)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, spangj, spang, pangnv, pang, mitchell_state, spangj, ROT0, "Mitchell", "Super Pang (Japan 901023)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, spangbl, spang, spangbl, spangbl, mitchell_state, spangbl, ROT0, "bootleg", "Super Pang (World 900914, bootleg)", MACHINE_SUPPORTS_SAVE ) // different sound hardware +GAME( 1990, spangbl, spang, spangbl, spangbl, mitchell_state, spangbl, ROT0, "bootleg", "Super Pang (World 900914, bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // different sound hardware GAME( 1994, mstworld, 0, mstworld, mstworld, mitchell_state, mstworld, ROT0, "bootleg (TCH)", "Monsters World (bootleg of Super Pang)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1990, marukin, 0, marukin, marukin, mitchell_state, marukin, ROT0, "Yuga", "Super Marukin-Ban (Japan 901017)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, qtono1, 0, pang, qtono1, mitchell_state, qtono1, ROT0, "Capcom", "Quiz Tonosama no Yabou (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mits680b.cpp b/src/mame/drivers/mits680b.cpp index b7dac966cc9..cd3c008ab58 100644 --- a/src/mame/drivers/mits680b.cpp +++ b/src/mame/drivers/mits680b.cpp @@ -39,14 +39,17 @@ public: { } - required_device m_maincpu; - required_device m_terminal; DECLARE_READ8_MEMBER(terminal_status_r); DECLARE_READ8_MEMBER(terminal_r); DECLARE_READ8_MEMBER(status_check_r); - DECLARE_WRITE8_MEMBER(kbd_put); - uint8_t m_term_data; + void kbd_put(u8 data); + +protected: virtual void machine_reset() override; + + required_device m_maincpu; + required_device m_terminal; + uint8_t m_term_data; }; READ8_MEMBER( mits680b_state::status_check_r ) @@ -87,19 +90,19 @@ void mits680b_state::machine_reset() m_term_data = 0; } -WRITE8_MEMBER( mits680b_state::kbd_put ) +void mits680b_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( mits680b, mits680b_state ) +static MACHINE_CONFIG_START( mits680b ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6800, XTAL_1MHz / 2) MCFG_CPU_PROGRAM_MAP(mits680b_mem) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mits680b_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(mits680b_state, kbd_put)) /* acia */ //MCFG_ACIA6551_ADD("acia") @@ -113,5 +116,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1976, mits680b, 0, 0, mits680b, mits680b, driver_device, 0, "MITS", "Altair 680b", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1976, mits680b, 0, 0, mits680b, mits680b, mits680b_state, 0, "MITS", "Altair 680b", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/mjkjidai.cpp b/src/mame/drivers/mjkjidai.cpp index f964372558d..9a0f8ce44d6 100644 --- a/src/mame/drivers/mjkjidai.cpp +++ b/src/mame/drivers/mjkjidai.cpp @@ -300,7 +300,7 @@ void mjkjidai_state::machine_reset() m_adpcm_pos = m_adpcm_end = 0; } -static MACHINE_CONFIG_START( mjkjidai, mjkjidai_state ) +static MACHINE_CONFIG_START( mjkjidai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,10000000/2) /* 5 MHz ??? */ @@ -333,7 +333,7 @@ static MACHINE_CONFIG_START( mjkjidai, mjkjidai_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(mjkjidai_state, adpcm_int)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S64_4B) /* 6kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* 6kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -372,4 +372,4 @@ ROM_START( mjkjidai ) ROM_END -GAME( 1986, mjkjidai, 0, mjkjidai, mjkjidai, driver_device, 0, ROT0, "Sanritsu", "Mahjong Kyou Jidai (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, mjkjidai, 0, mjkjidai, mjkjidai, mjkjidai_state, 0, ROT0, "Sanritsu", "Mahjong Kyou Jidai (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mjsenpu.cpp b/src/mame/drivers/mjsenpu.cpp index f2f7e99987b..3e423d318cf 100644 --- a/src/mame/drivers/mjsenpu.cpp +++ b/src/mame/drivers/mjsenpu.cpp @@ -454,7 +454,7 @@ following clocks are on the PCB */ -static MACHINE_CONFIG_START( mjsenpu, mjsenpu_state ) +static MACHINE_CONFIG_START( mjsenpu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", E132XT, 27000000*2) /* ?? Mhz */ @@ -480,7 +480,7 @@ static MACHINE_CONFIG_START( mjsenpu, mjsenpu_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) /* 1 Mhz? */ + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) /* 1 Mhz? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END diff --git a/src/mame/drivers/mjsister.cpp b/src/mame/drivers/mjsister.cpp index 8d31a66a739..3ef65322117 100644 --- a/src/mame/drivers/mjsister.cpp +++ b/src/mame/drivers/mjsister.cpp @@ -83,6 +83,8 @@ public: protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + + emu_timer *m_dac_timer; }; @@ -204,7 +206,7 @@ TIMER_CALLBACK_MEMBER(mjsister_state::dac_callback) m_dac->write(DACROM[(m_dac_bank * 0x10000 + m_dac_adr++) & 0x1ffff]); if (((m_dac_adr & 0xff00 ) >> 8) != m_dac_adr_e) - timer_set(attotime::from_hz(MCLK) * 1024, TIMER_DAC); + m_dac_timer->adjust(attotime::from_hz(MCLK) * 1024); else m_dac_busy = 0; } @@ -444,6 +446,8 @@ void mjsister_state::machine_start() membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x8000); + m_dac_timer = timer_alloc(TIMER_DAC); + save_item(NAME(m_dac_busy)); save_item(NAME(m_flip_screen)); save_item(NAME(m_video_enable)); @@ -479,7 +483,7 @@ void mjsister_state::machine_reset() } -static MACHINE_CONFIG_START( mjsister, mjsister_state ) +static MACHINE_CONFIG_START( mjsister ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MCLK/2) /* 6.000 MHz */ @@ -543,4 +547,4 @@ ROM_END * *************************************/ -GAME( 1986, mjsister, 0, mjsister, mjsister, driver_device, 0, ROT0, "Toaplan", "Mahjong Sisters (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, mjsister, 0, mjsister, mjsister, mjsister_state, 0, ROT0, "Toaplan", "Mahjong Sisters (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mk1.cpp b/src/mame/drivers/mk1.cpp index b70db2cd727..f1905c2817d 100644 --- a/src/mame/drivers/mk1.cpp +++ b/src/mame/drivers/mk1.cpp @@ -174,7 +174,7 @@ F3853_INTERRUPT_REQ_CB(mk1_state::mk1_interrupt) m_maincpu->set_input_line(F8_INPUT_LINE_INT_REQ, level ? ASSERT_LINE : CLEAR_LINE); } -static MACHINE_CONFIG_START( mk1, mk1_state ) +static MACHINE_CONFIG_START( mk1 ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", F8, MAIN_CLOCK ) /* MK3850 */ MCFG_CPU_PROGRAM_MAP(mk1_mem) @@ -205,5 +205,5 @@ ROM_END ***************************************************************************/ // seams to be developed by mostek (MK) -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS( 1979, ccmk1, 0, 0, mk1, mk1, driver_device, 0, "Novag", "Chess Champion MK I", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1979, ccmk1, 0, 0, mk1, mk1, mk1_state, 0, "Novag", "Chess Champion MK I", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/mk14.cpp b/src/mame/drivers/mk14.cpp index dff0ff8119b..bf7e7692b27 100644 --- a/src/mame/drivers/mk14.cpp +++ b/src/mame/drivers/mk14.cpp @@ -188,7 +188,7 @@ void mk14_state::machine_reset() { } -static MACHINE_CONFIG_START( mk14, mk14_state ) +static MACHINE_CONFIG_START( mk14 ) /* basic machine hardware */ // IC1 1SP-8A/600 (8060) SC/MP Microprocessor MCFG_CPU_ADD("maincpu", INS8060, XTAL_4_433619MHz) @@ -225,5 +225,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, mk14, 0, 0, mk14, mk14, driver_device, 0, "Science of Cambridge", "MK-14", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1977, mk14, 0, 0, mk14, mk14, mk14_state, 0, "Science of Cambridge", "MK-14", 0 ) diff --git a/src/mame/drivers/mk2.cpp b/src/mame/drivers/mk2.cpp index df887a44e7a..90d9e57c026 100644 --- a/src/mame/drivers/mk2.cpp +++ b/src/mame/drivers/mk2.cpp @@ -186,7 +186,7 @@ WRITE8_MEMBER( mk2_state::mk2_write_b ) } -static MACHINE_CONFIG_START( mk2, mk2_state ) +static MACHINE_CONFIG_START( mk2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6504, 1000000) MCFG_CPU_PROGRAM_MAP(mk2_mem) @@ -223,6 +223,6 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -CONS( 1979, ccmk2, 0, 0, mk2, mk2, driver_device, 0, "Novag", "Chess Champion MK II", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS( 1979, ccmk2, 0, 0, mk2, mk2, mk2_state, 0, "Novag", "Chess Champion MK II", 0 ) // second design sold (same computer/program?) diff --git a/src/mame/drivers/mk85.cpp b/src/mame/drivers/mk85.cpp index 67cb4db34b8..b8a73ef8662 100644 --- a/src/mame/drivers/mk85.cpp +++ b/src/mame/drivers/mk85.cpp @@ -64,7 +64,7 @@ uint32_t mk85_state::screen_update_mk85(screen_device &screen, bitmap_ind16 &bit return 0; } -static MACHINE_CONFIG_START( mk85, mk85_state ) +static MACHINE_CONFIG_START( mk85 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", K1801VM2, XTAL_4MHz) MCFG_T11_INITIAL_MODE(0) @@ -91,5 +91,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, mk85, 0, 0, mk85, mk85, driver_device, 0, "Elektronika", "MK-85", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1986, mk85, 0, 0, mk85, mk85, mk85_state, 0, "Elektronika", "MK-85", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/mk90.cpp b/src/mame/drivers/mk90.cpp index 356be54115e..7ce2c4eabbb 100644 --- a/src/mame/drivers/mk90.cpp +++ b/src/mame/drivers/mk90.cpp @@ -67,7 +67,7 @@ uint32_t mk90_state::screen_update_mk90(screen_device &screen, bitmap_ind16 &bit return 0; } -static MACHINE_CONFIG_START( mk90, mk90_state ) +static MACHINE_CONFIG_START( mk90 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", K1801VM2, XTAL_4MHz) MCFG_T11_INITIAL_MODE(0x8000) @@ -99,5 +99,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1988, mk90, 0, 0, mk90, mk90, driver_device, 0, "Elektronika", "MK-90", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1988, mk90, 0, 0, mk90, mk90, mk90_state, 0, "Elektronika", "MK-90", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/mkit09.cpp b/src/mame/drivers/mkit09.cpp index f7f3b626d84..b38fe364f34 100644 --- a/src/mame/drivers/mkit09.cpp +++ b/src/mame/drivers/mkit09.cpp @@ -189,7 +189,7 @@ WRITE8_MEMBER( mkit09_state::pb_w ) } -static MACHINE_CONFIG_START( mkit09, mkit09_state ) +static MACHINE_CONFIG_START( mkit09 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6809E, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(mkit09_mem) @@ -215,7 +215,7 @@ static MACHINE_CONFIG_START( mkit09, mkit09_state ) MCFG_CASSETTE_ADD( "cassette" ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mkit09a, mkit09_state ) +static MACHINE_CONFIG_START( mkit09a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6809E, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(mkit09a_mem) @@ -254,6 +254,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, mkit09, 0, 0, mkit09, mkit09, driver_device, 0, "Multitech", "Microkit09", MACHINE_NO_SOUND_HW ) -COMP( 1983, mkit09a, mkit09, 0, mkit09a, mkit09, driver_device, 0, "Multitech", "Microkit09 (Alt version)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1983, mkit09, 0, 0, mkit09, mkit09, mkit09_state, 0, "Multitech", "Microkit09", MACHINE_NO_SOUND_HW ) +COMP( 1983, mkit09a, mkit09, 0, mkit09a, mkit09, mkit09_state, 0, "Multitech", "Microkit09 (Alt version)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/mlanding.cpp b/src/mame/drivers/mlanding.cpp index 3e2f436ddff..2a037cba84c 100644 --- a/src/mame/drivers/mlanding.cpp +++ b/src/mame/drivers/mlanding.cpp @@ -765,7 +765,8 @@ static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 16, mlanding_state ) AM_RANGE(0x060000, 0x060001) AM_WRITE(dsp_control_w) AM_RANGE(0x1c0000, 0x1c3fff) AM_RAMBANK("dma_ram") AM_RANGE(0x1c4000, 0x1cffff) AM_RAM AM_SHARE("sub_com_ram") - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("dot_ram") + AM_RANGE(0x200000, 0x2007ff) AM_RAM + AM_RANGE(0x200800, 0x203fff) AM_RAM AM_SHARE("dot_ram") ADDRESS_MAP_END @@ -781,7 +782,7 @@ static ADDRESS_MAP_START( dsp_map_prog, AS_PROGRAM, 16, mlanding_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( dsp_map_data, AS_DATA, 16, mlanding_state ) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("dot_ram") + AM_RANGE(0x0400, 0x1fff) AM_RAM AM_SHARE("dot_ram") ADDRESS_MAP_END /************************************* @@ -921,7 +922,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( mlanding, mlanding_state ) +static MACHINE_CONFIG_START( mlanding ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) // Appears to be 68000P8 in PCB photo @@ -976,11 +977,11 @@ static MACHINE_CONFIG_START( mlanding, mlanding_state ) MCFG_SOUND_ADD("msm1", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(mlanding_state, msm5205_1_vck)) // VCK function - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) // 8 kHz, 4-bit + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8 kHz, 4-bit MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ADD("msm2", MSM5205, 384000) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) // Slave mode, 4-bit + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) // Slave mode, 4-bit MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -1030,4 +1031,4 @@ ROM_END * *************************************/ -GAME( 1987, mlanding, 0, mlanding, mlanding, driver_device, 0, ROT0, "Taito America Corporation", "Midnight Landing (Germany)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, mlanding, 0, mlanding, mlanding, mlanding_state, 0, ROT0, "Taito America Corporation", "Midnight Landing (Germany)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mmagic.cpp b/src/mame/drivers/mmagic.cpp index 52548495a86..ccb0d8be365 100644 --- a/src/mame/drivers/mmagic.cpp +++ b/src/mame/drivers/mmagic.cpp @@ -269,7 +269,7 @@ void mmagic_state::machine_start() // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( mmagic, mmagic_state ) +static MACHINE_CONFIG_START( mmagic ) // basic machine hardware MCFG_CPU_ADD("maincpu", I8085A, XTAL_6_144MHz) // NEC D8085A MCFG_CPU_PROGRAM_MAP(mmagic_mem) @@ -314,5 +314,5 @@ ROM_END // GAME DRIVERS //************************************************************************** -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS -GAME( 1979, mmagic, 0, mmagic, mmagic, driver_device, 0, ROT270, "Nintendo", "Monkey Magic", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS +GAME( 1979, mmagic, 0, mmagic, mmagic, mmagic_state, 0, ROT270, "Nintendo", "Monkey Magic", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/mmd1.cpp b/src/mame/drivers/mmd1.cpp index 890b7c39c13..a566a5af8ee 100644 --- a/src/mame/drivers/mmd1.cpp +++ b/src/mame/drivers/mmd1.cpp @@ -413,10 +413,10 @@ READ8_MEMBER( mmd1_state::mmd2_kbd_r ) WRITE8_MEMBER( mmd1_state::mmd2_status_callback ) { // operate the HALT LED - output().set_value("led_halt", ~data & I8085_STATUS_HLTA); + output().set_value("led_halt", ~data & i8080_cpu_device::STATUS_HLTA); // operate the HOLD LED - this should connect to the HLDA pin, // but it isn't emulated, using WO instead (whatever that does). - output().set_value("led_hold", data & I8085_STATUS_WO); + output().set_value("led_hold", data & i8080_cpu_device::STATUS_WO); } WRITE_LINE_MEMBER( mmd1_state::mmd2_inte_callback ) @@ -475,7 +475,7 @@ We preset all banks here, so that bankswitching will incur no speed penalty. membank("bank8")->configure_entry(2, &p_ram[0xd800]); } -static MACHINE_CONFIG_START( mmd1, mmd1_state ) +static MACHINE_CONFIG_START( mmd1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, 6750000 / 9) MCFG_CPU_PROGRAM_MAP(mmd1_mem) @@ -487,7 +487,7 @@ static MACHINE_CONFIG_START( mmd1, mmd1_state ) MCFG_DEFAULT_LAYOUT(layout_mmd1) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mmd2, mmd1_state ) +static MACHINE_CONFIG_START( mmd2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, 6750000 / 9) MCFG_CPU_PROGRAM_MAP(mmd2_mem) @@ -526,6 +526,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1976, mmd1, 0, 0, mmd1, mmd1, driver_device, 0, "E&L Instruments Inc", "MMD-1", MACHINE_NO_SOUND_HW) -COMP( 1976, mmd2, mmd1, 0, mmd2, mmd2, mmd1_state, mmd2, "E&L Instruments Inc", "MMD-2", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1976, mmd1, 0, 0, mmd1, mmd1, mmd1_state, 0, "E&L Instruments Inc", "MMD-1", MACHINE_NO_SOUND_HW ) +COMP( 1976, mmd2, mmd1, 0, mmd2, mmd2, mmd1_state, mmd2, "E&L Instruments Inc", "MMD-2", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/mmm.cpp b/src/mame/drivers/mmm.cpp index 1f567dced93..1ebf30fab19 100644 --- a/src/mame/drivers/mmm.cpp +++ b/src/mame/drivers/mmm.cpp @@ -35,7 +35,7 @@ static INPUT_PORTS_START( mmm ) INPUT_PORTS_END -static MACHINE_CONFIG_START( mmm, mmm_state ) +static MACHINE_CONFIG_START( mmm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,2000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(mmm_map) @@ -51,4 +51,4 @@ ROM_START( mmm_ldip ) ROM_END -GAME( 198?, mmm_ldip, 0, mmm, mmm, driver_device, 0, ROT0, "Maygay", "Lucky Dip (Maygay)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 198?, mmm_ldip, 0, mmm, mmm, mmm_state, 0, ROT0, "Maygay", "Lucky Dip (Maygay)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp index 50c2cfda0e1..a2f4db88480 100644 --- a/src/mame/drivers/mmodular.cpp +++ b/src/mame/drivers/mmodular.cpp @@ -1281,7 +1281,7 @@ static MACHINE_CONFIG_FRAGMENT ( chess_common ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( polgar, polgar_state ) +static MACHINE_CONFIG_START( polgar ) MCFG_CPU_ADD("maincpu",M65C02,4915200) MCFG_CPU_PROGRAM_MAP(polgar_mem) MCFG_QUANTUM_TIME(attotime::from_hz(60)) @@ -1295,7 +1295,7 @@ static MACHINE_CONFIG_START( polgar, polgar_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( alm32, polgar_state ) +static MACHINE_CONFIG_START( alm32 ) MCFG_CPU_ADD("maincpu", M68020, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(alm32_mem) MCFG_MACHINE_START_OVERRIDE(polgar_state,van32) @@ -1324,7 +1324,7 @@ static MACHINE_CONFIG_DERIVED( milano, polgar ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( monteciv, polgar_state ) +static MACHINE_CONFIG_START( monteciv ) MCFG_CPU_ADD("maincpu",M65C02,8000000) MCFG_CPU_PROGRAM_MAP( monteciv_mem ) MCFG_MACHINE_START_OVERRIDE(polgar_state, polgar ) @@ -1344,7 +1344,7 @@ static MACHINE_CONFIG_DERIVED( megaiv, monteciv ) MCFG_CPU_PROGRAM_MAP(megaiv_mem) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( van16, polgar_state ) +static MACHINE_CONFIG_START( van16 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(van16_mem) MCFG_MACHINE_START_OVERRIDE(polgar_state,van16) @@ -1362,7 +1362,7 @@ static MACHINE_CONFIG_DERIVED( alm16, van16 ) MCFG_CPU_PROGRAM_MAP(alm16_mem) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( van32, polgar_state ) +static MACHINE_CONFIG_START( van32 ) MCFG_CPU_ADD("maincpu", M68020, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(van32_mem) MCFG_MACHINE_START_OVERRIDE(polgar_state,van32) @@ -1375,7 +1375,7 @@ static MACHINE_CONFIG_START( van32, polgar_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gen32, polgar_state ) +static MACHINE_CONFIG_START( gen32 ) MCFG_CPU_ADD("maincpu", M68030, XTAL_33_333MHz) MCFG_CPU_PROGRAM_MAP(gen32_mem) MCFG_MACHINE_START_OVERRIDE(polgar_state,van32) @@ -1390,7 +1390,7 @@ static MACHINE_CONFIG_START( gen32, polgar_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bpl32, polgar_state ) +static MACHINE_CONFIG_START( bpl32 ) MCFG_CPU_ADD("maincpu", M68020, XTAL_24_576MHz) MCFG_CPU_PROGRAM_MAP(bpl32_mem) MCFG_MACHINE_START_OVERRIDE(polgar_state,van32) @@ -1508,22 +1508,22 @@ DRIVER_INIT_MEMBER(polgar_state,polgar) led_status=0; } -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ - CONS( 1986, polgar, 0, 0, polgar, polgar, polgar_state, polgar, "Hegener & Glaser", "Mephisto Polgar Schachcomputer", MACHINE_NOT_WORKING | MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK) - CONS( 1988, alm16, van16, 0, alm16, van16, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Almeria 68000", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1988, alm32, van16, 0, alm32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Alimera 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1989, academy, 0, 0, academy, academy, driver_device, 0, "Hegener & Glaser", "Mephisto Academy Schachcomputer", MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1989, megaiv, 0, 0, megaiv, megaiv, driver_device, 0, "Hegener & Glaser", "Mephisto Mega IV Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1989, milano, polgar, 0, milano, polgar, polgar_state, polgar, "Hegener & Glaser", "Mephisto Milano Schachcomputer", MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) -//CONS( 1989, montec4, 0, 0, monteciv, monteciv, driver_device, 0, "Hegener & Glaser", "Mephisto Monte Carlo IV", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1990, lyon16, van16, 0, alm16, van16, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Lyon 68000", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1990, lyon32, van16, 0, alm32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Lyon 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1990, monteciv, 0, 0, monteciv, monteciv, driver_device, 0, "Hegener & Glaser", "Mephisto Monte Carlo IV LE Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1991, van16, 0, 0, van16, van16, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Vancouver 68000", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1991, van32, van16, 0, van32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Vancouver 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1993, gen32, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.00", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1993, gen32_41, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.01", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1994, berlinp, van16, 0, bpl32, bpl32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1996, bpl32, van16, 0, bpl32, bpl32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro London Upgrade V5.00", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1996, lond020, van16, 0, van32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto London 68020 32 Bit", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1996, lond030, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 London Upgrade V5.00", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ + CONS( 1986, polgar, 0, 0, polgar, polgar, polgar_state, polgar, "Hegener & Glaser", "Mephisto Polgar Schachcomputer", MACHINE_NOT_WORKING | MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK) + CONS( 1988, alm16, van16, 0, alm16, van16, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Almeria 68000", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1988, alm32, van16, 0, alm32, van32, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Alimera 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1989, academy, 0, 0, academy, academy, polgar_state, 0, "Hegener & Glaser", "Mephisto Academy Schachcomputer", MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1989, megaiv, 0, 0, megaiv, megaiv, polgar_state, 0, "Hegener & Glaser", "Mephisto Mega IV Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1989, milano, polgar, 0, milano, polgar, polgar_state, polgar, "Hegener & Glaser", "Mephisto Milano Schachcomputer", MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) +// CONS( 1989, montec4, 0, 0, monteciv, monteciv, polgar_state, 0, "Hegener & Glaser", "Mephisto Monte Carlo IV", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1990, lyon16, van16, 0, alm16, van16, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Lyon 68000", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1990, lyon32, van16, 0, alm32, van32, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Lyon 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1990, monteciv, 0, 0, monteciv, monteciv, polgar_state, 0, "Hegener & Glaser", "Mephisto Monte Carlo IV LE Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1991, van16, 0, 0, van16, van16, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Vancouver 68000", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1991, van32, van16, 0, van32, van32, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Vancouver 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1993, gen32, van16, 0, gen32, gen32, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.00", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1993, gen32_41, van16, 0, gen32, gen32, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.01", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1994, berlinp, van16, 0, bpl32, bpl32, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1996, bpl32, van16, 0, bpl32, bpl32, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro London Upgrade V5.00", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1996, lond020, van16, 0, van32, van32, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto London 68020 32 Bit", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1996, lond030, van16, 0, gen32, gen32, polgar_state, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 London Upgrade V5.00", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/mod8.cpp b/src/mame/drivers/mod8.cpp index 1ddeccc7eb0..007efd6ed27 100644 --- a/src/mame/drivers/mod8.cpp +++ b/src/mame/drivers/mod8.cpp @@ -69,7 +69,7 @@ public: DECLARE_WRITE8_MEMBER(out_w); DECLARE_WRITE8_MEMBER(tty_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(tty_r); IRQ_CALLBACK_MEMBER(mod8_irq_callback); private: @@ -134,13 +134,13 @@ void mod8_state::machine_reset() { } -WRITE8_MEMBER( mod8_state::kbd_put ) +void mod8_state::kbd_put(u8 data) { m_tty_key_data = data ^ 0xff; m_maincpu->set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( mod8, mod8_state ) +static MACHINE_CONFIG_START( mod8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8008, 800000) MCFG_CPU_PROGRAM_MAP(mod8_mem) @@ -149,7 +149,7 @@ static MACHINE_CONFIG_START( mod8, mod8_state ) /* video hardware */ MCFG_DEVICE_ADD(TELEPRINTER_TAG, TELEPRINTER, 0) - MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(WRITE8(mod8_state, kbd_put)) + MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(PUT(mod8_state, kbd_put)) MACHINE_CONFIG_END @@ -167,5 +167,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1974, mod8, 0, 0, mod8, mod8, driver_device, 0, "Microsystems International Ltd", "MOD-8", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1974, mod8, 0, 0, mod8, mod8, mod8_state, 0, "Microsystems International Ltd", "MOD-8", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/model1.cpp b/src/mame/drivers/model1.cpp index a10f23e3bd0..411311e8692 100644 --- a/src/mame/drivers/model1.cpp +++ b/src/mame/drivers/model1.cpp @@ -633,6 +633,7 @@ Notes: #include "emu.h" #include "includes/model1.h" +#include "machine/clock.h" #include "machine/nvram.h" #include "speaker.h" @@ -735,6 +736,7 @@ IRQ_CALLBACK_MEMBER(model1_state::irq_callback) void model1_state::irq_init() { m_maincpu->set_input_line(0, CLEAR_LINE); + m_m1uart->write_cts(0); } TIMER_DEVICE_CALLBACK_MEMBER(model1_state::model1_interrupt) @@ -749,8 +751,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(model1_state::model1_interrupt) { irq_raise(m_sound_irq); - m_m1audio->check_fifo_irq(); - if (m_m1comm != nullptr) m_m1comm->check_vint_irq(); } @@ -850,47 +850,6 @@ WRITE16_MEMBER(model1_state::mr2_w) logerror("MW 10[r10], %f (%x)\n", *(float *)(m_mr2+0x1f10/2), space.device().safe_pc()); } -READ16_MEMBER(model1_state::snd_68k_ready_r) -{ - if (m_m1audio->ready_r(space, 0) == 0) - { - space.device().execute().spin_until_time(attotime::from_usec(40)); - return 0; - } - - return 0xff; -} - -WRITE16_MEMBER(model1_state::snd_latch_to_68k_w) -{ - m_m1audio->write_fifo(data); - - if (data == 0xae) - { - m_snd_cmd_state = 0; - } - - if (m_dsbz80 != nullptr) - { -// printf("%d: %02x (last %02x)\n", m_snd_cmd_state, data, m_last_snd_cmd); - // HACK: on h/w, who filters out commands the DSB shouldn't see? Need a wiring diagram. - if ((m_snd_cmd_state == 2) && (m_last_snd_cmd == 0x50)) - { - m_dsbz80->latch_w(space, 0, data); - } - else // keep in sync but send a "don't care" - { - m_dsbz80->latch_w(space, 0, 0x70); - } - } - - m_last_snd_cmd = data; - m_snd_cmd_state++; - - // give the 68k time to reply - space.device().execute().spin_until_time(attotime::from_usec(40)); -} - static ADDRESS_MAP_START( model1_mem, AS_PROGRAM, 16, model1_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("bank1") @@ -903,12 +862,12 @@ static ADDRESS_MAP_START( model1_mem, AS_PROGRAM, 16, model1_state ) AM_RANGE(0x610000, 0x61ffff) AM_RAM_WRITE(md1_w) AM_SHARE("display_list1") AM_RANGE(0x680000, 0x680003) AM_READWRITE(model1_listctl_r, model1_listctl_w) - AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tile", segas24_tile, tile_r, tile_w) + AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) AM_RANGE(0x720000, 0x720001) AM_WRITENOP // Unknown, always 0 AM_RANGE(0x740000, 0x740001) AM_WRITENOP // Horizontal synchronization register AM_RANGE(0x760000, 0x760001) AM_WRITENOP // Vertical synchronization register AM_RANGE(0x770000, 0x770001) AM_WRITENOP // Video synchronization switch - AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile, char_r, char_w) + AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("palette") AM_RANGE(0x910000, 0x91bfff) AM_RAM AM_SHARE("color_xlat") @@ -923,8 +882,8 @@ static ADDRESS_MAP_START( model1_mem, AS_PROGRAM, 16, model1_state ) AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc40000, 0xc40001) AM_WRITE(snd_latch_to_68k_w) - AM_RANGE(0xc40002, 0xc40003) AM_READ(snd_68k_ready_r) + AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("m1uart", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0xc40002, 0xc40003) AM_DEVREADWRITE8("m1uart", i8251_device, status_r, control_w, 0x00ff) AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(model1_tgp_copro_adr_r, model1_tgp_copro_adr_w) AM_RANGE(0xd20000, 0xd20003) AM_WRITE(model1_tgp_copro_ram_w ) @@ -955,12 +914,12 @@ static ADDRESS_MAP_START( model1_vr_mem, AS_PROGRAM, 16, model1_state ) AM_RANGE(0x610000, 0x61ffff) AM_RAM_WRITE(md1_w) AM_SHARE("display_list1") AM_RANGE(0x680000, 0x680003) AM_READWRITE(model1_listctl_r, model1_listctl_w) - AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tile", segas24_tile, tile_r, tile_w) + AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) AM_RANGE(0x720000, 0x720001) AM_WRITENOP // Unknown, always 0 AM_RANGE(0x740000, 0x740001) AM_WRITENOP // Horizontal synchronization register AM_RANGE(0x760000, 0x760001) AM_WRITENOP // Vertical synchronization register AM_RANGE(0x770000, 0x770001) AM_WRITENOP // Video synchronization switch - AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile, char_r, char_w) + AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("palette") AM_RANGE(0x910000, 0x91bfff) AM_RAM AM_SHARE("color_xlat") @@ -975,8 +934,8 @@ static ADDRESS_MAP_START( model1_vr_mem, AS_PROGRAM, 16, model1_state ) AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc40000, 0xc40001) AM_WRITE(snd_latch_to_68k_w) - AM_RANGE(0xc40002, 0xc40003) AM_READ(snd_68k_ready_r) + AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("m1uart", i8251_device, data_r, data_w, 0x00ff) + AM_RANGE(0xc40002, 0xc40003) AM_DEVREADWRITE8("m1uart", i8251_device, status_r, control_w, 0x00ff) AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(model1_tgp_vr_adr_r, model1_tgp_vr_adr_w) AM_RANGE(0xd20000, 0xd20003) AM_WRITE(model1_vr_tgp_ram_w ) @@ -1152,9 +1111,16 @@ INPUT_PORTS_END ROM_LOAD("opr14745.bin", 0x060000, 0x20000, CRC(4c934d96) SHA1(e3349ece0e47f684d61ad11bfea4a90602287350) ) \ ROM_LOAD("opr14746.bin", 0x080000, 0x20000, CRC(2a266cbd) SHA1(34e047a93459406c22acf4c25089d1a4955f94ca) ) \ ROM_LOAD("opr14747.bin", 0x0a0000, 0x20000, CRC(a4ad5e19) SHA1(7d7ec300eeb9a8de1590011e37108688c092f329) ) \ - ROM_LOAD("opr14748.bin", 0x0c0000, 0x20000, CRC(4a532cb8) SHA1(23280ebbcd6b2bc8a8e643a2d07a58d6598301b8) ) + ROM_LOAD("opr14748.bin", 0x0c0000, 0x20000, CRC(4a532cb8) SHA1(23280ebbcd6b2bc8a8e643a2d07a58d6598301b8) ) \ +\ + /*ROM_REGION32_LE( 0x2000, "315_5571", 0)*/ \ + /*ROM_LOAD("315-5571.bin", 0, 0x2000, CRC(1233db2a) SHA1(06760409d40f3d9117fd3e7c7ab62dfd70aa2a4d) )*/ \ +\ + /*ROM_REGION32_LE( 0x2000, "315_5572", 0)*/ \ + /*ROM_LOAD("315-5572.bin", 0, 0x2000, CRC(0a534a3b) SHA1(b8c988bc414b3ad3cd036ba5a64b5ee04a4758b4) )*/ ROM_START( vf ) + MODEL1_CPU_BOARD ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF ) /* v60 code */ ROM_LOAD16_BYTE( "epr-16082.14", 0x200000, 0x80000, CRC(b23f22ee) SHA1(9fd5b5a5974703a60a54de3d2bce4301bfc0e533) ) /* Rom board with Sega ID# 834-10170 */ @@ -1172,6 +1138,9 @@ ROM_START( vf ) ROM_LOAD16_BYTE( "mpr-16090.12", 0x1300000, 0x80000, CRC(90c76831) SHA1(5a3c25f2a131cfbb2ad067bef1ab7b1c95645d41) ) ROM_LOAD16_BYTE( "mpr-16091.13", 0x1300001, 0x80000, CRC(53115448) SHA1(af798d5b1fcb720d7288a5ac48839d9ace16a2f2) ) + ROM_REGION32_LE( 0x2000, "tgp", 0) + ROM_LOAD("315-5724.bin", 0, 0x2000, NO_DUMP ) + ROM_REGION( 0xc0000, M1AUDIO_CPU_REGION, ROMREGION_BE|ROMREGION_16BIT ) /* 68K code */ ROM_LOAD16_WORD_SWAP( "epr-16120.7", 0x00000, 0x20000, CRC(2bff8378) SHA1(854b08ab983e4e98cb666f2f44de9a6829b1eb52) ) ROM_LOAD16_WORD_SWAP( "epr-16121.8", 0x20000, 0x20000, CRC(ff6723f9) SHA1(53498b8c103745883657dfd6efe27edfd48b356f) ) @@ -1241,16 +1210,19 @@ ROM_START( vr ) ROM_LOAD32_BYTE( "mpr-14901.42", 0x000003, 0x80000, CRC(175b7a9a) SHA1(c86602e771cd49bab425b4ba7926d2f44858bd39) ) ROM_REGION( 0x2000, "tgp", 0 ) /* TGP program rom */ + // The real internal TGP rom + /*ROM_LOAD("315-5573.bin", 0, 0x2000, CRC(ec913af2) SHA1(a18bf6c9d7b35f8b9e513a7d279f13a30b32a961) )*/ + // this is the Daytona TGP program with some modifications needed for Virtua Racing - // the real TGP program is an internal ROM and still needs dumping - ROM_LOAD("vr-tgp.bin", 0x000000, 0x2000, BAD_DUMP CRC(3de33c7f) SHA1(acecc779c9d8fe39ded6c22492be5b7c25fd52db) ) + // Kept here for now to avoid instantly breaking the game until the tgp is up to it + ROM_LOAD("vr-tgp.bin", 0x000000, 0x2000, CRC(3de33c7f) SHA1(acecc779c9d8fe39ded6c22492be5b7c25fd52db) ) ROM_REGION( 0x100, "nvram", 0 ) // default nvram ROM_LOAD( "vr_defaults.nv", 0x000, 0x100, CRC(5ccdc835) SHA1(7e809de470f78fb897b938ca2aee2e12f1c8f3a4) ) ROM_REGION ( 0x10000, "io_board", 0) ROM_LOAD("epr-14869.25", 0x00000, 0x10000, CRC(6187cd7a) SHA1(b65fdd0ad31794a565a0ca4dc67a3f16b329fd71) ) - ROM_LOAD("epr-14869b.25", 0x00000, 0x10000, CRC(b410f22b) SHA1(75c5009ca4d21ebb53d54d4e3fb8aa55a4c74a07) ) + ROM_LOAD("epr-14869b.25", 0x00000, 0x10000, BAD_DUMP CRC(b410f22b) SHA1(75c5009ca4d21ebb53d54d4e3fb8aa55a4c74a07) ) // stray FFs at xx49, xx5F, xxC9, xxDF // there is also epr-14869c in model2 daytona ROM_END @@ -1302,13 +1274,18 @@ ROM_START( vformula ) ROM_LOAD( "epr-15624.17", 0x00000, 0x20000, CRC(9b3ba315) SHA1(0cd0983cc8b2f2d6b41617d0d0a24cc6c188e62a) ) ROM_REGION( 0x2000, "tgp", 0 ) /* TGP program rom */ + // The real internal TGP rom + /*ROM_LOAD("315-5573.bin", 0, 0x2000, CRC(ec913af2) SHA1(a18bf6c9d7b35f8b9e513a7d279f13a30b32a961) )*/ + // this is the Daytona TGP program with some modifications needed for Virtua Racing - // the real TGP program is an internal ROM and still needs dumping - ROM_LOAD("vr-tgp.bin", 0x000000, 0x2000, BAD_DUMP CRC(3de33c7f) SHA1(acecc779c9d8fe39ded6c22492be5b7c25fd52db) ) + // Kept here for now to avoid instantly breaking the game until the tgp is up to it + ROM_LOAD("vr-tgp.bin", 0x000000, 0x2000, CRC(3de33c7f) SHA1(acecc779c9d8fe39ded6c22492be5b7c25fd52db) ) ROM_END ROM_START( swa ) + MODEL1_CPU_BOARD + ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF ) /* v60 code */ ROM_LOAD16_BYTE( "epr-16468.14", 0x200000, 0x80000, CRC(681d03c0) SHA1(4d21e26ce211466d429b84bca69a8147ff31ec6c) ) ROM_LOAD16_BYTE( "epr-16469.15", 0x200001, 0x80000, CRC(6f281f7c) SHA1(6a9179e48d14838bb2a1a3f63fdd3a68ed009e03) ) @@ -1317,6 +1294,9 @@ ROM_START( swa ) ROM_RELOAD( 0x000000, 0x80000 ) ROM_RELOAD( 0x080000, 0x80000 ) + ROM_REGION32_LE( 0x2000, "tgp", 0) + ROM_LOAD("315-5711.bin", 0, 0x2000, NO_DUMP ) + ROM_REGION( 0xc0000, M1AUDIO_CPU_REGION, ROMREGION_BE|ROMREGION_16BIT ) /* 68K code */ ROM_LOAD16_WORD_SWAP( "epr-16470.bin", 0x000000, 0x020000, CRC(7da18cf7) SHA1(bd432d882d217277faee120e2577357a32eb4a6e) ) ROM_RELOAD(0x80000, 0x20000) @@ -1356,6 +1336,8 @@ ROM_END ROM_START( wingwar ) + MODEL1_CPU_BOARD + ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF ) /* v60 code */ ROM_LOAD16_BYTE( "epr-16729.14", 0x200000, 0x80000, CRC(7edec2cc) SHA1(3e423a868ca7c8475fbb5bc1a10526e69d94d865) ) ROM_LOAD16_BYTE( "epr-16730.15", 0x200001, 0x80000, CRC(bab24dee) SHA1(26c95139c1aa7f34b6a5cce39e5bd1dd2ef0dd49) ) @@ -1372,6 +1354,9 @@ ROM_START( wingwar ) ROM_LOAD16_BYTE( "mpr-16734.10", 0x1200000, 0x80000, CRC(f76371c1) SHA1(0ff082db3877383d0dd977dc60c932b725e3d164) ) ROM_LOAD16_BYTE( "mpr-16733.11", 0x1200001, 0x80000, CRC(e105847b) SHA1(8489a6c91fd6d1e9ba81e8eaf36c514da30dccbe) ) + ROM_REGION32_LE( 0x2000, "tgp", 0) + ROM_LOAD("315-5711.bin", 0, 0x2000, NO_DUMP ) + ROM_REGION( 0xc0000, M1AUDIO_CPU_REGION, ROMREGION_BE|ROMREGION_16BIT ) /* 68K code */ ROM_LOAD16_WORD_SWAP("epr-17126.7", 0x000000, 0x20000, CRC(50178e40) SHA1(fb01aecfbe4e90adc997de0d45a63c16ef353b37) ) ROM_LOAD16_WORD_SWAP("epr-16752.8", 0x020000, 0x20000, CRC(6541c48f) SHA1(9341eff160e31a8574b9545fafc1c4059323fa0c) ) @@ -1419,6 +1404,9 @@ ROM_START( wingwaru ) ROM_LOAD16_BYTE( "mpr-16734.10", 0x1200000, 0x80000, CRC(f76371c1) SHA1(0ff082db3877383d0dd977dc60c932b725e3d164) ) ROM_LOAD16_BYTE( "mpr-16733.11", 0x1200001, 0x80000, CRC(e105847b) SHA1(8489a6c91fd6d1e9ba81e8eaf36c514da30dccbe) ) + ROM_REGION32_LE( 0x2000, "tgp", 0) + ROM_LOAD("315-5711.bin", 0, 0x2000, NO_DUMP ) + ROM_REGION( 0xc0000, M1AUDIO_CPU_REGION, ROMREGION_BE|ROMREGION_16BIT ) /* 68K code */ ROM_LOAD16_WORD_SWAP("epr-16751.7", 0x000000, 0x20000, CRC(23ba5ebc) SHA1(b98aab546c5e980baeedbada4e7472eb4c588260) ) ROM_LOAD16_WORD_SWAP("epr-16752.8", 0x020000, 0x20000, CRC(6541c48f) SHA1(9341eff160e31a8574b9545fafc1c4059323fa0c) ) @@ -1450,6 +1438,8 @@ ROM_START( wingwaru ) ROM_END ROM_START( wingwarj ) + MODEL1_CPU_BOARD + ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF ) /* v60 code */ ROM_LOAD16_BYTE( "epr-16729.14", 0x200000, 0x80000, CRC(7edec2cc) SHA1(3e423a868ca7c8475fbb5bc1a10526e69d94d865) ) ROM_LOAD16_BYTE( "epr-16730.15", 0x200001, 0x80000, CRC(bab24dee) SHA1(26c95139c1aa7f34b6a5cce39e5bd1dd2ef0dd49) ) @@ -1466,6 +1456,9 @@ ROM_START( wingwarj ) ROM_LOAD16_BYTE( "mpr-16734.10", 0x1200000, 0x80000, CRC(f76371c1) SHA1(0ff082db3877383d0dd977dc60c932b725e3d164) ) ROM_LOAD16_BYTE( "mpr-16733.11", 0x1200001, 0x80000, CRC(e105847b) SHA1(8489a6c91fd6d1e9ba81e8eaf36c514da30dccbe) ) + ROM_REGION32_LE( 0x2000, "tgp", 0) + ROM_LOAD("315-5711.bin", 0, 0x2000, NO_DUMP ) + ROM_REGION( 0xc0000, M1AUDIO_CPU_REGION, ROMREGION_BE|ROMREGION_16BIT ) /* 68K code */ ROM_LOAD16_WORD_SWAP("epr-16751.7", 0x000000, 0x20000, CRC(23ba5ebc) SHA1(b98aab546c5e980baeedbada4e7472eb4c588260) ) ROM_LOAD16_WORD_SWAP("epr-16752.8", 0x020000, 0x20000, CRC(6541c48f) SHA1(9341eff160e31a8574b9545fafc1c4059323fa0c) ) @@ -1499,6 +1492,8 @@ ROM_END // Dumper's note: As per other R360 games wingwar is just a slightly modified version with 4 roms different on the rom board. ROM_START( wingwar360 ) + MODEL1_CPU_BOARD + ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF ) /* v60 code */ ROM_LOAD16_BYTE( "epr-16729.14", 0x200000, 0x80000, CRC(7edec2cc) SHA1(3e423a868ca7c8475fbb5bc1a10526e69d94d865) ) ROM_LOAD16_BYTE( "epr-16730.15", 0x200001, 0x80000, CRC(bab24dee) SHA1(26c95139c1aa7f34b6a5cce39e5bd1dd2ef0dd49) ) @@ -1515,6 +1510,9 @@ ROM_START( wingwar360 ) ROM_LOAD16_BYTE( "mpr-16734.10", 0x1200000, 0x80000, CRC(f76371c1) SHA1(0ff082db3877383d0dd977dc60c932b725e3d164) ) ROM_LOAD16_BYTE( "mpr-16733.11", 0x1200001, 0x80000, CRC(e105847b) SHA1(8489a6c91fd6d1e9ba81e8eaf36c514da30dccbe) ) + ROM_REGION32_LE( 0x2000, "tgp", 0) + ROM_LOAD("315-5711.bin", 0, 0x2000, NO_DUMP ) + ROM_REGION( 0xc0000, M1AUDIO_CPU_REGION, ROMREGION_BE|ROMREGION_16BIT ) /* 68K code */ ROM_LOAD16_WORD_SWAP("epr-17126.7", 0x000000, 0x20000, CRC(50178e40) SHA1(fb01aecfbe4e90adc997de0d45a63c16ef353b37) ) ROM_LOAD16_WORD_SWAP("epr-16752.8", 0x020000, 0x20000, CRC(6541c48f) SHA1(9341eff160e31a8574b9545fafc1c4059323fa0c) ) @@ -1557,6 +1555,7 @@ ROM_START( wingwar360 ) ROM_END ROM_START( netmerc ) + MODEL1_CPU_BOARD ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF ) /* v60 code */ ROM_LOAD( "epr-18120.ic5", 0xf80000, 0x80000, CRC(de489762) SHA1(4e935f11e844489c5b5dc06439dc7902c4fddc9f) ) /* Rom board with Sega ID# ??? */ @@ -1569,6 +1568,9 @@ ROM_START( netmerc ) ROM_LOAD16_BYTE( "epr-18126.ic10", 0x1200000, 0x80000, CRC(43dc5ca8) SHA1(249ed83b90b0237ceabbed814cd42dc60dc7a174) ) ROM_LOAD16_BYTE( "epr-18127.ic11", 0x1200001, 0x80000, CRC(d307a4ca) SHA1(5555235f740c1b09f6e1587d0fceb35b23d4a8a8) ) + ROM_REGION32_LE( 0x2000, "tgp", 0) + ROM_LOAD("315-5711.bin", 0, 0x2000, NO_DUMP ) + ROM_REGION( 0xc0000, M1AUDIO_CPU_REGION, ROMREGION_BE|ROMREGION_16BIT ) /* 68K code */ ROM_LOAD16_WORD_SWAP( "epr-18121.ic7", 0x00000, 0x80000, CRC(113285b5) SHA1(5d060cee41e8d6a4a918f890c2d169d87dbcad79) ) ROM_RELOAD( 0x80000, 0x20000) // ? @@ -1596,7 +1598,7 @@ ROM_START( netmerc ) ROM_LOAD( "u2", 0x4000, 0x4000, CRC(c589f428) SHA1(98dc0114a5f89636b4e237ed954e19f1cfd186ab) ) ROM_END -static MACHINE_CONFIG_START( model1, model1_state ) +static MACHINE_CONFIG_START( model1 ) MCFG_CPU_ADD("maincpu", V60, 16000000) MCFG_CPU_PROGRAM_MAP(model1_mem) MCFG_CPU_IO_MAP(model1_io) @@ -1615,7 +1617,7 @@ static MACHINE_CONFIG_START( model1, model1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK ) MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/) MCFG_SCREEN_UPDATE_DRIVER(model1_state, screen_update_model1) - MCFG_SCREEN_VBLANK_DRIVER(model1_state, screen_eof_model1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(model1_state, screen_vblank_model1)) MCFG_PALETTE_ADD("palette", 8192) MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) @@ -1623,6 +1625,14 @@ static MACHINE_CONFIG_START( model1, model1_state ) MCFG_VIDEO_START_OVERRIDE(model1_state,model1) MCFG_SEGAM1AUDIO_ADD("m1audio") + MCFG_SEGAM1AUDIO_RXD_HANDLER(DEVWRITELINE("m1uart", i8251_device, write_rxd)) + + MCFG_DEVICE_ADD("m1uart", I8251, 8000000) // uPD71051C, clock unknown + MCFG_I8251_TXD_HANDLER(DEVWRITELINE("m1audio", segam1audio_device, write_txd)) + + MCFG_CLOCK_ADD("m1uart_clock", 500000) // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("m1uart", i8251_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("m1uart", i8251_device, write_rxc)) MCFG_M1COMM_ADD("m1comm") MACHINE_CONFIG_END @@ -1632,9 +1642,14 @@ static MACHINE_CONFIG_DERIVED(swa, model1) MCFG_DSBZ80_ADD(DSBZ80_TAG) MCFG_SOUND_ROUTE(0, "dleft", 1.0) MCFG_SOUND_ROUTE(1, "dright", 1.0) + + // Apparently m1audio has to filter out commands the DSB shouldn't see + MCFG_DEVICE_MODIFY("m1audio") + MCFG_SEGAM1AUDIO_RXD_HANDLER(DEVWRITELINE("m1uart", i8251_device, write_rxd)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE(DSBZ80_TAG, dsbz80_device, write_txd)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( model1_vr, model1_state ) +static MACHINE_CONFIG_START( model1_vr ) MCFG_CPU_ADD("maincpu", V60, 16000000) MCFG_CPU_PROGRAM_MAP(model1_vr_mem) MCFG_CPU_IO_MAP(model1_vr_io) @@ -1659,7 +1674,7 @@ static MACHINE_CONFIG_START( model1_vr, model1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK ) MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/) MCFG_SCREEN_UPDATE_DRIVER(model1_state, screen_update_model1) - MCFG_SCREEN_VBLANK_DRIVER(model1_state, screen_eof_model1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(model1_state, screen_vblank_model1)) MCFG_PALETTE_ADD("palette", 8192) MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) @@ -1667,6 +1682,14 @@ static MACHINE_CONFIG_START( model1_vr, model1_state ) MCFG_VIDEO_START_OVERRIDE(model1_state,model1) MCFG_SEGAM1AUDIO_ADD("m1audio") + MCFG_SEGAM1AUDIO_RXD_HANDLER(DEVWRITELINE("m1uart", i8251_device, write_rxd)) + + MCFG_DEVICE_ADD("m1uart", I8251, 8000000) // uPD71051C, clock unknown + MCFG_I8251_TXD_HANDLER(DEVWRITELINE("m1audio", segam1audio_device, write_txd)) + + MCFG_CLOCK_ADD("m1uart_clock", 500000) // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("m1uart", i8251_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("m1uart", i8251_device, write_rxc)) MCFG_M1COMM_ADD("m1comm") MACHINE_CONFIG_END @@ -1735,12 +1758,12 @@ WRITE16_MEMBER(model1_state::r360_w) } } -GAME( 1993, vf, 0, model1, vf, driver_device, 0, ROT0, "Sega", "Virtua Fighter", MACHINE_IMPERFECT_GRAPHICS ) -GAMEL(1992, vr, 0, model1_vr, vr, driver_device, 0, ROT0, "Sega", "Virtua Racing", MACHINE_IMPERFECT_GRAPHICS, layout_vr ) -GAME( 1993, vformula, vr, model1_vr, vr, driver_device, 0, ROT0, "Sega", "Virtua Formula", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, swa, 0, swa, swa, driver_device, 0, ROT0, "Sega", "Star Wars Arcade", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME( 1994, wingwar, 0, model1, wingwar, driver_device, 0, ROT0, "Sega", "Wing War (World)", MACHINE_NOT_WORKING ) -GAME( 1994, wingwaru, wingwar, model1, wingwar, driver_device, 0, ROT0, "Sega", "Wing War (US)", MACHINE_NOT_WORKING ) -GAME( 1994, wingwarj, wingwar, model1, wingwar, driver_device, 0, ROT0, "Sega", "Wing War (Japan)", MACHINE_NOT_WORKING ) +GAME( 1993, vf, 0, model1, vf, model1_state, 0, ROT0, "Sega", "Virtua Fighter", MACHINE_IMPERFECT_GRAPHICS ) +GAMEL(1992, vr, 0, model1_vr, vr, model1_state, 0, ROT0, "Sega", "Virtua Racing", MACHINE_IMPERFECT_GRAPHICS, layout_vr ) +GAME( 1993, vformula, vr, model1_vr, vr, model1_state, 0, ROT0, "Sega", "Virtua Formula", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, swa, 0, swa, swa, model1_state, 0, ROT0, "Sega", "Star Wars Arcade", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1994, wingwar, 0, model1, wingwar, model1_state, 0, ROT0, "Sega", "Wing War (World)", MACHINE_NOT_WORKING ) +GAME( 1994, wingwaru, wingwar, model1, wingwar, model1_state, 0, ROT0, "Sega", "Wing War (US)", MACHINE_NOT_WORKING ) +GAME( 1994, wingwarj, wingwar, model1, wingwar, model1_state, 0, ROT0, "Sega", "Wing War (Japan)", MACHINE_NOT_WORKING ) GAME( 1994, wingwar360, wingwar, model1, wingwar, model1_state, wingwar360, ROT0, "Sega", "Wing War R360 (US)", MACHINE_NOT_WORKING ) -GAME( 1993, netmerc, 0, model1, vf, driver_device, 0, ROT0, "Sega", "NetMerc?", MACHINE_NOT_WORKING ) +GAME( 1993, netmerc, 0, model1, vf, model1_state, 0, ROT0, "Sega", "NetMerc?", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index e5066ce06f6..8111224e35a 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -122,8 +122,12 @@ #include "cpu/mb86235/mb86235.h" #include "cpu/sharc/sharc.h" #include "cpu/z80/z80.h" +#include "machine/clock.h" +#include "machine/cxd1095.h" #include "machine/eepromser.h" +#include "machine/msm6253.h" #include "machine/nvram.h" +#include "machine/315_5296.h" #include "sound/2612intf.h" #include "video/segaic24.h" #include "speaker.h" @@ -406,6 +410,8 @@ MACHINE_RESET_MEMBER(model2_state,model2_common) m_timers[3] = machine().device("timer3"); for (i=0; i<4; i++) m_timers[i]->reset(); + + m_uart->write_cts(0); } MACHINE_RESET_MEMBER(model2_state,model2o) @@ -1230,59 +1236,37 @@ WRITE32_MEMBER(model2_state::model2_irq_w) /* TODO: rewrite this part. It's a 8251-compatible chip */ READ32_MEMBER(model2_state::model2_serial_r) { - if ((offset == 0) && (mem_mask == 0xffff0000)) + if (offset == 0) { - return 0x00070000; // TxRdy RxRdy (zeroguna also needs bit 4 set) + u32 result = 0; + if (ACCESSING_BITS_0_7 && (offset == 0)) + result |= m_uart->data_r(space, 0); + if (ACCESSING_BITS_16_23 && (offset == 0)) + result |= m_uart->status_r(space, 0) << 16; + return result; } return 0xffffffff; } -WRITE32_MEMBER(model2_state::model2o_serial_w) -{ - if(mem_mask == 0xffff0000) - { - //m_soundack++; - } - if (mem_mask == 0x0000ffff) - { - if (!m_m1audio->ready_r(space, 0)) - { - space.device().execute().spin_until_time(attotime::from_usec(40)); - } - - m_m1audio->write_fifo(data & 0xff); - - // give the 68k time to notice - space.device().execute().spin_until_time(attotime::from_usec(40)); - } -} - WRITE32_MEMBER(model2_state::model2_serial_w) { if (ACCESSING_BITS_0_7 && (offset == 0)) { - if (m_dsbz80 != nullptr) - { - m_dsbz80->latch_w(space, 0, data&0xff); - } + m_uart->data_w(space, 0, data & 0xff); - // for Manx TT DX - if (m_m1audio != nullptr) + if (m_scsp.found()) { - if (!m_m1audio->ready_r(space, 0)) - { - space.device().execute().spin_until_time(attotime::from_usec(40)); - } + m_scsp->midi_in(space, 0, data&0xff, 0); - m_m1audio->write_fifo(data & 0xff); + // give the 68k time to notice + space.device().execute().spin_until_time(attotime::from_usec(40)); } - - m_scsp->midi_in(space, 0, data&0xff, 0); - - // give the 68k time to notice - space.device().execute().spin_until_time(attotime::from_usec(40)); + } + if (ACCESSING_BITS_16_23 && (offset == 0)) + { + m_uart->control_w(space, 0, (data >> 16) & 0xff); } } @@ -1501,12 +1485,12 @@ static ADDRESS_MAP_START( model2_base_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x00f00000, 0x00f0000f) AM_READWRITE(timers_r, timers_w) - AM_RANGE(0x01000000, 0x0100ffff) AM_DEVREADWRITE("tile", segas24_tile, tile32_r, tile32_w) AM_MIRROR(0x110000) + AM_RANGE(0x01000000, 0x0100ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile32_r, tile32_w) AM_MIRROR(0x110000) AM_RANGE(0x01020000, 0x01020003) AM_WRITENOP AM_MIRROR(0x100000) // Unknown, always 0 AM_RANGE(0x01040000, 0x01040003) AM_WRITENOP AM_MIRROR(0x100000) // Horizontal synchronization register AM_RANGE(0x01060000, 0x01060003) AM_WRITENOP AM_MIRROR(0x100000) // Vertical synchronization register AM_RANGE(0x01070000, 0x01070003) AM_WRITENOP AM_MIRROR(0x100000) // Video synchronization switch - AM_RANGE(0x01080000, 0x010fffff) AM_DEVREADWRITE("tile", segas24_tile, char32_r, char32_w) AM_MIRROR(0x100000) + AM_RANGE(0x01080000, 0x010fffff) AM_DEVREADWRITE("tile", segas24_tile_device, char32_r, char32_w) AM_MIRROR(0x100000) AM_RANGE(0x01800000, 0x01803fff) AM_READWRITE16(model2_palette_r,model2_palette_w,0xffffffff) AM_RANGE(0x01810000, 0x0181bfff) AM_RAM AM_SHARE("colorxlat") @@ -1575,7 +1559,7 @@ static ADDRESS_MAP_START( model2o_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w) AM_RANGE(0x00980004, 0x00980007) AM_READ(model2o_fifoctrl_r) AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w) - AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2o_serial_w) + AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w) AM_RANGE(0x12000000, 0x121fffff) AM_RAM_WRITE(model2o_tex_w0) AM_MIRROR(0x200000) AM_SHARE("textureram0") // texture RAM 0 AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1 @@ -1590,7 +1574,7 @@ static ADDRESS_MAP_START( model2o_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x01c00100, 0x01c0010f) AM_READ8(virtuacop_lightgun_r,0x00ff00ff) AM_RANGE(0x01c00110, 0x01c00113) AM_READ8(virtuacop_lightgun_offscreen_r,0x00ff00ff) AM_RANGE(0x01c00200, 0x01c002ff) AM_RAM AM_SHARE("backup2") - AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2o_serial_w ) + AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w) AM_IMPORT_FROM(model2_base_mem) ADDRESS_MAP_END @@ -1615,7 +1599,7 @@ static ADDRESS_MAP_START( model2a_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w) AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w) AM_RANGE(0x00980014, 0x00980017) AM_READ(copro_status_r) - AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w ) + AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w) AM_RANGE(0x12000000, 0x121fffff) AM_RAM_WRITE(model2o_tex_w0) AM_MIRROR(0x200000) AM_SHARE("textureram0") // texture RAM 0 AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1 @@ -1630,7 +1614,7 @@ static ADDRESS_MAP_START( model2a_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x01c00018, 0x01c0001b) AM_READ(hotd_lightgun_r) AM_RANGE(0x01c0001c, 0x01c0001f) AM_READ_PORT("1c0001c") AM_WRITE(analog_2b_w ) AM_RANGE(0x01c00040, 0x01c00043) AM_WRITENOP - AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w ) + AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w) AM_IMPORT_FROM(model2_base_mem) ADDRESS_MAP_END @@ -1652,7 +1636,7 @@ static ADDRESS_MAP_START( model2b_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x00980014, 0x00980017) AM_READ(copro_status_r) //AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_sharc_ctl1_w ) - AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w ) + AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w) AM_RANGE(0x11000000, 0x110fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c) AM_RANGE(0x11100000, 0x111fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c) @@ -1671,7 +1655,7 @@ static ADDRESS_MAP_START( model2b_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x01c00018, 0x01c0001b) AM_READ(hotd_lightgun_r) AM_RANGE(0x01c0001c, 0x01c0001f) AM_READ_PORT("1c0001c") AM_WRITE(analog_2b_w ) AM_RANGE(0x01c00040, 0x01c00043) AM_WRITENOP - AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w ) + AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w) AM_IMPORT_FROM(model2_base_mem) ADDRESS_MAP_END @@ -1687,7 +1671,7 @@ static ADDRESS_MAP_START( model2c_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w) AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w ) AM_RANGE(0x00980014, 0x00980017) AM_READ(copro_status_r) - AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w ) + AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w) AM_RANGE(0x11000000, 0x111fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c) AM_RANGE(0x11200000, 0x113fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c) @@ -2387,7 +2371,7 @@ ADDRESS_MAP_END #define VIDEO_CLOCK XTAL_32MHz /* original Model 2 */ -static MACHINE_CONFIG_START( model2o, model2_state ) +static MACHINE_CONFIG_START( model2o ) MCFG_CPU_ADD("maincpu", I960, 25000000) MCFG_CPU_PROGRAM_MAP(model2o_mem) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model2_state, model2_interrupt, "screen", 0, 1) @@ -2428,12 +2412,69 @@ static MACHINE_CONFIG_START( model2o, model2_state ) MCFG_VIDEO_START_OVERRIDE(model2_state,model2) MCFG_SEGAM1AUDIO_ADD("m1audio") + MCFG_SEGAM1AUDIO_RXD_HANDLER(DEVWRITELINE("uart", i8251_device, write_rxd)) + + MCFG_DEVICE_ADD("uart", I8251, 8000000) // uPD71051C, clock unknown + MCFG_I8251_TXD_HANDLER(DEVWRITELINE("m1audio", segam1audio_device, write_txd)) + + MCFG_CLOCK_ADD("uart_clock", 500000) // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("uart", i8251_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", i8251_device, write_rxc)) MCFG_M2COMM_ADD("m2comm") MACHINE_CONFIG_END +READ8_MEMBER(model2_state::driveio_portg_r) +{ + return m_driveio_comm_data; +} + +READ8_MEMBER(model2_state::driveio_porth_r) +{ + return m_driveio_comm_data; +} + +WRITE8_MEMBER(model2_state::driveio_port_w) +{ +// TODO: hook up to the main CPU +// popmessage("%02x",data); +} + +static ADDRESS_MAP_START( drive_map, AS_PROGRAM, 8, model2_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0xe000, 0xffff) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( drive_io_map, AS_IO, 8, model2_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x00) AM_WRITENOP //watchdog + AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("driveio1", sega_315_5296_device, read, write) + AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("driveio2", sega_315_5296_device, read, write) + AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("driveadc", msm6253_device, d0_r, address_w) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( sj25_0207_01 ) + MCFG_CPU_ADD("drivecpu", Z80, XTAL_8MHz/2) // confirmed + MCFG_CPU_PROGRAM_MAP(drive_map) + MCFG_CPU_IO_MAP(drive_io_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", model2_state, irq0_line_hold) + + MCFG_DEVICE_ADD("driveio1", SEGA_315_5296, 0) // unknown clock + MCFG_315_5296_OUT_PORTD_CB(WRITE8(model2_state, driveio_port_w)) + MCFG_315_5296_IN_PORTG_CB(READ8(model2_state, driveio_portg_r)) + MCFG_315_5296_IN_PORTH_CB(READ8(model2_state, driveio_porth_r)) + + MCFG_DEVICE_ADD("driveio2", SEGA_315_5296, 0) // unknown clock + + MCFG_DEVICE_ADD("driveadc", MSM6253, 0) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( daytona, model2o ) + MCFG_FRAGMENT_ADD(sj25_0207_01) +MACHINE_CONFIG_END + /* 2A-CRX */ -static MACHINE_CONFIG_START( model2a, model2_state ) +static MACHINE_CONFIG_START( model2a ) MCFG_CPU_ADD("maincpu", I960, 25000000) MCFG_CPU_PROGRAM_MAP(model2a_crx_mem) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model2_state, model2_interrupt, "screen", 0, 1) @@ -2482,11 +2523,21 @@ static MACHINE_CONFIG_START( model2a, model2_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) MCFG_SOUND_ROUTE(0, "rspeaker", 2.0) + MCFG_DEVICE_ADD("uart", I8251, 8000000) // uPD71051C, clock unknown + + MCFG_CLOCK_ADD("uart_clock", 500000) // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("uart", i8251_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", i8251_device, write_rxc)) + MCFG_M2COMM_ADD("m2comm") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( manxttdx, model2a ) /* Includes a Model 1 Sound board for additional sounds - Deluxe version only */ MCFG_SEGAM1AUDIO_ADD("m1audio") + MCFG_SEGAM1AUDIO_RXD_HANDLER(DEVWRITELINE("uart", i8251_device, write_rxd)) + + MCFG_DEVICE_MODIFY("uart") + MCFG_I8251_TXD_HANDLER(DEVWRITELINE("m1audio", segam1audio_device, write_txd)) MACHINE_CONFIG_END uint16_t model2_state::crypt_read_callback(uint32_t addr) @@ -2505,49 +2556,12 @@ static MACHINE_CONFIG_DERIVED( model2a_0229, model2a ) // MCFG_SET_5838_READ_CALLBACK(model2_state, crypt_read_callback) MACHINE_CONFIG_END -READ8_MEMBER(model2_state::driveio_port_r) -{ - return m_driveio_comm_data; -} - -WRITE8_MEMBER(model2_state::driveio_port_w) -{ -// TODO: hook up to the main CPU -// popmessage("%02x",data); -} - -READ8_MEMBER(model2_state::driveio_port_str_r) -{ - static const char sega_str[4] = { 'S', 'E', 'G', 'A' }; - - return sega_str[offset]; -} - -static ADDRESS_MAP_START( drive_map, AS_PROGRAM, 8, model2_state ) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -static ADDRESS_MAP_START( drive_io_map, AS_IO, 8, model2_state ) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP //watchdog - AM_RANGE(0x23, 0x23) AM_WRITE(driveio_port_w) - AM_RANGE(0x26, 0x27) AM_READ(driveio_port_r) - AM_RANGE(0x28, 0x2b) AM_READ(driveio_port_str_r) - AM_RANGE(0x40, 0x4f) AM_WRITENOP //Oki M6253 - AM_RANGE(0x80, 0x83) AM_NOP //r/w it during irq -ADDRESS_MAP_END - static MACHINE_CONFIG_DERIVED( srallyc, model2a ) - - MCFG_CPU_ADD("drivecpu", Z80, 16000000/4) //??? - MCFG_CPU_PROGRAM_MAP(drive_map) - MCFG_CPU_IO_MAP(drive_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", model2_state, irq0_line_hold) + MCFG_FRAGMENT_ADD(sj25_0207_01) MACHINE_CONFIG_END /* 2B-CRX */ -static MACHINE_CONFIG_START( model2b, model2_state ) +static MACHINE_CONFIG_START( model2b ) MCFG_CPU_ADD("maincpu", I960, 25000000) MCFG_CPU_PROGRAM_MAP(model2b_crx_mem) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model2_state, model2_interrupt, "screen", 0, 1) @@ -2599,6 +2613,12 @@ static MACHINE_CONFIG_START( model2b, model2_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) MCFG_SOUND_ROUTE(0, "rspeaker", 2.0) + MCFG_DEVICE_ADD("uart", I8251, 8000000) // uPD71051C, clock unknown + + MCFG_CLOCK_ADD("uart_clock", 500000) // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("uart", i8251_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", i8251_device, write_rxc)) + MCFG_M2COMM_ADD("m2comm") MACHINE_CONFIG_END @@ -2614,12 +2634,31 @@ static MACHINE_CONFIG_DERIVED( model2b_0229, model2b ) MACHINE_CONFIG_END +static ADDRESS_MAP_START( rchase2_iocpu_map, AS_PROGRAM, 8, model2_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0x9fff) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( rchase2_ioport_map, AS_IO, 8, model2_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x07) AM_DEVREADWRITE("ioexp", cxd1095_device, read, write) +ADDRESS_MAP_END + +static MACHINE_CONFIG_DERIVED( rchase2, model2b ) + MCFG_CPU_ADD("iocpu", Z80, 4000000) + MCFG_CPU_PROGRAM_MAP(rchase2_iocpu_map) + MCFG_CPU_IO_MAP(rchase2_ioport_map) + + MCFG_DEVICE_ADD("ioexp", CXD1095, 0) +MACHINE_CONFIG_END + + static ADDRESS_MAP_START( copro_tgpx4_map, AS_PROGRAM, 64, model2_state ) AM_RANGE(0x00000000, 0x00007fff) AM_RAM AM_SHARE("tgpx4_program") ADDRESS_MAP_END /* 2C-CRX */ -static MACHINE_CONFIG_START( model2c, model2_state ) +static MACHINE_CONFIG_START( model2c ) MCFG_CPU_ADD("maincpu", I960, 25000000) MCFG_CPU_PROGRAM_MAP(model2c_crx_mem) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model2_state, model2c_interrupt, "screen", 0, 1) @@ -2664,6 +2703,12 @@ static MACHINE_CONFIG_START( model2c, model2_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) MCFG_SOUND_ROUTE(0, "rspeaker", 2.0) + MCFG_DEVICE_ADD("uart", I8251, 8000000) // uPD71051C, clock unknown + + MCFG_CLOCK_ADD("uart_clock", 500000) // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("uart", i8251_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", i8251_device, write_rxc)) + MCFG_M2COMM_ADD("m2comm") MACHINE_CONFIG_END @@ -2671,6 +2716,9 @@ static MACHINE_CONFIG_DERIVED( stcc, model2c ) MCFG_DSBZ80_ADD(DSBZ80_TAG) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_DEVICE_MODIFY("uart") + MCFG_I8251_TXD_HANDLER(DEVWRITELINE(DSBZ80_TAG, dsbz80_device, write_txd)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( model2c_5881, model2c ) @@ -4659,14 +4707,14 @@ ROM_START( rchase2 ) /* Rail Chase 2 Revision A, Model 2B. Sega game ID# 833-118 ROM_LOAD32_WORD("epr-18075a.14", 0x100002, 0x080000, CRC(b82672e4) SHA1(519fdb5a978b6e82989b9841c6b59819f0d417cb) ) ROM_REGION32_LE( 0x2000000, "user1", 0 ) // Data - ROM_LOAD32_WORD("mpr-18037.11", 0x0000000, 0x200000, CRC(dea8f896) SHA1(8eb45e46bd14a2ffbdaac47d381a1ea9b9a03ca2) ) - ROM_LOAD32_WORD("mpr-18038.12", 0x0000002, 0x200000, CRC(441f7709) SHA1(cbfa687839b6cad6a5ace45b44b95c45e4cfab0d) ) - ROM_LOAD32_WORD("mpr-18039.9", 0x0800000, 0x200000, CRC(b98c6f06) SHA1(dd1ff9c682778de1c6c09e7a5cbc95a8149488c4) ) - ROM_LOAD32_WORD("mpr-18040.10", 0x0800002, 0x200000, CRC(0d872667) SHA1(33e56486ec6b953341552b6bc21dc66f6f8aaf74) ) - ROM_LOAD32_WORD("mpr-18041.7", 0x1000000, 0x200000, CRC(e511ab0a) SHA1(c6ea14b3bdefdc59603bd2fc152ac0421fae4d6f) ) - ROM_LOAD32_WORD("mpr-18042.8", 0x1000002, 0x200000, CRC(e9a04159) SHA1(0204ba86af2707bc9e277cac68dd9ef759189c23) ) - ROM_LOAD32_WORD("mpr-18043.5", 0x1800000, 0x200000, CRC(ff84dfd6) SHA1(82833bf4cb1f367aea5fec6cffb7023cbbd3c8cb) ) - ROM_LOAD32_WORD("mpr-18044.6", 0x1800002, 0x200000, CRC(ab9b406d) SHA1(62e95ceea6f71eedbebae59e188aac03e6129e62) ) + ROM_LOAD32_WORD("mpr-18037.11", 0x000000, 0x200000, CRC(dea8f896) SHA1(8eb45e46bd14a2ffbdaac47d381a1ea9b9a03ca2) ) + ROM_LOAD32_WORD("mpr-18038.12", 0x000002, 0x200000, CRC(441f7709) SHA1(cbfa687839b6cad6a5ace45b44b95c45e4cfab0d) ) + ROM_LOAD32_WORD("mpr-18039.9", 0x400000, 0x200000, CRC(b98c6f06) SHA1(dd1ff9c682778de1c6c09e7a5cbc95a8149488c4) ) + ROM_LOAD32_WORD("mpr-18040.10", 0x400002, 0x200000, CRC(0d872667) SHA1(33e56486ec6b953341552b6bc21dc66f6f8aaf74) ) + ROM_LOAD32_WORD("mpr-18041.7", 0x800000, 0x200000, CRC(e511ab0a) SHA1(c6ea14b3bdefdc59603bd2fc152ac0421fae4d6f) ) + ROM_LOAD32_WORD("mpr-18042.8", 0x800002, 0x200000, CRC(e9a04159) SHA1(0204ba86af2707bc9e277cac68dd9ef759189c23) ) + ROM_LOAD32_WORD("mpr-18043.5", 0xc00000, 0x200000, CRC(ff84dfd6) SHA1(82833bf4cb1f367aea5fec6cffb7023cbbd3c8cb) ) + ROM_LOAD32_WORD("mpr-18044.6", 0xc00002, 0x200000, CRC(ab9b406d) SHA1(62e95ceea6f71eedbebae59e188aac03e6129e62) ) ROM_REGION( 0x800000, "user5", ROMREGION_ERASEFF ) // Coprocessor Data ROM /* empty?? */ @@ -5518,8 +5566,11 @@ ROM_START( daytona ) /* Daytona USA (Japan, Revision A), Original Model 2 w/Mode MODEL2_CPU_BOARD /* Model 2 CPU board extra roms */ - ROM_REGION( 0x10000, "user7", 0 ) // Unknown ROM + ROM_REGION( 0x10000, "iocpu", 0 ) // 837-10539 I/O board ROM_LOAD("epr-14869c.25", 0x000000, 0x010000, CRC(24b68e64) SHA1(c19d044d4c2fe551474492aa51922587394dd371) ) + + ROM_REGION( 0x10000, "drivecpu", 0 ) // 838-10646 drive board + ROM_LOAD("epr-16488a.ic12", 0x000000, 0x010000, CRC(546c5d1a) SHA1(5533301fe7e3b499e6cee12230d2c656c3c667da) ) ROM_END ROM_START( daytonase ) /* Daytona USA (Japan, Revision A), Original Model 2 w/Model 1 sound board */ @@ -5579,8 +5630,11 @@ ROM_START( daytonase ) /* Daytona USA (Japan, Revision A), Original Model 2 w/Mo MODEL2_CPU_BOARD /* Model 2 CPU board extra roms */ - ROM_REGION( 0x10000, "user7", 0 ) // Unknown ROM + ROM_REGION( 0x10000, "iocpu", 0 ) // 837-10539 I/O board ROM_LOAD("epr-14869c.25", 0x000000, 0x010000, CRC(24b68e64) SHA1(c19d044d4c2fe551474492aa51922587394dd371) ) + + ROM_REGION( 0x10000, "drivecpu", 0 ) // 838-10646 drive board + ROM_LOAD("epr-16488a.ic12", 0x000000, 0x010000, CRC(546c5d1a) SHA1(5533301fe7e3b499e6cee12230d2c656c3c667da) ) ROM_END ROM_START( daytona93 ) /* Daytona USA Deluxe '93 version (There is said to be a Deluxe '94 edition) */ @@ -5639,8 +5693,11 @@ ROM_START( daytona93 ) /* Daytona USA Deluxe '93 version (There is said to be a MODEL2_CPU_BOARD /* Model 2 CPU board extra roms */ - ROM_REGION( 0x10000, "user7", 0 ) // Unknown ROM + ROM_REGION( 0x10000, "iocpu", 0 ) // 837-10539 I/O board ROM_LOAD("epr-14869c.25", 0x000000, 0x010000, CRC(24b68e64) SHA1(c19d044d4c2fe551474492aa51922587394dd371) ) + + ROM_REGION( 0x10000, "drivecpu", 0 ) // 838-10646 drive board + ROM_LOAD("epr-16488a.ic12", 0x000000, 0x010000, BAD_DUMP CRC(546c5d1a) SHA1(5533301fe7e3b499e6cee12230d2c656c3c667da) ) // unconfirmed ROM_END ROM_START( daytonas ) /* Daytona USA (With Saturn Adverts) */ @@ -5700,8 +5757,11 @@ ROM_START( daytonas ) /* Daytona USA (With Saturn Adverts) */ MODEL2_CPU_BOARD /* Model 2 CPU board extra roms */ - ROM_REGION( 0x10000, "user7", 0 ) // Unknown ROM + ROM_REGION( 0x10000, "iocpu", 0 ) // 837-10539 I/O board ROM_LOAD("epr-14869c.25", 0x000000, 0x010000, CRC(24b68e64) SHA1(c19d044d4c2fe551474492aa51922587394dd371) ) + + ROM_REGION( 0x10000, "drivecpu", 0 ) // 838-10646 drive board + ROM_LOAD("epr-16488a.ic12", 0x000000, 0x010000, BAD_DUMP CRC(546c5d1a) SHA1(5533301fe7e3b499e6cee12230d2c656c3c667da) ) // unconfirmed ROM_END ROM_START( daytonat )/* Daytona USA (Japan, Turbo hack) */ @@ -5763,8 +5823,11 @@ ROM_START( daytonat )/* Daytona USA (Japan, Turbo hack) */ MODEL2_CPU_BOARD /* Model 2 CPU board extra roms */ - ROM_REGION( 0x10000, "user7", 0 ) // Unknown ROM + ROM_REGION( 0x10000, "iocpu", 0 ) // 837-10539 I/O board ROM_LOAD("epr-14869c.25", 0x000000, 0x010000, CRC(24b68e64) SHA1(c19d044d4c2fe551474492aa51922587394dd371) ) + + ROM_REGION( 0x10000, "drivecpu", 0 ) // 838-10646 drive board + ROM_LOAD("epr-16488a.ic12", 0x000000, 0x010000, CRC(546c5d1a) SHA1(5533301fe7e3b499e6cee12230d2c656c3c667da) ) ROM_END ROM_START( daytonata )/* Daytona USA (Japan, Turbo hack) */ @@ -5824,8 +5887,11 @@ ROM_START( daytonata )/* Daytona USA (Japan, Turbo hack) */ MODEL2_CPU_BOARD /* Model 2 CPU board extra roms */ - ROM_REGION( 0x10000, "user7", 0 ) // Unknown ROM + ROM_REGION( 0x10000, "iocpu", 0 ) // 837-10539 I/O board ROM_LOAD("epr-14869c.25", 0x000000, 0x010000, CRC(24b68e64) SHA1(c19d044d4c2fe551474492aa51922587394dd371) ) + + ROM_REGION( 0x10000, "drivecpu", 0 ) // 838-10646 drive board + ROM_LOAD("epr-16488a.ic12", 0x000000, 0x010000, CRC(546c5d1a) SHA1(5533301fe7e3b499e6cee12230d2c656c3c667da) ) ROM_END /* @@ -5896,8 +5962,11 @@ ROM_START( daytonam ) /* Daytona USA (Japan, To The MAXX) */ MODEL2_CPU_BOARD /* Model 2 CPU board extra roms */ - ROM_REGION( 0x10000, "user7", 0 ) // Unknown ROM + ROM_REGION( 0x10000, "iocpu", 0 ) // 837-10539 I/O board ROM_LOAD("epr-14869c.25", 0x000000, 0x010000, CRC(24b68e64) SHA1(c19d044d4c2fe551474492aa51922587394dd371) ) + + ROM_REGION( 0x10000, "drivecpu", 0 ) // 838-10646 drive board + ROM_LOAD("epr-16488a.ic12", 0x000000, 0x010000, CRC(546c5d1a) SHA1(5533301fe7e3b499e6cee12230d2c656c3c667da) ) ROM_END ROM_START( vcop ) /* Virtua Cop Revision B, Model 2 */ @@ -6057,6 +6126,7 @@ DRIVER_INIT_MEMBER(model2_state,zerogun) DRIVER_INIT_MEMBER(model2_state,daytonam) { + DRIVER_INIT_CALL(srallyc); m_maincpu->space(AS_PROGRAM).install_read_handler(0x240000, 0x24ffff, read32_delegate(FUNC(model2_state::maxx_r),this)); } @@ -6090,78 +6160,78 @@ DRIVER_INIT_MEMBER(model2_state,srallyc) // Model 2 (TGPs, Model 1 sound board) -GAME( 1993, daytona, 0, model2o, daytona, driver_device, 0, ROT0, "Sega", "Daytona USA (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, daytonase, daytona, model2o, daytona, driver_device, 0, ROT0, "Sega", "Daytona USA Special Edition (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, daytona93, daytona, model2o, daytona, driver_device, 0, ROT0, "Sega", "Daytona USA Deluxe '93", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, daytonas, daytona, model2o, daytona, driver_device, 0, ROT0, "Sega", "Daytona USA (With Saturn Adverts)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, daytonat, daytona, model2o, daytona, driver_device, 0, ROT0, "Sega", "Daytona USA (Japan, Turbo hack, set 1)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, daytonata, daytona, model2o, daytona, driver_device, 0, ROT0, "Sega", "Daytona USA (Japan, Turbo hack, set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, daytonam, daytona, model2o, daytona, model2_state, daytonam, ROT0, "Sega", "Daytona USA (Japan, To The MAXX)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, desert, 0, model2o, desert, driver_device, 0, ROT0, "Sega / Martin Marietta", "Desert Tank", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, vcop, 0, model2o, vcop, driver_device, 0, ROT0, "Sega", "Virtua Cop (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, vcopa, vcop, model2o, vcop, driver_device, 0, ROT0, "Sega", "Virtua Cop (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, daytona, 0, daytona, daytona, model2_state, srallyc, ROT0, "Sega", "Daytona USA (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, daytonase, daytona, daytona, daytona, model2_state, srallyc, ROT0, "Sega", "Daytona USA Special Edition (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, daytona93, daytona, daytona, daytona, model2_state, srallyc, ROT0, "Sega", "Daytona USA Deluxe '93", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, daytonas, daytona, daytona, daytona, model2_state, srallyc, ROT0, "Sega", "Daytona USA (With Saturn Adverts)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, daytonat, daytona, daytona, daytona, model2_state, srallyc, ROT0, "Sega", "Daytona USA (Japan, Turbo hack, set 1)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, daytonata, daytona, daytona, daytona, model2_state, srallyc, ROT0, "Sega", "Daytona USA (Japan, Turbo hack, set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, daytonam, daytona, daytona, daytona, model2_state, daytonam, ROT0, "Sega", "Daytona USA (Japan, To The MAXX)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, desert, 0, model2o, desert, model2_state, 0, ROT0, "Sega / Martin Marietta", "Desert Tank", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, vcop, 0, model2o, vcop, model2_state, 0, ROT0, "Sega", "Virtua Cop (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, vcopa, vcop, model2o, vcop, model2_state, 0, ROT0, "Sega", "Virtua Cop (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) // Model 2A-CRX (TGPs, SCSP sound board) -GAME( 1995, manxtt, 0, manxttdx, manxtt, driver_device, 0, ROT0, "Sega", "Manx TT Superbike - DX (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, manxttc, 0, model2a, manxtt, driver_device, 0, ROT0, "Sega", "Manx TT Superbike - Twin (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, srallyc, 0, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - TWIN/DX (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, srallycb, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - TWIN/DX (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, srallycdx, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - DX (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, srallycdxa,srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, vf2, 0, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2 (Version 2.1)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, vf2b, vf2, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, vf2a, vf2, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, vf2o, vf2, model2a, model2, driver_device, 0, ROT0, "Sega", "Virtua Fighter 2", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, vcop2, 0, model2a, vcop2, driver_device, 0, ROT0, "Sega", "Virtua Cop 2", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, skytargt, 0, model2a, skytargt, driver_device, 0, ROT0, "Sega", "Sky Target", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, doaa, doa, model2a_0229, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2A, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, zeroguna, zerogun, model2a_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, zerogunaj, zerogun, model2a_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, motoraid, 0, model2a, manxtt, driver_device, 0, ROT0, "Sega", "Motor Raid - Twin", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dynamcop, 0, model2a_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dyndeka2, dynamcop, model2a_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, pltkidsa, pltkids, model2a_5881, model2, model2_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, manxtt, 0, manxttdx, manxtt, model2_state, 0, ROT0, "Sega", "Manx TT Superbike - DX (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, manxttc, 0, model2a, manxtt, model2_state, 0, ROT0, "Sega", "Manx TT Superbike - Twin (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, srallyc, 0, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - TWIN/DX (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, srallycb, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - TWIN/DX (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, srallycdx, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - DX (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, srallycdxa,srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, vf2, 0, model2a, model2, model2_state, 0, ROT0, "Sega", "Virtua Fighter 2 (Version 2.1)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, vf2b, vf2, model2a, model2, model2_state, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, vf2a, vf2, model2a, model2, model2_state, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, vf2o, vf2, model2a, model2, model2_state, 0, ROT0, "Sega", "Virtua Fighter 2", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, vcop2, 0, model2a, vcop2, model2_state, 0, ROT0, "Sega", "Virtua Cop 2", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, skytargt, 0, model2a, skytargt, model2_state, 0, ROT0, "Sega", "Sky Target", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, doaa, doa, model2a_0229, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2A, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, zeroguna, zerogun, model2a_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, zerogunaj, zerogun, model2a_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, motoraid, 0, model2a, manxtt, model2_state, 0, ROT0, "Sega", "Motor Raid - Twin", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dynamcop, 0, model2a_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dyndeka2, dynamcop, model2a_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, pltkidsa, pltkids, model2a_5881, model2, model2_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) // Model 2B-CRX (SHARC, SCSP sound board) -GAME( 1994, vstriker, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Virtua Striker (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, vstrikero,vstriker, model2b, model2, driver_device, 0, ROT0, "Sega", "Virtua Striker", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, fvipers, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Fighting Vipers (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, gunblade, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Gunblade NY (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, indy500, 0, model2b, srallyc, driver_device, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, indy500d, indy500, model2b, srallyc, driver_device, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, indy500to, indy500, model2b, srallyc, driver_device, 0, ROT0, "Sega", "INDY 500 Twin (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, schamp, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Sonic Championship (USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, sfight, schamp, model2b, model2, driver_device, 0, ROT0, "Sega", "Sonic the Fighters (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, lastbrnx, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Last Bronx (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, lastbrnxu,lastbrnx, model2b, model2, driver_device, 0, ROT0, "Sega", "Last Bronx (USA, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, lastbrnxj,lastbrnx, model2b, model2, driver_device, 0, ROT0, "Sega", "Last Bronx (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, doa, 0, model2b_0229, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, sgt24h, 0, model2b, srallyc, model2_state, sgt24h, ROT0, "Jaleco", "Super GT 24h", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, von, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (USA, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, vonj, von, model2b, model2, driver_device, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (Japan, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, dynabb, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Dynamite Baseball", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, dynabb97, 0, model2b, model2, driver_device, 0, ROT0, "Sega", "Dynamite Baseball 97 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, overrevb, overrev, model2b, srallyc, driver_device, 0, ROT0, "Jaleco", "Over Rev (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, zerogun, 0, model2b_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, zerogunj, zerogun, model2b_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dynamcopb,dynamcop, model2b_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dyndeka2b,dynamcop, model2b_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, pltkids, 0, model2b_5881, model2, model2_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2B, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, rchase2, 0, model2b, rchase2, model2_state, rchase2, ROT0, "Sega", "Rail Chase 2 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, vstriker, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Virtua Striker (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, vstrikero,vstriker, model2b, model2, model2_state, 0, ROT0, "Sega", "Virtua Striker", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, fvipers, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Fighting Vipers (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, gunblade, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Gunblade NY (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, indy500, 0, model2b, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, indy500d, indy500, model2b, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, indy500to, indy500, model2b, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, schamp, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Sonic Championship (USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, sfight, schamp, model2b, model2, model2_state, 0, ROT0, "Sega", "Sonic the Fighters (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, lastbrnx, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Last Bronx (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, lastbrnxu,lastbrnx, model2b, model2, model2_state, 0, ROT0, "Sega", "Last Bronx (USA, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, lastbrnxj,lastbrnx, model2b, model2, model2_state, 0, ROT0, "Sega", "Last Bronx (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, doa, 0, model2b_0229, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, sgt24h, 0, model2b, srallyc, model2_state, sgt24h, ROT0, "Jaleco", "Super GT 24h", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, von, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (USA, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, vonj, von, model2b, model2, model2_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (Japan, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, dynabb, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Dynamite Baseball", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, dynabb97, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Dynamite Baseball 97 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, overrevb, overrev, model2b, srallyc, model2_state, 0, ROT0, "Jaleco", "Over Rev (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, zerogun, 0, model2b_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, zerogunj, zerogun, model2b_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dynamcopb,dynamcop, model2b_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dyndeka2b,dynamcop, model2b_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, pltkids, 0, model2b_5881, model2, model2_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2B, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, rchase2, 0, rchase2, rchase2, model2_state, rchase2, ROT0, "Sega", "Rail Chase 2 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) // Model 2C-CRX (TGPx4, SCSP sound board) -GAME( 1996, skisuprg, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Sega Ski Super G", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS|MACHINE_UNEMULATED_PROTECTION ) -GAME( 1996, stcc, 0, stcc, model2, driver_device, 0, ROT0, "Sega", "Sega Touring Car Championship", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, stccb, stcc, stcc, model2, driver_device, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, stcca, stcc, stcc, model2, driver_device, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, waverunr, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Wave Runner (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, hotd, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "House of the Dead", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, overrev, 0, model2c, srallyc, driver_device, 0, ROT0, "Jaleco", "Over Rev (Model 2C, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, rascot2, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Royal Ascot II", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, segawski, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Sega Water Ski (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, topskatr, 0, model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, topskatru,topskatr, model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (USA, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, topskatruo,topskatr,model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, topskatrj,topskatr, model2c, model2, driver_device, 0, ROT0, "Sega", "Top Skater (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, bel, 0, model2c, bel, driver_device, 0, ROT0, "Sega / EPL Productions", "Behind Enemy Lines", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dynamcopc,dynamcop, model2c_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (USA, Model 2C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, skisuprg, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "Sega Ski Super G", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS|MACHINE_UNEMULATED_PROTECTION ) +GAME( 1996, stcc, 0, stcc, model2, model2_state, 0, ROT0, "Sega", "Sega Touring Car Championship", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, stccb, stcc, stcc, model2, model2_state, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, stcca, stcc, stcc, model2, model2_state, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, waverunr, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "Wave Runner (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, hotd, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "House of the Dead", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, overrev, 0, model2c, srallyc, model2_state, 0, ROT0, "Jaleco", "Over Rev (Model 2C, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, rascot2, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "Royal Ascot II", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, segawski, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "Sega Water Ski (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, topskatr, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "Top Skater (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, topskatru,topskatr, model2c, model2, model2_state, 0, ROT0, "Sega", "Top Skater (USA, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, topskatruo,topskatr,model2c, model2, model2_state, 0, ROT0, "Sega", "Top Skater (USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, topskatrj,topskatr, model2c, model2, model2_state, 0, ROT0, "Sega", "Top Skater (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, bel, 0, model2c, bel, model2_state, 0, ROT0, "Sega / EPL Productions", "Behind Enemy Lines", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dynamcopc,dynamcop, model2c_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (USA, Model 2C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp index 0706dad5f4b..dcf48edc548 100644 --- a/src/mame/drivers/model3.cpp +++ b/src/mame/drivers/model3.cpp @@ -735,6 +735,7 @@ JP4/5/6/7 - Jumpers to configure ROMs #include "includes/model3.h" #include "cpu/m68000/m68000.h" +#include "machine/clock.h" #include "machine/eepromser.h" #include "machine/53c810.h" #include "machine/nvram.h" @@ -1072,28 +1073,28 @@ READ64_MEMBER(model3_state::scsi_r) int reg = offset*8; uint64_t r = 0; if (ACCESSING_BITS_56_63) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+0) << 56; + r |= (uint64_t)m_lsi53c810->reg_r(reg+0) << 56; } if (ACCESSING_BITS_48_55) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+1) << 48; + r |= (uint64_t)m_lsi53c810->reg_r(reg+1) << 48; } if (ACCESSING_BITS_40_47) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+2) << 40; + r |= (uint64_t)m_lsi53c810->reg_r(reg+2) << 40; } if (ACCESSING_BITS_32_39) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+3) << 32; + r |= (uint64_t)m_lsi53c810->reg_r(reg+3) << 32; } if (ACCESSING_BITS_24_31) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+4) << 24; + r |= (uint64_t)m_lsi53c810->reg_r(reg+4) << 24; } if (ACCESSING_BITS_16_23) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+5) << 16; + r |= (uint64_t)m_lsi53c810->reg_r(reg+5) << 16; } if (ACCESSING_BITS_8_15) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+6) << 8; + r |= (uint64_t)m_lsi53c810->reg_r(reg+6) << 8; } if (ACCESSING_BITS_0_7) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+7) << 0; + r |= (uint64_t)m_lsi53c810->reg_r(reg+7) << 0; } return r; @@ -1103,28 +1104,28 @@ WRITE64_MEMBER(model3_state::scsi_w) { int reg = offset*8; if (ACCESSING_BITS_56_63) { - m_lsi53c810->lsi53c810_reg_w(reg+0, data >> 56); + m_lsi53c810->reg_w(reg+0, data >> 56); } if (ACCESSING_BITS_48_55) { - m_lsi53c810->lsi53c810_reg_w(reg+1, data >> 48); + m_lsi53c810->reg_w(reg+1, data >> 48); } if (ACCESSING_BITS_40_47) { - m_lsi53c810->lsi53c810_reg_w(reg+2, data >> 40); + m_lsi53c810->reg_w(reg+2, data >> 40); } if (ACCESSING_BITS_32_39) { - m_lsi53c810->lsi53c810_reg_w(reg+3, data >> 32); + m_lsi53c810->reg_w(reg+3, data >> 32); } if (ACCESSING_BITS_24_31) { - m_lsi53c810->lsi53c810_reg_w(reg+4, data >> 24); + m_lsi53c810->reg_w(reg+4, data >> 24); } if (ACCESSING_BITS_16_23) { - m_lsi53c810->lsi53c810_reg_w(reg+5, data >> 16); + m_lsi53c810->reg_w(reg+5, data >> 16); } if (ACCESSING_BITS_8_15) { - m_lsi53c810->lsi53c810_reg_w(reg+6, data >> 8); + m_lsi53c810->reg_w(reg+6, data >> 8); } if (ACCESSING_BITS_0_7) { - m_lsi53c810->lsi53c810_reg_w(reg+7, data >> 0); + m_lsi53c810->reg_w(reg+7, data >> 0); } } @@ -1315,6 +1316,9 @@ void model3_state::model3_init(int step) { m_step = step; + if (m_uart.found()) + m_uart->write_cts(0); + m_sound_irq_enable = 0; m_sound_timer->adjust(attotime::never); @@ -1684,8 +1688,19 @@ READ8_MEMBER(model3_state::model3_sound_r) { switch (offset) { + case 0: + { + if (m_uart.found()) + return m_uart->data_r(space, 0); + + break; + } + case 4: { + if (m_uart.found()) + return m_uart->status_r(space, 0); + uint8_t res = 0; res |= 1; res |= 0x2; // magtruck country check @@ -1703,10 +1718,8 @@ WRITE8_MEMBER(model3_state::model3_sound_w) // clear the interrupt set_irq_line(0x40, CLEAR_LINE); - if (m_dsbz80 != nullptr) - { - m_dsbz80->latch_w(space, 0, data&0xff); - } + if (m_uart.found()) + m_uart->data_w(space, 0, data); // send to the sound board m_scsp1->midi_in(space, 0, data, 0); @@ -1715,9 +1728,13 @@ WRITE8_MEMBER(model3_state::model3_sound_w) { m_sound_timer->adjust(attotime::from_msec(1)); } + break; case 4: + if (m_uart.found()) + m_uart->control_w(space, 0, data); + if (data == 0x27) { m_sound_irq_enable = 1; @@ -1727,6 +1744,7 @@ WRITE8_MEMBER(model3_state::model3_sound_w) { m_sound_irq_enable = 0; } + break; } } @@ -3323,7 +3341,7 @@ ROM_START( vs215 ) /* Step 1.5 */ ROM_FILL( 0x000000, 0x80000, 0x0000 ) ROM_END -ROM_START( vs215o ) /* Step 1.5, original release.. might even be for Step 1.0??? */ +ROM_START( vs215o ) /* Step 1.5, original release.. might even be for Step 1.0???, Sega ID# 833-13089, ROM board ID# 834-13090 V.STRIKER 2 */ ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */ // CROM ROM_LOAD64_WORD_SWAP( "epr-19806.17", 0x600006, 0x080000, CRC(95e1b970) SHA1(bcc914088cd08cb0032349b71904757760d947f3) ) @@ -5037,7 +5055,7 @@ ROM_START( fvipers2 ) /* Step 2.0 - Japan version */ ROM_PARAMETER( ":315_5881:key", "29260e96" ) ROM_END -ROM_START( spikeout ) /* Step 2.1 */ +ROM_START( spikeout ) /* Step 2.1, Sega game ID# is 833-13592, ROM board ID# 834-13593 SPK */ ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */ // CROM ROM_LOAD64_WORD_SWAP( "epr-21214c.17", 0x000006, 0x200000, CRC(8dc0a85c) SHA1(c75088fd0594964a4ed78b80a2585d3d89c85464) ) @@ -5683,7 +5701,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(model3_state::model3_interrupt) } } -static MACHINE_CONFIG_START( model3_10, model3_state ) +static MACHINE_CONFIG_START( model3_10 ) MCFG_CPU_ADD("maincpu", PPC603E, 66000000) MCFG_PPC_BUS_FREQUENCY(66000000) /* Multiplier 1, Bus = 66MHz, Core = 66MHz */ MCFG_CPU_PROGRAM_MAP(model3_10_mem) @@ -5731,7 +5749,7 @@ static MACHINE_CONFIG_START( model3_10, model3_state ) MCFG_LEGACY_SCSI_PORT("scsi") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( model3_15, model3_state ) +static MACHINE_CONFIG_START( model3_15 ) MCFG_CPU_ADD("maincpu", PPC603E, 100000000) MCFG_PPC_BUS_FREQUENCY(66000000) /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */ MCFG_CPU_PROGRAM_MAP(model3_mem) @@ -5783,9 +5801,16 @@ static MACHINE_CONFIG_DERIVED(scud, model3_15) MCFG_DSBZ80_ADD(DSBZ80_TAG) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_DEVICE_ADD("uart", I8251, 8000000) // uPD71051 + MCFG_I8251_TXD_HANDLER(DEVWRITELINE(DSBZ80_TAG, dsbz80_device, write_txd)) + + MCFG_CLOCK_ADD("uart_clock", 500000) // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("uart", i8251_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", i8251_device, write_rxc)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START(model3_20, model3_state) +static MACHINE_CONFIG_START(model3_20) MCFG_CPU_ADD("maincpu", PPC603R, 166000000) MCFG_PPC_BUS_FREQUENCY(66000000) /* Multiplier 2.5, Bus = 66MHz, Core = 166MHz */ MCFG_CPU_PROGRAM_MAP(model3_mem) @@ -5830,7 +5855,7 @@ static MACHINE_CONFIG_DERIVED(model3_20_5881, model3_20) MCFG_SET_READ_CALLBACK(model3_state, crypt_read_callback) MACHINE_CONFIG_END -static MACHINE_CONFIG_START(model3_21, model3_state) +static MACHINE_CONFIG_START(model3_21) MCFG_CPU_ADD("maincpu", PPC603R, 166000000) MCFG_PPC_BUS_FREQUENCY(66000000) /* Multiplier 2.5, Bus = 66MHz, Core = 166MHz */ MCFG_CPU_PROGRAM_MAP(model3_mem) diff --git a/src/mame/drivers/modellot.cpp b/src/mame/drivers/modellot.cpp index dac0082e9a7..c7f08e01522 100644 --- a/src/mame/drivers/modellot.cpp +++ b/src/mame/drivers/modellot.cpp @@ -35,7 +35,7 @@ public: DECLARE_READ8_MEMBER(port77_r); DECLARE_READ8_MEMBER(portff_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); uint32_t screen_update_modellot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); private: @@ -77,7 +77,7 @@ READ8_MEMBER( modellot_state::portff_r) return data; } -WRITE8_MEMBER( modellot_state::kbd_put ) +void modellot_state::kbd_put(u8 data) { m_term_data = data; } @@ -149,7 +149,7 @@ uint32_t modellot_state::screen_update_modellot(screen_device &screen, bitmap_in return 0; } -static MACHINE_CONFIG_START( modellot, modellot_state ) +static MACHINE_CONFIG_START( modellot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(modellot_mem) @@ -169,7 +169,7 @@ static MACHINE_CONFIG_START( modellot, modellot_state ) /* Devices */ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(modellot_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(modellot_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -187,4 +187,4 @@ ROM_START( modellot ) ROM_END /* Driver */ -COMP( 1979, modellot, 0, 0, modellot, modellot, driver_device, 0, "General Processor", "Modello T", MACHINE_IS_SKELETON) +COMP( 1979, modellot, 0, 0, modellot, modellot, modellot_state, 0, "General Processor", "Modello T", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/mogura.cpp b/src/mame/drivers/mogura.cpp index e52e3af829c..6f11bb8e5b9 100644 --- a/src/mame/drivers/mogura.cpp +++ b/src/mame/drivers/mogura.cpp @@ -202,7 +202,7 @@ void mogura_state::machine_start() { } -static MACHINE_CONFIG_START( mogura, mogura_state ) +static MACHINE_CONFIG_START( mogura ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,3000000) /* 3 MHz */ @@ -241,4 +241,4 @@ ROM_START( mogura ) ROM_LOAD( "gx141.7j", 0x00, 0x20, CRC(b21c5d5f) SHA1(6913c840dd69a7d4687f4c4cbe3ff12300f62bc2) ) ROM_END -GAME( 1991, mogura, 0, mogura, mogura, driver_device, 0, ROT0, "Konami", "Mogura Desse (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mogura, 0, mogura, mogura, mogura_state, 0, ROT0, "Konami", "Mogura Desse (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mole.cpp b/src/mame/drivers/mole.cpp index 8e3e218c493..a2cbc39e50d 100644 --- a/src/mame/drivers/mole.cpp +++ b/src/mame/drivers/mole.cpp @@ -317,7 +317,7 @@ void mole_state::machine_reset() m_tile_bank = 0; } -static MACHINE_CONFIG_START( mole, mole_state ) +static MACHINE_CONFIG_START( mole ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 4000000) // ??? @@ -372,4 +372,4 @@ ROM_END * *************************************/ -GAME( 1982, mole, 0, mole, mole, driver_device, 0, ROT0, "Yachiyo Electronics, Ltd.", "Mole Attack", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mole, 0, mole, mole, mole_state, 0, ROT0, "Yachiyo Electronics, Ltd.", "Mole Attack", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/molecular.cpp b/src/mame/drivers/molecular.cpp index 1439eabf44b..ed9ed2f395d 100644 --- a/src/mame/drivers/molecular.cpp +++ b/src/mame/drivers/molecular.cpp @@ -284,7 +284,7 @@ PALETTE_INIT_MEMBER(molecula_state, molecula) { } -static MACHINE_CONFIG_START( molecula, molecula_state ) +static MACHINE_CONFIG_START( molecula ) /* basic machine hardware */ MCFG_CPU_ADD("filecpu",Z80,Z80_CLOCK/2) @@ -355,4 +355,4 @@ ROM_START( molecula ) ROM_LOAD( "wait_16r4.jed", 0x000000, 0x00caef, CRC(3aacfeb4) SHA1(1af1a8046e5a8a0337c85b55adceaef6e45702b7) ) ROM_END -COMP( 1982, molecula, 0, 0, molecula, molecula, driver_device, 0, "MOLECULAR", "MOLECULAR Computer", MACHINE_IS_SKELETON ) +COMP( 1982, molecula, 0, 0, molecula, molecula, molecula_state, 0, "MOLECULAR", "MOLECULAR Computer", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/momoko.cpp b/src/mame/drivers/momoko.cpp index 1fedaa73dda..462f35174a0 100644 --- a/src/mame/drivers/momoko.cpp +++ b/src/mame/drivers/momoko.cpp @@ -253,7 +253,7 @@ void momoko_state::machine_reset() m_flipscreen = 0; } -static MACHINE_CONFIG_START( momoko, momoko_state ) +static MACHINE_CONFIG_START( momoko ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_10MHz/2) /* 5.0MHz */ @@ -423,6 +423,6 @@ ROM_START( momokob ) // bootleg board, almost exact copy of an original one ROM_LOAD( "momoko-b.bin", 0x0100, 0x0020, CRC(427b0e5c) SHA1(aa2797b899571527cc96013fd3420b841954ee67) ) ROM_END -GAME( 1986, momoko, 0, momoko, momoko, driver_device, 0, ROT0, "Jaleco", "Momoko 120% (Japanese text)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, momokoe, momoko, momoko, momoko, driver_device, 0, ROT0, "Jaleco", "Momoko 120% (English text)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, momokob, momoko, momoko, momoko, driver_device, 0, ROT0, "bootleg", "Momoko 120% (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, momoko, 0, momoko, momoko, momoko_state, 0, ROT0, "Jaleco", "Momoko 120% (Japanese text)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, momokoe, momoko, momoko, momoko, momoko_state, 0, ROT0, "Jaleco", "Momoko 120% (English text)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, momokob, momoko, momoko, momoko, momoko_state, 0, ROT0, "bootleg", "Momoko 120% (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/monacogp.cpp b/src/mame/drivers/monacogp.cpp index d1f920be4b7..16946be8c6d 100644 --- a/src/mame/drivers/monacogp.cpp +++ b/src/mame/drivers/monacogp.cpp @@ -10,42 +10,46 @@ Board 96598-P is an oscillator board that generates the game sounds. It is activated by outputs from Board Assy A (96577X). Board Assy's A (96577X) and B (96578X) are the main guts of the gameplay and contain the roms (all sprites). - Board Assy A accepts all of the game inputs (Coin, wheel, shift, accelerator pedal), sends the signals for the sounds to the Oscillator board, outputs to the L.E.D. score display board, and directly interacts with Board Assy B + Board Assy A accepts all of the game inputs (Coin, wheel, shift, accelerator pedal), sends the + signals for the sounds to the Oscillator board, outputs to the L.E.D. score display board, and + directly interacts with Board Assy B Board Assy B outputs the video, outputs to the L.E.D. score display board. and directly interacts with Board Assy A. - On the second set, boards A and B have different part numbers (97091X and 97092X) and two less roms. These boards were made later then the first set. - These boards seem to be interchangable, the only difference seems to be the rom size, which only 2 of the roms utilize the full 1024 bytes (second set). - - ROM SET A ROM SET B - Board 96577X Board 97091X - ROM ID IC# ROM ID - PRa125 (Light data) IC59 PRb-01 (identical to PRa125) - PRa126 (Explosion) IC65 PRb-02 (identical to PRa126) - PRa131 (????) IC71 PRb-04 (identical to PRa131) - PRa127 (car(2)) IC77 PRb-13 (identical to PRa127) - PRa128 (car(2)rotated) IC84 PRb-03 (identical to PRa128) - PRa129 (car) IC91 ----- - PRa130 (car(2) spinout) IC98 PRb-14 (contains PRa130 and half of PRa129) - PRa132 (car(2)(main)) IC111 PRb-15 (identical to PRa132) - - PRm-39 IC105 PRm-39 - PRm-38 IC115 PRm-38 - - Board 96578X Board 97092X - ROM ID IC# ROM ID - PRa140 (brdge-water) IC12 ----- - PRa141 (brdge-pillar) IC17 PRb-16 (contains both PRa140 and PRa141) - PRa138 (firetruck) IC30 PRb-10 (identical to PRa138) - PRa139 (car+bridge symb)IC51 PRb-11 (identical to PRa139) - PRa133 (text(4) IC64 PRb-05 (identical to PRa133) - PRa136 (house) IC99 PRb-08 (identical to PRa136) - PRa135 (shrub) IC106 PRb-07 (identical to PRa135) - PRa134 (tree, grass) IC113 PRb-06 (identical to PRa134) - PRa137 (tunnel,oil slip)IC120 PRb-09 (identical to PRa137) + On the second set, boards A and B have different part numbers (97091X and 97092X) and two less roms. + These boards were made later then the first set. + These boards seem to be interchangable, the only difference seems to be the rom size, which only 2 of the roms + utilize the full 1024 bytes (second set). + + ROM SET A ROM SET B + Board 96577X Board 97091X + ROM ID IC# ROM ID + PRa125 (Light data) IC59 PRb-01 (identical to PRa125) + PRa126 (Explosion) IC65 PRb-02 (identical to PRa126) + PRa131 (????) IC71 PRb-04 (identical to PRa131) + PRa127 (car(2)) IC77 PRb-13 (identical to PRa127) + PRa128 (car(2)rotated) IC84 PRb-03 (identical to PRa128) + PRa129 (car) IC91 ----- + PRa130 (car(2) spinout) IC98 PRb-14 (contains PRa130 and half of PRa129) + PRa132 (car(2)(main)) IC111 PRb-15 (identical to PRa132) + + PRm-39 IC105 PRm-39 + PRm-38 IC115 PRm-38 + + Board 96578X Board 97092X + ROM ID IC# ROM ID + PRa140 (brdge-water) IC12 ----- + PRa141 (brdge-pillar) IC17 PRb-16 (contains both PRa140 and PRa141) + PRa138 (firetruck) IC30 PRb-10 (identical to PRa138) + PRa139 (car+bridge symb) IC51 PRb-11 (identical to PRa139) + PRa133 (text(4) IC64 PRb-05 (identical to PRa133) + PRa136 (house) IC99 PRb-08 (identical to PRa136) + PRa135 (shrub) IC106 PRb-07 (identical to PRa135) + PRa134 (tree, grass) IC113 PRb-06 (identical to PRa134) + PRa137 (tunnel,oil slip) IC120 PRb-09 (identical to PRa137) Oscillator Board 96598 - ROM ID IC# - PRm-40 IC21 PRm-40 + ROM ID IC# + PRm-40 IC21 PRm-40 -------------------------------------------------------- @@ -138,7 +142,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -181,7 +185,7 @@ void monacogp_state::video_start() { } -static MACHINE_CONFIG_START( monacogp, monacogp_state ) +static MACHINE_CONFIG_START( monacogp ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -265,5 +269,5 @@ ROM_END -GAME( 1980, monacogp, 0, monacogp, 0, driver_device, 0, ROT0, "Sega", "Monaco GP (Set 1) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1980, monacogpa, monacogp, monacogp, 0, driver_device, 0, ROT0, "Sega", "Monaco GP (Set 2) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1980, monacogp, 0, monacogp, 0, monacogp_state, 0, ROT0, "Sega", "Monaco GP (Set 1) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1980, monacogpa, monacogp, monacogp, 0, monacogp_state, 0, ROT0, "Sega", "Monaco GP (Set 2) [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/monty.cpp b/src/mame/drivers/monty.cpp index f8dc3071cdc..813bb724a32 100644 --- a/src/mame/drivers/monty.cpp +++ b/src/mame/drivers/monty.cpp @@ -237,7 +237,7 @@ SED1520_UPDATE_CB(monty_screen_update) // TODO: Additional machine definition - Master Monty has a different memory layout -static MACHINE_CONFIG_START( monty, monty_state ) +static MACHINE_CONFIG_START( monty ) // Basic machine hardware MCFG_CPU_ADD("maincpu", Z80, 3580000) // Ceramic resonator labeled 3.58MT MCFG_CPU_PROGRAM_MAP(monty_mem) @@ -285,6 +285,6 @@ ROM_END // Drivers -// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS -COMP( 1980, monty, 0, 0, monty, monty, driver_device, 0, "Ritam", "Monty Plays Scrabble", MACHINE_NOT_WORKING ) -COMP( 1982, mmonty, 0, 0, mmonty, monty, driver_device, 0, "Ritam", "Master Monty", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, monty, 0, 0, monty, monty, monty_state, 0, "Ritam", "Monty Plays Scrabble", MACHINE_NOT_WORKING ) +COMP( 1982, mmonty, 0, 0, mmonty, monty, monty_state, 0, "Ritam", "Master Monty", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/monzagp.cpp b/src/mame/drivers/monzagp.cpp index ed09e7d9fb4..a01a10379ae 100644 --- a/src/mame/drivers/monzagp.cpp +++ b/src/mame/drivers/monzagp.cpp @@ -403,8 +403,6 @@ WRITE8_MEMBER(monzagp_state::port2_w) static ADDRESS_MAP_START( monzagp_io, AS_IO, 8, monzagp_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(port_r, port_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(port1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(port2_r, port2_w) ADDRESS_MAP_END static INPUT_PORTS_START( monzagp ) @@ -485,10 +483,13 @@ static GFXDECODE_START( monzagp ) GFXDECODE_ENTRY( "gfx3", 0x0000, tile_layout, 0, 8 ) GFXDECODE_END -static MACHINE_CONFIG_START( monzagp, monzagp_state ) +static MACHINE_CONFIG_START( monzagp ) MCFG_CPU_ADD("maincpu", I8035, 12000000/4) /* 400KHz ??? - Main board Crystal is 12MHz */ MCFG_CPU_PROGRAM_MAP(monzagp_map) MCFG_CPU_IO_MAP(monzagp_io) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(monzagp_state, port1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(monzagp_state, port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(monzagp_state, port2_w)) MCFG_CPU_VBLANK_INT_DRIVER("screen", monzagp_state, irq0_line_hold) /* video hardware */ @@ -584,5 +585,5 @@ ROM_START( monzagpb ) ROM_END -GAMEL( 1981, monzagp, 0, monzagp, monzagp, driver_device, 0, ROT270, "Olympia", "Monza GP", MACHINE_NOT_WORKING|MACHINE_NO_SOUND, layout_monzagp ) -GAMEL( 1981, monzagpb, monzagp, monzagp, monzagp, driver_device, 0, ROT270, "bootleg", "Monza GP (bootleg)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND, layout_monzagp ) +GAMEL( 1981, monzagp, 0, monzagp, monzagp, monzagp_state, 0, ROT270, "Olympia", "Monza GP", MACHINE_NOT_WORKING|MACHINE_NO_SOUND, layout_monzagp ) +GAMEL( 1981, monzagpb, monzagp, monzagp, monzagp, monzagp_state, 0, ROT270, "bootleg", "Monza GP (bootleg)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND, layout_monzagp ) diff --git a/src/mame/drivers/moo.cpp b/src/mame/drivers/moo.cpp index 117c3c337bc..d0b6f02105d 100644 --- a/src/mame/drivers/moo.cpp +++ b/src/mame/drivers/moo.cpp @@ -221,31 +221,11 @@ INTERRUPT_GEN_MEMBER(moo_state::moobl_interrupt) device.execute().set_input_line(5, HOLD_LINE); } -WRITE16_MEMBER(moo_state::sound_cmd1_w) -{ - if ((data & 0x00ff0000) == 0) - { - data &= 0xff; - m_soundlatch->write(space, 0, data); - } -} - -WRITE16_MEMBER(moo_state::sound_cmd2_w) -{ - if ((data & 0x00ff0000) == 0) - m_soundlatch2->write(space, 0, data & 0xff); -} - WRITE16_MEMBER(moo_state::sound_irq_w) { m_soundcpu->set_input_line(0, HOLD_LINE); } -READ16_MEMBER(moo_state::sound_status_r) -{ - return m_soundlatch3->read(space, 0); -} - WRITE8_MEMBER(moo_state::sound_bankswitch_w) { membank("bank1")->set_base(memregion("soundcpu")->base() + 0x10000 + (data&0xf)*0x4000); @@ -330,10 +310,7 @@ static ADDRESS_MAP_START( moo_map, AS_PROGRAM, 16, moo_state ) AM_RANGE(0x0ce000, 0x0ce01f) AM_WRITE(moo_prot_w) AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* CCU regs (ignored) */ AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w) - AM_RANGE(0x0d600c, 0x0d600d) AM_WRITE(sound_cmd1_w) - AM_RANGE(0x0d600e, 0x0d600f) AM_WRITE(sound_cmd2_w) - AM_RANGE(0x0d6014, 0x0d6015) AM_READ(sound_status_r) - AM_RANGE(0x0d6000, 0x0d601f) AM_RAM /* sound regs fall through */ + AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) /* VSCCS regs */ AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3") AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4") @@ -396,10 +373,7 @@ static ADDRESS_MAP_START( bucky_map, AS_PROGRAM, 16, moo_state ) AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* CCU regs (ignored) */ AM_RANGE(0x0d2000, 0x0d20ff) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w) AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w) - AM_RANGE(0x0d600c, 0x0d600d) AM_WRITE(sound_cmd1_w) - AM_RANGE(0x0d600e, 0x0d600f) AM_WRITE(sound_cmd2_w) - AM_RANGE(0x0d6014, 0x0d6015) AM_READ(sound_status_r) - AM_RANGE(0x0d6000, 0x0d601f) AM_RAM /* sound regs fall through */ + AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) /* VSCCS regs */ AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3") AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4") @@ -427,9 +401,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, moo_state ) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) - AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) + AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) ADDRESS_MAP_END @@ -518,7 +490,7 @@ MACHINE_RESET_MEMBER(moo_state,moo) m_sprite_colorbase = 0; } -static MACHINE_CONFIG_START( moo, moo_state ) +static MACHINE_CONFIG_START( moo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) // 16MHz verified @@ -569,9 +541,7 @@ static MACHINE_CONFIG_START( moo, moo_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_GENERIC_LATCH_8_ADD("soundlatch2") - MCFG_GENERIC_LATCH_8_ADD("soundlatch3") + MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker") MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) // 4MHz verified MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) @@ -582,7 +552,7 @@ static MACHINE_CONFIG_START( moo, moo_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( moobl, moo_state ) +static MACHINE_CONFIG_START( moobl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16100000) @@ -627,7 +597,7 @@ static MACHINE_CONFIG_START( moobl, moo_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -865,6 +835,42 @@ ROM_START( buckyea ) /* Version EA */ ROM_LOAD( "bucky.nv", 0x0000, 0x080, CRC(6a5986f3) SHA1(3efddeed261b09031c582e12318f00c2cbb214ea) ) ROM_END +ROM_START( buckyjaa ) /* Version JA */ + ROM_REGION( 0x240000, "maincpu", 0 ) + /* main program */ + ROM_LOAD16_BYTE( "173_ja_a01.05", 0x000000, 0x040000, CRC(0a32bde7) SHA1(17b7654fd69eb1b82e2949ef324ce599113360aa) ) /* JAA */ + ROM_LOAD16_BYTE( "173_ja_a02.06", 0x000001, 0x040000, CRC(3e6f3955) SHA1(09ca39da8bdb37cb5517fe59cff5467c0623c380) ) /* JAA */ + + /* data */ + ROM_LOAD16_BYTE( "173a03.t5", 0x200000, 0x20000, CRC(cd724026) SHA1(525445499604b713da4d8bc0a88e428654ceab95) ) + ROM_LOAD16_BYTE( "173a04.t6", 0x200001, 0x20000, CRC(7dd54d6f) SHA1(b0ee8ec445b92254bca881eefd4449972fed506a) ) + + ROM_REGION( 0x050000, "soundcpu", 0 ) + /* Z80 sound program */ + ROM_LOAD( "173a07.f5", 0x000000, 0x040000, CRC(4cdaee71) SHA1(bdc05d4475415f6fac65d7cdbc48df398e57845e) ) + ROM_RELOAD( 0x010000, 0x040000 ) + + ROM_REGION( 0x200000, "gfx1", 0 ) + /* tilemaps */ + ROM_LOAD32_WORD( "173a05.t8", 0x000000, 0x100000, CRC(d14333b4) SHA1(d1a15ead2d156e1fceca0bf202ab3962411caf11) ) + ROM_LOAD32_WORD( "173a06.t10", 0x000002, 0x100000, CRC(6541a34f) SHA1(15cf481498e3b7e0b2f7bfe5434121cc3bd65662) ) + + ROM_REGION( 0x800000, "gfx2", 0 ) + /* sprites */ + ROM_LOAD64_WORD( "173a10.b8", 0x000000, 0x200000, CRC(42fb0a0c) SHA1(d68c932cfabdec7896698b433525fe47ef4698d0) ) + ROM_LOAD64_WORD( "173a11.a8", 0x000002, 0x200000, CRC(b0d747c4) SHA1(0cf1ee1b9a35ded31a81c321df2a076f7b588971) ) + ROM_LOAD64_WORD( "173a12.b10", 0x000004, 0x200000, CRC(0fc2ad24) SHA1(6eda1043ee1266b8ba938a03a90bc7787210a936) ) + ROM_LOAD64_WORD( "173a13.a10", 0x000006, 0x200000, CRC(4cf85439) SHA1(8c298bf0e659a830a1830a1180f4ce71215ade45) ) + + ROM_REGION( 0x400000, "k054539", 0 ) + /* K054539 samples */ + ROM_LOAD( "173a08.b6", 0x000000, 0x200000, CRC(dcdded95) SHA1(8eeb546a0b60a35a6dce36c5ee872e6c93c577c9) ) + ROM_LOAD( "173a09.a6", 0x200000, 0x200000, CRC(c93697c4) SHA1(0528a604868267a30d281b822c187df118566691) ) + + ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error + ROM_LOAD( "buckyja.nv", 0x0000, 0x080, CRC(2f280a74) SHA1(c4b4472da57599587325bad6d9e7760916076816) ) +ROM_END + ROM_START( buckyuab ) /* Version UA */ ROM_REGION( 0x240000, "maincpu", 0 ) /* main program */ @@ -993,12 +999,13 @@ ROM_START( moomesabl ) ROM_END -GAME( 1992, moomesa, 0, moo, moo, driver_device, 0, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver EAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, moomesauac, moomesa, moo, moo, driver_device, 0, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver UAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, moomesauab, moomesa, moo, moo, driver_device, 0, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, moomesaaab, moomesa, moo, moo, driver_device, 0, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver AAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, moomesabl, moomesa, moobl, moo, driver_device, 0, ROT0, "bootleg", "Wild West C.O.W.-Boys of Moo Mesa (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // based on Version AA -GAME( 1992, bucky, 0, bucky, bucky, driver_device, 0, ROT0, "Konami", "Bucky O'Hare (ver EAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, buckyea, bucky, bucky, bucky, driver_device, 0, ROT0, "Konami", "Bucky O'Hare (ver EA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, buckyuab, bucky, bucky, bucky, driver_device, 0, ROT0, "Konami", "Bucky O'Hare (ver UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, buckyaab, bucky, bucky, bucky, driver_device, 0, ROT0, "Konami", "Bucky O'Hare (ver AAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, moomesa, 0, moo, moo, moo_state, 0, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver EAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, moomesauac, moomesa, moo, moo, moo_state, 0, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver UAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, moomesauab, moomesa, moo, moo, moo_state, 0, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, moomesaaab, moomesa, moo, moo, moo_state, 0, ROT0, "Konami", "Wild West C.O.W.-Boys of Moo Mesa (ver AAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, moomesabl, moomesa, moobl, moo, moo_state, 0, ROT0, "bootleg", "Wild West C.O.W.-Boys of Moo Mesa (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // based on Version AA +GAME( 1992, bucky, 0, bucky, bucky, moo_state, 0, ROT0, "Konami", "Bucky O'Hare (ver EAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, buckyea, bucky, bucky, bucky, moo_state, 0, ROT0, "Konami", "Bucky O'Hare (ver EA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, buckyjaa, bucky, bucky, bucky, moo_state, 0, ROT0, "Konami", "Bucky O'Hare (ver JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, buckyuab, bucky, bucky, bucky, moo_state, 0, ROT0, "Konami", "Bucky O'Hare (ver UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, buckyaab, bucky, bucky, bucky, moo_state, 0, ROT0, "Konami", "Bucky O'Hare (ver AAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mosaic.cpp b/src/mame/drivers/mosaic.cpp index fa8284734a6..d3b31481093 100644 --- a/src/mame/drivers/mosaic.cpp +++ b/src/mame/drivers/mosaic.cpp @@ -246,7 +246,7 @@ void mosaic_state::machine_reset() m_prot_val = 0; } -static MACHINE_CONFIG_START( mosaic, mosaic_state ) +static MACHINE_CONFIG_START( mosaic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, 7000000) /* ??? */ @@ -344,6 +344,6 @@ ROM_END -GAME( 1990, mosaic, 0, mosaic, mosaic, driver_device, 0, ROT0, "Space", "Mosaic", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mosaica, mosaic, mosaic, mosaic, driver_device, 0, ROT0, "Space (Fuuki license)", "Mosaic (Fuuki)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, gfire2, 0, gfire2, gfire2, driver_device, 0, ROT0, "Topis Corp", "Golden Fire II", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mosaic, 0, mosaic, mosaic, mosaic_state, 0, ROT0, "Space", "Mosaic", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mosaica, mosaic, mosaic, mosaic, mosaic_state, 0, ROT0, "Space (Fuuki license)", "Mosaic (Fuuki)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, gfire2, 0, gfire2, gfire2, mosaic_state, 0, ROT0, "Topis Corp", "Golden Fire II", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mouser.cpp b/src/mame/drivers/mouser.cpp index d1a096749f5..6dfa00ac4e9 100644 --- a/src/mame/drivers/mouser.cpp +++ b/src/mame/drivers/mouser.cpp @@ -201,7 +201,7 @@ void mouser_state::machine_reset() m_nmi_enable = 0; } -static MACHINE_CONFIG_START( mouser, mouser_state ) +static MACHINE_CONFIG_START( mouser ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz ? */ @@ -302,5 +302,5 @@ DRIVER_INIT_MEMBER(mouser_state,mouser) } -GAME( 1983, mouser, 0, mouser, mouser, mouser_state, mouser, ROT90, "UPL", "Mouser", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mouser, 0, mouser, mouser, mouser_state, mouser, ROT90, "UPL", "Mouser", MACHINE_SUPPORTS_SAVE ) GAME( 1983, mouserc, mouser, mouser, mouser, mouser_state, mouser, ROT90, "UPL (Cosmos license)", "Mouser (Cosmos)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp index a2d1edcd748..f850c163a6e 100644 --- a/src/mame/drivers/mpf1.cpp +++ b/src/mame/drivers/mpf1.cpp @@ -352,7 +352,7 @@ void mpf1_state::machine_reset() /* Machine Drivers */ -static MACHINE_CONFIG_START( mpf1, mpf1_state ) +static MACHINE_CONFIG_START( mpf1 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_3_579545MHz/2) @@ -387,7 +387,7 @@ static MACHINE_CONFIG_START( mpf1, mpf1_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("halt_timer", mpf1_state, check_halt_callback, attotime::from_hz(1)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mpf1b, mpf1_state ) +static MACHINE_CONFIG_START( mpf1b ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_3_579545MHz/2) MCFG_CPU_PROGRAM_MAP(mpf1b_map) @@ -424,7 +424,7 @@ static MACHINE_CONFIG_START( mpf1b, mpf1_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("halt_timer", mpf1_state, check_halt_callback, attotime::from_hz(1)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mpf1p, mpf1_state ) +static MACHINE_CONFIG_START( mpf1p ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, 2500000) MCFG_CPU_PROGRAM_MAP(mpf1p_map) @@ -486,6 +486,6 @@ DRIVER_INIT_MEMBER(mpf1_state,mpf1) m_program = &m_maincpu->space(AS_PROGRAM); } -COMP( 1979, mpf1, 0, 0, mpf1, mpf1, mpf1_state, mpf1, "Multitech", "Micro Professor 1", 0) -COMP( 1979, mpf1b, mpf1, 0, mpf1b,mpf1b, mpf1_state, mpf1, "Multitech", "Micro Professor 1B", 0) -COMP( 1982, mpf1p, mpf1, 0, mpf1p,mpf1b, mpf1_state, mpf1, "Multitech", "Micro Professor 1 Plus", MACHINE_NOT_WORKING) +COMP( 1979, mpf1, 0, 0, mpf1, mpf1, mpf1_state, mpf1, "Multitech", "Micro Professor 1", 0 ) +COMP( 1979, mpf1b, mpf1, 0, mpf1b,mpf1b, mpf1_state, mpf1, "Multitech", "Micro Professor 1B", 0 ) +COMP( 1982, mpf1p, mpf1, 0, mpf1p,mpf1b, mpf1_state, mpf1, "Multitech", "Micro Professor 1 Plus", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/mps1230.cpp b/src/mame/drivers/mps1230.cpp index d12a09470cf..99cdff6ff25 100644 --- a/src/mame/drivers/mps1230.cpp +++ b/src/mame/drivers/mps1230.cpp @@ -132,7 +132,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( mps1230 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( mps1230, mps1230_state ) +static MACHINE_CONFIG_START( mps1230 ) MCFG_CPU_ADD(CPU_TAG, UPD7810, 11060000) MCFG_CPU_PROGRAM_MAP(mps1230_map) MACHINE_CONFIG_END @@ -157,6 +157,6 @@ ROM_START(mps1230) ROM_LOAD( "peek.f03ee", 0x000000, 0x010000, CRC(b5215f25) SHA1(dcfdd16942652447c472301392d9b39514547af1) ) // ver 2.1E, 09/AUG/1989 ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1986, mps1000, 0, 0, mps1230, mps1230, driver_device, 0, "Commodore Business Machines", "MPS-1000 Printer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_OTHER ) -COMP( 1988, mps1230, 0, 0, mps1230, mps1230, driver_device, 0, "Commodore Business Machines", "MPS-1230 NLQ Printer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_OTHER ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1986, mps1000, 0, 0, mps1230, mps1230, mps1230_state, 0, "Commodore Business Machines", "MPS-1000 Printer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_OTHER ) +COMP( 1988, mps1230, 0, 0, mps1230, mps1230, mps1230_state, 0, "Commodore Business Machines", "MPS-1230 NLQ Printer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_OTHER ) diff --git a/src/mame/drivers/mpu12wbk.cpp b/src/mame/drivers/mpu12wbk.cpp index dfd26114196..1addccedda6 100644 --- a/src/mame/drivers/mpu12wbk.cpp +++ b/src/mame/drivers/mpu12wbk.cpp @@ -483,7 +483,7 @@ GFXDECODE_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( mpu12wbk, mpu12wbk_state ) +static MACHINE_CONFIG_START( mpu12wbk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/2) /* guess */ @@ -560,5 +560,5 @@ DRIVER_INIT_MEMBER(mpu12wbk_state, mpu12wbk) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 1997, fruitstb, 0, mpu12wbk, mpu12wbk, mpu12wbk_state, mpu12wbk, ROT0, "Webak Elektronik", "Fruit Star Bonus (Ver 8.20PIR)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/mpu2.cpp b/src/mame/drivers/mpu2.cpp index 1ded190b0b2..9c7aa3fcdb3 100644 --- a/src/mame/drivers/mpu2.cpp +++ b/src/mame/drivers/mpu2.cpp @@ -67,7 +67,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( mpu2, mpu2_state ) +static MACHINE_CONFIG_START( mpu2 ) MCFG_CPU_ADD("maincpu", M6800, 2000000) // ? MCFG_CPU_PROGRAM_MAP(mpu2_basemap) MACHINE_CONFIG_END @@ -98,5 +98,5 @@ ROM_START( m2svlite ) ROM_LOAD( "sl1.bin", 0x0000, 0x0800, CRC(afe04b5a) SHA1(3b3385a9b039992279fda5b87926b5089a448581) ) ROM_END -GAME(198?, m2hilite, 0, mpu2, mpu2, driver_device, 0, ROT0, "Barcrest", "Hi-Lights (Barcrest) (MPU2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(198?, m2svlite, 0, mpu2, mpu2, driver_device, 0, ROT0, "Barcrest", "Silver Lights (Barcrest) (MPU2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(198?, m2hilite, 0, mpu2, mpu2, mpu2_state, 0, ROT0, "Barcrest", "Hi-Lights (Barcrest) (MPU2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(198?, m2svlite, 0, mpu2, mpu2, mpu2_state, 0, ROT0, "Barcrest", "Silver Lights (Barcrest) (MPU2)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/mpu3.cpp b/src/mame/drivers/mpu3.cpp index f914909b4c5..c9eb63f6c58 100644 --- a/src/mame/drivers/mpu3.cpp +++ b/src/mame/drivers/mpu3.cpp @@ -178,15 +178,15 @@ class mpu3_state : public driver_device { public: mpu3_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_reel0(*this, "reel0"), - m_reel1(*this, "reel1"), - m_reel2(*this, "reel2"), - m_reel3(*this, "reel3"), - m_meters(*this, "meters"), - m_vfd(*this, "vfd") - { } + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_reel0(*this, "reel0") + , m_reel1(*this, "reel1") + , m_reel2(*this, "reel2") + , m_reel3(*this, "reel3") + , m_meters(*this, "meters") + , m_vfd(*this, "vfd") + { } int m_triac_ic3; int m_triac_ic4; @@ -265,7 +265,7 @@ public: required_device m_reel2; required_device m_reel3; required_device m_meters; - optional_device m_vfd; + optional_device m_vfd; }; #define DISPLAY_PORT 0 @@ -847,7 +847,7 @@ ADDRESS_MAP_END MCFG_STEPPER_INDEX_PATTERN(0x00)\ MCFG_STEPPER_INIT_PHASE(2) -static MACHINE_CONFIG_START( mpu3base, mpu3_state ) +static MACHINE_CONFIG_START( mpu3base ) MCFG_CPU_ADD("maincpu", M6808, MPU3_MASTER_CLOCK)///4) MCFG_CPU_PROGRAM_MAP(mpu3_basemap) @@ -1617,10 +1617,10 @@ ROM_END #define GAME_FLAGS MACHINE_NOT_WORKING|MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL|MACHINE_CLICKABLE_ARTWORK -GAME( 198?, m3tst, 0, mpu3base, mpu3, driver_device, 0, ROT0, "Barcrest","MPU3 Unit Test (Program 5) (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3tst, 0, mpu3base, mpu3, mpu3_state, 0, ROT0, "Barcrest","MPU3 Unit Test (Program 5) (Barcrest) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3autort, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Autoroute (Barcrest) (MPU3)", GAME_FLAGS, layout_m3autort ) -GAME( 198?, m3big20j, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Big 20 Joker (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3big20j, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Big 20 Joker (Barcrest) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3biggam, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","The Big Game (Barcrest) (MPU3)", GAME_FLAGS, layout_m3biggam ) GAMEL( 198?, m3bigsht, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Big Shot (Barcrest) (MPU3)", GAME_FLAGS, layout_m3bigsht ) GAMEL( 198?, m3blkhle, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Black Hole (Barcrest) (MPU3)", GAME_FLAGS, layout_m3blkhle ) @@ -1628,26 +1628,26 @@ GAMEL( 198?, m3cabret, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, GAMEL( 198?, m3cabreta, m3cabret, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Cabaret (Barcrest) (MPU3, set 2)", GAME_FLAGS, layout_m3cabreta ) GAMEL( 198?, m3cunlim, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Chances Unlimited (Barcrest) (MPU3)", GAME_FLAGS, layout_m3cunlim ) GAMEL( 198?, m3cskill, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Circle Skill (Barcrest) (MPU3)", GAME_FLAGS, layout_m3cskill ) -GAME( 198?, m3cjoker, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Crazy Joker (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3cjoker, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Crazy Joker (Barcrest) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3xchngg, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Exchanges Galore (Barcrest) (MPU3)", GAME_FLAGS, layout_m3xchngg ) -GAME( 198?, m3xchngu, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Exchanges Unlimited (Barcrest) (MPU3, set 1)",GAME_FLAGS ) -GAME( 198?, m3xchngua, m3xchngu, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Exchanges Unlimited (Barcrest) (MPU3, set 2)",GAME_FLAGS ) +GAME( 198?, m3xchngu, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Exchanges Unlimited (Barcrest) (MPU3, set 1)",GAME_FLAGS ) +GAME( 198?, m3xchngua, m3xchngu, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Exchanges Unlimited (Barcrest) (MPU3, set 2)",GAME_FLAGS ) GAMEL( 198?, m3fortun, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Fortune Numbers (Barcrest) (MPU3, set 1)", GAME_FLAGS, layout_m3fortun ) GAMEL( 198?, m3fortuna, m3fortun, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Fortune Numbers (Barcrest) (MPU3, set 2)", GAME_FLAGS, layout_m3fortun ) GAMEL( 198?, m3fortund, m3fortun, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Fortune Numbers (Barcrest) [Dutch] (MPU3)", GAME_FLAGS, layout_m3fortun ) -GAME( 198?, m3gaward, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Golden Award (Barcrest) (MPU3)",GAME_FLAGS ) -GAME( 198?, m3hprvpr, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Hyper Viper (Barcrest) (MPU3)",GAME_FLAGS ) -GAME( 198?, m3snappy, m3hprvpr, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Snappy Viper (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3gaward, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Golden Award (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3hprvpr, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Hyper Viper (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3snappy, m3hprvpr, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Snappy Viper (Barcrest) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3replay, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Instant Replay (Barcrest) (MPU3)", GAME_FLAGS, layout_m3replay ) GAMEL( 198?, m3lineup, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Line Up (Barcrest) (MPU3)", GAME_FLAGS, layout_m3lineup ) -GAME( 198?, m3llotto, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Lucky Lotto (Barcrest) (MPU3)",GAME_FLAGS ) -GAME( 198?, m3lstrik, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Lucky Strike Club (Barcrest) (MPU3, set 1)",GAME_FLAGS ) -GAME( 198?, m3lstrika, m3lstrik, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Lucky Strike Club (Barcrest) (MPU3, set 2)",GAME_FLAGS ) -GAME( 198?, m3magrp, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Magic Replay (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3llotto, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Lucky Lotto (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3lstrik, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Lucky Strike Club (Barcrest) (MPU3, set 1)",GAME_FLAGS ) +GAME( 198?, m3lstrika, m3lstrik, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Lucky Strike Club (Barcrest) (MPU3, set 2)",GAME_FLAGS ) +GAME( 198?, m3magrp, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Magic Replay (Barcrest) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3nnice, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Naughty But Nice (Barcrest) (MPU3)", GAME_FLAGS, layout_m3nnice ) -GAME( 198?, m3nudge, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Nudges Unlimited (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3nudge, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Nudges Unlimited (Barcrest) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3oddson, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Odds On (Barcrest) (MPU3)", GAME_FLAGS, layout_m3oddson ) -GAME( 198?, m3optunl, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Options Unlimited (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3optunl, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Options Unlimited (Barcrest) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3razdaz, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Razzle Dazzle (Barcrest) (MPU3, set 1)", GAME_FLAGS, layout_m3razdaza ) GAMEL( 198?, m3razdaza, m3razdaz, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Razzle Dazzle (Barcrest) (MPU3, set 2)", GAME_FLAGS, layout_m3razdaza ) GAMEL( 198?, m3razdazd, m3razdaz, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Razzle Dazzle (Barcrest) [Dutch] (MPU3)", GAME_FLAGS, layout_m3razdaza ) @@ -1657,25 +1657,25 @@ GAMEL( 198?, m3circlea, m3circle, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, GAMEL( 198?, m3circleb, m3circle, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Special Circle Club (Barcrest) (MPU3, set 3)", GAME_FLAGS, layout_m3circle ) GAMEL( 198?, m3slight, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Strike A Light (Barcrest) (MPU3)", GAME_FLAGS, layout_m3slight ) GAMEL( 198?, m3supadr, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Adders & Ladders (Barcrest) (MPU3)", GAME_FLAGS, layout_m3supadr ) -GAME( 198?, m3sdeal, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Deal (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3sdeal, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Deal (Barcrest) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3sexcu, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Exchanges Unlimited (Barcrest) (MPU3)", GAME_FLAGS, layout_m3sexcu ) -GAME( 198?, m3suplin, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Line Up (Barcrest) (MPU3, set 1)",GAME_FLAGS ) -GAME( 198?, m3suplina, m3suplin, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Line Up (Barcrest) (MPU3, set 2)",GAME_FLAGS ) +GAME( 198?, m3suplin, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Line Up (Barcrest) (MPU3, set 1)",GAME_FLAGS ) +GAME( 198?, m3suplina, m3suplin, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Line Up (Barcrest) (MPU3, set 2)",GAME_FLAGS ) GAMEL( 198?, m3supnud, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Nudges Unlimited (Barcrest) (MPU3)", GAME_FLAGS, layout_m3supnud ) -GAME( 198?, m3supser, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Series (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3supser, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Super Series (Barcrest) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3sweep, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Sweep Stake Club (Barcrest) (MPU3, set 1)", GAME_FLAGS, layout_m3sweep ) GAMEL( 198?, m3sweepa, m3sweep, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Sweep Stake Club (Barcrest) (MPU3, set 2)", GAME_FLAGS, layout_m3sweep ) -GAME( 198?, m3topsht, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Top Shot (Barcrest) (MPU3)",GAME_FLAGS ) -GAME( 198?, m3winstra, m3winstr, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Winstrike (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3topsht, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Top Shot (Barcrest) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3winstra, m3winstr, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Barcrest","Winstrike (Barcrest) (MPU3)",GAME_FLAGS ) /* Bwb */ GAMEL( 198?, m3acech, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Ace Chase (Bwb) (MPU3)", GAME_FLAGS, layout_m3acech ) -GAME( 198?, m3bankr, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Banker (Bwb) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3bankr, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Banker (Bwb) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3chase, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Chase It (Bwb) (MPU3)", GAME_FLAGS, layout_m3chase ) GAMEL( 198?, m3gmine, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Gold Mine (Bwb) (MPU3)", GAME_FLAGS, layout_m3gmine ) GAMEL( 198?, m3ratrce, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Rat Race (Bwb) (MPU3)", GAME_FLAGS, layout_m3ratrce ) -GAME( 198?, m3supasw, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Supaswop (Bwb) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3supasw, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Supaswop (Bwb) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3supwin, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Super Win (Bwb) (MPU3, set 1)", GAME_FLAGS, layout_m3supwin ) GAMEL( 198?, m3supwina, m3supwin, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Super Win (Bwb) (MPU3, set 2)", GAME_FLAGS, layout_m3supwin ) GAMEL( 198?, m3winagn, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Bwb","Win-A-Gain (Bwb) (MPU3, set 1)", GAME_FLAGS, layout_m3winagnb ) @@ -1685,7 +1685,7 @@ GAMEL( 198?, m3winstr, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, /* Pcp */ -GAME( 198?, m3cdash, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","Cash Dash (Pcp) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3cdash, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","Cash Dash (Pcp) (MPU3)",GAME_FLAGS ) GAMEL( 198?, m3loony, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","Loonybin (Pcp) (MPU3)", GAME_FLAGS, layout_m3loony ) GAMEL( 198?, m3online, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","On Line (Pcp) (MPU3)", GAME_FLAGS, layout_m3online ) GAMEL( 198?, m3rockpl, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","Rock Pile (Pcp) (MPU3)", GAME_FLAGS, layout_m3rockpl ) @@ -1696,20 +1696,20 @@ GAMEL( 198?, m3spoofa, m3spoof, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, GAMEL( 198?, m3supspo, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","Super Spoof (Pcp) (MPU3, set 1)", GAME_FLAGS, layout_m3supspo ) GAMEL( 198?, m3supspoa, m3supspo, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","Super Spoof (Pcp) (MPU3, set 2)", GAME_FLAGS, layout_m3supspo ) GAMEL( 198?, m3toplin, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","Top Line (Pcp) (MPU3)", GAME_FLAGS, layout_m3toplin ) -GAME( 198?, m3wigwam, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","Wig Wam (Pcp) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3wigwam, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Pcp","Wig Wam (Pcp) (MPU3)",GAME_FLAGS ) /* Mdm */ GAMEL( 198?, m3gcrown, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Mdm","Golden Crowns (Mdm) (MPU3)", GAME_FLAGS, layout_m3gcrown ) GAMEL( 198?, m3tfair, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Mdm","Tuppenny Fair (Mdm) (MPU3)", GAME_FLAGS, layout_m3tfair ) -GAME( 198?, m3wacky, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Mdm","Wacky Racer (Mdm) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3wacky, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Mdm","Wacky Racer (Mdm) (MPU3)",GAME_FLAGS ) /* VFS */ GAMEL( 198?, m3oxo, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "VFS","Noughts 'n' Crosses (VFS) (MPU3)", GAME_FLAGS, layout_m3oxo ) -GAME( 198?, m3mremon, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "VFS","More Money (VFS) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3mremon, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "VFS","More Money (VFS) (MPU3)",GAME_FLAGS ) /* Others */ -GAME( 198?, m3minmax, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Associated Leisure","Mini Max (Associated Leisure) (MPU3)",GAME_FLAGS ) -GAME( 198?, m3scoop, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Peter Simper","Scoop (Peter Simper, prototype?) (MPU3)",GAME_FLAGS ) -GAME( 198?, m3tlktwn, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "","Talk of the Town (MPU3?)",GAME_FLAGS ) +GAME( 198?, m3minmax, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Associated Leisure","Mini Max (Associated Leisure) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3scoop, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "Peter Simper","Scoop (Peter Simper, prototype?) (MPU3)",GAME_FLAGS ) +GAME( 198?, m3tlktwn, 0, mpu3base, mpu3, mpu3_state, m3hprvpr, ROT0, "","Talk of the Town (MPU3?)",GAME_FLAGS ) diff --git a/src/mame/drivers/mpu4.cpp b/src/mame/drivers/mpu4.cpp index f889fa3af7f..45d3829be3a 100644 --- a/src/mame/drivers/mpu4.cpp +++ b/src/mame/drivers/mpu4.cpp @@ -3083,7 +3083,7 @@ MACHINE_CONFIG_FRAGMENT( mpu4_common2 ) MACHINE_CONFIG_END /* machine driver for MOD 2 board */ -MACHINE_CONFIG_START( mpu4base, mpu4_state ) +MACHINE_CONFIG_START( mpu4base ) MCFG_MACHINE_START_OVERRIDE(mpu4_state,mod2 ) MCFG_MACHINE_RESET_OVERRIDE(mpu4_state,mpu4) diff --git a/src/mame/drivers/mpu4dealem.cpp b/src/mame/drivers/mpu4dealem.cpp index 8327c7e983f..a1797b42da3 100644 --- a/src/mame/drivers/mpu4dealem.cpp +++ b/src/mame/drivers/mpu4dealem.cpp @@ -194,7 +194,7 @@ MACHINE_RESET_MEMBER(mpu4dealem_state,dealem_vid) /* machine driver for Zenitone Deal 'Em board */ -static MACHINE_CONFIG_START( dealem, mpu4dealem_state ) +static MACHINE_CONFIG_START( dealem ) MCFG_MACHINE_START_OVERRIDE(mpu4dealem_state,mod2) /* main mpu4 board initialisation */ MCFG_MACHINE_RESET_OVERRIDE(mpu4dealem_state,dealem_vid) @@ -380,4 +380,4 @@ and reel assembly with this kit and a supplied monitor. This explains why the ca The original Deal 'Em ran on Summit Coin hardware, and was made by someone else. Two further different releases were made, running on the Barcrest MPU4 Video, rather than this one. These are Deal 'Em Again and Deal 'Em 2000*/ -GAME( 1987,v4dealem, 0, dealem, dealem, driver_device, 0, ROT0, "Zenitone","Deal 'Em (MPU4 Conversion Kit, v7.0)",MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1987,v4dealem, 0, dealem, dealem, mpu4dealem_state, 0, ROT0, "Zenitone","Deal 'Em (MPU4 Conversion Kit, v7.0)",MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/mpu4plasma.cpp b/src/mame/drivers/mpu4plasma.cpp index ef2f442f5c2..dc141ff5d7d 100644 --- a/src/mame/drivers/mpu4plasma.cpp +++ b/src/mame/drivers/mpu4plasma.cpp @@ -87,7 +87,7 @@ uint32_t mpu4plasma_state::screen_update_mpu4plasma(screen_device &screen, bitma } -MACHINE_CONFIG_DERIVED_CLASS( mpu4plasma , mod2, mpu4plasma_state ) +MACHINE_CONFIG_DERIVED( mpu4plasma, mod2 ) MCFG_CPU_ADD("plasmacpu", M68000, 10000000) MCFG_CPU_PROGRAM_MAP(mpu4plasma_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", mpu4plasma_state, irq4_line_hold) @@ -196,14 +196,14 @@ ROM_END #define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) -GAMEL(199?, m4bigchf ,0 ,mpu4plasma ,mpu4 , mpu4_state,m4default ,ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) -GAMEL(199?, m4bigchfa ,m4bigchf ,mpu4plasma ,mpu4 , mpu4_state,m4default ,ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) -GAMEL(199?, m4bigchfb ,m4bigchf ,mpu4plasma ,mpu4 , mpu4_state,m4default ,ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) -GAMEL(199?, m4bigchfc ,m4bigchf ,mpu4plasma ,mpu4 , mpu4_state,m4default ,ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) +GAMEL(199?, m4bigchf ,0 ,mpu4plasma ,mpu4 , mpu4plasma_state,m4default ,ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) +GAMEL(199?, m4bigchfa ,m4bigchf ,mpu4plasma ,mpu4 , mpu4plasma_state,m4default ,ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) +GAMEL(199?, m4bigchfb ,m4bigchf ,mpu4plasma ,mpu4 , mpu4plasma_state,m4default ,ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) +GAMEL(199?, m4bigchfc ,m4bigchf ,mpu4plasma ,mpu4 , mpu4plasma_state,m4default ,ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) -GAMEL(199?, m4click ,0 ,mpu4plasma ,mpu4 , mpu4_state,m4default ,ROT0, "Barcrest","Clickity Click (Barcrest) (MPU4 w/ Plasma DMD)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) +GAMEL(199?, m4click ,0 ,mpu4plasma ,mpu4 , mpu4plasma_state,m4default ,ROT0, "Barcrest","Clickity Click (Barcrest) (MPU4 w/ Plasma DMD)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) // not confirmed to be plasma, is this an alt version of big chief? maybe it uses the same plasma roms? -GAMEL(199?, m4apach ,0 ,mpu4plasma ,mpu4 , mpu4_state,m4default ,ROT0, "Barcrest","Apache (Barcrest) (MPU4 w/ Plasma DMD?)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) +GAMEL(199?, m4apach ,0 ,mpu4plasma ,mpu4 , mpu4plasma_state,m4default ,ROT0, "Barcrest","Apache (Barcrest) (MPU4 w/ Plasma DMD?)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) // not confirmed to be plasma, but acts like it -GAMEL(199?, m4elite ,0 ,mpu4plasma ,mpu4 , mpu4_state,m4default ,ROT0, "Barcrest","Elite (Barcrest) (MPU4 w/ Plasma DMD?)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) +GAMEL(199?, m4elite ,0 ,mpu4plasma ,mpu4 , mpu4plasma_state,m4default ,ROT0, "Barcrest","Elite (Barcrest) (MPU4 w/ Plasma DMD?)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma ) diff --git a/src/mame/drivers/mpu4vid.cpp b/src/mame/drivers/mpu4vid.cpp index 18d1e439d4e..f94e46f8183 100644 --- a/src/mame/drivers/mpu4vid.cpp +++ b/src/mame/drivers/mpu4vid.cpp @@ -1267,7 +1267,7 @@ ADDRESS_MAP_END -static MACHINE_CONFIG_START( mpu4_vid, mpu4vid_state ) +static MACHINE_CONFIG_START( mpu4_vid ) MCFG_CPU_ADD("maincpu", M6809, MPU4_MASTER_CLOCK/4 ) MCFG_CPU_PROGRAM_MAP(mpu4_6809_map) @@ -3576,28 +3576,28 @@ ROM_END AMLD versions do not pay out, and instead just feature highscore tables. These were mainly intended for locations unwilling to pay for gaming licenses. The AMLD Crystal Maze versions appear to be a mixture of the original game modules and Team Challenge's scoring system. This would suggest they were all made ~1994. */ -GAME( 199?,v4bios, 0, mod2, mpu4, driver_device, 0, ROT0, "Barcrest","MPU4 Video Firmware",MACHINE_IS_BIOS_ROOT ) +GAME( 199?,v4bios, 0, mod2, mpu4, mpu4_state, 0, ROT0, "Barcrest","MPU4 Video Firmware",MACHINE_IS_BIOS_ROOT ) #define GAME_FLAGS MACHINE_NOT_WORKING -GAMEL( 1993,v4cmaze, v4bios, crmaze, crmaze, mpu4vid_state, crmaze, ROT0, "Barcrest","The Crystal Maze (v1.3) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9 -GAMEL( 1993,v4cmazedat, v4cmaze, crmaze, crmaze, mpu4vid_state, crmaze, ROT0, "Barcrest","The Crystal Maze (v1.3, Datapak) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9D -GAMEL( 1993,v4cmazea, v4cmaze, crmaze, crmaze, mpu4vid_state, crmazea, ROT0, "Barcrest","The Crystal Maze (v0.1, AMLD) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9 (actually newer than the 1.1 set then??) -GAMEL( 1993,v4cmazeb, v4cmaze, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze (v1.2) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9 -GAMEL( 1993,v4cmazec, v4cmaze, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze (v1.3 alt) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9 -GAMEL( 1993,v4cmazed, v4cmaze, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze (v1.1) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.6 - -GAMEL( 1993,v4cmaze2, v4bios, crmaze, crmaze, mpu4vid_state, crmaze2, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v2.2) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 1.0 -GAMEL( 1993,v4cmaze2d, v4cmaze2, crmaze, crmaze, mpu4vid_state, crmaze2, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v2.2, Datapak) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 1.0D -GAMEL( 1993,v4cmaze2a, v4cmaze2, crmaze, crmaze, mpu4vid_state, crmaze2a, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v0.1, AMLD) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 1.0 /* unprotected? proto? */ -GAMEL( 1993,v4cmaze2b, v4cmaze2, crmaze, crmaze, mpu4vid_state, crmaze2, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v2.0) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 1.0 -GAMEL( 1993,v4cmaze2c, v4cmaze2, crmaze, crmaze, mpu4vid_state, crmaze2, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v?.?) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )// bad rom? - -GAMEL( 1994,v4cmaze3, v4bios, crmaze, crmaze, mpu4vid_state, crmaze3, ROT0, "Barcrest","The Crystal Maze Team Challenge (v0.9) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 0.7 -GAMEL( 1994,v4cmaze3d, v4cmaze3, crmaze, crmaze, mpu4vid_state, crmaze3, ROT0, "Barcrest","The Crystal Maze Team Challenge (v0.9, Datapak) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 0.7D -GAMEL( 1994,v4cmaze3a, v4cmaze3, crmaze, crmaze, mpu4vid_state, crmaze3a, ROT0, "Barcrest","The Crystal Maze Team Challenge (v1.2, AMLD) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 0.7 -GAMEL( 1994,v4cmaze3b, v4cmaze3, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze Team Challenge (v0.8) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 0.7 -GAMEL( 1994,v4cmaze3c, v4cmaze3, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze Team Challenge (v?.?) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )// missing one program rom +GAMEL( 1993,v4cmaze, v4bios, crmaze, crmaze, mpu4vid_state, crmaze, ROT0, "Barcrest","The Crystal Maze (v1.3) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9 +GAMEL( 1993,v4cmazedat, v4cmaze, crmaze, crmaze, mpu4vid_state, crmaze, ROT0, "Barcrest","The Crystal Maze (v1.3, Datapak) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9D +GAMEL( 1993,v4cmazea, v4cmaze, crmaze, crmaze, mpu4vid_state, crmazea, ROT0, "Barcrest","The Crystal Maze (v0.1, AMLD) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9 (actually newer than the 1.1 set then??) +GAMEL( 1993,v4cmazeb, v4cmaze, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze (v1.2) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9 +GAMEL( 1993,v4cmazec, v4cmaze, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze (v1.3 alt) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.9 +GAMEL( 1993,v4cmazed, v4cmaze, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze (v1.1) (MPU4 Video)",GAME_FLAGS,layout_crmaze2p )//SWP 0.6 + +GAMEL( 1993,v4cmaze2, v4bios, crmaze, crmaze, mpu4vid_state, crmaze2, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v2.2) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 1.0 +GAMEL( 1993,v4cmaze2d, v4cmaze2, crmaze, crmaze, mpu4vid_state, crmaze2, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v2.2, Datapak) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 1.0D +GAMEL( 1993,v4cmaze2a, v4cmaze2, crmaze, crmaze, mpu4vid_state, crmaze2a, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v0.1, AMLD) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 1.0 /* unprotected? proto? */ +GAMEL( 1993,v4cmaze2b, v4cmaze2, crmaze, crmaze, mpu4vid_state, crmaze2, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v2.0) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 1.0 +GAMEL( 1993,v4cmaze2c, v4cmaze2, crmaze, crmaze, mpu4vid_state, crmaze2, ROT0, "Barcrest","The New Crystal Maze Featuring Ocean Zone (v?.?) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )// bad rom? + +GAMEL( 1994,v4cmaze3, v4bios, crmaze, crmaze, mpu4vid_state, crmaze3, ROT0, "Barcrest","The Crystal Maze Team Challenge (v0.9) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 0.7 +GAMEL( 1994,v4cmaze3d, v4cmaze3, crmaze, crmaze, mpu4vid_state, crmaze3, ROT0, "Barcrest","The Crystal Maze Team Challenge (v0.9, Datapak) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 0.7D +GAMEL( 1994,v4cmaze3a, v4cmaze3, crmaze, crmaze, mpu4vid_state, crmaze3a, ROT0, "Barcrest","The Crystal Maze Team Challenge (v1.2, AMLD) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 0.7 +GAMEL( 1994,v4cmaze3b, v4cmaze3, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze Team Challenge (v0.8) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )//SWP 0.7 +GAMEL( 1994,v4cmaze3c, v4cmaze3, crmaze, crmaze, mpu4vid_state, v4cmazeb, ROT0, "Barcrest","The Crystal Maze Team Challenge (v?.?) (MPU4 Video)",GAME_FLAGS,layout_crmaze4p )// missing one program rom GAME( 199?,v4turnov, v4bios, mpu4_vid, turnover, mpu4vid_state, turnover, ROT0, "Barcrest","Turnover (v2.3) (MPU4 Video)",GAME_FLAGS ) @@ -3605,14 +3605,14 @@ GAME( 1990,v4skltrk, v4bios, mpu4_vid, skiltrek, mpu4vid_state, skil GAME( 1990,v4skltrka, v4skltrk, mpu4_vid, skiltrek, mpu4vid_state, skiltrek, ROT0, "Barcrest","Skill Trek (v1.1) (MPU4 Video, set 2)",GAME_FLAGS ) // 12 pound max GAME( 1990,v4sklcsh, v4bios, mpu4_vid, skiltrek, mpu4vid_state, v4barqst, ROT0, "Barcrest","Skill Cash (v1.1) (MPU4 Video)",GAME_FLAGS ) -GAME( 1989,v4addlad, v4bios, mpu4_vid, adders, mpu4vid_state, adders, ROT0, "Barcrest","Adders and Ladders (v2.1) (MPU4 Video)",GAME_FLAGS ) -GAME( 1989,v4addlad20, v4addlad, mpu4_vid, adders, mpu4vid_state, adders, ROT0, "Barcrest","Adders and Ladders (v2.0) (MPU4 Video)",GAME_FLAGS ) +GAME( 1989,v4addlad, v4bios, mpu4_vid, adders, mpu4vid_state, adders, ROT0, "Barcrest","Adders and Ladders (v2.1) (MPU4 Video)",GAME_FLAGS ) +GAME( 1989,v4addlad20, v4addlad, mpu4_vid, adders, mpu4vid_state, adders, ROT0, "Barcrest","Adders and Ladders (v2.0) (MPU4 Video)",GAME_FLAGS ) GAME( 1989,v4time, v4bios, mpu4_vid, skiltrek, mpu4vid_state, timemchn, ROT0, "Barcrest","Time Machine (v2.0) (MPU4 Video)",GAME_FLAGS ) //Year is a guess, based on the use of the 'Coin Man' logo -GAME( 1996?,v4mate, v4bios, mating, mating, mpu4vid_state, mating, ROT0, "Barcrest","The Mating Game (v0.4) (MPU4 Video)",GAME_FLAGS )//SWP 0.2 /* Using crmaze controls for now, cabinet has trackball */ -GAME( 1996?,v4mated, v4mate, mating, mating, mpu4vid_state, mating, ROT0, "Barcrest","The Mating Game (v0.4, Datapak) (MPU4 Video)",GAME_FLAGS )//SWP 0.2D +GAME( 1996?,v4mate, v4bios, mating, mating, mpu4vid_state, mating, ROT0, "Barcrest","The Mating Game (v0.4) (MPU4 Video)",GAME_FLAGS )//SWP 0.2 /* Using crmaze controls for now, cabinet has trackball */ +GAME( 1996?,v4mated, v4mate, mating, mating, mpu4vid_state, mating, ROT0, "Barcrest","The Mating Game (v0.4, Datapak) (MPU4 Video)",GAME_FLAGS )//SWP 0.2D /* Games below are missing question ROMs */ @@ -3643,39 +3643,39 @@ GAME( 1991,v4opt3d, v4opt3, mpu4_vid, mpu4, mpu4vid_state, v4op /* Games below are newer BwB games and use their own BIOS ROMs and hardware setups*/ -GAME( 199?,v4vgpok, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Vegas Poker (prototype, release 2) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4vgpok, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Vegas Poker (prototype, release 2) (MPU4 Video)",GAME_FLAGS ) GAME( 199?,v4psi, 0, bwbvid, mpu4, mpu4vid_state, prizeinv, ROT0, "BwB","Prize Space Invaders (v1.1) (MPU4 Video)",GAME_FLAGS ) GAME( 199?,v4psia, 0, bwbvid, mpu4, mpu4vid_state, prizeinv, ROT0, "BwB","Prize Space Invaders (v1.2) (MPU4 Video)",GAME_FLAGS ) GAME( 199?,v4psib, 0, bwbvid, mpu4, mpu4vid_state, prizeinv, ROT0, "BwB","Prize Space Invaders (v2.0?) (MPU4 Video)",GAME_FLAGS ) // bad dump -GAME( 199?,v4blox, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Blox (v2.0) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4bloxd, v4blox, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Blox (v2.0, Datapak) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4blox, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Blox (v2.0) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4bloxd, v4blox, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Blox (v2.0, Datapak) (MPU4 Video)",GAME_FLAGS ) GAME( 1996,v4reno, 0, bwbvid5, mpu4, mpu4vid_state, prizeinv, ROT0, "BwB","Reno Reels (20p/10GBP Cash, release A) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4bigfrt, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Big Fruits (v2.0?) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4bubbnk, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Bubbly Bonk (v4.0?) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4mazbel, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Mazooma Belle (v2.5) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4mazbla, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Mazooma Belle (v1.5) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4shpwnd, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Shop Window (v2.0) (MPU4 Video)",GAME_FLAGS ) - -GAME( 199?,v4redhtp, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Red Hot Poker (20p/10GBP Cash, release 3) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4tetrs, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","BwB Tetris v 2.2 (MPU4 Video)",GAME_FLAGS ) - -GAME( 199?,v4big40, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Big 40 Poker (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4bulblx, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Bullion Blox (Bwb) (MPU4 Video)",GAME_FLAGS ) // is this the same game as v4blox? -GAME( 199?,v4cshinf, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Cash Inferno (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4dbltak, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Double Take (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4gldrsh, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Gold Rush (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4mdice, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Miami Dice (Bwb) (MPU4 Video)",GAME_FLAGS ) // is this the same as the Nova game below? -GAME( 199?,v4monte, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Monte Carlo Or Bust (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4ovrmn3, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Over Moon Pt3 (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4pztet, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Prize Tetris (Bwb) (MPU4 Video, set 1)",GAME_FLAGS ) // is this the same as v4tetrs? -GAME( 199?,v4pzteta, v4pztet, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Prize Tetris (Bwb) (MPU4 Video, set 2)",GAME_FLAGS ) -GAME( 199?,v4rhmaz, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Red Hot Mazooma Belle (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4sunbst, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Sunburst (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4timebn, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Time Bandit (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4sixx, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","6-X (Bwb) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4megbuk, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Megabucks Poker (Bwb) (MPU4 Video)",GAME_FLAGS ) // no video roms! -GAME( 199?,v4rencas, 0, bwbvid, mpu4, driver_device, 0, ROT0, "BwB","Reno Casino (Bwb) (MPU4 Video)",GAME_FLAGS ) // no video roms! +GAME( 199?,v4bigfrt, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Big Fruits (v2.0?) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4bubbnk, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Bubbly Bonk (v4.0?) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4mazbel, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Mazooma Belle (v2.5) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4mazbla, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Mazooma Belle (v1.5) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4shpwnd, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Shop Window (v2.0) (MPU4 Video)",GAME_FLAGS ) + +GAME( 199?,v4redhtp, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Red Hot Poker (20p/10GBP Cash, release 3) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4tetrs, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","BwB Tetris v 2.2 (MPU4 Video)",GAME_FLAGS ) + +GAME( 199?,v4big40, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Big 40 Poker (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4bulblx, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Bullion Blox (Bwb) (MPU4 Video)",GAME_FLAGS ) // is this the same game as v4blox? +GAME( 199?,v4cshinf, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Cash Inferno (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4dbltak, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Double Take (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4gldrsh, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Gold Rush (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4mdice, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Miami Dice (Bwb) (MPU4 Video)",GAME_FLAGS ) // is this the same as the Nova game below? +GAME( 199?,v4monte, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Monte Carlo Or Bust (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4ovrmn3, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Over Moon Pt3 (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4pztet, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Prize Tetris (Bwb) (MPU4 Video, set 1)",GAME_FLAGS ) // is this the same as v4tetrs? +GAME( 199?,v4pzteta, v4pztet, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Prize Tetris (Bwb) (MPU4 Video, set 2)",GAME_FLAGS ) +GAME( 199?,v4rhmaz, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Red Hot Mazooma Belle (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4sunbst, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Sunburst (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4timebn, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Time Bandit (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4sixx, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","6-X (Bwb) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4megbuk, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Megabucks Poker (Bwb) (MPU4 Video)",GAME_FLAGS ) // no video roms! +GAME( 199?,v4rencas, 0, bwbvid, mpu4, mpu4vid_state, 0, ROT0, "BwB","Reno Casino (Bwb) (MPU4 Video)",GAME_FLAGS ) // no video roms! /* Uncertain BIOS */ @@ -3685,6 +3685,6 @@ GAME( 199?,v4frfact, v4bios, crmaze, crmaze, mpu4vid_state, crma /* Nova - is this the same video board? One of the games displays 'Resetting' but the others do nothing interesting and access strange addresses */ /* All contain BwB video in the BIOS rom tho */ GAME( 199?,v4cybcas, 0, bwbvid5, mpu4, mpu4vid_state, cybcas, ROT0, "Nova","Cyber Casino (Nova) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4miami, 0, bwbvid5, mpu4, driver_device, 0, ROT0, "Nova","Miami Dice (Nova) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4missis, 0, bwbvid5, mpu4, driver_device, 0, ROT0, "Nova","Mississippi Lady (Nova) (MPU4 Video)",GAME_FLAGS ) -GAME( 199?,v4picdil, 0, bwbvid5, mpu4, driver_device, 0, ROT0, "Nova","Piccadilly Nights (Nova) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4miami, 0, bwbvid5, mpu4, mpu4vid_state, 0, ROT0, "Nova","Miami Dice (Nova) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4missis, 0, bwbvid5, mpu4, mpu4vid_state, 0, ROT0, "Nova","Mississippi Lady (Nova) (MPU4 Video)",GAME_FLAGS ) +GAME( 199?,v4picdil, 0, bwbvid5, mpu4, mpu4vid_state, 0, ROT0, "Nova","Piccadilly Nights (Nova) (MPU4 Video)",GAME_FLAGS ) diff --git a/src/mame/drivers/mpu5.cpp b/src/mame/drivers/mpu5.cpp index af1e49b57e4..dc67b2839a7 100644 --- a/src/mame/drivers/mpu5.cpp +++ b/src/mame/drivers/mpu5.cpp @@ -235,7 +235,7 @@ public: protected: // devices - required_device m_maincpu; + required_device m_maincpu; virtual void machine_start() override; }; @@ -541,7 +541,7 @@ void mpu5_state::machine_start() } -MACHINE_CONFIG_START( mpu5, mpu5_state ) +MACHINE_CONFIG_START( mpu5 ) MCFG_CPU_ADD("maincpu", M68340, 16000000) // ? MCFG_CPU_PROGRAM_MAP(mpu5_map) diff --git a/src/mame/drivers/mpu5.hxx b/src/mame/drivers/mpu5.hxx index 74997f208f4..745c5f7907e 100644 --- a/src/mame/drivers/mpu5.hxx +++ b/src/mame/drivers/mpu5.hxx @@ -7189,937 +7189,937 @@ ROM_END /* Barcrest */ -GAME( 199?, m5clr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","MPU 5 Ram & Meter Clear (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5tst ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","MPU 5 Test Rom (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5clr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","MPU 5 Ram & Meter Clear (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5tst ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","MPU 5 Test Rom (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5addams ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsa ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsb ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsc ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsd ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamse ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsf ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsg ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsh ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.2, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsi ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.2, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsj ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.2, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsk ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsl ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsm ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsn ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamso ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsp ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsq ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamsr ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAMEL( 199?, m5addamss ,m5addams, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 9)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addams ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsa ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsb ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsc ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsd ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamse ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsf ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsg ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.5, set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsh ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.2, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsi ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.2, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsj ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.2, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsk ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsl ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsm ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsn ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamso ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsp ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsq ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamsr ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) +GAMEL( 199?, m5addamss ,m5addams, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Addams Family (Barcrest) (MPU5) (v0.3, set 9)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5addams ) -GAME( 199?, m5addlad ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addlada ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladb ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladc ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladd ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addlade ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladf ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 7)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladg ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 8)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladh ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 9)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladi ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 10)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladj ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladk ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladl ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladm ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladn ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addlado ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladp ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 7)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladq ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.4, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addladr ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.4, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5addlads ,m5addlad, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v?.?)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addlad ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addlada ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladb ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladc ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladd ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addlade ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladf ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 7)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladg ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 8)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladh ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 9)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladi ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.6, set 10)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladj ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladk ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladl ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladm ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladn ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addlado ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladp ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.1, set 7)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladq ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.4, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addladr ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v0.4, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5addlads ,m5addlad, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Adders & Ladders (Barcrest) (MPU5, v?.?)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5fire ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","All Fired Up (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fire ) +GAMEL( 199?, m5fire ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","All Fired Up (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fire ) -GAMEL( 199?, m5arab ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Arabian Nights (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5arab ) -GAMEL( 199?, m5arab03 ,m5arab, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Arabian Nights (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5arab ) +GAMEL( 199?, m5arab ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Arabian Nights (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5arab ) +GAMEL( 199?, m5arab03 ,m5arab, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Arabian Nights (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5arab ) -GAMEL( 199?, m5austin ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Austin Powers (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5austin11 ) -GAMEL( 199?, m5austin10 ,m5austin, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Austin Powers (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5austin11 ) -GAMEL( 199?, m5austin11 ,m5austin, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Austin Powers (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5austin11 ) +GAMEL( 199?, m5austin ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Austin Powers (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5austin11 ) +GAMEL( 199?, m5austin10 ,m5austin, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Austin Powers (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5austin11 ) +GAMEL( 199?, m5austin11 ,m5austin, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Austin Powers (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5austin11 ) -GAME( 199?, m5bankrl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Bank Roll (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bankrl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Bank Roll (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5barkng ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Barking Mad (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5barkng ) +GAMEL( 199?, m5barkng ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Barking Mad (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5barkng ) -GAMEL( 199?, m5barmy ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Barmy Army (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5barmy ) +GAMEL( 199?, m5barmy ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Barmy Army (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5barmy ) -GAMEL( 199?, m5baxe ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Battle Axe (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5baxe04 ) -GAMEL( 199?, m5baxe04 ,m5baxe, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Battle Axe (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5baxe04 ) +GAMEL( 199?, m5baxe ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Battle Axe (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5baxe04 ) +GAMEL( 199?, m5baxe04 ,m5baxe, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Battle Axe (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5baxe04 ) -GAMEL( 199?, m5bbro ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Big Brother (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bbro ) -GAMEL( 199?, m5bbro02 ,m5bbro, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Big Brother (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bbro ) +GAMEL( 199?, m5bbro ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Big Brother (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bbro ) +GAMEL( 199?, m5bbro02 ,m5bbro, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Big Brother (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bbro ) -GAMEL( 199?, m5bbrocl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Big Brother Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bbrocl ) +GAMEL( 199?, m5bbrocl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Big Brother Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bbrocl ) -GAMEL( 199?, m5bigchs ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Big Cheese (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bigchs ) -GAMEL( 199?, m5bigchs05 ,m5bigchs, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Big Cheese (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bigchs ) +GAMEL( 199?, m5bigchs ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Big Cheese (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bigchs ) +GAMEL( 199?, m5bigchs05 ,m5bigchs, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Big Cheese (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bigchs ) -GAMEL( 199?, m5biggam ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Big Game (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5biggam ) -GAMEL( 199?, m5biggam11 ,m5biggam, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Big Game (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5biggam ) +GAMEL( 199?, m5biggam ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Big Game (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5biggam ) +GAMEL( 199?, m5biggam11 ,m5biggam, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Big Game (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5biggam ) -GAMEL( 199?, m5blkwht ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Black & White (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5blkwht11 ) -GAMEL( 199?, m5blkwht11 ,m5blkwht, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Black & White (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5blkwht11 ) -GAMEL( 199?, m5blkwht01 ,m5blkwht, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Black & White (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5blkwht11 ) +GAMEL( 199?, m5blkwht ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Black & White (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5blkwht11 ) +GAMEL( 199?, m5blkwht11 ,m5blkwht, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Black & White (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5blkwht11 ) +GAMEL( 199?, m5blkwht01 ,m5blkwht, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Black & White (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5blkwht11 ) -GAMEL( 199?, m5bwaves ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Brain Waves (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bwaves ) -GAMEL( 199?, m5bwaves07 ,m5bwaves, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Brain Waves (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bwaves ) +GAMEL( 199?, m5bwaves ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Brain Waves (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bwaves ) +GAMEL( 199?, m5bwaves07 ,m5bwaves, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Brain Waves (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bwaves ) -GAMEL( 199?, m5bling ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Bling King Crazy (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bling ) +GAMEL( 199?, m5bling ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Bling King Crazy (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bling ) -GAMEL( 199?, m5cbw ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ca$h Bang Wallop (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cbw ) -GAMEL( 199?, m5cbwa ,m5cbw, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ca$h Bang Wallop (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cbw ) +GAMEL( 199?, m5cbw ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ca$h Bang Wallop (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cbw ) +GAMEL( 199?, m5cbwa ,m5cbw, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ca$h Bang Wallop (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cbw ) -GAME( 199?, m5cpcash ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Captain Cash (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cpcash ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Captain Cash (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5carclb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Caribbean Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5carclb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Caribbean Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5cashar ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Cash Arena (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5cashar04 ,m5cashar, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Cash Arena (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cashar ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Cash Arena (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cashar04 ,m5cashar, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Cash Arena (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5cashat ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Cash Attack (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashat ) +GAMEL( 199?, m5cashat ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Cash Attack (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashat ) -GAME( 199?, m5cashln ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Cash Lines (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cashln ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Cash Lines (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5cashrn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Cash Run (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashrn ) -GAMEL( 199?, m5cashrn01 ,m5cashrn, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Cash Run (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashrn ) -GAMEL( 199?, m5cashrn02 ,m5cashrn, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Cash Run (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashrn ) -GAMEL( 199?, m5cashrn04 ,m5cashrn, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Cash Run (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashrn ) +GAMEL( 199?, m5cashrn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Cash Run (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashrn ) +GAMEL( 199?, m5cashrn01 ,m5cashrn, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Cash Run (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashrn ) +GAMEL( 199?, m5cashrn02 ,m5cashrn, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Cash Run (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashrn ) +GAMEL( 199?, m5cashrn04 ,m5cashrn, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Cash Run (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cashrn ) -GAMEL( 199?, m5codft ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Codfather (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5codft ) -GAMEL( 199?, m5codft02 ,m5codft, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Codfather (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5codft ) +GAMEL( 199?, m5codft ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Codfather (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5codft ) +GAMEL( 199?, m5codft02 ,m5codft, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Codfather (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5codft ) -GAME( 199?, m5cos ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Costa Del Cash Casino (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cos ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Costa Del Cash Casino (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5cosclb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Costa Del Cash Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cosclb ) +GAMEL( 199?, m5cosclb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Costa Del Cash Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cosclb ) -GAMEL( 199?, m5crzkni ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Crazy Crazy Knights (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5crzkni ) -GAMEL( 199?, m5crzkni03 ,m5crzkni, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Crazy Crazy Knights (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5crzkni ) +GAMEL( 199?, m5crzkni ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Crazy Crazy Knights (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5crzkni ) +GAMEL( 199?, m5crzkni03 ,m5crzkni, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Crazy Crazy Knights (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5crzkni ) -GAMEL( 199?, m5doshpk ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Do$h 'n' Pecks (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5doshpk05 ) -GAMEL( 199?, m5doshpk05 ,m5doshpk, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Do$h 'n' Pecks (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5doshpk05 ) +GAMEL( 199?, m5doshpk ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Do$h 'n' Pecks (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5doshpk05 ) +GAMEL( 199?, m5doshpk05 ,m5doshpk, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Do$h 'n' Pecks (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5doshpk05 ) -GAME( 199?, m5draclb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ooh Aah Dracula Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5draclb07 ,m5draclb, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ooh Aah Dracula Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5draclb01 ,m5draclb, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ooh Aah Dracula Club (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5draclb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ooh Aah Dracula Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5draclb07 ,m5draclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ooh Aah Dracula Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5draclb01 ,m5draclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ooh Aah Dracula Club (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5ewn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Each Way Nudge (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ewn ) -GAMEL( 199?, m5ewn08 ,m5ewn, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Each Way Nudge (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ewn ) +GAMEL( 199?, m5ewn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Each Way Nudge (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ewn ) +GAMEL( 199?, m5ewn08 ,m5ewn, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Each Way Nudge (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ewn ) -GAMEL( 199?, m5elim ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Eliminator (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5elim ) -GAMEL( 199?, m5elim03 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Eliminator (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5elim ) -GAMEL( 199?, m5elim04 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Eliminator (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5elim ) +GAMEL( 199?, m5elim ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Eliminator (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5elim ) +GAMEL( 199?, m5elim03 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Eliminator (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5elim ) +GAMEL( 199?, m5elim04 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Eliminator (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5elim ) -GAMEL( 199?, m5egr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Elvis Gold Rush (Barcrest) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5egr ) -GAMEL( 199?, m5egra ,m5egr, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Elvis Gold Rush (Barcrest) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5egr ) +GAMEL( 199?, m5egr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Elvis Gold Rush (Barcrest) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5egr ) +GAMEL( 199?, m5egra ,m5egr, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Elvis Gold Rush (Barcrest) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5egr ) -GAME( 199?, m5egss ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Elvis Gold Super Streak (Barcrest) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5egssa ,m5egss, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Elvis Gold Super Streak (Barcrest) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5egss ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Elvis Gold Super Streak (Barcrest) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5egssa ,m5egss, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Elvis Gold Super Streak (Barcrest) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5evgrhr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Elvis Gold Red Hot Roll (Barcrest) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5evgrhr ) -GAMEL( 199?, m5evgrhra ,m5evgrhr, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Elvis Gold Red Hot Roll (Barcrest) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5evgrhr ) +GAMEL( 199?, m5evgrhr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Elvis Gold Red Hot Roll (Barcrest) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5evgrhr ) +GAMEL( 199?, m5evgrhra ,m5evgrhr, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Elvis Gold Red Hot Roll (Barcrest) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5evgrhr ) -GAMEL( 199?, m5xchn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Exchanges Unlimited (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xchn ) +GAMEL( 199?, m5xchn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Exchanges Unlimited (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xchn ) -GAMEL( 199?, m5firebl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Fireball (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5firebl ) +GAMEL( 199?, m5firebl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Fireball (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5firebl ) -GAMEL( 199?, m5flipcr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Flippin Crazy (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5flipcr ) +GAMEL( 199?, m5flipcr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Flippin Crazy (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5flipcr ) -GAMEL( 199?, m5fortby ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Fort Boyard (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fortby ) -GAMEL( 199?, m5fortby01 ,m5fortby, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Fort Boyard (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fortby ) +GAMEL( 199?, m5fortby ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Fort Boyard (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fortby ) +GAMEL( 199?, m5fortby01 ,m5fortby, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Fort Boyard (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fortby ) -GAMEL( 199?, m5frnzy ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Frenzy (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5frnzy ) -GAMEL( 199?, m5frnzya ,m5frnzy, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Frenzy (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5frnzy ) +GAMEL( 199?, m5frnzy ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Frenzy (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5frnzy ) +GAMEL( 199?, m5frnzya ,m5frnzy, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Frenzy (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5frnzy ) -GAMEL( 199?, m5beans ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Full Of Beans (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5beansa ) -GAMEL( 199?, m5beansa ,m5beans, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Full Of Beans (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5beansa ) +GAMEL( 199?, m5beans ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Full Of Beans (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5beansa ) +GAMEL( 199?, m5beansa ,m5beans, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Full Of Beans (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5beansa ) -GAMEL( 199?, m5funsun ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Fun In The Sun (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5funsun ) -GAMEL( 199?, m5funsun03 ,m5funsun, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Fun In The Sun (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5funsun ) +GAMEL( 199?, m5funsun ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Fun In The Sun (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5funsun ) +GAMEL( 199?, m5funsun03 ,m5funsun, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Fun In The Sun (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5funsun ) -GAMEL( 199?, m5gimmie ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gimmie Gimmie Gimmie (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gimmie ) +GAMEL( 199?, m5gimmie ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gimmie Gimmie Gimmie (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gimmie ) -GAMEL( 199?, m5grush ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) -GAMEL( 199?, m5grush10 ,m5grush, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) -GAMEL( 199?, m5grush04 ,m5grush, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) -GAMEL( 199?, m5grush03 ,m5grush, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) -GAMEL( 199?, m5grush02 ,m5grush, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) -GAMEL( 199?, m5grush01 ,m5grush, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) +GAMEL( 199?, m5grush ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) +GAMEL( 199?, m5grush10 ,m5grush, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) +GAMEL( 199?, m5grush04 ,m5grush, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) +GAMEL( 199?, m5grush03 ,m5grush, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) +GAMEL( 199?, m5grush02 ,m5grush, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) +GAMEL( 199?, m5grush01 ,m5grush, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush (Barcrest) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush ) -GAMEL( 199?, m5grush5 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush Five Liner (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush5 ) -GAMEL( 199?, m5grush504 ,m5grush5, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush Five Liner (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush5 ) +GAMEL( 199?, m5grush5 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush Five Liner (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush5 ) +GAMEL( 199?, m5grush504 ,m5grush5, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush Five Liner (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5grush5 ) -GAME( 199?, m5gruss ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush Sit Down (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5gruss ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush Sit Down (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5grusst ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush Stampede (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5grusst04 ,m5grusst, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush Stampede (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5grusst03 ,m5grusst, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Rush Stampede (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5grusst ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush Stampede (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5grusst04 ,m5grusst, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush Stampede (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5grusst03 ,m5grusst, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Rush Stampede (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5gstrik ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) -GAMEL( 199?, m5gstrik11 ,m5gstrik, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) -GAMEL( 199?, m5gstrik02 ,m5gstrik, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) -GAMEL( 199?, m5gstrik01 ,m5gstrik, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) -GAMEL( 199?, m5gstrik01a ,m5gstrik, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) -GAMEL( 199?, m5gstrika ,m5gstrik, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) +GAMEL( 199?, m5gstrik ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) +GAMEL( 199?, m5gstrik11 ,m5gstrik, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) +GAMEL( 199?, m5gstrik02 ,m5gstrik, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) +GAMEL( 199?, m5gstrik01 ,m5gstrik, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) +GAMEL( 199?, m5gstrik01a ,m5gstrik, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) +GAMEL( 199?, m5gstrika ,m5gstrik, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gstrik ) -GAMEL( 199?, m5gsstrk ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Super Streak (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gsstrk07 ) -GAMEL( 199?, m5gsstrk07 ,m5gsstrk, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Gold Super Streak (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gsstrk07 ) +GAMEL( 199?, m5gsstrk ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Super Streak (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gsstrk07 ) +GAMEL( 199?, m5gsstrk07 ,m5gsstrk, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Gold Super Streak (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gsstrk07 ) -GAMEL( 199?, m5gdrag ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Golden Dragon (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gdrag ) +GAMEL( 199?, m5gdrag ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Golden Dragon (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5gdrag ) -GAME( 199?, m5gdrgcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Golden Dragon Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5gdrgcl05 ,m5gdrgcl, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Golden Dragon Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5gdrgcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Golden Dragon Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5gdrgcl05 ,m5gdrgcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Golden Dragon Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5gkeys ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Golden Keys (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5gkeys ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Golden Keys (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5hellrz ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Hellraiser (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hellrz ) +GAMEL( 199?, m5hellrz ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Hellraiser (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hellrz ) -GAMEL( 199?, m5hlsumo ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Hi Lo Sumo (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hlsumo ) +GAMEL( 199?, m5hlsumo ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Hi Lo Sumo (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hlsumo ) -GAMEL( 199?, m5hifly ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","High Flyer (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hifly ) -GAMEL( 199?, m5hifly03 ,m5hifly, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","High Flyer (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hifly ) -GAMEL( 199?, m5hifly04 ,m5hifly, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","High Flyer (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hifly ) +GAMEL( 199?, m5hifly ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","High Flyer (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hifly ) +GAMEL( 199?, m5hifly03 ,m5hifly, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","High Flyer (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hifly ) +GAMEL( 199?, m5hifly04 ,m5hifly, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","High Flyer (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hifly ) -GAMEL( 199?, m5holy ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Holy Grail (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5holy ) -GAMEL( 199?, m5holy10 ,m5holy, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Holy Grail (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5holy ) +GAMEL( 199?, m5holy ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Holy Grail (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5holy ) +GAMEL( 199?, m5holy10 ,m5holy, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Holy Grail (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5holy ) -GAMEL( 199?, m5hotslt ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Hot Slot (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hotslt ) +GAMEL( 199?, m5hotslt ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Hot Slot (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hotslt ) -GAMEL( 199?, m5hotstf ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Hot Stuff (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hotstf ) +GAMEL( 199?, m5hotstf ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Hot Stuff (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hotstf ) -GAMEL( 199?, m5hypvip ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Hyper Viper (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hypvip ) +GAMEL( 199?, m5hypvip ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Hyper Viper (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hypvip ) -GAMEL( 199?, m5jackpt ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Jackpoteers (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackpt ) -GAMEL( 199?, m5jackpt07 ,m5jackpt, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Jackpoteers (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackpt ) +GAMEL( 199?, m5jackpt ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Jackpoteers (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackpt ) +GAMEL( 199?, m5jackpt07 ,m5jackpt, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Jackpoteers (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackpt ) -GAMEL( 199?, m5jackp2 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Jackpoteers 2 (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackp2 ) -GAMEL( 199?, m5jackp2a ,m5jackp2, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Jackpoteers 2 (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackp2 ) +GAMEL( 199?, m5jackp2 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Jackpoteers 2 (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackp2 ) +GAMEL( 199?, m5jackp2a ,m5jackp2, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Jackpoteers 2 (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackp2 ) -GAMEL( 199?, m5jlyjwl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Jolly Jewels (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jlyjwl ) -GAMEL( 199?, m5jlyjwl01 ,m5jlyjwl, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Jolly Jewels (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jlyjwl ) -GAMEL( 199?, m5jlyjwl02 ,m5jlyjwl, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Jolly Jewels (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jlyjwl ) +GAMEL( 199?, m5jlyjwl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Jolly Jewels (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jlyjwl ) +GAMEL( 199?, m5jlyjwl01 ,m5jlyjwl, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Jolly Jewels (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jlyjwl ) +GAMEL( 199?, m5jlyjwl02 ,m5jlyjwl, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Jolly Jewels (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jlyjwl ) -GAME( 199?, m5jlyrog ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Jolly Roger (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5jlyroga ,m5jlyrog, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Jolly Roger (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jlyrog ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Jolly Roger (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jlyroga ,m5jlyrog, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Jolly Roger (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5kkebab ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","King Kebab (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kkebab ) -GAMEL( 199?, m5kkebab10 ,m5kkebab, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","King Kebab (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kkebab ) -GAMEL( 199?, m5kkebaba ,m5kkebab, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","King Kebab (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kkebab ) +GAMEL( 199?, m5kkebab ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","King Kebab (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kkebab ) +GAMEL( 199?, m5kkebab10 ,m5kkebab, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","King Kebab (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kkebab ) +GAMEL( 199?, m5kkebaba ,m5kkebab, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","King Kebab (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kkebab ) -GAME( 199?, m5kingko ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","King KO (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5kingko04 ,m5kingko, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","King KO (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5kingko05 ,m5kingko, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","King KO (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5kingko ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","King KO (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5kingko04 ,m5kingko, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","King KO (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5kingko05 ,m5kingko, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","King KO (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5lotta ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Lotta Luck (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5lotta ) +GAMEL( 199?, m5lotta ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Lotta Luck (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5lotta ) -GAMEL( 199?, m5mega ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Mega Zone (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mega ) +GAMEL( 199?, m5mega ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Mega Zone (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mega ) -GAMEL( 199?, m5martns ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Money Mad Martians (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5martns07 ) -GAMEL( 199?, m5martns07 ,m5martns, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Money Mad Martians (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5martns07 ) +GAMEL( 199?, m5martns ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Money Mad Martians (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5martns07 ) +GAMEL( 199?, m5martns07 ,m5martns, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Money Mad Martians (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5martns07 ) -GAMEL( 199?, m5mmak ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Money Maker (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mmak06 ) -GAMEL( 199?, m5mmak06 ,m5mmak, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Money Maker (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mmak06 ) +GAMEL( 199?, m5mmak ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Money Maker (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mmak06 ) +GAMEL( 199?, m5mmak06 ,m5mmak, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Money Maker (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mmak06 ) -GAME( 199?, m5monjok ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Monedin Joker (Spanish) (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5monjoka ,m5monjok, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Monedin Joker (Spanish) (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5monjok ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Monedin Joker (Spanish) (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5monjoka ,m5monjok, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Monedin Joker (Spanish) (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5monty ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Monty Python (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5monty ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Monty Python (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5mprio ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Monty Python Rio (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mprio ) +GAMEL( 199?, m5mprio ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Monty Python Rio (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mprio ) -GAMEL( 199?, m5mpfc ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Monty Python's Flying Circus (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mpfc ) +GAMEL( 199?, m5mpfc ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Monty Python's Flying Circus (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5mpfc ) -GAME( 199?, m5mpfccl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Monty Python's Flying Circus Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5mpfccl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Monty Python's Flying Circus Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5neptun ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Neptunes Treasure (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5neptun ) +GAMEL( 199?, m5neptun ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Neptunes Treasure (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5neptun ) -GAMEL( 199?, m5nnww ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5nnww ) +GAMEL( 199?, m5nnww ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5nnww ) -GAME( 199?, m5nnwwgl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Nudge Nudge Wink Wink Gold (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5nnwwgl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Nudge Nudge Wink Wink Gold (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5fiddle ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","On The Fiddle (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fiddle ) -GAMEL( 199?, m5fiddle03 ,m5fiddle, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","On The Fiddle (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fiddle ) +GAMEL( 199?, m5fiddle ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","On The Fiddle (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fiddle ) +GAMEL( 199?, m5fiddle03 ,m5fiddle, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","On The Fiddle (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5fiddle ) -GAMEL( 199?, m5oohaah ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ooh Aah Dracula (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5oohaah ) -GAMEL( 199?, m5oohaah01 ,m5oohaah, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ooh Aah Dracula (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5oohaah ) +GAMEL( 199?, m5oohaah ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ooh Aah Dracula (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5oohaah ) +GAMEL( 199?, m5oohaah01 ,m5oohaah, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ooh Aah Dracula (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5oohaah ) -GAMEL( 199?, m5oohrio ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ooh Ahh Dracula Rio (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5oohrio ) +GAMEL( 199?, m5oohrio ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ooh Ahh Dracula Rio (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5oohrio ) -GAMEL( 199?, m5openbx ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Open The Box (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5openbx05 ) -GAMEL( 199?, m5openbx06 ,m5openbx, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Open The Box (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5openbx05 ) -GAMEL( 199?, m5openbx05 ,m5openbx, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Open The Box (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5openbx05 ) -GAMEL( 199?, m5openbx01 ,m5openbx, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Open The Box (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5openbx05 ) +GAMEL( 199?, m5openbx ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Open The Box (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5openbx05 ) +GAMEL( 199?, m5openbx06 ,m5openbx, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Open The Box (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5openbx05 ) +GAMEL( 199?, m5openbx05 ,m5openbx, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Open The Box (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5openbx05 ) +GAMEL( 199?, m5openbx01 ,m5openbx, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Open The Box (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5openbx05 ) -GAMEL( 199?, m5overld ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Overload (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5overld ) -GAMEL( 199?, m5overld02 ,m5overld, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Overload (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5overld ) -GAMEL( 199?, m5overld10 ,m5overld, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Overload (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5overld ) -GAMEL( 199?, m5overld11 ,m5overld, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Overload (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5overld ) +GAMEL( 199?, m5overld ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Overload (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5overld ) +GAMEL( 199?, m5overld02 ,m5overld, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Overload (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5overld ) +GAMEL( 199?, m5overld10 ,m5overld, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Overload (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5overld ) +GAMEL( 199?, m5overld11 ,m5overld, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Overload (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5overld ) -GAMEL( 199?, m5ptyani ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Party Animal (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ptyani ) -GAMEL( 199?, m5ptyani01 ,m5ptyani, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Party Animal (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ptyani ) +GAMEL( 199?, m5ptyani ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Party Animal (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ptyani ) +GAMEL( 199?, m5ptyani01 ,m5ptyani, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Party Animal (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ptyani ) -GAMEL( 199?, m5peepsh ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Peep Show (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5peepsh ) +GAMEL( 199?, m5peepsh ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Peep Show (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5peepsh ) -GAME( 199?, m5psy2 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Psycho Cash Beast 2 (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5psy2 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Psycho Cash Beast 2 (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5qshot ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Quack Shot (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qshot04 ) -GAMEL( 199?, m5qshot04 ,m5qshot, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Quack Shot (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qshot04 ) +GAMEL( 199?, m5qshot ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Quack Shot (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qshot04 ) +GAMEL( 199?, m5qshot04 ,m5qshot, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Quack Shot (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qshot04 ) -GAME( 199?, m5roof ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Raise The Roof (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5roofa ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Raise The Roof (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5roof ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Raise The Roof (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5roofa ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Raise The Roof (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5razdz ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Razzle Dazzle Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5razdz10 ) -GAMEL( 199?, m5razdz10 ,m5razdz, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Razzle Dazzle Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5razdz10 ) -GAMEL( 199?, m5razdz11 ,m5razdz, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Razzle Dazzle Club (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5razdz10 ) +GAMEL( 199?, m5razdz ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Razzle Dazzle Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5razdz10 ) +GAMEL( 199?, m5razdz10 ,m5razdz, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Razzle Dazzle Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5razdz10 ) +GAMEL( 199?, m5razdz11 ,m5razdz, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Razzle Dazzle Club (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5razdz10 ) -GAMEL( 199?, m5redrck ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ready To Rock (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5redrcka ) -GAMEL( 199?, m5redrck10 ,m5redrck, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ready To Rock (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5redrcka ) -GAMEL( 199?, m5redrcka ,m5redrck, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ready To Rock (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5redrcka ) +GAMEL( 199?, m5redrck ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ready To Rock (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5redrcka ) +GAMEL( 199?, m5redrck10 ,m5redrck, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ready To Rock (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5redrcka ) +GAMEL( 199?, m5redrcka ,m5redrck, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ready To Rock (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5redrcka ) -GAME( 199?, m5rhkni ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Red Hot Knights (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rhkni ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Red Hot Knights (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rhrg ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Red Hot Roll Gold (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rhrga ,m5rhrg, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Red Hot Roll Gold (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rhrg ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Red Hot Roll Gold (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rhrga ,m5rhrg, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Red Hot Roll Gold (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5rhrgt ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Red Hot Roll Triple (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rhrgt02 ) -GAMEL( 199?, m5rhrgt12 ,m5rhrgt, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Red Hot Roll Triple (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rhrgt02 ) -GAMEL( 199?, m5rhrgt02 ,m5rhrgt, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Red Hot Roll Triple (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rhrgt02 ) +GAMEL( 199?, m5rhrgt ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Red Hot Roll Triple (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rhrgt02 ) +GAMEL( 199?, m5rhrgt12 ,m5rhrgt, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Red Hot Roll Triple (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rhrgt02 ) +GAMEL( 199?, m5rhrgt02 ,m5rhrgt, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Red Hot Roll Triple (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rhrgt02 ) -GAMEL( 199?, m5revo ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Revolution (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5revo13 ) -GAMEL( 199?, m5revo13 ,m5revo, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Revolution (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5revo13 ) -GAMEL( 199?, m5revoa ,m5revo, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Revolution (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5revo13 ) +GAMEL( 199?, m5revo ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Revolution (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5revo13 ) +GAMEL( 199?, m5revo13 ,m5revo, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Revolution (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5revo13 ) +GAMEL( 199?, m5revoa ,m5revo, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Revolution (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5revo13 ) -GAMEL( 199?, m5rgclb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) -GAMEL( 199?, m5rgclb11 ,m5rgclb, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) -GAMEL( 199?, m5rgclb12 ,m5rgclb, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) -GAMEL( 199?, m5rgclb20 ,m5rgclb, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) -GAMEL( 199?, m5rgclb21 ,m5rgclb, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) -GAMEL( 199?, m5rgclb03 ,m5rgclb, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) -GAMEL( 199?, m5rgclb01 ,m5rgclb, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) -GAMEL( 199?, m5rgclb01a ,m5rgclb, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) +GAMEL( 199?, m5rgclb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) +GAMEL( 199?, m5rgclb11 ,m5rgclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) +GAMEL( 199?, m5rgclb12 ,m5rgclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) +GAMEL( 199?, m5rgclb20 ,m5rgclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) +GAMEL( 199?, m5rgclb21 ,m5rgclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) +GAMEL( 199?, m5rgclb03 ,m5rgclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) +GAMEL( 199?, m5rgclb01 ,m5rgclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) +GAMEL( 199?, m5rgclb01a ,m5rgclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rio Grande Club (Barcrest) (MPU5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rgclb12 ) -GAME( 199?, m5rcx ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Royal Exchange Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rcxa ,m5rcx, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Royal Exchange Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rcx ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Royal Exchange Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rcxa ,m5rcx, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Royal Exchange Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5rub ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rubies & Diamonds (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rub ) +GAMEL( 199?, m5rub ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rubies & Diamonds (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rub ) -GAMEL( 199?, m5ritj ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Rumble In The Jungle (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ritj ) +GAMEL( 199?, m5ritj ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Rumble In The Jungle (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ritj ) -GAMEL( 199?, m5rfymc ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Run For Your Money Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rfymc ) -GAMEL( 199?, m5rfymc06 ,m5rfymc, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Run For Your Money Club (Barcrest) (MPU5) (Set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rfymc ) +GAMEL( 199?, m5rfymc ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Run For Your Money Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rfymc ) +GAMEL( 199?, m5rfymc06 ,m5rfymc, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Run For Your Money Club (Barcrest) (MPU5) (Set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rfymc ) -GAMEL( 199?, m5seven ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Seven Deadly Spins (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5seven ) +GAMEL( 199?, m5seven ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Seven Deadly Spins (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5seven ) -GAMEL( 199?, m5sheik ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Sheik Yer Money (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sheik ) +GAMEL( 199?, m5sheik ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Sheik Yer Money (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sheik ) -GAME( 199?, m5showtm ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Showtime (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5showtm ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Showtime (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5silver ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Silver Screen (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5silver06 ,m5silver, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Silver Screen (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5silver03 ,m5silver, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Silver Screen (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5silver ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Silver Screen (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5silver06 ,m5silver, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Silver Screen (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5silver03 ,m5silver, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Silver Screen (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5sondr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Son Of Dracula (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sondra ) -GAMEL( 199?, m5sondr05 ,m5sondr, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Son Of Dracula (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sondra ) -GAMEL( 199?, m5sondra ,m5sondr, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Son Of Dracula (Barcrest) (MPU5) (15GBP Jackpot)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sondra ) +GAMEL( 199?, m5sondr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Son Of Dracula (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sondra ) +GAMEL( 199?, m5sondr05 ,m5sondr, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Son Of Dracula (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sondra ) +GAMEL( 199?, m5sondra ,m5sondr, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Son Of Dracula (Barcrest) (MPU5) (15GBP Jackpot)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sondra ) -GAME( 199?, m5spicer ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Spice Is Right (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5spicer06 ,m5spicer, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","The Spice Is Right (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5spicer ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Spice Is Right (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5spicer06 ,m5spicer, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","The Spice Is Right (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5spiker ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Spiker The Biker (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5spiker ) -GAMEL( 199?, m5spiker02 ,m5spiker, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Spiker The Biker (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5spiker ) -GAMEL( 199?, m5spikera ,m5spiker, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Spiker The Biker (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5spiker ) +GAMEL( 199?, m5spiker ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Spiker The Biker (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5spiker ) +GAMEL( 199?, m5spiker02 ,m5spiker, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Spiker The Biker (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5spiker ) +GAMEL( 199?, m5spikera ,m5spiker, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Spiker The Biker (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5spiker ) -GAMEL( 199?, m5spins ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Spinsation (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5spins ) +GAMEL( 199?, m5spins ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Spinsation (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5spins ) -GAMEL( 199?, m5squids ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Squids In (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5squids06 ) -GAMEL( 199?, m5squids04a ,m5squids, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Squids In (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5squids06 ) -GAMEL( 199?, m5squids05 ,m5squids, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Squids In (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5squids06 ) -GAMEL( 199?, m5squids06 ,m5squids, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Squids In (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5squids06 ) +GAMEL( 199?, m5squids ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Squids In (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5squids06 ) +GAMEL( 199?, m5squids04a ,m5squids, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Squids In (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5squids06 ) +GAMEL( 199?, m5squids05 ,m5squids, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Squids In (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5squids06 ) +GAMEL( 199?, m5squids06 ,m5squids, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Squids In (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5squids06 ) -GAMEL( 199?, m5stax ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Stax Of Cash (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stax ) +GAMEL( 199?, m5stax ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Stax Of Cash (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stax ) -GAMEL( 199?, m5scharg ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Super Charged (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5scharg ) -GAMEL( 199?, m5scharg05 ,m5scharg, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Super Charged (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5scharg ) -GAMEL( 199?, m5scharg06 ,m5scharg, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Super Charged (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5scharg ) -GAMEL( 199?, m5scharga ,m5scharg, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Super Charged (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5scharg ) +GAMEL( 199?, m5scharg ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Super Charged (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5scharg ) +GAMEL( 199?, m5scharg05 ,m5scharg, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Super Charged (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5scharg ) +GAMEL( 199?, m5scharg06 ,m5scharg, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Super Charged (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5scharg ) +GAMEL( 199?, m5scharga ,m5scharg, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Super Charged (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5scharg ) -GAME( 199?, m5supstr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Super Star (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5supstra ,m5supstr, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Super Star (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5supstr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Super Star (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5supstra ,m5supstr, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Super Star (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5sstrk ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Super Streak (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sstrk ) -GAMEL( 199?, m5sstrk02a ,m5sstrk, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Super Streak (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sstrk ) +GAMEL( 199?, m5sstrk ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Super Streak (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sstrk ) +GAMEL( 199?, m5sstrk02a ,m5sstrk, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Super Streak (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5sstrk ) -GAMEL( 199?, m5supnov ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Supernova (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5supnov ) -GAMEL( 199?, m5supnova ,m5supnov, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Supernova (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5supnov ) +GAMEL( 199?, m5supnov ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Supernova (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5supnov ) +GAMEL( 199?, m5supnova ,m5supnov, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Supernova (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5supnov ) -GAME( 199?, m5tempt ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Temple Of Treasure (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5tempt05 ,m5tempt, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Temple Of Treasure (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5tempta ,m5tempt, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Temple Of Treasure (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5temptb ,m5tempt, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Temple Of Treasure (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5tempt ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Temple Of Treasure (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5tempt05 ,m5tempt, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Temple Of Treasure (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5tempta ,m5tempt, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Temple Of Treasure (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5temptb ,m5tempt, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Temple Of Treasure (Barcrest) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5tempt2 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Temple Of Treasure 2 (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempt2 ) -GAMEL( 199?, m5tempt203 ,m5tempt2, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Temple Of Treasure 2 (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempt2 ) -GAMEL( 199?, m5tempt2a ,m5tempt2, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Temple Of Treasure 2 (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempt2 ) +GAMEL( 199?, m5tempt2 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Temple Of Treasure 2 (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempt2 ) +GAMEL( 199?, m5tempt203 ,m5tempt2, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Temple Of Treasure 2 (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempt2 ) +GAMEL( 199?, m5tempt2a ,m5tempt2, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Temple Of Treasure 2 (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempt2 ) -GAMEL( 199?, m5tempcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Temple Of Treasure Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempcl ) +GAMEL( 199?, m5tempcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Temple Of Treasure Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempcl ) -GAMEL( 199?, m5tbird ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Thunderbird (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tbird ) +GAMEL( 199?, m5tbird ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Thunderbird (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tbird ) -GAME( 199?, m5topdog ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Top Dog (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5topdog04 ,m5topdog, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Top Dog (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5topdoga ,m5topdog, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Top Dog (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5topdog ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Top Dog (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5topdog04 ,m5topdog, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Top Dog (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5topdoga ,m5topdog, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Top Dog (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5trail ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Trailblazer Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5trail ) +GAMEL( 199?, m5trail ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Trailblazer Club (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5trail ) -GAMEL( 199?, m5ultimo ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ultimo (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ultimo04 ) -GAMEL( 199?, m5ultimo03a ,m5ultimo, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ultimo (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ultimo04 ) -GAMEL( 199?, m5ultimo04 ,m5ultimo, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Ultimo (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ultimo04 ) +GAMEL( 199?, m5ultimo ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ultimo (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ultimo04 ) +GAMEL( 199?, m5ultimo03a ,m5ultimo, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ultimo (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ultimo04 ) +GAMEL( 199?, m5ultimo04 ,m5ultimo, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Ultimo (Barcrest) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ultimo04 ) -GAMEL( 199?, m5upover ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Up & Over (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5upover ) -GAMEL( 199?, m5upover15 ,m5upover, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Up & Over (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5upover ) +GAMEL( 199?, m5upover ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Up & Over (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5upover ) +GAMEL( 199?, m5upover15 ,m5upover, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Up & Over (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5upover ) -GAMEL( 199?, m5vampup ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Vamp It Up (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5vampup ) +GAMEL( 199?, m5vampup ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Vamp It Up (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5vampup ) -GAMEL( 199?, m5wking ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Wild King (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wking05 ) -GAMEL( 199?, m5wking05 ,m5wking, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Wild King (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wking05 ) +GAMEL( 199?, m5wking ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Wild King (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wking05 ) +GAMEL( 199?, m5wking05 ,m5wking, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Wild King (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wking05 ) -GAME( 199?, m5costa ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Costa Del Cash (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5costa ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Costa Del Cash (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ttwo ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Take Two (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ttwo ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Take Two (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5horn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Whitbread","Horn Of Plenty (Barcrest / Whitbread) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5horn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Whitbread","Horn Of Plenty (Barcrest / Whitbread) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hotrk ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Hot Rocks (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hotrk ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Hot Rocks (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) /* Barcrest / Red Gaming */ -GAME( 199?, m5ashock ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Aftershock (Barcrest - Red Gaming) (MPU5, v1.2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ashocka ,m5ashock, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Aftershock (Barcrest - Red Gaming) (MPU5, v1.3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ashock ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Aftershock (Barcrest - Red Gaming) (MPU5, v1.2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ashocka ,m5ashock, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Aftershock (Barcrest - Red Gaming) (MPU5, v1.3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5bigsht ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5bigsht04 ,m5bigsht, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5bigsht11 ,m5bigsht, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5bigsht13 ,m5bigsht, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5bigshta ,m5bigsht, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bigsht ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bigsht04 ,m5bigsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bigsht11 ,m5bigsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bigsht13 ,m5bigsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bigshta ,m5bigsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Big Shot (Barcrest - Red Gaming) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5bnkrs ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Bonkers (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bnkrs ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Bonkers (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5bbank ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Break The Bank (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5bbank13 ,m5bbank, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Break The Bank (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bbank ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Break The Bank (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bbank13 ,m5bbank, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Break The Bank (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5casfev ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Casino Fever (Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5casfev12 ,m5casfev, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Casino Fever (Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5casfev ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Casino Fever (Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5casfev12 ,m5casfev, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Casino Fever (Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dmnstr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Demon Streak (Barcrest - Red Gaming) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dmnstra ,m5dmnstr, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Demon Streak (Barcrest - Red Gaming) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dmnstr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Demon Streak (Barcrest - Red Gaming) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dmnstra ,m5dmnstr, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Demon Streak (Barcrest - Red Gaming) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dbubl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Double Bubble (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dbubl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Double Bubble (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dragnd ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Dragon Drop (Barcrest - Red Gaming) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dragnda ,m5dragnd, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Dragon Drop (Barcrest - Red Gaming) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dragnd ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Dragon Drop (Barcrest - Red Gaming) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dragnda ,m5dragnd, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Dragon Drop (Barcrest - Red Gaming) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fnfair ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Funfair (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fnfaird ,m5fnfair, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Funfair (Barcrest - Red Gaming) (MPU5) (Datapak)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fnfair ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Funfair (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fnfaird ,m5fnfair, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Funfair (Barcrest - Red Gaming) (MPU5) (Datapak)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fusir ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fusir11 ,m5fusir, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fusir12 ,m5fusir, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fusir ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fusir11 ,m5fusir, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fusir12 ,m5fusir, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hypalx ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Hypalinx (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hypalx ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Hypalinx (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5invad ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Invaders (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5invad ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Invaders (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5jcptgn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Jackpot Genie (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jcptgn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Jackpot Genie (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5jlstrk ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Jewel Strike (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jlstrk ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Jewel Strike (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5lock ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5lock13 ,m5lock, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5lock12 ,m5lock, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5lock ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5lock13 ,m5lock, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5lock12 ,m5lock, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5lockcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5lockcl15 ,m5lockcl, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5lockcl14 ,m5lockcl, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5lockcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5lockcl15 ,m5lockcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5lockcl14 ,m5lockcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5nitro ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Nitro (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5nitro ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Nitro (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5paint ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Paint The Town Red (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5paint ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Paint The Town Red (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5quake ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Quake (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5quake ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Quake (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rainrn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Rainbow Runner (Barcrest - Red Gaming) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rainrna ,m5rainrn, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Rainbow Runner (Barcrest - Red Gaming) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rainrn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Rainbow Runner (Barcrest - Red Gaming) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rainrna ,m5rainrn, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Rainbow Runner (Barcrest - Red Gaming) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rampg ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Rampage (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rampg11 ,m5rampg, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Rampage (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rampg12 ,m5rampg, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Rampage (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rampg ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Rampage (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rampg11 ,m5rampg, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Rampage (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rampg12 ,m5rampg, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Rampage (Barcrest - Red Gaming) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rdwarf ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Red Dwarf (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rdwarf ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Red Dwarf (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5redx ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Red X (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5redx12 ,m5redx, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Red X (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5redx ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Red X (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5redx12 ,m5redx, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Red X (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5thtsmg ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","That's Magic (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5thtsmg ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","That's Magic (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5topdol ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Top Dollar (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5topdola ,m5topdol, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Top Dollar (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5topdol ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Top Dollar (Barcrest - Red Gaming) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5topdola ,m5topdol, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Top Dollar (Barcrest - Red Gaming) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5zigzag ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Zig Zag (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5zigzag ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Zig Zag (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5cmass ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Critical Mass (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cmass ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Critical Mass (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sblz ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Snail Blazer (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sblz ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Snail Blazer (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5slide ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest / Red Gaming","Slider (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5slide ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest / Red Gaming","Slider (Barcrest - Red Gaming) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) /* Vivid */ -GAME( 199?, m5sixsht ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v1.1, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshta ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v1.1, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtb ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtc ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtd ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshte ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtf ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtg ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshth ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 7)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshti ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtj ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtk ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtl ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtm ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sixshtn ,m5sixsht, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixsht ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v1.1, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshta ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v1.1, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtb ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtc ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtd ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshte ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtf ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtg ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshth ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.0, set 7)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshti ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtj ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtk ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtl ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtm ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sixshtn ,m5sixsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Six Shooter (Vivid) (MPU5) (v2.1, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5all41 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41a ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41b ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41c ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41d ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41e ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41f ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41g ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41h ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 9)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41i ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 10)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41j ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 11)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41k ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 12)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41l ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 13)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAMEL( 199?, m5all41m ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 14)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41a ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41b ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41c ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41d ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41e ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41f ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41g ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41h ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 9)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41i ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 10)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41j ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 11)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41k ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 12)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41l ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 13)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) +GAMEL( 199?, m5all41m ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","All 4 One (Vivid) (MPU5, set 14)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5all41d ) -GAME( 199?, m5atlan ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Atlantic (Vivid) (MPU5, v1.4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5atlana ,m5atlan, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Atlantic (Vivid) (MPU5, v1.2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5atlan ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Atlantic (Vivid) (MPU5, v1.4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5atlana ,m5atlan, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Atlantic (Vivid) (MPU5, v1.2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5bttf ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Back To The Features (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bttf ) -GAMEL( 199?, m5bttfa ,m5bttf, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Back To The Features (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bttf ) +GAMEL( 199?, m5bttf ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Back To The Features (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bttf ) +GAMEL( 199?, m5bttfa ,m5bttf, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Back To The Features (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bttf ) -GAMEL( 199?, m5btlbnk ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Bottle Bank (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5btlbnk ) +GAMEL( 199?, m5btlbnk ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Bottle Bank (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5btlbnk ) -GAME( 199?, m5caesc ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Caesar's Cash (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5caesc ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Caesar's Cash (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5card ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Card Shark (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5card ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Card Shark (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5cshkcb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Card Shark Club (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cshkcb ) -GAMEL( 199?, m5cshkcb12 ,m5cshkcb, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Card Shark Club (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cshkcb ) -GAMEL( 199?, m5cshkcb13 ,m5cshkcb, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Card Shark Club (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cshkcb ) +GAMEL( 199?, m5cshkcb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Card Shark Club (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cshkcb ) +GAMEL( 199?, m5cshkcb12 ,m5cshkcb, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Card Shark Club (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cshkcb ) +GAMEL( 199?, m5cshkcb13 ,m5cshkcb, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Card Shark Club (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cshkcb ) -GAMEL( 199?, m5clifhn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Cliffhanger (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5clifhn ) +GAMEL( 199?, m5clifhn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Cliffhanger (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5clifhn ) -GAME( 199?, m5cnct4 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Connect 4 (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5cnct415 ,m5cnct4, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Connect 4 (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5cnct420 ,m5cnct4, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Connect 4 (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cnct4 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Connect 4 (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cnct415 ,m5cnct4, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Connect 4 (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cnct420 ,m5cnct4, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Connect 4 (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5devil ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Devil Of A Deal (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5devil ) +GAMEL( 199?, m5devil ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Devil Of A Deal (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5devil ) -GAMEL( 199?, m5elband ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","El Bandido Club (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5elband ) +GAMEL( 199?, m5elband ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","El Bandido Club (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5elband ) -GAME( 199?, m5fair ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Fairground Attraction (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fair ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Fairground Attraction (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5ggems ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Giant Gems (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ggems20 ) -GAMEL( 199?, m5ggems20 ,m5ggems, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Giant Gems (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ggems20 ) +GAMEL( 199?, m5ggems ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Giant Gems (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ggems20 ) +GAMEL( 199?, m5ggems20 ,m5ggems, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Giant Gems (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ggems20 ) -GAME( 199?, m5groll ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Golden Roll (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5groll ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Golden Roll (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5hilok ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Hi Lo Karate (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hilok ) +GAMEL( 199?, m5hilok ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Hi Lo Karate (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hilok ) -GAMEL( 199?, m5hiclau ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","High Claudius (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hiclau ) +GAMEL( 199?, m5hiclau ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","High Claudius (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hiclau ) -GAME( 199?, m5honmon ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Honey Money (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5honmona ,m5honmon, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Honey Money (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5honmon ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Honey Money (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5honmona ,m5honmon, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Honey Money (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5hopidl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Hop Idol (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hopidl ) +GAMEL( 199?, m5hopidl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Hop Idol (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hopidl ) -GAME( 199?, m5hypno ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Hypnotic (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hypno ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Hypnotic (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5jmpjok ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Jumpin Jokers (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5jmpjok11 ,m5jmpjok, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Jumpin Jokers (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5jmpjoka ,m5jmpjok, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Jumpin Jokers (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5jmpjokb ,m5jmpjok, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Jumpin Jokers (Vivid) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jmpjok ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Jumpin Jokers (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jmpjok11 ,m5jmpjok, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Jumpin Jokers (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jmpjoka ,m5jmpjok, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Jumpin Jokers (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jmpjokb ,m5jmpjok, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Jumpin Jokers (Vivid) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5loony ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Loony Juice (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5loony ) +GAMEL( 199?, m5loony ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Loony Juice (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5loony ) -GAMEL( 199?, m5loot ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Loot 'n' Khamun (Vivid) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5loot ) // aka 3-in-1 ? -GAMEL( 199?, m5loota ,m5loot, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Loot 'n' Khamun (Vivid) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5loot ) // aka 3-in-1 ? +GAMEL( 199?, m5loot ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Loot 'n' Khamun (Vivid) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5loot ) // aka 3-in-1 ? +GAMEL( 199?, m5loota ,m5loot, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Loot 'n' Khamun (Vivid) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5loot ) // aka 3-in-1 ? -GAME( 199?, m5mag7s ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5mag7sa ,m5mag7s, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5mag7sb ,m5mag7s, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5mag7sc ,m5mag7s, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5mag7sd ,m5mag7s, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5mag7se ,m5mag7s, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5mag7s ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5mag7sa ,m5mag7s, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5mag7sb ,m5mag7s, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5mag7sc ,m5mag7s, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5mag7sd ,m5mag7s, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5mag7se ,m5mag7s, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Magnificent 7s (Vivid) (MPU5, set 6)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5msf ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Manic Streak Features (Vivid) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5msfa ,m5msf, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Manic Streak Features (Vivid) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5msf ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Manic Streak Features (Vivid) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5msfa ,m5msf, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Manic Streak Features (Vivid) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5piefac ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Pie Factory (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefac ) -GAMEL( 199?, m5piefac23 ,m5piefac, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Pie Factory (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefac ) -GAMEL( 199?, m5piefac12 ,m5piefac, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Pie Factory (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefac ) -GAMEL( 199?, m5piefaca ,m5piefac, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Pie Factory (Vivid) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefac ) +GAMEL( 199?, m5piefac ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Pie Factory (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefac ) +GAMEL( 199?, m5piefac23 ,m5piefac, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Pie Factory (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefac ) +GAMEL( 199?, m5piefac12 ,m5piefac, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Pie Factory (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefac ) +GAMEL( 199?, m5piefaca ,m5piefac, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Pie Factory (Vivid) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefac ) -GAME( 199?, m5piefc2 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Pie Factory 2 (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5piefc2a ,m5piefc2, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Pie Factory 2 (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5piefc2b ,m5piefc2, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Pie Factory 2 (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5piefc2 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Pie Factory 2 (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5piefc2a ,m5piefc2, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Pie Factory 2 (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5piefc2b ,m5piefc2, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Pie Factory 2 (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5piefcr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Pie Factory Rio (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefcr ) +GAMEL( 199?, m5piefcr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Pie Factory Rio (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5piefcr ) -GAMEL( 199?, m5qdraw ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) -GAMEL( 199?, m5qdraw12 ,m5qdraw, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) -GAMEL( 199?, m5qdraw14 ,m5qdraw, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) -GAMEL( 199?, m5qdraw15 ,m5qdraw, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) -GAMEL( 199?, m5qdrawa ,m5qdraw, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) -GAMEL( 199?, m5qdrawb ,m5qdraw, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) +GAMEL( 199?, m5qdraw ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) +GAMEL( 199?, m5qdraw12 ,m5qdraw, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) +GAMEL( 199?, m5qdraw14 ,m5qdraw, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) +GAMEL( 199?, m5qdraw15 ,m5qdraw, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) +GAMEL( 199?, m5qdrawa ,m5qdraw, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) +GAMEL( 199?, m5qdrawb ,m5qdraw, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Quick On The Draw (Vivid) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5qdrawb ) -GAMEL( 199?, m5redbal ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Random Red Ball (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5redbal ) +GAMEL( 199?, m5redbal ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Random Red Ball (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5redbal ) -GAMEL( 199?, m5ratpk ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Rat Pack (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ratpka ) -GAMEL( 199?, m5ratpka ,m5ratpk, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Rat Pack (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ratpka ) +GAMEL( 199?, m5ratpk ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Rat Pack (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ratpka ) +GAMEL( 199?, m5ratpka ,m5ratpk, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Rat Pack (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ratpka ) -GAME( 199?, m5rawin ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid / Whitbread","Reel A Win (Vivid / Whitbread) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rawin ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid / Whitbread","Reel A Win (Vivid / Whitbread) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5rollup ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Roll Up Roll Up (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rollup ) +GAMEL( 199?, m5rollup ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Roll Up Roll Up (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rollup ) -GAMEL( 199?, m5shark ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Shark Raving Mad (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5shark ) -GAMEL( 199?, m5sharka ,m5shark, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Shark Raving Mad (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5shark ) +GAMEL( 199?, m5shark ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Shark Raving Mad (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5shark ) +GAMEL( 199?, m5sharka ,m5shark, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Shark Raving Mad (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5shark ) -GAMEL( 199?, m5speccl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Spectrum Club (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5speccl ) +GAMEL( 199?, m5speccl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Spectrum Club (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5speccl ) -GAME( 199?, m5spddmn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Speed Demon (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5spddmn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Speed Demon (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5stars ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) -GAMEL( 199?, m5stars13a ,m5stars, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) -GAMEL( 199?, m5stars26 ,m5stars, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) -GAMEL( 199?, m5stars25a ,m5stars, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) -GAMEL( 199?, m5stars25 ,m5stars, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) -GAMEL( 199?, m5stars22 ,m5stars, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) -GAMEL( 199?, m5stars20 ,m5stars, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) -GAMEL( 199?, m5stars10 ,m5stars, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) -GAMEL( 199?, m5stars10a ,m5stars, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) +GAMEL( 199?, m5stars ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) +GAMEL( 199?, m5stars13a ,m5stars, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) +GAMEL( 199?, m5stars26 ,m5stars, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) +GAMEL( 199?, m5stars25a ,m5stars, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) +GAMEL( 199?, m5stars25 ,m5stars, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) +GAMEL( 199?, m5stars22 ,m5stars, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) +GAMEL( 199?, m5stars20 ,m5stars, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) +GAMEL( 199?, m5stars10 ,m5stars, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) +GAMEL( 199?, m5stars10a ,m5stars, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes (Vivid) (MPU5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5stars26 ) -GAMEL( 199?, m5starcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes Club (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5starcl ) +GAMEL( 199?, m5starcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes Club (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5starcl ) -GAME( 199?, m5startr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Stars & Stripes Triple (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5startr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Stars & Stripes Triple (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5supro ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Super Roulette (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5supro ) -GAMEL( 199?, m5suproa ,m5supro, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Super Roulette (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5supro ) +GAMEL( 199?, m5supro ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Super Roulette (Vivid) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5supro ) +GAMEL( 199?, m5suproa ,m5supro, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Super Roulette (Vivid) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5supro ) -GAMEL( 199?, m5tempp ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Temple Of Pleasure (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempp ) +GAMEL( 199?, m5tempp ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Temple Of Pleasure (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tempp ) -GAME( 199?, m5whdres ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Who Dares Spins (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5whdres ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Who Dares Spins (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5winway ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Winning Ways (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5winway ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Winning Ways (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) /* Empire */ -GAME( 199?, m5fewmor ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","A Few Dollars More (Empire) (MPU5) (v0.2, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fewmora ,m5fewmor, mpu5, mpu5, driver_device, 0, ROT0, "Empire","A Few Dollars More (Empire) (MPU5) (v0.2, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fewmorb ,m5fewmor, mpu5, mpu5, driver_device, 0, ROT0, "Empire","A Few Dollars More (Empire) (MPU5) (v0.3, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fewmorc ,m5fewmor, mpu5, mpu5, driver_device, 0, ROT0, "Empire","A Few Dollars More (Empire) (MPU5) (v0.3, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fewmor ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","A Few Dollars More (Empire) (MPU5) (v0.2, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fewmora ,m5fewmor, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","A Few Dollars More (Empire) (MPU5) (v0.2, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fewmorb ,m5fewmor, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","A Few Dollars More (Empire) (MPU5) (v0.3, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fewmorc ,m5fewmor, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","A Few Dollars More (Empire) (MPU5) (v0.3, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5wonga ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","A Fish Called Wonga (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wonga ) +GAMEL( 199?, m5wonga ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","A Fish Called Wonga (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wonga ) -GAME( 199?, m5aceclb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Ace Of Clubs (Empire) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5aceclba ,m5aceclb, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Ace Of Clubs (Empire) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5aceclbb ,m5aceclb, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Ace Of Clubs (Empire) (MPU5, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5aceclb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Ace Of Clubs (Empire) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5aceclba ,m5aceclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Ace Of Clubs (Empire) (MPU5, set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5aceclbb ,m5aceclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Ace Of Clubs (Empire) (MPU5, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5barxdx ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Bar X Deluxe (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5barxdx ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Bar X Deluxe (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5bnzclb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Bonanza Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bnzclb ) -GAMEL( 199?, m5bnzclb11 ,m5bnzclb, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Bonanza Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bnzclb ) +GAMEL( 199?, m5bnzclb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Bonanza Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bnzclb ) +GAMEL( 199?, m5bnzclb11 ,m5bnzclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Bonanza Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5bnzclb ) -GAME( 199?, m5bukroo ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Buckaroo (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5bukroo ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Buckaroo (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5cbrun ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Cannonball Run (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cbrun ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Cannonball Run (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5carou ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Carousel (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5carou ) +GAMEL( 199?, m5carou ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Carousel (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5carou ) -GAME( 199?, m5casroc ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Casino Royale Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5casroc ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Casino Royale Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5centcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) -GAMEL( 199?, m5centcl20 ,m5centcl, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) -GAMEL( 199?, m5centcl21 ,m5centcl, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) -GAMEL( 199?, m5centcl21a ,m5centcl, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) -GAMEL( 199?, m5centcla ,m5centcl, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) +GAMEL( 199?, m5centcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) +GAMEL( 199?, m5centcl20 ,m5centcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) +GAMEL( 199?, m5centcl21 ,m5centcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) +GAMEL( 199?, m5centcl21a ,m5centcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) +GAMEL( 199?, m5centcla ,m5centcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Centurion Club (Empire) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5centcl ) -GAME( 199?, m5cworan ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Clockwork Oranges (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5cworan12 ,m5cworan, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Clockwork Oranges (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cworan ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Clockwork Oranges (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cworan12 ,m5cworan, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Clockwork Oranges (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5clbtro ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Club Tropicana (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5clbtro24 ,m5clbtro, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Club Tropicana (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5clbtro25 ,m5clbtro, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Club Tropicana (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5clbtro ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Club Tropicana (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5clbtro24 ,m5clbtro, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Club Tropicana (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5clbtro25 ,m5clbtro, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Club Tropicana (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5cockdd ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Cock A Doodle Dough! (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5cockdd05 ,m5cockdd, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Cock A Doodle Dough! (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cockdd ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Cock A Doodle Dough! (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5cockdd05 ,m5cockdd, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Cock A Doodle Dough! (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5coloss ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Colossus Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5coloss ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Colossus Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5crocrk ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Crocodile Rock (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5crocrk10 ,m5crocrk, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Crocodile Rock (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5crocrk ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Crocodile Rock (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5crocrk10 ,m5crocrk, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Crocodile Rock (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5croclb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Crocodile Rock Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5croclb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Crocodile Rock Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5crsfir ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Crossfire (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5crsfir ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Crossfire (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dmnf ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Diamonds Are Forever (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dmnf10 ,m5dmnf, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Diamonds Are Forever (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dmnf ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Diamonds Are Forever (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dmnf10 ,m5dmnf, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Diamonds Are Forever (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dmnfcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Diamonds Are Forever Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dmnfcl04 ,m5dmnfcl, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Diamonds Are Forever Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dmnfcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Diamonds Are Forever Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dmnfcl04 ,m5dmnfcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Diamonds Are Forever Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5extrm ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Extreme (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5extrm ) +GAMEL( 199?, m5extrm ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Extreme (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5extrm ) -GAME( 199?, m5extrmm ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Extreme Madness (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5extrmm04a ,m5extrmm, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Extreme Madness (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5extrmm04b ,m5extrmm, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Extreme Madness (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5extrmm10 ,m5extrmm, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Extreme Madness (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5extrmm ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Extreme Madness (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5extrmm04a ,m5extrmm, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Extreme Madness (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5extrmm04b ,m5extrmm, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Extreme Madness (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5extrmm10 ,m5extrmm, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Extreme Madness (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fatcat ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Fat Cat (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fatcat ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Fat Cat (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fishdl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Fish Full Of Dollars (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fishdl10 ,m5fishdl, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Fish Full Of Dollars (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fishdl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Fish Full Of Dollars (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fishdl10 ,m5fishdl, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Fish Full Of Dollars (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fishcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Fish Full Of Dollars Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fishcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Fish Full Of Dollars Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fmonty ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","The Full Monty (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fmonty04a ,m5fmonty, mpu5, mpu5, driver_device, 0, ROT0, "Empire","The Full Monty (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fmonty04b ,m5fmonty, mpu5, mpu5, driver_device, 0, ROT0, "Empire","The Full Monty (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fmonty04c ,m5fmonty, mpu5, mpu5, driver_device, 0, ROT0, "Empire","The Full Monty (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fmonty ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","The Full Monty (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fmonty04a ,m5fmonty, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","The Full Monty (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fmonty04b ,m5fmonty, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","The Full Monty (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fmonty04c ,m5fmonty, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","The Full Monty (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5fmount ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Full Mountie (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5fmount ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Full Mountie (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5gophr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Gopher Gold (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5gophr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Gopher Gold (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5gophcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Gopher Gold Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5gophcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Gopher Gold Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5hisprt ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","High Spirits (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hisprt ) +GAMEL( 199?, m5hisprt ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","High Spirits (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hisprt ) -GAME( 199?, m5hocus ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hocus Pocus (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hocus10 ,m5hocus, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hocus Pocus (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hocus ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hocus Pocus (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hocus10 ,m5hocus, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hocus Pocus (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hocscl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hocus Pocus Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hocscl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hocus Pocus Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hotsht ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hotsht07a ,m5hotsht, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hotsht08 ,m5hotsht, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hotsht08a ,m5hotsht, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hotsht10 ,m5hotsht, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hotsht10a ,m5hotsht, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hotsht ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hotsht07a ,m5hotsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hotsht08 ,m5hotsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hotsht08a ,m5hotsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hotsht10 ,m5hotsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hotsht10a ,m5hotsht, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hot Shots (Empire) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hula ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hula Moolah (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hula10 ,m5hula, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hula Moolah (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hula ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hula Moolah (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hula10 ,m5hula, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hula Moolah (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5hulacl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Hula Moolah Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5hulacl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Hula Moolah Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5jackbx ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Jack In The Box (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackbx ) -GAMEL( 199?, m5jackbx03 ,m5jackbx, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Jack In The Box (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackbx ) +GAMEL( 199?, m5jackbx ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Jack In The Box (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackbx ) +GAMEL( 199?, m5jackbx03 ,m5jackbx, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Jack In The Box (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jackbx ) -GAME( 199?, m5jcy ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Juicy Fruits (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jcy ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Juicy Fruits (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5jmpgem ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Jumping Gems (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jmpgem01 ) -GAMEL( 199?, m5jmpgem01 ,m5jmpgem, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Jumping Gems (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jmpgem01 ) -GAMEL( 199?, m5jmpgem03 ,m5jmpgem, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Jumping Gems (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jmpgem01 ) +GAMEL( 199?, m5jmpgem ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Jumping Gems (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jmpgem01 ) +GAMEL( 199?, m5jmpgem01 ,m5jmpgem, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Jumping Gems (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jmpgem01 ) +GAMEL( 199?, m5jmpgem03 ,m5jmpgem, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Jumping Gems (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5jmpgem01 ) -GAME( 199?, m5jmpgmc ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Jumping Gems Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jmpgmc ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Jumping Gems Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5kaleid ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Kaleidoscope Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5kaleid ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Kaleidoscope Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5kcclb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","King Cobra Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5kcclb24 ,m5kcclb, mpu5, mpu5, driver_device, 0, ROT0, "Empire","King Cobra Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5kcclb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","King Cobra Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5kcclb24 ,m5kcclb, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","King Cobra Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5kingqc ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Kings & Queens Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kingqc06 ) -GAMEL( 199?, m5kingqc06 ,m5kingqc, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Kings & Queens Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kingqc06 ) -GAMEL( 199?, m5kingqc07 ,m5kingqc, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Kings & Queens Club (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kingqc06 ) -GAMEL( 199?, m5kingqc08 ,m5kingqc, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Kings & Queens Club (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kingqc06 ) +GAMEL( 199?, m5kingqc ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Kings & Queens Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kingqc06 ) +GAMEL( 199?, m5kingqc06 ,m5kingqc, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Kings & Queens Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kingqc06 ) +GAMEL( 199?, m5kingqc07 ,m5kingqc, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Kings & Queens Club (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kingqc06 ) +GAMEL( 199?, m5kingqc08 ,m5kingqc, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Kings & Queens Club (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5kingqc06 ) -GAMEL( 199?, m5korma ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Korma Chameleon (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5korma ) -GAMEL( 199?, m5korma12 ,m5korma, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Korma Chameleon (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5korma ) +GAMEL( 199?, m5korma ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Korma Chameleon (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5korma ) +GAMEL( 199?, m5korma12 ,m5korma, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Korma Chameleon (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5korma ) -GAME( 199?, m5kormcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Korma Chameleon Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5kormcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Korma Chameleon Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5monmst ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Money Monster (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5monmst ) -GAMEL( 199?, m5monmsta ,m5monmst, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Money Monster (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5monmst ) +GAMEL( 199?, m5monmst ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Money Monster (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5monmst ) +GAMEL( 199?, m5monmsta ,m5monmst, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Money Monster (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5monmst ) -GAME( 199?, m5ramrd ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Ram Raid (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ramrd ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Ram Raid (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ramrcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Ram Raid Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ramrcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Ram Raid Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ronr ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Reel Or No Reel (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ronr05 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Reel Or No Reel (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ronr07 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Reel Or No Reel (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ronr ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Reel Or No Reel (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ronr05 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Reel Or No Reel (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ronr07 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Reel Or No Reel (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5resfrg ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Reservoir Frogs (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5resfrg ) +GAMEL( 199?, m5resfrg ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Reservoir Frogs (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5resfrg ) -GAMEL( 199?, m5rthh ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Return To The Haunted House (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rthh ) +GAMEL( 199?, m5rthh ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Return To The Haunted House (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rthh ) -GAMEL( 199?, m5rollx ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Roll X (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rollx ) -GAMEL( 199?, m5rollx12 ,m5rollx, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Roll X (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rollx ) +GAMEL( 199?, m5rollx ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Roll X (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rollx ) +GAMEL( 199?, m5rollx12 ,m5rollx, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Roll X (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rollx ) -GAMEL( 199?, m5skulcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Skullduggery Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5skulcl20 ) -GAMEL( 199?, m5skulcl20 ,m5skulcl, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Skullduggery Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5skulcl20 ) -GAMEL( 199?, m5skulcl23 ,m5skulcl, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Skullduggery Club (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5skulcl20 ) +GAMEL( 199?, m5skulcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Skullduggery Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5skulcl20 ) +GAMEL( 199?, m5skulcl20 ,m5skulcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Skullduggery Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5skulcl20 ) +GAMEL( 199?, m5skulcl23 ,m5skulcl, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Skullduggery Club (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5skulcl20 ) -GAME( 199?, m5tball ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Thunderball (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5tball ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Thunderball (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5tomb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Tomb Raiders (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5tomb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Tomb Raiders (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5trclb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Tomb Raiders Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5trclb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Tomb Raiders Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ttop ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Treble Top (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ttop04 ,m5ttop, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Treble Top (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ttop10 ,m5ttop, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Treble Top (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ttop ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Treble Top (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ttop04 ,m5ttop, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Treble Top (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ttop10 ,m5ttop, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Treble Top (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5ttopcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Treble Top Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5ttopcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Treble Top Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5tsar ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Tsar Wars (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5tsar ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Tsar Wars (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5vertgo ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Vertigo (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5vertgo ) +GAMEL( 199?, m5vertgo ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Vertigo (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5vertgo ) -GAME( 199?, m5vertcl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Vertigo Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5vertcl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Vertigo Club (Empire) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5wthing ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Wild Thing Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wthing20 ) -GAMEL( 199?, m5wthing11 ,m5wthing, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Wild Thing Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wthing20 ) -GAMEL( 199?, m5wthing20 ,m5wthing, mpu5, mpu5, driver_device, 0, ROT0, "Empire","Wild Thing Club (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wthing20 ) +GAMEL( 199?, m5wthing ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Wild Thing Club (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wthing20 ) +GAMEL( 199?, m5wthing11 ,m5wthing, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Wild Thing Club (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wthing20 ) +GAMEL( 199?, m5wthing20 ,m5wthing, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","Wild Thing Club (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5wthing20 ) -GAMEL( 199?, m5xfact ,0, mpu5, mpu5, driver_device, 0, ROT0, "Empire","X Factor (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xfact11 ) -GAMEL( 199?, m5xfact02 ,m5xfact, mpu5, mpu5, driver_device, 0, ROT0, "Empire","X Factor (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xfact11 ) -GAMEL( 199?, m5xfact04 ,m5xfact, mpu5, mpu5, driver_device, 0, ROT0, "Empire","X Factor (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xfact11 ) -GAMEL( 199?, m5xfact11 ,m5xfact, mpu5, mpu5, driver_device, 0, ROT0, "Empire","X Factor (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xfact11 ) +GAMEL( 199?, m5xfact ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","X Factor (Empire) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xfact11 ) +GAMEL( 199?, m5xfact02 ,m5xfact, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","X Factor (Empire) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xfact11 ) +GAMEL( 199?, m5xfact04 ,m5xfact, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","X Factor (Empire) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xfact11 ) +GAMEL( 199?, m5xfact11 ,m5xfact, mpu5, mpu5, mpu5_state, 0, ROT0, "Empire","X Factor (Empire) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5xfact11 ) /* Bwb */ -GAME( 199?, m5carwsh ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Car Wash (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5carwsh10 ,m5carwsh, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Car Wash (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5carwsh ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Car Wash (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5carwsh10 ,m5carwsh, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Car Wash (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5cshstx ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Cash Stax (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cshstx ) +GAMEL( 199?, m5cshstx ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Cash Stax (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5cshstx ) -GAMEL( 199?, m5circus ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) -GAMEL( 199?, m5circus0a ,m5circus, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) -GAMEL( 199?, m5circus0b ,m5circus, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) -GAMEL( 199?, m5circus20 ,m5circus, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) -GAMEL( 199?, m5circus21 ,m5circus, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) -GAMEL( 199?, m5circus11 ,m5circus, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) +GAMEL( 199?, m5circus ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) +GAMEL( 199?, m5circus0a ,m5circus, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) +GAMEL( 199?, m5circus0b ,m5circus, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) +GAMEL( 199?, m5circus20 ,m5circus, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) +GAMEL( 199?, m5circus21 ,m5circus, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) +GAMEL( 199?, m5circus11 ,m5circus, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus (Bwb) (MPU5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circus0a ) -GAMEL( 199?, m5circlb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus Club (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circlb33 ) -GAMEL( 199?, m5circlb00 ,m5circlb, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus Club (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circlb33 ) -GAMEL( 199?, m5circlb15 ,m5circlb, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus Club (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circlb33 ) -GAMEL( 199?, m5circlb33 ,m5circlb, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Circus Club (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circlb33 ) +GAMEL( 199?, m5circlb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus Club (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circlb33 ) +GAMEL( 199?, m5circlb00 ,m5circlb, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus Club (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circlb33 ) +GAMEL( 199?, m5circlb15 ,m5circlb, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus Club (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circlb33 ) +GAMEL( 199?, m5circlb33 ,m5circlb, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Circus Club (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5circlb33 ) -GAMEL( 199?, m5clown ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Clown In Around (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5clown11 ) -GAMEL( 199?, m5clown11 ,m5clown, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Clown In Around (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5clown11 ) -GAMEL( 199?, m5clown13 ,m5clown, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Clown In Around (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5clown11 ) +GAMEL( 199?, m5clown ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Clown In Around (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5clown11 ) +GAMEL( 199?, m5clown11 ,m5clown, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Clown In Around (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5clown11 ) +GAMEL( 199?, m5clown13 ,m5clown, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Clown In Around (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5clown11 ) -GAME( 199?, m5clubsn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Club Sandwich (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5clubsn11 ,m5clubsn, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Club Sandwich (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5clubsn14 ,m5clubsn, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Club Sandwich (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5clubsn16 ,m5clubsn, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Club Sandwich (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5clubsn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Club Sandwich (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5clubsn11 ,m5clubsn, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Club Sandwich (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5clubsn14 ,m5clubsn, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Club Sandwich (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5clubsn16 ,m5clubsn, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Club Sandwich (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5dick ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Dick Turnip (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dick10 ) -GAMEL( 199?, m5dick10 ,m5dick, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Dick Turnip (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dick10 ) +GAMEL( 199?, m5dick ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Dick Turnip (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dick10 ) +GAMEL( 199?, m5dick10 ,m5dick, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Dick Turnip (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dick10 ) -GAME( 199?, m5donna ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Donna Kebab (Bwb) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5donnad ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Donna Kebab (Bwb) (MPU5, set 1, Datapak)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5donnaa ,m5donna, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Donna Kebab (Bwb) (MPU5, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5donna ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Donna Kebab (Bwb) (MPU5, set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5donnad ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Donna Kebab (Bwb) (MPU5, set 1, Datapak)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5donnaa ,m5donna, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Donna Kebab (Bwb) (MPU5, set 3)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5dblqts ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Double Or Quits (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dblqtsb ) -GAMEL( 199?, m5dblqtsa ,m5dblqts, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Double Or Quits (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dblqtsb ) -GAMEL( 199?, m5dblqtsb ,m5dblqts, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Double Or Quits (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dblqtsb ) -GAMEL( 199?, m5dblqts1b ,m5dblqts, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Double Or Quits (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dblqtsb ) +GAMEL( 199?, m5dblqts ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Double Or Quits (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dblqtsb ) +GAMEL( 199?, m5dblqtsa ,m5dblqts, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Double Or Quits (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dblqtsb ) +GAMEL( 199?, m5dblqtsb ,m5dblqts, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Double Or Quits (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dblqtsb ) +GAMEL( 199?, m5dblqts1b ,m5dblqts, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Double Or Quits (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5dblqtsb ) -GAME( 199?, m5eggold ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Egyptian Gold (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5eggold ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Egyptian Gold (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m55050 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Fifty Fifty (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m55050 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Fifty Fifty (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5gpclub ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Get Plastered Club (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5gpclub ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Get Plastered Club (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5goape ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Going Ape (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5goape ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Going Ape (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5hgl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Happy Go Lucky (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hgl14 ) -GAMEL( 199?, m5hgl16 ,m5hgl, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Happy Go Lucky (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hgl14 ) -GAMEL( 199?, m5hgl14 ,m5hgl, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Happy Go Lucky (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hgl14 ) +GAMEL( 199?, m5hgl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Happy Go Lucky (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hgl14 ) +GAMEL( 199?, m5hgl16 ,m5hgl, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Happy Go Lucky (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hgl14 ) +GAMEL( 199?, m5hgl14 ,m5hgl, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Happy Go Lucky (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5hgl14 ) -GAME( 199?, m5jokpak ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Joker In The Pack (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jokpak ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Joker In The Pack (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5lvwire ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Live Wire (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5lvwirea ,m5lvwire, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Live Wire (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5lvwire ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Live Wire (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5lvwirea ,m5lvwire, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Live Wire (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5carpet ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Magic Carpet (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5carpet12 ,m5carpet, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Magic Carpet (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5carpet ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Magic Carpet (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5carpet12 ,m5carpet, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Magic Carpet (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5minesw ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Minesweeper (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5minesw ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Minesweeper (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5psycho ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Psycho Cash Beast (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psycho ) -GAMEL( 199?, m5psycho06 ,m5psycho, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Psycho Cash Beast (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psycho ) -GAMEL( 199?, m5psychoa ,m5psycho, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Psycho Cash Beast (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psycho ) -GAMEL( 199?, m5psychoa21 ,m5psycho, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Psycho Cash Beast (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psycho ) +GAMEL( 199?, m5psycho ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Psycho Cash Beast (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psycho ) +GAMEL( 199?, m5psycho06 ,m5psycho, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Psycho Cash Beast (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psycho ) +GAMEL( 199?, m5psychoa ,m5psycho, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Psycho Cash Beast (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psycho ) +GAMEL( 199?, m5psychoa21 ,m5psycho, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Psycho Cash Beast (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psycho ) -GAMEL( 199?, m5psyccl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Psycho Cash Beast Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) -GAMEL( 199?, m5psyccl01 ,m5psyccl, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Psycho Cash Beast Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) -GAMEL( 199?, m5psyccla ,m5psyccl, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Psycho Cash Beast Club (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) -GAMEL( 199?, m5psyccla24 ,m5psyccl, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Psycho Cash Beast Club (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) -GAMEL( 199?, m5psyccla02 ,m5psyccl, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Psycho Cash Beast Club (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) +GAMEL( 199?, m5psyccl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Psycho Cash Beast Club (Barcrest) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) +GAMEL( 199?, m5psyccl01 ,m5psyccl, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Psycho Cash Beast Club (Barcrest) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) +GAMEL( 199?, m5psyccla ,m5psyccl, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Psycho Cash Beast Club (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) +GAMEL( 199?, m5psyccla24 ,m5psyccl, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Psycho Cash Beast Club (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) +GAMEL( 199?, m5psyccla02 ,m5psyccl, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Psycho Cash Beast Club (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5psyccl01 ) -GAMEL( 199?, m5rwb ,0, mpu5, mpu5, driver_device, 0, ROT0, "Barcrest","Red White & Blue (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) -GAMEL( 199?, m5rwbbwb ,m5rwb, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Red White & Blue (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) -GAMEL( 199?, m5rwbbwb24 ,m5rwb, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Red White & Blue (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) -GAMEL( 199?, m5rwbbwb25 ,m5rwb, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Red White & Blue (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) -GAMEL( 199?, m5rwbbwb15 ,m5rwb, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Red White & Blue (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) +GAMEL( 199?, m5rwb ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Barcrest","Red White & Blue (Barcrest) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) +GAMEL( 199?, m5rwbbwb ,m5rwb, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Red White & Blue (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) +GAMEL( 199?, m5rwbbwb24 ,m5rwb, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Red White & Blue (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) +GAMEL( 199?, m5rwbbwb25 ,m5rwb, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Red White & Blue (Bwb) (MPU5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) +GAMEL( 199?, m5rwbbwb15 ,m5rwb, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Red White & Blue (Bwb) (MPU5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5rwb ) -GAME( 199?, m5reelwn ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Reel A Win (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5reelwn24 ,m5reelwn, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Reel A Win (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5reelwn ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Reel A Win (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5reelwn24 ,m5reelwn, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Reel A Win (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5reelth ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Reel Thunder (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5reelth ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Reel Thunder (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5rlup ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Roll Up (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5rlup ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Roll Up (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5round ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Round & Round (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5round ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Round & Round (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sec7 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Secret 7s (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sec7a ,m5sec7, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Secret 7s (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sec7 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Secret 7s (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sec7a ,m5sec7, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Secret 7s (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sil7 ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Silver 7s (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5sil7a ,m5sil7, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Silver 7s (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sil7 ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Silver 7s (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5sil7a ,m5sil7, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Silver 7s (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5smobik ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Smokey Bikin (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5smobik12 ,m5smobik, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Smokey Bikin (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5smobik ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Smokey Bikin (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5smobik12 ,m5smobik, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Smokey Bikin (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) -GAMEL( 199?, m5tictac ,0, mpu5, mpu5, driver_device, 0, ROT0, "Vivid","Tic Tac Tut (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tictacbwb ) -GAMEL( 199?, m5tictacbwb ,m5tictac, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Tic Tac Tut (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tictacbwb ) -GAMEL( 199?, m5tictacbwb16,m5tictac, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Tic Tac Tut (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tictacbwb ) +GAMEL( 199?, m5tictac ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Vivid","Tic Tac Tut (Vivid) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tictacbwb ) +GAMEL( 199?, m5tictacbwb ,m5tictac, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Tic Tac Tut (Bwb) (MPU5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tictacbwb ) +GAMEL( 199?, m5tictacbwb16,m5tictac, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Tic Tac Tut (Bwb) (MPU5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5tictacbwb ) -GAME( 199?, m5xena ,0, mpu5, mpu5, driver_device, 0, ROT0, "Bwb","Xena Warrior Princess (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5xena ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Bwb","Xena Warrior Princess (Bwb) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) /* Lowen */ -GAME( 199?, m5all41low ,m5all41, mpu5, mpu5, driver_device, 0, ROT0, "Lowen","All 4 One (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5dblfun ,0, mpu5, mpu5, driver_device, 0, ROT0, "Lowen","Double Fun (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5jakjok ,0, mpu5, mpu5, driver_device, 0, ROT0, "Lowen","Jackpot Jokers (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5roundl ,m5round, mpu5, mpu5, driver_device, 0, ROT0, "Lowen","Round & Round (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 199?, m5scfinl ,0, mpu5, mpu5, driver_device, 0, ROT0, "Lowen","Super Cup Final (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5all41low ,m5all41, mpu5, mpu5, mpu5_state, 0, ROT0, "Lowen","All 4 One (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5dblfun ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Lowen","Double Fun (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5jakjok ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Lowen","Jackpot Jokers (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5roundl ,m5round, mpu5, mpu5, mpu5_state, 0, ROT0, "Lowen","Round & Round (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, m5scfinl ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Lowen","Super Cup Final (Lowen) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL ) /* Others / Uncertain */ -GAMEL( 199?, m5ppussy ,0, mpu5, mpu5, driver_device, 0, ROT0, "Mdm","Pink Pussy (Mdm) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ppussy ) +GAMEL( 199?, m5ppussy ,0, mpu5, mpu5, mpu5_state, 0, ROT0, "Mdm","Pink Pussy (Mdm) (MPU5)", MACHINE_IS_SKELETON_MECHANICAL, layout_m5ppussy ) diff --git a/src/mame/drivers/mpz80.cpp b/src/mame/drivers/mpz80.cpp index cb6c4d3af98..15e64582680 100644 --- a/src/mame/drivers/mpz80.cpp +++ b/src/mame/drivers/mpz80.cpp @@ -709,7 +709,7 @@ void mpz80_state::machine_reset() // MACHINE_CONFIG( mpz80 ) //------------------------------------------------- -static MACHINE_CONFIG_START( mpz80, mpz80_state ) +static MACHINE_CONFIG_START( mpz80 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(mpz80_mem) @@ -778,5 +778,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1980, mpz80, 0, 0, mpz80, mpz80, driver_device, 0, "Morrow Designs", "MPZ80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, mpz80, 0, 0, mpz80, mpz80, mpz80_state, 0, "Morrow Designs", "MPZ80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/mquake.cpp b/src/mame/drivers/mquake.cpp index 47e009cd4b4..45a6f6f935f 100644 --- a/src/mame/drivers/mquake.cpp +++ b/src/mame/drivers/mquake.cpp @@ -302,7 +302,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( mquake, mquake_state ) +static MACHINE_CONFIG_START( mquake ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_NTSC) diff --git a/src/mame/drivers/mrdo.cpp b/src/mame/drivers/mrdo.cpp index 8501dde3262..8560a2fa8da 100644 --- a/src/mame/drivers/mrdo.cpp +++ b/src/mame/drivers/mrdo.cpp @@ -169,7 +169,7 @@ static GFXDECODE_START( mrdo ) GFXDECODE_END -static MACHINE_CONFIG_START( mrdo, mrdo_state ) +static MACHINE_CONFIG_START( mrdo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK/2) /* Verified */ @@ -389,10 +389,10 @@ ROM_END -GAME( 1982, mrdo, 0, mrdo, mrdo, driver_device, 0, ROT270, "Universal", "Mr. Do!", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mrdoy, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "Universal", "Mr. Do! (prototype)" , MACHINE_SUPPORTS_SAVE ) /* aka "Yukidaruma" */ -GAME( 1982, mrdot, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "Universal (Taito license)", "Mr. Do! (Taito)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mrdofix, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "Universal (Taito license)", "Mr. Do! (bugfixed)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mrlo, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "bootleg", "Mr. Lo!", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mrdu, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "bootleg", "Mr. Du!", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, yankeedo, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "hack", "Yankee DO!", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mrdo, 0, mrdo, mrdo, mrdo_state, 0, ROT270, "Universal", "Mr. Do!", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mrdoy, mrdo, mrdo, mrdo, mrdo_state, 0, ROT270, "Universal", "Mr. Do! (prototype)", MACHINE_SUPPORTS_SAVE ) /* aka "Yukidaruma" */ +GAME( 1982, mrdot, mrdo, mrdo, mrdo, mrdo_state, 0, ROT270, "Universal (Taito license)", "Mr. Do! (Taito)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mrdofix, mrdo, mrdo, mrdo, mrdo_state, 0, ROT270, "Universal (Taito license)", "Mr. Do! (bugfixed)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mrlo, mrdo, mrdo, mrdo, mrdo_state, 0, ROT270, "bootleg", "Mr. Lo!", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mrdu, mrdo, mrdo, mrdo, mrdo_state, 0, ROT270, "bootleg", "Mr. Du!", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, yankeedo, mrdo, mrdo, mrdo, mrdo_state, 0, ROT270, "hack", "Yankee DO!", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mrflea.cpp b/src/mame/drivers/mrflea.cpp index 99ba8b6109e..da2a3a3524f 100644 --- a/src/mame/drivers/mrflea.cpp +++ b/src/mame/drivers/mrflea.cpp @@ -325,7 +325,7 @@ void mrflea_state::machine_reset() m_select1 = 0; } -static MACHINE_CONFIG_START( mrflea, mrflea_state ) +static MACHINE_CONFIG_START( mrflea ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */ @@ -419,4 +419,4 @@ ROM_END * *************************************/ -GAME( 1982, mrflea, 0, mrflea, mrflea, driver_device, 0, ROT270, "Pacific Novelty", "The Amazing Adventures of Mr. F. Lea" , MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mrflea, 0, mrflea, mrflea, mrflea_state, 0, ROT270, "Pacific Novelty", "The Amazing Adventures of Mr. F. Lea" , MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mrgame.cpp b/src/mame/drivers/mrgame.cpp index ea3065cc1a1..9d332891df2 100644 --- a/src/mame/drivers/mrgame.cpp +++ b/src/mame/drivers/mrgame.cpp @@ -459,7 +459,7 @@ uint32_t mrgame_state::screen_update_mrgame(screen_device &screen, bitmap_ind16 return 0; } -static MACHINE_CONFIG_START( mrgame, mrgame_state ) +static MACHINE_CONFIG_START( mrgame ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_6MHz) MCFG_CPU_PROGRAM_MAP(main_map) @@ -664,8 +664,8 @@ ROM_START(wcup90) ROM_END -GAME(1988, dakar, 0, mrgame, mrgame, mrgame_state, mrgame, ROT0, "Mr Game", "Dakar", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1988, dakar, 0, mrgame, mrgame, mrgame_state, mrgame, ROT0, "Mr Game", "Dakar", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) GAME(1989, motrshow, 0, mrgame, mrgame, mrgame_state, mrgame, ROT0, "Mr Game", "Motor Show (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) GAME(1989, motrshowa, motrshow, mrgame, mrgame, mrgame_state, mrgame, ROT0, "Mr Game", "Motor Show (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1990, macattck, 0, mrgame, mrgame, mrgame_state, mrgame, ROT0, "Mr Game", "Mac Attack", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, wcup90, 0, mrgame, mrgame, mrgame_state, mrgame, ROT0, "Mr Game", "World Cup 90", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, macattck, 0, mrgame, mrgame, mrgame_state, mrgame, ROT0, "Mr Game", "Mac Attack", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, wcup90, 0, mrgame, mrgame, mrgame_state, mrgame, ROT0, "Mr Game", "World Cup 90", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/mrjong.cpp b/src/mame/drivers/mrjong.cpp index 23bf9a6c0db..e417e14a2d5 100644 --- a/src/mame/drivers/mrjong.cpp +++ b/src/mame/drivers/mrjong.cpp @@ -183,7 +183,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( mrjong, mrjong_state ) +static MACHINE_CONFIG_START( mrjong ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,15468000/6) /* 2.578 MHz?? */ @@ -276,6 +276,6 @@ ROM_END * *************************************/ -GAME( 1983, mrjong, 0, mrjong, mrjong, driver_device, 0, ROT90, "Kiwako", "Mr. Jong (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, crazyblk, mrjong, mrjong, mrjong, driver_device, 0, ROT90, "Kiwako (ECI license)", "Crazy Blocks", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, blkbustr, mrjong, mrjong, mrjong, driver_device, 0, ROT90, "Kiwako (ECI license)", "BlockBuster", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mrjong, 0, mrjong, mrjong, mrjong_state, 0, ROT90, "Kiwako", "Mr. Jong (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, crazyblk, mrjong, mrjong, mrjong, mrjong_state, 0, ROT90, "Kiwako (ECI license)", "Crazy Blocks", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, blkbustr, mrjong, mrjong, mrjong, mrjong_state, 0, ROT90, "Kiwako (ECI license)", "BlockBuster", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ms0515.cpp b/src/mame/drivers/ms0515.cpp index a4bcd1c1ad5..af84f73a627 100644 --- a/src/mame/drivers/ms0515.cpp +++ b/src/mame/drivers/ms0515.cpp @@ -71,21 +71,9 @@ public: , m_ms7004(*this, "ms7004") { } - required_device m_maincpu; - required_device m_ram; - required_device m_fdc; - required_device m_floppy0; - required_device m_floppy1; - required_device m_i8251line; - required_device m_rs232; - required_device m_i8251kbd; - required_device m_ms7004; - - virtual void machine_reset() override; - DECLARE_PALETTE_INIT(ms0515); uint32_t screen_update_ms0515(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); DECLARE_WRITE16_MEMBER(ms0515_bank_w); @@ -101,13 +89,27 @@ public: DECLARE_FLOPPY_FORMATS(floppy_formats); - void irq_encoder(int irq, int state); DECLARE_WRITE_LINE_MEMBER(irq2_w); DECLARE_WRITE_LINE_MEMBER(irq5_w); DECLARE_WRITE_LINE_MEMBER(irq8_w); DECLARE_WRITE_LINE_MEMBER(irq9_w); DECLARE_WRITE_LINE_MEMBER(irq11_w); +protected: + virtual void machine_reset() override; + + void irq_encoder(int irq, int state); + + required_device m_maincpu; + required_device m_ram; + required_device m_fdc; + required_device m_floppy0; + required_device m_floppy1; + required_device m_i8251line; + required_device m_rs232; + required_device m_i8251kbd; + required_device m_ms7004; + private: uint8_t *m_video_ram; uint8_t m_sysrega, m_sysregc; @@ -147,10 +149,10 @@ static ADDRESS_MAP_START(ms0515_mem, AS_PROGRAM, 16, ms0515_state) AM_RANGE(0177600, 0177607) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0x00ff) - AM_RANGE(0177640, 0177641) AM_DEVREADWRITE8("vg93", kr1818vg93_t, status_r, cmd_w, 0x00ff) - AM_RANGE(0177642, 0177643) AM_DEVREADWRITE8("vg93", kr1818vg93_t, track_r, track_w, 0x00ff) - AM_RANGE(0177644, 0177645) AM_DEVREADWRITE8("vg93", kr1818vg93_t, sector_r, sector_w, 0x00ff) - AM_RANGE(0177646, 0177647) AM_DEVREADWRITE8("vg93", kr1818vg93_t, data_r, data_w, 0x00ff) + AM_RANGE(0177640, 0177641) AM_DEVREADWRITE8("vg93", kr1818vg93_device, status_r, cmd_w, 0x00ff) + AM_RANGE(0177642, 0177643) AM_DEVREADWRITE8("vg93", kr1818vg93_device, track_r, track_w, 0x00ff) + AM_RANGE(0177644, 0177645) AM_DEVREADWRITE8("vg93", kr1818vg93_device, sector_r, sector_w, 0x00ff) + AM_RANGE(0177646, 0177647) AM_DEVREADWRITE8("vg93", kr1818vg93_device, data_r, data_w, 0x00ff) AM_RANGE(0177700, 0177701) AM_DEVREAD8("i8251line", i8251_device, data_r, 0x00ff) AM_RANGE(0177702, 0177703) AM_DEVREADWRITE8("i8251line", i8251_device, status_r, control_w, 0x00ff) @@ -413,7 +415,7 @@ uint32_t ms0515_state::screen_update_ms0515(screen_device &screen, bitmap_ind16 return 0; } -void ms0515_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(ms0515_state::screen_vblank) { // irq2_w(state ? ASSERT_LINE : CLEAR_LINE); if (BIT(m_bankreg, 9)) @@ -498,7 +500,7 @@ WRITE_LINE_MEMBER(ms0515_state::irq11_w) irq_encoder(11, state); } -static MACHINE_CONFIG_START( ms0515, ms0515_state ) +static MACHINE_CONFIG_START( ms0515 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", T11, XTAL_4MHz) // actual CPU is T11 clone, KR1807VM1 MCFG_T11_INITIAL_MODE(0xf2ff) @@ -508,7 +510,7 @@ static MACHINE_CONFIG_START( ms0515, ms0515_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS( XTAL_15MHz, 958,0,640, 313,0,200 ) MCFG_SCREEN_UPDATE_DRIVER(ms0515_state, screen_update_ms0515) - MCFG_SCREEN_VBLANK_DRIVER(ms0515_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ms0515_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_DEFAULT_LAYOUT(layout_ms0515) @@ -580,5 +582,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1990, ms0515, 0, 0, ms0515, ms0515, driver_device, 0, "Elektronika", "MS 0515", MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1990, ms0515, 0, 0, ms0515, ms0515, ms0515_state, 0, "Elektronika", "MS 0515", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ms32.cpp b/src/mame/drivers/ms32.cpp index e97a1f14543..3f299c6d868 100644 --- a/src/mame/drivers/ms32.cpp +++ b/src/mame/drivers/ms32.cpp @@ -1386,7 +1386,7 @@ void ms32_state::machine_reset() /********** MACHINE DRIVER **********/ -static MACHINE_CONFIG_START( ms32, ms32_state ) +static MACHINE_CONFIG_START( ms32 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V70, 20000000) // 20MHz @@ -2259,19 +2259,19 @@ DRIVER_INIT_MEMBER(ms32_state,bnstars) GAME( 1994, hayaosi2, 0, ms32, hayaosi2, ms32_state, ss92046_01, ROT0, "Jaleco", "Hayaoshi Quiz Grand Champion Taikai", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1994, hayaosi3, 0, ms32, hayaosi3, ms32_state, ss92046_01, ROT0, "Jaleco", "Hayaoshi Quiz Nettou Namahousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1994, bbbxing, 0, ms32, bbbxing, ms32_state, ss92046_01, ROT0, "Jaleco", "Best Bout Boxing", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1994, 47pie2, 0, ms32, 47pie2, ms32_state, 47pie2, ROT0, "Jaleco", "Idol Janshi Suchie-Pai II (v1.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, 47pie2o, 47pie2, ms32, 47pie2, ms32_state, 47pie2, ROT0, "Jaleco", "Idol Janshi Suchie-Pai II (v1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, bbbxing, 0, ms32, bbbxing, ms32_state, ss92046_01, ROT0, "Jaleco", "Best Bout Boxing", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1994, 47pie2, 0, ms32, 47pie2, ms32_state, 47pie2, ROT0, "Jaleco", "Idol Janshi Suchie-Pai II (v1.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, 47pie2o, 47pie2, ms32, 47pie2, ms32_state, 47pie2, ROT0, "Jaleco", "Idol Janshi Suchie-Pai II (v1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1995, desertwr, 0, ms32, desertwr, ms32_state, ss91022_10, ROT270, "Jaleco", "Desert War / Wangan Sensou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1995, gametngk, 0, ms32, gametngk, ms32_state, ss91022_10, ROT270, "Jaleco", "The Game Paradise - Master of Shooting! / Game Tengoku - The Game Paradise", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, tetrisp, 0, ms32, tetrisp, ms32_state, ss92046_01, ROT0, "Jaleco / BPS", "Tetris Plus", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, p47aces, 0, ms32, p47aces, ms32_state, ss92048_01, ROT0, "Jaleco", "P-47 Aces", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, akiss, 0, ms32, 47pie2, ms32_state, kirarast, ROT0, "Jaleco", "Mahjong Angel Kiss", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, gratia, 0, ms32, gratia, ms32_state, ss92047_01, ROT0, "Jaleco", "Gratia - Second Earth (92047-01 version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, gratiaa, gratia, ms32, gratia, ms32_state, ss91022_10, ROT0, "Jaleco", "Gratia - Second Earth (91022-10 version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, tetrisp, 0, ms32, tetrisp, ms32_state, ss92046_01, ROT0, "Jaleco / BPS", "Tetris Plus", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, p47aces, 0, ms32, p47aces, ms32_state, ss92048_01, ROT0, "Jaleco", "P-47 Aces", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, akiss, 0, ms32, 47pie2, ms32_state, kirarast, ROT0, "Jaleco", "Mahjong Angel Kiss", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, gratia, 0, ms32, gratia, ms32_state, ss92047_01, ROT0, "Jaleco", "Gratia - Second Earth (92047-01 version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, gratiaa, gratia, ms32, gratia, ms32_state, ss91022_10, ROT0, "Jaleco", "Gratia - Second Earth (91022-10 version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1996, kirarast, 0, ms32, kirarast, ms32_state, kirarast, ROT0, "Jaleco", "Ryuusei Janshi Kirara Star", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1997, tp2m32, tetrisp2, ms32, tp2m32, ms32_state, ss91022_10, ROT0, "Jaleco", "Tetris Plus 2 (MegaSystem 32 Version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1997, bnstars, bnstars1, ms32, 47pie2, ms32_state, bnstars, ROT0, "Jaleco", "Vs. Janshi Brandnew Stars (MegaSystem32 Version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1997, tp2m32, tetrisp2, ms32, tp2m32, ms32_state, ss91022_10, ROT0, "Jaleco", "Tetris Plus 2 (MegaSystem 32 Version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1997, bnstars, bnstars1, ms32, 47pie2, ms32_state, bnstars, ROT0, "Jaleco", "Vs. Janshi Brandnew Stars (MegaSystem32 Version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1996, wpksocv2, 0, ms32, wpksocv2, ms32_state, ss92046_01, ROT0, "Jaleco", "World PK Soccer V2 (ver 1.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ms9540.cpp b/src/mame/drivers/ms9540.cpp index d159fc10bcb..1f15b290f81 100644 --- a/src/mame/drivers/ms9540.cpp +++ b/src/mame/drivers/ms9540.cpp @@ -40,7 +40,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); private: uint8_t m_term_data; @@ -72,19 +72,19 @@ void ms9540_state::machine_reset() m_maincpu->reset(); } -WRITE8_MEMBER( ms9540_state::kbd_put ) +void ms9540_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( ms9540, ms9540_state ) +static MACHINE_CONFIG_START( ms9540 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) // unknown clock MCFG_CPU_PROGRAM_MAP(ms9540_mem) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ms9540_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ms9540_state, kbd_put)) MACHINE_CONFIG_END @@ -102,5 +102,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, ms9540, 0, 0, ms9540, ms9540, driver_device, 0, "Millennium Systems", "ms9540", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 198?, ms9540, 0, 0, ms9540, ms9540, ms9540_state, 0, "Millennium Systems", "ms9540", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/msbc1.cpp b/src/mame/drivers/msbc1.cpp index 25816c299d9..2b2cc5d52f4 100644 --- a/src/mame/drivers/msbc1.cpp +++ b/src/mame/drivers/msbc1.cpp @@ -77,7 +77,7 @@ void msbc1_state::machine_reset() m_maincpu->reset(); } -static MACHINE_CONFIG_START( msbc1, msbc1_state ) +static MACHINE_CONFIG_START( msbc1 ) /* basic machine hardware */ MCFG_CPU_ADD(MC68000R12_TAG, M68000, XTAL_12_5MHz) MCFG_CPU_PROGRAM_MAP(msbc1_mem) @@ -109,5 +109,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, msbc1, 0, 0, msbc1, msbc1, driver_device, 0, "Omnibyte", "MSBC-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, msbc1, 0, 0, msbc1, msbc1, msbc1_state, 0, "Omnibyte", "MSBC-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/msisaac.cpp b/src/mame/drivers/msisaac.cpp index 9c2977cce73..4e1deb276f2 100644 --- a/src/mame/drivers/msisaac.cpp +++ b/src/mame/drivers/msisaac.cpp @@ -463,7 +463,7 @@ void msisaac_state::machine_reset() #endif } -static MACHINE_CONFIG_START( msisaac, msisaac_state ) +static MACHINE_CONFIG_START( msisaac ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) @@ -558,4 +558,4 @@ ROM_START( msisaac ) ROM_END -GAME( 1985, msisaac, 0, msisaac, msisaac, driver_device, 0, ROT270, "Taito Corporation", "Metal Soldier Isaac II", MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, msisaac, 0, msisaac, msisaac, msisaac_state, 0, ROT270, "Taito Corporation", "Metal Soldier Isaac II", MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mstation.cpp b/src/mame/drivers/mstation.cpp index 0c2b515fee5..842e3032f98 100644 --- a/src/mame/drivers/mstation.cpp +++ b/src/mame/drivers/mstation.cpp @@ -435,7 +435,7 @@ PALETTE_INIT_MEMBER(mstation_state, mstation) } -static MACHINE_CONFIG_START( mstation, mstation_state ) +static MACHINE_CONFIG_START( mstation ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) //unknown clock MCFG_CPU_PROGRAM_MAP(mstation_mem) @@ -494,5 +494,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1999, mstation, 0, 0, mstation, mstation, driver_device, 0, "CIDCO", "MailStation", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1999, mstation, 0, 0, mstation, mstation, mstation_state, 0, "CIDCO", "MailStation", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/msx.cpp b/src/mame/drivers/msx.cpp index ab5ea0e9a42..ce80ed060d1 100644 --- a/src/mame/drivers/msx.cpp +++ b/src/mame/drivers/msx.cpp @@ -1341,7 +1341,7 @@ static MACHINE_CONFIG_FRAGMENT( msx2_64kb_vram ) v9938_device::static_set_vram_size(*device, 0x10000); MACHINE_CONFIG_END -static MACHINE_CONFIG_START( msx, msx_state ) +static MACHINE_CONFIG_START( msx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_10_738635MHz/3) /* 3.579545 MHz */ MCFG_CPU_PROGRAM_MAP(msx_memory_map) @@ -1481,7 +1481,7 @@ static MACHINE_CONFIG_DERIVED( msx_tms9929, msx ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( msx2, msx_state ) +static MACHINE_CONFIG_START( msx2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_21_4772MHz/6) /* 3.579545 MHz */ MCFG_CPU_PROGRAM_MAP(msx_memory_map) @@ -1539,7 +1539,7 @@ static MACHINE_CONFIG_START( msx2, msx_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( msx2p, msx_state ) +static MACHINE_CONFIG_START( msx2p ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_21_4772MHz/6) /* 3.579545 MHz */ MCFG_CPU_PROGRAM_MAP(msx_memory_map) @@ -8243,258 +8243,258 @@ static MACHINE_CONFIG_DERIVED( fsa1st, msx2 ) MACHINE_CONFIG_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ /* MSX1 */ -COMP(1986, ax150, 0, 0, ax150, msx, driver_device, 0, "Al Alamiah", "AX-150 (Arabic) (MSX1)", 0) -COMP(1986, ax170, 0, 0, ax170, msx, driver_device, 0, "Al Alamiah", "AX-170 (Arabic) (MSX1)", 0) -COMP(1983, canonv8, 0, 0, canonv8, msx, driver_device, 0, "Canon", "V-8 (MSX1)", 0) -COMP(1983, canonv10, canonv20, 0, canonv10, msx, driver_device, 0, "Canon", "V-10 (MSX1)", 0) -COMP(1983, canonv20, 0, 0, canonv20, msx, driver_device, 0, "Canon", "V-20 (MSX1)", 0) -COMP(1983, canonv20e, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20E (MSX1)", 0) // Different Euro keyboard layout? -COMP(1983, canonv20f, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20F (MSX1)", 0) // Different French keyboard layout? -COMP(1983, canonv20g, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20G (MSX1)", 0) // Different German keyboard layout? -COMP(1983, canonv20s, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20S (MSX1)", 0) // Different Spanish keyboard layout? -COMP(1984, mx10, 0, 0, mx10, msx, driver_device, 0, "Casio", "MX-10 (MSX1)", 0) -COMP(1984, mx101, mx10, 0, mx101, msx, driver_device, 0, "Casio", "MX-101 (MSX1)", 0) -COMP(1984, mx15, mx10, 0, mx15, msx, driver_device, 0, "Casio", "MX-15 (MSX1)", 0) -COMP(1984, pv7, 0, 0, pv7, msx, driver_device, 0, "Casio", "PV-7 (MSX1)", 0) -COMP(1984, pv16, 0, 0, pv16, msx, driver_device, 0, "Casio", "PV-16 (MSX1)", 0) -COMP(198?, cpc88, 0, 0, cpc88, msxkr, driver_device, 0, "Daewoo", "CPC-88 (Korea) (MSX1)", 0) -COMP(1984, dpc100, dpc200, 0, dpc100, msxkr, driver_device, 0, "Daewoo", "IQ-1000 DPC-100 (Korea) (MSX1)", 0) -COMP(1984, dpc180, dpc200, 0, dpc180, msxkr, driver_device, 0, "Daewoo", "IQ-1000 DPC-180 (Korea) (MSX1)", 0) -COMP(1984, dpc200, 0, 0, dpc200, msxkr, driver_device, 0, "Daewoo", "IQ-1000 DPC-200 (Korea) (MSX1)", 0) -COMP(1985, dpc200e, 0, 0, dpc200e, msx, driver_device, 0, "Daewoo", "DPC-200E (MSX1)", 0) -COMP(1983, cpc50a, cpc51, 0, cpc50a, msxkr, driver_device, 0, "Daewoo", "Zemmix CPC-50A (Korea) (MSX1)", 0) -COMP(1983, cpc50b, cpc51, 0, cpc50b, msxkr, driver_device, 0, "Daewoo", "Zemmix CPC-50B (Korea) (MSX1)", 0) -COMP(1986, cpc51, 0, 0, cpc51, msxkr, driver_device, 0, "Daewoo", "Zemmix CPC-51 (Korea) (MSX1)", 0) -COMP(1983, fdpc200, 0, 0, fdpc200, msx, driver_device, 0, "Fenner", "DPC-200 (Italy) (MSX1)", 0) -COMP(1984, fpc500, 0, 0, fpc500, msx, driver_device, 0, "Fenner", "FPC-500 (Italy) (MSX1)", 0) -COMP(1986, fspc800, 0, 0, fspc800, msx, driver_device, 0, "Fenner", "SPC-800 (Italy) (MSX1)", 0) -COMP(1984, bruc100, 0, 0, bruc100, msx, driver_device, 0, "Frael", "Bruc 100-1 (MSX1)", 0) -COMP(1983, fmx, 0, 0, fmx, msxjp, driver_device, 0, "Fujitsu", "FM-X (MSX1)", 0) -COMP(1984, gsfc80u, 0, 0, gsfc80u, msxkr, driver_device, 0, "Goldstar", "FC-80U (MSX1)", 0) -COMP(1983, gsfc200, 0, 0, gsfc200, msx, driver_device, 0, "Goldstar", "FC-200 (MSX1)", 0) -COMP(198?, gfc1080, 0, 0, gfc1080, msxkr, driver_device, 0, "Goldstar", "GFC-1080 (MSX1)", 0) -COMP(198?, gfc1080a, 0, 0, gfc1080a, msxkr, driver_device, 0, "Goldstar", "GFC-1080A (MSX1)", 0) -COMP(1983, expert10, expert13, 0, expert10, expert10, driver_device, 0, "Gradiente", "Expert 1.0 (Brazil) (MSX1)", 0) -COMP(1984, expert11, expert13, 0, expert11, expert11, driver_device, 0, "Gradiente", "Expert 1.1 (Brazil) (MSX1)", 0) -COMP(1984, expert13, 0, 0, expert13, expert11, driver_device, 0, "Gradiente", "Expert 1.3 (Brazil) (MSX1)", 0) -COMP(1985, expertdp, 0, 0, expertdp, expert11, driver_device, 0, "Gradiente", "Expert DDPlus (Brazil) (MSX1)", 0) -COMP(1984, expertpl, 0, 0, expertpl, expert11, driver_device, 0, "Gradiente", "Expert Plus (Brazil) (MSX1)", 0) -COMP(1984, mbh2, 0, 0, mbh2, msxjp, driver_device, 0, "Hitachi", "MB-H2 (MSX1)", 0) -COMP(1984, mbh25, 0, 0, mbh25, msxjp, driver_device, 0, "Hitachi", "MB-H25 (MSX1)", 0) -COMP(1983, mbh50, 0, 0, mbh50, msxjp, driver_device, 0, "Hitachi", "MB-H50 (MSX1)", 0) -COMP(1983, jvchc7gb, 0, 0, jvchc7gb, msx, driver_device, 0, "JVC", "HC-7GB (MSX1)", 0) -COMP(198?, mlf48, 0, 0, mlf48, msx, driver_device, 0, "Mitsubishi", "ML-F48 (MSX1)", 0) -COMP(1983, mlf80, 0, 0, mlf80, msx, driver_device, 0, "Mitsubishi", "ML-F80 (MSX1)", 0) -COMP(1984, mlf110, 0, 0, mlf110, msxjp, driver_device, 0, "Mitsubishi", "ML-F110 (MSX1)", 0) -COMP(1984, mlf120, 0, 0, mlf120, msxjp, driver_device, 0, "Mitsubishi", "ML-F120 (MSX1)", 0) -COMP(1983, mlfx1, 0, 0, mlfx1, msx, driver_device, 0, "Mitsubishi", "ML-FX1 (MSX1)", 0) -COMP(1984, cf1200, 0, 0, cf1200, msxjp, driver_device, 0, "National / Matsushita", "CF-1200 (Japan) (MSX1)", 0) -COMP(1983, cf2000, 0, 0, cf2000, msxjp, driver_device, 0, "National / Matsushita", "CF-2000 (Japan) (MSX1)", 0) -COMP(1984, cf2700, 0, 0, cf2700, msxjp, driver_device, 0, "National / Matsushita", "CF-2700 (Japan) (MSX1)", 0) -COMP(1984, cf3000, 0, 0, cf3000, msxjp, driver_device, 0, "National / Matsushita", "CF-3000 (Japan) (MSX1)", 0) -COMP(1985, cf3300, 0, 0, cf3300, msxjp, driver_device, 0, "National / Matsushita", "CF-3300 (Japan) (MSX1)", 0) -COMP(1985, fs1300, 0, 0, fs1300, msxjp, driver_device, 0, "National / Matsushita", "FS-1300 (Japan) (MSX1)", 0) -COMP(1985, fs4000, 0, 0, fs4000, msxjp, driver_device, 0, "National / Matsushita", "FS-4000 (Japan) (MSX1)", 0) -COMP(1985, fs4000a, fs4000, 0, fs4000a, msxjp, driver_device, 0, "National / Matsushita", "FS-4000 (alt) (Japan) (MSX1)", 0) -COMP(1983, phc2, 0, 0, phc2, msx, driver_device, 0, "Olympia", "PHC-2 (MSX1)" , 0) -COMP(19??, phc28, 0, 0, phc28, msx, driver_device, 0, "Olympia", "PHC-28 (MSX1)", 0) -COMP(1984, cf2700g, 0, 0, cf2700g, msx, driver_device, 0, "Panasonic", "CF-2700G (Germany) (MSX1)", 0) -COMP(198?, perfect1, 0, 0, perfect1, msx, driver_device, 0, "Perfect", "Perfect1 (MSX1)", MACHINE_NOT_WORKING) -COMP(1983, nms801, 0, 0, nms801, msx, driver_device, 0, "Philips", "NMS-801 (MSX1)", 0) -COMP(1984, vg8000, vg8010, 0, vg8000, msx, driver_device, 0, "Philips", "VG-8000 (MSX1)", 0) -COMP(1984, vg8010, 0, 0, vg8010, msx, driver_device, 0, "Philips", "VG-8010 (MSX1)", 0) -COMP(1984, vg8010f, vg8010, 0, vg8010f, msx, driver_device, 0, "Philips", "VG-8010F (MSX1)" , 0) -COMP(1985, vg802000, vg802020, 0, vg802000, msx, driver_device, 0, "Philips", "VG-8020-00 (MSX1)", 0) -COMP(1985, vg802020, 0, 0, vg802020, msx, driver_device, 0, "Philips", "VG-8020-20 (MSX1)", 0) -COMP(19??, vg8020f, vg802020, 0, vg8020f, msx, driver_device, 0, "Philips", "VG-8020F (MSX1)", 0) -COMP(1985, piopx7, 0, 0, piopx7, msx, driver_device, 0, "Pioneer", "PX-07 Palcom (MSX1)", 0) -COMP(1985, piopx7uk, piopx7, 0, piopx7uk, msx, driver_device, 0, "Pioneer", "PX-07UK Palcom (MSX1)", 0) -COMP(1984, piopxv60, piopx7, 0, piopxv60, msxjp, driver_device, 0, "Pioneer", "PX-V60 (MSX1)", 0) -COMP(19??, spc800, 0, 0, spc800, msx, driver_device, 0, "Samsung", "SPC-800 (MSX1)", 0) -COMP(1985, mpc64, 0, 0, mpc64, msxjp, driver_device, 0, "Sanyo", "MPC-64 (MSX1)", 0) -COMP(1985, mpc100, 0, 0, mpc100, msx, driver_device, 0, "Sanyo", "MPC-100 (MSX1)", 0) -COMP(1983, mpc200, 0, 0, mpc200, msx, driver_device, 0, "Sanyo", "MPC-200 (MSX1)", 0) -COMP(1983, mpc200sp, mpc200, 0, mpc200sp, msx, driver_device, 0, "Sanyo", "MPC-200SP (MSX1)", 0) // Spanish keyboard? -COMP(1983, phc28l, 0, 0, phc28l, msx, driver_device, 0, "Sanyo", "PHC-28L (MSX1)", 0) -COMP(1983, phc28s, 0, 0, phc28s, msx, driver_device, 0, "Sanyo", "PHC-28S (MSX1)", 0) -COMP(19??, mpc10, 0, 0, mpc10, msx, driver_device, 0, "Sanyo", "Wavy MPC-10 (MSX1)", 0) -COMP(1985, hotbit11, hotbi13p, 0, hotbit11, hotbit, driver_device, 0, "Sharp / Epcom", "HB-8000 Hotbit 1.1 (MSX1)", 0) -COMP(1985, hotbit12, hotbi13p, 0, hotbit12, hotbit, driver_device, 0, "Sharp / Epcom", "HB-8000 Hotbit 1.2 (MSX1)", 0) -COMP(1985, hotbi13b, hotbi13p, 0, hotbi13b, hotbit, driver_device, 0, "Sharp / Epcom", "HB-8000 Hotbit 1.3b (MSX1)", 0) -COMP(1985, hotbi13p, 0, 0, hotbi13p, hotbit, driver_device, 0, "Sharp / Epcom", "HB-8000 Hotbit 1.3p (MSX1)", 0) -COMP(198?, hb10, hb10p, 0, hb10, msxjp, driver_device, 0, "Sony", "HB-10 (MSX1)", 0) -COMP(1985, hb10p, 0, 0, hb10p, msx, driver_device, 0, "Sony", "HB-10P (MSX1)", 0) -COMP(1984, hb101p, 0, 0, hb101p, msx, driver_device, 0, "Sony", "HB-101P (MSX1)", 0) -COMP(1985, hb20p, 0, 0, hb20p, msx, driver_device, 0, "Sony", "HB-20P (Spanish) (MSX1)", 0) -COMP(1985, hb201, hb201p, 0, hb201, msxjp, driver_device, 0, "Sony", "HB-201 (Japan) (MSX1)", 0) -COMP(1985, hb201p, 0, 0, hb201p, msx, driver_device, 0, "Sony", "HB-201P (MSX1)", 0) -COMP(1984, hb501p, 0, 0, hb501p, msx, driver_device, 0, "Sony", "HB-501P (MSX1)", 0) -COMP(1983, hb55, hb55p, 0, hb55, msxjp, driver_device, 0, "Sony", "HB-55 (MSX1)", 0) -COMP(1983, hb55d, hb55p, 0, hb55d, msx, driver_device, 0, "Sony", "HB-55D (Germany) (MSX1)", 0) -COMP(1983, hb55p, 0, 0, hb55p, msx, driver_device, 0, "Sony", "HB-55P (MSX1)", 0) -COMP(1984, hb701fd, 0, 0, hb701fd, msxjp, driver_device, 0, "Sony", "HB-701FD (MSX1)", 0) -COMP(1983, hb75d, hb75p, 0, hb75d, msx, driver_device, 0, "Sony", "HB-75D (Germany) (MSX1)", 0) -COMP(1983, hb75p, 0, 0, hb75p, msx, driver_device, 0, "Sony", "HB-75P (MSX1)", 0) -COMP(1985, svi728, 0, 0, svi728, msx, driver_device, 0, "Spectravideo", "SVI-728 (MSX1)", 0) -COMP(1985, svi738, 0, 0, svi738, msx, driver_device, 0, "Spectravideo", "SVI-738 (MSX1)", 0) -COMP(1983, svi738ar, svi738, 0, svi738ar, msx, driver_device, 0, "Spectravideo", "SVI-738 (Arabic) (MSX1)", 0) -COMP(1983, svi738dk, svi738, 0, svi738dk, msx, driver_device, 0, "Spectravideo", "SVI-738 (Denmark) (MSX1)", 0) -COMP(1983, svi738sp, svi738, 0, svi738sp, msx, driver_device, 0, "Spectravideo", "SVI-738 (Spain) (MSX1)", 0) -COMP(1983, svi738sw, svi738, 0, svi738sw, msx, driver_device, 0, "Spectravideo", "SVI-738 (Swedish) (MSX1)", 0) -COMP(1983, svi738pl, svi738, 0, svi738pl, msx, driver_device, 0, "Spectravideo", "SVI-738 (Poland) (MSX1)", 0) -COMP(1983, tadpc200, dpc200, 0, tadpc200, msx, driver_device, 0, "Talent", "DPC-200 (MSX1)", 0) -COMP(1983, tadpc20a, dpc200, 0, tadpc20a, msx, driver_device, 0, "Talent", "DPC-200A (MSX1)", 0) -COMP(1984, hx10, 0, 0, hx10, msx, driver_device, 0, "Toshiba", "HX-10 (MSX1)", 0) -COMP(1984, hx10d, hx10, 0, hx10d, msxjp, driver_device, 0, "Toshiba", "HX-10D (MSX1)", 0) -COMP(1984, hx10dp, hx10, 0, hx10dp, msxjp, driver_device, 0, "Toshiba", "HX-10DP (MSX1)", 0) -COMP(1984, hx10e, hx10, 0, hx10e, msx, driver_device, 0, "Toshiba", "HX-10E (MSX1)", 0) -COMP(1984, hx10f, hx10, 0, hx10f, msx, driver_device, 0, "Toshiba", "HX-10F (MSX1)", 0) -COMP(1984, hx10s, hx10, 0, hx10s, msx, driver_device, 0, "Toshiba", "HX-10S (MSX1)", 0) -COMP(1984, hx10sa, hx10, 0, hx10sa, msxjp, driver_device, 0, "Toshiba", "HX-10SA (MSX1)", 0) -COMP(1984, hx20, 0, 0, hx20, msx, driver_device, 0, "Toshiba", "HX-20 (MSX1)", 0) -COMP(1984, hx20i, hx20, 0, hx20i, msx, driver_device, 0, "Toshiba", "HX-20I (MSX1)", 0) -COMP(1984, hx21, 0, 0, hx21, msxjp, driver_device, 0, "Toshiba", "HX-21 (MSX1)", MACHINE_NOT_WORKING) // Does not go into firmware -COMP(1984, hx21i, hx21, 0, hx21i, msx, driver_device, 0, "Toshiba", "HX-21I (MSX1)", 0) -COMP(1984, hx22, 0, 0, hx22, msxjp, driver_device, 0, "Toshiba", "HX-22 (MSX1)", MACHINE_NOT_WORKING) // Does not go into firmware -COMP(1984, hx22i, hx22, 0, hx22i, msx, driver_device, 0, "Toshiba", "HX-22I (MSX1)", 0) -COMP(198?, hc5, hc7, 0, hc5, msxjp, driver_device, 0, "Victor", "HC-5 (MSX1)", 0) -COMP(198?, hc6, hc7, 0, hc6, msxjp, driver_device, 0, "Victor", "HC-6 (MSX1)", 0) -COMP(198?, hc7, 0, 0, hc7, msxjp, driver_device, 0, "Victor", "HC-7 (MSX1)", 0) -COMP(1984, cx5f1, cx5f, 0, cx5f1, msxjp, driver_device, 0, "Yamaha", "CX5F (w/SFG01) (MSX1)", 0) -COMP(1984, cx5f, 0, 0, cx5f, msxjp, driver_device, 0, "Yamaha", "CX5F (w/SFG05) (MSX1)", 0) -COMP(1984, cx5m, cx5m128, 0, cx5m, msx, driver_device, 0, "Yamaha", "CX5M (MSX1)", 0) -COMP(1984, cx5m128, 0, 0, cx5m128, msx, driver_device, 0, "Yamaha", "CX5M-128 (MSX1)", 0) -COMP(1984, cx5m2, cx5m128, 0, cx5m2, msx, driver_device, 0, "Yamaha", "CX5MII (MSX1)", 0) -COMP(1984, yis303, 0, 0, yis303, msx, driver_device, 0, "Yamaha", "YIS303 (MSX1)", 0) -COMP(1984, yis503, 0, 0, yis503, msx, driver_device, 0, "Yamaha", "YIS503 (MSX1)", 0) -COMP(19??, yis503f, yis503, 0, yis503f, msx, driver_device, 0, "Yamaha", "YIS503F (MSX1)", 0) -COMP(1984, yis503ii, yis503, 0, yis503ii, msx, driver_device, 0, "Yamaha", "YIS503II (MSX1)", 0) -COMP(1986, y503iir, yis503, 0, y503iir, msx, driver_device, 0, "Yamaha", "YIS503IIR (Russian) (MSX1)", 0) -COMP(1986, y503iir2, yis503, 0, y503iir2, msx, driver_device, 0, "Yamaha", "YIS503IIR (Estonian) (MSX1)", 0) -COMP(1984, yis503m, yis503, 0, yis503m, msx, driver_device, 0, "Yamaha", "YIS503M (MSX1)", 0) -COMP(1984, yc64, 0, 0, yc64, msx, driver_device, 0, "Yashica", "YC-64 (MSX1)", 0) -COMP(1984, mx64, 0, 0, mx64, msxkr, driver_device, 0, "Yeno", "MX64 (MSX1)", 0) +COMP(1986, ax150, 0, 0, ax150, msx, msx_state, 0, "Al Alamiah", "AX-150 (Arabic) (MSX1)", 0) +COMP(1986, ax170, 0, 0, ax170, msx, msx_state, 0, "Al Alamiah", "AX-170 (Arabic) (MSX1)", 0) +COMP(1983, canonv8, 0, 0, canonv8, msx, msx_state, 0, "Canon", "V-8 (MSX1)", 0) +COMP(1983, canonv10, canonv20, 0, canonv10, msx, msx_state, 0, "Canon", "V-10 (MSX1)", 0) +COMP(1983, canonv20, 0, 0, canonv20, msx, msx_state, 0, "Canon", "V-20 (MSX1)", 0) +COMP(1983, canonv20e, canonv20, 0, canonv20, msx, msx_state, 0, "Canon", "V-20E (MSX1)", 0) // Different Euro keyboard layout? +COMP(1983, canonv20f, canonv20, 0, canonv20, msx, msx_state, 0, "Canon", "V-20F (MSX1)", 0) // Different French keyboard layout? +COMP(1983, canonv20g, canonv20, 0, canonv20, msx, msx_state, 0, "Canon", "V-20G (MSX1)", 0) // Different German keyboard layout? +COMP(1983, canonv20s, canonv20, 0, canonv20, msx, msx_state, 0, "Canon", "V-20S (MSX1)", 0) // Different Spanish keyboard layout? +COMP(1984, mx10, 0, 0, mx10, msx, msx_state, 0, "Casio", "MX-10 (MSX1)", 0) +COMP(1984, mx101, mx10, 0, mx101, msx, msx_state, 0, "Casio", "MX-101 (MSX1)", 0) +COMP(1984, mx15, mx10, 0, mx15, msx, msx_state, 0, "Casio", "MX-15 (MSX1)", 0) +COMP(1984, pv7, 0, 0, pv7, msx, msx_state, 0, "Casio", "PV-7 (MSX1)", 0) +COMP(1984, pv16, 0, 0, pv16, msx, msx_state, 0, "Casio", "PV-16 (MSX1)", 0) +COMP(198?, cpc88, 0, 0, cpc88, msxkr, msx_state, 0, "Daewoo", "CPC-88 (Korea) (MSX1)", 0) +COMP(1984, dpc100, dpc200, 0, dpc100, msxkr, msx_state, 0, "Daewoo", "IQ-1000 DPC-100 (Korea) (MSX1)", 0) +COMP(1984, dpc180, dpc200, 0, dpc180, msxkr, msx_state, 0, "Daewoo", "IQ-1000 DPC-180 (Korea) (MSX1)", 0) +COMP(1984, dpc200, 0, 0, dpc200, msxkr, msx_state, 0, "Daewoo", "IQ-1000 DPC-200 (Korea) (MSX1)", 0) +COMP(1985, dpc200e, 0, 0, dpc200e, msx, msx_state, 0, "Daewoo", "DPC-200E (MSX1)", 0) +COMP(1983, cpc50a, cpc51, 0, cpc50a, msxkr, msx_state, 0, "Daewoo", "Zemmix CPC-50A (Korea) (MSX1)", 0) +COMP(1983, cpc50b, cpc51, 0, cpc50b, msxkr, msx_state, 0, "Daewoo", "Zemmix CPC-50B (Korea) (MSX1)", 0) +COMP(1986, cpc51, 0, 0, cpc51, msxkr, msx_state, 0, "Daewoo", "Zemmix CPC-51 (Korea) (MSX1)", 0) +COMP(1983, fdpc200, 0, 0, fdpc200, msx, msx_state, 0, "Fenner", "DPC-200 (Italy) (MSX1)", 0) +COMP(1984, fpc500, 0, 0, fpc500, msx, msx_state, 0, "Fenner", "FPC-500 (Italy) (MSX1)", 0) +COMP(1986, fspc800, 0, 0, fspc800, msx, msx_state, 0, "Fenner", "SPC-800 (Italy) (MSX1)", 0) +COMP(1984, bruc100, 0, 0, bruc100, msx, msx_state, 0, "Frael", "Bruc 100-1 (MSX1)", 0) +COMP(1983, fmx, 0, 0, fmx, msxjp, msx_state, 0, "Fujitsu", "FM-X (MSX1)", 0) +COMP(1984, gsfc80u, 0, 0, gsfc80u, msxkr, msx_state, 0, "Goldstar", "FC-80U (MSX1)", 0) +COMP(1983, gsfc200, 0, 0, gsfc200, msx, msx_state, 0, "Goldstar", "FC-200 (MSX1)", 0) +COMP(198?, gfc1080, 0, 0, gfc1080, msxkr, msx_state, 0, "Goldstar", "GFC-1080 (MSX1)", 0) +COMP(198?, gfc1080a, 0, 0, gfc1080a, msxkr, msx_state, 0, "Goldstar", "GFC-1080A (MSX1)", 0) +COMP(1983, expert10, expert13, 0, expert10, expert10, msx_state, 0, "Gradiente", "Expert 1.0 (Brazil) (MSX1)", 0) +COMP(1984, expert11, expert13, 0, expert11, expert11, msx_state, 0, "Gradiente", "Expert 1.1 (Brazil) (MSX1)", 0) +COMP(1984, expert13, 0, 0, expert13, expert11, msx_state, 0, "Gradiente", "Expert 1.3 (Brazil) (MSX1)", 0) +COMP(1985, expertdp, 0, 0, expertdp, expert11, msx_state, 0, "Gradiente", "Expert DDPlus (Brazil) (MSX1)", 0) +COMP(1984, expertpl, 0, 0, expertpl, expert11, msx_state, 0, "Gradiente", "Expert Plus (Brazil) (MSX1)", 0) +COMP(1984, mbh2, 0, 0, mbh2, msxjp, msx_state, 0, "Hitachi", "MB-H2 (MSX1)", 0) +COMP(1984, mbh25, 0, 0, mbh25, msxjp, msx_state, 0, "Hitachi", "MB-H25 (MSX1)", 0) +COMP(1983, mbh50, 0, 0, mbh50, msxjp, msx_state, 0, "Hitachi", "MB-H50 (MSX1)", 0) +COMP(1983, jvchc7gb, 0, 0, jvchc7gb, msx, msx_state, 0, "JVC", "HC-7GB (MSX1)", 0) +COMP(198?, mlf48, 0, 0, mlf48, msx, msx_state, 0, "Mitsubishi", "ML-F48 (MSX1)", 0) +COMP(1983, mlf80, 0, 0, mlf80, msx, msx_state, 0, "Mitsubishi", "ML-F80 (MSX1)", 0) +COMP(1984, mlf110, 0, 0, mlf110, msxjp, msx_state, 0, "Mitsubishi", "ML-F110 (MSX1)", 0) +COMP(1984, mlf120, 0, 0, mlf120, msxjp, msx_state, 0, "Mitsubishi", "ML-F120 (MSX1)", 0) +COMP(1983, mlfx1, 0, 0, mlfx1, msx, msx_state, 0, "Mitsubishi", "ML-FX1 (MSX1)", 0) +COMP(1984, cf1200, 0, 0, cf1200, msxjp, msx_state, 0, "National / Matsushita", "CF-1200 (Japan) (MSX1)", 0) +COMP(1983, cf2000, 0, 0, cf2000, msxjp, msx_state, 0, "National / Matsushita", "CF-2000 (Japan) (MSX1)", 0) +COMP(1984, cf2700, 0, 0, cf2700, msxjp, msx_state, 0, "National / Matsushita", "CF-2700 (Japan) (MSX1)", 0) +COMP(1984, cf3000, 0, 0, cf3000, msxjp, msx_state, 0, "National / Matsushita", "CF-3000 (Japan) (MSX1)", 0) +COMP(1985, cf3300, 0, 0, cf3300, msxjp, msx_state, 0, "National / Matsushita", "CF-3300 (Japan) (MSX1)", 0) +COMP(1985, fs1300, 0, 0, fs1300, msxjp, msx_state, 0, "National / Matsushita", "FS-1300 (Japan) (MSX1)", 0) +COMP(1985, fs4000, 0, 0, fs4000, msxjp, msx_state, 0, "National / Matsushita", "FS-4000 (Japan) (MSX1)", 0) +COMP(1985, fs4000a, fs4000, 0, fs4000a, msxjp, msx_state, 0, "National / Matsushita", "FS-4000 (alt) (Japan) (MSX1)", 0) +COMP(1983, phc2, 0, 0, phc2, msx, msx_state, 0, "Olympia", "PHC-2 (MSX1)" , 0) +COMP(19??, phc28, 0, 0, phc28, msx, msx_state, 0, "Olympia", "PHC-28 (MSX1)", 0) +COMP(1984, cf2700g, 0, 0, cf2700g, msx, msx_state, 0, "Panasonic", "CF-2700G (Germany) (MSX1)", 0) +COMP(198?, perfect1, 0, 0, perfect1, msx, msx_state, 0, "Perfect", "Perfect1 (MSX1)", MACHINE_NOT_WORKING) +COMP(1983, nms801, 0, 0, nms801, msx, msx_state, 0, "Philips", "NMS-801 (MSX1)", 0) +COMP(1984, vg8000, vg8010, 0, vg8000, msx, msx_state, 0, "Philips", "VG-8000 (MSX1)", 0) +COMP(1984, vg8010, 0, 0, vg8010, msx, msx_state, 0, "Philips", "VG-8010 (MSX1)", 0) +COMP(1984, vg8010f, vg8010, 0, vg8010f, msx, msx_state, 0, "Philips", "VG-8010F (MSX1)" , 0) +COMP(1985, vg802000, vg802020, 0, vg802000, msx, msx_state, 0, "Philips", "VG-8020-00 (MSX1)", 0) +COMP(1985, vg802020, 0, 0, vg802020, msx, msx_state, 0, "Philips", "VG-8020-20 (MSX1)", 0) +COMP(19??, vg8020f, vg802020, 0, vg8020f, msx, msx_state, 0, "Philips", "VG-8020F (MSX1)", 0) +COMP(1985, piopx7, 0, 0, piopx7, msx, msx_state, 0, "Pioneer", "PX-07 Palcom (MSX1)", 0) +COMP(1985, piopx7uk, piopx7, 0, piopx7uk, msx, msx_state, 0, "Pioneer", "PX-07UK Palcom (MSX1)", 0) +COMP(1984, piopxv60, piopx7, 0, piopxv60, msxjp, msx_state, 0, "Pioneer", "PX-V60 (MSX1)", 0) +COMP(19??, spc800, 0, 0, spc800, msx, msx_state, 0, "Samsung", "SPC-800 (MSX1)", 0) +COMP(1985, mpc64, 0, 0, mpc64, msxjp, msx_state, 0, "Sanyo", "MPC-64 (MSX1)", 0) +COMP(1985, mpc100, 0, 0, mpc100, msx, msx_state, 0, "Sanyo", "MPC-100 (MSX1)", 0) +COMP(1983, mpc200, 0, 0, mpc200, msx, msx_state, 0, "Sanyo", "MPC-200 (MSX1)", 0) +COMP(1983, mpc200sp, mpc200, 0, mpc200sp, msx, msx_state, 0, "Sanyo", "MPC-200SP (MSX1)", 0) // Spanish keyboard? +COMP(1983, phc28l, 0, 0, phc28l, msx, msx_state, 0, "Sanyo", "PHC-28L (MSX1)", 0) +COMP(1983, phc28s, 0, 0, phc28s, msx, msx_state, 0, "Sanyo", "PHC-28S (MSX1)", 0) +COMP(19??, mpc10, 0, 0, mpc10, msx, msx_state, 0, "Sanyo", "Wavy MPC-10 (MSX1)", 0) +COMP(1985, hotbit11, hotbi13p, 0, hotbit11, hotbit, msx_state, 0, "Sharp / Epcom", "HB-8000 Hotbit 1.1 (MSX1)", 0) +COMP(1985, hotbit12, hotbi13p, 0, hotbit12, hotbit, msx_state, 0, "Sharp / Epcom", "HB-8000 Hotbit 1.2 (MSX1)", 0) +COMP(1985, hotbi13b, hotbi13p, 0, hotbi13b, hotbit, msx_state, 0, "Sharp / Epcom", "HB-8000 Hotbit 1.3b (MSX1)", 0) +COMP(1985, hotbi13p, 0, 0, hotbi13p, hotbit, msx_state, 0, "Sharp / Epcom", "HB-8000 Hotbit 1.3p (MSX1)", 0) +COMP(198?, hb10, hb10p, 0, hb10, msxjp, msx_state, 0, "Sony", "HB-10 (MSX1)", 0) +COMP(1985, hb10p, 0, 0, hb10p, msx, msx_state, 0, "Sony", "HB-10P (MSX1)", 0) +COMP(1984, hb101p, 0, 0, hb101p, msx, msx_state, 0, "Sony", "HB-101P (MSX1)", 0) +COMP(1985, hb20p, 0, 0, hb20p, msx, msx_state, 0, "Sony", "HB-20P (Spanish) (MSX1)", 0) +COMP(1985, hb201, hb201p, 0, hb201, msxjp, msx_state, 0, "Sony", "HB-201 (Japan) (MSX1)", 0) +COMP(1985, hb201p, 0, 0, hb201p, msx, msx_state, 0, "Sony", "HB-201P (MSX1)", 0) +COMP(1984, hb501p, 0, 0, hb501p, msx, msx_state, 0, "Sony", "HB-501P (MSX1)", 0) +COMP(1983, hb55, hb55p, 0, hb55, msxjp, msx_state, 0, "Sony", "HB-55 (MSX1)", 0) +COMP(1983, hb55d, hb55p, 0, hb55d, msx, msx_state, 0, "Sony", "HB-55D (Germany) (MSX1)", 0) +COMP(1983, hb55p, 0, 0, hb55p, msx, msx_state, 0, "Sony", "HB-55P (MSX1)", 0) +COMP(1984, hb701fd, 0, 0, hb701fd, msxjp, msx_state, 0, "Sony", "HB-701FD (MSX1)", 0) +COMP(1983, hb75d, hb75p, 0, hb75d, msx, msx_state, 0, "Sony", "HB-75D (Germany) (MSX1)", 0) +COMP(1983, hb75p, 0, 0, hb75p, msx, msx_state, 0, "Sony", "HB-75P (MSX1)", 0) +COMP(1985, svi728, 0, 0, svi728, msx, msx_state, 0, "Spectravideo", "SVI-728 (MSX1)", 0) +COMP(1985, svi738, 0, 0, svi738, msx, msx_state, 0, "Spectravideo", "SVI-738 (MSX1)", 0) +COMP(1983, svi738ar, svi738, 0, svi738ar, msx, msx_state, 0, "Spectravideo", "SVI-738 (Arabic) (MSX1)", 0) +COMP(1983, svi738dk, svi738, 0, svi738dk, msx, msx_state, 0, "Spectravideo", "SVI-738 (Denmark) (MSX1)", 0) +COMP(1983, svi738sp, svi738, 0, svi738sp, msx, msx_state, 0, "Spectravideo", "SVI-738 (Spain) (MSX1)", 0) +COMP(1983, svi738sw, svi738, 0, svi738sw, msx, msx_state, 0, "Spectravideo", "SVI-738 (Swedish) (MSX1)", 0) +COMP(1983, svi738pl, svi738, 0, svi738pl, msx, msx_state, 0, "Spectravideo", "SVI-738 (Poland) (MSX1)", 0) +COMP(1983, tadpc200, dpc200, 0, tadpc200, msx, msx_state, 0, "Talent", "DPC-200 (MSX1)", 0) +COMP(1983, tadpc20a, dpc200, 0, tadpc20a, msx, msx_state, 0, "Talent", "DPC-200A (MSX1)", 0) +COMP(1984, hx10, 0, 0, hx10, msx, msx_state, 0, "Toshiba", "HX-10 (MSX1)", 0) +COMP(1984, hx10d, hx10, 0, hx10d, msxjp, msx_state, 0, "Toshiba", "HX-10D (MSX1)", 0) +COMP(1984, hx10dp, hx10, 0, hx10dp, msxjp, msx_state, 0, "Toshiba", "HX-10DP (MSX1)", 0) +COMP(1984, hx10e, hx10, 0, hx10e, msx, msx_state, 0, "Toshiba", "HX-10E (MSX1)", 0) +COMP(1984, hx10f, hx10, 0, hx10f, msx, msx_state, 0, "Toshiba", "HX-10F (MSX1)", 0) +COMP(1984, hx10s, hx10, 0, hx10s, msx, msx_state, 0, "Toshiba", "HX-10S (MSX1)", 0) +COMP(1984, hx10sa, hx10, 0, hx10sa, msxjp, msx_state, 0, "Toshiba", "HX-10SA (MSX1)", 0) +COMP(1984, hx20, 0, 0, hx20, msx, msx_state, 0, "Toshiba", "HX-20 (MSX1)", 0) +COMP(1984, hx20i, hx20, 0, hx20i, msx, msx_state, 0, "Toshiba", "HX-20I (MSX1)", 0) +COMP(1984, hx21, 0, 0, hx21, msxjp, msx_state, 0, "Toshiba", "HX-21 (MSX1)", MACHINE_NOT_WORKING) // Does not go into firmware +COMP(1984, hx21i, hx21, 0, hx21i, msx, msx_state, 0, "Toshiba", "HX-21I (MSX1)", 0) +COMP(1984, hx22, 0, 0, hx22, msxjp, msx_state, 0, "Toshiba", "HX-22 (MSX1)", MACHINE_NOT_WORKING) // Does not go into firmware +COMP(1984, hx22i, hx22, 0, hx22i, msx, msx_state, 0, "Toshiba", "HX-22I (MSX1)", 0) +COMP(198?, hc5, hc7, 0, hc5, msxjp, msx_state, 0, "Victor", "HC-5 (MSX1)", 0) +COMP(198?, hc6, hc7, 0, hc6, msxjp, msx_state, 0, "Victor", "HC-6 (MSX1)", 0) +COMP(198?, hc7, 0, 0, hc7, msxjp, msx_state, 0, "Victor", "HC-7 (MSX1)", 0) +COMP(1984, cx5f1, cx5f, 0, cx5f1, msxjp, msx_state, 0, "Yamaha", "CX5F (w/SFG01) (MSX1)", 0) +COMP(1984, cx5f, 0, 0, cx5f, msxjp, msx_state, 0, "Yamaha", "CX5F (w/SFG05) (MSX1)", 0) +COMP(1984, cx5m, cx5m128, 0, cx5m, msx, msx_state, 0, "Yamaha", "CX5M (MSX1)", 0) +COMP(1984, cx5m128, 0, 0, cx5m128, msx, msx_state, 0, "Yamaha", "CX5M-128 (MSX1)", 0) +COMP(1984, cx5m2, cx5m128, 0, cx5m2, msx, msx_state, 0, "Yamaha", "CX5MII (MSX1)", 0) +COMP(1984, yis303, 0, 0, yis303, msx, msx_state, 0, "Yamaha", "YIS303 (MSX1)", 0) +COMP(1984, yis503, 0, 0, yis503, msx, msx_state, 0, "Yamaha", "YIS503 (MSX1)", 0) +COMP(19??, yis503f, yis503, 0, yis503f, msx, msx_state, 0, "Yamaha", "YIS503F (MSX1)", 0) +COMP(1984, yis503ii, yis503, 0, yis503ii, msx, msx_state, 0, "Yamaha", "YIS503II (MSX1)", 0) +COMP(1986, y503iir, yis503, 0, y503iir, msx, msx_state, 0, "Yamaha", "YIS503IIR (Russian) (MSX1)", 0) +COMP(1986, y503iir2, yis503, 0, y503iir2, msx, msx_state, 0, "Yamaha", "YIS503IIR (Estonian) (MSX1)", 0) +COMP(1984, yis503m, yis503, 0, yis503m, msx, msx_state, 0, "Yamaha", "YIS503M (MSX1)", 0) +COMP(1984, yc64, 0, 0, yc64, msx, msx_state, 0, "Yashica", "YC-64 (MSX1)", 0) +COMP(1984, mx64, 0, 0, mx64, msxkr, msx_state, 0, "Yeno", "MX64 (MSX1)", 0) /* MSX2 */ -COMP(1986, ax350, 0, 0, ax350, msx2, driver_device, 0, "Al Alamiah", "AX-350 (Arabic) (MSX2)", 0) -COMP(1986, ax370, 0, 0, ax370, msx2, driver_device, 0, "Al Alamiah", "AX-370 (Arabic) (MSX2)", 0) -COMP(1985, canonv25, 0, 0, canonv25, msx2, driver_device, 0, "Canon", "V-25 (MSX2)", 0) -COMP(1985, canonv30, 0, 0, canonv30, msx2, driver_device, 0, "Canon", "V-30 (MSX2)", 0) -COMP(1985, canonv30f, canonv30, 0, canonv30f, msx2, driver_device, 0, "Canon", "V-30F (MSX2)", 0) -COMP(1986, cpc300, 0, 0, cpc300, msx2kr, driver_device, 0, "Daewoo", "IQ-2000 CPC-300 (Korea) (MSX2)", 0) -COMP(1986, cpc300e, 0, 0, cpc300e, msx2kr, driver_device, 0, "Daewoo", "IQ-2000 CPC-300E (Korea) (MSX2)", 0) -COMP(1985, cpc330k, 0, 0, cpc330k, msx2kr, driver_device, 0, "Daewoo", "CPC-330K KOBO (Korea) (MSX2)", 0) -COMP(1988, cpc400, 0, 0, cpc400, msx2kr, driver_device, 0, "Daewoo", "X-II CPC-400 (Korea) (MSX2)", 0) -COMP(1988, cpc400s, 0, 0, cpc400s, msx2kr, driver_device, 0, "Daewoo", "X-II CPC-400S (Korea) (MSX2)", 0) -COMP(1990, cpc61, 0, 0, cpc61, msx2kr, driver_device, 0, "Daewoo", "Zemmix CPC-61 (Korea) (MSX2)", 0) -COMP(1991, cpg120, 0, 0, cpg120, msx2kr, driver_device, 0, "Daewoo", "Zemmix CPG-120 Normal (Korea) (MSX2)", MACHINE_NOT_WORKING) // v9958 not added -COMP(198?, fpc900, 0, 0, fpc900, msx2, driver_device, 0, "Fenner", "FPC-900 (MSX2)", 0) -COMP(1986, expert20, 0, 0, expert20, msx2, driver_device, 0, "Gradiente", "Expert 2.0 (Brazil) (MSX2)", 0) -COMP(198?, mbh70, 0, 0, mbh70, msx2jp, driver_device, 0, "Hitachi", "MB-H70 (MSX2)", MACHINE_NOT_WORKING) // Firmware not working -COMP(1987, kmc5000, 0, 0, kmc5000, msx2jp, driver_device, 0, "Kawai", "KMC-5000 (MSX2)", 0) -COMP(1985, mlg1, 0, 0, mlg1, msx2, driver_device, 0, "Mitsubishi", "ML-G1 (MSX2)", 0) -COMP(198?, mlg3, 0, 0, mlg3, msx2, driver_device, 0, "Mitsubishi", "ML-G3 (MSX2)", 0) -COMP(1985, mlg10, 0, 0, mlg10, msx2jp, driver_device, 0, "Mitsubishi", "ML-G10 (MSX2)", 0) -COMP(1983, mlg30, 0, 0, mlg30, msx2, driver_device, 0, "Mitsubishi", "ML-G30 (MSX2)", 0) -COMP(1985, fs5500f1, fs5500f2, 0, fs5500f1, msx2jp, driver_device, 0, "National / Matsushita", "FS-5500F1 (Japan) (MSX2)", 0) -COMP(1985, fs5500f2, 0, 0, fs5500f2, msx2jp, driver_device, 0, "National / Matsushita", "FS-5500F2 (Japan) (MSX2)", 0) -COMP(1986, fs4500, 0, 0, fs4500, msx2jp, driver_device, 0, "National / Matsushita", "FS-4500 (Japan) (MSX2)", 0) -COMP(1986, fs4700, 0, 0, fs4700, msx2jp, driver_device, 0, "National / Matsushita", "FS-4700 (Japan) (MSX2)", 0) -COMP(1986, fs5000, 0, 0, fs5000, msx2jp, driver_device, 0, "National / Matsushita", "FS-5000F2 (Japan) (MSX2)", 0) -COMP(1986, fs4600, 0, 0, fs4600, msx2jp, driver_device, 0, "National / Matsushita", "FS-4600 (Japan) (MSX2)", 0) -COMP(1986, fsa1, fsa1a, 0, fsa1, msx2jp, driver_device, 0, "Panasonic / Matsushita", "FS-A1 / 1st released version (Japan) (MSX2)", 0) -COMP(1986, fsa1a, 0, 0, fsa1a, msx2jp, driver_device, 0, "Panasonic / Matsushita", "FS-A1 / 2nd released version (Japan) (MSX2)", 0) -COMP(1987, fsa1mk2, 0, 0, fsa1mk2, msx2jp, driver_device, 0, "Panasonic / Matsushita", "FS-A1MK2 (Japan) (MSX2)", 0) -COMP(1987, fsa1f, 0, 0, fsa1f, msx2jp, driver_device, 0, "Panasonic / Matsushita", "FS-A1F (Japan) (MSX2)", 0) -COMP(1987, fsa1fm, 0, 0, fsa1fm, msx2jp, driver_device, 0, "Panasonic / Matsushita", "FS-A1FM (Japan) (MSX2)", 0) -COMP(1986, nms8220, nms8220a, 0, nms8220, msx2, driver_device, 0, "Philips", "NMS-8220 (12-jun-1986) (MSX2)", 0) -COMP(1986, nms8220a, 0, 0, nms8220a, msx2, driver_device, 0, "Philips", "NMS-8220 (13-aug-1986) (MSX2)", 0) -COMP(1986, vg8230, 0, 0, vg8230, msx2, driver_device, 0, "Philips", "VG-8230 (MSX2)", 0) -COMP(19??, vg8230j, vg8230, 0, vg8230j, msx2jp, driver_device, 0, "Philips", "VG-8230J (MSX2)", MACHINE_NOT_WORKING) // Screen flashes a few times before going into basic -COMP(1986, vg8235, 0, 0, vg8235, msx2, driver_device, 0, "Philips", "VG-8235 (MSX2)", 0) -COMP(1986, vg8235f, vg8235, 0, vg8235f, msx2, driver_device, 0, "Philips", "VG-8235F (MSX2)", 0) -COMP(1986, vg8240, 0, 0, vg8240, msx2, driver_device, 0, "Philips", "VG-8240 (MSX2)", 0) -COMP(1986, nms8245, 0, 0, nms8245, msx2, driver_device, 0, "Philips", "NMS-8245 (MSX2)", 0) -COMP(1986, nms8245f, nms8245, 0, nms8245f, msx2, driver_device, 0, "Philips", "NMS-8245F (MSX2)", 0) -COMP(1986, nms8250, nms8255, 0, nms8250, msx2, driver_device, 0, "Philips", "NMS-8250 (MSX2)", 0) -COMP(1986, nms8250f, nms8255, 0, nms8250f, msx2, driver_device, 0, "Philips", "NMS-8250F (MSX2)", 0) // French keyboard -COMP(19??, nms8250j, nms8255, 0, nms8250j, msx2jp, driver_device, 0, "Philips", "NMS-8250J (MSX2)", 0) -COMP(1986, nms8255, 0, 0, nms8255, msx2, driver_device, 0, "Philips", "NMS-8255 (MSX2)", 0) -COMP(1986, nms8255f, nms8255, 0, nms8255f, msx2, driver_device, 0, "Philips", "NMS-8255F (MSX2)", 0) // French keyboard -COMP(1986, nms8260, 0, 0, nms8260, msx2, driver_device, 0, "Philips", "NMS-8260 (Prototype) (MSX2)", MACHINE_NOT_WORKING) -COMP(1986, nms8280, 0, 0, nms8280, msx2, driver_device, 0, "Philips", "NMS-8280 (MSX2)", 0) -COMP(1986, nms8280f, nms8280, 0, nms8280f, msx2, driver_device, 0, "Philips", "NMS-8280F (MSX2)", 0) // French keyboard -COMP(1986, nms8280g, nms8280, 0, nms8280g, msx2, driver_device, 0, "Philips", "NMS-8280G (MSX2)", 0) -COMP(19??, mpc2300, 0, 0, mpc2300, msx2, driver_device, 0, "Sanyo", "MPC-2300 (MSX2)", MACHINE_NOT_WORKING) // Keyboard responds differently -COMP(198?, mpc2500f, 0, 0, mpc2500f, msx2, driver_device, 0, "Sanyo", "MPC-2500FD (MSX2)", MACHINE_NOT_WORKING) // Russian keyboard? -COMP(19??, mpc25fd, 0, 0, mpc25fd, msx2, driver_device, 0, "Sanyo", "Wavy MPC-25FD (MSX2)", 0) -COMP(198?, mpc27, 0, 0, mpc27, msx2jp, driver_device, 0, "Sanyo", "Wavy MPC-27 (MSX2)", MACHINE_NOT_WORKING) // Light pen not emulated -COMP(1988, phc23, 0, 0, phc23, msx2jp, driver_device, 0, "Sanyo", "Wavy PHC-23 (Japan) (MSX2)", 0) -COMP(198?, phc55fd2, 0, 0, phc55fd2, msx2jp, driver_device, 0, "Sanyo", "Wavy PHC-55FD2 (MSX2)", 0) -COMP(198?, phc77, 0, 0, phc77, msx2jp, driver_device, 0, "Sanyo", "Wavy PHC-77 (MSX2)", MACHINE_NOT_WORKING) // Firmware not emulated -COMP(1986, hbf1, 0, 0, hbf1, msx2jp, driver_device, 0, "Sony", "HB-F1 (Japan) (MSX2)", MACHINE_NOT_WORKING ) // Screen stays a single color after a while -COMP(1987, hbf12, 0, 0, hbf12, msx2jp, driver_device, 0, "Sony", "HB-F1II (Japan) (MSX2)", MACHINE_NOT_WORKING ) // Screen stays a single color after a while -COMP(1987, hbf1xd, 0, 0, hbf1xd, msx2jp, driver_device, 0, "Sony", "HB-F1XD (Japan) (MSX2)", 0) -COMP(1988, hbf1xdm2, 0, 0, hbf1xdm2, msx2jp, driver_device, 0, "Sony", "HB-F1XDMK2 (Japan) (MSX2)", 0) -COMP(19??, hbf5, 0, 0, hbf5, msx2, driver_device, 0, "Sony", "HB-F5 (MSX2)", 0) -COMP(1985, hbf9p, 0, 0, hbf9p, msx2, driver_device, 0, "Sony", "HB-F9P (MSX2)", 0) -COMP(19??, hbf9pr, hbf9p, 0, hbf9pr, msx2, driver_device, 0, "Sony", "HB-F9P Russion (MSX2)", MACHINE_NOT_WORKING) // Keyboard responds differently -COMP(1985, hbf9s, hbf9p, 0, hbf9s, msx2, driver_device, 0, "Sony", "HB-F9S (MSX2)", 0) -COMP(1986, hbf500, hbf500p, 0, hbf500, msx2jp, driver_device, 0, "Sony", "HB-F500 (Japan) (MSX2)", 0) -COMP(198?, hbf500f, hbf500p, 0, hbf500f, msx2, driver_device, 0, "Sony", "HB-F500F (MSX2)", 0) // French keyboard? -COMP(1985, hbf500p, 0, 0, hbf500p, msx2, driver_device, 0, "Sony", "HB-F500P (MSX2)", 0) -COMP(1985, hbf700d, hbf700p, 0, hbf700d, msx2, driver_device, 0, "Sony", "HB-F700D (Germany) (MSX2)", 0) -COMP(1985, hbf700f, hbf700p, 0, hbf700f, msx2, driver_device, 0, "Sony", "HB-F700F (MSX2)", 0) -COMP(1985, hbf700p, 0, 0, hbf700p, msx2, driver_device, 0, "Sony", "HB-F700P (MSX2)", 0) -COMP(1985, hbf700s, hbf700p, 0, hbf700s, msx2, driver_device, 0, "Sony", "HB-F700S (Spain) (MSX2)", 0) -COMP(1986, hbf900, hbf900a, 0, hbf900, msx2jp, driver_device, 0, "Sony", "HB-F900 / 1st released version (Japan) (MSX2)", 0) -COMP(1986, hbf900a, 0, 0, hbf900a, msx2jp, driver_device, 0, "Sony", "HB-F900 / 2nd released version (Japan) (MSX2)", 0) -COMP(1986, hbg900ap, hbg900p, 0, hbg900ap, msx2, driver_device, 0, "Sony", "HB-G900AP (MSX2)", 0 ) -COMP(1986, hbg900p, 0, 0, hbg900p, msx2, driver_device, 0, "Sony", "HB-G900P (MSX2)", 0 ) -COMP(1986, hotbit20, 0, 0, hotbit20, msx2, driver_device, 0, "Sharp / Epcom", "HB-8000 Hotbit 2.0 (MSX2)", 0) // Black screen -COMP(1986, tpc310, 0, 0, tpc310, msx2, driver_device, 0, "Talent", "TPC-310 (MSX2)", 0) -COMP(19??, tpp311, 0, 0, tpp311, msx2, driver_device, 0, "Talent", "TPP-311 (MSX2)", 0) -COMP(19??, tps312, 0, 0, tps312, msx2, driver_device, 0, "Talent", "TPS-312 (MSX2)", 0) -COMP(1986, hx23, hx23i, 0, hx23, msx2, driver_device, 0, "Toshiba", "HX-23 (MSX2)", 0) -COMP(1986, hx23f, hx23i, 0, hx23f, msx2, driver_device, 0, "Toshiba", "HX-23F (MSX2)", 0) -COMP(19??, hx23i, 0, 0, hx23i, msx2, driver_device, 0, "Toshiba", "HX-23I (MSX2)", 0) -COMP(1985, hx33, 0, 0, hx33, msx2jp, driver_device, 0, "Toshiba", "HX-33 (MSX2)", 0) -COMP(1985, hx34, hx34i, 0, hx34, msx2jp, driver_device, 0, "Toshiba", "HX-34 (MSX2)", 0) -COMP(1985, hx34i, 0, 0, hx34i, msx, driver_device, 0, "Toshiba", "HX-34I (MSX2)", 0) -COMP(1985, fstm1, 0, 0, fstm1, msx, driver_device, 0, "Toshiba", "FS-TM1 (MSX2)", 0) -COMP(198?, victhc90, victhc95, 0, victhc90, msxjp, driver_device, 0, "Victor", "HC-90 (MSX2)", MACHINE_NOT_WORKING) // 2nd cpu/turbo not emulated, firmware won't start -COMP(1986, victhc95, 0, 0, victhc95, msxjp, driver_device, 0, "Victor", "HC-95 (MSX2)", MACHINE_NOT_WORKING) // 2nd cpu/turbo not emulated, firmware won't start -COMP(1986, victhc95a, victhc95, 0, victhc95a, msxjp, driver_device, 0, "Victor", "HC-95A (MSX2)", MACHINE_NOT_WORKING) // 2nd cpu/turbo not emulated, firmware won't start -COMP(1986, cx7m, cx7m128, 0, cx7m, msx2, driver_device, 0, "Yamaha", "CX7M (MSX2)", 0) -COMP(1986, cx7m128, 0, 0, cx7m128, msx2, driver_device, 0, "Yamaha", "CX7M/128 (MSX2)", 0) -COMP(198?, y503iiir, 0, 0, y503iiir, msx2, driver_device, 0, "Yamaha", "YIS-503 III R (Russian) (MSX2)", MACHINE_NOT_WORKING) // Russian keyboard, floppy support broken -COMP(198?, y503iiire, y503iiir, 0, y503iiire, msx2, driver_device, 0, "Yamaha", "YIS-503 III R (Estonian) (MSX2)", MACHINE_NOT_WORKING) // Russian/Estonian keyboard, floppy support broken -COMP(1985, yis60464, yis604, 0, yis60464, msx2jp, driver_device, 0, "Yamaha", "YIS604 (64KB) (MSX2)", 0) -COMP(1985, yis604, 0, 0, yis604, msx2jp, driver_device, 0, "Yamaha", "YIS604 (128KB) (MSX2)", 0) -COMP(198?, y805128, y805256, 0, y805128, msx2jp, driver_device, 0, "Yamaha", "YIS805/128 (Russian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken -COMP(198?, y805128r2, y805256, 0, y805128r2, msx2jp, driver_device, 0, "Yamaha", "YIS805R2/128 (Russian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken -COMP(198?, y805128r2e, y805256, 0, y805128r2e, msx2jp, driver_device, 0, "Yamaha", "YIS805R2/128 (Estonian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken -COMP(198?, y805256, 0, 0, y805256, msx2jp, driver_device, 0, "Yamaha", "YIS805/256 (Russian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken +COMP(1986, ax350, 0, 0, ax350, msx2, msx_state, 0, "Al Alamiah", "AX-350 (Arabic) (MSX2)", 0) +COMP(1986, ax370, 0, 0, ax370, msx2, msx_state, 0, "Al Alamiah", "AX-370 (Arabic) (MSX2)", 0) +COMP(1985, canonv25, 0, 0, canonv25, msx2, msx_state, 0, "Canon", "V-25 (MSX2)", 0) +COMP(1985, canonv30, 0, 0, canonv30, msx2, msx_state, 0, "Canon", "V-30 (MSX2)", 0) +COMP(1985, canonv30f, canonv30, 0, canonv30f, msx2, msx_state, 0, "Canon", "V-30F (MSX2)", 0) +COMP(1986, cpc300, 0, 0, cpc300, msx2kr, msx_state, 0, "Daewoo", "IQ-2000 CPC-300 (Korea) (MSX2)", 0) +COMP(1986, cpc300e, 0, 0, cpc300e, msx2kr, msx_state, 0, "Daewoo", "IQ-2000 CPC-300E (Korea) (MSX2)", 0) +COMP(1985, cpc330k, 0, 0, cpc330k, msx2kr, msx_state, 0, "Daewoo", "CPC-330K KOBO (Korea) (MSX2)", 0) +COMP(1988, cpc400, 0, 0, cpc400, msx2kr, msx_state, 0, "Daewoo", "X-II CPC-400 (Korea) (MSX2)", 0) +COMP(1988, cpc400s, 0, 0, cpc400s, msx2kr, msx_state, 0, "Daewoo", "X-II CPC-400S (Korea) (MSX2)", 0) +COMP(1990, cpc61, 0, 0, cpc61, msx2kr, msx_state, 0, "Daewoo", "Zemmix CPC-61 (Korea) (MSX2)", 0) +COMP(1991, cpg120, 0, 0, cpg120, msx2kr, msx_state, 0, "Daewoo", "Zemmix CPG-120 Normal (Korea) (MSX2)", MACHINE_NOT_WORKING) // v9958 not added +COMP(198?, fpc900, 0, 0, fpc900, msx2, msx_state, 0, "Fenner", "FPC-900 (MSX2)", 0) +COMP(1986, expert20, 0, 0, expert20, msx2, msx_state, 0, "Gradiente", "Expert 2.0 (Brazil) (MSX2)", 0) +COMP(198?, mbh70, 0, 0, mbh70, msx2jp, msx_state, 0, "Hitachi", "MB-H70 (MSX2)", MACHINE_NOT_WORKING) // Firmware not working +COMP(1987, kmc5000, 0, 0, kmc5000, msx2jp, msx_state, 0, "Kawai", "KMC-5000 (MSX2)", 0) +COMP(1985, mlg1, 0, 0, mlg1, msx2, msx_state, 0, "Mitsubishi", "ML-G1 (MSX2)", 0) +COMP(198?, mlg3, 0, 0, mlg3, msx2, msx_state, 0, "Mitsubishi", "ML-G3 (MSX2)", 0) +COMP(1985, mlg10, 0, 0, mlg10, msx2jp, msx_state, 0, "Mitsubishi", "ML-G10 (MSX2)", 0) +COMP(1983, mlg30, 0, 0, mlg30, msx2, msx_state, 0, "Mitsubishi", "ML-G30 (MSX2)", 0) +COMP(1985, fs5500f1, fs5500f2, 0, fs5500f1, msx2jp, msx_state, 0, "National / Matsushita", "FS-5500F1 (Japan) (MSX2)", 0) +COMP(1985, fs5500f2, 0, 0, fs5500f2, msx2jp, msx_state, 0, "National / Matsushita", "FS-5500F2 (Japan) (MSX2)", 0) +COMP(1986, fs4500, 0, 0, fs4500, msx2jp, msx_state, 0, "National / Matsushita", "FS-4500 (Japan) (MSX2)", 0) +COMP(1986, fs4700, 0, 0, fs4700, msx2jp, msx_state, 0, "National / Matsushita", "FS-4700 (Japan) (MSX2)", 0) +COMP(1986, fs5000, 0, 0, fs5000, msx2jp, msx_state, 0, "National / Matsushita", "FS-5000F2 (Japan) (MSX2)", 0) +COMP(1986, fs4600, 0, 0, fs4600, msx2jp, msx_state, 0, "National / Matsushita", "FS-4600 (Japan) (MSX2)", 0) +COMP(1986, fsa1, fsa1a, 0, fsa1, msx2jp, msx_state, 0, "Panasonic / Matsushita", "FS-A1 / 1st released version (Japan) (MSX2)", 0) +COMP(1986, fsa1a, 0, 0, fsa1a, msx2jp, msx_state, 0, "Panasonic / Matsushita", "FS-A1 / 2nd released version (Japan) (MSX2)", 0) +COMP(1987, fsa1mk2, 0, 0, fsa1mk2, msx2jp, msx_state, 0, "Panasonic / Matsushita", "FS-A1MK2 (Japan) (MSX2)", 0) +COMP(1987, fsa1f, 0, 0, fsa1f, msx2jp, msx_state, 0, "Panasonic / Matsushita", "FS-A1F (Japan) (MSX2)", 0) +COMP(1987, fsa1fm, 0, 0, fsa1fm, msx2jp, msx_state, 0, "Panasonic / Matsushita", "FS-A1FM (Japan) (MSX2)", 0) +COMP(1986, nms8220, nms8220a, 0, nms8220, msx2, msx_state, 0, "Philips", "NMS-8220 (12-jun-1986) (MSX2)", 0) +COMP(1986, nms8220a, 0, 0, nms8220a, msx2, msx_state, 0, "Philips", "NMS-8220 (13-aug-1986) (MSX2)", 0) +COMP(1986, vg8230, 0, 0, vg8230, msx2, msx_state, 0, "Philips", "VG-8230 (MSX2)", 0) +COMP(19??, vg8230j, vg8230, 0, vg8230j, msx2jp, msx_state, 0, "Philips", "VG-8230J (MSX2)", MACHINE_NOT_WORKING) // Screen flashes a few times before going into basic +COMP(1986, vg8235, 0, 0, vg8235, msx2, msx_state, 0, "Philips", "VG-8235 (MSX2)", 0) +COMP(1986, vg8235f, vg8235, 0, vg8235f, msx2, msx_state, 0, "Philips", "VG-8235F (MSX2)", 0) +COMP(1986, vg8240, 0, 0, vg8240, msx2, msx_state, 0, "Philips", "VG-8240 (MSX2)", 0) +COMP(1986, nms8245, 0, 0, nms8245, msx2, msx_state, 0, "Philips", "NMS-8245 (MSX2)", 0) +COMP(1986, nms8245f, nms8245, 0, nms8245f, msx2, msx_state, 0, "Philips", "NMS-8245F (MSX2)", 0) +COMP(1986, nms8250, nms8255, 0, nms8250, msx2, msx_state, 0, "Philips", "NMS-8250 (MSX2)", 0) +COMP(1986, nms8250f, nms8255, 0, nms8250f, msx2, msx_state, 0, "Philips", "NMS-8250F (MSX2)", 0) // French keyboard +COMP(19??, nms8250j, nms8255, 0, nms8250j, msx2jp, msx_state, 0, "Philips", "NMS-8250J (MSX2)", 0) +COMP(1986, nms8255, 0, 0, nms8255, msx2, msx_state, 0, "Philips", "NMS-8255 (MSX2)", 0) +COMP(1986, nms8255f, nms8255, 0, nms8255f, msx2, msx_state, 0, "Philips", "NMS-8255F (MSX2)", 0) // French keyboard +COMP(1986, nms8260, 0, 0, nms8260, msx2, msx_state, 0, "Philips", "NMS-8260 (Prototype) (MSX2)", MACHINE_NOT_WORKING) +COMP(1986, nms8280, 0, 0, nms8280, msx2, msx_state, 0, "Philips", "NMS-8280 (MSX2)", 0) +COMP(1986, nms8280f, nms8280, 0, nms8280f, msx2, msx_state, 0, "Philips", "NMS-8280F (MSX2)", 0) // French keyboard +COMP(1986, nms8280g, nms8280, 0, nms8280g, msx2, msx_state, 0, "Philips", "NMS-8280G (MSX2)", 0) +COMP(19??, mpc2300, 0, 0, mpc2300, msx2, msx_state, 0, "Sanyo", "MPC-2300 (MSX2)", MACHINE_NOT_WORKING) // Keyboard responds differently +COMP(198?, mpc2500f, 0, 0, mpc2500f, msx2, msx_state, 0, "Sanyo", "MPC-2500FD (MSX2)", MACHINE_NOT_WORKING) // Russian keyboard? +COMP(19??, mpc25fd, 0, 0, mpc25fd, msx2, msx_state, 0, "Sanyo", "Wavy MPC-25FD (MSX2)", 0) +COMP(198?, mpc27, 0, 0, mpc27, msx2jp, msx_state, 0, "Sanyo", "Wavy MPC-27 (MSX2)", MACHINE_NOT_WORKING) // Light pen not emulated +COMP(1988, phc23, 0, 0, phc23, msx2jp, msx_state, 0, "Sanyo", "Wavy PHC-23 (Japan) (MSX2)", 0) +COMP(198?, phc55fd2, 0, 0, phc55fd2, msx2jp, msx_state, 0, "Sanyo", "Wavy PHC-55FD2 (MSX2)", 0) +COMP(198?, phc77, 0, 0, phc77, msx2jp, msx_state, 0, "Sanyo", "Wavy PHC-77 (MSX2)", MACHINE_NOT_WORKING) // Firmware not emulated +COMP(1986, hbf1, 0, 0, hbf1, msx2jp, msx_state, 0, "Sony", "HB-F1 (Japan) (MSX2)", MACHINE_NOT_WORKING ) // Screen stays a single color after a while +COMP(1987, hbf12, 0, 0, hbf12, msx2jp, msx_state, 0, "Sony", "HB-F1II (Japan) (MSX2)", MACHINE_NOT_WORKING ) // Screen stays a single color after a while +COMP(1987, hbf1xd, 0, 0, hbf1xd, msx2jp, msx_state, 0, "Sony", "HB-F1XD (Japan) (MSX2)", 0) +COMP(1988, hbf1xdm2, 0, 0, hbf1xdm2, msx2jp, msx_state, 0, "Sony", "HB-F1XDMK2 (Japan) (MSX2)", 0) +COMP(19??, hbf5, 0, 0, hbf5, msx2, msx_state, 0, "Sony", "HB-F5 (MSX2)", 0) +COMP(1985, hbf9p, 0, 0, hbf9p, msx2, msx_state, 0, "Sony", "HB-F9P (MSX2)", 0) +COMP(19??, hbf9pr, hbf9p, 0, hbf9pr, msx2, msx_state, 0, "Sony", "HB-F9P Russion (MSX2)", MACHINE_NOT_WORKING) // Keyboard responds differently +COMP(1985, hbf9s, hbf9p, 0, hbf9s, msx2, msx_state, 0, "Sony", "HB-F9S (MSX2)", 0) +COMP(1986, hbf500, hbf500p, 0, hbf500, msx2jp, msx_state, 0, "Sony", "HB-F500 (Japan) (MSX2)", 0) +COMP(198?, hbf500f, hbf500p, 0, hbf500f, msx2, msx_state, 0, "Sony", "HB-F500F (MSX2)", 0) // French keyboard? +COMP(1985, hbf500p, 0, 0, hbf500p, msx2, msx_state, 0, "Sony", "HB-F500P (MSX2)", 0) +COMP(1985, hbf700d, hbf700p, 0, hbf700d, msx2, msx_state, 0, "Sony", "HB-F700D (Germany) (MSX2)", 0) +COMP(1985, hbf700f, hbf700p, 0, hbf700f, msx2, msx_state, 0, "Sony", "HB-F700F (MSX2)", 0) +COMP(1985, hbf700p, 0, 0, hbf700p, msx2, msx_state, 0, "Sony", "HB-F700P (MSX2)", 0) +COMP(1985, hbf700s, hbf700p, 0, hbf700s, msx2, msx_state, 0, "Sony", "HB-F700S (Spain) (MSX2)", 0) +COMP(1986, hbf900, hbf900a, 0, hbf900, msx2jp, msx_state, 0, "Sony", "HB-F900 / 1st released version (Japan) (MSX2)", 0) +COMP(1986, hbf900a, 0, 0, hbf900a, msx2jp, msx_state, 0, "Sony", "HB-F900 / 2nd released version (Japan) (MSX2)", 0) +COMP(1986, hbg900ap, hbg900p, 0, hbg900ap, msx2, msx_state, 0, "Sony", "HB-G900AP (MSX2)", 0 ) +COMP(1986, hbg900p, 0, 0, hbg900p, msx2, msx_state, 0, "Sony", "HB-G900P (MSX2)", 0 ) +COMP(1986, hotbit20, 0, 0, hotbit20, msx2, msx_state, 0, "Sharp / Epcom", "HB-8000 Hotbit 2.0 (MSX2)", 0) // Black screen +COMP(1986, tpc310, 0, 0, tpc310, msx2, msx_state, 0, "Talent", "TPC-310 (MSX2)", 0) +COMP(19??, tpp311, 0, 0, tpp311, msx2, msx_state, 0, "Talent", "TPP-311 (MSX2)", 0) +COMP(19??, tps312, 0, 0, tps312, msx2, msx_state, 0, "Talent", "TPS-312 (MSX2)", 0) +COMP(1986, hx23, hx23i, 0, hx23, msx2, msx_state, 0, "Toshiba", "HX-23 (MSX2)", 0) +COMP(1986, hx23f, hx23i, 0, hx23f, msx2, msx_state, 0, "Toshiba", "HX-23F (MSX2)", 0) +COMP(19??, hx23i, 0, 0, hx23i, msx2, msx_state, 0, "Toshiba", "HX-23I (MSX2)", 0) +COMP(1985, hx33, 0, 0, hx33, msx2jp, msx_state, 0, "Toshiba", "HX-33 (MSX2)", 0) +COMP(1985, hx34, hx34i, 0, hx34, msx2jp, msx_state, 0, "Toshiba", "HX-34 (MSX2)", 0) +COMP(1985, hx34i, 0, 0, hx34i, msx, msx_state, 0, "Toshiba", "HX-34I (MSX2)", 0) +COMP(1985, fstm1, 0, 0, fstm1, msx, msx_state, 0, "Toshiba", "FS-TM1 (MSX2)", 0) +COMP(198?, victhc90, victhc95, 0, victhc90, msxjp, msx_state, 0, "Victor", "HC-90 (MSX2)", MACHINE_NOT_WORKING) // 2nd cpu/turbo not emulated, firmware won't start +COMP(1986, victhc95, 0, 0, victhc95, msxjp, msx_state, 0, "Victor", "HC-95 (MSX2)", MACHINE_NOT_WORKING) // 2nd cpu/turbo not emulated, firmware won't start +COMP(1986, victhc95a, victhc95, 0, victhc95a, msxjp, msx_state, 0, "Victor", "HC-95A (MSX2)", MACHINE_NOT_WORKING) // 2nd cpu/turbo not emulated, firmware won't start +COMP(1986, cx7m, cx7m128, 0, cx7m, msx2, msx_state, 0, "Yamaha", "CX7M (MSX2)", 0) +COMP(1986, cx7m128, 0, 0, cx7m128, msx2, msx_state, 0, "Yamaha", "CX7M/128 (MSX2)", 0) +COMP(198?, y503iiir, 0, 0, y503iiir, msx2, msx_state, 0, "Yamaha", "YIS-503 III R (Russian) (MSX2)", MACHINE_NOT_WORKING) // Russian keyboard, floppy support broken +COMP(198?, y503iiire, y503iiir, 0, y503iiire, msx2, msx_state, 0, "Yamaha", "YIS-503 III R (Estonian) (MSX2)", MACHINE_NOT_WORKING) // Russian/Estonian keyboard, floppy support broken +COMP(1985, yis60464, yis604, 0, yis60464, msx2jp, msx_state, 0, "Yamaha", "YIS604 (64KB) (MSX2)", 0) +COMP(1985, yis604, 0, 0, yis604, msx2jp, msx_state, 0, "Yamaha", "YIS604 (128KB) (MSX2)", 0) +COMP(198?, y805128, y805256, 0, y805128, msx2jp, msx_state, 0, "Yamaha", "YIS805/128 (Russian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken +COMP(198?, y805128r2, y805256, 0, y805128r2, msx2jp, msx_state, 0, "Yamaha", "YIS805R2/128 (Russian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken +COMP(198?, y805128r2e, y805256, 0, y805128r2e, msx2jp, msx_state, 0, "Yamaha", "YIS805R2/128 (Estonian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken +COMP(198?, y805256, 0, 0, y805256, msx2jp, msx_state, 0, "Yamaha", "YIS805/256 (Russian) (MSX2)", MACHINE_NOT_WORKING) // Floppy support broken /* MSX2+ */ -COMP(19??, expert3i, 0, 0, expert3i, msx2, driver_device, 0, "Ciel", "Expert 3 IDE (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated -COMP(1996, expert3t, 0, 0, expert3t, msx2, driver_device, 0, "Ciel", "Expert 3 Turbo (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated -COMP(19??, expertac, 0, 0, expertac, msx2, driver_device, 0, "Gradiente", "Expert AC88+ (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated -COMP(19??, expertdx, 0, 0, expertdx, msx2, driver_device, 0, "Gradiente", "Expert DDX+ (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated -COMP(1988, fsa1fx, 0, 0, fsa1fx, msx2jp, driver_device, 0, "Panasonic / Matsushita", "FS-A1FX (Japan) (MSX2+)", 0 ) -COMP(1988, fsa1wx, fsa1wxa, 0, fsa1wx, msx2jp, driver_device, 0, "Panasonic / Matsushita", "FS-A1WX / 1st released version (Japan) (MSX2+)", 0 ) -COMP(1988, fsa1wxa, 0, 0, fsa1wxa, msx2jp, driver_device, 0, "Panasonic / Matsushita", "FS-A1WX / 2nd released version (Japan) (MSX2+)", 0 ) -COMP(1989, fsa1wsx, 0, 0, fsa1wsx, msx2jp, driver_device, 0, "Panasonic / Matsushita", "FS-A1WSX (Japan) (MSX2+)", 0 ) -COMP(1988, hbf1xdj, 0, 0, hbf1xdj, msx2jp, driver_device, 0, "Sony", "HB-F1XDJ (Japan) (MSX2+)", 0 ) -COMP(1989, hbf1xv, 0, 0, hbf1xv, msx2jp, driver_device, 0, "Sony", "HB-F1XV (Japan) (MSX2+)", 0 ) -COMP(1988, phc70fd, phc70fd2, 0, phc70fd, msx2jp, driver_device, 0, "Sanyo", "WAVY PHC-70FD (Japan) (MSX2+)", 0 ) -COMP(1988, phc70fd2, 0, 0, phc70fd2, msx2jp, driver_device, 0, "Sanyo", "WAVY PHC-70FD2 (Japan) (MSX2+)", 0 ) -COMP(1989, phc35j, 0, 0, phc35j, msx2jp, driver_device, 0, "Sanyo", "WAVY PHC-35J (Japan) (MSX2+)", 0) -COMP(19??, hbf9sp, 0, 0, hbf9sp, msx2jp, driver_device, 0, "Sony", "HB-F9S+ (MSX2+)", 0) +COMP(19??, expert3i, 0, 0, expert3i, msx2, msx_state, 0, "Ciel", "Expert 3 IDE (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated +COMP(1996, expert3t, 0, 0, expert3t, msx2, msx_state, 0, "Ciel", "Expert 3 Turbo (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated +COMP(19??, expertac, 0, 0, expertac, msx2, msx_state, 0, "Gradiente", "Expert AC88+ (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated +COMP(19??, expertdx, 0, 0, expertdx, msx2, msx_state, 0, "Gradiente", "Expert DDX+ (MSX2+)", MACHINE_NOT_WORKING ) // Some hardware not emulated +COMP(1988, fsa1fx, 0, 0, fsa1fx, msx2jp, msx_state, 0, "Panasonic / Matsushita", "FS-A1FX (Japan) (MSX2+)", 0 ) +COMP(1988, fsa1wx, fsa1wxa, 0, fsa1wx, msx2jp, msx_state, 0, "Panasonic / Matsushita", "FS-A1WX / 1st released version (Japan) (MSX2+)", 0 ) +COMP(1988, fsa1wxa, 0, 0, fsa1wxa, msx2jp, msx_state, 0, "Panasonic / Matsushita", "FS-A1WX / 2nd released version (Japan) (MSX2+)", 0 ) +COMP(1989, fsa1wsx, 0, 0, fsa1wsx, msx2jp, msx_state, 0, "Panasonic / Matsushita", "FS-A1WSX (Japan) (MSX2+)", 0 ) +COMP(1988, hbf1xdj, 0, 0, hbf1xdj, msx2jp, msx_state, 0, "Sony", "HB-F1XDJ (Japan) (MSX2+)", 0 ) +COMP(1989, hbf1xv, 0, 0, hbf1xv, msx2jp, msx_state, 0, "Sony", "HB-F1XV (Japan) (MSX2+)", 0 ) +COMP(1988, phc70fd, phc70fd2, 0, phc70fd, msx2jp, msx_state, 0, "Sanyo", "WAVY PHC-70FD (Japan) (MSX2+)", 0 ) +COMP(1988, phc70fd2, 0, 0, phc70fd2, msx2jp, msx_state, 0, "Sanyo", "WAVY PHC-70FD2 (Japan) (MSX2+)", 0 ) +COMP(1989, phc35j, 0, 0, phc35j, msx2jp, msx_state, 0, "Sanyo", "WAVY PHC-35J (Japan) (MSX2+)", 0) +COMP(19??, hbf9sp, 0, 0, hbf9sp, msx2jp, msx_state, 0, "Sony", "HB-F9S+ (MSX2+)", 0) /* MSX Turbo-R */ /* Temporary placeholders, Turbo-R hardware is not supported yet */ -COMP(19??, fsa1gt, 0, 0, fsa1gt, msx2jp, driver_device, 0, "Panasonic", "FS-A1GT (MSX Turbo-R)", MACHINE_NOT_WORKING) -COMP(19??, fsa1st, 0, 0, fsa1st, msx2jp, driver_device, 0, "Panasonic", "FS-A1ST (MSX Turbo-R)", MACHINE_NOT_WORKING) +COMP(19??, fsa1gt, 0, 0, fsa1gt, msx2jp, msx_state, 0, "Panasonic", "FS-A1GT (MSX Turbo-R)", MACHINE_NOT_WORKING) +COMP(19??, fsa1st, 0, 0, fsa1st, msx2jp, msx_state, 0, "Panasonic", "FS-A1ST (MSX Turbo-R)", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/mt735.cpp b/src/mame/drivers/mt735.cpp index b6bbfffa5e6..e80c4013302 100644 --- a/src/mame/drivers/mt735.cpp +++ b/src/mame/drivers/mt735.cpp @@ -59,7 +59,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( mt735 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( mt735, mt735_state ) +static MACHINE_CONFIG_START( mt735 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_48MHz/6) MCFG_CPU_PROGRAM_MAP(mt735_map) MACHINE_CONFIG_END @@ -70,4 +70,4 @@ ROM_START( mt735 ) ROM_LOAD16_BYTE( "spg_m_o_ic102.bin", 1, 0x20000, CRC(84d8446b) SHA1(b1cedd8b09556eb8118f79b012aeec5b61e3ff32) ) ROM_END -COMP( ????, mt735, 0, 0, mt735, mt735, driver_device, 0, "Brother", "MT735", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +COMP( ????, mt735, 0, 0, mt735, mt735, mt735_state, 0, "Brother", "MT735", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp new file mode 100644 index 00000000000..89e831aab3b --- /dev/null +++ b/src/mame/drivers/mtouchxl.cpp @@ -0,0 +1,382 @@ +// license:BSD-3-Clause +// copyright-holders: Carl, R. Belmont, Wilbert Pol, Miodrag Milanovic +/*************************************************************************** + + mtouchxl.cpp: Merit Industries MegaTouch XL + + Hardware includes a base 486 PC with VGA and a customized ISA I/O + card. The I/O card includes audio and an option ROM which patches int 19h + (POST Completed) to instead jump back to the option ROM which loads + "ROM-DOS", installs drivers for the Microtouch screen, and then boots + from the CD-ROM drive. + + Audio is a CS4231 combination CODEC/Mixer also found in Gravis Ultraound MAX + and some SPARCstations. + + Some boards use the DS1205 chip for security, others use the DS1991 iButton + + Megatouch XL (Software) (* indicated verified dumps of CD + Boot ROM, + - means we have it working but would like a redump) + Megatouch XL (1997) (CD versions: R0, R0A, R0B, R0C, R0D, *R1, R2, R3, R3A, R3B, R3C) + Megatouch XL 5000 (1998) (CD versions: R5A, *R5B, R5D, *R5E, R5G, R5H, *R5I) + Megatouch XL 6000 (1999) (CD versions: *R02, *R04, R05, *R07) + Megatouch XL Gold (2000) (CD versions: *R00, *R01. HDD versions: R01) + Megatouch XL Platinum / Double Platinum (2001) + Megatouch XL Titanium / Titanium 2 (2002) + +***************************************************************************/ + +#include "emu.h" +#include "bus/isa/isa_cards.h" +#include "cpu/i386/i386.h" +#include "machine/at.h" +#include "machine/ram.h" +#include "machine/8042kbdc.h" +#include "machine/nvram.h" +#include "machine/ins8250.h" +#include "machine/microtch.h" +#include "machine/atapicdr.h" +#include "machine/bankdev.h" +#include "machine/intelfsh.h" +#include "machine/ds128x.h" +#include "machine/ds2401.h" +#include "machine/ds1205.h" +#include "sound/ad1848.h" +#include "speaker.h" + +class mtxl_state : public driver_device +{ +public: + mtxl_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_mb(*this, "mb"), + m_ram(*this, RAM_TAG), + m_iocard(*this, "dbank"), + //m_ibutton(*this, "ibutton"), + m_multikey(*this, "multikey") + { } + required_device m_maincpu; + required_device m_mb; + required_device m_ram; + required_device m_iocard; + //optional_device m_ibutton; + optional_device m_multikey; + void machine_start() override; + void machine_reset() override; + DECLARE_WRITE8_MEMBER(bank_w); + DECLARE_READ8_MEMBER(key_r); + DECLARE_WRITE8_MEMBER(key_w); + DECLARE_READ8_MEMBER(coin_r); +}; + +WRITE8_MEMBER(mtxl_state::bank_w) +{ + m_iocard->set_bank(data & 0x1f); +} + +READ8_MEMBER(mtxl_state::key_r) +{ + return m_multikey->read_dq() ? 0xff : 0xdf; +} + +READ8_MEMBER(mtxl_state::coin_r) +{ + return ioport("Coin")->read(); +} + +WRITE8_MEMBER(mtxl_state::key_w) +{ + m_multikey->write_rst((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); + m_multikey->write_clk((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); + m_multikey->write_dq((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); +} + +static ADDRESS_MAP_START( at32_map, AS_PROGRAM, 32, mtxl_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10") + AM_RANGE(0x000c8000, 0x000cffff) AM_RAM AM_SHARE("nvram") + AM_RANGE(0x000d0000, 0x000dffff) AM_DEVICE("dbank", address_map_bank_device, amap32) + AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("bios", 0) + AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( at32_io, AS_IO, 32, mtxl_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("mb:dma8237_1", am9517a_device, read, write, 0xffffffff) + AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("mb:pic8259_master", pic8259_device, read, write, 0xffffffff) + AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("mb:pit8254", pit8254_device, read, write, 0xffffffff) + AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("mb", at_mb_device, portb_r, portb_w, 0x0000ff00) + AM_RANGE(0x0060, 0x0067) AM_DEVREADWRITE8("kbdc", kbdc8042_device, data_r, data_w, 0xffffffff) + AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("mb:rtc", mc146818_device, read, write, 0xffffffff) + AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE8("mb", at_mb_device, page8_r, page8_w, 0xffffffff) + AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("mb:pic8259_slave", pic8259_device, read, write, 0xffffffff) + AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("mb:dma8237_2", am9517a_device, read, write, 0x00ff00ff) + AM_RANGE(0x0224, 0x0227) AM_DEVREADWRITE8("cs4231", ad1848_device, read, write, 0xffffffff) + AM_RANGE(0x0228, 0x022b) AM_READ_PORT("Unknown") + AM_RANGE(0x022c, 0x022f) AM_WRITE8(bank_w, 0xff000000) + AM_RANGE(0x022c, 0x022f) AM_READWRITE8(key_r, key_w, 0x0000ff00) + AM_RANGE(0x022c, 0x022f) AM_READ8(coin_r, 0x000000ff) + AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16550", ns16550_device, ins8250_r, ins8250_w, 0xffffffff) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( dbank_map, AS_PROGRAM, 32, mtxl_state ) + AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("ioboard", 0) + AM_RANGE(0x100000, 0x17ffff) AM_DEVREADWRITE8("flash", intelfsh8_device, read, write, 0xffffffff) +ADDRESS_MAP_END + +static INPUT_PORTS_START(mtouchxl) + PORT_START("Coin") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_SERVICE1) PORT_NAME("Setup") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_SERVICE2) PORT_NAME("Calibrate") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_COIN1) + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_COIN2) + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_COIN3) + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_COIN4) + PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_START("Unknown") + PORT_BIT(0xffffffff, IP_ACTIVE_LOW, IPT_UNKNOWN) +INPUT_PORTS_END + +/********************************************************** + * + * Init functions + * + *********************************************************/ + +void mtxl_state::machine_start() +{ + address_space& space = m_maincpu->space(AS_PROGRAM); + + /* MESS managed RAM */ + membank("bank10")->set_base(m_ram->pointer()); + + if (m_ram->size() > 0xa0000) + { + offs_t ram_limit = 0x100000 + m_ram->size() - 0xa0000; + space.install_read_bank(0x100000, ram_limit - 1, "bank1"); + space.install_write_bank(0x100000, ram_limit - 1, "bank1"); + membank("bank1")->set_base(m_ram->pointer() + 0xa0000); + } +} + +void mtxl_state::machine_reset() +{ + m_iocard->set_bank(0); +} + +static SLOT_INTERFACE_START(mt6k_ata_devices) + SLOT_INTERFACE("cdrom", ATAPI_FIXED_CDROM) +SLOT_INTERFACE_END + +static MACHINE_CONFIG_FRAGMENT(cdrom) + MCFG_DEVICE_MODIFY("ide:0") + MCFG_DEVICE_SLOT_INTERFACE(mt6k_ata_devices, "cdrom", true) + MCFG_DEVICE_MODIFY("ide:1") + MCFG_SLOT_DEFAULT_OPTION("") + MCFG_SLOT_FIXED(true) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( at486 ) + MCFG_CPU_ADD("maincpu", I486DX4, 33000000) + MCFG_CPU_PROGRAM_MAP(at32_map) + MCFG_CPU_IO_MAP(at32_io) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) + + MCFG_DEVICE_ADD("mb", AT_MB, 0) + MCFG_NVRAM_ADD_0FILL("nvram") + + // on board devices + MCFG_ISA16_SLOT_ADD("mb:isabus","board1", pc_isa16_cards, "ide", true) + MCFG_SLOT_OPTION_MACHINE_CONFIG("ide", cdrom) + MCFG_ISA16_SLOT_ADD("mb:isabus","isa1", pc_isa16_cards, "svga_dm", true) // original is a gd-5440 + + MCFG_DEVICE_ADD("ns16550", NS16550, XTAL_1_8432MHz) + MCFG_INS8250_OUT_TX_CB(DEVWRITELINE("microtouch", microtouch_device, rx)) + MCFG_INS8250_OUT_INT_CB(DEVWRITELINE("mb:pic8259_master", pic8259_device, ir4_w)) + MCFG_MICROTOUCH_ADD("microtouch", 9600, DEVWRITELINE("ns16550", ins8250_uart_device, rx_w)) + + MCFG_SOUND_ADD("cs4231", AD1848, 0) + MCFG_AD1848_IRQ_CALLBACK(DEVWRITELINE("mb:pic8259_master", pic8259_device, ir5_w)) + MCFG_AD1848_DRQ_CALLBACK(DEVWRITELINE("mb:dma8237_1", am9517a_device, dreq1_w)) + + MCFG_DEVICE_MODIFY("mb:dma8237_1") + MCFG_I8237_OUT_IOW_1_CB(DEVWRITE8("^cs4231", ad1848_device, dack_w)) + + // remove the keyboard controller and use the HLE one which allow keys to be unmapped + MCFG_DEVICE_REMOVE("mb:keybc"); + MCFG_DEVICE_REMOVE("mb:pc_kbdc"); + MCFG_DEVICE_ADD("kbdc", KBDC8042, 0) + MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386) + MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) + MCFG_KBDC8042_GATE_A20_CB(INPUTLINE("maincpu", INPUT_LINE_A20)) + MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(DEVWRITELINE("mb:pic8259_master", pic8259_device, ir1_w)) + MCFG_DEVICE_REMOVE("mb:rtc") + MCFG_DS12885_ADD("mb:rtc") + MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir0_w)) + MCFG_MC146818_CENTURY_INDEX(0x32) + + /* internal ram */ + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("32M") // Early XL games had 8 MB RAM, 6000 and later require 32MB + + /* bankdev for dxxxx */ + MCFG_DEVICE_ADD("dbank", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(dbank_map) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(32) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000) + + /* Flash ROM */ + MCFG_AMD_29F040_ADD("flash") + + /* Security key */ + MCFG_DS1205_ADD("multikey") +MACHINE_CONFIG_END + +#define MOTHERBOARD_ROMS \ + ROM_REGION(0x20000, "bios", 0) \ + ROM_LOAD("prom.mb", 0x10000, 0x10000, BAD_DUMP CRC(e44bfd3c) SHA1(c07ec94e11efa30e001f39560010112f73cc0016) ) \ + ROM_REGION(0x80, "mb:rtc", 0) \ + ROM_LOAD("mb_rtc", 0, 0x80, BAD_DUMP CRC(b724e5d3) SHA1(45a19ec4201d2933d033689b7a01a0260962fb0b)) + +ROM_START( mtouchxl ) + MOTHERBOARD_ROMS + + ROM_REGION(0x100000, "ioboard", 0) + ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) ) + + ROM_REGION(192, "multikey", ROMREGION_ERASE00) + ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(2bdaf557) SHA1(be7f5cab5b6565f7bf8066282cfe3b42c7d7b7fd) ) + + DISK_REGION("board1:ide:ide:0:cdrom") + DISK_IMAGE_READONLY("r1", 0, SHA1(874545bfc48eacba4c4887d1c45a40ebc7da456a)) +ROM_END + +ROM_START( mtchxl5k ) + MOTHERBOARD_ROMS + + ROM_REGION(0x100000, "ioboard", 0) + ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) ) + + ROM_REGION(192, "multikey", ROMREGION_ERASE00) + ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(32cd3bab) SHA1(b31f05c3819c74a29a46bbcf4de3722bae874df2) ) + + DISK_REGION("board1:ide:ide:0:cdrom") + DISK_IMAGE_READONLY("r5i", 0, SHA1(e776a842b557f402e179862397b2ded5cf926702)) +ROM_END + +ROM_START( mtchxl5ko ) + MOTHERBOARD_ROMS + + ROM_REGION(0x100000, "ioboard", 0) + ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) ) + + ROM_REGION(192, "multikey", ROMREGION_ERASE00) + ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(32cd3bab) SHA1(b31f05c3819c74a29a46bbcf4de3722bae874df2) ) + + DISK_REGION("board1:ide:ide:0:cdrom") + DISK_IMAGE_READONLY("r5b", 0, SHA1(37c2562053f0f4ed18c72a8ea04be371a6ac8413)) +ROM_END + +ROM_START( mtchxl5ko2 ) + MOTHERBOARD_ROMS + + ROM_REGION(0x100000, "ioboard", 0) + ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) ) + + ROM_REGION(192, "multikey", ROMREGION_ERASE00) + ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(32cd3bab) SHA1(b31f05c3819c74a29a46bbcf4de3722bae874df2) ) + + DISK_REGION("board1:ide:ide:0:cdrom") + DISK_IMAGE_READONLY("r5e", 0, SHA1(a07dc6da346bee999f822a3517ea1d65a68dd4a2)) +ROM_END + +ROM_START( mtchxl6k ) + MOTHERBOARD_ROMS + + ROM_REGION(0x100000, "ioboard", 0) + ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) ) + + ROM_REGION(192, "multikey", 0) + ROM_LOAD( "multikey", 0, 192, BAD_DUMP CRC(d54ed86c) SHA1(83557dc604b2c7e8ab0787a3c3d73e1fb2556515) ) // hand made + + DISK_REGION("board1:ide:ide:0:cdrom") + DISK_IMAGE_READONLY("r07", 0, SHA1(95599e181d9249db09464420522180d753857f3b)) +ROM_END + +ROM_START( mtchxl6ko4 ) + MOTHERBOARD_ROMS + + ROM_REGION(0x100000, "ioboard", 0) + ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) ) + + ROM_REGION(192, "multikey", 0) + ROM_LOAD( "multikey", 0, 192, BAD_DUMP CRC(d54ed86c) SHA1(83557dc604b2c7e8ab0787a3c3d73e1fb2556515) ) // hand made + + DISK_REGION("board1:ide:ide:0:cdrom") + DISK_IMAGE_READONLY("r04", 0, SHA1(c4a40bb84de4a54fd4ee6f5d2179a1cb9fac2b09)) +ROM_END + +ROM_START( mtchxl6ko ) + MOTHERBOARD_ROMS + + ROM_REGION(0x100000, "ioboard", 0) + ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) ) + + ROM_REGION(192, "multikey", 0) + ROM_LOAD( "multikey", 0, 192, BAD_DUMP CRC(d54ed86c) SHA1(83557dc604b2c7e8ab0787a3c3d73e1fb2556515) ) // hand made + + DISK_REGION("board1:ide:ide:0:cdrom") + DISK_IMAGE_READONLY("r02", 0, SHA1(eaaf26d2b700f16138090de7f372b40b93e8dba9)) +ROM_END + +ROM_START( mtchxlgld ) + MOTHERBOARD_ROMS + + ROM_REGION(0x100000, "ioboard", 0) + ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) ) + + ROM_REGION(0x8000, "nvram", 0) + ROM_LOAD( "u12-nvram-ds1235", 0x000000, 0x008000, CRC(b3b5379d) SHA1(91b3d8b7eb2df127ba35700317aa1aac14e49bb9) ) + + ROM_REGION(192, "multikey", ROMREGION_ERASE00) + ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(b7c85d00) SHA1(c91dcafd8138d504acdc6ce9621f6cc3119cdb67) ) + + DISK_REGION("board1:ide:ide:0:cdrom") + DISK_IMAGE_READONLY("r01", 0, SHA1(9946bb14d3f77eadbbc606ca9c79f233e402189b)) +ROM_END + +ROM_START( mtchxlgldo ) + MOTHERBOARD_ROMS + + ROM_REGION(0x100000, "ioboard", 0) + ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) ) + + ROM_REGION(0x8000, "nvram", 0) + ROM_LOAD( "u12-nvram-ds1235", 0x000000, 0x008000, CRC(b3b5379d) SHA1(91b3d8b7eb2df127ba35700317aa1aac14e49bb9) ) + + ROM_REGION(192, "multikey", ROMREGION_ERASE00) + ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(b7c85d00) SHA1(c91dcafd8138d504acdc6ce9621f6cc3119cdb67) ) + + DISK_REGION("board1:ide:ide:0:cdrom") + DISK_IMAGE_READONLY("r00", 0, SHA1(635e267f1abea060ce813eb7e78b88d57ea3f951)) +ROM_END + +/*************************************************************************** + + Game driver(s) + +***************************************************************************/ + +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +// Any indicates this is from a CD-R at a trade show that was claimed to be a prototype, but R1 is several versions in? +COMP ( 1997, mtouchxl, 0, 0, at486, mtouchxl, mtxl_state, 0, "Merit Industries", "MegaTouch XL (Version R1, prototype?)", 0 ) +COMP ( 1998, mtchxl5k, 0, 0, at486, mtouchxl, mtxl_state, 0, "Merit Industries", "MegaTouch XL Super 5000 (Version R5I)", MACHINE_NOT_WORKING ) +COMP ( 1998, mtchxl5ko, mtchxl5k, 0, at486, mtouchxl, mtxl_state, 0, "Merit Industries", "MegaTouch XL Super 5000 (Version R5B)", MACHINE_NOT_WORKING ) +COMP ( 1998, mtchxl5ko2, mtchxl5k, 0, at486, mtouchxl, mtxl_state, 0, "Merit Industries", "MegaTouch XL Super 5000 (Version R5E)", MACHINE_NOT_WORKING ) +COMP ( 1999, mtchxl6k, 0, 0, at486, mtouchxl, mtxl_state, 0, "Merit Industries", "MegaTouch XL 6000 (Version r07)", 0 ) +COMP ( 1999, mtchxl6ko4, mtchxl6k, 0, at486, mtouchxl, mtxl_state, 0, "Merit Industries", "MegaTouch XL 6000 (Version r04)", 0 ) +COMP ( 1999, mtchxl6ko, mtchxl6k, 0, at486, mtouchxl, mtxl_state, 0, "Merit Industries", "MegaTouch XL 6000 (Version r02)", 0 ) +COMP ( 2000, mtchxlgld, 0, 0, at486, mtouchxl, mtxl_state, 0, "Merit Industries", "MegaTouch XL Gold (Version r01)", MACHINE_NOT_WORKING ) +COMP ( 2000, mtchxlgldo, mtchxlgld, 0, at486, mtouchxl, mtxl_state, 0, "Merit Industries", "MegaTouch XL Gold (Version r00)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/mtx.cpp b/src/mame/drivers/mtx.cpp index 99fff4172dd..b764ba33558 100644 --- a/src/mame/drivers/mtx.cpp +++ b/src/mame/drivers/mtx.cpp @@ -282,10 +282,10 @@ WRITE_LINE_MEMBER(mtx_state::mtx_tms9929a_interrupt) ***************************************************************************/ /*------------------------------------------------- - MACHINE_CONFIG_START( mtx512, mtx_state ) + MACHINE_CONFIG_START( mtx512 ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( mtx512, mtx_state ) +static MACHINE_CONFIG_START( mtx512 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_4MHz) @@ -409,10 +409,10 @@ ROM_END SYSTEM DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, mtx512, 0, 0, mtx512, mtx512, driver_device, 0, "Memotech Ltd", "MTX 512", 0 ) -COMP( 1983, mtx500, mtx512, 0, mtx500, mtx512, driver_device, 0, "Memotech Ltd", "MTX 500", 0 ) -COMP( 1984, rs128, mtx512, 0, rs128, mtx512, driver_device, 0, "Memotech Ltd", "RS 128", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, mtx512, 0, 0, mtx512, mtx512, mtx_state, 0, "Memotech Ltd", "MTX 512", 0 ) +COMP( 1983, mtx500, mtx512, 0, mtx500, mtx512, mtx_state, 0, "Memotech Ltd", "MTX 500", 0 ) +COMP( 1984, rs128, mtx512, 0, rs128, mtx512, mtx_state, 0, "Memotech Ltd", "RS 128", 0 ) /* diff --git a/src/mame/drivers/mugsmash.cpp b/src/mame/drivers/mugsmash.cpp index 29d713fab2f..9a9cb0d0aba 100644 --- a/src/mame/drivers/mugsmash.cpp +++ b/src/mame/drivers/mugsmash.cpp @@ -397,7 +397,7 @@ void mugsmash_state::machine_start() { } -static MACHINE_CONFIG_START( mugsmash, mugsmash_state ) +static MACHINE_CONFIG_START( mugsmash ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(mugsmash_map) @@ -430,7 +430,7 @@ static MACHINE_CONFIG_START( mugsmash, mugsmash_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) /* music */ MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) - MCFG_OKIM6295_ADD("oki", 1122000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1122000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) /* sound fx */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END @@ -462,4 +462,4 @@ ROM_START( mugsmash ) ROM_LOAD( "mugs_15.bin", 0x180000, 0x080000, CRC(82e8187c) SHA1(c7a0e1b3d90dbbe2588886a27a07a9c336447ae3) ) ROM_END -GAME( 1990?, mugsmash, 0, mugsmash, mugsmash, driver_device, 0, ROT0, "Electronic Devices Italy / 3D Games England", "Mug Smashers", MACHINE_SUPPORTS_SAVE ) +GAME( 1990?, mugsmash, 0, mugsmash, mugsmash, mugsmash_state, 0, ROT0, "Electronic Devices Italy / 3D Games England", "Mug Smashers", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/multfish.cpp b/src/mame/drivers/multfish.cpp index 431f6efeed2..d0087f46468 100644 --- a/src/mame/drivers/multfish.cpp +++ b/src/mame/drivers/multfish.cpp @@ -1037,7 +1037,7 @@ void igrosoft_gamble_state::machine_reset() m_hopper = 0; } -MACHINE_CONFIG_START( igrosoft_gamble, igrosoft_gamble_state ) +MACHINE_CONFIG_START( igrosoft_gamble ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4) MCFG_CPU_PROGRAM_MAP(igrosoft_gamble_map) @@ -2706,117 +2706,117 @@ Most games had a revision in early 2007 to meet the standards of the "Government -GAME( 2002, goldfish, mfish_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Gold Fish (020903, prototype)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2002, mfish_3, mfish_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Multi Fish (021124)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2002, mfish_6, mfish_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Multi Fish (030124)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2002, mfish_8, mfish_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Multi Fish (030522)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2002, mfish_11, mfish_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Multi Fish (031124)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2002, mfish_12, mfish_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Multi Fish (040308)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2002, mfish_13, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Multi Fish (040316)", MACHINE_SUPPORTS_SAVE ) /* World */ - -GAME( 2002, windjamr, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Windjammer (021216)", MACHINE_SUPPORTS_SAVE ) /* World */ - -GAME( 2003, czmon_5, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Crazy Monkey (030421 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, czmon_7, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Crazy Monkey (031110 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, czmon_8, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Crazy Monkey (050120 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, czmon_9, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Crazy Monkey (070315 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2003, czmon_13, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Crazy Monkey (100311 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, czmon_15, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, crzmonent,ROT0, "Igrosoft", "Crazy Monkey (100311 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ -GAME( 2003, czmon_16, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Crazy Monkey (100312 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ - -GAME( 2003, fcockt_3, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail (030623 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, fcockt_5, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail (031111 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, fcockt_6, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail (040216 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, fcockt_7, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail (050118 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, fcockt_8, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail (060111 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, fcockt_9, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail (070305 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2003, fcockt_10, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail (070517 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2003, fcockt_11, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail (070822 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2003, fcockt_12, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail (070911 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2003, fcockt_14, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, fcocktent,ROT0, "Igrosoft", "Fruit Cocktail (090708 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ - -GAME( 2003, lhaunt_2, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Lucky Haunter (030804 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, lhaunt_4, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Lucky Haunter (031111 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, lhaunt_5, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Lucky Haunter (040216 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, lhaunt_6, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Lucky Haunter (040825 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, lhaunt_7, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Lucky Haunter (070402 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2003, lhaunt_8, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Lucky Haunter (070604 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2003, lhaunt_10, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, lhauntent,ROT0, "Igrosoft", "Lucky Haunter (090712 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ -GAME( 2003, lhaunt_11, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, lhauntent,ROT0, "Igrosoft", "Lucky Haunter (100331 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ - -GAME( 2003, rollfr_2, rollfr_4, rollfr, rollfr, driver_device, 0, ROT0, "Igrosoft", "Roll Fruit (040318)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, rollfr_3, rollfr_4, rollfr, rollfr, driver_device, 0, ROT0, "Igrosoft", "Roll Fruit (080327)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2003, rollfr_4, 0, rollfr, rollfr, driver_device, 0, ROT0, "Igrosoft", "Roll Fruit (080331)", MACHINE_SUPPORTS_SAVE ) /* World */ - -GAME( 2004, garage_4, garage_5, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Garage (040219 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2004, garage_5, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Garage (050311 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2004, garage_6, garage_5, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Garage (070213 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2004, garage_7, garage_5, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Garage (070329 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2004, garage_9, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, garageent,ROT0, "Igrosoft", "Garage (090715 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ - -GAME( 2004, rclimb, rclimb_3, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Rock Climber (040815 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2004, rclimb_3, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Rock Climber (040827 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2004, rclimb_4, rclimb_3, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Rock Climber (070322 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2004, rclimb_5, rclimb_3, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Rock Climber (070621 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2004, rclimb_7, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, rclimbent,ROT0, "Igrosoft", "Rock Climber (090716 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ - -GAME( 2004, sweetl, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Sweet Life (041220 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2004, sweetl_2, sweetl, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Sweet Life (070412 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ - -GAME( 2004, resdnt, resdnt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Resident (040415 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2004, resdnt_2, resdnt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Resident (040513 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2004, resdnt_3, resdnt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Resident (070222 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2004, resdnt_6, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Resident (100311 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2004, resdnt_8, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, resdntent,ROT0, "Igrosoft", "Resident (100311 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ -GAME( 2004, resdnt_9, resdnt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Resident (100316 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ - -GAME( 2005, island, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Island (050713 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2005, island_2, island, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Island (070409 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ - -GAME( 2005, pirate_2, pirate_3, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Pirate (060210 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2005, pirate_3, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Pirate (060803 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2005, pirate_4, pirate_3, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Pirate (070412 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ - -GAME( 2006, island2, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Island 2 (060529 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2006, island2_3, island2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Island 2 (061218 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2006, island2_4, island2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Island 2 (070205 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2006, island2_5, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, island2l, ROT0, "Igrosoft", "Island 2 (090528 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ -GAME( 2006, island2_6, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state,island2ent,ROT0, "Igrosoft", "Island 2 (090724 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ - -GAME( 2006, pirate2, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Pirate 2 (061005 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2006, pirate2_2, pirate2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Pirate 2 (070126 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2006, pirate2_3, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, pirate2l, ROT0, "Igrosoft", "Pirate 2 (090528 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ -GAME( 2006, pirate2_4, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state,pirate2ent,ROT0, "Igrosoft", "Pirate 2 (090730 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ - -GAME( 2006, keks, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Keks (060328 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2006, keks_2, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Keks (060403 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2006, keks_3, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Keks (070119 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2006, keks_4, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, keksl, ROT0, "Igrosoft", "Keks (090604 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ -GAME( 2006, keks_5, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, keksent, ROT0, "Igrosoft", "Keks (090727 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ - -GAME( 2007, gnome, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Gnome (070906 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2007, gnome_2, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Gnome (071115 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2007, gnome_3, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Gnome (080303 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2007, gnome_4, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Gnome (090402 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2007, gnome_5, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Gnome (090406 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2007, gnome_7, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, gnomel, ROT0, "Igrosoft", "Gnome (090708 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ -GAME( 2007, gnome_9, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Gnome (100326 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2007, gnome_10, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, gnomel, ROT0, "Igrosoft", "Gnome (100326 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ -GAME( 2007, gnome_11, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, gnomeent, ROT0, "Igrosoft", "Gnome (100326 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ -GAME( 2007, gnome_12, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Gnome (100326 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ - -GAME( 2007, sweetl2, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Sweet Life 2 (071217 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2007, sweetl2_2, sweetl2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Sweet Life 2 (080320 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2007, sweetl2_3, sweetl2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, sweetl2l, ROT0, "Igrosoft", "Sweet Life 2 (090525 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ -GAME( 2007, sweetl2_4, sweetl2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state,sweetl2ent,ROT0, "Igrosoft", "Sweet Life 2 (090812 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ - -GAME( 2008, fcockt2, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail 2 (080707 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2008, fcockt2_3, fcockt2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail 2 (080909 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2008, fcockt2_4, fcockt2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail 2 (081105 World)", MACHINE_SUPPORTS_SAVE ) /* World */ -GAME( 2008, fcockt2_5, fcockt2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "Igrosoft", "Fruit Cocktail 2 (081106 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ -GAME( 2008, fcockt2_6, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, fcockt2l, ROT0, "Igrosoft", "Fruit Cocktail 2 (090528 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ -GAME( 2008, fcockt2_7, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state,fcockt2ent,ROT0, "Igrosoft", "Fruit Cocktail 2 (090813 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ - -GAME( 2010, crzmon2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state,crzmon2, ROT0, "Igrosoft", "Crazy Monkey 2 (100310)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* World */ // xored and bitswapped palette and gfx roms -GAME( 2010, crzmon2_2, crzmon2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state,crzmon2lot,ROT0, "Igrosoft", "Crazy Monkey 2 (100311 Lottery)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* Lottery */ -GAME( 2010, crzmon2_3, crzmon2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state,crzmon2ent,ROT0, "Igrosoft", "Crazy Monkey 2 (100315 Entertainment)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* Entertainment */ +GAME( 2002, goldfish, mfish_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Gold Fish (020903, prototype)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2002, mfish_3, mfish_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Multi Fish (021124)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2002, mfish_6, mfish_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Multi Fish (030124)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2002, mfish_8, mfish_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Multi Fish (030522)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2002, mfish_11, mfish_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Multi Fish (031124)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2002, mfish_12, mfish_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Multi Fish (040308)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2002, mfish_13, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Multi Fish (040316)", MACHINE_SUPPORTS_SAVE ) /* World */ + +GAME( 2002, windjamr, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Windjammer (021216)", MACHINE_SUPPORTS_SAVE ) /* World */ + +GAME( 2003, czmon_5, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Crazy Monkey (030421 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, czmon_7, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Crazy Monkey (031110 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, czmon_8, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Crazy Monkey (050120 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, czmon_9, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Crazy Monkey (070315 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2003, czmon_13, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Crazy Monkey (100311 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, czmon_15, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, crzmonent, ROT0, "Igrosoft", "Crazy Monkey (100311 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ +GAME( 2003, czmon_16, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Crazy Monkey (100312 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ + +GAME( 2003, fcockt_3, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail (030623 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, fcockt_5, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail (031111 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, fcockt_6, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail (040216 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, fcockt_7, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail (050118 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, fcockt_8, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail (060111 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, fcockt_9, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail (070305 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2003, fcockt_10, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail (070517 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2003, fcockt_11, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail (070822 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2003, fcockt_12, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail (070911 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2003, fcockt_14, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, fcocktent, ROT0, "Igrosoft", "Fruit Cocktail (090708 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ + +GAME( 2003, lhaunt_2, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Lucky Haunter (030804 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, lhaunt_4, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Lucky Haunter (031111 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, lhaunt_5, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Lucky Haunter (040216 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, lhaunt_6, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Lucky Haunter (040825 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, lhaunt_7, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Lucky Haunter (070402 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2003, lhaunt_8, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Lucky Haunter (070604 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2003, lhaunt_10, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, lhauntent, ROT0, "Igrosoft", "Lucky Haunter (090712 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ +GAME( 2003, lhaunt_11, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, lhauntent, ROT0, "Igrosoft", "Lucky Haunter (100331 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ + +GAME( 2003, rollfr_2, rollfr_4, rollfr, rollfr, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Roll Fruit (040318)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, rollfr_3, rollfr_4, rollfr, rollfr, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Roll Fruit (080327)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2003, rollfr_4, 0, rollfr, rollfr, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Roll Fruit (080331)", MACHINE_SUPPORTS_SAVE ) /* World */ + +GAME( 2004, garage_4, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Garage (040219 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2004, garage_5, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Garage (050311 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2004, garage_6, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Garage (070213 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2004, garage_7, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Garage (070329 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2004, garage_9, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, garageent, ROT0, "Igrosoft", "Garage (090715 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ + +GAME( 2004, rclimb, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Rock Climber (040815 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2004, rclimb_3, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Rock Climber (040827 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2004, rclimb_4, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Rock Climber (070322 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2004, rclimb_5, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Rock Climber (070621 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2004, rclimb_7, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, rclimbent, ROT0, "Igrosoft", "Rock Climber (090716 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ + +GAME( 2004, sweetl, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Sweet Life (041220 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2004, sweetl_2, sweetl, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Sweet Life (070412 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ + +GAME( 2004, resdnt, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Resident (040415 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2004, resdnt_2, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Resident (040513 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2004, resdnt_3, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Resident (070222 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2004, resdnt_6, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Resident (100311 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2004, resdnt_8, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, resdntent, ROT0, "Igrosoft", "Resident (100311 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ +GAME( 2004, resdnt_9, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Resident (100316 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ + +GAME( 2005, island, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Island (050713 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2005, island_2, island, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Island (070409 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ + +GAME( 2005, pirate_2, pirate_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Pirate (060210 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2005, pirate_3, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Pirate (060803 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2005, pirate_4, pirate_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Pirate (070412 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ + +GAME( 2006, island2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Island 2 (060529 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2006, island2_3, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Island 2 (061218 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2006, island2_4, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Island 2 (070205 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2006, island2_5, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, island2l, ROT0, "Igrosoft", "Island 2 (090528 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ +GAME( 2006, island2_6, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, island2ent, ROT0, "Igrosoft", "Island 2 (090724 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ + +GAME( 2006, pirate2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Pirate 2 (061005 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2006, pirate2_2, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Pirate 2 (070126 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2006, pirate2_3, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, pirate2l, ROT0, "Igrosoft", "Pirate 2 (090528 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ +GAME( 2006, pirate2_4, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, pirate2ent, ROT0, "Igrosoft", "Pirate 2 (090730 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ + +GAME( 2006, keks, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Keks (060328 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2006, keks_2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Keks (060403 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2006, keks_3, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Keks (070119 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2006, keks_4, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, keksl, ROT0, "Igrosoft", "Keks (090604 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ +GAME( 2006, keks_5, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, keksent, ROT0, "Igrosoft", "Keks (090727 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ + +GAME( 2007, gnome, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Gnome (070906 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2007, gnome_2, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Gnome (071115 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2007, gnome_3, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Gnome (080303 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2007, gnome_4, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Gnome (090402 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2007, gnome_5, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Gnome (090406 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2007, gnome_7, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, gnomel, ROT0, "Igrosoft", "Gnome (090708 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ +GAME( 2007, gnome_9, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Gnome (100326 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2007, gnome_10, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, gnomel, ROT0, "Igrosoft", "Gnome (100326 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ +GAME( 2007, gnome_11, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, gnomeent, ROT0, "Igrosoft", "Gnome (100326 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ +GAME( 2007, gnome_12, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Gnome (100326 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ + +GAME( 2007, sweetl2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Sweet Life 2 (071217 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2007, sweetl2_2, sweetl2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Sweet Life 2 (080320 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2007, sweetl2_3, sweetl2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, sweetl2l, ROT0, "Igrosoft", "Sweet Life 2 (090525 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ +GAME( 2007, sweetl2_4, sweetl2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, sweetl2ent, ROT0, "Igrosoft", "Sweet Life 2 (090812 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ + +GAME( 2008, fcockt2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail 2 (080707 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2008, fcockt2_3, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail 2 (080909 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2008, fcockt2_4, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail 2 (081105 World)", MACHINE_SUPPORTS_SAVE ) /* World */ +GAME( 2008, fcockt2_5, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "Igrosoft", "Fruit Cocktail 2 (081106 Russia)", MACHINE_SUPPORTS_SAVE ) /* Russia */ +GAME( 2008, fcockt2_6, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, fcockt2l, ROT0, "Igrosoft", "Fruit Cocktail 2 (090528 Lottery)", MACHINE_SUPPORTS_SAVE ) /* Lottery */ +GAME( 2008, fcockt2_7, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, fcockt2ent, ROT0, "Igrosoft", "Fruit Cocktail 2 (090813 Entertainment)", MACHINE_SUPPORTS_SAVE ) /* Entertainment */ + +GAME( 2010, crzmon2, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, crzmon2, ROT0, "Igrosoft", "Crazy Monkey 2 (100310)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* World */ // xored and bitswapped palette and gfx roms +GAME( 2010, crzmon2_2, crzmon2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, crzmon2lot, ROT0, "Igrosoft", "Crazy Monkey 2 (100311 Lottery)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* Lottery */ +GAME( 2010, crzmon2_3, crzmon2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, crzmon2ent, ROT0, "Igrosoft", "Crazy Monkey 2 (100315 Entertainment)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* Entertainment */ diff --git a/src/mame/drivers/multfish_boot.cpp b/src/mame/drivers/multfish_boot.cpp index 340fd09c9ca..fb2ce7a3ef9 100644 --- a/src/mame/drivers/multfish_boot.cpp +++ b/src/mame/drivers/multfish_boot.cpp @@ -1711,128 +1711,128 @@ ROM_START( fcockt2_4f ) // 081105 custom alteras, modified graphics, bank F9, ma ROM_END -GAME( 2002, mfish_3a, mfish_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Multi Fish (bootleg, 021124, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2002, mfish_12a, mfish_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Multi Fish (bootleg, 040308, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 - -GAME( 2003, czmon_7a, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 031110, backdoor set 1)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2003, czmon_7b, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 031110, backdoor set 2)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 5,5 1,7 3,2 3,3 3,4 -GAME( 2003, czmon_8a, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2003, czmon_8b, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, changed version text)", MACHINE_SUPPORTS_SAVE ) // changed version text to 070315 -GAME( 2003, czmon_8c, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, VIDEO GAME-1 CM01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 CM01" -GAME( 2003, czmon_8d, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" -GAME( 2003, czmon_8e, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, LOTO PROGRAM V-CM2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-CM2" -GAME( 2003, czmon_8f, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, LOTOS CM01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS CM01" -GAME( 2003, czmon_9a, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Crazy Monkey (bootleg, 070315, VIDEO GAME-1 O01 set 1)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 O01" -GAME( 2003, czmon_9b, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 070315, VIDEO GAME-1 O01 set 2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "VIDEO GAME-1 O01" (czmon_9a, decoded gfx) -GAME( 2003, czmon_9c, czmon_13, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 070315, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // payout percentage 70% - -GAME( 2003, fcockt_6a, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 040216, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F8 -GAME( 2003, fcockt_6b, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 040216, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2003, fcockt_6c, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 040216, LotoRossy+)", MACHINE_SUPPORTS_SAVE ) // modified graphics, some code changes, description says "for Lat-02 terminals", older set -GAME( 2003, fcockt_6d, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 040216, VIDEO GAME-1 FR01)", MACHINE_SUPPORTS_SAVE ) // modified graphics, some code changes, changed version text to "VIDEO GAME-1 FR01", description says "for Lat-02 terminals", newer set -GAME( 2003, fcockt_7a, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2003, fcockt_7b, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, VIDEO GAME-1 FR01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 FR01" -GAME( 2003, fcockt_7c, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, payout percentage 40)", MACHINE_SUPPORTS_SAVE ) // payout percentage 40% -GAME( 2003, fcockt_7d, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, payout percentage 60)", MACHINE_SUPPORTS_SAVE ) // payout percentage 60% -GAME( 2003, fcockt_7e, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // payout percentage 70% -GAME( 2003, fcockt_7f, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, changed version text)", MACHINE_SUPPORTS_SAVE ) // changed version text to 070305 -GAME( 2003, fcockt_7g, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, LOTO PROGRAM V-FC2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-FC2" -GAME( 2003, fcockt_7h, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, LOTOS FR01)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTOS FR01" -GAME( 2003, fcockt_8a, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 060111, LOTO COCKTAIL V01-0001)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO COCKTAIL V01-0001" -GAME( 2003, fcockt_8b, fcockt_8, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 060111, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" - -GAME( 2003, lhaunt_4a, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 031111, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2003, lhaunt_5a, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040216, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2003, lhaunt_6a, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 9,1 5,1 1,5 3,3 3,4 -GAME( 2003, lhaunt_6b, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, VIDEO GAME-1 PB01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 PB01" -GAME( 2003, lhaunt_6c, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, changed version text)", MACHINE_SUPPORTS_SAVE ) // changed version text to 070604 -GAME( 2003, lhaunt_6d, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" -GAME( 2003, lhaunt_6e, lhaunt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, LOTO PROGRAM V-LH2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-LH2" -GAME( 2003, lhaunt_6f, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, LOTOS PB01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS PB01" - -GAME( 2004, garage_4a, garage_5, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Garage (bootleg, 040219, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2004, garage_4b, garage_5, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Garage (bootleg, 040219, changed version text)", MACHINE_SUPPORTS_SAVE ) // changed version text to 070329 -GAME( 2004, garage_4c, garage_5, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Garage (bootleg, 040219, LOTO PROGRAM V-GG2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-GG2" -GAME( 2004, garage_5a, garage_5, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Garage (bootleg, 050311, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2004, garage_5b, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Garage (bootleg, 050311, VIDEO GAME-1 GA01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 GA01" -GAME( 2004, garage_5c, garage_5, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Garage (bootleg, 050311, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // payout percentage 70% -GAME( 2004, garage_5d, garage_5, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Garage (bootleg, 050311, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" -GAME( 2004, garage_5e, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Garage (bootleg, 050311, LOTOS GA01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS GA01" - -GAME( 2004, rclimb_3a, rclimb_3, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Rock Climber (bootleg, 040827, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 9,1 5,1 1,5 3,3 3,4 -GAME( 2004, rclimb_3b, rclimb_3, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Rock Climber (bootleg, 040827, new service menu)", MACHINE_SUPPORTS_SAVE ) // new service menu -GAME( 2004, rclimb_3c, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Rock Climber (bootleg, 040827, VIDEO GAME-1 SK01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 SK01" -GAME( 2004, rclimb_3d, rclimb_3, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Rock Climber (bootleg, 040827, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" -GAME( 2004, rclimb_3e, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Rock Climber (bootleg, 040827, LOTOS SK01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS SK01" - -GAME( 2004, sweetla, sweetl, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Sweet Life (bootleg, 041220, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 9,1 5,3 1,5 3,3 3,4 -GAME( 2004, sweetlb, sweetl, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Sweet Life (bootleg, 041220, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070412 - -GAME( 2004, resdnt_2a, resdnt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Resident (bootleg, 040513, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 9,1 5,1 1,5 3,3 3,4 -GAME( 2004, resdnt_2b, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 1)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 SE01" -GAME( 2004, resdnt_2c, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 2)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 SE01" -GAME( 2004, resdnt_2d, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 3)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 SE01" -GAME( 2004, resdnt_2e, resdnt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Resident (bootleg, 040513, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" -GAME( 2004, resdnt_2f, resdnt_6, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Resident (bootleg, 040513, LOTO PROGRAM V-RS2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-RS2" -GAME( 2004, resdnt_2g, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Resident (bootleg, 040513, LOTOS SE01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS SE01" - -GAME( 2005, islanda, island, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Island (bootleg, 050713, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2005, islandb, island, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Island (bootleg, 050713, VIDEO GAME-1 OS01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 OS01" -GAME( 2005, islandc, island, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Island (bootleg, 050713, LOTOS OS01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS OS01" - -GAME( 2006, island2a, island2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Island 2 (bootleg, 060529, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 (not standart, game not work) -GAME( 2006, island2b, island2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Island 2 (bootleg, 060529, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070205, skip some start tests -GAME( 2006, island2c, island2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Island 2 (bootleg, 060529, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" -GAME( 2006, island2_3a, island2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Island 2 (bootleg, 061218, VIDEO GAME-1 OS2-01)", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "VIDEO GAME-1 OS2-01" -GAME( 2006, island2_4a, island2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Island 2 (bootleg, 070205, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 - -GAME( 2006, pirate2a, pirate2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2006, pirate2b, pirate2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9, skip raster beam position check -GAME( 2006, pirate2c, pirate2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack, changed version text set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070126 -GAME( 2006, pirate2d, pirate2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack, changed version text set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070126 -GAME( 2006, pirate2e, pirate2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack, changed version text set 3)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070126, skip some start tests -GAME( 2006, pirate2f, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Pirate 2 (bootleg, 061005, VIDEO GAME-1 PR01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 PR01" -GAME( 2006, pirate2g, pirate2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" -GAME( 2006, pirate2h, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Pirate 2 (bootleg, 061005, LOTOS PR01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS PR01" -GAME( 2006, pirate2_2a, pirate2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 070126, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 - -GAME( 2006, keksa, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 060328, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2006, keksb, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 060328, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 -GAME( 2006, keksc, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 060328, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070119 -GAME( 2006, keks_2a, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2006, keks_2b, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070119 -GAME( 2006, keks_2c, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 1)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, changed version text to "VIDEO GAME-1 KS01" -GAME( 2006, keks_2d, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, bank F9, changed version text to "VIDEO GAME-1 KS01" (keks_2c, decoded gfx) -GAME( 2006, keks_2e, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack, payout percentage 60)", MACHINE_SUPPORTS_SAVE ) // bank F9, payout percentage 60% -GAME( 2006, keks_2f, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 060403, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" -GAME( 2006, keks_2g, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Keks (bootleg, 060403, LOTOS KS01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "LOTOS KS01" -GAME( 2006, keks_3a, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 070119, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2006, keks_3b, keks_2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Keks (bootleg, 070119, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9 - -GAME( 2007, gnomea, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Gnome (bootleg, 070906, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2007, gnomeb, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Gnome (bootleg, 070906, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2007, gnomec, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Gnome (bootleg, 070906, banking address hack set 3)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2007, gnomed, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Gnome (bootleg, 070906, VIDEO GAME-1 GN01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 GN01" -GAME( 2007, gnomee, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Gnome (bootleg, 070906, LOTOS GN01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "LOTOS GN01" -GAME( 2007, gnome_2a, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Gnome (bootleg, 071115, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2007, gnome_3a, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Gnome (bootleg, 080303, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2007, gnome_3b, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Gnome (bootleg, 080303, banking address hack, payout percentage 45)", MACHINE_SUPPORTS_SAVE ) // bank F9 payout percentage 45% -GAME( 2007, gnome_3c, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Gnome (bootleg, 080303, banking address hack, payout percentage 60)", MACHINE_SUPPORTS_SAVE ) // bank F9 payout percentage 60% -GAME( 2007, gnome_5a, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Gnome (bootleg, 090406, banking address hack, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // bank F9, payout percentage 70% -GAME( 2007, gnome_5b, gnome_9, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Gnome (bootleg, 090406, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" - -GAME( 2007, sweetl2_2a, sweetl2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Sweet Life 2 (bootleg, 080320, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2007, sweetl2_2b, sweetl2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Sweet Life 2 (bootleg, 080320, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9, some fixes -GAME( 2007, sweetl2_2c, sweetl2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Sweet Life 2 (bootleg, 080320, VIDEO GAME-1 MD01)", MACHINE_SUPPORTS_SAVE ) // modified graphics, bank F9, changed version text to "VIDEO GAME-1 MD01" -GAME( 2007, sweetl2_2d, sweetl2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Sweet Life 2 (bootleg, 080320, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" - -GAME( 2008, fcockt2a, fcockt2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 080707, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2008, fcockt2_4a, fcockt2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 -GAME( 2008, fcockt2_4b, fcockt2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, banking address hack, no credit limit)", MACHINE_SUPPORTS_SAVE ) // bank F9, no credit limit, "MaxVin" signature -GAME( 2008, fcockt2_4c, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, VIDEO GAME-1 FR02)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "VIDEO GAME-1 FR02" -GAME( 2008, fcockt2_4d, fcockt2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, banking address hack, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // bank F9, no credit limit, "MaxVin" signature, payout percentage 70% -GAME( 2008, fcockt2_4e, fcockt2, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" -GAME( 2008, fcockt2_4f, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl,ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, LOTOS FR02)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "LOTOS FR02" +GAME( 2002, mfish_3a, mfish_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Multi Fish (bootleg, 021124, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2002, mfish_12a, mfish_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Multi Fish (bootleg, 040308, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 + +GAME( 2003, czmon_7a, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 031110, backdoor set 1)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2003, czmon_7b, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 031110, backdoor set 2)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 5,5 1,7 3,2 3,3 3,4 +GAME( 2003, czmon_8a, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2003, czmon_8b, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, changed version text)", MACHINE_SUPPORTS_SAVE ) // changed version text to 070315 +GAME( 2003, czmon_8c, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, VIDEO GAME-1 CM01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 CM01" +GAME( 2003, czmon_8d, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" +GAME( 2003, czmon_8e, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, LOTO PROGRAM V-CM2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-CM2" +GAME( 2003, czmon_8f, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Crazy Monkey (bootleg, 050120, LOTOS CM01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS CM01" +GAME( 2003, czmon_9a, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Crazy Monkey (bootleg, 070315, VIDEO GAME-1 O01 set 1)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 O01" +GAME( 2003, czmon_9b, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 070315, VIDEO GAME-1 O01 set 2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "VIDEO GAME-1 O01" (czmon_9a, decoded gfx) +GAME( 2003, czmon_9c, czmon_13, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Crazy Monkey (bootleg, 070315, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // payout percentage 70% + +GAME( 2003, fcockt_6a, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 040216, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F8 +GAME( 2003, fcockt_6b, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 040216, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2003, fcockt_6c, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 040216, LotoRossy+)", MACHINE_SUPPORTS_SAVE ) // modified graphics, some code changes, description says "for Lat-02 terminals", older set +GAME( 2003, fcockt_6d, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 040216, VIDEO GAME-1 FR01)", MACHINE_SUPPORTS_SAVE ) // modified graphics, some code changes, changed version text to "VIDEO GAME-1 FR01", description says "for Lat-02 terminals", newer set +GAME( 2003, fcockt_7a, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2003, fcockt_7b, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, VIDEO GAME-1 FR01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 FR01" +GAME( 2003, fcockt_7c, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, payout percentage 40)", MACHINE_SUPPORTS_SAVE ) // payout percentage 40% +GAME( 2003, fcockt_7d, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, payout percentage 60)", MACHINE_SUPPORTS_SAVE ) // payout percentage 60% +GAME( 2003, fcockt_7e, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // payout percentage 70% +GAME( 2003, fcockt_7f, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, changed version text)", MACHINE_SUPPORTS_SAVE ) // changed version text to 070305 +GAME( 2003, fcockt_7g, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, LOTO PROGRAM V-FC2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-FC2" +GAME( 2003, fcockt_7h, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 050118, LOTOS FR01)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTOS FR01" +GAME( 2003, fcockt_8a, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 060111, LOTO COCKTAIL V01-0001)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO COCKTAIL V01-0001" +GAME( 2003, fcockt_8b, fcockt_8, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail (bootleg, 060111, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" + +GAME( 2003, lhaunt_4a, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 031111, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2003, lhaunt_5a, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040216, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2003, lhaunt_6a, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 9,1 5,1 1,5 3,3 3,4 +GAME( 2003, lhaunt_6b, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, VIDEO GAME-1 PB01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 PB01" +GAME( 2003, lhaunt_6c, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, changed version text)", MACHINE_SUPPORTS_SAVE ) // changed version text to 070604 +GAME( 2003, lhaunt_6d, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" +GAME( 2003, lhaunt_6e, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, LOTO PROGRAM V-LH2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-LH2" +GAME( 2003, lhaunt_6f, lhaunt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Lucky Haunter (bootleg, 040825, LOTOS PB01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS PB01" + +GAME( 2004, garage_4a, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Garage (bootleg, 040219, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2004, garage_4b, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Garage (bootleg, 040219, changed version text)", MACHINE_SUPPORTS_SAVE ) // changed version text to 070329 +GAME( 2004, garage_4c, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Garage (bootleg, 040219, LOTO PROGRAM V-GG2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-GG2" +GAME( 2004, garage_5a, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Garage (bootleg, 050311, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2004, garage_5b, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Garage (bootleg, 050311, VIDEO GAME-1 GA01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 GA01" +GAME( 2004, garage_5c, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Garage (bootleg, 050311, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // payout percentage 70% +GAME( 2004, garage_5d, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Garage (bootleg, 050311, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" +GAME( 2004, garage_5e, garage_5, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Garage (bootleg, 050311, LOTOS GA01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS GA01" + +GAME( 2004, rclimb_3a, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Rock Climber (bootleg, 040827, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 9,1 5,1 1,5 3,3 3,4 +GAME( 2004, rclimb_3b, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Rock Climber (bootleg, 040827, new service menu)", MACHINE_SUPPORTS_SAVE ) // new service menu +GAME( 2004, rclimb_3c, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Rock Climber (bootleg, 040827, VIDEO GAME-1 SK01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 SK01" +GAME( 2004, rclimb_3d, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Rock Climber (bootleg, 040827, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" +GAME( 2004, rclimb_3e, rclimb_3, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Rock Climber (bootleg, 040827, LOTOS SK01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS SK01" + +GAME( 2004, sweetla, sweetl, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Sweet Life (bootleg, 041220, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 9,1 5,3 1,5 3,3 3,4 +GAME( 2004, sweetlb, sweetl, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Sweet Life (bootleg, 041220, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070412 + +GAME( 2004, resdnt_2a, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Resident (bootleg, 040513, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,5 9,1 5,1 1,5 3,3 3,4 +GAME( 2004, resdnt_2b, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 1)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 SE01" +GAME( 2004, resdnt_2c, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 2)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, changed version text to "VIDEO GAME-1 SE01" +GAME( 2004, resdnt_2d, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 3)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 SE01" +GAME( 2004, resdnt_2e, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Resident (bootleg, 040513, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" +GAME( 2004, resdnt_2f, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Resident (bootleg, 040513, LOTO PROGRAM V-RS2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, many texts changed, changed version text to "LOTO PROGRAM V-RS2" +GAME( 2004, resdnt_2g, resdnt_6, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Resident (bootleg, 040513, LOTOS SE01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS SE01" + +GAME( 2005, islanda, island, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Island (bootleg, 050713, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2005, islandb, island, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Island (bootleg, 050713, VIDEO GAME-1 OS01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 OS01" +GAME( 2005, islandc, island, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Island (bootleg, 050713, LOTOS OS01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS OS01" + +GAME( 2006, island2a, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Island 2 (bootleg, 060529, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 (not standart, game not work) +GAME( 2006, island2b, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Island 2 (bootleg, 060529, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070205, skip some start tests +GAME( 2006, island2c, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Island 2 (bootleg, 060529, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" +GAME( 2006, island2_3a, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Island 2 (bootleg, 061218, VIDEO GAME-1 OS2-01)", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "VIDEO GAME-1 OS2-01" +GAME( 2006, island2_4a, island2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Island 2 (bootleg, 070205, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 + +GAME( 2006, pirate2a, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2006, pirate2b, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9, skip raster beam position check +GAME( 2006, pirate2c, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack, changed version text set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070126 +GAME( 2006, pirate2d, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack, changed version text set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070126 +GAME( 2006, pirate2e, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, banking address hack, changed version text set 3)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070126, skip some start tests +GAME( 2006, pirate2f, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, VIDEO GAME-1 PR01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 PR01" +GAME( 2006, pirate2g, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" +GAME( 2006, pirate2h, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Pirate 2 (bootleg, 061005, LOTOS PR01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "LOTOS PR01" +GAME( 2006, pirate2_2a, pirate2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Pirate 2 (bootleg, 070126, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 + +GAME( 2006, keksa, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 060328, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2006, keksb, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 060328, backdoor)", MACHINE_SUPPORTS_SAVE ) // backdoor 1,1 1,3 1,5 1,7 3,3 3,4 +GAME( 2006, keksc, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 060328, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070119 +GAME( 2006, keks_2a, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2006, keks_2b, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack, changed version text)", MACHINE_SUPPORTS_SAVE ) // bank F9, changed version text to 070119 +GAME( 2006, keks_2c, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 1)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, changed version text to "VIDEO GAME-1 KS01" +GAME( 2006, keks_2d, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 2)", MACHINE_SUPPORTS_SAVE ) // modified graphics, bank F9, changed version text to "VIDEO GAME-1 KS01" (keks_2c, decoded gfx) +GAME( 2006, keks_2e, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 060403, banking address hack, payout percentage 60)", MACHINE_SUPPORTS_SAVE ) // bank F9, payout percentage 60% +GAME( 2006, keks_2f, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 060403, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" +GAME( 2006, keks_2g, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Keks (bootleg, 060403, LOTOS KS01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "LOTOS KS01" +GAME( 2006, keks_3a, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 070119, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2006, keks_3b, keks_2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Keks (bootleg, 070119, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9 + +GAME( 2007, gnomea, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Gnome (bootleg, 070906, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2007, gnomeb, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Gnome (bootleg, 070906, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2007, gnomec, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Gnome (bootleg, 070906, banking address hack set 3)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2007, gnomed, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Gnome (bootleg, 070906, VIDEO GAME-1 GN01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, many texts changed, changed version text to "VIDEO GAME-1 GN01" +GAME( 2007, gnomee, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Gnome (bootleg, 070906, LOTOS GN01)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "LOTOS GN01" +GAME( 2007, gnome_2a, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Gnome (bootleg, 071115, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2007, gnome_3a, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Gnome (bootleg, 080303, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2007, gnome_3b, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Gnome (bootleg, 080303, banking address hack, payout percentage 45)", MACHINE_SUPPORTS_SAVE ) // bank F9 payout percentage 45% +GAME( 2007, gnome_3c, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Gnome (bootleg, 080303, banking address hack, payout percentage 60)", MACHINE_SUPPORTS_SAVE ) // bank F9 payout percentage 60% +GAME( 2007, gnome_5a, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Gnome (bootleg, 090406, banking address hack, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // bank F9, payout percentage 70% +GAME( 2007, gnome_5b, gnome_9, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Gnome (bootleg, 090406, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" + +GAME( 2007, sweetl2_2a, sweetl2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Sweet Life 2 (bootleg, 080320, banking address hack set 1)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2007, sweetl2_2b, sweetl2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Sweet Life 2 (bootleg, 080320, banking address hack set 2)", MACHINE_SUPPORTS_SAVE ) // bank F9, some fixes +GAME( 2007, sweetl2_2c, sweetl2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Sweet Life 2 (bootleg, 080320, VIDEO GAME-1 MD01)", MACHINE_SUPPORTS_SAVE ) // modified graphics, bank F9, changed version text to "VIDEO GAME-1 MD01" +GAME( 2007, sweetl2_2d, sweetl2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Sweet Life 2 (bootleg, 080320, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" + +GAME( 2008, fcockt2a, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 080707, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2008, fcockt2_4a, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, banking address hack)", MACHINE_SUPPORTS_SAVE ) // bank F9 +GAME( 2008, fcockt2_4b, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, banking address hack, no credit limit)", MACHINE_SUPPORTS_SAVE ) // bank F9, no credit limit, "MaxVin" signature +GAME( 2008, fcockt2_4c, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, VIDEO GAME-1 FR02)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "VIDEO GAME-1 FR02" +GAME( 2008, fcockt2_4d, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, banking address hack, payout percentage 70)", MACHINE_SUPPORTS_SAVE ) // bank F9, no credit limit, "MaxVin" signature, payout percentage 70% +GAME( 2008, fcockt2_4e, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, LOTTOGAME (I))", MACHINE_SUPPORTS_SAVE ) // bank F9, modified graphics, changed version text to "MDS_is_the_best_ LOTTOGAME (I)" +GAME( 2008, fcockt2_4f, fcockt2, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, customl, ROT0, "bootleg", "Fruit Cocktail 2 (bootleg, 081105, LOTOS FR02)", MACHINE_SUPPORTS_SAVE ) // custom alteras, modified graphics, bank F9, many texts changed, changed version text to "LOTOS FR02" /* 0x000000 - 0x03ffff Crazy Monkey V03-1110 @@ -1886,5 +1886,5 @@ ROM_START( igromula ) ROM_LOAD( "15games.gfx", 0x000000, 0x4000000, NO_DUMP ) ROM_END -GAME( 2003, igromult, 0, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Igrosoft Multigame Bootleg (10 Games)", MACHINE_NOT_WORKING ) // no GFX roms -GAME( 2003, igromula, igromult, igrosoft_gamble, igrosoft_gamble, driver_device, 0, ROT0, "bootleg", "Igrosoft Multigame Bootleg (15 Games)", MACHINE_NOT_WORKING ) // no GFX roms +GAME( 2003, igromult, 0, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Igrosoft Multigame Bootleg (10 Games)", MACHINE_NOT_WORKING ) // no GFX roms +GAME( 2003, igromula, igromult, igrosoft_gamble, igrosoft_gamble, igrosoft_gamble_state, 0, ROT0, "bootleg", "Igrosoft Multigame Bootleg (15 Games)", MACHINE_NOT_WORKING ) // no GFX roms diff --git a/src/mame/drivers/multi16.cpp b/src/mame/drivers/multi16.cpp index 3193c2e9e23..9bbce125c59 100644 --- a/src/mame/drivers/multi16.cpp +++ b/src/mame/drivers/multi16.cpp @@ -130,7 +130,7 @@ void multi16_state::machine_reset() } -static MACHINE_CONFIG_START( multi16, multi16_state ) +static MACHINE_CONFIG_START( multi16 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 8000000) MCFG_CPU_PROGRAM_MAP(multi16_map) @@ -164,5 +164,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, multi16, 0, 0, multi16, multi16, driver_device, 0, "Mitsubishi", "Multi 16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, multi16, 0, 0, multi16, multi16, multi16_state, 0, "Mitsubishi", "Multi 16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/multi8.cpp b/src/mame/drivers/multi8.cpp index 61c5291ff11..8761b6dd51f 100644 --- a/src/mame/drivers/multi8.cpp +++ b/src/mame/drivers/multi8.cpp @@ -617,7 +617,7 @@ void multi8_state::machine_reset() m_mcu_init = 0; } -static MACHINE_CONFIG_START( multi8, multi8_state ) +static MACHINE_CONFIG_START( multi8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(multi8_mem) @@ -680,5 +680,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, multi8, 0, 0, multi8, multi8, driver_device, 0, "Mitsubishi", "Multi 8 (Mitsubishi)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, multi8, 0, 0, multi8, multi8, multi8_state, 0, "Mitsubishi", "Multi 8 (Mitsubishi)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/multigam.cpp b/src/mame/drivers/multigam.cpp index dee9c71d0fb..b157777e246 100644 --- a/src/mame/drivers/multigam.cpp +++ b/src/mame/drivers/multigam.cpp @@ -583,11 +583,11 @@ WRITE8_MEMBER(multigam_state::multigam3_mmc3_rom_switch_w) case 0x6000: /* disable irqs */ machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE); - m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate()); + m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate()); break; case 0x6001: /* enable irqs */ - m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(multigam_state::multigam3_mmc3_scanline_cb),this)); + m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(multigam_state::multigam3_mmc3_scanline_cb),this)); break; } } @@ -712,7 +712,7 @@ void multigam_state::multigam_init_mapper02(uint8_t* prg_base, int prg_size) m_mapper02_prg_base = prg_base; m_mapper02_prg_size = prg_size; - m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate()); + m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate()); } /****************************************************** @@ -869,7 +869,7 @@ void multigam_state::multigam_init_mmc1(uint8_t *prg_base, int prg_size, int chr m_mmc1_prg_size = prg_size; m_mmc1_chr_bank_base = chr_bank_base; - m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate()); + m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate()); } @@ -932,7 +932,7 @@ void multigam_state::supergm3_set_bank() // title screen memcpy(mem + 0x8000, mem + 0x18000, 0x8000); membank("bank10")->set_base(mem + 0x6000); - m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate()); + m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate()); } else if ((m_supergm3_prg_bank & 0x40) == 0) { @@ -1212,9 +1212,9 @@ MACHINE_START_MEMBER(multigam_state,supergm3) m_multigmc_mmc3_6000_ram = std::make_unique(0x2000); } -static MACHINE_CONFIG_START( multigam, multigam_state ) +static MACHINE_CONFIG_START( multigam ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", N2A03, N2A03_DEFAULTCLOCK) + MCFG_CPU_ADD("maincpu", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(multigam_map) @@ -1462,5 +1462,5 @@ GAME( 1992, multigmb, multigam, multigam, multigam, multigam_state, multigam, RO GAME( 1992, multigm2, 0, multigm3, multigm2, multigam_state, multigm3, ROT0, "Seo Jin", "Multi Game 2", 0 ) GAME( 1992, multigm3, 0, multigm3, multigm3, multigam_state, multigm3, ROT0, "Seo Jin", "Multi Game III", 0 ) GAME( 1992, multigmt, 0, multigmt, multigmt, multigam_state, multigmt, ROT0, "Tung Sheng Electronics", "Multi Game (Tung Sheng Electronics)", 0 ) -GAME( 1994, sgmt1, 0, supergm3, sgmt1, driver_device, 0, ROT0, "", "Super Game Mega Type 1", 0 ) -GAME( 1996, supergm3, 0, supergm3, supergm3, driver_device, 0, ROT0, "", "Super Game III", 0 ) +GAME( 1994, sgmt1, 0, supergm3, sgmt1, multigam_state, 0, ROT0, "", "Super Game Mega Type 1", 0 ) +GAME( 1996, supergm3, 0, supergm3, supergm3, multigam_state, 0, ROT0, "", "Super Game III", 0 ) diff --git a/src/mame/drivers/munchmo.cpp b/src/mame/drivers/munchmo.cpp index 2b59c1520b2..407669ffd59 100644 --- a/src/mame/drivers/munchmo.cpp +++ b/src/mame/drivers/munchmo.cpp @@ -46,9 +46,9 @@ WRITE8_MEMBER(munchmo_state::nmi_enable_w) } /* trusted thru schematics, NMI and IRQ triggers at vblank, at the same time (!) */ -void munchmo_state::vblank_irq(screen_device &screen, bool vblank_state) +WRITE_LINE_MEMBER(munchmo_state::vblank_irq) { - if (vblank_state) + if (state) { if (m_nmi_enable) m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); @@ -324,7 +324,7 @@ void munchmo_state::machine_reset() m_nmi_enable = 0; } -static MACHINE_CONFIG_START( mnchmobl, munchmo_state ) +static MACHINE_CONFIG_START( mnchmobl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_15MHz/4) // from pin 13 of XTAL-driven 163 @@ -342,7 +342,7 @@ static MACHINE_CONFIG_START( mnchmobl, munchmo_state ) MCFG_SCREEN_SIZE(256+32+32, 256) MCFG_SCREEN_VISIBLE_AREA(0, 255+32+32,0, 255-16) MCFG_SCREEN_UPDATE_DRIVER(munchmo_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(munchmo_state, vblank_irq) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(munchmo_state, vblank_irq)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", mnchmobl) @@ -435,5 +435,5 @@ ROM_END * *************************************/ -GAME( 1983, joyfulr, 0, mnchmobl, mnchmobl, driver_device, 0, ROT270, "SNK", "Joyful Road (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, mnchmobl, joyfulr, mnchmobl, mnchmobl, driver_device, 0, ROT270, "SNK (Centuri license)", "Munch Mobile (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, joyfulr, 0, mnchmobl, mnchmobl, munchmo_state, 0, ROT270, "SNK", "Joyful Road (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mnchmobl, joyfulr, mnchmobl, mnchmobl, munchmo_state, 0, ROT270, "SNK (Centuri license)", "Munch Mobile (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/murogem.cpp b/src/mame/drivers/murogem.cpp index fce442574e8..37adb074bc2 100644 --- a/src/mame/drivers/murogem.cpp +++ b/src/mame/drivers/murogem.cpp @@ -245,7 +245,7 @@ uint32_t murogem_state::screen_update(screen_device &screen, bitmap_ind16 &bitma } -static MACHINE_CONFIG_START( murogem, murogem_state ) +static MACHINE_CONFIG_START( murogem ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6802, 8000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(murogem_map) @@ -332,7 +332,7 @@ ROM_START( lasvegas ) ROM_LOAD( "a3.1b", 0x0000, 0x0020, CRC(abddfb6b) SHA1(ed78b93701b5a3bf2053d2584e9a354fb6cec203) ) /* 74s288 at 1B */ ROM_END -GAME( 198?, murogem, 0, murogem, murogem, driver_device, 0, ROT0, "", "Muroge Monaco (set 1)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 198?, murogema, murogem, murogem, murogem, driver_device, 0, ROT0, "", "Muroge Monaco (set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 198?, murogemb, murogem, murogem, murogem, driver_device, 0, ROT0, "", "Muroge Monaco (set 3)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 198?, lasvegas, murogem, murogem, murogem, driver_device, 0, ROT0, "hack", "Las Vegas, Nevada", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 198?, murogem, 0, murogem, murogem, murogem_state, 0, ROT0, "", "Muroge Monaco (set 1)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 198?, murogema, murogem, murogem, murogem, murogem_state, 0, ROT0, "", "Muroge Monaco (set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 198?, murogemb, murogem, murogem, murogem, murogem_state, 0, ROT0, "", "Muroge Monaco (set 3)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 198?, lasvegas, murogem, murogem, murogem, murogem_state, 0, ROT0, "hack", "Las Vegas, Nevada", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/murogmbl.cpp b/src/mame/drivers/murogmbl.cpp index e8f19e19b69..931edbc6ae7 100644 --- a/src/mame/drivers/murogmbl.cpp +++ b/src/mame/drivers/murogmbl.cpp @@ -193,7 +193,7 @@ static GFXDECODE_START( murogmbl ) GFXDECODE_ENTRY( "gfx1", 0, layout8x8x2, 0x0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( murogmbl, murogmbl_state ) +static MACHINE_CONFIG_START( murogmbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 1000000) /* Z80? */ MCFG_CPU_PROGRAM_MAP(murogmbl_map) @@ -234,4 +234,4 @@ ROM_START(murogmbl) ROM_LOAD( "74s288.a8", 0x0000, 0x0020, CRC(fc35201c) SHA1(4549e228c48992e0d10957f029b89a547392e72b) ) ROM_END -GAME( 1982, murogmbl, murogem, murogmbl, murogmbl, driver_device, 0, ROT0, "bootleg?", "Muroge Monaco (bootleg?)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, murogmbl, murogem, murogmbl, murogmbl, murogmbl_state, 0, ROT0, "bootleg?", "Muroge Monaco (bootleg?)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp index 5110bba8a7c..c8d6a3e1782 100644 --- a/src/mame/drivers/mustache.cpp +++ b/src/mame/drivers/mustache.cpp @@ -177,7 +177,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mustache_state::scanline) -static MACHINE_CONFIG_START( mustache, mustache_state ) +static MACHINE_CONFIG_START( mustache ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) diff --git a/src/mame/drivers/mvme147.cpp b/src/mame/drivers/mvme147.cpp index 80764860c03..00c9c4c8b9f 100644 --- a/src/mame/drivers/mvme147.cpp +++ b/src/mame/drivers/mvme147.cpp @@ -219,8 +219,8 @@ protected: private: required_device m_maincpu; - required_device m_sccterm; - required_device m_sccterm2; + required_device m_sccterm; + required_device m_sccterm2; // Pointer to System ROMs needed by bootvect_r and masking RAM buffer for post reset accesses uint32_t *m_sysrom; @@ -249,8 +249,8 @@ static ADDRESS_MAP_START (mvme147_mem, AS_PROGRAM, 32, mvme147_state) AM_RANGE (0xfffe1018, 0xfffe102f) AM_READWRITE8(pcc8_r, pcc8_w, 0xffffffff) /* PCC 8 bits registers */ AM_RANGE (0xfffe2000, 0xfffe201b) AM_READWRITE8(vmechip_r, vmechip_w, 0x00ff00ff) /* VMEchip 8 bits registers on odd adresses */ - AM_RANGE (0xfffe3000, 0xfffe3003) AM_DEVREADWRITE8("scc", scc85C30_device, ba_cd_inv_r, ba_cd_inv_w, 0xffffffff) /* Port 1&2 - Dual serial port Z80-SCC */ - AM_RANGE (0xfffe3800, 0xfffe3803) AM_DEVREADWRITE8("scc2", scc85C30_device, ba_cd_inv_r, ba_cd_inv_w, 0xffffffff) /* Port 3&4 - Dual serial port Z80-SCC */ + AM_RANGE (0xfffe3000, 0xfffe3003) AM_DEVREADWRITE8("scc", scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xffffffff) /* Port 1&2 - Dual serial port Z80-SCC */ + AM_RANGE (0xfffe3800, 0xfffe3803) AM_DEVREADWRITE8("scc2", scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xffffffff) /* Port 3&4 - Dual serial port Z80-SCC */ //AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */ //AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */ @@ -644,7 +644,7 @@ SLOT_INTERFACE_END /* * Machine configuration */ -static MACHINE_CONFIG_START (mvme147, mvme147_state) +static MACHINE_CONFIG_START (mvme147) /* basic machine hardware */ MCFG_CPU_ADD ("maincpu", M68030, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP (mvme147_mem) @@ -660,8 +660,8 @@ static MACHINE_CONFIG_START (mvme147, mvme147_state) MCFG_Z80SCC_OUT_RTSA_CB(DEVWRITELINE("rs232trm", rs232_port_device, write_rts)) MCFG_RS232_PORT_ADD ("rs232trm", default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER (DEVWRITELINE ("scc", scc85C30_device, rxa_w)) - MCFG_RS232_CTS_HANDLER (DEVWRITELINE ("scc", scc85C30_device, ctsa_w)) + MCFG_RS232_RXD_HANDLER (DEVWRITELINE ("scc", scc85c30_device, rxa_w)) + MCFG_RS232_CTS_HANDLER (DEVWRITELINE ("scc", scc85c30_device, ctsa_w)) MCFG_SCC85C30_ADD("scc2", SCC_CLOCK, 0, 0, 0, 0 ) MACHINE_CONFIG_END @@ -710,5 +710,5 @@ ROM_START (mvme147) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP (1989, mvme147, 0, 0, mvme147, mvme147, driver_device, 0, "Motorola", "MVME-147", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP (1989, mvme147, 0, 0, mvme147, mvme147, mvme147_state, 0, "Motorola", "MVME-147", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) diff --git a/src/mame/drivers/mw18w.cpp b/src/mame/drivers/mw18w.cpp index 0e24a1b7b51..07605d7f2cb 100644 --- a/src/mame/drivers/mw18w.cpp +++ b/src/mame/drivers/mw18w.cpp @@ -265,7 +265,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( mw18w, mw18w_state ) +static MACHINE_CONFIG_START( mw18w ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_19_968MHz/8) @@ -306,5 +306,5 @@ ROM_START( 18w2 ) ROM_END -GAMEL( 1979, 18w, 0, mw18w, mw18w, driver_device, 0, ROT0, "Midway", "18 Wheeler (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL, layout_18w ) -GAMEL( 1979, 18w2, 18w, mw18w, mw18w, driver_device, 0, ROT0, "Midway", "18 Wheeler (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL, layout_18w ) +GAMEL( 1979, 18w, 0, mw18w, mw18w, mw18w_state, 0, ROT0, "Midway", "18 Wheeler (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL, layout_18w ) +GAMEL( 1979, 18w2, 18w, mw18w, mw18w, mw18w_state, 0, ROT0, "Midway", "18 Wheeler (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL, layout_18w ) diff --git a/src/mame/drivers/mw8080bw.cpp b/src/mame/drivers/mw8080bw.cpp index a5ea39de466..f74260832fd 100644 --- a/src/mame/drivers/mw8080bw.cpp +++ b/src/mame/drivers/mw8080bw.cpp @@ -226,7 +226,7 @@ ADDRESS_MAP_END * *************************************/ -MACHINE_CONFIG_START( mw8080bw_root, mw8080bw_state ) +MACHINE_CONFIG_START( mw8080bw_root ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080,MW8080BW_CPU_CLOCK) @@ -881,7 +881,8 @@ TIMER_CALLBACK_MEMBER(mw8080bw_state::maze_tone_timing_timer_callback) MACHINE_START_MEMBER(mw8080bw_state,maze) { /* create astable timer for IC B1 */ - machine().scheduler().timer_pulse(MAZE_555_B1_PERIOD, timer_expired_delegate(FUNC(mw8080bw_state::maze_tone_timing_timer_callback),this)); + m_maze_tone_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mw8080bw_state::maze_tone_timing_timer_callback), this)); + m_maze_tone_timer->adjust(MAZE_555_B1_PERIOD, 0, MAZE_555_B1_PERIOD); /* initialize state of Tone Timing FF, IC C1 */ m_maze_tone_timing_state = 0; @@ -2359,7 +2360,7 @@ static MACHINE_CONFIG_DERIVED( phantom2, mw8080bw_root ) /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(mw8080bw_state, screen_update_phantom2) - MCFG_SCREEN_VBLANK_DRIVER(mw8080bw_state, screen_eof_phantom2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mw8080bw_state, screen_vblank_phantom2)) /* add shifter */ MCFG_MB14241_ADD("mb14241") @@ -3223,37 +3224,37 @@ ROM_END * *************************************/ -/* PCB # rom parent machine inp init monitor,company,fullname,flags */ +/* PCB # year rom parent machine inp init monitor,company,fullname,flags */ -/* 596 */ GAMEL(1976, seawolf, 0, seawolf, seawolf, driver_device, 0, ROT0, "Dave Nutting Associates / Midway", "Sea Wolf (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_seawolf ) -/* 596 */ GAMEL(1976, seawolfo, seawolf, seawolf, seawolf, driver_device, 0, ROT0, "Dave Nutting Associates / Midway", "Sea Wolf (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_seawolf ) -/* 597 */ GAMEL(1975, gunfight, 0, gunfight, gunfight, driver_device, 0, ROT0, "Dave Nutting Associates / Midway", "Gun Fight (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gunfight ) -/* 597 */ GAMEL(1975, gunfighto, gunfight, gunfight, gunfight, driver_device, 0, ROT0, "Dave Nutting Associates / Midway", "Gun Fight (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gunfight ) +/* 596 */ GAMEL(1976, seawolf, 0, seawolf, seawolf, mw8080bw_state, 0, ROT0, "Dave Nutting Associates / Midway", "Sea Wolf (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_seawolf ) +/* 596 */ GAMEL(1976, seawolfo, seawolf, seawolf, seawolf, mw8080bw_state, 0, ROT0, "Dave Nutting Associates / Midway", "Sea Wolf (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_seawolf ) +/* 597 */ GAMEL(1975, gunfight, 0, gunfight, gunfight, mw8080bw_state, 0, ROT0, "Dave Nutting Associates / Midway", "Gun Fight (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gunfight ) +/* 597 */ GAMEL(1975, gunfighto, gunfight, gunfight, gunfight, mw8080bw_state, 0, ROT0, "Dave Nutting Associates / Midway", "Gun Fight (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gunfight ) /* 604 Gun Fight (cocktail, dump does not exist) */ -/* 605 */ GAME( 1976, tornbase, 0, tornbase, tornbase, driver_device, 0, ROT0, "Dave Nutting Associates / Midway / Taito", "Tornado Baseball / Ball Park", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* 610 */ GAMEL(1976, 280zzzap, 0, zzzap, zzzap, driver_device, 0, ROT0, "Dave Nutting Associates / Midway", "280-ZZZAP", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_280zzzap ) -/* 611 */ GAMEL(1976, maze, 0, maze, maze, driver_device, 0, ROT0, "Midway", "Amazing Maze", MACHINE_SUPPORTS_SAVE, layout_maze ) -/* 612 */ GAME( 1977, boothill, 0, boothill, boothill, driver_device, 0, ROT0, "Dave Nutting Associates / Midway", "Boot Hill", MACHINE_SUPPORTS_SAVE ) -/* 615 */ GAME( 1977, checkmat, 0, checkmat, checkmat, driver_device, 0, ROT0, "Dave Nutting Associates / Midway", "Checkmate", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* 618 */ GAME( 1977, desertgu, 0, desertgu, desertgu, driver_device, 0, ROT0, "Dave Nutting Associates / Midway", "Desert Gun", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* 618 */ GAME( 1977, roadrunm, desertgu, desertgu, desertgu, driver_device, 0, ROT0, "Midway", "Road Runner (Midway)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* 619 */ GAME( 1977, dplay, 0, dplay, dplay, driver_device, 0, ROT0, "Midway", "Double Play", MACHINE_SUPPORTS_SAVE ) -/* 622 */ GAMEL(1977, lagunar, 0, zzzap, lagunar, driver_device, 0, ROT90, "Midway", "Laguna Racer", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_lagunar ) -/* 623 */ GAME( 1977, gmissile, 0, gmissile, gmissile, driver_device, 0, ROT0, "Midway", "Guided Missile", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* 626 */ GAME( 1977, m4, 0, m4, m4, driver_device, 0, ROT0, "Midway", "M-4", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* 630 */ GAMEL(1978, clowns, 0, clowns, clowns, driver_device, 0, ROT0, "Midway", "Clowns (rev. 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_clowns ) -/* 630 */ GAMEL(1978, clowns1, clowns, clowns, clowns1, driver_device, 0, ROT0, "Midway", "Clowns (rev. 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_clowns ) -/* 640 */ GAMEL(1978, spacwalk, 0, spacwalk, spacwalk, driver_device, 0, ROT0, "Midway", "Space Walk", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spacwalk ) -/* 642 */ GAME( 1978, einning, 0, dplay, einning, driver_device, 0, ROT0, "Midway / Taito", "Extra Inning / Ball Park II", MACHINE_SUPPORTS_SAVE ) -/* 643 */ GAME( 1978, shuffle, 0, shuffle, shuffle, driver_device, 0, ROT90, "Midway", "Shuffleboard", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* 644 */ GAME( 1977, dogpatch, 0, dogpatch, dogpatch, driver_device, 0, ROT0, "Midway", "Dog Patch", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* 645 */ GAMEL(1980, spcenctr, 0, spcenctr, spcenctr, driver_device, 0, ROT0, "Midway", "Space Encounters", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spcenctr ) -/* 652 */ GAMEL(1979, phantom2, 0, phantom2, phantom2, driver_device, 0, ROT0, "Midway", "Phantom II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_phantom2 ) -/* 730 */ GAME( 1978, bowler, 0, bowler, bowler, driver_device, 0, ROT90, "Midway", "Bowling Alley", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* 739 */ GAMEL(1978, invaders, 0, invaders, invaders, driver_device, 0, ROT270, "Taito / Midway", "Space Invaders / Space Invaders M", MACHINE_SUPPORTS_SAVE, layout_invaders ) -/* 742 */ GAME( 1978, blueshrk, 0, blueshrk, blueshrk, driver_device, 0, ROT0, "Midway", "Blue Shark", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) - GAME( 1978, blueshrkmr, blueshrk, blueshrk, blueshrk, driver_device, 0, ROT0, "bootleg (Model Racing)", "Blue Shark (Model Racing bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 605 */ GAME( 1976, tornbase, 0, tornbase, tornbase, mw8080bw_state, 0, ROT0, "Dave Nutting Associates / Midway / Taito", "Tornado Baseball / Ball Park", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 610 */ GAMEL(1976, 280zzzap, 0, zzzap, zzzap, mw8080bw_state, 0, ROT0, "Dave Nutting Associates / Midway", "280-ZZZAP", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_280zzzap ) +/* 611 */ GAMEL(1976, maze, 0, maze, maze, mw8080bw_state, 0, ROT0, "Midway", "Amazing Maze", MACHINE_SUPPORTS_SAVE, layout_maze ) +/* 612 */ GAME( 1977, boothill, 0, boothill, boothill, mw8080bw_state, 0, ROT0, "Dave Nutting Associates / Midway", "Boot Hill", MACHINE_SUPPORTS_SAVE ) +/* 615 */ GAME( 1977, checkmat, 0, checkmat, checkmat, mw8080bw_state, 0, ROT0, "Dave Nutting Associates / Midway", "Checkmate", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 618 */ GAME( 1977, desertgu, 0, desertgu, desertgu, mw8080bw_state, 0, ROT0, "Dave Nutting Associates / Midway", "Desert Gun", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 618 */ GAME( 1977, roadrunm, desertgu, desertgu, desertgu, mw8080bw_state, 0, ROT0, "Midway", "Road Runner (Midway)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 619 */ GAME( 1977, dplay, 0, dplay, dplay, mw8080bw_state, 0, ROT0, "Midway", "Double Play", MACHINE_SUPPORTS_SAVE ) +/* 622 */ GAMEL(1977, lagunar, 0, zzzap, lagunar, mw8080bw_state, 0, ROT90, "Midway", "Laguna Racer", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_lagunar ) +/* 623 */ GAME( 1977, gmissile, 0, gmissile, gmissile, mw8080bw_state, 0, ROT0, "Midway", "Guided Missile", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 626 */ GAME( 1977, m4, 0, m4, m4, mw8080bw_state, 0, ROT0, "Midway", "M-4", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 630 */ GAMEL(1978, clowns, 0, clowns, clowns, mw8080bw_state, 0, ROT0, "Midway", "Clowns (rev. 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_clowns ) +/* 630 */ GAMEL(1978, clowns1, clowns, clowns, clowns1, mw8080bw_state, 0, ROT0, "Midway", "Clowns (rev. 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_clowns ) +/* 640 */ GAMEL(1978, spacwalk, 0, spacwalk, spacwalk, mw8080bw_state, 0, ROT0, "Midway", "Space Walk", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spacwalk ) +/* 642 */ GAME( 1978, einning, 0, dplay, einning, mw8080bw_state, 0, ROT0, "Midway / Taito", "Extra Inning / Ball Park II", MACHINE_SUPPORTS_SAVE ) +/* 643 */ GAME( 1978, shuffle, 0, shuffle, shuffle, mw8080bw_state, 0, ROT90, "Midway", "Shuffleboard", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 644 */ GAME( 1977, dogpatch, 0, dogpatch, dogpatch, mw8080bw_state, 0, ROT0, "Midway", "Dog Patch", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 645 */ GAMEL(1980, spcenctr, 0, spcenctr, spcenctr, mw8080bw_state, 0, ROT0, "Midway", "Space Encounters", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spcenctr ) +/* 652 */ GAMEL(1979, phantom2, 0, phantom2, phantom2, mw8080bw_state, 0, ROT0, "Midway", "Phantom II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_phantom2 ) +/* 730 */ GAME( 1978, bowler, 0, bowler, bowler, mw8080bw_state, 0, ROT90, "Midway", "Bowling Alley", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* 739 */ GAMEL(1978, invaders, 0, invaders, invaders, mw8080bw_state, 0, ROT270, "Taito / Midway", "Space Invaders / Space Invaders M", MACHINE_SUPPORTS_SAVE, layout_invaders ) +/* 742 */ GAME( 1978, blueshrk, 0, blueshrk, blueshrk, mw8080bw_state, 0, ROT0, "Midway", "Blue Shark", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) + GAME( 1978, blueshrkmr, blueshrk, blueshrk, blueshrk, mw8080bw_state, 0, ROT0, "bootleg (Model Racing)", "Blue Shark (Model Racing bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) /* 749 4 Player Bowling Alley (cocktail, dump does not exist) */ -/* 851 */ GAMEL(1980, invad2ct, 0, invad2ct, invad2ct, driver_device, 0, ROT90, "Midway", "Space Invaders II (Midway, cocktail)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invad2ct ) +/* 851 */ GAMEL(1980, invad2ct, 0, invad2ct, invad2ct, mw8080bw_state, 0, ROT90, "Midway", "Space Invaders II (Midway, cocktail)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invad2ct ) /* 852 Space Invaders Deluxe (color hardware, not in this driver) */ /* 870 Space Invaders Deluxe (cocktail, dump does not exist) */ diff --git a/src/mame/drivers/mwarr.cpp b/src/mame/drivers/mwarr.cpp index d97533bda3b..d23703cbb10 100644 --- a/src/mame/drivers/mwarr.cpp +++ b/src/mame/drivers/mwarr.cpp @@ -552,7 +552,7 @@ void mwarr_state::machine_reset() m_which = 0; } -static MACHINE_CONFIG_START( mwarr, mwarr_state ) +static MACHINE_CONFIG_START( mwarr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK) @@ -576,10 +576,10 @@ static MACHINE_CONFIG_START( mwarr, mwarr_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", SOUND_CLOCK/48 , OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", SOUND_CLOCK/48 , PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki2", SOUND_CLOCK/48 , OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", SOUND_CLOCK/48 , PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -656,4 +656,4 @@ ROM_END * *************************************/ -GAME( 199?, mwarr, 0, mwarr, mwarr, driver_device, 0, ROT0, "Elettronica Video-Games S.R.L.", "Mighty Warriors", MACHINE_SUPPORTS_SAVE ) +GAME( 199?, mwarr, 0, mwarr, mwarr, mwarr_state, 0, ROT0, "Elettronica Video-Games S.R.L.", "Mighty Warriors", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mwsub.cpp b/src/mame/drivers/mwsub.cpp index 38672507557..81a07b44d43 100644 --- a/src/mame/drivers/mwsub.cpp +++ b/src/mame/drivers/mwsub.cpp @@ -196,7 +196,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( submar, submar_state ) +static MACHINE_CONFIG_START( submar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_19_968MHz/8) @@ -227,4 +227,4 @@ ROM_START( submar ) ROM_END -GAMEL( 1979, submar, 0, submar, submar, driver_device, 0, ROT0, "Midway", "Submarine (Midway)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL, layout_submar ) +GAMEL( 1979, submar, 0, submar, submar, submar_state, 0, ROT0, "Midway", "Submarine (Midway)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL, layout_submar ) diff --git a/src/mame/drivers/mx2178.cpp b/src/mame/drivers/mx2178.cpp index 442013d9283..9d712d2558d 100644 --- a/src/mame/drivers/mx2178.cpp +++ b/src/mame/drivers/mx2178.cpp @@ -43,7 +43,7 @@ public: } DECLARE_READ8_MEMBER(keyin_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE_LINE_MEMBER(write_acia_clock); MC6845_UPDATE_ROW(crtc_update_row); @@ -91,7 +91,7 @@ READ8_MEMBER( mx2178_state::keyin_r ) return (m_term_data) ? 0x83 : 0x82; } -WRITE8_MEMBER( mx2178_state::kbd_put ) +void mx2178_state::kbd_put(u8 data) { m_term_data = data; m_maincpu->set_input_line(0, HOLD_LINE); @@ -152,7 +152,7 @@ WRITE_LINE_MEMBER(mx2178_state::write_acia_clock) m_acia->write_rxc(state); } -static MACHINE_CONFIG_START( mx2178, mx2178_state ) +static MACHINE_CONFIG_START( mx2178 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18869600/5) // guess MCFG_CPU_PROGRAM_MAP(mx2178_mem) @@ -179,7 +179,7 @@ static MACHINE_CONFIG_START( mx2178, mx2178_state ) /// TODO: hook up acia to keyboard and memory map MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(mx2178_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(mx2178_state, kbd_put)) MCFG_DEVICE_ADD("acia_clock", CLOCK, 614400) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(mx2178_state, write_acia_clock)) @@ -197,5 +197,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, mx2178, 0, 0, mx2178, mx2178, driver_device, 0, "Memorex", "Memorex 2178", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, mx2178, 0, 0, mx2178, mx2178, mx2178_state, 0, "Memorex", "Memorex 2178", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/myb3k.cpp b/src/mame/drivers/myb3k.cpp index fe7446f27b1..c93d8b3c2bb 100644 --- a/src/mame/drivers/myb3k.cpp +++ b/src/mame/drivers/myb3k.cpp @@ -22,24 +22,28 @@ class myb3k_state : public driver_device { public: myb3k_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_fdc(*this, "fdc"), - m_crtc(*this, "crtc"), - m_floppy0(*this, "fdc:0"), - m_floppy1(*this, "fdc:1"), - m_p_vram(*this, "p_vram"), - m_palette(*this, "palette") { } + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_fdc(*this, "fdc") + , m_crtc(*this, "crtc") + , m_floppy0(*this, "fdc:0") + , m_floppy1(*this, "fdc:1") + , m_p_vram(*this, "p_vram") + , m_palette(*this, "palette") + { } - required_device m_maincpu; - required_device m_fdc; - required_device m_crtc; - required_device m_floppy0; - required_device m_floppy1; DECLARE_WRITE8_MEMBER(myb3k_6845_address_w); DECLARE_WRITE8_MEMBER(myb3k_6845_data_w); DECLARE_WRITE8_MEMBER(myb3k_video_mode_w); DECLARE_WRITE8_MEMBER(myb3k_fdc_output_w); + uint32_t screen_update_myb3k(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + +protected: + required_device m_maincpu; + required_device m_fdc; + required_device m_crtc; + required_device m_floppy0; + required_device m_floppy1; required_shared_ptr m_p_vram; required_device m_palette; uint8_t m_crtc_vreg[0x100],m_crtc_index; @@ -47,7 +51,6 @@ public: virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; - uint32_t screen_update_myb3k(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; void myb3k_state::video_start() @@ -158,7 +161,7 @@ static ADDRESS_MAP_START(myb3k_io, AS_IO, 8, myb3k_state) AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW2") AM_RANGE(0x1c, 0x1c) AM_WRITE(myb3k_6845_address_w) AM_RANGE(0x1d, 0x1d) AM_WRITE(myb3k_6845_data_w) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("fdc", mb8877_t, read, write) //FDC, almost likely wd17xx + AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("fdc", mb8877_device, read, write) //FDC, almost likely wd17xx AM_RANGE(0x24, 0x24) AM_WRITE(myb3k_fdc_output_w) // AM_RANGE(0x520,0x524) mirror of above ADDRESS_MAP_END @@ -247,7 +250,7 @@ static SLOT_INTERFACE_START( myb3k_floppies ) SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( myb3k, myb3k_state ) +static MACHINE_CONFIG_START( myb3k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, 4000000) /* unknown clock*/ MCFG_CPU_PROGRAM_MAP(myb3k_map) @@ -283,5 +286,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, myb3k, 0, 0, myb3k, myb3k, driver_device, 0, "Panasonic", "MyBrain 3000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, myb3k, 0, 0, myb3k, myb3k, myb3k_state, 0, "Panasonic", "MyBrain 3000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/mycom.cpp b/src/mame/drivers/mycom.cpp index 600999a942e..ce3c354568b 100644 --- a/src/mame/drivers/mycom.cpp +++ b/src/mame/drivers/mycom.cpp @@ -114,7 +114,7 @@ private: required_device m_ppi2; required_device m_cass; required_device m_crtc; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_audio; @@ -228,7 +228,7 @@ static ADDRESS_MAP_START(mycom_io, AS_IO, 8, mycom_state) AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1771_t, read, write) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1771_device, read, write) ADDRESS_MAP_END /* Input ports */ @@ -496,7 +496,7 @@ DRIVER_INIT_MEMBER(mycom_state,mycom) membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0x10000); } -static MACHINE_CONFIG_START( mycom, mycom_state ) +static MACHINE_CONFIG_START( mycom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_10MHz / 4) MCFG_CPU_PROGRAM_MAP(mycom_map) @@ -576,5 +576,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, mycom, 0, 0, mycom, mycom, mycom_state, mycom, "Japan Electronics College", "MYCOMZ-80A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, mycom, 0, 0, mycom, mycom, mycom_state, mycom, "Japan Electronics College", "MYCOMZ-80A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/mystston.cpp b/src/mame/drivers/mystston.cpp index 5fec3ea95cb..ac3bd274b94 100644 --- a/src/mame/drivers/mystston.cpp +++ b/src/mame/drivers/mystston.cpp @@ -191,7 +191,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( mystston, mystston_state ) +static MACHINE_CONFIG_START( mystston ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, CPU_CLOCK) @@ -320,6 +320,6 @@ ROM_END * *************************************/ -GAME( 1984, mystston, 0, mystston, mystston, driver_device, 0, ROT270, "Technos Japan", "Mysterious Stones - Dr. John's Adventure", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, myststono,mystston, mystston, mystston, driver_device, 0, ROT270, "Technos Japan", "Mysterious Stones - Dr. Kick in Adventure", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, myststonoi,mystston, mystston, mystston, driver_device, 0, ROT270, "Technos Japan", "Mysterious Stones - Dr. Kick in Adventure (Itisa PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, mystston, 0, mystston, mystston, mystston_state, 0, ROT270, "Technos Japan", "Mysterious Stones - Dr. John's Adventure", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, myststono, mystston, mystston, mystston, mystston_state, 0, ROT270, "Technos Japan", "Mysterious Stones - Dr. Kick in Adventure", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, myststonoi, mystston, mystston, mystston, mystston_state, 0, ROT270, "Technos Japan", "Mysterious Stones - Dr. Kick in Adventure (Itisa PCB)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp index 6a469728c42..737243746d3 100644 --- a/src/mame/drivers/mystwarr.cpp +++ b/src/mame/drivers/mystwarr.cpp @@ -244,51 +244,11 @@ INTERRUPT_GEN_MEMBER(mystwarr_state::ddd_interrupt) /**********************************************************************************/ -WRITE16_MEMBER(mystwarr_state::sound_cmd1_w) -{ - m_soundlatch->write(space, 0, data&0xff); -} - -WRITE16_MEMBER(mystwarr_state::sound_cmd1_msb_w) -{ - m_soundlatch->write(space, 0, data>>8); -} - -WRITE16_MEMBER(mystwarr_state::sound_cmd2_w) -{ - m_soundlatch2->write(space, 0, data&0xff); - return; -} - -WRITE16_MEMBER(mystwarr_state::sound_cmd2_msb_w) -{ - m_soundlatch2->write(space, 0, data>>8); - return; -} - WRITE16_MEMBER(mystwarr_state::sound_irq_w) { m_soundcpu->set_input_line(0, HOLD_LINE); } -READ16_MEMBER(mystwarr_state::sound_status_r) -{ - int latch = m_soundlatch3->read(space,0); - - if ((latch & 0xf) == 0xe) latch |= 1; - - return latch; -} - -READ16_MEMBER(mystwarr_state::sound_status_msb_r) -{ - int latch = m_soundlatch3->read(space,0); - - if ((latch & 0xf) == 0xe) latch |= 1; - - return latch<<8; -} - WRITE16_MEMBER(mystwarr_state::irq_ack_w) { m_k056832->b_word_w(space, offset, data, mem_mask); @@ -343,15 +303,12 @@ static ADDRESS_MAP_START( mystwarr_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x48a000, 0x48a01f) AM_DEVWRITE("k054338", k054338_device, word_w) AM_RANGE(0x48c000, 0x48c03f) AM_DEVWRITE("k056832", k056832_device,word_w) AM_RANGE(0x490000, 0x490001) AM_WRITE(mweeprom_w) - AM_RANGE(0x492000, 0x492001) AM_WRITENOP // watchdog + AM_RANGE(0x492000, 0x492001) AM_NOP // watchdog AM_RANGE(0x494000, 0x494001) AM_READ_PORT("P1_P2") AM_RANGE(0x494002, 0x494003) AM_READ_PORT("P3_P4") AM_RANGE(0x496000, 0x496001) AM_READ_PORT("IN0") AM_RANGE(0x496002, 0x496003) AM_READ(eeprom_r) - AM_RANGE(0x49800c, 0x49800d) AM_WRITE(sound_cmd1_w) - AM_RANGE(0x49800e, 0x49800f) AM_WRITE(sound_cmd2_w) - AM_RANGE(0x498014, 0x498015) AM_READ(sound_status_r) - AM_RANGE(0x498000, 0x49801f) AM_RAM + AM_RANGE(0x498000, 0x49801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x49a000, 0x49a001) AM_WRITE(sound_irq_w) AM_RANGE(0x49c000, 0x49c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) AM_RANGE(0x49e000, 0x49e007) AM_WRITE(irq_ack_w) // VSCCS (custom) @@ -376,10 +333,7 @@ static ADDRESS_MAP_START( metamrph_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x258000, 0x2580ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w) - AM_RANGE(0x26800c, 0x26800d) AM_WRITE(sound_cmd1_w) - AM_RANGE(0x26800e, 0x26800f) AM_WRITE(sound_cmd2_w) - AM_RANGE(0x268014, 0x268015) AM_READ(sound_status_r) - AM_RANGE(0x268000, 0x26801f) AM_RAM + AM_RANGE(0x268000, 0x26801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w) AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,word_w) AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3") @@ -411,10 +365,7 @@ static ADDRESS_MAP_START( viostorm_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x25c000, 0x25c03f) AM_READWRITE(K055550_word_r,K055550_word_w) AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w) - AM_RANGE(0x26800c, 0x26800d) AM_WRITE(sound_cmd1_w) - AM_RANGE(0x26800e, 0x26800f) AM_WRITE(sound_cmd2_w) - AM_RANGE(0x268014, 0x268015) AM_READ(sound_status_r) - AM_RANGE(0x268000, 0x26801f) AM_RAM + AM_RANGE(0x268000, 0x26801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w) AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,word_w) AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3") @@ -498,10 +449,7 @@ static ADDRESS_MAP_START( martchmp_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x414002, 0x414003) AM_READ_PORT("P3_P4") AM_RANGE(0x416000, 0x416001) AM_READ_PORT("IN0") AM_RANGE(0x416002, 0x416003) AM_READ(eeprom_r) // eeprom read - AM_RANGE(0x418014, 0x418015) AM_READ(sound_status_r) // z80 status - AM_RANGE(0x41800c, 0x41800d) AM_WRITE(sound_cmd1_w) - AM_RANGE(0x41800e, 0x41800f) AM_WRITE(sound_cmd2_w) - AM_RANGE(0x418000, 0x41801f) AM_RAM // sound regs fall through + AM_RANGE(0x418000, 0x41801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x41a000, 0x41a001) AM_WRITE(sound_irq_w) AM_RANGE(0x41c000, 0x41c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU AM_RANGE(0x41e000, 0x41e007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS @@ -530,10 +478,7 @@ static ADDRESS_MAP_START( dadandrn_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w) AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) - AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w) - AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w) - AM_RANGE(0x48a014, 0x48a015) AM_READ(sound_status_msb_r) - AM_RANGE(0x48a000, 0x48a01f) AM_RAM // sound regs fall-through + AM_RANGE(0x48a000, 0x48a01f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00) AM_RANGE(0x48c000, 0x48c01f) AM_DEVWRITE("k054338", k054338_device, word_w) AM_RANGE(0x48e000, 0x48e001) AM_READ_PORT("IN0_P1") // bit 3 (0x8) is test switch AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r) @@ -569,10 +514,7 @@ static ADDRESS_MAP_START( gaiapols_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w) AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) - AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w) - AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w) - AM_RANGE(0x48a014, 0x48a015) AM_READ(sound_status_msb_r) - AM_RANGE(0x48a000, 0x48a01f) AM_RAM // sound regs fall-through + AM_RANGE(0x48a000, 0x48a01f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00) AM_RANGE(0x48c000, 0x48c01f) AM_DEVWRITE("k054338", k054338_device, word_w) AM_RANGE(0x48e000, 0x48e001) AM_READ_PORT("IN0_P1") // bit 3 (0x8) is test switch AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r) @@ -615,9 +557,7 @@ static ADDRESS_MAP_START( mystwarr_sound_map, AS_PROGRAM, 8, mystwarr_state ) AM_RANGE(0xe230, 0xe3ff) AM_RAM AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write) AM_RANGE(0xe630, 0xe7ff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) - AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) + AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w) AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP // unknown write ADDRESS_MAP_END @@ -958,7 +898,7 @@ MACHINE_RESET_MEMBER(mystwarr_state,gaiapols) } -static MACHINE_CONFIG_START( mystwarr, mystwarr_state ) +static MACHINE_CONFIG_START( mystwarr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz (confirmed) */ @@ -1014,9 +954,7 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_GENERIC_LATCH_8_ADD("soundlatch2") - MCFG_GENERIC_LATCH_8_ADD("soundlatch3") + MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker") MCFG_DEVICE_ADD("k054539_1", K054539, XTAL_18_432MHz) MCFG_K054539_REGION_OVERRRIDE("shared") @@ -2291,37 +2229,37 @@ ROM_START( dadandrn ) ROM_LOAD( "dadandrn.nv", 0x0000, 0x080, CRC(346ae0cf) SHA1(1f79b2e21766f7a971c7d0f618700deb8a32f78a) ) ROM_END -/* ROM parent machine inp init */ -GAME( 1993, mystwarr, 0, mystwarr, mystwarr, driver_device, 0, ROT0, "Konami", "Mystic Warriors (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, mystwarru, mystwarr, mystwarr, mystwarr, driver_device, 0, ROT0, "Konami", "Mystic Warriors (ver UAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, mystwarrj, mystwarr, mystwarr, mystwarr, driver_device, 0, ROT0, "Konami", "Mystic Warriors (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, mystwarra, mystwarr, mystwarr, mystwarr, driver_device, 0, ROT0, "Konami", "Mystic Warriors (ver AAB)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, mystwarraa, mystwarr, mystwarr, mystwarr, driver_device, 0, ROT0, "Konami", "Mystic Warriors (ver AAA)", MACHINE_IMPERFECT_GRAPHICS ) - -GAME( 1993, mmaulers, 0, dadandrn, dadandrn, driver_device, 0, ROT0, "Konami", "Monster Maulers (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, dadandrn, mmaulers, dadandrn, dadandrn, driver_device, 0, ROT0, "Konami", "Kyukyoku Sentai Dadandarn (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) - -GAME( 1993, viostorm, 0, viostorm, viostorm, driver_device, 0, ROT0, "Konami", "Violent Storm (ver EAC)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, viostormeb, viostorm, viostorm, viostorm, driver_device, 0, ROT0, "Konami", "Violent Storm (ver EAB)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, viostormu, viostorm, viostorm, viostorm, driver_device, 0, ROT0, "Konami", "Violent Storm (ver UAC)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, viostormub, viostorm, viostorm, viostorm, driver_device, 0, ROT0, "Konami", "Violent Storm (ver UAB)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, viostormj, viostorm, viostorm, viostorm, driver_device, 0, ROT0, "Konami", "Violent Storm (ver JAC)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, viostorma, viostorm, viostorm, viostorm, driver_device, 0, ROT0, "Konami", "Violent Storm (ver AAC)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, viostormab, viostorm, viostorm, viostorm, driver_device, 0, ROT0, "Konami", "Violent Storm (ver AAB)", MACHINE_IMPERFECT_GRAPHICS ) - -GAME( 1993, metamrph, 0, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, metamrphe, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver EAA - alternate)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, metamrphu, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver UAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, metamrphj, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, metamrpha, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver AAA)", MACHINE_IMPERFECT_GRAPHICS ) - -GAME( 1993, mtlchamp, 0, martchmp, martchmp, driver_device, 0, ROT0, "Konami", "Martial Champion (ver EAB)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, mtlchamp1, mtlchamp, martchmp, martchmp, driver_device, 0, ROT0, "Konami", "Martial Champion (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, mtlchampu, mtlchamp, martchmp, martchmp, driver_device, 0, ROT0, "Konami", "Martial Champion (ver UAE)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, mtlchampu1, mtlchamp, martchmp, martchmp, driver_device, 0, ROT0, "Konami", "Martial Champion (ver UAD)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, mtlchampj, mtlchamp, martchmp, martchmp, driver_device, 0, ROT0, "Konami", "Martial Champion (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, mtlchampa, mtlchamp, martchmp, martchmp, driver_device, 0, ROT0, "Konami", "Martial Champion (ver AAA)", MACHINE_IMPERFECT_GRAPHICS ) - -GAME( 1993, gaiapols, 0, gaiapols, dadandrn, driver_device, 0, ROT90, "Konami", "Gaiapolis (ver EAF)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, gaiapolsu, gaiapols, gaiapols, dadandrn, driver_device, 0, ROT90, "Konami", "Gaiapolis (ver UAF)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, gaiapolsj, gaiapols, gaiapols, dadandrn, driver_device, 0, ROT90, "Konami", "Gaiapolis (ver JAF)", MACHINE_IMPERFECT_GRAPHICS ) +// YEAR NAME PARENT MACHINE INPUT STATE +GAME( 1993, mystwarr, 0, mystwarr, mystwarr, mystwarr_state, 0, ROT0, "Konami", "Mystic Warriors (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, mystwarru, mystwarr, mystwarr, mystwarr, mystwarr_state, 0, ROT0, "Konami", "Mystic Warriors (ver UAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, mystwarrj, mystwarr, mystwarr, mystwarr, mystwarr_state, 0, ROT0, "Konami", "Mystic Warriors (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, mystwarra, mystwarr, mystwarr, mystwarr, mystwarr_state, 0, ROT0, "Konami", "Mystic Warriors (ver AAB)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, mystwarraa, mystwarr, mystwarr, mystwarr, mystwarr_state, 0, ROT0, "Konami", "Mystic Warriors (ver AAA)", MACHINE_IMPERFECT_GRAPHICS ) + +GAME( 1993, mmaulers, 0, dadandrn, dadandrn, mystwarr_state, 0, ROT0, "Konami", "Monster Maulers (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, dadandrn, mmaulers, dadandrn, dadandrn, mystwarr_state, 0, ROT0, "Konami", "Kyukyoku Sentai Dadandarn (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) + +GAME( 1993, viostorm, 0, viostorm, viostorm, mystwarr_state, 0, ROT0, "Konami", "Violent Storm (ver EAC)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, viostormeb, viostorm, viostorm, viostorm, mystwarr_state, 0, ROT0, "Konami", "Violent Storm (ver EAB)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, viostormu, viostorm, viostorm, viostorm, mystwarr_state, 0, ROT0, "Konami", "Violent Storm (ver UAC)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, viostormub, viostorm, viostorm, viostorm, mystwarr_state, 0, ROT0, "Konami", "Violent Storm (ver UAB)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, viostormj, viostorm, viostorm, viostorm, mystwarr_state, 0, ROT0, "Konami", "Violent Storm (ver JAC)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, viostorma, viostorm, viostorm, viostorm, mystwarr_state, 0, ROT0, "Konami", "Violent Storm (ver AAC)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, viostormab, viostorm, viostorm, viostorm, mystwarr_state, 0, ROT0, "Konami", "Violent Storm (ver AAB)", MACHINE_IMPERFECT_GRAPHICS ) + +GAME( 1993, metamrph, 0, metamrph, metamrph, mystwarr_state, 0, ROT0, "Konami", "Metamorphic Force (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, metamrphe, metamrph, metamrph, metamrph, mystwarr_state, 0, ROT0, "Konami", "Metamorphic Force (ver EAA - alternate)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, metamrphu, metamrph, metamrph, metamrph, mystwarr_state, 0, ROT0, "Konami", "Metamorphic Force (ver UAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, metamrphj, metamrph, metamrph, metamrph, mystwarr_state, 0, ROT0, "Konami", "Metamorphic Force (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, metamrpha, metamrph, metamrph, metamrph, mystwarr_state, 0, ROT0, "Konami", "Metamorphic Force (ver AAA)", MACHINE_IMPERFECT_GRAPHICS ) + +GAME( 1993, mtlchamp, 0, martchmp, martchmp, mystwarr_state, 0, ROT0, "Konami", "Martial Champion (ver EAB)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, mtlchamp1, mtlchamp, martchmp, martchmp, mystwarr_state, 0, ROT0, "Konami", "Martial Champion (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, mtlchampu, mtlchamp, martchmp, martchmp, mystwarr_state, 0, ROT0, "Konami", "Martial Champion (ver UAE)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, mtlchampu1, mtlchamp, martchmp, martchmp, mystwarr_state, 0, ROT0, "Konami", "Martial Champion (ver UAD)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, mtlchampj, mtlchamp, martchmp, martchmp, mystwarr_state, 0, ROT0, "Konami", "Martial Champion (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, mtlchampa, mtlchamp, martchmp, martchmp, mystwarr_state, 0, ROT0, "Konami", "Martial Champion (ver AAA)", MACHINE_IMPERFECT_GRAPHICS ) + +GAME( 1993, gaiapols, 0, gaiapols, dadandrn, mystwarr_state, 0, ROT90, "Konami", "Gaiapolis (ver EAF)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, gaiapolsu, gaiapols, gaiapols, dadandrn, mystwarr_state, 0, ROT90, "Konami", "Gaiapolis (ver UAF)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, gaiapolsj, gaiapols, gaiapols, dadandrn, mystwarr_state, 0, ROT90, "Konami", "Gaiapolis (ver JAF)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/myvision.cpp b/src/mame/drivers/myvision.cpp index ea048d9eda0..37a3e5e9959 100644 --- a/src/mame/drivers/myvision.cpp +++ b/src/mame/drivers/myvision.cpp @@ -207,7 +207,7 @@ WRITE8_MEMBER( myvision_state::ay_port_b_w ) m_column = data; } -static MACHINE_CONFIG_START( myvision, myvision_state ) +static MACHINE_CONFIG_START( myvision ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_10_738635MHz/3) /* Not verified */ MCFG_CPU_PROGRAM_MAP(myvision_mem) @@ -245,5 +245,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1983, myvision, 0, 0, myvision, myvision, driver_device, 0, "Nichibutsu", "My Vision (KH-1000)", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLN AME FLAGS +CONS( 1983, myvision, 0, 0, myvision, myvision, myvision_state, 0, "Nichibutsu", "My Vision (KH-1000)", 0 ) diff --git a/src/mame/drivers/mz2000.cpp b/src/mame/drivers/mz2000.cpp index 823ee098c44..866895c3afe 100644 --- a/src/mame/drivers/mz2000.cpp +++ b/src/mame/drivers/mz2000.cpp @@ -129,7 +129,7 @@ public: protected: required_device m_maincpu; - required_device m_mb8877a; + required_device m_mb8877a; required_device m_floppy0; required_device m_floppy1; required_device m_floppy2; @@ -861,7 +861,7 @@ static SLOT_INTERFACE_START( mz2000_floppies ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( mz2000, mz2000_state ) +static MACHINE_CONFIG_START( mz2000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, MASTER_CLOCK) MCFG_CPU_PROGRAM_MAP(mz2000_map) @@ -994,7 +994,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, mz80b, 0, 0, mz80b, mz80be, driver_device, 0, "Sharp", "MZ-80B", MACHINE_NOT_WORKING ) -COMP( 1982, mz2000, 0, 0, mz2000, mz80bj, driver_device, 0, "Sharp", "MZ-2000", MACHINE_NOT_WORKING ) -COMP( 1982, mz2200, mz2000, 0, mz2000, mz80bj, driver_device, 0, "Sharp", "MZ-2200", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, mz80b, 0, 0, mz80b, mz80be, mz2000_state, 0, "Sharp", "MZ-80B", MACHINE_NOT_WORKING ) +COMP( 1982, mz2000, 0, 0, mz2000, mz80bj, mz2000_state, 0, "Sharp", "MZ-2000", MACHINE_NOT_WORKING ) +COMP( 1982, mz2200, mz2000, 0, mz2000, mz80bj, mz2000_state, 0, "Sharp", "MZ-2200", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/mz2500.cpp b/src/mame/drivers/mz2500.cpp index 0b1308ca3a2..eddd2ad0a46 100644 --- a/src/mame/drivers/mz2500.cpp +++ b/src/mame/drivers/mz2500.cpp @@ -87,7 +87,7 @@ public: required_device m_pit; required_device m_beeper; required_device m_gfxdecode; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_floppy2; @@ -2076,7 +2076,7 @@ static SLOT_INTERFACE_START( mz2500_floppies ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( mz2500, mz2500_state ) +static MACHINE_CONFIG_START( mz2500 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 6000000) MCFG_CPU_PROGRAM_MAP(mz2500_map) @@ -2199,5 +2199,5 @@ ROM_END /* Driver */ -COMP( 1985, mz2500, 0, 0, mz2500, mz2500, driver_device, 0, "Sharp", "MZ-2500", MACHINE_IMPERFECT_GRAPHICS ) -COMP( 1985, mz2520, mz2500, 0, mz2500, mz2500, driver_device, 0, "Sharp", "MZ-2520", MACHINE_IMPERFECT_GRAPHICS ) // looks a stripped down version of the regular MZ-2500, with only two floppies drives and no cassette interface +COMP( 1985, mz2500, 0, 0, mz2500, mz2500, mz2500_state, 0, "Sharp", "MZ-2500", MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1985, mz2520, mz2500, 0, mz2500, mz2500, mz2500_state, 0, "Sharp", "MZ-2520", MACHINE_IMPERFECT_GRAPHICS ) // looks a stripped down version of the regular MZ-2500, with only two floppies drives and no cassette interface diff --git a/src/mame/drivers/mz3500.cpp b/src/mame/drivers/mz3500.cpp index badf86c6d19..fd00f0b88f4 100644 --- a/src/mame/drivers/mz3500.cpp +++ b/src/mame/drivers/mz3500.cpp @@ -800,7 +800,7 @@ static SLOT_INTERFACE_START( mz3500_floppies ) SLOT_INTERFACE_END /* TODO: clocks */ -static MACHINE_CONFIG_START( mz3500, mz3500_state ) +static MACHINE_CONFIG_START( mz3500 ) /* basic machine hardware */ MCFG_CPU_ADD("master",Z80,MAIN_CLOCK/2) @@ -871,4 +871,4 @@ ROM_START( mz3500 ) ROM_LOAD( "mz-3500_cg-rom_2-b_m5l2764k.bin", 0x000000, 0x002000, CRC(29f2f80a) SHA1(64b307cd9de5a3327e3ec9f3d0d6b3485706f436) ) ROM_END -COMP( 198?, mz3500, 0, 0, mz3500, mz3500, driver_device, 0, "Sharp", "MZ-3500", MACHINE_IS_SKELETON ) +COMP( 198?, mz3500, 0, 0, mz3500, mz3500, mz3500_state, 0, "Sharp", "MZ-3500", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/mz6500.cpp b/src/mame/drivers/mz6500.cpp index c33b3943411..6c371c2ac59 100644 --- a/src/mame/drivers/mz6500.cpp +++ b/src/mame/drivers/mz6500.cpp @@ -137,7 +137,7 @@ static ADDRESS_MAP_START( upd7220_map, AS_0, 16, mz6500_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( mz6500, mz6500_state ) +static MACHINE_CONFIG_START( mz6500 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 8000000) //unk clock MCFG_CPU_PROGRAM_MAP(mz6500_map) @@ -177,5 +177,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, mz6500, 0, 0, mz6500, mz6500, driver_device, 0, "Sharp", "MZ-6500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, mz6500, 0, 0, mz6500, mz6500, mz6500_state, 0, "Sharp", "MZ-6500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/mz700.cpp b/src/mame/drivers/mz700.cpp index 93125aac2df..76b52872d82 100644 --- a/src/mame/drivers/mz700.cpp +++ b/src/mame/drivers/mz700.cpp @@ -368,7 +368,7 @@ GFXDECODE_END MACHINE DRIVERS ***************************************************************************/ -static MACHINE_CONFIG_START( mz700, mz_state ) +static MACHINE_CONFIG_START( mz700 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_17_73447MHz/5) MCFG_CPU_PROGRAM_MAP(mz700_mem) @@ -518,8 +518,8 @@ ROM_END GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1982, mz700, 0, 0, mz700, mz700, mz_state, mz700, "Sharp", "MZ-700", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, mz700, 0, 0, mz700, mz700, mz_state, mz700, "Sharp", "MZ-700", 0 ) COMP( 1982, mz700j, mz700, 0, mz700, mz700, mz_state, mz700, "Sharp", "MZ-700 (Japan)", 0 ) -COMP( 1984, mz800, 0, 0, mz800, mz800, mz_state, mz800, "Sharp", "MZ-800", MACHINE_NOT_WORKING ) -COMP( 1984, mz1500, 0, 0, mz800, mz800, mz_state, mz800, "Sharp", "MZ-1500", MACHINE_NOT_WORKING ) // Japanese version of the MZ-800 +COMP( 1984, mz800, 0, 0, mz800, mz800, mz_state, mz800, "Sharp", "MZ-800", MACHINE_NOT_WORKING ) +COMP( 1984, mz1500, 0, 0, mz800, mz800, mz_state, mz800, "Sharp", "MZ-1500", MACHINE_NOT_WORKING ) // Japanese version of the MZ-800 diff --git a/src/mame/drivers/mz80.cpp b/src/mame/drivers/mz80.cpp index fda11575bd4..1d40616b6c0 100644 --- a/src/mame/drivers/mz80.cpp +++ b/src/mame/drivers/mz80.cpp @@ -274,7 +274,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mz80_state::ne555_tempo_callback) m_mz80k_tempo_strobe ^= 1; } -static MACHINE_CONFIG_START( mz80k, mz80_state ) +static MACHINE_CONFIG_START( mz80k ) /* basic machine hardware */ /* main CPU */ @@ -371,7 +371,7 @@ ROM_START( mz80a ) ROM_LOAD( "mz80acg.rom", 0x0000, 0x0800, CRC(a87c2e2b) SHA1(e8aefbdb48a63e5f96692af868c353ca7e1bfcd2) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS COMP( 1979, mz80kj, 0, 0, mz80kj, mz80k, mz80_state, mz80k, "Sharp", "MZ-80K (Japanese)", 0 ) -COMP( 1979, mz80k, mz80kj, 0, mz80k, mz80k, mz80_state, mz80k, "Sharp", "MZ-80K", 0 ) -COMP( 1982, mz80a, 0, 0, mz80a, mz80a, mz80_state, mz80k, "Sharp", "MZ-80A", 0 ) +COMP( 1979, mz80k, mz80kj, 0, mz80k, mz80k, mz80_state, mz80k, "Sharp", "MZ-80K", 0 ) +COMP( 1982, mz80a, 0, 0, mz80a, mz80a, mz80_state, mz80k, "Sharp", "MZ-80A", 0 ) diff --git a/src/mame/drivers/mzr8105.cpp b/src/mame/drivers/mzr8105.cpp index 89c1d624906..3dca7921be5 100644 --- a/src/mame/drivers/mzr8105.cpp +++ b/src/mame/drivers/mzr8105.cpp @@ -203,7 +203,7 @@ SLOT_INTERFACE_END /* * Machine configuration */ -MACHINE_CONFIG_START (mzr8105, mzr8105_state) +MACHINE_CONFIG_START (mzr8105) MCFG_CPU_ADD ("maincpu", M68000, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP (mzr8105_mem) MCFG_VME_DEVICE_ADD("vme") @@ -227,5 +227,5 @@ ROM_START (mzr8105) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP (1987, mzr8105, 0, 0, mzr8105, mzr8105, driver_device, 0, "Mizar Inc", "Mizar VME8105", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP (1987, mzr8105, 0, 0, mzr8105, mzr8105, mzr8105_state, 0, "Mizar Inc", "Mizar VME8105", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER ) diff --git a/src/mame/drivers/n64.cpp b/src/mame/drivers/n64.cpp index 7b368074370..3aac0f61e71 100644 --- a/src/mame/drivers/n64.cpp +++ b/src/mame/drivers/n64.cpp @@ -418,7 +418,7 @@ INTERRUPT_GEN_MEMBER(n64_mess_state::n64_reset_poll) periphs->poll_reset_button((ioport("RESET")->read() & 1) ? true : false); } -static MACHINE_CONFIG_START( n64, n64_mess_state ) +static MACHINE_CONFIG_START( n64 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", VR4300BE, 93750000) @@ -450,7 +450,7 @@ static MACHINE_CONFIG_START( n64, n64_mess_state ) //MCFG_SCREEN_SIZE(640, 525) //MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479) MCFG_SCREEN_UPDATE_DRIVER(n64_state, screen_update_n64) - MCFG_SCREEN_VBLANK_DRIVER(n64_state, screen_eof_n64) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(n64_state, screen_vblank_n64)) MCFG_PALETTE_ADD("palette", 0x1000) @@ -527,5 +527,5 @@ ROM_START( n64dd ) ROM_LOAD( "normslp.rom", 0x00, 0x80, CRC(4f2ae525) SHA1(eab43f8cc52c8551d9cff6fced18ef80eaba6f05) ) ROM_END -CONS(1996, n64, 0, 0, n64, n64, driver_device, 0, "Nintendo", "Nintendo 64", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) -CONS(1996, n64dd, n64, 0, n64dd, n64, driver_device, 0, "Nintendo", "Nintendo 64DD", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) +CONS(1996, n64, 0, 0, n64, n64, n64_mess_state, 0, "Nintendo", "Nintendo 64", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) +CONS(1996, n64dd, n64, 0, n64dd, n64, n64_mess_state, 0, "Nintendo", "Nintendo 64DD", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/n8080.cpp b/src/mame/drivers/n8080.cpp index bc0dc251b02..b1ec73a8c5c 100644 --- a/src/mame/drivers/n8080.cpp +++ b/src/mame/drivers/n8080.cpp @@ -453,7 +453,7 @@ WRITE_LINE_MEMBER(n8080_state::n8080_inte_callback) WRITE8_MEMBER(n8080_state::n8080_status_callback) { - if (data & I8085_STATUS_INTA) + if (data & i8080_cpu_device::STATUS_INTA) { /* interrupt acknowledge */ m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); @@ -500,7 +500,7 @@ MACHINE_RESET_MEMBER(n8080_state,helifire) } -static MACHINE_CONFIG_START( spacefev, n8080_state ) +static MACHINE_CONFIG_START( spacefev ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, MASTER_CLOCK / 10) @@ -531,7 +531,7 @@ static MACHINE_CONFIG_START( spacefev, n8080_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sheriff, n8080_state ) +static MACHINE_CONFIG_START( sheriff ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, MASTER_CLOCK / 10) @@ -574,7 +574,7 @@ static MACHINE_CONFIG_DERIVED( westgun2, sheriff ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( helifire, n8080_state ) +static MACHINE_CONFIG_START( helifire ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, MASTER_CLOCK / 10) @@ -591,7 +591,7 @@ static MACHINE_CONFIG_START( helifire, n8080_state ) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 239) MCFG_SCREEN_UPDATE_DRIVER(n8080_state, screen_update_helifire) - MCFG_SCREEN_VBLANK_DRIVER(n8080_state, screen_eof_helifire) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(n8080_state, screen_vblank_helifire)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 8 + 0x400) @@ -932,15 +932,15 @@ ROM_START( helifirea ) ROM_END -GAME( 1979, spacefev, 0, spacefev, spacefev, driver_device, 0, ROT270, "Nintendo", "Space Fever (New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, spacefevo, spacefev, spacefev, spacefev, driver_device, 0, ROT270, "Nintendo", "Space Fever (Old Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, driver_device, 0, ROT270, "Nintendo", "Space Fever (Older Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, highsplt, 0, spacefev, highsplt, driver_device, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", MACHINE_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer -GAME( 1979, highsplta, highsplt, spacefev, highsplt, driver_device, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", MACHINE_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer -GAME( 1979, highspltb, highsplt, spacefev, highsplt, driver_device, 0, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", MACHINE_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer -GAME( 1979, spacelnc, 0, spacefev, spacelnc, driver_device, 0, ROT270, "Nintendo", "Space Launcher", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, sheriff, 0, sheriff, sheriff, driver_device, 0, ROT270, "Nintendo", "Sheriff", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, bandido, sheriff, sheriff, bandido, driver_device, 0, ROT270, "Nintendo (Exidy license)", "Bandido", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, westgun2, sheriff, westgun2, westgun2, driver_device, 0, ROT270, "Nintendo (Taito Corporation license)", "Western Gun Part II", MACHINE_SUPPORTS_SAVE ) // official Taito PCBs, but title/copyright not shown -GAME( 1980, helifire, 0, helifire, helifire, driver_device, 0, ROT270, "Nintendo", "HeliFire (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, helifirea, helifire, helifire, helifire, driver_device, 0, ROT270, "Nintendo", "HeliFire (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, spacefev, 0, spacefev, spacefev, n8080_state, 0, ROT270, "Nintendo", "Space Fever (New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, spacefevo, spacefev, spacefev, spacefev, n8080_state, 0, ROT270, "Nintendo", "Space Fever (Old Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, n8080_state, 0, ROT270, "Nintendo", "Space Fever (Older Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, highsplt, 0, spacefev, highsplt, n8080_state, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", MACHINE_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer +GAME( 1979, highsplta, highsplt, spacefev, highsplt, n8080_state, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", MACHINE_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer +GAME( 1979, highspltb, highsplt, spacefev, highsplt, n8080_state, 0, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", MACHINE_SUPPORTS_SAVE ) // known as "SF-Hisplitter" on its flyer +GAME( 1979, spacelnc, 0, spacefev, spacelnc, n8080_state, 0, ROT270, "Nintendo", "Space Launcher", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, sheriff, 0, sheriff, sheriff, n8080_state, 0, ROT270, "Nintendo", "Sheriff", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, bandido, sheriff, sheriff, bandido, n8080_state, 0, ROT270, "Nintendo (Exidy license)", "Bandido", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, westgun2, sheriff, westgun2, westgun2, n8080_state, 0, ROT270, "Nintendo (Taito Corporation license)", "Western Gun Part II", MACHINE_SUPPORTS_SAVE ) // official Taito PCBs, but title/copyright not shown +GAME( 1980, helifire, 0, helifire, helifire, n8080_state, 0, ROT270, "Nintendo", "HeliFire (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, helifirea, helifire, helifire, helifire, n8080_state, 0, ROT270, "Nintendo", "HeliFire (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nakajies.cpp b/src/mame/drivers/nakajies.cpp index 14ac132d6dc..73d189125de 100644 --- a/src/mame/drivers/nakajies.cpp +++ b/src/mame/drivers/nakajies.cpp @@ -736,7 +736,7 @@ static GFXDECODE_START( drwrt400 ) GFXDECODE_ENTRY( "bios", 0x580b6, nakajies_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( nakajies210, nakajies_state ) +static MACHINE_CONFIG_START( nakajies210 ) MCFG_CPU_ADD( "v20hl", V20, X301 / 2 ) MCFG_CPU_PROGRAM_MAP( nakajies_map) MCFG_CPU_IO_MAP( nakajies_io_map) @@ -827,11 +827,11 @@ ROM_START( es210_es ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 199?, wales210, 0, 0, nakajies210, nakajies, driver_device, 0, "Walther", "ES-210", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) /* German, 128KB RAM */ -COMP( 199?, dator3k, wales210, 0, dator3k, nakajies, driver_device, 0, "Dator", "Dator 3000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) /* Spanish, 128KB RAM */ -COMP( 199?, es210_es, wales210, 0, nakajies210, nakajies, driver_device, 0, "Nakajima","ES-210 (Spain)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) /* Spanish, 128KB RAM */ -COMP( 199?, drwrt100, wales210, 0, nakajies220, nakajies, driver_device, 0, "NTS", "DreamWriter T100", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) /* English, 128KB RAM */ -COMP( 1996, drwrt400, wales210, 0, nakajies220, nakajies, driver_device, 0, "NTS", "DreamWriter T400", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) /* English, 256KB RAM */ -COMP( 199?, drwrt450, wales210, 0, nakajies220, nakajies, driver_device, 0, "NTS", "DreamWriter 450", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) /* English, 128KB RAM */ -COMP( 199?, drwrt200, wales210, 0, nakajies250, nakajies, driver_device, 0, "NTS", "DreamWriter T200", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) /* English, 256KB? RAM */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 199?, wales210, 0, 0, nakajies210, nakajies, nakajies_state, 0, "Walther", "ES-210", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // German, 128KB RAM +COMP( 199?, dator3k, wales210, 0, dator3k, nakajies, nakajies_state, 0, "Dator", "Dator 3000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Spanish, 128KB RAM +COMP( 199?, es210_es, wales210, 0, nakajies210, nakajies, nakajies_state, 0, "Nakajima", "ES-210 (Spain)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Spanish, 128KB RAM +COMP( 199?, drwrt100, wales210, 0, nakajies220, nakajies, nakajies_state, 0, "NTS", "DreamWriter T100", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // English, 128KB RAM +COMP( 1996, drwrt400, wales210, 0, nakajies220, nakajies, nakajies_state, 0, "NTS", "DreamWriter T400", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // English, 256KB RAM +COMP( 199?, drwrt450, wales210, 0, nakajies220, nakajies, nakajies_state, 0, "NTS", "DreamWriter 450", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // English, 128KB RAM +COMP( 199?, drwrt200, wales210, 0, nakajies250, nakajies, nakajies_state, 0, "NTS", "DreamWriter T200", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // English, 256KB? RAM diff --git a/src/mame/drivers/namcofl.cpp b/src/mame/drivers/namcofl.cpp index c42cae2be32..38fd137d8fd 100644 --- a/src/mame/drivers/namcofl.cpp +++ b/src/mame/drivers/namcofl.cpp @@ -159,7 +159,7 @@ OSC3: 48.384MHz #include "emu.h" #include "includes/namcofl.h" -#include "includes/namcoic.h" +#include "machine/namcoic.h" #include "cpu/i960/i960.h" #include "sound/c352.h" @@ -191,13 +191,13 @@ WRITE32_MEMBER(namcofl_state::namcofl_sysreg_w) { if (data == 0) // RAM at 00000000, ROM at 10000000 { - membank("bank1")->set_base(m_workram.get()); - membank("bank2")->set_base(memregion("maincpu")->base() ); + membank("bank1")->set_entry(1); + membank("bank2")->set_entry(1); } else // ROM at 00000000, RAM at 10000000 { - membank("bank1")->set_base(memregion("maincpu")->base() ); - membank("bank2")->set_base(m_workram.get()); + membank("bank1")->set_entry(0); + membank("bank2")->set_entry(0); } } } @@ -214,26 +214,13 @@ WRITE8_MEMBER(namcofl_state::namcofl_c116_w) } } -READ32_MEMBER(namcofl_state::namcofl_share_r) -{ - return (m_shareram[offset*2+1] << 16) | m_shareram[offset*2]; -} - -WRITE32_MEMBER(namcofl_state::namcofl_share_w) -{ - COMBINE_DATA(m_shareram+offset*2); - data >>= 16; - mem_mask >>= 16; - COMBINE_DATA(m_shareram+offset*2+1); -} - static ADDRESS_MAP_START( namcofl_mem, AS_PROGRAM, 32, namcofl_state ) AM_RANGE(0x00000000, 0x000fffff) AM_RAMBANK("bank1") AM_RANGE(0x10000000, 0x100fffff) AM_RAMBANK("bank2") AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_REGION("data", 0) AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_SHARE("nvram") /* nvram */ AM_RANGE(0x30100000, 0x30100003) AM_WRITE(namcofl_spritebank_w) - AM_RANGE(0x30284000, 0x3028bfff) AM_READWRITE(namcofl_share_r, namcofl_share_w) + AM_RANGE(0x30284000, 0x3028bfff) AM_RAM AM_SHARE("shareram") AM_RANGE(0x30300000, 0x30303fff) AM_RAM /* COMRAM */ AM_RANGE(0x30380000, 0x303800ff) AM_READ(fl_network_r ) /* network registers */ AM_RANGE(0x30400000, 0x30407fff) AM_DEVREAD8("c116", namco_c116_device,read,0xffffffff) AM_WRITE8(namcofl_c116_w,0xffffffff) @@ -528,14 +515,14 @@ GFXDECODE_END TIMER_CALLBACK_MEMBER(namcofl_state::network_interrupt_callback) { m_maincpu->set_input_line(I960_IRQ0, ASSERT_LINE); - machine().scheduler().timer_set(m_screen->frame_period(), timer_expired_delegate(FUNC(namcofl_state::network_interrupt_callback),this)); + m_network_interrupt_timer->adjust(m_screen->frame_period()); } TIMER_CALLBACK_MEMBER(namcofl_state::vblank_interrupt_callback) { m_maincpu->set_input_line(I960_IRQ2, ASSERT_LINE); - machine().scheduler().timer_set(m_screen->frame_period(), timer_expired_delegate(FUNC(namcofl_state::vblank_interrupt_callback),this)); + m_vblank_interrupt_timer->adjust(m_screen->frame_period()); } @@ -565,22 +552,32 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcofl_state::mcu_adc_cb) MACHINE_START_MEMBER(namcofl_state,namcofl) { m_raster_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcofl_state::raster_interrupt_callback),this)); + m_network_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcofl_state::network_interrupt_callback),this)); + m_vblank_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcofl_state::vblank_interrupt_callback),this)); + + membank("bank1")->configure_entry(0, memregion("maincpu")->base()); + membank("bank1")->configure_entry(1, m_workram.get()); + membank("bank1")->set_entry(0); + + membank("bank2")->configure_entry(0, m_workram.get()); + membank("bank2")->configure_entry(1, memregion("maincpu")->base()); + membank("bank2")->set_entry(0); } MACHINE_RESET_MEMBER(namcofl_state,namcofl) { - machine().scheduler().timer_set(m_screen->time_until_pos(m_screen->visible_area().max_y + 3), timer_expired_delegate(FUNC(namcofl_state::network_interrupt_callback),this)); - machine().scheduler().timer_set(m_screen->time_until_pos(m_screen->visible_area().max_y + 1), timer_expired_delegate(FUNC(namcofl_state::vblank_interrupt_callback),this)); - - membank("bank1")->set_base(memregion("maincpu")->base() ); - membank("bank2")->set_base(m_workram.get() ); + m_network_interrupt_timer->adjust(m_screen->time_until_pos(m_screen->visible_area().max_y + 3)); + m_vblank_interrupt_timer->adjust(m_screen->time_until_pos(m_screen->visible_area().max_y + 1)); memset(m_workram.get(), 0x00, 0x100000); + + membank("bank1")->set_entry(0); + membank("bank2")->set_entry(0); } -static MACHINE_CONFIG_START( namcofl, namcofl_state ) +static MACHINE_CONFIG_START( namcofl ) MCFG_CPU_ADD("maincpu", I960, 20000000) // i80960KA-20 == 20 MHz part MCFG_CPU_PROGRAM_MAP(namcofl_mem) @@ -794,9 +791,10 @@ ROM_END void namcofl_state::common_init() { m_workram = std::make_unique(0x100000/4); + save_pointer(NAME(m_workram.get()), 0x100000/4), - membank("bank1")->set_base(memregion("maincpu")->base() ); - membank("bank2")->set_base(m_workram.get()); + save_item(NAME(m_mcu_port6)); + save_item(NAME(m_sprbank)); } DRIVER_INIT_MEMBER(namcofl_state,speedrcr) @@ -811,7 +809,7 @@ DRIVER_INIT_MEMBER(namcofl_state,finalapr) m_gametype = NAMCOFL_FINAL_LAP_R; } -GAME ( 1995, speedrcr, 0, namcofl, speedrcr, namcofl_state, speedrcr, ROT0, "Namco", "Speed Racer", MACHINE_IMPERFECT_GRAPHICS ) -GAMEL( 1995, finalapr, 0, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Rev. B)", 0, layout_namcofl ) -GAMEL( 1995, finalapro, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R", 0, layout_namcofl ) -GAMEL( 1995, finalaprj, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Japan Rev. C)", 0, layout_namcofl ) +GAME ( 1995, speedrcr, 0, namcofl, speedrcr, namcofl_state, speedrcr, ROT0, "Namco", "Speed Racer", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAMEL( 1995, finalapr, 0, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Rev. B)", MACHINE_SUPPORTS_SAVE, layout_namcofl ) +GAMEL( 1995, finalapro, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R", MACHINE_SUPPORTS_SAVE, layout_namcofl ) +GAMEL( 1995, finalaprj, finalapr, namcofl, finalapr, namcofl_state, finalapr, ROT0, "Namco", "Final Lap R (Japan Rev. C)", MACHINE_SUPPORTS_SAVE, layout_namcofl ) diff --git a/src/mame/drivers/namcona1.cpp b/src/mame/drivers/namcona1.cpp index 93dd8adc6e5..87136084eff 100644 --- a/src/mame/drivers/namcona1.cpp +++ b/src/mame/drivers/namcona1.cpp @@ -930,7 +930,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcona1_state::interrupt) } /* cropped at sides */ -static MACHINE_CONFIG_START( namcona1, namcona1_state ) +static MACHINE_CONFIG_START( namcona1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/4) @@ -962,7 +962,7 @@ static MACHINE_CONFIG_START( namcona1, namcona1_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", 44100) - MCFG_C140_BANK_TYPE(C140_TYPE_ASIC219) + MCFG_C140_BANK_TYPE(ASIC219) MCFG_SOUND_ROUTE(0, "rspeaker", 1.00) MCFG_SOUND_ROUTE(1, "lspeaker", 1.00) MACHINE_CONFIG_END @@ -1315,25 +1315,25 @@ ROM_START( xday2 ) ROM_END // NA-1 (C69 MCU) -GAME( 1992, bkrtmaq, 0, namcona1w, namcona1_quiz, namcona1_state,bkrtmaq, ROT0, "Namco", "Bakuretsu Quiz Ma-Q Dai Bouken (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, cgangpzl, 0, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, cgangpzlj, cgangpzl, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, exvania, 0, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, exvaniaj, exvania, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fghtatck, 0, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "Fighter & Attacker (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fa, fghtatck, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "F/A (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, swcourt, 0, namcona1w, namcona1_joy, namcona1_state, swcourt, ROT0, "Namco", "Super World Court (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, swcourtj, swcourt, namcona1w, namcona1_joy, namcona1_state, swcourt, ROT0, "Namco", "Super World Court (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, emeraldaj, emeralda, namcona1w, namcona1_joy, namcona1_state, emeraldj, ROT0, "Namco", "Emeraldia (Japan Version B)", MACHINE_SUPPORTS_SAVE ) /* Parent is below on NA-2 Hardware */ -GAME( 1993, emeraldaja, emeralda, namcona1w, namcona1_joy, namcona1_state, emeraldj, ROT0, "Namco", "Emeraldia (Japan)", MACHINE_SUPPORTS_SAVE ) /* Parent is below on NA-2 Hardware */ -GAME( 1993, tinklpit, 0, namcona1w, namcona1_joy, namcona1_state, tinklpit, ROT0, "Namco", "Tinkle Pit (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, bkrtmaq, 0, namcona1w, namcona1_quiz, namcona1_state, bkrtmaq, ROT0, "Namco", "Bakuretsu Quiz Ma-Q Dai Bouken (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, cgangpzl, 0, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, cgangpzlj, cgangpzl, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, exvania, 0, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, exvaniaj, exvania, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fghtatck, 0, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "Fighter & Attacker (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fa, fghtatck, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "F/A (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, swcourt, 0, namcona1w, namcona1_joy, namcona1_state, swcourt, ROT0, "Namco", "Super World Court (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, swcourtj, swcourt, namcona1w, namcona1_joy, namcona1_state, swcourt, ROT0, "Namco", "Super World Court (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, emeraldaj, emeralda, namcona1w, namcona1_joy, namcona1_state, emeraldj, ROT0, "Namco", "Emeraldia (Japan Version B)", MACHINE_SUPPORTS_SAVE ) /* Parent is below on NA-2 Hardware */ +GAME( 1993, emeraldaja, emeralda, namcona1w, namcona1_joy, namcona1_state, emeraldj, ROT0, "Namco", "Emeraldia (Japan)", MACHINE_SUPPORTS_SAVE ) /* Parent is below on NA-2 Hardware */ +GAME( 1993, tinklpit, 0, namcona1w, namcona1_joy, namcona1_state, tinklpit, ROT0, "Namco", "Tinkle Pit (Japan)", MACHINE_SUPPORTS_SAVE ) // NA-2 (C70 MCU) -GAME( 1992, knckhead, 0, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, knckheadj, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, knckheadjp, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan, Prototype?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, emeralda, 0, namcona2w, namcona1_joy, namcona1_state, emeralda, ROT0, "Namco", "Emeraldia (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, numanath, 0, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, numanathj, numanath, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, quiztou, 0, namcona2, namcona1_quiz, namcona1_state,quiztou, ROT0, "Namco", "Nettou! Gekitou! Quiztou!! (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, xday2, 0, namcona2, namcona1_joy, namcona1_state, xday2, ROT0, "Namco", "X-Day 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, knckhead, 0, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, knckheadj, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, knckheadjp, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan, Prototype?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, emeralda, 0, namcona2w, namcona1_joy, namcona1_state, emeralda, ROT0, "Namco", "Emeraldia (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, numanath, 0, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, numanathj, numanath, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, quiztou, 0, namcona2, namcona1_quiz, namcona1_state, quiztou, ROT0, "Namco", "Nettou! Gekitou! Quiztou!! (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, xday2, 0, namcona2, namcona1_joy, namcona1_state, xday2, ROT0, "Namco", "X-Day 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/namconb1.cpp b/src/mame/drivers/namconb1.cpp index 1f5e2ff2aba..73fa99afb3c 100644 --- a/src/mame/drivers/namconb1.cpp +++ b/src/mame/drivers/namconb1.cpp @@ -272,7 +272,7 @@ GFX: Custom 145 ( 80 pin PQFP) */ #include "emu.h" #include "includes/namconb1.h" -#include "includes/namcoic.h" +#include "machine/namcoic.h" #include "cpu/m68000/m68000.h" #include "machine/namcomcu.h" @@ -883,74 +883,6 @@ static INPUT_PORTS_START( gunbulet ) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(4) PORT_PLAYER(2) INPUT_PORTS_END -static INPUT_PORTS_START( outfxies ) - PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) - - PORT_START("P2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - - PORT_START("MISC") - PORT_DIPNAME( 0x01, 0x01, "Freeze Screen" ) PORT_DIPLOCATION("SW1: 2") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) -INPUT_PORTS_END - -static INPUT_PORTS_START( nbsports ) - PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) - - PORT_START("P2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - - PORT_START("MISC") - PORT_DIPNAME( 0x01, 0x01, "Freeze Screen" ) PORT_DIPLOCATION("SW1: 2") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) -INPUT_PORTS_END - static INPUT_PORTS_START( namconb1 ) PORT_START("P1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY @@ -997,10 +929,10 @@ static INPUT_PORTS_START( namconb1 ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN4 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN4 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_DIPNAME( 0x40, 0x40, "Test switch" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1132,7 +1064,7 @@ MACHINE_RESET_MEMBER(namconb1_state, namconb) /***************************************************************/ -static MACHINE_CONFIG_START( namconb1, namconb1_state ) +static MACHINE_CONFIG_START( namconb1 ) MCFG_CPU_ADD("maincpu", M68EC020, MASTER_CLOCK/2) MCFG_CPU_PROGRAM_MAP(namconb1_am) @@ -1174,7 +1106,7 @@ static MACHINE_CONFIG_START( namconb1, namconb1_state ) //MCFG_SOUND_ROUTE(3, "rspeaker", 1.00) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( namconb2, namconb1_state ) +static MACHINE_CONFIG_START( namconb2 ) MCFG_CPU_ADD("maincpu", M68EC020, MASTER_CLOCK/2) MCFG_CPU_PROGRAM_MAP(namconb2_am) @@ -1957,7 +1889,53 @@ ROM_START( outfxiesj ) ROM_END -ROM_START( machbrkr ) +ROM_START( machbrkr ) /* Defaults to Asia / 4 Player cabinet */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */ + ROM_LOAD32_WORD( "mb2_mprl.11c", 0x00002, 0x80000, CRC(81e2c566) SHA1(e4553938114581ccdedc09309c646144300039ed) ) + ROM_LOAD32_WORD( "mb2_mpru.11d", 0x00000, 0x80000, CRC(e8ccec89) SHA1(495be58a18e9122c0fa44bac409ef14b588387e7) ) + + ROM_REGION16_LE( 0x80000, "c75data", 0 ) /* sound data */ + ROM_LOAD( "mb1_spr0.5b", 0, 0x80000, CRC(d10f6272) SHA1(cb99e06e050dbf86998ea51ef2ca130b2acfb2f6) ) + + ROM_REGION( 0x1000000, "c352", 0 ) + ROM_LOAD( "mb1_voi0.6n", 0x000000, 0x200000, CRC(d363ca3b) SHA1(71650b66ca3eb00f6ad7d3f1df0f37210b77b942) ) + ROM_RELOAD( 0x400000, 0x200000) + ROM_LOAD( "mb1_voi1.6p", 0x800000, 0x200000, CRC(7e1c2603) SHA1(533098a54fb897931f1d75be9e69a5c047e4c446) ) + ROM_RELOAD( 0xc00000, 0x200000) + + ROM_REGION( 0x200000, NAMCONB1_TILEMASKREGION, 0 ) + ROM_LOAD( "mb1_shas.12s", 0, 0x100000, CRC(c51c614b) SHA1(519ecad2e4543c05ec35a727f4c875ab006291af) ) + + ROM_REGION( 0x200000, NAMCONB1_ROTMASKREGION, 0 ) + ROM_LOAD( "mb1_shar.18s", 0, 0x080000, CRC(d9329b10) SHA1(149c8804c07350f47af36bc7902371f1dfbed272) ) + + ROM_REGION( 0x2000000, NAMCONB1_SPRITEGFXREGION, 0 ) + ROM_LOAD16_BYTE( "mb1obj0l.4c", 0x0000001, 0x200000, CRC(056e6b1c) SHA1(44e49de80c925c8fbe04bf9328a77a50a305a5a7) ) + ROM_LOAD16_BYTE( "mb1obj0u.8c", 0x0000000, 0x200000, CRC(e19b1714) SHA1(ff43bf3c8e8698934c4057c7b4c72db73929e2af) ) + ROM_LOAD16_BYTE( "mb1obj1l.4b", 0x0400001, 0x200000, CRC(af69f7f1) SHA1(414544ec1a9aaffb751beaf63d937ce78d0cf9c6) ) + ROM_LOAD16_BYTE( "mb1obj1u.8b", 0x0400000, 0x200000, CRC(e8ff9082) SHA1(a8c7feb33f6243f1f3bda00deffa695ac2b19171) ) + ROM_LOAD16_BYTE( "mb1obj2l.4a", 0x0800001, 0x200000, CRC(3a5c7379) SHA1(ffe9a229eb04a894e5f3bb8ac2fc4617b5413ac3) ) + ROM_LOAD16_BYTE( "mb1obj2u.8a", 0x0800000, 0x200000, CRC(b59cf5e0) SHA1(eee7511f117a4c1a24e4187e3f30e4d66f914a81) ) + ROM_LOAD16_BYTE( "mb1obj3l.6c", 0x0c00001, 0x200000, CRC(9a765d58) SHA1(2e9ea0f76f80383fcf093e947e1fe161743e33fb) ) + ROM_LOAD16_BYTE( "mb1obj3u.9c", 0x0c00000, 0x200000, CRC(5329c693) SHA1(955b3b8b9813826347a1211f71fa0a294b759ccd) ) + ROM_LOAD16_BYTE( "mb1obj4l.6b", 0x1000001, 0x200000, CRC(a650b05e) SHA1(b247699433c7bf4b6ae990fc06255cfd48a248dd) ) + ROM_LOAD16_BYTE( "mb1obj4u.9b", 0x1000000, 0x200000, CRC(6d0c37e9) SHA1(3a3feb74b890e0a933dcc791e5eee1fb4bdcbb69) ) + + ROM_REGION( 0x400000, NAMCONB1_ROTGFXREGION, 0 ) + ROM_LOAD( "mb1_rot0.3d", 0x000000, 0x200000, CRC(bc353630) SHA1(2bbddda632298899716394ddcfe51412576ca74a) ) + ROM_LOAD( "mb1_rot1.3c", 0x200000, 0x200000, CRC(cf7688cb) SHA1(29a040ce2c4e3bf671cff1a7a1ade06103db236a) ) + + ROM_REGION( 0x600000, NAMCONB1_TILEGFXREGION, 0 ) + ROM_LOAD( "mb1_scr0.1d", 0x000000, 0x200000, CRC(c678d5f3) SHA1(98d1523bef50d444be9485c4e7f6932cccbea191) ) + ROM_LOAD( "mb1_scr1.1c", 0x200000, 0x200000, CRC(fb2b1939) SHA1(bf9d7b93205e7012aa86693f3d2ba8f4d729bc97) ) + ROM_LOAD( "mb1_scr2.1b", 0x400000, 0x200000, CRC(0e6097a5) SHA1(b6c64b3e34ba913138b6b7c3d99d2be4f3ceda08) ) + + ROM_REGION32_BE( 0x100000, "data", 0 ) + ROM_LOAD16_WORD_SWAP( "mb1_dat0.20a", 0x00000, 0x80000, CRC(fb2e3cd1) SHA1(019b1d645a07619036522f42e0b9a537f39b6b93) ) +ROM_END + + +ROM_START( machbrkrj ) ROM_REGION( 0x100000, "maincpu", 0 ) /* main program */ ROM_LOAD32_WORD( "mb1_mprl.11c", 0x00002, 0x80000, CRC(86cf0644) SHA1(07eeadda1d94c9be2f882edb6f2eb0b98292e500) ) ROM_LOAD32_WORD( "mb1_mpru.11d", 0x00000, 0x80000, CRC(fb1ff916) SHA1(e0ba96c1f26a60f87d8050e582e164d91e132183) ) @@ -1983,7 +1961,7 @@ ROM_START( machbrkr ) ROM_LOAD16_BYTE( "mb1obj1l.4b", 0x0400001, 0x200000, CRC(af69f7f1) SHA1(414544ec1a9aaffb751beaf63d937ce78d0cf9c6) ) ROM_LOAD16_BYTE( "mb1obj1u.8b", 0x0400000, 0x200000, CRC(e8ff9082) SHA1(a8c7feb33f6243f1f3bda00deffa695ac2b19171) ) ROM_LOAD16_BYTE( "mb1obj2l.4a", 0x0800001, 0x200000, CRC(3a5c7379) SHA1(ffe9a229eb04a894e5f3bb8ac2fc4617b5413ac3) ) - ROM_LOAD16_BYTE( "mb1obj2u.8b", 0x0800000, 0x200000, CRC(b59cf5e0) SHA1(eee7511f117a4c1a24e4187e3f30e4d66f914a81) ) + ROM_LOAD16_BYTE( "mb1obj2u.8a", 0x0800000, 0x200000, CRC(b59cf5e0) SHA1(eee7511f117a4c1a24e4187e3f30e4d66f914a81) ) ROM_LOAD16_BYTE( "mb1obj3l.6c", 0x0c00001, 0x200000, CRC(9a765d58) SHA1(2e9ea0f76f80383fcf093e947e1fe161743e33fb) ) ROM_LOAD16_BYTE( "mb1obj3u.9c", 0x0c00000, 0x200000, CRC(5329c693) SHA1(955b3b8b9813826347a1211f71fa0a294b759ccd) ) ROM_LOAD16_BYTE( "mb1obj4l.6b", 0x1000001, 0x200000, CRC(a650b05e) SHA1(b247699433c7bf4b6ae990fc06255cfd48a248dd) ) @@ -2011,15 +1989,16 @@ GAME( 1994, ptblank, 0, namconb1, gunbulet, namconb1_state, gunbulet, RO GAME( 1994, ptblanka, ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Point Blank (World, GN2 Rev B, set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, gunbuletj,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (Japan, GN1)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, gunbuletw,ptblank, namconb1, gunbulet, namconb1_state, gunbulet, ROT0, "Namco", "Gun Bullet (World, GN3 Rev B)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, gslugrsj, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, gslgr94u, 0, namconb1, nbsports, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers '94", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, gslgr94j, gslgr94u, namconb1, nbsports, namconb1_state, gslgr94j, ROT0, "Namco", "Great Sluggers '94 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sws95, 0, namconb1, nbsports, namconb1_state, sws95, ROT0, "Namco", "Super World Stadium '95 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sws96, 0, namconb1, nbsports, namconb1_state, sws96, ROT0, "Namco", "Super World Stadium '96 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, sws97, 0, namconb1, nbsports, namconb1_state, sws97, ROT0, "Namco", "Super World Stadium '97 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, gslugrsj, 0, namconb1, namconb1, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, gslgr94u, 0, namconb1, namconb1, namconb1_state, gslgr94u, ROT0, "Namco", "Great Sluggers '94", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, gslgr94j, gslgr94u, namconb1, namconb1, namconb1_state, gslgr94j, ROT0, "Namco", "Great Sluggers '94 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sws95, 0, namconb1, namconb1, namconb1_state, sws95, ROT0, "Namco", "Super World Stadium '95 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sws96, 0, namconb1, namconb1, namconb1_state, sws96, ROT0, "Namco", "Super World Stadium '96 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, sws97, 0, namconb1, namconb1, namconb1_state, sws97, ROT0, "Namco", "Super World Stadium '97 (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, vshoot, 0, namconb1, namconb1, namconb1_state, vshoot, ROT0, "Namco", "J-League Soccer V-Shoot (Japan)", MACHINE_SUPPORTS_SAVE ) /* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS */ -GAME( 1994, outfxies, 0, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (World, OU2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, outfxiesj,outfxies, namconb2, outfxies, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (Japan, OU1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, machbrkr, 0, namconb2, namconb1, namconb1_state, machbrkr, ROT0, "Namco", "Mach Breakers - Numan Athletics 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, outfxies, 0, namconb2, namconb1, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (World, OU2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, outfxiesj,outfxies, namconb2, namconb1, namconb1_state, outfxies, ROT0, "Namco", "The Outfoxies (Japan, OU1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, machbrkr, 0, namconb2, namconb1, namconb1_state, machbrkr, ROT0, "Namco", "Mach Breakers (World, MB2)", MACHINE_SUPPORTS_SAVE ) /* Title screen doesn't show subtitle "Numan Athletics 2" */ +GAME( 1995, machbrkrj,machbrkr, namconb2, namconb1, namconb1_state, machbrkr, ROT0, "Namco", "Mach Breakers - Numan Athletics 2 (Japan, MB1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/namcond1.cpp b/src/mame/drivers/namcond1.cpp index 2123d28d516..216bef55771 100644 --- a/src/mame/drivers/namcond1.cpp +++ b/src/mame/drivers/namcond1.cpp @@ -176,7 +176,7 @@ INTERRUPT_GEN_MEMBER(namcond1_state::mcu_interrupt) - The level 1 interrupt to the 68k has been measured at 60Hz. *******************************************/ -static MACHINE_CONFIG_START( namcond1, namcond1_state ) +static MACHINE_CONFIG_START( namcond1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_49_152MHz/4) @@ -301,8 +301,8 @@ ROM_START( ncv2j ) ROM_LOAD( "ncs1voic.7c", 0x000000, 0x200000, CRC(ed05fd88) SHA1(ad88632c89a9946708fc6b4c9247e1bae9b2944b) ) ROM_END -GAME( 1995, ncv1, 0, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, ncv1j, ncv1, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, ncv1j2, ncv1, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ncv2, 0, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ncv2j, ncv2, namcond1, namcond1, driver_device, 0, ROT90, "Namco", "Namco Classic Collection Vol.2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, ncv1, 0, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, ncv1j, ncv1, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, ncv1j2, ncv1, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ncv2, 0, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ncv2j, ncv2, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/namcops2.cpp b/src/mame/drivers/namcops2.cpp index c2088b7db6f..be08b2fd660 100644 --- a/src/mame/drivers/namcops2.cpp +++ b/src/mame/drivers/namcops2.cpp @@ -913,7 +913,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( system246 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( system246, namcops2_state ) +static MACHINE_CONFIG_START( system246 ) MCFG_CPU_ADD("maincpu", R5000LE, 294000000) // actually R5900 @ 294 MHz MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) @@ -1580,59 +1580,59 @@ ROM_START( sbxc ) ROM_END // System 246 -GAME(2001, sys246, 0, system246, system246, driver_device, 0, ROT0, "Namco", "System 246 BIOS", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT) -GAME(2001, vnight, sys246, system246, system246, driver_device, 0, ROT0, "Sega / Namco", "Vampire Night (VPN3 Ver. B)", MACHINE_IS_SKELETON) -GAME(2001, bldyr3b, sys246, system246, system246, driver_device, 0, ROT0, "bootleg", "Bloody Roar 3 (bootleg)", MACHINE_IS_SKELETON) -GAME(2001, rrvac, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Ridge Racer V Arcade Battle (RRV3 Ver. A)", MACHINE_IS_SKELETON) -GAME(2001, rrvac2, rrvac, system246, system246, driver_device, 0, ROT0, "Namco", "Ridge Racer V Arcade Battle (RRV2 Ver. A)", MACHINE_IS_SKELETON) -GAME(2001, rrvac1, rrvac, system246, system246, driver_device, 0, ROT0, "Namco", "Ridge Racer V Arcade Battle (RRV1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2001, wanganmd, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Wangan Midnight (WMN1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2002, dragchrn, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Dragon Chronicles (DC001 Ver. A)", MACHINE_IS_SKELETON) -GAME(2002, netchu02, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Netchuu Pro Yakyuu 2002 (NPY1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2002, scptour, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Smash Court Pro Tournament (SCP1)", MACHINE_IS_SKELETON) -GAME(2002, soulclb2, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Soul Calibur II (SC23 Ver. A)", MACHINE_IS_SKELETON) -GAME(2002, soulcl2a, soulclb2, system246, system246, driver_device, 0, ROT0, "Namco", "Soul Calibur II (SC22 Ver. A)", MACHINE_IS_SKELETON) -GAME(2002, soulcl2b, soulclb2, system246, system246, driver_device, 0, ROT0, "Namco", "Soul Calibur II (SC21 Ver. A)", MACHINE_IS_SKELETON) -GAME(2002, soulcl2w, soulclb2, system246, system246, driver_device, 0, ROT0, "Namco", "Soul Calibur II (SC23 world version)", MACHINE_IS_SKELETON) -GAME(2002, tekken4, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Tekken 4 (TEF3 Ver. C)", MACHINE_IS_SKELETON) -GAME(2002, tekken4a, tekken4, system246, system246, driver_device, 0, ROT0, "Namco", "Tekken 4 (TEF2 Ver. A)", MACHINE_IS_SKELETON) -GAME(2002, tekken4b, tekken4, system246, system246, driver_device, 0, ROT0, "Namco", "Tekken 4 (TEF1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2002, tekken4c, tekken4, system246, system246, driver_device, 0, ROT0, "Namco", "Tekken 4 (TEF1 Ver. C)", MACHINE_IS_SKELETON) -GAME(2002, wanganmr, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Wangan Midnight R (WMR1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2003, prdgp03, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Pride GP 2003 (PR21 Ver. A)", MACHINE_IS_SKELETON) -GAME(2003, timecrs3, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Time Crisis 3 (TST1)", MACHINE_IS_SKELETON) -GAME(2003, timecrs3e,timecrs3, system246, system246, driver_device, 0, ROT0, "Namco", "Time Crisis 3 (TST2 Ver. A)", MACHINE_IS_SKELETON) -GAME(2003, zgundm, sys246, system246, system246, driver_device, 0, ROT0, "Capcom / Banpresto", "Mobile Suit Z-Gundam: A.E.U.G. vs Titans (ZGA1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2004, fghtjam, sys246, system246, system246, driver_device, 0, ROT0, "Capcom / Namco", "Capcom Fighting Jam (JAM1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2004, sukuinuf, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Quiz and Variety Suku Suku Inufuku 2 (IN2 Ver. A)", MACHINE_IS_SKELETON) -GAME(2004, zgundmdx, sys246, system246, system246, driver_device, 0, ROT0, "Capcom / Banpresto", "Mobile Suit Z-Gundam: A.E.U.G. vs Titans DX (ZDX1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2004, zoidsinf, sys246, system246, system246, driver_device, 0, ROT0, "Tomy / Taito", "Zoids Infinity", MACHINE_IS_SKELETON) -GAME(2005, cobrata, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Cobra: The Arcade (CBR1 Ver. B)", MACHINE_IS_SKELETON) -GAME(2005, gundzaft, sys246, system246, system246, driver_device, 0, ROT0, "Capcom / Banpresto", "Gundam Seed: Federation vs. Z.A.F.T. (SED1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2005, soulclb3, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Soul Calibur III (SC31001-NA-A key, NA-B disc)", MACHINE_IS_SKELETON) -GAME(2005, soulclb3a,soulclb3, system246, system246, driver_device, 0, ROT0, "Namco", "Soul Calibur III (SC31002-NA-A key, NA-B disc)", MACHINE_IS_SKELETON) -GAME(2005, soulclb3b,soulclb3, system246, system246, driver_device, 0, ROT0, "Namco", "Soul Calibur III (SC31002-NA-A key, NA-A disc)", MACHINE_IS_SKELETON) -GAME(2005, taiko7, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Taiko No Tatsujin 7 (TK71-NA-A)", MACHINE_IS_SKELETON) -GAME(2006, taiko8, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Taiko No Tatsujin 8 (TK8100-1-NA-A)", MACHINE_IS_SKELETON) -GAME(2006, qgundam, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Quiz Mobile Suit Gundam: Monsenshi (QG1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2008, fateulc, sys246, system246, system246, driver_device, 0, ROT0, "Capcom / Namco", "Fate: Unlimited Codes (FUD1 ver. A)", MACHINE_IS_SKELETON) -GAME(2008, fateulcb, fateulc, system246, system246, driver_device, 0, ROT0, "bootleg", "Fate: Unlimited Codes (bootleg)", MACHINE_IS_SKELETON) -GAME(2008, sbxc, sys246, system246, system246, driver_device, 0, ROT0, "Capcom / Arc System Works", "Sengoku Basara X Cross", MACHINE_IS_SKELETON) +GAME(2001, sys246, 0, system246, system246, namcops2_state, 0, ROT0, "Namco", "System 246 BIOS", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT) +GAME(2001, vnight, sys246, system246, system246, namcops2_state, 0, ROT0, "Sega / Namco", "Vampire Night (VPN3 Ver. B)", MACHINE_IS_SKELETON) +GAME(2001, bldyr3b, sys246, system246, system246, namcops2_state, 0, ROT0, "bootleg", "Bloody Roar 3 (bootleg)", MACHINE_IS_SKELETON) +GAME(2001, rrvac, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Ridge Racer V Arcade Battle (RRV3 Ver. A)", MACHINE_IS_SKELETON) +GAME(2001, rrvac2, rrvac, system246, system246, namcops2_state, 0, ROT0, "Namco", "Ridge Racer V Arcade Battle (RRV2 Ver. A)", MACHINE_IS_SKELETON) +GAME(2001, rrvac1, rrvac, system246, system246, namcops2_state, 0, ROT0, "Namco", "Ridge Racer V Arcade Battle (RRV1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2001, wanganmd, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Wangan Midnight (WMN1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2002, dragchrn, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Dragon Chronicles (DC001 Ver. A)", MACHINE_IS_SKELETON) +GAME(2002, netchu02, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Netchuu Pro Yakyuu 2002 (NPY1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2002, scptour, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Smash Court Pro Tournament (SCP1)", MACHINE_IS_SKELETON) +GAME(2002, soulclb2, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Soul Calibur II (SC23 Ver. A)", MACHINE_IS_SKELETON) +GAME(2002, soulcl2a, soulclb2, system246, system246, namcops2_state, 0, ROT0, "Namco", "Soul Calibur II (SC22 Ver. A)", MACHINE_IS_SKELETON) +GAME(2002, soulcl2b, soulclb2, system246, system246, namcops2_state, 0, ROT0, "Namco", "Soul Calibur II (SC21 Ver. A)", MACHINE_IS_SKELETON) +GAME(2002, soulcl2w, soulclb2, system246, system246, namcops2_state, 0, ROT0, "Namco", "Soul Calibur II (SC23 world version)", MACHINE_IS_SKELETON) +GAME(2002, tekken4, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Tekken 4 (TEF3 Ver. C)", MACHINE_IS_SKELETON) +GAME(2002, tekken4a, tekken4, system246, system246, namcops2_state, 0, ROT0, "Namco", "Tekken 4 (TEF2 Ver. A)", MACHINE_IS_SKELETON) +GAME(2002, tekken4b, tekken4, system246, system246, namcops2_state, 0, ROT0, "Namco", "Tekken 4 (TEF1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2002, tekken4c, tekken4, system246, system246, namcops2_state, 0, ROT0, "Namco", "Tekken 4 (TEF1 Ver. C)", MACHINE_IS_SKELETON) +GAME(2002, wanganmr, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Wangan Midnight R (WMR1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2003, prdgp03, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Pride GP 2003 (PR21 Ver. A)", MACHINE_IS_SKELETON) +GAME(2003, timecrs3, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Time Crisis 3 (TST1)", MACHINE_IS_SKELETON) +GAME(2003, timecrs3e,timecrs3, system246, system246, namcops2_state, 0, ROT0, "Namco", "Time Crisis 3 (TST2 Ver. A)", MACHINE_IS_SKELETON) +GAME(2003, zgundm, sys246, system246, system246, namcops2_state, 0, ROT0, "Capcom / Banpresto", "Mobile Suit Z-Gundam: A.E.U.G. vs Titans (ZGA1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2004, fghtjam, sys246, system246, system246, namcops2_state, 0, ROT0, "Capcom / Namco", "Capcom Fighting Jam (JAM1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2004, sukuinuf, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Quiz and Variety Suku Suku Inufuku 2 (IN2 Ver. A)", MACHINE_IS_SKELETON) +GAME(2004, zgundmdx, sys246, system246, system246, namcops2_state, 0, ROT0, "Capcom / Banpresto", "Mobile Suit Z-Gundam: A.E.U.G. vs Titans DX (ZDX1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2004, zoidsinf, sys246, system246, system246, namcops2_state, 0, ROT0, "Tomy / Taito", "Zoids Infinity", MACHINE_IS_SKELETON) +GAME(2005, cobrata, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Cobra: The Arcade (CBR1 Ver. B)", MACHINE_IS_SKELETON) +GAME(2005, gundzaft, sys246, system246, system246, namcops2_state, 0, ROT0, "Capcom / Banpresto", "Gundam Seed: Federation vs. Z.A.F.T. (SED1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2005, soulclb3, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Soul Calibur III (SC31001-NA-A key, NA-B disc)", MACHINE_IS_SKELETON) +GAME(2005, soulclb3a,soulclb3, system246, system246, namcops2_state, 0, ROT0, "Namco", "Soul Calibur III (SC31002-NA-A key, NA-B disc)", MACHINE_IS_SKELETON) +GAME(2005, soulclb3b,soulclb3, system246, system246, namcops2_state, 0, ROT0, "Namco", "Soul Calibur III (SC31002-NA-A key, NA-A disc)", MACHINE_IS_SKELETON) +GAME(2005, taiko7, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Taiko No Tatsujin 7 (TK71-NA-A)", MACHINE_IS_SKELETON) +GAME(2006, taiko8, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Taiko No Tatsujin 8 (TK8100-1-NA-A)", MACHINE_IS_SKELETON) +GAME(2006, qgundam, sys246, system246, system246, namcops2_state, 0, ROT0, "Namco", "Quiz Mobile Suit Gundam: Monsenshi (QG1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2008, fateulc, sys246, system246, system246, namcops2_state, 0, ROT0, "Capcom / Namco", "Fate: Unlimited Codes (FUD1 ver. A)", MACHINE_IS_SKELETON) +GAME(2008, fateulcb, fateulc, system246, system246, namcops2_state, 0, ROT0, "bootleg", "Fate: Unlimited Codes (bootleg)", MACHINE_IS_SKELETON) +GAME(2008, sbxc, sys246, system246, system246, namcops2_state, 0, ROT0, "Capcom / Arc System Works", "Sengoku Basara X Cross", MACHINE_IS_SKELETON) // System 256 -GAME(2004, sys256, 0, system256, system246, driver_device, 0, ROT0, "Namco", "System 256 BIOS", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT) -GAME(2005, tekken51, sys256, system256, system246, driver_device, 0, ROT0, "Namco", "Tekken 5.1 (TE51 Ver. B)", MACHINE_IS_SKELETON) -GAME(2005, tekken51b,tekken51, system256, system246, driver_device, 0, ROT0, "Namco", "Tekken 5.1 (TE53 Ver. B)", MACHINE_IS_SKELETON) -GAME(2005, tekken5d, sys256, system256, system246, driver_device, 0, ROT0, "Namco", "Tekken 5 Dark Resurrection (TED1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2005, superdbz, sys256, system256, system246, driver_device, 0, ROT0, "Banpresto / Spike", "Super Dragon Ball Z (DB1 Ver. B)", MACHINE_IS_SKELETON) -GAME(2006, kinniku, sys256, system256, system246, driver_device, 0, ROT0, "Namco", "Kinnikuman Muscle Grand Prix (KN1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2006, taiko9, sys256, system256, system246, driver_device, 0, ROT0, "Namco", "Taiko No Tatsujin 9 (TK91001-NA-A)", MACHINE_IS_SKELETON) -GAME(2006, yuyuhaku, sys256, system256, system246, driver_device, 0, ROT0, "Banpresto", "The Battle of Yu Yu Hakusho: Shitou! Ankoku Bujutsukai!", MACHINE_IS_SKELETON) -GAME(2006, zoidiexp, sys246, system246, system246, driver_device, 0, ROT0, "Tomy / Taito", "Zoids Infinity EX Plus (ver. 2.10)", MACHINE_IS_SKELETON) -GAME(2007, kinniku2, sys256, system256, system246, driver_device, 0, ROT0, "Namco", "Kinnikuman Muscle Grand Prix 2 (KN2 Ver. A)", MACHINE_IS_SKELETON) -GAME(2007, taiko10, sys256, system256, system246, driver_device, 0, ROT0, "Namco", "Taiko No Tatsujin 10 (T101001-NA-A)", MACHINE_IS_SKELETON) -GAME(2008, gdvsgd, sys256, system256, system246, driver_device, 0, ROT0, "Capcom / Bandai", "Gundam vs. Gundam (GVS1 Ver. A)", MACHINE_IS_SKELETON) -GAME(2009, gdvsgdnx, sys256, system256, system246, driver_device, 0, ROT0, "Capcom / Bandai", "Gundam vs. Gundam Next", MACHINE_IS_SKELETON) +GAME(2004, sys256, 0, system256, system246, namcops2_state, 0, ROT0, "Namco", "System 256 BIOS", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT) +GAME(2005, tekken51, sys256, system256, system246, namcops2_state, 0, ROT0, "Namco", "Tekken 5.1 (TE51 Ver. B)", MACHINE_IS_SKELETON) +GAME(2005, tekken51b,tekken51, system256, system246, namcops2_state, 0, ROT0, "Namco", "Tekken 5.1 (TE53 Ver. B)", MACHINE_IS_SKELETON) +GAME(2005, tekken5d, sys256, system256, system246, namcops2_state, 0, ROT0, "Namco", "Tekken 5 Dark Resurrection (TED1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2005, superdbz, sys256, system256, system246, namcops2_state, 0, ROT0, "Banpresto / Spike", "Super Dragon Ball Z (DB1 Ver. B)", MACHINE_IS_SKELETON) +GAME(2006, kinniku, sys256, system256, system246, namcops2_state, 0, ROT0, "Namco", "Kinnikuman Muscle Grand Prix (KN1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2006, taiko9, sys256, system256, system246, namcops2_state, 0, ROT0, "Namco", "Taiko No Tatsujin 9 (TK91001-NA-A)", MACHINE_IS_SKELETON) +GAME(2006, yuyuhaku, sys256, system256, system246, namcops2_state, 0, ROT0, "Banpresto", "The Battle of Yu Yu Hakusho: Shitou! Ankoku Bujutsukai!", MACHINE_IS_SKELETON) +GAME(2006, zoidiexp, sys246, system246, system246, namcops2_state, 0, ROT0, "Tomy / Taito", "Zoids Infinity EX Plus (ver. 2.10)", MACHINE_IS_SKELETON) +GAME(2007, kinniku2, sys256, system256, system246, namcops2_state, 0, ROT0, "Namco", "Kinnikuman Muscle Grand Prix 2 (KN2 Ver. A)", MACHINE_IS_SKELETON) +GAME(2007, taiko10, sys256, system256, system246, namcops2_state, 0, ROT0, "Namco", "Taiko No Tatsujin 10 (T101001-NA-A)", MACHINE_IS_SKELETON) +GAME(2008, gdvsgd, sys256, system256, system246, namcops2_state, 0, ROT0, "Capcom / Bandai", "Gundam vs. Gundam (GVS1 Ver. A)", MACHINE_IS_SKELETON) +GAME(2009, gdvsgdnx, sys256, system256, system246, namcops2_state, 0, ROT0, "Capcom / Bandai", "Gundam vs. Gundam Next", MACHINE_IS_SKELETON) // System Super 256 -GAME(2006, timecrs4, sys256, system256, system246, driver_device, 0, ROT0, "Namco", "Time Crisis 4", MACHINE_IS_SKELETON) +GAME(2006, timecrs4, sys256, system256, system246, namcops2_state, 0, ROT0, "Namco", "Time Crisis 4", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/namcos1.cpp b/src/mame/drivers/namcos1.cpp index 0853def98ec..d137b515132 100644 --- a/src/mame/drivers/namcos1.cpp +++ b/src/mame/drivers/namcos1.cpp @@ -1012,7 +1012,7 @@ GFXDECODE_END LPF info : Fco = 3.3KHz , g = -12dB/oct */ -static MACHINE_CONFIG_START( ns1, namcos1_state ) +static MACHINE_CONFIG_START( ns1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809,XTAL_49_152MHz/32) @@ -1046,7 +1046,7 @@ static MACHINE_CONFIG_START( ns1, namcos1_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_49_152MHz/8, 384, 9+8*8, 9+44*8, 264, 2*8, 30*8) MCFG_SCREEN_UPDATE_DRIVER(namcos1_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(namcos1_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(namcos1_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", namcos1) diff --git a/src/mame/drivers/namcos10.cpp b/src/mame/drivers/namcos10.cpp index 69c5feacae2..cc8aea3fdf0 100644 --- a/src/mame/drivers/namcos10.cpp +++ b/src/mame/drivers/namcos10.cpp @@ -775,7 +775,7 @@ MACHINE_RESET_MEMBER(namcos10_state,namcos10) i2c_bit = 0; } -static MACHINE_CONFIG_START( namcos10_memm, namcos10_state ) +static MACHINE_CONFIG_START( namcos10_memm ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8606BQ, XTAL_101_4912MHz ) MCFG_CPU_PROGRAM_MAP( namcos10_memm_map ) @@ -799,7 +799,7 @@ static MACHINE_CONFIG_START( namcos10_memm, namcos10_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( namcos10_memn, namcos10_state ) +static MACHINE_CONFIG_START( namcos10_memn ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8606BQ, XTAL_101_4912MHz ) MCFG_CPU_PROGRAM_MAP( namcos10_memn_map ) diff --git a/src/mame/drivers/namcos11.cpp b/src/mame/drivers/namcos11.cpp index c4d6b45cf80..9e752c586c6 100644 --- a/src/mame/drivers/namcos11.cpp +++ b/src/mame/drivers/namcos11.cpp @@ -19,19 +19,19 @@ Known Dumps Game Description CPU board Mother board Daughter board Keycus ROM0L -------------------------------------------------------------------------------------------------------------------------------------- -tekken Tekken (TE4/VER.C) COH-100 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB none 5 -tekkenac Tekken (TE2/VER.C) COH-100 " " " " -tekkenab Tekken (TE2/VER.B) COH-100 " " " " +tekken Tekken (TE2/VER.C) COH-100 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB none 5 +tekkenac Tekken (TE4/VER.C) COH-100 " " " " +tekkenb Tekken (TE2/VER.B) COH-100 " " " " tekkenjb Tekken (TE1/VER.B) COH-100 " " " " tekken2 Tekken 2 Ver.B (TES3/VER.D) COH-110 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB C406 6 tekken2ub Tekken 2 Ver.B (TES3/VER.B) COH-100 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB C406 6 -tekken2ab Tekken 2 Ver.B (TES2/VER.B) COH-100 " " " " +tekken2b Tekken 2 Ver.B (TES2/VER.B) COH-100 " " " " tekken2jc Tekken 2 Ver.B (TES1/VER.C) COH-100 " " " " -tekken2aa Tekken 2 (TES2/VER.A) COH-100 " " " " +tekken2a Tekken 2 (TES2/VER.A) COH-100 " " " " souledge Soul Edge Ver. II (SO4/VER.C) COH-100 / COH-110 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB C409 6 souledgeuc Soul Edge Ver. II (SO3/VER.C) COH-100 / COH-110 " " " " souledgeua Soul Edge (SO3/VER.A) COH-100 / COH-110 " " " " -souledgeaa Soul Edge (SO2/VER.A) COH-100 / COH-110 " " " " +souledgea Soul Edge (SO2/VER.A) COH-100 / COH-110 " " " " souledgeja Soul Edge (SO1/VER.A) COH-100 / COH-110 " " " " dunkmnia Dunk Mania (DM2/VER.C) COH-100 / COH-110 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB C410 5 dunkmniajc Dunk Mania (DM1/VER.C) COH-100 / COH-110 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB C410 5 @@ -40,7 +40,8 @@ primglex Prime Goal EX (PG1/VER.A) COH-100 / COH-110 SYSTEM11 danceyes Dancing Eyes (DC3/VER.C) COH-100 / COH-110 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB C431 5 danceyesj Dancing Eyes (DC1/VER.A) COH-100 / COH-110 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB C431 5 pocketrc Pocket Racer (PKR1/VER.B) COH-110 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB C432 5 -starswep Star Sweep (STP1/VER.A) COH-100 / COH-110 SYSTEM11 MOTHER(B) PCB C442 - +starswep Star Sweep (STP2/VER.A) COH-100 / COH-110 SYSTEM11 MOTHER(B) PCB C442 - +starswepj Star Sweep (STP1/VER.A) COH-100 / COH-110 SYSTEM11 MOTHER(B) PCB C442 - myangel3 Kosodate Quiz My Angel 3 (KQT1/VER.A) COH-110 SYSTEM11 MOTHER(B) PCB SYSTEM11 ROM8(64) PCB C443 2 ptblank2ua Point Blank 2 (GNB3/VER.A) COH-100 / COH-110 SYSTEM11 MOTHER PCB SYSTEM11 ROM8(64) PCB C443 2 @@ -48,6 +49,7 @@ ptblank2ua Point Blank 2 (GNB3/VER.A) COH-100 / COH-110 SYSTEM11 Not Dumped Yet (they possibly don't exist) -------------- Point Blank 3 (C) Namco, 2001 +Dancing Eyes (DC2/VER.C) (C) Namco, 1996 Soul Edge Ver. III (C) Namco, 1996 Tekken Ver.C (C) Namco, 1995 Tekken II Ver.C (C) Namco, 1995 @@ -128,7 +130,6 @@ Notes: Game Sticker KEYCUS --------------------------------------------- Dancing Eyes DC C431 - Don Bear Near Dunk Mania DM C410 Kosodate Quiz My Angel 3 KQT C443 Prime Goal EX PG C411 @@ -575,7 +576,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos11_state::mcu_adc_cb) m_mcu->set_input_line(M37710_LINE_ADC, HOLD_LINE); } -static MACHINE_CONFIG_START( coh110, namcos11_state ) +static MACHINE_CONFIG_START( coh110 ) MCFG_CPU_ADD( "maincpu", CXD8530CQ, XTAL_67_7376MHz ) MCFG_CPU_PROGRAM_MAP( namcos11_map ) @@ -1287,7 +1288,7 @@ ROM_START( souledgeua ) ROM_LOAD( "so1wave.8k", 0x800000, 0x400000, CRC(0e68836b) SHA1(c392b370a807803c7ab060105861253e1b407f49) ) ROM_END -ROM_START( souledgeaa ) +ROM_START( souledgea ) ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */ ROM_LOAD16_BYTE( "so2vera.2l", 0x0000000, 0x100000, CRC(0e9efc5c) SHA1(212b156f811174189fbf2ba908e67c6d76b9b4a6) ) ROM_LOAD16_BYTE( "so2vera.2j", 0x0000001, 0x100000, CRC(fda023f5) SHA1(f0a5bb1c813a5ee8629cb590e473dd0f5f1f416e) ) @@ -1338,6 +1339,21 @@ ROM_START( souledgeja ) ROM_END ROM_START( starswep ) + ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */ + ROM_LOAD16_BYTE( "stp2vera.2l", 0x0000000, 0x100000, CRC(a03f4bac) SHA1(a9b5e5e540105c325a4b8f7f1ae863b6fd6227f9) ) + ROM_LOAD16_BYTE( "stp2vera.2j", 0x0000001, 0x100000, CRC(590da032) SHA1(be0af7b68ab7cc666424ca07edebc17d813b2d03) ) + ROM_LOAD16_BYTE( "stp2vera.2k", 0x0200000, 0x100000, CRC(ac8717d5) SHA1(66dbc734de78041202e7d32ccceec306a6df34f8) ) + ROM_LOAD16_BYTE( "stp2vera.2f", 0x0200001, 0x100000, CRC(42733309) SHA1(d28cb6dc03ccf992e0b1c67db7f39b4fd8a38392) ) + + ROM_REGION16_LE( 0x80000, "c76", 0 ) /* sound data */ + ROM_LOAD( "stp2vera.6d", 0x0000000, 0x040000, CRC(08aaaf6a) SHA1(51c913a39ff7c154aef8bb10139cc8b92eb4756a) ) + + ROM_REGION( 0x1000000, "c352", 0 ) /* samples */ + ROM_LOAD( "stp1wave.8k", 0x000000, 0x400000, CRC(18f30e92) SHA1(b3819455856298527a7224495f541145aecf23dd) ) + ROM_RELOAD( 0x800000, 0x400000 ) +ROM_END + +ROM_START( starswepj ) ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */ ROM_LOAD( "stp1vera.1j", 0x0000000, 0x200000, CRC(ef83e126) SHA1(f721b43358cedad0f28af5d2b292b44043fd47a0) ) ROM_LOAD( "stp1vera.1l", 0x0200000, 0x200000, CRC(0ee7fe1e) SHA1(8c2f5b0e7b49dbe0e8105bf55c493acd46a4f59d) ) @@ -1352,8 +1368,8 @@ ROM_END ROM_START( tekken ) ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "te4verc.2l", 0x0000000, 0x100000, CRC(7ecb7892) SHA1(7837f2b3dbfc6b4a153ea652e8a3fd89c4daa26e) ) - ROM_LOAD16_BYTE( "te4verc.2j", 0x0000001, 0x100000, CRC(eea3365d) SHA1(d13df90833aac48f9d9d20cddefb81f90ebab249) ) + ROM_LOAD16_BYTE( "te2verc.2l", 0x0000000, 0x100000, CRC(a24c8c57) SHA1(bf69f17310201e38aa17fb4484cdb480f26d876e) ) + ROM_LOAD16_BYTE( "te2verc.2j", 0x0000001, 0x100000, CRC(3224c298) SHA1(8afe80af0eef52f96bf2ddb2482b06692a8f047d) ) ROM_LOAD16_BYTE( "te1verb.2k", 0x0200000, 0x100000, CRC(b9860b29) SHA1(678889fc5c70bf66f0bd9864a20636ffb620ed0d) ) ROM_LOAD16_BYTE( "te1verb.2f", 0x0200001, 0x100000, CRC(3dc01aad) SHA1(266f346fa575c42b635bc469798f5aade9821e20) ) @@ -1374,8 +1390,8 @@ ROM_END ROM_START( tekkenac ) ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "te2verc.2l", 0x0000000, 0x100000, CRC(a24c8c57) SHA1(bf69f17310201e38aa17fb4484cdb480f26d876e) ) - ROM_LOAD16_BYTE( "te2verc.2j", 0x0000001, 0x100000, CRC(3224c298) SHA1(8afe80af0eef52f96bf2ddb2482b06692a8f047d) ) + ROM_LOAD16_BYTE( "te4verc.2l", 0x0000000, 0x100000, CRC(7ecb7892) SHA1(7837f2b3dbfc6b4a153ea652e8a3fd89c4daa26e) ) + ROM_LOAD16_BYTE( "te4verc.2j", 0x0000001, 0x100000, CRC(eea3365d) SHA1(d13df90833aac48f9d9d20cddefb81f90ebab249) ) ROM_LOAD16_BYTE( "te1verb.2k", 0x0200000, 0x100000, CRC(b9860b29) SHA1(678889fc5c70bf66f0bd9864a20636ffb620ed0d) ) ROM_LOAD16_BYTE( "te1verb.2f", 0x0200001, 0x100000, CRC(3dc01aad) SHA1(266f346fa575c42b635bc469798f5aade9821e20) ) @@ -1394,7 +1410,9 @@ ROM_START( tekkenac ) ROM_LOAD( "te1wave.8k", 0x0000000, 0x200000, CRC(fce6c57a) SHA1(7fb8c69452c92c59a940a2b69d0d73ef7aefcb82) ) ROM_END -ROM_START( tekkenab ) + + +ROM_START( tekkenb ) ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */ ROM_LOAD16_BYTE( "te2verb.2l", 0x0000000, 0x100000, CRC(246cfbdd) SHA1(c1bffe3c463e9eff6dcaf9937da72bff8ff33e4e) ) ROM_LOAD16_BYTE( "te2verb.2j", 0x0000001, 0x100000, CRC(dfa83e47) SHA1(a29d852c1b6a52c043248d7e5af04067dfa3eb40) ) @@ -1486,7 +1504,7 @@ ROM_START( tekken2ub ) ROM_LOAD( "tes1wave.8k", 0x800000, 0x400000, CRC(34a34eab) SHA1(8e83a579abdcd419dc5cff8aa4c1d7e6c3add773) ) ROM_END -ROM_START( tekken2ab ) +ROM_START( tekken2b ) ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */ ROM_LOAD16_BYTE( "tes2verb.2l", 0x0000000, 0x100000, CRC(aa9a4503) SHA1(e6fdd34216591510593bbda0232ddc0fcd80e80b) ) ROM_LOAD16_BYTE( "tes2verb.2j", 0x0000001, 0x100000, CRC(63706d8c) SHA1(740cfa8b422fb663bcb412b3389da33c7f9f13be) ) @@ -1510,7 +1528,7 @@ ROM_START( tekken2ab ) ROM_LOAD( "tes1wave.8k", 0x800000, 0x400000, CRC(34a34eab) SHA1(8e83a579abdcd419dc5cff8aa4c1d7e6c3add773) ) ROM_END -ROM_START( tekken2aa ) +ROM_START( tekken2a ) ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */ ROM_LOAD16_BYTE( "tes2vera.2l", 0x0000000, 0x100000, CRC(8bb82bf0) SHA1(ac4e0077dff4c46ea2435903c410590f91cafe7d) ) ROM_LOAD16_BYTE( "tes2vera.2j", 0x0000001, 0x100000, CRC(4e02f921) SHA1(15339c2626033912947d33e5f59a109e607be0bf) ) @@ -1605,28 +1623,37 @@ ROM_START( xevi3dg ) ROM_RELOAD( 0x800000, 0x400000 ) ROM_END -GAME( 1994, tekken, 0, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (World, TE4/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, tekkenac, tekken, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (Asia, TE2/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, tekkenab, tekken, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (Asia, TE2/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, tekkenjb, tekken, tekken, tekken, driver_device, 0, ROT0, "Namco", "Tekken (Japan, TE1/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, tekken2, 0, tekken2, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (US, TES3/VER.D)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, tekken2ub, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (US, TES3/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, tekken2ab, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (Asia, TES2/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, tekken2jc, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, tekken2jb, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, tekken2aa, tekken2, tekken2o, tekken, driver_device, 0, ROT0, "Namco", "Tekken 2 (Asia, TES2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, souledge, 0, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge Ver. II (World, SO4/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, souledgeuc, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge Ver. II (US, SO3/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, souledgeua, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge (US, SO3/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, souledgeaa, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge (Asia, SO2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, souledgeja, souledge, souledge, souledge, driver_device, 0, ROT0, "Namco", "Soul Edge (Japan, SO1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, dunkmnia, 0, dunkmnia, namcos11, driver_device, 0, ROT0, "Namco", "Dunk Mania (Asia, DM2/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, dunkmniajc, dunkmnia, dunkmnia, namcos11, driver_device, 0, ROT0, "Namco", "Dunk Mania (Japan, DM1/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, xevi3dg, 0, xevi3dg, namcos11, driver_device, 0, ROT0, "Namco", "Xevious 3D/G (Japan, XV31/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, primglex, 0, primglex, tekken, driver_device, 0, ROT0, "Namco", "Prime Goal EX (Japan, PG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, danceyes, 0, danceyes, namcos11, driver_device, 0, ROT0, "Namco", "Dancing Eyes (US, DC3/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, danceyesj, danceyes, danceyes, namcos11, driver_device, 0, ROT0, "Namco", "Dancing Eyes (Japan, DC1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, pocketrc, 0, pocketrc, pocketrc, driver_device, 0, ROT0, "Namco", "Pocket Racer (Japan, PKR1/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, starswep, 0, starswep, namcos11, driver_device, 0, ROT0, "Axela / Namco", "Star Sweep (Japan, STP1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, myangel3, 0, myangel3, myangel3, driver_device, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 3 (Japan, KQT1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, ptblank2ua, ptblank2, ptblank2ua, ptblank2ua, driver_device, 0, ROT0, "Namco", "Point Blank 2 (US, GNB3/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +/* +1 = Japan +2 = World +3 = US specific +4 = Asia specific +9 = Location Test +*/ + +GAME( 1994, tekken, 0, tekken, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken (World, TE2/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, tekkenac, tekken, tekken, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken (Asia, TE4/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, tekkenb, tekken, tekken, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken (World, TE2/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, tekkenjb, tekken, tekken, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken (Japan, TE1/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, tekken2, 0, tekken2, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken 2 Ver.B (US, TES3/VER.D)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, tekken2ub, tekken2, tekken2o, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken 2 Ver.B (US, TES3/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, tekken2b, tekken2, tekken2o, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken 2 Ver.B (World, TES2/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, tekken2jc, tekken2, tekken2o, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, tekken2jb, tekken2, tekken2o, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, tekken2a, tekken2, tekken2o, tekken, namcos11_state, 0, ROT0, "Namco", "Tekken 2 (World, TES2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, souledge, 0, souledge, souledge, namcos11_state, 0, ROT0, "Namco", "Soul Edge Ver. II (Asia, SO4/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, souledgeuc, souledge, souledge, souledge, namcos11_state, 0, ROT0, "Namco", "Soul Edge Ver. II (US, SO3/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, souledgea, souledge, souledge, souledge, namcos11_state, 0, ROT0, "Namco", "Soul Edge (World, SO2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, souledgeua, souledge, souledge, souledge, namcos11_state, 0, ROT0, "Namco", "Soul Edge (US, SO3/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, souledgeja, souledge, souledge, souledge, namcos11_state, 0, ROT0, "Namco", "Soul Edge (Japan, SO1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, dunkmnia, 0, dunkmnia, namcos11, namcos11_state, 0, ROT0, "Namco", "Dunk Mania (World, DM2/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, dunkmniajc, dunkmnia, dunkmnia, namcos11, namcos11_state, 0, ROT0, "Namco", "Dunk Mania (Japan, DM1/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, xevi3dg, 0, xevi3dg, namcos11, namcos11_state, 0, ROT0, "Namco", "Xevious 3D/G (Japan, XV31/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, primglex, 0, primglex, tekken, namcos11_state, 0, ROT0, "Namco", "Prime Goal EX (Japan, PG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, danceyes, 0, danceyes, namcos11, namcos11_state, 0, ROT0, "Namco", "Dancing Eyes (US, DC3/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, danceyesj, danceyes, danceyes, namcos11, namcos11_state, 0, ROT0, "Namco", "Dancing Eyes (Japan, DC1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, pocketrc, 0, pocketrc, pocketrc, namcos11_state, 0, ROT0, "Namco", "Pocket Racer (Japan, PKR1/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, starswep, 0, starswep, namcos11, namcos11_state, 0, ROT0, "Axela / Namco", "Star Sweep (World, STP2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, starswepj, starswep, starswep, namcos11, namcos11_state, 0, ROT0, "Axela / Namco", "Star Sweep (Japan, STP1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, myangel3, 0, myangel3, myangel3, namcos11_state, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 3 (Japan, KQT1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, ptblank2ua, ptblank2, ptblank2ua, ptblank2ua, namcos11_state, 0, ROT0, "Namco", "Point Blank 2 (US, GNB3/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/namcos12.cpp b/src/mame/drivers/namcos12.cpp index 1186aac3cfc..ab6a7b9687e 100644 --- a/src/mame/drivers/namcos12.cpp +++ b/src/mame/drivers/namcos12.cpp @@ -929,6 +929,7 @@ Notes: Libero Grande (LG2/VER.A) Tekken 3 (TET2/VER.A) Ehrgeiz (EG2/VER.A) + Kart Duel (KTD1/VER.A) Note that the games will also work without this PCB, minus the network functionality. @@ -1306,6 +1307,11 @@ static ADDRESS_MAP_START( namcos12_map, AS_PROGRAM, 32, namcos12_state ) AM_RANGE(0x1f140000, 0x1f140fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */ AM_RANGE(0x1f1bff08, 0x1f1bff0f) AM_WRITENOP /* ?? */ AM_RANGE(0x1f700000, 0x1f70ffff) AM_WRITE16(dmaoffset_w, 0xffffffff) /* dma */ + /* Network area */ +// AM_RANGE(0x1f780000, 0x1f78ffff) AM_READWRITE16(link_sharedram_r, link_sharedram_w, 0xffffffff) /* H8 link CPU code */ +// AM_RANGE(0x1f796000, 0x1f796003) AM_WRITE16(linkcpu_enable_w,0xffff0000) +// AM_RANGE(0x1f796020, 0x1f796023) AM_WRITE16(linkcpu_disable_w,0xffff0000) + AM_RANGE(0x1fa00000, 0x1fbfffff) AM_ROMBANK("bank1") /* banked roms */ ADDRESS_MAP_END @@ -1423,7 +1429,7 @@ WRITE16_MEMBER(namcos12_state::tektagt_protection_2_w) switch (offset) { case 0: - // Writes are 0 or rand(), only used as a "start prot value write" trigger + // Writes are 0 or machine().rand(), only used as a "start prot value write" trigger m_ttt_cnt = 0; break; case 1: @@ -1672,7 +1678,7 @@ DRIVER_INIT_MEMBER(namcos12_state,technodr) *( (uint32_t *)( memregion( "sub" )->base() + 0x14b6 ) ) = 0; } -static MACHINE_CONFIG_START( coh700, namcos12_state ) +static MACHINE_CONFIG_START( coh700 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", CXD8661R, XTAL_100MHz) @@ -1681,7 +1687,7 @@ static MACHINE_CONFIG_START( coh700, namcos12_state ) MCFG_RAM_MODIFY("maincpu:ram") MCFG_RAM_DEFAULT_SIZE("4M") - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate(&namcos12_state::namcos12_rom_read, (namcos12_state *) owner )) + MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&namcos12_state::namcos12_rom_read, (namcos12_state *) owner )) MCFG_CPU_ADD("sub", H83002, 16934400) // frequency based on research (superctr) MCFG_CPU_PROGRAM_MAP(s12h8rwmap) @@ -2072,8 +2078,8 @@ ROM_END ROM_START( ehrgeiz ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "eg3vera.2l", 0x0000000, 0x200000, CRC(64c00ff0) SHA1(fc7980bc8d98c810aed2eb6b3265d150784dfc15) ) - ROM_LOAD16_BYTE( "eg3vera.2p", 0x0000001, 0x200000, CRC(e722c030) SHA1(4669a7861c14d97048728989708a0fa3733f83a8) ) + ROM_LOAD16_BYTE( "eg2vera.2e", 0x0000000, 0x200000, CRC(9174ec90) SHA1(273bb9c9f0a7eb48470601a0eadf450908ac4d92) ) + ROM_LOAD16_BYTE( "eg2vera.2j", 0x0000001, 0x200000, CRC(a8388248) SHA1(89eeb6095cc8c7ad6cdc8480cff6f688f07f64d7) ) ROM_REGION32_LE( 0x1c00000, "user2", 0 ) /* main data */ ROM_LOAD16_BYTE( "eg1rom0l.12", 0x0000000, 0x800000, CRC(fe11a48e) SHA1(bdb2af5949bb4a324dab01489e9488aa5b9bd129) ) @@ -2092,10 +2098,10 @@ ROM_START( ehrgeiz ) ROM_LOAD( "eg1wave0.2", 0x0000000, 0x800000, CRC(961fe69f) SHA1(0189a061959a8d94b9d2db627911264faf9f28fd) ) ROM_END -ROM_START( ehrgeizaa ) +ROM_START( ehrgeizua ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "eg2vera.2e", 0x0000000, 0x200000, CRC(9174ec90) SHA1(273bb9c9f0a7eb48470601a0eadf450908ac4d92) ) - ROM_LOAD16_BYTE( "eg2vera.2j", 0x0000001, 0x200000, CRC(a8388248) SHA1(89eeb6095cc8c7ad6cdc8480cff6f688f07f64d7) ) + ROM_LOAD16_BYTE( "eg3vera.2l", 0x0000000, 0x200000, CRC(64c00ff0) SHA1(fc7980bc8d98c810aed2eb6b3265d150784dfc15) ) + ROM_LOAD16_BYTE( "eg3vera.2p", 0x0000001, 0x200000, CRC(e722c030) SHA1(4669a7861c14d97048728989708a0fa3733f83a8) ) ROM_REGION32_LE( 0x1c00000, "user2", 0 ) /* main data */ ROM_LOAD16_BYTE( "eg1rom0l.12", 0x0000000, 0x800000, CRC(fe11a48e) SHA1(bdb2af5949bb4a324dab01489e9488aa5b9bd129) ) @@ -2677,8 +2683,8 @@ ROM_END ROM_START( tekken3 ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "tet1vere.2e", 0x0000000, 0x200000, CRC(8b01113b) SHA1(45fdfd58293641ed16bc59c633a85a9cf64ccbaf) ) - ROM_LOAD16_BYTE( "tet1vere.2j", 0x0000001, 0x200000, CRC(df4c96fb) SHA1(2e223045bf5b80ccf615106e869760c5b7aa8d44) ) + ROM_LOAD16_BYTE( "tet2vere1.2e", 0x0000000, 0x200000, CRC(7ded5461) SHA1(3a5638c6ad40bfde6e12fdfd6d469f6ea5e9f4fb) ) + ROM_LOAD16_BYTE( "tet2vere1.2j", 0x0000001, 0x200000, CRC(25c96e1e) SHA1(554d1e42886d6a6c9c5857e9cbd5d7c37d7a6e67) ) ROM_REGION32_LE( 0x1c00000, "user2", 0 ) /* main data */ ROM_LOAD16_BYTE( "tet1rom0l.6", 0x0000000, 0x400000, CRC(2886bb32) SHA1(08ad9da2df25ad8c933a812ac238c81135072929) ) @@ -2696,23 +2702,12 @@ ROM_START( tekken3 ) ROM_REGION( 0x1000000, "c352", 0 ) /* samples */ ROM_LOAD( "tet1wave0.5", 0x0000000, 0x400000, CRC(77ba7975) SHA1(fe9434dcf0fb232c85efaaae1b4b13d36099620a) ) ROM_LOAD( "tet1wave1.4", 0x0400000, 0x400000, CRC(ffeba79f) SHA1(941412bbe9d0305d9a23c224c1bb774c4321f6df) ) - - // Namco Cyber Lead cabinet JVS I/O and LED display controller - ROM_REGION(0x40000, "cabinet_io", 0) - // JVS I/O board (namco ltd.;I/O CYBER LEAD;Ver1.03;JPN,LED-0100) - // labels: CL1 I/OB, I/O LED (I/O) PCB - // ICs: Namco C77 H8/???? MCU, Atmel AT29C020 256k x8 FlashROM, NEC N341256 32k x8 SRAM, 14.7MHz Xtal, Altera EPM7064 labeled I/OLEDM1 - ROM_LOAD("cl1-iob.ic5", 0x0000, 0x40000, CRC(abb90360) SHA1(d938b1e1ae596d0ab1007352f61b0b800363c762) ) - // LED display controller, connected to above I/O - // labels: CL1 LEDA, I/O LED (LED) PCB - // ICs: same as above plus EPSON SED1351F LCD controller, 12MHz Xtal - ROM_LOAD("cl1-leda.ic5", 0x0000, 0x40000, CRC(43602a58) SHA1(64156ded8c43dbbe84b5d6ae13a068c8b18e8aed) ) ROM_END -ROM_START( tekken3ae ) +ROM_START( tekken3je1 ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "tet2vere.2e", 0x0000000, 0x200000, CRC(7ded5461) SHA1(3a5638c6ad40bfde6e12fdfd6d469f6ea5e9f4fb) ) - ROM_LOAD16_BYTE( "tet2vere.2j", 0x0000001, 0x200000, CRC(25c96e1e) SHA1(554d1e42886d6a6c9c5857e9cbd5d7c37d7a6e67) ) + ROM_LOAD16_BYTE( "tet1vere1.2e", 0x0000000, 0x200000, CRC(8b01113b) SHA1(45fdfd58293641ed16bc59c633a85a9cf64ccbaf) ) + ROM_LOAD16_BYTE( "tet1vere1.2j", 0x0000001, 0x200000, CRC(df4c96fb) SHA1(2e223045bf5b80ccf615106e869760c5b7aa8d44) ) ROM_REGION32_LE( 0x1c00000, "user2", 0 ) /* main data */ ROM_LOAD16_BYTE( "tet1rom0l.6", 0x0000000, 0x400000, CRC(2886bb32) SHA1(08ad9da2df25ad8c933a812ac238c81135072929) ) @@ -2730,6 +2725,17 @@ ROM_START( tekken3ae ) ROM_REGION( 0x1000000, "c352", 0 ) /* samples */ ROM_LOAD( "tet1wave0.5", 0x0000000, 0x400000, CRC(77ba7975) SHA1(fe9434dcf0fb232c85efaaae1b4b13d36099620a) ) ROM_LOAD( "tet1wave1.4", 0x0400000, 0x400000, CRC(ffeba79f) SHA1(941412bbe9d0305d9a23c224c1bb774c4321f6df) ) + + // Namco Cyber Lead cabinet JVS I/O and LED display controller + ROM_REGION(0x40000, "cabinet_io", 0) + // JVS I/O board (namco ltd.;I/O CYBER LEAD;Ver1.03;JPN,LED-0100) + // labels: CL1 I/OB, I/O LED (I/O) PCB + // ICs: Namco C77 H8/???? MCU, Atmel AT29C020 256k x8 FlashROM, NEC N341256 32k x8 SRAM, 14.7MHz Xtal, Altera EPM7064 labeled I/OLEDM1 + ROM_LOAD("cl1-iob.ic5", 0x0000, 0x40000, CRC(abb90360) SHA1(d938b1e1ae596d0ab1007352f61b0b800363c762) ) + // LED display controller, connected to above I/O + // labels: CL1 LEDA, I/O LED (LED) PCB + // ICs: same as above plus EPSON SED1351F LCD controller, 12MHz Xtal + ROM_LOAD("cl1-leda.ic5", 0x0000, 0x40000, CRC(43602a58) SHA1(64156ded8c43dbbe84b5d6ae13a068c8b18e8aed) ) ROM_END ROM_START( tekken3ud ) @@ -2755,7 +2761,7 @@ ROM_START( tekken3ud ) ROM_LOAD( "tet1wave1.4", 0x0400000, 0x400000, CRC(ffeba79f) SHA1(941412bbe9d0305d9a23c224c1bb774c4321f6df) ) ROM_END -ROM_START( tekken3ab ) +ROM_START( tekken3b ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ ROM_LOAD16_BYTE( "tet2verb.2e", 0x0000000, 0x200000, CRC(a6cbc434) SHA1(859d84e6e9a52c2cdd54a2a0bb8104169eb19c07) ) ROM_LOAD16_BYTE( "tet2verb.2j", 0x0000001, 0x200000, CRC(c8f95ec5) SHA1(7f34c42e1fbc35118e8476cdb78fbdb9564001de) ) @@ -2778,10 +2784,10 @@ ROM_START( tekken3ab ) ROM_LOAD( "tet1wave1.4", 0x0400000, 0x400000, CRC(ffeba79f) SHA1(941412bbe9d0305d9a23c224c1bb774c4321f6df) ) ROM_END -ROM_START( tekken3ua ) +ROM_START( tekken3a ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "tet3vera.2e", 0x0000000, 0x200000, CRC(2fb6fac2) SHA1(518f74f09fa879cc1507c6afa2dd922b38cecd55) ) - ROM_LOAD16_BYTE( "tet3vera.2j", 0x0000001, 0x200000, CRC(968af792) SHA1(6187128d5ca07fd394f674b8dda0c190e6cd7f9d) ) + ROM_LOAD16_BYTE( "tet2vera.2e", 0x0000000, 0x200000, CRC(7270f157) SHA1(e73c5970e58f9e8c5696f4e3b15908fbec6c21ce) ) + ROM_LOAD16_BYTE( "tet2vera.2j", 0x0000001, 0x200000, CRC(94ceb446) SHA1(c730eb5c770991ae3ae0b9ba63681ce037e46746) ) ROM_REGION32_LE( 0x1c00000, "user2", 0 ) /* main data */ ROM_LOAD16_BYTE( "tet1rom0l.6", 0x0000000, 0x400000, CRC(2886bb32) SHA1(08ad9da2df25ad8c933a812ac238c81135072929) ) @@ -2801,10 +2807,10 @@ ROM_START( tekken3ua ) ROM_LOAD( "tet1wave1.4", 0x0400000, 0x400000, CRC(ffeba79f) SHA1(941412bbe9d0305d9a23c224c1bb774c4321f6df) ) ROM_END -ROM_START( tekken3aa ) +ROM_START( tekken3ua ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "tet2vera.2e", 0x0000000, 0x200000, CRC(7270f157) SHA1(e73c5970e58f9e8c5696f4e3b15908fbec6c21ce) ) - ROM_LOAD16_BYTE( "tet2vera.2j", 0x0000001, 0x200000, CRC(94ceb446) SHA1(c730eb5c770991ae3ae0b9ba63681ce037e46746) ) + ROM_LOAD16_BYTE( "tet3vera.2e", 0x0000000, 0x200000, CRC(2fb6fac2) SHA1(518f74f09fa879cc1507c6afa2dd922b38cecd55) ) + ROM_LOAD16_BYTE( "tet3vera.2j", 0x0000001, 0x200000, CRC(968af792) SHA1(6187128d5ca07fd394f674b8dda0c190e6cd7f9d) ) ROM_REGION32_LE( 0x1c00000, "user2", 0 ) /* main data */ ROM_LOAD16_BYTE( "tet1rom0l.6", 0x0000000, 0x400000, CRC(2886bb32) SHA1(08ad9da2df25ad8c933a812ac238c81135072929) ) @@ -2849,8 +2855,65 @@ ROM_END ROM_START( tektagt ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "teg3verc.2l", 0x0000000, 0x200000, CRC(1efb7b85) SHA1(0623bb6571caf046ff7b4f83f11ee84a92c4b462) ) - ROM_LOAD16_BYTE( "teg3verc.2p", 0x0000001, 0x200000, CRC(7caef9b2) SHA1(5c56d69ba2f723d0a4fbe4902196efc6ba9d5094) ) + ROM_LOAD16_BYTE( "teg2verc1.2e", 0x0000000, 0x200000, CRC(c6da0717) SHA1(9e01ae64710d85eb9899d6fa6fd0a2152aee8c11) ) /* Modified to work with alt romboard? */ + ROM_LOAD16_BYTE( "teg2verc1.2j", 0x0000001, 0x200000, CRC(25a1d2ff) SHA1(529a11a1bbb8655534d7ec371f1c09e9e387ed11) ) + + ROM_REGION32_LE( 0x3800000, "user2", 0 ) /* main data */ + ROM_LOAD32_WORD( "teg1rom0e.9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) ) + ROM_LOAD32_WORD( "teg1rom0o.13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) ) + ROM_LOAD32_WORD( "teg1rom1e.10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) ) + ROM_LOAD32_WORD( "teg1rom1o.14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) ) + ROM_LOAD32_WORD( "teg1rom2e.11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) ) + ROM_LOAD32_WORD( "teg1rom2o.15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) ) + + ROM_LOAD32_BYTE( "teg_flel.4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash roms with no labels */ + ROM_LOAD32_BYTE( "teg_fleu.5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) ) + ROM_LOAD32_BYTE( "teg_flol.6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) ) + ROM_LOAD32_BYTE( "teg_flou.7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) ) + + ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */ + ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) ) /* No label for this one */ + + ROM_REGION( 0x1000000, "c352", 0 ) /* samples */ + ROM_LOAD( "teg1wave0.1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) ) + ROM_LOAD( "teg1wave1.12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) ) +ROM_END + +ROM_START( tektagtc1 ) + ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ + ROM_LOAD16_BYTE( "teg2ver_c1.2e", 0x0000000, 0x200000, CRC(c0800960) SHA1(80fc8910ebb2399b3be3c9ea87cc1d9283b42676) ) + ROM_LOAD16_BYTE( "teg2ver_c1.2j", 0x0000001, 0x200000, CRC(c0476713) SHA1(e51e4f3cd20ad6838fb05aaede0ab288e145e7a2) ) + + ROM_REGION32_LE( 0x3800000, "user2", 0 ) /* main data */ + ROM_LOAD32_WORD( "teg2roml0", 0x0000000, 0x400000, CRC(cf984e85) SHA1(4d8296998b5f225b3f20bfdcb092a64b6e1fa76e) ) + ROM_LOAD32_WORD( "teg2roml00.ic13", 0x0000002, 0x400000, CRC(927723a5) SHA1(075aaca1700c9134496eb9a73cbe325ddc74eae1) ) /* located on the opposite side of the ROM PCB */ + ROM_LOAD32_WORD( "teg2romh0", 0x0800000, 0x400000, CRC(ea088657) SHA1(fbacca78832f68a310bafd06188d645e3424e0ed) ) + ROM_LOAD32_WORD( "teg2romh00", 0x0800002, 0x400000, CRC(a85aa306) SHA1(07318133c7c48cb61590ed0eceb519a8cc1ca781) ) + ROM_LOAD32_WORD( "teg2roml1", 0x1000000, 0x400000, CRC(8552f0ef) SHA1(45ed0dacdad94e708260a98b9cd47861543d2b7a) ) + ROM_LOAD32_WORD( "teg2roml10.ic14", 0x1000002, 0x400000, CRC(13eb424b) SHA1(59d6c77136050de1e7250e6627636d5b178bb8a8) ) /* located on the opposite side of the ROM PCB */ + ROM_LOAD32_WORD( "teg2romh1", 0x1800000, 0x400000, CRC(86eb5abe) SHA1(66a3807a18d81e8291baf56533694f60e31a6367) ) + ROM_LOAD32_WORD( "teg2romh10", 0x1800002, 0x400000, CRC(25131a87) SHA1(77fa236c4879a59323bc2dac26c195b7c47f812c) ) + ROM_LOAD32_WORD( "teg2roml2", 0x2000000, 0x400000, CRC(abdfc6ca) SHA1(70033becd29ea15611be2fc099a43712181bcbec) ) + ROM_LOAD32_WORD( "teg2roml20.ic15", 0x2000002, 0x400000, CRC(ed5ec7f7) SHA1(c91085a64ced95ee6618303987de61893e069742) ) /* located on the opposite side of the ROM PCB */ + ROM_LOAD32_WORD( "teg2romh2", 0x2800000, 0x400000, CRC(8c03b301) SHA1(f395a4685e2deb8f7e9afc18ce15fa0d392b0cfa) ) + ROM_LOAD32_WORD( "teg2romh20", 0x2800002, 0x400000, CRC(c873c362) SHA1(d95451a7477b716c0d75ba04e1d8df3d8a4e10dd) ) + ROM_LOAD32_WORD( "teg2rf4", 0x3000000, 0x400000, CRC(612f6a37) SHA1(bd9597ef802e3c46f891f0ef523a3e0b0fe22672) ) /* Different data?? Second half blank, all 0x00? */ + ROM_LOAD32_WORD( "teg2rf6", 0x3000002, 0x400000, CRC(0c9292ce) SHA1(664c6ccf18042ed8ebc29b1781ae7454acb05ba1) ) /* Different data?? Second half blank, all 0x00? */ + + ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */ + ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) ) /* No label for this one */ + + ROM_REGION( 0x1000000, "c352", 0 ) /* samples */ + ROM_LOAD( "teg2wavel0.ic12", 0x0000000, 0x400000, CRC(1865336f) SHA1(deda6d129daf709b0316f6260e67613fbf849e57) ) /* located on the opposite side of the ROM PCB */ + ROM_LOAD( "teg2wavel1", 0x0400000, 0x400000, CRC(f5ab70e6) SHA1(cdb62d8eb92ca961be684caf768d1961d98ece22) ) + ROM_LOAD( "teg2waveh0", 0x0800000, 0x400000, CRC(bc0325bf) SHA1(77059c300a9d53d0e97bb898a06c58076078d7d2) ) + ROM_LOAD( "teg2waveh1", 0x0c00000, 0x400000, CRC(6c654921) SHA1(3849157b30b4b459956b823511551abda2e4b6e5) ) +ROM_END + +ROM_START( tektagtuc1 ) + ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ + ROM_LOAD16_BYTE( "teg3verc1.2l", 0x0000000, 0x200000, CRC(1efb7b85) SHA1(0623bb6571caf046ff7b4f83f11ee84a92c4b462) ) + ROM_LOAD16_BYTE( "teg3verc1.2p", 0x0000001, 0x200000, CRC(7caef9b2) SHA1(5c56d69ba2f723d0a4fbe4902196efc6ba9d5094) ) ROM_REGION32_LE( 0x3800000, "user2", 0 ) /* main data */ ROM_LOAD32_WORD( "teg1rom0e.9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) ) @@ -2977,63 +3040,6 @@ ROM_START( tektagtja ) ROM_LOAD( "teg1wave1.12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) ) ROM_END -ROM_START( tektagtac ) - ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "teg2verc1.2e", 0x0000000, 0x200000, CRC(c6da0717) SHA1(9e01ae64710d85eb9899d6fa6fd0a2152aee8c11) ) /* Modified to work with alt romboard? */ - ROM_LOAD16_BYTE( "teg2verc1.2j", 0x0000001, 0x200000, CRC(25a1d2ff) SHA1(529a11a1bbb8655534d7ec371f1c09e9e387ed11) ) - - ROM_REGION32_LE( 0x3800000, "user2", 0 ) /* main data */ - ROM_LOAD32_WORD( "teg1rom0e.9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) ) - ROM_LOAD32_WORD( "teg1rom0o.13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) ) - ROM_LOAD32_WORD( "teg1rom1e.10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) ) - ROM_LOAD32_WORD( "teg1rom1o.14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) ) - ROM_LOAD32_WORD( "teg1rom2e.11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) ) - ROM_LOAD32_WORD( "teg1rom2o.15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) ) - - ROM_LOAD32_BYTE( "teg_flel.4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash roms with no labels */ - ROM_LOAD32_BYTE( "teg_fleu.5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) ) - ROM_LOAD32_BYTE( "teg_flol.6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) ) - ROM_LOAD32_BYTE( "teg_flou.7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) ) - - ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */ - ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) ) /* No label for this one */ - - ROM_REGION( 0x1000000, "c352", 0 ) /* samples */ - ROM_LOAD( "teg1wave0.1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) ) - ROM_LOAD( "teg1wave1.12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) ) -ROM_END - -ROM_START( tektagtac1 ) - ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ - ROM_LOAD16_BYTE( "teg2ver_c1.2e", 0x0000000, 0x200000, CRC(c0800960) SHA1(80fc8910ebb2399b3be3c9ea87cc1d9283b42676) ) - ROM_LOAD16_BYTE( "teg2ver_c1.2j", 0x0000001, 0x200000, CRC(c0476713) SHA1(e51e4f3cd20ad6838fb05aaede0ab288e145e7a2) ) - - ROM_REGION32_LE( 0x3800000, "user2", 0 ) /* main data */ - ROM_LOAD32_WORD( "teg2roml0", 0x0000000, 0x400000, CRC(cf984e85) SHA1(4d8296998b5f225b3f20bfdcb092a64b6e1fa76e) ) - ROM_LOAD32_WORD( "teg2roml00.ic13", 0x0000002, 0x400000, CRC(927723a5) SHA1(075aaca1700c9134496eb9a73cbe325ddc74eae1) ) /* located on the opposite side of the ROM PCB */ - ROM_LOAD32_WORD( "teg2romh0", 0x0800000, 0x400000, CRC(ea088657) SHA1(fbacca78832f68a310bafd06188d645e3424e0ed) ) - ROM_LOAD32_WORD( "teg2romh00", 0x0800002, 0x400000, CRC(a85aa306) SHA1(07318133c7c48cb61590ed0eceb519a8cc1ca781) ) - ROM_LOAD32_WORD( "teg2roml1", 0x1000000, 0x400000, CRC(8552f0ef) SHA1(45ed0dacdad94e708260a98b9cd47861543d2b7a) ) - ROM_LOAD32_WORD( "teg2roml10.ic14", 0x1000002, 0x400000, CRC(13eb424b) SHA1(59d6c77136050de1e7250e6627636d5b178bb8a8) ) /* located on the opposite side of the ROM PCB */ - ROM_LOAD32_WORD( "teg2romh1", 0x1800000, 0x400000, CRC(86eb5abe) SHA1(66a3807a18d81e8291baf56533694f60e31a6367) ) - ROM_LOAD32_WORD( "teg2romh10", 0x1800002, 0x400000, CRC(25131a87) SHA1(77fa236c4879a59323bc2dac26c195b7c47f812c) ) - ROM_LOAD32_WORD( "teg2roml2", 0x2000000, 0x400000, CRC(abdfc6ca) SHA1(70033becd29ea15611be2fc099a43712181bcbec) ) - ROM_LOAD32_WORD( "teg2roml20.ic15", 0x2000002, 0x400000, CRC(ed5ec7f7) SHA1(c91085a64ced95ee6618303987de61893e069742) ) /* located on the opposite side of the ROM PCB */ - ROM_LOAD32_WORD( "teg2romh2", 0x2800000, 0x400000, CRC(8c03b301) SHA1(f395a4685e2deb8f7e9afc18ce15fa0d392b0cfa) ) - ROM_LOAD32_WORD( "teg2romh20", 0x2800002, 0x400000, CRC(c873c362) SHA1(d95451a7477b716c0d75ba04e1d8df3d8a4e10dd) ) - ROM_LOAD32_WORD( "teg2rf4", 0x3000000, 0x400000, CRC(612f6a37) SHA1(bd9597ef802e3c46f891f0ef523a3e0b0fe22672) ) /* Different data?? Second half blank, all 0x00? */ - ROM_LOAD32_WORD( "teg2rf6", 0x3000002, 0x400000, CRC(0c9292ce) SHA1(664c6ccf18042ed8ebc29b1781ae7454acb05ba1) ) /* Different data?? Second half blank, all 0x00? */ - - ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */ - ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) ) /* No label for this one */ - - ROM_REGION( 0x1000000, "c352", 0 ) /* samples */ - ROM_LOAD( "teg2wavel0.ic12", 0x0000000, 0x400000, CRC(1865336f) SHA1(deda6d129daf709b0316f6260e67613fbf849e57) ) /* located on the opposite side of the ROM PCB */ - ROM_LOAD( "teg2wavel1", 0x0400000, 0x400000, CRC(f5ab70e6) SHA1(cdb62d8eb92ca961be684caf768d1961d98ece22) ) - ROM_LOAD( "teg2waveh0", 0x0800000, 0x400000, CRC(bc0325bf) SHA1(77059c300a9d53d0e97bb898a06c58076078d7d2) ) - ROM_LOAD( "teg2waveh1", 0x0c00000, 0x400000, CRC(6c654921) SHA1(3849157b30b4b459956b823511551abda2e4b6e5) ) -ROM_END - ROM_START( tenkomor ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ ROM_LOAD16_BYTE( "tkm2vera.2e", 0x0000000, 0x200000, CRC(a9b81653) SHA1(9199505019234140b0d89e199f0db307d5bcca02) ) @@ -3176,45 +3182,45 @@ ROM_START( aplarail ) ROM_LOAD( "at28c16", 0x000000, 0x000800, CRC(db1b63c5) SHA1(01fc3386a2d1cb1bed1b7fd9bd2fd59e503832d3) ) ROM_END -GAME( 1996, tekken3, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.E1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ -GAME( 1996, tekken3ae, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Asia, TET2/VER.E1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ +GAME( 1996, tekken3, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.E1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ +GAME( 1996, tekken3b, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ +GAME( 1996, tekken3a, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ GAME( 1996, tekken3ud, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.D)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ -GAME( 1996, tekken3ab, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Asia, TET2/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ GAME( 1996, tekken3ua, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ -GAME( 1996, tekken3aa, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Asia, TET2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ +GAME( 1996, tekken3je1,tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.E1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC006 */ GAME( 1996, tekken3ja, tekken3, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC014 */ -GAME( 1997, lbgrande, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Libero Grande (Asia, LG2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC014 */ +GAME( 1997, lbgrande, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Libero Grande (World, LG2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC014 */ GAME( 1997, lbgrandeja,lbgrande, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Libero Grande (Japan, LG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* KC014 */ GAME( 1997, toukon3, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco / Tomy", "Shin Nihon Pro Wrestling Toukon Retsuden 3 Arcade Edition (Japan, TR1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC019 */ GAME( 1998, soulclbr, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (World, SOC14/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, soulclbruc,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (US, SOC13/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, soulclbrjc,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) /* KC020 */ GAME( 1998, soulclbrwb,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (World, SOC14/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, soulclbruc,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (US, SOC13/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1998, soulclbrub,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (US, SOC13/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) /* KC020 */ +GAME( 1998, soulclbrjc,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.C)", MACHINE_IMPERFECT_GRAPHICS ) /* KC020 */ GAME( 1998, soulclbrjb,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) /* KC020 */ GAME( 1998, soulclbrja,soulclbr, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.A2)", MACHINE_IMPERFECT_GRAPHICS ) /* KC020 */ -GAME( 1998, ehrgeiz, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (US, EG3/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC021 */ -GAME( 1998, ehrgeizaa, ehrgeiz, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (Asia, EG2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC021 */ +GAME( 1998, ehrgeiz, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (World, EG2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC021 */ +GAME( 1998, ehrgeizua, ehrgeiz, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (US, EG3/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC021 */ GAME( 1998, ehrgeizja, ehrgeiz, coh700, namcos12, namcos12_state, namcos12, ROT0, "Square / Namco", "Ehrgeiz (Japan, EG1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC021 */ GAME( 1998, mdhorse, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "MOSS / Namco", "Derby Quiz My Dream Horse (Japan, MDH1/VER.A2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) /* KC035 */ GAME( 1998, aplarail, 0, aplarail, aplarail, namcos12_state, namcos12, ROT0, "Namco / Tomy", "Attack Pla Rail (Japan, AP1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC032 */ GAME( 1998, sws98, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium '98 (Japan, SS81/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC0?? */ GAME( 1998, technodr, 0, technodr, technodr, namcos12_state, technodr, ROT0, "Namco", "Techno Drive (Japan, TD2/VER.B)", MACHINE_IMPERFECT_GRAPHICS ) /* KC056 */ -GAME( 1998, tenkomor, 0, coh700, namcos12, namcos12_state, namcos12, ROT90,"Namco", "Tenkomori Shooting (Asia, TKM2/VER.A1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC036 */ +GAME( 1998, tenkomor, 0, coh700, namcos12, namcos12_state, namcos12, ROT90,"Namco", "Tenkomori Shooting (World, TKM2/VER.A1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC036 */ GAME( 1998, tenkomorja,tenkomor, coh700, namcos12, namcos12_state, namcos12, ROT90,"Namco", "Tenkomori Shooting (Japan, TKM1/VER.A1)", MACHINE_IMPERFECT_GRAPHICS ) /* KC036 */ GAME( 1998, fgtlayer, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Arika / Namco", "Fighting Layer (Japan, FTL1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC037 */ GAME( 1999, pacapp, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Produce / Namco", "Paca Paca Passion (Japan, PPP1/VER.A2)", MACHINE_IMPERFECT_GRAPHICS ) /* KC038 */ GAME( 1999, ptblank2, 0, ptblank2, ptblank2, namcos12_state, ptblank2, ROT0, "Namco", "Point Blank 2 (GNB5/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC042 */ GAME( 1999, gunbarl, ptblank2, ptblank2, ptblank2, namcos12_state, ptblank2, ROT0, "Namco", "Gunbarl (Japan, GNB4/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC042 */ GAME( 1999, sws99, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Super World Stadium '99 (Japan, SS91/VER.A3)", MACHINE_IMPERFECT_GRAPHICS ) /* KC043 */ -GAME( 1999, tektagt, 0, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (US, TEG3/VER.C1)", 0 ) /* KC044 */ -GAME( 1999, tektagtac, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Asia, TEG2/VER.C1, set 1)", 0 ) /* KC044 */ -GAME( 1999, tektagtac1,tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Asia, TEG2/VER.C1, set 2)", 0 ) /* KC044 */ +GAME( 1999, tektagt, 0, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (World, TEG2/VER.C1, set 1)", 0 ) /* KC044 */ +GAME( 1999, tektagtc1, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (World, TEG2/VER.C1, set 2)", 0 ) /* KC044 */ +GAME( 1999, tektagtuc1,tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (US, TEG3/VER.C1)", 0 ) /* KC044 */ GAME( 1999, tektagtub, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (US, TEG3/VER.B)", 0 ) /* KC044 */ GAME( 1999, tektagtjc1,tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.C1)", MACHINE_NOT_WORKING ) /* KC044 */ GAME( 1999, tektagtjb, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.B)", MACHINE_NOT_WORKING ) /* KC044 */ GAME( 1999, tektagtja, tektagt, tektagt, namcos12, namcos12_state, namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.A3)", MACHINE_NOT_WORKING ) /* KC044 */ -GAME( 1999, ghlpanic, 0, ptblank2, ghlpanic, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Ghoul Panic (Asia, OB2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC045 */ +GAME( 1999, ghlpanic, 0, ptblank2, ghlpanic, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Ghoul Panic (World, OB2/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC045 */ GAME( 1999, ohbakyuun, ghlpanic, ptblank2, ghlpanic, namcos12_state, namcos12, ROT0, "Eighting / Raizing / Namco", "Oh! Bakyuuun (Japan, OB1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC045 */ GAME( 1999, pacapp2, 0, coh700, namcos12, namcos12_state, namcos12, ROT0, "Produce / Namco", "Paca Paca Passion 2 (Japan, PKS1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC046 */ GAME( 1999, mrdrillr, 0, coh700, namcos124w,namcos12_state,namcos12, ROT0, "Namco", "Mr. Driller (US, DRI3/VER.A2)", MACHINE_IMPERFECT_GRAPHICS ) /* KC048 */ diff --git a/src/mame/drivers/namcos2.cpp b/src/mame/drivers/namcos2.cpp index dc73bbb17f7..f738cb7d8dc 100644 --- a/src/mame/drivers/namcos2.cpp +++ b/src/mame/drivers/namcos2.cpp @@ -447,7 +447,7 @@ $a00000 checks have been seen on the Final Lap boards. #include "emu.h" #include "includes/namcos2.h" -#include "includes/namcoic.h" +#include "machine/namcoic.h" #include "cpu/m68000/m68000.h" #include "cpu/m6805/m6805.h" @@ -1231,12 +1231,12 @@ INPUT_PORTS_END static INPUT_PORTS_START( assault ) PORT_START("MCUB") /* 63B05Z0 - PORT B */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_4WAY PORT_PLAYER(1) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) @@ -1244,23 +1244,23 @@ static INPUT_PORTS_START( assault ) NAMCOS2_MCU_ANALOG_PORT_DEFAULT PORT_START("MCUH") /* 63B05Z0 - PORT H */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_4WAY PORT_PLAYER(1) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_4WAY PORT_PLAYER(1) NAMCOS2_MCU_DIPSW_DEFAULT /* These are tagged this way to make easier reads by tag */ PORT_START("MCUDI0") /* 63B05Z0 - $3000 */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_4WAY PORT_PLAYER(1) PORT_START("MCUDI1") /* 63B05Z0 - $3001 */ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("MCUDI2") /* 63B05Z0 - $3002 */ @@ -1681,7 +1681,7 @@ via software as INT1 /* */ /*************************************************************/ -static MACHINE_CONFIG_START( configure_c148_standard, namcos2_state ) +static MACHINE_CONFIG_START( configure_c148_standard ) MCFG_NAMCO_C148_ADD("master_intc","maincpu",true) namco_c148_device::link_c148_device(*device,"slave_intc"); MCFG_NAMCO_C148_EXT1_CB(WRITE8(namcos2_state, sound_reset_w)) @@ -1713,7 +1713,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos2_state::screen_scanline) } } -static MACHINE_CONFIG_START( default, namcos2_state ) +static MACHINE_CONFIG_START( default ) MCFG_CPU_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_CPU_PROGRAM_MAP(master_default_am) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1) @@ -1754,7 +1754,7 @@ static MACHINE_CONFIG_START( default, namcos2_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", C140_SOUND_CLOCK) /* 21.333kHz */ - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM2) + MCFG_C140_BANK_TYPE(SYSTEM2) MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) @@ -1767,7 +1767,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( default2, default ) MCFG_C140_REPLACE("c140", C140_SOUND_CLOCK) /* 21.333kHz */ - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM2) + MCFG_C140_BANK_TYPE(SYSTEM2) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -1781,7 +1781,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( default3, default ) MCFG_C140_REPLACE("c140", C140_SOUND_CLOCK) /* 21.333kHz */ - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM2) + MCFG_C140_BANK_TYPE(SYSTEM2) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) @@ -1790,7 +1790,7 @@ static MACHINE_CONFIG_DERIVED( default3, default ) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gollygho, namcos2_state ) +static MACHINE_CONFIG_START( gollygho ) MCFG_CPU_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_CPU_PROGRAM_MAP(master_default_am) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1) @@ -1831,7 +1831,7 @@ static MACHINE_CONFIG_START( gollygho, namcos2_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", C140_SOUND_CLOCK) /* 21.333kHz */ - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM2) + MCFG_C140_BANK_TYPE(SYSTEM2) MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) @@ -1840,7 +1840,7 @@ static MACHINE_CONFIG_START( gollygho, namcos2_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( finallap, namcos2_state ) +static MACHINE_CONFIG_START( finallap ) MCFG_CPU_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_CPU_PROGRAM_MAP(master_finallap_am) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1) @@ -1886,7 +1886,7 @@ static MACHINE_CONFIG_START( finallap, namcos2_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", C140_SOUND_CLOCK) /* 21.333kHz */ - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM2) + MCFG_C140_BANK_TYPE(SYSTEM2) MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) @@ -1895,7 +1895,7 @@ static MACHINE_CONFIG_START( finallap, namcos2_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sgunner, namcos2_state ) +static MACHINE_CONFIG_START( sgunner ) MCFG_CPU_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_CPU_PROGRAM_MAP(master_sgunner_am) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1) @@ -1938,7 +1938,7 @@ static MACHINE_CONFIG_START( sgunner, namcos2_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", C140_SOUND_CLOCK) /* 21.333kHz */ - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM2) + MCFG_C140_BANK_TYPE(SYSTEM2) MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) @@ -1947,7 +1947,7 @@ static MACHINE_CONFIG_START( sgunner, namcos2_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sgunner2, namcos2_state ) +static MACHINE_CONFIG_START( sgunner2 ) MCFG_CPU_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_CPU_PROGRAM_MAP(master_sgunner_am) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1) @@ -1995,7 +1995,7 @@ static MACHINE_CONFIG_START( sgunner2, namcos2_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", C140_SOUND_CLOCK) /* 21.333kHz */ - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM2) + MCFG_C140_BANK_TYPE(SYSTEM2) MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) @@ -2004,7 +2004,7 @@ static MACHINE_CONFIG_START( sgunner2, namcos2_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( luckywld, namcos2_state ) +static MACHINE_CONFIG_START( luckywld ) MCFG_CPU_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_CPU_PROGRAM_MAP(master_luckywld_am) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1) @@ -2050,7 +2050,7 @@ static MACHINE_CONFIG_START( luckywld, namcos2_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", C140_SOUND_CLOCK) /* 21.333kHz */ - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM2) + MCFG_C140_BANK_TYPE(SYSTEM2) MCFG_SOUND_ROUTE(0, "lspeaker", 0.75) MCFG_SOUND_ROUTE(1, "rspeaker", 0.75) @@ -2059,7 +2059,7 @@ static MACHINE_CONFIG_START( luckywld, namcos2_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( metlhawk, namcos2_state ) +static MACHINE_CONFIG_START( metlhawk ) MCFG_CPU_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_CPU_PROGRAM_MAP(master_metlhawk_am) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1) @@ -2102,7 +2102,7 @@ static MACHINE_CONFIG_START( metlhawk, namcos2_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", C140_SOUND_CLOCK) /* 21.333kHz */ - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM2) + MCFG_C140_BANK_TYPE(SYSTEM2) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp index c6c75b97772..8c0e249eb63 100644 --- a/src/mame/drivers/namcos21.cpp +++ b/src/mame/drivers/namcos21.cpp @@ -520,7 +520,7 @@ Filter Board */ #include "emu.h" #include "includes/namcos21.h" -#include "includes/namcoic.h" +#include "machine/namcoic.h" #include "cpu/m68000/m68000.h" #include "cpu/m6805/m6805.h" @@ -1870,7 +1870,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos21_state::screen_scanline) } } -static MACHINE_CONFIG_START( configure_c148_standard, namcos21_state ) +static MACHINE_CONFIG_START( configure_c148_standard ) MCFG_NAMCO_C148_ADD("master_intc","maincpu",true) namco_c148_device::link_c148_device(*device,"slave_intc"); MCFG_NAMCO_C148_EXT1_CB(WRITE8(namcos21_state, sound_reset_w)) @@ -1881,7 +1881,7 @@ static MACHINE_CONFIG_START( configure_c148_standard, namcos21_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( namcos21, namcos21_state ) +static MACHINE_CONFIG_START( namcos21 ) MCFG_CPU_ADD("maincpu", M68000,12288000) /* Master */ MCFG_CPU_PROGRAM_MAP(master_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos21_state, screen_scanline, "screen", 0, 1) @@ -1938,7 +1938,7 @@ static MACHINE_CONFIG_START( namcos21, namcos21_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", 8000000/374) - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM21) + MCFG_C140_BANK_TYPE(SYSTEM21) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) @@ -1948,7 +1948,7 @@ static MACHINE_CONFIG_START( namcos21, namcos21_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( driveyes, namcos21_state ) +static MACHINE_CONFIG_START( driveyes ) MCFG_CPU_ADD("maincpu", M68000,12288000) /* Master */ MCFG_CPU_PROGRAM_MAP(driveyes_master_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos21_state, screen_scanline, "screen", 0, 1) @@ -1999,7 +1999,7 @@ static MACHINE_CONFIG_START( driveyes, namcos21_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", 8000000/374) - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM21) + MCFG_C140_BANK_TYPE(SYSTEM21) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) @@ -2008,7 +2008,7 @@ static MACHINE_CONFIG_START( driveyes, namcos21_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.30) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( winrun, namcos21_state ) +static MACHINE_CONFIG_START( winrun ) MCFG_CPU_ADD("maincpu", M68000,12288000) /* Master */ MCFG_CPU_PROGRAM_MAP(winrun_master_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos21_state, screen_scanline, "screen", 0, 1) @@ -2062,7 +2062,7 @@ static MACHINE_CONFIG_START( winrun, namcos21_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_C140_ADD("c140", 8000000/374) - MCFG_C140_BANK_TYPE(C140_TYPE_SYSTEM21) + MCFG_C140_BANK_TYPE(SYSTEM21) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp index aae96ea6c37..87cc9311bad 100644 --- a/src/mame/drivers/namcos22.cpp +++ b/src/mame/drivers/namcos22.cpp @@ -3732,7 +3732,7 @@ void namcos22_state::machine_start() } // System 22 -static MACHINE_CONFIG_START( namcos22, namcos22_state ) +static MACHINE_CONFIG_START( namcos22 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68020,SS22_MASTER_CLOCK/2) /* 25 MHz? */ @@ -3798,7 +3798,7 @@ static MACHINE_CONFIG_DERIVED( cybrcomm, namcos22 ) MACHINE_CONFIG_END // Super System 22 -static MACHINE_CONFIG_START( namcos22s, namcos22_state ) +static MACHINE_CONFIG_START( namcos22s ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020,SS22_MASTER_CLOCK/2) diff --git a/src/mame/drivers/namcos23.cpp b/src/mame/drivers/namcos23.cpp index 54c3bd4fb02..a8dbbbd5e61 100644 --- a/src/mame/drivers/namcos23.cpp +++ b/src/mame/drivers/namcos23.cpp @@ -1565,7 +1565,7 @@ public: uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(interrupt); TIMER_CALLBACK_MEMBER(c361_timer_cb); - void sub_irq(screen_device &screen, bool vblank_state); + DECLARE_WRITE_LINE_MEMBER(sub_irq); uint8_t nthbyte(const uint32_t *pSource, int offs); uint16_t nthword(const uint32_t *pSource, int offs); inline int32_t u32_to_s24(uint32_t v); @@ -2460,11 +2460,11 @@ INTERRUPT_GEN_MEMBER(namcos23_state::interrupt) m_render.count[m_render.cur] = 0; } -void namcos23_state::sub_irq(screen_device &screen, bool vblank_state) +WRITE_LINE_MEMBER(namcos23_state::sub_irq) { - m_subcpu->set_input_line(1, vblank_state ? ASSERT_LINE : CLEAR_LINE); - m_adc->adtrg_w(vblank_state); - m_sub_portb = (m_sub_portb & 0x7f) | (vblank_state << 7); + m_subcpu->set_input_line(1, state ? ASSERT_LINE : CLEAR_LINE); + m_adc->adtrg_w(state); + m_sub_portb = (m_sub_portb & 0x7f) | (state << 7); } @@ -3536,7 +3536,7 @@ static GFXDECODE_START( namcos23 ) GFXDECODE_END -static MACHINE_CONFIG_START( gorgon, namcos23_state ) +static MACHINE_CONFIG_START( gorgon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R4650BE, BUSCLOCK*4) @@ -3583,7 +3583,7 @@ static MACHINE_CONFIG_START( gorgon, namcos23_state ) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479) MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(namcos23_state, sub_irq) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(namcos23_state, sub_irq)) MCFG_PALETTE_ADD("palette", 0x8000) @@ -3602,7 +3602,7 @@ static MACHINE_CONFIG_START( gorgon, namcos23_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( s23, namcos23_state ) +static MACHINE_CONFIG_START( s23 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R4650BE, BUSCLOCK*4) @@ -3649,7 +3649,7 @@ static MACHINE_CONFIG_START( s23, namcos23_state ) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479) MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(namcos23_state, sub_irq) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(namcos23_state, sub_irq)) MCFG_PALETTE_ADD("palette", 0x8000) @@ -3688,7 +3688,7 @@ static MACHINE_CONFIG_DERIVED( gmen, s23 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ss23, namcos23_state ) +static MACHINE_CONFIG_START( ss23 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R4650BE, BUSCLOCK*5) @@ -3726,7 +3726,7 @@ static MACHINE_CONFIG_START( ss23, namcos23_state ) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479) MCFG_SCREEN_UPDATE_DRIVER(namcos23_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(namcos23_state, sub_irq) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(namcos23_state, sub_irq)) MCFG_PALETTE_ADD("palette", 0x8000) diff --git a/src/mame/drivers/namcos86.cpp b/src/mame/drivers/namcos86.cpp index f3939ef636c..8fc4bb8a0c5 100644 --- a/src/mame/drivers/namcos86.cpp +++ b/src/mame/drivers/namcos86.cpp @@ -1047,7 +1047,7 @@ GFXDECODE_END /*******************************************************************/ -static MACHINE_CONFIG_START( hopmappy, namcos86_state ) +static MACHINE_CONFIG_START( hopmappy ) /* basic machine hardware */ MCFG_CPU_ADD("cpu1", M6809, XTAL_49_152MHz/32) @@ -1071,7 +1071,7 @@ static MACHINE_CONFIG_START( hopmappy, namcos86_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_49_152MHz/8, 384, 3+8*8, 3+44*8, 264, 2*8, 30*8) MCFG_SCREEN_UPDATE_DRIVER(namcos86_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(namcos86_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(namcos86_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", namcos86) diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp index 91f1754a7ce..674014ca34d 100644 --- a/src/mame/drivers/nanos.cpp +++ b/src/mame/drivers/nanos.cpp @@ -453,7 +453,7 @@ static GFXDECODE_START( nanos ) GFXDECODE_ENTRY( "chargen", 0x0000, nanos_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( nanos, nanos_state ) +static MACHINE_CONFIG_START( nanos ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(nanos_mem) @@ -525,5 +525,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, nanos, 0, 0, nanos, nanos, driver_device, 0, "Ingenieurhochschule fur Seefahrt Warnemunde/Wustrow", "NANOS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1985, nanos, 0, 0, nanos, nanos, nanos_state, 0, "Ingenieurhochschule fur Seefahrt Warnemunde/Wustrow", "NANOS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp index 89f261779c5..42967b0cf99 100644 --- a/src/mame/drivers/naomi.cpp +++ b/src/mame/drivers/naomi.cpp @@ -592,6 +592,7 @@ Derby Owners Club World Edition EX (Rev D) 840-0088C 22336D 7 (128Mb) 3 Giga Wing 2 841-0014C 22270 5 (128Mb) 315-6319A 315-6213 317-5064-COM ? Mobile Suit Gundam: Federation Vs. Zeon 841-0017C 23638 10 (128Mb) 315-6319A 315-6213 317-5070-COM not present Moero! Justice Gakuen / Project Justice (Rev A) 841-0015C 23548A 11 (128Mb) 315-6319A 315-6213 317-5065-COM present +MushiKing - The King Of Beetle 2K4 2ND 840-0152C 24241 5 (128Mb) 315-6319A 315-6213 not present not present requires 610-0669 barcode reader MushiKing - The King Of Beetle 2K5 1ST 840-0158C 24286 7 (128Mb) 315-6319A 315-6213 not present not present requires 610-0669 barcode reader Oinori-daimyoujin Matsuri 840-0126B 24053 5 (128Mb) 315-6319A 315-6213 not present not present requires 837-14274 "G2 EXPANSION BD" (similar to hopper 837-14381 but with ARC NET chip) Samba de Amigo Ver. 2000 840-0047C 23600 11 (128Mb) 315-6319A 315-6213 317-0295-COM ? @@ -712,12 +713,13 @@ Notes: /Gun Survivor 2 Biohazard \Code: Veronica (Japan, Ver.E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF1 uses Namco FCA JVS I/O (not dumped), will crash if COMM.BOARD not present /Gun Survivor 2 Biohazard -\Code: Veronica (Asia, Ver.E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF2 +\Code: Veronica (World, Ver.E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF2 /Shin Nihon Prowrestling Toukon /FL0 & FL1 have pin55 raised from PCB. \Retsuden 4 Arcade Edition (Japan, Ver.A) F2X 25349801 2 (64Mb) 15 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM TRF1 \They are connected together and go to pin89 on 2K. World Kicks PCB (Japan, WKC1 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC1 uses Namco V226 JVS I/O (not dumped) +World Kicks PCB (World, WKC2 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC2 not dumped, known to exists World Kicks (Japan, WK1 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK1 -World Kicks (Asia, WK2 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK2 +World Kicks (World, WK2 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK2 World Kicks (US, WK3 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK3 (1) note: the number in the game code has the following meaning: 1 = Japan, 2 = Asia, 3 = US, 4 = World. @@ -764,12 +766,12 @@ Notes: Cart Sticker FL0-FL3 FLASHROMs X76F100 CY37128 315-5881 Known Game Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 2J IC @ 1M code (1) Notes ---------------------------------------------------------------------------------------------------------------------------------------- -Mazan: Flash of the Blade (Asia, Ver.A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ2 uses 2x Namco FCB JVS I/O (not dumped) +Mazan: Flash of the Blade (World, Ver.A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ2 uses 2x Namco FCB JVS I/O (not dumped) Mazan: Flash of the Blade (US, Ver.A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ3 Ninja Assault (Japan, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA1 uses Namco JYU JVS I/O -Ninja Assault (Asia, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA2 +Ninja Assault (World, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA2 Ninja Assault (US, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA3 -Ninja Assault (World, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA4 +Ninja Assault (Asia, Ver.A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA4 (1) note: the number in the game code has the following meaning: 1 = Japan, 2 = Asia, 3 = US, 4 = World. @@ -2673,7 +2675,7 @@ MACHINE_RESET_MEMBER(naomi_state,naomi) */ // TODO: merge with Dreamcast base machine - MACHINE_CONFIG_START( naomi_aw_base, dc_state ) + MACHINE_CONFIG_START( naomi_aw_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH4LE, CPU_CLOCK) // SH4!!! MCFG_SH4_MD0(1) @@ -2714,13 +2716,15 @@ MACHINE_RESET_MEMBER(naomi_state,naomi) MCFG_AICARTC_ADD("aicartc", XTAL_32_768kHz ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( naomi_base, naomi_state ) +static MACHINE_CONFIG_START( naomi_base ) MCFG_FRAGMENT_ADD( naomi_aw_base ) MCFG_EEPROM_SERIAL_93C46_ADD("main_eeprom") MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) - MCFG_MIE_ADD("mie", XTAL_32MHz/2, "maple_dc", 0, nullptr, nullptr, nullptr, ":MIE.3", nullptr, ":MIE.5", nullptr, nullptr) // Actual frequency unknown, most likely 1/2 of 32MHz XTAL or even 2/3 (yes, 21MHz Z80 core) + // clock was measured using GPIO (13.499Mhz) and UART (13.260MHz) access + // IO ports access may have latency so actual CPU core clock can be higher, possible OSC3 14.7456MHz + MCFG_MIE_ADD("mie", 13500000, "maple_dc", 0, nullptr, nullptr, nullptr, ":MIE.3", nullptr, ":MIE.5", nullptr, nullptr) MCFG_SEGA_837_13551_DEVICE_ADD("837_13551", "mie", ":TILT", ":P1", ":P2", ":A0", ":A1", ":A2", ":A3", ":A4", ":A5", ":A6", ":A7", ":OUTPUT") MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("mie_eeprom") @@ -2782,13 +2786,13 @@ MACHINE_CONFIG_END * Naomi 2 GD-Rom */ -static MACHINE_CONFIG_START( naomi2_base, naomi2_state ) +static MACHINE_CONFIG_START( naomi2_base ) MCFG_POWERVR2_ADD("powervr2_slave", WRITE8(dc_state, pvr_irq)) // TODO: ELAN device MACHINE_CONFIG_END -static MACHINE_CONFIG_START( naomi2gd, naomi2_state ) +static MACHINE_CONFIG_START( naomi2gd ) MCFG_FRAGMENT_ADD( naomigd ) MCFG_FRAGMENT_ADD( naomi2_base ) @@ -2800,7 +2804,7 @@ MACHINE_CONFIG_END * Naomi 2, M1 sub-board */ -static MACHINE_CONFIG_START( naomi2m1, naomi2_state ) +static MACHINE_CONFIG_START( naomi2m1 ) MCFG_FRAGMENT_ADD( naomim1 ) MCFG_FRAGMENT_ADD( naomi2_base ) @@ -2812,7 +2816,7 @@ MACHINE_CONFIG_END * Naomi 2, M2/3 sub-board */ -static MACHINE_CONFIG_START( naomi2m2, naomi2_state ) +static MACHINE_CONFIG_START( naomi2m2 ) MCFG_FRAGMENT_ADD( naomim2 ) MCFG_FRAGMENT_ADD( naomi2_base ) @@ -2824,7 +2828,7 @@ MACHINE_CONFIG_END * Atomiswave */ -static MACHINE_CONFIG_START( aw_base, atomiswave_state ) +static MACHINE_CONFIG_START( aw_base ) MCFG_FRAGMENT_ADD( naomi_aw_base ) MCFG_CPU_MODIFY("maincpu") @@ -5968,6 +5972,7 @@ ROM_START( wwfroyal ) ROM_PARAMETER( ":rom_board:segam2crypt:key", "281627c3" ) ROM_END +// secret change game version (II/III/III+) menu: in game test mode highlight EXIT then press P1+P2 buttons 2 30 times ROM_START( mushi2eo ) NAOMI_BIOS NAOMI_DEFAULT_EEPROM @@ -6373,7 +6378,7 @@ ROM_START( wldkicksj ) ROM_PARAMETER( ":rom_board:segam2crypt:key", "052e2901" ) ROM_END -ROM_START( wldkicksa ) +ROM_START( wldkicks ) NAOMI_BIOS NAOMI_DEFAULT_EEPROM @@ -6395,7 +6400,7 @@ ROM_START( wldkicksa ) ROM_PARAMETER( ":rom_board:segam2crypt:key", "052e2901" ) ROM_END -ROM_START( wldkicks ) +ROM_START( wldkicksu ) NAOMI_BIOS NAOMI_DEFAULT_EEPROM @@ -6491,7 +6496,7 @@ ROM_START( ninjasltj ) ROM_PARAMETER( ":rom_board:segam2crypt:key", "000ca510" ) ROM_END -ROM_START( ninjaslta ) +ROM_START( ninjaslt ) NAOMI_BIOS NAOMI_DEFAULT_EEPROM @@ -6541,7 +6546,7 @@ ROM_START( ninjasltu ) ROM_PARAMETER( ":rom_board:segam2crypt:key", "000ca510" ) ROM_END -ROM_START( ninjaslt ) +ROM_START( ninjaslta ) NAOMI_BIOS NAOMI_DEFAULT_EEPROM @@ -6566,7 +6571,7 @@ ROM_START( ninjaslt ) ROM_PARAMETER( ":rom_board:segam2crypt:key", "000ca510" ) ROM_END -ROM_START( mazana ) +ROM_START( mazan ) NAOMI_BIOS NAOMI_DEFAULT_EEPROM @@ -6585,7 +6590,7 @@ ROM_START( mazana ) ROM_PARAMETER( ":rom_board:segam2crypt:key", "280fea94" ) ROM_END -ROM_START( mazan ) +ROM_START( mazanu ) NAOMI_BIOS NAOMI_DEFAULT_EEPROM @@ -6679,8 +6684,8 @@ ROM_START( kick4csh ) // LED6,7 - 7seg LEDs // BT1 - Panasonic CR2032 battery ROM_REGION(0x220000, "hopper_board", 0) - ROM_LOAD( "fpr-24150.ic6", 0x0000000, 0x200000, CRC(3845c34c) SHA1(027b17bac64482ee152773d5fab30fcbc6e2bcb7) ) // SH4 code - ROM_LOAD( "6372a.ic3", 0x0200000, 0x020000, CRC(f30839ad) SHA1(ea1a32c4da1ed9745300bcdd7964a7c0964e3221) ) // FPGA config + ROM_LOAD( "fpr-24150.ic6", 0x0000000, 0x200000, CRC(3845c34c) SHA1(027b17bac64482ee152773d5fab30fcbc6e2bcb7) ) // SH4 code + ROM_LOAD( "6372a.ic3", 0x0200000, 0x020000, CRC(f30839ad) SHA1(ea1a32c4da1ed9745300bcdd7964a7c0964e3221) ) // FPGA config // 840-0140 2004 317-0397-COM Naomi ROM_PARAMETER( ":rom_board:key", "820857c9" ) @@ -7346,7 +7351,8 @@ ROM_START( gundmxgd ) ROM_LOAD("317-5079-com.pic", 0x00, 0x4000, CRC(8f9fb55d) SHA1(ca93814ae7a4e99762dd1c2a743e21402b143811) ) ROM_END -ROM_START( cvs2gd ) +// ver 010705 +ROM_START( cvs2mf ) NAOMIGD_BIOS NAOMI_DEFAULT_EEPROM @@ -7359,6 +7365,21 @@ ROM_START( cvs2gd ) ROM_LOAD("317-5078-com.pic", 0x00, 0x4000, CRC(e7bb621d) SHA1(0882d0e12ca4fb81dda2268cd12724a10278c220) ) ROM_END +// ver 010804 +// with Japan BIOS will be shown 010705, likely forgot / was not cared to update it +ROM_START( cvs2 ) + NAOMIGD_BIOS + NAOMI_DEFAULT_EEPROM + + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "gdl-0008", 0, SHA1(a45c7df4ca6692ff0d1a34f8269e17760fbd3a04) ) + + ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) + //PIC16C622A (317-5078-COM) + //(sticker 253-5509-5078) + ROM_LOAD("317-5078-com.pic", 0x00, 0x4000, CRC(e7bb621d) SHA1(0882d0e12ca4fb81dda2268cd12724a10278c220) ) +ROM_END + ROM_START( ikaruga ) NAOMIGD_BIOS NAOMI_DEFAULT_EEPROM @@ -7390,7 +7411,7 @@ ROM_START( cleoftp ) NAOMI_DEFAULT_EEPROM DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdl-0012", 0, BAD_DUMP SHA1(aae4c1321fdee37d5405c6cbe648e0596624ed13) ) + DISK_IMAGE_READONLY( "gdl-0012", 0, SHA1(406dfbab95070f4d4e1c4d5a933519dfee78702a) ) ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) //PIC16C622A (317-5083-COM) @@ -7693,7 +7714,7 @@ ROM_START( radirgyo ) ROM_LOAD("radirgy-default-eeprom.bin", 0, 0x80, CRC(8d60a282) SHA1(6d81dec88a1ade45e1edf2bdb3683c6cd0651eeb)) DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdl-0032", 0, BAD_DUMP SHA1(ebd7a40e59082e660ebf9a2d4ae7cb64371dae8d) ) + DISK_IMAGE_READONLY( "gdl-0032", 0, SHA1(d6078b8ab91afad5d7da13b39fbb09ab1865cce2) ) ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) //PIC16C621A (317-5110-JPN) @@ -8004,7 +8025,7 @@ ROM_START( monkeyba ) NAOMI_DEFAULT_EEPROM DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gds-0008", 0, BAD_DUMP SHA1(2fadcd141bdbde77b2b335b270959a516af44d99) ) + DISK_IMAGE_READONLY( "gds-0008", 0, SHA1(91d28f2e304d390f27f3b8a651d53ddd48d6169d) ) ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) ROM_LOAD("317-0307-com.pic", 0x00, 0x4000, CRC(4046de19) SHA1(8adda9f223e926148b36744bbbaa89557544a229) ) @@ -8125,7 +8146,7 @@ ROM_START( lupinsho ) NAOMI_DEFAULT_EEPROM DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gds-0018", 0, BAD_DUMP SHA1(0633a99a666f363ab30450a76b9753685d6b1f57) ) + DISK_IMAGE_READONLY( "gds-0018", 0, SHA1(3b7d5dd917b9a2cc9b7b51aad22f8e75383c3301) ) ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) ROM_LOAD("317-0325-jpn.pic", 0x00, 0x4000, CRC(f71cb2fc) SHA1(281b3b3b03edf9a39e380976de528b7c9674de53) ) @@ -8257,6 +8278,43 @@ ROM_START( ngdup23e ) ROM_LOAD("317-0387-com.pic", 0x00, 0x4000, CRC(8728aeaa) SHA1(07983ab41d143f845c3150dfc9b7301968708e18) ) ROM_END +// requires 837-14381 "G2 EXPANSION BD" I/O board, NetDIMM, IC Card reader SAXA HW210 and coin mechanics +ROM_START( dragntra ) + NAOMIGD_BIOS + NAOMI_DEFAULT_EEPROM + + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "gds-0030a", 0, SHA1(fa7fb0ff09f1c7b0cfacca45495ac8c6a22cc061) ) + + ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) + //PIC16C621A (317-0363-COM) + //(sticker 253-5508-0363) + ROM_LOAD("317-0363-com.pic", 0x00, 0x4000, NO_DUMP ) + + ROM_REGION( 0x4000, "satl_pic", ROMREGION_ERASEFF) + //PIC16C621A (317-0364-COM) + //(sticker 253-5508-0364) + ROM_LOAD("317-0364-com.pic", 0x00, 0x4000, CRC(82975008) SHA1(6732842d4af630d6c6d96bb11ba98caed1cb6b24) ) +ROM_END + +ROM_START( dragntr ) + NAOMIGD_BIOS + NAOMI_DEFAULT_EEPROM + + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "gds-0030b", 0, SHA1(a49e1ae2090e5d1fd4e3e10fa3b7626c23fec677) ) + + ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) + //PIC16C621A (317-0363-COM) + //(sticker 253-5508-0363) + ROM_LOAD("317-0363-com.pic", 0x00, 0x4000, NO_DUMP ) + + ROM_REGION( 0x4000, "satl_pic", ROMREGION_ERASEFF) + //PIC16C621A (317-0364-COM) + //(sticker 253-5508-0364) + ROM_LOAD("317-0364-com.pic", 0x00, 0x4000, CRC(82975008) SHA1(6732842d4af630d6c6d96bb11ba98caed1cb6b24) ) +ROM_END + /* 0C03F492: MOV R5,R0 0C03F494: MOV R0,R5 @@ -8956,7 +9014,7 @@ ROM_START( initdv2e ) NAOMI_DEFAULT_EEPROM DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gds-0027", 0, BAD_DUMP SHA1(44746f0ceb1a3bbcd1db11a35c78c93a030f02de) ) + DISK_IMAGE_READONLY( "gds-0027", 0, SHA1(c146e8c4d71d1a0cbe836a0b50dea87797869da8) ) ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) //PIC16C622A (317-0357-EXP) @@ -8993,7 +9051,7 @@ ROM_START( initdv3jb ) NAOMI_DEFAULT_EEPROM DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gds-0032b", 0, BAD_DUMP SHA1(568411aa72ca308a03a6b5b61c79833464b88bc6) ) + DISK_IMAGE_READONLY( "gds-0032b", 0, SHA1(3b4d5686c26d07eed8c835b07516da9840c1b905) ) ROM_REGION( 0x4000, "pic", ROMREGION_ERASE) //PIC16C622A (317-0379-JPN 253-5508-0379J) @@ -9819,21 +9877,21 @@ ROM_END /* Main board and game specific BIOS */ /* Naomi */ GAME( 1998, naomi, 0, naomi, naomi, naomi_state, naomi, ROT0, "Sega", "Naomi Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) -/* game */ GAME( 1998, hod2bios, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi House of the Dead 2 Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) -/* game */ GAME( 1999, f355dlx, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi Ferrari F355 Challenge (deluxe) Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) -/* game */ GAME( 1999, f355bios, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi Ferrari F355 Challenge (twin/deluxe) Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) -/* game */ GAME( 1999, airlbios, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi Airline Pilots (deluxe) Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) -/* Naomi2*/ GAME( 2001, naomi2, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi 2 Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) +/* game */ GAME( 1998, hod2bios, 0, naomi, naomi, naomi_state, 0, ROT0, "Sega", "Naomi House of the Dead 2 Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) +/* game */ GAME( 1999, f355dlx, 0, naomi, naomi, naomi_state, 0, ROT0, "Sega", "Naomi Ferrari F355 Challenge (deluxe) Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) +/* game */ GAME( 1999, f355bios, 0, naomi, naomi, naomi_state, 0, ROT0, "Sega", "Naomi Ferrari F355 Challenge (twin/deluxe) Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) +/* game */ GAME( 1999, airlbios, 0, naomi, naomi, naomi_state, 0, ROT0, "Sega", "Naomi Airline Pilots (deluxe) Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) +/* Naomi2*/ GAME( 2001, naomi2, 0, naomi, naomi, naomi_state, 0, ROT0, "Sega", "Naomi 2 Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) /* GDROM */ GAME( 2001, naomigd, 0, naomi, naomi, naomi_state, naomi, ROT0, "Sega", "Naomi GD-ROM Bios", GAME_FLAGS|MACHINE_IS_BIOS_ROOT ) /* 834-xxxxx (Sega Naomi cart with game specific BIOS sets) */ /* 13636-01 */ GAME( 1998, hotd2, hod2bios, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2 (USA)", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */ /* 13636 */ GAME( 1998, hotd2o, hotd2, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */ /* none */ GAME( 1998, hotd2p, hotd2, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2 (prototype)", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */ -/* 13842 */ GAME( 1999, f355, f355dlx, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge (deluxe, no link)", GAME_FLAGS ) /* specific BIOS "f355dlx" needed */ -/* 13950 */ GAME( 1999, f355twin, f355bios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge (twin/deluxe)", GAME_FLAGS ) /* specific BIOS "f355bios" needed */ -/* none */ GAME( 2001, f355twn2, f355bios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge 2 - International Course Edition (twin/deluxe)", GAME_FLAGS ) /* specific BIOS "f355bios" needed */ -/* ????? */ GAME( 1999, alpiltdx, airlbios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Airline Pilots (deluxe) (Rev B)", GAME_FLAGS ) /* specific BIOS "airlbios" needed */ +/* 13842 */ GAME( 1999, f355, f355dlx, naomim2, naomi, naomi_state, 0, ROT0, "Sega", "Ferrari F355 Challenge (deluxe, no link)", GAME_FLAGS ) /* specific BIOS "f355dlx" needed */ +/* 13950 */ GAME( 1999, f355twin, f355bios, naomim2, naomi, naomi_state, 0, ROT0, "Sega", "Ferrari F355 Challenge (twin/deluxe)", GAME_FLAGS ) /* specific BIOS "f355bios" needed */ +/* none */ GAME( 2001, f355twn2, f355bios, naomim2, naomi, naomi_state, 0, ROT0, "Sega", "Ferrari F355 Challenge 2 - International Course Edition (twin/deluxe)", GAME_FLAGS ) /* specific BIOS "f355bios" needed */ +/* ????? */ GAME( 1999, alpiltdx, airlbios, naomim2, naomi, naomi_state, 0, ROT0, "Sega", "Airline Pilots (deluxe) (Rev B)", GAME_FLAGS ) /* specific BIOS "airlbios" needed */ /* 840-xxxxx (Sega Naomi cart games)*/ /* 0001 */ GAME( 1998, dybbnao, naomi, naomim2, dybbnao, naomi_state, naomi, ROT0, "Sega", "Dynamite Baseball NAOMI (Japan)", GAME_FLAGS ) @@ -9909,14 +9967,20 @@ ROM_END /* 0150 */ GAME( 2003, mtkob2, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetle 2K3 2nd (World)", GAME_FLAGS ) // not for Japan // 0152 Mushiking 2K4 2ND (Japan) /* 0158 */ GAME( 2005, mushi2k5, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetle 2K5 1st (Japan)", GAME_FLAGS ) -/* 0164 */ GAME( 2005, mushi2eo, mushik2e, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "MushiKing II - The King Of Beetle II ENG (Ver. 1.001) (World)", GAME_FLAGS ) // not for Japan -/* 0164 */ GAME( 2005, mushik2e, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "MushiKing II - The King Of Beetle II ENG (Ver. 2.001) (World)", GAME_FLAGS ) // not for Japan +/* 0164 */ GAME( 2005, mushi2eo, mushik2e, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 1.001) (World)", GAME_FLAGS ) // not for Japan, version can be changed in secret menu +/* 0164 */ GAME( 2005, mushik2e, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 2.001) (World)", GAME_FLAGS ) // not for Japan, version can be changed in secret menu /* 0166 */ GAME( 2006, zunou, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Touch De Zunou (Japan, Rev A)", GAME_FLAGS ) /* 0170-01 */ GAME( 2007, manicpnc, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Manic Panic Ghosts! (USA, Export)", GAME_FLAGS ) /* 0170 */ GAME( 2007, pokasuka, manicpnc, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Pokasuka Ghost! (Japan)", GAME_FLAGS ) /* 0175 */ GAME( 2007, asndynmt, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Asian Dynamite / Dynamite Deka EX", GAME_FLAGS ) /* 0177 */ GAME( 2007, rhytngk, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega / Nintendo - J.P ROOM", "Rhythm Tengoku (Japan)", GAME_FLAGS ) /* 0186 */ GAME( 2009, shorsepr, naomi, naomim4, naomi, naomi_state, naomi, ROT270,"Sega", "Star Horse Progress Returns (satellite)", GAME_FLAGS ) +// 0xxx Mushiking 2K3 1ST (Japan) +// 0xxx Mushiking 2K4 1ST (Japan) +// 0xxx Mushiking 2K5 2ND (Japan) note: starting from ver 2K6 was moved to SystemSP platform and later to PC-based hardware +// 0xxx Star Horse 2001 (main screens, server) +// 0xxx Star Horse 2002 (whole set) +// 0xxx Star Horse Progress Returns (main screens, server) // 00xx Mayjinsen (Formation Battle in May) - prototype, never released /* Cartridge prototypes of games released on GD-ROM */ @@ -9972,24 +10036,25 @@ ROM_END /* Cart games on Namco custom ROM board for game descriptions below NAMCO region codes decoded as such (same as in older NAMCO hardware): 1 - Japan - 2 - Asia + 2 - World 3 - USA - 4 - World - real meaning of 2 and 4 is not clear and seems not correct, 2 more looks like "World", 4 like "some other part of World", possible Europe + 4 - Asia + real meaning of 4 is not clear, it can be like "some other part of World", also possible Europe */ /* 25209801 */ GAME( 2000, wldkicksj, wldkicks, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks (Japan, WK1 Ver.A)", GAME_FLAGS ) -/* 25209801 */ GAME( 2000, wldkicksa, wldkicks, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks (Asia, WK2 Ver.A)", GAME_FLAGS ) -/* 25209801 */ GAME( 2000, wldkicks, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks (US, WK3 Ver.A)", GAME_FLAGS ) +/* 25209801 */ GAME( 2000, wldkicks, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks (World, WK2 Ver.A)", GAME_FLAGS ) +/* 25209801 */ GAME( 2000, wldkicksu, wldkicks, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks (US, WK3 Ver.A)", GAME_FLAGS ) /* 25349801 */ GAME( 2000, toukon4, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition (Japan, TRF1 Ver.A)", GAME_FLAGS ) /* 25469801 */ GAME( 2000, ninjasltj, ninjaslt, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (Japan, NJA1 Ver.A)", GAME_FLAGS ) -/* 25469801 */ GAME( 2000, ninjaslta, ninjaslt, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (Asia, NJA2 Ver.A)", GAME_FLAGS ) +/* 25469801 */ GAME( 2000, ninjaslt, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (World, NJA2 Ver.A)", GAME_FLAGS ) /* 25469801 */ GAME( 2000, ninjasltu, ninjaslt, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (US, NJA3 Ver.A)", GAME_FLAGS ) -/* 25469801 */ GAME( 2000, ninjaslt, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (World, NJA4 Ver.A)", GAME_FLAGS ) +/* 25469801 */ GAME( 2000, ninjaslta, ninjaslt, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (Asia, NJA4 Ver.A)", GAME_FLAGS ) /* 25509801 */ GAME( 2000, wldkickspj, wldkicks, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks PCB (Japan, WKC1 Ver.A)", GAME_FLAGS ) // "PCB" means upright version, uses analog button on control panel to kick the ball +// 25509801 World Kicks PCB (World, WKC2 Ver.A) /* 25709801 */ GAME( 2001, gunsur2j, gunsur2, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (Japan, BHF1 Ver.E)", GAME_FLAGS ) -/* 25709801 */ GAME( 2001, gunsur2, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (Asia, BHF2 Ver.E)", GAME_FLAGS ) -/* 25869812 */ GAME( 2002, mazana, mazan, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Mazan: Flash of the Blade (Asia, MAZ2 Ver.A)", GAME_FLAGS ) -/* 25869812 */ GAME( 2002, mazan, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Mazan: Flash of the Blade (US, MAZ3 Ver.A)", GAME_FLAGS ) +/* 25709801 */ GAME( 2001, gunsur2, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (World, BHF2 Ver.E)", GAME_FLAGS ) +/* 25869812 */ GAME( 2002, mazan, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Mazan: Flash of the Blade (World, MAZ2 Ver.A)", GAME_FLAGS ) +/* 25869812 */ GAME( 2002, mazanu, mazan, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Mazan: Flash of the Blade (US, MAZ3 Ver.A)", GAME_FLAGS ) /* GDS-xxxx (Sega GD-ROM games) */ /* 0001 */ GAME( 2000, confmiss, naomigd, naomigd, hotd2, naomi_state, naomigd, ROT0, "Sega", "Confidential Mission (GDS-0001)", GAME_FLAGS ) @@ -10043,7 +10108,8 @@ ROM_END // 0028 // 0029 Club Kart for Cycraft (GDS-0029) /* 0029A */ GAME( 2003, clubkcyc, naomi2, naomi2gd, naomi, naomi2_state, naomi2, ROT0, "Sega", "Club Kart for Cycraft (Rev A) (GDS-0029A)", GAME_FLAGS ) -// 0030 +/* 0030A */ GAME( 2003, dragntra, dragntr, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Dragon Treasure (Rev A) (GDS-0030A)", GAME_FLAGS ) +/* 0030B */ GAME( 2003, dragntr, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Dragon Treasure (Rev B) (GDS-0030B)", GAME_FLAGS ) /* 0031 */ GAME( 2003, puyofev, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Puyo Puyo Fever (Japan) (GDS-0031)", GAME_FLAGS ) // 0032 Initial D Arcade Stage Ver. 3 (Japan) (GDS-0032) // 0032A Initial D Arcade Stage Ver. 3 (Japan) (Rev A) (GDS-0032A) @@ -10070,7 +10136,6 @@ ROM_END /* 0041A */ GAME( 2005, dragntr3, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Dragon Treasure 3 (Rev A) (GDS-0041A)", GAME_FLAGS ) // 0042 NAOMI DIMM Firm Update for CF-BOX (GDS-0042) /* 0042A */ GAME( 2001, ndcfboxa, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Sega", "Naomi DIMM Firmware Update for CF-BOX (4.01) (GDS-0042A)", GAME_FLAGS ) -// 00?? Dragon Treasure (GDS-00xx) // 00?? Get Bass 2 (GDS-00xx) // 00?? Pochinya (GDS-00xx) @@ -10082,8 +10147,8 @@ ROM_END /* 0005 */ GAME( 2001, starseek,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "G.Rev", "Doki Doki Idol Star Seeker (GDL-0005)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND ) /* 0006 */ GAME( 2001, gundmxgd,naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Capcom", "Mobile Suit Gundam: Federation Vs. Zeon DX (USA, Japan) (GDL-0006)", GAME_FLAGS ) // 0007 Capcom Vs. SNK 2 (GDL-0007) -/* 0007A */ GAME( 2001, cvs2gd, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK 2 Millionaire Fighting 2001 (Rev A) (GDL-0007A)", GAME_FLAGS ) -// 0008 Capcom Vs. SNK 2 Mark Of The Millennium 2001 (Export) (GDL-0008) +/* 0007A */ GAME( 2001, cvs2mf, cvs2, naomigd, naomi, naomi_state, naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK 2 Millionaire Fighting 2001 (Rev A) (GDL-0007A)", GAME_FLAGS ) +/* 0008 */ GAME( 2001, cvs2, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK 2 Mark Of The Millennium 2001 (GDL-0008)", GAME_FLAGS ) // 0009 /* 0010 */ GAME( 2001, ikaruga, naomigd, naomigd, naomi, naomi_state, naomigd, ROT270, "Treasure", "Ikaruga (GDL-0010)", GAME_FLAGS ) /* 0011 */ GAME( 2002, ggxx, naomigd, naomigd, naomi, naomi_state, ggxx, ROT0,"Arc System Works","Guilty Gear XX (GDL-0011)", GAME_FLAGS ) diff --git a/src/mame/drivers/nascom1.cpp b/src/mame/drivers/nascom1.cpp index adb296ff2e5..3e8c3513e09 100644 --- a/src/mame/drivers/nascom1.cpp +++ b/src/mame/drivers/nascom1.cpp @@ -96,8 +96,8 @@ class nascom1_state : public nascom_state { public: nascom1_state(const machine_config &mconfig, device_type type, const char *tag) : - nascom_state(mconfig, type, tag) - {} + nascom_state(mconfig, type, tag) + { } uint32_t screen_update_nascom(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -108,12 +108,12 @@ class nascom2_state : public nascom_state { public: nascom2_state(const machine_config &mconfig, device_type type, const char *tag) : - nascom_state(mconfig, type, tag), - m_nasbus(*this, "nasbus"), - m_socket1(*this, "socket1"), - m_socket2(*this, "socket2"), - m_lsw1(*this, "lsw1") - {} + nascom_state(mconfig, type, tag), + m_nasbus(*this, "nasbus"), + m_socket1(*this, "socket1"), + m_socket2(*this, "socket2"), + m_lsw1(*this, "lsw1") + { } DECLARE_WRITE_LINE_MEMBER(ram_disable_w); DECLARE_WRITE_LINE_MEMBER(ram_disable_cpm_w); @@ -644,7 +644,7 @@ INPUT_PORTS_END // MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( nascom1, nascom1_state ) +static MACHINE_CONFIG_START( nascom1 ) // main cpu MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 8) MCFG_CPU_PROGRAM_MAP(nascom1_mem) @@ -684,7 +684,7 @@ static MACHINE_CONFIG_START( nascom1, nascom1_state ) MCFG_SNAPSHOT_ADD("snapshot", nascom_state, nascom1, "nas", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( nascom2, nascom1, nascom2_state ) +static MACHINE_CONFIG_DERIVED( nascom2, nascom1 ) MCFG_CPU_REPLACE("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(nascom2_mem) MCFG_CPU_IO_MAP(nascom2_io) @@ -705,8 +705,6 @@ static MACHINE_CONFIG_DERIVED_CLASS( nascom2, nascom1, nascom2_state ) MCFG_GENERIC_EXTENSIONS("bin,rom") MCFG_GENERIC_LOAD(nascom2_state, socket2_load) - MCFG_SOFTWARE_LIST_ADD("socket_list", "nascom_socket") - // nasbus expansion bus MCFG_NASBUS_ADD(NASBUS_TAG) MCFG_NASBUS_RAM_DISABLE_HANDLER(WRITELINE(nascom2_state, ram_disable_w)) @@ -714,9 +712,13 @@ static MACHINE_CONFIG_DERIVED_CLASS( nascom2, nascom1, nascom2_state ) MCFG_NASBUS_SLOT_ADD("nasbus2", nasbus_slot_cards, nullptr) MCFG_NASBUS_SLOT_ADD("nasbus3", nasbus_slot_cards, nullptr) MCFG_NASBUS_SLOT_ADD("nasbus4", nasbus_slot_cards, nullptr) + + // software + MCFG_SOFTWARE_LIST_ADD("socket_list", "nascom_socket") + MCFG_SOFTWARE_LIST_ADD("floppy_list", "nascom_flop") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( nascom2c, nascom2, nascom2_state ) +static MACHINE_CONFIG_DERIVED( nascom2c, nascom2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(nascom2c_mem) @@ -775,7 +777,7 @@ ROM_END // GAME DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, nascom1, 0, 0, nascom1, nascom1, nascom_state, nascom, "Nascom Microcomputers", "Nascom 1", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1977, nascom1, 0, 0, nascom1, nascom1, nascom1_state, nascom, "Nascom Microcomputers", "Nascom 1", MACHINE_NO_SOUND_HW ) COMP( 1979, nascom2, 0, 0, nascom2, nascom2, nascom2_state, nascom2, "Nascom Microcomputers", "Nascom 2", MACHINE_NO_SOUND_HW ) COMP( 1980, nascom2c, nascom2, 0, nascom2c, nascom2c, nascom2_state, nascom2c, "Nascom Microcomputers", "Nascom 2 (CP/M)", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/naughtyb.cpp b/src/mame/drivers/naughtyb.cpp index 0d60bc8e915..7f2145e5f66 100644 --- a/src/mame/drivers/naughtyb.cpp +++ b/src/mame/drivers/naughtyb.cpp @@ -406,7 +406,7 @@ static GFXDECODE_START( naughtyb ) GFXDECODE_END -static MACHINE_CONFIG_START( naughtyb, naughtyb_state ) +static MACHINE_CONFIG_START( naughtyb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CLOCK_XTAL / 4) /* 12 MHz clock, divided by 4. CPU is a Z80A */ @@ -443,7 +443,7 @@ MACHINE_CONFIG_END /* Exactly the same but for certain address writes */ -static MACHINE_CONFIG_START( popflame, naughtyb_state ) +static MACHINE_CONFIG_START( popflame ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CLOCK_XTAL / 4) /* 12 MHz clock, divided by 4. CPU is a Z80A */ @@ -871,15 +871,15 @@ DRIVER_INIT_MEMBER(naughtyb_state,trvmstr) } -GAME( 1982, naughtyb, 0, naughtyb, naughtyb, driver_device, 0, ROT90, "Jaleco", "Naughty Boy", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, naughtyba,naughtyb, naughtyb, naughtyb, driver_device, 0, ROT90, "bootleg", "Naughty Boy (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, naughtybc,naughtyb, naughtyb, naughtyb, driver_device, 0, ROT90, "Jaleco (Cinematronics license)", "Naughty Boy (Cinematronics)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, naughtyb, 0, naughtyb, naughtyb, naughtyb_state, 0, ROT90, "Jaleco", "Naughty Boy", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, naughtyba,naughtyb, naughtyb, naughtyb, naughtyb_state, 0, ROT90, "bootleg", "Naughty Boy (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, naughtybc,naughtyb, naughtyb, naughtyb, naughtyb_state, 0, ROT90, "Jaleco (Cinematronics license)", "Naughty Boy (Cinematronics)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, popflame, 0, popflame, naughtyb, naughtyb_state, popflame, ROT90, "Jaleco", "Pop Flamer (protected)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, popflamea,popflame, popflame, naughtyb, driver_device, 0, ROT90, "Jaleco", "Pop Flamer (not protected)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, popflameb,popflame, popflame, naughtyb, driver_device, 0, ROT90, "Jaleco", "Pop Flamer (hack?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, popflamen,popflame, naughtyb, naughtyb, driver_device, 0, ROT90, "Jaleco", "Pop Flamer (bootleg on Naughty Boy PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvmstr, 0, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "Enerdyne Technologies Inc.", "Trivia Master (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvmstra, trvmstr, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "Enerdyne Technologies Inc.", "Trivia Master (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvmstrb, trvmstr, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "Enerdyne Technologies Inc.", "Trivia Master (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvmstrc, trvmstr, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "Enerdyne Technologies Inc.", "Trivia Master (set 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvgns, trvmstr, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "bootleg", "Trivia Genius", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, popflamea,popflame, popflame, naughtyb, naughtyb_state, 0, ROT90, "Jaleco", "Pop Flamer (not protected)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, popflameb,popflame, popflame, naughtyb, naughtyb_state, 0, ROT90, "Jaleco", "Pop Flamer (hack?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, popflamen,popflame, naughtyb, naughtyb, naughtyb_state, 0, ROT90, "Jaleco", "Pop Flamer (bootleg on Naughty Boy PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvmstr, 0, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "Enerdyne Technologies Inc.", "Trivia Master (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvmstra, trvmstr, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "Enerdyne Technologies Inc.", "Trivia Master (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvmstrb, trvmstr, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "Enerdyne Technologies Inc.", "Trivia Master (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvmstrc, trvmstr, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "Enerdyne Technologies Inc.", "Trivia Master (set 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvgns, trvmstr, naughtyb, trvmstr, naughtyb_state, trvmstr, ROT90, "bootleg", "Trivia Genius", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nbmj8688.cpp b/src/mame/drivers/nbmj8688.cpp index 78d7ce180de..46b3a3736ed 100644 --- a/src/mame/drivers/nbmj8688.cpp +++ b/src/mame/drivers/nbmj8688.cpp @@ -2442,7 +2442,7 @@ READ8_MEMBER(nbmj8688_state::dipsw2_r) return m_nb1413m3->dipsw2_r(space,offset); } -static MACHINE_CONFIG_START( NBMJDRV_4096, nbmj8688_state ) +static MACHINE_CONFIG_START( NBMJDRV_4096 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 5000000) /* 5.00 MHz */ @@ -2596,7 +2596,7 @@ static MACHINE_CONFIG_DERIVED( mbmj_p16bit, NBMJDRV_65536 ) MCFG_VIDEO_START_OVERRIDE(nbmj8688_state,mbmj8688_pure_16bit) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mbmj_p16bit_LCD, nbmj8688_state ) +static MACHINE_CONFIG_START( mbmj_p16bit_LCD ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 5000000) /* 5.00 MHz */ @@ -3777,53 +3777,53 @@ ROM_END /* 8-bit palette */ -GAME( 1986, crystalg, 0, crystalg, crystalg, driver_device, 0, ROT0, "Nichibutsu", "Crystal Gal (Japan 860512)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, crystal2, 0, crystal2, crystal2, driver_device, 0, ROT0, "Nichibutsu", "Crystal Gal 2 (Japan 860620)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, nightlov, 0, nightlov, nightlov, driver_device, 0, ROT0, "Central Denshi", "Night Love (Japan 860705)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1986, apparel, 0, apparel, apparel, driver_device, 0, ROT0, "Central Denshi", "Apparel Night (Japan 860929)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, crystalg, 0, crystalg, crystalg, nbmj8688_state, 0, ROT0, "Nichibutsu", "Crystal Gal (Japan 860512)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, crystal2, 0, crystal2, crystal2, nbmj8688_state, 0, ROT0, "Nichibutsu", "Crystal Gal 2 (Japan 860620)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, nightlov, 0, nightlov, nightlov, nbmj8688_state, 0, ROT0, "Central Denshi", "Night Love (Japan 860705)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, apparel, 0, apparel, apparel, nbmj8688_state, 0, ROT0, "Central Denshi", "Apparel Night (Japan 860929)", MACHINE_SUPPORTS_SAVE ) /* hybrid 12-bit palette */ -GAME( 1986, citylove, 0, citylove, citylove, driver_device, 0, ROT0, "Nichibutsu", "City Love (Japan 860908)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, mcitylov, citylove, mcitylov, mcitylov, driver_device, 0, ROT0, "Nichibutsu", "City Love [BET] (Japan 860904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, secolove, 0, secolove, secolove, driver_device, 0, ROT0, "Nichibutsu", "Second Love (Japan 861201)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, barline, 0, barline, barline, driver_device, 0, ROT180, "Nichibutsu", "Barline (Japan?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, citylove, 0, citylove, citylove, nbmj8688_state, 0, ROT0, "Nichibutsu", "City Love (Japan 860908)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, mcitylov, citylove, mcitylov, mcitylov, nbmj8688_state, 0, ROT0, "Nichibutsu", "City Love [BET] (Japan 860904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, secolove, 0, secolove, secolove, nbmj8688_state, 0, ROT0, "Nichibutsu", "Second Love (Japan 861201)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, barline, 0, barline, barline, nbmj8688_state, 0, ROT180, "Nichibutsu", "Barline (Japan?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) /* hybrid 16-bit palette */ -GAME( 1987, seiha, 0, seiha, seiha, driver_device, 0, ROT0, "Nichibutsu", "Seiha (Japan 870725)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, seiham, seiha, seiham, seiham, driver_device, 0, ROT0, "Nichibutsu", "Seiha [BET] (Japan 870723)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, mjgaiden, 0, mjgaiden, ojousan, driver_device, 0, ROT0, "Central Denshi", "Mahjong Gaiden [BET] (Japan 870803)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, iemoto, 0, iemoto, iemoto, driver_device, 0, ROT0, "Nichibutsu", "Iemoto (Japan 871020)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, iemotom, iemoto, iemotom, iemotom, driver_device, 0, ROT0, "Nichibutsu", "Iemoto [BET] (Japan 871118)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ryuuha, iemoto, ryuuha, ryuuha, driver_device, 0, ROT0, "Central Denshi", "Ryuuha [BET] (Japan 871027)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ojousan, 0, ojousan, ojousan, driver_device, 0, ROT0, "Nichibutsu", "Ojousan (Japan 871204)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ojousanm, ojousan, ojousanm, ojousanm, driver_device, 0, ROT0, "Nichibutsu", "Ojousan [BET] (Japan 870108)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, swinggal, 0, swinggal, ryuuha, driver_device, 0, ROT0, "Digital Denshi", "Swing Gal [BET] (Japan 871221)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, korinai, 0, korinai, korinai, driver_device, 0, ROT0, "Nichibutsu", "Mahjong-zukino Korinai Menmen (Japan 880425)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, korinaim, korinai, korinaim, korinaim, driver_device, 0, ROT0, "Nichibutsu", "Mahjong-zukino Korinai Menmen [BET] (Japan 880920)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, seiha, 0, seiha, seiha, nbmj8688_state, 0, ROT0, "Nichibutsu", "Seiha (Japan 870725)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, seiham, seiha, seiham, seiham, nbmj8688_state, 0, ROT0, "Nichibutsu", "Seiha [BET] (Japan 870723)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, mjgaiden, 0, mjgaiden, ojousan, nbmj8688_state, 0, ROT0, "Central Denshi", "Mahjong Gaiden [BET] (Japan 870803)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, iemoto, 0, iemoto, iemoto, nbmj8688_state, 0, ROT0, "Nichibutsu", "Iemoto (Japan 871020)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, iemotom, iemoto, iemotom, iemotom, nbmj8688_state, 0, ROT0, "Nichibutsu", "Iemoto [BET] (Japan 871118)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ryuuha, iemoto, ryuuha, ryuuha, nbmj8688_state, 0, ROT0, "Central Denshi", "Ryuuha [BET] (Japan 871027)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ojousan, 0, ojousan, ojousan, nbmj8688_state, 0, ROT0, "Nichibutsu", "Ojousan (Japan 871204)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ojousanm, ojousan, ojousanm, ojousanm, nbmj8688_state, 0, ROT0, "Nichibutsu", "Ojousan [BET] (Japan 870108)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, swinggal, 0, swinggal, ryuuha, nbmj8688_state, 0, ROT0, "Digital Denshi", "Swing Gal [BET] (Japan 871221)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, korinai, 0, korinai, korinai, nbmj8688_state, 0, ROT0, "Nichibutsu", "Mahjong-zukino Korinai Menmen (Japan 880425)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, korinaim, korinai, korinaim, korinaim, nbmj8688_state, 0, ROT0, "Nichibutsu", "Mahjong-zukino Korinai Menmen [BET] (Japan 880920)", MACHINE_SUPPORTS_SAVE ) /* pure 16-bit palette (+ LCD in some) */ -GAME( 1987, housemnq, 0, housemnq, housemnq, driver_device, 0, ROT0, "Nichibutsu", "House Mannequin (Japan 870217)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, housemn2, 0, housemn2, housemn2, driver_device, 0, ROT0, "Nichibutsu", "House Mannequin Roppongi Live hen (Japan 870418)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, livegal, 0, livegal, livegal, driver_device, 0, ROT0, "Central Denshi", "Live Gal [BET] (Japan 870530)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, bijokkoy, 0, bijokkoy, bijokkoy, driver_device, 0, ROT0, "Nichibutsu", "Bijokko Yume Monogatari (Japan 870925)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, bijokkog, 0, bijokkog, bijokkog, driver_device, 0, ROT0, "Nichibutsu", "Bijokko Gakuen (Japan 880116)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, orangec, 0, orangec, orangec, driver_device, 0, ROT0, "Daiichi Denshi", "Orange Club - Maruhi Kagai Jugyou (Japan 880213)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, orangeci, orangec, orangeci, orangeci, driver_device, 0, ROT0, "Daiichi Denshi", "Orange Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880221)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vipclub, orangec, vipclub, vipclub, driver_device, 0, ROT0, "Daiichi Denshi", "Vip Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880310)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, housemnq, 0, housemnq, housemnq, nbmj8688_state, 0, ROT0, "Nichibutsu", "House Mannequin (Japan 870217)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, housemn2, 0, housemn2, housemn2, nbmj8688_state, 0, ROT0, "Nichibutsu", "House Mannequin Roppongi Live hen (Japan 870418)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, livegal, 0, livegal, livegal, nbmj8688_state, 0, ROT0, "Central Denshi", "Live Gal [BET] (Japan 870530)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, bijokkoy, 0, bijokkoy, bijokkoy, nbmj8688_state, 0, ROT0, "Nichibutsu", "Bijokko Yume Monogatari (Japan 870925)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bijokkog, 0, bijokkog, bijokkog, nbmj8688_state, 0, ROT0, "Nichibutsu", "Bijokko Gakuen (Japan 880116)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, orangec, 0, orangec, orangec, nbmj8688_state, 0, ROT0, "Daiichi Denshi", "Orange Club - Maruhi Kagai Jugyou (Japan 880213)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, orangeci, orangec, orangeci, orangeci, nbmj8688_state, 0, ROT0, "Daiichi Denshi", "Orange Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880221)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vipclub, orangec, vipclub, vipclub, nbmj8688_state, 0, ROT0, "Daiichi Denshi", "Vip Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880310)", MACHINE_SUPPORTS_SAVE ) /* pure 12-bit palette */ -GAME( 1988, kaguya, 0, kaguya, kaguya, driver_device, 0, ROT0, "Miki Syouji", "Mahjong Kaguyahime [BET] (Japan 880521)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, kaguya2, 0, kaguya2, kaguya, nbmj8688_state, kaguya2, ROT0, "Miki Syouji", "Mahjong Kaguyahime Sono2 [BET] (Japan 890829)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, kaguya2f, kaguya2, kaguya2, kaguya, nbmj8688_state, kaguya2, ROT0, "Miki Syouji", "Mahjong Kaguyahime Sono2 Fukkokuban [BET] (Japan 010808)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, kanatuen, 0, kanatuen, kanatuen, nbmj8688_state, kanatuen, ROT0, "Panac", "Kanatsuen no Onna [BET] (Japan 880905)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, kyuhito, kanatuen, kyuhito, kyuhito, nbmj8688_state, kyuhito, ROT0, "Roller Tron", "Kyukyoku no Hito [BET] (Japan 880824)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, idhimitu, 0, idhimitu, idhimitu, nbmj8688_state, idhimitu, ROT0, "Digital Soft", "Idol no Himitsu [BET] (Japan 890304)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, kaguya, 0, kaguya, kaguya, nbmj8688_state, 0, ROT0, "Miki Syouji", "Mahjong Kaguyahime [BET] (Japan 880521)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, kaguya2, 0, kaguya2, kaguya, nbmj8688_state, kaguya2, ROT0, "Miki Syouji", "Mahjong Kaguyahime Sono2 [BET] (Japan 890829)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, kaguya2f, kaguya2, kaguya2, kaguya, nbmj8688_state, kaguya2, ROT0, "Miki Syouji", "Mahjong Kaguyahime Sono2 Fukkokuban [BET] (Japan 010808)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, kanatuen, 0, kanatuen, kanatuen, nbmj8688_state, kanatuen, ROT0, "Panac", "Kanatsuen no Onna [BET] (Japan 880905)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, kyuhito, kanatuen, kyuhito, kyuhito, nbmj8688_state, kyuhito, ROT0, "Roller Tron", "Kyukyoku no Hito [BET] (Japan 880824)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, idhimitu, 0, idhimitu, idhimitu, nbmj8688_state, idhimitu, ROT0, "Digital Soft", "Idol no Himitsu [BET] (Japan 890304)", MACHINE_SUPPORTS_SAVE ) /* pure 12-bit palette + YM3812 instead of AY-3-8910 */ -GAME( 1988, mjsikaku, 0, mjsikaku, mjsikaku, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Shikaku (Japan 880908)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjsikakb, mjsikaku, mjsikaku, mjsikaku, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Shikaku (Japan 880722)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjsikakc, mjsikaku, mjsikaku, mjsikaku, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Shikaku (Japan 880806)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjsikakd, mjsikaku, mjsikaku, mjsikaku, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Shikaku (Japan 880802)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mmsikaku, mjsikaku, mmsikaku, mmsikaku, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Shikaku [BET] (Japan 880929)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, otonano, 0, otonano, otonano, driver_device, 0, ROT0, "Apple", "Otona no Mahjong (Japan 880628)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjcamera, 0, mjcamera, mjcamera, nbmj8688_state, mjcamera, ROT0, "Miki Syouji", "Mahjong Camera Kozou (set 1) (Japan 881109)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjsikaku, 0, mjsikaku, mjsikaku, nbmj8688_state, 0, ROT0, "Nichibutsu", "Mahjong Shikaku (Japan 880908)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjsikakb, mjsikaku, mjsikaku, mjsikaku, nbmj8688_state, 0, ROT0, "Nichibutsu", "Mahjong Shikaku (Japan 880722)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjsikakc, mjsikaku, mjsikaku, mjsikaku, nbmj8688_state, 0, ROT0, "Nichibutsu", "Mahjong Shikaku (Japan 880806)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjsikakd, mjsikaku, mjsikaku, mjsikaku, nbmj8688_state, 0, ROT0, "Nichibutsu", "Mahjong Shikaku (Japan 880802)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mmsikaku, mjsikaku, mmsikaku, mmsikaku, nbmj8688_state, 0, ROT0, "Nichibutsu", "Mahjong Shikaku [BET] (Japan 880929)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, otonano, 0, otonano, otonano, nbmj8688_state, 0, ROT0, "Apple", "Otona no Mahjong (Japan 880628)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjcamera, 0, mjcamera, mjcamera, nbmj8688_state, mjcamera, ROT0, "Miki Syouji", "Mahjong Camera Kozou (set 1) (Japan 881109)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nbmj8891.cpp b/src/mame/drivers/nbmj8891.cpp index 1a69bb994e4..504be359ba7 100644 --- a/src/mame/drivers/nbmj8891.cpp +++ b/src/mame/drivers/nbmj8891.cpp @@ -12,7 +12,7 @@ Notes: - mjcamerb and mmcamera is the medal version of mjcamera, however the - two don't run on the same hardware. mjcamera is in nbmj8688.c. + two don't run on the same hardware. mjcamera is in nbmj8688.cpp. - In mjfocus(Medal Type), sometimes CPU's hands are forced out from the screen. This is correct behaviour. @@ -1557,31 +1557,8 @@ static INPUT_PORTS_START( club90s ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_START("DSWB") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_START("DSWB") // not populated on the PCB + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY @@ -2221,7 +2198,7 @@ static INPUT_PORTS_START( taiwanmb ) INPUT_PORTS_END -static MACHINE_CONFIG_START( gionbana, nbmj8891_state ) +static MACHINE_CONFIG_START( gionbana ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 20000000/4) /* 5.00 MHz ? */ @@ -3560,38 +3537,38 @@ ROM_START( hnageman ) ROM_END -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS) -GAME( 1988, msjiken, 0, msjiken, msjiken, driver_device, 0, ROT270, "Nichibutsu", "Mahjong Satsujin Jiken (Japan 881017)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hanamomo, 0, hanamomo, hanamomo, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Hana no Momoko gumi (Japan 881201)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hanamomb, hanamomo, hanamomo, hanamomo, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Hana no Momoko gumi (Japan 881125)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, telmahjn, 0, telmahjn, msjiken, nbmj8891_state, telmahjn, ROT270, "Nichibutsu", "Telephone Mahjong (Japan 890111)", MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS) +GAME( 1988, msjiken, 0, msjiken, msjiken, nbmj8891_state, 0, ROT270, "Nichibutsu", "Mahjong Satsujin Jiken (Japan 881017)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hanamomo, 0, hanamomo, hanamomo, nbmj8891_state, 0, ROT0, "Nichibutsu", "Mahjong Hana no Momoko gumi (Japan 881201)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hanamomb, hanamomo, hanamomo, hanamomo, nbmj8891_state, 0, ROT0, "Nichibutsu", "Mahjong Hana no Momoko gumi (Japan 881125)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, telmahjn, 0, telmahjn, msjiken, nbmj8891_state, telmahjn, ROT270, "Nichibutsu", "Telephone Mahjong (Japan 890111)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, gionbana, 0, gionbana, gionbana, nbmj8891_state, gionbana, ROT0, "Nichibutsu", "Gionbana (Japan 890120)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mgion, 0, mgion, mgion, driver_device, 0, ROT0, "Nichibutsu", "Gionbana [BET] (Japan 890207)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mgion, 0, mgion, mgion, nbmj8891_state, 0, ROT0, "Nichibutsu", "Gionbana [BET] (Japan 890207)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, omotesnd, 0, omotesnd, omotesnd, nbmj8891_state, omotesnd, ROT0, "Anime Tec", "Omotesandou (Japan 890215)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, abunai, 0, abunai, abunai, driver_device, 0, ROT0, "Green Soft", "Abunai Houkago - Mou Matenai (Japan 890325)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mjfocus, 0, mjfocus, mjfocus, nbmj8891_state, mjfocus, ROT0, "Nichibutsu", "Mahjong Focus (Japan 890313)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, abunai, 0, abunai, abunai, nbmj8891_state, 0, ROT0, "Green Soft", "Abunai Houkago - Mou Matenai (Japan 890325)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mjfocus, 0, mjfocus, mjfocus, nbmj8891_state, mjfocus, ROT0, "Nichibutsu", "Mahjong Focus (Japan 890313)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, mjfocusm, mjfocus, mjfocusm, mjfocusm, nbmj8891_state, mjfocusm, ROT0, "Nichibutsu", "Mahjong Focus [BET] (Japan 890510)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, peepshow, mjfocus, mjfocus, mjfocus, nbmj8891_state, mjfocus, ROT0, "AC", "Nozokimeguri Mahjong Peep Show (Japan 890404)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mjcamerb, 0, mjcamerb, mjcamerb, driver_device, 0, ROT0, "Miki Syouji", "Mahjong Camera Kozou (set 2) (Japan 881109)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mmcamera, mjcamerb, mmcamera, mmcamera, driver_device, 0, ROT0, "Miki Syouji", "Mahjong Camera Kozou [BET] (Japan 890509)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, scandal, 0, scandal, scandal, nbmj8891_state, scandal, ROT0, "Nichibutsu", "Scandal Mahjong (Japan 890213)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, scandalm, scandal, scandalm, scandalm, driver_device, 0, ROT0, "Nichibutsu", "Scandal Mahjong [BET] (Japan 890217)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, peepshow, mjfocus, mjfocus, mjfocus, nbmj8891_state, mjfocus, ROT0, "AC", "Nozokimeguri Mahjong Peep Show (Japan 890404)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mjcamerb, 0, mjcamerb, mjcamerb, nbmj8891_state, 0, ROT0, "Miki Syouji", "Mahjong Camera Kozou (set 2) (Japan 881109)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mmcamera, mjcamerb, mmcamera, mmcamera, nbmj8891_state, 0, ROT0, "Miki Syouji", "Mahjong Camera Kozou [BET] (Japan 890509)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, scandal, 0, scandal, scandal, nbmj8891_state, scandal, ROT0, "Nichibutsu", "Scandal Mahjong (Japan 890213)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, scandalm, scandal, scandalm, scandalm, nbmj8891_state, 0, ROT0, "Nichibutsu", "Scandal Mahjong [BET] (Japan 890217)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, mgmen89, 0, mgmen89, mgmen89, nbmj8891_state, mgmen89, ROT0, "Nichibutsu", "Mahjong G-MEN'89 (Japan 890425)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, mjnanpas, 0, mjnanpas, mjnanpas, nbmj8891_state, mjnanpas, ROT0, "Brooks", "Mahjong Nanpa Story (Japan 890713)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, mjnanpaa, mjnanpas, mjnanpas, mjnanpaa, nbmj8891_state, mjnanpas, ROT0, "Brooks", "Mahjong Nanpa Story (Japan 890712)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, mjnanpau, mjnanpas, mjnanpas, mjnanpas, nbmj8891_state, mjnanpas, ROT0, "Brooks", "Mahjong Nanpa Story (Ura) (Japan 890805)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bananadr, 0, bananadr, bananadr, driver_device, 0, ROT0, "Digital Soft", "Mahjong Banana Dream [BET] (Japan 891124)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mladyhtr, 0, mladyhtr, mladyhtr, driver_device, 0, ROT0, "Nichibutsu", "Mahjong The Lady Hunter (Japan 900509)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, chinmoku, 0, chinmoku, chinmoku, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Chinmoku no Hentai (Japan 900511)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, maiko, 0, maiko, maiko, driver_device, 0, ROT0, "Nichibutsu", "Maikobana (Japan 900802)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mmaiko, 0, mmaiko, mmaiko, driver_device, 0, ROT0, "Nichibutsu", "Maikobana [BET] (Japan 900911)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hnxmasev, 0, hnxmasev, maiko, driver_device, 0, ROT180, "Nichibutsu / AV Japan", "AV Hanafuda Hana no Christmas Eve (Japan 901204)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hnageman, 0, hnageman, maiko, driver_device, 0, ROT180, "Nichibutsu / AV Japan", "AV Hanafuda Hana no Ageman (Japan 900716)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, club90s, 0, club90s, club90s, driver_device, 0, ROT0, "Nichibutsu", "Mahjong CLUB 90's (set 1) (Japan 900919)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, club90sa, club90s, club90s, club90s, driver_device, 0, ROT0, "Nichibutsu", "Mahjong CLUB 90's (set 2) (Japan 900919)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, lovehous, club90s, lovehous, lovehous, driver_device, 0, ROT0, "Nichibutsu", "Mahjong Love House [BET] (Japan 901024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, hanaoji, 0, hanaoji, hanaoji, driver_device, 0, ROT0, "Nichibutsu", "Hana to Ojisan [BET] (ver 1.01, 1991/12/09)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, hanaojia, hanaoji, hanaoji, hanaoji, driver_device, 0, ROT0, "Nichibutsu", "Hana to Ojisan [BET] (ver 1.00, 1991/08/23)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, taiwanmb, 0, taiwanmb, taiwanmb, driver_device, 0, ROT0, "Miki Syouji", "Taiwan Mahjong [BET] (Japan 881208)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pairsnb, 0, pairsnb, pairsnb, nbmj8891_state, pairsnb, ROT0, "Nichibutsu", "Pairs (Nichibutsu) (Japan 890822)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pairsten, pairsnb, pairsten, pairsnb, nbmj8891_state, pairsten, ROT0, "System Ten", "Pairs (System Ten) (Japan 890826)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bananadr, 0, bananadr, bananadr, nbmj8891_state, 0, ROT0, "Digital Soft", "Mahjong Banana Dream [BET] (Japan 891124)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mladyhtr, 0, mladyhtr, mladyhtr, nbmj8891_state, 0, ROT0, "Nichibutsu", "Mahjong The Lady Hunter (Japan 900509)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, chinmoku, 0, chinmoku, chinmoku, nbmj8891_state, 0, ROT0, "Nichibutsu", "Mahjong Chinmoku no Hentai (Japan 900511)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, maiko, 0, maiko, maiko, nbmj8891_state, 0, ROT0, "Nichibutsu", "Maikobana (Japan 900802)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mmaiko, 0, mmaiko, mmaiko, nbmj8891_state, 0, ROT0, "Nichibutsu", "Maikobana [BET] (Japan 900911)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hnxmasev, 0, hnxmasev, maiko, nbmj8891_state, 0, ROT180, "Nichibutsu / AV Japan", "AV Hanafuda Hana no Christmas Eve (Japan 901204)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hnageman, 0, hnageman, maiko, nbmj8891_state, 0, ROT180, "Nichibutsu / AV Japan", "AV Hanafuda Hana no Ageman (Japan 900716)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, club90s, 0, club90s, club90s, nbmj8891_state, 0, ROT0, "Nichibutsu", "Mahjong CLUB 90's (set 1) (Japan 900919)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, club90sa, club90s, club90s, club90s, nbmj8891_state, 0, ROT0, "Nichibutsu", "Mahjong CLUB 90's (set 2) (Japan 900919)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, lovehous, club90s, lovehous, lovehous, nbmj8891_state, 0, ROT0, "Nichibutsu", "Mahjong Love House [BET] (Japan 901024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, hanaoji, 0, hanaoji, hanaoji, nbmj8891_state, 0, ROT0, "Nichibutsu", "Hana to Ojisan [BET] (ver 1.01, 1991/12/09)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, hanaojia, hanaoji, hanaoji, hanaoji, nbmj8891_state, 0, ROT0, "Nichibutsu", "Hana to Ojisan [BET] (ver 1.00, 1991/08/23)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, taiwanmb, 0, taiwanmb, taiwanmb, nbmj8891_state, 0, ROT0, "Miki Syouji", "Taiwan Mahjong [BET] (Japan 881208)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pairsnb, 0, pairsnb, pairsnb, nbmj8891_state, pairsnb, ROT0, "Nichibutsu", "Pairs (Nichibutsu) (Japan 890822)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pairsten, pairsnb, pairsten, pairsnb, nbmj8891_state, pairsten, ROT0, "System Ten", "Pairs (System Ten) (Japan 890826)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nbmj8900.cpp b/src/mame/drivers/nbmj8900.cpp index 2447bbe193e..ae72ebbf2fb 100644 --- a/src/mame/drivers/nbmj8900.cpp +++ b/src/mame/drivers/nbmj8900.cpp @@ -301,7 +301,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( ohpaipee, nbmj8900_state ) +static MACHINE_CONFIG_START( ohpaipee ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 20000000/4) /* 5.00 MHz ? */ diff --git a/src/mame/drivers/nbmj8991.cpp b/src/mame/drivers/nbmj8991.cpp index a4e60c609d5..7126341d3bf 100644 --- a/src/mame/drivers/nbmj8991.cpp +++ b/src/mame/drivers/nbmj8991.cpp @@ -1314,7 +1314,7 @@ static INPUT_PORTS_START( av2mj2rg ) INPUT_PORTS_END -static MACHINE_CONFIG_START( nbmjdrv1, nbmj8991_state ) // galkoku +static MACHINE_CONFIG_START( nbmjdrv1 ) // galkoku /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 25000000/5) /* 5.00 MHz ? */ @@ -1346,7 +1346,7 @@ static MACHINE_CONFIG_START( nbmjdrv1, nbmj8991_state ) // galkoku MACHINE_CONFIG_END -static MACHINE_CONFIG_START( nbmjdrv2, nbmj8991_state ) // pstadium +static MACHINE_CONFIG_START( nbmjdrv2 ) // pstadium /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 6000000/2) /* 3.00 MHz */ @@ -2104,22 +2104,22 @@ ROM_START( av2mj2rg ) ROM_END -GAME( 1989, galkoku, 0, galkoku, galkoku, driver_device, 0, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kokuhaku (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, hyouban, galkoku, hyouban, hyouban, driver_device, 0, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Hyouban Musume [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, galkoku, 0, galkoku, galkoku, nbmj8991_state, 0, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kokuhaku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, hyouban, galkoku, hyouban, hyouban, nbmj8991_state, 0, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Hyouban Musume [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, galkaika, 0, galkaika, galkaika, nbmj8991_state, galkaika, ROT180, "Nichibutsu / T.R.Tec", "Mahjong Gal no Kaika (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, tokyogal, 0, tokyogal, tokyogal, nbmj8991_state, tokyogal, ROT180, "Nichibutsu", "Tokyo Gal Zukan (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, tokimbsj, tokyogal, tokimbsj, tokimbsj, nbmj8991_state, tokimbsj, ROT180, "Nichibutsu", "Tokimeki Bishoujo [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mcontest, 0, mcontest, mcontest, driver_device, 0, ROT180, "Nichibutsu", "Miss Mahjong Contest (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, uchuuai, 0, uchuuai, uchuuai, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Uchuu yori Ai wo komete (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, triplew1, 0, triplew1, triplew1, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Triple Wars (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, pstadium, 0, pstadium, pstadium, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Panic Stadium (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, triplew2, 0, triplew2, triplew1, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Triple Wars 2 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ntopstar, 0, ntopstar, ntopstar, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Nerae! Top Star (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjlstory, 0, mjlstory, mjlstory, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Jikken Love Story (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ladymakr, mjlstory, mjlstory, finalbny, driver_device, 0, ROT180, "Nichibutsu", "Lady Maker [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, vanilla, 0, vanilla, vanilla, driver_device, 0, ROT180, "Nichibutsu", "Mahjong Vanilla Syndrome (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mcontest, 0, mcontest, mcontest, nbmj8991_state, 0, ROT180, "Nichibutsu", "Miss Mahjong Contest (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, uchuuai, 0, uchuuai, uchuuai, nbmj8991_state, 0, ROT180, "Nichibutsu", "Mahjong Uchuu yori Ai wo komete (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, triplew1, 0, triplew1, triplew1, nbmj8991_state, 0, ROT180, "Nichibutsu", "Mahjong Triple Wars (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, pstadium, 0, pstadium, pstadium, nbmj8991_state, 0, ROT180, "Nichibutsu", "Mahjong Panic Stadium (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, triplew2, 0, triplew2, triplew1, nbmj8991_state, 0, ROT180, "Nichibutsu", "Mahjong Triple Wars 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ntopstar, 0, ntopstar, ntopstar, nbmj8991_state, 0, ROT180, "Nichibutsu", "Mahjong Nerae! Top Star (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjlstory, 0, mjlstory, mjlstory, nbmj8991_state, 0, ROT180, "Nichibutsu", "Mahjong Jikken Love Story (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ladymakr, mjlstory, mjlstory, finalbny, nbmj8991_state, 0, ROT180, "Nichibutsu", "Lady Maker [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, vanilla, 0, vanilla, vanilla, nbmj8991_state, 0, ROT180, "Nichibutsu", "Mahjong Vanilla Syndrome (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, finalbny, vanilla, finalbny, finalbny, nbmj8991_state, finalbny, ROT180, "Nichibutsu", "Mahjong Final Bunny [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, qmhayaku, 0, qmhayaku, qmhayaku, driver_device, 0, ROT180, "Nichibutsu", "Quiz-Mahjong Hayaku Yatteyo! (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjgottub, 0, mjgottub, mjgottub, driver_device, 0, ROT180, "Nichibutsu", "Medal Mahjong Gottsu ee-kanji [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, av2mj1bb, 0, av2mj1bb, av2mj1bb, driver_device, 0, ROT0, "Miki Syouji / AV Japan", "AV2Mahjong No.1 Bay Bridge no Seijo (Japan)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, av2mj2rg, 0, av2mj2rg, av2mj2rg, driver_device, 0, ROT0, "Miki Syouji / AV Japan", "AV2Mahjong No.2 Rouge no Kaori (Japan)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, qmhayaku, 0, qmhayaku, qmhayaku, nbmj8991_state, 0, ROT180, "Nichibutsu", "Quiz-Mahjong Hayaku Yatteyo! (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjgottub, 0, mjgottub, mjgottub, nbmj8991_state, 0, ROT180, "Nichibutsu", "Medal Mahjong Gottsu ee-kanji [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, av2mj1bb, 0, av2mj1bb, av2mj1bb, nbmj8991_state, 0, ROT0, "Miki Syouji / AV Japan", "AV2Mahjong No.1 Bay Bridge no Seijo (Japan)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, av2mj2rg, 0, av2mj2rg, av2mj2rg, nbmj8991_state, 0, ROT0, "Miki Syouji / AV Japan", "AV2Mahjong No.2 Rouge no Kaori (Japan)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nbmj9195.cpp b/src/mame/drivers/nbmj9195.cpp index 742075e35dd..6878e59bedc 100644 --- a/src/mame/drivers/nbmj9195.cpp +++ b/src/mame/drivers/nbmj9195.cpp @@ -2503,7 +2503,7 @@ static const z80_daisy_config daisy_chain_sound[] = MCFG_TMPZ84C011_PORTD_WRITE_CB(WRITE8(nbmj9195_state, clutsel_w)) \ MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(nbmj9195_state, outcoin_flag_w)) -static MACHINE_CONFIG_START( NBMJDRV1_base, nbmj9195_state ) +static MACHINE_CONFIG_START( NBMJDRV1_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMPZ84C011, 12000000/2) /* TMPZ84C011, 6.00 MHz */ @@ -3432,39 +3432,39 @@ ROM_START( shabdama ) DISK_IMAGE_READONLY( "shabdama", 0, NO_DUMP ) ROM_END -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS -GAME( 1992, mjuraden, 0, mjuraden, mjuraden, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yubis", "Mahjong Uranai Densetsu (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, koinomp, 0, koinomp, koinomp, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Koi no Magic Potion (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, patimono, 0, patimono, patimono, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Pachinko Monogatari (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, janbari, 0, janbari, janbari, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yubis / AV Japan", "Mahjong Janjan Baribari (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, mjanbari, janbari, janbari, pachiten, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yubis / AV Japan", "Medal Mahjong Janjan Baribari [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, mmehyou, 0, mmehyou, mmehyou, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Kawakusu", "Medal Mahjong Circuit no Mehyou [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ultramhm, 0, ultramhm, ultramhm, nbmj9195_state, nbmj9195, ROT0, "Apple", "Ultra Maru-hi Mahjong (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, gal10ren, 0, gal10ren, gal10ren, nbmj9195_state, nbmj9195, ROT0, "Fujic", "Mahjong Gal 10-renpatsu (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, renaiclb, 0, renaiclb, renaiclb, nbmj9195_state, nbmj9195, ROT0, "Fujic", "Mahjong Ren-ai Club (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, mjlaman, 0, mjlaman, mjlaman, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / AV Japan", "Mahjong La Man (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, mkeibaou, 0, mkeibaou, patimono, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Keibaou (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, pachiten, 0, pachiten, pachiten, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / AV Japan / Miki Syouji", "Medal Mahjong Pachi-Slot Tengoku [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, sailorws, 0, sailorws, sailorws, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Sailor Wars (Japan set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, sailorwa, sailorws, sailorws, sailorws, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Sailor Wars (Japan set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, sailorwr, sailorws, sailorwr, sailorwr, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Sailor Wars-R [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, wcatcher, 0, otatidai, wcatcher, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Wakuwaku Catcher (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, jituroku, 0, jituroku, jituroku, nbmj9195_state, nbmj9195, ROT0, "Windom", "Jitsuroku Maru-chi Mahjong (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, yosimoto, 0, yosimoto, yosimoto, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yoshimoto Kougyou", "Mahjong Yoshimoto Gekijou (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, yosimotm, yosimoto, yosimotm, yosimotm, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yoshimoto Kougyou", "Mahjong Yoshimoto Gekijou [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, psailor1, 0, psailor1, psailor1, nbmj9195_state, nbmj9195, ROT0, "Sphinx", "Bishoujo Janshi Pretty Sailor 18-kin (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, psailor2, 0, psailor2, psailor2, nbmj9195_state, nbmj9195, ROT0, "Sphinx", "Bishoujo Janshi Pretty Sailor 2 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, otatidai, 0, otatidai, otatidai, nbmj9195_state, nbmj9195, ROT0, "Sphinx", "Disco Mahjong Otachidai no Okite (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1991, ngpgal, 0, ngpgal, ngpgal, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Nekketsu Grand-Prix Gal (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjgottsu, 0, mjgottsu, mjgottsu, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Gottsu ee-kanji (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, bakuhatu, mjgottsu, bakuhatu, bakuhatu, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Bakuhatsu Junjouden (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, cmehyou, 0, cmehyou, cmehyou, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Kawakusu", "Mahjong Circuit no Mehyou (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, mjkoiura, 0, mjkoiura, mjkoiura, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Koi Uranai (Japan set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, mkoiuraa, mjkoiura, mkoiuraa, mjkoiura, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Koi Uranai (Japan set 2)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1994, mscoutm, 0, mscoutm, mscoutm, nbmj9195_state, nbmj9195, ROT0, "Sphinx / AV Japan", "Mahjong Scout Man (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, imekura, 0, imekura, imekura, nbmj9195_state, nbmj9195, ROT0, "Sphinx / AV Japan", "Imekura Mahjong (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, mjegolf, 0, mjegolf, mjegolf, nbmj9195_state, nbmj9195, ROT0, "Fujic / AV Japan", "Mahjong Erotica Golf (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 199?, shabdama, 0, shabdama, mjuraden,nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "LD Mahjong #4 Shabon-Dama", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME, FLAGS +GAME( 1992, mjuraden, 0, mjuraden, mjuraden, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yubis", "Mahjong Uranai Densetsu (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, koinomp, 0, koinomp, koinomp, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Koi no Magic Potion (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, patimono, 0, patimono, patimono, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Pachinko Monogatari (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, janbari, 0, janbari, janbari, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yubis / AV Japan", "Mahjong Janjan Baribari (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, mjanbari, janbari, janbari, pachiten, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yubis / AV Japan", "Medal Mahjong Janjan Baribari [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, mmehyou, 0, mmehyou, mmehyou, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Kawakusu", "Medal Mahjong Circuit no Mehyou [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ultramhm, 0, ultramhm, ultramhm, nbmj9195_state, nbmj9195, ROT0, "Apple", "Ultra Maru-hi Mahjong (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, gal10ren, 0, gal10ren, gal10ren, nbmj9195_state, nbmj9195, ROT0, "Fujic", "Mahjong Gal 10-renpatsu (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, renaiclb, 0, renaiclb, renaiclb, nbmj9195_state, nbmj9195, ROT0, "Fujic", "Mahjong Ren-ai Club (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, mjlaman, 0, mjlaman, mjlaman, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / AV Japan", "Mahjong La Man (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, mkeibaou, 0, mkeibaou, patimono, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Keibaou (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, pachiten, 0, pachiten, pachiten, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / AV Japan / Miki Syouji", "Medal Mahjong Pachi-Slot Tengoku [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, sailorws, 0, sailorws, sailorws, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Sailor Wars (Japan set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, sailorwa, sailorws, sailorws, sailorws, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Sailor Wars (Japan set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, sailorwr, sailorws, sailorwr, sailorwr, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Sailor Wars-R [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, wcatcher, 0, otatidai, wcatcher, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Wakuwaku Catcher (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, jituroku, 0, jituroku, jituroku, nbmj9195_state, nbmj9195, ROT0, "Windom", "Jitsuroku Maru-chi Mahjong (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, yosimoto, 0, yosimoto, yosimoto, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yoshimoto Kougyou", "Mahjong Yoshimoto Gekijou (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, yosimotm, yosimoto, yosimotm, yosimotm, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Yoshimoto Kougyou", "Mahjong Yoshimoto Gekijou [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, psailor1, 0, psailor1, psailor1, nbmj9195_state, nbmj9195, ROT0, "Sphinx", "Bishoujo Janshi Pretty Sailor 18-kin (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, psailor2, 0, psailor2, psailor2, nbmj9195_state, nbmj9195, ROT0, "Sphinx", "Bishoujo Janshi Pretty Sailor 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, otatidai, 0, otatidai, otatidai, nbmj9195_state, nbmj9195, ROT0, "Sphinx", "Disco Mahjong Otachidai no Okite (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1991, ngpgal, 0, ngpgal, ngpgal, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Nekketsu Grand-Prix Gal (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjgottsu, 0, mjgottsu, mjgottsu, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Gottsu ee-kanji (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, bakuhatu, mjgottsu, bakuhatu, bakuhatu, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Bakuhatsu Junjouden (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, cmehyou, 0, cmehyou, cmehyou, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu / Kawakusu", "Mahjong Circuit no Mehyou (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, mjkoiura, 0, mjkoiura, mjkoiura, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Koi Uranai (Japan set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, mkoiuraa, mjkoiura, mkoiuraa, mjkoiura, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "Mahjong Koi Uranai (Japan set 2)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1994, mscoutm, 0, mscoutm, mscoutm, nbmj9195_state, nbmj9195, ROT0, "Sphinx / AV Japan", "Mahjong Scout Man (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, imekura, 0, imekura, imekura, nbmj9195_state, nbmj9195, ROT0, "Sphinx / AV Japan", "Imekura Mahjong (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mjegolf, 0, mjegolf, mjegolf, nbmj9195_state, nbmj9195, ROT0, "Fujic / AV Japan", "Mahjong Erotica Golf (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 199?, shabdama, 0, shabdama, mjuraden, nbmj9195_state, nbmj9195, ROT0, "Nichibutsu", "LD Mahjong #4 Shabon-Dama", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp index f63b8650666..09b51f0b14f 100644 --- a/src/mame/drivers/nc.cpp +++ b/src/mame/drivers/nc.cpp @@ -1396,7 +1396,7 @@ INPUT_PORTS_END /**********************************************************************************************************/ -static MACHINE_CONFIG_START( nc100, nc_state ) +static MACHINE_CONFIG_START( nc100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, /*6000000*/ 4606000) /* Russell Marks says this is more accurate */ MCFG_CPU_PROGRAM_MAP(nc_map) @@ -1549,7 +1549,7 @@ ROM_START(nc200) ROM_LOAD("nc200.rom", 0x010000, 0x080000, CRC(bb8180e7) SHA1(fb5c93b0a3e199202c6a12548d2617f7a09bae47)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ COMP( 1992, nc100, 0, 0, nc100, nc100, nc_state, nc, "Amstrad plc", "NC100", 0 ) COMP( 1992, dw225, nc100, 0, nc100, nc100, nc_state, nc, "NTS Computer Systems", "DreamWriter 225", 0 ) COMP( 1992, nc150, nc100, 0, nc100, nc100, nc_state, nc, "Amstrad plc", "NC150", 0 ) diff --git a/src/mame/drivers/nemesis.cpp b/src/mame/drivers/nemesis.cpp index faea4873a3a..92720ef75ce 100644 --- a/src/mame/drivers/nemesis.cpp +++ b/src/mame/drivers/nemesis.cpp @@ -218,10 +218,10 @@ WRITE8_MEMBER(nemesis_state::nemesis_filter_w) { int C1 = /* offset & 0x1000 ? 4700 : */ 0; // is this right? 4.7uF seems too large int C2 = offset & 0x0800 ? 33 : 0; // 0.033uF = 33 nF - m_filter1->filter_rc_set_RC(FLT_RC_LOWPASS, (AY8910_INTERNAL_RESISTANCE + 12000) / 3, 0, 0, CAP_N(C1)); // unused? - m_filter2->filter_rc_set_RC(FLT_RC_LOWPASS, AY8910_INTERNAL_RESISTANCE + 1000, 10000, 0, CAP_N(C2)); - m_filter3->filter_rc_set_RC(FLT_RC_LOWPASS, AY8910_INTERNAL_RESISTANCE + 1000, 10000, 0, CAP_N(C2)); - m_filter4->filter_rc_set_RC(FLT_RC_LOWPASS, AY8910_INTERNAL_RESISTANCE + 1000, 10000, 0, CAP_N(C2)); + m_filter1->filter_rc_set_RC(filter_rc_device::LOWPASS, (AY8910_INTERNAL_RESISTANCE + 12000) / 3, 0, 0, CAP_N(C1)); // unused? + m_filter2->filter_rc_set_RC(filter_rc_device::LOWPASS, AY8910_INTERNAL_RESISTANCE + 1000, 10000, 0, CAP_N(C2)); + m_filter3->filter_rc_set_RC(filter_rc_device::LOWPASS, AY8910_INTERNAL_RESISTANCE + 1000, 10000, 0, CAP_N(C2)); + m_filter4->filter_rc_set_RC(filter_rc_device::LOWPASS, AY8910_INTERNAL_RESISTANCE + 1000, 10000, 0, CAP_N(C2)); // konamigt also uses bits 0x0018, what are they for? } @@ -1485,7 +1485,7 @@ void nemesis_state::machine_reset() m_irq_port_last = 0; } -static MACHINE_CONFIG_START( nemesis, nemesis_state ) +static MACHINE_CONFIG_START( nemesis ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/2) /* 9.216 MHz? */ @@ -1542,7 +1542,7 @@ static MACHINE_CONFIG_START( nemesis, nemesis_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gx400, nemesis_state ) +static MACHINE_CONFIG_START( gx400 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/2) /* 9.216MHz */ @@ -1603,7 +1603,7 @@ static MACHINE_CONFIG_START( gx400, nemesis_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( konamigt, nemesis_state ) +static MACHINE_CONFIG_START( konamigt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/2) /* 9.216 MHz? */ @@ -1659,7 +1659,7 @@ static MACHINE_CONFIG_START( konamigt, nemesis_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rf2_gx400, nemesis_state ) +static MACHINE_CONFIG_START( rf2_gx400 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/2) /* 9.216MHz */ @@ -1720,7 +1720,7 @@ static MACHINE_CONFIG_START( rf2_gx400, nemesis_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( salamand, nemesis_state ) +static MACHINE_CONFIG_START( salamand ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/2) /* 9.216MHz */ @@ -1771,7 +1771,7 @@ static MACHINE_CONFIG_START( salamand, nemesis_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( blkpnthr, nemesis_state ) +static MACHINE_CONFIG_START( blkpnthr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/2) /* 9.216 MHz? */ @@ -1817,7 +1817,7 @@ static MACHINE_CONFIG_START( blkpnthr, nemesis_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( citybomb, nemesis_state ) +static MACHINE_CONFIG_START( citybomb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/2) /* 9.216 MHz? */ @@ -1867,7 +1867,7 @@ static MACHINE_CONFIG_START( citybomb, nemesis_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( nyanpani, nemesis_state ) +static MACHINE_CONFIG_START( nyanpani ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/2) /* 9.216 MHz? */ @@ -1917,7 +1917,7 @@ static MACHINE_CONFIG_START( nyanpani, nemesis_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hcrash, nemesis_state ) +static MACHINE_CONFIG_START( hcrash ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/3) /* 6.144MHz */ @@ -2379,24 +2379,24 @@ ROM_END -GAME( 1985, nemesis, 0, nemesis, nemesis, driver_device, 0, ROT0, "Konami", "Nemesis (ROM version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, nemesisuk, nemesis, nemesis, nemesuk, driver_device, 0, ROT0, "Konami", "Nemesis (World?, ROM version)", MACHINE_SUPPORTS_SAVE ) -GAMEL(1985, konamigt, 0, konamigt, konamigt, driver_device, 0, ROT0, "Konami", "Konami GT", MACHINE_SUPPORTS_SAVE, layout_konamigt ) -GAME( 1985, rf2, konamigt, rf2_gx400, rf2, driver_device, 0, ROT0, "Konami", "Konami RF2 - Red Fighter", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, twinbee, 0, gx400, twinbee, driver_device, 0, ROT90, "Konami", "TwinBee (ROM version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, gradius, nemesis, gx400, gradius, driver_device, 0, ROT0, "Konami", "Gradius (Japan, ROM version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, gwarrior, 0, gx400, gwarrior, driver_device, 0, ROT0, "Konami", "Galactic Warriors", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, salamand, 0, salamand, salamand, driver_device, 0, ROT0, "Konami", "Salamander (version D)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, salamandj, salamand, salamand, salamand, driver_device, 0, ROT0, "Konami", "Salamander (version J)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lifefrce, salamand, salamand, salamand, driver_device, 0, ROT0, "Konami", "Lifeforce (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, lifefrcej, salamand, salamand, lifefrcj, driver_device, 0, ROT0, "Konami", "Lifeforce (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, blkpnthr, 0, blkpnthr, blkpnthr, driver_device, 0, ROT0, "Konami", "Black Panther", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, citybomb, 0, citybomb, citybomb, driver_device, 0, ROT270, "Konami", "City Bomber (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, citybombj, citybomb, citybomb, citybomb, driver_device, 0, ROT270, "Konami", "City Bomber (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, hcrash, 0, hcrash, hcrash, driver_device, 0, ROT0, "Konami", "Hyper Crash (version D)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, hcrashc, hcrash, hcrash, hcrash, driver_device, 0, ROT0, "Konami", "Hyper Crash (version C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, kittenk, 0, nyanpani, nyanpani, driver_device, 0, ROT0, "Konami", "Kitten Kaboodle", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, nyanpani, kittenk, nyanpani, nyanpani, driver_device, 0, ROT0, "Konami", "Nyan Nyan Panic (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, nemesis, 0, nemesis, nemesis, nemesis_state, 0, ROT0, "Konami", "Nemesis (ROM version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, nemesisuk, nemesis, nemesis, nemesuk, nemesis_state, 0, ROT0, "Konami", "Nemesis (World?, ROM version)", MACHINE_SUPPORTS_SAVE ) +GAMEL(1985, konamigt, 0, konamigt, konamigt, nemesis_state, 0, ROT0, "Konami", "Konami GT", MACHINE_SUPPORTS_SAVE, layout_konamigt ) +GAME( 1985, rf2, konamigt, rf2_gx400, rf2, nemesis_state, 0, ROT0, "Konami", "Konami RF2 - Red Fighter", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, twinbee, 0, gx400, twinbee, nemesis_state, 0, ROT90, "Konami", "TwinBee (ROM version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gradius, nemesis, gx400, gradius, nemesis_state, 0, ROT0, "Konami", "Gradius (Japan, ROM version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, gwarrior, 0, gx400, gwarrior, nemesis_state, 0, ROT0, "Konami", "Galactic Warriors", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, salamand, 0, salamand, salamand, nemesis_state, 0, ROT0, "Konami", "Salamander (version D)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, salamandj, salamand, salamand, salamand, nemesis_state, 0, ROT0, "Konami", "Salamander (version J)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lifefrce, salamand, salamand, salamand, nemesis_state, 0, ROT0, "Konami", "Lifeforce (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, lifefrcej, salamand, salamand, lifefrcj, nemesis_state, 0, ROT0, "Konami", "Lifeforce (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blkpnthr, 0, blkpnthr, blkpnthr, nemesis_state, 0, ROT0, "Konami", "Black Panther", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, citybomb, 0, citybomb, citybomb, nemesis_state, 0, ROT270, "Konami", "City Bomber (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, citybombj, citybomb, citybomb, citybomb, nemesis_state, 0, ROT270, "Konami", "City Bomber (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, hcrash, 0, hcrash, hcrash, nemesis_state, 0, ROT0, "Konami", "Hyper Crash (version D)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, hcrashc, hcrash, hcrash, hcrash, nemesis_state, 0, ROT0, "Konami", "Hyper Crash (version C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, kittenk, 0, nyanpani, nyanpani, nemesis_state, 0, ROT0, "Konami", "Kitten Kaboodle", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, nyanpani, kittenk, nyanpani, nyanpani, nemesis_state, 0, ROT0, "Konami", "Nyan Nyan Panic (Japan)", MACHINE_SUPPORTS_SAVE ) /* @@ -2665,7 +2665,7 @@ Manual says SW4, 5, 6, 7 & 8 not used, leave off */ -static MACHINE_CONFIG_START( bubsys, nemesis_state ) +static MACHINE_CONFIG_START( bubsys ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,18432000/2) /* 9.216MHz */ @@ -2747,4 +2747,4 @@ ROM_START( bubsys ) ROM_LOAD( "sram2.ic3", 0x2000, 0x2000, CRC(dda768be) SHA1(e98bae3ccf63eb67193346e9c40257a3ddb88e59) ) ROM_END -GAME( 1985, bubsys, 0, bubsys, nemesis, driver_device, 0, ROT0, "Konami", "Bubble System BIOS", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING ) +GAME( 1985, bubsys, 0, bubsys, nemesis, nemesis_state, 0, ROT0, "Konami", "Bubble System BIOS", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp index dc42437997a..d0129e8374c 100644 --- a/src/mame/drivers/neogeo.cpp +++ b/src/mame/drivers/neogeo.cpp @@ -472,6 +472,9 @@ #include "neogeo.lh" +#define VERBOSE (0) + + #define LOG_VIDEO_SYSTEM (0) #define LOG_MAIN_CPU_BANKING (0) #define LOG_AUDIO_CPU_BANKING (0) @@ -1639,7 +1642,7 @@ INPUT_CHANGED_MEMBER(aes_state::aes_jp1) * *************************************/ -MACHINE_CONFIG_START( neogeo_base, neogeo_state ) +MACHINE_CONFIG_START( neogeo_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, NEOGEO_MAIN_CPU_CLOCK) @@ -1773,7 +1776,7 @@ MACHINE_START_MEMBER(aes_state, aes) } -static MACHINE_CONFIG_DERIVED_CLASS( aes, neogeo_base, aes_state ) +static MACHINE_CONFIG_DERIVED( aes, neogeo_base ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(aes_main_map) @@ -2038,8 +2041,8 @@ DRIVER_INIT_MEMBER(neogeo_state, neogeo) /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT */ -CONS( 1990, neogeo, 0, 0, mvs, neogeo_6slot, neogeo_state, neogeo, "SNK", "Neo-Geo", MACHINE_IS_BIOS_ROOT | MACHINE_SUPPORTS_SAVE ) -CONS( 1990, aes, 0, 0, aes, aes, driver_device, 0, "SNK", "Neo-Geo AES", MACHINE_SUPPORTS_SAVE ) +CONS( 1990, neogeo, 0, 0, mvs, neogeo_6slot, neogeo_state, neogeo, "SNK", "Neo-Geo", MACHINE_IS_BIOS_ROOT | MACHINE_SUPPORTS_SAVE ) +CONS( 1990, aes, 0, 0, aes, aes, aes_state, 0, "SNK", "Neo-Geo AES", MACHINE_SUPPORTS_SAVE ) // Include standalone drivers for the single games diff --git a/src/mame/drivers/neogeocd.cpp b/src/mame/drivers/neogeocd.cpp index 5c109a47820..1da84ea7094 100644 --- a/src/mame/drivers/neogeocd.cpp +++ b/src/mame/drivers/neogeocd.cpp @@ -1036,7 +1036,7 @@ uint32_t ngcd_state::screen_update_neocd(screen_device &screen, bitmap_rgb32 &bi } -static MACHINE_CONFIG_DERIVED_CLASS( neocd, neogeo_base, ngcd_state ) +static MACHINE_CONFIG_DERIVED( neocd, neogeo_base ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(neocd_main_map) @@ -1139,9 +1139,8 @@ DRIVER_INIT_MEMBER(ngcd_state,neocdzj) } -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1996, neocdz, 0, 0, neocd, neocd, ngcd_state, neocdz, "SNK", "Neo-Geo CDZ (US)", 0 ) // the CDZ is the newer model -CONS( 1996, neocdzj, neocdz, 0, neocd, neocd, ngcd_state, neocdzj, "SNK", "Neo-Geo CDZ (Japan)", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1996, neocdz, 0, 0, neocd, neocd, ngcd_state, neocdz, "SNK", "Neo-Geo CDZ (US)", 0 ) // the CDZ is the newer model +CONS( 1996, neocdzj, neocdz, 0, neocd, neocd, ngcd_state, neocdzj, "SNK", "Neo-Geo CDZ (Japan)", 0 ) - -CONS( 1994, neocd, neocdz, 0, neocd, neocd, driver_device, 0, "SNK", "Neo-Geo CD", MACHINE_NOT_WORKING ) // older model, ignores disc protections? +CONS( 1994, neocd, neocdz, 0, neocd, neocd, ngcd_state, 0, "SNK", "Neo-Geo CD", MACHINE_NOT_WORKING ) // older model, ignores disc protections? diff --git a/src/mame/drivers/neopcb.cpp b/src/mame/drivers/neopcb.cpp index e85e33ac68a..ae05d6209f0 100644 --- a/src/mame/drivers/neopcb.cpp +++ b/src/mame/drivers/neopcb.cpp @@ -29,7 +29,7 @@ void neopcb_state::neopcb_postload() set_outputs(); } -static MACHINE_CONFIG_DERIVED_CLASS( neopcb, neogeo_arcade, neopcb_state ) +static MACHINE_CONFIG_DERIVED( neopcb, neogeo_arcade ) MCFG_CMC_PROT_ADD("cmc50") MCFG_PCM2_PROT_ADD("pcm2") MCFG_PVC_PROT_ADD("pvc") diff --git a/src/mame/drivers/neoprint.cpp b/src/mame/drivers/neoprint.cpp index 4eb4f0bdafc..51fa4151b53 100644 --- a/src/mame/drivers/neoprint.cpp +++ b/src/mame/drivers/neoprint.cpp @@ -45,7 +45,8 @@ public: m_screen(*this, "screen"), m_palette(*this, "palette"), m_soundlatch(*this, "soundlatch"), - m_generic_paletteram_16(*this, "paletteram") { } + m_generic_paletteram_16(*this, "paletteram") + { } required_shared_ptr m_npvidram; required_shared_ptr m_npvidregs; @@ -477,7 +478,7 @@ void neoprint_state::machine_start() m_upd4990a->c2_w(1); } -static MACHINE_CONFIG_START( neoprint, neoprint_state ) +static MACHINE_CONFIG_START( neoprint ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(neoprint_map) MCFG_CPU_PERIODIC_INT_DRIVER(neoprint_state, irq3_line_hold, 45) /* camera / printer irq, unknown timing */ @@ -520,7 +521,7 @@ MACHINE_RESET_MEMBER(neoprint_state,nprsp) m_bank_val = 0; } -static MACHINE_CONFIG_START( nprsp, neoprint_state ) +static MACHINE_CONFIG_START( nprsp ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(nprsp_map) MCFG_CPU_PERIODIC_INT_DRIVER(neoprint_state, irq3_line_hold, 45) /* camera / printer irq, unknown timing */ @@ -672,7 +673,7 @@ DRIVER_INIT_MEMBER(neoprint_state,unkneo) ROM[0x12c2/2] = 0x4e71; } -GAME( 1996, neoprint, 0, neoprint, neoprint, neoprint_state, unkneo, ROT0, "SNK", "Neo Print (Japan) (T2d)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1996, npcartv1, 0, neoprint, neoprint, neoprint_state, npcartv1, ROT0, "SNK", "Neo Print V1 (World) (E1a)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1998, 98best44, 0, neoprint, neoprint, neoprint_state, 98best44, ROT0, "SNK", "Neo Print - '98 NeoPri Best 44 (Japan) (T4i 3.07)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1996, nprsp, 0, nprsp, neoprint, neoprint_state, nprsp, ROT0, "SNK", "NeopriSP Retro Collection (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1996, neoprint, 0, neoprint, neoprint, neoprint_state, unkneo, ROT0, "SNK", "Neo Print (Japan) (T2d)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1996, npcartv1, 0, neoprint, neoprint, neoprint_state, npcartv1, ROT0, "SNK", "Neo Print V1 (World) (E1a)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1998, 98best44, 0, neoprint, neoprint, neoprint_state, 98best44, ROT0, "SNK", "Neo Print - '98 NeoPri Best 44 (Japan) (T4i 3.07)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1996, nprsp, 0, nprsp, neoprint, neoprint_state, nprsp, ROT0, "SNK", "NeopriSP Retro Collection (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/neptunp2.cpp b/src/mame/drivers/neptunp2.cpp index 952291942ae..31d1195f6bf 100644 --- a/src/mame/drivers/neptunp2.cpp +++ b/src/mame/drivers/neptunp2.cpp @@ -92,7 +92,7 @@ static GFXDECODE_START( neptunp2 ) // GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 8 ) GFXDECODE_END -static MACHINE_CONFIG_START( neptunp2, neptunp2_state ) +static MACHINE_CONFIG_START( neptunp2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I80188,20000000) // N80C188-20 AMD @@ -139,4 +139,4 @@ ROM_START( neptunp2 ) ROM_END -GAME( 199?, neptunp2, 0, neptunp2, neptunp2, driver_device, 0, ROT0, "Unidesa?", "Neptune's Pearls 2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 199?, neptunp2, 0, neptunp2, neptunp2, neptunp2_state, 0, ROT0, "Unidesa?", "Neptune's Pearls 2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/nes.cpp b/src/mame/drivers/nes.cpp index 2e22e40df43..0501fe1cc3a 100644 --- a/src/mame/drivers/nes.cpp +++ b/src/mame/drivers/nes.cpp @@ -54,18 +54,18 @@ void nes_state::ppu_nmi(int *ppu_regs) } -static MACHINE_CONFIG_START( nes, nes_state ) +static MACHINE_CONFIG_START( nes ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", N2A03, NTSC_CLOCK) + MCFG_CPU_ADD("maincpu", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(nes_map) MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60.098) + MCFG_SCREEN_REFRESH_RATE(60.0988) // This isn't used so much to calulate the vblank duration (the PPU code tracks that manually) but to determine // the number of cycles in each scanline for the PPU scanline timer. Since the PPU has 20 vblank scanlines + 2 // non-rendering scanlines, we compensate. This ends up being 2500 cycles for the non-rendering portion, 2273 // cycles for the actual vblank period. - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((113.66/(NTSC_CLOCK/1000000)) * (PPU_VBLANK_LAST_SCANLINE_NTSC-PPU_VBLANK_FIRST_SCANLINE+1+2))) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((113.66/(NTSC_APU_CLOCK/1000000)) * (ppu2c0x_device::VBLANK_LAST_SCANLINE_NTSC-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))) MCFG_SCREEN_SIZE(32*8, 262) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(nes_state, screen_update_nes) @@ -97,15 +97,11 @@ static MACHINE_CONFIG_START( nes, nes_state ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( nespal, nes ) - /* basic machine hardware */ -// MCFG_CPU_MODIFY("maincpu") -// MCFG_CPU_CLOCK(PAL_CLOCK) // this doesn't get inherited by the APU with DERIVED_CLOCK! - - MCFG_CPU_REPLACE("maincpu", N2A03, PAL_CLOCK) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_CLOCK(PAL_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(nes_map) - MCFG_DEVICE_REMOVE("ppu") MCFG_PPU2C07_ADD("ppu") MCFG_PPU2C0X_CPU("maincpu") @@ -113,36 +109,42 @@ static MACHINE_CONFIG_DERIVED( nespal, nes ) /* video hardware */ MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(53.355) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((106.53/(PAL_CLOCK/1000000)) * (PPU_VBLANK_LAST_SCANLINE_PAL-PPU_VBLANK_FIRST_SCANLINE+1+2))) + MCFG_SCREEN_REFRESH_RATE(50.0070) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((106.53/(PAL_APU_CLOCK/1000000)) * (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE+1+2))) MCFG_SCREEN_SIZE(32*8, 312) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 30*8-1) - - MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( dendy, nes ) +static MACHINE_CONFIG_DERIVED( famicom, nes ) + MCFG_DEVICE_REMOVE("ctrl1") + MCFG_DEVICE_REMOVE("ctrl2") + MCFG_NES_CONTROL_PORT_ADD("ctrl1", fc_control_port1_devices, "joypad") + MCFG_NES_CONTROL_PORT_ADD("ctrl2", fc_control_port2_devices, "joypad") + MCFG_FC_EXPANSION_PORT_ADD("exp", fc_expansion_devices, nullptr) + MCFG_NESCTRL_BRIGHTPIXEL_CB(nes_state, bright_pixel) - /* basic machine hardware */ -// MCFG_CPU_MODIFY( "maincpu" ) -// MCFG_CPU_CLOCK( 26601712/15 ) // this doesn't get inherited by the APU with DERIVED_CLOCK! + MCFG_SOFTWARE_LIST_ADD("flop_list", "famicom_flop") + MCFG_SOFTWARE_LIST_ADD("cass_list", "famicom_cass") +MACHINE_CONFIG_END - MCFG_CPU_REPLACE("maincpu", N2A03, 26601712/15 )/* 26.601712MHz / 15 == 1.77344746666... MHz */ +static MACHINE_CONFIG_DERIVED( nespalc, nespal ) + MCFG_CPU_MODIFY( "maincpu" ) + MCFG_CPU_CLOCK(PALC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(nes_map) + /* UMC 6538 and friends -- extends time for rendering dummy scanlines */ MCFG_DEVICE_REMOVE("ppu") - MCFG_PPU2C07_ADD("ppu") + MCFG_PPUPALC_ADD("ppu") MCFG_PPU2C0X_CPU("maincpu") MCFG_PPU2C0X_SET_NMI(nes_state, ppu_nmi) /* video hardware */ MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(50.00697796827) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((106.53/(PAL_CLOCK/1000000)) * (PPU_VBLANK_LAST_SCANLINE_PAL-PPU_VBLANK_FIRST_SCANLINE+1+2))) - + MCFG_SCREEN_REFRESH_RATE(50.0070) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC((113.66/(PALC_APU_CLOCK/1000000)) * (ppu2c0x_device::VBLANK_LAST_SCANLINE_PAL-ppu2c0x_device::VBLANK_FIRST_SCANLINE_PALC+1+2))) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( famicom, nes ) +static MACHINE_CONFIG_DERIVED( famipalc, nespalc ) MCFG_DEVICE_REMOVE("ctrl1") MCFG_DEVICE_REMOVE("ctrl2") MCFG_NES_CONTROL_PORT_ADD("ctrl1", fc_control_port1_devices, "joypad") @@ -150,10 +152,16 @@ static MACHINE_CONFIG_DERIVED( famicom, nes ) MCFG_FC_EXPANSION_PORT_ADD("exp", fc_expansion_devices, nullptr) MCFG_NESCTRL_BRIGHTPIXEL_CB(nes_state, bright_pixel) - MCFG_SOFTWARE_LIST_ADD("flop_list", "famicom_flop") MCFG_SOFTWARE_LIST_ADD("cass_list", "famicom_cass") MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( suborkbd, famipalc ) + /* TODO: emulate the parallel port bus! */ + MCFG_DEVICE_MODIFY("exp") + MCFG_SLOT_DEFAULT_OPTION("subor_keyboard") + MCFG_SLOT_FIXED(true) +MACHINE_CONFIG_END + void nes_state::setup_disk(nes_disksys_device *slot) { if (slot) @@ -176,9 +184,9 @@ void nes_state::setup_disk(nes_disksys_device *slot) slot->pcb_start(machine(), m_ciram.get(), false); m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(device_nes_cart_interface::chr_r),(device_nes_cart_interface *)slot), write8_delegate(FUNC(device_nes_cart_interface::chr_w),(device_nes_cart_interface *)slot)); m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(device_nes_cart_interface::nt_r),(device_nes_cart_interface *)slot), write8_delegate(FUNC(device_nes_cart_interface::nt_w),(device_nes_cart_interface *)slot)); - m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(device_nes_cart_interface::scanline_irq),(device_nes_cart_interface *)slot)); - m_ppu->set_hblank_callback(ppu2c0x_hblank_delegate(FUNC(nes_disksys_device::hblank_irq),(nes_disksys_device *)slot)); - m_ppu->set_latch(ppu2c0x_latch_delegate(FUNC(device_nes_cart_interface::ppu_latch),(device_nes_cart_interface *)slot)); + m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(device_nes_cart_interface::scanline_irq),(device_nes_cart_interface *)slot)); + m_ppu->set_hblank_callback(ppu2c0x_device::hblank_delegate(FUNC(nes_disksys_device::hblank_irq),(nes_disksys_device *)slot)); + m_ppu->set_latch(ppu2c0x_device::latch_delegate(FUNC(device_nes_cart_interface::ppu_latch),(device_nes_cart_interface *)slot)); } } @@ -285,6 +293,13 @@ ROM_START( m82 ) ROM_LOAD( "m82_v1_0.bin", 0x10000, 0x4000, CRC(7d56840a) SHA1(cbd2d14fa073273ba58367758f40d67fd8a9106d) ) ROM_END +ROM_START( m82p ) + /* same as m82 */ + ROM_REGION( 0x14000, "maincpu", 0 ) /* Main RAM + program banks */ + /* Banks to be mapped at 0xe000? More investigations needed... */ + ROM_LOAD( "m82_v1_0.bin", 0x10000, 0x4000, CRC(7d56840a) SHA1(cbd2d14fa073273ba58367758f40d67fd8a9106d) ) +ROM_END + // see http://www.disgruntleddesigner.com/chrisc/drpcjr/index.html // and http://www.disgruntleddesigner.com/chrisc/drpcjr/DrPCJrMemMap.txt ROM_START( drpcjr ) @@ -296,27 +311,68 @@ ROM_START( drpcjr ) // ROM_LOAD("drpcjr_v1_5_gg.bin", 0x10000, 0x8000, CRC(98f2033b) SHA1(93c114da787a19279d1a46667c2f69b49e25d4f1) ) ROM_END +ROM_START( iq501 ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) /* Main RAM */ +ROM_END + +ROM_START( iq502 ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) /* Main RAM */ +ROM_END + ROM_START( dendy ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) /* Main RAM */ ROM_END +ROM_START( dendy2 ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) /* Main RAM */ +ROM_END + ROM_START( gchinatv ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) /* Main RAM */ ROM_END +ROM_START( sb486 ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) /* Main RAM */ +ROM_END + /*************************************************************************** Game driver(s) ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS( 1985, nes, 0, 0, nes, nes, driver_device, 0, "Nintendo", "Nintendo Entertainment System / Famicom (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -CONS( 1987, nespal, nes, 0, nespal, nes, driver_device, 0, "Nintendo", "Nintendo Entertainment System (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -CONS( 1983, famicom, nes, 0, famicom, famicom, nes_state, famicom, "Nintendo", "Famicom (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -CONS( 1983, fds, nes, 0, fds, famicom, nes_state, famicom, "Nintendo", "Famicom (w/ Disk System add-on)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -CONS( 1986, famitwin, nes, 0, famitwin, famicom, nes_state, famicom, "Sharp", "Famicom Twin", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -CONS( 198?, m82, nes, 0, nes, nes, driver_device, 0, "Nintendo", "M82 Display Unit", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -CONS( 1996, drpcjr, nes, 0, famicom, famicom, nes_state, famicom, "Bung", "Doctor PC Jr", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -CONS( 1992, dendy, nes, 0, dendy, nes, driver_device, 0, "Steepler", "Dendy Classic", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -CONS( 198?, gchinatv, nes, 0, nespal, nes, driver_device, 0, "Golden China", "Golden China TV Game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME + +// Nintendo Entertainment System hardware +CONS( 1985, nes, 0, 0, nes, nes, nes_state, 0, "Nintendo", "Nintendo Entertainment System / Famicom (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +CONS( 1987, nespal, nes, 0, nespal, nes, nes_state, 0, "Nintendo", "Nintendo Entertainment System (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +// M82 Display Unit +// supports up to twelve cartridge slots +CONS( 198?, m82, nes, 0, nes, nes, nes_state, 0, "Nintendo", "M82 Display Unit (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +CONS( 198?, m82p, nes, 0, nespal, nes, nes_state, 0, "Nintendo", "M82 Display Unit (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) + +// Famicom hardware +CONS( 1983, famicom, 0, 0, famicom, famicom, nes_state, famicom, "Nintendo", "Famicom", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +CONS( 1983, fds, famicom, 0, fds, famicom, nes_state, famicom, "Nintendo", "Famicom (w/ Disk System add-on)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +CONS( 1986, famitwin, famicom, 0, famitwin, famicom, nes_state, famicom, "Sharp", "Famicom Twin", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) + +// Clone hardware +// Many knockoffs using derivatives of the UMC board design, later incorporated into single CMOS chips, were manufactured before and past the end of the Famicom's timeline. + +// !! PAL clones documented here !! +// Famicom-based +CONS( 1992, iq501, 0, 0, famipalc, nes, nes_state, famicom, "Micro Genius", "IQ-501", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +CONS( 1992, iq502, 0, 0, famipalc, nes, nes_state, famicom, "Micro Genius", "IQ-502", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +CONS( 1992, dendy, iq501, 0, famipalc, nes, nes_state, famicom, "Steepler", "Dendy Classic 1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +CONS( 1992, dendy2, iq502, 0, famipalc, nes, nes_state, famicom, "Steepler", "Dendy Classic 2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +CONS( 198?, gchinatv, 0, 0, famipalc, nes, nes_state, famicom, "Golden China", "Golden China TV Game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) + +// Subor/Xiao Ba Wang hardware and derivatives +// These clones implement a keyboard and a parallel port for printing from a word processor. Later models have mice, PS/2 ports, serial ports and a floppy drive. +CONS( 1993, sb486, 0, 0, suborkbd, nes, nes_state, famicom, "Subor", "SB-486", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) + +// !! NTSC clones documented here !! +// Famicom-based +// Bung hardware +// Mice, keyboard, etc, including a floppy drive that allows you to run games with a selection of 4 internal "mappers" available on the system. +CONS( 1996, drpcjr, 0, 0, famicom, famicom, nes_state, famicom, "Bung", "Doctor PC Jr", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/newbrain.cpp b/src/mame/drivers/newbrain.cpp index 54f12085371..c4ebd73867a 100644 --- a/src/mame/drivers/newbrain.cpp +++ b/src/mame/drivers/newbrain.cpp @@ -805,7 +805,7 @@ void newbrain_state::device_timer(emu_timer &timer, device_timer_id id, int para // MACHINE_CONFIG( newbrain ) //------------------------------------------------- -static MACHINE_CONFIG_START( newbrain, newbrain_state ) +static MACHINE_CONFIG_START( newbrain ) // basic system hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_16MHz/4) MCFG_CPU_PROGRAM_MAP(newbrain_mreq) @@ -943,7 +943,7 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1981, newbrain, 0, 0, newbrain_ad, newbrain, driver_device, 0, "Grundy Business Systems Ltd", "NewBrain AD", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -COMP( 1981, newbraina, newbrain, 0, newbrain_a, newbrain, driver_device, 0, "Grundy Business Systems Ltd", "NewBrain A", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -COMP( 1981, newbrainmd, newbrain, 0, newbrain_md, newbrain, driver_device, 0, "Grundy Business Systems Ltd", "NewBrain MD", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, newbrain, 0, 0, newbrain_ad, newbrain, newbrain_state, 0, "Grundy Business Systems Ltd", "NewBrain AD", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +COMP( 1981, newbraina, newbrain, 0, newbrain_a, newbrain, newbrain_state, 0, "Grundy Business Systems Ltd", "NewBrain A", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +COMP( 1981, newbrainmd, newbrain, 0, newbrain_md, newbrain, newbrain_state, 0, "Grundy Business Systems Ltd", "NewBrain MD", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/news.cpp b/src/mame/drivers/news.cpp index 603b631dc02..464393eeec6 100644 --- a/src/mame/drivers/news.cpp +++ b/src/mame/drivers/news.cpp @@ -128,7 +128,7 @@ void news_state::machine_reset() m_bgpic = 0; } -static MACHINE_CONFIG_START( news, news_state ) +static MACHINE_CONFIG_START( news ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,8000000) /* ? MHz */ @@ -153,7 +153,7 @@ static MACHINE_CONFIG_START( news, news_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -183,5 +183,5 @@ ROM_START( newsa ) ROM_LOAD( "virus.1", 0x00000, 0x40000, CRC(41f5935a) SHA1(1566d243f165019660cd4dd69df9f049e0130f15) ) ROM_END -GAME( 1993, news, 0, news, news, driver_device, 0, ROT0, "Poby / Virus", "News (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, newsa, news, news, newsa, driver_device, 0, ROT0, "Poby", "News (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, news, 0, news, news, news_state, 0, ROT0, "Poby / Virus", "News (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, newsa, news, news, newsa, news_state, 0, ROT0, "Poby", "News (set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp index 99d14eb1ffd..c9ff2957252 100644 --- a/src/mame/drivers/next.cpp +++ b/src/mame/drivers/next.cpp @@ -900,13 +900,13 @@ void next_state::machine_reset() dma_drq_w(4, true); // soundout } -void next_state::vblank_w(screen_device &screen, bool vblank_state) +WRITE_LINE_MEMBER(next_state::vblank_w) { if(vbl_enabled) { if(screen_color) - irq_set(13, vblank_state); + irq_set(13, state); else - irq_set(5, vblank_state); + irq_set(5, state); } } @@ -1014,7 +1014,7 @@ static MACHINE_CONFIG_FRAGMENT( ncr5390 ) MCFG_NCR5390_DRQ_HANDLER(DEVWRITELINE(":", next_state, scsi_drq)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( next_base, next_state ) +static MACHINE_CONFIG_START( next_base ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -1023,7 +1023,7 @@ static MACHINE_CONFIG_START( next_base, next_state ) MCFG_SCREEN_UPDATE_DRIVER(next_state, screen_update) MCFG_SCREEN_SIZE(1120, 900) MCFG_SCREEN_VISIBLE_AREA(0, 1120-1, 0, 832-1) - MCFG_SCREEN_VBLANK_DRIVER(next_state, vblank_w) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(next_state, vblank_w)) // devices MCFG_NSCSI_BUS_ADD("scsibus") @@ -1216,12 +1216,12 @@ DRIVER_INIT_MEMBER(next_state,nextctc) /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, next, 0, 0, next, next, next_state, next, "Next Software Inc", "NeXT Cube", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1990, nexts, 0, 0, nexts, next, next_state, nexts, "Next Software Inc", "NeXTstation", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1990, nexts2, nexts, 0, nexts2, next, next_state, nexts2, "Next Software Inc", "NeXTstation (X15 variant)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1990, nextsc, nexts, 0, nextsc, next, next_state, nextsc, "Next Software Inc", "NeXTstation color", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1990, nextst, 0, 0, nextst, next, next_state, nextst, "Next Software Inc", "NeXTstation turbo", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1990, nextstc, nextst, 0, nextstc, next, next_state, nextstc, "Next Software Inc", "NeXTstation turbo color", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( ????, nextct, nextst, 0, nextct, next, next_state, nextct, "Next Software Inc", "NeXT Cube turbo", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( ????, nextctc, nextst, 0, nextctc, next, next_state, nextctc, "Next Software Inc", "NeXT Cube turbo color", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1987, next, 0, 0, next, next, next_state, next, "Next Software Inc", "NeXT Cube", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1990, nexts, 0, 0, nexts, next, next_state, nexts, "Next Software Inc", "NeXTstation", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1990, nexts2, nexts, 0, nexts2, next, next_state, nexts2, "Next Software Inc", "NeXTstation (X15 variant)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1990, nextsc, nexts, 0, nextsc, next, next_state, nextsc, "Next Software Inc", "NeXTstation color", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1990, nextst, 0, 0, nextst, next, next_state, nextst, "Next Software Inc", "NeXTstation turbo", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1990, nextstc, nextst, 0, nextstc, next, next_state, nextstc, "Next Software Inc", "NeXTstation turbo color", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( ????, nextct, nextst, 0, nextct, next, next_state, nextct, "Next Software Inc", "NeXT Cube turbo", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( ????, nextctc, nextst, 0, nextctc, next, next_state, nextctc, "Next Software Inc", "NeXT Cube turbo color", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/nexus3d.cpp b/src/mame/drivers/nexus3d.cpp index e8430db92d0..ae8afc957f9 100644 --- a/src/mame/drivers/nexus3d.cpp +++ b/src/mame/drivers/nexus3d.cpp @@ -115,7 +115,7 @@ void nexus3d_state::machine_reset() { } -static MACHINE_CONFIG_START( nexus3d, nexus3d_state ) +static MACHINE_CONFIG_START( nexus3d ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM920T, 200000000) @@ -173,5 +173,5 @@ DRIVER_INIT_MEMBER(nexus3d_state,nexus3d) memcpy( m_mainram, memregion("flash")->base(), 4 * 1024); } -GAME( 2005, acheart, 0, nexus3d, nexus3d, nexus3d_state, nexus3d, ROT0, "Examu", "Arcana Heart",MACHINE_IS_SKELETON ) -GAME( 2006, acheartf, 0, nexus3d, nexus3d, nexus3d_state, nexus3d, ROT0, "Examu", "Arcana Heart Full",MACHINE_IS_SKELETON ) +GAME( 2005, acheart, 0, nexus3d, nexus3d, nexus3d_state, nexus3d, ROT0, "Examu", "Arcana Heart", MACHINE_IS_SKELETON ) +GAME( 2006, acheartf, 0, nexus3d, nexus3d, nexus3d_state, nexus3d, ROT0, "Examu", "Arcana Heart Full", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp index e23e94b889d..53c0d522d9a 100644 --- a/src/mame/drivers/ngen.cpp +++ b/src/mame/drivers/ngen.cpp @@ -161,7 +161,7 @@ private: optional_memory_region m_disk_rom; memory_array m_vram; memory_array m_fontram; - optional_device m_fdc; + optional_device m_fdc; optional_device m_fd0; optional_device m_fdc_timer; optional_device m_hdc; @@ -911,7 +911,7 @@ static SLOT_INTERFACE_START( ngen_floppies ) SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( ngen, ngen_state ) +static MACHINE_CONFIG_START( ngen ) // basic machine hardware MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(ngen_mem) @@ -1024,7 +1024,7 @@ static MACHINE_CONFIG_START( ngen, ngen_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ngen386, ngen386_state ) +static MACHINE_CONFIG_START( ngen386 ) MCFG_CPU_ADD("i386cpu", I386, XTAL_50MHz / 2) MCFG_CPU_PROGRAM_MAP(ngen386_mem) MCFG_CPU_IO_MAP(ngen386_io) @@ -1176,6 +1176,6 @@ ROM_START( 386i ) ROM_END -COMP( 1983, ngen, 0, 0, ngen, ngen, driver_device, 0, "Convergent Technologies", "NGEN CP-001", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1991, ngenb38, ngen, 0, ngen386, ngen, driver_device, 0, "Financial Products Corp.", "B28/38", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1990, 386i, ngen, 0, 386i, ngen, driver_device, 0, "Convergent Technologies", "386i", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1983, ngen, 0, 0, ngen, ngen, ngen_state, 0, "Convergent Technologies", "NGEN CP-001", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1991, ngenb38, ngen, 0, ngen386, ngen, ngen386_state, 0, "Financial Products Corp.", "B28/38", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1990, 386i, ngen, 0, 386i, ngen, ngen386_state, 0, "Convergent Technologies", "386i", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ngp.cpp b/src/mame/drivers/ngp.cpp index dcbd70a8d81..d74884ad2a2 100644 --- a/src/mame/drivers/ngp.cpp +++ b/src/mame/drivers/ngp.cpp @@ -816,7 +816,7 @@ void ngp_state::nvram_write(emu_file &file) } -static MACHINE_CONFIG_START( ngp_common, ngp_state ) +static MACHINE_CONFIG_START( ngp_common ) MCFG_CPU_ADD( "maincpu", TMP95C061, XTAL_6_144MHz ) MCFG_TLCS900H_AM8_16(1) @@ -895,6 +895,6 @@ ROM_START( ngpc ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1998, ngp, 0, 0, ngp, ngp, driver_device, 0, "SNK", "NeoGeo Pocket", MACHINE_SUPPORTS_SAVE ) -CONS( 1999, ngpc, ngp, 0, ngpc, ngp, driver_device, 0, "SNK", "NeoGeo Pocket Color", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1998, ngp, 0, 0, ngp, ngp, ngp_state, 0, "SNK", "NeoGeo Pocket", MACHINE_SUPPORTS_SAVE ) +CONS( 1999, ngpc, ngp, 0, ngpc, ngp, ngp_state, 0, "SNK", "NeoGeo Pocket Color", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nibble.cpp b/src/mame/drivers/nibble.cpp index 0a0ad62d7a0..41e00f71e88 100644 --- a/src/mame/drivers/nibble.cpp +++ b/src/mame/drivers/nibble.cpp @@ -301,7 +301,7 @@ GFXDECODE_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( nibble, nibble_state ) +static MACHINE_CONFIG_START( nibble ) MCFG_TMS99xx_ADD("maincpu", TMS9900, MASTER_CLOCK/4, nibble_map, nibble_cru_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", nibble_state, nibble_interrupt) @@ -359,5 +359,5 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ -GAME( 19??, l9nibble, 0, nibble, nibble, driver_device, 0, ROT0, "Nibble", "Lucky 9", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 19??, l9nibble, 0, nibble, nibble, nibble_state, 0, ROT0, "Nibble", "Lucky 9", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp index 1d1186222a9..dbd8f005d43 100644 --- a/src/mame/drivers/nightgal.cpp +++ b/src/mame/drivers/nightgal.cpp @@ -67,6 +67,7 @@ public: uint8_t m_nsc_latch; uint8_t m_z80_latch; uint8_t m_mux_data; + emu_timer *m_z80_wait_ack_timer; required_shared_ptr m_comms_ram; @@ -133,7 +134,7 @@ uint32_t nightgal_state::screen_update_nightgal(screen_device &screen, bitmap_in for (y = cliprect.min_y; y <= cliprect.max_y; ++y) { - uint8_t *src = &m_blitter->m_blit_buffer[y * 256 + cliprect.min_x]; + const uint8_t *src = &m_blitter->blit_buffer(y, cliprect.min_x); uint16_t *dst = &m_tmp_bitmap->pix16(y, cliprect.min_x); for (x = cliprect.min_x; x <= cliprect.max_x; x += 2) @@ -235,7 +236,7 @@ void nightgal_state::z80_wait_assert_cb() // Note: cycles_to_attotime requires z80 context to work, calling for example m_subcpu as context gives a x4 cycle boost in z80 terms (reads execute_cycles_to_clocks() from NCS?) even if they runs at same speed basically. // TODO: needs a getter that tells a given CPU how many cycles requires an executing opcode for the r/w operation, which stacks with wait state penalty for accessing this specific area. - machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(4), timer_expired_delegate(FUNC(nightgal_state::z80_wait_ack_cb),this)); + m_z80_wait_ack_timer->adjust(m_maincpu->cycles_to_attotime(4)); } READ8_MEMBER(nightgal_state::royalqn_comm_r) @@ -634,6 +635,8 @@ INPUT_PORTS_END void nightgal_state::machine_start() { + m_z80_wait_ack_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(nightgal_state::z80_wait_ack_cb), this)); + save_item(NAME(m_nsc_latch)); save_item(NAME(m_z80_latch)); save_item(NAME(m_mux_data)); @@ -650,7 +653,7 @@ void nightgal_state::machine_reset() memset(m_blit_raw_data, 0, ARRAY_LENGTH(m_blit_raw_data)); } -static MACHINE_CONFIG_START( royalqn, nightgal_state ) +static MACHINE_CONFIG_START( royalqn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MASTER_CLOCK / 8) /* ? MHz */ @@ -1032,12 +1035,12 @@ DRIVER_INIT_MEMBER(nightgal_state,ngalsumr) } /* Type 1 HW */ -GAME( 1984, nightgal, 0, royalqn, sexygal, driver_device, 0, ROT0, "Nichibutsu", "Night Gal (Japan 840920 AG 1-00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, ngtbunny, 0, royalqn, sexygal, driver_device, 0, ROT0, "Nichibutsu", "Night Bunny (Japan 840601 MRN 2-10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, royalngt, ngtbunny, royalqn, sexygal, driver_device, 0, ROT0, "Royal Denshi", "Royal Night [BET] (Japan 840220 RN 2-00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, royalqn, 0, royalqn, sexygal, nightgal_state, royalqn, ROT0, "Royal Denshi", "Royal Queen [BET] (Japan 841010 RQ 0-07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, nightgal, 0, royalqn, sexygal, nightgal_state, 0, ROT0, "Nichibutsu", "Night Gal (Japan 840920 AG 1-00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, ngtbunny, 0, royalqn, sexygal, nightgal_state, 0, ROT0, "Nichibutsu", "Night Bunny (Japan 840601 MRN 2-10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, royalngt, ngtbunny, royalqn, sexygal, nightgal_state, 0, ROT0, "Royal Denshi", "Royal Night [BET] (Japan 840220 RN 2-00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, royalqn, 0, royalqn, sexygal, nightgal_state, royalqn, ROT0, "Royal Denshi", "Royal Queen [BET] (Japan 841010 RQ 0-07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) /* Type 2 HW */ -GAME( 1985, sexygal, 0, sexygal, sexygal, driver_device, 0, ROT0, "Nichibutsu", "Sexy Gal (Japan 850501 SXG 1-00)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, sweetgal, sexygal, sexygal, sexygal, driver_device, 0, ROT0, "Nichibutsu", "Sweet Gal (Japan 850510 SWG 1-02)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sexygal, 0, sexygal, sexygal, nightgal_state, 0, ROT0, "Nichibutsu", "Sexy Gal (Japan 850501 SXG 1-00)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sweetgal, sexygal, sexygal, sexygal, nightgal_state, 0, ROT0, "Nichibutsu", "Sweet Gal (Japan 850510 SWG 1-02)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) /* Type 3 HW */ -GAME( 1985, ngalsumr, 0, ngalsumr,sexygal, nightgal_state, ngalsumr,ROT0, "Nichibutsu", "Night Gal Summer (Japan 850702 NGS 0-01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, ngalsumr, 0, ngalsumr,sexygal, nightgal_state, ngalsumr, ROT0, "Nichibutsu", "Night Gal Summer (Japan 850702 NGS 0-01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ninjakd2.cpp b/src/mame/drivers/ninjakd2.cpp index e585971c771..d1685649fbc 100644 --- a/src/mame/drivers/ninjakd2.cpp +++ b/src/mame/drivers/ninjakd2.cpp @@ -927,7 +927,7 @@ MACHINE_RESET_MEMBER(ninjakd2_state,omegaf) /*****************************************************************************/ -static MACHINE_CONFIG_START( ninjakd2_core, ninjakd2_state ) +static MACHINE_CONFIG_START( ninjakd2_core ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK_12/2) /* verified */ @@ -944,7 +944,7 @@ static MACHINE_CONFIG_START( ninjakd2_core, ninjakd2_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(ninjakd2_state, screen_update_ninjakd2) - MCFG_SCREEN_VBLANK_DRIVER(ninjakd2_state, screen_eof_ninjakd2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ninjakd2_state, screen_vblank_ninjakd2)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", ninjakd2) @@ -977,7 +977,14 @@ static MACHINE_CONFIG_START( ninjakd2_core, ninjakd2_state ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ninjakd2, ninjakd2_core ) + MCFG_CPU_REPLACE("soundcpu", MC8123, MAIN_CLOCK_5) /* verified */ + MCFG_CPU_PROGRAM_MAP(ninjakd2_sound_cpu) + MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( ninjakd2b, ninjakd2_core ) MCFG_CPU_MODIFY("soundcpu") + MCFG_CPU_PROGRAM_MAP(ninjakd2_sound_cpu) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) MACHINE_CONFIG_END @@ -1070,7 +1077,7 @@ ROM_START( ninjakd2 ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "nk2_06.rom", 0x00000, 0x10000, CRC(d3a18a79) SHA1(e4df713f89d8a8b43ef831b14864c50ec9b53f0b) ) // encrypted - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "soundcpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "ninjakd2.key", 0x0000, 0x2000, CRC(ec25318f) SHA1(619da3f69f9919e1457f79ee1d38e7ec80c4ebb0) ) ROM_REGION( 0x08000, "gfx1", 0 ) // fg tiles (need lineswapping) @@ -1153,7 +1160,7 @@ ROM_START( ninjakd2c ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "nk2_06.rom", 0x00000, 0x10000, CRC(d3a18a79) SHA1(e4df713f89d8a8b43ef831b14864c50ec9b53f0b) ) // encrypted - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "soundcpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "ninjakd2.key", 0x0000, 0x2000, CRC(ec25318f) SHA1(619da3f69f9919e1457f79ee1d38e7ec80c4ebb0) ) ROM_REGION( 0x08000, "gfx1", 0 ) // fg tiles (need lineswapping) @@ -1182,7 +1189,7 @@ ROM_START( rdaction ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "nk2_06.rom", 0x0000, 0x10000, CRC(d3a18a79) SHA1(e4df713f89d8a8b43ef831b14864c50ec9b53f0b) ) // 6.3h encrypted - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "soundcpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "ninjakd2.key", 0x0000, 0x2000, CRC(ec25318f) SHA1(619da3f69f9919e1457f79ee1d38e7ec80c4ebb0) ) ROM_REGION( 0x08000, "gfx1", 0 ) // fg tiles (need lineswapping) @@ -1222,7 +1229,7 @@ ROM_START( jt104 ) // identical to radaction set with different gfx rom and decr ROM_LOAD( "nk2_06.bin", 0x10000, 0x8000, CRC(7bfe6c9e) SHA1(aef8cbeb0024939bf65f77113a5cf777f6613722) ) // decrypted opcodes ROM_CONTINUE( 0x00000, 0x8000 ) // decrypted data - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "soundcpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "ninjakd2.key", 0x0000, 0x2000, CRC(ec25318f) SHA1(619da3f69f9919e1457f79ee1d38e7ec80c4ebb0) ) ROM_REGION( 0x08000, "gfx1", 0 ) // fg tiles (need lineswapping) @@ -1628,7 +1635,7 @@ void ninjakd2_state::gfx_unscramble() DRIVER_INIT_MEMBER(ninjakd2_state,ninjakd2) { - mc8123_decode(memregion("soundcpu")->base(), m_decrypted_opcodes, memregion("user1")->base(), 0x8000); + downcast(*m_soundcpu).decode(memregion("soundcpu")->base(), m_decrypted_opcodes, 0x8000); gfx_unscramble(); } @@ -1689,10 +1696,10 @@ DRIVER_INIT_MEMBER(ninjakd2_state,robokidj) * *************************************/ -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS GAME( 1987, ninjakd2, 0, ninjakd2, ninjakd2, ninjakd2_state, ninjakd2, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ninjakd2a, ninjakd2, ninjakd2, ninjakd2, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ninjakd2b, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ninjakd2a, ninjakd2, ninjakd2b, ninjakd2, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ninjakd2b, ninjakd2, ninjakd2b, rdaction, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, ninjakd2c, ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 4)", MACHINE_SUPPORTS_SAVE ) // close to set 3 GAME( 1987, rdaction, ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0, "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", MACHINE_SUPPORTS_SAVE ) GAME( 1987, jt104, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg, ROT0, "UPL (United Amusements license)", "JT-104 (title screen modification of Rad Action)", MACHINE_SUPPORTS_SAVE ) @@ -1705,7 +1712,7 @@ GAME( 1988, arkarea, 0, arkarea, arkarea, ninjakd2_state, mnight, R GAME( 1988, robokid, 0, robokid, robokid, ninjakd2_state, robokid, ROT0, "UPL", "Atomic Robo-kid (World, Type-2)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) // 3-digit highscore names GAME( 1988, robokidj, robokid, robokid, robokidj, ninjakd2_state, robokidj, ROT0, "UPL", "Atomic Robo-kid (Japan, Type-2, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) GAME( 1988, robokidj2, robokid, robokid, robokidj, ninjakd2_state, robokidj, ROT0, "UPL", "Atomic Robo-kid (Japan, Type-2, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1988, robokidj3, robokid, robokid, robokidj, driver_device, 0, ROT0, "UPL", "Atomic Robo-kid (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1988, robokidj3, robokid, robokid, robokidj, ninjakd2_state, 0, ROT0, "UPL", "Atomic Robo-kid (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1989, omegaf, 0, omegaf, omegaf, driver_device, 0, ROT270, "UPL", "Omega Fighter", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, omegafs, omegaf, omegaf, omegaf, driver_device, 0, ROT270, "UPL", "Omega Fighter Special", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, omegaf, 0, omegaf, omegaf, ninjakd2_state, 0, ROT270, "UPL", "Omega Fighter", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, omegafs, omegaf, omegaf, omegaf, ninjakd2_state, 0, ROT270, "UPL", "Omega Fighter Special", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ninjaw.cpp b/src/mame/drivers/ninjaw.cpp index 409281acad2..d6d72ad8b11 100644 --- a/src/mame/drivers/ninjaw.cpp +++ b/src/mame/drivers/ninjaw.cpp @@ -723,7 +723,7 @@ void ninjaw_state::machine_reset() machine().sound().system_enable(true); /* mixer enabled */ } -static MACHINE_CONFIG_START( ninjaw, ninjaw_state ) +static MACHINE_CONFIG_START( ninjaw ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,16000000/2) /* 8 MHz ? */ @@ -843,7 +843,7 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( darius2, ninjaw_state ) +static MACHINE_CONFIG_START( darius2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,16000000/2) /* 8 MHz ? */ @@ -1177,8 +1177,8 @@ ROM_END /* Working Games */ -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT,MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1987, ninjaw, 0, ninjaw, ninjaw, driver_device, 0, ROT0, "Taito Corporation Japan", "The Ninja Warriors (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ninjawj, ninjaw, ninjaw, ninjawj, driver_device, 0, ROT0, "Taito Corporation", "The Ninja Warriors (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ninjawu, ninjaw, ninjaw, ninjawj, driver_device, 0, ROT0, "Taito Corporation America (licensed to Romstar)", "The Ninja Warriors (US)", MACHINE_SUPPORTS_SAVE ) /* Uses same coinage as World, see notes */ -GAME( 1989, darius2, 0, darius2, darius2, driver_device, 0, ROT0, "Taito Corporation", "Darius II (triple screen) (Japan)", MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE INIT,MONITOR,COMPANY, FULLNAME,FLAGS +GAME( 1987, ninjaw, 0, ninjaw, ninjaw, ninjaw_state, 0, ROT0, "Taito Corporation Japan", "The Ninja Warriors (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ninjawj, ninjaw, ninjaw, ninjawj, ninjaw_state, 0, ROT0, "Taito Corporation", "The Ninja Warriors (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ninjawu, ninjaw, ninjaw, ninjawj, ninjaw_state, 0, ROT0, "Taito Corporation America (licensed to Romstar)", "The Ninja Warriors (US)", MACHINE_SUPPORTS_SAVE ) /* Uses same coinage as World, see notes */ +GAME( 1989, darius2, 0, darius2, darius2, ninjaw_state, 0, ROT0, "Taito Corporation", "Darius II (triple screen) (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nitedrvr.cpp b/src/mame/drivers/nitedrvr.cpp index 1e006b023c9..3b67962236d 100644 --- a/src/mame/drivers/nitedrvr.cpp +++ b/src/mame/drivers/nitedrvr.cpp @@ -139,7 +139,7 @@ GFXDECODE_END /* Machine Driver */ -static MACHINE_CONFIG_START( nitedrvr, nitedrvr_state ) +static MACHINE_CONFIG_START( nitedrvr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12_096MHz/12) // 1 MHz @@ -203,4 +203,4 @@ ROM_END /* Game Drivers */ -GAME( 1976, nitedrvr, 0, nitedrvr, nitedrvr, driver_device, 0, ROT0, "Atari", "Night Driver", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1976, nitedrvr, 0, nitedrvr, nitedrvr, nitedrvr_state, 0, ROT0, "Atari", "Night Driver", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/niyanpai.cpp b/src/mame/drivers/niyanpai.cpp index 03ce359a07f..1241a93039b 100644 --- a/src/mame/drivers/niyanpai.cpp +++ b/src/mame/drivers/niyanpai.cpp @@ -718,7 +718,7 @@ static const z80_daisy_config daisy_chain_sound[] = { nullptr } }; -static MACHINE_CONFIG_START( niyanpai, niyanpai_state ) +static MACHINE_CONFIG_START( niyanpai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12288000/2) /* TMP68301, 6.144 MHz */ diff --git a/src/mame/drivers/nmg5.cpp b/src/mame/drivers/nmg5.cpp index f4cb152f221..4cb894c99d4 100644 --- a/src/mame/drivers/nmg5.cpp +++ b/src/mame/drivers/nmg5.cpp @@ -974,7 +974,7 @@ void nmg5_state::machine_reset() m_input_data = 0; } -static MACHINE_CONFIG_START( nmg5, nmg5_state ) +static MACHINE_CONFIG_START( nmg5 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -1016,7 +1016,7 @@ static MACHINE_CONFIG_START( nmg5, nmg5_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1000000 , OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000 , PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp index ae2c019c7c3..554b2c8d81a 100644 --- a/src/mame/drivers/nmk16.cpp +++ b/src/mame/drivers/nmk16.cpp @@ -169,14 +169,14 @@ WRITE16_MEMBER(nmk16_state::nmk16_x0016_w) // this is part of a watchdog scheme // generating an NMI on the NMK004 keeps a timer alive // if that timer expires the NMK004 resets the system - m_nmk004->m_cpu->set_input_line(INPUT_LINE_NMI, (data & 1) ? ASSERT_LINE : CLEAR_LINE); + m_nmk004->nmi_w(BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE); } WRITE16_MEMBER(nmk16_state::nmk16_bioship_x0016_w) { // ugly, ugly logic invert hack, but otherwise bioship doesn't hit the NMI enough to keep the game alive! - m_nmk004->m_cpu->set_input_line(INPUT_LINE_NMI, (data & 1) ? CLEAR_LINE : ASSERT_LINE); + m_nmk004->nmi_w(BIT(data, 0) ? CLEAR_LINE : ASSERT_LINE); } /********************************************************** @@ -3872,7 +3872,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::nmk16_scanline) -static MACHINE_CONFIG_START( tharrier, nmk16_state ) +static MACHINE_CONFIG_START( tharrier ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz */ @@ -3906,16 +3906,16 @@ static MACHINE_CONFIG_START( tharrier, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mustang, nmk16_state ) +static MACHINE_CONFIG_START( mustang ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ @@ -3937,6 +3937,7 @@ static MACHINE_CONFIG_START( mustang, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", 8000000) + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, 1500000) MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -3945,16 +3946,16 @@ static MACHINE_CONFIG_START( mustang, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mustangb, nmk16_state ) +static MACHINE_CONFIG_START( mustangb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ @@ -3982,7 +3983,7 @@ static MACHINE_CONFIG_START( mustangb, nmk16_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -3995,7 +3996,7 @@ MACHINE_CONFIG_END #define BIOSHIP_CRYSTAL1 10000000 #define BIOSHIP_CRYSTAL2 12000000 -static MACHINE_CONFIG_START( bioship, nmk16_state ) +static MACHINE_CONFIG_START( bioship ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, BIOSHIP_CRYSTAL1 ) /* 10.0 MHz (verified) */ @@ -4017,6 +4018,7 @@ static MACHINE_CONFIG_START( bioship, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", 8000000) + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, BIOSHIP_CRYSTAL2 / 8) /* 1.5 Mhz (verified) */ MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -4025,16 +4027,16 @@ static MACHINE_CONFIG_START( bioship, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", BIOSHIP_CRYSTAL2 / 3 , OKIM6295_PIN7_LOW) /* 4.0 Mhz, Pin 7 High (verified) */ + MCFG_OKIM6295_ADD("oki1", BIOSHIP_CRYSTAL2 / 3 , PIN7_LOW) /* 4.0 Mhz, Pin 7 High (verified) */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", BIOSHIP_CRYSTAL2 / 3 , OKIM6295_PIN7_LOW) /* 4.0 Mhz, Pin 7 High (verified) */ + MCFG_OKIM6295_ADD("oki2", BIOSHIP_CRYSTAL2 / 3 , PIN7_LOW) /* 4.0 Mhz, Pin 7 High (verified) */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vandyke, nmk16_state ) +static MACHINE_CONFIG_START( vandyke ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* 68000p12 running at 10Mhz, verified on pcb */ @@ -4056,6 +4058,7 @@ static MACHINE_CONFIG_START( vandyke, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", 8000000) + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -4064,16 +4067,16 @@ static MACHINE_CONFIG_START( vandyke, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", XTAL_12MHz/3, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki1", XTAL_12MHz/3, PIN7_LOW) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", XTAL_12MHz/3, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki2", XTAL_12MHz/3, PIN7_LOW) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vandykeb, nmk16_state ) +static MACHINE_CONFIG_START( vandykeb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ @@ -4097,11 +4100,11 @@ static MACHINE_CONFIG_START( vandykeb, nmk16_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( acrobatm, nmk16_state ) +static MACHINE_CONFIG_START( acrobatm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz (verified on pcb) */ @@ -4123,6 +4126,7 @@ static MACHINE_CONFIG_START( acrobatm, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", 8000000) + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, 1500000) /* (verified on pcb) */ MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -4131,17 +4135,17 @@ static MACHINE_CONFIG_START( acrobatm, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tdragonb, nmk16_state ) /* bootleg using Raiden sound hardware */ +static MACHINE_CONFIG_START( tdragonb ) /* bootleg using Raiden sound hardware */ /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -4169,7 +4173,7 @@ static MACHINE_CONFIG_START( tdragonb, nmk16_state ) /* bootleg using Raiden MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -4179,7 +4183,7 @@ static MACHINE_CONFIG_START( tdragonb, nmk16_state ) /* bootleg using Raiden MCFG_SEIBU_SOUND_YM_WRITE_CB(DEVWRITE8("ymsnd", ym3812_device, write)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tdragon, nmk16_state ) +static MACHINE_CONFIG_START( tdragon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) /* verified on pcb */ @@ -4201,6 +4205,7 @@ static MACHINE_CONFIG_START( tdragon, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", 8000000) + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -4209,11 +4214,11 @@ static MACHINE_CONFIG_START( tdragon, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", XTAL_8MHz/2, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki1", XTAL_8MHz/2, PIN7_LOW) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", XTAL_8MHz/2, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki2", XTAL_8MHz/2, PIN7_LOW) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4221,7 +4226,7 @@ static MACHINE_CONFIG_DERIVED( tdragon_prot, tdragon ) MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", nmk16_state, tdragon_mcu_sim, attotime::from_hz(10000)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ssmissin, nmk16_state ) +static MACHINE_CONFIG_START( ssmissin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 Mhz */ @@ -4247,13 +4252,13 @@ static MACHINE_CONFIG_START( ssmissin, nmk16_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki1", 8000000/8, OKIM6295_PIN7_HIGH) /* 1 Mhz, pin 7 high */ + MCFG_OKIM6295_ADD("oki1", 8000000/8, PIN7_HIGH) /* 1 Mhz, pin 7 high */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( strahl, nmk16_state ) +static MACHINE_CONFIG_START( strahl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ? */ @@ -4274,6 +4279,7 @@ static MACHINE_CONFIG_START( strahl, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", 8000000) + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, 1500000) MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -4282,16 +4288,16 @@ static MACHINE_CONFIG_START( strahl, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hachamf, nmk16_state ) +static MACHINE_CONFIG_START( hachamf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ @@ -4313,6 +4319,7 @@ static MACHINE_CONFIG_START( hachamf, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", 8000000) + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, 1500000) MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -4321,11 +4328,11 @@ static MACHINE_CONFIG_START( hachamf, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -4334,7 +4341,7 @@ static MACHINE_CONFIG_DERIVED( hachamf_prot, hachamf ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( macross, nmk16_state ) +static MACHINE_CONFIG_START( macross ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ @@ -4356,6 +4363,7 @@ static MACHINE_CONFIG_START( macross, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", 8000000) + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, 1500000) MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -4364,16 +4372,16 @@ static MACHINE_CONFIG_START( macross, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( blkheart, nmk16_state ) +static MACHINE_CONFIG_START( blkheart ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) /* verified on pcb */ @@ -4395,6 +4403,7 @@ static MACHINE_CONFIG_START( blkheart, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", 8000000) + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8 ) /* verified on pcb */ MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -4403,16 +4412,16 @@ static MACHINE_CONFIG_START( blkheart, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", XTAL_8MHz/2, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki1", XTAL_8MHz/2, PIN7_LOW) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", XTAL_8MHz/2, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki2", XTAL_8MHz/2, PIN7_LOW) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gunnail, nmk16_state ) +static MACHINE_CONFIG_START( gunnail ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */ @@ -4433,6 +4442,7 @@ static MACHINE_CONFIG_START( gunnail, nmk16_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_NMK004_ADD("nmk004", XTAL_16MHz/2) /* verified on pcb */ + MCFG_NMK004_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) @@ -4441,16 +4451,16 @@ static MACHINE_CONFIG_START( gunnail, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/4, PIN7_LOW) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/4, PIN7_LOW) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( macross2, nmk16_state ) +static MACHINE_CONFIG_START( macross2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ @@ -4485,10 +4495,10 @@ static MACHINE_CONFIG_START( macross2, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_DEVICE_ADD("nmk112", NMK112, 0) @@ -4496,7 +4506,7 @@ static MACHINE_CONFIG_START( macross2, nmk16_state ) MCFG_NMK112_ROM1("oki2") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tdragon2, nmk16_state ) +static MACHINE_CONFIG_START( tdragon2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz */ @@ -4531,10 +4541,10 @@ static MACHINE_CONFIG_START( tdragon2, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_DEVICE_ADD("nmk112", NMK112, 0) @@ -4542,7 +4552,7 @@ static MACHINE_CONFIG_START( tdragon2, nmk16_state ) MCFG_NMK112_ROM1("oki2") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( raphero, nmk16_state ) +static MACHINE_CONFIG_START( raphero ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) /* 14 MHz measured */ @@ -4576,10 +4586,10 @@ static MACHINE_CONFIG_START( raphero, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_DEVICE_ADD("nmk112", NMK112, 0) @@ -4587,7 +4597,7 @@ static MACHINE_CONFIG_START( raphero, nmk16_state ) MCFG_NMK112_ROM1("oki2") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bjtwin, nmk16_state ) +static MACHINE_CONFIG_START( bjtwin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* verified on pcb */ @@ -4608,10 +4618,10 @@ static MACHINE_CONFIG_START( bjtwin, nmk16_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MCFG_DEVICE_ADD("nmk112", NMK112, 0) @@ -4621,7 +4631,7 @@ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( atombjt, nmk16_state ) +static MACHINE_CONFIG_START( atombjt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* there is a 28mhz crystal and a 10mhz crystal near the 12 rated CPU */ @@ -4643,7 +4653,7 @@ static MACHINE_CONFIG_START( atombjt, nmk16_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", 10000000/8, OKIM6295_PIN7_LOW) // divider and pin not verified + MCFG_OKIM6295_ADD("oki1", 10000000/8, PIN7_LOW) // divider and pin not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MACHINE_CONFIG_END @@ -4668,7 +4678,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::manybloc_scanline) } // non-nmk board, different to the others, very timing sensitive -static MACHINE_CONFIG_START( manybloc, nmk16_state ) +static MACHINE_CONFIG_START( manybloc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10? MHz - check */ @@ -4709,11 +4719,11 @@ static MACHINE_CONFIG_START( manybloc, nmk16_state ) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 1.20) - MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) - MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 16000000/4, PIN7_LOW) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MACHINE_CONFIG_END @@ -5186,7 +5196,7 @@ GFXDECODE_END ***************************************************************************/ -static MACHINE_CONFIG_START( stagger1, nmk16_state ) +static MACHINE_CONFIG_START( stagger1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,XTAL_12MHz) /* 68000p10 running at 12mhz, verified on pcb */ @@ -5217,7 +5227,7 @@ static MACHINE_CONFIG_START( stagger1, nmk16_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.30) MCFG_SOUND_ROUTE(1, "rspeaker", 0.30) - MCFG_OKIM6295_ADD("oki1", XTAL_4MHz/4, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki1", XTAL_4MHz/4, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.70) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.70) MACHINE_CONFIG_END @@ -5270,7 +5280,7 @@ static MACHINE_CONFIG_DERIVED( popspops, grdnstrm ) MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_bubl2000) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( firehawk, nmk16_state ) +static MACHINE_CONFIG_START( firehawk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,12000000) @@ -5296,10 +5306,10 @@ static MACHINE_CONFIG_START( firehawk, nmk16_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki1", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki2", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -5309,7 +5319,7 @@ static MACHINE_CONFIG_DERIVED( spec2k, firehawk ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( twinactn, nmk16_state ) +static MACHINE_CONFIG_START( twinactn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,12000000) @@ -5335,7 +5345,7 @@ static MACHINE_CONFIG_START( twinactn, nmk16_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki1", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -7928,113 +7938,113 @@ ROM_END ***************************************************************************/ -GAME( 1989, tharrier, 0, tharrier, tharrier, nmk16_state, tharrier, ROT270, "UPL", "Task Force Harrier", 0 ) -GAME( 1989, tharrieru, tharrier,tharrier, tharrier, nmk16_state, tharrier, ROT270, "UPL (American Sammy license)", "Task Force Harrier (US)", 0 ) // US version but no regional notice +GAME( 1989, tharrier, 0, tharrier, tharrier, nmk16_state, tharrier, ROT270, "UPL", "Task Force Harrier", 0 ) +GAME( 1989, tharrieru, tharrier, tharrier, tharrier, nmk16_state, tharrier, ROT270, "UPL (American Sammy license)", "Task Force Harrier (US)", 0 ) // US version but no regional notice -GAME( 1990, mustang, 0, mustang, mustang, driver_device, 0, ROT0, "UPL", "US AAF Mustang (25th May. 1990)", 0 ) -GAME( 1990, mustangs, mustang, mustang, mustang, driver_device, 0, ROT0, "UPL (Seoul Trading license)", "US AAF Mustang (25th May. 1990 / Seoul Trading)", 0 ) +GAME( 1990, mustang, 0, mustang, mustang, nmk16_state, 0, ROT0, "UPL", "US AAF Mustang (25th May. 1990)", 0 ) +GAME( 1990, mustangs, mustang, mustang, mustang, nmk16_state, 0, ROT0, "UPL (Seoul Trading license)", "US AAF Mustang (25th May. 1990 / Seoul Trading)", 0 ) -GAME( 1990, bioship, 0, bioship, bioship, driver_device, 0, ROT0, "UPL (American Sammy license)", "Bio-ship Paladin", 0 ) // US version but no regional notice -GAME( 1990, sbsgomo, bioship, bioship, bioship, driver_device, 0, ROT0, "UPL", "Space Battle Ship Gomorrah", 0 ) +GAME( 1990, bioship, 0, bioship, bioship, nmk16_state, 0, ROT0, "UPL (American Sammy license)", "Bio-ship Paladin", 0 ) // US version but no regional notice +GAME( 1990, sbsgomo, bioship, bioship, bioship, nmk16_state, 0, ROT0, "UPL", "Space Battle Ship Gomorrah", 0 ) -GAME( 1990, vandyke, 0, vandyke, vandyke, driver_device, 0, ROT270, "UPL", "Vandyke (Japan)", 0 ) -GAME( 1990, vandykejal, vandyke, vandyke, vandyke, driver_device, 0, ROT270, "UPL (Jaleco license)", "Vandyke (Jaleco, set 1)", 0 ) -GAME( 1990, vandykejal2,vandyke, vandyke, vandyke, driver_device, 0, ROT270, "UPL (Jaleco license)", "Vandyke (Jaleco, set 2)", 0 ) -GAME( 1990, vandykeb, vandyke, vandykeb, vandykeb, nmk16_state, vandykeb, ROT270, "bootleg", "Vandyke (bootleg with PIC16c57)", MACHINE_NO_SOUND ) +GAME( 1990, vandyke, 0, vandyke, vandyke, nmk16_state, 0, ROT270, "UPL", "Vandyke (Japan)", 0 ) +GAME( 1990, vandykejal, vandyke, vandyke, vandyke, nmk16_state, 0, ROT270, "UPL (Jaleco license)", "Vandyke (Jaleco, set 1)", 0 ) +GAME( 1990, vandykejal2,vandyke, vandyke, vandyke, nmk16_state, 0, ROT270, "UPL (Jaleco license)", "Vandyke (Jaleco, set 2)", 0 ) +GAME( 1990, vandykeb, vandyke, vandykeb, vandykeb, nmk16_state, vandykeb, ROT270, "bootleg", "Vandyke (bootleg with PIC16c57)", MACHINE_NO_SOUND ) -GAME( 1991, blkheart, 0, blkheart, blkheart, driver_device, 0, ROT0, "UPL", "Black Heart", 0 ) -GAME( 1991, blkheartj,blkheart, blkheart, blkheart, driver_device, 0, ROT0, "UPL", "Black Heart (Japan)", 0 ) +GAME( 1991, blkheart, 0, blkheart, blkheart, nmk16_state, 0, ROT0, "UPL", "Black Heart", 0 ) +GAME( 1991, blkheartj, blkheart, blkheart, blkheart, nmk16_state, 0, ROT0, "UPL", "Black Heart (Japan)", 0 ) + +GAME( 1991, acrobatm, 0, acrobatm, acrobatm, nmk16_state, 0, ROT270, "UPL (Taito license)", "Acrobat Mission", 0 ) + +GAME( 1992, strahl, 0, strahl, strahl, nmk16_state, 0, ROT0, "UPL", "Koutetsu Yousai Strahl (Japan set 1)", 0 ) +GAME( 1992, strahla, strahl, strahl, strahl, nmk16_state, 0, ROT0, "UPL", "Koutetsu Yousai Strahl (Japan set 2)", 0 ) -GAME( 1991, acrobatm, 0, acrobatm, acrobatm, driver_device, 0, ROT270, "UPL (Taito license)", "Acrobat Mission", 0 ) +GAME( 1991, tdragon, 0, tdragon, tdragon, nmk16_state, 0, ROT270, "NMK (Tecmo license)", "Thunder Dragon (8th Jan. 1992, unprotected)", 0 ) +GAME( 1991, tdragon1, tdragon, tdragon_prot, tdragon_prot, nmk16_state, tdragon_prot, ROT270, "NMK (Tecmo license)", "Thunder Dragon (4th Jun. 1991, protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) -GAME( 1992, strahl, 0, strahl, strahl, driver_device, 0, ROT0, "UPL", "Koutetsu Yousai Strahl (Japan set 1)", 0 ) -GAME( 1992, strahla, strahl, strahl, strahl, driver_device, 0, ROT0, "UPL", "Koutetsu Yousai Strahl (Japan set 2)", 0 ) +GAME( 1991, hachamf, 0, hachamf_prot, hachamf_prot, nmk16_state, hachamf_prot, ROT0, "NMK", "Hacha Mecha Fighter (19th Sep. 1991, protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // lots of things wrong due to protection +GAME( 1991, hachamfb, hachamf, hachamf, hachamfb, nmk16_state, 0, ROT0, "bootleg", "Hacha Mecha Fighter (19th Sep. 1991, unprotected, bootleg Thunder Dragon conversion)", 0 ) // appears to be a Thunder Dragon conversion, could be bootleg? -GAME( 1991, tdragon, 0, tdragon, tdragon, driver_device, 0, ROT270, "NMK (Tecmo license)","Thunder Dragon (8th Jan. 1992, unprotected)", 0 ) -GAME( 1991, tdragon1, tdragon, tdragon_prot, tdragon_prot, nmk16_state, tdragon_prot, ROT270, "NMK (Tecmo license)","Thunder Dragon (4th Jun. 1991, protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) +GAME( 1992, macross, 0, macross, macross, nmk16_state, nmk, ROT270, "Banpresto", "Super Spacefortress Macross / Chou-Jikuu Yousai Macross", 0 ) -GAME( 1991, hachamf, 0, hachamf_prot, hachamf_prot, nmk16_state, hachamf_prot, ROT0, "NMK", "Hacha Mecha Fighter (19th Sep. 1991, protected)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // lots of things wrong due to protection -GAME( 1991, hachamfb, hachamf,hachamf, hachamfb, driver_device, 0, ROT0, "bootleg", "Hacha Mecha Fighter (19th Sep. 1991, unprotected, bootleg Thunder Dragon conversion)", 0 ) // appears to be a Thunder Dragon conversion, could be bootleg? - -GAME( 1992, macross, 0, macross, macross, nmk16_state, nmk, ROT270, "Banpresto", "Super Spacefortress Macross / Chou-Jikuu Yousai Macross", 0 ) - -GAME( 1993, gunnail, 0, gunnail, gunnail, nmk16_state, nmk, ROT270, "NMK / Tecmo", "GunNail (28th May. 1992)", 0 ) // Tecmo is displayed only when set to Japan +GAME( 1993, gunnail, 0, gunnail, gunnail, nmk16_state, nmk, ROT270, "NMK / Tecmo", "GunNail (28th May. 1992)", 0 ) // Tecmo is displayed only when set to Japan // a 1992 version of Gunnail exists, see https://www.youtube.com/watch?v=tf15Wz0zUiA 3:10 -GAME( 1993, macross2, 0, macross2, macross2, nmk16_state, banked_audiocpu, ROT0, "Banpresto", "Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II", MACHINE_NO_COCKTAIL ) -GAME( 1993, macross2g, macross2,macross2, macross2, nmk16_state, banked_audiocpu, ROT0, "Banpresto", "Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II (GAMEST review build)", MACHINE_NO_COCKTAIL ) // Service switch pauses game +GAME( 1993, macross2, 0, macross2, macross2, nmk16_state, banked_audiocpu, ROT0, "Banpresto", "Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II", MACHINE_NO_COCKTAIL ) +GAME( 1993, macross2g, macross2, macross2, macross2, nmk16_state, banked_audiocpu, ROT0, "Banpresto", "Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II (GAMEST review build)", MACHINE_NO_COCKTAIL ) // Service switch pauses game -GAME( 1993, tdragon2, 0, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "NMK", "Thunder Dragon 2 (9th Nov. 1993)", MACHINE_NO_COCKTAIL ) -GAME( 1993, tdragon2a,tdragon2, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "NMK", "Thunder Dragon 2 (1st Oct. 1993)", MACHINE_NO_COCKTAIL ) -GAME( 1993, bigbang, tdragon2, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "NMK", "Big Bang (9th Nov. 1993)", MACHINE_NO_COCKTAIL ) +GAME( 1993, tdragon2, 0, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "NMK", "Thunder Dragon 2 (9th Nov. 1993)", MACHINE_NO_COCKTAIL ) +GAME( 1993, tdragon2a, tdragon2, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "NMK", "Thunder Dragon 2 (1st Oct. 1993)", MACHINE_NO_COCKTAIL ) +GAME( 1993, bigbang, tdragon2, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "NMK", "Big Bang (9th Nov. 1993)", MACHINE_NO_COCKTAIL ) /* arcadia was a name conflict to the Emerson Arcadia 2001 in mess */ -GAME( 1994, arcadian, 0, raphero, raphero, nmk16_state, banked_audiocpu, ROT270, "NMK", "Arcadia (NMK)", 0 ) // 23rd July 1993 in test mode, (c)1994 on title screen -GAME( 1994, raphero, arcadian, raphero, raphero, nmk16_state, banked_audiocpu, ROT270, "NMK (Media Trading license)", "Rapid Hero", 0 ) // ^^ +GAME( 1994, arcadian, 0, raphero, raphero, nmk16_state, banked_audiocpu, ROT270, "NMK", "Arcadia (NMK)", 0 ) // 23rd July 1993 in test mode, (c)1994 on title screen +GAME( 1994, raphero, arcadian, raphero, raphero, nmk16_state, banked_audiocpu, ROT270, "NMK (Media Trading license)", "Rapid Hero", 0 ) // ^^ /* both sets of both these games show a date of 9th Mar 1992 in the test mode, they look like different revisions so I doubt this is accurate */ GAME( 1992, sabotenb, 0, bjtwin, sabotenb, nmk16_state, nmk, ROT0, "NMK / Tecmo", "Saboten Bombers (set 1)", MACHINE_NO_COCKTAIL ) GAME( 1992, sabotenba,sabotenb, bjtwin, sabotenb, nmk16_state, nmk, ROT0, "NMK / Tecmo", "Saboten Bombers (set 2)", MACHINE_NO_COCKTAIL ) GAME( 1992, cactus, sabotenb, bjtwin, sabotenb, nmk16_state, nmk, ROT0, "bootleg", "Cactus (bootleg of Saboten Bombers)", MACHINE_NO_COCKTAIL ) // PCB marked 'Cactus', no title screen -GAME( 1993, bjtwin, 0, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (set 1)", MACHINE_NO_COCKTAIL ) -GAME( 1993, bjtwina, bjtwin, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (set 2)", MACHINE_NO_COCKTAIL ) -GAME( 1993, bjtwinp, bjtwin, bjtwin, bjtwin, driver_device, 0, ROT270, "NMK", "Bombjack Twin (prototype? with adult pictures, set 1)", MACHINE_NO_COCKTAIL ) // Cheap looking PCB, but Genuine NMK PCB, GFX aren't encrypted (maybe Korean version not proto?) -GAME( 1993, bjtwinpa, bjtwin, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (prototype? with adult pictures, set 2)", MACHINE_NO_COCKTAIL ) // same PCB as above, different program revision, GFX are encrypted -GAME( 1993, atombjt, bjtwin, atombjt, atombjt, driver_device, 0, ROT270, "bootleg (Kyon K.)", "Atom (bootleg of Bombjack Twin)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // some non-trivial mods to the gfx and sound hw (playmark hardware?) +GAME( 1993, bjtwin, 0, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (set 1)", MACHINE_NO_COCKTAIL ) +GAME( 1993, bjtwina, bjtwin, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (set 2)", MACHINE_NO_COCKTAIL ) +GAME( 1993, bjtwinp, bjtwin, bjtwin, bjtwin, nmk16_state, 0, ROT270, "NMK", "Bombjack Twin (prototype? with adult pictures, set 1)", MACHINE_NO_COCKTAIL ) // Cheap looking PCB, but Genuine NMK PCB, GFX aren't encrypted (maybe Korean version not proto?) +GAME( 1993, bjtwinpa, bjtwin, bjtwin, bjtwin, nmk16_state, bjtwin, ROT270, "NMK", "Bombjack Twin (prototype? with adult pictures, set 2)", MACHINE_NO_COCKTAIL ) // same PCB as above, different program revision, GFX are encrypted +GAME( 1993, atombjt, bjtwin, atombjt, atombjt, nmk16_state, 0, ROT270, "bootleg (Kyon K.)", "Atom (bootleg of Bombjack Twin)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // some non-trivial mods to the gfx and sound hw (playmark hardware?) -GAME( 1995, nouryoku, 0, bjtwin, nouryoku, nmk16_state, nmk, ROT0, "Tecmo", "Nouryoku Koujou Iinkai", MACHINE_NO_COCKTAIL ) -GAME( 1995, nouryokup,nouryoku, bjtwin, nouryoku, driver_device, 0, ROT0, "Tecmo", "Nouryoku Koujou Iinkai (prototype)", MACHINE_NO_COCKTAIL ) // GFX aren't encrypted +GAME( 1995, nouryoku, 0, bjtwin, nouryoku, nmk16_state, nmk, ROT0, "Tecmo", "Nouryoku Koujou Iinkai", MACHINE_NO_COCKTAIL ) +GAME( 1995, nouryokup,nouryoku, bjtwin, nouryoku, nmk16_state, 0, ROT0, "Tecmo", "Nouryoku Koujou Iinkai (prototype)", MACHINE_NO_COCKTAIL ) // GFX aren't encrypted /* Non NMK boards */ // these use the seibu sound system (sound / music stolen from Raiden) rather than the bootleggers copying the nmk004 -GAME( 1990, mustangb, mustang, mustangb, mustang, driver_device, 0, ROT0, "bootleg", "US AAF Mustang (bootleg)", 0 ) -GAME( 1990, mustangb2,mustang, mustangb, mustang, driver_device, 0, ROT0, "bootleg (TAB Austria)", "US AAF Mustang (TAB Austria bootleg)", 0 ) // PCB and roms have TAB Austria stickers -GAME( 1991, tdragonb, tdragon, tdragonb, tdragonb, nmk16_state, tdragonb, ROT270, "bootleg", "Thunder Dragon (bootleg)", 0 ) +GAME( 1990, mustangb, mustang, mustangb, mustang, nmk16_state, 0, ROT0, "bootleg", "US AAF Mustang (bootleg)", 0 ) +GAME( 1990, mustangb2,mustang, mustangb, mustang, nmk16_state, 0, ROT0, "bootleg (TAB Austria)", "US AAF Mustang (TAB Austria bootleg)", 0 ) // PCB and roms have TAB Austria stickers +GAME( 1991, tdragonb, tdragon, tdragonb, tdragonb, nmk16_state, tdragonb, ROT270, "bootleg", "Thunder Dragon (bootleg)", 0 ) // these are from Comad, based on the Thunder Dragon code? -GAME( 1992, ssmissin, 0, ssmissin, ssmissin, nmk16_state, ssmissin, ROT270, "Comad", "S.S. Mission", MACHINE_NO_COCKTAIL ) +GAME( 1992, ssmissin, 0, ssmissin, ssmissin, nmk16_state, ssmissin, ROT270, "Comad", "S.S. Mission", MACHINE_NO_COCKTAIL ) -GAME( 1996, airattck, 0, ssmissin, airattck, nmk16_state, ssmissin, ROT270, "Comad", "Air Attack (set 1)", MACHINE_NO_COCKTAIL ) -GAME( 1996, airattcka,airattck, ssmissin, airattck, nmk16_state, ssmissin, ROT270, "Comad", "Air Attack (set 2)", MACHINE_NO_COCKTAIL ) +GAME( 1996, airattck, 0, ssmissin, airattck, nmk16_state, ssmissin, ROT270, "Comad", "Air Attack (set 1)", MACHINE_NO_COCKTAIL ) +GAME( 1996, airattcka,airattck, ssmissin, airattck, nmk16_state, ssmissin, ROT270, "Comad", "Air Attack (set 2)", MACHINE_NO_COCKTAIL ) // afega & clones -GAME( 1995, twinactn, 0, twinactn, twinactn, driver_device, 0, ROT0, "Afega", "Twin Action", 0 ) // hacked from USSAF Mustang - -GAME( 1995, dolmen, 0, twinactn, dolmen, driver_device, 0, ROT0, "Afega", "Dolmen", 0 ) - -GAME( 1998, stagger1, 0, stagger1, stagger1, driver_device, 0, ROT270, "Afega", "Stagger I (Japan)", 0 ) -GAME( 1997, redhawk, stagger1, stagger1, stagger1, nmk16_state, redhawk, ROT270, "Afega (New Vision Ent. license)", "Red Hawk (US)", 0 ) -GAME( 1997, redhawki, stagger1, redhawki, stagger1, driver_device, 0, ROT0, "Afega (Hea Dong Corp license)", "Red Hawk (Italy)", 0 ) // bootleg? strange scroll regs -GAME( 1997, redhawkg, stagger1, redhawki, stagger1, driver_device, 0, ROT0, "Afega", "Red Hawk (Greece)", 0 ) -GAME( 1997, redhawke, stagger1, stagger1, stagger1, driver_device, 0, ROT270, "Afega (Excellent Co. license)", "Red Hawk (Excellent Co., Ltd)", 0 ) -GAME( 1997, redhawkk, stagger1, stagger1, stagger1, driver_device, 0, ROT270, "Afega", "Red Hawk (Korea)", 0 ) -GAME( 1997, redhawkb, stagger1, redhawkb, redhawkb, driver_device, 0, ROT0, "bootleg", "Red Hawk (bootleg)", 0 ) - -GAME( 1998, grdnstrm, 0, grdnstrm, grdnstrm, driver_device, 0, ORIENTATION_FLIP_Y, "Afega (Apples Industries license)", "Guardian Storm (horizontal, not encrypted)", 0 ) -GAME( 1998, grdnstrmv,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrm, ROT270, "Afega (Apples Industries license)", "Guardian Storm (vertical)", 0 ) -GAME( 1998, grdnstrmj,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrmg, ROT270, "Afega", "Sen Jing - Guardian Storm (Japan)", 0 ) -GAME( 1998, grdnstrmk,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrm, ROT270, "Afega", "Jeon Sin - Guardian Storm (Korea)", 0 ) -GAME( 1998, redfoxwp2,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrm, ROT270, "Afega", "Red Fox War Planes II (China, set 1)", 0 ) -GAME( 1998, redfoxwp2a,grdnstrm,grdnstrmk,grdnstrk, nmk16_state, redfoxwp2a,ROT270, "Afega", "Red Fox War Planes II (China, set 2)", 0 ) -GAME( 1998, grdnstrmg,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrmg,ROT270, "Afega", "Guardian Storm (Germany)", 0 ) +GAME( 1995, twinactn, 0, twinactn, twinactn, nmk16_state, 0, ROT0, "Afega", "Twin Action", 0 ) // hacked from USSAF Mustang + +GAME( 1995, dolmen, 0, twinactn, dolmen, nmk16_state, 0, ROT0, "Afega", "Dolmen", 0 ) + +GAME( 1998, stagger1, 0, stagger1, stagger1, nmk16_state, 0, ROT270, "Afega", "Stagger I (Japan)", 0 ) +GAME( 1997, redhawk, stagger1, stagger1, stagger1, nmk16_state, redhawk, ROT270, "Afega (New Vision Ent. license)", "Red Hawk (US)", 0 ) +GAME( 1997, redhawki, stagger1, redhawki, stagger1, nmk16_state, 0, ROT0, "Afega (Hea Dong Corp license)", "Red Hawk (Italy)", 0 ) // bootleg? strange scroll regs +GAME( 1997, redhawkg, stagger1, redhawki, stagger1, nmk16_state, 0, ROT0, "Afega", "Red Hawk (Greece)", 0 ) +GAME( 1997, redhawke, stagger1, stagger1, stagger1, nmk16_state, 0, ROT270, "Afega (Excellent Co. license)", "Red Hawk (Excellent Co., Ltd)", 0 ) +GAME( 1997, redhawkk, stagger1, stagger1, stagger1, nmk16_state, 0, ROT270, "Afega", "Red Hawk (Korea)", 0 ) +GAME( 1997, redhawkb, stagger1, redhawkb, redhawkb, nmk16_state, 0, ROT0, "bootleg", "Red Hawk (bootleg)", 0 ) + +GAME( 1998, grdnstrm, 0, grdnstrm, grdnstrm, nmk16_state, 0, ORIENTATION_FLIP_Y, "Afega (Apples Industries license)", "Guardian Storm (horizontal, not encrypted)", 0 ) +GAME( 1998, grdnstrmv,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrm, ROT270, "Afega (Apples Industries license)", "Guardian Storm (vertical)", 0 ) +GAME( 1998, grdnstrmj,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrmg, ROT270, "Afega", "Sen Jing - Guardian Storm (Japan)", 0 ) +GAME( 1998, grdnstrmk,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrm, ROT270, "Afega", "Jeon Sin - Guardian Storm (Korea)", 0 ) +GAME( 1998, redfoxwp2,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrm, ROT270, "Afega", "Red Fox War Planes II (China, set 1)", 0 ) +GAME( 1998, redfoxwp2a,grdnstrm,grdnstrmk,grdnstrk, nmk16_state, redfoxwp2a,ROT270, "Afega", "Red Fox War Planes II (China, set 2)", 0 ) +GAME( 1998, grdnstrmg,grdnstrm, grdnstrmk,grdnstrk, nmk16_state, grdnstrmg, ROT270, "Afega", "Guardian Storm (Germany)", 0 ) // is there a 'bubble 2000' / 'hot bubble' version with Afega copyright, or is the only Afega release dolmen above, this seems like a sequel, not a clone? -GAME( 1998, bubl2000, 0, popspops, bubl2000, nmk16_state, bubl2000, ROT0, "Afega (Tuning license)", "Bubble 2000", 0 ) // on a tuning board (bootleg?) -GAME( 1998, hotbubl, bubl2000, popspops, bubl2000, nmk16_state, bubl2000, ROT0, "Afega (Pandora license)", "Hot Bubble (Korea, with adult pictures)" , 0 ) // on an afega board .. -GAME( 1998, hotbubla, bubl2000, popspops, bubl2000, nmk16_state, bubl2000, ROT0, "Afega (Pandora license)", "Hot Bubble (Korea)" , 0 ) // on an afega board .. +GAME( 1998, bubl2000, 0, popspops, bubl2000, nmk16_state, bubl2000, ROT0, "Afega (Tuning license)", "Bubble 2000", 0 ) // on a tuning board (bootleg?) +GAME( 1998, hotbubl, bubl2000, popspops, bubl2000, nmk16_state, bubl2000, ROT0, "Afega (Pandora license)", "Hot Bubble (Korea, with adult pictures)" , 0 ) // on an afega board .. +GAME( 1998, hotbubla, bubl2000, popspops, bubl2000, nmk16_state, bubl2000, ROT0, "Afega (Pandora license)", "Hot Bubble (Korea)" , 0 ) // on an afega board .. -GAME( 1999, popspops, 0, popspops, popspops, nmk16_state, grdnstrm, ROT0, "Afega", "Pop's Pop's", 0 ) +GAME( 1999, popspops, 0, popspops, popspops, nmk16_state, grdnstrm, ROT0, "Afega", "Pop's Pop's", 0 ) -GAME( 2000, mangchi, 0, popspops, mangchi, nmk16_state, bubl2000, ROT0, "Afega", "Mang-Chi", 0 ) +GAME( 2000, mangchi, 0, popspops, mangchi, nmk16_state, bubl2000, ROT0, "Afega", "Mang-Chi", 0 ) // these two are very similar games, but the exact parent/clone relationship is unknown -GAME( 2000, spec2k, 0, spec2k, spec2k, nmk16_state, spec2k, ROT270, "Yona Tech", "Spectrum 2000 (vertical)", MACHINE_IMPERFECT_GRAPHICS ) // the ships sometimes scroll off the screen if you insert a coin during the attract demo? verify it doesn't happen on real hw(!) -GAME( 2000, spec2kh, spec2k, spec2k, spec2k, nmk16_state, spec2k, ORIENTATION_FLIP_Y, "Yona Tech", "Spectrum 2000 (horizontal, buggy) (Europe)", 0 ) // this has odd bugs even on real hardware, eg glitchy 3 step destruction sequence of some larger enemies -GAME( 2001, firehawk, spec2k, firehawk, firehawk, driver_device, 0, ORIENTATION_FLIP_Y, "ESD", "Fire Hawk (horizontal)", 0 ) -GAME( 2001, firehawkv,spec2k, firehawk, firehawkv,driver_device, 0, ORIENTATION_FLIP_Y, "ESD", "Fire Hawk (switchable orientation)", MACHINE_NOT_WORKING ) // incomplete dump, vertical mode gfx not dumped +GAME( 2000, spec2k, 0, spec2k, spec2k, nmk16_state, spec2k, ROT270, "Yona Tech", "Spectrum 2000 (vertical)", MACHINE_IMPERFECT_GRAPHICS ) // the ships sometimes scroll off the screen if you insert a coin during the attract demo? verify it doesn't happen on real hw(!) +GAME( 2000, spec2kh, spec2k, spec2k, spec2k, nmk16_state, spec2k, ORIENTATION_FLIP_Y, "Yona Tech", "Spectrum 2000 (horizontal, buggy) (Europe)", 0 ) // this has odd bugs even on real hardware, eg glitchy 3 step destruction sequence of some larger enemies +GAME( 2001, firehawk, spec2k, firehawk, firehawk, nmk16_state, 0, ORIENTATION_FLIP_Y, "ESD", "Fire Hawk (horizontal)", 0 ) +GAME( 2001, firehawkv,spec2k, firehawk, firehawkv,nmk16_state, 0, ORIENTATION_FLIP_Y, "ESD", "Fire Hawk (switchable orientation)", MACHINE_NOT_WORKING ) // incomplete dump, vertical mode gfx not dumped // bee-oh board - different display / interrupt timing to others? GAME( 1991, manybloc, 0, manybloc, manybloc, nmk16_state, tharrier, ROT270, "Bee-Oh", "Many Block", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/nokia_3310.cpp b/src/mame/drivers/nokia_3310.cpp index afa83f973b2..70760ddec54 100644 --- a/src/mame/drivers/nokia_3310.cpp +++ b/src/mame/drivers/nokia_3310.cpp @@ -688,7 +688,7 @@ static INPUT_PORTS_START( noki3310 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( noki3310, noki3310_state ) +static MACHINE_CONFIG_START( noki3310 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM7_BE, 26000000 / 2) // MAD2WD1 13 MHz, clock internally supplied to ARM core can be divided by 2, in sleep mode a 32768 Hz clock is used @@ -873,16 +873,16 @@ ROM_START( noki8890 ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -SYST( 1999, noki3210, 0, 0, noki3310, noki3310, driver_device, 0, "Nokia", "Nokia 3210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 1999, noki7110, 0, 0, noki7110, noki3310, driver_device, 0, "Nokia", "Nokia 7110", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 1999, noki8210, 0, 0, noki3310, noki3310, driver_device, 0, "Nokia", "Nokia 8210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 1999, noki8850, 0, 0, noki3310, noki3310, driver_device, 0, "Nokia", "Nokia 8850", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki3310, 0, 0, noki3310, noki3310, driver_device, 0, "Nokia", "Nokia 3310", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki6210, 0, 0, noki6210, noki3310, driver_device, 0, "Nokia", "Nokia 6210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki6250, 0, 0, noki6210, noki3310, driver_device, 0, "Nokia", "Nokia 6250", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki8250, 0, 0, noki3310, noki3310, driver_device, 0, "Nokia", "Nokia 8250", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2000, noki8890, 0, 0, noki3310, noki3310, driver_device, 0, "Nokia", "Nokia 8890", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2001, noki3330, 0, 0, noki3330, noki3310, driver_device, 0, "Nokia", "Nokia 3330", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2002, noki3410, 0, 0, noki3410, noki3310, driver_device, 0, "Nokia", "Nokia 3410", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) -SYST( 2002, noki5210, 0, 0, noki3330, noki3310, driver_device, 0, "Nokia", "Nokia 5210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +SYST( 1999, noki3210, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 3210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 1999, noki7110, 0, 0, noki7110, noki3310, noki3310_state, 0, "Nokia", "Nokia 7110", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 1999, noki8210, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 1999, noki8850, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8850", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 2000, noki3310, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 3310", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 2000, noki6210, 0, 0, noki6210, noki3310, noki3310_state, 0, "Nokia", "Nokia 6210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 2000, noki6250, 0, 0, noki6210, noki3310, noki3310_state, 0, "Nokia", "Nokia 6250", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 2000, noki8250, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8250", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 2000, noki8890, 0, 0, noki3310, noki3310, noki3310_state, 0, "Nokia", "Nokia 8890", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 2001, noki3330, 0, 0, noki3330, noki3310, noki3310_state, 0, "Nokia", "Nokia 3330", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 2002, noki3410, 0, 0, noki3410, noki3310, noki3310_state, 0, "Nokia", "Nokia 3410", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +SYST( 2002, noki5210, 0, 0, noki3330, noki3310, noki3310_state, 0, "Nokia", "Nokia 5210", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/norautp.cpp b/src/mame/drivers/norautp.cpp index ae4b4db6c39..d0a611f3063 100644 --- a/src/mame/drivers/norautp.cpp +++ b/src/mame/drivers/norautp.cpp @@ -1209,7 +1209,7 @@ GFXDECODE_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( noraut_base, norautp_state ) +static MACHINE_CONFIG_START( noraut_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, NORAUT_CPU_CLOCK) @@ -3590,59 +3590,59 @@ DRIVER_INIT_MEMBER(norautp_state,ssa) /* The following ones are 'Draw Poker HI-LO' type, running in a Z80 based hardware */ /**************************************************************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ - -GAMEL( 1988, norautp, 0, norautp, norautp, driver_device, 0, ROT0, "Noraut Ltd.", "Noraut Poker", 0, layout_noraut11 ) -GAMEL( 198?, norautdx, 0, norautp, norautpn, driver_device, 0, ROT0, "Noraut Ltd.", "Noraut Deluxe Poker (console)", 0, layout_noraut12 ) -GAMEL( 198?, norautpn, norautp, norautp, norautpn, driver_device, 0, ROT0, "bootleg", "Noraut Deluxe Poker (bootleg)", 0, layout_noraut12 ) -GAMEL( 198?, norautjo, 0, norautp, mainline, driver_device, 0, ROT0, "Noraut Ltd.", "Noraut Joker Poker (original)", 0, layout_noraut12 ) -GAMEL( 198?, norautpl, 0, norautpl, mainline, driver_device, 0, ROT0, "Video Fun Games Ltd.", "Noraut Joker Poker (Prologic HW)", 0, layout_noraut12 ) -GAMEL( 1988, norautjp, norautp, norautp, norautp, driver_device, 0, ROT0, "Noraut Ltd.", "Noraut Joker Poker (alt)", 0, layout_noraut11 ) -GAMEL( 1988, norautrh, 0, norautp, norautrh, driver_device, 0, ROT0, "Noraut Ltd.", "Noraut Red Hot Joker Poker", 0, layout_noraut12 ) -GAMEL( 198?, norautra, 0, norautp, norautrh, driver_device, 0, ROT0, "Noraut Ltd.", "Noraut Red Hot Joker Poker (alt HW)", 0, layout_noraut12 ) // 1-bet?? where??... -GAME( 1988, norautu, 0, norautxp, norautp, driver_device, 0, ROT0, "Noraut Ltd.", "Noraut Poker (NTX10A)", MACHINE_NOT_WORKING ) -GAME( 2002, noraut3a, 0, norautxp, norautp, driver_device, 0, ROT0, "Noraut Ltd.", "Noraut Joker Poker (V3.010a)", MACHINE_NOT_WORKING ) -GAME( 2003, noraut3b, 0, norautxp, norautp, driver_device, 0, ROT0, "Noraut Ltd.", "Noraut Joker Poker (V3.011a)", MACHINE_NOT_WORKING ) -GAMEL( 198?, norautua, 0, norautp, norautp, norautp_state, enc, ROT0, "Noraut Ltd.", "Noraut unknown set 1 (console)", MACHINE_NOT_WORKING, layout_noraut12 ) -GAMEL( 198?, norautub, 0, norautp, norautp, norautp_state, enc, ROT0, "Noraut Ltd.", "Noraut unknown set 2 (console)", MACHINE_NOT_WORKING, layout_noraut12 ) -GAMEL( 198?, mainline, 0, norautp, mainline, driver_device, 0, ROT0, "Mainline London", "Mainline Double Joker Poker", 0, layout_noraut12 ) -GAMEL( 199?, df_djpkr, 0, norautp, mainline, driver_device, 0, ROT0, "DellFern Ltd.", "Double Joker Poker (45%-75% payout)", 0, layout_noraut12 ) -GAMEL( 2005, ndxron10, 0, norautp, ndxron10, driver_device, 0, ROT0, "", "Royal on Ten (Noraut Deluxe hack)", 0, layout_noraut12 ) -GAMEL( 1999, cgip30cs, 0, norautx4, norautkl, norautp_state, deb, ROT0, "CGI", "Credit Poker (ver.30c, standard)", 0, layout_noraut12 ) -GAME( 198?, kimblz80, 0, kimble, norautp, driver_device, 0, ROT0, "Kimble Ireland", "Kimble Double HI-LO (z80 version)", MACHINE_NOT_WORKING ) -GAME( 1983, pma, 0, nortest1, norautp, driver_device, 0, ROT0, "PMA", "PMA Poker", MACHINE_NOT_WORKING ) -GAMEL( 198?, bjpoker, 0, norautxp, norautrh, driver_device, 0, ROT0, "M.Kramer Manufacturing.", "Poker / Black Jack (Model 7521)", MACHINE_NOT_WORKING, layout_noraut12 ) -GAME( 19??, newhilop, 0, newhilop, norautp, driver_device, 0, ROT0, "Song Won?", "New Hi-Low Poker", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT + +GAMEL( 1988, norautp, 0, norautp, norautp, norautp_state, 0, ROT0, "Noraut Ltd.", "Noraut Poker", 0, layout_noraut11 ) +GAMEL( 198?, norautdx, 0, norautp, norautpn, norautp_state, 0, ROT0, "Noraut Ltd.", "Noraut Deluxe Poker (console)", 0, layout_noraut12 ) +GAMEL( 198?, norautpn, norautp, norautp, norautpn, norautp_state, 0, ROT0, "bootleg", "Noraut Deluxe Poker (bootleg)", 0, layout_noraut12 ) +GAMEL( 198?, norautjo, 0, norautp, mainline, norautp_state, 0, ROT0, "Noraut Ltd.", "Noraut Joker Poker (original)", 0, layout_noraut12 ) +GAMEL( 198?, norautpl, 0, norautpl, mainline, norautp_state, 0, ROT0, "Video Fun Games Ltd.", "Noraut Joker Poker (Prologic HW)", 0, layout_noraut12 ) +GAMEL( 1988, norautjp, norautp, norautp, norautp, norautp_state, 0, ROT0, "Noraut Ltd.", "Noraut Joker Poker (alt)", 0, layout_noraut11 ) +GAMEL( 1988, norautrh, 0, norautp, norautrh, norautp_state, 0, ROT0, "Noraut Ltd.", "Noraut Red Hot Joker Poker", 0, layout_noraut12 ) +GAMEL( 198?, norautra, 0, norautp, norautrh, norautp_state, 0, ROT0, "Noraut Ltd.", "Noraut Red Hot Joker Poker (alt HW)", 0, layout_noraut12 ) // 1-bet?? where??... +GAME( 1988, norautu, 0, norautxp, norautp, norautp_state, 0, ROT0, "Noraut Ltd.", "Noraut Poker (NTX10A)", MACHINE_NOT_WORKING ) +GAME( 2002, noraut3a, 0, norautxp, norautp, norautp_state, 0, ROT0, "Noraut Ltd.", "Noraut Joker Poker (V3.010a)", MACHINE_NOT_WORKING ) +GAME( 2003, noraut3b, 0, norautxp, norautp, norautp_state, 0, ROT0, "Noraut Ltd.", "Noraut Joker Poker (V3.011a)", MACHINE_NOT_WORKING ) +GAMEL( 198?, norautua, 0, norautp, norautp, norautp_state, enc, ROT0, "Noraut Ltd.", "Noraut unknown set 1 (console)", MACHINE_NOT_WORKING, layout_noraut12 ) +GAMEL( 198?, norautub, 0, norautp, norautp, norautp_state, enc, ROT0, "Noraut Ltd.", "Noraut unknown set 2 (console)", MACHINE_NOT_WORKING, layout_noraut12 ) +GAMEL( 198?, mainline, 0, norautp, mainline, norautp_state, 0, ROT0, "Mainline London", "Mainline Double Joker Poker", 0, layout_noraut12 ) +GAMEL( 199?, df_djpkr, 0, norautp, mainline, norautp_state, 0, ROT0, "DellFern Ltd.", "Double Joker Poker (45%-75% payout)", 0, layout_noraut12 ) +GAMEL( 2005, ndxron10, 0, norautp, ndxron10, norautp_state, 0, ROT0, "", "Royal on Ten (Noraut Deluxe hack)", 0, layout_noraut12 ) +GAMEL( 1999, cgip30cs, 0, norautx4, norautkl, norautp_state, deb, ROT0, "CGI", "Credit Poker (ver.30c, standard)", 0, layout_noraut12 ) +GAME( 198?, kimblz80, 0, kimble, norautp, norautp_state, 0, ROT0, "Kimble Ireland", "Kimble Double HI-LO (z80 version)", MACHINE_NOT_WORKING ) +GAME( 1983, pma, 0, nortest1, norautp, norautp_state, 0, ROT0, "PMA", "PMA Poker", MACHINE_NOT_WORKING ) +GAMEL( 198?, bjpoker, 0, norautxp, norautrh, norautp_state, 0, ROT0, "M.Kramer Manufacturing.", "Poker / Black Jack (Model 7521)", MACHINE_NOT_WORKING, layout_noraut12 ) +GAME( 19??, newhilop, 0, newhilop, norautp, norautp_state, 0, ROT0, "Song Won?", "New Hi-Low Poker", MACHINE_NOT_WORKING ) /************************************* 8080 sets **************************************/ /* The following ones are 'Draw Poker HI-LO' type, running in a 8080 based hardware */ /**************************************************************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ - -GAME( 1983, dphl, 0, dphl, norautp, driver_device, 0, ROT0, "M.Kramer Manufacturing.", "Draw Poker HI-LO (M.Kramer)", MACHINE_NOT_WORKING ) -GAME( 1983, dphla, 0, dphla, norautp, driver_device, 0, ROT0, "", "Draw Poker HI-LO (Alt)", MACHINE_NOT_WORKING ) -GAME( 1983, dphljp, 0, dphl, norautp, driver_device, 0, ROT0, "", "Draw Poker HI-LO (Japanese)", MACHINE_NOT_WORKING ) -GAME( 198?, kimbldhl, 0, kimbldhl, norautp, driver_device, 0, ROT0, "Kimble Ireland", "Kimble Double HI-LO", MACHINE_NOT_WORKING ) -GAME( 1983, gtipoker, 0, dphl, norautp, driver_device, 0, ROT0, "GTI Inc", "GTI Poker", MACHINE_NOT_WORKING ) -GAME( 1983, gtipokra, 0, dphla, norautp, driver_device, 0, ROT0, "GTI Inc", "GTI Poker? (SMS hardware)", MACHINE_NOT_WORKING ) -GAME( 1983, smshilo, 0, dphla, norautp, driver_device, 0, ROT0, "SMS Manufacturing Corp.", "HI-LO Double Up Joker Poker", MACHINE_NOT_WORKING ) -GAME( 1986, drhl, 0, drhl, norautp, driver_device, 0, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 1)", MACHINE_NOT_WORKING ) -GAME( 1986, drhla, 0, drhl, norautp, driver_device, 0, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 2)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT + +GAME( 1983, dphl, 0, dphl, norautp, norautp_state, 0, ROT0, "M.Kramer Manufacturing.", "Draw Poker HI-LO (M.Kramer)", MACHINE_NOT_WORKING ) +GAME( 1983, dphla, 0, dphla, norautp, norautp_state, 0, ROT0, "", "Draw Poker HI-LO (Alt)", MACHINE_NOT_WORKING ) +GAME( 1983, dphljp, 0, dphl, norautp, norautp_state, 0, ROT0, "", "Draw Poker HI-LO (Japanese)", MACHINE_NOT_WORKING ) +GAME( 198?, kimbldhl, 0, kimbldhl, norautp, norautp_state, 0, ROT0, "Kimble Ireland", "Kimble Double HI-LO", MACHINE_NOT_WORKING ) +GAME( 1983, gtipoker, 0, dphl, norautp, norautp_state, 0, ROT0, "GTI Inc", "GTI Poker", MACHINE_NOT_WORKING ) +GAME( 1983, gtipokra, 0, dphla, norautp, norautp_state, 0, ROT0, "GTI Inc", "GTI Poker? (SMS hardware)", MACHINE_NOT_WORKING ) +GAME( 1983, smshilo, 0, dphla, norautp, norautp_state, 0, ROT0, "SMS Manufacturing Corp.", "HI-LO Double Up Joker Poker", MACHINE_NOT_WORKING ) +GAME( 1986, drhl, 0, drhl, norautp, norautp_state, 0, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 1)", MACHINE_NOT_WORKING ) +GAME( 1986, drhla, 0, drhl, norautp, norautp_state, 0, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 2)", MACHINE_NOT_WORKING ) GAME( 1982, ssjkrpkr, 0, ssjkrpkr, norautp, norautp_state, ssa, ROT0, "Southern Systems & Assembly", "Southern Systems Joker Poker", MACHINE_NOT_WORKING ) /* The following one also has a custom 68705 MCU */ -GAME( 1993, tpoker2, 0, dphltest, norautp, driver_device, 0, ROT0, "Micro Manufacturing", "Turbo Poker 2", MACHINE_NOT_WORKING ) +GAME( 1993, tpoker2, 0, dphltest, norautp, norautp_state, 0, ROT0, "Micro Manufacturing", "Turbo Poker 2", MACHINE_NOT_WORKING ) /************************************ unknown sets ************************************/ /* The following ones are still unknown. No info about name, CPU, manufacturer, or HW */ /**************************************************************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT -GAME( 198?, fastdrwp, 0, dphl, norautp, driver_device, 0, ROT0, "Stern Electronics?", "Fast Draw (poker conversion kit)?", MACHINE_NOT_WORKING ) -GAME( 198?, dphlunka, 0, dphl, norautp, driver_device, 0, ROT0, "SMS Manufacturing Corp.", "Draw Poker HI-LO (unknown, rev 1)", MACHINE_NOT_WORKING ) -GAME( 198?, dphlunkb, 0, dphl, norautp, driver_device, 0, ROT0, "SMS Manufacturing Corp.", "Draw Poker HI-LO (unknown, rev 2)", MACHINE_NOT_WORKING ) -GAME( 198?, pkii_dm, 0, nortest1, norautp, driver_device, 0, ROT0, "", "Unknown Poker PKII/DM", MACHINE_NOT_WORKING ) +GAME( 198?, fastdrwp, 0, dphl, norautp, norautp_state, 0, ROT0, "Stern Electronics?", "Fast Draw (poker conversion kit)?", MACHINE_NOT_WORKING ) +GAME( 198?, dphlunka, 0, dphl, norautp, norautp_state, 0, ROT0, "SMS Manufacturing Corp.", "Draw Poker HI-LO (unknown, rev 1)", MACHINE_NOT_WORKING ) +GAME( 198?, dphlunkb, 0, dphl, norautp, norautp_state, 0, ROT0, "SMS Manufacturing Corp.", "Draw Poker HI-LO (unknown, rev 2)", MACHINE_NOT_WORKING ) +GAME( 198?, pkii_dm, 0, nortest1, norautp, norautp_state, 0, ROT0, "", "Unknown Poker PKII/DM", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/notetaker.cpp b/src/mame/drivers/notetaker.cpp index 5a237a0df6a..4d25e7411a1 100644 --- a/src/mame/drivers/notetaker.cpp +++ b/src/mame/drivers/notetaker.cpp @@ -115,7 +115,7 @@ public: required_device m_eiauart; required_device m_crtc; required_device m_dac; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; floppy_image_device *m_floppy; @@ -600,7 +600,7 @@ static ADDRESS_MAP_START(notetaker_iocpu_io, AS_IO, 16, notetaker_state) //AM_RANGE(0xa0, 0xa1) AM_MIRROR(0x7E18) AM_DEVREADWRITE("debug8255", 8255_device, read, write) // debugger board 8255 AM_RANGE(0xc0, 0xc1) AM_MIRROR(0x7E1E) AM_WRITE(FIFOBus_w) // DAC data write to FIFO AM_RANGE(0x100, 0x101) AM_MIRROR(0x7E1E) AM_WRITE(DiskReg_w) // I/O register (adc speed, crtc pixel clock and clock enable, +5 and +12v relays for floppy, etc) - AM_RANGE(0x120, 0x127) AM_MIRROR(0x7E18) AM_DEVREADWRITE8("wd1791", fd1791_t, read, write, 0x00FF) // floppy controller + AM_RANGE(0x120, 0x127) AM_MIRROR(0x7E18) AM_DEVREADWRITE8("wd1791", fd1791_device, read, write, 0x00FF) // floppy controller AM_RANGE(0x140, 0x15f) AM_MIRROR(0x7E00) AM_DEVREADWRITE8("crt5027", crt5027_device, read, write, 0x00FF) // crt controller AM_RANGE(0x160, 0x161) AM_MIRROR(0x7E1E) AM_WRITE(LoadDispAddr_w) // loads the start address for the display framebuffer AM_RANGE(0x1a0, 0x1a1) AM_MIRROR(0x7E10) AM_READ(ReadEIAStatus_r) // read eia fifo state @@ -793,7 +793,7 @@ void notetaker_state::ep_reset() static INPUT_PORTS_START( notetakr ) INPUT_PORTS_END -static MACHINE_CONFIG_START( notetakr, notetaker_state ) +static MACHINE_CONFIG_START( notetakr ) /* basic machine hardware */ /* IO CPU: 8086@8MHz */ MCFG_CPU_ADD("iocpu", I8086, XTAL_24MHz/3) /* iD8086-2 @ E4A; 24Mhz crystal divided down to 8Mhz by i8284 clock generator */ @@ -925,6 +925,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, notetakr, 0, 0, notetakr, notetakr, notetaker_state, notetakr, "Xerox", "NoteTaker", MACHINE_IS_SKELETON) -//COMP( 1978, notetakr, 0, 0, notetakr, notetakr, driver_device, notetakr, "Xerox", "NoteTaker", MACHINE_IS_SKELETON) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1978, notetakr, 0, 0, notetakr, notetakr, notetaker_state, notetakr, "Xerox", "NoteTaker", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/nova2001.cpp b/src/mame/drivers/nova2001.cpp index 5e6e3b2d491..d46e8c59337 100644 --- a/src/mame/drivers/nova2001.cpp +++ b/src/mame/drivers/nova2001.cpp @@ -638,7 +638,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( nova2001, nova2001_state ) +static MACHINE_CONFIG_START( nova2001 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz verified on schematics @@ -676,7 +676,7 @@ static MACHINE_CONFIG_START( nova2001, nova2001_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ninjakun, nova2001_state ) +static MACHINE_CONFIG_START( ninjakun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz @@ -720,7 +720,7 @@ static MACHINE_CONFIG_START( ninjakun, nova2001_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pkunwar, nova2001_state ) +static MACHINE_CONFIG_START( pkunwar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz @@ -757,7 +757,7 @@ static MACHINE_CONFIG_START( pkunwar, nova2001_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( raiders5, nova2001_state ) +static MACHINE_CONFIG_START( raiders5 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK/4) // 3 MHz @@ -1026,12 +1026,12 @@ DRIVER_INIT_MEMBER(nova2001_state,raiders5) // many of these don't explicitly state Japan, eg. Nova 2001 could easily be used anywhere. -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1983, nova2001, 0, nova2001, nova2001, driver_device, 0, ROT0, "UPL", "Nova 2001 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, nova2001h, nova2001, nova2001, nova2001, driver_device, 0, ROT0, "UPL", "Nova 2001 (Japan, hack?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, nova2001u, nova2001, nova2001, nova2001, driver_device, 0, ROT0, "UPL (Universal license)", "Nova 2001 (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, ninjakun, 0, ninjakun, ninjakun, driver_device, 0, ROT0, "UPL (Taito license)", "Ninjakun Majou no Bouken", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pkunwar, 0, pkunwar, pkunwar, nova2001_state, pkunwar, ROT0, "UPL", "Penguin-Kun Wars (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pkunwarj, pkunwar, pkunwar, pkunwar, nova2001_state, pkunwar, ROT0, "UPL", "Penguin-Kun Wars (Japan)", MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS +GAME( 1983, nova2001, 0, nova2001, nova2001, nova2001_state, 0, ROT0, "UPL", "Nova 2001 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, nova2001h, nova2001, nova2001, nova2001, nova2001_state, 0, ROT0, "UPL", "Nova 2001 (Japan, hack?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, nova2001u, nova2001, nova2001, nova2001, nova2001_state, 0, ROT0, "UPL (Universal license)", "Nova 2001 (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, ninjakun, 0, ninjakun, ninjakun, nova2001_state, 0, ROT0, "UPL (Taito license)", "Ninjakun Majou no Bouken", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pkunwar, 0, pkunwar, pkunwar, nova2001_state, pkunwar, ROT0, "UPL", "Penguin-Kun Wars (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pkunwarj, pkunwar, pkunwar, pkunwar, nova2001_state, pkunwar, ROT0, "UPL", "Penguin-Kun Wars (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, raiders5, 0, raiders5, raiders5, nova2001_state, raiders5, ROT0, "UPL", "Raiders5", MACHINE_SUPPORTS_SAVE ) GAME( 1985, raiders5t, raiders5, raiders5, raiders5, nova2001_state, raiders5, ROT0, "UPL (Taito license)", "Raiders5 (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/novag6502.cpp b/src/mame/drivers/novag6502.cpp index e441ad77336..04b4b295c8c 100644 --- a/src/mame/drivers/novag6502.cpp +++ b/src/mame/drivers/novag6502.cpp @@ -348,7 +348,7 @@ void novag6502_state::cforte_prepare_display() { // 3 led rows display_matrix(8, 3, m_led_data, m_led_select, false); - + // lcd panel (mostly handled in cforte_lcd_output_w) set_display_segmask(0x3ff0, 0xff); set_display_size(8, 3+13); @@ -368,10 +368,10 @@ WRITE64_MEMBER(novag6502_state::cforte_lcd_output_w) m_display_state[dig+3] = 0; for (int i = 0; i < 4; i++) m_display_state[dig+3] |= ((rowdata[i] >> (2*dig) & 3) << (2*i)); - + m_display_state[dig+3] = BITSWAP8(m_display_state[dig+3],7,2,0,4,6,5,3,1); } - + cforte_prepare_display(); } @@ -564,7 +564,7 @@ ADDRESS_MAP_END Input Ports ******************************************************************************/ -static INPUT_PORTS_START( cb_buttons ) +INPUT_PORTS_START( novag_cb_buttons ) PORT_START("IN.0") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") @@ -646,7 +646,7 @@ static INPUT_PORTS_START( cb_buttons ) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor") INPUT_PORTS_END -static INPUT_PORTS_START( cb_magnets ) +INPUT_PORTS_START( novag_cb_magnets ) PORT_START("IN.0") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") @@ -730,7 +730,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( supercon ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( novag_cb_buttons ) PORT_MODIFY("IN.0") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("New Game") @@ -767,7 +767,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( cforte ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( novag_cb_buttons ) PORT_MODIFY("IN.0") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("New Game") @@ -856,12 +856,12 @@ INPUT_CHANGED_MEMBER(novag6502_state::sexpert_cpu_freq) } static INPUT_PORTS_START( sexpert ) - PORT_INCLUDE( cb_magnets ) + PORT_INCLUDE( novag_cb_magnets ) PORT_INCLUDE( sexy_shared ) INPUT_PORTS_END static INPUT_PORTS_START( sforte ) - PORT_INCLUDE( cb_buttons ) + PORT_INCLUDE( novag_cb_buttons ) PORT_INCLUDE( sexy_shared ) INPUT_PORTS_END @@ -871,7 +871,7 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( supercon, novag6502_state ) +static MACHINE_CONFIG_START( supercon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_8MHz/2) @@ -889,7 +889,7 @@ static MACHINE_CONFIG_START( supercon, novag6502_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cforte, novag6502_state ) +static MACHINE_CONFIG_START( cforte ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02, 5000000) // 5MHz @@ -911,7 +911,7 @@ static MACHINE_CONFIG_START( cforte, novag6502_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sexpert, novag6502_state ) +static MACHINE_CONFIG_START( sexpert ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02, XTAL_10MHz/2) // or XTAL_12MHz/2 @@ -1052,17 +1052,17 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1984, supercon, 0, 0, supercon, supercon, driver_device, 0, "Novag", "Super Constellation", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1984, supercon, 0, 0, supercon, supercon, novag6502_state, 0, "Novag", "Super Constellation", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1986, cforteb, 0, 0, cforte, cforte, driver_device, 0, "Novag", "Constellation Forte (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1986, cforteb, 0, 0, cforte, cforte, novag6502_state, 0, "Novag", "Constellation Forte (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, sfortea, 0, 0, sforte, sforte, novag6502_state, sexpert, "Novag", "Super Forte (version A, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, sfortea1, sfortea, 0, sforte, sforte, novag6502_state, sexpert, "Novag", "Super Forte (version A, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1988, sforteb, sfortea, 0, sforte, sforte, novag6502_state, sexpert, "Novag", "Super Forte (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, sfortec, sfortea, 0, sforte, sforte, novag6502_state, sexpert, "Novag", "Super Forte (version C)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, sfortea, 0, 0, sforte, sforte, novag6502_state, sexpert, "Novag", "Super Forte (version A, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, sfortea1, sfortea, 0, sforte, sforte, novag6502_state, sexpert, "Novag", "Super Forte (version A, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1988, sforteb, sfortea, 0, sforte, sforte, novag6502_state, sexpert, "Novag", "Super Forte (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, sfortec, sfortea, 0, sforte, sforte, novag6502_state, sexpert, "Novag", "Super Forte (version C)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1987, sexperta, 0, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Super Expert (version A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1988, sexpertb, sexperta, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Super Expert (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, sexpertc, sexperta, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Super Expert (version C, V3.6)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, sexpertc1, sexperta, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Super Expert (version C, V1.2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, sexperta, 0, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Super Expert (version A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1988, sexpertb, sexperta, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Super Expert (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, sexpertc, sexperta, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Super Expert (version C, V3.6)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, sexpertc1, sexperta, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Super Expert (version C, V1.2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/novag68k.cpp b/src/mame/drivers/novag68k.cpp index 3d270f14218..0ed1db0d5c4 100644 --- a/src/mame/drivers/novag68k.cpp +++ b/src/mame/drivers/novag68k.cpp @@ -128,91 +128,8 @@ ADDRESS_MAP_END Input Ports ******************************************************************************/ -static INPUT_PORTS_START( cb_magnets ) - PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.4") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.5") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.6") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - - PORT_START("IN.7") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") - PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor") -INPUT_PORTS_END - - static INPUT_PORTS_START( diablo68k ) - PORT_INCLUDE( cb_magnets ) + PORT_INCLUDE( novag_cb_magnets ) PORT_MODIFY("IN.0") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Go") @@ -261,7 +178,7 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( diablo68k, novag68k_state ) +static MACHINE_CONFIG_START( diablo68k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -316,5 +233,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1991, diablo68, 0, 0, diablo68k, diablo68k, driver_device, 0, "Novag", "Diablo 68000", MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1991, diablo68, 0, 0, diablo68k, diablo68k, novag68k_state, 0, "Novag", "Diablo 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/novagmcs48.cpp b/src/mame/drivers/novagmcs48.cpp new file mode 100644 index 00000000000..9cb06e6c406 --- /dev/null +++ b/src/mame/drivers/novagmcs48.cpp @@ -0,0 +1,196 @@ +// license:BSD-3-Clause +// copyright-holders:hap +// thanks-to:Berger +/****************************************************************************** + + Novag generic MCS-48 based chess computer driver + + NOTE: MAME doesn't include a generalized implementation for boardpieces yet, + greatly affecting user playability of emulated electronic board games. + As workaround for the chess games, use an external chess GUI on the side, + such as Arena(in editmode). + + TODO: + - is presto led handling correct? mux data needs to be auto cleared + similar to diablo/sexpert + +****************************************************************************** + +Presto: +- NEC D80C49C MCU(serial 186), OSC from LC circuit measured ~6MHz +- buzzer, 16+4 LEDs, 8*8 chessboard buttons + +Octo: +- NEC D80C49HC MCU(serial 111), OSC from LC circuit measured ~12MHz +The buzzer has a little electronic circuit going on, not sure whatfor. +Otherwise, it's identical to Presto. The MCU internal ROM is same too. + +******************************************************************************/ + +#include "emu.h" +#include "includes/novagbase.h" + +#include "cpu/mcs48/mcs48.h" +#include "sound/volt_reg.h" +#include "speaker.h" + +// internal artwork +#include "novag_presto.lh" // clickable + + +class novagmcs48_state : public novagbase_state +{ +public: + novagmcs48_state(const machine_config &mconfig, device_type type, const char *tag) + : novagbase_state(mconfig, type, tag) + { } + + // Presto/Octo + DECLARE_WRITE8_MEMBER(presto_mux_w); + DECLARE_WRITE8_MEMBER(presto_control_w); + DECLARE_READ8_MEMBER(presto_input_r); + DECLARE_MACHINE_RESET(octo); + DECLARE_INPUT_CHANGED_MEMBER(octo_cpu_freq); + void octo_set_cpu_freq(); +}; + + + +// Devices, I/O + +/****************************************************************************** + Presto/Octo +******************************************************************************/ + +// MCU ports/generic + +WRITE8_MEMBER(novagmcs48_state::presto_mux_w) +{ + // D0-D7: input mux low, led data + m_inp_mux = (m_inp_mux & ~0xff) | (~data & 0xff); + display_matrix(8, 3, m_inp_mux, m_led_select); +} + +WRITE8_MEMBER(novagmcs48_state::presto_control_w) +{ + // P21: input mux high + m_inp_mux = (m_inp_mux & 0xff) | (~data << 7 & 0x100); + + // P22,P23: speaker lead 1,2 + m_dac->write(BIT(data, 2) & BIT(~data, 3)); + + // P24-P26: led select + m_led_select = ~data >> 4 & 7; + m_inp_mux &= ~0xff; // ? +} + +READ8_MEMBER(novagmcs48_state::presto_input_r) +{ + // P10-P17: multiplexed inputs + return ~read_inputs(9) & 0xff; +} + +void novagmcs48_state::octo_set_cpu_freq() +{ + // Octo was released with either 12MHz or 15MHz CPU + m_maincpu->set_unscaled_clock((ioport("FAKE")->read() & 1) ? (15000000) : (12000000)); +} + +MACHINE_RESET_MEMBER(novagmcs48_state, octo) +{ + novagbase_state::machine_reset(); + octo_set_cpu_freq(); +} + + + +/****************************************************************************** + Input Ports +******************************************************************************/ + +static INPUT_PORTS_START( presto ) + PORT_INCLUDE( novag_cb_buttons ) + + PORT_START("IN.8") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Black/White") // Octo calls it "Change Color" + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Verify / Pawn") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Set Up / Rook") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Knight") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Set Level / Bishop") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Queen") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("Take Back / King") + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Go") +INPUT_PORTS_END + +static INPUT_PORTS_START( octo ) + PORT_INCLUDE( presto ) + + PORT_START("FAKE") + PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, novagmcs48_state, octo_cpu_freq, nullptr) // factory set + PORT_CONFSETTING( 0x00, "12MHz" ) + PORT_CONFSETTING( 0x01, "15MHz" ) +INPUT_PORTS_END + +INPUT_CHANGED_MEMBER(novagmcs48_state::octo_cpu_freq) +{ + octo_set_cpu_freq(); +} + + + +/****************************************************************************** + Machine Drivers +******************************************************************************/ + +static MACHINE_CONFIG_START( presto ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", I8049, 6000000) // LC circuit, measured + MCFG_MCS48_PORT_P1_IN_CB(READ8(novagmcs48_state, presto_input_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(novagmcs48_state, presto_control_w)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(novagmcs48_state, presto_mux_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novagbase_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_novag_presto) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("speaker") + MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( octo, presto ) + + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_DEVICE_CLOCK(12000000) // LC circuit, measured, see octo_set_cpu_freq + + MCFG_MACHINE_RESET_OVERRIDE(novagmcs48_state, octo) +MACHINE_CONFIG_END + + + +/****************************************************************************** + ROM Definitions +******************************************************************************/ + +ROM_START( npresto ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD("d80c49c_186", 0x0000, 0x0800, CRC(29a0eb4c) SHA1(e058d6018e53ddcaa3b5ec25b33b8bff091b04db) ) +ROM_END + +ROM_START( nocto ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD("d80c49hc_111", 0x0000, 0x0800, CRC(29a0eb4c) SHA1(e058d6018e53ddcaa3b5ec25b33b8bff091b04db) ) // same program as npresto +ROM_END + + + +/****************************************************************************** + Drivers +******************************************************************************/ + +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1984, npresto, 0, 0, presto, presto, novagmcs48_state, 0, "Novag", "Presto (Novag)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1987, nocto, npresto, 0, octo, octo, novagmcs48_state, 0, "Novag", "Octo (Novag)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/nsm.cpp b/src/mame/drivers/nsm.cpp index 049cd61eb53..bda6dae5913 100644 --- a/src/mame/drivers/nsm.cpp +++ b/src/mame/drivers/nsm.cpp @@ -119,7 +119,7 @@ void nsm_state::machine_reset() static_cast(machine().device("maincpu"))->ready_line(ASSERT_LINE); } -static MACHINE_CONFIG_START( nsm, nsm_state ) +static MACHINE_CONFIG_START( nsm ) // CPU TMS9995, standard variant; no line connection MCFG_TMS99xx_ADD("maincpu", TMS9995, 11052000, nsm_map, nsm_io_map) @@ -156,4 +156,4 @@ ROM_END / The Games (1985) /-------------------------------------------------------------------*/ -GAME(1985, firebird, 0, nsm, nsm, driver_device, 0, ROT0, "NSM", "Hot Fire Birds", MACHINE_NOT_WORKING | MACHINE_MECHANICAL) +GAME(1985, firebird, 0, nsm, nsm, nsm_state, 0, ROT0, "NSM", "Hot Fire Birds", MACHINE_NOT_WORKING | MACHINE_MECHANICAL) diff --git a/src/mame/drivers/nsmpoker.cpp b/src/mame/drivers/nsmpoker.cpp index 6589293b7ef..0eaa0cd662f 100644 --- a/src/mame/drivers/nsmpoker.cpp +++ b/src/mame/drivers/nsmpoker.cpp @@ -407,7 +407,7 @@ void nsmpoker_state::machine_reset() * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( nsmpoker, nsmpoker_state ) +static MACHINE_CONFIG_START( nsmpoker ) // CPU TMS9995, standard variant; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9995, MASTER_CLOCK/2, nsmpoker_map, nsmpoker_portmap) @@ -457,5 +457,5 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 198?, nsmpoker, 0, nsmpoker, nsmpoker, driver_device, 0, ROT0, "NSM", "NSM Poker (TMS9995)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 198?, nsmpoker, 0, nsmpoker, nsmpoker, nsmpoker_state, 0, ROT0, "NSM", "NSM Poker (TMS9995)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/nss.cpp b/src/mame/drivers/nss.cpp index 5c6f8803b27..b96ed39cc6e 100644 --- a/src/mame/drivers/nss.cpp +++ b/src/mame/drivers/nss.cpp @@ -817,7 +817,7 @@ void nss_state::machine_reset() m_joy_flag = 1; } -static MACHINE_CONFIG_START( nss, nss_state ) +static MACHINE_CONFIG_START( nss ) /* base snes hardware */ MCFG_CPU_ADD("maincpu", _5A22, MCLK_NTSC) /* 2.68Mhz, also 3.58Mhz */ @@ -1069,7 +1069,7 @@ DRIVER_INIT_MEMBER(nss_state,nss) DRIVER_INIT_CALL(snes); } -GAME( 199?, nss, 0, nss, snes, snes_state, snes, ROT0, "Nintendo", "Nintendo Super System BIOS", MACHINE_IS_BIOS_ROOT ) +GAME( 199?, nss, 0, nss, snes, nss_state, snes, ROT0, "Nintendo", "Nintendo Super System BIOS", MACHINE_IS_BIOS_ROOT ) GAME( 1992, nss_actr, nss, nss, snes, nss_state, nss, ROT0, "Enix", "Act Raiser (Nintendo Super System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) GAME( 1992, nss_adam, nss, nss, snes, nss_state, nss, ROT0, "Ocean", "The Addams Family (Nintendo Super System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) GAME( 1992, nss_aten, nss, nss, snes, nss_state, nss, ROT0, "Absolute Entertainment Inc.", "David Crane's Amazing Tennis (Nintendo Super System)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/nwk-tr.cpp b/src/mame/drivers/nwk-tr.cpp index 37a603a1fcc..0fcca3191c9 100644 --- a/src/mame/drivers/nwk-tr.cpp +++ b/src/mame/drivers/nwk-tr.cpp @@ -765,7 +765,7 @@ void nwktr_state::machine_reset() m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); } -static MACHINE_CONFIG_START( nwktr, nwktr_state ) +static MACHINE_CONFIG_START( nwktr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GA, XTAL_64MHz/2) /* PowerPC 403GA 32MHz */ @@ -822,7 +822,7 @@ static MACHINE_CONFIG_START( nwktr, nwktr_state ) MCFG_DEVICE_ADD("konppc", KONPPC, 0) MCFG_KONPPC_CGBOARD_NUMBER(2) - MCFG_KONPPC_CGBOARD_TYPE(CGBOARD_TYPE_NWKTR) + MCFG_KONPPC_CGBOARD_TYPE(NWKTR) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( thrilld, nwktr ) @@ -992,9 +992,9 @@ ROM_END /*****************************************************************************/ -GAME( 1998, racingj, 0, nwktr, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Racing Jam (JAC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 1998, racingj, 0, nwktr, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Racing Jam (JAC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) GAME( 1999, racingj2, racingj, nwktr, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Racing Jam: Chapter 2 (EAE)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) GAME( 1999, racingj2j, racingj, nwktr, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Racing Jam: Chapter 2 (JAE)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) -GAME( 1998, thrilld, 0, thrilld, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Thrill Drive (JAE)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, thrilldb, thrilld, thrilld, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Thrill Drive (JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, thrilldae, thrilld, thrilld, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Thrill Drive (EAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, thrilld, 0, thrilld, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Thrill Drive (JAE)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, thrilldb, thrilld, thrilld, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Thrill Drive (JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, thrilldae, thrilld, thrilld, nwktr, nwktr_state, nwktr, ROT0, "Konami", "Thrill Drive (EAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/nycaptor.cpp b/src/mame/drivers/nycaptor.cpp index f26b3744a2d..34a721f5e63 100644 --- a/src/mame/drivers/nycaptor.cpp +++ b/src/mame/drivers/nycaptor.cpp @@ -778,7 +778,7 @@ void nycaptor_state::machine_reset() memset(m_vol_ctrl, 0, sizeof(m_vol_ctrl)); } -static MACHINE_CONFIG_START( nycaptor, nycaptor_state ) +static MACHINE_CONFIG_START( nycaptor ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,8000000/2) /* ??? */ @@ -844,7 +844,7 @@ static MACHINE_CONFIG_START( nycaptor, nycaptor_state ) // Does the DAC also exist on this board? nycaptor writes 0x80 to 0xd600 MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cyclshtg, nycaptor_state ) +static MACHINE_CONFIG_START( cyclshtg ) MCFG_CPU_ADD("maincpu", Z80,8000000/2) MCFG_CPU_PROGRAM_MAP(cyclshtg_master_map) @@ -911,7 +911,7 @@ static MACHINE_CONFIG_START( cyclshtg, nycaptor_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bronx, nycaptor_state ) +static MACHINE_CONFIG_START( bronx ) MCFG_CPU_ADD("maincpu", Z80,8000000/2) MCFG_CPU_PROGRAM_MAP(bronx_master_map) @@ -1335,8 +1335,8 @@ DRIVER_INIT_MEMBER(nycaptor_state,colt) m_gametype = 2; } -GAME( 1985, nycaptor, 0, nycaptor, nycaptor, nycaptor_state, nycaptor, ROT0, "Taito", "N.Y. Captor", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, nycaptor, 0, nycaptor, nycaptor, nycaptor_state, nycaptor, ROT0, "Taito", "N.Y. Captor", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1986, cyclshtg, 0, cyclshtg, cyclshtg, nycaptor_state, cyclshtg, ROT90, "Taito", "Cycle Shooting", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* bootlegs */ -GAME( 1986, bronx, cyclshtg, bronx, bronx, nycaptor_state, bronx, ROT90, "bootleg", "Bronx", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1986, colt, nycaptor, bronx, colt, nycaptor_state, colt, ROT0, "bootleg", "Colt", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, bronx, cyclshtg, bronx, bronx, nycaptor_state, bronx, ROT90, "bootleg", "Bronx", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, colt, nycaptor, bronx, colt, nycaptor_state, colt, ROT0, "bootleg", "Colt", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nyny.cpp b/src/mame/drivers/nyny.cpp index 3cfbe24f1b9..11c38f09a09 100644 --- a/src/mame/drivers/nyny.cpp +++ b/src/mame/drivers/nyny.cpp @@ -21,6 +21,8 @@ Notes: * The Sigma set has Japanese voice samples, while the Gottlieb one is English + * Taito T.T. New York New York's ROMs match the ones from the + Sigma set * In cocktail mode New York! New York! programs the CRTC with an incorrect value. Interestingly, when the Flip Screen DIP is set, the value programmed is correct. This bug does not @@ -589,7 +591,7 @@ void nyny_state::machine_reset() * *************************************/ -static MACHINE_CONFIG_START( nyny, nyny_state ) +static MACHINE_CONFIG_START( nyny ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 1400000) /* 1.40 MHz? The clock signal is generated by analog chips */ @@ -676,21 +678,21 @@ MACHINE_CONFIG_END ROM_START( nyny ) ROM_REGION(0x10000, "maincpu", 0) /* main CPU */ - ROM_LOAD( "nyny01s.100", 0xa800, 0x0800, CRC(a2b76eca) SHA1(e46717e6ad330be4c4e7d9fab4f055f89aa31bcc) ) - ROM_LOAD( "nyny02s.099", 0xb000, 0x0800, CRC(ef2d4dae) SHA1(718c0ecf7770a780aebb1dc8bf4ca86ea0a5ea28) ) - ROM_LOAD( "nyny03s.098", 0xb800, 0x0800, CRC(2734c229) SHA1(b028d057d26838bae50b8ddb90a3755b5315b4ee) ) - ROM_LOAD( "nyny04s.097", 0xe000, 0x0800, CRC(bd94087f) SHA1(02dde604bb84097fcd95c434847c55198b4e4309) ) - ROM_LOAD( "nyny05s.096", 0xe800, 0x0800, CRC(248b22c4) SHA1(d64d89bf78fa19d36e02720c296a60621ab8fe21) ) - ROM_LOAD( "nyny06s.095", 0xf000, 0x0800, CRC(8c073052) SHA1(0ce103ac0e79124ac9f1e097dda1a0664b92b89b) ) - ROM_LOAD( "nyny07s.094", 0xf800, 0x0800, CRC(d49d7429) SHA1(c12eaae7ba0b1d44c45a584232db03c5731c046a) ) + ROM_LOAD( "nyny01s.100", 0xa800, 0x0800, CRC(a2b76eca) SHA1(e46717e6ad330be4c4e7d9fab4f055f89aa31bcc) ) // NE01.IC10.2716 on Taito PCB + ROM_LOAD( "nyny02s.099", 0xb000, 0x0800, CRC(ef2d4dae) SHA1(718c0ecf7770a780aebb1dc8bf4ca86ea0a5ea28) ) // NE02.IC99.2716 on Taito PCB + ROM_LOAD( "nyny03s.098", 0xb800, 0x0800, CRC(2734c229) SHA1(b028d057d26838bae50b8ddb90a3755b5315b4ee) ) // NE03.IC98.2716 on Taito PCB + ROM_LOAD( "nyny04s.097", 0xe000, 0x0800, CRC(bd94087f) SHA1(02dde604bb84097fcd95c434847c55198b4e4309) ) // NE04.IC97.2716 on Taito PCB + ROM_LOAD( "nyny05s.096", 0xe800, 0x0800, CRC(248b22c4) SHA1(d64d89bf78fa19d36e02720c296a60621ab8fe21) ) // NE05.IC96.2716 on Taito PCB + ROM_LOAD( "nyny06s.095", 0xf000, 0x0800, CRC(8c073052) SHA1(0ce103ac0e79124ac9f1e097dda1a0664b92b89b) ) // NE06.IC95.2716 on Taito PCB + ROM_LOAD( "nyny07s.094", 0xf800, 0x0800, CRC(d49d7429) SHA1(c12eaae7ba0b1d44c45a584232db03c5731c046a) ) // NE07.IC94.2716 on Taito PCB ROM_REGION(0x10000, "audiocpu", 0) /* first audio CPU */ - ROM_LOAD( "nyny08.093", 0x5000, 0x0800, CRC(19ddb6c3) SHA1(0097fad542f9a33849565093c2fb106d90007b1a) ) - ROM_LOAD( "nyny09.092", 0x6000, 0x0800, CRC(a359c6f1) SHA1(1bc7b487581399908c3cec823733810fb6d944ce) ) - ROM_LOAD( "nyny10.091", 0x7000, 0x0800, CRC(a72a70fa) SHA1(deed7dec9cc43fa1d6c4854ba18169c894c9a2f0) ) + ROM_LOAD( "nyny08.093", 0x5000, 0x0800, CRC(19ddb6c3) SHA1(0097fad542f9a33849565093c2fb106d90007b1a) ) // NE08.IC93.2716 on Taito PCB + ROM_LOAD( "nyny09.092", 0x6000, 0x0800, CRC(a359c6f1) SHA1(1bc7b487581399908c3cec823733810fb6d944ce) ) // NE09.IC92.2716 on Taito PCB + ROM_LOAD( "nyny10.091", 0x7000, 0x0800, CRC(a72a70fa) SHA1(deed7dec9cc43fa1d6c4854ba18169c894c9a2f0) ) // NE10.IC91.2716 on Taito PCB ROM_REGION(0x10000, "audio2", 0) /* second audio CPU */ - ROM_LOAD( "nyny11.snd", 0x7000, 0x0800, CRC(650450fc) SHA1(214693df394ca05eff5dbe1e800107d326ba80f6) ) + ROM_LOAD( "nyny11.snd", 0x7000, 0x0800, CRC(650450fc) SHA1(214693df394ca05eff5dbe1e800107d326ba80f6) ) // NE11.IC2.2516 on Taito PCB ROM_END @@ -743,6 +745,6 @@ ROM_END * *************************************/ -GAME( 1980, nyny, 0, nyny, nyny, driver_device, 0, ROT270, "Sigma Enterprises Inc.", "New York! New York!", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, nynyg, nyny, nyny, nyny, driver_device, 0, ROT270, "Sigma Enterprises Inc. (Gottlieb license)", "New York! New York! (Gottlieb)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, warcadia,nyny, nyny, nyny, driver_device, 0, ROT270, "Sigma Enterprises Inc.", "Waga Seishun no Arcadia", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, nyny, 0, nyny, nyny, nyny_state, 0, ROT270, "Sigma Enterprises Inc.", "New York! New York!", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, nynyg, nyny, nyny, nyny, nyny_state, 0, ROT270, "Sigma Enterprises Inc. (Gottlieb license)", "New York! New York! (Gottlieb)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, warcadia,nyny, nyny, nyny, nyny_state, 0, ROT270, "Sigma Enterprises Inc.", "Waga Seishun no Arcadia", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ob68k1a.cpp b/src/mame/drivers/ob68k1a.cpp index 2379a3ea0ea..022dc66a5ed 100644 --- a/src/mame/drivers/ob68k1a.cpp +++ b/src/mame/drivers/ob68k1a.cpp @@ -217,7 +217,7 @@ void ob68k1a_state::machine_reset() // MACHINE_CONFIG( ob68k1a ) //------------------------------------------------- -static MACHINE_CONFIG_START( ob68k1a, ob68k1a_state ) +static MACHINE_CONFIG_START( ob68k1a ) // basic machine hardware MCFG_CPU_ADD(MC68000L10_TAG, M68000, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(ob68k1a_mem) @@ -288,5 +288,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1982, ob68k1a, 0, 0, ob68k1a, ob68k1a, driver_device, 0, "Omnibyte", "OB68K1A", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, ob68k1a, 0, 0, ob68k1a, ob68k1a, ob68k1a_state, 0, "Omnibyte", "OB68K1A", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp index 2d1f2c9c919..74f2ec1f5ad 100644 --- a/src/mame/drivers/octopus.cpp +++ b/src/mame/drivers/octopus.cpp @@ -238,7 +238,7 @@ private: required_device m_pic1; required_device m_pic2; required_device m_rtc; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_kb_uart; @@ -310,7 +310,7 @@ static ADDRESS_MAP_START( octopus_io, AS_IO, 8, octopus_state ) AM_RANGE(0xc8, 0xc8) AM_READWRITE(vidcontrol_r, vidcontrol_w) AM_RANGE(0xc9, 0xca) AM_READWRITE(video_latch_r, video_latch_w) // 0xcf: mode control - AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("fdc", fd1793_t, read, write) + AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("fdc", fd1793_device, read, write) AM_RANGE(0xe0, 0xe4) AM_READWRITE(z80_vector_r, z80_vector_w) AM_RANGE(0xf0, 0xf1) AM_READWRITE(parallel_r, parallel_w) AM_RANGE(0xf8, 0xff) AM_DEVREADWRITE("ppi", i8255_device, read, write) @@ -865,7 +865,7 @@ SLOT_INTERFACE_START(octopus_centronics_devices) SLOT_INTERFACE("printer", CENTRONICS_PRINTER) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( octopus, octopus_state ) +static MACHINE_CONFIG_START( octopus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8088, XTAL_24MHz / 3) // 8MHz MCFG_CPU_PROGRAM_MAP(octopus_mem) @@ -897,11 +897,11 @@ static MACHINE_CONFIG_START( octopus, octopus_state ) MCFG_I8237_IN_MEMR_CB(READ8(octopus_state,dma_read)) MCFG_I8237_OUT_MEMW_CB(WRITE8(octopus_state,dma_write)) //MCFG_I8237_IN_IOR_0_CB(NOOP) - MCFG_I8237_IN_IOR_1_CB(DEVREAD8("fdc",fd1793_t,data_r)) // FDC + MCFG_I8237_IN_IOR_1_CB(DEVREAD8("fdc",fd1793_device,data_r)) // FDC //MCFG_I8237_IN_IOR_2_CB(NOOP) //MCFG_I8237_IN_IOR_3_CB(NOOP) //MCFG_I8237_OUT_IOW_0_CB(NOOP) - MCFG_I8237_OUT_IOW_1_CB(DEVWRITE8("fdc",fd1793_t,data_w)) // FDC + MCFG_I8237_OUT_IOW_1_CB(DEVWRITE8("fdc",fd1793_device,data_w)) // FDC //MCFG_I8237_OUT_IOW_2_CB(NOOP) //MCFG_I8237_OUT_IOW_3_CB(NOOP) MCFG_I8237_OUT_DACK_0_CB(WRITELINE(octopus_state, dack4_w)) @@ -1015,5 +1015,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, octopus, 0, 0, octopus, octopus, driver_device, 0, "Digital Microsystems", "LSI Octopus", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, octopus, 0, 0, octopus, octopus, octopus_state, 0, "Digital Microsystems", "LSI Octopus", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/odyssey2.cpp b/src/mame/drivers/odyssey2.cpp index 09250f96e85..a7a35b1b95a 100644 --- a/src/mame/drivers/odyssey2.cpp +++ b/src/mame/drivers/odyssey2.cpp @@ -52,7 +52,7 @@ public: DECLARE_WRITE8_MEMBER(p1_write); DECLARE_READ8_MEMBER(p2_read); DECLARE_WRITE8_MEMBER(p2_write); - DECLARE_READ8_MEMBER(t1_read); + DECLARE_READ_LINE_MEMBER(t1_read); DECLARE_DRIVER_INIT(odyssey2); virtual void machine_start() override; virtual void machine_reset() override; @@ -111,23 +111,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( odyssey2_io , AS_IO, 8, odyssey2_state ) - AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_read, p1_write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_read, p2_write) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_read, bus_write) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_DEVREAD("cartslot", o2_cart_slot_device, t0_read) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_read) + AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) ADDRESS_MAP_END static ADDRESS_MAP_START( g7400_io , AS_IO, 8, g7400_state ) - AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_read, p1_write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_read, p2_write) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_read, bus_write) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_DEVREAD("cartslot", o2_cart_slot_device, t0_read) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_read) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w); + AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) ADDRESS_MAP_END @@ -471,7 +460,7 @@ uint32_t odyssey2_state::screen_update_odyssey2(screen_device &screen, bitmap_in } -READ8_MEMBER(odyssey2_state::t1_read) +READ_LINE_MEMBER(odyssey2_state::t1_read) { if ( m_i8244->vblank() || m_i8244->hblank() ) { @@ -543,7 +532,7 @@ WRITE8_MEMBER(odyssey2_state::p2_write) WRITE8_MEMBER(g7400_state::p2_write) { m_p2 = data; - m_i8243->i8243_p2_w( space, 0, m_p2 & 0x0f ); + m_i8243->p2_w( space, 0, m_p2 & 0x0f ); } @@ -668,11 +657,19 @@ static MACHINE_CONFIG_FRAGMENT( odyssey2_cartslot ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( odyssey2, odyssey2_state ) +static MACHINE_CONFIG_START( odyssey2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8048, ( ( XTAL_7_15909MHz * 3 ) / 4 ) ) MCFG_CPU_PROGRAM_MAP(odyssey2_mem) MCFG_CPU_IO_MAP(odyssey2_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(odyssey2_state, p1_read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(odyssey2_state, p1_write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(odyssey2_state, p2_read)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(odyssey2_state, p2_write)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(odyssey2_state, bus_read)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(odyssey2_state, bus_write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("cartslot", o2_cart_slot_device, t0_read)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(odyssey2_state, t1_read)) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ @@ -694,7 +691,7 @@ static MACHINE_CONFIG_START( odyssey2, odyssey2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( videopac, odyssey2_state ) +static MACHINE_CONFIG_START( videopac ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8048, ( XTAL_17_73447MHz / 3 ) ) MCFG_CPU_PROGRAM_MAP(odyssey2_mem) @@ -720,11 +717,20 @@ static MACHINE_CONFIG_START( videopac, odyssey2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( g7400, g7400_state ) +static MACHINE_CONFIG_START( g7400 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8048, XTAL_5_911MHz ) MCFG_CPU_PROGRAM_MAP(odyssey2_mem) MCFG_CPU_IO_MAP(g7400_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(g7400_state, p1_read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(g7400_state, p1_write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(g7400_state, p2_read)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(g7400_state, p2_write)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(g7400_state, bus_read)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(g7400_state, bus_write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("cartslot", o2_cart_slot_device, t0_read)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(g7400_state, t1_read)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ @@ -752,11 +758,20 @@ static MACHINE_CONFIG_START( g7400, g7400_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( odyssey3, g7400_state ) +static MACHINE_CONFIG_START( odyssey3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8048, XTAL_5_911MHz ) MCFG_CPU_PROGRAM_MAP(odyssey2_mem) MCFG_CPU_IO_MAP(g7400_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(g7400_state, p1_read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(g7400_state, p1_write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(g7400_state, p2_read)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(g7400_state, p2_write)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(g7400_state, bus_read)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(g7400_state, bus_write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("cartslot", o2_cart_slot_device, t0_read)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(g7400_state, t1_read)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ @@ -822,9 +837,9 @@ ROM_START (odyssey3) ROM_REGION(0x100, "gfx1", ROMREGION_ERASEFF) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, odyssey2, 0, 0, odyssey2, odyssey2, odyssey2_state, odyssey2, "Magnavox", "Odyssey 2", 0 ) -COMP( 1979, videopac, odyssey2, 0, videopac, odyssey2, odyssey2_state, odyssey2, "Philips", "Videopac G7000/C52", 0 ) -COMP( 1983, g7400, odyssey2, 0, g7400, odyssey2, odyssey2_state, odyssey2, "Philips", "Videopac Plus G7400", MACHINE_IMPERFECT_GRAPHICS ) -COMP( 1983, jopac, odyssey2, 0, g7400, odyssey2, odyssey2_state, odyssey2, "Brandt", "Jopac JO7400", MACHINE_IMPERFECT_GRAPHICS ) -COMP( 1983, odyssey3, odyssey2, 0, odyssey3, odyssey2, odyssey2_state, odyssey2, "Magnavox", "Odyssey 3 Command Center (prototype)", MACHINE_IMPERFECT_GRAPHICS ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1978, odyssey2, 0, 0, odyssey2, odyssey2, odyssey2_state, odyssey2, "Magnavox", "Odyssey 2", 0 ) +COMP( 1979, videopac, odyssey2, 0, videopac, odyssey2, odyssey2_state, odyssey2, "Philips", "Videopac G7000/C52", 0 ) +COMP( 1983, g7400, odyssey2, 0, g7400, odyssey2, g7400_state, odyssey2, "Philips", "Videopac Plus G7400", MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1983, jopac, odyssey2, 0, g7400, odyssey2, g7400_state, odyssey2, "Brandt", " Jopac JO7400", MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1983, odyssey3, odyssey2, 0, odyssey3, odyssey2, g7400_state, odyssey2, "Magnavox", "Odyssey 3 Command Center (prototype)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/offtwall.cpp b/src/mame/drivers/offtwall.cpp index a105469525d..b6bef7c63df 100644 --- a/src/mame/drivers/offtwall.cpp +++ b/src/mame/drivers/offtwall.cpp @@ -360,7 +360,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( offtwall, offtwall_state ) +static MACHINE_CONFIG_START( offtwall ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) diff --git a/src/mame/drivers/ohmygod.cpp b/src/mame/drivers/ohmygod.cpp index a93238fcdd9..aef61a5398f 100644 --- a/src/mame/drivers/ohmygod.cpp +++ b/src/mame/drivers/ohmygod.cpp @@ -318,7 +318,7 @@ void ohmygod_state::machine_reset() m_scrolly = 0; } -static MACHINE_CONFIG_START( ohmygod, ohmygod_state ) +static MACHINE_CONFIG_START( ohmygod ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -346,7 +346,7 @@ static MACHINE_CONFIG_START( ohmygod, ohmygod_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 14000000/8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 14000000/8, PIN7_HIGH) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -399,5 +399,5 @@ DRIVER_INIT_MEMBER(ohmygod_state,naname) } -GAME( 1993, ohmygod, 0, ohmygod, ohmygod, ohmygod_state, ohmygod, ROT0, "Atlus", "Oh My God! (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, naname, 0, ohmygod, naname, ohmygod_state, naname, ROT0, "Atlus", "Naname de Magic! (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ohmygod, 0, ohmygod, ohmygod, ohmygod_state, ohmygod, ROT0, "Atlus", "Oh My God! (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, naname, 0, ohmygod, naname, ohmygod_state, naname, ROT0, "Atlus", "Naname de Magic! (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ojankohs.cpp b/src/mame/drivers/ojankohs.cpp index 95ad666a87f..8b0590a2459 100644 --- a/src/mame/drivers/ojankohs.cpp +++ b/src/mame/drivers/ojankohs.cpp @@ -40,6 +40,7 @@ Memo: #include "machine/nvram.h" #include "sound/ay8910.h" #include "sound/msm5205.h" +#include "video/vsystem_gga.h" #include "speaker.h" @@ -227,8 +228,7 @@ static ADDRESS_MAP_START( ojankohs_io_map, AS_IO, 8, ojankohs_state ) AM_RANGE(0x05, 0x05) AM_WRITE(ojankohs_msm5205_w) AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_device, data_r) AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x10, 0x10) AM_WRITENOP // unknown - AM_RANGE(0x11, 0x11) AM_WRITENOP // unknown + AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) ADDRESS_MAP_END static ADDRESS_MAP_START( ojankoy_io_map, AS_IO, 8, ojankohs_state ) @@ -253,8 +253,7 @@ static ADDRESS_MAP_START( ccasino_io_map, AS_IO, 8, ojankohs_state ) AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_device, data_r) AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) AM_RANGE(0x08, 0x0f) AM_WRITE(ccasino_palette_w) AM_SHARE("paletteram") // 16bit address access - AM_RANGE(0x10, 0x10) AM_WRITENOP - AM_RANGE(0x11, 0x11) AM_WRITENOP + AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) ADDRESS_MAP_END static ADDRESS_MAP_START( ojankoc_io_map, AS_IO, 8, ojankohs_state ) @@ -811,7 +810,7 @@ void ojankohs_state::machine_reset() m_screen_refresh = 0; } -static MACHINE_CONFIG_START( ojankohs, ojankohs_state ) +static MACHINE_CONFIG_START( ojankohs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */ @@ -834,6 +833,8 @@ static MACHINE_CONFIG_START( ojankohs, ojankohs_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ojankohs) MCFG_PALETTE_ADD("palette", 1024) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ojankohs) /* sound hardware */ @@ -846,11 +847,11 @@ static MACHINE_CONFIG_START( ojankohs, ojankohs_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ojankoy, ojankohs_state ) +static MACHINE_CONFIG_START( ojankoy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */ @@ -886,11 +887,11 @@ static MACHINE_CONFIG_START( ojankoy, ojankohs_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ccasino, ojankohs_state ) +static MACHINE_CONFIG_START( ccasino ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6.00 MHz ? */ @@ -913,6 +914,8 @@ static MACHINE_CONFIG_START( ccasino, ojankohs_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ojankohs) MCFG_PALETTE_ADD("palette", 1024) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ojankoy) /* sound hardware */ @@ -925,11 +928,11 @@ static MACHINE_CONFIG_START( ccasino, ojankohs_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ojankoc, ojankohs_state ) +static MACHINE_CONFIG_START( ojankoc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,8000000/2) /* 4.00 MHz */ @@ -963,7 +966,7 @@ static MACHINE_CONFIG_START( ojankoc, ojankohs_state ) MCFG_SOUND_ADD("msm", MSM5205, 8000000/22) MCFG_MSM5205_VCLK_CB(WRITELINE(ojankohs_state, ojankohs_adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -1059,9 +1062,27 @@ ROM_START( ojankoc ) ROM_LOAD( "0.1n", 0x50000, 0x8000, CRC(5665016e) SHA1(0f7f0a8e55e93bcb3060c91d9704905a6e827250) ) ROM_END +ROM_START( ojankoca ) + ROM_REGION( 0x10000, "maincpu", 0 ) /* CPU */ + ROM_LOAD( "11.1p", 0x0000, 0x8000, CRC(0c552e32) SHA1(2a8714796b2c95a042d783aae79c135ba03d1958) ) + + ROM_REGION( 0x80000, "user1", 0 ) /* BANK */ + ROM_LOAD( "1.1a", 0x00000, 0x8000, CRC(d40b17eb) SHA1(1e8c16e1562c112ca5150b3187a2d4aa22c1adf0) ) + ROM_LOAD( "2.1b", 0x08000, 0x8000, CRC(d181172a) SHA1(65d6710464a1f505df705c553558bbf22704359d) ) + ROM_LOAD( "3.1c", 0x10000, 0x8000, CRC(2e86d5bc) SHA1(0226eb81b31e43325f24b40ab51bce1729bf678c) ) + ROM_LOAD( "4.1e", 0x18000, 0x8000, CRC(00a780cb) SHA1(f0b4f6f0c58e9d069e0f6794243925679f220f35) ) + ROM_LOAD( "5.1f", 0x20000, 0x8000, CRC(f9885076) SHA1(ebf4c0769eab6545fd227eb9f4036af2472bcac3) ) + ROM_LOAD( "6.1h", 0x28000, 0x8000, CRC(42575d0c) SHA1(1f9c187b0c05179798cbdb28eb212202ffdc9fde) ) + ROM_LOAD( "7.1k", 0x30000, 0x8000, CRC(4d8d8928) SHA1(a5ccf4a1d84ef3a4966db01d66371de83e270701) ) + ROM_LOAD( "8.1l", 0x38000, 0x8000, CRC(534573b7) SHA1(ec53cad7d652c88508edd29c2412834920fe8ef6) ) + ROM_LOAD( "9.1m", 0x48000, 0x8000, CRC(2bf88eda) SHA1(55de96d057a0f35d9e74455444751f217aa4741e) ) + ROM_LOAD( "0.1n", 0x50000, 0x8000, CRC(5665016e) SHA1(0f7f0a8e55e93bcb3060c91d9704905a6e827250) ) +ROM_END + -GAME( 1986, ojankoc, 0, ojankoc, ojankoc, driver_device, 0, ROT0, "V-System Co.", "Ojanko Club (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ojankoy, 0, ojankoy, ojankoy, driver_device, 0, ROT0, "V-System Co.", "Ojanko Yakata (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ojanko2, 0, ojankoy, ojankoy, driver_device, 0, ROT0, "V-System Co.", "Ojanko Yakata 2bankan (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, ccasino, 0, ccasino, ccasino, driver_device, 0, ROT0, "V-System Co.", "Chinese Casino [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, ojankohs, 0, ojankohs, ojankohs, driver_device, 0, ROT0, "V-System Co.", "Ojanko High School (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ojankoc, 0, ojankoc, ojankoc, ojankohs_state, 0, ROT0, "V-System Co.", "Ojanko Club (Japan, Program Ver. 1.3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ojankoca, ojankoc, ojankoc, ojankoc, ojankohs_state, 0, ROT0, "V-System Co.", "Ojanko Club (Japan, Program Ver. 1.2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ojankoy, 0, ojankoy, ojankoy, ojankohs_state, 0, ROT0, "V-System Co.", "Ojanko Yakata (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ojanko2, 0, ojankoy, ojankoy, ojankohs_state, 0, ROT0, "V-System Co.", "Ojanko Yakata 2bankan (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, ccasino, 0, ccasino, ccasino, ojankohs_state, 0, ROT0, "V-System Co.", "Chinese Casino [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, ojankohs, 0, ojankohs, ojankohs, ojankohs_state, 0, ROT0, "V-System Co.", "Ojanko High School (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/okean240.cpp b/src/mame/drivers/okean240.cpp index 2fa47418255..1de7c0e53f2 100644 --- a/src/mame/drivers/okean240.cpp +++ b/src/mame/drivers/okean240.cpp @@ -82,24 +82,25 @@ public: DECLARE_READ8_MEMBER(okean240_keyboard_r); DECLARE_WRITE8_MEMBER(okean240_keyboard_w); DECLARE_READ8_MEMBER(okean240a_keyboard_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE8_MEMBER(scroll_w); - uint8_t m_term_data; - uint8_t m_j; - uint8_t m_scroll; - required_shared_ptr m_p_videoram; - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; DECLARE_DRIVER_INIT(okean240); uint32_t screen_update_okean240(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + + uint8_t m_term_data; + uint8_t m_j; + uint8_t m_scroll; + required_shared_ptr m_p_videoram; optional_ioport m_io_modifiers; ioport_port *m_io_port[11]; required_device m_maincpu; - - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; // okean240 requires bit 4 to change @@ -405,7 +406,7 @@ void okean240_state::machine_reset() m_scroll = 0; } -WRITE8_MEMBER( okean240_state::kbd_put ) +void okean240_state::kbd_put(u8 data) { m_term_data = data; } @@ -472,7 +473,7 @@ static GFXDECODE_START( okean240a ) GFXDECODE_END -static MACHINE_CONFIG_START( okean240t, okean240_state ) +static MACHINE_CONFIG_START( okean240t ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_12MHz / 6) MCFG_CPU_PROGRAM_MAP(okean240_mem) @@ -490,7 +491,7 @@ static MACHINE_CONFIG_START( okean240t, okean240_state ) MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(okean240_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(okean240_state, kbd_put)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( okean240a, okean240t ) @@ -499,7 +500,7 @@ static MACHINE_CONFIG_DERIVED( okean240a, okean240t ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240a) MCFG_DEVICE_REMOVE("terminal") MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(okean240_state, kbd_put)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( okean240, okean240t ) @@ -508,7 +509,7 @@ static MACHINE_CONFIG_DERIVED( okean240, okean240t ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240) MCFG_DEVICE_REMOVE("terminal") MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(okean240_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -531,7 +532,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, okean240, 0, 0, okean240, okean240, okean240_state, okean240, "", "Okeah-240", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1986, okean240a, okean240,0, okean240a, okean240a, okean240_state, okean240, "", "Ocean-240 with fdd", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1986, okean240t, okean240,0, okean240t, okean240, okean240_state, okean240, "", "Ocean-240 Test Rom", MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS +COMP( 1986, okean240, 0, 0, okean240, okean240, okean240_state, okean240, "", "Okeah-240", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1986, okean240a, okean240, 0, okean240a, okean240a, okean240_state, okean240, "", "Ocean-240 with FDD", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1986, okean240t, okean240, 0, okean240t, okean240, okean240_state, okean240, "", "Ocean-240 Test ROM", MACHINE_NO_SOUND) diff --git a/src/mame/drivers/olibochu.cpp b/src/mame/drivers/olibochu.cpp index 5bf02fb5dda..f6518414a62 100644 --- a/src/mame/drivers/olibochu.cpp +++ b/src/mame/drivers/olibochu.cpp @@ -456,7 +456,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(olibochu_state::olibochu_scanline) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xcf); /* RST 08h */ } -static MACHINE_CONFIG_START( olibochu, olibochu_state ) +static MACHINE_CONFIG_START( olibochu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz ?? */ @@ -537,4 +537,4 @@ ROM_END -GAME( 1981, olibochu, 0, olibochu, olibochu, driver_device, 0, ROT270, "Irem / GDI", "Oli-Boo-Chu", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, olibochu, 0, olibochu, olibochu, olibochu_state, 0, ROT270, "Irem / GDI", "Oli-Boo-Chu", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/omegrace.cpp b/src/mame/drivers/omegrace.cpp index 4e6fc310fdd..14377dd571d 100644 --- a/src/mame/drivers/omegrace.cpp +++ b/src/mame/drivers/omegrace.cpp @@ -496,7 +496,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( omegrace, omegrace_state ) +static MACHINE_CONFIG_START( omegrace ) /* basic machine hardware */ diff --git a/src/mame/drivers/ondra.cpp b/src/mame/drivers/ondra.cpp index 40c7028d7e5..bd020405372 100644 --- a/src/mame/drivers/ondra.cpp +++ b/src/mame/drivers/ondra.cpp @@ -118,7 +118,7 @@ INTERRUPT_GEN_MEMBER(ondra_state::ondra_interrupt) } /* Machine driver */ -static MACHINE_CONFIG_START( ondra, ondra_state ) +static MACHINE_CONFIG_START( ondra ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2000000) MCFG_CPU_PROGRAM_MAP(ondra_mem) @@ -183,6 +183,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, ondrat, 0, 0, ondra, ondra, driver_device, 0, "Tesla", "Ondra", 0) -COMP( 1989, ondrav, ondrat, 0, ondra, ondra, driver_device, 0, "ViLi", "Ondra ViLi", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, ondrat, 0, 0, ondra, ondra, ondra_state, 0, "Tesla", "Ondra", 0 ) +COMP( 1989, ondrav, ondrat, 0, ondra, ondra, ondra_state, 0, "ViLi", "Ondra ViLi", 0 ) diff --git a/src/mame/drivers/oneshot.cpp b/src/mame/drivers/oneshot.cpp index 54cfc96b2a8..b2a6d832b90 100644 --- a/src/mame/drivers/oneshot.cpp +++ b/src/mame/drivers/oneshot.cpp @@ -4,6 +4,8 @@ Driver by David Haywood and Paul Priest Dip Switches and Inputs by stephh +Hardware identified by Tuning manual as "VISYS-Board(R) (Video-System-Board)" + Notes : - The YM3812 is used only for timing. All sound is played with ADPCM samples. @@ -283,21 +285,22 @@ static INPUT_PORTS_START( maddonna ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + // "Very important ! (Sehr WICHTIG) 4-Way Joystick !!!" (Tuning manual) PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START("P2") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) @@ -357,7 +360,7 @@ void oneshot_state::machine_reset() m_p2_wobble = 0; } -static MACHINE_CONFIG_START( oneshot, oneshot_state ) +static MACHINE_CONFIG_START( oneshot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -389,7 +392,7 @@ static MACHINE_CONFIG_START( oneshot, oneshot_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -491,6 +494,6 @@ ROM_END -GAME( 1995, maddonna, 0, maddonna, maddonna, driver_device, 0, ROT0, "Tuning", "Mad Donna (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, maddonnb, maddonna, maddonna, maddonna, driver_device, 0, ROT0, "Tuning", "Mad Donna (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, oneshot, 0, oneshot, oneshot , driver_device, 0, ROT0, "Promat", "One Shot One Kill", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, maddonna, 0, maddonna, maddonna, oneshot_state, 0, ROT0, "Tuning", "Mad Donna (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, maddonnb, maddonna, maddonna, maddonna, oneshot_state, 0, ROT0, "Tuning", "Mad Donna (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, oneshot, 0, oneshot, oneshot , oneshot_state, 0, ROT0, "Promat", "One Shot One Kill", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/onetwo.cpp b/src/mame/drivers/onetwo.cpp index bbd211588ac..eba79c8557a 100644 --- a/src/mame/drivers/onetwo.cpp +++ b/src/mame/drivers/onetwo.cpp @@ -355,7 +355,7 @@ void onetwo_state::machine_start() } -static MACHINE_CONFIG_START( onetwo, onetwo_state ) +static MACHINE_CONFIG_START( onetwo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MASTER_CLOCK) /* 4 MHz */ @@ -391,7 +391,7 @@ static MACHINE_CONFIG_START( onetwo, onetwo_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1056000*2, OKIM6295_PIN7_LOW) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000*2, PIN7_LOW) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -439,5 +439,5 @@ ROM_END * *************************************/ -GAME( 1997, onetwo, 0, onetwo, onetwo, driver_device, 0, ROT0, "Barko", "One + Two", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, onetwoe, onetwo, onetwo, onetwo, driver_device, 0, ROT0, "Barko", "One + Two (earlier)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, onetwo, 0, onetwo, onetwo, onetwo_state, 0, ROT0, "Barko", "One + Two", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, onetwoe, onetwo, onetwo, onetwo, onetwo_state, 0, ROT0, "Barko", "One + Two (earlier)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/onyx.cpp b/src/mame/drivers/onyx.cpp index d77d5f392eb..cb1bab9a754 100644 --- a/src/mame/drivers/onyx.cpp +++ b/src/mame/drivers/onyx.cpp @@ -46,7 +46,7 @@ public: } DECLARE_MACHINE_RESET(c8002); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(portff05_r); private: @@ -63,7 +63,7 @@ READ8_MEMBER( onyx_state::portff05_r ) return 4; } -WRITE8_MEMBER( onyx_state::kbd_put ) +void onyx_state::kbd_put(u8 data) { m_term_data = data; } @@ -111,7 +111,7 @@ ADDRESS_MAP_END ****************************************************************************/ -static MACHINE_CONFIG_START( c8002, onyx_state ) +static MACHINE_CONFIG_START( c8002 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z8002, XTAL_4MHz ) //MCFG_Z80_DAISY_CHAIN(main_daisy_chain) @@ -136,7 +136,7 @@ static MACHINE_CONFIG_START( c8002, onyx_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(onyx_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(onyx_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -165,5 +165,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, c8002, 0, 0, c8002, c8002, driver_device, 0, "Onyx", "C8002", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, c8002, 0, 0, c8002, c8002, onyx_state, 0, "Onyx", "C8002", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/opwolf.cpp b/src/mame/drivers/opwolf.cpp index 2041f3529a9..1d48b814a80 100644 --- a/src/mame/drivers/opwolf.cpp +++ b/src/mame/drivers/opwolf.cpp @@ -246,7 +246,7 @@ Stephh's notes (based on the game M68000 code and some tests) : * all reference to TAITO and "Operation Wolf" have been changed or "blanked" * "(c) 1988 BEAR CORPORATION KOREA" / "ALL RIGHTS RESERVED" * ROM check test "noped" (code at 0x00bb72) - - Notes on bootleg c-chip (similar to what is in machine/opwolf.c) : + - Notes on bootleg c-chip (similar to what is in machine/opwolf.cpp) : * always Engish language (thus the Dip Switch change to "Unused") * round 4 in "demo mode" instead of round 5 * "service" button doesn't add credits (it works in the "test mode" though) @@ -439,6 +439,8 @@ ADDRESS_MAP_END void opwolf_state::machine_start() { + m_opwolf_timer = timer_alloc(TIMER_OPWOLF); + save_item(NAME(m_sprite_ctrl)); save_item(NAME(m_sprites_flipscreen)); @@ -772,7 +774,7 @@ GFXDECODE_END MACHINE DRIVERS ***********************************************************/ -static MACHINE_CONFIG_START( opwolf, opwolf_state ) +static MACHINE_CONFIG_START( opwolf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz */ @@ -818,13 +820,13 @@ static MACHINE_CONFIG_START( opwolf, opwolf_state ) MCFG_SOUND_ADD("msm1", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(opwolf_state, opwolf_msm5205_vck_1)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) MCFG_SOUND_ADD("msm2", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(opwolf_state, opwolf_msm5205_vck_2)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) @@ -843,7 +845,7 @@ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( opwolfb, opwolf_state ) /* OSC clocks unknown for the bootleg, but changed to match original sets */ +static MACHINE_CONFIG_START( opwolfb ) /* OSC clocks unknown for the bootleg, but changed to match original sets */ /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK ) /* 8 MHz ??? */ @@ -892,13 +894,13 @@ static MACHINE_CONFIG_START( opwolfb, opwolf_state ) /* OSC clocks unknown for t MCFG_SOUND_ADD("msm1", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(opwolf_state, opwolf_msm5205_vck_1)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) MCFG_SOUND_ADD("msm2", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(opwolf_state, opwolf_msm5205_vck_2)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) @@ -1115,10 +1117,10 @@ DRIVER_INIT_MEMBER(opwolf_state,opwolfp) // MACHINE_IMPERFECT_SOUND is present because the credit sound appears to double trigger. All other sounds seem correct. -/* year rom parent machine inp init */ -GAME( 1987, opwolf, 0, opwolf, opwolf, opwolf_state, opwolf, ROT0, "Taito Corporation Japan", "Operation Wolf (World, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, opwolfa, opwolf, opwolf, opwolf, opwolf_state, opwolf, ROT0, "Taito Corporation Japan", "Operation Wolf (World, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, opwolfj, opwolf, opwolf, opwolfu, opwolf_state, opwolf, ROT0, "Taito Corporation", "Operation Wolf (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, opwolfu, opwolf, opwolf, opwolfu, opwolf_state, opwolf, ROT0, "Taito America Corporation", "Operation Wolf (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +// year rom parent machine inp state init +GAME( 1987, opwolf, 0, opwolf, opwolf, opwolf_state, opwolf, ROT0, "Taito Corporation Japan", "Operation Wolf (World, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, opwolfa, opwolf, opwolf, opwolf, opwolf_state, opwolf, ROT0, "Taito Corporation Japan", "Operation Wolf (World, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, opwolfj, opwolf, opwolf, opwolfu, opwolf_state, opwolf, ROT0, "Taito Corporation", "Operation Wolf (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, opwolfu, opwolf, opwolf, opwolfu, opwolf_state, opwolf, ROT0, "Taito America Corporation", "Operation Wolf (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1987, opwolfb, opwolf, opwolfb, opwolfb, opwolf_state, opwolfb, ROT0, "bootleg (Bear Corporation Korea)", "Operation Bear (bootleg of Operation Wolf)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, opwolfp, opwolf, opwolfp, opwolfp, opwolf_state, opwolfp, ROT0, "Taito Corporation", "Operation Wolf (Japan, prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // unprotected +GAME( 1987, opwolfp, opwolf, opwolfp, opwolfp, opwolf_state, opwolfp, ROT0, "Taito Corporation", "Operation Wolf (Japan, prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // unprotected diff --git a/src/mame/drivers/orao.cpp b/src/mame/drivers/orao.cpp index d2b27d8ab79..346c7017db2 100644 --- a/src/mame/drivers/orao.cpp +++ b/src/mame/drivers/orao.cpp @@ -169,7 +169,7 @@ static INPUT_PORTS_START( orao ) INPUT_PORTS_END /* Machine driver */ -static MACHINE_CONFIG_START( orao, orao_state ) +static MACHINE_CONFIG_START( orao ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1000000) MCFG_CPU_PROGRAM_MAP(orao_mem) @@ -215,6 +215,6 @@ ROM_START( orao103 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, orao, 0, 0, orao, orao, orao_state, orao, "PEL Varazdin", "Orao 102", 0) -COMP( 1985, orao103, orao, 0, orao, orao, orao_state, orao103, "PEL Varazdin", "Orao 103", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, orao, 0, 0, orao, orao, orao_state, orao, "PEL Varazdin", "Orao 102", 0 ) +COMP( 1985, orao103, orao, 0, orao, orao, orao_state, orao103, "PEL Varazdin", "Orao 103", 0 ) diff --git a/src/mame/drivers/orbit.cpp b/src/mame/drivers/orbit.cpp index 7cbf45b2308..fe05f93004f 100644 --- a/src/mame/drivers/orbit.cpp +++ b/src/mame/drivers/orbit.cpp @@ -291,7 +291,7 @@ void orbit_state::machine_reset() * *************************************/ -static MACHINE_CONFIG_START( orbit, orbit_state ) +static MACHINE_CONFIG_START( orbit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, MASTER_CLOCK / 16) @@ -365,4 +365,4 @@ ROM_END * *************************************/ -GAME( 1978, orbit, 0, orbit, orbit, driver_device, 0, 0, "Atari", "Orbit", MACHINE_SUPPORTS_SAVE ) +GAME( 1978, orbit, 0, orbit, orbit, orbit_state, 0, 0, "Atari", "Orbit", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/oric.cpp b/src/mame/drivers/oric.cpp index 05432a58d21..6808e9568b6 100644 --- a/src/mame/drivers/oric.cpp +++ b/src/mame/drivers/oric.cpp @@ -84,7 +84,7 @@ public: virtual void machine_start() override; virtual void video_start() override; uint32_t screen_update_oric(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void vblank_w(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(vblank_w); protected: required_device m_maincpu; @@ -162,7 +162,7 @@ protected: }; required_device m_via2; - required_device m_fdc; + required_device m_fdc; required_memory_region m_telmatic; required_memory_region m_teleass; required_memory_region m_hyperbas; @@ -197,7 +197,7 @@ The telestrat has the memory regions split into 16k blocks. Memory region &c000-&ffff can be ram or rom. */ static ADDRESS_MAP_START(telestrat_mem, AS_PROGRAM, 8, telestrat_state ) AM_RANGE( 0x0300, 0x030f) AM_DEVREADWRITE("via6522", via6522_device, read, write) - AM_RANGE( 0x0310, 0x0313) AM_DEVREADWRITE("fdc", fd1793_t, read, write) + AM_RANGE( 0x0310, 0x0313) AM_DEVREADWRITE("fdc", fd1793_device, read, write) AM_RANGE( 0x0314, 0x0314) AM_READWRITE(port_314_r, port_314_w) AM_RANGE( 0x0318, 0x0318) AM_READ(port_318_r) AM_RANGE( 0x031c, 0x031f) AM_DEVREADWRITE("acia", mos6551_device, read, write) @@ -362,7 +362,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(oric_state::update_tape) m_via->write_cb1(m_cassette->input() > 0.0038); } -void oric_state::vblank_w(screen_device &screen, bool state) +WRITE_LINE_MEMBER(oric_state::vblank_w) { if(m_config->read()) m_via->write_cb1(state); @@ -766,7 +766,7 @@ static INPUT_PORTS_START(telstrat) INPUT_PORTS_END -static MACHINE_CONFIG_START( oric, oric_state ) +static MACHINE_CONFIG_START( oric ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12MHz/12) MCFG_CPU_PROGRAM_MAP(oric_mem) @@ -779,7 +779,7 @@ static MACHINE_CONFIG_START( oric, oric_state ) MCFG_SCREEN_SIZE(40*6, 28*8) MCFG_SCREEN_VISIBLE_AREA(0, 40*6-1, 0, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(oric_state, screen_update_oric) - MCFG_SCREEN_VBLANK_DRIVER(oric_state, vblank_w) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(oric_state, vblank_w)) MCFG_PALETTE_ADD_3BIT_RGB("palette") @@ -828,7 +828,7 @@ static SLOT_INTERFACE_START( telestrat_floppies ) SLOT_INTERFACE( "3dsdd", FLOPPY_3_DSDD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_DERIVED_CLASS( telstrat, oric, telestrat_state ) +static MACHINE_CONFIG_DERIVED( telstrat, oric ) MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_PROGRAM_MAP(telestrat_mem) @@ -953,9 +953,9 @@ ROM_START(prav8dd) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1983, oric1, 0, 0, oric, oric, driver_device, 0, "Tangerine", "Oric 1" , 0) -COMP( 1984, orica, oric1, 0, oric, orica, driver_device, 0, "Tangerine", "Oric Atmos" , 0) -COMP( 1985, prav8d, oric1, 0, prav8d, prav8d, driver_device, 0, "Pravetz", "Pravetz 8D", 0) -COMP( 1989, prav8dd, oric1, 0, prav8d, prav8d, driver_device, 0, "Pravetz", "Pravetz 8D (Disk ROM)", MACHINE_UNOFFICIAL) -COMP( 1986, telstrat, oric1, 0, telstrat, telstrat, driver_device, 0, "Tangerine", "Oric Telestrat", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, oric1, 0, 0, oric, oric, oric_state, 0, "Tangerine", "Oric 1" , 0 ) +COMP( 1984, orica, oric1, 0, oric, orica, oric_state, 0, "Tangerine", "Oric Atmos" , 0 ) +COMP( 1985, prav8d, oric1, 0, prav8d, prav8d, oric_state, 0, "Pravetz", "Pravetz 8D", 0 ) +COMP( 1989, prav8dd, oric1, 0, prav8d, prav8d, oric_state, 0, "Pravetz", "Pravetz 8D (Disk ROM)", MACHINE_UNOFFICIAL ) +COMP( 1986, telstrat, oric1, 0, telstrat, telstrat, telestrat_state, 0, "Tangerine", "Oric Telestrat", 0 ) diff --git a/src/mame/drivers/orion.cpp b/src/mame/drivers/orion.cpp index 15e2e5947e9..1655b9a63e3 100644 --- a/src/mame/drivers/orion.cpp +++ b/src/mame/drivers/orion.cpp @@ -85,7 +85,7 @@ static SLOT_INTERFACE_START( orion_floppies ) SLOT_INTERFACE_END /* Machine driver */ -static MACHINE_CONFIG_START( orion128, orion_state ) +static MACHINE_CONFIG_START( orion128 ) MCFG_CPU_ADD("maincpu", I8080, 2000000) MCFG_CPU_PROGRAM_MAP(orion128_mem) MCFG_CPU_IO_MAP(orion128_io) @@ -157,7 +157,7 @@ static MACHINE_CONFIG_DERIVED( orion128ms, orion128 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( orionz80, orion_state ) +static MACHINE_CONFIG_START( orionz80 ) MCFG_CPU_ADD("maincpu", Z80, 2500000) MCFG_CPU_PROGRAM_MAP(orionz80_mem) MCFG_CPU_IO_MAP(orionz80_io) @@ -236,7 +236,7 @@ static MACHINE_CONFIG_DERIVED( orionz80ms, orionz80 ) MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( orionpro, orion_state ) +static MACHINE_CONFIG_START( orionpro ) MCFG_CPU_ADD("maincpu", Z80, 5000000) MCFG_CPU_PROGRAM_MAP(orionpro_mem) MCFG_CPU_IO_MAP(orionpro_io) @@ -368,11 +368,11 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1990, orion128, 0, 0, orion128, radio86, driver_device, 0, "", "Orion 128", 0) -COMP( 1990, orionms, orion128, 0, orion128ms, ms7007, driver_device, 0, "", "Orion 128 (MS7007)", 0) -COMP( 1990, orionz80, orion128, 0, orionz80, radio86, driver_device, 0, "", "Orion 128 + Z80 Card II", 0) -COMP( 1990, orionide, orion128, 0, orionz80, radio86, driver_device, 0, "", "Orion 128 + Z80 Card II + IDE", 0) -COMP( 1990, orionzms, orion128, 0, orionz80ms, ms7007, driver_device, 0, "", "Orion 128 + Z80 Card II (MS7007)", 0) -COMP( 1990, orionidm, orion128, 0, orionz80ms, ms7007, driver_device, 0, "", "Orion 128 + Z80 Card II + IDE (MS7007)", 0) -COMP( 1994, orionpro, orion128, 0, orionpro, radio86, driver_device, 0, "", "Orion Pro", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1990, orion128, 0, 0, orion128, radio86, orion_state, 0, "", "Orion 128", 0 ) +COMP( 1990, orionms, orion128, 0, orion128ms, ms7007, orion_state, 0, "", "Orion 128 (MS7007)", 0 ) +COMP( 1990, orionz80, orion128, 0, orionz80, radio86, orion_state, 0, "", "Orion 128 + Z80 Card II", 0 ) +COMP( 1990, orionide, orion128, 0, orionz80, radio86, orion_state, 0, "", "Orion 128 + Z80 Card II + IDE", 0 ) +COMP( 1990, orionzms, orion128, 0, orionz80ms, ms7007, orion_state, 0, "", "Orion 128 + Z80 Card II (MS7007)", 0 ) +COMP( 1990, orionidm, orion128, 0, orionz80ms, ms7007, orion_state, 0, "", "Orion 128 + Z80 Card II + IDE (MS7007)", 0 ) +COMP( 1994, orionpro, orion128, 0, orionpro, radio86, orion_state, 0, "", "Orion Pro", 0 ) diff --git a/src/mame/drivers/osbexec.cpp b/src/mame/drivers/osbexec.cpp index 6adf765ef59..fad52267053 100644 --- a/src/mame/drivers/osbexec.cpp +++ b/src/mame/drivers/osbexec.cpp @@ -8,6 +8,7 @@ #include "emu.h" +#include "bus/rs232/rs232.h" #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" #include "machine/6821pia.h" @@ -23,7 +24,10 @@ #include "speaker.h" -#define MAIN_CLOCK 23961600 +#define MAIN_CLOCK XTAL_23_9616MHz + +#define MODEM_PORT_TAG "modem" +#define PRINTER_PORT_TAG "printer" class osbexec_state : public driver_device @@ -43,7 +47,7 @@ public: { } required_device m_maincpu; - required_device m_mb8877; + required_device m_mb8877; required_device m_messram; required_device m_pia_0; required_device m_pia_1; @@ -117,8 +121,11 @@ public: DECLARE_WRITE8_MEMBER(osbexec_pia0_b_w); DECLARE_WRITE_LINE_MEMBER(osbexec_pia0_ca2_w); DECLARE_WRITE_LINE_MEMBER(osbexec_pia0_cb2_w); - DECLARE_WRITE_LINE_MEMBER(osbexec_pia0_irq); - DECLARE_WRITE_LINE_MEMBER(osbexec_pia1_irq); + DECLARE_WRITE_LINE_MEMBER(modem_txclk_w); + DECLARE_WRITE_LINE_MEMBER(modem_rxclk_w); + DECLARE_WRITE_LINE_MEMBER(modem_dsr_w); + DECLARE_WRITE_LINE_MEMBER(modem_ri_w); + DECLARE_WRITE_LINE_MEMBER(comm_clk_a_w); }; @@ -211,12 +218,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( osbexec_io, AS_IO, 8, osbexec_state ) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x00, 0x03 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read, write) /* 6821 PIA @ UD12 */ - /* 0x04 - 0x07 - 8253 @UD1 */ - AM_RANGE( 0x08, 0x0B ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("mb8877", wd_fdc_t, read, write ) /* MB8877 @ UB17 input clock = 1MHz */ - AM_RANGE( 0x0C, 0x0F ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("sio", z80sio2_device, ba_cd_r, ba_cd_w ) /* SIO @ UD4 */ - AM_RANGE( 0x10, 0x13 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE( "pia_1", pia6821_device, read, write) /* 6821 PIA @ UD8 */ - AM_RANGE( 0x14, 0x17 ) AM_SELECT( 0xff00 ) AM_READ(osbexec_kbd_r ) /* KBD */ + AM_RANGE( 0x00, 0x03 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read, write) /* 6821 PIA @ UD12 */ + AM_RANGE( 0x04, 0x07 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("ctc", pit8253_device, read, write) /* 8253 @UD1 */ + AM_RANGE( 0x08, 0x0B ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("mb8877", wd_fdc_device_base, read, write ) /* MB8877 @ UB17 input clock = 1MHz */ + AM_RANGE( 0x0C, 0x0F ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("sio", z80sio2_device, ba_cd_r, ba_cd_w ) /* SIO @ UD4 */ + AM_RANGE( 0x10, 0x13 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE( "pia_1", pia6821_device, read, write) /* 6821 PIA @ UD8 */ + AM_RANGE( 0x14, 0x17 ) AM_SELECT( 0xff00 ) AM_READ(osbexec_kbd_r ) /* KBD */ AM_RANGE( 0x18, 0x1b ) AM_MIRROR( 0xff00 ) AM_READ(osbexec_rtc_r ) /* "RTC" @ UE13/UF13 */ /* ?? - vid ? */ ADDRESS_MAP_END @@ -354,7 +361,7 @@ READ8_MEMBER(osbexec_state::osbexec_pia0_a_r) WRITE8_MEMBER(osbexec_state::osbexec_pia0_a_w) { - logerror("osbexec_pia0_a_w: %02x\n", data ); + //logerror("osbexec_pia0_a_w: %02x\n", data ); m_pia0_porta = data; @@ -370,7 +377,7 @@ READ8_MEMBER(osbexec_state::osbexec_pia0_b_r) WRITE8_MEMBER(osbexec_state::osbexec_pia0_b_w) { - m_pia0_portb = data; + m_pia0_portb = (m_pia0_portb & 0xc0) | (data & 0x3f); m_speaker->level_w(!BIT(data, 3)); @@ -405,6 +412,46 @@ WRITE_LINE_MEMBER(osbexec_state::osbexec_pia0_cb2_w) } +WRITE_LINE_MEMBER(osbexec_state::modem_txclk_w) +{ + if (BIT(m_pia0_portb, 5)) + m_sio->txca_w(!state); +} + + +WRITE_LINE_MEMBER(osbexec_state::modem_rxclk_w) +{ + if (BIT(m_pia0_portb, 4)) + m_sio->rxca_w(!state); +} + + +WRITE_LINE_MEMBER(osbexec_state::modem_dsr_w) +{ + m_pia0_portb &= 0xbf; + if (!state) + m_pia0_portb |= 0x40; +} + + +WRITE_LINE_MEMBER(osbexec_state::modem_ri_w) +{ + m_pia0_portb &= 0x7f; + if (!state) + m_pia0_portb |= 0x80; +} + + +WRITE_LINE_MEMBER(osbexec_state::comm_clk_a_w) +{ + //if (!BIT(m_pia0_portb, 5)) + m_sio->txca_w(state); + //if (!BIT(m_pia0_portb, 4)) + m_sio->rxca_w(state); + //m_modem->txclk_w(!state); +} + + /* * The Osborne Executive supports the following disc formats: (TODO: Verify) * - Osborne single density: 40 tracks, 10 sectors per track, 256-byte sectors (100 KByte) @@ -498,7 +545,7 @@ void osbexec_state::machine_reset() m_rtc = 0; - // D0 cleared on interrupt acknowledge cycle by a few TTL gates + // D0 cleared on interrupt acknowledge cycle by TTL gates at UC21 and UA18 m_maincpu->set_input_line_vector(0, 0xfe); } @@ -510,7 +557,7 @@ static const z80_daisy_config osbexec_daisy_config[] = }; -static MACHINE_CONFIG_START( osbexec, osbexec_state ) +static MACHINE_CONFIG_START( osbexec ) MCFG_CPU_ADD( "maincpu", Z80, MAIN_CLOCK/6 ) MCFG_CPU_PROGRAM_MAP( osbexec_mem) MCFG_CPU_IO_MAP( osbexec_io) @@ -526,8 +573,6 @@ static MACHINE_CONFIG_START( osbexec, osbexec_state ) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 ) -// MCFG_PIT8253_ADD("pit", osbexec_pit_config) - MCFG_DEVICE_ADD("pia_0", PIA6821, 0) MCFG_PIA_READPA_HANDLER(READ8(osbexec_state, osbexec_pia0_a_r)) MCFG_PIA_READPB_HANDLER(READ8(osbexec_state, osbexec_pia0_b_r)) @@ -546,6 +591,33 @@ static MACHINE_CONFIG_START( osbexec, osbexec_state ) MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", 0)) MCFG_Z80SIO2_ADD("sio", MAIN_CLOCK/6, 0, 0, 0, 0) + MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE(MODEM_PORT_TAG, rs232_port_device, write_txd)) MCFG_DEVCB_INVERT + MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE(MODEM_PORT_TAG, rs232_port_device, write_dtr)) MCFG_DEVCB_INVERT + MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE(MODEM_PORT_TAG, rs232_port_device, write_rts)) MCFG_DEVCB_INVERT + MCFG_Z80DART_OUT_TXDB_CB(DEVWRITELINE(PRINTER_PORT_TAG, rs232_port_device, write_txd)) MCFG_DEVCB_INVERT + MCFG_Z80DART_OUT_DTRB_CB(DEVWRITELINE(PRINTER_PORT_TAG, rs232_port_device, write_dtr)) MCFG_DEVCB_INVERT + MCFG_Z80DART_OUT_RTSB_CB(DEVWRITELINE(PRINTER_PORT_TAG, rs232_port_device, write_rts)) MCFG_DEVCB_INVERT + MCFG_Z80DART_OUT_INT_CB(DEVWRITELINE("mainirq", input_merger_device, in2_w)) + + MCFG_DEVICE_ADD("ctc", PIT8253, 0) + MCFG_PIT8253_CLK0(MAIN_CLOCK / 13) // divided by 74S161 @ UC25 + MCFG_PIT8253_CLK1(MAIN_CLOCK / 13) // divided by 74S161 @ UC25 + MCFG_PIT8253_CLK2(MAIN_CLOCK / 12) + MCFG_PIT8253_OUT0_HANDLER(WRITELINE(osbexec_state, comm_clk_a_w)) + MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("sio", z80sio2_device, rxtxcb_w)) + //MCFG_PIT8253_OUT2_HANDLER(WRITELINE(osbexec_state, spindle_clk_w)) + + MCFG_RS232_PORT_ADD(MODEM_PORT_TAG, default_rs232_devices, nullptr) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio", z80sio2_device, rxa_w)) MCFG_DEVCB_INVERT + MCFG_RS232_DCD_HANDLER(DEVWRITELINE("sio", z80sio2_device, dcda_w)) MCFG_DEVCB_INVERT + MCFG_RS232_DSR_HANDLER(WRITELINE(osbexec_state, modem_dsr_w)) + MCFG_RS232_RI_HANDLER(WRITELINE(osbexec_state, modem_ri_w)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio", z80sio2_device, ctsa_w)) MCFG_DEVCB_INVERT + + MCFG_RS232_PORT_ADD(PRINTER_PORT_TAG, default_rs232_devices, nullptr) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio", z80sio2_device, rxb_w)) MCFG_DEVCB_INVERT + MCFG_RS232_DCD_HANDLER(DEVWRITELINE("sio", z80sio2_device, dcdb_w)) MCFG_DEVCB_INVERT + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio", z80sio2_device, ctsb_w)) MCFG_DEVCB_INVERT MCFG_DEVICE_ADD("mb8877", MB8877, MAIN_CLOCK/24) MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE("pia_1", pia6821_device, cb1_w)) @@ -566,5 +638,5 @@ ROM_START( osbexec ) ROM_LOAD( "execv12.ud18", 0x0000, 0x2000, CRC(70798c2f) SHA1(2145a72da563bed1d6d455c77e48cc011a5f1153) ) /* Checksum C6B2 */ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, osbexec, 0, 0, osbexec, osbexec, osbexec_state, osbexec, "Osborne", "Executive", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, osbexec, 0, 0, osbexec, osbexec, osbexec_state, osbexec, "Osborne", "Executive", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/osborne1.cpp b/src/mame/drivers/osborne1.cpp index 43e5c995e5d..ff62f099c78 100644 --- a/src/mame/drivers/osborne1.cpp +++ b/src/mame/drivers/osborne1.cpp @@ -279,7 +279,7 @@ static GFXDECODE_START( osborne1 ) GFXDECODE_END -static MACHINE_CONFIG_START( osborne1, osborne1_state ) +static MACHINE_CONFIG_START( osborne1 ) MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK/4) MCFG_CPU_PROGRAM_MAP(osborne1_mem) MCFG_CPU_DECRYPTED_OPCODES_MAP(osborne1_op) @@ -338,7 +338,7 @@ static MACHINE_CONFIG_START( osborne1, osborne1_state ) MCFG_SOFTWARE_LIST_ADD("flop_list","osborne1") MACHINE_CONFIG_END -MACHINE_CONFIG_DERIVED_CLASS( osborne1nv, osborne1, osborne1nv_state ) +MACHINE_CONFIG_DERIVED( osborne1nv, osborne1 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(osborne1nv_io) @@ -387,6 +387,6 @@ ROM_START( osborne1nv ) ROM_LOAD( "character_generator_6-29-84.14", 0x0000, 0x800, CRC(6c1eab0d) SHA1(b04459d377a70abc9155a5486003cb795342c801) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, osborne1, 0, 0, osborne1, osborne1, osborne1_state, osborne1, "Osborne", "Osborne-1", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, osborne1nv, osborne1, 0, osborne1nv, osborne1nv, osborne1_state, osborne1, "Osborne/Nuevo", "Osborne-1 (Nuevo Video)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, osborne1, 0, 0, osborne1, osborne1, osborne1_state, osborne1, "Osborne", "Osborne-1", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, osborne1nv, osborne1, 0, osborne1nv, osborne1nv, osborne1nv_state, osborne1, "Osborne/Nuevo", "Osborne-1 (Nuevo Video)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/osi.cpp b/src/mame/drivers/osi.cpp index 92d96939619..08ca2ec45db 100644 --- a/src/mame/drivers/osi.cpp +++ b/src/mame/drivers/osi.cpp @@ -711,7 +711,7 @@ GFXDECODE_END /* Machine Drivers */ -static MACHINE_CONFIG_START( osi600, sb2m600_state ) +static MACHINE_CONFIG_START( osi600 ) /* basic machine hardware */ MCFG_CPU_ADD(M6502_TAG, M6502, X1/4) // .98304 MHz MCFG_CPU_PROGRAM_MAP(osi600_mem) @@ -742,7 +742,7 @@ static MACHINE_CONFIG_START( osi600, sb2m600_state ) MCFG_RAM_EXTRA_OPTIONS("8K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( uk101, uk101_state ) +static MACHINE_CONFIG_START( uk101 ) /* basic machine hardware */ MCFG_CPU_ADD(M6502_TAG, M6502, UK101_X1/8) // 1 MHz MCFG_CPU_PROGRAM_MAP(uk101_mem) @@ -767,7 +767,7 @@ static MACHINE_CONFIG_START( uk101, uk101_state ) MCFG_RAM_EXTRA_OPTIONS("8K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( c1p, c1p_state ) +static MACHINE_CONFIG_START( c1p ) /* basic machine hardware */ MCFG_CPU_ADD(M6502_TAG, M6502, X1/4) // .98304 MHz MCFG_CPU_PROGRAM_MAP(c1p_mem) @@ -804,7 +804,7 @@ static MACHINE_CONFIG_START( c1p, c1p_state ) MCFG_RAM_EXTRA_OPTIONS("20K") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( c1pmf, c1p, c1pmf_state ) +static MACHINE_CONFIG_DERIVED( c1pmf, c1p ) MCFG_CPU_MODIFY(M6502_TAG) MCFG_CPU_PROGRAM_MAP(c1pmf_mem) @@ -893,9 +893,9 @@ DRIVER_INIT_MEMBER(c1p_state,c1p) /* System Drivers */ -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME -COMP( 1978, sb2m600b, 0, 0, osi600, osi600, driver_device, 0, "Ohio Scientific", "Superboard II Model 600 (Rev. B)", MACHINE_NOT_WORKING) -//COMP( 1980, sb2m600c, 0, 0, osi600c, osi600, driver_device, 0, "Ohio Scientific", "Superboard II Model 600 (Rev. C)", MACHINE_NOT_WORKING) -COMP( 1980, c1p, sb2m600b, 0, c1p, osi600, c1p_state, c1p, "Ohio Scientific", "Challenger 1P Series 2", MACHINE_NOT_WORKING) -COMP( 1980, c1pmf, sb2m600b, 0, c1pmf, osi600, c1p_state, c1p, "Ohio Scientific", "Challenger 1P MF Series 2", MACHINE_NOT_WORKING) -COMP( 1979, uk101, sb2m600b, 0, uk101, uk101, driver_device, 0, "Compukit", "UK101", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1978, sb2m600b, 0, 0, osi600, osi600, sb2m600_state, 0, "Ohio Scientific", "Superboard II Model 600 (Rev. B)", MACHINE_NOT_WORKING) +//COMP( 1980, sb2m600c, 0, 0, osi600c, osi600, sb2m600_state, 0, "Ohio Scientific", "Superboard II Model 600 (Rev. C)", MACHINE_NOT_WORKING) +COMP( 1980, c1p, sb2m600b, 0, c1p, osi600, c1p_state, c1p, "Ohio Scientific", "Challenger 1P Series 2", MACHINE_NOT_WORKING) +COMP( 1980, c1pmf, sb2m600b, 0, c1pmf, osi600, c1pmf_state, c1p, "Ohio Scientific", "Challenger 1P MF Series 2", MACHINE_NOT_WORKING) +COMP( 1979, uk101, sb2m600b, 0, uk101, uk101, uk101_state, 0, "Compukit", "UK101", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/othello.cpp b/src/mame/drivers/othello.cpp index f3255e3d740..fa289e6b08d 100644 --- a/src/mame/drivers/othello.cpp +++ b/src/mame/drivers/othello.cpp @@ -106,7 +106,6 @@ public: DECLARE_WRITE8_MEMBER(ay_data_w); DECLARE_READ8_MEMBER(n7751_rom_r); DECLARE_READ8_MEMBER(n7751_command_r); - DECLARE_READ8_MEMBER(n7751_t1_r); DECLARE_WRITE8_MEMBER(n7751_p2_w); DECLARE_WRITE8_MEMBER(n7751_rom_control_w); virtual void machine_start() override; @@ -314,28 +313,13 @@ WRITE8_MEMBER(othello_state::n7751_p2_w) i8243_device *device = machine().device("n7751_8243"); /* write to P2; low 4 bits go to 8243 */ - device->i8243_p2_w(space, offset, data & 0x0f); + device->p2_w(space, offset, data & 0x0f); /* output of bit $80 indicates we are ready (1) or busy (0) */ /* no other outputs are used */ m_n7751_busy = data; } -READ8_MEMBER(othello_state::n7751_t1_r) -{ - /* T1 - labelled as "TEST", connected to ground */ - return 0; -} - -static ADDRESS_MAP_START( n7751_portmap, AS_IO, 8, othello_state ) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(n7751_t1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(n7751_command_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(n7751_rom_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(n7751_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("n7751_8243", i8243_device, i8243_prog_w) -ADDRESS_MAP_END - static INPUT_PORTS_START( othello ) PORT_START("DSW") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:1") @@ -405,7 +389,7 @@ void othello_state::machine_reset() m_n7751_busy = 0; } -static MACHINE_CONFIG_START( othello, othello_state ) +static MACHINE_CONFIG_START( othello ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,XTAL_8MHz/2) @@ -418,7 +402,12 @@ static MACHINE_CONFIG_START( othello, othello_state ) MCFG_CPU_IO_MAP(audio_portmap) MCFG_CPU_ADD("n7751", N7751, XTAL_6MHz) - MCFG_CPU_IO_MAP(n7751_portmap) + MCFG_MCS48_PORT_T1_IN_CB(GND) // labelled as "TEST", connected to ground + MCFG_MCS48_PORT_P2_IN_CB(READ8(othello_state, n7751_command_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(othello_state, n7751_rom_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(othello_state, n7751_p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("n7751_8243", i8243_device, prog_w)) MCFG_I8243_ADD("n7751_8243", NOOP, WRITE8(othello_state,n7751_rom_control_w)) @@ -475,4 +464,4 @@ ROM_START( othello ) ROM_LOAD( "7.ic42", 0x4000, 0x2000, CRC(a76705f7) SHA1(b7d2a65d65d065732ddd0b3b738749369b382b48)) ROM_END -GAME( 1984, othello, 0, othello, othello, driver_device, 0, ROT0, "Success", "Othello (version 3.0)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, othello, 0, othello, othello, othello_state, 0, ROT0, "Success", "Othello (version 3.0)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/othunder.cpp b/src/mame/drivers/othunder.cpp index 8efd0b53ac8..ee6c08facd2 100644 --- a/src/mame/drivers/othunder.cpp +++ b/src/mame/drivers/othunder.cpp @@ -423,7 +423,7 @@ WRITE16_MEMBER(othunder_state::othunder_lightgun_w) The ADC60808 clock is 512kHz. Conversion takes between 0 and 8 clock cycles, so would end in a maximum of 15.625us. We'll use 10. */ - timer_set(attotime::from_usec(10), TIMER_AD_INTERRUPT); + m_ad_interrupt_timer->adjust(attotime::from_usec(10)); } @@ -662,6 +662,8 @@ void othunder_state::machine_start() { membank("z80bank")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x4000); + m_ad_interrupt_timer = timer_alloc(TIMER_AD_INTERRUPT); + save_item(NAME(m_vblank_irq)); save_item(NAME(m_ad_irq)); save_item(NAME(m_pan)); @@ -673,7 +675,7 @@ void othunder_state::machine_reset() m_ad_irq = 0; } -static MACHINE_CONFIG_START( othunder, othunder_state ) +static MACHINE_CONFIG_START( othunder ) /* basic machine hardware */ // MCFG_CPU_ADD("maincpu", M68000, 24000000/2 ) /* 12 MHz */ @@ -944,8 +946,8 @@ ROM_END -GAME( 1988, othunder, 0, othunder, othunder, driver_device, 0, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Operation Thunderbolt (World, rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, othundero, othunder, othunder, othunder, driver_device, 0, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Operation Thunderbolt (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, othunderu, othunder, othunder, othundu, driver_device, 0, ORIENTATION_FLIP_X, "Taito America Corporation", "Operation Thunderbolt (US, rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, othunderuo, othunder, othunder, othundu, driver_device, 0, ORIENTATION_FLIP_X, "Taito America Corporation", "Operation Thunderbolt (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, othunderj, othunder, othunder, othundrj, driver_device, 0, ORIENTATION_FLIP_X, "Taito Corporation", "Operation Thunderbolt (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, othunder, 0, othunder, othunder, othunder_state, 0, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Operation Thunderbolt (World, rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, othundero, othunder, othunder, othunder, othunder_state, 0, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Operation Thunderbolt (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, othunderu, othunder, othunder, othundu, othunder_state, 0, ORIENTATION_FLIP_X, "Taito America Corporation", "Operation Thunderbolt (US, rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, othunderuo, othunder, othunder, othundu, othunder_state, 0, ORIENTATION_FLIP_X, "Taito America Corporation", "Operation Thunderbolt (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, othunderj, othunder, othunder, othundrj, othunder_state, 0, ORIENTATION_FLIP_X, "Taito Corporation", "Operation Thunderbolt (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/otomedius.cpp b/src/mame/drivers/otomedius.cpp new file mode 100644 index 00000000000..f922f73f660 --- /dev/null +++ b/src/mame/drivers/otomedius.cpp @@ -0,0 +1,97 @@ +// license:BSD-3-Clause +// copyright-holders:R. Belmont +/* + otomedius.cpp: Konami Otomedius (and maybe related Konami PC-based stuff) + + Skeleton by R. Belmont + + Hardware for Otomedius: + - Intel Socket 478 Celeron CPU, 2.5 GHz, S-Spec "SL6ZY" + More info: http://www.cpu-world.com/sspec/SL/SL6ZY.html + - Intel 82865G northbridge + - Intel 82801EB southbridge / "ICH5" Super I/O + - 512MB of system RAM + - ATI-branded Radeon 9600XT AGP video card with 128 MB of VRAM + - Konami protection dongle marked "GEGGG JA-B" +*/ + +#include "emu.h" +#include "cpu/i386/i386.h" +#include "screen.h" + +class konami_pc_state : public driver_device +{ +public: + konami_pc_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { } + + required_device m_maincpu; + + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + uint32_t screen_update_konami_pc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); +}; + +void konami_pc_state::video_start() +{ +} + +uint32_t konami_pc_state::screen_update_konami_pc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +static ADDRESS_MAP_START( konami_pc_map, AS_PROGRAM, 32, konami_pc_state ) + AM_RANGE(0x00000000, 0x0009ffff) AM_RAM + AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0x70000) + AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) +ADDRESS_MAP_END + +static INPUT_PORTS_START( konami_pc ) +INPUT_PORTS_END + + +void konami_pc_state::machine_start() +{ +} + +void konami_pc_state::machine_reset() +{ +} + +static MACHINE_CONFIG_START( konami_pc ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", PENTIUM3, 100000000) // not correct, but why bother? + MCFG_CPU_PROGRAM_MAP(konami_pc_map) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(640, 480) + MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) + MCFG_SCREEN_UPDATE_DRIVER(konami_pc_state, screen_update_konami_pc) +MACHINE_CONFIG_END + +/*************************************************************************** + + Game drivers + +***************************************************************************/ + +ROM_START( otomedius ) + ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "sst49fl004b.u18", 0x000000, 0x080000, CRC(bb9f4e3e) SHA1(95b393a38a5eded3204debfe7a88cc7ea15adf9a) ) + + ROM_REGION( 0x10000, "vbios", 0 ) // video card BIOS + ROM_LOAD( "ati.9600xt.128.samsung.031113.rom", 0x000000, 0x00d000, CRC(020ec211) SHA1(3860c980106f00e5259ecd8d4cd2f9b3fca2428a) ) + + DISK_REGION( "ide:0:hdd:image" ) // Seagate ST340015A 40GB PATA drive + DISK_IMAGE( "otomedius", 0, SHA1(9283f8b7cd747be7b8e7321953adbf6cbe926f25) ) +ROM_END + +GAME( 2007, otomedius, 0, konami_pc, konami_pc, konami_pc_state, 0, ROT0, "Konami", "Otomedius (ver GGG:J:A:A:2008041801)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index f0fd002521e..7d285d56619 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -216,7 +216,7 @@ TIMER_CALLBACK_MEMBER(overdriv_state::objdma_end_cb ) WRITE16_MEMBER(overdriv_state::objdma_w) { if(data & 0x10) - machine().scheduler().timer_set(attotime::from_usec(100), timer_expired_delegate(FUNC(overdriv_state::objdma_end_cb), this)); + m_objdma_end_timer->adjust(attotime::from_usec(100)); m_k053246->k053246_w(space,5,data,mem_mask); } @@ -296,6 +296,8 @@ INPUT_PORTS_END void overdriv_state::machine_start() { + m_objdma_end_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(overdriv_state::objdma_end_cb), this)); + save_item(NAME(m_cpuB_ctrl)); save_item(NAME(m_sprite_colorbase)); save_item(NAME(m_zoom_colorbase)); @@ -317,7 +319,7 @@ void overdriv_state::machine_reset() } -static MACHINE_CONFIG_START( overdriv, overdriv_state ) +static MACHINE_CONFIG_START( overdriv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -513,6 +515,6 @@ ROM_START( overdrivb ) ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) ) ROM_END -GAMEL( 1990, overdriv, 0, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // US version -GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas? -GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas? +GAMEL( 1990, overdriv, 0, overdriv, overdriv, overdriv_state, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // US version +GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, overdriv_state, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas? +GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, overdriv_state, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas? diff --git a/src/mame/drivers/p112.cpp b/src/mame/drivers/p112.cpp index 3707ce10c70..12d94156f32 100644 --- a/src/mame/drivers/p112.cpp +++ b/src/mame/drivers/p112.cpp @@ -81,7 +81,7 @@ uint32_t p112_state::screen_update_p112(screen_device &screen, bitmap_ind16 &bit return 0; } -static MACHINE_CONFIG_START( p112, p112_state ) +static MACHINE_CONFIG_START( p112 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z180, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(p112_mem) @@ -125,5 +125,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1996, p112, 0, 0, p112, p112, driver_device, 0, "Dave Brooks", "P112", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1996, p112, 0, 0, p112, p112, p112_state, 0, "Dave Brooks", "P112", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/p2000t.cpp b/src/mame/drivers/p2000t.cpp index 0472d3dbe44..25f960fcd95 100644 --- a/src/mame/drivers/p2000t.cpp +++ b/src/mame/drivers/p2000t.cpp @@ -219,7 +219,7 @@ READ8_MEMBER( p2000t_state::videoram_r ) } /* Machine definition */ -static MACHINE_CONFIG_START( p2000t, p2000t_state ) +static MACHINE_CONFIG_START( p2000t ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2500000) MCFG_CPU_PROGRAM_MAP(p2000t_mem) @@ -246,7 +246,7 @@ MACHINE_CONFIG_END /* Machine definition */ -static MACHINE_CONFIG_START( p2000m, p2000t_state ) +static MACHINE_CONFIG_START( p2000m ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2500000) MCFG_CPU_PROGRAM_MAP(p2000m_mem) @@ -290,6 +290,6 @@ ROM_START(p2000m) ROM_LOAD("p2000.chr", 0x0140, 0x08c0, BAD_DUMP CRC(78c17e3e) SHA1(4e1c59dc484505de1dc0b1ba7e5f70a54b0d4ccc)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP ( 1980, p2000t, 0, 0, p2000t, p2000t, driver_device, 0, "Philips", "Philips P2000T", 0) -COMP ( 1980, p2000m, p2000t, 0, p2000m, p2000t, driver_device, 0, "Philips", "Philips P2000M", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP ( 1980, p2000t, 0, 0, p2000t, p2000t, p2000t_state, 0, "Philips", "Philips P2000T", 0 ) +COMP ( 1980, p2000m, p2000t, 0, p2000m, p2000t, p2000t_state, 0, "Philips", "Philips P2000M", 0 ) diff --git a/src/mame/drivers/p8k.cpp b/src/mame/drivers/p8k.cpp index 11735b65f05..ddb3cbd0588 100644 --- a/src/mame/drivers/p8k.cpp +++ b/src/mame/drivers/p8k.cpp @@ -79,8 +79,8 @@ public: DECLARE_WRITE8_MEMBER(p8k_port24_w); DECLARE_READ16_MEMBER(portff82_r); DECLARE_WRITE16_MEMBER(portff82_w); - DECLARE_WRITE8_MEMBER(kbd_put); - DECLARE_WRITE8_MEMBER(kbd_put_16); + void kbd_put(u8 data); + void kbd_put_16(u8 data); uint8_t m_term_data; required_device m_maincpu; required_device m_terminal; @@ -189,7 +189,7 @@ WRITE8_MEMBER( p8k_state::p8k_port24_w ) m_terminal->write(space, 0, data); } -WRITE8_MEMBER( p8k_state::kbd_put ) +void p8k_state::kbd_put(u8 data) { address_space &mem = m_maincpu->space(AS_PROGRAM); m_term_data = data; @@ -342,7 +342,7 @@ DRIVER_INIT_MEMBER(p8k_state,p8k) ****************************************************************************/ -WRITE8_MEMBER( p8k_state::kbd_put_16 ) +void p8k_state::kbd_put_16(u8 data) { address_space &mem = m_maincpu->space(AS_DATA); // keyboard int handler is at 0x0700 @@ -465,7 +465,7 @@ GFXDECODE_END ****************************************************************************/ -static MACHINE_CONFIG_START( p8k, p8k_state ) +static MACHINE_CONFIG_START( p8k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz ) MCFG_Z80_DAISY_CHAIN(p8k_daisy_chain) @@ -522,10 +522,10 @@ static MACHINE_CONFIG_START( p8k, p8k_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(p8k_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(p8k_state, kbd_put)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( p8k_16, p8k_state ) +static MACHINE_CONFIG_START( p8k_16 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z8001, XTAL_4MHz ) MCFG_Z80_DAISY_CHAIN(p8k_16_daisy_chain) @@ -562,7 +562,7 @@ static MACHINE_CONFIG_START( p8k_16, p8k_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(p8k_state, kbd_put_16)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(p8k_state, kbd_put_16)) MACHINE_CONFIG_END /* ROM definition */ @@ -592,6 +592,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, p8000, 0, 0, p8k, p8k, p8k_state, p8k, "EAW electronic Treptow", "P8000 (8bit Board)", MACHINE_NOT_WORKING) -COMP( 1989, p8000_16, p8000, 0, p8k_16, p8k, driver_device, 0, "EAW electronic Treptow", "P8000 (16bit Board)", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, p8000, 0, 0, p8k, p8k, p8k_state, p8k, "EAW electronic Treptow", "P8000 (8bit Board)", MACHINE_NOT_WORKING) +COMP( 1989, p8000_16, p8000, 0, p8k_16, p8k, p8k_state, 0, "EAW electronic Treptow", "P8000 (16bit Board)", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/pachifev.cpp b/src/mame/drivers/pachifev.cpp index 37999a46caf..49b244a8aa4 100644 --- a/src/mame/drivers/pachifev.cpp +++ b/src/mame/drivers/pachifev.cpp @@ -339,7 +339,7 @@ void pachifev_state::machine_start() save_item(NAME(m_cnt)); } -static MACHINE_CONFIG_START( pachifev, pachifev_state ) +static MACHINE_CONFIG_START( pachifev ) // CPU TMS9995, standard variant; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9995, XTAL_12MHz, pachifev_map, pachifev_cru) @@ -380,4 +380,4 @@ ROM_START( pachifev ) ROM_END -GAME( 1983, pachifev, 0, pachifev, pachifev, driver_device, 0, ROT270, "Sanki Denshi Kogyo", "Pachifever", MACHINE_IMPERFECT_SOUND ) +GAME( 1983, pachifev, 0, pachifev, pachifev, pachifev_state, 0, ROT270, "Sanki Denshi Kogyo", "Pachifever", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/pacland.cpp b/src/mame/drivers/pacland.cpp index 8af5fcafd5b..487ca655278 100644 --- a/src/mame/drivers/pacland.cpp +++ b/src/mame/drivers/pacland.cpp @@ -426,7 +426,7 @@ INTERRUPT_GEN_MEMBER(pacland_state::mcu_vblank_irq) m_mcu->set_input_line(0, ASSERT_LINE); } -static MACHINE_CONFIG_START( pacland, pacland_state ) +static MACHINE_CONFIG_START( pacland ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_49_152MHz/32) /* 1.536 MHz */ @@ -640,8 +640,8 @@ ROM_END -GAME( 1984, pacland, 0, pacland, pacland, driver_device, 0, ROT0, "Namco", "Pac-Land (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, paclandj, pacland, pacland, pacland, driver_device, 0, ROT0, "Namco", "Pac-Land (Japan new)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, paclandjo, pacland, pacland, pacland, driver_device, 0, ROT0, "Namco", "Pac-Land (Japan old)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, paclandjo2,pacland, pacland, pacland, driver_device, 0, ROT0, "Namco", "Pac-Land (Japan older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, paclandm, pacland, pacland, pacland, driver_device, 0, ROT0, "Namco (Bally Midway license)", "Pac-Land (Midway)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, pacland, 0, pacland, pacland, pacland_state, 0, ROT0, "Namco", "Pac-Land (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, paclandj, pacland, pacland, pacland, pacland_state, 0, ROT0, "Namco", "Pac-Land (Japan new)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, paclandjo, pacland, pacland, pacland, pacland_state, 0, ROT0, "Namco", "Pac-Land (Japan old)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, paclandjo2,pacland, pacland, pacland, pacland_state, 0, ROT0, "Namco", "Pac-Land (Japan older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, paclandm, pacland, pacland, pacland, pacland_state, 0, ROT0, "Namco (Bally Midway license)", "Pac-Land (Midway)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp index 292afc0e2f1..52b70e6cf27 100644 --- a/src/mame/drivers/pacman.cpp +++ b/src/mame/drivers/pacman.cpp @@ -3558,7 +3558,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( pacman, pacman_state ) +static MACHINE_CONFIG_START( pacman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) @@ -7275,35 +7275,35 @@ DRIVER_INIT_MEMBER(pacman_state,cannonbp) * *************************************/ -/* rom parent machine inp init */ -GAME( 1980, puckman, 0, pacman, pacman, driver_device, 0, ROT90, "Namco", "Puck Man (Japan set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, puckmanb, puckman, pacman, pacman, driver_device, 0, ROT90, "bootleg", "Puck Man (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, puckmanf, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Puck Man (speedup hack)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, puckmanh, puckman, pacman, pacman, driver_device, 0, ROT90, "bootleg (Falcom?)", "Puck Man (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, pacman, puckman, pacman, pacman, driver_device, 0, ROT90, "Namco (Midway license)", "Pac-Man (Midway)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, pacmanso, puckman, pacman, pacman, driver_device, 0, ROT90, "Namco (Sonic license)", "Pac-Man (SegaSA / Sonic)", MACHINE_SUPPORTS_SAVE ) // from SegaSA / Sonic, could be licensed, could be bootleg - it ignores the service mode credit settings despite listing them which is suspicious -GAME( 1980, pacmanf, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Pac-Man (Midway, speedup hack)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, puckmod, puckman, pacman, pacman, driver_device, 0, ROT90, "Namco", "Puck Man (Japan set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, pacmod, puckman, pacman, pacman, driver_device, 0, ROT90, "Namco (Midway license)", "Pac-Man (Midway, harder)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, pacmanjpm,puckman, pacman, pacman, driver_device, 0, ROT90, "bootleg (JPM)", "Pac-Man (JPM bootleg)", MACHINE_SUPPORTS_SAVE ) // aka 'Muncher', UK bootleg, JPM later made fruit machines etc. -GAME( 1980, pacmanpe, puckman, pacman, pacmanpe, driver_device, 0, ROT90, "bootleg (Petaco SA)", "Come Come (Petaco SA bootleg of Puck Man)", MACHINE_SUPPORTS_SAVE ) // might have a speed-up button, check -GAME( 1980, newpuc2, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Newpuc2 (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, newpuc2b, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Newpuc2 (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, newpuckx, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "New Puck-X", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, pacheart, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Pac-Man (Hearts)", MACHINE_SUPPORTS_SAVE ) -GAME( 198?, bucaner, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Buccaneer", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, hangly, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Hangly-Man (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, hangly2, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Hangly-Man (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, hangly3, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Hangly-Man (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, popeyeman,puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Popeye-Man", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, pacuman, puckman, pacman, pacuman, driver_device, 0, ROT90, "bootleg (Recreativos Franco S.A.)", "Pacu-Man (Spanish bootleg of Puck Man)", MACHINE_SUPPORTS_SAVE ) // common bootleg in Spain, code is shifted a bit compared to the Puck Man sets. Title & Manufacturer info from cabinet/PCB, not displayed ingame -GAME( 1980, crockman, puckman, pacman, pacman, driver_device, 0, ROT90, "bootleg (Rene Pierre)", "Crock-Man", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, joyman, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Joyman", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, ctrpllrp, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Caterpillar Pacman Hack", MACHINE_SUPPORTS_SAVE ) +// rom parent machine inp state init +GAME( 1980, puckman, 0, pacman, pacman, pacman_state, 0, ROT90, "Namco", "Puck Man (Japan set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, puckmanb, puckman, pacman, pacman, pacman_state, 0, ROT90, "bootleg", "Puck Man (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, puckmanf, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Puck Man (speedup hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, puckmanh, puckman, pacman, pacman, pacman_state, 0, ROT90, "bootleg (Falcom?)", "Puck Man (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, pacman, puckman, pacman, pacman, pacman_state, 0, ROT90, "Namco (Midway license)", "Pac-Man (Midway)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, pacmanso, puckman, pacman, pacman, pacman_state, 0, ROT90, "Namco (Sonic license)", "Pac-Man (SegaSA / Sonic)", MACHINE_SUPPORTS_SAVE ) // from SegaSA / Sonic, could be licensed, could be bootleg - it ignores the service mode credit settings despite listing them which is suspicious +GAME( 1980, pacmanf, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Pac-Man (Midway, speedup hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, puckmod, puckman, pacman, pacman, pacman_state, 0, ROT90, "Namco", "Puck Man (Japan set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, pacmod, puckman, pacman, pacman, pacman_state, 0, ROT90, "Namco (Midway license)", "Pac-Man (Midway, harder)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, pacmanjpm,puckman, pacman, pacman, pacman_state, 0, ROT90, "bootleg (JPM)", "Pac-Man (JPM bootleg)", MACHINE_SUPPORTS_SAVE ) // aka 'Muncher', UK bootleg, JPM later made fruit machines etc. +GAME( 1980, pacmanpe, puckman, pacman, pacmanpe, pacman_state, 0, ROT90, "bootleg (Petaco SA)", "Come Come (Petaco SA bootleg of Puck Man)", MACHINE_SUPPORTS_SAVE ) // might have a speed-up button, check +GAME( 1980, newpuc2, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Newpuc2 (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, newpuc2b, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Newpuc2 (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, newpuckx, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "New Puck-X", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, pacheart, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Pac-Man (Hearts)", MACHINE_SUPPORTS_SAVE ) +GAME( 198?, bucaner, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Buccaneer", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hangly, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Hangly-Man (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hangly2, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Hangly-Man (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hangly3, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Hangly-Man (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, popeyeman,puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Popeye-Man", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, pacuman, puckman, pacman, pacuman, pacman_state, 0, ROT90, "bootleg (Recreativos Franco S.A.)", "Pacu-Man (Spanish bootleg of Puck Man)", MACHINE_SUPPORTS_SAVE ) // common bootleg in Spain, code is shifted a bit compared to the Puck Man sets. Title & Manufacturer info from cabinet/PCB, not displayed ingame +GAME( 1980, crockman, puckman, pacman, pacman, pacman_state, 0, ROT90, "bootleg (Rene Pierre)", "Crock-Man", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, joyman, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Joyman", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, ctrpllrp, puckman, pacman, pacman, pacman_state, 0, ROT90, "hack", "Caterpillar Pacman Hack", MACHINE_SUPPORTS_SAVE ) GAME( 1981, piranha, puckman, piranha, mspacman, pacman_state, eyes, ROT90, "GL (US Billiards license)", "Piranha", MACHINE_SUPPORTS_SAVE ) GAME( 1981, piranhao, puckman, piranha, mspacman, pacman_state, eyes, ROT90, "GL (US Billiards license)", "Piranha (older)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, abscam, puckman, piranha, mspacman, pacman_state, eyes, ROT90, "GL (US Billiards license)", "Abscam", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, piranhah, puckman, pacman, mspacman, driver_device, 0, ROT90, "hack", "Piranha (hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, piranhah, puckman, pacman, mspacman, pacman_state, 0, ROT90, "hack", "Piranha (hack)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, pacplus, 0, pacman, pacman, pacman_state, pacplus, ROT90, "Namco (Midway license)", "Pac-Man Plus", MACHINE_SUPPORTS_SAVE ) @@ -7313,30 +7313,30 @@ GAME( 1981, mspacmat, mspacman, mspacman, mspacman, pacman_state, mspacman, ROT GAME( 1989, msheartb, mspacman, mspacman, mspacman, pacman_state, mspacman, ROT90, "hack (Two-Bit Score)", "Ms. Pac-Man Heart Burn", MACHINE_SUPPORTS_SAVE ) GAME( 1981, pacgal2, mspacman, mspacman, mspacman, pacman_state, mspacman, ROT90, "bootleg", "Pac-Gal (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, mspacmancr,mspacman,mspacman, mspacman, pacman_state, mspacman, ROT90, "bootleg", "Ms. Pac-Man (bootleg on Crush Roller Hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmab, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmab2,mspacman, woodpek, mspacman, driver_device, 0, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmab, mspacman, woodpek, mspacman, pacman_state, 0, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmab2,mspacman, woodpek, mspacman, pacman_state, 0, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, mspacmbe, mspacman, woodpek, mspacman, pacman_state, mspacmbe, ROT90, "bootleg", "Ms. Pac-Man (bootleg, encrypted)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, mspacii, mspacman, woodpek, mspacman, pacman_state, mspacii, ROT90, "bootleg (Orca)", "Ms. Pac-Man II (Orca bootleg set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, mspacii2, mspacman, woodpek, mspacman, pacman_state, mspacii, ROT90, "bootleg (Orca)", "Ms. Pac-Man II (Orca bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, pacgal, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "hack", "Pac-Gal (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacpls, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "hack", "Ms. Pac-Man Plus", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, pacgal, mspacman, woodpek, mspacman, pacman_state, 0, ROT90, "hack", "Pac-Gal (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacpls, mspacman, woodpek, mspacpls, pacman_state, 0, ROT90, "hack", "Ms. Pac-Man Plus", MACHINE_SUPPORTS_SAVE ) GAME( 1992, mschamp, mspacman, mschamp, mschamp, pacman_state, mschamp, ROT90, "hack", "Ms. Pacman Champion Edition / Zola-Puc Gal", MACHINE_SUPPORTS_SAVE ) /* Rayglo version */ GAME( 1995, mschamps, mspacman, mschamp, mschamp, pacman_state, mschamp, ROT90, "hack", "Ms. Pacman Champion Edition / Super Zola-Puc Gal", MACHINE_SUPPORTS_SAVE ) // These bootlegs have MADE IN GREECE clearly visible and etched into the PCBs. They were very common in Spain with several operators having their own versions. // Based on the PCBs and copyright dates shown they were produced late 80s / early 90s. Usually they run a version of Ms. Pacman, but were sometimes converted back to regular Pac-Man -GAME( 198?, mspacmanbg, mspacman,woodpek, mspacman, driver_device, 0, ROT90, "bootleg", "Ms. Pac-Man ('Made in Greece' bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, mspacmanbgd,mspacman,woodpek, mspacman, driver_device, 0, ROT90, "bootleg (Datamat)", "Miss Pukman ('Made in Greece' Datamat bootleg)", MACHINE_SUPPORTS_SAVE ) // shows 'Miss Pukman 1991/1992' but confirmed to be the bootleg distributed by Datamat -GAME( 1992, mspacmanblt,mspacman,woodpek, mspacman, driver_device, 0, ROT90, "bootleg (Triunvi)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Triunvi bootleg)", MACHINE_SUPPORTS_SAVE ) // -GAME( 1991, mspacmanbcc,mspacman,woodpek, mspacman, driver_device, 0, ROT90, "bootleg (Tecnausa)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Tecnausa bootleg)", MACHINE_SUPPORTS_SAVE ) // ^ same PCB, also dated 1991, distributed by Tecnausa -GAME( 1991, mspacmanbhe,mspacman,woodpek, mspacman, driver_device, 0, ROT90, "bootleg (Herle SA)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Herle SA bootleg)", MACHINE_SUPPORTS_SAVE ) // ^ same PCB -GAME( 198?, pacmansp, puckman, pacman, pacmansp, driver_device, 0, ROT90, "bootleg", "Puck Man (Spanish, 'Made in Greece' bootleg)", MACHINE_SUPPORTS_SAVE ) // probably a further conversion of the mspacmanbg bootleg, still has some MS Pacman code + extra features +GAME( 198?, mspacmanbg, mspacman,woodpek, mspacman, pacman_state, 0, ROT90, "bootleg", "Ms. Pac-Man ('Made in Greece' bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, mspacmanbgd,mspacman,woodpek, mspacman, pacman_state, 0, ROT90, "bootleg (Datamat)", "Miss Pukman ('Made in Greece' Datamat bootleg)", MACHINE_SUPPORTS_SAVE ) // shows 'Miss Pukman 1991/1992' but confirmed to be the bootleg distributed by Datamat +GAME( 1992, mspacmanblt,mspacman,woodpek, mspacman, pacman_state, 0, ROT90, "bootleg (Triunvi)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Triunvi bootleg)", MACHINE_SUPPORTS_SAVE ) // +GAME( 1991, mspacmanbcc,mspacman,woodpek, mspacman, pacman_state, 0, ROT90, "bootleg (Tecnausa)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Tecnausa bootleg)", MACHINE_SUPPORTS_SAVE ) // ^ same PCB, also dated 1991, distributed by Tecnausa +GAME( 1991, mspacmanbhe,mspacman,woodpek, mspacman, pacman_state, 0, ROT90, "bootleg (Herle SA)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Herle SA bootleg)", MACHINE_SUPPORTS_SAVE ) // ^ same PCB +GAME( 198?, pacmansp, puckman, pacman, pacmansp, pacman_state, 0, ROT90, "bootleg", "Puck Man (Spanish, 'Made in Greece' bootleg)", MACHINE_SUPPORTS_SAVE ) // probably a further conversion of the mspacmanbg bootleg, still has some MS Pacman code + extra features -GAME( 1989, clubpacm, 0, woodpek, mspacman, driver_device, 0, ROT90, "Miky SRL", "Pacman Club / Club Lambada (Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1990, clubpacma, clubpacm, woodpek, mspacman, driver_device, 0, ROT90, "Miky SRL", "Pacman Club (set 1, Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1990, clubpacmb, clubpacm, woodpek, mspacman, driver_device, 0, ROT90, "Miky SRL", "Pacman Club (set 2, Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1989, clubpacm, 0, woodpek, mspacman, pacman_state, 0, ROT90, "Miky SRL", "Pacman Club / Club Lambada (Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1990, clubpacma, clubpacm, woodpek, mspacman, pacman_state, 0, ROT90, "Miky SRL", "Pacman Club (set 1, Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1990, clubpacmb, clubpacm, woodpek, mspacman, pacman_state, 0, ROT90, "Miky SRL", "Pacman Club (set 2, Argentina)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) GAME( 1985, jumpshot, 0, pacman, jumpshot, pacman_state, jumpshot, ROT90, "Bally Midway", "Jump Shot", MACHINE_SUPPORTS_SAVE ) GAME( 1985, jumpshotp,jumpshot, pacman, jumpshotp,pacman_state, jumpshot, ROT90, "Bally Midway", "Jump Shot Engineering Sample", MACHINE_SUPPORTS_SAVE ) @@ -7344,35 +7344,35 @@ GAME( 1985, jumpshotp,jumpshot, pacman, jumpshotp,pacman_state, jumpshot, ROT GAME( 1985, shootbul, 0, pacman, shootbul, pacman_state, jumpshot, ROT90, "Bally Midway", "Shoot the Bull", MACHINE_SUPPORTS_SAVE ) GAME( 1981, crush, 0, pacmanp, maketrax, pacman_state, maketrax, ROT90, "Alpha Denshi Co. / Kural Samno Electric, Ltd.", "Crush Roller (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, crush2, crush, pacman, maketrax, driver_device, 0, ROT90, "Alpha Denshi Co. / Kural Esco Electric, Ltd.", "Crush Roller (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, crush2, crush, pacman, maketrax, pacman_state, 0, ROT90, "Alpha Denshi Co. / Kural Esco Electric, Ltd.", "Crush Roller (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, crush3, crush, pacmanp, maketrax, pacman_state, maketrax, ROT90, "Alpha Denshi Co. / Kural Electric, Ltd.", "Crush Roller (set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, crush4, crush, pacman, maketrax, pacman_state, eyes, ROT90, "Alpha Denshi Co. / Kural Electric, Ltd.", "Crush Roller (set 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, crush5, crush, crush4, crush4, driver_device, 0, ROT90, "Alpha Denshi Co. / Kural TWT", "Crush Roller (set 5)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, crush5, crush, crush4, crush4, pacman_state, 0, ROT90, "Alpha Denshi Co. / Kural TWT", "Crush Roller (set 5)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, maketrax, crush, pacmanp, maketrax, pacman_state, maketrax, ROT270, "Alpha Denshi Co. / Kural (Williams license)", "Make Trax (US set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, maketrxb, crush, pacmanp, maketrax, pacman_state, maketrax, ROT270, "Alpha Denshi Co. / Kural (Williams license)", "Make Trax (US set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, korosuke, crush, pacmanp, korosuke, pacman_state, korosuke, ROT90, "Alpha Denshi Co. / Kural Electric, Ltd.", "Korosuke Roller (Japan)", MACHINE_SUPPORTS_SAVE ) // ADK considers it a sequel? -GAME( 1981, crushrlf, crush, pacman, maketrax, driver_device, 0, ROT90, "bootleg", "Crush Roller (Famaresa PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, crushbl, crush, pacman, maketrax, driver_device, 0, ROT90, "bootleg", "Crush Roller (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, crushrlf, crush, pacman, maketrax, pacman_state, 0, ROT90, "bootleg", "Crush Roller (Famaresa PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, crushbl, crush, pacman, maketrax, pacman_state, 0, ROT90, "bootleg", "Crush Roller (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, crushbl2, crush, pacmanp, mbrush, pacman_state, maketrax, ROT90, "bootleg", "Crush Roller (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, crushbl3, crush, pacmanp, mbrush, pacman_state, maketrax, ROT90, "bootleg", "Crush Roller (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, crushs, crush, crushs, crushs, driver_device, 0, ROT90, "bootleg (Sidam)", "Crush Roller (bootleg set 4)", MACHINE_SUPPORTS_SAVE ) // Sidam PCB, no Sidam text +GAME( 1981, crushs, crush, crushs, crushs, pacman_state, 0, ROT90, "bootleg (Sidam)", "Crush Roller (bootleg set 4)", MACHINE_SUPPORTS_SAVE ) // Sidam PCB, no Sidam text GAME( 1981, mbrush, crush, pacmanp, mbrush, pacman_state, maketrax, ROT90, "bootleg (Olympia)", "Magic Brush (bootleg of Crush Roller)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, paintrlr, crush, pacman, paintrlr, driver_device, 0, ROT90, "bootleg", "Paint Roller (bootleg of Crush Roller)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, paintrlr, crush, pacman, paintrlr, pacman_state, 0, ROT90, "bootleg", "Paint Roller (bootleg of Crush Roller)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, eyes, 0, pacman, eyes, pacman_state, eyes, ROT90, "Techstar (Rock-Ola license)", "Eyes (US set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, eyes2, eyes, pacman, eyes, pacman_state, eyes, ROT90, "Techstar (Rock-Ola license)", "Eyes (US set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, eyesb, eyes, pacman, eyes, pacman_state, eyes, ROT90, "bootleg", "Eyes (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, eyeszac, eyes, pacman, eyes, pacman_state, eyes, ROT90, "Techstar (Zaccaria license)", "Eyes (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // bad dump -GAME( 1982, eyeszacb, eyes, pacman, eyes, driver_device, 0, ROT90, "bootleg", "Eyes (bootleg set 2, decrypted)", MACHINE_SUPPORTS_SAVE ) // based on Zaccaria version +GAME( 1982, eyeszacb, eyes, pacman, eyes, pacman_state, 0, ROT90, "bootleg", "Eyes (bootleg set 2, decrypted)", MACHINE_SUPPORTS_SAVE ) // based on Zaccaria version GAME( 1983, mrtnt, 0, pacman, mrtnt, pacman_state, eyes, ROT90, "Techstar (Telko license)", "Mr. TNT", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, gorkans, mrtnt, pacman, mrtnt, driver_device, 0, ROT90, "Techstar", "Gorkans", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, gorkans, mrtnt, pacman, mrtnt, pacman_state, 0, ROT90, "Techstar", "Gorkans", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, lizwiz, 0, woodpek, lizwiz, driver_device, 0, ROT90, "Techstar (Sunn license)", "Lizard Wizard", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, lizwiz, 0, woodpek, lizwiz, pacman_state, 0, ROT90, "Techstar (Sunn license)", "Lizard Wizard", MACHINE_SUPPORTS_SAVE ) GAME( 1983, eggor, 0, pacman, mrtnt, pacman_state, eyes, ROT90, "Telko", "Eggor", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, birdiy, 0, birdiy, birdiy, driver_device, 0, ROT270, "Mama Top", "Birdiy", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, birdiy, 0, birdiy, birdiy, pacman_state, 0, ROT270, "Mama Top", "Birdiy", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1981, woodpeck, 0, woodpek, woodpek, pacman_state, woodpek, ROT90, "Amenip (Palcom Queen River)", "Woodpecker (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, woodpeca, woodpeck, woodpek, woodpek, pacman_state, woodpek, ROT90, "Amenip", "Woodpecker (set 2)", MACHINE_SUPPORTS_SAVE ) @@ -7384,23 +7384,23 @@ GAME( 1982, ponpoko, 0, woodpek, ponpoko, pacman_state, ponpoko, ROT GAME( 1982, ponpokov, ponpoko, woodpek, ponpoko, pacman_state, ponpoko, ROT0, "Sigma Enterprises Inc. (Venture Line license)", "Ponpoko (Venture Line)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, candory, ponpoko, woodpek, ponpoko, pacman_state, ponpoko, ROT0, "bootleg", "Candory (Ponpoko bootleg with Mario)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, alibaba, 0, alibaba, alibaba, driver_device, 0, ROT90, "Sega", "Ali Baba and 40 Thieves", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, alibabab, alibaba, alibaba, alibaba, driver_device, 0, ROT90, "bootleg", "Mustafa and 40 Thieves (bootleg)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, alibaba, 0, alibaba, alibaba, pacman_state, 0, ROT90, "Sega", "Ali Baba and 40 Thieves", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, alibabab, alibaba, alibaba, alibaba, pacman_state, 0, ROT90, "bootleg", "Mustafa and 40 Thieves (bootleg)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dremshpr, 0, dremshpr, dremshpr, driver_device, 0, ROT270, "Sanritsu", "Dream Shopper", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dremshpr, 0, dremshpr, dremshpr, pacman_state, 0, ROT270, "Sanritsu", "Dream Shopper", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, vanvan, 0, vanvan, vanvan, driver_device, 0, ROT270, "Sanritsu", "Van-Van Car", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, vanvank, vanvan, vanvan, vanvank, driver_device, 0, ROT270, "Sanritsu (Karateco license?)", "Van-Van Car (Karateco set 1)", MACHINE_SUPPORTS_SAVE ) // or bootleg? -GAME( 1983, vanvanb, vanvan, vanvan, vanvank, driver_device, 0, ROT270, "Sanritsu (Karateco license?)", "Van-Van Car (Karateco set 2)", MACHINE_SUPPORTS_SAVE ) // " +GAME( 1983, vanvan, 0, vanvan, vanvan, pacman_state, 0, ROT270, "Sanritsu", "Van-Van Car", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, vanvank, vanvan, vanvan, vanvank, pacman_state, 0, ROT270, "Sanritsu (Karateco license?)", "Van-Van Car (Karateco set 1)", MACHINE_SUPPORTS_SAVE ) // or bootleg? +GAME( 1983, vanvanb, vanvan, vanvan, vanvank, pacman_state, 0, ROT270, "Sanritsu (Karateco license?)", "Van-Van Car (Karateco set 2)", MACHINE_SUPPORTS_SAVE ) // " -GAME( 1983, bwcasino, 0, acitya, bwcasino, driver_device, 0, ROT90, "Epos Corporation", "Boardwalk Casino", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, acitya, bwcasino, acitya, acitya, driver_device, 0, ROT90, "Epos Corporation", "Atlantic City Action", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, bwcasino, 0, acitya, bwcasino, pacman_state, 0, ROT90, "Epos Corporation", "Boardwalk Casino", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, acitya, bwcasino, acitya, acitya, pacman_state, 0, ROT90, "Epos Corporation", "Atlantic City Action", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, theglobp, suprglob, theglobp, theglobp, driver_device, 0, ROT90, "Epos Corporation", "The Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, sprglobp, suprglob, theglobp, theglobp, driver_device, 0, ROT90, "Epos Corporation", "Super Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, sprglbpg, suprglob, pacman, theglobp, driver_device, 0, ROT90, "bootleg (Software Labor)", "Super Glob (Pac-Man hardware) (German bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, beastfp, suprglob, theglobp, theglobp, driver_device, 0, ROT90, "Epos Corporation", "Beastie Feastie (conversion kit)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, eeekk, 0, eeekk, eeekk, driver_device, 0, ROT90, "Epos Corporation", "Eeekk!", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, theglobp, suprglob, theglobp, theglobp, pacman_state, 0, ROT90, "Epos Corporation", "The Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, sprglobp, suprglob, theglobp, theglobp, pacman_state, 0, ROT90, "Epos Corporation", "Super Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sprglbpg, suprglob, pacman, theglobp, pacman_state, 0, ROT90, "bootleg (Software Labor)", "Super Glob (Pac-Man hardware) (German bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, beastfp, suprglob, theglobp, theglobp, pacman_state, 0, ROT90, "Epos Corporation", "Beastie Feastie (conversion kit)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, eeekk, 0, eeekk, eeekk, pacman_state, 0, ROT90, "Epos Corporation", "Eeekk!", MACHINE_SUPPORTS_SAVE ) GAME( 1984, drivfrcp, 0, drivfrcp, drivfrcp, pacman_state, drivfrcp, ROT90, "Shinkai Inc. (Magic Electronics Inc. license)", "Driving Force (Pac-Man conversion)", MACHINE_SUPPORTS_SAVE ) @@ -7410,15 +7410,15 @@ GAME( 1985, porky, 0, porky, porky, pacman_state, porky, ROT GAME( 1986, rocktrv2, 0, rocktrv2, rocktrv2, pacman_state, rocktrv2, ROT90, "Triumph Software Inc.", "MTV Rock-N-Roll Trivia (Part 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, bigbucks, 0, bigbucks, bigbucks, driver_device, 0, ROT90, "Dynasoft Inc.", "Big Bucks", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, bigbucks, 0, bigbucks, bigbucks, pacman_state, 0, ROT90, "Dynasoft Inc.", "Big Bucks", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, numcrash, 0, numcrash, numcrash, driver_device, 0, ROT90, "Hanshin Goraku / Peni", "Number Crash", MACHINE_SUPPORTS_SAVE ) // "Peni soft" related? +GAME( 1983, numcrash, 0, numcrash, numcrash, pacman_state, 0, ROT90, "Hanshin Goraku / Peni", "Number Crash", MACHINE_SUPPORTS_SAVE ) // "Peni soft" related? GAME( 1985, cannonbp, 0, pacman, cannonbp, pacman_state, cannonbp, ROT90, "Novomatic", "Cannon Ball (Pac-Man Hardware)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) GAME( 1999, superabc, 0, superabc, superabc, pacman_state, superabc, ROT90, "hack (Two-Bit Score)", "Super ABC (Pac-Man multigame kit, Sep. 03 1999)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, superabco,superabc, superabc, superabc, pacman_state, superabc, ROT90, "hack (Two-Bit Score)", "Super ABC (Pac-Man multigame kit, Mar. 08 1999)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, pengojpm, pengo, pengojpm, pengojpm, driver_device, 0, ROT90, "bootleg", "Pengo (bootleg on Pac-Man hardware, set 1)", MACHINE_SUPPORTS_SAVE ) // conversion of pacmanjpm board with wire mods -GAME( 1981, pengopac, pengo, pengojpm, pengojpm, driver_device, 0, ROT90, "bootleg", "Pengo (bootleg on Pac-Man hardware, set 2)", MACHINE_SUPPORTS_SAVE ) // different conversion? -GAME( 1982, pinguinos, pengo, pengojpm, pengojpm, driver_device, 0, ROT90, "bootleg (Aincar)", "Pinguinos (Spanish bootleg on Pac-Man hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, pengojpm, pengo, pengojpm, pengojpm, pacman_state, 0, ROT90, "bootleg", "Pengo (bootleg on Pac-Man hardware, set 1)", MACHINE_SUPPORTS_SAVE ) // conversion of pacmanjpm board with wire mods +GAME( 1981, pengopac, pengo, pengojpm, pengojpm, pacman_state, 0, ROT90, "bootleg", "Pengo (bootleg on Pac-Man hardware, set 2)", MACHINE_SUPPORTS_SAVE ) // different conversion? +GAME( 1982, pinguinos,pengo, pengojpm, pengojpm, pacman_state, 0, ROT90, "bootleg (Aincar)", "Pinguinos (Spanish bootleg on Pac-Man hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/palm.cpp b/src/mame/drivers/palm.cpp index 4b8c6d795bb..544c1336468 100644 --- a/src/mame/drivers/palm.cpp +++ b/src/mame/drivers/palm.cpp @@ -167,7 +167,7 @@ ADDRESS_MAP_END MACHINE DRIVERS ***************************************************************************/ -static MACHINE_CONFIG_START( palm, palm_state ) +static MACHINE_CONFIG_START( palm ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", M68000, 32768*506 ) /* 16.580608 MHz */ MCFG_CPU_PROGRAM_MAP( palm_map) @@ -465,22 +465,22 @@ static MACHINE_CONFIG_DERIVED( palmvx, palm ) MCFG_RAM_DEFAULT_SIZE("8M") MACHINE_CONFIG_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1996, pilot1k, 0, 0, pilot1k, palm, driver_device, 0, "U.S. Robotics", "Pilot 1000", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -COMP( 1996, pilot5k, pilot1k, 0, pilot5k, palm, driver_device, 0, "U.S. Robotics", "Pilot 5000", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -COMP( 1997, palmpers, pilot1k, 0, pilot5k, palm, driver_device, 0, "U.S. Robotics", "Palm Pilot Personal", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -COMP( 1997, palmpro, pilot1k, 0, palmpro, palm, driver_device, 0, "U.S. Robotics", "Palm Pilot Pro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -COMP( 1998, palmiii, pilot1k, 0, palmiii, palm, driver_device, 0, "3Com", "Palm III", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) -COMP( 1998, palmiiic, pilot1k, 0, palmiii, palm, driver_device, 0, "Palm Inc", "Palm IIIc", MACHINE_NOT_WORKING ) -COMP( 2000, palmm100, pilot1k, 0, palmiii, palm, driver_device, 0, "Palm Inc", "Palm m100", MACHINE_NOT_WORKING ) -COMP( 2000, palmm130, pilot1k, 0, palmiii, palm, driver_device, 0, "Palm Inc", "Palm m130", MACHINE_NOT_WORKING ) -COMP( 2001, palmm505, pilot1k, 0, palmiii, palm, driver_device, 0, "Palm Inc", "Palm m505", MACHINE_NOT_WORKING ) -COMP( 2001, palmm515, pilot1k, 0, palmiii, palm, driver_device, 0, "Palm Inc", "Palm m515", MACHINE_NOT_WORKING ) -COMP( 1999, palmv, pilot1k, 0, palmv, palm, driver_device, 0, "3Com", "Palm V", MACHINE_NOT_WORKING ) -COMP( 1999, palmvx, pilot1k, 0, palmvx, palm, driver_device, 0, "Palm Inc", "Palm Vx", MACHINE_NOT_WORKING ) -COMP( 2001, visor, pilot1k, 0, palmvx, palm, driver_device, 0, "Handspring", "Visor Edge", MACHINE_NOT_WORKING ) -COMP( 19??, spt1500, pilot1k, 0, palmvx, palm, driver_device, 0, "Symbol", "SPT 1500", MACHINE_NOT_WORKING ) -COMP( 19??, spt1700, pilot1k, 0, palmvx, palm, driver_device, 0, "Symbol", "SPT 1700", MACHINE_NOT_WORKING ) -COMP( 19??, spt1740, pilot1k, 0, palmvx, palm, driver_device, 0, "Symbol", "SPT 1740", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1996, pilot1k, 0, 0, pilot1k, palm, palm_state, 0, "U.S. Robotics", "Pilot 1000", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +COMP( 1996, pilot5k, pilot1k, 0, pilot5k, palm, palm_state, 0, "U.S. Robotics", "Pilot 5000", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +COMP( 1997, palmpers, pilot1k, 0, pilot5k, palm, palm_state, 0, "U.S. Robotics", "Palm Pilot Personal", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +COMP( 1997, palmpro, pilot1k, 0, palmpro, palm, palm_state, 0, "U.S. Robotics", "Palm Pilot Pro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +COMP( 1998, palmiii, pilot1k, 0, palmiii, palm, palm_state, 0, "3Com", "Palm III", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +COMP( 1998, palmiiic, pilot1k, 0, palmiii, palm, palm_state, 0, "Palm Inc", "Palm IIIc", MACHINE_NOT_WORKING ) +COMP( 2000, palmm100, pilot1k, 0, palmiii, palm, palm_state, 0, "Palm Inc", "Palm m100", MACHINE_NOT_WORKING ) +COMP( 2000, palmm130, pilot1k, 0, palmiii, palm, palm_state, 0, "Palm Inc", "Palm m130", MACHINE_NOT_WORKING ) +COMP( 2001, palmm505, pilot1k, 0, palmiii, palm, palm_state, 0, "Palm Inc", "Palm m505", MACHINE_NOT_WORKING ) +COMP( 2001, palmm515, pilot1k, 0, palmiii, palm, palm_state, 0, "Palm Inc", "Palm m515", MACHINE_NOT_WORKING ) +COMP( 1999, palmv, pilot1k, 0, palmv, palm, palm_state, 0, "3Com", "Palm V", MACHINE_NOT_WORKING ) +COMP( 1999, palmvx, pilot1k, 0, palmvx, palm, palm_state, 0, "Palm Inc", "Palm Vx", MACHINE_NOT_WORKING ) +COMP( 2001, visor, pilot1k, 0, palmvx, palm, palm_state, 0, "Handspring", "Visor Edge", MACHINE_NOT_WORKING ) +COMP( 19??, spt1500, pilot1k, 0, palmvx, palm, palm_state, 0, "Symbol", "SPT 1500", MACHINE_NOT_WORKING ) +COMP( 19??, spt1700, pilot1k, 0, palmvx, palm, palm_state, 0, "Symbol", "SPT 1700", MACHINE_NOT_WORKING ) +COMP( 19??, spt1740, pilot1k, 0, palmvx, palm, palm_state, 0, "Symbol", "SPT 1740", MACHINE_NOT_WORKING ) #include "palm_dbg.hxx" diff --git a/src/mame/drivers/palmz22.cpp b/src/mame/drivers/palmz22.cpp index 3ca31438d5a..6a51dd93f49 100644 --- a/src/mame/drivers/palmz22.cpp +++ b/src/mame/drivers/palmz22.cpp @@ -278,7 +278,7 @@ DRIVER_INIT_MEMBER(palmz22_state,palmz22) { } -static MACHINE_CONFIG_START( palmz22, palmz22_state ) +static MACHINE_CONFIG_START( palmz22 ) MCFG_CPU_ADD("maincpu", ARM920T, 266000000) MCFG_CPU_PROGRAM_MAP(palmz22_map) @@ -305,7 +305,7 @@ static MACHINE_CONFIG_START( palmz22, palmz22_state ) MCFG_S3C2410_NAND_DATA_W_CB(WRITE8(palmz22_state, s3c2410_nand_data_w)) MCFG_DEVICE_ADD("nand", NAND, 0) - MCFG_NAND_TYPE(NAND_CHIP_K9F5608U0D_J) + MCFG_NAND_TYPE(K9F5608U0D_J) MCFG_NAND_RNB_CALLBACK(DEVWRITELINE("s3c2410", s3c2410_device, frnb_w)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/pandoras.cpp b/src/mame/drivers/pandoras.cpp index 5709670fd9a..00a0e1d2ddb 100644 --- a/src/mame/drivers/pandoras.cpp +++ b/src/mame/drivers/pandoras.cpp @@ -179,8 +179,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( pandoras_i8039_io_map, AS_IO, 8, pandoras_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w) ADDRESS_MAP_END @@ -323,7 +321,7 @@ READ8_MEMBER(pandoras_state::pandoras_portB_r) return (m_audiocpu->total_cycles() / 512) & 0x0f; } -static MACHINE_CONFIG_START( pandoras, pandoras_state ) +static MACHINE_CONFIG_START( pandoras ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/6) /* CPU A */ @@ -340,6 +338,8 @@ static MACHINE_CONFIG_START( pandoras, pandoras_state ) MCFG_CPU_ADD("mcu", I8039, SOUND_CLOCK/2) MCFG_CPU_PROGRAM_MAP(pandoras_i8039_map) MCFG_CPU_IO_MAP(pandoras_i8039_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pandoras_state, i8039_irqen_and_status_w)) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - needed for correct synchronization of the sound CPUs */ @@ -414,4 +414,4 @@ ROM_START( pandoras ) ROM_END -GAME( 1984, pandoras, 0, pandoras, pandoras, driver_device, 0, ROT90, "Konami / Interlogic", "Pandora's Palace", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, pandoras, 0, pandoras, pandoras, pandoras_state, 0, ROT90, "Konami / Interlogic", "Pandora's Palace", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pangofun.cpp b/src/mame/drivers/pangofun.cpp index e334f3043c4..3e46859c913 100644 --- a/src/mame/drivers/pangofun.cpp +++ b/src/mame/drivers/pangofun.cpp @@ -171,7 +171,7 @@ void pangofun_state::machine_start() { } -static MACHINE_CONFIG_START( pangofun, pangofun_state ) +static MACHINE_CONFIG_START( pangofun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I486, 25000000 ) /* I486 ?? Mhz (25 according to POST) */ MCFG_CPU_PROGRAM_MAP(pcat_map) diff --git a/src/mame/drivers/panicr.cpp b/src/mame/drivers/panicr.cpp index be6dd72e7e0..79cd9f07d2f 100644 --- a/src/mame/drivers/panicr.cpp +++ b/src/mame/drivers/panicr.cpp @@ -605,7 +605,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(panicr_state::scanline) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xc8/4); } -static MACHINE_CONFIG_START( panicr, panicr_state ) +static MACHINE_CONFIG_START( panicr ) MCFG_CPU_ADD("maincpu", V20,MASTER_CLOCK/2) /* Sony 8623h9 CXQ70116D-8 (V20 compatible) */ MCFG_CPU_PROGRAM_MAP(panicr_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", panicr_state, scanline, "screen", 0, 1) diff --git a/src/mame/drivers/paradise.cpp b/src/mame/drivers/paradise.cpp index b14985e7f9c..958c206121c 100644 --- a/src/mame/drivers/paradise.cpp +++ b/src/mame/drivers/paradise.cpp @@ -424,6 +424,38 @@ static INPUT_PORTS_START( penky ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END +static INPUT_PORTS_START( penkyi ) + PORT_INCLUDE(penky) + + PORT_MODIFY("DSW1") /* port $2020 */ + PORT_DIPNAME( 0x03, 0x03, "Time" ) PORT_DIPLOCATION("SW1:1,2") + PORT_DIPSETTING( 0x00, "0:30" ) + PORT_DIPSETTING( 0x01, "0:40" ) + PORT_DIPSETTING( 0x02, "0:50" ) + PORT_DIPSETTING( 0x03, "1:00" ) + PORT_DIPNAME( 0x80, 0x80, "Game Mode" ) PORT_DIPLOCATION("SW1:8") + PORT_DIPSETTING( 0x80, "Normal" ) + PORT_DIPSETTING( 0x00, "Redemption" ) // gives out tickets + + PORT_MODIFY("DSW2") /* port $2021 */ + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:1,2") + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x0c, 0x0c, "Points/Tickets" ) PORT_DIPLOCATION("SW2:3,4") + PORT_DIPSETTING( 0x0c, "50.000 points/1 ticket" ) + PORT_DIPSETTING( 0x08, "100.000 points/1 ticket" ) + PORT_DIPSETTING( 0x04, "150.000 points/1 ticket" ) + PORT_DIPSETTING( 0x00, "200.000 points/1 ticket" ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:6") // Demo sounds in the parent + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:7") + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + static INPUT_PORTS_START( torus ) PORT_START("DSW1") /* port $2020 */ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) @@ -691,7 +723,7 @@ INTERRUPT_GEN_MEMBER(paradise_state::irq) m_maincpu->set_input_line(INPUT_LINE_IRQ0, HOLD_LINE); } -static MACHINE_CONFIG_START( paradise, paradise_state ) +static MACHINE_CONFIG_START( paradise ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* Z8400B - 6mhz Verified */ @@ -716,10 +748,10 @@ static MACHINE_CONFIG_START( paradise, paradise_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki1", XTAL_12MHz/12, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki2", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki2", XTAL_12MHz/12, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -757,10 +789,16 @@ static MACHINE_CONFIG_DERIVED( penky, paradise ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(torus_map) + MCFG_CPU_IO_MAP(torus_io_map) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( penkyi, penky ) + + // TODO add ticket dispenser + MCFG_DEVICE_REMOVE("oki2") +MACHINE_CONFIG_END /*************************************************************************** @@ -1115,6 +1153,32 @@ ROM_START( penky ) /* not populated for this game */ ROM_END +ROM_START( penkyi ) + ROM_REGION( 0x80000, "maincpu", 0 ) /* Z80 Code */ + ROM_LOAD( "U128", 0x00000, 0x80000, CRC(17c8c97c) SHA1(8f5a88670f64ae5591b4ac1b6ddd7aa7db60e042) ) // 27C040, but 1st and 2nd half identical + + ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT) /* 16x16x8 Sprites */ + ROM_LOAD( "U114", 0x00000, 0x80000, CRC(593e7b15) SHA1(bf2719e86bb23b2f149b6721fd3e8131b388ceca) ) // 27C040 + ROM_LOAD( "U115", 0x80000, 0x80000, CRC(29449fa2) SHA1(6aae7967952d3ed1a95201b4f467f3b73e8df4f6) ) // 27C040 + + ROM_REGION( 0x20000, "gfx2", ROMREGION_INVERT) /* 8x8x4 Background */ + ROM_LOAD( "U94", 0x00000, 0x10000, CRC(d45bac24) SHA1(fc869647873f29bb44f4d58333fdb023d99028de) ) // 27C512, half size of the one in the penky set, mostly 0 filled anyway + + ROM_REGION( 0x100000, "gfx3", ROMREGION_INVERT) /* 8x8x8 Foreground */ + ROM_LOAD( "U92", 0x00000, 0x80000, CRC(31993a6c) SHA1(8cdcae52472768f40dc7cbefaa459982d008deaa) ) // 27C040 + ROM_LOAD( "U93", 0x80000, 0x80000, CRC(b570dc0c) SHA1(1f55681412db144e2d5cbb7a89783edc5059add7) ) // 27C040 + + ROM_REGION( 0x100000, "gfx4", ROMREGION_INVERT) /* 8x8x8 Midground */ + ROM_LOAD( "U110", 0x00000, 0x80000, CRC(c6501e3a) SHA1(f6fa7925a395a226714c4f5536866bc87c1bf0ca) ) // 27C040 + ROM_LOAD( "U111", 0x80000, 0x80000, CRC(de405c6f) SHA1(715e111438d4cbecc435a519ae370842f5531163) ) // 27C040 + + ROM_REGION( 0x80000, "oki1", 0 ) /* Samples */ + ROM_LOAD( "U85", 0x00000, 0x80000, CRC(452578cd) SHA1(a86ce33df0a5dc9d58233820689d52943844a7ea) )// 27C040, but 1st and 2nd half identical + + ROM_REGION( 0x80000, "oki2", ROMREGION_ERASE00 ) /* Samples (banked) */ + /* not populated for this game */ +ROM_END + /* Yun Sung Torus (c) 1996 @@ -1319,6 +1383,7 @@ GAME( 199?, para2dx, 0, paradise, para2dx, paradise_state, paradise, GAME( 1995, tgtball, 0, tgtball, tgtball, paradise_state, tgtball, ROT0, "Yun Sung", "Target Ball (Nude)", MACHINE_SUPPORTS_SAVE ) GAME( 1995, tgtballa, tgtball, tgtball, tgtball, paradise_state, tgtball, ROT0, "Yun Sung", "Target Ball", MACHINE_SUPPORTS_SAVE ) GAME( 1996, penky, 0, penky, penky, paradise_state, tgtball, ROT0, "Yun Sung", "Penky", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, penkyi, penky, penkyi, penkyi, paradise_state, tgtball, ROT0, "Yun Sung (Impeuropex license)", "Penky (Italian)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, torus, 0, torus, torus, paradise_state, torus, ROT90, "Yun Sung", "Torus", MACHINE_SUPPORTS_SAVE ) GAME( 1998, madball, 0, madball, madball, paradise_state, tgtball, ROT0, "Yun Sung", "Mad Ball V2.0", MACHINE_SUPPORTS_SAVE ) GAME( 1997, madballn, madball, madball, madball, paradise_state, tgtball, ROT0, "Yun Sung", "Mad Ball V2.0 (With Nudity)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/paranoia.cpp b/src/mame/drivers/paranoia.cpp index 83f9659bd4e..625bf5aab00 100644 --- a/src/mame/drivers/paranoia.cpp +++ b/src/mame/drivers/paranoia.cpp @@ -163,7 +163,7 @@ WRITE_LINE_MEMBER(paranoia_state::i8155_timer_out) //logerror("Timer out %d\n", state); } -static MACHINE_CONFIG_START( paranoia, paranoia_state ) +static MACHINE_CONFIG_START( paranoia ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H6280, PCE_MAIN_CLOCK/3) MCFG_CPU_PROGRAM_MAP(pce_mem) @@ -186,7 +186,7 @@ static MACHINE_CONFIG_START( paranoia, paranoia_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242) + MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242) MCFG_SCREEN_UPDATE_DRIVER( pce_common_state, screen_update ) MCFG_SCREEN_PALETTE("huc6260:palette") @@ -221,4 +221,4 @@ ROM_START(paranoia) ROM_LOAD( "4.352", 0x18000, 0x8000, CRC(11297fed) SHA1(17a294e65ba1c4806307602dee4c7c627ad1fcfd) ) ROM_END -GAME( 1990, paranoia, 0, paranoia, paranoia, pce_common_state, pce_common, ROT0, "Naxat Soft", "Paranoia", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, paranoia, 0, paranoia, paranoia, paranoia_state, pce_common, ROT0, "Naxat Soft", "Paranoia", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/parodius.cpp b/src/mame/drivers/parodius.cpp index a06b4792169..ecc6bea5fa7 100644 --- a/src/mame/drivers/parodius.cpp +++ b/src/mame/drivers/parodius.cpp @@ -224,7 +224,7 @@ WRITE8_MEMBER( parodius_state::banking_callback ) membank("bank1")->set_entry((data & 0x0f) ^ 0x0f); } -static MACHINE_CONFIG_START( parodius, parodius_state ) +static MACHINE_CONFIG_START( parodius ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* 053248 */ @@ -379,7 +379,7 @@ ROM_END ***************************************************************************/ -GAME( 1990, parodius, 0, parodius, parodius, driver_device, 0, ROT0, "Konami", "Parodius DA! (World, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, parodiuse, parodius, parodius, parodius, driver_device, 0, ROT0, "Konami", "Parodius DA! (World, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, parodiusj, parodius, parodius, parodius, driver_device, 0, ROT0, "Konami", "Parodius DA! (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, parodiusa, parodius, parodius, parodius, driver_device, 0, ROT0, "Konami", "Parodius DA! (Asia)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, parodius, 0, parodius, parodius, parodius_state, 0, ROT0, "Konami", "Parodius DA! (World, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, parodiuse, parodius, parodius, parodius, parodius_state, 0, ROT0, "Konami", "Parodius DA! (World, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, parodiusj, parodius, parodius, parodius, parodius_state, 0, ROT0, "Konami", "Parodius DA! (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, parodiusa, parodius, parodius, parodius, parodius_state, 0, ROT0, "Konami", "Parodius DA! (Asia)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/partner.cpp b/src/mame/drivers/partner.cpp index e3ae867cd45..502a6aedc6e 100644 --- a/src/mame/drivers/partner.cpp +++ b/src/mame/drivers/partner.cpp @@ -167,7 +167,7 @@ static GFXDECODE_START( partner ) GFXDECODE_END -static MACHINE_CONFIG_START( partner, partner_state ) +static MACHINE_CONFIG_START( partner ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_16MHz / 9) MCFG_CPU_PROGRAM_MAP(partner_mem) @@ -204,8 +204,8 @@ static MACHINE_CONFIG_START( partner, partner_state ) MCFG_I8257_OUT_HRQ_CB(WRITELINE(partner_state, hrq_w)) MCFG_I8257_IN_MEMR_CB(READ8(radio86_state, memory_read_byte)) MCFG_I8257_OUT_MEMW_CB(WRITE8(radio86_state, memory_write_byte)) - MCFG_I8257_IN_IOR_0_CB(DEVREAD8("wd1793", fd1793_t, data_r)) - MCFG_I8257_OUT_IOW_0_CB(DEVWRITE8("wd1793", fd1793_t, data_w)) + MCFG_I8257_IN_IOR_0_CB(DEVREAD8("wd1793", fd1793_device, data_r)) + MCFG_I8257_OUT_IOW_0_CB(DEVWRITE8("wd1793", fd1793_device, data_w)) MCFG_I8257_OUT_IOW_2_CB(DEVWRITE8("i8275", i8275_device, dack_w)) MCFG_I8257_REVERSE_RW_MODE(1) @@ -242,5 +242,5 @@ ROM_START( partner ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, partner, radio86, 0, partner, partner, partner_state,partner, "SAM SKB VM", "Partner-01.01", MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1987, partner, radio86, 0, partner, partner, partner_state, partner, "SAM SKB VM", "Partner-01.01", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pasha2.cpp b/src/mame/drivers/pasha2.cpp index 0834666f3d8..cc5004bb52c 100644 --- a/src/mame/drivers/pasha2.cpp +++ b/src/mame/drivers/pasha2.cpp @@ -80,6 +80,9 @@ Notes: #include "screen.h" #include "speaker.h" +#include "pasha2.lh" + + class pasha2_state : public driver_device { public: @@ -214,19 +217,17 @@ WRITE16_MEMBER(pasha2_state::oki2_bank_w) WRITE16_MEMBER(pasha2_state::pasha2_lamps_w) { -#ifdef MAME_DEBUG - if (data) - popmessage("1P: %c%c%c 2P: %c%c%c 3P: %c%c%c", - (data & 0x001) ? 'R' : '-', - (data & 0x002) ? 'G' : '-', - (data & 0x004) ? 'B' : '-', - (data & 0x010) ? 'R' : '-', - (data & 0x020) ? 'G' : '-', - (data & 0x040) ? 'B' : '-', - (data & 0x100) ? 'R' : '-', - (data & 0x200) ? 'G' : '-', - (data & 0x400) ? 'B' : '-'); -#endif + machine().output().set_value("lamp_p1_r", BIT(data, 0)); + machine().output().set_value("lamp_p1_g", BIT(data, 1)); + machine().output().set_value("lamp_p1_b", BIT(data, 2)); + + machine().output().set_value("lamp_p2_r", BIT(data, 4)); + machine().output().set_value("lamp_p2_g", BIT(data, 5)); + machine().output().set_value("lamp_p2_b", BIT(data, 6)); + + machine().output().set_value("lamp_p3_r", BIT(data, 8)); + machine().output().set_value("lamp_p3_g", BIT(data, 9)); + machine().output().set_value("lamp_p3_b", BIT(data, 10)); } static ADDRESS_MAP_START( pasha2_map, AS_PROGRAM, 16, pasha2_state ) @@ -411,7 +412,7 @@ void pasha2_state::machine_reset() m_vbuffer = 0; } -static MACHINE_CONFIG_START( pasha2, pasha2_state ) +static MACHINE_CONFIG_START( pasha2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", E116XT, 20000000*4) /* 4x internal multiplier */ @@ -436,10 +437,10 @@ static MACHINE_CONFIG_START( pasha2, pasha2_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki2", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) //and ATMEL DREAM SAM9773 @@ -486,4 +487,4 @@ DRIVER_INIT_MEMBER(pasha2_state,pasha2) membank("bank1")->set_entry(0); } -GAME( 1998, pasha2, 0, pasha2, pasha2, pasha2_state, pasha2, ROT0, "Dong Sung", "Pasha Pasha 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL( 1998, pasha2, 0, pasha2, pasha2, pasha2_state, pasha2, ROT0, "Dong Sung", "Pasha Pasha 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_pasha2 ) diff --git a/src/mame/drivers/paso1600.cpp b/src/mame/drivers/paso1600.cpp index 5d1524b77fa..91a196ab99c 100644 --- a/src/mame/drivers/paso1600.cpp +++ b/src/mame/drivers/paso1600.cpp @@ -296,7 +296,7 @@ WRITE8_MEMBER(paso1600_state::pc_dma_write_byte) space.write_byte(offset, data); } -static MACHINE_CONFIG_START( paso1600, paso1600_state ) +static MACHINE_CONFIG_START( paso1600 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 16000000/2) MCFG_CPU_PROGRAM_MAP(paso1600_map) @@ -343,5 +343,5 @@ ROM_START( paso1600 ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP ( 198?,paso1600, 0, 0, paso1600, paso1600, driver_device, 0, "Toshiba", "Pasopia 1600" , MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP ( 198?,paso1600, 0, 0, paso1600, paso1600, paso1600_state, 0, "Toshiba", "Pasopia 1600", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/pasogo.cpp b/src/mame/drivers/pasogo.cpp index 26de7d26cff..f2e5c469ec9 100644 --- a/src/mame/drivers/pasogo.cpp +++ b/src/mame/drivers/pasogo.cpp @@ -108,6 +108,7 @@ TODO: #include "bus/generic/carts.h" #include "machine/bankdev.h" #include "machine/genpc.h" +#include "screen.h" #include "softlist.h" /* @@ -531,7 +532,7 @@ void pasogo_state::machine_reset() contrast(*color->fields().first(), nullptr, 0, color->read()); } -static MACHINE_CONFIG_START( pasogo, pasogo_state ) +static MACHINE_CONFIG_START( pasogo ) MCFG_CPU_ADD("maincpu", V30, XTAL_32_22MHz/2) MCFG_CPU_PROGRAM_MAP(pasogo_mem) @@ -573,5 +574,5 @@ ROM_START( pasogo ) ROM_REGION( 0x10000, "empty", ROMREGION_ERASEFF ) ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -CONS( 1996, pasogo, 0, 0, pasogo, pasogo, driver_device, 0, "KOEI", "PasoGo", MACHINE_NO_SOUND|MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1996, pasogo, 0, 0, pasogo, pasogo, pasogo_state, 0, "KOEI", "PasoGo", MACHINE_NO_SOUND|MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/pasopia.cpp b/src/mame/drivers/pasopia.cpp index 2403fc33829..15fda1c91be 100644 --- a/src/mame/drivers/pasopia.cpp +++ b/src/mame/drivers/pasopia.cpp @@ -62,6 +62,7 @@ private: uint8_t m_mux_data; bool m_video_wl; bool m_ram_bank; + emu_timer *m_pio_timer; virtual void machine_start() override; virtual void machine_reset() override; required_device m_maincpu; @@ -272,10 +273,11 @@ We preset all banks here, so that bankswitching will incur no speed penalty. membank("bank1")->configure_entries(0, 2, &ram[0x00000], 0x10000); membank("bank2")->configure_entry(0, &ram[0x10000]); - machine().scheduler().timer_pulse(attotime::from_hz(50), timer_expired_delegate(FUNC(pasopia_state::pio_timer),this)); + m_pio_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pasopia_state::pio_timer), this)); + m_pio_timer->adjust(attotime::from_hz(50), 0, attotime::from_hz(50)); } -static MACHINE_CONFIG_START( pasopia, pasopia_state ) +static MACHINE_CONFIG_START( pasopia ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(pasopia_map) @@ -336,5 +338,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, pasopia, 0, 0, pasopia, pasopia, pasopia_state, pasopia, "Toshiba", "Pasopia", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, pasopia, 0, 0, pasopia, pasopia, pasopia_state, pasopia, "Toshiba", "Pasopia", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/pasopia7.cpp b/src/mame/drivers/pasopia7.cpp index 7d4ea993e16..edc4671dce5 100644 --- a/src/mame/drivers/pasopia7.cpp +++ b/src/mame/drivers/pasopia7.cpp @@ -114,6 +114,7 @@ private: int m_addr_latch; void pasopia_nmi_trap(); uint8_t m_mux_data; + emu_timer *m_pio_timer; virtual void machine_reset() override; void fdc_irq(bool state); void draw_cg4_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int width); @@ -907,7 +908,7 @@ static SLOT_INTERFACE_START( pasopia7_floppies ) SLOT_INTERFACE( "525hd", FLOPPY_525_HD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( p7_base, pasopia7_state ) +static MACHINE_CONFIG_START( p7_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(pasopia7_mem) @@ -1048,17 +1049,19 @@ ROM_END DRIVER_INIT_MEMBER(pasopia7_state,p7_raster) { m_screen_type = 1; - machine().scheduler().timer_pulse(attotime::from_hz(50), timer_expired_delegate(FUNC(pasopia7_state::pio_timer),this)); + m_pio_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pasopia7_state::pio_timer), this)); + m_pio_timer->adjust(attotime::from_hz(50), 0, attotime::from_hz(50)); } DRIVER_INIT_MEMBER(pasopia7_state,p7_lcd) { m_screen_type = 0; - machine().scheduler().timer_pulse(attotime::from_hz(50), timer_expired_delegate(FUNC(pasopia7_state::pio_timer),this)); + m_pio_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pasopia7_state::pio_timer), this)); + m_pio_timer->adjust(attotime::from_hz(50), 0, attotime::from_hz(50)); } /* Driver */ COMP( 1983, pasopia7, 0, 0, p7_raster, pasopia7, pasopia7_state, p7_raster, "Toshiba", "Pasopia 7 (Raster)", MACHINE_NOT_WORKING ) -COMP( 1983, pasopia7lcd, pasopia7, 0, p7_lcd, pasopia7, pasopia7_state, p7_lcd, "Toshiba", "Pasopia 7 (LCD)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1983, pasopia7lcd, pasopia7, 0, p7_lcd, pasopia7, pasopia7_state, p7_lcd, "Toshiba", "Pasopia 7 (LCD)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/pass.cpp b/src/mame/drivers/pass.cpp index a7931dfab4e..5392255da57 100644 --- a/src/mame/drivers/pass.cpp +++ b/src/mame/drivers/pass.cpp @@ -237,7 +237,7 @@ static GFXDECODE_START( pass ) GFXDECODE_END /* todo : is this correct? */ -static MACHINE_CONFIG_START( pass, pass_state ) +static MACHINE_CONFIG_START( pass ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14318180/2 ) @@ -271,7 +271,7 @@ static MACHINE_CONFIG_START( pass, pass_state ) MCFG_SOUND_ADD("ymsnd", YM2203, 14318180/4) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) - MCFG_OKIM6295_ADD("oki", 792000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 792000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END @@ -299,4 +299,4 @@ ROM_START( pass ) ROM_END -GAME( 1992, pass, 0, pass, pass, driver_device, 0, ROT0, "Oksan", "Pass", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, pass, 0, pass, pass, pass_state, 0, ROT0, "Oksan", "Pass", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pastelg.cpp b/src/mame/drivers/pastelg.cpp index e493578bef2..ef73d5affa2 100644 --- a/src/mame/drivers/pastelg.cpp +++ b/src/mame/drivers/pastelg.cpp @@ -394,7 +394,7 @@ static INPUT_PORTS_START( galds ) INPUT_PORTS_END -static MACHINE_CONFIG_START( pastelg, pastelg_state ) +static MACHINE_CONFIG_START( pastelg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 19968000/4) /* unknown divider, galds definitely relies on this for correct voice pitch */ @@ -455,7 +455,7 @@ Note */ -static MACHINE_CONFIG_START( threeds, pastelg_state ) +static MACHINE_CONFIG_START( threeds ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 19968000/4) /* unknown divider, galds definitely relies on this for correct voice pitch */ @@ -562,6 +562,6 @@ ROM_END -GAME( 1985, pastelg, 0, pastelg, pastelg, driver_device, 0, ROT0, "Nichibutsu", "Pastel Gal (Japan 851224)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, threeds, 0, threeds, threeds, driver_device, 0, ROT0, "Nichibutsu", "Three Ds - Three Dealers Casino House", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, galds, threeds, threeds, galds, driver_device, 0, ROT0, "Nihon System Corp.", "Gals Ds - Three Dealers Casino House (bootleg?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pastelg, 0, pastelg, pastelg, pastelg_state, 0, ROT0, "Nichibutsu", "Pastel Gal (Japan 851224)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, threeds, 0, threeds, threeds, pastelg_state, 0, ROT0, "Nichibutsu", "Three Ds - Three Dealers Casino House", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, galds, threeds, threeds, galds, pastelg_state, 0, ROT0, "Nihon System Corp.", "Gals Ds - Three Dealers Casino House (bootleg?)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/patapata.cpp b/src/mame/drivers/patapata.cpp new file mode 100644 index 00000000000..91537c80af8 --- /dev/null +++ b/src/mame/drivers/patapata.cpp @@ -0,0 +1,343 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood + +/* + +RW93085 (C) NTC CO. on main PCB + +RW93085-SUB (c)NTC CO.LTD 1993 MADE IN JAPAN on sub (ROM) PCB + +various NMK customs including NMK005 near dipswitches, difficult to read the rest from PCB pics +possible MCU or just IO extender? + +developed by NTC on NMK hardware? + +video is probably just 2 tilemap layers +maybe close to jalmah.cpp? + +*/ + +#include "emu.h" +#include "machine/nmk112.h" + +#include "cpu/m68000/m68000.h" +#include "sound/okim6295.h" + +#include "screen.h" +#include "speaker.h" + + +class patapata_state : public driver_device +{ +public: + patapata_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_bg_videoram(*this, "bg_videoram"), + m_fg_videoram(*this, "fg_videoram"), + m_vregs(*this, "videoregs"), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode") + { } + + DECLARE_WRITE16_MEMBER(bg_videoram_w); + DECLARE_WRITE16_MEMBER(fg_videoram_w); + DECLARE_WRITE8_MEMBER(flipscreen_w); + + TIMER_DEVICE_CALLBACK_MEMBER(scanline); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + +protected: + virtual void video_start() override; + +private: + /* memory pointers */ + required_shared_ptr m_bg_videoram; + required_shared_ptr m_fg_videoram; + required_shared_ptr m_vregs; + + required_device m_maincpu; + required_device m_gfxdecode; + + /* video-related */ + TILEMAP_MAPPER_MEMBER(pagescan); + tilemap_t *m_bg_tilemap; + tilemap_t *m_fg_tilemap; + int m_fg_bank; + + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_fg_tile_info); +}; + +WRITE16_MEMBER(patapata_state::bg_videoram_w) +{ + COMBINE_DATA(&m_bg_videoram[offset]); + m_bg_tilemap->mark_tile_dirty(offset); +} + +TILE_GET_INFO_MEMBER(patapata_state::get_bg_tile_info) +{ + int tileno = m_bg_videoram[tile_index]; + int pal = tileno>>12; + SET_TILE_INFO_MEMBER(0, tileno&0x1fff, pal, 0); +} + +WRITE16_MEMBER(patapata_state::fg_videoram_w) +{ + COMBINE_DATA(&m_fg_videoram[offset]); + m_fg_tilemap->mark_tile_dirty(offset); +} + +WRITE8_MEMBER(patapata_state::flipscreen_w) +{ + flip_screen_set(data & 0x01); +} + +TILE_GET_INFO_MEMBER(patapata_state::get_fg_tile_info) +{ + int bank = m_fg_bank; + + int tileno = m_fg_videoram[tile_index]; + int pal = tileno>>12; + + SET_TILE_INFO_MEMBER(1, (tileno&0x0fff)+(bank*0x1000), pal, 0); +} + +TILEMAP_MAPPER_MEMBER(patapata_state::pagescan) +{ + return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x300) << 5); +// return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x100) << 5); // see comment with tilemap creation +} + + +void patapata_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(patapata_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(patapata_state::pagescan),this), 16, 16, 1024,16*2); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(patapata_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(patapata_state::pagescan),this), 16, 16, 1024,16*2); + +// 2nd half of the ram seems unused, maybe it's actually a mirror meaning this would be the correct tilemap sizes +// m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(patapata_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(patapata_state::pagescan),this), 16, 16, 1024/2,16*2); +// m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(patapata_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(patapata_state::pagescan),this), 16, 16, 1024/2,16*2); + + m_fg_tilemap->set_transparent_pen(0xf); + + save_item(NAME(m_fg_bank)); +} + +uint32_t patapata_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + // vregs + // 0/1 are fg scroll? 0x0ff0 , 0x07b0 is no scroll + // 2/3 are bg scroll? + // 4 is fg bank + + int scrollx = (m_vregs[2]-0xff0)&0xfff; + int scrolly = (m_vregs[3]-0x7b0)&0xfff; + if (scrolly&0x200) scrollx += 0x1000; + scrolly&=0x1ff; + + m_bg_tilemap->set_scrollx(0, scrollx); + m_bg_tilemap->set_scrolly(0, scrolly); + + scrollx = (m_vregs[0]-0xff0)&0xfff; + scrolly = (m_vregs[1]-0x7b0)&0xfff; + if (scrolly&0x200) scrollx += 0x1000; + scrolly&=0x1ff; + + m_fg_tilemap->set_scrollx(0, scrollx); + m_fg_tilemap->set_scrolly(0, scrolly); + + + if ((m_vregs[4]&0x3) != m_fg_bank) + { + m_fg_bank = m_vregs[4]&0x3; + m_fg_tilemap->mark_all_dirty(); + } + + + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + /* + popmessage("%04x %04x %04x %04x\n%04x %04x %04x %04x", + m_vregs[0], m_vregs[1], + m_vregs[2], m_vregs[3], + m_vregs[4], m_vregs[5], + m_vregs[6], m_vregs[7]); + */ + return 0; +} + +/* + +also + +[:maincpu] ':maincpu' (00A284): unmapped program memory write to 110400 = 0000 & FFFF +[:maincpu] ':maincpu' (00A284): unmapped program memory write to 110402 = 0000 & FFFF + + +*/ + +static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, patapata_state ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM + + AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0") + AM_RANGE(0x100002, 0x100003) AM_READ_PORT("IN1") + AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1") + AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") + AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff) + AM_RANGE(0x110000, 0x1103ff) AM_RAM AM_SHARE("videoregs") + AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0x130000, 0x13ffff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") + AM_RANGE(0x140000, 0x14ffff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") + AM_RANGE(0x150000, 0x150001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) + AM_RANGE(0x150010, 0x150011) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) + AM_RANGE(0x150020, 0x15002f) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff) + AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram? +ADDRESS_MAP_END + +static INPUT_PORTS_START( patapata ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Reset") + PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("DSW1") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW1:8") + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "DSW1:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DSW1:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DSW1:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DSW1:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSW1:3" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSW1:2" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSW1:1" ) + + PORT_START("DSW2") + PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "DSW2:8" ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW2:7") + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DSW2:6,5,4") + PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x14, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x18, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_7C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_8C ) ) + PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DSW2:3,2,1") + PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x80, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0xc0, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0xe0, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x60, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0xa0, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) +INPUT_PORTS_END + + +static const gfx_layout tilelayout = +{ + 16,16, + RGN_FRAC(1,1), + 4, + { 0, 1, 2, 3 }, + { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, + 16*32+0*4, 16*32+1*4, 16*32+2*4, 16*32+3*4, 16*32+4*4, 16*32+5*4, 16*32+6*4, 16*32+7*4 }, + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, + 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 }, + 32*32 +}; + +static GFXDECODE_START( patapata ) + GFXDECODE_ENTRY( "tilesa", 0, tilelayout, 0x000, 16 ) + GFXDECODE_ENTRY( "tilesb", 0, tilelayout, 0x100, 16 ) +GFXDECODE_END + +TIMER_DEVICE_CALLBACK_MEMBER(patapata_state::scanline) +{ + // reads inputs (half-frame interrupt like NMK16?) + if (param==128) m_maincpu->set_input_line(1, HOLD_LINE); +} + +static MACHINE_CONFIG_START( patapata ) + + MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // 16 MHz XTAL, 16 MHz CPU + MCFG_CPU_PROGRAM_MAP(main_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", patapata_state, irq4_line_hold) // 1 + 4 valid? (4 main VBL) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", patapata_state, scanline, "screen", 0, 1) + + MCFG_GFXDECODE_ADD("gfxdecode", "palette", patapata) + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(64*8, 64*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 60*8-1, 0*8, 44*8-1) + MCFG_SCREEN_UPDATE_DRIVER(patapata_state, screen_update) + MCFG_SCREEN_PALETTE("palette") + + MCFG_PALETTE_ADD("palette", 0x600/2) + MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx) + + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_OKIM6295_ADD("oki1", XTAL_16MHz / 4, PIN7_LOW) // not verified + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + + MCFG_OKIM6295_ADD("oki2", XTAL_16MHz / 4, PIN7_LOW) // not verified + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + + MCFG_DEVICE_ADD("nmk112", NMK112, 0) // or 212? difficult to read (maybe 212 is 2* 112?) + MCFG_NMK112_ROM0("oki1") + MCFG_NMK112_ROM1("oki2") +MACHINE_CONFIG_END + +ROM_START( patapata ) + ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "rw-93085-7.u132", 0x00000, 0x80000, CRC(f8084e30) SHA1(8ca19fb3d348affbcb89fb4fef0be4614edd14f7) ) + + ROM_REGION( 0x080000, "tilesa", 0 ) // bg layer - 1 bank + ROM_LOAD16_BYTE( "rw-93085-9.u5", 0x000001, 0x040000, CRC(c2e243ff) SHA1(492e25ac1f85ac6f815409ce11de9a1fabab6fc1) ) + ROM_LOAD16_BYTE( "rw-93085-10.u15", 0x000000, 0x040000, CRC(546be459) SHA1(f96b139a1b7c021cd9752d626330ffd6201d7441) ) + + ROM_REGION( 0x180000, "tilesb", 0 ) // fg layer - 3 banks + ROM_LOAD16_BYTE( "rw-93085-17.u9", 0x000001, 0x080000, CRC(e19afa04) SHA1(0511ac94faa549706d729678b4f26b738cf19059) ) + ROM_LOAD16_BYTE( "rw-93085-18.u19", 0x000000, 0x080000, CRC(5cf4582e) SHA1(98a5a274589aa048fa5809d5bb38326e287e6905) ) + ROM_LOAD16_BYTE( "rw-93085-19.u19", 0x100001, 0x040000, CRC(dfd7bdcf) SHA1(02e46da9a8c938daa180a57f4aca04b2fd655ee0) ) + ROM_LOAD16_BYTE( "rw-93085-20.u20", 0x100000, 0x040000, CRC(dd821f74) SHA1(a63e9979db30d130449f689cc6ba8b4c7d25085a) ) + + ROM_REGION( 0x100000+0x40000, "oki1", 0 ) /* OKIM6295 samples */ + ROM_LOAD( "rw-93085-5.u22", 0x000000+0x40000, 0x080000, CRC(0c0d2835) SHA1(dc14ebea5f4e0d3f2f8e7bc05e16b8d0f92ce588) ) + ROM_LOAD( "rw-93085-6.u23", 0x080000+0x40000, 0x080000, CRC(882c25d0) SHA1(9cbf21bd5940240440025b4481d96e3db45a676c) ) + + ROM_REGION( 0x100000+0x40000, "oki2", 0 ) /* OKIM6295 samples */ + ROM_LOAD( "rw-93085-1.u3", 0x000000+0x40000, 0x080000, CRC(d9776d50) SHA1(06e4d2184f687af8380fcb49ce48ce8ec8091050) ) + ROM_LOAD( "rw-93085-2.u4", 0x080000+0x40000, 0x080000, CRC(3698fafa) SHA1(3de54a990478621271285254544f5382d6fd9ca9) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "n82s131n.u119", 0x000, 0x200, CRC(33f63fc8) SHA1(24c4a1a7c06e546571c77c7dc7bd87c57aa088d7) ) + ROM_LOAD( "n82s135n.u137", 0x000, 0x100, CRC(cb90eedc) SHA1(6577cb1999a90b9209b150cbedde11de9ac30018) ) +ROM_END + +// cabinet shows Atlus logo, though there's no copyright on the title screen and PCB is NTC / NMK +GAME( 1993, patapata, 0, patapata, patapata, patapata_state, 0, ROT0, "Atlus", "Pata Pata Panic", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/patinho_feio.cpp b/src/mame/drivers/patinho_feio.cpp index cd22a4a1853..211fa4f95b0 100644 --- a/src/mame/drivers/patinho_feio.cpp +++ b/src/mame/drivers/patinho_feio.cpp @@ -27,19 +27,9 @@ DRIVER_INIT_MEMBER(patinho_feio_state, patinho_feio) m_prev_RC = 0; } -READ16_MEMBER(patinho_feio_state::rc_r) -{ - return ioport("RC")->read(); -} - -READ16_MEMBER(patinho_feio_state::buttons_r) -{ - return ioport("BUTTONS")->read(); -} - void patinho_feio_state::update_panel(uint8_t ACC, uint8_t opcode, uint8_t mem_data, uint16_t mem_addr, uint16_t PC, uint8_t FLAGS, uint16_t RC, uint8_t mode){ char lamp_id[11]; - const char* button_names[] = { + static char const *const button_names[] = { "NORMAL", "CICLOUNICO", "INSTRUCAOUNICA", @@ -116,7 +106,7 @@ TIMER_CALLBACK_MEMBER(patinho_feio_state::decwriter_callback) m_decwriter_timer->enable(0); //stop the timer } -WRITE8_MEMBER(patinho_feio_state::decwriter_kbd_input) +void patinho_feio_state::decwriter_kbd_input(u8 data) { m_maincpu->transfer_byte_from_external_device(0xA, ~data); } @@ -139,7 +129,7 @@ TIMER_CALLBACK_MEMBER(patinho_feio_state::teletype_callback) m_teletype_timer->enable(0); //stop the timer } -WRITE8_MEMBER(patinho_feio_state::teletype_kbd_input) +void patinho_feio_state::teletype_kbd_input(u8 data) { //I figured out that the data is provided inverted (2's complement) //based on a comment in the source code listing of the HEXAM program. @@ -251,12 +241,12 @@ static INPUT_PORTS_START( patinho_feio ) PORT_BIT(0x800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("MEMORIA (Liberada/Protegida)") PORT_CODE(KEYCODE_M) PORT_TOGGLE INPUT_PORTS_END -static MACHINE_CONFIG_START( patinho_feio, patinho_feio_state ) +static MACHINE_CONFIG_START( patinho_feio ) /* basic machine hardware */ /* CPU @ approx. 500 kHz (memory cycle time is 2usec) */ MCFG_CPU_ADD("maincpu", PATO_FEIO_CPU, 500000) - MCFG_PATINHO_RC_READ_CB(READ16(patinho_feio_state, rc_r)) - MCFG_PATINHO_BUTTONS_READ_CB(READ16(patinho_feio_state, buttons_r)) + MCFG_PATINHO_RC_READ_CB(IOPORT("RC")) + MCFG_PATINHO_BUTTONS_READ_CB(IOPORT("BUTTONS")) /* Printer */ // MCFG_PATINHO_IODEV_WRITE_CB(0x5, WRITE8(patinho_feio_state, printer_data_w)) @@ -284,11 +274,11 @@ static MACHINE_CONFIG_START( patinho_feio, patinho_feio_state ) /* DECWRITER */ MCFG_DEVICE_ADD("decwriter", TELEPRINTER, 0) - MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(WRITE8(patinho_feio_state, decwriter_kbd_input)) + MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(PUT(patinho_feio_state, decwriter_kbd_input)) /* Teletype */ MCFG_DEVICE_ADD("teletype", TELEPRINTER, 1) - MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(WRITE8(patinho_feio_state, teletype_kbd_input)) + MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(PUT(patinho_feio_state, teletype_kbd_input)) /* punched tape */ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "patinho_tape") @@ -318,5 +308,5 @@ ROM_START( patinho ) ROM_LOAD( "micro-pre-loader.bin", 0x000, 0x02a, CRC(1921feab) SHA1(bb063102e44e9ab963f95b45710141dc2c5046b0) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1972, patinho, 0, 0, patinho_feio, patinho_feio, patinho_feio_state, patinho_feio, "Escola Politecnica - Universidade de Sao Paulo", "Patinho Feio" , MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1972, patinho, 0, 0, patinho_feio, patinho_feio, patinho_feio_state, patinho_feio, "Escola Politecnica - Universidade de Sao Paulo", "Patinho Feio" , MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pb1000.cpp b/src/mame/drivers/pb1000.cpp index cd68ade4272..3e60c1a1b0a 100644 --- a/src/mame/drivers/pb1000.cpp +++ b/src/mame/drivers/pb1000.cpp @@ -474,7 +474,7 @@ void pb1000_state::machine_start() m_kb_timer->adjust(attotime::from_hz(192), 0, attotime::from_hz(192)); } -static MACHINE_CONFIG_START( pb1000, pb1000_state ) +static MACHINE_CONFIG_START( pb1000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD61700, 910000) MCFG_CPU_PROGRAM_MAP(pb1000_mem) @@ -568,7 +568,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, pb1000 , 0, 0, pb1000 , pb1000 , driver_device, 0, "Casio", "PB-1000", MACHINE_NOT_WORKING) -COMP( 1989, pb2000c, 0, 0, pb2000c, pb2000c, driver_device, 0, "Casio", "PB-2000c", MACHINE_NOT_WORKING) -COMP( 1989, ai1000, pb2000c, 0, pb2000c, pb2000c, driver_device, 0, "Casio", "AI-1000", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, pb1000, 0, 0, pb1000, pb1000, pb1000_state, 0, "Casio", "PB-1000", MACHINE_NOT_WORKING) +COMP( 1989, pb2000c, 0, 0, pb2000c, pb2000c, pb1000_state, 0, "Casio", "PB-2000c", MACHINE_NOT_WORKING) +COMP( 1989, ai1000, pb2000c, 0, pb2000c, pb2000c, pb1000_state, 0, "Casio", "AI-1000", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/pbaction.cpp b/src/mame/drivers/pbaction.cpp index e3fe16b9265..a8054c40fc8 100644 --- a/src/mame/drivers/pbaction.cpp +++ b/src/mame/drivers/pbaction.cpp @@ -281,7 +281,7 @@ INTERRUPT_GEN_MEMBER(pbaction_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( pbaction, pbaction_state ) +static MACHINE_CONFIG_START( pbaction ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */ @@ -504,8 +504,8 @@ DRIVER_INIT_MEMBER(pbaction_state,pbactio3) -GAME( 1985, pbaction, 0, pbaction, pbaction, driver_device, 0, ROT90, "Tehkan", "Pinball Action (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pbaction2, pbaction, pbaction, pbaction, driver_device, 0, ROT90, "Tehkan", "Pinball Action (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pbaction, 0, pbaction, pbaction, pbaction_state, 0, ROT90, "Tehkan", "Pinball Action (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pbaction2, pbaction, pbaction, pbaction, pbaction_state, 0, ROT90, "Tehkan", "Pinball Action (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, pbaction3, pbaction, pbactionx, pbaction, pbaction_state, pbactio3, ROT90, "Tehkan", "Pinball Action (set 3, encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pbaction4, pbaction, pbactionx, pbaction, driver_device, 0, ROT90, "Tehkan", "Pinball Action (set 4, encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pbaction5, pbaction, pbactionx, pbaction, driver_device, 0, ROT90, "Tehkan", "Pinball Action (set 5, encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pbaction4, pbaction, pbactionx, pbaction, pbaction_state, 0, ROT90, "Tehkan", "Pinball Action (set 4, encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pbaction5, pbaction, pbactionx, pbaction, pbaction_state, 0, ROT90, "Tehkan", "Pinball Action (set 5, encrypted)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pc.cpp b/src/mame/drivers/pc.cpp index 098a030929f..6945b4e914b 100644 --- a/src/mame/drivers/pc.cpp +++ b/src/mame/drivers/pc.cpp @@ -396,7 +396,7 @@ DEVICE_INPUT_DEFAULTS_END MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb) -static MACHINE_CONFIG_START( pccga, pc_state ) +static MACHINE_CONFIG_START( pccga ) /* basic machine hardware */ MCFG_CPU_PC(pc8, pc8, I8088, 4772720) /* 4,77 MHz */ @@ -464,7 +464,7 @@ static DEVICE_INPUT_DEFAULTS_START( iskr3104 ) DEVICE_INPUT_DEFAULTS("DSW0", 0x30, 0x00) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( iskr3104, pc_state ) +static MACHINE_CONFIG_START( iskr3104 ) /* basic machine hardware */ MCFG_CPU_PC(pc16, pc16, I8086, 4772720) @@ -488,7 +488,7 @@ MACHINE_CONFIG_END //Poisk-2 -static MACHINE_CONFIG_START( poisk2, pc_state ) +static MACHINE_CONFIG_START( poisk2 ) /* basic machine hardware */ MCFG_CPU_PC(pc16, pc16, I8086, 4772720) @@ -517,7 +517,7 @@ MACHINE_CONFIG_END // Zenith SuperSport -static MACHINE_CONFIG_START( zenith, pc_state ) +static MACHINE_CONFIG_START( zenith ) /* basic machine hardware */ MCFG_CPU_PC(zenith, pc8, I8088, XTAL_14_31818MHz/3) /* 4,77 MHz */ @@ -559,7 +559,7 @@ static DEVICE_INPUT_DEFAULTS_START( siemens ) DEVICE_INPUT_DEFAULTS("DSW0", 0x30, 0x30) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( siemens, pc_state ) +static MACHINE_CONFIG_START( siemens ) /* basic machine hardware */ MCFG_CPU_PC(pc8, pc8, I8088, XTAL_14_31818MHz/3) /* 4,77 MHz */ @@ -584,7 +584,7 @@ MACHINE_CONFIG_END // IBM 5550 -static MACHINE_CONFIG_START( ibm5550, pc_state ) +static MACHINE_CONFIG_START( ibm5550 ) /* basic machine hardware */ MCFG_CPU_PC(pc16, ibm5550, I8086, 8000000) @@ -639,7 +639,7 @@ MACHINE_CONFIG_END //Laser XT/3 -static MACHINE_CONFIG_START( laser_xt3, pc_state ) +static MACHINE_CONFIG_START( laser_xt3 ) MCFG_CPU_PC(pc8, pc8, I8088, XTAL_14_31818MHz/3) /* 4,77 MHz */ MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu") @@ -668,7 +668,7 @@ MACHINE_CONFIG_END //Laser Turbo XT -static MACHINE_CONFIG_START( laser_turbo_xt, pc_state ) +static MACHINE_CONFIG_START( laser_turbo_xt ) MCFG_CPU_PC(pc8, pc8, I8088, XTAL_14_31818MHz/3) /* 4,77 MHz */ MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu") @@ -888,26 +888,26 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1984, dgone, ibm5150, 0, dgone, pccga, driver_device, 0, "Data General", "Data General/One" , MACHINE_NOT_WORKING)/* CGA, 2x 3.5" disk drives */ -COMP( 1985, bw230, ibm5150, 0, bondwell, bondwell, pc_state, bondwell, "Bondwell Holding", "BW230 (PRO28 Series)", 0 ) -COMP( 1984, compc1, ibm5150, 0, pccga, pccga, driver_device, 0, "Commodore Business Machines", "Commodore PC-1" , MACHINE_NOT_WORKING) -COMP( 1987, pc10iii, ibm5150, 0, pccga, pccga, driver_device, 0, "Commodore Business Machines", "Commodore PC-10 III" , MACHINE_NOT_WORKING) -COMP( 1992, iskr3104, ibm5150, 0, iskr3104, pccga, driver_device, 0, "Schetmash", "Iskra 3104", MACHINE_NOT_WORKING) -COMP( 1989, mk88, ibm5150, 0, mk88, pccga, driver_device, 0, "", "MK-88", MACHINE_NOT_WORKING) -COMP( 1991, poisk2, ibm5150, 0, poisk2, pccga, driver_device, 0, "", "Poisk-2", MACHINE_NOT_WORKING) -COMP( 1990, mc1702, ibm5150, 0, pccga, pccga, driver_device, 0, "", "Elektronika MC-1702", MACHINE_NOT_WORKING) -COMP( 1987, zdsupers, ibm5150, 0, zenith, pccga, driver_device, 0, "Zenith Data Systems", "SuperSport", 0) -COMP( 1985, sicpc1605, ibm5150, 0, siemens, pccga, driver_device, 0, "Siemens", "Sicomp PC16-05", MACHINE_NOT_WORKING) -COMP( 1985, ncrpc4i, ibm5150, 0, ncrpc4i, pccga, driver_device, 0, "NCR", "PC4i", MACHINE_NOT_WORKING) -COMP( 198?, olivm15, ibm5150, 0, m15, pccga, driver_device, 0, "Olivetti", "M15", 0) -COMP( 1983, ibm5550, ibm5150, 0, ibm5550, pccga, driver_device, 0, "International Business Machines", "IBM 5550", MACHINE_NOT_WORKING) -COMP( 1985, pc7000, ibm5150, 0, pccga, pccga, driver_device, 0, "Sharp", "PC-7000", MACHINE_NOT_WORKING) -COMP( 1988, sx16, ibm5150, 0, pccga, pccga, driver_device, 0, "Sanyo", "SX-16", MACHINE_NOT_WORKING) -COMP( 198?, mbc16, ibm5150, 0, pccga, pccga, driver_device, 0, "Sanyo", "MBC-16" , MACHINE_NOT_WORKING) -COMP( 1987, ataripc1, ibm5150, 0, ataripc1, pccga, driver_device, 0, "Atari", "PC1" , 0) -COMP( 1988, ataripc3, ibm5150, 0, pccga, pccga, driver_device, 0, "Atari", "PC3" , 0) -COMP( 1989, ssam88s, ibm5150, 0, pccga, pccga, driver_device, 0, "Samsung", "Samtron 88S" , MACHINE_NOT_WORKING) -COMP( 1983, eagle1600, ibm5150, 0, eagle1600, pccga, driver_device, 0, "Eagle", "1600" , MACHINE_NOT_WORKING) -COMP( 1988, laser_turbo_xt, ibm5150, 0, laser_turbo_xt, 0, driver_device, 0, "VTech", "Laser Turbo XT" , 0) -COMP( 1989, laser_xt3, ibm5150, 0, laser_xt3, 0, driver_device, 0, "VTech", "Laser XT/3" , 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, dgone, ibm5150, 0, dgone, pccga, pc_state, 0, "Data General", "Data General/One" , MACHINE_NOT_WORKING ) // CGA, 2x 3.5" disk drives +COMP( 1985, bw230, ibm5150, 0, bondwell, bondwell, pc_state, bondwell, "Bondwell Holding", "BW230 (PRO28 Series)", 0 ) +COMP( 1984, compc1, ibm5150, 0, pccga, pccga, pc_state, 0, "Commodore Business Machines", "Commodore PC-1" , MACHINE_NOT_WORKING ) +COMP( 1987, pc10iii, ibm5150, 0, pccga, pccga, pc_state, 0, "Commodore Business Machines", "Commodore PC-10 III", MACHINE_NOT_WORKING ) +COMP( 1992, iskr3104, ibm5150, 0, iskr3104, pccga, pc_state, 0, "Schetmash", "Iskra 3104", MACHINE_NOT_WORKING ) +COMP( 1989, mk88, ibm5150, 0, mk88, pccga, pc_state, 0, "", "MK-88", MACHINE_NOT_WORKING ) +COMP( 1991, poisk2, ibm5150, 0, poisk2, pccga, pc_state, 0, "", "Poisk-2", MACHINE_NOT_WORKING ) +COMP( 1990, mc1702, ibm5150, 0, pccga, pccga, pc_state, 0, "", "Elektronika MC-1702", MACHINE_NOT_WORKING ) +COMP( 1987, zdsupers, ibm5150, 0, zenith, pccga, pc_state, 0, "Zenith Data Systems", "SuperSport", 0 ) +COMP( 1985, sicpc1605, ibm5150, 0, siemens, pccga, pc_state, 0, "Siemens", "Sicomp PC16-05", MACHINE_NOT_WORKING ) +COMP( 1985, ncrpc4i, ibm5150, 0, ncrpc4i, pccga, pc_state, 0, "NCR", "PC4i", MACHINE_NOT_WORKING ) +COMP( 198?, olivm15, ibm5150, 0, m15, pccga, pc_state, 0, "Olivetti", "M15", 0 ) +COMP( 1983, ibm5550, ibm5150, 0, ibm5550, pccga, pc_state, 0, "International Business Machines", "IBM 5550", MACHINE_NOT_WORKING ) +COMP( 1985, pc7000, ibm5150, 0, pccga, pccga, pc_state, 0, "Sharp", "PC-7000", MACHINE_NOT_WORKING ) +COMP( 1988, sx16, ibm5150, 0, pccga, pccga, pc_state, 0, "Sanyo", "SX-16", MACHINE_NOT_WORKING ) +COMP( 198?, mbc16, ibm5150, 0, pccga, pccga, pc_state, 0, "Sanyo", "MBC-16", MACHINE_NOT_WORKING ) +COMP( 1987, ataripc1, ibm5150, 0, ataripc1, pccga, pc_state, 0, "Atari", "PC1" , 0 ) +COMP( 1988, ataripc3, ibm5150, 0, pccga, pccga, pc_state, 0, "Atari", "PC3" , 0 ) +COMP( 1989, ssam88s, ibm5150, 0, pccga, pccga, pc_state, 0, "Samsung", "Samtron 88S" , MACHINE_NOT_WORKING ) +COMP( 1983, eagle1600, ibm5150, 0, eagle1600, pccga, pc_state, 0, "Eagle", "1600" , MACHINE_NOT_WORKING ) +COMP( 1988, laser_turbo_xt, ibm5150, 0, laser_turbo_xt, 0, pc_state, 0, "VTech", "Laser Turbo XT", 0 ) +COMP( 1989, laser_xt3, ibm5150, 0, laser_xt3, 0, pc_state, 0, "VTech", "Laser XT/3", 0 ) diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp index c31e5a30128..a60f9ead634 100644 --- a/src/mame/drivers/pc100.cpp +++ b/src/mame/drivers/pc100.cpp @@ -490,7 +490,7 @@ SLOT_INTERFACE_END #define MASTER_CLOCK 6988800 -static MACHINE_CONFIG_START( pc100, pc100_state ) +static MACHINE_CONFIG_START( pc100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, MASTER_CLOCK) MCFG_CPU_PROGRAM_MAP(pc100_map) @@ -564,5 +564,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, pc100, 0, 0, pc100, pc100, driver_device, 0, "NEC", "PC-100", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, pc100, 0, 0, pc100, pc100, pc100_state, 0, "NEC", "PC-100", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/pc1500.cpp b/src/mame/drivers/pc1500.cpp index c359696f279..1620a6a84e8 100644 --- a/src/mame/drivers/pc1500.cpp +++ b/src/mame/drivers/pc1500.cpp @@ -262,7 +262,7 @@ PALETTE_INIT_MEMBER(pc1500_state, pc1500) palette.set_pen_color(1, rgb_t(92, 83, 88)); } -static MACHINE_CONFIG_START( pc1500, pc1500_state ) +static MACHINE_CONFIG_START( pc1500 ) MCFG_CPU_ADD("maincpu", LH5801, 1300000) //1.3 MHz MCFG_CPU_PROGRAM_MAP( pc1500_mem ) MCFG_CPU_IO_MAP( pc1500_mem_io ) @@ -298,5 +298,5 @@ ROM_START( pc1500 ) ROM_LOAD( "ce-150.rom", 0x0000, 0x2000, CRC(8fa1df6d) SHA1(a3aa02a641a46c27c0d4c0dc025b0dbe9b5b79c8)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 198?, pc1500, 0, 0, pc1500, pc1500, driver_device, 0, "Sharp", "Pocket Computer 1500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, pc1500, 0, 0, pc1500, pc1500, pc1500_state, 0, "Sharp", "Pocket Computer 1500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/pc1512.cpp b/src/mame/drivers/pc1512.cpp index aad7d0d066c..6e9ac05eb9b 100644 --- a/src/mame/drivers/pc1512.cpp +++ b/src/mame/drivers/pc1512.cpp @@ -1181,7 +1181,7 @@ void pc1640_state::machine_reset() // MACHINE_CONFIG( pc1512 ) //------------------------------------------------- -static MACHINE_CONFIG_START( pc1512, pc1512_state ) +static MACHINE_CONFIG_START( pc1512 ) MCFG_CPU_ADD(I8086_TAG, I8086, XTAL_24MHz/3) MCFG_CPU_PROGRAM_MAP(pc1512_mem) MCFG_CPU_IO_MAP(pc1512_io) @@ -1203,8 +1203,8 @@ static MACHINE_CONFIG_START( pc1512, pc1512_state ) MCFG_PC1512_MOUSE_PORT_ADD(PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse") MCFG_PC1512_MOUSE_PORT_X_CB(WRITE8(pc1512_state, mouse_x_w)) MCFG_PC1512_MOUSE_PORT_Y_CB(WRITE8(pc1512_state, mouse_y_w)) - MCFG_PC1512_MOUSE_PORT_M1_CB(DEVWRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_t, m1_w)) - MCFG_PC1512_MOUSE_PORT_M2_CB(DEVWRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_t, m2_w)) + MCFG_PC1512_MOUSE_PORT_M1_CB(DEVWRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w)) + MCFG_PC1512_MOUSE_PORT_M2_CB(DEVWRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w)) MCFG_DEVICE_ADD(I8237A5_TAG, AM9517A, XTAL_24MHz/6) MCFG_I8237_OUT_HREQ_CB(WRITELINE(pc1512_state, hrq_w)) @@ -1314,7 +1314,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( pc1640 ) //------------------------------------------------- -static MACHINE_CONFIG_START( pc1640, pc1640_state ) +static MACHINE_CONFIG_START( pc1640 ) MCFG_CPU_ADD(I8086_TAG, I8086, XTAL_24MHz/3) MCFG_CPU_PROGRAM_MAP(pc1640_mem) MCFG_CPU_IO_MAP(pc1640_io) @@ -1333,8 +1333,8 @@ static MACHINE_CONFIG_START( pc1640, pc1640_state ) MCFG_PC1512_MOUSE_PORT_ADD(PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse") MCFG_PC1512_MOUSE_PORT_X_CB(WRITE8(pc1512_state, mouse_x_w)) MCFG_PC1512_MOUSE_PORT_Y_CB(WRITE8(pc1512_state, mouse_y_w)) - MCFG_PC1512_MOUSE_PORT_M1_CB(DEVWRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_t, m1_w)) - MCFG_PC1512_MOUSE_PORT_M2_CB(DEVWRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_t, m2_w)) + MCFG_PC1512_MOUSE_PORT_M1_CB(DEVWRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w)) + MCFG_PC1512_MOUSE_PORT_M2_CB(DEVWRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w)) MCFG_DEVICE_ADD(I8237A5_TAG, AM9517A, XTAL_24MHz/6) MCFG_I8237_OUT_HREQ_CB(WRITELINE(pc1512_state, hrq_w)) @@ -1500,12 +1500,12 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1986, pc1512, 0, 0, pc1512, pc1512, driver_device, 0, "Amstrad plc", "PC1512 SD", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, pc1512dd, pc1512, 0, pc1512dd, pc1512, driver_device, 0, "Amstrad plc", "PC1512 DD", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, pc1512hd10, pc1512, 0, pc1512hd, pc1512, driver_device, 0, "Amstrad plc", "PC1512 HD10", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, pc1512hd20, pc1512, 0, pc1512hd, pc1512, driver_device, 0, "Amstrad plc", "PC1512 HD20", MACHINE_SUPPORTS_SAVE ) -COMP( 1987, pc1640, 0, 0, pc1640, pc1640, driver_device, 0, "Amstrad plc", "PC1640 SD", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -COMP( 1987, pc1640dd, pc1640, 0, pc1640dd, pc1640, driver_device, 0, "Amstrad plc", "PC1640 DD", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -COMP( 1987, pc1640hd20, pc1640, 0, pc1640hd, pc1640, driver_device, 0, "Amstrad plc", "PC1640 HD20", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -COMP( 1987, pc1640hd30, pc1640, 0, pc1640hd, pc1640, driver_device, 0, "Amstrad plc", "PC1640 HD30", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, pc1512, 0, 0, pc1512, pc1512, pc1512_state, 0, "Amstrad plc", "PC1512 SD", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, pc1512dd, pc1512, 0, pc1512dd, pc1512, pc1512_state, 0, "Amstrad plc", "PC1512 DD", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, pc1512hd10, pc1512, 0, pc1512hd, pc1512, pc1512_state, 0, "Amstrad plc", "PC1512 HD10", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, pc1512hd20, pc1512, 0, pc1512hd, pc1512, pc1512_state, 0, "Amstrad plc", "PC1512 HD20", MACHINE_SUPPORTS_SAVE ) +COMP( 1987, pc1640, 0, 0, pc1640, pc1640, pc1640_state, 0, "Amstrad plc", "PC1640 SD", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +COMP( 1987, pc1640dd, pc1640, 0, pc1640dd, pc1640, pc1640_state, 0, "Amstrad plc", "PC1640 DD", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +COMP( 1987, pc1640hd20, pc1640, 0, pc1640hd, pc1640, pc1640_state, 0, "Amstrad plc", "PC1640 HD20", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +COMP( 1987, pc1640hd30, pc1640, 0, pc1640hd, pc1640, pc1640_state, 0, "Amstrad plc", "PC1640 HD30", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pc2000.cpp b/src/mame/drivers/pc2000.cpp index 85d433e195a..82c8d85f16e 100644 --- a/src/mame/drivers/pc2000.cpp +++ b/src/mame/drivers/pc2000.cpp @@ -829,7 +829,7 @@ DEVICE_IMAGE_LOAD_MEMBER( pc2000_state, pc2000_cart ) return image_init_result::PASS; } -static MACHINE_CONFIG_START( pc2000, pc2000_state ) +static MACHINE_CONFIG_START( pc2000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) /* probably not accurate */ MCFG_CPU_PROGRAM_MAP(pc2000_mem) @@ -886,7 +886,7 @@ HD44780_PIXEL_UPDATE(gl4004_state::gl4000_pixel_update) } } -static MACHINE_CONFIG_DERIVED_CLASS( gl3000s, pc2000, gl3000s_state ) +static MACHINE_CONFIG_DERIVED( gl3000s, pc2000 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(gl3000s_io) @@ -907,7 +907,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( gl3000s, pc2000, gl3000s_state ) MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( gl4000, pc2000, gl4004_state ) +static MACHINE_CONFIG_DERIVED( gl4000, pc2000 ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_SIZE(120, 36) // 4x20 chars MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 36-1) @@ -920,7 +920,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( gl4000, pc2000, gl4004_state ) MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( misterx, pc2000, pc1000_state ) +static MACHINE_CONFIG_DERIVED( misterx, pc2000 ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(pc1000_mem) @@ -1036,21 +1036,21 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1988, pc1000, 0, 0, pc1000, pc1000, driver_device, 0, "Video Technology", "PreComputer 1000", MACHINE_NOT_WORKING) -COMP( 1988, misterx, 0, 0, misterx, pc1000, driver_device, 0, "Video Technology / Yeno", "MisterX", MACHINE_NOT_WORKING) -COMP( 1988, ordisava, 0, 0, pc1000, pc1000, driver_device, 0, "Video Technology", "Ordisavant (France)", MACHINE_NOT_WORKING) -COMP( 1993, pc2000, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "PreComputer 2000", MACHINE_NOT_WORKING) -COMP( 1993, gl2000, 0, 0, gl2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 2000", MACHINE_NOT_WORKING) -COMP( 1994, gl2000c, gl2000, 0, gl2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 2000 Compact", MACHINE_NOT_WORKING) -COMP( 1995, gl2000p, gl2000, 0, gl2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 2000 Plus", MACHINE_NOT_WORKING) -COMP( 1996, gl3000s, 0, 0, gl3000s, gl3000s,driver_device, 0, "Video Technology", "Genius Leader 3000S (Germany)", MACHINE_NOT_WORKING) -COMP( 1994, gl4000, 0, 0, gl4000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 4000 Quadro (Germany)", MACHINE_NOT_WORKING) -COMP( 1996, gl4004, 0, 0, gl4000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 4004 Quadro L (Germany)", MACHINE_NOT_WORKING) -COMP( 1997, gl5000, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 5000 (Germany)", MACHINE_IS_SKELETON) -COMP( 1997, gl5005x, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 5005X (Germany)", MACHINE_IS_SKELETON) -COMP( 1997, glpn, 0, 0, gl4000, pc2000, driver_device, 0, "Video Technology", "Genius Leader Power Notebook (Germany)", MACHINE_IS_SKELETON) -COMP( 1998, gmtt , 0, 0, gl4000, pc2000, driver_device, 0, "Video Technology", "Genius Master Table Top (Germany)", MACHINE_IS_SKELETON) -COMP( 2001, gbs5505x, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "Genius BrainStation 5505X (Germany)", MACHINE_IS_SKELETON) -COMP( 1993, gln, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader Notebook", MACHINE_IS_SKELETON) -COMP( 1999, lexipcm, 0, 0, pc2000, pc2000, driver_device, 0, "Lexibook", "LexiPC Mega 2000 (Germany)", MACHINE_IS_SKELETON) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1988, pc1000, 0, 0, pc1000, pc1000, pc1000_state, 0, "Video Technology", "PreComputer 1000", MACHINE_NOT_WORKING ) +COMP( 1988, misterx, 0, 0, misterx, pc1000, pc1000_state, 0, "Video Technology / Yeno", "MisterX", MACHINE_NOT_WORKING ) +COMP( 1988, ordisava, 0, 0, pc1000, pc1000, pc1000_state, 0, "Video Technology", "Ordisavant (France)", MACHINE_NOT_WORKING ) +COMP( 1993, pc2000, 0, 0, pc2000, pc2000, pc2000_state, 0, "Video Technology", "PreComputer 2000", MACHINE_NOT_WORKING ) +COMP( 1993, gl2000, 0, 0, gl2000, pc2000, pc2000_state, 0, "Video Technology", "Genius Leader 2000", MACHINE_NOT_WORKING ) +COMP( 1994, gl2000c, gl2000, 0, gl2000, pc2000, pc2000_state, 0, "Video Technology", "Genius Leader 2000 Compact", MACHINE_NOT_WORKING ) +COMP( 1995, gl2000p, gl2000, 0, gl2000, pc2000, pc2000_state, 0, "Video Technology", "Genius Leader 2000 Plus", MACHINE_NOT_WORKING ) +COMP( 1996, gl3000s, 0, 0, gl3000s, gl3000s, gl3000s_state, 0, "Video Technology", "Genius Leader 3000S (Germany)", MACHINE_NOT_WORKING ) +COMP( 1994, gl4000, 0, 0, gl4000, pc2000, gl4004_state, 0, "Video Technology", "Genius Leader 4000 Quadro (Germany)", MACHINE_NOT_WORKING ) +COMP( 1996, gl4004, 0, 0, gl4000, pc2000, gl4004_state, 0, "Video Technology", "Genius Leader 4004 Quadro L (Germany)", MACHINE_NOT_WORKING ) +COMP( 1997, gl5000, 0, 0, pc2000, pc2000, pc2000_state, 0, "Video Technology", "Genius Leader 5000 (Germany)", MACHINE_IS_SKELETON ) +COMP( 1997, gl5005x, 0, 0, pc2000, pc2000, pc2000_state, 0, "Video Technology", "Genius Leader 5005X (Germany)", MACHINE_IS_SKELETON ) +COMP( 1997, glpn, 0, 0, gl4000, pc2000, gl4004_state, 0, "Video Technology", "Genius Leader Power Notebook (Germany)", MACHINE_IS_SKELETON ) +COMP( 1998, gmtt , 0, 0, gl4000, pc2000, gl4004_state, 0, "Video Technology", "Genius Master Table Top (Germany)", MACHINE_IS_SKELETON ) +COMP( 2001, gbs5505x, 0, 0, pc2000, pc2000, pc2000_state, 0, "Video Technology", "Genius BrainStation 5505X (Germany)", MACHINE_IS_SKELETON ) +COMP( 1993, gln, 0, 0, pc2000, pc2000, pc2000_state, 0, "Video Technology", "Genius Leader Notebook", MACHINE_IS_SKELETON ) +COMP( 1999, lexipcm, 0, 0, pc2000, pc2000, pc2000_state, 0, "Lexibook", "LexiPC Mega 2000 (Germany)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/pc4.cpp b/src/mame/drivers/pc4.cpp index 1aa193eb344..fdbc5588278 100644 --- a/src/mame/drivers/pc4.cpp +++ b/src/mame/drivers/pc4.cpp @@ -216,7 +216,7 @@ void pc4_state::machine_start() m_blink = 0; } -static MACHINE_CONFIG_START( pc4, pc4_state ) +static MACHINE_CONFIG_START( pc4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(pc4_mem) @@ -250,5 +250,5 @@ ROM_START( pc4 ) ROM_LOAD( "44780a00.bin", 0x0000, 0x0860, BAD_DUMP CRC(3a89024c) SHA1(5a87b68422a916d1b37b5be1f7ad0b3fb3af5a8d)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1990, pc4, 0, 0, pc4, pc4, driver_device, 0, "Laser Computer", "Laser PC4", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1990, pc4, 0, 0, pc4, pc4, pc4_state, 0, "Laser Computer", "Laser PC4", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pc6001.cpp b/src/mame/drivers/pc6001.cpp index 9fd2c50a98f..0471b58f8e5 100644 --- a/src/mame/drivers/pc6001.cpp +++ b/src/mame/drivers/pc6001.cpp @@ -2270,7 +2270,7 @@ GFXDECODE_END #define PC6001_MAIN_CLOCK 7987200 -static MACHINE_CONFIG_START( pc6001, pc6001_state ) +static MACHINE_CONFIG_START( pc6001 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, PC6001_MAIN_CLOCK / 2) // ~4 Mhz MCFG_CPU_PROGRAM_MAP(pc6001_map) @@ -2464,9 +2464,9 @@ ROM_START( pc6001sr ) ROM_COPY( "maincpu", 0x28000, 0x00000, 0x8000 ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, pc6001, 0, 0, pc6001, pc6001, driver_device, 0, "NEC", "PC-6001 (Japan)", MACHINE_NOT_WORKING ) -COMP( 1981, pc6001a, pc6001, 0, pc6001, pc6001, driver_device, 0, "NEC", "PC-6001A (US)", MACHINE_NOT_WORKING ) // This version is also known as the NEC Trek -COMP( 1983, pc6001mk2,pc6001, 0, pc6001m2, pc6001, driver_device, 0, "NEC", "PC-6001mkII (Japan)", MACHINE_NOT_WORKING ) -COMP( 1983, pc6601, pc6001, 0, pc6601, pc6001, driver_device, 0, "NEC", "PC-6601 (Japan)", MACHINE_NOT_WORKING ) -COMP( 1984, pc6001sr, pc6001, 0, pc6001sr, pc6001, driver_device, 0, "NEC", "PC-6001mkIISR (Japan)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, pc6001, 0, 0, pc6001, pc6001, pc6001_state, 0, "NEC", "PC-6001 (Japan)", MACHINE_NOT_WORKING ) +COMP( 1981, pc6001a, pc6001, 0, pc6001, pc6001, pc6001_state, 0, "NEC", "PC-6001A (US)", MACHINE_NOT_WORKING ) // This version is also known as the NEC Trek +COMP( 1983, pc6001mk2,pc6001, 0, pc6001m2, pc6001, pc6001_state, 0, "NEC", "PC-6001mkII (Japan)", MACHINE_NOT_WORKING ) +COMP( 1983, pc6601, pc6001, 0, pc6601, pc6001, pc6001_state, 0, "NEC", "PC-6601 (Japan)", MACHINE_NOT_WORKING ) +COMP( 1984, pc6001sr, pc6001, 0, pc6001sr, pc6001, pc6001_state, 0, "NEC", "PC-6001mkIISR (Japan)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pc8001.cpp b/src/mame/drivers/pc8001.cpp index eba3531fb75..dc3e7ffdd65 100644 --- a/src/mame/drivers/pc8001.cpp +++ b/src/mame/drivers/pc8001.cpp @@ -476,7 +476,7 @@ void pc8001_state::machine_start() /* Machine Drivers */ -static MACHINE_CONFIG_START( pc8001, pc8001_state ) +static MACHINE_CONFIG_START( pc8001 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(pc8001_mem) @@ -526,7 +526,7 @@ static MACHINE_CONFIG_START( pc8001, pc8001_state ) MCFG_RAM_EXTRA_OPTIONS("32K,64K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pc8001mk2, pc8001mk2_state ) +static MACHINE_CONFIG_START( pc8001mk2 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(pc8001mk2_mem) @@ -601,6 +601,6 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, pc8001, 0, 0, pc8001, pc8001, driver_device, 0, "NEC", "PC-8001", MACHINE_NOT_WORKING ) -COMP( 1983, pc8001mk2, pc8001, 0, pc8001mk2, pc8001, driver_device, 0, "NEC", "PC-8001mkII", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1979, pc8001, 0, 0, pc8001, pc8001, pc8001_state, 0, "NEC", "PC-8001", MACHINE_NOT_WORKING ) +COMP( 1983, pc8001mk2, pc8001, 0, pc8001mk2, pc8001, pc8001mk2_state, 0, "NEC", "PC-8001mkII", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp index e14aa8b7c26..08a6558e6cd 100644 --- a/src/mame/drivers/pc8401a.cpp +++ b/src/mame/drivers/pc8401a.cpp @@ -568,7 +568,7 @@ WRITE8_MEMBER( pc8401a_state::ppi_pc_w ) /* Machine Drivers */ -static MACHINE_CONFIG_START( pc8401a, pc8401a_state ) +static MACHINE_CONFIG_START( pc8401a ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, 4000000) // NEC uPD70008C MCFG_CPU_PROGRAM_MAP(pc8401a_mem) @@ -610,7 +610,7 @@ static MACHINE_CONFIG_START( pc8401a, pc8401a_state ) MCFG_RAM_EXTRA_OPTIONS("96K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pc8500, pc8500_state ) +static MACHINE_CONFIG_START( pc8500 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, 4000000) // NEC uPD70008C MCFG_CPU_PROGRAM_MAP(pc8401a_mem) @@ -673,6 +673,6 @@ ROM_END /* System Drivers */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1984, pc8401a, 0, 0, pc8401a, pc8401a, driver_device, 0, "NEC", "PC-8401A-LS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -//COMP( 1984, pc8401bd, pc8401a,0, pc8401a, pc8401a, driver_device, 0, "NEC", "PC-8401BD", MACHINE_NOT_WORKING) -COMP( 1985, pc8500, 0, 0, pc8500, pc8401a, driver_device, 0, "NEC", "PC-8500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1984, pc8401a, 0, 0, pc8401a, pc8401a, pc8401a_state, 0, "NEC", "PC-8401A-LS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +//COMP( 1984, pc8401bd, pc8401a,0, pc8401a, pc8401a, pc8401a_state, 0, "NEC", "PC-8401BD", MACHINE_NOT_WORKING) +COMP( 1985, pc8500, 0, 0, pc8500, pc8401a, pc8500_state, 0, "NEC", "PC-8500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp index e349c9af39e..990fa861155 100644 --- a/src/mame/drivers/pc8801.cpp +++ b/src/mame/drivers/pc8801.cpp @@ -2565,7 +2565,7 @@ WRITE_LINE_MEMBER( pc8801_state::rxrdy_w ) // ... } -static MACHINE_CONFIG_START( pc8801, pc8801_state ) +static MACHINE_CONFIG_START( pc8801 ) /* main CPU */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* 4 MHz */ MCFG_CPU_PROGRAM_MAP(pc8801_mem) @@ -2946,21 +2946,21 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1981, pc8801, 0, 0, pc8801, pc88sr, driver_device, 0, "NEC", "PC-8801", MACHINE_NOT_WORKING ) -COMP( 1983, pc8801mk2, pc8801, 0, pc8801, pc88sr, driver_device, 0, "NEC", "PC-8801mkII", MACHINE_NOT_WORKING ) -COMP( 1985, pc8801mk2sr, pc8801, 0, pc8801, pc88sr, driver_device, 0, "NEC", "PC-8801mkIISR", MACHINE_NOT_WORKING ) -//COMP( 1985, pc8801mk2tr, pc8801, 0, pc8801, pc88sr, driver_device, 0, "NEC", "PC-8801mkIITR", MACHINE_NOT_WORKING ) -COMP( 1985, pc8801mk2fr, pc8801, 0, pc8801, pc88sr, driver_device, 0, "NEC", "PC-8801mkIIFR", MACHINE_NOT_WORKING ) -COMP( 1985, pc8801mk2mr, pc8801, 0, pc8801, pc88sr, driver_device, 0, "NEC", "PC-8801mkIIMR", MACHINE_NOT_WORKING ) - -//COMP( 1986, pc8801fh, 0, 0, pc8801, pc88sr, driver_device, 0, "NEC", "PC-8801FH", MACHINE_NOT_WORKING ) -COMP( 1986, pc8801mh, pc8801, 0, pc8801fh, pc88sr, driver_device, 0, "NEC", "PC-8801MH", MACHINE_NOT_WORKING ) -COMP( 1987, pc8801fa, pc8801, 0, pc8801fh, pc88sr, driver_device, 0, "NEC", "PC-8801FA", MACHINE_NOT_WORKING ) -COMP( 1987, pc8801ma, pc8801, 0, pc8801ma, pc88sr, driver_device, 0, "NEC", "PC-8801MA", MACHINE_NOT_WORKING ) -//COMP( 1988, pc8801fe, pc8801, 0, pc8801, pc88sr, driver_device, 0, "NEC", "PC-8801FE", MACHINE_NOT_WORKING ) -COMP( 1988, pc8801ma2, pc8801, 0, pc8801ma, pc88sr, driver_device, 0, "NEC", "PC-8801MA2", MACHINE_NOT_WORKING ) -//COMP( 1989, pc8801fe2, pc8801, 0, pc8801, pc88sr, driver_device, 0, "NEC", "PC-8801FE2", MACHINE_NOT_WORKING ) -COMP( 1989, pc8801mc, pc8801, 0, pc8801mc, pc88sr, driver_device, 0, "NEC", "PC-8801MC", MACHINE_NOT_WORKING ) - -//COMP( 1989, pc98do, 0, 0, pc88va, pc88sr, driver_device, 0, "NEC", "PC-98DO", MACHINE_NOT_WORKING ) -//COMP( 1990, pc98dop, 0, 0, pc88va, pc88sr, driver_device, 0, "NEC", "PC-98DO+", MACHINE_NOT_WORKING ) +COMP( 1981, pc8801, 0, 0, pc8801, pc88sr, pc8801_state, 0, "NEC", "PC-8801", MACHINE_NOT_WORKING ) +COMP( 1983, pc8801mk2, pc8801, 0, pc8801, pc88sr, pc8801_state, 0, "NEC", "PC-8801mkII", MACHINE_NOT_WORKING ) +COMP( 1985, pc8801mk2sr, pc8801, 0, pc8801, pc88sr, pc8801_state, 0, "NEC", "PC-8801mkIISR", MACHINE_NOT_WORKING ) +//COMP( 1985, pc8801mk2tr, pc8801, 0, pc8801, pc88sr, pc8801_state, 0, "NEC", "PC-8801mkIITR", MACHINE_NOT_WORKING ) +COMP( 1985, pc8801mk2fr, pc8801, 0, pc8801, pc88sr, pc8801_state, 0, "NEC", "PC-8801mkIIFR", MACHINE_NOT_WORKING ) +COMP( 1985, pc8801mk2mr, pc8801, 0, pc8801, pc88sr, pc8801_state, 0, "NEC", "PC-8801mkIIMR", MACHINE_NOT_WORKING ) + +//COMP( 1986, pc8801fh, 0, 0, pc8801, pc88sr, pc8801_state, 0, "NEC", "PC-8801FH", MACHINE_NOT_WORKING ) +COMP( 1986, pc8801mh, pc8801, 0, pc8801fh, pc88sr, pc8801_state, 0, "NEC", "PC-8801MH", MACHINE_NOT_WORKING ) +COMP( 1987, pc8801fa, pc8801, 0, pc8801fh, pc88sr, pc8801_state, 0, "NEC", "PC-8801FA", MACHINE_NOT_WORKING ) +COMP( 1987, pc8801ma, pc8801, 0, pc8801ma, pc88sr, pc8801_state, 0, "NEC", "PC-8801MA", MACHINE_NOT_WORKING ) +//COMP( 1988, pc8801fe, pc8801, 0, pc8801, pc88sr, pc8801_state, 0, "NEC", "PC-8801FE", MACHINE_NOT_WORKING ) +COMP( 1988, pc8801ma2, pc8801, 0, pc8801ma, pc88sr, pc8801_state, 0, "NEC", "PC-8801MA2", MACHINE_NOT_WORKING ) +//COMP( 1989, pc8801fe2, pc8801, 0, pc8801, pc88sr, pc8801_state, 0, "NEC", "PC-8801FE2", MACHINE_NOT_WORKING ) +COMP( 1989, pc8801mc, pc8801, 0, pc8801mc, pc88sr, pc8801_state, 0, "NEC", "PC-8801MC", MACHINE_NOT_WORKING ) + +//COMP( 1989, pc98do, 0, 0, pc88va, pc88sr, pc8801_state, 0, "NEC", "PC-98DO", MACHINE_NOT_WORKING ) +//COMP( 1990, pc98dop, 0, 0, pc88va, pc88sr, pc8801_state, 0, "NEC", "PC-98DO+", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp index e59c01fc642..894b6f370c9 100644 --- a/src/mame/drivers/pc88va.cpp +++ b/src/mame/drivers/pc88va.cpp @@ -1779,7 +1779,7 @@ printf("%08x %02x\n",offset,data); } -static MACHINE_CONFIG_START( pc88va, pc88va_state ) +static MACHINE_CONFIG_START( pc88va ) MCFG_CPU_ADD("maincpu", V30, 8000000) /* 8 MHz */ MCFG_CPU_PROGRAM_MAP(pc88va_map) @@ -1918,6 +1918,6 @@ ROM_END -COMP( 1987, pc88va, 0, 0, pc88va, pc88va, driver_device, 0, "NEC", "PC-88VA", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1988, pc88va2, pc88va, 0, pc88va, pc88va, driver_device, 0, "NEC", "PC-88VA2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -//COMP( 1988, pc88va3, pc88va, 0, pc88va, pc88va, driver_device, 0, "NEC", "PC-88VA3", MACHINE_NOT_WORKING ) +COMP( 1987, pc88va, 0, 0, pc88va, pc88va, pc88va_state, 0, "NEC", "PC-88VA", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1988, pc88va2, pc88va, 0, pc88va, pc88va, pc88va_state, 0, "NEC", "PC-88VA2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +//COMP( 1988, pc88va3, pc88va, 0, pc88va, pc88va, pc88va_state, 0, "NEC", "PC-88VA3", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp index 21ffd872f2a..71bb1dbb3b7 100644 --- a/src/mame/drivers/pc9801.cpp +++ b/src/mame/drivers/pc9801.cpp @@ -483,7 +483,7 @@ public: required_device m_sio; required_device m_hgdc1; required_device m_hgdc2; - optional_device m_sasibus; + optional_device m_sasibus; optional_device m_sasi_data_out; optional_device m_sasi_data_in; optional_device m_sasi_ctrl_in; @@ -3365,7 +3365,7 @@ static MACHINE_CONFIG_FRAGMENT( pc9801_common ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", pc9801) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pc9801, pc9801_state ) +static MACHINE_CONFIG_START( pc9801 ) MCFG_CPU_ADD("maincpu", I8086, 5000000) //unknown clock MCFG_CPU_PROGRAM_MAP(pc9801_map) MCFG_CPU_IO_MAP(pc9801_io) @@ -3400,7 +3400,7 @@ static MACHINE_CONFIG_START( pc9801, pc9801_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pc9801rs, pc9801_state ) +static MACHINE_CONFIG_START( pc9801rs ) MCFG_CPU_ADD("maincpu", I386SX, MAIN_CLOCK_X1*8) // unknown clock. MCFG_CPU_PROGRAM_MAP(pc9801rs_map) MCFG_CPU_IO_MAP(pc9801rs_io) @@ -3944,20 +3944,20 @@ DRIVER_INIT_MEMBER(pc9801_state,pc9801_kanji) } /* Genuine dumps */ -COMP( 1983, pc9801f, 0, 0, pc9801, pc9801, pc9801_state, pc9801_kanji, "NEC", "PC-9801F", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1983, pc9801f, 0, 0, pc9801, pc9801, pc9801_state, pc9801_kanji, "NEC", "PC-9801F", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) /* TODO: ANYTHING below there needs REDUMPING! */ -COMP( 1989, pc9801rs, 0 ,0, pc9801rs, pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801RS", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) //TODO: not sure about the exact model -COMP( 1985, pc9801vm, pc9801ux,0, pc9801vm, pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801VM", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1987, pc9801ux, 0 ,0, pc9801ux, pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801UX", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1988, pc9801rx, pc9801rs,0, pc9801rs, pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801RX", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1993, pc9801bx2, pc9801rs,0, pc9801bx2,pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801BX2/U2", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1994, pc9821, 0, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) //TODO: not sure about the exact model -COMP( 1993, pc9821as, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1993, pc9821ap2, pc9821, 0, pc9821ap2,pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821AP2/U8W (98MATE A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1994, pc9821xs, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE Xs)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1994, pc9821ce2, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MULTi Ce2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1994, pc9821ne, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98NOTE)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1994, pc486mu, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "Epson", "PC-486MU", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1998, pc9821v13, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE VALUESTAR 13)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -COMP( 1998, pc9821v20, pc9821, 0, pc9821v20,pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE VALUESTAR 20)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1989, pc9801rs, 0, 0, pc9801rs, pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801RS", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) //TODO: not sure about the exact model +COMP( 1985, pc9801vm, pc9801ux, 0, pc9801vm, pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801VM", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1987, pc9801ux, 0, 0, pc9801ux, pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801UX", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1988, pc9801rx, pc9801rs, 0, pc9801rs, pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801RX", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1993, pc9801bx2, pc9801rs, 0, pc9801bx2, pc9801rs, pc9801_state, pc9801_kanji, "NEC", "PC-9801BX2/U2", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1994, pc9821, 0, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) //TODO: not sure about the exact model +COMP( 1993, pc9821as, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1993, pc9821ap2, pc9821, 0, pc9821ap2, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821AP2/U8W (98MATE A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1994, pc9821xs, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE Xs)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1994, pc9821ce2, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MULTi Ce2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1994, pc9821ne, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98NOTE)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1994, pc486mu, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "Epson", "PC-486MU", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1998, pc9821v13, pc9821, 0, pc9821, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE VALUESTAR 13)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1998, pc9821v20, pc9821, 0, pc9821v20, pc9821, pc9801_state, pc9801_kanji, "NEC", "PC-9821 (98MATE VALUESTAR 20)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/pcat_dyn.cpp b/src/mame/drivers/pcat_dyn.cpp index d01fb0c8a14..48aa679321b 100644 --- a/src/mame/drivers/pcat_dyn.cpp +++ b/src/mame/drivers/pcat_dyn.cpp @@ -152,7 +152,7 @@ static MACHINE_CONFIG_FRAGMENT( pcat_dyn_sb_conf ) MCFG_DEVICE_SLOT_INTERFACE(pc_joysticks, nullptr, true) // remove joystick MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pcat_dyn, pcat_dyn_state ) +static MACHINE_CONFIG_START( pcat_dyn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I486, 40000000) /* Am486 DX-40 */ MCFG_CPU_PROGRAM_MAP(pcat_map) @@ -264,5 +264,5 @@ ROM_START(toursol1) ROM_END -GAME( 1995, toursol, 0, pcat_dyn, pcat_dyn, driver_device, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.06, 08/03/95)", MACHINE_UNEMULATED_PROTECTION ) -GAME( 1995, toursol1, toursol, pcat_dyn, pcat_dyn, driver_device, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.04, 06/22/95)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 1995, toursol, 0, pcat_dyn, pcat_dyn, pcat_dyn_state, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.06, 08/03/95)", MACHINE_UNEMULATED_PROTECTION ) +GAME( 1995, toursol1, toursol, pcat_dyn, pcat_dyn, pcat_dyn_state, 0, ROT0, "Dynamo", "Tournament Solitaire (V1.04, 06/22/95)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/pcat_nit.cpp b/src/mame/drivers/pcat_nit.cpp index 37948b8817b..3e1470957bd 100644 --- a/src/mame/drivers/pcat_nit.cpp +++ b/src/mame/drivers/pcat_nit.cpp @@ -217,7 +217,7 @@ void pcat_nit_state::machine_start() membank("rombank")->set_entry(0); } -static MACHINE_CONFIG_START( pcat_nit, pcat_nit_state ) +static MACHINE_CONFIG_START( pcat_nit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I386, 14318180*2) /* I386 ?? Mhz */ MCFG_CPU_PROGRAM_MAP(pcat_map) @@ -236,7 +236,7 @@ static MACHINE_CONFIG_START( pcat_nit, pcat_nit_state ) MCFG_NVRAM_ADD_0FILL("nvram") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bonanza, pcat_nit_state ) +static MACHINE_CONFIG_START( bonanza ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I386, 14318180*2) /* I386 ?? Mhz */ MCFG_CPU_PROGRAM_MAP(bonanza_map) diff --git a/src/mame/drivers/pcd.cpp b/src/mame/drivers/pcd.cpp index 6b9210ccf63..bca2415c706 100644 --- a/src/mame/drivers/pcd.cpp +++ b/src/mame/drivers/pcd.cpp @@ -90,9 +90,9 @@ private: required_device m_pic1; required_device m_pic2; required_device m_speaker; - required_device m_fdc; + required_device m_fdc; required_device m_rtc; - required_device m_scsi; + required_device m_scsi; required_device m_scsi_data_out; required_device m_scsi_data_in; required_device m_ram; @@ -446,7 +446,7 @@ static ADDRESS_MAP_START( pcd_io, AS_IO, 16, pcd_state ) AM_RANGE(0xf840, 0xf841) AM_READWRITE8(stat_r, stat_w, 0x00ff) AM_RANGE(0xf840, 0xf841) AM_READWRITE8(led_r, led_w, 0xff00) AM_RANGE(0xf880, 0xf8bf) AM_READWRITE8(rtc_r, rtc_w, 0xffff) - AM_RANGE(0xf900, 0xf903) AM_DEVREADWRITE8("fdc", wd2793_t, read, write, 0xffff) + AM_RANGE(0xf900, 0xf903) AM_DEVREADWRITE8("fdc", wd2793_device, read, write, 0xffff) AM_RANGE(0xf904, 0xf905) AM_READWRITE(dskctl_r, dskctl_w) AM_RANGE(0xf940, 0xf943) AM_READWRITE8(scsi_r, scsi_w, 0xffff) AM_RANGE(0xf980, 0xf9bf) AM_DEVICE("video", pcdx_video_device, map) @@ -486,7 +486,7 @@ static INPUT_PORTS_START(pcx) PORT_CONFSETTING(0x02, "SINIX 1.2") INPUT_PORTS_END -static MACHINE_CONFIG_START( pcd, pcd_state ) +static MACHINE_CONFIG_START( pcd ) MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(pcd_map) MCFG_CPU_IO_MAP(pcd_io) @@ -606,5 +606,5 @@ ROM_END // GAME DRIVERS //************************************************************************** -COMP( 1984, pcd, 0, 0, pcd, 0, driver_device, 0, "Siemens", "PC-D", MACHINE_NOT_WORKING ) -COMP( 1984, pcx, pcd, 0, pcx, pcx, driver_device, 0, "Siemens", "PC-X", MACHINE_NOT_WORKING ) +COMP( 1984, pcd, 0, 0, pcd, 0, pcd_state, 0, "Siemens", "PC-D", MACHINE_NOT_WORKING ) +COMP( 1984, pcx, pcd, 0, pcx, pcx, pcd_state, 0, "Siemens", "PC-X", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pce.cpp b/src/mame/drivers/pce.cpp index dd1d22ee450..8c76d52a286 100644 --- a/src/mame/drivers/pce.cpp +++ b/src/mame/drivers/pce.cpp @@ -305,7 +305,7 @@ static SLOT_INTERFACE_START(pce_cart) SLOT_INTERFACE_INTERNAL("sf2", PCE_ROM_SF2) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( pce_common, pce_state ) +static MACHINE_CONFIG_START( pce_common ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H6280, MAIN_CLOCK/3) MCFG_CPU_PROGRAM_MAP(pce_mem) @@ -317,7 +317,7 @@ static MACHINE_CONFIG_START( pce_common, pce_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242) + MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242) MCFG_SCREEN_UPDATE_DRIVER( pce_state, screen_update ) MCFG_SCREEN_PALETTE("huc6260:palette") @@ -355,7 +355,7 @@ static MACHINE_CONFIG_DERIVED( tg16, pce_common ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sgx, pce_state ) +static MACHINE_CONFIG_START( sgx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H6280, MAIN_CLOCK/3) MCFG_CPU_PROGRAM_MAP(sgx_mem) @@ -367,7 +367,7 @@ static MACHINE_CONFIG_START( sgx, pce_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242) + MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242) MCFG_SCREEN_UPDATE_DRIVER( pce_state, screen_update ) MCFG_SCREEN_PALETTE("huc6260:palette") @@ -424,6 +424,6 @@ ROM_END #define rom_tg16 rom_pce #define rom_sgx rom_pce -CONS( 1987, pce, 0, 0, pce, pce, pce_state, mess_pce, "NEC / Hudson Soft", "PC Engine", MACHINE_IMPERFECT_SOUND) -CONS( 1989, tg16, pce, 0, tg16, pce, pce_state, tg16, "NEC / Hudson Soft", "TurboGrafx 16", MACHINE_IMPERFECT_SOUND) -CONS( 1989, sgx, pce, 0, sgx, pce, pce_state, sgx, "NEC / Hudson Soft", "SuperGrafx", MACHINE_IMPERFECT_SOUND) +CONS( 1987, pce, 0, 0, pce, pce, pce_state, mess_pce, "NEC / Hudson Soft", "PC Engine", MACHINE_IMPERFECT_SOUND ) +CONS( 1989, tg16, pce, 0, tg16, pce, pce_state, tg16, "NEC / Hudson Soft", "TurboGrafx 16", MACHINE_IMPERFECT_SOUND ) +CONS( 1989, sgx, pce, 0, sgx, pce, pce_state, sgx, "NEC / Hudson Soft", "SuperGrafx", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/pce220.cpp b/src/mame/drivers/pce220.cpp index 7e2e457fc6c..d1a39b8a8bf 100644 --- a/src/mame/drivers/pce220.cpp +++ b/src/mame/drivers/pce220.cpp @@ -925,7 +925,7 @@ PALETTE_INIT_MEMBER(pce220_state,pce220) } -static MACHINE_CONFIG_START( pce220, pce220_state ) +static MACHINE_CONFIG_START( pce220 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, 3072000 ) // CMOS-SC7852 MCFG_CPU_PROGRAM_MAP(pce220_mem) @@ -961,7 +961,7 @@ static MACHINE_CONFIG_START( pce220, pce220_state ) MCFG_PCE220_SERIAL_ADD(PCE220SERIAL_TAG) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pcg815, pcg850v_state ) +static MACHINE_CONFIG_START( pcg815 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz ) // 3.54MHz MCFG_CPU_PROGRAM_MAP(pce220_mem) @@ -997,7 +997,7 @@ static MACHINE_CONFIG_START( pcg815, pcg850v_state ) MCFG_PCE220_SERIAL_ADD(PCE220SERIAL_TAG) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pcg850v, pcg850v_state ) +static MACHINE_CONFIG_START( pcg850v ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_8MHz ) // CMOS-SC7852 MCFG_CPU_PROGRAM_MAP(pce220_mem) @@ -1104,7 +1104,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1991, pce220, 0, 0, pce220, pce220, driver_device, 0, "Sharp", "PC-E220", MACHINE_NOT_WORKING ) -COMP( 1992, pcg815, 0, 0, pcg815, pcg850v, driver_device, 0, "Sharp", "PC-G815", MACHINE_NOT_WORKING ) -COMP( 2001, pcg850v, 0, 0, pcg850v, pcg850v, driver_device, 0, "Sharp", "PC-G850V", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1991, pce220, 0, 0, pce220, pce220, pce220_state, 0, "Sharp", "PC-E220", MACHINE_NOT_WORKING ) +COMP( 1992, pcg815, 0, 0, pcg815, pcg850v, pcg850v_state, 0, "Sharp", "PC-G815", MACHINE_NOT_WORKING ) +COMP( 2001, pcg850v, 0, 0, pcg850v, pcg850v, pcg850v_state, 0, "Sharp", "PC-G850V", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pcfx.cpp b/src/mame/drivers/pcfx.cpp index 26dafc00080..a825ef4c778 100644 --- a/src/mame/drivers/pcfx.cpp +++ b/src/mame/drivers/pcfx.cpp @@ -408,14 +408,14 @@ uint32_t pcfx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, } -static MACHINE_CONFIG_START( pcfx, pcfx_state ) +static MACHINE_CONFIG_START( pcfx ) MCFG_CPU_ADD( "maincpu", V810, XTAL_21_4772MHz ) MCFG_CPU_PROGRAM_MAP( pcfx_mem) MCFG_CPU_IO_MAP( pcfx_io) MCFG_SCREEN_ADD( "screen", RASTER ) MCFG_SCREEN_UPDATE_DRIVER(pcfx_state, screen_update) - MCFG_SCREEN_RAW_PARAMS(XTAL_21_4772MHz, HUC6261_WPF, 64, 64 + 1024 + 64, HUC6261_LPF, 18, 18 + 242) + MCFG_SCREEN_RAW_PARAMS(XTAL_21_4772MHz, huc6261_device::WPF, 64, 64 + 1024 + 64, huc6261_device::LPF, 18, 18 + 242) MCFG_DEVICE_ADD( "huc6270_a", HUC6270, 0 ) MCFG_HUC6270_VRAM_SIZE(0x20000) @@ -464,6 +464,6 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1994, pcfx, 0, 0, pcfx, pcfx, driver_device, 0, "NEC", "PC-FX", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -CONS( 199?, pcfxga, pcfx, 0, pcfx, pcfx, driver_device, 0, "NEC", "PC-FX/GA (PC ISA Card)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1994, pcfx, 0, 0, pcfx, pcfx, pcfx_state, 0, "NEC", "PC-FX", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 199?, pcfxga, pcfx, 0, pcfx, pcfx, pcfx_state, 0, "NEC", "PC-FX/GA (PC ISA Card)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/pcipc.cpp b/src/mame/drivers/pcipc.cpp index e8f4074f512..9be5128f202 100644 --- a/src/mame/drivers/pcipc.cpp +++ b/src/mame/drivers/pcipc.cpp @@ -276,7 +276,7 @@ WRITE8_MEMBER(pcipc_state::boot_state_award_w) } -static MACHINE_CONFIG_START(pcipc, pcipc_state) +static MACHINE_CONFIG_START(pcipc) MCFG_CPU_ADD("maincpu", PENTIUM, 90000000) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pci:07.0:pic8259_master", pic8259_device, inta_cb) @@ -288,7 +288,7 @@ static MACHINE_CONFIG_START(pcipc, pcipc_state) MCFG_MGA2064W_ADD( ":pci:12.0") MACHINE_CONFIG_END -static MACHINE_CONFIG_START(pcipctx, pcipc_state) +static MACHINE_CONFIG_START(pcipctx) MCFG_CPU_ADD("maincpu", PENTIUM, 60000000) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pci:07.0:pic8259_master", pic8259_device, inta_cb) @@ -326,5 +326,5 @@ ROM_END static INPUT_PORTS_START(pcipc) INPUT_PORTS_END -COMP(1998, pcipc, 0, 0, pcipc, pcipc, driver_device, 0, "Hack Inc.", "Sandbox PCI PC (440HX)", MACHINE_NO_SOUND) -COMP(1998, pcipctx, 0, 0, pcipctx, pcipc, driver_device, 0, "Hack Inc.", "Sandbox PCI PC (440TX)", MACHINE_NO_SOUND) +COMP(1998, pcipc, 0, 0, pcipc, pcipc, pcipc_state, 0, "Hack Inc.", "Sandbox PCI PC (440HX)", MACHINE_NO_SOUND) +COMP(1998, pcipctx, 0, 0, pcipctx, pcipc, pcipc_state, 0, "Hack Inc.", "Sandbox PCI PC (440TX)", MACHINE_NO_SOUND) diff --git a/src/mame/drivers/pcktgal.cpp b/src/mame/drivers/pcktgal.cpp index f09610cd8f4..da0fa64af82 100644 --- a/src/mame/drivers/pcktgal.cpp +++ b/src/mame/drivers/pcktgal.cpp @@ -221,7 +221,7 @@ void pcktgal_state::machine_start() save_item(NAME(m_toggle)); } -static MACHINE_CONFIG_START( pcktgal, pcktgal_state ) +static MACHINE_CONFIG_START( pcktgal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 2000000) @@ -264,7 +264,7 @@ static MACHINE_CONFIG_START( pcktgal, pcktgal_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(pcktgal_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END @@ -449,7 +449,7 @@ DRIVER_INIT_MEMBER(pcktgal_state,pcktgal) /***************************************************************************/ GAME( 1987, pcktgal, 0, pcktgal, pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Pocket Gal (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, pcktgalb, pcktgal, bootleg, pcktgal, driver_device, 0, ROT0, "bootleg", "Pocket Gal (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, pcktgalb, pcktgal, bootleg, pcktgal, pcktgal_state, 0, ROT0, "bootleg", "Pocket Gal (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, pcktgal2, pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Pocket Gal 2 (English)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, pcktgal2j,pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Pocket Gal 2 (Japanese)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, spool3, pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Super Pool III (English)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pcm.cpp b/src/mame/drivers/pcm.cpp index 5f954f2bf98..e0dd023bf04 100644 --- a/src/mame/drivers/pcm.cpp +++ b/src/mame/drivers/pcm.cpp @@ -250,7 +250,7 @@ static GFXDECODE_START( pcm ) GFXDECODE_ENTRY( "chargen", 0x0000, pcm_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( pcm, pcm_state ) +static MACHINE_CONFIG_START( pcm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_10MHz /4) MCFG_CPU_PROGRAM_MAP(pcm_mem) @@ -326,5 +326,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1988, pcm, 0, 0, pcm, pcm, driver_device, 0, "Mugler/Mathes", "PC/M", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1988, pcm, 0, 0, pcm, pcm, pcm_state, 0, "Mugler/Mathes", "PC/M", 0) diff --git a/src/mame/drivers/pcw.cpp b/src/mame/drivers/pcw.cpp index d43b926341f..2d2a0cb6c62 100644 --- a/src/mame/drivers/pcw.cpp +++ b/src/mame/drivers/pcw.cpp @@ -2,7 +2,7 @@ // copyright-holders:Kevin Thacker /****************************************************************************** - pcw.c + pcw.cpp system driver Kevin Thacker [MESS driver] @@ -165,7 +165,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(pcw_state::pcw_timer_interrupt) m_timer_irq_flag = 1; pcw_update_irqs(); - machine().scheduler().timer_set(attotime::from_usec(100), timer_expired_delegate(FUNC(pcw_state::pcw_timer_pulse),this)); + m_pulse_timer->adjust(attotime::from_usec(100), 0, attotime::from_usec(100)); } /* PCW uses UPD765 in NON-DMA mode. FDC Ints are connected to /INT or @@ -819,13 +819,13 @@ WRITE8_MEMBER(pcw_state::mcu_printer_p2_w) } // Paper sensor -READ8_MEMBER(pcw_state::mcu_printer_t1_r) +READ_LINE_MEMBER(pcw_state::mcu_printer_t1_r) { return 1; } // Print head location (0 if at left margin, otherwise 1) -READ8_MEMBER(pcw_state::mcu_printer_t0_r) +READ_LINE_MEMBER(pcw_state::mcu_printer_t0_r) { if(m_printer_headpos == 0) return 0; @@ -920,12 +920,12 @@ READ8_MEMBER(pcw_state::mcu_kb_data_r) return 0xff; } -READ8_MEMBER(pcw_state::mcu_kb_t1_r) +READ_LINE_MEMBER(pcw_state::mcu_kb_t1_r) { return 1; } -READ8_MEMBER(pcw_state::mcu_kb_t0_r) +READ_LINE_MEMBER(pcw_state::mcu_kb_t0_r) { return 0; } @@ -977,22 +977,6 @@ static ADDRESS_MAP_START(pcw9512_io, AS_IO, 8, pcw_state ) AM_RANGE(0x0fc, 0x0fd) AM_READWRITE(pcw9512_parallel_r, pcw9512_parallel_w) ADDRESS_MAP_END -/* i8041 MCU */ -static ADDRESS_MAP_START(pcw_printer_io, AS_IO, 8, pcw_state ) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_printer_p2_r,mcu_printer_p2_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu_printer_p1_r, mcu_printer_p1_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(mcu_printer_t1_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(mcu_printer_t0_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START(pcw_keyboard_io, AS_IO, 8, pcw_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu_kb_scan_r,mcu_kb_scan_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_kb_scan_high_r,mcu_kb_scan_high_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(mcu_kb_t1_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(mcu_kb_t0_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(mcu_kb_data_r) -ADDRESS_MAP_END - TIMER_CALLBACK_MEMBER(pcw_state::setup_beep) { @@ -1054,10 +1038,12 @@ DRIVER_INIT_MEMBER(pcw_state,pcw) m_roller_ram_offset = 0; /* timer interrupt */ - machine().scheduler().timer_set(attotime::zero, timer_expired_delegate(FUNC(pcw_state::setup_beep),this)); + m_beep_setup_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pcw_state::setup_beep), this)); + m_beep_setup_timer->adjust(attotime::zero); - m_prn_stepper = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pcw_state::pcw_stepper_callback),this)); - m_prn_pins = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pcw_state::pcw_pins_callback),this)); + m_prn_stepper = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pcw_state::pcw_stepper_callback), this)); + m_prn_pins = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pcw_state::pcw_pins_callback), this)); + m_pulse_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pcw_state::pcw_timer_pulse), this)); } @@ -1256,17 +1242,28 @@ static SLOT_INTERFACE_START( pcw_floppies ) SLOT_INTERFACE_END /* PCW8256, PCW8512, PCW9256 */ -static MACHINE_CONFIG_START( pcw, pcw_state ) +static MACHINE_CONFIG_START( pcw ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* clock supplied to chip, but in reality it is 3.4 MHz */ MCFG_CPU_PROGRAM_MAP(pcw_map) MCFG_CPU_IO_MAP(pcw_io) MCFG_CPU_ADD("printer_mcu", I8041, 11000000) // 11MHz - MCFG_CPU_IO_MAP(pcw_printer_io) + MCFG_MCS48_PORT_P2_IN_CB(READ8(pcw_state, mcu_printer_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pcw_state, mcu_printer_p2_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(pcw_state, mcu_printer_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(pcw_state, mcu_printer_p1_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(pcw_state, mcu_printer_t1_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(pcw_state, mcu_printer_t0_r)) MCFG_CPU_ADD("keyboard_mcu", I8048, 5000000) // 5MHz - MCFG_CPU_IO_MAP(pcw_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(pcw_state, mcu_kb_scan_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(pcw_state, mcu_kb_scan_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(pcw_state, mcu_kb_scan_high_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pcw_state, mcu_kb_scan_high_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(pcw_state, mcu_kb_t1_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(pcw_state, mcu_kb_t0_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(pcw_state, mcu_kb_data_r)) // MCFG_QUANTUM_TIME(attotime::from_hz(50)) MCFG_QUANTUM_PERFECT_CPU("maincpu") @@ -1396,9 +1393,9 @@ ROM_END /* these are all variants on the pcw design */ /* major difference is memory configuration and drive type */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1985, pcw8256, 0, 0, pcw8256, pcw, pcw_state, pcw, "Amstrad plc", "PCW8256", MACHINE_NOT_WORKING) -COMP( 1985, pcw8512, pcw8256, 0, pcw8512, pcw, pcw_state, pcw, "Amstrad plc", "PCW8512", MACHINE_NOT_WORKING) -COMP( 1987, pcw9256, pcw8256, 0, pcw8256, pcw, pcw_state, pcw, "Amstrad plc", "PCW9256", MACHINE_NOT_WORKING) -COMP( 1987, pcw9512, pcw8256, 0, pcw9512, pcw, pcw_state, pcw, "Amstrad plc", "PCW9512 (+)", MACHINE_NOT_WORKING) -COMP( 1993, pcw10, pcw8256, 0, pcw8512, pcw, pcw_state, pcw, "Amstrad plc", "PCW10", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1985, pcw8256, 0, 0, pcw8256, pcw, pcw_state, pcw, "Amstrad plc", "PCW8256", MACHINE_NOT_WORKING) +COMP( 1985, pcw8512, pcw8256, 0, pcw8512, pcw, pcw_state, pcw, "Amstrad plc", "PCW8512", MACHINE_NOT_WORKING) +COMP( 1987, pcw9256, pcw8256, 0, pcw8256, pcw, pcw_state, pcw, "Amstrad plc", "PCW9256", MACHINE_NOT_WORKING) +COMP( 1987, pcw9512, pcw8256, 0, pcw9512, pcw, pcw_state, pcw, "Amstrad plc", "PCW9512 (+)", MACHINE_NOT_WORKING) +COMP( 1993, pcw10, pcw8256, 0, pcw8512, pcw, pcw_state, pcw, "Amstrad plc", "PCW10", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/pcw16.cpp b/src/mame/drivers/pcw16.cpp index cd1bab1f3db..c5ed761e04c 100644 --- a/src/mame/drivers/pcw16.cpp +++ b/src/mame/drivers/pcw16.cpp @@ -1006,7 +1006,7 @@ static SLOT_INTERFACE_START(pcw16_com) SLOT_INTERFACE("msystems_mouse", MSYSTEM_SERIAL_MOUSE) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( pcw16, pcw16_state ) +static MACHINE_CONFIG_START( pcw16 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 16000000) MCFG_CPU_PROGRAM_MAP(pcw16_map) @@ -1093,5 +1093,5 @@ ROM_START(pcw16) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1995, pcw16, 0, 0, pcw16, pcw16, driver_device, 0, "Amstrad plc", "PcW16", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1995, pcw16, 0, 0, pcw16, pcw16, pcw16_state, 0, "Amstrad plc", "PcW16", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pcxt.cpp b/src/mame/drivers/pcxt.cpp index cbe24788965..09ea4794b1b 100644 --- a/src/mame/drivers/pcxt.cpp +++ b/src/mame/drivers/pcxt.cpp @@ -57,6 +57,7 @@ the main program is 9th October 1990. ******************************************************************************************/ #include "emu.h" +#include "bus/isa/cga.h" #include "cpu/i86/i86.h" #include "sound/hc55516.h" #include "machine/bankdev.h" @@ -104,14 +105,14 @@ public: virtual const tiny_rom_entry *device_rom_region() const override; }; -const device_type ISA8_CGA_FILETTO = device_creator; +DEFINE_DEVICE_TYPE(ISA8_CGA_FILETTO, isa8_cga_filetto_device, "filetto_cga", "ISA8_CGA_FILETTO") //------------------------------------------------- // isa8_cga_filetto_device - constructor //------------------------------------------------- isa8_cga_filetto_device::isa8_cga_filetto_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - isa8_cga_device( mconfig, ISA8_CGA_FILETTO, "ISA8_CGA_FILETTO", tag, owner, clock, "filetto_cga", __FILE__) + isa8_cga_device(mconfig, ISA8_CGA_FILETTO, tag, owner, clock) { } @@ -145,14 +146,14 @@ private: /* for superimposing CGA over a different source video (i.e. tetriskr) */ -const device_type ISA8_CGA_TETRISKR = device_creator; +DEFINE_DEVICE_TYPE(ISA8_CGA_TETRISKR, isa8_cga_tetriskr_device, "tetriskr_cga", "ISA8_CGA_TETRISKR") //------------------------------------------------- // isa8_cga_tetriskr_device - constructor //------------------------------------------------- isa8_cga_tetriskr_device::isa8_cga_tetriskr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - isa8_cga_superimpose_device( mconfig, ISA8_CGA_TETRISKR, "ISA8_CGA_TETRISKR", tag, owner, clock, "tetriskr_cga", __FILE__) + isa8_cga_superimpose_device(mconfig, ISA8_CGA_TETRISKR, tag, owner, clock) { } @@ -479,7 +480,7 @@ static SLOT_INTERFACE_START( filetto_isa8_cards ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( filetto, pcxt_state ) +static MACHINE_CONFIG_START( filetto ) MCFG_CPU_ADD("maincpu", I8088, XTAL_14_31818MHz/3) MCFG_CPU_PROGRAM_MAP(filetto_map) MCFG_CPU_IO_MAP(filetto_io) @@ -500,7 +501,7 @@ static MACHINE_CONFIG_START( filetto, pcxt_state ) MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tetriskr, pcxt_state ) +static MACHINE_CONFIG_START( tetriskr ) MCFG_CPU_ADD("maincpu", I8088, XTAL_14_31818MHz/3) MCFG_CPU_PROGRAM_MAP(tetriskr_map) MCFG_CPU_IO_MAP(tetriskr_io) @@ -539,5 +540,5 @@ ROM_START( tetriskr ) ROM_LOAD( "b-10.u10", 0x0000, 0x10000, CRC(efc2a0f6) SHA1(5f0f1e90237bee9b78184035a32055b059a91eb3) ) ROM_END -GAME( 1990, filetto, 0, filetto, filetto, driver_device, 0, ROT0, "Novarmatic", "Filetto (v1.05 901009)",MACHINE_IMPERFECT_SOUND ) -GAME( 1988?,tetriskr, 0, tetriskr, tetriskr, driver_device, 0, ROT0, "bootleg", "Tetris (Korean bootleg of Mirrorsoft PC-XT Tetris)", MACHINE_IMPERFECT_SOUND ) +GAME( 1990, filetto, 0, filetto, filetto, pcxt_state, 0, ROT0, "Novarmatic", "Filetto (v1.05 901009)", MACHINE_IMPERFECT_SOUND ) +GAME( 1988?,tetriskr, 0, tetriskr, tetriskr, pcxt_state, 0, ROT0, "bootleg", "Tetris (Korean bootleg of Mirrorsoft PC-XT Tetris)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/pda600.cpp b/src/mame/drivers/pda600.cpp index 64914230cb8..dfe5ff7eee0 100644 --- a/src/mame/drivers/pda600.cpp +++ b/src/mame/drivers/pda600.cpp @@ -196,7 +196,7 @@ static GFXDECODE_START( pda600 ) GFXDECODE_END -static MACHINE_CONFIG_START( pda600, pda600_state ) +static MACHINE_CONFIG_START( pda600 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z180, XTAL_14_31818MHz) MCFG_CPU_PROGRAM_MAP(pda600_mem) @@ -235,5 +235,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1993, pda600, 0, 0, pda600, pda600, driver_device, 0, "Amstrad plc", "PenPad PDA 600", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1993, pda600, 0, 0, pda600, pda600, pda600_state, 0, "Amstrad plc", "PenPad PDA 600", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/pdp1.cpp b/src/mame/drivers/pdp1.cpp index 863144fc791..aa300fa7976 100644 --- a/src/mame/drivers/pdp1.cpp +++ b/src/mame/drivers/pdp1.cpp @@ -689,11 +689,11 @@ protected: virtual void device_start() override { } }; -const device_type PDP1_READTAPE = device_creator; +DEFINE_DEVICE_TYPE(PDP1_READTAPE, pdp1_readtape_image_device, "pdp1_readtape_image", "PDP1 Tape Reader") pdp1_readtape_image_device::pdp1_readtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PDP1_READTAPE, "PDP1 Tape Reader", tag, owner, clock, "pdp1_readtape_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, PDP1_READTAPE, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -721,11 +721,11 @@ protected: virtual void device_start() override { } }; -const device_type PDP1_PUNCHTAPE = device_creator; +DEFINE_DEVICE_TYPE(PDP1_PUNCHTAPE, pdp1_punchtape_image_device, "pdp1_punchtape_image_device", "PDP1 Tape Puncher") pdp1_punchtape_image_device::pdp1_punchtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PDP1_PUNCHTAPE, "PDP1 Tape Puncher", tag, owner, clock, "pdp1_punchtape_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, PDP1_PUNCHTAPE, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -754,11 +754,11 @@ protected: virtual void device_start() override { } }; -const device_type PDP1_PRINTER = device_creator; +DEFINE_DEVICE_TYPE(PDP1_PRINTER, pdp1_printer_image_device, "pdp1_printer_image", "PDP1 Typewriter") pdp1_printer_image_device::pdp1_printer_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PDP1_PRINTER, "PDP1 Typewriter", tag, owner, clock, "pdp1_printer_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, PDP1_PRINTER, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -786,11 +786,11 @@ protected: virtual void device_start() override { } }; -const device_type PDP1_CYLINDER = device_creator; +DEFINE_DEVICE_TYPE(PDP1_CYLINDER, pdp1_cylinder_image_device, "pdp1_cylinder_image", "PDP1 Cylinder") pdp1_cylinder_image_device::pdp1_cylinder_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PDP1_CYLINDER, "PDP1 Cylinder", tag, owner, clock, "pdp1_cylinder_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, PDP1_CYLINDER, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -1832,7 +1832,7 @@ INTERRUPT_GEN_MEMBER(pdp1_state::pdp1_interrupt) m_maincpu->pulse_start_clear(); /* pulse Start Clear line */ m_maincpu->set_state_int(PDP1_PC, m_maincpu->state_int(PDP1_TA)); m_maincpu->set_state_int(PDP1_MA, m_maincpu->state_int(PDP1_PC)); - m_maincpu->set_state_int(PDP1_IR, LAC); /* this instruction is actually executed */ + m_maincpu->set_state_int(PDP1_IR, pdp1_device::LAC); /* this instruction is actually executed */ m_maincpu->set_state_int(PDP1_MB, (signed)m_maincpu->space(AS_PROGRAM).read_dword(PDP1_MA<<2)); m_maincpu->set_state_int(PDP1_AC, m_maincpu->state_int(PDP1_MB)); @@ -1843,7 +1843,7 @@ INTERRUPT_GEN_MEMBER(pdp1_state::pdp1_interrupt) m_maincpu->set_state_int(PDP1_PC, m_maincpu->state_int(PDP1_TA)); m_maincpu->set_state_int(PDP1_MA, m_maincpu->state_int(PDP1_PC)); m_maincpu->set_state_int(PDP1_AC, m_maincpu->state_int(PDP1_TW)); - m_maincpu->set_state_int(PDP1_IR, DAC); /* this instruction is actually executed */ + m_maincpu->set_state_int(PDP1_IR, pdp1_device::DAC); /* this instruction is actually executed */ m_maincpu->set_state_int(PDP1_MB, m_maincpu->state_int(PDP1_AC)); m_maincpu->space(AS_PROGRAM).write_dword(m_maincpu->state_int(PDP1_MA)<<2, m_maincpu->state_int(PDP1_MB)); @@ -1917,7 +1917,7 @@ INTERRUPT_GEN_MEMBER(pdp1_state::pdp1_interrupt) } -static MACHINE_CONFIG_START( pdp1, pdp1_state ) +static MACHINE_CONFIG_START( pdp1 ) /* basic machine hardware */ /* PDP1 CPU @ 200 kHz (no master clock, but the instruction and memory rate is 200 kHz) */ @@ -1933,7 +1933,7 @@ static MACHINE_CONFIG_START( pdp1, pdp1_state ) MCFG_SCREEN_SIZE(virtual_width, virtual_height) MCFG_SCREEN_VISIBLE_AREA(0, virtual_width-1, 0, virtual_height-1) MCFG_SCREEN_UPDATE_DRIVER(pdp1_state, screen_update_pdp1) - MCFG_SCREEN_VBLANK_DRIVER(pdp1_state, screen_eof_pdp1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(pdp1_state, screen_vblank_pdp1)) MCFG_SCREEN_PALETTE("palette") MCFG_DEVICE_ADD("crt", CRT, 0) @@ -1966,5 +1966,5 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -COMP( 1961, pdp1, 0, 0, pdp1, pdp1, driver_device, 0, "Digital Equipment Corporation", "PDP-1" , MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1961, pdp1, 0, 0, pdp1, pdp1, pdp1_state, 0, "Digital Equipment Corporation", "PDP-1", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/pdp11.cpp b/src/mame/drivers/pdp11.cpp index 16c202a1749..3934139c8db 100644 --- a/src/mame/drivers/pdp11.cpp +++ b/src/mame/drivers/pdp11.cpp @@ -109,7 +109,7 @@ public: required_device m_terminal; DECLARE_READ16_MEMBER( teletype_ctrl_r ); DECLARE_WRITE16_MEMBER( teletype_ctrl_w ); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); uint8_t m_teletype_data; uint16_t m_teletype_status; virtual void machine_reset() override; @@ -340,13 +340,13 @@ MACHINE_RESET_MEMBER(pdp11_state,pdp11qb) } -WRITE8_MEMBER( pdp11_state::kbd_put ) +void pdp11_state::kbd_put(u8 data) { m_teletype_data = data; m_teletype_status |= 0x80; } -static MACHINE_CONFIG_START( pdp11, pdp11_state ) +static MACHINE_CONFIG_START( pdp11 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",T11, XTAL_4MHz) // Need proper CPU here MCFG_T11_INITIAL_MODE(6 << 13) @@ -355,7 +355,7 @@ static MACHINE_CONFIG_START( pdp11, pdp11_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pdp11_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(pdp11_state, kbd_put)) MCFG_RX01_ADD("rx01") MACHINE_CONFIG_END @@ -463,8 +463,8 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( ????, pdp11ub, 0, 0, pdp11, pdp11, driver_device, 0, "Digital Equipment Corporation", "PDP-11 [Unibus](M9301-YA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( ????, pdp11ub2, pdp11ub, 0, pdp11ub2, pdp11, driver_device, 0, "Digital Equipment Corporation", "PDP-11 [Unibus](M9312)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( ????, pdp11qb, pdp11ub, 0, pdp11qb, pdp11, driver_device, 0, "Digital Equipment Corporation", "PDP-11 [Q-BUS] (M7195 - MXV11)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1987, sms1000, pdp11ub, 0, pdp11qb, pdp11, driver_device, 0, "Scientific Micro Systems", "SMS-1000", MACHINE_IS_SKELETON ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( ????, pdp11ub, 0, 0, pdp11, pdp11, pdp11_state, 0, "Digital Equipment Corporation", "PDP-11 [Unibus](M9301-YA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( ????, pdp11ub2, pdp11ub, 0, pdp11ub2, pdp11, pdp11_state, 0, "Digital Equipment Corporation", "PDP-11 [Unibus](M9312)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( ????, pdp11qb, pdp11ub, 0, pdp11qb, pdp11, pdp11_state, 0, "Digital Equipment Corporation", "PDP-11 [Q-BUS] (M7195 - MXV11)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1987, sms1000, pdp11ub, 0, pdp11qb, pdp11, pdp11_state, 0, "Scientific Micro Systems", "SMS-1000", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/pecom.cpp b/src/mame/drivers/pecom.cpp index e3a7c09abef..f9aff51cea0 100644 --- a/src/mame/drivers/pecom.cpp +++ b/src/mame/drivers/pecom.cpp @@ -168,9 +168,9 @@ static INPUT_PORTS_START( pecom ) INPUT_PORTS_END /* Machine driver */ -static MACHINE_CONFIG_START( pecom64, pecom_state ) +static MACHINE_CONFIG_START( pecom64 ) /* basic machine hardware */ - MCFG_CPU_ADD(CDP1802_TAG, CDP1802, CDP1869_DOT_CLK_PAL/3) + MCFG_CPU_ADD(CDP1802_TAG, CDP1802, cdp1869_device::DOT_CLK_PAL/3) MCFG_CPU_PROGRAM_MAP(pecom64_mem) MCFG_CPU_IO_MAP(pecom64_io) MCFG_COSMAC_WAIT_CALLBACK(VCC) @@ -213,6 +213,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, pecom32, 0, 0, pecom64, pecom, driver_device, 0, "Ei Nis", "Pecom 32", 0) -COMP( 1987, pecom64, pecom32, 0, pecom64, pecom, driver_device, 0, "Ei Nis", "Pecom 64", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1986, pecom32, 0, 0, pecom64, pecom, pecom_state, 0, "Ei Nis", "Pecom 32", 0) +COMP( 1987, pecom64, pecom32, 0, pecom64, pecom, pecom_state, 0, "Ei Nis", "Pecom 64", 0) diff --git a/src/mame/drivers/pegasus.cpp b/src/mame/drivers/pegasus.cpp index 441f3eae6d0..fb213c8579a 100644 --- a/src/mame/drivers/pegasus.cpp +++ b/src/mame/drivers/pegasus.cpp @@ -477,7 +477,7 @@ DRIVER_INIT_MEMBER(pegasus_state, pegasus) pegasus_decrypt_rom(base); } -static MACHINE_CONFIG_START( pegasus, pegasus_state ) +static MACHINE_CONFIG_START( pegasus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809E, XTAL_4MHz) // actually a 6809C - 4MHZ clock coming in, 1MHZ internally MCFG_CPU_PROGRAM_MAP(pegasus_mem) @@ -574,6 +574,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, pegasus, 0, 0, pegasus, pegasus, pegasus_state, pegasus, "Technosys", "Aamber Pegasus", MACHINE_NO_SOUND_HW ) -COMP( 1981, pegasusm, pegasus, 0, pegasusm, pegasus, pegasus_state, pegasus, "Technosys", "Aamber Pegasus with RAM expansion unit", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, pegasus, 0, 0, pegasus, pegasus, pegasus_state, pegasus, "Technosys", "Aamber Pegasus", MACHINE_NO_SOUND_HW ) +COMP( 1981, pegasusm, pegasus, 0, pegasusm, pegasus, pegasus_state, pegasus, "Technosys", "Aamber Pegasus with RAM expansion unit", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/pencil2.cpp b/src/mame/drivers/pencil2.cpp index de259bedd5a..27ec9d2f41a 100644 --- a/src/mame/drivers/pencil2.cpp +++ b/src/mame/drivers/pencil2.cpp @@ -303,7 +303,7 @@ void pencil2_state::machine_start() m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xffff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); } -static MACHINE_CONFIG_START( pencil2, pencil2_state ) +static MACHINE_CONFIG_START( pencil2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_10_738635MHz/3) MCFG_CPU_PROGRAM_MAP(pencil2_mem) @@ -348,5 +348,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, pencil2, 0, 0, pencil2, pencil2, driver_device, 0, "Hanimex", "Pencil II", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, pencil2, 0, 0, pencil2, pencil2, pencil2_state, 0, "Hanimex", "Pencil II", 0 ) diff --git a/src/mame/drivers/pengadvb.cpp b/src/mame/drivers/pengadvb.cpp index 5bf0abc267c..85fcdf940f0 100644 --- a/src/mame/drivers/pengadvb.cpp +++ b/src/mame/drivers/pengadvb.cpp @@ -196,7 +196,7 @@ WRITE8_MEMBER(pengadvb_state::pengadvb_ppi_port_c_w) ***************************************************************************/ -static MACHINE_CONFIG_START( pengadvb, pengadvb_state ) +static MACHINE_CONFIG_START( pengadvb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_10_738635MHz/3) @@ -281,7 +281,7 @@ void pengadvb_state::machine_reset() void pengadvb_state::pengadvb_decrypt(const char* region) { uint8_t *mem = memregion(region)->base(); - int memsize = memregion(region)->bytes(); + uint32_t memsize = memregion(region)->bytes(); // data lines swap for (int i = 0; i < memsize; i++) diff --git a/src/mame/drivers/pengo.cpp b/src/mame/drivers/pengo.cpp index bfdf991f4eb..749f3e10601 100644 --- a/src/mame/drivers/pengo.cpp +++ b/src/mame/drivers/pengo.cpp @@ -372,7 +372,7 @@ INTERRUPT_GEN_MEMBER(pengo_state::vblank_irq) } -static MACHINE_CONFIG_START( pengo, pengo_state ) +static MACHINE_CONFIG_START( pengo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) @@ -733,11 +733,11 @@ DRIVER_INIT_MEMBER(pengo_state,penta) * *************************************/ -GAME( 1982, pengo, 0, pengoe, pengo, driver_device, 0, ROT90, "Sega", "Pengo (set 1 rev c)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pengo2, pengo, pengoe, pengo, driver_device, 0, ROT90, "Sega", "Pengo (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pengo2u, pengo, pengou, pengo, driver_device, 0, ROT90, "Sega", "Pengo (set 2 not encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pengo3u, pengo, pengou, pengo, driver_device, 0, ROT90, "Sega", "Pengo (set 3 not encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pengo4, pengo, pengoe, pengo, driver_device, 0, ROT90, "Sega", "Pengo (set 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pengob, pengo, pengo, pengo, pengo_state, penta, ROT90, "bootleg", "Pengo (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, penta, pengo, pengo, pengo, pengo_state, penta, ROT90, "bootleg (Grinbee Shouji)", "Penta", MACHINE_SUPPORTS_SAVE ) // Grinbee Shouji was a subsidiary of Orca -GAME( 1983, jrpacmbl, jrpacman, jrpacmbl, jrpacmbl, driver_device, 0, ROT90, "bootleg", "Jr. Pac-Man (Pengo hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pengo, 0, pengoe, pengo, pengo_state, 0, ROT90, "Sega", "Pengo (set 1 rev c)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pengo2, pengo, pengoe, pengo, pengo_state, 0, ROT90, "Sega", "Pengo (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pengo2u, pengo, pengou, pengo, pengo_state, 0, ROT90, "Sega", "Pengo (set 2 not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pengo3u, pengo, pengou, pengo, pengo_state, 0, ROT90, "Sega", "Pengo (set 3 not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pengo4, pengo, pengoe, pengo, pengo_state, 0, ROT90, "Sega", "Pengo (set 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pengob, pengo, pengo, pengo, pengo_state, penta, ROT90, "bootleg", "Pengo (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, penta, pengo, pengo, pengo, pengo_state, penta, ROT90, "bootleg (Grinbee Shouji)", "Penta", MACHINE_SUPPORTS_SAVE ) // Grinbee Shouji was a subsidiary of Orca +GAME( 1983, jrpacmbl, jrpacman, jrpacmbl, jrpacmbl, pengo_state, 0, ROT90, "bootleg", "Jr. Pac-Man (Pengo hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pentagon.cpp b/src/mame/drivers/pentagon.cpp index 1056a8f4a44..8cfe7c0581e 100644 --- a/src/mame/drivers/pentagon.cpp +++ b/src/mame/drivers/pentagon.cpp @@ -241,7 +241,7 @@ GFXDECODE_END -static MACHINE_CONFIG_DERIVED_CLASS( pentagon, spectrum_128, pentagon_state ) +static MACHINE_CONFIG_DERIVED( pentagon, spectrum_128 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(XTAL_14MHz / 4) MCFG_CPU_IO_MAP(pentagon_io) @@ -347,6 +347,6 @@ ROM_START(pent1024) ROMX_LOAD( "gluk51.rom", 0x018000, 0x4000, CRC(ea8c760b) SHA1(adaab28066ca46fbcdcf084c3b53d5a1b82d94a9), ROM_BIOS(9)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1989, pentagon, spec128, 0, pentagon, spec_plus, driver_device, 0, "", "Pentagon", 0) -COMP( 19??, pent1024, spec128, 0, pent1024, spec_plus, driver_device, 0, "", "Pentagon 1024", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, pentagon, spec128, 0, pentagon, spec_plus, pentagon_state, 0, "", "Pentagon", 0 ) +COMP( 19??, pent1024, spec128, 0, pent1024, spec_plus, pentagon_state, 0, "", "Pentagon 1024", 0 ) diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp index bf74ab4926b..bde369f0dca 100644 --- a/src/mame/drivers/peoplepc.cpp +++ b/src/mame/drivers/peoplepc.cpp @@ -233,7 +233,7 @@ static DEVICE_INPUT_DEFAULTS_START(keyboard) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( olypeopl, peoplepc_state) +static MACHINE_CONFIG_START( olypeopl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, XTAL_14_7456MHz/3) MCFG_CPU_PROGRAM_MAP(peoplepc_map) @@ -300,4 +300,4 @@ ROM_START( olypeopl ) ROMX_LOAD( "u01277g3.bin", 0x00001, 0x1000, CRC(3295691c) SHA1(7d7ade62117d11656b8dd86cf0703127616d55bc), ROM_SKIP(1)|ROM_BIOS(2)) ROM_END -COMP( 198?, olypeopl, 0, 0, olypeopl, 0, driver_device, 0, "Olympia", "People PC", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +COMP( 198?, olypeopl, 0, 0, olypeopl, 0, peoplepc_state, 0, "Olympia", "People PC", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) diff --git a/src/mame/drivers/peplus.cpp b/src/mame/drivers/peplus.cpp index d8c7511772c..38d4a5273ee 100644 --- a/src/mame/drivers/peplus.cpp +++ b/src/mame/drivers/peplus.cpp @@ -1325,7 +1325,7 @@ void peplus_state::machine_reset() * Machine Driver * *************************/ -static MACHINE_CONFIG_START( peplus, peplus_state ) +static MACHINE_CONFIG_START( peplus ) // basic machine hardware MCFG_CPU_ADD("maincpu", I80C32, XTAL_20MHz/2) /* 10MHz */ MCFG_CPU_PROGRAM_MAP(peplus_map) @@ -3817,7 +3817,7 @@ ROM_START( pepp0120 ) /* Normal board : Wild Sevens Poker (PP0120) */ w/7 Four w/o7 PayTable 3K STR FL FH 4K SF 5K RF 7s RF (Bonus) ------------------------------------------------------------- - ???? 1 2 3 4 4 9 12 20 200 250 800 + P55A 1 2 3 4 4 9 12 20 200 250 800 % Range: 93.1-95.1% Optimum: 97.1% Hit Frequency: 44.1% Programs Available: PP0120 @@ -3867,7 +3867,7 @@ ROM_START( pepp0126 ) /* Normal board : Deuces Wild Poker (PP0126) - PSR Verifie PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus) ------------------------------------------------------------ P63A 1 2 2 3 5 9 12 20 200 250 800 - % Range: 94.9-96.9% Optimum: 98.9% Hit Frequency: 45.4% + % Range: 93.2-95.2% Optimum: 97.2% Hit Frequency: 44.5% Programs Available: PP0126, X000126P */ ROM_REGION( 0x10000, "maincpu", 0 ) @@ -3889,7 +3889,7 @@ ROM_START( pepp0126a ) /* Normal board : Deuces Wild Poker (PP0126) - PSR Verifi PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus) ------------------------------------------------------------ P63A 1 2 2 3 5 9 12 20 200 250 800 - % Range: 94.9-96.9% Optimum: 98.9% Hit Frequency: 45.4% + % Range: 93.2-95.2% Optimum: 97.2% Hit Frequency: 44.5% Programs Available: PP0126, X000126P */ ROM_REGION( 0x10000, "maincpu", 0 ) @@ -3911,7 +3911,7 @@ ROM_START( pepp0126b ) /* Normal board : Deuces Wild Poker (PP0126) */ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus) ------------------------------------------------------------ P63A 1 2 2 3 5 9 12 20 200 250 800 - % Range: 94.9-96.9% Optimum: 98.9% Hit Frequency: 45.4% + % Range: 93.2-95.2% Optimum: 97.2% Hit Frequency: 44.5% Programs Available: PP0126, X000126P */ ROM_REGION( 0x10000, "maincpu", 0 ) @@ -4974,13 +4974,22 @@ ROM_START( pepp0232 ) /* Normal board : Patriot Poker (PP0232) */ /* Has 5 additional cards, 10 through Ace, with a US Flag for a Suit. -PayTable Js+ TP 3K STR FL FH 4K SF 5K RF CRF* SeqRF CSeqRF* (Bonus) ----------------------------------------------------------------------------------------- - ???? 1 2 2 3 5 6 15 100 1000 1300 3000 5000 10000 800 - % Range: ???-???% Optimum: ???% Hit Frequency: ???% +PayTable Js+ TP 3K STR FL FH 4K SF 5K RF CRF* SeqRF CSeqRF* (Bonus) +------------------------------------------------------------------------------------------ + P118U 1 2 2 3 5 6 15 100 800 1000 2000 3000 5000 See Below + % Range: 95.5-97.5% Optimum: 99.5% Hit Frequency: 51.4% Programs Available: PP0232 -* Custom or Flag suit. A Sequential Royal with the Flag suit pays 10,000 per coin in! +* Custom under this CG set is the Flag suit. + +MAX Bet of 5 coins Bonus Payout +--------------------------------------- +Royal Flush............ 1300 6500 +Flag Royal Flush....... 3000 15000 +Sequential Royal Flush. 5000 25000 +Flag Seq Royal Flush... 10000 50000 + +Sequential Royal is left to right 10, J, Q, K, A */ ROM_REGION( 0x10000, "maincpu", 0 ) @@ -7972,7 +7981,7 @@ ROM_START( pebe0014a ) /* Normal board : Blackjack (BE0014) English / Spanish - ROM_LOAD( "cap707.u50", 0x0000, 0x0100, CRC(9851ba36) SHA1(5a0a43c1e212ae8c173102ede9c57a3d95752f99) ) ROM_END -ROM_START( peke0004 ) /* Normal board : Keno 1-10 Spot (KE0004) */ +ROM_START( peke0004 ) /* Normal board : Keno 1-10 Spot (KE0004) - Payout 92.552%, Paytable 92A */ ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ke0004_566-a17.u68", 0x00000, 0x10000, CRC(dd3b8a70) SHA1(8e402fea9f2e055be309ba24f518b3b513d39ce8) ) /* Game Version: 566, Library Version: A17 */ @@ -7986,7 +7995,7 @@ ROM_START( peke0004 ) /* Normal board : Keno 1-10 Spot (KE0004) */ ROM_LOAD( "cap797.u50", 0x0000, 0x0100, CRC(1ab81779) SHA1(17e037235bb8c3f4a420d84841bac734373bf6b8) ) ROM_END -ROM_START( peke0017 ) /* Normal board : Keno 1-10 Spot (KE0017) */ +ROM_START( peke0017 ) /* Normal board : Keno 2-10 Spot (KE0017) - Payout 85.02%, Paytable 85-H */ ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ke0017_560-a07.u68", 0x00000, 0x08000, CRC(a0f70116) SHA1(15808cd3245e2e5934f3365f95590da0be552e8b) ) /* Game Version: 560, Library Version: A07 - 02/11/94 @ IGT L94-0689 */ ROM_RELOAD( 0x08000, 0x8000) /* 32K version built using earlier gaming libraries */ diff --git a/src/mame/drivers/pes.cpp b/src/mame/drivers/pes.cpp index d5d7cb0ba32..35bfcc1c523 100644 --- a/src/mame/drivers/pes.cpp +++ b/src/mame/drivers/pes.cpp @@ -69,7 +69,7 @@ Address map: /* Devices */ -WRITE8_MEMBER(pes_state::pes_kbd_input) +void pes_state::pes_kbd_input(u8 data) { #ifdef DEBUG_FIFO fprintf(stderr,"keyboard input: %c, ", data); @@ -245,7 +245,7 @@ INPUT_PORTS_END /****************************************************************************** Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( pes, pes_state ) +static MACHINE_CONFIG_START( pes ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C31, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(i80c31_mem) @@ -259,7 +259,7 @@ static MACHINE_CONFIG_START( pes, pes_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pes_state, pes_kbd_input)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(pes_state, pes_kbd_input)) MACHINE_CONFIG_END /****************************************************************************** @@ -278,5 +278,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, pes, 0, 0, pes, pes, driver_device, 0, "Pacific Educational Systems", "VPU-01 Speech box", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1987, pes, 0, 0, pes, pes, pes_state, 0, "Pacific Educational Systems", "VPU-01 Speech box", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pet.cpp b/src/mame/drivers/pet.cpp index c61110972ff..11c015607c5 100644 --- a/src/mame/drivers/pet.cpp +++ b/src/mame/drivers/pet.cpp @@ -1726,7 +1726,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( pet ) //------------------------------------------------- -static MACHINE_CONFIG_START( pet, pet_state ) +static MACHINE_CONFIG_START( pet ) MCFG_MACHINE_START_OVERRIDE(pet_state, pet2001) MCFG_MACHINE_RESET_OVERRIDE(pet_state, pet) @@ -1914,7 +1914,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( pet2001b ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( pet2001b, pet2001n, pet2001b_state ) +static MACHINE_CONFIG_DERIVED( pet2001b, pet2001n ) MCFG_DEVICE_MODIFY(M6520_1_TAG) MCFG_PIA_READPB_HANDLER(READ8(pet2001b_state, pia1_pb_r)) MACHINE_CONFIG_END @@ -2150,7 +2150,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( pet80 ) //------------------------------------------------- -static MACHINE_CONFIG_START( pet80, pet80_state ) +static MACHINE_CONFIG_START( pet80 ) MCFG_MACHINE_START_OVERRIDE(pet80_state, pet80) MCFG_MACHINE_RESET_OVERRIDE(pet80_state, pet80) @@ -2257,7 +2257,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( superpet ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( superpet, pet8032, superpet_state ) +static MACHINE_CONFIG_DERIVED( superpet, pet8032 ) MCFG_DEVICE_REMOVE(PET_EXPANSION_SLOT_TAG) MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_16MHz/16, pet_expansion_cards, "superpet") MCFG_PET_EXPANSION_SLOT_DMA_CALLBACKS(READ8(pet_state, read), WRITE8(pet_state, write)) @@ -2270,7 +2270,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( cbm8096 ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( cbm8096, pet80, cbm8096_state ) +static MACHINE_CONFIG_DERIVED( cbm8096, pet80 ) MCFG_DEVICE_REMOVE(PET_EXPANSION_SLOT_TAG) MCFG_PET_EXPANSION_SLOT_ADD(PET_EXPANSION_SLOT_TAG, XTAL_16MHz/16, pet_expansion_cards, "64k") MCFG_PET_EXPANSION_SLOT_DMA_CALLBACKS(READ8(pet_state, read), WRITE8(pet_state, write)) @@ -2286,7 +2286,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( cbm8296 ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( cbm8296, pet80, cbm8296_state ) +static MACHINE_CONFIG_DERIVED( cbm8296, pet80 ) MCFG_MACHINE_START_OVERRIDE(cbm8296_state, cbm8296) MCFG_MACHINE_RESET_OVERRIDE(cbm8296_state, cbm8296) @@ -2837,39 +2837,39 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1977, pet2001, 0, 0, pet2001, pet, driver_device, 0, "Commodore Business Machines", "PET 2001-4", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1977, pet20018, pet2001, 0, pet20018, pet, driver_device, 0, "Commodore Business Machines", "PET 2001-8", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, pet2001n, 0, 0, pet2001n8, pet, driver_device, 0, "Commodore Business Machines", "PET 2001-N8", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, pet2001n16, pet2001n, 0, pet2001n16, pet, driver_device, 0, "Commodore Business Machines", "PET 2001-N16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, pet2001n32, pet2001n, 0, pet2001n32, pet, driver_device, 0, "Commodore Business Machines", "PET 2001-N32", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, cbm3008, pet2001n, 0, cbm3008, pet, driver_device, 0, "Commodore Business Machines", "CBM 3008", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, cbm3016, pet2001n, 0, cbm3016, pet, driver_device, 0, "Commodore Business Machines", "CBM 3016", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, cbm3032, pet2001n, 0, cbm3032, pet, driver_device, 0, "Commodore Business Machines", "CBM 3032", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, pet2001b, 0, 0, pet2001b8, petb, driver_device, 0, "Commodore Business Machines", "PET 2001-B8", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, pet2001b16, pet2001b, 0, pet2001b16, petb, driver_device, 0, "Commodore Business Machines", "PET 2001-B16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, pet2001b32, pet2001b, 0, pet2001b32, petb, driver_device, 0, "Commodore Business Machines", "PET 2001-B32", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, cbm3032b, pet2001b, 0, cbm3032b, petb, driver_device, 0, "Commodore Business Machines", "CBM 3032B", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1980, pet4016, 0, 0, pet4016, pet, driver_device, 0, "Commodore Business Machines", "PET 4016", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1980, pet4032, pet4016, 0, pet4032, pet, driver_device, 0, "Commodore Business Machines", "PET 4032", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1980, pet4032f, pet4016, 0, pet4032f, pet, driver_device, 0, "Commodore Business Machines", "PET 4032 (Fat 40)", MACHINE_SUPPORTS_SAVE ) -COMP( 1980, cbm4016, pet4016, 0, cbm4016, pet, driver_device, 0, "Commodore Business Machines", "CBM 4016", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1980, cbm4032, pet4016, 0, cbm4032, pet, driver_device, 0, "Commodore Business Machines", "CBM 4032", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1980, cbm4032f, pet4016, 0, cbm4032f, pet, driver_device, 0, "Commodore Business Machines", "CBM 4032 (Fat 40)", MACHINE_SUPPORTS_SAVE ) -COMP( 1980, pet4032b, 0, 0, pet4032b, petb, driver_device, 0, "Commodore Business Machines", "PET 4032B", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1980, cbm4032b, pet4032b, 0, cbm4032b, petb, driver_device, 0, "Commodore Business Machines", "CBM 4032B", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1980, pet8032, 0, 0, pet8032, petb, driver_device, 0, "Commodore Business Machines", "PET 8032", MACHINE_SUPPORTS_SAVE ) -COMP( 1981, cbm8032, pet8032, 0, pet8032, petb, driver_device, 0, "Commodore Business Machines", "CBM 8032", MACHINE_SUPPORTS_SAVE ) -COMP( 1981, cbm8032_de, pet8032, 0, pet8032, petb_de, driver_device, 0, "Commodore Business Machines", "CBM 8032 (Germany)", MACHINE_SUPPORTS_SAVE ) -COMP( 1981, cbm8032_fr, pet8032, 0, pet8032, petb_fr, driver_device, 0, "Commodore Business Machines", "CBM 8032 (France)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -COMP( 1981, cbm8032_se, pet8032, 0, pet8032, petb_se, driver_device, 0, "Commodore Business Machines", "CBM 8032 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) -COMP( 1981, superpet, pet8032, 0, superpet, petb, driver_device, 0, "Commodore Business Machines", "SuperPET SP-9000", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -COMP( 1981, mmf9000, pet8032, 0, superpet, petb, driver_device, 0, "Commodore Business Machines", "MicroMainFrame 9000", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -COMP( 1981, mmf9000_se, pet8032, 0, superpet, petb_se, driver_device, 0, "Commodore Business Machines", "MicroMainFrame 9000 (Sweden/Finland)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -COMP( 1981, cbm8096, pet8032, 0, cbm8096, petb, driver_device, 0, "Commodore Business Machines", "CBM 8096", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, cbm8296, 0, 0, cbm8296, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, cbm8296ed, cbm8296, 0, cbm8296d, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296 ExecuDesk", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, cbm8296d, cbm8296, 0, cbm8296d, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296-D", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, cbm8296d_de,cbm8296, 0, cbm8296d, petb_de, driver_device, 0, "Commodore Business Machines", "CBM 8296-D (Germany)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, cbm8296gd, cbm8296, 0, cbm8296d, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296GD", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, cbm8296dgv_de,cbm8296, 0, cbm8296d, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296-D GV? (Germany)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS +COMP( 1977, pet2001, 0, 0, pet2001, pet, pet_state, 0, "Commodore Business Machines", "PET 2001-4", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1977, pet20018, pet2001, 0, pet20018, pet, pet_state, 0, "Commodore Business Machines", "PET 2001-8", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, pet2001n, 0, 0, pet2001n8, pet, pet_state, 0, "Commodore Business Machines", "PET 2001-N8", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, pet2001n16, pet2001n, 0, pet2001n16, pet, pet_state, 0, "Commodore Business Machines", "PET 2001-N16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, pet2001n32, pet2001n, 0, pet2001n32, pet, pet_state, 0, "Commodore Business Machines", "PET 2001-N32", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, cbm3008, pet2001n, 0, cbm3008, pet, pet_state, 0, "Commodore Business Machines", "CBM 3008", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, cbm3016, pet2001n, 0, cbm3016, pet, pet_state, 0, "Commodore Business Machines", "CBM 3016", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, cbm3032, pet2001n, 0, cbm3032, pet, pet_state, 0, "Commodore Business Machines", "CBM 3032", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, pet2001b, 0, 0, pet2001b8, petb, pet2001b_state, 0, "Commodore Business Machines", "PET 2001-B8", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, pet2001b16, pet2001b, 0, pet2001b16, petb, pet2001b_state, 0, "Commodore Business Machines", "PET 2001-B16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, pet2001b32, pet2001b, 0, pet2001b32, petb, pet2001b_state, 0, "Commodore Business Machines", "PET 2001-B32", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, cbm3032b, pet2001b, 0, cbm3032b, petb, pet2001b_state, 0, "Commodore Business Machines", "CBM 3032B", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, pet4016, 0, 0, pet4016, pet, pet2001b_state, 0, "Commodore Business Machines", "PET 4016", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, pet4032, pet4016, 0, pet4032, pet, pet2001b_state, 0, "Commodore Business Machines", "PET 4032", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, pet4032f, pet4016, 0, pet4032f, pet, pet2001b_state, 0, "Commodore Business Machines", "PET 4032 (Fat 40)", MACHINE_SUPPORTS_SAVE ) +COMP( 1980, cbm4016, pet4016, 0, cbm4016, pet, pet_state, 0, "Commodore Business Machines", "CBM 4016", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, cbm4032, pet4016, 0, cbm4032, pet, pet_state, 0, "Commodore Business Machines", "CBM 4032", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, cbm4032f, pet4016, 0, cbm4032f, pet, pet_state, 0, "Commodore Business Machines", "CBM 4032 (Fat 40)", MACHINE_SUPPORTS_SAVE ) +COMP( 1980, pet4032b, 0, 0, pet4032b, petb, pet2001b_state, 0, "Commodore Business Machines", "PET 4032B", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, cbm4032b, pet4032b, 0, cbm4032b, petb, pet2001b_state, 0, "Commodore Business Machines", "CBM 4032B", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, pet8032, 0, 0, pet8032, petb, pet80_state, 0, "Commodore Business Machines", "PET 8032", MACHINE_SUPPORTS_SAVE ) +COMP( 1981, cbm8032, pet8032, 0, pet8032, petb, pet80_state, 0, "Commodore Business Machines", "CBM 8032", MACHINE_SUPPORTS_SAVE ) +COMP( 1981, cbm8032_de, pet8032, 0, pet8032, petb_de, pet80_state, 0, "Commodore Business Machines", "CBM 8032 (Germany)", MACHINE_SUPPORTS_SAVE ) +COMP( 1981, cbm8032_fr, pet8032, 0, pet8032, petb_fr, pet80_state, 0, "Commodore Business Machines", "CBM 8032 (France)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1981, cbm8032_se, pet8032, 0, pet8032, petb_se, pet80_state, 0, "Commodore Business Machines", "CBM 8032 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE ) +COMP( 1981, superpet, pet8032, 0, superpet, petb, superpet_state, 0, "Commodore Business Machines", "SuperPET SP-9000", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1981, mmf9000, pet8032, 0, superpet, petb, superpet_state, 0, "Commodore Business Machines", "MicroMainFrame 9000", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1981, mmf9000_se, pet8032, 0, superpet, petb_se, superpet_state, 0, "Commodore Business Machines", "MicroMainFrame 9000 (Sweden/Finland)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1981, cbm8096, pet8032, 0, cbm8096, petb, cbm8096_state, 0, "Commodore Business Machines", "CBM 8096", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, cbm8296, 0, 0, cbm8296, petb, cbm8296_state, 0, "Commodore Business Machines", "CBM 8296", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, cbm8296ed, cbm8296, 0, cbm8296d, petb, cbm8296_state, 0, "Commodore Business Machines", "CBM 8296 ExecuDesk", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, cbm8296d, cbm8296, 0, cbm8296d, petb, cbm8296_state, 0, "Commodore Business Machines", "CBM 8296-D", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, cbm8296d_de, cbm8296, 0, cbm8296d, petb_de, cbm8296_state, 0, "Commodore Business Machines", "CBM 8296-D (Germany)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, cbm8296gd, cbm8296, 0, cbm8296d, petb, cbm8296_state, 0, "Commodore Business Machines", "CBM 8296GD", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, cbm8296dgv_de,cbm8296, 0, cbm8296d, petb, cbm8296_state, 0, "Commodore Business Machines", "CBM 8296-D GV? (Germany)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/peyper.cpp b/src/mame/drivers/peyper.cpp index 97dc88a6624..7b74a445020 100644 --- a/src/mame/drivers/peyper.cpp +++ b/src/mame/drivers/peyper.cpp @@ -578,7 +578,7 @@ void peyper_state::machine_reset() { } -static MACHINE_CONFIG_START( peyper, peyper_state ) +static MACHINE_CONFIG_START( peyper ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2500000) MCFG_CPU_PROGRAM_MAP(peyper_map) @@ -862,16 +862,16 @@ ROM_START(lancelot) ROM_LOAD("snd_u5.bin", 0x00000, 0x20000, CRC(bf141441) SHA1(630b852bb3bba0fcdae13ae548b1e9810bc64d7d)) ROM_END -GAME( 1985, odin, 0, peyper, odin_dlx, peyper_state, odin, ROT0, "Peyper", "Odin", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1985, odin_dlx, 0, peyper, odin_dlx, peyper_state, odin, ROT0, "Sonic", "Odin De Luxe", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1986, solarwap, 0, peyper, solarwap, peyper_state, peyper, ROT0, "Sonic", "Solar Wars (Sonic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1986, gamatros, 0, peyper, solarwap, peyper_state, peyper, ROT0, "Sonic", "Gamatron (Sonic)", MACHINE_IS_SKELETON_MECHANICAL) -GAME( 1987, poleposn, 0, peyper, poleposn, peyper_state, peyper, ROT0, "Sonic", "Pole Position (Sonic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1987, sonstwar, 0, peyper, sonstwar, peyper_state, peyper, ROT0, "Sonic", "Star Wars (Sonic, set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1987, sonstwr2, sonstwar, peyper, sonstwar, peyper_state, peyper, ROT0, "Sonic", "Star Wars (Sonic, set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1987, wolfman, 0, peyper, wolfman, peyper_state, wolfman, ROT0, "Peyper", "Wolf Man", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1986, nemesisp, 0, peyper, wolfman, peyper_state, wolfman, ROT0, "Peyper", "Nemesis", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1987, odisea, 0, peyper, odisea, peyper_state, wolfman, ROT0, "Peyper", "Odisea Paris-Dakar", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1988, hangonp, 0, peyper, sonstwar, peyper_state, peyper, ROT0, "Sonic", "Hang-On (Sonic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // inputs to be checked -GAME( 1985, ator, 0, peyper, sonstwar, peyper_state, peyper, ROT0, "Video Dens", "Ator", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // initial program ROM missing; no manual found -GAME( 1994, lancelot, 0, peyper, sonstwar, driver_device,0, ROT0, "Peyper", "Sir Lancelot", MACHINE_IS_SKELETON_MECHANICAL) // different hardware (see top of file) +GAME( 1985, odin, 0, peyper, odin_dlx, peyper_state, odin, ROT0, "Peyper", "Odin", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1985, odin_dlx, 0, peyper, odin_dlx, peyper_state, odin, ROT0, "Sonic", "Odin De Luxe", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1986, solarwap, 0, peyper, solarwap, peyper_state, peyper, ROT0, "Sonic", "Solar Wars (Sonic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1986, gamatros, 0, peyper, solarwap, peyper_state, peyper, ROT0, "Sonic", "Gamatron (Sonic)", MACHINE_IS_SKELETON_MECHANICAL) +GAME( 1987, poleposn, 0, peyper, poleposn, peyper_state, peyper, ROT0, "Sonic", "Pole Position (Sonic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1987, sonstwar, 0, peyper, sonstwar, peyper_state, peyper, ROT0, "Sonic", "Star Wars (Sonic, set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1987, sonstwr2, sonstwar, peyper, sonstwar, peyper_state, peyper, ROT0, "Sonic", "Star Wars (Sonic, set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1987, wolfman, 0, peyper, wolfman, peyper_state, wolfman, ROT0, "Peyper", "Wolf Man", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1986, nemesisp, 0, peyper, wolfman, peyper_state, wolfman, ROT0, "Peyper", "Nemesis", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1987, odisea, 0, peyper, odisea, peyper_state, wolfman, ROT0, "Peyper", "Odisea Paris-Dakar", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1988, hangonp, 0, peyper, sonstwar, peyper_state, peyper, ROT0, "Sonic", "Hang-On (Sonic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // inputs to be checked +GAME( 1985, ator, 0, peyper, sonstwar, peyper_state, peyper, ROT0, "Video Dens", "Ator", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // initial program ROM missing; no manual found +GAME( 1994, lancelot, 0, peyper, sonstwar, peyper_state, 0, ROT0, "Peyper", "Sir Lancelot", MACHINE_IS_SKELETON_MECHANICAL) // different hardware (see top of file) diff --git a/src/mame/drivers/pg685.cpp b/src/mame/drivers/pg685.cpp index 7a6cc974b42..46d3559ebb3 100644 --- a/src/mame/drivers/pg685.cpp +++ b/src/mame/drivers/pg685.cpp @@ -136,7 +136,7 @@ private: optional_shared_ptr m_vram; optional_shared_ptr m_vram16; optional_shared_ptr m_fontram; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; optional_device m_floppy1; }; @@ -156,7 +156,7 @@ static ADDRESS_MAP_START(pg675_mem, AS_PROGRAM, 8, pg685_state) AM_RANGE(0xf9f06, 0xf9f07) AM_DEVREADWRITE("mainpic", pic8259_device, read, write) AM_RANGE(0xf9f08, 0xf9f08) AM_DEVREADWRITE("mainuart", i8251_device, data_r, data_w) AM_RANGE(0xf9f09, 0xf9f09) AM_DEVREADWRITE("mainuart", i8251_device, status_r, control_w) - AM_RANGE(0xf9f20, 0xf9f23) AM_DEVREADWRITE("fdc", fd1797_t, read, write) + AM_RANGE(0xf9f20, 0xf9f23) AM_DEVREADWRITE("fdc", fd1797_device, read, write) AM_RANGE(0xf9f24, 0xf9f24) AM_READWRITE(f9f24_r, f9f24_w) AM_RANGE(0xf9f28, 0xf9f2b) AM_DEVREADWRITE("modppi1", i8255_device, read, write) AM_RANGE(0xf9f2c, 0xf9f2f) AM_DEVREADWRITE("modppi2", i8255_device, read, write) @@ -192,7 +192,7 @@ static ADDRESS_MAP_START(pg685oua12_mem, AS_PROGRAM, 16, pg685_state) AM_RANGE(0xf9f06, 0xf9f07) AM_DEVREADWRITE8("mainpic", pic8259_device, read, write, 0xffff) AM_RANGE(0xf9f08, 0xf9f09) AM_DEVREADWRITE8("mainuart", i8251_device, data_r, data_w, 0x00ff) AM_RANGE(0xf9f08, 0xf9f09) AM_DEVREADWRITE8("mainuart", i8251_device, status_r, control_w, 0xff00) - AM_RANGE(0xf9f20, 0xf9f23) AM_DEVREADWRITE8("fdc", fd1797_t, read, write, 0xffff) + AM_RANGE(0xf9f20, 0xf9f23) AM_DEVREADWRITE8("fdc", fd1797_device, read, write, 0xffff) AM_RANGE(0xf9f24, 0xf9f25) AM_READWRITE8(f9f24_r, f9f24_w, 0x00ff) AM_RANGE(0xf9f28, 0xf9f2b) AM_DEVREADWRITE8("modppi1", i8255_device, read, write, 0xffff) AM_RANGE(0xf9f2c, 0xf9f2f) AM_DEVREADWRITE8("modppi2", i8255_device, read, write, 0xffff) @@ -401,7 +401,7 @@ static MACHINE_CONFIG_FRAGMENT(pg685_module) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pg675, pg685_state ) +static MACHINE_CONFIG_START( pg675 ) // main cpu MCFG_CPU_ADD("maincpu", I8088, XTAL_15MHz / 3) MCFG_CPU_PROGRAM_MAP(pg675_mem) @@ -448,7 +448,7 @@ static MACHINE_CONFIG_START( pg675, pg685_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pg685, pg685_state ) +static MACHINE_CONFIG_START( pg685 ) // main cpu MCFG_CPU_ADD("maincpu", V20, XTAL_15MHz / 3) MCFG_CPU_PROGRAM_MAP(pg685_mem) @@ -497,7 +497,7 @@ static MACHINE_CONFIG_START( pg685, pg685_state ) MCFG_WD2010_OUT_INTRQ_CB(DEVWRITELINE("mainpic", pic8259_device, ir3_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pg685oua12, pg685_state ) +static MACHINE_CONFIG_START( pg685oua12 ) // main cpu MCFG_CPU_ADD("maincpu", I80286, XTAL_20MHz / 2) MCFG_CPU_PROGRAM_MAP(pg685oua12_mem) @@ -573,7 +573,7 @@ ROM_END //************************************************************************** // ROM DEFINITIONS //************************************************************************** -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, pg675, 0, 0, pg675, pg685, driver_device, 0, "Siemens", "Simatic PG675", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 198?, pg685, 0, 0, pg685, pg685, driver_device, 0, "Siemens", "Simatic PG685 OUA11", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 198?, pg685oua12, pg685, 0, pg685oua12, pg685, driver_device, 0, "Siemens", "Simatic PG685 OUA12", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 198?, pg675, 0, 0, pg675, pg685, pg685_state, 0, "Siemens", "Simatic PG675", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 198?, pg685, 0, 0, pg685, pg685, pg685_state, 0, "Siemens", "Simatic PG685 OUA11", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 198?, pg685oua12, pg685, 0, pg685oua12, pg685, pg685_state, 0, "Siemens", "Simatic PG685 OUA12", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/pgm.cpp b/src/mame/drivers/pgm.cpp index 31a4bfe23cf..d79d04b828a 100644 --- a/src/mame/drivers/pgm.cpp +++ b/src/mame/drivers/pgm.cpp @@ -528,7 +528,7 @@ MACHINE_CONFIG_FRAGMENT( pgmbase ) MCFG_SCREEN_SIZE(64*8, 64*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(pgm_state, screen_update_pgm) - MCFG_SCREEN_VBLANK_DRIVER(pgm_state, screen_eof_pgm) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(pgm_state, screen_vblank_pgm)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", pgm) @@ -549,7 +549,7 @@ MACHINE_CONFIG_FRAGMENT( pgmbase ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 5.0) MACHINE_CONFIG_END -MACHINE_CONFIG_START( pgm, pgm_state ) +MACHINE_CONFIG_START( pgm ) MCFG_FRAGMENT_ADD(pgmbase) MACHINE_CONFIG_END @@ -1348,6 +1348,37 @@ ROM_START( kov100 ) ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) ) ROM_END +ROM_START( kov100hk ) + ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ + PGM_68K_BIOS + ROM_LOAD16_BYTE( "sav114.u4", 0x100001, 0x080000, CRC(4db3d4d3) SHA1(924734ec3b3d6de21872890b9575f72f81c7b636) ) + ROM_LOAD16_BYTE( "sav114.u7", 0x100000, 0x080000, CRC(b8d12b0c) SHA1(f4c02e494a479c3021b56bb87341d507104f93d5) ) + ROM_LOAD16_BYTE( "sav114.u5", 0x200001, 0x080000, CRC(9e586dab) SHA1(3de948decf2b7bcbbbc37d2e6fa7a2a71f0b8d5e) ) + ROM_LOAD16_BYTE( "sav114.u8", 0x200000, 0x080000, CRC(ab129997) SHA1(b0e56a09df0def3e8b584ca6f53cd3c88634653e) ) + ROM_LOAD16_WORD_SWAP( "sav114.u10",0x300000, 0x080000, CRC(8f84ecfd) SHA1(2e7f322da6c4b1d6daf7a308229f4cf2e69fda8f) ) + + ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ + ROM_LOAD( "kov_igs027.bin", 0x000000, 0x04000, NO_DUMP ) // IGS 027 55857E 100 9901 HONG KONG + + ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ + PGM_VIDEO_BIOS + ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) ) + + ROM_REGION( 0x1c00000, "sprcol", 0 ) /* Sprite Colour Data */ + ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) ) // FIXED BITS (xxxxxxxx1xxxxxxx) + ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) ) // FIXED BITS (xxxxxxxx1xxxxxxx) + ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) ) // FIXED BITS (xxxxxxxx1xxxxxxx) + ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) ) + + ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ + ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) ) + ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) ) + + ROM_REGION( 0x800000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ + PGM_AUDIO_BIOS + ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) ) +ROM_END + ROM_START( kovplus ) ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ PGM_68K_BIOS @@ -3129,6 +3160,38 @@ ROM_START( martmastc ) ROM_LOAD( "m1001.u7", 0xc00000, 0x400000, CRC(662d2d48) SHA1(2fcc3099d9c04456cae3b13035fb28eaf709e7d8) ) ROM_END +ROM_START( martmastc103 ) + ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ + PGM_68K_BIOS + ROM_LOAD16_WORD_SWAP( "v103_32m.u9", 0x100000, 0x400000, CRC(df5ffbe9) SHA1(cd37900b3741707f81077ca07565997031409131) ) + + ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ + ROM_LOAD( "martial_masters_v101_cn.asic", 0x000000, 0x04000, CRC(b3e25b7d) SHA1(6147d7ee2e11636521df1bb96ed5da8ad21b2a57) ) // v102 on the PCB the maincpu ROM was dumped from. v102 Chinese ASIC hasn't been dumped yet. + + ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */ + ROM_LOAD( "v102_16m.u10", 0x000000, 0x200000, CRC(18b745e6) SHA1(7bcb58dd3a2d6072f492cf0dd7181cb061c1f49d) ) + + ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ + PGM_VIDEO_BIOS + ROM_LOAD( "t1000.u3", 0x180000, 0x800000, CRC(bbf879b5) SHA1(bd9a6aea34ad4001e89e62ff4b7a2292eb833c00) ) + + ROM_REGION( 0x2800000, "sprcol", 0 ) /* Sprite Colour Data */ + ROM_LOAD( "a1000.u3", 0x0000000, 0x0800000, CRC(43577ac8) SHA1(6eea8b455985d5bac74dcc9943cdc3c0902de6cc) ) + ROM_LOAD( "a1001.u4", 0x0800000, 0x0800000, CRC(fe7a476f) SHA1(a8c7f1f0dd3e53141aed6d927eb88a3ceebb81e4) ) + ROM_LOAD( "a1002.u6", 0x1000000, 0x0800000, CRC(62e33d38) SHA1(96163d583e25073594f8413ce263e56b66bd69a1) ) + ROM_LOAD( "a1003.u8", 0x1800000, 0x0800000, CRC(b2c4945a) SHA1(7b18287a2db56db3651cfd4deb607af53522fefd) ) + ROM_LOAD( "a1004.u10", 0x2000000, 0x0400000, CRC(9fd3f5fd) SHA1(057531f91062be51589c6cf8f4170089b9be6380) ) + + ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ + ROM_LOAD( "b1000.u9", 0x0000000, 0x0800000, CRC(c5961f6f) SHA1(a68060b10edbd084cbde79d2ed1c9084777beb10) ) + ROM_LOAD( "b1001.u11", 0x0800000, 0x0800000, CRC(0b7e1c06) SHA1(545e15e0087f8621d593fecd8b4013f7ca311686) ) + + ROM_REGION( 0x1000000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */ + PGM_AUDIO_BIOS + ROM_LOAD( "m1000.u5", 0x400000, 0x800000, CRC(ed407ae8) SHA1(a6e9c09b39c13e8fb7fbc89fa9f823cbeb66e901) ) + ROM_LOAD( "m1001.u7", 0xc00000, 0x400000, CRC(662d2d48) SHA1(2fcc3099d9c04456cae3b13035fb28eaf709e7d8) ) +ROM_END + ROM_START( martmastc102 ) ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ PGM_68K_BIOS @@ -4587,12 +4650,10 @@ GAME( 2001, kov2p, pgm, pgm_arm_type2, kov2, pgm_arm_type2_state GAME( 2001, kov2p204, kov2p, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "IGS", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M204XX, 200, 100CN)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 08/28/01 09:11:49 M204XX GAME( 2001, kov2p202, kov2p, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "IGS", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M202XX, 200, 100CN)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 07/09/01 11:03:50 M202XX - - - // region provided by internal ARM rom GAME( 2001, martmast, pgm, pgm_arm_type2, martmast, pgm_arm_type2_state, martmast, ROT0, "IGS", "Martial Masters (ver. 104, 102, 102US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 68k V104, Ext Arm 102, Int Arm 102US GAME( 2001, martmastc, martmast, pgm_arm_type2, martmast, pgm_arm_type2_state, martmast, ROT0, "IGS", "Martial Masters (ver. 104, 102, 101CN)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 68k V104, Ext Arm 102, Int Arm 101CN +GAME( 2001, martmastc103, martmast, pgm_arm_type2, martmast, pgm_arm_type2_state, martmast, ROT0, "IGS", "Martial Masters (ver. 103, 102, 101CN)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 68k V103, Ext Arm 102, Int Arm 101CN (actually 102 CN on the PCB, needs to be dumped) GAME( 2001, martmastc102, martmast, pgm_arm_type2, martmast, pgm_arm_type2_state, martmast, ROT0, "IGS", "Martial Masters (ver. 102, 101, 101CN)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 68k V102, Ext Arm 101, Int Arm 101CN // region provided by internal ARM rom @@ -4705,6 +4766,7 @@ GAME( 1998, olds103t, olds, pgm, pgm, pgm_state, GAME( 1999, kov, pgm, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 117)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // V0008 04/27/99 10:33:33 GAME( 1999, kov115, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 115)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // V0006 02/22/99 11:53:18 GAME( 1999, kov100, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 100, Japanese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // V0002 01/31/99 01:54:16 +GAME( 1999, kov100hk, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 100, Hong Kong)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ GAME( 1999, kovplus, pgm, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ GAME( 1999, kovplusa, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp index 15df4e616ac..a45cf7008be 100644 --- a/src/mame/drivers/pgm2.cpp +++ b/src/mame/drivers/pgm2.cpp @@ -72,7 +72,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_pgm2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_pgm2(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_pgm2); required_device m_maincpu; void pgm_create_dummy_internal_arm_region(); @@ -95,7 +95,7 @@ uint32_t pgm2_state::screen_update_pgm2(screen_device &screen, bitmap_ind16 &bit return 0; } -void pgm2_state::screen_eof_pgm2(screen_device &screen, bool state) +WRITE_LINE_MEMBER(pgm2_state::screen_vblank_pgm2) { } @@ -198,7 +198,7 @@ void pgm2_state::pgm_create_dummy_internal_arm_region() -static MACHINE_CONFIG_START( pgm2, pgm2_state ) +static MACHINE_CONFIG_START( pgm2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM9, 20000000) // ?? ARM baesd CPU, has internal ROM. @@ -213,7 +213,7 @@ static MACHINE_CONFIG_START( pgm2, pgm2_state ) MCFG_SCREEN_SIZE(64*8, 64*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 56*8-1, 0*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(pgm2_state, screen_update_pgm2) - MCFG_SCREEN_VBLANK_DRIVER(pgm2_state, screen_eof_pgm2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(pgm2_state, screen_vblank_pgm2)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", pgm2) diff --git a/src/mame/drivers/pgm3.cpp b/src/mame/drivers/pgm3.cpp index 6bcdd3f91ae..48e102594a0 100644 --- a/src/mame/drivers/pgm3.cpp +++ b/src/mame/drivers/pgm3.cpp @@ -17,7 +17,7 @@ the CPU is an Intel Atom D525 CPU with 2GB of RAM (but based on hardware images this is incorrect, they clearly show the CPU Xing Xing states is used) - the card images (except v105) seem to have encrypted data up to the C2000000 mark, then + the card images seem to have encrypted data up to the C2000000 mark, then some text string about a non-bootable disk followed by mostly blank data Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F @@ -35,10 +35,6 @@ 0C20000A0 65 73 73 20 61 6E 79 20 6B 65 79 20 74 6F 20 74 ess any key to t 0C20000B0 72 79 20 61 67 61 69 6E 20 2E 2E 2E 20 0D 0A 00 ry again ... ... - the v105 image has the encrypted data starting at 400000 and the above at C2400000 - and is overall slightly shorter. it was probably dumped using a different method? - assuming one is the correct method the others will need adjusting. - DSW: 1: OFF = Game mode / ON = Test mode @@ -69,7 +65,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_pgm3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_pgm3(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_pgm3); required_device m_maincpu; }; @@ -85,7 +81,7 @@ uint32_t pgm3_state::screen_update_pgm3(screen_device &screen, bitmap_ind16 &bit return 0; } -void pgm3_state::screen_eof_pgm3(screen_device &screen, bool state) +WRITE_LINE_MEMBER(pgm3_state::screen_vblank_pgm3) { } @@ -101,7 +97,7 @@ void pgm3_state::machine_reset() { } -static MACHINE_CONFIG_START( pgm3, pgm3_state ) +static MACHINE_CONFIG_START( pgm3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM9, 800000000) // wrong, see notes at top of driver @@ -115,7 +111,7 @@ static MACHINE_CONFIG_START( pgm3, pgm3_state ) MCFG_SCREEN_SIZE(1280, 720) MCFG_SCREEN_VISIBLE_AREA(0, 1280-1, 0, 720-1) MCFG_SCREEN_UPDATE_DRIVER(pgm3_state, screen_update_pgm3) - MCFG_SCREEN_VBLANK_DRIVER(pgm3_state, screen_eof_pgm3) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(pgm3_state, screen_vblank_pgm3)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 0x1000) @@ -126,7 +122,8 @@ ROM_START( kov3hd ) // does it boot from the card, or is there an internal rom? DISK_REGION( "card" ) - DISK_IMAGE( "kov3hd_v105", 0, SHA1(c185888c59880805bb76b5c0a42b05c614dcff37) ) + DISK_IMAGE( "kov3hd_m105", 0, SHA1(81af30aa6e1a34b2a8fab8c5c23a313a7164767c) ) + //DISK_IMAGE( "kov3hd_v105", 0, SHA1(c185888c59880805bb76b5c0a42b05c614dcff37) ) bad dump, doesn't work on real hardware ROM_END ROM_START( kov3hd104 ) @@ -168,7 +165,7 @@ DRIVER_INIT_MEMBER(pgm3_state,kov3hd) // all dumped sets might be China region, unless region info comes from elsewhere -GAME( 2011, kov3hd, 0, pgm3, pgm3, pgm3_state, kov3hd, ROT0, "IGS", "Knights of Valour 3 HD (V105)", MACHINE_IS_SKELETON ) +GAME( 2011, kov3hd, 0, pgm3, pgm3, pgm3_state, kov3hd, ROT0, "IGS", "Knights of Valour 3 HD (M-105CN 13-07-04 18:54:01)", MACHINE_IS_SKELETON ) GAME( 2011, kov3hd104, kov3hd, pgm3, pgm3, pgm3_state, kov3hd, ROT0, "IGS", "Knights of Valour 3 HD (V104)", MACHINE_IS_SKELETON ) GAME( 2011, kov3hd103, kov3hd, pgm3, pgm3, pgm3_state, kov3hd, ROT0, "IGS", "Knights of Valour 3 HD (V103)", MACHINE_IS_SKELETON ) GAME( 2011, kov3hd102, kov3hd, pgm3, pgm3, pgm3_state, kov3hd, ROT0, "IGS", "Knights of Valour 3 HD (V102)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/phc25.cpp b/src/mame/drivers/phc25.cpp index 905504b6fbf..37881f0ede4 100644 --- a/src/mame/drivers/phc25.cpp +++ b/src/mame/drivers/phc25.cpp @@ -306,7 +306,7 @@ void phc25_state::video_start() /* Machine Driver */ -static MACHINE_CONFIG_START( phc25, phc25_state ) +static MACHINE_CONFIG_START( phc25 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(phc25_mem) @@ -325,6 +325,7 @@ static MACHINE_CONFIG_START( phc25, phc25_state ) MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_FORMATS(phc25_cassette_formats) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) + MCFG_CASSETTE_INTERFACE("phc25_cass") MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer") MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(phc25_state, write_centronics_busy)) @@ -334,6 +335,9 @@ static MACHINE_CONFIG_START( phc25, phc25_state ) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("16K") + + /* software lists */ + MCFG_SOFTWARE_LIST_ADD("cass_list", "phc25_cass") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pal, phc25 ) @@ -344,7 +348,7 @@ static MACHINE_CONFIG_DERIVED( pal, phc25 ) MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(phc25_state, irq_w)) MCFG_MC6847_INPUT_CALLBACK(READ8(phc25_state, video_ram_r)) MCFG_MC6847_CHARROM_CALLBACK(phc25_state, pal_char_rom_r) - MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM2 | MC6847_MODE_GM1 | MC6847_MODE_INTEXT) + MCFG_MC6847_FIXED_MODE(mc6847_pal_device::MODE_GM2 | mc6847_pal_device::MODE_GM1 | mc6847_pal_device::MODE_INTEXT) // other lines not connected MACHINE_CONFIG_END @@ -356,7 +360,7 @@ static MACHINE_CONFIG_DERIVED( ntsc, phc25 ) MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(phc25_state, irq_w)) MCFG_MC6847_INPUT_CALLBACK(READ8(phc25_state, video_ram_r)) MCFG_MC6847_CHARROM_CALLBACK(phc25_state, ntsc_char_rom_r) - MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM2 | MC6847_MODE_GM1 | MC6847_MODE_INTEXT) + MCFG_MC6847_FIXED_MODE(mc6847_ntsc_device::MODE_GM2 | mc6847_ntsc_device::MODE_GM1 | mc6847_ntsc_device::MODE_INTEXT) // other lines not connected MACHINE_CONFIG_END @@ -364,9 +368,11 @@ MACHINE_CONFIG_END ROM_START( phc25 ) ROM_REGION( 0x6000, Z80_TAG, 0 ) - ROM_LOAD( "phc25rom.0", 0x0000, 0x2000, CRC(fa28336b) SHA1(582376bee455e124de24ba4ac02326c8a592fa5a)) - ROM_LOAD( "phc25rom.1", 0x2000, 0x2000, CRC(38fd578b) SHA1(dc3db78c0cdc89f1605200d39535be65a4091705)) - ROM_LOAD( "phc25rom.2", 0x4000, 0x2000, CRC(54392b27) SHA1(1587827fe9438780b50164727ce3fdea1b98078a)) + ROM_LOAD( "phc25rom.0", 0x0000, 0x2000, CRC(fa28336b) SHA1(582376bee455e124de24ba4ac02326c8a592fa5a)) // 031_00aa.ic13 ? + ROM_LOAD( "phc25rom.1", 0x2000, 0x2000, CRC(38fd578b) SHA1(dc3db78c0cdc89f1605200d39535be65a4091705)) // 031_01a.ic14 ? + ROM_LOAD( "phc25rom.2", 0x4000, 0x2000, CRC(54392b27) SHA1(1587827fe9438780b50164727ce3fdea1b98078a)) // 031_02a.ic15 ? + ROM_REGION( 0x1000, "chargen", 0 ) + ROM_LOAD( "031_04a.ic6", 0x0000, 0x1000, CRC(e56fb8c5) SHA1(6fc388c17fb43debfbc1464f767d0ce1375ce27b)) ROM_END ROM_START( phc25j ) @@ -383,6 +389,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, phc25, 0, 0, pal, phc25, driver_device, 0, "Sanyo", "PHC-25 (Europe)", MACHINE_NO_SOUND ) -COMP( 1983, phc25j, phc25, 0, ntsc, phc25j, driver_device, 0, "Sanyo", "PHC-25 (Japan)", MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1983, phc25, 0, 0, pal, phc25, phc25_state, 0, "Sanyo", "PHC-25 (Europe)", MACHINE_NO_SOUND ) +COMP( 1983, phc25j, phc25, 0, ntsc, phc25j, phc25_state, 0, "Sanyo", "PHC-25 (Japan)", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/phoenix.cpp b/src/mame/drivers/phoenix.cpp index 8b7411749f3..ea6793b4e3d 100644 --- a/src/mame/drivers/phoenix.cpp +++ b/src/mame/drivers/phoenix.cpp @@ -29,7 +29,7 @@ Notes: To Do: Phoenix: -- Emulate the different sound system used by phoenixc2. +- Emulate the different sound system used at least by phoenixc2 and griffono. - Better documentation of the bootlegs. Survival: @@ -47,6 +47,7 @@ Pleiads: #include "emu.h" #include "includes/phoenix.h" +#include "audio/phoenix.h" #include "cpu/z80/z80.h" #include "cpu/i8085/i8085.h" @@ -436,7 +437,7 @@ MACHINE_RESET_MEMBER(phoenix_state,phoenix) } -static MACHINE_CONFIG_START( phoenix, phoenix_state ) +static MACHINE_CONFIG_START( phoenix ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, CPU_CLOCK) /* 2.75 MHz */ @@ -505,7 +506,7 @@ MACHINE_CONFIG_END /* Same as Phoenix, but uses an AY8910 and an extra visible line (column) */ -static MACHINE_CONFIG_START( survival, phoenix_state ) +static MACHINE_CONFIG_START( survival ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, CPU_CLOCK) /* 5.50 MHz */ @@ -777,7 +778,7 @@ main PCB is marked: "PH2" main PCB is labeled: "03814367" and "280402" and "N 132073" ROMs PCB is marked: "PH1" On top of main PCB there is a small piggyback PCB. it is a replacement for MN6221 Melody-Alarm Generator - sound. There are 3 PROMs (dumped) and a few 74xx logics. -This board was in a cocktail table cabinet manufactured by Model Racing and labeled "Thunderbird". +This board was in a cocktail table cabinet manufactured by Model Racing and labeled "Thunderbird". */ ROM_START( phoenixc2 ) // verified main and ROMs PCBs and 2 PROMs @@ -1158,7 +1159,7 @@ ROM_START( avefenixl ) ROM_END /* -PCB is marked: "003 LATO A" on component side and "003 LATO B" on solder side. (In Italian "lato" means "side") +PCB is marked: "003 LATO A" on component side and "003 LATO B" on solder side. (In Italian "lato" means "side") */ ROM_START( griffon ) // verified single PCB, single PROM @@ -1166,7 +1167,8 @@ ROM_START( griffon ) // verified single PCB, single PROM ROM_LOAD( "griffon0.a5", 0x0000, 0x0800, CRC(c0f73929) SHA1(3cecf8341a5674165d2cae9b22ea5db26a9597de) ) ROM_LOAD( "griffon1.a6", 0x0800, 0x0800, CRC(3cc33e4a) SHA1(45d16334f245cc185e18f63062e08627e9bd06bb) ) ROM_LOAD( "griffon2.a7", 0x1000, 0x0800, CRC(750b059b) SHA1(6fbaa2ef4c7eef6f731a73b2d33a02fff21b318a) ) - ROM_LOAD( "griffon3.a8", 0x1800, 0x0800, CRC(3a6188eb) SHA1(f343d7a6dc836d118621e9a143799e33658a3005) ) + // ROM_LOAD( "griffon3.a8", 0x1800, 0x0800, CRC(3a6188eb) SHA1(f343d7a6dc836d118621e9a143799e33658a3005) ) // suspected bitrot, new dump has been confirmed on 2 different PCBs + ROM_LOAD( "griffon3.a8", 0x1800, 0x0800, CRC(5e49f5b5) SHA1(288314d24b3e8f507c43db6c64a7777e97215ed1) ) ROM_LOAD( "griffon4.a9", 0x2000, 0x0800, CRC(87a45ceb) SHA1(0788dd57eac3047e34a50e730df37059616abc1a) ) ROM_LOAD( "griffon5.a10", 0x2800, 0x0800, CRC(8c83bff7) SHA1(3dfb090d7e3a9ae8da882b06e166c48555eaf77c) ) ROM_LOAD( "griffon6.a11", 0x3000, 0x0800, CRC(805ec2e8) SHA1(7e56fc9990eb99512078e2b1e2874fb33b0aa05c) ) @@ -1184,6 +1186,36 @@ ROM_START( griffon ) // verified single PCB, single PROM ROM_LOAD( "sn74s471n.bin", 0x0100, 0x0100, CRC(c68a49bc) SHA1(1a015b89ac0622e73bcebd76cf5132830fe0bfc1) ) ROM_END +/*There is no MN6221AA Melody-Alarm Generator, it is substituted by a small piggyback sound PCB with some 74xx logic + and 2x PROM 63S140N main PCB is marked: "003 LATO A" and "003 LATO B" sound PCB is marked: "LC" and "NW"*/ + +ROM_START( griffono ) // verified single PCB with piggyback sound PCB instead of MM6221AA, single PROM + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "griffon00.5a", 0x0000, 0x0800, CRC(c0f73929) SHA1(3cecf8341a5674165d2cae9b22ea5db26a9597de) ) + ROM_LOAD( "griffon01.6a", 0x0800, 0x0800, CRC(22ec3403) SHA1(528a0ee3e78a43e57cc7666818cb300144d410ae) ) + ROM_LOAD( "griffon02.7a", 0x1000, 0x0800, CRC(750b059b) SHA1(6fbaa2ef4c7eef6f731a73b2d33a02fff21b318a) ) + ROM_LOAD( "griffon03.8a", 0x1800, 0x0800, CRC(73c90019) SHA1(7cc45e57d3566aa0b474f4bbfbaddfc4372473c4) ) + ROM_LOAD( "griffon04.9a", 0x2000, 0x0800, CRC(87a45ceb) SHA1(0788dd57eac3047e34a50e730df37059616abc1a) ) + ROM_LOAD( "griffon05.10a", 0x2800, 0x0800, CRC(8c83bff7) SHA1(3dfb090d7e3a9ae8da882b06e166c48555eaf77c) ) + ROM_LOAD( "griffon06.11a", 0x3000, 0x0800, CRC(805ec2e8) SHA1(7e56fc9990eb99512078e2b1e2874fb33b0aa05c) ) + ROM_LOAD( "griffon07-0.12a", 0x3800, 0x0800, CRC(7fbdd2fa) SHA1(13f3a6b5bd2191b6d40ae224f77200c7779ee8eb) ) + + ROM_REGION( 0x1000, "bgtiles", 0 ) + ROM_LOAD( "griffonb7.7b", 0x0000, 0x0800, CRC(3c7e623f) SHA1(e7ff5fc371664af44785c079e92eeb2d8530187b) ) + ROM_LOAD( "griffonb8.8b", 0x0800, 0x0800, CRC(59916d3b) SHA1(71aec70a8e096ed1f0c2297b3ae7dca1b8ecc38d) ) + + ROM_REGION( 0x1000, "fgtiles", 0 ) + ROM_LOAD( "griffond7-0.7d", 0x0000, 0x0800, CRC(074eb660) SHA1(5f0cd92e22b6948dffbf56e5ea57cdda9b3e2c51) ) + ROM_LOAD( "griffond8.8d", 0x0800, 0x0800, CRC(bee48e0c) SHA1(a129510a6bddafe3de3f921fca34ecda03a1c283) ) + + ROM_REGION( 0x0200, "soundproms", 0 ) // currently not used by the emulation + ROM_LOAD( "63s140n.1", 0x0000, 0x0100, CRC(73d5f0c2) SHA1(5ca482ab68ffd52d16c532c72c1a2ed693648995) ) + ROM_LOAD( "63s140n.2", 0x0100, 0x0100, CRC(c790b283) SHA1(50b14ffbf69851995ab9fe54d0ea58dc7a30a9ba) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "sn74s471n.11k", 0x0100, 0x0100, CRC(c68a49bc) SHA1(1a015b89ac0622e73bcebd76cf5132830fe0bfc1) ) +ROM_END + ROM_START( nextfase ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "nf01.bin", 0x0000, 0x0800, CRC(b31ce820) SHA1(dfdb17995a14b66d2571c2c8de481d2792f9ce6a) ) @@ -1505,49 +1537,50 @@ DRIVER_INIT_MEMBER(phoenix_state, oneprom_coindsw) /*** Phoenix (& clones) ***/ -GAME( 1980, phoenix, 0, phoenix, phoenix, driver_device, 0, ROT90, "Amstar", "Phoenix (Amstar, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, phoenix2, phoenix, phoenix, phoenix, driver_device, 0, ROT90, "Amstar", "Phoenix (Amstar, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, phoenixa, phoenix, phoenix, phoenixa, driver_device, 0, ROT90, "Amstar (Centuri license)", "Phoenix (Centuri, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, phoenixb, phoenix, phoenix, phoenixa, driver_device, 0, ROT90, "Amstar (Centuri license)", "Phoenix (Centuri, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, phoenixt, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "Amstar (Taito license)", "Phoenix (Taito)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, phoenixj, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "Amstar (Taito Japan license)", "Phoenix (Taito Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, phoenix3, phoenix, phoenix, phoenix3, driver_device, 0, ROT90, "bootleg (T.P.N.)", "Phoenix (T.P.N. bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, phoenixdal, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "bootleg (D&L)", "Phoenix (D&L bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, phoenixc, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "bootleg? (Irecsa / G.G.I Corp)", "Phoenix (Irecsa / G.G.I Corp, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, phoenixc2, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "bootleg? (Irecsa / G.G.I Corp)", "Phoenix (Irecsa / G.G.I Corp, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, phoenixc3, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "bootleg? (Irecsa / G.G.I Corp)", "Phoenix (Irecsa / G.G.I Corp, set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, phoenixc4, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "bootleg? (Irecsa / G.G.I Corp)", "Phoenix (Irecsa / G.G.I Corp, set 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, phoenix, 0, phoenix, phoenix, phoenix_state, 0, ROT90, "Amstar", "Phoenix (Amstar, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, phoenix2, phoenix, phoenix, phoenix, phoenix_state, 0, ROT90, "Amstar", "Phoenix (Amstar, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, phoenixa, phoenix, phoenix, phoenixa, phoenix_state, 0, ROT90, "Amstar (Centuri license)", "Phoenix (Centuri, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, phoenixb, phoenix, phoenix, phoenixa, phoenix_state, 0, ROT90, "Amstar (Centuri license)", "Phoenix (Centuri, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, phoenixt, phoenix, phoenix, phoenixt, phoenix_state, 0, ROT90, "Amstar (Taito license)", "Phoenix (Taito)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, phoenixj, phoenix, phoenix, phoenixt, phoenix_state, 0, ROT90, "Amstar (Taito Japan license)", "Phoenix (Taito Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, phoenix3, phoenix, phoenix, phoenix3, phoenix_state, 0, ROT90, "bootleg (T.P.N.)", "Phoenix (T.P.N. bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, phoenixdal, phoenix, phoenix, phoenixt, phoenix_state, 0, ROT90, "bootleg (D&L)", "Phoenix (D&L bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, phoenixc, phoenix, phoenix, phoenixt, phoenix_state, 0, ROT90, "bootleg? (Irecsa / G.G.I Corp)", "Phoenix (Irecsa / G.G.I Corp, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, phoenixc2, phoenix, phoenix, phoenixt, phoenix_state, 0, ROT90, "bootleg? (Irecsa / G.G.I Corp)", "Phoenix (Irecsa / G.G.I Corp, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, phoenixc3, phoenix, phoenix, phoenixt, phoenix_state, 0, ROT90, "bootleg? (Irecsa / G.G.I Corp)", "Phoenix (Irecsa / G.G.I Corp, set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, phoenixc4, phoenix, phoenix, phoenixt, phoenix_state, 0, ROT90, "bootleg? (Irecsa / G.G.I Corp)", "Phoenix (Irecsa / G.G.I Corp, set 4)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, phoenixi, phoenix, condor, condor, phoenix_state, oneprom_coindsw, ROT90, "bootleg (IDI)", "Phoenix (IDI bootleg)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Needs correct color PROM decode GAME( 1981, condor, phoenix, condor, condor, phoenix_state, coindsw, ROT90, "bootleg (Sidam)", "Condor (Sidam bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, condorn, phoenix, condor, condor, phoenix_state, oneprom_coindsw, ROT90, "bootleg (S C Novar)", "Condor (S C Novar bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) // the following 2 were common bootlegs in England & France respectively -GAME( 1980, falcon, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "bootleg", "Falcon (bootleg of Phoenix) (8085A CPU)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, vautour, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "bootleg (Jeutel)", "Vautour (bootleg of Phoenix) (8085A CPU)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, falconz, phoenix, condor, falconz, driver_device, 0, ROT90, "bootleg (Digimatic)", "Falcon (bootleg of Phoenix) (Z80 CPU)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, falcon, phoenix, phoenix, phoenixt, phoenix_state, 0, ROT90, "bootleg", "Falcon (bootleg of Phoenix) (8085A CPU)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, vautour, phoenix, phoenix, phoenixt, phoenix_state, 0, ROT90, "bootleg (Jeutel)", "Vautour (bootleg of Phoenix) (8085A CPU)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, falconz, phoenix, condor, falconz, phoenix_state, 0, ROT90, "bootleg (Digimatic)", "Falcon (bootleg of Phoenix) (Z80 CPU)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, vautourz, phoenix, condor, condor, phoenix_state, coindsw, ROT90, "bootleg", "Vautour (bootleg of Phoenix) (Z80 CPU)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, vautourza, phoenix, condor , phoenixt, phoenix_state, oneprom, ROT90, "bootleg (Jeutel)", "Vautour (bootleg of Phoenix) (Z80 CPU, single PROM)", MACHINE_SUPPORTS_SAVE ) // fenix is an Italian bootleg based on vautourz GAME( 1980, fenix, phoenix, condor, condor, phoenix_state, oneprom_coindsw, ROT90, "bootleg (Orio)", "Fenix (bootleg of Phoenix)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, griffon, phoenix, condor, condor, phoenix_state, oneprom_coindsw, ROT90, "bootleg (Videotron)", "Griffon (bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, griffon, phoenix, condor, condor, phoenix_state, oneprom_coindsw, ROT90, "bootleg (Videotron)", "Griffon (Videotron bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, griffono, phoenix, condor, condor, phoenix_state, oneprom_coindsw, ROT90, "bootleg (Olympia)", "Griffon (Olympia bootleg of Phoenix)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // nextfase is a Spanish bootleg -GAME( 1981, nextfase, phoenix, phoenix, nextfase, driver_device, 0, ROT90, "bootleg (Petaco S.A.)", "Next Fase (bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, nextfase, phoenix, phoenix, nextfase, phoenix_state, 0, ROT90, "bootleg (Petaco S.A.)", "Next Fase (bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) // as is this -GAME( 1981, phoenixs, phoenix, phoenix, phoenix, driver_device, 0, ROT90, "bootleg (Sonic)", "Phoenix (Sonic, Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, phoenixass, phoenix, phoenix, phoenix, driver_device, 0, ROT90, "bootleg (Assa)", "Phoenix (Assa, Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, avefenix, phoenix, phoenix, phoenix, driver_device, 0, ROT90, "bootleg (Video Game)", "Ave Fenix (Electrogame, Spanish bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) // Electrogame (Barcelona) made the dedicated cabinet and is likely the real manufacturer, ingame shows 'Video Game' -GAME( 1980, avefenixrf, phoenix, phoenix, phoenix, driver_device, 0, ROT90, "bootleg (Recreativos Franco S.A.)", "Ave Fenix (Recreativos Franco, Spanish bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, avefenixl, phoenix, phoenix, phoenix, driver_device, 0, ROT90, "bootleg (Laguna)", "Ave Fenix (Laguna, Spanish bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) - +GAME( 1981, phoenixs, phoenix, phoenix, phoenix, phoenix_state, 0, ROT90, "bootleg (Sonic)", "Phoenix (Sonic, Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, phoenixass, phoenix, phoenix, phoenix, phoenix_state, 0, ROT90, "bootleg (Assa)", "Phoenix (Assa, Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, avefenix, phoenix, phoenix, phoenix, phoenix_state, 0, ROT90, "bootleg (Video Game)", "Ave Fenix (Electrogame, Spanish bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) // Electrogame (Barcelona) made the dedicated cabinet and is likely the real manufacturer, ingame shows 'Video Game' +GAME( 1980, avefenixrf, phoenix, phoenix, phoenix, phoenix_state, 0, ROT90, "bootleg (Recreativos Franco S.A.)", "Ave Fenix (Recreativos Franco, Spanish bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, avefenixl, phoenix, phoenix, phoenix, phoenix_state, 0, ROT90, "bootleg (Laguna)", "Ave Fenix (Laguna, Spanish bootleg of Phoenix)", MACHINE_SUPPORTS_SAVE ) + /*** Pleiads (& clones) ***/ -GAME( 1981, pleiads, 0, pleiads, pleiads, driver_device, 0, ROT90, "Tehkan", "Pleiads (Tehkan)", MACHINE_IMPERFECT_COLORS ) -GAME( 1981, pleiadsb2, pleiads, pleiads, pleiads, driver_device, 0, ROT90, "bootleg (ESG)", "Pleiads (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, pleiadbl, pleiads, pleiads, pleiadbl, driver_device, 0, ROT90, "bootleg", "Pleiads (bootleg set 1)", MACHINE_IMPERFECT_COLORS ) -GAME( 1981, pleiadce, pleiads, pleiads, pleiadce, driver_device, 0, ROT90, "Tehkan (Centuri license)", "Pleiads (Centuri)", MACHINE_IMPERFECT_COLORS ) -GAME( 1981, pleiadsi, pleiads, pleiads, pleiadce, driver_device, 0, ROT90, "bootleg? (Irecsa)", "Pleiads (Irecsa)", MACHINE_IMPERFECT_COLORS ) // possibly licensed, but some of the roms match the bootlegs -GAME( 1981, pleiadsn, pleiads, phoenix, pleiadce, driver_device, 0, ROT90, "Niemer S.A.", "Pleiads (Niemer S.A.)", MACHINE_IMPERFECT_COLORS ) // possibly licensed, but some of the roms match the bootlegs -GAME( 1981, pleiadss, pleiads, phoenix, pleiadce, driver_device, 0, ROT90, "bootleg", "Pleiads (Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // colours match PCB (but are ugly) -GAME( 1981, capitol, pleiads, phoenix, capitol, driver_device, 0, ROT90, "bootleg? (Universal Video Spiel)", "Capitol", MACHINE_IMPERFECT_COLORS ) - +GAME( 1981, pleiads, 0, pleiads, pleiads, phoenix_state, 0, ROT90, "Tehkan", "Pleiads (Tehkan)", MACHINE_IMPERFECT_COLORS ) +GAME( 1981, pleiadsb2, pleiads, pleiads, pleiads, phoenix_state, 0, ROT90, "bootleg (ESG)", "Pleiads (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, pleiadbl, pleiads, pleiads, pleiadbl, phoenix_state, 0, ROT90, "bootleg", "Pleiads (bootleg set 1)", MACHINE_IMPERFECT_COLORS ) +GAME( 1981, pleiadce, pleiads, pleiads, pleiadce, phoenix_state, 0, ROT90, "Tehkan (Centuri license)", "Pleiads (Centuri)", MACHINE_IMPERFECT_COLORS ) +GAME( 1981, pleiadsi, pleiads, pleiads, pleiadce, phoenix_state, 0, ROT90, "bootleg? (Irecsa)", "Pleiads (Irecsa)", MACHINE_IMPERFECT_COLORS ) // possibly licensed, but some of the roms match the bootlegs +GAME( 1981, pleiadsn, pleiads, phoenix, pleiadce, phoenix_state, 0, ROT90, "Niemer S.A.", "Pleiads (Niemer S.A.)", MACHINE_IMPERFECT_COLORS ) // possibly licensed, but some of the roms match the bootlegs +GAME( 1981, pleiadss, pleiads, phoenix, pleiadce, phoenix_state, 0, ROT90, "bootleg", "Pleiads (Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // colours match PCB (but are ugly) +GAME( 1981, capitol, pleiads, phoenix, capitol, phoenix_state, 0, ROT90, "bootleg? (Universal Video Spiel)", "Capitol", MACHINE_IMPERFECT_COLORS ) + /*** Others ***/ -GAME( 1982, survival, 0, survival, survival, driver_device, 0, ROT90, "Rock-Ola", "Survival", MACHINE_IMPERFECT_COLORS ) +GAME( 1982, survival, 0, survival, survival, phoenix_state, 0, ROT90, "Rock-Ola", "Survival", MACHINE_IMPERFECT_COLORS ) diff --git a/src/mame/drivers/photon.cpp b/src/mame/drivers/photon.cpp index ef1b28fdccf..4c3bc0fa5d6 100644 --- a/src/mame/drivers/photon.cpp +++ b/src/mame/drivers/photon.cpp @@ -195,7 +195,7 @@ uint32_t photon_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap return video_update(screen, bitmap, cliprect, memregion("maincpu")->base()); } -static MACHINE_CONFIG_START( photon, photon_state ) +static MACHINE_CONFIG_START( photon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, 1780000) @@ -271,6 +271,6 @@ ROM_START( phklad ) ROM_LOAD( "klad.bin", 0x10000, 0x4000, BAD_DUMP CRC(49cc7d65) SHA1(d966cfc1d973a533df8044a71fad37f7177da554) ) ROM_END -GAME( 19??, phtetris, 0, photon, photon, driver_device, 0, ROT0, "", "Tetris (Photon System)", 0 ) -GAME( 1989?, phpython, 0, photon, photon, driver_device, 0, ROT0, "", "Python (Photon System)", 0 ) -GAME( 19??, phklad, 0, photon, photon, driver_device, 0, ROT0, "", "Klad / Labyrinth (Photon System)", 0 ) +GAME( 19??, phtetris, 0, photon, photon, photon_state, 0, ROT0, "", "Tetris (Photon System)", 0 ) +GAME( 1989?, phpython, 0, photon, photon, photon_state, 0, ROT0, "", "Python (Photon System)", 0 ) +GAME( 19??, phklad, 0, photon, photon, photon_state, 0, ROT0, "", "Klad / Labyrinth (Photon System)", 0 ) diff --git a/src/mame/drivers/photon2.cpp b/src/mame/drivers/photon2.cpp index 2cf2362e086..8cb476d4d62 100644 --- a/src/mame/drivers/photon2.cpp +++ b/src/mame/drivers/photon2.cpp @@ -57,7 +57,7 @@ public: DECLARE_PALETTE_INIT(photon2); uint32_t screen_update_spectrum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_spectrum(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_spectrum); TIMER_DEVICE_CALLBACK_MEMBER(spec_interrupt_hack); }; @@ -137,7 +137,7 @@ static inline unsigned char get_display_color (unsigned char color, int invert) /* Code to change the FLASH status every 25 frames. Note this must be independent of frame skip etc. */ -void photon2_state::screen_eof_spectrum(screen_device &screen, bool state) +WRITE_LINE_MEMBER(photon2_state::screen_vblank_spectrum) { // rising edge if (state) @@ -346,7 +346,7 @@ void photon2_state::machine_start() save_item(NAME(m_nmi_enable)); } -static MACHINE_CONFIG_START( photon2, photon2_state ) +static MACHINE_CONFIG_START( photon2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3500000) /* 3.5 MHz */ MCFG_CPU_PROGRAM_MAP(spectrum_mem) @@ -361,7 +361,7 @@ static MACHINE_CONFIG_START( photon2, photon2_state ) MCFG_SCREEN_SIZE(SPEC_SCREEN_WIDTH, SPEC_SCREEN_HEIGHT) MCFG_SCREEN_VISIBLE_AREA(0, SPEC_SCREEN_WIDTH-1, 0, SPEC_SCREEN_HEIGHT-1) MCFG_SCREEN_UPDATE_DRIVER(photon2_state, screen_update_spectrum) - MCFG_SCREEN_VBLANK_DRIVER(photon2_state, screen_eof_spectrum) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(photon2_state, screen_vblank_spectrum)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 16) @@ -408,6 +408,6 @@ ROM_START( brod ) ROM_LOAD( "brod13.bin", 0xa000, 0x2000, CRC(1177cd17) SHA1(58c5c09a7b857ce6311339c4d0f4d8c1a7e232a3) ) ROM_END -GAME( 19??, kok, 0, photon2, photon2, driver_device, 0, ROT0, "bootleg", "Povar / Sobrat' Buran / Agroprom (Arcade multi-game bootleg of ZX Spectrum 'Cookie', 'Jetpac' & 'Pssst')", MACHINE_SUPPORTS_SAVE ) // originals (c)1983 ACG / Ultimate -GAME( 19??, black, 0, photon2, black, driver_device, 0, ROT0, "bootleg", "Czernyj Korabl (Arcade bootleg of ZX Spectrum 'Blackbeard')", MACHINE_SUPPORTS_SAVE ) // original (c)1988 Toposoft -GAME( 19??, brod, 0, photon2, black, driver_device, 0, ROT0, "bootleg", "Brodjaga (Arcade bootleg of ZX Spectrum 'Inspector Gadget and the Circus of Fear')", MACHINE_SUPPORTS_SAVE ) // original (c)1987 BEAM software +GAME( 19??, kok, 0, photon2, photon2, photon2_state, 0, ROT0, "bootleg", "Povar / Sobrat' Buran / Agroprom (Arcade multi-game bootleg of ZX Spectrum 'Cookie', 'Jetpac' & 'Pssst')", MACHINE_SUPPORTS_SAVE ) // originals (c)1983 ACG / Ultimate +GAME( 19??, black, 0, photon2, black, photon2_state, 0, ROT0, "bootleg", "Czernyj Korabl (Arcade bootleg of ZX Spectrum 'Blackbeard')", MACHINE_SUPPORTS_SAVE ) // original (c)1988 Toposoft +GAME( 19??, brod, 0, photon2, black, photon2_state, 0, ROT0, "bootleg", "Brodjaga (Arcade bootleg of ZX Spectrum 'Inspector Gadget and the Circus of Fear')", MACHINE_SUPPORTS_SAVE ) // original (c)1987 BEAM software diff --git a/src/mame/drivers/photoply.cpp b/src/mame/drivers/photoply.cpp index 18e389e6d90..6c905d53af0 100644 --- a/src/mame/drivers/photoply.cpp +++ b/src/mame/drivers/photoply.cpp @@ -114,7 +114,7 @@ static GFXDECODE_START( photoply ) //there's also a 8x16 entry (just after the 8x8) GFXDECODE_END -static MACHINE_CONFIG_START( photoply, photoply_state ) +static MACHINE_CONFIG_START( photoply ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I486, 75000000) /* I486DX4, 75 or 100 Mhz */ MCFG_CPU_PROGRAM_MAP(photoply_map) diff --git a/src/mame/drivers/phunsy.cpp b/src/mame/drivers/phunsy.cpp index 2a70fb87a1a..6bbd9db3656 100644 --- a/src/mame/drivers/phunsy.cpp +++ b/src/mame/drivers/phunsy.cpp @@ -56,7 +56,7 @@ public: DECLARE_READ8_MEMBER(phunsy_data_r); DECLARE_WRITE8_MEMBER(phunsy_ctrl_w); DECLARE_WRITE8_MEMBER(phunsy_data_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(cass_r); DECLARE_WRITE_LINE_MEMBER(cass_w); DECLARE_QUICKLOAD_LOAD_MEMBER(phunsy); @@ -180,7 +180,7 @@ static INPUT_PORTS_START( phunsy ) INPUT_PORTS_END -WRITE8_MEMBER( phunsy_state::kbd_put ) +void phunsy_state::kbd_put(u8 data) { if (data) m_keyboard_input = data; @@ -327,7 +327,7 @@ DRIVER_INIT_MEMBER( phunsy_state, phunsy ) membank("bankq")->set_entry(0); } -static MACHINE_CONFIG_START( phunsy, phunsy_state ) +static MACHINE_CONFIG_START( phunsy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(phunsy_mem) @@ -359,7 +359,7 @@ static MACHINE_CONFIG_START( phunsy, phunsy_state ) /* Devices */ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(phunsy_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(phunsy_state, kbd_put)) MCFG_CASSETTE_ADD( "cassette" ) /* quickload */ @@ -389,5 +389,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ COMP( 1980, phunsy, 0, 0, phunsy, phunsy, phunsy_state, phunsy, "J.F.P. Philipse", "PHUNSY", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/piggypas.cpp b/src/mame/drivers/piggypas.cpp index d1eda58516d..1981f514765 100644 --- a/src/mame/drivers/piggypas.cpp +++ b/src/mame/drivers/piggypas.cpp @@ -126,7 +126,7 @@ HD44780_PIXEL_UPDATE(piggypas_state::piggypas_pixel_update) bitmap.pix16(y, (line * 8 + pos) * 6 + x) = state; } -static MACHINE_CONFIG_START( piggypas, piggypas_state ) +static MACHINE_CONFIG_START( piggypas ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8031, 8000000) // unknown variant @@ -152,7 +152,7 @@ static MACHINE_CONFIG_START( piggypas, piggypas_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // not verified + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) @@ -227,16 +227,16 @@ ROM_END // COPYRIGHT (c) 1990, 1991, 1992, DOYLE & ASSOC., INC. VERSION 04.40 -GAME( 1992, piggypas, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "Piggy Pass (version 04.40)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1992, piggypas, 0, piggypas, piggypas, piggypas_state, 0, ROT0, "Doyle & Assoc.", "Piggy Pass (version 04.40)", MACHINE_IS_SKELETON_MECHANICAL ) // COPYRIGHT (c) 1990, 1991, 1992, DOYLE & ASSOC., INC. VERSION 05.22 -GAME( 1992, hoopshot, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "Hoop Shot (version 05.22)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1992, hoopshot, 0, piggypas, piggypas, piggypas_state, 0, ROT0, "Doyle & Assoc.", "Hoop Shot (version 05.22)", MACHINE_IS_SKELETON_MECHANICAL ) // Quick $ilver Development Co. 10/08/96 ROUND REV 6 -GAME( 1996, rndrndqs, 0, piggypas, piggypas, driver_device, 0, ROT0, "Quick $ilver Development Co.", "Round and Round (Rev 6) (Quick $ilver)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1996, rndrndqs, 0, piggypas, piggypas, piggypas_state, 0, ROT0, "Quick $ilver Development Co.", "Round and Round (Rev 6) (Quick $ilver)", MACHINE_IS_SKELETON_MECHANICAL ) // Quick$ilver Development Co. 10/02/95 -FIDDLESTIX- REV 15T -GAME( 1995, fidlstix, 0, piggypas, piggypas, driver_device, 0, ROT0, "Quick $ilver Development Co.", "Fiddle Stix (1st Rev)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1995, fidlstix, 0, piggypas, piggypas, piggypas_state, 0, ROT0, "Quick $ilver Development Co.", "Fiddle Stix (1st Rev)", MACHINE_IS_SKELETON_MECHANICAL ) // bad dump, so version unknown -GAME( 199?, jackbean, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "Jack & The Beanstalk (Doyle & Assoc.?)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, jackbean, 0, piggypas, piggypas, piggypas_state, 0, ROT0, "Doyle & Assoc.", "Jack & The Beanstalk (Doyle & Assoc.?)", MACHINE_IS_SKELETON_MECHANICAL ) // bad dump, so version unknown -GAME( 199?, dumpump, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "Dump The Ump", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, dumpump, 0, piggypas, piggypas, piggypas_state, 0, ROT0, "Doyle & Assoc.", "Dump The Ump", MACHINE_IS_SKELETON_MECHANICAL ) // bad dump, so version unknown -GAME( 199?, 3lilpigs, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "3 Lil' Pigs", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 199?, 3lilpigs, 0, piggypas, piggypas, piggypas_state, 0, ROT0, "Doyle & Assoc.", "3 Lil' Pigs", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/pimps.cpp b/src/mame/drivers/pimps.cpp index 3f292a47949..886e45af0cd 100644 --- a/src/mame/drivers/pimps.cpp +++ b/src/mame/drivers/pimps.cpp @@ -40,7 +40,7 @@ public: DECLARE_READ8_MEMBER(term_status_r); DECLARE_READ8_MEMBER(term_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); uint8_t m_term_data; virtual void machine_reset() override; @@ -86,12 +86,12 @@ void pimps_state::machine_reset() m_term_data = 0; } -WRITE8_MEMBER( pimps_state::kbd_put ) +void pimps_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( pimps, pimps_state ) +static MACHINE_CONFIG_START( pimps ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8085A, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(pimps_mem) @@ -99,7 +99,7 @@ static MACHINE_CONFIG_START( pimps, pimps_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pimps_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(pimps_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -110,5 +110,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 197?, pimps, 0, 0, pimps, pimps, driver_device, 0, "Henry Colford", "P.I.M.P.S.", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 197?, pimps, 0, 0, pimps, pimps, pimps_state, 0, "Henry Colford", "P.I.M.P.S.", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/pinball2k.cpp b/src/mame/drivers/pinball2k.cpp index 85c522d4df0..c9457464af1 100644 --- a/src/mame/drivers/pinball2k.cpp +++ b/src/mame/drivers/pinball2k.cpp @@ -591,7 +591,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, pinball2k_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( mediagx, pinball2k_state ) +static MACHINE_CONFIG_START( mediagx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MEDIAGX, 166000000) diff --git a/src/mame/drivers/pingpong.cpp b/src/mame/drivers/pingpong.cpp index 03a5fc68e39..d8e1ee47aea 100644 --- a/src/mame/drivers/pingpong.cpp +++ b/src/mame/drivers/pingpong.cpp @@ -446,7 +446,7 @@ static GFXDECODE_START( pingpong ) GFXDECODE_END -static MACHINE_CONFIG_START( pingpong, pingpong_state ) +static MACHINE_CONFIG_START( pingpong ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,18432000/6) /* 3.072 MHz (probably) */ @@ -612,6 +612,6 @@ DRIVER_INIT_MEMBER(pingpong_state,cashquiz) } -GAME( 1985, pingpong, 0, pingpong, pingpong, driver_device, 0, ROT0, "Konami", "Konami's Ping-Pong", 0 ) -GAME( 1986, merlinmm, 0, merlinmm, merlinmm, pingpong_state, merlinmm, ROT90,"Zilec-Zenitone", "Merlins Money Maze", 0 ) -GAME( 1986, cashquiz, 0, merlinmm, cashquiz, pingpong_state, cashquiz, ROT0, "Zilec-Zenitone", "Cash Quiz (Type B, Version 5)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1985, pingpong, 0, pingpong, pingpong, pingpong_state, 0, ROT0, "Konami", "Konami's Ping-Pong", 0 ) +GAME( 1986, merlinmm, 0, merlinmm, merlinmm, pingpong_state, merlinmm, ROT90, "Zilec-Zenitone", "Merlins Money Maze", 0 ) +GAME( 1986, cashquiz, 0, merlinmm, cashquiz, pingpong_state, cashquiz, ROT0, "Zilec-Zenitone", "Cash Quiz (Type B, Version 5)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/pinkiri8.cpp b/src/mame/drivers/pinkiri8.cpp index 1416bdc446a..c50b0d06b04 100644 --- a/src/mame/drivers/pinkiri8.cpp +++ b/src/mame/drivers/pinkiri8.cpp @@ -132,12 +132,12 @@ DEVICE_ADDRESS_MAP_START( map, 8, janshi_vdp_device ) AM_RANGE(0xff6000, 0xff601f) AM_RAM AM_SHARE("crtc_regs") ADDRESS_MAP_END -const device_type JANSHIVDP = device_creator; +DEFINE_DEVICE_TYPE(JANSHIVDP, janshi_vdp_device, "janshi_vdp", "Janshi VDP") janshi_vdp_device::janshi_vdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, JANSHIVDP, "Janshi VDP", tag, owner, clock, "janshi_vdp", __FILE__), - device_memory_interface(mconfig, *this), - m_space_config("janshi_vdp", ENDIANNESS_LITTLE, 8,24, 0, address_map_delegate(FUNC(janshi_vdp_device::map), this)) + : device_t(mconfig, JANSHIVDP, tag, owner, clock) + , device_memory_interface(mconfig, *this) + , m_space_config("janshi_vdp", ENDIANNESS_LITTLE, 8,24, 0, address_map_delegate(FUNC(janshi_vdp_device::map), this)) { } @@ -1085,7 +1085,7 @@ static GFXDECODE_START( pinkiri8 ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 0x100 ) GFXDECODE_END -static MACHINE_CONFIG_START( pinkiri8, pinkiri8_state ) +static MACHINE_CONFIG_START( pinkiri8 ) MCFG_CPU_ADD("maincpu",Z180,XTAL_32MHz/2) MCFG_CPU_PROGRAM_MAP(pinkiri8_map) MCFG_CPU_IO_MAP(pinkiri8_io) @@ -1108,7 +1108,7 @@ static MACHINE_CONFIG_START( pinkiri8, pinkiri8_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END @@ -1229,7 +1229,7 @@ DRIVER_INIT_MEMBER(pinkiri8_state,ronjan) m_maincpu->space(AS_IO).install_read_handler(0x9f, 0x9f, read8_delegate(FUNC(pinkiri8_state::ronjan_patched_prot_r), this)); } -GAME( 1992, janshi, 0, pinkiri8, janshi, driver_device, 0, ROT0, "Eagle", "Janshi", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1992, janshi, 0, pinkiri8, janshi, pinkiri8_state, 0, ROT0, "Eagle", "Janshi", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAME( 1991, ronjan, ronjans, pinkiri8, ronjan, pinkiri8_state, ronjan, ROT0, "Wing Co., Ltd", "Ron Jan", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAME( 1994, ronjans, 0, pinkiri8, ronjan, pinkiri8_state, ronjan, ROT0, "Wing Co., Ltd", "Ron Jan Super", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 'SUPER' flashes in the middle of the screen -GAME( 1994, pinkiri8, 0, pinkiri8, pinkiri8, driver_device, 0, ROT0, "Alta", "Pinkiri 8", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1994, pinkiri8, 0, pinkiri8, pinkiri8, pinkiri8_state, 0, ROT0, "Alta", "Pinkiri 8", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pipbug.cpp b/src/mame/drivers/pipbug.cpp index 295d04ee1c9..8459ab89688 100644 --- a/src/mame/drivers/pipbug.cpp +++ b/src/mame/drivers/pipbug.cpp @@ -154,7 +154,7 @@ QUICKLOAD_LOAD_MEMBER( pipbug_state, pipbug ) return result; } -static MACHINE_CONFIG_START( pipbug, pipbug_state ) +static MACHINE_CONFIG_START( pipbug ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(pipbug_mem) @@ -179,5 +179,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, pipbug, 0, 0, pipbug, pipbug, driver_device, 0, "Signetics", "PIPBUG", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1979, pipbug, 0, 0, pipbug, pipbug, pipbug_state, 0, "Signetics", "PIPBUG", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/pipedrm.cpp b/src/mame/drivers/pipedrm.cpp index b6c68fd4bf7..c3f4eb48bf7 100644 --- a/src/mame/drivers/pipedrm.cpp +++ b/src/mame/drivers/pipedrm.cpp @@ -296,8 +296,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( main_portmap, AS_IO, 8, pipedrm_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_WRITE(fromance_crtc_data_w) - AM_RANGE(0x11, 0x11) AM_WRITE(fromance_crtc_register_w) + AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) AM_RANGE(0x20, 0x20) AM_READ_PORT("P1") AM_WRITE(sound_command_w) AM_RANGE(0x21, 0x21) AM_READ_PORT("P2") AM_WRITE(pipedrm_bankswitch_w) AM_RANGE(0x22, 0x25) AM_WRITE(fromance_scroll_w) @@ -596,8 +595,6 @@ MACHINE_START_MEMBER(pipedrm_state,pipedrm) MACHINE_RESET_MEMBER(pipedrm_state,pipedrm) { - int i; - m_pending_command = 0; m_sound_command = 0; @@ -612,13 +609,9 @@ MACHINE_RESET_MEMBER(pipedrm_state,pipedrm) m_scrolly[1] = 0; m_gfxreg = 0; m_flipscreen = 0; - m_crtc_register = 0; - - for (i = 0; i < 0x10; i++) - m_crtc_data[i] = 0; } -static MACHINE_CONFIG_START( pipedrm, pipedrm_state ) +static MACHINE_CONFIG_START( pipedrm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) @@ -646,6 +639,9 @@ static MACHINE_CONFIG_START( pipedrm, pipedrm_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w)) + MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) MCFG_VSYSTEM_SPR2_SET_OFFSETS(-13, -6) @@ -665,7 +661,7 @@ static MACHINE_CONFIG_START( pipedrm, pipedrm_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hatris, pipedrm_state ) +static MACHINE_CONFIG_START( hatris ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/2) @@ -693,6 +689,9 @@ static MACHINE_CONFIG_START( hatris, pipedrm_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(fromance_state, fromance_gga_data_w)) + MCFG_VIDEO_START_OVERRIDE(pipedrm_state,hatris) /* sound hardware */ @@ -926,9 +925,9 @@ DRIVER_INIT_MEMBER(pipedrm_state,hatris) * *************************************/ -GAME( 1990, pipedrm, 0, pipedrm, pipedrm, pipedrm_state, pipedrm, ROT0, "Video System Co.", "Pipe Dream (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, pipedrmu, pipedrm, pipedrm, pipedrm, pipedrm_state, pipedrm, ROT0, "Video System Co.", "Pipe Dream (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, pipedrmj, pipedrm, pipedrm, pipedrm, pipedrm_state, pipedrm, ROT0, "Video System Co.", "Pipe Dream (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, pipedrm, 0, pipedrm, pipedrm, pipedrm_state, pipedrm, ROT0, "Video System Co.", "Pipe Dream (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, pipedrmu, pipedrm, pipedrm, pipedrm, pipedrm_state, pipedrm, ROT0, "Video System Co.", "Pipe Dream (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, pipedrmj, pipedrm, pipedrm, pipedrm, pipedrm_state, pipedrm, ROT0, "Video System Co.", "Pipe Dream (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, pipedrmt, pipedrm, pipedrm, pipedrm, pipedrm_state, pipedrm, ROT0, "Video System Co.", "Pipe Dream (Taiwan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hatris, 0, hatris, hatris, pipedrm_state, hatris, ROT0, "Video System Co.", "Hatris (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hatrisj, hatris, hatris, hatris, pipedrm_state, hatris, ROT0, "Video System Co.", "Hatris (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hatris, 0, hatris, hatris, pipedrm_state, hatris, ROT0, "Video System Co.", "Hatris (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hatrisj, hatris, hatris, hatris, pipedrm_state, hatris, ROT0, "Video System Co.", "Hatris (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pipeline.cpp b/src/mame/drivers/pipeline.cpp index 40cce978752..3d66525a7be 100644 --- a/src/mame/drivers/pipeline.cpp +++ b/src/mame/drivers/pipeline.cpp @@ -349,7 +349,7 @@ PALETTE_INIT_MEMBER(pipeline_state, pipeline) } } -static MACHINE_CONFIG_START( pipeline, pipeline_state ) +static MACHINE_CONFIG_START( pipeline ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 7372800/2) @@ -433,4 +433,4 @@ ROM_START( pipeline ) ROM_LOAD( "82s123.u79", 0x00200, 0x00020,CRC(6df3f972) SHA1(0096a7f7452b70cac6c0752cb62e24b643015b5c) ) ROM_END -GAME( 1990, pipeline, 0, pipeline, pipeline, driver_device, 0, ROT0, "Daehyun Electronics", "Pipeline", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, pipeline, 0, pipeline, pipeline, pipeline_state, 0, ROT0, "Daehyun Electronics", "Pipeline", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pirates.cpp b/src/mame/drivers/pirates.cpp index e31a6f56fd1..54f83d68175 100644 --- a/src/mame/drivers/pirates.cpp +++ b/src/mame/drivers/pirates.cpp @@ -251,7 +251,7 @@ GFXDECODE_END /* Machine Driver + Related bits */ -static MACHINE_CONFIG_START( pirates, pirates_state ) +static MACHINE_CONFIG_START( pirates ) MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16mhz */ MCFG_CPU_PROGRAM_MAP(pirates_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", pirates_state, irq1_line_hold) @@ -275,7 +275,7 @@ static MACHINE_CONFIG_START( pirates, pirates_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1333333, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1333333, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -472,7 +472,7 @@ DRIVER_INIT_MEMBER(pirates_state,genix) /* GAME */ -GAME( 1994, pirates, 0, pirates, pirates, pirates_state, pirates, 0, "NIX", "Pirates (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, pirates, 0, pirates, pirates, pirates_state, pirates, 0, "NIX", "Pirates (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1995, piratesb, pirates, pirates, pirates, pirates_state, pirates, 0, "NIX", "Pirates (set 2)", MACHINE_SUPPORTS_SAVE ) // shows 'Copyright 1995' instead of (c)1994 Nix, but isn't unprotected, various changes to the names in the credis + a few other minor alterations -GAME( 1994, genix, 0, pirates, pirates, pirates_state, genix, 0, "NIX", "Genix Family", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, genix, 0, pirates, pirates, pirates_state, genix, 0, "NIX", "Genix Family", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/piratesh.cpp b/src/mame/drivers/piratesh.cpp new file mode 100644 index 00000000000..cb828399489 --- /dev/null +++ b/src/mame/drivers/piratesh.cpp @@ -0,0 +1,679 @@ +// license:BSD-3-Clause +/************************************************************************** + Pirate Ship + + PWB(A)354460B + + MC68HC00FN16 + + 054539 - 8-Channel ADPCM sound generator. Clock input 18.432MHz. Clock outputs 18.432/4 & 18.432/8 + 053250 - LVC road generator + 053246A - Sprite generator + 055673 - Sprite generator + 055555 - Mixer/Priority encoder + 056832 - Tilemap generator + 054156 - Tilemap generator + 053252 - CRTC + + + 053250 config: + + SELC (69) GND + SEL1 (83) GND + SEL0 (82) GND + MODE (68) GND + + TODO: Music stops if a coin is inserted. MAME or BTNAB? + +**************************************************************************/ + +#include "emu.h" +#include "speaker.h" +#include "video/k053250_ps.h" +#include "machine/nvram.h" +#include "cpu/m68000/m68000.h" +#include "sound/k054539.h" +#include "includes/konamigx.h" // TODO: WHY? +#include "video/konami_helper.h" +#include "machine/ticket.h" +#include "machine/gen_latch.h" +#include "machine/k053252.h" +#include "video/k055555.h" +#include "video/k054000.h" +#include "video/k053246_k053247_k055673.h" + +class piratesh_state : public driver_device +{ +public: + piratesh_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this,"maincpu"), + m_k053250(*this, "k053250"), + m_k053252(*this, "k053252"), + m_k056832(*this, "k056832"), + m_k055673(*this, "k055673"), + m_k055555(*this, "k055555"), +// m_k053246(*this, "k053246"), + m_k054539(*this, "k054539"), + m_spriteram(*this,"spriteram") + { } + + required_device m_maincpu; + + required_device m_k053250; + required_device m_k053252; + required_device m_k056832; + required_device m_k055673; + required_device m_k055555; + required_device m_k054539; +// required_device m_k053246; + + optional_shared_ptr m_spriteram; + + int m_layer_colorbase[6]; + int m_sprite_colorbase; + int m_lvc_colorbase; + + uint8_t m_int_enable; + uint8_t m_int_status; + uint8_t m_sound_ctrl; + uint8_t m_sound_nmi_clk; + uint16_t m_control; + + void update_interrupts(); + + DECLARE_READ16_MEMBER(K056832_rom_r); + DECLARE_WRITE16_MEMBER(control1_w); + DECLARE_WRITE16_MEMBER(control2_w); + DECLARE_WRITE16_MEMBER(control3_w); + DECLARE_WRITE16_MEMBER(irq_ack_w); + DECLARE_READ16_MEMBER(k053247_scattered_word_r); + DECLARE_WRITE16_MEMBER(k053247_scattered_word_w); + DECLARE_READ16_MEMBER(k053247_martchmp_word_r); + DECLARE_WRITE16_MEMBER(k053247_martchmp_word_w); + DECLARE_CUSTOM_INPUT_MEMBER(helm_r); + DECLARE_CUSTOM_INPUT_MEMBER(battery_r); + + DECLARE_MACHINE_START(piratesh); + DECLARE_MACHINE_RESET(piratesh); + DECLARE_VIDEO_START(piratesh); + uint32_t screen_update_piratesh(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + DECLARE_WRITE_LINE_MEMBER(k054539_nmi_gen); + TIMER_DEVICE_CALLBACK_MEMBER(piratesh_interrupt); + K056832_CB_MEMBER(piratesh_tile_callback); + K055673_CB_MEMBER(piratesh_sprite_callback); +}; + + +void piratesh_state::update_interrupts() +{ + m_maincpu->set_input_line(M68K_IRQ_2, m_int_status & 2 ? ASSERT_LINE : CLEAR_LINE); // INT 1 + m_maincpu->set_input_line(M68K_IRQ_4, m_int_status & 1 ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(M68K_IRQ_5, m_int_status & 4 ? ASSERT_LINE : CLEAR_LINE); +} + +/* + Priority issues: + + 1. On title screen, stars should be behind the helm + 2. The Konami logo is a square transition + 3. + +*/ + +K056832_CB_MEMBER(piratesh_state::piratesh_tile_callback) +{ + // Layer + // Code + // Color + // Flags +// if (*color != 0) +// printf("%x %x %x\n", layer, *code, *color >> 2); + + *color = (m_layer_colorbase[layer] << 4) + ((*color >> 2));// & 0x0f); +} + +K055673_CB_MEMBER(piratesh_state::piratesh_sprite_callback) +{ + int c = *color; + + *color = (c & 0x001f); + //int pri = (c >> 5) & 7; + // .... .... ...x xxxx - Color + // .... .... xxx. .... - Priority? + // .... ..x. .... .... - ? + // ..x. .... .... .... - ? + +#if 0 + int layerpri[4]; + static const int pris[4] = { K55_PRIINP_0, K55_PRIINP_3, K55_PRIINP_6, K55_PRIINP_7 }; + + for (uint32_t i = 0; i < 4; i++) + { + layerpri[i] = m_k055555->K055555_read_register(pris[i]); + } + + // TODO: THIS IS ALL WRONG + if (pri <= layerpri[0]) + *priority_mask = 0; + else if (pri <= layerpri[1]) + *priority_mask = 0xf0; + else if (pri <= layerpri[2]) + *priority_mask = 0xf0|0xcc; + else + *priority_mask = 0xf0|0xcc|0xaa; +#endif + + *priority_mask = 0; + + // 0 - Sprites over everything + // f0 - + // f0 cc - + // f0 cc aa - + + // 1111 0000 + // 1100 1100 + // 1010 1010 +} + + + +VIDEO_START_MEMBER(piratesh_state, piratesh) +{ + // TODO: These come from the 055555 + m_layer_colorbase[0] = 0; + m_layer_colorbase[1] = 2; + m_layer_colorbase[2] = 4; + m_layer_colorbase[3] = 6; + m_sprite_colorbase = 1; + m_lvc_colorbase = 3; +#if 0 + konamigx_mixer_init(*m_screen, 0); + + m_k056832->set_layer_offs(0, -2+2-1, 0-1); + m_k056832->set_layer_offs(1, 0+2, 0); + m_k056832->set_layer_offs(2, 2+2, 0); + m_k056832->set_layer_offs(3, 3+2, 0); +#endif +} + + +uint32_t piratesh_state::screen_update_piratesh(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(0, cliprect); +#if 1 + + int layers[4], layerpri[4]; + static const int pris[4] = { K55_PRIINP_0, K55_PRIINP_3, K55_PRIINP_6, K55_PRIINP_7 }; + static const int enables[4] = { K55_INP_VRAM_A, K55_INP_VRAM_B, K55_INP_VRAM_C, K55_INP_VRAM_D }; + + for (uint32_t i = 0; i < 4; i++) + { + layers[i] = i; + layerpri[i] = m_k055555->K055555_read_register(pris[i]); + } + + konami_sortlayers4(layers, layerpri); + + screen.priority().fill(0, cliprect); + + const uint32_t input_enables = m_k055555->K055555_read_register(K55_INPUT_ENABLES); + + // TODO: FIX COLORBASES + if (input_enables & K55_INP_SUB3) + m_k053250->draw(bitmap, cliprect, 0x20, 0, screen.priority(), 2); + for (uint32_t i = 0; i < 4; i++) + { + if (input_enables & enables[layers[i]]) + { + m_k056832->tilemap_draw(screen, bitmap, cliprect, layers[i], 0, 1 << i); + } + } + + if (input_enables & K55_INP_SUB2) + m_k055673->k053247_sprites_draw(bitmap, cliprect); + +#if 0 +#define K55_INP_VRAM_A 0x01 +#define K55_INP_VRAM_B 0x02 +#define K55_INP_VRAM_C 0x04 +#define K55_INP_VRAM_D 0x08 +#define K55_INP_OBJ 0x10 +#define K55_INP_SUB1 0x20 +#define K55_INP_SUB2 0x40 +#define K55_INP_SUB3 0x80 +#endif + + //055555: 4 to reg 7 (A PRI 0) + //055555: 0 to reg 8 (A PRI 1) + //055555: 0 to reg 9 (A COLPRI) + //055555: 6 to reg a (B PRI 0) + //055555: 0 to reg b (B PRI 1) + //055555: 0 to reg c (B COLPRI) + //055555: 16 to reg d (C PRI) + //055555: 18 to reg e (D PRI) + //055555: 0 to reg 11 (SUB2 PRI) + //055555: 0 to reg 12 (SUB3 PRI) + + //055555: 0 to reg 17 (A PAL) + //055555: 2 to reg 18 (B PAL) + //055555: 4 to reg 19 (C PAL) + //055555: 6 to reg 1a (D PAL) + //055555: 3 to reg 1d (SUB2 PAL) + //055555: 1 to reg 1e (SUB3 PAL) + + +#else + // LAYER, FLAGS, PRIORITY + m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, K056832_DRAW_FLAG_MIRROR, 1); + + m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, K056832_DRAW_FLAG_MIRROR, 2); + + // TODO: Fix priority + m_k053250->draw(bitmap, cliprect, 0x20, 0, screen.priority(), 8); + + m_k055673->k053247_sprites_draw(bitmap, cliprect); + + m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, K056832_DRAW_FLAG_MIRROR, 4); + m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, K056832_DRAW_FLAG_MIRROR, 0); +#endif + return 0; +} + + + + +/**********************************************************************************/ +/* IRQ controllers */ + +TIMER_DEVICE_CALLBACK_MEMBER(piratesh_state::piratesh_interrupt) +{ + int scanline = param; + + // IRQ2 - CCUINT1 (VBL START) + // IRQ4 - Sound + // IRQ5 - CCUINT2 (VBL END) + + if (scanline == 240) + { + m_k053250->vblank_w(1); + + if (m_int_enable & 2) + { + m_int_status |= 2; + update_interrupts(); + } + } + + if (scanline == 0) + { + m_k053250->vblank_w(0); + + if (m_int_enable & 4) + { + m_int_status |= 4; + update_interrupts(); + } + } +} + + + +READ16_MEMBER(piratesh_state::K056832_rom_r) +{ + uint16_t offs; + + offs = (m_control & 2 ? 0x1000 : 0) + offset; + return m_k056832->piratesh_rom_r(space, offs, mem_mask); +} + + + +WRITE16_MEMBER(piratesh_state::control1_w) +{ + // .... ..xx .... .... - Unknown + // .... .x.. .... .... - Unknown - Active during attract, clear during game + // .... x... .... .... - Lamp? (active when waiting to start game) + + if (data & ~0x0f00) + printf("CTRL3: %x %x %x\n", offset, data, mem_mask); +} + +WRITE16_MEMBER(piratesh_state::control2_w) +{ + // .... .... ...x .... - Unknown (always 1?) + // .... .... ..x. .... - Unknown + // .... .... .x.. .... - Counter out + // .... .... x... .... - Counter in + // .... ...x .... .... - 053246A OBJCRBK (Pin 9) + // .... ..x. .... .... - LV related + // .... x... .... .... - INT4/SND control (0=clear 1=enable) + // ...x .... .... .... - INT2/CCUINT1 control (0=clear 1=enable) + // ..x. .... .... .... - INT5/CCUINT2 control (0=clear 1=enable) + // .x.. .... .... .... - Unknown + // x... .... .... .... - Unknown + + m_int_enable = (data >> 11) & 7; + m_int_status &= m_int_enable; + update_interrupts(); + + if (data & ~0xfbf0) + printf("CTRL2: %x %x %x\n", offset, data, mem_mask); +} + +WRITE16_MEMBER(piratesh_state::control3_w) +{ + // .... .... .... ...x - Watchdog? (051550?) + // .... .... .... ..x. - 056832 ROM bank control + // .... .... ...x .... - Ticket dispenser enable (active high) + // .... .... ..x. .... - Hopper enable (active high) + // .... ...x .... .... - Unknown (always 1?) + + if ((data & ~0x0133) || (~data & 0x100)) + printf("CTRL1 W: %x %x %x\n", offset, data, mem_mask); + +// printf("CTRL 1: %x\n", data & 0x0010); + machine().device("ticket")->motor_w(data & 0x0010 ? 1 : 0); + machine().device("hopper")->motor_w(data & 0x0020 ? 1 : 0); + + m_control = data; +} + + +static ADDRESS_MAP_START( piratesh_map, AS_PROGRAM, 16, piratesh_state ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM + AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("nvram") + AM_RANGE(0x084000, 0x087fff) AM_RAM + AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CRTC + AM_RANGE(0x180000, 0x18003f) AM_DEVWRITE("k056832", k056832_device, word_w) // TILEMAP + AM_RANGE(0x280000, 0x280007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES + AM_RANGE(0x290000, 0x29000f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES + AM_RANGE(0x290010, 0x29001f) AM_DEVWRITE("k055673", k055673_device, k055673_reg_word_w) // SPRITES + AM_RANGE(0x2a0000, 0x2a0fff) AM_DEVREADWRITE("k055673", k055673_device, k053247_word_r, k053247_word_w) // SPRITES + AM_RANGE(0x2a1000, 0x2a3fff) AM_WRITENOP + AM_RANGE(0x2b0000, 0x2b000f) AM_DEVREADWRITE("k053250", k053250ps_device, reg_r, reg_w) // LVC + AM_RANGE(0x300000, 0x3000ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) + AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") + AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") + AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW1") + AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW2") + AM_RANGE(0x400008, 0x400009) AM_READ_PORT("SPECIAL") + AM_RANGE(0x40000c, 0x40000d) AM_WRITE(control1_w) + AM_RANGE(0x400010, 0x400011) AM_WRITE(control2_w) + AM_RANGE(0x400014, 0x400015) AM_WRITE(control3_w) + AM_RANGE(0x500000, 0x50ffff) AM_READ(K056832_rom_r) // VRAM ROM + AM_RANGE(0x580000, 0x581fff) AM_DEVREAD("k053250", k053250ps_device, rom_r) // LVC ROM access + AM_RANGE(0x600000, 0x6004ff) AM_DEVREADWRITE8("k054539", k054539_device, read, write, 0xff00) // SOUND + AM_RANGE(0x680000, 0x681fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // TILEMAP + AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("k053250", k053250ps_device, ram_r, ram_w) // LVC +ADDRESS_MAP_END + + +WRITE_LINE_MEMBER(piratesh_state::k054539_nmi_gen) +{ + static int m_sound_intck = 0; // TODO: KILL ME + + // Trigger an interrupt on the rising edge + if (!m_sound_intck && state) + { + if (m_int_enable & 1) + { + m_int_status |= 1; + update_interrupts(); + } + } + + m_sound_intck = state; +} + +CUSTOM_INPUT_MEMBER(piratesh_state::helm_r) +{ + // Appears to be a quadrature encoder + uint8_t xa, xb; + uint16_t dx = ioport("HELM")->read(); + + xa = ((dx + 1) & 7) <= 3; + xb = (dx & 7) <= 3; + + return (xb << 1) | xa; +} + +CUSTOM_INPUT_MEMBER(piratesh_state::battery_r) +{ + // .x MB3790 /ALARM1 + // x. MB3790 /ALARM2 + + return 0x3; +} + +/**********************************************************************************/ + +static INPUT_PORTS_START( piratesh ) + PORT_START("IN0") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) // 7f60 btst $7,$40000 + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) // HELM? + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) // HELM? + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Reset") + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_START ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F2) + + PORT_START("SPECIAL") + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("k053250", k053250ps_device, dmairq_r) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // FIXME: NCPU from 053246 (DMA) + PORT_BIT( 0x0c00, IP_ACTIVE_HIGH, IPT_SPECIAL )PORT_CUSTOM_MEMBER(DEVICE_SELF, piratesh_state, battery_r, nullptr) + + PORT_START("HELM") + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(1) + + PORT_START("IN1") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service") + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, line_r) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) + PORT_BIT( 0x1800, IP_ACTIVE_HIGH, IPT_SPECIAL )PORT_CUSTOM_MEMBER(DEVICE_SELF, piratesh_state, helm_r, nullptr) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("DSW1") // TODO: DIP switches are used for settings when battery failure has occurred + PORT_DIPNAME( 0x0100, 0x0100, "DSW1:0" ) PORT_DIPLOCATION("DSW1:1") + PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0200, "DSW1:1" ) PORT_DIPLOCATION("DSW1:2") + PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0400, 0x0400, "DSW1:2" ) PORT_DIPLOCATION("DSW1:3") + PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0800, 0x0800, "DSW1:3" ) PORT_DIPLOCATION("DSW1:4") + PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x3000, 0x1000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSW1:5,6") + PORT_DIPSETTING( 0x0000, "A" ) + PORT_DIPSETTING( 0x1000, "B" ) + PORT_DIPSETTING( 0x2000, "C" ) + PORT_DIPSETTING( 0x3000, "D" ) + PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW1:7") + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("DSW1:8") + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_START("DSW2") // TODO: Finish me + PORT_DIPNAME( 0x0100, 0x0100, "DSW2:0" ) PORT_DIPLOCATION("DSW2:1") + PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0200, "DSW2:1" ) PORT_DIPLOCATION("DSW2:2") + PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0400, 0x0400, "DSW2:2" ) PORT_DIPLOCATION("DSW2:3") + PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0800, 0x0800, "DSW2:3" ) PORT_DIPLOCATION("DSW2:4") + PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1000, 0x1000, "DSW2:4" ) PORT_DIPLOCATION("DSW2:5") + PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x2000, "DSW2:5" ) PORT_DIPLOCATION("DSW2:6") + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x4000, "DSW2:6" ) PORT_DIPLOCATION("DSW2:7") + PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x8000, "Redemption Type" ) PORT_DIPLOCATION("DSW2:8") + PORT_DIPSETTING( 0x8000, "Ticket" ) + PORT_DIPSETTING( 0x0000, "Capsule" ) +INPUT_PORTS_END + +/**********************************************************************************/ + +MACHINE_START_MEMBER(piratesh_state, piratesh) +{ +#if 0 + m_sound_ctrl = 2; + m_mw_irq_control = 0; + + /* konamigx_mixer uses this, so better initialize it */ + m_gx_wrport1_0 = 0; + + save_item(NAME(m_mw_irq_control)); + save_item(NAME(m_sound_ctrl)); + save_item(NAME(m_sound_nmi_clk)); +#endif +} + +MACHINE_RESET_MEMBER(piratesh_state,piratesh) +{ + m_int_status = 0; + + int i; + + // soften chorus(chip 0 channel 0-3), boost voice(chip 0 channel 4-7) + for (i=0; i<=7; i++) + { + // m_k054539->set_gain(i, 0.5); + } + +// // soften percussions(chip 1 channel 0-7) +// for (i=0; i<=7; i++) m_k054539_2->set_gain(i, 0.5); + +} + +static MACHINE_CONFIG_START( piratesh ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) + MCFG_CPU_PROGRAM_MAP(piratesh_map) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", piratesh_state, piratesh_interrupt, "screen", 0, 1) + + MCFG_NVRAM_ADD_0FILL("nvram") + + MCFG_DEVICE_ADD("k053252", K053252, XTAL_32MHz/4) + MCFG_K053252_OFFSETS(40, 16) // TODO + + MCFG_MACHINE_START_OVERRIDE(piratesh_state, piratesh) + MCFG_MACHINE_RESET_OVERRIDE(piratesh_state, piratesh) + + MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) + MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) +// MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223) // TODO + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600)) + MCFG_SCREEN_SIZE(64*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1) + MCFG_SCREEN_UPDATE_DRIVER(piratesh_state, screen_update_piratesh) + + MCFG_PALETTE_ADD("palette", 2048) + MCFG_PALETTE_FORMAT(BGRX) + MCFG_PALETTE_ENABLE_SHADOWS() + MCFG_PALETTE_ENABLE_HILIGHTS() + + MCFG_DEVICE_ADD("k056832", K056832, 0) + MCFG_K056832_CB(piratesh_state, piratesh_tile_callback) + MCFG_K056832_CONFIG("gfx1", K056832_BPP_4PIRATESH, 1, 0, "none") + MCFG_K056832_PALETTE("palette") + + MCFG_K055555_ADD("k055555") + + MCFG_K053250PS_ADD("k053250", "palette", "screen", -16, 0) + + MCFG_DEVICE_ADD("k055673", K055673, 0) + MCFG_K055673_CB(piratesh_state, piratesh_sprite_callback) + MCFG_K055673_CONFIG("gfx2", K055673_LAYOUT_PS, -60, 24) + MCFG_K055673_PALETTE("palette") + + // ???? + //MCFG_DEVICE_ADD("k053246", K053246, 0) + //MCFG_K053246_CB(moo_state, sprite_callback) + //MCFG_K053246_CONFIG("gfx2", NORMAL_PLANE_ORDER, -48+1, 23) + //MCFG_K053246_PALETTE("palette") + + MCFG_DEVICE_ADD("k054338", K054338, 0) + MCFG_K054338_ALPHAINV(1) + MCFG_K054338_MIXER("k055555") + + MCFG_VIDEO_START_OVERRIDE(piratesh_state, piratesh) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_DEVICE_ADD("k054539", K054539, XTAL_18_432MHz) + MCFG_K054539_TIMER_HANDLER(WRITELINE(piratesh_state, k054539_nmi_gen)) + MCFG_SOUND_ROUTE(0, "lspeaker", 0.2) + MCFG_SOUND_ROUTE(1, "rspeaker", 0.2) +MACHINE_CONFIG_END + + + +ROM_START( piratesh ) + ROM_REGION( 0x80000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "360ua-c04.4p", 0x000000, 0x80000, CRC(6d69dd90) SHA1(ccbdbfea406d9cbc3f242211290ba82ccbbe3795) ) + + /* tiles */ + ROM_REGION( 0x80000, "gfx1", ROMREGION_ERASE00 ) // 27C4096 + ROM_LOAD( "360ua-a01.17g", 0x000000, 0x80000, CRC(e39153f5) SHA1(5da9132a2c24a15b55c3f65c26e2ad0467411a88) ) + + /* sprites */ + ROM_REGION( 0x80000*8, "gfx2", ROMREGION_ERASE00 ) // 27C4096 + ROM_LOAD16_BYTE( "360ua-a02.21l", 0x000000, 0x80000, CRC(82207997) SHA1(fe143285a12fab5227e883113d798acad7bf4c97) ) + ROM_LOAD16_BYTE( "360ua-a03.23l", 0x000001, 0x80000, CRC(a9e36d51) SHA1(1a8de8d8d2abfee5ac0f0822e203846f7f5f1767) ) + + /* road generator */ + ROM_REGION( 0x080000, "k053250", ROMREGION_ERASE00 ) // 27C040 + ROM_LOAD( "360ua-a05.26p", 0x000000, 0x80000, CRC(dab7f439) SHA1(2372612c0b04c77a85ccbadc100cb741b85f0481) ) + + /* sound data */ + ROM_REGION( 0x100000, "k054539", 0 ) // 27C040 + ROM_LOAD( "360ua-a06.15t", 0x000000, 0x80000, CRC(6816a493) SHA1(4fc4cfbc164d84bbf8d75ccd78c9f40f3273d852) ) + ROM_LOAD( "360ua-a07.17t", 0x080000, 0x80000, CRC(af7127c5) SHA1(b525f3c6b831e3354eba46016d414bedcb3ae8dc) ) + +// ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error +// ROM_LOAD( "piratesh.nv", 0x0000, 0x080, CRC(28df2269) SHA1(3f071c97662745a199f96964e2e79f795bd5a391) ) +ROM_END + +// year name parent machine input state init +GAME( 1995, piratesh, 0, piratesh, piratesh, piratesh_state, 0, ROT90, "Konami", "Pirate Ship (ver UAA)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/pitagjr.cpp b/src/mame/drivers/pitagjr.cpp index db7a8dc2044..25cbfe3b7cf 100644 --- a/src/mame/drivers/pitagjr.cpp +++ b/src/mame/drivers/pitagjr.cpp @@ -202,7 +202,7 @@ uint32_t pitagjr_state::screen_update(screen_device &screen, bitmap_ind16 &bitma return 0; } -static MACHINE_CONFIG_START( pitajr, pitagjr_state ) +static MACHINE_CONFIG_START( pitajr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD63705, XTAL_2MHz) // probably a m6805-based MCU with internal boot ROM MCFG_CPU_PROGRAM_MAP(pitajr_mem) @@ -231,5 +231,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 199?, pitagjr, 0, 0, pitajr, pitajr, driver_device, 0, "VTech", "Pitagorin Junior", MACHINE_IS_SKELETON) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 199?, pitagjr, 0, 0, pitajr, pitajr, pitagjr_state, 0, "VTech", "Pitagorin Junior", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/pitnrun.cpp b/src/mame/drivers/pitnrun.cpp index ca31ba1fd5d..e1474e0e22b 100644 --- a/src/mame/drivers/pitnrun.cpp +++ b/src/mame/drivers/pitnrun.cpp @@ -218,7 +218,7 @@ static GFXDECODE_START( pitnrun ) GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 4 ) GFXDECODE_END -static MACHINE_CONFIG_START( pitnrun, pitnrun_state ) +static MACHINE_CONFIG_START( pitnrun ) MCFG_CPU_ADD("maincpu", Z80,XTAL_18_432MHz/6) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(pitnrun_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", pitnrun_state, nmi_source) @@ -339,5 +339,5 @@ ROM_START( pitnruna ) ROM_LOAD( "clr.3", 0x0040, 0x0020, CRC(25e70e5e) SHA1(fdb9c69e9568a725dd0e3ac25835270fb4f49280) ) ROM_END -GAME( 1984, pitnrun, 0, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, pitnruna, pitnrun, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, pitnrun, 0, pitnrun, pitnrun, pitnrun_state, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, pitnruna, pitnrun, pitnrun, pitnrun, pitnrun_state, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pk8000.cpp b/src/mame/drivers/pk8000.cpp index c004cc43fda..64377184e73 100644 --- a/src/mame/drivers/pk8000.cpp +++ b/src/mame/drivers/pk8000.cpp @@ -355,7 +355,7 @@ uint32_t pk8000_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap return video_update(screen, bitmap, cliprect, m_ram->pointer()); } -static MACHINE_CONFIG_START( pk8000, pk8000_state ) +static MACHINE_CONFIG_START( pk8000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, 1780000) MCFG_CPU_PROGRAM_MAP(pk8000_mem) @@ -419,7 +419,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, vesta, 0, 0, pk8000, pk8000, driver_device, 0, "BP EVM", "PK8000 Vesta", 0 ) -COMP( 1987, hobby, vesta, 0, pk8000, pk8000, driver_device, 0, "BP EVM", "PK8000 Sura/Hobby", 0 ) -COMP( 1987, pk8002, vesta, 0, pk8000, pk8000, driver_device, 0, "", "PK8002 Elf", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, vesta, 0, 0, pk8000, pk8000, pk8000_state, 0, "BP EVM", "PK8000 Vesta", 0 ) +COMP( 1987, hobby, vesta, 0, pk8000, pk8000, pk8000_state, 0, "BP EVM", "PK8000 Sura/Hobby", 0 ) +COMP( 1987, pk8002, vesta, 0, pk8000, pk8000, pk8000_state, 0, "","PK8002 Elf", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pk8020.cpp b/src/mame/drivers/pk8020.cpp index b8fc7507c18..b4539581ced 100644 --- a/src/mame/drivers/pk8020.cpp +++ b/src/mame/drivers/pk8020.cpp @@ -175,7 +175,7 @@ SLOT_INTERFACE_END /* Machine driver */ -static MACHINE_CONFIG_START( pk8020, pk8020_state ) +static MACHINE_CONFIG_START( pk8020 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, XTAL_20MHz / 8) MCFG_CPU_PROGRAM_MAP(pk8020_mem) @@ -289,8 +289,8 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, korvet, 0, 0, pk8020, pk8020, driver_device, 0, "", "PK8020 Korvet", 0) -COMP( 1987, neiva, korvet, 0, pk8020, pk8020, driver_device, 0, "", "PK8020 Neiva", 0) -COMP( 1987, kontur, korvet, 0, pk8020, pk8020, driver_device, 0, "", "PK8020 Kontur", 0) -COMP( 1987, bk8t, korvet, 0, pk8020, pk8020, driver_device, 0, "", "BK-8T", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, korvet, 0, 0, pk8020, pk8020, pk8020_state, 0, "", "PK8020 Korvet", 0) +COMP( 1987, neiva, korvet, 0, pk8020, pk8020, pk8020_state, 0, "", "PK8020 Neiva", 0) +COMP( 1987, kontur, korvet, 0, pk8020, pk8020, pk8020_state, 0, "", "PK8020 Kontur", 0) +COMP( 1987, bk8t, korvet, 0, pk8020, pk8020, pk8020_state, 0, "", "BK-8T", 0) diff --git a/src/mame/drivers/pkscram.cpp b/src/mame/drivers/pkscram.cpp index a2286f6064a..596a5fc0d28 100644 --- a/src/mame/drivers/pkscram.cpp +++ b/src/mame/drivers/pkscram.cpp @@ -299,7 +299,7 @@ void pkscram_state::machine_reset() scanline_timer->adjust(m_screen->time_until_pos(interrupt_scanline), interrupt_scanline); } -static MACHINE_CONFIG_START( pkscramble, pkscram_state ) +static MACHINE_CONFIG_START( pkscramble ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000 ) MCFG_CPU_PROGRAM_MAP(pkscramble_map) @@ -344,4 +344,4 @@ ROM_START( pkscram ) ROM_END -GAME( 1993, pkscram, 0, pkscramble, pkscramble, driver_device, 0, ROT0, "Cosmo Electronics Corporation", "PK Scramble", MACHINE_SUPPORTS_SAVE) +GAME( 1993, pkscram, 0, pkscramble, pkscramble, pkscram_state, 0, ROT0, "Cosmo Electronics Corporation", "PK Scramble", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pktgaldx.cpp b/src/mame/drivers/pktgaldx.cpp index 9574d25c432..f837a93205c 100644 --- a/src/mame/drivers/pktgaldx.cpp +++ b/src/mame/drivers/pktgaldx.cpp @@ -324,7 +324,7 @@ void pktgaldx_state::machine_start() { } -static MACHINE_CONFIG_START( pktgaldx, pktgaldx_state ) +static MACHINE_CONFIG_START( pktgaldx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -375,17 +375,17 @@ static MACHINE_CONFIG_START( pktgaldx, pktgaldx_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pktgaldb, pktgaldx_state ) +static MACHINE_CONFIG_START( pktgaldb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) @@ -410,11 +410,11 @@ static MACHINE_CONFIG_START( pktgaldb, pktgaldx_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) MACHINE_CONFIG_END @@ -487,4 +487,4 @@ DRIVER_INIT_MEMBER(pktgaldx_state,pktgaldx) GAME( 1992, pktgaldx, 0, pktgaldx, pktgaldx, pktgaldx_state, pktgaldx, ROT0, "Data East Corporation", "Pocket Gal Deluxe (Euro v3.00)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, pktgaldxj, pktgaldx, pktgaldx, pktgaldx, pktgaldx_state, pktgaldx, ROT0, "Data East Corporation (Nihon System license)", "Pocket Gal Deluxe (Japan v3.00)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, pktgaldxb, pktgaldx, pktgaldb, pktgaldx, driver_device, 0, ROT0, "bootleg", "Pocket Gal Deluxe (Euro v3.00, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, pktgaldxb, pktgaldx, pktgaldb, pktgaldx, pktgaldx_state, 0, ROT0, "bootleg", "Pocket Gal Deluxe (Euro v3.00, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/plan80.cpp b/src/mame/drivers/plan80.cpp index 59dc7f07194..932cacc12dc 100644 --- a/src/mame/drivers/plan80.cpp +++ b/src/mame/drivers/plan80.cpp @@ -224,7 +224,7 @@ static GFXDECODE_START( plan80 ) GFXDECODE_END -static MACHINE_CONFIG_START( plan80, plan80_state ) +static MACHINE_CONFIG_START( plan80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, 2048000) MCFG_CPU_PROGRAM_MAP(plan80_mem) @@ -257,5 +257,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1988, plan80, 0, 0, plan80, plan80, plan80_state, plan80, "Tesla Eltos", "Plan-80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1988, plan80, 0, 0, plan80, plan80, plan80_state, plan80, "Tesla Eltos", "Plan-80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/play_1.cpp b/src/mame/drivers/play_1.cpp index a48e8b08efa..6558297548c 100644 --- a/src/mame/drivers/play_1.cpp +++ b/src/mame/drivers/play_1.cpp @@ -457,7 +457,7 @@ WRITE_LINE_MEMBER( play_1_state::clock_w ) } } -static MACHINE_CONFIG_START( play_1, play_1_state ) +static MACHINE_CONFIG_START( play_1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", CDP1802, 400000) // 2 gates, 1 cap, 1 resistor oscillating somewhere between 350 to 450 kHz MCFG_CPU_PROGRAM_MAP(play_1_map) @@ -538,8 +538,8 @@ ROM_END /* Big Town, Last Lap and Party all reportedly share the same roms with different playfield/machine artworks */ -GAME(1978, bigtown, 0, play_1, play_1, driver_device, 0, ROT0, "Playmatic", "Big Town", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, lastlap, bigtown, play_1, play_1, driver_device, 0, ROT0, "Playmatic", "Last Lap", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1979, party, bigtown, play_1, play_1, driver_device, 0, ROT0, "Playmatic", "Party", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, spcgambl, 0, play_1, spcgambl, driver_device, 0, ROT0, "Playmatic", "Space Gambler", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, chance, 0, chance, chance, driver_device, 0, ROT0, "Playmatic", "Chance", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, bigtown, 0, play_1, play_1, play_1_state, 0, ROT0, "Playmatic", "Big Town", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, lastlap, bigtown, play_1, play_1, play_1_state, 0, ROT0, "Playmatic", "Last Lap", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1979, party, bigtown, play_1, play_1, play_1_state, 0, ROT0, "Playmatic", "Party", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, spcgambl, 0, play_1, spcgambl, play_1_state, 0, ROT0, "Playmatic", "Space Gambler", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1978, chance, 0, chance, chance, play_1_state, 0, ROT0, "Playmatic", "Chance", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/play_2.cpp b/src/mame/drivers/play_2.cpp index 0f7ba393990..e89ca5063db 100644 --- a/src/mame/drivers/play_2.cpp +++ b/src/mame/drivers/play_2.cpp @@ -351,9 +351,9 @@ WRITE8_MEMBER( play_2_state::psg_w ) } // **************** Machine ***************************** -static MACHINE_CONFIG_START( play_2, play_2_state ) +static MACHINE_CONFIG_START( play_2 ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", CDP1802, 2950000) + MCFG_CPU_ADD("maincpu", CDP1802, XTAL_2_95MHz) MCFG_CPU_PROGRAM_MAP(play_2_map) MCFG_CPU_IO_MAP(play_2_io) MCFG_COSMAC_WAIT_CALLBACK(VCC) @@ -367,7 +367,7 @@ static MACHINE_CONFIG_START( play_2, play_2_state ) /* Video */ MCFG_DEFAULT_LAYOUT(layout_play_2) - MCFG_DEVICE_ADD("tpb_clock", CLOCK, 2950000 / 8) // TPB line from CPU + MCFG_DEVICE_ADD("tpb_clock", CLOCK, XTAL_2_95MHz / 8) // TPB line from CPU MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_2_state, clock_w)) MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector @@ -386,7 +386,7 @@ static MACHINE_CONFIG_START( play_2, play_2_state ) MCFG_FRAGMENT_ADD( genpin_audio ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_CDP1863_ADD("1863", 0, 2950000 / 8) + MCFG_CDP1863_ADD("1863", 0, XTAL_2_95MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END @@ -506,11 +506,11 @@ ROM_START(madrace) ROM_END -GAME(1979, antar, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Antar (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1979, antar2, antar, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Antar (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1980, evlfight, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Evil Fight", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1980, attack, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Attack", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1980, blkfever, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Black Fever", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1982, cerberup, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Cerberus (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1985, madrace, 0, play_2, play_2, driver_device, 0, ROT0, "Playmatic", "Mad Race", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1980, zira, 0, zira, play_2, play_2_state, zira, ROT0, "Playmatic", "Zira", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1979, antar, 0, play_2, play_2, play_2_state, 0, ROT0, "Playmatic", "Antar (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1979, antar2, antar, play_2, play_2, play_2_state, 0, ROT0, "Playmatic", "Antar (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1980, evlfight, 0, play_2, play_2, play_2_state, 0, ROT0, "Playmatic", "Evil Fight", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1980, attack, 0, play_2, play_2, play_2_state, 0, ROT0, "Playmatic", "Attack", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1980, blkfever, 0, play_2, play_2, play_2_state, 0, ROT0, "Playmatic", "Black Fever", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1982, cerberup, 0, play_2, play_2, play_2_state, 0, ROT0, "Playmatic", "Cerberus (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1985, madrace, 0, play_2, play_2, play_2_state, 0, ROT0, "Playmatic", "Mad Race", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1980, zira, 0, zira, play_2, play_2_state, zira, ROT0, "Playmatic", "Zira", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/play_3.cpp b/src/mame/drivers/play_3.cpp index af22906fa49..d455e2b9700 100644 --- a/src/mame/drivers/play_3.cpp +++ b/src/mame/drivers/play_3.cpp @@ -455,7 +455,7 @@ WRITE_LINE_MEMBER( play_3_state::q4013a_w ) m_clockcnt = 0; } -static MACHINE_CONFIG_START( play_3, play_3_state ) +static MACHINE_CONFIG_START( play_3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", CDP1802, XTAL_3_579545MHz) MCFG_CPU_PROGRAM_MAP(play_3_map) @@ -505,7 +505,11 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( megaaton, play_3 ) MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_CLOCK(XTAL_2_95MHz) MCFG_CPU_IO_MAP(megaaton_io) + + MCFG_DEVICE_MODIFY("tpb_clock") + MCFG_DEVICE_CLOCK(XTAL_2_95MHz / 8) // TPB line from CPU MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( sklflite, play_3 ) @@ -769,27 +773,27 @@ ROM_START(comeback) ROM_END #endif -GAME(1982, spain82, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "Spain '82", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1983, megaaton, 0, megaaton, megaaton, driver_device, 0, ROT0, "Playmatic", "Meg-Aaton", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1983, megaatona, megaaton, megaaton, megaaton, driver_device, 0, ROT0, "Playmatic", "Meg-Aaton (alternate set)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1984, nautilus, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "Nautilus", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1984, theraid, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "The Raid", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1984, ufo_x, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "UFO-X", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1984, kz26, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "KZ-26", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1985, rock2500, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "Rock 2500", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1985, starfirp, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "Star Fire", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1985, starfirpa, starfirp, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "Star Fire (alternate set)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1985, trailer, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "Trailer", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1986, fldragon, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "Flash Dragon", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1986, fldragona, fldragon, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "Flash Dragon (alternate set)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1987, phntmshp, 0, sklflite, play_3, driver_device, 0, ROT0, "Playmatic", "Phantom Ship", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1987, sklflite, 0, sklflite, play_3, driver_device, 0, ROT0, "Playmatic", "Skill Flight (Playmatic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1982, spain82, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "Spain '82", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1983, megaaton, 0, megaaton, megaaton, play_3_state, 0, ROT0, "Playmatic", "Meg-Aaton", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1983, megaatona, megaaton, megaaton, megaaton, play_3_state, 0, ROT0, "Playmatic", "Meg-Aaton (alternate set)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1984, nautilus, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "Nautilus", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1984, theraid, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "The Raid", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1984, ufo_x, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "UFO-X", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1984, kz26, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "KZ-26", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1985, rock2500, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "Rock 2500", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1985, starfirp, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "Star Fire", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1985, starfirpa, starfirp, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "Star Fire (alternate set)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1985, trailer, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "Trailer", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1986, fldragon, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "Flash Dragon", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1986, fldragona, fldragon, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "Flash Dragon (alternate set)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1987, phntmshp, 0, sklflite, play_3, play_3_state, 0, ROT0, "Playmatic", "Phantom Ship", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1987, sklflite, 0, sklflite, play_3, play_3_state, 0, ROT0, "Playmatic", "Skill Flight (Playmatic)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) // not by Playmatic, but same hardware -GAME(1986, ridersrf, 0, play_3, play_3, driver_device, 0, ROT0, "JocMatic", "Rider's Surf", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) -GAME(1987, ironball, 0, play_3, play_3, driver_device, 0, ROT0, "Stargame", "Iron Balls", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1986, ridersrf, 0, play_3, play_3, play_3_state, 0, ROT0, "JocMatic", "Rider's Surf", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +GAME(1987, ironball, 0, play_3, play_3, play_3_state, 0, ROT0, "Stargame", "Iron Balls", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) // "Z-Pinball" hardware, Z80 main and sound CPUs - to be split (?) -GAME(1986, eballchps, eballchp, sklflite, play_3, driver_device, 0, ROT0, "Bally (Maibesa license)", "Eight Ball Champ (Spain, Z-Pinball hardware)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, cobrapb, 0, sklflite, play_3, driver_device, 0, ROT0, "Playbar", "Cobra (Playbar)", MACHINE_IS_SKELETON_MECHANICAL) -//GAME(198?, comeback, 0, sklflite, play_3, driver_device, 0, ROT0, "Nondum", "Come Back", MACHINE_IS_SKELETON_MECHANICAL) // undumped +GAME(1986, eballchps, eballchp, sklflite, play_3, play_3_state, 0, ROT0, "Bally (Maibesa license)", "Eight Ball Champ (Spain, Z-Pinball hardware)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, cobrapb, 0, sklflite, play_3, play_3_state, 0, ROT0, "Playbar", "Cobra (Playbar)", MACHINE_IS_SKELETON_MECHANICAL) +//GAME(198?, comeback, 0, sklflite, play_3, play_3_state, 0, ROT0, "Nondum", "Come Back", MACHINE_IS_SKELETON_MECHANICAL) // undumped // bingo hardware, to be split (?) -GAME(1983, msdisco, 0, play_3, play_3, driver_device, 0, ROT0, "Playmatic", "Miss Disco (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, msdisco, 0, play_3, play_3, play_3_state, 0, ROT0, "Playmatic", "Miss Disco (Bingo)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/playch10.cpp b/src/mame/drivers/playch10.cpp index f3a5a5f8722..d95cb1697e5 100644 --- a/src/mame/drivers/playch10.cpp +++ b/src/mame/drivers/playch10.cpp @@ -303,8 +303,6 @@ Notes & Todo: #include "screen.h" #include "speaker.h" -/* clock frequency */ -#define N2A03_DEFAULTCLOCK (21477272.724 / 12) /******************************************************************************/ @@ -647,14 +645,14 @@ INTERRUPT_GEN_MEMBER(playch10_state::playch10_interrupt){ device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( playch10, playch10_state ) +static MACHINE_CONFIG_START( playch10 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, 8000000/2) // 4 MHz MCFG_CPU_PROGRAM_MAP(bios_map) MCFG_CPU_IO_MAP(bios_io_map) MCFG_CPU_VBLANK_INT_DRIVER("top", playch10_state, playch10_interrupt) - MCFG_CPU_ADD("cart", N2A03, N2A03_DEFAULTCLOCK) + MCFG_CPU_ADD("cart", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(cart_map) @@ -1692,7 +1690,7 @@ DRIVER_INIT_MEMBER(playch10_state,ttoon) DRIVER_INIT_CALL(pcgboard); } -/* YEAR NAME PARENT BIOS MACHINE INPUT INIT MONITOR */ +/* YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR */ /* Standard Games */ GAME( 1983, pc_tenis, playch10, playch10, playch10, playch10_state, playch10, ROT0, "Nintendo", "Tennis (PlayChoice-10)", 0 ) diff --git a/src/mame/drivers/playmark.cpp b/src/mame/drivers/playmark.cpp index 6ec5e882504..fd0d4c4e7a5 100644 --- a/src/mame/drivers/playmark.cpp +++ b/src/mame/drivers/playmark.cpp @@ -1209,7 +1209,7 @@ MACHINE_RESET_MEMBER(playmark_state,playmark) m_dispenser_latch = 0; } -static MACHINE_CONFIG_START( bigtwin, playmark_state ) +static MACHINE_CONFIG_START( bigtwin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */ @@ -1244,12 +1244,12 @@ static MACHINE_CONFIG_START( bigtwin, playmark_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bigtwinb, playmark_state ) +static MACHINE_CONFIG_START( bigtwinb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -1284,12 +1284,12 @@ static MACHINE_CONFIG_START( bigtwinb, playmark_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wbeachvl, playmark_state ) +static MACHINE_CONFIG_START( wbeachvl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */ @@ -1328,12 +1328,12 @@ static MACHINE_CONFIG_START( wbeachvl, playmark_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( excelsr, playmark_state ) +static MACHINE_CONFIG_START( excelsr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -1368,12 +1368,12 @@ static MACHINE_CONFIG_START( excelsr, playmark_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_1MHz, OKIM6295_PIN7_HIGH) /* 1MHz resonator */ + MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* 1MHz resonator */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hrdtimes, playmark_state ) +static MACHINE_CONFIG_START( hrdtimes ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* verified on pcb */ @@ -1409,12 +1409,12 @@ static MACHINE_CONFIG_START( hrdtimes, playmark_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_1MHz, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hotmind, playmark_state ) +static MACHINE_CONFIG_START( hotmind ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* verified on pcb */ @@ -1455,12 +1455,12 @@ static MACHINE_CONFIG_START( hotmind, playmark_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_1MHz, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( luckboomh, playmark_state ) +static MACHINE_CONFIG_START( luckboomh ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* verified on pcb */ @@ -1500,7 +1500,7 @@ static MACHINE_CONFIG_START( luckboomh, playmark_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_1MHz, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END @@ -1985,12 +1985,12 @@ DRIVER_INIT_MEMBER(playmark_state,pic_decode) GAME( 1995, bigtwin, 0, bigtwin, bigtwin, playmark_state, pic_decode, ROT0, "Playmark", "Big Twin", MACHINE_SUPPORTS_SAVE ) GAME( 1995, bigtwinb, bigtwin, bigtwinb, bigtwinb, playmark_state, pic_decode, ROT0, "Playmark", "Big Twin (No Girls Conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, wbeachvl, 0, wbeachvl, wbeachvl, driver_device, 0, ROT0, "Playmark", "World Beach Volley (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, wbeachvl2, wbeachvl, wbeachvl, wbeachvl, driver_device, 0, ROT0, "Playmark", "World Beach Volley (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1995, wbeachvl3, wbeachvl, wbeachvl, wbeachvl, driver_device, 0, ROT0, "Playmark", "World Beach Volley (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, wbeachvl, 0, wbeachvl, wbeachvl, playmark_state, 0, ROT0, "Playmark", "World Beach Volley (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, wbeachvl2, wbeachvl, wbeachvl, wbeachvl, playmark_state, 0, ROT0, "Playmark", "World Beach Volley (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, wbeachvl3, wbeachvl, wbeachvl, wbeachvl, playmark_state, 0, ROT0, "Playmark", "World Beach Volley (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1996, excelsr, 0, excelsr, excelsr, playmark_state, pic_decode, ROT0, "Playmark", "Excelsior (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, excelsra, excelsr, excelsr, excelsr, playmark_state, pic_decode, ROT0, "Playmark", "Excelsior (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, hrdtimes, 0, hrdtimes, hrdtimes, driver_device, 0, ROT0, "Playmark", "Hard Times (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1994, hrdtimesa, hrdtimes, hrdtimes, hrdtimes, driver_device, 0, ROT0, "Playmark", "Hard Times (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, hrdtimes, 0, hrdtimes, hrdtimes, playmark_state, 0, ROT0, "Playmark", "Hard Times (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, hrdtimesa, hrdtimes, hrdtimes, hrdtimes, playmark_state, 0, ROT0, "Playmark", "Hard Times (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1995, hotmind, 0, hotmind, hotmind, playmark_state, pic_decode, ROT0, "Playmark", "Hot Mind (Hard Times hardware)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, luckboomh, luckboom, luckboomh, luckboomh, playmark_state, pic_decode, ROT0, "Playmark", "Lucky Boom (Hard Times hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/plus4.cpp b/src/mame/drivers/plus4.cpp index 38dd420dfd3..229139ef426 100644 --- a/src/mame/drivers/plus4.cpp +++ b/src/mame/drivers/plus4.cpp @@ -16,7 +16,9 @@ #include "softlist.h" #include "speaker.h" #include "bus/cbmiec/cbmiec.h" +#include "bus/pet/c2n.h" #include "bus/pet/cass.h" +#include "bus/pet/diag264_lb_tape.h" #include "bus/plus4/exp.h" #include "bus/plus4/user.h" #include "bus/vcs_ctrl/ctrl.h" @@ -882,7 +884,7 @@ void plus4_state::machine_reset() // MACHINE_CONFIG( plus4 ) //------------------------------------------------- -static MACHINE_CONFIG_START( plus4, plus4_state ) +static MACHINE_CONFIG_START( plus4 ) // basic machine hardware MCFG_CPU_ADD(MOS7501_TAG, M7501, 0) MCFG_CPU_PROGRAM_MAP(plus4_mem) @@ -966,7 +968,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( plus4p ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( plus4p, plus4, c16_state ) +static MACHINE_CONFIG_DERIVED( plus4p, plus4 ) MCFG_DEVICE_MODIFY(MOS7501_TAG) MCFG_DEVICE_CLOCK(XTAL_17_73447MHz/20) @@ -987,7 +989,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( plus4n ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( plus4n, plus4, c16_state ) +static MACHINE_CONFIG_DERIVED( plus4n, plus4 ) MCFG_DEVICE_MODIFY(MOS7501_TAG) MCFG_DEVICE_CLOCK(XTAL_14_31818MHz/16) @@ -1008,7 +1010,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( c16n ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( c16n, plus4n, c16_state ) +static MACHINE_CONFIG_DERIVED( c16n, plus4n ) MCFG_CPU_MODIFY(MOS7501_TAG) MCFG_M7501_PORT_CALLBACKS(READ8(c16_state, cpu_r), WRITE8(plus4_state, cpu_w)) MCFG_M7501_PORT_PULLS(0x00, 0xc0) @@ -1030,7 +1032,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( c16p ) //------------------------------------------------- -static MACHINE_CONFIG_DERIVED_CLASS( c16p, plus4p, c16_state ) +static MACHINE_CONFIG_DERIVED( c16p, plus4p ) MCFG_CPU_MODIFY(MOS7501_TAG) MCFG_M7501_PORT_CALLBACKS(READ8(c16_state, cpu_r), WRITE8(plus4_state, cpu_w)) MCFG_M7501_PORT_PULLS(0x00, 0xc0) @@ -1267,13 +1269,13 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1984, c264, 0, 0, plus4n, plus4, driver_device, 0, "Commodore Business Machines", "Commodore 264 (Prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -COMP( 1984, c232, c264, 0, c232, plus4, driver_device, 0, "Commodore Business Machines", "Commodore 232 (Prototype)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, v364, c264, 0, v364, plus4, driver_device, 0, "Commodore Business Machines", "Commodore V364 (Prototype)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, plus4, c264, 0, plus4n, plus4, driver_device, 0, "Commodore Business Machines", "Plus/4 (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, plus4p, c264, 0, plus4p, plus4, driver_device, 0, "Commodore Business Machines", "Plus/4 (PAL)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, c16, c264, 0, c16n, c16, driver_device, 0, "Commodore Business Machines", "Commodore 16 (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, c16p, c264, 0, c16p, c16, driver_device, 0, "Commodore Business Machines", "Commodore 16 (PAL)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, c16_hu, c264, 0, c16p, c16, driver_device, 0, "Commodore Business Machines", "Commodore 16 (Hungary)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, c116, c264, 0, c16p, c16, driver_device, 0, "Commodore Business Machines", "Commodore 116", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, c264, 0, 0, plus4n, plus4, c16_state, 0, "Commodore Business Machines", "Commodore 264 (Prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +COMP( 1984, c232, c264, 0, c232, plus4, c16_state, 0, "Commodore Business Machines", "Commodore 232 (Prototype)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, v364, c264, 0, v364, plus4, c16_state, 0, "Commodore Business Machines", "Commodore V364 (Prototype)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, plus4, c264, 0, plus4n, plus4, c16_state, 0, "Commodore Business Machines", "Plus/4 (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, plus4p, c264, 0, plus4p, plus4, c16_state, 0, "Commodore Business Machines", "Plus/4 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, c16, c264, 0, c16n, c16, c16_state, 0, "Commodore Business Machines", "Commodore 16 (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, c16p, c264, 0, c16p, c16, c16_state, 0, "Commodore Business Machines", "Commodore 16 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, c16_hu, c264, 0, c16p, c16, c16_state, 0, "Commodore Business Machines", "Commodore 16 (Hungary)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, c116, c264, 0, c16p, c16, c16_state, 0, "Commodore Business Machines", "Commodore 116", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pluto5.cpp b/src/mame/drivers/pluto5.cpp index f6e5fce2e01..80c86242567 100644 --- a/src/mame/drivers/pluto5.cpp +++ b/src/mame/drivers/pluto5.cpp @@ -198,7 +198,7 @@ public: protected: // devices - required_device m_maincpu; + required_device m_maincpu; public: DECLARE_DRIVER_INIT(hb); virtual void machine_start() override; @@ -251,7 +251,7 @@ void pluto5_state::machine_start() } -static MACHINE_CONFIG_START( pluto5, pluto5_state ) +static MACHINE_CONFIG_START( pluto5 ) MCFG_CPU_ADD("maincpu", M68340, 16000000) MCFG_CPU_PROGRAM_MAP(pluto5_map) diff --git a/src/mame/drivers/plygonet.cpp b/src/mame/drivers/plygonet.cpp index d72732cdf2b..871baafe51a 100644 --- a/src/mame/drivers/plygonet.cpp +++ b/src/mame/drivers/plygonet.cpp @@ -319,7 +319,7 @@ READ16_MEMBER(polygonet_state::dsp56k_bootload_r) static uint8_t dsp56k_bank_group(device_t* cpu) { - uint16_t portC = ((dsp56k_device *)cpu)->get_peripheral_memory(0xffe3); + uint16_t portC = downcast(cpu)->get_peripheral_memory(0xffe3); /* If bank group B is on, it overrides bank group A */ if (portC & 0x0002) @@ -332,7 +332,7 @@ static uint8_t dsp56k_bank_group(device_t* cpu) static uint8_t dsp56k_bank_num(device_t* cpu, uint8_t bank_group) { - uint16_t portC = ((dsp56k_device *)cpu)->get_peripheral_memory(0xffe3); + uint16_t portC = downcast(cpu)->get_peripheral_memory(0xffe3); if (bank_group == BANK_GROUP_A) { @@ -603,7 +603,7 @@ WRITE_LINE_MEMBER(polygonet_state::k054539_nmi_gen) m_sound_intck = state; } -static MACHINE_CONFIG_START( plygonet, polygonet_state ) +static MACHINE_CONFIG_START( plygonet ) MCFG_CPU_ADD("maincpu", M68EC020, XTAL_32MHz/2) MCFG_CPU_PROGRAM_MAP(main_map) @@ -778,6 +778,6 @@ ROM_START( polynetw ) ROM_LOAD( "polynetw.nv", 0x0000, 0x0080, CRC(8f39d644) SHA1(8733e1a288ba20c4b04b3aedde52801d05cebdf9) ) ROM_END -/* ROM parent machine inp init */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT GAME( 1993, plygonet, 0, plygonet, polygonet, polygonet_state, polygonet, ROT90, "Konami", "Polygonet Commanders (ver UAA)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, polynetw, 0, plygonet, polynetw, polygonet_state, polygonet, ROT90, "Konami", "Poly-Net Warriors (ver JAA)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, polynetw, 0, plygonet, polynetw, polygonet_state, polygonet, ROT90, "Konami", "Poly-Net Warriors (ver JAA)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pm68k.cpp b/src/mame/drivers/pm68k.cpp index cd4085ba6c3..fb1c6721970 100644 --- a/src/mame/drivers/pm68k.cpp +++ b/src/mame/drivers/pm68k.cpp @@ -27,7 +27,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ16_MEMBER(keyin_r); DECLARE_READ16_MEMBER(status_r); private: @@ -73,19 +73,19 @@ void pm68k_state::machine_reset() m_maincpu->reset(); } -WRITE8_MEMBER( pm68k_state::kbd_put ) +void pm68k_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( pm68k, pm68k_state ) +static MACHINE_CONFIG_START( pm68k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) MCFG_CPU_PROGRAM_MAP(pm68k_mem) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pm68k_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(pm68k_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -100,5 +100,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, pm68k, 0, 0, pm68k, pm68k, driver_device, 0, "Callan Data Systems", "PM68K", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 198?, pm68k, 0, 0, pm68k, pm68k, pm68k_state, 0, "Callan Data Systems", "PM68K", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/pmd85.cpp b/src/mame/drivers/pmd85.cpp index af3ca41d182..cf1ffbbbf89 100644 --- a/src/mame/drivers/pmd85.cpp +++ b/src/mame/drivers/pmd85.cpp @@ -572,7 +572,7 @@ static const struct CassetteOptions pmd85_cassette_options = }; /* machine definition */ -static MACHINE_CONFIG_START( pmd85, pmd85_state ) +static MACHINE_CONFIG_START( pmd85 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 2000000) /* 2.048MHz ??? */ MCFG_CPU_PROGRAM_MAP(pmd85_mem) @@ -807,13 +807,13 @@ ROM_START(c2717pmd) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1985, pmd851, 0, 0, pmd851, pmd85, pmd85_state, pmd851, "Tesla", "PMD-85.1" , 0) -COMP( 1985, pmd852, pmd851, 0, pmd851, pmd85, pmd85_state, pmd851, "Tesla", "PMD-85.2" , 0) -COMP( 1985, pmd852a, pmd851, 0, pmd852a, pmd85, pmd85_state, pmd852a, "Tesla", "PMD-85.2A" , 0) -COMP( 1985, pmd852b, pmd851, 0, pmd852a, pmd85, pmd85_state, pmd852a, "Tesla", "PMD-85.2B" , 0) -COMP( 1988, pmd853, pmd851, 0, pmd853, pmd85, pmd85_state, pmd853, "Tesla", "PMD-85.3" , 0) -COMP( 1986, alfa, pmd851, 0, alfa, alfa, pmd85_state, alfa, "Didaktik Skalica", "Didaktik Alfa" , 0) -COMP( 1985, mato, pmd851, 0, mato, mato, pmd85_state, mato, "Statny", "Mato" , 0) -COMP( 1989, c2717, pmd851, 0, c2717, pmd85, pmd85_state, c2717, "Zbrojovka Brno", "Consul 2717" , 0) -COMP( 1989, c2717pmd,pmd851, 0, c2717, pmd85, pmd85_state, c2717, "Zbrojovka Brno", "Consul 2717 (with PMD-32)" , MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, pmd851, 0, 0, pmd851, pmd85, pmd85_state, pmd851, "Tesla", "PMD-85.1", 0 ) +COMP( 1985, pmd852, pmd851, 0, pmd851, pmd85, pmd85_state, pmd851, "Tesla", "PMD-85.2", 0 ) +COMP( 1985, pmd852a, pmd851, 0, pmd852a, pmd85, pmd85_state, pmd852a, "Tesla", "PMD-85.2A", 0 ) +COMP( 1985, pmd852b, pmd851, 0, pmd852a, pmd85, pmd85_state, pmd852a, "Tesla", "PMD-85.2B", 0 ) +COMP( 1988, pmd853, pmd851, 0, pmd853, pmd85, pmd85_state, pmd853, "Tesla", "PMD-85.3", 0 ) +COMP( 1986, alfa, pmd851, 0, alfa, alfa, pmd85_state, alfa, "Didaktik Skalica", "Didaktik Alfa", 0 ) +COMP( 1985, mato, pmd851, 0, mato, mato, pmd85_state, mato, "Statny", "Mato", 0 ) +COMP( 1989, c2717, pmd851, 0, c2717, pmd85, pmd85_state, c2717, "Zbrojovka Brno", "Consul 2717", 0 ) +COMP( 1989, c2717pmd,pmd851, 0, c2717, pmd85, pmd85_state, c2717, "Zbrojovka Brno", "Consul 2717 (with PMD-32)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pmi80.cpp b/src/mame/drivers/pmi80.cpp index c1a0e82d503..0816086760c 100644 --- a/src/mame/drivers/pmi80.cpp +++ b/src/mame/drivers/pmi80.cpp @@ -152,7 +152,7 @@ void pmi80_state::machine_reset() } -static MACHINE_CONFIG_START( pmi80, pmi80_state ) +static MACHINE_CONFIG_START( pmi80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(pmi80_mem) @@ -171,5 +171,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, pmi80, 0, 0, pmi80, pmi80, driver_device, 0, "Tesla", "PMI-80", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, pmi80, 0, 0, pmi80, pmi80, pmi80_state, 0, "Tesla", "PMI-80", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/pntnpuzl.cpp b/src/mame/drivers/pntnpuzl.cpp index 5b5dcba359f..0d0e3c87fab 100644 --- a/src/mame/drivers/pntnpuzl.cpp +++ b/src/mame/drivers/pntnpuzl.cpp @@ -346,7 +346,7 @@ static INPUT_PORTS_START( pntnpuzl ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) INPUT_PORTS_END -static MACHINE_CONFIG_START( pntnpuzl, pntnpuzl_state ) +static MACHINE_CONFIG_START( pntnpuzl ) MCFG_CPU_ADD("maincpu", M68000, 12000000)//?? MCFG_CPU_PROGRAM_MAP(pntnpuzl_map) diff --git a/src/mame/drivers/pockchal.cpp b/src/mame/drivers/pockchal.cpp index facc24e60d6..40ed4c2aff2 100644 --- a/src/mame/drivers/pockchal.cpp +++ b/src/mame/drivers/pockchal.cpp @@ -91,7 +91,7 @@ void pockchalv1_state::machine_reset() } -static MACHINE_CONFIG_START( pockchalv1, pockchalv1_state ) +static MACHINE_CONFIG_START( pockchalv1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMP90845,8000000) /* ? MHz */ @@ -126,5 +126,5 @@ MACHINE_CONFIG_END ROM_START( pockchal ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME*/ -CONS( 199?, pockchal, 0, 0, pockchalv1, pockchalv1, driver_device, 0, "Benesse Corporation", "Pocket Challenge W (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS( 199?, pockchal, 0, 0, pockchalv1, pockchalv1, pockchalv1_state, 0, "Benesse Corporation", "Pocket Challenge W (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/pocketc.cpp b/src/mame/drivers/pocketc.cpp index 1fbb9501f14..688be28d2d8 100644 --- a/src/mame/drivers/pocketc.cpp +++ b/src/mame/drivers/pocketc.cpp @@ -712,7 +712,7 @@ static GFXDECODE_START( pc1251 ) GFXDECODE_ENTRY( "gfx1", 0x0000, pc1251_charlayout, 0, 8 ) GFXDECODE_END -static MACHINE_CONFIG_START( pocketc, pocketc_state) +static MACHINE_CONFIG_START( pocketc ) MCFG_QUANTUM_TIME(attotime::from_hz(60)) MCFG_NVRAM_ADD_0FILL("cpu_nvram") @@ -739,7 +739,7 @@ static MACHINE_CONFIG_START( pocketc, pocketc_state) MCFG_PALETTE_INIT_OWNER( pocketc_state, pocketc ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( pc1401, pocketc, pc1401_state ) +static MACHINE_CONFIG_DERIVED( pc1401, pocketc ) MCFG_CPU_ADD("maincpu", SC61860, 192000) /* 7.8336 MHz */ MCFG_CPU_PROGRAM_MAP(pc1401_mem) MCFG_SC61860_READ_RESET_HANDLER(READLINE(pc1401_state,pc1401_reset)) @@ -760,7 +760,7 @@ static MACHINE_CONFIG_DERIVED( pc1402, pc1401 ) MCFG_CPU_PROGRAM_MAP( pc1402_mem) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( pc1250, pocketc, pc1251_state ) +static MACHINE_CONFIG_DERIVED( pc1250, pocketc ) MCFG_CPU_ADD("maincpu", SC61860, 192000) /* 7.8336 MHz */ MCFG_CPU_PROGRAM_MAP( pc1250_mem) MCFG_SC61860_READ_RESET_HANDLER(NOOP) @@ -802,7 +802,7 @@ static MACHINE_CONFIG_DERIVED( pc1261, pc1260 ) MCFG_CPU_PROGRAM_MAP( pc1261_mem) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( pc1350, pocketc, pc1350_state ) +static MACHINE_CONFIG_DERIVED( pc1350, pocketc ) MCFG_CPU_ADD("maincpu", SC61860, 192000) /* 7.8336 MHz */ MCFG_CPU_PROGRAM_MAP( pc1350_mem) MCFG_SC61860_READ_RESET_HANDLER(NOOP) @@ -830,7 +830,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( pc1350, pocketc, pc1350_state ) MCFG_RAM_EXTRA_OPTIONS("12K,20K") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( pc1403, pocketc, pc1403_state ) +static MACHINE_CONFIG_DERIVED( pc1403, pocketc ) MCFG_CPU_ADD( "maincpu", SC61860, 256000 ) MCFG_CPU_PROGRAM_MAP( pc1403_mem) MCFG_SC61860_READ_RESET_HANDLER(NOOP) @@ -964,25 +964,25 @@ ROM_END pc1600 */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -/* cpu sc61860 */ -COMP( 1982, pc1245, 0, 0, pc1250, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1245", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1982, pc1250, 0, 0, pc1250, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1250", MACHINE_NO_SOUND) -COMP( 1982, pc1251, pc1250, 0, pc1251, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1251", MACHINE_NO_SOUND) -COMP( 1982, pc1255, pc1250, 0, pc1255, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1255", MACHINE_NO_SOUND) -COMP( 1983, trs80pc3, pc1250, 0, pc1251, pc1251, pc1251_state, pc1251, "Tandy Radio Shack", "TRS-80 Pocket Computer PC-3", MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +// cpu sc61860 +COMP( 1982, pc1245, 0, 0, pc1250, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1245", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1982, pc1250, 0, 0, pc1250, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1250", MACHINE_NO_SOUND) +COMP( 1982, pc1251, pc1250, 0, pc1251, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1251", MACHINE_NO_SOUND) +COMP( 1982, pc1255, pc1250, 0, pc1255, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1255", MACHINE_NO_SOUND) +COMP( 1983, trs80pc3, pc1250, 0, pc1251, pc1251, pc1251_state, pc1251, "Tandy Radio Shack", "TRS-80 Pocket Computer PC-3", MACHINE_NO_SOUND) -COMP( 1982, pc1260, 0, 0, pc1260, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1260", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1982, pc1261, pc1260, 0, pc1261, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1261/1262", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1982, pc1260, 0, 0, pc1260, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1260", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1982, pc1261, pc1260, 0, pc1261, pc1251, pc1251_state, pc1251, "Sharp", "Pocket Computer 1261/1262", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -/* pc1261/pc1262 */ -COMP( 1984, pc1350, 0, 0, pc1350, pc1350, driver_device, 0, "Sharp", "Pocket Computer 1350", MACHINE_NO_SOUND ) -COMP( 198?, pc1450, 0, 0, pc1350, pc1350, driver_device, 0, "Sharp", "Pocket Computer 1450", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// pc1261/pc1262 +COMP( 1984, pc1350, 0, 0, pc1350, pc1350, pc1350_state, 0, "Sharp", "Pocket Computer 1350", MACHINE_NO_SOUND ) +COMP( 198?, pc1450, 0, 0, pc1350, pc1350, pc1350_state, 0, "Sharp", "Pocket Computer 1450", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1983, pc1401, 0, 0, pc1401, pc1401, pc1401_state, pc1401, "Sharp", "Pocket Computer 1401", MACHINE_NO_SOUND) -COMP( 1984, pc1402, pc1401, 0, pc1402, pc1401, pc1401_state, pc1401, "Sharp", "Pocket Computer 1402", MACHINE_NO_SOUND) -COMP( 198?, pc1360, pc1401, 0, pc1401, pc1401, pc1401_state, pc1401, "Sharp", "Pocket Computer 1360", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1983, pc1401, 0, 0, pc1401, pc1401, pc1401_state, pc1401, "Sharp", "Pocket Computer 1401", MACHINE_NO_SOUND) +COMP( 1984, pc1402, pc1401, 0, pc1402, pc1401, pc1401_state, pc1401, "Sharp", "Pocket Computer 1402", MACHINE_NO_SOUND) +COMP( 198?, pc1360, pc1401, 0, pc1401, pc1401, pc1401_state, pc1401, "Sharp", "Pocket Computer 1360", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -/* 72kb rom, 32kb ram, cpu? pc1360 */ -COMP( 1986, pc1403, 0, 0, pc1403, pc1403, pc1403_state, pc1403, "Sharp", "Pocket Computer 1403", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 198?, pc1403h, pc1403, 0, pc1403h,pc1403, pc1403_state, pc1403, "Sharp", "Pocket Computer 1403H", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// 72kb rom, 32kb ram, cpu? pc1360 +COMP( 1986, pc1403, 0, 0, pc1403, pc1403, pc1403_state, pc1403, "Sharp", "Pocket Computer 1403", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 198?, pc1403h, pc1403, 0, pc1403h, pc1403, pc1403_state, pc1403, "Sharp", "Pocket Computer 1403H", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/pockstat.cpp b/src/mame/drivers/pockstat.cpp index 8c83cbc9b4e..a1edb66638f 100644 --- a/src/mame/drivers/pockstat.cpp +++ b/src/mame/drivers/pockstat.cpp @@ -972,7 +972,7 @@ DEVICE_IMAGE_LOAD_MEMBER( pockstat_state, pockstat_flash ) return image_init_result::PASS; } -static MACHINE_CONFIG_START( pockstat, pockstat_state ) +static MACHINE_CONFIG_START( pockstat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM7, DEFAULT_CLOCK) MCFG_CPU_PROGRAM_MAP(pockstat_mem) @@ -1008,5 +1008,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1999, pockstat, 0, 0, pockstat, pockstat, driver_device, 0, "Sony Computer Entertainment Inc", "Sony PocketStation", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1999, pockstat, 0, 0, pockstat, pockstat, pockstat_state, 0, "Sony Computer Entertainment Inc", "Sony PocketStation", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index 5d9b7ac92b1..2cfbd3719f2 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -91,9 +91,9 @@ public: required_device m_maincpu; required_device m_lcdc; - required_device m_dtmf; - required_device m_ccm; - required_device m_exp; + required_device m_dtmf; + required_device m_ccm; + required_device m_exp; required_device m_timer_tick; required_device m_nvram; required_device m_ram; @@ -1004,7 +1004,7 @@ void portfolio_state::machine_reset() // MACHINE_CONFIG( portfolio ) //------------------------------------------------- -static MACHINE_CONFIG_START( portfolio, portfolio_state ) +static MACHINE_CONFIG_START( portfolio ) // basic machine hardware MCFG_CPU_ADD(M80C88A_TAG, I8088, XTAL_4_9152MHz) MCFG_CPU_PROGRAM_MAP(portfolio_mem) @@ -1086,5 +1086,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1989, pofo, 0, 0, portfolio, portfolio, driver_device, 0, "Atari", "Portfolio", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, pofo, 0, 0, portfolio, portfolio, portfolio_state, 0, "Atari", "Portfolio", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp index b55015e01db..57d9a25e7d2 100644 --- a/src/mame/drivers/poisk1.cpp +++ b/src/mame/drivers/poisk1.cpp @@ -2,9 +2,22 @@ // copyright-holders:Sergey Svishchev /*************************************************************************** - drivers/poisk1.c + drivers/poisk1.c - Driver file for Poisk-1 + Driver file for Poisk-1 + + to do: + - cassette i/o and softlist + - verify palette + - monochrome output + - trap: does memory always get written or it's up to NMI ISR to complete writes? + - keyboard layout for earliest revision (v89r0) + + slot devices: + - hard disk controllers + - network cards + - joystick, mouse, serial, parallel ports + - sound card ***************************************************************************/ @@ -22,6 +35,7 @@ #include "sound/spkrdev.h" #include "video/cgapal.h" +#include "screen.h" #include "softlist.h" #include "speaker.h" @@ -38,7 +52,7 @@ if(VERBOSE_DBG>=N) \ { \ if( M ) \ - logerror("%11.6f: %-24s",machine().time().as_double(),(char*)M ); \ + logerror("%11.6f at %s: %-10s",machine().time().as_double(),machine().describe_context(),(char*)M ); \ logerror A; \ } \ } while (0) @@ -234,7 +248,7 @@ WRITE8_MEMBER(p1_state::p1_ppi2_porta_w) /* 06Ah Dxx 6 Enable/Disable color burst (?) - 7 Enable/Disable D7H/D7L + 7 Enable/Disable D7H/D7L */ WRITE8_MEMBER(p1_state::p1_ppi_portc_w) @@ -617,7 +631,7 @@ static INPUT_PORTS_START( poisk1 ) PORT_INCLUDE( poisk1_keyboard_v91 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( poisk1, p1_state ) +static MACHINE_CONFIG_START( poisk1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, 5000000) MCFG_CPU_PROGRAM_MAP(poisk1_map) @@ -688,12 +702,25 @@ ROM_START( poisk1 ) ROM_REGION16_LE(0x10000,"bios", 0) ROM_DEFAULT_BIOS("v91") - ROM_SYSTEM_BIOS(0, "v89", "1989") - ROMX_LOAD( "biosp1s.rf4", 0xe000, 0x2000, CRC(1a85f671) SHA1(f0e59b2c4d92164abca55a96a58071ce869ff988), ROM_BIOS(1)) - ROM_SYSTEM_BIOS(1, "v91", "1991") - ROMX_LOAD( "poisk_1991.bin", 0xe000, 0x2000, CRC(d61c56fd) SHA1(de202e1f7422d585a1385a002a4fcf9d756236e5), ROM_BIOS(2)) - ROM_SYSTEM_BIOS(2, "v91r2", "1991r2") - ROMX_LOAD( "p_bios_nm.bin", 0xe000, 0x2000, CRC(84430b4f) SHA1(3e477962be3cea09662cb2e3ad9966ad01c7455d), ROM_BIOS(3)) + ROM_SYSTEM_BIOS(0, "v89r0", "1989r0") + ROMX_LOAD( "BIOS.RF6", 0xe000, 0x2000, CRC(c0f333e3) SHA1(a44f355b7deae3693e1462d57543a42944fd0969), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(1, "v89", "1989") + ROMX_LOAD( "biosp1s.rf4", 0xe000, 0x2000, CRC(1a85f671) SHA1(f0e59b2c4d92164abca55a96a58071ce869ff988), ROM_BIOS(2)) + ROM_SYSTEM_BIOS(2, "v91", "1991") + ROMX_LOAD( "poisk_1991.bin", 0xe000, 0x2000, CRC(d61c56fd) SHA1(de202e1f7422d585a1385a002a4fcf9d756236e5), ROM_BIOS(3)) + ROM_SYSTEM_BIOS(3, "v91r2", "1991r2") + ROMX_LOAD( "p_bios_nm.bin", 0xe000, 0x2000, CRC(84430b4f) SHA1(3e477962be3cea09662cb2e3ad9966ad01c7455d), ROM_BIOS(4)) + + ROM_SYSTEM_BIOS(4, "test1", "Test 1") + ROMX_LOAD( "TEST1.RF6", 0x00000, 0x2000, CRC(a5f05dff) SHA1(21dd0cea605bd7be22e94f8355d86b2478d9527e), ROM_BIOS(5)) + ROM_SYSTEM_BIOS(5, "test2", "Test 2") + ROMX_LOAD( "TEST2.RF6", 0x00000, 0x2000, CRC(eff730e4) SHA1(fcbc08de9b8592c974eaea837839f1a9caf36a75), ROM_BIOS(6)) + ROM_SYSTEM_BIOS(6, "test3", "Test 3") + ROMX_LOAD( "TEST3.RF6", 0x00000, 0x2000, CRC(23025dc9) SHA1(dca4cb580162bb28f6e49ff625b677001d40d573), ROM_BIOS(7)) + ROM_SYSTEM_BIOS(7, "test4", "Test 4") + ROMX_LOAD( "TEST4.RF6", 0x00000, 0x2000, CRC(aac8fc5e) SHA1(622abb5ac66d38a474ee54fe016aff0ba0b5794f), ROM_BIOS(8)) + ROM_SYSTEM_BIOS(8, "test5", "Test 5") + ROMX_LOAD( "TEST5.RF6", 0x00000, 0x2000, CRC(f308e679) SHA1(37bd35f62015d338b3347fd4e3ec455eab048b66), ROM_BIOS(9)) // 0xc0000, sets 80x25 text and loops asking for 'Boot from hard disk (Y or N)?' ROM_LOAD( "boot_net.rf4", 0x00000, 0x2000, CRC(316c2030) SHA1(d043325596455772252e465b85321f1b5c529d0b)) // NET BIOS @@ -710,5 +737,5 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP ( 1989, poisk1, ibm5150, 0, poisk1, poisk1, p1_state, poisk1, "Electronmash", "Poisk-1", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP ( 1989, poisk1, ibm5150, 0, poisk1, poisk1, p1_state, poisk1, "Electronmash", "Poisk-1", 0 ) diff --git a/src/mame/drivers/pokechmp.cpp b/src/mame/drivers/pokechmp.cpp index 4885939cd14..0734450b2f6 100644 --- a/src/mame/drivers/pokechmp.cpp +++ b/src/mame/drivers/pokechmp.cpp @@ -216,7 +216,7 @@ OKI M6295 (an AD65 on this board, note pin 7 is low): 1.5mhz */ -static MACHINE_CONFIG_START( pokechmp, pokechmp_state ) +static MACHINE_CONFIG_START( pokechmp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_4MHz/4) @@ -251,7 +251,7 @@ static MACHINE_CONFIG_START( pokechmp, pokechmp_state ) MCFG_SOUND_ADD("ym2", YM3812, XTAL_24MHz/16) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_24MHz/16, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", XTAL_24MHz/16, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* sound fx */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_DEVICE_ADDRESS_MAP(AS_0, pokechmp_oki_map) diff --git a/src/mame/drivers/pokemini.cpp b/src/mame/drivers/pokemini.cpp index 6f75c5b1d5c..430fd220f86 100644 --- a/src/mame/drivers/pokemini.cpp +++ b/src/mame/drivers/pokemini.cpp @@ -1753,7 +1753,7 @@ uint32_t pokemini_state::screen_update(screen_device &screen, bitmap_ind16 &bitm } -static MACHINE_CONFIG_START( pokemini, pokemini_state ) +static MACHINE_CONFIG_START( pokemini ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MINX, 4000000) MCFG_CPU_PROGRAM_MAP(pokemini_mem_map) @@ -1797,4 +1797,4 @@ ROM_START( pokemini ) ROM_END -CONS( 2001, pokemini, 0, 0, pokemini, pokemini, driver_device, 0, "Nintendo", "Pokemon Mini", MACHINE_NO_SOUND ) +CONS( 2001, pokemini, 0, 0, pokemini, pokemini, pokemini_state, 0, "Nintendo", "Pokemon Mini", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/poker72.cpp b/src/mame/drivers/poker72.cpp index 903b8a322df..d0dc35d5e17 100644 --- a/src/mame/drivers/poker72.cpp +++ b/src/mame/drivers/poker72.cpp @@ -363,7 +363,7 @@ void poker72_state::machine_reset() membank("bank1")->set_entry(0); } -static MACHINE_CONFIG_START( poker72, poker72_state ) +static MACHINE_CONFIG_START( poker72 ) /* basic machine hardware */ diff --git a/src/mame/drivers/polepos.cpp b/src/mame/drivers/polepos.cpp index 6a7b0dc8509..8f4ad67524e 100644 --- a/src/mame/drivers/polepos.cpp +++ b/src/mame/drivers/polepos.cpp @@ -863,7 +863,7 @@ GFXDECODE_END * Machine driver *********************************************************************/ -static MACHINE_CONFIG_START( polepos, polepos_state ) +static MACHINE_CONFIG_START( polepos ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/8) /* 3.072 MHz */ @@ -990,7 +990,7 @@ static ADDRESS_MAP_START( sound_z80_bootleg_iomap, AS_IO, 8, polepos_state ) AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("tms", tms5220_device, status_r, data_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( topracern, polepos_state ) +static MACHINE_CONFIG_START( topracern ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/8) /* 3.072 MHz */ @@ -2375,17 +2375,17 @@ DRIVER_INIT_MEMBER(polepos_state,polepos2) *********************************************************************/ /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1982, polepos, 0, polepos, poleposa, driver_device, 0, ROT0, "Namco", "Pole Position (World)", 0 ) -GAME( 1982, poleposj, polepos, polepos, polepos, driver_device, 0, ROT0, "Namco", "Pole Position (Japan)", 0 ) -GAME( 1982, poleposa1, polepos, polepos, poleposa, driver_device, 0, ROT0, "Namco (Atari license)", "Pole Position (Atari version 1)", 0 ) -GAME( 1982, poleposa2, polepos, polepos, poleposa, driver_device, 0, ROT0, "Namco (Atari license)", "Pole Position (Atari version 2)", 0 ) -GAME( 1984, topracer, polepos, polepos, polepos, driver_device, 0, ROT0, "bootleg", "Top Racer (with MB8841 + MB8842, 1984)", 0 ) // the NAMCO customs have been cloned on these bootlegs -GAME( 1983, topracera, polepos, polepos, polepos, driver_device, 0, ROT0, "bootleg", "Top Racer (with MB8841 + MB8842, 1983)", 0 ) // the only difference between them is the year displayed on the title screen -GAME( 1983, ppspeed, polepos, polepos, polepos, driver_device, 0, ROT0, "bootleg", "Speed Up (Spanish bootleg of Pole Position)", 0 ) // very close to topracer / topracera -GAME( 1982, topracern, polepos, topracern, topracern, driver_device, 0, ROT0, "bootleg", "Top Racer (no MB8841 + MB8842)", MACHINE_IMPERFECT_SOUND ) // explosion sound generator missing +GAME( 1982, polepos, 0, polepos, poleposa, polepos_state, 0, ROT0, "Namco", "Pole Position (World)", 0 ) +GAME( 1982, poleposj, polepos, polepos, polepos, polepos_state, 0, ROT0, "Namco", "Pole Position (Japan)", 0 ) +GAME( 1982, poleposa1, polepos, polepos, poleposa, polepos_state, 0, ROT0, "Namco (Atari license)", "Pole Position (Atari version 1)", 0 ) +GAME( 1982, poleposa2, polepos, polepos, poleposa, polepos_state, 0, ROT0, "Namco (Atari license)", "Pole Position (Atari version 2)", 0 ) +GAME( 1984, topracer, polepos, polepos, polepos, polepos_state, 0, ROT0, "bootleg", "Top Racer (with MB8841 + MB8842, 1984)", 0 ) // the NAMCO customs have been cloned on these bootlegs +GAME( 1983, topracera, polepos, polepos, polepos, polepos_state, 0, ROT0, "bootleg", "Top Racer (with MB8841 + MB8842, 1983)", 0 ) // the only difference between them is the year displayed on the title screen +GAME( 1983, ppspeed, polepos, polepos, polepos, polepos_state, 0, ROT0, "bootleg", "Speed Up (Spanish bootleg of Pole Position)", 0 ) // very close to topracer / topracera +GAME( 1982, topracern, polepos, topracern, topracern, polepos_state, 0, ROT0, "bootleg", "Top Racer (no MB8841 + MB8842)", MACHINE_IMPERFECT_SOUND ) // explosion sound generator missing GAME( 1983, polepos2, 0, polepos, polepos2j, polepos_state, polepos2, ROT0, "Namco", "Pole Position II (Japan)", 0 ) GAME( 1983, polepos2a, polepos2, polepos, polepos2, polepos_state, polepos2, ROT0, "Namco (Atari license)", "Pole Position II (Atari)", 0 ) -GAME( 1983, polepos2b, polepos2, polepos, polepos2, driver_device, 0, ROT0, "bootleg", "Pole Position II (bootleg)", 0 ) -GAME( 1984, polepos2bi, polepos2, polepos2bi, polepos2bi,driver_device, 0, ROT0, "bootleg", "Gran Premio F1 (Italian bootleg of Pole Position II)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) -GAME( 1984, polepos2bs, polepos2, polepos2bi, polepos2bi,driver_device, 0, ROT0, "bootleg (BCN Internacional S.A.)", "Gran Premio F1 (Spanish bootleg of Pole Position II)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, polepos2b, polepos2, polepos, polepos2, polepos_state, 0, ROT0, "bootleg", "Pole Position II (bootleg)", 0 ) +GAME( 1984, polepos2bi, polepos2, polepos2bi, polepos2bi,polepos_state, 0, ROT0, "bootleg", "Gran Premio F1 (Italian bootleg of Pole Position II)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) +GAME( 1984, polepos2bs, polepos2, polepos2bi, polepos2bi,polepos_state, 0, ROT0, "bootleg (BCN Internacional S.A.)", "Gran Premio F1 (Spanish bootleg of Pole Position II)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/policetr.cpp b/src/mame/drivers/policetr.cpp index 4b5a7f55f37..450956124f8 100644 --- a/src/mame/drivers/policetr.cpp +++ b/src/mame/drivers/policetr.cpp @@ -121,7 +121,7 @@ void policetr_state::device_timer(emu_timer &timer, device_timer_id id, int para INTERRUPT_GEN_MEMBER(policetr_state::irq4_gen) { device.execute().set_input_line(R3000_IRQ4, ASSERT_LINE); - timer_set(m_screen->time_until_pos(0), TIMER_IRQ5_GEN); + m_irq5_gen_timer->adjust(m_screen->time_until_pos(0)); } @@ -386,6 +386,10 @@ static INPUT_PORTS_START( sshoot11 ) INPUT_PORTS_END +void policetr_state::machine_start() +{ + m_irq5_gen_timer = timer_alloc(TIMER_IRQ5_GEN); +} /************************************* * @@ -393,7 +397,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( policetr, policetr_state ) +static MACHINE_CONFIG_START( policetr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R3041, MASTER_CLOCK/2) @@ -715,14 +719,14 @@ DRIVER_INIT_MEMBER(policetr_state,sshoot12) * *************************************/ -GAME( 1996, policetr, 0, policetr, policetr, policetr_state, policetr, ROT0, "P&P Marketing", "Police Trainer (Rev 1.3)", 0 ) -GAME( 1996, policetr11, policetr, policetr, polict10, policetr_state, policetr, ROT0, "P&P Marketing", "Police Trainer (Rev 1.1)", 0 ) -GAME( 1996, policetr10, policetr, policetr, polict10, policetr_state, policetr, ROT0, "P&P Marketing", "Police Trainer (Rev 1.0)", 0 ) +GAME( 1996, policetr, 0, policetr, policetr, policetr_state, policetr, ROT0, "P&P Marketing", "Police Trainer (Rev 1.3)", 0 ) +GAME( 1996, policetr11, policetr, policetr, polict10, policetr_state, policetr, ROT0, "P&P Marketing", "Police Trainer (Rev 1.1)", 0 ) +GAME( 1996, policetr10, policetr, policetr, polict10, policetr_state, policetr, ROT0, "P&P Marketing", "Police Trainer (Rev 1.0)", 0 ) GAME( 1996, policetr13a, policetr, sshooter, policetr, policetr_state, plctr13b, ROT0, "P&P Marketing", "Police Trainer (Rev 1.3B Newer)", 0 ) -GAME( 1996, policetr13b, policetr, sshooter, policetr, policetr_state, plctr13b, ROT0, "P&P Marketing", "Police Trainer (Rev 1.3B)", 0 ) +GAME( 1996, policetr13b, policetr, sshooter, policetr, policetr_state, plctr13b, ROT0, "P&P Marketing", "Police Trainer (Rev 1.3B)", 0 ) -GAME( 1998, sshooter, 0, sshooter, policetr, policetr_state, sshooter, ROT0, "P&P Marketing", "Sharpshooter (Rev 1.9)", 0 ) -GAME( 1998, sshooter17, sshooter, sshooter, policetr, policetr_state, sshooter, ROT0, "P&P Marketing", "Sharpshooter (Rev 1.7)", 0 ) -GAME( 1998, sshooter12, sshooter, sshooter, sshoot11, policetr_state, sshoot12, ROT0, "P&P Marketing", "Sharpshooter (Rev 1.2)", 0 ) -GAME( 1998, sshooter11, sshooter, sshooter, sshoot11, policetr_state, sshoot12, ROT0, "P&P Marketing", "Sharpshooter (Rev 1.1)", 0 ) +GAME( 1998, sshooter, 0, sshooter, policetr, policetr_state, sshooter, ROT0, "P&P Marketing", "Sharpshooter (Rev 1.9)", 0 ) +GAME( 1998, sshooter17, sshooter, sshooter, policetr, policetr_state, sshooter, ROT0, "P&P Marketing", "Sharpshooter (Rev 1.7)", 0 ) +GAME( 1998, sshooter12, sshooter, sshooter, sshoot11, policetr_state, sshoot12, ROT0, "P&P Marketing", "Sharpshooter (Rev 1.2)", 0 ) +GAME( 1998, sshooter11, sshooter, sshooter, sshoot11, policetr_state, sshoot12, ROT0, "P&P Marketing", "Sharpshooter (Rev 1.1)", 0 ) diff --git a/src/mame/drivers/poly.cpp b/src/mame/drivers/poly.cpp index cc70f11556f..369e1f8f021 100644 --- a/src/mame/drivers/poly.cpp +++ b/src/mame/drivers/poly.cpp @@ -59,7 +59,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(pia1_b_in); DECLARE_READ8_MEMBER(videoram_r); DECLARE_WRITE_LINE_MEMBER(write_acia_clock); @@ -127,7 +127,7 @@ READ8_MEMBER( poly_state::videoram_r ) return m_videoram[offset]; } -WRITE8_MEMBER( poly_state::kbd_put ) +void poly_state::kbd_put(u8 data) { m_term_data = data | 0x80; @@ -151,7 +151,7 @@ WRITE_LINE_MEMBER( poly_state::ptm_o3_callback ) m_speaker->level_w(state); } -static MACHINE_CONFIG_START( poly, poly_state ) +static MACHINE_CONFIG_START( poly ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809E, XTAL_12MHz / 3) // 12.0576MHz MCFG_CPU_PROGRAM_MAP(poly_mem) @@ -200,7 +200,7 @@ static MACHINE_CONFIG_START( poly, poly_state ) MCFG_DEVICE_ADD("adlc", MC6854, 0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(poly_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(poly_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -225,5 +225,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, poly1, 0, 0, poly, poly, driver_device, 0, "Polycorp", "Poly-1 Educational Computer", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, poly1, 0, 0, poly, poly, poly_state, 0, "Polycorp", "Poly-1 Educational Computer", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/poly88.cpp b/src/mame/drivers/poly88.cpp index 1d991d6ab67..9a7cf7a8b8e 100644 --- a/src/mame/drivers/poly88.cpp +++ b/src/mame/drivers/poly88.cpp @@ -179,7 +179,7 @@ static GFXDECODE_START( poly88 ) GFXDECODE_ENTRY( "chargen", 0x0000, poly88_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( poly88, poly88_state ) +static MACHINE_CONFIG_START( poly88 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, 1853000) MCFG_CPU_PROGRAM_MAP(poly88_mem) @@ -247,6 +247,6 @@ ROM_START( poly8813 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1976, poly88, 0, 0, poly88, poly88, poly88_state, poly88, "PolyMorphic Systems", "Poly-88", 0) -COMP( 1977, poly8813,poly88,0, poly8813, poly88, poly88_state, poly88, "PolyMorphic Systems", "Poly-8813",MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1976, poly88, 0, 0, poly88, poly88, poly88_state, poly88, "PolyMorphic Systems", "Poly-88", 0 ) +COMP( 1977, poly8813,poly88,0, poly8813, poly88, poly88_state, poly88, "PolyMorphic Systems", "Poly-8813", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/poly880.cpp b/src/mame/drivers/poly880.cpp index 2716c8f9442..d3297d0cd15 100644 --- a/src/mame/drivers/poly880.cpp +++ b/src/mame/drivers/poly880.cpp @@ -242,7 +242,7 @@ void poly880_state::machine_start() /* Machine Driver */ -static MACHINE_CONFIG_START( poly880, poly880_state ) +static MACHINE_CONFIG_START( poly880 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_7_3728MHz/8) MCFG_CPU_PROGRAM_MAP(poly880_mem) @@ -285,5 +285,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, poly880, 0, 0, poly880, poly880, driver_device, 0, "VEB Polytechnik", "Poly-Computer 880", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, poly880, 0, 0, poly880, poly880, poly880_state, 0, "VEB Polytechnik", "Poly-Computer 880", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/polyplay.cpp b/src/mame/drivers/polyplay.cpp index e8422c73000..2c8e07acebb 100644 --- a/src/mame/drivers/polyplay.cpp +++ b/src/mame/drivers/polyplay.cpp @@ -308,7 +308,7 @@ GFXDECODE_END /* the machine driver */ -static MACHINE_CONFIG_START( polyplay_zre, polyplay_state ) +static MACHINE_CONFIG_START( polyplay_zre ) /* basic machine hardware */ MCFG_CPU_ADD(Z80CPU_TAG, Z80, POLYPLAY_MAIN_CLOCK / 4) /* UB880D */ MCFG_Z80_DAISY_CHAIN(daisy_chain_zre) @@ -350,7 +350,7 @@ static MACHINE_CONFIG_START( polyplay_zre, polyplay_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( polyplay_zrepp, polyplay_state ) +static MACHINE_CONFIG_START( polyplay_zrepp ) MCFG_FRAGMENT_ADD( polyplay_zre ) /* basic machine hardware */ @@ -434,6 +434,6 @@ ROM_START( polyplay2c ) ROM_END /* game driver */ -GAMEL( 1986, polyplay, 0, polyplay_zre, polyplay, driver_device, 0, ROT0, "VEB Polytechnik Karl-Marx-Stadt", "Poly-Play (ZRE)", 0, layout_polyplay ) -GAMEL( 1989, polyplay2, 0, polyplay_zrepp, polyplay, driver_device, 0, ROT0, "VEB Polytechnik Karl-Marx-Stadt", "Poly-Play (ZRE-PP)", 0, layout_polyplay ) -GAMEL( 1989, polyplay2c, polyplay2, polyplay_zrepp, polyplay, driver_device, 0, ROT0, "VEB Polytechnik Karl-Marx-Stadt", "Poly-Play (ZRE-PP - Czech)", 0, layout_polyplay ) +GAMEL( 1986, polyplay, 0, polyplay_zre, polyplay, polyplay_state, 0, ROT0, "VEB Polytechnik Karl-Marx-Stadt", "Poly-Play (ZRE)", 0, layout_polyplay ) +GAMEL( 1989, polyplay2, 0, polyplay_zrepp, polyplay, polyplay_state, 0, ROT0, "VEB Polytechnik Karl-Marx-Stadt", "Poly-Play (ZRE-PP)", 0, layout_polyplay ) +GAMEL( 1989, polyplay2c, polyplay2, polyplay_zrepp, polyplay, polyplay_state, 0, ROT0, "VEB Polytechnik Karl-Marx-Stadt", "Poly-Play (ZRE-PP - Czech)", 0, layout_polyplay ) diff --git a/src/mame/drivers/pong.cpp b/src/mame/drivers/pong.cpp index 27eddca1a71..9834d60bfde 100644 --- a/src/mame/drivers/pong.cpp +++ b/src/mame/drivers/pong.cpp @@ -144,7 +144,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; required_device m_dac; /* just to have a sound device */ @@ -176,8 +176,8 @@ public: } // sub devices - required_device m_sw1a; - required_device m_sw1b; + required_device m_sw1a; + required_device m_sw1b; DECLARE_INPUT_CHANGED_MEMBER(input_changed); @@ -207,15 +207,15 @@ public: m_sw1_4(*this, "maincpu:sw1_4") { } - required_device m_led_serve; - required_device m_lamp_credit1; - required_device m_lamp_credit2; - required_device m_coin_counter; + required_device m_led_serve; + required_device m_lamp_credit1; + required_device m_lamp_credit2; + required_device m_coin_counter; - required_device m_sw1_1; - required_device m_sw1_2; - required_device m_sw1_3; - required_device m_sw1_4; + required_device m_sw1_1; + required_device m_sw1_2; + required_device m_sw1_3; + required_device m_sw1_4; NETDEV_ANALOG_CALLBACK_MEMBER(serve_cb) { @@ -266,7 +266,7 @@ NETLIST_END() INPUT_CHANGED_MEMBER(pong_state::input_changed) { - int numpad = (uintptr_t) (param); + int numpad = uintptr_t(param); switch (numpad) { @@ -371,7 +371,7 @@ static INPUT_PORTS_START( breakout ) INPUT_PORTS_END -static MACHINE_CONFIG_START( pong, pong_state ) +static MACHINE_CONFIG_START( pong ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -406,7 +406,7 @@ static MACHINE_CONFIG_START( pong, pong_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( breakout, breakout_state ) +static MACHINE_CONFIG_START( breakout ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -467,7 +467,7 @@ static MACHINE_CONFIG_DERIVED( pongf, pong ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pongd, pong_state ) +static MACHINE_CONFIG_START( pongd ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -565,10 +565,10 @@ ROM_START( consolet ) // dummy to satisfy game entry ROM_END */ -GAME( 1972, pong, 0, pong, pong, driver_device, 0, ROT0, "Atari", "Pong (Rev E) external [TTL]", MACHINE_SUPPORTS_SAVE) -GAME( 1972, pongf, 0, pongf, pong, driver_device, 0, ROT0, "Atari", "Pong (Rev E) [TTL]", MACHINE_SUPPORTS_SAVE) -GAME( 1973, pongd, 0, pongd, pongd, driver_device, 0, ROT0, "Atari", "Pong Doubles [TTL]", MACHINE_SUPPORTS_SAVE) -GAMEL( 1976, breakout, 0, breakout, breakout, driver_device, 0, ROT90, "Atari", "Breakout [TTL]", MACHINE_SUPPORTS_SAVE, layout_breakout) +GAME( 1972, pong, 0, pong, pong, pong_state, 0, ROT0, "Atari", "Pong (Rev E) external [TTL]", MACHINE_SUPPORTS_SAVE) +GAME( 1972, pongf, 0, pongf, pong, pong_state, 0, ROT0, "Atari", "Pong (Rev E) [TTL]", MACHINE_SUPPORTS_SAVE) +GAME( 1973, pongd, 0, pongd, pongd, pong_state, 0, ROT0, "Atari", "Pong Doubles [TTL]", MACHINE_SUPPORTS_SAVE) +GAMEL( 1976, breakout, 0, breakout, breakout, breakout_state, 0, ROT90, "Atari", "Breakout [TTL]", MACHINE_SUPPORTS_SAVE, layout_breakout) // 100% TTL //GAME( 1973, coupedav, pongd, pongd, pongd, driver_device, 0, ROT0, "Atari France", "Coupe Davis [TTL]", MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/poolshrk.cpp b/src/mame/drivers/poolshrk.cpp index b9d29968640..9634ae8544f 100644 --- a/src/mame/drivers/poolshrk.cpp +++ b/src/mame/drivers/poolshrk.cpp @@ -215,7 +215,7 @@ PALETTE_INIT_MEMBER(poolshrk_state, poolshrk) } -static MACHINE_CONFIG_START( poolshrk, poolshrk_state ) +static MACHINE_CONFIG_START( poolshrk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 11055000 / 8) /* ? */ diff --git a/src/mame/drivers/pooyan.cpp b/src/mame/drivers/pooyan.cpp index 4988e2caf7e..82c45d20b92 100644 --- a/src/mame/drivers/pooyan.cpp +++ b/src/mame/drivers/pooyan.cpp @@ -188,7 +188,7 @@ void pooyan_state::machine_reset() } -static MACHINE_CONFIG_START( pooyan, pooyan_state ) +static MACHINE_CONFIG_START( pooyan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/3/2) @@ -308,6 +308,6 @@ ROM_END *************************************/ // YEAR, NAME, PARENT, MACHINE,INPUT, INIT,MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1982, pooyan, 0, pooyan, pooyan, driver_device, 0, ROT90, "Konami", "Pooyan", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pooyans, pooyan, pooyan, pooyan, driver_device, 0, ROT90, "Konami (Stern Electronics license)", "Pooyan (Stern Electronics)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pootan, pooyan, pooyan, pooyan, driver_device, 0, ROT90, "bootleg", "Pootan", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pooyan, 0, pooyan, pooyan, pooyan_state, 0, ROT90, "Konami", "Pooyan", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pooyans, pooyan, pooyan, pooyan, pooyan_state, 0, ROT90, "Konami (Stern Electronics license)", "Pooyan (Stern Electronics)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pootan, pooyan, pooyan, pooyan, pooyan_state, 0, ROT90, "bootleg", "Pootan", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/popeye.cpp b/src/mame/drivers/popeye.cpp index 93646d51a2b..6e006797024 100644 --- a/src/mame/drivers/popeye.cpp +++ b/src/mame/drivers/popeye.cpp @@ -454,7 +454,7 @@ WRITE8_MEMBER(popeye_state::popeye_portB_w) m_dswbit = (data & 0x0e) >> 1; } -static MACHINE_CONFIG_START( skyskipr, popeye_state ) +static MACHINE_CONFIG_START( skyskipr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) /* 4 MHz */ MCFG_CPU_PROGRAM_MAP(skyskipr_map) @@ -762,9 +762,9 @@ DRIVER_INIT_MEMBER(popeye_state,popeye) } -GAME( 1981, skyskipr, 0, skyskipr, skyskipr, popeye_state, skyskipr, ROT0, "Nintendo", "Sky Skipper", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, popeye, 0, popeye, popeye, popeye_state, popeye, ROT0, "Nintendo", "Popeye (revision D)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, popeyeu, popeye, popeye, popeye, popeye_state, popeye, ROT0, "Nintendo", "Popeye (revision D not protected)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, popeyef, popeye, popeye, popeyef, popeye_state, popeye, ROT0, "Nintendo", "Popeye (revision F)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, popeyebl, popeye, popeyebl, popeye, driver_device, 0, ROT0, "bootleg", "Popeye (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, popeyej, popeye, popeyej, popeye, popeye_state, skyskipr, ROT0, "Nintendo", "Popeye (Japan, Sky Skipper hardware)", MACHINE_SUPPORTS_SAVE ) // this is the original Japanese release on the same hardware as Sky Skipper +GAME( 1981, skyskipr, 0, skyskipr, skyskipr, popeye_state, skyskipr, ROT0, "Nintendo", "Sky Skipper", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, popeye, 0, popeye, popeye, popeye_state, popeye, ROT0, "Nintendo", "Popeye (revision D)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, popeyeu, popeye, popeye, popeye, popeye_state, popeye, ROT0, "Nintendo", "Popeye (revision D not protected)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, popeyef, popeye, popeye, popeyef, popeye_state, popeye, ROT0, "Nintendo", "Popeye (revision F)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, popeyebl, popeye, popeyebl, popeye, popeye_state, 0, ROT0, "bootleg", "Popeye (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, popeyej, popeye, popeyej, popeye, popeye_state, skyskipr, ROT0, "Nintendo", "Popeye (Japan, Sky Skipper hardware)", MACHINE_SUPPORTS_SAVE ) // this is the original Japanese release on the same hardware as Sky Skipper diff --git a/src/mame/drivers/popobear.cpp b/src/mame/drivers/popobear.cpp index 45368f8efd6..d6ef1d1fa1b 100644 --- a/src/mame/drivers/popobear.cpp +++ b/src/mame/drivers/popobear.cpp @@ -634,7 +634,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(popobear_state::irq) m_maincpu->set_input_line(2, ASSERT_LINE); } -static MACHINE_CONFIG_START( popobear, popobear_state ) +static MACHINE_CONFIG_START( popobear ) MCFG_CPU_ADD("maincpu", M68000, XTAL_42MHz/4) // XTAL CORRECT, DIVISOR GUESSED MCFG_CPU_PROGRAM_MAP(popobear_mem) // levels 2,3,5 look interesting @@ -661,7 +661,7 @@ static MACHINE_CONFIG_START( popobear, popobear_state ) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_42MHz/16) // XTAL CORRECT, DIVISOR GUESSED MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_42MHz/32, OKIM6295_PIN7_LOW) // XTAL CORRECT, DIVISOR GUESSED + MCFG_OKIM6295_ADD("oki", XTAL_42MHz/32, PIN7_LOW) // XTAL CORRECT, DIVISOR GUESSED MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -679,4 +679,4 @@ ROM_START( popobear ) ROM_LOAD( "popobear_ta-a-901.u9", 0x00000, 0x40000, CRC(f1e94926) SHA1(f4d6f5b5811d90d0069f6efbb44d725ff0d07e1c) ) ROM_END -GAME( 2000, popobear, 0, popobear, popobear, driver_device, 0, ROT0, "BMC", "PoPo Bear", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 2000, popobear, 0, popobear, popobear, popobear_state, 0, ROT0, "BMC", "PoPo Bear", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/popper.cpp b/src/mame/drivers/popper.cpp index 614a4660178..3b129a95c25 100644 --- a/src/mame/drivers/popper.cpp +++ b/src/mame/drivers/popper.cpp @@ -33,7 +33,8 @@ TODO: - According to the schematics the sub CPU ROM should be 0x2000 - Verify screen raw parameters - - Finish driver + - Verify graphics with real hardware + - Watchdog ***************************************************************************/ @@ -59,16 +60,19 @@ public: m_screen(*this, "screen"), m_gfxdecode(*this, "gfxdecode"), m_ay{ {*this, "ay1"}, {*this, "ay2"} }, - m_ram(*this, "ram"), + m_video_ram(*this, "video_ram"), + m_attribute_ram(*this, "attribute_ram"), + m_sprite_ram(*this, "sprite_ram"), m_inputs{ {*this, "in1"}, {*this, "in0"}, {*this, "dsw2"}, {*this, "dsw1"} }, m_scanline_timer(nullptr), - m_tilemap(nullptr), - m_nmi_enable(0), m_vram_page(0) + m_layer0_tilemap(nullptr), m_layer1_tilemap(nullptr), + m_nmi_enable(0), m_back_color(0), m_vram_page(0) { } DECLARE_PALETTE_INIT(popper); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TILE_GET_INFO_MEMBER(tile_info); + TILE_GET_INFO_MEMBER(layer0_tile_info); + TILE_GET_INFO_MEMBER(layer1_tile_info); DECLARE_WRITE8_MEMBER(nmi_control_w); DECLARE_WRITE8_MEMBER(crt_direction_w); @@ -92,13 +96,17 @@ private: required_device m_screen; required_device m_gfxdecode; required_device m_ay[2]; - required_shared_ptr m_ram; + required_shared_ptr m_video_ram; + required_shared_ptr m_attribute_ram; + required_shared_ptr m_sprite_ram; required_ioport m_inputs[4]; emu_timer *m_scanline_timer; - tilemap_t *m_tilemap; + tilemap_t *m_layer0_tilemap; + tilemap_t *m_layer1_tilemap; int m_nmi_enable; + int m_back_color; int m_vram_page; }; @@ -110,7 +118,13 @@ private: static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, popper_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_NOP - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("ram") + AM_RANGE(0xc000, 0xc0ff) AM_RAM + AM_RANGE(0xc100, 0xc6ff) AM_RAM AM_SHARE("video_ram") + AM_RANGE(0xc700, 0xc8ff) AM_RAM + AM_RANGE(0xc900, 0xceff) AM_RAM AM_SHARE("attribute_ram") + AM_RANGE(0xcf00, 0xcfff) AM_RAM + AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("sprite_ram") + AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("shared") AM_RANGE(0xe000, 0xe003) AM_MIRROR(0x03fc) AM_READ(inputs_r) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_WRITE(nmi_control_w) AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_WRITE(crt_direction_w) @@ -128,7 +142,7 @@ static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, popper_state ) AM_RANGE(0x2000, 0x7fff) AM_NOP AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x1ffc) AM_WRITE(ay1_w) AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay2", ay8910_device, write_bc1_bc2) - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("ram") + AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("shared") AM_RANGE(0xe000, 0xffff) AM_NOP ADDRESS_MAP_END @@ -245,8 +259,8 @@ static const res_net_decode_info popper_decode_info = static const res_net_info popper_net_info = { RES_NET_VCC_5V | RES_NET_VBIAS_5V | RES_NET_VIN_TTL_OUT, - { - { RES_NET_AMP_NONE, 0, 0, 3, { 1000, 470, 220 } }, + { + { RES_NET_AMP_NONE, 0, 0, 3, { 1000, 470, 220 } }, { RES_NET_AMP_NONE, 0, 0, 3, { 1000, 470, 220 } }, { RES_NET_AMP_NONE, 0, 0, 2, { 470, 220, 0 } } } @@ -288,7 +302,7 @@ WRITE8_MEMBER( popper_state::crt_direction_w ) WRITE8_MEMBER( popper_state::back_color_select_w ) { - logerror("back_color_select_w: %02x\n", data); + m_back_color = data & 1; } WRITE8_MEMBER( popper_state::vram_page_select_w ) @@ -301,10 +315,56 @@ uint32_t popper_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap bitmap.fill(0, cliprect); // always draw all tiles - m_tilemap->mark_all_dirty(); + m_layer0_tilemap->mark_all_dirty(); + m_layer1_tilemap->mark_all_dirty(); + + // draw the layers with lower priority + m_layer0_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_layer1_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + // draw the sprites + for (int offs = 0; offs < 0x800; offs += 4) + { + // 0 76653210 Y coordinate + // 1 76543210 Code + // 2 7------- Flip Y + // 2 -6------ Flip X + // 2 --54---- Not used + // 2 ----3210 Color + // 3 76653210 X coordinate + + int sx = m_sprite_ram[offs + 3]; + int sy = m_sprite_ram[offs + 0]; + + // only render sprite if it's in the current offset range + if (((sy + (flip_screen() ? 2 : 0)) >> 4) != ((~(offs >> 7)) & 0x0f)) + continue; + + sx += 64; + sy = 240 - sy; - // draw the character layer - m_tilemap->draw(screen, bitmap, cliprect, 0, 0); + int flipx = BIT(m_sprite_ram[offs + 2], 6); + int flipy = BIT(m_sprite_ram[offs + 2], 7); + + if (flip_screen()) + { + flipx = !flipx; + flipy = !flipy; + + sx = 232 - sx; + sx += 128; + sy = (240 + 2) - sy; + } + + int code = m_sprite_ram[offs + 1]; + int color = m_sprite_ram[offs + 2] & 0x0f; + + m_gfxdecode->gfx(2)->transpen(bitmap, cliprect, code, color, flipx, flipy, sx, sy, 0); + } + + // draw the tiles with priority over the sprites + m_layer0_tilemap->draw(screen, bitmap, cliprect, 1, 0); + m_layer1_tilemap->draw(screen, bitmap, cliprect, 1, 0); return 0; } @@ -314,7 +374,18 @@ uint32_t popper_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap // DRAWGFX LAYOUTS //************************************************************************** -static const gfx_layout charlayout = +static const gfx_layout layer0_charlayout = +{ + 8,8, + RGN_FRAC(2,2), + 1, + { 0, 4 }, + { STEP4(8,1), STEP4(0,1) }, + { STEP8(0,16) }, + 16*8 +}; + +static const gfx_layout layer1_charlayout = { 8,8, RGN_FRAC(2,2), @@ -337,19 +408,40 @@ static const gfx_layout spritelayout = }; static GFXDECODE_START( popper ) - GFXDECODE_ENTRY("tiles", 0, charlayout, 0, 16) - GFXDECODE_ENTRY("sprites", 0, spritelayout, 0, 16) + GFXDECODE_ENTRY("tiles", 0, layer0_charlayout, 0, 32) + GFXDECODE_ENTRY("tiles", 0, layer1_charlayout, 0, 16) + GFXDECODE_ENTRY("sprites", 0, spritelayout, 0, 16) GFXDECODE_END -TILE_GET_INFO_MEMBER( popper_state::tile_info ) +// attribute ram layout +// 7------- high priority +// -654---- layer0 color +// ----3210 layer1 color + +TILE_GET_INFO_MEMBER( popper_state::layer0_tile_info ) { - int code = (m_vram_page << 8) | m_ram[0x100 + tile_index]; - int attr = m_ram[0x900 + tile_index]; - int color = attr >> 4; + int code = (m_vram_page << 8) | m_video_ram[tile_index]; + int attr = m_attribute_ram[tile_index]; + int color = (~m_back_color & 1) << 3 | ((attr >> 4) & 7); + color <<= 1; + + // high priority only applies if a color is set + tileinfo.category = BIT(attr, 7) && (attr & 0x70); SET_TILE_INFO_MEMBER(0, code, color, 0); } +TILE_GET_INFO_MEMBER( popper_state::layer1_tile_info ) +{ + int code = (m_vram_page << 8) | m_video_ram[tile_index]; + int attr = m_attribute_ram[tile_index]; + int color = attr & 0x0f; + + tileinfo.category = BIT(attr, 7); + + SET_TILE_INFO_MEMBER(1, code, color, 0); +} + //************************************************************************** // SUBCPU @@ -389,26 +481,28 @@ WRITE8_MEMBER( popper_state::ay1_w ) WRITE8_MEMBER( popper_state::nmi_control_w ) { -// logerror("nmi_control_w: %02x\n", data); m_nmi_enable = data & 1; } WRITE8_MEMBER( popper_state::intcycle_w ) { + // set to 0 and apparently not used by the game logerror("intcycle_w: %d = %02x\n", offset, data); } READ8_MEMBER( popper_state::watchdog_clear_r ) { - logerror("watchdog_clear_r\n"); return 0; } void popper_state::machine_start() { - // create tilemap - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popper_state::tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 48, 32); - m_tilemap->set_transparent_pen(3); + // create tilemaps + m_layer0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popper_state::layer0_tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 48, 32); + m_layer0_tilemap->set_transparent_pen(1); + + m_layer1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popper_state::layer1_tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 48, 32); + m_layer1_tilemap->set_transparent_pen(0); // allocate and start scanline timer m_scanline_timer = timer_alloc(0); @@ -416,12 +510,14 @@ void popper_state::machine_start() // register for save states save_item(NAME(m_nmi_enable)); + save_item(NAME(m_back_color)); save_item(NAME(m_vram_page)); } void popper_state::machine_reset() { m_nmi_enable = 0; + m_back_color = 0; m_vram_page = 0; } @@ -430,7 +526,7 @@ void popper_state::machine_reset() // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( popper, popper_state ) +static MACHINE_CONFIG_START( popper ) MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/3/2) MCFG_CPU_PROGRAM_MAP(main_map) @@ -491,5 +587,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS -GAME( 1983, popper, 0, popper, popper, driver_device, 0, ROT90, "Omori", "Popper", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS +GAME( 1983, popper, 0, popper, popper, popper_state, 0, ROT90, "Omori", "Popper", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/portrait.cpp b/src/mame/drivers/portrait.cpp index d4f78eee780..3ab82b776da 100644 --- a/src/mame/drivers/portrait.cpp +++ b/src/mame/drivers/portrait.cpp @@ -247,7 +247,7 @@ static GFXDECODE_START( portrait ) GFXDECODE_END -static MACHINE_CONFIG_START( portrait, portrait_state ) +static MACHINE_CONFIG_START( portrait ) MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz ? */ MCFG_CPU_PROGRAM_MAP(portrait_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", portrait_state, irq0_line_hold) @@ -390,5 +390,5 @@ ROM_END -GAME( 1983, portrait, 0, portrait, portrait, driver_device, 0, ROT270, "Olympia", "Portraits (set 1)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, portraita,portrait, portrait, portrait, driver_device, 0, ROT270, "Olympia", "Portraits (set 2)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, portrait, 0, portrait, portrait, portrait_state, 0, ROT270, "Olympia", "Portraits (set 1)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, portraita,portrait, portrait, portrait, portrait_state, 0, ROT270, "Olympia", "Portraits (set 2)", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/potgoldu.cpp b/src/mame/drivers/potgoldu.cpp index 06b635d30be..278165b0e56 100644 --- a/src/mame/drivers/potgoldu.cpp +++ b/src/mame/drivers/potgoldu.cpp @@ -71,7 +71,7 @@ static INPUT_PORTS_START( potgold ) INPUT_PORTS_END -static MACHINE_CONFIG_START( potgold, potgold_state ) +static MACHINE_CONFIG_START( potgold ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, XTAL_40MHz) @@ -119,5 +119,5 @@ ROM_START( potgoldu580 ) // TMS34010FNL-40 + MC68H705 + YMF704C + ADV476KP35 RAM ROM_LOAD( "mc68h705", 0x0000, 0x2000, NO_DUMP ) // not sure which type of mcu this is, size is a guess ROM_END -GAME( 200?, potgoldu, 0, potgold, potgold, driver_device, 0, ROT0, "U.S. Games Inc.", "Pot O' Gold (U.S. Games, v400x?)", MACHINE_IS_SKELETON | MACHINE_NO_SOUND ) -GAME( 200?, potgoldu580, potgoldu, potgold, potgold, driver_device, 0, ROT0, "U.S. Games Inc.", "Pot O' Gold (U.S. Games, v580F)", MACHINE_IS_SKELETON | MACHINE_NO_SOUND ) +GAME( 200?, potgoldu, 0, potgold, potgold, potgold_state, 0, ROT0, "U.S. Games Inc.", "Pot O' Gold (U.S. Games, v400x?)", MACHINE_IS_SKELETON | MACHINE_NO_SOUND ) +GAME( 200?, potgoldu580, potgoldu, potgold, potgold, potgold_state, 0, ROT0, "U.S. Games Inc.", "Pot O' Gold (U.S. Games, v580F)", MACHINE_IS_SKELETON | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/powerbal.cpp b/src/mame/drivers/powerbal.cpp index 29fbf0c0d17..9e8dd59363c 100644 --- a/src/mame/drivers/powerbal.cpp +++ b/src/mame/drivers/powerbal.cpp @@ -197,7 +197,7 @@ static INPUT_PORTS_START( powerbal ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) /* Manual shows this as "Weapon" Off for Yes and On for No - Meaning is unknown */ PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Language ) ) @@ -491,7 +491,7 @@ MACHINE_RESET_MEMBER(powerbal_state,powerbal) configure_oki_banks(); } -static MACHINE_CONFIG_START( powerbal, powerbal_state ) +static MACHINE_CONFIG_START( powerbal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */ @@ -519,12 +519,12 @@ static MACHINE_CONFIG_START( powerbal, powerbal_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( magicstk, powerbal_state ) +static MACHINE_CONFIG_START( magicstk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */ @@ -555,7 +555,7 @@ static MACHINE_CONFIG_START( magicstk, powerbal_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END @@ -704,7 +704,7 @@ DRIVER_INIT_MEMBER(powerbal_state,magicstk) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 1994, powerbal, 0, powerbal, powerbal, powerbal_state, powerbal, ROT0, "Playmark", "Power Balls", MACHINE_SUPPORTS_SAVE ) GAME( 1995, magicstk, 0, magicstk, magicstk, powerbal_state, magicstk, ROT0, "Playmark", "Magic Sticks", MACHINE_SUPPORTS_SAVE ) GAME( 1995, hotminda, hotmind, magicstk, hotminda, powerbal_state, magicstk, ROT0, "Playmark", "Hot Mind (adjustable prize)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/powerins.cpp b/src/mame/drivers/powerins.cpp index fe58539eaa1..6f4d633d39c 100644 --- a/src/mame/drivers/powerins.cpp +++ b/src/mame/drivers/powerins.cpp @@ -295,7 +295,7 @@ MACHINE_START_MEMBER(powerins_state, powerinsa) membank("okibank")->configure_entries(0, 5, memregion("oki1")->base() + 0x30000, 0x10000); } -static MACHINE_CONFIG_START( powerins, powerins_state ) +static MACHINE_CONFIG_START( powerins ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12MHz */ @@ -326,10 +326,10 @@ static MACHINE_CONFIG_START( powerins, powerins_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki1", 4000000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki1", 4000000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) - MCFG_OKIM6295_ADD("oki2", 4000000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", 4000000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) MCFG_SOUND_ADD("ym2203", YM2203, 12000000 / 8) @@ -355,7 +355,7 @@ static MACHINE_CONFIG_DERIVED( powerinsa, powerins ) MCFG_MACHINE_START_OVERRIDE(powerins_state, powerinsa) - MCFG_OKIM6295_REPLACE("oki1", 990000, OKIM6295_PIN7_LOW) // pin7 not verified + MCFG_OKIM6295_REPLACE("oki1", 990000, PIN7_LOW) // pin7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, powerinsa_oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) @@ -679,7 +679,7 @@ ROM_END /* all supported sets give a 93.10.20 date */ -GAME( 1993, powerins, 0, powerins, powerins, driver_device, 0, ROT0, "Atlus", "Power Instinct (USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, powerinsj, powerins, powerins, powerinj, driver_device, 0, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, powerinsa, powerins, powerinsa, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, powerinsb, powerins, powerinsb, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, powerins, 0, powerins, powerins, powerins_state, 0, ROT0, "Atlus", "Power Instinct (USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, powerinsj, powerins, powerins, powerinj, powerins_state, 0, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, powerinsa, powerins, powerinsa, powerins, powerins_state, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, powerinsb, powerins, powerinsb, powerins, powerins_state, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pp01.cpp b/src/mame/drivers/pp01.cpp index e9ae497286d..02f20b09d15 100644 --- a/src/mame/drivers/pp01.cpp +++ b/src/mame/drivers/pp01.cpp @@ -198,7 +198,7 @@ static INPUT_PORTS_START( pp01 ) INPUT_PORTS_END /* Machine driver */ -static MACHINE_CONFIG_START( pp01, pp01_state ) +static MACHINE_CONFIG_START( pp01 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 2000000) MCFG_CPU_PROGRAM_MAP(pp01_mem) @@ -275,5 +275,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, pp01, 0, 0, pp01, pp01, driver_device, 0, "ZVT", "PP-01", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 198?, pp01, 0, 0, pp01, pp01, pp01_state, 0, "ZVT", "PP-01", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ppmast93.cpp b/src/mame/drivers/ppmast93.cpp index 0d06ff0da02..9d6cf7b7661 100644 --- a/src/mame/drivers/ppmast93.cpp +++ b/src/mame/drivers/ppmast93.cpp @@ -360,7 +360,7 @@ uint32_t ppmast93_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -static MACHINE_CONFIG_START( ppmast93, ppmast93_state ) +static MACHINE_CONFIG_START( ppmast93 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,5000000) /* 5 MHz */ MCFG_CPU_PROGRAM_MAP(ppmast93_cpu1_map) @@ -415,4 +415,4 @@ ROM_START( ppmast93 ) ROM_LOAD( "prom1.ug26", 0x200, 0x100, CRC(d979c64e) SHA1(172c9579013d58e35a5b4f732e360811ac36295e) ) ROM_END -GAME( 1993, ppmast93, 0, ppmast93, ppmast93, driver_device, 0, ROT0, "Electronic Devices S.R.L.", "Ping Pong Masters '93", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ppmast93, 0, ppmast93, ppmast93, ppmast93_state, 0, ROT0, "Electronic Devices S.R.L.", "Ping Pong Masters '93", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/prehisle.cpp b/src/mame/drivers/prehisle.cpp index 2810eb5afa3..835b7f1b046 100644 --- a/src/mame/drivers/prehisle.cpp +++ b/src/mame/drivers/prehisle.cpp @@ -196,7 +196,7 @@ GFXDECODE_END /******************************************************************************/ -static MACHINE_CONFIG_START( prehisle, prehisle_state ) +static MACHINE_CONFIG_START( prehisle ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_18MHz/2) /* verified on pcb */ @@ -348,10 +348,57 @@ ROM_START( gensitou ) ROM_LOAD( "gt4.4", 0x000000, 0x20000, CRC(85dfb9ec) SHA1(78c865e7ccffddb71dcddccab358fa945f521f25) ) ROM_END +// world bootleg using 64k*8 UVEPROMs, program and sound unchanged, sprites and background tilemaps altered +ROM_START( prehisleb ) + ROM_REGION( 0x40000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "u_h1.bin", 0x00000, 0x10000, CRC(04c1703b) SHA1(36aa9b8cd11621faa094af4dd2fb5a0e59318a5e) ) + ROM_LOAD16_BYTE( "u_h3.bin", 0x00001, 0x10000, CRC(62f04cd1) SHA1(9506e18a7847362128e06781e783fdb1f562e502) ) + ROM_LOAD16_BYTE( "u_j2.bin", 0x20000, 0x10000, CRC(7b12501d) SHA1(678d32f70d86807449ffe617c7c6e257d308d8af) ) + ROM_LOAD16_BYTE( "u_j3.bin", 0x20001, 0x10000, CRC(2a86f7c4) SHA1(5bca393f6edfcd41e1803ea1062497752fd400a9) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */ + ROM_LOAD( "u_e12.bin", 0x00000, 0x10000, CRC(80a4c093) SHA1(abe59e43259eb80b504bd5541f58cd0e5eb998ab) ) + + ROM_REGION( 0x008000, "chars", 0 ) + ROM_LOAD( "l_a17.bin", 0x00000, 0x08000, CRC(ac652412) SHA1(916c04c3a8a7bfb961313ab73c0a27d7f5e48de1) ) + + ROM_REGION( 0x040000, "bgtiles", 0 ) + ROM_LOAD( "l_b17.bin", 0x00000, 0x10000, CRC(65a22ffc) SHA1(0122c15f9c948bd6a12d44f71178d0a8b7f38c2e) ) + ROM_LOAD( "l_b16.bin", 0x10000, 0x10000, CRC(b1e1f527) SHA1(07d88d4a1f198bd5e37dcb1521904c5f8d851f4d) ) + ROM_LOAD( "l_b14.bin", 0x20000, 0x10000, CRC(28e94d40) SHA1(e77187040b5c5c7354088aa1173b23493cf26b78) ) + ROM_LOAD( "l_b13.bin", 0x30000, 0x10000, CRC(4dbb557a) SHA1(af07074dae121264018f2f6f3489cce243bfd3c0) ) + + ROM_REGION( 0x040000, "fgtiles", 0 ) + ROM_LOAD( "l_h17.bin", 0x00000, 0x10000, CRC(79c42316) SHA1(7a1c72c9146ce50d9c24ec4f3ae210103a95c2eb) ) + ROM_LOAD( "l_h15.bin", 0x10000, 0x10000, CRC(50e31fb0) SHA1(043181041354e3af07b6b32fc6192aae9e49d869) ) + ROM_LOAD( "l_f17.bin", 0x20000, 0x10000, CRC(2af1739d) SHA1(e17b88ee525247100b038f2200ad5a1ce4e71cb2) ) + ROM_LOAD( "l_f15.bin", 0x30000, 0x10000, CRC(cac11327) SHA1(c0feb6f3d9b8bba1dab66142fa44269bda579443) ) + + ROM_REGION( 0x0a0000, "sprites", 0 ) + ROM_LOAD( "u_k12.bin", 0x00000, 0x10000, CRC(4b0215f0) SHA1(340e68e9b9603829a200ad1ff7c0b373d39ca4dc) ) + ROM_LOAD( "u_k13.bin", 0x10000, 0x10000, CRC(68b8a698) SHA1(ff87c47cb600bacdb50b2e8ad87090a0e0146d12) ) + ROM_LOAD( "u_j4.bin", 0x20000, 0x10000, CRC(06ce7b57) SHA1(d19f35405b34bb43a2ca341c020c14de4c8474d6) ) + ROM_LOAD( "u_j5.bin", 0x30000, 0x10000, CRC(2ee8b401) SHA1(6f4a3ff75daae790872477a600c9e61332f74a46) ) + ROM_LOAD( "u_j7.bin", 0x40000, 0x10000, CRC(35656cbc) SHA1(bed0b2bfb9bd8487718a14d5388c61740d0e0e3a) ) + ROM_LOAD( "u_j8.bin", 0x50000, 0x10000, CRC(1e7e9336) SHA1(28b13ab7e9a0bb806af8fe3dbc2b100b93b29c5c) ) + ROM_LOAD( "u_j10.bin", 0x60000, 0x10000, CRC(785bf046) SHA1(5ab3f883643de6c59e764775b11b275989437fa2) ) + ROM_LOAD( "u_j11.bin", 0x70000, 0x10000, CRC(c306b9fa) SHA1(58c8d64dd7ae80b5d21d289757de442ac8e9264c) ) + ROM_LOAD( "u_j12.bin" ,0x80000, 0x10000, CRC(5ba5bbed) SHA1(6af3503e0277a926815afb973d67c4ad7a0427d1) ) + ROM_LOAD( "u_j13.bin", 0x90000, 0x10000, CRC(007dee47) SHA1(e45ce52a471783864cc2704b3b0462c32ddf7e52) ) // modified by bootleggers + + ROM_REGION( 0x10000, "bgtilemap", 0 ) /* background tilemaps */ + ROM_LOAD( "l_a6.bin", 0x00000, 0x10000, CRC(e2b9a44b) SHA1(4a1be44c19a724727218bbdc120bafbbe095747a) ) // modified by bootleggers + + ROM_REGION( 0x20000, "upd", 0 ) /* ADPCM samples */ + ROM_LOAD( "u_f14.bin", 0x00000, 0x10000, CRC(2fb32933) SHA1(2cea86dfe9a6a0b2de34c3c952c625ad30a7ebea) ) + ROM_LOAD( "u_j14.bin", 0x10000, 0x10000, CRC(32d5f7c9) SHA1(23abc82f83296c62320a047b9f63032a7f07bf6d) ) +ROM_END + /******************************************************************************/ -GAME( 1989, prehisle, 0, prehisle, prehisle, driver_device, 0, ROT0, "SNK", "Prehistoric Isle in 1930 (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, prehisleu,prehisle, prehisle, prehisle, driver_device, 0, ROT0, "SNK", "Prehistoric Isle in 1930 (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, prehislek,prehisle, prehisle, prehisle, driver_device, 0, ROT0, "SNK (Victor license)", "Prehistoric Isle in 1930 (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, gensitou, prehisle, prehisle, prehisle, driver_device, 0, ROT0, "SNK", "Genshi-Tou 1930's", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, prehisle, 0, prehisle, prehisle, prehisle_state, 0, ROT0, "SNK", "Prehistoric Isle in 1930 (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, prehisleu, prehisle, prehisle, prehisle, prehisle_state, 0, ROT0, "SNK", "Prehistoric Isle in 1930 (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, prehislek, prehisle, prehisle, prehisle, prehisle_state, 0, ROT0, "SNK (Victor license)", "Prehistoric Isle in 1930 (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, gensitou, prehisle, prehisle, prehisle, prehisle_state, 0, ROT0, "SNK", "Genshi-Tou 1930's", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, prehisleb, prehisle, prehisle, prehisle, prehisle_state, 0, ROT0, "bootleg", "Prehistoric Isle in 1930 (World, bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/prestige.cpp b/src/mame/drivers/prestige.cpp index 996f8ac0687..042b9264594 100644 --- a/src/mame/drivers/prestige.cpp +++ b/src/mame/drivers/prestige.cpp @@ -722,7 +722,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(prestige_state::irq_timer) m_maincpu->set_input_line(0, ASSERT_LINE); } -static MACHINE_CONFIG_START( prestige_base, prestige_state ) +static MACHINE_CONFIG_START( prestige_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_8MHz) // Z84C008 MCFG_CPU_PROGRAM_MAP(prestige_mem) @@ -910,34 +910,34 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1994, glcolor, 0, 0, glcolor, glcolor, driver_device, 0, "VTech", "Genius Leader Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1994, glscolor, glcolor, 0, glcolor, glcolor, driver_device, 0, "VTech", "Genius Leader Super Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1995, snotec, 0, 0, snotec, glcolor, driver_device, 0, "Bandai", "Super Note Club (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1996, snotecex, 0, 0, snotec, glcolor, driver_device, 0, "Bandai", "Super Note Club EX (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1996, glmcolor, 0, 0, glmcolor, glmcolor, driver_device, 0, "VTech", "Genius Leader Magic Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1997, gl6000sl, 0, 0, gl6000sl, prestige, driver_device, 0, "VTech", "Genius Leader 6000SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1998, snotecu, 0, 0, snotec, glcolor, driver_device, 0, "Bandai", "Super Note Club \xce\xbc (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1998, gl7007sl, 0, 0, gl7007sl, prestige, driver_device, 0, "VTech", "Genius Leader 7007SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1998, prestige, 0, 0, prestige, prestige, driver_device, 0, "VTech", "PreComputer Prestige Elite", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1999, gwnf, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Winner Notebook Fun (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1994, glcolor, 0, 0, glcolor, glcolor, prestige_state, 0, "VTech", "Genius Leader Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1994, glscolor, glcolor, 0, glcolor, glcolor, prestige_state, 0, "VTech", "Genius Leader Super Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1995, snotec, 0, 0, snotec, glcolor, prestige_state, 0, "Bandai", "Super Note Club (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1996, snotecex, 0, 0, snotec, glcolor, prestige_state, 0, "Bandai", "Super Note Club EX (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1996, glmcolor, 0, 0, glmcolor, glmcolor, prestige_state, 0, "VTech", "Genius Leader Magic Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1997, gl6000sl, 0, 0, gl6000sl, prestige, prestige_state, 0, "VTech", "Genius Leader 6000SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1998, snotecu, 0, 0, snotec, glcolor, prestige_state, 0, "Bandai", "Super Note Club \xce\xbc (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1998, gl7007sl, 0, 0, gl7007sl, prestige, prestige_state, 0, "VTech", "Genius Leader 7007SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1998, prestige, 0, 0, prestige, prestige, prestige_state, 0, "VTech", "PreComputer Prestige Elite", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1999, gwnf, 0, 0, prestige, prestige, prestige_state, 0, "VTech", "Genius Winner Notebook Fun (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // these systems need to be moved into a separate driver -COMP( 1996, gj4000, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Junior 4000 (Germany)", MACHINE_IS_SKELETON) -COMP( 1996, gkidabc, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius KID ABC Fan (Germany)", MACHINE_IS_SKELETON) -COMP( 1993, gjmovie, 0, 0, gjmovie, prestige, driver_device, 0, "VTech", "Genius Junior Movie (Germany)", MACHINE_IS_SKELETON) -COMP( 1996, gjrstar, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Junior Redstar(Germany)", MACHINE_IS_SKELETON) -COMP( 1996, gjrstar2, gjrstar, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Junior Redstar 2 (Germany)", MACHINE_IS_SKELETON) -COMP( 1998, gjrstar3, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Junior Redstar 3 (Germany)", MACHINE_IS_SKELETON) -COMP( 1998, gj5000, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Junior 5000 (Germany)", MACHINE_IS_SKELETON) -COMP( 2012, cars2lap, 0, 0, prestige, prestige, driver_device, 0, "VTech", "CARS 2 Laptop (Germany)", MACHINE_IS_SKELETON) +COMP( 1996, gj4000, 0, 0, prestige, prestige, prestige_state, 0, "VTech", "Genius Junior 4000 (Germany)", MACHINE_IS_SKELETON ) +COMP( 1996, gkidabc, 0, 0, prestige, prestige, prestige_state, 0, "VTech", "Genius KID ABC Fan (Germany)", MACHINE_IS_SKELETON ) +COMP( 1993, gjmovie, 0, 0, gjmovie, prestige, prestige_state, 0, "VTech", "Genius Junior Movie (Germany)", MACHINE_IS_SKELETON ) +COMP( 1996, gjrstar, 0, 0, prestige, prestige, prestige_state, 0, "VTech", "Genius Junior Redstar(Germany)", MACHINE_IS_SKELETON ) +COMP( 1996, gjrstar2, gjrstar, 0, prestige, prestige, prestige_state, 0, "VTech", "Genius Junior Redstar 2 (Germany)", MACHINE_IS_SKELETON ) +COMP( 1998, gjrstar3, 0, 0, prestige, prestige, prestige_state, 0, "VTech", "Genius Junior Redstar 3 (Germany)", MACHINE_IS_SKELETON ) +COMP( 1998, gj5000, 0, 0, prestige, prestige, prestige_state, 0, "VTech", "Genius Junior 5000 (Germany)", MACHINE_IS_SKELETON ) +COMP( 2012, cars2lap, 0, 0, prestige, prestige, prestige_state, 0, "VTech", "CARS 2 Laptop (Germany)", MACHINE_IS_SKELETON ) // gl6600cx use a NSC1028 system-on-a-chip designed by National Semiconductor specifically for VTech // http://web.archive.org/web/19991127134657/http://www.national.com/news/item/0,1735,425,00.html -COMP( 1999, gl6600cx, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Leader 6600CX (Germany)", MACHINE_IS_SKELETON) +COMP( 1999, gl6600cx, 0, 0, prestige, prestige, prestige_state, 0, "VTech", "Genius Leader 6600CX (Germany)", MACHINE_IS_SKELETON ) // TODO: move into a separate driver // Prin-C use a Fujitsu MB90611A MCU (F2MC-16L) -COMP( ????, princ, 0, 0, prestige , prestige , driver_device, 0, "Tomy", "Prin-C", MACHINE_IS_SKELETON) +COMP( ????, princ, 0, 0, prestige , prestige, prestige_state, 0, "Tomy", "Prin-C", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/primo.cpp b/src/mame/drivers/primo.cpp index 3b87115ed8e..56fe2044328 100644 --- a/src/mame/drivers/primo.cpp +++ b/src/mame/drivers/primo.cpp @@ -240,7 +240,7 @@ static const struct CassetteOptions primo_cassette_options = { 22050 /* sample frequency */ }; -static MACHINE_CONFIG_START( primoa32, primo_state ) +static MACHINE_CONFIG_START( primoa32 ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", Z80, 2500000 ) MCFG_CPU_PROGRAM_MAP( primo32_mem) @@ -373,11 +373,11 @@ ROM_START( primoc64 ) ROM_LOAD( "c64_4.rom", 0x13000, 0x1000, CRC(3770e3e6) SHA1(792cc71d8f89eb447f94aded5afc70d626a26030) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP ( 1984, primoa32, 0, 0, primoa32, primo, primo_state, primo32, "Microkey", "Primo A-32" , 0) -COMP ( 1984, primoa48, primoa32, 0, primoa48, primo, primo_state, primo48, "Microkey", "Primo A-48" , 0) -COMP ( 1984, primoa64, primoa32, 0, primoa64, primo, primo_state, primo64, "Microkey", "Primo A-64" , 0) -COMP ( 1984, primob32, primoa32, 0, primob32, primo, primo_state, primo32, "Microkey", "Primo B-32" , 0) -COMP ( 1984, primob48, primoa32, 0, primob48, primo, primo_state, primo48, "Microkey", "Primo B-48" , 0) -COMP ( 1984, primob64, primoa32, 0, primob64, primo, primo_state, primo64, "Microkey", "Primo B-64" , 0) -COMP ( 1984, primoc64, primoa32, 0, primoc64, primo, primo_state, primo64, "Microkey", "Primo C-64" , MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP ( 1984, primoa32, 0, 0, primoa32, primo, primo_state, primo32, "Microkey", "Primo A-32" , 0 ) +COMP ( 1984, primoa48, primoa32, 0, primoa48, primo, primo_state, primo48, "Microkey", "Primo A-48" , 0 ) +COMP ( 1984, primoa64, primoa32, 0, primoa64, primo, primo_state, primo64, "Microkey", "Primo A-64" , 0 ) +COMP ( 1984, primob32, primoa32, 0, primob32, primo, primo_state, primo32, "Microkey", "Primo B-32" , 0 ) +COMP ( 1984, primob48, primoa32, 0, primob48, primo, primo_state, primo48, "Microkey", "Primo B-48" , 0 ) +COMP ( 1984, primob64, primoa32, 0, primob64, primo, primo_state, primo64, "Microkey", "Primo B-64" , 0 ) +COMP ( 1984, primoc64, primoa32, 0, primoc64, primo, primo_state, primo64, "Microkey", "Primo C-64" , MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pro80.cpp b/src/mame/drivers/pro80.cpp index 18323aad76a..a735c12ac8d 100644 --- a/src/mame/drivers/pro80.cpp +++ b/src/mame/drivers/pro80.cpp @@ -164,7 +164,7 @@ void pro80_state::machine_reset() m_cass_in = 0; } -static MACHINE_CONFIG_START( pro80, pro80_state ) +static MACHINE_CONFIG_START( pro80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz / 2) MCFG_CPU_PROGRAM_MAP(pro80_mem) @@ -193,5 +193,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, pro80, 0, 0, pro80, pro80, driver_device, 0, "Protec", "Pro-80", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, pro80, 0, 0, pro80, pro80, pro80_state, 0, "Protec", "Pro-80", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/proconn.cpp b/src/mame/drivers/proconn.cpp index 6abac672b61..2b9ee0965e5 100644 --- a/src/mame/drivers/proconn.cpp +++ b/src/mame/drivers/proconn.cpp @@ -182,7 +182,7 @@ public: protected: // devices - optional_device m_vfd; + optional_device m_vfd; required_device m_maincpu; required_device m_z80pio_1; required_device m_z80pio_2; @@ -318,7 +318,7 @@ void proconn_state::machine_reset() m_vfd->reset(); // reset display1 } -static MACHINE_CONFIG_START( proconn, proconn_state ) +static MACHINE_CONFIG_START( proconn ) MCFG_CPU_ADD("maincpu", Z80, 4000000) /* ?? Mhz */ MCFG_Z80_DAISY_CHAIN(z80_daisy_chain) MCFG_CPU_PROGRAM_MAP(proconn_map) diff --git a/src/mame/drivers/prodigy.cpp b/src/mame/drivers/prodigy.cpp index 641a5b8a3f3..292c4cef699 100644 --- a/src/mame/drivers/prodigy.cpp +++ b/src/mame/drivers/prodigy.cpp @@ -123,9 +123,9 @@ private: #if TTL74164DEV required_device m_shift; #else - required_device m_bcd; - required_device m_cb1; - required_device m_cb2; + required_device m_bcd; + required_device m_cb1; + required_device m_cb2; #endif uint8_t m_digit; void update_bcd(); @@ -218,7 +218,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( prodigy ) INPUT_PORTS_END -static MACHINE_CONFIG_START( prodigy, prodigy_state ) +static MACHINE_CONFIG_START( prodigy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(maincpu_map) @@ -293,5 +293,5 @@ ROM_START(prodigy) ROM_LOAD("0x2000.bin", 0x0000, 0x02000, CRC(8d60345a) SHA1(fff18ff12e1b1be91f8eac1178605a682564eff2)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT, COMPANY, FULLNAME, FLAGS */ -CONS( 1981, prodigy, 0, 0, prodigy, prodigy, driver_device, 0, "Applied Concepts Inc", "ACI Destiny Prodigy", MACHINE_IS_SKELETON) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1981, prodigy, 0, 0, prodigy, prodigy, prodigy_state, 0, "Applied Concepts Inc", "ACI Destiny Prodigy", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/prof180x.cpp b/src/mame/drivers/prof180x.cpp index 6b4119ec559..60dd5623a5a 100644 --- a/src/mame/drivers/prof180x.cpp +++ b/src/mame/drivers/prof180x.cpp @@ -234,7 +234,7 @@ void prof180x_state::machine_reset() } } -static MACHINE_CONFIG_START( prof180x, prof180x_state ) +static MACHINE_CONFIG_START( prof180x ) /* basic machine hardware */ MCFG_CPU_ADD(HD64180_TAG, Z80, XTAL_9_216MHz) MCFG_CPU_PROGRAM_MAP(prof180x_mem) @@ -326,6 +326,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, prof180x, 0, 0, prof180x, prof180x, driver_device, 0, "Conitec Datensysteme", "PROF-180X", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1992, prof181x, prof180x,0, prof180x, prof180x, driver_device, 0, "Conitec Datensysteme", "PROF-181X", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1986, prof180x, 0, 0, prof180x, prof180x, prof180x_state, 0, "Conitec Datensysteme", "PROF-180X", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1992, prof181x, prof180x,0, prof180x, prof180x, prof180x_state, 0, "Conitec Datensysteme", "PROF-181X", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/prof80.cpp b/src/mame/drivers/prof80.cpp index 0b94343cdcd..98441b1cbb3 100644 --- a/src/mame/drivers/prof80.cpp +++ b/src/mame/drivers/prof80.cpp @@ -501,7 +501,7 @@ void prof80_state::machine_reset() // MACHINE_CONFIG( prof80 ) //------------------------------------------------- -static MACHINE_CONFIG_START( prof80, prof80_state ) +static MACHINE_CONFIG_START( prof80 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_6MHz) MCFG_CPU_PROGRAM_MAP(prof80_mem) @@ -563,5 +563,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1984, prof80, 0, 0, prof80, prof80, driver_device, 0, "Conitec Datensysteme", "PROF-80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, prof80, 0, 0, prof80, prof80, prof80_state, 0, "Conitec Datensysteme", "PROF-80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/progolf.cpp b/src/mame/drivers/progolf.cpp index 5534af9c152..8df11e55821 100644 --- a/src/mame/drivers/progolf.cpp +++ b/src/mame/drivers/progolf.cpp @@ -424,7 +424,7 @@ PALETTE_INIT_MEMBER(progolf_state, progolf) } } -static MACHINE_CONFIG_START( progolf, progolf_state ) +static MACHINE_CONFIG_START( progolf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", DECO_222, 3000000/2) /* guess, 3 Mhz makes the game to behave worse? */ MCFG_CPU_PROGRAM_MAP(main_cpu) @@ -517,6 +517,6 @@ ROM_END // this uses DECO222 style encryption -GAME( 1981, progolf, 0, progolf, progolf, driver_device, 0, ROT270, "Data East Corporation", "18 Holes Pro Golf (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, progolf, 0, progolf, progolf, progolf_state, 0, ROT270, "Data East Corporation", "18 Holes Pro Golf (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // this uses DECO CPU-6 as custom module CPU (the same as Zoar, are we sure? our Zoar has different encryption, CPU-7 style) -GAME( 1981, progolfa, progolf, progolfa,progolf, driver_device, 0, ROT270, "Data East Corporation", "18 Holes Pro Golf (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, progolfa, progolf, progolfa, progolf, progolf_state, 0, ROT270, "Data East Corporation", "18 Holes Pro Golf (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/prophet600.cpp b/src/mame/drivers/prophet600.cpp index 5d4d01c3bf6..a03acd14202 100644 --- a/src/mame/drivers/prophet600.cpp +++ b/src/mame/drivers/prophet600.cpp @@ -262,7 +262,7 @@ DRIVER_INIT_MEMBER(prophet600_state, prophet600) } // master crystal is 8 MHz, all clocks derived from there -static MACHINE_CONFIG_START( prophet600, prophet600_state ) +static MACHINE_CONFIG_START( prophet600 ) MCFG_CPU_ADD(MAINCPU_TAG, Z80, XTAL_8MHz/2) MCFG_CPU_PROGRAM_MAP(cpu_map) MCFG_CPU_IO_MAP(io_map) diff --git a/src/mame/drivers/proteus3.cpp b/src/mame/drivers/proteus3.cpp index 670700347e8..abf2bf52bdb 100644 --- a/src/mame/drivers/proteus3.cpp +++ b/src/mame/drivers/proteus3.cpp @@ -76,7 +76,7 @@ public: DECLARE_WRITE_LINE_MEMBER(ca2_w); DECLARE_WRITE8_MEMBER(video_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE_LINE_MEMBER(acia1_txdata_w); DECLARE_WRITE_LINE_MEMBER(acia1_clock_w); DECLARE_WRITE_LINE_MEMBER(acia2_clock_w); @@ -128,7 +128,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START(proteus3) INPUT_PORTS_END -WRITE8_MEMBER( proteus3_state::kbd_put ) +void proteus3_state::kbd_put(u8 data) { if (data == 0x08) data = 0x0f; // take care of backspace (bios 1 and 2) @@ -317,7 +317,7 @@ void proteus3_state::machine_reset() Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( proteus3, proteus3_state ) +static MACHINE_CONFIG_START( proteus3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_3_579545MHz) /* Divided by 4 internally */ MCFG_CPU_PROGRAM_MAP(proteus3_mem) @@ -339,7 +339,7 @@ static MACHINE_CONFIG_START( proteus3, proteus3_state ) MCFG_PIA_CA2_HANDLER(WRITELINE(proteus3_state, ca2_w)) MCFG_PIA_IRQB_HANDLER(INPUTLINE("maincpu", M6800_IRQ_LINE)) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(proteus3_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(proteus3_state, kbd_put)) /* cassette */ MCFG_DEVICE_ADD ("acia1", ACIA6850, 0) @@ -409,5 +409,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, proteus3, 0, 0, proteus3, proteus3, driver_device, 0, "Proteus International", "Proteus III", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1978, proteus3, 0, 0, proteus3, proteus3, proteus3_state, 0, "Proteus International", "Proteus III", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/ps2.cpp b/src/mame/drivers/ps2.cpp index 9f37fba46da..bdc22c86a48 100644 --- a/src/mame/drivers/ps2.cpp +++ b/src/mame/drivers/ps2.cpp @@ -17,7 +17,7 @@ public: m_maincpu(*this, "maincpu"), m_mb(*this, "mb"), m_ram(*this, RAM_TAG) - { } + { } required_device m_maincpu; required_device m_mb; required_device m_ram; @@ -66,7 +66,7 @@ void ps2_state::machine_start() } } -static MACHINE_CONFIG_START( ps2m30286, ps2_state ) +static MACHINE_CONFIG_START( ps2m30286 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80286, 10000000) MCFG_CPU_PROGRAM_MAP(ps2_16_map) @@ -90,7 +90,7 @@ static MACHINE_CONFIG_START( ps2m30286, ps2_state ) MCFG_RAM_EXTRA_OPTIONS("2M,4M,8M,15M") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ps2386, ps2_state ) +static MACHINE_CONFIG_START( ps2386 ) MCFG_CPU_ADD("maincpu", I386, 12000000) MCFG_CPU_PROGRAM_MAP(ps2_32_map) MCFG_CPU_IO_MAP(ps2_32_io) @@ -245,11 +245,11 @@ ROM_START( i8580111 ) ROM_LOAD16_BYTE( "15f6639.bin", 0x00001, 0x10000, CRC(82cf0f7d) SHA1(13bb39225757b89749af70e881af0228673dbe0c)) ROM_END -COMP ( 1990, i8530h31, ibm5170, 0, ps2m30286, 0, driver_device, 0, "International Business Machines", "IBM PS/2 8530-H31 (Model 30/286)", MACHINE_NOT_WORKING ) -COMP ( 1988, i8530286, ibm5170, 0, ps2m30286, 0, driver_device, 0, "International Business Machines", "IBM PS/2 Model 30-286", MACHINE_NOT_WORKING ) -COMP ( 198?, i8535043, ibm5170, 0, ps2386, 0, driver_device, 0, "International Business Machines", "IBM PS/2 8535-043 (Model 35)", MACHINE_NOT_WORKING ) -COMP ( 198?, i8550021, ibm5170, 0, ps2386, 0, driver_device, 0, "International Business Machines", "IBM PS/2 8550-021 (Model 50)", MACHINE_NOT_WORKING ) -COMP ( 198?, i8550061, ibm5170, 0, ps2386, 0, driver_device, 0, "International Business Machines", "IBM PS/2 8550-061 (Model 50Z)", MACHINE_NOT_WORKING ) -COMP ( 1989, i8555081, ibm5170, 0, ps2386, 0, driver_device, 0, "International Business Machines", "IBM PS/2 8550-081 (Model 55SX)", MACHINE_NOT_WORKING ) -COMP ( 198?, i8580071, ibm5170, 0, ps2386, 0, driver_device, 0, "International Business Machines", "IBM PS/2 8580-071 (Model 80)", MACHINE_NOT_WORKING ) -COMP ( 198?, i8580111, ibm5170, 0, ps2386, 0, driver_device, 0, "International Business Machines", "IBM PS/2 8580-111 (Model 80)", MACHINE_NOT_WORKING ) +COMP ( 1990, i8530h31, ibm5170, 0, ps2m30286, 0, ps2_state, 0, "International Business Machines", "IBM PS/2 8530-H31 (Model 30/286)", MACHINE_NOT_WORKING ) +COMP ( 1988, i8530286, ibm5170, 0, ps2m30286, 0, ps2_state, 0, "International Business Machines", "IBM PS/2 Model 30-286", MACHINE_NOT_WORKING ) +COMP ( 198?, i8535043, ibm5170, 0, ps2386, 0, ps2_state, 0, "International Business Machines", "IBM PS/2 8535-043 (Model 35)", MACHINE_NOT_WORKING ) +COMP ( 198?, i8550021, ibm5170, 0, ps2386, 0, ps2_state, 0, "International Business Machines", "IBM PS/2 8550-021 (Model 50)", MACHINE_NOT_WORKING ) +COMP ( 198?, i8550061, ibm5170, 0, ps2386, 0, ps2_state, 0, "International Business Machines", "IBM PS/2 8550-061 (Model 50Z)", MACHINE_NOT_WORKING ) +COMP ( 1989, i8555081, ibm5170, 0, ps2386, 0, ps2_state, 0, "International Business Machines", "IBM PS/2 8550-081 (Model 55SX)", MACHINE_NOT_WORKING ) +COMP ( 198?, i8580071, ibm5170, 0, ps2386, 0, ps2_state, 0, "International Business Machines", "IBM PS/2 8580-071 (Model 80)", MACHINE_NOT_WORKING ) +COMP ( 198?, i8580111, ibm5170, 0, ps2386, 0, ps2_state, 0, "International Business Machines", "IBM PS/2 8580-111 (Model 80)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pse.cpp b/src/mame/drivers/pse.cpp index 0f9edfa6000..e09712ffca0 100644 --- a/src/mame/drivers/pse.cpp +++ b/src/mame/drivers/pse.cpp @@ -55,7 +55,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -98,7 +98,7 @@ void pse_state::video_start() { } -static MACHINE_CONFIG_START( pse, pse_state ) +static MACHINE_CONFIG_START( pse ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -152,7 +152,7 @@ ROM_START( dpatrol ) ROM_LOAD( "bd1.e2", 0x0400, 0x0400, CRC(256b3320) SHA1(712573e3d9625a84c54bbe2e3edafb8879a14b2e)) // Computer program game code. 6341-1 or 82S181 according to Desert Patrol schematics ROM_LOAD( "bd2.l4", 0x0800, 0x0200, CRC(bc87c648) SHA1(c4709d155aa50cc87146abd152a11de618cfd64c)) // PROM 1 contains aircraft target images and explosion image. PCB has 82S141; schematics show 6341-1 - ROM_LOAD( "bd2.l1", 0x0A00, 0x0200, CRC(4ddcc237) SHA1(6bfad6a8bf8387e93c0bb1a04b647690b3701d54)) // PROM 2 contains parachute and man, falling man. PCB has 82S141; schematics show 6341-1 + ROM_LOAD( "bd2.l1", 0x0A00, 0x0200, CRC(4ddcc237) SHA1(6bfad6a8bf8387e93c0bb1a04b647690b3701d54)) // PROM 2 contains parachute and man, falling man. PCB has 82S141; schematics show 6341-1 (from dpatrola, but expected to match) ROM_LOAD( "bd2.h7", 0x0C00, 0x0020, NO_DUMP) // Contains PROM address codes and image speeds. Each image has its own speed and address block in the image PROM. Chip is 82S123 @@ -204,9 +204,9 @@ ROM_START( gametree ) ROM_END -GAME( 1976, bazooka, 0, pse, 0, driver_device, 0, ROT0, "Project Support Engineering", "Bazooka [TTL]", MACHINE_IS_SKELETON ) -GAME( 1977, bazookabr, bazooka, pse, 0, driver_device, 0, ROT0, "Taito do Brasil", "Bazooka (Brazil) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1977, dpatrol, 0, pse, 0, driver_device, 0, ROT0, "Project Support Engineering", "Desert Patrol [TTL]", MACHINE_IS_SKELETON ) -GAME( 1977, dpatrola, dpatrol, pse, 0, driver_device, 0, ROT0, "Project Support Engineering (Telegames license)", "Desert Patrol (set 2) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1978, gametree, 0, pse, 0, driver_device, 0, ROT0, "Project Support Engineering", "Game Tree [TTL]", MACHINE_IS_SKELETON ) -//GAME( 1976, knightar, 0, pse, 0, driver_device, 0, ROT0, "Project Support Engineering", "Knights in Armor [TTL]", MACHINE_IS_SKELETON ) +GAME( 1976, bazooka, 0, pse, 0, pse_state, 0, ROT0, "Project Support Engineering", "Bazooka [TTL]", MACHINE_IS_SKELETON ) +GAME( 1977, bazookabr, bazooka, pse, 0, pse_state, 0, ROT0, "Taito do Brasil", "Bazooka (Brazil) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1977, dpatrol, 0, pse, 0, pse_state, 0, ROT0, "Project Support Engineering", "Desert Patrol [TTL]", MACHINE_IS_SKELETON ) +GAME( 1977, dpatrola, dpatrol, pse, 0, pse_state, 0, ROT0, "Project Support Engineering (Telegames license)", "Desert Patrol (set 2) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1978, gametree, 0, pse, 0, pse_state, 0, ROT0, "Project Support Engineering", "Game Tree [TTL]", MACHINE_IS_SKELETON ) +//GAME( 1976, knightar, 0, pse, 0, pse_state, 0, ROT0, "Project Support Engineering", "Knights in Armor [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/psikyo.cpp b/src/mame/drivers/psikyo.cpp index 1f58d334425..3b514e6bd1c 100644 --- a/src/mame/drivers/psikyo.cpp +++ b/src/mame/drivers/psikyo.cpp @@ -1028,7 +1028,7 @@ void psikyo_state::machine_reset() ***************************************************************************/ -static MACHINE_CONFIG_START( sngkace, psikyo_state ) +static MACHINE_CONFIG_START( sngkace ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_32MHz/2) /* verified on pcb */ @@ -1047,7 +1047,7 @@ static MACHINE_CONFIG_START( sngkace, psikyo_state ) MCFG_SCREEN_SIZE(320, 256) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1) MCFG_SCREEN_UPDATE_DRIVER(psikyo_state, screen_update_psikyo) - MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(psikyo_state, screen_vblank_psikyo)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", psikyo) @@ -1071,7 +1071,7 @@ MACHINE_CONFIG_END ***************************************************************************/ -static MACHINE_CONFIG_START( gunbird, psikyo_state ) +static MACHINE_CONFIG_START( gunbird ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, 16000000) @@ -1090,7 +1090,7 @@ static MACHINE_CONFIG_START( gunbird, psikyo_state ) MCFG_SCREEN_SIZE(320, 256) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1) MCFG_SCREEN_UPDATE_DRIVER(psikyo_state, screen_update_psikyo) - MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(psikyo_state, screen_vblank_psikyo)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", psikyo) @@ -1107,7 +1107,7 @@ static MACHINE_CONFIG_START( gunbird, psikyo_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( s1945bl, psikyo_state ) /* Bootleg hardware based on the unprotected Japanese Strikers 1945 set */ +static MACHINE_CONFIG_START( s1945bl ) /* Bootleg hardware based on the unprotected Japanese Strikers 1945 set */ /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, 16000000) @@ -1122,7 +1122,7 @@ static MACHINE_CONFIG_START( s1945bl, psikyo_state ) /* Bootleg hardware based o MCFG_SCREEN_SIZE(320, 256) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1) MCFG_SCREEN_UPDATE_DRIVER(psikyo_state, screen_update_psikyo_bootleg) - MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(psikyo_state, screen_vblank_psikyo)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", psikyo) @@ -1134,7 +1134,7 @@ static MACHINE_CONFIG_START( s1945bl, psikyo_state ) /* Bootleg hardware based o /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_LOW) // ?? clock + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_LOW) // ?? clock MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, s1945bl_oki_map) MACHINE_CONFIG_END @@ -1146,7 +1146,7 @@ MACHINE_CONFIG_END ***************************************************************************/ -static MACHINE_CONFIG_START( s1945, psikyo_state ) +static MACHINE_CONFIG_START( s1945 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, 16000000) @@ -1167,7 +1167,7 @@ static MACHINE_CONFIG_START( s1945, psikyo_state ) MCFG_SCREEN_SIZE(320, 256) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 256-32-1) MCFG_SCREEN_UPDATE_DRIVER(psikyo_state, screen_update_psikyo) - MCFG_SCREEN_VBLANK_DRIVER(psikyo_state, screen_eof_psikyo) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(psikyo_state, screen_vblank_psikyo)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", psikyo) @@ -2008,23 +2008,23 @@ DRIVER_INIT_MEMBER(psikyo_state,s1945bl) ***************************************************************************/ -GAME( 1993, samuraia, 0, sngkace, samuraia, psikyo_state, sngkace, ROT270, "Psikyo", "Samurai Aces (World)", MACHINE_SUPPORTS_SAVE ) // Banpresto? -GAME( 1993, sngkace, samuraia, sngkace, sngkace, psikyo_state, sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // Banpresto? -GAME( 1993, sngkacea, samuraia, sngkace, sngkace, psikyo_state, sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) // Banpresto? +GAME( 1993, samuraia, 0, sngkace, samuraia, psikyo_state, sngkace, ROT270, "Psikyo", "Samurai Aces (World)", MACHINE_SUPPORTS_SAVE ) // Banpresto? +GAME( 1993, sngkace, samuraia, sngkace, sngkace, psikyo_state, sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // Banpresto? +GAME( 1993, sngkacea, samuraia, sngkace, sngkace, psikyo_state, sngkace, ROT270, "Psikyo", "Sengoku Ace (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) // Banpresto? -GAME( 1994, gunbird, 0, gunbird, gunbird, psikyo_state, gunbird, ROT270, "Psikyo", "Gunbird (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, gunbirdk, gunbird, gunbird, gunbirdj, psikyo_state, gunbird, ROT270, "Psikyo", "Gunbird (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, gunbirdj, gunbird, gunbird, gunbirdj, psikyo_state, gunbird, ROT270, "Psikyo", "Gunbird (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, gunbird, 0, gunbird, gunbird, psikyo_state, gunbird, ROT270, "Psikyo", "Gunbird (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, gunbirdk, gunbird, gunbird, gunbirdj, psikyo_state, gunbird, ROT270, "Psikyo", "Gunbird (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, gunbirdj, gunbird, gunbird, gunbirdj, psikyo_state, gunbird, ROT270, "Psikyo", "Gunbird (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, btlkroad, 0, gunbird, btlkroad, psikyo_state, gunbird, ROT0, "Psikyo", "Battle K-Road", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, btlkroadk, btlkroad,gunbird, btlkroad, psikyo_state, gunbird, ROT0, "Psikyo", "Battle K-Road (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // game code is still multi-region, but sound rom appears to be Korea specific at least +GAME( 1994, btlkroad, 0, gunbird, btlkroad, psikyo_state, gunbird, ROT0, "Psikyo", "Battle K-Road", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, btlkroadk, btlkroad, gunbird, btlkroad, psikyo_state, gunbird, ROT0, "Psikyo", "Battle K-Road (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // game code is still multi-region, but sound rom appears to be Korea specific at least -GAME( 1995, s1945, 0, s1945, s1945, psikyo_state, s1945, ROT270, "Psikyo", "Strikers 1945 (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, s1945a, s1945, s1945, s1945a, psikyo_state, s1945a, ROT270, "Psikyo", "Strikers 1945 (Japan / World)", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World -GAME( 1995, s1945j, s1945, s1945, s1945j, psikyo_state, s1945j, ROT270, "Psikyo", "Strikers 1945 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, s1945jn, s1945, gunbird, s1945j, psikyo_state, s1945jn, ROT270, "Psikyo", "Strikers 1945 (Japan, unprotected)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, s1945k, s1945, s1945, s1945j, psikyo_state, s1945, ROT270, "Psikyo", "Strikers 1945 (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, s1945bl, s1945, s1945bl, s1945bl, psikyo_state, s1945bl, ROT270, "bootleg","Strikers 1945 (Hong Kong, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, s1945, 0, s1945, s1945, psikyo_state, s1945, ROT270, "Psikyo", "Strikers 1945 (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, s1945a, s1945, s1945, s1945a, psikyo_state, s1945a, ROT270, "Psikyo", "Strikers 1945 (Japan / World)", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World +GAME( 1995, s1945j, s1945, s1945, s1945j, psikyo_state, s1945j, ROT270, "Psikyo", "Strikers 1945 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, s1945jn, s1945, gunbird, s1945j, psikyo_state, s1945jn, ROT270, "Psikyo", "Strikers 1945 (Japan, unprotected)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, s1945k, s1945, s1945, s1945j, psikyo_state, s1945, ROT270, "Psikyo", "Strikers 1945 (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, s1945bl, s1945, s1945bl, s1945bl, psikyo_state, s1945bl, ROT270, "bootleg", "Strikers 1945 (Hong Kong, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, tengai, 0, s1945, tengai, psikyo_state, tengai, ROT0, "Psikyo", "Tengai (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, tengaij, tengai, s1945, tengaij, psikyo_state, tengai, ROT0, "Psikyo", "Sengoku Blade: Sengoku Ace Episode II / Tengai", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World +GAME( 1996, tengai, 0, s1945, tengai, psikyo_state, tengai, ROT0, "Psikyo", "Tengai (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, tengaij, tengai, s1945, tengaij, psikyo_state, tengai, ROT0, "Psikyo", "Sengoku Blade: Sengoku Ace Episode II / Tengai", MACHINE_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World diff --git a/src/mame/drivers/psikyo4.cpp b/src/mame/drivers/psikyo4.cpp index f7a4f1addfd..6d5b2987b92 100644 --- a/src/mame/drivers/psikyo4.cpp +++ b/src/mame/drivers/psikyo4.cpp @@ -652,7 +652,7 @@ void psikyo4_state::machine_reset() m_oldbrt2 = -1; } -static MACHINE_CONFIG_START( ps4big, psikyo4_state ) +static MACHINE_CONFIG_START( ps4big ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH2, MASTER_CLOCK/2) @@ -913,12 +913,12 @@ ROM_START( hotdebut ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS */ -GAME( 1997, hotgmck, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Taisen Hot Gimmick (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, hgkairak, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Taisen Hot Gimmick Kairakuten (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, hotgmck3, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Taisen Hot Gimmick 3 Digital Surfing (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, hotgm4ev, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Taisen Hot Gimmick 4 Ever (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, hotgmcki, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Mahjong Hot Gimmick Integral (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, loderndf, 0, ps4small, loderndf, driver_device, 0, ROT0, "Psikyo", "Lode Runner - The Dig Fight (ver. B)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, loderndfa,loderndf, ps4small, loderndf, driver_device, 0, ROT0, "Psikyo", "Lode Runner - The Dig Fight (ver. A)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, hotdebut, 0, ps4small, hotdebut, driver_device, 0, ROT0, "MOSS / Psikyo", "Quiz de Idol! Hot Debut (Japan)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS +GAME( 1997, hotgmck, 0, ps4big, hotgmck, psikyo4_state, 0, ROT0, "Psikyo", "Taisen Hot Gimmick (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, hgkairak, 0, ps4big, hotgmck, psikyo4_state, 0, ROT0, "Psikyo", "Taisen Hot Gimmick Kairakuten (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, hotgmck3, 0, ps4big, hotgmck, psikyo4_state, 0, ROT0, "Psikyo", "Taisen Hot Gimmick 3 Digital Surfing (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, hotgm4ev, 0, ps4big, hotgmck, psikyo4_state, 0, ROT0, "Psikyo", "Taisen Hot Gimmick 4 Ever (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, hotgmcki, 0, ps4big, hotgmck, psikyo4_state, 0, ROT0, "Psikyo", "Mahjong Hot Gimmick Integral (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, loderndf, 0, ps4small, loderndf, psikyo4_state, 0, ROT0, "Psikyo", "Lode Runner - The Dig Fight (ver. B)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, loderndfa,loderndf, ps4small, loderndf, psikyo4_state, 0, ROT0, "Psikyo", "Lode Runner - The Dig Fight (ver. A)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, hotdebut, 0, ps4small, hotdebut, psikyo4_state, 0, ROT0, "MOSS / Psikyo", "Quiz de Idol! Hot Debut (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/psikyosh.cpp b/src/mame/drivers/psikyosh.cpp index 5d31831df47..ae60f086231 100644 --- a/src/mame/drivers/psikyosh.cpp +++ b/src/mame/drivers/psikyosh.cpp @@ -775,7 +775,7 @@ void psikyosh_state::machine_start() } -static MACHINE_CONFIG_START( psikyo3v1, psikyosh_state ) +static MACHINE_CONFIG_START( psikyo3v1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH2, MASTER_CLOCK/2) @@ -795,7 +795,7 @@ static MACHINE_CONFIG_START( psikyo3v1, psikyosh_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(psikyosh_state, screen_update_psikyosh) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram32_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram32_device, vblank_copy_rising)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", psikyosh) MCFG_PALETTE_ADD("palette", 0x5000/4) @@ -1218,23 +1218,23 @@ DRIVER_INIT_MEMBER(psikyosh_state,mjgtaste) } -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS */ /* ps3-v1 */ -GAME( 1997, soldivid, 0, psikyo3v1, soldivid, psikyosh_state, ps3, ROT0, "Psikyo", "Sol Divide - The Sword Of Darkness", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, soldividk, soldivid, psikyo3v1, soldividk,psikyosh_state, ps3, ROT0, "Psikyo", "Sol Divide - The Sword Of Darkness (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, s1945ii, 0, psikyo3v1, s1945ii, psikyosh_state, ps3, ROT270, "Psikyo", "Strikers 1945 II", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, daraku, 0, psikyo3v1, daraku, psikyosh_state, ps3, ROT0, "Psikyo", "Daraku Tenshi - The Fallen Angels", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sbomber, 0, psikyo3v1, sbomberb, psikyosh_state, ps3, ROT270, "Psikyo", "Space Bomber (ver. B)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sbombera, sbomber, psikyo3v1, sbomberb, psikyosh_state, ps3, ROT270, "Psikyo", "Space Bomber", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, soldivid, 0, psikyo3v1, soldivid, psikyosh_state, ps3, ROT0, "Psikyo", "Sol Divide - The Sword Of Darkness", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, soldividk, soldivid, psikyo3v1, soldividk,psikyosh_state, ps3, ROT0, "Psikyo", "Sol Divide - The Sword Of Darkness (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, s1945ii, 0, psikyo3v1, s1945ii, psikyosh_state, ps3, ROT270, "Psikyo", "Strikers 1945 II", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, daraku, 0, psikyo3v1, daraku, psikyosh_state, ps3, ROT0, "Psikyo", "Daraku Tenshi - The Fallen Angels", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sbomber, 0, psikyo3v1, sbomberb, psikyosh_state, ps3, ROT270, "Psikyo", "Space Bomber (ver. B)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sbombera, sbomber, psikyo3v1, sbomberb, psikyosh_state, ps3, ROT270, "Psikyo", "Space Bomber", MACHINE_SUPPORTS_SAVE ) /* ps5 */ -GAME( 1998, gunbird2, 0, psikyo5, gunbird2, psikyosh_state, ps5, ROT270, "Psikyo", "Gunbird 2", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, s1945iii, 0, psikyo5, s1945iii, psikyosh_state, ps5, ROT270, "Psikyo", "Strikers 1945 III (World) / Strikers 1999 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, gunbird2, 0, psikyo5, gunbird2, psikyosh_state, ps5, ROT270, "Psikyo", "Gunbird 2", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, s1945iii, 0, psikyo5, s1945iii, psikyosh_state, ps5, ROT270, "Psikyo", "Strikers 1945 III (World) / Strikers 1999 (Japan)", MACHINE_SUPPORTS_SAVE ) /* ps5v2 */ -GAME( 2000, dragnblz, 0, psikyo5, dragnblz, psikyosh_state, ps5, ROT270, "Psikyo", "Dragon Blaze", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, tgm2, 0, psikyo5_240, tgm2, psikyosh_state, ps5, ROT0, "Arika", "Tetris the Absolute The Grand Master 2", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, tgm2p, tgm2, psikyo5_240, tgm2, psikyosh_state, ps5, ROT0, "Arika", "Tetris the Absolute The Grand Master 2 Plus", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, gnbarich, 0, psikyo5, gnbarich, psikyosh_state, ps5, ROT270, "Psikyo", "Gunbarich", MACHINE_SUPPORTS_SAVE ) -GAME( 2002, mjgtaste, 0, psikyo5, mjgtaste, psikyosh_state, mjgtaste, ROT0, "Psikyo", "Mahjong G-Taste", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, dragnblz, 0, psikyo5, dragnblz, psikyosh_state, ps5, ROT270, "Psikyo", "Dragon Blaze", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, tgm2, 0, psikyo5_240, tgm2, psikyosh_state, ps5, ROT0, "Arika", "Tetris the Absolute The Grand Master 2", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, tgm2p, tgm2, psikyo5_240, tgm2, psikyosh_state, ps5, ROT0, "Arika", "Tetris the Absolute The Grand Master 2 Plus", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, gnbarich, 0, psikyo5, gnbarich, psikyosh_state, ps5, ROT270, "Psikyo", "Gunbarich", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, mjgtaste, 0, psikyo5, mjgtaste, psikyosh_state, mjgtaste, ROT0, "Psikyo", "Mahjong G-Taste", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/psion.cpp b/src/mame/drivers/psion.cpp index bfccf26f09e..b3a4da91915 100644 --- a/src/mame/drivers/psion.cpp +++ b/src/mame/drivers/psion.cpp @@ -564,7 +564,7 @@ static GFXDECODE_START( psion ) GFXDECODE_END /* basic configuration for 2 lines display */ -static MACHINE_CONFIG_START( psion_2lines, psion_state ) +static MACHINE_CONFIG_START( psion_2lines ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD63701, 980000) // should be HD6303 at 0.98MHz @@ -615,7 +615,7 @@ static MACHINE_CONFIG_DERIVED( psion_4lines, psion_2lines ) MCFG_HD44780_PIXEL_UPDATE_CB(psion_state,lz_pixel_update) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( psion1, psion_2lines, psion1_state ) +static MACHINE_CONFIG_DERIVED( psion1, psion_2lines ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(psion1_mem) @@ -793,15 +793,15 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, psion1, 0, 0, psion1, psion1,driver_device, 0, "Psion", "Organiser I", MACHINE_NOT_WORKING) -COMP( 1986, psioncm, 0, 0, psioncm, psion, driver_device, 0, "Psion", "Organiser II CM", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -COMP( 1986, psionla, psioncm, 0, psionla, psion, driver_device, 0, "Psion", "Organiser II LA", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -COMP( 1986, psionxp, psioncm, 0, psionla, psion, driver_device, 0, "Psion", "Organiser II XP", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -COMP( 1986, psionp200, psioncm, 0, psionp350, psion, driver_device, 0, "Psion", "Organiser II P200", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -COMP( 1986, psionp350, psioncm, 0, psionp350, psion, driver_device, 0, "Psion", "Organiser II P350", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -COMP( 1986, psionlam, psioncm, 0, psionlam, psion, driver_device, 0, "Psion", "Organiser II LAM", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -COMP( 1989, psionlz, 0, 0, psionlz, psion, driver_device, 0, "Psion", "Organiser II LZ", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -COMP( 1989, psionlz64, psionlz, 0, psionlz, psion, driver_device, 0, "Psion", "Organiser II LZ64", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -COMP( 1989, psionlz64s, psionlz, 0, psionlz, psion, driver_device, 0, "Psion", "Organiser II LZ64S", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -COMP( 1989, psionp464, psionlz, 0, psionlz, psion, driver_device, 0, "Psion", "Organiser II P464", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, psion1, 0, 0, psion1, psion1, psion1_state, 0, "Psion", "Organiser I", MACHINE_NOT_WORKING ) +COMP( 1986, psioncm, 0, 0, psioncm, psion, psion_state, 0, "Psion", "Organiser II CM", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1986, psionla, psioncm, 0, psionla, psion, psion_state, 0, "Psion", "Organiser II LA", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1986, psionxp, psioncm, 0, psionla, psion, psion_state, 0, "Psion", "Organiser II XP", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1986, psionp200, psioncm, 0, psionp350, psion, psion_state, 0, "Psion", "Organiser II P200", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1986, psionp350, psioncm, 0, psionp350, psion, psion_state, 0, "Psion", "Organiser II P350", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1986, psionlam, psioncm, 0, psionlam, psion, psion_state, 0, "Psion", "Organiser II LAM", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1989, psionlz, 0, 0, psionlz, psion, psion_state, 0, "Psion", "Organiser II LZ", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1989, psionlz64, psionlz, 0, psionlz, psion, psion_state, 0, "Psion", "Organiser II LZ64", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1989, psionlz64s, psionlz, 0, psionlz, psion, psion_state, 0, "Psion", "Organiser II LZ64S", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1989, psionp464, psionlz, 0, psionlz, psion, psion_state, 0, "Psion", "Organiser II P464", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/psx.cpp b/src/mame/drivers/psx.cpp index b4d8124b2dd..453b030ce6f 100644 --- a/src/mame/drivers/psx.cpp +++ b/src/mame/drivers/psx.cpp @@ -93,7 +93,7 @@ static ADDRESS_MAP_START( subcpu_map, AS_PROGRAM, 8, psx1_state ) AM_RANGE(0x0000, 0xffff) AM_ROM ADDRESS_MAP_END -static MACHINE_CONFIG_START( psj, psx1_state ) +static MACHINE_CONFIG_START( psj ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8530CQ, XTAL_67_7376MHz ) MCFG_CPU_PROGRAM_MAP( psx_map ) @@ -129,8 +129,8 @@ static MACHINE_CONFIG_START( psj, psx1_state ) MCFG_PSXCD_ADD(PSXCD_TAG, "cdrom") MCFG_PSXCD_IRQ_HANDLER(DEVWRITELINE("maincpu:irq", psxirq_device, intin2)) - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psx_dma_read_delegate(&psx1_state::cd_dma_read, (psx1_state *) owner ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psx_dma_write_delegate(&psx1_state::cd_dma_write, (psx1_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psxdma_device::read_delegate(&psx1_state::cd_dma_read, (psx1_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psxdma_device::write_delegate(&psx1_state::cd_dma_write, (psx1_state *) owner ) ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( psu, psj ) @@ -138,7 +138,7 @@ static MACHINE_CONFIG_DERIVED( psu, psj ) MCFG_CPU_PROGRAM_MAP( subcpu_map ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pse, psx1_state ) +static MACHINE_CONFIG_START( pse ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8530AQ, XTAL_67_7376MHz ) MCFG_CPU_PROGRAM_MAP( psx_map) @@ -175,8 +175,8 @@ static MACHINE_CONFIG_START( pse, psx1_state ) MCFG_PSXCD_ADD(PSXCD_TAG, "cdrom") MCFG_PSXCD_IRQ_HANDLER(DEVWRITELINE("maincpu:irq", psxirq_device, intin2)) - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psx_dma_read_delegate(&psx1_state::cd_dma_read, (psx1_state *) owner ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psx_dma_write_delegate(&psx1_state::cd_dma_write, (psx1_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psxdma_device::read_delegate(&psx1_state::cd_dma_read, (psx1_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psxdma_device::write_delegate(&psx1_state::cd_dma_write, (psx1_state *) owner ) ) MACHINE_CONFIG_END ROM_START( psj ) @@ -306,8 +306,8 @@ Version 4.3 E */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1994, psj, 0, 0, psj, 0, driver_device, 0, "Sony Computer Entertainment Inc", "Sony PlayStation (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -CONS( 1995, pse, psj, 0, pse, 0, driver_device, 0, "Sony Computer Entertainment Inc", "Sony PlayStation (Europe)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -CONS( 1995, psu, psj, 0, psu, 0, driver_device, 0, "Sony Computer Entertainment Inc", "Sony PlayStation (USA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -CONS( 1995, psa, psj, 0, psj, 0, driver_device, 0, "Sony Computer Entertainment Inc", "Sony PlayStation (Asia-Pacific)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1994, psj, 0, 0, psj, 0, psx1_state, 0, "Sony Computer Entertainment Inc", "Sony PlayStation (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 1995, pse, psj, 0, pse, 0, psx1_state, 0, "Sony Computer Entertainment Inc", "Sony PlayStation (Europe)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 1995, psu, psj, 0, psu, 0, psx1_state, 0, "Sony Computer Entertainment Inc", "Sony PlayStation (USA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +CONS( 1995, psa, psj, 0, psj, 0, psx1_state, 0, "Sony Computer Entertainment Inc", "Sony PlayStation (Asia-Pacific)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/psychic5.cpp b/src/mame/drivers/psychic5.cpp index 1c41e5ee726..10a710e9de8 100644 --- a/src/mame/drivers/psychic5.cpp +++ b/src/mame/drivers/psychic5.cpp @@ -712,7 +712,7 @@ static GFXDECODE_START( bombsa ) GFXDECODE_END -static MACHINE_CONFIG_START( psychic5, psychic5_state ) +static MACHINE_CONFIG_START( psychic5 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) @@ -766,7 +766,7 @@ static MACHINE_CONFIG_START( psychic5, psychic5_state ) MCFG_SOUND_ROUTE(3, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bombsa, psychic5_state ) +static MACHINE_CONFIG_START( bombsa ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2 ) /* 6 MHz */ @@ -972,6 +972,6 @@ ROM_START( bombsa ) ROM_END -GAME( 1987, psychic5, 0, psychic5, psychic5, driver_device, 0, ROT270, "Jaleco / NMK", "Psychic 5 (World)", MACHINE_SUPPORTS_SAVE ) // "Oversea's version V2.00 CHANGED BY TAMIO NAKASATO" text present in ROM, various modifications (English names, more complete attract demo etc.) -GAME( 1987, psychic5j, psychic5, psychic5, psychic5, driver_device, 0, ROT270, "Jaleco / NMK", "Psychic 5 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, bombsa, 0, bombsa, bombsa, driver_device, 0, ROT270, "Jaleco", "Bombs Away (prototype)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, psychic5, 0, psychic5, psychic5, psychic5_state, 0, ROT270, "Jaleco / NMK", "Psychic 5 (World)", MACHINE_SUPPORTS_SAVE ) // "Oversea's version V2.00 CHANGED BY TAMIO NAKASATO" text present in ROM, various modifications (English names, more complete attract demo etc.) +GAME( 1987, psychic5j, psychic5, psychic5, psychic5, psychic5_state, 0, ROT270, "Jaleco / NMK", "Psychic 5 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bombsa, 0, bombsa, bombsa, psychic5_state, 0, ROT270, "Jaleco", "Bombs Away (prototype)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pt68k4.cpp b/src/mame/drivers/pt68k4.cpp index a1761baaf5c..5b39076649b 100644 --- a/src/mame/drivers/pt68k4.cpp +++ b/src/mame/drivers/pt68k4.cpp @@ -62,8 +62,16 @@ TODO: 68230 device #include "machine/wd_fdc.h" #include "sound/spkrdev.h" +#include "bus/isa/cga.h" +#include "bus/isa/ega.h" +#include "bus/isa/fdc.h" #include "bus/isa/isa.h" #include "bus/isa/isa_cards.h" +#include "bus/isa/lpt.h" +#include "bus/isa/mda.h" +#include "bus/isa/vga.h" +#include "bus/isa/wdxt_gen.h" +#include "bus/isa/xtide.h" #include "bus/pc_kbd/keyboards.h" #include "bus/pc_kbd/pc_kbdc.h" @@ -125,7 +133,7 @@ private: required_device m_duart2; required_device m_isa; required_device m_speaker; - optional_device m_wdfdc; + optional_device m_wdfdc; void irq5_update(); @@ -248,7 +256,7 @@ static ADDRESS_MAP_START(pt68k2_mem, AS_PROGRAM, 16, pt68k4_state) AM_RANGE(0xfe0040, 0xfe005f) AM_DEVREADWRITE8(DUART2_TAG, mc68681_device, read, write, 0x00ff) AM_RANGE(0xfe0080, 0xfe00bf) AM_READ8(pia_stub_r, 0x00ff) AM_RANGE(0xfe00c0, 0xfe00ff) AM_WRITE8(fdc_select_w, 0x00ff) - AM_RANGE(0xfe0100, 0xfe013f) AM_DEVREADWRITE8(WDFDC_TAG, wd1772_t, read, write, 0x00ff) + AM_RANGE(0xfe0100, 0xfe013f) AM_DEVREADWRITE8(WDFDC_TAG, wd1772_device, read, write, 0x00ff) AM_RANGE(0xfe01c0, 0xfe01c3) AM_READWRITE8(keyboard_r, keyboard_w, 0x00ff) AM_RANGE(0xff0000, 0xff0fff) AM_READWRITE8(hiram_r, hiram_w, 0xff00) AM_RANGE(0xff0000, 0xff0fff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0x00ff) @@ -386,7 +394,7 @@ SLOT_INTERFACE_START( pt68k4_isa8_cards ) SLOT_INTERFACE("xtide", ISA8_XTIDE) // Monk only SLOT_INTERFACE_END -static MACHINE_CONFIG_START( pt68k2, pt68k4_state ) +static MACHINE_CONFIG_START( pt68k2 ) /* basic machine hardware */ MCFG_CPU_ADD(M68K_TAG, M68000, XTAL_16MHz/2) // 68k2 came in 8, 10, and 12 MHz versions MCFG_CPU_PROGRAM_MAP(pt68k2_mem) @@ -426,7 +434,7 @@ static MACHINE_CONFIG_START( pt68k2, pt68k4_state ) MCFG_SOFTWARE_LIST_ADD("flop525_list", "pt68k2") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pt68k4, pt68k4_state ) +static MACHINE_CONFIG_START( pt68k4 ) /* basic machine hardware */ MCFG_CPU_ADD(M68K_TAG, M68000, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(pt68k4_mem) @@ -493,6 +501,6 @@ ROM_START( pt68k4 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1988, pt68k2, 0, 0, pt68k2, pt68k4, driver_device, 0, "Peripheral Technology", "PT68K2", MACHINE_SUPPORTS_SAVE ) -COMP( 1990, pt68k4, 0, 0, pt68k4, pt68k4, driver_device, 0, "Peripheral Technology", "PT68K4", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1988, pt68k2, 0, 0, pt68k2, pt68k4, pt68k4_state, 0, "Peripheral Technology", "PT68K2", MACHINE_SUPPORTS_SAVE ) +COMP( 1990, pt68k4, 0, 0, pt68k4, pt68k4, pt68k4_state, 0, "Peripheral Technology", "PT68K4", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ptcsol.cpp b/src/mame/drivers/ptcsol.cpp index 163d48a16b6..7777959b7c2 100644 --- a/src/mame/drivers/ptcsol.cpp +++ b/src/mame/drivers/ptcsol.cpp @@ -179,7 +179,7 @@ public: DECLARE_WRITE8_MEMBER( sol20_fb_w ); DECLARE_WRITE8_MEMBER( sol20_fd_w ); DECLARE_WRITE8_MEMBER( sol20_fe_w ); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); DECLARE_DRIVER_INIT(sol20); TIMER_CALLBACK_MEMBER(sol20_cassette_tc); TIMER_CALLBACK_MEMBER(sol20_boot); @@ -722,7 +722,7 @@ static GFXDECODE_START( sol20 ) GFXDECODE_ENTRY( "chargen", 0x0000, sol20_charlayout, 0, 1 ) GFXDECODE_END -WRITE8_MEMBER( sol20_state::kbd_put ) +void sol20_state::kbd_put(u8 data) { if (data) { @@ -731,7 +731,7 @@ WRITE8_MEMBER( sol20_state::kbd_put ) } } -static MACHINE_CONFIG_START( sol20, sol20_state ) +static MACHINE_CONFIG_START( sol20 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_14_31818MHz/7) MCFG_CPU_PROGRAM_MAP(sol20_mem) @@ -777,7 +777,7 @@ static MACHINE_CONFIG_START( sol20, sol20_state ) MCFG_AY31015_TX_CLOCK(4800.0) MCFG_AY31015_RX_CLOCK(4800.0) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(sol20_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(sol20_state, kbd_put)) MCFG_SOFTWARE_LIST_ADD("cass_list", "sol20_cass") MACHINE_CONFIG_END @@ -805,5 +805,5 @@ ROM_START( sol20 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1976, sol20, 0, 0, sol20, sol20, sol20_state, sol20, "Processor Technology Corporation", "SOL-20", 0 ) diff --git a/src/mame/drivers/pturn.cpp b/src/mame/drivers/pturn.cpp index e14e863d215..5dfe05c42d6 100644 --- a/src/mame/drivers/pturn.cpp +++ b/src/mame/drivers/pturn.cpp @@ -498,7 +498,7 @@ void pturn_state::machine_reset() m_soundlatch->clear_w(space,0,0); } -static MACHINE_CONFIG_START( pturn, pturn_state ) +static MACHINE_CONFIG_START( pturn ) MCFG_CPU_ADD("maincpu", Z80, 12000000/3) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", pturn_state, main_intgen) diff --git a/src/mame/drivers/puckpkmn.cpp b/src/mame/drivers/puckpkmn.cpp index ab276011ddc..28d46aa27b0 100644 --- a/src/mame/drivers/puckpkmn.cpp +++ b/src/mame/drivers/puckpkmn.cpp @@ -275,7 +275,7 @@ static ADDRESS_MAP_START( puckpkmna_map, AS_PROGRAM, 16, md_boot_state ) AM_RANGE(0x70001c, 0x70001d) AM_READ(puckpkmna_70001c_r) ADDRESS_MAP_END -static MACHINE_CONFIG_START( puckpkmn, md_boot_state ) +static MACHINE_CONFIG_START( puckpkmn ) MCFG_FRAGMENT_ADD(md_ntsc) MCFG_CPU_MODIFY("maincpu") @@ -285,7 +285,7 @@ static MACHINE_CONFIG_START( puckpkmn, md_boot_state ) MCFG_DEVICE_REMOVE("genesis_snd_z80") - MCFG_OKIM6295_ADD("oki", XTAL_4MHz / 4, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_4MHz / 4, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker",0.25) MACHINE_CONFIG_END @@ -488,4 +488,4 @@ ROM_END GAME( 2000, puckpkmn, 0, puckpkmn, puckpkmn, md_boot_state, puckpkmn, ROT0, "Genie", "Puckman Pockimon (set 1)", 0 ) GAME( 2000, puckpkmna,puckpkmn, puckpkmna, puckpkmn, md_boot_state, puckpkmn, ROT0, "IBS", "Puckman Pockimon (set 2)", 0 ) GAME( 2000, puckpkmnb,puckpkmn, puckpkmna, puckpkmn, md_boot_state, puckpkmn, ROT0, "Sun Mixing", "Puckman Pockimon (set 3)", 0 ) -GAME( 2000, jzth, 0, jzth, jzth, md_boot_state, puckpkmn, ROT0, "", "Jue Zhan Tian Huang", MACHINE_IMPERFECT_SOUND ) +GAME( 2000, jzth, 0, jzth, jzth, md_boot_state, puckpkmn, ROT0, "", "Jue Zhan Tian Huang", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/pulsar.cpp b/src/mame/drivers/pulsar.cpp index 1953c805e4b..d59f42b2fdf 100644 --- a/src/mame/drivers/pulsar.cpp +++ b/src/mame/drivers/pulsar.cpp @@ -77,7 +77,7 @@ private: required_device m_maincpu; required_device m_dart; required_device m_brg; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_rtc; @@ -94,7 +94,7 @@ static ADDRESS_MAP_START(pulsar_io, AS_IO, 8, pulsar_state) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x0c) AM_DEVREADWRITE("z80dart", z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x0c) AM_DEVREADWRITE("fdc", fd1797_t, read, write) + AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x0c) AM_DEVREADWRITE("fdc", fd1797_device, read, write) AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write) AM_RANGE(0xf0, 0xff) AM_WRITE(baud_w) ADDRESS_MAP_END @@ -224,7 +224,7 @@ DRIVER_INIT_MEMBER( pulsar_state, pulsar ) membank("bankw1")->configure_entry(0, &main[0xf800]); } -static MACHINE_CONFIG_START( pulsar, pulsar_state ) +static MACHINE_CONFIG_START( pulsar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(pulsar_mem) @@ -274,5 +274,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, pulsarlb, 0, 0, pulsar, pulsar, pulsar_state, pulsar, "Pulsar", "Little Big Board", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, pulsarlb, 0, 0, pulsar, pulsar, pulsar_state, pulsar, "Pulsar", "Little Big Board", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/punchout.cpp b/src/mame/drivers/punchout.cpp index 0003da071d5..eab2aa94073 100644 --- a/src/mame/drivers/punchout.cpp +++ b/src/mame/drivers/punchout.cpp @@ -640,7 +640,7 @@ MACHINE_RESET_MEMBER(punchout_state, spnchout) } -static MACHINE_CONFIG_START( punchout, punchout_state ) +static MACHINE_CONFIG_START( punchout ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) @@ -648,7 +648,7 @@ static MACHINE_CONFIG_START( punchout, punchout_state ) MCFG_CPU_IO_MAP(punchout_io_map) MCFG_CPU_VBLANK_INT_DRIVER("top", punchout_state, vblank_irq) - MCFG_CPU_ADD("audiocpu", N2A03, XTAL_21_4772MHz/12) + MCFG_CPU_ADD("audiocpu", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(punchout_sound_map) MCFG_CPU_VBLANK_INT_DRIVER("top", punchout_state, nmi_line_pulse) @@ -681,7 +681,7 @@ static MACHINE_CONFIG_START( punchout, punchout_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_GENERIC_LATCH_8_ADD("soundlatch2") - MCFG_SOUND_ADD("vlm", VLM5030, XTAL_21_4772MHz/6) + MCFG_SOUND_ADD("vlm", VLM5030, N2A03_NTSC_XTAL/6) MCFG_DEVICE_ADDRESS_MAP(AS_0, punchout_vlm_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MACHINE_CONFIG_END @@ -1342,11 +1342,11 @@ ROM_END -GAME( 1984, punchout, 0, punchout, punchout, driver_device, 0, ROT0, "Nintendo", "Punch-Out!! (Rev B)", 0 ) /* CHP1-02 boards */ -GAME( 1984, punchouta, punchout, punchout, punchout, driver_device, 0, ROT0, "Nintendo", "Punch-Out!! (Rev A)", 0 ) /* CHP1-01 boards */ -GAME( 1984, punchoutj, punchout, punchout, punchout, driver_device, 0, ROT0, "Nintendo", "Punch-Out!! (Japan)", 0 ) -GAME( 1984, punchita, punchout, punchout, punchout, driver_device, 0, ROT0, "bootleg", "Punch-Out!! (Italian bootleg)", 0 ) -GAME( 1984, spnchout, 0, spnchout, spnchout, driver_device, 0, ROT0, "Nintendo", "Super Punch-Out!! (Rev B)", 0 ) /* CHP1-02 boards */ -GAME( 1984, spnchouta, spnchout, spnchout, spnchout, driver_device, 0, ROT0, "Nintendo", "Super Punch-Out!! (Rev A)", 0 ) /* CHP1-01 boards */ -GAME( 1984, spnchoutj, spnchout, spnchout, spnchout, driver_device, 0, ROT0, "Nintendo", "Super Punch-Out!! (Japan)", 0 ) -GAME( 1985, armwrest, 0, armwrest, armwrest, driver_device, 0, ROT0, "Nintendo", "Arm Wrestling", 0 ) +GAME( 1984, punchout, 0, punchout, punchout, punchout_state, 0, ROT0, "Nintendo", "Punch-Out!! (Rev B)", 0 ) /* CHP1-02 boards */ +GAME( 1984, punchouta, punchout, punchout, punchout, punchout_state, 0, ROT0, "Nintendo", "Punch-Out!! (Rev A)", 0 ) /* CHP1-01 boards */ +GAME( 1984, punchoutj, punchout, punchout, punchout, punchout_state, 0, ROT0, "Nintendo", "Punch-Out!! (Japan)", 0 ) +GAME( 1984, punchita, punchout, punchout, punchout, punchout_state, 0, ROT0, "bootleg", "Punch-Out!! (Italian bootleg)", 0 ) +GAME( 1984, spnchout, 0, spnchout, spnchout, punchout_state, 0, ROT0, "Nintendo", "Super Punch-Out!! (Rev B)", 0 ) /* CHP1-02 boards */ +GAME( 1984, spnchouta, spnchout, spnchout, spnchout, punchout_state, 0, ROT0, "Nintendo", "Super Punch-Out!! (Rev A)", 0 ) /* CHP1-01 boards */ +GAME( 1984, spnchoutj, spnchout, spnchout, spnchout, punchout_state, 0, ROT0, "Nintendo", "Super Punch-Out!! (Japan)", 0 ) +GAME( 1985, armwrest, 0, armwrest, armwrest, punchout_state, 0, ROT0, "Nintendo", "Arm Wrestling", 0 ) diff --git a/src/mame/drivers/pv1000.cpp b/src/mame/drivers/pv1000.cpp index 2b6ea9a2b12..af677db56ac 100644 --- a/src/mame/drivers/pv1000.cpp +++ b/src/mame/drivers/pv1000.cpp @@ -45,13 +45,11 @@ private: sound_stream *m_sh_channel; }; -extern const device_type PV1000; - -const device_type PV1000 = device_creator; +DEFINE_DEVICE_TYPE(PV1000, pv1000_sound_device, "pv1000_sound", "NEC D65010G031") pv1000_sound_device::pv1000_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PV1000, "NEC D65010G031", tag, owner, clock, "pv1000_sound", __FILE__), - device_sound_interface(mconfig, *this) + : device_t(mconfig, PV1000, tag, owner, clock) + , device_sound_interface(mconfig, *this) { } @@ -434,7 +432,7 @@ static GFXDECODE_START( pv1000 ) GFXDECODE_END -static MACHINE_CONFIG_START( pv1000, pv1000_state ) +static MACHINE_CONFIG_START( pv1000 ) MCFG_CPU_ADD( "maincpu", Z80, 17897725/5 ) MCFG_CPU_PROGRAM_MAP( pv1000 ) @@ -471,5 +469,5 @@ ROM_START( pv1000 ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1983, pv1000, 0, 0, pv1000, pv1000, driver_device, 0, "Casio", "PV-1000", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1983, pv1000, 0, 0, pv1000, pv1000, pv1000_state, 0, "Casio", "PV-1000", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pv2000.cpp b/src/mame/drivers/pv2000.cpp index c2ae369f0c7..6c88b76550d 100644 --- a/src/mame/drivers/pv2000.cpp +++ b/src/mame/drivers/pv2000.cpp @@ -379,7 +379,7 @@ DEVICE_IMAGE_LOAD_MEMBER( pv2000_state, pv2000_cart ) } /* Machine Drivers */ -static MACHINE_CONFIG_START( pv2000, pv2000_state ) +static MACHINE_CONFIG_START( pv2000 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, XTAL_7_15909MHz/2) // 3.579545 MHz @@ -426,5 +426,5 @@ ROM_END /* System Drivers */ -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -CONS( 1983, pv2000, 0, 0, pv2000, pv2000, driver_device, 0, "Casio", "PV-2000", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1983, pv2000, 0, 0, pv2000, pv2000, pv2000_state, 0, "Casio", "PV-2000", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pv9234.cpp b/src/mame/drivers/pv9234.cpp index 97263c9bdc3..8924492d27d 100644 --- a/src/mame/drivers/pv9234.cpp +++ b/src/mame/drivers/pv9234.cpp @@ -29,17 +29,23 @@ class pv9234_state : public driver_device { public: pv9234_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_p_ram(*this, "p_ram"), - m_maincpu(*this, "maincpu") { } + : driver_device(mconfig, type, tag) + , m_p_ram(*this, "p_ram") + , m_maincpu(*this, "maincpu") + { + } DECLARE_WRITE32_MEMBER(debug_w); DECLARE_WRITE32_MEMBER(debug1_w); DECLARE_WRITE32_MEMBER(debug2_w); - required_shared_ptr m_p_ram; + + uint32_t screen_update_pv9234(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + +protected: virtual void machine_reset() override; virtual void video_start() override; - uint32_t screen_update_pv9234(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + required_shared_ptr m_p_ram; required_device m_maincpu; }; @@ -137,7 +143,7 @@ uint32_t pv9234_state::screen_update_pv9234(screen_device &screen, bitmap_ind16 return 0; } -static MACHINE_CONFIG_START( pv9234, pv9234_state ) +static MACHINE_CONFIG_START( pv9234 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM7, 4915000) //probably a more powerful clone. MCFG_CPU_PROGRAM_MAP(pv9234_map) @@ -167,5 +173,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -SYST( 1997, pv9234, 0, 0, pv9234, pv9234, driver_device, 0, "Scientific Atlanta", "PowerVu D9234", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +SYST( 1997, pv9234, 0, 0, pv9234, pv9234, pv9234_state, 0, "Scientific Atlanta", "PowerVu D9234", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/pve500.cpp b/src/mame/drivers/pve500.cpp index 40208e508e0..00709e686a0 100644 --- a/src/mame/drivers/pve500.cpp +++ b/src/mame/drivers/pve500.cpp @@ -345,7 +345,7 @@ printf("io_expander_w: PORTA (io_SC=%02X)\n", data); } } -static MACHINE_CONFIG_START( pve500, pve500_state ) +static MACHINE_CONFIG_START( pve500 ) /* Main CPU */ MCFG_CPU_ADD("maincpu", TMPZ84C015, XTAL_12MHz / 2) /* TMPZ84C015BF-6 */ MCFG_CPU_PROGRAM_MAP(maincpu_prg) @@ -435,5 +435,5 @@ ROM_START( pve500 ) ROM_LOAD( "pve500.ice3", 0x0000, 0x080, NO_DUMP ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1995, pve500, 0, 0, pve500, pve500, pve500_state, pve500, "SONY", "PVE-500", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1995, pve500, 0, 0, pve500, pve500, pve500_state, pve500, "SONY", "PVE-500", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS) diff --git a/src/mame/drivers/pwrview.cpp b/src/mame/drivers/pwrview.cpp index 3df501e9e45..be24d194c5c 100644 --- a/src/mame/drivers/pwrview.cpp +++ b/src/mame/drivers/pwrview.cpp @@ -12,6 +12,8 @@ #include "machine/i8251.h" #include "machine/z80dart.h" #include "machine/pit8253.h" +#include "machine/bankdev.h" +#include "screen.h" #include "video/mc6845.h" #include "bus/rs232/rs232.h" @@ -23,7 +25,9 @@ public: m_maincpu(*this, "maincpu"), m_pit(*this, "pit"), m_bios(*this, "bios"), - m_ram(*this, "ram") + m_ram(*this, "ram"), + m_biosbank(*this, "bios_bank"), + m_vram(64*1024) { } DECLARE_READ16_MEMBER(bank0_r); @@ -36,11 +40,18 @@ public: DECLARE_WRITE8_MEMBER(unk3_w); DECLARE_READ8_MEMBER(led_r); DECLARE_WRITE8_MEMBER(led_w); + DECLARE_READ8_MEMBER(pitclock_r); DECLARE_READ16_MEMBER(nmiio_r); DECLARE_WRITE16_MEMBER(nmiio_w); DECLARE_WRITE16_MEMBER(nmimem_w); + DECLARE_READ16_MEMBER(vram1_r); + DECLARE_WRITE16_MEMBER(vram1_w); + DECLARE_READ16_MEMBER(vram2_r); + DECLARE_WRITE16_MEMBER(vram2_w); + DECLARE_READ16_MEMBER(fbios_r); DECLARE_READ8_MEMBER(rotary_r); DECLARE_READ8_MEMBER(err_r); + MC6845_UPDATE_ROW(update_row); protected: virtual void device_start() override; @@ -51,14 +62,19 @@ private: required_device m_pit; required_memory_region m_bios; required_shared_ptr m_ram; + required_device m_biosbank; + std::vector m_vram; u8 m_leds[2]; - u8 m_switch, m_c001, m_c009, m_c280, m_errcode; + u8 m_switch, m_c001, m_c009, m_c280, m_errcode, m_vramwin[2]; emu_timer *m_dmahack; }; void pwrview_state::device_start() { + save_item(NAME(m_vram)); m_dmahack = timer_alloc(); + membank("vram1")->configure_entries(0, 0x400, &m_vram[0], 0x80); + membank("vram2")->configure_entries(0, 0x400, &m_vram[0], 0x80); } void pwrview_state::device_reset() @@ -67,6 +83,10 @@ void pwrview_state::device_reset() m_switch = 0xe0; m_c001 = m_c009 = 0; m_errcode = 0x31; + membank("vram1")->set_entry(0); + membank("vram2")->set_entry(0); + m_vramwin[0] = m_vramwin[1] = 0; + m_biosbank->set_bank(0); } void pwrview_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) @@ -75,6 +95,11 @@ void pwrview_state::device_timer(emu_timer &timer, device_timer_id id, int param m_maincpu->drq1_w(1); // TODO: this is unfortunate } +MC6845_UPDATE_ROW(pwrview_state::update_row) +{ + +} + READ8_MEMBER(pwrview_state::rotary_r) { return ~m_switch; @@ -124,9 +149,59 @@ WRITE16_MEMBER(pwrview_state::nmiio_w) WRITE16_MEMBER(pwrview_state::nmimem_w) { - logerror("%s: mem nmi at %05x\n",machine().describe_context(), offset*2); + logerror("%s: mem nmi at %05x\n",machine().describe_context(), ((offset & 0x7fff) * 2) + 0xf8000); m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); - m_errcode = 0xae; // TODO: ? + switch(((offset & 0x7fff) * 2) + 0x8000) // TODO: some connection with faulting address? + { + case 0x82e4: + m_errcode = 0xae; + break; + case 0xbe80: + m_errcode = 0xa6; + break; + case 0xbefc: + m_errcode = 0xb6; + break; + } +} + +READ16_MEMBER(pwrview_state::fbios_r) +{ + switch(m_c009 & 0xc) + { + case 0x0: + case 0x4: + return m_bios->as_u16(offset); + case 0x8: + return m_ram[offset + 0xf8000/2]; + case 0xc: + return 0; + } + return 0; +} + +READ16_MEMBER(pwrview_state::vram1_r) +{ + return m_vramwin[0]; +} + +WRITE16_MEMBER(pwrview_state::vram1_w) +{ + data &= 0x3ff; + membank("vram1")->set_entry(data); + m_vramwin[0] = data; +} + +READ16_MEMBER(pwrview_state::vram2_r) +{ + return m_vramwin[1]; +} + +WRITE16_MEMBER(pwrview_state::vram2_w) +{ + data &= 0x3ff; + membank("vram2")->set_entry(data); + m_vramwin[1] = data; } READ8_MEMBER(pwrview_state::unk1_r) @@ -150,6 +225,7 @@ WRITE8_MEMBER(pwrview_state::unk2_w) m_dmahack->adjust(attotime::zero, 0, attotime::from_nsec(50)); else m_dmahack->adjust(attotime::never); + m_biosbank->set_bank((data >> 2) & 3); m_c009 = data; } @@ -198,16 +274,53 @@ WRITE8_MEMBER(pwrview_state::led_w) }; m_leds[offset] = data; if(offset == 1) + { logerror("%c%c%c%c\n", m_leds[1] & 0x80 ? ' ' : '.', xlate(m_leds[1]), m_leds[0] & 0x80 ? ' ' : '.', xlate(m_leds[0])); + m_c009 &= ~2; + m_c009 |= (data & 0x80) ? 0 : 2; // TODO: what this means + } } +READ8_MEMBER(pwrview_state::pitclock_r) +{ + m_pit->write_clk0(ASSERT_LINE); + m_pit->write_clk0(CLEAR_LINE); + return 0; +} + +static ADDRESS_MAP_START(bios_bank, AS_0, 16, pwrview_state) + AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("bios", 0) + AM_RANGE(0x00000, 0x07fff) AM_WRITE(nmimem_w) + + AM_RANGE(0x0be00, 0x0be7f) AM_RAMBANK("vram1") + AM_RANGE(0x0befe, 0x0beff) AM_READWRITE(vram1_r, vram1_w); + AM_RANGE(0x0bf00, 0x0bf7f) AM_RAMBANK("vram2") + AM_RANGE(0x0bffe, 0x0bfff) AM_READWRITE(vram2_r, vram2_w); + AM_RANGE(0x0c000, 0x0ffff) AM_ROM AM_REGION("bios", 0x4000) + AM_RANGE(0x08000, 0x0ffff) AM_WRITE(nmimem_w) + + AM_RANGE(0x10000, 0x17fff) AM_RAM + + AM_RANGE(0x1be00, 0x1be7f) AM_RAMBANK("vram1") + AM_RANGE(0x1befe, 0x1beff) AM_READWRITE(vram1_r, vram1_w); + AM_RANGE(0x1bf00, 0x1bf7f) AM_RAMBANK("vram2") + AM_RANGE(0x1bffe, 0x1bfff) AM_READWRITE(vram2_r, vram2_w); + AM_RANGE(0x1c000, 0x1ffff) AM_ROM AM_REGION("bios", 0x4000) + AM_RANGE(0x18000, 0x1ffff) AM_WRITE(nmimem_w) +ADDRESS_MAP_END + static ADDRESS_MAP_START(pwrview_map, AS_PROGRAM, 16, pwrview_state) AM_RANGE(0x00000, 0x003ff) AM_READWRITE(bank0_r, bank0_w) AM_RANGE(0x00000, 0xf7fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0xf8000, 0xfffff) AM_WRITE(nmimem_w) + AM_RANGE(0xf8000, 0xfffff) AM_DEVICE("bios_bank", address_map_bank_device, amap16) ADDRESS_MAP_END +static ADDRESS_MAP_START(pwrview_fetch_map, AS_DECRYPTED_OPCODES, 16, pwrview_state) + AM_RANGE(0x00000, 0x003ff) AM_READ(bank0_r) + AM_RANGE(0x00000, 0xf7fff) AM_RAM AM_SHARE("ram") + AM_RANGE(0xf8000, 0xfffff) AM_READ(fbios_r) +ADDRESS_MAP_END + static ADDRESS_MAP_START(pwrview_io, AS_IO, 16, pwrview_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0xc000, 0xc001) AM_READWRITE8(unk1_r, unk1_w, 0xff00) @@ -216,13 +329,17 @@ static ADDRESS_MAP_START(pwrview_io, AS_IO, 16, pwrview_state) AM_RANGE(0xc008, 0xc009) AM_READWRITE8(unk2_r, unk2_w, 0xff00) AM_RANGE(0xc00a, 0xc00b) AM_READ8(err_r, 0xff00) AM_RANGE(0xc00c, 0xc00d) AM_RAM + AM_RANGE(0xc080, 0xc081) AM_RAM + AM_RANGE(0xc088, 0xc089) AM_DEVWRITE8("crtc", hd6845_device, address_w, 0x00ff) + AM_RANGE(0xc08a, 0xc08b) AM_DEVREADWRITE8("crtc", hd6845_device, register_r, register_w, 0x00ff) AM_RANGE(0xc280, 0xc287) AM_READWRITE8(unk3_r, unk3_w, 0x00ff) AM_RANGE(0xc288, 0xc28f) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff) AM_RANGE(0xc2a0, 0xc2a7) AM_DEVREADWRITE8("sio", z80sio2_device, cd_ba_r, cd_ba_w, 0x00ff) AM_RANGE(0xc2c0, 0xc2c1) AM_DEVREADWRITE8("uart", i8251_device, data_r, data_w, 0x00ff) AM_RANGE(0xc2c2, 0xc2c3) AM_DEVREADWRITE8("uart", i8251_device, status_r, control_w, 0x00ff) AM_RANGE(0xc2e0, 0xc2e3) AM_DEVICE8("fdc", upd765a_device, map, 0x00ff) - AM_RANGE(0xc2e4, 0xc2e7) AM_RAM + AM_RANGE(0xc2e4, 0xc2e5) AM_RAM + AM_RANGE(0xc2e6, 0xc2e7) AM_READ8(pitclock_r, 0x00ff) AM_RANGE(0x0000, 0xffff) AM_READWRITE(nmiio_r, nmiio_w) ADDRESS_MAP_END @@ -230,11 +347,16 @@ static SLOT_INTERFACE_START(pwrview_floppies) SLOT_INTERFACE("525dd", FLOPPY_525_DD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( pwrview, pwrview_state ) +static MACHINE_CONFIG_START( pwrview ) MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(pwrview_map) + MCFG_CPU_DECRYPTED_OPCODES_MAP(pwrview_fetch_map) MCFG_CPU_IO_MAP(pwrview_io) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL_64MHz/8, 480, 0, 384, 1040, 0, 960) // clock unknown + MCFG_SCREEN_UPDATE_DEVICE("crtc", hd6845_device, screen_update) + MCFG_DEVICE_ADD("pit", PIT8253, 0) MCFG_PIT8253_CLK0(XTAL_16MHz/16) // clocks unknown, fix above when found MCFG_PIT8253_CLK1(XTAL_16MHz/16) @@ -249,6 +371,16 @@ static MACHINE_CONFIG_START( pwrview, pwrview_state ) MCFG_DEVICE_ADD("uart", I8251, 0) MCFG_Z80SIO2_ADD("sio", 4000000, 0, 0, 0, 0) + MCFG_DEVICE_ADD("crtc", HD6845, XTAL_64MHz/64) // clock unknown + MCFG_MC6845_CHAR_WIDTH(32) // ?? + MCFG_MC6845_UPDATE_ROW_CB(pwrview_state, update_row) + + MCFG_DEVICE_ADD("bios_bank", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(bios_bank) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(17) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x8000) MACHINE_CONFIG_END ROM_START(pwrview) @@ -258,4 +390,4 @@ ROM_START(pwrview) ROMX_LOAD("215856-004.bin", 0x0001, 0x4000, CRC(4fd01e0a) SHA1(c4d1d40d4e8e529c03857f4a3c8428ccf6b8ff99), ROM_SKIP(1) | ROM_BIOS(1)) ROM_END -COMP(1984, pwrview, 0, 0, pwrview, 0, driver_device, 0, "Compugraphic", "MCS PowerView 10", MACHINE_NOT_WORKING) +COMP(1984, pwrview, 0, 0, pwrview, 0, pwrview_state, 0, "Compugraphic", "MCS PowerView 10", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/px4.cpp b/src/mame/drivers/px4.cpp index 0a5d764f8ba..b443ebf74d2 100644 --- a/src/mame/drivers/px4.cpp +++ b/src/mame/drivers/px4.cpp @@ -1473,7 +1473,7 @@ PALETTE_INIT_MEMBER( px4p_state, px4p ) // MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( px4, px4_state ) +static MACHINE_CONFIG_START( px4 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, XTAL_7_3728MHz / 2) // uPD70008 MCFG_CPU_PROGRAM_MAP(px4_mem) @@ -1539,7 +1539,7 @@ static MACHINE_CONFIG_START( px4, px4_state ) MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( px4p, px4, px4p_state ) +static MACHINE_CONFIG_DERIVED( px4p, px4 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(px4p_io) diff --git a/src/mame/drivers/px8.cpp b/src/mame/drivers/px8.cpp index a443bb7ddfd..4d4392789bc 100644 --- a/src/mame/drivers/px8.cpp +++ b/src/mame/drivers/px8.cpp @@ -758,7 +758,7 @@ void px8_state::machine_reset() MACHINE DRIVERS ***************************************************************************/ -static MACHINE_CONFIG_START( px8, px8_state ) +static MACHINE_CONFIG_START( px8 ) /* main cpu (uPD70008) */ MCFG_CPU_ADD(UPD70008_TAG, Z80, XTAL_CR1 / 4) /* 2.45 MHz */ MCFG_CPU_PROGRAM_MAP(px8_mem) @@ -841,5 +841,5 @@ ROM_END SYSTEM DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, px8, 0, 0, px8, px8, driver_device, 0, "Epson", "PX-8", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, px8, 0, 0, px8, px8, px8_state, 0, "Epson", "PX-8", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/pyl601.cpp b/src/mame/drivers/pyl601.cpp index fc6cc6250db..d99b9ea2cce 100644 --- a/src/mame/drivers/pyl601.cpp +++ b/src/mame/drivers/pyl601.cpp @@ -529,7 +529,7 @@ static GFXDECODE_START( pyl601a ) GFXDECODE_ENTRY( "chargen", 0x0000, pyl601a_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( pyl601, pyl601_state ) +static MACHINE_CONFIG_START( pyl601 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6800, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(pyl601_mem) @@ -623,6 +623,6 @@ ROM_START( pyl601a ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, pyl601, 0, 0, pyl601, pyl601, pyl601_state, pyl601, "Mikroelektronika", "Pyldin-601", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1989, pyl601, 0, 0, pyl601, pyl601, pyl601_state, pyl601, "Mikroelektronika", "Pyldin-601", 0 ) COMP( 1989, pyl601a, pyl601, 0, pyl601a, pyl601, pyl601_state, pyl601, "Mikroelektronika", "Pyldin-601A", 0 ) diff --git a/src/mame/drivers/pyson.cpp b/src/mame/drivers/pyson.cpp index b117c8ee69c..22ad241f134 100644 --- a/src/mame/drivers/pyson.cpp +++ b/src/mame/drivers/pyson.cpp @@ -193,7 +193,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( pyson ) INPUT_PORTS_END -static MACHINE_CONFIG_START( pyson, pyson_state ) +static MACHINE_CONFIG_START( pyson ) MCFG_CPU_ADD("maincpu", R5000LE, 294000000) // imported from namcops2.c driver MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) @@ -251,6 +251,6 @@ ROM_START( wswe2k3 ) ROM_END -GAME(2002, pyson, 0, pyson, pyson, driver_device, 0, ROT0, "Konami", "Konami Pyson BIOS", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT) -GAME(2002, wswe, pyson, pyson, pyson, driver_device, 0, ROT0, "Konami", "World Soccer Winning Eleven Arcade Game Style", MACHINE_IS_SKELETON) -GAME(2003, wswe2k3, pyson, pyson, pyson, driver_device, 0, ROT0, "Konami", "World Soccer Winning Eleven Arcade Game 2003", MACHINE_IS_SKELETON) +GAME(2002, pyson, 0, pyson, pyson, pyson_state, 0, ROT0, "Konami", "Konami Pyson BIOS", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT) +GAME(2002, wswe, pyson, pyson, pyson, pyson_state, 0, ROT0, "Konami", "World Soccer Winning Eleven Arcade Game Style", MACHINE_IS_SKELETON) +GAME(2003, wswe2k3, pyson, pyson, pyson, pyson_state, 0, ROT0, "Konami", "World Soccer Winning Eleven Arcade Game 2003", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/pzletime.cpp b/src/mame/drivers/pzletime.cpp index 02d1e525624..37edec843bd 100644 --- a/src/mame/drivers/pzletime.cpp +++ b/src/mame/drivers/pzletime.cpp @@ -328,7 +328,7 @@ void pzletime_state::machine_reset() m_ticket = 0; } -static MACHINE_CONFIG_START( pzletime, pzletime_state ) +static MACHINE_CONFIG_START( pzletime ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,10000000) @@ -355,7 +355,7 @@ static MACHINE_CONFIG_START( pzletime, pzletime_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 937500, OKIM6295_PIN7_HIGH) //freq & pin7 taken from stlforce + MCFG_OKIM6295_ADD("oki", 937500, PIN7_HIGH) //freq & pin7 taken from stlforce MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -402,4 +402,4 @@ ROM_START( pzletime ) ROM_LOAD( "pzletime.nv", 0x0000, 0x0080, CRC(e5ed3d40) SHA1(8c163a6e5839e5c82d52f046d3268202fdf9f4d1) ) ROM_END -GAME( 199?, pzletime, 0, pzletime, pzletime, driver_device, 0, ROT0, "Elettronica Video-Games S.R.L.", "Puzzle Time (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 199?, pzletime, 0, pzletime, pzletime, pzletime_state, 0, ROT0, "Elettronica Video-Games S.R.L.", "Puzzle Time (prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/qdrmfgp.cpp b/src/mame/drivers/qdrmfgp.cpp index 5ff8bfac1d0..d71cdd035e0 100644 --- a/src/mame/drivers/qdrmfgp.cpp +++ b/src/mame/drivers/qdrmfgp.cpp @@ -554,7 +554,8 @@ MACHINE_START_MEMBER(qdrmfgp_state,qdrmfgp) MACHINE_START_MEMBER(qdrmfgp_state,qdrmfgp2) { /* sound irq (CCU? 240Hz) */ - machine().scheduler().timer_pulse(attotime::from_hz(XTAL_18_432MHz/76800), timer_expired_delegate(FUNC(qdrmfgp_state::gp2_timer_callback),this)); + m_gp2_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(qdrmfgp_state::gp2_timer_callback), this)); + m_gp2_timer->adjust(attotime::from_hz(XTAL_18_432MHz/76800), 0, attotime::from_hz(XTAL_18_432MHz/76800)); MACHINE_START_CALL_MEMBER( qdrmfgp ); } @@ -573,7 +574,7 @@ void qdrmfgp_state::machine_reset() * Machine driver * *************************************/ -static MACHINE_CONFIG_START( qdrmfgp, qdrmfgp_state ) +static MACHINE_CONFIG_START( qdrmfgp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16.000 MHz */ @@ -617,7 +618,7 @@ static MACHINE_CONFIG_START( qdrmfgp, qdrmfgp_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( qdrmfgp2, qdrmfgp_state ) +static MACHINE_CONFIG_START( qdrmfgp2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16.000 MHz */ @@ -708,6 +709,6 @@ ROM_END * *************************************/ -/* year rom clone machine inputs init */ -GAME( 1994, qdrmfgp, 0, qdrmfgp, qdrmfgp, driver_device, 0, ROT0, "Konami", "Quiz Do Re Mi Fa Grand Prix (Japan)", 0 ) -GAME( 1995, qdrmfgp2, 0, qdrmfgp2, qdrmfgp2, driver_device, 0, ROT0, "Konami", "Quiz Do Re Mi Fa Grand Prix 2 - Shin-Kyoku Nyuukadayo (Japan)", 0 ) +/* year rom clone machine inputs state init */ +GAME( 1994, qdrmfgp, 0, qdrmfgp, qdrmfgp, qdrmfgp_state, 0, ROT0, "Konami", "Quiz Do Re Mi Fa Grand Prix (Japan)", 0 ) +GAME( 1995, qdrmfgp2, 0, qdrmfgp2, qdrmfgp2, qdrmfgp_state, 0, ROT0, "Konami", "Quiz Do Re Mi Fa Grand Prix 2 - Shin-Kyoku Nyuukadayo (Japan)", 0 ) diff --git a/src/mame/drivers/qix.cpp b/src/mame/drivers/qix.cpp index 494878f171e..6e9ab4c07f2 100644 --- a/src/mame/drivers/qix.cpp +++ b/src/mame/drivers/qix.cpp @@ -598,7 +598,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( qix_base, qix_state ) +static MACHINE_CONFIG_START( qix_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK_OSC/4/4) /* 1.25 MHz */ @@ -1450,21 +1450,21 @@ DRIVER_INIT_MEMBER(qix_state,slither) * *************************************/ -GAME( 1981, qix, 0, qix, qix, driver_device, 0, ROT270, "Taito America Corporation", "Qix (Rev 2)", MACHINE_SUPPORTS_SAVE ) // newest set? closest to 'qix2' -GAME( 1981, qixa, qix, qix, qix, driver_device, 0, ROT270, "Taito America Corporation", "Qix (set 2, smaller roms)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, qixb, qix, qix, qix, driver_device, 0, ROT270, "Taito America Corporation", "Qix (set 2, larger roms)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, qixo, qix, qix, qix, driver_device, 0, ROT270, "Taito America Corporation", "Qix (set 3, earlier)", MACHINE_SUPPORTS_SAVE ) // oldest set / prototype? has incorrect spelling 'deutch' and doesn't allow language selection to be changed -GAME( 1981, qix2, qix, qix, qix, driver_device, 0, ROT270, "Taito America Corporation", "Qix II (Tournament)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, sdungeon, 0, mcu, sdungeon, driver_device, 0, ROT270, "Taito America Corporation", "Space Dungeon", MACHINE_SUPPORTS_SAVE ) // actually released July 1982 -GAME( 1981, sdungeona, sdungeon,mcu, sdungeon, driver_device, 0, ROT270, "Taito America Corporation", "Space Dungeon (larger roms)", MACHINE_SUPPORTS_SAVE ) // same as above but uses larger ROMs -GAMEL(1982, elecyoyo, 0, mcu, elecyoyo, driver_device, 0, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 1)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) -GAMEL(1982, elecyoyo2,elecyoyo, mcu, elecyoyo, driver_device, 0, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 2)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) -GAME( 1982, kram, 0, mcu, kram, driver_device, 0, ROT0, "Taito America Corporation", "Kram (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, kram2, kram, mcu, kram, driver_device, 0, ROT0, "Taito America Corporation", "Kram (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, kram3, kram, kram3, kram, qix_state, kram3, ROT0, "Taito America Corporation", "Kram (encrypted)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zookeep, 0, zookeep, zookeep, qix_state, zookeep, ROT0, "Taito America Corporation", "Zoo Keeper (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zookeep2, zookeep, zookeep, zookeep, qix_state, zookeep, ROT0, "Taito America Corporation", "Zoo Keeper (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zookeep3, zookeep, zookeep, zookeep, qix_state, zookeep, ROT0, "Taito America Corporation", "Zoo Keeper (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, slither, 0, slither, slither, qix_state, slither, ROT270, "Century II", "Slither (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, slithera, slither, slither, slither, qix_state, slither, ROT270, "Century II", "Slither (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, complexx, 0, qix, complexx, driver_device, 0, ROT270, "Taito America Corporation", "Complex X", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, qix, 0, qix, qix, qix_state, 0, ROT270, "Taito America Corporation", "Qix (Rev 2)", MACHINE_SUPPORTS_SAVE ) // newest set? closest to 'qix2' +GAME( 1981, qixa, qix, qix, qix, qix_state, 0, ROT270, "Taito America Corporation", "Qix (set 2, smaller roms)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, qixb, qix, qix, qix, qix_state, 0, ROT270, "Taito America Corporation", "Qix (set 2, larger roms)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, qixo, qix, qix, qix, qix_state, 0, ROT270, "Taito America Corporation", "Qix (set 3, earlier)", MACHINE_SUPPORTS_SAVE ) // oldest set / prototype? has incorrect spelling 'deutch' and doesn't allow language selection to be changed +GAME( 1981, qix2, qix, qix, qix, qix_state, 0, ROT270, "Taito America Corporation", "Qix II (Tournament)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, sdungeon, 0, mcu, sdungeon, qix_state, 0, ROT270, "Taito America Corporation", "Space Dungeon", MACHINE_SUPPORTS_SAVE ) // actually released July 1982 +GAME( 1981, sdungeona, sdungeon,mcu, sdungeon, qix_state, 0, ROT270, "Taito America Corporation", "Space Dungeon (larger roms)", MACHINE_SUPPORTS_SAVE ) // same as above but uses larger ROMs +GAMEL(1982, elecyoyo, 0, mcu, elecyoyo, qix_state, 0, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 1)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) +GAMEL(1982, elecyoyo2,elecyoyo, mcu, elecyoyo, qix_state, 0, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 2)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) +GAME( 1982, kram, 0, mcu, kram, qix_state, 0, ROT0, "Taito America Corporation", "Kram (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, kram2, kram, mcu, kram, qix_state, 0, ROT0, "Taito America Corporation", "Kram (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, kram3, kram, kram3, kram, qix_state, kram3, ROT0, "Taito America Corporation", "Kram (encrypted)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeep, 0, zookeep, zookeep, qix_state, zookeep, ROT0, "Taito America Corporation", "Zoo Keeper (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeep2, zookeep, zookeep, zookeep, qix_state, zookeep, ROT0, "Taito America Corporation", "Zoo Keeper (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeep3, zookeep, zookeep, zookeep, qix_state, zookeep, ROT0, "Taito America Corporation", "Zoo Keeper (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, slither, 0, slither, slither, qix_state, slither, ROT270, "Century II", "Slither (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, slithera, slither, slither, slither, qix_state, slither, ROT270, "Century II", "Slither (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, complexx, 0, qix, complexx, qix_state, 0, ROT270, "Taito America Corporation", "Complex X", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ql.cpp b/src/mame/drivers/ql.cpp index d176bc61843..652b93563dc 100644 --- a/src/mame/drivers/ql.cpp +++ b/src/mame/drivers/ql.cpp @@ -149,9 +149,9 @@ public: required_device m_ser1; required_device m_ser2; required_device m_ram; - required_device m_exp; - required_device m_cart; - optional_device m_qimi; + required_device m_exp; + required_device m_cart; + optional_device m_qimi; required_memory_region m_rom; required_ioport_array<8> m_y; required_ioport_array<2> m_joy; @@ -167,7 +167,7 @@ public: DECLARE_WRITE8_MEMBER( ipc_port1_w ); DECLARE_WRITE8_MEMBER( ipc_port2_w ); DECLARE_READ8_MEMBER( ipc_port2_r ); - DECLARE_READ8_MEMBER( ipc_t1_r ); + DECLARE_READ_LINE_MEMBER( ipc_t1_r ); DECLARE_READ8_MEMBER( ipc_bus_r ); DECLARE_WRITE_LINE_MEMBER( ql_baudx4_w ); DECLARE_WRITE_LINE_MEMBER( ql_comdata_w ); @@ -440,7 +440,7 @@ WRITE8_MEMBER( ql_state::ipc_port2_w ) // ipc_t1_r - //------------------------------------------------- -READ8_MEMBER( ql_state::ipc_t1_r ) +READ_LINE_MEMBER( ql_state::ipc_t1_r ) { return m_baudx4; } @@ -503,10 +503,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( ipc_io, AS_IO, 8, ql_state ) AM_RANGE(0x00, 0x7f) AM_WRITE(ipc_w) AM_RANGE(0x27, 0x28) AM_READNOP // IPC reads these to set P0 (bus) to Hi-Z mode - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(ipc_port1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(ipc_port2_r, ipc_port2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(ipc_t1_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(ipc_bus_r) AM_WRITENOP ADDRESS_MAP_END @@ -892,13 +888,18 @@ void ql_state::machine_reset() // MACHINE_CONFIG( ql ) //------------------------------------------------- -static MACHINE_CONFIG_START( ql, ql_state ) +static MACHINE_CONFIG_START( ql ) // basic machine hardware MCFG_CPU_ADD(M68008_TAG, M68008, X1/2) MCFG_CPU_PROGRAM_MAP(ql_mem) MCFG_CPU_ADD(I8749_TAG, I8749, X4) MCFG_CPU_IO_MAP(ipc_io) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(ql_state, ipc_port1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(ql_state, ipc_port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(ql_state, ipc_port2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(ql_state, ipc_t1_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(ql_state, ipc_bus_r)) // video hardware MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) @@ -1258,15 +1259,15 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1984, ql, 0, 0, ql, ql, driver_device, 0, "Sinclair Research Ltd", "QL (UK)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, ql_us, ql, 0, ql_ntsc, ql, driver_device, 0, "Sinclair Research Ltd", "QL (USA)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, ql_es, ql, 0, ql, ql_es, driver_device, 0, "Sinclair Research Ltd", "QL (Spain)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, ql_fr, ql, 0, ql, ql_fr, driver_device, 0, "Sinclair Research Ltd", "QL (France)", MACHINE_NOT_WORKING ) -COMP( 1985, ql_de, ql, 0, ql, ql_de, driver_device, 0, "Sinclair Research Ltd", "QL (Germany)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, ql_it, ql, 0, ql, ql_it, driver_device, 0, "Sinclair Research Ltd", "QL (Italy)", MACHINE_SUPPORTS_SAVE ) -COMP( 1985, ql_se, ql, 0, ql, ql_se, driver_device, 0, "Sinclair Research Ltd", "QL (Sweden)", MACHINE_NOT_WORKING ) -COMP( 1985, ql_dk, ql, 0, ql, ql_dk, driver_device, 0, "Sinclair Research Ltd", "QL (Denmark)", MACHINE_NOT_WORKING ) -COMP( 1985, ql_gr, ql, 0, ql, ql, driver_device, 0, "Sinclair Research Ltd", "QL (Greece)", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, tonto, 0, 0, opd, ql, driver_device, 0, "British Telecom Business Systems", "Merlin M1800 Tonto", MACHINE_NOT_WORKING ) -//COMP( 1986, megaopd,tonto, 0, megaopd, ql, driver_device, 0, "International Computer Limited", "MegaOPD (USA)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, ql, 0, 0, ql, ql, ql_state, 0, "Sinclair Research Ltd", "QL (UK)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, ql_us, ql, 0, ql_ntsc, ql, ql_state, 0, "Sinclair Research Ltd", "QL (USA)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, ql_es, ql, 0, ql, ql_es, ql_state, 0, "Sinclair Research Ltd", "QL (Spain)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, ql_fr, ql, 0, ql, ql_fr, ql_state, 0, "Sinclair Research Ltd", "QL (France)", MACHINE_NOT_WORKING ) +COMP( 1985, ql_de, ql, 0, ql, ql_de, ql_state, 0, "Sinclair Research Ltd", "QL (Germany)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, ql_it, ql, 0, ql, ql_it, ql_state, 0, "Sinclair Research Ltd", "QL (Italy)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, ql_se, ql, 0, ql, ql_se, ql_state, 0, "Sinclair Research Ltd", "QL (Sweden)", MACHINE_NOT_WORKING ) +COMP( 1985, ql_dk, ql, 0, ql, ql_dk, ql_state, 0, "Sinclair Research Ltd", "QL (Denmark)", MACHINE_NOT_WORKING ) +COMP( 1985, ql_gr, ql, 0, ql, ql, ql_state, 0, "Sinclair Research Ltd", "QL (Greece)", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, tonto, 0, 0, opd, ql, ql_state, 0, "British Telecom Business Systems", "Merlin M1800 Tonto", MACHINE_NOT_WORKING ) +//COMP( 1986, megaopd,tonto, 0, megaopd, ql, ql_state, 0, "International Computer Limited", "MegaOPD (USA)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/qtsbc.cpp b/src/mame/drivers/qtsbc.cpp index 124baacaa47..b1e64cb99e7 100644 --- a/src/mame/drivers/qtsbc.cpp +++ b/src/mame/drivers/qtsbc.cpp @@ -31,7 +31,7 @@ public: required_device m_terminal; DECLARE_READ8_MEMBER( qtsbc_06_r ); DECLARE_READ8_MEMBER( qtsbc_43_r ); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); required_shared_ptr m_p_ram; uint8_t m_term_data; virtual void machine_reset() override; @@ -73,12 +73,12 @@ void qtsbc_state::machine_reset() memcpy(m_p_ram, bios, 0x800); } -WRITE8_MEMBER( qtsbc_state::kbd_put ) +void qtsbc_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( qtsbc, qtsbc_state ) +static MACHINE_CONFIG_START( qtsbc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) // Mostek MK3880 MCFG_CPU_PROGRAM_MAP(qtsbc_mem) @@ -86,7 +86,7 @@ static MACHINE_CONFIG_START( qtsbc, qtsbc_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(qtsbc_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(qtsbc_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -97,5 +97,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 19??, qtsbc, 0, 0, qtsbc, qtsbc, driver_device, 0, "Computer Systems Inc.", "QT SBC +2/4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 19??, qtsbc, 0, 0, qtsbc, qtsbc, qtsbc_state, 0, "Computer Systems Inc.", "QT SBC +2/4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/quakeat.cpp b/src/mame/drivers/quakeat.cpp index f2b9c1d734c..c9c72cc2171 100644 --- a/src/mame/drivers/quakeat.cpp +++ b/src/mame/drivers/quakeat.cpp @@ -116,7 +116,7 @@ void quakeat_state::machine_start() } /*************************************************************/ -static MACHINE_CONFIG_START( quake, quakeat_state ) +static MACHINE_CONFIG_START( quake ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PENTIUM2, 233000000) /* Pentium II, 233MHz */ MCFG_CPU_PROGRAM_MAP(quake_map) @@ -148,4 +148,4 @@ ROM_START(quake) ROM_END -GAME( 1998, quake, 0, quake, quake, driver_device, 0, ROT0, "Lazer-Tron / iD Software", "Quake Arcade Tournament (Release Beta 2)", MACHINE_IS_SKELETON ) +GAME( 1998, quake, 0, quake, quake, quakeat_state, 0, ROT0, "Lazer-Tron / iD Software", "Quake Arcade Tournament (Release Beta 2)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/quantum.cpp b/src/mame/drivers/quantum.cpp index ca30f154fd7..eba48b2e37d 100644 --- a/src/mame/drivers/quantum.cpp +++ b/src/mame/drivers/quantum.cpp @@ -264,7 +264,7 @@ DISCRETE_SOUND_END * *************************************/ -static MACHINE_CONFIG_START( quantum, quantum_state ) +static MACHINE_CONFIG_START( quantum ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK / 2) @@ -397,6 +397,6 @@ ROM_END * *************************************/ -GAME( 1982, quantum, 0, quantum, quantum, driver_device, 0, ROT270, "General Computer Corporation (Atari license)", "Quantum (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, quantum1, quantum, quantum, quantum, driver_device, 0, ROT270, "General Computer Corporation (Atari license)", "Quantum (rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, quantump, quantum, quantum, quantum, driver_device, 0, ROT270, "General Computer Corporation (Atari license)", "Quantum (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, quantum, 0, quantum, quantum, quantum_state, 0, ROT270, "General Computer Corporation (Atari license)", "Quantum (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, quantum1, quantum, quantum, quantum, quantum_state, 0, ROT270, "General Computer Corporation (Atari license)", "Quantum (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, quantump, quantum, quantum, quantum, quantum_state, 0, ROT270, "General Computer Corporation (Atari license)", "Quantum (prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/quasar.cpp b/src/mame/drivers/quasar.cpp index d04955d3249..3f431eae339 100644 --- a/src/mame/drivers/quasar.cpp +++ b/src/mame/drivers/quasar.cpp @@ -103,9 +103,9 @@ READ8_MEMBER(quasar_state::quasar_sh_command_r) return m_soundlatch->read(space, 0) + (ioport("DSW2")->read() & 0x30); } -READ8_MEMBER(quasar_state::audio_t1_r) +READ_LINE_MEMBER(quasar_state::audio_t1_r) { - return (m_soundlatch->read(space, 0) == 0); + return (m_soundlatch->read(machine().dummy_space(), 0) == 0); } // memory map taken from the manual @@ -144,8 +144,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, quasar_state ) AM_RANGE(0x00, 0x7f) AM_RAM AM_RANGE(0x80, 0x80) AM_READ(quasar_sh_command_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(audio_t1_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) ADDRESS_MAP_END /************************************************************************ @@ -296,7 +294,7 @@ MACHINE_RESET_MEMBER(quasar_state,quasar) m_io_page = 8; } -static MACHINE_CONFIG_START( quasar, quasar_state ) +static MACHINE_CONFIG_START( quasar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 14318000/4) /* 14 mhz crystal divide by 4 on board */ @@ -307,6 +305,8 @@ static MACHINE_CONFIG_START( quasar, quasar_state ) MCFG_CPU_ADD("soundcpu",I8035,6000000) /* 6MHz crystal divide by 15 in CPU */ MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_portmap) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(quasar_state, audio_t1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) MCFG_MACHINE_START_OVERRIDE(quasar_state,quasar) MCFG_MACHINE_RESET_OVERRIDE(quasar_state,quasar) @@ -408,5 +408,5 @@ ROM_START( quasara ) ROM_END -GAME( 1980, quasar, 0, quasar, quasar, driver_device, 0, ROT90, "Zaccaria / Zelco", "Quasar (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, quasara, quasar, quasar, quasar, driver_device, 0, ROT90, "Zaccaria / Zelco", "Quasar (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, quasar, 0, quasar, quasar, quasar_state, 0, ROT90, "Zaccaria / Zelco", "Quasar (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, quasara, quasar, quasar, quasar, quasar_state, 0, ROT90, "Zaccaria / Zelco", "Quasar (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/queen.cpp b/src/mame/drivers/queen.cpp index 161ba40f197..2c697434347 100644 --- a/src/mame/drivers/queen.cpp +++ b/src/mame/drivers/queen.cpp @@ -270,7 +270,7 @@ void queen_state::machine_reset() -static MACHINE_CONFIG_START( queen, queen_state ) +static MACHINE_CONFIG_START( queen ) MCFG_CPU_ADD("maincpu", PENTIUM3, 533000000/16) // Celeron or Pentium 3, 533 Mhz MCFG_CPU_PROGRAM_MAP(queen_map) MCFG_CPU_IO_MAP(queen_io) @@ -308,4 +308,4 @@ ROM_START( queen ) ROM_END -GAME( 2002?, queen, 0, queen, at_keyboard, driver_device, 0, ROT0, "STG", "Queen?", MACHINE_IS_SKELETON ) +GAME( 2002?, queen, 0, queen, at_keyboard, queen_state, 0, ROT0, "STG", "Queen?", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/quizdna.cpp b/src/mame/drivers/quizdna.cpp index c500ce37ecb..e1cacaf7621 100644 --- a/src/mame/drivers/quizdna.cpp +++ b/src/mame/drivers/quizdna.cpp @@ -435,7 +435,7 @@ void quizdna_state::machine_start() } -static MACHINE_CONFIG_START( quizdna, quizdna_state ) +static MACHINE_CONFIG_START( quizdna ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MCLK/2) /* 8.000 MHz */ @@ -467,7 +467,7 @@ static MACHINE_CONFIG_START( quizdna, quizdna_state ) MCFG_SOUND_ROUTE(2, "mono", 0.10) MCFG_SOUND_ROUTE(3, "mono", 0.40) - MCFG_OKIM6295_ADD("oki", (MCLK/1024)*132, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", (MCLK/1024)*132, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END @@ -568,6 +568,6 @@ ROM_START( gekiretu ) ROM_LOAD( "quiz3.148", 0x000000, 0x000020, CRC(91267e8a) SHA1(ae5bd8efea5322c4d9986d06680a781392f9a642) ) ROM_END -GAME( 1991, gakupara, 0, gakupara, gakupara, driver_device, 0, ROT0, "NMK", "Quiz Gakuen Paradise (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, quizdna, 0, quizdna, quizdna, driver_device, 0, ROT0, "Face", "Quiz DNA no Hanran (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, gekiretu, 0, gekiretu, gekiretu, driver_device, 0, ROT0, "Face", "Quiz Gekiretsu Scramble (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, gakupara, 0, gakupara, gakupara, quizdna_state, 0, ROT0, "NMK", "Quiz Gakuen Paradise (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, quizdna, 0, quizdna, quizdna, quizdna_state, 0, ROT0, "Face", "Quiz DNA no Hanran (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, gekiretu, 0, gekiretu, gekiretu, quizdna_state, 0, ROT0, "Face", "Quiz Gekiretsu Scramble (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/quizo.cpp b/src/mame/drivers/quizo.cpp index cbcf43a90f4..da6ad3834d2 100644 --- a/src/mame/drivers/quizo.cpp +++ b/src/mame/drivers/quizo.cpp @@ -210,7 +210,7 @@ static INPUT_PORTS_START( quizo ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) INPUT_PORTS_END -static MACHINE_CONFIG_START( quizo, quizo_state ) +static MACHINE_CONFIG_START( quizo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL1/2) MCFG_CPU_PROGRAM_MAP(memmap) diff --git a/src/mame/drivers/quizpani.cpp b/src/mame/drivers/quizpani.cpp index 2ec0fe4fa5f..91cdf6ae4c6 100644 --- a/src/mame/drivers/quizpani.cpp +++ b/src/mame/drivers/quizpani.cpp @@ -193,7 +193,7 @@ static GFXDECODE_START( quizpani ) GFXDECODE_END -static MACHINE_CONFIG_START( quizpani, quizpani_state ) +static MACHINE_CONFIG_START( quizpani ) MCFG_CPU_ADD("maincpu", M68000, 10000000) MCFG_CPU_PROGRAM_MAP(quizpani_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", quizpani_state, irq4_line_hold) @@ -214,7 +214,7 @@ static MACHINE_CONFIG_START( quizpani, quizpani_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 16000000/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 16000000/4, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("nmk112", NMK112, 0) @@ -248,4 +248,4 @@ ROM_START( quizpani ) ROM_LOAD( "qz8.121", 0x200, 0x100, CRC(b4c19741) SHA1(a6d3686bad6ef2336463b89bc2d249003d9b4bcc) ) /* unknown */ ROM_END -GAME( 1993, quizpani, 0, quizpani, quizpani, driver_device, 0, ROT0, "NMK", "Quiz Panicuru Fantasy", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, quizpani, 0, quizpani, quizpani, quizpani_state, 0, ROT0, "NMK", "Quiz Panicuru Fantasy", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/quizpun2.cpp b/src/mame/drivers/quizpun2.cpp index a440a716014..477466592c2 100644 --- a/src/mame/drivers/quizpun2.cpp +++ b/src/mame/drivers/quizpun2.cpp @@ -681,7 +681,7 @@ GFXDECODE_END Machine Drivers ***************************************************************************/ -static MACHINE_CONFIG_START( quizpun2, quizpun2_state ) +static MACHINE_CONFIG_START( quizpun2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz / 2) // 4 MHz MCFG_CPU_PROGRAM_MAP(quizpun2_map) @@ -811,5 +811,5 @@ ROM_START( quizpun ) ROM_LOAD( "93c46eeprom.bin", 0, 0x80, CRC(4d244cc8) SHA1(6593d5b7ac1ebb77fee4648ad1d3d9b59a25fdc8) BAD_DUMP ) // backup ram error ROM_END -GAME( 1988, quizpun, 0, quizpun, quizpun2, driver_device, 0, ROT270, "Space Computer", "Quiz Punch", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1989, quizpun2, 0, quizpun2, quizpun2, driver_device, 0, ROT270, "Space Computer", "Quiz Punch II", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1988, quizpun, 0, quizpun, quizpun2, quizpun2_state, 0, ROT270, "Space Computer", "Quiz Punch", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1989, quizpun2, 0, quizpun2, quizpun2, quizpun2_state, 0, ROT270, "Space Computer", "Quiz Punch II", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/quizshow.cpp b/src/mame/drivers/quizshow.cpp index 3bc63a6bb56..3bbbdc0e8a8 100644 --- a/src/mame/drivers/quizshow.cpp +++ b/src/mame/drivers/quizshow.cpp @@ -378,7 +378,7 @@ void quizshow_state::machine_reset() m_tape_head_pos = 0; } -static MACHINE_CONFIG_START( quizshow, quizshow_state ) +static MACHINE_CONFIG_START( quizshow ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK / 16) // divider guessed diff --git a/src/mame/drivers/qx10.cpp b/src/mame/drivers/qx10.cpp index 39d88731b0d..1d8db52b5ed 100644 --- a/src/mame/drivers/qx10.cpp +++ b/src/mame/drivers/qx10.cpp @@ -665,7 +665,7 @@ static SLOT_INTERFACE_START(keyboard) SLOT_INTERFACE("qx10", QX10_KEYBOARD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( qx10, qx10_state ) +static MACHINE_CONFIG_START( qx10 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, MAIN_CLK / 4) MCFG_CPU_PROGRAM_MAP(qx10_mem) @@ -788,5 +788,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, qx10, 0, 0, qx10, qx10, driver_device, 0, "Epson", "QX-10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, qx10, 0, 0, qx10, qx10, qx10_state, 0, "Epson", "QX-10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/r2dtank.cpp b/src/mame/drivers/r2dtank.cpp index 0e74270699c..b12dd0b949a 100644 --- a/src/mame/drivers/r2dtank.cpp +++ b/src/mame/drivers/r2dtank.cpp @@ -441,7 +441,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( r2dtank, r2dtank_state ) +static MACHINE_CONFIG_START( r2dtank ) MCFG_CPU_ADD("maincpu", M6809,3000000) /* ?? too fast ? */ MCFG_CPU_PROGRAM_MAP(r2dtank_main_map) @@ -532,4 +532,4 @@ ROM_END * *************************************/ -GAME( 1980, r2dtank, 0, r2dtank, r2dtank, driver_device, 0, ROT270, "Sigma Enterprises Inc.", "R2D Tank", MACHINE_SUPPORTS_SAVE) +GAME( 1980, r2dtank, 0, r2dtank, r2dtank, r2dtank_state, 0, ROT270, "Sigma Enterprises Inc.", "R2D Tank", MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/r2dx_v33.cpp b/src/mame/drivers/r2dx_v33.cpp index 4e876c7a23c..6752f8bf864 100644 --- a/src/mame/drivers/r2dx_v33.cpp +++ b/src/mame/drivers/r2dx_v33.cpp @@ -764,7 +764,7 @@ static ADDRESS_MAP_START( r2dx_oki_map, AS_0, 8, r2dx_v33_state ) AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("okibank") ADDRESS_MAP_END -static MACHINE_CONFIG_START( rdx_v33, r2dx_v33_state ) +static MACHINE_CONFIG_START( rdx_v33 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V33, 32000000/2 ) // ? @@ -796,12 +796,12 @@ static MACHINE_CONFIG_START( rdx_v33, r2dx_v33_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz/28, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz/28, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_DEVICE_ADDRESS_MAP(AS_0, r2dx_oki_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( nzerotea, r2dx_v33_state ) +static MACHINE_CONFIG_START( nzerotea ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V33,XTAL_32MHz/2) /* verified on pcb */ @@ -838,7 +838,7 @@ static MACHINE_CONFIG_START( nzerotea, r2dx_v33_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) diff --git a/src/mame/drivers/r9751.cpp b/src/mame/drivers/r9751.cpp index 1133dc90ca5..cf48e13017b 100644 --- a/src/mame/drivers/r9751.cpp +++ b/src/mame/drivers/r9751.cpp @@ -81,6 +81,8 @@ public: { } + void kbd_put(u8 data); + DECLARE_READ32_MEMBER(r9751_mmio_5ff_r); DECLARE_WRITE32_MEMBER(r9751_mmio_5ff_w); DECLARE_READ32_MEMBER(r9751_mmio_ff01_r); @@ -113,6 +115,7 @@ private: uint32_t smioc_dma_bank; uint32_t fdd_dma_bank; attotime timer_32khz_last; + uint8_t m_term_data; // End registers address_space *m_mem; @@ -126,6 +129,10 @@ private: virtual void machine_reset() override; }; +void r9751_state::kbd_put(u8 data) +{ + m_term_data = data; +} uint32_t r9751_state::swap_uint32( uint32_t val ) { @@ -492,7 +499,7 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( r9751, r9751_state ) +static MACHINE_CONFIG_START( r9751 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68030, 20000000) MCFG_CPU_PROGRAM_MAP(r9751_mem) @@ -500,6 +507,7 @@ static MACHINE_CONFIG_START( r9751, r9751_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(r9751_state, kbd_put)) /* disk hardware */ MCFG_DEVICE_ADD("pdc", PDC, 0) @@ -536,5 +544,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1988, r9751, 0, 0, r9751, r9751, r9751_state, r9751, "ROLM Systems, Inc.", "ROLM 9751 Model 10", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1988, r9751, 0, 0, r9751, r9751, r9751_state, r9751, "ROLM Systems, Inc.", "ROLM 9751 Model 10", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/rabbit.cpp b/src/mame/drivers/rabbit.cpp index 22befac6560..8fa73b9ec36 100644 --- a/src/mame/drivers/rabbit.cpp +++ b/src/mame/drivers/rabbit.cpp @@ -135,6 +135,7 @@ public: int m_banking; std::unique_ptr m_tilemap_ram[4]; tilemap_t *m_tilemap[4]; + emu_timer *m_blit_done_timer; DECLARE_WRITE32_MEMBER(tilemap0_w); DECLARE_WRITE32_MEMBER(tilemap1_w); @@ -439,6 +440,8 @@ void rabbit_state::video_start() m_sprite_bitmap = std::make_unique(0x1000,0x1000); m_sprite_clip.set(0, 0x1000-1, 0, 0x1000-1); + m_blit_done_timer = timer_alloc(TIMER_BLIT_DONE); + save_pointer(NAME(m_tilemap_ram[0].get()), 0x20000/4); save_pointer(NAME(m_tilemap_ram[1].get()), 0x20000/4); save_pointer(NAME(m_tilemap_ram[2].get()), 0x20000/4); @@ -631,7 +634,7 @@ void rabbit_state::do_blit() if (!blt_amount) { if(BLITLOG) osd_printf_debug("end of blit list\n"); - timer_set(attotime::from_usec(500), TIMER_BLIT_DONE); + m_blit_done_timer->adjust(attotime::from_usec(500)); return; } @@ -895,7 +898,7 @@ INTERRUPT_GEN_MEMBER(rabbit_state::vblank_interrupt) m_maincpu->set_input_line(m_vblirqlevel, HOLD_LINE); } -static MACHINE_CONFIG_START( rabbit, rabbit_state ) +static MACHINE_CONFIG_START( rabbit ) MCFG_CPU_ADD("maincpu", M68EC020, XTAL_24MHz) MCFG_CPU_PROGRAM_MAP(rabbit_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", rabbit_state, vblank_interrupt) diff --git a/src/mame/drivers/radio86.cpp b/src/mame/drivers/radio86.cpp index e63771694aa..873f6265f88 100644 --- a/src/mame/drivers/radio86.cpp +++ b/src/mame/drivers/radio86.cpp @@ -343,7 +343,7 @@ GFXDECODE_END /* Machine driver */ -static MACHINE_CONFIG_START( radio86, radio86_state ) +static MACHINE_CONFIG_START( radio86 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_16MHz / 9) MCFG_CPU_PROGRAM_MAP(radio86_mem) @@ -554,15 +554,15 @@ ROM_START( impuls03 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, radio86, 0, 0, radio86, radio86, radio86_state, radio86, "", "Radio-86RK", 0) -COMP( 1986, radio16, radio86, 0, radio16, radio86, radio86_state, radio86, "", "Radio-86RK (16K RAM)", 0) -COMP( 1986, kr03, radio86, 0, radio86, radio86, radio86_state, radio86, "Elektronika", "KR-03", 0) -COMP( 1986, radio4k, radio86, 0, radio86, radio86, radio86_state, radio86, "", "Radio-86RK (4K ROM)", 0) -COMP( 1986, radiorom, radio86, 0, radiorom, radio86, radio86_state, radio86, "", "Radio-86RK (ROM-Disk)", 0) -COMP( 1986, radioram, radio86, 0, radioram, radio86, radio86_state, radioram, "", "Radio-86RK (ROM/RAM Disk)", 0) -COMP( 1986, spektr01, radio86, 0, radio86, radio86, radio86_state, radio86, "", "Spektr-001", 0) -COMP( 1986, rk7007, radio86, 0, rk7007, ms7007, radio86_state, radio86, "", "Radio-86RK (MS7007)", 0) -COMP( 1986, rk700716, radio86, 0, rk700716, ms7007, radio86_state, radio86, "", "Radio-86RK (MS7007 16K RAM)", 0) -COMP( 1986, mikron2, radio86, 0, mikron2, radio86, radio86_state, radio86, "", "Mikron-2", 0) -COMP( 1986, impuls03, radio86, 0, impuls03, radio86, radio86_state, radio86, "", "Impuls-03", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, radio86, 0, 0, radio86, radio86, radio86_state, radio86, "", "Radio-86RK", 0 ) +COMP( 1986, radio16, radio86, 0, radio16, radio86, radio86_state, radio86, "", "Radio-86RK (16K RAM)", 0 ) +COMP( 1986, kr03, radio86, 0, radio86, radio86, radio86_state, radio86, "Elektronika", "KR-03", 0 ) +COMP( 1986, radio4k, radio86, 0, radio86, radio86, radio86_state, radio86, "", "Radio-86RK (4K ROM)", 0 ) +COMP( 1986, radiorom, radio86, 0, radiorom, radio86, radio86_state, radio86, "", "Radio-86RK (ROM-Disk)", 0 ) +COMP( 1986, radioram, radio86, 0, radioram, radio86, radio86_state, radioram, "", "Radio-86RK (ROM/RAM Disk)", 0 ) +COMP( 1986, spektr01, radio86, 0, radio86, radio86, radio86_state, radio86, "", "Spektr-001", 0 ) +COMP( 1986, rk7007, radio86, 0, rk7007, ms7007, radio86_state, radio86, "", "Radio-86RK (MS7007)", 0 ) +COMP( 1986, rk700716, radio86, 0, rk700716, ms7007, radio86_state, radio86, "", "Radio-86RK (MS7007 16K RAM)", 0 ) +COMP( 1986, mikron2, radio86, 0, mikron2, radio86, radio86_state, radio86, "", "Mikron-2", 0 ) +COMP( 1986, impuls03, radio86, 0, impuls03, radio86, radio86_state, radio86, "", "Impuls-03", 0 ) diff --git a/src/mame/drivers/raiden.cpp b/src/mame/drivers/raiden.cpp index 03c61ce25ea..9e5eb1b54f7 100644 --- a/src/mame/drivers/raiden.cpp +++ b/src/mame/drivers/raiden.cpp @@ -318,7 +318,7 @@ INTERRUPT_GEN_MEMBER(raiden_state::raiden_interrupt) device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xc8/4); /* VBL */ } -static MACHINE_CONFIG_START( raiden, raiden_state ) +static MACHINE_CONFIG_START( raiden ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30,XTAL_20MHz/2) /* NEC V30 CPU, 20MHz verified on pcb */ @@ -343,7 +343,7 @@ static MACHINE_CONFIG_START( raiden, raiden_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(raiden_state, screen_update_raiden) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", raiden) @@ -357,7 +357,7 @@ static MACHINE_CONFIG_START( raiden, raiden_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) // frequency and pin 7 verified + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, PIN7_HIGH) // frequency and pin 7 verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -451,6 +451,10 @@ ROM_START( raiden ) /* from a board with 2 daughter cards, no official board #s? ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.u203", 0x00000, 0x10000, CRC(8f927822) SHA1(592f2719f2c448c3b4b239eeaec078b411e12dbb) ) + + ROM_REGION( 0x0200, "proms", 0 ) // N82S135N bipolar PROMs + ROM_LOAD( "rd010.u087", 0x0000, 0x0100, NO_DUMP ) + ROM_LOAD( "rd012.u094", 0x0100, 0x0100, NO_DUMP ) ROM_END ROM_START( raidena ) @@ -484,6 +488,10 @@ ROM_START( raidena ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.u203", 0x00000, 0x10000, CRC(8f927822) SHA1(592f2719f2c448c3b4b239eeaec078b411e12dbb) ) + + ROM_REGION( 0x0200, "proms", 0 ) // N82S135N bipolar PROMs + ROM_LOAD( "rd010.u087", 0x0000, 0x0100, NO_DUMP ) + ROM_LOAD( "rd012.u094", 0x0100, 0x0100, NO_DUMP ) ROM_END ROM_START( raident ) @@ -517,6 +525,10 @@ ROM_START( raident ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.u203", 0x00000, 0x10000, CRC(8f927822) SHA1(592f2719f2c448c3b4b239eeaec078b411e12dbb) ) + + ROM_REGION( 0x0200, "proms", 0 ) // N82S135N bipolar PROMs + ROM_LOAD( "rd010.u087", 0x0000, 0x0100, NO_DUMP ) + ROM_LOAD( "rd012.u094", 0x0100, 0x0100, NO_DUMP ) ROM_END ROM_START( raidenu ) @@ -550,6 +562,10 @@ ROM_START( raidenu ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.u203", 0x00000, 0x10000, CRC(8f927822) SHA1(592f2719f2c448c3b4b239eeaec078b411e12dbb) ) + + ROM_REGION( 0x0200, "proms", 0 ) // N82S135N bipolar PROMs + ROM_LOAD( "rd010.u087", 0x0000, 0x0100, NO_DUMP ) + ROM_LOAD( "rd012.u094", 0x0100, 0x0100, NO_DUMP ) ROM_END ROM_START( raidenk ) /* Same board as above. Not sure why the sound CPU would be decrypted */ @@ -583,6 +599,10 @@ ROM_START( raidenk ) /* Same board as above. Not sure why the sound CPU would be ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.u203", 0x00000, 0x10000, CRC(8f927822) SHA1(592f2719f2c448c3b4b239eeaec078b411e12dbb) ) + + ROM_REGION( 0x0200, "proms", 0 ) // N82S135N bipolar PROMs + ROM_LOAD( "rd010.u087", 0x0000, 0x0100, NO_DUMP ) + ROM_LOAD( "rd012.u094", 0x0100, 0x0100, NO_DUMP ) ROM_END ROM_START( raidenkb ) /* Korean bootleg board. ROMs for main, sub, audiocpu, chars and oki match raidenk, while object and tile ROMs are differently split */ @@ -626,6 +646,9 @@ ROM_START( raidenkb ) /* Korean bootleg board. ROMs for main, sub, audiocpu, cha ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.u203", 0x00000, 0x10000, CRC(8f927822) SHA1(592f2719f2c448c3b4b239eeaec078b411e12dbb) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "82s147.h7", 0x0000, 0x0200, NO_DUMP ) ROM_END ROM_START( raidenb )/* Different hardware, Main & Sub CPU code not encrypted. */ @@ -696,6 +719,10 @@ ROM_START( raidenua )/* Different hardware, Main, Sub & sound CPU code not encry ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "7.x10", 0x00000, 0x10000, CRC(2051263e) SHA1(dff96caa11adf619360d88704e3af8427ddfe524) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "prom.n2", 0x0000, 0x0100, NO_DUMP ) + ROM_LOAD( "prom.u3", 0x0100, 0x0100, NO_DUMP ) ROM_END @@ -752,7 +779,7 @@ GAME( 1990, raidenk, raiden, raiden, raiden, raiden_state, raiden, ROT270, " GAME( 1990, raidenkb, raiden, raiden, raiden, raiden_state, raiden, ROT270, "bootleg", "Raiden (Korea, bootleg)", MACHINE_SUPPORTS_SAVE ) /* Alternate hardware; SEI8904 + SEI9008 PCBs. Main & Sub CPU code not encrypted */ -GAME( 1990, raidenua, raiden, raidenu, raiden, driver_device, 0, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, raidenua, raiden, raidenu, raiden, raiden_state, 0, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden (US set 2)", MACHINE_SUPPORTS_SAVE ) /* Alternate hardware. Main, Sub & Sound CPU code not encrypted. It also sports Seibu custom CRTC. */ -GAME( 1990, raidenb, raiden, raidenb, raiden, driver_device, 0, ROT270, "Seibu Kaihatsu", "Raiden (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, raidenb, raiden, raidenb, raiden, raiden_state, 0, ROT270, "Seibu Kaihatsu", "Raiden (set 3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/raiden2.cpp b/src/mame/drivers/raiden2.cpp index 2893c645da2..9e7b93f276c 100644 --- a/src/mame/drivers/raiden2.cpp +++ b/src/mame/drivers/raiden2.cpp @@ -1416,7 +1416,7 @@ GFXDECODE_END /* MACHINE DRIVERS */ -static MACHINE_CONFIG_START( raiden2, raiden2_state ) +static MACHINE_CONFIG_START( raiden2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30,XTAL_32MHz/2) /* verified on pcb */ @@ -1455,10 +1455,10 @@ static MACHINE_CONFIG_START( raiden2, raiden2_state ) MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_OKIM6295_ADD("oki1", XTAL_28_63636MHz/28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", XTAL_28_63636MHz/28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) - MCFG_OKIM6295_ADD("oki2", XTAL_28_63636MHz/28, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", XTAL_28_63636MHz/28, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -1487,7 +1487,7 @@ static MACHINE_CONFIG_DERIVED( raidendx, raiden2 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( zeroteam, raiden2_state ) +static MACHINE_CONFIG_START( zeroteam ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30,XTAL_32MHz/2) /* verified on pcb */ @@ -1526,7 +1526,7 @@ static MACHINE_CONFIG_START( zeroteam, raiden2_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000/* ? */, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000/* ? */, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index f80d79758d5..c254ee9c636 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -660,10 +660,10 @@ private: required_device m_i8088; required_device m_z80; - required_device m_fdc; + required_device m_fdc; optional_device m_hdc; - required_device m_corvus_hdc; + required_device m_corvus_hdc; required_device m_mpsc; required_device m_dbrg_A; @@ -957,7 +957,7 @@ AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("kbdser", i8251_device, status_r, control_w // See boot rom @1EA6: 0x27 (<- RESET EXTENDED COMM OPTION ) // Corvus B/H harddisk controller (incompatible with EXT.COMM OPTION): -AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("corvus", corvus_hdc_t, read, write) +AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("corvus", corvus_hdc_device, read, write) AM_RANGE(0x21, 0x21) AM_READ(corvus_status_r) // =========================================================== @@ -1032,14 +1032,14 @@ AM_RANGE(0x00, 0x00) AM_READWRITE(z80_latch_r, z80_latch_w) AM_RANGE(0x20, 0x20) AM_READWRITE(z80_generalstat_r, z80_diskdiag_read_w) // read to port 0x20 used by MS-DOS 2.x diskette loader. AM_RANGE(0x21, 0x21) AM_READWRITE(z80_generalstat_r, z80_diskdiag_write_w) AM_RANGE(0x40, 0x40) AM_READWRITE(z80_diskstatus_r, z80_diskcontrol_w) -AM_RANGE(0x60, 0x63) AM_DEVREADWRITE(FD1793_TAG, fd1793_t, read, write) +AM_RANGE(0x60, 0x63) AM_DEVREADWRITE(FD1793_TAG, fd1793_device, read, write) // Z80 I/O shadow area > $80 AM_RANGE(0x80, 0x80) AM_READWRITE(z80_latch_r, z80_latch_w) AM_RANGE(0xA0, 0xA0) AM_READWRITE(z80_generalstat_r, z80_diskdiag_read_w) // read to port 0x20 used by MS-DOS 2.x diskette loader. AM_RANGE(0xA1, 0xA1) AM_READWRITE(z80_generalstat_r, z80_diskdiag_write_w) AM_RANGE(0xC0, 0xC0) AM_READWRITE(z80_diskstatus_r, z80_diskcontrol_w) -AM_RANGE(0xE0, 0xE3) AM_DEVREADWRITE(FD1793_TAG, fd1793_t, read, write) +AM_RANGE(0xE0, 0xE3) AM_DEVREADWRITE(FD1793_TAG, fd1793_device, read, write) ADDRESS_MAP_END /* Input ports */ @@ -3210,7 +3210,7 @@ static ADDRESS_MAP_START( upd7220_map, AS_0, 16, rainbow_state) AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r, vram_w) AM_SHARE("vram") ADDRESS_MAP_END -static MACHINE_CONFIG_START(rainbow, rainbow_state) +static MACHINE_CONFIG_START(rainbow) MCFG_DEFAULT_LAYOUT(layout_rainbow) /* basic machine hardware */ @@ -3458,7 +3458,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP(1982, rainbow100a, rainbow, 0, rainbow, rainbow100b_in, driver_device, 0, "Digital Equipment Corporation", "Rainbow 100-A", MACHINE_IS_SKELETON) -COMP(1983, rainbow, 0, 0, rainbow, rainbow100b_in, driver_device, 0, "Digital Equipment Corporation", "Rainbow 100-B", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS) -COMP(1985, rainbow190, rainbow, 0, rainbow, rainbow100b_in, driver_device, 0, "Digital Equipment Corporation", "Rainbow 190-B", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_COLORS) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP(1982, rainbow100a, rainbow, 0, rainbow, rainbow100b_in, rainbow_state, 0, "Digital Equipment Corporation", "Rainbow 100-A", MACHINE_IS_SKELETON) +COMP(1983, rainbow, 0, 0, rainbow, rainbow100b_in, rainbow_state, 0, "Digital Equipment Corporation", "Rainbow 100-B", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS) +COMP(1985, rainbow190, rainbow, 0, rainbow, rainbow100b_in, rainbow_state, 0, "Digital Equipment Corporation", "Rainbow 190-B", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_COLORS) diff --git a/src/mame/drivers/rallyx.cpp b/src/mame/drivers/rallyx.cpp index 7ff9e2e5800..1e8b5cd881c 100644 --- a/src/mame/drivers/rallyx.cpp +++ b/src/mame/drivers/rallyx.cpp @@ -841,7 +841,7 @@ INTERRUPT_GEN_MEMBER(rallyx_state::jungler_vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( rallyx, rallyx_state ) +static MACHINE_CONFIG_START( rallyx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ @@ -885,7 +885,7 @@ static MACHINE_CONFIG_START( rallyx, rallyx_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jungler, rallyx_state ) +static MACHINE_CONFIG_START( jungler ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */ @@ -1409,20 +1409,20 @@ ROM_END * *************************************/ -GAME( 1980, rallyx, 0, rallyx, rallyx, driver_device, 0, ROT0, "Namco", "Rally X (32k Ver.?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, rallyxa, rallyx, rallyx, rallyx, driver_device, 0, ROT0, "Namco", "Rally X", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, rallyxm, rallyx, rallyx, rallyx, driver_device, 0, ROT0, "Namco (Midway license)", "Rally X (Midway)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, rallyxmr, rallyx, rallyx, rallyx, driver_device, 0, ROT0, "bootleg (Model Racing)", "Rally X (Model Racing bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, nrallyx, 0, rallyx, nrallyx, driver_device, 0, ROT0, "Namco", "New Rally X", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, nrallyxb, nrallyx, rallyx, nrallyx, driver_device, 0, ROT0, "Namco", "New Rally X (bootleg?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, jungler, 0, jungler, jungler, driver_device, 0, ROT90, "Konami", "Jungler", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, junglers, jungler, jungler, jungler, driver_device, 0, ROT90, "Konami (Stern Electronics license)", "Jungler (Stern Electronics)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, jackler, jungler, jungler, jungler, driver_device, 0, ROT90, "bootleg", "Jackler (Jungler bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, savanna, jungler, jungler, jungler, driver_device, 0, ROT90, "bootleg (Olympia)", "Savanna (Jungler bootleg)", MACHINE_SUPPORTS_SAVE ) // or licensed from Konami? -GAME( 1982, tactcian, 0, tactcian, tactcian, driver_device, 0, ROT90, "Konami (Sega license)", "Tactician (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, tactcian2,tactcian, tactcian, tactcian, driver_device, 0, ROT90, "Konami (Sega license)", "Tactician (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, locomotn, 0, locomotn, locomotn, driver_device, 0, ROT90, "Konami (Centuri license)", "Loco-Motion", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, gutangtn, locomotn, locomotn, locomotn, driver_device, 0, ROT90, "Konami (Sega license)", "Guttang Gottong", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, cottong, locomotn, locomotn, locomotn, driver_device, 0, ROT90, "bootleg", "Cotocoto Cottong", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, locoboot, locomotn, locomotn, locomotn, driver_device, 0, ROT90, "bootleg", "Loco-Motion (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, commsega, 0, commsega, commsega, driver_device, 0, ROT90, "Sega", "Commando (Sega)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, rallyx, 0, rallyx, rallyx, rallyx_state, 0, ROT0, "Namco", "Rally X (32k Ver.?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, rallyxa, rallyx, rallyx, rallyx, rallyx_state, 0, ROT0, "Namco", "Rally X", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, rallyxm, rallyx, rallyx, rallyx, rallyx_state, 0, ROT0, "Namco (Midway license)", "Rally X (Midway)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, rallyxmr, rallyx, rallyx, rallyx, rallyx_state, 0, ROT0, "bootleg (Model Racing)", "Rally X (Model Racing bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, nrallyx, 0, rallyx, nrallyx, rallyx_state, 0, ROT0, "Namco", "New Rally X", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, nrallyxb, nrallyx, rallyx, nrallyx, rallyx_state, 0, ROT0, "Namco", "New Rally X (bootleg?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, jungler, 0, jungler, jungler, rallyx_state, 0, ROT90, "Konami", "Jungler", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, junglers, jungler, jungler, jungler, rallyx_state, 0, ROT90, "Konami (Stern Electronics license)", "Jungler (Stern Electronics)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, jackler, jungler, jungler, jungler, rallyx_state, 0, ROT90, "bootleg", "Jackler (Jungler bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, savanna, jungler, jungler, jungler, rallyx_state, 0, ROT90, "bootleg (Olympia)", "Savanna (Jungler bootleg)", MACHINE_SUPPORTS_SAVE ) // or licensed from Konami? +GAME( 1982, tactcian, 0, tactcian, tactcian, rallyx_state, 0, ROT90, "Konami (Sega license)", "Tactician (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, tactcian2,tactcian, tactcian, tactcian, rallyx_state, 0, ROT90, "Konami (Sega license)", "Tactician (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, locomotn, 0, locomotn, locomotn, rallyx_state, 0, ROT90, "Konami (Centuri license)", "Loco-Motion", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, gutangtn, locomotn, locomotn, locomotn, rallyx_state, 0, ROT90, "Konami (Sega license)", "Guttang Gottong", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, cottong, locomotn, locomotn, locomotn, rallyx_state, 0, ROT90, "bootleg", "Cotocoto Cottong", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, locoboot, locomotn, locomotn, locomotn, rallyx_state, 0, ROT90, "bootleg", "Loco-Motion (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, commsega, 0, commsega, commsega, rallyx_state, 0, ROT90, "Sega", "Commando (Sega)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rambo.cpp b/src/mame/drivers/rambo.cpp index 34dc5356d07..1f9c1f1d1ea 100644 --- a/src/mame/drivers/rambo.cpp +++ b/src/mame/drivers/rambo.cpp @@ -138,7 +138,7 @@ void rambo_state::machine_reset() m_port_l = 0; } -static MACHINE_CONFIG_START( rambo, rambo_state ) +static MACHINE_CONFIG_START( rambo ) MCFG_CPU_ADD("maincpu", ATMEGA2560, MASTER_CLOCK) MCFG_CPU_PROGRAM_MAP(rambo_prg_map) @@ -223,5 +223,5 @@ ROM_START( metamaq2 ) ROM_REGION( 0x1000, "eeprom", ROMREGION_ERASEFF ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -COMP(2012, metamaq2, 0, 0, rambo, 0, rambo_state, rambo, "Metamaquina", "Metamaquina 2 desktop 3d printer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP(2012, metamaq2, 0, 0, rambo, 0, rambo_state, rambo, "Metamaquina", "Metamaquina 2 desktop 3d printer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/rampart.cpp b/src/mame/drivers/rampart.cpp index 7857d2ea4d3..e77fbbfb7d9 100644 --- a/src/mame/drivers/rampart.cpp +++ b/src/mame/drivers/rampart.cpp @@ -335,7 +335,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( rampart, rampart_state ) +static MACHINE_CONFIG_START( rampart ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/2) @@ -373,7 +373,7 @@ static MACHINE_CONFIG_START( rampart, rampart_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", MASTER_CLOCK/4/3, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", MASTER_CLOCK/4/3, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MCFG_SOUND_ADD("ymsnd", YM2413, MASTER_CLOCK/4) @@ -496,6 +496,6 @@ DRIVER_INIT_MEMBER(rampart_state,rampart) * *************************************/ -GAME( 1990, rampart, 0, rampart, rampart, rampart_state, rampart, ROT0, "Atari Games", "Rampart (Trackball)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, rampart, 0, rampart, rampart, rampart_state, rampart, ROT0, "Atari Games", "Rampart (Trackball)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, rampart2p,rampart, rampart, ramprt2p, rampart_state, rampart, ROT0, "Atari Games", "Rampart (Joystick)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, rampartj, rampart, rampart, rampartj, rampart_state, rampart, ROT0, "Atari Games", "Rampart (Japan, Joystick)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ramtek.cpp b/src/mame/drivers/ramtek.cpp index 7fc1c8fc736..74f14a88032 100644 --- a/src/mame/drivers/ramtek.cpp +++ b/src/mame/drivers/ramtek.cpp @@ -69,7 +69,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -112,7 +112,7 @@ void ramtek_state::video_start() { } -static MACHINE_CONFIG_START( ramtek, ramtek_state ) +static MACHINE_CONFIG_START( ramtek ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -242,10 +242,10 @@ ROM_START( trivia ) ROM_LOAD( "550548.e3", 0x0000, 0x0020, CRC(2b7c6a5e) SHA1(943cc3901c651bfe5bf11a40c27801952731b6de) ) ROM_END -GAME( 1973, vollyrmt, 0, ramtek, 0, driver_device, 0, ROT0, "Ramtek", "Volly (Ramtek) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1973, hockyrmt, 0, ramtek, 0, driver_device, 0, ROT0, "Ramtek", "Hockey (Ramtek) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1973, soccrrmt, 0, ramtek, 0, driver_device, 0, ROT0, "Ramtek", "Soccer (Ramtek) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1974, wipeormt, 0, ramtek, 0, driver_device, 0, ROT0, "Ramtek", "Wipeout (Ramtek) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1974, cleanswp, 0, ramtek, 0, driver_device, 0, ROT0, "Ramtek", "Clean Sweep [TTL]", MACHINE_IS_SKELETON ) -GAME( 1974, bballrmt, 0, ramtek, 0, driver_device, 0, ROT0, "Ramtek", "Baseball (Ramtek) [TTL]", MACHINE_IS_SKELETON ) -GAME( 1975, trivia, 0, ramtek, 0, driver_device, 0, ROT0, "Ramtek", "Trivia (Rev B) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1973, vollyrmt, 0, ramtek, 0, ramtek_state, 0, ROT0, "Ramtek", "Volly (Ramtek) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1973, hockyrmt, 0, ramtek, 0, ramtek_state, 0, ROT0, "Ramtek", "Hockey (Ramtek) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1973, soccrrmt, 0, ramtek, 0, ramtek_state, 0, ROT0, "Ramtek", "Soccer (Ramtek) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1974, wipeormt, 0, ramtek, 0, ramtek_state, 0, ROT0, "Ramtek", "Wipeout (Ramtek) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1974, cleanswp, 0, ramtek, 0, ramtek_state, 0, ROT0, "Ramtek", "Clean Sweep [TTL]", MACHINE_IS_SKELETON ) +GAME( 1974, bballrmt, 0, ramtek, 0, ramtek_state, 0, ROT0, "Ramtek", "Baseball (Ramtek) [TTL]", MACHINE_IS_SKELETON ) +GAME( 1975, trivia, 0, ramtek, 0, ramtek_state, 0, ROT0, "Ramtek", "Trivia (Rev B) [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/rastan.cpp b/src/mame/drivers/rastan.cpp index cc565b9b069..c584bf4ae0c 100644 --- a/src/mame/drivers/rastan.cpp +++ b/src/mame/drivers/rastan.cpp @@ -151,6 +151,7 @@ Note: The 'rastsagaa' set's rom numbers were named as RSxx_37 through RSxx_42 skipping RSxx_41. It's doubtful that Taito would reuse those numbers in 2 different sets with different data/code. The names have been corrected to known files names where the code matched. + ***************************************************************************/ #include "emu.h" @@ -361,7 +362,7 @@ void rastan_state::machine_reset() } -static MACHINE_CONFIG_START( rastan, rastan_state ) +static MACHINE_CONFIG_START( rastan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ @@ -407,7 +408,7 @@ static MACHINE_CONFIG_START( rastan, rastan_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* verified on pcb */ MCFG_MSM5205_VCLK_CB(WRITELINE(rastan_state, rastan_msm5205_vck)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MCFG_DEVICE_ADD("adpcm_sel", LS157, 0) @@ -489,6 +490,34 @@ ROM_START( rastana ) ROM_LOAD( "b04-20.76", 0x0000, 0x10000, CRC(fd1a34cc) SHA1(b1682959521fa295769207b75cf7d839e9ec95fd) ) /* samples are 4bit ADPCM */ ROM_END +ROM_START( rastanb ) /* Earlier code base, but uses 2 US region roms and shows Taito Corporation Japan instead of Taito America Corporation */ + ROM_REGION( 0x60000, "maincpu", 0 ) /* 6*64k for 68000 code */ + ROM_LOAD16_BYTE( "b04-14.19", 0x00000, 0x10000, CRC(a38ac909) SHA1(66d792fee03c6bd87d15060b9d5cae74137c5ebd) ) /* These two are from the US rastanub set below */ + ROM_LOAD16_BYTE( "b04-21.7", 0x00001, 0x10000, CRC(7c8dde9a) SHA1(0cfc3b4f3bc7b940a6c07267ac95e4aae25801ea) ) /* These two are from the US rastanub set below */ + ROM_LOAD16_BYTE( "b04-27.20", 0x20000, 0x10000, CRC(ce37694b) SHA1(343c35d93f59c0696104e6934063057d117f4d9f) ) + ROM_LOAD16_BYTE( "b04-26.8", 0x20001, 0x10000, CRC(fbdb98c7) SHA1(717aabf6ce0c7c6107c4bcaae646f7c67b644a54) ) + ROM_LOAD16_BYTE( "b04-29.21", 0x40000, 0x10000, CRC(90d7c6e8) SHA1(6a36cd6db04fcefbf0487f574fccb0eab94e058f) ) + ROM_LOAD16_BYTE( "b04-28.9", 0x40001, 0x10000, CRC(d6440242) SHA1(ba73ca01cc58a8e7bb4d6b7b927658445e97168f) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) ) + + ROM_REGION( 0x080000, "gfx1", 0 ) + ROM_LOAD( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) ) + ROM_LOAD( "b04-03.39", 0x20000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) ) + ROM_LOAD( "b04-02.67", 0x40000, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) ) + ROM_LOAD( "b04-04.66", 0x60000, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) ) + + ROM_REGION( 0x080000, "gfx2", 0 ) + ROM_LOAD( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) ) + ROM_LOAD( "b04-07.14", 0x20000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) ) + ROM_LOAD( "b04-06.28", 0x40000, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) ) + ROM_LOAD( "b04-08.27", 0x60000, 0x20000, CRC(feafca05) SHA1(9de9ff1fcf037e5ab25c181b678245041238d6ae) ) + + ROM_REGION( 0x10000, "adpcm", 0 ) /* MSM5205 samples */ + ROM_LOAD( "b04-20.76", 0x0000, 0x10000, CRC(fd1a34cc) SHA1(b1682959521fa295769207b75cf7d839e9ec95fd) ) +ROM_END + /* Byte changes in Rev 1 US sets: ROM 0x5203 0x520B @@ -591,6 +620,34 @@ ROM_START( rastanub ) /* This US set is based on the earlier code */ ROM_END ROM_START( rastsaga ) + ROM_REGION( 0x60000, "maincpu", 0 ) /* 6*64k for 68000 code */ + ROM_LOAD16_BYTE( "b04-32.19", 0x00000, 0x10000, CRC(1c91dbb1) SHA1(17fc55e8546cc0b847aebd67fb4570a1e9f128f3) ) + ROM_LOAD16_BYTE( "b04-31.7", 0x00001, 0x10000, CRC(4c62e89e) SHA1(41673a1375a4ff3e59edbb6194915bb2348b70dd) ) + ROM_LOAD16_BYTE( "b04-34-1.20", 0x20000, 0x10000, CRC(8f54dd19) SHA1(ed9c221ebce3ba76c39dc83fed58acff3028e6c9) ) + ROM_LOAD16_BYTE( "b04-33-1.8", 0x20001, 0x10000, CRC(810a02a3) SHA1(813a8d4d15d02c131dcae831d1b449c754d91f44) ) + ROM_LOAD16_BYTE( "b04-36.21", 0x40000, 0x10000, CRC(32e286c0) SHA1(7f80aff6d9f5700932d970f7ebdc9efe10db7f76) ) + ROM_LOAD16_BYTE( "b04-35.9", 0x40001, 0x10000, CRC(ee5ec5bc) SHA1(8bdd2cdcb4b664131ef9a394b3ab30b0fde71b02) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) ) + + ROM_REGION( 0x080000, "gfx1", 0 ) + ROM_LOAD( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) ) + ROM_LOAD( "b04-03.39", 0x20000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) ) + ROM_LOAD( "b04-02.67", 0x40000, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) ) + ROM_LOAD( "b04-04.66", 0x60000, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) ) + + ROM_REGION( 0x080000, "gfx2", 0 ) + ROM_LOAD( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) ) + ROM_LOAD( "b04-07.14", 0x20000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) ) + ROM_LOAD( "b04-06.28", 0x40000, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) ) + ROM_LOAD( "b04-08.27", 0x60000, 0x20000, CRC(feafca05) SHA1(9de9ff1fcf037e5ab25c181b678245041238d6ae) ) + + ROM_REGION( 0x10000, "adpcm", 0 ) /* MSM5205 samples */ + ROM_LOAD( "b04-20.76", 0x0000, 0x10000, CRC(fd1a34cc) SHA1(b1682959521fa295769207b75cf7d839e9ec95fd) ) +ROM_END + +ROM_START( rastsagaa ) ROM_REGION( 0x60000, "maincpu", 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "b04-14.19", 0x00000, 0x10000, CRC(a38ac909) SHA1(66d792fee03c6bd87d15060b9d5cae74137c5ebd) ) ROM_LOAD16_BYTE( "b04-13.7", 0x00001, 0x10000, CRC(bad60872) SHA1(e020f79b3ac3d2abccfcd5d135d2dc49e1335c7d) ) @@ -618,7 +675,7 @@ ROM_START( rastsaga ) ROM_LOAD( "b04-20.76", 0x0000, 0x10000, CRC(fd1a34cc) SHA1(b1682959521fa295769207b75cf7d839e9ec95fd) ) ROM_END -ROM_START( rastsagaa ) +ROM_START( rastsagab ) ROM_REGION( 0x60000, "maincpu", 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "b04-14.19", 0x00000, 0x10000, CRC(a38ac909) SHA1(66d792fee03c6bd87d15060b9d5cae74137c5ebd) ) /* Dumped as "RS19_38.BIN", corrected to B04-14 */ ROM_LOAD16_BYTE( "b04-13.7", 0x00001, 0x10000, CRC(bad60872) SHA1(e020f79b3ac3d2abccfcd5d135d2dc49e1335c7d) ) /* Dumped as "RS07_37.BIN", corrected to B04-13 */ @@ -647,12 +704,14 @@ ROM_START( rastsagaa ) ROM_END /* Newer revised code base */ -GAME( 1987, rastan, 0, rastan, rastan, driver_device, 0, ROT0, "Taito Corporation Japan", "Rastan (World Rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rastana, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Taito Corporation Japan", "Rastan (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rastanu, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Taito America Corporation", "Rastan (US Rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rastanua, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Taito America Corporation", "Rastan (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rastan, 0, rastan, rastan, rastan_state, 0, ROT0, "Taito Corporation Japan", "Rastan (World Rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rastana, rastan, rastan, rastsaga, rastan_state, 0, ROT0, "Taito Corporation Japan", "Rastan (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rastanu, rastan, rastan, rastsaga, rastan_state, 0, ROT0, "Taito America Corporation", "Rastan (US Rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rastanua, rastan, rastan, rastsaga, rastan_state, 0, ROT0, "Taito America Corporation", "Rastan (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rastsaga, rastan, rastan, rastsaga, rastan_state, 0, ROT0, "Taito Corporation", "Rastan Saga (Japan Rev 1)", MACHINE_SUPPORTS_SAVE ) /* Based on earliest code base */ -GAME( 1987, rastanub, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Taito America Corporation", "Rastan (US, Earlier code base)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rastsaga, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Taito Corporation", "Rastan Saga (Japan Rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, rastsagaa, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Taito Corporation", "Rastan Saga (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rastanb, rastan, rastan, rastsaga, rastan_state, 0, ROT0, "Taito Corporation Japan", "Rastan (World, Earlier code base)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rastanub, rastan, rastan, rastsaga, rastan_state, 0, ROT0, "Taito America Corporation", "Rastan (US, Earlier code base)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rastsagaa, rastan, rastan, rastsaga, rastan_state, 0, ROT0, "Taito Corporation", "Rastan Saga (Japan Rev 1, Earlier code base)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, rastsagab, rastan, rastan, rastsaga, rastan_state, 0, ROT0, "Taito Corporation", "Rastan Saga (Japan, Earlier code base)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rastersp.cpp b/src/mame/drivers/rastersp.cpp index 51e03a03249..ffce883e214 100644 --- a/src/mame/drivers/rastersp.cpp +++ b/src/mame/drivers/rastersp.cpp @@ -847,7 +847,7 @@ SLOT_INTERFACE_END * *************************************/ -static MACHINE_CONFIG_START( rastersp, rastersp_state ) +static MACHINE_CONFIG_START( rastersp ) MCFG_CPU_ADD("maincpu", I486, 33330000) MCFG_CPU_PROGRAM_MAP(cpu_map) MCFG_CPU_IO_MAP(io_map) @@ -954,5 +954,5 @@ ROM_END * *************************************/ -GAME( 1994, rotr, 0, rastersp, rotr, driver_device, 0, ROT0, "BFM/Mirage", "Rise of the Robots (prototype)", 0 ) -GAME( 1997, fbcrazy, 0, rastersp, rotr, driver_device, 0, ROT0, "BFM", "Football Crazy (Video Quiz)", MACHINE_NOT_WORKING ) +GAME( 1994, rotr, 0, rastersp, rotr, rastersp_state, 0, ROT0, "BFM/Mirage", "Rise of the Robots (prototype)", 0 ) +GAME( 1997, fbcrazy, 0, rastersp, rotr, rastersp_state, 0, ROT0, "BFM", "Football Crazy (Video Quiz)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ravens.cpp b/src/mame/drivers/ravens.cpp index 69873b3c8b5..51a5213bb08 100644 --- a/src/mame/drivers/ravens.cpp +++ b/src/mame/drivers/ravens.cpp @@ -100,7 +100,7 @@ public: DECLARE_WRITE8_MEMBER(port1c_w); DECLARE_WRITE8_MEMBER(display_w); DECLARE_WRITE8_MEMBER(leds_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_MACHINE_RESET(ravens2); DECLARE_READ8_MEMBER(cass_r); DECLARE_WRITE_LINE_MEMBER(cass_w); @@ -258,7 +258,7 @@ static INPUT_PORTS_START( ravens ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("???") PORT_CODE(KEYCODE_O) PORT_CHAR('O') INPUT_PORTS_END -WRITE8_MEMBER( ravens_state::kbd_put ) +void ravens_state::kbd_put(u8 data) { if (data > 0x60) data -= 0x20; // fold to uppercase m_term_data = data; @@ -328,7 +328,7 @@ QUICKLOAD_LOAD_MEMBER( ravens_state, ravens ) return result; } -static MACHINE_CONFIG_START( ravens, ravens_state ) +static MACHINE_CONFIG_START( ravens ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) // frequency is unknown MCFG_CPU_PROGRAM_MAP(ravens_mem) @@ -348,7 +348,7 @@ static MACHINE_CONFIG_START( ravens, ravens_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ravens2, ravens_state ) +static MACHINE_CONFIG_START( ravens2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz) // frequency is unknown MCFG_CPU_PROGRAM_MAP(ravens_mem) @@ -359,7 +359,7 @@ static MACHINE_CONFIG_START( ravens2, ravens_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ravens_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ravens_state, kbd_put)) /* quickload */ MCFG_QUICKLOAD_ADD("quickload", ravens_state, ravens, "pgm", 1) @@ -387,6 +387,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, ravens, 0, 0, ravens, ravens, driver_device, 0, "Joseph Glagla and Dieter Feiler", "Ravensburger Selbstbaucomputer V0.9", MACHINE_NO_SOUND_HW ) -COMP( 1985, ravens2, ravens, 0, ravens2, ravens, driver_device, 0, "Joseph Glagla and Dieter Feiler", "Ravensburger Selbstbaucomputer V2.0", MACHINE_NO_SOUND_HW ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, ravens, 0, 0, ravens, ravens, ravens_state, 0, "Joseph Glagla and Dieter Feiler", "Ravensburger Selbstbaucomputer V0.9", MACHINE_NO_SOUND_HW ) +COMP( 1985, ravens2, ravens, 0, ravens2, ravens, ravens_state, 0, "Joseph Glagla and Dieter Feiler", "Ravensburger Selbstbaucomputer V2.0", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/rbisland.cpp b/src/mame/drivers/rbisland.cpp index 8bef6c3c775..30ee09abb39 100644 --- a/src/mame/drivers/rbisland.cpp +++ b/src/mame/drivers/rbisland.cpp @@ -627,7 +627,7 @@ void rbisland_state::machine_start() { } -static MACHINE_CONFIG_START( rbisland, rbisland_state ) +static MACHINE_CONFIG_START( rbisland ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ @@ -677,7 +677,7 @@ MACHINE_CONFIG_END /* Jumping: The PCB has 2 Xtals, 18.432MHz and 24MHz */ -static MACHINE_CONFIG_START( jumping, rbisland_state ) +static MACHINE_CONFIG_START( jumping ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_18_432MHz/2) /* verified on pcb */ @@ -971,7 +971,7 @@ DRIVER_INIT_MEMBER(rbisland_state,jumping) GAME( 1987, rbisland, 0, rbisland, rbisland, rbisland_state, rbisland, ROT0, "Taito Corporation", "Rainbow Islands (new version)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, rbislando, rbisland, rbisland, rbisland, rbisland_state, rbisland, ROT0, "Taito Corporation", "Rainbow Islands (old version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, rbislande, rbisland, rbisland, rbisland, rbisland_state, rbislande, ROT0, "Taito Corporation", "Rainbow Islands (Extra)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, jumping, rbisland, jumping, jumping, rbisland_state, jumping, ROT0, "bootleg", "Jumping (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, jumpinga, rbisland, jumping, jumping, rbisland_state, jumping, ROT0, "bootleg (Seyutu)", "Jumping (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, jumpingi, rbisland, jumpingi, jumping, rbisland_state, jumping, ROT0, "bootleg (Seyutu)", "Jumping (set 3, Imnoe PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, rbislande, rbisland, rbisland, rbisland, rbisland_state, rbislande, ROT0, "Taito Corporation", "Rainbow Islands (Extra)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, jumping, rbisland, jumping, jumping, rbisland_state, jumping, ROT0, "bootleg", "Jumping (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, jumpinga, rbisland, jumping, jumping, rbisland_state, jumping, ROT0, "bootleg (Seyutu)", "Jumping (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, jumpingi, rbisland, jumpingi, jumping, rbisland_state, jumping, ROT0, "bootleg (Seyutu)", "Jumping (set 3, Imnoe PCB)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rbmk.cpp b/src/mame/drivers/rbmk.cpp index 52b4c6214ab..b97c0d16dd8 100644 --- a/src/mame/drivers/rbmk.cpp +++ b/src/mame/drivers/rbmk.cpp @@ -547,7 +547,7 @@ INTERRUPT_GEN_MEMBER(rbmk_state::mcu_irq) m_mcu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( rbmk, rbmk_state ) +static MACHINE_CONFIG_START( rbmk ) MCFG_CPU_ADD("maincpu", M68000, 22000000 /2) MCFG_CPU_PROGRAM_MAP(rbmk_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", rbmk_state, irq1_line_hold) @@ -576,7 +576,7 @@ static MACHINE_CONFIG_START( rbmk, rbmk_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 1122000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1122000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) @@ -609,4 +609,4 @@ ROM_START( rbmk ) ROM_END -GAME( 1998, rbmk, 0, rbmk, rbmk, driver_device,0, ROT0, "GMS", "Real Battle Mahjong King", MACHINE_NOT_WORKING ) +GAME( 1998, rbmk, 0, rbmk, rbmk, rbmk_state, 0, ROT0, "GMS", "Real Battle Mahjong King", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/rc702.cpp b/src/mame/drivers/rc702.cpp index 5b3e9d30859..b669370efab 100644 --- a/src/mame/drivers/rc702.cpp +++ b/src/mame/drivers/rc702.cpp @@ -75,7 +75,7 @@ public: DECLARE_WRITE_LINE_MEMBER(qbar_w); DECLARE_WRITE_LINE_MEMBER(dack1_w); I8275_DRAW_CHARACTER_MEMBER(display_pixels); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); private: bool m_q_state; @@ -326,9 +326,9 @@ static const z80_daisy_config daisy_chain_intf[] = { nullptr } }; -WRITE8_MEMBER( rc702_state::kbd_put ) +void rc702_state::kbd_put(u8 data) { - m_pio->pa_w(space, 0, data); + m_pio->pa_w(machine().dummy_space(), 0, data); m_pio->strobe_a(0); m_pio->strobe_a(1); } @@ -337,7 +337,7 @@ static SLOT_INTERFACE_START( floppies ) SLOT_INTERFACE( "drive0", FLOPPY_525_QD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( rc702, rc702_state ) +static MACHINE_CONFIG_START( rc702 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz / 2) MCFG_CPU_PROGRAM_MAP(rc702_mem) @@ -380,7 +380,7 @@ static MACHINE_CONFIG_START( rc702, rc702_state ) /* Keyboard */ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(rc702_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(rc702_state, kbd_put)) MCFG_DEVICE_ADD("7474", TTL7474, 0) MCFG_7474_COMP_OUTPUT_CB(WRITELINE(rc702_state, q_w)) @@ -424,5 +424,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1979, rc702, 0, 0, rc702, rc702, rc702_state, rc702, "Regnecentralen", "RC702 Piccolo", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/rc759.cpp b/src/mame/drivers/rc759.cpp index 6e0b2f11b1a..7e0c06c70e2 100644 --- a/src/mame/drivers/rc759.cpp +++ b/src/mame/drivers/rc759.cpp @@ -38,34 +38,34 @@ class rc759_state : public driver_device { public: rc759_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_pic(*this, "pic"), - m_nvram(*this, "nvram"), - m_ppi(*this, "ppi"), - m_txt(*this, "txt"), - m_cas(*this, "cas"), - m_isbx(*this, "isbx"), - m_speaker(*this, "speaker"), - m_snd(*this, "snd"), - m_rtc(*this, "rtc"), - m_centronics(*this, "centronics"), - m_fdc(*this, "fdc"), - m_floppy0(*this, "fdc:0"), - m_floppy1(*this, "fdc:1"), - m_vram(*this, "vram"), - m_config(*this, "config"), - m_cas_enabled(0), m_cas_data(0), - m_drq_source(0), - m_nvram_bank(0), - m_gfx_mode(0), - m_keyboard_enable(0), m_keyboard_key(0x00), - m_centronics_strobe(0), m_centronics_init(0), m_centronics_select_in(0), m_centronics_busy(0), - m_centronics_ack(0), m_centronics_fault(0), m_centronics_perror(0), m_centronics_select(0), - m_centronics_data(0xff) + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_pic(*this, "pic"), + m_nvram(*this, "nvram"), + m_ppi(*this, "ppi"), + m_txt(*this, "txt"), + m_cas(*this, "cas"), + m_isbx(*this, "isbx"), + m_speaker(*this, "speaker"), + m_snd(*this, "snd"), + m_rtc(*this, "rtc"), + m_centronics(*this, "centronics"), + m_fdc(*this, "fdc"), + m_floppy0(*this, "fdc:0"), + m_floppy1(*this, "fdc:1"), + m_vram(*this, "vram"), + m_config(*this, "config"), + m_cas_enabled(0), m_cas_data(0), + m_drq_source(0), + m_nvram_bank(0), + m_gfx_mode(0), + m_keyboard_enable(0), m_keyboard_key(0x00), + m_centronics_strobe(0), m_centronics_init(0), m_centronics_select_in(0), m_centronics_busy(0), + m_centronics_ack(0), m_centronics_fault(0), m_centronics_perror(0), m_centronics_select(0), + m_centronics_data(0xff) { } - DECLARE_WRITE8_MEMBER(keyb_put); + void keyb_put(u8 data); DECLARE_READ8_MEMBER(keyboard_r); DECLARE_WRITE8_MEMBER(floppy_control_w); @@ -121,7 +121,7 @@ private: required_device m_snd; required_device m_rtc; required_device m_centronics; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_shared_ptr m_vram; @@ -153,7 +153,7 @@ private: // I/O //************************************************************************** -WRITE8_MEMBER( rc759_state::keyb_put ) +void rc759_state::keyb_put(u8 data) { m_keyboard_key = data; m_pic->ir1_w(1); @@ -486,7 +486,7 @@ static ADDRESS_MAP_START( rc759_io, AS_IO, 16, rc759_state ) AM_RANGE(0x240, 0x241) AM_WRITE(txt_ca_w) AM_RANGE(0x250, 0x251) AM_READWRITE8(centronics_data_r, centronics_data_w, 0x00ff) AM_RANGE(0x260, 0x261) AM_READWRITE8(centronics_control_r, centronics_control_w, 0x00ff) - AM_RANGE(0x280, 0x287) AM_DEVREADWRITE8("fdc", wd2797_t, read, write, 0x00ff) + AM_RANGE(0x280, 0x287) AM_DEVREADWRITE8("fdc", wd2797_device, read, write, 0x00ff) AM_RANGE(0x288, 0x289) AM_WRITE8(floppy_control_w, 0x00ff) // AM_RANGE(0x28a, 0x28b) external printer data // AM_RANGE(0x28d, 0x28d) external printer control @@ -524,7 +524,7 @@ static SLOT_INTERFACE_START( rc759_floppies ) SLOT_INTERFACE("hd", FLOPPY_525_HD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( rc759, rc759_state ) +static MACHINE_CONFIG_START( rc759 ) MCFG_CPU_ADD("maincpu", I80186, 6000000) MCFG_CPU_PROGRAM_MAP(rc759_map) MCFG_CPU_IO_MAP(rc759_io) @@ -560,7 +560,7 @@ static MACHINE_CONFIG_START( rc759, rc759_state ) // keyboard MCFG_DEVICE_ADD("keyb", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(rc759_state, keyb_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(rc759_state, keyb_put)) // cassette MCFG_CASSETTE_ADD("cas") @@ -619,4 +619,4 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -COMP( 1984, rc759, 0, 0, rc759, rc759, driver_device, 0, "Regnecentralen", "RC759 Piccoline", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1984, rc759, 0, 0, rc759, rc759, rc759_state, 0, "Regnecentralen", "RC759 Piccoline", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/rcorsair.cpp b/src/mame/drivers/rcorsair.cpp index 168d8d519c0..0efe84a5e38 100644 --- a/src/mame/drivers/rcorsair.cpp +++ b/src/mame/drivers/rcorsair.cpp @@ -136,7 +136,7 @@ uint32_t rcorsair_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -static MACHINE_CONFIG_START( rcorsair, rcorsair_state ) +static MACHINE_CONFIG_START( rcorsair ) /* Main CPU is probably inside Custom Block with program code, unknown type */ @@ -178,4 +178,4 @@ ROM_START( rcorsair ) ROM_END -GAME( 1984, rcorsair, 0, rcorsair, inports, driver_device, 0, ROT90, "Nakasawa", "Red Corsair", MACHINE_IS_SKELETON ) +GAME( 1984, rcorsair, 0, rcorsair, inports, rcorsair_state, 0, ROT90, "Nakasawa", "Red Corsair", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/rd100.cpp b/src/mame/drivers/rd100.cpp index 6ac7b25cc99..c59cf054f5e 100644 --- a/src/mame/drivers/rd100.cpp +++ b/src/mame/drivers/rd100.cpp @@ -86,7 +86,7 @@ MACHINE_RESET_MEMBER( rd100_state, rd100 ) { } -static MACHINE_CONFIG_START( rd100, rd100_state ) +static MACHINE_CONFIG_START( rd100 ) // basic machine hardware MCFG_CPU_ADD("maincpu",M6809E, XTAL_4MHz) // freq unknown MCFG_CPU_PROGRAM_MAP(rd100_mem) @@ -112,5 +112,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, rd100, 0, 0, rd100, rd100, rd100_state, rd100, "Data", "RD100", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1989, rd100, 0, 0, rd100, rd100, rd100_state, rd100, "Data", "RD100", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/rd110.cpp b/src/mame/drivers/rd110.cpp index 8a107b20811..4056c8ce42e 100644 --- a/src/mame/drivers/rd110.cpp +++ b/src/mame/drivers/rd110.cpp @@ -229,7 +229,7 @@ static ADDRESS_MAP_START( d110_io, AS_IO, 16, d110_state ) AM_RANGE(i8x9x_device::P0, i8x9x_device::P0) AM_READ(port0_r) ADDRESS_MAP_END -static MACHINE_CONFIG_START( d110, d110_state ) +static MACHINE_CONFIG_START( d110 ) MCFG_CPU_ADD( "maincpu", P8098, XTAL_12MHz ) MCFG_CPU_PROGRAM_MAP( d110_map ) MCFG_CPU_IO_MAP( d110_io ) @@ -284,4 +284,4 @@ ROM_START( d110 ) ROM_LOAD( "r15179879.ic6.bin", 0, 0x8000, CRC(5d34174e) SHA1(17bd2887711c5c5458aba6d3be5972b2096eb450) ) ROM_END -CONS( 1988, d110, 0, 0, d110, d110, driver_device, 0, "Roland", "D110", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +CONS( 1988, d110, 0, 0, d110, d110, d110_state, 0, "Roland", "D110", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/re900.cpp b/src/mame/drivers/re900.cpp index 2f07d80a0b4..897bae20c77 100644 --- a/src/mame/drivers/re900.cpp +++ b/src/mame/drivers/re900.cpp @@ -377,7 +377,7 @@ INPUT_PORTS_END * Machine Driver * ***************************/ -static MACHINE_CONFIG_START( re900, re900_state ) +static MACHINE_CONFIG_START( re900 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8051, MAIN_CLOCK) @@ -452,6 +452,6 @@ DRIVER_INIT_MEMBER(re900_state,re900) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1993, re900, 0, re900, re900, re900_state, re900, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-900", MACHINE_SUPPORTS_SAVE, layout_re900) -GAME ( 1994, bs94 , 0, bs94, bs94 , driver_device, 0, ROT0, "Entretenimientos GEMINIS", "Buena Suerte '94", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1993, re900, 0, re900, re900, re900_state, re900, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-900", MACHINE_SUPPORTS_SAVE, layout_re900 ) +GAME ( 1994, bs94 , 0, bs94, bs94 , re900_state, 0, ROT0, "Entretenimientos GEMINIS", "Buena Suerte '94", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/realbrk.cpp b/src/mame/drivers/realbrk.cpp index 594629c2840..c57a82ac871 100644 --- a/src/mame/drivers/realbrk.cpp +++ b/src/mame/drivers/realbrk.cpp @@ -243,7 +243,7 @@ static INPUT_PORTS_START( realbrk ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // the vblank routine wants these 2 bits high @@ -317,7 +317,7 @@ static INPUT_PORTS_START( pkgnsh ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // the vblank routine wants these 2 bits high @@ -430,7 +430,7 @@ static INPUT_PORTS_START( pkgnshdx ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // the vblank routine wants these 2 bits high @@ -615,7 +615,7 @@ static INPUT_PORTS_START( dai2kaku ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // the vblank routine wants these 2 bits high @@ -754,7 +754,7 @@ INTERRUPT_GEN_MEMBER(realbrk_state::interrupt) m_tmp68301->external_interrupt_1(); } -static MACHINE_CONFIG_START( realbrk, realbrk_state ) +static MACHINE_CONFIG_START( realbrk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL_32MHz / 2) /* !! TMP68301 !! */ @@ -1277,13 +1277,13 @@ ROM_START( dai2kaku_alt_rom_size ) ROM_END #endif -GAME( 1998, pkgnsh, 0, pkgnsh, pkgnsh, driver_device, 0, ROT0, "Nakanihon / Dynax", "Pachinko Gindama Shoubu (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, pkgnsh, 0, pkgnsh, pkgnsh, realbrk_state, 0, ROT0, "Nakanihon / Dynax", "Pachinko Gindama Shoubu (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, pkgnshdx, 0, pkgnshdx, pkgnshdx, driver_device, 0, ROT0, "Nakanihon / Dynax", "Pachinko Gindama Shoubu DX (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, pkgnshdx, 0, pkgnshdx, pkgnshdx, realbrk_state, 0, ROT0, "Nakanihon / Dynax", "Pachinko Gindama Shoubu DX (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, realbrk, 0, realbrk, realbrk, driver_device, 0, ROT0, "Nakanihon", "Billiard Academy Real Break (Europe)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, realbrko, realbrk, realbrk, realbrk, driver_device, 0, ROT0, "Nakanihon", "Billiard Academy Real Break (Europe, older)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, realbrkj, realbrk, realbrk, realbrk, driver_device, 0, ROT0, "Nakanihon", "Billiard Academy Real Break (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, realbrkk, realbrk, realbrk, realbrk, driver_device, 0, ROT0, "Nakanihon", "Billiard Academy Real Break (Korea)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, realbrk, 0, realbrk, realbrk, realbrk_state, 0, ROT0, "Nakanihon", "Billiard Academy Real Break (Europe)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, realbrko, realbrk, realbrk, realbrk, realbrk_state, 0, ROT0, "Nakanihon", "Billiard Academy Real Break (Europe, older)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, realbrkj, realbrk, realbrk, realbrk, realbrk_state, 0, ROT0, "Nakanihon", "Billiard Academy Real Break (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, realbrkk, realbrk, realbrk, realbrk, realbrk_state, 0, ROT0, "Nakanihon", "Billiard Academy Real Break (Korea)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 2004, dai2kaku, 0, dai2kaku, dai2kaku, driver_device, 0, ROT0, "SystemBit", "Dai-Dai-Kakumei (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2004, dai2kaku, 0, dai2kaku, dai2kaku, realbrk_state, 0, ROT0, "SystemBit", "Dai-Dai-Kakumei (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/redalert.cpp b/src/mame/drivers/redalert.cpp index cff4ab900da..21cef47ecfe 100644 --- a/src/mame/drivers/redalert.cpp +++ b/src/mame/drivers/redalert.cpp @@ -387,7 +387,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( redalert, redalert_state ) +static MACHINE_CONFIG_START( redalert ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MAIN_CPU_CLOCK) @@ -401,7 +401,7 @@ static MACHINE_CONFIG_START( redalert, redalert_state ) MCFG_FRAGMENT_ADD(redalert_audio) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ww3, redalert_state ) +static MACHINE_CONFIG_START( ww3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MAIN_CPU_CLOCK) @@ -415,7 +415,7 @@ static MACHINE_CONFIG_START( ww3, redalert_state ) MCFG_FRAGMENT_ADD(ww3_audio) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( panther, redalert_state ) +static MACHINE_CONFIG_START( panther ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MAIN_CPU_CLOCK) @@ -429,7 +429,7 @@ static MACHINE_CONFIG_START( panther, redalert_state ) MCFG_FRAGMENT_ADD(ww3_audio) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( demoneye, redalert_state ) +static MACHINE_CONFIG_START( demoneye ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MAIN_CPU_CLOCK) @@ -538,7 +538,7 @@ ROM_END * *************************************/ -GAME( 1981, panther, 0, panther, panther, driver_device, 0, ROT270, "Irem", "Panther", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, redalert, 0, redalert, redalert, driver_device, 0, ROT270, "Irem (GDI license)", "Red Alert", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ww3, redalert, ww3, redalert, driver_device, 0, ROT270, "Irem", "WW III", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, demoneye, 0, demoneye, demoneye, driver_device, 0, ROT270, "Irem", "Demoneye-X", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, panther, 0, panther, panther, redalert_state, 0, ROT270, "Irem", "Panther", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, redalert, 0, redalert, redalert, redalert_state, 0, ROT270, "Irem (GDI license)", "Red Alert", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ww3, redalert, ww3, redalert, redalert_state, 0, ROT270, "Irem", "WW III", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, demoneye, 0, demoneye, demoneye, redalert_state, 0, ROT270, "Irem", "Demoneye-X", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/redclash.cpp b/src/mame/drivers/redclash.cpp index b05ea64ee5e..4cb56a8b395 100644 --- a/src/mame/drivers/redclash.cpp +++ b/src/mame/drivers/redclash.cpp @@ -626,7 +626,7 @@ MACHINE_RESET_MEMBER(redclash_state,redclash) m_stars_count = 0; } -static MACHINE_CONFIG_START( zerohour, redclash_state ) +static MACHINE_CONFIG_START( zerohour ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz */ @@ -642,7 +642,7 @@ static MACHINE_CONFIG_START( zerohour, redclash_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(redclash_state, screen_update_redclash) - MCFG_SCREEN_VBLANK_DRIVER(redclash_state, screen_eof_redclash) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(redclash_state, screen_vblank_redclash)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", redclash) @@ -655,7 +655,7 @@ static MACHINE_CONFIG_START( zerohour, redclash_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( redclash, redclash_state ) +static MACHINE_CONFIG_START( redclash ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz */ @@ -671,7 +671,7 @@ static MACHINE_CONFIG_START( redclash, redclash_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(redclash_state, screen_update_redclash) - MCFG_SCREEN_VBLANK_DRIVER(redclash_state, screen_eof_redclash) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(redclash_state, screen_vblank_redclash)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", redclash) @@ -683,7 +683,7 @@ static MACHINE_CONFIG_START( redclash, redclash_state ) /* sound hardware */ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sraider, redclash_state ) +static MACHINE_CONFIG_START( sraider ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz */ @@ -705,7 +705,7 @@ static MACHINE_CONFIG_START( sraider, redclash_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(redclash_state, screen_update_sraider) - MCFG_SCREEN_VBLANK_DRIVER(redclash_state, screen_eof_sraider) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(redclash_state, screen_vblank_sraider)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", sraider) @@ -945,10 +945,10 @@ DRIVER_INIT_MEMBER(redclash_state,redclash) } -GAME( 1980, zerohour, 0, zerohour, zerohour, redclash_state, redclash, ROT270, "Universal", "Zero Hour (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, zerohoura, zerohour, zerohour, zerohour, redclash_state, redclash, ROT270, "Universal", "Zero Hour (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, zerohouri, zerohour, zerohour, zerohour, redclash_state, redclash, ROT270, "bootleg (Inder SA)", "Zero Hour (Inder)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, redclash, 0, redclash, redclash, redclash_state, redclash, ROT270, "Tehkan", "Red Clash (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, redclasha, redclash, redclash, redclash, redclash_state, redclash, ROT270, "Tehkan", "Red Clash (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, zerohour, 0, zerohour, zerohour, redclash_state, redclash, ROT270, "Universal", "Zero Hour (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, zerohoura, zerohour, zerohour, zerohour, redclash_state, redclash, ROT270, "Universal", "Zero Hour (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, zerohouri, zerohour, zerohour, zerohour, redclash_state, redclash, ROT270, "bootleg (Inder SA)", "Zero Hour (Inder)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, redclash, 0, redclash, redclash, redclash_state, redclash, ROT270, "Tehkan", "Red Clash (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, redclasha, redclash, redclash, redclash, redclash_state, redclash, ROT270, "Tehkan", "Red Clash (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1981, redclashk, redclash, redclash, redclash, redclash_state, redclash, ROT270, "Tehkan (Kaneko license)", "Red Clash (Kaneko)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, sraider, 0, sraider, sraider, driver_device, 0, ROT270, "Universal", "Space Raider", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, sraider, 0, sraider, sraider, redclash_state, 0, ROT270, "Universal", "Space Raider", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/relief.cpp b/src/mame/drivers/relief.cpp index 107cbc7aa6f..ed1d2ac08e6 100644 --- a/src/mame/drivers/relief.cpp +++ b/src/mame/drivers/relief.cpp @@ -267,7 +267,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( relief, relief_state ) +static MACHINE_CONFIG_START( relief ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) @@ -302,7 +302,7 @@ static MACHINE_CONFIG_START( relief, relief_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", ATARI_CLOCK_14MHz/4/3, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", ATARI_CLOCK_14MHz/4/3, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) diff --git a/src/mame/drivers/renegade.cpp b/src/mame/drivers/renegade.cpp index 47a5871b089..e573c386a94 100644 --- a/src/mame/drivers/renegade.cpp +++ b/src/mame/drivers/renegade.cpp @@ -738,7 +738,7 @@ void renegade_state::machine_reset() } -static MACHINE_CONFIG_START( renegade, renegade_state ) +static MACHINE_CONFIG_START( renegade ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 12000000/8) /* 1.5 MHz (measured) */ @@ -774,7 +774,7 @@ static MACHINE_CONFIG_START( renegade, renegade_state ) MCFG_SOUND_ADD("msm", MSM5205, 12000000/32) MCFG_MSM5205_VCLK_CB(WRITELINE(renegade_state, adpcm_int)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/replicator.cpp b/src/mame/drivers/replicator.cpp index 93faf5c73b7..094ffd191a4 100644 --- a/src/mame/drivers/replicator.cpp +++ b/src/mame/drivers/replicator.cpp @@ -599,7 +599,7 @@ static GFXDECODE_START( replicator ) GFXDECODE_ENTRY( "hd44780:cgrom", 0x0000, hd44780_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( replicator, replicator_state ) +static MACHINE_CONFIG_START( replicator ) MCFG_CPU_ADD("maincpu", ATMEGA1280, MASTER_CLOCK) MCFG_CPU_PROGRAM_MAP(replicator_prg_map) @@ -720,5 +720,5 @@ ROM_START( replica1 ) ROM_REGION( 0x1000, "eeprom", ROMREGION_ERASEFF ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP(2012, replica1, 0, 0, replicator, replicator, replicator_state, replicator, "Makerbot", "Replicator 1 desktop 3d printer", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP(2012, replica1, 0, 0, replicator, replicator, replicator_state, replicator, "Makerbot", "Replicator 1 desktop 3d printer", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/retofinv.cpp b/src/mame/drivers/retofinv.cpp index aec4c2d9d30..27e2463a60c 100644 --- a/src/mame/drivers/retofinv.cpp +++ b/src/mame/drivers/retofinv.cpp @@ -360,7 +360,7 @@ INTERRUPT_GEN_MEMBER(retofinv_state::sub_vblank_irq) } -static MACHINE_CONFIG_START( retofinv, retofinv_state ) +static MACHINE_CONFIG_START( retofinv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz? */ @@ -525,6 +525,6 @@ ROM_END -GAME( 1985, retofinv, 0, retofinv, retofinv, driver_device, 0, ROT90, "Taito Corporation", "Return of the Invaders", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, retofinv1,retofinv, retofinb, retofinv, driver_device, 0, ROT90, "bootleg", "Return of the Invaders (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, retofinv2,retofinv, retofinb, retofin2, driver_device, 0, ROT90, "bootleg", "Return of the Invaders (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, retofinv, 0, retofinv, retofinv, retofinv_state, 0, ROT90, "Taito Corporation", "Return of the Invaders", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, retofinv1,retofinv, retofinb, retofinv, retofinv_state, 0, ROT90, "bootleg", "Return of the Invaders (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, retofinv2,retofinv, retofinb, retofin2, retofinv_state, 0, ROT90, "bootleg", "Return of the Invaders (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rex6000.cpp b/src/mame/drivers/rex6000.cpp index 893bb5860d9..bc6b01e81c2 100644 --- a/src/mame/drivers/rex6000.cpp +++ b/src/mame/drivers/rex6000.cpp @@ -870,7 +870,7 @@ static GFXDECODE_START( rex6000 ) GFXDECODE_END -static MACHINE_CONFIG_START( rex6000, rex6000_state ) +static MACHINE_CONFIG_START( rex6000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) //Toshiba microprocessor Z80 compatible at 4.3MHz MCFG_CPU_PROGRAM_MAP(rex6000_mem) @@ -947,7 +947,7 @@ static MACHINE_CONFIG_START( rex6000, rex6000_state ) MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( oz750, oz750_state ) +static MACHINE_CONFIG_START( oz750 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_9_8304MHz) //Toshiba microprocessor Z80 compatible at 9.8MHz MCFG_CPU_PROGRAM_MAP(rex6000_mem) @@ -1053,7 +1053,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 199?, oz750, 0, 0, oz750 , oz750, driver_device, 0, "Sharp", "Wizard OZ-750", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 2000, rex6000, 0, 0, rex6000, rex6000, driver_device, 0, "Xircom / Intel", "REX 6000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 2000, ds2, rex6000, 0, rex6000, rex6000, driver_device, 0, "Citizen", "DataSlim 2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 199?, oz750, 0, 0, oz750, oz750, oz750_state, 0, "Sharp", "Wizard OZ-750", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 2000, rex6000, 0, 0, rex6000, rex6000, rex6000_state, 0, "Xircom / Intel", "REX 6000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 2000, ds2, rex6000, 0, rex6000, rex6000, rex6000_state, 0, "Citizen", "DataSlim 2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/rgum.cpp b/src/mame/drivers/rgum.cpp index d5b64dce64f..ab3649d29fe 100644 --- a/src/mame/drivers/rgum.cpp +++ b/src/mame/drivers/rgum.cpp @@ -238,7 +238,7 @@ static GFXDECODE_START( rgum ) GFXDECODE_END -static MACHINE_CONFIG_START( rgum, rgum_state ) +static MACHINE_CONFIG_START( rgum ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02,24000000/16) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(rgum_map) @@ -294,4 +294,4 @@ ROM_START( rgum ) ROM_END -GAME( 199?, rgum, 0, rgum, rgum, driver_device, 0, ROT0, "", "Royal Gum (Italy)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 199?, rgum, 0, rgum, rgum, rgum_state, 0, ROT0, "", "Royal Gum (Italy)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/risc2500.cpp b/src/mame/drivers/risc2500.cpp index fde81bfd102..f3bfd22fb5f 100644 --- a/src/mame/drivers/risc2500.cpp +++ b/src/mame/drivers/risc2500.cpp @@ -286,10 +286,10 @@ static ADDRESS_MAP_START(risc2500_mem, AS_PROGRAM, 32, risc2500_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( risc2500, risc2500_state ) +static MACHINE_CONFIG_START( risc2500 ) MCFG_CPU_ADD("maincpu", ARM, XTAL_28_322MHz / 2) // VY86C010 MCFG_CPU_PROGRAM_MAP(risc2500_mem) - MCFG_ARM_COPRO(ARM_COPRO_TYPE_VL86C020) + MCFG_ARM_COPRO(VL86C020) MCFG_CPU_PERIODIC_INT_DRIVER(risc2500_state, irq1_line_hold, 250) MCFG_SCREEN_ADD("screen", LCD) @@ -335,6 +335,6 @@ ROM_START( montreux ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1992, risc, 0, 0, risc2500, risc2500, driver_device, 0, "Saitek", "RISC 2500", MACHINE_CLICKABLE_ARTWORK ) -CONS( 1995, montreux, 0, 0, risc2500, risc2500, driver_device, 0, "Saitek / Hegener & Glaser", "Mephisto Montreux", MACHINE_CLICKABLE_ARTWORK ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1992, risc, 0, 0, risc2500, risc2500, risc2500_state, 0, "Saitek", "RISC 2500", MACHINE_CLICKABLE_ARTWORK ) +CONS( 1995, montreux, 0, 0, risc2500, risc2500, risc2500_state, 0, "Saitek / Hegener & Glaser", "Mephisto Montreux", MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/riscpc.cpp b/src/mame/drivers/riscpc.cpp index 8eba052f3c2..6a89cf73a0d 100644 --- a/src/mame/drivers/riscpc.cpp +++ b/src/mame/drivers/riscpc.cpp @@ -799,7 +799,7 @@ void riscpc_state::machine_reset() m_flyback_timer->adjust( attotime::never); } -static MACHINE_CONFIG_START( rpc600, riscpc_state ) +static MACHINE_CONFIG_START( rpc600 ) /* Basic machine hardware */ MCFG_CPU_ADD( "maincpu", ARM7, XTAL_30MHz ) // ARM610 MCFG_CPU_PROGRAM_MAP(a7000_mem) @@ -814,7 +814,7 @@ static MACHINE_CONFIG_START( rpc600, riscpc_state ) MCFG_PALETTE_ADD("palette", 0x200) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rpc700, riscpc_state ) +static MACHINE_CONFIG_START( rpc700 ) /* Basic machine hardware */ MCFG_CPU_ADD( "maincpu", ARM7, XTAL_40MHz ) // ARM710 MCFG_CPU_PROGRAM_MAP(a7000_mem) @@ -829,7 +829,7 @@ static MACHINE_CONFIG_START( rpc700, riscpc_state ) MCFG_PALETTE_ADD("palette", 0x200) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( a7000, riscpc_state ) +static MACHINE_CONFIG_START( a7000 ) /* Basic machine hardware */ MCFG_CPU_ADD( "maincpu", ARM7, XTAL_32MHz ) // ARM7500 MCFG_CPU_PROGRAM_MAP(a7000_mem) @@ -849,7 +849,7 @@ static MACHINE_CONFIG_DERIVED( a7000p, a7000 ) MCFG_CPU_CLOCK(XTAL_48MHz) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sarpc, riscpc_state ) +static MACHINE_CONFIG_START( sarpc ) /* Basic machine hardware */ MCFG_CPU_ADD( "maincpu", ARM7, 202000000 ) // StrongARM MCFG_CPU_PROGRAM_MAP(a7000_mem) @@ -864,7 +864,7 @@ static MACHINE_CONFIG_START( sarpc, riscpc_state ) MCFG_PALETTE_ADD("palette", 0x200) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sarpc_j233, riscpc_state ) +static MACHINE_CONFIG_START( sarpc_j233 ) /* Basic machine hardware */ MCFG_CPU_ADD( "maincpu", ARM7, 233000000 ) // StrongARM MCFG_CPU_PROGRAM_MAP(a7000_mem) @@ -947,10 +947,10 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1994, rpc600, 0, 0, rpc600, a7000, driver_device, 0, "Acorn", "Risc PC 600", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1994, rpc700, rpc600, 0, rpc700, a7000, driver_device, 0, "Acorn", "Risc PC 700", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1995, a7000, rpc600, 0, a7000, a7000, driver_device, 0, "Acorn", "Archimedes A7000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1997, a7000p, rpc600, 0, a7000p, a7000, driver_device, 0, "Acorn", "Archimedes A7000+", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1997, sarpc, rpc600, 0, sarpc, a7000, driver_device, 0, "Acorn", "StrongARM Risc PC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1997, sarpc_j233, rpc600, 0, sarpc_j233, a7000, driver_device, 0, "Acorn", "J233 StrongARM Risc PC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1994, rpc600, 0, 0, rpc600, a7000, riscpc_state, 0, "Acorn", "Risc PC 600", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1994, rpc700, rpc600, 0, rpc700, a7000, riscpc_state, 0, "Acorn", "Risc PC 700", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1995, a7000, rpc600, 0, a7000, a7000, riscpc_state, 0, "Acorn", "Archimedes A7000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1997, a7000p, rpc600, 0, a7000p, a7000, riscpc_state, 0, "Acorn", "Archimedes A7000+", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1997, sarpc, rpc600, 0, sarpc, a7000, riscpc_state, 0, "Acorn", "StrongARM Risc PC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1997, sarpc_j233, rpc600, 0, sarpc_j233, a7000, riscpc_state, 0, "Acorn", "J233 StrongARM Risc PC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/rltennis.cpp b/src/mame/drivers/rltennis.cpp index 61e39626ef7..3b827083d00 100644 --- a/src/mame/drivers/rltennis.cpp +++ b/src/mame/drivers/rltennis.cpp @@ -183,7 +183,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, rltennis_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( rltennis, rltennis_state ) +static MACHINE_CONFIG_START( rltennis ) MCFG_CPU_ADD("maincpu", M68000, RLT_XTAL/2) /* 68000P8 ??? */ MCFG_CPU_PROGRAM_MAP(rltennis_main) @@ -236,4 +236,4 @@ ROM_START( rltennis ) ROM_LOAD( "tennis_3.u52", 0x00000, 0x80000, CRC(517dcd0e) SHA1(b2703e185ee8cf7e115ea07151e7bee8be34948b) ) ROM_END -GAME( 1993, rltennis, 0, rltennis, rltennis, driver_device, 0, ROT0, "TCH", "Reality Tennis", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, rltennis, 0, rltennis, rltennis, rltennis_state, 0, ROT0, "TCH", "Reality Tennis", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rm380z.cpp b/src/mame/drivers/rm380z.cpp index b9651de896c..2f1b05730ac 100644 --- a/src/mame/drivers/rm380z.cpp +++ b/src/mame/drivers/rm380z.cpp @@ -183,7 +183,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( rm380z_io , AS_IO, 8, rm380z_state) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0xbf) AM_READWRITE(rm380z_portlow_r, rm380z_portlow_w) - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("wd1771", fd1771_t, read, write) + AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("wd1771", fd1771_device, read, write) AM_RANGE(0xc4, 0xc4) AM_WRITE(disk_0_control) AM_RANGE(0xc5, 0xff) AM_READWRITE(rm380z_porthi_r, rm380z_porthi_w) ADDRESS_MAP_END @@ -228,7 +228,7 @@ uint32_t rm380z_state::screen_update_rm380z(screen_device &screen, bitmap_ind16 return 0; } -static MACHINE_CONFIG_START( rm380z, rm380z_state ) +static MACHINE_CONFIG_START( rm380z ) /* basic machine hardware */ MCFG_CPU_ADD(RM380Z_MAINCPU_TAG, Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(rm380z_mem) @@ -265,10 +265,10 @@ static MACHINE_CONFIG_START( rm380z, rm380z_state ) /* keyboard */ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(rm380z_state, keyboard_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(rm380z_state, keyboard_put)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rm480z, rm380z_state ) +static MACHINE_CONFIG_START( rm480z ) /* basic machine hardware */ MCFG_CPU_ADD(RM380Z_MAINCPU_TAG, Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(rm480z_mem) @@ -288,7 +288,7 @@ static MACHINE_CONFIG_START( rm480z, rm380z_state ) /* keyboard */ // MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) -// MCFG_GENERIC_KEYBOARD_CB(WRITE8(rm380z_state, keyboard_put)) +// MCFG_GENERIC_KEYBOARD_CB(PUT(rm380z_state, keyboard_put)) MACHINE_CONFIG_END @@ -345,10 +345,10 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -COMP(1978, rm380z, 0, 0, rm380z, rm380z, rm380z_state, rm380z, "Research Machines", "RM-380Z, COS 4.0B", MACHINE_NO_SOUND_HW) -COMP(1978, rm380z34d, rm380z, 0, rm380z, rm380z, rm380z_state, rm380z34d, "Research Machines", "RM-380Z, COS 3.4D", MACHINE_BTANB_FLAGS) -COMP(1978, rm380z34e, rm380z, 0, rm380z, rm380z, rm380z_state, rm380z34e, "Research Machines", "RM-380Z, COS 3.4E", MACHINE_BTANB_FLAGS) -COMP(1981, rm480z, rm380z, 0, rm480z, rm380z, rm380z_state, rm380z34e, "Research Machines", "LINK RM-480Z (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP(1981, rm480za, rm380z, 0, rm480z, rm380z, rm380z_state, rm380z34e, "Research Machines", "LINK RM-480Z (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP(1978, rm380z, 0, 0, rm380z, rm380z, rm380z_state, rm380z, "Research Machines", "RM-380Z, COS 4.0B", MACHINE_NO_SOUND_HW) +COMP(1978, rm380z34d, rm380z, 0, rm380z, rm380z, rm380z_state, rm380z34d, "Research Machines", "RM-380Z, COS 3.4D", MACHINE_BTANB_FLAGS) +COMP(1978, rm380z34e, rm380z, 0, rm380z, rm380z, rm380z_state, rm380z34e, "Research Machines", "RM-380Z, COS 3.4E", MACHINE_BTANB_FLAGS) +COMP(1981, rm480z, rm380z, 0, rm480z, rm380z, rm380z_state, rm380z34e, "Research Machines", "LINK RM-480Z (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP(1981, rm480za, rm380z, 0, rm480z, rm380z, rm380z_state, rm380z34e, "Research Machines", "LINK RM-480Z (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/rmhaihai.cpp b/src/mame/drivers/rmhaihai.cpp index d319bcfa1bc..1130b570d8d 100644 --- a/src/mame/drivers/rmhaihai.cpp +++ b/src/mame/drivers/rmhaihai.cpp @@ -9,6 +9,7 @@ Real Mahjong Haihai Seichouhen (c)1986 Visco CPU: Z80 Sound: AY-3-8910 M5205 +NVRAM: NEC D449C OSC: 20.000MHz driver by Nicola Salmoria @@ -21,9 +22,6 @@ TODO: deviously delayed to a later part of the game). In themj the checks are patched out, maybe it's a bootleg? -- there probably is an area of NVRAM, because credits don't go away after - a reset. - - some unknown reads and writes. - visible area uncertain. @@ -32,6 +30,7 @@ TODO: #include "emu.h" #include "cpu/z80/z80.h" +#include "machine/nvram.h" #include "sound/ay8910.h" #include "sound/msm5205.h" #include "screen.h" @@ -60,8 +59,8 @@ public: int m_keyboard_cmd; int m_gfxbank; - DECLARE_WRITE8_MEMBER(rmhaihai_videoram_w); - DECLARE_WRITE8_MEMBER(rmhaihai_colorram_w); + DECLARE_WRITE8_MEMBER(videoram_w); + DECLARE_WRITE8_MEMBER(colorram_w); DECLARE_READ8_MEMBER(keyboard_r); DECLARE_WRITE8_MEMBER(keyboard_w); DECLARE_READ8_MEMBER(samples_r); @@ -81,13 +80,13 @@ public: -WRITE8_MEMBER(rmhaihai_state::rmhaihai_videoram_w) +WRITE8_MEMBER(rmhaihai_state::videoram_w) { m_videoram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(rmhaihai_state::rmhaihai_colorram_w) +WRITE8_MEMBER(rmhaihai_state::colorram_w) { m_colorram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); @@ -119,7 +118,7 @@ uint32_t rmhaihai_state::screen_update(screen_device &screen, bitmap_ind16 &bitm - +// TODO: this device is shared with Speed Attack READ8_MEMBER(rmhaihai_state::keyboard_r) { static const char *const keynames[] = { "KEY0", "KEY1" }; @@ -128,6 +127,7 @@ READ8_MEMBER(rmhaihai_state::keyboard_r) switch(space.device().safe_pc()) { /* read keyboard */ + case 0x0280: case 0x0aba: // rmhaihai, rmhaisei case 0x0b2a: // rmhaihib case 0x0ab4: // rmhaijin @@ -142,6 +142,7 @@ READ8_MEMBER(rmhaihai_state::keyboard_r) if (ioport("KEY1")->read() & 0x8000) return 0x80; // coin return 0; } + case 0x02aa: case 0x5c7b: // rmhaihai, rmhaisei, rmhaijin case 0x5950: // rmhaihib case 0x5bf3: // themj, but the test is NOPed out! @@ -225,9 +226,9 @@ MACHINE_RESET_MEMBER(rmhaihai_state,themj) static ADDRESS_MAP_START( rmhaihai_map, AS_PROGRAM, 8, rmhaihai_state ) AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_RAM - AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(rmhaihai_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(rmhaihai_videoram_w) AM_SHARE("videoram") + AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("nvram") + AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") + AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") AM_RANGE(0xb83c, 0xb83c) AM_WRITENOP // ?? AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // ?? AM_RANGE(0xc000, 0xdfff) AM_ROM @@ -251,8 +252,8 @@ static ADDRESS_MAP_START( themj_map, AS_PROGRAM, 8, rmhaihai_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") AM_RANGE(0xa000, 0xa7ff) AM_RAM - AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(rmhaihai_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(rmhaihai_videoram_w) AM_SHARE("videoram") + AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") + AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank2") AM_RANGE(0xe000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -470,7 +471,7 @@ static GFXDECODE_START( themj ) GFXDECODE_END -static MACHINE_CONFIG_START( rmhaihai, rmhaihai_state ) +static MACHINE_CONFIG_START( rmhaihai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,20000000/4) /* 5 MHz ??? */ @@ -478,6 +479,8 @@ static MACHINE_CONFIG_START( rmhaihai, rmhaihai_state ) MCFG_CPU_IO_MAP(rmhaihai_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", rmhaihai_state, irq0_line_hold) + MCFG_NVRAM_ADD_0FILL("nvram") + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -500,7 +503,7 @@ static MACHINE_CONFIG_START( rmhaihai, rmhaihai_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ADD("msm", MSM5205, 500000) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -525,6 +528,8 @@ static MACHINE_CONFIG_DERIVED( themj, rmhaihai ) MCFG_MACHINE_START_OVERRIDE(rmhaihai_state,themj) MCFG_MACHINE_RESET_OVERRIDE(rmhaihai_state,themj) + MCFG_DEVICE_REMOVE("nvram") + /* video hardware */ MCFG_GFXDECODE_MODIFY("gfxdecode", themj) MCFG_PALETTE_MODIFY("palette") @@ -566,6 +571,33 @@ ROM_START( rmhaihai ) ROM_LOAD( "s0-1.5g", 0x00000, 0x8000, CRC(65e55b7e) SHA1(3852fb3b37eccdcddff05d8ef4a742fcb8b63473) ) ROM_END +ROM_START( rmhaihai2 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "s2_6.11g", 0x00000, 0x2000, CRC(cb962e27) SHA1(ac51b76f9b9cdbfd4a42eace645343adb7a84ff8) ) + ROM_CONTINUE( 0x06000, 0x2000 ) + ROM_LOAD( "s2_4.8g", 0x04000, 0x2000, CRC(8eaa1869) SHA1(f5c928e63bbfc2d8035d730f8fdba29c21de38b6) ) + ROM_CONTINUE( 0x02000, 0x2000 ) + ROM_LOAD( "s2_2.6g", 0x08000, 0x2000, CRC(8df9a0f6) SHA1(15dfdf3a3b40161406b594c449ad1630dfb42061) ) + ROM_CONTINUE( 0x0c000, 0x2000 ) + + ROM_REGION( 0x20000, "gfx1", 0 ) + ROM_LOAD( "s0-10.8a", 0x00000, 0x4000, CRC(797c63d1) SHA1(2ff9c3c61b28c34de97c0117b7eadb409d79df46) ) + ROM_LOAD( "s0-9.7a", 0x04000, 0x4000, CRC(b2526747) SHA1(73d0a19a5bb83e8977e94a47abbb65f9c7788c78) ) + ROM_LOAD( "s0-8.6a", 0x08000, 0x4000, CRC(146eaa31) SHA1(0e38aab52ff9bf0d42fea24caeee6ca90d63ace2) ) + ROM_LOAD( "s1-7.5a", 0x0c000, 0x4000, CRC(be59e742) SHA1(19d253f72f760f6350f76b313cf8aca7e3f90e8d) ) + ROM_LOAD( "s0-12.11a", 0x10000, 0x4000, CRC(e4229389) SHA1(b14d7855b66fe03c1485cb735cb20f59f19f248f) ) + ROM_LOAD( "s1-11.10a", 0x14000, 0x4000, CRC(029ef909) SHA1(fd867b8e1ccd5b88f18409ff17939ec8420c6131) ) + /* 0x18000-0x1ffff empty space filled by the init function */ + + ROM_REGION( 0x0300, "proms", 0 ) + ROM_LOAD( "s2.13b", 0x0000, 0x0100, CRC(911d32a5) SHA1(36f2b62009918862c13f3eda05a21403b4d9607f) ) + ROM_LOAD( "s1.13a", 0x0100, 0x0100, CRC(e9be978a) SHA1(50c7ca7a7496cb6fe5e8ce0db693ccb82dbbb8c6) ) + ROM_LOAD( "s3.13c", 0x0200, 0x0100, CRC(609775a6) SHA1(70a787aec0852e106216a4ca9891d36aef60b189) ) + + ROM_REGION( 0x8000, "adpcm", 0 ) /* ADPCM samples, read directly by the main CPU */ + ROM_LOAD( "s0-1.5g", 0x00000, 0x8000, CRC(65e55b7e) SHA1(3852fb3b37eccdcddff05d8ef4a742fcb8b63473) ) +ROM_END + ROM_START( rmhaihib ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "s-30-6.11g", 0x00000, 0x2000, CRC(f3e13cc8) SHA1(7eb9b17ea9efb5b2891ec40a9ff9744e84c0511c) ) @@ -698,8 +730,9 @@ DRIVER_INIT_MEMBER(rmhaihai_state,rmhaihai) } -GAME( 1985, rmhaihai, 0, rmhaihai, rmhaihai, rmhaihai_state, rmhaihai, ROT0, "Alba", "Real Mahjong Haihai (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, rmhaihib, rmhaihai, rmhaihai, rmhaihib, rmhaihai_state, rmhaihai, ROT0, "Alba", "Real Mahjong Haihai [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, rmhaijin, 0, rmhaihai, rmhaihai, rmhaihai_state, rmhaihai, ROT0, "Alba", "Real Mahjong Haihai Jinji Idou Hen (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, rmhaisei, 0, rmhaisei, rmhaihai, rmhaihai_state, rmhaihai, ROT0, "Visco", "Real Mahjong Haihai Seichouhen (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, themj, 0, themj, rmhaihai, rmhaihai_state, rmhaihai, ROT0, "Visco", "The Mah-jong (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, rmhaihai, 0, rmhaihai, rmhaihai, rmhaihai_state, rmhaihai, ROT0, "Alba", "Real Mahjong Haihai (Japan, newer)", MACHINE_SUPPORTS_SAVE ) // writes Homedata in NVRAM +GAME( 1985, rmhaihai2, rmhaihai, rmhaihai, rmhaihai, rmhaihai_state, rmhaihai, ROT0, "Alba", "Real Mahjong Haihai (Japan, older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, rmhaihib, rmhaihai, rmhaihai, rmhaihib, rmhaihai_state, rmhaihai, ROT0, "Alba", "Real Mahjong Haihai [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rmhaijin, 0, rmhaihai, rmhaihai, rmhaihai_state, rmhaihai, ROT0, "Alba", "Real Mahjong Haihai Jinji Idou Hen (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rmhaisei, 0, rmhaisei, rmhaihai, rmhaihai_state, rmhaihai, ROT0, "Visco", "Real Mahjong Haihai Seichouhen (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, themj, 0, themj, rmhaihai, rmhaihai_state, rmhaihai, ROT0, "Visco", "The Mah-jong (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rmnimbus.cpp b/src/mame/drivers/rmnimbus.cpp index b0a50622cb0..ff62011a948 100644 --- a/src/mame/drivers/rmnimbus.cpp +++ b/src/mame/drivers/rmnimbus.cpp @@ -57,7 +57,7 @@ static ADDRESS_MAP_START(nimbus_io, AS_IO, 16, rmnimbus_state ) AM_RANGE( 0x00e0, 0x00ef) AM_DEVREADWRITE8(AY8910_TAG, ay8910_device, data_r, address_data_w, 0x00FF) AM_RANGE( 0x00f0, 0x00f7) AM_DEVREADWRITE8(Z80SIO_TAG, z80sio2_device, cd_ba_r, cd_ba_w, 0x00ff) AM_RANGE( 0x0400, 0x0401) AM_WRITE8(fdc_ctl_w, 0x00ff) - AM_RANGE( 0x0408, 0x040f) AM_DEVREADWRITE8(FDC_TAG, wd2793_t, read, write, 0x00ff) + AM_RANGE( 0x0408, 0x040f) AM_DEVREADWRITE8(FDC_TAG, wd2793_device, read, write, 0x00ff) AM_RANGE( 0x0410, 0x041f) AM_READWRITE8(scsi_r, scsi_w, 0x00ff) AM_RANGE( 0x0480, 0x049f) AM_DEVREADWRITE8(VIA_TAG, via6522_device, read, write, 0x00FF) ADDRESS_MAP_END @@ -108,7 +108,7 @@ static const uint16_t def_config[16] = 0x0000, 0x8893, 0x2025, 0xB9E6 }; -static MACHINE_CONFIG_START( nimbus, rmnimbus_state ) +static MACHINE_CONFIG_START( nimbus ) /* basic machine hardware */ MCFG_CPU_ADD(MAINCPU_TAG, I80186, 16000000) // the cpu is a 10Mhz part but the serial clocks are wrong unless it runs at 8Mhz MCFG_CPU_PROGRAM_MAP(nimbus_mem) @@ -155,8 +155,8 @@ static MACHINE_CONFIG_START( nimbus, rmnimbus_state ) MCFG_DEVICE_ADD("scsi_data_in", INPUT_BUFFER, 0) MCFG_DEVICE_ADD("scsi_ctrl_out", OUTPUT_LATCH, 0) - MCFG_OUTPUT_LATCH_BIT0_HANDLER(DEVWRITELINE(SCSIBUS_TAG, SCSI_PORT_DEVICE, write_rst)) - MCFG_OUTPUT_LATCH_BIT1_HANDLER(DEVWRITELINE(SCSIBUS_TAG, SCSI_PORT_DEVICE, write_sel)) + MCFG_OUTPUT_LATCH_BIT0_HANDLER(DEVWRITELINE(SCSIBUS_TAG, scsi_port_device, write_rst)) + MCFG_OUTPUT_LATCH_BIT1_HANDLER(DEVWRITELINE(SCSIBUS_TAG, scsi_port_device, write_sel)) MCFG_OUTPUT_LATCH_BIT2_HANDLER(WRITELINE(rmnimbus_state, write_scsi_iena)) MCFG_RAM_ADD(RAM_TAG) @@ -202,7 +202,7 @@ static MACHINE_CONFIG_START( nimbus, rmnimbus_state ) MCFG_SOUND_ADD(MSM5205_TAG, MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(rmnimbus_state, nimbus_msm5205_vck)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, MONO_TAG, 0.75) /* Software list */ @@ -229,5 +229,5 @@ ROM_START( nimbus ) ROM_LOAD("hexec-v1.02u-13488-1985-10-29.rom", 0x0000, 0x1000, CRC(75c6adfd) SHA1(0f11e0b7386c6368d20e1fc7a6196d670f924825)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, nimbus, 0, 0, nimbus, nimbus, driver_device, 0, "Research Machines", "Nimbus", 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, nimbus, 0, 0, nimbus, nimbus, rmnimbus_state, 0, "Research Machines", "Nimbus", 0) diff --git a/src/mame/drivers/rmt32.cpp b/src/mame/drivers/rmt32.cpp index 0be194f8d94..a77fbc0ab16 100644 --- a/src/mame/drivers/rmt32.cpp +++ b/src/mame/drivers/rmt32.cpp @@ -348,7 +348,7 @@ static ADDRESS_MAP_START( mt32_io, AS_IO, 16, mt32_state ) AM_RANGE(i8x9x_device::P0, i8x9x_device::P0) AM_READ(port0_r) ADDRESS_MAP_END -static MACHINE_CONFIG_START( mt32, mt32_state ) +static MACHINE_CONFIG_START( mt32 ) MCFG_CPU_ADD( "maincpu", P8098, XTAL_12MHz ) MCFG_CPU_PROGRAM_MAP( mt32_map ) MCFG_CPU_IO_MAP( mt32_io ) @@ -435,5 +435,5 @@ ROM_START( cm32l ) ROM_LOAD( "r15179917.ic19.bin", 0, 0x8000, CRC(236c87a6) SHA1(e1c03905c46e962d1deb15eeed92eb61b42bba4a) ) ROM_END -CONS( 1987, mt32, 0, 0, mt32, mt32, driver_device, 0, "Roland", "MT32", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) -CONS( 1989, cm32l, 0, 0, mt32, mt32, driver_device, 0, "Roland", "CM32L", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +CONS( 1987, mt32, 0, 0, mt32, mt32, mt32_state, 0, "Roland", "MT32", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +CONS( 1989, cm32l, 0, 0, mt32, mt32, mt32_state, 0, "Roland", "CM32L", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp index 1fc107b2c53..b6cc2c9cef5 100644 --- a/src/mame/drivers/rockrage.cpp +++ b/src/mame/drivers/rockrage.cpp @@ -245,7 +245,7 @@ void rockrage_state::machine_reset() m_vreg = 0; } -static MACHINE_CONFIG_START( rockrage, rockrage_state ) +static MACHINE_CONFIG_START( rockrage ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD6309, 3000000*4) /* 24MHz/8 */ @@ -391,6 +391,6 @@ ROM_END ***************************************************************************/ // YEAR, NAME, PARENT, MACHINE, INPUT, INIT,MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1986, rockrage, 0, rockrage, rockrage, driver_device, 0, ROT0, "Konami", "Rock'n Rage (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, rockragea, rockrage, rockrage, rockrage, driver_device, 0, ROT0, "Konami", "Rock'n Rage (prototype?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, rockragej, rockrage, rockrage, rockrage, driver_device, 0, ROT0, "Konami", "Koi no Hotrock (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rockrage, 0, rockrage, rockrage, rockrage_state, 0, ROT0, "Konami", "Rock'n Rage (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rockragea, rockrage, rockrage, rockrage, rockrage_state, 0, ROT0, "Konami", "Rock'n Rage (prototype?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rockragej, rockrage, rockrage, rockrage, rockrage_state, 0, ROT0, "Konami", "Koi no Hotrock (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rocnrope.cpp b/src/mame/drivers/rocnrope.cpp index fc532094a31..6b49896968e 100644 --- a/src/mame/drivers/rocnrope.cpp +++ b/src/mame/drivers/rocnrope.cpp @@ -200,7 +200,7 @@ INTERRUPT_GEN_MEMBER(rocnrope_state::vblank_irq) } -static MACHINE_CONFIG_START( rocnrope, rocnrope_state ) +static MACHINE_CONFIG_START( rocnrope ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI1, MASTER_CLOCK / 3 / 4) /* Verified in schematics */ @@ -377,5 +377,5 @@ DRIVER_INIT_MEMBER(rocnrope_state,rocnrope) *************************************/ GAME( 1983, rocnrope, 0, rocnrope, rocnrope, rocnrope_state, rocnrope, ROT270, "Konami", "Roc'n Rope", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, rocnropek, rocnrope, rocnrope, rocnrope, driver_device, 0, ROT270, "Konami (Kosuka license)", "Roc'n Rope (Kosuka)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, rocnropek, rocnrope, rocnrope, rocnrope, rocnrope_state, 0, ROT270, "Konami (Kosuka license)", "Roc'n Rope (Kosuka)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, ropeman, rocnrope, rocnrope, rocnrope, rocnrope_state, rocnrope, ROT270, "bootleg", "Ropeman (bootleg of Roc'n Rope)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rohga.cpp b/src/mame/drivers/rohga.cpp index 093f9218b14..d631342e101 100644 --- a/src/mame/drivers/rohga.cpp +++ b/src/mame/drivers/rohga.cpp @@ -896,7 +896,7 @@ DECOSPR_COLOUR_CB_MEMBER(rohga_state::schmeisr_col_callback) return colour; } -static MACHINE_CONFIG_START( rohga, rohga_state ) +static MACHINE_CONFIG_START( rohga ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -972,16 +972,16 @@ static MACHINE_CONFIG_START( rohga, rohga_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.78) MCFG_SOUND_ROUTE(1, "rspeaker", 0.78) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wizdfire, rohga_state ) +static MACHINE_CONFIG_START( wizdfire ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -1062,16 +1062,16 @@ static MACHINE_CONFIG_START( wizdfire, rohga_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( nitrobal, rohga_state ) +static MACHINE_CONFIG_START( nitrobal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -1154,16 +1154,16 @@ static MACHINE_CONFIG_START( nitrobal, rohga_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( schmeisr, rohga_state ) +static MACHINE_CONFIG_START( schmeisr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -1239,11 +1239,11 @@ static MACHINE_CONFIG_START( schmeisr, rohga_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) - MCFG_OKIM6295_ADD("oki1", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) MACHINE_CONFIG_END @@ -1921,12 +1921,12 @@ DRIVER_INIT_MEMBER(rohga_state,hangzo) memcpy(dst + 0x20000, src + 0x80000, 0x20000); } -GAME( 1991, rohga, 0, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (Asia/Europe v5.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, rohga1, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (Asia/Europe v3.0 set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, rohga2, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (Asia/Europe v3.0 set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, rohgah, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (Hong Kong v3.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, rohgau, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (US v1.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, wolffang, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Wolf Fang -Kuhga 2001- (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, rohga, 0, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (Asia/Europe v5.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, rohga1, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (Asia/Europe v3.0 set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, rohga2, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (Asia/Europe v3.0 set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, rohgah, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (Hong Kong v3.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, rohgau, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Rohga Armor Force (US v1.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, wolffang, rohga, rohga, rohga, rohga_state, rohga, ROT0, "Data East Corporation", "Wolf Fang -Kuhga 2001- (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, wizdfire, 0, wizdfire, wizdfire, rohga_state, wizdfire, ROT0, "Data East Corporation", "Wizard Fire (Over Sea v2.1)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, wizdfireu, wizdfire, wizdfire, wizdfire, rohga_state, wizdfire, ROT0, "Data East Corporation", "Wizard Fire (US v1.1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rollerg.cpp b/src/mame/drivers/rollerg.cpp index 343b58fd5c6..18411cb6195 100644 --- a/src/mame/drivers/rollerg.cpp +++ b/src/mame/drivers/rollerg.cpp @@ -69,7 +69,7 @@ void rollerg_state::device_timer(emu_timer &timer, device_timer_id id, int param WRITE8_MEMBER(rollerg_state::sound_arm_nmi_w) { m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); - timer_set(attotime::from_usec(50), TIMER_NMI); /* kludge until the K053260 is emulated correctly */ + m_nmi_timer->adjust(attotime::from_usec(50)); /* kludge until the K053260 is emulated correctly */ } READ8_MEMBER(rollerg_state::pip_r) @@ -226,6 +226,8 @@ void rollerg_state::machine_start() membank("bank1")->configure_entries(6, 2, &ROM[0x10000], 0x4000); membank("bank1")->set_entry(0); + m_nmi_timer = timer_alloc(TIMER_NMI); + save_item(NAME(m_readzoomroms)); } @@ -240,7 +242,7 @@ WRITE8_MEMBER( rollerg_state::banking_callback ) } -static MACHINE_CONFIG_START( rollerg, rollerg_state ) +static MACHINE_CONFIG_START( rollerg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* ? */ @@ -346,5 +348,5 @@ ROM_END ***************************************************************************/ -GAME( 1991, rollerg, 0, rollerg, rollerg, driver_device, 0, ROT0, "Konami", "Rollergames (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, rollergj, rollerg, rollerg, rollerg, driver_device, 0, ROT0, "Konami", "Rollergames (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, rollerg, 0, rollerg, rollerg, rollerg_state, 0, ROT0, "Konami", "Rollergames (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, rollergj, rollerg, rollerg, rollerg, rollerg_state, 0, ROT0, "Konami", "Rollergames (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rollext.cpp b/src/mame/drivers/rollext.cpp index 016b6b5adfe..d4e8753844f 100644 --- a/src/mame/drivers/rollext.cpp +++ b/src/mame/drivers/rollext.cpp @@ -537,7 +537,7 @@ void rollext_state::machine_start() } -static MACHINE_CONFIG_START(rollext, rollext_state) +static MACHINE_CONFIG_START(rollext) MCFG_CPU_ADD("maincpu", TMS32082_MP, 60000000) MCFG_CPU_PROGRAM_MAP(memmap) //MCFG_CPU_VBLANK_INT_DRIVER("screen", rollext_state, vblank_interrupt) diff --git a/src/mame/drivers/rollrace.cpp b/src/mame/drivers/rollrace.cpp index c91c490d6cd..ed5dfef309d 100644 --- a/src/mame/drivers/rollrace.cpp +++ b/src/mame/drivers/rollrace.cpp @@ -244,7 +244,7 @@ INTERRUPT_GEN_MEMBER(rollrace_state::sound_timer_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( rollrace, rollrace_state ) +static MACHINE_CONFIG_START( rollrace ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL_24MHz/8) /* verified on pcb */ @@ -441,6 +441,6 @@ ROM_START( rollace2 ) ROM_END -GAME( 1983, fightrol, 0, rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Taito license)", "Fighting Roller", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, rollace, fightrol, rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Williams license)", "Roller Aces (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, rollace2, fightrol, rollace2, rollrace, driver_device, 0, ROT90, "Kaneko (Williams license)", "Roller Aces (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, fightrol, 0, rollrace, rollrace, rollrace_state, 0, ROT270, "Kaneko (Taito license)", "Fighting Roller", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, rollace, fightrol, rollrace, rollrace, rollrace_state, 0, ROT270, "Kaneko (Williams license)", "Roller Aces (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, rollace2, fightrol, rollace2, rollrace, rollrace_state, 0, ROT90, "Kaneko (Williams license)", "Roller Aces (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rotaryf.cpp b/src/mame/drivers/rotaryf.cpp index 86bce2a785b..666657ded91 100644 --- a/src/mame/drivers/rotaryf.cpp +++ b/src/mame/drivers/rotaryf.cpp @@ -246,7 +246,7 @@ static INPUT_PORTS_START( rotaryf ) INPUT_PORTS_END -static MACHINE_CONFIG_START( rotaryf, rotaryf_state ) +static MACHINE_CONFIG_START( rotaryf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8085A,4000000) /* ?? MHz */ @@ -297,4 +297,4 @@ ROM_START( rotaryf ) ROM_END -GAME( 1979, rotaryf, 0, rotaryf, rotaryf, driver_device, 0, ROT270, "Kasco", "Rotary Fighter", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, rotaryf, 0, rotaryf, rotaryf, rotaryf_state, 0, ROT270, "Kasco", "Rotary Fighter", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/roul.cpp b/src/mame/drivers/roul.cpp index bb32d609302..841684858a5 100644 --- a/src/mame/drivers/roul.cpp +++ b/src/mame/drivers/roul.cpp @@ -294,7 +294,7 @@ static INPUT_PORTS_START( roul ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END -static MACHINE_CONFIG_START( roul, roul_state ) +static MACHINE_CONFIG_START( roul ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(roul_map) @@ -341,4 +341,4 @@ ROM_START(roul) ROM_LOAD( "roul.u38", 0x0020, 0x0020, CRC(23ae22c1) SHA1(bf0383462976ec6341ffa8a173264ce820bc654a) ) ROM_END -GAMEL( 1990, roul, 0, roul, roul, driver_device, 0, ROT0, "bootleg", "Super Lucky Roulette", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_roul ) +GAMEL( 1990, roul, 0, roul, roul, roul_state, 0, ROT0, "bootleg", "Super Lucky Roulette", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_roul ) diff --git a/src/mame/drivers/route16.cpp b/src/mame/drivers/route16.cpp index f0839becc48..cf174755a4f 100644 --- a/src/mame/drivers/route16.cpp +++ b/src/mame/drivers/route16.cpp @@ -554,7 +554,7 @@ MACHINE_START_MEMBER(route16_state, ttmahjng) } -static MACHINE_CONFIG_START( route16, route16_state ) +static MACHINE_CONFIG_START( route16 ) /* basic machine hardware */ MCFG_CPU_ADD("cpu1", Z80, 2500000) /* 10MHz / 4 = 2.5MHz */ @@ -1077,19 +1077,19 @@ DRIVER_INIT_MEMBER(route16_state,route16a) * *************************************/ -GAME( 1981, route16, 0, route16, route16, route16_state, route16, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, route16a, route16, route16, route16, route16_state, route16a, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, route16c, route16, route16, route16, route16_state, route16c, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 3, bootleg?)", MACHINE_SUPPORTS_SAVE ) // similar to set 1 but with some protection removed? -GAME( 1981, route16bl,route16, route16, route16, driver_device, 0, ROT270, "bootleg (Leisure and Allied)", "Route 16 (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, routex, route16, routex, route16, driver_device, 0, ROT270, "bootleg", "Route X (bootleg)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1980, speakres, 0, speakres, speakres, driver_device, 0, ROT270, "Sun Electronics", "Speak & Rescue", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, speakresb,speakres, speakres, speakres, driver_device, 0, ROT270, "bootleg", "Speak & Rescue (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, stratvox, speakres, stratvox, stratvox, driver_device, 0, ROT270, "Sun Electronics (Taito license)", "Stratovox (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, stratvoxa,speakres, stratvox, stratvox, driver_device, 0, ROT270, "Sun Electronics (Taito license)", "Stratovox (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, stratvoxb,speakres, stratvox, stratvox, driver_device, 0, ROT270, "bootleg", "Stratovox (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacecho, speakres, spacecho, spacecho, driver_device, 0, ROT270, "bootleg (Gayton Games)", "Space Echo (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacecho2,speakres, spacecho, spacecho, driver_device, 0, ROT270, "bootleg (Gayton Games)", "Space Echo (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, speakhlp, speakres, spacecho, spacecho, driver_device, 0, ROT270, "bootleg", "Speak & Help", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) - -GAME( 1981, ttmahjng, 0, ttmahjng, ttmahjng, driver_device, 0, ROT0, "Taito", "T.T Mahjong", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, route16, 0, route16, route16, route16_state, route16, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, route16a, route16, route16, route16, route16_state, route16a, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, route16c, route16, route16, route16, route16_state, route16c, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 3, bootleg?)", MACHINE_SUPPORTS_SAVE ) // similar to set 1 but with some protection removed? +GAME( 1981, route16bl,route16, route16, route16, route16_state, 0, ROT270, "bootleg (Leisure and Allied)", "Route 16 (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, routex, route16, routex, route16, route16_state, 0, ROT270, "bootleg", "Route X (bootleg)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1980, speakres, 0, speakres, speakres, route16_state, 0, ROT270, "Sun Electronics", "Speak & Rescue", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, speakresb,speakres, speakres, speakres, route16_state, 0, ROT270, "bootleg", "Speak & Rescue (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, stratvox, speakres, stratvox, stratvox, route16_state, 0, ROT270, "Sun Electronics (Taito license)", "Stratovox (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, stratvoxa,speakres, stratvox, stratvox, route16_state, 0, ROT270, "Sun Electronics (Taito license)", "Stratovox (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, stratvoxb,speakres, stratvox, stratvox, route16_state, 0, ROT270, "bootleg", "Stratovox (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacecho, speakres, spacecho, spacecho, route16_state, 0, ROT270, "bootleg (Gayton Games)", "Space Echo (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacecho2,speakres, spacecho, spacecho, route16_state, 0, ROT270, "bootleg (Gayton Games)", "Space Echo (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, speakhlp, speakres, spacecho, spacecho, route16_state, 0, ROT270, "bootleg", "Speak & Help", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) + +GAME( 1981, ttmahjng, 0, ttmahjng, ttmahjng, route16_state, 0, ROT0, "Taito", "T.T Mahjong", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rowamet.cpp b/src/mame/drivers/rowamet.cpp index 9de28405c7c..83365b09c6a 100644 --- a/src/mame/drivers/rowamet.cpp +++ b/src/mame/drivers/rowamet.cpp @@ -167,7 +167,7 @@ READ8_MEMBER( rowamet_state::sound_r ) WRITE8_MEMBER( rowamet_state::mute_w ) { - machine().sound().system_enable(~data); + machine().sound().system_enable(data ? 0 : 1); } READ8_MEMBER( rowamet_state::io_r ) @@ -209,7 +209,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( rowamet_state::timer_a ) output().set_digit_value(++digit, patterns[m_p_ram[m_out_offs++]&15]); } -static MACHINE_CONFIG_START( rowamet, rowamet_state ) +static MACHINE_CONFIG_START( rowamet ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 1888888) MCFG_CPU_PROGRAM_MAP(rowamet_map) @@ -249,4 +249,4 @@ ROM_END /-------------------------------------------------------------------*/ -GAME(198?, heavymtl, 0, rowamet, rowamet, driver_device, 0, ROT0, "Rowamet", "Heavy Metal", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(198?, heavymtl, 0, rowamet, rowamet, rowamet_state, 0, ROT0, "Rowamet", "Heavy Metal", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp index 2bdead129b4..fe8093b0479 100644 --- a/src/mame/drivers/royalmah.cpp +++ b/src/mame/drivers/royalmah.cpp @@ -50,6 +50,7 @@ TODO: - mjtensin: random crashes, interrupts related +- convert the remaining set_base calls to configured banking and enable save state support Stephh's notes (based on the games Z80 code and some tests) : @@ -111,51 +112,43 @@ public: royalmah_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this,"maincpu"), + m_ay(*this, "aysnd"), m_videoram(*this, "videoram"), m_audiocpu(*this, "audiocpu"), m_rtc(*this, "rtc"), m_soundlatch(*this, "soundlatch") { } + - required_device m_maincpu; - required_shared_ptr m_videoram; - optional_device m_audiocpu; - optional_device m_rtc; - optional_device m_soundlatch; - - uint8_t m_input_port_select; - uint8_t m_dsw_select; - uint8_t m_rombank; - int m_palette_base; - std::unique_ptr m_janptr96_nvram; - uint8_t m_suzume_bank; - uint8_t m_gfx_adr_l; - uint8_t m_gfx_adr_m; - uint8_t m_gfx_adr_h; - uint32_t m_gfx_adr; - uint8_t m_gfxdata0; - uint8_t m_gfxdata1; - uint8_t m_jansou_colortable[16]; - uint8_t m_mjifb_rom_enable; - uint8_t m_flip_screen; + DECLARE_READ8_MEMBER(player_1_port_r); + DECLARE_READ8_MEMBER(player_2_port_r); + DECLARE_WRITE8_MEMBER(input_port_select_w); DECLARE_WRITE8_MEMBER(royalmah_palbank_w); - DECLARE_WRITE8_MEMBER(royalmah_rom_w); + DECLARE_WRITE8_MEMBER(tahjong_bank_w); + DECLARE_WRITE8_MEMBER(mjderngr_coin_w); DECLARE_WRITE8_MEMBER(mjderngr_palbank_w); - DECLARE_WRITE8_MEMBER(input_port_select_w); + DECLARE_READ8_MEMBER(majs101b_dsw_r); + DECLARE_READ8_MEMBER(suzume_dsw_r); DECLARE_WRITE8_MEMBER(suzume_bank_w); + DECLARE_WRITE8_MEMBER(mjapinky_bank_w); DECLARE_WRITE8_MEMBER(mjapinky_palbank_w); DECLARE_READ8_MEMBER(mjapinky_dsw_r); + DECLARE_WRITE8_MEMBER(tontonb_bank_w); + DECLARE_WRITE8_MEMBER(dynax_bank_w); + DECLARE_READ8_MEMBER(daisyari_dsw_r); DECLARE_WRITE8_MEMBER(daisyari_bank_w); + DECLARE_READ8_MEMBER(mjclub_dsw_r); DECLARE_WRITE8_MEMBER(mjclub_bank_w); + DECLARE_WRITE8_MEMBER(jansou_dsw_sel_w); DECLARE_READ8_MEMBER(jansou_dsw_r); DECLARE_WRITE8_MEMBER(jansou_colortable_w); @@ -166,6 +159,7 @@ public: DECLARE_READ8_MEMBER(jansou_6404_r); DECLARE_READ8_MEMBER(jansou_6405_r); DECLARE_WRITE8_MEMBER(jansou_sound_w); + DECLARE_WRITE8_MEMBER(janptr96_dswsel_w); DECLARE_READ8_MEMBER(janptr96_dswsel_r); DECLARE_READ8_MEMBER(janptr96_dsw_r); @@ -173,6 +167,8 @@ public: DECLARE_WRITE8_MEMBER(janptr96_rambank_w); DECLARE_READ8_MEMBER(janptr96_unknown_r); DECLARE_WRITE8_MEMBER(janptr96_coin_counter_w); + DECLARE_WRITE_LINE_MEMBER(janptr96_rtc_irq); + DECLARE_WRITE8_MEMBER(mjifb_coin_counter_w); DECLARE_READ8_MEMBER(mjifb_rom_io_r); DECLARE_WRITE8_MEMBER(mjifb_rom_io_w); @@ -185,17 +181,21 @@ public: DECLARE_WRITE8_MEMBER(mjifb_p3_w); DECLARE_WRITE8_MEMBER(mjifb_p4_w); DECLARE_WRITE8_MEMBER(mjifb_p8_w); + DECLARE_READ8_MEMBER(mjdejavu_rom_io_r); DECLARE_WRITE8_MEMBER(mjdejavu_rom_io_w); + DECLARE_READ8_MEMBER(mjtensin_p3_r); DECLARE_WRITE8_MEMBER(mjtensin_p4_w); DECLARE_WRITE8_MEMBER(mjtensin_6ff3_w); + DECLARE_WRITE8_MEMBER(cafetime_p4_w); DECLARE_WRITE8_MEMBER(cafetime_p3_w); DECLARE_WRITE8_MEMBER(cafetime_dsw_w); DECLARE_READ8_MEMBER(cafetime_dsw_r); DECLARE_READ8_MEMBER(cafetime_7fe4_r); DECLARE_WRITE8_MEMBER(cafetime_7fe3_w); + DECLARE_WRITE8_MEMBER(mjvegasa_p4_w); DECLARE_WRITE8_MEMBER(mjvegasa_p3_w); DECLARE_WRITE8_MEMBER(mjvegasa_rombank_w); @@ -204,24 +204,72 @@ public: DECLARE_WRITE8_MEMBER(mjvegasa_coin_counter_w); DECLARE_WRITE8_MEMBER(mjvegasa_12400_w); DECLARE_READ8_MEMBER(mjvegasa_12500_r); - DECLARE_READ8_MEMBER(royalmah_player_1_port_r); - DECLARE_READ8_MEMBER(royalmah_player_2_port_r); - DECLARE_WRITE_LINE_MEMBER(janptr96_rtc_irq); + DECLARE_WRITE_LINE_MEMBER(mjtensin_rtc_irq); - DECLARE_DRIVER_INIT(janptr96); + + DECLARE_DRIVER_INIT(tahjong); + DECLARE_DRIVER_INIT(dynax); + DECLARE_DRIVER_INIT(jansou); + DECLARE_DRIVER_INIT(suzume); DECLARE_DRIVER_INIT(ippatsu); + DECLARE_DRIVER_INIT(mjifb); + DECLARE_DRIVER_INIT(tontonb); + DECLARE_DRIVER_INIT(janptr96); DECLARE_PALETTE_INIT(royalmah); DECLARE_PALETTE_INIT(mjderngr); + uint32_t screen_update_royalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(suzume_irq); INTERRUPT_GEN_MEMBER(mjtensin_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(janptr96_interrupt); + +protected: + virtual void machine_start() override; + +private: + required_device m_maincpu; + required_device m_ay; + required_shared_ptr m_videoram; + optional_device m_audiocpu; + optional_device m_rtc; + optional_device m_soundlatch; + + // used by most games + uint8_t m_input_port_select; + uint8_t m_dsw_select; + uint8_t m_rombank; + uint8_t m_palette_base; + uint8_t m_flip_screen; + + // game specific + std::unique_ptr m_janptr96_nvram; + + uint8_t m_suzume_bank; + + uint8_t m_gfx_adr_l; + uint8_t m_gfx_adr_m; + uint8_t m_gfx_adr_h; + uint32_t m_gfx_adr; + uint8_t m_gfxdata0; + uint8_t m_gfxdata1; + uint8_t m_jansou_colortable[16]; + + uint8_t m_mjifb_rom_enable; + void mjtensin_update_rombank(); void cafetime_update_rombank(); }; - +void royalmah_state::machine_start() +{ + save_item(NAME(m_input_port_select)); + save_item(NAME(m_dsw_select)); + save_item(NAME(m_rombank)); + save_item(NAME(m_palette_base)); + save_item(NAME(m_flip_screen)); +} PALETTE_INIT_MEMBER(royalmah_state, royalmah) { @@ -308,21 +356,15 @@ WRITE8_MEMBER(royalmah_state::mjderngr_palbank_w) uint32_t royalmah_state::screen_update_royalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - uint8_t *videoram = m_videoram; - - offs_t offs; - - for (offs = 0; offs < 0x4000; offs++) + for (offs_t offs = 0; offs < 0x4000; offs++) { - int i; - - uint8_t data1 = videoram[offs + 0x0000]; - uint8_t data2 = videoram[offs + 0x4000]; + uint8_t data1 = m_videoram[offs + 0x0000]; + uint8_t data2 = m_videoram[offs + 0x4000]; uint8_t y = (m_flip_screen) ? 255 - (offs >> 6) : (offs >> 6); uint8_t x = (m_flip_screen) ? 255 - (offs << 2) : (offs << 2); - for (i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) { uint8_t pen = ((data2 >> 1) & 0x08) | ((data2 << 2) & 0x04) | ((data1 >> 3) & 0x02) | ((data1 >> 0) & 0x01); @@ -337,23 +379,12 @@ uint32_t royalmah_state::screen_update_royalmah(screen_device &screen, bitmap_in return 0; } - - - - -WRITE8_MEMBER(royalmah_state::royalmah_rom_w) -{ - /* using this handler will avoid all the entries in the error log that are the result of - the RLD and RRD instructions this games uses to print text on the screen */ -} - - WRITE8_MEMBER(royalmah_state::input_port_select_w) { m_input_port_select = data; } -READ8_MEMBER(royalmah_state::royalmah_player_1_port_r) +READ8_MEMBER(royalmah_state::player_1_port_r) { int ret = (ioport("KEY0")->read() & 0xc0) | 0x3f; @@ -366,7 +397,7 @@ READ8_MEMBER(royalmah_state::royalmah_player_1_port_r) return ret; } -READ8_MEMBER(royalmah_state::royalmah_player_2_port_r) +READ8_MEMBER(royalmah_state::player_2_port_r) { int ret = (ioport("KEY5")->read() & 0xc0) | 0x3f; @@ -414,40 +445,27 @@ READ8_MEMBER(royalmah_state::suzume_dsw_r) WRITE8_MEMBER(royalmah_state::tahjong_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - -logerror("%04x: bank %02x\n",space.device().safe_pc(),data); - - data &= 0x01; - - address = 0x10000 + data * 0x4000; - - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x01); } WRITE8_MEMBER(royalmah_state::suzume_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - m_suzume_bank = data; -logerror("%04x: bank %02x\n",space.device().safe_pc(),data); + logerror("%04x: bank %02x\n",space.device().safe_pc(),data); /* bits 6, 4 and 3 used for something input related? */ - address = 0x10000 + (data & 0x07) * 0x8000; - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x07); } WRITE8_MEMBER(royalmah_state::mjapinky_bank_w) { - uint8_t *ROM = memregion("maincpu")->base(); m_rombank = data; - membank("bank1")->set_base(ROM + 0x10000 + 0x8000 * data); + + membank("mainbank")->set_entry(data & 0x0f); } WRITE8_MEMBER(royalmah_state::mjapinky_palbank_w) @@ -466,36 +484,22 @@ READ8_MEMBER(royalmah_state::mjapinky_dsw_r) WRITE8_MEMBER(royalmah_state::tontonb_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - -logerror("%04x: bank %02x\n",space.device().safe_pc(),data); + logerror("%04x: bank %02x\n",space.device().safe_pc(),data); if (data == 0) return; // tontonb fix? - data &= 0x0f; - - address = 0x10000 + data * 0x8000; - - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x0f); } /* bits 5 and 6 seem to affect which Dip Switch to read in 'majs101b' */ WRITE8_MEMBER(royalmah_state::dynax_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - //logerror("%04x: bank %02x\n",space.device().safe_pc(),data); m_dsw_select = data & 0x60; - data &= 0x1f; - - address = 0x10000 + data * 0x8000; - - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x1f); } READ8_MEMBER(royalmah_state::daisyari_dsw_r) @@ -521,7 +525,7 @@ WRITE8_MEMBER(royalmah_state::daisyari_bank_w) address = 0x10000 + ((data & 0x30)>>4) * 0x10000 + (data & 0x1) * 0x8000; // printf("%08x %02x\n",address,data); - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_base(&rom[address]); /* bit 1 used too but unknown purpose. */ } @@ -541,41 +545,33 @@ READ8_MEMBER(royalmah_state::mjclub_dsw_r) WRITE8_MEMBER(royalmah_state::mjclub_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - m_dsw_select = data & 0xc0; - data &= 0x0f; - - address = 0x10000 + data * 0x8000; -// printf("%08x\n",address); - - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x0f); /* bit 5 used too but unknown purpose. */ } static ADDRESS_MAP_START( royalmah_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) // banked ROMs not present in royalmah + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) // banked ROMs not present in royalmah AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END static ADDRESS_MAP_START( mjapinky_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x7800, 0x7fff ) AM_RAM AM_RANGE( 0x8000, 0x8000 ) AM_READ(mjapinky_dsw_r ) - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END static ADDRESS_MAP_START( tahjong_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x3fff ) AM_ROM AM_WRITE(royalmah_rom_w ) - AM_RANGE( 0x4000, 0x6fff ) AM_ROMBANK( "bank1" ) AM_WRITE(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x3fff ) AM_ROM + AM_RANGE( 0x4000, 0x6fff ) AM_ROMBANK("mainbank") AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -621,6 +617,15 @@ static ADDRESS_MAP_START( suzume_iomap, AS_IO, 8, royalmah_state ) AM_RANGE( 0x81, 0x81 ) AM_WRITE(suzume_bank_w ) ADDRESS_MAP_END +static ADDRESS_MAP_START( mjyarou_iomap, AS_IO, 8, royalmah_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) + AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) + AM_RANGE( 0x12, 0x12 ) AM_READ_PORT("DSW2") +ADDRESS_MAP_END + static ADDRESS_MAP_START( dondenmj_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) @@ -716,7 +721,7 @@ static ADDRESS_MAP_START( mjapinky_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( janoh_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -855,8 +860,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( janptr96_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_RANGE( 0x6000, 0x6fff ) AM_RAMBANK("bank3") AM_SHARE("nvram") // nvram - AM_RANGE( 0x7000, 0x7fff ) AM_RAMBANK("bank2") // banked nvram - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") + AM_RANGE( 0x7000, 0x7fff ) AM_RAMBANK("rambank") // banked nvram + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("mainbank") AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -884,13 +889,12 @@ READ8_MEMBER(royalmah_state::janptr96_dsw_r) WRITE8_MEMBER(royalmah_state::janptr96_rombank_w) { - uint8_t *ROM = memregion("maincpu")->base(); - membank("bank1")->set_base(ROM + 0x10000 + 0x8000 * data); + membank("mainbank")->set_entry(data & 0x3f); } WRITE8_MEMBER(royalmah_state::janptr96_rambank_w) { - membank("bank2")->set_base(m_janptr96_nvram.get() + 0x1000 + 0x1000 * data); + membank("rambank")->set_entry(data & 0x07); } READ8_MEMBER(royalmah_state::janptr96_unknown_r) @@ -944,7 +948,7 @@ READ8_MEMBER(royalmah_state::mjifb_rom_io_r) { case 0x8000: return ioport("DSW4")->read(); // dsw 4 case 0x8200: return ioport("DSW3")->read(); // dsw 3 - case 0x9001: return machine().device("aysnd")->data_r(space, 0); // inputs + case 0x9001: return m_ay->data_r(space, 0); // inputs case 0x9011: return ioport("SYSTEM")->read(); } @@ -954,10 +958,9 @@ READ8_MEMBER(royalmah_state::mjifb_rom_io_r) WRITE8_MEMBER(royalmah_state::mjifb_rom_io_w) { - uint8_t *videoram = m_videoram; if (m_mjifb_rom_enable) { - videoram[offset] = data; + m_videoram[offset] = data; return; } @@ -966,8 +969,8 @@ WRITE8_MEMBER(royalmah_state::mjifb_rom_io_w) switch(offset) { case 0x8e00: m_palette_base = data & 0x1f; return; - case 0x9002: machine().device("aysnd")->data_w(space,0,data); return; - case 0x9003: machine().device("aysnd")->address_w(space,0,data); return; + case 0x9002: m_ay->data_w(space,0,data); return; + case 0x9003: m_ay->address_w(space,0,data); return; case 0x9010: mjifb_coin_counter_w(space,0,data); return; @@ -982,8 +985,7 @@ WRITE8_MEMBER(royalmah_state::mjifb_rom_io_w) WRITE8_MEMBER(royalmah_state::mjifb_videoram_w) { - uint8_t *videoram = m_videoram; - videoram[offset + 0x4000] = data; + m_videoram[offset + 0x4000] = data; } static ADDRESS_MAP_START( mjifb_map, AS_PROGRAM, 8, royalmah_state ) @@ -1053,7 +1055,7 @@ READ8_MEMBER(royalmah_state::mjdejavu_rom_io_r) { case 0x8000: return ioport("DSW2")->read(); // dsw 2 case 0x8001: return ioport("DSW1")->read(); // dsw 1 - case 0x9001: return machine().device("aysnd")->data_r(space, 0); // inputs + case 0x9001: return m_ay->data_r(space, 0); // inputs case 0x9011: return ioport("SYSTEM")->read(); } @@ -1063,10 +1065,9 @@ READ8_MEMBER(royalmah_state::mjdejavu_rom_io_r) WRITE8_MEMBER(royalmah_state::mjdejavu_rom_io_w) { - uint8_t *videoram = m_videoram; if (m_mjifb_rom_enable) { - videoram[offset] = data; + m_videoram[offset] = data; return; } @@ -1074,8 +1075,8 @@ WRITE8_MEMBER(royalmah_state::mjdejavu_rom_io_w) switch(offset) { case 0x8802: m_palette_base = data & 0x1f; return; - case 0x9002: machine().device("aysnd")->data_w(space,0,data); return; - case 0x9003: machine().device("aysnd")->address_w(space,0,data); return; + case 0x9002: m_ay->data_w(space,0,data); return; + case 0x9003: m_ay->address_w(space,0,data); return; case 0x9010: janptr96_coin_counter_w(space,0,data); return; case 0x9011: input_port_select_w(space,0,data); return; case 0x9013: @@ -1105,7 +1106,7 @@ READ8_MEMBER(royalmah_state::mjtensin_p3_r) void royalmah_state::mjtensin_update_rombank() { - membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); + membank("mainbank")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); } WRITE8_MEMBER(royalmah_state::mjtensin_p4_w) { @@ -1130,7 +1131,7 @@ static ADDRESS_MAP_START( mjtensin_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x6ff1, 0x6ff1 ) AM_WRITE(mjderngr_palbank_w ) AM_RANGE( 0x6ff3, 0x6ff3 ) AM_WRITE(mjtensin_6ff3_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -1146,7 +1147,7 @@ ADDRESS_MAP_END void royalmah_state::cafetime_update_rombank() { - membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); + membank("mainbank")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); } WRITE8_MEMBER(royalmah_state::cafetime_p4_w) { @@ -1200,7 +1201,7 @@ static ADDRESS_MAP_START( cafetime_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x7fe3, 0x7fe3 ) AM_WRITE(cafetime_7fe3_w ) AM_RANGE( 0x7fe4, 0x7fe4 ) AM_READ(cafetime_7fe4_r ) AM_RANGE( 0x7ff0, 0x7fff ) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -1246,10 +1247,9 @@ READ8_MEMBER(royalmah_state::mjvegasa_rom_io_r) WRITE8_MEMBER(royalmah_state::mjvegasa_rom_io_w) { - uint8_t *videoram = m_videoram; if ((m_rombank & 0x70) != 0x70) { - videoram[offset] = data; + m_videoram[offset] = data; return; } @@ -1668,6 +1668,33 @@ static INPUT_PORTS_START( suzume ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END +static INPUT_PORTS_START( mjyarou ) + PORT_INCLUDE( royalmah ) + + PORT_START("DSW2") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + static INPUT_PORTS_START( tontonb ) PORT_INCLUDE( mjctrl2 ) @@ -3306,7 +3333,7 @@ static INPUT_PORTS_START( mjvegasa ) INPUT_PORTS_END -static MACHINE_CONFIG_START( royalmah, royalmah_state ) +static MACHINE_CONFIG_START( royalmah ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ @@ -3332,8 +3359,8 @@ static MACHINE_CONFIG_START( royalmah, royalmah_state ) MCFG_SPEAKER_STANDARD_MONO("speaker") MCFG_SOUND_ADD("aysnd", AY8910, 18432000/12) - MCFG_AY8910_PORT_A_READ_CB(READ8(royalmah_state, royalmah_player_1_port_r)) - MCFG_AY8910_PORT_B_READ_CB(READ8(royalmah_state, royalmah_player_2_port_r)) + MCFG_AY8910_PORT_A_READ_CB(READ8(royalmah_state, player_1_port_r)) + MCFG_AY8910_PORT_B_READ_CB(READ8(royalmah_state, player_2_port_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.33) MACHINE_CONFIG_END @@ -3398,6 +3425,11 @@ static MACHINE_CONFIG_DERIVED( mjclub, royalmah ) MCFG_CPU_IO_MAP(mjclub_iomap) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( mjyarou, royalmah ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_IO_MAP(mjyarou_iomap) +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( ippatsu, dondenmj ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(ippatsu_iomap) @@ -4733,7 +4765,7 @@ Mahjong Yarou FRM-00 (modified royal mahjong hardware) -CPU: Z80 (on subboard) <- wrong,they are 2 z80 CPUs -AS +CPU: Z80 (on subboard) Sound: AY-3-8910 OSC: 18.432MHz @@ -4748,13 +4780,13 @@ ROMs: pin9 is not inserted to the socket Subboard: -7(2732) +7(2764) 8(2764) N82S129N.IC4 N82S123N.IC7 N82S129N.IC15 -Connetor between mainboard and subboard +Connector between mainboard and subboard sub - main CK - LS368 (1K) pin12 HD - LS08 (2E) pin1 @@ -4808,25 +4840,44 @@ http://japump.i.am/ ROM_START( mjyarou ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "1", 0x0000, 0x1000, CRC(312c3b29) SHA1(ec2e14b392cf761f0a7079376994418fd463a06c) ) - ROM_LOAD( "2", 0x1000, 0x1000, CRC(98f14097) SHA1(cd1f72d6effa50f95386dfc5fa9b5056d83e554f) ) - ROM_LOAD( "3", 0x2000, 0x1000, CRC(295dbf40) SHA1(d6ac7bd88da849e418e750e2c91a594f65bdff39) ) - ROM_LOAD( "4", 0x3000, 0x1000, CRC(a6a078c8) SHA1(936be36c7c938c705e7054a42c1908bb5a5ee1bb) ) - ROM_LOAD( "5", 0x4000, 0x1000, CRC(3179657e) SHA1(703fc57ae71554345754267c31809cf7af7f1639) ) - ROM_LOAD( "6", 0x5000, 0x1000, CRC(6ccc05b4) SHA1(6eefba6023673edd86e82a0ad861a4d8f7f6652b) ) - ROM_LOAD( "8", 0x6000, 0x2000, CRC(1adef246) SHA1(b5f5598daf71694effffbfb486b03fcda5a593ee) ) //might be a rom for the sub cpu. + ROM_LOAD( "1.p1", 0x0000, 0x1000, CRC(312c3b29) SHA1(ec2e14b392cf761f0a7079376994418fd463a06c) ) // on main board + ROM_LOAD( "2.p2", 0x1000, 0x1000, CRC(98f14097) SHA1(cd1f72d6effa50f95386dfc5fa9b5056d83e554f) ) // " + ROM_LOAD( "3.p3", 0x2000, 0x1000, CRC(295dbf40) SHA1(d6ac7bd88da849e418e750e2c91a594f65bdff39) ) // " + ROM_LOAD( "4.p4", 0x3000, 0x1000, CRC(a6a078c8) SHA1(936be36c7c938c705e7054a42c1908bb5a5ee1bb) ) // " + ROM_LOAD( "5.p5", 0x4000, 0x1000, CRC(3179657e) SHA1(703fc57ae71554345754267c31809cf7af7f1639) ) // " + ROM_LOAD( "6.p6", 0x5000, 0x1000, CRC(6ccc05b4) SHA1(6eefba6023673edd86e82a0ad861a4d8f7f6652b) ) // " + ROM_LOAD( "7.ic2", 0x6000, 0x2000, CRC(de6bfdd8) SHA1(dd9727d4d7de4add48cde229b8aa194f0492af7e) ) // on sub board + ROM_LOAD( "8.ic3", 0x8000, 0x2000, CRC(1adef246) SHA1(b5f5598daf71694effffbfb486b03fcda5a593ee) ) // " - /*encrypted z80*/ - ROM_REGION( 0x10000, "sub", 0 ) - ROM_LOAD( "7", 0x0000, 0x1000, CRC(dd144b90) SHA1(56b2c4472aaec49d9fddc99d8aa718b17655812c) ) + ROM_REGION( 0x0040, "proms", 0 ) + ROM_LOAD( "82s123n.ic7", 0x0000, 0x0020, CRC(46014727) SHA1(eec451f292ee319fa6bfbbf223aaa12b231692c1) ) // on sub board + ROM_LOAD( "4.6k", 0x0020, 0x0010, CRC(41bd4d69) SHA1(4d2da761b338b62b2ea151c201063a24d6e4cc97) ) // on main board + ROM_CONTINUE(0x0000, 0x0010) + + ROM_REGION( 0x0200, "user1", 0 ) //? + ROM_LOAD( "82s129n.ic15", 0x0000, 0x0100, CRC(86aeafd1) SHA1(c4e5c56ce5baf2be3962675ae333e28bd8108a00) ) // on sub board + ROM_LOAD( "82s129n.ic4", 0x0100, 0x0100, CRC(f09d3c4c) SHA1(a9e752d75e7f3ebd05add4ccf2f9f15d8f9a8d15) ) // " +ROM_END + +ROM_START( mjyarou2 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "my_1", 0x0000, 0x1000, CRC(c303a013) SHA1(1360aa8657740036f017eba864eed2cbc3c9ad62) ) + ROM_LOAD( "my_2", 0x1000, 0x1000, CRC(0c7f87cc) SHA1(2e56656b2dd860471eab9dfcb1dfd4e0b23a8df9) ) + ROM_LOAD( "my_3", 0x2000, 0x1000, CRC(e94d5f9a) SHA1(c8365991aecf0b1d22c7ce38dd15f6d4a5f70cac) ) + ROM_LOAD( "my_4", 0x3000, 0x1000, CRC(a6a078c8) SHA1(936be36c7c938c705e7054a42c1908bb5a5ee1bb) ) + ROM_LOAD( "my_5", 0x4000, 0x1000, CRC(3179657e) SHA1(703fc57ae71554345754267c31809cf7af7f1639) ) + ROM_LOAD( "my_6", 0x5000, 0x1000, CRC(0ca1cedc) SHA1(bd5d54b185e6ff5633d59df4c06a2094fca9cbf2) ) + ROM_LOAD( "7", 0x6000, 0x2000, CRC(de6bfdd8) SHA1(dd9727d4d7de4add48cde229b8aa194f0492af7e) ) + ROM_LOAD( "8", 0x8000, 0x2000, CRC(1adef246) SHA1(b5f5598daf71694effffbfb486b03fcda5a593ee) ) ROM_REGION( 0x0040, "proms", 0 ) - ROM_LOAD( "4.6k", 0x0000, 0x0020, CRC(41bd4d69) SHA1(4d2da761b338b62b2ea151c201063a24d6e4cc97) ) - ROM_LOAD( "82s123n.ic7", 0x0020, 0x0020, CRC(46014727) SHA1(eec451f292ee319fa6bfbbf223aaa12b231692c1) ) + ROM_LOAD( "82s123n.ic7", 0x0000, 0x0020, CRC(46014727) SHA1(eec451f292ee319fa6bfbbf223aaa12b231692c1) ) // not dumped for this board + ROM_LOAD( "82s123", 0x0020, 0x0010, CRC(41bd4d69) SHA1(4d2da761b338b62b2ea151c201063a24d6e4cc97) ) + ROM_CONTINUE(0x0000, 0x0010) ROM_REGION( 0x0200, "user1", 0 ) //? - ROM_LOAD( "82s129n.ic15", 0x0000, 0x0100, CRC(86aeafd1) SHA1(c4e5c56ce5baf2be3962675ae333e28bd8108a00) ) - ROM_LOAD( "82s129n.ic4", 0x0100, 0x0100, CRC(f09d3c4c) SHA1(a9e752d75e7f3ebd05add4ccf2f9f15d8f9a8d15) ) + ROM_LOAD( "82s129n.ic15", 0x0000, 0x0100, CRC(86aeafd1) SHA1(c4e5c56ce5baf2be3962675ae333e28bd8108a00) ) // not dumped for this board + ROM_LOAD( "82s129n.ic4", 0x0100, 0x0100, CRC(f09d3c4c) SHA1(a9e752d75e7f3ebd05add4ccf2f9f15d8f9a8d15) ) // not dumped for this board ROM_END /* @@ -4903,55 +4954,140 @@ ROM_START( jansoua ) ROM_LOAD( "n82s123an", 0x0000, 0x0020, CRC(e9598146) SHA1(619e7eb76cc3e882b5b3e55cdd23fe00b0a1fe45) ) ROM_END +ROM_START( jangtaku ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "v13_rm_1.p1", 0x0000, 0x1000, CRC(fe761b2b) SHA1(7be1dab12295f1fa399e3d618644715f0300391b) ) + ROM_LOAD( "v13_rm_2.p2", 0x1000, 0x1000, CRC(888e97f5) SHA1(cef86f3f108bc40ea18d9b0676940d9340490aa9) ) + ROM_LOAD( "v13_rm_3.p3", 0x2000, 0x1000, CRC(1b428819) SHA1(a419017f9c077c0dd21000b3b9f949c47f20343e) ) + ROM_LOAD( "v13_rm_4.p4", 0x3000, 0x1000, CRC(72d8abdf) SHA1(286a4fe6899c53daeb1a656b94206f9a19ceaee0) ) + + ROM_REGION( 0x20000, "gfx1", 0 ) + ROM_LOAD( "3.d3", 0x00000, 0x8000, CRC(a865ac4c) SHA1(f8bff3b44a229ddb6165a986faa3de058001e285) ) + ROM_LOAD( "4.f3", 0x08000, 0x8000, CRC(7f4c7194) SHA1(f9bf6e12b3a89b3d25ad15a85432e22bf4e10a24) ) + ROM_LOAD( "5.g3", 0x10000, 0x8000, CRC(091df750) SHA1(6b7ad93bdfb6a7e11f923b084de3e713cf4d1dad) ) + + /*this is just a z80 Voice Player (and latches port I/O $00 with the main CPU)*/ + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "1.a3", 0x00000, 0x8000, CRC(745162d3) SHA1(145269c60c87e772e6cbca40213d286ec05c9134) ) + // THE Jantaku Voice Ver 1.0 (C) Copy Right 1986 DYNA Computer Service CO.,LTD. By Satoshi Kato + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "82s123a.6k", 0x0000, 0x0020, CRC(e9598146) SHA1(619e7eb76cc3e882b5b3e55cdd23fe00b0a1fe45) ) +ROM_END -DRIVER_INIT_MEMBER(royalmah_state,ippatsu) +ROM_START( rkjanoh2 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "pf_1", 0x000000, 0x001000, CRC(582e7eda) SHA1(96578b6142051d9452f23c8c1b674e2d8a4c3b62) ) + ROM_LOAD( "pf_2", 0x001000, 0x001000, CRC(49e7dc40) SHA1(d6232a82b6927c79dd47884e5e2a6589c5524424) ) + ROM_LOAD( "pf_3_1", 0x002000, 0x001000, CRC(a1fdc929) SHA1(27cab4da2365bcf311d7f00d75e8db150183b108) ) + ROM_LOAD( "pf_4l", 0x003000, 0x001000, CRC(c9ccdfa0) SHA1(ce6f2df7fb6739ddf0529bcae0596e4593ecc3e0) ) + //ROM_LOAD( "pf_4_fewest", 0x003000, 0x001000, CRC(9a1650a0) SHA1(2da5957879d9f207721fc2f0d63dccc32850cbe2) ) + //ROM_LOAD( "pf_4_middle", 0x003000, 0x001000, CRC(b1a721d8) SHA1(de24ec4bac7ec761c7b25a7ba62b850006444bbc) ) + ROM_LOAD( "pf_5", 0x004000, 0x001000, CRC(8a858464) SHA1(55c71ce1c30e908dfc8c21237256dfbb75c55363) ) + ROM_LOAD( "pf_6", 0x005000, 0x001000, CRC(5b649918) SHA1(191a221a515c261d90d7432443a7fbc8da71e7ac) ) + ROM_LOAD( "pf_7", 0x006000, 0x001000, CRC(c4fdd2ac) SHA1(76c5645534b87dde87acfb4140d0f3ba18c95cd2) ) + + ROM_REGION( 0x002000, "gfx", 0 ) + ROM_LOAD( "pf_8", 0x000000, 0x002000, CRC(c789e2b3) SHA1(33b5c8f22a1e337816a61fd2c91bc175a412d10e) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "82s123", 0x000, 0x020, CRC(74a53e94) SHA1(ca9114bd9b2b07f5abe82616b41ae9fdb9537a4f) ) +ROM_END + +DRIVER_INIT_MEMBER(royalmah_state, tahjong) +{ + membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000); +} + +DRIVER_INIT_MEMBER(royalmah_state, jansou) +{ + save_item(NAME(m_gfx_adr_l)); + save_item(NAME(m_gfx_adr_m)); + save_item(NAME(m_gfx_adr_h)); + save_item(NAME(m_gfx_adr)); + save_item(NAME(m_gfxdata0)); + save_item(NAME(m_gfxdata1)); + save_item(NAME(m_jansou_colortable)); +} + +DRIVER_INIT_MEMBER(royalmah_state, dynax) +{ + membank("mainbank")->configure_entries(0, 32, memregion("maincpu")->base() + 0x10000, 0x8000); +} + +DRIVER_INIT_MEMBER(royalmah_state, ippatsu) +{ + membank("mainbank")->set_base(memregion("maincpu")->base() + 0x8000 ); +} + +DRIVER_INIT_MEMBER(royalmah_state, suzume) +{ + membank("mainbank")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x8000); + + save_item(NAME(m_suzume_bank)); +} + +DRIVER_INIT_MEMBER(royalmah_state, mjifb) { - membank("bank1")->set_base(memregion("maincpu")->base() + 0x8000 ); + save_item(NAME(m_mjifb_rom_enable)); } -DRIVER_INIT_MEMBER(royalmah_state,janptr96) +DRIVER_INIT_MEMBER(royalmah_state, tontonb) { + membank("mainbank")->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x8000); +} + +DRIVER_INIT_MEMBER(royalmah_state, janptr96) +{ + membank("mainbank")->configure_entries(0, 64, memregion("maincpu")->base() + 0x10000, 0x8000); + m_janptr96_nvram = std::make_unique(0x1000 * 9); membank("bank3")->set_base(m_janptr96_nvram.get()); machine().device("nvram")->set_base(m_janptr96_nvram.get(), 0x1000 * 9); + membank("rambank")->configure_entries(0, 8, m_janptr96_nvram.get() + 0x1000, 0x1000); } + + // the original Janputer (Sanritsu) is not yet dumped, basically Royal Mahjong but non-BET type -GAME( 1981, royalmj, 0, royalmah, royalmah, driver_device, 0, ROT0, "Nichibutsu", "Royal Mahjong (Japan, v1.13)", 0 ) -GAME( 1981?, openmj, royalmj, royalmah, royalmah, driver_device, 0, ROT0, "Sapporo Mechanic", "Open Mahjong [BET] (Japan)", 0 ) -GAME( 1982, royalmah, royalmj, royalmah, royalmah, driver_device, 0, ROT0, "bootleg", "Royal Mahjong (Falcon bootleg, v1.01)", 0 ) -GAME( 1983, janyoup2, royalmj, ippatsu, janyoup2, driver_device, 0, ROT0, "Cosmo Denshi", "Janyou Part II (ver 7.03, July 1 1983)",0 ) -GAME( 1985, tahjong, royalmj, tahjong, tahjong, driver_device, 0, ROT0, "Bally Pond / Nasco", "Tahjong Yakitori (ver. 2-1)", 0 ) // 1985 Jun. 17 -GAME( 1981, janputer, 0, royalmah, royalmah, driver_device, 0, ROT0, "bootleg (Paradise Denshi Ltd. / Mes)", "New Double Bet Mahjong (bootleg of Royal Mahjong) [BET]", 0 ) // MT #05392 -GAME( 1984, janoh, 0, royalmah, royalmah, driver_device, 0, ROT0, "Toaplan", "Jan Oh (set 1)", MACHINE_NOT_WORKING ) -GAME( 1984, janoha, janoh, janoh, royalmah, driver_device, 0, ROT0, "Toaplan", "Jan Oh (set 2)", MACHINE_NOT_WORKING ) // this one is complete? -GAME( 1985, jansou, 0, jansou, jansou, driver_device, 0, ROT0, "Dyna", "Jansou (set 1)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) -GAME( 1985, jansoua, jansou, jansou, jansou, driver_device, 0, ROT0, "Dyna", "Jansou (set 2)", 0 ) -GAME( 1986, dondenmj, 0, dondenmj, majs101b, driver_device, 0, ROT0, "Dyna Electronics", "Don Den Mahjong [BET] (Japan)", 0 ) +GAME( 1981, royalmj, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "Nichibutsu", "Royal Mahjong (Japan, v1.13)", 0 ) +GAME( 1981?, openmj, royalmj, royalmah, royalmah, royalmah_state, 0, ROT0, "Sapporo Mechanic", "Open Mahjong [BET] (Japan)", 0 ) +GAME( 1982, royalmah, royalmj, royalmah, royalmah, royalmah_state, 0, ROT0, "bootleg", "Royal Mahjong (Falcon bootleg, v1.01)", 0 ) +GAME( 1983, janyoup2, royalmj, ippatsu, janyoup2, royalmah_state, 0, ROT0, "Cosmo Denshi", "Janyou Part II (ver 7.03, July 1 1983)",0 ) +GAME( 1985, tahjong, royalmj, tahjong, tahjong, royalmah_state, tahjong, ROT0, "Bally Pond / Nasco", "Tahjong Yakitori (ver. 2-1)", 0 ) // 1985 Jun. 17 +GAME( 1981, janputer, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "bootleg (Paradise Denshi Ltd. / Mes)", "New Double Bet Mahjong (bootleg of Royal Mahjong) [BET]", 0 ) // MT #05392 +GAME( 1984, rkjanoh2, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "SNK / Dyna", "Royal King Jang Oh 2 (v4.00 1984 Jun 10th)", MACHINE_NOT_WORKING ) +GAME( 1984, janoh, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "Toaplan", "Jan Oh (set 1)", MACHINE_NOT_WORKING ) +GAME( 1984, janoha, janoh, janoh, royalmah, royalmah_state, 0, ROT0, "Toaplan", "Jan Oh (set 2)", MACHINE_NOT_WORKING ) // this one is complete? +GAME( 1985, jansou, 0, jansou, jansou, royalmah_state, jansou, ROT0, "Dyna Computer", "Jansou (set 1)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 1985, jansoua, jansou, jansou, jansou, royalmah_state, jansou, ROT0, "Dyna Computer", "Jansou (V 1.1)", 0 ) +GAME( 1986, jangtaku, 0, jansou, jansou, royalmah_state, jansou, ROT0, "Dyna Computer", "Jang Taku (V 1.3)", 0 ) +GAME( 1986, dondenmj, 0, dondenmj, majs101b, royalmah_state, dynax, ROT0, "Dyna Electronics", "Don Den Mahjong [BET] (Japan)", 0 ) GAME( 1986, ippatsu, 0, ippatsu, ippatsu, royalmah_state, ippatsu, ROT0, "Public Software / Paradais", "Ippatsu Gyakuten [BET] (Japan)", 0 ) -GAME( 1986, suzume, 0, suzume, suzume, driver_device, 0, ROT0, "Dyna Electronics", "Watashiha Suzumechan (Japan)", 0 ) -GAME( 1986, mjsiyoub, 0, royalmah, royalmah, driver_device, 0, ROT0, "Visco", "Mahjong Shiyou (Japan)", MACHINE_NOT_WORKING ) -GAME( 1986, mjsenka, 0, royalmah, royalmah, driver_device, 0, ROT0, "Visco", "Mahjong Senka (Japan)", MACHINE_NOT_WORKING ) -GAME( 1986, mjyarou, 0, royalmah, royalmah, driver_device, 0, ROT0, "Visco / Video System", "Mahjong Yarou [BET] (Japan)", MACHINE_NOT_WORKING ) -GAME( 1986?, mjclub, 0, mjclub, mjclub, driver_device, 0, ROT0, "Xex", "Mahjong Club [BET] (Japan)", 0 ) -GAME( 1987, mjdiplob, 0, mjdiplob, mjdiplob, driver_device, 0, ROT0, "Dynax", "Mahjong Diplomat [BET] (Japan)", 0 ) -GAME( 1987, tontonb, 0, tontonb, tontonb, driver_device, 0, ROT0, "Dynax", "Tonton [BET] (Japan set 1)", 0 ) -GAME( 1987, makaijan, 0, makaijan, makaijan, driver_device, 0, ROT0, "Dynax", "Makaijan [BET] (Japan)", 0 ) -GAME( 1988, majs101b, 0, majs101b, majs101b, driver_device, 0, ROT0, "Dynax", "Mahjong Studio 101 [BET] (Japan)", 0 ) -GAME( 1988, mjapinky, 0, mjapinky, mjapinky, driver_device, 0, ROT0, "Dynax", "Almond Pinky [BET] (Japan)", 0 ) -GAME( 1989, mjdejavu, 0, mjdejavu, mjdejavu, driver_device, 0, ROT0, "Dynax", "Mahjong Shinkirou Deja Vu (Japan)", MACHINE_NOT_WORKING ) // MT #00964 -GAME( 1989, mjdejav2, mjdejavu, mjdejavu, mjdejavu, driver_device, 0, ROT0, "Dynax", "Mahjong Shinkirou Deja Vu 2 (Japan)", MACHINE_NOT_WORKING ) -GAME( 1989, mjderngr, 0, mjderngr, mjderngr, driver_device, 0, ROT0, "Dynax", "Mahjong Derringer (Japan)", 0 ) -GAME( 1989, daisyari, 0, daisyari, daisyari, driver_device, 0, ROT0, "Best System", "Daisyarin [BET] (Japan)", 0 ) -GAME( 1990, mjifb, 0, mjifb, mjifb, driver_device, 0, ROT0, "Dynax", "Mahjong If...? [BET]", 0 ) -GAME( 1990, mjifb2, mjifb, mjifb, mjifb, driver_device, 0, ROT0, "Dynax", "Mahjong If...? [BET](2921)", 0 ) -GAME( 1990, mjifb3, mjifb, mjifb, mjifb, driver_device, 0, ROT0, "Dynax", "Mahjong If...? [BET](2931)", 0 ) -GAME( 1991, mjvegasa, 0, mjvegasa, mjvegasa, driver_device, 0, ROT0, "Dynax", "Mahjong Vegas (Japan, unprotected)", 0 ) -GAME( 1991, mjvegas, mjvegasa, mjvegasa, mjvegasa, driver_device, 0, ROT0, "Dynax", "Mahjong Vegas (Japan)", MACHINE_NOT_WORKING ) -GAME( 1992, cafetime, 0, cafetime, cafetime, driver_device, 0, ROT0, "Dynax", "Mahjong Cafe Time", 0 ) -GAME( 1993, cafedoll, 0, mjifb, mjifb, driver_device, 0, ROT0, "Dynax", "Mahjong Cafe Doll (Japan)", MACHINE_NOT_WORKING ) -GAME( 1995, mjtensin, 0, mjtensin, mjtensin, driver_device, 0, ROT0, "Dynax", "Mahjong Tensinhai (Japan)", MACHINE_NOT_WORKING ) +GAME( 1986, suzume, 0, suzume, suzume, royalmah_state, suzume, ROT0, "Dyna Electronics", "Watashiha Suzumechan (Japan)", 0 ) +GAME( 1986, mjsiyoub, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "Visco", "Mahjong Shiyou (Japan)", MACHINE_NOT_WORKING ) +GAME( 1986, mjsenka, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "Visco", "Mahjong Senka (Japan)", MACHINE_NOT_WORKING ) +GAME( 1986, mjyarou, 0, mjyarou, mjyarou, royalmah_state, 0, ROT0, "Visco / Video System", "Mahjong Yarou [BET] (Japan, set 1)", MACHINE_IMPERFECT_GRAPHICS ) // girls aren't shown +GAME( 1986, mjyarou2, mjyarou, mjyarou, mjyarou, royalmah_state, 0, ROT0, "Visco / Video System", "Mahjong Yarou [BET] (Japan, set 2)", MACHINE_IMPERFECT_GRAPHICS ) // girls aren't shown +GAME( 1986?, mjclub, 0, mjclub, mjclub, royalmah_state, tontonb, ROT0, "Xex", "Mahjong Club [BET] (Japan)", 0 ) +GAME( 1987, mjdiplob, 0, mjdiplob, mjdiplob, royalmah_state, tontonb, ROT0, "Dynax", "Mahjong Diplomat [BET] (Japan)", 0 ) +GAME( 1987, tontonb, 0, tontonb, tontonb, royalmah_state, tontonb, ROT0, "Dynax", "Tonton [BET] (Japan, set 1)", 0 ) +GAME( 1987, makaijan, 0, makaijan, makaijan, royalmah_state, dynax, ROT0, "Dynax", "Makaijan [BET] (Japan)", 0 ) +GAME( 1988, majs101b, 0, majs101b, majs101b, royalmah_state, dynax, ROT0, "Dynax", "Mahjong Studio 101 [BET] (Japan)", 0 ) +GAME( 1988, mjapinky, 0, mjapinky, mjapinky, royalmah_state, tontonb, ROT0, "Dynax", "Almond Pinky [BET] (Japan)", 0 ) +GAME( 1989, mjdejavu, 0, mjdejavu, mjdejavu, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong Shinkirou Deja Vu (Japan)", MACHINE_NOT_WORKING ) // MT #00964 +GAME( 1989, mjdejav2, mjdejavu, mjdejavu, mjdejavu, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong Shinkirou Deja Vu 2 (Japan)", MACHINE_NOT_WORKING ) +GAME( 1989, mjderngr, 0, mjderngr, mjderngr, royalmah_state, dynax, ROT0, "Dynax", "Mahjong Derringer (Japan)", 0 ) +GAME( 1989, daisyari, 0, daisyari, daisyari, royalmah_state, 0, ROT0, "Best System", "Daisyarin [BET] (Japan)", 0 ) +GAME( 1990, mjifb, 0, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong If...? [BET]", 0 ) +GAME( 1990, mjifb2, mjifb, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong If...? [BET](2921)", 0 ) +GAME( 1990, mjifb3, mjifb, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong If...? [BET](2931)", 0 ) +GAME( 1991, mjvegasa, 0, mjvegasa, mjvegasa, royalmah_state, 0, ROT0, "Dynax", "Mahjong Vegas (Japan, unprotected)", 0 ) +GAME( 1991, mjvegas, mjvegasa, mjvegasa, mjvegasa, royalmah_state, 0, ROT0, "Dynax", "Mahjong Vegas (Japan)", MACHINE_NOT_WORKING ) +GAME( 1992, cafetime, 0, cafetime, cafetime, royalmah_state, 0, ROT0, "Dynax", "Mahjong Cafe Time", 0 ) +GAME( 1993, cafedoll, 0, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong Cafe Doll (Japan)", MACHINE_NOT_WORKING ) +GAME( 1995, mjtensin, 0, mjtensin, mjtensin, royalmah_state, 0, ROT0, "Dynax", "Mahjong Tensinhai (Japan)", MACHINE_NOT_WORKING ) GAME( 1996, janptr96, 0, janptr96, janptr96, royalmah_state, janptr96, ROT0, "Dynax", "Janputer '96 (Japan)", 0 ) GAME( 1997, janptrsp, 0, janptr96, janptr96, royalmah_state, janptr96, ROT0, "Dynax", "Janputer Special (Japan)", 0 ) -GAME( 1999, cafebrk, 0, mjifb, mjifb, driver_device, 0, ROT0, "Nakanihon / Dynax", "Mahjong Cafe Break", MACHINE_NOT_WORKING ) -GAME( 1999, cafepara, 0, mjifb, mjifb, driver_device, 0, ROT0, "Techno-Top", "Mahjong Cafe Paradise", MACHINE_NOT_WORKING ) +GAME( 1999, cafebrk, 0, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Nakanihon / Dynax", "Mahjong Cafe Break", MACHINE_NOT_WORKING ) +GAME( 1999, cafepara, 0, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Techno-Top", "Mahjong Cafe Paradise", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/rpunch.cpp b/src/mame/drivers/rpunch.cpp index ace85ef6b83..2dede3b784f 100644 --- a/src/mame/drivers/rpunch.cpp +++ b/src/mame/drivers/rpunch.cpp @@ -133,7 +133,6 @@ void rpunch_state::machine_start() save_item(NAME(m_upd_rom_bank)); save_item(NAME(m_sprite_xoffs)); save_item(NAME(m_videoflags)); - save_item(NAME(m_crtc_register)); save_item(NAME(m_bins)); save_item(NAME(m_gins)); } @@ -248,7 +247,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, rpunch_state ) AM_RANGE(0x080000, 0x083fff) AM_RAM_WRITE(rpunch_videoram_w) AM_SHARE("videoram") AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(rpunch_scrollreg_w) - AM_RANGE(0x0c0008, 0x0c0009) AM_WRITE(rpunch_crtc_data_w) + AM_RANGE(0x0c0008, 0x0c0009) AM_SELECT(0x20) AM_WRITE8(rpunch_gga_w, 0x00ff) AM_RANGE(0x0c000c, 0x0c000d) AM_WRITE(rpunch_videoreg_w) AM_RANGE(0x0c000e, 0x0c000f) AM_WRITE(sound_command_w) AM_RANGE(0x0c0010, 0x0c0013) AM_WRITE(rpunch_ins_w) @@ -256,7 +255,6 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, rpunch_state ) AM_RANGE(0x0c001a, 0x0c001b) AM_READ_PORT("P2") AM_RANGE(0x0c001c, 0x0c001d) AM_READ_PORT("DSW") AM_RANGE(0x0c001e, 0x0c001f) AM_READ(sound_busy_r) - AM_RANGE(0x0c0028, 0x0c0029) AM_WRITE(rpunch_crtc_register_w) AM_RANGE(0x0fc000, 0x0fffff) AM_RAM ADDRESS_MAP_END @@ -494,7 +492,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( rpunch, rpunch_state ) +static MACHINE_CONFIG_START( rpunch ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/2) @@ -516,6 +514,9 @@ static MACHINE_CONFIG_START( rpunch, rpunch_state ) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(rpunch_state, rpunch_gga_data_w)) + MCFG_VIDEO_START_OVERRIDE(rpunch_state,rpunch) /* sound hardware */ @@ -536,7 +537,7 @@ MACHINE_CONFIG_END // c+p of above for now, bootleg hw, things need verifying -static MACHINE_CONFIG_START( svolleybl, rpunch_state ) +static MACHINE_CONFIG_START( svolleybl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/2) @@ -558,6 +559,9 @@ static MACHINE_CONFIG_START( svolleybl, rpunch_state ) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(WRITE8(rpunch_state, rpunch_gga_data_w)) + MCFG_VIDEO_START_OVERRIDE(rpunch_state,rpunch) /* sound hardware */ @@ -835,12 +839,12 @@ DRIVER_INIT_MEMBER(rpunch_state,svolley) * *************************************/ -GAME( 1987, rabiolep, 0, rpunch, rabiolep, rpunch_state, rabiolep, ROT0, "V-System Co.", "Rabio Lepus (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1987, rpunch, rabiolep, rpunch, rpunch, rpunch_state, rabiolep, ROT0, "V-System Co. (Bally/Midway/Sente license)", "Rabbit Punch (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1989, svolley, 0, svolley, svolley, rpunch_state, svolley, ROT0, "V-System Co.", "Super Volleyball (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1989, svolleyk, svolley, svolley, svolley, rpunch_state, svolley, ROT0, "V-System Co.", "Super Volleyball (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1989, svolleyu, svolley, svolley, svolley, rpunch_state, svolley, ROT0, "V-System Co. (Data East license)", "Super Volleyball (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1987, rabiolep, 0, rpunch, rabiolep, rpunch_state, rabiolep, ROT0, "V-System Co.", "Rabio Lepus (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1987, rpunch, rabiolep, rpunch, rpunch, rpunch_state, rabiolep, ROT0, "V-System Co. (Bally/Midway/Sente license)", "Rabbit Punch (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1989, svolley, 0, svolley, svolley, rpunch_state, svolley, ROT0, "V-System Co.", "Super Volleyball (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1989, svolleyk, svolley, svolley, svolley, rpunch_state, svolley, ROT0, "V-System Co.", "Super Volleyball (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1989, svolleyu, svolley, svolley, svolley, rpunch_state, svolley, ROT0, "V-System Co. (Data East license)", "Super Volleyball (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // video registers are changed, and there's some kind of RAM at 090xxx, possible a different sprite scheme for the bootleg (even if the original is intact) // the sound system seems to be ripped from the later Power Spikes (see aerofgt.c) -GAME( 1991, svolleybl,svolley, svolleybl,svolley, rpunch_state, svolley, ROT0, "bootleg", "Super Volleyball (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL ) // aka 1991 Spikes? +GAME( 1991, svolleybl, svolley, svolleybl, svolley, rpunch_state, svolley, ROT0, "bootleg", "Super Volleyball (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL ) // aka 1991 Spikes? diff --git a/src/mame/drivers/rsc55.cpp b/src/mame/drivers/rsc55.cpp index 1a5cd15f49d..ac8586e542f 100644 --- a/src/mame/drivers/rsc55.cpp +++ b/src/mame/drivers/rsc55.cpp @@ -64,7 +64,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sc55_io, AS_IO, 16, sc55_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( sc55, sc55_state ) +static MACHINE_CONFIG_START( sc55 ) MCFG_CPU_ADD( "maincpu", P8098, XTAL_20MHz ) // probably not? MCFG_CPU_PROGRAM_MAP( sc55_map ) MCFG_CPU_IO_MAP( sc55_io ) @@ -80,4 +80,4 @@ ROM_START( sc55 ) ROM_LOAD( "roland-gss.c_r15209281.ic26", 0x200000, 0x100000, CRC(e21ebc04) SHA1(7454b817778179806f3f9d1985b3a2ef67ace76f) ) ROM_END -CONS( 1991, sc55, 0, 0, sc55, sc55, driver_device, 0, "Roland", "Sound Canvas SC-55", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +CONS( 1991, sc55, 0, 0, sc55, sc55, sc55_state, 0, "Roland", "Sound Canvas SC-55", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/rt1715.cpp b/src/mame/drivers/rt1715.cpp index 241f2d5648e..4735559109a 100644 --- a/src/mame/drivers/rt1715.cpp +++ b/src/mame/drivers/rt1715.cpp @@ -29,22 +29,28 @@ class rt1715_state : public driver_device { public: rt1715_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) , - m_maincpu(*this, "maincpu"), - m_ram(*this, RAM_TAG) { } + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_ram(*this, RAM_TAG) + { + } - int m_led1_val; - int m_led2_val; DECLARE_WRITE8_MEMBER(rt1715_floppy_enable); DECLARE_READ8_MEMBER(k7658_led1_r); DECLARE_READ8_MEMBER(k7658_led2_r); DECLARE_READ8_MEMBER(k7658_data_r); DECLARE_WRITE8_MEMBER(k7658_data_w); DECLARE_WRITE8_MEMBER(rt1715_rom_disable); - virtual void machine_start() override; - virtual void machine_reset() override; DECLARE_PALETTE_INIT(rt1715); I8275_DRAW_CHARACTER_MEMBER( crtc_display_pixels ); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + int m_led1_val; + int m_led2_val; required_device m_maincpu; required_device m_ram; }; @@ -266,7 +272,7 @@ static const z80_daisy_config rt1715_daisy_chain[] = { nullptr } }; -static MACHINE_CONFIG_START( rt1715, rt1715_state ) +static MACHINE_CONFIG_START( rt1715 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_2_4576MHz) MCFG_CPU_PROGRAM_MAP(rt1715_mem) @@ -372,7 +378,7 @@ ROM_END GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, rt1715, 0, 0, rt1715, k7658, driver_device, 0, "Robotron", "Robotron PC-1715", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1986, rt1715lc, rt1715, 0, rt1715, k7658, driver_device, 0, "Robotron", "Robotron PC-1715 (latin/cyrillic)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1986, rt1715w, rt1715, 0, rt1715w, k7658, driver_device, 0, "Robotron", "Robotron PC-1715W", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, rt1715, 0, 0, rt1715, k7658, rt1715_state, 0, "Robotron", "Robotron PC-1715", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1986, rt1715lc, rt1715, 0, rt1715, k7658, rt1715_state, 0, "Robotron", "Robotron PC-1715 (latin/cyrillic)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1986, rt1715w, rt1715, 0, rt1715w, k7658, rt1715_state, 0, "Robotron", "Robotron PC-1715W", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/runaway.cpp b/src/mame/drivers/runaway.cpp index 30080a0aabf..dad1d26bba8 100644 --- a/src/mame/drivers/runaway.cpp +++ b/src/mame/drivers/runaway.cpp @@ -327,7 +327,7 @@ static GFXDECODE_START( qwak ) GFXDECODE_END -static MACHINE_CONFIG_START( runaway, runaway_state ) +static MACHINE_CONFIG_START( runaway ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 12096000 / 8) /* ? */ @@ -414,5 +414,5 @@ ROM_START( qwak ) ROM_END -GAME( 1982, qwak, 0, qwak, qwak, driver_device, 0, ROT270, "Atari", "Qwak (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, runaway, 0, runaway, runaway, driver_device, 0, ROT0, "Atari", "Runaway (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, qwak, 0, qwak, qwak, runaway_state, 0, ROT270, "Atari", "Qwak (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, runaway, 0, runaway, runaway, runaway_state, 0, ROT0, "Atari", "Runaway (prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp index 3e98d7bdb21..737defe7ff4 100644 --- a/src/mame/drivers/rungun.cpp +++ b/src/mame/drivers/rungun.cpp @@ -132,32 +132,12 @@ WRITE16_MEMBER(rungun_state::rng_sysregs_w) } } -WRITE16_MEMBER(rungun_state::sound_cmd1_w) -{ - if (ACCESSING_BITS_8_15) - m_soundlatch->write(space, 0, data >> 8); -} - -WRITE16_MEMBER(rungun_state::sound_cmd2_w) -{ - if (ACCESSING_BITS_8_15) - m_soundlatch2->write(space, 0, data >> 8); -} - WRITE16_MEMBER(rungun_state::sound_irq_w) { if (ACCESSING_BITS_8_15) m_soundcpu->set_input_line(0, HOLD_LINE); } -READ16_MEMBER(rungun_state::sound_status_msb_r) -{ - if (ACCESSING_BITS_8_15) - return(m_sound_status << 8); - - return 0; -} - INTERRUPT_GEN_MEMBER(rungun_state::rng_interrupt) { // send to sprite device current state (i.e. bread & butter sprite DMA) @@ -204,12 +184,7 @@ static ADDRESS_MAP_START( rungun_map, AS_PROGRAM, 16, rungun_state ) AM_RANGE(0x480000, 0x48001f) AM_READWRITE(rng_sysregs_r, rng_sysregs_w) AM_SHARE("sysreg") AM_RANGE(0x4c0000, 0x4c001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU (for scanline and vblank polling) AM_RANGE(0x540000, 0x540001) AM_WRITE(sound_irq_w) - // 0x580006 written at POST. - AM_RANGE(0x58000c, 0x58000d) AM_WRITE(sound_cmd1_w) - AM_RANGE(0x58000e, 0x58000f) AM_WRITE(sound_cmd2_w) - // 0x580010 status for $580006 writes at POST - AM_RANGE(0x580014, 0x580015) AM_READ(sound_status_msb_r) - AM_RANGE(0x580000, 0x58001f) AM_RAM // sound regs read/write fall-through + AM_RANGE(0x580000, 0x58001f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00) AM_RANGE(0x5c0000, 0x5c000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // 246A ROM readback window AM_RANGE(0x5c0010, 0x5c001f) AM_DEVWRITE("k055673", k055673_device, k055673_reg_word_w) AM_RANGE(0x600000, 0x601fff) AM_RAMBANK("spriteram_bank") // OBJ RAM @@ -269,9 +244,7 @@ static ADDRESS_MAP_START( rungun_sound_map, AS_PROGRAM, 8, rungun_state ) AM_RANGE(0xe230, 0xe3ff) AM_RAM AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write) AM_RANGE(0xe630, 0xe7ff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_status_w) - AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) + AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w) AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP ADDRESS_MAP_END @@ -411,7 +384,7 @@ void rungun_state::machine_reset() m_sound_status = 0; } -static MACHINE_CONFIG_START( rng, rungun_state ) +static MACHINE_CONFIG_START( rng ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) @@ -464,8 +437,7 @@ static MACHINE_CONFIG_START( rng, rungun_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker") MCFG_DEVICE_ADD("k054539_1", K054539, XTAL_18_432MHz) MCFG_K054539_REGION_OVERRRIDE("shared") @@ -978,18 +950,18 @@ ROM_END // it appears that all other regions were switchable from the first release, so use the 'A' code. // these are running WITHOUT the demux adapter, on a single screen -GAME( 1993, rungun, 0, rng, rng, driver_device, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 10.8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) -GAME( 1993, runguna, rungun, rng, rng, driver_device, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 10.4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) -GAME( 1993, rungunb, rungun, rng, rng, driver_device, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 9.10, prototype?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) -GAME( 1993, rungunua, rungun, rng, rng, driver_device, 0, ROT0, "Konami", "Run and Gun (ver UBA 1993 10.8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) -GAME( 1993, slmdunkj, rungun, rng, rng, driver_device, 0, ROT0, "Konami", "Slam Dunk (ver JAA 1993 10.8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) +GAME( 1993, rungun, 0, rng, rng, rungun_state, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 10.8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) +GAME( 1993, runguna, rungun, rng, rng, rungun_state, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 10.4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) +GAME( 1993, rungunb, rungun, rng, rng, rungun_state, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 9.10, prototype?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) +GAME( 1993, rungunua, rungun, rng, rng, rungun_state, 0, ROT0, "Konami", "Run and Gun (ver UBA 1993 10.8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) +GAME( 1993, slmdunkj, rungun, rng, rng, rungun_state, 0, ROT0, "Konami", "Slam Dunk (ver JAA 1993 10.8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) // these sets have the demux adapter connected, and output to 2 screens (as the adapter represents a physical hardware difference, albeit a minor one, use clone sets) -GAMEL( 1993, rungund, rungun, rng_dual, rng_dual, driver_device, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 10.8) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) -GAMEL( 1993, rungunad, rungun, rng_dual, rng_dual, driver_device, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 10.4) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) -GAMEL( 1993, rungunbd, rungun, rng_dual, rng_dual, driver_device, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 9.10, prototype?) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) -GAMEL( 1993, rungunuad,rungun, rng_dual, rng_dual, driver_device, 0, ROT0, "Konami", "Run and Gun (ver UBA 1993 10.8) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) -GAMEL( 1993, slmdunkjd,rungun, rng_dual, rng_dual, driver_device, 0, ROT0, "Konami", "Slam Dunk (ver JAA 1993 10.8) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) +GAMEL( 1993, rungund, rungun, rng_dual, rng_dual, rungun_state, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 10.8) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) +GAMEL( 1993, rungunad, rungun, rng_dual, rng_dual, rungun_state, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 10.4) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) +GAMEL( 1993, rungunbd, rungun, rng_dual, rng_dual, rungun_state, 0, ROT0, "Konami", "Run and Gun (ver EAA 1993 9.10, prototype?) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) +GAMEL( 1993, rungunuad,rungun, rng_dual, rng_dual, rungun_state, 0, ROT0, "Konami", "Run and Gun (ver UBA 1993 10.8) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) +GAMEL( 1993, slmdunkjd,rungun, rng_dual, rng_dual, rungun_state, 0, ROT0, "Konami", "Slam Dunk (ver JAA 1993 10.8) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) // this set has no dipswitches to select single screen mode (they're not even displayed in test menu) it's twin cabinet ONLY -GAMEL( 1993, rungunud, rungun, rng_dual, rng_nodip, driver_device, 0, ROT0, "Konami", "Run and Gun (ver UAB 1993 10.12, dedicated twin cabinet)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) +GAMEL( 1993, rungunud, rungun, rng_dual, rng_nodip, rungun_state, 0, ROT0, "Konami", "Run and Gun (ver UAB 1993 10.12, dedicated twin cabinet)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual ) diff --git a/src/mame/drivers/rvoice.cpp b/src/mame/drivers/rvoice.cpp index 2b3b3ffb79b..62fdcfeab43 100644 --- a/src/mame/drivers/rvoice.cpp +++ b/src/mame/drivers/rvoice.cpp @@ -86,7 +86,7 @@ public: DECLARE_WRITE8_MEMBER(main_hd63701_internal_registers_w); DECLARE_DRIVER_INIT(rvoicepc); virtual void machine_reset() override; - DECLARE_WRITE8_MEMBER(null_kbd_put); + void null_kbd_put(u8 data); required_device m_maincpu; }; @@ -354,11 +354,11 @@ INPUT_PORTS_END /****************************************************************************** Machine Drivers ******************************************************************************/ -WRITE8_MEMBER(rvoice_state::null_kbd_put) +void rvoice_state::null_kbd_put(u8 data) { } -static MACHINE_CONFIG_START( rvoicepc, rvoice_state ) +static MACHINE_CONFIG_START( rvoicepc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", HD63701, XTAL_7_3728MHz) MCFG_CPU_PROGRAM_MAP(hd63701_main_mem) @@ -377,7 +377,7 @@ static MACHINE_CONFIG_START( rvoicepc, rvoice_state ) /* sound hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(rvoice_state, null_kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(rvoice_state, null_kbd_put)) MACHINE_CONFIG_END @@ -401,5 +401,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1988?, rvoicepc, 0, 0, rvoicepc, rvoicepc, rvoice_state, rvoicepc, "Adaptive Communication Systems", "Realvoice PC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1988?, rvoicepc, 0, 0, rvoicepc, rvoicepc, rvoice_state, rvoicepc, "Adaptive Communication Systems", "Realvoice PC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/rx78.cpp b/src/mame/drivers/rx78.cpp index 10d428a1446..d201c1db507 100644 --- a/src/mame/drivers/rx78.cpp +++ b/src/mame/drivers/rx78.cpp @@ -451,7 +451,7 @@ static GFXDECODE_START( rx78 ) GFXDECODE_END -static MACHINE_CONFIG_START( rx78, rx78_state ) +static MACHINE_CONFIG_START( rx78 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, MASTER_CLOCK/7) // unknown divider MCFG_CPU_PROGRAM_MAP(rx78_mem) diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp index 5a0a2df0658..f574e3b9c71 100644 --- a/src/mame/drivers/s11.cpp +++ b/src/mame/drivers/s11.cpp @@ -379,7 +379,7 @@ DRIVER_INIT_MEMBER( s11_state, s11 ) m_irq_active = false; } -static MACHINE_CONFIG_START( s11, s11_state ) +static MACHINE_CONFIG_START( s11 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(s11_main_map) @@ -684,15 +684,15 @@ ROM_END GAME( 1986, grand_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Grand Lizard (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) GAME( 1986, grand_l3, grand_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Grand Lizard (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1986, hs_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1986, hs_l3, hs_l4, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1986, rdkng_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1986, rdkng_l1, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1986, rdkng_l2, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1986, rdkng_l3, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1986, hs_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1986, hs_l3, hs_l4, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1986, rdkng_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1986, rdkng_l1, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1986, rdkng_l2, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1986, rdkng_l3, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) GAME( 1986, tts_l2, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) GAME( 1986, tts_l1, tts_l2, s11, s11, s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME( 1987, gmine_l2, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1987, tdawg_l1, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1987, shfin_l1, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1987, gmine_l2, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1987, tdawg_l1, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1987, shfin_l1, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp index 97c172ba119..48ba3c9d55b 100644 --- a/src/mame/drivers/s11a.cpp +++ b/src/mame/drivers/s11a.cpp @@ -171,7 +171,7 @@ DRIVER_INIT_MEMBER( s11a_state, s11a ) s11_state::init_s11(); } -static MACHINE_CONFIG_START( s11a, s11a_state ) +static MACHINE_CONFIG_START( s11a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6808, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(s11a_main_map) @@ -456,15 +456,15 @@ ROM_START(pb_p4) ROM_LOAD("pbot_u19.l1", 0x18000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) ROM_END -GAME(1987, f14_l1, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F-14 Tomcat (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, f14_p3, f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F-14 Tomcat (P-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, f14_p4, f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F-14 Tomcat (P-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, f14_p5, f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F-14 Tomcat (P-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, fire_l3, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Fire! (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, fire_l2, fire_l3,s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Fire! (L-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, milln_l3, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Millionaire (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, pb_l5, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, pb_l1, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, pb_l2, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, pb_l3, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, pb_p4, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (P-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, f14_l1, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F-14 Tomcat (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, f14_p3, f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F-14 Tomcat (P-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, f14_p4, f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F-14 Tomcat (P-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, f14_p5, f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F-14 Tomcat (P-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, fire_l3, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Fire! (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, fire_l2, fire_l3, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Fire! (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, milln_l3, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Millionaire (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, pb_l5, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, pb_l1, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, pb_l2, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, pb_l3, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, pb_p4, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (P-4)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp index 9504203e5ea..f8a278cc275 100644 --- a/src/mame/drivers/s11b.cpp +++ b/src/mame/drivers/s11b.cpp @@ -250,7 +250,7 @@ DRIVER_INIT_MEMBER( s11b_state, s11b_invert ) m_invert = true; } -static MACHINE_CONFIG_START( s11b, s11b_state ) +static MACHINE_CONFIG_START( s11b ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6808, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(s11b_main_map) @@ -1067,57 +1067,57 @@ ROM_START(whirl_l2) ROM_LOAD("whir_u20.l1", 0x20000, 0x8000, CRC(713007af) SHA1(3ac88bb905ccf8e227bbf3c102c74e3d2446cc88)) ROM_END -GAME(1989, bcats_l5, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Bad Cats (L-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bcats_l2, bcats_l5, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Bad Cats (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, bnzai_l3, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Banzai Run (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, bnzai_g3, bnzai_l3, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Banzai Run (L-3) Germany", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, bnzai_l1, bnzai_l3, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Banzai Run (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, bnzai_pa, bnzai_l3, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Banzai Run (P-A)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, bguns_l8, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Big Guns (L-8)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, bguns_l7, bguns_l8, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Big Guns (L-7)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, bguns_la, bguns_l8, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Big Guns (L-A)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, bguns_p1, bguns_l8, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Big Guns (P-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bk2k_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bk2k_lg1, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (LG-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bk2k_lg3, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (LG-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bk2k_pu1, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (PU-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bk2k_la2, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bk2k_pa7, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (PA-7)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, bk2k_pa5, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (PA-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, cycln_l5, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Cyclone (L-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, cycln_l4, cycln_l5, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Cyclone (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, cycln_l1, cycln_l5, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Cyclone (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, esha_la3, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (LA-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, esha_ma3, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (Metallica) (LA-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, esha_pr4, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (Family version) (PR-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, esha_lg1, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (German) (LG-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, esha_lg2, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (German) (LG-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, esha_la1, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (LA-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, esha_pa1, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (Prototype) (PA-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, eatpm_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LA-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, eatpm_l1, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LA-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, eatpm_l2, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, eatpm_4g, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LG-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, eatpm_4u, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LU-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, eatpm_p7, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (PA-7)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, jokrz_l6, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Jokerz! (L-6)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, jokrz_l3, jokrz_l6, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Jokerz! (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, mousn_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Mousin' Around! (LA-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, mousn_l1, mousn_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Mousin' Around! (LA-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, mousn_lu, mousn_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Mousin' Around! (LU-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, mousn_lx, mousn_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Mousin' Around! (LX-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, polic_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Police Force (LA-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, polic_l3, polic_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Police Force (LA-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, polic_l2, polic_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Police Force (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, spstn_l5, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Space Station (L-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, swrds_l2, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Swords of Fury (L-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, swrds_l1, swrds_l2, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Swords of Fury (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, taxi_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (Lola) (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, taxi_l3, taxi_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (Marilyn) (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, taxi_lu1, taxi_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (Marilyn) (LU-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, taxi_lg1, taxi_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (Marilyn) (L-1) Germany", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, taxi_p5, taxi_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (P-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1989, tsptr_l3, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Transporter the Rescue (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, whirl_l3, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Whirlwind (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, whirl_l2, whirl_l3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Whirlwind (L-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, whirl_lg3, whirl_l3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Whirlwind (LG-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bcats_l5, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Bad Cats (L-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bcats_l2, bcats_l5, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Bad Cats (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, bnzai_l3, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Banzai Run (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, bnzai_g3, bnzai_l3, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Banzai Run (L-3) Germany", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, bnzai_l1, bnzai_l3, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Banzai Run (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, bnzai_pa, bnzai_l3, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Banzai Run (P-A)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, bguns_l8, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Big Guns (L-8)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, bguns_l7, bguns_l8, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Big Guns (L-7)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, bguns_la, bguns_l8, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Big Guns (L-A)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, bguns_p1, bguns_l8, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Big Guns (P-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bk2k_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bk2k_lg1, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (LG-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bk2k_lg3, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (LG-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bk2k_pu1, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (PU-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bk2k_la2, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bk2k_pa7, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (PA-7)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, bk2k_pa5, bk2k_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Black Knight 2000 (PA-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, cycln_l5, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Cyclone (L-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, cycln_l4, cycln_l5, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Cyclone (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, cycln_l1, cycln_l5, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Cyclone (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, esha_la3, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (LA-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, esha_ma3, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (Metallica) (LA-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, esha_pr4, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (Family version) (PR-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, esha_lg1, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (German) (LG-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, esha_lg2, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (German) (LG-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, esha_la1, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (LA-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, esha_pa1, esha_la3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Earthshaker (Prototype) (PA-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, eatpm_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LA-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, eatpm_l1, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LA-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, eatpm_l2, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, eatpm_4g, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LG-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, eatpm_4u, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LU-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, eatpm_p7, eatpm_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (PA-7)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, jokrz_l6, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Jokerz! (L-6)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, jokrz_l3, jokrz_l6, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Jokerz! (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, mousn_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Mousin' Around! (LA-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, mousn_l1, mousn_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Mousin' Around! (LA-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, mousn_lu, mousn_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Mousin' Around! (LU-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, mousn_lx, mousn_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Mousin' Around! (LX-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, polic_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Police Force (LA-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, polic_l3, polic_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Police Force (LA-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, polic_l2, polic_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Police Force (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, spstn_l5, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Space Station (L-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, swrds_l2, 0, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Swords of Fury (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, swrds_l1, swrds_l2, s11b, s11b, s11b_state, s11b, ROT0, "Williams", "Swords of Fury (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, taxi_l4, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (Lola) (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, taxi_l3, taxi_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (Marilyn) (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, taxi_lu1, taxi_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (Marilyn) (LU-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, taxi_lg1, taxi_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (Marilyn) (L-1) Germany", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, taxi_p5, taxi_l4, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Taxi (P-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1989, tsptr_l3, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Bally", "Transporter the Rescue (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, whirl_l3, 0, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Whirlwind (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, whirl_l2, whirl_l3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Whirlwind (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, whirl_lg3, whirl_l3, s11b, s11b, s11b_state, s11b_invert, ROT0, "Williams", "Whirlwind (LG-3)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/s11c.cpp b/src/mame/drivers/s11c.cpp index c18fb6f74a2..099b749dd5b 100644 --- a/src/mame/drivers/s11c.cpp +++ b/src/mame/drivers/s11c.cpp @@ -150,7 +150,7 @@ DRIVER_INIT_MEMBER(s11c_state,s11c) timer->adjust(attotime::from_ticks(S11_IRQ_CYCLES,E_CLOCK),1); } -static MACHINE_CONFIG_START( s11c, s11c_state ) +static MACHINE_CONFIG_START( s11c ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6808, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(s11c_main_map) diff --git a/src/mame/drivers/s3.cpp b/src/mame/drivers/s3.cpp index d64759c4239..621bcb0c86f 100644 --- a/src/mame/drivers/s3.cpp +++ b/src/mame/drivers/s3.cpp @@ -423,7 +423,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( s3_state::irq ) m_t_c++; } -static MACHINE_CONFIG_START( s3, s3_state ) +static MACHINE_CONFIG_START( s3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 3580000) MCFG_CPU_PROGRAM_MAP(s3_main_map) @@ -582,10 +582,10 @@ ROM_START(pkrno_l1) ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c)) ROM_END -GAME( 1977, httip_l1, 0, s3, s3, driver_device, 0, ROT0, "Williams", "Hot Tip (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1977, lucky_l1, 0, s3, s3, driver_device, 0, ROT0, "Williams", "Lucky Seven (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1978, wldcp_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "World Cup Soccer (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1978, cntct_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Contact (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1978, disco_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Disco Fever (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1978, phnix_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Phoenix (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1978, pkrno_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Pokerino (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1977, httip_l1, 0, s3, s3, s3_state, 0, ROT0, "Williams", "Hot Tip (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1977, lucky_l1, 0, s3, s3, s3_state, 0, ROT0, "Williams", "Lucky Seven (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1978, wldcp_l1, 0, s3a, s3, s3_state, 0, ROT0, "Williams", "World Cup (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1978, cntct_l1, 0, s3a, s3, s3_state, 0, ROT0, "Williams", "Contact (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1978, disco_l1, 0, s3a, s3, s3_state, 0, ROT0, "Williams", "Disco Fever (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1978, phnix_l1, 0, s3a, s3, s3_state, 0, ROT0, "Williams", "Phoenix (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1978, pkrno_l1, 0, s3a, s3, s3_state, 0, ROT0, "Williams", "Pokerino (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/s4.cpp b/src/mame/drivers/s4.cpp index 41c30194278..3dd088603d2 100644 --- a/src/mame/drivers/s4.cpp +++ b/src/mame/drivers/s4.cpp @@ -417,7 +417,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( s4_state::irq ) m_t_c++; } -static MACHINE_CONFIG_START( s4, s4_state ) +static MACHINE_CONFIG_START( s4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 3580000) MCFG_CPU_PROGRAM_MAP(s4_main_map) @@ -683,20 +683,20 @@ ROM_START(tstrk_l1) ROM_END -GAME( 1979, flash_l2, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1979, flash_l1, flash_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1979, flash_t1, flash_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (T-1) Ted Estes", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1978, trizn_l1, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "Tri Zone (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1978, trizn_t1, trizn_l1, s4a, s4, driver_device, 0, ROT0, "Williams", "Tri Zone (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1979, tmwrp_l2, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "Time Warp (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1979, tmwrp_t2, tmwrp_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Time Warp (T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1979, stlwr_l2, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "Stellar Wars (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) - -GAME( 1978, pomp_l1, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "Pompeii (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1978, arist_l1, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "Aristocrat (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1978, topaz_l1, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "Topaz (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1979, taurs_l1, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "Taurus (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1979, kingt_l1, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "King Tut (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1980, omni_l1, 0, s4a, s4, driver_device, 0, ROT0, "Williams", "Omni (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME( 1983, bstrk_l1, 0, s4, s4, driver_device, 0, ROT0, "Williams", "Big Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME( 1983, tstrk_l1, 0, s4, s4, driver_device, 0, ROT0, "Williams", "Triple Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME( 1979, flash_l2, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "Flash (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1979, flash_l1, flash_l2, s4a, s4, s4_state, 0, ROT0, "Williams", "Flash (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1979, flash_t1, flash_l2, s4a, s4, s4_state, 0, ROT0, "Williams", "Flash (T-1) Ted Estes", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1978, trizn_l1, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "Tri Zone (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1978, trizn_t1, trizn_l1, s4a, s4, s4_state, 0, ROT0, "Williams", "Tri Zone (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1979, tmwrp_l2, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "Time Warp (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1979, tmwrp_t2, tmwrp_l2, s4a, s4, s4_state, 0, ROT0, "Williams", "Time Warp (T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1979, stlwr_l2, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "Stellar Wars (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) + +GAME( 1978, pomp_l1, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "Pompeii (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1978, arist_l1, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "Aristocrat (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1978, topaz_l1, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "Topaz (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1979, taurs_l1, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "Taurus (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1979, kingt_l1, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "King Tut (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1980, omni_l1, 0, s4a, s4, s4_state, 0, ROT0, "Williams", "Omni (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME( 1983, bstrk_l1, 0, s4, s4, s4_state, 0, ROT0, "Williams", "Big Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME( 1983, tstrk_l1, 0, s4, s4, s4_state, 0, ROT0, "Williams", "Triple Strike (Shuffle) (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp index 34ff6fa5924..c9f170625b3 100644 --- a/src/mame/drivers/s6.cpp +++ b/src/mame/drivers/s6.cpp @@ -396,7 +396,7 @@ DRIVER_INIT_MEMBER( s6_state, s6 ) m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1); } -static MACHINE_CONFIG_START( s6, s6_state ) +static MACHINE_CONFIG_START( s6 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6808, 3580000) // 6802 or 6808 could be used here MCFG_CPU_PROGRAM_MAP(s6_main_map) @@ -639,15 +639,15 @@ ROM_START(frpwr_l2) ROM_END -GAME( 1979, lzbal_l2, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Laser Ball (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1980, lzbal_t2, lzbal_l2, s6, s6, s6_state, s6, ROT0, "Williams", "Laser Ball (T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1980, scrpn_l1, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Scorpion (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1980, scrpn_t1, scrpn_l1, s6, s6, s6_state, s6, ROT0, "Williams", "Scorpion (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1979, blkou_l1, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Blackout (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1979, blkou_t1, blkou_l1, s6, s6, s6_state, s6, ROT0, "Williams", "Blackout (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1979, lzbal_l2, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Laser Ball (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, lzbal_t2, lzbal_l2, s6, s6, s6_state, s6, ROT0, "Williams", "Laser Ball (T-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, scrpn_l1, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Scorpion (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, scrpn_t1, scrpn_l1, s6, s6, s6_state, s6, ROT0, "Williams", "Scorpion (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1979, blkou_l1, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Blackout (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1979, blkou_t1, blkou_l1, s6, s6, s6_state, s6, ROT0, "Williams", "Blackout (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) GAME( 1979, blkou_f1, blkou_l1, s6, s6, s6_state, s6, ROT0, "Williams", "Blackout (L-1, French Speech)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1979, grgar_l1, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Gorgar (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1979, grgar_t1, grgar_l1, s6, s6, s6_state, s6, ROT0, "Williams", "Gorgar (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1980, frpwr_l6, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Firepower (L-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME( 1980, frpwr_t6, frpwr_l6, s6, s6, s6_state, s6, ROT0, "Williams", "Firepower (T-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME( 1980, frpwr_l2, frpwr_l6, s6, s6, s6_state, s6, ROT0, "Williams", "Firepower (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME( 1979, grgar_l1, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Gorgar (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1979, grgar_t1, grgar_l1, s6, s6, s6_state, s6, ROT0, "Williams", "Gorgar (T-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, frpwr_l6, 0, s6, s6, s6_state, s6, ROT0, "Williams", "Firepower (L-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME( 1980, frpwr_t6, frpwr_l6, s6, s6, s6_state, s6, ROT0, "Williams", "Firepower (T-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME( 1980, frpwr_l2, frpwr_l6, s6, s6, s6_state, s6, ROT0, "Williams", "Firepower (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/s6a.cpp b/src/mame/drivers/s6a.cpp index d1a6eaa0e4b..6e055c6b28e 100644 --- a/src/mame/drivers/s6a.cpp +++ b/src/mame/drivers/s6a.cpp @@ -379,7 +379,7 @@ DRIVER_INIT_MEMBER( s6a_state, s6a ) m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1); } -static MACHINE_CONFIG_START( s6a, s6a_state ) +static MACHINE_CONFIG_START( s6a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6808, 3580000) MCFG_CPU_PROGRAM_MAP(s6a_main_map) @@ -507,7 +507,7 @@ ROM_START(alpok_f6) ROM_END -GAME(1980,algar_l1, 0, s6a, s6a, s6a_state, s6a, ROT0, "Williams", "Algar (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1980,alpok_l6, 0, s6a, s6a, s6a_state, s6a, ROT0, "Williams", "Alien Poker (L-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1980,alpok_l2, alpok_l6,s6a, s6a, s6a_state, s6a, ROT0, "Williams", "Alien Poker (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1980,alpok_f6, alpok_l6,s6a, s6a, s6a_state, s6a, ROT0, "Williams", "Alien Poker (L-6 French speech)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, algar_l1, 0, s6a, s6a, s6a_state, s6a, ROT0, "Williams", "Algar (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, alpok_l6, 0, s6a, s6a, s6a_state, s6a, ROT0, "Williams", "Alien Poker (L-6)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, alpok_l2, alpok_l6, s6a, s6a, s6a_state, s6a, ROT0, "Williams", "Alien Poker (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, alpok_f6, alpok_l6, s6a, s6a, s6a_state, s6a, ROT0, "Williams", "Alien Poker (L-6 French speech)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/s7.cpp b/src/mame/drivers/s7.cpp index dd38d479a5e..5bef3f1258e 100644 --- a/src/mame/drivers/s7.cpp +++ b/src/mame/drivers/s7.cpp @@ -422,7 +422,7 @@ DRIVER_INIT_MEMBER( s7_state, s7 ) m_irq_timer->adjust(attotime::from_ticks(980,3580000/4),1); } -static MACHINE_CONFIG_START( s7, s7_state ) +static MACHINE_CONFIG_START( s7 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6808, 3580000) MCFG_CPU_PROGRAM_MAP(s7_main_map) @@ -865,29 +865,29 @@ ROM_END -GAME( 1980, bk_l4, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Black Knight (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1980, bk_f4, bk_l4, s7, s7, s7_state, s7, ROT0, "Williams", "Black Knight (L-4, French speech)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1980, bk_l3, bk_l4, s7, s7, s7_state, s7, ROT0, "Williams", "Black Knight (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1980, csmic_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Cosmic Gunfight (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1981, jngld_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Jungle Lord (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1981, jngld_l1, jngld_l2, s7, s7, s7_state, s7, ROT0, "Williams", "Jungle Lord (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1981, pharo_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Pharaoh (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1981, solar_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Solar Fire (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME( 1982, thund_p1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME( 1982, thund_p2, thund_p1, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME( 1982, thund_p3, thund_p1, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME( 1981, hypbl_l4, 0, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1981, hypbl_l3, hypbl_l4, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1981, hypbl_l2, hypbl_l4, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1981, barra_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Barracora (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME( 1982, vrkon_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Varkon (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1982, tmfnt_l5, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Time Fantasy (L-5)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1982, wrlok_l3, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Warlok (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1982, dfndr_l4, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Defender (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1983, jst_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Joust (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1983, jst_l1, jst_l2, s7, s7, s7_state, s7, ROT0, "Williams", "Joust (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1983, lsrcu_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Laser Cue (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1983, fpwr2_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Firepower II (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1984, strlt_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Star Light (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, bk_l4, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Black Knight (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, bk_f4, bk_l4, s7, s7, s7_state, s7, ROT0, "Williams", "Black Knight (L-4, French speech)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, bk_l3, bk_l4, s7, s7, s7_state, s7, ROT0, "Williams", "Black Knight (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1980, csmic_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Cosmic Gunfight (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1981, jngld_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Jungle Lord (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1981, jngld_l1, jngld_l2, s7, s7, s7_state, s7, ROT0, "Williams", "Jungle Lord (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1981, pharo_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Pharaoh (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1981, solar_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Solar Fire (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME( 1982, thund_p1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1982, thund_p2, thund_p1, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1982, thund_p3, thund_p1, s7, s7, s7_state, s7, ROT0, "Williams", "Thunderball (P-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1981, hypbl_l4, 0, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1981, hypbl_l3, hypbl_l4, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1981, hypbl_l2, hypbl_l4, s7, s7, s7_state, s7, ROT0, "Williams", "HyperBall (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1981, barra_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Barracora (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME( 1982, vrkon_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Varkon (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1982, tmfnt_l5, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Time Fantasy (L-5)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1982, wrlok_l3, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Warlok (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1982, dfndr_l4, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Defender (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1983, jst_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Joust (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1983, jst_l1, jst_l2, s7, s7, s7_state, s7, ROT0, "Williams", "Joust (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1983, lsrcu_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Laser Cue (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1983, fpwr2_l2, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Firepower II (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1984, strlt_l1, 0, s7, s7, s7_state, s7, ROT0, "Williams", "Star Light (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // same hardware, unknown manufacturer -GAME( 1983, wldtexas, 0, s7, s7, s7_state, s7, ROT0, "", "Wild Texas", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1983, wldtexas, 0, s7, s7, s7_state, s7, ROT0, "", "Wild Texas", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/s8.cpp b/src/mame/drivers/s8.cpp index afa9baa5c14..5d664d0a067 100644 --- a/src/mame/drivers/s8.cpp +++ b/src/mame/drivers/s8.cpp @@ -304,7 +304,7 @@ DRIVER_INIT_MEMBER( s8_state, s8 ) m_irq_timer->adjust(attotime::from_ticks(980,1e6),1); } -static MACHINE_CONFIG_START( s8, s8_state ) +static MACHINE_CONFIG_START( s8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(s8_main_map) @@ -388,5 +388,5 @@ ROM_START(pfevr_p3) ROM_END -GAME(1984,pfevr_l2, 0, s8, s8, s8_state, s8, ROT0, "Williams", "Pennant Fever (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1984,pfevr_p3, pfevr_l2, s8, s8, s8_state, s8, ROT0, "Williams", "Pennant Fever (P-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1984, pfevr_l2, 0, s8, s8, s8_state, s8, ROT0, "Williams", "Pennant Fever (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1984, pfevr_p3, pfevr_l2, s8, s8, s8_state, s8, ROT0, "Williams", "Pennant Fever (P-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/s8a.cpp b/src/mame/drivers/s8a.cpp index 2158f1a5fb2..22bd0234379 100644 --- a/src/mame/drivers/s8a.cpp +++ b/src/mame/drivers/s8a.cpp @@ -276,7 +276,7 @@ DRIVER_INIT_MEMBER( s8a_state, s8a ) m_irq_timer->adjust(attotime::from_ticks(980,1e6),1); } -static MACHINE_CONFIG_START( s8a, s8a_state ) +static MACHINE_CONFIG_START( s8a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(s8a_main_map) @@ -351,4 +351,4 @@ ROM_START(scrzy_l1) ROM_LOAD("ic49.bin", 0x0000, 0x4000, CRC(bcc8ccc4) SHA1(2312f9cc4f5a2dadfbfa61d13c31bb5838adf152) ) ROM_END -GAME(1984,scrzy_l1, 0, s8a, s8a, s8a_state, s8a, ROT0, "Williams", "Still Crazy", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1984, scrzy_l1, 0, s8a, s8a, s8a_state, s8a, ROT0, "Williams", "Still Crazy", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/s9.cpp b/src/mame/drivers/s9.cpp index 9ed3d272b49..946cc3604be 100644 --- a/src/mame/drivers/s9.cpp +++ b/src/mame/drivers/s9.cpp @@ -310,7 +310,7 @@ DRIVER_INIT_MEMBER( s9_state, s9 ) m_irq_timer->adjust(attotime::from_ticks(980,1e6),1); } -static MACHINE_CONFIG_START( s9, s9_state ) +static MACHINE_CONFIG_START( s9 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6808, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(s9_main_map) @@ -510,13 +510,13 @@ ROM_START(alcat_l7) ROM_END -GAME( 1983, ratrc_l1, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Rat Race (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1985, sorcr_l1, sorcr_l2, s9, s9, s9_state, s9, ROT0, "Williams", "Sorcerer (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1985, sorcr_l2, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Sorcerer (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1984, sshtl_l7, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Space Shuttle (L-7)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1984, sshtl_l3, sshtl_l7, s9, s9, s9_state, s9, ROT0, "Williams", "Space Shuttle (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1985, comet_l4, comet_l5, s9, s9, s9_state, s9, ROT0, "Williams", "Comet (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME( 1985, comet_l5, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Comet (L-5)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1983, ratrc_l1, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Rat Race (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME( 1985, sorcr_l1, sorcr_l2, s9, s9, s9_state, s9, ROT0, "Williams", "Sorcerer (L-1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1985, sorcr_l2, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Sorcerer (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1984, sshtl_l7, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Space Shuttle (L-7)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1984, sshtl_l3, sshtl_l7, s9, s9, s9_state, s9, ROT0, "Williams", "Space Shuttle (L-3)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1985, comet_l4, comet_l5, s9, s9, s9_state, s9, ROT0, "Williams", "Comet (L-4)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1985, comet_l5, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Comet (L-5)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) GAME( 1984, szone_l5, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Strike Zone (Shuffle) (L-5)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) GAME( 1984, szone_l2, szone_l5, s9, s9, s9_state, s9, ROT0, "Williams", "Strike Zone (Shuffle) (L-2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) -GAME( 1985, alcat_l7, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Alley Cats (Shuffle) (L-7)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME( 1985, alcat_l7, 0, s9, s9, s9_state, s9, ROT0, "Williams", "Alley Cats (Shuffle) (L-7)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/sacstate.cpp b/src/mame/drivers/sacstate.cpp index d10e813daca..067b2703563 100644 --- a/src/mame/drivers/sacstate.cpp +++ b/src/mame/drivers/sacstate.cpp @@ -56,7 +56,7 @@ public: DECLARE_READ8_MEMBER(port01_r); DECLARE_READ8_MEMBER(port04_r); DECLARE_WRITE8_MEMBER(port08_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); uint8_t m_term_data; uint8_t m_val; virtual void machine_reset() override; @@ -117,7 +117,7 @@ static INPUT_PORTS_START( sacstate ) PORT_CONFSETTING( 0x08, "B") INPUT_PORTS_END -WRITE8_MEMBER( sacstate_state::kbd_put ) +void sacstate_state::kbd_put(u8 data) { m_term_data = data; } @@ -128,7 +128,7 @@ void sacstate_state::machine_reset() m_val = ioport("CONFIG")->read(); } -static MACHINE_CONFIG_START( sacstate, sacstate_state ) +static MACHINE_CONFIG_START( sacstate ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8008, 800000) MCFG_CPU_PROGRAM_MAP(sacstate_mem) @@ -136,7 +136,7 @@ static MACHINE_CONFIG_START( sacstate, sacstate_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(sacstate_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(sacstate_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -154,5 +154,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1973, sacstate, 0, 0, sacstate, sacstate, driver_device, 0, "SacState", "SacState 8008", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1973, sacstate, 0, 0, sacstate, sacstate, sacstate_state, 0, "SacState", "SacState 8008", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/safarir.cpp b/src/mame/drivers/safarir.cpp index 31ac6dc22df..754ec5fa16e 100644 --- a/src/mame/drivers/safarir.cpp +++ b/src/mame/drivers/safarir.cpp @@ -399,7 +399,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( safarir, safarir_state ) +static MACHINE_CONFIG_START( safarir ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080A, XTAL_18MHz/12) /* 1.5 MHz ? */ @@ -500,5 +500,5 @@ ROM_END * *************************************/ -GAME( 1979, safarir, 0, safarir, safarir, driver_device, 0, ROT90, "SNK (Taito license)", "Safari Rally (World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1979, safarirj, safarir, safarir, safarir, driver_device, 0, ROT90, "SNK", "Safari Rally (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1979, safarir, 0, safarir, safarir, safarir_state, 0, ROT90, "SNK (Taito license)", "Safari Rally (World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1979, safarirj, safarir, safarir, safarir, safarir_state, 0, ROT90, "SNK", "Safari Rally (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp index 645f624f9e3..ad6df892d7a 100644 --- a/src/mame/drivers/sage2.cpp +++ b/src/mame/drivers/sage2.cpp @@ -407,7 +407,7 @@ READ16_MEMBER(sage2_state::rom_r) // MACHINE_CONFIG( sage2 ) //------------------------------------------------- -static MACHINE_CONFIG_START( sage2, sage2_state ) +static MACHINE_CONFIG_START( sage2 ) // basic machine hardware MCFG_CPU_ADD(M68000_TAG, M68000, XTAL_16MHz/2) MCFG_CPU_PROGRAM_MAP(sage2_mem) @@ -525,5 +525,5 @@ DRIVER_INIT_MEMBER(sage2_state,sage2) // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1982, sage2, 0, 0, sage2, sage2, sage2_state, sage2, "Sage Technology", "Sage II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, sage2, 0, 0, sage2, sage2, sage2_state, sage2, "Sage Technology", "Sage II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/sam.cpp b/src/mame/drivers/sam.cpp index 45b78cf3597..be023855e72 100644 --- a/src/mame/drivers/sam.cpp +++ b/src/mame/drivers/sam.cpp @@ -20,7 +20,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( sam ) INPUT_PORTS_END -static MACHINE_CONFIG_START( sam, sam_state ) +static MACHINE_CONFIG_START( sam ) MCFG_CPU_ADD("maincpu", ARM7, XTAL_40MHz) // AT91R40008 MCFG_CPU_PROGRAM_MAP(sam_map) MACHINE_CONFIG_END @@ -1068,213 +1068,213 @@ ROM_END #define MACHINE_FLAGS (MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL) -GAME( 2009, 24_130 ,24_150, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.30", MACHINE_FLAGS) -GAME( 2009, 24_140 ,24_150, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.40", MACHINE_FLAGS) -GAME( 2009, 24_144 ,24_150, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.44", MACHINE_FLAGS) -GAME( 2009, 24_150 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "24 v1.50", MACHINE_FLAGS) -GAME( 2008, bdk_130 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v1.30", MACHINE_FLAGS) -GAME( 2008, bdk_150 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v1.50", MACHINE_FLAGS) -GAME( 2008, bdk_160 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v1.60", MACHINE_FLAGS) -GAME( 2008, bdk_200 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.00", MACHINE_FLAGS) -GAME( 2008, bdk_210 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.10", MACHINE_FLAGS) -GAME( 2008, bdk_220 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.20", MACHINE_FLAGS) -GAME( 2008, bdk_290 ,bdk_294, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.90", MACHINE_FLAGS) -GAME( 2008, bdk_294 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Batman - The Dark Knight v2.94", MACHINE_FLAGS) +GAME( 2009, 24_130 ,24_150, sam, sam, sam_state, 0, ROT0, "Stern", "24 v1.30", MACHINE_FLAGS) +GAME( 2009, 24_140 ,24_150, sam, sam, sam_state, 0, ROT0, "Stern", "24 v1.40", MACHINE_FLAGS) +GAME( 2009, 24_144 ,24_150, sam, sam, sam_state, 0, ROT0, "Stern", "24 v1.44", MACHINE_FLAGS) +GAME( 2009, 24_150 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "24 v1.50", MACHINE_FLAGS) +GAME( 2008, bdk_130 ,bdk_294, sam, sam, sam_state, 0, ROT0, "Stern", "Batman - The Dark Knight v1.30", MACHINE_FLAGS) +GAME( 2008, bdk_150 ,bdk_294, sam, sam, sam_state, 0, ROT0, "Stern", "Batman - The Dark Knight v1.50", MACHINE_FLAGS) +GAME( 2008, bdk_160 ,bdk_294, sam, sam, sam_state, 0, ROT0, "Stern", "Batman - The Dark Knight v1.60", MACHINE_FLAGS) +GAME( 2008, bdk_200 ,bdk_294, sam, sam, sam_state, 0, ROT0, "Stern", "Batman - The Dark Knight v2.00", MACHINE_FLAGS) +GAME( 2008, bdk_210 ,bdk_294, sam, sam, sam_state, 0, ROT0, "Stern", "Batman - The Dark Knight v2.10", MACHINE_FLAGS) +GAME( 2008, bdk_220 ,bdk_294, sam, sam, sam_state, 0, ROT0, "Stern", "Batman - The Dark Knight v2.20", MACHINE_FLAGS) +GAME( 2008, bdk_290 ,bdk_294, sam, sam, sam_state, 0, ROT0, "Stern", "Batman - The Dark Knight v2.90", MACHINE_FLAGS) +GAME( 2008, bdk_294 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Batman - The Dark Knight v2.94", MACHINE_FLAGS) // Missing version 1.30 (26-Jan-2010), 1.20 (25-Jan-2010), 1.10 (21-Jan-2010), 1.00 (15-Jan-2010) -GAME( 2010, bbh_140 ,bbh_160, sam, sam, driver_device, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.40", MACHINE_FLAGS) -GAME( 2010, bbh_150 ,bbh_160, sam, sam, driver_device, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.50", MACHINE_FLAGS) -GAME( 2010, bbh_160 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.60", MACHINE_FLAGS) -GAME( 2008, csi_102 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v1.02", MACHINE_FLAGS) -GAME( 2008, csi_103 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v1.03", MACHINE_FLAGS) -GAME( 2008, csi_104 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v1.04", MACHINE_FLAGS) -GAME( 2008, csi_200 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.00", MACHINE_FLAGS) -GAME( 2008, csi_210 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.10", MACHINE_FLAGS) -GAME( 2008, csi_230 ,csi_240, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.30", MACHINE_FLAGS) -GAME( 2008, csi_240 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "C.S.I. v2.40", MACHINE_FLAGS) -GAME( 2007, fg_1000af ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,French)", MACHINE_FLAGS) -GAME( 2007, fg_1000ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,German)", MACHINE_FLAGS) -GAME( 2007, fg_1000ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, fg_1000al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v10.0 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, fg_110af ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,French)", MACHINE_FLAGS) -GAME( 2007, fg_110ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,German)", MACHINE_FLAGS) -GAME( 2007, fg_110ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, fg_110al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v11.0 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, fg_120af ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,French)", MACHINE_FLAGS) -GAME( 2007, fg_120ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,German)", MACHINE_FLAGS) -GAME( 2007, fg_120ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, fg_120al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v12.0 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, fg_300ai ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v3.0 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, fg_400a ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v4.0 (English)", MACHINE_FLAGS) -GAME( 2007, fg_400ag ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v4.0 (English,German)", MACHINE_FLAGS) -GAME( 2007, fg_700af ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v7.0 (English,French)", MACHINE_FLAGS) -GAME( 2007, fg_700al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v7.0 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, fg_800al ,fg_120af, sam, sam, driver_device, 0, ROT0, "Stern", "Family Guy v8.0 (English,Spanish)", MACHINE_FLAGS) -GAME( 2010, im2_100 ,im2_140, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.00", MACHINE_FLAGS) -GAME( 2010, im2_110 ,im2_140, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.10", MACHINE_FLAGS) -GAME( 2010, im2_120 ,im2_140, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.20", MACHINE_FLAGS) -GAME( 2010, im2_140 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Iron Man 2 v1.40", MACHINE_FLAGS) -GAME( 2008, indy_113a ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13", MACHINE_FLAGS) -GAME( 2008, indy_113f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (French)", MACHINE_FLAGS) -GAME( 2008, indy_113g ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (German)", MACHINE_FLAGS) -GAME( 2008, indy_113i ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (Italian)", MACHINE_FLAGS) -GAME( 2008, indy_113l ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.13 (Spanish)", MACHINE_FLAGS) -GAME( 2008, indy_114a ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14", MACHINE_FLAGS) -GAME( 2008, indy_114f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (French)", MACHINE_FLAGS) -GAME( 2008, indy_114g ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (German)", MACHINE_FLAGS) -GAME( 2008, indy_114i ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (Italian)", MACHINE_FLAGS) -GAME( 2008, indy_114l ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.14 (Spanish)", MACHINE_FLAGS) -GAME( 2008, indy_116a ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16", MACHINE_FLAGS) -GAME( 2008, indy_116f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (French)", MACHINE_FLAGS) -GAME( 2008, indy_116g ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (German)", MACHINE_FLAGS) -GAME( 2008, indy_116i ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (Italian)", MACHINE_FLAGS) -GAME( 2008, indy_116l ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v1.16 (Spanish)", MACHINE_FLAGS) -GAME( 2008, indy_210 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v2.10", MACHINE_FLAGS) -GAME( 2008, indy_210f ,indy_210, sam, sam, driver_device, 0, ROT0, "Stern", "Indiana Jones v2.10 (French)", MACHINE_FLAGS) +GAME( 2010, bbh_140 ,bbh_160, sam, sam, sam_state, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.40", MACHINE_FLAGS) +GAME( 2010, bbh_150 ,bbh_160, sam, sam, sam_state, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.50", MACHINE_FLAGS) +GAME( 2010, bbh_160 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Big Buck Hunter Pro v1.60", MACHINE_FLAGS) +GAME( 2008, csi_102 ,csi_240, sam, sam, sam_state, 0, ROT0, "Stern", "C.S.I. v1.02", MACHINE_FLAGS) +GAME( 2008, csi_103 ,csi_240, sam, sam, sam_state, 0, ROT0, "Stern", "C.S.I. v1.03", MACHINE_FLAGS) +GAME( 2008, csi_104 ,csi_240, sam, sam, sam_state, 0, ROT0, "Stern", "C.S.I. v1.04", MACHINE_FLAGS) +GAME( 2008, csi_200 ,csi_240, sam, sam, sam_state, 0, ROT0, "Stern", "C.S.I. v2.00", MACHINE_FLAGS) +GAME( 2008, csi_210 ,csi_240, sam, sam, sam_state, 0, ROT0, "Stern", "C.S.I. v2.10", MACHINE_FLAGS) +GAME( 2008, csi_230 ,csi_240, sam, sam, sam_state, 0, ROT0, "Stern", "C.S.I. v2.30", MACHINE_FLAGS) +GAME( 2008, csi_240 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "C.S.I. v2.40", MACHINE_FLAGS) +GAME( 2007, fg_1000af ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v10.0 (English,French)", MACHINE_FLAGS) +GAME( 2007, fg_1000ag ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v10.0 (English,German)", MACHINE_FLAGS) +GAME( 2007, fg_1000ai ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v10.0 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, fg_1000al ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v10.0 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, fg_110af ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v11.0 (English,French)", MACHINE_FLAGS) +GAME( 2007, fg_110ag ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v11.0 (English,German)", MACHINE_FLAGS) +GAME( 2007, fg_110ai ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v11.0 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, fg_110al ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v11.0 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, fg_120af ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v12.0 (English,French)", MACHINE_FLAGS) +GAME( 2007, fg_120ag ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v12.0 (English,German)", MACHINE_FLAGS) +GAME( 2007, fg_120ai ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v12.0 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, fg_120al ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v12.0 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, fg_300ai ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v3.0 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, fg_400a ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v4.0 (English)", MACHINE_FLAGS) +GAME( 2007, fg_400ag ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v4.0 (English,German)", MACHINE_FLAGS) +GAME( 2007, fg_700af ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v7.0 (English,French)", MACHINE_FLAGS) +GAME( 2007, fg_700al ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v7.0 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, fg_800al ,fg_120af, sam, sam, sam_state, 0, ROT0, "Stern", "Family Guy v8.0 (English,Spanish)", MACHINE_FLAGS) +GAME( 2010, im2_100 ,im2_140, sam, sam, sam_state, 0, ROT0, "Stern", "Iron Man 2 v1.00", MACHINE_FLAGS) +GAME( 2010, im2_110 ,im2_140, sam, sam, sam_state, 0, ROT0, "Stern", "Iron Man 2 v1.10", MACHINE_FLAGS) +GAME( 2010, im2_120 ,im2_140, sam, sam, sam_state, 0, ROT0, "Stern", "Iron Man 2 v1.20", MACHINE_FLAGS) +GAME( 2010, im2_140 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Iron Man 2 v1.40", MACHINE_FLAGS) +GAME( 2008, indy_113a ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.13", MACHINE_FLAGS) +GAME( 2008, indy_113f ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.13 (French)", MACHINE_FLAGS) +GAME( 2008, indy_113g ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.13 (German)", MACHINE_FLAGS) +GAME( 2008, indy_113i ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.13 (Italian)", MACHINE_FLAGS) +GAME( 2008, indy_113l ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.13 (Spanish)", MACHINE_FLAGS) +GAME( 2008, indy_114a ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.14", MACHINE_FLAGS) +GAME( 2008, indy_114f ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.14 (French)", MACHINE_FLAGS) +GAME( 2008, indy_114g ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.14 (German)", MACHINE_FLAGS) +GAME( 2008, indy_114i ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.14 (Italian)", MACHINE_FLAGS) +GAME( 2008, indy_114l ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.14 (Spanish)", MACHINE_FLAGS) +GAME( 2008, indy_116a ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.16", MACHINE_FLAGS) +GAME( 2008, indy_116f ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.16 (French)", MACHINE_FLAGS) +GAME( 2008, indy_116g ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.16 (German)", MACHINE_FLAGS) +GAME( 2008, indy_116i ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.16 (Italian)", MACHINE_FLAGS) +GAME( 2008, indy_116l ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v1.16 (Spanish)", MACHINE_FLAGS) +GAME( 2008, indy_210 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v2.10", MACHINE_FLAGS) +GAME( 2008, indy_210f ,indy_210, sam, sam, sam_state, 0, ROT0, "Stern", "Indiana Jones v2.10 (French)", MACHINE_FLAGS) // Missing versions 4.00 (21-May-2009), 3.00 (20-May-2009), 2.00 (19-May-2009) and 1.00 (14-May-2009) of NBA -GAME( 2009, nba_500 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v5.00", MACHINE_FLAGS) -GAME( 2009, nba_600 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v6.00", MACHINE_FLAGS) -GAME( 2009, nba_700 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v7.00", MACHINE_FLAGS) -GAME( 2009, nba_801 ,nba_802, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v8.01", MACHINE_FLAGS) -GAME( 2009, nba_802 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "NBA v8.02", MACHINE_FLAGS) -GAME( 2006, potc_110af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (English,French)", MACHINE_FLAGS) -GAME( 2006, potc_110ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (English,Italian)", MACHINE_FLAGS) -GAME( 2006, potc_110gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (German,French)", MACHINE_FLAGS) +GAME( 2009, nba_500 ,nba_802, sam, sam, sam_state, 0, ROT0, "Stern", "NBA v5.00", MACHINE_FLAGS) +GAME( 2009, nba_600 ,nba_802, sam, sam, sam_state, 0, ROT0, "Stern", "NBA v6.00", MACHINE_FLAGS) +GAME( 2009, nba_700 ,nba_802, sam, sam, sam_state, 0, ROT0, "Stern", "NBA v7.00", MACHINE_FLAGS) +GAME( 2009, nba_801 ,nba_802, sam, sam, sam_state, 0, ROT0, "Stern", "NBA v8.01", MACHINE_FLAGS) +GAME( 2009, nba_802 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "NBA v8.02", MACHINE_FLAGS) +GAME( 2006, potc_110af ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (English,French)", MACHINE_FLAGS) +GAME( 2006, potc_110ai ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (English,Italian)", MACHINE_FLAGS) +GAME( 2006, potc_110gf ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.10 (German,French)", MACHINE_FLAGS) // Missing version 1.11 for other languages ??? August 17, 2006 -GAME( 2006, potc_111as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.11 (English,Spanish)", MACHINE_FLAGS) +GAME( 2006, potc_111as ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.11 (English,Spanish)", MACHINE_FLAGS) // Missing version 1.12 August 24, 2006 -GAME( 2006, potc_113af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,French)", MACHINE_FLAGS) -GAME( 2006, potc_113ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,Italian)", MACHINE_FLAGS) -GAME( 2006, potc_113as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,Spanish)", MACHINE_FLAGS) -GAME( 2006, potc_113gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (German,French)", MACHINE_FLAGS) +GAME( 2006, potc_113af ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,French)", MACHINE_FLAGS) +GAME( 2006, potc_113ai ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,Italian)", MACHINE_FLAGS) +GAME( 2006, potc_113as ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (English,Spanish)", MACHINE_FLAGS) +GAME( 2006, potc_113gf ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.13 (German,French)", MACHINE_FLAGS) // Missing version 1.14 October 11, 2006 -GAME( 2006, potc_115af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,French)", MACHINE_FLAGS) -GAME( 2006, potc_115ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,Italian)", MACHINE_FLAGS) -GAME( 2006, potc_115as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,Spanish)", MACHINE_FLAGS) -GAME( 2006, potc_115gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (German,French)", MACHINE_FLAGS) +GAME( 2006, potc_115af ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,French)", MACHINE_FLAGS) +GAME( 2006, potc_115ai ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,Italian)", MACHINE_FLAGS) +GAME( 2006, potc_115as ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (English,Spanish)", MACHINE_FLAGS) +GAME( 2006, potc_115gf ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v1.15 (German,French)", MACHINE_FLAGS) // Missing version 2.00 April 11, 2007 -GAME( 2007, potc_300af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,French)", MACHINE_FLAGS) -GAME( 2007, potc_300ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, potc_300as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, potc_300gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (German,French)", MACHINE_FLAGS) -GAME( 2007, potc_400af ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,French)", MACHINE_FLAGS) -GAME( 2007, potc_400ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, potc_400as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, potc_400gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (German,French)", MACHINE_FLAGS) +GAME( 2007, potc_300af ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,French)", MACHINE_FLAGS) +GAME( 2007, potc_300ai ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, potc_300as ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, potc_300gf ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v3.00 (German,French)", MACHINE_FLAGS) +GAME( 2007, potc_400af ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,French)", MACHINE_FLAGS) +GAME( 2007, potc_400ai ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, potc_400as ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, potc_400gf ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v4.00 (German,French)", MACHINE_FLAGS) // Missing version 5.00 September 27, 2007 -GAME( 2007, potc_600 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,French)", MACHINE_FLAGS) -GAME( 2007, potc_600ai ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, potc_600as ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, potc_600gf ,potc_600, sam, sam, driver_device, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (German,French)", MACHINE_FLAGS) -GAME( 2008, sh_141 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Shrek v1.41", MACHINE_FLAGS) -GAME( 2006, skc_090 ,skc_105, sam, sam, driver_device, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v0.90 New Jersey", MACHINE_FLAGS) +GAME( 2007, potc_600 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,French)", MACHINE_FLAGS) +GAME( 2007, potc_600ai ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, potc_600as ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, potc_600gf ,potc_600, sam, sam, sam_state, 0, ROT0, "Stern", "Pirates of the Caribbean v6.00 (German,French)", MACHINE_FLAGS) +GAME( 2008, sh_141 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Shrek v1.41", MACHINE_FLAGS) +GAME( 2006, skc_090 ,skc_105, sam, sam, sam_state, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v0.90 New Jersey", MACHINE_FLAGS) // Missing version 1.00 // Missing version 1.01 April 10, 2006 // Missing version 1.02 April 12, 2006 -GAME( 2006, skc_103 ,skc_105, sam, sam, driver_device, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v1.03", MACHINE_FLAGS) +GAME( 2006, skc_103 ,skc_105, sam, sam, sam_state, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v1.03", MACHINE_FLAGS) // Missing version 1.04 May 12, 2006 -GAME( 2006, skc_105 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v1.05", MACHINE_FLAGS) -GAME( 2007, sman_130ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (English,French)", MACHINE_FLAGS) -GAME( 2007, sman_130ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, sman_130es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, sman_130gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.30 (German,French)", MACHINE_FLAGS) -GAME( 2007, sman_140e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40", MACHINE_FLAGS) -GAME( 2007, sman_140ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (English,French)", MACHINE_FLAGS) -GAME( 2007, sman_140ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, sman_140es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, sman_140gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.40 (German,French)", MACHINE_FLAGS) -GAME( 2007, sman_142e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.42", MACHINE_FLAGS) -GAME( 2007, sman_160e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60", MACHINE_FLAGS) -GAME( 2007, sman_160ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (English,French)", MACHINE_FLAGS) -GAME( 2007, sman_160ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, sman_160es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, sman_160gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.60 (German,French)", MACHINE_FLAGS) -GAME( 2007, sman_170e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70", MACHINE_FLAGS) -GAME( 2007, sman_170ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (English,French)", MACHINE_FLAGS) -GAME( 2007, sman_170ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, sman_170es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, sman_170gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.70 (German,French)", MACHINE_FLAGS) -GAME( 2007, sman_190e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90", MACHINE_FLAGS) -GAME( 2007, sman_190ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (English,French)", MACHINE_FLAGS) -GAME( 2007, sman_190ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, sman_190es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, sman_190gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.90 (German,French)", MACHINE_FLAGS) -GAME( 2007, sman_192e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92", MACHINE_FLAGS) -GAME( 2007, sman_192ef ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (English,French)", MACHINE_FLAGS) -GAME( 2007, sman_192ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, sman_192es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, sman_192gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v1.92 (German,French)", MACHINE_FLAGS) -GAME( 2007, sman_200e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.00", MACHINE_FLAGS) -GAME( 2007, sman_210e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10", MACHINE_FLAGS) -GAME( 2007, sman_210f ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (French)", MACHINE_FLAGS) -GAME( 2007, sman_210ei ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (English,Italian)", MACHINE_FLAGS) -GAME( 2007, sman_210es ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (English,Spanish)", MACHINE_FLAGS) -GAME( 2007, sman_210gf ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.10 (German,French)", MACHINE_FLAGS) -GAME( 2007, sman_220e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.20", MACHINE_FLAGS) -GAME( 2007, sman_230e ,sman_240, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.30", MACHINE_FLAGS) -GAME( 2007, sman_240 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Spider-Man v2.40", MACHINE_FLAGS) -GAME( 2007, wof_100a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v1.0", MACHINE_FLAGS) -GAME( 2007, wof_200a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0", MACHINE_FLAGS) -GAME( 2007, wof_200f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (French)", MACHINE_FLAGS) -GAME( 2007, wof_200g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (German)", MACHINE_FLAGS) -GAME( 2007, wof_200i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (Italian)", MACHINE_FLAGS) -GAME( 2007, wof_300a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0", MACHINE_FLAGS) -GAME( 2007, wof_300f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (French)", MACHINE_FLAGS) -GAME( 2007, wof_300g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (German)", MACHINE_FLAGS) -GAME( 2007, wof_300i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (Italian)", MACHINE_FLAGS) -GAME( 2007, wof_300l ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (Spanish)", MACHINE_FLAGS) -GAME( 2007, wof_400a ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0", MACHINE_FLAGS) -GAME( 2007, wof_400f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (French)", MACHINE_FLAGS) -GAME( 2007, wof_400g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (German)", MACHINE_FLAGS) -GAME( 2007, wof_400i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (Italian)", MACHINE_FLAGS) -GAME( 2007, wof_400l ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (Spanish)", MACHINE_FLAGS) -GAME( 2007, wof_500a ,0, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0", MACHINE_FLAGS) -GAME( 2007, wof_500f ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (French)", MACHINE_FLAGS) -GAME( 2007, wof_500g ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (German)", MACHINE_FLAGS) -GAME( 2007, wof_500i ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (Italian)", MACHINE_FLAGS) -GAME( 2007, wof_500l ,wof_500a, sam, sam, driver_device, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (Spanish)", MACHINE_FLAGS) -GAME( 2006, wpt_103a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.03", MACHINE_FLAGS) -GAME( 2006, wpt_105a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.05", MACHINE_FLAGS) -GAME( 2006, wpt_106a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06", MACHINE_FLAGS) -GAME( 2006, wpt_106f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (French)", MACHINE_FLAGS) -GAME( 2006, wpt_106g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (German)", MACHINE_FLAGS) -GAME( 2006, wpt_106i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (Italian)", MACHINE_FLAGS) -GAME( 2006, wpt_106l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.06 (Spanish)", MACHINE_FLAGS) +GAME( 2006, skc_105 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Simpsons Kooky Carnival (Redemption) v1.05", MACHINE_FLAGS) +GAME( 2007, sman_130ef ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.30 (English,French)", MACHINE_FLAGS) +GAME( 2007, sman_130ei ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.30 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, sman_130es ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.30 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, sman_130gf ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.30 (German,French)", MACHINE_FLAGS) +GAME( 2007, sman_140e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.40", MACHINE_FLAGS) +GAME( 2007, sman_140ef ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.40 (English,French)", MACHINE_FLAGS) +GAME( 2007, sman_140ei ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.40 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, sman_140es ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.40 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, sman_140gf ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.40 (German,French)", MACHINE_FLAGS) +GAME( 2007, sman_142e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.42", MACHINE_FLAGS) +GAME( 2007, sman_160e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.60", MACHINE_FLAGS) +GAME( 2007, sman_160ef ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.60 (English,French)", MACHINE_FLAGS) +GAME( 2007, sman_160ei ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.60 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, sman_160es ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.60 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, sman_160gf ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.60 (German,French)", MACHINE_FLAGS) +GAME( 2007, sman_170e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.70", MACHINE_FLAGS) +GAME( 2007, sman_170ef ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.70 (English,French)", MACHINE_FLAGS) +GAME( 2007, sman_170ei ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.70 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, sman_170es ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.70 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, sman_170gf ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.70 (German,French)", MACHINE_FLAGS) +GAME( 2007, sman_190e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.90", MACHINE_FLAGS) +GAME( 2007, sman_190ef ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.90 (English,French)", MACHINE_FLAGS) +GAME( 2007, sman_190ei ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.90 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, sman_190es ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.90 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, sman_190gf ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.90 (German,French)", MACHINE_FLAGS) +GAME( 2007, sman_192e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.92", MACHINE_FLAGS) +GAME( 2007, sman_192ef ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.92 (English,French)", MACHINE_FLAGS) +GAME( 2007, sman_192ei ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.92 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, sman_192es ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.92 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, sman_192gf ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v1.92 (German,French)", MACHINE_FLAGS) +GAME( 2007, sman_200e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v2.00", MACHINE_FLAGS) +GAME( 2007, sman_210e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v2.10", MACHINE_FLAGS) +GAME( 2007, sman_210f ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v2.10 (French)", MACHINE_FLAGS) +GAME( 2007, sman_210ei ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v2.10 (English,Italian)", MACHINE_FLAGS) +GAME( 2007, sman_210es ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v2.10 (English,Spanish)", MACHINE_FLAGS) +GAME( 2007, sman_210gf ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v2.10 (German,French)", MACHINE_FLAGS) +GAME( 2007, sman_220e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v2.20", MACHINE_FLAGS) +GAME( 2007, sman_230e ,sman_240, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v2.30", MACHINE_FLAGS) +GAME( 2007, sman_240 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Spider-Man v2.40", MACHINE_FLAGS) +GAME( 2007, wof_100a ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v1.0", MACHINE_FLAGS) +GAME( 2007, wof_200a ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v2.0", MACHINE_FLAGS) +GAME( 2007, wof_200f ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (French)", MACHINE_FLAGS) +GAME( 2007, wof_200g ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (German)", MACHINE_FLAGS) +GAME( 2007, wof_200i ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v2.0 (Italian)", MACHINE_FLAGS) +GAME( 2007, wof_300a ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v3.0", MACHINE_FLAGS) +GAME( 2007, wof_300f ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (French)", MACHINE_FLAGS) +GAME( 2007, wof_300g ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (German)", MACHINE_FLAGS) +GAME( 2007, wof_300i ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (Italian)", MACHINE_FLAGS) +GAME( 2007, wof_300l ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v3.0 (Spanish)", MACHINE_FLAGS) +GAME( 2007, wof_400a ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v4.0", MACHINE_FLAGS) +GAME( 2007, wof_400f ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (French)", MACHINE_FLAGS) +GAME( 2007, wof_400g ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (German)", MACHINE_FLAGS) +GAME( 2007, wof_400i ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (Italian)", MACHINE_FLAGS) +GAME( 2007, wof_400l ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v4.0 (Spanish)", MACHINE_FLAGS) +GAME( 2007, wof_500a ,0, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v5.0", MACHINE_FLAGS) +GAME( 2007, wof_500f ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (French)", MACHINE_FLAGS) +GAME( 2007, wof_500g ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (German)", MACHINE_FLAGS) +GAME( 2007, wof_500i ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (Italian)", MACHINE_FLAGS) +GAME( 2007, wof_500l ,wof_500a, sam, sam, sam_state, 0, ROT0, "Stern", "Wheel of Fortune v5.0 (Spanish)", MACHINE_FLAGS) +GAME( 2006, wpt_103a ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.03", MACHINE_FLAGS) +GAME( 2006, wpt_105a ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.05", MACHINE_FLAGS) +GAME( 2006, wpt_106a ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.06", MACHINE_FLAGS) +GAME( 2006, wpt_106f ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.06 (French)", MACHINE_FLAGS) +GAME( 2006, wpt_106g ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.06 (German)", MACHINE_FLAGS) +GAME( 2006, wpt_106i ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.06 (Italian)", MACHINE_FLAGS) +GAME( 2006, wpt_106l ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.06 (Spanish)", MACHINE_FLAGS) // Missing version 1.07 should be 5 different files per language -GAME( 2006, wpt_108a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08", MACHINE_FLAGS) -GAME( 2006, wpt_108f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (French)", MACHINE_FLAGS) -GAME( 2006, wpt_108g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (German)", MACHINE_FLAGS) -GAME( 2006, wpt_108i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (Italian)", MACHINE_FLAGS) -GAME( 2006, wpt_108l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.08 (Spanish)", MACHINE_FLAGS) -GAME( 2006, wpt_109a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09", MACHINE_FLAGS) -GAME( 2006, wpt_109f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (French)", MACHINE_FLAGS) -GAME( 2006, wpt_109f2 ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (French)(alt)", MACHINE_FLAGS) -GAME( 2006, wpt_109g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (German)", MACHINE_FLAGS) -GAME( 2006, wpt_109i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (Italian)", MACHINE_FLAGS) -GAME( 2006, wpt_109l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.09 (Spanish)", MACHINE_FLAGS) -GAME( 2006, wpt_111a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11", MACHINE_FLAGS) -GAME( 2006, wpt_111af ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,French)", MACHINE_FLAGS) -GAME( 2006, wpt_111ai ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,Italian)", MACHINE_FLAGS) -GAME( 2006, wpt_111al ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,Spanish)", MACHINE_FLAGS) -GAME( 2006, wpt_111f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (French)", MACHINE_FLAGS) -GAME( 2006, wpt_111g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (German)", MACHINE_FLAGS) -GAME( 2006, wpt_111gf ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (German,French)", MACHINE_FLAGS) -GAME( 2006, wpt_111i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (Italian)", MACHINE_FLAGS) -GAME( 2006, wpt_111l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.11 (Spanish)", MACHINE_FLAGS) -GAME( 2006, wpt_112a ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12", MACHINE_FLAGS) -GAME( 2006, wpt_112af ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,French)", MACHINE_FLAGS) -GAME( 2006, wpt_112ai ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,Italian)", MACHINE_FLAGS) -GAME( 2006, wpt_112al ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,Spanish)", MACHINE_FLAGS) -GAME( 2006, wpt_112f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (French)", MACHINE_FLAGS) -GAME( 2006, wpt_112g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (German)", MACHINE_FLAGS) -GAME( 2006, wpt_112gf ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (German,French)", MACHINE_FLAGS) -GAME( 2006, wpt_112i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (Italian)", MACHINE_FLAGS) -GAME( 2006, wpt_112l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v1.12 (Spanish)", MACHINE_FLAGS) -GAME( 2006, wpt_1400 ,0, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00", MACHINE_FLAGS) -GAME( 2006, wpt_1400af ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,French)", MACHINE_FLAGS) -GAME( 2006, wpt_1400ai ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,Italian)", MACHINE_FLAGS) -GAME( 2006, wpt_1400al ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,Spanish)", MACHINE_FLAGS) -GAME( 2006, wpt_1400f ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (French)", MACHINE_FLAGS) -GAME( 2006, wpt_1400g ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (German)", MACHINE_FLAGS) -GAME( 2006, wpt_1400gf ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (German,French)", MACHINE_FLAGS) -GAME( 2006, wpt_1400i ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (Italian)", MACHINE_FLAGS) -GAME( 2006, wpt_1400l ,wpt_1400, sam, sam, driver_device, 0, ROT0, "Stern", "World Poker Tour v14.00 (Spanish)", MACHINE_FLAGS) +GAME( 2006, wpt_108a ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.08", MACHINE_FLAGS) +GAME( 2006, wpt_108f ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.08 (French)", MACHINE_FLAGS) +GAME( 2006, wpt_108g ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.08 (German)", MACHINE_FLAGS) +GAME( 2006, wpt_108i ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.08 (Italian)", MACHINE_FLAGS) +GAME( 2006, wpt_108l ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.08 (Spanish)", MACHINE_FLAGS) +GAME( 2006, wpt_109a ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.09", MACHINE_FLAGS) +GAME( 2006, wpt_109f ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.09 (French)", MACHINE_FLAGS) +GAME( 2006, wpt_109f2 ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.09 (French)(alt)", MACHINE_FLAGS) +GAME( 2006, wpt_109g ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.09 (German)", MACHINE_FLAGS) +GAME( 2006, wpt_109i ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.09 (Italian)", MACHINE_FLAGS) +GAME( 2006, wpt_109l ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.09 (Spanish)", MACHINE_FLAGS) +GAME( 2006, wpt_111a ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.11", MACHINE_FLAGS) +GAME( 2006, wpt_111af ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,French)", MACHINE_FLAGS) +GAME( 2006, wpt_111ai ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,Italian)", MACHINE_FLAGS) +GAME( 2006, wpt_111al ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.11 (English,Spanish)", MACHINE_FLAGS) +GAME( 2006, wpt_111f ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.11 (French)", MACHINE_FLAGS) +GAME( 2006, wpt_111g ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.11 (German)", MACHINE_FLAGS) +GAME( 2006, wpt_111gf ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.11 (German,French)", MACHINE_FLAGS) +GAME( 2006, wpt_111i ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.11 (Italian)", MACHINE_FLAGS) +GAME( 2006, wpt_111l ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.11 (Spanish)", MACHINE_FLAGS) +GAME( 2006, wpt_112a ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.12", MACHINE_FLAGS) +GAME( 2006, wpt_112af ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,French)", MACHINE_FLAGS) +GAME( 2006, wpt_112ai ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,Italian)", MACHINE_FLAGS) +GAME( 2006, wpt_112al ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.12 (English,Spanish)", MACHINE_FLAGS) +GAME( 2006, wpt_112f ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.12 (French)", MACHINE_FLAGS) +GAME( 2006, wpt_112g ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.12 (German)", MACHINE_FLAGS) +GAME( 2006, wpt_112gf ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.12 (German,French)", MACHINE_FLAGS) +GAME( 2006, wpt_112i ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.12 (Italian)", MACHINE_FLAGS) +GAME( 2006, wpt_112l ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v1.12 (Spanish)", MACHINE_FLAGS) +GAME( 2006, wpt_1400 ,0, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v14.00", MACHINE_FLAGS) +GAME( 2006, wpt_1400af ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,French)", MACHINE_FLAGS) +GAME( 2006, wpt_1400ai ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,Italian)", MACHINE_FLAGS) +GAME( 2006, wpt_1400al ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v14.00 (English,Spanish)", MACHINE_FLAGS) +GAME( 2006, wpt_1400f ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v14.00 (French)", MACHINE_FLAGS) +GAME( 2006, wpt_1400g ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v14.00 (German)", MACHINE_FLAGS) +GAME( 2006, wpt_1400gf ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v14.00 (German,French)", MACHINE_FLAGS) +GAME( 2006, wpt_1400i ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v14.00 (Italian)", MACHINE_FLAGS) +GAME( 2006, wpt_1400l ,wpt_1400, sam, sam, sam_state, 0, ROT0, "Stern", "World Poker Tour v14.00 (Spanish)", MACHINE_FLAGS) diff --git a/src/mame/drivers/samcoupe.cpp b/src/mame/drivers/samcoupe.cpp index 45e52df5119..065db524e5c 100644 --- a/src/mame/drivers/samcoupe.cpp +++ b/src/mame/drivers/samcoupe.cpp @@ -517,7 +517,7 @@ static SLOT_INTERFACE_START( samcoupe_floppies ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( samcoupe, samcoupe_state ) +static MACHINE_CONFIG_START( samcoupe ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, SAMCOUPE_XTAL_X1 / 4) /* 6 MHz */ MCFG_CPU_PROGRAM_MAP(samcoupe_mem) @@ -618,5 +618,5 @@ ROM_END GAME DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, samcoupe, 0, 0, samcoupe, samcoupe, driver_device, 0, "Miles Gordon Technology plc", "SAM Coupe", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, samcoupe, 0, 0, samcoupe, samcoupe, samcoupe_state, 0, "Miles Gordon Technology plc", "SAM Coupe", 0 ) diff --git a/src/mame/drivers/sandscrp.cpp b/src/mame/drivers/sandscrp.cpp index 6f93f857004..1b2876e993d 100644 --- a/src/mame/drivers/sandscrp.cpp +++ b/src/mame/drivers/sandscrp.cpp @@ -128,7 +128,7 @@ public: virtual void machine_start() override; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); INTERRUPT_GEN_MEMBER(interrupt); void update_irq_state(); @@ -188,7 +188,7 @@ INTERRUPT_GEN_MEMBER(sandscrp_state::interrupt) } -void sandscrp_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(sandscrp_state::screen_vblank) { // rising edge if (state) @@ -470,7 +470,7 @@ GFXDECODE_END ***************************************************************************/ -static MACHINE_CONFIG_START( sandscrp, sandscrp_state ) +static MACHINE_CONFIG_START( sandscrp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,12000000) /* TMP68HC000N-12 */ @@ -491,7 +491,7 @@ static MACHINE_CONFIG_START( sandscrp, sandscrp_state ) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1) MCFG_SCREEN_UPDATE_DRIVER(sandscrp_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(sandscrp_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sandscrp_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", sandscrp) @@ -515,7 +515,7 @@ static MACHINE_CONFIG_START( sandscrp, sandscrp_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_GENERIC_LATCH_8_ADD("soundlatch2") - MCFG_OKIM6295_ADD("oki", 12000000/6, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 12000000/6, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) /* YM3014B + YM2203C */ @@ -594,6 +594,6 @@ ROM_START( sandscrpb ) /* Different rev PCB */ ROM_END -GAME( 1992, sandscrp, 0, sandscrp, sandscrp, driver_device, 0, ROT90, "Face", "Sand Scorpion", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sandscrpa, sandscrp, sandscrp, sandscrp, driver_device, 0, ROT90, "Face", "Sand Scorpion (Earlier)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sandscrpb, sandscrp, sandscrp, sandscrp, driver_device, 0, ROT90, "Face", "Sand Scorpion (Chinese Title Screen, Revised Hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sandscrp, 0, sandscrp, sandscrp, sandscrp_state, 0, ROT90, "Face", "Sand Scorpion", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sandscrpa, sandscrp, sandscrp, sandscrp, sandscrp_state, 0, ROT90, "Face", "Sand Scorpion (Earlier)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sandscrpb, sandscrp, sandscrp, sandscrp, sandscrp_state, 0, ROT90, "Face", "Sand Scorpion (Chinese Title Screen, Revised Hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sangho.cpp b/src/mame/drivers/sangho.cpp index effa5a5886e..afb334f4102 100644 --- a/src/mame/drivers/sangho.cpp +++ b/src/mame/drivers/sangho.cpp @@ -452,9 +452,9 @@ MACHINE_RESET_MEMBER(sangho_state,sexyboom) } -static MACHINE_CONFIG_START( pzlestar, sangho_state ) +static MACHINE_CONFIG_START( pzlestar ) - MCFG_CPU_ADD("maincpu", Z80,8000000) // ? + MCFG_CPU_ADD("maincpu", Z80, XTAL_21_4772MHz/6) // ? MCFG_CPU_PROGRAM_MAP(sangho_map) MCFG_CPU_IO_MAP(pzlestar_io_map) @@ -465,19 +465,19 @@ static MACHINE_CONFIG_START( pzlestar, sangho_state ) MCFG_MACHINE_RESET_OVERRIDE(sangho_state,pzlestar) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("ymsnd", YM2413, 3580000) + MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_21_4772MHz/6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sexyboom, sangho_state ) +static MACHINE_CONFIG_START( sexyboom ) - MCFG_CPU_ADD("maincpu", Z80,8000000) // ? + MCFG_CPU_ADD("maincpu", Z80, XTAL_21_4772MHz/6) MCFG_CPU_PROGRAM_MAP(sangho_map) MCFG_CPU_IO_MAP(sexyboom_io_map) - MCFG_V9958_ADD("v9958", "screen", 0x20000, XTAL_21_4772MHz) // typical 9958 clock, not verified + MCFG_V9958_ADD("v9958", "screen", 0x20000, XTAL_21_4772MHz) MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0)) MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9958", XTAL_21_4772MHz) @@ -486,7 +486,7 @@ static MACHINE_CONFIG_START( sexyboom, sangho_state ) MCFG_PALETTE_ADD("palette", 19780) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("ymsnd", YM2413, 3580000) + MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_21_4772MHz/6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -539,4 +539,4 @@ DRIVER_INIT_MEMBER(sangho_state,pzlestar) } GAME( 1991, pzlestar, 0, pzlestar, pzlestar, sangho_state, pzlestar, ROT270, "Sang Ho Soft", "Puzzle Star (Sang Ho Soft)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND ) -GAME( 1992, sexyboom, 0, sexyboom, sexyboom, driver_device, 0, ROT270, "Sang Ho Soft", "Sexy Boom", 0 ) +GAME( 1992, sexyboom, 0, sexyboom, sexyboom, sangho_state, 0, ROT270, "Sang Ho Soft", "Sexy Boom", 0 ) diff --git a/src/mame/drivers/sanremmg.cpp b/src/mame/drivers/sanremmg.cpp index c2e18c7a287..22888bdb30c 100644 --- a/src/mame/drivers/sanremmg.cpp +++ b/src/mame/drivers/sanremmg.cpp @@ -50,7 +50,7 @@ static INPUT_PORTS_START( sanremmg ) INPUT_PORTS_END -static MACHINE_CONFIG_START( sanremmg, sanremmg_state ) +static MACHINE_CONFIG_START( sanremmg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM7, 50000000) // ??? doesn't seem to be ARM, but what is it? @@ -76,4 +76,4 @@ ROM_START( sanremmg ) ROM_END -GAME( 2003, sanremmg, 0, sanremmg, sanremmg, driver_device, 0, ROT0, "San Remo Games", "unknown San Remo / Elsy Multigame", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +GAME( 2003, sanremmg, 0, sanremmg, sanremmg, sanremmg_state, 0, ROT0, "San Remo Games", "unknown San Remo / Elsy Multigame", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/sanremo.cpp b/src/mame/drivers/sanremo.cpp index 87ac4241e53..d013c9f6977 100644 --- a/src/mame/drivers/sanremo.cpp +++ b/src/mame/drivers/sanremo.cpp @@ -342,7 +342,7 @@ GFXDECODE_END * Machine Drivers * *********************************************/ -static MACHINE_CONFIG_START( sanremo, sanremo_state ) +static MACHINE_CONFIG_START( sanremo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) @@ -409,5 +409,5 @@ ROM_END * Game Drivers * *********************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1996, number1, 0, sanremo, number1, driver_device, 0, ROT0, "San Remo Games", "Number One", 0, layout_sanremo ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1996, number1, 0, sanremo, number1, sanremo_state, 0, ROT0, "San Remo Games", "Number One", 0, layout_sanremo ) diff --git a/src/mame/drivers/sansa_fuze.cpp b/src/mame/drivers/sansa_fuze.cpp index 4abf83d485c..d2058b501dc 100644 --- a/src/mame/drivers/sansa_fuze.cpp +++ b/src/mame/drivers/sansa_fuze.cpp @@ -38,7 +38,7 @@ static INPUT_PORTS_START( sansa_fuze ) INPUT_PORTS_END -static MACHINE_CONFIG_START( sansa_fuze, sansa_fuze_state ) +static MACHINE_CONFIG_START( sansa_fuze ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM7, 50000000) // arm based, speed unknown @@ -68,5 +68,5 @@ ROM_START( sanfuze2 ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -CONS(200?, sanfuze2, 0, 0, sansa_fuze, sansa_fuze, driver_device, 0, "Sandisk", "Sansa Fuze 2", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS( 200?, sanfuze2, 0, 0, sansa_fuze, sansa_fuze, sansa_fuze_state, 0, "Sandisk", "Sansa Fuze 2", MACHINE_NO_SOUND | MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/sapi1.cpp b/src/mame/drivers/sapi1.cpp index cca28a27b31..1fff3a5b994 100644 --- a/src/mame/drivers/sapi1.cpp +++ b/src/mame/drivers/sapi1.cpp @@ -65,7 +65,7 @@ public: DECLARE_WRITE8_MEMBER(sapi3_00_w); DECLARE_READ8_MEMBER(sapi3_25_r); DECLARE_WRITE8_MEMBER(sapi3_25_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_DRIVER_INIT(sapizps3); DECLARE_DRIVER_INIT(sapizps3a); DECLARE_DRIVER_INIT(sapizps3b); @@ -467,7 +467,7 @@ READ8_MEMBER( sapi1_state::sapi2_keyboard_data_r) return ret; } -WRITE8_MEMBER( sapi1_state::kbd_put ) +void sapi1_state::kbd_put(u8 data) { m_term_data = data; } @@ -532,7 +532,7 @@ DRIVER_INIT_MEMBER( sapi1_state, sapizps3b ) /* Machine driver */ -static MACHINE_CONFIG_START( sapi1, sapi1_state ) +static MACHINE_CONFIG_START( sapi1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 2000000) MCFG_CPU_PROGRAM_MAP(sapi1_mem) @@ -559,7 +559,7 @@ static MACHINE_CONFIG_DERIVED( sapi2, sapi1 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(sapi2_mem) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(sapi1_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(sapi1_state, kbd_put)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( sapi3, sapi2 ) @@ -590,7 +590,7 @@ static MACHINE_CONFIG_DERIVED( sapi3b, sapi3 ) MCFG_SCREEN_NO_PALETTE MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sapi3a, sapi1_state ) +static MACHINE_CONFIG_START( sapi3a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2000000) MCFG_CPU_PROGRAM_MAP(sapi3a_mem) @@ -599,7 +599,7 @@ static MACHINE_CONFIG_START( sapi3a, sapi1_state ) /* video hardware */ MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(sapi1_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(sapi1_state, kbd_put)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) @@ -661,9 +661,9 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, sapi1, 0, 0, sapi1, sapi1, driver_device, 0, "Tesla", "SAPI-1 ZPS 1", MACHINE_NO_SOUND_HW) -COMP( 1985, sapizps2, sapi1, 0, sapi2, sapi1, driver_device, 0, "Tesla", "SAPI-1 ZPS 2", MACHINE_NO_SOUND_HW) -COMP( 1985, sapizps3, sapi1, 0, sapi3, sapi1, sapi1_state, sapizps3, "Tesla", "SAPI-1 ZPS 3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1985, sapizps3a,sapi1, 0, sapi3a, sapi1, sapi1_state, sapizps3a, "Tesla", "SAPI-1 ZPS 3 (terminal)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1985, sapizps3b,sapi1, 0, sapi3b, sapi1, sapi1_state, sapizps3b, "Tesla", "SAPI-1 ZPS 3 (6845)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1985, sapi1, 0, 0, sapi1, sapi1, sapi1_state, 0, "Tesla", "SAPI-1 ZPS 1", MACHINE_NO_SOUND_HW ) +COMP( 1985, sapizps2, sapi1, 0, sapi2, sapi1, sapi1_state, 0, "Tesla", "SAPI-1 ZPS 2", MACHINE_NO_SOUND_HW ) +COMP( 1985, sapizps3, sapi1, 0, sapi3, sapi1, sapi1_state, sapizps3, "Tesla", "SAPI-1 ZPS 3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1985, sapizps3a, sapi1, 0, sapi3a, sapi1, sapi1_state, sapizps3a, "Tesla", "SAPI-1 ZPS 3 (terminal)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1985, sapizps3b, sapi1, 0, sapi3b, sapi1, sapi1_state, sapizps3b, "Tesla", "SAPI-1 ZPS 3 (6845)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp index fb6d2c62bf4..ae130d7d837 100644 --- a/src/mame/drivers/saturn.cpp +++ b/src/mame/drivers/saturn.cpp @@ -789,7 +789,7 @@ MACHINE_RESET_MEMBER(sat_console_state,saturn) } -static MACHINE_CONFIG_START( saturn, sat_console_state ) +static MACHINE_CONFIG_START( saturn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH2, MASTER_CLOCK_352/2) // 28.6364 MHz @@ -992,7 +992,7 @@ ROM_START(hisaturn) ROM_COPY( "maincpu",0x000000,0,0x080000) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ CONS( 1994, saturn, 0, 0, saturnus, saturn, sat_console_state, saturnus, "Sega", "Saturn (USA)", MACHINE_NOT_WORKING ) CONS( 1994, saturnjp, saturn, 0, saturnjp, saturn, sat_console_state, saturnjp, "Sega", "Saturn (Japan)", MACHINE_NOT_WORKING ) CONS( 1994, saturneu, saturn, 0, saturneu, saturn, sat_console_state, saturneu, "Sega", "Saturn (PAL)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/sauro.cpp b/src/mame/drivers/sauro.cpp index 68afb235f4c..d4a0a64c0d0 100644 --- a/src/mame/drivers/sauro.cpp +++ b/src/mame/drivers/sauro.cpp @@ -442,7 +442,7 @@ static GFXDECODE_START( trckydoc ) GFXDECODE_END -static MACHINE_CONFIG_START( tecfri, sauro_state ) +static MACHINE_CONFIG_START( tecfri ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_20MHz/4) /* verified on pcb */ @@ -725,10 +725,10 @@ DRIVER_INIT_MEMBER(sauro_state,tecfri) RAM[0xe000] = 1; } -GAME( 1987, sauro, 0, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri", "Sauro", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, saurop, sauro, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri (Philko license)", "Sauro (Philko license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, saurorr, sauro, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri (Recreativos Real S.A. license)","Sauro (Recreativos Real S.A. license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, saurob, sauro, saurob, saurob, sauro_state, tecfri, ROT0, "bootleg", "Sauro (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sauro, 0, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri", "Sauro", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, saurop, sauro, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri (Philko license)", "Sauro (Philko license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, saurorr, sauro, sauro, tecfri, sauro_state, tecfri, ROT0, "Tecfri (Recreativos Real S.A. license)","Sauro (Recreativos Real S.A. license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, saurob, sauro, saurob, saurob, sauro_state, tecfri, ROT0, "bootleg", "Sauro (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, trckydoc, 0, trckydoc, tecfri, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, trckydoc, 0, trckydoc, tecfri, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, trckydoca,trckydoc, trckydoc, trckydoca, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/savia84.cpp b/src/mame/drivers/savia84.cpp index d13777b51ec..e3128c132b4 100644 --- a/src/mame/drivers/savia84.cpp +++ b/src/mame/drivers/savia84.cpp @@ -168,7 +168,7 @@ READ8_MEMBER( savia84_state::savia84_8255_portc_r ) // IN FA - read keyboard return 0xff; } -static MACHINE_CONFIG_START( savia84, savia84_state ) +static MACHINE_CONFIG_START( savia84 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz / 2) MCFG_CPU_PROGRAM_MAP(savia84_mem) @@ -197,5 +197,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, savia84, 0, 0, savia84, savia84, driver_device, 0, "JT Hyan", "Savia 84", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, savia84, 0, 0, savia84, savia84, savia84_state, 0, "JT Hyan", "Savia 84", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/savquest.cpp b/src/mame/drivers/savquest.cpp index 3d20a6ff9b2..9831faa3648 100644 --- a/src/mame/drivers/savquest.cpp +++ b/src/mame/drivers/savquest.cpp @@ -802,7 +802,7 @@ SLOT_INTERFACE_START( savquest_isa16_cards ) SLOT_INTERFACE("sb16", ISA16_SOUND_BLASTER_16) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( savquest, savquest_state ) +static MACHINE_CONFIG_START( savquest ) MCFG_CPU_ADD("maincpu", PENTIUM2, 450000000) // actually Pentium II 450 MCFG_CPU_PROGRAM_MAP(savquest_map) MCFG_CPU_IO_MAP(savquest_io) @@ -855,4 +855,4 @@ ROM_START( savquest ) ROM_END -GAME(1999, savquest, 0, savquest, savquest, driver_device, 0, ROT0, "Interactive Light", "Savage Quest", MACHINE_IS_SKELETON) +GAME(1999, savquest, 0, savquest, savquest, savquest_state, 0, ROT0, "Interactive Light", "Savage Quest", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/sbasketb.cpp b/src/mame/drivers/sbasketb.cpp index 85f5f011270..c28297e2e2d 100644 --- a/src/mame/drivers/sbasketb.cpp +++ b/src/mame/drivers/sbasketb.cpp @@ -187,7 +187,7 @@ INTERRUPT_GEN_MEMBER(sbasketb_state::vblank_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( sbasketb, sbasketb_state ) +static MACHINE_CONFIG_START( sbasketb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI1, 1400000) /* 1.400 MHz ??? */ @@ -416,7 +416,7 @@ DRIVER_INIT_MEMBER(sbasketb_state,sbasketb) { } -GAME( 1984, sbasketb, 0, sbasketb, sbasketb, sbasketb_state, sbasketb, ROT90, "Konami", "Super Basketball (version I, encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, sbasketh, sbasketb, sbasketbu, sbasketb, driver_device, 0, ROT90, "Konami", "Super Basketball (version H, unprotected)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, sbasketg, sbasketb, sbasketb, sbasketb, sbasketb_state, sbasketb, ROT90, "Konami", "Super Basketball (version G, encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, sbaskete, sbasketb, sbasketb, sbasketb, sbasketb_state, sbasketb, ROT90, "Konami", "Super Basketball (version E, encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sbasketb, 0, sbasketb, sbasketb, sbasketb_state, sbasketb, ROT90, "Konami", "Super Basketball (version I, encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sbasketh, sbasketb, sbasketbu, sbasketb, sbasketb_state, 0, ROT90, "Konami", "Super Basketball (version H, unprotected)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sbasketg, sbasketb, sbasketb, sbasketb, sbasketb_state, sbasketb, ROT90, "Konami", "Super Basketball (version G, encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sbaskete, sbasketb, sbasketb, sbasketb, sbasketb_state, sbasketb, ROT90, "Konami", "Super Basketball (version E, encrypted)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sbc6510.cpp b/src/mame/drivers/sbc6510.cpp index 0d2db6317fa..515147f8757 100644 --- a/src/mame/drivers/sbc6510.cpp +++ b/src/mame/drivers/sbc6510.cpp @@ -278,7 +278,7 @@ static GFXDECODE_START( sbc6510 ) GFXDECODE_END -static MACHINE_CONFIG_START( sbc6510, sbc6510_state ) +static MACHINE_CONFIG_START( sbc6510 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6510, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(sbc6510_mem) @@ -323,5 +323,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 2009, sbc6510, 0, 0, sbc6510, sbc6510, driver_device, 0, "Josip Perusanec", "SBC6510", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 2009, sbc6510, 0, 0, sbc6510, sbc6510, sbc6510_state, 0, "Josip Perusanec", "SBC6510", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/sbowling.cpp b/src/mame/drivers/sbowling.cpp index d0c75f64b7a..2ca1d2759b1 100644 --- a/src/mame/drivers/sbowling.cpp +++ b/src/mame/drivers/sbowling.cpp @@ -401,7 +401,7 @@ PALETTE_INIT_MEMBER(sbowling_state, sbowling) } } -static MACHINE_CONFIG_START( sbowling, sbowling_state ) +static MACHINE_CONFIG_START( sbowling ) MCFG_CPU_ADD("maincpu", I8080, XTAL_19_968MHz/10) /* ? */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(port_map) @@ -448,4 +448,4 @@ ROM_START( sbowling ) ROM_LOAD( "kb09.6m", 0x0400, 0x0400, CRC(e29191a6) SHA1(9a2c78a96ef6d118f4dacbea0b7d454b66a452ae)) ROM_END -GAME( 1982, sbowling, 0, sbowling, sbowling, driver_device, 0, ROT90, "Taito Corporation", "Strike Bowling", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, sbowling, 0, sbowling, sbowling, sbowling_state, 0, ROT90, "Taito Corporation", "Strike Bowling", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sbrain.cpp b/src/mame/drivers/sbrain.cpp index 575d01ebcf6..910ef304943 100644 --- a/src/mame/drivers/sbrain.cpp +++ b/src/mame/drivers/sbrain.cpp @@ -99,7 +99,7 @@ private: required_device m_u0; required_device m_u1; required_device m_ppi; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_ioport m_vs; @@ -136,7 +136,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sbrain_subio, AS_IO, 8, sbrain_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x08, 0x08) AM_READWRITE(port08_r,port08_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1791_t, read, write) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1791_device, read, write) ADDRESS_MAP_END // bit 0 is wrong, maybe the whole byte is wrong @@ -317,7 +317,7 @@ uint32_t sbrain_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap return 0; } -static MACHINE_CONFIG_START( sbrain, sbrain_state ) +static MACHINE_CONFIG_START( sbrain ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(sbrain_mem) diff --git a/src/mame/drivers/sbrkout.cpp b/src/mame/drivers/sbrkout.cpp index 03027619d66..588e6c000cb 100644 --- a/src/mame/drivers/sbrkout.cpp +++ b/src/mame/drivers/sbrkout.cpp @@ -580,7 +580,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( sbrkout, sbrkout_state ) +static MACHINE_CONFIG_START( sbrkout ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,MAIN_CLOCK/16) /* 375 KHz? Should be 750KHz? */ @@ -706,7 +706,7 @@ ROM_END * *************************************/ -GAMEL( 1978, sbrkout, 0, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 04)", MACHINE_SUPPORTS_SAVE, layout_sbrkout ) -GAMEL( 1978, sbrkout3, sbrkout, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 03)", MACHINE_SUPPORTS_SAVE, layout_sbrkout ) -GAMEL( 1978, sbrkoutc, sbrkout, sbrkout, sbrkoutc, driver_device, 0, ROT270, "Atari", "Super Breakout (Canyon and Vertical Breakout, prototype)", MACHINE_SUPPORTS_SAVE, layout_sbrkout ) -GAMEL( 1978, sbrkoutct, sbrkout, sbrkoutct, sbrkoutct, driver_device, 0, ROT270, "Atari", "Super Breakout (Cocktail, prototype)", MACHINE_SUPPORTS_SAVE, layout_sbrkout ) +GAMEL( 1978, sbrkout, 0, sbrkout, sbrkout, sbrkout_state, 0, ROT270, "Atari", "Super Breakout (rev 04)", MACHINE_SUPPORTS_SAVE, layout_sbrkout ) +GAMEL( 1978, sbrkout3, sbrkout, sbrkout, sbrkout, sbrkout_state, 0, ROT270, "Atari", "Super Breakout (rev 03)", MACHINE_SUPPORTS_SAVE, layout_sbrkout ) +GAMEL( 1978, sbrkoutc, sbrkout, sbrkout, sbrkoutc, sbrkout_state, 0, ROT270, "Atari", "Super Breakout (Canyon and Vertical Breakout, prototype)", MACHINE_SUPPORTS_SAVE, layout_sbrkout ) +GAMEL( 1978, sbrkoutct, sbrkout, sbrkoutct, sbrkoutct, sbrkout_state, 0, ROT270, "Atari", "Super Breakout (Cocktail, prototype)", MACHINE_SUPPORTS_SAVE, layout_sbrkout ) diff --git a/src/mame/drivers/sbugger.cpp b/src/mame/drivers/sbugger.cpp index 1e0a91f9832..e164e7b34d5 100644 --- a/src/mame/drivers/sbugger.cpp +++ b/src/mame/drivers/sbugger.cpp @@ -212,7 +212,7 @@ INPUT_PORTS_END /* machine driver */ -static MACHINE_CONFIG_START( sbugger, sbugger_state ) +static MACHINE_CONFIG_START( sbugger ) MCFG_CPU_ADD("maincpu", I8085A, 6000000) /* 3.00 MHz??? */ MCFG_CPU_PROGRAM_MAP(sbugger_map) @@ -279,5 +279,5 @@ ROM_START( sbuggera ) ROM_LOAD( "spbugger.gfx", 0x0000, 0x1000, CRC(d3f345b5) SHA1(a5082ffc3043352e9b731af95770bdd62fb928bf) ) ROM_END -GAME( 1981, sbugger, 0, sbugger, sbugger, driver_device, 0, ROT270, "Game-A-Tron", "Space Bugger (set 1)", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, sbuggera, sbugger, sbugger, sbugger, driver_device, 0, ROT270, "Game-A-Tron", "Space Bugger (set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, sbugger, 0, sbugger, sbugger, sbugger_state, 0, ROT270, "Game-A-Tron", "Space Bugger (set 1)", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, sbuggera, sbugger, sbugger, sbugger, sbugger_state, 0, ROT270, "Game-A-Tron", "Space Bugger (set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sc1.cpp b/src/mame/drivers/sc1.cpp index d2cb8ee3b8f..223c6329c18 100644 --- a/src/mame/drivers/sc1.cpp +++ b/src/mame/drivers/sc1.cpp @@ -170,7 +170,7 @@ static INPUT_PORTS_START( sc1 ) INPUT_PORTS_END -static MACHINE_CONFIG_START( sc1, sc1_state ) +static MACHINE_CONFIG_START( sc1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(sc1_mem) @@ -198,5 +198,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, sc1, 0, 0, sc1, sc1, driver_device, 0, "VEB Mikroelektronik Erfurt", "Schachcomputer SC1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, sc1, 0, 0, sc1, sc1, sc1_state, 0, "VEB Mikroelektronik Erfurt", "Schachcomputer SC1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/sc2.cpp b/src/mame/drivers/sc2.cpp index 5adc415e5c0..0dc458c6bff 100644 --- a/src/mame/drivers/sc2.cpp +++ b/src/mame/drivers/sc2.cpp @@ -197,7 +197,7 @@ WRITE8_MEMBER( sc2_state::pio_port_b_w ) m_kp_matrix = data; } -static MACHINE_CONFIG_START( sc2, sc2_state ) +static MACHINE_CONFIG_START( sc2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(sc2_mem) @@ -236,5 +236,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, sc2, 0, 0, sc2, sc2, driver_device, 0, "VEB Mikroelektronik Erfurt", "Schachcomputer SC2", MACHINE_SUPPORTS_SAVE) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, sc2, 0, 0, sc2, sc2, sc2_state, 0, "VEB Mikroelektronik Erfurt", "Schachcomputer SC2", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/scm_500.cpp b/src/mame/drivers/scm_500.cpp index 1e5eac486ae..c7f9736bf48 100644 --- a/src/mame/drivers/scm_500.cpp +++ b/src/mame/drivers/scm_500.cpp @@ -37,7 +37,7 @@ void scm_500_state::machine_reset() { } -static MACHINE_CONFIG_START( scm_500, scm_500_state ) +static MACHINE_CONFIG_START( scm_500 ) // unknown CPU @@ -80,5 +80,5 @@ ROM_START( scm_500 ) ROM_LOAD_BIOS( 4, "STNDXGR_307", 0x00000, 0x10000, CRC(4d0d91c6) SHA1(85ff5d43ec331bcd4cde6aaf82f6143acc7e020c) ) // USA 03.07 (could be 500E specific) ROM_END -GAME( 1987, scm_500, 0, scm_500, scm_500, driver_device, 0, ROT0, "Standard Change-Makers", "Standard Change-Makers System 500 / 500E", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, scm_500, 0, scm_500, scm_500, scm_500_state, 0, ROT0, "Standard Change-Makers", "Standard Change-Makers System 500 / 500E", MACHINE_IS_SKELETON_MECHANICAL ) // 1995 - 500E - same basic hw? diff --git a/src/mame/drivers/scobra.cpp b/src/mame/drivers/scobra.cpp index 00893cc6174..9dbf543a12c 100644 --- a/src/mame/drivers/scobra.cpp +++ b/src/mame/drivers/scobra.cpp @@ -761,7 +761,7 @@ static INPUT_PORTS_START( mimonsco ) INPUT_PORTS_END -static MACHINE_CONFIG_START( type1, scobra_state ) +static MACHINE_CONFIG_START( type1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ @@ -924,7 +924,7 @@ static MACHINE_CONFIG_DERIVED( darkplnt, type2 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hustler, scobra_state ) +static MACHINE_CONFIG_START( hustler ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ @@ -1598,29 +1598,29 @@ ROM_START( mimonsco ) ROM_END -GAME( 1981, stratgyx, 0, stratgyx, stratgyx, scramble_state, stratgyx, ROT0, "Konami", "Strategy X", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, stratgys, stratgyx, stratgyx, stratgyx, scramble_state, stratgyx, ROT0, "Konami (Stern Electronics license)", "Strategy X (Stern Electronics)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, strongx, stratgyx, stratgyx, stratgyx, scramble_state, stratgyx, ROT0, "bootleg", "Strong X", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, stratgyx, 0, stratgyx, stratgyx, scobra_state, stratgyx, ROT0, "Konami", "Strategy X", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, stratgys, stratgyx, stratgyx, stratgyx, scobra_state, stratgyx, ROT0, "Konami (Stern Electronics license)", "Strategy X (Stern Electronics)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, strongx, stratgyx, stratgyx, stratgyx, scobra_state, stratgyx, ROT0, "bootleg", "Strong X", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, darkplnt, 0, darkplnt, darkplnt, scramble_state, darkplnt, ROT180, "Stern Electronics", "Dark Planet", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, darkplnt, 0, darkplnt, darkplnt, scobra_state, darkplnt, ROT180, "Stern Electronics", "Dark Planet", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, tazmani2, tazmania, type2, tazmania, scramble_state, tazmani2, ROT90, "Stern Electronics", "Tazz-Mania (set 2, alt hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, tazmani2, tazmania, type2, tazmania, scobra_state, tazmani2, ROT90, "Stern Electronics", "Tazz-Mania (set 2, alt hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, rescue, 0, rescue, rescue, scramble_state, rescue, ROT90, "Stern Electronics", "Rescue", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, rescueb, rescue, rescueb, rescue, scramble_state, rescue, ROT90, "bootleg (Videl Games)", "Tuono Blu (bootleg of Rescue)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, aponow, rescue, rescue, rescue, scramble_state, rescue, ROT90, "bootleg", "Apocaljpse Now (bootleg of Rescue)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, rescuefe, rescue, rescuefe, rescue, driver_device, 0, ROT90, "bootleg (Free Enterprise Games)", "Rescue (Free Enterprise Games, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, rescue, 0, rescue, rescue, scobra_state, rescue, ROT90, "Stern Electronics", "Rescue", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, rescueb, rescue, rescueb, rescue, scobra_state, rescue, ROT90, "bootleg (Videl Games)", "Tuono Blu (bootleg of Rescue)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, aponow, rescue, rescue, rescue, scobra_state, rescue, ROT90, "bootleg", "Apocaljpse Now (bootleg of Rescue)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, rescuefe, rescue, rescuefe, rescue, scobra_state, 0, ROT90, "bootleg (Free Enterprise Games)", "Rescue (Free Enterprise Games, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, minefld, 0, minefld, minefld, scramble_state, minefld, ROT90, "Stern Electronics", "Minefield", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, minefldfe, minefld, minefldfe, minefldfe, driver_device, 0, ROT90, "bootleg (The Logicshop)", "Minefield (The Logicshop, bootleg)", MACHINE_SUPPORTS_SAVE ) // The Logicshop ('licensed' from Free Enterprise Games? +GAME( 1983, minefld, 0, minefld, minefld, scobra_state, minefld, ROT90, "Stern Electronics", "Minefield", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, minefldfe, minefld, minefldfe, minefldfe, scobra_state, 0, ROT90, "bootleg (The Logicshop)", "Minefield (The Logicshop, bootleg)", MACHINE_SUPPORTS_SAVE ) // The Logicshop ('licensed' from Free Enterprise Games? -GAME( 1981, hustler, 0, hustler, hustler, scramble_state, hustler, ROT90, "Konami", "Video Hustler", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, hustlerd, hustler, hustler, hustler, scramble_state, hustlerd, ROT90, "Konami (Dynamo Games license)", "Video Hustler (Dynamo Games)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, billiard, hustler, hustler, hustler, scramble_state, billiard, ROT90, "bootleg", "The Billiards (Video Hustler bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, hustlerb, hustler, hustlerb, hustler, driver_device, 0, ROT90, "bootleg (Digimatic)", "Video Hustler (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, hustlerb2, hustler, hustler, hustler, scramble_state, hustlerd, ROT90, "bootleg", "Fatsy Gambler (Video Hustler bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, hustlerb4, hustler, hustlerb4, hustler, driver_device, 0, ROT90, "bootleg", "Video Hustler (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, hustlerb5, hustler, hustlerb, hustler, driver_device, 0, ROT90, "bootleg", "Video Hustler (bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hustler, 0, hustler, hustler, scobra_state, hustler, ROT90, "Konami", "Video Hustler", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hustlerd, hustler, hustler, hustler, scobra_state, hustlerd, ROT90, "Konami (Dynamo Games license)", "Video Hustler (Dynamo Games)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, billiard, hustler, hustler, hustler, scobra_state, billiard, ROT90, "bootleg", "The Billiards (Video Hustler bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hustlerb, hustler, hustlerb, hustler, scobra_state, 0, ROT90, "bootleg (Digimatic)", "Video Hustler (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hustlerb2, hustler, hustler, hustler, scobra_state, hustlerd, ROT90, "bootleg", "Fatsy Gambler (Video Hustler bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hustlerb4, hustler, hustlerb4, hustler, scobra_state, 0, ROT90, "bootleg", "Video Hustler (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, hustlerb5, hustler, hustlerb, hustler, scobra_state, 0, ROT90, "bootleg", "Video Hustler (bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mimonkey, 0, mimonkey, mimonkey, scramble_state, mimonkey, ROT90, "Universal Video Games", "Mighty Monkey", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mimonsco, mimonkey, mimonkey, mimonsco, scramble_state, mimonsco, ROT90, "bootleg", "Mighty Monkey (bootleg on Super Cobra hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mimonkey, 0, mimonkey, mimonkey, scobra_state, mimonkey, ROT90, "Universal Video Games", "Mighty Monkey", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mimonsco, mimonkey, mimonkey, mimonsco, scobra_state, mimonsco, ROT90, "bootleg", "Mighty Monkey (bootleg on Super Cobra hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/scorpion.cpp b/src/mame/drivers/scorpion.cpp index decdd724182..edbe114dd87 100644 --- a/src/mame/drivers/scorpion.cpp +++ b/src/mame/drivers/scorpion.cpp @@ -272,7 +272,7 @@ static GFXDECODE_START( quorum ) GFXDECODE_ENTRY( "maincpu", 0x1fb00, quorum_charlayout, 0, 8 ) GFXDECODE_END -static MACHINE_CONFIG_DERIVED_CLASS( scorpion, spectrum_128, scorpion_state ) +static MACHINE_CONFIG_DERIVED( scorpion, spectrum_128 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(scorpion_io) MCFG_CPU_DECRYPTED_OPCODES_MAP(scorpion_switch) @@ -376,9 +376,9 @@ ROM_START( kay1024 ) ROMX_LOAD( "kay1024s.rom", 0x010000, 0x10000, CRC(67351caa) SHA1(1d9c0606b380c000ca1dfa33f90a122ecf9df1f1), ROM_BIOS(3)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ -COMP( 1994, scorpio, spec128, 0, scorpion, spec_plus, driver_device, 0, "Zonov and Co.", "Scorpion ZS-256", 0 ) -COMP( 1991, profi, spec128, 0, profi, spec_plus, driver_device, 0, "Kondor and Kramis", "Profi", MACHINE_NOT_WORKING ) -COMP( 1998, kay1024, spec128, 0, scorpion, spec_plus, driver_device, 0, "NEMO", "Kay 1024", MACHINE_NOT_WORKING ) -COMP( 19??, quorum, spec128, 0, quorum, spec_plus, driver_device, 0, "", "Quorum", MACHINE_NOT_WORKING ) -COMP( 19??, bestzx, spec128, 0, scorpion, spec_plus, driver_device, 0, "", "BestZX", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1994, scorpio, spec128, 0, scorpion, spec_plus, scorpion_state, 0, "Zonov and Co.", "Scorpion ZS-256", 0 ) +COMP( 1991, profi, spec128, 0, profi, spec_plus, scorpion_state, 0, "Kondor and Kramis", "Profi", MACHINE_NOT_WORKING ) +COMP( 1998, kay1024, spec128, 0, scorpion, spec_plus, scorpion_state, 0, "NEMO", "Kay 1024", MACHINE_NOT_WORKING ) +COMP( 19??, quorum, spec128, 0, quorum, spec_plus, scorpion_state, 0, "", "Quorum", MACHINE_NOT_WORKING ) +COMP( 19??, bestzx, spec128, 0, scorpion, spec_plus, scorpion_state, 0, "", "BestZX", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/scotrsht.cpp b/src/mame/drivers/scotrsht.cpp index 723bad4544f..51b929d20cd 100644 --- a/src/mame/drivers/scotrsht.cpp +++ b/src/mame/drivers/scotrsht.cpp @@ -184,7 +184,7 @@ static GFXDECODE_START( scotrsht ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 16*16*8, 16*8 ) /* sprites */ GFXDECODE_END -static MACHINE_CONFIG_START( scotrsht, scotrsht_state ) +static MACHINE_CONFIG_START( scotrsht ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 18432000/6) /* 3.072 MHz */ @@ -251,4 +251,4 @@ ROM_START( scotrsht ) ROM_LOAD( "gx545_6301_8f.bin", 0x0400, 0x0100, CRC(c1c7cf58) SHA1(08452228bf13e43ce4a05806f79e9cd1542416f1) ) /* sprites lookup */ ROM_END -GAME( 1985, scotrsht, 0, scotrsht, scotrsht, driver_device, 0, ROT90,"Konami", "Scooter Shooter", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, scotrsht, 0, scotrsht, scotrsht, scotrsht_state, 0, ROT90,"Konami", "Scooter Shooter", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp index 6dfe59d3b00..f076240bc59 100644 --- a/src/mame/drivers/scramble.cpp +++ b/src/mame/drivers/scramble.cpp @@ -1291,7 +1291,7 @@ GFXDECODE_END /**************************************************************************/ -static MACHINE_CONFIG_START( scramble, scramble_state ) +static MACHINE_CONFIG_START( scramble ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ @@ -1569,7 +1569,7 @@ static MACHINE_CONFIG_DERIVED( hncholms, hunchbks ) MCFG_VIDEO_START_OVERRIDE(scramble_state,scorpion) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ad2083, scramble_state ) +static MACHINE_CONFIG_START( ad2083 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ MCFG_CPU_PROGRAM_MAP(ad2083_map) @@ -2257,7 +2257,7 @@ GAME( 1983, mrkougb2, mrkougar, mrkougb, mrkougar, scramble_state, mrkougb, GAME( 1982, hotshock, 0, hotshock, hotshock, scramble_state, hotshock, ROT90, "E.G. Felaco (Domino license)", "Hot Shocker", MACHINE_SUPPORTS_SAVE ) GAME( 1982, hotshockb,hotshock, hotshock, hotshock, scramble_state, hotshock, ROT90, "E.G. Felaco", "Hot Shocker (early revision?)", MACHINE_SUPPORTS_SAVE ) // has "Dudley presents" (protagonist of the game), instead of Domino -GAME( 198?, conquer, 0, hotshock, hotshock, driver_device, 0, ROT90, "", "Conqueror", MACHINE_NOT_WORKING ) +GAME( 198?, conquer, 0, hotshock, hotshock, scramble_state, 0, ROT90, "", "Conqueror", MACHINE_NOT_WORKING ) GAME( 1983, hunchbks, hunchbak, hunchbks, hunchbks, scramble_state, scramble_ppi, ROT90, "Century Electronics", "Hunchback (Scramble hardware)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, hunchbks2,hunchbak, hunchbks, hunchbks, scramble_state, scramble_ppi, ROT90, "bootleg (Sig)", "Hunchback (Scramble hardware, bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/scregg.cpp b/src/mame/drivers/scregg.cpp index 1070b75929e..06d10f5f168 100644 --- a/src/mame/drivers/scregg.cpp +++ b/src/mame/drivers/scregg.cpp @@ -257,7 +257,7 @@ MACHINE_RESET_MEMBER(scregg_state,scregg) m_btime_tilemap[3] = 0; } -static MACHINE_CONFIG_START( dommy, scregg_state ) +static MACHINE_CONFIG_START( dommy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12MHz/8) @@ -289,7 +289,7 @@ static MACHINE_CONFIG_START( dommy, scregg_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( scregg, scregg_state ) +static MACHINE_CONFIG_START( scregg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12MHz/8) @@ -424,7 +424,7 @@ DRIVER_INIT_MEMBER(scregg_state,rockduck) } -GAME( 1983, dommy, 0, dommy, scregg, driver_device, 0, ROT270, "Technos Japan", "Dommy", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, scregg, 0, scregg, scregg, driver_device, 0, ROT270, "Technos Japan", "Scrambled Egg", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, eggs, scregg, scregg, scregg, driver_device, 0, ROT270, "Technos Japan (Universal USA license)", "Eggs (USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, dommy, 0, dommy, scregg, scregg_state, 0, ROT270, "Technos Japan", "Dommy", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, scregg, 0, scregg, scregg, scregg_state, 0, ROT270, "Technos Japan", "Scrambled Egg", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, eggs, scregg, scregg, scregg, scregg_state, 0, ROT270, "Technos Japan (Universal USA license)", "Eggs (USA)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, rockduck, 0, scregg, rockduck, scregg_state, rockduck, ROT270, "Datel SAS", "Rock Duck (prototype?)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/scv.cpp b/src/mame/drivers/scv.cpp index 821dac8425c..8d48e57dd9f 100644 --- a/src/mame/drivers/scv.cpp +++ b/src/mame/drivers/scv.cpp @@ -651,7 +651,7 @@ static SLOT_INTERFACE_START(scv_cart) SLOT_INTERFACE_INTERNAL("rom128k_ram", SCV_ROM128K_RAM4K) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( scv, scv_state ) +static MACHINE_CONFIG_START( scv ) MCFG_CPU_ADD( "maincpu", UPD7801, XTAL_4MHz ) MCFG_CPU_PROGRAM_MAP( scv_mem ) @@ -712,6 +712,6 @@ ROM_START( scv_pal ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1984, scv, 0, 0, scv, scv, driver_device, 0, "Epoch", "Super Cassette Vision", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -CONS( 198?, scv_pal, scv, 0, scv_pal, scv, driver_device, 0, "Yeno", "Super Cassette Vision (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1984, scv, 0, 0, scv, scv, scv_state, 0, "Epoch", "Super Cassette Vision", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 198?, scv_pal, scv, 0, scv_pal, scv, scv_state, 0, "Yeno", "Super Cassette Vision (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/scyclone.cpp b/src/mame/drivers/scyclone.cpp new file mode 100644 index 00000000000..5ee25c58bb1 --- /dev/null +++ b/src/mame/drivers/scyclone.cpp @@ -0,0 +1,690 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood +/* + Space Cyclone + + 3 board stack? - the PCB pictures make it very difficult to figure much out + + seems a bit like 8080bw hardware but with extra sprites and a z80 cpu? + maybe an evolution of Polaris etc.? + + + there's an MB14241 near the Sprite ROM + + 1x 8DSW, 1x 4DSW + + there are 11 HM4716AP RAM chips near the main CPU (1 is unmarked, could be different?) + HM4716AP is 16384 * 1-bit (2048 [0x800] bytes) + + 1bpp of video needs 0x3800 bytes + + 1bpp video would need 4 of these (with 0x400 bytes leftover) + 2bpp video would need 7 of these + 3bpp video would need 11 of these (with 0x400 bytes leftover) + mainram is 0x400 bytes (so the leftover in above calc?) + + + Notes: + + (to check on hardware) + the stars scroll backwards when in cocktail mode, the direction changes when the screen + is flipped but is still reversed compared to upright. We would have no way of knowing + if we're in cocktail mode without checking the dipswitch, so I think this is a game bug + furthermore the game seems to set what I believe to be the 'flipscreen' bit for player 2 + even when in 'upright' mode, so it's possible this romset was only really made for a + cocktail table? + + it looks like the stars should roughly align with the constellations during the + intermissions +*/ + +#include "emu.h" + +#include "cpu/z80/z80.h" +#include "machine/gen_latch.h" +#include "machine/mb14241.h" +#include "sound/dac.h" +#include "sound/sn76477.h" +#include "sound/volt_reg.h" + +#include "screen.h" +#include "speaker.h" + + +class scyclone_state : public driver_device +{ +public: + scyclone_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_stars(*this, "stars"), + m_gfx1pal(*this, "gfx1pal"), + m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch") + { } + + DECLARE_WRITE8_MEMBER(vidctrl_w); + + DECLARE_WRITE8_MEMBER(sprite_xpos_w); + DECLARE_WRITE8_MEMBER(sprite_ypos_w); + DECLARE_WRITE8_MEMBER(sprite_colour_w); + DECLARE_WRITE8_MEMBER(sprite_tile_w); + DECLARE_WRITE8_MEMBER(starscroll_w); + DECLARE_WRITE8_MEMBER(port0e_w); + DECLARE_WRITE8_MEMBER(port06_w); + DECLARE_WRITE8_MEMBER(videomask1_w); + DECLARE_WRITE8_MEMBER(videomask2_w); + DECLARE_WRITE8_MEMBER(vram_w); + DECLARE_READ8_MEMBER(vram_r); + DECLARE_WRITE8_MEMBER(snd_3001_w); +// DECLARE_WRITE8_MEMBER(snd_3003_w); +// DECLARE_WRITE8_MEMBER(snd_3004_w); + DECLARE_WRITE8_MEMBER(snd_3005_w); + + uint32_t screen_update_scyclone(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + INTERRUPT_GEN_MEMBER(irq); + + CUSTOM_INPUT_MEMBER(collision_r); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + +private: + required_device m_maincpu; + required_device m_gfxdecode; + required_region_ptr m_stars; + required_region_ptr m_gfx1pal; + required_device m_palette; + required_device m_soundlatch; + + /* memory pointers */ + std::unique_ptr m_vram; + + uint8_t m_videowritemask; + uint8_t m_videowritemask2; + + uint8_t m_sprite_xpos; + uint8_t m_sprite_ypos; + uint8_t m_sprite_colour; + uint8_t m_sprite_tile; + uint8_t m_starscroll; + uint8_t m_p0e; + uint8_t m_vidctrl; + + uint8_t m_hascollided; + + /* video-related */ + const uint8_t get_sprite_pixel(int x, int y); + const uint8_t get_bitmap_pixel(int x, int y); + uint32_t draw_starfield(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t draw_bitmap_and_sprite(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); +}; + + + +/*************************************************************************** + + Start the video hardware emulation. + +***************************************************************************/ + +void scyclone_state::video_start() +{ + m_vram = std::make_unique(0x3800*3); + save_pointer(&m_vram[0], "m_vram", 0x3800*3); + + m_videowritemask = 0x00; + m_videowritemask2 = 0x00; + + for (int i = 0; i < 8; i++) + m_palette->set_pen_color(i, rgb_t(pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2))); + + for (int i = 0; i < 16; i++) + { + uint8_t col = m_gfx1pal[i]; + m_palette->set_pen_color(i+8, rgb_t(pal1bit(col >> 2), pal1bit(col >> 1), pal1bit(col >> 0))); + } +} + +const uint8_t scyclone_state::get_sprite_pixel(int x, int y) +{ + int minx = 0xe0-m_sprite_xpos; + int miny = 0xe0-m_sprite_ypos; + int col = m_sprite_colour & 3; + int code = m_sprite_tile & 7; + + int maxx = minx + 32; + int maxy = miny + 32; + + /* if we're not even inside the sprite, return nothing */ + if (x < minx || x >= maxx) + return 0; + + if (y < miny || y >= maxy) + return 0; + + int sprx = x-minx; + int spry = y-miny; + + const uint8_t* srcdata = m_gfxdecode->gfx(0)->get_data(code); + + uint8_t pix = srcdata[spry*32 + sprx] + col*4; + + return pix; +} + + +const uint8_t scyclone_state::get_bitmap_pixel(int x, int y) +{ + const uint8_t video_data0 = m_vram[(y*32+(x/8))]; + const uint8_t video_data1 = m_vram[(y*32+(x/8))+0x3800]; + const uint8_t video_data2 = m_vram[(y*32+(x/8))+0x3800+0x3800]; + + int const bit(x & 0x07); + + const uint8_t plane0(BIT(video_data0, bit)); + const uint8_t plane1(BIT(video_data1, bit)); + const uint8_t plane2(BIT(video_data2, bit)); + + const uint8_t pal = plane0 | (plane1<<1) | (plane2<<2); + + return pal; +} + +uint32_t scyclone_state::draw_starfield(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + const pen_t *paldata = m_palette->pens(); + + // this is not correct, but the first 0x80 bytes of the PROM are blank suggesting that this + // part is for the non-visible 32 rows at least, so it should be something like this + // blinking and colours are not understood at all + + + + for (int strip=0;strip<16;strip++) + { + for (int x=0;x<256;x++) + { + const uint8_t star = m_stars[((x+m_starscroll) & 0x3f)+(strip*0x40)]; + + for (int y=0;y<16;y++) + { + const int ypos = (y+16*strip)-32; + + if (ypos>=0 && ypos<256) + { + int noclipped = 0; + + if (m_vidctrl & 0x08) + noclipped = x < 64*3; + else + noclipped = x >= 64; + + + if (y == star && star != 0 && noclipped) + bitmap.pix32(ypos, x) = paldata[7]; + else + bitmap.pix32(ypos, x) = paldata[0]; + } + } + } + } + + return 0; +} + +uint32_t scyclone_state::draw_bitmap_and_sprite(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + const pen_t *paldata = m_palette->pens(); + m_hascollided = 0; + + for (int y=0;y<256-32;y++) + { + for (int x=0;x<256/8;x++) + { + for (int i=0;i<8;i++) + { + int realx = 0; + int realy = 0; + + if (m_vidctrl & 0x08) + { + realx = 255 - ((x*8)+i); + realy = 255-32-y; + } + else + { + realx = (x*8)+i; + realy = y; + } + + + uint8_t pal = get_bitmap_pixel(realx, realy); + + if (pal) bitmap.pix32(y, (x*8)+i) = paldata[pal]; + + uint8_t pal2 = get_sprite_pixel(realx, realy); + + if (pal2 & 0x3) + { + bitmap.pix32(y, (x*8)+i) = paldata[8+pal2]; + if (pal == 0x7) m_hascollided = 1; + } + } + } + } + + return 0; +} + + +uint32_t scyclone_state::screen_update_scyclone(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + draw_starfield(screen,bitmap,cliprect); + draw_bitmap_and_sprite(screen,bitmap,cliprect); + + //popmessage("%02x %02x %02x %02x %02x %02x", m_sprite_xpos, m_sprite_ypos, m_sprite_colour, m_sprite_tile, m_starscroll, m_p0e); + + return 0; +} + + + +static ADDRESS_MAP_START( scyclone_map, AS_PROGRAM, 8, scyclone_state ) + AM_RANGE(0x0000, 0x2fff) AM_ROM + AM_RANGE(0x4000, 0x43ff) AM_RAM + AM_RANGE(0x4400, 0x5fff) AM_READWRITE(vram_r,vram_w) + AM_RANGE(0x6000, 0x60ff) AM_NOP // this just seems to be overflow from the VRAM writes, probably goes nowhere +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( scyclone_iomap, AS_IO, 8, scyclone_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x00) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) + AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) + AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") + AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(vidctrl_w) + AM_RANGE(0x04, 0x04) AM_WRITE(sprite_xpos_w) + AM_RANGE(0x05, 0x05) AM_WRITE(sprite_ypos_w) + AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // possible watchdog, unlikely to be twinkle related. + AM_RANGE(0x08, 0x08) AM_WRITE(sprite_colour_w) + AM_RANGE(0x09, 0x09) AM_WRITE(sprite_tile_w) + AM_RANGE(0x0a, 0x0a) AM_WRITE(starscroll_w) + AM_RANGE(0x0e, 0x0e) AM_WRITE(port0e_w) + AM_RANGE(0x0f, 0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) + AM_RANGE(0x40, 0x40) AM_WRITE(videomask1_w) + AM_RANGE(0x80, 0x80) AM_WRITE(videomask2_w) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( scyclone_sub_map, AS_PROGRAM, 8, scyclone_state ) + AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x2000, 0x23ff) AM_RAM + + AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("dac", dac_byte_interface, write) // music + AM_RANGE(0x3001, 0x3001) AM_WRITE(snd_3001_w) // written at the same time, with the same data as 0x3005 + AM_RANGE(0x3002, 0x3002) AM_DEVWRITE("dac2", dac_byte_interface, write) // speech +// AM_RANGE(0x3003, 0x3003) AM_WRITE(snd_3003_w) // writes 02 or 00 +// AM_RANGE(0x3004, 0x3004) AM_WRITE(snd_3004_w) // always writes 00? + AM_RANGE(0x3005, 0x3005) AM_WRITE(snd_3005_w) // written at the same time, with the same data as 0x3001 +ADDRESS_MAP_END + +static ADDRESS_MAP_START( scyclone_sub_iomap, AS_IO, 8, scyclone_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) +ADDRESS_MAP_END + + +// appears to be when a white bitmap pixel (col 0x7) collides with a large sprite? +// if you simply set it to 1 and shoot in the left corner, the game gets stuck +// but if you have it set to 0 there are no collisions with large objects +CUSTOM_INPUT_MEMBER(scyclone_state::collision_r) +{ + return m_hascollided; +} + + +static INPUT_PORTS_START( scyclone ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_TILT ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, scyclone_state, collision_r, nullptr) // hw collision? + // maybe these 4 are the 4xdsw bank? + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_CONDITION("DSW0",0x04,EQUALS,0x00) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL PORT_CONDITION("DSW0",0x04,EQUALS,0x00) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL PORT_CONDITION("DSW0",0x04,EQUALS,0x00) + + PORT_START("DSW0") + PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW0:1,2") + PORT_DIPSETTING( 0x00, "2" ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x02, "4" ) + PORT_DIPSETTING( 0x03, "5" ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("DSW0:3") + PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Upright ) ) + PORT_DIPNAME( 0x08, 0x00, "Disable Collision (Buggy!)" ) PORT_DIPLOCATION("DSW0:4") // this causes the game to malfunction, likely leftover debug feature + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, "Show Copyright Date" ) PORT_DIPLOCATION("DSW0:5") + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DSW0:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DSW0:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "DSW0:8" ) +INPUT_PORTS_END + +READ8_MEMBER(scyclone_state::vram_r) +{ + uint8_t ret = 0; + // not sure, collisions depend on readback + ret |= m_vram[offset]; + ret |= m_vram[offset+0x3800]; + ret |= m_vram[offset+0x3800+0x3800]; + + return ret; +} + + +WRITE8_MEMBER(scyclone_state::vram_w) +{ +#if 0 + // halves are NOT equal in between level cutscenes + // this is used when drawing the pointing stick, need closeup reference + + // 0x40 and 0x80 ports always seem equal tho + if ((m_videowritemask & 0xf) != ((m_videowritemask>>4) & 0xf)) + { + logerror("m_videowritemask halves not equal %02x\n", m_videowritemask); + } + + if ((m_videowritemask2 & 0xf) != ((m_videowritemask2>>4) & 0xf)) + { + logerror("m_videowritemask2 halves not equal %02x\n", m_videowritemask2); + } + + if ((m_videowritemask) != (m_videowritemask2)) + { + logerror("m_videowritemask != m_videowritemask2 %02x %02x\n", m_videowritemask, m_videowritemask2); + } +#endif + + + for (int i=0; i<8; i++) + { + const uint8_t databit = data & (1<=6) videowritemask = (m_videowritemask>>4) & 0x0f; + else if (i>=4) videowritemask = (m_videowritemask>>0) & 0x0f; + else if (i>=2) videowritemask = (m_videowritemask2>>4) & 0x0f; + else videowritemask = (m_videowritemask2>>0) & 0x0f; + + if (!(videowritemask & 1) && databit) m_vram[offset] |= databit; + else m_vram[offset] &= ~nodatabit; + + if (!(videowritemask & 2) && databit) m_vram[offset+0x3800] |= databit; + else m_vram[offset+0x3800] &= ~nodatabit; + + if (!(videowritemask & 4) && databit) m_vram[offset+0x3800+0x3800] |= databit; + else m_vram[offset+0x3800+0x3800] &= ~nodatabit; + } +} + + +WRITE8_MEMBER(scyclone_state::vidctrl_w) +{ + // ---- facu + // f = flipscreen (always set during player 2 turn, even in upright mode?!) + // a = alternates during attract mode, enabled during gameplay + // u = unknown but used (set to 1 during gameplay) + // c = coinlock + m_vidctrl = data; + + if (data & 0xf0) + { + logerror("vidctrl_w %02x\n", data); + } +} + +WRITE8_MEMBER(scyclone_state::sprite_xpos_w) +{ + m_sprite_xpos = data; +} + +WRITE8_MEMBER(scyclone_state::sprite_ypos_w) +{ + m_sprite_ypos = data; +} + +WRITE8_MEMBER(scyclone_state::sprite_colour_w) +{ + m_sprite_colour = data; +} + +WRITE8_MEMBER(scyclone_state::sprite_tile_w) +{ + m_sprite_tile = data; +} + +WRITE8_MEMBER(scyclone_state::starscroll_w) +{ + m_starscroll = data; +} + +WRITE8_MEMBER(scyclone_state::port0e_w) +{ + // could be related to basic sound effects? + //logerror("port0e_w %02x\n",data); + m_p0e = data; +} + +WRITE8_MEMBER(scyclone_state::port06_w) +{ + // watchdog? +} + +// these seem to select where the vram writes go +// 3 possible planes, probably one 4 bits per 2 pixels? +WRITE8_MEMBER(scyclone_state::videomask1_w) +{ + // format seems to be -xxx -xxx + m_videowritemask = data; +} + +WRITE8_MEMBER(scyclone_state::videomask2_w) +{ + // format seems to be -xxx -xxx + m_videowritemask2 = data; +} + +// Sound CPU handlers + +WRITE8_MEMBER(scyclone_state::snd_3001_w) +{ + // need to clear the latch somewhere, the command value is written back here and at 3005 + // after acknowledging a command + // might actually reset the DACs as there are (at least) 2 of them? + m_soundlatch->clear_w(space, 0, data); +} + +/* +WRITE8_MEMBER(scyclone_state::snd_3003_w) +{ +// m_soundlatch->clear_w(space, 0, data); +} + +WRITE8_MEMBER(scyclone_state::snd_3004_w) +{ +// m_soundlatch->clear_w(space, 0, data); +} +*/ + +WRITE8_MEMBER(scyclone_state::snd_3005_w) +{ +// m_soundlatch->clear_w(space, 0, data); +} + + +static const gfx_layout tiles32x32_layout = +{ + 32,32, + RGN_FRAC(1,1), + 2, + { 0, 4 }, + { 0, 1, 2, 3, 256+0, 256+1, 256+2, 256+3, 512+0, 512+1, 512+2, 512+3, 768+0, 768+1, 768+2, 768+3, 1024+0, 1024+1, 1024+2, 1024+3, 1280+0, 1280+1, 1280+2, 1280+3, 1536+0, 1536+1, 1536+2, 1536+3, 1792+0, 1792+1, 1792+2, 1792+3 }, + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8, 16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8, 24*8, 25*8, 26*8, 27*8, 28*8, 29*8, 30*8, 31*8 }, + 8*32*8 +}; + +static GFXDECODE_START( scyclone ) + GFXDECODE_ENTRY( "gfx1", 0, tiles32x32_layout, 8, 4 ) +GFXDECODE_END + + + +void scyclone_state::machine_start() +{ + save_item(NAME(m_videowritemask)); + save_item(NAME(m_videowritemask2)); + save_item(NAME(m_sprite_xpos)); + save_item(NAME(m_sprite_ypos)); + save_item(NAME(m_sprite_colour)); + save_item(NAME(m_sprite_tile)); + save_item(NAME(m_starscroll)); + save_item(NAME(m_p0e)); + save_item(NAME(m_vidctrl)); + save_item(NAME(m_hascollided)); +} + +void scyclone_state::machine_reset() +{ + m_sprite_xpos = 0; + m_sprite_ypos = 0; + m_sprite_colour = 0; + m_sprite_tile = 0; + m_starscroll = 0; + m_p0e = 0; + + m_hascollided = 0; +} + + + +INTERRUPT_GEN_MEMBER(scyclone_state::irq) +{ + // CPU runs in IM0 + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* RST 10h */ +} + + +static MACHINE_CONFIG_START( scyclone ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", Z80, 5000000/2) // MOSTEK Z80-CPU ? MHz (there's also a 9.987MHz XTAL) intermissions seem driven directly by CPU speed for reference + MCFG_CPU_PROGRAM_MAP(scyclone_map) + MCFG_CPU_IO_MAP(scyclone_iomap) + MCFG_CPU_VBLANK_INT_DRIVER("screen", scyclone_state, irq) + + // sound ? + MCFG_CPU_ADD("subcpu", Z80, 5000000/2) // LH0080 Z80-CPU SHARP ? MHz (5Mhz XTAL on this sub-pcb) + MCFG_CPU_PROGRAM_MAP(scyclone_sub_map) + MCFG_CPU_IO_MAP(scyclone_sub_iomap) + // no idea, but it does wait on an irq in places, irq0 increases a register checked in the wait loop so without it sound dies after a while + MCFG_CPU_PERIODIC_INT_DRIVER(scyclone_state, irq0_line_hold, 400*60) + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + + /* add shifter */ + MCFG_MB14241_ADD("mb14241") + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(256, 256) + MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-32-1) + MCFG_SCREEN_UPDATE_DRIVER(scyclone_state, screen_update_scyclone) + MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) // due to hw collisions + + MCFG_GFXDECODE_ADD("gfxdecode", "palette", scyclone) + MCFG_PALETTE_ADD("palette", 8 + 4*4) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("speaker") + + MCFG_SOUND_ADD("snsnd0", SN76477, 0) + MCFG_SN76477_ENABLE(1) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) + + MCFG_SOUND_ADD("snsnd1", SN76477, 0) + MCFG_SN76477_ENABLE(1) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) + + // this is just taken from route16.cpp + + MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC + + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) + MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) + MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) + + MCFG_SOUND_ADD("dac2", DAC_8BIT_R2R, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC + + MCFG_DEVICE_ADD("vref2", VOLTAGE_REGULATOR, 0) + MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) + MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) + +MACHINE_CONFIG_END + +ROM_START( scyclone ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "DE07.1H.2716", 0x0000, 0x0800, CRC(fa9c93a3) SHA1(701a3196ee67533d69f1264e14085d04dfb1b915) ) + ROM_LOAD( "DE08.3H.2716", 0x0800, 0x0800, CRC(bdff3e77) SHA1(e3fc6840348fa6df834cb1fb8b3832db05b5c585) ) + ROM_LOAD( "DE09.4H.2716", 0x1000, 0x0800, CRC(eed05875) SHA1(e00a1b2d2d723c2deedf5f5e3159936a5d27891d) ) + ROM_LOAD( "DE10.5H.2716", 0x1800, 0x0800, CRC(71301be6) SHA1(70c1983d256a6a9e18c7a15b93f5e3781d884fdb) ) + ROM_LOAD( "DE11.6H.2716", 0x2000, 0x0800, CRC(d241db51) SHA1(53c6489d715baf5f03032a7ac367a6af64bce040) ) + ROM_LOAD( "DE12.7H.2716", 0x2800, 0x0800, CRC(208e3e9a) SHA1(07f0e6c5417584eef171d8dcad83d741f88c9348) ) + + ROM_REGION( 0x2000, "subcpu", 0 ) + ROM_LOAD( "DE18.IC1.2716", 0x0000, 0x0800, CRC(182a5c24) SHA1(0ba29b6b3e7ec97c0b0748a6e60bb1a737dc55fa) ) + ROM_LOAD( "DE04.IC9.2716", 0x0800, 0x0800, CRC(098269ac) SHA1(138af858bbbd73380086f971bcdd52ae47e2b667) ) + ROM_LOAD( "DE05.IC14.2716", 0x1000, 0x0800, CRC(878f68b2) SHA1(2c2fa1b9053664ec26452ab0b35e2ae550601cc9) ) + ROM_LOAD( "DE06.IC19.2716", 0x1800, 0x0800, CRC(0b1ead90) SHA1(38322b39f4420408c223cdbed3b75692a3d70746) ) + + ROM_REGION( 0x0800, "gfx1", 0 ) // 32x32x2 sprites + ROM_LOAD( "DE01.11C.2716", 0x0000, 0x0800, CRC(bf770730) SHA1(1d0f9235b0618e3f4dd6db47efbdf92e2b00f5f6) ) + + ROM_REGION( 0x0400, "gfx1pal", 0 ) // only 16 bytes of this are actually used + ROM_LOAD( "DE02.5B.82S137", 0x0000, 0x0400, CRC(fe4b278c) SHA1(c03080ab4d3fb84b8eec7087b925d1a1d8565fcc) ) + + ROM_REGION( 0x0840, "stars", 0 ) // probably the starfield bitmap + ROM_LOAD( "DE15.3A.82S137", 0x0000, 0x0400, CRC(c2816161) SHA1(2d0e7b4dbdb2af1481a4b7e45b1f9e3640f69aec) ) + + ROM_REGION( 0x0040, "proms", 0 ) + ROM_LOAD( "DE16.4A.82S123", 0x0000, 0x0020, CRC(5178e9c5) SHA1(dd2f81894069282f37feae21c5cfacf50f77dcd5) ) + ROM_LOAD( "DE17.2E.82S123", 0x0020, 0x0020, CRC(3c8572e4) SHA1(c908c4ed99828fff576c3d0963cd8b99edeb993b) ) +ROM_END + +GAME( 1980, scyclone, 0, scyclone, scyclone, scyclone_state, 0, ROT270, "Taito Corporation", "Space Cyclone", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sderby.cpp b/src/mame/drivers/sderby.cpp index 41cc2729c94..9dfca7f7fe8 100644 --- a/src/mame/drivers/sderby.cpp +++ b/src/mame/drivers/sderby.cpp @@ -372,6 +372,26 @@ static ADDRESS_MAP_START( spacewin_map, AS_PROGRAM, 16, sderby_state ) AM_RANGE(0x8fc000, 0x8fffff) AM_RAM ADDRESS_MAP_END +static ADDRESS_MAP_START( shinygld_map, AS_PROGRAM, 16, sderby_state ) + AM_RANGE(0x000000, 0x03ffff) AM_ROM + AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ + AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ + AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ + AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) /* tilemaps offset control */ + AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* seems another video register. constantly used */ + AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* seems another video register. constantly used */ + AM_RANGE(0x104010, 0x105fff) AM_WRITENOP /* unknown */ + AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ + AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r) + AM_RANGE(0x308008, 0x308009) AM_WRITENOP /* output port */ + AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x401000, 0x40100d) AM_WRITENOP /* unknown */ + AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("nvram") /* 16K Dallas DS1220Y-200 NVRAM */ + AM_RANGE(0x7f0000, 0x7fffff) AM_RAM +ADDRESS_MAP_END + static ADDRESS_MAP_START( roulette_map, AS_PROGRAM, 16, sderby_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x440000, 0x440fff) AM_WRITEONLY AM_SHARE("spriteram") @@ -478,6 +498,26 @@ static INPUT_PORTS_START( spacewin ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END +static INPUT_PORTS_START( shinygld ) + PORT_START("IN0") /* 0x308000.w */ + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start") + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_SERVICE_NO_TOGGLE(0x1000, IP_ACTIVE_LOW) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + static INPUT_PORTS_START( pmroulet ) PORT_START("IN0") PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -553,7 +593,7 @@ GFXDECODE_END * Machine Drivers * ****************************/ -static MACHINE_CONFIG_START( sderby, sderby_state ) +static MACHINE_CONFIG_START( sderby ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(sderby_map) @@ -574,11 +614,11 @@ static MACHINE_CONFIG_START( sderby, sderby_state ) MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sderbya, sderby_state ) +static MACHINE_CONFIG_START( sderbya ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(sderbya_map) @@ -599,13 +639,11 @@ static MACHINE_CONFIG_START( sderbya, sderby_state ) MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END - - -static MACHINE_CONFIG_START( luckboom, sderby_state ) +static MACHINE_CONFIG_START( luckboom ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(luckboom_map) @@ -626,11 +664,11 @@ static MACHINE_CONFIG_START( luckboom, sderby_state ) MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( spacewin, sderby_state ) +static MACHINE_CONFIG_START( spacewin ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(spacewin_map) @@ -651,11 +689,36 @@ static MACHINE_CONFIG_START( spacewin, sderby_state ) MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pmroulet, sderby_state ) +static MACHINE_CONFIG_START( shinygld) + + MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) // verified + MCFG_CPU_PROGRAM_MAP(shinygld_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", sderby_state, irq4_line_hold) + + MCFG_NVRAM_ADD_0FILL("nvram") + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(57.47) // measured on PCB + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(64*8, 64*8) + MCFG_SCREEN_VISIBLE_AREA(4*8, 44*8-1, 3*8, 33*8-1) + MCFG_SCREEN_UPDATE_DRIVER(sderby_state, screen_update_sderby) + MCFG_SCREEN_PALETTE("palette") + + MCFG_GFXDECODE_ADD("gfxdecode", "palette", sderby) + MCFG_PALETTE_ADD("palette", 0x1000) + MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx) + + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) /* clock frequency & pin 7 verified */ + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( pmroulet ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(roulette_map) @@ -676,7 +739,7 @@ static MACHINE_CONFIG_START( pmroulet, sderby_state ) MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) /* clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) /* clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -796,6 +859,31 @@ ROM_START( spacewin ) ROM_LOAD( "8.u145", 0x080000, 0x20000, CRC(541a73fd) SHA1(fede5e2fcbb18e90cc50995d44e831c3f9b56614) ) ROM_END +// This board seems very similar to the spacewin's one. +ROM_START( shinygld ) + ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */ + ROM_LOAD16_BYTE( "16.u16", 0x00000, 0x20000, CRC(4b08a668) SHA1(8444e7624a40e14eca73c425db1cd574c2bf02e0) ) // 27C1001 + ROM_LOAD16_BYTE( "17.u15", 0x00001, 0x20000, CRC(eb126e19) SHA1(d02ba03551f71f3ca46bee49291e4423daeea0ce) ) // 27C1001 + + ROM_REGION( 0x080000, "oki", 0 ) /* Samples */ + ROM_LOAD( "15.u147", 0x00000, 0x40000, CRC(66db6b15) SHA1(4a1ca962c61d60db8ff66c81253131d067bec8c6) ) // 27C2001 + + ROM_REGION( 0xa0000, "gfx1", 0 ) /* Sprites */ + ROM_LOAD( "18.u141", 0x000000, 0x20000, CRC(a905c02d) SHA1(07a0a70424aa759e4c552408154c2d1515f512d5) ) // 27C1001 + ROM_LOAD( "19.u142", 0x020000, 0x20000, CRC(8db53f3b) SHA1(aeb2da8bb065bb49edae1de51f6db9a7a02989c3) ) // 27C1001 + ROM_LOAD( "20.u143", 0x040000, 0x20000, CRC(be54ae86) SHA1(23c8a01aa05204a6cd186a59269e515a068e23c4) ) // 27C1001 + ROM_LOAD( "21.u144", 0x060000, 0x20000, CRC(de3be666) SHA1(647e054b9aefa80d95f6fb26cc89a976538f0d7c) ) // 27C1001 + ROM_LOAD( "22.u145", 0x080000, 0x20000, CRC(113ccf81) SHA1(c2192e81a4be38911c971e1593b902f92d9a02d5) ) // 27C1001 + + /* Dumper's note: Board carries five PLDs : one GAL22V10 near the 68000 CPU (which most likely acts as main address decoder), + three PALCE22V10H (two are near the GFX ROMs, probably for enabling them), one PALCE16V8H.*/ + ROM_REGION( 0x1000, "plds", 0) + ROM_LOAD( "gal22v10.bin", 0x0400, 0x02e5, NO_DUMP ) // soldered + ROM_LOAD( "palce22v10_1.bin", 0x2dd, 0x2dd, NO_DUMP ) // soldered + ROM_LOAD( "palce22v10_2.bin", 0x2dd, 0x2dd, NO_DUMP ) // soldered + ROM_LOAD( "palce22v10_3.bin", 0x2dd, 0x2dd, NO_DUMP ) // soldered + ROM_LOAD( "palce16v8h.bin", 0x0200, 0x0117, NO_DUMP ) // soldered +ROM_END /* Croupier (PlaYMark) @@ -941,10 +1029,11 @@ ROM_END * Game Drivers * ******************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1996, sderby, 0, sderby, sderby, driver_device, 0, ROT0, "Playmark", "Super Derby (v.07.03)", 0, layout_sderby ) -GAMEL( 1996, sderbya, sderby, sderbya, sderbya, driver_device, 0, ROT0, "Playmark", "Super Derby (v.10.04)", 0, layout_sderby ) -GAMEL( 1996, spacewin, 0, spacewin, spacewin, driver_device, 0, ROT0, "Playmark", "Scacco Matto / Space Win", 0, layout_spacewin ) -GAMEL( 1997, croupier, 0, pmroulet, pmroulet, driver_device, 0, ROT0, "Playmark", "Croupier (Playmark Roulette v.20.05)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_pmroulet ) -GAMEL( 1997, croupiera, croupier, pmroulet, pmroulet, driver_device, 0, ROT0, "Playmark", "Croupier (Playmark Roulette v.09.04)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_pmroulet ) -GAME ( 1996, luckboom, 0, luckboom, luckboom, driver_device, 0, ROT0, "Playmark", "Lucky Boom", 0 ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1996, sderby, 0, sderby, sderby, sderby_state, 0, ROT0, "Playmark", "Super Derby (v.07.03)", 0, layout_sderby ) +GAMEL( 1996, sderbya, sderby, sderbya, sderbya, sderby_state, 0, ROT0, "Playmark", "Super Derby (v.10.04)", 0, layout_sderby ) +GAMEL( 1996, spacewin, 0, spacewin, spacewin, sderby_state, 0, ROT0, "Playmark", "Scacco Matto / Space Win", 0, layout_spacewin ) +GAME ( 1996, shinygld, 0, shinygld, shinygld, sderby_state, 0, ROT0, "Playmark", "Shiny Golds", 0 ) +GAMEL( 1997, croupier, 0, pmroulet, pmroulet, sderby_state, 0, ROT0, "Playmark", "Croupier (Playmark Roulette v.20.05)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_pmroulet ) +GAMEL( 1997, croupiera, croupier, pmroulet, pmroulet, sderby_state, 0, ROT0, "Playmark", "Croupier (Playmark Roulette v.09.04)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_pmroulet ) +GAME ( 1996, luckboom, 0, luckboom, luckboom, sderby_state, 0, ROT0, "Playmark", "Lucky Boom", 0 ) diff --git a/src/mame/drivers/sdk80.cpp b/src/mame/drivers/sdk80.cpp index c5d2f45dd5e..08303254f76 100644 --- a/src/mame/drivers/sdk80.cpp +++ b/src/mame/drivers/sdk80.cpp @@ -115,7 +115,7 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) // set up terminal to default to DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( sdk80, sdk80_state ) +static MACHINE_CONFIG_START( sdk80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080A, XTAL_18_432MHz/9) MCFG_CPU_PROGRAM_MAP(sdk80_mem) @@ -145,5 +145,5 @@ ROM_START( sdk80 ) ROM_LOAD( "mcs80.a14", 0x0000, 0x0400, BAD_DUMP CRC(3ce7bd37) SHA1(04cc67875b53d4cdfefce07041af12be3acedf4f)) // Compiled from manual listing ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1975, sdk80, 0, 0, sdk80, sdk80, driver_device, 0, "Intel", "SDK-80", MACHINE_NO_SOUND_HW ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1975, sdk80, 0, 0, sdk80, sdk80, sdk80_state, 0, "Intel", "SDK-80", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp index 7a899e067c1..799e707db90 100644 --- a/src/mame/drivers/sdk85.cpp +++ b/src/mame/drivers/sdk85.cpp @@ -124,7 +124,7 @@ READ8_MEMBER( sdk85_state::kbd_r ) return data; } -static MACHINE_CONFIG_START( sdk85, sdk85_state ) +static MACHINE_CONFIG_START( sdk85 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(sdk85_mem) @@ -154,5 +154,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, sdk85, 0, 0, sdk85, sdk85, driver_device, 0, "Intel", "SDK-85", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1977, sdk85, 0, 0, sdk85, sdk85, sdk85_state, 0, "Intel", "SDK-85", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/sdk86.cpp b/src/mame/drivers/sdk86.cpp index 435dce2d8c1..f2561185988 100644 --- a/src/mame/drivers/sdk86.cpp +++ b/src/mame/drivers/sdk86.cpp @@ -146,7 +146,7 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( sdk86, sdk86_state ) +static MACHINE_CONFIG_START( sdk86 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, XTAL_14_7456MHz/3) /* divided down by i8284 clock generator; jumper selection allows it to be slowed to 2.5MHz, hence changing divider from 3 to 6 */ MCFG_CPU_PROGRAM_MAP(sdk86_mem) @@ -218,5 +218,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 1979, sdk86, 0, 0, sdk86, sdk86, driver_device, 0, "Intel", "SDK-86", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1979, sdk86, 0, 0, sdk86, sdk86, sdk86_state, 0, "Intel", "SDK-86", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/seabattl.cpp b/src/mame/drivers/seabattl.cpp index 914a8ba7c0e..828b4d181db 100644 --- a/src/mame/drivers/seabattl.cpp +++ b/src/mame/drivers/seabattl.cpp @@ -477,7 +477,7 @@ static GFXDECODE_START( seabattl ) GFXDECODE_ENTRY( "gfx3", 0, tiles8x8_layout, 24, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( seabattl, seabattl_state ) +static MACHINE_CONFIG_START( seabattl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 14318180/4/2) @@ -568,5 +568,5 @@ ROM_START( seabattla ) // this was a very different looking PCB (bootleg called ROM_END -GAMEL(1980, seabattl, 0, seabattl, seabattl, driver_device, 0, ROT0, "Zaccaria", "Sea Battle (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND, layout_seabattl ) -GAMEL(1980, seabattla, seabattl, seabattl, seabattl, driver_device, 0, ROT0, "Zaccaria", "Sea Battle (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING, layout_seabattl ) // incomplete dump +GAMEL(1980, seabattl, 0, seabattl, seabattl, seabattl_state, 0, ROT0, "Zaccaria", "Sea Battle (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND, layout_seabattl ) +GAMEL(1980, seabattla, seabattl, seabattl, seabattl, seabattl_state, 0, ROT0, "Zaccaria", "Sea Battle (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING, layout_seabattl ) // incomplete dump diff --git a/src/mame/drivers/sealy.cpp b/src/mame/drivers/sealy.cpp index 59def9aee7f..bb5114bdeec 100644 --- a/src/mame/drivers/sealy.cpp +++ b/src/mame/drivers/sealy.cpp @@ -95,7 +95,7 @@ static GFXDECODE_START( sealy ) GFXDECODE_END -static MACHINE_CONFIG_START( sealy, sealy_state ) +static MACHINE_CONFIG_START( sealy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H83044, MAIN_CLOCK) /* wrong CPU, but we have not a M16C core ATM */ @@ -115,7 +115,7 @@ static MACHINE_CONFIG_START( sealy, sealy_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", MAIN_CLOCK/13, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", MAIN_CLOCK/13, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -136,4 +136,4 @@ ROM_START( crzyddz ) ROM_END -GAME( 2004?, crzyddz, 0, sealy, sealy, driver_device, 0, ROT0, "Sealy", "Crazy Dou Di Zhu", MACHINE_IS_SKELETON ) +GAME( 2004?, crzyddz, 0, sealy, sealy, sealy_state, 0, ROT0, "Sealy", "Crazy Dou Di Zhu", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/seattle.cpp b/src/mame/drivers/seattle.cpp index 4b9699a6694..a1f94c3011e 100644 --- a/src/mame/drivers/seattle.cpp +++ b/src/mame/drivers/seattle.cpp @@ -190,31 +190,27 @@ #include "cpu/adsp2100/adsp2100.h" #include "cpu/mips/mips3.h" -#include "machine/idectrl.h" #include "machine/midwayic.h" #include "machine/nvram.h" #include "machine/smc91c9x.h" -#include "video/voodoo.h" + +#include "machine/pci.h" +#include "machine/gt64xxx.h" +#include "machine/pci-ide.h" +#include "video/voodoo_pci.h" #include "screen.h" -#include "speaker.h" #include "calspeed.lh" #include "vaportrx.lh" #include "hyprdriv.lh" #include "sfrush.lh" - - /************************************* * * Debugging constants * *************************************/ -#define LOG_GALILEO (0) -#define LOG_TIMERS (0) -#define LOG_DMA (0) -#define LOG_PCI (0) #define LOG_WIDGET (0) @@ -226,7 +222,6 @@ *************************************/ #define SYSTEM_CLOCK 50000000 -#define TIMER_PERIOD attotime::from_hz(SYSTEM_CLOCK) /* various board configurations */ #define PHOENIX_CONFIG (0) @@ -235,143 +230,20 @@ #define FLAGSTAFF_CONFIG (3) /* static interrupts */ -#define GALILEO_IRQ_NUM (0) -#define IOASIC_IRQ_NUM (1) -#define IDE_IRQ_NUM (2) +#define GALILEO_IRQ_NUM MIPS3_IRQ0 +#define IOASIC_IRQ_NUM MIPS3_IRQ1 +#define IDE_IRQ_NUM MIPS3_IRQ2 /* configurable interrupts */ #define ETHERNET_IRQ_SHIFT (1) #define WIDGET_IRQ_SHIFT (1) #define VBLANK_IRQ_SHIFT (7) - - -/************************************* - * - * Galileo constants - * - *************************************/ - -/* Galileo registers - 0x000-0x3ff */ -#define GREG_CPU_CONFIG (0x000/4) -#define GREG_RAS_1_0_LO (0x008/4) -#define GREG_RAS_1_0_HI (0x010/4) -#define GREG_RAS_3_2_LO (0x018/4) -#define GREG_RAS_3_2_HI (0x020/4) -#define GREG_CS_2_0_LO (0x028/4) -#define GREG_CS_2_0_HI (0x030/4) -#define GREG_CS_3_BOOT_LO (0x038/4) -#define GREG_CS_3_BOOT_HI (0x040/4) -#define GREG_PCI_IO_LO (0x048/4) -#define GREG_PCI_IO_HI (0x050/4) -#define GREG_PCI_MEM_LO (0x058/4) -#define GREG_PCI_MEM_HI (0x060/4) -#define GREG_INTERNAL_SPACE (0x068/4) -#define GREG_BUSERR_LO (0x070/4) -#define GREG_BUSERR_HI (0x078/4) - -/* Galileo registers - 0x400-0x7ff */ -#define GREG_RAS0_LO (0x400/4) -#define GREG_RAS0_HI (0x404/4) -#define GREG_RAS1_LO (0x408/4) -#define GREG_RAS1_HI (0x40c/4) -#define GREG_RAS2_LO (0x410/4) -#define GREG_RAS2_HI (0x414/4) -#define GREG_RAS3_LO (0x418/4) -#define GREG_RAS3_HI (0x41c/4) -#define GREG_CS0_LO (0x420/4) -#define GREG_CS0_HI (0x424/4) -#define GREG_CS1_LO (0x428/4) -#define GREG_CS1_HI (0x42c/4) -#define GREG_CS2_LO (0x430/4) -#define GREG_CS2_HI (0x434/4) -#define GREG_CS3_LO (0x438/4) -#define GREG_CS3_HI (0x43c/4) -#define GREG_CSBOOT_LO (0x440/4) -#define GREG_CSBOOT_HI (0x444/4) -#define GREG_DRAM_CONFIG (0x448/4) -#define GREG_DRAM_BANK0 (0x44c/4) -#define GREG_DRAM_BANK1 (0x450/4) -#define GREG_DRAM_BANK2 (0x454/4) -#define GREG_DRAM_BANK3 (0x458/4) -#define GREG_DEVICE_BANK0 (0x45c/4) -#define GREG_DEVICE_BANK1 (0x460/4) -#define GREG_DEVICE_BANK2 (0x464/4) -#define GREG_DEVICE_BANK3 (0x468/4) -#define GREG_DEVICE_BOOT (0x46c/4) -#define GREG_ADDRESS_ERROR (0x470/4) - -/* Galileo registers - 0x800-0xbff */ -#define GREG_DMA0_COUNT (0x800/4) -#define GREG_DMA1_COUNT (0x804/4) -#define GREG_DMA2_COUNT (0x808/4) -#define GREG_DMA3_COUNT (0x80c/4) -#define GREG_DMA0_SOURCE (0x810/4) -#define GREG_DMA1_SOURCE (0x814/4) -#define GREG_DMA2_SOURCE (0x818/4) -#define GREG_DMA3_SOURCE (0x81c/4) -#define GREG_DMA0_DEST (0x820/4) -#define GREG_DMA1_DEST (0x824/4) -#define GREG_DMA2_DEST (0x828/4) -#define GREG_DMA3_DEST (0x82c/4) -#define GREG_DMA0_NEXT (0x830/4) -#define GREG_DMA1_NEXT (0x834/4) -#define GREG_DMA2_NEXT (0x838/4) -#define GREG_DMA3_NEXT (0x83c/4) -#define GREG_DMA0_CONTROL (0x840/4) -#define GREG_DMA1_CONTROL (0x844/4) -#define GREG_DMA2_CONTROL (0x848/4) -#define GREG_DMA3_CONTROL (0x84c/4) -#define GREG_TIMER0_COUNT (0x850/4) -#define GREG_TIMER1_COUNT (0x854/4) -#define GREG_TIMER2_COUNT (0x858/4) -#define GREG_TIMER3_COUNT (0x85c/4) -#define GREG_DMA_ARBITER (0x860/4) -#define GREG_TIMER_CONTROL (0x864/4) - -/* Galileo registers - 0xc00-0xfff */ -#define GREG_PCI_COMMAND (0xc00/4) -#define GREG_PCI_TIMEOUT (0xc04/4) -#define GREG_PCI_RAS_1_0 (0xc08/4) -#define GREG_PCI_RAS_3_2 (0xc0c/4) -#define GREG_PCI_CS_2_0 (0xc10/4) -#define GREG_PCI_CS_3_BOOT (0xc14/4) -#define GREG_INT_STATE (0xc18/4) -#define GREG_INT_MASK (0xc1c/4) -#define GREG_PCI_INT_MASK (0xc24/4) -#define GREG_CONFIG_ADDRESS (0xcf8/4) -#define GREG_CONFIG_DATA (0xcfc/4) - -/* Galileo interrupts */ -#define GINT_SUMMARY_SHIFT (0) -#define GINT_MEMOUT_SHIFT (1) -#define GINT_DMAOUT_SHIFT (2) -#define GINT_CPUOUT_SHIFT (3) -#define GINT_DMA0COMP_SHIFT (4) -#define GINT_DMA1COMP_SHIFT (5) -#define GINT_DMA2COMP_SHIFT (6) -#define GINT_DMA3COMP_SHIFT (7) -#define GINT_T0EXP_SHIFT (8) -#define GINT_T1EXP_SHIFT (9) -#define GINT_T2EXP_SHIFT (10) -#define GINT_T3EXP_SHIFT (11) -#define GINT_MASRDERR_SHIFT (12) -#define GINT_SLVWRERR_SHIFT (13) -#define GINT_MASWRERR_SHIFT (14) -#define GINT_SLVRDERR_SHIFT (15) -#define GINT_ADDRERR_SHIFT (16) -#define GINT_MEMERR_SHIFT (17) -#define GINT_MASABORT_SHIFT (18) -#define GINT_TARABORT_SHIFT (19) -#define GINT_RETRYCTR_SHIFT (20) - - - /************************************* - * - * Widget board constants - * - *************************************/ +* +* Widget board constants +* +*************************************/ /* Widget registers */ #define WREG_ETHER_ADDR (0x00/4) @@ -383,40 +255,9 @@ /* Widget interrupts */ #define WINT_ETHERNET_SHIFT (2) - - /************************************* - * - * Structures - * - *************************************/ - -struct galileo_timer -{ - emu_timer * timer; - uint32_t count; - uint8_t active; -}; - - -struct galileo_data -{ - /* raw register data */ - uint32_t reg[0x1000/4]; - - /* timer info */ - galileo_timer timer[4]; - - /* DMA info */ - int8_t dma_active; - uint8_t dma_stalled_on_voodoo[4]; - - /* PCI info */ - uint32_t pci_bridge_regs[0x40]; - uint32_t pci_3dfx_regs[0x40]; - uint32_t pci_ide_regs[0x40]; -}; - +* Structures +*************************************/ struct widget_data { @@ -428,47 +269,31 @@ struct widget_data uint8_t irq_mask; }; - class seattle_state : public driver_device { public: seattle_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_nvram(*this, "nvram") , - m_rambase(*this, "rambase"), - m_interrupt_enable(*this, "int_enable"), - m_interrupt_config(*this, "int_config"), - m_asic_reset(*this, "asic_reset"), - m_rombase(*this, "rombase"), + m_nvram(*this, "nvram"), m_maincpu(*this, "maincpu"), - m_ide(*this, "ide"), - m_ethernet(*this, "ethernet"), m_cage(*this, "cage"), m_dcs(*this, "dcs"), + m_ethernet(*this, "ethernet"), m_ioasic(*this, "ioasic") - { - } + {} - required_shared_ptr m_nvram; - required_shared_ptr m_rambase; - required_shared_ptr m_interrupt_enable; - required_shared_ptr m_interrupt_config; - required_shared_ptr m_asic_reset; - required_shared_ptr m_rombase; + required_device m_nvram; required_device m_maincpu; - required_device m_ide; - optional_device m_ethernet; optional_device m_cage; optional_device m_dcs; + optional_device m_ethernet; required_device m_ioasic; - galileo_data m_galileo; + widget_data m_widget; - voodoo_device *m_voodoo; - uint8_t m_voodoo_stalled; - uint8_t m_cpu_stalled_on_voodoo; - uint32_t m_cpu_stalled_offset; - uint32_t m_cpu_stalled_data; - uint32_t m_cpu_stalled_mem_mask; + uint32_t m_interrupt_enable; + uint32_t m_interrupt_config; + uint32_t m_asic_reset; + std::vector m_nvram_data; uint8_t m_board_config; uint8_t m_ethernet_irq_num; uint8_t m_ethernet_irq_state; @@ -482,12 +307,11 @@ public: uint8_t m_output_mode; DECLARE_READ32_MEMBER(interrupt_state_r); DECLARE_READ32_MEMBER(interrupt_state2_r); + DECLARE_READ32_MEMBER(interrupt_config_r); DECLARE_WRITE32_MEMBER(interrupt_config_w); + DECLARE_READ32_MEMBER(seattle_interrupt_enable_r); DECLARE_WRITE32_MEMBER(seattle_interrupt_enable_w); DECLARE_WRITE32_MEMBER(vblank_clear_w); - DECLARE_READ32_MEMBER(galileo_r); - DECLARE_WRITE32_MEMBER(galileo_w); - DECLARE_WRITE32_MEMBER(seattle_voodoo_w); DECLARE_READ32_MEMBER(analog_port_r); DECLARE_WRITE32_MEMBER(analog_port_w); DECLARE_READ32_MEMBER(carnevil_gun_r); @@ -497,6 +321,7 @@ public: DECLARE_WRITE32_MEMBER(cmos_protect_w); DECLARE_READ32_MEMBER(cmos_protect_r); DECLARE_WRITE32_MEMBER(seattle_watchdog_w); + DECLARE_READ32_MEMBER(asic_reset_r); DECLARE_WRITE32_MEMBER(asic_reset_w); DECLARE_WRITE32_MEMBER(asic_fifo_w); DECLARE_READ32_MEMBER(status_leds_r); @@ -507,10 +332,11 @@ public: DECLARE_WRITE32_MEMBER(output_w); DECLARE_READ32_MEMBER(widget_r); DECLARE_WRITE32_MEMBER(widget_w); - DECLARE_READ32_MEMBER(seattle_ide_r); + + DECLARE_WRITE_LINE_MEMBER(ide_interrupt); DECLARE_WRITE_LINE_MEMBER(vblank_assert); - DECLARE_WRITE_LINE_MEMBER(voodoo_stall); + DECLARE_DRIVER_INIT(sfrush); DECLARE_DRIVER_INIT(blitz2k); DECLARE_DRIVER_INIT(carnevil); @@ -525,37 +351,16 @@ public: DECLARE_DRIVER_INIT(blitz99); virtual void machine_start() override; virtual void machine_reset() override; - uint32_t screen_update_seattle(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - TIMER_CALLBACK_MEMBER(galileo_timer_callback); + DECLARE_WRITE_LINE_MEMBER(ethernet_interrupt); DECLARE_WRITE_LINE_MEMBER(ioasic_irq); void update_vblank_irq(); - uint32_t pci_bridge_r(address_space &space, uint8_t reg, uint8_t type); - void pci_bridge_w(address_space &space, uint8_t reg, uint8_t type, uint32_t data); - uint32_t pci_3dfx_r(address_space &space, uint8_t reg, uint8_t type); - void pci_3dfx_w(address_space &space, uint8_t reg, uint8_t type, uint32_t data); - uint32_t pci_ide_r(address_space &space, uint8_t reg, uint8_t type); - void pci_ide_w(address_space &space, uint8_t reg, uint8_t type, uint32_t data); void update_galileo_irqs(); - int galileo_dma_fetch_next(address_space &space, int which); - void galileo_perform_dma(address_space &space, int which); - void galileo_reset(); void widget_reset(); void update_widget_irq(); void init_common(int config); -}; - -/************************************* - * - * Video start and update - * - *************************************/ - -uint32_t seattle_state::screen_update_seattle(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -{ - return m_voodoo->voodoo_update(bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED; -} +}; /************************************* @@ -566,43 +371,19 @@ uint32_t seattle_state::screen_update_seattle(screen_device &screen, bitmap_rgb3 void seattle_state::machine_start() { - int index; - - m_voodoo = machine().device("voodoo"); - - /* allocate timers for the galileo */ - m_galileo.timer[0].timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(seattle_state::galileo_timer_callback),this)); - m_galileo.timer[1].timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(seattle_state::galileo_timer_callback),this)); - m_galileo.timer[2].timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(seattle_state::galileo_timer_callback),this)); - m_galileo.timer[3].timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(seattle_state::galileo_timer_callback),this)); - /* set the fastest DRC options, but strict verification */ m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY); /* configure fast RAM regions */ - m_maincpu->add_fastram(0x00000000, 0x007fffff, false, m_rambase); - m_maincpu->add_fastram(0x1fc00000, 0x1fc7ffff, true, m_rombase); - - /* register for save states */ - save_item(NAME(m_galileo.reg)); - save_item(NAME(m_galileo.dma_active)); - save_item(NAME(m_galileo.dma_stalled_on_voodoo)); - save_item(NAME(m_galileo.pci_bridge_regs)); - save_item(NAME(m_galileo.pci_3dfx_regs)); - save_item(NAME(m_galileo.pci_ide_regs)); - for (index = 0; index < ARRAY_LENGTH(m_galileo.timer); index++) - { - save_item(NAME(m_galileo.timer[index].count), index); - save_item(NAME(m_galileo.timer[index].active), index); - } + //m_maincpu->add_fastram(0x00000000, 0x007fffff, FALSE, m_rambase); + //m_maincpu->add_fastram(0x1fc00000, 0x1fc7ffff, TRUE, m_rombase); + save_item(NAME(m_widget.ethernet_addr)); save_item(NAME(m_widget.irq_num)); save_item(NAME(m_widget.irq_mask)); - save_item(NAME(m_voodoo_stalled)); - save_item(NAME(m_cpu_stalled_on_voodoo)); - save_item(NAME(m_cpu_stalled_offset)); - save_item(NAME(m_cpu_stalled_data)); - save_item(NAME(m_cpu_stalled_mem_mask)); + save_item(NAME(m_interrupt_enable)); + save_item(NAME(m_interrupt_config)); + save_item(NAME(m_asic_reset)); save_item(NAME(m_board_config)); save_item(NAME(m_ethernet_irq_num)); save_item(NAME(m_ethernet_irq_state)); @@ -619,11 +400,10 @@ void seattle_state::machine_start() void seattle_state::machine_reset() { - m_galileo.dma_active = -1; - + m_vblank_state = 0; m_vblank_irq_num = 0; - m_voodoo_stalled = false; - m_cpu_stalled_on_voodoo = false; + m_interrupt_config = 0; + m_interrupt_enable = 0; /* reset either the DCS2 board or the CAGE board */ if (machine().device("dcs") != nullptr) @@ -637,39 +417,22 @@ void seattle_state::machine_reset() m_cage->control_w(3); } - /* reset the other devices */ - galileo_reset(); if (m_board_config == SEATTLE_WIDGET_CONFIG) widget_reset(); } - - /************************************* - * - * IDE interrupts - * - *************************************/ - -WRITE_LINE_MEMBER(seattle_state::ide_interrupt) -{ - m_maincpu->set_input_line(IDE_IRQ_NUM, state); -} - - - -/************************************* - * - * Ethernet interrupts - * - *************************************/ +* +* Ethernet interrupts +* +*************************************/ WRITE_LINE_MEMBER(seattle_state::ethernet_interrupt) { m_ethernet_irq_state = state; if (m_board_config == FLAGSTAFF_CONFIG) { - uint8_t assert = m_ethernet_irq_state && (*m_interrupt_enable & (1 << ETHERNET_IRQ_SHIFT)); + uint8_t assert = m_ethernet_irq_state && (m_interrupt_enable & (1 << ETHERNET_IRQ_SHIFT)); if (m_ethernet_irq_num != 0) m_maincpu->set_input_line(m_ethernet_irq_num, assert ? ASSERT_LINE : CLEAR_LINE); } @@ -677,24 +440,22 @@ WRITE_LINE_MEMBER(seattle_state::ethernet_interrupt) update_widget_irq(); } - /************************************* - * - * I/O ASIC interrupts - * - *************************************/ +* +* I/O ASIC interrupts +* +*************************************/ WRITE_LINE_MEMBER(seattle_state::ioasic_irq) { m_maincpu->set_input_line(IOASIC_IRQ_NUM, state); } - /************************************* - * - * Configurable interrupts - * - *************************************/ +* +* Configurable interrupts +* +*************************************/ READ32_MEMBER(seattle_state::interrupt_state_r) { @@ -713,17 +474,22 @@ READ32_MEMBER(seattle_state::interrupt_state2_r) } +READ32_MEMBER(seattle_state::interrupt_config_r) +{ + return m_interrupt_config; +} + WRITE32_MEMBER(seattle_state::interrupt_config_w) { int irq; - COMBINE_DATA(m_interrupt_config); + COMBINE_DATA(&m_interrupt_config); /* VBLANK: clear anything pending on the old IRQ */ if (m_vblank_irq_num != 0) m_maincpu->set_input_line(m_vblank_irq_num, CLEAR_LINE); /* VBLANK: compute the new IRQ vector */ - irq = (*m_interrupt_config >> (2*VBLANK_IRQ_SHIFT)) & 3; + irq = (m_interrupt_config >> (2 * VBLANK_IRQ_SHIFT)) & 3; m_vblank_irq_num = (irq != 0) ? (2 + irq) : 0; /* Widget board case */ @@ -734,7 +500,7 @@ WRITE32_MEMBER(seattle_state::interrupt_config_w) m_maincpu->set_input_line(m_widget.irq_num, CLEAR_LINE); /* Widget: compute the new IRQ vector */ - irq = (*m_interrupt_config >> (2*WIDGET_IRQ_SHIFT)) & 3; + irq = (m_interrupt_config >> (2 * WIDGET_IRQ_SHIFT)) & 3; m_widget.irq_num = (irq != 0) ? (2 + irq) : 0; } @@ -746,7 +512,7 @@ WRITE32_MEMBER(seattle_state::interrupt_config_w) m_maincpu->set_input_line(m_ethernet_irq_num, CLEAR_LINE); /* Ethernet: compute the new IRQ vector */ - irq = (*m_interrupt_config >> (2*ETHERNET_IRQ_SHIFT)) & 3; + irq = (m_interrupt_config >> (2 * ETHERNET_IRQ_SHIFT)) & 3; m_ethernet_irq_num = (irq != 0) ? (2 + irq) : 0; } @@ -756,26 +522,30 @@ WRITE32_MEMBER(seattle_state::interrupt_config_w) } +READ32_MEMBER(seattle_state::seattle_interrupt_enable_r) +{ + return m_interrupt_enable; +} + WRITE32_MEMBER(seattle_state::seattle_interrupt_enable_w) { - uint32_t old = *m_interrupt_enable; - COMBINE_DATA(m_interrupt_enable); - if (old != *m_interrupt_enable) + uint32_t old = m_interrupt_enable; + COMBINE_DATA(&m_interrupt_enable); + if (old != m_interrupt_enable) { if (m_vblank_latch) update_vblank_irq(); if (m_ethernet_irq_state) ethernet_interrupt(m_ethernet_irq_state); + //logerror("seattle_state::seattle_interrupt_enable_w = %08X m_interrupt_config=%08X\n", m_interrupt_enable, m_interrupt_config); } } - - /************************************* - * - * VBLANK interrupts - * - *************************************/ +* +* VBLANK interrupts +* +*************************************/ void seattle_state::update_vblank_irq() { @@ -786,9 +556,11 @@ void seattle_state::update_vblank_irq() return; /* if the VBLANK has been latched, and the interrupt is enabled, assert */ - if (m_vblank_latch && (*m_interrupt_enable & (1 << VBLANK_IRQ_SHIFT))) + if (m_vblank_latch && (m_interrupt_enable & (1 << VBLANK_IRQ_SHIFT))) { state = ASSERT_LINE; + } m_maincpu->set_input_line(m_vblank_irq_num, state); + //logerror("seattle_state::update_vblank_irq(%i)\n", state); } @@ -806,650 +578,17 @@ WRITE_LINE_MEMBER(seattle_state::vblank_assert) m_vblank_state = state; /* latch on the correct polarity transition */ - if ((state && !(*m_interrupt_enable & 0x100)) || (!state && (*m_interrupt_enable & 0x100))) + if ((state && !(m_interrupt_enable & 0x100)) || (!state && (m_interrupt_enable & 0x100))) { m_vblank_latch = 1; update_vblank_irq(); } } - - - -/************************************* - * - * PCI bridge accesses - * - *************************************/ - -uint32_t seattle_state::pci_bridge_r(address_space &space, uint8_t reg, uint8_t type) -{ - uint32_t result = m_galileo.pci_bridge_regs[reg]; - - switch (reg) - { - case 0x00: /* ID register: 0x0146 = GT64010, 0x11ab = Galileo */ - result = 0x014611ab; - break; - - case 0x02: /* Base Class:Sub Class:Reserved:Revision */ - result = 0x06000003; - break; - } - - if (LOG_PCI) - logerror("%08X:PCI bridge read: reg %d type %d = %08X\n", space.device().safe_pc(), reg, type, result); - return result; -} - - -void seattle_state::pci_bridge_w(address_space &space, uint8_t reg, uint8_t type, uint32_t data) -{ - m_galileo.pci_bridge_regs[reg] = data; - if (LOG_PCI) - logerror("%08X:PCI bridge write: reg %d type %d = %08X\n", space.device().safe_pc(), reg, type, data); -} - - - -/************************************* - * - * PCI 3dfx accesses - * - *************************************/ - -uint32_t seattle_state::pci_3dfx_r(address_space &space, uint8_t reg, uint8_t type) -{ - uint32_t result = m_galileo.pci_3dfx_regs[reg]; - - switch (reg) - { - case 0x00: /* ID register: 0x0001 = SST-1, 0x121a = 3dfx */ - result = 0x0001121a; - break; - - case 0x02: /* Base Class:Sub Class:Reserved:Revision */ - result = 0x00000001; - break; - } - - if (LOG_PCI) - logerror("%08X:PCI 3dfx read: reg %d type %d = %08X\n", space.device().safe_pc(), reg, type, result); - return result; -} - - -void seattle_state::pci_3dfx_w(address_space &space, uint8_t reg, uint8_t type, uint32_t data) -{ - m_galileo.pci_3dfx_regs[reg] = data; - - switch (reg) - { - case 0x04: /* address register */ - m_galileo.pci_3dfx_regs[reg] &= 0xff000000; - if (data != 0x08000000) - logerror("3dfx not mapped where we expect it! (%08X)\n", data); - break; - - case 0x10: /* initEnable register */ - m_voodoo->voodoo_set_init_enable(data); - break; - } - if (LOG_PCI) - logerror("%08X:PCI 3dfx write: reg %d type %d = %08X\n", space.device().safe_pc(), reg, type, data); -} - - - /************************************* - * - * PCI IDE accesses - * - *************************************/ - -uint32_t seattle_state::pci_ide_r(address_space &space, uint8_t reg, uint8_t type) -{ - uint32_t result = m_galileo.pci_ide_regs[reg]; - - switch (reg) - { - case 0x00: /* ID register: 0x0002 = PC87415, 0x100b = National Semiconductor */ - result = 0x0002100b; - break; - - case 0x02: /* Base Class:Sub Class:Reserved:Revision */ - result = 0x01010001; - break; - } - - if (LOG_PCI) - logerror("%08X:PCI IDE read: reg %d type %d = %08X\n", space.device().safe_pc(), reg, type, result); - return result; -} - - -void seattle_state::pci_ide_w(address_space &space, uint8_t reg, uint8_t type, uint32_t data) -{ - m_galileo.pci_ide_regs[reg] = data; - if (LOG_PCI) - logerror("%08X:PCI bridge write: reg %d type %d = %08X\n", space.device().safe_pc(), reg, type, data); -} - - - -/************************************* - * - * Galileo timers & interrupts - * - *************************************/ - -void seattle_state::update_galileo_irqs() -{ - int state = CLEAR_LINE; - - /* if any unmasked interrupts are live, we generate */ - if (m_galileo.reg[GREG_INT_STATE] & m_galileo.reg[GREG_INT_MASK]) - state = ASSERT_LINE; - m_maincpu->set_input_line(GALILEO_IRQ_NUM, state); - - if (LOG_GALILEO) - logerror("Galileo IRQ %s\n", (state == ASSERT_LINE) ? "asserted" : "cleared"); -} - - -TIMER_CALLBACK_MEMBER(seattle_state::galileo_timer_callback) -{ - int which = param; - galileo_timer *timer = &m_galileo.timer[which]; - - if (LOG_TIMERS) - logerror("timer %d fired\n", which); - - /* copy the start value from the registers */ - timer->count = m_galileo.reg[GREG_TIMER0_COUNT + which]; - if (which != 0) - timer->count &= 0xffffff; - - /* if we're a timer, adjust the timer to fire again */ - if (m_galileo.reg[GREG_TIMER_CONTROL] & (2 << (2 * which))) - timer->timer->adjust(TIMER_PERIOD * timer->count, which); - else - timer->active = timer->count = 0; - - /* trigger the interrupt */ - m_galileo.reg[GREG_INT_STATE] |= 1 << (GINT_T0EXP_SHIFT + which); - update_galileo_irqs(); -} - - - -/************************************* - * - * Galileo DMA handler - * - *************************************/ - -int seattle_state::galileo_dma_fetch_next(address_space &space, int which) -{ - galileo_data &galileo = m_galileo; - offs_t address = 0; - uint32_t data; - - /* no-op for unchained mode */ - if (!(galileo.reg[GREG_DMA0_CONTROL + which] & 0x200)) - address = galileo.reg[GREG_DMA0_NEXT + which]; - - /* if we hit the end address, signal an interrupt */ - if (address == 0) - { - if (galileo.reg[GREG_DMA0_CONTROL + which] & 0x400) - { - galileo.reg[GREG_INT_STATE] |= 1 << (GINT_DMA0COMP_SHIFT + which); - update_galileo_irqs(); - } - galileo.reg[GREG_DMA0_CONTROL + which] &= ~0x5000; - return 0; - } - - /* fetch the byte count */ - data = space.read_dword(address); address += 4; - galileo.reg[GREG_DMA0_COUNT + which] = data; - - /* fetch the source address */ - data = space.read_dword(address); address += 4; - galileo.reg[GREG_DMA0_SOURCE + which] = data; - - /* fetch the dest address */ - data = space.read_dword(address); address += 4; - galileo.reg[GREG_DMA0_DEST + which] = data; - - /* fetch the next record address */ - data = space.read_dword(address); address += 4; - galileo.reg[GREG_DMA0_NEXT + which] = data; - return 1; -} - - -void seattle_state::galileo_perform_dma(address_space &space, int which) -{ - galileo_data &galileo = m_galileo; - do - { - offs_t srcaddr = galileo.reg[GREG_DMA0_SOURCE + which]; - offs_t dstaddr = galileo.reg[GREG_DMA0_DEST + which]; - uint32_t bytesleft = galileo.reg[GREG_DMA0_COUNT + which] & 0xffff; - int srcinc, dstinc; - - galileo.dma_active = which; - galileo.reg[GREG_DMA0_CONTROL + which] |= 0x5000; - - /* determine src/dst inc */ - switch ((galileo.reg[GREG_DMA0_CONTROL + which] >> 2) & 3) - { - default: - case 0: srcinc = 1; break; - case 1: srcinc = -1; break; - case 2: srcinc = 0; break; - } - switch ((galileo.reg[GREG_DMA0_CONTROL + which] >> 4) & 3) - { - default: - case 0: dstinc = 1; break; - case 1: dstinc = -1; break; - case 2: dstinc = 0; break; - } - - if (LOG_DMA) - logerror("Performing DMA%d: src=%08X dst=%08X bytes=%04X sinc=%d dinc=%d\n", which, srcaddr, dstaddr, bytesleft, srcinc, dstinc); - - /* special case: transfer to voodoo */ - if (dstaddr >= 0x08000000 && dstaddr < 0x09000000) - { - if (bytesleft % 4 != 0) - fatalerror("Galileo DMA to voodoo: bytesleft = %d\n", bytesleft); - srcinc *= 4; - dstinc *= 4; - - /* transfer data */ - while (bytesleft >= 4) - { - /* if the voodoo is stalled, stop early */ - if (m_voodoo_stalled) - { - if (LOG_DMA) - logerror("Stalled on voodoo with %d bytes left\n", bytesleft); - break; - } - - /* write the data and advance */ - m_voodoo->voodoo_w(space, (dstaddr & 0xffffff) / 4, space.read_dword(srcaddr), 0xffffffff); - srcaddr += srcinc; - dstaddr += dstinc; - bytesleft -= 4; - } - } - - /* standard transfer */ - else - { - while (bytesleft > 0) - { - space.write_byte(dstaddr, space.read_byte(srcaddr)); - srcaddr += srcinc; - dstaddr += dstinc; - bytesleft--; - } - } - - /* not verified, but seems logical these should be updated byte the end */ - galileo.reg[GREG_DMA0_SOURCE + which] = srcaddr; - galileo.reg[GREG_DMA0_DEST + which] = dstaddr; - galileo.reg[GREG_DMA0_COUNT + which] = (galileo.reg[GREG_DMA0_COUNT + which] & ~0xffff) | bytesleft; - galileo.dma_active = -1; - - /* if we did not hit zero, punt and return later */ - if (bytesleft != 0) - return; - - /* interrupt? */ - if (!(galileo.reg[GREG_DMA0_CONTROL + which] & 0x400)) - { - galileo.reg[GREG_INT_STATE] |= 1 << (GINT_DMA0COMP_SHIFT + which); - update_galileo_irqs(); - } - } while (galileo_dma_fetch_next(space, which)); - - galileo.reg[GREG_DMA0_CONTROL + which] &= ~0x5000; -} - - - -/************************************* - * - * Galileo system controller - * - *************************************/ - -void seattle_state::galileo_reset() -{ - memset(&m_galileo.reg, 0, sizeof(m_galileo.reg)); -} - - -READ32_MEMBER(seattle_state::galileo_r) -{ - galileo_data &galileo = m_galileo; - uint32_t result = galileo.reg[offset]; - - /* switch off the offset for special cases */ - switch (offset) - { - case GREG_TIMER0_COUNT: - case GREG_TIMER1_COUNT: - case GREG_TIMER2_COUNT: - case GREG_TIMER3_COUNT: - { - int which = offset % 4; - galileo_timer *timer = &galileo.timer[which]; - - result = timer->count; - if (timer->active) - { - uint32_t elapsed = (timer->timer->elapsed() * SYSTEM_CLOCK).as_double(); - result = (result > elapsed) ? (result - elapsed) : 0; - } - - /* eat some time for those which poll this register */ - space.device().execute().eat_cycles(100); - - if (LOG_TIMERS) - logerror("%08X:hires_timer_r = %08X\n", space.device().safe_pc(), result); - break; - } - - case GREG_PCI_COMMAND: - // code at 40188 loops until this returns non-zero in bit 0 - result = 0x0001; - break; - - case GREG_CONFIG_DATA: - { - int bus = (galileo.reg[GREG_CONFIG_ADDRESS] >> 16) & 0xff; - int unit = (galileo.reg[GREG_CONFIG_ADDRESS] >> 11) & 0x1f; - int func = (galileo.reg[GREG_CONFIG_ADDRESS] >> 8) & 7; - int reg = (galileo.reg[GREG_CONFIG_ADDRESS] >> 2) & 0x3f; - int type = galileo.reg[GREG_CONFIG_ADDRESS] & 3; - - /* unit 0 is the PCI bridge */ - if (unit == 0 && func == 0) - result = pci_bridge_r(space, reg, type); - - /* unit 8 is the 3dfx card */ - else if (unit == 8 && func == 0) - result = pci_3dfx_r(space, reg, type); - - /* unit 9 is the IDE controller */ - else if (unit == 9 && func == 0) - result = pci_ide_r(space, reg, type); - - /* anything else, just log */ - else - { - result = ~0; - logerror("%08X:PCIBus read: bus %d unit %d func %d reg %d type %d = %08X\n", space.device().safe_pc(), bus, unit, func, reg, type, result); - } - break; - } - - case GREG_CONFIG_ADDRESS: - case GREG_INT_STATE: - case GREG_INT_MASK: - case GREG_TIMER_CONTROL: -// if (LOG_GALILEO) -// logerror("%08X:Galileo read from offset %03X = %08X\n", space.device().safe_pc(), offset*4, result); - break; - - default: - logerror("%08X:Galileo read from offset %03X = %08X\n", space.device().safe_pc(), offset*4, result); - break; - } - - return result; -} - - -WRITE32_MEMBER(seattle_state::galileo_w) -{ - galileo_data &galileo = m_galileo; - uint32_t oldata = galileo.reg[offset]; - COMBINE_DATA(&galileo.reg[offset]); - - /* switch off the offset for special cases */ - switch (offset) - { - case GREG_DMA0_CONTROL: - case GREG_DMA1_CONTROL: - case GREG_DMA2_CONTROL: - case GREG_DMA3_CONTROL: - { - int which = offset % 4; - - if (LOG_DMA) - logerror("%08X:Galileo write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask); - - /* keep the read only activity bit */ - galileo.reg[offset] &= ~0x4000; - galileo.reg[offset] |= (oldata & 0x4000); - - /* fetch next record */ - if (data & 0x2000) - galileo_dma_fetch_next(space, which); - galileo.reg[offset] &= ~0x2000; - - /* if enabling, start the DMA */ - if (!(oldata & 0x1000) && (data & 0x1000)) - galileo_perform_dma(space, which); - break; - } - - case GREG_TIMER0_COUNT: - case GREG_TIMER1_COUNT: - case GREG_TIMER2_COUNT: - case GREG_TIMER3_COUNT: - { - int which = offset % 4; - galileo_timer *timer = &galileo.timer[which]; - - if (which != 0) - data &= 0xffffff; - if (!timer->active) - timer->count = data; - if (LOG_TIMERS) - logerror("%08X:timer/counter %d count = %08X [start=%08X]\n", space.device().safe_pc(), offset % 4, data, timer->count); - break; - } - - case GREG_TIMER_CONTROL: - { - int which, mask; - - if (LOG_TIMERS) - logerror("%08X:timer/counter control = %08X\n", space.device().safe_pc(), data); - for (which = 0, mask = 0x01; which < 4; which++, mask <<= 2) - { - galileo_timer *timer = &galileo.timer[which]; - if (!timer->active && (data & mask)) - { - timer->active = 1; - if (timer->count == 0) - { - timer->count = galileo.reg[GREG_TIMER0_COUNT + which]; - if (which != 0) - timer->count &= 0xffffff; - } - timer->timer->adjust(TIMER_PERIOD * timer->count, which); - if (LOG_TIMERS) - logerror("Adjusted timer to fire in %f secs\n", (TIMER_PERIOD * timer->count).as_double()); - } - else if (timer->active && !(data & mask)) - { - uint32_t elapsed = (timer->timer->elapsed() * SYSTEM_CLOCK).as_double(); - timer->active = 0; - timer->count = (timer->count > elapsed) ? (timer->count - elapsed) : 0; - timer->timer->adjust(attotime::never, which); - if (LOG_TIMERS) - logerror("Disabled timer\n"); - } - } - break; - } - - case GREG_INT_STATE: - if (LOG_GALILEO) - logerror("%08X:Galileo write to IRQ clear = %08X & %08X\n", offset*4, data, mem_mask); - galileo.reg[offset] = oldata & data; - update_galileo_irqs(); - break; - - case GREG_CONFIG_DATA: - { - int bus = (galileo.reg[GREG_CONFIG_ADDRESS] >> 16) & 0xff; - int unit = (galileo.reg[GREG_CONFIG_ADDRESS] >> 11) & 0x1f; - int func = (galileo.reg[GREG_CONFIG_ADDRESS] >> 8) & 7; - int reg = (galileo.reg[GREG_CONFIG_ADDRESS] >> 2) & 0x3f; - int type = galileo.reg[GREG_CONFIG_ADDRESS] & 3; - - /* unit 0 is the PCI bridge */ - if (unit == 0 && func == 0) - pci_bridge_w(space, reg, type, data); - - /* unit 8 is the 3dfx card */ - else if (unit == 8 && func == 0) - pci_3dfx_w(space, reg, type, data); - - /* unit 9 is the IDE controller */ - else if (unit == 9 && func == 0) - pci_ide_w(space, reg, type, data); - - /* anything else, just log */ - else - logerror("%08X:PCIBus write: bus %d unit %d func %d reg %d type %d = %08X\n", space.device().safe_pc(), bus, unit, func, reg, type, data); - break; - } - - case GREG_DMA0_COUNT: case GREG_DMA1_COUNT: case GREG_DMA2_COUNT: case GREG_DMA3_COUNT: - case GREG_DMA0_SOURCE: case GREG_DMA1_SOURCE: case GREG_DMA2_SOURCE: case GREG_DMA3_SOURCE: - case GREG_DMA0_DEST: case GREG_DMA1_DEST: case GREG_DMA2_DEST: case GREG_DMA3_DEST: - case GREG_DMA0_NEXT: case GREG_DMA1_NEXT: case GREG_DMA2_NEXT: case GREG_DMA3_NEXT: - case GREG_CONFIG_ADDRESS: - case GREG_INT_MASK: - if (LOG_GALILEO) - logerror("%08X:Galileo write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask); - break; - - default: - logerror("%08X:Galileo write to offset %03X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask); - break; - } -} - - - -/************************************* - * - * Voodoo handling - * - *************************************/ - -WRITE32_MEMBER(seattle_state::seattle_voodoo_w) -{ - /* if we're not stalled, just write and get out */ - if (!m_voodoo_stalled) - { - m_voodoo->voodoo_w(space, offset, data, mem_mask); - return; - } - - /* shouldn't get here if the CPU is already stalled */ - if (m_cpu_stalled_on_voodoo) - fatalerror("seattle_voodoo_w while CPU is stalled\n"); - - /* remember all the info about this access for later */ - m_cpu_stalled_on_voodoo = true; - m_cpu_stalled_offset = offset; - m_cpu_stalled_data = data; - m_cpu_stalled_mem_mask = mem_mask; - - /* spin until we send the magic trigger */ - space.device().execute().spin_until_trigger(45678); - if (LOG_DMA) logerror("%08X:Stalling CPU on voodoo (already stalled)\n", space.device().safe_pc()); -} - - -WRITE_LINE_MEMBER(seattle_state::voodoo_stall) -{ - /* set the new state */ - m_voodoo_stalled = state; - - /* if we're stalling and DMA is active, take note */ - if (state) - { - if (m_galileo.dma_active != -1) - { - if (LOG_DMA) logerror("Stalling DMA%d on voodoo\n", m_galileo.dma_active); - m_galileo.dma_stalled_on_voodoo[m_galileo.dma_active] = true; - } - else - { - if (LOG_DMA) logerror("%08X:Stalling CPU on voodoo\n", m_maincpu->pc()); - m_maincpu->spin_until_trigger(45678); - } - } - - /* if we're unstalling, resume DMA or allow the CPU to proceed */ - else - { - int which; - - /* loop over any active DMAs and resume them */ - for (which = 0; which < 4; which++) - if (m_galileo.dma_stalled_on_voodoo[which]) - { - address_space &space = m_maincpu->space(AS_PROGRAM); - if (LOG_DMA) logerror("Resuming DMA%d on voodoo\n", which); - - /* mark this DMA as no longer stalled */ - m_galileo.dma_stalled_on_voodoo[which] = false; - - /* resume execution */ - galileo_perform_dma(space, which); - break; - } - - /* if we finished all our pending DMAs, then we can resume CPU operations */ - if (!m_voodoo_stalled) - { - /* if the CPU had a pending write, do it now */ - if (m_cpu_stalled_on_voodoo) - { - address_space &space = m_maincpu->space(AS_PROGRAM); - m_voodoo->voodoo_w(space, m_cpu_stalled_offset, m_cpu_stalled_data, m_cpu_stalled_mem_mask); - } - m_cpu_stalled_on_voodoo = false; - - /* resume CPU execution */ - if (LOG_DMA) logerror("Resuming CPU on voodoo\n"); - machine().scheduler().trigger(45678); - } - } -} - - - -/************************************* - * - * Analog input handling (ADC0848) - * - *************************************/ +* +* Analog input handling (ADC0848) +* +*************************************/ READ32_MEMBER(seattle_state::analog_port_r) { @@ -1466,13 +605,11 @@ WRITE32_MEMBER(seattle_state::analog_port_w) m_pending_analog_read = ioport(portnames[data & 7])->read(); } - - /************************************* - * - * CarnEvil gun handling - * - *************************************/ +* +* CarnEvil gun handling +* +*************************************/ READ32_MEMBER(seattle_state::carnevil_gun_r) { @@ -1525,13 +662,11 @@ WRITE32_MEMBER(seattle_state::carnevil_gun_w) logerror("carnevil_gun_w(%d) = %02X\n", offset, data); } - - /************************************* - * - * Ethernet access - * - *************************************/ +* +* Ethernet access +* +*************************************/ READ32_MEMBER(seattle_state::ethernet_r) { @@ -1550,13 +685,11 @@ WRITE32_MEMBER(seattle_state::ethernet_w) m_ethernet->write(space, offset & 7, data & 0x00ff, mem_mask | 0x00ff); } - - /************************************* - * - * Widget board access - * - *************************************/ +* +* Widget board access +* +*************************************/ void seattle_state::widget_reset() { @@ -1570,7 +703,7 @@ void seattle_state::update_widget_irq() { uint8_t state = m_ethernet_irq_state << WINT_ETHERNET_SHIFT; uint8_t mask = m_widget.irq_mask; - uint8_t assert = ((mask & state) != 0) && (*m_interrupt_enable & (1 << WIDGET_IRQ_SHIFT)); + uint8_t assert = ((mask & state) != 0) && (m_interrupt_enable & (1 << WIDGET_IRQ_SHIFT)); /* update the IRQ state */ if (m_widget.irq_num != 0) @@ -1702,24 +835,23 @@ WRITE32_MEMBER(seattle_state::widget_w) } - /************************************* - * - * CMOS access - * - *************************************/ +* +* CMOS access +* +*************************************/ WRITE32_MEMBER(seattle_state::cmos_w) { if (m_cmos_write_enabled) - COMBINE_DATA(m_nvram + offset); + COMBINE_DATA(&m_nvram_data[offset]); m_cmos_write_enabled = false; } READ32_MEMBER(seattle_state::cmos_r) { - return m_nvram[offset]; + return m_nvram_data[offset]; } @@ -1737,21 +869,25 @@ READ32_MEMBER(seattle_state::cmos_protect_r) /************************************* - * - * Misc accesses - * - *************************************/ +* +* Misc accesses +* +*************************************/ WRITE32_MEMBER(seattle_state::seattle_watchdog_w) { space.device().execute().eat_cycles(100); } +READ32_MEMBER(seattle_state::asic_reset_r) +{ + return m_asic_reset; +} WRITE32_MEMBER(seattle_state::asic_reset_w) { - COMBINE_DATA(m_asic_reset); - if (!(*m_asic_reset & 0x0002)) + COMBINE_DATA(&m_asic_reset); + if (!(m_asic_reset & 0x0002)) m_ioasic->ioasic_reset(); } @@ -1774,13 +910,11 @@ WRITE32_MEMBER(seattle_state::status_leds_w) m_status_leds = data; } - - /************************************* - * - * Memory maps - * - *************************************/ +* +* Memory maps +* +*************************************/ /* @@ -1853,41 +987,50 @@ PCI Mem = 08000000-09FFFFFF */ -READ32_MEMBER(seattle_state::seattle_ide_r) -{ - /* note that blitz times out if we don't have this cycle stealing */ - if (offset == 6/4) - m_maincpu->eat_cycles(100); - return m_ide->read_cs1(space, offset, mem_mask); -} +static ADDRESS_MAP_START(seattle_cs0_map, AS_PROGRAM, 32, seattle_state) +ADDRESS_MAP_END + +static ADDRESS_MAP_START(seattle_cs1_map, AS_PROGRAM, 32, seattle_state) + AM_RANGE(0x01000000, 0x01000003) AM_WRITE(asic_fifo_w) +ADDRESS_MAP_END -static ADDRESS_MAP_START( seattle_map, AS_PROGRAM, 32, seattle_state ) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("rambase") // wg3dh only has 4MB; sfrush, blitz99 8MB - AM_RANGE(0x08000000, 0x08ffffff) AM_DEVREAD("voodoo", voodoo_device, voodoo_r) AM_WRITE(seattle_voodoo_w) - AM_RANGE(0x0a0001f0, 0x0a0001f7) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, read_cs0, write_cs0) - AM_RANGE(0x0a0003f0, 0x0a0003f7) AM_READ(seattle_ide_r) AM_DEVWRITE("ide", bus_master_ide_controller_device, write_cs1) - AM_RANGE(0x0a00040c, 0x0a00040f) AM_NOP // IDE-related, but annoying - AM_RANGE(0x0a000f00, 0x0a000f07) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, bmdma_r, bmdma_w) - AM_RANGE(0x0c000000, 0x0c000fff) AM_READWRITE(galileo_r, galileo_w) - AM_RANGE(0x13000000, 0x13000003) AM_WRITE(asic_fifo_w) - AM_RANGE(0x16000000, 0x1600003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) - AM_RANGE(0x16100000, 0x1611ffff) AM_READWRITE(cmos_r, cmos_w) AM_SHARE("nvram") - AM_RANGE(0x17000000, 0x17000003) AM_READWRITE(cmos_protect_r, cmos_protect_w) - AM_RANGE(0x17100000, 0x17100003) AM_WRITE(seattle_watchdog_w) - AM_RANGE(0x17300000, 0x17300003) AM_RAM_WRITE(seattle_interrupt_enable_w) AM_SHARE("int_enable") - AM_RANGE(0x17400000, 0x17400003) AM_RAM_WRITE(interrupt_config_w) AM_SHARE("int_config") - AM_RANGE(0x17500000, 0x17500003) AM_READ(interrupt_state_r) - AM_RANGE(0x17600000, 0x17600003) AM_READ(interrupt_state2_r) - AM_RANGE(0x17700000, 0x17700003) AM_WRITE(vblank_clear_w) - AM_RANGE(0x17800000, 0x17800003) AM_NOP - AM_RANGE(0x17900000, 0x17900003) AM_READWRITE(status_leds_r, status_leds_w) - AM_RANGE(0x17f00000, 0x17f00003) AM_RAM_WRITE(asic_reset_w) AM_SHARE("asic_reset") - AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("rombase") - AM_RANGE(0x1fd00000, 0x1fdfffff) AM_ROM AM_REGION("update", 0) +static ADDRESS_MAP_START(seattle_cs2_map, AS_PROGRAM, 32, seattle_state) + AM_RANGE(0x00000000, 0x00000003) AM_READWRITE(analog_port_r, analog_port_w) // Flagstaff only ADDRESS_MAP_END +// This map shares the PHOENIX, SEATTLE, and SEATTLE_WIDGET calls +static ADDRESS_MAP_START(seattle_cs3_map, AS_PROGRAM, 32, seattle_state) + AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) + AM_RANGE(0x00100000, 0x0011ffff) AM_READWRITE(cmos_r, cmos_w) + AM_RANGE(0x00800000, 0x0080001f) AM_READWRITE(carnevil_gun_r, carnevil_gun_w) // Carnevil driver only + AM_RANGE(0x00c00000, 0x00c0001f) AM_READWRITE(widget_r, widget_w); // Seattle widget only + AM_RANGE(0x01000000, 0x01000003) AM_READWRITE(cmos_protect_r, cmos_protect_w) + AM_RANGE(0x01100000, 0x01100003) AM_WRITE(seattle_watchdog_w) + AM_RANGE(0x01300000, 0x01300003) AM_READWRITE(seattle_interrupt_enable_r, seattle_interrupt_enable_w) + AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(interrupt_config_r, interrupt_config_w) + AM_RANGE(0x01500000, 0x01500003) AM_READ(interrupt_state_r) + AM_RANGE(0x01600000, 0x01600003) AM_READ(interrupt_state2_r) + AM_RANGE(0x01700000, 0x01700003) AM_WRITE(vblank_clear_w) + AM_RANGE(0x01800000, 0x01800003) AM_NOP + AM_RANGE(0x01900000, 0x01900003) AM_READWRITE(status_leds_r, status_leds_w) + AM_RANGE(0x01f00000, 0x01f00003) AM_READWRITE(asic_reset_r, asic_reset_w) +ADDRESS_MAP_END +static ADDRESS_MAP_START(seattle_flagstaff_cs3_map, AS_PROGRAM, 32, seattle_state) + AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) + AM_RANGE(0x00100000, 0x0011ffff) AM_READWRITE(cmos_r, cmos_w) + AM_RANGE(0x00c00000, 0x00c0003f) AM_READWRITE(ethernet_r, ethernet_w); + AM_RANGE(0x01000000, 0x01000003) AM_READWRITE(cmos_protect_r, cmos_protect_w) + AM_RANGE(0x01100000, 0x01100003) AM_WRITE(seattle_watchdog_w) + AM_RANGE(0x01300000, 0x01300003) AM_READWRITE(seattle_interrupt_enable_r, seattle_interrupt_enable_w) + AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(interrupt_config_r, interrupt_config_w) + AM_RANGE(0x01500000, 0x01500003) AM_READ(interrupt_state_r) + AM_RANGE(0x01600000, 0x01600003) AM_READ(interrupt_state2_r) + AM_RANGE(0x01700000, 0x01700003) AM_WRITE(vblank_clear_w) + AM_RANGE(0x01800000, 0x01800003) AM_NOP + AM_RANGE(0x01900000, 0x01900003) AM_READWRITE(status_leds_r, status_leds_w) + AM_RANGE(0x01f00000, 0x01f00003) AM_READWRITE(asic_reset_r, asic_reset_w) +ADDRESS_MAP_END /************************************* * @@ -2588,36 +1731,48 @@ INPUT_PORTS_END * Machine drivers * *************************************/ +#define PCI_ID_GALILEO ":pci:00.0" +#define PCI_ID_VIDEO ":pci:08.0" +#define PCI_ID_IDE ":pci:09.0" -static MACHINE_CONFIG_START( seattle_common, seattle_state ) +static MACHINE_CONFIG_START( seattle_common ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R5000LE, SYSTEM_CLOCK*3) MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) MCFG_MIPS3_SYSTEM_CLOCK(SYSTEM_CLOCK) - MCFG_CPU_PROGRAM_MAP(seattle_map) - MCFG_NVRAM_ADD_1FILL("nvram") + // PCI Bus Devices + MCFG_PCI_ROOT_ADD(":pci") + + MCFG_GT64010_ADD(PCI_ID_GALILEO, ":maincpu", SYSTEM_CLOCK, GALILEO_IRQ_NUM) + MCFG_GT64XXX_SET_CS(0, seattle_cs0_map) + MCFG_GT64XXX_SET_CS(1, seattle_cs1_map) + MCFG_GT64XXX_SET_CS(2, seattle_cs2_map) + MCFG_GT64XXX_SET_CS(3, seattle_cs3_map) + MCFG_GT64XX_SET_SIMM0(0x00800000) + + MCFG_IDE_PCI_ADD(PCI_ID_IDE, 0x100b0002, 0x01, 0x0) + MCFG_IDE_PCI_IRQ_ADD(":maincpu", IDE_IRQ_NUM) + MCFG_IDE_PCI_SET_LEGACY_TOP(0x0a0) - MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", nullptr, true) - MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(seattle_state, ide_interrupt)) - MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE("maincpu", AS_PROGRAM) + MCFG_VOODOO_PCI_ADD(PCI_ID_VIDEO, TYPE_VOODOO_1, ":maincpu") + MCFG_VOODOO_PCI_FBMEM(2) + MCFG_VOODOO_PCI_TMUMEM(4, 0) + MCFG_DEVICE_MODIFY(PCI_ID_VIDEO":voodoo") + MCFG_VOODOO_VBLANK_CB(DEVWRITELINE(":", seattle_state, vblank_assert)) + MCFG_VOODOO_STALL_CB(DEVWRITELINE(PCI_ID_GALILEO, gt64xxx_device, pci_stall)) - MCFG_DEVICE_ADD("voodoo", VOODOO_1, STD_VOODOO_1_CLOCK) - MCFG_VOODOO_FBMEM(2) - MCFG_VOODOO_TMUMEM(4,0) - MCFG_VOODOO_SCREEN_TAG("screen") - MCFG_VOODOO_CPU_TAG("maincpu") - MCFG_VOODOO_VBLANK_CB(WRITELINE(seattle_state,vblank_assert)) - MCFG_VOODOO_STALL_CB(WRITELINE(seattle_state,voodoo_stall)) + + MCFG_NVRAM_ADD_1FILL("nvram") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(57) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479) - MCFG_SCREEN_UPDATE_DRIVER(seattle_state, screen_update_seattle) + MCFG_SCREEN_UPDATE_DEVICE(PCI_ID_VIDEO, voodoo_pci_device, screen_update) /* sound hardware */ MACHINE_CONFIG_END @@ -2627,7 +1782,10 @@ static MACHINE_CONFIG_DERIVED( phoenixsa, seattle_common ) MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) MCFG_MIPS3_SYSTEM_CLOCK(SYSTEM_CLOCK) - MCFG_CPU_PROGRAM_MAP(seattle_map) + + MCFG_DEVICE_MODIFY(PCI_ID_GALILEO) + MCFG_GT64XX_SET_SIMM0(0x00200000) + MCFG_GT64XX_SET_SIMM1(0x00200000) MACHINE_CONFIG_END @@ -2636,7 +1794,6 @@ static MACHINE_CONFIG_DERIVED( seattle150, seattle_common ) MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) MCFG_MIPS3_SYSTEM_CLOCK(SYSTEM_CLOCK) - MCFG_CPU_PROGRAM_MAP(seattle_map) MACHINE_CONFIG_END @@ -2651,7 +1808,6 @@ static MACHINE_CONFIG_DERIVED( seattle200, seattle_common ) MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) MCFG_MIPS3_SYSTEM_CLOCK(SYSTEM_CLOCK) - MCFG_CPU_PROGRAM_MAP(seattle_map) MACHINE_CONFIG_END @@ -2665,19 +1821,16 @@ static MACHINE_CONFIG_DERIVED( flagstaff, seattle_common ) MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) MCFG_MIPS3_SYSTEM_CLOCK(SYSTEM_CLOCK) - MCFG_CPU_PROGRAM_MAP(seattle_map) + + MCFG_DEVICE_MODIFY(PCI_ID_GALILEO) + MCFG_GT64XXX_SET_CS(3, seattle_flagstaff_cs3_map) MCFG_SMC91C94_ADD("ethernet") MCFG_SMC91C94_IRQ_CALLBACK(WRITELINE(seattle_state, ethernet_interrupt)) - MCFG_DEVICE_REMOVE("voodoo") - MCFG_DEVICE_ADD("voodoo", VOODOO_1, STD_VOODOO_1_CLOCK) - MCFG_VOODOO_FBMEM(2) - MCFG_VOODOO_TMUMEM(4,4) - MCFG_VOODOO_SCREEN_TAG("screen") - MCFG_VOODOO_CPU_TAG("maincpu") - MCFG_VOODOO_VBLANK_CB(WRITELINE(seattle_state,vblank_assert)) - MCFG_VOODOO_STALL_CB(WRITELINE(seattle_state,voodoo_stall)) + MCFG_DEVICE_MODIFY(PCI_ID_VIDEO) + MCFG_VOODOO_PCI_FBMEM(2) + MCFG_VOODOO_PCI_TMUMEM(4, 4) MACHINE_CONFIG_END // Per game configurations @@ -2840,12 +1993,12 @@ MACHINE_CONFIG_END *************************************/ ROM_START( wg3dh ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version L1.2 (10/8/96) */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version L1.2 (10/8/96) */ ROM_LOAD( "wg3dh_12.u32", 0x000000, 0x80000, CRC(15e4cea2) SHA1(72c0db7dc53ce645ba27a5311b5ce803ad39f131) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.3 (Guts 10/15/96, Main 10/15/96) */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.3 (Guts 10/15/96, Main 10/15/96) */ DISK_IMAGE( "wg3dh", 0, SHA1(4fc6f25d7f043d9bcf8743aa8df1d9be3cbc375b) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version L1.1 */ @@ -2854,12 +2007,12 @@ ROM_END ROM_START( mace ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.0ce 7/2/97 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.0ce 7/2/97 */ ROM_LOAD( "mace10ce.u32", 0x000000, 0x80000, CRC(7a50b37e) SHA1(33788835f84a9443566c80bee9f20a1691490c6d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.0B 6/10/97 (Guts 7/2/97, Main 7/2/97) */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.0B 6/10/97 (Guts 7/2/97, Main 7/2/97) */ DISK_IMAGE( "mace", 0, SHA1(96ec8d3ff5dd894e21aa81403bcdbeba44bb97ea) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version L1.1, Labeled as Version 1.0 */ @@ -2868,12 +2021,12 @@ ROM_END ROM_START( macea ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version ??? 5/7/97 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version ??? 5/7/97 */ ROM_LOAD( "maceboot.u32", 0x000000, 0x80000, CRC(effe3ebc) SHA1(7af3ca3580d6276ffa7ab8b4c57274e15ee6bcbb) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.0a (Guts 6/9/97, Main 5/12/97) */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.0a (Guts 6/9/97, Main 5/12/97) */ DISK_IMAGE( "macea", 0, BAD_DUMP SHA1(9bd4a60627915d71932cab24f89c48ea21f4c1cb) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version L1.1 */ @@ -2882,10 +2035,10 @@ ROM_END ROM_START( sfrush ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version L1.0 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version L1.0 */ ROM_LOAD( "hdboot.u32", 0x000000, 0x80000, CRC(39a35f1b) SHA1(c46d83448399205d38e6e41dd56abbc362254254) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) ROM_REGION32_LE( 0x200000, "cageboot", 0 ) /* TMS320C31 boot ROM Version L1.0 */ ROM_LOAD32_BYTE( "sndboot.u69", 0x000000, 0x080000, CRC(7e52cdc7) SHA1(f735063e19d2ca672cef6d761a2a47df272e8c59) ) @@ -2896,15 +2049,15 @@ ROM_START( sfrush ) ROM_LOAD32_WORD( "sfrush.u53", 0x800000, 0x200000, CRC(71f8ddb0) SHA1(c24bef801f43bae68fda043c4356e8cf1298ca97) ) ROM_LOAD32_WORD( "sfrush.u49", 0x800002, 0x200000, CRC(dfb0a54c) SHA1(ed34f9485f7a7e5bb73bf5c6428b27548e12db12) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version L1.06 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version L1.06 */ DISK_IMAGE( "sfrush", 0, SHA1(e2db0270a707fb2115207f988d5751081d6b4994) ) ROM_END ROM_START( sfrusha ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version L1.06A */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version L1.06A */ ROM_LOAD( "HDBOOTV1_06A.bin", 0x000000, 0x80000, CRC(f247ba60) SHA1(850f97002eb1e362c3df870d7b6a1b5524ab983d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) ROM_REGION32_LE( 0x200000, "cageboot", 0 ) /* TMS320C31 boot ROM Version L1.0 */ ROM_LOAD32_BYTE( "sndboot.u69", 0x000000, 0x080000, CRC(7e52cdc7) SHA1(f735063e19d2ca672cef6d761a2a47df272e8c59) ) @@ -2915,16 +2068,17 @@ ROM_START( sfrusha ) ROM_LOAD32_WORD( "sfrush.u53", 0x800000, 0x200000, CRC(71f8ddb0) SHA1(c24bef801f43bae68fda043c4356e8cf1298ca97) ) ROM_LOAD32_WORD( "sfrush.u49", 0x800002, 0x200000, CRC(dfb0a54c) SHA1(ed34f9485f7a7e5bb73bf5c6428b27548e12db12) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version L1.06 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version L1.06 */ DISK_IMAGE( "sfrush", 0, SHA1(e2db0270a707fb2115207f988d5751081d6b4994) ) ROM_END + ROM_START( sfrushrk ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code 1.0 Oct 2 1997*/ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code */ ROM_LOAD( "boot.bin", 0x000000, 0x080000, CRC(0555b3cf) SHA1(a48abd6d06a26f4f9b6c52d8c0af6095b6be57fd) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) ROM_REGION32_LE( 0x200000, "cageboot", 0 ) /* TMS320C31 boot ROM */ ROM_LOAD32_BYTE( "audboot.bin", 0x000000, 0x080000, CRC(c70c060d) SHA1(dd014bd13efdf5adc5450836bd4650351abefc46) ) @@ -2935,15 +2089,16 @@ ROM_START( sfrushrk ) ROM_LOAD32_WORD( "audio.u53", 0x800000, 0x200000, CRC(51c89a14) SHA1(6bc62bcda224040a4596d795132874828011a038) ) ROM_LOAD32_WORD( "audio.u49", 0x800002, 0x200000, CRC(e6b684d3) SHA1(1f5bab7fae974cecc8756dd23e3c7aa2cf6e7dc7) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.2 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.2 */ DISK_IMAGE( "sfrushrk", 0, SHA1(e763f26aca67ebc17fe8b8df4fba91d492cf7837) ) ROM_END + ROM_START( sfrushrkw ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code */ ROM_LOAD( "1ff6.bin", 0x000000, 0x080000, CRC(0b30f080) SHA1(2dfa14b927d1c185e6876b1bf464c117682331c9) ) // Hand written "Rush The Rock w/wavenet 1ff6 8/10/97" - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) ROM_REGION32_LE( 0x200000, "cageboot", 0 ) /* TMS320C31 boot ROM */ ROM_LOAD32_BYTE( "audboot.bin", 0x000000, 0x080000, CRC(c70c060d) SHA1(dd014bd13efdf5adc5450836bd4650351abefc46) ) @@ -2954,15 +2109,15 @@ ROM_START( sfrushrkw ) ROM_LOAD32_WORD( "audio.u53", 0x800000, 0x200000, CRC(51c89a14) SHA1(6bc62bcda224040a4596d795132874828011a038) ) ROM_LOAD32_WORD( "audio.u49", 0x800002, 0x200000, CRC(e6b684d3) SHA1(1f5bab7fae974cecc8756dd23e3c7aa2cf6e7dc7) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.2 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.2 */ DISK_IMAGE( "sfrushrk", 0, SHA1(e763f26aca67ebc17fe8b8df4fba91d492cf7837) ) ROM_END ROM_START( sfrushrkwo ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code */ ROM_LOAD( "boottest.bin", 0x000000, 0x080000, CRC(3f83f8e0) SHA1(c1862fc35c119586f79f23c52ecea6c35c37828a) ) // Labeled "Rush The Rock Boot Eeprom Test Only" - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) ROM_REGION32_LE( 0x200000, "cageboot", 0 ) /* TMS320C31 boot ROM */ ROM_LOAD32_BYTE( "audboot.bin", 0x000000, 0x080000, CRC(c70c060d) SHA1(dd014bd13efdf5adc5450836bd4650351abefc46) ) @@ -2973,17 +2128,17 @@ ROM_START( sfrushrkwo ) ROM_LOAD32_WORD( "audio.u53", 0x800000, 0x200000, CRC(51c89a14) SHA1(6bc62bcda224040a4596d795132874828011a038) ) ROM_LOAD32_WORD( "audio.u49", 0x800002, 0x200000, CRC(e6b684d3) SHA1(1f5bab7fae974cecc8756dd23e3c7aa2cf6e7dc7) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.2 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.2 */ DISK_IMAGE( "sfrushrk", 0, SHA1(e763f26aca67ebc17fe8b8df4fba91d492cf7837) ) ROM_END ROM_START( calspeed ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.2 (2/18/98) */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.2 (2/18/98) */ ROM_LOAD( "caspd1_2.u32", 0x000000, 0x80000, CRC(0a235e4e) SHA1(b352f10fad786260b58bd344b5002b6ea7aaf76d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Release version 2.1a (4/17/98) (Guts 1.25 4/17/98, Main 4/17/98) */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Release version 2.1a (4/17/98) (Guts 1.25 4/17/98, Main 4/17/98) */ DISK_IMAGE( "calspeed", 0, SHA1(08d411c591d4b8bbdd6437ea80d01c4cec8516f8) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ @@ -2991,13 +2146,13 @@ ROM_START( calspeed ) ROM_END ROM_START( calspeeda ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.2 (2/18/98) */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.2 (2/18/98) */ ROM_LOAD( "caspd1_2.u32", 0x000000, 0x80000, CRC(0a235e4e) SHA1(b352f10fad786260b58bd344b5002b6ea7aaf76d) ) // it actually asks you to replace this with the original rom after the upgrade is complete, which is weird because this is a perfectly valid newer revision of the boot code, but probably explains why the parent set was still on 1.2 ROM_LOAD( "Cal speed update U32 boot ver, 1,4 5EF6", 0x000000, 0x80000, CRC(fd627637) SHA1(b0c2847cbecfc00344e402386d13240d55a0814e) ) // boot code 1.4 Apr 17 1998 21:18:31 - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) ROM_SYSTEM_BIOS( 0, "noupdate", "No Update Rom" ) ROM_SYSTEM_BIOS( 1, "up16_1", "Disk Update 1.0x to 2.1a (1.25) Step 1 of 3" ) @@ -3008,7 +2163,7 @@ ROM_START( calspeeda ) ROMX_LOAD("eprom #3 2.1A 3286", 0x000000, 0x100000, CRC(e7d8c88f) SHA1(06c11241ac439527b361826784aef4c58689892e), ROM_BIOS(4)) - DISK_REGION( "ide:0:hdd:image" ) /* Release version 1.0r8a (4/10/98) (Guts 4/10/98, Main 4/10/98) */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Release version 1.0r8a (4/10/98) (Guts 4/10/98, Main 4/10/98) */ DISK_IMAGE( "cs_10r8a", 0, SHA1(ba4e7589740e0647938c81c5082bb71d8826bad4) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ @@ -3016,29 +2171,25 @@ ROM_START( calspeeda ) ROM_END ROM_START( calspeedb ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.2 (2/18/98) */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.2 (2/18/98) */ ROM_LOAD( "caspd1_2.u32", 0x000000, 0x80000, CRC(0a235e4e) SHA1(b352f10fad786260b58bd344b5002b6ea7aaf76d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Release version 1.0r7a (3/4/98) (Guts 3/3/98, Main 1/19/98) */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Release version 1.0r7a (3/4/98) (Guts 3/3/98, Main 1/19/98) */ DISK_IMAGE( "calspeda", 0, SHA1(6b1c3a7530195ef7309b06a651b01c8b3ece92c6) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) ROM_END - - - - ROM_START( vaportrx ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) ROM_LOAD( "vtrxboot.bin", 0x000000, 0x80000, CRC(ee487a6c) SHA1(fb9efda85047cf615f24f7276a9af9fd542f3354) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) DISK_IMAGE( "vaportrx", 0, SHA1(fe53ca7643d2ed2745086abb7f2243c69678cab1) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ @@ -3047,12 +2198,12 @@ ROM_END ROM_START( vaportrxp ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) ROM_LOAD( "vtrxboot.bin", 0x000000, 0x80000, CRC(ee487a6c) SHA1(fb9efda85047cf615f24f7276a9af9fd542f3354) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts: Apr 10 1998 11:03:14 Main: Apr 10 1998 11:27:44 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts: Apr 10 1998 11:03:14 Main: Apr 10 1998 11:27:44 */ DISK_IMAGE( "vaportrp", 0, SHA1(6c86637c442ebd6994eee8c0ae0dce343c35dbe9) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ @@ -3064,12 +2215,12 @@ ROM_START( biofreak ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Seattle System Boot ROM Version 0.1i Apr 14 1997 14:52:53 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Seattle System Boot ROM Version 0.1i Apr 14 1997 14:52:53 */ ROM_LOAD( "biofreak.u32", 0x000000, 0x80000, CRC(cefa00bb) SHA1(7e171610ede1e8a448fb8d175f9cb9e7d549de28) ) - DISK_REGION( "ide:0:hdd:image" ) /* Build Date 12/11/97 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Build Date 12/11/97 */ DISK_IMAGE( "biofreak", 0, SHA1(711241642f92ded8eaf20c418ea748989183fe10) ) ROM_END @@ -3078,12 +2229,12 @@ ROM_START( blitz ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.2 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.2 */ ROM_LOAD( "blitz1_2.u32", 0x000000, 0x80000, CRC(38dbecf5) SHA1(7dd5a5b3baf83a7f8f877ff4cd3f5e8b5201b36f) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.21 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.21 */ DISK_IMAGE( "blitz", 0, SHA1(9131c7888e89b3c172780156ed3fe1fe46f78b0a) ) ROM_END @@ -3092,12 +2243,12 @@ ROM_START( blitz11 ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.1 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.1 */ ROM_LOAD( "blitz1_1.u32", 0x000000, 0x80000, CRC(8163ce02) SHA1(89b432d8879052f6c5534ee49599f667f50a010f) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.21 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.21 */ DISK_IMAGE( "blitz", 0, SHA1(9131c7888e89b3c172780156ed3fe1fe46f78b0a) ) ROM_END @@ -3106,12 +2257,12 @@ ROM_START( blitz99 ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.0 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.0 */ ROM_LOAD( "bltz9910.u32", 0x000000, 0x80000, CRC(777119b2) SHA1(40d255181c2f3a787919c339e83593fd506779a5) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.30 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.30 */ DISK_IMAGE( "blitz99", 0, SHA1(19877e26ffce81dd525031e9e2b4f83ff982e2d9) ) ROM_END @@ -3119,15 +2270,15 @@ ROM_START( blitz99a ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.0 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.0 */ ROM_LOAD( "bltz9910.u32", 0x000000, 0x80000, CRC(777119b2) SHA1(40d255181c2f3a787919c339e83593fd506779a5) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) // to use this rom run with -bios up130 and go into TEST mode to update. + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) // to use this rom run with -bios up130 and go into TEST mode to update. ROM_SYSTEM_BIOS( 0, "noupdate", "No Update Rom" ) ROM_SYSTEM_BIOS( 1, "up130", "Update to 1.30" ) ROMX_LOAD( "rev.-1.3.u33", 0x000000, 0x100000, CRC(0a0fde5a) SHA1(1edb671c66819f634a9f1daa35331a99b2bda01a), ROM_BIOS(2) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.30 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.30 */ DISK_IMAGE( "blitz99a", 0, SHA1(43f834727ce01d7a63b482fc28cbf292477fc6f2) ) ROM_END @@ -3136,12 +2287,12 @@ ROM_START( blitz2k ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.4 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.4 */ ROM_LOAD( "bltz2k14.u32", 0x000000, 0x80000, CRC(ac4f0051) SHA1(b8125c17370db7bfd9b783230b4ef3d5b22a2025) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive Version 1.5 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive Version 1.5 */ DISK_IMAGE( "blitz2k", 0, SHA1(e89b7fbd4b4a9854d47ae97493e0afffbd1f69e7) ) ROM_END @@ -3150,12 +2301,12 @@ ROM_START( carnevil ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Rom Version 1.9 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Rom Version 1.9 */ ROM_LOAD( "carnevil1_9.u32", 0x000000, 0x80000, CRC(82c07f2e) SHA1(fa51c58022ce251c53bad12fc6ffadb35adb8162) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive v1.0.3 Diagnostics v3.4 / Feb 1 1999 16:00:07 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive v1.0.3 Diagnostics v3.4 / Feb 1 1999 16:00:07 */ DISK_IMAGE( "carnevil", 0, SHA1(5cffb0de63ad36eb01c5951bab04d3f8a9e23e16) ) ROM_END @@ -3164,12 +2315,12 @@ ROM_START( carnevil1 ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Rom Version 1.9 */ + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Rom Version 1.9 */ ROM_LOAD( "carnevil1_9.u32", 0x000000, 0x80000, CRC(82c07f2e) SHA1(fa51c58022ce251c53bad12fc6ffadb35adb8162) ) - DISK_REGION( "ide:0:hdd:image" ) /* Hard Drive v1.0.1 Diagnostics v3.3 / Oct 20 1998 11:44:41 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Hard Drive v1.0.1 Diagnostics v3.3 / Oct 20 1998 11:44:41 */ DISK_IMAGE( "carnevi1", 0, BAD_DUMP SHA1(94532727512280930a100fe473bf3a938fe2d44f) ) ROM_END @@ -3178,7 +2329,7 @@ ROM_START( hyprdriv ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2115 data Version 1.02 */ ROM_LOAD16_BYTE( "seattle.snd", 0x000000, 0x8000, BAD_DUMP CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) ROM_SYSTEM_BIOS( 0, "noupdate", "No Update Rom" ) ROM_SYSTEM_BIOS( 1, "update", "Unknown Update" ) ROMX_LOAD( "hyperdrive1.2.u33", 0x000000, 0x100000, CRC(fcc922fb) SHA1(7bfa4f0614f561ba77ad2dc7d776af2c3e84b7e7), ROM_BIOS(2) ) @@ -3191,11 +2342,11 @@ ROM_START( hyprdriv ) */ - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) ROM_LOAD( "hyperdrive1.1.u32", 0x000000, 0x80000, CRC(3120991e) SHA1(8e47888a5a23c9d3c0d0c64497e1cfb4e46c2cd6) ) /* Boot Rom Version 2. */ // doesn't work, maybe for older drive? ROM_LOAD( "hyprdrve.u32", 0x000000, 0x80000, CRC(3e18cb80) SHA1(b18cc4253090ee1d65d72a7ec0c426ed08c4f238) ) /* Boot Rom Version 9. */ - DISK_REGION( "ide:0:hdd:image" ) /* Version 1.40 Oct 23 1998 15:16:00 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Version 1.40 Oct 23 1998 15:16:00 */ DISK_IMAGE( "hyprdriv", 0, SHA1(8cfa343797575b32f46cc24150024be48963a03e) ) ROM_END @@ -3209,26 +2360,30 @@ ROM_END void seattle_state::init_common(int config) { + // Setup nvram + m_nvram_data.resize(0x20000/4); + m_nvram->set_base(m_nvram_data.data(), 0x20000); + /* switch off the configuration */ m_board_config = config; switch (config) { case PHOENIX_CONFIG: /* original Phoenix board only has 4MB of RAM */ - m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x00400000, 0x007fffff); + //m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x00400000, 0x007fffff); break; case SEATTLE_WIDGET_CONFIG: /* set up the widget board */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x16c00000, 0x16c0001f, read32_delegate(FUNC(seattle_state::widget_r),this), write32_delegate(FUNC(seattle_state::widget_w),this)); + //m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x16c00000, 0x16c0001f, read32_delegate(FUNC(seattle_state::widget_r),this), write32_delegate(FUNC(seattle_state::widget_w),this)); break; case FLAGSTAFF_CONFIG: /* set up the analog inputs */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x14000000, 0x14000003, read32_delegate(FUNC(seattle_state::analog_port_r),this), write32_delegate(FUNC(seattle_state::analog_port_w),this)); + //m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x14000000, 0x14000003, read32_delegate(FUNC(seattle_state::analog_port_r),this), write32_delegate(FUNC(seattle_state::analog_port_w),this)); /* set up the ethernet controller */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x16c00000, 0x16c0003f, read32_delegate(FUNC(seattle_state::ethernet_r),this), write32_delegate(FUNC(seattle_state::ethernet_w),this)); + //m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x16c00000, 0x16c0003f, read32_delegate(FUNC(seattle_state::ethernet_r),this), write32_delegate(FUNC(seattle_state::ethernet_w),this)); break; } } @@ -3309,7 +2464,7 @@ DRIVER_INIT_MEMBER(seattle_state,blitz) init_common(SEATTLE_CONFIG); /* for some reason, the code in the ROM appears buggy; this is a small patch to fix it */ - m_rombase[0x934/4] += 4; + //m_rombase[0x934/4] += 4; /* main CPU speedups */ m_maincpu->mips3drc_add_hotspot(0x80135510, 0x3C028024, 250); /* confirmed */ @@ -3342,7 +2497,7 @@ DRIVER_INIT_MEMBER(seattle_state,carnevil) init_common(SEATTLE_CONFIG); /* set up the gun */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x16800000, 0x1680001f, read32_delegate(FUNC(seattle_state::carnevil_gun_r),this), write32_delegate(FUNC(seattle_state::carnevil_gun_w),this)); + //m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x16800000, 0x1680001f, read32_delegate(FUNC(seattle_state::carnevil_gun_r),this), write32_delegate(FUNC(seattle_state::carnevil_gun_w),this)); /* speedups */ m_maincpu->mips3drc_add_hotspot(0x8015176C, 0x3C03801A, 250); /* confirmed */ diff --git a/src/mame/drivers/seattlecmp.cpp b/src/mame/drivers/seattlecmp.cpp index baa49c6101a..559e2d52eaa 100644 --- a/src/mame/drivers/seattlecmp.cpp +++ b/src/mame/drivers/seattlecmp.cpp @@ -47,7 +47,8 @@ public: DECLARE_READ16_MEMBER(read); DECLARE_WRITE16_MEMBER(write); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); + private: virtual void machine_reset() override; required_device m_maincpu; @@ -98,13 +99,13 @@ void seattle_comp_state::machine_reset() m_term_data = 0; } -WRITE8_MEMBER( seattle_comp_state::kbd_put ) +void seattle_comp_state::kbd_put(u8 data) { m_term_data = data; m_key_available = 1; } -static MACHINE_CONFIG_START( seattle, seattle_comp_state ) +static MACHINE_CONFIG_START( seattle ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 4000000) // no idea MCFG_CPU_PROGRAM_MAP(seattle_mem) @@ -112,7 +113,7 @@ static MACHINE_CONFIG_START( seattle, seattle_comp_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(seattle_comp_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(seattle_comp_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -123,5 +124,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1986, seattle, 0, 0, seattle, seattle, driver_device, 0, "Seattle Computer", "SCP-300F", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1986, seattle, 0, 0, seattle, seattle, seattle_comp_state, 0, "Seattle Computer", "SCP-300F", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/sega_sawatte.cpp b/src/mame/drivers/sega_sawatte.cpp index 1caec4a2748..151bb74649b 100644 --- a/src/mame/drivers/sega_sawatte.cpp +++ b/src/mame/drivers/sega_sawatte.cpp @@ -43,7 +43,7 @@ static INPUT_PORTS_START( sawatte ) INPUT_PORTS_END -static MACHINE_CONFIG_START( sawatte, sawatte_state ) +static MACHINE_CONFIG_START( sawatte ) MCFG_SOFTWARE_LIST_ADD("cart_list", "sawatte") MACHINE_CONFIG_END @@ -51,4 +51,4 @@ ROM_START( sawatte ) ROM_END -CONS( 1996?, sawatte, 0, 0, sawatte, sawatte, driver_device, 0, "Sega", "Sawatte", MACHINE_IS_SKELETON ) +CONS( 1996?, sawatte, 0, 0, sawatte, sawatte, sawatte_state, 0, "Sega", "Sawatte", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/segac2.cpp b/src/mame/drivers/segac2.cpp index 2154839f6d2..6404b277a7a 100644 --- a/src/mame/drivers/segac2.cpp +++ b/src/mame/drivers/segac2.cpp @@ -273,7 +273,7 @@ MACHINE_RESET_MEMBER(segac2_state,segac2) Sound handlers ******************************************************************************* - These handlers are responsible for communicating with the (genenerally) + These handlers are responsible for communicating with the (generally) 8-bit sound chips. All accesses are via the low byte. The Sega C/C2 system uses a YM3438 (compatible with the YM2612) for FM- @@ -648,7 +648,7 @@ ADDRESS_MAP_END Input ports and 2 Dipswitch Ports, 1 of those Dipswitch Ports being used for coinage, the other for Game Options. - Most of the Games List the Dipswitchs and Inputs in the Test Menus, adding + Most of the Games List the Dipswitches and Inputs in the Test Menus, adding them is just a tedious task. I think Columnns & Bloxeed are Exceptions and will need their Dipswitches working out by observation. The Coin Part of the DSW's seems fairly common to all games. @@ -1039,6 +1039,23 @@ static INPUT_PORTS_START( sonicpop ) PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" ) INPUT_PORTS_END +static INPUT_PORTS_START( anpanman ) + PORT_INCLUDE( sonicpop ) + + PORT_MODIFY("DSW") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1") + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPNAME( 0x02, 0x02, "Demo Voice" ) PORT_DIPLOCATION("SW2:2") + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPUNUSED_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW2:3" ) + PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW2:4" ) + PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" ) + PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" ) + PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:7" ) + PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" ) +INPUT_PORTS_END static INPUT_PORTS_START( ribbit ) PORT_INCLUDE( systemc_generic ) @@ -1507,7 +1524,7 @@ WRITE_LINE_MEMBER(segac2_state::vdp_lv4irqline_callback_c2) } -static MACHINE_CONFIG_START( segac, segac2_state ) +static MACHINE_CONFIG_START( segac ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XL2_CLOCK/6) @@ -1544,7 +1561,7 @@ static MACHINE_CONFIG_START( segac, segac2_state ) MCFG_SCREEN_SIZE(512, 262) MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(segac2_state, screen_update_segac2_new) - MCFG_SCREEN_VBLANK_DRIVER(segac2_state, screen_eof_megadriv ) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(segac2_state, screen_vblank_megadriv)) MCFG_PALETTE_ADD("palette", 2048*3) @@ -1763,6 +1780,17 @@ ROM_START( wwmarine ) /* Waku Waku Marine (c)1992 Sega - 834-9082 WAKUWAKU MARI ROM_LOAD( "epr-15095.ic4", 0x000000, 0x040000, CRC(df13755b) SHA1(177aac7aaadc36e14dbcdf12bd42dbe70b3edd49) ) ROM_END +ROM_START( anpanman ) /* Sega Soreike! Anpanman Popcorn Factory (Rev.B) (c)1993 Sega - 834-8795-01 (EMP5032 labeled 317-0140) */ + ROM_REGION( 0x200000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "epr-14804b.ic32", 0x000000, 0x040000, CRC(7ce88c49) SHA1(959ee459a5b4a6324488a935fa6a48e38ce93464) ) // 27C020 + ROM_LOAD16_BYTE( "epr-14803b.ic31", 0x000001, 0x040000, CRC(eb3ca1b9) SHA1(e4dd9d2bd2301f47f167d6516457386ba4e57df0) ) // 27C020 + ROM_LOAD16_BYTE( "epr-14806.ic34", 0x100000, 0x040000, CRC(40f398db) SHA1(abaaf4404342232b58f02c7ea0571926b2417b45) ) // 27C020 + ROM_LOAD16_BYTE( "epr-14805.ic33", 0x100001, 0x040000, CRC(f27229ed) SHA1(307182cdcd8954bbc56d4b412df452b406466d53) ) // 27C020 + + ROM_REGION( 0x040000, "upd", 0 ) + ROM_LOAD( "epr-14807.ic4", 0x000000, 0x040000, CRC(9827549f) SHA1(66d195299085ec690498fc795a3088c05e6db820) ) // 27C020 +ROM_END + ROM_START( sonicpop ) /* Sega Sonic Popcorn Shop (Rev.B) (c)1993 Sega - 834-9555-02 (EMP5032 labeled 317-0140) */ ROM_REGION( 0x200000, "maincpu", 0 ) @@ -2518,6 +2546,7 @@ GAME( 1994, tantrbl3, tantr, segac, ichir, segac2_state, tantr, ROT0, GAME( 1992, wwmarine, 0, segac2, wwmarine, segac2_state, bloxeedc, ROT0, "Sega", "Waku Waku Marine", 0 ) // not really sure how this should hook up, things like the 'sold out' flags could be mechanical sensors, or from another MCU / CPU board in the actual popcorn part of the machine? +GAME( 199?, anpanman, 0, segac2, anpanman, segac2_state, bloxeedc, ROT0, "Sega", "Soreike! Anpanman Popcorn Factory (Rev B)", MACHINE_MECHANICAL ) // 'Mechanical' part isn't emulated GAME( 1993, sonicpop, 0, segac2, sonicpop, segac2_state, bloxeedc, ROT0, "Sega", "SegaSonic Popcorn Shop (Rev B)", MACHINE_MECHANICAL ) // region DSW for USA / Export / Japan, still speaks Japanese tho. 'Mechanical' part isn't emulated GAME( 1993, sonicfgt, 0, segac2, systemc_generic, segac2_state, bloxeedc, ROT0, "Sega", "Sega Sonic Cosmo Fighter", 0 ) diff --git a/src/mame/drivers/segacoin.cpp b/src/mame/drivers/segacoin.cpp index aac1d5a2969..9895b038284 100644 --- a/src/mame/drivers/segacoin.cpp +++ b/src/mame/drivers/segacoin.cpp @@ -104,7 +104,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( westdrm, segacoin_state ) +static MACHINE_CONFIG_START( westdrm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 8000000) // clock frequency unknown @@ -139,4 +139,4 @@ ROM_START( westdrm ) ROM_END -GAME (1992, westdrm, 0, westdrm, westdrm, driver_device, 0, ROT0, "Sega", "Western Dream", MACHINE_IS_SKELETON_MECHANICAL ) +GAME (1992, westdrm, 0, westdrm, westdrm, segacoin_state, 0, ROT0, "Sega", "Western Dream", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/segae.cpp b/src/mame/drivers/segae.cpp index e9fc82cf5e1..e7e06670405 100644 --- a/src/mame/drivers/segae.cpp +++ b/src/mame/drivers/segae.cpp @@ -296,6 +296,7 @@ GND 8A 8B GND #include "includes/segaipt.h" #include "cpu/z80/z80.h" +#include "machine/i8255.h" #include "machine/mc8123.h" #include "machine/segacrp2_device.h" #include "sound/sn76496.h" @@ -320,16 +321,14 @@ public: m_bank0d(*this, "bank0d"), m_bank1d(*this, "bank1d") { } - DECLARE_WRITE8_MEMBER( bank_write ); + DECLARE_WRITE8_MEMBER(bank_write); + DECLARE_WRITE8_MEMBER(coin_counters_write); DECLARE_READ8_MEMBER( ridleofp_port_f8_read ); DECLARE_WRITE8_MEMBER( ridleofp_port_fa_write ); DECLARE_READ8_MEMBER( hangonjr_port_f8_read ); DECLARE_WRITE8_MEMBER( hangonjr_port_fa_write ); - DECLARE_DRIVER_INIT( hangonjr ); - DECLARE_DRIVER_INIT( astrofl ); - DECLARE_DRIVER_INIT( ridleofp ); DECLARE_DRIVER_INIT( opaopa ); DECLARE_DRIVER_INIT( fantzn2 ); @@ -360,10 +359,6 @@ public: /**************************************************************************************** Memory Maps - - most of the memory map / IO maps are filled in at run time - this is due to the SMS - code that this is based on being designed that way due to weird features of the MD. - ****************************************************************************************/ /* we have to fill in the ROM addresses for systeme due to the encrypted games */ @@ -389,19 +384,20 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 8, systeme_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7b, 0x7b) AM_DEVWRITE("sn1", segapsg_device, write ) - AM_RANGE(0x7e, 0x7f) AM_DEVWRITE("sn2", segapsg_device, write ) - AM_RANGE(0x7e, 0x7e) AM_DEVREAD( "vdp1", sega315_5124_device, vcount_read ) - AM_RANGE(0xba, 0xba) AM_DEVREADWRITE( "vdp1", sega315_5124_device, vram_read, vram_write ) - AM_RANGE(0xbb, 0xbb) AM_DEVREADWRITE( "vdp1", sega315_5124_device, register_read, register_write ) - AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE( "vdp2", sega315_5124_device, vram_read, vram_write ) - AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE( "vdp2", sega315_5124_device, register_read, register_write ) - AM_RANGE(0xe0, 0xe0) AM_READ_PORT( "e0" ) - AM_RANGE(0xe1, 0xe1) AM_READ_PORT( "e1" ) - AM_RANGE(0xe2, 0xe2) AM_READ_PORT( "e2" ) - AM_RANGE(0xf2, 0xf2) AM_READ_PORT( "f2" ) - AM_RANGE(0xf3, 0xf3) AM_READ_PORT( "f3" ) - AM_RANGE(0xf7, 0xf7) AM_WRITE( bank_write ) + AM_RANGE(0x7b, 0x7b) AM_DEVWRITE("sn1", segapsg_device, write) + AM_RANGE(0x7e, 0x7f) AM_DEVWRITE("sn2", segapsg_device, write) + AM_RANGE(0x7e, 0x7e) AM_DEVREAD("vdp1", sega315_5124_device, vcount_read) + AM_RANGE(0xba, 0xba) AM_DEVREADWRITE("vdp1", sega315_5124_device, vram_read, vram_write) + AM_RANGE(0xbb, 0xbb) AM_DEVREADWRITE("vdp1", sega315_5124_device, register_read, register_write) + AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("vdp2", sega315_5124_device, vram_read, vram_write) + AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("vdp2", sega315_5124_device, register_read, register_write) + AM_RANGE(0xe0, 0xe0) AM_READ_PORT("e0") + AM_RANGE(0xe1, 0xe1) AM_READ_PORT("e1") + AM_RANGE(0xe2, 0xe2) AM_READ_PORT("e2") + AM_RANGE(0xf2, 0xf2) AM_READ_PORT("f2") + AM_RANGE(0xf3, 0xf3) AM_READ_PORT("f3") + AM_RANGE(0xf7, 0xf7) AM_WRITE(bank_write) + AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE("ppi", i8255_device, read, write) ADDRESS_MAP_END @@ -415,16 +411,26 @@ static ADDRESS_MAP_START( vdp2_map, AS_0, 8, systeme_state ) ADDRESS_MAP_END -WRITE8_MEMBER( systeme_state::bank_write ) +WRITE8_MEMBER(systeme_state::bank_write) { membank("vdp1_bank")->set_entry((data >> 7) & 1); membank("vdp2_bank")->set_entry((data >> 6) & 1); membank("vram_write")->set_entry(data >> 5); m_bank1->set_entry(data & 0x0f); - if(m_bank1d) + if (m_bank1d.found()) m_bank1d->set_entry(data & 0x0f); } +WRITE8_MEMBER(systeme_state::coin_counters_write) +{ + if (data == 0xff) + return; + + machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); + machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // only one counter used in most games? + machine().output().set_lamp_value(0, BIT(data, 2)); // used only by hangonjr? +} + void systeme_state::machine_start() { @@ -476,7 +482,7 @@ READ8_MEMBER( systeme_state::hangonjr_port_f8_read ) WRITE8_MEMBER( systeme_state::hangonjr_port_fa_write) { /* Seems to write the same pattern again and again bits ---- xx-x used */ - m_port_select = data; + m_port_select = data & 0x0f; } /*- Riddle of Pythagoras Specific -*/ @@ -954,7 +960,7 @@ ROM_START( fantzn2 ) ROM_LOAD( "epr-11414.ic4", 0x30000, 0x10000, CRC(6f7a9f5f) SHA1(b53aa2eded781c80466a79b7d81383b9a875d0be) ) ROM_LOAD( "epr-11412.ic2", 0x40000, 0x10000, CRC(b14db5af) SHA1(04c7fb659385438b3d8f9fb66800eb7b6373bda9) ) - ROM_REGION( 0x2000, "key", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0057.key", 0x0000, 0x2000, CRC(ee43d0f0) SHA1(72cb75a4d8352fe372db12046a59ea044360d5c3) ) ROM_END @@ -969,7 +975,7 @@ ROM_START( opaopa ) ROM_LOAD( "epr-11051.ic3", 0x20000, 0x08000, CRC(4ca132a2) SHA1(cb4e4c01b6ab070eef37c0603190caafe6236ccd) ) /* encrypted */ ROM_LOAD( "epr-11050.ic2", 0x28000, 0x08000, CRC(a165e2ef) SHA1(498ff4c5d3a2658567393378c56be6ed86ac0384) ) /* encrypted */ - ROM_REGION( 0x2000, "key", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0042.key", 0x0000, 0x2000, CRC(d6312538) SHA1(494ac7f080775c21dc7d369e6ea78f3299e6975a) ) ROM_END @@ -997,15 +1003,18 @@ uint32_t systeme_state::screen_update_systeme(screen_device &screen, bitmap_rgb3 return 0; } -static MACHINE_CONFIG_START( systeme, systeme_state ) +static MACHINE_CONFIG_START( systeme ) MCFG_CPU_ADD("maincpu", Z80, XTAL_10_738635MHz/2) /* Z80B @ 5.3693Mhz */ MCFG_CPU_PROGRAM_MAP(systeme_map) MCFG_CPU_IO_MAP(io_map) + MCFG_DEVICE_ADD("ppi", I8255, 0) + MCFG_I8255_OUT_PORTB_CB(WRITE8(systeme_state, coin_counters_write)) + MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_10_738635MHz/2, \ - SEGA315_5124_WIDTH , SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256, \ - SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_192_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_192_TBORDER_HEIGHT + 192) + sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256, \ + sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_192_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_192_TBORDER_HEIGHT + 192) MCFG_SCREEN_UPDATE_DRIVER(systeme_state, screen_update_systeme) MCFG_DEVICE_ADD("vdp1", SEGA315_5124, 0) @@ -1027,9 +1036,25 @@ static MACHINE_CONFIG_START( systeme, systeme_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( hangonjr, systeme ) + MCFG_DEVICE_MODIFY("ppi") + MCFG_I8255_IN_PORTA_CB(READ8(systeme_state, hangonjr_port_f8_read)) + MCFG_I8255_IN_PORTC_CB(CONSTANT(0)) // bit 4 ought to be ADC /INTR signal + MCFG_I8255_OUT_PORTC_CB(WRITE8(systeme_state, hangonjr_port_fa_write)) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( ridleofp, systeme ) + MCFG_DEVICE_MODIFY("ppi") + MCFG_I8255_IN_PORTA_CB(READ8(systeme_state, ridleofp_port_f8_read)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(systeme_state, ridleofp_port_fa_write)) +MACHINE_CONFIG_END + + static MACHINE_CONFIG_DERIVED( systemex, systeme ) - MCFG_DEVICE_MODIFY("maincpu") + MCFG_CPU_REPLACE("maincpu", MC8123, XTAL_10_738635MHz/2) /* Z80B @ 5.3693Mhz */ + MCFG_CPU_PROGRAM_MAP(systeme_map) + MCFG_CPU_IO_MAP(io_map) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) MACHINE_CONFIG_END @@ -1042,30 +1067,17 @@ static MACHINE_CONFIG_DERIVED( systemex_315_5177, systeme ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( systemeb, systeme ) - MCFG_DEVICE_MODIFY("maincpu") + MCFG_CPU_REPLACE("maincpu", MC8123, XTAL_10_738635MHz/2) /* Z80B @ 5.3693Mhz */ + MCFG_CPU_PROGRAM_MAP(systeme_map) + MCFG_CPU_IO_MAP(io_map) MCFG_CPU_DECRYPTED_OPCODES_MAP(banked_decrypted_opcodes_map) MACHINE_CONFIG_END -DRIVER_INIT_MEMBER(systeme_state, hangonjr) -{ - m_maincpu->space(AS_IO).install_read_handler(0xf8, 0xf8, read8_delegate(FUNC(systeme_state::hangonjr_port_f8_read), this)); - m_maincpu->space(AS_IO).install_write_handler(0xfa, 0xfa, write8_delegate(FUNC(systeme_state::hangonjr_port_fa_write), this)); -} - - - - -DRIVER_INIT_MEMBER(systeme_state, ridleofp) -{ - m_maincpu->space(AS_IO).install_read_handler(0xf8, 0xf8, read8_delegate(FUNC(systeme_state::ridleofp_port_f8_read), this)); - m_maincpu->space(AS_IO).install_write_handler(0xfa, 0xfa, write8_delegate(FUNC(systeme_state::ridleofp_port_fa_write), this)); -} - DRIVER_INIT_MEMBER(systeme_state, opaopa) { uint8_t *banked_decrypted_opcodes = auto_alloc_array(machine(), uint8_t, m_maincpu_region->bytes()); - mc8123_decode(m_maincpu_region->base(), banked_decrypted_opcodes, memregion("key")->base(), m_maincpu_region->bytes()); + downcast(*m_maincpu).decode(m_maincpu_region->base(), banked_decrypted_opcodes, m_maincpu_region->bytes()); m_bank0d->set_base(banked_decrypted_opcodes); m_bank1d->configure_entries(0, 16, banked_decrypted_opcodes + 0x10000, 0x4000); @@ -1074,16 +1086,16 @@ DRIVER_INIT_MEMBER(systeme_state, opaopa) DRIVER_INIT_MEMBER(systeme_state, fantzn2) { - mc8123_decode(m_maincpu_region->base(), m_decrypted_opcodes, memregion("key")->base(), 0x8000); + downcast(*m_maincpu).decode(m_maincpu_region->base(), m_decrypted_opcodes, 0x8000); } -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1985, hangonjr, 0, systeme, hangonjr, systeme_state, hangonjr, ROT0, "Sega", "Hang-On Jr.", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, transfrm, 0, systeme, transfrm, driver_device, 0, ROT0, "Sega", "Transformer", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, astrofl, transfrm, systemex_315_5177, transfrm, driver_device, 0, ROT0, "Sega", "Astro Flash (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, ridleofp, 0, systeme, ridleofp, systeme_state, ridleofp, ROT90, "Sega / Nasco", "Riddle of Pythagoras (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, opaopa, 0, systemeb, opaopa, systeme_state, opaopa, ROT0, "Sega", "Opa Opa (MC-8123, 317-0042)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, fantzn2, 0, systemex, fantzn2, systeme_state, fantzn2, ROT0, "Sega", "Fantasy Zone II - The Tears of Opa-Opa (MC-8123, 317-0057)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, tetrisse, 0, systeme, tetrisse, driver_device, 0, ROT0, "Sega", "Tetris (Japan, System E)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, slapshtr, 0, systeme, slapshtr, driver_device, 0, ROT0, "Sega", "Slap Shooter", MACHINE_SUPPORTS_SAVE) // 1986 date from flyer +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE INIT, MONITOR,COMPANY,FULLNAME,FLAGS +GAME( 1985, hangonjr, 0, hangonjr, hangonjr, systeme_state, 0, ROT0, "Sega", "Hang-On Jr.", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, transfrm, 0, systeme, transfrm, systeme_state, 0, ROT0, "Sega", "Transformer", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, astrofl, transfrm, systemex_315_5177, transfrm, systeme_state, 0, ROT0, "Sega", "Astro Flash (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, ridleofp, 0, ridleofp, ridleofp, systeme_state, 0, ROT90, "Sega / Nasco", "Riddle of Pythagoras (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, opaopa, 0, systemeb, opaopa, systeme_state, opaopa, ROT0, "Sega", "Opa Opa (MC-8123, 317-0042)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, fantzn2, 0, systemex, fantzn2, systeme_state, fantzn2, ROT0, "Sega", "Fantasy Zone II - The Tears of Opa-Opa (MC-8123, 317-0057)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tetrisse, 0, systeme, tetrisse, systeme_state, 0, ROT0, "Sega", "Tetris (Japan, System E)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, slapshtr, 0, systeme, slapshtr, systeme_state, 0, ROT0, "Sega", "Slap Shooter", MACHINE_SUPPORTS_SAVE) // 1986 date from flyer diff --git a/src/mame/drivers/segag80r.cpp b/src/mame/drivers/segag80r.cpp index e964523a73a..edce5584cc7 100644 --- a/src/mame/drivers/segag80r.cpp +++ b/src/mame/drivers/segag80r.cpp @@ -156,6 +156,7 @@ INPUT_CHANGED_MEMBER(segag80r_state::service_switch) void segag80r_state::machine_start() { + m_vblank_latch_clear_timer = timer_alloc(TIMER_VBLANK_LATCH_CLEAR); /* register for save states */ } @@ -808,7 +809,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( g80r_base, segag80r_state ) +static MACHINE_CONFIG_START( g80r_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, VIDEO_CLOCK/4) @@ -1590,21 +1591,21 @@ DRIVER_INIT_MEMBER(segag80r_state,sindbadm) // YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS /* basic G-80 system with: CPU board, PROM board, Video I board, custom sound boards */ -GAME( 1981, astrob, 0, astrob, astrob, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (version 3)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, astrob2, astrob, astrob, astrob2, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (version 2)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, astrob2a, astrob, astrob, astrob2, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (version 2a)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, astrob1, astrob, astrob, astrob, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (version 1)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // instant death if you start game with 1 credit, protection?, bad dump? -GAME( 1981, astrobg, astrob, astrob, astrob, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (German)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, 005, 0, 005, 005, segag80r_state, 005, ROT270, "Sega", "005", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, astrob, 0, astrob, astrob, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (version 3)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, astrob2, astrob, astrob, astrob2, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (version 2)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, astrob2a, astrob, astrob, astrob2, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (version 2a)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, astrob1, astrob, astrob, astrob, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (version 1)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // instant death if you start game with 1 credit, protection?, bad dump? +GAME( 1981, astrobg, astrob, astrob, astrob, segag80r_state, astrob, ROT270, "Sega", "Astro Blaster (German)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, 005, 0, 005, 005, segag80r_state, 005, ROT270, "Sega", "005", MACHINE_IMPERFECT_SOUND ) /* basic G-80 system with individual background boards */ -GAME( 1981, spaceod, 0, spaceod, spaceod, segag80r_state, spaceod, ROT270, "Sega", "Space Odyssey (version 2)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, spaceod2, spaceod, spaceod, spaceod, segag80r_state, spaceod, ROT270, "Sega", "Space Odyssey (version 1)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, spaceod, 0, spaceod, spaceod, segag80r_state, spaceod, ROT270, "Sega", "Space Odyssey (version 2)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, spaceod2, spaceod, spaceod, spaceod, segag80r_state, spaceod, ROT270, "Sega", "Space Odyssey (version 1)", MACHINE_IMPERFECT_SOUND ) GAME( 1982, monsterb, 0, monsterb, monsterb, segag80r_state, monsterb, ROT270, "Sega", "Monster Bash", MACHINE_IMPERFECT_SOUND ) /* 2-board G-80 system */ GAME( 1982, monsterb2, monsterb, monster2, monsterb, segag80r_state, monster2, ROT270, "Sega", "Monster Bash (2 board version)", MACHINE_IMPERFECT_SOUND ) -GAME( 1983, pignewt, 0, pignewt, pignewt, segag80r_state, pignewt, ROT270, "Sega", "Pig Newton (version C)", MACHINE_IMPERFECT_SOUND ) +GAME( 1983, pignewt, 0, pignewt, pignewt, segag80r_state, pignewt, ROT270, "Sega", "Pig Newton (version C)", MACHINE_IMPERFECT_SOUND ) GAME( 1983, pignewta, pignewt, pignewt, pignewta, segag80r_state, pignewt, ROT270, "Sega", "Pig Newton (version A)", MACHINE_IMPERFECT_SOUND ) GAME( 1983, sindbadm, 0, sindbadm, sindbadm, segag80r_state, sindbadm, ROT270, "Sega", "Sindbad Mystery", 0 ) diff --git a/src/mame/drivers/segag80v.cpp b/src/mame/drivers/segag80v.cpp index 7cf4919bd57..58b4eb901c0 100644 --- a/src/mame/drivers/segag80v.cpp +++ b/src/mame/drivers/segag80v.cpp @@ -870,7 +870,7 @@ static const char *const zektor_sample_names[] = * *************************************/ -static MACHINE_CONFIG_START( g80v_base, segag80v_state ) +static MACHINE_CONFIG_START( g80v_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, VIDEO_CLOCK/4) @@ -1385,15 +1385,15 @@ DRIVER_INIT_MEMBER(segag80v_state,startrek) * *************************************/ -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY,FULLNAME,FLAGS -GAME( 1981, elim2, 0, elim2, elim2, segag80v_state, elim2, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (2 Players, set 1)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, elim2a, elim2, elim2, elim2, segag80v_state, elim2, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (2 Players, set 2)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, elim2c, elim2, elim2, elim2c, segag80v_state, elim2, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (2 Players, cocktail)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, elim4, elim2, elim2, elim4, segag80v_state, elim4, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (4 Players)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, elim4p, elim2, elim2, elim4, segag80v_state, elim4, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (4 Players, prototype)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, spacfury, 0, spacfury, spacfury, segag80v_state, spacfury, ORIENTATION_FLIP_Y, "Sega", "Space Fury (revision C)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, spacfurya, spacfury, spacfury, spacfury, segag80v_state, spacfury, ORIENTATION_FLIP_Y, "Sega", "Space Fury (revision A)", MACHINE_IMPERFECT_SOUND ) -GAME( 1981, spacfuryb, spacfury, spacfury, spacfury, segag80v_state, spacfury, ORIENTATION_FLIP_Y, "Sega", "Space Fury (revision B)", MACHINE_IMPERFECT_SOUND ) -GAME( 1982, zektor, 0, zektor, zektor, segag80v_state, zektor, ORIENTATION_FLIP_Y, "Sega", "Zektor (revision B)", MACHINE_IMPERFECT_SOUND ) -GAME( 1982, tacscan, 0, tacscan, tacscan, segag80v_state, tacscan, ORIENTATION_FLIP_X ^ ROT270, "Sega", "Tac/Scan", MACHINE_IMPERFECT_SOUND ) -GAME( 1982, startrek, 0, startrek, startrek, segag80v_state, startrek, ORIENTATION_FLIP_Y, "Sega", "Star Trek", MACHINE_IMPERFECT_SOUND ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE INIT, MONITOR, COMPANY, FULLNAME,FLAGS +GAME( 1981, elim2, 0, elim2, elim2, segag80v_state, elim2, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (2 Players, set 1)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, elim2a, elim2, elim2, elim2, segag80v_state, elim2, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (2 Players, set 2)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, elim2c, elim2, elim2, elim2c, segag80v_state, elim2, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (2 Players, cocktail)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, elim4, elim2, elim2, elim4, segag80v_state, elim4, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (4 Players)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, elim4p, elim2, elim2, elim4, segag80v_state, elim4, ORIENTATION_FLIP_Y, "Gremlin", "Eliminator (4 Players, prototype)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, spacfury, 0, spacfury, spacfury, segag80v_state, spacfury, ORIENTATION_FLIP_Y, "Sega", "Space Fury (revision C)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, spacfurya, spacfury, spacfury, spacfury, segag80v_state, spacfury, ORIENTATION_FLIP_Y, "Sega", "Space Fury (revision A)", MACHINE_IMPERFECT_SOUND ) +GAME( 1981, spacfuryb, spacfury, spacfury, spacfury, segag80v_state, spacfury, ORIENTATION_FLIP_Y, "Sega", "Space Fury (revision B)", MACHINE_IMPERFECT_SOUND ) +GAME( 1982, zektor, 0, zektor, zektor, segag80v_state, zektor, ORIENTATION_FLIP_Y, "Sega", "Zektor (revision B)", MACHINE_IMPERFECT_SOUND ) +GAME( 1982, tacscan, 0, tacscan, tacscan, segag80v_state, tacscan, ORIENTATION_FLIP_X ^ ROT270, "Sega", "Tac/Scan", MACHINE_IMPERFECT_SOUND ) +GAME( 1982, startrek, 0, startrek, startrek, segag80v_state, startrek, ORIENTATION_FLIP_Y, "Sega", "Star Trek", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/segahang.cpp b/src/mame/drivers/segahang.cpp index 13e3a4ea4ea..dbf08b70271 100644 --- a/src/mame/drivers/segahang.cpp +++ b/src/mame/drivers/segahang.cpp @@ -746,7 +746,7 @@ GFXDECODE_END // GENERIC MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( shared_base, segahang_state ) +static MACHINE_CONFIG_START( shared_base ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK_25MHz/4) diff --git a/src/mame/drivers/segajw.cpp b/src/mame/drivers/segajw.cpp index ae6ba2372e1..f8c8f3b6a77 100644 --- a/src/mame/drivers/segajw.cpp +++ b/src/mame/drivers/segajw.cpp @@ -32,6 +32,7 @@ Also seem to be running on the same/similar hardware: #include "cpu/z80/z80.h" #include "machine/gen_latch.h" #include "machine/nvram.h" +#include "machine/315_5296.h" #include "sound/2612intf.h" #include "video/hd63484.h" #include "video/ramdac.h" @@ -50,14 +51,12 @@ public: m_soundlatch(*this, "soundlatch") { } - DECLARE_READ16_MEMBER(coin_counter_r); - DECLARE_WRITE16_MEMBER(coin_counter_w); - DECLARE_READ16_MEMBER(hopper_r); - DECLARE_WRITE16_MEMBER(hopper_w); - DECLARE_READ8_MEMBER(lamps_r); - DECLARE_WRITE8_MEMBER(lamps_w); - DECLARE_READ16_MEMBER(coinlockout_r); - DECLARE_WRITE16_MEMBER(coinlockout_w); + DECLARE_READ8_MEMBER(coin_counter_r); + DECLARE_WRITE8_MEMBER(coin_counter_w); + DECLARE_WRITE8_MEMBER(hopper_w); + DECLARE_WRITE8_MEMBER(lamps1_w); + DECLARE_WRITE8_MEMBER(lamps2_w); + DECLARE_WRITE8_MEMBER(coinlockout_w); DECLARE_WRITE8_MEMBER(audiocpu_cmd_w); DECLARE_INPUT_CHANGED_MEMBER(coin_drop_start); DECLARE_CUSTOM_INPUT_MEMBER(coin_sensors_r); @@ -76,59 +75,39 @@ protected: uint64_t m_coin_start_cycles; uint64_t m_hopper_start_cycles; uint8_t m_coin_counter; - uint8_t m_coin_lockout; - uint8_t m_hopper_ctrl; - uint8_t m_lamps[2]; }; -READ16_MEMBER(segajw_state::coin_counter_r) +READ8_MEMBER(segajw_state::coin_counter_r) { return m_coin_counter ^ 0xff; } -WRITE16_MEMBER(segajw_state::coin_counter_w) +WRITE8_MEMBER(segajw_state::coin_counter_w) { - if(ACCESSING_BITS_0_7) - m_coin_counter = data; + m_coin_counter = data; } -READ16_MEMBER(segajw_state::hopper_r) +WRITE8_MEMBER(segajw_state::hopper_w) { - return m_hopper_ctrl; + m_hopper_start_cycles = data & 0x02 ? 0 : m_maincpu->total_cycles(); } -WRITE16_MEMBER(segajw_state::hopper_w) +WRITE8_MEMBER(segajw_state::lamps1_w) { - if(ACCESSING_BITS_0_7) - { - m_hopper_start_cycles = data & 0x02 ? 0 : m_maincpu->total_cycles(); - m_hopper_ctrl = data; - } -} - -READ8_MEMBER(segajw_state::lamps_r) -{ - return m_lamps[offset]; -} - -WRITE8_MEMBER(segajw_state::lamps_w) -{ - for(int i=0; i<8; i++) - output().set_lamp_value((offset * 8) + i, BIT(data, i)); - - m_lamps[offset] = data; + for (int i = 0; i < 8; i++) + output().set_lamp_value(i, BIT(data, i)); } -READ16_MEMBER(segajw_state::coinlockout_r) +WRITE8_MEMBER(segajw_state::lamps2_w) { - return m_coin_lockout; + for (int i = 0; i < 8; i++) + output().set_lamp_value(8 + i, BIT(data, i)); } -WRITE16_MEMBER(segajw_state::coinlockout_w) +WRITE8_MEMBER(segajw_state::coinlockout_w) { machine().bookkeeping().coin_lockout_w(0, data & 1); - m_coin_lockout = data; for(int i=0; i<3; i++) output().set_indexed_value("towerlamp", i, BIT(data, 3 + i)); @@ -200,18 +179,9 @@ static ADDRESS_MAP_START( segajw_map, AS_PROGRAM, 16, segajw_state ) AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("DSW3") AM_RANGE(0x18000c, 0x18000d) AM_READ_PORT("DSW2") - AM_RANGE(0x1a0000, 0x1a0001) AM_WRITE(coin_counter_w) - AM_RANGE(0x1a0002, 0x1a0005) AM_READWRITE8(lamps_r, lamps_w, 0x00ff) - AM_RANGE(0x1a0006, 0x1a0007) AM_READWRITE(hopper_r, hopper_w) - AM_RANGE(0x1a000a, 0x1a000b) AM_READ(coin_counter_r) + AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE8("io1a", sega_315_5296_device, read, write, 0x00ff) - AM_RANGE(0x1a000e, 0x1a000f) AM_NOP - - AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("IN0") - AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("IN1") - AM_RANGE(0x1c0004, 0x1c0005) AM_READ_PORT("IN2") - AM_RANGE(0x1c0006, 0x1c0007) AM_READ_PORT("IN3") - AM_RANGE(0x1c000c, 0x1c000d) AM_READWRITE(coinlockout_r, coinlockout_w) + AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE8("io1c", sega_315_5296_device, read, write, 0x00ff) AM_RANGE(0x280000, 0x280001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) AM_RANGE(0x280002, 0x280003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) @@ -239,36 +209,36 @@ ADDRESS_MAP_END static INPUT_PORTS_START( segajw ) PORT_START("IN0") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("1 Bet") - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Max Bet") - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Deal / Draw") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("1 Bet") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Max Bet") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Deal / Draw") PORT_START("IN1") - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Double") - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Change") - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_R) - PORT_BIT( 0x000d, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Double") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Change") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_R) + PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Meter") - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Last Game") PORT_CODE(KEYCODE_T) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("M-Door") - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D-Door") - PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, segajw_state, hopper_sensors_r, nullptr) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Full") - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Fill") - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Meter") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Last Game") PORT_CODE(KEYCODE_T) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("M-Door") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D-Door") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, segajw_state, hopper_sensors_r, nullptr) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Full") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Fill") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN3") - PORT_BIT( 0x0007, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, segajw_state, coin_sensors_r, nullptr) - PORT_BIT( 0x00f8, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, segajw_state, coin_sensors_r, nullptr) + PORT_BIT( 0xf8, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("COIN1") // start the coin drop sequence (see coin_sensors_r) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, segajw_state, coin_drop_start, nullptr) @@ -372,9 +342,6 @@ 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)); } @@ -383,15 +350,13 @@ void segajw_state::machine_reset() m_coin_start_cycles = 0; m_hopper_start_cycles = 0; m_coin_counter = 0xff; - m_coin_lockout = 0; - m_hopper_ctrl = 0; } static ADDRESS_MAP_START( ramdac_map, AS_0, 8, segajw_state ) AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( segajw, segajw_state ) +static MACHINE_CONFIG_START( segajw ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,8000000) // unknown clock MCFG_CPU_PROGRAM_MAP(segajw_map) @@ -405,6 +370,20 @@ static MACHINE_CONFIG_START( segajw, segajw_state ) MCFG_NVRAM_ADD_NO_FILL("nvram") + MCFG_DEVICE_ADD("io1a", SEGA_315_5296, 0) // unknown clock + MCFG_315_5296_OUT_PORTA_CB(WRITE8(segajw_state, coin_counter_w)) + MCFG_315_5296_OUT_PORTB_CB(WRITE8(segajw_state, lamps1_w)) + MCFG_315_5296_OUT_PORTC_CB(WRITE8(segajw_state, lamps2_w)) + MCFG_315_5296_OUT_PORTD_CB(WRITE8(segajw_state, hopper_w)) + MCFG_315_5296_IN_PORTF_CB(READ8(segajw_state, coin_counter_r)) + + MCFG_DEVICE_ADD("io1c", SEGA_315_5296, 0) // unknown clock + MCFG_315_5296_IN_PORTA_CB(IOPORT("IN0")) + MCFG_315_5296_IN_PORTB_CB(IOPORT("IN1")) + MCFG_315_5296_IN_PORTC_CB(IOPORT("IN2")) + MCFG_315_5296_IN_PORTD_CB(IOPORT("IN3")) + MCFG_315_5296_OUT_PORTG_CB(WRITE8(segajw_state, coinlockout_w)) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -449,4 +428,4 @@ ROM_START( segajw ) ROM_END -GAMEL( 1991, segajw, 0, segajw, segajw, driver_device, 0, ROT0, "Sega", "Joker's Wild (Rev. B)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_segajw ) +GAMEL( 1991, segajw, 0, segajw, segajw, segajw_state, 0, ROT0, "Sega", "Joker's Wild (Rev. B)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_segajw ) diff --git a/src/mame/drivers/segald.cpp b/src/mame/drivers/segald.cpp index 8a950115fda..82df5949cbc 100644 --- a/src/mame/drivers/segald.cpp +++ b/src/mame/drivers/segald.cpp @@ -367,7 +367,7 @@ void segald_state::machine_start() /* DRIVER */ -static MACHINE_CONFIG_START( astron, segald_state ) +static MACHINE_CONFIG_START( astron ) /* main cpu */ MCFG_CPU_ADD("maincpu", Z80, SCHEMATIC_CLOCK/4) @@ -605,10 +605,10 @@ DRIVER_INIT_MEMBER(segald_state,astron) } -// YEAR, NAME, PARENT, MACHINE,INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1983, astron, 0, astron, astron, segald_state, astron, ROT0, "Sega", "Astron Belt", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME( 1983, astronp, astron, astron, astron, segald_state, astron, ROT0, "Sega", "Astron Belt (Pioneer LDV1000)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +// YEAR, NAME, PARENT, MACHINE,INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS +GAME( 1983, astron, 0, astron, astron, segald_state, astron, ROT0, "Sega", "Astron Belt", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME( 1983, astronp, astron, astron, astron, segald_state, astron, ROT0, "Sega", "Astron Belt (Pioneer LDV1000)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME( 1983, cobraseg, astron, astron, astron, segald_state, astron, ROT0, "Sega", "Cobra Command (Sega LaserDisc Hardware)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME( 1983, galaxyr, 0, astron, astron, segald_state, astron, ROT0, "Sega", "Galaxy Ranger", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME( 1983, galaxyrp, galaxyr, astron, astron, segald_state, astron, ROT0, "Sega", "Galaxy Ranger (Pioneer LDV1000)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME( 1983, sblazerp, galaxyr, astron, astron, segald_state, astron, ROT0, "Sega", "Star Blazer (Pioneer LDV1000)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME( 1983, galaxyr, 0, astron, astron, segald_state, astron, ROT0, "Sega", "Galaxy Ranger", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME( 1983, galaxyrp, galaxyr, astron, astron, segald_state, astron, ROT0, "Sega", "Galaxy Ranger (Pioneer LDV1000)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME( 1983, sblazerp, galaxyr, astron, astron, segald_state, astron, ROT0, "Sega", "Star Blazer (Pioneer LDV1000)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) diff --git a/src/mame/drivers/segam1.cpp b/src/mame/drivers/segam1.cpp index 2f5cd4c3729..b4ce2ac3031 100644 --- a/src/mame/drivers/segam1.cpp +++ b/src/mame/drivers/segam1.cpp @@ -10,12 +10,12 @@ used for redemption / gambling style machines in a satellite setup based on Caribbean Boule the following hardware setup is used -One X-Board (segaxbd.c) drives a large rear-projection monitor which all players view to see the main game progress. +One X-Board (segaxbd.cpp) drives a large rear-projection monitor which all players view to see the main game progress. Multiple M1 boards ("satellite" board) for each player for them to view information privately. One 'link' board which connects everything together. The link board has audio hardware, a 68K, and a Z80 as -well as a huge bank of UARTS and toslink connectors, but no video. it's possible the main game logic runs +well as a huge bank of UARTS and toslink connectors, but no video. It's possible the main game logic runs on the 'link' board. @@ -23,7 +23,7 @@ Unfortunately we don't have any dumps of anything other than an M1 board right n --- -is this related to (or a component of?) bingoc.c, the EPR numbers are much lower there tho +is this related to (or a component of?) bingoc.cpp, the EPR numbers are much lower there tho so it's probably an earlier version of the same thing or one of the 'link' boards? uses s24 style tilemaps (ram based?) @@ -34,6 +34,13 @@ uses s24 style tilemaps (ram based?) #include "emu.h" #include "cpu/m68000/m68000.h" +#include "cpu/z80/z80.h" +#include "machine/315_5296.h" +#include "machine/gen_latch.h" +#include "machine/i8251.h" +#include "machine/mb8421.h" +#include "sound/2612intf.h" +#include "video/segaic24.h" #include "screen.h" #include "speaker.h" @@ -45,59 +52,351 @@ public: segam1_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") + , m_screen(*this, "screen") + , m_palette(*this, "palette") + , m_paletteram(*this, "paletteram") + , m_tile(*this, "tile") + , m_mixer(*this, "mixer") + , m_ymsnd(*this, "ymsnd") { } + DECLARE_WRITE16_MEMBER(paletteram_w); + DECLARE_WRITE8_MEMBER(sound_a0_bank_w); + + virtual void machine_start() override; virtual void video_start() override; - uint32_t screen_update_segam1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); required_device m_maincpu; + required_device m_screen; + required_device m_palette; + required_shared_ptr m_paletteram; + required_device m_tile; + required_device m_mixer; + required_device m_ymsnd; }; +void segam1_state::machine_start() +{ + membank("soundbank")->configure_entries(0x00, 0x10, memregion("audiocpu")->base(), 0x2000); +} + void segam1_state::video_start() { } -uint32_t segam1_state::screen_update_segam1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +WRITE8_MEMBER(segam1_state::sound_a0_bank_w) +{ + membank("soundbank")->set_entry(data & 0x0f); +} + +// 315-5242 + +WRITE16_MEMBER(segam1_state::paletteram_w) +{ + COMBINE_DATA(&m_paletteram[offset]); + data = m_paletteram[offset]; + + u16 r = (data & 0x00f) << 4; + if(data & 0x1000) + r |= 8; + + u16 g = data & 0x0f0; + if(data & 0x2000) + g |= 8; + + u16 b = (data & 0xf00) >> 4; + if(data & 0x4000) + b |= 8; + + r |= r >> 5; + g |= g >> 5; + b |= b >> 5; + + m_palette->set_pen_color(offset, rgb_t(r, g, b)); + + if(data & 0x8000) { + r = 255-0.6*(255-r); + g = 255-0.6*(255-g); + b = 255-0.6*(255-b); + } else { + r = 0.6*r; + g = 0.6*g; + b = 0.6*b; + } + m_palette->set_pen_color(offset+m_palette->entries()/2, rgb_t(r, g, b)); +} + + +// copied from segas24.cpp +namespace { + struct layer_sort { + layer_sort(segas24_mixer_device *_mixer) { mixer = _mixer; } + + bool operator()(int l1, int l2) { + static const int default_pri[12] = { 0, 1, 2, 3, 4, 5, 6, 7, -4, -3, -2, -1 }; + int p1 = mixer->get_reg(l1) & 7; + int p2 = mixer->get_reg(l2) & 7; + if(p1 != p2) + return p1 - p2 < 0; + return default_pri[l2] - default_pri[l1] < 0; + } + + segas24_mixer_device *mixer; + }; +} + +// copied from segas24.cpp +uint32_t segam1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { + if (m_mixer->get_reg(13) & 1) + { + bitmap.fill(m_palette->black_pen()); + return 0; + } + + screen.priority().fill(0); + bitmap.fill(0, cliprect); + + std::vector order; + order.resize(12); + for(int i=0; i<12; i++) + order[i] = i; + + std::sort(order.begin(), order.end(), layer_sort(m_mixer.target())); + + int level = 0; + for(int i=0; i<12; i++) + if(order[i] < 8) + m_tile->draw(screen, bitmap, cliprect, order[i], level, 0); + else + level++; + return 0; } static ADDRESS_MAP_START( segam1_map, AS_PROGRAM, 16, segam1_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM + AM_RANGE(0x000000, 0x07ffff) AM_ROM + AM_RANGE(0x340000, 0x340fff) AM_DEVREADWRITE8("dpram", mb8421_device, right_r, right_w, 0x00ff) + AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) + AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP /* Horizontal split position (ABSEL) */ + AM_RANGE(0xb40000, 0xb40001) AM_WRITENOP /* Scanline trigger position (XHOUT) */ + AM_RANGE(0xb60000, 0xb60001) AM_WRITENOP /* Frame trigger position (XVOUT) */ + AM_RANGE(0xb70000, 0xb70001) AM_WRITENOP /* Synchronization mode */ + AM_RANGE(0xb80000, 0xbfffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) + AM_RANGE(0xc00000, 0xc03fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") + AM_RANGE(0xc04000, 0xc0401f) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write) + AM_RANGE(0xe00000, 0xe0001f) AM_DEVREADWRITE8("io1", sega_315_5296_device, read, write, 0x00ff) + AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("INX") + AM_RANGE(0xe40002, 0xe40003) AM_READ_PORT("INY") + AM_RANGE(0xe40004, 0xe40005) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) + AM_RANGE(0xe40006, 0xe40007) AM_WRITENOP + AM_RANGE(0xe40008, 0xe40009) AM_READ_PORT("INZ") + AM_RANGE(0xe80000, 0xe8001f) AM_DEVREADWRITE8("io2", sega_315_5296_device, read, write, 0x00ff) + AM_RANGE(0xf00000, 0xf03fff) AM_MIRROR(0x0fc000) AM_RAM // NVRAM? +ADDRESS_MAP_END + +static ADDRESS_MAP_START( segam1_sound_map, AS_PROGRAM, 8, segam1_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("soundbank") + AM_RANGE(0xf000, 0xffff) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( unkm1_sound_map, AS_PROGRAM, 8, segam1_state ) + AM_RANGE(0xe000, 0xefff) AM_RAM + AM_IMPORT_FROM(segam1_sound_map) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( segam1_sound_io_map, AS_IO, 8, segam1_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write) + AM_RANGE(0xa0, 0xa0) AM_WRITE(sound_a0_bank_w) + AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP +ADDRESS_MAP_END + +static ADDRESS_MAP_START( segam1_comms_map, AS_PROGRAM, 8, segam1_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0x9fff) AM_RAM + AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w) + AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) + AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) + AM_RANGE(0xe003, 0xe003) AM_WRITENOP // ??? ADDRESS_MAP_END static INPUT_PORTS_START( segam1 ) + PORT_START("INA") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + + PORT_START("INB") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + + PORT_START("INC") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + + PORT_START("IND") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + + PORT_START("INE") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + + PORT_START("INF") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + + PORT_START("ING") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + + PORT_START("INX") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNUSED) + + PORT_START("INY") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNUSED) + + PORT_START("INZ") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNUSED) INPUT_PORTS_END -static MACHINE_CONFIG_START( segam1, segam1_state ) +static MACHINE_CONFIG_START( segam1 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) MCFG_CPU_PROGRAM_MAP(segam1_map) -// MCFG_CPU_VBLANK_INT_DRIVER("screen", segam1_state, irq1_line_hold) + MCFG_CPU_VBLANK_INT_DRIVER("screen", segam1_state, irq4_line_hold) + + MCFG_CPU_ADD("audiocpu", Z80, 4000000) // unknown clock + MCFG_CPU_PROGRAM_MAP(segam1_sound_map) + MCFG_CPU_IO_MAP(segam1_sound_io_map) + + MCFG_CPU_ADD("m1comm", Z80, 4000000) // unknown clock + MCFG_CPU_PROGRAM_MAP(segam1_comms_map) + + MCFG_DEVICE_ADD("io1", SEGA_315_5296, 0) // unknown clock + MCFG_315_5296_IN_PORTA_CB(IOPORT("INA")) + MCFG_315_5296_IN_PORTB_CB(IOPORT("INB")) + MCFG_315_5296_IN_PORTC_CB(IOPORT("INC")) + MCFG_315_5296_IN_PORTD_CB(IOPORT("IND")) + MCFG_315_5296_IN_PORTE_CB(IOPORT("INE")) + MCFG_315_5296_IN_PORTF_CB(IOPORT("INF")) + + MCFG_DEVICE_ADD("io2", SEGA_315_5296, 0) // unknown clock + MCFG_315_5296_IN_PORTG_CB(IOPORT("ING")) + + MCFG_DEVICE_ADD("uart", I8251, 4000000) // unknown clock + + MCFG_DEVICE_ADD("dpram", MB8421, 0) + MCFG_MB8421_INTL_HANDLER(INPUTLINE("m1comm", 0)) + MCFG_S24TILE_DEVICE_ADD("tile", 0x3fff) + MCFG_S24TILE_DEVICE_PALETTE("palette") + MCFG_S24MIXER_DEVICE_ADD("mixer") MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(segam1_state, screen_update_segam1) + MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) + MCFG_SCREEN_RAW_PARAMS(16000000, 656, 0, 496, 424, 0, 384) // copied from segas24.cpp; may not be accurate + MCFG_SCREEN_UPDATE_DRIVER(segam1_state, screen_update) MCFG_SCREEN_PALETTE("palette") - MCFG_PALETTE_ADD("palette", 0x200) - MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_PALETTE_ADD("palette", 8192*2) - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + // sound hardware + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI)) + + MCFG_SOUND_ADD("ymsnd", YM3438, 8000000) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + //MCFG_YM2612_IRQ_HANDLER(WRITELINE(segam1_state, ym3438_irq_handler)) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( unkm1, segam1 ) + MCFG_CPU_MODIFY("audiocpu") + MCFG_CPU_PROGRAM_MAP(unkm1_sound_map) + + MCFG_CPU_MODIFY("m1comm") + MCFG_DEVICE_DISABLE() // not dumped yet MACHINE_CONFIG_END -ROM_START( bingpty ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */ +ROM_START( bingpty ) // 1994/05/01 string + ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "epr-16648b.bin", 0x00000, 0x20000, CRC(e4fceb4c) SHA1(0a248bb328d2f6d72d540baefbe62838f4b76585) ) ROM_LOAD16_BYTE( "epr-16649b.bin", 0x00001, 0x20000, CRC(736d8bbd) SHA1(c359ad513d4a7693cbb1a27ce26f89849e894d05) ) @@ -110,4 +409,21 @@ ROM_START( bingpty ) // dumps of the X-Board part, and the LINK PCB are missing. ROM_END -GAME( 199?, bingpty, 0, segam1, segam1, driver_device, 0, ROT0, "Sega", "Bingo Party Multicart (Rev B) (M1 Satellite board)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +ROM_START( unkm1 ) // 1992.01.31 string + ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */ + ROM_LOAD16_BYTE( "epr-14427.ic8", 0x00000, 0x40000, CRC(2d904fc6) SHA1(7062f47d77d09906420118c85e1cb565bec345a7) ) + ROM_LOAD16_BYTE( "epr-14428.ic7", 0x00001, 0x40000, CRC(97a317f4) SHA1(19bc4cf6b6c580caa44f36c929b445ed94b2d9eb) ) + + ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 Code */ + ROM_LOAD( "epr-14429.ic104", 0x00000, 0x20000, CRC(1ff8262d) SHA1(fb90bd877b2dc65eb3e5495d6e21dee1f871fb44) ) + + ROM_REGION( 0x8000, "m1comm", 0 ) + ROM_LOAD( "unkm1_comm.bin", 0x00000, 0x8000, NO_DUMP ) // CPU almost certainly exists, but not even type is confirmed + + ROM_REGION( 0x100, "plds", 0 ) + ROM_LOAD( "315-5472-01.ic22", 0x000, 0x0eb, CRC(828ee6e2) SHA1(f32dd0f6297cc8bd3049be4bca502c0f8ec738cf) ) + // dumps of the X-Board part, and the LINK PCB are missing. +ROM_END + +GAME( 1994, bingpty, 0, segam1, segam1, segam1_state, 0, ROT0, "Sega", "Bingo Party Multicart (Rev B) (M1 Satellite board)", MACHINE_NOT_WORKING ) +GAME( 1992, unkm1, 0, unkm1, segam1, segam1_state, 0, ROT0, "Sega", "Unknown Sega gambling game (M1 Satellite board)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/segaorun.cpp b/src/mame/drivers/segaorun.cpp index ec48b1d206c..6df2d4c3ffd 100644 --- a/src/mame/drivers/segaorun.cpp +++ b/src/mame/drivers/segaorun.cpp @@ -610,7 +610,7 @@ void segaorun_state::device_timer(emu_timer &timer, device_timer_id id, int para case 65: case 129: case 193: - timer_set(m_screen->time_until_pos(scanline, m_screen->visible_area().max_x + 1), TID_IRQ2_GEN); + m_irq2_gen_timer->adjust(m_screen->time_until_pos(scanline, m_screen->visible_area().max_x + 1)); next_scanline = scanline + 1; break; @@ -1183,7 +1183,7 @@ GFXDECODE_END // GENERIC MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( outrun_base, segaorun_state ) +static MACHINE_CONFIG_START( outrun_base ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/4) @@ -2925,6 +2925,8 @@ DRIVER_INIT_MEMBER(segaorun_state,generic) // allocate a scanline timer m_scanline_timer = timer_alloc(TID_SCANLINE); + m_irq2_gen_timer = timer_alloc(TID_IRQ2_GEN); + // configure the NVRAM to point to our workram if (m_nvram != nullptr) m_nvram->set_base(m_workram, m_workram.bytes()); diff --git a/src/mame/drivers/segapico.cpp b/src/mame/drivers/segapico.cpp index 686a69e889f..562c209517c 100644 --- a/src/mame/drivers/segapico.cpp +++ b/src/mame/drivers/segapico.cpp @@ -120,6 +120,7 @@ C = MB3514 / 9325 M36 #include "emu.h" #include "includes/megadriv.h" #include "sound/315-5641.h" +#include "bus/megadrive/rom.h" #include "softlist.h" @@ -161,7 +162,7 @@ class pico_state : public pico_base_state { public: pico_state(const machine_config &mconfig, device_type type, const char *tag) - : pico_base_state(mconfig, type, tag), + : pico_base_state(mconfig, type, tag), m_picocart(*this, "picoslot") { } required_device m_picocart; @@ -384,7 +385,7 @@ MACHINE_START_MEMBER(pico_state,pico) m_vdp->stop_timers(); } -static MACHINE_CONFIG_START( pico, pico_state ) +static MACHINE_CONFIG_START( pico ) MCFG_FRAGMENT_ADD( md_ntsc ) MCFG_CPU_MODIFY("maincpu") @@ -405,7 +406,7 @@ static MACHINE_CONFIG_START( pico, pico_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.16) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( picopal, pico_state ) +static MACHINE_CONFIG_START( picopal ) MCFG_FRAGMENT_ADD( md_pal ) MCFG_CPU_MODIFY("maincpu") @@ -469,9 +470,9 @@ DRIVER_INIT_MEMBER(pico_base_state, picoj) } -CONS( 1994, pico, 0, 0, picopal, pico, pico_base_state, pico, "Sega", "Pico (Europe, PAL)", MACHINE_NOT_WORKING) -CONS( 1994, picou, pico, 0, pico, pico, pico_base_state, picou, "Sega", "Pico (USA, NTSC)", MACHINE_NOT_WORKING) -CONS( 1993, picoj, pico, 0, pico, pico, pico_base_state, picoj, "Sega", "Pico (Japan, NTSC)", MACHINE_NOT_WORKING) +CONS( 1994, pico, 0, 0, picopal, pico, pico_state, pico, "Sega", "Pico (Europe, PAL)", MACHINE_NOT_WORKING) +CONS( 1994, picou, pico, 0, pico, pico, pico_state, picou, "Sega", "Pico (USA, NTSC)", MACHINE_NOT_WORKING) +CONS( 1993, picoj, pico, 0, pico, pico, pico_state, picoj, "Sega", "Pico (Japan, NTSC)", MACHINE_NOT_WORKING) /* @@ -596,7 +597,7 @@ MACHINE_START_MEMBER(copera_state,copera) } -static MACHINE_CONFIG_START( copera, copera_state ) +static MACHINE_CONFIG_START( copera ) MCFG_FRAGMENT_ADD( md_ntsc ) MCFG_CPU_MODIFY("maincpu") @@ -624,4 +625,4 @@ ROM_START( copera ) ROM_REGION( 0x10000, "soundcpu", ROMREGION_ERASEFF) ROM_END -CONS( 1993, copera, 0, 0, copera, pico, pico_base_state, picoj, "Yamaha / Sega", "Yamaha Mixt Book Player Copera", MACHINE_NOT_WORKING) +CONS( 1993, copera, 0, 0, copera, pico, copera_state, picoj, "Yamaha / Sega", "Yamaha Mixt Book Player Copera", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/segapm.cpp b/src/mame/drivers/segapm.cpp index 1f70e62bda1..eeb729d257e 100644 --- a/src/mame/drivers/segapm.cpp +++ b/src/mame/drivers/segapm.cpp @@ -52,7 +52,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( segapm, segapm_state ) +static MACHINE_CONFIG_START( segapm ) MCFG_CPU_ADD("maincpu", M68000, 8000000) // ?? MCFG_CPU_PROGRAM_MAP(segapm_map) @@ -80,5 +80,5 @@ ROM_START( segapm ) // was more than one cartridge available? if so softlist the // todo, sh2 bios roms etc. ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -CONS( 1996, segapm, 0, 0, segapm, segapm, driver_device, 0, "Sega", "Picture Magic", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS( 1996, segapm, 0, 0, segapm, segapm, segapm_state, 0, "Sega", "Picture Magic", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp index 1e1de35534b..6df55e060f2 100644 --- a/src/mame/drivers/segas16a.cpp +++ b/src/mame/drivers/segas16a.cpp @@ -405,7 +405,7 @@ READ8_MEMBER( segas16a_state::n7751_p2_r ) { // read from P2 - 8255's PC0-2 connects to 7751's S0-2 (P24-P26 on an 8048) // bit 0x80 is an alternate way to control the sample on/off; doesn't appear to be used - return 0x80 | ((m_n7751_command & 0x07) << 4) | (m_n7751_i8243->i8243_p2_r(space, offset) & 0x0f); + return 0x80 | ((m_n7751_command & 0x07) << 4) | (m_n7751_i8243->p2_r(space, offset) & 0x0f); } @@ -416,24 +416,13 @@ READ8_MEMBER( segas16a_state::n7751_p2_r ) WRITE8_MEMBER( segas16a_state::n7751_p2_w ) { // write to P2; low 4 bits go to 8243 - m_n7751_i8243->i8243_p2_w(space, offset, data & 0x0f); + m_n7751_i8243->p2_w(space, offset, data & 0x0f); // output of bit $80 indicates we are ready (1) or busy (0) // no other outputs are used } -//------------------------------------------------- -// n7751_t1_r - MCU reads from the T1 line -//------------------------------------------------- - -READ8_MEMBER( segas16a_state::n7751_t1_r ) -{ - // T1 - labelled as "TEST", connected to ground - return 0; -} - - //************************************************************************** // I8751 MCU READ/WRITE HANDLERS @@ -999,19 +988,6 @@ static ADDRESS_MAP_START( sound_no7751_portmap, AS_IO, 8, segas16a_state ) ADDRESS_MAP_END -//************************************************************************** -// N7751 SOUND GENERATOR CPU ADDRESS MAPS -//************************************************************************** - -static ADDRESS_MAP_START( n7751_portmap, AS_IO, 8, segas16a_state ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(n7751_rom_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(n7751_t1_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(n7751_p2_r, n7751_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("n7751_8243", i8243_device, i8243_prog_w) -ADDRESS_MAP_END - - //************************************************************************** // I8751 MCU ADDRESS MAPS @@ -1892,7 +1868,7 @@ GFXDECODE_END // GENERIC MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( system16a, segas16a_state ) +static MACHINE_CONFIG_START( system16a ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -1904,7 +1880,12 @@ static MACHINE_CONFIG_START( system16a, segas16a_state ) MCFG_CPU_IO_MAP(sound_portmap) MCFG_CPU_ADD("n7751", N7751, 6000000) - MCFG_CPU_IO_MAP(n7751_portmap) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(segas16a_state, n7751_rom_r)) + MCFG_MCS48_PORT_T1_IN_CB(GND) // labelled as "TEST", connected to ground + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(segas16a_state, n7751_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(segas16a_state, n7751_p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("n7751_8243", i8243_device, prog_w)) MCFG_I8243_ADD("n7751_8243", NOOP, WRITE8(segas16a_state,n7751_rom_offset_w)) diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp index 5ce8c3737cc..d875f81b30a 100644 --- a/src/mame/drivers/segas16b.cpp +++ b/src/mame/drivers/segas16b.cpp @@ -3596,7 +3596,7 @@ GFXDECODE_END // GENERIC MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( system16b, segas16b_state ) +static MACHINE_CONFIG_START( system16b ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK_10MHz) @@ -3638,7 +3638,9 @@ static MACHINE_CONFIG_START( system16b, segas16b_state ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( system16b_mc8123, system16b ) - MCFG_CPU_MODIFY("soundcpu") + MCFG_CPU_REPLACE("soundcpu", MC8123, MASTER_CLOCK_10MHz/2) + MCFG_CPU_PROGRAM_MAP(sound_map) + MCFG_CPU_IO_MAP(sound_portmap) MCFG_CPU_DECRYPTED_OPCODES_MAP(sound_decrypted_opcodes_map) MACHINE_CONFIG_END @@ -3746,7 +3748,7 @@ static MACHINE_CONFIG_DERIVED( fpointbl, system16b ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lockonph, segas16b_state ) +static MACHINE_CONFIG_START( lockonph ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // ? @@ -3785,7 +3787,7 @@ static MACHINE_CONFIG_START( lockonph, segas16b_state ) MCFG_SOUND_ROUTE(0, "mono", 0.5) MCFG_SOUND_ROUTE(1, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_LOW) // clock / pin not verified + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_LOW) // clock / pin not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.2) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.2) @@ -3987,7 +3989,7 @@ ROM_START( aliensyn7 ) ROM_LOAD( "epr-10725.a9", 0x20000, 0x8000, CRC(6a50e08f) SHA1(d34b2ccadb8b07d5ad99cab5c5b5b79642c65574) ) ROM_LOAD( "epr-10726.a10", 0x30000, 0x8000, CRC(d50b7736) SHA1(b1f8e3b0cf2ffee5382098100cfabe21b383cd51) ) - ROM_REGION( 0x2000, "mc8123", 0 ) // MC8123 key + ROM_REGION( 0x2000, "soundcpu:key", 0 ) // MC8123 key ROM_LOAD( "317-00xx.key", 0x0000, 0x2000, CRC(76b370cd) SHA1(996a4a24dec085caf93cbe614d3b0888379c91dd) ) ROM_END @@ -4279,7 +4281,7 @@ ROM_START( altbeast4 ) ROM_LOAD( "opr-11672.a11", 0x10000, 0x20000, CRC(bbd7f460) SHA1(bbc5c2219cb3a827d84062b19affd9780da2a3cf) ) ROM_LOAD( "opr-11673.a12", 0x30000, 0x20000, CRC(400c4a36) SHA1(de4bdfa91734410e0a7f6a16bf8336db172f458a) ) - ROM_REGION( 0x2000, "mc8123", 0 ) // MC8123 key + ROM_REGION( 0x2000, "soundcpu:key", 0 ) // MC8123 key ROM_LOAD( "317-0066.key", 0x0000, 0x2000, CRC(ed85a054) SHA1(dcc84ec077a8a489f45abfd2bf4a9ba377da28a5) ) ROM_END @@ -4395,7 +4397,7 @@ ROM_START( altbeast2 ) ROM_LOAD( "opr-11672.a11", 0x10000, 0x20000, CRC(bbd7f460) SHA1(bbc5c2219cb3a827d84062b19affd9780da2a3cf) ) ROM_LOAD( "opr-11673.a12", 0x30000, 0x20000, CRC(400c4a36) SHA1(de4bdfa91734410e0a7f6a16bf8336db172f458a) ) - ROM_REGION( 0x2000, "mc8123", 0 ) // MC8123 key + ROM_REGION( 0x2000, "soundcpu:key", 0 ) // MC8123 key ROM_LOAD( "317-0066.key", 0x0000, 0x2000, CRC(ed85a054) SHA1(dcc84ec077a8a489f45abfd2bf4a9ba377da28a5) ) ROM_END @@ -7055,7 +7057,7 @@ ROM_START( cencourt ) ROM_LOAD( "epr-a-10.a10", 0x30000, 0x08000, CRC(10263746) SHA1(1f981fb185c6a9795208ecdcfba36cf892a99ed5) ) // == epr-11860.a10 ROM_LOAD( "epr-a-11.a11", 0x40000, 0x08000, CRC(38b54a71) SHA1(68ec4ef5b115844214ff2213be1ce6678904fbd2) ) // == epr-11861.a11 - ROM_REGION( 0x2000, "mc8123", 0 ) // MC8123 key + ROM_REGION( 0x2000, "soundcpu:key", 0 ) // MC8123 key ROM_LOAD( "mc-8123b_center_court.key", 0x0000, 0x2000, CRC(2be5c90b) SHA1(e98d989237f2b001950b876efdb21c1507162830) ) // No official 317-xxxx number ROM_END @@ -7487,7 +7489,7 @@ ROM_START( shinobi4 ) ROM_LOAD( "epr-11377.a10", 0x00000, 0x08000, CRC(0fb6af34) SHA1(ae9da18bd2db317ed96c5f642f90cc1eba60ba99) ) // MC8123B (317-0054) encrypted version of epr-11361.a10 above ROM_LOAD( "epr-11362.a11", 0x10000, 0x20000, CRC(256af749) SHA1(041bd007ea7708c6d69f07865828b9bd17a139f5) ) - ROM_REGION( 0x2000, "mc8123", 0 ) // MC8123 key + ROM_REGION( 0x2000, "soundcpu:key", 0 ) // MC8123 key ROM_LOAD( "317-0054.key", 0x0000, 0x2000, CRC(39fd4535) SHA1(93bbb139d2d5acc6a1e338d92077e79a5e880b2e) ) ROM_END @@ -7525,7 +7527,7 @@ ROM_START( shinobi3 ) ROM_LOAD( "epr-11288.a8", 0x10000, 0x8000, CRC(c8df8460) SHA1(0aeb41a493df155edb5f600f53ec43b798927dff) ) ROM_LOAD( "epr-11289.a9", 0x20000, 0x8000, CRC(e5a4cf30) SHA1(d1982da7a550c11ab2253f5d64ac6ab847da0a04) ) - ROM_REGION( 0x2000, "mc8123", 0 ) // MC8123 key + ROM_REGION( 0x2000, "soundcpu:key", 0 ) // MC8123 key ROM_LOAD( "317-0054.key", 0x0000, 0x2000, CRC(39fd4535) SHA1(93bbb139d2d5acc6a1e338d92077e79a5e880b2e) ) ROM_END @@ -8631,7 +8633,7 @@ DRIVER_INIT_MEMBER(segas16b_state,aceattac_5358) DRIVER_INIT_MEMBER(segas16b_state,aliensyn7_5358_small) { DRIVER_INIT_CALL(generic_5358_small); - mc8123_decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, memregion("mc8123")->base(), 0x8000); + downcast(*m_soundcpu).decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, 0x8000); } @@ -8650,7 +8652,7 @@ DRIVER_INIT_MEMBER(segas16b_state,altbeas5_5521) DRIVER_INIT_MEMBER(segas16b_state,altbeas4_5521) { DRIVER_INIT_CALL(generic_5521); - mc8123_decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, memregion("mc8123")->base(), 0x8000); + downcast(*m_soundcpu).decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, 0x8000); } DRIVER_INIT_MEMBER(segas16b_state,ddux_5704) @@ -8663,7 +8665,7 @@ DRIVER_INIT_MEMBER(segas16b_state,dunkshot_5358_small) { DRIVER_INIT_CALL(generic_5358_small); m_custom_io_r = read16_delegate(FUNC(segas16b_state::dunkshot_custom_io_r), this); - m_tilemap_type = SEGAIC16_TILEMAP_16B_ALT; + m_tilemap_type = segaic16_video_device::TILEMAP_16B_ALT; } DRIVER_INIT_MEMBER(segas16b_state,exctleag_5358) @@ -8699,7 +8701,7 @@ DRIVER_INIT_MEMBER(segas16b_state,passshtj_5358) DRIVER_INIT_MEMBER(segas16b_state,cencourt_5358) { DRIVER_INIT_CALL(passshtj_5358); - mc8123_decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, memregion("mc8123")->base(), 0x8000); + downcast(*m_soundcpu).decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, 0x8000); } DRIVER_INIT_MEMBER(segas16b_state,sdi_5358_small) @@ -8724,13 +8726,13 @@ DRIVER_INIT_MEMBER(segas16b_state,defense_5358_small) DRIVER_INIT_MEMBER(segas16b_state,shinobi4_5521) { DRIVER_INIT_CALL(generic_5521); - mc8123_decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, memregion("mc8123")->base(), 0x8000); + downcast(*m_soundcpu).decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, 0x8000); } DRIVER_INIT_MEMBER(segas16b_state,shinobi3_5358) { DRIVER_INIT_CALL(generic_5358); - mc8123_decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, memregion("mc8123")->base(), 0x8000); + downcast(*m_soundcpu).decode(memregion("soundcpu")->base(), m_sound_decrypted_opcodes, 0x8000); } DRIVER_INIT_MEMBER(segas16b_state,sjryuko_5358_small) @@ -8738,13 +8740,13 @@ DRIVER_INIT_MEMBER(segas16b_state,sjryuko_5358_small) DRIVER_INIT_CALL(generic_5358_small); m_custom_io_r = read16_delegate(FUNC(segas16b_state::sjryuko_custom_io_r), this); m_custom_io_w = write16_delegate(FUNC(segas16b_state::sjryuko_custom_io_w), this); - m_tilemap_type = SEGAIC16_TILEMAP_16B_ALT; + m_tilemap_type = segaic16_video_device::TILEMAP_16B_ALT; } DRIVER_INIT_MEMBER(segas16b_state,timescan_5358_small) { DRIVER_INIT_CALL(generic_5358_small); - m_tilemap_type = SEGAIC16_TILEMAP_16B_ALT; + m_tilemap_type = segaic16_video_device::TILEMAP_16B_ALT; } DRIVER_INIT_MEMBER(segas16b_state,tturf_5704) @@ -9396,7 +9398,7 @@ void isgsm_state::machine_reset() } -static MACHINE_CONFIG_DERIVED_CLASS( isgsm, system16b, isgsm_state ) +static MACHINE_CONFIG_DERIVED( isgsm, system16b ) // basic machine hardware MCFG_DEVICE_REMOVE("maincpu") diff --git a/src/mame/drivers/segas18.cpp b/src/mame/drivers/segas18.cpp index c44c31e66cf..1da8c95315a 100644 --- a/src/mame/drivers/segas18.cpp +++ b/src/mame/drivers/segas18.cpp @@ -1356,7 +1356,7 @@ WRITE_LINE_MEMBER(segas18_state::ym3438_irq_handler) } -static MACHINE_CONFIG_START( system18, segas18_state ) +static MACHINE_CONFIG_START( system18 ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, 10000000) diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp index 47939a14c2a..4d3c87175f3 100644 --- a/src/mame/drivers/segas24.cpp +++ b/src/mame/drivers/segas24.cpp @@ -341,7 +341,9 @@ Notes: #include "cpu/m68000/m68000.h" #include "machine/fd1094.h" +#include "machine/msm6253.h" #include "machine/nvram.h" +#include "machine/315_5296.h" #include "sound/volt_reg.h" #include "sound/ym2151.h" #include "video/segaic24.h" @@ -518,157 +520,62 @@ WRITE16_MEMBER( segas24_state::fdc_ctrl_w ) // I/O Mappers -uint8_t segas24_state::hotrod_io_r(uint8_t port) +READ8_MEMBER(segas24_state::dcclub_p1_r) { - switch(port) - { - case 0: - return m_p1->read(); - case 1: - return m_p2->read(); - case 2: - return m_p3.read_safe(0xff); - case 3: - return 0xff; - case 4: - return m_service->read(); - case 5: // Dip switches - return m_coinage->read(); - case 6: - return m_dsw->read(); - case 7: // DAC - return 0xff; - } - return 0x00; + static const uint8_t pos[16] = { 0, 1, 3, 2, 6, 4, 12, 8, 9, 0, 0, 0 }; + return (m_p1->read() & 0xf) | ((~pos[m_paddle->read()>>4]<<4) & 0xf0); } -uint8_t segas24_state::dcclub_io_r(uint8_t port) +READ8_MEMBER(segas24_state::dcclub_p3_r) { - switch(port) - { - case 0: - { - static const uint8_t pos[16] = { 0, 1, 3, 2, 6, 4, 12, 8, 9, 0, 0, 0 }; - return (m_p1->read() & 0xf) | ((~pos[m_paddle->read()>>4]<<4) & 0xf0); - } - case 1: - return m_p2->read(); - case 2: - { - static const uint8_t pos[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 2 }; - return(~pos[m_paddle->read()>>4] & 0x03) | 0xfc; - } - case 3: - return 0xff; - case 4: - return m_service->read(); - case 5: // Dip switches - return m_coinage->read(); - case 6: - return m_dsw->read(); - case 7: // DAC - return 0xff; - } - return 0x00; + static const uint8_t pos[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 2 }; + return(~pos[m_paddle->read()>>4] & 0x03) | 0xfc; } -uint8_t segas24_state::mahmajn_io_r(uint8_t port) +READ8_MEMBER(segas24_state::mahmajn_input_line_r) { - switch(port) - { - case 0: - return ~(1 << cur_input_line); - case 1: - return 0xff; - case 2: - return m_mj_inputs[cur_input_line].read_safe(0xff); - case 3: - return 0xff; - case 4: - return m_service->read(); - case 5: // Dip switches - return m_coinage->read(); - case 6: - return m_dsw->read(); - case 7: // DAC - return 0xff; - } - return 0x00; + return ~(1 << cur_input_line); } -void segas24_state::mahmajn_io_w(uint8_t port, uint8_t data) +READ8_MEMBER(segas24_state::mahmajn_inputs_r) { - switch(port) - { - case 3: - if(data & 4) - cur_input_line = (cur_input_line + 1) & 7; - break; - case 7: // DAC - m_dac->write(data); - break; - default: - fprintf(stderr, "Port %d : %02x\n", port, data & 0xff); - } + return m_mj_inputs[cur_input_line].read_safe(0xff); } -void segas24_state::hotrod_io_w(uint8_t port, uint8_t data) +WRITE8_MEMBER(segas24_state::mahmajn_mux_w) { - switch(port) - { - case 3: // Lamps - break; - case 7: // DAC - m_dac->write(data); - break; - default: - fprintf(stderr, "Port %d : %02x\n", port, data & 0xff); - } + if(data & 4) + cur_input_line = (cur_input_line + 1) & 7; } - -WRITE16_MEMBER( segas24_state::hotrod3_ctrl_w ) +WRITE8_MEMBER(segas24_state::hotrod_lamps_w) { - if(ACCESSING_BITS_0_7) - { - data &= 3; - hotrod_ctrl_cur = m_pedals[data].read_safe(0); - } + // Lamps } -READ16_MEMBER( segas24_state::hotrod3_ctrl_r ) + +READ8_MEMBER(segas24_state::dials_r) { - if(ACCESSING_BITS_0_7) + switch(offset) { - switch(offset) - { - // Steering dials - case 0: - return m_dials[0].read_safe(0) & 0xff; - case 1: - return m_dials[0].read_safe(0) >> 8; - case 2: - return m_dials[1].read_safe(0) & 0xff; - case 3: - return m_dials[1].read_safe(0) >> 8; - case 4: - return m_dials[2].read_safe(0) & 0xff; - case 5: - return m_dials[2].read_safe(0) >> 8; - case 6: - return m_dials[3].read_safe(0) & 0xff; - case 7: - return m_dials[3].read_safe(0) >> 8; - - case 8: - { - // Serial ADCs for the accel - int v = hotrod_ctrl_cur & 0x80; - hotrod_ctrl_cur <<= 1; - return v ? 0xff : 0; - } - } + // Steering dials + case 0: + return m_dials[0].read_safe(0) & 0xff; + case 1: + return m_dials[0].read_safe(0) >> 8; + case 2: + return m_dials[1].read_safe(0) & 0xff; + case 3: + return m_dials[1].read_safe(0) >> 8; + case 4: + return m_dials[2].read_safe(0) & 0xff; + case 5: + return m_dials[2].read_safe(0) >> 8; + case 6: + return m_dials[3].read_safe(0) & 0xff; + case 7: + return m_dials[3].read_safe(0) >> 8; } return 0; } @@ -746,11 +653,12 @@ TIMER_CALLBACK_MEMBER(segas24_state::gground_hack_timer_callback) // Cpu #1 reset control -void segas24_state::reset_reset() +WRITE_LINE_MEMBER(segas24_state::cnt1) { - int changed = resetcontrol ^ prev_resetcontrol; - if(changed & 2) { - if(resetcontrol & 2) { + if (bool(state) != m_cnt1) + { + if (state) + { m_subcpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); m_subcpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); //osd_printf_debug("enable 2nd cpu!\n"); @@ -760,19 +668,20 @@ void segas24_state::reset_reset() m_subcpu->set_clock_scale(0.7f); // reduce clock speed temporarily so a check passes, see notes above m_gground_hack_timer->adjust(attotime::from_seconds(2)); } - - } else + } + else m_subcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); } - if(changed & 4) - machine().device("ymsnd")->reset(); - prev_resetcontrol = resetcontrol; + + m_cnt1 = bool(state); } -void segas24_state::reset_control_w(uint8_t data) +WRITE_LINE_MEMBER(segas24_state::cnt2) { - resetcontrol = data; - reset_reset(); + if (bool(state) != m_cnt2) + machine().device("ymsnd")->reset(); + + m_cnt2 = bool(state); } @@ -1094,60 +1003,6 @@ WRITE_LINE_MEMBER(segas24_state::irq_ym) } -READ16_MEMBER ( segas24_state::sys16_io_r ) -{ - // logerror("IO read %02x (%s:%x)\n", offset, space.device().tag(), space.device().safe_pc()); - if(offset < 8) - return (this->*io_r)(offset); - else if (offset < 0x20) { - switch(offset) { - case 0x8: - return 'S'; - case 0x9: - return 'E'; - case 0xa: - return 'G'; - case 0xb: - return 'A'; - case 0xe: - return io_cnt; - case 0xf: - return io_dir; - default: - logerror("IO control read %02x (%s:%x)\n", offset, space.device().tag(), space.device().safe_pc()); - return 0xff; - } - } else - return iod_r(space, offset & 0x1f, mem_mask); -} - -WRITE16_MEMBER( segas24_state::sys16_io_w ) -{ - if(ACCESSING_BITS_0_7) { - if(offset < 8) { - if(!(io_dir & (1 << offset))) { - logerror("IO port write on input-only port (%d, [%02x], %02x, %s:%x)\n", offset, io_dir, data & 0xff, space.device().tag(), space.device().safe_pc()); - return; - } - (this->*io_w)(offset, data); - } else if (offset < 0x20) { - switch(offset) { - case 0xe: - io_cnt = data; - reset_control_w(data & 7); - break; - case 0xf: - io_dir = data; - break; - default: - logerror("IO control write %02x, %02x (%s:%x)\n", offset, data & 0xff, space.device().tag(), space.device().safe_pc()); - } - } - } - if(offset >= 0x20) - iod_w(space, offset & 0x1f, data, mem_mask); -} - // 315-5242 READ16_MEMBER( segas24_state::sys16_paletteram_r ) @@ -1245,16 +1100,17 @@ static ADDRESS_MAP_START( system24_cpu1_map, AS_PROGRAM, 16, segas24_state ) AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x040000) AM_ROM AM_REGION("maincpu", 0) AM_RANGE(0x080000, 0x0bffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1") AM_RANGE(0x100000, 0x13ffff) AM_MIRROR(0x0c0000) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x110000) AM_DEVREADWRITE("tile", segas24_tile, tile_r, tile_w) + AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x110000) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) AM_RANGE(0x220000, 0x220001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Horizontal split position (ABSEL) */ AM_RANGE(0x240000, 0x240001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Scanline trigger position (XHOUT) */ AM_RANGE(0x260000, 0x260001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Frame trigger position (XVOUT) */ AM_RANGE(0x270000, 0x270001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Synchronization mode */ - AM_RANGE(0x280000, 0x29ffff) AM_MIRROR(0x160000) AM_DEVREADWRITE("tile", segas24_tile, char_r, char_w) + AM_RANGE(0x280000, 0x29ffff) AM_MIRROR(0x160000) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) AM_RANGE(0x400000, 0x403fff) AM_MIRROR(0x1f8000) AM_READWRITE(sys16_paletteram_r, sys16_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer, read, write) - AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite, read, write) - AM_RANGE(0x800000, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(sys16_io_r, sys16_io_w) + AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write) + AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite_device, read, write) + AM_RANGE(0x800000, 0x80003f) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff) + AM_RANGE(0x800040, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(iod_r, iod_w) AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w) AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w) @@ -1264,7 +1120,7 @@ static ADDRESS_MAP_START( system24_cpu1_map, AS_PROGRAM, 16, segas24_state ) AM_RANGE(0xbc0002, 0xbc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff) AM_RANGE(0xbc0004, 0xbc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff) AM_RANGE(0xbc0006, 0xbc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w) - AM_RANGE(0xc00000, 0xc00011) AM_MIRROR(0x07ffe0) AM_READWRITE(hotrod3_ctrl_r, hotrod3_ctrl_w) + AM_RANGE(0xc00000, 0xc0000f) AM_MIRROR(0x07ffe0) AM_READ8(dials_r, 0x00ff) AM_RANGE(0xc80000, 0xcbffff) AM_ROMBANK("bank2") AM_RANGE(0xcc0000, 0xcc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w) AM_RANGE(0xcc0002, 0xcc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff) @@ -1274,6 +1130,11 @@ static ADDRESS_MAP_START( system24_cpu1_map, AS_PROGRAM, 16, segas24_state ) AM_RANGE(0xf80000, 0xfbffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1") ADDRESS_MAP_END +static ADDRESS_MAP_START( hotrod_cpu1_map, AS_PROGRAM, 16, segas24_state ) + AM_IMPORT_FROM(system24_cpu1_map) + AM_RANGE(0xc00010, 0xc00011) AM_MIRROR(0x07ffe0) AM_DEVREADWRITE8("pedaladc", msm6253_device, d7_r, select_w, 0x00ff) +ADDRESS_MAP_END + /************************************* @@ -1286,16 +1147,17 @@ static ADDRESS_MAP_START( system24_cpu2_map, AS_PROGRAM, 16, segas24_state ) AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("subcpu") AM_RANGE(0x080000, 0x0bffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1") AM_RANGE(0x100000, 0x13ffff) AM_MIRROR(0x0c0000) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x110000) AM_DEVREADWRITE("tile", segas24_tile, tile_r, tile_w) + AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x110000) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) AM_RANGE(0x220000, 0x220001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Horizontal split position (ABSEL) */ AM_RANGE(0x240000, 0x240001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Scanline trigger position (XHOUT) */ AM_RANGE(0x260000, 0x260001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Frame trigger position (XVOUT) */ AM_RANGE(0x270000, 0x270001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Synchronization mode */ - AM_RANGE(0x280000, 0x29ffff) AM_MIRROR(0x160000) AM_DEVREADWRITE("tile", segas24_tile, char_r, char_w) + AM_RANGE(0x280000, 0x29ffff) AM_MIRROR(0x160000) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) AM_RANGE(0x400000, 0x403fff) AM_MIRROR(0x1f8000) AM_READWRITE(sys16_paletteram_r, sys16_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer, read, write) - AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite, read, write) - AM_RANGE(0x800000, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(sys16_io_r, sys16_io_w) + AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write) + AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite_device, read, write) + AM_RANGE(0x800000, 0x80003f) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff) + AM_RANGE(0x800040, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(iod_r, iod_w) AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w) AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w) @@ -1305,7 +1167,7 @@ static ADDRESS_MAP_START( system24_cpu2_map, AS_PROGRAM, 16, segas24_state ) AM_RANGE(0xbc0002, 0xbc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff) AM_RANGE(0xbc0004, 0xbc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff) AM_RANGE(0xbc0006, 0xbc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w) - AM_RANGE(0xc00000, 0xc00011) AM_MIRROR(0x07ffe0) AM_READWRITE(hotrod3_ctrl_r, hotrod3_ctrl_w) + AM_RANGE(0xc00000, 0xc0000f) AM_MIRROR(0x07ffe0) AM_READ8(dials_r, 0x00ff) AM_RANGE(0xc80000, 0xcbffff) AM_ROMBANK("bank2") AM_RANGE(0xcc0000, 0xcc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w) AM_RANGE(0xcc0002, 0xcc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff) @@ -1315,6 +1177,11 @@ static ADDRESS_MAP_START( system24_cpu2_map, AS_PROGRAM, 16, segas24_state ) AM_RANGE(0xf80000, 0xfbffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1") ADDRESS_MAP_END +static ADDRESS_MAP_START( hotrod_cpu2_map, AS_PROGRAM, 16, segas24_state ) + AM_IMPORT_FROM(system24_cpu2_map) + AM_RANGE(0xc00010, 0xc00011) AM_MIRROR(0x07ffe0) AM_DEVREADWRITE8("pedaladc", msm6253_device, d7_r, select_w, 0x00ff) +ADDRESS_MAP_END + static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 16, segas24_state ) AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") ADDRESS_MAP_END @@ -1337,15 +1204,15 @@ void segas24_state::machine_start() membank("bank2")->configure_entries(0, 16, usr1, 0x40000); } - vtile = machine().device("tile"); - vsprite = machine().device("sprite"); - vmixer = machine().device("mixer"); + vtile = machine().device("tile"); + vsprite = machine().device("sprite"); + vmixer = machine().device("mixer"); } void segas24_state::machine_reset() { m_subcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); - prev_resetcontrol = resetcontrol = 0x06; + m_cnt1 = m_cnt2 = true; fdc_init(); curbank = 0; reset_bank(); @@ -2008,7 +1875,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( system24, segas24_state ) +static MACHINE_CONFIG_START( system24 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/2) @@ -2020,6 +1887,18 @@ static MACHINE_CONFIG_START( system24, segas24_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + MCFG_DEVICE_ADD("io", SEGA_315_5296, VIDEO_CLOCK/2) + MCFG_315_5296_IN_PORTA_CB(IOPORT("P1")) + MCFG_315_5296_IN_PORTB_CB(IOPORT("P2")) + MCFG_315_5296_IN_PORTC_CB(IOPORT("P3")) + MCFG_315_5296_OUT_PORTD_CB(WRITE8(segas24_state, hotrod_lamps_w)) + MCFG_315_5296_IN_PORTE_CB(IOPORT("SERVICE")) + MCFG_315_5296_IN_PORTF_CB(IOPORT("COINAGE")) + MCFG_315_5296_IN_PORTG_CB(IOPORT("DSW")) + MCFG_315_5296_OUT_PORTH_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_315_5296_OUT_CNT1_CB(WRITELINE(segas24_state, cnt1)) + MCFG_315_5296_OUT_CNT2_CB(WRITELINE(segas24_state, cnt2)) + MCFG_TIMER_DRIVER_ADD("irq_timer", segas24_state, irq_timer_cb) MCFG_TIMER_DRIVER_ADD("irq_timer_clear", segas24_state, irq_timer_clear_cb) MCFG_TIMER_ADD_NONE("frc_timer") @@ -2050,16 +1929,48 @@ static MACHINE_CONFIG_START( system24, segas24_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( mahmajn, system24 ) + MCFG_DEVICE_MODIFY("io") + MCFG_315_5296_IN_PORTA_CB(READ8(segas24_state, mahmajn_input_line_r)) + MCFG_315_5296_IN_PORTC_CB(READ8(segas24_state, mahmajn_inputs_r)) + MCFG_315_5296_OUT_PORTD_CB(WRITE8(segas24_state, mahmajn_mux_w)) +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( system24_floppy, system24 ) MCFG_NVRAM_ADD_NO_FILL("floppy_nvram") MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( system24_floppy_hotrod, system24_floppy ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(hotrod_cpu1_map) + MCFG_CPU_MODIFY("subcpu") + MCFG_CPU_PROGRAM_MAP(hotrod_cpu2_map) + + MCFG_DEVICE_ADD("pedaladc", MSM6253, 0) + MCFG_MSM6253_IN0_ANALOG_PORT("PEDAL1") + MCFG_MSM6253_IN1_ANALOG_PORT("PEDAL2") + MCFG_MSM6253_IN2_ANALOG_PORT("PEDAL3") + MCFG_MSM6253_IN3_ANALOG_PORT("PEDAL4") +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( system24_floppy_fd1094, system24_floppy ) MCFG_CPU_REPLACE("subcpu", FD1094, MASTER_CLOCK/2) MCFG_CPU_PROGRAM_MAP(system24_cpu2_map) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( dcclub, system24 ) + MCFG_DEVICE_MODIFY("io") + MCFG_315_5296_IN_PORTA_CB(READ8(segas24_state, dcclub_p1_r)) + MCFG_315_5296_IN_PORTC_CB(READ8(segas24_state, dcclub_p3_r)) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( system24_floppy_dcclub, system24_floppy_fd1094 ) + MCFG_DEVICE_MODIFY("io") + MCFG_315_5296_IN_PORTA_CB(READ8(segas24_state, dcclub_p1_r)) + MCFG_315_5296_IN_PORTC_CB(READ8(segas24_state, dcclub_p3_r)) +MACHINE_CONFIG_END + /************************************* * @@ -2411,40 +2322,30 @@ ROM_END DRIVER_INIT_MEMBER(segas24_state,qgh) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = segas24_state::qgh_mlt; track_size = 0; } DRIVER_INIT_MEMBER(segas24_state,dcclub) { - io_r = &segas24_state::dcclub_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = segas24_state::dcclub_mlt; track_size = 0; } DRIVER_INIT_MEMBER(segas24_state,qrouka) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = segas24_state::qrouka_mlt; track_size = 0; } DRIVER_INIT_MEMBER(segas24_state,quizmeku) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = segas24_state::quizmeku_mlt; track_size = 0; } DRIVER_INIT_MEMBER(segas24_state,mahmajn) { - io_r = &segas24_state::mahmajn_io_r; - io_w = &segas24_state::mahmajn_io_w; mlatch_table = segas24_state::mahmajn_mlt; track_size = 0; cur_input_line = 0; @@ -2452,8 +2353,6 @@ DRIVER_INIT_MEMBER(segas24_state,mahmajn) DRIVER_INIT_MEMBER(segas24_state,mahmajn2) { - io_r = &segas24_state::mahmajn_io_r; - io_w = &segas24_state::mahmajn_io_w; mlatch_table = segas24_state::mahmajn2_mlt; track_size = 0; cur_input_line = 0; @@ -2461,8 +2360,6 @@ DRIVER_INIT_MEMBER(segas24_state,mahmajn2) DRIVER_INIT_MEMBER(segas24_state,hotrod) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = nullptr; // Sector Size @@ -2478,8 +2375,6 @@ DRIVER_INIT_MEMBER(segas24_state,hotrod) DRIVER_INIT_MEMBER(segas24_state,bnzabros) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = segas24_state::bnzabros_mlt; // Sector Size @@ -2496,24 +2391,18 @@ DRIVER_INIT_MEMBER(segas24_state,bnzabros) DRIVER_INIT_MEMBER(segas24_state,sspirits) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = nullptr; track_size = 0x2d00; } DRIVER_INIT_MEMBER(segas24_state,sspiritj) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = nullptr; track_size = 0x2f00; } DRIVER_INIT_MEMBER(segas24_state,dcclubfd) { - io_r = &segas24_state::dcclub_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = segas24_state::dcclub_mlt; track_size = 0x2d00; } @@ -2521,24 +2410,18 @@ DRIVER_INIT_MEMBER(segas24_state,dcclubfd) DRIVER_INIT_MEMBER(segas24_state,sgmast) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = nullptr; track_size = 0x2d00; } DRIVER_INIT_MEMBER(segas24_state,qsww) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = nullptr; track_size = 0x2d00; } DRIVER_INIT_MEMBER(segas24_state,gground) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = nullptr; track_size = 0x2d00; @@ -2547,16 +2430,12 @@ DRIVER_INIT_MEMBER(segas24_state,gground) DRIVER_INIT_MEMBER(segas24_state,crkdown) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = nullptr; track_size = 0x2d00; } DRIVER_INIT_MEMBER(segas24_state,roughrac) { - io_r = &segas24_state::hotrod_io_r; - io_w = &segas24_state::hotrod_io_w; mlatch_table = nullptr; track_size = 0x2d00; } @@ -2570,10 +2449,10 @@ DRIVER_INIT_MEMBER(segas24_state,roughrac) // YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS /* Disk Based Games */ -/* 01 */GAME( 1988, hotrod, 0, system24_floppy, hotrod, segas24_state, hotrod, ROT0, "Sega", "Hot Rod (World, 3 Players, Turbo set 1, Floppy Based)", 0 ) -/* 01 */GAME( 1988, hotroda, hotrod, system24_floppy, hotrod, segas24_state, hotrod, ROT0, "Sega", "Hot Rod (World, 3 Players, Turbo set 2, Floppy Based)", 0 ) -/* 01 */GAME( 1988, hotrodj, hotrod, system24_floppy, hotrodj, segas24_state, hotrod, ROT0, "Sega", "Hot Rod (Japan, 4 Players, Floppy Based, Rev C)", 0 ) -/* 01 */GAME( 1988, hotrodja, hotrod, system24_floppy, hotrodj, segas24_state, hotrod, ROT0, "Sega", "Hot Rod (Japan, 4 Players, Floppy Based, Rev B)", 0 ) +/* 01 */GAME( 1988, hotrod, 0, system24_floppy_hotrod, hotrod, segas24_state, hotrod, ROT0, "Sega", "Hot Rod (World, 3 Players, Turbo set 1, Floppy Based)", 0 ) +/* 01 */GAME( 1988, hotroda, hotrod, system24_floppy_hotrod, hotrod, segas24_state, hotrod, ROT0, "Sega", "Hot Rod (World, 3 Players, Turbo set 2, Floppy Based)", 0 ) +/* 01 */GAME( 1988, hotrodj, hotrod, system24_floppy_hotrod, hotrodj, segas24_state, hotrod, ROT0, "Sega", "Hot Rod (Japan, 4 Players, Floppy Based, Rev C)", 0 ) +/* 01 */GAME( 1988, hotrodja, hotrod, system24_floppy_hotrod, hotrodj, segas24_state, hotrod, ROT0, "Sega", "Hot Rod (Japan, 4 Players, Floppy Based, Rev B)", 0 ) /* 02 */GAME( 1988, sspirits, 0, system24_floppy, sspirits, segas24_state, sspirits, ROT270, "Sega", "Scramble Spirits (World, Floppy Based)", 0 ) /* 02 */GAME( 1988, sspiritj, sspirits, system24_floppy, sspirits, segas24_state, sspiritj, ROT270, "Sega", "Scramble Spirits (Japan, Floppy DS3-5000-02-REV-A Based)", 0 ) /* 02 */GAME( 1988, sspirtfc, sspirits, system24_floppy_fd1094, sspirits, segas24_state, sspirits, ROT270, "Sega", "Scramble Spirits (World, Floppy Based, FD1094 317-0058-02c)", MACHINE_NOT_WORKING ) /* MISSING disk image */ @@ -2589,14 +2468,14 @@ DRIVER_INIT_MEMBER(segas24_state,roughrac) /* 07 */GAME( 1990, bnzabros, 0, system24_floppy, bnzabros, segas24_state, bnzabros, ROT0, "Sega", "Bonanza Bros (US, Floppy DS3-5000-07d? Based)", 0 ) /* 07 */GAME( 1990, bnzabrosj, bnzabros, system24_floppy, bnzabros, segas24_state, bnzabros, ROT0, "Sega", "Bonanza Bros (Japan, Floppy DS3-5000-07b Based)", 0 ) /* 08 */GAME( 1991, qsww, 0, system24_floppy_fd1094, qsww, segas24_state, qsww, ROT0, "Sega", "Quiz Syukudai wo Wasuremashita (Japan, Floppy Based, FD1094 317-0058-08b)", MACHINE_IMPERFECT_GRAPHICS ) // wrong bg colour on title -/* 09 */GAME( 1991, dcclubfd, dcclub, system24_floppy_fd1094, dcclub, segas24_state, dcclubfd, ROT0, "Sega", "Dynamic Country Club (US, Floppy Based, FD1094 317-0058-09d)", 0 ) +/* 09 */GAME( 1991, dcclubfd, dcclub, system24_floppy_dcclub, dcclub, segas24_state, dcclubfd, ROT0, "Sega", "Dynamic Country Club (US, Floppy Based, FD1094 317-0058-09d)", 0 ) // YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS /* ROM Based */ -GAME( 1991, dcclub, 0, system24, dcclub, segas24_state, dcclub, ROT0, "Sega", "Dynamic Country Club (World, ROM Based)", 0 ) -GAME( 1991, dcclubj, dcclub, system24, dcclub, segas24_state, dcclub, ROT0, "Sega", "Dynamic Country Club (Japan, ROM Based)", 0 ) +GAME( 1991, dcclub, 0, dcclub, dcclub, segas24_state, dcclub, ROT0, "Sega", "Dynamic Country Club (World, ROM Based)", 0 ) +GAME( 1991, dcclubj, dcclub, dcclub, dcclub, segas24_state, dcclub, ROT0, "Sega", "Dynamic Country Club (Japan, ROM Based)", 0 ) GAME( 1991, qrouka, 0, system24, qrouka, segas24_state, qrouka, ROT0, "Sega", "Quiz Rouka Ni Tattenasai (Japan, ROM Based)", 0 ) GAME( 1992, quizmeku, 0, system24, quizmeku, segas24_state, quizmeku, ROT0, "Sega", "Quiz Mekurumeku Story (Japan, ROM Based)", 0 ) /* Released in 05.1993 */ -GAME( 1992, mahmajn, 0, system24, mahmajn, segas24_state, mahmajn, ROT0, "Sega", "Tokoro San no MahMahjan (Japan, ROM Based)", 0 ) +GAME( 1992, mahmajn, 0, mahmajn, mahmajn, segas24_state, mahmajn, ROT0, "Sega", "Tokoro San no MahMahjan (Japan, ROM Based)", 0 ) GAME( 1994, qgh, 0, system24, qgh, segas24_state, qgh, ROT0, "Sega", "Quiz Ghost Hunter (Japan, ROM Based)", 0 ) -GAME( 1994, mahmajn2, 0, system24, mahmajn, segas24_state, mahmajn2, ROT0, "Sega", "Tokoro San no MahMahjan 2 (Japan, ROM Based)", 0 ) +GAME( 1994, mahmajn2, 0, mahmajn, mahmajn, segas24_state, mahmajn2, ROT0, "Sega", "Tokoro San no MahMahjan 2 (Japan, ROM Based)", 0 ) diff --git a/src/mame/drivers/segas32.cpp b/src/mame/drivers/segas32.cpp index f3d5693a4e9..7ac164eb43a 100644 --- a/src/mame/drivers/segas32.cpp +++ b/src/mame/drivers/segas32.cpp @@ -462,7 +462,7 @@ Extra Controls PCB ------------------ 837-7968 |------------------------| -|CN2 PC817(x6) | +|CN2 PC817(x5) | | | | CN3 MB89255B| | | @@ -475,7 +475,8 @@ CN3 - Multi-pin connector for extra controls (most likely for buttons only) CN2/4/5 - Purpose unknown (not used on Dark Edge) CN1 - Connector joining to CNA on main PCB MB89255B - Fujitsu MB89255B Parallel Data I/O Interface (8-bit data bus & 3x 8-bit parallel I/O ports) - This chip is very small and is a SSOP40 package. The chip is functionally compatible with Intel 8255A + This chip is very small and is a SSOP40 package. The chip is functionally compatible with Intel 8255A. + (The equivalent TMP82C55AM-10 sometimes replaces this on other games using the 837-7968 board.) A1603C - NEC uPA1603C Quad Monolithic N-Channel Power MOS FET Array JP1234 - Four 2-pin jumpers. JP3 is shorted, the others are not shorted JP1/2/3/4 are tied to the 74F139 pins 4,5,6,7 respectively. The 74F139 is tied to CN1 and the MB89255B @@ -530,7 +531,13 @@ orunners: Interleaved with the dj and << >> buttons is the data the drives the #include "cpu/v60/v60.h" #include "cpu/nec/v25.h" #include "cpu/upd7725/upd7725.h" +#include "machine/cxd1095.h" #include "machine/eepromser.h" +#include "machine/i8255.h" +#include "machine/mb8421.h" +//#include "machine/mb89352.h" +#include "machine/msm6253.h" +#include "machine/315_5296.h" #include "sound/2612intf.h" #include "sound/rf5c68.h" @@ -540,36 +547,29 @@ orunners: Interleaved with the dj and << >> buttons is the data the drives the #include "radr.lh" -const device_type SEGA_S32_PCB = device_creator; +DEFINE_DEVICE_TYPE(SEGA_S32_PCB, segas32_state, "segas32_pcb", "Sega System 32 PCB") segas32_state::segas32_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segas32_state(mconfig, SEGA_S32_PCB, "Sega System 32 PCB", tag, owner, clock, "segas32_pcb", __FILE__) + : segas32_state(mconfig, SEGA_S32_PCB, tag, owner, clock) { } -segas32_state::segas32_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - m_z80_shared_ram(*this,"z80_shared_ram"), - m_ga2_dpram(*this,"ga2_dpram"), - m_system32_workram(*this,"workram"), - m_system32_videoram(*this,"videoram", 0), - m_system32_spriteram(*this,"spriteram", 0), - m_system32_paletteram(*this,"paletteram.%u", 0, uint8_t(0)), - m_ports_a(*this, {"P1_A", "P2_A", "PORTC_A", "PORTD_A", "SERVICE12_A", "SERVICE34_A", "PORTG_A", "PORTH_A"}), - m_ports_b(*this, {"P1_B", "P2_B", "PORTC_B", "PORTD_B", "SERVICE12_B", "SERVICE34_B", "PORTG_B", "PORTH_B"}), - m_analog_ports(*this, {"ANALOG1", "ANALOG2", "ANALOG3", "ANALOG4", "ANALOG5", "ANALOG6", "ANALOG7", "ANALOG8"}), - m_extra_ports(*this, {"EXTRA1", "EXTRA2", "EXTRA3", "EXTRA4"}), - m_track_ports(*this, {"TRACKX1", "TRACKY1", "TRACKX2", "TRACKY2", "TRACKX3", "TRACKY3"}), - m_maincpu(*this, "maincpu"), - m_soundcpu(*this, "soundcpu"), - m_multipcm(*this, "sega"), - m_eeprom(*this, "eeprom"), - m_gfxdecode(*this, "gfxdecode"), - m_screen(*this, "screen"), - m_palette(*this, "palette"), - m_irq_timer_0(*this, "v60_irq0"), - m_irq_timer_1(*this, "v60_irq1"), - m_s32comm(*this, "s32comm") +segas32_state::segas32_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), + m_z80_shared_ram(*this,"z80_shared_ram"), + m_system32_workram(*this,"workram"), + m_system32_videoram(*this,"videoram", 0), + m_system32_spriteram(*this,"spriteram", 0), + m_system32_paletteram(*this,"paletteram.%u", 0, uint8_t(0)), + m_maincpu(*this, "maincpu"), + m_soundcpu(*this, "soundcpu"), + m_multipcm(*this, "sega"), + m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), + m_palette(*this, "palette"), + m_irq_timer_0(*this, "v60_irq0"), + m_irq_timer_1(*this, "v60_irq1"), + m_s32comm(*this, "s32comm") { } @@ -598,6 +598,7 @@ segas32_state::segas32_state(const machine_config &mconfig, device_type type, co + /************************************* * * Machine init @@ -609,6 +610,11 @@ void segas32_state::device_start() common_start(0); } +void segas32_trackball_state::device_start() +{ + common_start(0); +} + void segas32_v25_state::device_start() { common_start(0); @@ -619,11 +625,27 @@ void segas32_upd7725_state::device_start() common_start(0); } +void segas32_cd_state::device_start() +{ + common_start(0); +} + void sega_multi32_state::device_start() { common_start(1); } +void sega_multi32_analog_state::device_start() +{ + common_start(1); + m_analog_bank = 0; +} + +void sega_multi32_6player_state::device_start() +{ + common_start(1); +} + void segas32_state::device_reset() { /* initialize the interrupt controller */ @@ -808,7 +830,7 @@ INTERRUPT_GEN_MEMBER(segas32_state::start_of_vblank_int) { signal_v60_irq(MAIN_IRQ_VBSTART); system32_set_vblank(1); - machine().scheduler().timer_set(m_screen->time_until_pos(0), timer_expired_delegate(FUNC(segas32_state::end_of_vblank_int),this)); + m_vblank_end_int_timer->adjust(m_screen->time_until_pos(0)); if (m_system32_prot_vblank) (this->*m_system32_prot_vblank)(); if (m_s32comm != nullptr) @@ -823,159 +845,60 @@ INTERRUPT_GEN_MEMBER(segas32_state::start_of_vblank_int) * *************************************/ -uint16_t segas32_state::common_io_chip_r(address_space &space, int which, offs_t offset, uint16_t mem_mask) -{ - offset &= 0x1f/2; - - switch (offset) - { - /* I/O ports */ - case 0x00/2: - case 0x02/2: - case 0x04/2: - case 0x06/2: - case 0x08/2: - case 0x0a/2: - case 0x0c/2: - case 0x0e/2: - /* if the port is configured as an output, return the last thing written */ - if (m_misc_io_data[which][0x1e/2] & (1 << offset)) - return m_misc_io_data[which][offset]; - - /* otherwise, return an input port */ - return (which ? m_ports_b : m_ports_a)[offset].read_safe(0xffff); - - /* 'SEGA' protection */ - case 0x10/2: - return 'S'; - case 0x12/2: - return 'E'; - case 0x14/2: - return 'G'; - case 0x16/2: - return 'A'; - - /* CNT register & mirror */ - case 0x18/2: - case 0x1c/2: - return m_misc_io_data[which][0x1c/2]; - - /* port direction register & mirror */ - case 0x1a/2: - case 0x1e/2: - return m_misc_io_data[which][0x1e/2]; - } - return 0xffff; -} - -void segas32_state::common_io_chip_w(address_space &space, int which, offs_t offset, uint16_t data, uint16_t mem_mask) +WRITE8_MEMBER(segas32_state::misc_output_0_w) { -// uint8_t old; - - /* only LSB matters */ - if (!ACCESSING_BITS_0_7) - return; - - /* generic implementation */ - offset &= 0x1f/2; -// old = m_misc_io_data[which][offset]; - m_misc_io_data[which][offset] = data; - - switch (offset) - { - /* I/O ports */ - case 0x00/2: - case 0x02/2: - case 0x04/2: - case 0x08/2: - case 0x0a/2: - case 0x0c/2: - if (m_sw2_output) - (this->*m_sw2_output)(which, data); - break; - - /* miscellaneous output */ - case 0x06/2: - if (m_sw1_output) - (this->*m_sw1_output)(which, data); - - if (which == 0) - { - m_eeprom->di_write((data & 0x80) >> 7); - m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); - } -/* machine().bookkeeping().coin_lockout_w(1 + 2*which, data & 0x08); - machine().bookkeeping().coin_lockout_w(0 + 2*which, data & 0x04);*/ - machine().bookkeeping().coin_counter_w(1 + 2*which, data & 0x02); - machine().bookkeeping().coin_counter_w(0 + 2*which, data & 0x01); - break; - - /* tile banking */ - case 0x0e/2: - if (which == 0) - m_system32_tilebank_external = data; - else - { - /* multi-32 EEPROM access */ - m_eeprom->di_write((data & 0x80) >> 7); - m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); - } - break; + if (m_sw1_output) + (this->*m_sw1_output)(0, data); - /* CNT register */ - case 0x1c/2: - m_system32_displayenable[which] = (data & 0x02); - if (which == 0) - m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE); - break; - } + //machine().bookkeeping().coin_lockout_w(1 + 2*0, data & 0x08); + //machine().bookkeeping().coin_lockout_w(0 + 2*0, data & 0x04); + machine().bookkeeping().coin_counter_w(1 + 2*0, data & 0x02); + machine().bookkeeping().coin_counter_w(0 + 2*0, data & 0x01); } -READ16_MEMBER(segas32_state::io_chip_r) +WRITE8_MEMBER(segas32_state::misc_output_1_w) { - return common_io_chip_r(space, 0, offset, mem_mask); + if (m_sw1_output) + (this->*m_sw1_output)(1, data); + + //machine().bookkeeping().coin_lockout_w(1 + 2*1, data & 0x08); + //machine().bookkeeping().coin_lockout_w(0 + 2*1, data & 0x04); + machine().bookkeeping().coin_counter_w(1 + 2*1, data & 0x02); + machine().bookkeeping().coin_counter_w(0 + 2*1, data & 0x01); } -WRITE16_MEMBER(segas32_state::io_chip_w) +WRITE8_MEMBER(segas32_state::sw2_output_0_w) { - common_io_chip_w(space, 0, offset, data, mem_mask); + if (m_sw2_output) + (this->*m_sw2_output)(0, data); } -READ32_MEMBER(segas32_state::io_chip_0_r) +WRITE8_MEMBER(segas32_state::sw2_output_1_w) { - return common_io_chip_r(space, 0, offset*2+0, mem_mask) | - (common_io_chip_r(space, 0, offset*2+1, mem_mask >> 16) << 16); + if (m_sw2_output) + (this->*m_sw2_output)(1, data); } -WRITE32_MEMBER(segas32_state::io_chip_0_w) +WRITE8_MEMBER(segas32_state::tilebank_external_w) { - if (ACCESSING_BITS_0_15) - common_io_chip_w(space, 0, offset*2+0, data, mem_mask); - if (ACCESSING_BITS_16_31) - common_io_chip_w(space, 0, offset*2+1, data >> 16, mem_mask >> 16); + m_system32_tilebank_external = data; } -READ32_MEMBER(segas32_state::io_chip_1_r) +WRITE_LINE_MEMBER(segas32_state::display_enable_0_w) { - return common_io_chip_r(space, 1, offset*2+0, mem_mask) | - (common_io_chip_r(space, 1, offset*2+1, mem_mask >> 16) << 16); + m_system32_displayenable[0] = state; } -WRITE32_MEMBER(segas32_state::io_chip_1_w) +WRITE_LINE_MEMBER(segas32_state::display_enable_1_w) { - if (ACCESSING_BITS_0_15) - common_io_chip_w(space, 1, offset*2+0, data, mem_mask); - if (ACCESSING_BITS_16_31) - common_io_chip_w(space, 1, offset*2+1, data >> 16, mem_mask >> 16); + m_system32_displayenable[1] = state; } @@ -986,96 +909,6 @@ WRITE32_MEMBER(segas32_state::io_chip_1_w) * *************************************/ -READ16_MEMBER(segas32_state::io_expansion_r) -{ - if (!m_custom_io_r[0].isnull()) - return (m_custom_io_r[0])(space, offset, mem_mask); - else - logerror("%06X:io_expansion_r(%X)\n", space.device().safe_pc(), offset); - return 0xffff; -} - - -WRITE16_MEMBER(segas32_state::io_expansion_w) -{ - /* only LSB matters */ - if (!ACCESSING_BITS_0_7) - return; - - if (!m_custom_io_w[0].isnull()) - (m_custom_io_w[0])(space, offset, data, mem_mask); - else - logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff); -} - - -READ32_MEMBER(segas32_state::io_expansion_0_r) -{ - if (!m_custom_io_r[0].isnull()) - return (m_custom_io_r[0])(space, offset*2+0, mem_mask) | - ((m_custom_io_r[0])(space, offset*2+1, mem_mask >> 16) << 16); - else - logerror("%06X:io_expansion_r(%X)\n", space.device().safe_pc(), offset); - return 0xffffffff; -} - - -WRITE32_MEMBER(segas32_state::io_expansion_0_w) -{ - /* only LSB matters */ - - - if (ACCESSING_BITS_0_7) - { - /* harddunk uses bits 4,5 for output lamps */ - if (m_sw3_output) - (this->*m_sw3_output)(0, data & 0xff); - - if (!m_custom_io_w[0].isnull()) - (m_custom_io_w[0])(space, offset*2+0, data, mem_mask); - else - logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff); - - } - if (ACCESSING_BITS_16_23) - { - if (!m_custom_io_w[0].isnull()) - (m_custom_io_w[0])(space, offset*2+1, data >> 16, mem_mask >> 16); - else - logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff); - } -} - - -READ32_MEMBER(segas32_state::io_expansion_1_r) -{ - if (!m_custom_io_r[1].isnull()) - return (m_custom_io_r[1])(space, offset*2+0, mem_mask) | - ((m_custom_io_r[1])(space, offset*2+1, mem_mask >> 16) << 16); - else - logerror("%06X:io_expansion_r(%X)\n", space.device().safe_pc(), offset); - return 0xffffffff; -} - - -WRITE32_MEMBER(segas32_state::io_expansion_1_w) -{ - /* only LSB matters */ - if (ACCESSING_BITS_0_7) - { - if (!m_custom_io_w[1].isnull()) - (m_custom_io_w[1])(space, offset*2+0, data, mem_mask); - else - logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff); - } - if (ACCESSING_BITS_16_23) - { - if (!m_custom_io_w[1].isnull()) - (m_custom_io_w[1])(space, offset*2+1, data >> 16, mem_mask >> 16); - else - logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff); - } -} @@ -1085,75 +918,7 @@ WRITE32_MEMBER(segas32_state::io_expansion_1_w) * *************************************/ -READ16_MEMBER(segas32_state::analog_custom_io_r) -{ - uint16_t result; - switch (offset) - { - case 0x10/2: - case 0x12/2: - case 0x14/2: - case 0x16/2: - result = m_analog_value[offset & 3] | 0x7f; - m_analog_value[offset & 3] <<= 1; - return result; - } - logerror("%06X:unknown analog_custom_io_r(%X) & %04X\n", space.device().safe_pc(), offset*2, mem_mask); - return 0xffff; -} - - -WRITE16_MEMBER(segas32_state::analog_custom_io_w) -{ - switch (offset) - { - case 0x10/2: - case 0x12/2: - case 0x14/2: - case 0x16/2: - m_analog_value[offset & 3] = m_analog_ports[offset & 3].read_safe(0); - return; - } - logerror("%06X:unknown analog_custom_io_w(%X) = %04X & %04X\n", space.device().safe_pc(), offset*2, data, mem_mask); -} - - -READ16_MEMBER(segas32_state::extra_custom_io_r) -{ - switch (offset) - { - case 0x20/2: - case 0x22/2: - case 0x24/2: - case 0x26/2: - return m_extra_ports[offset & 3].read_safe(0xffff); - } - - logerror("%06X:unknown extra_custom_io_r(%X) & %04X\n", space.device().safe_pc(), offset*2, mem_mask); - return 0xffff; -} - - -WRITE16_MEMBER(segas32_state::orunners_custom_io_w) -{ - switch (offset) - { - case 0x10/2: - case 0x12/2: - case 0x14/2: - case 0x16/2: - m_analog_value[offset & 3] = m_analog_ports[m_analog_bank * 4 + (offset & 3)].read_safe(0); - return; - - case 0x20/2: - m_analog_bank = data & 1; - return; - } - logerror("%06X:unknown orunners_custom_io_w(%X) = %04X & %04X\n", space.device().safe_pc(), offset*2, data, mem_mask); -} - - -READ16_MEMBER(segas32_state::sonic_custom_io_r) +READ8_MEMBER(segas32_trackball_state::sonic_custom_io_r) { switch (offset) { @@ -1167,11 +932,11 @@ READ16_MEMBER(segas32_state::sonic_custom_io_r) } logerror("%06X:unknown sonic_custom_io_r(%X) & %04X\n", space.device().safe_pc(), offset*2, mem_mask); - return 0xffff; + return 0xff; } -WRITE16_MEMBER(segas32_state::sonic_custom_io_w) +WRITE8_MEMBER(segas32_trackball_state::sonic_custom_io_w) { switch (offset) { @@ -1406,8 +1171,8 @@ static ADDRESS_MAP_START( system32_map, AS_PROGRAM, 16, segas32_state ) AM_RANGE(0x800000, 0x800fff) AM_DEVREADWRITE8("s32comm", s32comm_device, share_r, share_w, 0x00ff) AM_RANGE(0x801000, 0x801001) AM_DEVREADWRITE8("s32comm", s32comm_device, cn_r, cn_w, 0x00ff) AM_RANGE(0x801002, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, fg_r, fg_w, 0x00ff) - AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x0fff80) AM_READWRITE(io_chip_r, io_chip_w) - AM_RANGE(0xc00040, 0xc0007f) AM_MIRROR(0x0fff80) AM_READWRITE(io_expansion_r, io_expansion_w) + AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("io_chip", sega_315_5296_device, read, write, 0x00ff) + // 0xc00040-0xc0007f - I/O expansion area AM_RANGE(0xd00000, 0xd0000f) AM_MIRROR(0x07fff0) AM_READWRITE(interrupt_control_16_r, interrupt_control_16_w) AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE(random_number_16_r, random_number_16_w) AM_RANGE(0xf00000, 0xffffff) AM_ROM AM_REGION("maincpu", 0) @@ -1430,10 +1195,10 @@ static ADDRESS_MAP_START( multi32_map, AS_PROGRAM, 32, segas32_state ) AM_RANGE(0x800000, 0x800fff) AM_DEVREADWRITE8("s32comm", s32comm_device, share_r, share_w, 0x00ff00ff) AM_RANGE(0x801000, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, cn_r, cn_w, 0x000000ff) AM_RANGE(0x801000, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, fg_r, fg_w, 0x00ff0000) - AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x07ff80) AM_READWRITE(io_chip_0_r, io_chip_0_w) - AM_RANGE(0xc00040, 0xc0007f) AM_MIRROR(0x07ff80) AM_READWRITE(io_expansion_0_r, io_expansion_0_w) - AM_RANGE(0xc80000, 0xc8001f) AM_MIRROR(0x07ff80) AM_READWRITE(io_chip_1_r, io_chip_1_w) - AM_RANGE(0xc80040, 0xc8007f) AM_MIRROR(0x07ff80) AM_READWRITE(io_expansion_1_r, io_expansion_1_w) + AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("io_chip_0", sega_315_5296_device, read, write, 0x00ff00ff) + // 0xc00040-0xc0007f - I/O expansion area 0 + AM_RANGE(0xc80000, 0xc8001f) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("io_chip_1", sega_315_5296_device, read, write, 0x00ff00ff) + // 0xc80040-0xc8007f - I/O expansion area 1 AM_RANGE(0xd00000, 0xd0000f) AM_MIRROR(0x07fff0) AM_READWRITE(interrupt_control_32_r, interrupt_control_32_w) AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE(random_number_32_r, random_number_32_w) AM_RANGE(0xf00000, 0xffffff) AM_ROM AM_REGION("maincpu", 0) @@ -1496,7 +1261,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( ga2_v25_map, AS_PROGRAM, 8, segas32_state ) AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x10000, 0x1ffff) AM_RAM AM_SHARE("ga2_dpram") + AM_RANGE(0x10000, 0x1ffff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w) AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("mcu", 0) ADDRESS_MAP_END @@ -1545,10 +1310,8 @@ static INPUT_PORTS_START( system32_generic ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_START("mainpcb:PORTC_A") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("mainpcb:PORTD_A") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("mainpcb:SERVICE12_A") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) @@ -1561,49 +1324,41 @@ static INPUT_PORTS_START( system32_generic ) PORT_START("mainpcb:SERVICE34_A") PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) /* sometimes mirrors SERVICE1 */ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE4 ) /* tends to also work as a test switch */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Push SW1 (Service)") // on PCB + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("Push SW2 (Test)") // on PCB PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("mainpcb:eeprom", eeprom_serial_93cxx_device, do_read) - - PORT_START("mainpcb:PORTG_A") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("mainpcb:PORTH_A") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END static INPUT_PORTS_START( system32_generic_slave ) PORT_START("slavepcb:P1_A") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) PORT_START("slavepcb:P2_A") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4) PORT_START("slavepcb:PORTC_A") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("slavepcb:PORTD_A") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("slavepcb:SERVICE12_A") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F1) PORT_NAME("slavepcb:Service Mode") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START3 ) @@ -1612,16 +1367,10 @@ static INPUT_PORTS_START( system32_generic_slave ) PORT_START("slavepcb:SERVICE34_A") PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) /* sometimes mirrors SERVICE1 */ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE4 ) /* tends to also work as a test switch */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("slavepcb:Push SW1 (Service)") PORT_CODE(KEYCODE_OPENBRACE) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("slavepcb:Push SW2 (Test)") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("slavepcb:eeprom", eeprom_serial_93cxx_device, do_read) - - PORT_START("slavepcb:PORTG_A") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("slavepcb:PORTH_A") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END static INPUT_PORTS_START( multi32_generic ) @@ -1636,26 +1385,22 @@ static INPUT_PORTS_START( multi32_generic ) PORT_START("mainpcb:PORTC_B") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("mainpcb:PORTD_B") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("mainpcb:SERVICE12_A") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("mainpcb:SERVICE12_B") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F1) PORT_NAME("Service Mode 2") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("mainpcb:SERVICE34_B") - PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x4f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Push SW3 (Service)") PORT_CODE(KEYCODE_OPENBRACE) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Push SW4 (Test)") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("mainpcb:eeprom", eeprom_serial_93cxx_device, do_read) - - PORT_START("mainpcb:PORTG_B") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("mainpcb:PORTH_B") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END @@ -1676,7 +1421,7 @@ static INPUT_PORTS_START( arescue ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE12_A") - PORT_BIT( 0x38, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE34_A") PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -1701,7 +1446,7 @@ static INPUT_PORTS_START( arescue ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("slavepcb:SERVICE12_A") - PORT_BIT( 0x38, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("slavepcb:SERVICE34_A") PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -1802,6 +1547,9 @@ static INPUT_PORTS_START( brival ) PORT_MODIFY("mainpcb:P2_A") PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_START("mainpcb:EXTRA1") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_START("mainpcb:EXTRA2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) @@ -1811,6 +1559,9 @@ static INPUT_PORTS_START( brival ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) + + PORT_START("mainpcb:EXTRA3") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END @@ -1827,6 +1578,9 @@ static INPUT_PORTS_START( darkedge ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_START("mainpcb:EXTRA1") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_START("mainpcb:EXTRA2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) @@ -1836,11 +1590,23 @@ static INPUT_PORTS_START( darkedge ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) + + PORT_START("mainpcb:EXTRA3") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END static INPUT_PORTS_START( dbzvrvs ) PORT_INCLUDE( system32_generic ) + + PORT_START("mainpcb:ANALOG1") + PORT_BIT( 0xff, 0xff, IPT_UNKNOWN ) + + PORT_START("mainpcb:ANALOG2") + PORT_BIT( 0xff, 0xff, IPT_UNKNOWN ) + + PORT_START("mainpcb:ANALOG3") + PORT_BIT( 0xff, 0xff, IPT_UNKNOWN ) INPUT_PORTS_END @@ -1872,7 +1638,6 @@ static INPUT_PORTS_START( f1en ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("mainpcb:ANALOG1") PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_NAME("mainpcb:Steering Wheel") @@ -1910,7 +1675,6 @@ static INPUT_PORTS_START( f1en ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("slavepcb:ANALOG1") PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_NAME("slavepcb:Steering Wheel") PORT_PLAYER(2) @@ -1937,7 +1701,6 @@ static INPUT_PORTS_START( f1lap ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE12_A") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE34_A") @@ -1953,15 +1716,6 @@ static INPUT_PORTS_START( f1lap ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) // service coin mirror - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) // seems to be a service switch mirror - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("mainpcb:ANALOG1") PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(50) PORT_KEYDELTA(20) PORT_NAME("mainpcb:Steering Wheel") @@ -2116,6 +1870,10 @@ static INPUT_PORTS_START( jpark ) PORT_MODIFY("mainpcb:P2_A") PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("mainpcb:PORTC_A") + PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT ) PORT_NAME("Emergency") // recognized in input test only? + PORT_START("mainpcb:ANALOG1") PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) @@ -2130,6 +1888,41 @@ static INPUT_PORTS_START( jpark ) INPUT_PORTS_END +static INPUT_PORTS_START( kokoroj2 ) + PORT_INCLUDE( system32_generic ) + + PORT_MODIFY("mainpcb:P1_A") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + + PORT_MODIFY("mainpcb:P2_A") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(3) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4) + + PORT_MODIFY("mainpcb:SERVICE12_A") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START3 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 ) + + PORT_MODIFY("mainpcb:SERVICE34_A") + PORT_DIPNAME( 0x08, 0x00, "CD & Printer" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + + static INPUT_PORTS_START( orunners ) PORT_INCLUDE( multi32_generic ) @@ -2150,9 +1943,9 @@ static INPUT_PORTS_START( orunners ) PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("mainpcb:P2_B") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) /* DJ/music */ - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) /* << */ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) /* >> */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_R) /* DJ/music */ + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_T) /* << */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_Y) /* >> */ PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("mainpcb:ANALOG1") @@ -2188,7 +1981,6 @@ static INPUT_PORTS_START( radm ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE12_A") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE34_A") @@ -2204,7 +1996,6 @@ static INPUT_PORTS_START( radm ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("mainpcb:ANALOG1") PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) @@ -2228,7 +2019,6 @@ static INPUT_PORTS_START( radr ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE12_A") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE34_A") @@ -2244,7 +2034,6 @@ static INPUT_PORTS_START( radr ) PORT_DIPNAME( 0x08, 0x08, "Transmission" ) PORT_DIPSETTING( 0x08, "Manual" ) PORT_DIPSETTING( 0x00, "Automatic" ) - PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("mainpcb:ANALOG1") PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) @@ -2302,7 +2091,6 @@ static INPUT_PORTS_START( slipstrm ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE12_A") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("mainpcb:SERVICE34_A") @@ -2318,7 +2106,6 @@ static INPUT_PORTS_START( slipstrm ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("mainpcb:ANALOG1") PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) @@ -2506,6 +2293,20 @@ static MACHINE_CONFIG_FRAGMENT( system32 ) MCFG_CPU_PROGRAM_MAP(system32_sound_map) MCFG_CPU_IO_MAP(system32_sound_portmap) + MCFG_DEVICE_ADD("io_chip", SEGA_315_5296, 0) // unknown clock + MCFG_315_5296_IN_PORTA_CB(IOPORT("P1_A")) + MCFG_315_5296_IN_PORTB_CB(IOPORT("P2_A")) + MCFG_315_5296_IN_PORTC_CB(IOPORT("PORTC_A")) + MCFG_315_5296_OUT_PORTD_CB(WRITE8(segas32_state, misc_output_0_w)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("eeprom", eeprom_serial_93cxx_device, di_write)) MCFG_DEVCB_BIT(7) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("eeprom", eeprom_serial_93cxx_device, cs_write)) MCFG_DEVCB_BIT(5) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("eeprom", eeprom_serial_93cxx_device, clk_write)) MCFG_DEVCB_BIT(6) + MCFG_315_5296_IN_PORTE_CB(IOPORT("SERVICE12_A")) + MCFG_315_5296_IN_PORTF_CB(IOPORT("SERVICE34_A")) + MCFG_315_5296_OUT_PORTG_CB(WRITE8(segas32_state, sw2_output_0_w)) + MCFG_315_5296_OUT_PORTH_CB(WRITE8(segas32_state, tilebank_external_w)) + MCFG_315_5296_OUT_CNT1_CB(WRITELINE(segas32_state, display_enable_0_w)) + MCFG_315_5296_OUT_CNT2_CB(INPUTLINE("soundcpu", INPUT_LINE_RESET)) MCFG_DEVCB_INVERT MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -2541,10 +2342,10 @@ static MACHINE_CONFIG_FRAGMENT( system32 ) MCFG_S32COMM_ADD("s32comm") MACHINE_CONFIG_END -const device_type SEGA_S32_REGULAR_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_S32_REGULAR_DEVICE, segas32_regular_state, "segas32_pcb_regular", "Sega System 32 regular PCB") segas32_regular_state::segas32_regular_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segas32_state(mconfig, SEGA_S32_REGULAR_DEVICE, "Sega System 32 regular PCB", tag, owner, clock, "sega32_pcb_regular", __FILE__) + : segas32_state(mconfig, SEGA_S32_REGULAR_DEVICE, tag, owner, clock) { } @@ -2556,19 +2357,130 @@ machine_config_constructor segas32_regular_state::device_mconfig_additions() con -static MACHINE_CONFIG_FRAGMENT( system32_v25 ) + +static ADDRESS_MAP_START( system32_analog_map, AS_PROGRAM, 16, segas32_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff) + AM_IMPORT_FROM(system32_map) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( system32_analog ) + MCFG_FRAGMENT_ADD( system32 ) + + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(system32_analog_map) + + MCFG_DEVICE_ADD("adc", MSM6253, 0) + MCFG_MSM6253_IN0_ANALOG_PORT("ANALOG1") + MCFG_MSM6253_IN1_ANALOG_PORT("ANALOG2") + MCFG_MSM6253_IN2_ANALOG_PORT("ANALOG3") + MCFG_MSM6253_IN3_ANALOG_PORT("ANALOG4") +MACHINE_CONFIG_END + +DEFINE_DEVICE_TYPE(SEGA_S32_ANALOG_DEVICE, segas32_analog_state, "segas32_pcb_analog", "Sega System 32 analog PCB") + +segas32_analog_state::segas32_analog_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : segas32_state(mconfig, SEGA_S32_ANALOG_DEVICE, tag, owner, clock) +{ +} + +machine_config_constructor segas32_analog_state::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( system32_analog ); +} + + + + + +static ADDRESS_MAP_START( system32_trackball_map, AS_PROGRAM, 16, segas32_trackball_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_READWRITE8(sonic_custom_io_r, sonic_custom_io_w, 0x00ff) + AM_IMPORT_FROM(system32_map) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( system32_trackball ) MCFG_FRAGMENT_ADD( system32 ) + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(system32_trackball_map) +MACHINE_CONFIG_END + +DEFINE_DEVICE_TYPE(SEGA_S32_TRACKBALL_DEVICE, segas32_trackball_state, "segas32_pcb_trackball", "Sega System 32 trackball PCB") + +segas32_trackball_state::segas32_trackball_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : segas32_state(mconfig, SEGA_S32_TRACKBALL_DEVICE, tag, owner, clock) + , m_track_ports(*this, {"TRACKX1", "TRACKY1", "TRACKX2", "TRACKY2", "TRACKX3", "TRACKY3"}) +{ +} + +machine_config_constructor segas32_trackball_state::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( system32_trackball ); +} + + + + + +static ADDRESS_MAP_START( system32_4player_map, AS_PROGRAM, 16, segas32_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0xc00060, 0xc00067) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff) + AM_IMPORT_FROM(system32_map) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( system32_4player ) + MCFG_FRAGMENT_ADD( system32 ) + + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(system32_4player_map) + + MCFG_DEVICE_ADD("ppi", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(IOPORT("EXTRA1")) + MCFG_I8255_IN_PORTB_CB(IOPORT("EXTRA2")) + MCFG_I8255_IN_PORTC_CB(IOPORT("EXTRA3")) +MACHINE_CONFIG_END + +DEFINE_DEVICE_TYPE(SEGA_S32_4PLAYER_DEVICE, segas32_4player_state, "segas32_pcb_4player", "Sega System 32 4-player/fighting PCB") + +segas32_4player_state::segas32_4player_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : segas32_state(mconfig, SEGA_S32_4PLAYER_DEVICE, tag, owner, clock) +{ +} + +machine_config_constructor segas32_4player_state::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( system32_4player ); +} + + + + + +static ADDRESS_MAP_START( ga2_main_map, AS_PROGRAM, 16, segas32_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("dpram", mb8421_device, right_r, right_w, 0x00ff) + AM_IMPORT_FROM(system32_4player_map) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( system32_v25 ) + MCFG_FRAGMENT_ADD( system32_4player ) + + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(ga2_main_map) + + MCFG_DEVICE_ADD("dpram", MB8421, 0) + /* add a V25 for protection */ MCFG_CPU_ADD("mcu", V25, 10000000) MCFG_CPU_PROGRAM_MAP(ga2_v25_map) MCFG_V25_CONFIG(ga2_v25_opcode_table) MACHINE_CONFIG_END -const device_type SEGA_S32_V25_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_S32_V25_DEVICE, segas32_v25_state, "segas32_pcb_v25", "Sega System 32 V25 PCB") segas32_v25_state::segas32_v25_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segas32_state(mconfig, SEGA_S32_V25_DEVICE, "Sega System 32 V25 PCB", tag, owner, clock, "sega32_pcb_v25", __FILE__) + : segas32_state(mconfig, SEGA_S32_V25_DEVICE, tag, owner, clock) { } @@ -2582,7 +2494,7 @@ machine_config_constructor segas32_v25_state::device_mconfig_additions() const static MACHINE_CONFIG_FRAGMENT( system32_upd7725 ) - MCFG_FRAGMENT_ADD( system32 ) + MCFG_FRAGMENT_ADD( system32_analog ) /* add a upd7725; this is on the 837-8341 daughterboard which plugs into the socket on the master pcb's rom board where an fd1149 could go */ MCFG_CPU_ADD("dsp", UPD7725, 8000000) // TODO: Find real clock speed for the upd7725; this is a canned oscillator on the 837-8341 pcb @@ -2595,10 +2507,10 @@ static MACHINE_CONFIG_FRAGMENT( system32_upd7725 ) // See HLE of this dsp in /src/mame/machine/segas32.cpp : arescue_dsp_r and arescue_dsp_w MACHINE_CONFIG_END -const device_type SEGA_S32_UPD7725_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_S32_UPD7725_DEVICE, segas32_upd7725_state, "segas32_pcb_upd7725", "Sega System 32 uPD7725 PCB") segas32_upd7725_state::segas32_upd7725_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segas32_state(mconfig, SEGA_S32_UPD7725_DEVICE, "Sega System 32 UPD7725 PCB", tag, owner, clock, "sega32_pcb_upd7725", __FILE__) + : segas32_state(mconfig, SEGA_S32_UPD7725_DEVICE, tag, owner, clock) { } @@ -2609,6 +2521,54 @@ machine_config_constructor segas32_upd7725_state::device_mconfig_additions() con + +WRITE8_MEMBER(segas32_cd_state::lamps1_w) +{ + for (int i = 0; i < 8; i++) + machine().output().set_lamp_value(i, BIT(data, i)); +} + +WRITE8_MEMBER(segas32_cd_state::lamps2_w) +{ + for (int i = 0; i < 8; i++) + machine().output().set_lamp_value(8 + i, BIT(data, i)); +} + +static ADDRESS_MAP_START( system32_cd_map, AS_PROGRAM, 16, segas32_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_NOP //AM_DEVREADWRITE8("mb89352", mb89352_device, mb89352_r, mb89352_w, 0x00ff) + AM_RANGE(0xc00060, 0xc0006f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("cxdio", cxd1095_device, read, write, 0x00ff) + AM_IMPORT_FROM(system32_map) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( system32_cd ) + MCFG_FRAGMENT_ADD( system32 ) + + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(system32_cd_map) + + //MCFG_DEVICE_ADD("mb89352", MB89352A, 8000000) + + MCFG_DEVICE_ADD("cxdio", CXD1095, 0) + MCFG_CXD1095_OUT_PORTA_CB(WRITE8(segas32_cd_state, lamps1_w)) + MCFG_CXD1095_OUT_PORTB_CB(WRITE8(segas32_cd_state, lamps2_w)) + MCFG_CXD1095_IN_PORTD_CB(CONSTANT(0xff)) +MACHINE_CONFIG_END + +DEFINE_DEVICE_TYPE(SEGA_S32_CD_DEVICE, segas32_cd_state, "segas32_pcb_cd", "Sega System 32 CD PCB") + +segas32_cd_state::segas32_cd_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : segas32_state(mconfig, SEGA_S32_CD_DEVICE, tag, owner, clock) +{ +} + +machine_config_constructor segas32_cd_state::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( system32_cd ); +} + + + static MACHINE_CONFIG_FRAGMENT( multi32 ) /* basic machine hardware */ @@ -2620,6 +2580,30 @@ static MACHINE_CONFIG_FRAGMENT( multi32 ) MCFG_CPU_PROGRAM_MAP(multi32_sound_map) MCFG_CPU_IO_MAP(multi32_sound_portmap) + MCFG_DEVICE_ADD("io_chip_0", SEGA_315_5296, 0) // unknown clock + MCFG_315_5296_IN_PORTA_CB(IOPORT("P1_A")) + MCFG_315_5296_IN_PORTB_CB(IOPORT("P2_A")) + MCFG_315_5296_IN_PORTC_CB(IOPORT("PORTC_A")) + MCFG_315_5296_OUT_PORTD_CB(WRITE8(segas32_state, misc_output_0_w)) + MCFG_315_5296_IN_PORTE_CB(IOPORT("SERVICE12_A")) + MCFG_315_5296_IN_PORTF_CB(IOPORT("SERVICE34_A")) + MCFG_315_5296_OUT_PORTG_CB(WRITE8(segas32_state, sw2_output_0_w)) + MCFG_315_5296_OUT_PORTH_CB(WRITE8(segas32_state, tilebank_external_w)) + MCFG_315_5296_OUT_CNT1_CB(WRITELINE(segas32_state, display_enable_0_w)) + MCFG_315_5296_OUT_CNT2_CB(INPUTLINE("soundcpu", INPUT_LINE_RESET)) MCFG_DEVCB_INVERT + + MCFG_DEVICE_ADD("io_chip_1", SEGA_315_5296, 0) // unknown clock + MCFG_315_5296_IN_PORTA_CB(IOPORT("P1_B")) + MCFG_315_5296_IN_PORTB_CB(IOPORT("P2_B")) + MCFG_315_5296_IN_PORTC_CB(IOPORT("PORTC_B")) + MCFG_315_5296_OUT_PORTD_CB(WRITE8(segas32_state, misc_output_1_w)) + MCFG_315_5296_IN_PORTE_CB(IOPORT("SERVICE12_B")) + MCFG_315_5296_IN_PORTF_CB(IOPORT("SERVICE34_B")) + MCFG_315_5296_OUT_PORTG_CB(WRITE8(segas32_state, sw2_output_1_w)) + MCFG_315_5296_OUT_PORTH_CB(DEVWRITELINE("eeprom", eeprom_serial_93cxx_device, di_write)) MCFG_DEVCB_BIT(7) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("eeprom", eeprom_serial_93cxx_device, cs_write)) MCFG_DEVCB_BIT(5) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("eeprom", eeprom_serial_93cxx_device, clk_write)) MCFG_DEVCB_BIT(6) + MCFG_315_5296_OUT_CNT1_CB(WRITELINE(segas32_state, display_enable_1_w)) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -2659,10 +2643,10 @@ static MACHINE_CONFIG_FRAGMENT( multi32 ) MACHINE_CONFIG_END -const device_type SEGA_MULTI32_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_MULTI32_DEVICE, sega_multi32_state, "segas32_pcb_multi", "Sega Multi 32") sega_multi32_state::sega_multi32_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segas32_state(mconfig, SEGA_MULTI32_DEVICE, "Sega Multi 32 PCB", tag, owner, clock, "sega32_pcb_multi", __FILE__) + : segas32_state(mconfig, SEGA_MULTI32_DEVICE, tag, owner, clock) { } @@ -2672,13 +2656,95 @@ machine_config_constructor sega_multi32_state::device_mconfig_additions() const } +static ADDRESS_MAP_START( multi32_analog_map, AS_PROGRAM, 32, sega_multi32_analog_state ) + ADDRESS_MAP_UNMAP_HIGH + ADDRESS_MAP_GLOBAL_MASK(0xffffff) + AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff00ff) + AM_RANGE(0xc00060, 0xc00063) AM_MIRROR(0x07ff80) AM_WRITE8(analog_bank_w, 0x000000ff) + AM_IMPORT_FROM(multi32_map) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( multi32_analog ) + MCFG_FRAGMENT_ADD(multi32) + + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(multi32_analog_map) + + MCFG_DEVICE_ADD("adc", MSM6253, 0) + MCFG_MSM6253_IN0_ANALOG_PORT("ANALOG1") + MCFG_MSM6253_IN1_ANALOG_PORT("ANALOG2") + MCFG_MSM6253_IN2_ANALOG_READ(sega_multi32_analog_state, in2_analog_read) + MCFG_MSM6253_IN3_ANALOG_READ(sega_multi32_analog_state, in3_analog_read) +MACHINE_CONFIG_END + +ioport_value sega_multi32_analog_state::in2_analog_read() +{ + return m_analog_ports[m_analog_bank * 4 + 2].read_safe(0); +} + +ioport_value sega_multi32_analog_state::in3_analog_read() +{ + return m_analog_ports[m_analog_bank * 4 + 3].read_safe(0); +} + +WRITE8_MEMBER(sega_multi32_analog_state::analog_bank_w) +{ + m_analog_bank = data & 1; +} + +DEFINE_DEVICE_TYPE(SEGA_MULTI32_ANALOG_DEVICE, sega_multi32_analog_state, "segas32_pcb_multi_analog", "Sega Multi 32 analog PCB") + +sega_multi32_analog_state::sega_multi32_analog_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : segas32_state(mconfig, SEGA_MULTI32_ANALOG_DEVICE, tag, owner, clock) + , m_analog_ports(*this, "ANALOG%u", 1) +{ +} + +machine_config_constructor sega_multi32_analog_state::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( multi32_analog ); +} + + +static ADDRESS_MAP_START( multi32_6player_map, AS_PROGRAM, 32, segas32_state ) + ADDRESS_MAP_UNMAP_HIGH + ADDRESS_MAP_GLOBAL_MASK(0xffffff) + AM_RANGE(0xc00060, 0xc00067) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff00ff) + AM_IMPORT_FROM(multi32_map) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( multi32_6player ) + MCFG_FRAGMENT_ADD(multi32) + + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(multi32_6player_map) + + MCFG_DEVICE_ADD("ppi", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(IOPORT("EXTRA1")) + MCFG_I8255_IN_PORTB_CB(IOPORT("EXTRA2")) + MCFG_I8255_IN_PORTC_CB(IOPORT("EXTRA3")) +MACHINE_CONFIG_END + +DEFINE_DEVICE_TYPE(SEGA_MULTI32_6PLAYER_DEVICE, sega_multi32_6player_state, "segas32_pcb_multi_6player", "Sega Multi 32 6-player PCB") + +sega_multi32_6player_state::sega_multi32_6player_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : segas32_state(mconfig, SEGA_MULTI32_6PLAYER_DEVICE, tag, owner, clock) +{ +} + +machine_config_constructor sega_multi32_6player_state::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( multi32_6player ); +} + + class segas32_new_state : public driver_device { public: segas32_new_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_mainpcb(*this, "mainpcb"), - m_slavepcb(*this, "slavepcb") + : driver_device(mconfig, type, tag) + , m_mainpcb(*this, "mainpcb") + , m_slavepcb(*this, "slavepcb") { } required_device m_mainpcb; @@ -2719,30 +2785,54 @@ public: -static MACHINE_CONFIG_START( sega_system32, segas32_new_state ) +static MACHINE_CONFIG_START( sega_system32 ) MCFG_DEVICE_ADD("mainpcb", SEGA_S32_REGULAR_DEVICE, 0) MACHINE_CONFIG_END +static MACHINE_CONFIG_START( sega_system32_analog ) + MCFG_DEVICE_ADD("mainpcb", SEGA_S32_ANALOG_DEVICE, 0) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( sega_system32_track ) + MCFG_DEVICE_ADD("mainpcb", SEGA_S32_TRACKBALL_DEVICE, 0) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( sega_system32_4p ) + MCFG_DEVICE_ADD("mainpcb", SEGA_S32_4PLAYER_DEVICE, 0) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( sega_system32_cd ) + MCFG_DEVICE_ADD("mainpcb", SEGA_S32_CD_DEVICE, 0) +MACHINE_CONFIG_END + // for f1en where there is a sub-board containing shared ram sitting underneath the ROM board bridging 2 PCBs (not a network link) -static MACHINE_CONFIG_START( sega_system32_dual_direct, segas32_new_state ) - MCFG_DEVICE_ADD("mainpcb", SEGA_S32_REGULAR_DEVICE, 0) - MCFG_DEVICE_ADD("slavepcb", SEGA_S32_REGULAR_DEVICE, 0) +static MACHINE_CONFIG_START( sega_system32_dual_direct ) + MCFG_DEVICE_ADD("mainpcb", SEGA_S32_ANALOG_DEVICE, 0) + MCFG_DEVICE_ADD("slavepcb", SEGA_S32_ANALOG_DEVICE, 0) MACHINE_CONFIG_END // air rescue is like f1en above but also has the 837-8341 DSP daughterboard on the mainpcb side only -static MACHINE_CONFIG_START( sega_system32_dual_direct_upd7725, segas32_new_state ) +static MACHINE_CONFIG_START( sega_system32_dual_direct_upd7725 ) MCFG_DEVICE_ADD("mainpcb", SEGA_S32_UPD7725_DEVICE, 0) - MCFG_DEVICE_ADD("slavepcb", SEGA_S32_REGULAR_DEVICE, 0) + MCFG_DEVICE_ADD("slavepcb", SEGA_S32_ANALOG_DEVICE, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sega_system32_v25, segas32_new_state ) +static MACHINE_CONFIG_START( sega_system32_v25 ) MCFG_DEVICE_ADD("mainpcb", SEGA_S32_V25_DEVICE, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sega_multi32, segas32_new_state ) +static MACHINE_CONFIG_START( sega_multi32 ) MCFG_DEVICE_ADD("mainpcb", SEGA_MULTI32_DEVICE, 0) MACHINE_CONFIG_END +static MACHINE_CONFIG_START( sega_multi32_analog ) + MCFG_DEVICE_ADD("mainpcb", SEGA_MULTI32_ANALOG_DEVICE, 0) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_START( sega_multi32_6p ) + MCFG_DEVICE_ADD("mainpcb", SEGA_MULTI32_6PLAYER_DEVICE, 0) +MACHINE_CONFIG_END + /************************************* * * ROM definition(s) @@ -3327,31 +3417,34 @@ ROM_END ************************************************************************************************************************** Dragon Ball Z, VRVS protected via FD1149 317-0215/0217 + + Sega Game ID codes: + ROM BD. 834-10662 */ ROM_START( dbzvrvs ) ROM_REGION( 0x200000, "mainpcb:maincpu", 0 ) /* v60 code + data */ - ROM_LOAD( "16543", 0x000000, 0x080000, CRC(7b9bc6f5) SHA1(556fd8471bf471e41fc6a50471c2be1bd6b98697) ) - ROM_LOAD( "16542.a", 0x080000, 0x080000, CRC(6449ab22) SHA1(03e6cdacf77f2ff80dd6798094deac5486f2c840) ) + ROM_LOAD( "epr-16543", 0x000000, 0x080000, CRC(7b9bc6f5) SHA1(556fd8471bf471e41fc6a50471c2be1bd6b98697) ) + ROM_LOAD( "epr-16542a", 0x080000, 0x080000, CRC(6449ab22) SHA1(03e6cdacf77f2ff80dd6798094deac5486f2c840) ) ROM_REGION( 0x500000, "mainpcb:soundcpu", 0 ) /* sound CPU */ - ROM_LOAD_x4( "16541", 0x100000, 0x040000, CRC(1d61d836) SHA1(c6b1b54d41d2650abeaf69a31aa76c4462531880) ) - ROM_LOAD( "16540", 0x200000, 0x100000, CRC(b6f9bb43) SHA1(823f29a2fc4b9315e8c58616dbd095d45d366c8b) ) - ROM_LOAD( "16539", 0x300000, 0x100000, CRC(38c26418) SHA1(2442933e13c83209e904c1dec677aeda91b75290) ) - ROM_LOAD( "16538", 0x400000, 0x100000, CRC(4d402c31) SHA1(2df160fd7e70f3d7b52fef2a2082e68966fd1535) ) + ROM_LOAD_x4( "epr-16541", 0x100000, 0x040000, CRC(1d61d836) SHA1(c6b1b54d41d2650abeaf69a31aa76c4462531880) ) + ROM_LOAD( "mpr-16540", 0x200000, 0x100000, CRC(b6f9bb43) SHA1(823f29a2fc4b9315e8c58616dbd095d45d366c8b) ) + ROM_LOAD( "mpr-16539", 0x300000, 0x100000, CRC(38c26418) SHA1(2442933e13c83209e904c1dec677aeda91b75290) ) + ROM_LOAD( "mpr-16538", 0x400000, 0x100000, CRC(4d402c31) SHA1(2df160fd7e70f3d7b52fef2a2082e68966fd1535) ) ROM_REGION( 0x200000, "mainpcb:gfx1", 0 ) /* tiles */ - ROM_LOAD16_BYTE( "16545", 0x000000, 0x100000, CRC(51748bac) SHA1(b1cae16b62a8d29117c0adb140eb09c1092f6c37) ) - ROM_LOAD16_BYTE( "16544", 0x000001, 0x100000, CRC(f6c93dfc) SHA1(a006cedb7d0151ccc8d22e6588b1c39e099da182) ) + ROM_LOAD16_BYTE( "mpr-16545", 0x000000, 0x100000, CRC(51748bac) SHA1(b1cae16b62a8d29117c0adb140eb09c1092f6c37) ) + ROM_LOAD16_BYTE( "mpr-16544", 0x000001, 0x100000, CRC(f6c93dfc) SHA1(a006cedb7d0151ccc8d22e6588b1c39e099da182) ) ROM_REGION32_BE( 0x1000000, "mainpcb:gfx2", 0 ) /* sprites */ - ROMX_LOAD( "16546", 0x000000, 0x200000, CRC(96f4be31) SHA1(ce3281630180d91de7850e9b1062382817fe0b1d) , ROM_SKIP(6)|ROM_GROUPWORD ) - ROMX_LOAD( "16548", 0x000002, 0x200000, CRC(00377f59) SHA1(cf0f808d7730f334c5ac80d3171fa457be9ac88e) , ROM_SKIP(6)|ROM_GROUPWORD ) - ROMX_LOAD( "16550", 0x000004, 0x200000, CRC(168e8966) SHA1(a18ec30f1358b09bcde6d8d2dbe0a82bea3bdae9) , ROM_SKIP(6)|ROM_GROUPWORD ) - ROMX_LOAD( "16552", 0x000006, 0x200000, CRC(a31dae31) SHA1(2da2c391f29b5fdb87e3f95d9dabd50370fafa5a) , ROM_SKIP(6)|ROM_GROUPWORD ) - ROMX_LOAD( "16547", 0x800000, 0x200000, CRC(50d328ed) SHA1(c4795299f5d7c9f3a847d684d8cde7012d4486f0) , ROM_SKIP(6)|ROM_GROUPWORD ) - ROMX_LOAD( "16549", 0x800002, 0x200000, CRC(a5802e9f) SHA1(4cec3ed85a21aaf99b73013795721f212019e619) , ROM_SKIP(6)|ROM_GROUPWORD ) - ROMX_LOAD( "16551", 0x800004, 0x200000, CRC(dede05fc) SHA1(51e092579e2b81fb68a9cc54165f80026fe71796) , ROM_SKIP(6)|ROM_GROUPWORD ) - ROMX_LOAD( "16553", 0x800006, 0x200000, CRC(c0a43009) SHA1(e4f73768de512046b3e25c4238da811dcc2dde0b) , ROM_SKIP(6)|ROM_GROUPWORD ) + ROMX_LOAD( "mpr-16546", 0x000000, 0x200000, CRC(96f4be31) SHA1(ce3281630180d91de7850e9b1062382817fe0b1d) , ROM_SKIP(6)|ROM_GROUPWORD ) + ROMX_LOAD( "mpr-16548", 0x000002, 0x200000, CRC(00377f59) SHA1(cf0f808d7730f334c5ac80d3171fa457be9ac88e) , ROM_SKIP(6)|ROM_GROUPWORD ) + ROMX_LOAD( "mpr-16550", 0x000004, 0x200000, CRC(168e8966) SHA1(a18ec30f1358b09bcde6d8d2dbe0a82bea3bdae9) , ROM_SKIP(6)|ROM_GROUPWORD ) + ROMX_LOAD( "mpr-16552", 0x000006, 0x200000, CRC(a31dae31) SHA1(2da2c391f29b5fdb87e3f95d9dabd50370fafa5a) , ROM_SKIP(6)|ROM_GROUPWORD ) + ROMX_LOAD( "mpr-16547", 0x800000, 0x200000, CRC(50d328ed) SHA1(c4795299f5d7c9f3a847d684d8cde7012d4486f0) , ROM_SKIP(6)|ROM_GROUPWORD ) + ROMX_LOAD( "mpr-16549", 0x800002, 0x200000, CRC(a5802e9f) SHA1(4cec3ed85a21aaf99b73013795721f212019e619) , ROM_SKIP(6)|ROM_GROUPWORD ) + ROMX_LOAD( "mpr-16551", 0x800004, 0x200000, CRC(dede05fc) SHA1(51e092579e2b81fb68a9cc54165f80026fe71796) , ROM_SKIP(6)|ROM_GROUPWORD ) + ROMX_LOAD( "mpr-16553", 0x800006, 0x200000, CRC(c0a43009) SHA1(e4f73768de512046b3e25c4238da811dcc2dde0b) , ROM_SKIP(6)|ROM_GROUPWORD ) ROM_END @@ -3997,7 +4090,7 @@ ROM_END /************************************************************************************************************************** ************************************************************************************************************************** ************************************************************************************************************************** - Kokoroji 2 + Soreike Kokology Vol. 2 Sega System32 + CD - Sega 1993 Rom Board is 837-8393 16Mb ROM board (Same as godenaxe2 or Arabian Fight) @@ -5041,11 +5134,9 @@ ROM_END * *************************************/ -void segas32_state::segas32_common_init(read16_delegate custom_r, write16_delegate custom_w) +void segas32_state::segas32_common_init() { /* reset the custom handlers and other pointers */ - m_custom_io_r[0] = custom_r; - m_custom_io_w[0] = custom_w; m_system32_prot_vblank = nullptr; m_sw1_output = nullptr; m_sw2_output = nullptr; @@ -5319,13 +5410,13 @@ DRIVER_INIT_MEMBER(segas32_new_state,f1lap) void segas32_state::init_alien3(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r), this), write16_delegate(FUNC(segas32_state::analog_custom_io_w), this)); + segas32_common_init(); m_sw1_output = &segas32_state::alien3_sw1_output; } void segas32_state::init_arescue(int m_hasdsp) { - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this)); + segas32_common_init(); if (m_hasdsp) m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa00007, read16_delegate(FUNC(segas32_state::arescue_dsp_r),this), write16_delegate(FUNC(segas32_state::arescue_dsp_w),this)); for (auto & elem : m_arescue_dsp_io) @@ -5337,14 +5428,14 @@ void segas32_state::init_arescue(int m_hasdsp) uint8_t *dspsrc = (uint8_t *)memregion("dsp")->base(); uint32_t *dspprg = (uint32_t *)memregion("dspprg")->base(); uint16_t *dspdata = (uint16_t *)memregion("dspdata")->base(); - + // copy DSP program for (int i = 0; i < 0x2000; i+= 4) { *dspprg = dspsrc[0+i]<<24 | dspsrc[1+i]<<16 | dspsrc[2+i]<<8; dspprg++; } - + // copy DSP data for (int i = 0; i < 0x800; i+= 2) { @@ -5357,7 +5448,7 @@ void segas32_state::init_arescue(int m_hasdsp) void segas32_state::init_arabfgt(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate()); + segas32_common_init(); /* install protection handlers */ m_maincpu->space(AS_PROGRAM).install_read_handler(0xa00100, 0xa0011f, read16_delegate(FUNC(segas32_state::arf_wakeup_protection_r),this)); @@ -5367,7 +5458,7 @@ void segas32_state::init_arabfgt(void) void segas32_state::init_brival(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate()); + segas32_common_init(); /* install protection handlers */ m_system32_protram = std::make_unique(0x1000/2); @@ -5378,7 +5469,7 @@ void segas32_state::init_brival(void) void segas32_state::init_darkedge(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate()); + segas32_common_init(); /* install protection handlers */ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa7ffff, read16_delegate(FUNC(segas32_state::darkedge_protection_r),this), write16_delegate(FUNC(segas32_state::darkedge_protection_w),this)); @@ -5387,16 +5478,17 @@ void segas32_state::init_darkedge(void) void segas32_state::init_dbzvrvs(void) { - segas32_common_init(read16_delegate(), write16_delegate()); + segas32_common_init(); /* install protection handlers */ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa7ffff, read16_delegate(FUNC(segas32_state::dbzvrvs_protection_r),this), write16_delegate(FUNC(segas32_state::dbzvrvs_protection_w),this)); + // 0x810000 to 0x8107ff = link RAM? probably not a dual cabinet, though... } void segas32_state::init_f1en(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this)); + segas32_common_init(); m_sw1_output = &segas32_state::radm_sw1_output; @@ -5407,7 +5499,7 @@ void segas32_state::init_f1en(void) void segas32_state::init_f1lap(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this)); + segas32_common_init(); m_system32_prot_vblank = &segas32_state::f1lap_fd1149_vblank; m_sw1_output = &segas32_state::f1lap_sw1_output; @@ -5418,16 +5510,15 @@ void segas32_state::init_f1lap(void) void segas32_state::init_ga2(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate()); + segas32_common_init(); decrypt_ga2_protrom(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa00fff, read16_delegate(FUNC(segas32_state::ga2_dpram_r),this), write16_delegate(FUNC(segas32_state::ga2_dpram_w),this)); } void segas32_state::init_harddunk(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate()); + segas32_common_init(); m_sw1_output = &segas32_state::harddunk_sw1_output; m_sw2_output = &segas32_state::harddunk_sw2_output; m_sw3_output = &segas32_state::harddunk_sw3_output; @@ -5436,7 +5527,7 @@ void segas32_state::init_harddunk(void) void segas32_state::init_holo(void) { - segas32_common_init(read16_delegate(), write16_delegate()); + segas32_common_init(); } @@ -5445,7 +5536,7 @@ void segas32_state::init_jpark(void) /* Temp. Patch until we emulate the 'Drive Board', thanks to Malice */ uint16_t *pROM = (uint16_t *)memregion("maincpu")->base(); - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this)); + segas32_common_init(); pROM[0xC15A8/2] = 0xCD70; pROM[0xC15AA/2] = 0xD8CD; @@ -5456,7 +5547,7 @@ void segas32_state::init_jpark(void) void segas32_state::init_orunners(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::orunners_custom_io_w),this)); + segas32_common_init(); m_sw1_output = &segas32_state::orunners_sw1_output; m_sw2_output = &segas32_state::orunners_sw2_output; @@ -5466,7 +5557,7 @@ void segas32_state::init_orunners(void) void segas32_state::init_radm(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this)); + segas32_common_init(); m_sw1_output = &segas32_state::radm_sw1_output; m_sw2_output = &segas32_state::radm_sw2_output; } @@ -5474,7 +5565,7 @@ void segas32_state::init_radm(void) void segas32_state::init_radr(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this)); + segas32_common_init(); m_sw1_output = &segas32_state::radm_sw1_output; m_sw2_output = &segas32_state::radr_sw2_output; @@ -5484,7 +5575,7 @@ void segas32_state::init_radr(void) void segas32_state::init_scross(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this)); + segas32_common_init(); m_soundcpu->space(AS_PROGRAM).install_write_handler(0xb0, 0xbf, write8_delegate(FUNC(segas32_state::scross_bank_w),this)); m_sw1_output = &segas32_state::scross_sw1_output; @@ -5496,13 +5587,13 @@ void segas32_state::init_scross(void) void segas32_state::init_slipstrm(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this)); + segas32_common_init(); } void segas32_state::init_sonic(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::sonic_custom_io_r),this), write16_delegate(FUNC(segas32_state::sonic_custom_io_w),this)); + segas32_common_init(); /* install protection handlers */ m_maincpu->space(AS_PROGRAM).install_write_handler(0x20E5C4, 0x20E5C5, write16_delegate(FUNC(segas32_state::sonic_level_load_protection),this)); @@ -5511,32 +5602,32 @@ void segas32_state::init_sonic(void) void segas32_state::init_sonicp(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::sonic_custom_io_r),this), write16_delegate(FUNC(segas32_state::sonic_custom_io_w),this)); + segas32_common_init(); } void segas32_state::init_spidman(void) { - segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate()); + segas32_common_init(); } void segas32_state::init_svf(void) { - segas32_common_init(read16_delegate(), write16_delegate()); + segas32_common_init(); } void segas32_state::init_jleague(void) { - segas32_common_init(read16_delegate(), write16_delegate()); + segas32_common_init(); m_maincpu->space(AS_PROGRAM).install_write_handler(0x20F700, 0x20F705, write16_delegate(FUNC(segas32_state::jleague_protection_w),this)); } void segas32_state::init_titlef(void) { - segas32_common_init(read16_delegate(), write16_delegate()); + segas32_common_init(); m_sw1_output = &segas32_state::titlef_sw1_output; m_sw2_output = &segas32_state::titlef_sw2_output; } @@ -5551,27 +5642,27 @@ void segas32_state::init_titlef(void) GAME( 1992, arescue, 0, sega_system32_dual_direct_upd7725, arescue, segas32_new_state, arescue, ROT0, "Sega", "Air Rescue (US)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1992, arescuej, arescue, sega_system32_dual_direct_upd7725, arescue, segas32_new_state, arescue, ROT0, "Sega", "Air Rescue (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, alien3, 0, sega_system32, alien3, segas32_new_state, alien3, ROT0, "Sega", "Alien3: The Gun (World)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, alien3u, alien3, sega_system32, alien3, segas32_new_state, alien3, ROT0, "Sega", "Alien3: The Gun (US)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, alien3, 0, sega_system32_analog, alien3, segas32_new_state, alien3, ROT0, "Sega", "Alien3: The Gun (World)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, alien3u, alien3, sega_system32_analog, alien3, segas32_new_state, alien3, ROT0, "Sega", "Alien3: The Gun (US)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1991, arabfgt, 0, sega_system32, arabfgt, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 03.1992 */ -GAME( 1991, arabfgtu, arabfgt, sega_system32, arabfgtu, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (US)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1991, arabfgtj, arabfgt, sega_system32, arabfgt, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1991, arabfgt, 0, sega_system32_4p, arabfgt, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 03.1992 */ +GAME( 1991, arabfgtu, arabfgt, sega_system32_4p, arabfgtu, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (US)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1991, arabfgtj, arabfgt, sega_system32_4p, arabfgt, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, brival, 0, sega_system32, brival, segas32_new_state, brival, ROT0, "Sega", "Burning Rival (World)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, brivalj, brival, sega_system32, brival, segas32_new_state, brival, ROT0, "Sega", "Burning Rival (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, brival, 0, sega_system32_4p, brival, segas32_new_state, brival, ROT0, "Sega", "Burning Rival (World)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, brivalj, brival, sega_system32_4p, brival, segas32_new_state, brival, ROT0, "Sega", "Burning Rival (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, darkedge, 0, sega_system32, darkedge, segas32_new_state, darkedge, ROT0, "Sega", "Dark Edge (World)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, darkedgej, darkedge, sega_system32, darkedge, segas32_new_state, darkedge, ROT0, "Sega", "Dark Edge (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, darkedge, 0, sega_system32_4p, darkedge, segas32_new_state, darkedge, ROT0, "Sega", "Dark Edge (World)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, darkedgej, darkedge, sega_system32_4p, darkedge, segas32_new_state, darkedge, ROT0, "Sega", "Dark Edge (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, dbzvrvs, 0, sega_system32, dbzvrvs, segas32_new_state, dbzvrvs, ROT0, "Sega / Banpresto", "Dragon Ball Z V.R.V.S. (Japan)", MACHINE_IMPERFECT_GRAPHICS) +GAME( 1994, dbzvrvs, 0, sega_system32_analog, dbzvrvs, segas32_new_state, dbzvrvs, ROT0, "Sega / Banpresto", "Dragon Ball Z V.R.V.S. (Japan)", MACHINE_IMPERFECT_GRAPHICS) GAME( 1991, f1en, 0, sega_system32_dual_direct, f1en, segas32_new_state, f1en, ROT0, "Sega", "F1 Exhaust Note (World)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1991, f1enu, f1en, sega_system32_dual_direct, f1en, segas32_new_state, f1en, ROT0, "Sega", "F1 Exhaust Note (US)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1991, f1enj, f1en, sega_system32_dual_direct, f1en, segas32_new_state, f1en, ROT0, "Sega", "F1 Exhaust Note (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, f1lap, 0, sega_system32, f1lap, segas32_new_state, f1lap, ROT0, "Sega", "F1 Super Lap (World)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, f1lapj, f1lap, sega_system32, f1lap, segas32_new_state, f1lap, ROT0, "Sega", "F1 Super Lap (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, f1lap, 0, sega_system32_analog, f1lap, segas32_new_state, f1lap, ROT0, "Sega", "F1 Super Lap (World)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, f1lapj, f1lap, sega_system32_analog, f1lap, segas32_new_state, f1lap, ROT0, "Sega", "F1 Super Lap (Japan)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1992, ga2, 0, sega_system32_v25, ga2, segas32_new_state, ga2, ROT0, "Sega", "Golden Axe: The Revenge of Death Adder (World)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1992, ga2u, ga2, sega_system32_v25, ga2u, segas32_new_state, ga2, ROT0, "Sega", "Golden Axe: The Revenge of Death Adder (US)", MACHINE_IMPERFECT_GRAPHICS ) @@ -5579,29 +5670,29 @@ GAME( 1992, ga2j, ga2, sega_system32_v25, ga2, segas32_new_state, GAME( 1992, holo, 0, sega_system32, holo, segas32_new_state, holo, ORIENTATION_FLIP_Y, "Sega", "Holosseum (US)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, jpark, 0, sega_system32, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 02.1994 */ -GAME( 1993, jparkj, jpark, sega_system32, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Rev A, Deluxe)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, jparkja, jpark, sega_system32, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Deluxe)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, jparkjc, jpark, sega_system32, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Rev A, Conversion)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, jpark, 0, sega_system32_analog, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 02.1994 */ +GAME( 1993, jparkj, jpark, sega_system32_analog, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Rev A, Deluxe)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, jparkja, jpark, sega_system32_analog, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Deluxe)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, jparkjc, jpark, sega_system32_analog, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Rev A, Conversion)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, kokoroj2, 0, sega_system32, radr, segas32_new_state, radr, ROT0, "Sega", "Kokoroji 2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING) /* uses an Audio CD */ +GAME( 1994, kokoroj2, 0, sega_system32_cd, kokoroj2, segas32_new_state, radr, ROT0, "Sega", "Soreike Kokology Vol. 2 - Kokoro no Tanteikyoku", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_PRINTER) /* uses an Audio CD */ -GAME( 1990, radm, 0, sega_system32, radm, segas32_new_state, radm, ROT0, "Sega", "Rad Mobile (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 02.1991 */ -GAME( 1990, radmu, radm, sega_system32, radm, segas32_new_state, radm, ROT0, "Sega", "Rad Mobile (US)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1990, radm, 0, sega_system32_analog, radm, segas32_new_state, radm, ROT0, "Sega", "Rad Mobile (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 02.1991 */ +GAME( 1990, radmu, radm, sega_system32_analog, radm, segas32_new_state, radm, ROT0, "Sega", "Rad Mobile (US)", MACHINE_IMPERFECT_GRAPHICS ) -GAMEL(1991, radr, 0, sega_system32, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (World)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) -GAMEL(1991, radru, radr, sega_system32, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (US)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) -GAMEL(1991, radrj, radr, sega_system32, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (Japan)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) +GAMEL(1991, radr, 0, sega_system32_analog, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (World)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) +GAMEL(1991, radru, radr, sega_system32_analog, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (US)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) +GAMEL(1991, radrj, radr, sega_system32_analog, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (Japan)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) -GAMEL(1995, slipstrm, 0, sega_system32, slipstrm, segas32_new_state, slipstrm, ROT0, "Capcom", "Slip Stream (Brazil 950515)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) -GAMEL(1995, slipstrmh, slipstrm, sega_system32, slipstrm, segas32_new_state, slipstrm, ROT0, "Capcom", "Slip Stream (Hispanic 950515)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) +GAMEL(1995, slipstrm, 0, sega_system32_analog, slipstrm, segas32_new_state, slipstrm, ROT0, "Capcom", "Slip Stream (Brazil 950515)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) +GAMEL(1995, slipstrmh, slipstrm, sega_system32_analog, slipstrm, segas32_new_state, slipstrm, ROT0, "Capcom", "Slip Stream (Hispanic 950515)", MACHINE_IMPERFECT_GRAPHICS, layout_radr ) -GAME( 1992, sonic, 0, sega_system32, sonic, segas32_new_state, sonic, ROT0, "Sega", "SegaSonic The Hedgehog (Japan, rev. C)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, sonicp, sonic, sega_system32, sonic, segas32_new_state, sonicp, ROT0, "Sega", "SegaSonic The Hedgehog (Japan, prototype)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, sonic, 0, sega_system32_track, sonic, segas32_new_state, sonic, ROT0, "Sega", "SegaSonic The Hedgehog (Japan, rev. C)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, sonicp, sonic, sega_system32_track, sonic, segas32_new_state, sonicp, ROT0, "Sega", "SegaSonic The Hedgehog (Japan, prototype)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1991, spidman, 0, sega_system32, spidman, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (World)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1991, spidmanu, spidman, sega_system32, spidmanu, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (US)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1991, spidmanj, spidman, sega_system32, spidman, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1991, spidman, 0, sega_system32_4p, spidman, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (World)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1991, spidmanu, spidman, sega_system32_4p, spidmanu, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (US)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1991, spidmanj, spidman, sega_system32_4p, spidman, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (Japan)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, svf, 0, sega_system32, svf, segas32_new_state, svf, ROT0, "Sega", "Super Visual Football: European Sega Cup (Rev A)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, svfo, svf, sega_system32, svf, segas32_new_state, svf, ROT0, "Sega", "Super Visual Football: European Sega Cup", MACHINE_IMPERFECT_GRAPHICS ) @@ -5610,16 +5701,16 @@ GAME( 1994, jleague, svf, sega_system32, svf, segas32_new_state, GAME( 1994, jleagueo, svf, sega_system32, svf, segas32_new_state, jleague, ROT0, "Sega", "The J.League 1994 (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, harddunk, 0, sega_multi32, harddunk, segas32_new_state, harddunk, ROT0, "Sega", "Hard Dunk (World)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, harddunkj, harddunk, sega_multi32, harddunk, segas32_new_state, harddunk, ROT0, "Sega", "Hard Dunk (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, harddunk, 0, sega_multi32_6p, harddunk, segas32_new_state, harddunk, ROT0, "Sega", "Hard Dunk (World)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, harddunkj, harddunk, sega_multi32_6p, harddunk, segas32_new_state, harddunk, ROT0, "Sega", "Hard Dunk (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, orunners, 0, sega_multi32, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (World)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, orunnersu, orunners, sega_multi32, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (US)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, orunnersj, orunners, sega_multi32, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, orunners, 0, sega_multi32_analog, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (World)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, orunnersu, orunners, sega_multi32_analog, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (US)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, orunnersj, orunners, sega_multi32_analog, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, scross, 0, sega_multi32, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (World)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, scrossa, scross, sega_multi32, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (World, alt)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, scrossu, scross, sega_multi32, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (US)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, scross, 0, sega_multi32_analog, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (World)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, scrossa, scross, sega_multi32_analog, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (World, alt)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, scrossu, scross, sega_multi32_analog, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (US)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1992, titlef, 0, sega_multi32, titlef, segas32_new_state, titlef, ROT0, "Sega", "Title Fight (World)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1992, titlefu, titlef, sega_multi32, titlef, segas32_new_state, titlef, ROT0, "Sega", "Title Fight (US)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/segasp.cpp b/src/mame/drivers/segasp.cpp index 00d72f509a2..39c4e53baff 100644 --- a/src/mame/drivers/segasp.cpp +++ b/src/mame/drivers/segasp.cpp @@ -293,7 +293,7 @@ INPUT_PORTS_START( segasp ) INPUT_PORTS_END -static MACHINE_CONFIG_DERIVED_CLASS( segasp, naomi_aw_base, segasp_state ) +static MACHINE_CONFIG_DERIVED( segasp, naomi_aw_base ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(segasp_map) MCFG_CPU_IO_MAP(onchip_port) @@ -539,24 +539,24 @@ ROM_END #define GAME_FLAGS (MACHINE_NO_SOUND|MACHINE_NOT_WORKING) -GAME( 2004, segasp, 0, segasp, segasp, driver_device, 0, ROT0, "Sega", "Sega System SP (Spider) BIOS", GAME_FLAGS | MACHINE_IS_BIOS_ROOT ) +GAME( 2004, segasp, 0, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Sega System SP (Spider) BIOS", GAME_FLAGS | MACHINE_IS_BIOS_ROOT ) // These use ROMs -GAME( 2009, brickppl,segasp, segasp, segasp, driver_device, 0, ROT0, "Sega", "Brick People / Block PeePoo (Ver 1.002)", GAME_FLAGS ) +GAME( 2009, brickppl,segasp, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Brick People / Block PeePoo (Ver 1.002)", GAME_FLAGS ) -GAME( 2005, dinoking,segasp, segasp, segasp, driver_device, 0, ROT0, "Sega", "Dinosaur King (USA)", GAME_FLAGS ) +GAME( 2005, dinoking,segasp, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Dinosaur King (USA)", GAME_FLAGS ) -GAME( 2006, dinokior,segasp, segasp, segasp, driver_device, 0, ROT0, "Sega", "Dinosaur King - Operation: Dinosaur Rescue (USA, Export)", GAME_FLAGS ) +GAME( 2006, dinokior,segasp, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Dinosaur King - Operation: Dinosaur Rescue (USA, Export)", GAME_FLAGS ) -GAME( 2006, lovebery,segasp, segasp, segasp, driver_device, 0, ROT0, "Sega", "Love And Berry - 1st-2nd Collection (Export, Ver 2.000)", GAME_FLAGS ) -GAME( 2006, lovebero,lovebery, segasp, segasp, driver_device, 0, ROT0, "Sega", "Love And Berry - 1st-2nd Collection (Export, Ver 1.003)", GAME_FLAGS ) +GAME( 2006, lovebery,segasp, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Love And Berry - 1st-2nd Collection (Export, Ver 2.000)", GAME_FLAGS ) +GAME( 2006, lovebero,lovebery, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Love And Berry - 1st-2nd Collection (Export, Ver 1.003)", GAME_FLAGS ) -GAME( 2009, tetgiant,segasp, segasp, segasp, driver_device, 0, ROT0, "Sega", "Tetris Giant / Tetris Dekaris (Ver.2.000)", GAME_FLAGS ) +GAME( 2009, tetgiant,segasp, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Tetris Giant / Tetris Dekaris (Ver.2.000)", GAME_FLAGS ) // These use a CF card -GAME( 2008, dinoki25,segasp, segasp, segasp, driver_device, 0, ROT0, "Sega", "Dinosaur King - D-Team VS. the Alpha Fortress (Export, Ver 2.500) (MDA-C0047)", GAME_FLAGS ) +GAME( 2008, dinoki25,segasp, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Dinosaur King - D-Team VS. the Alpha Fortress (Export, Ver 2.500) (MDA-C0047)", GAME_FLAGS ) -GAME( 2007, loveber3,segasp, segasp, segasp, driver_device, 0, ROT0, "Sega", "Love And Berry - 3rd-5th Collection (USA, Export, Ver 1.002) (MDA-C0042)", GAME_FLAGS ) +GAME( 2007, loveber3,segasp, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Love And Berry - 3rd-5th Collection (USA, Export, Ver 1.002) (MDA-C0042)", GAME_FLAGS ) -GAME( 2009, tetgiano,tetgiant, segasp, segasp, driver_device, 0, ROT0, "Sega", "Tetris Giant / Tetris Dekaris (MDA-C0076)", GAME_FLAGS ) +GAME( 2009, tetgiano,tetgiant, segasp, segasp, segasp_state, 0, ROT0, "Sega", "Tetris Giant / Tetris Dekaris (MDA-C0076)", GAME_FLAGS ) diff --git a/src/mame/drivers/segaufo.cpp b/src/mame/drivers/segaufo.cpp index 66479d9bd54..1575fbd8878 100644 --- a/src/mame/drivers/segaufo.cpp +++ b/src/mame/drivers/segaufo.cpp @@ -747,7 +747,7 @@ void ufo_state::machine_start() save_item(NAME(m_stepper)); } -static MACHINE_CONFIG_START( newufo, ufo_state ) +static MACHINE_CONFIG_START( newufo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) @@ -899,10 +899,10 @@ ROM_START( ufo800 ) ROM_END -GAMEL( 1991, newufo, 0, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (standard)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_newufo ) -GAMEL( 1991, newufo_sonic, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_newufo ) -GAMEL( 1991, newufo_nfl, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_newufo ) -GAMEL( 1991, newufo_xmas, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Christmas season ROM kit)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_newufo ) -GAMEL( 1991, ufomini, 0, ufomini, ufomini, driver_device, 0, ROT0, "Sega", "UFO Catcher Mini", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_ufomini ) -GAMEL( 1996, ufo21, 0, ufo21, ufo21, driver_device, 0, ROT0, "Sega", "UFO Catcher 21", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_ufo21 ) -GAMEL( 1998, ufo800, 0, ufo800, ufo800, driver_device, 0, ROT0, "Sega", "UFO Catcher 800", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_ufo800 ) +GAMEL( 1991, newufo, 0, newufo, newufo, ufo_state, 0, ROT0, "Sega", "New UFO Catcher (standard)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_newufo ) +GAMEL( 1991, newufo_sonic, newufo, newufo, newufo, ufo_state, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_newufo ) +GAMEL( 1991, newufo_nfl, newufo, newufo, newufo, ufo_state, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_newufo ) +GAMEL( 1991, newufo_xmas, newufo, newufo, newufo, ufo_state, 0, ROT0, "Sega", "New UFO Catcher (Christmas season ROM kit)", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_newufo ) +GAMEL( 1991, ufomini, 0, ufomini, ufomini, ufo_state, 0, ROT0, "Sega", "UFO Catcher Mini", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_ufomini ) +GAMEL( 1996, ufo21, 0, ufo21, ufo21, ufo_state, 0, ROT0, "Sega", "UFO Catcher 21", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_ufo21 ) +GAMEL( 1998, ufo800, 0, ufo800, ufo800, ufo_state, 0, ROT0, "Sega", "UFO Catcher 800", MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE, layout_ufo800 ) diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp index 325f2146b84..9b049b8e79a 100644 --- a/src/mame/drivers/segaxbd.cpp +++ b/src/mame/drivers/segaxbd.cpp @@ -17,6 +17,10 @@ due to testing an out-of-bounds value * rascot is not working at all + The After Burner schematics seem to show that the MB3773 clock input + is controlled only by PC6 on the first CXD1095. However, most games, + including aburner2, fail to periodically clear the watchdog timer + this way to prevent unwanted resets. Sega X-Board System Overview Sega, 1987-1992 @@ -264,49 +268,51 @@ ROMs: #include "includes/segaxbd.h" #include "includes/segaipt.h" +#include "machine/cxd1095.h" #include "machine/nvram.h" #include "sound/ym2151.h" #include "sound/segapcm.h" #include "speaker.h" -const device_type SEGA_XBD_PCB = device_creator; +DEFINE_DEVICE_TYPE(SEGA_XBD_PCB, segaxbd_state, "segaxbd_pcb", "Sega X-Board PCB") segaxbd_state::segaxbd_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segaxbd_state(mconfig, SEGA_XBD_PCB, "Sega X-Board PCB", tag, owner, clock, "segaxbd_pcb", __FILE__) + : segaxbd_state(mconfig, SEGA_XBD_PCB, tag, owner, clock) { } -segaxbd_state::segaxbd_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - m_maincpu(*this, "maincpu"), - m_subcpu(*this, "subcpu"), - m_soundcpu(*this, "soundcpu"), - m_soundcpu2(*this, "soundcpu2"), - m_mcu(*this, "mcu"), - m_watchdog(*this, "watchdog"), - m_cmptimer_1(*this, "cmptimer_main"), - m_sprites(*this, "sprites"), - m_segaic16vid(*this, "segaic16vid"), - m_segaic16road(*this, "segaic16road"), - m_soundlatch(*this, "soundlatch"), - m_subram0(*this, "subram0"), - m_road_priority(1), - m_scanline_timer(nullptr), - m_timer_irq_state(0), - m_vblank_irq_state(0), - m_loffire_sync(nullptr), - m_lastsurv_mux(0), - m_paletteram(*this, "paletteram"), - m_gprider_hack(false), - m_palette_entries(0), - m_screen(*this, "screen"), - m_palette(*this, "palette"), - m_adc_ports(*this, {"ADC0", "ADC1", "ADC2", "ADC3", "ADC4", "ADC5", "ADC6", "ADC7"}), - m_mux_ports(*this, {"MUX0", "MUX1", "MUX2", "MUX3"}) +segaxbd_state::segaxbd_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), + m_maincpu(*this, "maincpu"), + m_subcpu(*this, "subcpu"), + m_soundcpu(*this, "soundcpu"), + m_soundcpu2(*this, "soundcpu2"), + m_mcu(*this, "mcu"), + m_watchdog(*this, "watchdog"), + m_cmptimer_1(*this, "cmptimer_main"), + m_sprites(*this, "sprites"), + m_segaic16vid(*this, "segaic16vid"), + m_segaic16road(*this, "segaic16road"), + m_soundlatch(*this, "soundlatch"), + m_subram0(*this, "subram0"), + m_road_priority(1), + m_scanline_timer(nullptr), + m_timer_irq_state(0), + m_vblank_irq_state(0), + m_pc_0(0), + m_loffire_sync(nullptr), + m_lastsurv_mux(0), + m_paletteram(*this, "paletteram"), + m_gprider_hack(false), + m_palette_entries(0), + m_screen(*this, "screen"), + m_palette(*this, "palette"), + m_io0_porta(*this, "IO0PORTA"), + m_adc_ports(*this, "ADC%u", 0), + m_mux_ports(*this, "MUX%u", 0) { memset(m_adc_reverse, 0, sizeof(m_adc_reverse)); - memset(m_iochip_regs, 0, sizeof(m_iochip_regs)); palette_init(); } @@ -324,15 +330,11 @@ void segaxbd_state::device_start() // allocate a scanline timer m_scanline_timer = timer_alloc(TID_SCANLINE); - // reset the custom handlers and other pointers - m_iochip_custom_io_w[0][3] = iowrite_delegate(&segaxbd_state::generic_iochip0_lamps_w, this); - // save state save_item(NAME(m_timer_irq_state)); save_item(NAME(m_vblank_irq_state)); - save_item(NAME(m_iochip_regs[0])); - save_item(NAME(m_iochip_regs[1])); + save_item(NAME(m_pc_0)); save_item(NAME(m_lastsurv_mux)); } @@ -473,7 +475,7 @@ void segaxbd_state::sound_data_w(uint8_t data) READ16_MEMBER( segaxbd_state::adc_r ) { // on the write, latch the selected input port and stash the value - int which = (m_iochip_regs[0][2] >> 2) & 7; + int which = (m_pc_0 >> 2) & 7; int value = m_adc_ports[which].read_safe(0x0010); // reverse some port values @@ -495,192 +497,44 @@ WRITE16_MEMBER( segaxbd_state::adc_w ) //------------------------------------------------- -// iochip_r - helper to handle I/O chip reads +// pc_0_w - handle writes to port C on the first +// I/O chip //------------------------------------------------- -inline uint16_t segaxbd_state::iochip_r(int which, int port, int inputval) +WRITE8_MEMBER(segaxbd_state::pc_0_w) { - uint16_t result = m_iochip_regs[which][port]; - - // if there's custom I/O, do that to get the input value - if (!m_iochip_custom_io_r[which][port].isnull()) - inputval = m_iochip_custom_io_r[which][port](inputval); - - // for ports 0-3, the direction is controlled 4 bits at a time by register 6 - if (port <= 3) - { - if ((m_iochip_regs[which][6] >> (2 * port + 0)) & 1) - result = (result & ~0x0f) | (inputval & 0x0f); - if ((m_iochip_regs[which][6] >> (2 * port + 1)) & 1) - result = (result & ~0xf0) | (inputval & 0xf0); - } - - // for port 4, the direction is controlled 1 bit at a time by register 7 - else - { - if ((m_iochip_regs[which][7] >> 0) & 1) - result = (result & ~0x01) | (inputval & 0x01); - if ((m_iochip_regs[which][7] >> 1) & 1) - result = (result & ~0x02) | (inputval & 0x02); - if ((m_iochip_regs[which][7] >> 2) & 1) - result = (result & ~0x04) | (inputval & 0x04); - if ((m_iochip_regs[which][7] >> 3) & 1) - result = (result & ~0x08) | (inputval & 0x08); - result &= 0x0f; - } - return result; + m_pc_0 = data; + + // Output ports according to After Burner schematics: + // D7: (Not connected) + // D6: (/WDC) - watchdog reset + // D5: Screen display (1= blanked, 0= displayed) + // D4-D2: (ADC2-0) + // D1: (CONT) - affects sprite hardware + // D0: Sound section reset (1= normal operation, 0= reset) + m_watchdog->write_line_ck(BIT(data, 6)); + + m_segaic16vid->set_display_enable(data & 0x20); + + m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); + if (m_soundcpu2 != nullptr) + m_soundcpu2->set_input_line(INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); } //------------------------------------------------- -// iochip_0_r - handle reads from the first I/O -// chip +// pd_0_w - handle writes to port D on the first +// I/O chip //------------------------------------------------- -READ16_MEMBER( segaxbd_state::iochip_0_r ) +WRITE8_MEMBER(segaxbd_state::pd_0_w) { - switch (offset) - { - case 0: - // Input port: - // D7: (Not connected) - // D6: /INTR of ADC0804 - // D5-D0: CN C pin 24-19 (switch state 0= open, 1= closed) - return iochip_r(0, 0, ioport("IO0PORTA")->read()); - - case 1: - // I/O port: CN C pins 17,15,13,11,9,7,5,3 - return iochip_r(0, 1, ioport("IO0PORTB")->read()); - - case 2: - // Output port - return iochip_r(0, 2, 0); - - case 3: - // Output port - return iochip_r(0, 3, 0); - - case 4: - // Unused - return iochip_r(0, 4, 0); - } + // Output port: + // D7: Amplifier mute control (1= sounding, 0= muted) + // D6-D0: CN D pin A17-A23 (output level 1= high, 0= low) - usually set up as lamps and coincounter + machine().sound().system_enable(data & 0x80); - // everything else returns 0 - return 0; -} - - -//------------------------------------------------- -// iochip_0_w - handle writes to the first I/O -// chip -//------------------------------------------------- - -WRITE16_MEMBER( segaxbd_state::iochip_0_w ) -{ - // access is via the low 8 bits - if (!ACCESSING_BITS_0_7) - return; - - data &= 0xff; - - // swap in the new value and remember the previous value - uint8_t oldval = m_iochip_regs[0][offset]; - m_iochip_regs[0][offset] = data; - - // certain offsets have common effects - switch (offset) - { - case 2: - // Output port: - // D7: (Not connected) - // D6: (/WDC) - watchdog reset - // D5: Screen display (1= blanked, 0= displayed) - // D4-D2: (ADC2-0) - // D1: (CONT) - affects sprite hardware - // D0: Sound section reset (1= normal operation, 0= reset) - if (((oldval ^ data) & 0x40) && !(data & 0x40)) - m_watchdog->watchdog_reset(); - - m_segaic16vid->set_display_enable(data & 0x20); - - m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); - if (m_soundcpu2 != nullptr) - m_soundcpu2->set_input_line(INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); - break; - - case 3: - // Output port: - // D7: Amplifier mute control (1= sounding, 0= muted) - // D6-D0: CN D pin A17-A23 (output level 1= high, 0= low) - usually set up as lamps and coincounter - machine().sound().system_enable(data & 0x80); - break; - - default: - break; - } - - // if there's custom I/O, handle that as well - if (!m_iochip_custom_io_w[0][offset].isnull()) - m_iochip_custom_io_w[0][offset](data); - else if (offset <= 4) - logerror("I/O chip 0, port %c write = %02X\n", 'A' + offset, data); -} - - -//------------------------------------------------- -// iochip_1_r - handle reads from the second I/O -// chip -//------------------------------------------------- - -READ16_MEMBER( segaxbd_state::iochip_1_r ) -{ - switch (offset) - { - case 0: - // Input port: switches, CN D pin A1-8 (switch state 1= open, 0= closed) - return iochip_r(1, 0, ioport("IO1PORTA")->read()); - - case 1: - // Input port: switches, CN D pin A9-16 (switch state 1= open, 0= closed) - return iochip_r(1, 1, ioport("IO1PORTB")->read()); - - case 2: - // Input port: DIP switches (1= off, 0= on) - return iochip_r(1, 2, ioport("IO1PORTC")->read()); - - case 3: - // Input port: DIP switches (1= off, 0= on) - return iochip_r(1, 3, ioport("IO1PORTD")->read()); - - case 4: - // Unused - return iochip_r(1, 4, 0); - } - - // everything else returns 0 - return 0; -} - - -//------------------------------------------------- -// iochip_1_w - handle writes to the second I/O -// chip -//------------------------------------------------- - -WRITE16_MEMBER( segaxbd_state::iochip_1_w ) -{ - // access is via the low 8 bits - if (!ACCESSING_BITS_0_7) - return; - - data &= 0xff; - m_iochip_regs[1][offset] = data; - - // if there's custom I/O, handle that as well - if (!m_iochip_custom_io_w[1][offset].isnull()) - m_iochip_custom_io_w[1][offset](data); - else if (offset <= 4) - logerror("I/O chip 1, port %c write = %02X\n", 'A' + offset, data); + generic_iochip0_lamps_w(data); } @@ -878,13 +732,13 @@ void segaxbd_state::generic_iochip0_lamps_w(uint8_t data) //------------------------------------------------- -// aburner2_iochip0_motor_r - motor I/O reads -// for Afterburner II +// aburner2_motor_r - motor reads from port A +// of I/O chip 0 for Afterburner II //------------------------------------------------- -uint8_t segaxbd_state::aburner2_iochip0_motor_r(uint8_t data) +READ8_MEMBER(segaxbd_state::aburner2_motor_r) { - data &= 0xc0; + uint8_t data = m_io0_porta->read() & 0xc0; // TODO return data | 0x3f; @@ -892,24 +746,24 @@ uint8_t segaxbd_state::aburner2_iochip0_motor_r(uint8_t data) //------------------------------------------------- -// aburner2_iochip0_motor_w - motor I/O writes -// for Afterburner II +// aburner2_motor_w - motor writes to port B +// of I/O chip 0 for Afterburner II //------------------------------------------------- -void segaxbd_state::aburner2_iochip0_motor_w(uint8_t data) +WRITE8_MEMBER(segaxbd_state::aburner2_motor_w) { // TODO } //------------------------------------------------- -// smgp_iochip0_motor_r - motor I/O reads -// for Super Monaco GP +// smgp_motor_r - motor reads from port A of +// I/O chip 0 for Super Monaco GP //------------------------------------------------- -uint8_t segaxbd_state::smgp_iochip0_motor_r(uint8_t data) +READ8_MEMBER(segaxbd_state::smgp_motor_r) { - data &= 0xc0; + uint8_t data = m_io0_porta->read() & 0xc0; // TODO return data | 0x0; @@ -917,34 +771,36 @@ uint8_t segaxbd_state::smgp_iochip0_motor_r(uint8_t data) //------------------------------------------------- -// smgp_iochip0_motor_w - motor I/O reads -// for Super Monaco GP +// smgp_motor_w - motor writes to port B of +// I/O chip 0 for Super Monaco GP //------------------------------------------------- -void segaxbd_state::smgp_iochip0_motor_w(uint8_t data) +WRITE8_MEMBER(segaxbd_state::smgp_motor_w) { // TODO } //------------------------------------------------- -// lastsurv_iochip1_port_r - muxed I/O reads -// for Last Survivor +// lastsurv_port_r - muxed reads on port B of +// I/O chip 1 for Last Survivor //------------------------------------------------- -uint8_t segaxbd_state::lastsurv_iochip1_port_r(uint8_t data) +READ8_MEMBER(segaxbd_state::lastsurv_port_r) { return m_mux_ports[m_lastsurv_mux].read_safe(0xff); } //------------------------------------------------- -// lastsurv_iochip0_muxer_w - muxed I/O writes -// for Last Survivor +// lastsurv_muxer_w - muxed writes on port D +// of I/O chip 0 for Last Survivor //------------------------------------------------- -void segaxbd_state::lastsurv_iochip0_muxer_w(uint8_t data) +WRITE8_MEMBER(segaxbd_state::lastsurv_muxer_w) { + machine().sound().system_enable(data & 0x80); + m_lastsurv_mux = (data >> 5) & 3; generic_iochip0_lamps_w(data & 0x9f); } @@ -970,9 +826,15 @@ void segaxbd_state::update_main_irqs() m_maincpu->set_input_line(2, CLEAR_LINE); if (m_vblank_irq_state) + { irq |= 4; + m_watchdog->write_line_ck(0); + } else + { m_maincpu->set_input_line(4, CLEAR_LINE); + m_watchdog->write_line_ck(1); + } if (m_gprider_hack && irq > 4) irq = 4; @@ -1102,8 +964,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, segaxbd_state ) AM_RANGE(0x110000, 0x11ffff) AM_DEVWRITE("sprites", sega_xboard_sprite_device, draw_write) AM_RANGE(0x120000, 0x123fff) AM_MIRROR(0x00c000) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") AM_RANGE(0x130000, 0x13ffff) AM_READWRITE(adc_r, adc_w) - AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x00fff0) AM_READWRITE(iochip_0_r, iochip_0_w) - AM_RANGE(0x150000, 0x15000f) AM_MIRROR(0x00fff0) AM_READWRITE(iochip_1_r, iochip_1_w) + AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x00fff0) AM_DEVREADWRITE8("iochip_0", cxd1095_device, read, write, 0x00ff) + AM_RANGE(0x150000, 0x15000f) AM_MIRROR(0x00fff0) AM_DEVREADWRITE8("iochip_1", cxd1095_device, read, write, 0x00ff) AM_RANGE(0x160000, 0x16ffff) AM_WRITE(iocontrol_w) AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("subcpu", 0x00000) AM_RANGE(0x280000, 0x283fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram0") @@ -1247,13 +1109,15 @@ ADDRESS_MAP_END static INPUT_PORTS_START( xboard_generic ) PORT_START("mainpcb:IO0PORTA") - PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) // /INTR of ADC0804 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) // D5-D0: CN C pin 24-19 (switch state 0= open, 1= closed) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) // D6: /INTR of ADC0804 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) // D7: (Not connected) + // I/O port: CN C pins 17,15,13,11,9,7,5,3 PORT_START("mainpcb:IO0PORTB") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + // Input port: switches, CN D pin A1-8 (switch state 1= open, 0= closed) PORT_START("mainpcb:IO1PORTA") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // button? not used by any game we have PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) @@ -1264,12 +1128,15 @@ static INPUT_PORTS_START( xboard_generic ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) + // Input port: switches, CN D pin A9-16 (switch state 1= open, 0= closed) PORT_START("mainpcb:IO1PORTB") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + // Input port: DIP switches (1= off, 0= on) PORT_START("mainpcb:IO1PORTC") SEGA_COINAGE_LOC(SWA) + // Input port: DIP switches (1= off, 0= on) PORT_START("mainpcb:IO1PORTD") PORT_DIPUNUSED_DIPLOC( 0x01, IP_ACTIVE_LOW, "SWB:1" ) PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_LOW, "SWB:2" ) @@ -1829,7 +1696,7 @@ static MACHINE_CONFIG_FRAGMENT( xboard ) MCFG_NVRAM_ADD_0FILL("backup2") MCFG_QUANTUM_TIME(attotime::from_hz(6000)) - MCFG_WATCHDOG_ADD("watchdog") + MCFG_MB3773_ADD("watchdog") MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_main") MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_subx") @@ -1842,6 +1709,18 @@ static MACHINE_CONFIG_FRAGMENT( xboard ) MCFG_SEGA_315_5250_COMPARE_TIMER_ADD("cmptimer_subx") + MCFG_DEVICE_ADD("iochip_0", CXD1095, 0) // IC160 + MCFG_CXD1095_IN_PORTA_CB(IOPORT("IO0PORTA")) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("IO0PORTB")) + MCFG_CXD1095_OUT_PORTC_CB(WRITE8(segaxbd_state, pc_0_w)) + MCFG_CXD1095_OUT_PORTD_CB(WRITE8(segaxbd_state, pd_0_w)) + + MCFG_DEVICE_ADD("iochip_1", CXD1095, 0) // IC159 + MCFG_CXD1095_IN_PORTA_CB(IOPORT("IO1PORTA")) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("IO1PORTB")) + MCFG_CXD1095_IN_PORTC_CB(IOPORT("IO1PORTC")) + MCFG_CXD1095_IN_PORTD_CB(IOPORT("IO1PORTD")) + // video hardware MCFG_GFXDECODE_ADD("gfxdecode", "palette", segaxbd) MCFG_PALETTE_ADD("palette", 8192*3) @@ -1874,10 +1753,10 @@ static MACHINE_CONFIG_FRAGMENT( xboard ) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END -const device_type SEGA_XBD_REGULAR_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_XBD_REGULAR, segaxbd_regular_state, "segaxbd_pcb_reg", "Sega X-Board PCB (regular)") segaxbd_regular_state::segaxbd_regular_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segaxbd_state(mconfig, SEGA_XBD_REGULAR_DEVICE, "Sega X-Board PCB regular", tag, owner, clock, "segakbd_pcb_regular", __FILE__) + : segaxbd_state(mconfig, SEGA_XBD_REGULAR, tag, owner, clock) { } @@ -1886,8 +1765,8 @@ machine_config_constructor segaxbd_regular_state::device_mconfig_additions() con return MACHINE_CONFIG_NAME( xboard ); } -static MACHINE_CONFIG_START( sega_xboard, segaxbd_new_state ) - MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_REGULAR_DEVICE, 0) +static MACHINE_CONFIG_START( sega_xboard ) + MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_REGULAR, 0) MACHINE_CONFIG_END @@ -1900,10 +1779,10 @@ static MACHINE_CONFIG_FRAGMENT( xboard_fd1094 ) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) MACHINE_CONFIG_END -const device_type SEGA_XBD_FD1094_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_XBD_FD1094, segaxbd_fd1094_state, "segaxbd_pcb_fd1094", "Sega X-Board PCB (FD1094)") segaxbd_fd1094_state::segaxbd_fd1094_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segaxbd_state(mconfig, SEGA_XBD_FD1094_DEVICE, "Sega X-Board PCB FD1094", tag, owner, clock, "segakbd_pcb_fd1094", __FILE__) + : segaxbd_state(mconfig, SEGA_XBD_FD1094, tag, owner, clock) { } @@ -1912,13 +1791,13 @@ machine_config_constructor segaxbd_fd1094_state::device_mconfig_additions() cons return MACHINE_CONFIG_NAME( xboard_fd1094 ); } -static MACHINE_CONFIG_START( sega_xboard_fd1094, segaxbd_new_state ) - MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_FD1094_DEVICE, 0) +static MACHINE_CONFIG_START( sega_xboard_fd1094 ) + MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_FD1094, 0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sega_xboard_fd1094_double, segaxbd_new_state_double ) - MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_FD1094_DEVICE, 0) - MCFG_DEVICE_ADD("subpcb", SEGA_XBD_FD1094_DEVICE, 0) +static MACHINE_CONFIG_START( sega_xboard_fd1094_double ) + MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_FD1094, 0) + MCFG_DEVICE_ADD("subpcb", SEGA_XBD_FD1094, 0) //MCFG_QUANTUM_PERFECT_CPU("mainpcb:maincpu") // doesn't help.. MACHINE_CONFIG_END @@ -1928,6 +1807,32 @@ MACHINE_CONFIG_END // GAME-SPECIFIC MACHINE DRIVERS //************************************************************************** +static MACHINE_CONFIG_FRAGMENT( aburner2 ) + MCFG_FRAGMENT_ADD( xboard ) + + // basic machine hardware + MCFG_DEVICE_MODIFY("iochip_0") + MCFG_CXD1095_IN_PORTA_CB(READ8(segaxbd_state, aburner2_motor_r)) + MCFG_CXD1095_OUT_PORTB_CB(WRITE8(segaxbd_state, aburner2_motor_w)) +MACHINE_CONFIG_END + +DEFINE_DEVICE_TYPE(SEGA_XBD_ABURNER2_DEVICE, segaxbd_aburner2_state, "segaxbd_pcb_aburner2", "Sega X-Board PCB (After Burner)") + +segaxbd_aburner2_state::segaxbd_aburner2_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : segaxbd_state(mconfig, SEGA_XBD_ABURNER2_DEVICE, tag, owner, clock) +{ +} + +machine_config_constructor segaxbd_aburner2_state::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( aburner2 ); +} + +static MACHINE_CONFIG_START( sega_aburner2 ) + MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_ABURNER2_DEVICE, 0) +MACHINE_CONFIG_END + + static MACHINE_CONFIG_FRAGMENT( lastsurv_fd1094 ) MCFG_FRAGMENT_ADD( xboard_fd1094 ) @@ -1935,6 +1840,12 @@ static MACHINE_CONFIG_FRAGMENT( lastsurv_fd1094 ) // basic machine hardware // TODO: network board + MCFG_DEVICE_MODIFY("iochip_0") + MCFG_CXD1095_OUT_PORTD_CB(WRITE8(segaxbd_state, lastsurv_muxer_w)) + + MCFG_DEVICE_MODIFY("iochip_1") + MCFG_CXD1095_IN_PORTB_CB(READ8(segaxbd_state, lastsurv_port_r)) + // sound hardware - ym2151 stereo is reversed MCFG_SOUND_MODIFY("ymsnd") MCFG_SOUND_ROUTES_RESET() @@ -1942,10 +1853,10 @@ static MACHINE_CONFIG_FRAGMENT( lastsurv_fd1094 ) MCFG_SOUND_ROUTE(1, "lspeaker", 0.43) MACHINE_CONFIG_END -const device_type SEGA_XBD_LASTSURV_FD1094_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_XBD_LASTSURV_FD1094, segaxbd_lastsurv_fd1094_state, "segaxbd_pcb_lastsurv_fd1094", "Sega X-Board PCB (Last Survivor, FD1094)") segaxbd_lastsurv_fd1094_state::segaxbd_lastsurv_fd1094_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segaxbd_state(mconfig, SEGA_XBD_LASTSURV_FD1094_DEVICE, "Sega X-Board Last Survivor PCB FD1094", tag, owner, clock, "segakbd_pcb_lastsurv_fd1094", __FILE__) + : segaxbd_state(mconfig, SEGA_XBD_LASTSURV_FD1094, tag, owner, clock) { } @@ -1954,8 +1865,8 @@ machine_config_constructor segaxbd_lastsurv_fd1094_state::device_mconfig_additio return MACHINE_CONFIG_NAME( lastsurv_fd1094 ); } -static MACHINE_CONFIG_START( sega_lastsurv_fd1094, segaxbd_new_state ) - MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_LASTSURV_FD1094_DEVICE, 0) +static MACHINE_CONFIG_START( sega_lastsurv_fd1094 ) + MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_LASTSURV_FD1094, 0) MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( lastsurv ) @@ -1965,6 +1876,12 @@ static MACHINE_CONFIG_FRAGMENT( lastsurv ) // basic machine hardware // TODO: network board + MCFG_DEVICE_MODIFY("iochip_0") + MCFG_CXD1095_OUT_PORTD_CB(WRITE8(segaxbd_state, lastsurv_muxer_w)) + + MCFG_DEVICE_MODIFY("iochip_1") + MCFG_CXD1095_IN_PORTB_CB(READ8(segaxbd_state, lastsurv_port_r)) + // sound hardware - ym2151 stereo is reversed MCFG_SOUND_MODIFY("ymsnd") MCFG_SOUND_ROUTES_RESET() @@ -1972,10 +1889,10 @@ static MACHINE_CONFIG_FRAGMENT( lastsurv ) MCFG_SOUND_ROUTE(1, "lspeaker", 0.43) MACHINE_CONFIG_END -const device_type SEGA_XBD_LASTSURV_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_XBD_LASTSURV, segaxbd_lastsurv_state, "segaxbd_pcb_lastsurv", "Sega X-Board PCB (Last Survivor)") segaxbd_lastsurv_state::segaxbd_lastsurv_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segaxbd_state(mconfig, SEGA_XBD_LASTSURV_DEVICE, "Sega X-Board Last Survivor PCB", tag, owner, clock, "segakbd_pcb_lastsurv", __FILE__) + : segaxbd_state(mconfig, SEGA_XBD_LASTSURV, tag, owner, clock) { } @@ -1984,8 +1901,8 @@ machine_config_constructor segaxbd_lastsurv_state::device_mconfig_additions() co return MACHINE_CONFIG_NAME( lastsurv ); } -static MACHINE_CONFIG_START( sega_lastsurv, segaxbd_new_state ) - MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_LASTSURV_DEVICE, 0) +static MACHINE_CONFIG_START( sega_lastsurv ) + MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_LASTSURV, 0) MACHINE_CONFIG_END @@ -2006,6 +1923,10 @@ static MACHINE_CONFIG_FRAGMENT( smgp_fd1094 ) MCFG_CPU_PROGRAM_MAP(smgp_airdrive_map) MCFG_CPU_IO_MAP(smgp_airdrive_portmap) + MCFG_DEVICE_MODIFY("iochip_0") + MCFG_CXD1095_IN_PORTA_CB(READ8(segaxbd_state, smgp_motor_r)) + MCFG_CXD1095_OUT_PORTB_CB(WRITE8(segaxbd_state, smgp_motor_w)) + // sound hardware MCFG_SPEAKER_STANDARD_STEREO("rearleft", "rearright") @@ -2015,10 +1936,10 @@ static MACHINE_CONFIG_FRAGMENT( smgp_fd1094 ) MCFG_SOUND_ROUTE(1, "rearright", 1.0) MACHINE_CONFIG_END -const device_type SEGA_XBD_SMGP_FD1094_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_XBD_SMGP_FD1094, segaxbd_smgp_fd1094_state, "segaxbd_pcb_smgp_fd1094", "Sega X-Board PCB (SMGP, FD1094)") segaxbd_smgp_fd1094_state::segaxbd_smgp_fd1094_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segaxbd_state(mconfig, SEGA_XBD_SMGP_FD1094_DEVICE, "Sega X-Board SMGP PCB FD1094", tag, owner, clock, "segakbd_pcb_smgp_fd1094", __FILE__) + : segaxbd_state(mconfig, SEGA_XBD_SMGP_FD1094, tag, owner, clock) { } @@ -2027,8 +1948,8 @@ machine_config_constructor segaxbd_smgp_fd1094_state::device_mconfig_additions() return MACHINE_CONFIG_NAME( smgp_fd1094 ); } -static MACHINE_CONFIG_START( sega_smgp_fd1094, segaxbd_new_state ) - MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_SMGP_FD1094_DEVICE, 0) +static MACHINE_CONFIG_START( sega_smgp_fd1094 ) + MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_SMGP_FD1094, 0) MACHINE_CONFIG_END @@ -2049,6 +1970,10 @@ static MACHINE_CONFIG_FRAGMENT( smgp ) MCFG_CPU_PROGRAM_MAP(smgp_airdrive_map) MCFG_CPU_IO_MAP(smgp_airdrive_portmap) + MCFG_DEVICE_MODIFY("iochip_0") + MCFG_CXD1095_IN_PORTA_CB(READ8(segaxbd_state, smgp_motor_r)) + MCFG_CXD1095_OUT_PORTB_CB(WRITE8(segaxbd_state, smgp_motor_w)) + // sound hardware MCFG_SPEAKER_STANDARD_STEREO("rearleft", "rearright") @@ -2058,10 +1983,10 @@ static MACHINE_CONFIG_FRAGMENT( smgp ) MCFG_SOUND_ROUTE(1, "rearright", 1.0) MACHINE_CONFIG_END -const device_type SEGA_XBD_SMGP_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_XBD_SMGP, segaxbd_smgp_state, "segaxbd_pcb_smgp", "Sega X-Board PCB (SMGP)") segaxbd_smgp_state::segaxbd_smgp_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segaxbd_state(mconfig, SEGA_XBD_SMGP_DEVICE, "Sega X-Board SMGP PCB", tag, owner, clock, "segakbd_pcb_smgp", __FILE__) + : segaxbd_state(mconfig, SEGA_XBD_SMGP, tag, owner, clock) { } @@ -2070,8 +1995,8 @@ machine_config_constructor segaxbd_smgp_state::device_mconfig_additions() const return MACHINE_CONFIG_NAME( smgp ); } -static MACHINE_CONFIG_START( sega_smgp, segaxbd_new_state ) - MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_SMGP_DEVICE, 0) +static MACHINE_CONFIG_START( sega_smgp ) + MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_SMGP, 0) MACHINE_CONFIG_END @@ -2084,10 +2009,10 @@ static MACHINE_CONFIG_FRAGMENT( rascot ) MCFG_CPU_IO_MAP(rascot_z80_portmap) MACHINE_CONFIG_END -const device_type SEGA_XBD_RASCOT_DEVICE = device_creator; +DEFINE_DEVICE_TYPE(SEGA_XBD_RASCOT, segaxbd_rascot_state, "segaxbd_pcb_rascot", "Sega X-Board PCB (Royal Ascot)") segaxbd_rascot_state::segaxbd_rascot_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : segaxbd_state(mconfig, SEGA_XBD_RASCOT_DEVICE, "Sega X-Board Royal Ascot PCB", tag, owner, clock, "segakbd_pcb_rascot", __FILE__) + : segaxbd_state(mconfig, SEGA_XBD_RASCOT, tag, owner, clock) { } @@ -2096,8 +2021,8 @@ machine_config_constructor segaxbd_rascot_state::device_mconfig_additions() cons return MACHINE_CONFIG_NAME( rascot ); } -static MACHINE_CONFIG_START( sega_rascot, segaxbd_new_state ) - MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_RASCOT_DEVICE, 0) +static MACHINE_CONFIG_START( sega_rascot ) + MCFG_DEVICE_ADD("mainpcb", SEGA_XBD_RASCOT, 0) MACHINE_CONFIG_END @@ -4744,8 +4669,6 @@ ROM_END void segaxbd_state::install_aburner2(void) { m_road_priority = 0; - m_iochip_custom_io_r[0][0] = ioread_delegate(&segaxbd_state::aburner2_iochip0_motor_r, this); - m_iochip_custom_io_w[0][1] = iowrite_delegate(&segaxbd_state::aburner2_iochip0_motor_w, this); } DRIVER_INIT_MEMBER(segaxbd_new_state,aburner2) @@ -4753,17 +4676,6 @@ DRIVER_INIT_MEMBER(segaxbd_new_state,aburner2) m_mainpcb->install_aburner2(); } -void segaxbd_state::install_lastsurv(void) -{ - m_iochip_custom_io_r[1][1] = ioread_delegate(&segaxbd_state::lastsurv_iochip1_port_r, this); - m_iochip_custom_io_w[0][3] = iowrite_delegate(&segaxbd_state::lastsurv_iochip0_muxer_w, this); -} - -DRIVER_INIT_MEMBER(segaxbd_new_state,lastsurv) -{ - m_mainpcb->install_lastsurv(); -} - void segaxbd_state::install_loffire(void) { m_adc_reverse[1] = m_adc_reverse[3] = true; @@ -4781,9 +4693,6 @@ DRIVER_INIT_MEMBER(segaxbd_new_state,loffire) void segaxbd_state::install_smgp(void) { - m_iochip_custom_io_r[0][0] = ioread_delegate(&segaxbd_state::smgp_iochip0_motor_r, this); - m_iochip_custom_io_w[0][1] = iowrite_delegate(&segaxbd_state::smgp_iochip0_motor_w, this); - // map /EXCS space m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2f0000, 0x2f3fff, read16_delegate(FUNC(segaxbd_state::smgp_excs_r), this), write16_delegate(FUNC(segaxbd_state::smgp_excs_w), this)); } @@ -4832,22 +4741,22 @@ DRIVER_INIT_MEMBER(segaxbd_new_state_double,gprider_double) // GAME DRIVERS //************************************************************************** -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1987, aburner2, 0, sega_xboard, aburner2, segaxbd_new_state, aburner2, ROT0, "Sega", "After Burner II", 0 ) -GAME( 1987, aburner2g,aburner2, sega_xboard, aburner2, segaxbd_new_state, aburner2, ROT0, "Sega", "After Burner II (German)", 0 ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS +GAME( 1987, aburner2, 0, sega_aburner2, aburner2, segaxbd_new_state, aburner2, ROT0, "Sega", "After Burner II", 0 ) +GAME( 1987, aburner2g,aburner2, sega_aburner2, aburner2, segaxbd_new_state, aburner2, ROT0, "Sega", "After Burner II (German)", 0 ) -GAME( 1987, aburner, aburner2, sega_xboard, aburner, segaxbd_new_state, aburner2, ROT0, "Sega", "After Burner", 0 ) +GAME( 1987, aburner, aburner2, sega_aburner2, aburner, segaxbd_new_state, aburner2, ROT0, "Sega", "After Burner", 0 ) -GAME( 1987, thndrbld, 0, sega_xboard_fd1094, thndrbld, driver_device, 0, ROT0, "Sega", "Thunder Blade (upright) (FD1094 317-0056)", 0 ) -GAME( 1987, thndrbld1,thndrbld, sega_xboard, thndrbd1, driver_device, 0, ROT0, "Sega", "Thunder Blade (deluxe/standing) (unprotected)", 0 ) +GAME( 1987, thndrbld, 0, sega_xboard_fd1094, thndrbld, segaxbd_new_state, 0, ROT0, "Sega", "Thunder Blade (upright) (FD1094 317-0056)", 0 ) +GAME( 1987, thndrbld1,thndrbld, sega_xboard, thndrbd1, segaxbd_new_state, 0, ROT0, "Sega", "Thunder Blade (deluxe/standing) (unprotected)", 0 ) -GAME( 1989, lastsurv, 0, sega_lastsurv_fd1094,lastsurv, segaxbd_new_state, lastsurv, ROT0, "Sega", "Last Survivor (Japan) (FD1094 317-0083)", 0 ) +GAME( 1989, lastsurv, 0, sega_lastsurv_fd1094,lastsurv, driver_device, 0, ROT0, "Sega", "Last Survivor (Japan) (FD1094 317-0083)", 0 ) GAME( 1989, loffire, 0, sega_xboard_fd1094, loffire, segaxbd_new_state, loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (World) (FD1094 317-0136)", 0 ) GAME( 1989, loffireu, loffire, sega_xboard_fd1094, loffire, segaxbd_new_state, loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (US) (FD1094 317-0135)", 0 ) GAME( 1989, loffirej, loffire, sega_xboard_fd1094, loffire, segaxbd_new_state, loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (Japan) (FD1094 317-0134)", 0 ) -GAME( 1989, rachero, 0, sega_xboard_fd1094, rachero, driver_device, 0, ROT0, "Sega", "Racing Hero (FD1094 317-0144)", 0 ) +GAME( 1989, rachero, 0, sega_xboard_fd1094, rachero, segaxbd_new_state, 0, ROT0, "Sega", "Racing Hero (FD1094 317-0144)", 0 ) GAME( 1989, smgp, 0, sega_smgp_fd1094, smgp, segaxbd_new_state, smgp, ROT0, "Sega", "Super Monaco GP (World, Rev B) (FD1094 317-0126a)", 0 ) GAME( 1989, smgp6, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, smgp, ROT0, "Sega", "Super Monaco GP (World, Rev A) (FD1094 317-0126a)", 0 ) @@ -4858,13 +4767,13 @@ GAME( 1989, smgpu2, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state GAME( 1989, smgpj, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev B) (FD1094 317-0124a)", 0 ) GAME( 1989, smgpja, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev A) (FD1094 317-0124a)", 0 ) -GAME( 1990, abcop, 0, sega_xboard_fd1094, abcop, driver_device, 0, ROT0, "Sega", "A.B. Cop (World) (FD1094 317-0169b)", 0 ) -GAME( 1990, abcopj, abcop, sega_xboard_fd1094, abcop, driver_device, 0, ROT0, "Sega", "A.B. Cop (Japan) (FD1094 317-0169b)", 0 ) +GAME( 1990, abcop, 0, sega_xboard_fd1094, abcop, segaxbd_new_state, 0, ROT0, "Sega", "A.B. Cop (World) (FD1094 317-0169b)", 0 ) +GAME( 1990, abcopj, abcop, sega_xboard_fd1094, abcop, segaxbd_new_state, 0, ROT0, "Sega", "A.B. Cop (Japan) (FD1094 317-0169b)", 0 ) // wasn't officially available as a single PCB setup, but runs anyway albeit with messages suggesting you can compete against a rival that doesn't exist? -GAME( 1990, gpriders, gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (World, FD1094 317-0163)", 0 ) -GAME( 1990, gpriderus,gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (US, FD1094 317-0162)", 0 ) -GAME( 1990, gpriderjs,gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 ) +GAME( 1990, gpriders, gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (World, FD1094 317-0163)", 0 ) +GAME( 1990, gpriderus,gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (US, FD1094 317-0162)", 0 ) +GAME( 1990, gpriderjs,gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, gprider, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 ) // multi X-Board (2 stacks directly connected, shared RAM on bridge PCB - not networked) GAME( 1990, gprider, 0, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, gprider_double, ROT0, "Sega", "GP Rider (World, FD1094 317-0163) (Twin setup)", 0 ) @@ -4872,13 +4781,13 @@ GAME( 1990, gprideru,gprider, sega_xboard_fd1094_double, gprider_double, segax GAME( 1990, gpriderj,gprider, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, gprider_double, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161) (Twin setup)", 0 ) // X-Board + other boards? -GAME( 1991, rascot, 0, sega_rascot, rascot, segaxbd_new_state, rascot, ROT0, "Sega", "Royal Ascot (Japan, terminal?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1991, rascot, 0, sega_rascot, rascot, segaxbd_new_state, rascot, ROT0, "Sega", "Royal Ascot (Japan, terminal?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // decrypted bootlegs -GAME( 1987, thndrbldd, thndrbld,sega_xboard, thndrbld, driver_device, 0, ROT0, "bootleg", "Thunder Blade (upright) (bootleg of FD1094 317-0056 set)", 0 ) +GAME( 1987, thndrbldd, thndrbld, sega_xboard, thndrbld, segaxbd_new_state, 0, ROT0, "bootleg", "Thunder Blade (upright) (bootleg of FD1094 317-0056 set)", 0 ) -GAME( 1989, racherod, rachero, sega_xboard, rachero, driver_device, 0, ROT0, "bootleg", "Racing Hero (bootleg of FD1094 317-0144 set)", 0 ) +GAME( 1989, racherod, rachero, sega_xboard, rachero, segaxbd_new_state, 0, ROT0, "bootleg", "Racing Hero (bootleg of FD1094 317-0144 set)", 0 ) GAME( 1989, smgpd, smgp, sega_smgp, smgp, segaxbd_new_state, smgp, ROT0, "bootleg", "Super Monaco GP (World, Rev B) (bootleg of FD1094 317-0126a set)", 0 ) GAME( 1989, smgp6d, smgp, sega_smgp, smgp, segaxbd_new_state, smgp, ROT0, "bootleg", "Super Monaco GP (World, Rev A) (bootleg of FD1094 317-0126a set)", 0 ) @@ -4888,10 +4797,10 @@ GAME( 1989, smgpu1d, smgp, sega_smgp, smgp, segaxbd_new_state, smgp GAME( 1989, smgpu2d, smgp, sega_smgp, smgp, segaxbd_new_state, smgp, ROT0, "bootleg", "Super Monaco GP (US, Rev A) (bootleg of FD1094 317-0125a set)", 0 ) GAME( 1989, smgpjd, smgp, sega_smgp, smgp, segaxbd_new_state, smgp, ROT0, "bootleg", "Super Monaco GP (Japan, Rev B) (bootleg of FD1094 317-0124a set)", 0 ) -GAME( 1989, lastsurvd,lastsurv, sega_lastsurv,lastsurv, segaxbd_new_state, lastsurv, ROT0, "bootleg", "Last Survivor (Japan) (bootleg of FD1094 317-0083 set)", 0 ) +GAME( 1989, lastsurvd, lastsurv, sega_lastsurv,lastsurv, segaxbd_new_state, 0, ROT0, "bootleg", "Last Survivor (Japan) (bootleg of FD1094 317-0083 set)", 0 ) -GAME( 1990, abcopd, abcop, sega_xboard, abcop, driver_device, 0, ROT0, "bootleg", "A.B. Cop (World) (bootleg of FD1094 317-0169b set)", 0 ) -GAME( 1990, abcopjd, abcop, sega_xboard, abcop, driver_device, 0, ROT0, "bootleg", "A.B. Cop (Japan) (bootleg of FD1094 317-0169b set)", 0 ) +GAME( 1990, abcopd, abcop, sega_xboard, abcop, segaxbd_new_state, 0, ROT0, "bootleg", "A.B. Cop (World) (bootleg of FD1094 317-0169b set)", 0 ) +GAME( 1990, abcopjd, abcop, sega_xboard, abcop, segaxbd_new_state, 0, ROT0, "bootleg", "A.B. Cop (Japan) (bootleg of FD1094 317-0169b set)", 0 ) GAME( 1989, loffired, loffire, sega_xboard, loffire, segaxbd_new_state, loffire, ROT0, "bootleg", "Line of Fire / Bakudan Yarou (World) (bootleg of FD1094 317-0136 set)", 0 ) GAME( 1989, loffireud, loffire, sega_xboard, loffire, segaxbd_new_state, loffire, ROT0, "bootleg", "Line of Fire / Bakudan Yarou (US) (bootleg of FD1094 317-0135 set)", 0 ) diff --git a/src/mame/drivers/segaybd.cpp b/src/mame/drivers/segaybd.cpp index 235ca02a91b..9d7c1185d58 100644 --- a/src/mame/drivers/segaybd.cpp +++ b/src/mame/drivers/segaybd.cpp @@ -61,7 +61,9 @@ MB89372 - Uses 3 serial data transfer protocols: ASYNC, COP & BOP. Has a built #include "includes/segaipt.h" #include "machine/mb8421.h" +#include "machine/msm6253.h" #include "machine/nvram.h" +#include "machine/315_5296.h" #include "sound/segapcm.h" #include "sound/ym2151.h" #include "speaker.h" @@ -86,146 +88,64 @@ const uint32_t SOUND_CLOCK = 32215900; //************************************************************************** //------------------------------------------------- -// analog_r - handle analog input reads +// analog_mux - handle multiplexed analog input +// (HC4052 at IC121) //------------------------------------------------- -READ16_MEMBER( segaybd_state::analog_r ) +ioport_value segaybd_state::analog_mux() { - int result = 0xff; - if (ACCESSING_BITS_0_7) - { - result = m_analog_data[offset & 3] & 0x80; - m_analog_data[offset & 3] <<= 1; - } - return result; + return m_adc_ports[3 + (m_misc_io_data & 3)].read_safe(0x80); } //------------------------------------------------- -// analog_w - handle analog input control writes +// output1_w - handle writes to I/O port D //------------------------------------------------- -WRITE16_MEMBER( segaybd_state::analog_w ) +WRITE8_MEMBER(segaybd_state::output1_w) { - int selected = ((offset & 3) == 3) ? (3 + (m_misc_io_data[0x08/2] & 3)) : (offset & 3); - m_analog_data[offset & 3] = m_adc_ports[selected].read_safe(0xff); + if (!m_output_cb1.isnull()) + m_output_cb1(data); } //------------------------------------------------- -// io_chip_r - handle reads from the I/O chip +// misc_output_w - handle writes to I/O port E //------------------------------------------------- -READ16_MEMBER( segaybd_state::io_chip_r ) +WRITE8_MEMBER(segaybd_state::misc_output_w) { - offset &= 0x1f/2; - - switch (offset) - { - // I/O ports - case 0x00/2: - case 0x02/2: - case 0x04/2: - case 0x06/2: - case 0x08/2: - case 0x0a/2: - case 0x0c/2: - case 0x0e/2: - // if the port is configured as an output, return the last thing written - if (m_misc_io_data[0x1e/2] & (1 << offset)) - return m_misc_io_data[offset]; - - // otherwise, return an input port - return m_digital_ports[offset]->read(); - - // 'SEGA' protection - case 0x10/2: - return 'S'; - case 0x12/2: - return 'E'; - case 0x14/2: - return 'G'; - case 0x16/2: - return 'A'; - - // CNT register & mirror - case 0x18/2: - case 0x1c/2: - return m_misc_io_data[0x1c/2]; - - // port direction register & mirror - case 0x1a/2: - case 0x1e/2: - return m_misc_io_data[0x1e/2]; - } - return 0xffff; + // + // D7 = /KILL + // D6 = CONT + // D5 = /WDCL + // D4 = /SRES + // D3 = XRES + // D2 = YRES + // D1-D0 = ADC0-1 + // + m_segaic16vid->set_display_enable(data & 0x80); + m_watchdog->write_line_ck(BIT(data, 5)); + m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + m_subx->set_input_line(INPUT_LINE_RESET, (data & 0x08) ? ASSERT_LINE : CLEAR_LINE); + m_suby->set_input_line(INPUT_LINE_RESET, (data & 0x04) ? ASSERT_LINE : CLEAR_LINE); + + m_misc_io_data = data; } //------------------------------------------------- -// io_chip_w - handle writes to the I/O chip +// output2_w - handle writes to I/O port H //------------------------------------------------- -WRITE16_MEMBER( segaybd_state::io_chip_w ) +WRITE8_MEMBER(segaybd_state::output2_w) { - uint8_t old; - - // generic implementation - offset &= 0x1f/2; - old = m_misc_io_data[offset]; - m_misc_io_data[offset] = data; - - switch (offset) - { - // I/O ports - case 0x00/2: - break; - case 0x02/2: - break; - case 0x04/2: - break; - case 0x06/2: - if (!m_output_cb1.isnull()) - m_output_cb1(data); - break; - case 0x0a/2: - case 0x0c/2: - break; - - // miscellaneous output - case 0x08/2: - // - // D7 = /KILL - // D6 = CONT - // D5 = /WDCL - // D4 = /SRES - // D3 = XRES - // D2 = YRES - // D1-D0 = ADC0-1 - // - m_segaic16vid->set_display_enable(data & 0x80); - if (((old ^ data) & 0x20) && !(data & 0x20)) - m_watchdog->watchdog_reset(); - m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE); - m_subx->set_input_line(INPUT_LINE_RESET, (data & 0x08) ? ASSERT_LINE : CLEAR_LINE); - m_suby->set_input_line(INPUT_LINE_RESET, (data & 0x04) ? ASSERT_LINE : CLEAR_LINE); - break; - - // mute + if (!m_output_cb2.isnull()) + m_output_cb2(data); - case 0x0e/2: - if (!m_output_cb2.isnull()) - m_output_cb2(data); - - // D7 = /MUTE - // D6-D0 = FLT31-25 - machine().sound().system_enable(data & 0x80); - break; - - // CNT register - case 0x1c/2: - break; - } + // D7 = /MUTE + // D6-D0 = FLT31-25 + machine().sound().system_enable(data & 0x80); } @@ -234,7 +154,7 @@ WRITE16_MEMBER( segaybd_state::io_chip_w ) // port //------------------------------------------------- -WRITE16_MEMBER( segaybd_state::sound_data_w ) +WRITE16_MEMBER(segaybd_state::sound_data_w) { if (ACCESSING_BITS_0_7) synchronize(TID_SOUND_WRITE, data & 0xff); @@ -250,7 +170,7 @@ WRITE16_MEMBER( segaybd_state::sound_data_w ) // sound_data_r - read latched sound data //------------------------------------------------- -READ8_MEMBER( segaybd_state::sound_data_r ) +READ8_MEMBER(segaybd_state::sound_data_r) { m_soundcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); return m_soundlatch->read(space, 0); @@ -705,8 +625,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, segaybd_state ) AM_RANGE(0x084000, 0x08401f) AM_MIRROR(0x001fe0) AM_DEVREADWRITE("divider_main", sega_315_5249_divider_device, read, write) // AM_RANGE(0x086000, 0x087fff) /DEA0 AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram") - AM_RANGE(0x100000, 0x10001f) AM_READWRITE(io_chip_r, io_chip_w) - AM_RANGE(0x100040, 0x100047) AM_READWRITE(analog_r, analog_w) + AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff) + AM_RANGE(0x100040, 0x100047) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff) AM_RANGE(0x1f0000, 0x1fffff) AM_RAM ADDRESS_MAP_END @@ -780,7 +700,7 @@ WRITE_LINE_MEMBER(segaybd_state::mb8421_intr) READ16_MEMBER(segaybd_state::link_r) { - return rand(); + return machine().rand(); } READ16_MEMBER(segaybd_state::link2_r) @@ -860,12 +780,6 @@ static INPUT_PORTS_START( yboard_generic ) PORT_START("LIMITSW") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("PORTD") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("PORTE") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("DSW") PORT_DIPUNUSED_DIPLOC( 0x01, IP_ACTIVE_LOW, "SWB:1" ) PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_LOW, "SWB:2" ) @@ -878,9 +792,6 @@ static INPUT_PORTS_START( yboard_generic ) PORT_START("COINAGE") SEGA_COINAGE_LOC(SWA) - - PORT_START("PORTH") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END @@ -1392,7 +1303,7 @@ INPUT_PORTS_END // GENERIC MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( yboard, segaybd_state ) +static MACHINE_CONFIG_START( yboard ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/4) @@ -1411,7 +1322,24 @@ static MACHINE_CONFIG_START( yboard, segaybd_state ) MCFG_NVRAM_ADD_0FILL("backupram") MCFG_QUANTUM_TIME(attotime::from_hz(6000)) - MCFG_WATCHDOG_ADD("watchdog") + MCFG_MB3773_ADD("watchdog") // IC95 + + MCFG_DEVICE_ADD("io", SEGA_315_5296, MASTER_CLOCK/8) + MCFG_315_5296_IN_PORTA_CB(IOPORT("P1")) + MCFG_315_5296_IN_PORTB_CB(IOPORT("GENERAL")) + MCFG_315_5296_IN_PORTC_CB(IOPORT("LIMITSW")) + MCFG_315_5296_OUT_PORTD_CB(WRITE8(segaybd_state, output1_w)) + MCFG_315_5296_OUT_PORTE_CB(WRITE8(segaybd_state, misc_output_w)) + MCFG_315_5296_IN_PORTF_CB(IOPORT("DSW")) + MCFG_315_5296_IN_PORTG_CB(IOPORT("COINAGE")) + MCFG_315_5296_OUT_PORTH_CB(WRITE8(segaybd_state, output2_w)) + // FMCS and CKOT connect to CS and OSC IN on MSM6253 below + + MCFG_DEVICE_ADD("adc", MSM6253, 0) + MCFG_MSM6253_IN0_ANALOG_PORT("ADC.0") + MCFG_MSM6253_IN1_ANALOG_PORT("ADC.1") + MCFG_MSM6253_IN2_ANALOG_PORT("ADC.2") + MCFG_MSM6253_IN3_ANALOG_READ(segaybd_state, analog_mux) MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_main") MCFG_SEGA_315_5248_MULTIPLIER_ADD("multiplier_subx") @@ -1448,7 +1376,7 @@ static MACHINE_CONFIG_START( yboard, segaybd_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.43) MCFG_SEGAPCM_ADD("pcm", SOUND_CLOCK/8) - MCFG_SEGAPCM_BANK(BANK_12M | BANK_MASKF8) + MCFG_SEGAPCM_BANK_MASK(BANK_12M, BANK_MASKF8) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -2740,7 +2668,6 @@ DRIVER_INIT_MEMBER(segaybd_state,generic) // save state save_item(NAME(m_pdrift_bank)); - save_item(NAME(m_analog_data)); save_item(NAME(m_irq2_scanline)); save_item(NAME(m_timer_irq_state)); save_item(NAME(m_vblank_irq_state)); @@ -2797,25 +2724,25 @@ DRIVER_INIT_MEMBER(segaybd_state,rchase) // GAME DRIVERS //************************************************************************** -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS, LAYOUT -GAME( 1988, gforce2, 0, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gforce2sd, gforce2, yboard_deluxe, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2 (Super Deluxe unit)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gforce2ja, gforce2, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2 (Japan, Rev A)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gforce2j, gforce2, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS, LAYOUT +GAME( 1988, gforce2, 0, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gforce2sd, gforce2, yboard_deluxe, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2 (Super Deluxe unit)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gforce2ja, gforce2, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2 (Japan, Rev A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gforce2j, gforce2, yboard, gforce2, segaybd_state, gforce2, ROT0, "Sega", "Galaxy Force 2 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, gloc, 0, yboard, gloc, segaybd_state, gloc, ROT0, "Sega", "G-LOC Air Battle (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, glocu, gloc, yboard, gloc, segaybd_state, gloc, ROT0, "Sega", "G-LOC Air Battle (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, glocr360, gloc, yboard, glocr360, segaybd_state, r360, ROT0, "Sega", "G-LOC R360", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, gloc, 0, yboard, gloc, segaybd_state, gloc, ROT0, "Sega", "G-LOC Air Battle (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, glocu, gloc, yboard, gloc, segaybd_state, gloc, ROT0, "Sega", "G-LOC Air Battle (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, glocr360, gloc, yboard, glocr360, segaybd_state, r360, ROT0, "Sega", "G-LOC R360", MACHINE_SUPPORTS_SAVE ) -GAMEL(1988, pdrift, 0, yboard, pdrift, segaybd_state, pdrift, ROT0, "Sega", "Power Drift (World, Rev A)", MACHINE_SUPPORTS_SAVE, layout_pdrift ) -GAMEL(1988, pdrifta, pdrift, yboard, pdrift, segaybd_state, pdrift, ROT0, "Sega", "Power Drift (World)", MACHINE_SUPPORTS_SAVE, layout_pdrift ) -GAMEL(1988, pdrifte, pdrift, yboard, pdrifte, segaybd_state, pdrift, ROT0, "Sega", "Power Drift (World, Earlier)", MACHINE_SUPPORTS_SAVE, layout_pdrift ) -GAMEL(1988, pdriftj, pdrift, yboard, pdriftj, segaybd_state, pdrift, ROT0, "Sega", "Power Drift (Japan)", MACHINE_SUPPORTS_SAVE, layout_pdrift ) +GAMEL(1988, pdrift, 0, yboard, pdrift, segaybd_state, pdrift, ROT0, "Sega", "Power Drift (World, Rev A)", MACHINE_SUPPORTS_SAVE, layout_pdrift ) +GAMEL(1988, pdrifta, pdrift, yboard, pdrift, segaybd_state, pdrift, ROT0, "Sega", "Power Drift (World)", MACHINE_SUPPORTS_SAVE, layout_pdrift ) +GAMEL(1988, pdrifte, pdrift, yboard, pdrifte, segaybd_state, pdrift, ROT0, "Sega", "Power Drift (World, Earlier)", MACHINE_SUPPORTS_SAVE, layout_pdrift ) +GAMEL(1988, pdriftj, pdrift, yboard, pdriftj, segaybd_state, pdrift, ROT0, "Sega", "Power Drift (Japan)", MACHINE_SUPPORTS_SAVE, layout_pdrift ) -GAMEL(1988, pdriftl, 0, yboard_link, pdriftl, segaybd_state, pdrift, ROT0, "Sega", "Power Drift - Link Version (Japan, Rev A)", MACHINE_SUPPORTS_SAVE, layout_pdrift) +GAMEL(1988, pdriftl, 0, yboard_link, pdriftl, segaybd_state, pdrift, ROT0, "Sega", "Power Drift - Link Version (Japan, Rev A)", MACHINE_SUPPORTS_SAVE, layout_pdrift) -GAME( 1991, rchase, 0, yboard, rchase, segaybd_state, rchase, ROT0, "Sega", "Rail Chase (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, rchasej, rchase, yboard, rchase, segaybd_state, rchase, ROT0, "Sega", "Rail Chase (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, rchase, 0, yboard, rchase, segaybd_state, rchase, ROT0, "Sega", "Rail Chase (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, rchasej, rchase, yboard, rchase, segaybd_state, rchase, ROT0, "Sega", "Rail Chase (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, strkfgtr, 0, yboard, strkfgtr, segaybd_state, gloc, ROT0, "Sega", "Strike Fighter (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, strkfgtrj, strkfgtr, yboard, strkfgtr, segaybd_state, gloc, ROT0, "Sega", "Strike Fighter (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, strkfgtr, 0, yboard, strkfgtr, segaybd_state, gloc, ROT0, "Sega", "Strike Fighter (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, strkfgtrj, strkfgtr, yboard, strkfgtr, segaybd_state, gloc, ROT0, "Sega", "Strike Fighter (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/seibuspi.cpp b/src/mame/drivers/seibuspi.cpp index bbc030efa1a..7e99891c3a9 100644 --- a/src/mame/drivers/seibuspi.cpp +++ b/src/mame/drivers/seibuspi.cpp @@ -581,6 +581,34 @@ Raiden Fighters Jet (All Mask ROMs stamped 'RAIDEN-FJET') +Mahjong Adapter Layout +---------------------- + +(C)SXX2C MAHJANG IF SEIBU KAIHATSU INC. +|------------| |---------------------------------------------| |------------| +| |--| J A M M A |--| | +| E E E E | +| X X X X | +| C C 74LS393 16.9344MHz jumpers 74LS174 74LS174 C C | +| N N N N | +| 4 3 74LS393 * 74LS174 74LS174 2 1 | +| | +| 74LS138 74LS04 ** *** 74LS174 74LS174 | +| | +| 74LS161 SN7406 resistor package **** 74LS148 | +| | +| |---| 5 6 P M J |---| | +|----------| |------------------------------------------------| |---------| +Notes: +* : Unpopulated location for ULN2003 +** : Unpopulated location for 16V8-25 GAL +*** : Unpopulated location for 74LS161 +**** : Unpopulated location for 74LS148 + +This board is used by E Jong High School to encode the mahjong inputs onto the +SPI motherboard's JAMMA connector. + + There were some single PCBs made that run just one game. These are shown below. @@ -1835,7 +1863,7 @@ MACHINE_RESET_MEMBER(seibuspi_state,spi) m_z80_prg_transfer_pos = 0; } -static MACHINE_CONFIG_START( spi, seibuspi_state ) +static MACHINE_CONFIG_START( spi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I386, XTAL_50MHz/2) // AMD or Intel 386DX, 25MHz @@ -1964,7 +1992,7 @@ MACHINE_CONFIG_END /* SYS386I */ -static MACHINE_CONFIG_START( sys386i, seibuspi_state ) +static MACHINE_CONFIG_START( sys386i ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I386, XTAL_40MHz) // AMD 386DX, 40MHz @@ -1992,10 +2020,10 @@ static MACHINE_CONFIG_START( sys386i, seibuspi_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", XTAL_28_63636MHz/20, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", XTAL_28_63636MHz/20, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki2", XTAL_28_63636MHz/20, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", XTAL_28_63636MHz/20, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -2021,7 +2049,7 @@ DRIVER_INIT_MEMBER(seibuspi_state,sys386f) } } -static MACHINE_CONFIG_START( sys386f, seibuspi_state ) +static MACHINE_CONFIG_START( sys386f ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I386, XTAL_50MHz/2) // Intel i386DX, 25MHz @@ -3984,7 +4012,7 @@ GAME( 1995, viprp1ot, viprp1, spi, spi_3button, seibuspi_state, viprp1, GAME( 1995, viprp1oj, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, viprp1hk, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Viper Phase 1 (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* "=HONG KONG=" seems part of title */ -GAME( 1996, ejanhs, 0, ejanhs, spi_ejanhs, seibuspi_state, ejanhs, ROT0, "Seibu Kaihatsu", "E-Jan High School (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, ejanhs, 0, ejanhs, spi_ejanhs, seibuspi_state, ejanhs, ROT0, "Seibu Kaihatsu", "E Jong High School (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1996, rdft, 0, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, rdftj, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/seicross.cpp b/src/mame/drivers/seicross.cpp index c82b6667fba..37ee07676fe 100644 --- a/src/mame/drivers/seicross.cpp +++ b/src/mame/drivers/seicross.cpp @@ -390,7 +390,7 @@ INTERRUPT_GEN_MEMBER(seicross_state::vblank_irq) } -static MACHINE_CONFIG_START( no_nvram, seicross_state ) +static MACHINE_CONFIG_START( no_nvram ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz / 6) /* D780C, 3.072 MHz? */ @@ -633,10 +633,10 @@ DRIVER_INIT_MEMBER(seicross_state,friskytb) } -GAME( 1981, friskyt, 0, nvram, friskyt, driver_device, 0, ROT0, "Nichibutsu", "Frisky Tom (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, friskyta, friskyt, nvram, friskyt, driver_device, 0, ROT0, "Nichibutsu", "Frisky Tom (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, friskytb, friskyt, friskytb, friskyt, seicross_state, friskytb, ROT0, "Nichibutsu", "Frisky Tom (set 3, encrypted)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // protection mcu runs encrypted opcodes -GAME( 1982, radrad, 0, no_nvram, radrad, driver_device, 0, ROT0, "Nichibutsu USA", "Radical Radial (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, radradj, radrad, no_nvram, radrad, driver_device, 0, ROT0, "Logitec Corp.", "Radical Radial (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, seicross, 0, no_nvram, seicross, driver_device, 0, ROT90, "Nichibutsu / Alice", "Seicross", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, sectrzon, seicross, no_nvram, seicross, driver_device, 0, ROT90, "Nichibutsu / Alice", "Sector Zone", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, friskyt, 0, nvram, friskyt, seicross_state, 0, ROT0, "Nichibutsu", "Frisky Tom (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, friskyta, friskyt, nvram, friskyt, seicross_state, 0, ROT0, "Nichibutsu", "Frisky Tom (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, friskytb, friskyt, friskytb, friskyt, seicross_state, friskytb, ROT0, "Nichibutsu", "Frisky Tom (set 3, encrypted)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // protection mcu runs encrypted opcodes +GAME( 1982, radrad, 0, no_nvram, radrad, seicross_state, 0, ROT0, "Nichibutsu USA", "Radical Radial (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, radradj, radrad, no_nvram, radrad, seicross_state, 0, ROT0, "Logitec Corp.", "Radical Radial (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, seicross, 0, no_nvram, seicross, seicross_state, 0, ROT90, "Nichibutsu / Alice", "Seicross", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sectrzon, seicross, no_nvram, seicross, seicross_state, 0, ROT90, "Nichibutsu / Alice", "Sector Zone", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/seicupbl.cpp b/src/mame/drivers/seicupbl.cpp index f68cfbb815e..1545d08d758 100644 --- a/src/mame/drivers/seicupbl.cpp +++ b/src/mame/drivers/seicupbl.cpp @@ -539,7 +539,7 @@ static GFXDECODE_START( seicupbl_csb ) GFXDECODE_END -static MACHINE_CONFIG_START( cupsocbl, seicupbl_state ) +static MACHINE_CONFIG_START( cupsocbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,12000000) @@ -579,7 +579,7 @@ static MACHINE_CONFIG_START( cupsocbl, seicupbl_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -808,6 +808,6 @@ ROM_START( cupsocsb3 ) ROM_END -GAME( 1992, cupsocsb, cupsoc, cupsocbl, cupsoc, driver_device, 0, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, cupsocsb2,cupsoc, cupsocbl, cupsoc, driver_device, 0, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) -GAME( 1992, cupsocsb3,cupsoc, cupsocbl, cupsoc, driver_device, 0, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, cupsocsb, cupsoc, cupsocbl, cupsoc, seicupbl_state, 0, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, cupsocsb2,cupsoc, cupsocbl, cupsoc, seicupbl_state, 0, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) +GAME( 1992, cupsocsb3,cupsoc, cupsocbl, cupsoc, seicupbl_state, 0, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/selz80.cpp b/src/mame/drivers/selz80.cpp index f4813520766..ffff71824d8 100644 --- a/src/mame/drivers/selz80.cpp +++ b/src/mame/drivers/selz80.cpp @@ -152,7 +152,7 @@ READ8_MEMBER( selz80_state::kbd_r ) return data; } -static MACHINE_CONFIG_START( selz80, selz80_state ) +static MACHINE_CONFIG_START( selz80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(selz80_mem) @@ -196,6 +196,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS, INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, selz80, 0, 0, selz80, selz80, driver_device, 0, "SEL", "SEL Z80 Trainer", MACHINE_NO_SOUND_HW) -COMP( 1988, dagz80, selz80, 0, dagz80, selz80, driver_device, 0, "DAG", "DAG Z80 Trainer", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1985, selz80, 0, 0, selz80, selz80, selz80_state, 0, "SEL", "SEL Z80 Trainer", MACHINE_NO_SOUND_HW) +COMP( 1988, dagz80, selz80, 0, dagz80, selz80, selz80_state, 0, "DAG", "DAG Z80 Trainer", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/sengokmj.cpp b/src/mame/drivers/sengokmj.cpp index 8f5b522356f..285896d90fe 100644 --- a/src/mame/drivers/sengokmj.cpp +++ b/src/mame/drivers/sengokmj.cpp @@ -566,7 +566,7 @@ WRITE16_MEMBER( sengokmj_state::layer_scroll_w ) } -static MACHINE_CONFIG_START( sengokmj, sengokmj_state ) +static MACHINE_CONFIG_START( sengokmj ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, 16000000/2) /* V30-8 */ @@ -603,7 +603,7 @@ static MACHINE_CONFIG_START( sengokmj, sengokmj_state ) MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1320000, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", 1320000, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -650,5 +650,5 @@ ROM_START( sengokmj ) ROM_LOAD( "rs006.89", 0x000, 0x200, CRC(96f7646e) SHA1(400a831b83d6ac4d2a46ef95b97b1ee237099e44) ) /* Priority */ ROM_END -GAME( 1991, sengokmj, 0, sengokmj, sengokmj, driver_device, 0, ROT0, "Sigma", "Sengoku Mahjong [BET] (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, sengokmj, 0, sengokmj, sengokmj, sengokmj_state, 0, ROT0, "Sigma", "Sengoku Mahjong [BET] (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) /*Non-Bet Version?*/ diff --git a/src/mame/drivers/senjyo.cpp b/src/mame/drivers/senjyo.cpp index 5390c5c9676..b32b5056826 100644 --- a/src/mame/drivers/senjyo.cpp +++ b/src/mame/drivers/senjyo.cpp @@ -550,7 +550,7 @@ static GFXDECODE_START( senjyo ) GFXDECODE_END -static MACHINE_CONFIG_START( senjyo, senjyo_state ) +static MACHINE_CONFIG_START( senjyo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */ @@ -729,19 +729,19 @@ ROM_START( starforcb ) ROM_LOAD( "a0.2e", 0x0000, 0x2000, CRC(5ab0e2fa) SHA1(78f0290d1e006a39bb8ee5a29cf229ed2c1f2b09) ) ROM_REGION( 0x03000, "gfx1", 0 ) - ROM_LOAD( "b8.8h", 0x00000, 0x1000, CRC(f4803339) SHA1(a119d68c2dd1c0e191231ce77353b31f30f7aa76) ) /* fg */ - ROM_LOAD( "b7.8f", 0x01000, 0x1000, CRC(96979684) SHA1(bb4f7d3afc8dfaa723dfb5374996cc4bfd76fa3c) ) - ROM_LOAD( "b6.8d", 0x02000, 0x1000, CRC(eead1d5c) SHA1(7c9165ed227c5228122b494a265cbfd6e843ba61) ) + ROM_LOAD( "b8.8h", 0x00000, 0x1000, CRC(f4803339) SHA1(a119d68c2dd1c0e191231ce77353b31f30f7aa76) ) /* fg */ + ROM_LOAD( "b7.8f", 0x01000, 0x1000, CRC(96979684) SHA1(bb4f7d3afc8dfaa723dfb5374996cc4bfd76fa3c) ) + ROM_LOAD( "b6.8d", 0x02000, 0x1000, CRC(eead1d5c) SHA1(7c9165ed227c5228122b494a265cbfd6e843ba61) ) ROM_REGION( 0x06000, "gfx2", 0 ) - ROM_LOAD( "c17.8a", 0x00000, 0x2000, CRC(c3bda12f) SHA1(3748ea8e34222a31a365a02ec77430f268b0b397) ) /* bg1 */ - ROM_LOAD( "c16.7a", 0x02000, 0x2000, CRC(9e9384fe) SHA1(3aaa9cc64ef3775325f64733da4f6c328abf6514) ) - ROM_LOAD( "c15.6a", 0x04000, 0x2000, CRC(84603285) SHA1(f4d6dfa3968fbd8ebf1a6451d5ea1821d65d9b49) ) + ROM_LOAD( "c17.8a", 0x00000, 0x2000, CRC(c3bda12f) SHA1(3748ea8e34222a31a365a02ec77430f268b0b397) ) /* bg1 */ + ROM_LOAD( "c16.7a", 0x02000, 0x2000, CRC(9e9384fe) SHA1(3aaa9cc64ef3775325f64733da4f6c328abf6514) ) + ROM_LOAD( "c15.6a", 0x04000, 0x2000, CRC(84603285) SHA1(f4d6dfa3968fbd8ebf1a6451d5ea1821d65d9b49) ) ROM_REGION( 0x06000, "gfx3", 0 ) - ROM_LOAD( "c20.8k", 0x00000, 0x2000, CRC(fdd9e38b) SHA1(3766835d9e9fc7e5dd99521e7303562029b78a65) ) /* bg2 */ - ROM_LOAD( "c19.7k", 0x02000, 0x2000, CRC(668aea14) SHA1(62eb0df48f2f0c5778bb230cc3bf0b8eb3b4e3f8) ) - ROM_LOAD( "c18.6k", 0x04000, 0x2000, CRC(c62a19c1) SHA1(9ce0e29630d3c8cba4db4cff333b250481348968) ) + ROM_LOAD( "c20.8k", 0x00000, 0x2000, CRC(fdd9e38b) SHA1(3766835d9e9fc7e5dd99521e7303562029b78a65) ) /* bg2 */ + ROM_LOAD( "c19.7k", 0x02000, 0x2000, CRC(668aea14) SHA1(62eb0df48f2f0c5778bb230cc3bf0b8eb3b4e3f8) ) + ROM_LOAD( "c18.6k", 0x04000, 0x2000, CRC(c62a19c1) SHA1(9ce0e29630d3c8cba4db4cff333b250481348968) ) ROM_REGION( 0x03000, "gfx4", 0 ) ROM_LOAD( "c5.8n", 0x00000, 0x1000, CRC(6455c3ad) SHA1(b163ccd3dc26ccfa8be1d16d52e17bc660ff84e3) ) /* bg3 */ @@ -749,12 +749,12 @@ ROM_START( starforcb ) ROM_LOAD( "c3.6n", 0x02000, 0x1000, CRC(ce20b469) SHA1(60177a669d9c8cbeedd03ca5e2edf3f589c1c815) ) ROM_REGION( 0x0c000, "gfx5", 0 ) - ROM_LOAD( "b13.8p", 0x00000, 0x2000, CRC(1cfc88a8) SHA1(2948864ed88ba3b1d500047e2ef594b67274710c) ) /* sprites */ - ROM_LOAD( "b14.8r", 0x02000, 0x2000, CRC(902060b4) SHA1(f371aa12ba3f554918e8a482114df166cd007b0e) ) /* sprites */ - ROM_LOAD( "b11.8m", 0x04000, 0x2000, CRC(7676b970) SHA1(f5fcee4ca555e7c880c6bf5d5ea01ff8d619a837) ) - ROM_LOAD( "b12.8n", 0x06000, 0x2000, CRC(6f4a5d67) SHA1(182be475dfee4d272f57c030e3acd4e8cfa4fc53) ) - ROM_LOAD( "b9.8j", 0x08000, 0x2000, CRC(e7d51959) SHA1(34d9afb0f31dc1d02e7b85aa69345fc66cf0f554) ) - ROM_LOAD( "b10.8l", 0x0a000, 0x2000, CRC(6ea27bec) SHA1(30da81a99d5920107751afda359576e426c497c4) ) + ROM_LOAD( "b13.8p", 0x00000, 0x2000, CRC(1cfc88a8) SHA1(2948864ed88ba3b1d500047e2ef594b67274710c) ) /* sprites */ + ROM_LOAD( "b14.8r", 0x02000, 0x2000, CRC(902060b4) SHA1(f371aa12ba3f554918e8a482114df166cd007b0e) ) /* sprites */ + ROM_LOAD( "b11.8m", 0x04000, 0x2000, CRC(7676b970) SHA1(f5fcee4ca555e7c880c6bf5d5ea01ff8d619a837) ) + ROM_LOAD( "b12.8n", 0x06000, 0x2000, CRC(6f4a5d67) SHA1(182be475dfee4d272f57c030e3acd4e8cfa4fc53) ) + ROM_LOAD( "b9.8j", 0x08000, 0x2000, CRC(e7d51959) SHA1(34d9afb0f31dc1d02e7b85aa69345fc66cf0f554) ) + ROM_LOAD( "b10.8l", 0x0a000, 0x2000, CRC(6ea27bec) SHA1(30da81a99d5920107751afda359576e426c497c4) ) ROM_REGION( 0x0020, "proms", 0 ) /* PROMs */ ROM_LOAD( "a18s030.7b", 0x0000, 0x0020, CRC(68db8300) SHA1(33cd6b5ed92d7b73a708f2e4b12b6e7f6496d0c6) ) /* unknown - timing? */ @@ -768,38 +768,38 @@ ROM_START( starforca ) ROM_LOAD( "2.bin", 0x6000, 0x2000, CRC(311c6e59) SHA1(ff3ba96ffade7602d3b150dae4bdc1c02a148576) ) ROM_REGION( 0x2000, "sub", 0 ) - ROM_LOAD( "0.bin", 0x0000, 0x2000, CRC(a277c268) SHA1(99ed8439119fa4b850ad8aadb7ff3e54d4cd40be) ) + ROM_LOAD( "1.3hj", 0x0000, 0x2000, CRC(2735bb22) SHA1(1bd0558e05b41aebab3911991969512df904fea5) ) ROM_REGION( 0x03000, "gfx1", 0 ) - ROM_LOAD( "8.bin", 0x00000, 0x1000, CRC(f4803339) SHA1(a119d68c2dd1c0e191231ce77353b31f30f7aa76) ) /* fg */ - ROM_LOAD( "7.bin", 0x01000, 0x1000, CRC(96979684) SHA1(bb4f7d3afc8dfaa723dfb5374996cc4bfd76fa3c) ) - ROM_LOAD( "6.bin", 0x02000, 0x1000, CRC(eead1d5c) SHA1(7c9165ed227c5228122b494a265cbfd6e843ba61) ) + ROM_LOAD( "8.bin", 0x00000, 0x1000, CRC(f4803339) SHA1(a119d68c2dd1c0e191231ce77353b31f30f7aa76) ) /* fg */ + ROM_LOAD( "7.bin", 0x01000, 0x1000, CRC(96979684) SHA1(bb4f7d3afc8dfaa723dfb5374996cc4bfd76fa3c) ) + ROM_LOAD( "6.bin", 0x02000, 0x1000, CRC(eead1d5c) SHA1(7c9165ed227c5228122b494a265cbfd6e843ba61) ) ROM_REGION( 0x06000, "gfx2", 0 ) - ROM_LOAD( "17.bin", 0x00000, 0x2000, CRC(c3bda12f) SHA1(3748ea8e34222a31a365a02ec77430f268b0b397) ) /* bg1 */ - ROM_LOAD( "16.bin", 0x02000, 0x2000, CRC(9e9384fe) SHA1(3aaa9cc64ef3775325f64733da4f6c328abf6514) ) - ROM_LOAD( "15.bin", 0x04000, 0x2000, CRC(84603285) SHA1(f4d6dfa3968fbd8ebf1a6451d5ea1821d65d9b49) ) + ROM_LOAD( "17.bin", 0x00000, 0x2000, CRC(c3bda12f) SHA1(3748ea8e34222a31a365a02ec77430f268b0b397) ) /* bg1 */ + ROM_LOAD( "16.bin", 0x02000, 0x2000, CRC(9e9384fe) SHA1(3aaa9cc64ef3775325f64733da4f6c328abf6514) ) + ROM_LOAD( "15.bin", 0x04000, 0x2000, CRC(84603285) SHA1(f4d6dfa3968fbd8ebf1a6451d5ea1821d65d9b49) ) ROM_REGION( 0x06000, "gfx3", 0 ) - ROM_LOAD( "20.bin", 0x00000, 0x2000, CRC(fdd9e38b) SHA1(3766835d9e9fc7e5dd99521e7303562029b78a65) ) /* bg2 */ - ROM_LOAD( "19.bin", 0x02000, 0x2000, CRC(668aea14) SHA1(62eb0df48f2f0c5778bb230cc3bf0b8eb3b4e3f8) ) - ROM_LOAD( "18.bin", 0x04000, 0x2000, CRC(c62a19c1) SHA1(9ce0e29630d3c8cba4db4cff333b250481348968) ) + ROM_LOAD( "20.bin", 0x00000, 0x2000, CRC(fdd9e38b) SHA1(3766835d9e9fc7e5dd99521e7303562029b78a65) ) /* bg2 */ + ROM_LOAD( "19.bin", 0x02000, 0x2000, CRC(668aea14) SHA1(62eb0df48f2f0c5778bb230cc3bf0b8eb3b4e3f8) ) + ROM_LOAD( "18.bin", 0x04000, 0x2000, CRC(c62a19c1) SHA1(9ce0e29630d3c8cba4db4cff333b250481348968) ) ROM_REGION( 0x06000, "gfx4", 0 ) // twice the size of other sets, but 2nd half is just blank - ROM_LOAD( "sw5.bin", 0x00000, 0x2000, CRC(ce6bbc11) SHA1(c8f4b22f5ac1c95fff7758c67bf8c39452f5945b) ) /* bg3 */ - ROM_LOAD( "sw4.bin", 0x02000, 0x2000, CRC(f5b4b629) SHA1(d777a144e6dea63f2c3dcd25e32525aa185367ee) ) - ROM_LOAD( "sw3.bin", 0x04000, 0x2000, CRC(0965346d) SHA1(20b223a6aef8dc9c37ab45c575864bce1e9e50db) ) + ROM_LOAD( "sw5.bin", 0x00000, 0x2000, CRC(ce6bbc11) SHA1(c8f4b22f5ac1c95fff7758c67bf8c39452f5945b) ) /* bg3 */ + ROM_LOAD( "sw4.bin", 0x02000, 0x2000, CRC(f5b4b629) SHA1(d777a144e6dea63f2c3dcd25e32525aa185367ee) ) + ROM_LOAD( "sw3.bin", 0x04000, 0x2000, CRC(0965346d) SHA1(20b223a6aef8dc9c37ab45c575864bce1e9e50db) ) ROM_REGION( 0x0c000, "gfx5", 0 ) - ROM_LOAD( "13.bin", 0x00000, 0x2000, CRC(1cfc88a8) SHA1(2948864ed88ba3b1d500047e2ef594b67274710c) ) /* sprites */ - ROM_LOAD( "14.bin", 0x02000, 0x2000, CRC(902060b4) SHA1(f371aa12ba3f554918e8a482114df166cd007b0e) ) /* sprites */ - ROM_LOAD( "11.bin", 0x04000, 0x2000, CRC(7676b970) SHA1(f5fcee4ca555e7c880c6bf5d5ea01ff8d619a837) ) - ROM_LOAD( "12.bin", 0x06000, 0x2000, CRC(6f4a5d67) SHA1(182be475dfee4d272f57c030e3acd4e8cfa4fc53) ) - ROM_LOAD( "9.bin", 0x08000, 0x2000, CRC(e7d51959) SHA1(34d9afb0f31dc1d02e7b85aa69345fc66cf0f554) ) - ROM_LOAD( "10.bin", 0x0a000, 0x2000, CRC(6ea27bec) SHA1(30da81a99d5920107751afda359576e426c497c4) ) + ROM_LOAD( "13.bin", 0x00000, 0x2000, CRC(1cfc88a8) SHA1(2948864ed88ba3b1d500047e2ef594b67274710c) ) /* sprites */ + ROM_LOAD( "14.bin", 0x02000, 0x2000, CRC(902060b4) SHA1(f371aa12ba3f554918e8a482114df166cd007b0e) ) /* sprites */ + ROM_LOAD( "11.bin", 0x04000, 0x2000, CRC(7676b970) SHA1(f5fcee4ca555e7c880c6bf5d5ea01ff8d619a837) ) + ROM_LOAD( "12.bin", 0x06000, 0x2000, CRC(6f4a5d67) SHA1(182be475dfee4d272f57c030e3acd4e8cfa4fc53) ) + ROM_LOAD( "9.bin", 0x08000, 0x2000, CRC(e7d51959) SHA1(34d9afb0f31dc1d02e7b85aa69345fc66cf0f554) ) + ROM_LOAD( "10.bin", 0x0a000, 0x2000, CRC(6ea27bec) SHA1(30da81a99d5920107751afda359576e426c497c4) ) ROM_REGION( 0x0020, "proms", 0 ) /* PROMs */ - ROM_LOAD( "prom.bin", 0x0000, 0x0020, CRC(68db8300) SHA1(33cd6b5ed92d7b73a708f2e4b12b6e7f6496d0c6) ) /* unknown - timing? */ + ROM_LOAD( "prom.bin", 0x0000, 0x0020, CRC(68db8300) SHA1(33cd6b5ed92d7b73a708f2e4b12b6e7f6496d0c6) ) /* unknown - timing? */ ROM_END ROM_START( starforce ) @@ -810,7 +810,7 @@ ROM_START( starforce ) ROM_LOAD( "starfore.002", 0x6000, 0x2000, CRC(f8111eba) SHA1(cf3295ffae4e36e87aea4332613f2cafb51522ce) ) ROM_REGION( 0x2000, "sub", 0 ) - ROM_LOAD( "starfore.000", 0x0000, 0x2000, CRC(a277c268) SHA1(99ed8439119fa4b850ad8aadb7ff3e54d4cd40be) ) + ROM_LOAD( "1.3hj", 0x0000, 0x2000, CRC(2735bb22) SHA1(1bd0558e05b41aebab3911991969512df904fea5) ) ROM_REGION( 0x03000, "gfx1", 0 ) ROM_LOAD( "7.2fh", 0x00000, 0x1000, CRC(f4803339) SHA1(a119d68c2dd1c0e191231ce77353b31f30f7aa76) ) /* fg */ @@ -843,36 +843,73 @@ ROM_END ROM_START( megaforc ) ROM_REGION( 0x8000, "maincpu", 0 ) - ROM_LOAD( "mf3.bin", 0x0000, 0x4000, CRC(d3ea82ec) SHA1(e15fda65ba24517cc04abc55b5d079a33327553c) ) - ROM_LOAD( "mf2.bin", 0x4000, 0x4000, CRC(aa320718) SHA1(cbbf8e4d06a1ecf77d776058d965afdaa7f5b47f) ) + ROM_LOAD( "3.3p", 0x0000, 0x4000, CRC(8ba27691) SHA1(2b8b1e634ef5bed5c61a078e64a6dda77f84cdf5) ) + ROM_LOAD( "2.3mn", 0x4000, 0x4000, CRC(0fc4d2d6) SHA1(0743e3928d5cc0e3f1bcdaf4b0cc83aeb7a2f7a8) ) + + ROM_REGION( 0x2000, "sub", 0 ) /* 64k for sound board */ + ROM_LOAD( "1.3hj", 0x0000, 0x2000, CRC(2735bb22) SHA1(1bd0558e05b41aebab3911991969512df904fea5) ) + + ROM_REGION( 0x03000, "gfx1", 0 ) + ROM_LOAD( "7.2f", 0x00000, 0x1000, CRC(43ef8d20) SHA1(07ebe3e10fa56b671788a122cdc02e661b624f40) ) /* fg */ + ROM_LOAD( "8.3f", 0x01000, 0x1000, CRC(c36fb746) SHA1(01960e068046bcc0e3e9370fdfe73f9fd64491ae) ) + ROM_LOAD( "9.4f", 0x02000, 0x1000, CRC(62e7c9ec) SHA1(24dd1de3e268865c36c732714dc257c58cb88d67) ) + + ROM_REGION( 0x06000, "gfx2", 0 ) + ROM_LOAD( "15.10jk", 0x00000, 0x2000, CRC(c3bda12f) SHA1(3748ea8e34222a31a365a02ec77430f268b0b397) ) /* bg1 */ + ROM_LOAD( "14.9jk", 0x02000, 0x2000, CRC(9e9384fe) SHA1(3aaa9cc64ef3775325f64733da4f6c328abf6514) ) + ROM_LOAD( "13.8jk", 0x04000, 0x2000, CRC(84603285) SHA1(f4d6dfa3968fbd8ebf1a6451d5ea1821d65d9b49) ) + + ROM_REGION( 0x06000, "gfx3", 0 ) + ROM_LOAD( "12.10de", 0x00000, 0x2000, CRC(fdd9e38b) SHA1(3766835d9e9fc7e5dd99521e7303562029b78a65) ) /* bg2 */ + ROM_LOAD( "11.9de", 0x02000, 0x2000, CRC(668aea14) SHA1(62eb0df48f2f0c5778bb230cc3bf0b8eb3b4e3f8) ) + ROM_LOAD( "10.8de", 0x04000, 0x2000, CRC(c62a19c1) SHA1(9ce0e29630d3c8cba4db4cff333b250481348968) ) + + ROM_REGION( 0x03000, "gfx4", 0 ) + ROM_LOAD( "18.10pq", 0x00000, 0x1000, CRC(6455c3ad) SHA1(b163ccd3dc26ccfa8be1d16d52e17bc660ff84e3) ) /* bg3 */ + ROM_LOAD( "17.9pq", 0x01000, 0x1000, CRC(68c60d0f) SHA1(1152ba0c274ecadb534133a860bbc8a93577dcf2) ) + ROM_LOAD( "16.8pq", 0x02000, 0x1000, CRC(ce20b469) SHA1(60177a669d9c8cbeedd03ca5e2edf3f589c1c815) ) + + ROM_REGION( 0x0c000, "gfx5", 0 ) + ROM_LOAD( "6.10lm", 0x00000, 0x4000, CRC(5468a21d) SHA1(4a1196d4cfb99616efdac9b3927609a85c6f1758) ) /* sprites */ + ROM_LOAD( "5.9lm", 0x04000, 0x4000, CRC(f71717f8) SHA1(bf673571f772d8e0eddae89c00f31390c49a25d2) ) + ROM_LOAD( "4.8lm", 0x08000, 0x4000, CRC(dd9d68a4) SHA1(34c60d2b34c7980bf65a5ebadb9c73f89128141f) ) + + ROM_REGION( 0x0020, "proms", 0 ) /* PROMs */ + ROM_LOAD( "07b.bin", 0x0000, 0x0020, CRC(68db8300) SHA1(33cd6b5ed92d7b73a708f2e4b12b6e7f6496d0c6) ) /* unknown - timing? */ +ROM_END + +ROM_START( megaforcu ) /* While no "For use in the United States" notice, it's licensed to a US company for distribution */ + ROM_REGION( 0x8000, "maincpu", 0 ) + ROM_LOAD( "mf3.3p", 0x0000, 0x4000, CRC(d3ea82ec) SHA1(e15fda65ba24517cc04abc55b5d079a33327553c) ) + ROM_LOAD( "mf2.3mn", 0x4000, 0x4000, CRC(aa320718) SHA1(cbbf8e4d06a1ecf77d776058d965afdaa7f5b47f) ) ROM_REGION( 0x2000, "sub", 0 ) ROM_LOAD( "1.3hj", 0x0000, 0x2000, CRC(2735bb22) SHA1(1bd0558e05b41aebab3911991969512df904fea5) ) ROM_REGION( 0x03000, "gfx1", 0 ) - ROM_LOAD( "mf7.bin", 0x00000, 0x1000, CRC(43ef8d20) SHA1(07ebe3e10fa56b671788a122cdc02e661b624f40) ) /* fg */ - ROM_LOAD( "mf8.bin", 0x01000, 0x1000, CRC(c36fb746) SHA1(01960e068046bcc0e3e9370fdfe73f9fd64491ae) ) - ROM_LOAD( "mf9.bin", 0x02000, 0x1000, CRC(62e7c9ec) SHA1(24dd1de3e268865c36c732714dc257c58cb88d67) ) + ROM_LOAD( "7.2f", 0x00000, 0x1000, CRC(43ef8d20) SHA1(07ebe3e10fa56b671788a122cdc02e661b624f40) ) /* fg */ + ROM_LOAD( "8.3f", 0x01000, 0x1000, CRC(c36fb746) SHA1(01960e068046bcc0e3e9370fdfe73f9fd64491ae) ) + ROM_LOAD( "9.4f", 0x02000, 0x1000, CRC(62e7c9ec) SHA1(24dd1de3e268865c36c732714dc257c58cb88d67) ) ROM_REGION( 0x06000, "gfx2", 0 ) - ROM_LOAD( "15.10jk", 0x00000, 0x2000, CRC(c3bda12f) SHA1(3748ea8e34222a31a365a02ec77430f268b0b397) ) /* bg1 */ - ROM_LOAD( "14.9jk", 0x02000, 0x2000, CRC(9e9384fe) SHA1(3aaa9cc64ef3775325f64733da4f6c328abf6514) ) - ROM_LOAD( "13.8jk", 0x04000, 0x2000, CRC(84603285) SHA1(f4d6dfa3968fbd8ebf1a6451d5ea1821d65d9b49) ) + ROM_LOAD( "15.10jk", 0x00000, 0x2000, CRC(c3bda12f) SHA1(3748ea8e34222a31a365a02ec77430f268b0b397) ) /* bg1 */ + ROM_LOAD( "14.9jk", 0x02000, 0x2000, CRC(9e9384fe) SHA1(3aaa9cc64ef3775325f64733da4f6c328abf6514) ) + ROM_LOAD( "13.8jk", 0x04000, 0x2000, CRC(84603285) SHA1(f4d6dfa3968fbd8ebf1a6451d5ea1821d65d9b49) ) ROM_REGION( 0x06000, "gfx3", 0 ) - ROM_LOAD( "12.10de", 0x00000, 0x2000, CRC(fdd9e38b) SHA1(3766835d9e9fc7e5dd99521e7303562029b78a65) ) /* bg2 */ - ROM_LOAD( "11.9de", 0x02000, 0x2000, CRC(668aea14) SHA1(62eb0df48f2f0c5778bb230cc3bf0b8eb3b4e3f8) ) - ROM_LOAD( "10.8de", 0x04000, 0x2000, CRC(c62a19c1) SHA1(9ce0e29630d3c8cba4db4cff333b250481348968) ) + ROM_LOAD( "12.10de", 0x00000, 0x2000, CRC(fdd9e38b) SHA1(3766835d9e9fc7e5dd99521e7303562029b78a65) ) /* bg2 */ + ROM_LOAD( "11.9de", 0x02000, 0x2000, CRC(668aea14) SHA1(62eb0df48f2f0c5778bb230cc3bf0b8eb3b4e3f8) ) + ROM_LOAD( "10.8de", 0x04000, 0x2000, CRC(c62a19c1) SHA1(9ce0e29630d3c8cba4db4cff333b250481348968) ) ROM_REGION( 0x03000, "gfx4", 0 ) - ROM_LOAD( "18.10pq", 0x00000, 0x1000, CRC(6455c3ad) SHA1(b163ccd3dc26ccfa8be1d16d52e17bc660ff84e3) ) /* bg3 */ - ROM_LOAD( "17.9pq", 0x01000, 0x1000, CRC(68c60d0f) SHA1(1152ba0c274ecadb534133a860bbc8a93577dcf2) ) - ROM_LOAD( "16.8pq", 0x02000, 0x1000, CRC(ce20b469) SHA1(60177a669d9c8cbeedd03ca5e2edf3f589c1c815) ) + ROM_LOAD( "18.10pq", 0x00000, 0x1000, CRC(6455c3ad) SHA1(b163ccd3dc26ccfa8be1d16d52e17bc660ff84e3) ) /* bg3 */ + ROM_LOAD( "17.9pq", 0x01000, 0x1000, CRC(68c60d0f) SHA1(1152ba0c274ecadb534133a860bbc8a93577dcf2) ) + ROM_LOAD( "16.8pq", 0x02000, 0x1000, CRC(ce20b469) SHA1(60177a669d9c8cbeedd03ca5e2edf3f589c1c815) ) ROM_REGION( 0x0c000, "gfx5", 0 ) - ROM_LOAD( "6.10lm", 0x00000, 0x4000, CRC(5468a21d) SHA1(4a1196d4cfb99616efdac9b3927609a85c6f1758) ) /* sprites */ - ROM_LOAD( "5.9lm", 0x04000, 0x4000, CRC(f71717f8) SHA1(bf673571f772d8e0eddae89c00f31390c49a25d2) ) - ROM_LOAD( "4.8lm", 0x08000, 0x4000, CRC(dd9d68a4) SHA1(34c60d2b34c7980bf65a5ebadb9c73f89128141f) ) + ROM_LOAD( "6.10lm", 0x00000, 0x4000, CRC(5468a21d) SHA1(4a1196d4cfb99616efdac9b3927609a85c6f1758) ) /* sprites */ + ROM_LOAD( "5.9lm", 0x04000, 0x4000, CRC(f71717f8) SHA1(bf673571f772d8e0eddae89c00f31390c49a25d2) ) + ROM_LOAD( "4.8lm", 0x08000, 0x4000, CRC(dd9d68a4) SHA1(34c60d2b34c7980bf65a5ebadb9c73f89128141f) ) ROM_REGION( 0x0020, "proms", 0 ) /* PROMs */ ROM_LOAD( "07b.bin", 0x0000, 0x0020, CRC(68db8300) SHA1(33cd6b5ed92d7b73a708f2e4b12b6e7f6496d0c6) ) /* unknown - timing? */ @@ -880,39 +917,39 @@ ROM_END ROM_START( baluba ) ROM_REGION( 0x8000, "maincpu", 0 ) - ROM_LOAD( "0", 0x0000, 0x4000, CRC(0e2ebe32) SHA1(d5cac260b19dc4e8d2064a7e3de5d52ab0eb95d0) ) - ROM_LOAD( "1", 0x4000, 0x4000, CRC(cde97076) SHA1(ef47851b2ed0d820e1564545795b707d00d5c6ce) ) + ROM_LOAD( "0", 0x0000, 0x4000, CRC(0e2ebe32) SHA1(d5cac260b19dc4e8d2064a7e3de5d52ab0eb95d0) ) + ROM_LOAD( "1", 0x4000, 0x4000, CRC(cde97076) SHA1(ef47851b2ed0d820e1564545795b707d00d5c6ce) ) ROM_REGION( 0x2000, "sub", 0 ) - ROM_LOAD( "2", 0x0000, 0x2000, CRC(441fbc64) SHA1(3853f80043e28e06a3ee399e3cd261b3ee94e0b9) ) + ROM_LOAD( "2", 0x0000, 0x2000, CRC(441fbc64) SHA1(3853f80043e28e06a3ee399e3cd261b3ee94e0b9) ) ROM_REGION( 0x03000, "gfx1", 0 ) - ROM_LOAD( "15", 0x00000, 0x1000, CRC(3dda0d84) SHA1(473c307c157bb229a31cd82ce4cdeca1ff604019) ) /* fg */ - ROM_LOAD( "16", 0x01000, 0x1000, CRC(3ebc79d8) SHA1(a29b4e314446821cd4a2b1a9d3ff16ee3b6a8f7a) ) - ROM_LOAD( "17", 0x02000, 0x1000, CRC(c4430deb) SHA1(e4c18ff2e2c82f3bce346267bc86d4160cb11995) ) + ROM_LOAD( "15", 0x00000, 0x1000, CRC(3dda0d84) SHA1(473c307c157bb229a31cd82ce4cdeca1ff604019) ) /* fg */ + ROM_LOAD( "16", 0x01000, 0x1000, CRC(3ebc79d8) SHA1(a29b4e314446821cd4a2b1a9d3ff16ee3b6a8f7a) ) + ROM_LOAD( "17", 0x02000, 0x1000, CRC(c4430deb) SHA1(e4c18ff2e2c82f3bce346267bc86d4160cb11995) ) ROM_REGION( 0x06000, "gfx2", 0 ) - ROM_LOAD( "9", 0x00000, 0x2000, CRC(90f88c43) SHA1(e4ea963d9c31e34f70aa2b710760e0a102567988) ) /* bg1 */ - ROM_LOAD( "10", 0x02000, 0x2000, CRC(ab117070) SHA1(d9a8580f3b0919208801b00501579cf81665fc36) ) - ROM_LOAD( "11", 0x04000, 0x2000, CRC(e13b44b0) SHA1(70f3d2465a7652405e23809c81d7ec6ec501835b) ) + ROM_LOAD( "9", 0x00000, 0x2000, CRC(90f88c43) SHA1(e4ea963d9c31e34f70aa2b710760e0a102567988) ) /* bg1 */ + ROM_LOAD( "10", 0x02000, 0x2000, CRC(ab117070) SHA1(d9a8580f3b0919208801b00501579cf81665fc36) ) + ROM_LOAD( "11", 0x04000, 0x2000, CRC(e13b44b0) SHA1(70f3d2465a7652405e23809c81d7ec6ec501835b) ) ROM_REGION( 0x06000, "gfx3", 0 ) - ROM_LOAD( "12", 0x00000, 0x2000, CRC(a6541c8d) SHA1(d7a211c58c2067f257f5a9e343ca4bf689edd514) ) /* bg2 */ - ROM_LOAD( "13", 0x02000, 0x2000, CRC(afccdd18) SHA1(d238b52a9bb2dfffaf82ca38bc81c0cbd256f79c) ) - ROM_LOAD( "14", 0x04000, 0x2000, CRC(69542e65) SHA1(4119a6f784ed57592d45d325123b261c8f118ca7) ) + ROM_LOAD( "12", 0x00000, 0x2000, CRC(a6541c8d) SHA1(d7a211c58c2067f257f5a9e343ca4bf689edd514) ) /* bg2 */ + ROM_LOAD( "13", 0x02000, 0x2000, CRC(afccdd18) SHA1(d238b52a9bb2dfffaf82ca38bc81c0cbd256f79c) ) + ROM_LOAD( "14", 0x04000, 0x2000, CRC(69542e65) SHA1(4119a6f784ed57592d45d325123b261c8f118ca7) ) ROM_REGION( 0x03000, "gfx4", 0 ) - ROM_LOAD( "8", 0x00000, 0x1000, CRC(31e97ef9) SHA1(ed25db4bdaf06f66cfb7179d80425dcb2cb41363) ) /* bg3 */ - ROM_LOAD( "7", 0x01000, 0x1000, CRC(5915c5e2) SHA1(58301087d91b34747d5cff3c0dca8e9b441ce62d) ) - ROM_LOAD( "6", 0x02000, 0x1000, CRC(ad6881da) SHA1(df629bd9192279b8ebd9d655a94949559e1f118d) ) + ROM_LOAD( "8", 0x00000, 0x1000, CRC(31e97ef9) SHA1(ed25db4bdaf06f66cfb7179d80425dcb2cb41363) ) /* bg3 */ + ROM_LOAD( "7", 0x01000, 0x1000, CRC(5915c5e2) SHA1(58301087d91b34747d5cff3c0dca8e9b441ce62d) ) + ROM_LOAD( "6", 0x02000, 0x1000, CRC(ad6881da) SHA1(df629bd9192279b8ebd9d655a94949559e1f118d) ) ROM_REGION( 0x0c000, "gfx5", 0 ) - ROM_LOAD( "5", 0x00000, 0x4000, CRC(3b6b6e96) SHA1(c55f4b6a5f7738a082c02d1adadd9e1d68a0d293) ) /* sprites */ - ROM_LOAD( "4", 0x04000, 0x4000, CRC(dd954124) SHA1(f37687197d1564331dc27dace23dec462d02202c) ) - ROM_LOAD( "3", 0x08000, 0x4000, CRC(7ac24983) SHA1(4ac32d95af3147af5b9b1af1f292bb629c5d4fb9) ) + ROM_LOAD( "5", 0x00000, 0x4000, CRC(3b6b6e96) SHA1(c55f4b6a5f7738a082c02d1adadd9e1d68a0d293) ) /* sprites */ + ROM_LOAD( "4", 0x04000, 0x4000, CRC(dd954124) SHA1(f37687197d1564331dc27dace23dec462d02202c) ) + ROM_LOAD( "3", 0x08000, 0x4000, CRC(7ac24983) SHA1(4ac32d95af3147af5b9b1af1f292bb629c5d4fb9) ) ROM_REGION( 0x0020, "proms", 0 ) /* PROMs */ - ROM_LOAD( "07b.bin", 0x0000, 0x0020, CRC(68db8300) SHA1(33cd6b5ed92d7b73a708f2e4b12b6e7f6496d0c6) ) /* unknown - timing? */ + ROM_LOAD( "07b.bin", 0x0000, 0x0020, CRC(68db8300) SHA1(33cd6b5ed92d7b73a708f2e4b12b6e7f6496d0c6) ) /* unknown - timing? */ ROM_END @@ -940,10 +977,11 @@ DRIVER_INIT_MEMBER(senjyo_state,senjyo) } -GAME( 1983, senjyo, 0, senjyo, senjyo, senjyo_state, senjyo, ROT90, "Tehkan", "Senjyo", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, starforc, 0, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan", "Star Force", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, starforce,starforc, senjyox_e, starforc, senjyo_state, starfore, ROT90, "Tehkan", "Star Force (encrypted, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, starforcb,starforc, starforb, starforc, senjyo_state, starfore, ROT90, "bootleg", "Star Force (encrypted, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, starforca,starforc, senjyox_a, starforc, senjyo_state, starfora, ROT90, "Tehkan", "Star Force (encrypted, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, megaforc, starforc, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan (Video Ware license)", "Mega Force", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, baluba, 0, senjyo, baluba, senjyo_state, starforc, ROT90, "Able Corp, Ltd.", "Baluba-louk no Densetsu (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, senjyo, 0, senjyo, senjyo, senjyo_state, senjyo, ROT90, "Tehkan", "Senjyo", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, starforc, 0, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan", "Star Force", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, starforce, starforc, senjyox_e, starforc, senjyo_state, starfore, ROT90, "Tehkan", "Star Force (encrypted, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, starforcb, starforc, starforb, starforc, senjyo_state, starfore, ROT90, "bootleg", "Star Force (encrypted, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, starforca, starforc, senjyox_a, starforc, senjyo_state, starfora, ROT90, "Tehkan", "Star Force (encrypted, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, megaforc, starforc, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan", "Mega Force (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, megaforcu, starforc, senjyo, starforc, senjyo_state, starforc, ROT90, "Tehkan (Video Ware license)", "Mega Force (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, baluba, 0, senjyo, baluba, senjyo_state, starforc, ROT90, "Able Corp, Ltd.", "Baluba-louk no Densetsu (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp index 22ef3e0da83..dff9c7777b7 100644 --- a/src/mame/drivers/seta.cpp +++ b/src/mame/drivers/seta.cpp @@ -1601,7 +1601,7 @@ READ8_MEMBER(seta_state::dsw2_r) Sprites Buffering */ -void seta_state::screen_eof_seta_buffer_sprites(screen_device &screen, bool state) +WRITE_LINE_MEMBER(seta_state::screen_vblank_seta_buffer_sprites) { // rising edge if (state) @@ -7706,7 +7706,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(seta_state::tndrcade_sub_interrupt) m_subcpu->set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( tndrcade, seta_state ) +static MACHINE_CONFIG_START( tndrcade ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -7760,7 +7760,7 @@ MACHINE_CONFIG_END /* twineagl lev 3 = lev 2 + lev 1 ! */ -static MACHINE_CONFIG_START( twineagl, seta_state ) +static MACHINE_CONFIG_START( twineagl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -7806,7 +7806,7 @@ MACHINE_CONFIG_END /* downtown lev 3 = lev 2 + lev 1 ! */ -static MACHINE_CONFIG_START( downtown, seta_state ) +static MACHINE_CONFIG_START( downtown ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ @@ -7868,7 +7868,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(seta_state::calibr50_interrupt) } -static MACHINE_CONFIG_START( usclssic, seta_state ) +static MACHINE_CONFIG_START( usclssic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -7923,7 +7923,7 @@ MACHINE_CONFIG_END Test mode shows a 16ms and 4ms counters. I wonder if every game has 5 ints per frame */ -static MACHINE_CONFIG_START( calibr50, seta_state ) +static MACHINE_CONFIG_START( calibr50 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ @@ -7974,7 +7974,7 @@ MACHINE_CONFIG_END /* metafox lev 3 = lev 2 + lev 1 ! */ -static MACHINE_CONFIG_START( metafox, seta_state ) +static MACHINE_CONFIG_START( metafox ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -8018,7 +8018,7 @@ MACHINE_CONFIG_END Athena no Hatena? ***************************************************************************/ -static MACHINE_CONFIG_START( atehate, seta_state ) +static MACHINE_CONFIG_START( atehate ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8061,7 +8061,7 @@ MACHINE_CONFIG_END samples are bankswitched */ -static MACHINE_CONFIG_START( blandia, seta_state ) +static MACHINE_CONFIG_START( blandia ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8080,7 +8080,7 @@ static MACHINE_CONFIG_START( blandia, seta_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta) - MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(seta_state, screen_vblank_seta_buffer_sprites)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", blandia) @@ -8098,7 +8098,7 @@ static MACHINE_CONFIG_START( blandia, seta_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( blandiap, seta_state ) +static MACHINE_CONFIG_START( blandiap ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8117,7 +8117,7 @@ static MACHINE_CONFIG_START( blandiap, seta_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta) - MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(seta_state, screen_vblank_seta_buffer_sprites)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", blandia) @@ -8140,7 +8140,7 @@ MACHINE_CONFIG_END Block Carnival ***************************************************************************/ -static MACHINE_CONFIG_START( blockcar, seta_state ) +static MACHINE_CONFIG_START( blockcar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -8201,7 +8201,7 @@ static MACHINE_CONFIG_DERIVED( blockcarb, blockcar ) /* the sound hardware / program is ripped from Tetris (S16B) */ MCFG_DEVICE_REMOVE("x1snd") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -8211,7 +8211,7 @@ MACHINE_CONFIG_END Daioh ***************************************************************************/ -static MACHINE_CONFIG_START( daioh, seta_state ) +static MACHINE_CONFIG_START( daioh ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* 16 MHz, MC68000-16, Verified from PCB */ @@ -8248,7 +8248,7 @@ MACHINE_CONFIG_END Daioh (prototype) ***************************************************************************/ -static MACHINE_CONFIG_START( daiohp, seta_state ) +static MACHINE_CONFIG_START( daiohp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* 16 MHz, MC68000-16, Verified from PCB */ @@ -8290,7 +8290,7 @@ MACHINE_CONFIG_END lev 2 drives the game */ -static MACHINE_CONFIG_START( drgnunit, seta_state ) +static MACHINE_CONFIG_START( drgnunit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -8308,7 +8308,7 @@ static MACHINE_CONFIG_START( drgnunit, seta_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta) - MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(seta_state, screen_vblank_seta_buffer_sprites)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", downtown) @@ -8326,7 +8326,7 @@ MACHINE_CONFIG_END /* Same as qzkklogy, but with a 16MHz CPU and different layout for the layer's tiles */ -static MACHINE_CONFIG_START( qzkklgy2, seta_state ) +static MACHINE_CONFIG_START( qzkklgy2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8344,7 +8344,7 @@ static MACHINE_CONFIG_START( qzkklgy2, seta_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta) - MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(seta_state, screen_vblank_seta_buffer_sprites)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", qzkklgy2) @@ -8376,7 +8376,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(seta_state::setaroul_interrupt) } -static MACHINE_CONFIG_START( setaroul, seta_state ) +static MACHINE_CONFIG_START( setaroul ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -8396,7 +8396,7 @@ static MACHINE_CONFIG_START( setaroul, seta_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_setaroul) - MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_setaroul) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(seta_state, screen_vblank_setaroul)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", setaroul) @@ -8419,7 +8419,7 @@ MACHINE_CONFIG_END Eight Force ***************************************************************************/ -static MACHINE_CONFIG_START( eightfrc, seta_state ) +static MACHINE_CONFIG_START( eightfrc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8462,7 +8462,7 @@ MACHINE_CONFIG_END lev 1 == lev 3 (writes to $500000, bit 4 -> 1 then 0) lev 2 drives the game */ -static MACHINE_CONFIG_START( extdwnhl, seta_state ) +static MACHINE_CONFIG_START( extdwnhl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8520,7 +8520,7 @@ MACHINE_START_MEMBER(seta_state,wrofaero){ uPD71054_timer_init(); } lev 2: VBlank lev 4: Sound (generated by a timer mapped at $d00000-6 ?) */ -static MACHINE_CONFIG_START( gundhara, seta_state ) +static MACHINE_CONFIG_START( gundhara ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8586,7 +8586,7 @@ MACHINE_CONFIG_END lev 1 == lev 3 (writes to $500000, bit 4 -> 1 then 0) lev 2 drives the game */ -static MACHINE_CONFIG_START( jjsquawk, seta_state ) +static MACHINE_CONFIG_START( jjsquawk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8622,7 +8622,7 @@ static MACHINE_CONFIG_START( jjsquawk, seta_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jjsquawb, seta_state ) +static MACHINE_CONFIG_START( jjsquawb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8662,7 +8662,7 @@ MACHINE_CONFIG_END ***************************************************************************/ /* kamenrid: lev 2 by vblank, lev 4 by timer */ -static MACHINE_CONFIG_START( kamenrid, seta_state ) +static MACHINE_CONFIG_START( kamenrid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8705,7 +8705,7 @@ MACHINE_CONFIG_END /* The CPU clock has been verified/measured, PCB only has one OSC and it's 14.318180 MHz */ -static MACHINE_CONFIG_START( orbs, seta_state ) +static MACHINE_CONFIG_START( orbs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14318180/2) /* 7.143 MHz */ @@ -8745,7 +8745,7 @@ MACHINE_CONFIG_END Kero Kero Keroppi no Issyoni Asobou ***************************************************************************/ -static MACHINE_CONFIG_START( keroppij, seta_state ) +static MACHINE_CONFIG_START( keroppij ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14318180/2) /* 7.143 MHz */ @@ -8788,7 +8788,7 @@ MACHINE_CONFIG_END Krazy Bowl ***************************************************************************/ -static MACHINE_CONFIG_START( krzybowl, seta_state ) +static MACHINE_CONFIG_START( krzybowl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8826,7 +8826,7 @@ MACHINE_CONFIG_END ***************************************************************************/ /* madshark: lev 2 by vblank, lev 4 by timer */ -static MACHINE_CONFIG_START( madshark, seta_state ) +static MACHINE_CONFIG_START( madshark ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8872,7 +8872,7 @@ MACHINE_CONFIG_END ***************************************************************************/ /* magspeed: lev 2 by vblank, lev 4 by timer */ -static MACHINE_CONFIG_START( magspeed, seta_state ) +static MACHINE_CONFIG_START( magspeed ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8917,7 +8917,7 @@ MACHINE_CONFIG_END /* msgundam lev 2 == lev 6 ! */ -static MACHINE_CONFIG_START( msgundam, seta_state ) +static MACHINE_CONFIG_START( msgundam ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -8943,7 +8943,7 @@ static MACHINE_CONFIG_START( msgundam, seta_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(seta_state, screen_update_seta) - MCFG_SCREEN_VBLANK_DRIVER(seta_state, screen_eof_seta_buffer_sprites) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(seta_state, screen_vblank_seta_buffer_sprites)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", msgundam) @@ -8964,7 +8964,7 @@ MACHINE_CONFIG_END Oishii Puzzle ***************************************************************************/ -static MACHINE_CONFIG_START( oisipuzl, seta_state ) +static MACHINE_CONFIG_START( oisipuzl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -9003,7 +9003,7 @@ MACHINE_CONFIG_END /* same as oisipuzl but with different interrupts and sound */ -static MACHINE_CONFIG_START( triplfun, seta_state ) +static MACHINE_CONFIG_START( triplfun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -9031,7 +9031,7 @@ static MACHINE_CONFIG_START( triplfun, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 792000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 792000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -9040,7 +9040,7 @@ MACHINE_CONFIG_END Pro Mahjong Kiwame ***************************************************************************/ -static MACHINE_CONFIG_START( kiwame, seta_state ) +static MACHINE_CONFIG_START( kiwame ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -9084,7 +9084,7 @@ MACHINE_CONFIG_END /* pretty much like wrofaero, but ints are 1&2, not 2&4 */ -static MACHINE_CONFIG_START( rezon, seta_state ) +static MACHINE_CONFIG_START( rezon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -9125,7 +9125,7 @@ MACHINE_CONFIG_END /* thunderl lev 2 = lev 3 - other levels lead to an error */ -static MACHINE_CONFIG_START( thunderl, seta_state ) +static MACHINE_CONFIG_START( thunderl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -9193,7 +9193,7 @@ static MACHINE_CONFIG_DERIVED( thunderlbl, thunderl ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wiggie, seta_state ) +static MACHINE_CONFIG_START( wiggie ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -9224,7 +9224,7 @@ static MACHINE_CONFIG_START( wiggie, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -9233,7 +9233,7 @@ static MACHINE_CONFIG_DERIVED( superbar, wiggie ) MCFG_GFXDECODE_MODIFY("gfxdecode", superbar) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wits, seta_state ) +static MACHINE_CONFIG_START( wits ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -9270,7 +9270,7 @@ MACHINE_CONFIG_END Ultraman Club / SD Gundam Neo Battling ***************************************************************************/ -static MACHINE_CONFIG_START( umanclub, seta_state ) +static MACHINE_CONFIG_START( umanclub ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -9307,7 +9307,7 @@ MACHINE_CONFIG_END Ultra Toukond Densetsu ***************************************************************************/ -static MACHINE_CONFIG_START( utoukond, seta_state ) +static MACHINE_CONFIG_START( utoukond ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -9356,7 +9356,7 @@ MACHINE_CONFIG_END War of Aero ***************************************************************************/ -static MACHINE_CONFIG_START( wrofaero, seta_state ) +static MACHINE_CONFIG_START( wrofaero ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -9410,7 +9410,7 @@ MACHINE_CONFIG_END at int 1 is necessary: it plays the background music. */ -static MACHINE_CONFIG_START( zingzip, seta_state ) +static MACHINE_CONFIG_START( zingzip ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -9459,7 +9459,7 @@ static MACHINE_CONFIG_DERIVED( zingzipbl, zingzip ) MCFG_DEVICE_REMOVE("x1snd") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -9467,7 +9467,7 @@ MACHINE_CONFIG_END Pairs Love ***************************************************************************/ -static MACHINE_CONFIG_START( pairlove, seta_state ) +static MACHINE_CONFIG_START( pairlove ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000/2) /* 8 MHz */ @@ -9515,7 +9515,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(seta_state::crazyfgt_interrupt) m_maincpu->set_input_line(1, HOLD_LINE); } -static MACHINE_CONFIG_START( crazyfgt, seta_state ) +static MACHINE_CONFIG_START( crazyfgt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -9549,7 +9549,7 @@ static MACHINE_CONFIG_START( crazyfgt, seta_state ) MCFG_SOUND_ADD("ymsnd", YM3812, 16000000/4) /* 4 MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // clock? + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // clock? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -9577,7 +9577,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(seta_state::inttoote_interrupt) } -static MACHINE_CONFIG_START( inttoote, seta_state ) +static MACHINE_CONFIG_START( inttoote ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) @@ -11675,8 +11675,8 @@ DRIVER_INIT_MEMBER(seta_state,inttootea) ***************************************************************************/ /* 68000 + 65C02 */ -GAME( 1987, tndrcade, 0, tndrcade, tndrcade, driver_device, 0, ROT270, "Seta (Taito license)", "Thundercade / Twin Formation" , 0) // Title/License: DSW -GAME( 1987, tndrcadej,tndrcade, tndrcade, tndrcadj, driver_device, 0, ROT270, "Seta (Taito license)", "Tokusyu Butai U.A.G. (Japan)" , 0) // License: DSW +GAME( 1987, tndrcade, 0, tndrcade, tndrcade, seta_state, 0, ROT270, "Seta (Taito license)", "Thundercade / Twin Formation" , 0) // Title/License: DSW +GAME( 1987, tndrcadej,tndrcade, tndrcade, tndrcadj, seta_state, 0, ROT270, "Seta (Taito license)", "Tokusyu Butai U.A.G. (Japan)" , 0) // License: DSW GAME( 1988, twineagl, 0, twineagl, twineagl, seta_state, twineagl, ROT270, "Seta (Taito license)", "Twin Eagle - Revenge Joe's Brother" , 0) // Country/License: DSW @@ -11685,102 +11685,102 @@ GAME( 1989, downtown2,downtown, downtown, downtown, seta_state, downtown, ROT270 GAME( 1989, downtownj,downtown, downtown, downtown, seta_state, downtown, ROT270, "Seta", "DownTown / Mokugeki (joystick hack)" , 0) // Country/License: DSW GAME( 1989, downtownp,downtown, downtown, downtown, seta_state, downtown, ROT270, "Seta", "DownTown / Mokugeki (prototype)" , 0) // Country/License: DSW -GAME( 1989, usclssic, 0, usclssic, usclssic, driver_device, 0, ROT270, "Seta", "U.S. Classic" , 0) // Country/License: DSW +GAME( 1989, usclssic, 0, usclssic, usclssic, seta_state, 0, ROT270, "Seta", "U.S. Classic" , 0) // Country/License: DSW -GAME( 1989, calibr50, 0, calibr50, calibr50, driver_device, 0, ROT270, "Athena / Seta", "Caliber 50" , 0) // Country/License: DSW +GAME( 1989, calibr50, 0, calibr50, calibr50, seta_state, 0, ROT270, "Athena / Seta", "Caliber 50" , 0) // Country/License: DSW GAME( 1989, arbalest, 0, metafox, arbalest, seta_state, arbalest, ROT270, "Seta", "Arbalester" , 0) // Country/License: DSW -GAME( 1989, metafox, 0, metafox, metafox, seta_state, metafox, ROT270, "Seta", "Meta Fox" , 0) // Country/License: DSW +GAME( 1989, metafox, 0, metafox, metafox, seta_state, metafox, ROT270, "Seta", "Meta Fox" , 0) // Country/License: DSW /* 68000 */ -GAME( 198?, setaroul, 0, setaroul, setaroul, driver_device, 0, ROT270, "Visco", "Visco Roulette", MACHINE_NOT_WORKING ) // I can't see a title in the GFX roms. Press F2 twice to boot.. +GAME( 198?, setaroul, 0, setaroul, setaroul, seta_state, 0, ROT270, "Visco", "Visco Roulette", MACHINE_NOT_WORKING ) // I can't see a title in the GFX roms. Press F2 twice to boot.. -GAME( 1989, drgnunit, 0, drgnunit, drgnunit, driver_device, 0, ROT0, "Seta", "Dragon Unit / Castle of Dragon", 0 ) +GAME( 1989, drgnunit, 0, drgnunit, drgnunit, seta_state, 0, ROT0, "Seta", "Dragon Unit / Castle of Dragon", 0 ) -GAME( 1989, wits, 0, wits, wits, driver_device, 0, ROT0, "Athena (Visco license)", "Wit's (Japan)" , 0) // Country/License: DSW +GAME( 1989, wits, 0, wits, wits, seta_state, 0, ROT0, "Athena (Visco license)", "Wit's (Japan)" , 0) // Country/License: DSW -GAME( 1990, thunderl, 0, thunderl, thunderl, driver_device,0, ROT270, "Seta", "Thunder & Lightning" , 0) // Country/License: DSW -GAME( 1990, thunderlbl,thunderl,thunderlbl,thunderlbl,driver_device,0, ROT90, "bootleg", "Thunder & Lightning (bootleg with Tetris sound)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL ) // Country/License: DSW +GAME( 1990, thunderl, 0, thunderl, thunderl, seta_state,0, ROT270, "Seta", "Thunder & Lightning" , 0) // Country/License: DSW +GAME( 1990, thunderlbl,thunderl,thunderlbl,thunderlbl,seta_state,0, ROT90, "bootleg", "Thunder & Lightning (bootleg with Tetris sound)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL ) // Country/License: DSW -GAME( 1994, wiggie, 0, wiggie, thunderl, seta_state, wiggie, ROT270, "Promat", "Wiggie Waggie", MACHINE_IMPERFECT_GRAPHICS ) // hack of Thunder & Lightning -GAME( 1994, superbar, wiggie, superbar, thunderl, seta_state, wiggie, ROT270, "Promat", "Super Bar", MACHINE_IMPERFECT_GRAPHICS ) // hack of Thunder & Lightning +GAME( 1994, wiggie, 0, wiggie, thunderl, seta_state, wiggie, ROT270, "Promat", "Wiggie Waggie", MACHINE_IMPERFECT_GRAPHICS ) // hack of Thunder & Lightning +GAME( 1994, superbar, wiggie, superbar, thunderl, seta_state, wiggie, ROT270, "Promat", "Super Bar", MACHINE_IMPERFECT_GRAPHICS ) // hack of Thunder & Lightning -GAME( 1990, jockeyc, 0, jockeyc, jockeyc, driver_device, 0, ROT0, "Seta (Visco license)", "Jockey Club", 0 ) -GAME( 1998, inttoote, jockeyc, inttoote, inttoote, seta_state, inttoote, ROT0, "Coinmaster", "International Toote (Germany)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1993, inttootea,jockeyc, inttoote, inttoote, seta_state, inttootea,ROT0, "Coinmaster", "International Toote II (World?)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1990, jockeyc, 0, jockeyc, jockeyc, seta_state, 0, ROT0, "Seta (Visco license)", "Jockey Club", 0 ) +GAME( 1998, inttoote, jockeyc, inttoote, inttoote, seta_state, inttoote, ROT0, "Coinmaster", "International Toote (Germany)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1993, inttootea,jockeyc, inttoote, inttoote, seta_state, inttootea,ROT0, "Coinmaster", "International Toote II (World?)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1991, rezon, 0, rezon, rezon, seta_state, rezon, ROT0, "Allumer", "Rezon", 0 ) -GAME( 1992, rezont, rezon, rezon, rezont, seta_state, rezon, ROT0, "Allumer (Taito license)","Rezon (Taito)", 0 ) +GAME( 1991, rezon, 0, rezon, rezon, seta_state, rezon, ROT0, "Allumer", "Rezon", 0 ) +GAME( 1992, rezont, rezon, rezon, rezont, seta_state, rezon, ROT0, "Allumer (Taito license)","Rezon (Taito)", 0 ) -GAME( 1991, stg, 0, drgnunit, stg, driver_device, 0, ROT270, "Athena / Tecmo", "Strike Gunner S.T.G", 0 ) +GAME( 1991, stg, 0, drgnunit, stg, seta_state, 0, ROT270, "Athena / Tecmo", "Strike Gunner S.T.G", 0 ) -GAME( 1991, pairlove, 0, pairlove, pairlove, driver_device, 0, ROT270, "Athena", "Pairs Love", 0 ) +GAME( 1991, pairlove, 0, pairlove, pairlove, seta_state, 0, ROT270, "Athena", "Pairs Love", 0 ) -GAME( 1992, blandia, 0, blandia, blandia, seta_state, blandia, ROT0, "Allumer", "Blandia", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, blandiap, blandia, blandiap, blandia, driver_device, 0, ROT0, "Allumer", "Blandia (prototype)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, blandia, 0, blandia, blandia, seta_state, blandia, ROT0, "Allumer", "Blandia", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1992, blandiap, blandia, blandiap, blandia, seta_state, 0, ROT0, "Allumer", "Blandia (prototype)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1992, blockcar, 0, blockcar, blockcar, driver_device, 0, ROT90, "Visco", "Block Carnival / Thunder & Lightning 2" , 0) // Title: DSW -GAME( 1992, blockcarb,blockcar, blockcarb,blockcar, driver_device, 0, ROT90, "bootleg", "Block Carnival / Thunder & Lightning 2 (bootleg)", MACHINE_IMPERFECT_SOUND) +GAME( 1992, blockcar, 0, blockcar, blockcar, seta_state, 0, ROT90, "Visco", "Block Carnival / Thunder & Lightning 2" , 0) // Title: DSW +GAME( 1992, blockcarb,blockcar, blockcarb,blockcar, seta_state, 0, ROT90, "bootleg", "Block Carnival / Thunder & Lightning 2 (bootleg)", MACHINE_IMPERFECT_SOUND) -GAME( 1992, qzkklogy, 0, drgnunit, qzkklogy, driver_device, 0, ROT0, "Tecmo", "Quiz Kokology", 0 ) +GAME( 1992, qzkklogy, 0, drgnunit, qzkklogy, seta_state, 0, ROT0, "Tecmo", "Quiz Kokology", 0 ) -GAME( 1992, neobattl, 0, umanclub, neobattl, driver_device, 0, ROT270, "Banpresto / Sotsu Agency. Sunrise", "SD Gundam Neo Battling (Japan)", 0 ) +GAME( 1992, neobattl, 0, umanclub, neobattl, seta_state, 0, ROT270, "Banpresto / Sotsu Agency. Sunrise", "SD Gundam Neo Battling (Japan)", 0 ) -GAME( 1992, umanclub, 0, umanclub, umanclub, driver_device, 0, ROT0, "Banpresto / Tsuburaya Productions", "Ultraman Club - Tatakae! Ultraman Kyoudai!!", 0 ) +GAME( 1992, umanclub, 0, umanclub, umanclub, seta_state, 0, ROT0, "Banpresto / Tsuburaya Productions", "Ultraman Club - Tatakae! Ultraman Kyoudai!!", 0 ) -GAME( 1992, zingzip, 0, zingzip, zingzip, driver_device, 0, ROT270, "Allumer / Tecmo", "Zing Zing Zip", 0 ) -GAME( 1992, zingzipbl,zingzip, zingzipbl,zingzip, driver_device, 0, ROT270, "bootleg", "Zing Zing Zip (bootleg)", MACHINE_NOT_WORKING ) +GAME( 1992, zingzip, 0, zingzip, zingzip, seta_state, 0, ROT270, "Allumer / Tecmo", "Zing Zing Zip", 0 ) +GAME( 1992, zingzipbl,zingzip, zingzipbl,zingzip, seta_state, 0, ROT270, "bootleg", "Zing Zing Zip (bootleg)", MACHINE_NOT_WORKING ) -GAME( 1993, atehate, 0, atehate, atehate, driver_device, 0, ROT0, "Athena", "Athena no Hatena ?", 0 ) +GAME( 1993, atehate, 0, atehate, atehate, seta_state, 0, ROT0, "Athena", "Athena no Hatena ?", 0 ) -GAME( 1993, daioh, 0, daioh, daioh, driver_device, 0, ROT270, "Athena", "Daioh", 0 ) -GAME( 1993, daioha, daioh, daioh, daioh, driver_device, 0, ROT270, "Athena", "Daioh (earlier)", 0 ) -GAME( 1993, daiohp, daioh, daiohp, daiohp, driver_device, 0, ROT270, "Athena", "Daioh (prototype)", 0 ) -GAME( 1993, daiohc, daioh, wrofaero, daioh, driver_device, 0, ROT270, "Athena", "Daioh (93111A PCB conversion)", 0 ) +GAME( 1993, daioh, 0, daioh, daioh, seta_state, 0, ROT270, "Athena", "Daioh", 0 ) +GAME( 1993, daioha, daioh, daioh, daioh, seta_state, 0, ROT270, "Athena", "Daioh (earlier)", 0 ) +GAME( 1993, daiohp, daioh, daiohp, daiohp, seta_state, 0, ROT270, "Athena", "Daioh (prototype)", 0 ) +GAME( 1993, daiohc, daioh, wrofaero, daioh, seta_state, 0, ROT270, "Athena", "Daioh (93111A PCB conversion)", 0 ) -GAME( 1993, jjsquawk, 0, jjsquawk, jjsquawk, driver_device, 0, ROT0, "Athena / Able", "J. J. Squawkers", MACHINE_IMPERFECT_SOUND ) -GAME( 1993, jjsquawko,jjsquawk, jjsquawk, jjsquawk, driver_device, 0, ROT0, "Athena / Able", "J. J. Squawkers (older)", MACHINE_IMPERFECT_SOUND ) -GAME( 1993, jjsquawkb,jjsquawk, jjsquawb, jjsquawk, driver_device, 0, ROT0, "bootleg", "J. J. Squawkers (bootleg)", MACHINE_IMPERFECT_SOUND ) -GAME( 1993, jjsquawkb2,jjsquawk,jjsquawk, jjsquawk, driver_device, 0, ROT0, "bootleg", "J. J. Squawkers (bootleg, Blandia Conversion)", MACHINE_IMPERFECT_SOUND ) -GAME( 2003, simpsonjr, jjsquawk,jjsquawb, jjsquawk, driver_device, 0, ROT0, "bootleg", "Simpson Junior (bootleg of J. J. Squawkers)", MACHINE_IMPERFECT_SOUND ) +GAME( 1993, jjsquawk, 0, jjsquawk, jjsquawk, seta_state, 0, ROT0, "Athena / Able", "J. J. Squawkers", MACHINE_IMPERFECT_SOUND ) +GAME( 1993, jjsquawko,jjsquawk, jjsquawk, jjsquawk, seta_state, 0, ROT0, "Athena / Able", "J. J. Squawkers (older)", MACHINE_IMPERFECT_SOUND ) +GAME( 1993, jjsquawkb,jjsquawk, jjsquawb, jjsquawk, seta_state, 0, ROT0, "bootleg", "J. J. Squawkers (bootleg)", MACHINE_IMPERFECT_SOUND ) +GAME( 1993, jjsquawkb2,jjsquawk,jjsquawk, jjsquawk, seta_state, 0, ROT0, "bootleg", "J. J. Squawkers (bootleg, Blandia Conversion)", MACHINE_IMPERFECT_SOUND ) +GAME( 2003, simpsonjr, jjsquawk,jjsquawb, jjsquawk, seta_state, 0, ROT0, "bootleg", "Simpson Junior (bootleg of J. J. Squawkers)", MACHINE_IMPERFECT_SOUND ) -GAME( 1993, kamenrid, 0, kamenrid, kamenrid, driver_device, 0, ROT0, "Banpresto / Toei", "Masked Riders Club Battle Race", 0 ) +GAME( 1993, kamenrid, 0, kamenrid, kamenrid, seta_state, 0, ROT0, "Banpresto / Toei", "Masked Riders Club Battle Race", 0 ) -GAME( 1993, madshark, 0, madshark, madshark, driver_device, 0, ROT270, "Allumer", "Mad Shark", 0 ) +GAME( 1993, madshark, 0, madshark, madshark, seta_state, 0, ROT270, "Allumer", "Mad Shark", 0 ) -GAME( 1993, msgundam, 0, msgundam, msgundam, driver_device, 0, ROT0, "Banpresto", "Mobile Suit Gundam", 0 ) -GAME( 1993, msgundam1,msgundam, msgundam, msgunda1, driver_device, 0, ROT0, "Banpresto", "Mobile Suit Gundam (Japan)", 0 ) +GAME( 1993, msgundam, 0, msgundam, msgundam, seta_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam", 0 ) +GAME( 1993, msgundam1,msgundam, msgundam, msgunda1, seta_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam (Japan)", 0 ) -GAME( 1993, oisipuzl, 0, oisipuzl, oisipuzl, driver_device, 0, ROT0, "Sunsoft / Atlus", "Oishii Puzzle Ha Irimasenka", 0 ) -GAME( 1993, triplfun, oisipuzl, triplfun, oisipuzl, driver_device, 0, ROT0, "bootleg", "Triple Fun", 0 ) +GAME( 1993, oisipuzl, 0, oisipuzl, oisipuzl, seta_state, 0, ROT0, "Sunsoft / Atlus", "Oishii Puzzle Ha Irimasenka", 0 ) +GAME( 1993, triplfun, oisipuzl, triplfun, oisipuzl, seta_state, 0, ROT0, "bootleg", "Triple Fun", 0 ) -GAME( 1993, qzkklgy2, 0, qzkklgy2, qzkklgy2, driver_device, 0, ROT0, "Tecmo", "Quiz Kokology 2", 0 ) +GAME( 1993, qzkklgy2, 0, qzkklgy2, qzkklgy2, seta_state, 0, ROT0, "Tecmo", "Quiz Kokology 2", 0 ) -GAME( 1993, utoukond, 0, utoukond, utoukond, driver_device, 0, ROT0, "Banpresto / Tsuburaya Productions", "Ultra Toukon Densetsu (Japan)", 0 ) +GAME( 1993, utoukond, 0, utoukond, utoukond, seta_state, 0, ROT0, "Banpresto / Tsuburaya Productions", "Ultra Toukon Densetsu (Japan)", 0 ) -GAME( 1993, wrofaero, 0, wrofaero, wrofaero, driver_device, 0, ROT270, "Yang Cheng", "War of Aero - Project MEIOU", 0 ) +GAME( 1993, wrofaero, 0, wrofaero, wrofaero, seta_state, 0, ROT270, "Yang Cheng", "War of Aero - Project MEIOU", 0 ) -GAME( 1994, eightfrc, 0, eightfrc, eightfrc, seta_state, eightfrc, ROT90, "Tecmo", "Eight Forces", 0 ) +GAME( 1994, eightfrc, 0, eightfrc, eightfrc, seta_state, eightfrc, ROT90, "Tecmo", "Eight Forces", 0 ) -GAME( 1994, kiwame, 0, kiwame, kiwame, seta_state, kiwame, ROT0, "Athena", "Pro Mahjong Kiwame", 0 ) +GAME( 1994, kiwame, 0, kiwame, kiwame, seta_state, kiwame, ROT0, "Athena", "Pro Mahjong Kiwame", 0 ) -GAME( 1994, krzybowl, 0, krzybowl, krzybowl, driver_device, 0, ROT270, "American Sammy", "Krazy Bowl", 0 ) +GAME( 1994, krzybowl, 0, krzybowl, krzybowl, seta_state, 0, ROT270, "American Sammy", "Krazy Bowl", 0 ) -GAME( 1994, magspeed, 0, magspeed, magspeed, driver_device, 0, ROT0, "Allumer", "Magical Speed", 0 ) +GAME( 1994, magspeed, 0, magspeed, magspeed, seta_state, 0, ROT0, "Allumer", "Magical Speed", 0 ) -GAME( 1994, orbs, 0, orbs, orbs, driver_device, 0, ROT0, "American Sammy", "Orbs (10/7/94 prototype?)", 0 ) +GAME( 1994, orbs, 0, orbs, orbs, seta_state, 0, ROT0, "American Sammy", "Orbs (10/7/94 prototype?)", 0 ) -GAME( 1995, keroppi, 0, keroppi, keroppi, driver_device, 0, ROT0, "American Sammy", "Kero Kero Keroppi's Let's Play Together (USA, Version 2.0)", 0 ) // ROM labels are all v1.0 tho. -GAME( 1993, keroppij, keroppi, keroppij, keroppij,driver_device, 0, ROT0, "Sammy Industries", "Kero Kero Keroppi no Issyoni Asobou (Japan)", 0 ) +GAME( 1995, keroppi, 0, keroppi, keroppi, seta_state, 0, ROT0, "American Sammy", "Kero Kero Keroppi's Let's Play Together (USA, Version 2.0)", 0 ) // ROM labels are all v1.0 tho. +GAME( 1993, keroppij, keroppi, keroppij, keroppij, seta_state, 0, ROT0, "Sammy Industries", "Kero Kero Keroppi no Issyoni Asobou (Japan)", 0 ) -GAME( 1995, extdwnhl, 0, extdwnhl, extdwnhl, driver_device, 0, ROT0, "Sammy Industries Japan", "Extreme Downhill (v1.5)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, extdwnhl, 0, extdwnhl, extdwnhl, seta_state, 0, ROT0, "Sammy Industries Japan", "Extreme Downhill (v1.5)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, gundhara, 0, gundhara, gundhara, driver_device, 0, ROT270, "Banpresto", "Gundhara", 0 ) -GAME( 1995, gundharac, gundhara,gundhara, gundhara, driver_device, 0, ROT270, "Banpresto", "Gundhara (Chinese, bootleg?)", 0 ) +GAME( 1995, gundhara, 0, gundhara, gundhara, seta_state, 0, ROT270, "Banpresto", "Gundhara", 0 ) +GAME( 1995, gundharac, gundhara,gundhara, gundhara, seta_state, 0, ROT270, "Banpresto", "Gundhara (Chinese, bootleg?)", 0 ) -GAME( 1995, sokonuke, 0, extdwnhl, sokonuke, driver_device, 0, ROT0, "Sammy Industries", "Sokonuke Taisen Game (Japan)", MACHINE_IMPERFECT_SOUND ) +GAME( 1995, sokonuke, 0, extdwnhl, sokonuke, seta_state, 0, ROT0, "Sammy Industries", "Sokonuke Taisen Game (Japan)", MACHINE_IMPERFECT_SOUND ) GAME( 1995, zombraid, 0, zombraid, zombraid, seta_state, zombraid, ROT0, "American Sammy", "Zombie Raid (9/28/95, US)", MACHINE_NO_COCKTAIL ) GAME( 1995, zombraidp,zombraid, zombraid, zombraid, seta_state, zombraid, ROT0, "American Sammy", "Zombie Raid (9/28/95, US, prototype PCB)", MACHINE_NO_COCKTAIL ) // actual code is same as the released version diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp index 70b018f76dd..9763acc6e37 100644 --- a/src/mame/drivers/seta2.cpp +++ b/src/mame/drivers/seta2.cpp @@ -397,7 +397,7 @@ static ADDRESS_MAP_START( penbros_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE(0x500302, 0x500303) AM_READ_PORT("DSW2") // DSW 2 AM_RANGE(0x500300, 0x50030f) AM_WRITE(sound_bank_w) // Samples Banks ADDRESS_MAP_END - + static ADDRESS_MAP_START( penbrosk_map, AS_PROGRAM, 16, seta2_state ) AM_IMPORT_FROM(penbros_base_map) AM_RANGE(0x508300, 0x508301) AM_READ_PORT("DSW1") // DSW 1 @@ -665,7 +665,7 @@ private: uint8_t m_serial[4]; }; -const device_type FUNCUBE_TOUCHSCREEN = device_creator; +DEFINE_DEVICE_TYPE(FUNCUBE_TOUCHSCREEN, funcube_touchscreen_device, "funcube_touchscreen", "Funcube Touchscreen") static INPUT_PORTS_START( funcube_touchscreen ) PORT_START("touch_btn") @@ -679,7 +679,7 @@ static INPUT_PORTS_START( funcube_touchscreen ) INPUT_PORTS_END funcube_touchscreen_device::funcube_touchscreen_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, FUNCUBE_TOUCHSCREEN, "Funcube Touchscreen", tag, owner, clock, "funcube_touchscrene", __FILE__), + device_t(mconfig, FUNCUBE_TOUCHSCREEN, tag, owner, clock), device_serial_interface(mconfig, *this), m_tx_cb(*this), m_x(*this, "touch_x"), @@ -800,7 +800,7 @@ WRITE32_MEMBER(seta2_state::oki_write) if (ACCESSING_BITS_0_7) { const uint8_t tmp = (data & 0x000000ff); - m_oki->write_TMP_register(tmp); + m_oki->write_tmp_register(tmp); } else if (ACCESSING_BITS_16_23) { @@ -2325,7 +2325,7 @@ INTERRUPT_GEN_MEMBER(seta2_state::samshoot_interrupt) m_tmp68301->external_interrupt_2(); // to do: hook up x1-10 interrupts } -static MACHINE_CONFIG_START( seta2, seta2_state ) +static MACHINE_CONFIG_START( seta2 ) MCFG_CPU_ADD("maincpu", M68301, XTAL_50MHz/3) // !! TMP68301 !! MCFG_CPU_PROGRAM_MAP(mj4simai_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt) @@ -2342,7 +2342,7 @@ static MACHINE_CONFIG_START( seta2, seta2_state ) MCFG_SCREEN_SIZE(0x200, 0x200) MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x80, 0x170-1) MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(seta2_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(seta2_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", seta2) @@ -2517,7 +2517,7 @@ MACHINE_RESET_MEMBER(seta2_state, funcube) m_funcube_hopper_motor = 0; } -static MACHINE_CONFIG_START( funcube, seta2_state ) +static MACHINE_CONFIG_START( funcube ) MCFG_CPU_ADD("maincpu", MCF5206E, XTAL_25_447MHz) MCFG_CPU_PROGRAM_MAP(funcube_map) @@ -2546,7 +2546,7 @@ static MACHINE_CONFIG_START( funcube, seta2_state ) MCFG_SCREEN_SIZE(0x200, 0x200) MCFG_SCREEN_VISIBLE_AREA(0x0+1, 0x140-1+1, 0x80, 0x170-1) MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(seta2_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(seta2_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", funcube) @@ -2582,7 +2582,7 @@ static MACHINE_CONFIG_DERIVED( funcube3, funcube2 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( namcostr, seta2_state ) +static MACHINE_CONFIG_START( namcostr ) MCFG_CPU_ADD("maincpu", M68301, XTAL_50MHz/3) // !! TMP68301 !! MCFG_CPU_PROGRAM_MAP(namcostr_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt) @@ -2597,7 +2597,7 @@ static MACHINE_CONFIG_START( namcostr, seta2_state ) MCFG_SCREEN_SIZE(0x200, 0x200) MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x80, 0x170-1) MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(seta2_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(seta2_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", funcube) @@ -3882,31 +3882,31 @@ ROM_START( trophyh ) /* V1.0 is currently the only known version */ ROM_END -GAME( 1994, gundamex, 0, gundamex, gundamex, driver_device, 0, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 ) -GAME( 1995, grdians, 0, grdians, grdians, driver_device, 0, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, mj4simai, 0, mj4simai, mj4simai, driver_device, 0, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1996, myangel, 0, myangel, myangel, driver_device, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, myangel2, 0, myangel2, myangel2, driver_device, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, reelquak, 0, reelquak, reelquak, driver_device, 0, ROT0, "", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 199?, endrichs, 0, reelquak, endrichs, driver_device, 0, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, staraudi, 0, staraudi, staraudi, seta2_state, staraudi, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, driver_device, 0, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 2000, penbros, 0, penbros, penbros, driver_device, 0, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 2000, penbrosk, penbros, penbrosk, penbros, driver_device, 0, ROT0, "bootleg", "Penguin Brothers (Japan, bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) -GAME( 2000, namcostr, 0, namcostr, funcube, driver_device, 0, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) -GAME( 2000, deerhunt, 0, samshoot, deerhunt, driver_device, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhunta,deerhunt, samshoot, deerhunt, driver_device, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhuntb,deerhunt, samshoot, deerhunt, driver_device, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhuntc,deerhunt, samshoot, deerhunt, driver_device, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhuntd,deerhunt, samshoot, deerhunt, driver_device, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhunte,deerhunt, samshoot, deerhunt, driver_device, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2001, turkhunt, 0, samshoot, turkhunt, driver_device, 0, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2001, wschamp, 0, samshoot, wschamp, driver_device, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2001, wschampa, wschamp, samshoot, wschamp, driver_device, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2001, wschampb, wschamp, samshoot, wschamp, driver_device, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2002, trophyh, 0, samshoot, trophyh, driver_device, 0, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, funcube, 0, funcube, funcube, seta2_state, funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL ) -GAME( 2001, funcube2, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL ) -GAME( 2001, funcube3, 0, funcube3, funcube, seta2_state, funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL ) -GAME( 2001, funcube4, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL ) -GAME( 2002, funcube5, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL ) +GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, 0, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 ) +GAME( 1995, grdians, 0, grdians, grdians, seta2_state, 0, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, mj4simai, 0, mj4simai, mj4simai, seta2_state, 0, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1996, myangel, 0, myangel, myangel, seta2_state, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, myangel2, 0, myangel2, myangel2, seta2_state, 0, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, reelquak, 0, reelquak, reelquak, seta2_state, 0, ROT0, "", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 199?, endrichs, 0, reelquak, endrichs, seta2_state, 0, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, staraudi, 0, staraudi, staraudi, seta2_state, staraudi, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, 0, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 2000, penbros, 0, penbros, penbros, seta2_state, 0, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 2000, penbrosk, penbros, penbrosk, penbros, seta2_state, 0, ROT0, "bootleg", "Penguin Brothers (Japan, bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) +GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, 0, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) +GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, turkhunt, 0, samshoot, turkhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, wschamp, 0, samshoot, wschamp, seta2_state, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, wschampa, wschamp, samshoot, wschamp, seta2_state, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, wschampb, wschamp, samshoot, wschamp, seta2_state, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2002, trophyh, 0, samshoot, trophyh, seta2_state, 0, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, funcube, 0, funcube, funcube, seta2_state, funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL ) +GAME( 2001, funcube2, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL ) +GAME( 2001, funcube3, 0, funcube3, funcube, seta2_state, funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL ) +GAME( 2001, funcube4, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL ) +GAME( 2002, funcube5, 0, funcube2, funcube, seta2_state, funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL ) diff --git a/src/mame/drivers/sf.cpp b/src/mame/drivers/sf.cpp index a97deabca80..03386115e6f 100644 --- a/src/mame/drivers/sf.cpp +++ b/src/mame/drivers/sf.cpp @@ -534,7 +534,7 @@ void sf_state::machine_reset() m_fgscroll = 0; } -static MACHINE_CONFIG_START( sfan, sf_state ) +static MACHINE_CONFIG_START( sfan ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) @@ -574,12 +574,12 @@ static MACHINE_CONFIG_START( sfan, sf_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) MCFG_SOUND_ADD("msm1", MSM5205, 384000) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* 8KHz playback ? */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MCFG_SOUND_ADD("msm2", MSM5205, 384000) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* 8KHz playback ? */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 8KHz playback ? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -1023,9 +1023,9 @@ ROM_END -GAME( 1987, sf, 0, sfus, sfus, driver_device, 0, ROT0, "Capcom", "Street Fighter (US, set 1)", MACHINE_SUPPORTS_SAVE ) // Shows Capcom copyright -GAME( 1987, sfua, sf, sfjp, sfjp, driver_device, 0, ROT0, "Capcom", "Street Fighter (US, set 2) (protected)", MACHINE_SUPPORTS_SAVE ) // Shows Capcom USA copyright -GAME( 1987, sfj, sf, sfjp, sfjp, driver_device, 0, ROT0, "Capcom", "Street Fighter (Japan) (protected)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sfjan,sf, sfan, sfan, driver_device, 0, ROT0, "Capcom", "Street Fighter (Japan, pneumatic buttons)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sfan, sf, sfan, sfan, driver_device, 0, ROT0, "Capcom", "Street Fighter (World, pneumatic buttons)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sfp, sf, sfp, sfan, driver_device, 0, ROT0, "Capcom", "Street Fighter (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sf, 0, sfus, sfus, sf_state, 0, ROT0, "Capcom", "Street Fighter (US, set 1)", MACHINE_SUPPORTS_SAVE ) // Shows Capcom copyright +GAME( 1987, sfua, sf, sfjp, sfjp, sf_state, 0, ROT0, "Capcom", "Street Fighter (US, set 2) (protected)", MACHINE_SUPPORTS_SAVE ) // Shows Capcom USA copyright +GAME( 1987, sfj, sf, sfjp, sfjp, sf_state, 0, ROT0, "Capcom", "Street Fighter (Japan) (protected)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sfjan,sf, sfan, sfan, sf_state, 0, ROT0, "Capcom", "Street Fighter (Japan, pneumatic buttons)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sfan, sf, sfan, sfan, sf_state, 0, ROT0, "Capcom", "Street Fighter (World, pneumatic buttons)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sfp, sf, sfp, sfan, sf_state, 0, ROT0, "Capcom", "Street Fighter (prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp index bd9ee52f5dc..62cb992d089 100644 --- a/src/mame/drivers/sfbonus.cpp +++ b/src/mame/drivers/sfbonus.cpp @@ -1360,7 +1360,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, sfbonus_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( sfbonus, sfbonus_state ) +static MACHINE_CONFIG_START( sfbonus ) MCFG_CPU_ADD("maincpu", Z80, 6000000) // custom packaged z80 CPU ?? Mhz MCFG_CPU_PROGRAM_MAP(sfbonus_map) MCFG_CPU_IO_MAP(sfbonus_io) @@ -1387,7 +1387,7 @@ static MACHINE_CONFIG_START( sfbonus, sfbonus_state ) /* Parrot 3 seems fine at 1 Mhz, but Double Challenge isn't? */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END diff --git a/src/mame/drivers/sfcbox.cpp b/src/mame/drivers/sfcbox.cpp index 16e4b6152df..1317fa7a7bc 100644 --- a/src/mame/drivers/sfcbox.cpp +++ b/src/mame/drivers/sfcbox.cpp @@ -445,7 +445,7 @@ void sfcbox_state::machine_reset() m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); } -static MACHINE_CONFIG_START( sfcbox, sfcbox_state ) +static MACHINE_CONFIG_START( sfcbox ) /* base snes hardware */ MCFG_CPU_ADD("maincpu", _5A22, 3580000*6) /* 2.68Mhz, also 3.58Mhz */ @@ -574,8 +574,8 @@ ROM_START( pss64 ) ROM_END -GAME( 1994, sfcbox, 0, sfcbox, snes, snes_state, snes, ROT0, "Nintendo", "Super Famicom Box BIOS", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING ) -GAME( 1994, pss61, sfcbox, sfcbox, snes, snes_state, snes, ROT0, "Nintendo", "Super Mario Kart / Super Mario Collection / Star Fox (Super Famicom Box)", MACHINE_NOT_WORKING ) -GAME( 1994, pss62, sfcbox, sfcbox, snes, snes_state, snes, ROT0, "T&E Soft / I'Max", "New Super 3D Golf Simulation - Waialae No Kiseki / Super Mahjong 2 (Super Famicom Box)", MACHINE_NOT_WORKING ) -GAME( 1994, pss63, sfcbox, sfcbox, snes, snes_state, snes, ROT0, "Nintendo / BPS", "Super Donkey Kong / Super Tetris 2 + Bombliss (Super Famicom Box)", MACHINE_NOT_WORKING ) -GAME( 199?, pss64, sfcbox, sfcbox, snes, snes_state, snes, ROT0, "Nintendo / Hudson Soft", "Super Donkey Kong / Super Bomberman 2 (Super Famicom Box)", MACHINE_NOT_WORKING ) +GAME( 1994, sfcbox, 0, sfcbox, snes, sfcbox_state, snes, ROT0, "Nintendo", "Super Famicom Box BIOS", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING ) +GAME( 1994, pss61, sfcbox, sfcbox, snes, sfcbox_state, snes, ROT0, "Nintendo", "Super Mario Kart / Super Mario Collection / Star Fox (Super Famicom Box)", MACHINE_NOT_WORKING ) +GAME( 1994, pss62, sfcbox, sfcbox, snes, sfcbox_state, snes, ROT0, "T&E Soft / I'Max", "New Super 3D Golf Simulation - Waialae No Kiseki / Super Mahjong 2 (Super Famicom Box)", MACHINE_NOT_WORKING ) +GAME( 1994, pss63, sfcbox, sfcbox, snes, sfcbox_state, snes, ROT0, "Nintendo / BPS", "Super Donkey Kong / Super Tetris 2 + Bombliss (Super Famicom Box)", MACHINE_NOT_WORKING ) +GAME( 199?, pss64, sfcbox, sfcbox, snes, sfcbox_state, snes, ROT0, "Nintendo / Hudson Soft", "Super Donkey Kong / Super Bomberman 2 (Super Famicom Box)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/sfkick.cpp b/src/mame/drivers/sfkick.cpp index 315aca95721..26e12a70051 100644 --- a/src/mame/drivers/sfkick.cpp +++ b/src/mame/drivers/sfkick.cpp @@ -579,7 +579,7 @@ WRITE_LINE_MEMBER(sfkick_state::irqhandler) m_soundcpu->set_input_line_and_vector(0, state ? ASSERT_LINE : CLEAR_LINE, 0xff); } -static MACHINE_CONFIG_START( sfkick, sfkick_state ) +static MACHINE_CONFIG_START( sfkick ) MCFG_CPU_ADD("maincpu",Z80,MASTER_CLOCK/6) MCFG_CPU_PROGRAM_MAP(sfkick_map) diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp index d49ba948c5c..a4618334147 100644 --- a/src/mame/drivers/sg1000.cpp +++ b/src/mame/drivers/sg1000.cpp @@ -514,10 +514,10 @@ void sf7000_state::machine_reset() ***************************************************************************/ /*------------------------------------------------- - MACHINE_CONFIG_START( sg1000, sg1000_state ) + MACHINE_CONFIG_START( sg1000 ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( sg1000, sg1000_state ) +static MACHINE_CONFIG_START( sg1000 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_10_738635MHz/3) MCFG_CPU_PROGRAM_MAP(sg1000_map) @@ -567,10 +567,10 @@ static MACHINE_CONFIG_DERIVED( omv, sg1000 ) MACHINE_CONFIG_END /*------------------------------------------------- - MACHINE_CONFIG_START( sc3000, sc3000_state ) + MACHINE_CONFIG_START( sc3000 ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( sc3000, sc3000_state ) +static MACHINE_CONFIG_START( sc3000 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_10_738635MHz/3) // LH0080A MCFG_CPU_PROGRAM_MAP(sc3000_map) @@ -605,10 +605,10 @@ static MACHINE_CONFIG_START( sc3000, sc3000_state ) MACHINE_CONFIG_END /*------------------------------------------------- - MACHINE_CONFIG_START( sf7000, sf7000_state ) + MACHINE_CONFIG_START( sf7000 ) -------------------------------------------------*/ -static MACHINE_CONFIG_START( sf7000, sf7000_state ) +static MACHINE_CONFIG_START( sf7000 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_10_738635MHz/3) MCFG_CPU_PROGRAM_MAP(sf7000_map) @@ -693,11 +693,11 @@ ROM_END SYSTEM DRIVERS ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1983, sg1000, 0, 0, sg1000, sg1000, driver_device, 0, "Sega", "SG-1000", MACHINE_SUPPORTS_SAVE ) -CONS( 1984, sg1000m2, sg1000, 0, sc3000, sc3000, driver_device, 0, "Sega", "SG-1000 II", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, sc3000, 0, sg1000, sc3000, sc3000, driver_device, 0, "Sega", "SC-3000", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, sc3000h, sc3000, 0, sc3000, sc3000, driver_device, 0, "Sega", "SC-3000H", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, sf7000, sc3000, 0, sf7000, sf7000, driver_device, 0, "Sega", "SC-3000/Super Control Station SF-7000", MACHINE_SUPPORTS_SAVE ) -CONS( 1984, omv1000, sg1000, 0, omv, omv1000, driver_device, 0, "Tsukuda Original", "Othello Multivision FG-1000", MACHINE_SUPPORTS_SAVE ) -CONS( 1984, omv2000, sg1000, 0, omv, omv2000, driver_device, 0, "Tsukuda Original", "Othello Multivision FG-2000", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1983, sg1000, 0, 0, sg1000, sg1000, sg1000_state, 0, "Sega", "SG-1000", MACHINE_SUPPORTS_SAVE ) +CONS( 1984, sg1000m2, sg1000, 0, sc3000, sc3000, sc3000_state, 0, "Sega", "SG-1000 II", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, sc3000, 0, sg1000, sc3000, sc3000, sc3000_state, 0, "Sega", "SC-3000", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, sc3000h, sc3000, 0, sc3000, sc3000, sc3000_state, 0, "Sega", "SC-3000H", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, sf7000, sc3000, 0, sf7000, sf7000, sf7000_state, 0, "Sega", "SC-3000/Super Control Station SF-7000", MACHINE_SUPPORTS_SAVE ) +CONS( 1984, omv1000, sg1000, 0, omv, omv1000, sg1000_state, 0, "Tsukuda Original", "Othello Multivision FG-1000", MACHINE_SUPPORTS_SAVE ) +CONS( 1984, omv2000, sg1000, 0, omv, omv2000, sg1000_state, 0, "Tsukuda Original", "Othello Multivision FG-2000", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sg1000a.cpp b/src/mame/drivers/sg1000a.cpp index daf023f95c1..83ef7aa6767 100644 --- a/src/mame/drivers/sg1000a.cpp +++ b/src/mame/drivers/sg1000a.cpp @@ -113,6 +113,162 @@ CN4 CN5 ******************************************************/ +/* Super Derby II notes from Charles MacDonald + +================================================================================ +Notes +================================================================================ + +Z80 memory map + +0000-3FFF : IC10 (EPROM, 16Kx8) +4000-7FFF : IC11 (EPROM, 16Kx8) +8000-BFFF : (Unused) +C000-FFFF : IC8 (Work RAM, 2Kx8) + +Z80 port map + +00-3F : (Unused) +40-7F : 315-5066 (SN76489 part) +80-BF : 315-5066 (TMS9918 part) +C0-FF : KBSEL# + +Detail of KBSEL# area + +C0-C7 : 8251 UART +C8-CF : 8255 PPI +D0-D7 : (Unused) +D8-DF : (Unused) +E0-E7 : (Unused) +E8-EF : Output port load strobe (IC25 P9) +F0-F7 : Output port load strobe (IC21 P9) +F8-FF : Pulse generator trigger (IC17 P1) + +Z80 signals + + INT# from 315-5066 (same as TMS9918 INT#) + NMI# source is unclear (from unlabeled IC3 nearby) +WAIT# is unused (pulled up) + CLK is 3.579543 MHz (from 315-5066 which divides 10.73863 XTAL by 3) + +The PCB is configured to connect the PSG output of the 315-5066 to an amplifier, +but none of the locations are populated so there is no audio output. + +================================================================================ +Board markings +================================================================================ + +On top copper layer: +"(C) SEGA 1984 834-5529" + +On bottom copper layer: +"171-5200" + +On a sticker: +"REV C" + +On a sticker: +"94.05.27" + +================================================================================ +Parts list +================================================================================ + +All ICs have a date code of either 1983 or 1984. + + IC1 - LA4460 (unpopulated) + IC2 - NEC D74HC138C + IC3 - (Unreadable) + IC4 - D780C-1 (Z80) + IC5 - TI SN74LS245N + IC6 - SN74LS244N + IC7 - SN73LS244N + IC8 - Toshiba TC5517APL (backed by a super capacitor) + IC9 - NEC D8255AC-2 +IC10 - 28-pin socket (silkscreen is "27128") for "EPR-6450D" (Fujitsu MB27128-30) +IC11 - 28-pin socket (silkscreen is "27128") for "EPR-6504D" (Fujitsu MB27128-30) +IC12 - Toshiba TC4053BP +IC13 - Toshiba TC74HC4040P +IC14 - NEC D74HC138C +IC15 - Mitsubishi M74LS02P +IC16 - Sharp IR2339 +IC17 - TI SN74LS123N +IC18 - National DM74175N +IC19 - Sega 315-5066 +IC20 - NEC D8251AC +IC21 - National DM74175N +IC22 - National DM74175N +IC23 - NEC D41416C-15 +IC24 - NEC D41416C-15 +IC25 - National DM74175N +IC26 - Motorola NE592N +IC27 - Motorola NE592N +IC28 - Motorola NE592N +IC29 - NEC 7808 + +PC1 - GI B 5102 321J "TLP521-1" +PC2 - GI D 5102 423J +PC3 - GI D 5102 423J +PC4 - GI D 5102 423J +PC5 - GI D 5102 423J +PC6 - GI D 5102 423J +PC7 - GI D 5102 423J +PC8 - GI D 5102 423J +PC9 - GI D 5102 423J + +PST1 - "F" (Unreadable) +PST2 - T516A + +TA1 - TD62003P +TA2 - TD62003P +TA3 - TD62003P +TA4 - TD62003P +TA5 - TD62003P + +TR1 - C945 +TR2 - C1B15 +TR3 - C458 + +SW1 - DIP switch, eight switches, all OFF +SW2 - DIP switch, eight switches, all OFF + +XTAL - 10.73863 + +CN1 - 2x20 latching header +CN2 - 2x17 latching header +CN3 - 2x13 latching header +CN4 - 2x5 latching header + +LED-1 - Red LED +LED - ??? (in optical housing) +PTr - ??? (in optical housing) + +================================================================================ +Source code and text in EPR-6450D +================================================================================ + +"KYOKO SAEKI & HIROMITSU MARUYAMA" + +POWER DOWN CHANGE +TSEL: + LD A,(BETFLG) ; READ CREDIT + RRCA ; CREDIT IN ? + JR C,BETSELZ + + LD A,(SELOLD) + OR A + LD C,A + CALL NZ,OLDCLCG + LD HL,0 + LD (SELOLD),HL + LD (DBLSWCT),HL + LD (LMPCNT),1 + +================================================================================ +End +================================================================================ +*/ + #include "emu.h" #include "cpu/z80/z80.h" #include "sound/sn76496.h" @@ -161,6 +317,15 @@ static ADDRESS_MAP_START( io_map, AS_IO, 8, sg1000a_state ) AM_RANGE(0xdc, 0xdf) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) ADDRESS_MAP_END +static ADDRESS_MAP_START( sderby2_io_map, AS_IO, 8, sg1000a_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("snsnd", sn76489a_device, write) + AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) + AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) + // AM_RANGE(0xc0, 0xc1) NEC D8251AC UART + AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // NEC D8255AC-2 +ADDRESS_MAP_END + /************************************* * * Generic Port definitions @@ -247,6 +412,36 @@ static INPUT_PORTS_START( dokidoki ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END +static INPUT_PORTS_START( sderby2 ) + PORT_INCLUDE( sg1000 ) + + PORT_MODIFY("DSW") + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:1") + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:2") + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:3") + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:4") + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:5") + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:6") + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:7") + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:8") + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + WRITE8_MEMBER(sg1000a_state::sg1000a_coin_counter_w) { @@ -259,7 +454,7 @@ WRITE8_MEMBER(sg1000a_state::sg1000a_coin_counter_w) * *************************************/ -static MACHINE_CONFIG_START( sg1000a, sg1000a_state ) +static MACHINE_CONFIG_START( sg1000a ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) MCFG_CPU_PROGRAM_MAP(program_map) @@ -294,6 +489,14 @@ static MACHINE_CONFIG_DERIVED( sg1000ax, sg1000a ) MCFG_SEGACRPT_SET_DECRYPTED_TAG(":decrypted_opcodes") MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( sderby2, sg1000a ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_CLOCK(XTAL_10_738635MHz / 3) + MCFG_CPU_IO_MAP(sderby2_io_map) + + // Actually uses a Sega 315-5066 chip, which is a TMS9918 and SN76489 in the same package but with RGB output +MACHINE_CONFIG_END + /************************************* * * ROM definitions @@ -321,6 +524,12 @@ ROM_START( dokidoki ) ROM_LOAD( "epr-7358.ic3", 0x8000, 0x4000, CRC(c6f26b0b) SHA1(3753e05b6e77159832dbe88562ba7a818120d1a3) ) ROM_END +ROM_START( sderby2 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "epr-6450d.ic10", 0x0000, 0x4000, CRC(e56986d3) SHA1(a2dbdc95128cc94a1492e080aeea402f2d4b89fe) ) + ROM_LOAD( "epr-6504d.ic11", 0x4000, 0x4000, CRC(7bb364b9) SHA1(9f93572b6d999422d93ad5f7a251b4695565651f) ) +ROM_END + /************************************* * * Driver initialization @@ -339,6 +548,7 @@ DRIVER_INIT_MEMBER(sg1000a_state,sg1000a) * *************************************/ -GAME( 1984, chboxing, 0, sg1000a, chboxing, sg1000a_state, sg1000a, ROT0, "Sega", "Champion Boxing", 0 ) -GAME( 1985, chwrestl, 0, sg1000ax, chwrestl, sg1000a_state, sg1000a, ROT0, "Sega", "Champion Pro Wrestling", 0 ) -GAME( 1985, dokidoki, 0, sg1000a, dokidoki, sg1000a_state, sg1000a, ROT0, "Sega", "Doki Doki Penguin Land", 0 ) +GAME( 1984, chboxing, 0, sg1000a, chboxing, sg1000a_state, sg1000a, ROT0, "Sega", "Champion Boxing", 0 ) +GAME( 1985, chwrestl, 0, sg1000ax, chwrestl, sg1000a_state, sg1000a, ROT0, "Sega", "Champion Pro Wrestling", 0 ) +GAME( 1985, dokidoki, 0, sg1000a, dokidoki, sg1000a_state, sg1000a, ROT0, "Sega", "Doki Doki Penguin Land", 0 ) +GAME( 1985, sderby2, 0, sderby2, sderby2, sg1000a_state, sg1000a, ROT0, "Sega", "Super Derby II (Satellite board)", MACHINE_NOT_WORKING ) // inputs aren't hooked up, probably needs to be connected to the main board anyway diff --git a/src/mame/drivers/sh4robot.cpp b/src/mame/drivers/sh4robot.cpp index 5ebe20f7530..8f524ef10c7 100644 --- a/src/mame/drivers/sh4robot.cpp +++ b/src/mame/drivers/sh4robot.cpp @@ -57,7 +57,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( sh4robot ) INPUT_PORTS_END -static MACHINE_CONFIG_START( sh4robot, sh4robot_state ) +static MACHINE_CONFIG_START( sh4robot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH4LE, 200000000) // SH7750 MCFG_SH4_MD0(1) @@ -89,5 +89,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT CONFIG COMPANY FULLNAME FLAGS */ -COMP( 20??, sh4robot, 0, 0, sh4robot, sh4robot, driver_device, 0, "", "Robot", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 20??, sh4robot, 0, 0, sh4robot, sh4robot, sh4robot_state, 0, "", "Robot", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/shadfrce.cpp b/src/mame/drivers/shadfrce.cpp index 65c66f172f9..9de52d9c4bb 100644 --- a/src/mame/drivers/shadfrce.cpp +++ b/src/mame/drivers/shadfrce.cpp @@ -540,7 +540,7 @@ GFXDECODE_END /* Machine Driver Bits */ -static MACHINE_CONFIG_START( shadfrce, shadfrce_state ) +static MACHINE_CONFIG_START( shadfrce ) MCFG_CPU_ADD("maincpu", M68000, XTAL_28MHz / 2) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(shadfrce_map) @@ -554,7 +554,7 @@ static MACHINE_CONFIG_START( shadfrce, shadfrce_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 448, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */ MCFG_SCREEN_UPDATE_DRIVER(shadfrce_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(shadfrce_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(shadfrce_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", shadfrce) @@ -571,7 +571,7 @@ static MACHINE_CONFIG_START( shadfrce, shadfrce_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) - MCFG_OKIM6295_ADD("oki", XTAL_13_4952MHz/8, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_13_4952MHz/8, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END @@ -667,6 +667,6 @@ ROM_START( shadfrcej ) ROM_END -GAME( 1993, shadfrce, 0, shadfrce, shadfrce, driver_device, 0, ROT0, "Technos Japan", "Shadow Force (World, Version 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, shadfrceu, shadfrce, shadfrce, shadfrce, driver_device, 0, ROT0, "Technos Japan", "Shadow Force (US, Version 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, shadfrcej, shadfrce, shadfrce, shadfrce, driver_device, 0, ROT0, "Technos Japan", "Shadow Force (Japan, Version 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, shadfrce, 0, shadfrce, shadfrce, shadfrce_state, 0, ROT0, "Technos Japan", "Shadow Force (World, Version 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, shadfrceu, shadfrce, shadfrce, shadfrce, shadfrce_state, 0, ROT0, "Technos Japan", "Shadow Force (US, Version 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, shadfrcej, shadfrce, shadfrce, shadfrce, shadfrce_state, 0, ROT0, "Technos Japan", "Shadow Force (Japan, Version 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/shangha3.cpp b/src/mame/drivers/shangha3.cpp index a20591b2ddc..a551c1ef0cd 100644 --- a/src/mame/drivers/shangha3.cpp +++ b/src/mame/drivers/shangha3.cpp @@ -452,7 +452,7 @@ static GFXDECODE_START( shangha3 ) GFXDECODE_END -static MACHINE_CONFIG_START( shangha3, shangha3_state ) +static MACHINE_CONFIG_START( shangha3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_48MHz/3) // TMP68HC000N-16 @@ -484,12 +484,12 @@ static MACHINE_CONFIG_START( shangha3, shangha3_state ) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2")) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) // pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) // pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( heberpop, shangha3_state ) +static MACHINE_CONFIG_START( heberpop ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_48MHz/3) // TMP68HC000N-16 like the others?? @@ -527,12 +527,12 @@ static MACHINE_CONFIG_START( heberpop, shangha3_state ) MCFG_SOUND_ROUTE(0, "mono", 0.40) MCFG_SOUND_ROUTE(1, "mono", 0.40) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( blocken, shangha3_state ) +static MACHINE_CONFIG_START( blocken ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_48MHz/3) // TMP68HC000N-16 @@ -570,7 +570,7 @@ static MACHINE_CONFIG_START( blocken, shangha3_state ) MCFG_SOUND_ROUTE(0, "mono", 0.40) MCFG_SOUND_ROUTE(1, "mono", 0.40) - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -653,6 +653,21 @@ ROM_START( shangha3u ) /* PCB labeled SUN04C - Shows FBI "Winners Don't Use Drug ROM_LOAD( "ic75.ic75", 0x0000, 0x80000, CRC(a8136d8c) SHA1(8028bda5642c2546c1ac8da78dbff4084829f03b) ) /* 27C4001 with 1st & 2nd halves == s3j_v10.ic75 */ ROM_END +ROM_START( shangha3up ) /* PCB labeled SUN04 with a sticker labeled PCB 001, a prototyping version of the later SUN04C */ + ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "syan3u_evn_10-7.ic3", 0x0000, 0x40000, CRC(a1f5275a) SHA1(71a024205bd5e6385bd9d746c339f0327bd1c1d6) ) /* ST M27C2001 EPROM hand written label: SYAN3U EVN 10/7 */ + ROM_LOAD16_BYTE( "syan3u_odd_10-7.ic2", 0x0001, 0x40000, CRC(fe3960bf) SHA1(545473260d959b8ed8145263d54f5f4523a844c4) ) /* ST M27C2001 EPROM hand written label: SYAN3U ODD 10/7 */ + + ROM_REGION( 0x200000, "gfx1", 0 ) /* same data as the 42 pin MASK S3J CHAR-A1 */ + ROM_LOAD( "s3j_chr-a1_1_sum_53b1_93.9.20.ic80", 0x000000, 0x80000, CRC(fcaf795b) SHA1(312d85f39087564d67f12e0287f508b94b1493af) ) /* HN27C4001 hand written label: S3J-CHR-A1 #1 SUM: 53B1 93.9.20 */ + ROM_LOAD( "s3j_chr-a1_2_sum_0e32_93.9.20.ic81", 0x080000, 0x80000, CRC(5a564f50) SHA1(34ca2ecd7101961e657034082802d89db5b4b7bd) ) /* HN27C4001 hand written label: S3J-CHR-A1 #2 SUM: 0E32 93.9.20 */ + ROM_LOAD( "s3j_chr-a1_3_sum_0d9a_93.9.20.ic82", 0x100000, 0x80000, CRC(2b333c69) SHA1(6e720de5d222be25857ab18902636587e8c6afb8) ) /* HN27C4001 hand written label: S3J-CHR-A1 #3 SUM: 0D9A 93.9.20 */ + ROM_LOAD( "s3j_chr-a1_4_sum_27e7_93.9.20.ic83", 0x180000, 0x80000, CRC(19be7039) SHA1(53839460b53144120cc2f68992c054062efa939b) ) /* HN27C4001 hand written label: S3J-CHR-A1 #4 SUM: 27E7 93.9.20 */ + + ROM_REGION( 0x40000, "oki", 0 ) /* samples for M6295 */ + ROM_LOAD( "pcm_9-16_0166.ic75", 0x0000, 0x40000, CRC(f0cdc86a) SHA1(b1017a9841a56e0f5d2714f550f64ed1f4e238e6) ) /* Hand written label: PCM 9/16 0166 */ +ROM_END + ROM_START( shangha3j ) /* PCB labeled SUN04C */ ROM_REGION( 0x80000, "maincpu", 0 ) ROM_LOAD16_BYTE( "s3j_v11.ic3", 0x0000, 0x40000, CRC(e98ce9c8) SHA1(359e117aebb644d7b235add7e71ed6891243d451) ) @@ -731,8 +746,9 @@ DRIVER_INIT_MEMBER(shangha3_state,heberpop) m_do_shadows = 0; } -GAME( 1993, shangha3, 0, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, shangha3u, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, shangha3j, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, heberpop, 0, heberpop, heberpop, shangha3_state, heberpop, ROT0, "Sunsoft / Atlus", "Hebereke no Popoon (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, blocken, 0, blocken, blocken, shangha3_state, heberpop, ROT0, "Visco / KID", "Blocken (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, shangha3, 0, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, shangha3u, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, shangha3up, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (US, prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, shangha3j, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, heberpop, 0, heberpop, heberpop, shangha3_state, heberpop, ROT0, "Sunsoft / Atlus", "Hebereke no Popoon (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, blocken, 0, blocken, blocken, shangha3_state, heberpop, ROT0, "Visco / KID", "Blocken (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/shanghai.cpp b/src/mame/drivers/shanghai.cpp index 4245a0e287a..3ffa33b8033 100644 --- a/src/mame/drivers/shanghai.cpp +++ b/src/mame/drivers/shanghai.cpp @@ -403,7 +403,7 @@ static ADDRESS_MAP_START( hd63484_map, AS_0, 16, shanghai_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM ADDRESS_MAP_END -static MACHINE_CONFIG_START( shanghai, shanghai_state ) +static MACHINE_CONFIG_START( shanghai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz/2) /* NEC D70116C-8 */ @@ -439,7 +439,7 @@ static MACHINE_CONFIG_START( shanghai, shanghai_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( shangha2, shanghai_state ) +static MACHINE_CONFIG_START( shangha2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz/2) /* ? */ @@ -474,7 +474,7 @@ static MACHINE_CONFIG_START( shangha2, shanghai_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kothello, shanghai_state ) +static MACHINE_CONFIG_START( kothello ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz) @@ -678,8 +678,8 @@ ROM_END -GAME( 1988, shanghai, 0, shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, shanghaij, shanghai, shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, shangha2, 0, shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, shangha2a, shangha2, shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, kothello, 0, kothello, kothello, driver_device, 0, ROT0, "Success", "Kyuukyoku no Othello", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, shanghai, 0, shanghai, shanghai, shanghai_state, 0, ROT0, "Sunsoft", "Shanghai (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, shanghaij, shanghai, shanghai, shanghai, shanghai_state, 0, ROT0, "Sunsoft", "Shanghai (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, shangha2, 0, shangha2, shangha2, shanghai_state, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, shangha2a, shangha2, shangha2, shangha2, shanghai_state, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, kothello, 0, kothello, kothello, shanghai_state, 0, ROT0, "Success", "Kyuukyoku no Othello", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/shangkid.cpp b/src/mame/drivers/shangkid.cpp index 8386ffb9edb..6102a5e5827 100644 --- a/src/mame/drivers/shangkid.cpp +++ b/src/mame/drivers/shangkid.cpp @@ -349,7 +349,7 @@ ADDRESS_MAP_END /***************************************************************************************/ -static MACHINE_CONFIG_START( chinhero, shangkid_state ) +static MACHINE_CONFIG_START( chinhero ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* verified on pcb */ @@ -442,7 +442,7 @@ static ADDRESS_MAP_START( dynamski_portmap, AS_IO, 8, shangkid_state ) AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( dynamski, shangkid_state ) +static MACHINE_CONFIG_START( dynamski ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3000000) /* ? */ @@ -1010,10 +1010,10 @@ ROM_START( dynamski ) ROM_END -GAME( 1984, dynamski, 0, dynamski, dynamski, driver_device, 0, ROT90, "Taiyo", "Dynamic Ski", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, chinhero, 0, chinhero, chinhero, shangkid_state, chinhero, ROT90, "Taiyo", "Chinese Hero", MACHINE_SUPPORTS_SAVE ) // by Nihon Game? -GAME( 1984, chinhero2,chinhero, chinhero, chinhero, shangkid_state, chinhero, ROT90, "Taiyo", "Chinese Hero (older, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, chinhero3,chinhero, chinhero, chinhero, shangkid_state, chinhero, ROT90, "Taiyo", "Chinese Hero (older, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, chinherot,chinhero, chinhero, chinhero, shangkid_state, chinhero, ROT90, "Taiyo (Taito license)", "Chinese Heroe (Taito)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, shangkid, 0, shangkid, shangkid, shangkid_state, shangkid, ROT0, "Taiyo (Data East license)", "Shanghai Kid", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, hiryuken, shangkid, shangkid, shangkid, shangkid_state, shangkid, ROT0, "Taiyo (Taito license)", "Hokuha Syourin Hiryu no Ken", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, dynamski, 0, dynamski, dynamski, shangkid_state, 0, ROT90, "Taiyo", "Dynamic Ski", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, chinhero, 0, chinhero, chinhero, shangkid_state, chinhero, ROT90, "Taiyo", "Chinese Hero", MACHINE_SUPPORTS_SAVE ) // by Nihon Game? +GAME( 1984, chinhero2, chinhero, chinhero, chinhero, shangkid_state, chinhero, ROT90, "Taiyo", "Chinese Hero (older, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, chinhero3, chinhero, chinhero, chinhero, shangkid_state, chinhero, ROT90, "Taiyo", "Chinese Hero (older, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, chinherot, chinhero, chinhero, chinhero, shangkid_state, chinhero, ROT90, "Taiyo (Taito license)", "Chinese Heroe (Taito)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, shangkid, 0, shangkid, shangkid, shangkid_state, shangkid, ROT0, "Taiyo (Data East license)", "Shanghai Kid", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, hiryuken, shangkid, shangkid, shangkid, shangkid_state, shangkid, ROT0, "Taiyo (Taito license)", "Hokuha Syourin Hiryu no Ken", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/shaolins.cpp b/src/mame/drivers/shaolins.cpp index cd914cb8b5e..8b4fb99dd07 100644 --- a/src/mame/drivers/shaolins.cpp +++ b/src/mame/drivers/shaolins.cpp @@ -192,7 +192,7 @@ static GFXDECODE_START( shaolins ) GFXDECODE_END -static MACHINE_CONFIG_START( shaolins, shaolins_state ) +static MACHINE_CONFIG_START( shaolins ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/12) /* verified on pcb */ @@ -342,7 +342,7 @@ ROM_START( shaolinb ) ROM_END -/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */ -GAME( 1985, kicker, 0, shaolins, shaolins, driver_device, 0, ROT90, "Konami", "Kicker", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, shaolins, kicker, shaolins, shaolins, driver_device, 0, ROT90, "Konami", "Shao-lin's Road (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, shaolinb, kicker, shaolins, shaolins, driver_device, 0, ROT90, "Konami", "Shao-lin's Road (set 2)", MACHINE_SUPPORTS_SAVE ) +/* YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */ +GAME( 1985, kicker, 0, shaolins, shaolins, shaolins_state, 0, ROT90, "Konami", "Kicker", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, shaolins, kicker, shaolins, shaolins, shaolins_state, 0, ROT90, "Konami", "Shao-lin's Road (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, shaolinb, kicker, shaolins, shaolins, shaolins_state, 0, ROT90, "Konami", "Shao-lin's Road (set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/shisen.cpp b/src/mame/drivers/shisen.cpp index c3ce31f1181..9318b6c39f2 100644 --- a/src/mame/drivers/shisen.cpp +++ b/src/mame/drivers/shisen.cpp @@ -207,7 +207,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( shisen, shisen_state ) +static MACHINE_CONFIG_START( shisen ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 6000000) /* 6 MHz ? */ @@ -238,7 +238,7 @@ static MACHINE_CONFIG_START( shisen, shisen_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("m72", M72, 0) + MCFG_SOUND_ADD("m72", IREM_M72_AUDIO, 0) MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) @@ -429,7 +429,7 @@ ROM_START( matchit ) /* no samples on this board */ ROM_END -GAME( 1989, matchit, 0, shisen, matchit, driver_device, 0, ROT0, "Tamtex", "Match It", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, shisen, matchit, shisen, shisen, driver_device, 0, ROT0, "Tamtex", "Shisensho - Joshiryo-Hen (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, sichuan2, matchit, shisen, shisen, driver_device, 0, ROT0, "hack", "Sichuan II (hack, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, sichuan2a,matchit, shisen, shisen, driver_device, 0, ROT0, "hack", "Sichuan II (hack, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, matchit, 0, shisen, matchit, shisen_state, 0, ROT0, "Tamtex", "Match It", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, shisen, matchit, shisen, shisen, shisen_state, 0, ROT0, "Tamtex", "Shisensho - Joshiryo-Hen (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, sichuan2, matchit, shisen, shisen, shisen_state, 0, ROT0, "hack", "Sichuan II (hack, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, sichuan2a,matchit, shisen, shisen, shisen_state, 0, ROT0, "hack", "Sichuan II (hack, set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/shootout.cpp b/src/mame/drivers/shootout.cpp index c5dfaf0108f..ba40d2ad694 100644 --- a/src/mame/drivers/shootout.cpp +++ b/src/mame/drivers/shootout.cpp @@ -273,7 +273,7 @@ void shootout_state::machine_reset () m_ccnt_old_val = 0x40; } -static MACHINE_CONFIG_START( shootout, shootout_state ) +static MACHINE_CONFIG_START( shootout ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", DECO_222, XTAL_12MHz / 6) // 2 MHz? @@ -306,7 +306,7 @@ static MACHINE_CONFIG_START( shootout, shootout_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( shootouj, shootout_state ) +static MACHINE_CONFIG_START( shootouj ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12MHz / 6) // 2 MHz? (Assuming the same XTAL as DE-0219 pcb) diff --git a/src/mame/drivers/shougi.cpp b/src/mame/drivers/shougi.cpp index 554150d2892..2fb3da8b000 100644 --- a/src/mame/drivers/shougi.cpp +++ b/src/mame/drivers/shougi.cpp @@ -398,7 +398,7 @@ INTERRUPT_GEN_MEMBER(shougi_state::vblank_nmi) } -static MACHINE_CONFIG_START( shougi, shougi_state ) +static MACHINE_CONFIG_START( shougi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_10MHz/4) @@ -489,6 +489,6 @@ ROM_START( shougi2 ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR, COMPANY, FULLNAME, FLAGS */ -GAME( 1982, shougi, 0, shougi, shougi, driver_device, 0, ROT0, "Alpha Denshi Co. (Tehkan license)", "Shougi", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, shougi2, 0, shougi, shougi2, driver_device, 0, ROT0, "Alpha Denshi Co. (Tehkan license)", "Shougi Part II", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS */ +GAME( 1982, shougi, 0, shougi, shougi, shougi_state, 0, ROT0, "Alpha Denshi Co. (Tehkan license)", "Shougi", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, shougi2, 0, shougi, shougi2, shougi_state, 0, ROT0, "Alpha Denshi Co. (Tehkan license)", "Shougi Part II", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/shtzone.cpp b/src/mame/drivers/shtzone.cpp index c83dc552550..c3d42179a4e 100644 --- a/src/mame/drivers/shtzone.cpp +++ b/src/mame/drivers/shtzone.cpp @@ -93,7 +93,7 @@ uint32_t shtzone_state::screen_update_shtzone(screen_device &screen, bitmap_ind1 } -static MACHINE_CONFIG_START( shtzone, shtzone_state ) +static MACHINE_CONFIG_START( shtzone ) /* basic machine hardware */ MCFG_CPU_ADD("timercpu", Z80,10738000/4) @@ -121,4 +121,4 @@ ROM_START( shtzone ) ROM_LOAD( "epr10894a.20", 0x00000, 0x04000, CRC(ea8901d9) SHA1(43fd8bfc395e3b2e3fbe9645d692a5eb04783d9c) ) ROM_END -GAME( 1987, shtzone, 0, shtzone, shtzone, driver_device, 0, ROT0, "Sega", "Shooting Zone System BIOS", MACHINE_IS_SKELETON | MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_IS_BIOS_ROOT ) +GAME( 1987, shtzone, 0, shtzone, shtzone, shtzone_state, 0, ROT0, "Sega", "Shooting Zone System BIOS", MACHINE_IS_SKELETON | MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_IS_BIOS_ROOT ) diff --git a/src/mame/drivers/shuuz.cpp b/src/mame/drivers/shuuz.cpp index 1bf575d14f6..dca4dcd5c6d 100644 --- a/src/mame/drivers/shuuz.cpp +++ b/src/mame/drivers/shuuz.cpp @@ -230,7 +230,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( shuuz, shuuz_state ) +static MACHINE_CONFIG_START( shuuz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) @@ -260,7 +260,7 @@ static MACHINE_CONFIG_START( shuuz, shuuz_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", ATARI_CLOCK_14MHz/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", ATARI_CLOCK_14MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -347,5 +347,5 @@ ROM_END * *************************************/ -GAME( 1990, shuuz, 0, shuuz, shuuz, driver_device, 0, ROT0, "Atari Games", "Shuuz (version 8.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, shuuz2, shuuz, shuuz, shuuz2, driver_device, 0, ROT0, "Atari Games", "Shuuz (version 7.1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, shuuz, 0, shuuz, shuuz, shuuz_state, 0, ROT0, "Atari Games", "Shuuz (version 8.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, shuuz2, shuuz, shuuz, shuuz2, shuuz_state, 0, ROT0, "Atari Games", "Shuuz (version 7.1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sidearms.cpp b/src/mame/drivers/sidearms.cpp index 243ba0df289..a31c6918b29 100644 --- a/src/mame/drivers/sidearms.cpp +++ b/src/mame/drivers/sidearms.cpp @@ -593,7 +593,7 @@ static GFXDECODE_START( turtship ) GFXDECODE_END -static MACHINE_CONFIG_START( sidearms, sidearms_state ) +static MACHINE_CONFIG_START( sidearms ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */ @@ -614,7 +614,7 @@ static MACHINE_CONFIG_START( sidearms, sidearms_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", sidearms) @@ -642,7 +642,7 @@ static MACHINE_CONFIG_START( sidearms, sidearms_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( turtship, sidearms_state ) +static MACHINE_CONFIG_START( turtship ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */ @@ -662,7 +662,7 @@ static MACHINE_CONFIG_START( turtship, sidearms_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update) MCFG_SCREEN_PALETTE("palette") @@ -690,7 +690,7 @@ static MACHINE_CONFIG_START( turtship, sidearms_state ) MCFG_SOUND_ROUTE(3, "mono", 0.25) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( whizz, sidearms_state ) +static MACHINE_CONFIG_START( whizz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */ @@ -715,7 +715,7 @@ static MACHINE_CONFIG_START( whizz, sidearms_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", turtship) diff --git a/src/mame/drivers/sidepckt.cpp b/src/mame/drivers/sidepckt.cpp index f69930110b5..6628de27a2a 100644 --- a/src/mame/drivers/sidepckt.cpp +++ b/src/mame/drivers/sidepckt.cpp @@ -372,7 +372,7 @@ void sidepckt_state::machine_reset() m_scroll_y = 0; } -static MACHINE_CONFIG_START( sidepckt, sidepckt_state ) +static MACHINE_CONFIG_START( sidepckt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) /* 2 MHz */ @@ -527,4 +527,4 @@ DRIVER_INIT_MEMBER(sidepckt_state,sidepcktj) GAME( 1986, sidepckt, 0, sidepckt, sidepckt, sidepckt_state, sidepckt, ROT0, "Data East Corporation", "Side Pocket (World)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, sidepcktj, sidepckt, sidepckt, sidepcktj, sidepckt_state, sidepcktj, ROT0, "Data East Corporation", "Side Pocket (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, sidepcktb, sidepckt, sidepcktb, sidepcktb, driver_device, 0, ROT0, "bootleg", "Side Pocket (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, sidepcktb, sidepckt, sidepcktb, sidepcktb, sidepckt_state, 0, ROT0, "bootleg", "Side Pocket (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sigmab52.cpp b/src/mame/drivers/sigmab52.cpp index 099cf63f603..3add7883ff7 100644 --- a/src/mame/drivers/sigmab52.cpp +++ b/src/mame/drivers/sigmab52.cpp @@ -575,7 +575,7 @@ void sigmab52_state::machine_reset() * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( jwildb52, sigmab52_state ) +static MACHINE_CONFIG_START( jwildb52 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MAIN_CLOCK/9) /* 2 MHz */ diff --git a/src/mame/drivers/sigmab98.cpp b/src/mame/drivers/sigmab98.cpp index 6754bf7a421..1caec9d98c5 100644 --- a/src/mame/drivers/sigmab98.cpp +++ b/src/mame/drivers/sigmab98.cpp @@ -250,7 +250,7 @@ public: virtual void video_start() override; uint32_t screen_update_sigmab98(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_sammymdl(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_sammymdl); INTERRUPT_GEN_MEMBER(sigmab98_vblank_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(sammymdl_irq); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri_mask); @@ -1145,7 +1145,7 @@ WRITE8_MEMBER(sigmab98_state::vblank_w) m_vblank = (m_vblank & ~0x03) | (data & 0x03); } -void sigmab98_state::screen_eof_sammymdl(screen_device &screen, bool state) +WRITE_LINE_MEMBER(sigmab98_state::screen_vblank_sammymdl) { // rising edge if (state) @@ -1236,7 +1236,7 @@ static ADDRESS_MAP_START( animalc_io, AS_IO, 8, sigmab98_state ) AM_RANGE( 0x32, 0x32 ) AM_WRITE(sammymdl_leds_w ) AM_RANGE( 0x34, 0x34 ) AM_READ(unk_34_r ) AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write ) - AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_TMP_register ) + AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read ) AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w ) AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1 @@ -1480,7 +1480,7 @@ static ADDRESS_MAP_START( haekaka_io, AS_IO, 8, sigmab98_state ) AM_RANGE( 0x31, 0x31 ) AM_WRITE(haekaka_coin_w ) AM_RANGE( 0x32, 0x32 ) AM_WRITE(haekaka_leds_w ) AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write ) - AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_TMP_register ) + AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read ) AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w ) AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1 @@ -1727,7 +1727,7 @@ static ADDRESS_MAP_START( itazuram_io, AS_IO, 8, sigmab98_state ) AM_RANGE( 0x31, 0x31 ) AM_WRITE(sammymdl_coin_w ) AM_RANGE( 0x32, 0x32 ) AM_WRITE(sammymdl_leds_w ) AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write ) - AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_TMP_register ) + AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read ) AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w ) AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1 @@ -1956,7 +1956,7 @@ static ADDRESS_MAP_START( tdoboon_io, AS_IO, 8, sigmab98_state ) AM_RANGE( 0x31, 0x31 ) AM_WRITE(sammymdl_coin_w ) AM_RANGE( 0x32, 0x32 ) AM_WRITE(sammymdl_leds_w ) AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write ) - AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_TMP_register ) + AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read ) AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w ) AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1 @@ -2148,7 +2148,7 @@ INTERRUPT_GEN_MEMBER(sigmab98_state::sigmab98_vblank_interrupt) device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x5a); } -static MACHINE_CONFIG_START( sigmab98, sigmab98_state ) +static MACHINE_CONFIG_START( sigmab98 ) MCFG_CPU_ADD("maincpu", Z80, 10000000) // !! TAXAN KY-80, clock @X1? !! MCFG_CPU_PROGRAM_MAP(gegege_mem_map) MCFG_CPU_IO_MAP(gegege_io_map) @@ -2229,7 +2229,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(sigmab98_state::sammymdl_irq) m_maincpu->set_input_line_and_vector(0,HOLD_LINE, m_timer1_vector); } -static MACHINE_CONFIG_START( sammymdl, sigmab98_state ) +static MACHINE_CONFIG_START( sammymdl ) MCFG_CPU_ADD("maincpu", Z80, XTAL_20MHz / 2) // !! KL5C80A120FP @ 10MHz? (actually 4 times faster than Z80) !! MCFG_CPU_PROGRAM_MAP( animalc_map ) MCFG_CPU_IO_MAP( animalc_io ) @@ -2250,7 +2250,7 @@ static MACHINE_CONFIG_START( sammymdl, sigmab98_state ) MCFG_SCREEN_SIZE(0x140, 0x100) MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1) MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98) - MCFG_SCREEN_VBLANK_DRIVER(sigmab98_state, screen_eof_sammymdl) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sigmab98_state, screen_vblank_sammymdl)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", sigmab98) diff --git a/src/mame/drivers/silkroad.cpp b/src/mame/drivers/silkroad.cpp index 18c6a20e325..7008c122e35 100644 --- a/src/mame/drivers/silkroad.cpp +++ b/src/mame/drivers/silkroad.cpp @@ -273,7 +273,7 @@ static GFXDECODE_START( silkroad ) GFXDECODE_ENTRY( "gfx1", 0, tiles16x16x6_layout, 0x0000, 256 ) GFXDECODE_END -static MACHINE_CONFIG_START( silkroad, silkroad_state ) +static MACHINE_CONFIG_START( silkroad ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_32MHz/2) /* 16MHz */ @@ -300,11 +300,11 @@ static MACHINE_CONFIG_START( silkroad, silkroad_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki1", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.45) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki2", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", 2112000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.45) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.45) MACHINE_CONFIG_END @@ -393,5 +393,5 @@ ROM_START( silkroada ) ROM_END -GAME( 1999, silkroad, 0, silkroad, silkroad, driver_device, 0, ROT0, "Unico", "The Legend of Silkroad", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, silkroada, silkroad, silkroad, silkroad, driver_device, 0, ROT0, "Unico", "The Legend of Silkroad (larger ROMs)", MACHINE_SUPPORTS_SAVE ) // same content but fewer GFX roms of a larger size +GAME( 1999, silkroad, 0, silkroad, silkroad, silkroad_state, 0, ROT0, "Unico", "The Legend of Silkroad", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, silkroada, silkroad, silkroad, silkroad, silkroad_state, 0, ROT0, "Unico", "The Legend of Silkroad (larger ROMs)", MACHINE_SUPPORTS_SAVE ) // same content but fewer GFX roms of a larger size diff --git a/src/mame/drivers/silvmil.cpp b/src/mame/drivers/silvmil.cpp index 38457eed1b8..d77d20c49c7 100644 --- a/src/mame/drivers/silvmil.cpp +++ b/src/mame/drivers/silvmil.cpp @@ -395,7 +395,7 @@ static ADDRESS_MAP_START( silvmil_sound_map, AS_PROGRAM, 8, silvmil_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( silvmil, silvmil_state ) +static MACHINE_CONFIG_START( silvmil ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* Verified */ @@ -434,7 +434,7 @@ static MACHINE_CONFIG_START( silvmil, silvmil_state ) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - MCFG_OKIM6295_ADD("oki", XTAL_4_096MHz/4, OKIM6295_PIN7_HIGH) /* Verified */ + MCFG_OKIM6295_ADD("oki", XTAL_4_096MHz/4, PIN7_HIGH) /* Verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END @@ -447,7 +447,7 @@ static MACHINE_CONFIG_DERIVED( puzzlove, silvmil ) MCFG_DECO_SPRITE_BOOTLEG_TYPE(1) MCFG_DEVICE_REMOVE("oki") - MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, OKIM6295_PIN7_HIGH) /* Verified */ + MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, PIN7_HIGH) /* Verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END diff --git a/src/mame/drivers/simpl156.cpp b/src/mame/drivers/simpl156.cpp index 042794d2b21..c5ebeae8d31 100644 --- a/src/mame/drivers/simpl156.cpp +++ b/src/mame/drivers/simpl156.cpp @@ -380,7 +380,7 @@ DECOSPR_PRIORITY_CB_MEMBER(simpl156_state::pri_callback) } -static MACHINE_CONFIG_START( chainrec, simpl156_state ) +static MACHINE_CONFIG_START( chainrec ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000 /* /4 */) /*DE156*/ /* 7.000 MHz */ /* measured at 7.. seems to need 28? */ @@ -426,11 +426,11 @@ static MACHINE_CONFIG_START( chainrec, simpl156_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("okisfx", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("okisfx", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6) - MCFG_OKIM6295_ADD("okimusic", 32220000/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("okimusic", 32220000/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.2) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.2) MACHINE_CONFIG_END @@ -462,7 +462,7 @@ static MACHINE_CONFIG_DERIVED( mitchell156, chainrec ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(mitchell156_map) - MCFG_OKIM6295_REPLACE("okimusic", 32220000/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_REPLACE("okimusic", 32220000/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.2) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.2) MACHINE_CONFIG_END diff --git a/src/mame/drivers/simple_st0016.cpp b/src/mame/drivers/simple_st0016.cpp index 2689a1fc592..f5cd2606a71 100644 --- a/src/mame/drivers/simple_st0016.cpp +++ b/src/mame/drivers/simple_st0016.cpp @@ -462,7 +462,7 @@ uint32_t st0016_state::screen_update_st0016(screen_device &screen, bitmap_ind16 } -static MACHINE_CONFIG_START( st0016, st0016_state ) +static MACHINE_CONFIG_START( st0016 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",ST0016_CPU,8000000) /* 8 MHz ? */ MCFG_CPU_PROGRAM_MAP(st0016_mem) @@ -720,13 +720,13 @@ DRIVER_INIT_MEMBER(st0016_state,mayjisn2) * *************************************/ -GAME( 1994, renju, 0, renju, renju, st0016_state, renju, ROT0, "Visco", "Renju Kizoku", MACHINE_NO_COCKTAIL) -GAME( 1996, nratechu, 0, st0016, nratechu, st0016_state, nratechu, ROT0, "Seta", "Neratte Chu", MACHINE_NO_COCKTAIL) -GAME( 1994, mayjisn2, 0, mayjinsn, mayjisn2, st0016_state, mayjisn2, ROT0, "Seta", "Mayjinsen 2", MACHINE_NO_COCKTAIL) -GAME( 1995, koikois, 0, st0016, koikois, st0016_state, renju, ROT0, "Visco", "Koi Koi Shimasho", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL) +GAME( 1994, renju, 0, renju, renju, st0016_state, renju, ROT0, "Visco", "Renju Kizoku", MACHINE_NO_COCKTAIL) +GAME( 1996, nratechu, 0, st0016, nratechu, st0016_state, nratechu, ROT0, "Seta", "Neratte Chu", MACHINE_NO_COCKTAIL) +GAME( 1994, mayjisn2, 0, mayjinsn, mayjisn2, st0016_state, mayjisn2, ROT0, "Seta", "Mayjinsen 2", MACHINE_NO_COCKTAIL) +GAME( 1995, koikois, 0, st0016, koikois, st0016_state, renju, ROT0, "Visco", "Koi Koi Shimasho", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL) GAME( 2001, gostop, 0, st0016, gostop, st0016_state, renju, ROT0, "Visco", "Kankoku Hanafuda Go-Stop", MACHINE_NO_COCKTAIL) /* Not working */ -GAME( 1994, mayjinsn, 0, mayjinsn, st0016, st0016_state, mayjinsn, ROT0, "Seta", "Mayjinsen",MACHINE_IMPERFECT_GRAPHICS|MACHINE_NOT_WORKING|MACHINE_NO_COCKTAIL) +GAME( 1994, mayjinsn, 0, mayjinsn, st0016, st0016_state, mayjinsn, ROT0, "Seta", "Mayjinsen", MACHINE_IMPERFECT_GRAPHICS|MACHINE_NOT_WORKING|MACHINE_NO_COCKTAIL) GAME( 1994, dcrown, 0, st0016, renju, st0016_state, renju, ROT0, "Nippon Data Kiki", "Dream Crown (Set 1)", MACHINE_NOT_WORKING|MACHINE_NO_COCKTAIL) // (c) 1994 Nippon Data Kiki is uploaded near the Japanese Insert coin text GAME( 1994, dcrowna, dcrown, st0016, renju, st0016_state, renju, ROT0, "Nippon Data Kiki", "Dream Crown (Set 2)", MACHINE_NOT_WORKING|MACHINE_NO_COCKTAIL) // the Insert Coin text has been translated to English and no (c) is uploaded diff --git a/src/mame/drivers/simpsons.cpp b/src/mame/drivers/simpsons.cpp index be92748a0c4..52fbcf9506b 100644 --- a/src/mame/drivers/simpsons.cpp +++ b/src/mame/drivers/simpsons.cpp @@ -317,7 +317,7 @@ INTERRUPT_GEN_MEMBER(simpsons_state::simpsons_irq) device.execute().set_input_line(KONAMI_IRQ_LINE, HOLD_LINE); } -static MACHINE_CONFIG_START( simpsons, simpsons_state ) +static MACHINE_CONFIG_START( simpsons ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 053248, the clock input is 12MHz, and internal CPU divider of 4 */ @@ -605,10 +605,10 @@ ROM_END ***************************************************************************/ // the region warning, if one exists, is shown after the high-score screen in attract mode -GAME( 1991, simpsons, 0, simpsons, simpsons, driver_device, 0, ROT0, "Konami", "The Simpsons (4 Players World, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, simpsons4pa, simpsons, simpsons, simpsons, driver_device, 0, ROT0, "Konami", "The Simpsons (4 Players World, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, simpsons2p, simpsons, simpsons, simpsn2p, driver_device, 0, ROT0, "Konami", "The Simpsons (2 Players World, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, simpsons2p2, simpsons, simpsons, simpsons, driver_device, 0, ROT0, "Konami", "The Simpsons (2 Players World, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, simpsons2p3, simpsons, simpsons, simpsn2p, driver_device, 0, ROT0, "Konami", "The Simpsons (2 Players World, set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, simpsons2pa, simpsons, simpsons, simpsn2p, driver_device, 0, ROT0, "Konami", "The Simpsons (2 Players Asia)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, simpsons2pj, simpsons, simpsons, simpsn2p, driver_device, 0, ROT0, "Konami", "The Simpsons (2 Players Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, simpsons, 0, simpsons, simpsons, simpsons_state, 0, ROT0, "Konami", "The Simpsons (4 Players World, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, simpsons4pa, simpsons, simpsons, simpsons, simpsons_state, 0, ROT0, "Konami", "The Simpsons (4 Players World, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, simpsons2p, simpsons, simpsons, simpsn2p, simpsons_state, 0, ROT0, "Konami", "The Simpsons (2 Players World, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, simpsons2p2, simpsons, simpsons, simpsons, simpsons_state, 0, ROT0, "Konami", "The Simpsons (2 Players World, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, simpsons2p3, simpsons, simpsons, simpsn2p, simpsons_state, 0, ROT0, "Konami", "The Simpsons (2 Players World, set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, simpsons2pa, simpsons, simpsons, simpsn2p, simpsons_state, 0, ROT0, "Konami", "The Simpsons (2 Players Asia)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, simpsons2pj, simpsons, simpsons, simpsn2p, simpsons_state, 0, ROT0, "Konami", "The Simpsons (2 Players Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sitcom.cpp b/src/mame/drivers/sitcom.cpp index d67c35b12bd..d71caace1a3 100644 --- a/src/mame/drivers/sitcom.cpp +++ b/src/mame/drivers/sitcom.cpp @@ -329,7 +329,7 @@ void sitcom_timer_state::update_dac(uint8_t value) } -MACHINE_CONFIG_START( sitcom, sitcom_state ) +MACHINE_CONFIG_START( sitcom ) // basic machine hardware MCFG_CPU_ADD("maincpu", I8085A, XTAL_6_144MHz) // 3.072MHz can be used for an old slow 8085 MCFG_CPU_PROGRAM_MAP(sitcom_mem) @@ -367,7 +367,7 @@ MACHINE_CONFIG_START( sitcom, sitcom_state ) MACHINE_CONFIG_END -MACHINE_CONFIG_DERIVED_CLASS( sitcomtmr, sitcom, sitcom_timer_state ) +MACHINE_CONFIG_DERIVED( sitcomtmr, sitcom ) MCFG_DEVICE_ADD("ds2", DL1414T, 0) // remote display MCFG_DL1414_UPDATE_HANDLER(WRITE16(sitcom_state, update_ds<2>)) @@ -390,6 +390,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 2002, sitcom, 0, 0, sitcom, sitcom, driver_device, 0, "San Bergmans & Izabella Malcolm", "Sitcom", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW) -COMP( 2002, sitcomtmr, sitcom, 0, sitcomtmr, sitcomtmr, driver_device, 0, "San Bergmans & Izabella Malcolm", "Sitcom Timer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 2002, sitcom, 0, 0, sitcom, sitcom, sitcom_state, 0, "San Bergmans & Izabella Malcolm", "SITCOM", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW) +COMP( 2002, sitcomtmr, sitcom, 0, sitcomtmr, sitcomtmr, sitcom_timer_state, 0, "San Bergmans & Izabella Malcolm", "SITCOM Timer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/skeetsht.cpp b/src/mame/drivers/skeetsht.cpp index 70ae23c3fc4..6155b28c9c7 100644 --- a/src/mame/drivers/skeetsht.cpp +++ b/src/mame/drivers/skeetsht.cpp @@ -227,7 +227,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( skeetsht, skeetsht_state ) +static MACHINE_CONFIG_START( skeetsht ) MCFG_CPU_ADD("68hc11", MC68HC11, 4000000) // ? MCFG_CPU_PROGRAM_MAP(hc11_pgm_map) @@ -295,5 +295,5 @@ ROM_END * *************************************/ -GAME( 1991, skeetsht, 0, skeetsht, skeetsht, driver_device, 0, ROT0, "Dynamo", "Skeet Shot", MACHINE_NOT_WORKING ) -GAME( 1991, popshot, 0, skeetsht, skeetsht, driver_device, 0, ROT0, "Dynamo", "Pop Shot (prototype)", MACHINE_NOT_WORKING ) +GAME( 1991, skeetsht, 0, skeetsht, skeetsht, skeetsht_state, 0, ROT0, "Dynamo", "Skeet Shot", MACHINE_NOT_WORKING ) +GAME( 1991, popshot, 0, skeetsht, skeetsht, skeetsht_state, 0, ROT0, "Dynamo", "Pop Shot (prototype)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/skimaxx.cpp b/src/mame/drivers/skimaxx.cpp index 77d7b3b67c7..524ab14ba95 100644 --- a/src/mame/drivers/skimaxx.cpp +++ b/src/mame/drivers/skimaxx.cpp @@ -493,7 +493,7 @@ void skimaxx_state::machine_reset() * *************************************/ -static MACHINE_CONFIG_START( skimaxx, skimaxx_state ) +static MACHINE_CONFIG_START( skimaxx ) MCFG_CPU_ADD("maincpu", M68EC030, XTAL_40MHz) MCFG_CPU_PROGRAM_MAP(68030_1_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", skimaxx_state, irq3_line_hold) // 1,3,7 are identical, rest is RTE @@ -529,16 +529,16 @@ static MACHINE_CONFIG_START( skimaxx, skimaxx_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki1", XTAL_4MHz, OKIM6295_PIN7_LOW) // ? + MCFG_OKIM6295_ADD("oki1", XTAL_4MHz, PIN7_LOW) // ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_OKIM6295_ADD("oki2", XTAL_4MHz/2, OKIM6295_PIN7_HIGH) // ? + MCFG_OKIM6295_ADD("oki2", XTAL_4MHz/2, PIN7_HIGH) // ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_OKIM6295_ADD("oki3", XTAL_4MHz, OKIM6295_PIN7_LOW) // ? + MCFG_OKIM6295_ADD("oki3", XTAL_4MHz, PIN7_LOW) // ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki4", XTAL_4MHz/2, OKIM6295_PIN7_HIGH) // ? + MCFG_OKIM6295_ADD("oki4", XTAL_4MHz/2, PIN7_HIGH) // ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -598,4 +598,4 @@ ROM_END * *************************************/ -GAME( 1996, skimaxx, 0, skimaxx, skimaxx, driver_device, 0, ROT0, "Kyle Hodgetts / ICE", "Skimaxx", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, skimaxx, 0, skimaxx, skimaxx, skimaxx_state, 0, ROT0, "Kyle Hodgetts / ICE", "Skimaxx", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/skullxbo.cpp b/src/mame/drivers/skullxbo.cpp index 718fc4d14c6..227ced02bd7 100644 --- a/src/mame/drivers/skullxbo.cpp +++ b/src/mame/drivers/skullxbo.cpp @@ -224,7 +224,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( skullxbo, skullxbo_state ) +static MACHINE_CONFIG_START( skullxbo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) diff --git a/src/mame/drivers/skyarmy.cpp b/src/mame/drivers/skyarmy.cpp index 84ad8c752c5..c7f8b03d4c1 100644 --- a/src/mame/drivers/skyarmy.cpp +++ b/src/mame/drivers/skyarmy.cpp @@ -317,7 +317,7 @@ static GFXDECODE_START( skyarmy ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 8 ) GFXDECODE_END -static MACHINE_CONFIG_START( skyarmy, skyarmy_state ) +static MACHINE_CONFIG_START( skyarmy ) MCFG_CPU_ADD("maincpu", Z80,4000000) MCFG_CPU_PROGRAM_MAP(skyarmy_map) @@ -366,4 +366,4 @@ ROM_START( skyarmy ) ROM_LOAD( "a6.bin", 0x0000, 0x0020, CRC(c721220b) SHA1(61b3320fb616c0600d56840cb6438616c7e0c6eb) ) ROM_END -GAME( 1982, skyarmy, 0, skyarmy, skyarmy, driver_device, 0, ROT90, "Shoei", "Sky Army", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, skyarmy, 0, skyarmy, skyarmy, skyarmy_state, 0, ROT90, "Shoei", "Sky Army", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/skydiver.cpp b/src/mame/drivers/skydiver.cpp index d394ce6ad6d..a02eb02254d 100644 --- a/src/mame/drivers/skydiver.cpp +++ b/src/mame/drivers/skydiver.cpp @@ -375,7 +375,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( skydiver, skydiver_state ) +static MACHINE_CONFIG_START( skydiver ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800,MASTER_CLOCK/16) /* ???? */ @@ -439,4 +439,4 @@ ROM_END * *************************************/ -GAMEL(1978, skydiver, 0, skydiver, skydiver, driver_device, 0, ROT0, "Atari", "Sky Diver", MACHINE_SUPPORTS_SAVE, layout_skydiver ) +GAMEL(1978, skydiver, 0, skydiver, skydiver, skydiver_state, 0, ROT0, "Atari", "Sky Diver", MACHINE_SUPPORTS_SAVE, layout_skydiver ) diff --git a/src/mame/drivers/skyfox.cpp b/src/mame/drivers/skyfox.cpp index 1292900c77f..332b28c89d0 100644 --- a/src/mame/drivers/skyfox.cpp +++ b/src/mame/drivers/skyfox.cpp @@ -220,7 +220,7 @@ void skyfox_state::machine_reset() m_bg_ctrl = 0; } -static MACHINE_CONFIG_START( skyfox, skyfox_state ) +static MACHINE_CONFIG_START( skyfox ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) /* Verified at 4MHz */ diff --git a/src/mame/drivers/skykid.cpp b/src/mame/drivers/skykid.cpp index 3dbbd540388..fd3af38d83e 100644 --- a/src/mame/drivers/skykid.cpp +++ b/src/mame/drivers/skykid.cpp @@ -435,7 +435,7 @@ INTERRUPT_GEN_MEMBER(skykid_state::mcu_vblank_irq) } -static MACHINE_CONFIG_START( skykid, skykid_state ) +static MACHINE_CONFIG_START( skykid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809,49152000/32) diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp index 275cc6d0166..ed2de02827c 100644 --- a/src/mame/drivers/skylncr.cpp +++ b/src/mame/drivers/skylncr.cpp @@ -1616,7 +1616,7 @@ INTERRUPT_GEN_MEMBER(skylncr_state::skylncr_vblank_interrupt) * Machine Driver * *************************************/ -static MACHINE_CONFIG_START( skylncr, skylncr_state ) +static MACHINE_CONFIG_START( skylncr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4) @@ -2012,14 +2012,14 @@ DRIVER_INIT_MEMBER(skylncr_state, sonikfig) * Game Drivers * ****************************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1995, skylncr, 0, skylncr, skylncr, driver_device, 0, ROT0, "Bordun International", "Sky Lancer (Bordun, version U450C)", 0 ) -GAME( 1995, butrfly, 0, skylncr, skylncr, driver_device, 0, ROT0, "Bordun International", "Butterfly Video Game (version U350C)", 0 ) -GAME( 1999, mbutrfly, 0, mbutrfly, mbutrfly, driver_device, 0, ROT0, "Bordun International", "Magical Butterfly (version U350C, protected)", 0 ) -GAME( 1995, madzoo, 0, skylncr, skylncr, driver_device, 0, ROT0, "Bordun International", "Mad Zoo (version U450C)", 0 ) -GAME( 1995, leader, 0, skylncr, leader, driver_device, 0, ROT0, "bootleg", "Leader (version Z 2E, Greece)", 0 ) -GAME( 199?, gallag50, 0, skylncr, gallag50, driver_device, 0, ROT0, "bootleg", "Gallag Video Game / Petalouda (Butterfly, x50)", 0 ) -GAME( 199?, neraidou, 0, neraidou, neraidou, driver_device, 0, ROT0, "bootleg", "Neraidoula (Fairy Butterfly)", 0 ) -GAME( 199?, sstar97, 0, sstar97, sstar97, driver_device, 0, ROT0, "Bordun International", "Super Star 97 / Ming Xing 97 (version V153B)", 0 ) -GAME( 1995, bdream97, 0, bdream97, skylncr, driver_device, 0, ROT0, "bootleg (KKK)", "Butterfly Dream 97 / Hudie Meng 97", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1995, skylncr, 0, skylncr, skylncr, skylncr_state, 0, ROT0, "Bordun International", "Sky Lancer (Bordun, version U450C)", 0 ) +GAME( 1995, butrfly, 0, skylncr, skylncr, skylncr_state, 0, ROT0, "Bordun International", "Butterfly Video Game (version U350C)", 0 ) +GAME( 1999, mbutrfly, 0, mbutrfly, mbutrfly, skylncr_state, 0, ROT0, "Bordun International", "Magical Butterfly (version U350C, protected)", 0 ) +GAME( 1995, madzoo, 0, skylncr, skylncr, skylncr_state, 0, ROT0, "Bordun International", "Mad Zoo (version U450C)", 0 ) +GAME( 1995, leader, 0, skylncr, leader, skylncr_state, 0, ROT0, "bootleg", "Leader (version Z 2E, Greece)", 0 ) +GAME( 199?, gallag50, 0, skylncr, gallag50, skylncr_state, 0, ROT0, "bootleg", "Gallag Video Game / Petalouda (Butterfly, x50)", 0 ) +GAME( 199?, neraidou, 0, neraidou, neraidou, skylncr_state, 0, ROT0, "bootleg", "Neraidoula (Fairy Butterfly)", 0 ) +GAME( 199?, sstar97, 0, sstar97, sstar97, skylncr_state, 0, ROT0, "Bordun International", "Super Star 97 / Ming Xing 97 (version V153B)", 0 ) +GAME( 1995, bdream97, 0, bdream97, skylncr, skylncr_state, 0, ROT0, "bootleg (KKK)", "Butterfly Dream 97 / Hudie Meng 97", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAME( 2000, sonikfig, 0, skylncr, sonikfig, skylncr_state, sonikfig, ROT0, "Z Games", "Sonik Fighter (version 02, encrypted)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/skyraid.cpp b/src/mame/drivers/skyraid.cpp index 7feae556898..1f9374c1a3d 100644 --- a/src/mame/drivers/skyraid.cpp +++ b/src/mame/drivers/skyraid.cpp @@ -218,7 +218,7 @@ static GFXDECODE_START( skyraid ) GFXDECODE_END -static MACHINE_CONFIG_START( skyraid, skyraid_state ) +static MACHINE_CONFIG_START( skyraid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 12096000 / 12) @@ -281,4 +281,4 @@ ROM_START( skyraid ) ROM_END -GAME( 1978, skyraid, 0, skyraid, skyraid, driver_device, 0, ORIENTATION_FLIP_Y, "Atari", "Sky Raider", MACHINE_IMPERFECT_COLORS ) +GAME( 1978, skyraid, 0, skyraid, skyraid, skyraid_state, 0, ORIENTATION_FLIP_Y, "Atari", "Sky Raider", MACHINE_IMPERFECT_COLORS ) diff --git a/src/mame/drivers/slapfght.cpp b/src/mame/drivers/slapfght.cpp index d2d41191d3b..c5c5bb753b6 100644 --- a/src/mame/drivers/slapfght.cpp +++ b/src/mame/drivers/slapfght.cpp @@ -925,7 +925,7 @@ GFXDECODE_END ***************************************************************************/ -static MACHINE_CONFIG_START( perfrman, slapfght_state ) +static MACHINE_CONFIG_START( perfrman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/4) // 4MHz? XTAL is known, divider is guessed @@ -948,7 +948,7 @@ static MACHINE_CONFIG_START( perfrman, slapfght_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(slapfght_state, screen_update_perfrman) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", perfrman) @@ -970,7 +970,7 @@ static MACHINE_CONFIG_START( perfrman, slapfght_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tigerh, slapfght_state ) +static MACHINE_CONFIG_START( tigerh ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_36MHz/6) // 6MHz @@ -995,7 +995,7 @@ static MACHINE_CONFIG_START( tigerh, slapfght_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8-1, 32*8-1-1) MCFG_SCREEN_UPDATE_DRIVER(slapfght_state, screen_update_slapfight) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", slapfght) @@ -1034,7 +1034,7 @@ static MACHINE_CONFIG_DERIVED( tigerhb2, tigerhb1 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( slapfigh, slapfght_state ) +static MACHINE_CONFIG_START( slapfigh ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_36MHz/6) // 6MHz @@ -1060,7 +1060,7 @@ static MACHINE_CONFIG_START( slapfigh, slapfght_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8-1, 32*8-1-1) MCFG_SCREEN_UPDATE_DRIVER(slapfght_state, screen_update_slapfight) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", slapfght) @@ -2017,14 +2017,14 @@ ROM_END /* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR, COMPANY, FULLNAME, FLAGS ) */ -GAME( 1985, perfrman, 0, perfrman, perfrman, driver_device, 0, ROT270, "Toaplan / Data East Corporation", "Performan (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, perfrmanu, perfrman, perfrman, perfrman, driver_device, 0, ROT270, "Toaplan / Data East USA", "Performan (US)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1985, tigerh, 0, tigerh, tigerh, driver_device, 0, ROT270, "Toaplan / Taito America Corp.", "Tiger Heli (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tigerhj, tigerh, tigerh, tigerh, driver_device, 0, ROT270, "Toaplan / Taito", "Tiger Heli (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tigerhb1, tigerh, tigerhb1, tigerh, driver_device, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tigerhb2, tigerh, tigerhb2, tigerh, driver_device, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tigerhb3, tigerh, tigerhb2, tigerh, driver_device, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, perfrman, 0, perfrman, perfrman, slapfght_state, 0, ROT270, "Toaplan / Data East Corporation", "Performan (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, perfrmanu, perfrman, perfrman, perfrman, slapfght_state, 0, ROT270, "Toaplan / Data East USA", "Performan (US)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1985, tigerh, 0, tigerh, tigerh, slapfght_state, 0, ROT270, "Toaplan / Taito America Corp.", "Tiger Heli (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tigerhj, tigerh, tigerh, tigerh, slapfght_state, 0, ROT270, "Toaplan / Taito", "Tiger Heli (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tigerhb1, tigerh, tigerhb1, tigerh, slapfght_state, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tigerhb2, tigerh, tigerhb2, tigerh, slapfght_state, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tigerhb3, tigerh, tigerhb2, tigerh, slapfght_state, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, alcon, 0, slapfigh, slapfigh, slapfght_state, slapfigh, ROT270, "Toaplan / Taito America Corp.", "Alcon (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) GAME( 1986, slapfigh, alcon, slapfigh, slapfigh, slapfght_state, slapfigh, ROT270, "Toaplan / Taito", "Slap Fight (Japan set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) diff --git a/src/mame/drivers/slapshot.cpp b/src/mame/drivers/slapshot.cpp index 2892cd7b4fa..3df6aee37e3 100644 --- a/src/mame/drivers/slapshot.cpp +++ b/src/mame/drivers/slapshot.cpp @@ -461,7 +461,7 @@ void slapshot_state::machine_start() } -static MACHINE_CONFIG_START( slapshot, slapshot_state ) +static MACHINE_CONFIG_START( slapshot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14346000) /* 28.6860 MHz / 2 ??? */ @@ -486,7 +486,7 @@ static MACHINE_CONFIG_START( slapshot, slapshot_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(slapshot_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(slapshot_state, screen_eof_taito_no_buffer) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(slapshot_state, screen_vblank_taito_no_buffer)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", slapshot) @@ -521,7 +521,7 @@ static MACHINE_CONFIG_START( slapshot, slapshot_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( opwolf3, slapshot_state ) +static MACHINE_CONFIG_START( opwolf3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14346000) /* 28.6860 MHz / 2 ??? */ @@ -546,7 +546,7 @@ static MACHINE_CONFIG_START( opwolf3, slapshot_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(slapshot_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(slapshot_state, screen_eof_taito_no_buffer) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(slapshot_state, screen_vblank_taito_no_buffer)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", slapshot) @@ -697,6 +697,6 @@ DRIVER_INIT_MEMBER(slapshot_state,slapshot) } } -GAME( 1994, slapshot, 0, slapshot, slapshot, slapshot_state, slapshot, ROT0, "Taito Corporation", "Slap Shot (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, opwolf3, 0, opwolf3, opwolf3, slapshot_state, slapshot, ROT0, "Taito Corporation Japan", "Operation Wolf 3 (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, opwolf3u, opwolf3, opwolf3, opwolf3, slapshot_state, slapshot, ROT0, "Taito America Corporation", "Operation Wolf 3 (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, slapshot, 0, slapshot, slapshot, slapshot_state, slapshot, ROT0, "Taito Corporation", "Slap Shot (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, opwolf3, 0, opwolf3, opwolf3, slapshot_state, slapshot, ROT0, "Taito Corporation Japan", "Operation Wolf 3 (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, opwolf3u, opwolf3, opwolf3, opwolf3, slapshot_state, slapshot, ROT0, "Taito America Corporation", "Operation Wolf 3 (US)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/slc1.cpp b/src/mame/drivers/slc1.cpp index 692d48e2779..b97e8c2ab07 100644 --- a/src/mame/drivers/slc1.cpp +++ b/src/mame/drivers/slc1.cpp @@ -252,7 +252,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( slc1, slc1_state ) +static MACHINE_CONFIG_START( slc1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2500000) MCFG_CPU_PROGRAM_MAP(slc1_map) @@ -283,5 +283,5 @@ ROM_START(slc1) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1989, slc1, 0, 0, slc1, slc1, driver_device, 0, "Dr. Dieter Scheuschner", "SLC-1" , 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP( 1989, slc1, 0, 0, slc1, slc1, slc1_state, 0, "Dr. Dieter Scheuschner", "SLC-1" , 0 ) diff --git a/src/mame/drivers/sleic.cpp b/src/mame/drivers/sleic.cpp index c64c9ed8437..537706fd8fe 100644 --- a/src/mame/drivers/sleic.cpp +++ b/src/mame/drivers/sleic.cpp @@ -64,7 +64,7 @@ DRIVER_INIT_MEMBER(sleic_state,sleic) { } -static MACHINE_CONFIG_START( sleic, sleic_state ) +static MACHINE_CONFIG_START( sleic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, 8000000) MCFG_CPU_PROGRAM_MAP(sleic_map) @@ -148,7 +148,7 @@ ROM_START(sleicpin) ROM_LOAD("sp02-1_1.rom", 0x00000, 0x80000, CRC(0e4851a0) SHA1(0692ee2df0b560e2013db9c03fd27c6eb12e618d)) ROM_END -GAME(1992, bikerace, 0, sleic, sleic, sleic_state, sleic, ROT0, "Sleic", "Bike Race", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, bikerace2, bikerace, sleic, sleic, sleic_state, sleic, ROT0, "Sleic", "Bike Race (2-ball play)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, sleicpin, 0, sleic, sleic, sleic_state, sleic, ROT0, "Sleic", "Sleic Pin Ball", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, iomoon, 0, sleic, sleic, sleic_state, sleic, ROT0, "Sleic", "Io Moon", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, bikerace, 0, sleic, sleic, sleic_state, sleic, ROT0, "Sleic", "Bike Race", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, bikerace2, bikerace, sleic, sleic, sleic_state, sleic, ROT0, "Sleic", "Bike Race (2-ball play)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, sleicpin, 0, sleic, sleic, sleic_state, sleic, ROT0, "Sleic", "Sleic Pin Ball", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, iomoon, 0, sleic, sleic, sleic_state, sleic, ROT0, "Sleic", "Io Moon", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/slicer.cpp b/src/mame/drivers/slicer.cpp index ce294cfcea4..62a9fbaed7e 100644 --- a/src/mame/drivers/slicer.cpp +++ b/src/mame/drivers/slicer.cpp @@ -17,16 +17,18 @@ 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 m_fdc; - required_device m_sasi; + driver_device(mconfig, type, tag), + m_fdc(*this, "fdc"), + m_sasi(*this, "sasi") + { + } DECLARE_WRITE8_MEMBER(sio_out_w); DECLARE_WRITE8_MEMBER(drive_sel_w); + +protected: + required_device m_fdc; + required_device m_sasi; }; WRITE8_MEMBER(slicer_state::sio_out_w) @@ -49,17 +51,17 @@ 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: + 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]; @@ -82,7 +84,7 @@ 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(0x0000, 0x007f) AM_DEVREADWRITE8("fdc", fd1797_device, 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 @@ -97,7 +99,7 @@ static SLOT_INTERFACE_START( slicer_floppies ) SLOT_INTERFACE("8dsdd", FLOPPY_8_DSDD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( slicer, slicer_state ) +static MACHINE_CONFIG_START( slicer ) MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(slicer_map) MCFG_CPU_IO_MAP(slicer_io) @@ -140,4 +142,4 @@ ROM_START( slicer ) 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", MACHINE_NO_SOUND) +COMP( 1983, slicer, 0, 0, slicer, 0, slicer_state, 0, "Slicer Computers", "Slicer", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/sliver.cpp b/src/mame/drivers/sliver.cpp index f56192b1537..2cbe6e48a5b 100644 --- a/src/mame/drivers/sliver.cpp +++ b/src/mame/drivers/sliver.cpp @@ -503,7 +503,7 @@ TIMER_DEVICE_CALLBACK_MEMBER ( sliver_state::obj_irq_cb ) m_maincpu->set_input_line(3, HOLD_LINE); } -static MACHINE_CONFIG_START( sliver, sliver_state ) +static MACHINE_CONFIG_START( sliver ) MCFG_CPU_ADD("maincpu", M68000, 12000000) MCFG_CPU_PROGRAM_MAP(sliver_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", sliver_state, irq4_line_hold) @@ -529,7 +529,7 @@ static MACHINE_CONFIG_START( sliver, sliver_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6) @@ -584,5 +584,5 @@ ROM_START( slivera ) ROM_END -GAME( 1996, sliver, 0, sliver, sliver, driver_device, 0, ROT0, "Hollow Corp", "Sliver (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, slivera, sliver, sliver, sliver, driver_device, 0, ROT0, "Hollow Corp", "Sliver (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sliver, 0, sliver, sliver, sliver_state, 0, ROT0, "Hollow Corp", "Sliver (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, slivera, sliver, sliver, sliver, sliver_state, 0, ROT0, "Hollow Corp", "Sliver (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/slotcarn.cpp b/src/mame/drivers/slotcarn.cpp index d9552c2a898..8d3427836e8 100644 --- a/src/mame/drivers/slotcarn.cpp +++ b/src/mame/drivers/slotcarn.cpp @@ -535,7 +535,7 @@ void slotcarn_state::machine_start() * Machine Driver * ***********************************/ -static MACHINE_CONFIG_START( slotcarn, slotcarn_state ) +static MACHINE_CONFIG_START( slotcarn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) // 2.5 Mhz? @@ -699,8 +699,8 @@ ROM_END /********************************************* * Game Drivers * -********************************************** +**********************************************/ - YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1985, slotcarn, 0, slotcarn, slotcarn, driver_device, 0, ROT0, "Wing Co., Ltd.", "Slot Carnival", MACHINE_NOT_WORKING ) -GAME( 1985, spielbud, 0, slotcarn, spielbud, driver_device, 0, ROT0, "ADP", "Spiel Bude (German)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1985, slotcarn, 0, slotcarn, slotcarn, slotcarn_state, 0, ROT0, "Wing Co., Ltd.", "Slot Carnival", MACHINE_NOT_WORKING ) +GAME( 1985, spielbud, 0, slotcarn, spielbud, slotcarn_state, 0, ROT0, "ADP", "Spiel Bude (German)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/sm1800.cpp b/src/mame/drivers/sm1800.cpp index c753cd46f16..97af4a198d0 100644 --- a/src/mame/drivers/sm1800.cpp +++ b/src/mame/drivers/sm1800.cpp @@ -153,7 +153,7 @@ static GFXDECODE_START( sm1800 ) GFXDECODE_END -static MACHINE_CONFIG_START( sm1800, sm1800_state ) +static MACHINE_CONFIG_START( sm1800 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(sm1800_mem) @@ -198,5 +198,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( ????, sm1800, 0, 0, sm1800, sm1800, driver_device, 0, "", "SM1800", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( ????, sm1800, 0, 0, sm1800, sm1800, sm1800_state, 0, "", "SM1800", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/sm7238.cpp b/src/mame/drivers/sm7238.cpp index 4382341dbdf..23f055a37a3 100644 --- a/src/mame/drivers/sm7238.cpp +++ b/src/mame/drivers/sm7238.cpp @@ -83,7 +83,6 @@ public: DECLARE_WRITE8_MEMBER(control_w); DECLARE_WRITE8_MEMBER(text_control_w); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); private: void text_memory_clear(); @@ -307,11 +306,6 @@ uint32_t sm7238_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap return 0; } -void sm7238_state::screen_eof(screen_device &screen, bool state) -{ - m_pic8259->ir2_w(state); -} - /* F4 Character Displayer */ static const gfx_layout sm7238_charlayout = @@ -338,7 +332,7 @@ PALETTE_INIT_MEMBER(sm7238_state, sm7238) palette.set_pen_color(2, 0x00, 0xff, 0x00); // highlight } -static MACHINE_CONFIG_START( sm7238, sm7238_state ) +static MACHINE_CONFIG_START( sm7238 ) MCFG_CPU_ADD("maincpu", I8080, XTAL_16_5888MHz/9) MCFG_CPU_PROGRAM_MAP(sm7238_mem) MCFG_CPU_IO_MAP(sm7238_io) @@ -357,7 +351,7 @@ static MACHINE_CONFIG_START( sm7238, sm7238_state ) KSM_TOTAL_VERT, KSM_VERT_START, KSM_VERT_START+KSM_DISP_VERT); #endif MCFG_SCREEN_UPDATE_DRIVER(sm7238_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(sm7238_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("pic8259", pic8259_device, ir2_w)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 3) @@ -428,5 +422,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, sm7238, 0, 0, sm7238, 0, driver_device, 0, "USSR", "SM 7238", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_KEYBOARD) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1989, sm7238, 0, 0, sm7238, 0, sm7238_state, 0, "USSR", "SM 7238", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_KEYBOARD) diff --git a/src/mame/drivers/smc777.cpp b/src/mame/drivers/smc777.cpp index 1f62cd90fba..d1d4634bc46 100644 --- a/src/mame/drivers/smc777.cpp +++ b/src/mame/drivers/smc777.cpp @@ -54,15 +54,15 @@ class smc777_state : public driver_device { public: smc777_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_crtc(*this, "crtc"), - m_fdc(*this, "fdc"), - m_floppy0(*this, "fdc:0"), - m_floppy1(*this, "fdc:1"), - m_beeper(*this, "beeper"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_crtc(*this, "crtc") + , m_fdc(*this, "fdc") + , m_floppy0(*this, "fdc:0") + , m_floppy1(*this, "fdc:1") + , m_beeper(*this, "beeper") + , m_gfxdecode(*this, "gfxdecode") + , m_palette(*this, "palette") { } DECLARE_WRITE8_MEMBER(mc6845_w); @@ -107,7 +107,7 @@ protected: private: required_device m_maincpu; required_device m_crtc; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_beeper; @@ -963,7 +963,7 @@ static SLOT_INTERFACE_START( smc777_floppies ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( smc777, smc777_state ) +static MACHINE_CONFIG_START( smc777 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, MASTER_CLOCK) MCFG_CPU_PROGRAM_MAP(smc777_mem) @@ -1026,5 +1026,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, smc777, 0, 0, smc777, smc777, driver_device, 0, "Sony", "SMC-777", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, smc777, 0, 0, smc777, smc777, smc777_state, 0, "Sony", "SMC-777", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/sms.cpp b/src/mame/drivers/sms.cpp index 130bffc78cd..70aae875a66 100644 --- a/src/mame/drivers/sms.cpp +++ b/src/mame/drivers/sms.cpp @@ -486,7 +486,7 @@ static INPUT_PORTS_START( gg ) INPUT_PORTS_END -static MACHINE_CONFIG_START( sms_base, sms_state ) +static MACHINE_CONFIG_START( sms_base ) MCFG_MACHINE_START_OVERRIDE(sms_state,sms) MCFG_MACHINE_RESET_OVERRIDE(sms_state,sms) @@ -537,33 +537,33 @@ MACHINE_CONFIG_END #define MCFG_SCREEN_SMS_PAL_RAW_PARAMS(_pixelclock) \ MCFG_SCREEN_RAW_PARAMS(_pixelclock, \ - SEGA315_5124_WIDTH, \ - SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH - 2, \ - SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256 + 10, \ - SEGA315_5124_HEIGHT_PAL, \ - SEGA315_5124_TBORDER_START + SEGA315_5124_PAL_240_TBORDER_HEIGHT, \ - SEGA315_5124_TBORDER_START + SEGA315_5124_PAL_240_TBORDER_HEIGHT + 240) \ - MCFG_SCREEN_REFRESH_RATE((double) _pixelclock / (SEGA315_5124_WIDTH * SEGA315_5124_HEIGHT_PAL)) + sega315_5124_device::WIDTH, \ + sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH - 2, \ + sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256 + 10, \ + sega315_5124_device::HEIGHT_PAL, \ + sega315_5124_device::TBORDER_START + sega315_5124_device::PAL_240_TBORDER_HEIGHT, \ + sega315_5124_device::TBORDER_START + sega315_5124_device::PAL_240_TBORDER_HEIGHT + 240) \ + MCFG_SCREEN_REFRESH_RATE((double) _pixelclock / (sega315_5124_device::WIDTH * sega315_5124_device::HEIGHT_PAL)) #define MCFG_SCREEN_SMS_NTSC_RAW_PARAMS(_pixelclock) \ MCFG_SCREEN_RAW_PARAMS(_pixelclock, \ - SEGA315_5124_WIDTH, \ - SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH - 2, \ - SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256 + 10, \ - SEGA315_5124_HEIGHT_NTSC, \ - SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT, \ - SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT + 224) \ - MCFG_SCREEN_REFRESH_RATE((double) _pixelclock / (SEGA315_5124_WIDTH * SEGA315_5124_HEIGHT_NTSC)) + sega315_5124_device::WIDTH, \ + sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH - 2, \ + sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256 + 10, \ + sega315_5124_device::HEIGHT_NTSC, \ + sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, \ + sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224) \ + MCFG_SCREEN_REFRESH_RATE((double) _pixelclock / (sega315_5124_device::WIDTH * sega315_5124_device::HEIGHT_NTSC)) #define MCFG_SCREEN_GG_RAW_PARAMS(_pixelclock) \ MCFG_SCREEN_RAW_PARAMS(_pixelclock, \ - SEGA315_5124_WIDTH, \ - SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 6*8, \ - SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 26*8, \ - SEGA315_5124_HEIGHT_NTSC, \ - SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_192_TBORDER_HEIGHT + 3*8, \ - SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_192_TBORDER_HEIGHT + 21*8 ) \ - MCFG_SCREEN_REFRESH_RATE((double) _pixelclock / (SEGA315_5124_WIDTH * SEGA315_5124_HEIGHT_NTSC)) + sega315_5124_device::WIDTH, \ + sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 6*8, \ + sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 26*8, \ + sega315_5124_device::HEIGHT_NTSC, \ + sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_192_TBORDER_HEIGHT + 3*8, \ + sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_192_TBORDER_HEIGHT + 21*8 ) \ + MCFG_SCREEN_REFRESH_RATE((double) _pixelclock / (sega315_5124_device::WIDTH * sega315_5124_device::HEIGHT_NTSC)) static MACHINE_CONFIG_DERIVED( sms2_ntsc, sms_ntsc_base ) @@ -598,7 +598,7 @@ static MACHINE_CONFIG_DERIVED( sms1_ntsc, sms_ntsc_base ) MCFG_SCREEN_SMS_NTSC_RAW_PARAMS(XTAL_10_738635MHz/2) MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms1) - MCFG_SCREEN_VBLANK_DRIVER(sms_state, screen_vblank_sms1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sms_state, screen_vblank_sms1)) MCFG_DEFAULT_LAYOUT(layout_sms1) @@ -616,7 +616,7 @@ static MACHINE_CONFIG_DERIVED( sms1_ntsc, sms_ntsc_base ) MCFG_SMS_EXPANSION_ADD("smsexp", sms_expansion_devices, nullptr) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( sms_sdisp, sms1_ntsc, smssdisp_state ) +static MACHINE_CONFIG_DERIVED( sms_sdisp, sms1_ntsc ) MCFG_DEVICE_MODIFY("sms_vdp") MCFG_SEGA315_5124_INT_CB(WRITELINE(smssdisp_state, sms_store_int_callback)) @@ -708,7 +708,7 @@ static MACHINE_CONFIG_DERIVED( sms1_pal, sms_pal_base ) MCFG_SCREEN_SMS_PAL_RAW_PARAMS(MASTER_CLOCK_PAL/10) MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms1) - MCFG_SCREEN_VBLANK_DRIVER(sms_state, screen_vblank_sms1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sms_state, screen_vblank_sms1)) MCFG_DEFAULT_LAYOUT(layout_sms1) @@ -772,7 +772,7 @@ static MACHINE_CONFIG_DERIVED( sms1_paln, sms_paln_base ) MCFG_SCREEN_SMS_PAL_RAW_PARAMS(MASTER_CLOCK_PALN/2) MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms1) - MCFG_SCREEN_VBLANK_DRIVER(sms_state, screen_vblank_sms1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sms_state, screen_vblank_sms1)) MCFG_DEFAULT_LAYOUT(layout_sms1) @@ -838,7 +838,7 @@ static MACHINE_CONFIG_DERIVED( sms1_br, sms_br_base ) MCFG_SCREEN_SMS_NTSC_RAW_PARAMS(MASTER_CLOCK_PALM/2) MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms1) - MCFG_SCREEN_VBLANK_DRIVER(sms_state, screen_vblank_sms1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sms_state, screen_vblank_sms1)) MCFG_DEFAULT_LAYOUT(layout_sms1) @@ -917,7 +917,7 @@ static MACHINE_CONFIG_DERIVED( sg1000m3, sms1_ntsc ) MCFG_SMS_CONTROL_PORT_TH_INPUT_HANDLER(NOOP) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gamegear, sms_state ) +static MACHINE_CONFIG_START( gamegear ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK_GG/9) MCFG_CPU_PROGRAM_MAP(sms_mem) diff --git a/src/mame/drivers/sms_bootleg.cpp b/src/mame/drivers/sms_bootleg.cpp index 7fa9a6f3412..5d83d8145d6 100644 --- a/src/mame/drivers/sms_bootleg.cpp +++ b/src/mame/drivers/sms_bootleg.cpp @@ -159,7 +159,7 @@ ADDRESS_MAP_END -static MACHINE_CONFIG_START( sms_supergame, smsbootleg_state ) +static MACHINE_CONFIG_START( sms_supergame ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_10_738635MHz/3) MCFG_CPU_PROGRAM_MAP(sms_supergame_map) @@ -178,9 +178,9 @@ static MACHINE_CONFIG_START( sms_supergame, smsbootleg_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_10_738635MHz/2, \ - SEGA315_5124_WIDTH , SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH - 2, SEGA315_5124_LBORDER_START + SEGA315_5124_LBORDER_WIDTH + 256 + 10, \ - SEGA315_5124_HEIGHT_NTSC, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT, SEGA315_5124_TBORDER_START + SEGA315_5124_NTSC_224_TBORDER_HEIGHT + 224) - MCFG_SCREEN_REFRESH_RATE((double) XTAL_10_738635MHz/2 / (SEGA315_5124_WIDTH * SEGA315_5124_HEIGHT_NTSC)) + sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH - 2, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256 + 10, \ + sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224) + MCFG_SCREEN_REFRESH_RATE((double) XTAL_10_738635MHz/2 / (sega315_5124_device::WIDTH * sega315_5124_device::HEIGHT_NTSC)) MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms) MCFG_DEVICE_ADD("sms_vdp", SEGA315_5246, 0) diff --git a/src/mame/drivers/smsmcorp.cpp b/src/mame/drivers/smsmcorp.cpp index ffcf08257a9..7eb2ced7cb8 100644 --- a/src/mame/drivers/smsmcorp.cpp +++ b/src/mame/drivers/smsmcorp.cpp @@ -533,7 +533,7 @@ void smsmfg_state::machine_reset() m_communication_port_status = 0; } -static MACHINE_CONFIG_START( sms, smsmfg_state ) +static MACHINE_CONFIG_START( sms ) MCFG_CPU_ADD("maincpu", I8088, XTAL_24MHz/8) MCFG_CPU_PROGRAM_MAP(sms_map) @@ -909,7 +909,7 @@ ROM_START( secondch ) ROM_RELOAD( 0x1000, 0x1000 ) ROM_END -GAME( 1984, trvhang, 0, sms, sms, driver_device, 0, ROT0, "SMS Manufacturing Corp.", "Trivia Hangup (question set 1)", MACHINE_SUPPORTS_SAVE ) /* Version Trivia-1-050185 */ -GAME( 1984, trvhanga, 0, sms, sms, driver_device, 0, ROT0, "SMS Manufacturing Corp.", "Trivia Hangup (question set 2)", MACHINE_NOT_WORKING ) /* Version Trivia-2-011586 */ -GAME( 1985, sureshot, 0, sureshot, sms, driver_device, 0, ROT0, "SMS Manufacturing Corp.", "Sure Shot", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, secondch, 0, sureshot, sms, driver_device, 0, ROT0, "SMS Manufacturing Corp.", "Second Chance", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, trvhang, 0, sms, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Trivia Hangup (question set 1)", MACHINE_SUPPORTS_SAVE ) /* Version Trivia-1-050185 */ +GAME( 1984, trvhanga, 0, sms, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Trivia Hangup (question set 2)", MACHINE_NOT_WORKING ) /* Version Trivia-2-011586 */ +GAME( 1985, sureshot, 0, sureshot, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Sure Shot", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, secondch, 0, sureshot, sms, smsmfg_state, 0, ROT0, "SMS Manufacturing Corp.", "Second Chance", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/snes.cpp b/src/mame/drivers/snes.cpp index f4b37f7b05e..975de6f953e 100644 --- a/src/mame/drivers/snes.cpp +++ b/src/mame/drivers/snes.cpp @@ -1167,8 +1167,8 @@ SNESCTRL_GUNLATCH_CB(snes_console_state::gun_latch_cb) if (y < 0) y = 0; - if (y > (m_ppu->m_beam.last_visible_line - 1)) - y = m_ppu->m_beam.last_visible_line - 1; + if (y > (m_ppu->last_visible_line() - 1)) + y = m_ppu->last_visible_line() - 1; // m_ppu->set_latch_hv(x, y); // it would be more accurate to write twice to WRIO register, first with bit7 = 0 and then with bit7 = 1 m_ppu->set_latch_hv(m_ppu->current_x(), m_ppu->current_y()); @@ -1178,7 +1178,7 @@ SNESCTRL_ONSCREEN_CB(snes_console_state::onscreen_cb) { // these are the theoretical boundaries, but we currently are always onscreen due to the // way IPT_LIGHTGUNs work... investigate more on this! - if (x < 0 || x >= SNES_SCR_WIDTH || y < 0 || y >= m_ppu->m_beam.last_visible_line) + if (x < 0 || x >= SNES_SCR_WIDTH || y < 0 || y >= m_ppu->last_visible_line()) return false; else return true; @@ -1325,7 +1325,7 @@ void snes_console_state::machine_reset() } -static MACHINE_CONFIG_START( snes, snes_console_state ) +static MACHINE_CONFIG_START( snes ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", _5A22, MCLK_NTSC) /* 2.68 MHz, also 3.58 MHz */ @@ -1395,6 +1395,6 @@ ROM_END * *************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1989, snes, 0, 0, snes, snes, driver_device, 0, "Nintendo", "Super Nintendo Entertainment System / Super Famicom (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -CONS( 1991, snespal, snes, 0, snespal, snes, driver_device, 0, "Nintendo", "Super Nintendo Entertainment System (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1989, snes, 0, 0, snes, snes, snes_console_state, 0, "Nintendo", "Super Nintendo Entertainment System / Super Famicom (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 1991, snespal, snes, 0, snespal, snes, snes_console_state, 0, "Nintendo", "Super Nintendo Entertainment System (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/snesb.cpp b/src/mame/drivers/snesb.cpp index 9180ad2f9a0..8bf30ffffad 100644 --- a/src/mame/drivers/snesb.cpp +++ b/src/mame/drivers/snesb.cpp @@ -683,7 +683,7 @@ static INPUT_PORTS_START( endless ) INPUT_PORTS_END -static MACHINE_CONFIG_START( kinstb, snesb_state ) +static MACHINE_CONFIG_START( kinstb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", _5A22, 3580000*6) /* 2.68Mhz, also 3.58Mhz */ @@ -1137,10 +1137,10 @@ ROM_END -GAME( 199?, kinstb, 0, kinstb, kinstb, snesb_state, kinstb, ROT0, "bootleg", "Killer Instinct (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 199?, mk3snes, 0, mk3snes, kinstb, snesb_state, mk3snes, ROT0, "bootleg", "Mortal Kombat 3 (SNES bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 199?, kinstb, 0, kinstb, kinstb, snesb_state, kinstb, ROT0, "bootleg", "Killer Instinct (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 199?, mk3snes, 0, mk3snes, kinstb, snesb_state, mk3snes, ROT0, "bootleg", "Mortal Kombat 3 (SNES bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, ffight2b, 0, ffight2b, ffight2b, snesb_state, ffight2b, ROT0, "bootleg", "Final Fight 2 (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, iron, 0, kinstb, iron, snesb_state, iron, ROT0, "bootleg", "Iron (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, denseib, 0, kinstb, denseib, snesb_state, denseib, ROT0, "bootleg", "Ghost Chaser Densei (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, iron, 0, kinstb, iron, snesb_state, iron, ROT0, "bootleg", "Iron (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, denseib, 0, kinstb, denseib, snesb_state, denseib, ROT0, "bootleg", "Ghost Chaser Densei (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, sblast2b, 0, kinstb, sblast2b, snesb_state, sblast2b, ROT0, "bootleg", "Sonic Blast Man 2 Special Turbo (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS) -GAME( 1996, endless, 0, kinstb, endless, snesb_state, endless, ROT0, "bootleg", "Gundam Wing: Endless Duel (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, endless, 0, kinstb, endless, snesb_state, endless, ROT0, "bootleg", "Gundam Wing: Endless Duel (SNES bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp index 1ba2d83a3e4..36e7e3d05a3 100644 --- a/src/mame/drivers/snk.cpp +++ b/src/mame/drivers/snk.cpp @@ -3608,7 +3608,7 @@ GFXDECODE_END /**********************************************************************/ -static MACHINE_CONFIG_START( marvins, snk_state ) +static MACHINE_CONFIG_START( marvins ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3360000) /* 3.36 MHz */ @@ -3680,7 +3680,7 @@ static MACHINE_CONFIG_DERIVED( madcrush, marvins ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jcross, snk_state ) +static MACHINE_CONFIG_START( jcross ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3350000) /* NOT verified */ @@ -3763,7 +3763,7 @@ static MACHINE_CONFIG_DERIVED( hal21, jcross ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tnk3, snk_state ) +static MACHINE_CONFIG_START( tnk3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_4MHz/4) /* verified on pcb */ @@ -3855,7 +3855,7 @@ static MACHINE_CONFIG_DERIVED( fitegolf2, fitegolf ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ikari, snk_state ) +static MACHINE_CONFIG_START( ikari ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_4MHz/4) /* verified on pcb */ @@ -3914,7 +3914,7 @@ static MACHINE_CONFIG_DERIVED( victroad, ikari ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bermudat, snk_state ) +static MACHINE_CONFIG_START( bermudat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) /* verified on pcb */ @@ -4012,7 +4012,7 @@ static MACHINE_CONFIG_DERIVED( choppera, chopper1 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tdfever, snk_state ) +static MACHINE_CONFIG_START( tdfever ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) @@ -6395,57 +6395,57 @@ DRIVER_INIT_MEMBER(snk_state,countryc) -GAME( 1983, marvins, 0, marvins, marvins, driver_device, 0, ROT270, "SNK", "Marvin's Maze", 0 ) -GAME( 1984, vangrd2, 0, vangrd2, vangrd2, driver_device, 0, ROT270, "SNK", "Vanguard II", 0 ) -GAME( 1984, madcrash, 0, vangrd2, madcrash, driver_device, 0, ROT0, "SNK", "Mad Crasher", 0 ) -GAME( 1984, madcrush, madcrash, madcrush, madcrash, driver_device, 0, ROT0, "SNK", "Mad Crusher (Japan)", 0 ) - -GAME( 1984, jcross, 0, jcross, jcross, driver_device, 0, ROT270, "SNK", "Jumping Cross (set 1)", 0 ) -GAME( 1984, jcrossa, jcross, jcross, jcross, driver_device, 0, ROT270, "SNK", "Jumping Cross (set 2)", 0 ) -GAME( 1984, sgladiat, 0, sgladiat, sgladiat, driver_device, 0, ROT0, "SNK", "Gladiator 1984", 0 ) -GAME( 1985, hal21, 0, hal21, hal21, driver_device, 0, ROT270, "SNK", "HAL21", 0 ) -GAME( 1985, hal21j, hal21, hal21, hal21, driver_device, 0, ROT270, "SNK", "HAL21 (Japan)", 0 ) - -GAME( 1985, aso, 0, aso, aso, driver_device, 0, ROT270, "SNK", "ASO - Armored Scrum Object", 0 ) -GAME( 1985, alphamis, aso, aso, alphamis, driver_device, 0, ROT270, "SNK", "Alpha Mission", 0 ) -GAME( 1985, arian, aso, aso, alphamis, driver_device, 0, ROT270, "SNK", "Arian Mission", 0 ) -GAME( 1985, tnk3, 0, tnk3, tnk3, driver_device, 0, ROT270, "SNK", "T.N.K III (US)", 0 ) -GAME( 1985, tnk3j, tnk3, tnk3, tnk3, driver_device, 0, ROT270, "SNK", "T.A.N.K (Japan)", 0 ) -GAME( 1986, athena, 0, athena, athena, driver_device, 0, ROT0, "SNK", "Athena", 0 ) -GAME( 1988, fitegolf, 0, fitegolf, fitegolf, driver_device, 0, ROT0, "SNK", "Fighting Golf (World?)", 0 ) -GAME( 1988, fitegolfu,fitegolf, fitegolf, fitegolfu, driver_device,0, ROT0, "SNK", "Fighting Golf (US)", 0 ) -GAME( 1988, fitegolf2,fitegolf, fitegolf2,fitegolfu, driver_device,0, ROT0, "SNK", "Fighting Golf (US, Ver 2)", 0 ) -GAME( 1988, countryc, 0, fitegolf, countryc, snk_state, countryc, ROT0, "SNK", "Country Club", 0 ) - -GAME( 1986, ikari, 0, ikari, ikari, driver_device, 0, ROT270, "SNK", "Ikari Warriors (US JAMMA)", 0 ) // distributed by Tradewest(?) -GAME( 1986, ikaria, ikari, ikari, ikaria, driver_device, 0, ROT270, "SNK", "Ikari Warriors (US)", 0 ) // distributed by Tradewest(?) -GAME( 1986, ikarinc, ikari, ikari, ikarinc, driver_device, 0, ROT270, "SNK", "Ikari Warriors (US No Continues)", 0 ) // distributed by Tradewest(?) -GAME( 1986, ikarijp, ikari, ikari, ikarinc, driver_device, 0, ROT270, "SNK", "Ikari (Japan No Continues)", 0 ) -GAME( 1986, ikarijpb, ikari, ikari, ikarijpb, driver_device, 0, ROT270, "bootleg", "Ikari (Joystick hack bootleg)", 0 ) -GAME( 1986, ikariram, ikari, ikari, ikarijpb, driver_device, 0, ROT270, "bootleg", "Rambo 3 (bootleg of Ikari, Joystick hack)", 0 ) -GAME( 1986, victroad, 0, victroad, victroad, driver_device, 0, ROT270, "SNK", "Victory Road", 0 ) -GAME( 1986, dogosoke, victroad, victroad, victroad, driver_device, 0, ROT270, "SNK", "Dogou Souken", 0 ) -GAME( 1986, dogosokb, victroad, victroad, dogosokb, driver_device, 0, ROT270, "bootleg", "Dogou Souken (Joystick hack bootleg)", 0 ) - -GAME( 1987, bermudat, 0, bermudat, bermudat, driver_device, 0, ROT270, "SNK", "Bermuda Triangle (World?)", 0 ) -GAME( 1987, bermudatj,bermudat, bermudat, bermudat, driver_device, 0, ROT270, "SNK", "Bermuda Triangle (Japan)", 0 ) -GAME( 1987, worldwar, 0, bermudat, worldwar, driver_device, 0, ROT270, "SNK", "World Wars (World?)", 0 ) -GAME( 1987, bermudata,worldwar, bermudat, bermudaa, driver_device, 0, ROT270, "SNK", "Bermuda Triangle (World Wars) (US)", 0 ) -GAME( 1987, psychos, 0, psychos, psychos, driver_device, 0, ROT0, "SNK", "Psycho Soldier (US)", 0 ) -GAME( 1987, psychosj, psychos, psychos, psychos, driver_device, 0, ROT0, "SNK", "Psycho Soldier (Japan)", 0 ) -GAME( 1987, gwar, 0, gwar, gwar, driver_device, 0, ROT270, "SNK", "Guerrilla War (US)", 0 ) -GAME( 1987, gwarj, gwar, gwar, gwar, driver_device, 0, ROT270, "SNK", "Guevara (Japan)", 0 ) -GAME( 1987, gwara, gwar, gwara, gwar, driver_device, 0, ROT270, "SNK", "Guerrilla War (Version 1)", 0 ) -GAME( 1987, gwarb, gwar, gwar, gwarb, driver_device, 0, ROT270, "bootleg", "Guerrilla War (Joystick hack bootleg)", 0 ) -GAME( 1988, chopper, 0, chopper1, chopper, driver_device, 0, ROT270, "SNK", "Chopper I (US set 1)", 0 ) -GAME( 1988, choppera, chopper, choppera, choppera, driver_device, 0, ROT270, "SNK", "Chopper I (US set 2)", 0 ) -GAME( 1988, chopperb, chopper, chopper1, chopper, driver_device, 0, ROT270, "SNK", "Chopper I (US set 3)", 0 ) -GAME( 1988, legofair, chopper, chopper1, chopper, driver_device, 0, ROT270, "SNK", "Koukuu Kihei Monogatari - The Legend of Air Cavalry (Japan)", 0 ) - -GAME( 1987, tdfever, 0, tdfever, tdfever, driver_device, 0, ROT90, "SNK", "TouchDown Fever (US)", 0 ) -GAME( 1987, tdfeverj, tdfever, tdfever, tdfever, driver_device, 0, ROT90, "SNK", "TouchDown Fever (Japan)", 0 ) -GAME( 1988, tdfever2, tdfever, tdfever2, tdfever, driver_device, 0, ROT90, "SNK", "TouchDown Fever 2", 0 ) /* upgrade kit for Touchdown Fever */ -GAME( 1988, fsoccer, 0, tdfever2, fsoccer, driver_device, 0, ROT0, "SNK", "Fighting Soccer (version 4)", 0 ) -GAME( 1988, fsoccerj, fsoccer, tdfever2, fsoccer, driver_device, 0, ROT0, "SNK", "Fighting Soccer (Japan)", 0 ) -GAME( 1988, fsoccerb, fsoccer, tdfever2, fsoccerb, driver_device, 0, ROT0, "bootleg", "Fighting Soccer (Joystick hack bootleg)", 0 ) -GAME( 1988, fsoccerba,fsoccer, tdfever2, fsoccerb, driver_device, 0, ROT0, "bootleg", "Fighting Soccer (Joystick hack bootleg, alt)", 0 ) +GAME( 1983, marvins, 0, marvins, marvins, snk_state, 0, ROT270, "SNK", "Marvin's Maze", 0 ) +GAME( 1984, vangrd2, 0, vangrd2, vangrd2, snk_state, 0, ROT270, "SNK", "Vanguard II", 0 ) +GAME( 1984, madcrash, 0, vangrd2, madcrash, snk_state, 0, ROT0, "SNK", "Mad Crasher", 0 ) +GAME( 1984, madcrush, madcrash, madcrush, madcrash, snk_state, 0, ROT0, "SNK", "Mad Crusher (Japan)", 0 ) + +GAME( 1984, jcross, 0, jcross, jcross, snk_state, 0, ROT270, "SNK", "Jumping Cross (set 1)", 0 ) +GAME( 1984, jcrossa, jcross, jcross, jcross, snk_state, 0, ROT270, "SNK", "Jumping Cross (set 2)", 0 ) +GAME( 1984, sgladiat, 0, sgladiat, sgladiat, snk_state, 0, ROT0, "SNK", "Gladiator 1984", 0 ) +GAME( 1985, hal21, 0, hal21, hal21, snk_state, 0, ROT270, "SNK", "HAL21", 0 ) +GAME( 1985, hal21j, hal21, hal21, hal21, snk_state, 0, ROT270, "SNK", "HAL21 (Japan)", 0 ) + +GAME( 1985, aso, 0, aso, aso, snk_state, 0, ROT270, "SNK", "ASO - Armored Scrum Object", 0 ) +GAME( 1985, alphamis, aso, aso, alphamis, snk_state, 0, ROT270, "SNK", "Alpha Mission", 0 ) +GAME( 1985, arian, aso, aso, alphamis, snk_state, 0, ROT270, "SNK", "Arian Mission", 0 ) +GAME( 1985, tnk3, 0, tnk3, tnk3, snk_state, 0, ROT270, "SNK", "T.N.K III (US)", 0 ) +GAME( 1985, tnk3j, tnk3, tnk3, tnk3, snk_state, 0, ROT270, "SNK", "T.A.N.K (Japan)", 0 ) +GAME( 1986, athena, 0, athena, athena, snk_state, 0, ROT0, "SNK", "Athena", 0 ) +GAME( 1988, fitegolf, 0, fitegolf, fitegolf, snk_state, 0, ROT0, "SNK", "Fighting Golf (World?)", 0 ) +GAME( 1988, fitegolfu, fitegolf, fitegolf, fitegolfu, snk_state, 0, ROT0, "SNK", "Fighting Golf (US)", 0 ) +GAME( 1988, fitegolf2, fitegolf, fitegolf2, fitegolfu, snk_state, 0, ROT0, "SNK", "Fighting Golf (US, Ver 2)", 0 ) +GAME( 1988, countryc, 0, fitegolf, countryc, snk_state, countryc, ROT0, "SNK", "Country Club", 0 ) + +GAME( 1986, ikari, 0, ikari, ikari, snk_state, 0, ROT270, "SNK", "Ikari Warriors (US JAMMA)", 0 ) // distributed by Tradewest(?) +GAME( 1986, ikaria, ikari, ikari, ikaria, snk_state, 0, ROT270, "SNK", "Ikari Warriors (US)", 0 ) // distributed by Tradewest(?) +GAME( 1986, ikarinc, ikari, ikari, ikarinc, snk_state, 0, ROT270, "SNK", "Ikari Warriors (US No Continues)", 0 ) // distributed by Tradewest(?) +GAME( 1986, ikarijp, ikari, ikari, ikarinc, snk_state, 0, ROT270, "SNK", "Ikari (Japan No Continues)", 0 ) +GAME( 1986, ikarijpb, ikari, ikari, ikarijpb, snk_state, 0, ROT270, "bootleg", "Ikari (Joystick hack bootleg)", 0 ) +GAME( 1986, ikariram, ikari, ikari, ikarijpb, snk_state, 0, ROT270, "bootleg", "Rambo 3 (bootleg of Ikari, Joystick hack)", 0 ) +GAME( 1986, victroad, 0, victroad, victroad, snk_state, 0, ROT270, "SNK", "Victory Road", 0 ) +GAME( 1986, dogosoke, victroad, victroad, victroad, snk_state, 0, ROT270, "SNK", "Dogou Souken", 0 ) +GAME( 1986, dogosokb, victroad, victroad, dogosokb, snk_state, 0, ROT270, "bootleg", "Dogou Souken (Joystick hack bootleg)", 0 ) + +GAME( 1987, bermudat, 0, bermudat, bermudat, snk_state, 0, ROT270, "SNK", "Bermuda Triangle (World?)", 0 ) +GAME( 1987, bermudatj, bermudat, bermudat, bermudat, snk_state, 0, ROT270, "SNK", "Bermuda Triangle (Japan)", 0 ) +GAME( 1987, worldwar, 0, bermudat, worldwar, snk_state, 0, ROT270, "SNK", "World Wars (World?)", 0 ) +GAME( 1987, bermudata, worldwar, bermudat, bermudaa, snk_state, 0, ROT270, "SNK", "Bermuda Triangle (World Wars) (US)", 0 ) +GAME( 1987, psychos, 0, psychos, psychos, snk_state, 0, ROT0, "SNK", "Psycho Soldier (US)", 0 ) +GAME( 1987, psychosj, psychos, psychos, psychos, snk_state, 0, ROT0, "SNK", "Psycho Soldier (Japan)", 0 ) +GAME( 1987, gwar, 0, gwar, gwar, snk_state, 0, ROT270, "SNK", "Guerrilla War (US)", 0 ) +GAME( 1987, gwarj, gwar, gwar, gwar, snk_state, 0, ROT270, "SNK", "Guevara (Japan)", 0 ) +GAME( 1987, gwara, gwar, gwara, gwar, snk_state, 0, ROT270, "SNK", "Guerrilla War (Version 1)", 0 ) +GAME( 1987, gwarb, gwar, gwar, gwarb, snk_state, 0, ROT270, "bootleg", "Guerrilla War (Joystick hack bootleg)", 0 ) +GAME( 1988, chopper, 0, chopper1, chopper, snk_state, 0, ROT270, "SNK", "Chopper I (US set 1)", 0 ) +GAME( 1988, choppera, chopper, choppera, choppera, snk_state, 0, ROT270, "SNK", "Chopper I (US set 2)", 0 ) +GAME( 1988, chopperb, chopper, chopper1, chopper, snk_state, 0, ROT270, "SNK", "Chopper I (US set 3)", 0 ) +GAME( 1988, legofair, chopper, chopper1, chopper, snk_state, 0, ROT270, "SNK", "Koukuu Kihei Monogatari - The Legend of Air Cavalry (Japan)", 0 ) + +GAME( 1987, tdfever, 0, tdfever, tdfever, snk_state, 0, ROT90, "SNK", "TouchDown Fever (US)", 0 ) +GAME( 1987, tdfeverj, tdfever, tdfever, tdfever, snk_state, 0, ROT90, "SNK", "TouchDown Fever (Japan)", 0 ) +GAME( 1988, tdfever2, tdfever, tdfever2, tdfever, snk_state, 0, ROT90, "SNK", "TouchDown Fever 2", 0 ) /* upgrade kit for Touchdown Fever */ +GAME( 1988, fsoccer, 0, tdfever2, fsoccer, snk_state, 0, ROT0, "SNK", "Fighting Soccer (version 4)", 0 ) +GAME( 1988, fsoccerj, fsoccer, tdfever2, fsoccer, snk_state, 0, ROT0, "SNK", "Fighting Soccer (Japan)", 0 ) +GAME( 1988, fsoccerb, fsoccer, tdfever2, fsoccerb, snk_state, 0, ROT0, "bootleg", "Fighting Soccer (Joystick hack bootleg)", 0 ) +GAME( 1988, fsoccerba, fsoccer, tdfever2, fsoccerb, snk_state, 0, ROT0, "bootleg", "Fighting Soccer (Joystick hack bootleg, alt)", 0 ) diff --git a/src/mame/drivers/snk6502.cpp b/src/mame/drivers/snk6502.cpp index c1f73160acc..cbcc1addae2 100644 --- a/src/mame/drivers/snk6502.cpp +++ b/src/mame/drivers/snk6502.cpp @@ -281,9 +281,11 @@ Stephh's notes (based on the games M6502 code and some tests) : #include "emu.h" #include "includes/snk6502.h" +#include "audio/snk6502.h" #include "cpu/m6502/m6502.h" #include "sound/samples.h" +#include "sound/sn76477.h" #include "video/mc6845.h" #include "screen.h" #include "speaker.h" @@ -412,7 +414,8 @@ static ADDRESS_MAP_START( fantasy_map, AS_PROGRAM, 8, snk6502_state ) AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x2001, 0x2001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x2100, 0x2103) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_sound_w) + AM_RANGE(0x2100, 0x2102) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_sound_w) + AM_RANGE(0x2103, 0x2103) AM_WRITE(fantasy_flipscreen_w) // affects both video and sound AM_RANGE(0x2104, 0x2104) AM_READ_PORT("IN0") AM_RANGE(0x2105, 0x2105) AM_READ_PORT("IN1") AM_RANGE(0x2106, 0x2106) AM_READ_PORT("DSW") @@ -433,7 +436,8 @@ static ADDRESS_MAP_START( pballoon_map, AS_PROGRAM, 8, snk6502_state ) AM_RANGE(0x3000, 0x9fff) AM_ROM AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0xb001, 0xb001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xb100, 0xb103) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_sound_w) + AM_RANGE(0xb100, 0xb102) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_sound_w) + AM_RANGE(0xb103, 0xb103) AM_WRITE(fantasy_flipscreen_w) // affects both video and sound AM_RANGE(0xb104, 0xb104) AM_READ_PORT("IN0") AM_RANGE(0xb105, 0xb105) AM_READ_PORT("IN1") AM_RANGE(0xb106, 0xb106) AM_READ_PORT("DSW") @@ -804,7 +808,7 @@ MACHINE_RESET_MEMBER(snk6502_state,pballoon) * *************************************/ -static MACHINE_CONFIG_START( sasuke, snk6502_state ) +static MACHINE_CONFIG_START( sasuke ) // basic machine hardware MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 16) // 700 kHz @@ -936,7 +940,7 @@ static MACHINE_CONFIG_DERIVED( satansat, sasuke ) MCFG_DEVICE_REMOVE("sn76477.3") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vanguard, snk6502_state ) +static MACHINE_CONFIG_START( vanguard ) // basic machine hardware MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 16) // adjusted using common divisor @@ -1503,6 +1507,32 @@ ROM_START( nibbler8 ) /* revision 8 */ ROM_LOAD( "g-0959-45.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) ) ROM_END +ROM_START( nibbler7 ) /* revision 7 */ + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "ic12", 0x3000, 0x1000, CRC(8685d060) SHA1(64b10f9afc9ca97db7b4f7784da0df1574a56919) ) + ROM_LOAD( "ic7", 0x4000, 0x1000, CRC(b07195c7) SHA1(7aeccb274eb83aa9c24ccd1e72c694f316d25c4d) ) + ROM_LOAD( "ic8", 0x5000, 0x1000, CRC(61034cca) SHA1(8aa06784afe60b7ce9c1ea1c27685610fa9104cf) ) + ROM_LOAD( "g-0960-50.ic9", 0x6000, 0x1000, CRC(a599df10) SHA1(68ee8b5199ec24409fcbb40c887a1eec44c68dcf) ) + ROM_LOAD( "g-0960-51.ic10", 0x7000, 0x1000, CRC(a6b5abe5) SHA1(a0f228dac801a54dfa1947d6b2f6b4e3d005e0b2) ) + ROM_LOAD( "ic14", 0x8000, 0x1000, CRC(7a87c766) SHA1(8660cf78de7a4e2aec178155d2941094a3978ba3) ) + ROM_RELOAD( 0xf000, 0x1000 ) /* for the reset and interrupt vectors */ + ROM_LOAD( "g-0960-54.ic15", 0x9000, 0x1000, CRC(7205fb8d) SHA1(bc341bc11a383aa8b8dd7b2be851907a3ec56f8b) ) + ROM_LOAD( "g-0960-55.ic16", 0xa000, 0x1000, CRC(4bb39815) SHA1(1755c28d7d300524ab839aedcc744254544e9c19) ) + ROM_LOAD( "g-0960-56.ic17", 0xb000, 0x1000, CRC(ed680f19) SHA1(b44203585f32ebe2a3bf0597eac7c0faa7e81a92) ) + + ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_LOAD( "g-0960-57.ic50", 0x0000, 0x1000, CRC(01d4d0c2) SHA1(5a8026210a872351ce4e39e27f6479d3ca0689e2) ) + ROM_LOAD( "g-0960-58.ic51", 0x1000, 0x1000, CRC(feff7faf) SHA1(50005502578a4ea9b9c8f36998670b787d2d0b20) ) + + ROM_REGION( 0x0040, "proms", 0 ) + ROM_LOAD( "g-0708-05.ic7", 0x0000, 0x0020, CRC(a5709ff3) SHA1(fbd07b756235f2d03aea3d777ca741ade54be200) ) /* foreground colors */ + ROM_LOAD( "g-0708-04.ic6", 0x0020, 0x0020, CRC(dacd592d) SHA1(c7709c680e2764885a40bc256d07dffc9e827cd6) ) /* background colors */ + + ROM_REGION( 0x1800, "snk6502", ROMREGION_ERASEFF ) /* sound ROMs */ + ROM_LOAD( "g-0959-44.ic52", 0x0800, 0x0800, CRC(87d67dee) SHA1(bd292eab3671cb953279f3136a450deac3818367) ) + ROM_LOAD( "g-0959-45.ic53", 0x1000, 0x0800, CRC(33189917) SHA1(01a1b1693db0172609780daeb60430fa0c8bcec2) ) +ROM_END + ROM_START( nibbler6 ) /* revision 6 */ ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ic12", 0x3000, 0x1000, CRC(ac6a802b) SHA1(ac1072e30994f13097663dc24d9d1dc35a95d874) ) @@ -1615,22 +1645,23 @@ ROM_END * *************************************/ -GAME( 1980, sasuke, 0, sasuke, sasuke, driver_device, 0, ROT90, "SNK", "Sasuke vs. Commander", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, satansat, 0, satansat, satansat, driver_device, 0, ROT90, "SNK", "Satan of Saturn (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, satansata,satansat, satansat, satansat, driver_device, 0, ROT90, "SNK", "Satan of Saturn (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, zarzon, satansat, satansat, satansat, driver_device, 0, ROT90, "SNK (Taito America license)", "Zarzon", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, satansatind,satansat,satansat,satansat, driver_device, 0, ROT90, "bootleg (Inder S.A.)", "Satan of Saturn (Inder S.A., bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, vanguard, 0, vanguard, vanguard, driver_device, 0, ROT90, "SNK", "Vanguard (SNK)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, vanguardc,vanguard, vanguard, vanguard, driver_device, 0, ROT90, "SNK (Centuri license)", "Vanguard (Centuri)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, vanguardj,vanguard, vanguard, vanguard, driver_device, 0, ROT90, "SNK", "Vanguard (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, fantasy, 0, fantasy, fantasy, driver_device, 0, ROT90, "SNK", "Fantasy (Germany)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // bootleg? -GAME( 1981, fantasyu, fantasy, fantasy, fantasyu, driver_device, 0, ROT90, "SNK (Rock-Ola license)", "Fantasy (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, fantasyj, fantasy, fantasy, fantasyu, driver_device, 0, ROT90, "SNK", "Fantasy (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pballoon, 0, pballoon, pballoon, driver_device, 0, ROT90, "SNK", "Pioneer Balloon", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, pballoonr,pballoon, pballoon, pballoon, driver_device, 0, ROT90, "SNK (Rock-Ola license)", "Pioneer Balloon (Rock-Ola license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, nibbler, 0, nibbler, nibbler, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (rev 9)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, nibbler8, nibbler, nibbler, nibbler8, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (rev 8)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, nibbler6, nibbler, nibbler, nibbler6, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (rev 6)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, nibblera, nibbler, nibbler, nibbler, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (rev ?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, nibblerp, nibbler, nibbler, nibbler6, driver_device, 0, ROT90, "Rock-Ola", "Nibbler (Pioneer Balloon conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, nibblero, nibbler, nibbler, nibbler8, driver_device, 0, ROT90, "Rock-Ola (Olympia license)", "Nibbler (Olympia - rev 8)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, sasuke, 0, sasuke, sasuke, snk6502_state, 0, ROT90, "SNK", "Sasuke vs. Commander", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, satansat, 0, satansat, satansat, snk6502_state, 0, ROT90, "SNK", "Satan of Saturn (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, satansata, satansat, satansat, satansat, snk6502_state, 0, ROT90, "SNK", "Satan of Saturn (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, zarzon, satansat, satansat, satansat, snk6502_state, 0, ROT90, "SNK (Taito America license)", "Zarzon", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, satansatind, satansat, satansat, satansat, snk6502_state, 0, ROT90, "bootleg (Inder S.A.)", "Satan of Saturn (Inder S.A., bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, vanguard, 0, vanguard, vanguard, snk6502_state, 0, ROT90, "SNK", "Vanguard (SNK)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, vanguardc, vanguard, vanguard, vanguard, snk6502_state, 0, ROT90, "SNK (Centuri license)", "Vanguard (Centuri)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, vanguardj, vanguard, vanguard, vanguard, snk6502_state, 0, ROT90, "SNK", "Vanguard (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, fantasy, 0, fantasy, fantasy, snk6502_state, 0, ROT90, "SNK", "Fantasy (Germany)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // bootleg? +GAME( 1981, fantasyu, fantasy, fantasy, fantasyu, snk6502_state, 0, ROT90, "SNK (Rock-Ola license)", "Fantasy (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, fantasyj, fantasy, fantasy, fantasyu, snk6502_state, 0, ROT90, "SNK", "Fantasy (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pballoon, 0, pballoon, pballoon, snk6502_state, 0, ROT90, "SNK", "Pioneer Balloon", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, pballoonr, pballoon, pballoon, pballoon, snk6502_state, 0, ROT90, "SNK (Rock-Ola license)", "Pioneer Balloon (Rock-Ola license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, nibbler, 0, nibbler, nibbler, snk6502_state, 0, ROT90, "Rock-Ola", "Nibbler (rev 9)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, nibbler8, nibbler, nibbler, nibbler8, snk6502_state, 0, ROT90, "Rock-Ola", "Nibbler (rev 8)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, nibbler7, nibbler, nibbler, nibbler8, snk6502_state, 0, ROT90, "Rock-Ola", "Nibbler (rev 7)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, nibbler6, nibbler, nibbler, nibbler6, snk6502_state, 0, ROT90, "Rock-Ola", "Nibbler (rev 6)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, nibblera, nibbler, nibbler, nibbler, snk6502_state, 0, ROT90, "Rock-Ola", "Nibbler (rev ?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, nibblerp, nibbler, nibbler, nibbler6, snk6502_state, 0, ROT90, "Rock-Ola", "Nibbler (Pioneer Balloon conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, nibblero, nibbler, nibbler, nibbler8, snk6502_state, 0, ROT90, "Rock-Ola (Olympia license)", "Nibbler (Olympia - rev 8)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/snk68.cpp b/src/mame/drivers/snk68.cpp index 61302b76d23..2dc6ed055f9 100644 --- a/src/mame/drivers/snk68.cpp +++ b/src/mame/drivers/snk68.cpp @@ -591,7 +591,7 @@ void snk68_state::tile_callback_notpow(int &tile, int& fx, int& fy, int& region) region = 1; } -static MACHINE_CONFIG_START( pow, snk68_state ) +static MACHINE_CONFIG_START( pow ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_18MHz/2) /* verified on pcb */ @@ -1104,16 +1104,16 @@ ROM_END /******************************************************************************/ -GAME( 1988, pow, 0, pow, pow, driver_device, 0, ROT0, "SNK", "P.O.W. - Prisoners of War (US version 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, powj, pow, pow, powj, driver_device, 0, ROT0, "SNK", "Datsugoku - Prisoners of War (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, streetsm, 0, streetsm, streetsm, driver_device, 0, ROT0, "SNK", "Street Smart (US version 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, streetsm1, streetsm, searchar, streetsm, driver_device, 0, ROT0, "SNK", "Street Smart (US version 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, streetsmw, streetsm, searchar, streetsj, driver_device, 0, ROT0, "SNK", "Street Smart (World version 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, streetsmj, streetsm, searchar, streetsj, driver_device, 0, ROT0, "SNK", "Street Smart (Japan version 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, ikari3, 0, searchar, ikari3, driver_device, 0, ROT0, "SNK", "Ikari III - The Rescue (World, 8-Way Joystick)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, ikari3u, ikari3, searchar, ikari3, driver_device, 0, ROT0, "SNK", "Ikari III - The Rescue (US, Rotary Joystick)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, ikari3j, ikari3, searchar, ikari3, driver_device, 0, ROT0, "SNK", "Ikari Three (Japan, Rotary Joystick)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, ikari3k, ikari3, searchar, ikari3, driver_device, 0, ROT0, "SNK", "Ikari Three (Korea, 8-Way Joystick)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, searchar, 0, searchar, searchar, driver_device, 0, ROT90, "SNK", "SAR - Search And Rescue (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, searcharu, searchar, searchar, searchar, driver_device, 0, ROT90, "SNK", "SAR - Search And Rescue (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, searcharj, searchar, searchar, searchar, driver_device, 0, ROT90, "SNK", "SAR - Search And Rescue (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, pow, 0, pow, pow, snk68_state, 0, ROT0, "SNK", "P.O.W. - Prisoners of War (US version 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, powj, pow, pow, powj, snk68_state, 0, ROT0, "SNK", "Datsugoku - Prisoners of War (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, streetsm, 0, streetsm, streetsm, snk68_state, 0, ROT0, "SNK", "Street Smart (US version 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, streetsm1, streetsm, searchar, streetsm, snk68_state, 0, ROT0, "SNK", "Street Smart (US version 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, streetsmw, streetsm, searchar, streetsj, snk68_state, 0, ROT0, "SNK", "Street Smart (World version 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, streetsmj, streetsm, searchar, streetsj, snk68_state, 0, ROT0, "SNK", "Street Smart (Japan version 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, ikari3, 0, searchar, ikari3, snk68_state, 0, ROT0, "SNK", "Ikari III - The Rescue (World, 8-Way Joystick)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, ikari3u, ikari3, searchar, ikari3, snk68_state, 0, ROT0, "SNK", "Ikari III - The Rescue (US, Rotary Joystick)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, ikari3j, ikari3, searchar, ikari3, snk68_state, 0, ROT0, "SNK", "Ikari Three (Japan, Rotary Joystick)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, ikari3k, ikari3, searchar, ikari3, snk68_state, 0, ROT0, "SNK", "Ikari Three (Korea, 8-Way Joystick)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, searchar, 0, searchar, searchar, snk68_state, 0, ROT90, "SNK", "SAR - Search And Rescue (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, searcharu, searchar, searchar, searchar, snk68_state, 0, ROT90, "SNK", "SAR - Search And Rescue (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, searcharj, searchar, searchar, searchar, snk68_state, 0, ROT90, "SNK", "SAR - Search And Rescue (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/snookr10.cpp b/src/mame/drivers/snookr10.cpp index 1f2088476d1..64a44c3dc01 100644 --- a/src/mame/drivers/snookr10.cpp +++ b/src/mame/drivers/snookr10.cpp @@ -1037,7 +1037,7 @@ GFXDECODE_END * Machine Drivers * **************************/ -static MACHINE_CONFIG_START( snookr10, snookr10_state ) +static MACHINE_CONFIG_START( snookr10 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65SC02, MASTER_CLOCK/8) /* 2 MHz (1.999 MHz measured) */ @@ -1062,7 +1062,7 @@ static MACHINE_CONFIG_START( snookr10, snookr10_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", MASTER_CLOCK/16, OKIM6295_PIN7_HIGH) /* 1 MHz (995.5 kHz measured); pin7 checked HIGH on PCB */ + MCFG_OKIM6295_ADD("oki", MASTER_CLOCK/16, PIN7_HIGH) /* 1 MHz (995.5 kHz measured); pin7 checked HIGH on PCB */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.8) MACHINE_CONFIG_END @@ -1220,9 +1220,9 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1998, snookr10, 0, snookr10, snookr10, driver_device, 0, ROT0, "Sandii'", "Snooker 10 (Ver 1.11)", 0, layout_snookr10 ) -GAMEL( 1998, apple10, 0, apple10, apple10, driver_device, 0, ROT0, "Sandii'", "Apple 10 (Ver 1.21)", 0, layout_snookr10 ) -GAMEL( 1997, tenballs, snookr10, tenballs, tenballs, driver_device, 0, ROT0, "", "Ten Balls (Ver 1.05)", 0, layout_snookr10 ) -GAMEL( 1998, crystalc, 0, crystalc, crystalc, driver_device, 0, ROT0, "JCD srl", "Crystals Colours (Ver 1.02)", 0, layout_snookr10 ) -GAMEL( 1998, crystalca, crystalc, crystalc, crystalca, driver_device, 0, ROT0, "JCD srl", "Crystals Colours (Ver 1.01)", 0, layout_snookr10 ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +GAMEL( 1998, snookr10, 0, snookr10, snookr10, snookr10_state, 0, ROT0, "Sandii'", "Snooker 10 (Ver 1.11)", 0, layout_snookr10 ) +GAMEL( 1998, apple10, 0, apple10, apple10, snookr10_state, 0, ROT0, "Sandii'", "Apple 10 (Ver 1.21)", 0, layout_snookr10 ) +GAMEL( 1997, tenballs, snookr10, tenballs, tenballs, snookr10_state, 0, ROT0, "", "Ten Balls (Ver 1.05)", 0, layout_snookr10 ) +GAMEL( 1998, crystalc, 0, crystalc, crystalc, snookr10_state, 0, ROT0, "JCD srl", "Crystals Colours (Ver 1.02)", 0, layout_snookr10 ) +GAMEL( 1998, crystalca, crystalc, crystalc, crystalca, snookr10_state, 0, ROT0, "JCD srl", "Crystals Colours (Ver 1.01)", 0, layout_snookr10 ) diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp index 1cf0faeeead..4466edfa203 100644 --- a/src/mame/drivers/snowbros.cpp +++ b/src/mame/drivers/snowbros.cpp @@ -104,7 +104,7 @@ uint32_t snowbros_state::screen_update_snowbros(screen_device &screen, bitmap_in } -void snowbros_state::screen_eof_snowbros(screen_device &screen, bool state) +WRITE_LINE_MEMBER(snowbros_state::screen_vblank_snowbros) { // rising edge if (state) @@ -1763,7 +1763,7 @@ MACHINE_RESET_MEMBER(snowbros_state,finalttr) m_hyperpac_ram[0x2000/2 + i] = PROTDATA[i]; } -static MACHINE_CONFIG_START( snowbros, snowbros_state ) +static MACHINE_CONFIG_START( snowbros ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* 8 Mhz - confirmed */ @@ -1782,7 +1782,7 @@ static MACHINE_CONFIG_START( snowbros, snowbros_state ) MCFG_SCREEN_SIZE(32*8, 262) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_snowbros) - MCFG_SCREEN_VBLANK_DRIVER(snowbros_state, screen_eof_snowbros) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(snowbros_state, screen_vblank_snowbros)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", snowbros) @@ -1816,7 +1816,7 @@ static MACHINE_CONFIG_DERIVED( wintbob, snowbros ) MCFG_GFXDECODE_MODIFY("gfxdecode", wb) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_wintbob) - MCFG_SCREEN_VBLANK_NONE() + MCFG_SCREEN_VBLANK_CALLBACK(NOOP) MACHINE_CONFIG_END @@ -1840,7 +1840,7 @@ static MACHINE_CONFIG_DERIVED( semicom, snowbros ) MCFG_SOUND_ROUTE(0, "mono", 0.10) MCFG_SOUND_ROUTE(1, "mono", 0.10) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* 1MHz & pin 7 High - Confirmed */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* 1MHz & pin 7 High - Confirmed */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1860,7 +1860,7 @@ static MACHINE_CONFIG_DERIVED( semiprot, semicom ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( honeydol, snowbros_state ) +static MACHINE_CONFIG_START( honeydol ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* MC68000P12 @ 12MHz */ @@ -1894,11 +1894,11 @@ static MACHINE_CONFIG_START( honeydol, snowbros_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* freq? */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* freq? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( twinadv, snowbros_state ) +static MACHINE_CONFIG_START( twinadv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* 12MHz like Honey Dolls ? */ @@ -1930,7 +1930,7 @@ static MACHINE_CONFIG_START( twinadv, snowbros_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") /* sound hardware */ - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* freq? */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* freq? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1969,7 +1969,7 @@ static MACHINE_CONFIG_DERIVED( finalttr, semicom ) MCFG_SOUND_ROUTE(0, "mono", 0.08) MCFG_SOUND_ROUTE(1, "mono", 0.08) - MCFG_OKIM6295_REPLACE("oki", 999900, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_REPLACE("oki", 999900, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MACHINE_CONFIG_END @@ -1980,7 +1980,7 @@ static MACHINE_CONFIG_DERIVED( _4in1, semicom ) MCFG_GFXDECODE_MODIFY("gfxdecode", snowbros) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( snowbro3, snowbros_state ) /* PCB has 16MHz & 12MHz OSCs */ +static MACHINE_CONFIG_START( snowbro3 ) /* PCB has 16MHz & 12MHz OSCs */ /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* MC68000P10 CPU @ 12mhz or 8MHz (16MHz/2) ? */ @@ -2004,13 +2004,13 @@ static MACHINE_CONFIG_START( snowbro3, snowbros_state ) /* PCB has 16MHz & 12MHz /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( yutnori, snowbros_state ) +static MACHINE_CONFIG_START( yutnori ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) @@ -2026,7 +2026,7 @@ static MACHINE_CONFIG_START( yutnori, snowbros_state ) MCFG_SCREEN_SIZE(32*8, 262) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(snowbros_state, screen_update_snowbros) - MCFG_SCREEN_VBLANK_DRIVER(snowbros_state, screen_eof_snowbros) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(snowbros_state, screen_vblank_snowbros)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", hyperpac) @@ -2039,10 +2039,10 @@ static MACHINE_CONFIG_START( yutnori, snowbros_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/16, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/16, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2909,48 +2909,48 @@ DRIVER_INIT_MEMBER(snowbros_state, yutnori) m_pandora->set_bg_pen(0xf0); } -GAME( 1990, snowbros, 0, snowbros, snowbros, driver_device, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, snowbrosa, snowbros, snowbros, snowbros, driver_device, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, snowbrosb, snowbros, snowbros, snowbros, driver_device, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, snowbrosc, snowbros, snowbros, snowbros, driver_device, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, snowbrosj, snowbros, snowbros, snowbroj, driver_device, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, snowbrosd, snowbros, snowbros, snowbroj, driver_device, 0, ROT0, "Toaplan (Dooyong license)", "Snow Bros. - Nick & Tom (Dooyong license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, wintbob, snowbros, wintbob, snowbros, driver_device, 0, ROT0, "bootleg (Sakowa Project Korea)", "The Winter Bobble (bootleg of Snow Bros.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, snowbroswb,snowbros, wintbob, snowbros, driver_device, 0, ROT0, "bootleg", "Snow Bros. - Nick & Tom (The Winter Bobble hardware bootleg)", MACHINE_SUPPORTS_SAVE ) // this was probably unhacked back from the more common Winter Bobble to make it look more original +GAME( 1990, snowbros, 0, snowbros, snowbros, snowbros_state, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, snowbrosa, snowbros, snowbros, snowbros, snowbros_state, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, snowbrosb, snowbros, snowbros, snowbros, snowbros_state, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, snowbrosc, snowbros, snowbros, snowbros, snowbros_state, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, snowbrosj, snowbros, snowbros, snowbroj, snowbros_state, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, snowbrosd, snowbros, snowbros, snowbroj, snowbros_state, 0, ROT0, "Toaplan (Dooyong license)", "Snow Bros. - Nick & Tom (Dooyong license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, wintbob, snowbros, wintbob, snowbros, snowbros_state, 0, ROT0, "bootleg (Sakowa Project Korea)", "The Winter Bobble (bootleg of Snow Bros.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, snowbroswb, snowbros, wintbob, snowbros, snowbros_state, 0, ROT0, "bootleg", "Snow Bros. - Nick & Tom (The Winter Bobble hardware bootleg)", MACHINE_SUPPORTS_SAVE ) // this was probably unhacked back from the more common Winter Bobble to make it look more original -GAME( 1996, toto, 0, snowbros, snowbros, snowbros_state, toto, ROT0, "SoftClub", "Come Back Toto", MACHINE_SUPPORTS_SAVE ) // modified from 'snowbros' code +GAME( 1996, toto, 0, snowbros, snowbros, snowbros_state, toto, ROT0, "SoftClub", "Come Back Toto", MACHINE_SUPPORTS_SAVE ) // modified from 'snowbros' code // none of the games below are on genuine SnowBros hardware, but they clone the functionality of it. // SemiCom / Jeil titles are protected, a dumb MCU copies code into RAM at startup, some also check for a specific return value from an address on startup. -GAME( 1993, finalttr, 0, finalttr, finalttr, driver_device, 0, ROT0, "Jeil Computer System", "Final Tetris", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, hyperpac, 0, semicom_mcu, hyperpac, snowbros_state, hyperpac, ROT0, "SemiCom", "Hyper Pacman", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, hyperpacb,hyperpac, semicom, hyperpac, driver_device, 0, ROT0, "bootleg", "Hyper Pacman (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, cookbib2, 0, semiprot, cookbib2, snowbros_state, cookbib2, ROT0, "SemiCom", "Cookie & Bibi 2", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, toppyrap, 0, semiprot, toppyrap, driver_device, 0, ROT0, "SemiCom", "Toppy & Rappy", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, cookbib3, 0, semiprot, cookbib3, snowbros_state, cookbib3, ROT0, "SemiCom", "Cookie & Bibi 3", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, pzlbreak, 0, semiprot, pzlbreak, snowbros_state, pzlbreak, ROT0, "SemiCom / Tirano", "Puzzle Break", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, suhosong, 0, semiprot, suhosong, driver_device, 0, ROT0, "SemiCom", "Su Ho Seong", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, twinkle, 0, semiprot, twinkle, driver_device, 0, ROT0, "SemiCom / Tirano", "Twinkle", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, 3in1semi, 0, semiprot, moremore, snowbros_state, 3in1semi, ROT0, "SemiCom / XESS", "New HyperMan (3-in-1 with Cookie & Bibi & HyperMan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, mcheonru, 0, semiprot, mcheonru, snowbros_state, 3in1semi, ROT0, "SemiCom / AceVer", "Ma Cheon Ru", MACHINE_SUPPORTS_SAVE ) // a flyer exists for an English version called Arirang, AceVer team logo is displayed on it -GAME( 1999, moremore, 0, semiprot, moremore, snowbros_state, 3in1semi, ROT0, "SemiCom / Exit", "More More", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, moremorp, 0, semiprot, moremore, snowbros_state, 3in1semi, ROT0, "SemiCom / Exit", "More More Plus", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, finalttr, 0, finalttr, finalttr, snowbros_state, 0, ROT0, "Jeil Computer System", "Final Tetris", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, hyperpac, 0, semicom_mcu, hyperpac, snowbros_state, hyperpac, ROT0, "SemiCom", "Hyper Pacman", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, hyperpacb, hyperpac, semicom, hyperpac, snowbros_state, 0, ROT0, "bootleg", "Hyper Pacman (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, cookbib2, 0, semiprot, cookbib2, snowbros_state, cookbib2, ROT0, "SemiCom", "Cookie & Bibi 2", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, toppyrap, 0, semiprot, toppyrap, snowbros_state, 0, ROT0, "SemiCom", "Toppy & Rappy", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, cookbib3, 0, semiprot, cookbib3, snowbros_state, cookbib3, ROT0, "SemiCom", "Cookie & Bibi 3", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, pzlbreak, 0, semiprot, pzlbreak, snowbros_state, pzlbreak, ROT0, "SemiCom / Tirano", "Puzzle Break", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, suhosong, 0, semiprot, suhosong, snowbros_state, 0, ROT0, "SemiCom", "Su Ho Seong", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, twinkle, 0, semiprot, twinkle, snowbros_state, 0, ROT0, "SemiCom / Tirano", "Twinkle", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, 3in1semi, 0, semiprot, moremore, snowbros_state, 3in1semi, ROT0, "SemiCom / XESS", "New HyperMan (3-in-1 with Cookie & Bibi & HyperMan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mcheonru, 0, semiprot, mcheonru, snowbros_state, 3in1semi, ROT0, "SemiCom / AceVer", "Ma Cheon Ru", MACHINE_SUPPORTS_SAVE ) // a flyer exists for an English version called Arirang, AceVer team logo is displayed on it +GAME( 1999, moremore, 0, semiprot, moremore, snowbros_state, 3in1semi, ROT0, "SemiCom / Exit", "More More", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, moremorp, 0, semiprot, moremore, snowbros_state, 3in1semi, ROT0, "SemiCom / Exit", "More More Plus", MACHINE_SUPPORTS_SAVE ) // This is very similar to the SemiCom titles, but unprotected. -GAME( 2002, 4in1boot, 0, _4in1, 4in1boot, snowbros_state, 4in1boot, ROT0, "K1 Soft", "Puzzle King (PacMan 2, Tetris, HyperMan 2, Snow Bros.)" , MACHINE_SUPPORTS_SAVE ) +GAME( 2002, 4in1boot, 0, _4in1, 4in1boot, snowbros_state, 4in1boot, ROT0, "K1 Soft", "Puzzle King (PacMan 2, Tetris, HyperMan 2, Snow Bros.)" , MACHINE_SUPPORTS_SAVE ) -GAME( 1995, honeydol, 0, honeydol, honeydol, driver_device, 0, ROT0, "Barko Corp.", "Honey Dolls", MACHINE_SUPPORTS_SAVE ) // based on snowbros code.. +GAME( 1995, honeydol, 0, honeydol, honeydol, snowbros_state, 0, ROT0, "Barko Corp.", "Honey Dolls", MACHINE_SUPPORTS_SAVE ) // based on snowbros code.. -GAME( 1995, twinadv, 0, twinadv, twinadv, driver_device, 0, ROT0, "Barko Corp.", "Twin Adventure (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, twinadvk, twinadv, twinadv, twinadv, driver_device, 0, ROT0, "Barko Corp.", "Twin Adventure (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, multi96, twinadv, twinadv, twinadv, driver_device, 0, ROT0, "Barko Corp.", "Multi Game '96 (Italy)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, twinadv, 0, twinadv, twinadv, snowbros_state, 0, ROT0, "Barko Corp.", "Twin Adventure (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, twinadvk, twinadv, twinadv, twinadv, snowbros_state, 0, ROT0, "Barko Corp.", "Twin Adventure (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, multi96, twinadv, twinadv, twinadv, snowbros_state, 0, ROT0, "Barko Corp.", "Multi Game '96 (Italy)", MACHINE_SUPPORTS_SAVE ) // The Korean games database shows an earlier version of this called Ball Boy with a different title screen to the version of Ball Boy we have // http://mamedev.emulab.it/undumped/images/Ballboy.jpg // it is possible this 'ball boy' is the original bootleg, with snwobro3 being a hack of that, and the ballboy set we have a further hack of that // there is also a later 2004 version with 3 player support // these use an MCU to drive the sound -GAME( 2002, snowbro3, 0, snowbro3, snowbroj, snowbros_state, snowbro3, ROT0, "Syrmex", "Snow Brothers 3 - Magical Adventure", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // hacked from SnowBros code but released as an original game -GAME( 2003, ballboy, snowbro3, snowbro3, snowbroj, snowbros_state, snowbro3, ROT0, "bootleg", "Ball Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, snowbro3, 0, snowbro3, snowbroj, snowbros_state, snowbro3, ROT0, "Syrmex", "Snow Brothers 3 - Magical Adventure", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // hacked from SnowBros code but released as an original game +GAME( 2003, ballboy, snowbro3, snowbro3, snowbroj, snowbros_state, snowbro3, ROT0, "bootleg", "Ball Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // protection appears to handle the sound, should check if it's just a block of code that is conditionally executed like some of the Semicom titles. -GAME( 1999, yutnori, 0, yutnori, yutnori, snowbros_state, yutnori, ROT0, "Nunal", "Puzzle Yutnori (Korea)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // Nunal is apparently Korean slang for Eyeball, hence the logo. Some places report 'JCC Soft' as the manufacturer +GAME( 1999, yutnori, 0, yutnori, yutnori, snowbros_state, yutnori, ROT0, "Nunal", "Puzzle Yutnori (Korea)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // Nunal is apparently Korean slang for Eyeball, hence the logo. Some places report 'JCC Soft' as the manufacturer diff --git a/src/mame/drivers/socrates.cpp b/src/mame/drivers/socrates.cpp index ce7218901ac..f97db1c009f 100644 --- a/src/mame/drivers/socrates.cpp +++ b/src/mame/drivers/socrates.cpp @@ -1367,7 +1367,7 @@ INTERRUPT_GEN_MEMBER(socrates_state::assert_irq) m_kbmcu_rscount = 0; // clear the mcu poke count } -static MACHINE_CONFIG_START( socrates, socrates_state ) +static MACHINE_CONFIG_START( socrates ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_21_4772MHz/6) /* Toshiba TMPZ84C00AP @ 3.579545 MHz, verified, xtal is divided by 6 */ MCFG_CPU_PROGRAM_MAP(z80_mem) @@ -1399,7 +1399,7 @@ static MACHINE_CONFIG_START( socrates, socrates_state ) MCFG_SOFTWARE_LIST_ADD("cart_list", "socrates") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( socrates_pal, socrates_state ) +static MACHINE_CONFIG_START( socrates_pal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_26_601712MHz/6) /* Toshiba TMPZ84C00AP @ 4.433 MHz? /6 or 7 or 8? TODO: verify divider!*/ MCFG_CPU_PROGRAM_MAP(z80_mem) @@ -1445,7 +1445,7 @@ static MACHINE_CONFIG_DERIVED( socrates_pal, socrates ) MACHINE_CONFIG_END */ -static MACHINE_CONFIG_START( iqunlimz, iqunlim_state ) +static MACHINE_CONFIG_START( iqunlimz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) /* not accurate */ MCFG_CPU_PROGRAM_MAP(iqunlim_mem) @@ -1583,11 +1583,11 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1988, socrates, 0, 0, socrates, socrates, socrates_state, socrates, "Video Technology", "Socrates Educational Video System", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // English NTSC, no title copyright -COMP( 1988, socratfc, socrates, 0, socrates, socrates, socrates_state, socrates, "Video Technology", "Socrates SAITOUT", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // French Canandian NTSC, 1988 title copyright -COMP( 1988, profweis, socrates, 0, socrates_pal, socrates, socrates_state, socrates, "Video Technology/Yeno", "Professor Weiss-Alles", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // German PAL, 1988 title copyright +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1988, socrates, 0, 0, socrates, socrates, socrates_state, socrates, "Video Technology", "Socrates Educational Video System", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // English NTSC, no title copyright +COMP( 1988, socratfc, socrates, 0, socrates, socrates, socrates_state, socrates, "Video Technology", "Socrates SAITOUT", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // French Canandian NTSC, 1988 title copyright +COMP( 1988, profweis, socrates, 0, socrates_pal, socrates, socrates_state, socrates, "Video Technology/Yeno", "Professor Weiss-Alles", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // German PAL, 1988 title copyright // Yeno Professeur Saitout goes here (french SECAM) // ? goes here (spanish PAL) -COMP( 1991, iqunlimz, 0, 0, iqunlimz, iqunlimz, driver_device, 0, "Video Technology", "IQ Unlimited (Z80)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1991, iqunlimz, 0, 0, iqunlimz, iqunlimz, iqunlim_state, 0, "Video Technology", "IQ Unlimited (Z80)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/softbox.cpp b/src/mame/drivers/softbox.cpp index 42c552d2050..293fc9275d4 100644 --- a/src/mame/drivers/softbox.cpp +++ b/src/mame/drivers/softbox.cpp @@ -140,7 +140,7 @@ static ADDRESS_MAP_START( softbox_io, AS_IO, 8, softbox_state ) AM_RANGE(0x0c, 0x0c) AM_WRITE(dbrg_w) AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(I8255_0_TAG, i8255_device, read, write) AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(I8255_1_TAG, i8255_device, read, write) - AM_RANGE(0x18, 0x18) AM_DEVREADWRITE(CORVUS_HDC_TAG, corvus_hdc_t, read, write) + AM_RANGE(0x18, 0x18) AM_DEVREADWRITE(CORVUS_HDC_TAG, corvus_hdc_device, read, write) ADDRESS_MAP_END @@ -270,8 +270,8 @@ READ8_MEMBER( softbox_state::ppi1_pc_r ) uint8_t status = m_hdc->status_r(space, 0); uint8_t data = 0; - data |= (status & CONTROLLER_BUSY) ? 0 : 0x10; - data |= (status & CONTROLLER_DIRECTION) ? 0 : 0x20; + data |= (status & corvus_hdc_device::CONTROLLER_BUSY) ? 0 : 0x10; + data |= (status & corvus_hdc_device::CONTROLLER_DIRECTION) ? 0 : 0x20; return data; } @@ -368,7 +368,7 @@ void softbox_state::ieee488_ifc(int state) // MACHINE_CONFIG( softbox ) //------------------------------------------------- -static MACHINE_CONFIG_START( softbox, softbox_state ) +static MACHINE_CONFIG_START( softbox ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_8MHz/2) MCFG_CPU_PROGRAM_MAP(softbox_mem) @@ -449,5 +449,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1981, softbox, 0, 0, softbox, softbox, driver_device, 0, "Small Systems Engineering", "SoftBox", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, softbox, 0, 0, softbox, softbox, softbox_state, 0, "Small Systems Engineering", "SoftBox", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/solomon.cpp b/src/mame/drivers/solomon.cpp index 4912adeaf3d..4b197f59f5c 100644 --- a/src/mame/drivers/solomon.cpp +++ b/src/mame/drivers/solomon.cpp @@ -206,7 +206,7 @@ INTERRUPT_GEN_MEMBER(solomon_state::vblank_irq) -static MACHINE_CONFIG_START( solomon, solomon_state ) +static MACHINE_CONFIG_START( solomon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4.0 MHz (?????) */ @@ -307,5 +307,5 @@ ROM_END -GAME( 1986, solomon, 0, solomon, solomon, driver_device, 0, ROT0, "Tecmo", "Solomon's Key (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, solomonj, solomon, solomon, solomon, driver_device, 0, ROT0, "Tecmo", "Solomon no Kagi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, solomon, 0, solomon, solomon, solomon_state, 0, ROT0, "Tecmo", "Solomon's Key (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, solomonj, solomon, solomon, solomon, solomon_state, 0, ROT0, "Tecmo", "Solomon no Kagi (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sonson.cpp b/src/mame/drivers/sonson.cpp index ee93eaec869..a5aacf161b2 100644 --- a/src/mame/drivers/sonson.cpp +++ b/src/mame/drivers/sonson.cpp @@ -241,7 +241,7 @@ void sonson_state::machine_reset() m_last_irq = 0; } -static MACHINE_CONFIG_START( sonson, sonson_state ) +static MACHINE_CONFIG_START( sonson ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_12MHz/8) /* 1.5 MHz */ @@ -349,5 +349,5 @@ ROM_START( sonsonj ) ROM_END -GAME( 1984, sonson, 0, sonson, sonson, driver_device, 0, ROT0, "Capcom", "Son Son", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, sonsonj, sonson, sonson, sonson, driver_device, 0, ROT0, "Capcom", "Son Son (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sonson, 0, sonson, sonson, sonson_state, 0, ROT0, "Capcom", "Son Son", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sonsonj, sonson, sonson, sonson, sonson_state, 0, ROT0, "Capcom", "Son Son (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sorcerer.cpp b/src/mame/drivers/sorcerer.cpp index 7740badf571..125c751ef8d 100644 --- a/src/mame/drivers/sorcerer.cpp +++ b/src/mame/drivers/sorcerer.cpp @@ -413,7 +413,7 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 ) DEVICE_INPUT_DEFAULTS_END -static MACHINE_CONFIG_START( sorcerer, sorcerer_state ) +static MACHINE_CONFIG_START( sorcerer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, ES_CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(sorcerer_mem) @@ -535,7 +535,7 @@ ROM_START(sorcerer2) ROMX_LOAD("tvc-2.2e", 0xe800, 0x0800, CRC(bc194487) SHA1(dcfd916558e3e3be22091c5558ea633c332cf6c7), ROM_BIOS(2) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP(1979, sorcerer, 0, 0, sorcerer, sorcerer, sorcerer_state, sorcerer, "Exidy Inc", "Sorcerer", 0 ) -COMP(1979, sorcerer2, sorcerer, 0, sorcerer, sorcerer, sorcerer_state, sorcerer, "Exidy Inc", "Sorcerer 2", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +COMP(1979, sorcerer, 0, 0, sorcerer, sorcerer, sorcerer_state, sorcerer, "Exidy Inc", "Sorcerer", 0 ) +COMP(1979, sorcerer2, sorcerer, 0, sorcerer, sorcerer, sorcerer_state, sorcerer, "Exidy Inc", "Sorcerer 2", 0 ) COMP(1979, sorcererd, sorcerer, 0, sorcererd, sorcerer, sorcerer_state, sorcerer, "Exidy Inc", "Sorcerer (with floppy disks)", 0 ) diff --git a/src/mame/drivers/sothello.cpp b/src/mame/drivers/sothello.cpp index d99a27c75a7..244f573efb2 100644 --- a/src/mame/drivers/sothello.cpp +++ b/src/mame/drivers/sothello.cpp @@ -340,7 +340,7 @@ void sothello_state::machine_reset() { } -static MACHINE_CONFIG_START( sothello, sothello_state ) +static MACHINE_CONFIG_START( sothello ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, MAINCPU_CLOCK) @@ -379,7 +379,7 @@ static MACHINE_CONFIG_START( sothello, sothello_state ) MCFG_SOUND_ADD("msm", MSM5205, MSM_CLOCK) MCFG_MSM5205_VCLK_CB(WRITELINE(sothello_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* changed on the fly */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* changed on the fly */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -403,4 +403,4 @@ ROM_START( sothello ) ROM_LOAD( "6.7f", 0x8000, 0x8000, CRC(ee80fc78) SHA1(9a9d7925847d7a36930f0761c70f67a9affc5e7c) ) ROM_END -GAME( 1986, sothello, 0, sothello, sothello, driver_device, 0, ROT0, "Success / Fujiwara", "Super Othello", 0 ) +GAME( 1986, sothello, 0, sothello, sothello, sothello_state, 0, ROT0, "Success / Fujiwara", "Super Othello", 0 ) diff --git a/src/mame/drivers/spacefb.cpp b/src/mame/drivers/spacefb.cpp index f471f1b307e..81eb57282c9 100644 --- a/src/mame/drivers/spacefb.cpp +++ b/src/mame/drivers/spacefb.cpp @@ -243,14 +243,6 @@ static ADDRESS_MAP_START( spacefb_main_io_map, AS_IO, 8, spacefb_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( spacefb_audio_io_map, AS_IO, 8, spacefb_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(audio_p2_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(audio_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(audio_t1_r) -ADDRESS_MAP_END - - /************************************* * @@ -336,7 +328,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( spacefb, spacefb_state ) +static MACHINE_CONFIG_START( spacefb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, SPACEFB_MAIN_CPU_CLOCK) @@ -345,7 +337,10 @@ static MACHINE_CONFIG_START( spacefb, spacefb_state ) MCFG_CPU_ADD("audiocpu", I8035, SPACEFB_AUDIO_CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(spacefb_audio_map) - MCFG_CPU_IO_MAP(spacefb_audio_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(spacefb_state, audio_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(spacefb_state, audio_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(spacefb_state, audio_t1_r)) MCFG_QUANTUM_TIME(attotime::from_hz(180)) @@ -607,12 +602,12 @@ ROM_END * *************************************/ -GAME( 1980, spacefb, 0, spacefb, spacefb, driver_device, 0, ROT270, "Nintendo", "Space Firebird (rev. 04-u)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacefbe, spacefb, spacefb, spacefb, driver_device, 0, ROT270, "Nintendo", "Space Firebird (rev. 03-e set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacefbe2,spacefb, spacefb, spacefb, driver_device, 0, ROT270, "Nintendo", "Space Firebird (rev. 03-e set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacefba, spacefb, spacefb, spacefb, driver_device, 0, ROT270, "Nintendo", "Space Firebird (rev. 02-a)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacefbg, spacefb, spacefb, spacefb, driver_device, 0, ROT270, "Nintendo (Gremlin license)", "Space Firebird (Gremlin)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacebrd, spacefb, spacefb, spacefb, driver_device, 0, ROT270, "bootleg (Karateco)", "Space Bird (bootleg)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacefbb, spacefb, spacefb, spacefb, driver_device, 0, ROT270, "bootleg", "Space Firebird (bootleg)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacedem, spacefb, spacefb, spacedem, driver_device, 0, ROT270, "Nintendo (Fortrek license)", "Space Demon", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, starwarr, spacefb, spacefb, spacefb, driver_device, 0, ROT270, "bootleg (Potomac Mortgage)", "Star Warrior", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacefb, 0, spacefb, spacefb, spacefb_state, 0, ROT270, "Nintendo", "Space Firebird (rev. 04-u)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacefbe, spacefb, spacefb, spacefb, spacefb_state, 0, ROT270, "Nintendo", "Space Firebird (rev. 03-e set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacefbe2,spacefb, spacefb, spacefb, spacefb_state, 0, ROT270, "Nintendo", "Space Firebird (rev. 03-e set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacefba, spacefb, spacefb, spacefb, spacefb_state, 0, ROT270, "Nintendo", "Space Firebird (rev. 02-a)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacefbg, spacefb, spacefb, spacefb, spacefb_state, 0, ROT270, "Nintendo (Gremlin license)", "Space Firebird (Gremlin)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacebrd, spacefb, spacefb, spacefb, spacefb_state, 0, ROT270, "bootleg (Karateco)", "Space Bird (bootleg)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacefbb, spacefb, spacefb, spacefb, spacefb_state, 0, ROT270, "bootleg", "Space Firebird (bootleg)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacedem, spacefb, spacefb, spacedem, spacefb_state, 0, ROT270, "Nintendo (Fortrek license)", "Space Demon", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, starwarr, spacefb, spacefb, spacefb, spacefb_state, 0, ROT270, "bootleg (Potomac Mortgage)", "Star Warrior", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/spaceg.cpp b/src/mame/drivers/spaceg.cpp index d3635c9845d..445a5ed2e72 100644 --- a/src/mame/drivers/spaceg.cpp +++ b/src/mame/drivers/spaceg.cpp @@ -497,7 +497,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( spaceg, spaceg_state ) +static MACHINE_CONFIG_START( spaceg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,2500000) /* 2.5 MHz */ @@ -577,4 +577,4 @@ ROM_END * *************************************/ -GAME( 1979, spaceg, 0, spaceg, spaceg, driver_device, 0, ROT270, "Omori Electric Co., Ltd.", "Space Guerrilla", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, spaceg, 0, spaceg, spaceg, spaceg_state, 0, ROT270, "Omori Electric Co., Ltd.", "Space Guerrilla", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/spartanxtec.cpp b/src/mame/drivers/spartanxtec.cpp index 1b81403ad19..ece7235298b 100644 --- a/src/mame/drivers/spartanxtec.cpp +++ b/src/mame/drivers/spartanxtec.cpp @@ -356,7 +356,7 @@ PALETTE_INIT_MEMBER(spartanxtec_state, spartanxtec) -static MACHINE_CONFIG_START( spartanxtec, spartanxtec_state ) +static MACHINE_CONFIG_START( spartanxtec ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */ @@ -443,4 +443,4 @@ ROM_END -GAME( 1987, spartanxtec, kungfum, spartanxtec, spartanxtec, driver_device, 0, ROT0, "bootleg (Tecfri)", "Spartan X (Tecfri hardware bootleg)", 0 ) +GAME( 1987, spartanxtec, kungfum, spartanxtec, spartanxtec, spartanxtec_state, 0, ROT0, "bootleg (Tecfri)", "Spartan X (Tecfri hardware bootleg)", 0 ) diff --git a/src/mame/drivers/spbactn.cpp b/src/mame/drivers/spbactn.cpp index 3f61ac65e6d..cdee5222e70 100644 --- a/src/mame/drivers/spbactn.cpp +++ b/src/mame/drivers/spbactn.cpp @@ -405,7 +405,7 @@ static GFXDECODE_START( spbactnp ) GFXDECODE_END -static MACHINE_CONFIG_START( spbactn, spbactn_state ) +static MACHINE_CONFIG_START( spbactn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) @@ -446,12 +446,12 @@ static MACHINE_CONFIG_START( spbactn, spbactn_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, OKIM6295_PIN7_HIGH) /* Was 1.056MHz, a common clock, but no way to generate via on PCB OSCs. clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, PIN7_HIGH) /* Was 1.056MHz, a common clock, but no way to generate via on PCB OSCs. clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( spbactnp, spbactn_state ) +static MACHINE_CONFIG_START( spbactnp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) @@ -499,7 +499,7 @@ static MACHINE_CONFIG_START( spbactnp, spbactn_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -597,6 +597,6 @@ ROM_START( spbactnp ) ROM_LOAD( "tcm1.19g.bin", 0x00000, 0x53, CRC(2c54354a) SHA1(11d8b6cdaf052b5a9fbcf6b6fbf99c5f89575cfa) ) ROM_END -GAME( 1991, spbactn, 0, spbactn, spbactn, driver_device, 0, ROT90, "Tecmo", "Super Pinball Action (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, spbactnj, spbactn, spbactn, spbactn, driver_device, 0, ROT90, "Tecmo", "Super Pinball Action (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, spbactnp, spbactn, spbactnp, spbactn, driver_device, 0, ROT90, "Tecmo", "Super Pinball Action (prototype)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // early proto, (c) date is 2 years earlier! +GAME( 1991, spbactn, 0, spbactn, spbactn, spbactn_state, 0, ROT90, "Tecmo", "Super Pinball Action (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, spbactnj, spbactn, spbactn, spbactn, spbactn_state, 0, ROT90, "Tecmo", "Super Pinball Action (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, spbactnp, spbactn, spbactnp, spbactn, spbactn_state, 0, ROT90, "Tecmo", "Super Pinball Action (prototype)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // early proto, (c) date is 2 years earlier! diff --git a/src/mame/drivers/spc1000.cpp b/src/mame/drivers/spc1000.cpp index 10b26c44c55..07b0246326e 100644 --- a/src/mame/drivers/spc1000.cpp +++ b/src/mame/drivers/spc1000.cpp @@ -458,7 +458,7 @@ extern SLOT_INTERFACE_START(spc1000_exp) SLOT_INTERFACE("vdp", SPC1000_VDP_EXP) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( spc1000, spc1000_state ) +static MACHINE_CONFIG_START( spc1000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(spc1000_mem) @@ -471,7 +471,7 @@ static MACHINE_CONFIG_START( spc1000, spc1000_state ) MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(spc1000_state, irq_w)) MCFG_MC6847_INPUT_CALLBACK(READ8(spc1000_state, mc6847_videoram_r)) MCFG_MC6847_CHARROM_CALLBACK(spc1000_state, get_char_rom) - MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM2) + MCFG_MC6847_FIXED_MODE(mc6847_ntsc_device::MODE_GM2) // other lines not connected /* sound hardware */ @@ -520,5 +520,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, spc1000, 0, 0, spc1000, spc1000, driver_device, 0, "Samsung", "SPC-1000", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, spc1000, 0, 0, spc1000, spc1000, spc1000_state, 0, "Samsung", "SPC-1000", 0 ) diff --git a/src/mame/drivers/spc1500.cpp b/src/mame/drivers/spc1500.cpp index ee3fd20f9e7..5eca88df13a 100644 --- a/src/mame/drivers/spc1500.cpp +++ b/src/mame/drivers/spc1500.cpp @@ -898,7 +898,7 @@ READ8_MEMBER( spc1500_state::porta_r ) return data; } -static MACHINE_CONFIG_START( spc1500, spc1500_state ) +static MACHINE_CONFIG_START( spc1500 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(spc1500_mem) @@ -974,5 +974,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, spc1500, 0, 0, spc1500, spc1500, driver_device, 0, "Samsung", "SPC-1500", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1987, spc1500, 0, 0, spc1500, spc1500, spc1500_state, 0, "Samsung", "SPC-1500", 0 ) diff --git a/src/mame/drivers/spcforce.cpp b/src/mame/drivers/spcforce.cpp index d30e8c22586..ea8343c899d 100644 --- a/src/mame/drivers/spcforce.cpp +++ b/src/mame/drivers/spcforce.cpp @@ -93,7 +93,7 @@ WRITE8_MEMBER(spcforce_state::SN76496_select_w) if (~data & 0x10) m_sn3->write(space, 0, m_sn76496_latch); } -READ8_MEMBER(spcforce_state::t0_r) +READ_LINE_MEMBER(spcforce_state::t0_r) { /* SN76496 status according to Al - not supported by MAME?? */ return machine().rand() & 1; @@ -135,13 +135,6 @@ static ADDRESS_MAP_START( spcforce_sound_map, AS_PROGRAM, 8, spcforce_state ) AM_RANGE(0x0000, 0x07ff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( spcforce_sound_io_map, AS_IO, 8, spcforce_state ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(SN76496_latch_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(SN76496_select_r, SN76496_select_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) -ADDRESS_MAP_END - static INPUT_PORTS_START( spcforce ) PORT_START("DSW") @@ -281,7 +274,7 @@ INTERRUPT_GEN_MEMBER(spcforce_state::vblank_irq) device.execute().set_input_line(3, HOLD_LINE); } -static MACHINE_CONFIG_START( spcforce, spcforce_state ) +static MACHINE_CONFIG_START( spcforce ) /* basic machine hardware */ /* FIXME: The 8085A had a max clock of 6MHz, internally divided by 2! */ @@ -291,7 +284,11 @@ static MACHINE_CONFIG_START( spcforce, spcforce_state ) MCFG_CPU_ADD("audiocpu", I8035, 6144000) /* divisor ??? */ MCFG_CPU_PROGRAM_MAP(spcforce_sound_map) - MCFG_CPU_IO_MAP(spcforce_sound_io_map) + MCFG_MCS48_PORT_BUS_IN_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(spcforce_state, SN76496_latch_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(spcforce_state, SN76496_select_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(spcforce_state, SN76496_select_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(spcforce_state, t0_r)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -428,7 +425,7 @@ ROM_START( meteors ) ROM_END -GAME( 1980, spcforce, 0, spcforce, spcforce, driver_device, 0, ROT270, "Venture Line", "Space Force (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 19??, spcforc2, spcforce, spcforce, spcforc2, driver_device, 0, ROT270, "bootleg? (Elcon)", "Space Force (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, meteor, spcforce, spcforce, spcforc2, driver_device, 0, ROT270, "Venture Line", "Meteoroids", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 19??, meteors, spcforce, meteors, spcforc2, driver_device, 0, ROT0, "Amusement World", "Meteors", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spcforce, 0, spcforce, spcforce, spcforce_state, 0, ROT270, "Venture Line", "Space Force (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 19??, spcforc2, spcforce, spcforce, spcforc2, spcforce_state, 0, ROT270, "bootleg? (Elcon)", "Space Force (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, meteor, spcforce, spcforce, spcforc2, spcforce_state, 0, ROT270, "Venture Line", "Meteoroids", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 19??, meteors, spcforce, meteors, spcforc2, spcforce_state, 0, ROT0, "Amusement World", "Meteors", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/spdodgeb.cpp b/src/mame/drivers/spdodgeb.cpp index f8583a17e93..df965abe70d 100644 --- a/src/mame/drivers/spdodgeb.cpp +++ b/src/mame/drivers/spdodgeb.cpp @@ -409,7 +409,7 @@ void spdodgeb_state::machine_reset() m_last_dash[0] = m_last_dash[1] = 0; } -static MACHINE_CONFIG_START( spdodgeb, spdodgeb_state ) +static MACHINE_CONFIG_START( spdodgeb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12MHz/6) /* 2MHz ? */ @@ -441,13 +441,13 @@ static MACHINE_CONFIG_START( spdodgeb, spdodgeb_state ) MCFG_SOUND_ADD("msm1", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(spdodgeb_state, spd_adpcm_int_1)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz? */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8kHz? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MCFG_SOUND_ADD("msm2", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(spdodgeb_state, spd_adpcm_int_2)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8kHz? */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8kHz? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END @@ -576,6 +576,6 @@ ROM_END -GAME( 1987, spdodgeb, 0, spdodgeb, spdodgeb, driver_device, 0, ROT0, "Technos Japan", "Super Dodge Ball (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, nkdodge, spdodgeb, spdodgeb, spdodgeb, driver_device, 0, ROT0, "Technos Japan", "Nekketsu Koukou Dodgeball Bu (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, nkdodgeb, spdodgeb, spdodgeb, spdodgeb, driver_device, 0, ROT0, "bootleg", "Nekketsu Koukou Dodgeball Bu (Japan, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, spdodgeb, 0, spdodgeb, spdodgeb, spdodgeb_state, 0, ROT0, "Technos Japan", "Super Dodge Ball (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, nkdodge, spdodgeb, spdodgeb, spdodgeb, spdodgeb_state, 0, ROT0, "Technos Japan", "Nekketsu Koukou Dodgeball Bu (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, nkdodgeb, spdodgeb, spdodgeb, spdodgeb, spdodgeb_state, 0, ROT0, "bootleg", "Nekketsu Koukou Dodgeball Bu (Japan, bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/spec128.cpp b/src/mame/drivers/spec128.cpp index 9e85d1ba47f..5e5b31fbc2e 100644 --- a/src/mame/drivers/spec128.cpp +++ b/src/mame/drivers/spec128.cpp @@ -359,8 +359,8 @@ ROM_START(hc2000) ROMX_LOAD("hc2000.v2", 0x14000,0x4000, CRC(65d90464) SHA1(5e2096e6460ff2120c8ada97579fdf82c1199c09), ROM_BIOS(2)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1986, spec128, 0, 0, spectrum_128, spec_plus, driver_device, 0, "Sinclair Research Ltd", "ZX Spectrum 128" , 0 ) -COMP( 1986, specpls2, spec128, 0, spectrum_128, spec_plus, driver_device, 0, "Amstrad plc", "ZX Spectrum +2" , 0 ) -COMP( 1991, hc128, spec128, 0, spectrum_128, spec_plus, driver_device, 0, "ICE-Felix", "HC-128" , 0 ) -COMP( 1992, hc2000, spec128, 0, spectrum_128, spec_plus, driver_device, 0, "ICE-Felix", "HC-2000" , MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1986, spec128, 0, 0, spectrum_128, spec_plus, spectrum_state, 0, "Sinclair Research Ltd", "ZX Spectrum 128", 0 ) +COMP( 1986, specpls2, spec128, 0, spectrum_128, spec_plus, spectrum_state, 0, "Amstrad plc", "ZX Spectrum +2", 0 ) +COMP( 1991, hc128, spec128, 0, spectrum_128, spec_plus, spectrum_state, 0, "ICE-Felix", "HC-128", 0 ) +COMP( 1992, hc2000, spec128, 0, spectrum_128, spec_plus, spectrum_state, 0, "ICE-Felix", "HC-2000", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/special.cpp b/src/mame/drivers/special.cpp index 1530648d38c..228d2c6c002 100644 --- a/src/mame/drivers/special.cpp +++ b/src/mame/drivers/special.cpp @@ -49,7 +49,7 @@ static ADDRESS_MAP_START( erik_io_map, AS_IO, 8, special_state ) AM_RANGE(0xf1, 0xf1) AM_READWRITE(erik_rr_reg_r, erik_rr_reg_w) AM_RANGE(0xf2, 0xf2) AM_READWRITE(erik_rc_reg_r, erik_rc_reg_w) AM_RANGE(0xf3, 0xf3) AM_READWRITE(erik_disk_reg_r, erik_disk_reg_w) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("fd1793", fd1793_t, read, write) + AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("fd1793", fd1793_device, read, write) ADDRESS_MAP_END static ADDRESS_MAP_START(specimx_mem, AS_PROGRAM, 8, special_state ) @@ -60,7 +60,7 @@ static ADDRESS_MAP_START(specimx_mem, AS_PROGRAM, 8, special_state ) AM_RANGE( 0xffc0, 0xffdf ) AM_RAMBANK("bank4") AM_RANGE( 0xffe0, 0xffe3 ) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) AM_RANGE( 0xffe4, 0xffe7 ) AM_RAM //external 8255 - AM_RANGE( 0xffe8, 0xffeb ) AM_DEVREADWRITE("fd1793", fd1793_t, read, write) + AM_RANGE( 0xffe8, 0xffeb ) AM_DEVREADWRITE("fd1793", fd1793_device, read, write) AM_RANGE( 0xffec, 0xffef ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) AM_RANGE( 0xfff0, 0xfff3 ) AM_READWRITE(specimx_disk_ctrl_r, specimx_disk_ctrl_w) AM_RANGE( 0xfff8, 0xfffb ) AM_READWRITE(specimx_video_color_r,specimx_video_color_w) @@ -358,7 +358,7 @@ static SLOT_INTERFACE_START( specimx_floppies ) SLOT_INTERFACE_END /* Machine driver */ -static MACHINE_CONFIG_START( special, special_state ) +static MACHINE_CONFIG_START( special ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 2000000) MCFG_CPU_PROGRAM_MAP(specialist_mem) @@ -475,7 +475,7 @@ static MACHINE_CONFIG_DERIVED( specimx, special ) MCFG_RAM_DEFAULT_VALUE(0x00) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( erik, special_state ) +static MACHINE_CONFIG_START( erik ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(erik_mem) @@ -598,11 +598,11 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, special, 0, 0, special, special, special_state, special, "", "Specialist", 0 ) -COMP( 1985, specialm, special, 0, specialm, special, special_state, special, "", "Specialist M", 0 ) -COMP( 1985, pioner, special, 0, special, special, special_state, special, "", "Pioner", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1985, special, 0, 0, special, special, special_state, special, "", "Specialist", 0 ) +COMP( 1985, specialm, special, 0, specialm, special, special_state, special, "", "Specialist M", 0 ) +COMP( 1985, pioner, special, 0, special, special, special_state, special, "", "Pioner", MACHINE_NOT_WORKING ) COMP( 1985, specialp, special, 0, specialp, specialp, special_state, special, "", "Specialist + hires graph", MACHINE_NOT_WORKING ) -COMP( 1985, lik, special, 0, special, lik, special_state, special, "", "Lik", 0 ) -COMP( 1985, specimx, special, 0, specimx, specimx, driver_device, 0, "", "Specialist MX", 0) -COMP( 1994, erik, special, 0, erik, special, special_state, erik, "", "Erik", 0 ) +COMP( 1985, lik, special, 0, special, lik, special_state, special, "", "Lik", 0 ) +COMP( 1985, specimx, special, 0, specimx, specimx, special_state, 0, "", "Specialist MX", 0 ) +COMP( 1994, erik, special, 0, erik, special, special_state, erik, "", "Erik", 0 ) diff --git a/src/mame/drivers/spectra.cpp b/src/mame/drivers/spectra.cpp index 29b3b71963e..7009475ed1a 100644 --- a/src/mame/drivers/spectra.cpp +++ b/src/mame/drivers/spectra.cpp @@ -220,7 +220,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( spectra_state::outtimer) } -static MACHINE_CONFIG_START( spectra, spectra_state ) +static MACHINE_CONFIG_START( spectra ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_3_579545MHz/4) // actually a M6503 MCFG_CPU_PROGRAM_MAP(spectra_map) @@ -272,4 +272,4 @@ ROM_START(spectra) ROM_END -GAME(1979, spectra, 0, spectra, spectra, driver_device, 0, ROT0, "Valley", "Spectra IV", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(1979, spectra, 0, spectra, spectra, spectra_state, 0, ROT0, "Valley", "Spectra IV", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/spectrum.cpp b/src/mame/drivers/spectrum.cpp index 79c1c4ab200..e8e6c6255eb 100644 --- a/src/mame/drivers/spectrum.cpp +++ b/src/mame/drivers/spectrum.cpp @@ -680,7 +680,7 @@ DEVICE_IMAGE_LOAD_MEMBER(spectrum_state, spectrum_cart) return image_init_result::PASS; } -MACHINE_CONFIG_START( spectrum_common, spectrum_state ) +MACHINE_CONFIG_START( spectrum_common ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, X1 / 4) /* This is verified only for the ZX Spectum. Other clones are reported to have different clocks */ @@ -697,7 +697,7 @@ MACHINE_CONFIG_START( spectrum_common, spectrum_state ) MCFG_SCREEN_RAW_PARAMS(X1 / 2, 448, 0, 352, 312, 0, 296) MCFG_SCREEN_UPDATE_DRIVER(spectrum_state, screen_update_spectrum) - MCFG_SCREEN_VBLANK_DRIVER(spectrum_state, screen_eof_spectrum) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(spectrum_state, screen_vblank_spectrum)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 16) @@ -966,36 +966,36 @@ ROM_START(zvezda) ROM_LOAD( "2764-far-cpu_blue.bin", 0x2000, 0x2000, CRC(ebab64bc) SHA1(8c98a8b6e927b02cf602c20a1b50838e60f7785b)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1982, spectrum, 0, 0, spectrum, spectrum, spectrum_state, spectrum, "Sinclair Research Ltd", "ZX Spectrum" , 0) -COMP( 1987, spec80k, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "ZX Spectrum 80K" , MACHINE_UNOFFICIAL) -COMP( 1995, specide, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "ZX Spectrum IDE" , MACHINE_UNOFFICIAL) -COMP( 1986, inves, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Investronica", "Inves Spectrum 48K+" , 0) -COMP( 1985, tk90x, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Micro Digital", "TK 90X Color Computer" , 0) -COMP( 1986, tk95, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Micro Digital", "TK 95 Color Computer" , 0) -COMP( 1985, hc85, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ICE-Felix", "HC-85" , 0) -COMP( 1988, hc88, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ICE-Felix", "HC-88" , MACHINE_NOT_WORKING) -COMP( 1990, hc90, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ICE-Felix", "HC-90" , 0) -COMP( 1991, hc91, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "ICE-Felix", "HC-91" , 0) -COMP( 1988, cobrasp, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ITCI", "Cobra (ITCI)" , MACHINE_NOT_WORKING) -COMP( 1988, cobra80, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ITCI", "Cobra 80K (ITCI)" , MACHINE_NOT_WORKING) -COMP( 1987, cip01, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Electronica", "CIP-01" , 0) // keyboard should be spectrum, but image was not clear -COMP( 1988, cip03, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Electronica", "CIP-03" , 0) // keyboard should be spectrum, but image was not clear -COMP( 1990, jet, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Electromagnetica", "JET" , 0) // keyboard should be spectrum, but image was not clear -COMP( 1987, dgama87, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik Gama 87" , 0) -COMP( 1988, dgama88, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik Gama 88" , 0) -COMP( 1989, dgama89, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik Gama 89" , 0) -COMP( 1990, didakt90, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik 90" , 0) -COMP( 1991, didakm91, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik M 91" , 0) -COMP( 1992, didakm92, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik M 92" , 0) -COMP( 1992, didaktk, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik Kompakt" , 0) -COMP( 1993, didakm93, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik M 93" , 0) -COMP( 1988, mistrum, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Amaterske RADIO", "Mistrum" , 0) // keyboard could be spectrum in some models (since it was a build-yourself design) -COMP( 1990, blitzs, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Blic" , 0) // no keyboard images found -COMP( 1990, byte, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Byte" , 0) // no keyboard images found -COMP( 199?, orizon, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Orizon-Micro" , 0) // no keyboard images found -COMP( 1993, quorum48, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Kvorum 48K" , MACHINE_NOT_WORKING) -COMP( 1993, magic6, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Magic 6" , MACHINE_NOT_WORKING) // keyboard should be spectrum, but image was not clear -COMP( 1990, compani1, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Kompanion 1" , 0) // no keyboard images found -COMP( 1990, spektrbk, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Spektr BK-001" , 0) -COMP( 1990, zvezda, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Zvezda" , 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, spectrum, 0, 0, spectrum, spectrum, spectrum_state, spectrum, "Sinclair Research Ltd", "ZX Spectrum" , 0 ) +COMP( 1987, spec80k, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "ZX Spectrum 80K", MACHINE_UNOFFICIAL ) +COMP( 1995, specide, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "ZX Spectrum IDE", MACHINE_UNOFFICIAL ) +COMP( 1986, inves, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Investronica", "Inves Spectrum 48K+", 0 ) +COMP( 1985, tk90x, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Micro Digital", "TK 90X Color Computer", 0 ) +COMP( 1986, tk95, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Micro Digital", "TK 95 Color Computer", 0 ) +COMP( 1985, hc85, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ICE-Felix", "HC-85", 0 ) +COMP( 1988, hc88, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ICE-Felix", "HC-88", MACHINE_NOT_WORKING ) +COMP( 1990, hc90, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ICE-Felix", "HC-90", 0 ) +COMP( 1991, hc91, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "ICE-Felix", "HC-91", 0 ) +COMP( 1988, cobrasp, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ITCI", "Cobra (ITCI)", MACHINE_NOT_WORKING ) +COMP( 1988, cobra80, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "ITCI", "Cobra 80K (ITCI)", MACHINE_NOT_WORKING ) +COMP( 1987, cip01, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Electronica", "CIP-01", 0 ) // keyboard should be spectrum, but image was not clear +COMP( 1988, cip03, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Electronica", "CIP-03", 0 ) // keyboard should be spectrum, but image was not clear +COMP( 1990, jet, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Electromagnetica", "JET", 0 ) // keyboard should be spectrum, but image was not clear +COMP( 1987, dgama87, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik Gama 87", 0 ) +COMP( 1988, dgama88, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik Gama 88", 0 ) +COMP( 1989, dgama89, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik Gama 89", 0 ) +COMP( 1990, didakt90, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik 90", 0 ) +COMP( 1991, didakm91, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik M 91", 0 ) +COMP( 1992, didakm92, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik M 92", 0 ) +COMP( 1992, didaktk, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik Kompakt", 0 ) +COMP( 1993, didakm93, spectrum, 0, spectrum, spec_plus, spectrum_state, spectrum, "Didaktik Skalica", "Didaktik M 93", 0 ) +COMP( 1988, mistrum, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "Amaterske RADIO", "Mistrum", 0 ) // keyboard could be spectrum in some models (since it was a build-yourself design) +COMP( 1990, blitzs, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Blic", 0 ) // no keyboard images found +COMP( 1990, byte, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Byte", 0 ) // no keyboard images found +COMP( 199?, orizon, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Orizon-Micro", 0 ) // no keyboard images found +COMP( 1993, quorum48, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Kvorum 48K", MACHINE_NOT_WORKING ) +COMP( 1993, magic6, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Magic 6", MACHINE_NOT_WORKING ) // keyboard should be spectrum, but image was not clear +COMP( 1990, compani1, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Kompanion 1", 0 ) // no keyboard images found +COMP( 1990, spektrbk, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Spektr BK-001", 0 ) +COMP( 1990, zvezda, spectrum, 0, spectrum, spectrum, spectrum_state, spectrum, "", "Zvezda", 0 ) diff --git a/src/mame/drivers/speedatk.cpp b/src/mame/drivers/speedatk.cpp index 5e2d0c021a7..a383be07d4b 100644 --- a/src/mame/drivers/speedatk.cpp +++ b/src/mame/drivers/speedatk.cpp @@ -304,7 +304,7 @@ WRITE8_MEMBER(speedatk_state::output_w) logerror("%02x\n",data); } -static MACHINE_CONFIG_START( speedatk, speedatk_state ) +static MACHINE_CONFIG_START( speedatk ) MCFG_CPU_ADD("maincpu", Z80,MASTER_CLOCK/2) //divider is unknown MCFG_CPU_PROGRAM_MAP(speedatk_mem) @@ -362,4 +362,4 @@ ROM_START( speedatk ) ROM_LOAD( "cb2.bpr", 0x0020, 0x0100, CRC(a604cf96) SHA1(a4ef6e77dcd3abe4c27e8e636222a5ee711a51f5) ) /* lookup table */ ROM_END -GAME( 1984, speedatk, 0, speedatk, speedatk, driver_device, 0, ROT0, "Seta Kikaku Corp.", "Speed Attack! (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, speedatk, 0, speedatk, speedatk, speedatk_state, 0, ROT0, "Seta Kikaku Corp.", "Speed Attack! (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/speedbal.cpp b/src/mame/drivers/speedbal.cpp index 6617a853e1a..cc4d2c493ae 100644 --- a/src/mame/drivers/speedbal.cpp +++ b/src/mame/drivers/speedbal.cpp @@ -258,7 +258,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( speedbal, speedbal_state ) +static MACHINE_CONFIG_START( speedbal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) // 4 MHz diff --git a/src/mame/drivers/speedspn.cpp b/src/mame/drivers/speedspn.cpp index 99e75c8e18d..2de4f819986 100644 --- a/src/mame/drivers/speedspn.cpp +++ b/src/mame/drivers/speedspn.cpp @@ -277,7 +277,7 @@ void speedspn_state::machine_start() } -static MACHINE_CONFIG_START( speedspn, speedspn_state ) +static MACHINE_CONFIG_START( speedspn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,6000000) /* 6 MHz */ @@ -306,7 +306,7 @@ static MACHINE_CONFIG_START( speedspn, speedspn_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1122000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1122000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MACHINE_CONFIG_END @@ -339,4 +339,4 @@ ROM_END /*** GAME DRIVERS ************************************************************/ -GAME( 1994, speedspn, 0, speedspn, speedspn, driver_device, 0, ROT180, "TCH", "Speed Spin", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, speedspn, 0, speedspn, speedspn, speedspn_state, 0, ROT180, "TCH", "Speed Spin", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/speglsht.cpp b/src/mame/drivers/speglsht.cpp index a625bdefa15..2a682f6e8dd 100644 --- a/src/mame/drivers/speglsht.cpp +++ b/src/mame/drivers/speglsht.cpp @@ -395,7 +395,7 @@ uint32_t speglsht_state::screen_update_speglsht(screen_device &screen, bitmap_rg return 0; } -static MACHINE_CONFIG_START( speglsht, speglsht_state ) +static MACHINE_CONFIG_START( speglsht ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",ST0016_CPU, 8000000) /* 8 MHz ? */ MCFG_CPU_PROGRAM_MAP(st0016_mem) diff --git a/src/mame/drivers/spiders.cpp b/src/mame/drivers/spiders.cpp index 715faac00b3..c25b6eac5b7 100644 --- a/src/mame/drivers/spiders.cpp +++ b/src/mame/drivers/spiders.cpp @@ -541,7 +541,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( spiders, spiders_state ) +static MACHINE_CONFIG_START( spiders ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2800000) @@ -704,7 +704,7 @@ ROM_END *************************************/ /* this is a newer version with just one bug fix */ -GAME( 1981, spiders, 0, spiders, spiders, driver_device, 0, ROT270, "Sigma Enterprises Inc.", "Spiders (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) -GAME( 1981, spiders2, spiders, spiders, spiders, driver_device, 0, ROT270, "Sigma Enterprises Inc.", "Spiders (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) -GAME( 1981, spiders3, spiders, spiders, spiders, driver_device, 0, ROT270, "Sigma Enterprises Inc.", "Spiders (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) -GAME( 1981, spinner, spiders, spiders, spiders, driver_device, 0, ROT270, "bootleg", "Spinner", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 1981, spiders, 0, spiders, spiders, spiders_state, 0, ROT270, "Sigma Enterprises Inc.", "Spiders (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 1981, spiders2, spiders, spiders, spiders, spiders_state, 0, ROT270, "Sigma Enterprises Inc.", "Spiders (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 1981, spiders3, spiders, spiders, spiders, spiders_state, 0, ROT270, "Sigma Enterprises Inc.", "Spiders (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 1981, spinner, spiders, spiders, spiders, spiders_state, 0, ROT270, "bootleg", "Spinner", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/spinb.cpp b/src/mame/drivers/spinb.cpp index 70962152bea..12c0f863015 100644 --- a/src/mame/drivers/spinb.cpp +++ b/src/mame/drivers/spinb.cpp @@ -519,7 +519,7 @@ WRITE8_MEMBER( spinb_state::ppia_c_w ) { // pc4 - READY line back to cpu board, but not used if (BIT(data, 5) != BIT(m_portc_a, 5)) - m_msm_a->set_prescaler_selector(*m_msm_a, BIT(data, 5) ? MSM5205_S48_4B : MSM5205_S96_4B); // S1 pin + m_msm_a->set_prescaler_selector(*m_msm_a, BIT(data, 5) ? msm5205_device::S48_4B : msm5205_device::S96_4B); // S1 pin m_msm_a->reset_w(BIT(data, 6)); m_ic5a->clear_w(!BIT(data, 6)); m_portc_a = data & 0xfe; @@ -529,7 +529,7 @@ WRITE8_MEMBER( spinb_state::ppim_c_w ) { // pc4 - READY line back to cpu board, but not used if (BIT(data, 5) != BIT(m_portc_m, 5)) - m_msm_m->set_prescaler_selector(*m_msm_m, BIT(data, 5) ? MSM5205_S48_4B : MSM5205_S96_4B); // S1 pin + m_msm_m->set_prescaler_selector(*m_msm_m, BIT(data, 5) ? msm5205_device::S48_4B : msm5205_device::S96_4B); // S1 pin m_msm_m->reset_w(BIT(data, 6)); m_ic5m->clear_w(!BIT(data, 6)); m_portc_m = data & 0xfe; @@ -637,7 +637,7 @@ uint32_t spinb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, return 0; } -static MACHINE_CONFIG_START( spinb, spinb_state ) +static MACHINE_CONFIG_START( spinb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz / 2) MCFG_CPU_PROGRAM_MAP(spinb_map) @@ -668,12 +668,12 @@ static MACHINE_CONFIG_START( spinb, spinb_state ) MCFG_SPEAKER_STANDARD_MONO("msmavol") MCFG_SOUND_ADD("msm_a", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(spinb_state, vck_a_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmavol", 1.0) MCFG_SPEAKER_STANDARD_MONO("msmmvol") MCFG_SOUND_ADD("msm_m", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(spinb_state, vck_m_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmmvol", 1.0) /* Devices */ diff --git a/src/mame/drivers/splash.cpp b/src/mame/drivers/splash.cpp index 38bd11cecc0..ea15d95ec8d 100644 --- a/src/mame/drivers/splash.cpp +++ b/src/mame/drivers/splash.cpp @@ -487,7 +487,7 @@ MACHINE_RESET_MEMBER(splash_state,splash) m_ret = 0x100; } -static MACHINE_CONFIG_START( splash, splash_state ) +static MACHINE_CONFIG_START( splash ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12MHz (24/2) */ @@ -524,7 +524,7 @@ static MACHINE_CONFIG_START( splash, splash_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(splash_state, splash_msm5205_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ /* Sample rate = 384kHz/48 */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ /* Sample rate = 384kHz/48 */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -542,7 +542,7 @@ INTERRUPT_GEN_MEMBER(splash_state::roldfrog_interrupt) roldfrog_update_irq(); } -static MACHINE_CONFIG_START( roldfrog, splash_state ) +static MACHINE_CONFIG_START( roldfrog ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz - verified */ @@ -628,7 +628,7 @@ MACHINE_START_MEMBER(splash_state, funystrp) save_item(NAME(m_snd_interrupt_enable2)); } -static MACHINE_CONFIG_START( funystrp, splash_state ) +static MACHINE_CONFIG_START( funystrp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz (24/2) */ @@ -662,12 +662,12 @@ static MACHINE_CONFIG_START( funystrp, splash_state ) MCFG_SOUND_ADD("msm1", MSM5205, XTAL_400kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(splash_state, adpcm_int1)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 1 / 48 */ /* Sample rate = 400kHz/64 */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 1 / 48 */ /* Sample rate = 400kHz/64 */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ADD("msm2", MSM5205, XTAL_400kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(splash_state, adpcm_int2)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 1 / 96 */ /* Sample rate = 400kHz/96 */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 1 / 96 */ /* Sample rate = 400kHz/96 */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -1408,13 +1408,13 @@ DRIVER_INIT_MEMBER(splash_state,funystrp) m_maincpu->space(AS_PROGRAM).install_read_handler(0x100000, 0x1fffff, read16_delegate(FUNC(splash_state::funystrp_protection_r),this)); } -GAME( 1992, splash, 0, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.2 World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, splash10, splash, splash, splash, splash_state, splash10, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.0 World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, paintlad, splash, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Painted Lady (Splash) (Ver. 1.3 US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, splash, 0, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.2 World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, splash10, splash, splash, splash, splash_state, splash10, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.0 World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, paintlad, splash, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Painted Lady (Splash) (Ver. 1.3 US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, roldfrog, 0, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, roldfroga,roldfrog, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, rebus, 0, roldfrog, splash, splash_state, rebus, ROT0, "Microhard", "Rebus", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, roldfrog, 0, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, roldfroga,roldfrog, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, rebus, 0, roldfrog, splash, splash_state, rebus, ROT0, "Microhard", "Rebus", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 199?, funystrp, 0, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard / MagicGames", "Funny Strip", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 199?, puckpepl, funystrp, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard", "Puck People", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 199?, ringball, funystrp, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard", "Ring & Ball (unknown title)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) // Wouldn't surprise me if in-game is actually called King & Bell ... +GAME( 199?, puckpepl, funystrp, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard", "Puck People", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 199?, ringball, funystrp, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard", "Ring & Ball (unknown title)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) // Wouldn't surprise me if in-game is actually called King & Bell ... diff --git a/src/mame/drivers/splus.cpp b/src/mame/drivers/splus.cpp index a449d8aca88..1191a8b4882 100644 --- a/src/mame/drivers/splus.cpp +++ b/src/mame/drivers/splus.cpp @@ -682,7 +682,7 @@ INPUT_PORTS_END * Machine Driver * *************************/ -static MACHINE_CONFIG_START( splus, splus_state ) // basic machine hardware +static MACHINE_CONFIG_START( splus ) // basic machine hardware MCFG_CPU_ADD("maincpu", I80C32, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(splus_map) MCFG_CPU_IO_MAP(splus_iomap) @@ -726,5 +726,5 @@ ROM_END * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT GAMEL( 1994, spss4240, 0, splus, splus, splus_state, splus, ROT0, "IGT - International Game Technology", "S-Plus (SS4240) Coral Reef", MACHINE_NOT_WORKING, layout_splus ) diff --git a/src/mame/drivers/spoker.cpp b/src/mame/drivers/spoker.cpp index 41cd5c08a4c..1f898e21734 100644 --- a/src/mame/drivers/spoker.cpp +++ b/src/mame/drivers/spoker.cpp @@ -291,7 +291,7 @@ static ADDRESS_MAP_START( 3super8_portmap, AS_IO, 8, spoker_state ) // AM_RANGE(0x4000, 0x40ff) AM_WRITENOP AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") -// The following one (0x6480) should be output. At begining of code, there is a PPI initialization +// The following one (0x6480) should be output. At beginning of code, there is a PPI initialization // setting O-I-I for ports ABC. Except these routines are just a leftover from the original game, // and now the I/O is handled by a CPLD or FPGA (as seen in goldstar and gp98). AM_RANGE(0x6480, 0x6480) AM_READ_PORT( "IN0" ) @@ -316,24 +316,69 @@ static INPUT_PORTS_START( spoker ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPUNKNOWN( 0x02, 0x02 ) - PORT_DIPUNKNOWN( 0x04, 0x04 ) - PORT_DIPUNKNOWN( 0x08, 0x08 ) - PORT_DIPUNKNOWN( 0x10, 0x10 ) - PORT_DIPUNKNOWN( 0x20, 0x20 ) + PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x18, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x14, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x0c, "1 Coin/10 Credits" ) + PORT_DIPSETTING( 0x08, "1 Coin/20 Credits" ) + PORT_DIPSETTING( 0x04, "1 Coin/40 Credits" ) + PORT_DIPSETTING( 0x00, "1 Coin/50 Credits" ) + PORT_DIPNAME( 0x20, 0x20, "Card Type" ) + PORT_DIPSETTING( 0x20, "Cards" ) + PORT_DIPSETTING( 0x00, "Numbers" ) PORT_DIPUNKNOWN( 0x40, 0x40 ) PORT_DIPUNKNOWN( 0x80, 0x80 ) PORT_START("DSW2") + PORT_DIPNAME( 0x03, 0x00, "Min Bet" ) + PORT_DIPSETTING( 0x03, "1" ) + PORT_DIPSETTING( 0x02, "5" ) + PORT_DIPSETTING( 0x01, "10" ) + PORT_DIPSETTING( 0x00, "20" ) + PORT_DIPNAME( 0x1c, 0x1c, "Key In/Out" ) + PORT_DIPSETTING( 0x1c, "10 Credits" ) + PORT_DIPSETTING( 0x18, "20 Credits" ) + PORT_DIPSETTING( 0x14, "40 Credits" ) + PORT_DIPSETTING( 0x10, "50 Credits" ) + PORT_DIPSETTING( 0x0c, "100 Credits" ) + PORT_DIPSETTING( 0x08, "200 Credits" ) + PORT_DIPSETTING( 0x04, "250 Credits" ) + PORT_DIPSETTING( 0x00, "500 Credits" ) + PORT_DIPUNKNOWN( 0x20, 0x20 ) + PORT_DIPUNKNOWN( 0x40, 0x40 ) + PORT_DIPUNKNOWN( 0x80, 0x80 ) + + PORT_START("DSW3") PORT_DIPUNKNOWN( 0x01, 0x01 ) PORT_DIPUNKNOWN( 0x02, 0x02 ) PORT_DIPUNKNOWN( 0x04, 0x04 ) PORT_DIPUNKNOWN( 0x08, 0x08 ) + PORT_DIPNAME( 0x10, 0x10, "Credit Limit" ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, "On (2000)" ) + PORT_DIPUNKNOWN( 0x20, 0x20 ) + PORT_DIPUNKNOWN( 0x40, 0x40 ) + PORT_DIPUNKNOWN( 0x80, 0x80 ) + + PORT_START("DSW4") + PORT_DIPNAME( 0x07, 0x07, "Max Bet" ) + PORT_DIPSETTING( 0x07, "1" ) + PORT_DIPSETTING( 0x06, "2" ) + PORT_DIPSETTING( 0x05, "5" ) + PORT_DIPSETTING( 0x04, "10" ) + PORT_DIPSETTING( 0x03, "20" ) + PORT_DIPSETTING( 0x02, "40" ) + PORT_DIPSETTING( 0x01, "50" ) + PORT_DIPSETTING( 0x00, "100" ) + PORT_DIPUNKNOWN( 0x08, 0x08 ) PORT_DIPUNKNOWN( 0x10, 0x10 ) PORT_DIPUNKNOWN( 0x20, 0x20 ) PORT_DIPUNKNOWN( 0x40, 0x40 ) PORT_DIPUNKNOWN( 0x80, 0x80 ) - PORT_START("DSW3") + PORT_START("DSW5") PORT_DIPUNKNOWN( 0x01, 0x01 ) PORT_DIPUNKNOWN( 0x02, 0x02 ) PORT_DIPUNKNOWN( 0x04, 0x04 ) @@ -343,12 +388,6 @@ static INPUT_PORTS_START( spoker ) PORT_DIPUNKNOWN( 0x40, 0x40 ) PORT_DIPUNKNOWN( 0x80, 0x80 ) - PORT_START("DSW4") - PORT_DIPUNKNOWN( 0xff, 0xff ) - - PORT_START("DSW5") - PORT_DIPUNKNOWN( 0xff, 0xff ) - PORT_START("SERVICE") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Memory Clear") // stats, memory @@ -550,7 +589,7 @@ void spoker_state::machine_reset() Machine Drivers ***************************************************************************/ -static MACHINE_CONFIG_START( spoker, spoker_state ) +static MACHINE_CONFIG_START( spoker ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 2) /* HD64180RP8, 8 MHz? */ @@ -588,7 +627,7 @@ static MACHINE_CONFIG_START( spoker, spoker_state ) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.4) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz / 12, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_12MHz / 12, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -926,8 +965,8 @@ GAME( 1996, spk205us, spk306us, spoker, spoker, spoker_state, spkleftover, GAME( 1996, spk203us, spk306us, spoker, spoker, spoker_state, spkleftover, ROT0, "IGS", "Super Poker (v203US)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver GAME( 1996, spk200ua, spk306us, spoker, spoker, spoker_state, spkleftover, ROT0, "IGS", "Super Poker (v200UA)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver GAME( 1993?, spk116it, spk306us, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v116IT)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993?, spk116itmx, spk306us, spoker, spoker, driver_device, 0, ROT0, "IGS", "Super Poker (v116IT-MX)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver +GAME( 1993?, spk116itmx, spk306us, spoker, spoker, spoker_state, 0, ROT0, "IGS", "Super Poker (v116IT-MX)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver GAME( 1993?, spk115it, spk306us, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v115IT)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993?, spk114it, spk306us, spoker, spoker, driver_device, 0, ROT0, "IGS", "Super Poker (v114IT)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver +GAME( 1993?, spk114it, spk306us, spoker, spoker, spoker_state, 0, ROT0, "IGS", "Super Poker (v114IT)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver GAME( 1996, spk102ua, spk306us, spoker, spoker, spoker_state, spkleftover, ROT0, "IGS", "Super Poker (v102UA)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs proper machine driver GAME( 1993?, 3super8, 0, 3super8, 3super8, spoker_state, 3super8, ROT0, "", "3 Super 8 (Italy)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //roms are badly dumped diff --git a/src/mame/drivers/spool99.cpp b/src/mame/drivers/spool99.cpp index 56e59cdc589..f666619d9f8 100644 --- a/src/mame/drivers/spool99.cpp +++ b/src/mame/drivers/spool99.cpp @@ -355,7 +355,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( spool99, spool99_state ) +static MACHINE_CONFIG_START( spool99 ) MCFG_CPU_ADD("maincpu", Z80, 24000000/8) MCFG_CPU_PROGRAM_MAP(spool99_map) @@ -379,7 +379,7 @@ static MACHINE_CONFIG_START( spool99, spool99_state ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) MACHINE_CONFIG_END diff --git a/src/mame/drivers/sprcros2.cpp b/src/mame/drivers/sprcros2.cpp index 812703941df..ee4d98adc36 100644 --- a/src/mame/drivers/sprcros2.cpp +++ b/src/mame/drivers/sprcros2.cpp @@ -441,7 +441,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(sprcros2_state::master_scanline) m_master_cpu->set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( sprcros2, sprcros2_state ) +static MACHINE_CONFIG_START( sprcros2 ) /* basic machine hardware */ MCFG_CPU_ADD("master_cpu",Z80,MAIN_CLOCK/4) @@ -566,5 +566,5 @@ ROM_START( sprcros2a ) ROM_LOAD( "sc-60.4k", 0x0320, 0x0100, CRC(d7a4e57d) SHA1(6db02ec6aa55b05422cb505e63c71e36b4b11b4a) ) //fg clut ROM_END -GAME( 1986, sprcros2, 0, sprcros2, sprcros2, driver_device, 0, ROT0, "GM Shoji", "Super Cross II (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, sprcros2a,sprcros2, sprcros2, sprcros2, driver_device, 0, ROT0, "GM Shoji", "Super Cross II (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, sprcros2, 0, sprcros2, sprcros2, sprcros2_state, 0, ROT0, "GM Shoji", "Super Cross II (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, sprcros2a, sprcros2, sprcros2, sprcros2, sprcros2_state, 0, ROT0, "GM Shoji", "Super Cross II (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sprint2.cpp b/src/mame/drivers/sprint2.cpp index 6a21fc6d182..1a0fcf15ad0 100644 --- a/src/mame/drivers/sprint2.cpp +++ b/src/mame/drivers/sprint2.cpp @@ -529,7 +529,7 @@ static GFXDECODE_START( sprint2 ) GFXDECODE_END -static MACHINE_CONFIG_START( sprint2, sprint2_state ) +static MACHINE_CONFIG_START( sprint2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12_096MHz / 16) @@ -545,7 +545,7 @@ static MACHINE_CONFIG_START( sprint2, sprint2_state ) MCFG_SCREEN_SIZE(512, 262) MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 223) MCFG_SCREEN_UPDATE_DRIVER(sprint2_state, screen_update_sprint2) - MCFG_SCREEN_VBLANK_DRIVER(sprint2_state, screen_eof_sprint2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sprint2_state, screen_vblank_sprint2)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", sprint2) diff --git a/src/mame/drivers/sprint4.cpp b/src/mame/drivers/sprint4.cpp index 668bf7ce965..56fe8c86c7f 100644 --- a/src/mame/drivers/sprint4.cpp +++ b/src/mame/drivers/sprint4.cpp @@ -79,11 +79,9 @@ TIMER_CALLBACK_MEMBER(sprint4_state::nmi_callback) static_cast(ioport("LEVER4")->read()) }; - int i; - /* emulation of steering wheels isn't very accurate */ - for (i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) { signed char delta = wheel[i] - m_last_wheel[i]; @@ -120,13 +118,26 @@ TIMER_CALLBACK_MEMBER(sprint4_state::nmi_callback) if (ioport("IN0")->read() & 0x40) m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); - timer_set(m_screen->time_until_pos(scanline), TIMER_NMI, scanline); + m_nmi_timer->adjust(m_screen->time_until_pos(scanline), scanline); +} + + +void sprint4_state::machine_start() +{ + m_nmi_timer = timer_alloc(TIMER_NMI); + + save_item(NAME(m_da_latch)); + save_item(NAME(m_steer_FF1)); + save_item(NAME(m_steer_FF2)); + save_item(NAME(m_gear)); + save_item(NAME(m_last_wheel)); + save_item(NAME(m_collision)); } void sprint4_state::machine_reset() { - timer_set(m_screen->time_until_pos(32), TIMER_NMI, 32); + m_nmi_timer->adjust(m_screen->time_until_pos(32), 32); memset(m_steer_FF1, 0, sizeof m_steer_FF1); memset(m_steer_FF2, 0, sizeof m_steer_FF2); @@ -140,96 +151,94 @@ void sprint4_state::machine_reset() } -READ8_MEMBER(sprint4_state::sprint4_wram_r) +READ8_MEMBER(sprint4_state::wram_r) { - uint8_t *videoram = m_videoram; - return videoram[0x380 + offset]; + return m_videoram[0x380 + offset]; } -READ8_MEMBER(sprint4_state::sprint4_analog_r) +READ8_MEMBER(sprint4_state::analog_r) { return (ioport("ANALOG")->read() << (~offset & 7)) & 0x80; } -READ8_MEMBER(sprint4_state::sprint4_coin_r) +READ8_MEMBER(sprint4_state::coin_r) { return (ioport("COIN")->read() << (~offset & 7)) & 0x80; } -READ8_MEMBER(sprint4_state::sprint4_collision_r) +READ8_MEMBER(sprint4_state::collision_r) { return (ioport("COLLISION")->read() << (~offset & 7)) & 0x80; } -READ8_MEMBER(sprint4_state::sprint4_options_r) +READ8_MEMBER(sprint4_state::options_r) { return (ioport("DIP")->read() >> (2 * (offset & 3))) & 3; } -WRITE8_MEMBER(sprint4_state::sprint4_wram_w) +WRITE8_MEMBER(sprint4_state::wram_w) { - uint8_t *videoram = m_videoram; - videoram[0x380 + offset] = data; + m_videoram[0x380 + offset] = data; } -WRITE8_MEMBER(sprint4_state::sprint4_collision_reset_w) +WRITE8_MEMBER(sprint4_state::collision_reset_w) { m_collision[(offset >> 1) & 3] = 0; } -WRITE8_MEMBER(sprint4_state::sprint4_da_latch_w) +WRITE8_MEMBER(sprint4_state::da_latch_w) { m_da_latch = data & 15; } -WRITE8_MEMBER(sprint4_state::sprint4_lamp_w) +WRITE8_MEMBER(sprint4_state::lamp_w) { output().set_led_value((offset >> 1) & 3, offset & 1); } #ifdef UNUSED_FUNCTION -WRITE8_MEMBER(sprint4_state::sprint4_lockout_w) +WRITE8_MEMBER(sprint4_state::lockout_w) { machine().bookkeeping().coin_lockout_global_w(~offset & 1); } #endif -WRITE8_MEMBER(sprint4_state::sprint4_screech_1_w) +WRITE8_MEMBER(sprint4_state::screech_1_w) { m_discrete->write(space, SPRINT4_SCREECH_EN_1, offset & 1); } -WRITE8_MEMBER(sprint4_state::sprint4_screech_2_w) +WRITE8_MEMBER(sprint4_state::screech_2_w) { m_discrete->write(space, SPRINT4_SCREECH_EN_2, offset & 1); } -WRITE8_MEMBER(sprint4_state::sprint4_screech_3_w) +WRITE8_MEMBER(sprint4_state::screech_3_w) { m_discrete->write(space, SPRINT4_SCREECH_EN_3, offset & 1); } -WRITE8_MEMBER(sprint4_state::sprint4_screech_4_w) +WRITE8_MEMBER(sprint4_state::screech_4_w) { m_discrete->write(space, SPRINT4_SCREECH_EN_4, offset & 1); } -WRITE8_MEMBER(sprint4_state::sprint4_bang_w) +WRITE8_MEMBER(sprint4_state::bang_w) { m_discrete->write(space, SPRINT4_BANG_DATA, data & 0x0f); } -WRITE8_MEMBER(sprint4_state::sprint4_attract_w) +WRITE8_MEMBER(sprint4_state::attract_w) { m_discrete->write(space, SPRINT4_ATTRACT_EN, data & 1); } @@ -239,27 +248,27 @@ static ADDRESS_MAP_START( sprint4_cpu_map, AS_PROGRAM, 8, sprint4_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(sprint4_wram_r, sprint4_wram_w) - AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(sprint4_video_ram_w) AM_SHARE("videoram") + AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(wram_r, wram_w) + AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(video_ram_w) AM_SHARE("videoram") - AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x718) AM_READ(sprint4_analog_r) - AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_READ(sprint4_coin_r) - AM_RANGE(0x0040, 0x0047) AM_MIRROR(0x718) AM_READ(sprint4_collision_r) - AM_RANGE(0x0060, 0x0063) AM_MIRROR(0x71c) AM_READ(sprint4_options_r) + AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x718) AM_READ(analog_r) + AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_READ(coin_r) + AM_RANGE(0x0040, 0x0047) AM_MIRROR(0x718) AM_READ(collision_r) + AM_RANGE(0x0060, 0x0063) AM_MIRROR(0x71c) AM_READ(options_r) AM_RANGE(0x1000, 0x17ff) AM_READ_PORT("IN0") AM_RANGE(0x1800, 0x1fff) AM_READ_PORT("IN1") - AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x71f) AM_WRITE(sprint4_attract_w) - AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_WRITE(sprint4_collision_reset_w) - AM_RANGE(0x0040, 0x0041) AM_MIRROR(0x718) AM_WRITE(sprint4_da_latch_w) - AM_RANGE(0x0042, 0x0043) AM_MIRROR(0x718) AM_WRITE(sprint4_bang_w) + AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x71f) AM_WRITE(attract_w) + AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_WRITE(collision_reset_w) + AM_RANGE(0x0040, 0x0041) AM_MIRROR(0x718) AM_WRITE(da_latch_w) + AM_RANGE(0x0042, 0x0043) AM_MIRROR(0x718) AM_WRITE(bang_w) AM_RANGE(0x0044, 0x0045) AM_MIRROR(0x718) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0060, 0x0067) AM_MIRROR(0x710) AM_WRITE(sprint4_lamp_w) - AM_RANGE(0x0068, 0x0069) AM_MIRROR(0x710) AM_WRITE(sprint4_screech_1_w) - AM_RANGE(0x006a, 0x006b) AM_MIRROR(0x710) AM_WRITE(sprint4_screech_2_w) - AM_RANGE(0x006c, 0x006d) AM_MIRROR(0x710) AM_WRITE(sprint4_screech_3_w) - AM_RANGE(0x006e, 0x006f) AM_MIRROR(0x710) AM_WRITE(sprint4_screech_4_w) + AM_RANGE(0x0060, 0x0067) AM_MIRROR(0x710) AM_WRITE(lamp_w) + AM_RANGE(0x0068, 0x0069) AM_MIRROR(0x710) AM_WRITE(screech_1_w) + AM_RANGE(0x006a, 0x006b) AM_MIRROR(0x710) AM_WRITE(screech_2_w) + AM_RANGE(0x006c, 0x006d) AM_MIRROR(0x710) AM_WRITE(screech_3_w) + AM_RANGE(0x006e, 0x006f) AM_MIRROR(0x710) AM_WRITE(screech_4_w) AM_RANGE(0x2000, 0x27ff) AM_NOP /* diagnostic ROM */ AM_RANGE(0x2800, 0x3fff) AM_ROM @@ -400,7 +409,7 @@ static GFXDECODE_START( sprint4 ) GFXDECODE_END -static MACHINE_CONFIG_START( sprint4, sprint4_state ) +static MACHINE_CONFIG_START( sprint4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, PIXEL_CLOCK / 8) @@ -412,8 +421,8 @@ static MACHINE_CONFIG_START( sprint4, sprint4_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224) - MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update_sprint4) - MCFG_SCREEN_VBLANK_DRIVER(sprint4_state, screen_eof_sprint4) + MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sprint4_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", sprint4) @@ -472,5 +481,5 @@ ROM_START( sprint4a ) ROM_END -GAME( 1977, sprint4, 0, sprint4, sprint4, driver_device, 0, ROT180, "Atari", "Sprint 4 (set 1)", 0 ) /* large cars */ -GAME( 1977, sprint4a, sprint4, sprint4, sprint4, driver_device, 0, ROT180, "Atari", "Sprint 4 (set 2)", 0 ) /* small cars */ +GAME( 1977, sprint4, 0, sprint4, sprint4, sprint4_state, 0, ROT180, "Atari", "Sprint 4 (set 1)", MACHINE_SUPPORTS_SAVE ) /* large cars */ +GAME( 1977, sprint4a, sprint4, sprint4, sprint4, sprint4_state, 0, ROT180, "Atari", "Sprint 4 (set 2)", MACHINE_SUPPORTS_SAVE ) /* small cars */ diff --git a/src/mame/drivers/sprint8.cpp b/src/mame/drivers/sprint8.cpp index 125651e6e69..1787e21f7cc 100644 --- a/src/mame/drivers/sprint8.cpp +++ b/src/mame/drivers/sprint8.cpp @@ -14,7 +14,7 @@ Atari Sprint 8 driver -void sprint8_state::sprint8_set_collision(int n) +void sprint8_state::set_collision(int n) { if (m_collision_reset == 0) { @@ -29,9 +29,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(sprint8_state::input_callback) { static const char *const dialnames[] = { "DIAL1", "DIAL2", "DIAL3", "DIAL4", "DIAL5", "DIAL6", "DIAL7", "DIAL8" }; - int i; - - for (i = 0; i < 8; i++) + for (int i = 0; i < 8; i++) { uint8_t val = ioport(dialnames[i])->read() >> 4; @@ -52,6 +50,14 @@ TIMER_DEVICE_CALLBACK_MEMBER(sprint8_state::input_callback) } } +void sprint8_state::machine_start() +{ + save_item(NAME(m_steer_dir)); + save_item(NAME(m_steer_flag)); + save_item(NAME(m_collision_reset)); + save_item(NAME(m_collision_index)); + save_item(NAME(m_dial)); +} void sprint8_state::machine_reset() { @@ -60,13 +66,13 @@ void sprint8_state::machine_reset() } -READ8_MEMBER(sprint8_state::sprint8_collision_r) +READ8_MEMBER(sprint8_state::collision_r) { return m_collision_index; } -READ8_MEMBER(sprint8_state::sprint8_input_r) +READ8_MEMBER(sprint8_state::input_r) { static const char *const portnames[] = { "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8" }; uint8_t val = ioport(portnames[offset])->read(); @@ -84,13 +90,13 @@ READ8_MEMBER(sprint8_state::sprint8_input_r) } -WRITE8_MEMBER(sprint8_state::sprint8_lockout_w) +WRITE8_MEMBER(sprint8_state::lockout_w) { machine().bookkeeping().coin_lockout_w(offset, !(data & 1)); } -WRITE8_MEMBER(sprint8_state::sprint8_int_reset_w) +WRITE8_MEMBER(sprint8_state::int_reset_w) { m_collision_reset = !(data & 1); @@ -101,24 +107,24 @@ WRITE8_MEMBER(sprint8_state::sprint8_int_reset_w) static ADDRESS_MAP_START( sprint8_map, AS_PROGRAM, 8, sprint8_state ) AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(sprint8_video_ram_w) AM_SHARE("video_ram") - AM_RANGE(0x1c00, 0x1c00) AM_READ(sprint8_collision_r) - AM_RANGE(0x1c01, 0x1c08) AM_READ(sprint8_input_r) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(video_ram_w) AM_SHARE("video_ram") + AM_RANGE(0x1c00, 0x1c00) AM_READ(collision_r) + AM_RANGE(0x1c01, 0x1c08) AM_READ(input_r) AM_RANGE(0x1c09, 0x1c09) AM_READ_PORT("IN0") AM_RANGE(0x1c0a, 0x1c0a) AM_READ_PORT("IN1") AM_RANGE(0x1c0f, 0x1c0f) AM_READ_PORT("VBLANK") AM_RANGE(0x1c00, 0x1c0f) AM_WRITEONLY AM_SHARE("pos_h_ram") AM_RANGE(0x1c10, 0x1c1f) AM_WRITEONLY AM_SHARE("pos_v_ram") AM_RANGE(0x1c20, 0x1c2f) AM_WRITEONLY AM_SHARE("pos_d_ram") - AM_RANGE(0x1c30, 0x1c37) AM_WRITE(sprint8_lockout_w) - AM_RANGE(0x1d00, 0x1d00) AM_WRITE(sprint8_int_reset_w) - AM_RANGE(0x1d01, 0x1d01) AM_WRITE(sprint8_crash_w) - AM_RANGE(0x1d02, 0x1d02) AM_WRITE(sprint8_screech_w) + AM_RANGE(0x1c30, 0x1c37) AM_WRITE(lockout_w) + AM_RANGE(0x1d00, 0x1d00) AM_WRITE(int_reset_w) + AM_RANGE(0x1d01, 0x1d01) AM_WRITE(crash_w) + AM_RANGE(0x1d02, 0x1d02) AM_WRITE(screech_w) AM_RANGE(0x1d03, 0x1d03) AM_WRITENOP AM_RANGE(0x1d04, 0x1d04) AM_WRITENOP AM_RANGE(0x1d05, 0x1d05) AM_WRITEONLY AM_SHARE("team") - AM_RANGE(0x1d06, 0x1d06) AM_WRITE(sprint8_attract_w) - AM_RANGE(0x1e00, 0x1e07) AM_WRITE(sprint8_motor_w) + AM_RANGE(0x1d06, 0x1d06) AM_WRITE(attract_w) + AM_RANGE(0x1e00, 0x1e07) AM_WRITE(motor_w) AM_RANGE(0x1f00, 0x1f00) AM_WRITENOP /* probably a watchdog, disabled in service mode */ AM_RANGE(0x2000, 0x3fff) AM_ROM AM_RANGE(0xf800, 0xffff) AM_ROM @@ -450,7 +456,7 @@ static GFXDECODE_START( sprint8 ) GFXDECODE_END -static MACHINE_CONFIG_START( sprint8, sprint8_state ) +static MACHINE_CONFIG_START( sprint8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 11055000 / 11) /* ? */ @@ -464,8 +470,8 @@ static MACHINE_CONFIG_START( sprint8, sprint8_state ) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(512, 261) MCFG_SCREEN_VISIBLE_AREA(0, 495, 0, 231) - MCFG_SCREEN_UPDATE_DRIVER(sprint8_state, screen_update_sprint8) - MCFG_SCREEN_VBLANK_DRIVER(sprint8_state, screen_eof_sprint8) + MCFG_SCREEN_UPDATE_DRIVER(sprint8_state, screen_update) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sprint8_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", sprint8) @@ -526,5 +532,5 @@ ROM_START( sprint8a ) ROM_END -GAME( 1977, sprint8, 0, sprint8, sprint8, driver_device, 0, ROT0, "Atari", "Sprint 8", 0 ) -GAME( 1977, sprint8a, sprint8, sprint8, sprint8p, driver_device, 0, ROT0, "Atari", "Sprint 8 (play tag & chase)", 0 ) +GAME( 1977, sprint8, 0, sprint8, sprint8, sprint8_state, 0, ROT0, "Atari", "Sprint 8", MACHINE_SUPPORTS_SAVE ) +GAME( 1977, sprint8a, sprint8, sprint8, sprint8p, sprint8_state, 0, ROT0, "Atari", "Sprint 8 (play tag & chase)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/spy.cpp b/src/mame/drivers/spy.cpp index 6d0553fd57f..87e27afd992 100644 --- a/src/mame/drivers/spy.cpp +++ b/src/mame/drivers/spy.cpp @@ -492,7 +492,7 @@ void spy_state::machine_reset() m_old_3f90 = -1; } -static MACHINE_CONFIG_START( spy, spy_state ) +static MACHINE_CONFIG_START( spy ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 3000000) /* ? */ @@ -608,5 +608,5 @@ ROM_START( spyu ) ROM_END -GAME( 1989, spy, 0, spy, spy, driver_device, 0, ROT0, "Konami", "S.P.Y. - Special Project Y (World ver. N)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, spyu, spy, spy, spy, driver_device, 0, ROT0, "Konami", "S.P.Y. - Special Project Y (US ver. M)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, spy, 0, spy, spy, spy_state, 0, ROT0, "Konami", "S.P.Y. - Special Project Y (World ver. N)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, spyu, spy, spy, spy, spy_state, 0, ROT0, "Konami", "S.P.Y. - Special Project Y (US ver. M)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/spyhuntertec.cpp b/src/mame/drivers/spyhuntertec.cpp index 05c8126f29d..6894c520a2e 100644 --- a/src/mame/drivers/spyhuntertec.cpp +++ b/src/mame/drivers/spyhuntertec.cpp @@ -664,7 +664,7 @@ void spyhuntertec_state::machine_reset() -static MACHINE_CONFIG_START( spyhuntertec, spyhuntertec_state ) +static MACHINE_CONFIG_START( spyhuntertec ) // note: no ctc, no nvram // 2*z80, 3*ay8912 diff --git a/src/mame/drivers/squale.cpp b/src/mame/drivers/squale.cpp index f3644c61104..5e191bdf386 100644 --- a/src/mame/drivers/squale.cpp +++ b/src/mame/drivers/squale.cpp @@ -57,6 +57,7 @@ #include "emu.h" #include "bus/generic/carts.h" +#include "bus/generic/slot.h" #include "cpu/m6809/m6809.h" #include "machine/6821pia.h" #include "machine/6850acia.h" @@ -139,7 +140,7 @@ private: required_device m_pia_u75; required_device m_ef9365; required_device m_maincpu; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; floppy_image_device *m_floppy; @@ -624,7 +625,7 @@ static ADDRESS_MAP_START(squale_mem, AS_PROGRAM, 8, squale_state) AM_RANGE(0xf048,0xf04b) AM_DEVREADWRITE("pia_u72", pia6821_device, read, write) AM_RANGE(0xf050,0xf05f) AM_DEVREADWRITE("ef6850", acia6850_device, data_r, data_w) AM_RANGE(0xf060,0xf06f) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, address_data_w) - AM_RANGE(0xf080,0xf083) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) + AM_RANGE(0xf080,0xf083) AM_DEVREADWRITE("wd1770", wd1770_device, read, write) AM_RANGE(0xf08a,0xf08a) AM_READWRITE( fdc_sel0_r, fdc_sel0_w ) AM_RANGE(0xf08b,0xf08b) AM_READWRITE( fdc_sel1_r, fdc_sel1_w ) AM_RANGE(0xf100,0xffff) AM_ROMBANK("rom_bank"); @@ -776,7 +777,7 @@ void squale_state::machine_reset() { } -static MACHINE_CONFIG_START( squale, squale_state ) +static MACHINE_CONFIG_START( squale ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6809E, CPU_CLOCK) // 12/2015 : Should be set to M6809 but it actually have the wrong clock divisor (1 instead of 4) and working 4 times too fast... MCFG_CPU_PROGRAM_MAP(squale_mem) @@ -823,7 +824,7 @@ static MACHINE_CONFIG_START( squale, squale_state ) MCFG_DEVICE_ADD("ef9365", EF9365, VIDEO_CLOCK) MCFG_EF936X_PALETTE("palette") MCFG_EF936X_BITPLANES_CNT(4); - MCFG_EF936X_DISPLAYMODE(EF936X_256x256_DISPLAY_MODE); + MCFG_EF936X_DISPLAYMODE(DISPLAY_MODE_256x256); MCFG_TIMER_DRIVER_ADD_SCANLINE("squale_sl", squale_state, squale_scanline, "screen", 0, 10) /* Floppy */ @@ -852,5 +853,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, squale, 0, 0, squale, squale,driver_device, 0, "Apollo 7", "Squale", MACHINE_TYPE_COMPUTER ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1984, squale, 0, 0, squale, squale, squale_state, 0, "Apollo 7", "Squale", 0 ) diff --git a/src/mame/drivers/srmp2.cpp b/src/mame/drivers/srmp2.cpp index 1d7c3027880..05f6230552e 100644 --- a/src/mame/drivers/srmp2.cpp +++ b/src/mame/drivers/srmp2.cpp @@ -1133,7 +1133,7 @@ static GFXDECODE_START( srmp3 ) GFXDECODE_END -static MACHINE_CONFIG_START( srmp2, srmp2_state ) +static MACHINE_CONFIG_START( srmp2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ @@ -1172,12 +1172,12 @@ static MACHINE_CONFIG_START( srmp2, srmp2_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(srmp2_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( srmp3, srmp2_state ) +static MACHINE_CONFIG_START( srmp3 ) /* basic machine hardware */ @@ -1219,7 +1219,7 @@ static MACHINE_CONFIG_START( srmp3, srmp2_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(srmp2_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) MACHINE_CONFIG_END @@ -1232,7 +1232,7 @@ static MACHINE_CONFIG_DERIVED( rmgoldyh, srmp3 ) MCFG_MACHINE_START_OVERRIDE(srmp2_state,rmgoldyh) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mjyuugi, srmp2_state ) +static MACHINE_CONFIG_START( mjyuugi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */ @@ -1271,7 +1271,7 @@ static MACHINE_CONFIG_START( mjyuugi, srmp2_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(srmp2_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) MACHINE_CONFIG_END @@ -1545,11 +1545,11 @@ ROM_END -GAME( 1987, srmp1, 0, srmp2, srmp2, driver_device, 0, ROT0, "Seta", "Super Real Mahjong Part 1 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, srmp2, 0, srmp2, srmp2, driver_device, 0, ROT0, "Seta", "Super Real Mahjong Part 2 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, srmp3, 0, srmp3, srmp3, driver_device, 0, ROT0, "Seta", "Super Real Mahjong Part 3 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, rmgoldyh, srmp3, rmgoldyh, rmgoldyh, driver_device, 0, ROT0, "Seta (Alba license)", "Real Mahjong Gold Yumehai / Super Real Mahjong GOLD part.2 [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mjyuugi, 0, mjyuugi, mjyuugi, driver_device, 0, ROT0, "Visco", "Mahjong Yuugi (Japan set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mjyuugia, mjyuugi, mjyuugi, mjyuugi, driver_device, 0, ROT0, "Visco", "Mahjong Yuugi (Japan set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ponchin, 0, mjyuugi, ponchin, driver_device, 0, ROT0, "Visco", "Mahjong Pon Chin Kan (Japan set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ponchina, ponchin, mjyuugi, ponchin, driver_device, 0, ROT0, "Visco", "Mahjong Pon Chin Kan (Japan set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, srmp1, 0, srmp2, srmp2, srmp2_state, 0, ROT0, "Seta", "Super Real Mahjong Part 1 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, srmp2, 0, srmp2, srmp2, srmp2_state, 0, ROT0, "Seta", "Super Real Mahjong Part 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, srmp3, 0, srmp3, srmp3, srmp2_state, 0, ROT0, "Seta", "Super Real Mahjong Part 3 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, rmgoldyh, srmp3, rmgoldyh, rmgoldyh, srmp2_state, 0, ROT0, "Seta (Alba license)", "Real Mahjong Gold Yumehai / Super Real Mahjong GOLD part.2 [BET] (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mjyuugi, 0, mjyuugi, mjyuugi, srmp2_state, 0, ROT0, "Visco", "Mahjong Yuugi (Japan set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mjyuugia, mjyuugi, mjyuugi, mjyuugi, srmp2_state, 0, ROT0, "Visco", "Mahjong Yuugi (Japan set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ponchin, 0, mjyuugi, ponchin, srmp2_state, 0, ROT0, "Visco", "Mahjong Pon Chin Kan (Japan set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ponchina, ponchin, mjyuugi, ponchin, srmp2_state, 0, ROT0, "Visco", "Mahjong Pon Chin Kan (Japan set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/srmp5.cpp b/src/mame/drivers/srmp5.cpp index 572da2addbe..8e8c6a5361e 100644 --- a/src/mame/drivers/srmp5.cpp +++ b/src/mame/drivers/srmp5.cpp @@ -551,7 +551,7 @@ static GFXDECODE_START( srmp5 ) //GFXDECODE_ENTRY( "gfx1", 0, tile_16x16x8_layout, 0x0, 0x800 ) GFXDECODE_END -static MACHINE_CONFIG_START( srmp5, srmp5_state ) +static MACHINE_CONFIG_START( srmp5 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",ST0016_CPU,8000000) diff --git a/src/mame/drivers/srmp6.cpp b/src/mame/drivers/srmp6.cpp index 5add9eef53d..8e4c2ff22df 100644 --- a/src/mame/drivers/srmp6.cpp +++ b/src/mame/drivers/srmp6.cpp @@ -676,7 +676,7 @@ INPUT_PORTS_END Machine driver ***************************************************************************/ -static MACHINE_CONFIG_START( srmp6, srmp6_state ) +static MACHINE_CONFIG_START( srmp6 ) MCFG_CPU_ADD("maincpu", M68000, 16000000) MCFG_CPU_PROGRAM_MAP(srmp6_map) @@ -733,4 +733,4 @@ ROM_END Game driver(s) ***************************************************************************/ -GAME( 1995, srmp6, 0, srmp6, srmp6, driver_device, 0, ROT0, "Seta", "Super Real Mahjong P6 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) +GAME( 1995, srmp6, 0, srmp6, srmp6, srmp6_state, 0, ROT0, "Seta", "Super Real Mahjong P6 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/srumbler.cpp b/src/mame/drivers/srumbler.cpp index 92bcd4c26d9..b1350b3cfa9 100644 --- a/src/mame/drivers/srumbler.cpp +++ b/src/mame/drivers/srumbler.cpp @@ -243,7 +243,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( srumbler, srumbler_state ) +static MACHINE_CONFIG_START( srumbler ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 1500000) /* 1.5 MHz (?) */ @@ -264,7 +264,7 @@ static MACHINE_CONFIG_START( srumbler, srumbler_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(10*8, (64-10)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(srumbler_state, screen_update) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", srumbler) @@ -472,7 +472,7 @@ ROM_END -GAME( 1986, srumbler, 0, srumbler, srumbler, driver_device, 0, ROT270, "Capcom", "The Speed Rumbler (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, srumbler2, srumbler, srumbler, srumbler, driver_device, 0, ROT270, "Capcom", "The Speed Rumbler (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, srumbler3, srumbler, srumbler, srumbler, driver_device, 0, ROT270, "Capcom (Tecfri license)", "The Speed Rumbler (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, rushcrsh, srumbler, srumbler, srumbler, driver_device, 0, ROT270, "Capcom", "Rush & Crash (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, srumbler, 0, srumbler, srumbler, srumbler_state, 0, ROT270, "Capcom", "The Speed Rumbler (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, srumbler2, srumbler, srumbler, srumbler, srumbler_state, 0, ROT270, "Capcom", "The Speed Rumbler (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, srumbler3, srumbler, srumbler, srumbler, srumbler_state, 0, ROT270, "Capcom (Tecfri license)", "The Speed Rumbler (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rushcrsh, srumbler, srumbler, srumbler, srumbler_state, 0, ROT270, "Capcom", "Rush & Crash (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ssem.cpp b/src/mame/drivers/ssem.cpp index 20e684d8493..7f6b1a85351 100644 --- a/src/mame/drivers/ssem.cpp +++ b/src/mame/drivers/ssem.cpp @@ -625,7 +625,7 @@ void ssem_state::machine_reset() m_store_line = 0; } -static MACHINE_CONFIG_START( ssem, ssem_state ) +static MACHINE_CONFIG_START( ssem ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SSEMCPU, 700) MCFG_CPU_PROGRAM_MAP(ssem_map) @@ -649,5 +649,5 @@ ROM_START( ssem ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP(1948, ssem, 0, 0, ssem, ssem, driver_device, 0, "Manchester University", "Small-Scale Experimental Machine (SSEM), 'Baby'", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME +COMP(1948, ssem, 0, 0, ssem, ssem, ssem_state, 0, "Manchester University", "Small-Scale Experimental Machine (SSEM), 'Baby'", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/ssfindo.cpp b/src/mame/drivers/ssfindo.cpp index b611d16a3ad..45d118b3d02 100644 --- a/src/mame/drivers/ssfindo.cpp +++ b/src/mame/drivers/ssfindo.cpp @@ -783,7 +783,7 @@ static INPUT_PORTS_START( tetfight ) INPUT_PORTS_END -static MACHINE_CONFIG_START( ssfindo, ssfindo_state ) +static MACHINE_CONFIG_START( ssfindo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM7, 54000000) // guess... @@ -924,6 +924,6 @@ DRIVER_INIT_MEMBER(ssfindo_state,tetfight) m_iocr_hack=1; } -GAME( 1999, ssfindo, 0, ssfindo, ssfindo, ssfindo_state, ssfindo, ROT0, "Icarus", "See See Find Out", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1999, ppcar, 0, ppcar, ppcar, ssfindo_state, ppcar, ROT0, "Icarus", "Pang Pang Car", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2001, tetfight,0, tetfight, tetfight, ssfindo_state, tetfight,ROT0, "Sego", "Tetris Fighters", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, ssfindo, 0, ssfindo, ssfindo, ssfindo_state, ssfindo, ROT0, "Icarus", "See See Find Out", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, ppcar, 0, ppcar, ppcar, ssfindo_state, ppcar, ROT0, "Icarus", "Pang Pang Car", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2001, tetfight,0, tetfight, tetfight, ssfindo_state, tetfight, ROT0, "Sego", "Tetris Fighters", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sshangha.cpp b/src/mame/drivers/sshangha.cpp index 012ce5bad91..f6c3c2990d0 100644 --- a/src/mame/drivers/sshangha.cpp +++ b/src/mame/drivers/sshangha.cpp @@ -378,7 +378,7 @@ DECO16IC_BANK_CB_MEMBER(sshangha_state::bank_callback) return (bank >> 4) * 0x1000; } -static MACHINE_CONFIG_START( sshangha, sshangha_state ) +static MACHINE_CONFIG_START( sshangha ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 28000000/2) @@ -434,7 +434,7 @@ static MACHINE_CONFIG_START( sshangha, sshangha_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.33) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33) - MCFG_OKIM6295_ADD("oki", 1023924, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1023924, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.27) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.27) MACHINE_CONFIG_END diff --git a/src/mame/drivers/sshot.cpp b/src/mame/drivers/sshot.cpp index 1d8eca3b2da..68c27d8fce9 100644 --- a/src/mame/drivers/sshot.cpp +++ b/src/mame/drivers/sshot.cpp @@ -337,7 +337,7 @@ static GFXDECODE_START( supershot ) GFXDECODE_ENTRY( "gfx", 0, supershot_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( supershot, supershot_state ) +static MACHINE_CONFIG_START( supershot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SCMP, XTAL_11_289MHz/4) @@ -396,5 +396,5 @@ ROM_START( gunchamps ) ROM_END -GAME( 1979, sshot, 0, supershot, supershot, driver_device, 0, ROT0, "Model Racing", "Super Shot", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) -GAMEL(1980, gunchamps, gunchamp, supershot, supershot, driver_device, 0, ROT0, "Model Racing", "Gun Champ (newer, Super Shot hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING, layout_gunchamps ) +GAME( 1979, sshot, 0, supershot, supershot, supershot_state, 0, ROT0, "Model Racing", "Super Shot", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAMEL(1980, gunchamps, gunchamp, supershot, supershot, supershot_state, 0, ROT0, "Model Racing", "Gun Champ (newer, Super Shot hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING, layout_gunchamps ) diff --git a/src/mame/drivers/ssingles.cpp b/src/mame/drivers/ssingles.cpp index badf29eccb7..d3c0f7e7e92 100644 --- a/src/mame/drivers/ssingles.cpp +++ b/src/mame/drivers/ssingles.cpp @@ -536,7 +536,7 @@ static GFXDECODE_START( atamanot ) GFXDECODE_ENTRY( "kanji_lc", 0, layout_8x16, 0, 8 ) GFXDECODE_END -static MACHINE_CONFIG_START( ssingles, ssingles_state ) +static MACHINE_CONFIG_START( ssingles ) MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(ssingles_map) diff --git a/src/mame/drivers/sslam.cpp b/src/mame/drivers/sslam.cpp index 6bad5f3dc21..f56ca6f9dec 100644 --- a/src/mame/drivers/sslam.cpp +++ b/src/mame/drivers/sslam.cpp @@ -694,7 +694,7 @@ GFXDECODE_END /* Machine Driver */ -static MACHINE_CONFIG_START( sslam, sslam_state ) +static MACHINE_CONFIG_START( sslam ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */ @@ -722,11 +722,11 @@ static MACHINE_CONFIG_START( sslam, sslam_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( powerbls, sslam_state ) +static MACHINE_CONFIG_START( powerbls ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */ @@ -756,7 +756,7 @@ static MACHINE_CONFIG_START( powerbls, sslam_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) /* verified on original PCB */ + MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH) /* verified on original PCB */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -936,7 +936,7 @@ DRIVER_INIT_MEMBER(sslam_state,powerbls) } -GAME( 1993, sslam, 0, sslam, sslam, sslam_state, sslam, ROT0, "Playmark", "Super Slam (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, sslama, sslam, sslam, sslam, sslam_state, sslam, ROT0, "Playmark", "Super Slam (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, sslamb, sslam, sslam, sslam, sslam_state, sslam, ROT0, "Playmark", "Super Slam (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, sslam, 0, sslam, sslam, sslam_state, sslam, ROT0, "Playmark", "Super Slam (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, sslama, sslam, sslam, sslam, sslam_state, sslam, ROT0, "Playmark", "Super Slam (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, sslamb, sslam, sslam, sslam, sslam_state, sslam, ROT0, "Playmark", "Super Slam (set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, powerbals,powerbal, powerbls, powerbls, sslam_state, powerbls, ROT0, "Playmark", "Power Balls (Super Slam conversion)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ssozumo.cpp b/src/mame/drivers/ssozumo.cpp index ce68b106b13..2c7fe9c11c0 100644 --- a/src/mame/drivers/ssozumo.cpp +++ b/src/mame/drivers/ssozumo.cpp @@ -197,7 +197,7 @@ INTERRUPT_GEN_MEMBER(ssozumo_state::sound_timer_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( ssozumo, ssozumo_state ) +static MACHINE_CONFIG_START( ssozumo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1200000) /* 1.2 MHz ???? */ @@ -296,4 +296,4 @@ ROM_END -GAME( 1984, ssozumo, 0, ssozumo, ssozumo, driver_device, 0, ROT270, "Technos Japan", "Syusse Oozumou (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, ssozumo, 0, ssozumo, ssozumo, ssozumo_state, 0, ROT270, "Technos Japan", "Syusse Oozumou (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sspeedr.cpp b/src/mame/drivers/sspeedr.cpp index eef9029b87c..ea9be851d59 100644 --- a/src/mame/drivers/sspeedr.cpp +++ b/src/mame/drivers/sspeedr.cpp @@ -190,7 +190,7 @@ static GFXDECODE_START( sspeedr ) GFXDECODE_END -static MACHINE_CONFIG_START( sspeedr, sspeedr_state ) +static MACHINE_CONFIG_START( sspeedr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_19_968MHz/8) @@ -207,7 +207,7 @@ static MACHINE_CONFIG_START( sspeedr, sspeedr_state ) MCFG_SCREEN_SIZE(376, 256) MCFG_SCREEN_VISIBLE_AREA(0, 375, 0, 247) MCFG_SCREEN_UPDATE_DRIVER(sspeedr_state, screen_update_sspeedr) - MCFG_SCREEN_VBLANK_DRIVER(sspeedr_state, screen_eof_sspeedr) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sspeedr_state, screen_vblank_sspeedr)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", sspeedr) @@ -234,4 +234,4 @@ ROM_START( sspeedr ) ROM_END -GAMEL( 1979, sspeedr, 0, sspeedr, sspeedr, driver_device, 0, ROT270, "Midway", "Super Speed Race", MACHINE_NO_SOUND, layout_sspeedr ) +GAMEL( 1979, sspeedr, 0, sspeedr, sspeedr, sspeedr_state, 0, ROT270, "Midway", "Super Speed Race", MACHINE_NO_SOUND, layout_sspeedr ) diff --git a/src/mame/drivers/ssrj.cpp b/src/mame/drivers/ssrj.cpp index 83fb0847811..469f2aefb41 100644 --- a/src/mame/drivers/ssrj.cpp +++ b/src/mame/drivers/ssrj.cpp @@ -139,7 +139,7 @@ static GFXDECODE_START( ssrj ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 0x10 ) GFXDECODE_END -static MACHINE_CONFIG_START( ssrj, ssrj_state ) +static MACHINE_CONFIG_START( ssrj ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,8000000/2) @@ -153,7 +153,7 @@ static MACHINE_CONFIG_START( ssrj, ssrj_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 1*8, 31*8-1) // unknown res MCFG_SCREEN_UPDATE_DRIVER(ssrj_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(ssrj_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ssrj_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", ssrj) @@ -190,4 +190,4 @@ ROM_START( ssrj ) ROM_END -GAME( 1985, ssrj, 0, ssrj, ssrj, driver_device, 0, ROT90, "Taito Corporation", "Super Speed Race Junior (Japan)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, ssrj, 0, ssrj, ssrj, ssrj_state, 0, ROT90, "Taito Corporation", "Super Speed Race Junior (Japan)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sstrangr.cpp b/src/mame/drivers/sstrangr.cpp index 97da000c732..fb59e1a8c5a 100644 --- a/src/mame/drivers/sstrangr.cpp +++ b/src/mame/drivers/sstrangr.cpp @@ -184,7 +184,7 @@ static INPUT_PORTS_START( sstrangr ) INPUT_PORTS_END -static MACHINE_CONFIG_START( sstrangr, sstrangr_state ) +static MACHINE_CONFIG_START( sstrangr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080,1996800) /* clock is a guess, taken from mw8080bw */ @@ -289,5 +289,5 @@ ROM_START( sstrangr2 ) ROM_END -GAMEL( 1978, sstrangr, 0, sstrangr, sstrangr, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_sstrangr ) -GAME( 1979, sstrangr2,sstrangr, sstrngr2, sstrngr2, driver_device, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger 2", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL( 1978, sstrangr, 0, sstrangr, sstrangr, sstrangr_state, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_sstrangr ) +GAME( 1979, sstrangr2, sstrangr, sstrngr2, sstrngr2, sstrangr_state, 0, ROT270, "Yachiyo Electronics, Ltd.", "Space Stranger 2", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ssv.cpp b/src/mame/drivers/ssv.cpp index 594f65a25e1..26a41dcb49f 100644 --- a/src/mame/drivers/ssv.cpp +++ b/src/mame/drivers/ssv.cpp @@ -484,9 +484,9 @@ static ADDRESS_MAP_START( gdfs_map, AS_PROGRAM, 16, ssv_state ) AM_RANGE(0x500000, 0x500001) AM_WRITE(gdfs_eeprom_w) AM_RANGE(0x540000, 0x540001) AM_READ(gdfs_eeprom_r) AM_RANGE(0x600000, 0x600fff) AM_RAM - AM_RANGE(0x800000, 0x87ffff) AM_DEVREADWRITE( "st0020_spr", st0020_device, st0020_sprram_r, st0020_sprram_w ); - AM_RANGE(0x8c0000, 0x8c00ff) AM_DEVREADWRITE( "st0020_spr", st0020_device, st0020_blitram_r, st0020_blitram_w ); - AM_RANGE(0x900000, 0x9fffff) AM_DEVREADWRITE( "st0020_spr", st0020_device, st0020_gfxram_r, st0020_gfxram_w ); + AM_RANGE(0x800000, 0x87ffff) AM_DEVREADWRITE( "st0020_spr", st0020_device, sprram_r, sprram_w ); + AM_RANGE(0x8c0000, 0x8c00ff) AM_DEVREADWRITE( "st0020_spr", st0020_device, regs_r, regs_w ); + AM_RANGE(0x900000, 0x9fffff) AM_DEVREADWRITE( "st0020_spr", st0020_device, gfxram_r, gfxram_w ); SSV_MAP( 0xc00000 ) ADDRESS_MAP_END @@ -2567,7 +2567,7 @@ DRIVER_INIT_MEMBER(ssv_state,jsk) { init(0); save_item(NAME(m_latche #define SSV_VBEND 0 #define SSV_VBSTART 0xf0 -static MACHINE_CONFIG_START( ssv, ssv_state ) +static MACHINE_CONFIG_START( ssv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V60, SSV_MASTER_CLOCK) /* Based on STA-0001 & STA-0001B System boards */ diff --git a/src/mame/drivers/ssystem3.cpp b/src/mame/drivers/ssystem3.cpp index bf793b6a82e..ad655d8bd01 100644 --- a/src/mame/drivers/ssystem3.cpp +++ b/src/mame/drivers/ssystem3.cpp @@ -286,7 +286,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( ssystem3, ssystem3_state ) +static MACHINE_CONFIG_START( ssystem3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1000000) MCFG_CPU_PROGRAM_MAP(ssystem3_map) @@ -327,6 +327,6 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS CONS( 1979, ssystem3, 0, 0, ssystem3, ssystem3, ssystem3_state, ssystem3, "SciSys / Novag", "Chess Champion Super System III", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) //chess champion MK III in germany diff --git a/src/mame/drivers/st17xx.cpp b/src/mame/drivers/st17xx.cpp index 5f45b8a23fb..1358ce0ea78 100644 --- a/src/mame/drivers/st17xx.cpp +++ b/src/mame/drivers/st17xx.cpp @@ -85,7 +85,7 @@ void st17xx_state::machine_start() /* Machine Driver */ -static MACHINE_CONFIG_START( st17xx, st17xx_state ) +static MACHINE_CONFIG_START( st17xx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM7, 50000000) /* speed unknown */ MCFG_CPU_PROGRAM_MAP(cpu_map) @@ -174,14 +174,14 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -CONS( 200?, st1700h, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1700 (headphone version)", MACHINE_IS_SKELETON ) -CONS( 200?, st1701, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1701", MACHINE_IS_SKELETON ) -CONS( 200?, st1702, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1702", MACHINE_IS_SKELETON ) -CONS( 200?, st1703, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1703", MACHINE_IS_SKELETON ) -CONS( 200?, st1704, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1704", MACHINE_IS_SKELETON ) -CONS( 200?, st1705, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1705", MACHINE_IS_SKELETON ) -CONS( 200?, st1706, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1706", MACHINE_IS_SKELETON ) -CONS( 200?, st1707, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1707", MACHINE_IS_SKELETON ) -CONS( 200?, st1708, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1708", MACHINE_IS_SKELETON ) -CONS( 200?, st1714, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1714", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS( 200?, st1700h, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1700 (headphone version)", MACHINE_IS_SKELETON ) +CONS( 200?, st1701, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1701", MACHINE_IS_SKELETON ) +CONS( 200?, st1702, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1702", MACHINE_IS_SKELETON ) +CONS( 200?, st1703, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1703", MACHINE_IS_SKELETON ) +CONS( 200?, st1704, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1704", MACHINE_IS_SKELETON ) +CONS( 200?, st1705, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1705", MACHINE_IS_SKELETON ) +CONS( 200?, st1706, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1706", MACHINE_IS_SKELETON ) +CONS( 200?, st1707, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1707", MACHINE_IS_SKELETON ) +CONS( 200?, st1708, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1708", MACHINE_IS_SKELETON ) +CONS( 200?, st1714, 0, 0, st17xx, st17xx, st17xx_state, 0, "Saturn", "ST-1714", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/st_mp100.cpp b/src/mame/drivers/st_mp100.cpp index e32d85abb60..751ebe438f3 100644 --- a/src/mame/drivers/st_mp100.cpp +++ b/src/mame/drivers/st_mp100.cpp @@ -699,7 +699,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( st_mp100_state::u11_timer ) m_pia_u11->ca1_w(m_u11_timer); } -static MACHINE_CONFIG_START( st_mp100, st_mp100_state ) +static MACHINE_CONFIG_START( st_mp100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 1000000) // no xtal, just 2 chips forming a random oscillator MCFG_CPU_PROGRAM_MAP(st_mp100_map) @@ -845,19 +845,19 @@ ROM_START(magic) ROM_END // chimes -GAME(1977, pinball, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Pinball", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1977, stingray, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Stingray", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, stars, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Stars", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) -GAME(1978, memlane, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Memory Lane", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1977, pinball, 0, st_mp100, mp100, st_mp100_state, 0, ROT0, "Stern", "Pinball", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1977, stingray, 0, st_mp100, mp100, st_mp100_state, 0, ROT0, "Stern", "Stingray", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1978, stars, 0, st_mp100, mp100, st_mp100_state, 0, ROT0, "Stern", "Stars", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME( 1978, memlane, 0, st_mp100, mp100, st_mp100_state, 0, ROT0, "Stern", "Memory Lane", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // sound unit B-521 -GAME(1978, lectrono, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Lectronamo", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(1978, wildfyre, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Wildfyre", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(1978, nugent, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Nugent", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(1979, dracula, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Dracula (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1978, lectrono, 0, st_mp100, mp100, st_mp100_state, 0, ROT0, "Stern", "Lectronamo", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1978, wildfyre, 0, st_mp100, mp100, st_mp100_state, 0, ROT0, "Stern", "Wildfyre", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1978, nugent, 0, st_mp100, mp100, st_mp100_state, 0, ROT0, "Stern", "Nugent", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1979, dracula, 0, st_mp100, mp100, st_mp100_state, 0, ROT0, "Stern", "Dracula (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // different inputs -GAME(1979, trident, 0, st_mp100, mp200, driver_device, 0, ROT0, "Stern", "Trident", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(1979, hothand, 0, st_mp100, mp200, driver_device, 0, ROT0, "Stern", "Hot Hand", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(1979, princess, 0, st_mp100, mp200, driver_device, 0, ROT0, "Stern", "Cosmic Princess", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(1979, magic, 0, st_mp100, mp200, driver_device, 0, ROT0, "Stern", "Magic", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1979, trident, 0, st_mp100, mp200, st_mp100_state, 0, ROT0, "Stern", "Trident", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1979, hothand, 0, st_mp100, mp200, st_mp100_state, 0, ROT0, "Stern", "Hot Hand", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1979, princess, 0, st_mp100, mp200, st_mp100_state, 0, ROT0, "Stern", "Cosmic Princess", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1979, magic, 0, st_mp100, mp200, st_mp100_state, 0, ROT0, "Stern", "Magic", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/st_mp200.cpp b/src/mame/drivers/st_mp200.cpp index 25955cf0f87..28aa18baab6 100644 --- a/src/mame/drivers/st_mp200.cpp +++ b/src/mame/drivers/st_mp200.cpp @@ -566,7 +566,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( st_mp200_state::u11_timer ) m_pia_u11->ca1_w(m_u11_timer); } -static MACHINE_CONFIG_START( st_mp200, st_mp200_state ) +static MACHINE_CONFIG_START( st_mp200 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 1000000) // no xtal, just 2 chips forming a random oscillator MCFG_CPU_PROGRAM_MAP(st_mp200_map) @@ -916,31 +916,31 @@ ROM_START(st_game) ROM_END // 6-digit -GAME(1979, meteorp, 0, st_mp200, mp200, st_mp200_state, st_mp202, ROT0, "Stern", "Meteor (Stern)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1980, galaxypi, 0, st_mp200, mp200, st_mp200_state, st_mp202, ROT0, "Stern", "Galaxy", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1980, ali, 0, st_mp200, mp200, st_mp200_state, st_mp202, ROT0, "Stern", "Ali", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1979, meteorp, 0, st_mp200, mp200, st_mp200_state, st_mp202, ROT0, "Stern", "Meteor (Stern)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, galaxypi, 0, st_mp200, mp200, st_mp200_state, st_mp202, ROT0, "Stern", "Galaxy", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, ali, 0, st_mp200, mp200, st_mp200_state, st_mp202, ROT0, "Stern", "Ali", MACHINE_IS_SKELETON_MECHANICAL) // 7-digit -GAME(1980, biggame, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Big Game", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1980, cheetah, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Cheetah", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1980, quicksil, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Quicksilver", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1980, seawitch, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Seawitch", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1980, nineball, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Nine Ball", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, lightnin, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Lightning", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1980, stargzr, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Stargazer", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, spltsecp, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Split Second (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, catacomp, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Catacomb (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, dragfist, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Dragonfist", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, lazrlord, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Lazer Lord", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, biggame, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Big Game", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, cheetah, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Cheetah", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, quicksil, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Quicksilver", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, seawitch, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Seawitch", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, nineball, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Nine Ball", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, lightnin, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Lightning", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, stargzr, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Stargazer", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, spltsecp, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Split Second (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, catacomp, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Catacomb (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, dragfist, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Dragonfist", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, lazrlord, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Lazer Lord", MACHINE_IS_SKELETON_MECHANICAL) // hang after boot -GAME(1980, flight2k, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Flight 2000", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, freefall, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Freefall", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, viperp, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Viper (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, ironmaid, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Iron Maiden", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, orbitor1, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Orbitor 1", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, flight2k, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Flight 2000", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, freefall, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Freefall", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, viperp, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Viper (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, ironmaid, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Stern", "Iron Maiden", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, orbitor1, 0, st_mp201, mp200, st_mp200_state, st_mp201, ROT0, "Stern", "Orbitor 1", MACHINE_IS_SKELETON_MECHANICAL) // other manufacturer -GAME(1985, gamatron, flight2k, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Pinstar", "Gamatron", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1978, blkshpsq, 0, st_mp200, mp200, st_mp200_state, st_mp202, ROT0, "Astro", "Black Sheep Squadron", MACHINE_IS_SKELETON_MECHANICAL) -GAME(198?, st_game, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "", "unknown pinball game", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, gamatron, flight2k, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "Pinstar", "Gamatron", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, blkshpsq, 0, st_mp200, mp200, st_mp200_state, st_mp202, ROT0, "Astro", "Black Sheep Squadron", MACHINE_IS_SKELETON_MECHANICAL) +GAME(198?, st_game, 0, st_mp200, mp200, st_mp200_state, st_mp200, ROT0, "", "unknown pinball game", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/stactics.cpp b/src/mame/drivers/stactics.cpp index 3ca0d344126..3c803159bf4 100644 --- a/src/mame/drivers/stactics.cpp +++ b/src/mame/drivers/stactics.cpp @@ -297,7 +297,7 @@ void stactics_state::machine_start() * *************************************/ -static MACHINE_CONFIG_START( stactics, stactics_state ) +static MACHINE_CONFIG_START( stactics ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 1933560) @@ -347,4 +347,4 @@ ROM_END * *************************************/ -GAMEL( 1981, stactics, 0, stactics, stactics, driver_device, 0, ORIENTATION_FLIP_X, "Sega", "Space Tactics", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_stactics ) +GAMEL( 1981, stactics, 0, stactics, stactics, stactics_state, 0, ORIENTATION_FLIP_X, "Sega", "Space Tactics", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_stactics ) diff --git a/src/mame/drivers/stadhero.cpp b/src/mame/drivers/stadhero.cpp index 1a67ea6778a..2745399e2ff 100644 --- a/src/mame/drivers/stadhero.cpp +++ b/src/mame/drivers/stadhero.cpp @@ -199,7 +199,7 @@ GFXDECODE_END /******************************************************************************/ -static MACHINE_CONFIG_START( stadhero, stadhero_state ) +static MACHINE_CONFIG_START( stadhero ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) @@ -246,7 +246,7 @@ static MACHINE_CONFIG_START( stadhero, stadhero_state ) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", M6502_IRQ_LINE)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -288,4 +288,4 @@ ROM_END /******************************************************************************/ -GAME( 1988, stadhero, 0, stadhero, stadhero, driver_device, 0, ROT0, "Data East Corporation", "Stadium Hero (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, stadhero, 0, stadhero, stadhero, stadhero_state, 0, ROT0, "Data East Corporation", "Stadium Hero (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/starcrus.cpp b/src/mame/drivers/starcrus.cpp index ec2c9fa09c0..7948b81d008 100644 --- a/src/mame/drivers/starcrus.cpp +++ b/src/mame/drivers/starcrus.cpp @@ -134,7 +134,7 @@ static const char *const starcrus_sample_names[] = }; -static MACHINE_CONFIG_START( starcrus, starcrus_state ) +static MACHINE_CONFIG_START( starcrus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080,9750000/9) /* 8224 chip is a divide by 9 */ @@ -193,4 +193,4 @@ ROM_START( starcrus ) ROM_END -GAME( 1977, starcrus, 0, starcrus, starcrus, driver_device, 0, ROT0, "Ramtek", "Star Cruiser", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1977, starcrus, 0, starcrus, starcrus, starcrus_state, 0, ROT0, "Ramtek", "Star Cruiser", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/starfire.cpp b/src/mame/drivers/starfire.cpp index 795cf1b859e..51a4c427ddb 100644 --- a/src/mame/drivers/starfire.cpp +++ b/src/mame/drivers/starfire.cpp @@ -327,7 +327,7 @@ INTERRUPT_GEN_MEMBER(starfire_state::vblank_int) } -static MACHINE_CONFIG_START( fireone, starfire_state ) +static MACHINE_CONFIG_START( fireone ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, STARFIRE_CPU_CLOCK) diff --git a/src/mame/drivers/stargame.cpp b/src/mame/drivers/stargame.cpp index f75a7c26f1d..a377828aa46 100644 --- a/src/mame/drivers/stargame.cpp +++ b/src/mame/drivers/stargame.cpp @@ -35,7 +35,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( stargame ) INPUT_PORTS_END -static MACHINE_CONFIG_START( stargame, stargame_state ) +static MACHINE_CONFIG_START( stargame ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 1000000) MCFG_CPU_PROGRAM_MAP(maincpu_map) @@ -51,7 +51,7 @@ ROM_START(spcship) ROM_REGION(0x4000, "maincpu", 0) ROM_LOAD("sss-1g.bin", 0x0000, 0x4000, CRC(119a3064) SHA1(d915ecf44279a9e16a50a723eb9523afec1fb380)) ROM_REGION(0x4000, "audiocpu", 0) - ROM_LOAD("sss-1a0.bin", 0x0000, 0x4000, CRC(eae78e63) SHA1(9fa3587ae3ee6f674bb16102680e70069e9d275e)) + ROM_LOAD("sss-1a0.bin", 0x0000, 0x4000, CRC(eae78e63) SHA1(9fa3587ae3ee6f674bb16102680e70069e9d275e)) ROM_END @@ -63,5 +63,5 @@ ROM_START(whtforce) ROM_END -GAME( 1986, spcship, 0, stargame, stargame, driver_device, 0, ROT0, "Stargame", "Space Ship (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, whtforce, 0, stargame, stargame, driver_device, 0, ROT0, "Stargame", "White Force", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, spcship, 0, stargame, stargame, stargame_state, 0, ROT0, "Stargame", "Space Ship (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, whtforce, 0, stargame, stargame, stargame_state, 0, ROT0, "Stargame", "White Force", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/starshp1.cpp b/src/mame/drivers/starshp1.cpp index 126fb856326..dbd09fae4e1 100644 --- a/src/mame/drivers/starshp1.cpp +++ b/src/mame/drivers/starshp1.cpp @@ -294,7 +294,7 @@ static GFXDECODE_START( starshp1 ) GFXDECODE_END -static MACHINE_CONFIG_START( starshp1, starshp1_state ) +static MACHINE_CONFIG_START( starshp1 ) /* basic machine hardware */ @@ -308,7 +308,7 @@ static MACHINE_CONFIG_START( starshp1, starshp1_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(STARSHP1_PIXEL_CLOCK, STARSHP1_HTOTAL, STARSHP1_HBEND, STARSHP1_HBSTART, STARSHP1_VTOTAL, STARSHP1_VBEND, STARSHP1_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(starshp1_state, screen_update_starshp1) - MCFG_SCREEN_VBLANK_DRIVER(starshp1_state, screen_eof_starshp1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(starshp1_state, screen_vblank_starshp1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", starshp1) @@ -394,5 +394,5 @@ ROM_START( starshpp ) ROM_END -GAME( 1977, starshp1, 0, starshp1, starshp1, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Starship 1", MACHINE_IMPERFECT_SOUND ) -GAME( 1977, starshpp, starshp1, starshp1, starshp1, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Starship 1 (prototype?)", MACHINE_IMPERFECT_SOUND ) +GAME( 1977, starshp1, 0, starshp1, starshp1, starshp1_state, 0, ORIENTATION_FLIP_X, "Atari", "Starship 1", MACHINE_IMPERFECT_SOUND ) +GAME( 1977, starshpp, starshp1, starshp1, starshp1, starshp1_state, 0, ORIENTATION_FLIP_X, "Atari", "Starship 1 (prototype?)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/starwars.cpp b/src/mame/drivers/starwars.cpp index 6b9a0cb0acf..a47be5f4314 100644 --- a/src/mame/drivers/starwars.cpp +++ b/src/mame/drivers/starwars.cpp @@ -297,7 +297,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( starwars, starwars_state ) +static MACHINE_CONFIG_START( starwars ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK / 8) diff --git a/src/mame/drivers/statriv2.cpp b/src/mame/drivers/statriv2.cpp index 01c42e33525..3c81c9e1ed4 100644 --- a/src/mame/drivers/statriv2.cpp +++ b/src/mame/drivers/statriv2.cpp @@ -570,7 +570,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( statriv2, statriv2_state ) +static MACHINE_CONFIG_START( statriv2 ) /* basic machine hardware */ /* FIXME: The 8085A had a max clock of 6MHz, internally divided by 2! */ MCFG_CPU_ADD("maincpu", I8085A, MASTER_CLOCK) @@ -1168,18 +1168,18 @@ DRIVER_INIT_MEMBER(statriv2_state,laserdisc) * *************************************/ -GAME( 1981, statusbj, 0, statriv2, statusbj, driver_device, 0, ROT0, "Status Games", "Status Black Jack (V1.0c)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, funcsino, 0, funcsino, funcsino, driver_device, 0, ROT0, "Status Games", "Status Fun Casino (V1.3s)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, tripdraw, 0, statriv2, funcsino, driver_device, 0, ROT0, "Status Games", "Tripple Draw (V3.1 s)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1984, bigcsino, 0, funcsino, funcsino, driver_device, 0, ROT0, "Status Games", "Big Casino", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) //needs correct inputs -GAME( 1984, hangman, 0, statriv2, hangman, statriv2_state, addr_lmh, ROT0, "Status Games", "Hangman", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, trivquiz, 0, statriv2, statriv2, statriv2_state, addr_lhx, ROT0, "Status Games", "Triv Quiz", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, statriv2, 0, statriv2, statriv2, statriv2_state, addr_xlh, ROT0, "Status Games", "Triv Two", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, statriv2v,statriv2, statriv2v, statriv2, statriv2_state, addr_xlh, ROT90,"Status Games", "Triv Two (Vertical)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, statriv4, 0, statriv2, statriv4, statriv2_state, addr_xhl, ROT0, "Status Games", "Triv Four", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, sextriv, 0, statriv2, sextriv, statriv2_state, addr_lhx, ROT0, "Status Games", "Sex Triv", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, quaquiz2, 0, statriv2, quaquiz2, statriv2_state, addr_lmh, ROT0, "Status Games", "Quadro Quiz II", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1985, supertr, 0, statriv2, supertr2, statriv2_state, addr_lhx, ROT0, "Status Games", "Super Triv Quiz I", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING) // missing questions' ROMs -GAME( 1986, supertr2, 0, statriv2, supertr2, statriv2_state, addr_lmhe, ROT0, "Status Games", "Super Triv II", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, supertr3, 0, statriv2, supertr2, statriv2_state, addr_lmh, ROT0, "Status Games", "Super Triv III", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, cstripxi, 0, statriv2, funcsino, statriv2_state, laserdisc, ROT0, "Status Games", "Casino Strip XI", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1981, statusbj, 0, statriv2, statusbj, statriv2_state, 0, ROT0, "Status Games", "Status Black Jack (V1.0c)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, funcsino, 0, funcsino, funcsino, statriv2_state, 0, ROT0, "Status Games", "Status Fun Casino (V1.3s)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, tripdraw, 0, statriv2, funcsino, statriv2_state, 0, ROT0, "Status Games", "Tripple Draw (V3.1 s)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1984, bigcsino, 0, funcsino, funcsino, statriv2_state, 0, ROT0, "Status Games", "Big Casino", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) //needs correct inputs +GAME( 1984, hangman, 0, statriv2, hangman, statriv2_state, addr_lmh, ROT0, "Status Games", "Hangman", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, trivquiz, 0, statriv2, statriv2, statriv2_state, addr_lhx, ROT0, "Status Games", "Triv Quiz", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, statriv2, 0, statriv2, statriv2, statriv2_state, addr_xlh, ROT0, "Status Games", "Triv Two", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, statriv2v, statriv2, statriv2v, statriv2, statriv2_state, addr_xlh, ROT90, "Status Games", "Triv Two (Vertical)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, statriv4, 0, statriv2, statriv4, statriv2_state, addr_xhl, ROT0, "Status Games", "Triv Four", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sextriv, 0, statriv2, sextriv, statriv2_state, addr_lhx, ROT0, "Status Games", "Sex Triv", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, quaquiz2, 0, statriv2, quaquiz2, statriv2_state, addr_lmh, ROT0, "Status Games", "Quadro Quiz II", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1985, supertr, 0, statriv2, supertr2, statriv2_state, addr_lhx, ROT0, "Status Games", "Super Triv Quiz I", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING) // missing questions' ROMs +GAME( 1986, supertr2, 0, statriv2, supertr2, statriv2_state, addr_lmhe, ROT0, "Status Games", "Super Triv II", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, supertr3, 0, statriv2, supertr2, statriv2_state, addr_lmh, ROT0, "Status Games", "Super Triv III", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, cstripxi, 0, statriv2, funcsino, statriv2_state, laserdisc, ROT0, "Status Games", "Casino Strip XI", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/stellafr.cpp b/src/mame/drivers/stellafr.cpp index af12d541c47..32c9f704c69 100644 --- a/src/mame/drivers/stellafr.cpp +++ b/src/mame/drivers/stellafr.cpp @@ -40,7 +40,7 @@ static INPUT_PORTS_START( stellafr ) INPUT_PORTS_END -static MACHINE_CONFIG_START( stellafr, stellafr_state ) +static MACHINE_CONFIG_START( stellafr ) MCFG_CPU_ADD("maincpu", M68000, 10000000 ) //? MCFG_CPU_PROGRAM_MAP(stellafr_map) MACHINE_CONFIG_END @@ -60,5 +60,5 @@ ROM_START( st_vulkn ) ROM_END -GAME(199?, st_ohla, 0, stellafr, stellafr, driver_device, 0, ROT0, "Stella", "Oh La La (Stella)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME(199?, st_vulkn, 0, stellafr, stellafr, driver_device, 0, ROT0, "Stella", "Vulkan (Stella)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(199?, st_ohla, 0, stellafr, stellafr, stellafr_state, 0, ROT0, "Stella", "Oh La La (Stella)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME(199?, st_vulkn, 0, stellafr, stellafr, stellafr_state, 0, ROT0, "Stella", "Vulkan (Stella)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/stfight.cpp b/src/mame/drivers/stfight.cpp index 7882a12f711..9cb5ffbfda8 100644 --- a/src/mame/drivers/stfight.cpp +++ b/src/mame/drivers/stfight.cpp @@ -447,7 +447,7 @@ INPUT_PORTS_END -static MACHINE_CONFIG_START( stfight_base, stfight_state ) +static MACHINE_CONFIG_START( stfight_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 4) @@ -487,7 +487,7 @@ static MACHINE_CONFIG_START( stfight_base, stfight_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(stfight_state, stfight_adpcm_int)) // Interrupt function - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) // 8KHz, 4-bit + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8KHz, 4-bit MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END diff --git a/src/mame/drivers/stlforce.cpp b/src/mame/drivers/stlforce.cpp index b95b9627174..25aeacfec6e 100644 --- a/src/mame/drivers/stlforce.cpp +++ b/src/mame/drivers/stlforce.cpp @@ -188,7 +188,7 @@ static GFXDECODE_START( stlforce ) GFXDECODE_END -static MACHINE_CONFIG_START( stlforce, stlforce_state ) +static MACHINE_CONFIG_START( stlforce ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 15000000) @@ -213,7 +213,7 @@ static MACHINE_CONFIG_START( stlforce, stlforce_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32 , OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32 , PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/stratos.cpp b/src/mame/drivers/stratos.cpp index 89970ff4aff..40c2fcc6a0e 100644 --- a/src/mame/drivers/stratos.cpp +++ b/src/mame/drivers/stratos.cpp @@ -342,7 +342,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( stratos ) INPUT_PORTS_END -static MACHINE_CONFIG_START( stratos, stratos_state ) +static MACHINE_CONFIG_START( stratos ) MCFG_CPU_ADD("maincpu", M65C02, 5670000) MCFG_CPU_PROGRAM_MAP(stratos_mem) diff --git a/src/mame/drivers/strnskil.cpp b/src/mame/drivers/strnskil.cpp index 3e43a9345f7..363115c3c31 100644 --- a/src/mame/drivers/strnskil.cpp +++ b/src/mame/drivers/strnskil.cpp @@ -342,7 +342,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(strnskil_state::strnskil_irq) } -static MACHINE_CONFIG_START( strnskil, strnskil_state ) +static MACHINE_CONFIG_START( strnskil ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,8000000/2) /* 4.000MHz */ @@ -546,7 +546,7 @@ DRIVER_INIT_MEMBER(strnskil_state,banbam) m_maincpu->space(AS_PROGRAM).install_write_handler(0xd80d, 0xd80d, write8_delegate(FUNC(strnskil_state::protection_w),this)); } -GAME( 1984, strnskil, 0, strnskil, strnskil, driver_device, 0, ROT0, "Sun Electronics", "Strength & Skill", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, guiness, strnskil, strnskil, strnskil, driver_device, 0, ROT0, "Sun Electronics", "The Guiness (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, banbam, 0, banbam, banbam, strnskil_state, banbam, ROT0, "Sun Electronics", "BanBam", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, pettanp, banbam, strnskil, banbam, strnskil_state, pettanp, ROT0, "Sun Electronics", "Pettan Pyuu (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, strnskil, 0, strnskil, strnskil, strnskil_state, 0, ROT0, "Sun Electronics", "Strength & Skill", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, guiness, strnskil, strnskil, strnskil, strnskil_state, 0, ROT0, "Sun Electronics", "The Guiness (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, banbam, 0, banbam, banbam, strnskil_state, banbam, ROT0, "Sun Electronics", "BanBam", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, pettanp, banbam, strnskil, banbam, strnskil_state, pettanp, ROT0, "Sun Electronics", "Pettan Pyuu (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/studio2.cpp b/src/mame/drivers/studio2.cpp index 20d4d341bfd..8414b7cd9ad 100644 --- a/src/mame/drivers/studio2.cpp +++ b/src/mame/drivers/studio2.cpp @@ -622,7 +622,7 @@ static MACHINE_CONFIG_FRAGMENT( studio2_cartslot ) MCFG_SOFTWARE_LIST_ADD("cart_list", "studio2") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( studio2, studio2_state ) +static MACHINE_CONFIG_START( studio2 ) /* basic machine hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, 1760000) /* the real clock is derived from an oscillator circuit */ MCFG_CPU_PROGRAM_MAP(studio2_map) @@ -649,7 +649,7 @@ static MACHINE_CONFIG_START( studio2, studio2_state ) MCFG_FRAGMENT_ADD( studio2_cartslot ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( visicom, visicom_state ) +static MACHINE_CONFIG_START( visicom ) /* basic machine hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_579545MHz/2) MCFG_CPU_PROGRAM_MAP(visicom_map) @@ -681,7 +681,7 @@ static MACHINE_CONFIG_START( visicom, visicom_state ) MCFG_SOFTWARE_LIST_ADD("cart_list", "visicom") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mpt02, mpt02_state ) +static MACHINE_CONFIG_START( mpt02 ) /* basic machine hardware */ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, CDP1864_CLOCK) MCFG_CPU_PROGRAM_MAP(mpt02_map) @@ -745,12 +745,12 @@ ROM_END /* Game Drivers */ -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -CONS( 1977, studio2, 0, 0, studio2, studio2, driver_device, 0, "RCA", "Studio II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -CONS( 1978, visicom, studio2,0, visicom, studio2, driver_device, 0, "Toshiba", "Visicom COM-100 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -CONS( 1978, mpt02, studio2,0, mpt02, studio2, driver_device, 0, "Soundic", "Victory MPT-02 Home TV Programmer (Austria)", MACHINE_SUPPORTS_SAVE ) -CONS( 1978, mpt02h, studio2,0, mpt02, studio2, driver_device, 0, "Hanimex", "MPT-02 Jeu TV Programmable (France)", MACHINE_SUPPORTS_SAVE ) -CONS( 1978, mtc9016, studio2,0, mpt02, studio2, driver_device, 0, "Mustang", "9016 Telespiel Computer (Germany)", MACHINE_SUPPORTS_SAVE ) -CONS( 1978, shmc1200, studio2,0, mpt02, studio2, driver_device, 0, "Sheen", "M1200 Micro Computer (Australia)", MACHINE_SUPPORTS_SAVE ) -CONS( 1978, cm1200, studio2,0, mpt02, studio2, driver_device, 0, "Conic", "M-1200 (?)", MACHINE_SUPPORTS_SAVE ) -CONS( 1978, apollo80, studio2,0, mpt02, studio2, driver_device, 0, "Academy", "Apollo 80 (Germany)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 1977, studio2, 0, 0, studio2, studio2, studio2_state, 0, "RCA", "Studio II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 1978, visicom, studio2,0, visicom, studio2, visicom_state, 0, "Toshiba", "Visicom COM-100 (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 1978, mpt02, studio2,0, mpt02, studio2, mpt02_state, 0, "Soundic", "Victory MPT-02 Home TV Programmer (Austria)", MACHINE_SUPPORTS_SAVE ) +CONS( 1978, mpt02h, studio2,0, mpt02, studio2, mpt02_state, 0, "Hanimex", "MPT-02 Jeu TV Programmable (France)", MACHINE_SUPPORTS_SAVE ) +CONS( 1978, mtc9016, studio2,0, mpt02, studio2, mpt02_state, 0, "Mustang", "9016 Telespiel Computer (Germany)", MACHINE_SUPPORTS_SAVE ) +CONS( 1978, shmc1200, studio2,0, mpt02, studio2, mpt02_state, 0, "Sheen", "M1200 Micro Computer (Australia)", MACHINE_SUPPORTS_SAVE ) +CONS( 1978, cm1200, studio2,0, mpt02, studio2, mpt02_state, 0, "Conic", "M-1200 (?)", MACHINE_SUPPORTS_SAVE ) +CONS( 1978, apollo80, studio2,0, mpt02, studio2, mpt02_state, 0, "Academy", "Apollo 80 (Germany)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/stuntair.cpp b/src/mame/drivers/stuntair.cpp index 92e9641004e..0fb15814eb1 100644 --- a/src/mame/drivers/stuntair.cpp +++ b/src/mame/drivers/stuntair.cpp @@ -508,7 +508,7 @@ void stuntair_state::machine_reset() { } -static MACHINE_CONFIG_START( stuntair, stuntair_state ) +static MACHINE_CONFIG_START( stuntair ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* 3 MHz? */ @@ -585,4 +585,4 @@ ROM_START( stuntair ) ROM_END -GAME( 1983, stuntair, 0, stuntair, stuntair, driver_device, 0, ROT90, "Nuova Videotron", "Stunt Air", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1983, stuntair, 0, stuntair, stuntair, stuntair_state, 0, ROT90, "Nuova Videotron", "Stunt Air", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp index 69056718cb7..f64f906b4a5 100644 --- a/src/mame/drivers/stv.cpp +++ b/src/mame/drivers/stv.cpp @@ -97,6 +97,8 @@ offsets: READ8_MEMBER(stv_state::stv_ioga_r) { + const char *const portg[] = { "PORTG.0", "PORTG.1", "PORTG.2", "PORTG.3" }; + uint8_t res; res = 0xff; @@ -113,7 +115,14 @@ READ8_MEMBER(stv_state::stv_ioga_r) case 0x07: res = m_system_output; break; // port D, read-backs value written case 0x09: res = ioport("PORTE")->read(); break; // P3 case 0x0b: res = ioport("PORTF")->read(); break; // P4 + case 0x0d: + if (m_ioga_mode & 0x80) + res = (ioport(portg[(m_ioga_portg >> 1) & 3])->read()) >> (((m_ioga_portg & 1) ^ 1) * 8); // PORT-G counter mode + else + res = ioport("PORTG")->read(); + break; case 0x1b: res = 0; break; // Serial COM READ status + case 0x1d: res = m_ioga_mode; break; } return res; @@ -129,6 +138,8 @@ WRITE8_MEMBER(stv_state::stv_ioga_w) switch(offset) { case 0x07: +// if (data != m_system_output) +// logerror("OUT %02x\n", data); m_system_output = data; /*Why does the BIOS tests these as ACTIVE HIGH? A program bug?*/ machine().bookkeeping().coin_counter_w(0,~data & 0x01); @@ -136,6 +147,12 @@ WRITE8_MEMBER(stv_state::stv_ioga_w) machine().bookkeeping().coin_lockout_w(0,~data & 0x04); machine().bookkeeping().coin_lockout_w(1,~data & 0x08); break; + case 0x0d: + m_ioga_portg = data; + break; + case 0x1d: + m_ioga_mode = data; + break; } } @@ -237,6 +254,19 @@ WRITE8_MEMBER(stv_state::stvmp_ioga_w) } } +WRITE8_MEMBER(stv_state::hop_ioga_w) +{ + if (offset == 7) { + if ((data & 0x80) == 0) { + m_hopper->motor_w(0); // + m_hopper->motor_w(0x80); // ugly hack to reset status of ticket dispenser device + m_hopper->motor_w(0); + } else + m_hopper->motor_w(0x80); + } + stv_ioga_w(space, offset, data); +} + /* remaps with a 8-bit handler because MAME can't install r/w handlers with a different bus parallelism than the CPU native one, shrug ... */ READ32_MEMBER(stv_state::stv_ioga_r32) { @@ -342,6 +372,19 @@ WRITE32_MEMBER(stv_state::magzun_ioga_w32) printf("Warning: IOGA writes to odd offset %02x (%08x) -> %08x!",offset*4,mem_mask,data); } +WRITE32_MEMBER(stv_state::hop_ioga_w32) +{ + if(ACCESSING_BITS_16_23) + hop_ioga_w(space,offset*4+1,data >> 16); + if(ACCESSING_BITS_0_7) + hop_ioga_w(space,offset*4+3,data); + if(ACCESSING_BITS_8_15 || ACCESSING_BITS_24_31) + if(!(ACCESSING_BITS_16_23 || ACCESSING_BITS_0_7)) + printf("Warning: IOGA writes to odd offset %02x (%08x) -> %08x!",offset*4,mem_mask,data); + + return; +} + /* 06013AE8: MOV.L @($D4,PC),R5 @@ -932,6 +975,13 @@ DRIVER_INIT_MEMBER(stv_state,nameclv3) DRIVER_INIT_CALL(stv); } +DRIVER_INIT_MEMBER(stv_state, hopper) +{ + DRIVER_INIT_CALL(stv); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stv_ioga_r32),this), write32_delegate(FUNC(stv_state::hop_ioga_w32),this)); + m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stv_ioga_r32),this), write32_delegate(FUNC(stv_state::hop_ioga_w32),this)); +} + static ADDRESS_MAP_START( stv_mem, AS_PROGRAM, 32, stv_state ) AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_SHARE("share6") // bios AM_RANGE(0x00100000, 0x0010007f) AM_READWRITE8(stv_SMPC_r, stv_SMPC_w,0xffffffff) @@ -973,7 +1023,7 @@ static ADDRESS_MAP_START( scudsp_data, AS_DATA, 32, stv_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( stv, stv_state ) +static MACHINE_CONFIG_START( stv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SH2, MASTER_CLOCK_352/2) // 28.6364 MHz @@ -1090,6 +1140,9 @@ static MACHINE_CONFIG_DERIVED( stv_slot, stv ) MCFG_FRAGMENT_ADD( stv_cartslot ) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( hopper, stv ) + MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) +MACHINE_CONFIG_END MACHINE_RESET_MEMBER(stv_state,stv) { @@ -1289,6 +1342,18 @@ static INPUT_PORTS_START( stv ) PORT_START("PORTF") STV_PLAYER_INPUTS(4, BUTTON1, BUTTON2, BUTTON3, START) + + PORT_START("PORTG") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PORTG.0") + PORT_BIT( 0x0000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_START("PORTG.1") + PORT_BIT( 0x0000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_START("PORTG.2") + PORT_BIT( 0x0000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_START("PORTG.3") + PORT_BIT( 0x0000, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END static INPUT_PORTS_START( stv6b ) @@ -1338,7 +1403,7 @@ static INPUT_PORTS_START( critcrsh ) PORT_BIT( 0x3f, 0x00, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(0,0x3f) PORT_SENSITIVITY(50) PORT_KEYDELTA(1) PORT_PLAYER(1) PORT_START("LIGHTY") - PORT_BIT( 0x3f, 0x00, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX(0x0,0x3f) PORT_SENSITIVITY(50) PORT_KEYDELTA(1) PORT_PLAYER(1) + PORT_BIT( 0x3f, 0x02, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX(0x2,0x2e) PORT_SENSITIVITY(50) PORT_KEYDELTA(1) PORT_PLAYER(1) INPUT_PORTS_END /* Same as the regular one, but with an additional & optional mahjong panel */ @@ -1631,6 +1696,40 @@ static INPUT_PORTS_START( vmahjong ) INPUT_PORTS_END +static INPUT_PORTS_START( patocar ) + PORT_INCLUDE( stv ) + + PORT_MODIFY("PORTA") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) // hopper ? + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("PORTB") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) // ?? + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 ) // Door switch ? + PORT_BIT( 0x0c, IP_ACTIVE_LOW, IPT_BUTTON5 ) // ?? + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Medal") + PORT_BIT( 0xd0, IP_ACTIVE_LOW, IPT_UNUSED ) + + // TODO: sense/delta values seems wrong + PORT_MODIFY("PORTG.0") + PORT_BIT( 0xffff, 0x0000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_RESET PORT_PLAYER(1) + PORT_MODIFY("PORTG.1") + PORT_BIT( 0xffff, 0x0000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_RESET PORT_REVERSE PORT_PLAYER(1) + + PORT_MODIFY("PORTC") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Select Button") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Power Button") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("PORTE") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("PORTF") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + #define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \ ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(bios+1)) /* Note '+1' */ @@ -1639,7 +1738,7 @@ INPUT_PORTS_END epr-17740 - Japan STVB1.10J0950131 95/01/31 v1.10 - Found on a early board dated 02/1995 epr-17740a - Japan STVB1.11J0950220 95/02/20 v1.11 -epr-17951a - Japan STVB1.13J0950425 95/04/25 v1.13 +epr-17951a - Japan STVB1.13J0950425 95/04/25 v1.13 - There's also a 100% identical mask ROM version: mpr-17951a epr-17952a - USA STVB1.13U0950425 95/04/25 v1.13 epr-17953a - Taiwan STVB1.13T0950425 95/04/25 v1.13 epr-17954a - Europe STVB1.13E0950425 95/04/25 v1.13 @@ -2657,7 +2756,7 @@ screen with a rubber/plastic hammer. The cab has a large LED display to show how 'critters' were hit. The hammer positioning might work like a lightgun and the 'hitting' may be like pulling the lightgun trigger? -The ROM cart appears to be a re-used Virtua Fighter Remix cart?? +The ROM cart appears to be a re-used Virtua Fighter Remix cart. On top there is one 27C040 EPROM, EPR-18821 @ IC13 6 maskROMs, MPR-17945 to MPR-17950 (already dumped, known Virtua Fighter Remix ROMs) On the other side of the PCB are 2 more maskROMs, MPR-18788 @ IC9 and MPR-18789 @ IC8 @@ -2686,6 +2785,36 @@ ROM_START( critcrsh ) /* Must use Europe or Asia BIOS */ ROM_LOAD( "critcrsh.nv", 0x0000, 0x0080, CRC(3da9860e) SHA1(05b315aa71fcfc4e617266e1c5e4954eccbf7854) ) ROM_END +/* +Tatacot +Sega, 1995. + +Japanese version of Critter Crusher. Like Critter Crusher this is also a conversion, +but this time from a Ejihon Tantei Jimusyo cart. + +*/ + +ROM_START( tatacot ) /* Must use Japan or Asia BIOS */ + STV_BIOS + ROM_DEFAULT_BIOS( "japan" ) + + ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */ + ROM_LOAD16_BYTE( "epr-18790.ic13", 0x0000001, 0x0080000, CRC(d95155dc) SHA1(b08b75d15aad073eecf8b04fd2d718366bb6f6bb) ) + ROM_RELOAD ( 0x0100001, 0x0080000 ) + ROM_RELOAD_PLAIN( 0x0200000, 0x0080000) + ROM_RELOAD_PLAIN( 0x0300000, 0x0080000) +// ROM_LOAD16_WORD_SWAP( "mpr18138.2", 0x0400000, 0x0400000, CRC(f5567049) SHA1(6eb35e4b5fbda39cf7e8c42b6a568bd53a364d6d) ) // good +// ROM_LOAD16_WORD_SWAP( "mpr18139.3", 0x0800000, 0x0400000, CRC(f36b4878) SHA1(e3f63c0046bd37b7ab02fb3865b8ebcf4cf68e75) ) // good +// ROM_LOAD16_WORD_SWAP( "mpr18140.4", 0x0c00000, 0x0400000, CRC(228850a0) SHA1(d83f7fa7df08407fa45a13661393679b88800805) ) // good +// ROM_LOAD16_WORD_SWAP( "mpr18141.5", 0x1000000, 0x0400000, CRC(b51eef36) SHA1(2745cba48dc410d6d31327b956886ec284b9eac3) ) // good +// ROM_LOAD16_WORD_SWAP( "mpr18142.6", 0x1400000, 0x0400000, CRC(cf259541) SHA1(51e2c8d16506d6074f6511112ec4b6b44bed4886) ) // good + ROM_LOAD16_WORD_SWAP( "mpr-18789.ic8", 0x1c00000, 0x0400000, CRC(b388616f) SHA1(0b2c5a547c3a6a8fb9f4ca54336cf6dc9adb8c6a) ) // good + ROM_LOAD16_WORD_SWAP( "mpr-18788.ic9", 0x2000000, 0x0400000, CRC(feae5867) SHA1(7d2e47d5ab18700a246d53fdb7872a905cdac55a) ) // good + + ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player + ROM_LOAD( "critcrsh.nv", 0x0000, 0x0080, CRC(3da9860e) SHA1(05b315aa71fcfc4e617266e1c5e4954eccbf7854) ) +ROM_END + /* Sports Fishing @@ -3394,125 +3523,141 @@ ROM_START( nclubv2 ) ROM_LOAD( "nclubv2.nv", 0x0000, 0x0080, CRC(96d55fa9) SHA1(b3c821d6cd4ed52d0e20565e12a06d8f81a08dbc) ) ROM_END +ROM_START( patocar ) + STV_BIOS + + ROM_REGION32_BE( 0x3000000, "cart", ROMREGION_ERASE00 ) /* SH2 code */ + ROM_LOAD16_WORD_SWAP( "ic22.bin", 0x0200000, 0x200000, CRC(b7e6d425) SHA1(b7496cb390fe50ee786815082415427056e4e3e1) ) + ROM_LOAD16_WORD_SWAP( "ic24.bin", 0x0400000, 0x200000, CRC(cbbb687e) SHA1(cfc87ae6124f9978bb2432b98d77f0da07d020b7) ) + ROM_LOAD16_WORD_SWAP( "ic26.bin", 0x0600000, 0x200000, CRC(91db9dbe) SHA1(8652fe45ce56633016403c75e8b3a7b77f279819) ) + ROM_LOAD16_WORD_SWAP( "ic28.bin", 0x0800000, 0x200000, CRC(bff0cd9c) SHA1(3c62aa2d7f71bd6fb147fdcd8d99cd7815f3047e) ) + ROM_LOAD16_WORD_SWAP( "ic30.bin", 0x0a00000, 0x200000, CRC(9a4109e5) SHA1(ba59caac5f5a80fc52c507d8a47f322a380aa9a1) ) // empty / FF filled + + ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player + ROM_LOAD( "patocar.nv", 0x0000, 0x0080, CRC(d9873ee8) SHA1(e74747816bba6745afd718b0beec67a884c6a31c) ) +ROM_END + -GAME( 1996, stvbios, 0, stv_slot, stv, stv_state, stv, ROT0, "Sega", "ST-V Bios", MACHINE_IS_BIOS_ROOT ) +GAME( 1996, stvbios, 0, stv_slot, stv, stv_state, stv, ROT0, "Sega", "ST-V Bios", MACHINE_IS_BIOS_ROOT ) -//GAME YEAR, NAME, PARENT, MACH, INP, INIT, MONITOR +//GAME YEAR, NAME, PARENT, MACH, INP, STATE, INIT, MONITOR /* Playable */ -GAME( 1998, astrass, stvbios, stv_5881, stv6b, stv_state, astrass, ROT0, "Sunsoft", "Astra SuperStars (J 980514 V1.002)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, bakubaku, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Baku Baku Animal (J 950407 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, batmanfr, stvbios, batmanfr, stv, stv_state, batmanfr, ROT0, "Acclaim", "Batman Forever (JUE 960507 V1.000)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, colmns97, stvbios, stv, stv, stv_state, colmns97, ROT0, "Sega", "Columns '97 (JET 961209 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, cotton2, stvbios, stv, stv, stv_state, cotton2, ROT0, "Success", "Cotton 2 (JUET 970902 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, cottonbm, stvbios, stv, stv, stv_state, cottonbm, ROT0, "Success", "Cotton Boomerang (JUET 980709 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, astrass, stvbios, stv_5881, stv6b, stv_state, astrass, ROT0, "Sunsoft", "Astra SuperStars (J 980514 V1.002)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, bakubaku, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Baku Baku Animal (J 950407 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, batmanfr, stvbios, batmanfr, stv, stv_state, batmanfr, ROT0, "Acclaim", "Batman Forever (JUE 960507 V1.000)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, colmns97, stvbios, stv, stv, stv_state, colmns97, ROT0, "Sega", "Columns '97 (JET 961209 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, cotton2, stvbios, stv, stv, stv_state, cotton2, ROT0, "Success", "Cotton 2 (JUET 970902 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, cottonbm, stvbios, stv, stv, stv_state, cottonbm, ROT0, "Success", "Cotton Boomerang (JUET 980709 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, critcrsh, stvbios, stv, critcrsh, stv_state, critcrsh, ROT0, "Sega", "Critter Crusher (EA 951204 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, danchih, stvbios, stv, stvmp, stv_state, danchih, ROT0, "Altron (Tecmo license)", "Danchi de Hanafuda (J 990607 V1.400)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, danchiq, stvbios, stv, stv, stv_state, danchiq, ROT0, "Altron", "Danchi de Quiz: Okusan Yontaku Desuyo! (J 001128 V1.200)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, diehard, stvbios, stv, stv, stv_state, diehard, ROT0, "Sega", "Die Hard Arcade (UET 960515 V1.000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, dnmtdeka, diehard, stv, stv, stv_state, dnmtdeka, ROT0, "Sega", "Dynamite Deka (J 960515 V1.000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, ejihon, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Ejihon Tantei Jimusyo (J 950613 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, elandore, stvbios, stv_5881, stv6b, stv_state, elandore, ROT0, "Sai-Mate", "Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, ffrevng10, ffreveng,stv_5881, stv6b, stv_state, ffreveng, ROT0, "Capcom", "Final Fight Revenge (JUET 990714 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, ffreveng, stvbios, stv_5881, stv6b, stv_state, ffreveng, ROT0, "Capcom", "Final Fight Revenge (JUET 990930 V1.100)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, fhboxers, stvbios, stv, stv, stv_state, fhboxers, ROT0, "Sega", "Funky Head Boxers (JUETBKAL 951218 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, findlove, stvbios, stv, stv, stv_state, stv, ROT0, "Daiki / FCF", "Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, gaxeduel, stvbios, stv, stv6b, stv_state, gaxeduel, ROT0, "Sega", "Golden Axe - The Duel (JUETL 950117 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS) -GAME( 1998, grdforce, stvbios, stv, stv, stv_state, grdforce, ROT0, "Success", "Guardian Force (JUET 980318 V0.105)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, groovef, stvbios, stv, stv6b, stv_state, groovef, ROT0, "Atlus", "Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, hanagumi, stvbios, stv, stv, stv_state, hanagumi, ROT0, "Sega", "Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, introdon, stvbios, stv, stv, stv_state, stv, ROT0, "Sunsoft / Success", "Karaoke Quiz Intro Don Don! (J 960213 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, kiwames, stvbios, stv, stvmp, stv_state, stvmp, ROT0, "Athena", "Pro Mahjong Kiwame S (J 951020 V1.208)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, maruchan, stvbios, stv, stv, stv_state, maruchan, ROT0, "Sega / Toyosuisan", "Maru-Chan de Goo! (J 971216 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, mausuke, stvbios, stv, stv, stv_state, mausuke, ROT0, "Data East", "Mausuke no Ojama the World (J 960314 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, tatacot, critcrsh,stv, critcrsh, stv_state, critcrsh, ROT0, "Sega", "Tatacot (JA 951128 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, danchih, stvbios, stv, stvmp, stv_state, danchih, ROT0, "Altron (Tecmo license)", "Danchi de Hanafuda (J 990607 V1.400)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, danchiq, stvbios, stv, stv, stv_state, danchiq, ROT0, "Altron", "Danchi de Quiz: Okusan Yontaku Desuyo! (J 001128 V1.200)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, diehard, stvbios, stv, stv, stv_state, diehard, ROT0, "Sega", "Die Hard Arcade (UET 960515 V1.000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, dnmtdeka, diehard, stv, stv, stv_state, dnmtdeka, ROT0, "Sega", "Dynamite Deka (J 960515 V1.000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, ejihon, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Ejihon Tantei Jimusyo (J 950613 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, elandore, stvbios, stv_5881, stv6b, stv_state, elandore, ROT0, "Sai-Mate", "Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, ffrevng10, ffreveng,stv_5881, stv6b, stv_state, ffreveng, ROT0, "Capcom", "Final Fight Revenge (JUET 990714 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, ffreveng, stvbios, stv_5881, stv6b, stv_state, ffreveng, ROT0, "Capcom", "Final Fight Revenge (JUET 990930 V1.100)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, fhboxers, stvbios, stv, stv, stv_state, fhboxers, ROT0, "Sega", "Funky Head Boxers (JUETBKAL 951218 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, findlove, stvbios, stv, stv, stv_state, stv, ROT0, "Daiki / FCF", "Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, gaxeduel, stvbios, stv, stv6b, stv_state, gaxeduel, ROT0, "Sega", "Golden Axe - The Duel (JUETL 950117 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS) +GAME( 1998, grdforce, stvbios, stv, stv, stv_state, grdforce, ROT0, "Success", "Guardian Force (JUET 980318 V0.105)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, groovef, stvbios, stv, stv6b, stv_state, groovef, ROT0, "Atlus", "Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, hanagumi, stvbios, stv, stv, stv_state, hanagumi, ROT0, "Sega", "Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, introdon, stvbios, stv, stv, stv_state, stv, ROT0, "Sunsoft / Success", "Karaoke Quiz Intro Don Don! (J 960213 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, kiwames, stvbios, stv, stvmp, stv_state, stvmp, ROT0, "Athena", "Pro Mahjong Kiwame S (J 951020 V1.208)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, maruchan, stvbios, stv, stv, stv_state, maruchan, ROT0, "Sega / Toyosuisan", "Maru-Chan de Goo! (J 971216 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, mausuke, stvbios, stv, stv, stv_state, mausuke, ROT0, "Data East", "Mausuke no Ojama the World (J 960314 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1998, myfairld, stvbios, stv, myfairld, stv_state, stvmp, ROT0, "Micronet", "Virtual Mahjong 2 - My Fair Lady (J 980608 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, othellos, stvbios, stv, stv, stv_state, othellos, ROT0, "Success", "Othello Shiyouyo (J 980423 V1.002)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, pblbeach, stvbios, stv, stv, stv_state, pblbeach, ROT0, "T&E Soft", "Pebble Beach - The Great Shot (JUE 950913 V0.990)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, prikura, stvbios, stv, stv, stv_state, prikura, ROT0, "Atlus", "Princess Clara Daisakusen (J 960910 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, puyosun, stvbios, stv, stv, stv_state, puyosun, ROT0, "Compile", "Puyo Puyo Sun (J 961115 V0.001)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, rsgun, stvbios, stv_5881, stv, stv_state, rsgun, ROT0, "Treasure", "Radiant Silvergun (JUET 980523 V1.000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sasissu, stvbios, stv, stv, stv_state, sasissu, ROT0, "Sega", "Taisen Tanto-R Sashissu!! (J 980216 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, sanjeon, sasissu, stv, stv, stv_state, sanjeon, ROT0, "Sega / Deniam", "DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, seabass, stvbios, stv, stv, stv_state, seabass, ROT0, "A wave inc. (Able license)", "Sea Bass Fishing (JUET 971110 V0.001)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, shanhigw, stvbios, stv, stv, stv_state, shanhigw, ROT0, "Sunsoft / Activision", "Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, shienryu, stvbios, stv, stv, stv_state, shienryu, ROT270, "Warashi", "Shienryu (JUET 961226 V1.000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sss, stvbios, stv_5881, stv, stv_state, sss, ROT0, "Capcom / Cave / Victor", "Steep Slope Sliders (JUET 981110 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, sandor, stvbios, stv, stv, stv_state, sandor, ROT0, "Sega", "Puzzle & Action: Sando-R (J 951114 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, thunt, sandor, stv, stv, stv_state, thunt, ROT0, "Sega", "Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, thuntk, sandor, stv, stv, stv_state, sandor, ROT0, "Sega / Deniam", "Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, smleague, stvbios, stv, stv, stv_state, smleague, ROT0, "Sega", "Super Major League (U 960108 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, finlarch, smleague,stv, stv, stv_state, finlarch, ROT0, "Sega", "Final Arch (J 950714 V1.001)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, sokyugrt, stvbios, stv, stv, stv_state, sokyugrt, ROT0, "Raizing / Eighting", "Soukyugurentai / Terra Diver (JUET 960821 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, suikoenb, stvbios, stv, stv6b, stv_state, suikoenb, ROT0, "Data East", "Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, vfkids, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Virtua Fighter Kids (JUET 960319 V0.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, othellos, stvbios, stv, stv, stv_state, othellos, ROT0, "Success", "Othello Shiyouyo (J 980423 V1.002)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, patocar, stvbios, hopper, patocar, stv_state, hopper, ROT0, "Sega", "Hashire Patrol Car (J 990326 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1995, pblbeach, stvbios, stv, stv, stv_state, pblbeach, ROT0, "T&E Soft", "Pebble Beach - The Great Shot (JUE 950913 V0.990)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, prikura, stvbios, stv, stv, stv_state, prikura, ROT0, "Atlus", "Princess Clara Daisakusen (J 960910 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, puyosun, stvbios, stv, stv, stv_state, puyosun, ROT0, "Compile", "Puyo Puyo Sun (J 961115 V0.001)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, rsgun, stvbios, stv_5881, stv, stv_state, rsgun, ROT0, "Treasure", "Radiant Silvergun (JUET 980523 V1.000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sasissu, stvbios, stv, stv, stv_state, sasissu, ROT0, "Sega", "Taisen Tanto-R Sashissu!! (J 980216 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, sanjeon, sasissu, stv, stv, stv_state, sanjeon, ROT0, "Sega / Deniam", "DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, seabass, stvbios, stv, stv, stv_state, seabass, ROT0, "A wave inc. (Able license)", "Sea Bass Fishing (JUET 971110 V0.001)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, shanhigw, stvbios, stv, stv, stv_state, shanhigw, ROT0, "Sunsoft / Activision", "Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, shienryu, stvbios, stv, stv, stv_state, shienryu, ROT270, "Warashi", "Shienryu (JUET 961226 V1.000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sss, stvbios, stv_5881, stv, stv_state, sss, ROT0, "Capcom / Cave / Victor", "Steep Slope Sliders (JUET 981110 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, sandor, stvbios, stv, stv, stv_state, sandor, ROT0, "Sega", "Puzzle & Action: Sando-R (J 951114 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, thunt, sandor, stv, stv, stv_state, thunt, ROT0, "Sega", "Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, thuntk, sandor, stv, stv, stv_state, sandor, ROT0, "Sega / Deniam", "Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, smleague, stvbios, stv, stv, stv_state, smleague, ROT0, "Sega", "Super Major League (U 960108 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, finlarch, smleague,stv, stv, stv_state, finlarch, ROT0, "Sega", "Final Arch (J 950714 V1.001)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, sokyugrt, stvbios, stv, stv, stv_state, sokyugrt, ROT0, "Raizing / Eighting", "Soukyugurentai / Terra Diver (JUET 960821 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, suikoenb, stvbios, stv, stv6b, stv_state, suikoenb, ROT0, "Data East", "Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, vfkids, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Virtua Fighter Kids (JUET 960319 V0.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, vmahjong, stvbios, stv, vmahjong, stv_state, stvmp, ROT0, "Micronet", "Virtual Mahjong (J 961214 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, winterht, stvbios, stv, stv, stv_state, winterht, ROT0, "Sega", "Winter Heat (JUET 971012 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, znpwfv, stvbios, stv, stv, stv_state, znpwfv, ROT0, "Sega", "Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, znpwfvt, znpwfv, stv, stv, stv_state, znpwfv, ROT0, "Sega", "Zen Nippon Pro-Wrestling Featuring Virtua (T 971123 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, winterht, stvbios, stv, stv, stv_state, winterht, ROT0, "Sega", "Winter Heat (JUET 971012 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, znpwfv, stvbios, stv, stv, stv_state, znpwfv, ROT0, "Sega", "Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, znpwfvt, znpwfv, stv, stv, stv_state, znpwfv, ROT0, "Sega", "Zen Nippon Pro-Wrestling Featuring Virtua (T 971123 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* Unemulated printer / camera devices */ // USA sets -GAME( 1997, pclub2, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 (U 970921 V1.000)", MACHINE_NOT_WORKING ) -GAME( 1999, pclub2v3, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 3 (U 990310 V1.000)", MACHINE_NOT_WORKING ) // Hello Kitty themed -GAME( 1999, pclubpok, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Pokemon B (U 991126 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1997, pclub2, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 (U 970921 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1999, pclub2v3, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 3 (U 990310 V1.000)", MACHINE_NOT_WORKING ) // Hello Kitty themed +GAME( 1999, pclubpok, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Pokemon B (U 991126 V1.000)", MACHINE_NOT_WORKING ) // Japan sets -GAME( 1999, pclub2fc, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)", MACHINE_NOT_WORKING ) -GAME( 1998, pclub2pf, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Puffy (Japan)", MACHINE_NOT_WORKING ) // version info is blank -GAME( 1997, pclub2pe, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Pepsiman (J 970618 V1.100)", MACHINE_NOT_WORKING ) -GAME( 1997, pclub2wb, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Warner Bros (J 970228 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1999, pclub2fc, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)", MACHINE_NOT_WORKING ) +GAME( 1998, pclub2pf, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Puffy (Japan)", MACHINE_NOT_WORKING ) // version info is blank +GAME( 1997, pclub2pe, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Pepsiman (J 970618 V1.100)", MACHINE_NOT_WORKING ) +GAME( 1997, pclub2wb, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Warner Bros (J 970228 V1.000)", MACHINE_NOT_WORKING ) -GAME( 1997, pclb2elk, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)", MACHINE_NOT_WORKING ) -GAME( 1997, pckobe99, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Kobe Luminaire '99 (Print Club Custom 3) (J 991203 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1997, pclb2elk, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1997, pckobe99, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Kobe Luminaire '99 (Print Club Custom 3) (J 991203 V1.000)", MACHINE_NOT_WORKING ) -GAME( 1997, pclub26w, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 6 Winter (J 961210 V1.000)", MACHINE_NOT_WORKING ) // internal string is 'PURIKURA2 97FUYU' (but in reality it seems to be an end of 96 Winter version) -GAME( 1997, pclub26wa, pclub26w,stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 6 Winter (J 970121 V1.200)", MACHINE_NOT_WORKING ) // ^ -GAME( 1997, pclub27s, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 7 Spring (J 970313 V1.100)", MACHINE_NOT_WORKING ) -GAME( 1997, prc28su, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 8 Summer (J 970616 V1.100)", MACHINE_NOT_WORKING ) // internal string 97SUMMER -GAME( 1997, prc29au, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 9 Autumn (J V1.100)", MACHINE_NOT_WORKING ) // internal string 97AUTUMN, no date code! (all 0) -GAME( 1997, prc297wi, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1)", MACHINE_NOT_WORKING ) // internal string is '97WINTER' -GAME( 1997, prc297wia, prc297wi,stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2)", MACHINE_NOT_WORKING ) // different program revision, same date code, clearly didn't get updated properly -GAME( 1998, prc298sp, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Spring Ver (J 971017 V1.100)", MACHINE_NOT_WORKING ) // again, date doesn't appear to have bene updated, this should be early 98 -GAME( 1998, prc298su, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Summer Ver (J 980603 V1.100)", MACHINE_NOT_WORKING ) // -GAME( 1998, prc298au, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Autumn Ver (J 980827 V1.000)", MACHINE_NOT_WORKING ) -GAME( 2000, prc2ksu, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 2000 Summer (J 000509 V1.000)", MACHINE_NOT_WORKING ) // internal string 2000_SUMMER +GAME( 1997, pclub26w, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 6 Winter (J 961210 V1.000)", MACHINE_NOT_WORKING ) // internal string is 'PURIKURA2 97FUYU' (but in reality it seems to be an end of 96 Winter version) +GAME( 1997, pclub26wa, pclub26w,stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 6 Winter (J 970121 V1.200)", MACHINE_NOT_WORKING ) // ^ +GAME( 1997, pclub27s, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 7 Spring (J 970313 V1.100)", MACHINE_NOT_WORKING ) +GAME( 1997, prc28su, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 8 Summer (J 970616 V1.100)", MACHINE_NOT_WORKING ) // internal string 97SUMMER +GAME( 1997, prc29au, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 Vol. 9 Autumn (J V1.100)", MACHINE_NOT_WORKING ) // internal string 97AUTUMN, no date code! (all 0) +GAME( 1997, prc297wi, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1)", MACHINE_NOT_WORKING ) // internal string is '97WINTER' +GAME( 1997, prc297wia, prc297wi,stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2)", MACHINE_NOT_WORKING ) // different program revision, same date code, clearly didn't get updated properly +GAME( 1998, prc298sp, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Spring Ver (J 971017 V1.100)", MACHINE_NOT_WORKING ) // again, date doesn't appear to have bene updated, this should be early 98 +GAME( 1998, prc298su, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Summer Ver (J 980603 V1.100)", MACHINE_NOT_WORKING ) // +GAME( 1998, prc298au, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 '98 Autumn Ver (J 980827 V1.000)", MACHINE_NOT_WORKING ) +GAME( 2000, prc2ksu, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club 2 2000 Summer (J 000509 V1.000)", MACHINE_NOT_WORKING ) // internal string 2000_SUMMER -GAME( 1999, pclubor, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Goukakenran (J 991104 V1.000)", MACHINE_NOT_WORKING ) -GAME( 1999, pclubol, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Olive (J 980717 V1.000)", MACHINE_NOT_WORKING ) -GAME( 1997, pclub2kc, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Kome Kome Club (J 970203 V1.000)", MACHINE_NOT_WORKING ) -GAME( 1997, pclubyo2, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Yoshimoto V2 (J 970422 V1.100)", MACHINE_NOT_WORKING ) +GAME( 1999, pclubor, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Goukakenran (J 991104 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1999, pclubol, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Olive (J 980717 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1997, pclub2kc, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Kome Kome Club (J 970203 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1997, pclubyo2, stvbios, stv, stv, stv_state, stv, ROT0, "Atlus", "Print Club Yoshimoto V2 (J 970422 V1.100)", MACHINE_NOT_WORKING ) -GAME( 1997, pclove, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club LoveLove (J 970421 V1.000)", MACHINE_NOT_WORKING ) // uses the same type of protection as decathlete!! -GAME( 1997, pclove2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club LoveLove Ver 2 (J 970825 V1.000)", MACHINE_NOT_WORKING ) // ^ -GAME( 1997, pcpooh2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club Winnie-the-Pooh Vol. 2 (J 971218 V1.000)", MACHINE_NOT_WORKING ) // ^ -GAME( 1998, pcpooh3, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club Winnie-the-Pooh Vol. 3 (J 980406 V1.000)", MACHINE_NOT_WORKING ) // ^ +GAME( 1997, pclove, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club LoveLove (J 970421 V1.000)", MACHINE_NOT_WORKING ) // uses the same type of protection as decathlete!! +GAME( 1997, pclove2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club LoveLove Ver 2 (J 970825 V1.000)", MACHINE_NOT_WORKING ) // ^ +GAME( 1997, pcpooh2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club Winnie-the-Pooh Vol. 2 (J 971218 V1.000)", MACHINE_NOT_WORKING ) // ^ +GAME( 1998, pcpooh3, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Atlus", "Print Club Winnie-the-Pooh Vol. 3 (J 980406 V1.000)", MACHINE_NOT_WORKING ) // ^ -GAME( 1998, stress, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Stress Busters (J 981020 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, stress, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Stress Busters (J 981020 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, nameclub, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Name Club (J 960315 V1.000)", MACHINE_NOT_WORKING ) // uses the same type of protection as decathlete!! -GAME( 1996, nclubv2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Name Club Ver.2 (J 960315 V1.000)", MACHINE_NOT_WORKING ) // ^ (has the same datecode as nameclub, probably incorrect unless both were released today) -GAME( 1997, nclubv3, stvbios, stv, stv, stv_state, nameclv3, ROT0, "Sega", "Name Club Ver.3 (J 970723 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // no protection +GAME( 1996, nameclub, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Name Club (J 960315 V1.000)", MACHINE_NOT_WORKING ) // uses the same type of protection as decathlete!! +GAME( 1996, nclubv2, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Name Club Ver.2 (J 960315 V1.000)", MACHINE_NOT_WORKING ) // ^ (has the same datecode as nameclub, probably incorrect unless both were released today) +GAME( 1997, nclubv3, stvbios, stv, stv, stv_state, nameclv3, ROT0, "Sega", "Name Club Ver.3 (J 970723 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // no protection /* Doing something.. but not enough yet */ -GAME( 1995, vfremix, stvbios, stv, stv, stv_state, vfremix, ROT0, "Sega", "Virtua Fighter Remix (JUETBKAL 950428 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1996, decathlt, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Decathlete (JUET 960709 V1.001)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1996, decathlto, decathlt,stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Decathlete (JUET 960424 V1.000)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1998, twcup98, stvbios, stv_5881, stv, stv_state, twcup98, ROT0, "Tecmo", "Tecmo World Cup '98 (JUET 980410 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // some situations with the GK result in the game stalling, maybe CPU core bug?? -GAME( 1998, twsoc98, twcup98, stv_5881, stv, stv_state, twcup98, ROT0, "Tecmo", "Tecmo World Soccer '98 (JUET 980410 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // ^^ (check) +GAME( 1995, vfremix, stvbios, stv, stv, stv_state, vfremix, ROT0, "Sega", "Virtua Fighter Remix (JUETBKAL 950428 V1.000)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1996, decathlt, stvbios, stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Decathlete (JUET 960709 V1.001)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1996, decathlto, decathlt,stv_5838, stv, stv_state, decathlt, ROT0, "Sega", "Decathlete (JUET 960424 V1.000)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1998, twcup98, stvbios, stv_5881, stv, stv_state, twcup98, ROT0, "Tecmo", "Tecmo World Cup '98 (JUET 980410 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // some situations with the GK result in the game stalling, maybe CPU core bug?? +GAME( 1998, twsoc98, twcup98, stv_5881, stv, stv_state, twcup98, ROT0, "Tecmo", "Tecmo World Soccer '98 (JUET 980410 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // ^^ (check) /* Gives I/O errors */ -GAME( 1996, magzun, stvbios, stv, stv, stv_state, magzun, ROT0, "Sega", "Magical Zunou Power (J 961031 V1.000)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_MICROPHONE ) -GAME( 1997, techbowl, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Technical Bowling (J 971212 V1.000)", MACHINE_NOT_WORKING ) -GAME( 1999, micrombc, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Microman Battle Charge (J 990326 V1.000)", MACHINE_NOT_WORKING ) -GAME( 1998, choroqhr, stvbios, stv, stv, stv_state, stv, ROT0, "Sega / Takara", "Choro Q Hyper Racing 5 (J 981230 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1996, magzun, stvbios, stv, stv, stv_state, magzun, ROT0, "Sega", "Magical Zunou Power (J 961031 V1.000)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_MICROPHONE ) +GAME( 1997, techbowl, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Technical Bowling (J 971212 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1999, micrombc, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Microman Battle Charge (J 990326 V1.000)", MACHINE_NOT_WORKING ) +GAME( 1998, choroqhr, stvbios, stv, stv, stv_state, stv, ROT0, "Sega / Takara", "Choro Q Hyper Racing 5 (J 981230 V1.000)", MACHINE_NOT_WORKING ) /* CD games */ -GAME( 1995, sfish2, 0, stv, stv, stv_state, stv, ROT0, "Sega", "Sport Fishing 2 (UET 951106 V1.10e)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) -GAME( 1995, sfish2j, sfish2, stv, stv, stv_state, stv, ROT0, "Sega", "Sport Fishing 2 (J 951201 V1.100)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 1995, sfish2, 0, stv, stv, stv_state, stv, ROT0, "Sega", "Sport Fishing 2 (UET 951106 V1.10e)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 1995, sfish2j, sfish2, stv, stv, stv_state, stv, ROT0, "Sega", "Sport Fishing 2 (J 951201 V1.100)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) /* This is the known list of undumped ST-V games: diff --git a/src/mame/drivers/su2000.cpp b/src/mame/drivers/su2000.cpp index 05626c7714d..51501fe3dc7 100644 --- a/src/mame/drivers/su2000.cpp +++ b/src/mame/drivers/su2000.cpp @@ -119,7 +119,7 @@ static void ide_interrupt(device_t *device, int state) * *************************************/ -static MACHINE_CONFIG_START( su2000, su2000_state ) +static MACHINE_CONFIG_START( su2000 ) /* Basic machine hardware */ MCFG_CPU_ADD("maincpu", I486, I486_CLOCK) MCFG_CPU_PROGRAM_MAP(pcat_map) @@ -266,4 +266,4 @@ ROM_START( su2000 ) * *************************************/ -GAME( 1993, su2000, 0, su2000, pc_keyboard, driver_device, 0, ROT0, "Virtuality", "SU2000", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1993, su2000, 0, su2000, pc_keyboard, su2000_state, 0, ROT0, "Virtuality", "SU2000", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/sub.cpp b/src/mame/drivers/sub.cpp index c860afdd287..a43d54e3354 100644 --- a/src/mame/drivers/sub.cpp +++ b/src/mame/drivers/sub.cpp @@ -442,7 +442,7 @@ INTERRUPT_GEN_MEMBER(sub_state::sound_irq) m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( sub, sub_state ) +static MACHINE_CONFIG_START( sub ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MASTER_CLOCK/6) /* ? MHz */ @@ -516,4 +516,4 @@ ROM_START( sub ) ROM_LOAD( "prom pos c8 n82s129", 0x0600, 0x100, CRC(351e1ef8) SHA1(530c9012ff5abda1c4ba9787ca999ca1ae1a893d) ) ROM_END -GAME( 1985, sub, 0, sub, sub, driver_device, 0, ROT270, "Sigma Enterprises Inc.", "Submarine (Sigma)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sub, 0, sub, sub, sub_state, 0, ROT270, "Sigma Enterprises Inc.", "Submarine (Sigma)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/subhuntr.cpp b/src/mame/drivers/subhuntr.cpp index 33b61913da6..b9f6fc711b5 100644 --- a/src/mame/drivers/subhuntr.cpp +++ b/src/mame/drivers/subhuntr.cpp @@ -130,7 +130,7 @@ static GFXDECODE_START( subhuntr ) GFXDECODE_END -static MACHINE_CONFIG_START( subhuntr, subhuntr_state ) +static MACHINE_CONFIG_START( subhuntr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 14318180/4/2) @@ -179,4 +179,4 @@ ROM_START( subhuntr ) ROM_LOAD( "82S115.2B", 0x0000, 0x0200, CRC(6946c9de) SHA1(956b4bebe6960a73609deb75e1493c4127fd7f77) ) // ASCII, not much else ROM_END -GAME(1979, subhuntr, 0, subhuntr, subhuntr, driver_device, 0, ROT0, "Model Racing", "Sub Hunter (Model Racing)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME(1979, subhuntr, 0, subhuntr, subhuntr, subhuntr_state, 0, ROT0, "Model Racing", "Sub Hunter (Model Racing)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/subs.cpp b/src/mame/drivers/subs.cpp index 84d1c34425b..76a30841615 100644 --- a/src/mame/drivers/subs.cpp +++ b/src/mame/drivers/subs.cpp @@ -180,7 +180,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( subs, subs_state ) +static MACHINE_CONFIG_START( subs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,12096000/16) /* clock input is the "4H" signal */ @@ -256,4 +256,4 @@ ROM_END * *************************************/ -GAME( 1977, subs, 0, subs, subs, driver_device, 0, ROT0, "Atari", "Subs", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1977, subs, 0, subs, subs, subs_state, 0, ROT0, "Atari", "Subs", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp index cca15d88f5d..54ec51fd806 100644 --- a/src/mame/drivers/subsino.cpp +++ b/src/mame/drivers/subsino.cpp @@ -2798,7 +2798,7 @@ GFXDECODE_END * Machine Drivers * ***************************************************************************/ -static MACHINE_CONFIG_START( victor21, subsino_state ) +static MACHINE_CONFIG_START( victor21 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 8) /* Unknown clock */ MCFG_CPU_PROGRAM_MAP(victor21_map) @@ -2828,7 +2828,7 @@ static MACHINE_CONFIG_START( victor21, subsino_state ) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_4_433619MHz / 4, OKIM6295_PIN7_HIGH) /* Clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", XTAL_4_433619MHz / 4, PIN7_HIGH) /* Clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2841,7 +2841,7 @@ static MACHINE_CONFIG_DERIVED( victor5, victor21 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( crsbingo, subsino_state ) +static MACHINE_CONFIG_START( crsbingo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 8) /* Unknown CPU and clock */ MCFG_CPU_PROGRAM_MAP(crsbingo_map) @@ -2873,7 +2873,7 @@ static MACHINE_CONFIG_START( crsbingo, subsino_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( srider, subsino_state ) +static MACHINE_CONFIG_START( srider ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 8) /* Unknown clock */ MCFG_CPU_PROGRAM_MAP(srider_map) @@ -2903,7 +2903,7 @@ static MACHINE_CONFIG_START( srider, subsino_state ) MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_3_579545MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_4_433619MHz / 4, OKIM6295_PIN7_HIGH) /* Clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", XTAL_4_433619MHz / 4, PIN7_HIGH) /* Clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2915,7 +2915,7 @@ static MACHINE_CONFIG_DERIVED( sharkpy, srider ) MCFG_CPU_PROGRAM_MAP(sharkpy_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tisub, subsino_state ) +static MACHINE_CONFIG_START( tisub ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 8) /* Unknown CPU and clock */ MCFG_CPU_PROGRAM_MAP(tisub_map) @@ -2946,7 +2946,7 @@ static MACHINE_CONFIG_START( tisub, subsino_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( stbsub, subsino_state ) +static MACHINE_CONFIG_START( stbsub ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 8) /* Unknown clock */ MCFG_CPU_PROGRAM_MAP(stbsub_map) diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp index 58593f5c348..03bd43f6dab 100644 --- a/src/mame/drivers/subsino2.cpp +++ b/src/mame/drivers/subsino2.cpp @@ -887,7 +887,7 @@ READ16_MEMBER(subsino2_state::bishjan_serial_r) return (machine().rand() & 0x9800) | // bit 7 - serial communication (((m_bishjan_sound == 0x12) ? 0x40:0x00) << 8) | // bit 6 - sound communication -// (machine.rand() & 0xff); +// (machine().rand() & 0xff); // (((m_screen->frame_number()%60)==0)?0x18:0x00); 0x18; } @@ -2352,7 +2352,7 @@ INPUT_PORTS_END Bishou Jan ***************************************************************************/ -static MACHINE_CONFIG_START( bishjan, subsino2_state ) +static MACHINE_CONFIG_START( bishjan ) MCFG_CPU_ADD("maincpu", H83044, XTAL_44_1MHz / 3) MCFG_CPU_PROGRAM_MAP( bishjan_map ) MCFG_CPU_VBLANK_INT_DRIVER("screen", subsino2_state, irq0_line_hold) @@ -2399,7 +2399,7 @@ MACHINE_CONFIG_END Magic Train ***************************************************************************/ -static MACHINE_CONFIG_START( mtrain, subsino2_state ) +static MACHINE_CONFIG_START( mtrain ) MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 8) /* Unknown clock */ MCFG_CPU_PROGRAM_MAP( mtrain_map ) MCFG_CPU_IO_MAP( mtrain_io ) @@ -2423,7 +2423,7 @@ static MACHINE_CONFIG_START( mtrain, subsino2_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_8_4672MHz / 8, OKIM6295_PIN7_HIGH) // probably + MCFG_OKIM6295_ADD("oki", XTAL_8_4672MHz / 8, PIN7_HIGH) // probably MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2431,7 +2431,7 @@ MACHINE_CONFIG_END Sakura Love - Ying Hua Lian ***************************************************************************/ -static MACHINE_CONFIG_START( saklove, subsino2_state ) +static MACHINE_CONFIG_START( saklove ) MCFG_CPU_ADD("maincpu", I80188, XTAL_20MHz*2 ) // !! AMD AM188-EM !! MCFG_CPU_PROGRAM_MAP( saklove_map ) MCFG_CPU_IO_MAP( saklove_io ) @@ -2455,7 +2455,7 @@ static MACHINE_CONFIG_START( saklove, subsino2_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_8_4672MHz / 8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_8_4672MHz / 8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz / 4) // ? chip and clock unknown @@ -2466,7 +2466,7 @@ MACHINE_CONFIG_END X-Plan ***************************************************************************/ -static MACHINE_CONFIG_START( xplan, subsino2_state ) +static MACHINE_CONFIG_START( xplan ) MCFG_CPU_ADD("maincpu", I80188, XTAL_20MHz*2 ) // !! AMD AM188-EM !! MCFG_CPU_PROGRAM_MAP( xplan_map ) MCFG_CPU_IO_MAP( xplan_io ) @@ -2491,7 +2491,7 @@ static MACHINE_CONFIG_START( xplan, subsino2_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_8_4672MHz / 8, OKIM6295_PIN7_HIGH) // probably + MCFG_OKIM6295_ADD("oki", XTAL_8_4672MHz / 8, PIN7_HIGH) // probably MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/summit.cpp b/src/mame/drivers/summit.cpp index 323958899a0..a8dc78e162d 100644 --- a/src/mame/drivers/summit.cpp +++ b/src/mame/drivers/summit.cpp @@ -304,7 +304,7 @@ PALETTE_INIT_MEMBER(summit_state, summit) { } -static MACHINE_CONFIG_START( summit, summit_state ) +static MACHINE_CONFIG_START( summit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) MCFG_CPU_PROGRAM_MAP(mainmap) @@ -346,4 +346,4 @@ ROM_START( pushover ) ROM_END -GAME( 1981, pushover, 0, summit, summit, driver_device, 0, ROT270, "Summit Coin", "Push Over (Summit Coin)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND|MACHINE_WRONG_COLORS ) +GAME( 1981, pushover, 0, summit, summit, summit_state, 0, ROT270, "Summit Coin", "Push Over (Summit Coin)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND|MACHINE_WRONG_COLORS ) diff --git a/src/mame/drivers/sumt8035.cpp b/src/mame/drivers/sumt8035.cpp index 457c7dbe006..8702b86a2b5 100644 --- a/src/mame/drivers/sumt8035.cpp +++ b/src/mame/drivers/sumt8035.cpp @@ -233,7 +233,7 @@ static INPUT_PORTS_START( summit ) INPUT_PORTS_END -static MACHINE_CONFIG_START( summit, sumt8035_state ) +static MACHINE_CONFIG_START( summit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8035,5000000) MCFG_CPU_PROGRAM_MAP(sumt_map) @@ -255,5 +255,5 @@ ROM_START( sm_ultng ) ROM_END -GAME( 1981, sm_ngacc, 0, summit, summit, driver_device, 0, ROT270, "Summit Coin", "Nudge Accumulator (Summit Coin)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1981, sm_ultng, 0, summit, summit, driver_device, 0, ROT270, "Summit Coin", "Ultimate Nudge (Summit Coin)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1981, sm_ngacc, 0, summit, summit, sumt8035_state, 0, ROT270, "Summit Coin", "Nudge Accumulator (Summit Coin)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1981, sm_ultng, 0, summit, summit, sumt8035_state, 0, ROT270, "Summit Coin", "Ultimate Nudge (Summit Coin)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/sun1.cpp b/src/mame/drivers/sun1.cpp index be74d757311..48f89b79425 100644 --- a/src/mame/drivers/sun1.cpp +++ b/src/mame/drivers/sun1.cpp @@ -67,12 +67,15 @@ public: { } - required_device m_maincpu; - required_device m_terminal; DECLARE_READ16_MEMBER(sun1_upd7201_r); DECLARE_WRITE16_MEMBER(sun1_upd7201_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); + +protected: virtual void machine_reset() override; + + required_device m_maincpu; + required_device m_terminal; required_shared_ptr m_p_ram; uint8_t m_term_data; }; @@ -124,19 +127,19 @@ void sun1_state::machine_reset() } -WRITE8_MEMBER( sun1_state::kbd_put ) +void sun1_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( sun1, sun1_state ) +static MACHINE_CONFIG_START( sun1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(sun1_mem) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(sun1_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(sun1_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -166,5 +169,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, sun1, 0, 0, sun1, sun1, driver_device, 0, "Sun Microsystems", "Sun-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, sun1, 0, 0, sun1, sun1, sun1_state, 0, "Sun Microsystems", "Sun-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/sun2.cpp b/src/mame/drivers/sun2.cpp index a179a218c46..2830c4c0e48 100644 --- a/src/mame/drivers/sun2.cpp +++ b/src/mame/drivers/sun2.cpp @@ -582,7 +582,7 @@ void sun2_state::machine_reset() m_maincpu->reset(); } -static MACHINE_CONFIG_START( sun2vme, sun2_state ) +static MACHINE_CONFIG_START( sun2vme ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68010, 16670000) MCFG_CPU_PROGRAM_MAP(sun2_mem) @@ -642,7 +642,7 @@ static MACHINE_CONFIG_START( sun2vme, sun2_state ) MCFG_RS232_CTS_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, ctsb_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sun2mbus, sun2_state ) +static MACHINE_CONFIG_START( sun2mbus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68010, 16670000) MCFG_CPU_PROGRAM_MAP(sun2_mem) @@ -722,6 +722,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, sun2_50, 0, 0, sun2vme, sun2, driver_device, 0, "Sun Microsystems", "Sun 2/50", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1984, sun2_120, 0, 0, sun2mbus, sun2, driver_device, 0, "Sun Microsystems", "Sun 2/120", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, sun2_50, 0, 0, sun2vme, sun2, sun2_state, 0, "Sun Microsystems", "Sun 2/50", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1984, sun2_120, 0, 0, sun2mbus, sun2, sun2_state, 0, "Sun Microsystems", "Sun 2/120", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/sun3.cpp b/src/mame/drivers/sun3.cpp index 5257353a07f..ad3dd8a922a 100644 --- a/src/mame/drivers/sun3.cpp +++ b/src/mame/drivers/sun3.cpp @@ -950,7 +950,7 @@ void sun3_state::machine_reset() } // The base Sun 3004 CPU board -static MACHINE_CONFIG_START( sun3, sun3_state ) +static MACHINE_CONFIG_START( sun3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68020, 16670000) MCFG_CPU_PROGRAM_MAP(sun3_mem) @@ -1053,7 +1053,7 @@ static MACHINE_CONFIG_DERIVED( sun3200, sun3 ) MCFG_RAM_EXTRA_OPTIONS("64M,96M,128M") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sun3_50, sun3_state ) +static MACHINE_CONFIG_START( sun3_50 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68020, 15700000) MCFG_CPU_PROGRAM_MAP(sun3_mem) @@ -1257,10 +1257,10 @@ ROM_START( sun3_e ) ROM_LOAD( "sun3-e-idprom.bin", 0x000000, 0x000020, CRC(d1a92116) SHA1(4836f3188f2c3dd5ba49ab66e0b55caa6b1b1791) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, sun3_50, 0, 0, sun3_50, sun3, driver_device, 0, "Sun Microsystems", "Sun 3/50", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // Model 25 -COMP( 1988, sun3_60, 0, 0, sun3_60, sun3, driver_device, 0, "Sun Microsystems", "Sun 3/60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // Ferrari -COMP( 198?, sun3_110, 0, 0, sun3, sun3, driver_device, 0, "Sun Microsystems", "Sun 3/110", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // Prism -COMP( 1985, sun3_150, 0, 0, sun3, sun3, driver_device, 0, "Sun Microsystems", "Sun 3/75/140/150/160/180", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // AKA Carrera -COMP( 198?, sun3_260, 0, 0, sun3200, sun3, driver_device, 0, "Sun Microsystems", "Sun 3/260/280", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // Prism -COMP( 198?, sun3_e, 0, 0, sun3e, sun3, driver_device, 0, "Sun Microsystems", "Sun 3/E", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // Polaris +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, sun3_50, 0, 0, sun3_50, sun3, sun3_state, 0, "Sun Microsystems", "Sun 3/50", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Model 25 +COMP( 1988, sun3_60, 0, 0, sun3_60, sun3, sun3_state, 0, "Sun Microsystems", "Sun 3/60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Ferrari +COMP( 198?, sun3_110, 0, 0, sun3, sun3, sun3_state, 0, "Sun Microsystems", "Sun 3/110", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Prism +COMP( 1985, sun3_150, 0, 0, sun3, sun3, sun3_state, 0, "Sun Microsystems", "Sun 3/75/140/150/160/180", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // AKA Carrera +COMP( 198?, sun3_260, 0, 0, sun3200, sun3, sun3_state, 0, "Sun Microsystems", "Sun 3/260/280", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Prism +COMP( 198?, sun3_e, 0, 0, sun3e, sun3, sun3_state, 0, "Sun Microsystems", "Sun 3/E", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Polaris diff --git a/src/mame/drivers/sun3x.cpp b/src/mame/drivers/sun3x.cpp index 79125a1fffa..74a5ff4cb8e 100644 --- a/src/mame/drivers/sun3x.cpp +++ b/src/mame/drivers/sun3x.cpp @@ -574,7 +574,7 @@ static SLOT_INTERFACE_START( sun_floppies ) SLOT_INTERFACE( "35hd", FLOPPY_35_HD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( sun3_80, sun3x_state ) +static MACHINE_CONFIG_START( sun3_80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68030, 20000000) MCFG_CPU_PROGRAM_MAP(sun3_80_mem) @@ -621,7 +621,7 @@ static MACHINE_CONFIG_START( sun3_80, sun3x_state ) MCFG_SCREEN_REFRESH_RATE(72) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sun3_460, sun3x_state ) +static MACHINE_CONFIG_START( sun3_460 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68030, 33000000) MCFG_CPU_PROGRAM_MAP(sun3_460_mem) @@ -690,6 +690,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, sun3_80, 0, 0, sun3_80, sun3x, driver_device, 0, "Sun Microsystems", "Sun 3/80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // Hydra -COMP( 198?, sun3_460, 0, 0, sun3_460, sun3x, driver_device, 0, "Sun Microsystems", "Sun 3/460/470/480", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // Pegasus +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, sun3_80, 0, 0, sun3_80, sun3x, sun3x_state, 0, "Sun Microsystems", "Sun 3/80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Hydra +COMP( 198?, sun3_460, 0, 0, sun3_460, sun3x, sun3x_state, 0, "Sun Microsystems", "Sun 3/460/470/480", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Pegasus diff --git a/src/mame/drivers/sun4.cpp b/src/mame/drivers/sun4.cpp index cb7f5e53661..d45eeabde98 100644 --- a/src/mame/drivers/sun4.cpp +++ b/src/mame/drivers/sun4.cpp @@ -1890,7 +1890,7 @@ static MACHINE_CONFIG_FRAGMENT( ncr5390 ) MCFG_NCR5390_DRQ_HANDLER(DEVWRITELINE(":", sun4_state, scsi_drq)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sun4, sun4_state ) +static MACHINE_CONFIG_START( sun4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MB86901, 16670000) MCFG_DEVICE_ADDRESS_MAP(AS_PROGRAM, sun4_mem) @@ -1955,7 +1955,7 @@ static MACHINE_CONFIG_START( sun4, sun4_state ) MCFG_DEVICE_CARD_MACHINE_CONFIG("ncr5390", ncr5390) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sun4c, sun4_state ) +static MACHINE_CONFIG_START( sun4c ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MB86901, 16670000) MCFG_DEVICE_ADDRESS_MAP(AS_PROGRAM, sun4c_mem) @@ -2165,10 +2165,12 @@ ROM_END /* SCC init 1-2 for the keyboard is identical to Sun 4/75 init 1-2 */ ROM_START( sun4_50 ) ROM_REGION32_BE( 0x80000, "user1", ROMREGION_ERASEFF ) - ROM_SYSTEM_BIOS( 0, "v29", "V2.9") + ROM_SYSTEM_BIOS( 0, "v29", "V2.9" ) ROMX_LOAD( "ipx-29.h1.u0501", 0x0000, 0x40000, CRC(1910aa65) SHA1(7d8832fea8e299b89e6ec7137fcde497673c14f8), ROM_BIOS(1)) // 525-1177-06(?) Boot (Version 2.9 version 20, supposedly?) - ROM_SYSTEM_BIOS( 1, "v26", "V2.6") + ROM_SYSTEM_BIOS( 1, "v26", "V2.6" ) ROMX_LOAD( "525-1177-05__(c)_sun_1992.am27c020.h1.u0501", 0x0000, 0x40000, CRC(aad28dee) SHA1(18075afa479fdc8d318df9aef9847dfb20591d79), ROM_BIOS(2)) // 525-1177-05 Boot (Version 2.6 version 410, supposedly?) + ROM_SYSTEM_BIOS( 2, "v23", "V2.3" ) + ROMX_LOAD( "525-1177-03.h1.u0501", 0x0000, 0x40000, CRC(dcc1e66c) SHA1(a4dc3d8631aaa8416e22de273707c4ed7a2fe561), ROM_BIOS(3)) // 525-1177-03 Boot (Version 2.3) ROM_END // SPARCstation SLC (Sun 4/20) @@ -2247,7 +2249,10 @@ ROM_END */ ROM_START( sun4_75 ) ROM_REGION32_BE( 0x80000, "user1", ROMREGION_ERASEFF ) - ROM_LOAD( "ss2-29.rom", 0x0000, 0x40000, CRC(d04132b3) SHA1(ef26afafa2800b8e2e5e994b3a76ca17ce1314b1)) + ROM_SYSTEM_BIOS( 0, "v29", "V2.9" ) + ROMX_LOAD( "ss2-29.rom", 0x0000, 0x40000, CRC(d04132b3) SHA1(ef26afafa2800b8e2e5e994b3a76ca17ce1314b1), ROM_BIOS(1) ) + ROM_SYSTEM_BIOS( 1, "v22", "V2.2" ) + ROMX_LOAD( "525-1107-06.rom", 0x0000, 0x40000, CRC(7f5b58b4) SHA1(10a3eb3ddee667e7cf3c04aef6f6549e1b7f8311), ROM_BIOS(2) ) ROM_END // SPARCstation 10 (Sun S10) @@ -2291,20 +2296,20 @@ DRIVER_INIT_MEMBER(sun4_state, ss2) /* Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS // sun4 -COMP( 198?, sun4_110, 0, 0, sun4, sun4, sun4_state, sun4, "Sun Microsystems", "Sun 4/110", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1987, sun4_300, 0, 0, sun4, sun4, sun4_state, sun4, "Sun Microsystems", "Sun 4/3x0", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 198?, sun4_400, 0, 0, sun4, sun4, sun4_state, sun4, "Sun Microsystems", "Sun 4/4x0", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 198?, sun4_110, 0, 0, sun4, sun4, sun4_state, sun4, "Sun Microsystems", "Sun 4/110", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1987, sun4_300, 0, 0, sun4, sun4, sun4_state, sun4, "Sun Microsystems", "Sun 4/3x0", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 198?, sun4_400, 0, 0, sun4, sun4, sun4_state, sun4, "Sun Microsystems", "Sun 4/4x0", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // sun4c -COMP( 1990, sun4_40, sun4_300,0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation IPC (Sun 4/40)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1991, sun4_50, sun4_300,0, sun4c, sun4, sun4_state, ss2, "Sun Microsystems", "SPARCstation IPX (Sun 4/50)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 199?, sun4_20, sun4_300,0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation SLC (Sun 4/20)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1989, sun4_60, sun4_300,0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation 1 (Sun 4/60)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1990, sun4_65, sun4_300,0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation 1+ (Sun 4/65)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1990, sun4_75, sun4_300,0, sun4c, sun4, sun4_state, ss2, "Sun Microsystems", "SPARCstation 2 (Sun 4/75)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1990, sun4_40, sun4_300, 0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation IPC (Sun 4/40)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1991, sun4_50, sun4_300, 0, sun4c, sun4, sun4_state, ss2, "Sun Microsystems", "SPARCstation IPX (Sun 4/50)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 199?, sun4_20, sun4_300, 0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation SLC (Sun 4/20)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1989, sun4_60, sun4_300, 0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation 1 (Sun 4/60)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1990, sun4_65, sun4_300, 0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation 1+ (Sun 4/65)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1990, sun4_75, sun4_300, 0, sun4c, sun4, sun4_state, ss2, "Sun Microsystems", "SPARCstation 2 (Sun 4/75)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // sun4m (using the SPARC "reference MMU", probably will go to a separate driver) -COMP( 1992, sun_s10, sun4_300,0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation 10 (Sun S10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1994, sun_s20, sun4_300,0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation 20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1992, sun_s10, sun4_300, 0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation 10 (Sun S10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1994, sun_s20, sun4_300, 0, sun4c, sun4, sun4_state, sun4c, "Sun Microsystems", "SPARCstation 20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/suna16.cpp b/src/mame/drivers/suna16.cpp index b264d29e3fe..b56c1fbd24d 100644 --- a/src/mame/drivers/suna16.cpp +++ b/src/mame/drivers/suna16.cpp @@ -796,7 +796,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(suna16_state::bssoccer_interrupt) m_maincpu->set_input_line(2, HOLD_LINE); // does RAM to sprite buffer copy here } -static MACHINE_CONFIG_START( bssoccer, suna16_state ) +static MACHINE_CONFIG_START( bssoccer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/4) /* 8MHz */ @@ -859,7 +859,7 @@ MACHINE_CONFIG_END Ultra Balloon ***************************************************************************/ -static MACHINE_CONFIG_START( uballoon, suna16_state ) +static MACHINE_CONFIG_START( uballoon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/4) /* 8MHz */ @@ -914,7 +914,7 @@ MACHINE_CONFIG_END Suna Quiz 6000 Academy ***************************************************************************/ -static MACHINE_CONFIG_START( sunaq, suna16_state ) +static MACHINE_CONFIG_START( sunaq ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/4) /* 6MHz */ @@ -975,7 +975,7 @@ WRITE8_MEMBER(suna16_state::bestbest_ay8910_port_a_w) // ? } -static MACHINE_CONFIG_START( bestbest, suna16_state ) +static MACHINE_CONFIG_START( bestbest ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/4) /* 6MHz */ @@ -1366,8 +1366,8 @@ ROM_END ***************************************************************************/ -GAME( 1994, bestbest, 0, bestbest, bestbest, driver_device, 0, ROT0, "SunA", "Best Of Best", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, sunaq, 0, sunaq, sunaq, driver_device, 0, ROT0, "SunA", "SunA Quiz 6000 Academy (940620-6)", MACHINE_SUPPORTS_SAVE ) // Date/Version on-screen is 940620-6, but in the program rom it's 1994,6,30 K.H.T V6.00 -GAME( 1996, bssoccer, 0, bssoccer, bssoccer, driver_device, 0, ROT0, "SunA (Unico license)", "Back Street Soccer (KRB-0031 PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, bssoccera, bssoccer, bssoccer, bssoccer, driver_device, 0, ROT0, "SunA (Unico license)", "Back Street Soccer (KRB-0032A PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, uballoon, 0, uballoon, uballoon, driver_device, 0, ROT0, "SunA (Unico license)", "Ultra Balloon", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, bestbest, 0, bestbest, bestbest, suna16_state, 0, ROT0, "SunA", "Best Of Best", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, sunaq, 0, sunaq, sunaq, suna16_state, 0, ROT0, "SunA", "SunA Quiz 6000 Academy (940620-6)", MACHINE_SUPPORTS_SAVE ) // Date/Version on-screen is 940620-6, but in the program rom it's 1994,6,30 K.H.T V6.00 +GAME( 1996, bssoccer, 0, bssoccer, bssoccer, suna16_state, 0, ROT0, "SunA (Unico license)", "Back Street Soccer (KRB-0031 PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, bssoccera, bssoccer, bssoccer, bssoccer, suna16_state, 0, ROT0, "SunA (Unico license)", "Back Street Soccer (KRB-0032A PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, uballoon, 0, uballoon, uballoon, suna16_state, 0, ROT0, "SunA (Unico license)", "Ultra Balloon", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/suna8.cpp b/src/mame/drivers/suna8.cpp index 0e315115ea6..ca3165638b1 100644 --- a/src/mame/drivers/suna8.cpp +++ b/src/mame/drivers/suna8.cpp @@ -1867,7 +1867,7 @@ GFXDECODE_END /* 1 x 24 MHz crystal */ -static MACHINE_CONFIG_START( hardhead, suna8_state ) +static MACHINE_CONFIG_START( hardhead ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* verified on pcb */ @@ -1925,7 +1925,7 @@ MACHINE_CONFIG_END /* 1 x 24 MHz crystal */ /* 2203 + 8910 */ -static MACHINE_CONFIG_START( rranger, suna8_state ) +static MACHINE_CONFIG_START( rranger ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* ? */ @@ -1993,7 +1993,7 @@ MACHINE_RESET_MEMBER(suna8_state,brickzn) m_bank1d->set_entry(0); } -static MACHINE_CONFIG_START( brickzn11, suna8_state ) +static MACHINE_CONFIG_START( brickzn11 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* SUNA PROTECTION BLOCK */ @@ -2106,7 +2106,7 @@ MACHINE_CONFIG_END Star Fighter ***************************************************************************/ -static MACHINE_CONFIG_START( starfigh, suna8_state ) +static MACHINE_CONFIG_START( starfigh ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* ? */ @@ -2161,7 +2161,7 @@ MACHINE_CONFIG_END Spark Man ***************************************************************************/ -static MACHINE_CONFIG_START( sparkman, suna8_state ) +static MACHINE_CONFIG_START( sparkman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) /* ? */ @@ -3065,7 +3065,7 @@ GAME( 1989, sparkmana, sparkman, sparkman, sparkman, suna8_state, sparkman, ROT GAME( 1990, starfigh, 0, starfigh, starfigh, suna8_state, starfigh, ROT90, "SunA", "Star Fighter (v1)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1991, hardhea2, 0, hardhea2, hardhea2, suna8_state, hardhea2, ROT0, "SunA", "Hard Head 2 (v2.0)", 0 ) -GAME( 1991, hardhea2b, hardhea2, hardhea2b,hardhea2, suna8_state, hardhea2b, ROT0, "bootleg", "Hard Head 2 (v2.0, bootleg)", MACHINE_NOT_WORKING ) +GAME( 1991, hardhea2b, hardhea2, hardhea2b,hardhea2, suna8_state, hardhea2b, ROT0, "bootleg", "Hard Head 2 (v2.0, bootleg)", MACHINE_NOT_WORKING ) GAME( 1992, brickzn, 0, brickzn, brickznv6,suna8_state, brickzn, ROT90, "SunA", "Brick Zone (v6.0, Joystick)", 0 ) GAME( 1992, brickznv5, brickzn, brickzn, brickzn, suna8_state, brickznv5, ROT90, "SunA", "Brick Zone (v5.0, Joystick)", 0 ) diff --git a/src/mame/drivers/supbtime.cpp b/src/mame/drivers/supbtime.cpp index 7ccf5109050..fbb6122bd89 100644 --- a/src/mame/drivers/supbtime.cpp +++ b/src/mame/drivers/supbtime.cpp @@ -316,7 +316,7 @@ void supbtime_state::machine_start() { } -static MACHINE_CONFIG_START( supbtime, supbtime_state ) +static MACHINE_CONFIG_START( supbtime ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -368,12 +368,12 @@ static MACHINE_CONFIG_START( supbtime, supbtime_state ) MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(1, "mono", 0.45) - MCFG_OKIM6295_ADD("oki", 1023924, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1023924, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( chinatwn, supbtime_state ) +static MACHINE_CONFIG_START( chinatwn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -424,7 +424,7 @@ static MACHINE_CONFIG_START( chinatwn, supbtime_state ) MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(1, "mono", 0.45) - MCFG_OKIM6295_ADD("oki", 1023924, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1023924, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -509,7 +509,7 @@ ROM_END /******************************************************************************/ -GAME( 1990, supbtime, 0, supbtime, supbtime, driver_device, 0, ROT0, "Data East Corporation", "Super Burger Time (World, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, supbtimea,supbtime, supbtime, supbtime, driver_device, 0, ROT0, "Data East Corporation", "Super Burger Time (World, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, supbtimej,supbtime, supbtime, supbtime, driver_device, 0, ROT0, "Data East Corporation", "Super Burger Time (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, chinatwn, 0, chinatwn, chinatwn, driver_device, 0, ROT0, "Data East Corporation", "China Town (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, supbtime, 0, supbtime, supbtime, supbtime_state, 0, ROT0, "Data East Corporation", "Super Burger Time (World, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, supbtimea,supbtime, supbtime, supbtime, supbtime_state, 0, ROT0, "Data East Corporation", "Super Burger Time (World, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, supbtimej,supbtime, supbtime, supbtime, supbtime_state, 0, ROT0, "Data East Corporation", "Super Burger Time (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, chinatwn, 0, chinatwn, chinatwn, supbtime_state, 0, ROT0, "Data East Corporation", "China Town (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/supdrapo.cpp b/src/mame/drivers/supdrapo.cpp index 26e37acb32a..a1ae624f62a 100644 --- a/src/mame/drivers/supdrapo.cpp +++ b/src/mame/drivers/supdrapo.cpp @@ -449,7 +449,7 @@ WRITE8_MEMBER(supdrapo_state::ay8910_outputb_w) Machine Driver **********************************************************************/ -static MACHINE_CONFIG_START( supdrapo, supdrapo_state ) +static MACHINE_CONFIG_START( supdrapo ) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* guess */ MCFG_CPU_PROGRAM_MAP(sdpoker_mem) @@ -610,7 +610,7 @@ ROM_END Games Drivers **********************************************************************/ -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ -GAME( 1983, supdrapo, 0, supdrapo, supdrapo, driver_device, 0, ROT90, "Valadon Automation (Stern Electronics license)", "Super Draw Poker (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, supdrapoa, supdrapo, supdrapo, supdrapo, driver_device, 0, ROT90, "Valadon Automation / Jeutel", "Super Draw Poker (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, supdrapob, supdrapo, supdrapo, supdrapo, driver_device, 0, ROT90, "bootleg", "Super Draw Poker (bootleg)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1983, supdrapo, 0, supdrapo, supdrapo, supdrapo_state, 0, ROT90, "Valadon Automation (Stern Electronics license)", "Super Draw Poker (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, supdrapoa, supdrapo, supdrapo, supdrapo, supdrapo_state, 0, ROT90, "Valadon Automation / Jeutel", "Super Draw Poker (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, supdrapob, supdrapo, supdrapo, supdrapo, supdrapo_state, 0, ROT90, "bootleg", "Super Draw Poker (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/supduck.cpp b/src/mame/drivers/supduck.cpp index 258aec04a26..1a762169f40 100644 --- a/src/mame/drivers/supduck.cpp +++ b/src/mame/drivers/supduck.cpp @@ -283,18 +283,18 @@ WRITE8_MEMBER(supduck_state::okibank_w) static INPUT_PORTS_START( supduck ) PORT_START("P1_P2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) @@ -433,7 +433,7 @@ void supduck_state::machine_reset() } -static MACHINE_CONFIG_START( supduck, supduck_state ) +static MACHINE_CONFIG_START( supduck ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) /* Verified on PCB */ @@ -451,7 +451,7 @@ static MACHINE_CONFIG_START( supduck, supduck_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_PALETTE("palette") - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") @@ -467,7 +467,7 @@ static MACHINE_CONFIG_START( supduck, supduck_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", XTAL_8MHz/8, OKIM6295_PIN7_HIGH) // 1MHz - Verified on PCB, pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_8MHz/8, PIN7_HIGH) // 1MHz - Verified on PCB, pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) @@ -517,4 +517,4 @@ ROM_START( supduck ) ROM_LOAD( "1.su13", 0x00000, 0x80000, CRC(7fb1ed42) SHA1(77ec86a6454398e329066aa060e9b6a39085ce71) ) // banked sample data ROM_END -GAME( 1992, supduck, 0, supduck, supduck, driver_device, 0, ROT0, "Comad", "Super Duck", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, supduck, 0, supduck, supduck, supduck_state, 0, ROT0, "Comad", "Super Duck", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/super6.cpp b/src/mame/drivers/super6.cpp index 9359722cb3b..d3112637a0a 100644 --- a/src/mame/drivers/super6.cpp +++ b/src/mame/drivers/super6.cpp @@ -289,7 +289,7 @@ static ADDRESS_MAP_START( super6_io, AS_IO, 8, super6_state ) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(WD2793_TAG, wd2793_t, read, write) + AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(WD2793_TAG, wd2793_device, read, write) AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write) AM_RANGE(0x14, 0x14) AM_READWRITE(fdc_r, fdc_w) AM_RANGE(0x15, 0x15) AM_READ_PORT("J7") AM_WRITE(s100_w) @@ -486,7 +486,7 @@ void super6_state::machine_reset() // MACHINE_CONFIG( super6 ) //------------------------------------------------- -static MACHINE_CONFIG_START( super6, super6_state ) +static MACHINE_CONFIG_START( super6 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_24MHz/4) MCFG_CPU_PROGRAM_MAP(super6_mem) @@ -574,5 +574,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1983, super6, 0, 0, super6, super6, driver_device, 0, "Advanced Digital Corporation", "Super Six", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, super6, 0, 0, super6, super6, super6_state, 0, "Advanced Digital Corporation", "Super Six", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/super80.cpp b/src/mame/drivers/super80.cpp index 820c9c5b866..5195bf9b5a7 100644 --- a/src/mame/drivers/super80.cpp +++ b/src/mame/drivers/super80.cpp @@ -297,7 +297,7 @@ static ADDRESS_MAP_START( super80r_io, AS_IO, 8, super80_state ) AM_RANGE(0x11, 0x11) AM_DEVREAD("crtc", mc6845_device, register_r) AM_RANGE(0x11, 0x11) AM_WRITE(super80v_11_w) AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0x38, 0x3b) AM_DEVREADWRITE("fdc", wd2793_t, read, write) + AM_RANGE(0x38, 0x3b) AM_DEVREADWRITE("fdc", wd2793_device, read, write) AM_RANGE(0x3e, 0x3e) AM_READ(port3e_r) AM_RANGE(0x3f, 0x3f) AM_WRITE(port3f_w) AM_RANGE(0xdc, 0xdc) AM_DEVREAD("cent_status_in", input_buffer_device, read) @@ -692,7 +692,7 @@ static const char *const relay_sample_names[] = }; -static MACHINE_CONFIG_START( super80, super80_state ) +static MACHINE_CONFIG_START( super80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 2 MHz */ MCFG_CPU_PROGRAM_MAP(super80_map) @@ -775,10 +775,10 @@ static MACHINE_CONFIG_DERIVED( super80m, super80 ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80m) - MCFG_SCREEN_VBLANK_DRIVER(super80_state, screen_eof_super80m) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(super80_state, screen_vblank_super80m)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( super80v, super80_state ) +static MACHINE_CONFIG_START( super80v ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 2 MHz */ MCFG_CPU_PROGRAM_MAP(super80v_map) @@ -796,7 +796,7 @@ static MACHINE_CONFIG_START( super80v, super80_state ) MCFG_SCREEN_SIZE(SUPER80V_SCREEN_WIDTH, SUPER80V_SCREEN_HEIGHT) MCFG_SCREEN_VISIBLE_AREA(0, SUPER80V_SCREEN_WIDTH-1, 0, SUPER80V_SCREEN_HEIGHT-1) MCFG_SCREEN_UPDATE_DRIVER(super80_state, screen_update_super80v) - MCFG_SCREEN_VBLANK_DRIVER(super80_state, screen_eof_super80m) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(super80_state, screen_vblank_super80m)) MCFG_PALETTE_ADD("palette", 32) MCFG_PALETTE_INIT_OWNER(super80_state,super80m) diff --git a/src/mame/drivers/superchs.cpp b/src/mame/drivers/superchs.cpp index 436646a5880..4eceea60799 100644 --- a/src/mame/drivers/superchs.cpp +++ b/src/mame/drivers/superchs.cpp @@ -304,7 +304,7 @@ GFXDECODE_END MACHINE DRIVERS ***********************************************************/ -static MACHINE_CONFIG_START( superchs, superchs_state ) +static MACHINE_CONFIG_START( superchs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_40MHz/2) /* 20MHz - verified */ @@ -589,4 +589,4 @@ DRIVER_INIT_MEMBER(superchs_state,superchs) GAMEL( 1992, superchs, 0, superchs, superchs, superchs_state, superchs, ROT0, "Taito Corporation Japan", "Super Chase - Criminal Termination (World)", 0, layout_superchs ) GAMEL( 1992, superchsu, superchs, superchs, superchs, superchs_state, superchs, ROT0, "Taito America Corporation", "Super Chase - Criminal Termination (US)", 0, layout_superchs ) GAMEL( 1992, superchsj, superchs, superchs, superchs, superchs_state, superchs, ROT0, "Taito Corporation", "Super Chase - Criminal Termination (Japan)", 0, layout_superchs ) -GAMEL( 1992, superchsp, superchs, chase3, superchs, driver_device, 0, ORIENTATION_FLIP_X, "Taito Corporation", "Super Chase - Criminal Termination (1992/10/26 20:24:29 CHASE 3 VER 1.1, prototype)", 0, layout_superchs ) // has CHASE 3 as the internal description +GAMEL( 1992, superchsp, superchs, chase3, superchs, superchs_state, 0, ORIENTATION_FLIP_X, "Taito Corporation", "Super Chase - Criminal Termination (1992/10/26 20:24:29 CHASE 3 VER 1.1, prototype)", 0, layout_superchs ) // has CHASE 3 as the internal description diff --git a/src/mame/drivers/supercrd.cpp b/src/mame/drivers/supercrd.cpp index 359110b6645..a292ef0af6a 100644 --- a/src/mame/drivers/supercrd.cpp +++ b/src/mame/drivers/supercrd.cpp @@ -412,7 +412,7 @@ GFXDECODE_END * Machine Drivers * **************************/ -static MACHINE_CONFIG_START( supercrd, supercrd_state ) +static MACHINE_CONFIG_START( supercrd ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/8) /* 2MHz, guess */ MCFG_CPU_PROGRAM_MAP(supercrd_map) @@ -510,6 +510,6 @@ ROM_START( fruitstr ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1992, supercrd, 0, supercrd, supercrd, driver_device, 0, ROT0, "Fun World", "Super Card (encrypted)", MACHINE_NOT_WORKING ) -GAME( 1992, fruitstr, 0, supercrd, supercrd, driver_device, 0, ROT0, "Fun World", "Fruit Star (encrypted)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 1992, supercrd, 0, supercrd, supercrd, supercrd_state, 0, ROT0, "Fun World", "Super Card (encrypted)", MACHINE_NOT_WORKING ) +GAME( 1992, fruitstr, 0, supercrd, supercrd, supercrd_state, 0, ROT0, "Fun World", "Fruit Star (encrypted)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/superdq.cpp b/src/mame/drivers/superdq.cpp index 7705d317aee..80e0a4d70da 100644 --- a/src/mame/drivers/superdq.cpp +++ b/src/mame/drivers/superdq.cpp @@ -325,7 +325,7 @@ void superdq_state::machine_start() } -static MACHINE_CONFIG_START( superdq, superdq_state ) +static MACHINE_CONFIG_START( superdq ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/8) @@ -414,6 +414,6 @@ ROM_END * *************************************/ -GAME( 1984, superdq, 0, superdq, superdq, driver_device, 0, ROT0, "Universal", "Super Don Quix-ote (Long Scenes)", MACHINE_NOT_WORKING ) -GAME( 1984, superdqs, superdq, superdq, superdq, driver_device, 0, ROT0, "Universal", "Super Don Quix-ote (Short Scenes)", MACHINE_NOT_WORKING ) -GAME( 1984, superdqa, superdq, superdq, superdq, driver_device, 0, ROT0, "Universal", "Super Don Quix-ote (Short Scenes, Alt)", MACHINE_NOT_WORKING ) +GAME( 1984, superdq, 0, superdq, superdq, superdq_state, 0, ROT0, "Universal", "Super Don Quix-ote (Long Scenes)", MACHINE_NOT_WORKING ) +GAME( 1984, superdqs, superdq, superdq, superdq, superdq_state, 0, ROT0, "Universal", "Super Don Quix-ote (Short Scenes)", MACHINE_NOT_WORKING ) +GAME( 1984, superdqa, superdq, superdq, superdq, superdq_state, 0, ROT0, "Universal", "Super Don Quix-ote (Short Scenes, Alt)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp index 1df370144ca..384b8f82f07 100644 --- a/src/mame/drivers/superqix.cpp +++ b/src/mame/drivers/superqix.cpp @@ -1336,7 +1336,7 @@ INTERRUPT_GEN_MEMBER(superqix_state_base::sqix_timer_irq) -static MACHINE_CONFIG_START( pbillian, hotsmash_state ) +static MACHINE_CONFIG_START( pbillian ) MCFG_CPU_ADD("maincpu", Z80,XTAL_12MHz/2) /* 6 MHz, ROHM Z80B */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(pbillian_port_map) @@ -1379,7 +1379,7 @@ static MACHINE_CONFIG_DERIVED( hotsmash, pbillian ) MCFG_M68705_PORTC_W_CB(WRITE8(hotsmash_state, hotsmash_68705_portC_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sqix, superqix_state ) +static MACHINE_CONFIG_START( sqix ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* 6 MHz */ @@ -1433,7 +1433,7 @@ static MACHINE_CONFIG_DERIVED( sqix_8031, sqix ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sqix_nomcu, superqix_state ) +static MACHINE_CONFIG_START( sqix_nomcu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 12000000/2) /* 6 MHz */ @@ -1737,13 +1737,13 @@ DRIVER_INIT_MEMBER(superqix_state_base, perestro) -GAME( 1986, pbillian, 0, pbillian, pbillian, driver_device, 0, ROT0, "Kaneko / Taito", "Prebillian", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, hotsmash, 0, hotsmash, hotsmash, driver_device, 0, ROT90, "Kaneko / Taito", "Vs. Hot Smash", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqix, 0, sqix, superqix, superqix_state_base, sqix, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqixr1, sqix, sqix, superqix, superqix_state_base, sqix, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqixr0, sqix, sqix, superqix, superqix_state_base, sqixr0, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqixu, sqix, sqix, superqix, superqix_state_base, sqix, ROT90, "Kaneko / Taito (Romstar License)", "Super Qix (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqixb1, sqix, sqix_8031, superqix, superqix_state_base, sqixr0, ROT90, "bootleg", "Super Qix (bootleg of V1.0, 8031 MCU)", MACHINE_SUPPORTS_SAVE ) // bootleg of World, Rev 1 -GAME( 1987, sqixb2, sqix, sqix_nomcu, superqix, superqix_state_base, sqix, ROT90, "bootleg", "Super Qix (bootleg, No MCU)", MACHINE_SUPPORTS_SAVE ) // bootleg of World, Rev 1 -GAME( 1994, perestro, 0, sqix_nomcu, superqix, superqix_state_base, perestro, ROT90, "Promat", "Perestroika Girls", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, perestrof,perestro, sqix_nomcu, superqix, superqix_state_base, perestro, ROT90, "Promat (Fuuki license)", "Perestroika Girls (Fuuki license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, pbillian, 0, pbillian, pbillian, hotsmash_state, 0, ROT0, "Kaneko / Taito", "Prebillian", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, hotsmash, 0, hotsmash, hotsmash, hotsmash_state, 0, ROT90, "Kaneko / Taito", "Vs. Hot Smash", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqix, 0, sqix, superqix, superqix_state, sqix, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqixr1, sqix, sqix, superqix, superqix_state, sqix, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqixr0, sqix, sqix, superqix, superqix_state, sqixr0, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqixu, sqix, sqix, superqix, superqix_state, sqix, ROT90, "Kaneko / Taito (Romstar License)", "Super Qix (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqixb1, sqix, sqix_8031, superqix, superqix_state, sqixr0, ROT90, "bootleg", "Super Qix (bootleg of V1.0, 8031 MCU)", MACHINE_SUPPORTS_SAVE ) // bootleg of World, Rev 1 +GAME( 1987, sqixb2, sqix, sqix_nomcu, superqix, superqix_state, sqix, ROT90, "bootleg", "Super Qix (bootleg, No MCU)", MACHINE_SUPPORTS_SAVE ) // bootleg of World, Rev 1 +GAME( 1994, perestro, 0, sqix_nomcu, superqix, superqix_state, perestro, ROT90, "Promat", "Perestroika Girls", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, perestrof,perestro, sqix_nomcu, superqix, superqix_state, perestro, ROT90, "Promat (Fuuki license)", "Perestroika Girls (Fuuki license)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/superslave.cpp b/src/mame/drivers/superslave.cpp index 8d2ec5de24b..0800db8f20a 100644 --- a/src/mame/drivers/superslave.cpp +++ b/src/mame/drivers/superslave.cpp @@ -325,7 +325,7 @@ void superslave_state::machine_reset() // MACHINE_CONFIG( superslave ) //------------------------------------------------- -static MACHINE_CONFIG_START( superslave, superslave_state ) +static MACHINE_CONFIG_START( superslave ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_8MHz/2) MCFG_CPU_PROGRAM_MAP(superslave_mem) @@ -408,5 +408,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1983, superslv, 0, 0, superslave, superslave, driver_device, 0, "Advanced Digital Corporation", "Super Slave", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1983, superslv, 0, 0, superslave, superslave, superslave_state, 0, "Advanced Digital Corporation", "Super Slave", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/supertnk.cpp b/src/mame/drivers/supertnk.cpp index 0a8e6388689..729b9d52a32 100644 --- a/src/mame/drivers/supertnk.cpp +++ b/src/mame/drivers/supertnk.cpp @@ -422,7 +422,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( supertnk, supertnk_state ) +static MACHINE_CONFIG_START( supertnk ) // CPU TMS9980A; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9980A, 2598750, supertnk_map, supertnk_io_map) diff --git a/src/mame/drivers/superwng.cpp b/src/mame/drivers/superwng.cpp index 45480e8454a..5841fbec7b6 100644 --- a/src/mame/drivers/superwng.cpp +++ b/src/mame/drivers/superwng.cpp @@ -470,7 +470,7 @@ void superwng_state::machine_reset() m_nmi_enable = 0; } -static MACHINE_CONFIG_START( superwng, superwng_state ) +static MACHINE_CONFIG_START( superwng ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4) @@ -525,4 +525,4 @@ ROM_START( superwng ) ROM_END -GAME( 1985, superwng, 0, superwng, superwng, driver_device, 0, ROT90, "Wing", "Super Wing", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // crashes after bonus stage, see notes, bad rom? +GAME( 1985, superwng, 0, superwng, superwng, superwng_state, 0, ROT90, "Wing", "Super Wing", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // crashes after bonus stage, see notes, bad rom? diff --git a/src/mame/drivers/supracan.cpp b/src/mame/drivers/supracan.cpp index 8b3e7a11d7a..99014c2c1ab 100644 --- a/src/mame/drivers/supracan.cpp +++ b/src/mame/drivers/supracan.cpp @@ -1884,7 +1884,7 @@ INTERRUPT_GEN_MEMBER(supracan_state::supracan_sound_irq) } } -static MACHINE_CONFIG_START( supracan, supracan_state ) +static MACHINE_CONFIG_START( supracan ) MCFG_CPU_ADD( "maincpu", M68000, XTAL_10_738635MHz ) /* Correct frequency unknown */ MCFG_CPU_PROGRAM_MAP( supracan_mem ) @@ -1923,5 +1923,5 @@ ROM_START( supracan ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1995, supracan, 0, 0, supracan, supracan, driver_device, 0, "Funtech Entertainment", "Super A'Can", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1995, supracan, 0, 0, supracan, supracan, supracan_state, 0, "Funtech Entertainment", "Super A'Can", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/suprgolf.cpp b/src/mame/drivers/suprgolf.cpp index beec8b8ea15..221c2a236f7 100644 --- a/src/mame/drivers/suprgolf.cpp +++ b/src/mame/drivers/suprgolf.cpp @@ -486,7 +486,7 @@ void suprgolf_state::machine_reset() #define MASTER_CLOCK XTAL_12MHz -static MACHINE_CONFIG_START( suprgolf, suprgolf_state ) +static MACHINE_CONFIG_START( suprgolf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,MASTER_CLOCK/2) /* guess */ @@ -531,7 +531,7 @@ static MACHINE_CONFIG_START( suprgolf, suprgolf_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* guess */ MCFG_MSM5205_VCLK_CB(WRITELINE(suprgolf_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -673,6 +673,6 @@ DRIVER_INIT_MEMBER(suprgolf_state,suprgolf) ROM[0x6d72+(0x4000*3)-0x4000] = 0x20; //patch ROM check } -GAME( 1989, suprgolf, 0, suprgolf, suprgolf, driver_device, 0, ROT0, "Nasco", "Super Crowns Golf (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, suprgolfj, suprgolf, suprgolf, suprgolf, suprgolf_state, suprgolf, ROT0, "Nasco", "Super Crowns Golf (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, albatross, suprgolf, suprgolf, suprgolf, driver_device, 0, ROT0, "Nasco", "Albatross (US Prototype?)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL| MACHINE_SUPPORTS_SAVE ) +GAME( 1989, suprgolf, 0, suprgolf, suprgolf, suprgolf_state, 0, ROT0, "Nasco", "Super Crowns Golf (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, suprgolfj, suprgolf, suprgolf, suprgolf, suprgolf_state, suprgolf, ROT0, "Nasco", "Super Crowns Golf (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, albatross, suprgolf, suprgolf, suprgolf, suprgolf_state, 0, ROT0, "Nasco", "Albatross (US Prototype?)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL| MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/suprloco.cpp b/src/mame/drivers/suprloco.cpp index 5ec6b24f543..4c6eae66f69 100644 --- a/src/mame/drivers/suprloco.cpp +++ b/src/mame/drivers/suprloco.cpp @@ -167,7 +167,7 @@ static GFXDECODE_START( suprloco ) GFXDECODE_END -static MACHINE_CONFIG_START( suprloco, suprloco_state ) +static MACHINE_CONFIG_START( suprloco ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", SEGA_315_5015, 4000000) /* 4 MHz (?) */ @@ -308,4 +308,4 @@ DRIVER_INIT_MEMBER(suprloco_state,suprloco) GAME( 1982, suprloco, 0, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive (Rev.A)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, suprlocoo, suprloco, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, suprlocoo, suprloco, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/suprnova.cpp b/src/mame/drivers/suprnova.cpp index b92e5264bcd..5d134e1143d 100644 --- a/src/mame/drivers/suprnova.cpp +++ b/src/mame/drivers/suprnova.cpp @@ -786,7 +786,7 @@ GFXDECODE_END /***** MACHINE DRIVER *****/ -static MACHINE_CONFIG_START( skns, skns_state ) +static MACHINE_CONFIG_START( skns ) MCFG_CPU_ADD("maincpu", SH2,28638000) MCFG_CPU_PROGRAM_MAP(skns_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", skns_state, irq, "screen", 0, 1) @@ -1180,6 +1180,30 @@ ROM_START( galpani4k ) /* ROM-BOARD NEP-16 part number GP04K00372 with extra sou ROM_LOAD( "gp4-301-01.u7", 0x200000, 0x200000, CRC(886ef77f) SHA1(047d5fecf2034339c69b2cb605b623a814a18f0d) ) /* Changed some samples when compared to U4 rom */ ROM_END +ROM_START( galpanidx ) + SKNS_ASIA + + ROM_REGION32_BE( 0x200000, "user1", 0 ) /* SH-2 Code mapped at 0x04000000 */ + ROM_LOAD16_BYTE( "gpdx.u10", 0x000000, 0x100000, CRC(8eca883d) SHA1(f5a102ac21aeebc44afcd0ef7f655de21d4442b2) ) + ROM_LOAD16_BYTE( "gpdx.u8", 0x000001, 0x100000, CRC(b0088d8f) SHA1(2363620265d3fc53bae1c5889ea761444f80735a) ) + + ROM_REGION( 0x400000, "gfx1", 0 ) + ROM_LOAD( "gp4-100-00.u24", 0x000000, 0x200000, CRC(1df61f01) SHA1(a9e95bbb3013e8f2fd01243b1b392ff07b4f7d02) ) + ROM_LOAD( "gp4-101-00.u20", 0x200000, 0x100000, CRC(8e2c9349) SHA1(a58fa9bcc9684ed4558e3395d592b64a1978a902) ) + + ROM_REGION( 0x400000, "gfx2", 0 ) + ROM_LOAD( "gp4-200-00.u16", 0x000000, 0x200000, CRC(f0781376) SHA1(aeab9553a9af922524e528eb2d019cf36b6e2094) ) + ROM_LOAD( "gp4-201-00.u18", 0x200000, 0x200000, CRC(10c4b183) SHA1(80e05f3932495ad4fc9bf928fa66e6d2931bbb06) ) + + ROM_REGION( 0x800000, "gfx3", ROMREGION_ERASE00 ) /* Tiles Plane B */ + /* First 0x040000 bytes (0x03ff Tiles) are RAM Based Tiles */ + /* 0x040000 - 0x3fffff empty? */ + + ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ + ROM_LOAD( "gp4-300-00.u4", 0x000000, 0x200000, CRC(8374663a) SHA1(095512564f4de25dc3752d9fbd254b9dabd16d1b) ) /* Doesn't seem to use these samples at all */ + ROM_LOAD( "gp4-301-01.u7", 0x200000, 0x200000, CRC(886ef77f) SHA1(047d5fecf2034339c69b2cb605b623a814a18f0d) ) /* Changed some samples when compared to U4 rom */ +ROM_END + ROM_START( galpanis ) SKNS_EUROPE @@ -1859,30 +1883,31 @@ ROM_END /***** GAME DRIVERS *****/ -GAME( 1996, skns, 0, skns, skns, driver_device, 0, ROT0, "Kaneko", "Super Kaneko Nova System BIOS", MACHINE_IS_BIOS_ROOT ) +GAME( 1996, skns, 0, skns, skns, skns_state, 0, ROT0, "Kaneko", "Super Kaneko Nova System BIOS", MACHINE_IS_BIOS_ROOT ) -GAME( 1996, galpani4, skns, sknsj, cyvern, skns_state, galpani4, ROT0, "Kaneko", "Gals Panic 4 (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, galpani4k, galpani4, sknsk, cyvern, skns_state, galpani4, ROT0, "Kaneko", "Gals Panic 4 (Korea)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, galpani4, skns, sknsj, cyvern, skns_state, galpani4, ROT0, "Kaneko", "Gals Panic 4 (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, galpani4k, galpani4, sknsk, cyvern, skns_state, galpani4, ROT0, "Kaneko", "Gals Panic 4 (Korea)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, galpanidx, galpani4, sknsa, cyvern, skns_state, galpani4, ROT0, "Kaneko", "Gals Panic DX (Asia)", MACHINE_IMPERFECT_GRAPHICS ) // copyright 2001, re-release for the Asian market? // there is a Gals Panic 4 version with 'Gals Panic SU' title as well, seen for sale in Korea (different to the Gals Panic SU clone of galpans2) -GAME( 1996, jjparads, skns, sknsj, skns_1p, skns_state, jjparads, ROT0, "Electro Design", "Jan Jan Paradise", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, jjparads, skns, sknsj, skns_1p, skns_state, jjparads, ROT0, "Electro Design", "Jan Jan Paradise", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, galpanis, skns, sknse, galpanis, skns_state, galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Europe, set 1)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, galpanise, galpanis, sknse, galpanis, skns_state, galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Europe, set 2)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, galpanisj, galpanis, sknsj, galpanis, skns_state, galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Japan)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, galpanisk, galpanis, sknsk, galpanis, skns_state, galpanis, ROT0, "Kaneko", "Gals Panic S - Extra Edition (Korea)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, jjparad2, skns, sknsj, skns_1p, skns_state, jjparad2, ROT0, "Electro Design", "Jan Jan Paradise 2", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, jjparad2, skns, sknsj, skns_1p, skns_state, jjparad2, ROT0, "Electro Design", "Jan Jan Paradise 2", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, sengekis, skns, sknsa, skns, skns_state, sengekis, ROT90, "Kaneko / Warashi", "Sengeki Striker (Asia)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, sengekisj, sengekis, sknsj, skns, skns_state, sengekij, ROT90, "Kaneko / Warashi", "Sengeki Striker (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, sengekis, skns, sknsa, skns, skns_state, sengekis, ROT90, "Kaneko / Warashi", "Sengeki Striker (Asia)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, sengekisj, sengekis, sknsj, skns, skns_state, sengekij, ROT90, "Kaneko / Warashi", "Sengeki Striker (Japan)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, vblokbrk, skns, sknse, vblokbrk, skns_state, sarukani, ROT0, "Kaneko / Mediaworks", "VS Block Breaker (Europe)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, vblokbrka, vblokbrk, sknsa, vblokbrk, skns_state, sarukani, ROT0, "Kaneko / Mediaworks", "VS Block Breaker (Asia)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, sarukani, vblokbrk, sknsj, vblokbrk, skns_state, sarukani, ROT0, "Kaneko / Mediaworks", "Saru-Kani-Hamu-Zou (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, cyvern, skns, sknsu, cyvern, skns_state, cyvern, ROT90, "Kaneko", "Cyvern (US)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, cyvernj, cyvern, sknsj, cyvern, skns_state, cyvern, ROT90, "Kaneko", "Cyvern (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, cyvern, skns, sknsu, cyvern, skns_state, cyvern, ROT90, "Kaneko", "Cyvern (US)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, cyvernj, cyvern, sknsj, cyvern, skns_state, cyvern, ROT90, "Kaneko", "Cyvern (Japan)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1998, puzzloop, skns, sknse, puzzloop, skns_state, puzzloopu, ROT0, "Mitchell", "Puzz Loop (Europe, v0.94)", MACHINE_IMPERFECT_GRAPHICS ) // Same speed up as US version GAME( 1998, puzzloope, puzzloop, sknse, puzzloop, skns_state, puzzloope, ROT0, "Mitchell", "Puzz Loop (Europe, v0.93)", MACHINE_IMPERFECT_GRAPHICS ) @@ -1891,8 +1916,8 @@ GAME( 1998, puzzloopa, puzzloop, sknsa, puzzloop, skns_state, puzzloopa, ROT0, GAME( 1998, puzzloopk, puzzloop, sknsk, puzzloop, skns_state, puzzloopu, ROT0, "Mitchell", "Puzz Loop (Korea)", MACHINE_IMPERFECT_GRAPHICS ) // Same speed up as US version GAME( 1998, puzzloopu, puzzloop, sknsu, puzzloop, skns_state, puzzloopu, ROT0, "Mitchell", "Puzz Loop (USA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, ryouran , skns, sknsj, skns_1p, skns_state, ryouran, ROT0, "Electro Design", "VS Mahjong Otome Ryouran (set 1)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, ryourano, ryouran, sknsj, skns_1p, skns_state, ryouran, ROT0, "Electro Design", "VS Mahjong Otome Ryouran (set 2)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, ryouran , skns, sknsj, skns_1p, skns_state, ryouran, ROT0, "Electro Design", "VS Mahjong Otome Ryouran (set 1)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, ryourano, ryouran, sknsj, skns_1p, skns_state, ryouran, ROT0, "Electro Design", "VS Mahjong Otome Ryouran (set 2)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1999, galpans2, skns, sknse, galpanis, skns_state, galpans2, ROT0, "Kaneko", "Gals Panic S2 (Europe)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1999, galpans2j, galpans2, sknsj, galpanis, skns_state, galpans2, ROT0, "Kaneko", "Gals Panic S2 (Japan)", MACHINE_IMPERFECT_GRAPHICS ) @@ -1901,10 +1926,10 @@ GAME( 1999, galpansu, galpans2, sknsk, galpanis, skns_state, galpans2, ROT0, GAME( 1999, panicstr, skns, sknsj, galpanis, skns_state, panicstr, ROT0, "Kaneko", "Panic Street (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, senknow , skns, sknsj, skns, skns_state, senknow, ROT0, "Kaneko / Kouyousha", "Sen-Know (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, senknow , skns, sknsj, skns, skns_state, senknow, ROT0, "Kaneko / Kouyousha", "Sen-Know (Japan)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, teljan , skns, sknsj, skns_1p, skns_state, teljan, ROT0, "Electro Design", "Tel Jan", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1999, teljan , skns, sknsj, skns_1p, skns_state, teljan, ROT0, "Electro Design", "Tel Jan", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, gutsn, skns, sknsj, skns, skns_state, gutsn, ROT0, "Kaneko / Kouyousha", "Guts'n (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, gutsn, skns, sknsj, skns, skns_state, gutsn, ROT0, "Kaneko / Kouyousha", "Guts'n (Japan)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 2002, galpans3, skns, sknsj, galpanis, skns_state, galpans3, ROT0, "Kaneko", "Gals Panic S3 (Japan)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/suprridr.cpp b/src/mame/drivers/suprridr.cpp index 2bda5fe3f9c..736cb3eed48 100644 --- a/src/mame/drivers/suprridr.cpp +++ b/src/mame/drivers/suprridr.cpp @@ -345,7 +345,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( suprridr, suprridr_state ) +static MACHINE_CONFIG_START( suprridr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_49_152MHz/16) /* 3 MHz */ @@ -435,4 +435,4 @@ ROM_END * *************************************/ -GAME( 1983, suprridr, 0, suprridr, suprridr, driver_device, 0, ROT90, "Taito Corporation (Venture Line license)", "Super Rider", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, suprridr, 0, suprridr, suprridr, suprridr_state, 0, ROT90, "Taito Corporation (Venture Line license)", "Super Rider", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/suprslam.cpp b/src/mame/drivers/suprslam.cpp index be6890306b1..290a510dc1a 100644 --- a/src/mame/drivers/suprslam.cpp +++ b/src/mame/drivers/suprslam.cpp @@ -42,7 +42,7 @@ Other Chips: VS9210 4L06F1056 JAPAN 9525EAI (176 Pin PQFP) VS920F 4L01F1435 JAPAN 9524EAI (100 Pin PQFP) VS920E 4L06F1057 JAPAN 9533EAI (176 pin PQFP) - VS9209 4L01F1429 JAPAN 9523EAI (64 pin PQFP) + VS9209 4L01F1429 JAPAN 9523EAI (80 pin PQFP) VS920D 4L04F1689 JAPAN 9524EAI (160 pin PQFP) KONAMI KS10011-PF 053936 PSAC2 9522 Z02 (80 pin PQFP) @@ -63,7 +63,7 @@ PALs: (4 total, not dumped, 2 located near 68000, 1 near Z80B, 1 near VS9210) DIPs: 8 position x 3 (ALL DIPs linked to VS9209) -Info taken from sheet supplied with PCB, no info for SW3. +Info taken from sheet supplied with PCB, no info for SW3 (which is never read?). ROMs: (on ALL ROMs is written only "EB26") @@ -87,6 +87,7 @@ EB26IC73.BIN 27C240 / Main Program #include "cpu/z80/z80.h" #include "cpu/m68000/m68000.h" +#include "machine/vs9209.h" #include "sound/2610intf.h" #include "screen.h" #include "speaker.h" @@ -131,18 +132,13 @@ static ADDRESS_MAP_START( suprslam_map, AS_PROGRAM, 16, suprslam_state ) AM_RANGE(0xfe0000, 0xfe0fff) AM_RAM_WRITE(suprslam_screen_videoram_w) AM_SHARE("screen_videoram") AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(suprslam_bg_videoram_w) AM_SHARE("bg_videoram") AM_RANGE(0xff2000, 0xff203f) AM_RAM AM_SHARE("screen_vregs") -// AM_RANGE(0xff3000, 0xff3001) AM_WRITENOP // sprite buffer trigger? + AM_RANGE(0xff3000, 0xff3001) AM_WRITENOP // sprite buffer trigger? AM_RANGE(0xff8000, 0xff8fff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w) AM_RANGE(0xff9000, 0xff9001) AM_WRITE(sound_command_w) AM_RANGE(0xffa000, 0xffafff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0xffd000, 0xffd01f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) AM_RANGE(0xffe000, 0xffe001) AM_WRITE(suprslam_bank_w) - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1") - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2") - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW1") - AM_RANGE(0xfff008, 0xfff009) AM_READ_PORT("DSW2") - AM_RANGE(0xfff00c, 0xfff00d) AM_WRITEONLY AM_SHARE("spr_ctrl") + AM_RANGE(0xfff000, 0xfff01f) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, suprslam_state ) @@ -162,82 +158,82 @@ ADDRESS_MAP_END static INPUT_PORTS_START( suprslam ) PORT_START("P1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_START("P2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_START("SYSTEM") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) // Only in "test mode" - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE2 ) // "Test" - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_TILT ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) // Only in "test mode" + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) // "Test" + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_START("DSW1") - PORT_DIPNAME( 0x0001, 0x0001, "Coin Slots" ) - PORT_DIPSETTING( 0x0001, "Common" ) - PORT_DIPSETTING( 0x0000, "Separate" ) - PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x000a, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x000e, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0006, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) ) - PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x0050, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0060, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0070, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0030, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x01, 0x01, "Coin Slots" ) + PORT_DIPSETTING( 0x01, "Common" ) + PORT_DIPSETTING( 0x00, "Separate" ) + PORT_DIPNAME( 0x0e, 0x0e, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x0a, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0e, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) + PORT_DIPNAME( 0x70, 0x70, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x50, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x60, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x70, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Free_Play ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") - PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x000c, 0x000c, "Play Time" ) - PORT_DIPSETTING( 0x0008, "2:00" ) - PORT_DIPSETTING( 0x000c, "3:00" ) - PORT_DIPSETTING( 0x0004, "4:00" ) - PORT_DIPSETTING( 0x0000, "5:00" ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( On ) ) - PORT_SERVICE( 0x0040, IP_ACTIVE_LOW ) - PORT_DIPNAME( 0x0080, 0x0000, "Country" ) - PORT_DIPSETTING( 0x0080, DEF_STR( Japan ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( World ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x03, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x0c, 0x0c, "Play Time" ) + PORT_DIPSETTING( 0x08, "2:00" ) + PORT_DIPSETTING( 0x0c, "3:00" ) + PORT_DIPSETTING( 0x04, "4:00" ) + PORT_DIPSETTING( 0x00, "5:00" ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_SERVICE( 0x40, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x80, 0x00, "Country" ) + PORT_DIPSETTING( 0x80, DEF_STR( Japan ) ) + PORT_DIPSETTING( 0x00, DEF_STR( World ) ) INPUT_PORTS_END /*** GFX DECODE **************************************************************/ @@ -281,6 +277,7 @@ void suprslam_state::machine_start() save_item(NAME(m_screen_bank)); save_item(NAME(m_bg_bank)); save_item(NAME(m_pending_command)); + save_item(NAME(m_spr_ctrl)); membank("bank1")->configure_entries(0, 4, memregion("audiocpu")->base() + 0x10000, 0x8000); } @@ -292,7 +289,7 @@ void suprslam_state::machine_reset() m_pending_command = 0; } -static MACHINE_CONFIG_START( suprslam, suprslam_state ) +static MACHINE_CONFIG_START( suprslam ) MCFG_CPU_ADD("maincpu", M68000, 16000000) MCFG_CPU_PROGRAM_MAP(suprslam_map) @@ -302,6 +299,13 @@ static MACHINE_CONFIG_START( suprslam, suprslam_state ) MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_io_map) + MCFG_DEVICE_ADD("io", VS9209, 0) + MCFG_VS9209_IN_PORTA_CB(IOPORT("P1")) + MCFG_VS9209_IN_PORTB_CB(IOPORT("P2")) + MCFG_VS9209_IN_PORTC_CB(IOPORT("SYSTEM")) + MCFG_VS9209_IN_PORTD_CB(IOPORT("DSW1")) + MCFG_VS9209_IN_PORTE_CB(IOPORT("DSW2")) + MCFG_VS9209_OUT_PORTG_CB(WRITE8(suprslam_state, spr_ctrl_w)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", suprslam) @@ -371,4 +375,4 @@ ROM_END /*** GAME DRIVERS ************************************************************/ -GAME( 1995, suprslam, 0, suprslam, suprslam, driver_device, 0, ROT0, "Banpresto / Toei Animation", "From TV Animation Slam Dunk - Super Slams", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, suprslam, 0, suprslam, suprslam, suprslam_state, 0, ROT0, "Banpresto / Toei Animation", "From TV Animation Slam Dunk - Super Slams", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/supstarf.cpp b/src/mame/drivers/supstarf.cpp new file mode 100644 index 00000000000..d84a99bddde --- /dev/null +++ b/src/mame/drivers/supstarf.cpp @@ -0,0 +1,248 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/*************************************************************************** + + Super Star (Recreativos Franco) + + Skeleton driver for 8085-based pinball hardware. + +***************************************************************************/ + +#include "emu.h" +#include "cpu/i8085/i8085.h" +#include "cpu/mcs48/mcs48.h" +#include "machine/gen_latch.h" +#include "sound/ay8910.h" +#include "speaker.h" + +class supstarf_state : public driver_device +{ +public: + supstarf_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_soundcpu(*this, "soundcpu"), + m_psg(*this, {"psg1", "psg2"}), + m_soundlatch(*this, {"soundlatch1", "soundlatch2"}) + { + } + + DECLARE_READ8_MEMBER(psg_latch_r); + DECLARE_WRITE8_MEMBER(psg_latch_w); + DECLARE_WRITE8_MEMBER(port1_w); + DECLARE_WRITE8_MEMBER(port2_w); + DECLARE_READ_LINE_MEMBER(contacts_r); + DECLARE_WRITE_LINE_MEMBER(displays_w); + DECLARE_WRITE8_MEMBER(driver_clk_w); + DECLARE_READ_LINE_MEMBER(phase_detect_r); + DECLARE_WRITE8_MEMBER(lights_a_w); + DECLARE_WRITE8_MEMBER(lights_b_w); + +protected: + virtual void machine_start() override; + +private: + required_device m_maincpu; + required_device m_soundcpu; + required_device_array m_psg; + required_device_array m_soundlatch; + + u8 m_port1_data; + bool m_pcs[2]; + bool m_latch_select; +}; + +static ADDRESS_MAP_START(main_map, AS_PROGRAM, 8, supstarf_state) + AM_RANGE(0x0000, 0x3fff) AM_ROM + AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) + AM_RANGE(0xc000, 0xc7ff) AM_RAM // 5517 (2Kx8) at IC11 +ADDRESS_MAP_END + +static ADDRESS_MAP_START(main_io_map, AS_IO, 8, supstarf_state) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0xff) AM_WRITE(driver_clk_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START(sound_map, AS_PROGRAM, 8, supstarf_state) + AM_RANGE(0x000, 0xfff) AM_ROM // external EPROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START(sound_io_map, AS_IO, 8, supstarf_state) + AM_RANGE(0x00, 0xff) AM_READWRITE(psg_latch_r, psg_latch_w) +ADDRESS_MAP_END + +READ8_MEMBER(supstarf_state::psg_latch_r) +{ + u8 result = 0xff; // AR3 +5v pullup + + for (int d = 0; d < 2; d++) + { + if (m_pcs[d]) + { + m_psg[d]->address_w(space, 0, offset); + result &= m_psg[d]->data_r(space, 0); + } + } + + if (m_latch_select) + result &= m_soundlatch[1]->read(space, 0); + + return result; +} + +WRITE8_MEMBER(supstarf_state::psg_latch_w) +{ + for (int d = 0; d < 2; d++) + { + if (m_pcs[d]) + { + m_psg[d]->address_w(space, 0, offset); + m_psg[d]->data_w(space, 0, data); + } + } + + if (m_latch_select) + m_soundlatch[0]->write(space, 0, data); +} + +WRITE8_MEMBER(supstarf_state::port1_w) +{ + m_port1_data = data; +} + +WRITE8_MEMBER(supstarf_state::port2_w) +{ + m_maincpu->set_input_line(INPUT_LINE_RESET, BIT(data, 4) ? CLEAR_LINE : ASSERT_LINE); + if (!BIT(data, 4)) + { + m_soundlatch[0]->reset(); + m_soundlatch[1]->reset(); + m_psg[0]->reset(); + m_psg[1]->reset(); + } + + m_pcs[0] = !BIT(data, 6); + m_pcs[1] = !BIT(data, 5); + m_latch_select = !BIT(data, 7); +} + +READ_LINE_MEMBER(supstarf_state::contacts_r) +{ + return 1; +} + +WRITE_LINE_MEMBER(supstarf_state::displays_w) +{ +} + +WRITE8_MEMBER(supstarf_state::driver_clk_w) +{ +} + +READ_LINE_MEMBER(supstarf_state::phase_detect_r) +{ + return 0; +} + +WRITE8_MEMBER(supstarf_state::lights_a_w) +{ +} + +WRITE8_MEMBER(supstarf_state::lights_b_w) +{ +} + +void supstarf_state::machine_start() +{ + m_pcs[0] = m_pcs[1] = 0; + m_latch_select = 0; + m_port1_data = 0xff; + + save_item(NAME(m_pcs)); + save_item(NAME(m_latch_select)); + save_item(NAME(m_port1_data)); +} + +static MACHINE_CONFIG_START(supstarf) + MCFG_CPU_ADD("maincpu", I8085A, XTAL_5_0688MHz) + MCFG_CPU_PROGRAM_MAP(main_map) + MCFG_CPU_IO_MAP(main_io_map) + MCFG_I8085A_SID(READLINE(supstarf_state, contacts_r)) + MCFG_I8085A_SOD(WRITELINE(supstarf_state, displays_w)) + + MCFG_CPU_ADD("soundcpu", I8035, XTAL_5_0688MHz / 2) // from 8085 pin 37 (CLK OUT) + MCFG_CPU_PROGRAM_MAP(sound_map) + MCFG_CPU_IO_MAP(sound_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(supstarf_state, port1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(supstarf_state, port2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(supstarf_state, phase_detect_r)) + + MCFG_GENERIC_LATCH_8_ADD("soundlatch1") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("maincpu", I8085_RST55_LINE)) + + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", MCS48_INPUT_IRQ)) + //MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("maincpu", I8085_READY_LINE)) + + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("psg1", AY8910, XTAL_5_0688MHz / 6) // from 8035 pin 1 (T0) + MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(supstarf_state, lights_a_w)) + MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(supstarf_state, lights_b_w)) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + + MCFG_SOUND_ADD("psg2", AY8910, XTAL_5_0688MHz / 6) // from 8035 pin 1 (T0) + MCFG_AY8910_PORT_A_READ_CB(IOPORT("JO")) + MCFG_AY8910_PORT_B_READ_CB(IOPORT("I1")) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) +MACHINE_CONFIG_END + +static INPUT_PORTS_START(supstarf) + PORT_START("I1") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "I1:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "I1:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "I1:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "I1:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "I1:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "I1:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "I1:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "I1:8") + + PORT_START("JM") + PORT_BIT(0x80, 0x80, IPT_UNKNOWN) + PORT_BIT(0x40, 0x40, IPT_UNKNOWN) + PORT_BIT(0x20, 0x20, IPT_UNKNOWN) + PORT_BIT(0x10, 0x10, IPT_UNKNOWN) + PORT_BIT(0x08, 0x08, IPT_UNKNOWN) + PORT_BIT(0x04, 0x04, IPT_UNKNOWN) + PORT_BIT(0x02, 0x02, IPT_UNKNOWN) + PORT_BIT(0x01, 0x01, IPT_UNKNOWN) + + PORT_START("JN") + PORT_BIT(0x80, 0x80, IPT_UNKNOWN) + PORT_BIT(0x40, 0x40, IPT_UNKNOWN) + PORT_BIT(0x20, 0x20, IPT_UNKNOWN) + PORT_BIT(0x10, 0x10, IPT_UNKNOWN) + PORT_BIT(0x08, 0x08, IPT_UNKNOWN) + PORT_BIT(0x04, 0x04, IPT_UNKNOWN) + PORT_BIT(0x02, 0x02, IPT_UNKNOWN) + PORT_BIT(0x01, 0x01, IPT_UNUSED) + + PORT_START("JO") + PORT_BIT(0x80, 0x80, IPT_UNKNOWN) + PORT_BIT(0x40, 0x40, IPT_UNKNOWN) + PORT_BIT(0x20, 0x20, IPT_UNKNOWN) + PORT_BIT(0x10, 0x10, IPT_UNKNOWN) + PORT_BIT(0x0f, 0x0f, IPT_UNUSED) +INPUT_PORTS_END + +ROM_START(supstarf) + ROM_REGION(0x4000, "maincpu", 0) + ROM_LOAD("27c128.ic19", 0x0000, 0x4000, CRC(9a440461) SHA1(e2f8dcf95084f755d3a34d77ba2649602687a610)) + // IC14 for second program ROM is unpopulated + + ROM_REGION(0x1000, "soundcpu", 0) + ROM_LOAD("2532.ic4", 0x0000, 0x1000, CRC(b6ef3c7a) SHA1(aabb6f8569685fc3a917a7bb5ebfcc4b20086b15) BAD_DUMP) // D6 stuck high and probably totally garbage +ROM_END + +GAME( 1986, supstarf, 0, supstarf, supstarf, supstarf_state, 0, ROT0, "Recreativos Franco", "Super Star (Recreativos Franco)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/surpratk.cpp b/src/mame/drivers/surpratk.cpp index 2e226c1fa96..d9bbb1f316a 100644 --- a/src/mame/drivers/surpratk.cpp +++ b/src/mame/drivers/surpratk.cpp @@ -166,7 +166,7 @@ WRITE8_MEMBER( surpratk_state::banking_callback ) membank("bank1")->set_entry(data & 0x1f); } -static MACHINE_CONFIG_START( surpratk, surpratk_state ) +static MACHINE_CONFIG_START( surpratk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 053248, the clock input is 12MHz, and internal CPU divider of 4 */ @@ -271,6 +271,6 @@ ROM_END ***************************************************************************/ -GAME( 1990, suratk, 0, surpratk, surpratk, driver_device, 0, ROT0, "Konami", "Surprise Attack (World ver. K)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, suratka, suratk, surpratk, surpratk, driver_device, 0, ROT0, "Konami", "Surprise Attack (Asia ver. L)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, suratkj, suratk, surpratk, surpratk, driver_device, 0, ROT0, "Konami", "Surprise Attack (Japan ver. M)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, suratk, 0, surpratk, surpratk, surpratk_state, 0, ROT0, "Konami", "Surprise Attack (World ver. K)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, suratka, suratk, surpratk, surpratk, surpratk_state, 0, ROT0, "Konami", "Surprise Attack (Asia ver. L)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, suratkj, suratk, surpratk, surpratk, surpratk_state, 0, ROT0, "Konami", "Surprise Attack (Japan ver. M)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/sv8000.cpp b/src/mame/drivers/sv8000.cpp index e0ba58e1387..b79f28139ad 100644 --- a/src/mame/drivers/sv8000.cpp +++ b/src/mame/drivers/sv8000.cpp @@ -368,7 +368,7 @@ READ8_MEMBER( sv8000_state::mc6847_videoram_r ) return data; } -static MACHINE_CONFIG_START( sv8000, sv8000_state ) +static MACHINE_CONFIG_START( sv8000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_10_738635MHz/3) /* Not verified */ MCFG_CPU_PROGRAM_MAP(sv8000_mem) @@ -415,5 +415,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1979, sv8000, 0, 0, sv8000, sv8000, driver_device, 0, "Bandai", "Super Vision 8000 (TV Jack 8000)", 0 ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1979, sv8000, 0, 0, sv8000, sv8000, sv8000_state, 0, "Bandai", "Super Vision 8000 (TV Jack 8000)", 0 ) diff --git a/src/mame/drivers/svi318.cpp b/src/mame/drivers/svi318.cpp index ddd80d54f46..bb8aec7062d 100644 --- a/src/mame/drivers/svi318.cpp +++ b/src/mame/drivers/svi318.cpp @@ -518,7 +518,7 @@ DEVICE_IMAGE_LOAD_MEMBER( svi3x8_state, cartridge ) // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( svi318, svi3x8_state ) +static MACHINE_CONFIG_START( svi318 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, XTAL_10_738635MHz / 3) MCFG_CPU_PROGRAM_MAP(svi3x8_mem) @@ -626,8 +626,8 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1983, svi318, 0, 0, svi318, svi318, driver_device, 0, "Spectravideo", "SVI-318 (PAL)", MACHINE_SUPPORTS_SAVE) -COMP( 1983, svi318n, svi318, 0, svi318n, svi318, driver_device, 0, "Spectravideo", "SVI-318 (NTSC)", MACHINE_SUPPORTS_SAVE) -COMP( 1983, svi328, 0, 0, svi328, svi328, driver_device, 0, "Spectravideo", "SVI-328 (PAL)", MACHINE_SUPPORTS_SAVE) -COMP( 1983, svi328n, svi328, 0, svi328n, svi328, driver_device, 0, "Spectravideo", "SVI-328 (NTSC)", MACHINE_SUPPORTS_SAVE) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1983, svi318, 0, 0, svi318, svi318, svi3x8_state, 0, "Spectravideo", "SVI-318 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, svi318n, svi318, 0, svi318n, svi318, svi3x8_state, 0, "Spectravideo", "SVI-318 (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, svi328, 0, 0, svi328, svi328, svi3x8_state, 0, "Spectravideo", "SVI-328 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, svi328n, svi328, 0, svi328n, svi328, svi3x8_state, 0, "Spectravideo", "SVI-328 (NTSC)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/svision.cpp b/src/mame/drivers/svision.cpp index bcd5649eb4a..c24cbe4c8e8 100644 --- a/src/mame/drivers/svision.cpp +++ b/src/mame/drivers/svision.cpp @@ -512,7 +512,7 @@ MACHINE_RESET_MEMBER(svision_state,tvlink) m_tvlink.palette[3] = MAKE24_RGB32(svisionp_palette[(PALETTE_START+3)*3+0], svisionp_palette[(PALETTE_START+3)*3+1], svisionp_palette[(PALETTE_START+3)*3+2]); } -static MACHINE_CONFIG_START( svision, svision_state ) +static MACHINE_CONFIG_START( svision ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65C02, 4000000) /* ? stz used! speed? */ MCFG_CPU_PROGRAM_MAP(svision_mem) @@ -598,14 +598,14 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS // marketed under a ton of firms and names -CONS(1992, svision, 0, 0, svision, svision, svision_state, svision, "Watara", "Super Vision", 0) +CONS(1992, svision, 0, 0, svision, svision, svision_state, svision, "Watara", "Super Vision", 0 ) // svdual 2 connected via communication port -CONS( 1992, svisions, svision, 0,svisions, svisions, svision_state, svisions, "Watara", "Super Vision (PeT Communication Simulation)", 0 ) +CONS( 1992, svisions, svision, 0, svisions, svisions, svision_state, svisions, "Watara", "Super Vision (PeT Communication Simulation)", 0 ) -CONS( 1993, svisionp, svision, 0,svisionp, svision, svision_state, svision, "Watara", "Super Vision (PAL TV Link Colored)", 0 ) -CONS( 1993, svisionn, svision, 0,svisionn, svision, svision_state, svision, "Watara", "Super Vision (NTSC TV Link Colored)", 0 ) +CONS( 1993, svisionp, svision, 0, svisionp, svision, svision_state, svision, "Watara", "Super Vision (PAL TV Link Colored)", 0 ) +CONS( 1993, svisionn, svision, 0, svisionn, svision, svision_state, svision, "Watara", "Super Vision (NTSC TV Link Colored)", 0 ) // svtvlink (2 supervisions) // tvlink (pad supervision simulated) -CONS( 199?, tvlinkp, svision, 0,tvlinkp, svision, svision_state, svision, "Watara", "TV Link PAL", 0 ) +CONS( 199?, tvlinkp, svision, 0, tvlinkp, svision, svision_state, svision, "Watara", "TV Link PAL", 0 ) diff --git a/src/mame/drivers/svmu.cpp b/src/mame/drivers/svmu.cpp index f67d892c818..a39703b1fca 100644 --- a/src/mame/drivers/svmu.cpp +++ b/src/mame/drivers/svmu.cpp @@ -300,7 +300,7 @@ QUICKLOAD_LOAD_MEMBER( svmu_state, svmu ) } -static MACHINE_CONFIG_START( svmu, svmu_state ) +static MACHINE_CONFIG_START( svmu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", LC8670, XTAL_32_768kHz) MCFG_CPU_PROGRAM_MAP(svmu_mem) @@ -359,5 +359,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1998, svmu, 0, 0, svmu , svmu , driver_device, 0, "Sega", "Visual Memory Unit", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1998, svmu, 0, 0, svmu, svmu, svmu_state, 0, "Sega", "Visual Memory Unit", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/swtpc.cpp b/src/mame/drivers/swtpc.cpp index 43a6743ea61..aa73c8fadca 100644 --- a/src/mame/drivers/swtpc.cpp +++ b/src/mame/drivers/swtpc.cpp @@ -56,14 +56,17 @@ public: { } - required_device m_maincpu; - required_device m_terminal; DECLARE_READ8_MEMBER(swtpc_status_r); DECLARE_READ8_MEMBER(swtpc_terminal_r); DECLARE_READ8_MEMBER(swtpc_tricky_r); - DECLARE_WRITE8_MEMBER(kbd_put); - uint8_t m_term_data; + void kbd_put(u8 data); + +protected: virtual void machine_reset() override; + + required_device m_maincpu; + required_device m_terminal; + uint8_t m_term_data; }; // bit 0 - ready to receive a character; bit 1 - ready to send a character to the terminal @@ -103,12 +106,12 @@ void swtpc_state::machine_reset() { } -WRITE8_MEMBER( swtpc_state::kbd_put ) +void swtpc_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( swtpc, swtpc_state ) +static MACHINE_CONFIG_START( swtpc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, XTAL_1MHz) MCFG_CPU_PROGRAM_MAP(swtpc_mem) @@ -116,7 +119,7 @@ static MACHINE_CONFIG_START( swtpc, swtpc_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(swtpc_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(swtpc_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -130,5 +133,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1975, swtpc, 0, 0, swtpc, swtpc, driver_device, 0, "Southwest Technical Products Corporation", "SWTPC 6800", MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1975, swtpc, 0, 0, swtpc, swtpc, swtpc_state, 0, "Southwest Technical Products Corporation", "SWTPC 6800", MACHINE_NO_SOUND) diff --git a/src/mame/drivers/swtpc09.cpp b/src/mame/drivers/swtpc09.cpp index 96420c5d566..256535d1497 100644 --- a/src/mame/drivers/swtpc09.cpp +++ b/src/mame/drivers/swtpc09.cpp @@ -97,7 +97,7 @@ WRITE_LINE_MEMBER(swtpc09_state::write_acia_clock) /* Machine driver */ /* MPU09, MPID, MPS2 DMF2 */ -static MACHINE_CONFIG_START( swtpc09, swtpc09_state ) +static MACHINE_CONFIG_START( swtpc09 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 1000000) MCFG_CPU_PROGRAM_MAP(swtpc09_mem) @@ -137,7 +137,7 @@ static MACHINE_CONFIG_START( swtpc09, swtpc09_state ) MACHINE_CONFIG_END /* MPU09, MPID, MPS2 DC4 PIAIDE*/ -static MACHINE_CONFIG_START( swtpc09i, swtpc09_state ) +static MACHINE_CONFIG_START( swtpc09i ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 1000000) MCFG_CPU_PROGRAM_MAP(swtpc09_mem) @@ -185,7 +185,7 @@ MACHINE_CONFIG_END /* MPU09, MPID, MPS2 DMF3 */ -static MACHINE_CONFIG_START( swtpc09d3, swtpc09_state ) +static MACHINE_CONFIG_START( swtpc09d3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) MCFG_CPU_PROGRAM_MAP(swtpc09_mem) @@ -255,8 +255,8 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, swtpc09, 0, 0, swtpc09, swtpc09, swtpc09_state, swtpc09, "SWTPC", "swtpc S/09 Sbug", MACHINE_NO_SOUND_HW) -COMP( 1980, swtpc09i, swtpc09, 0, swtpc09i, swtpc09, swtpc09_state, swtpc09i, "SWTPC", "swtpc S/09 Sbug + piaide", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1980, swtpc09u, swtpc09, 0, swtpc09, swtpc09, swtpc09_state, swtpc09u, "SWTPC", "swtpc S/09 UNIBug + DMF2", MACHINE_NO_SOUND_HW) -COMP( 1980, swtpc09d3, swtpc09, 0, swtpc09d3, swtpc09, swtpc09_state, swtpc09d3, "SWTPC", "swtpc S/09 UNIBug + DMF3", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, swtpc09, 0, 0, swtpc09, swtpc09, swtpc09_state, swtpc09, "SWTPC", "swtpc S/09 Sbug", MACHINE_NO_SOUND_HW ) +COMP( 1980, swtpc09i, swtpc09, 0, swtpc09i, swtpc09, swtpc09_state, swtpc09i, "SWTPC", "swtpc S/09 Sbug + piaide", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1980, swtpc09u, swtpc09, 0, swtpc09, swtpc09, swtpc09_state, swtpc09u, "SWTPC", "swtpc S/09 UNIBug + DMF2", MACHINE_NO_SOUND_HW ) +COMP( 1980, swtpc09d3, swtpc09, 0, swtpc09d3, swtpc09, swtpc09_state, swtpc09d3, "SWTPC", "swtpc S/09 UNIBug + DMF3", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/swyft.cpp b/src/mame/drivers/swyft.cpp index 733e921accb..385d8e98038 100644 --- a/src/mame/drivers/swyft.cpp +++ b/src/mame/drivers/swyft.cpp @@ -768,7 +768,7 @@ WRITE_LINE_MEMBER( swyft_state::write_acia_clock ) m_acia6850->write_rxc(state); } -static MACHINE_CONFIG_START( swyft, swyft_state ) +static MACHINE_CONFIG_START( swyft ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68008, XTAL_15_8976MHz/2) //MC68008P8, Y1=15.8976Mhz, clock GUESSED at Y1 / 2 @@ -892,5 +892,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, swyft,0, 0, swyft, swyft, driver_device, 0, "Information Applicance Inc", "Swyft", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS +COMP( 1985, swyft, 0, 0, swyft, swyft, swyft_state, 0, "Information Applicance Inc", "Swyft", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/sym1.cpp b/src/mame/drivers/sym1.cpp index a6674507be4..de8f4920c43 100644 --- a/src/mame/drivers/sym1.cpp +++ b/src/mame/drivers/sym1.cpp @@ -293,7 +293,7 @@ static ADDRESS_MAP_START( sym1_map, AS_PROGRAM, 8, sym1_state ) AM_RANGE(0x0c00, 0x0fff) AM_RAMBANK("bank4") AM_SHARE("ram_3k") AM_RANGE(0x8000, 0x8fff) AM_ROM AM_SHARE("monitor") // U20 Monitor ROM AM_RANGE(0xa000, 0xa00f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) // U25 VIA #1 - AM_RANGE(0xa400, 0xa41f) AM_DEVICE("riot", mos6532_t, io_map) // U27 RIOT + AM_RANGE(0xa400, 0xa41f) AM_DEVICE("riot", mos6532_new_device, io_map) // U27 RIOT AM_RANGE(0xa600, 0xa67f) AM_RAMBANK("bank5") AM_SHARE("riot_ram") // U27 RIOT RAM AM_RANGE(0xa800, 0xa80f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) // U28 VIA #2 AM_RANGE(0xac00, 0xac0f) AM_DEVREADWRITE("via6522_2", via6522_device, read, write) // U29 VIA #3 @@ -305,7 +305,7 @@ ADDRESS_MAP_END // MACHINE DRIVERS //************************************************************************** -static MACHINE_CONFIG_START( sym1, sym1_state ) +static MACHINE_CONFIG_START( sym1 ) // basic machine hardware MCFG_CPU_ADD("maincpu", M6502, SYM1_CLOCK) MCFG_CPU_PROGRAM_MAP(sym1_map) @@ -318,7 +318,7 @@ static MACHINE_CONFIG_START( sym1, sym1_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) // devices - MCFG_DEVICE_ADD("riot", MOS6532n, SYM1_CLOCK) + MCFG_DEVICE_ADD("riot", MOS6532_NEW, SYM1_CLOCK) MCFG_MOS6530n_IN_PA_CB(READ8(sym1_state, sym1_riot_a_r)) MCFG_MOS6530n_OUT_PA_CB(WRITE8(sym1_state, sym1_riot_a_w)) MCFG_MOS6530n_IN_PB_CB(READ8(sym1_state, sym1_riot_b_r)) diff --git a/src/mame/drivers/symbolics.cpp b/src/mame/drivers/symbolics.cpp index a184fb8bc69..6a5ecadd603 100644 --- a/src/mame/drivers/symbolics.cpp +++ b/src/mame/drivers/symbolics.cpp @@ -314,7 +314,7 @@ void symbolics_state::machine_reset() */ } -static MACHINE_CONFIG_START( symbolics, symbolics_state ) +static MACHINE_CONFIG_START( symbolics ) /* basic machine hardware */ // per page 159 of http://bitsavers.trailing-edge.com/pdf/symbolics/3600_series/Lisp_Machine_Hardware_Memos.pdf: //XTALS: 16MHz @H11 (68k CPU clock) @@ -391,5 +391,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS COMP( 1984, s3670, 0, 0, symbolics, symbolics, symbolics_state, symbolics, "Symbolics", "3670", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/sys2900.cpp b/src/mame/drivers/sys2900.cpp index ecfb5e89659..1f26f87244a 100644 --- a/src/mame/drivers/sys2900.cpp +++ b/src/mame/drivers/sys2900.cpp @@ -115,7 +115,7 @@ uint32_t sys2900_state::screen_update_sys2900(screen_device &screen, bitmap_ind1 return 0; } -static MACHINE_CONFIG_START( sys2900, sys2900_state ) +static MACHINE_CONFIG_START( sys2900 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(sys2900_mem) @@ -143,5 +143,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS COMP( 1981, sys2900, 0, 0, sys2900, sys2900, sys2900_state, sys2900, "Systems Group", "System 2900", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/systec.cpp b/src/mame/drivers/systec.cpp index 502ad4296e7..ce953e3c230 100644 --- a/src/mame/drivers/systec.cpp +++ b/src/mame/drivers/systec.cpp @@ -53,7 +53,7 @@ public: required_device m_terminal; DECLARE_READ8_MEMBER(systec_c4_r); DECLARE_READ8_MEMBER(systec_c6_r); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); uint8_t m_term_data; virtual void machine_reset() override; }; @@ -70,7 +70,7 @@ READ8_MEMBER( systec_state::systec_c6_r ) return 0x04 | (m_term_data ? 1 : 0); } -WRITE8_MEMBER( systec_state::kbd_put ) +void systec_state::kbd_put(u8 data) { m_term_data = data; } @@ -97,7 +97,7 @@ void systec_state::machine_reset() memcpy(m_p_maincpu, m_p_roms, 0x2000); } -static MACHINE_CONFIG_START( systec, systec_state ) +static MACHINE_CONFIG_START( systec ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(systec_mem) @@ -106,7 +106,7 @@ static MACHINE_CONFIG_START( systec, systec_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(systec_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(systec_state, kbd_put)) MACHINE_CONFIG_END @@ -119,5 +119,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP(19??, systec, 0, 0, systec, systec, driver_device, 0, "Systec", "Systec Z80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP(19??, systec, 0, 0, systec, systec, systec_state, 0, "Systec", "Systec Z80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/system1.cpp b/src/mame/drivers/system1.cpp index 47f623c9bbe..2c53f7860f8 100644 --- a/src/mame/drivers/system1.cpp +++ b/src/mame/drivers/system1.cpp @@ -2144,7 +2144,7 @@ GFXDECODE_END *************************************/ /* original board with 64kbit ROMs and an 8255 PPI for outputs */ -static MACHINE_CONFIG_START( sys1ppi, system1_state ) +static MACHINE_CONFIG_START( sys1ppi ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) /* not really, see notes above */ @@ -2215,11 +2215,6 @@ static MACHINE_CONFIG_DERIVED( sys1pio, sys1ppi ) MCFG_Z80PIO_OUT_PB_CB(WRITE8(system1_state, videomode_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( sys1piox, sys1pio ) - MCFG_DEVICE_MODIFY("maincpu") - MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) -MACHINE_CONFIG_END - #define ENCRYPTED_SYS1PPI_MAPS \ MCFG_CPU_PROGRAM_MAP(system1_map) \ MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) \ @@ -2232,6 +2227,17 @@ MACHINE_CONFIG_END MCFG_CPU_IO_MAP(system1_pio_io_map) \ MCFG_CPU_VBLANK_INT_DRIVER("screen", system1_state, irq0_line_hold) +#define ENCRYPTED_SYS2_MC8123_MAPS \ + MCFG_CPU_PROGRAM_MAP(system1_map) \ + MCFG_CPU_DECRYPTED_OPCODES_MAP(banked_decrypted_opcodes_map) \ + MCFG_CPU_IO_MAP(system1_ppi_io_map) \ + MCFG_CPU_VBLANK_INT_DRIVER("screen", system1_state, irq0_line_hold) + + +static MACHINE_CONFIG_DERIVED( sys1pioxb, sys1pio ) + MCFG_CPU_REPLACE("maincpu", MC8123, MASTER_CLOCK) + ENCRYPTED_SYS1PIO_MAPS +MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( sys1ppix_315_5178, sys1ppi ) MCFG_CPU_REPLACE("maincpu", SEGA_315_5178, MASTER_CLOCK) @@ -2463,7 +2469,12 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( sys2xb, sys2 ) - MCFG_DEVICE_MODIFY("maincpu") + MCFG_CPU_REPLACE("maincpu", MC8123, MASTER_CLOCK) + ENCRYPTED_SYS2_MC8123_MAPS +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( sys2xboot, sys2 ) + MCFG_CPU_MODIFY("maincpu") MCFG_CPU_DECRYPTED_OPCODES_MAP(banked_decrypted_opcodes_map) MACHINE_CONFIG_END @@ -2480,7 +2491,12 @@ static MACHINE_CONFIG_DERIVED( sys2row, sys2 ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( sys2rowxb, sys2row ) - MCFG_DEVICE_MODIFY("maincpu") + MCFG_CPU_REPLACE("maincpu", MC8123, MASTER_CLOCK) + ENCRYPTED_SYS2_MC8123_MAPS +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( sys2rowxboot, sys2row ) + MCFG_CPU_MODIFY("maincpu") MCFG_CPU_DECRYPTED_OPCODES_MAP(banked_decrypted_opcodes_map) MACHINE_CONFIG_END @@ -4533,7 +4549,7 @@ ROM_START( wbml ) ROM_LOAD( "epr11032.91", 0x10000, 0x8000, CRC(9d03bdb2) SHA1(7dbab23e7c7972d9b51a0d3d046374720b7d6af5) ) /* encrypted */ ROM_LOAD( "epr11033.92", 0x18000, 0x8000, CRC(7076905c) SHA1(562fbd9bd60851f7e4e60b725193395b4f193479) ) /* encrypted */ - ROM_REGION( 0x2000, "key", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0043.key", 0x0000, 0x2000, CRC(e354abfc) SHA1(07b0d3c51301ebb25909234b6220a3ed20dbcc7d) ) ROM_REGION( 0x10000, "soundcpu", 0 ) @@ -4565,7 +4581,7 @@ ROM_START( wbmljo ) ROM_LOAD( "epr11032.91", 0x10000, 0x8000, CRC(9d03bdb2) SHA1(7dbab23e7c7972d9b51a0d3d046374720b7d6af5) ) /* encrypted */ ROM_LOAD( "epr11033.92", 0x18000, 0x8000, CRC(7076905c) SHA1(562fbd9bd60851f7e4e60b725193395b4f193479) ) /* encrypted */ - ROM_REGION( 0x2000, "key", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0043.key", 0x0000, 0x2000, CRC(e354abfc) SHA1(07b0d3c51301ebb25909234b6220a3ed20dbcc7d) ) ROM_REGION( 0x10000, "soundcpu", 0 ) @@ -4847,7 +4863,7 @@ ROM_START( dakkochn ) ROM_LOAD( "epr-11225.ic91", 0x10000, 0x8000, CRC(c540f9e2) SHA1(dbda9355e8b796bcfaee2789714d248c4d7ad58c) ) /* encrypted */ /* 18000-1ffff empty */ - ROM_REGION( 0x2000, "key", 0 ) /* MC8123B key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123B key */ ROM_LOAD( "317-5014.key", 0x0000, 0x2000, CRC(bb9df5ad) SHA1(7e7b7255149ae01d19883ecf4a88989f8a9bf4c6) ) ROM_REGION( 0x10000, "soundcpu", 0 ) @@ -4883,7 +4899,7 @@ ROM_START( ufosensi ) ROM_LOAD( "epr11662.91", 0x10000, 0x8000, CRC(0c2e4120) SHA1(d81fbefa95868e3efd29ef3bacf108329781ca17) ) /* encrypted */ ROM_LOAD( "epr11663.92", 0x18000, 0x8000, CRC(4515ebae) SHA1(9b823f10999746292762c2f0a1ca9039efa22506) ) /* encrypted */ - ROM_REGION( 0x2000, "key", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0064.key", 0x0000, 0x2000, CRC(da326f36) SHA1(0871b351379a094ac578e0eca5cb17797f9085aa) ) ROM_REGION( 0x10000, "soundcpu", 0 ) @@ -4959,7 +4975,7 @@ ROM_START( blockgal ) ROM_LOAD( "bg.109", 0x4000, 0x4000, CRC(a6b573d5) SHA1(33547a3895bbe65d5a6c40453eeb93e1fedad6de) ) /* encrypted */ /* 0x8000-0xbfff empty (was same as My Hero) */ - ROM_REGION( 0x2000, "key", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0029.key", 0x0000, 0x2000, CRC(350d7f93) SHA1(7ef12d63b2c7150f8e74f65ec8340471d72b1c03) ) ROM_REGION( 0x10000, "soundcpu", 0 ) @@ -5233,7 +5249,7 @@ DRIVER_INIT_MEMBER(system1_state,myherok) DRIVER_INIT_MEMBER(system1_state,blockgal) { DRIVER_INIT_CALL(bank00); - mc8123_decode(m_maincpu_region->base(), m_decrypted_opcodes, memregion("key")->base(), 0x8000); + downcast(*m_maincpu).decode(m_maincpu_region->base(), m_decrypted_opcodes, 0x8000); } @@ -5245,14 +5261,14 @@ DRIVER_INIT_MEMBER(system1_state,wbml) { DRIVER_INIT_CALL(bank0c); m_banked_decrypted_opcodes = std::make_unique(m_maincpu_region->bytes()); - mc8123_decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), memregion("key")->base(), m_maincpu_region->bytes()); + downcast(*m_maincpu).decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), m_maincpu_region->bytes()); } DRIVER_INIT_MEMBER(system1_state,ufosensi) { DRIVER_INIT_CALL(bank0c); m_banked_decrypted_opcodes = std::make_unique(m_maincpu_region->bytes()); - mc8123_decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), memregion("key")->base(), m_maincpu_region->bytes()); + downcast(*m_maincpu).decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), m_maincpu_region->bytes()); } @@ -5261,7 +5277,7 @@ DRIVER_INIT_MEMBER(system1_state,dakkochn) { m_videomode_custom = &system1_state::dakkochn_custom_w; m_banked_decrypted_opcodes = std::make_unique(m_maincpu_region->bytes()); - mc8123_decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), memregion("key")->base(), m_maincpu_region->bytes()); + downcast(*m_maincpu).decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), m_maincpu_region->bytes()); } @@ -5396,69 +5412,69 @@ GAME( 1986, nob, 0, nobm, nob, system1_state, n GAME( 1986, nobb, nob, nob, nob, system1_state, nobb, ROT270, "bootleg (Game Electronics)", "Noboranka (Japan, bootleg)", MACHINE_SUPPORTS_SAVE ) /* PIO-based System 1 */ -GAME( 1984, flicky, 0, sys1piox_315_5051, flicky, system1_state, bank00, ROT0, "Sega", "Flicky (128k Version, 315-5051)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, flickya, flicky, sys1piox_315_5051, flicky, system1_state, bank00, ROT0, "Sega", "Flicky (128k Version, 315-5051, larger roms)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, flickys2, flicky, sys1pio, flickys2, system1_state, bank00, ROT0, "Sega", "Flicky (128k Version, not encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, thetogyu, bullfgt, sys1piox_315_5065, bullfgt, system1_state, bank00, ROT0, "Coreland / Sega", "The Togyu (315-5065, Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, spatter, 0, sys1piosx_315_spat,spatter, system1_state, bank00, ROT0, "Sega", "Spatter (315-xxxx)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, spattera, spatter, sys1piosx_315_5099,spatter, system1_state, bank00, ROT0, "Sega", "Spatter (315-5099)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, ssanchan, spatter, sys1piosx_315_spat,spatter, system1_state, bank00, ROT0, "Sega", "Sanrin San Chan (Japan, 315-xxxx)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pitfall2, 0, sys1piox_315_5093, pitfall2, system1_state, bank00, ROT0, "Sega", "Pitfall II (315-5093)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pitfall2a, pitfall2, sys1piox_315_5093, pitfall2, system1_state, bank00, ROT0, "Sega", "Pitfall II (315-5093, Flicky Conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pitfall2u, pitfall2, sys1pio, pitfall2u, system1_state, bank00, ROT0, "Sega", "Pitfall II (not encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, seganinj, 0, sys1piox_315_5102, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (315-5102)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, seganinju, seganinj, sys1pio, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (not encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, seganinja, seganinj, sys1piox_315_5133, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (315-5113)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // needs decrypting -GAME( 1985, ninja, seganinj, sys1piox_315_5102, seganinj, system1_state, bank00, ROT0, "Sega", "Ninja (315-5102)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, nprinceso, seganinj, sys1piox_315_5098, seganinj, system1_state, bank00, ROT0, "Sega", "Ninja Princess (315-5098, 128k Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, nprincesb, seganinj, sys1piox_315_5051, seganinj, system1_state, bank00, ROT0, "bootleg?", "Ninja Princess (315-5051?, 128k Ver. bootleg?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, imsorry, 0, sys1piox_315_5110, imsorry, system1_state, bank00, ROT0, "Coreland / Sega", "I'm Sorry (315-5110, US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, imsorryj, imsorry, sys1piox_315_5110, imsorry, system1_state, bank00, ROT0, "Coreland / Sega", "Gonbee no I'm Sorry (315-5110, Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, teddybb, 0, sys1piox_315_5155, teddybb, system1_state, bank00, ROT0, "Sega", "TeddyBoy Blues (315-5115, New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, teddybbo, teddybb, sys1piox_315_5155, teddybb, system1_state, bank00, ROT0, "Sega", "TeddyBoy Blues (315-5115, Old Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, teddybbobl, teddybb, sys1piox_315_5155, teddybb, system1_state, bank00, ROT0, "bootleg", "TeddyBoy Blues (Old Ver. bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, myhero, 0, sys1pio, myhero, system1_state, bank00, ROT0, "Coreland / Sega", "My Hero (US, not encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, sscandal, myhero, sys1piox_315_5132, myhero, system1_state, bank00, ROT0, "Coreland / Sega", "Seishun Scandal (315-5132, Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, myherobl, myhero, sys1piox_315_5132, myhero, system1_state, bank00, ROT0, "bootleg", "My Hero (bootleg, 315-5132 encryption)", MACHINE_SUPPORTS_SAVE ) // cloned 315-5132 encryption? might be a direct copy of an undumped original set -GAME( 1985, myherok, myhero, sys1piox_315_5132, myhero, system1_state, myherok, ROT0, "Coreland / Sega", "My Hero (Korea)", MACHINE_SUPPORTS_SAVE ) // possible bootleg, has extra encryption -GAME( 1985, 4dwarrio, 0, sys1piox_315_5162, 4dwarrio, system1_state, bank00, ROT0, "Coreland / Sega", "4-D Warriors (315-5162)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, raflesia, 0, sys1piox_315_5162, raflesia, system1_state, bank00, ROT270, "Coreland / Sega", "Rafflesia (315-5162)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wboy, 0, sys1piox_315_5177, wboy, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (set 1, 315-5177)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wboyo, wboy, sys1piox_315_5135, wboy, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (set 2, 315-5135)", MACHINE_SUPPORTS_SAVE ) // aka 317-0003 -GAME( 1986, wboy3, wboy, sys1piox_315_5135, wboy3, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (set 3, 315-5135)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wboy4, wboy, sys1piox_315_5162, wboy, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (315-5162, 4-D Warriors Conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wboyu, wboy, sys1pio, wboyu, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (prototype?)", MACHINE_SUPPORTS_SAVE ) // appears to be a very early / unfinished version. -GAME( 1986, wboy5, wboy, sys1piox_315_5135, wboy3, system1_state, bank00, ROT0, "bootleg", "Wonder Boy (set 5, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wboyub, wboy, sys1piox_315_5177, wboy, system1_state, bank00, ROT0, "bootleg", "Wonder Boy (US bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, blockgal, 0, sys1piox, blockgal, system1_state, blockgal, ROT90, "Sega / Vic Tokai","Block Gal (MC-8123B, 317-0029)", MACHINE_SUPPORTS_SAVE) +GAME( 1984, flicky, 0, sys1piox_315_5051, flicky, system1_state, bank00, ROT0, "Sega", "Flicky (128k Version, 315-5051)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, flickya, flicky, sys1piox_315_5051, flicky, system1_state, bank00, ROT0, "Sega", "Flicky (128k Version, 315-5051, larger roms)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, flickys2, flicky, sys1pio, flickys2, system1_state, bank00, ROT0, "Sega", "Flicky (128k Version, not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, thetogyu, bullfgt, sys1piox_315_5065, bullfgt, system1_state, bank00, ROT0, "Coreland / Sega", "The Togyu (315-5065, Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, spatter, 0, sys1piosx_315_spat,spatter, system1_state, bank00, ROT0, "Sega", "Spatter (315-xxxx)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, spattera, spatter, sys1piosx_315_5099,spatter, system1_state, bank00, ROT0, "Sega", "Spatter (315-5099)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, ssanchan, spatter, sys1piosx_315_spat,spatter, system1_state, bank00, ROT0, "Sega", "Sanrin San Chan (Japan, 315-xxxx)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pitfall2, 0, sys1piox_315_5093, pitfall2, system1_state, bank00, ROT0, "Sega", "Pitfall II (315-5093)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pitfall2a, pitfall2, sys1piox_315_5093, pitfall2, system1_state, bank00, ROT0, "Sega", "Pitfall II (315-5093, Flicky Conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pitfall2u, pitfall2, sys1pio, pitfall2u, system1_state, bank00, ROT0, "Sega", "Pitfall II (not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, seganinj, 0, sys1piox_315_5102, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (315-5102)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, seganinju, seganinj, sys1pio, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, seganinja, seganinj, sys1piox_315_5133, seganinj, system1_state, bank00, ROT0, "Sega", "Sega Ninja (315-5113)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // needs decrypting +GAME( 1985, ninja, seganinj, sys1piox_315_5102, seganinj, system1_state, bank00, ROT0, "Sega", "Ninja (315-5102)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, nprinceso, seganinj, sys1piox_315_5098, seganinj, system1_state, bank00, ROT0, "Sega", "Ninja Princess (315-5098, 128k Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, nprincesb, seganinj, sys1piox_315_5051, seganinj, system1_state, bank00, ROT0, "bootleg?", "Ninja Princess (315-5051?, 128k Ver. bootleg?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, imsorry, 0, sys1piox_315_5110, imsorry, system1_state, bank00, ROT0, "Coreland / Sega", "I'm Sorry (315-5110, US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, imsorryj, imsorry, sys1piox_315_5110, imsorry, system1_state, bank00, ROT0, "Coreland / Sega", "Gonbee no I'm Sorry (315-5110, Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, teddybb, 0, sys1piox_315_5155, teddybb, system1_state, bank00, ROT0, "Sega", "TeddyBoy Blues (315-5115, New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, teddybbo, teddybb, sys1piox_315_5155, teddybb, system1_state, bank00, ROT0, "Sega", "TeddyBoy Blues (315-5115, Old Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, teddybbobl, teddybb, sys1piox_315_5155, teddybb, system1_state, bank00, ROT0, "bootleg", "TeddyBoy Blues (Old Ver. bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, myhero, 0, sys1pio, myhero, system1_state, bank00, ROT0, "Coreland / Sega", "My Hero (US, not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sscandal, myhero, sys1piox_315_5132, myhero, system1_state, bank00, ROT0, "Coreland / Sega", "Seishun Scandal (315-5132, Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, myherobl, myhero, sys1piox_315_5132, myhero, system1_state, bank00, ROT0, "bootleg", "My Hero (bootleg, 315-5132 encryption)", MACHINE_SUPPORTS_SAVE ) // cloned 315-5132 encryption? might be a direct copy of an undumped original set +GAME( 1985, myherok, myhero, sys1piox_315_5132, myhero, system1_state, myherok, ROT0, "Coreland / Sega", "My Hero (Korea)", MACHINE_SUPPORTS_SAVE ) // possible bootleg, has extra encryption +GAME( 1985, 4dwarrio, 0, sys1piox_315_5162, 4dwarrio, system1_state, bank00, ROT0, "Coreland / Sega", "4-D Warriors (315-5162)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, raflesia, 0, sys1piox_315_5162, raflesia, system1_state, bank00, ROT270, "Coreland / Sega", "Rafflesia (315-5162)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wboy, 0, sys1piox_315_5177, wboy, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (set 1, 315-5177)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wboyo, wboy, sys1piox_315_5135, wboy, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (set 2, 315-5135)", MACHINE_SUPPORTS_SAVE ) // aka 317-0003 +GAME( 1986, wboy3, wboy, sys1piox_315_5135, wboy3, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (set 3, 315-5135)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wboy4, wboy, sys1piox_315_5162, wboy, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (315-5162, 4-D Warriors Conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wboyu, wboy, sys1pio, wboyu, system1_state, bank00, ROT0, "Escape (Sega license)", "Wonder Boy (prototype?)", MACHINE_SUPPORTS_SAVE ) // appears to be a very early / unfinished version. +GAME( 1986, wboy5, wboy, sys1piox_315_5135, wboy3, system1_state, bank00, ROT0, "bootleg", "Wonder Boy (set 5, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wboyub, wboy, sys1piox_315_5177, wboy, system1_state, bank00, ROT0, "bootleg", "Wonder Boy (US bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blockgal, 0, sys1pioxb, blockgal, system1_state, blockgal, ROT90, "Sega / Vic Tokai","Block Gal (MC-8123B, 317-0029)", MACHINE_SUPPORTS_SAVE) /* PIO-based System 1 with ROM banking */ -GAME( 1985, hvymetal, 0, sys1piox_315_5135, hvymetal, system1_state, bank44, ROT0, "Sega", "Heavy Metal (315-5135)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, gardia, 0, sys1piox_317_0006, gardia, system1_state, bank44, ROT270, "Coreland / Sega", "Gardia (317-0006)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE) -GAME( 1986, brain, 0, sys1pio, brain, system1_state, bank44, ROT0, "Coreland / Sega", "Brain", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, hvymetal, 0, sys1piox_315_5135, hvymetal, system1_state, bank44, ROT0, "Sega", "Heavy Metal (315-5135)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, gardia, 0, sys1piox_317_0006, gardia, system1_state, bank44, ROT270, "Coreland / Sega", "Gardia (317-0006)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE) +GAME( 1986, brain, 0, sys1pio, brain, system1_state, bank44, ROT0, "Coreland / Sega", "Brain", MACHINE_SUPPORTS_SAVE ) /* System 2 */ -GAME( 1985, choplift, 0, sys2rowm, choplift, system1_state, choplift, ROT0, "Sega (licensed from Dan Gorlin)", "Choplifter (8751 315-5151)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, chopliftu, choplift, sys2row, choplift, system1_state, bank0c, ROT0, "Sega (licensed from Dan Gorlin)", "Choplifter (unprotected)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, chopliftbl, choplift, sys2row, choplift, system1_state, bank0c, ROT0, "bootleg", "Choplifter (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, shtngmst, 0, sys2m, shtngmst, system1_state, shtngmst, ROT0, "Sega", "Shooting Master (8751 315-5159)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1985, shtngmste, shtngmst, sys2m, shtngmst, system1_state, shtngmst, ROT0, "Sega / EVG", "Shooting Master (EVG, 8751 315-5159a)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, gardiab, gardia, sys2_317_0007, gardia, system1_state, bank44, ROT270, "bootleg", "Gardia (317-0007?, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1986, gardiaj, gardia, sys2_317_0006, gardia, system1_state, bank44, ROT270, "Coreland / Sega", "Gardia (Japan, 317-0006)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wboysys2, wboy, sys2_315_5177, wboysys2, system1_state, bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 1, 315-5177)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, wboysys2a, wboy, sys2_315_5176, wboysys2, system1_state, bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 2, 315-5176)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, tokisens, 0, sys2, tokisens, system1_state, bank0c, ROT90, "Sega", "Toki no Senshi - Chrono Soldier", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, wbml, 0, sys2xb, wbml, system1_state, wbml, ROT0, "Sega / Westone", "Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, wbmljo, wbml, sys2xb, wbml, system1_state, wbml, ROT0, "Sega / Westone", "Wonder Boy in Monster Land (Japan Old Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, wbmljb, wbml, sys2xb, wbml, system1_state, bootsys2, ROT0, "bootleg", "Wonder Boy in Monster Land (Japan bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, wbmlb, wbml, sys2xb, wbml, system1_state, bootsys2, ROT0, "bootleg", "Wonder Boy in Monster Land (English bootleg set 1)", MACHINE_SUPPORTS_SAVE) -GAME( 1987, wbmlbg, wbml, sys2xb, wbml, system1_state, bootsys2, ROT0, "bootleg (Galaxy Electronics)", "Wonder Boy in Monster Land (English bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, wbmlbge, wbml, sys2xb, wbml, system1_state, bootsys2, ROT0, "bootleg (Gecas)", "Wonder Boy in Monster Land (English bootleg set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 2009, wbmlvc, wbml, sys2xb, wbml, system1_state, bootsys2, ROT0, "Sega", "Wonder Boy in Monster Land (English, Virtual Console)", MACHINE_SUPPORTS_SAVE ) -GAME( 2009, wbmlvcd, wbml, sys2xb, wbml, system1_state, bootsys2d, ROT0, "bootleg (mpatou)", "Wonder Boy in Monster Land (decrypted bootleg of English, Virtual Console release)", MACHINE_SUPPORTS_SAVE ) // fully decrypted version -GAME( 1987, wbmld, wbml, sys2xb, wbml, system1_state, bootsys2d, ROT0, "bootleg (mpatou)", "Wonder Boy in Monster Land (decrypted bootleg of Japan New Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, wbmljod, wbml, sys2xb, wbml, system1_state, bootsys2d, ROT0, "bootleg (mpatou)", "Wonder Boy in Monster Land (decrypted bootleg of Japan Old Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, dakkochn, 0, sys2xb, dakkochn, system1_state, dakkochn, ROT0, "White Board", "DakkoChan House (MC-8123B, 317-5014)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, blockgalb, blockgal, sys2x, blockgal, system1_state, bootleg, ROT90, "bootleg", "Block Gal (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, ufosensi, 0, sys2rowxb, ufosensi, system1_state, ufosensi, ROT0, "Sega", "Ufo Senshi Yohko Chan (MC-8123, 317-0064)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, ufosensib, ufosensi, sys2rowxb, ufosensi, system1_state, bootsys2, ROT0, "bootleg", "Ufo Senshi Yohko Chan (bootleg, not encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, choplift, 0, sys2rowm, choplift, system1_state, choplift, ROT0, "Sega (licensed from Dan Gorlin)", "Choplifter (8751 315-5151)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, chopliftu, choplift, sys2row, choplift, system1_state, bank0c, ROT0, "Sega (licensed from Dan Gorlin)", "Choplifter (unprotected)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, chopliftbl, choplift, sys2row, choplift, system1_state, bank0c, ROT0, "bootleg", "Choplifter (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, shtngmst, 0, sys2m, shtngmst, system1_state, shtngmst, ROT0, "Sega", "Shooting Master (8751 315-5159)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +GAME( 1985, shtngmste, shtngmst, sys2m, shtngmst, system1_state, shtngmst, ROT0, "Sega / EVG", "Shooting Master (EVG, 8751 315-5159a)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, gardiab, gardia, sys2_317_0007, gardia, system1_state, bank44, ROT270, "bootleg", "Gardia (317-0007?, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, gardiaj, gardia, sys2_317_0006, gardia, system1_state, bank44, ROT270, "Coreland / Sega", "Gardia (Japan, 317-0006)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wboysys2, wboy, sys2_315_5177, wboysys2, system1_state, bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 1, 315-5177)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, wboysys2a, wboy, sys2_315_5176, wboysys2, system1_state, bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 2, 315-5176)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, tokisens, 0, sys2, tokisens, system1_state, bank0c, ROT90, "Sega", "Toki no Senshi - Chrono Soldier", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, wbml, 0, sys2xb, wbml, system1_state, wbml, ROT0, "Sega / Westone", "Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, wbmljo, wbml, sys2xb, wbml, system1_state, wbml, ROT0, "Sega / Westone", "Wonder Boy in Monster Land (Japan Old Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, wbmljb, wbml, sys2xboot, wbml, system1_state, bootsys2, ROT0, "bootleg", "Wonder Boy in Monster Land (Japan bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, wbmlb, wbml, sys2xboot, wbml, system1_state, bootsys2, ROT0, "bootleg", "Wonder Boy in Monster Land (English bootleg set 1)", MACHINE_SUPPORTS_SAVE) +GAME( 1987, wbmlbg, wbml, sys2xboot, wbml, system1_state, bootsys2, ROT0, "bootleg (Galaxy Electronics)", "Wonder Boy in Monster Land (English bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, wbmlbge, wbml, sys2xboot, wbml, system1_state, bootsys2, ROT0, "bootleg (Gecas)", "Wonder Boy in Monster Land (English bootleg set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, wbmlvc, wbml, sys2xboot, wbml, system1_state, bootsys2, ROT0, "Sega", "Wonder Boy in Monster Land (English, Virtual Console)", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, wbmlvcd, wbml, sys2xboot, wbml, system1_state, bootsys2d, ROT0, "bootleg (mpatou)", "Wonder Boy in Monster Land (decrypted bootleg of English, Virtual Console release)", MACHINE_SUPPORTS_SAVE ) // fully decrypted version +GAME( 1987, wbmld, wbml, sys2xboot, wbml, system1_state, bootsys2d, ROT0, "bootleg (mpatou)", "Wonder Boy in Monster Land (decrypted bootleg of Japan New Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, wbmljod, wbml, sys2xboot, wbml, system1_state, bootsys2d, ROT0, "bootleg (mpatou)", "Wonder Boy in Monster Land (decrypted bootleg of Japan Old Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, dakkochn, 0, sys2xb, dakkochn, system1_state, dakkochn, ROT0, "White Board", "DakkoChan House (MC-8123B, 317-5014)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, blockgalb, blockgal, sys2x, blockgal, system1_state, bootleg, ROT90, "bootleg", "Block Gal (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, ufosensi, 0, sys2rowxb, ufosensi, system1_state, ufosensi, ROT0, "Sega", "Ufo Senshi Yohko Chan (MC-8123, 317-0064)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, ufosensib, ufosensi, sys2rowxboot, ufosensi, system1_state, bootsys2, ROT0, "bootleg", "Ufo Senshi Yohko Chan (bootleg, not encrypted)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp index 79d7e6376fc..96c85244d8e 100644 --- a/src/mame/drivers/system16.cpp +++ b/src/mame/drivers/system16.cpp @@ -2077,7 +2077,7 @@ static MACHINE_CONFIG_FRAGMENT( datsu_ym2151_msm5205 ) MCFG_SOUND_ADD("5205", MSM5205, 220000) MCFG_MSM5205_VCLK_CB(WRITELINE(segas1x_bootleg_state, tturfbl_msm5205_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) MACHINE_CONFIG_END @@ -2107,7 +2107,7 @@ static MACHINE_CONFIG_FRAGMENT( datsu_2x_ym2203_msm5205 ) MCFG_SOUND_ADD("5205", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(segas1x_bootleg_state, datsu_msm5205_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -2118,7 +2118,7 @@ MACHINE_CONFIG_END *************************************/ /* System 16A/B Bootlegs */ -static MACHINE_CONFIG_START( system16_base, segas1x_bootleg_state ) +static MACHINE_CONFIG_START( system16_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -2193,7 +2193,7 @@ static MACHINE_CONFIG_DERIVED( passsht4b, system16_base ) MCFG_FRAGMENT_ADD(datsu_2x_ym2203_msm5205) MCFG_DEVICE_MODIFY("5205") - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( wb3bb, system16_base ) @@ -2215,7 +2215,7 @@ static MACHINE_CONFIG_DERIVED( wb3bb, system16_base ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( goldnaxeb_base, segas1x_bootleg_state ) +static MACHINE_CONFIG_START( goldnaxeb_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -2342,7 +2342,7 @@ static MACHINE_CONFIG_DERIVED( altbeastbl, system16_base ) MCFG_FRAGMENT_ADD(datsu_2x_ym2203_msm5205) MCFG_DEVICE_MODIFY("5205") - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( beautyb, system16_base ) @@ -2359,7 +2359,7 @@ MACHINE_CONFIG_END /* System 18 Bootlegs */ -static MACHINE_CONFIG_START( system18, segas1x_bootleg_state ) +static MACHINE_CONFIG_START( system18 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -2438,7 +2438,7 @@ static MACHINE_CONFIG_DERIVED( shdancbl, system18 ) MCFG_SOUND_ADD("5205", MSM5205, 200000) MCFG_MSM5205_VCLK_CB(WRITELINE(segas1x_bootleg_state, shdancbl_msm5205_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) MACHINE_CONFIG_END @@ -2456,7 +2456,7 @@ static MACHINE_CONFIG_DERIVED( shdancbla, system18 ) MCFG_SOUND_ADD("5205", MSM5205, 200000) MCFG_MSM5205_VCLK_CB(WRITELINE(segas1x_bootleg_state, shdancbl_msm5205_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) MACHINE_CONFIG_END @@ -2474,7 +2474,7 @@ MACHINE_RESET_MEMBER(segas1x_bootleg_state,ddcrewbl) } -static MACHINE_CONFIG_START( ddcrewbl, segas1x_bootleg_state ) +static MACHINE_CONFIG_START( ddcrewbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) @@ -2502,7 +2502,7 @@ static MACHINE_CONFIG_START( ddcrewbl, segas1x_bootleg_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 10000000/10, OKIM6295_PIN7_HIGH) // clock and pin not verified + MCFG_OKIM6295_ADD("oki", 10000000/10, PIN7_HIGH) // clock and pin not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -3881,33 +3881,33 @@ DRIVER_INIT_MEMBER(segas1x_bootleg_state,astormbl) *************************************/ /* System 16A based bootlegs (less complex tilemap system) */ -GAME( 1987, shinobld, shinobi, shinobi_datsu, shinobi, segas1x_bootleg_state, shinobl, ROT0, "bootleg (Datsu)", "Shinobi (Datsu bootleg, set 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1987, shinoblda, shinobi, shinobi_datsu, shinobi, segas1x_bootleg_state, shinobl, ROT0, "bootleg (Datsu)", "Shinobi (Datsu bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1988, passshtb, passsht, passshtb, passsht, segas1x_bootleg_state, passsht, ROT270, "bootleg", "Passing Shot (2 Players) (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1988, passht4b, passsht, passsht4b, passht4b, segas1x_bootleg_state, shinobl, ROT270, "bootleg", "Passing Shot (4 Players) (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1988, wb3bbl, wb3, wb3bb, wb3b, segas1x_bootleg_state, wb3bbl, ROT0, "bootleg", "Wonder Boy III - Monster Lair (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS) -GAME( 1988, wb3bble, wb3, wb3bb, wb3b, segas1x_bootleg_state, wb3bbl, ROT0, "bootleg", "Wonder Boy III - Monster Lair (encrypted bootleg)", MACHINE_NOT_WORKING ) +GAME( 1987, shinobld, shinobi, shinobi_datsu, shinobi, segas1x_bootleg_state, shinobl, ROT0, "bootleg (Datsu)", "Shinobi (Datsu bootleg, set 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1987, shinoblda, shinobi, shinobi_datsu, shinobi, segas1x_bootleg_state, shinobl, ROT0, "bootleg (Datsu)", "Shinobi (Datsu bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1988, passshtb, passsht, passshtb, passsht, segas1x_bootleg_state, passsht, ROT270, "bootleg", "Passing Shot (2 Players) (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1988, passht4b, passsht, passsht4b, passht4b, segas1x_bootleg_state, shinobl, ROT270, "bootleg", "Passing Shot (4 Players) (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1988, wb3bbl, wb3, wb3bb, wb3b, segas1x_bootleg_state, wb3bbl, ROT0, "bootleg", "Wonder Boy III - Monster Lair (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS) +GAME( 1988, wb3bble, wb3, wb3bb, wb3b, segas1x_bootleg_state, wb3bbl, ROT0, "bootleg", "Wonder Boy III - Monster Lair (encrypted bootleg)", MACHINE_NOT_WORKING ) /* System 16B based bootlegs */ -GAME( 1989, bayrouteb1, bayroute, bayrouteb1, bayroute, segas1x_bootleg_state, bayrouteb1, ROT0, "bootleg (Datsu)", "Bay Route (encrypted, protected bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // broken sprites (due to missing/wrong irq code?) -GAME( 1989, bayrouteb2, bayroute, bayrouteb2, bayroute, segas1x_bootleg_state, bayrouteb2, ROT0, "bootleg (Datsu)", "Bay Route (Datsu bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1989, goldnaxeb1, goldnaxe, goldnaxeb1, goldnaxe, segas1x_bootleg_state, goldnaxeb1, ROT0, "bootleg", "Golden Axe (encrypted bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME( 1989, goldnaxeb2, goldnaxe, goldnaxeb2, goldnaxe, segas1x_bootleg_state, goldnaxeb2, ROT0, "bootleg", "Golden Axe (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME( 1989, tturfbl, tturf, tturfbl, tturf, segas1x_bootleg_state, tturfbl, ROT0, "bootleg (Datsu)", "Tough Turf (Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1989, dduxbl, ddux, dduxbl, ddux, segas1x_bootleg_state, dduxbl, ROT0, "bootleg (Datsu)", "Dynamite Dux (Datsu bootleg)", MACHINE_NOT_WORKING ) -GAME( 1988, altbeastbl, altbeast, altbeastbl, tetris, segas1x_bootleg_state, altbeastbl, ROT0, "bootleg (Datsu)", "Altered Beast (Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1988, mutantwarr, altbeast, altbeastbl, tetris, segas1x_bootleg_state, altbeastbl, ROT0, "bootleg (Datsu)", "Mutant Warrior (Altered Beast - Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1989, eswatbl, eswat, eswatbl, eswat, segas1x_bootleg_state, eswatbl, ROT0, "bootleg", "E-Swat - Cyber Police (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1988, tetrisbl, tetris, tetrisbl, tetris, segas1x_bootleg_state, dduxbl, ROT0, "bootleg", "Tetris (bootleg)", 0 ) +GAME( 1989, bayrouteb1, bayroute, bayrouteb1, bayroute, segas1x_bootleg_state, bayrouteb1, ROT0, "bootleg (Datsu)", "Bay Route (encrypted, protected bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // broken sprites (due to missing/wrong irq code?) +GAME( 1989, bayrouteb2, bayroute, bayrouteb2, bayroute, segas1x_bootleg_state, bayrouteb2, ROT0, "bootleg (Datsu)", "Bay Route (Datsu bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1989, goldnaxeb1, goldnaxe, goldnaxeb1, goldnaxe, segas1x_bootleg_state, goldnaxeb1, ROT0, "bootleg", "Golden Axe (encrypted bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1989, goldnaxeb2, goldnaxe, goldnaxeb2, goldnaxe, segas1x_bootleg_state, goldnaxeb2, ROT0, "bootleg", "Golden Axe (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME( 1989, tturfbl, tturf, tturfbl, tturf, segas1x_bootleg_state, tturfbl, ROT0, "bootleg (Datsu)", "Tough Turf (Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1989, dduxbl, ddux, dduxbl, ddux, segas1x_bootleg_state, dduxbl, ROT0, "bootleg (Datsu)", "Dynamite Dux (Datsu bootleg)", MACHINE_NOT_WORKING ) +GAME( 1988, altbeastbl, altbeast, altbeastbl, tetris, segas1x_bootleg_state, altbeastbl, ROT0, "bootleg (Datsu)", "Altered Beast (Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1988, mutantwarr, altbeast, altbeastbl, tetris, segas1x_bootleg_state, altbeastbl, ROT0, "bootleg (Datsu)", "Mutant Warrior (Altered Beast - Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1989, eswatbl, eswat, eswatbl, eswat, segas1x_bootleg_state, eswatbl, ROT0, "bootleg", "E-Swat - Cyber Police (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1988, tetrisbl, tetris, tetrisbl, tetris, segas1x_bootleg_state, dduxbl, ROT0, "bootleg", "Tetris (bootleg)", 0 ) /* Tetris-based hardware */ -GAME( 1991, beautyb, 0, beautyb, tetris, segas1x_bootleg_state, beautyb, ROT0, "AMT", "Beauty Block", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) -GAME( 1991, iqpipe, 0, beautyb, tetris, segas1x_bootleg_state, beautyb, ROT0, "AMT", "IQ Pipe", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 1991, beautyb, 0, beautyb, tetris, segas1x_bootleg_state, beautyb, ROT0, "AMT", "Beauty Block", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 1991, iqpipe, 0, beautyb, tetris, segas1x_bootleg_state, beautyb, ROT0, "AMT", "IQ Pipe", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) /* System 18 bootlegs */ -GAME( 1990, astormbl, astorm, astormbl, astormbl, segas1x_bootleg_state, astormbl, ROT0, "bootleg", "Alien Storm (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1990, astormb2, astorm, astormbl, astormbl, segas1x_bootleg_state, astormbl, ROT0, "bootleg", "Alien Storm (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) -GAME( 1990, mwalkbl, mwalk, mwalkbl, mwalkbl, segas1x_bootleg_state, mwalkbl, ROT0, "bootleg", "Michael Jackson's Moonwalker (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1989, shdancbl, shdancer, shdancbl, shdancbl, segas1x_bootleg_state, shdancbl, ROT0, "bootleg", "Shadow Dancer (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1989, shdancbla, shdancer, shdancbla, shdancbl, segas1x_bootleg_state, shdancbl, ROT0, "bootleg", "Shadow Dancer (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1990, ddcrewbl, ddcrew, ddcrewbl, ddcrewbl, segas1x_bootleg_state, ddcrewbl, ROT0, "bootleg", "D. D. Crew (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 1990, astormbl, astorm, astormbl, astormbl, segas1x_bootleg_state, astormbl, ROT0, "bootleg", "Alien Storm (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1990, astormb2, astorm, astormbl, astormbl, segas1x_bootleg_state, astormbl, ROT0, "bootleg", "Alien Storm (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 1990, mwalkbl, mwalk, mwalkbl, mwalkbl, segas1x_bootleg_state, mwalkbl, ROT0, "bootleg", "Michael Jackson's Moonwalker (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1989, shdancbl, shdancer, shdancbl, shdancbl, segas1x_bootleg_state, shdancbl, ROT0, "bootleg", "Shadow Dancer (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1989, shdancbla, shdancer, shdancbla, shdancbl, segas1x_bootleg_state, shdancbl, ROT0, "bootleg", "Shadow Dancer (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1990, ddcrewbl, ddcrew, ddcrewbl, ddcrewbl, segas1x_bootleg_state, ddcrewbl, ROT0, "bootleg", "D. D. Crew (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/tagteam.cpp b/src/mame/drivers/tagteam.cpp index a8878e6c30c..f6aca28320b 100644 --- a/src/mame/drivers/tagteam.cpp +++ b/src/mame/drivers/tagteam.cpp @@ -213,7 +213,7 @@ INTERRUPT_GEN_MEMBER(tagteam_state::sound_timer_irq) } -static MACHINE_CONFIG_START( tagteam, tagteam_state ) +static MACHINE_CONFIG_START( tagteam ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12MHz/8) @@ -319,5 +319,5 @@ ROM_END -GAME( 1983, bigprowr, 0, tagteam, bigprowr, driver_device, 0, ROT270, "Technos Japan", "The Big Pro Wrestling!", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, tagteam, bigprowr, tagteam, tagteam, driver_device, 0, ROT270, "Technos Japan (Data East license)", "Tag Team Wrestling", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, bigprowr, 0, tagteam, bigprowr, tagteam_state, 0, ROT270, "Technos Japan", "The Big Pro Wrestling!", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, tagteam, bigprowr, tagteam, tagteam, tagteam_state, 0, ROT270, "Technos Japan (Data East license)", "Tag Team Wrestling", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tail2nos.cpp b/src/mame/drivers/tail2nos.cpp index 521f4a6c53d..30ed318b936 100644 --- a/src/mame/drivers/tail2nos.cpp +++ b/src/mame/drivers/tail2nos.cpp @@ -16,6 +16,7 @@ #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "sound/2608intf.h" +#include "video/vsystem_gga.h" #include "screen.h" #include "speaker.h" @@ -58,7 +59,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, tail2nos_state ) AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_RANGE(0xfff008, 0xfff009) AM_READWRITE8(sound_semaphore_r,sound_command_w,0x00ff) -// AM_RANGE(0xfff020, 0xfff023) V-System CRTC + AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) // AM_RANGE(0xfff030, 0xfff031) link comms ADDRESS_MAP_END @@ -231,7 +232,7 @@ void tail2nos_state::machine_reset() m_video_enable = 0; } -static MACHINE_CONFIG_START( tail2nos, tail2nos_state ) +static MACHINE_CONFIG_START( tail2nos ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,XTAL_20MHz/2) /* verified on pcb */ @@ -263,6 +264,8 @@ static MACHINE_CONFIG_START( tail2nos, tail2nos_state ) MCFG_K051316_WRAP(1) MCFG_K051316_CB(tail2nos_state, zoom_callback) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -348,8 +351,8 @@ ROM_START( sformulaa ) ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "04.bin", 0x00000, 0x10000, CRC(f40e9c3c) SHA1(2ab45f46f92bce42748692cafe601c5893de127b) ) ROM_LOAD16_BYTE( "07.bin", 0x00001, 0x10000, CRC(d1cf6dca) SHA1(18228cc98722eb5907850e2d0317d1f4bf04fb8f) ) - ROM_LOAD16_BYTE( "v3", 0x20000, 0x10000, CRC(e2e0abad) SHA1(1a1054bada9654484fe81fe4b4b32af5ab7b53f0) ) - ROM_LOAD16_BYTE( "v6", 0x20001, 0x10000, CRC(069817a7) SHA1(cca382fe2a49c8c3c84b879a1c30dffff84ef406) ) + ROM_LOAD16_BYTE( "v3", 0x20000, 0x10000, CRC(e2e0abad) SHA1(1a1054bada9654484fe81fe4b4b32af5ab7b53f0) ) + ROM_LOAD16_BYTE( "v6", 0x20001, 0x10000, CRC(069817a7) SHA1(cca382fe2a49c8c3c84b879a1c30dffff84ef406) ) ROM_REGION16_BE( 0x80000, "user1", 0 ) /* extra ROM mapped at 200000 */ @@ -367,7 +370,7 @@ ROM_START( sformulaa ) ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASE00 ) ROM_LOAD( "a24", 0x00000, 0x80000, CRC(b1e9de43) SHA1(0144252dd9ed561fbebd4994cccf11f6c87e1825) ) ROM_LOAD( "o1s", 0x80000, 0x40000, CRC(e27a8eb4) SHA1(4fcadabf42a1c3deeb6d74d75cdbee802cf16db5) ) - ROM_LOAD( "9.bin", 0xc0000, 0x08000, CRC(c76edc0a) SHA1(2c6c21f8d1f3bcb0f65ba5a779fe479783271e0b) ) // present on this PCB, contains Japanese text + same font as in above roms, where does it map? is there another layer? + ROM_LOAD( "9.bin", 0xc0000, 0x08000, CRC(c76edc0a) SHA1(2c6c21f8d1f3bcb0f65ba5a779fe479783271e0b) ) // present on this PCB, contains Japanese text + same font as in above roms, where does it map? is there another layer? ROM_REGION( 0x80000, "gfx2", 0 ) ROM_LOAD( "oj1", 0x000000, 0x40000, CRC(39c36b35) SHA1(a97480696bf6d81bf415737e03cc5324d439ab84) ) @@ -377,6 +380,6 @@ ROM_START( sformulaa ) ROM_LOAD( "osb", 0x00000, 0x20000, CRC(d49ab2f5) SHA1(92f7f6c8f35ac39910879dd88d2cfb6db7c848c9) ) ROM_END -GAME( 1989, tail2nos, 0, tail2nos, tail2nos, driver_device, 0, ROT90, "V-System Co.", "Tail to Nose - Great Championship", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, sformula, tail2nos, tail2nos, tail2nos, driver_device, 0, ROT90, "V-System Co.", "Super Formula (Japan, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, sformulaa,tail2nos, tail2nos, tail2nos, driver_device, 0, ROT90, "V-System Co.", "Super Formula (Japan, set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // No Japan warning, but Japanese version +GAME( 1989, tail2nos, 0, tail2nos, tail2nos, tail2nos_state, 0, ROT90, "V-System Co.", "Tail to Nose - Great Championship", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, sformula, tail2nos, tail2nos, tail2nos, tail2nos_state, 0, ROT90, "V-System Co.", "Super Formula (Japan, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, sformulaa, tail2nos, tail2nos, tail2nos, tail2nos_state, 0, ROT90, "V-System Co.", "Super Formula (Japan, set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // No Japan warning, but Japanese version diff --git a/src/mame/drivers/taito.cpp b/src/mame/drivers/taito.cpp index 2bf1bb1e425..11982c96ccf 100644 --- a/src/mame/drivers/taito.cpp +++ b/src/mame/drivers/taito.cpp @@ -324,7 +324,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( taito_state::timer_a ) output().set_digit_value(++digit, patterns[m_p_ram[m_out_offs++]&15]); } -static MACHINE_CONFIG_START( taito, taito_state ) +static MACHINE_CONFIG_START( taito ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 19000000/9) MCFG_CPU_PROGRAM_MAP(taito_map) @@ -965,50 +965,50 @@ ROM_START(mrblkz80) ROM_END // no sound -GAME(198?, taitest, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Taito Test Fixture", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) +GAME(198?, taitest, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Taito Test Fixture", MACHINE_MECHANICAL | MACHINE_NOT_WORKING ) // dac (sintetizador) -GAME(1979, shock, 0, shock, taito, taito_state, taito, ROT0, "Taito do Brasil", "Shock", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1980, obaoba, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Oba-Oba (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1980, obaoba1, obaoba, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Oba-Oba (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1980, drakor, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Drakor", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1980, meteort, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Meteor (Taito)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1981, sureshop, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Sure Shot (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1981, cosmic, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Cosmic", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1982, gemini2k, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Gemini 2000 (set 1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, gemini2k1, gemini2k, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Gemini 2000 (set 2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, vortexp, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Vortex (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1982, zarza, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Zarza (set 1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, zarza1, zarza, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Zarza (set 2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, sharkt, 0, taito2, taito, taito_state, taito, ROT0, "Taito do Brasil", "Shark (Taito)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, stest, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Speed Test", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1982, lunelle, 0, taito2, taito, taito_state, taito, ROT0, "Taito do Brasil", "Lunelle", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1980, rally, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Rally", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1979, shock, 0, shock, taito, taito_state, taito, ROT0, "Taito do Brasil", "Shock", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1980, obaoba, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Oba-Oba (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1980, obaoba1, obaoba, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Oba-Oba (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1980, drakor, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Drakor", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1980, meteort, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Meteor (Taito)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1981, sureshop, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Sure Shot (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1981, cosmic, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Cosmic", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1982, gemini2k, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Gemini 2000 (set 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, gemini2k1, gemini2k, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Gemini 2000 (set 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, vortexp, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Vortex (Pinball)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1982, zarza, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Zarza (set 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, zarza1, zarza, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Zarza (set 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, sharkt, 0, taito2, taito, taito_state, taito, ROT0, "Taito do Brasil", "Shark (Taito)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, stest, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Speed Test", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1982, lunelle, 0, taito2, taito, taito_state, taito, ROT0, "Taito do Brasil", "Lunelle", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1980, rally, 0, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Rally", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // dac and vox (sintevox) -GAME(1981, fireact, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Fire Action", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, cavnegro, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Cavaleiro Negro (set 1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, cavnegro1, cavnegro, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Cavaleiro Negro (set 2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, cavnegro2, cavnegro, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Cavaleiro Negro (set 3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1981, ladylukt, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Lady Luck (Taito)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(198?, vegast, ladylukt, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Vegas (Taito)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(1982, titan, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Titan (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(1982, titan1, titan, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Titan (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(1982, hawkman, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Hawkman (set 1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, hawkman1, hawkman, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Hawkman (set 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, fireact, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Fire Action", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, cavnegro, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Cavaleiro Negro (set 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, cavnegro1, cavnegro, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Cavaleiro Negro (set 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, cavnegro2, cavnegro, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Cavaleiro Negro (set 3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1981, ladylukt, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Lady Luck (Taito)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME(198?, vegast, ladylukt, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Vegas (Taito)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME(1982, titan, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Titan (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME(1982, titan1, titan, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Titan (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME(1982, hawkman, 0, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Hawkman (set 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, hawkman1, hawkman, taito4, taito, taito_state, taito, ROT0, "Taito do Brasil", "Hawkman (set 2)", MACHINE_IS_SKELETON_MECHANICAL) // dac and ay -GAME(1982, snake, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Snake Machine", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(198?, voleybal, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Volley", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, mrblack, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (set 1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, mrblack1, mrblack, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (set 2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, snake, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Snake Machine", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(198?, voleybal, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Volley", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, mrblack, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (set 1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, mrblack1, mrblack, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (set 2)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1985, sshuttle, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Space Shuttle (Taito) (set 1)", MACHINE_IS_SKELETON_MECHANICAL) GAME(1985, sshuttle1, sshuttle, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Space Shuttle (Taito) (set 2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(198?, polar, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Polar Explorer", MACHINE_IS_SKELETON_MECHANICAL) +GAME(198?, polar, 0, taito5, taito, taito_state, taito, ROT0, "Taito do Brasil", "Polar Explorer", MACHINE_IS_SKELETON_MECHANICAL) // dac, vox and ay -GAME(1982, gork, 0, taito6, taito, taito_state, taito, ROT0, "Taito do Brasil", "Gork", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME(198?, fireactd, 0, taito6, taito, taito_state, taito, ROT0, "Taito do Brasil", "Fire Action Deluxe", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, gork, 0, taito6, taito, taito_state, taito, ROT0, "Taito do Brasil", "Gork", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME(198?, fireactd, 0, taito6, taito, taito_state, taito, ROT0, "Taito do Brasil", "Fire Action Deluxe", MACHINE_IS_SKELETON_MECHANICAL) // different hardware -GAME(198?, mrblkz80, mrblack, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (Z-80 CPU)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(198?, mrblkz80, mrblack, taito, taito, taito_state, taito, ROT0, "Taito do Brasil", "Mr. Black (Z-80 CPU)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/taito_b.cpp b/src/mame/drivers/taito_b.cpp index e97878c4030..c2465b2504f 100644 --- a/src/mame/drivers/taito_b.cpp +++ b/src/mame/drivers/taito_b.cpp @@ -1914,7 +1914,7 @@ void taitob_state::machine_reset() } -static MACHINE_CONFIG_START( rastsag2, taitob_state ) +static MACHINE_CONFIG_START( rastsag2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -1940,7 +1940,7 @@ static MACHINE_CONFIG_START( rastsag2, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -1970,7 +1970,7 @@ static MACHINE_CONFIG_START( rastsag2, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( masterw, taitob_state ) +static MACHINE_CONFIG_START( masterw ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -1996,7 +1996,7 @@ static MACHINE_CONFIG_START( masterw, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2045,7 +2045,7 @@ static MACHINE_CONFIG_DERIVED( tetrista, masterw ) /* Master of Weapon conversio MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ashura, taitob_state ) +static MACHINE_CONFIG_START( ashura ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2071,7 +2071,7 @@ static MACHINE_CONFIG_START( ashura, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2101,7 +2101,7 @@ static MACHINE_CONFIG_START( ashura, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( crimec, taitob_state ) +static MACHINE_CONFIG_START( crimec ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2127,7 +2127,7 @@ static MACHINE_CONFIG_START( crimec, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2158,7 +2158,7 @@ static MACHINE_CONFIG_START( crimec, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hitice, taitob_state ) +static MACHINE_CONFIG_START( hitice ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2184,7 +2184,7 @@ static MACHINE_CONFIG_START( hitice, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2211,7 +2211,7 @@ static MACHINE_CONFIG_START( hitice, taitob_state ) MCFG_SOUND_ROUTE(2, "mono", 0.25) MCFG_SOUND_ROUTE(3, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_DEVICE_ADD("tc0140syt", TC0140SYT, 0) @@ -2220,7 +2220,7 @@ static MACHINE_CONFIG_START( hitice, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rambo3p, taitob_state ) +static MACHINE_CONFIG_START( rambo3p ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* verified on pcb */ @@ -2246,7 +2246,7 @@ static MACHINE_CONFIG_START( rambo3p, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", rambo3) @@ -2277,7 +2277,7 @@ static MACHINE_CONFIG_START( rambo3p, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rambo3, taitob_state ) +static MACHINE_CONFIG_START( rambo3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12MHz verified on pcb */ @@ -2303,7 +2303,7 @@ static MACHINE_CONFIG_START( rambo3, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2333,7 +2333,7 @@ static MACHINE_CONFIG_START( rambo3, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pbobble, taitob_state ) +static MACHINE_CONFIG_START( pbobble ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2365,7 +2365,7 @@ static MACHINE_CONFIG_START( pbobble, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2395,7 +2395,7 @@ static MACHINE_CONFIG_START( pbobble, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( spacedx, taitob_state ) +static MACHINE_CONFIG_START( spacedx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2427,7 +2427,7 @@ static MACHINE_CONFIG_START( spacedx, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2457,7 +2457,7 @@ static MACHINE_CONFIG_START( spacedx, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( spacedxo, taitob_state ) +static MACHINE_CONFIG_START( spacedxo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2483,7 +2483,7 @@ static MACHINE_CONFIG_START( spacedxo, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2513,7 +2513,7 @@ static MACHINE_CONFIG_START( spacedxo, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( qzshowby, taitob_state ) +static MACHINE_CONFIG_START( qzshowby ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz according to the readme*/ @@ -2545,7 +2545,7 @@ static MACHINE_CONFIG_START( qzshowby, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2575,7 +2575,7 @@ static MACHINE_CONFIG_START( qzshowby, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( viofight, taitob_state ) +static MACHINE_CONFIG_START( viofight ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2601,7 +2601,7 @@ static MACHINE_CONFIG_START( viofight, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2627,7 +2627,7 @@ static MACHINE_CONFIG_START( viofight, taitob_state ) MCFG_SOUND_ROUTE(2, "mono", 0.25) MCFG_SOUND_ROUTE(3, "mono", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_4_224MHz/4, OKIM6295_PIN7_HIGH) // 1.056MHz clock frequency, but pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_4_224MHz/4, PIN7_HIGH) // 1.056MHz clock frequency, but pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_DEVICE_ADD("tc0140syt", TC0140SYT, 0) @@ -2636,7 +2636,7 @@ static MACHINE_CONFIG_START( viofight, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( silentd, taitob_state ) +static MACHINE_CONFIG_START( silentd ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2662,7 +2662,7 @@ static MACHINE_CONFIG_START( silentd, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2692,7 +2692,7 @@ static MACHINE_CONFIG_START( silentd, taitob_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( selfeena, taitob_state ) +static MACHINE_CONFIG_START( selfeena ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2718,7 +2718,7 @@ static MACHINE_CONFIG_START( selfeena, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2757,7 +2757,7 @@ void taitob_state::ryujin_patch(void) } #endif -static MACHINE_CONFIG_START( ryujin, taitob_state ) +static MACHINE_CONFIG_START( ryujin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) /* 12 MHz */ @@ -2783,7 +2783,7 @@ static MACHINE_CONFIG_START( ryujin, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2820,7 +2820,7 @@ void taitob_state::sbm_patch(void) } #endif -static MACHINE_CONFIG_START( sbm, taitob_state ) +static MACHINE_CONFIG_START( sbm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */ @@ -2846,7 +2846,7 @@ static MACHINE_CONFIG_START( sbm, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_taitob) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) @@ -2875,7 +2875,7 @@ static MACHINE_CONFIG_START( sbm, taitob_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( realpunc, taitob_state ) +static MACHINE_CONFIG_START( realpunc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -2901,7 +2901,7 @@ static MACHINE_CONFIG_START( realpunc, taitob_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitob_state, screen_update_realpunc) - MCFG_SCREEN_VBLANK_DRIVER(taitob_state, screen_eof_taitob) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitob_state, screen_vblank_taitob)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_b) MCFG_PALETTE_ADD("palette", 4096) @@ -3671,6 +3671,35 @@ ROM_START( ryujin ) /* Silkscreened PCB number ET910000A */ ROM_END ROM_START( sbm ) + ROM_REGION( 0x80000, "maincpu", 0 ) /* 256k for 68000 code */ + ROM_LOAD16_BYTE( "c69-20-2.ic10", 0x00000, 0x20000, CRC(225952a3) SHA1(d95ef971929d4a8c19193e80499052f57d205001) ) + ROM_LOAD16_BYTE( "c69-22-2.ic12", 0x00001, 0x20000, CRC(d900ce83) SHA1(b86c3e7c2f9f2dbd415b7a355e5978de46fc3564) ) + ROM_LOAD16_BYTE( "c69-19-2.ic9" , 0x40000, 0x20000, CRC(d6cfacfb) SHA1(0f910e92a81e0d7ac35d0ffc799dd723f64d47d1) ) + ROM_LOAD16_BYTE( "c69-25-2.ic11", 0x40001, 0x20000, CRC(70903898) SHA1(879412e3c385533fd0bf1e47956e3e9bea78378d) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for Z80 code */ + ROM_LOAD( "c69-31.ic28",0x00000, 0x10000, CRC(c999f753) SHA1(5d944b492893a0bb605743e2928c802427a85fbf) ) + + ROM_REGION( 0x400000, "gfx1", 0 ) + ROM_LOAD ( "c69-01.ic5", 0x000000, 0x100000, CRC(521fabe3) SHA1(f81303688ac014145a7e9325affc4a0f86755ba9) ) + ROM_LOAD16_BYTE( "c69-13.ic2", 0x100000, 0x020000, CRC(d1550884) SHA1(f3a65827c45959fe5ac4bfc92831a8bed76bf287) ) + ROM_LOAD16_BYTE( "c69-12.ic1", 0x100001, 0x020000, CRC(eb56582c) SHA1(41b77704aeaecf3eaa3f87e97c0b59fd00e5349e) ) + /* 140000-1fffff empty */ + ROM_LOAD ( "c69-02.ic6", 0x200000, 0x100000, CRC(f0e20d35) SHA1(af67f39498f68523ece4cd91045456092038e0a4) ) + ROM_LOAD16_BYTE( "c69-15.ic4", 0x300000, 0x020000, CRC(9761d316) SHA1(f03216bbade96948ff433a925e8bffb8760b4101) ) + ROM_LOAD16_BYTE( "c69-14.ic3", 0x300001, 0x020000, CRC(0ed0272a) SHA1(03b15654213ff71ffc96d3a87657bdeb724e9269) ) + /* 340000-3fffff empty */ + + ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */ + ROM_LOAD( "c69-26.ic36", 0x00000, 0x80000, CRC(8784058b) SHA1(c3d9c620704fb5e80719e996e97f6191a5bd9f8c) ) + + ROM_REGION( 0x1800, "plds", 0 ) + ROM_LOAD( "c69-04.ic6", 0x000, 0x104, CRC(80498715) SHA1(076c26f365b74f3b6adb2c4c1a3add5a46a257ea) ) // 16l8 + ROM_LOAD( "c69-05.ic25", 0x200, 0x104, CRC(35e345b4) SHA1(befbea944c645dafb143d8dba83fcc16f1edd3e6) ) // 16l8 + ROM_LOAD( "c69-06.ic17", 0x400, 0x144, CRC(3988e5d1) SHA1(24e03455fd9e653e3fc901bef2c3f3ea59f04ea5) ) // 20l8 +ROM_END + +ROM_START( sbmj ) ROM_REGION( 0x80000, "maincpu", 0 ) /* 256k for 68000 code */ ROM_LOAD16_BYTE( "c69-20-1.10", 0x00000, 0x20000, CRC(b40e4910) SHA1(1436990b8c3c1d0763283133b2ce9d47cd65f825) ) ROM_LOAD16_BYTE( "c69-22-1.12", 0x00001, 0x20000, CRC(ecbcf830) SHA1(49f04a198d327866b26b978a302ddc7aea5ac6de) ) @@ -3716,43 +3745,43 @@ DRIVER_INIT_MEMBER(taitob_state,taito_b) membank("bank1")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x4000); } -GAME( 1989, masterw, 0, masterw, masterw, taitob_state, taito_b, ROT270, "Taito Corporation Japan", "Master of Weapon (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, masterwu, masterw, masterw, masterwu, taitob_state, taito_b, ROT270, "Taito America Corporation", "Master of Weapon (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, masterwj, masterw, masterw, masterwj, taitob_state, taito_b, ROT270, "Taito Corporation", "Master of Weapon (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, yukiwo, masterw, masterw, yukiwo, taitob_state, taito_b, ROT270, "Taito Corporation Japan", "Yukiwo (World, prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, masterw, 0, masterw, masterw, taitob_state, taito_b, ROT270, "Taito Corporation Japan", "Master of Weapon (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, masterwu, masterw, masterw, masterwu, taitob_state, taito_b, ROT270, "Taito America Corporation", "Master of Weapon (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, masterwj, masterw, masterw, masterwj, taitob_state, taito_b, ROT270, "Taito Corporation", "Master of Weapon (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, yukiwo, masterw, masterw, yukiwo, taitob_state, taito_b, ROT270, "Taito Corporation Japan", "Yukiwo (World, prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, nastar, 0, rastsag2, nastar, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Nastar (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, nastarw, nastar, rastsag2, nastarw, taitob_state, taito_b, ROT0, "Taito America Corporation", "Nastar Warrior (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, rastsag2, nastar, rastsag2, rastsag2, taitob_state, taito_b, ROT0, "Taito Corporation", "Rastan Saga 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, nastar, 0, rastsag2, nastar, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Nastar (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, nastarw, nastar, rastsag2, nastarw, taitob_state, taito_b, ROT0, "Taito America Corporation", "Nastar Warrior (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, rastsag2, nastar, rastsag2, rastsag2, taitob_state, taito_b, ROT0, "Taito Corporation", "Rastan Saga 2 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, rambo3, 0, rambo3, rambo3, taitob_state, taito_b, ROT0, "Taito Europe Corporation", "Rambo III (Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, rambo3u, rambo3, rambo3, rambo3u, taitob_state, taito_b, ROT0, "Taito America Corporation", "Rambo III (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, rambo3p, rambo3, rambo3p, rambo3p, taitob_state, taito_b, ROT0, "Taito Europe Corporation", "Rambo III (Europe, Proto?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, rambo3, 0, rambo3, rambo3, taitob_state, taito_b, ROT0, "Taito Europe Corporation", "Rambo III (Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, rambo3u, rambo3, rambo3, rambo3u, taitob_state, taito_b, ROT0, "Taito America Corporation", "Rambo III (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, rambo3p, rambo3, rambo3p, rambo3p, taitob_state, taito_b, ROT0, "Taito Europe Corporation", "Rambo III (Europe, Proto?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, crimec, 0, crimec, crimec, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Crime City (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, crimecu, crimec, crimec, crimecu, taitob_state, taito_b, ROT0, "Taito America Corporation", "Crime City (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, crimecj, crimec, crimec, crimecj, taitob_state, taito_b, ROT0, "Taito Corporation", "Crime City (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, crimec, 0, crimec, crimec, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Crime City (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, crimecu, crimec, crimec, crimecu, taitob_state, taito_b, ROT0, "Taito America Corporation", "Crime City (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, crimecj, crimec, crimec, crimecj, taitob_state, taito_b, ROT0, "Taito Corporation", "Crime City (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, tetrist, tetris, tetrist, tetrist, taitob_state, taito_b, ROT0, "Sega", "Tetris (Japan, Taito B-System, Nastar Conversion Kit)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tetrist, tetris, tetrist, tetrist, taitob_state, taito_b, ROT0, "Sega", "Tetris (Japan, Taito B-System, Nastar Conversion Kit)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, tetrista, tetris, tetrista, tetrist, taitob_state, taito_b, ROT0, "Sega", "Tetris (Japan, Taito B-System, Master of Weapon Conversion Kit)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, viofight, 0, viofight, viofight, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Violence Fight (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, viofightu,viofight,viofight, viofightu, taitob_state, taito_b, ROT0, "Taito America Corporation", "Violence Fight (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, viofightj,viofight,viofight, viofightj, taitob_state, taito_b, ROT0, "Taito Corporation", "Violence Fight (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, viofight, 0, viofight, viofight, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Violence Fight (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, viofightu,viofight,viofight, viofightu, taitob_state, taito_b, ROT0, "Taito America Corporation", "Violence Fight (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, viofightj,viofight,viofight, viofightj, taitob_state, taito_b, ROT0, "Taito Corporation", "Violence Fight (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ashura, 0, ashura, ashura, taitob_state, taito_b, ROT270, "Taito Corporation Japan", "Ashura Blaster (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ashuraj, ashura, ashura, ashuraj, taitob_state, taito_b, ROT270, "Taito Corporation", "Ashura Blaster (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ashurau, ashura, ashura, ashurau, taitob_state, taito_b, ROT270, "Taito America Corporation", "Ashura Blaster (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ashura, 0, ashura, ashura, taitob_state, taito_b, ROT270, "Taito Corporation Japan", "Ashura Blaster (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ashuraj, ashura, ashura, ashuraj, taitob_state, taito_b, ROT270, "Taito Corporation", "Ashura Blaster (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ashurau, ashura, ashura, ashurau, taitob_state, taito_b, ROT270, "Taito America Corporation", "Ashura Blaster (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hitice, 0, hitice, hitice, taitob_state, taito_b, ROT0, "Taito Corporation (Williams license)", "Hit the Ice (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hiticerb, hitice, hitice, hitice, taitob_state, taito_b, ROT0, "Taito Corporation (Williams license)", "Hit the Ice (US, with riser board)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hiticej, hitice, hitice, hiticej, taitob_state, taito_b, ROT0, "Taito Corporation (licensed from Midway)", "Hit the Ice (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hitice, 0, hitice, hitice, taitob_state, taito_b, ROT0, "Taito Corporation (Williams license)", "Hit the Ice (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hiticerb, hitice, hitice, hitice, taitob_state, taito_b, ROT0, "Taito Corporation (Williams license)", "Hit the Ice (US, with riser board)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hiticej, hitice, hitice, hiticej, taitob_state, taito_b, ROT0, "Taito Corporation (licensed from Midway)", "Hit the Ice (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1991, selfeena, 0, selfeena, selfeena, taitob_state, taito_b, ROT0, "East Technology", "Sel Feena", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, silentd, 0, silentd, silentd, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Silent Dragon (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, silentdj, silentd, silentd, silentdj, taitob_state, taito_b, ROT0, "Taito Corporation", "Silent Dragon (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, silentdu, silentd, silentd, silentdu, taitob_state, taito_b, ROT0, "Taito America Corporation", "Silent Dragon (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, silentd, 0, silentd, silentd, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Silent Dragon (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, silentdj, silentd, silentd, silentdj, taitob_state, taito_b, ROT0, "Taito Corporation", "Silent Dragon (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, silentdu, silentd, silentd, silentdu, taitob_state, taito_b, ROT0, "Taito America Corporation", "Silent Dragon (US)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, ryujin, 0, ryujin, ryujin, taitob_state, taito_b, ROT270, "Taito Corporation", "Ryu Jin (Japan)", MACHINE_SUPPORTS_SAVE ) @@ -3760,7 +3789,7 @@ GAME( 1993, qzshowby, 0, qzshowby, qzshowby, taitob_state, taito_b, ROT0, GAME( 1994, pbobble, 0, pbobble, pbobble, taitob_state, taito_b, ROT0, "Taito Corporation", "Puzzle Bobble (Japan, B-System)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, spacedx, 0, spacedx, pbobble, taitob_state, taito_b, ROT0, "Taito Corporation", "Space Invaders DX (US, v2.1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, spacedx, 0, spacedx, pbobble, taitob_state, taito_b, ROT0, "Taito Corporation", "Space Invaders DX (US, v2.1)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, spacedxj, spacedx, spacedx, pbobble, taitob_state, taito_b, ROT0, "Taito Corporation", "Space Invaders DX (Japan, v2.1)", MACHINE_SUPPORTS_SAVE ) GAME( 1994, spacedxo, spacedx, spacedxo, spacedxo, taitob_state, taito_b, ROT0, "Taito Corporation", "Space Invaders DX (Japan, v2.0)", MACHINE_SUPPORTS_SAVE ) /* @@ -3770,5 +3799,6 @@ GAME( 1994, spacedxo, spacedx, spacedxo, spacedxo, taitob_state, taito_b, ROT0, in that it has a punching pad that player needs to punch to hit the enemy. */ -GAME( 1990, sbm, 0, sbm, sbm, taitob_state, taito_b, ROT0, "Taito Corporation", "Sonic Blast Man (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) -GAME( 1994, realpunc, 0, realpunc, realpunc, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Real Puncher", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) +GAME( 1990, sbm, 0, sbm, sbm, taitob_state, taito_b, ROT0, "Taito Corporation", "Sonic Blast Man (US)", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) +GAME( 1990, sbmj, sbm, sbm, sbm, taitob_state, taito_b, ROT0, "Taito Corporation", "Sonic Blast Man (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) +GAME( 1994, realpunc, 0, realpunc, realpunc, taitob_state, taito_b, ROT0, "Taito Corporation Japan", "Real Puncher", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp index 3d4975db4f0..a7bfe911033 100644 --- a/src/mame/drivers/taito_f2.cpp +++ b/src/mame/drivers/taito_f2.cpp @@ -2850,7 +2850,7 @@ MACHINE_START_MEMBER(taitof2_state,f2) membank("bank2")->configure_entries(0, 8, memregion("audiocpu")->base() + 0x10000, 0x4000); } -static MACHINE_CONFIG_START( taito_f2, taitof2_state ) +static MACHINE_CONFIG_START( taito_f2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24000000/2) /* 12 MHz */ @@ -2870,7 +2870,7 @@ static MACHINE_CONFIG_START( taito_f2, taitof2_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2) - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_no_buffer) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_no_buffer)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taitof2) @@ -2931,7 +2931,7 @@ static MACHINE_CONFIG_DERIVED( finalb, taito_f2_tc0220ioc ) MCFG_GFXDECODE_MODIFY("gfxdecode", finalb) MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_finalb) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed)) MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0) MCFG_TC0100SCN_GFX_REGION(1) @@ -2955,7 +2955,7 @@ static MACHINE_CONFIG_DERIVED( dondokod, taito_f2_tc0220ioc ) MCFG_GFXDECODE_MODIFY("gfxdecode", pivot) MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_dondokod) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed)) MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri_roz) MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0) @@ -3006,7 +3006,7 @@ static MACHINE_CONFIG_DERIVED( thundfox, taito_f2_tc0220ioc ) MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_thundfox) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_thundfox) - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed_thundfox) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed_thundfox)) MCFG_DEVICE_ADD("tc0100scn_1", TC0100SCN, 0) MCFG_TC0100SCN_GFX_REGION(1) @@ -3023,7 +3023,7 @@ static MACHINE_CONFIG_DERIVED( thundfox, taito_f2_tc0220ioc ) MCFG_TC0100SCN_OFFSETS(3, 0) MCFG_TC0100SCN_OFFSETS_FLIP(5, 0) MCFG_TC0100SCN_OFFSETS_FLIPTX(4, 1) - MCFG_TC0100SCN_MULTISCR_XOFFS(TC0100SCN_SINGLE_VDU) + MCFG_TC0100SCN_MULTISCR_XOFFS(tc0100scn_device::SINGLE_VDU) MCFG_TC0100SCN_MULTISCR_HACK(1) MCFG_TC0100SCN_GFXDECODE("gfxdecode") MCFG_TC0100SCN_PALETTE("palette") @@ -3068,7 +3068,7 @@ static MACHINE_CONFIG_DERIVED( qtorimon, taito_f2_tc0220ioc ) /* video hardware */ MCFG_GFXDECODE_MODIFY("gfxdecode", yuyugogo) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed)) MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0) MCFG_TC0100SCN_GFX_REGION(1) @@ -3091,7 +3091,7 @@ static MACHINE_CONFIG_DERIVED( liquidk, taito_f2_tc0220ioc ) MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_megab) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri) - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed)) MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0) MCFG_TC0100SCN_GFX_REGION(1) @@ -3113,7 +3113,7 @@ static MACHINE_CONFIG_DERIVED( quizhq, taito_f2 ) /* video hardware */ MCFG_GFXDECODE_MODIFY("gfxdecode", yuyugogo) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed)) MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0) MCFG_TC0100SCN_GFX_REGION(1) @@ -3139,7 +3139,7 @@ static MACHINE_CONFIG_DERIVED( ssi, taito_f2_tc0510nio ) MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_ssi) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_ssi) - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed_thundfox) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed_thundfox)) MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0) MCFG_TC0100SCN_GFX_REGION(1) @@ -3163,7 +3163,7 @@ static MACHINE_CONFIG_DERIVED( gunfront, taito_f2_tc0510nio ) MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_gunfront) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri) - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed)) MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0) MCFG_TC0100SCN_GFX_REGION(1) @@ -3229,7 +3229,7 @@ static MACHINE_CONFIG_DERIVED( footchmp, taito_f2 ) MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_footchmp) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_deadconx) - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_full_buffer_delayed) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_full_buffer_delayed)) MCFG_DEVICE_ADD("tc0480scp", TC0480SCP, 0) MCFG_TC0480SCP_GFX_REGION(1) @@ -3260,7 +3260,7 @@ static MACHINE_CONFIG_DERIVED( hthero, taito_f2 ) MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_hthero) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_deadconx) - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_full_buffer_delayed) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_full_buffer_delayed)) MCFG_TC0360PRI_ADD("tc0360pri") @@ -3377,7 +3377,7 @@ static MACHINE_CONFIG_DERIVED( qzquest, taito_f2_tc0510nio ) /* video hardware */ MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed)) MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0) MCFG_TC0100SCN_GFX_REGION(1) @@ -3451,7 +3451,7 @@ static MACHINE_CONFIG_DERIVED( qzchikyu, taito_f2_tc0510nio ) /* video hardware */ MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_qzchikyu) MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_partial_buffer_delayed_qzchikyu) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed_qzchikyu)) MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0) MCFG_TC0100SCN_GFX_REGION(1) @@ -3660,7 +3660,7 @@ static MACHINE_CONFIG_DERIVED( driftout, taito_f2_tc0510nio ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cameltrya, taitof2_state ) +static MACHINE_CONFIG_START( cameltrya ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,24000000/2) /* verified on pcb */ @@ -3686,7 +3686,7 @@ static MACHINE_CONFIG_START( cameltrya, taitof2_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri_roz) - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_no_buffer) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_no_buffer)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", pivot) @@ -3719,7 +3719,7 @@ static MACHINE_CONFIG_START( cameltrya, taitof2_state ) MCFG_SOUND_ROUTE(2, "mono", 0.20) MCFG_SOUND_ROUTE(3, "mono", 0.60) - MCFG_OKIM6295_ADD("oki", XTAL_4_224MHz/4, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_4_224MHz/4, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_DEVICE_ADD("tc0140syt", TC0140SYT, 0) @@ -3728,7 +3728,7 @@ static MACHINE_CONFIG_START( cameltrya, taitof2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( driveout, taitof2_state ) +static MACHINE_CONFIG_START( driveout ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,24000000/2) /* 12 MHz */ @@ -3754,7 +3754,7 @@ static MACHINE_CONFIG_START( driveout, taitof2_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri_roz) - MCFG_SCREEN_VBLANK_DRIVER(taitof2_state, screen_eof_taitof2_no_buffer) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_no_buffer)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", pivot) @@ -3779,7 +3779,7 @@ static MACHINE_CONFIG_START( driveout, taitof2_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") /* does it ? */ - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) @@ -5574,93 +5574,93 @@ DRIVER_INIT_MEMBER(taitof2_state,driveout) } -GAME( 1988, finalb, 0, finalb, finalb, taitof2_state, finalb, ROT0, "Taito Corporation Japan", "Final Blow (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, finalbu, finalb, finalb, finalbu, taitof2_state, finalb, ROT0, "Taito America Corporation", "Final Blow (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, finalbj, finalb, finalb, finalbj, taitof2_state, finalb, ROT0, "Taito Corporation", "Final Blow (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, finalb, 0, finalb, finalb, taitof2_state, finalb, ROT0, "Taito Corporation Japan", "Final Blow (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, finalbu, finalb, finalb, finalbu, taitof2_state, finalb, ROT0, "Taito America Corporation", "Final Blow (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, finalbj, finalb, finalb, finalbj, taitof2_state, finalb, ROT0, "Taito Corporation", "Final Blow (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dondokod, 0, dondokod, dondokod, driver_device, 0, ROT0, "Taito Corporation Japan", "Don Doko Don (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dondokodu, dondokod, dondokod, dondokodu, driver_device, 0, ROT0, "Taito America Corporation", "Don Doko Don (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dondokodj, dondokod, dondokod, dondokodj, driver_device, 0, ROT0, "Taito Corporation", "Don Doko Don (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dondokod, 0, dondokod, dondokod, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Don Doko Don (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dondokodu, dondokod, dondokod, dondokodu, taitof2_state, 0, ROT0, "Taito America Corporation", "Don Doko Don (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dondokodj, dondokod, dondokod, dondokodj, taitof2_state, 0, ROT0, "Taito Corporation", "Don Doko Don (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, megablst, 0, megab, megab, driver_device, 0, ROT0, "Taito Corporation Japan", "Mega Blast (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, megablstu, megablst, megab, megabu, driver_device, 0, ROT0, "Taito America Corporation", "Mega Blast (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, megablstj, megablst, megab, megabj, driver_device, 0, ROT0, "Taito Corporation", "Mega Blast (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, megablst, 0, megab, megab, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Mega Blast (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, megablstu, megablst, megab, megabu, taitof2_state, 0, ROT0, "Taito America Corporation", "Mega Blast (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, megablstj, megablst, megab, megabj, taitof2_state, 0, ROT0, "Taito Corporation", "Mega Blast (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, thundfox, 0, thundfox, thundfox, driver_device, 0, ROT0, "Taito Corporation Japan", "Thunder Fox (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, thundfoxu, thundfox, thundfox, thundfoxu, driver_device, 0, ROT0, "Taito America Corporation", "Thunder Fox (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, thundfoxj, thundfox, thundfox, thundfoxj, driver_device, 0, ROT0, "Taito Corporation", "Thunder Fox (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, thundfox, 0, thundfox, thundfox, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Thunder Fox (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, thundfoxu, thundfox, thundfox, thundfoxu, taitof2_state, 0, ROT0, "Taito America Corporation", "Thunder Fox (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, thundfoxj, thundfox, thundfox, thundfoxj, taitof2_state, 0, ROT0, "Taito Corporation", "Thunder Fox (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, cameltry, 0, cameltry, cameltry, taitof2_state, cameltry, ROT0, "Taito America Corporation", "Cameltry (US, YM2610)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, cameltryj, cameltry, cameltry, cameltryj, taitof2_state, cameltry, ROT0, "Taito Corporation", "Cameltry (Japan, YM2610)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, cameltrya, cameltry, cameltrya, cameltry, taitof2_state, cameltry, ROT0, "Taito America Corporation", "Cameltry (World, YM2203 + M6295)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, cameltryau, cameltry, cameltrya, cameltry, taitof2_state, cameltry, ROT0, "Taito America Corporation", "Cameltry (US, YM2203 + M6295)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cameltry, 0, cameltry, cameltry, taitof2_state, cameltry, ROT0, "Taito America Corporation", "Cameltry (US, YM2610)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cameltryj, cameltry, cameltry, cameltryj, taitof2_state, cameltry, ROT0, "Taito Corporation", "Cameltry (Japan, YM2610)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cameltrya, cameltry, cameltrya, cameltry, taitof2_state, cameltry, ROT0, "Taito America Corporation", "Cameltry (World, YM2203 + M6295)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cameltryau, cameltry, cameltrya, cameltry, taitof2_state, cameltry, ROT0, "Taito America Corporation", "Cameltry (US, YM2203 + M6295)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, qtorimon, 0, qtorimon, qtorimon, driver_device, 0, ROT0, "Taito Corporation", "Quiz Torimonochou (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, qtorimon, 0, qtorimon, qtorimon, taitof2_state, 0, ROT0, "Taito Corporation", "Quiz Torimonochou (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, liquidk, 0, liquidk, liquidk, driver_device, 0, ROT0, "Taito Corporation Japan", "Liquid Kids (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, liquidku, liquidk, liquidk, liquidku, driver_device, 0, ROT0, "Taito America Corporation", "Liquid Kids (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mizubaku, liquidk, liquidk, mizubaku, driver_device, 0, ROT0, "Taito Corporation", "Mizubaku Daibouken (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, liquidk, 0, liquidk, liquidk, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Liquid Kids (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, liquidku, liquidk, liquidk, liquidku, taitof2_state, 0, ROT0, "Taito America Corporation", "Liquid Kids (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mizubaku, liquidk, liquidk, mizubaku, taitof2_state, 0, ROT0, "Taito Corporation", "Mizubaku Daibouken (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, quizhq, 0, quizhq, quizhq, driver_device, 0, ROT0, "Taito Corporation", "Quiz H.Q. (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, quizhq, 0, quizhq, quizhq, taitof2_state, 0, ROT0, "Taito Corporation", "Quiz H.Q. (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ssi, 0, ssi, ssi, driver_device, 0, ROT270, "Taito Corporation Japan", "Super Space Invaders '91 (World, Rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ssia, ssi, ssi, ssi, driver_device, 0, ROT270, "Taito Corporation Japan", "Super Space Invaders '91 (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, majest12u, ssi, ssi, majest12u, driver_device, 0, ROT270, "Taito America Corporation", "Majestic Twelve - The Space Invaders Part IV (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, majest12j, ssi, ssi, majest12j, driver_device, 0, ROT270, "Taito Corporation", "Majestic Twelve - The Space Invaders Part IV (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ssi, 0, ssi, ssi, taitof2_state, 0, ROT270, "Taito Corporation Japan", "Super Space Invaders '91 (World, Rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ssia, ssi, ssi, ssi, taitof2_state, 0, ROT270, "Taito Corporation Japan", "Super Space Invaders '91 (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, majest12u, ssi, ssi, majest12u, taitof2_state, 0, ROT270, "Taito America Corporation", "Majestic Twelve - The Space Invaders Part IV (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, majest12j, ssi, ssi, majest12j, taitof2_state, 0, ROT270, "Taito Corporation", "Majestic Twelve - The Space Invaders Part IV (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, gunfront, 0, gunfront, gunfront, driver_device, 0, ROT270, "Taito Corporation Japan", "Gun & Frontier (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, gunfrontj, gunfront, gunfront, gunfrontj, driver_device, 0, ROT270, "Taito Corporation", "Gun Frontier (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, gunfront, 0, gunfront, gunfront, taitof2_state, 0, ROT270, "Taito Corporation Japan", "Gun & Frontier (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, gunfrontj, gunfront, gunfront, gunfrontj, taitof2_state, 0, ROT270, "Taito Corporation", "Gun Frontier (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, growl, 0, growl, growl, driver_device, 0, ROT0, "Taito Corporation Japan", "Growl (World, Rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, growla, growl, growl, growl, driver_device, 0, ROT0, "Taito Corporation Japan", "Growl (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, growlu, growl, growl, growlu, driver_device, 0, ROT0, "Taito America Corporation", "Growl (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, runark, growl, growl, runark, driver_device, 0, ROT0, "Taito Corporation", "Runark (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, growlp, growl, growl, growl, driver_device, 0, ROT0, "Taito Corporation Japan", "Growl (World, prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, growl, 0, growl, growl, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Growl (World, Rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, growla, growl, growl, growl, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Growl (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, growlu, growl, growl, growlu, taitof2_state, 0, ROT0, "Taito America Corporation", "Growl (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, runark, growl, growl, runark, taitof2_state, 0, ROT0, "Taito Corporation", "Runark (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, growlp, growl, growl, growl, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Growl (World, prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mjnquest, 0, mjnquest, mjnquest, taitof2_state, mjnquest, ROT0, "Taito Corporation", "Mahjong Quest (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mjnquestb, mjnquest, mjnquest, mjnquest, taitof2_state, mjnquest, ROT0, "Taito Corporation", "Mahjong Quest (No Nudity)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mjnquest, 0, mjnquest, mjnquest, taitof2_state, mjnquest, ROT0, "Taito Corporation", "Mahjong Quest (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mjnquestb, mjnquest, mjnquest, mjnquest, taitof2_state, mjnquest, ROT0, "Taito Corporation", "Mahjong Quest (No Nudity)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, footchmp, 0, footchmp, footchmp, driver_device, 0, ROT0, "Taito Corporation Japan", "Football Champ (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hthero, footchmp, hthero, hthero, driver_device, 0, ROT0, "Taito Corporation", "Hat Trick Hero (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, euroch92, footchmp, footchmp, footchmp, driver_device, 0, ROT0, "Taito Corporation Japan", "Euro Champ '92 (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, footchmpbl, footchmp, footchmpbl,footchmpbl, driver_device,0, ROT0, "bootleg", "Football Champ (World) (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // very different hw register etc. +GAME( 1990, footchmp, 0, footchmp, footchmp, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Football Champ (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hthero, footchmp, hthero, hthero, taitof2_state, 0, ROT0, "Taito Corporation", "Hat Trick Hero (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, euroch92, footchmp, footchmp, footchmp, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Euro Champ '92 (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, footchmpbl, footchmp, footchmpbl,footchmpbl, taitof2_state, 0, ROT0, "bootleg", "Football Champ (World) (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // very different hw register etc. -GAME( 1990, koshien, 0, koshien, koshien, driver_device, 0, ROT0, "Taito Corporation", "Ah Eikou no Koshien (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, koshien, 0, koshien, koshien, taitof2_state, 0, ROT0, "Taito Corporation", "Ah Eikou no Koshien (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, yuyugogo, 0, yuyugogo, yuyugogo, driver_device, 0, ROT0, "Taito Corporation", "Yuuyu no Quiz de GO!GO! (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, yuyugogo, 0, yuyugogo, yuyugogo, taitof2_state, 0, ROT0, "Taito Corporation", "Yuuyu no Quiz de GO!GO! (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ninjak, 0, ninjak, ninjak, driver_device, 0, ROT0, "Taito Corporation Japan", "The Ninja Kids (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ninjaku, ninjak, ninjak, ninjaku, driver_device, 0, ROT0, "Taito America Corporation", "The Ninja Kids (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ninjakj, ninjak, ninjak, ninjakj, driver_device, 0, ROT0, "Taito Corporation", "The Ninja Kids (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ninjak, 0, ninjak, ninjak, taitof2_state, 0, ROT0, "Taito Corporation Japan", "The Ninja Kids (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ninjaku, ninjak, ninjak, ninjaku, taitof2_state, 0, ROT0, "Taito America Corporation", "The Ninja Kids (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, ninjakj, ninjak, ninjak, ninjakj, taitof2_state, 0, ROT0, "Taito Corporation", "The Ninja Kids (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, solfigtr, 0, solfigtr, solfigtr, driver_device, 0, ROT0, "Taito Corporation Japan", "Solitary Fighter (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, solfigtr, 0, solfigtr, solfigtr, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Solitary Fighter (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, qzquest, 0, qzquest , qzquest, driver_device, 0, ROT0, "Taito Corporation", "Quiz Quest - Hime to Yuusha no Monogatari (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, qzquest, 0, qzquest , qzquest, taitof2_state, 0, ROT0, "Taito Corporation", "Quiz Quest - Hime to Yuusha no Monogatari (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, pulirula, 0, pulirula, pulirula, driver_device, 0, ROT0, "Taito Corporation Japan", "PuLiRuLa (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, pulirulaj, pulirula, pulirula, pulirulaj, driver_device, 0, ROT0, "Taito Corporation", "PuLiRuLa (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, pulirula, 0, pulirula, pulirula, taitof2_state, 0, ROT0, "Taito Corporation Japan", "PuLiRuLa (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, pulirulaj, pulirula, pulirula, pulirulaj, taitof2_state, 0, ROT0, "Taito Corporation", "PuLiRuLa (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, metalb, 0, metalb, metalb, driver_device, 0, ROT0, "Taito Corporation Japan", "Metal Black (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, metalbj, metalb, metalb, metalbj, driver_device, 0, ROT0, "Taito Corporation", "Metal Black (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, metalb, 0, metalb, metalb, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Metal Black (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, metalbj, metalb, metalb, metalbj, taitof2_state, 0, ROT0, "Taito Corporation", "Metal Black (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, qzchikyu, 0, qzchikyu, qzchikyu, driver_device, 0, ROT0, "Taito Corporation", "Quiz Chikyu Bouei Gun (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, qzchikyu, 0, qzchikyu, qzchikyu, taitof2_state, 0, ROT0, "Taito Corporation", "Quiz Chikyu Bouei Gun (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, yesnoj, 0, yesnoj, yesnoj, driver_device, 0, ROT0, "Taito Corporation", "Yes/No Sinri Tokimeki Chart", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, yesnoj, 0, yesnoj, yesnoj, taitof2_state, 0, ROT0, "Taito Corporation", "Yes/No Sinri Tokimeki Chart", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, deadconx, 0, deadconx, deadconx, driver_device, 0, ROT0, "Taito Corporation Japan", "Dead Connection (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, deadconxj, deadconx, deadconxj, deadconxj, driver_device, 0, ROT0, "Taito Corporation", "Dead Connection (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, deadconx, 0, deadconx, deadconx, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Dead Connection (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, deadconxj, deadconx, deadconxj, deadconxj, taitof2_state, 0, ROT0, "Taito Corporation", "Dead Connection (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dinorex, 0, dinorex, dinorex, driver_device, 0, ROT0, "Taito Corporation Japan", "Dino Rex (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dinorexu, dinorex, dinorex, dinorexu, driver_device, 0, ROT0, "Taito America Corporation", "Dino Rex (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dinorexj, dinorex, dinorex, dinorexj, driver_device, 0, ROT0, "Taito Corporation", "Dino Rex (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dinorex, 0, dinorex, dinorex, taitof2_state, 0, ROT0, "Taito Corporation Japan", "Dino Rex (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dinorexu, dinorex, dinorex, dinorexu, taitof2_state, 0, ROT0, "Taito America Corporation", "Dino Rex (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dinorexj, dinorex, dinorex, dinorexj, taitof2_state, 0, ROT0, "Taito Corporation", "Dino Rex (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, qjinsei, 0, qjinsei, qjinsei, driver_device, 0, ROT0, "Taito Corporation", "Quiz Jinsei Gekijoh (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, qjinsei, 0, qjinsei, qjinsei, taitof2_state, 0, ROT0, "Taito Corporation", "Quiz Jinsei Gekijoh (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, qcrayon, 0, qcrayon, qcrayon, driver_device, 0, ROT0, "Taito Corporation", "Quiz Crayon Shinchan (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, qcrayon, 0, qcrayon, qcrayon, taitof2_state, 0, ROT0, "Taito Corporation", "Quiz Crayon Shinchan (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, qcrayon2, 0, qcrayon2, qcrayon2, driver_device, 0, ROT0, "Taito Corporation", "Crayon Shinchan Orato Asobo (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, qcrayon2, 0, qcrayon2, qcrayon2, taitof2_state, 0, ROT0, "Taito Corporation", "Crayon Shinchan Orato Asobo (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, driftout, 0, driftout, driftout, driver_device, 0, ROT270, "Visco", "Drift Out (Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, driftoutj, driftout, driftout, driftout, driver_device, 0, ROT270, "Visco", "Drift Out (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, driveout, driftout, driveout, driftout, taitof2_state, driveout, ROT270, "bootleg", "Drive Out (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, driftout, 0, driftout, driftout, taitof2_state, 0, ROT270, "Visco", "Drift Out (Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, driftoutj, driftout, driftout, driftout, taitof2_state, 0, ROT270, "Visco", "Drift Out (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, driveout, driftout, driveout, driftout, taitof2_state, driveout, ROT270, "bootleg", "Drive Out (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/taito_f3.cpp b/src/mame/drivers/taito_f3.cpp index dab3f71648f..4b5a8c1d904 100644 --- a/src/mame/drivers/taito_f3.cpp +++ b/src/mame/drivers/taito_f3.cpp @@ -411,7 +411,7 @@ void taito_f3_state::device_timer(emu_timer &timer, device_timer_id id, int para INTERRUPT_GEN_MEMBER(taito_f3_state::f3_interrupt2) { device.execute().set_input_line(2, HOLD_LINE); // vblank - timer_set(downcast(&device)->cycles_to_attotime(10000), TIMER_F3_INTERRUPT3); + m_interrupt3_timer->adjust(m_maincpu->cycles_to_attotime(10000)); } static const uint16_t recalh_eeprom[64] = { @@ -425,8 +425,10 @@ static const uint16_t recalh_eeprom[64] = { 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff }; -MACHINE_START_MEMBER(taito_f3_state,f3) +void taito_f3_state::machine_start() { + m_interrupt3_timer = timer_alloc(TIMER_F3_INTERRUPT3); + save_item(NAME(m_coin_word)); } @@ -436,14 +438,13 @@ MACHINE_RESET_MEMBER(taito_f3_state,f3) m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); } -static MACHINE_CONFIG_START( f3, taito_f3_state ) +static MACHINE_CONFIG_START( f3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(f3_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", taito_f3_state, f3_interrupt2) - MCFG_MACHINE_START_OVERRIDE(taito_f3_state,f3) MCFG_MACHINE_RESET_OVERRIDE(taito_f3_state,f3) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -457,7 +458,7 @@ static MACHINE_CONFIG_START( f3, taito_f3_state ) MCFG_SCREEN_SIZE(40*8+48*2, 32*8) MCFG_SCREEN_VISIBLE_AREA(46, 40*8-1 + 46, 24, 24+232-1) MCFG_SCREEN_UPDATE_DRIVER(taito_f3_state, screen_update_f3) - MCFG_SCREEN_VBLANK_DRIVER(taito_f3_state, screen_eof_f3) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taito_f3_state, screen_vblank_f3)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_f3) MCFG_PALETTE_ADD("palette", 0x2000) @@ -533,13 +534,11 @@ static GFXDECODE_START( bubsympb ) GFXDECODE_ENTRY( nullptr, 0x000000, pivotlayout, 0, 64 ) /* Dynamically modified */ GFXDECODE_END -static MACHINE_CONFIG_START( bubsympb, taito_f3_state ) +static MACHINE_CONFIG_START( bubsympb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(f3_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", taito_f3_state, f3_interrupt2) - - MCFG_MACHINE_START_OVERRIDE(taito_f3_state,f3) + MCFG_CPU_VBLANK_INT_DRIVER("screen", taito_f3_state, f3_interrupt2) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -552,7 +551,7 @@ static MACHINE_CONFIG_START( bubsympb, taito_f3_state ) MCFG_SCREEN_SIZE(40*8+48*2, 32*8) MCFG_SCREEN_VISIBLE_AREA(46, 40*8-1 + 46, 31, 31+224-1) MCFG_SCREEN_UPDATE_DRIVER(taito_f3_state, screen_update_f3) - MCFG_SCREEN_VBLANK_DRIVER(taito_f3_state, screen_eof_f3) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taito_f3_state, screen_vblank_f3)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", bubsympb) MCFG_PALETTE_ADD("palette", 8192) @@ -562,7 +561,7 @@ static MACHINE_CONFIG_START( bubsympb, taito_f3_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1000000 , OKIM6295_PIN7_HIGH) // not verified + MCFG_OKIM6295_ADD("oki", 1000000 , PIN7_HIGH) // not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/taito_h.cpp b/src/mame/drivers/taito_h.cpp index ad53e20112c..422705d7e47 100644 --- a/src/mame/drivers/taito_h.cpp +++ b/src/mame/drivers/taito_h.cpp @@ -628,7 +628,7 @@ void taitoh_state::machine_start() } -static MACHINE_CONFIG_START( syvalion, taitoh_state ) +static MACHINE_CONFIG_START( syvalion ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) /* 12 MHz */ @@ -683,7 +683,7 @@ static MACHINE_CONFIG_START( syvalion, taitoh_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( recordbr, taitoh_state ) +static MACHINE_CONFIG_START( recordbr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) /* 12 MHz */ @@ -746,7 +746,7 @@ static MACHINE_CONFIG_DERIVED( tetristh, recordbr ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dleague, taitoh_state ) +static MACHINE_CONFIG_START( dleague ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) /* 12 MHz */ @@ -1043,11 +1043,11 @@ ROM_START( dleaguej ) ROM_END -/* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME */ -GAME( 1988, syvalion, 0, syvalion, syvalion, driver_device, 0, ROT0, "Taito Corporation", "Syvalion (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, syvalionp, syvalion,syvalion, syvalionp,driver_device, 0, ROT0, "Taito Corporation", "Syvalion (World, prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, recordbr, 0, recordbr, recordbr, driver_device, 0, ROT0, "Taito Corporation Japan", "Recordbreaker (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gogold, recordbr, recordbr, gogold, driver_device, 0, ROT0, "Taito Corporation", "Go For The Gold (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, tetristh, tetris, tetristh, tetristh, driver_device, 0, ROT0, "Sega", "Tetris (Japan, Taito H-System)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, dleague, 0, dleague, dleague, driver_device, 0, ROT0, "Taito America Corporation", "Dynamite League (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, dleaguej, dleague, dleague, dleaguej, driver_device, 0, ROT0, "Taito Corporation", "Dynamite League (Japan)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS +GAME( 1988, syvalion, 0, syvalion, syvalion, taitoh_state, 0, ROT0, "Taito Corporation", "Syvalion (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, syvalionp, syvalion, syvalion, syvalionp, taitoh_state, 0, ROT0, "Taito Corporation", "Syvalion (World, prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, recordbr, 0, recordbr, recordbr, taitoh_state, 0, ROT0, "Taito Corporation Japan", "Recordbreaker (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gogold, recordbr, recordbr, gogold, taitoh_state, 0, ROT0, "Taito Corporation", "Go For The Gold (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tetristh, tetris, tetristh, tetristh, taitoh_state, 0, ROT0, "Sega", "Tetris (Japan, Taito H-System)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, dleague, 0, dleague, dleague, taitoh_state, 0, ROT0, "Taito America Corporation", "Dynamite League (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, dleaguej, dleague, dleague, dleaguej, taitoh_state, 0, ROT0, "Taito Corporation", "Dynamite League (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp index 85f7cb46a9f..8b369f0d726 100644 --- a/src/mame/drivers/taito_l.cpp +++ b/src/mame/drivers/taito_l.cpp @@ -1695,7 +1695,7 @@ WRITE8_MEMBER(fhawk_state::portA_w) } -static MACHINE_CONFIG_START( fhawk, fhawk_state ) +static MACHINE_CONFIG_START( fhawk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */ @@ -1723,7 +1723,7 @@ static MACHINE_CONFIG_START( fhawk, fhawk_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol) - MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitol_state, screen_vblank_taitol)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l) @@ -1748,7 +1748,7 @@ static MACHINE_CONFIG_START( fhawk, fhawk_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( champwr, fhawk, champwr_state ) +static MACHINE_CONFIG_DERIVED( champwr, fhawk ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1768,13 +1768,13 @@ static MACHINE_CONFIG_DERIVED_CLASS( champwr, fhawk, champwr_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(champwr_state, msm5205_vck)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( raimais, fhawk, taitol_2cpu_state ) +static MACHINE_CONFIG_DERIVED( raimais, fhawk ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1795,7 +1795,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( raimais, fhawk, taitol_2cpu_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kurikint, taitol_2cpu_state ) +static MACHINE_CONFIG_START( kurikint ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */ @@ -1820,7 +1820,7 @@ static MACHINE_CONFIG_START( kurikint, taitol_2cpu_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol) - MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitol_state, screen_vblank_taitol)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l) @@ -1839,7 +1839,7 @@ static MACHINE_CONFIG_START( kurikint, taitol_2cpu_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( plotting, taitol_1cpu_state ) +static MACHINE_CONFIG_START( plotting ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */ @@ -1857,7 +1857,7 @@ static MACHINE_CONFIG_START( plotting, taitol_1cpu_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol) - MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitol_state, screen_vblank_taitol)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l) @@ -1899,7 +1899,7 @@ static MACHINE_CONFIG_DERIVED( puzznici, plotting ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( horshoes, plotting, horshoes_state ) +static MACHINE_CONFIG_DERIVED( horshoes, plotting ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1928,7 +1928,7 @@ static MACHINE_CONFIG_DERIVED( cachat, plotting ) MCFG_MACHINE_RESET_OVERRIDE(taitol_1cpu_state, cachat) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( evilston, taitol_2cpu_state ) +static MACHINE_CONFIG_START( evilston ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* not verified */ @@ -1953,7 +1953,7 @@ static MACHINE_CONFIG_START( evilston, taitol_2cpu_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(taitol_state, screen_update_taitol) - MCFG_SCREEN_VBLANK_DRIVER(taitol_state, screen_eof_taitol) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitol_state, screen_vblank_taitol)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l) @@ -2550,48 +2550,48 @@ DRIVER_INIT_MEMBER(taitol_1cpu_state, plottinga) } -GAME( 1988, raimais, 0, raimais, raimais, driver_device, 0, ROT0, "Taito Corporation Japan", "Raimais (World)", 0 ) -GAME( 1988, raimaisj, raimais, raimais, raimaisj, driver_device, 0, ROT0, "Taito Corporation", "Raimais (Japan)", 0 ) -GAME( 1988, raimaisjo, raimais, raimais, raimaisj, driver_device, 0, ROT0, "Taito Corporation", "Raimais (Japan, first revision)", 0 ) +GAME( 1988, raimais, 0, raimais, raimais, taitol_2cpu_state, 0, ROT0, "Taito Corporation Japan", "Raimais (World)", 0 ) +GAME( 1988, raimaisj, raimais, raimais, raimaisj, taitol_2cpu_state, 0, ROT0, "Taito Corporation", "Raimais (Japan)", 0 ) +GAME( 1988, raimaisjo, raimais, raimais, raimaisj, taitol_2cpu_state, 0, ROT0, "Taito Corporation", "Raimais (Japan, first revision)", 0 ) -GAME( 1988, fhawk, 0, fhawk, fhawk, driver_device, 0, ROT270, "Taito Corporation Japan", "Fighting Hawk (World)", 0 ) -GAME( 1988, fhawkj, fhawk, fhawk, fhawkj, driver_device, 0, ROT270, "Taito Corporation", "Fighting Hawk (Japan)", 0 ) +GAME( 1988, fhawk, 0, fhawk, fhawk, fhawk_state, 0, ROT270, "Taito Corporation Japan", "Fighting Hawk (World)", 0 ) +GAME( 1988, fhawkj, fhawk, fhawk, fhawkj, fhawk_state, 0, ROT270, "Taito Corporation", "Fighting Hawk (Japan)", 0 ) -GAME( 1989, champwr, 0, champwr, champwr, driver_device, 0, ROT0, "Taito Corporation Japan", "Champion Wrestler (World)", MACHINE_IMPERFECT_SOUND ) -GAME( 1989, champwru, champwr, champwr, champwru, driver_device, 0, ROT0, "Taito America Corporation", "Champion Wrestler (US)", MACHINE_IMPERFECT_SOUND ) -GAME( 1989, champwrj, champwr, champwr, champwrj, driver_device, 0, ROT0, "Taito Corporation", "Champion Wrestler (Japan)", MACHINE_IMPERFECT_SOUND ) +GAME( 1989, champwr, 0, champwr, champwr, champwr_state, 0, ROT0, "Taito Corporation Japan", "Champion Wrestler (World)", MACHINE_IMPERFECT_SOUND ) +GAME( 1989, champwru, champwr, champwr, champwru, champwr_state, 0, ROT0, "Taito America Corporation", "Champion Wrestler (US)", MACHINE_IMPERFECT_SOUND ) +GAME( 1989, champwrj, champwr, champwr, champwrj, champwr_state, 0, ROT0, "Taito Corporation", "Champion Wrestler (Japan)", MACHINE_IMPERFECT_SOUND ) -GAME( 1988, kurikint, 0, kurikint, kurikint, driver_device, 0, ROT0, "Taito Corporation Japan", "Kuri Kinton (World)", 0 ) -GAME( 1988, kurikintu, kurikint, kurikint, kurikintj, driver_device, 0, ROT0, "Taito America Corporation", "Kuri Kinton (US)", 0 ) -GAME( 1988, kurikintj, kurikint, kurikint, kurikintj, driver_device, 0, ROT0, "Taito Corporation", "Kuri Kinton (Japan)", 0 ) -GAME( 1988, kurikinta, kurikint, kurikint, kurikinta, driver_device, 0, ROT0, "Taito Corporation Japan", "Kuri Kinton (World, prototype?)", 0 ) +GAME( 1988, kurikint, 0, kurikint, kurikint, taitol_2cpu_state, 0, ROT0, "Taito Corporation Japan", "Kuri Kinton (World)", 0 ) +GAME( 1988, kurikintu, kurikint, kurikint, kurikintj, taitol_2cpu_state, 0, ROT0, "Taito America Corporation", "Kuri Kinton (US)", 0 ) +GAME( 1988, kurikintj, kurikint, kurikint, kurikintj, taitol_2cpu_state, 0, ROT0, "Taito Corporation", "Kuri Kinton (Japan)", 0 ) +GAME( 1988, kurikinta, kurikint, kurikint, kurikinta, taitol_2cpu_state, 0, ROT0, "Taito Corporation Japan", "Kuri Kinton (World, prototype?)", 0 ) -GAME( 1989, plotting, 0, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 1)", 0 ) +GAME( 1989, plotting, 0, plotting, plotting, taitol_1cpu_state, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 1)", 0 ) GAME( 1989, plottinga, plotting, plotting, plotting, taitol_1cpu_state, plottinga, ROT0, "Taito Corporation Japan", "Plotting (World set 2, protected)", 0 ) -GAME( 1989, plottingb, plotting, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 3, earliest version)", 0 ) -GAME( 1989, plottingu, plotting, plotting, plottingu, driver_device, 0, ROT0, "Taito America Corporation", "Plotting (US)", 0 ) -GAME( 1989, flipull, plotting, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation", "Flipull (Japan)", 0 ) +GAME( 1989, plottingb, plotting, plotting, plotting, taitol_1cpu_state, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 3, earliest version)", 0 ) +GAME( 1989, plottingu, plotting, plotting, plottingu, taitol_1cpu_state, 0, ROT0, "Taito America Corporation", "Plotting (US)", 0 ) +GAME( 1989, flipull, plotting, plotting, plotting, taitol_1cpu_state, 0, ROT0, "Taito Corporation", "Flipull (Japan)", 0 ) -GAME( 1989, puzznic, 0, puzznic, puzznic, driver_device, 0, ROT0, "Taito Corporation Japan", "Puzznic (World)", 0 ) -GAME( 1989, puzznicu, puzznic, puzznic, puzznic, driver_device, 0, ROT0, "Taito America Corporation", "Puzznic (US)", 0 ) -GAME( 1989, puzznicj, puzznic, puzznic, puzznic, driver_device, 0, ROT0, "Taito Corporation", "Puzznic (Japan)", 0 ) -GAME( 1989, puzznici, puzznic, puzznici, puzznic, driver_device, 0, ROT0, "bootleg", "Puzznic (Italian bootleg)", 0 ) -GAME( 1989, puzznicb, puzznic, puzznici, puzznic, driver_device, 0, ROT0, "bootleg", "Puzznic (bootleg, set 1)", 0 ) -GAME( 1989, puzznicba, puzznic, puzznici, puzznic, driver_device, 0, ROT0, "bootleg", "Puzznic (bootleg, set 2)", 0 ) +GAME( 1989, puzznic, 0, puzznic, puzznic, taitol_1cpu_state, 0, ROT0, "Taito Corporation Japan", "Puzznic (World)", 0 ) +GAME( 1989, puzznicu, puzznic, puzznic, puzznic, taitol_1cpu_state, 0, ROT0, "Taito America Corporation", "Puzznic (US)", 0 ) +GAME( 1989, puzznicj, puzznic, puzznic, puzznic, taitol_1cpu_state, 0, ROT0, "Taito Corporation", "Puzznic (Japan)", 0 ) +GAME( 1989, puzznici, puzznic, puzznici, puzznic, taitol_1cpu_state, 0, ROT0, "bootleg", "Puzznic (Italian bootleg)", 0 ) +GAME( 1989, puzznicb, puzznic, puzznici, puzznic, taitol_1cpu_state, 0, ROT0, "bootleg", "Puzznic (bootleg, set 1)", 0 ) +GAME( 1989, puzznicba, puzznic, puzznici, puzznic, taitol_1cpu_state, 0, ROT0, "bootleg", "Puzznic (bootleg, set 2)", 0 ) -GAME( 1990, horshoes, 0, horshoes, horshoes, driver_device, 0, ROT270, "Taito America Corporation", "American Horseshoes (US)", 0 ) +GAME( 1990, horshoes, 0, horshoes, horshoes, horshoes_state, 0, ROT270, "Taito America Corporation", "American Horseshoes (US)", 0 ) -GAME( 1990, palamed, 0, palamed, palamed, driver_device, 0, ROT0, "Taito Corporation", "Palamedes (Japan)", 0 ) +GAME( 1990, palamed, 0, palamed, palamed, taitol_1cpu_state, 0, ROT0, "Taito Corporation", "Palamedes (Japan)", 0 ) -GAME( 1993, cachat, 0, cachat, cachat, driver_device, 0, ROT0, "Taito Corporation", "Cachat (Japan)", 0 ) -GAME( 1993, tubeit, cachat, cachat, tubeit, driver_device, 0, ROT0, "bootleg", "Tube-It", 0 ) // No (c) message +GAME( 1993, cachat, 0, cachat, cachat, taitol_1cpu_state, 0, ROT0, "Taito Corporation", "Cachat (Japan)", 0 ) +GAME( 1993, tubeit, cachat, cachat, tubeit, taitol_1cpu_state, 0, ROT0, "bootleg", "Tube-It", 0 ) // No (c) message -GAME( 199?, cubybop, 0, cachat, cubybop, driver_device, 0, ROT0, "Hot-B", "Cuby Bop (location test)", 0 ) // No (c) message, but Hot-B company logo in tile gfx +GAME( 199?, cubybop, 0, cachat, cubybop, taitol_1cpu_state, 0, ROT0, "Hot-B", "Cuby Bop (location test)", 0 ) // No (c) message, but Hot-B company logo in tile gfx -GAME( 1992, plgirls, 0, cachat, plgirls, driver_device, 0, ROT270, "Hot-B", "Play Girls", 0 ) -GAME( 1992, lagirl, plgirls, cachat, plgirls, driver_device, 0, ROT270, "bootleg", "LA Girl", 0 ) // bootleg hardware with changed title & backgrounds +GAME( 1992, plgirls, 0, cachat, plgirls, taitol_1cpu_state, 0, ROT270, "Hot-B", "Play Girls", 0 ) +GAME( 1992, lagirl, plgirls, cachat, plgirls, taitol_1cpu_state, 0, ROT270, "bootleg", "LA Girl", 0 ) // bootleg hardware with changed title & backgrounds -GAME( 1993, plgirls2, 0, cachat, plgirls2, driver_device, 0, ROT270, "Hot-B", "Play Girls 2", 0 ) -GAME( 1993, plgirls2b, plgirls2, cachat, plgirls2, driver_device, 0, ROT270, "bootleg", "Play Girls 2 (bootleg)", MACHINE_IMPERFECT_GRAPHICS ) // bootleg hardware (regular Z80 etc. instead of TC0090LVC, but acts almost the same - scroll offset problems) +GAME( 1993, plgirls2, 0, cachat, plgirls2, taitol_1cpu_state, 0, ROT270, "Hot-B", "Play Girls 2", 0 ) +GAME( 1993, plgirls2b, plgirls2, cachat, plgirls2, taitol_1cpu_state, 0, ROT270, "bootleg", "Play Girls 2 (bootleg)", MACHINE_IMPERFECT_GRAPHICS ) // bootleg hardware (regular Z80 etc. instead of TC0090LVC, but acts almost the same - scroll offset problems) -GAME( 1990, evilston, 0, evilston, evilston, driver_device, 0, ROT270, "Spacy Industrial, Ltd.", "Evil Stone", MACHINE_IMPERFECT_SOUND ) // not Taito PCB, just uses TC0090LVC +GAME( 1990, evilston, 0, evilston, evilston, taitol_2cpu_state, 0, ROT270, "Spacy Industrial, Ltd.", "Evil Stone", MACHINE_IMPERFECT_SOUND ) // not Taito PCB, just uses TC0090LVC diff --git a/src/mame/drivers/taito_o.cpp b/src/mame/drivers/taito_o.cpp index 4ad121ed8ef..08c9b852ba7 100644 --- a/src/mame/drivers/taito_o.cpp +++ b/src/mame/drivers/taito_o.cpp @@ -232,7 +232,7 @@ void taitoo_state::machine_start() { } -static MACHINE_CONFIG_START( parentj, taitoo_state ) +static MACHINE_CONFIG_START( parentj ) MCFG_CPU_ADD("maincpu", M68000,12000000 ) /*?? MHz */ MCFG_CPU_PROGRAM_MAP(parentj_map) @@ -289,4 +289,4 @@ ROM_START( parentj ) ROM_LOAD( "ampal22v10a-0233.c42", 0x000, 0x2dd, CRC(0c030a81) SHA1(0f8198df2cb046683d2db9ac8e609cdff53083ed) ) ROM_END -GAME( 1989, parentj, 0, parentj, parentj, driver_device, 0, ROT0, "Taito", "Parent Jack", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, parentj, 0, parentj, parentj, taitoo_state, 0, ROT0, "Taito", "Parent Jack", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/taito_x.cpp b/src/mame/drivers/taito_x.cpp index 0ebaead9075..6f930806874 100644 --- a/src/mame/drivers/taito_x.cpp +++ b/src/mame/drivers/taito_x.cpp @@ -793,7 +793,7 @@ MACHINE_START_MEMBER(taitox_state,superman) /**************************************************************************/ -static MACHINE_CONFIG_START( superman, taitox_state ) +static MACHINE_CONFIG_START( superman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ @@ -840,7 +840,7 @@ static MACHINE_CONFIG_START( superman, taitox_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( daisenpu, taitox_state ) +static MACHINE_CONFIG_START( daisenpu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ @@ -885,7 +885,7 @@ static MACHINE_CONFIG_START( daisenpu, taitox_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( gigandes, taitox_state ) +static MACHINE_CONFIG_START( gigandes ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz? */ @@ -932,7 +932,7 @@ static MACHINE_CONFIG_START( gigandes, taitox_state ) MCFG_TC0140SYT_SLAVE_CPU("audiocpu") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ballbros, taitox_state ) +static MACHINE_CONFIG_START( ballbros ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz? */ @@ -1251,13 +1251,13 @@ DRIVER_INIT_MEMBER(taitox_state,kyustrkr) } -GAME( 1988, superman, 0, superman, superman, driver_device, 0, ROT0, "Taito Corporation", "Superman (World)", 0 ) -GAME( 1988, supermanu, superman, superman, supermanu, driver_device, 0, ROT0, "Taito Corporation", "Superman (US)", 0 ) -GAME( 1988, supermanj, superman, superman, supermanj, driver_device, 0, ROT0, "Taito Corporation", "Superman (Japan)", 0 ) -GAME( 1989, twinhawk, 0, daisenpu, twinhawk, driver_device, 0, ROT270, "Taito Corporation Japan", "Twin Hawk (World)", 0 ) -GAME( 1989, twinhawku, twinhawk, daisenpu, twinhawku, driver_device, 0, ROT270, "Taito America Corporation", "Twin Hawk (US)", 0 ) -GAME( 1989, daisenpu, twinhawk, daisenpu, daisenpu, driver_device, 0, ROT270, "Taito Corporation", "Daisenpu (Japan)", 0 ) -GAME( 1989, gigandes, 0, gigandes, gigandes, driver_device, 0, ROT0, "East Technology", "Gigandes", 0 ) -GAME( 1989, gigandesa, gigandes, gigandes, gigandes, driver_device, 0, ROT0, "East Technology", "Gigandes (earlier)", 0 ) -GAME( 1989, kyustrkr, 0, ballbros, kyustrkr, taitox_state, kyustrkr, ROT180, "East Technology", "Last Striker / Kyuukyoku no Striker", 0 ) -GAME( 1992, ballbros, 0, ballbros, ballbros, driver_device, 0, ROT0, "East Technology", "Balloon Brothers", 0 ) +GAME( 1988, superman, 0, superman, superman, taitox_state, 0, ROT0, "Taito Corporation", "Superman (World)", 0 ) +GAME( 1988, supermanu, superman, superman, supermanu, taitox_state, 0, ROT0, "Taito Corporation", "Superman (US)", 0 ) +GAME( 1988, supermanj, superman, superman, supermanj, taitox_state, 0, ROT0, "Taito Corporation", "Superman (Japan)", 0 ) +GAME( 1989, twinhawk, 0, daisenpu, twinhawk, taitox_state, 0, ROT270, "Taito Corporation Japan", "Twin Hawk (World)", 0 ) +GAME( 1989, twinhawku, twinhawk, daisenpu, twinhawku, taitox_state, 0, ROT270, "Taito America Corporation", "Twin Hawk (US)", 0 ) +GAME( 1989, daisenpu, twinhawk, daisenpu, daisenpu, taitox_state, 0, ROT270, "Taito Corporation", "Daisenpu (Japan)", 0 ) +GAME( 1989, gigandes, 0, gigandes, gigandes, taitox_state, 0, ROT0, "East Technology", "Gigandes", 0 ) +GAME( 1989, gigandesa, gigandes, gigandes, gigandes, taitox_state, 0, ROT0, "East Technology", "Gigandes (earlier)", 0 ) +GAME( 1989, kyustrkr, 0, ballbros, kyustrkr, taitox_state, kyustrkr, ROT180, "East Technology", "Last Striker / Kyuukyoku no Striker", 0 ) +GAME( 1992, ballbros, 0, ballbros, ballbros, taitox_state, 0, ROT0, "East Technology", "Balloon Brothers", 0 ) diff --git a/src/mame/drivers/taito_z.cpp b/src/mame/drivers/taito_z.cpp index 3b60793109f..0119eff21d3 100644 --- a/src/mame/drivers/taito_z.cpp +++ b/src/mame/drivers/taito_z.cpp @@ -2959,7 +2959,7 @@ MACHINE_RESET_MEMBER(taitoz_state,taitoz) /* Contcirc vis area seems narrower than the other games... */ -static MACHINE_CONFIG_START( contcirc, taitoz_state ) +static MACHINE_CONFIG_START( contcirc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ??? */ @@ -3037,7 +3037,7 @@ static MACHINE_CONFIG_START( contcirc, taitoz_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( chasehq, taitoz_state ) +static MACHINE_CONFIG_START( chasehq ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ??? */ @@ -3115,7 +3115,7 @@ static MACHINE_CONFIG_START( chasehq, taitoz_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( enforce, taitoz_state ) +static MACHINE_CONFIG_START( enforce ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ??? */ @@ -3194,7 +3194,7 @@ static MACHINE_CONFIG_START( enforce, taitoz_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bshark, taitoz_state ) +static MACHINE_CONFIG_START( bshark ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ??? */ @@ -3272,7 +3272,7 @@ static MACHINE_CONFIG_DERIVED( bsharkjjs, bshark ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sci, taitoz_state ) +static MACHINE_CONFIG_START( sci ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ??? */ @@ -3348,7 +3348,7 @@ static MACHINE_CONFIG_START( sci, taitoz_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( nightstr, taitoz_state ) +static MACHINE_CONFIG_START( nightstr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ??? */ @@ -3428,7 +3428,7 @@ static MACHINE_CONFIG_START( nightstr, taitoz_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( aquajack, taitoz_state ) +static MACHINE_CONFIG_START( aquajack ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ??? */ @@ -3507,7 +3507,7 @@ static MACHINE_CONFIG_START( aquajack, taitoz_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( spacegun, taitoz_state ) +static MACHINE_CONFIG_START( spacegun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz ??? */ @@ -3577,7 +3577,7 @@ static MACHINE_CONFIG_START( spacegun, taitoz_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dblaxle, taitoz_state ) +static MACHINE_CONFIG_START( dblaxle ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) @@ -3653,7 +3653,7 @@ static MACHINE_CONFIG_START( dblaxle, taitoz_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( racingb, taitoz_state ) +static MACHINE_CONFIG_START( racingb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) @@ -5373,46 +5373,46 @@ DRIVER_INIT_MEMBER(taitoz_state,bshark) -GAMEL(1987, contcirc, 0, contcirc, contcirc, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Continental Circus (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1987, contcircu, contcirc, contcirc, contcrcu, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Continental Circus (US set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1987, contcircua, contcirc, contcirc, contcrcj, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Continental Circus (US set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1987, contcircj , contcirc, contcirc, contcrcj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Continental Circus (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1987, contcirc, 0, contcirc, contcirc, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Continental Circus (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1987, contcircu, contcirc, contcirc, contcrcu, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Continental Circus (US set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1987, contcircua, contcirc, contcirc, contcrcj, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Continental Circus (US set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1987, contcircj , contcirc, contcirc, contcrcj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Continental Circus (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1988, chasehq, 0, chasehq, chasehq, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Chase H.Q. (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1988, chasehqj, chasehq, chasehq, chasehqj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Chase H.Q. (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1988, chasehqju, chasehq, chasehq, chasehq, taitoz_state, taitoz, ROT0, "Taito Corporation", "Chase H.Q. (Japan, upright?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) // same code rev as Chase H.Q. (World) -GAMEL(1988, chasehqu, chasehq, chasehq, chasehq, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Chase H.Q. (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1988, chasehq, 0, chasehq, chasehq, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Chase H.Q. (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1988, chasehqj, chasehq, chasehq, chasehqj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Chase H.Q. (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1988, chasehqju, chasehq, chasehq, chasehq, taitoz_state, taitoz, ROT0, "Taito Corporation", "Chase H.Q. (Japan, upright?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) // same code rev as Chase H.Q. (World) +GAMEL(1988, chasehqu, chasehq, chasehq, chasehq, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Chase H.Q. (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAME( 1988, enforce, 0, enforce, enforce, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Enforce (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, enforcej, enforce, enforce, enforcej, taitoz_state, taitoz, ROT0, "Taito Corporation", "Enforce (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, enforceja, enforce, enforce, enforceja,taitoz_state, taitoz, ROT0, "Taito Corporation", "Enforce (Japan, Analog Controls)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, enforce, 0, enforce, enforce, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Enforce (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, enforcej, enforce, enforce, enforcej, taitoz_state, taitoz, ROT0, "Taito Corporation", "Enforce (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, enforceja, enforce, enforce, enforceja, taitoz_state, taitoz, ROT0, "Taito Corporation", "Enforce (Japan, Analog Controls)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bshark, 0, bshark, bshark, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Battle Shark (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bsharku, bshark, bshark, bsharku, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito America Corporation", "Battle Shark (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bsharkj, bshark, bshark, bsharkj, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito Corporation", "Battle Shark (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bsharkjjs, bshark, bsharkjjs,bsharkjjs, taitoz_state,bshark, ORIENTATION_FLIP_X, "Taito Corporation", "Battle Shark (Japan, Joystick)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bshark, 0, bshark, bshark, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Battle Shark (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bsharku, bshark, bshark, bsharku, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito America Corporation", "Battle Shark (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bsharkj, bshark, bshark, bsharkj, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito Corporation", "Battle Shark (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bsharkjjs, bshark, bsharkjjs, bsharkjjs, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito Corporation", "Battle Shark (Japan, Joystick)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAMEL(1989, sci, 0, sci, sci, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Special Criminal Investigation (World set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1989, scia, sci, sci, sci, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Special Criminal Investigation (World set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1989, scij, sci, sci, scij, taitoz_state, taitoz, ROT0, "Taito Corporation", "Special Criminal Investigation (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1989, sciu, sci, sci, sciu, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Special Criminal Investigation (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAMEL(1991, scin, sci, sci, sci, taitoz_state, taitoz, ROT0, "hack (Negro Torino)", "Super Special Criminal Investigation (Negro Torino hack)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1989, sci, 0, sci, sci, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Special Criminal Investigation (World set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1989, scia, sci, sci, sci, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Special Criminal Investigation (World set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1989, scij, sci, sci, scij, taitoz_state, taitoz, ROT0, "Taito Corporation", "Special Criminal Investigation (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1989, sciu, sci, sci, sciu, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Special Criminal Investigation (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) +GAMEL(1991, scin, sci, sci, sci, taitoz_state, taitoz, ROT0, "hack (Negro Torino)", "Super Special Criminal Investigation (Negro Torino hack)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_contcirc ) -GAME( 1989, nightstr, 0, nightstr, nightstr, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Night Striker (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, nightstrj, nightstr, nightstr, nghtstrj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Night Striker (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, nightstru, nightstr, nightstr, nghtstru, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Night Striker (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, nightstr, 0, nightstr, nightstr, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Night Striker (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, nightstrj, nightstr, nightstr, nghtstrj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Night Striker (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, nightstru, nightstr, nightstr, nghtstru, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Night Striker (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, aquajack, 0, aquajack, aquajack, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Aqua Jack (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, aquajacku, aquajack, aquajack, aquajack, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Aqua Jack (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, aquajackj, aquajack, aquajack, aquajckj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Aqua Jack (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aquajack, 0, aquajack, aquajack, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Aqua Jack (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aquajacku, aquajack, aquajack, aquajack, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Aqua Jack (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1990, aquajackj, aquajack, aquajack, aquajckj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Aqua Jack (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, spacegun, 0, spacegun, spacegun, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Space Gun (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, spacegunj, spacegun, spacegun, spacegnj, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito Corporation", "Space Gun (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, spacegunu, spacegun, spacegun, spacegnu, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito America Corporation", "Space Gun (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, spacegun, 0, spacegun, spacegun, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Space Gun (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, spacegunj, spacegun, spacegun, spacegnj, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito Corporation", "Space Gun (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, spacegunu, spacegun, spacegun, spacegnu, taitoz_state, bshark, ORIENTATION_FLIP_X, "Taito America Corporation", "Space Gun (US)", MACHINE_SUPPORTS_SAVE ) -GAMEL(1991, dblaxle, 0, dblaxle, dblaxle, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Double Axle (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) -GAMEL(1991, dblaxleu, dblaxle, dblaxle, dblaxle, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Double Axle (US, earlier)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) -GAMEL(1991, pwheelsj, dblaxle, dblaxle, pwheelsj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Power Wheels (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) +GAMEL(1991, dblaxle, 0, dblaxle, dblaxle, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Double Axle (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) +GAMEL(1991, dblaxleu, dblaxle, dblaxle, dblaxle, taitoz_state, taitoz, ROT0, "Taito America Corporation", "Double Axle (US, earlier)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) +GAMEL(1991, pwheelsj, dblaxle, dblaxle, pwheelsj, taitoz_state, taitoz, ROT0, "Taito Corporation", "Power Wheels (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) -GAMEL(1991, racingb, 0, racingb, racingb, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Racing Beat (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) -GAMEL(1991, racingbj, racingb, racingb, racingb, taitoz_state, taitoz, ROT0, "Taito Corporation", "Racing Beat (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) +GAMEL(1991, racingb, 0, racingb, racingb, taitoz_state, taitoz, ROT0, "Taito Corporation Japan", "Racing Beat (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) +GAMEL(1991, racingbj, racingb, racingb, racingb, taitoz_state, taitoz, ROT0, "Taito Corporation", "Racing Beat (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_dblaxle ) diff --git a/src/mame/drivers/taitoair.cpp b/src/mame/drivers/taitoair.cpp index 4bc372f2ab1..60f0ffcf0aa 100644 --- a/src/mame/drivers/taitoair.cpp +++ b/src/mame/drivers/taitoair.cpp @@ -711,7 +711,7 @@ void taitoair_state::machine_reset() } } -static MACHINE_CONFIG_START( airsys, taitoair_state ) +static MACHINE_CONFIG_START( airsys ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) // MC68000P12 @@ -840,6 +840,53 @@ ROM_START( topland ) ROM_LOAD( "pal16l8a-b62-10.bin", 0x0600, 0x0104, CRC(6c1e3fc4) SHA1(8953d82ed94741fdfacb0465415915ca398678d4) ) ROM_END +ROM_START( toplandj ) + ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 */ + ROM_LOAD16_BYTE( "b62_27.ic43", 0x00000, 0x20000, CRC(c717c3b7) SHA1(b5bee250dc4ba530b1d3a73926dc848a0f340a70) ) + ROM_LOAD16_BYTE( "b62_26.ic14", 0x00001, 0x20000, CRC(340bfa56) SHA1(b5df3dc43ed299a22213b517ac4a1c1d776bbdbf) ) + ROM_LOAD16_BYTE( "b62_25.42", 0x40000, 0x20000, CRC(1bd53a72) SHA1(ada679198739cd6a419d3fa4311bb92dc385099c) ) + ROM_LOAD16_BYTE( "b62_24.13", 0x40001, 0x20000, CRC(845026c5) SHA1(ab8d8f5f6597bfcde4e9ccf9e0181b8b6e769ada) ) + ROM_LOAD16_BYTE( "b62_23.41", 0x80000, 0x20000, CRC(ef3a971c) SHA1(0840668dda48f4c9a85410361bfba3ae9580a71f) ) + ROM_LOAD16_BYTE( "b62_22.12", 0x80001, 0x20000, CRC(94279201) SHA1(8518d8e722d4f2516f75224d9a21ab20d8ee6c78) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 */ + ROM_LOAD( "b62_19.ic34", 0x00000, 0x10000, CRC(2c0a3786) SHA1(58dc4a18d1d1b0d023721677a9c1b091a6304f4a) ) + + ROM_REGION( 0x20000, "dsp", 0 ) /* TMS320C25 */ + ROM_LOAD16_BYTE( "b62-21.35", 0x00000, 0x02000, CRC(5f38460d) SHA1(0593718d15b30b10f7686959932e2c934de2a529) ) // cpu board + ROM_LOAD16_BYTE( "b62-20.6", 0x00001, 0x02000, CRC(a4afe958) SHA1(7593a327f4ea0cc9e28fd3269278871f62fb0598) ) // cpu board + + ROM_REGION( 0x100000, "gfx1", 0 ) /* 16x16 tiles */ + ROM_LOAD16_BYTE( "b62-33.39", 0x000000, 0x20000, CRC(38786867) SHA1(7292e3fa69cad6494f2e8e7efa9c3f989bdf958d) ) + ROM_LOAD16_BYTE( "b62-36.48", 0x000001, 0x20000, CRC(4259e76a) SHA1(eb0dc5d0a6f875e3b8335fb30d4c2ad3880c31b9) ) + ROM_LOAD16_BYTE( "b62-29.27", 0x040000, 0x20000, CRC(efdd5c51) SHA1(6df3e9782946cf6f4a21ee3d335548c53cd21e3a) ) + ROM_LOAD16_BYTE( "b62-34.40", 0x040001, 0x20000, CRC(a7e10ca4) SHA1(862c23c095f96f9e0cae00d70947782d5f4e45e6) ) + ROM_LOAD16_BYTE( "b62-35.47", 0x080000, 0x20000, CRC(cba7bac5) SHA1(5305c84abcbcc23281744454803b849853b26632) ) + ROM_LOAD16_BYTE( "b62-30.28", 0x080001, 0x20000, CRC(30e37cb8) SHA1(6bc777bdf1a56952dbfbe2f595279a43e2fa98fd) ) + ROM_LOAD16_BYTE( "b62-31.29", 0x0c0000, 0x20000, CRC(3feebfe3) SHA1(5b014d7d6fa1daf400ac1a437f551281debfdba6) ) + ROM_LOAD16_BYTE( "b62-32.30", 0x0c0001, 0x20000, CRC(66806646) SHA1(d8e0c37b5227d8583d523164ffc6828b4508d5a3) ) + + ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */ + ROM_LOAD( "b62-17.5", 0x00000, 0x20000, CRC(36447066) SHA1(91c8cc4e99534b2d533895a342abb22766a20090) ) + ROM_LOAD( "b62-16.4", 0x20000, 0x20000, CRC(203a5c27) SHA1(f6fc9322dea8d82bfec3be3fdc8616dc6adf666e) ) + ROM_LOAD( "b62-15.3", 0x40000, 0x20000, CRC(e35ffe81) SHA1(f35afdd7cfd4c09907fb062beb5ae46c2286a381) ) + ROM_LOAD( "b62-14.2", 0x60000, 0x20000, CRC(617948a3) SHA1(4660570fa6263c28cfae7ccdf154763cc6144896) ) + ROM_LOAD( "b62-13.1", 0x80000, 0x20000, CRC(b37dc3ea) SHA1(198d4f828132316c624da998e49b1873b9886bf0) ) + + ROM_REGION( 0x20000, "ymsnd.deltat", 0 ) /* Delta-T samples */ + ROM_LOAD( "b62-18.31", 0x00000, 0x20000, CRC(3a4e687a) SHA1(43f07fe19dec351e851defdf9c7810fb9df04736) ) + + ROM_REGION( 0x02000, "user1", 0 ) /* unknown */ + ROM_LOAD( "b62-28.22", 0x00000, 0x02000, CRC(c4be68a6) SHA1(2c07a0e71d11bca67427331217c507d849500ec1) ) // video board + + ROM_REGION( 0x0800, "plds", 0 ) + ROM_LOAD( "pal20l8b-b62-02.bin", 0x0000, 0x0144, CRC(c43ab9d8) SHA1(38542b10e9206a25669534ee26a0472e5f2d6257) ) + ROM_LOAD( "pal20l8b-b62-03.bin", 0x0200, 0x0144, CRC(904753fa) SHA1(87f7414c3eab5740b188276b06c5b898ed07c1cd) ) + ROM_LOAD( "pal20l8b-b62-04.bin", 0x0400, 0x0144, CRC(80512abc) SHA1(0e87e59df3c4d3b4adba295dbd5a2c27b9d5fefd) ) + ROM_LOAD( "pal16l8a-b62-10.bin", 0x0600, 0x0104, CRC(6c1e3fc4) SHA1(8953d82ed94741fdfacb0465415915ca398678d4) ) +ROM_END + + ROM_START( ainferno ) ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 */ ROM_LOAD16_BYTE( "c45_22.43", 0x00000, 0x20000, CRC(50300926) SHA1(9c2a60282d3f9f115b94cb5b6d64bbfc9d726d1d) ) @@ -945,7 +992,8 @@ ROM_START( ainfernoj ) ROM_END -/* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME */ -GAME( 1988, topland, 0, airsys, topland, driver_device, 0, ROT0, "Taito Corporation Japan", "Top Landing (World)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1990, ainferno, 0, airsys, ainferno, driver_device, 0, ROT0, "Taito America Corporation", "Air Inferno (US)", MACHINE_NOT_WORKING ) -GAME( 1990, ainfernoj,ainferno, airsys, ainferno, driver_device, 0, ROT0, "Taito Corporation Japan", "Air Inferno (Japan)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS +GAME( 1988, topland, 0, airsys, topland, taitoair_state, 0, ROT0, "Taito Corporation Japan", "Top Landing (World)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1988, toplandj, topland, airsys, topland, taitoair_state, 0, ROT0, "Taito Corporation", "Top Landing (Japan)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1990, ainferno, 0, airsys, ainferno, taitoair_state, 0, ROT0, "Taito America Corporation", "Air Inferno (US)", MACHINE_NOT_WORKING ) +GAME( 1990, ainfernoj, ainferno, airsys, ainferno, taitoair_state, 0, ROT0, "Taito Corporation Japan", "Air Inferno (Japan)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp index 12d18960d51..077264dbd7e 100644 --- a/src/mame/drivers/taitogn.cpp +++ b/src/mame/drivers/taitogn.cpp @@ -686,7 +686,7 @@ SLOT_INTERFACE_START(slot_ataflash) SLOT_INTERFACE("ataflash", ATA_FLASH_PCCARD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( coh3002t, taitogn_state ) +static MACHINE_CONFIG_START( coh3002t ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8661R, XTAL_100MHz ) @@ -1170,41 +1170,41 @@ ROM_END /* A dummy driver, so that the bios can be debugged, and to serve as */ /* parent for the coh-3002t.353 file, so that we do not have to include */ /* it in every zip file */ -GAME( 1997, coh3002t, 0, coh3002t, coh3002t, driver_device, 0, ROT0, "Taito", "Taito GNET", MACHINE_IS_BIOS_ROOT ) +GAME( 1997, coh3002t, 0, coh3002t, coh3002t, taitogn_state, 0, ROT0, "Taito", "Taito GNET", MACHINE_IS_BIOS_ROOT ) /* Taito */ -GAME( 1998, chaoshea, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "Taito", "Chaos Heat (V2.09O 1998/10/02 17:00)", MACHINE_IMPERFECT_SOUND ) -GAME( 1998, chaosheaj,chaoshea, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "Taito", "Chaos Heat (V2.08J 1998/09/25 17:00)", MACHINE_IMPERFECT_SOUND ) -GAME( 1998, raycris, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "Taito", "Ray Crisis (V2.03J 1998/11/15 15:43)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, spuzbobl, coh3002t, coh3002t_t2, coh3002t, driver_device, 0, ROT0, "Taito", "Super Puzzle Bobble (V2.05O 1999/2/24 18:00)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, spuzboblj,spuzbobl, coh3002t_t2, coh3002t, driver_device, 0, ROT0, "Taito", "Super Puzzle Bobble (V2.04J 1999/2/27 02:10)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, gobyrc, coh3002t, coh3002t_t2, gobyrc, driver_device, 0, ROT0, "Taito", "Go By RC (V2.03O 1999/05/25 13:31)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, rcdego, gobyrc, coh3002t_t1, gobyrc, driver_device, 0, ROT0, "Taito", "RC De Go (V2.03J 1999/05/22 19:29)", MACHINE_IMPERFECT_SOUND ) -GAME( 1999, flipmaze, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "MOSS / Taito", "Flip Maze (V2.04J 1999/09/02 20:00)", MACHINE_IMPERFECT_SOUND ) -GAME( 2001, shikigam, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT270, "Alfa System / Taito", "Shikigami no Shiro (V2.03J 2001/08/07 18:11)", MACHINE_IMPERFECT_SOUND ) -GAME( 2001, shikigama,coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT270, "Alfa System / Taito", "Shikigami no Shiro - internal build (V1.02J 2001/09/27 18:45)", MACHINE_IMPERFECT_SOUND ) -GAME( 2003, sianniv, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT270, "Taito", "Space Invaders Anniversary (V2.02J)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // IRQ at the wrong time -GAME( 2003, kollon, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "Taito", "Kollon (V2.04JA 2003/11/01 12:00)", MACHINE_IMPERFECT_SOUND ) -GAME( 2003, kollonc, kollon, coh3002t_cf, coh3002t_jp1,driver_device, 0, ROT0, "Taito", "Kollon (V2.04JC 2003/11/01 12:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 1998, chaoshea, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "Taito", "Chaos Heat (V2.09O 1998/10/02 17:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 1998, chaosheaj, chaoshea, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "Taito", "Chaos Heat (V2.08J 1998/09/25 17:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 1998, raycris, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "Taito", "Ray Crisis (V2.03J 1998/11/15 15:43)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, spuzbobl, coh3002t, coh3002t_t2, coh3002t, taitogn_state, 0, ROT0, "Taito", "Super Puzzle Bobble (V2.05O 1999/2/24 18:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, spuzboblj, spuzbobl, coh3002t_t2, coh3002t, taitogn_state, 0, ROT0, "Taito", "Super Puzzle Bobble (V2.04J 1999/2/27 02:10)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, gobyrc, coh3002t, coh3002t_t2, gobyrc, taitogn_state, 0, ROT0, "Taito", "Go By RC (V2.03O 1999/05/25 13:31)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, rcdego, gobyrc, coh3002t_t1, gobyrc, taitogn_state, 0, ROT0, "Taito", "RC De Go (V2.03J 1999/05/22 19:29)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, flipmaze, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "MOSS / Taito", "Flip Maze (V2.04J 1999/09/02 20:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 2001, shikigam, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT270, "Alfa System / Taito", "Shikigami no Shiro (V2.03J 2001/08/07 18:11)", MACHINE_IMPERFECT_SOUND ) +GAME( 2001, shikigama, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT270, "Alfa System / Taito", "Shikigami no Shiro - internal build (V1.02J 2001/09/27 18:45)", MACHINE_IMPERFECT_SOUND ) +GAME( 2003, sianniv, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT270, "Taito", "Space Invaders Anniversary (V2.02J)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // IRQ at the wrong time +GAME( 2003, kollon, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "Taito", "Kollon (V2.04JA 2003/11/01 12:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 2003, kollonc, kollon, coh3002t_cf, coh3002t_jp1, taitogn_state, 0, ROT0, "Taito", "Kollon (V2.04JC 2003/11/01 12:00)", MACHINE_IMPERFECT_SOUND ) /* Success */ -GAME( 1999, otenamih, coh3002t, coh3002t_t1, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Otenami Haiken (V2.04J 1999/02/01 18:00:00)", 0 ) -GAME( 2000, psyvaria, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT270, "Success", "Psyvariar -Medium Unit- (V2.04J 2000/02/15 11:00)", MACHINE_IMPERFECT_SOUND ) -GAME( 2000, psyvarrv, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT270, "Success", "Psyvariar -Revision- (V2.04J 2000/08/11 22:00)", MACHINE_IMPERFECT_SOUND ) -GAME( 2001, zokuoten, coh3002t, coh3002t_t1, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Zoku Otenamihaiken (V2.03J 2001/02/16 16:00)", 0 ) // boots the soundcpu without any valid code, causing an infinite NMI loop (currently circumvented) -GAME( 2004, zooo, coh3002t, coh3002t_t1, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Zooo (V2.01JA 2004/04/13 12:00)", 0 ) -GAME( 2005, otenamhf, coh3002t, coh3002t_cf, coh3002t_jp1,taitogn_state, coh3002t_nz, ROT0, "Success / Warashi", "Otenami Haiken Final (V2.07JC 2005/04/20 15:36)", 0 ) +GAME( 1999, otenamih, coh3002t, coh3002t_t1, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Otenami Haiken (V2.04J 1999/02/01 18:00:00)", 0 ) +GAME( 2000, psyvaria, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT270, "Success", "Psyvariar -Medium Unit- (V2.04J 2000/02/15 11:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 2000, psyvarrv, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT270, "Success", "Psyvariar -Revision- (V2.04J 2000/08/11 22:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 2001, zokuoten, coh3002t, coh3002t_t1, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Zoku Otenamihaiken (V2.03J 2001/02/16 16:00)", 0 ) // boots the soundcpu without any valid code, causing an infinite NMI loop (currently circumvented) +GAME( 2004, zooo, coh3002t, coh3002t_t1, coh3002t, taitogn_state, coh3002t_nz, ROT0, "Success", "Zooo (V2.01JA 2004/04/13 12:00)", 0 ) +GAME( 2005, otenamhf, coh3002t, coh3002t_cf, coh3002t_jp1, taitogn_state, coh3002t_nz, ROT0, "Success / Warashi", "Otenami Haiken Final (V2.07JC 2005/04/20 15:36)", 0 ) /* Takumi */ -GAME( 2001, nightrai, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "Takumi", "Night Raid (V2.03J 2001/02/26 17:00)", MACHINE_IMPERFECT_SOUND ) -GAME( 2001, otenki, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "Takumi", "Otenki Kororin (V2.01J 2001/07/02 10:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 2001, nightrai, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "Takumi", "Night Raid (V2.03J 2001/02/26 17:00)", MACHINE_IMPERFECT_SOUND ) +GAME( 2001, otenki, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "Takumi", "Otenki Kororin (V2.01J 2001/07/02 10:00)", MACHINE_IMPERFECT_SOUND ) /* Warashi */ -GAME( 1999, mahjngoh, coh3002t, coh3002t_t1_mp,coh3002t_mp,driver_device,0, ROT0, "Warashi / Mahjong Kobo / Taito", "Mahjong Oh (V2.06J 1999/11/23 08:52:22)", MACHINE_IMPERFECT_SOUND ) -GAME( 2000, shanghss, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "Warashi", "Shanghai Shoryu Sairin (V2.03J 2000/05/26 12:45:28)", MACHINE_IMPERFECT_SOUND ) -GAME( 2000, soutenry, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "Warashi", "Soutenryu (V2.07J 2000/12/14 11:13:02)", MACHINE_IMPERFECT_SOUND ) -GAME( 2001, usagi, coh3002t, coh3002t_t2_mp,coh3002t_mp,driver_device,0, ROT0, "Warashi / Mahjong Kobo / Taito", "Usagi (V2.02J 2001/10/02 12:41:19)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // missing transparencies, see MT #06258 -GAME( 2002, shangtou, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT0, "Warashi / Sunsoft / Taito", "Shanghai Sangokuhai Tougi (Ver 2.01J 2002/01/18 18:26:58)", MACHINE_IMPERFECT_SOUND ) +GAME( 1999, mahjngoh, coh3002t, coh3002t_t1_mp, coh3002t_mp, taitogn_state, 0, ROT0, "Warashi / Mahjong Kobo / Taito", "Mahjong Oh (V2.06J 1999/11/23 08:52:22)", MACHINE_IMPERFECT_SOUND ) +GAME( 2000, shanghss, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "Warashi", "Shanghai Shoryu Sairin (V2.03J 2000/05/26 12:45:28)", MACHINE_IMPERFECT_SOUND ) +GAME( 2000, soutenry, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "Warashi", "Soutenryu (V2.07J 2000/12/14 11:13:02)", MACHINE_IMPERFECT_SOUND ) +GAME( 2001, usagi, coh3002t, coh3002t_t2_mp, coh3002t_mp, taitogn_state, 0, ROT0, "Warashi / Mahjong Kobo / Taito", "Usagi (V2.02J 2001/10/02 12:41:19)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // missing transparencies, see MT #06258 +GAME( 2002, shangtou, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT0, "Warashi / Sunsoft / Taito", "Shanghai Sangokuhai Tougi (Ver 2.01J 2002/01/18 18:26:58)", MACHINE_IMPERFECT_SOUND ) /* Triangle Service */ -GAME( 2002, xiistag, coh3002t, coh3002t_t1, coh3002t, driver_device, 0, ROT270, "Triangle Service", "XII Stag (V2.01J 2002/6/26 22:27)", MACHINE_IMPERFECT_SOUND ) +GAME( 2002, xiistag, coh3002t, coh3002t_t1, coh3002t, taitogn_state, 0, ROT270, "Triangle Service", "XII Stag (V2.01J 2002/6/26 22:27)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/taitojc.cpp b/src/mame/drivers/taitojc.cpp index 6a21eacf9dd..5075ad3f8f9 100644 --- a/src/mame/drivers/taitojc.cpp +++ b/src/mame/drivers/taitojc.cpp @@ -1086,7 +1086,7 @@ void taitojc_state::machine_start() } -static MACHINE_CONFIG_START( taitojc, taitojc_state ) +static MACHINE_CONFIG_START( taitojc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68040, XTAL_10MHz*2) // 20MHz, clock source = CY7C991 @@ -1141,7 +1141,7 @@ static MACHINE_CONFIG_DERIVED( dendego, taitojc ) /* sound hardware */ MCFG_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "subwoofer", 0.20) MACHINE_CONFIG_END diff --git a/src/mame/drivers/taitopjc.cpp b/src/mame/drivers/taitopjc.cpp index d27a4e49d38..2866515694d 100644 --- a/src/mame/drivers/taitopjc.cpp +++ b/src/mame/drivers/taitopjc.cpp @@ -752,7 +752,7 @@ INTERRUPT_GEN_MEMBER(taitopjc_state::taitopjc_vbi) } -static MACHINE_CONFIG_START( taitopjc, taitopjc_state ) +static MACHINE_CONFIG_START( taitopjc ) MCFG_CPU_ADD("maincpu", PPC603E, 100000000) MCFG_PPC_BUS_FREQUENCY(XTAL_66_6667MHz) /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */ MCFG_CPU_PROGRAM_MAP(ppc603e_mem) @@ -856,4 +856,4 @@ ROM_START( optiger ) // TODO: There are 6 PALs in total on the main PCB. ROM_END -GAME( 1998, optiger, 0, taitopjc, taitopjc, taitopjc_state, optiger, ROT0, "Taito", "Operation Tiger", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1998, optiger, 0, taitopjc, taitopjc, taitopjc_state, optiger, ROT0, "Taito", "Operation Tiger (Ver 2.14 O)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/taitosj.cpp b/src/mame/drivers/taitosj.cpp index 1f5e1fcf184..a826c7a9db8 100644 --- a/src/mame/drivers/taitosj.cpp +++ b/src/mame/drivers/taitosj.cpp @@ -1738,7 +1738,7 @@ WRITE8_MEMBER(taitosj_state::taitosj_dacvol_w) m_dacvol->write(space, NODE_01, data ^ 0xff); // 7416 hex inverter } -static MACHINE_CONFIG_START( nomcu, taitosj_state ) +static MACHINE_CONFIG_START( nomcu ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,XTAL_8MHz/2) /* 8 MHz / 2, on CPU board */ @@ -2824,16 +2824,16 @@ DRIVER_INIT_MEMBER(taitosj_state,junglhbr) } GAME( 1981, spaceskr, 0, nomcu, spaceskr, taitosj_state, taitosj, ROT0, "Taito Corporation", "Space Seeker", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, spacecr, 0, nomcu, spacecr, taitosj_state, spacecr, ROT90, "Taito Corporation", "Space Cruiser", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, junglek, 0, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, junglekas,junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (alternate sound)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, junglekj2,junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan, earlier)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, jungleh, junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito America Corporation", "Jungle Hunt (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, junglehbr,junglek, nomcu, junglek, taitosj_state, junglhbr,ROT180, "Taito do Brasil", "Jungle Hunt (Brazil)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, spacecr, 0, nomcu, spacecr, taitosj_state, spacecr, ROT90, "Taito Corporation", "Space Cruiser", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, junglek, 0, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, junglekas,junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (alternate sound)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, junglekj2,junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan, earlier)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, jungleh, junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "Taito America Corporation", "Jungle Hunt (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, junglehbr,junglek, nomcu, junglek, taitosj_state, junglhbr,ROT180, "Taito do Brasil", "Jungle Hunt (Brazil)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, piratpet, junglek, nomcu, piratpet, taitosj_state, taitosj, ROT180, "Taito America Corporation", "Pirate Pete", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, jungleby, junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "bootleg", "Jungle Boy (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, alpine, 0, nomcu, alpine, taitosj_state, alpine, ROT270, "Taito Corporation", "Alpine Ski (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, alpinea, alpine, nomcu, alpinea, taitosj_state, alpinea, ROT270, "Taito Corporation", "Alpine Ski (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, jungleby, junglek, nomcu, junglek, taitosj_state, taitosj, ROT180, "bootleg", "Jungle Boy (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, alpine, 0, nomcu, alpine, taitosj_state, alpine, ROT270, "Taito Corporation", "Alpine Ski (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, alpinea, alpine, nomcu, alpinea, taitosj_state, alpinea, ROT270, "Taito Corporation", "Alpine Ski (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, timetunl, 0, nomcu, timetunl, taitosj_state, taitosj, ROT0, "Taito Corporation", "Time Tunnel", MACHINE_SUPPORTS_SAVE ) GAME( 1982, wwestern, 0, nomcu, wwestern, taitosj_state, taitosj, ROT270, "Taito Corporation", "Wild Western (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, wwestern1,wwestern, nomcu, wwestern, taitosj_state, taitosj, ROT270, "Taito Corporation", "Wild Western (set 2)", MACHINE_SUPPORTS_SAVE ) @@ -2841,10 +2841,10 @@ GAME( 1982, frontlin, 0, mcu, frontlin, taitosj_state, taitosj, RO GAME( 1983, elevator, 0, mcu, elevator, taitosj_state, taitosj, ROT0, "Taito Corporation", "Elevator Action (5 pcb version, 1.1)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, elevatorb,elevator, nomcu, elevator, taitosj_state, taitosj, ROT0, "bootleg", "Elevator Action (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, elevator4,elevator, mcu, elevator, taitosj_state, taitosj, ROT0, "Taito Corporation", "Elevator Action (4 pcb version, 1.1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, tinstar, 0, mcu, tinstar, taitosj_state, taitosj, ROT0, "Taito Corporation", "The Tin Star (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, tinstar2, tinstar, mcu, tinstar, taitosj_state, taitosj, ROT0, "Taito Corporation", "The Tin Star (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, tinstar, 0, mcu, tinstar, taitosj_state, taitosj, ROT0, "Taito Corporation", "The Tin Star (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, tinstar2, tinstar, mcu, tinstar, taitosj_state, taitosj, ROT0, "Taito Corporation", "The Tin Star (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, waterski, 0, nomcu, waterski, taitosj_state, taitosj, ROT270, "Taito Corporation", "Water Ski", MACHINE_SUPPORTS_SAVE ) GAME( 1983, bioatack, 0, nomcu, bioatack, taitosj_state, taitosj, ROT270, "Taito Corporation (Fox Video Games license)", "Bio Attack", MACHINE_SUPPORTS_SAVE ) GAME( 1984, sfposeid, 0, mcu, sfposeid, taitosj_state, taitosj, ROT0, "Taito Corporation", "Sea Fighter Poseidon", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hwrace, 0, nomcu, hwrace, taitosj_state, taitosj, ROT270, "Taito Corporation", "High Way Race", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hwrace, 0, nomcu, hwrace, taitosj_state, taitosj, ROT270, "Taito Corporation", "High Way Race", MACHINE_SUPPORTS_SAVE ) GAME( 1984, kikstart, 0, kikstart, kikstart, taitosj_state, taitosj, ROT0, "Taito Corporation", "Kick Start - Wheelie King", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/taitottl.cpp b/src/mame/drivers/taitottl.cpp index c8dda24ca9f..daad9885448 100644 --- a/src/mame/drivers/taitottl.cpp +++ b/src/mame/drivers/taitottl.cpp @@ -96,7 +96,7 @@ public: } // devices - required_device m_maincpu; + required_device m_maincpu; required_device m_video; protected: @@ -139,7 +139,7 @@ void taitottl_state::video_start() { } -static MACHINE_CONFIG_START( taitottl, taitottl_state ) +static MACHINE_CONFIG_START( taitottl ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) @@ -251,7 +251,7 @@ ROM_START( zzblock ) ROM_END -GAME( 1977, gunman, 0, taitottl, 0, driver_device, 0, ROT0, "Taito", "Gunman [TTL]", MACHINE_IS_SKELETON ) -GAME( 1977, missilex, 0, taitottl, 0, driver_device, 0, ROT0, "Taito", "Missile-X [TTL]", MACHINE_IS_SKELETON ) -GAME( 1977, ttblock, 0, taitottl, 0, driver_device, 0, ROT0, "Taito", "T.T. Block [TTL]", MACHINE_IS_SKELETON ) -GAME( 1979, zzblock, 0, taitottl, 0, driver_device, 0, ROT0, "Taito", "Zun Zun Block [TTL]", MACHINE_IS_SKELETON ) +GAME( 1977, gunman, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito", "Gunman [TTL]", MACHINE_IS_SKELETON ) +GAME( 1977, missilex, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito", "Missile-X [TTL]", MACHINE_IS_SKELETON ) +GAME( 1977, ttblock, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito", "T.T. Block [TTL]", MACHINE_IS_SKELETON ) +GAME( 1979, zzblock, 0, taitottl, 0, taitottl_state, 0, ROT0, "Taito", "Zun Zun Block [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/taitotx.cpp b/src/mame/drivers/taitotx.cpp index 1aff70a3115..adf516c1134 100644 --- a/src/mame/drivers/taitotx.cpp +++ b/src/mame/drivers/taitotx.cpp @@ -166,7 +166,7 @@ void taito_type_x_state::machine_reset() } // todo: different configs for the different machine types. -static MACHINE_CONFIG_START( taito_type_x, taito_type_x_state ) +static MACHINE_CONFIG_START( taito_type_x ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PENTIUM3, 733333333) /* Wrong, much newer processors, much faster. */ @@ -389,6 +389,6 @@ ROM_START( kofxii ) ROM_END -GAME( 2006, chasehq2, 0, taito_type_x, taito_type_x, driver_device, 0, ROT0, "Taito Corporation", "Chase H.Q. 2 (v2.0.6.JP)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2008, samspsen, 0, taito_type_x, taito_type_x, driver_device, 0, ROT0, "SNK Playmore", "Samurai Spirits Sen (v1.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2009, kofxii, 0, taito_type_x, taito_type_x, driver_device, 0, ROT0, "SNK Playmore", "The King of Fighters XII (v1.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2006, chasehq2, 0, taito_type_x, taito_type_x, taito_type_x_state, 0, ROT0, "Taito Corporation", "Chase H.Q. 2 (v2.0.6.JP)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2008, samspsen, 0, taito_type_x, taito_type_x, taito_type_x_state, 0, ROT0, "SNK Playmore", "Samurai Spirits Sen (v1.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2009, kofxii, 0, taito_type_x, taito_type_x, taito_type_x_state, 0, ROT0, "SNK Playmore", "The King of Fighters XII (v1.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/taitotz.cpp b/src/mame/drivers/taitotz.cpp index 2c2c0ff3e9e..1b9a05fe395 100644 --- a/src/mame/drivers/taitotz.cpp +++ b/src/mame/drivers/taitotz.cpp @@ -2556,7 +2556,7 @@ WRITE_LINE_MEMBER(taitotz_state::ide_interrupt) m_iocpu->set_input_line(TLCS900_INT2, state); } -static MACHINE_CONFIG_START( taitotz, taitotz_state ) +static MACHINE_CONFIG_START( taitotz ) /* IBM EMPPC603eBG-100 */ MCFG_CPU_ADD("maincpu", PPC603E, 100000000) MCFG_PPC_BUS_FREQUENCY(XTAL_66_6667MHz) /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */ @@ -2915,13 +2915,13 @@ ROM_START( styphp ) DISK_IMAGE( "styphp", 0, SHA1(c232d3460e37523346132544b8e23a5f9b447150) ) ROM_END -GAME( 1999, taitotz, 0, taitotz, taitotz, driver_device, 0, ROT0, "Taito", "Type Zero BIOS", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT) -GAME( 1999, landhigh, taitotz, landhigh, landhigh, taitotz_state, landhigh, ROT0, "Taito", "Landing High Japan", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1999, batlgear, taitotz, taitotz, batlgr2, taitotz_state, batlgear, ROT0, "Taito", "Battle Gear", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1999, pwrshovl, taitotz, taitotz, pwrshovl, taitotz_state, pwrshovl, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 1999/8/5 19:13:35 -GAME( 1999, pwrshovla,pwrshovl,taitotz, pwrshovl, taitotz_state, pwrshovl, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J, alt)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // seem to be some differences in drive content, but identifies as the same revision, is it just user data changes?? -GAME( 2000, batlgr2, taitotz, taitotz, batlgr2, taitotz_state, batlgr2, ROT0, "Taito", "Battle Gear 2 (v2.04J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2000, batlgr2a, batlgr2, taitotz, batlgr2, taitotz_state, batlgr2a, ROT0, "Taito", "Battle Gear 2 (v2.01J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2000, styphp, taitotz, taitotz, styphp, taitotz_state, styphp, ROT0, "Taito", "Stunt Typhoon Plus", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2002, raizpin, taitotz, taitotz, taitotz, taitotz_state, raizpin, ROT0, "Taito", "Raizin Ping Pong (V2.01O)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2002, raizpinj, raizpin, taitotz, taitotz, taitotz_state, raizpinj, ROT0, "Taito", "Raizin Ping Pong (V2.01J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1999, taitotz, 0, taitotz, taitotz, taitotz_state, 0, ROT0, "Taito", "Type Zero BIOS", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT) +GAME( 1999, landhigh, taitotz, landhigh, landhigh, taitotz_state, landhigh, ROT0, "Taito", "Landing High Japan (Ver 2.01 OK)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1999, batlgear, taitotz, taitotz, batlgr2, taitotz_state, batlgear, ROT0, "Taito", "Battle Gear (Ver 2.40 A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 1999, pwrshovl, taitotz, taitotz, pwrshovl, taitotz_state, pwrshovl, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 1999/8/5 19:13:35 +GAME( 1999, pwrshovla, pwrshovl, taitotz, pwrshovl, taitotz_state, pwrshovl, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J, alt)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // seem to be some differences in drive content, but identifies as the same revision, is it just user data changes?? +GAME( 2000, batlgr2, taitotz, taitotz, batlgr2, taitotz_state, batlgr2, ROT0, "Taito", "Battle Gear 2 (v2.04J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2000, batlgr2a, batlgr2, taitotz, batlgr2, taitotz_state, batlgr2a, ROT0, "Taito", "Battle Gear 2 (v2.01J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2000, styphp, taitotz, taitotz, styphp, taitotz_state, styphp, ROT0, "Taito", "Stunt Typhoon Plus (Ver 2.04 J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2002, raizpin, taitotz, taitotz, taitotz, taitotz_state, raizpin, ROT0, "Taito", "Raizin Ping Pong (V2.01O)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2002, raizpinj, raizpin, taitotz, taitotz, taitotz_state, raizpinj, ROT0, "Taito", "Raizin Ping Pong (V2.01J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/taitowlf.cpp b/src/mame/drivers/taitowlf.cpp index d04f99726c3..4110306b98c 100644 --- a/src/mame/drivers/taitowlf.cpp +++ b/src/mame/drivers/taitowlf.cpp @@ -365,7 +365,7 @@ PALETTE_INIT_MEMBER(taitowlf_state, taitowlf) } #endif -static MACHINE_CONFIG_START( taitowlf, taitowlf_state ) +static MACHINE_CONFIG_START( taitowlf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PENTIUM, 200000000) diff --git a/src/mame/drivers/tamag1.cpp b/src/mame/drivers/tamag1.cpp index 9a654fe3ecd..4b582cffe48 100644 --- a/src/mame/drivers/tamag1.cpp +++ b/src/mame/drivers/tamag1.cpp @@ -128,7 +128,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( tama, tamag1_state ) +static MACHINE_CONFIG_START( tama ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", E0C6S46, XTAL_32_768kHz) @@ -164,9 +164,12 @@ MACHINE_CONFIG_END ROM_START( tama ) ROM_REGION( 0x3000, "maincpu", 0 ) - ROM_LOAD( "test.b", 0x0000, 0x3000, CRC(4372220e) SHA1(6e13d015113e16198c0059b9d0c38d7027ae7324) ) // this rom is on the die too, test pin enables it? ROM_LOAD( "tama.b", 0x0000, 0x3000, CRC(5c864cb1) SHA1(4b4979cf92dc9d2fb6d7295a38f209f3da144f72) ) + + ROM_REGION( 0x3000, "maincpu:test", 0 ) + ROM_LOAD( "test.b", 0x0000, 0x3000, CRC(4372220e) SHA1(6e13d015113e16198c0059b9d0c38d7027ae7324) ) // this rom is on the die too, test pin enables it? ROM_END -CONS( 1997, tama, 0, 0, tama, tama, driver_device, 0, "Bandai", "Tamagotchi (USA)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1997, tama, 0, 0, tama, tama, tamag1_state, 0, "Bandai", "Tamagotchi (USA)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp index 737214b4e01..3fd4c678e09 100644 --- a/src/mame/drivers/tandy1t.cpp +++ b/src/mame/drivers/tandy1t.cpp @@ -46,16 +46,19 @@ Tandy 1000 (80386) variations: #include "sound/sn76496.h" #include "cpu/i86/i86.h" #include "cpu/i86/i286.h" +#include "bus/pc_joy/pc_joy.h" +#include "screen.h" #include "softlist.h" -extern const device_type T1000_MOTHERBOARD; +DECLARE_DEVICE_TYPE(T1000_MOTHERBOARD, t1000_mb_device) class t1000_mb_device : public pc_noppi_mb_device { public: // construction/destruction t1000_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pc_noppi_mb_device(mconfig, T1000_MOTHERBOARD, "T1000_MOTHERBOARD", tag, owner, clock, "t1000_mb", __FILE__) { } + : pc_noppi_mb_device(mconfig, T1000_MOTHERBOARD, tag, owner, clock) + { } protected: virtual void device_start() override; }; @@ -64,7 +67,7 @@ void t1000_mb_device::device_start() { } -const device_type T1000_MOTHERBOARD = device_creator; +DEFINE_DEVICE_TYPE(T1000_MOTHERBOARD, t1000_mb_device, "t1000_mb", "Tandy 1000 Motherboard") class tandy1000_state : public driver_device { @@ -656,7 +659,7 @@ static MACHINE_CONFIG_FRAGMENT(tandy1000_101key) MCFG_AT_KEYB_ADD("pc_keyboard", 1, DEVWRITELINE("mb:pic8259", pic8259_device, ir1_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( t1000hx, tandy1000_state ) +static MACHINE_CONFIG_START( t1000hx ) MCFG_CPU_ADD("maincpu", I8088, 8000000) MCFG_CPU_PROGRAM_MAP(tandy1000_map) MCFG_CPU_IO_MAP(tandy1000_io) @@ -686,7 +689,7 @@ static MACHINE_CONFIG_DERIVED( t1000sx, t1000hx ) MCFG_RAM_EXTRA_OPTIONS("384K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( t1000rl, tandy1000_state ) +static MACHINE_CONFIG_START( t1000rl ) MCFG_CPU_ADD("maincpu", I8086, XTAL_28_63636MHz / 3) MCFG_CPU_PROGRAM_MAP(tandy1000_bank_map) MCFG_CPU_IO_MAP(tandy1000_bank_io) @@ -718,7 +721,7 @@ static MACHINE_CONFIG_DERIVED( t1000sl2, t1000rl ) MCFG_ISA8_SLOT_ADD("mb:isa", "isa4", pc_isa8_cards, nullptr, false) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( t1000tl, tandy1000_state ) +static MACHINE_CONFIG_START( t1000tl ) MCFG_CPU_ADD("maincpu", I80286, XTAL_28_63636MHz / 2) MCFG_CPU_PROGRAM_MAP(tandy1000_286_map) MCFG_CPU_IO_MAP(tandy1000_16_io) @@ -907,11 +910,11 @@ ROM_START( t1000tl2 ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS // tandy 1000 -COMP( 1987, t1000hx, ibm5150, 0, t1000hx, t1000_90key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 HX", 0) -COMP( 1987, t1000sx, ibm5150, 0, t1000sx, t1000_90key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SX", 0) -COMP( 1987, t1000tx, ibm5150, 0, t1000tx, t1000_90key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TX", 0) -COMP( 1989, t1000rl, ibm5150, 0, t1000rl, t1000_101key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 RL", 0) -COMP( 1989, t1000tl2, ibm5150, 0, t1000tl, t1000_101key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TL/2", 0) -COMP( 1988, t1000sl2, ibm5150, 0, t1000sl2, t1000_101key, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SL/2", 0) +COMP( 1987, t1000hx, ibm5150, 0, t1000hx, t1000_90key, tandy1000_state, 0, "Tandy Radio Shack", "Tandy 1000 HX", 0 ) +COMP( 1987, t1000sx, ibm5150, 0, t1000sx, t1000_90key, tandy1000_state, 0, "Tandy Radio Shack", "Tandy 1000 SX", 0 ) +COMP( 1987, t1000tx, ibm5150, 0, t1000tx, t1000_90key, tandy1000_state, 0, "Tandy Radio Shack", "Tandy 1000 TX", 0 ) +COMP( 1989, t1000rl, ibm5150, 0, t1000rl, t1000_101key, tandy1000_state, 0, "Tandy Radio Shack", "Tandy 1000 RL", 0 ) +COMP( 1989, t1000tl2, ibm5150, 0, t1000tl, t1000_101key, tandy1000_state, 0, "Tandy Radio Shack", "Tandy 1000 TL/2", 0 ) +COMP( 1988, t1000sl2, ibm5150, 0, t1000sl2, t1000_101key, tandy1000_state, 0, "Tandy Radio Shack", "Tandy 1000 SL/2", 0 ) diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp index 5220fb7e5a9..486be20b896 100644 --- a/src/mame/drivers/tandy2k.cpp +++ b/src/mame/drivers/tandy2k.cpp @@ -764,7 +764,7 @@ void tandy2k_state::device_reset_after_children() // Machine Driver -static MACHINE_CONFIG_START( tandy2k, tandy2k_state ) +static MACHINE_CONFIG_START( tandy2k ) // basic machine hardware MCFG_CPU_ADD(I80186_TAG, I80186, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(tandy2k_mem) @@ -777,7 +777,7 @@ static MACHINE_CONFIG_START( tandy2k, tandy2k_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate MCFG_SCREEN_SIZE(640, 400) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1) - //MCFG_SCREEN_UPDATE_DEVICE(CRT9021B_TAG, crt9021_t, screen_update) + //MCFG_SCREEN_UPDATE_DEVICE(CRT9021B_TAG, crt9021_device, screen_update) MCFG_SCREEN_UPDATE_DRIVER(tandy2k_state, screen_update) MCFG_PALETTE_ADD_MONOCHROME("palette") @@ -786,9 +786,9 @@ static MACHINE_CONFIG_START( tandy2k, tandy2k_state ) MCFG_DEVICE_ADDRESS_MAP(AS_0, vpac_mem) MCFG_CRT9007_CHARACTER_WIDTH(8) MCFG_CRT9007_INT_CALLBACK(DEVWRITELINE(I8259A_1_TAG, pic8259_device, ir1_w)) - MCFG_CRT9007_VS_CALLBACK(DEVWRITELINE(CRT9021B_TAG, crt9021_t, vsync_w)) + MCFG_CRT9007_VS_CALLBACK(DEVWRITELINE(CRT9021B_TAG, crt9021_device, vsync_w)) MCFG_CRT9007_VLT_CALLBACK(WRITELINE(tandy2k_state, vpac_vlt_w)) - MCFG_CRT9007_CURS_CALLBACK(DEVWRITELINE(CRT9021B_TAG, crt9021_t, cursor_w)) + MCFG_CRT9007_CURS_CALLBACK(DEVWRITELINE(CRT9021B_TAG, crt9021_device, cursor_w)) MCFG_CRT9007_DRB_CALLBACK(WRITELINE(tandy2k_state, vpac_drb_w)) MCFG_CRT9007_WBEN_CALLBACK(WRITELINE(tandy2k_state, vpac_wben_w)) MCFG_CRT9007_CBLANK_CALLBACK(WRITELINE(tandy2k_state, vpac_cblank_w)) @@ -912,6 +912,6 @@ ROM_END // System Drivers -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1983, tandy2k, 0, 0, tandy2k, tandy2k, driver_device, 0, "Tandy Radio Shack", "Tandy 2000", MACHINE_NOT_WORKING ) -COMP( 1983, tandy2khd, tandy2k, 0, tandy2k_hd, tandy2k, driver_device, 0, "Tandy Radio Shack", "Tandy 2000HD", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, tandy2k, 0, 0, tandy2k, tandy2k, tandy2k_state, 0, "Tandy Radio Shack", "Tandy 2000", MACHINE_NOT_WORKING ) +COMP( 1983, tandy2khd, tandy2k, 0, tandy2k_hd, tandy2k, tandy2k_state, 0, "Tandy Radio Shack", "Tandy 2000HD", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/tank8.cpp b/src/mame/drivers/tank8.cpp index 790f5432829..ca612beadeb 100644 --- a/src/mame/drivers/tank8.cpp +++ b/src/mame/drivers/tank8.cpp @@ -326,7 +326,7 @@ static GFXDECODE_START( tank8 ) GFXDECODE_END -static MACHINE_CONFIG_START( tank8, tank8_state ) +static MACHINE_CONFIG_START( tank8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 11055000 / 10) /* ? */ @@ -341,7 +341,7 @@ static MACHINE_CONFIG_START( tank8, tank8_state ) MCFG_SCREEN_SIZE(512, 524) MCFG_SCREEN_VISIBLE_AREA(16, 495, 0, 463) MCFG_SCREEN_UPDATE_DRIVER(tank8_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(tank8_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tank8_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", tank8) @@ -481,8 +481,8 @@ DRIVER_INIT_MEMBER(tank8_state,decode) } -GAME( 1976, tank8, 0, tank8, tank8, driver_device, 0, ROT0, "Atari (Kee Games)", "Tank 8 (set 1)", MACHINE_SUPPORTS_SAVE) +GAME( 1976, tank8, 0, tank8, tank8, tank8_state, 0, ROT0, "Atari (Kee Games)", "Tank 8 (set 1)", MACHINE_SUPPORTS_SAVE) GAME( 1976, tank8a, tank8, tank8, tank8, tank8_state, decode, ROT0, "Atari (Kee Games)", "Tank 8 (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1976, tank8b, tank8, tank8, tank8, tank8_state, decode, ROT0, "Atari (Kee Games)", "Tank 8 (set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1976, tank8c, tank8, tank8, tank8, driver_device, 0, ROT0, "Atari (Kee Games)", "Tank 8 (set 4)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1976, tank8d, tank8, tank8, tank8, driver_device, 0, ROT0, "Atari (Kee Games)", "Tank 8 (set 5)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1976, tank8c, tank8, tank8, tank8, tank8_state, 0, ROT0, "Atari (Kee Games)", "Tank 8 (set 4)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1976, tank8d, tank8, tank8, tank8, tank8_state, 0, ROT0, "Atari (Kee Games)", "Tank 8 (set 5)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tankbatt.cpp b/src/mame/drivers/tankbatt.cpp index fd53ec06a7e..ba260df01cf 100644 --- a/src/mame/drivers/tankbatt.cpp +++ b/src/mame/drivers/tankbatt.cpp @@ -282,7 +282,7 @@ static const char *const tankbatt_sample_names[] = }; -static MACHINE_CONFIG_START( tankbatt, tankbatt_state ) +static MACHINE_CONFIG_START( tankbatt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 1000000) /* 1 MHz ???? */ @@ -348,5 +348,5 @@ ROM_START( tankbattb ) /* board with "NAMCO" removed from gfx1 rom, otherwise id ROM_LOAD( "bct1-1.l3", 0x0000, 0x0100, CRC(d17518bc) SHA1(f3b0deffa586808bc59e9a24ec1699c54ebe84cc) ) // dm74s287n.3l ROM_END -GAME( 1980, tankbatt, 0, tankbatt, tankbatt, driver_device, 0, ROT90, "Namco", "Tank Battalion", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, tankbattb, tankbatt, tankbatt, tankbatt, driver_device, 0, ROT90, "bootleg", "Tank Battalion (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, tankbatt, 0, tankbatt, tankbatt, tankbatt_state, 0, ROT90, "Namco", "Tank Battalion", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, tankbattb, tankbatt, tankbatt, tankbatt, tankbatt_state, 0, ROT90, "bootleg", "Tank Battalion (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tankbust.cpp b/src/mame/drivers/tankbust.cpp index cefbaf8934a..f6159d67440 100644 --- a/src/mame/drivers/tankbust.cpp +++ b/src/mame/drivers/tankbust.cpp @@ -330,7 +330,7 @@ INTERRUPT_GEN_MEMBER(tankbust_state::vblank_irq) device.execute().set_input_line(0, HOLD_LINE); } -static MACHINE_CONFIG_START( tankbust, tankbust_state ) +static MACHINE_CONFIG_START( tankbust ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_14_31818MHz/2) /* Verified on PCB */ @@ -420,4 +420,4 @@ ROM_START( tankbust ) ROM_END -GAME( 1985, tankbust, 0, tankbust, tankbust, driver_device, 0, ROT90, "Valadon Automation", "Tank Busters", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tankbust, 0, tankbust, tankbust, tankbust_state, 0, ROT90, "Valadon Automation", "Tank Busters", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/taotaido.cpp b/src/mame/drivers/taotaido.cpp index 3f5fa1c362b..25fd91b47f9 100644 --- a/src/mame/drivers/taotaido.cpp +++ b/src/mame/drivers/taotaido.cpp @@ -68,6 +68,7 @@ zooming might be wrong #include "cpu/z80/z80.h" #include "cpu/m68000/m68000.h" +#include "machine/vs9209.h" #include "sound/2610intf.h" #include "screen.h" #include "speaker.h" @@ -90,15 +91,18 @@ READ16_MEMBER(taotaido_state::pending_command_r) return m_pending_command; } -WRITE16_MEMBER(taotaido_state::sound_command_w) +WRITE8_MEMBER(taotaido_state::sound_command_w) { - if (ACCESSING_BITS_0_7) - { - m_pending_command = 1; - m_soundlatch->write(space, offset, data & 0xff); - m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); - } + m_pending_command = 1; + m_soundlatch->write(space, offset, data); + m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } + +WRITE8_MEMBER(taotaido_state::unknown_output_w) +{ + // Bits 7, 5, 4 used? +} + static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, taotaido_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgram") // bg ram? @@ -107,21 +111,13 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, taotaido_state ) AM_RANGE(0xfe0000, 0xfeffff) AM_RAM // main ram AM_RANGE(0xffc000, 0xffcfff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette ram AM_RANGE(0xffe000, 0xffe3ff) AM_RAM AM_SHARE("scrollram") // rowscroll / rowselect / scroll ram - AM_RANGE(0xffff80, 0xffff81) AM_READ_PORT("P1") - AM_RANGE(0xffff82, 0xffff83) AM_READ_PORT("P2") - AM_RANGE(0xffff84, 0xffff85) AM_READ_PORT("SYSTEM") - AM_RANGE(0xffff86, 0xffff87) AM_READ_PORT("DSW1") - AM_RANGE(0xffff88, 0xffff89) AM_READ_PORT("DSW2") - AM_RANGE(0xffff8a, 0xffff8b) AM_READ_PORT("DSW3") - AM_RANGE(0xffff8c, 0xffff8d) AM_READONLY // unknown - AM_RANGE(0xffff8e, 0xffff8f) AM_READ_PORT("JP") - AM_RANGE(0xffffa0, 0xffffa1) AM_READ_PORT("P3") // used only by taotaida - AM_RANGE(0xffffa2, 0xffffa3) AM_READ_PORT("P4") // used only by taotaida + AM_RANGE(0xffff80, 0xffff9f) AM_DEVREADWRITE8("io1", vs9209_device, read, write, 0x00ff) + AM_RANGE(0xffffa0, 0xffffbf) AM_DEVREADWRITE8("io2", vs9209_device, read, write, 0x00ff) AM_RANGE(0xffff00, 0xffff0f) AM_WRITE(tileregs_w) AM_RANGE(0xffff10, 0xffff11) AM_WRITENOP // unknown AM_RANGE(0xffff20, 0xffff21) AM_WRITENOP // unknown - flip screen related AM_RANGE(0xffff40, 0xffff47) AM_WRITE(sprite_character_bank_select_w) - AM_RANGE(0xffffc0, 0xffffc1) AM_WRITE(sound_command_w) // seems right + AM_RANGE(0xffffc0, 0xffffc1) AM_WRITE8(sound_command_w, 0x00ff) // seems right AM_RANGE(0xffffe0, 0xffffe1) AM_READ(pending_command_r) // guess - seems to be needed for all the sounds to work ADDRESS_MAP_END @@ -360,7 +356,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( taotaido, taotaido_state ) +static MACHINE_CONFIG_START( taotaido ) MCFG_CPU_ADD("maincpu", M68000, 32000000/2) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", taotaido_state, irq1_line_hold) @@ -370,6 +366,20 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state ) MCFG_CPU_IO_MAP(sound_port_map) /* IRQs are triggered by the YM2610 */ + MCFG_DEVICE_ADD("io1", VS9209, 0) + MCFG_VS9209_IN_PORTA_CB(IOPORT("P1")) + MCFG_VS9209_IN_PORTB_CB(IOPORT("P2")) + MCFG_VS9209_IN_PORTC_CB(IOPORT("SYSTEM")) + MCFG_VS9209_IN_PORTD_CB(IOPORT("DSW1")) + MCFG_VS9209_IN_PORTE_CB(IOPORT("DSW2")) + MCFG_VS9209_IN_PORTF_CB(IOPORT("DSW3")) + MCFG_VS9209_OUT_PORTG_CB(WRITE8(taotaido_state, unknown_output_w)) + MCFG_VS9209_IN_PORTH_CB(IOPORT("JP")) + + MCFG_DEVICE_ADD("io2", VS9209, 0) + MCFG_VS9209_IN_PORTA_CB(IOPORT("P3")) // used only by taotaida + MCFG_VS9209_IN_PORTB_CB(IOPORT("P4")) // used only by taotaida + MCFG_GFXDECODE_ADD("gfxdecode", "palette", taotaido) MCFG_SCREEN_ADD("screen", RASTER) @@ -378,7 +388,7 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(taotaido_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(taotaido_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taotaido_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 0x800) @@ -472,6 +482,6 @@ ROM_START( taotaido3 ) ROM_LOAD( "u15.bin", 0x000000, 0x200000, CRC(e95823e9) SHA1(362583944ad4fdde4f9e29928cf34376c7ad931f) ) ROM_END -GAME( 1993, taotaido, 0, taotaido, taotaido, driver_device, 0, ROT0, "Video System Co.", "Tao Taido (2 button version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1993, taotaidoa,taotaido, taotaido, taotaido6,driver_device, 0, ROT0, "Video System Co.", "Tao Taido (6 button version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // maybe a prototype? has various debug features -GAME( 1993, taotaido3,taotaido, taotaido, taotaido3,driver_device, 0, ROT0, "Video System Co.", "Tao Taido (2/3 button version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, taotaido, 0, taotaido, taotaido, taotaido_state, 0, ROT0, "Video System Co.", "Tao Taido (2 button version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1993, taotaidoa, taotaido, taotaido, taotaido6, taotaido_state, 0, ROT0, "Video System Co.", "Tao Taido (6 button version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // maybe a prototype? has various debug features +GAME( 1993, taotaido3, taotaido, taotaido, taotaido3, taotaido_state, 0, ROT0, "Video System Co.", "Tao Taido (2/3 button version)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tapatune.cpp b/src/mame/drivers/tapatune.cpp index 2ded0fe499c..17038a80aa3 100644 --- a/src/mame/drivers/tapatune.cpp +++ b/src/mame/drivers/tapatune.cpp @@ -509,7 +509,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( tapatune_base, tapatune_state ) +static MACHINE_CONFIG_START( tapatune_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz / 4) MCFG_CPU_PROGRAM_MAP(maincpu_map) @@ -628,8 +628,8 @@ ROM_END * *************************************/ -GAME(1994, tapatune, 0, tapatune, tapatune, driver_device, 0, ROT0, "Moloney Manufacturing Inc. / Creative Electronics and Software", "Tap a Tune", MACHINE_SUPPORTS_SAVE ) +GAME(1994, tapatune, 0, tapatune, tapatune, tapatune_state, 0, ROT0, "Moloney Manufacturing Inc. / Creative Electronics and Software", "Tap a Tune", MACHINE_SUPPORTS_SAVE ) // below appear to be mechanical games with the same Z80 board as the above -GAME(1994, srockbwl, 0, tapatune_base, tapatune, driver_device, 0, ROT0, "Bromley", "Super Rock and Bowl (V1.1)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE ) -GAME(199?, smartoss, 0, tapatune_base, tapatune, driver_device, 0, ROT0, "Smart Industries / Creative Electronics and Software", "Smart Toss 'em / Smartball (Ver 2.0)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE ) +GAME(1994, srockbwl, 0, tapatune_base, tapatune, tapatune_state, 0, ROT0, "Bromley", "Super Rock and Bowl (V1.1)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE ) +GAME(199?, smartoss, 0, tapatune_base, tapatune, tapatune_state, 0, ROT0, "Smart Industries / Creative Electronics and Software", "Smart Toss 'em / Smartball (Ver 2.0)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/targeth.cpp b/src/mame/drivers/targeth.cpp index 6a82c2b6c5f..85b0289eeaf 100644 --- a/src/mame/drivers/targeth.cpp +++ b/src/mame/drivers/targeth.cpp @@ -181,7 +181,7 @@ static INPUT_PORTS_START( targeth ) INPUT_PORTS_END -static MACHINE_CONFIG_START( targeth, targeth_state ) +static MACHINE_CONFIG_START( targeth ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,24000000/2) /* 12 MHz */ @@ -204,7 +204,7 @@ static MACHINE_CONFIG_START( targeth, targeth_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -249,5 +249,5 @@ ROM_START( targetha ) ROM_LOAD( "targeth.c3", 0x080000, 0x080000, CRC(d4c771df) SHA1(7cc0a86ef6aa3d26ab8f19d198f62112bf012870) ) ROM_END -GAME( 1994, targeth, 0, targeth, targeth, driver_device, 0, ROT0, "Gaelco", "Target Hits (ver 1.1)", MACHINE_UNEMULATED_PROTECTION ) -GAME( 1994, targetha, targeth, targeth, targeth, driver_device, 0, ROT0, "Gaelco", "Target Hits (ver 1.0)", MACHINE_UNEMULATED_PROTECTION ) +GAME( 1994, targeth, 0, targeth, targeth, targeth_state, 0, ROT0, "Gaelco", "Target Hits (ver 1.1)", MACHINE_UNEMULATED_PROTECTION ) +GAME( 1994, targetha, targeth, targeth, targeth, targeth_state, 0, ROT0, "Gaelco", "Target Hits (ver 1.0)", MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/tasman.cpp b/src/mame/drivers/tasman.cpp index c2a0e534600..4f1dc486140 100644 --- a/src/mame/drivers/tasman.cpp +++ b/src/mame/drivers/tasman.cpp @@ -633,7 +633,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(kongambl_state::kongambl_vblank) } -static MACHINE_CONFIG_START( kongambl, kongambl_state ) +static MACHINE_CONFIG_START( kongambl ) MCFG_CPU_ADD("maincpu", M68EC020, 25000000) MCFG_CPU_PROGRAM_MAP(kongambl_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kongambl_state, kongambl_vblank, "screen", 0, 1) @@ -816,8 +816,8 @@ DRIVER_INIT_MEMBER(kongambl_state,kingtut) //rom[0x55e40/4] = (rom[0x55e40/4] & 0xffff0000) | 0x4e71; // goes away from the POST } -GAME( 199?, kingtut, 0, kongambl, kongambl, kongambl_state, kingtut, ROT0, "Konami", "King Tut (NSW, Australia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 199?, moneybnk, 0, kongambl, kongambl, driver_device, 0, ROT0, "Konami", "Money In The Bank (NSW, Australia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 199?, dragsphr, 0, kongambl, kongambl, driver_device, 0, ROT0, "Konami", "Dragon Sphere", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 199?, ivorytsk, 0, kongambl, kongambl, driver_device, 0, ROT0, "Konami", "Ivory Tusk", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 199?, vikingt, 0, kongambl, kongambl, driver_device, 0, ROT0, "Konami", "Viking Treasure", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 199?, kingtut, 0, kongambl, kongambl, kongambl_state, kingtut, ROT0, "Konami", "King Tut (NSW, Australia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 199?, moneybnk, 0, kongambl, kongambl, kongambl_state, 0, ROT0, "Konami", "Money In The Bank (NSW, Australia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 199?, dragsphr, 0, kongambl, kongambl, kongambl_state, 0, ROT0, "Konami", "Dragon Sphere", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 199?, ivorytsk, 0, kongambl, kongambl, kongambl_state, 0, ROT0, "Konami", "Ivory Tusk", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 199?, vikingt, 0, kongambl, kongambl, kongambl_state, 0, ROT0, "Konami", "Viking Treasure", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/tatsumi.cpp b/src/mame/drivers/tatsumi.cpp index 768128b7a86..bcc9d4aad5b 100644 --- a/src/mame/drivers/tatsumi.cpp +++ b/src/mame/drivers/tatsumi.cpp @@ -144,6 +144,7 @@ #include "cpu/nec/nec.h" #include "cpu/z80/z80.h" +#include "machine/i8255.h" #include "machine/nvram.h" #include "sound/ym2151.h" #include "screen.h" @@ -183,6 +184,16 @@ WRITE16_MEMBER(tatsumi_state::bigfight_a60000_w) COMBINE_DATA(&m_bigfight_a60000[offset]); } +WRITE16_MEMBER(tatsumi_state::io1_byte_smear_w) +{ + m_io[0]->write(space, offset, data & 0xff); +} + +WRITE16_MEMBER(tatsumi_state::io2_byte_smear_w) +{ + m_io[1]->write(space, offset, data & 0xff); +} + WRITE16_MEMBER(tatsumi_state::cyclwarr_sound_w) { m_soundlatch->write(space, 0, data >> 8); @@ -219,7 +230,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( apache3_v20_map, AS_PROGRAM, 8, tatsumi_state ) AM_RANGE(0x00000, 0x01fff) AM_RAM - AM_RANGE(0x04000, 0x04003) AM_NOP // piu select .. ? + AM_RANGE(0x04000, 0x04003) AM_DEVREADWRITE("ppi", i8255_device, read, write) AM_RANGE(0x06000, 0x06001) AM_READ_PORT("IN0") // esw AM_RANGE(0x08000, 0x08001) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write) AM_RANGE(0x0a000, 0x0a000) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write) @@ -258,7 +269,7 @@ static ADDRESS_MAP_START( roundup5_68000_map, AS_PROGRAM, 16, tatsumi_state ) AM_RANGE(0xa0000, 0xa0fff) AM_RAM AM_SHARE("roundup_r_ram") // Road control data AM_RANGE(0xb0000, 0xb0fff) AM_RAM AM_SHARE("roundup_p_ram") // Road pixel data AM_RANGE(0xc0000, 0xc0fff) AM_RAM AM_SHARE("roundup_l_ram") // Road colour data - AM_RANGE(0xd0002, 0xd0003) AM_WRITE(roundup5_d0000_w) AM_SHARE("ru5_d0000_ram") + AM_RANGE(0xd0000, 0xd0003) AM_WRITE(roundup5_d0000_w) AM_SHARE("ru5_d0000_ram") AM_RANGE(0xe0000, 0xe0001) AM_WRITE(roundup5_e0000_w) AM_SHARE("ru5_e0000_ram") ADDRESS_MAP_END @@ -267,11 +278,8 @@ static ADDRESS_MAP_START( roundup5_z80_map, AS_PROGRAM, 8, tatsumi_state ) AM_RANGE(0xe000, 0xffef) AM_RAM AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write) AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0xfff8, 0xfff8) AM_READ_PORT("IN0") - AM_RANGE(0xfff9, 0xfff9) AM_READ_PORT("IN1") + AM_RANGE(0xfff8, 0xfffb) AM_DEVREADWRITE("ppi", i8255_device, read, write) AM_RANGE(0xfffc, 0xfffc) AM_READ_PORT("STICKX") - AM_RANGE(0xfff9, 0xfff9) AM_WRITENOP //irq ack? - AM_RANGE(0xfffa, 0xfffa) AM_WRITENOP //irq ack? ADDRESS_MAP_END /******************************************************************************/ @@ -288,15 +296,8 @@ static ADDRESS_MAP_START( cyclwarr_68000a_map, AS_PROGRAM, 16, tatsumi_state ) AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w) AM_RANGE(0x0b8000, 0x0b8001) AM_WRITE(cyclwarr_sound_w) - AM_RANGE(0x0b9002, 0x0b9003) AM_READ_PORT("SERVICE") - AM_RANGE(0x0b9004, 0x0b9005) AM_READ_PORT("P1") - AM_RANGE(0x0b9006, 0x0b9007) AM_READ_PORT("P2") - AM_RANGE(0x0b9008, 0x0b9009) AM_READ_PORT("DSW3") - AM_RANGE(0x0ba000, 0x0ba001) AM_READ_PORT("DSW1") - AM_RANGE(0x0ba002, 0x0ba003) AM_READ_PORT("DSW2") - AM_RANGE(0x0ba004, 0x0ba005) AM_READ_PORT("P3") - AM_RANGE(0x0ba006, 0x0ba007) AM_READ_PORT("P4") - AM_RANGE(0x0ba008, 0x0ba009) AM_READWRITE(cyclwarr_control_r, cyclwarr_control_w) + AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREAD8("io1", cxd1095_device, read, 0x00ff) AM_WRITE(io1_byte_smear_w) + AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREAD8("io2", cxd1095_device, read, 0x00ff) AM_WRITE(io2_byte_smear_w) AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_SHARE("spriteram") AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram") AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") @@ -314,15 +315,8 @@ static ADDRESS_MAP_START( cyclwarr_68000b_map, AS_PROGRAM, 16, tatsumi_state ) AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w) AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w) - AM_RANGE(0x0b9002, 0x0b9003) AM_READ_PORT("SERVICE") - AM_RANGE(0x0b9004, 0x0b9005) AM_READ_PORT("P1") - AM_RANGE(0x0b9006, 0x0b9007) AM_READ_PORT("P2") - AM_RANGE(0x0b9008, 0x0b9009) AM_READ_PORT("DSW3") - AM_RANGE(0x0ba000, 0x0ba001) AM_READ_PORT("DSW1") - AM_RANGE(0x0ba002, 0x0ba003) AM_READ_PORT("DSW2") - AM_RANGE(0x0ba004, 0x0ba005) AM_READ_PORT("P3") - AM_RANGE(0x0ba006, 0x0ba007) AM_READ_PORT("P4") - AM_RANGE(0x0ba008, 0x0ba009) AM_READ(cyclwarr_control_r) + AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREAD8("io1", cxd1095_device, read, 0x00ff) AM_WRITE(io1_byte_smear_w) + AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREAD8("io2", cxd1095_device, read, 0x00ff) AM_WRITE(io2_byte_smear_w) AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") @@ -355,15 +349,8 @@ static ADDRESS_MAP_START( bigfight_68000a_map, AS_PROGRAM, 16, tatsumi_state ) AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w) AM_RANGE(0x0b8000, 0x0b8001) AM_WRITE(cyclwarr_sound_w) - AM_RANGE(0x0b9002, 0x0b9003) AM_READ_PORT("SERVICE") - AM_RANGE(0x0b9004, 0x0b9005) AM_READ_PORT("P1") - AM_RANGE(0x0b9006, 0x0b9007) AM_READ_PORT("P2") - AM_RANGE(0x0b9008, 0x0b9009) AM_READ_PORT("DSW3") - AM_RANGE(0x0ba000, 0x0ba001) AM_READ_PORT("DSW1") - AM_RANGE(0x0ba002, 0x0ba003) AM_READ_PORT("DSW2") - AM_RANGE(0x0ba004, 0x0ba005) AM_READ_PORT("P3") - AM_RANGE(0x0ba006, 0x0ba007) AM_READ_PORT("P4") - AM_RANGE(0x0ba008, 0x0ba009) AM_READWRITE(cyclwarr_control_r, cyclwarr_control_w) + AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREAD8("io1", cxd1095_device, read, 0x00ff) AM_WRITE(io1_byte_smear_w) + AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREAD8("io2", cxd1095_device, read, 0x00ff) AM_WRITE(io2_byte_smear_w) AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_SHARE("spriteram") AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram") AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") @@ -379,15 +366,8 @@ static ADDRESS_MAP_START( bigfight_68000b_map, AS_PROGRAM, 16, tatsumi_state ) AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w) AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w) - AM_RANGE(0x0b9002, 0x0b9003) AM_READ_PORT("SERVICE") - AM_RANGE(0x0b9004, 0x0b9005) AM_READ_PORT("P1") - AM_RANGE(0x0b9006, 0x0b9007) AM_READ_PORT("P2") - AM_RANGE(0x0b9008, 0x0b9009) AM_READ_PORT("DSW3") - AM_RANGE(0x0ba000, 0x0ba001) AM_READ_PORT("DSW1") - AM_RANGE(0x0ba002, 0x0ba003) AM_READ_PORT("DSW2") - AM_RANGE(0x0ba004, 0x0ba005) AM_READ_PORT("P3") - AM_RANGE(0x0ba006, 0x0ba007) AM_READ_PORT("P4") - AM_RANGE(0x0ba008, 0x0ba009) AM_READ(cyclwarr_control_r) + AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREAD8("io1", cxd1095_device, read, 0x00ff) AM_WRITE(io1_byte_smear_w) + AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREAD8("io2", cxd1095_device, read, 0x00ff) AM_WRITE(io2_byte_smear_w) AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") @@ -471,14 +451,14 @@ INPUT_PORTS_END static INPUT_PORTS_START( roundup5 ) PORT_START("IN0") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Accelerator") - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Brake") - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("Shift") PORT_TOGGLE - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("Turbo") - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Accelerator") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Brake") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("Shift") PORT_TOGGLE + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("Turbo") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW ) @@ -554,126 +534,126 @@ static INPUT_PORTS_START( cyclwarr ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_START("P1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_START("P2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_START("DSW3") - PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1") - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0000, "Player Select" ) PORT_DIPLOCATION("SW3:2") - PORT_DIPSETTING( 0x0002, "Coin Slot" ) - PORT_DIPSETTING( 0x0000, "Select SW" ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Service_Mode ) ) PORT_DIPLOCATION("SW3:3") - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, "Hardware Test Mode" ) PORT_DIPLOCATION("SW3:4") - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1, 0x1, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1") + PORT_DIPSETTING( 0x1, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0, DEF_STR( On ) ) + PORT_DIPNAME( 0x2, 0x0, "Player Select" ) PORT_DIPLOCATION("SW3:2") + PORT_DIPSETTING( 0x2, "Coin Slot" ) + PORT_DIPSETTING( 0x0, "Select SW" ) + PORT_DIPNAME( 0x4, 0x4, DEF_STR( Service_Mode ) ) PORT_DIPLOCATION("SW3:3") + PORT_DIPSETTING( 0x4, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0, DEF_STR( On ) ) + PORT_DIPNAME( 0x8, 0x8, "Hardware Test Mode" ) PORT_DIPLOCATION("SW3:4") + PORT_DIPSETTING( 0x8, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0, DEF_STR( On ) ) PORT_START("DSW1") - PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4") - PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0005, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( 3C_2C ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( 4C_3C ) ) - PORT_DIPSETTING( 0x000f, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0003, DEF_STR( 3C_4C ) ) - PORT_DIPSETTING( 0x0007, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x000e, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0006, DEF_STR( 2C_5C ) ) - PORT_DIPSETTING( 0x000d, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x000c, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x000b, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x000a, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x0009, DEF_STR( 1C_7C ) ) - PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8") - PORT_DIPSETTING( 0x0000, DEF_STR( 6C_1C ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0050, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( 3C_2C ) ) - PORT_DIPSETTING( 0x00f0, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0030, DEF_STR( 3C_4C ) ) - PORT_DIPSETTING( 0x0070, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x00e0, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0060, DEF_STR( 2C_5C ) ) - PORT_DIPSETTING( 0x00d0, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x00b0, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x00a0, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x0090, DEF_STR( 1C_7C ) ) + PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4") + PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ) ) + PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ) ) + PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) ) + PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) ) + PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ) ) + PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8") + PORT_DIPSETTING( 0x00, DEF_STR( 6C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x50, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 3C_2C ) ) + PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 3C_4C ) ) + PORT_DIPSETTING( 0x70, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x60, DEF_STR( 2C_5C ) ) + PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) ) + PORT_DIPSETTING( 0x90, DEF_STR( 1C_7C ) ) PORT_START("DSW2") - PORT_DIPNAME( 0x0003, 0x0002, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") - PORT_DIPSETTING( 0x0000, "5" ) - PORT_DIPSETTING( 0x0001, "3" ) - PORT_DIPSETTING( 0x0002, "2" ) - PORT_DIPSETTING( 0x0003, "1" ) - PORT_DIPNAME( 0x0004, 0x0004, "Ticket Dispenser" ) PORT_DIPLOCATION("SW2:3") - PORT_DIPSETTING( 0x0004, "10000" ) - PORT_DIPSETTING( 0x0000, "15000" ) - PORT_DIPNAME( 0x0018, 0x0000, "Machine Type" ) PORT_DIPLOCATION("SW2:4,5") - PORT_DIPSETTING( 0x0000, "2 Players" ) - PORT_DIPSETTING( 0x0008, "2 Players" ) - PORT_DIPSETTING( 0x0010, "3 Players" ) - PORT_DIPSETTING( 0x0018, "4 Players" ) - PORT_DIPNAME( 0x0060, 0x0060, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,7") - PORT_DIPSETTING( 0x0000, DEF_STR( Very_Hard ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x0060, DEF_STR( Normal ) ) - PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPSETTING( 0x01, "3" ) + PORT_DIPSETTING( 0x02, "2" ) + PORT_DIPSETTING( 0x03, "1" ) + PORT_DIPNAME( 0x04, 0x04, "Ticket Dispenser" ) PORT_DIPLOCATION("SW2:3") + PORT_DIPSETTING( 0x04, "10000" ) + PORT_DIPSETTING( 0x00, "15000" ) + PORT_DIPNAME( 0x18, 0x00, "Machine Type" ) PORT_DIPLOCATION("SW2:4,5") + PORT_DIPSETTING( 0x00, "2 Players" ) + PORT_DIPSETTING( 0x08, "2 Players" ) + PORT_DIPSETTING( 0x10, "3 Players" ) + PORT_DIPSETTING( 0x18, "4 Players" ) + PORT_DIPNAME( 0x60, 0x60, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,7") + PORT_DIPSETTING( 0x00, DEF_STR( Very_Hard ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x60, DEF_STR( Normal ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8") + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("P3") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START3 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START3 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) PORT_START("P4") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START4 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START4 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4) INPUT_PORTS_END static INPUT_PORTS_START( cyclwarb ) PORT_INCLUDE(cyclwarr) PORT_MODIFY("DSW3") - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:4") - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8, 0x8, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:4") + PORT_DIPSETTING( 0x8, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( bigfight ) @@ -688,118 +668,118 @@ static INPUT_PORTS_START( bigfight ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_START("P1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_START("P2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_START("DSW3") - PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1") - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0000, "Player Select" ) PORT_DIPLOCATION("SW3:2") - PORT_DIPSETTING( 0x0002, "Coin Slot" ) - PORT_DIPSETTING( 0x0000, "Select SW" ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Service_Mode ) ) PORT_DIPLOCATION("SW3:3") - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, "Hardware Test Mode" ) PORT_DIPLOCATION("SW3:4") - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1, 0x1, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1") + PORT_DIPSETTING( 0x1, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0, DEF_STR( On ) ) + PORT_DIPNAME( 0x2, 0x0, "Player Select" ) PORT_DIPLOCATION("SW3:2") + PORT_DIPSETTING( 0x2, "Coin Slot" ) + PORT_DIPSETTING( 0x0, "Select SW" ) + PORT_DIPNAME( 0x4, 0x4, DEF_STR( Service_Mode ) ) PORT_DIPLOCATION("SW3:3") + PORT_DIPSETTING( 0x4, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0, DEF_STR( On ) ) + PORT_DIPNAME( 0x8, 0x8, "Hardware Test Mode" ) PORT_DIPLOCATION("SW3:4") + PORT_DIPSETTING( 0x8, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0, DEF_STR( On ) ) PORT_START("DSW1") - PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4") - PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0005, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( 3C_2C ) ) - PORT_DIPSETTING( 0x0001, DEF_STR( 4C_3C ) ) - PORT_DIPSETTING( 0x000f, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0003, DEF_STR( 3C_4C ) ) - PORT_DIPSETTING( 0x0007, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x000e, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0006, DEF_STR( 2C_5C ) ) - PORT_DIPSETTING( 0x000d, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x000c, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x000b, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x000a, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x0009, DEF_STR( 1C_7C ) ) - PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8") - PORT_DIPSETTING( 0x0000, DEF_STR( 6C_1C ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0050, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( 3C_2C ) ) - PORT_DIPSETTING( 0x00f0, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x0030, DEF_STR( 3C_4C ) ) - PORT_DIPSETTING( 0x0070, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x00e0, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0060, DEF_STR( 2C_5C ) ) - PORT_DIPSETTING( 0x00d0, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x00b0, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x00a0, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x0090, DEF_STR( 1C_7C ) ) + PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4") + PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ) ) + PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ) ) + PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) ) + PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) ) + PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ) ) + PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8") + PORT_DIPSETTING( 0x00, DEF_STR( 6C_1C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x50, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 3C_2C ) ) + PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 3C_4C ) ) + PORT_DIPSETTING( 0x70, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x60, DEF_STR( 2C_5C ) ) + PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) ) + PORT_DIPSETTING( 0x90, DEF_STR( 1C_7C ) ) PORT_START("DSW2") - PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") - PORT_DIPSETTING( 0x0000, "1" ) - PORT_DIPSETTING( 0x0003, "2" ) - PORT_DIPSETTING( 0x0002, "3" ) - PORT_DIPSETTING( 0x0001, "4" ) - PORT_DIPNAME( 0x0004, 0x0004, "Ticket Dispenser" ) PORT_DIPLOCATION("SW2:3") - PORT_DIPSETTING( 0x0004, "100000" ) - PORT_DIPSETTING( 0x0000, "150000" ) - PORT_DIPNAME( 0x0008, 0x0008, "Continue Coin" ) PORT_DIPLOCATION("SW2:4") - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, "Extend" ) PORT_DIPLOCATION("SW2:5") - PORT_DIPSETTING( 0x0010, "100000" ) - PORT_DIPSETTING( 0x0000, DEF_STR( None ) ) - PORT_DIPNAME( 0x0060, 0x0060, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,7") - PORT_DIPSETTING( 0x0000, DEF_STR( Very_Hard ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x0060, DEF_STR( Normal ) ) - PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x03, "2" ) + PORT_DIPSETTING( 0x02, "3" ) + PORT_DIPSETTING( 0x01, "4" ) + PORT_DIPNAME( 0x04, 0x04, "Ticket Dispenser" ) PORT_DIPLOCATION("SW2:3") + PORT_DIPSETTING( 0x04, "100000" ) + PORT_DIPSETTING( 0x00, "150000" ) + PORT_DIPNAME( 0x08, 0x08, "Continue Coin" ) PORT_DIPLOCATION("SW2:4") + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, "Extend" ) PORT_DIPLOCATION("SW2:5") + PORT_DIPSETTING( 0x10, "100000" ) + PORT_DIPSETTING( 0x00, DEF_STR( None ) ) + PORT_DIPNAME( 0x60, 0x60, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,7") + PORT_DIPSETTING( 0x00, DEF_STR( Very_Hard ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x60, DEF_STR( Normal ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8") + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("P3") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START3 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START3 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3) PORT_START("P4") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START4 ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START4 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4) INPUT_PORTS_END /******************************************************************************/ @@ -862,7 +842,7 @@ MACHINE_RESET_MEMBER(tatsumi_state,apache3) } -static MACHINE_CONFIG_START( apache3, tatsumi_state ) +static MACHINE_CONFIG_START( apache3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, CLOCK_1 / 2) @@ -884,6 +864,8 @@ static MACHINE_CONFIG_START( apache3, tatsumi_state ) MCFG_NVRAM_ADD_0FILL("nvram") MCFG_MACHINE_RESET_OVERRIDE(tatsumi_state,apache3) + MCFG_DEVICE_ADD("ppi", I8255, 0) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(CLOCK_2 / 8, 400, 0, 320, 280, 0, 240) // TODO: Hook up CRTC @@ -911,12 +893,12 @@ static MACHINE_CONFIG_START( apache3, tatsumi_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki", CLOCK_1 / 4 / 2, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", CLOCK_1 / 4 / 2, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( roundup5, tatsumi_state ) +static MACHINE_CONFIG_START( roundup5 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, CLOCK_1 / 2) @@ -931,6 +913,10 @@ static MACHINE_CONFIG_START( roundup5, tatsumi_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + MCFG_DEVICE_ADD("ppi", I8255, 0) + MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) + MCFG_I8255_IN_PORTB_CB(IOPORT("IN1")) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -955,12 +941,12 @@ static MACHINE_CONFIG_START( roundup5, tatsumi_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki", CLOCK_1 / 4 / 2, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", CLOCK_1 / 4 / 2, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cyclwarr, tatsumi_state ) +static MACHINE_CONFIG_START( cyclwarr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CLOCK_2 / 4) @@ -976,6 +962,19 @@ static MACHINE_CONFIG_START( cyclwarr, tatsumi_state ) MCFG_QUANTUM_TIME(attotime::from_hz(12000)) + MCFG_DEVICE_ADD("io1", CXD1095, 0) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("SERVICE")) + MCFG_CXD1095_IN_PORTC_CB(IOPORT("P1")) + MCFG_CXD1095_IN_PORTD_CB(IOPORT("P2")) + MCFG_CXD1095_IN_PORTE_CB(IOPORT("DSW3")) + + MCFG_DEVICE_ADD("io2", CXD1095, 0) + MCFG_CXD1095_IN_PORTA_CB(IOPORT("DSW1")) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("DSW2")) + MCFG_CXD1095_IN_PORTC_CB(IOPORT("P3")) + MCFG_CXD1095_IN_PORTD_CB(IOPORT("P4")) + MCFG_CXD1095_OUT_PORTE_CB(WRITE8(tatsumi_state, cyclwarr_control_w)) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1000,12 +999,12 @@ static MACHINE_CONFIG_START( cyclwarr, tatsumi_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki", CLOCK_1 / 8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", CLOCK_1 / 8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bigfight, tatsumi_state ) +static MACHINE_CONFIG_START( bigfight ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CLOCK_2 / 4) @@ -1021,6 +1020,19 @@ static MACHINE_CONFIG_START( bigfight, tatsumi_state ) MCFG_QUANTUM_TIME(attotime::from_hz(12000)) + MCFG_DEVICE_ADD("io1", CXD1095, 0) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("SERVICE")) + MCFG_CXD1095_IN_PORTC_CB(IOPORT("P1")) + MCFG_CXD1095_IN_PORTD_CB(IOPORT("P2")) + MCFG_CXD1095_IN_PORTE_CB(IOPORT("DSW3")) + + MCFG_DEVICE_ADD("io2", CXD1095, 0) + MCFG_CXD1095_IN_PORTA_CB(IOPORT("DSW1")) + MCFG_CXD1095_IN_PORTB_CB(IOPORT("DSW2")) + MCFG_CXD1095_IN_PORTC_CB(IOPORT("P3")) + MCFG_CXD1095_IN_PORTD_CB(IOPORT("P4")) + MCFG_CXD1095_OUT_PORTE_CB(WRITE8(tatsumi_state, cyclwarr_control_w)) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1045,7 +1057,7 @@ static MACHINE_CONFIG_START( bigfight, tatsumi_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki", CLOCK_1 / 8 / 2, OKIM6295_PIN7_HIGH) /* 2MHz was too fast. Can the clock be software controlled? */ + MCFG_OKIM6295_ADD("oki", CLOCK_1 / 8 / 2, PIN7_HIGH) /* 2MHz was too fast. Can the clock be software controlled? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) MACHINE_CONFIG_END diff --git a/src/mame/drivers/tattack.cpp b/src/mame/drivers/tattack.cpp index cf981a9cdff..91d59a71f9a 100644 --- a/src/mame/drivers/tattack.cpp +++ b/src/mame/drivers/tattack.cpp @@ -226,7 +226,7 @@ PALETTE_INIT_MEMBER(tattack_state, tattack) } -static MACHINE_CONFIG_START( tattack, tattack_state ) +static MACHINE_CONFIG_START( tattack ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 8000000 / 2) /* 4 MHz ? */ diff --git a/src/mame/drivers/tavernie.cpp b/src/mame/drivers/tavernie.cpp index 2de47b6e89c..703b31c9226 100644 --- a/src/mame/drivers/tavernie.cpp +++ b/src/mame/drivers/tavernie.cpp @@ -92,7 +92,7 @@ public: DECLARE_WRITE8_MEMBER(pb_w); DECLARE_WRITE8_MEMBER(pa_ivg_w); DECLARE_READ8_MEMBER(pb_ivg_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE8_MEMBER(ds_w); DECLARE_MACHINE_RESET(cpu09); DECLARE_MACHINE_RESET(ivg09); @@ -105,7 +105,7 @@ private: optional_shared_ptr m_p_videoram; required_device m_cass; optional_device m_pia_ivg; - optional_device m_fdc; + optional_device m_fdc; optional_device m_floppy0; optional_device m_beep; required_device m_maincpu; @@ -132,7 +132,7 @@ static ADDRESS_MAP_START(ivg09_mem, AS_PROGRAM, 8, tavernie_state) AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pia_ivg", pia6821_device, read, write) AM_RANGE(0x2080, 0x2080) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) AM_RANGE(0x2081, 0x2081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("fdc", fd1795_t, read, write) + AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("fdc", fd1795_device, read, write) AM_RANGE(0xe080, 0xe080) AM_WRITE(ds_w) AM_RANGE(0xeb00, 0xeb03) AM_DEVREADWRITE("pia", pia6821_device, read, write) AM_RANGE(0xeb04, 0xeb04) AM_DEVREADWRITE("acia", acia6850_device, status_r, control_w) @@ -284,7 +284,7 @@ WRITE8_MEMBER( tavernie_state::pa_ivg_w ) // bits 0-3 are attribute bits } -WRITE8_MEMBER( tavernie_state::kbd_put ) +void tavernie_state::kbd_put(u8 data) { m_term_data = data; m_pia_ivg->cb1_w(0); @@ -297,7 +297,7 @@ WRITE_LINE_MEMBER( tavernie_state::write_acia_clock ) m_acia->write_rxc(state); } -static MACHINE_CONFIG_START( cpu09, tavernie_state ) +static MACHINE_CONFIG_START( cpu09 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6809E, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(cpu09_mem) @@ -359,7 +359,7 @@ static MACHINE_CONFIG_DERIVED( ivg09, cpu09 ) /* Devices */ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(tavernie_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(tavernie_state, kbd_put)) MCFG_MC6845_ADD("crtc", MC6845, "screen", 1008000) // unknown clock MCFG_MC6845_SHOW_BORDER_AREA(false) @@ -396,6 +396,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, cpu09, 0, 0, cpu09, cpu09, driver_device, 0, "C. Tavernier", "CPU09", MACHINE_NOT_WORKING ) -COMP( 1983, ivg09, cpu09, 0, ivg09, ivg09, driver_device, 0, "C. Tavernier", "CPU09 with IVG09 and IFD09", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, cpu09, 0, 0, cpu09, cpu09, tavernie_state, 0, "C. Tavernier", "CPU09", MACHINE_NOT_WORKING ) +COMP( 1983, ivg09, cpu09, 0, ivg09, ivg09, tavernie_state, 0, "C. Tavernier", "CPU09 with IVG09 and IFD09", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/taxidriv.cpp b/src/mame/drivers/taxidriv.cpp index b36d5dcfae8..eefc733634c 100644 --- a/src/mame/drivers/taxidriv.cpp +++ b/src/mame/drivers/taxidriv.cpp @@ -330,7 +330,7 @@ PALETTE_INIT_MEMBER(taxidriv_state, taxidriv) } } -static MACHINE_CONFIG_START( taxidriv, taxidriv_state ) +static MACHINE_CONFIG_START( taxidriv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,4000000) /* 4 MHz ??? */ @@ -448,4 +448,4 @@ ROM_START( taxidriv ) ROM_END -GAME( 1984, taxidriv, 0, taxidriv, taxidriv, driver_device, 0, ROT90, "Graphic Techno", "Taxi Driver", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, taxidriv, 0, taxidriv, taxidriv, taxidriv_state, 0, ROT90, "Graphic Techno", "Taxi Driver", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tb303.cpp b/src/mame/drivers/tb303.cpp index ceafffa8c73..27826b6288d 100644 --- a/src/mame/drivers/tb303.cpp +++ b/src/mame/drivers/tb303.cpp @@ -246,7 +246,7 @@ void tb303_state::machine_start() save_item(NAME(m_ram_we)); } -static MACHINE_CONFIG_START( tb303, tb303_state ) +static MACHINE_CONFIG_START( tb303 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D650, TP2_HZ) @@ -286,4 +286,4 @@ ROM_START( tb303 ) ROM_END -CONS( 1982, tb303, 0, 0, tb303, tb303, driver_device, 0, "Roland", "TB-303 Bass Line", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 1982, tb303, 0, 0, tb303, tb303, tb303_state, 0, "Roland", "TB-303 Bass Line", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tbowl.cpp b/src/mame/drivers/tbowl.cpp index f7ff8bbbb5c..5108bf8c9ff 100644 --- a/src/mame/drivers/tbowl.cpp +++ b/src/mame/drivers/tbowl.cpp @@ -437,7 +437,7 @@ void tbowl_state::machine_reset() m_adpcm_data[0] = m_adpcm_data[1] = -1; } -static MACHINE_CONFIG_START( tbowl, tbowl_state ) +static MACHINE_CONFIG_START( tbowl ) /* CPU on Board '6206B' */ MCFG_CPU_ADD("maincpu", Z80, 8000000) /* NEC D70008AC-8 (Z80 Clone) */ @@ -496,12 +496,12 @@ static MACHINE_CONFIG_START( tbowl, tbowl_state ) /* something for the samples? */ MCFG_SOUND_ADD("msm1", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(tbowl_state, adpcm_int_1)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("msm2", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(tbowl_state, adpcm_int_2)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -709,6 +709,6 @@ ROM_START( tbowlj ) ROM_LOAD( "6206a.2", 0x10000, 0x10000, CRC(1e9e5936) SHA1(60370d1de28b1c5ffeff7843702aaddb19ff1f58) ) ROM_END -GAME( 1987, tbowl, 0, tbowl, tbowl, driver_device, 0, ROT0, "Tecmo", "Tecmo Bowl (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, tbowlp, tbowl, tbowl, tbowl, driver_device, 0, ROT0, "Tecmo", "Tecmo Bowl (World, prototype?)", MACHINE_SUPPORTS_SAVE ) // or early version, handwritten labels -GAME( 1987, tbowlj, tbowl, tbowl, tbowlj, driver_device, 0, ROT0, "Tecmo", "Tecmo Bowl (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, tbowl, 0, tbowl, tbowl, tbowl_state, 0, ROT0, "Tecmo", "Tecmo Bowl (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, tbowlp, tbowl, tbowl, tbowl, tbowl_state, 0, ROT0, "Tecmo", "Tecmo Bowl (World, prototype?)", MACHINE_SUPPORTS_SAVE ) // or early version, handwritten labels +GAME( 1987, tbowlj, tbowl, tbowl, tbowlj, tbowl_state, 0, ROT0, "Tecmo", "Tecmo Bowl (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tceptor.cpp b/src/mame/drivers/tceptor.cpp index 4a6a51709cf..946378cdabe 100644 --- a/src/mame/drivers/tceptor.cpp +++ b/src/mame/drivers/tceptor.cpp @@ -344,7 +344,7 @@ void tceptor_state::machine_reset() /*******************************************************************/ -static MACHINE_CONFIG_START( tceptor, tceptor_state ) +static MACHINE_CONFIG_START( tceptor ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 49152000/32) @@ -404,7 +404,7 @@ static MACHINE_CONFIG_START( tceptor, tceptor_state ) MCFG_SCREEN_SIZE(38*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0) MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor_3d_right) - MCFG_SCREEN_VBLANK_DRIVER(tceptor_state, screen_eof_tceptor) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tceptor_state, screen_vblank_tceptor)) MCFG_SCREEN_PALETTE("palette") @@ -542,6 +542,6 @@ ROM_START( tceptor2 ) ROM_END -/* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME ) */ -GAME ( 1986, tceptor, 0, tceptor, tceptor, driver_device, 0, ROT0, "Namco", "Thunder Ceptor", 0) -GAMEL( 1986, tceptor2, tceptor, tceptor, tceptor2, driver_device, 0, ROT0, "Namco", "Thunder Ceptor II", 0, layout_tceptor2) +// ( YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS ) +GAME ( 1986, tceptor, 0, tceptor, tceptor, tceptor_state, 0, ROT0, "Namco", "Thunder Ceptor", 0) +GAMEL( 1986, tceptor2, tceptor, tceptor, tceptor2, tceptor_state, 0, ROT0, "Namco", "Thunder Ceptor II", 0, layout_tceptor2) diff --git a/src/mame/drivers/tcl.cpp b/src/mame/drivers/tcl.cpp index 9b64631fb91..e97a409d942 100644 --- a/src/mame/drivers/tcl.cpp +++ b/src/mame/drivers/tcl.cpp @@ -92,22 +92,26 @@ static const gfx_layout charlayout = static const gfx_layout charlayout2 = { - 8,8, + 8,32, RGN_FRAC(1,4), 4, - { 0, RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4)}, + { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, + 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8, + 16*8,17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8, + 24*8,25*8, 26*8, 27*8, 28*8, 29*8, 30*8, 31*8 + }, + 32*8 }; static GFXDECODE_START( tcl ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 ) - GFXDECODE_ENTRY( "gfx2", 0, charlayout2, 0, 16 ) /* wrong */ + GFXDECODE_ENTRY( "gfx2", 0, charlayout2, 128, 4 ) GFXDECODE_END -static MACHINE_CONFIG_START( tcl, tcl_state ) +static MACHINE_CONFIG_START( tcl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/4) diff --git a/src/mame/drivers/tdv2324.cpp b/src/mame/drivers/tdv2324.cpp index 1e7d5c4f792..36be7f125da 100644 --- a/src/mame/drivers/tdv2324.cpp +++ b/src/mame/drivers/tdv2324.cpp @@ -257,7 +257,7 @@ SLOT_INTERFACE_END // MACHINE_CONFIG( tdv2324 ) //------------------------------------------------- -static MACHINE_CONFIG_START( tdv2324, tdv2324_state ) +static MACHINE_CONFIG_START( tdv2324 ) // basic system hardware MCFG_CPU_ADD(P8085AH_0_TAG, I8085A, 8700000/2) // ??? MCFG_CPU_PROGRAM_MAP(tdv2324_mem) @@ -349,5 +349,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1983, tdv2324, 0, 0, tdv2324, tdv2324, driver_device, 0, "Tandberg", "TDV 2324", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, tdv2324, 0, 0, tdv2324, tdv2324, tdv2324_state, 0, "Tandberg", "TDV 2324", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/tec1.cpp b/src/mame/drivers/tec1.cpp index c305b936050..1425c2b85db 100644 --- a/src/mame/drivers/tec1.cpp +++ b/src/mame/drivers/tec1.cpp @@ -402,7 +402,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( tec1, tec1_state ) +static MACHINE_CONFIG_START( tec1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 1000000) /* speed can be varied between 250kHz and 2MHz */ MCFG_CPU_PROGRAM_MAP(tec1_map) @@ -417,7 +417,7 @@ static MACHINE_CONFIG_START( tec1, tec1_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tecjmon, tec1_state ) +static MACHINE_CONFIG_START( tecjmon ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz / 2) MCFG_CPU_PROGRAM_MAP(tecjmon_map) @@ -460,6 +460,6 @@ ROM_START(tecjmon) ROM_LOAD("util.rom", 0x3800, 0x0800, CRC(7c19700d) SHA1(dc5b3ade66bb11c54430056966ed99cdd299d82b) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1984, tec1, 0, 0, tec1, tec1, driver_device, 0, "Talking Electronics magazine", "TEC-1" , 0 ) -COMP( 1984, tecjmon, tec1, 0, tecjmon, tec1, driver_device, 0, "Talking Electronics magazine", "TEC-1A with JMON" , 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, tec1, 0, 0, tec1, tec1, tec1_state, 0, "Talking Electronics magazine", "TEC-1", 0 ) +COMP( 1984, tecjmon, tec1, 0, tecjmon, tec1, tec1_state, 0, "Talking Electronics magazine", "TEC-1A with JMON", 0 ) diff --git a/src/mame/drivers/techno.cpp b/src/mame/drivers/techno.cpp index bff00d4321d..9bc7018fe1f 100644 --- a/src/mame/drivers/techno.cpp +++ b/src/mame/drivers/techno.cpp @@ -244,7 +244,7 @@ void techno_state::machine_reset() m_digit = 0; } -static MACHINE_CONFIG_START( techno, techno_state ) +static MACHINE_CONFIG_START( techno ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(techno_map) @@ -276,5 +276,5 @@ ROM_START(spcteam) ROM_RELOAD(0, 0x8000) ROM_END -GAME(1987, xforce, 0, techno, techno, driver_device, 0, ROT0, "Tecnoplay", "X Force", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1988, spcteam, 0, techno, techno, driver_device, 0, ROT0, "Tecnoplay", "Space Team", MACHINE_IS_SKELETON_MECHANICAL) // needs correct layout +GAME(1987, xforce, 0, techno, techno, techno_state, 0, ROT0, "Tecnoplay", "X Force", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1988, spcteam, 0, techno, techno, techno_state, 0, ROT0, "Tecnoplay", "Space Team", MACHINE_IS_SKELETON_MECHANICAL) // needs correct layout diff --git a/src/mame/drivers/tecmo.cpp b/src/mame/drivers/tecmo.cpp index f06f31e2d96..6c34ab57213 100644 --- a/src/mame/drivers/tecmo.cpp +++ b/src/mame/drivers/tecmo.cpp @@ -632,7 +632,7 @@ void tecmo_state::machine_reset() m_adpcm_data = -1; } -static MACHINE_CONFIG_START( rygar, tecmo_state ) +static MACHINE_CONFIG_START( rygar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4) /* verified on pcb */ @@ -668,7 +668,7 @@ static MACHINE_CONFIG_START( rygar, tecmo_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb, even if schematics shows a 384khz resonator */ MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -1173,12 +1173,12 @@ DRIVER_INIT_MEMBER(tecmo_state,backfirt) -GAME( 1986, rygar, 0, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, rygar2, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, rygar3, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 3 Old Version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, rygarj, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Argus no Senshi (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", MACHINE_SUPPORTS_SAVE ) /* Japan regional warning screen */ -GAME( 1987, geminib, gemini, geminib, gemini, tecmo_state, gemini, ROT90, "bootleg", "Gemini Wing (bootleg)", MACHINE_SUPPORTS_SAVE ) /* Japan regional warning screen */ -GAME( 1988, silkworm, 0, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (World)", MACHINE_SUPPORTS_SAVE ) /* No regional "Warning, if you are playing ..." screen */ -GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (Japan)", MACHINE_SUPPORTS_SAVE ) /* Japan regional warning screen */ -GAME( 1988, backfirt, 0, backfirt, backfirt, tecmo_state, backfirt, ROT0, "Tecmo", "Back Fire (Tecmo, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rygar, 0, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rygar2, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rygar3, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 3 Old Version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, rygarj, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Argus no Senshi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", MACHINE_SUPPORTS_SAVE ) // Japan regional warning screen +GAME( 1987, geminib, gemini, geminib, gemini, tecmo_state, gemini, ROT90, "bootleg", "Gemini Wing (bootleg)", MACHINE_SUPPORTS_SAVE ) // Japan regional warning screen +GAME( 1988, silkworm, 0, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (World)", MACHINE_SUPPORTS_SAVE ) // No regional "Warning, if you are playing ..." screen +GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (Japan)", MACHINE_SUPPORTS_SAVE ) // Japan regional warning screen +GAME( 1988, backfirt, 0, backfirt, backfirt, tecmo_state, backfirt, ROT0, "Tecmo", "Back Fire (Tecmo, bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tecmo16.cpp b/src/mame/drivers/tecmo16.cpp index 86b2cb1ba9c..3899058c3cc 100644 --- a/src/mame/drivers/tecmo16.cpp +++ b/src/mame/drivers/tecmo16.cpp @@ -369,7 +369,7 @@ GFXDECODE_END #define MASTER_CLOCK XTAL_24MHz #define OKI_CLOCK XTAL_8MHz -static MACHINE_CONFIG_START( fstarfrc, tecmo16_state ) +static MACHINE_CONFIG_START( fstarfrc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,MASTER_CLOCK/2) /* 12MHz */ @@ -414,7 +414,7 @@ static MACHINE_CONFIG_START( fstarfrc, tecmo16_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) - MCFG_OKIM6295_ADD("oki", OKI_CLOCK/8, OKIM6295_PIN7_HIGH) // sample rate 1 MHz / 132 + MCFG_OKIM6295_ADD("oki", OKI_CLOCK/8, PIN7_HIGH) // sample rate 1 MHz / 132 MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) MACHINE_CONFIG_END @@ -636,7 +636,7 @@ ROM_END /******************************************************************************/ -GAME( 1992, fstarfrc, 0, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, riot, 0, riot, riot, driver_device, 0, ROT0, "NMK", "Riot", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, ginkun, 0, ginkun, ginkun, driver_device, 0, ROT0, "Tecmo", "Ganbare Ginkun", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fstarfrc, 0, fstarfrc, fstarfrc, tecmo16_state, 0, ROT90, "Tecmo", "Final Star Force (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, tecmo16_state, 0, ROT90, "Tecmo", "Final Star Force (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, riot, 0, riot, riot, tecmo16_state, 0, ROT0, "NMK", "Riot", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, ginkun, 0, ginkun, ginkun, tecmo16_state, 0, ROT0, "Tecmo", "Ganbare Ginkun", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tecmosys.cpp b/src/mame/drivers/tecmosys.cpp index 6c9e5a7c88d..4495702ce73 100644 --- a/src/mame/drivers/tecmosys.cpp +++ b/src/mame/drivers/tecmosys.cpp @@ -443,7 +443,7 @@ void tecmosys_state::machine_start() save_item(NAME(m_device_value)); } -static MACHINE_CONFIG_START( deroon, tecmosys_state ) +static MACHINE_CONFIG_START( deroon ) MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", tecmosys_state, irq1_line_hold) @@ -486,7 +486,7 @@ static MACHINE_CONFIG_START( deroon, tecmosys_state ) MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) MCFG_SOUND_ROUTE(3, "rspeaker", 1.00) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) @@ -665,6 +665,6 @@ DRIVER_INIT_MEMBER(tecmosys_state,tkdensha) prot_init(2); } -GAME( 1995, deroon, 0, deroon, deroon, tecmosys_state, deroon, ROT0, "Tecmo", "Deroon DeroDero", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, deroon, 0, deroon, deroon, tecmosys_state, deroon, ROT0, "Tecmo", "Deroon DeroDero", MACHINE_SUPPORTS_SAVE ) GAME( 1996, tkdensho, 0, deroon, deroon, tecmosys_state, tkdensho, ROT0, "Tecmo", "Toukidenshou - Angel Eyes (VER. 960614)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, tkdenshoa, tkdensho, deroon, deroon, tecmosys_state, tkdensha, ROT0, "Tecmo", "Toukidenshou - Angel Eyes (VER. 960427)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tecnbras.cpp b/src/mame/drivers/tecnbras.cpp index 0d566901141..9a4a2f10b05 100644 --- a/src/mame/drivers/tecnbras.cpp +++ b/src/mame/drivers/tecnbras.cpp @@ -99,7 +99,7 @@ void tecnbras_state::machine_reset() { } -static MACHINE_CONFIG_START( tecnbras, tecnbras_state ) +static MACHINE_CONFIG_START( tecnbras ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C31, XTAL_12MHz) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(i80c31_prg) @@ -129,5 +129,5 @@ ROM_START( tecnbras ) ROM_LOAD( "tecnbras.u2", 0x0000, 0x8000, CRC(1a1e18fc) SHA1(8907e72f0356a2e2e1097dabac6d6b0b3d717f85) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 200?, tecnbras, 0, 0, tecnbras, 0, tecnbras_state, tecnbras, "Tecnbras", "Dot Matrix Display (70x7 pixels)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 200?, tecnbras, 0, 0, tecnbras, 0, tecnbras_state, tecnbras, "Tecnbras", "Dot Matrix Display (70x7 pixels)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/tehkanwc.cpp b/src/mame/drivers/tehkanwc.cpp index 9c6eba4621d..d2520dfa171 100644 --- a/src/mame/drivers/tehkanwc.cpp +++ b/src/mame/drivers/tehkanwc.cpp @@ -102,6 +102,8 @@ TO DO : void tehkanwc_state::machine_start() { + m_reset_timer = timer_alloc(TIMER_RESET); + save_item(NAME(m_track0)); save_item(NAME(m_track1)); save_item(NAME(m_msm_data_offs)); @@ -175,7 +177,7 @@ WRITE8_MEMBER(tehkanwc_state::sound_answer_w) /* in Gridiron, the sound CPU goes in a tight loop after the self test, */ /* probably waiting to be reset by a watchdog */ - if (space.device().safe_pc() == 0x08bc) timer_set(attotime::from_seconds(1), TIMER_RESET); + if (space.device().safe_pc() == 0x08bc) m_reset_timer->adjust(attotime::from_seconds(1)); } @@ -627,7 +629,7 @@ static GFXDECODE_START( tehkanwc ) GFXDECODE_END -static MACHINE_CONFIG_START( tehkanwc, tehkanwc_state ) +static MACHINE_CONFIG_START( tehkanwc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/4) /* 18.432000 / 4 */ @@ -679,7 +681,7 @@ static MACHINE_CONFIG_START( tehkanwc, tehkanwc_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(tehkanwc_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) MACHINE_CONFIG_END @@ -900,8 +902,8 @@ ROM_END -GAME( 1985, tehkanwc, 0, tehkanwc, tehkanwc, driver_device, 0, ROT0, "Tehkan", "Tehkan World Cup (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tehkanwcb, tehkanwc, tehkanwc, tehkanwc, driver_device, 0, ROT0, "Tehkan", "Tehkan World Cup (set 2, bootleg?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tehkanwcc, tehkanwc, tehkanwc, tehkanwc, driver_device, 0, ROT0, "bootleg", "Tehkan World Cup (set 3, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // aka 'World Cup 85', different inputs? -GAMEL(1985, gridiron, 0, tehkanwc, gridiron, driver_device, 0, ROT0, "Tehkan", "Gridiron Fight", MACHINE_SUPPORTS_SAVE, layout_gridiron ) -GAME( 1986, teedoff, 0, tehkanwc, teedoff, tehkanwc_state, teedoff, ROT90, "Tecmo", "Tee'd Off (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tehkanwc, 0, tehkanwc, tehkanwc, tehkanwc_state, 0, ROT0, "Tehkan", "Tehkan World Cup (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tehkanwcb, tehkanwc, tehkanwc, tehkanwc, tehkanwc_state, 0, ROT0, "Tehkan", "Tehkan World Cup (set 2, bootleg?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tehkanwcc, tehkanwc, tehkanwc, tehkanwc, tehkanwc_state, 0, ROT0, "bootleg", "Tehkan World Cup (set 3, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // aka 'World Cup 85', different inputs? +GAMEL(1985, gridiron, 0, tehkanwc, gridiron, tehkanwc_state, 0, ROT0, "Tehkan", "Gridiron Fight", MACHINE_SUPPORTS_SAVE, layout_gridiron ) +GAME( 1986, teedoff, 0, tehkanwc, teedoff, tehkanwc_state, teedoff, ROT90, "Tecmo", "Tee'd Off (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tek405x.cpp b/src/mame/drivers/tek405x.cpp index b15cb5f7d13..f0b7cd15401 100644 --- a/src/mame/drivers/tek405x.cpp +++ b/src/mame/drivers/tek405x.cpp @@ -997,7 +997,7 @@ void tek4052_state::machine_start() // MACHINE_CONFIG( tek4051 ) //------------------------------------------------- -static MACHINE_CONFIG_START( tek4051, tek4051_state ) +static MACHINE_CONFIG_START( tek4051 ) // basic machine hardware MCFG_CPU_ADD(MC6800_TAG, M6800, XTAL_12_5MHz/15) MCFG_CPU_PROGRAM_MAP(tek4051_mem) @@ -1104,7 +1104,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( tek4052 ) //------------------------------------------------- -static MACHINE_CONFIG_START( tek4052, tek4052_state ) +static MACHINE_CONFIG_START( tek4052 ) // basic machine hardware MCFG_CPU_ADD(AM2901A_TAG, M6800, 1000000) // should be 4x AM2901A + AM2911 MCFG_CPU_PROGRAM_MAP(tek4052_mem) @@ -1143,7 +1143,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( tek4054 ) //------------------------------------------------- /* -static MACHINE_CONFIG_START( tek4054, tek4052_state ) +static MACHINE_CONFIG_START( tek4054 ) MCFG_SCREEN_SIZE(4096, 3125) MCFG_SCREEN_VISIBLE_AREA(0, 4096-1, 0, 3125-1) MACHINE_CONFIG_END @@ -1250,7 +1250,7 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1975, tek4051, 0, 0, tek4051, tek4051, driver_device, 0, "Tektronix", "Tektronix 4051", MACHINE_NOT_WORKING ) -COMP( 1978, tek4052a, tek4051, 0, tek4052, tek4051, driver_device, 0, "Tektronix", "Tektronix 4052A", MACHINE_NOT_WORKING ) -//COMP( 1979, tek4054, tek4051, 0, tek4054, tek4054, driver_device, 0, "Tektronix", "Tektronix 4054", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1975, tek4051, 0, 0, tek4051, tek4051, tek4051_state, 0, "Tektronix", "Tektronix 4051", MACHINE_NOT_WORKING ) +COMP( 1978, tek4052a, tek4051, 0, tek4052, tek4051, tek4052_state, 0, "Tektronix", "Tektronix 4052A", MACHINE_NOT_WORKING ) +//COMP( 1979, tek4054, tek4051, 0, tek4054, tek4054, tek4052_state, 0, "Tektronix", "Tektronix 4054", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/tek410x.cpp b/src/mame/drivers/tek410x.cpp index 4aa5f7239c8..ce7e68ae312 100644 --- a/src/mame/drivers/tek410x.cpp +++ b/src/mame/drivers/tek410x.cpp @@ -86,7 +86,7 @@ void tek4107a_state::machine_start() /* Machine Driver */ -static MACHINE_CONFIG_START( tek4107a, tek4107a_state ) +static MACHINE_CONFIG_START( tek4107a ) /* basic machine hardware */ MCFG_CPU_ADD(I80188_TAG, I80188, 21000000) MCFG_CPU_PROGRAM_MAP(tek4107a_mem) @@ -145,6 +145,6 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, tek4107a, 0, 0, tek4107a, tek4107a, driver_device, 0, "Tektronix", "Tektronix 4107A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1983, tek4109a, tek4107a, 0, tek4109a, tek4107a, driver_device, 0, "Tektronix", "Tektronix 4109A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, tek4107a, 0, 0, tek4107a, tek4107a, tek4107a_state, 0, "Tektronix", "Tektronix 4107A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1983, tek4109a, tek4107a, 0, tek4109a, tek4107a, tek4107a_state, 0, "Tektronix", "Tektronix 4109A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/tek440x.cpp b/src/mame/drivers/tek440x.cpp index f1bb716e35e..7cbf75a87c0 100644 --- a/src/mame/drivers/tek440x.cpp +++ b/src/mame/drivers/tek440x.cpp @@ -180,7 +180,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( tek4404, tek440x_state ) +static MACHINE_CONFIG_START( tek4404 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68010, 166666666) @@ -236,5 +236,5 @@ ROM_END * Game driver(s) * *************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS*/ -COMP( 1984, tek4404, 0, 0, tek4404, tek4404, driver_device, 0, "Tektronix", "4404", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS +COMP( 1984, tek4404, 0, 0, tek4404, tek4404, tek440x_state, 0, "Tektronix", "4404", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/tekxp33x.cpp b/src/mame/drivers/tekxp33x.cpp index facbf3e3fb7..1ee06d723c3 100644 --- a/src/mame/drivers/tekxp33x.cpp +++ b/src/mame/drivers/tekxp33x.cpp @@ -89,7 +89,7 @@ void tekxp330_state::machine_start() /* Machine Driver */ -static MACHINE_CONFIG_START( tekxp330, tekxp330_state ) +static MACHINE_CONFIG_START( tekxp330 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R3052, XTAL_20MHz) /* IDT 79R3052E, clock unknown */ MCFG_R3000_ENDIANNESS(ENDIANNESS_BIG) @@ -119,5 +119,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1992, tekxp330, 0, 0, tekxp330, tekxp330, driver_device, 0, "Tektronix", "TekXpress XP330", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1992, tekxp330, 0, 0, tekxp330, tekxp330, tekxp330_state, 0, "Tektronix", "TekXpress XP330", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/tempest.cpp b/src/mame/drivers/tempest.cpp index 23b38702f8d..2e976721b74 100644 --- a/src/mame/drivers/tempest.cpp +++ b/src/mame/drivers/tempest.cpp @@ -589,7 +589,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( tempest, tempest_state ) +static MACHINE_CONFIG_START( tempest ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 8) @@ -863,9 +863,9 @@ ROM_END * *************************************/ -GAME( 1980, tempest, 0, tempest, tempest, driver_device, 0, ROT270, "Atari", "Tempest (rev 3, Revised Hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, tempest3, tempest, tempest, tempest, driver_device, 0, ROT270, "Atari", "Tempest (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, tempest2, tempest, tempest, tempest, driver_device, 0, ROT270, "Atari", "Tempest (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, tempest1, tempest, tempest, tempest, driver_device, 0, ROT270, "Atari", "Tempest (rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, tempest1r, tempest, tempest, tempest, driver_device, 0, ROT270, "Atari", "Tempest (rev 1, Revised Hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, temptube, tempest, tempest, tempest, driver_device, 0, ROT270, "hack (Duncan Brown)", "Tempest Tubes", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, tempest, 0, tempest, tempest, tempest_state, 0, ROT270, "Atari", "Tempest (rev 3, Revised Hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, tempest3, tempest, tempest, tempest, tempest_state, 0, ROT270, "Atari", "Tempest (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, tempest2, tempest, tempest, tempest, tempest_state, 0, ROT270, "Atari", "Tempest (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, tempest1, tempest, tempest, tempest, tempest_state, 0, ROT270, "Atari", "Tempest (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, tempest1r, tempest, tempest, tempest, tempest_state, 0, ROT270, "Atari", "Tempest (rev 1, Revised Hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, temptube, tempest, tempest, tempest, tempest_state, 0, ROT270, "hack (Duncan Brown)", "Tempest Tubes", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/terak.cpp b/src/mame/drivers/terak.cpp index b97a4e95311..be2216212ef 100644 --- a/src/mame/drivers/terak.cpp +++ b/src/mame/drivers/terak.cpp @@ -90,7 +90,7 @@ uint32_t terak_state::screen_update_terak(screen_device &screen, bitmap_ind16 &b } -static MACHINE_CONFIG_START( terak, terak_state ) +static MACHINE_CONFIG_START( terak ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",T11, XTAL_4MHz) MCFG_T11_INITIAL_MODE(6 << 13) @@ -118,5 +118,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( ????, terak, 0, 0, terak, terak, driver_device, 0, "Terak", "Terak 8510A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( ????, terak, 0, 0, terak, terak, terak_state, 0, "Terak", "Terak 8510A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/terracre.cpp b/src/mame/drivers/terracre.cpp index 61e3a7ee078..8d08594312f 100644 --- a/src/mame/drivers/terracre.cpp +++ b/src/mame/drivers/terracre.cpp @@ -443,20 +443,20 @@ static INPUT_PORTS_START( horekid ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN3") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -517,7 +517,7 @@ static GFXDECODE_START( terracre ) GFXDECODE_END -static MACHINE_CONFIG_START( ym3526, terracre_state ) +static MACHINE_CONFIG_START( ym3526 ) MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz MCFG_CPU_PROGRAM_MAP(terracre_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", terracre_state, irq1_line_hold) @@ -535,7 +535,7 @@ static MACHINE_CONFIG_START( ym3526, terracre_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", terracre) @@ -958,13 +958,13 @@ DRIVER_INIT_MEMBER(terracre_state,horekid) m_mpProtData = mHoreKidProtData; } -/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */ -GAME( 1985, terracre, 0, ym3526, terracre, driver_device, 0, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, terracreo,terracre, ym3526, terracre, driver_device, 0, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, terracrea,terracre, ym3526, terracre, driver_device, 0, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, terracren,terracre, ym2203, terracre, driver_device, 0, ROT270, "Nichibutsu", "Terra Cresta (YM2203)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, amazon, 0, amazon, amazon, terracre_state, amazon, ROT270, "Nichibutsu", "Soldier Girl Amazon", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, amatelas, amazon, amazon, amazon, terracre_state, amatelas, ROT270, "Nichibutsu", "Sei Senshi Amatelass", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, horekid, 0, amazon, horekid, terracre_state, horekid, ROT270, "Nichibutsu", "Kid no Hore Hore Daisakusen", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, horekidb, horekid, amazon, horekid, terracre_state, horekid, ROT270, "bootleg", "Kid no Hore Hore Daisakusen (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, boobhack, horekid, amazon, horekid, terracre_state, horekid, ROT270, "bootleg", "Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg))", MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME, FLAGS +GAME( 1985, terracre, 0, ym3526, terracre, terracre_state, 0, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, terracreo,terracre, ym3526, terracre, terracre_state, 0, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, terracrea,terracre, ym3526, terracre, terracre_state, 0, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, terracren,terracre, ym2203, terracre, terracre_state, 0, ROT270, "Nichibutsu", "Terra Cresta (YM2203)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, amazon, 0, amazon, amazon, terracre_state, amazon, ROT270, "Nichibutsu", "Soldier Girl Amazon", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, amatelas, amazon, amazon, amazon, terracre_state, amatelas, ROT270, "Nichibutsu", "Sei Senshi Amatelass", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, horekid, 0, amazon, horekid, terracre_state, horekid, ROT270, "Nichibutsu", "Kid no Hore Hore Daisakusen", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, horekidb, horekid, amazon, horekid, terracre_state, horekid, ROT270, "bootleg", "Kid no Hore Hore Daisakusen (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, boobhack, horekid, amazon, horekid, terracre_state, horekid, ROT270, "bootleg", "Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg))", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/test_t400.cpp b/src/mame/drivers/test_t400.cpp index 4f1a755ae16..b483bb9d779 100644 --- a/src/mame/drivers/test_t400.cpp +++ b/src/mame/drivers/test_t400.cpp @@ -27,13 +27,13 @@ WRITE8_MEMBER( t400_test_suite_state::port_l_w ) // printf("L: %u\n", data); } -static MACHINE_CONFIG_START( test_t410, t400_test_suite_state ) +static MACHINE_CONFIG_START( test_t410 ) MCFG_CPU_ADD("maincpu", COP410, 1000000) MCFG_COP400_CONFIG( COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false ) MCFG_COP400_WRITE_L_CB(WRITE8(t400_test_suite_state, port_l_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( test_t420, t400_test_suite_state ) +static MACHINE_CONFIG_START( test_t420 ) MCFG_CPU_ADD("maincpu", COP420, 1000000) MCFG_COP400_CONFIG( COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, true ) MCFG_COP400_WRITE_L_CB(WRITE8(t400_test_suite_state, port_l_w)) @@ -49,5 +49,5 @@ ROM_START( test420 ) ROM_LOAD( "rom_42x.bin", 0x000, 0x400, BAD_DUMP CRC(e4e80001) SHA1(8fdca9d08de1cc83387a7d141f6b254117902442) ) ROM_END -COMP( 2008, test410, 0, 0, test_t410, 0, driver_device, 0, "T400 uController project", "T410 test suite", MACHINE_NO_SOUND_HW ) -COMP( 2008, test420, test410, 0, test_t420, 0, driver_device, 0, "T400 uController project", "T420 test suite", MACHINE_NO_SOUND_HW ) +COMP( 2008, test410, 0, 0, test_t410, 0, t400_test_suite_state, 0, "T400 uController project", "T410 test suite", MACHINE_NO_SOUND_HW ) +COMP( 2008, test420, test410, 0, test_t420, 0, t400_test_suite_state, 0, "T400 uController project", "T420 test suite", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/testconsole.cpp b/src/mame/drivers/testconsole.cpp index 29bcc9450ad..a9aede76b62 100644 --- a/src/mame/drivers/testconsole.cpp +++ b/src/mame/drivers/testconsole.cpp @@ -165,7 +165,7 @@ INPUT_PORTS_START(whousetc) INPUT_PORTS_END -MACHINE_CONFIG_START(whousetc, whouse_testcons_state) +MACHINE_CONFIG_START(whousetc) MCFG_CPU_ADD("maincpu", I8085A, XTAL_6_144MHz) MCFG_CPU_PROGRAM_MAP(program_map) MCFG_CPU_IO_MAP(io_map) @@ -199,4 +199,4 @@ ROM_END } // anonymous namespace // YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS -COMP( 1980?, whousetc, 0, 0, whousetc, whousetc, whouse_testcons_state, whousetc, "Westinghouse", "Test Console Serial #5", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980?, whousetc, 0, 0, whousetc, whousetc, whouse_testcons_state, whousetc, "Westinghouse", "Test Console Serial #5", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/tetrisp2.cpp b/src/mame/drivers/tetrisp2.cpp index ec9e10ff388..2c7d5f3e112 100644 --- a/src/mame/drivers/tetrisp2.cpp +++ b/src/mame/drivers/tetrisp2.cpp @@ -1271,9 +1271,11 @@ TIMER_CALLBACK_MEMBER(tetrisp2_state::rockn_timer_sub_level1_callback) void tetrisp2_state::init_rockn_timer() { - machine().scheduler().timer_pulse(attotime::from_msec(32), timer_expired_delegate(FUNC(tetrisp2_state::rockn_timer_level1_callback),this)); + m_rockn_timer_l1 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tetrisp2_state::rockn_timer_level1_callback),this)); m_rockn_timer_l4 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tetrisp2_state::rockn_timer_level4_callback),this)); + m_rockn_timer_l1->adjust(attotime::from_msec(32), 0, attotime::from_msec(32)); + save_item(NAME(m_systemregs)); save_item(NAME(m_rocknms_sub_systemregs)); save_item(NAME(m_rockn_protectdata)); @@ -1305,9 +1307,11 @@ DRIVER_INIT_MEMBER(tetrisp2_state,rocknms) { init_rockn_timer(); - machine().scheduler().timer_pulse(attotime::from_msec(32), timer_expired_delegate(FUNC(tetrisp2_state::rockn_timer_sub_level1_callback),this)); + m_rockn_timer_sub_l1 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tetrisp2_state::rockn_timer_sub_level1_callback),this)); m_rockn_timer_sub_l4 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tetrisp2_state::rockn_timer_sub_level4_callback),this)); + m_rockn_timer_sub_l1->adjust(attotime::from_msec(32), 0, attotime::from_msec(32)); + m_rockn_protectdata = 3; } @@ -1325,7 +1329,7 @@ DRIVER_INIT_MEMBER(stepstag_state,stepstag) } -static MACHINE_CONFIG_START( tetrisp2, tetrisp2_state ) +static MACHINE_CONFIG_START( tetrisp2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -1360,7 +1364,7 @@ static MACHINE_CONFIG_START( tetrisp2, tetrisp2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( nndmseal, tetrisp2_state ) +static MACHINE_CONFIG_START( nndmseal ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) @@ -1388,12 +1392,12 @@ static MACHINE_CONFIG_START( nndmseal, tetrisp2_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_2MHz, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_2MHz, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rockn, tetrisp2_state ) +static MACHINE_CONFIG_START( rockn ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -1427,7 +1431,7 @@ static MACHINE_CONFIG_START( rockn, tetrisp2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rockn2, tetrisp2_state ) +static MACHINE_CONFIG_START( rockn2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -1461,7 +1465,7 @@ static MACHINE_CONFIG_START( rockn2, tetrisp2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rocknms, tetrisp2_state ) +static MACHINE_CONFIG_START( rocknms ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -1511,7 +1515,7 @@ static MACHINE_CONFIG_START( rocknms, tetrisp2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( stepstag, stepstag_state ) +static MACHINE_CONFIG_START( stepstag ) MCFG_CPU_ADD("maincpu", M68000, 16000000 ) //?? MCFG_CPU_PROGRAM_MAP(stepstag_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", tetrisp2_state, irq2_line_hold) // lev 4 triggered by system timer @@ -2287,19 +2291,19 @@ ROM_END ***************************************************************************/ -GAME( 1997, tetrisp2, 0, tetrisp2, tetrisp2, driver_device, 0, ROT0, "Jaleco / The Tetris Company", "Tetris Plus 2 (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, tetrisp2j, tetrisp2, tetrisp2, tetrisp2j, driver_device,0, ROT0, "Jaleco / The Tetris Company", "Tetris Plus 2 (Japan, V2.2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, tetrisp2ja,tetrisp2, tetrisp2, tetrisp2j, driver_device,0, ROT0, "Jaleco / The Tetris Company", "Tetris Plus 2 (Japan, V2.1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, tetrisp2, 0, tetrisp2, tetrisp2, tetrisp2_state, 0, ROT0, "Jaleco / The Tetris Company", "Tetris Plus 2 (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, tetrisp2j, tetrisp2, tetrisp2, tetrisp2j, tetrisp2_state, 0, ROT0, "Jaleco / The Tetris Company", "Tetris Plus 2 (Japan, V2.2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, tetrisp2ja,tetrisp2, tetrisp2, tetrisp2j, tetrisp2_state, 0, ROT0, "Jaleco / The Tetris Company", "Tetris Plus 2 (Japan, V2.1)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, nndmseal, 0, nndmseal, nndmseal, tetrisp2_state, rockn, ROT0 | ORIENTATION_FLIP_X, "I'Max / Jaleco", "Nandemo Seal Iinkai", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) GAME( 1997, nndmseala,nndmseal, nndmseal, nndmseal, tetrisp2_state, rockn, ROT0 | ORIENTATION_FLIP_X, "I'Max / Jaleco", "Nandemo Seal Iinkai (Astro Boy ver.)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -GAME( 1999, rockn, 0, rockn, rockn, tetrisp2_state, rockn, ROT270, "Jaleco", "Rock'n Tread (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, rockna, rockn, rockn, rockn, tetrisp2_state, rockn1, ROT270, "Jaleco", "Rock'n Tread (Japan, alternate)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, rockn2, 0, rockn2, rockn, tetrisp2_state, rockn2, ROT270, "Jaleco", "Rock'n Tread 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, rockn, 0, rockn, rockn, tetrisp2_state, rockn, ROT270, "Jaleco", "Rock'n Tread (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, rockna, rockn, rockn, rockn, tetrisp2_state, rockn1, ROT270, "Jaleco", "Rock'n Tread (Japan, alternate)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, rockn2, 0, rockn2, rockn, tetrisp2_state, rockn2, ROT270, "Jaleco", "Rock'n Tread 2 (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, rocknms, 0, rocknms, rocknms, tetrisp2_state, rocknms, ROT0, "Jaleco", "Rock'n MegaSession (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1999, rockn3, 0, rockn2, rockn, tetrisp2_state, rockn3, ROT270, "Jaleco", "Rock'n 3 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, rockn4, 0, rockn2, rockn, tetrisp2_state, rockn3, ROT270, "Jaleco / PCCWJ", "Rock'n 4 (Japan, prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, rockn3, 0, rockn2, rockn, tetrisp2_state, rockn3, ROT270, "Jaleco", "Rock'n 3 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, rockn4, 0, rockn2, rockn, tetrisp2_state, rockn3, ROT270, "Jaleco / PCCWJ", "Rock'n 4 (Japan, prototype)", MACHINE_SUPPORTS_SAVE ) // Undumped: // - Stepping Stage <- the original Game diff --git a/src/mame/drivers/tgtpanic.cpp b/src/mame/drivers/tgtpanic.cpp index fcc5d569b8c..d019ab9418f 100644 --- a/src/mame/drivers/tgtpanic.cpp +++ b/src/mame/drivers/tgtpanic.cpp @@ -146,7 +146,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( tgtpanic, tgtpanic_state ) +static MACHINE_CONFIG_START( tgtpanic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) @@ -182,4 +182,4 @@ ROM_END * *************************************/ -GAME( 1996, tgtpanic, 0, tgtpanic, tgtpanic, driver_device, 0, ROT0, "Konami", "Target Panic", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, tgtpanic, 0, tgtpanic, tgtpanic, tgtpanic_state, 0, ROT0, "Konami", "Target Panic", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/thayers.cpp b/src/mame/drivers/thayers.cpp index 1ce7ade58b6..01e92543351 100644 --- a/src/mame/drivers/thayers.cpp +++ b/src/mame/drivers/thayers.cpp @@ -786,7 +786,7 @@ void thayers_state::machine_reset() /* Machine Driver */ -static MACHINE_CONFIG_START( thayers, thayers_state ) +static MACHINE_CONFIG_START( thayers ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) @@ -847,6 +847,6 @@ ROM_END /* Game Drivers */ -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1984, thayers, 0, thayers, thayers, driver_device, 0, ROT0, "RDI Video Systems", "Thayer's Quest (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_thayers) -GAMEL( 1984, thayersa, thayers, thayers, thayers, driver_device, 0, ROT0, "RDI Video Systems", "Thayer's Quest (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_thayers) +// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1984, thayers, 0, thayers, thayers, thayers_state, 0, ROT0, "RDI Video Systems", "Thayer's Quest (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_thayers) +GAMEL( 1984, thayersa, thayers, thayers, thayers, thayers_state, 0, ROT0, "RDI Video Systems", "Thayer's Quest (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_thayers) diff --git a/src/mame/drivers/thedealr.cpp b/src/mame/drivers/thedealr.cpp index de0200ec9b9..3010b8bf23b 100644 --- a/src/mame/drivers/thedealr.cpp +++ b/src/mame/drivers/thedealr.cpp @@ -74,7 +74,7 @@ public: // video DECLARE_PALETTE_INIT(thedealr); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); }; /*************************************************************************** @@ -105,7 +105,7 @@ uint32_t thedealr_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -void thedealr_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(thedealr_state::screen_vblank) { // rising edge if (state) @@ -523,7 +523,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(thedealr_state::thedealr_interrupt) m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); } -static MACHINE_CONFIG_START( thedealr, thedealr_state ) +static MACHINE_CONFIG_START( thedealr ) // basic machine hardware MCFG_CPU_ADD("maincpu", R65C02, XTAL_16MHz/8) // 2 MHz? @@ -551,7 +551,7 @@ static MACHINE_CONFIG_START( thedealr, thedealr_state ) MCFG_SCREEN_SIZE(512, 256) MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0+30, 256-1) MCFG_SCREEN_UPDATE_DRIVER(thedealr_state, screen_update) - MCFG_SCREEN_VBLANK_DRIVER(thedealr_state, screen_eof) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(thedealr_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", thedealr) @@ -592,4 +592,4 @@ ROM_START( thedealr ) ROM_LOAD( "xb0-u68.u68", 0x200, 0x200, CRC(c0c54d43) SHA1(5ce352fb888c8e683014c73e6da00ec95f2ae572) ) ROM_END -GAME( 1988?, thedealr, 0, thedealr, thedealr, driver_device, 0, ROT0, "Visco Games", "The Dealer (Visco)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988?, thedealr, 0, thedealr, thedealr, thedealr_state, 0, ROT0, "Visco Games", "The Dealer (Visco)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/thedeep.cpp b/src/mame/drivers/thedeep.cpp index 512d4c902b8..544f70eccfb 100644 --- a/src/mame/drivers/thedeep.cpp +++ b/src/mame/drivers/thedeep.cpp @@ -411,7 +411,7 @@ INTERRUPT_GEN_MEMBER(thedeep_state::mcu_irq) m_mcu->set_input_line(MCS51_INT1_LINE, ASSERT_LINE); } -static MACHINE_CONFIG_START( thedeep, thedeep_state ) +static MACHINE_CONFIG_START( thedeep ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */ @@ -548,5 +548,5 @@ ROM_START( rundeep ) ROM_LOAD( "fi-3", 0x400, 0x200, CRC(f61a9686) SHA1(24082f60b72268d240ceca6999bdf18872625cd2) ) ROM_END -GAME( 1987, thedeep, 0, thedeep, thedeep, driver_device, 0, ROT270, "Wood Place Inc.", "The Deep (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, rundeep, thedeep,thedeep, thedeep, driver_device, 0, ROT270, "bootleg (Cream)", "Run Deep", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, thedeep, 0, thedeep, thedeep, thedeep_state, 0, ROT270, "Wood Place Inc.", "The Deep (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, rundeep, thedeep, thedeep, thedeep, thedeep_state, 0, ROT270, "bootleg (Cream)", "Run Deep", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/thepit.cpp b/src/mame/drivers/thepit.cpp index bd8fe558636..85c6f9cc543 100644 --- a/src/mame/drivers/thepit.cpp +++ b/src/mame/drivers/thepit.cpp @@ -709,7 +709,7 @@ INTERRUPT_GEN_MEMBER(thepit_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( thepit, thepit_state ) +static MACHINE_CONFIG_START( thepit ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, PIXEL_CLOCK/2) /* 3.072 MHz */ @@ -1268,32 +1268,32 @@ DRIVER_INIT_MEMBER(thepit_state,rtriv) } -GAME( 1981, roundup, 0, thepit, roundup, driver_device, 0, ROT90, "Taito Corporation (Amenip/Centuri license)", "Round-Up", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, fitter, roundup, thepit, fitter, driver_device, 0, ROT90, "Taito Corporation", "Fitter", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, fitterbl, roundup, thepit, fitter, driver_device, 0, ROT90, "bootleg", "Fitter (bootleg of Round-Up)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, ttfitter, roundup, thepit, fitter, driver_device, 0, ROT90, "Taito Corporation", "T.T. Fitter (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, roundup, 0, thepit, roundup, thepit_state, 0, ROT90, "Taito Corporation (Amenip/Centuri license)", "Round-Up", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, fitter, roundup, thepit, fitter, thepit_state, 0, ROT90, "Taito Corporation", "Fitter", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, fitterbl, roundup, thepit, fitter, thepit_state, 0, ROT90, "bootleg", "Fitter (bootleg of Round-Up)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, ttfitter, roundup, thepit, fitter, thepit_state, 0, ROT90, "Taito Corporation", "T.T. Fitter (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, thepit, 0, thepit, thepit, driver_device, 0, ROT90, "Zilec Electronics", "The Pit", MACHINE_SUPPORTS_SAVE ) // AW == Andy Walker -GAME( 1982, thepitu1, thepit, thepit, thepit, driver_device, 0, ROT90, "Zilec Electronics (Centuri license)", "The Pit (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, thepitu2, thepit, thepit, thepit, driver_device, 0, ROT90, "Zilec Electronics (Centuri license)", "The Pit (US set 2)", MACHINE_SUPPORTS_SAVE ) // Bally PCB -GAME( 1982, thepitj, thepit, thepit, thepit, driver_device, 0, ROT90, "Zilec Electronics (Taito license)", "The Pit (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, thepit, 0, thepit, thepit, thepit_state, 0, ROT90, "Zilec Electronics", "The Pit", MACHINE_SUPPORTS_SAVE ) // AW == Andy Walker +GAME( 1982, thepitu1, thepit, thepit, thepit, thepit_state, 0, ROT90, "Zilec Electronics (Centuri license)", "The Pit (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, thepitu2, thepit, thepit, thepit, thepit_state, 0, ROT90, "Zilec Electronics (Centuri license)", "The Pit (US set 2)", MACHINE_SUPPORTS_SAVE ) // Bally PCB +GAME( 1982, thepitj, thepit, thepit, thepit, thepit_state, 0, ROT90, "Zilec Electronics (Taito license)", "The Pit (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, dockman, 0, intrepid, dockman, driver_device, 0, ROT90, "Taito Corporation", "Dock Man", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, portman, dockman, intrepid, dockman, driver_device, 0, ROT90, "Taito Corporation (Nova Games Ltd. license)", "Port Man", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, dockman, 0, intrepid, dockman, thepit_state, 0, ROT90, "Taito Corporation", "Dock Man", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, portman, dockman, intrepid, dockman, thepit_state, 0, ROT90, "Taito Corporation (Nova Games Ltd. license)", "Port Man", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, suprmous, 0, suprmous, suprmous, driver_device, 0, ROT90, "Taito Corporation", "Super Mouse", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, funnymou, suprmous, suprmous, suprmous, driver_device, 0, ROT90, "Taito Corporation (Chuo Co. Ltd license)", "Funny Mouse (Japan)", MACHINE_SUPPORTS_SAVE ) // Taito PCB +GAME( 1982, suprmous, 0, suprmous, suprmous, thepit_state, 0, ROT90, "Taito Corporation", "Super Mouse", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, funnymou, suprmous, suprmous, suprmous, thepit_state, 0, ROT90, "Taito Corporation (Chuo Co. Ltd license)", "Funny Mouse (Japan)", MACHINE_SUPPORTS_SAVE ) // Taito PCB -GAME( 1982, machomou, 0, suprmous, suprmous, driver_device, 0, ROT90, "Techstar", "Macho Mouse", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, machomou, 0, suprmous, suprmous, thepit_state, 0, ROT90, "Techstar", "Macho Mouse", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, desertdn, 0, desertdn, desertdn, driver_device, 0, ROT0, "Video Optics", "Desert Dan", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, desertdn, 0, desertdn, desertdn, thepit_state, 0, ROT0, "Video Optics", "Desert Dan", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, intrepid, 0, intrepid, intrepid, driver_device, 0, ROT90, "Nova Games Ltd.", "Intrepid (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, intrepid2,intrepid, intrepid, intrepid, driver_device, 0, ROT90, "Nova Games Ltd.", "Intrepid (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, intrepidb,intrepid, intrepid, intrepid, driver_device, 0, ROT90, "bootleg (Elsys)", "Intrepid (Elsys bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, intrepidb3,intrepid,intrepid, intrepid, driver_device, 0, ROT90, "bootleg (Elsys)", "Intrepid (Elsys bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, intrepidb2,intrepid,intrepid, intrepid, driver_device, 0, ROT90, "bootleg (Loris)", "Intrepid (Loris bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, intrepid, 0, intrepid, intrepid, thepit_state, 0, ROT90, "Nova Games Ltd.", "Intrepid (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, intrepid2, intrepid, intrepid, intrepid, thepit_state, 0, ROT90, "Nova Games Ltd.", "Intrepid (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, intrepidb, intrepid, intrepid, intrepid, thepit_state, 0, ROT90, "bootleg (Elsys)", "Intrepid (Elsys bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, intrepidb3, intrepid, intrepid, intrepid, thepit_state, 0, ROT90, "bootleg (Elsys)", "Intrepid (Elsys bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, intrepidb2, intrepid, intrepid, intrepid, thepit_state, 0, ROT90, "bootleg (Loris)", "Intrepid (Loris bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, zaryavos, 0, intrepid, intrepid, driver_device, 0, ROT90, "Nova Games of Canada", "Zarya Vostoka", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, zaryavos, 0, intrepid, intrepid, thepit_state, 0, ROT90, "Nova Games of Canada", "Zarya Vostoka", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 198?, rtriv, 0, intrepid, rtriv, thepit_state, rtriv, ROT90, "Romar", "Romar Triv", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 198?, rtriv, 0, intrepid, rtriv, thepit_state, rtriv, ROT90, "Romar", "Romar Triv", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/thief.cpp b/src/mame/drivers/thief.cpp index b7adbd56750..633257fe6f1 100644 --- a/src/mame/drivers/thief.cpp +++ b/src/mame/drivers/thief.cpp @@ -15,8 +15,6 @@ Credits: Shark Driver by Victor Trucco and Mike Balfour Driver for Thief and NATO Defense by Phil Stroffolino -- 8255 emulation (ports 0x30..0x3f) could be better abstracted - - minor blitting glitches in playfield of Thief (XOR vs copy?) - Nato Defense gfx ROMs may be hooked up wrong; @@ -28,15 +26,13 @@ Credits: #include "includes/thief.h" #include "cpu/z80/z80.h" +#include "machine/i8255.h" #include "sound/ay8910.h" #include "sound/samples.h" #include "screen.h" #include "speaker.h" -#define MASTER_CLOCK XTAL_20MHz - - INTERRUPT_GEN_MEMBER(thief_state::thief_interrupt) { @@ -98,60 +94,40 @@ void thief_state::tape_set_motor( int bOn ) /***********************************************************/ -WRITE8_MEMBER(thief_state::thief_input_select_w) +WRITE8_MEMBER( thief_state::thief_input_select_w ) { m_input_select = data; } -WRITE8_MEMBER(thief_state::tape_control_w) +WRITE8_MEMBER( thief_state::tape_control_w ) { - switch( data ) - { - case 0x02: /* coin meter on */ - break; - - case 0x03: /* nop */ - break; + // avoid bogus coin counts after reset + if (data == 0x00) + return; - case 0x04: /* coin meter off */ - break; + // 7---32-0 not used + // -6------ speaker right (crash track) + // --5----- tape motor + // ---4---- speaker left (talk track) + // ------1- coin meter - case 0x08: /* talk track on */ - tape_set_audio( kTalkTrack, 1 ); - break; + machine().bookkeeping().coin_counter_w(0, BIT(data, 1) ? 0 : 1); - case 0x09: /* talk track off */ - tape_set_audio( kTalkTrack, 0 ); - break; - - case 0x0a: /* motor on */ - tape_set_motor( 1 ); - break; - - case 0x0b: /* motor off */ - tape_set_motor( 0 ); - break; - - case 0x0c: /* crash track on */ - tape_set_audio( kCrashTrack, 1 ); - break; - - case 0x0d: /* crash track off */ - tape_set_audio( kCrashTrack, 0 ); - break; - } + tape_set_audio(kTalkTrack, BIT(data, 4) ? 0 : 1); + tape_set_motor(BIT(data, 5) ? 0 : 1); + tape_set_audio(kCrashTrack, BIT(data, 6) ? 0 : 1); } -READ8_MEMBER(thief_state::thief_io_r) +READ8_MEMBER( thief_state::thief_io_r ) { - switch( m_input_select ) - { - case 0x01: return ioport("DSW1")->read(); - case 0x02: return ioport("DSW2")->read(); - case 0x04: return ioport("P1")->read(); - case 0x08: return ioport("P2")->read(); - } - return 0x00; + uint8_t data = 0xff; + + if (BIT(m_input_select, 0)) data &= ioport("DSW1")->read(); + if (BIT(m_input_select, 1)) data &= ioport("DSW2")->read(); + if (BIT(m_input_select, 2)) data &= ioport("P1")->read(); + if (BIT(m_input_select, 3)) data &= ioport("P2")->read(); + + return data; } static ADDRESS_MAP_START( sharkatt_main_map, AS_PROGRAM, 8, thief_state ) @@ -177,9 +153,7 @@ static ADDRESS_MAP_START( io_map, AS_IO, 8, thief_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */ AM_RANGE(0x10, 0x10) AM_WRITE(thief_video_control_w) - AM_RANGE(0x30, 0x30) AM_WRITE(thief_input_select_w) /* 8255 */ - AM_RANGE(0x31, 0x31) AM_READ(thief_io_r) /* 8255 */ - AM_RANGE(0x33, 0x33) AM_WRITE(tape_control_w) + AM_RANGE(0x30, 0x33) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write) AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay1", ay8910_device, address_data_w) AM_RANGE(0x41, 0x41) AM_DEVREAD("ay1", ay8910_device, data_r) AM_RANGE(0x42, 0x43) AM_DEVWRITE("ay2", ay8910_device, address_data_w) @@ -413,53 +387,18 @@ static const char *const natodef_sample_names[] = }; -static MACHINE_CONFIG_START( sharkatt, thief_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */ - MCFG_CPU_PROGRAM_MAP(sharkatt_main_map) - MCFG_CPU_IO_MAP(io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", thief_state, thief_interrupt) - - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1) - MCFG_SCREEN_UPDATE_DRIVER(thief_state, screen_update_thief) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("tms", TMS9927, MASTER_CLOCK/4) - MCFG_TMS9927_CHAR_WIDTH(8) - - MCFG_PALETTE_ADD("palette", 16) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("ay1", AY8910, 4000000/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - - MCFG_SOUND_ADD("ay2", AY8910, 4000000/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - - MCFG_SOUND_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(2) - MCFG_SAMPLES_NAMES(sharkatt_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END - - -static MACHINE_CONFIG_START( thief, thief_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */ +static MACHINE_CONFIG_START( thief ) + MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) MCFG_CPU_PROGRAM_MAP(thief_main_map) MCFG_CPU_IO_MAP(io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", thief_state, thief_interrupt) - /* video hardware */ + MCFG_DEVICE_ADD("ppi", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(thief_state, thief_input_select_w)) + MCFG_I8255_IN_PORTB_CB(READ8(thief_state, thief_io_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(thief_state, tape_control_w)) + + // video hardware MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) @@ -468,18 +407,18 @@ static MACHINE_CONFIG_START( thief, thief_state ) MCFG_SCREEN_UPDATE_DRIVER(thief_state, screen_update_thief) MCFG_SCREEN_PALETTE("palette") - MCFG_DEVICE_ADD("tms", TMS9927, MASTER_CLOCK/4) + MCFG_DEVICE_ADD("tms", TMS9927, XTAL_20MHz/4) MCFG_TMS9927_CHAR_WIDTH(8) MCFG_PALETTE_ADD("palette", 16) - /* sound hardware */ + // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("ay1", AY8910, 4000000/4) + MCFG_SOUND_ADD("ay1", AY8910, XTAL_8MHz/2/4) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_SOUND_ADD("ay2", AY8910, 4000000/4) + MCFG_SOUND_ADD("ay2", AY8910, XTAL_8MHz/2/4) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("samples", SAMPLES, 0) @@ -488,44 +427,23 @@ static MACHINE_CONFIG_START( thief, thief_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( sharkatt, thief ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(sharkatt_main_map) -static MACHINE_CONFIG_START( natodef, thief_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */ - MCFG_CPU_PROGRAM_MAP(thief_main_map) - MCFG_CPU_IO_MAP(io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", thief_state, thief_interrupt) - - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(thief_state, screen_update_thief) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("tms", TMS9927, MASTER_CLOCK/4) - MCFG_TMS9927_CHAR_WIDTH(8) - - MCFG_PALETTE_ADD("palette", 16) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("ay1", AY8910, 4000000/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1) - MCFG_SOUND_ADD("ay2", AY8910, 4000000/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + MCFG_DEVICE_MODIFY("samples") + MCFG_SAMPLES_NAMES(sharkatt_sample_names) +MACHINE_CONFIG_END - MCFG_SOUND_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(2) +static MACHINE_CONFIG_DERIVED( natodef, thief ) + MCFG_DEVICE_MODIFY("samples") MCFG_SAMPLES_NAMES(natodef_sample_names) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END + /**********************************************************/ ROM_START( sharkatt ) @@ -631,7 +549,7 @@ DRIVER_INIT_MEMBER(thief_state,thief) } -GAME( 1980, sharkatt, 0, sharkatt, sharkatt, driver_device, 0, ROT0, "Pacific Novelty", "Shark Attack", 0 ) -GAME( 1981, thief, 0, thief, thief, thief_state, thief, ROT0, "Pacific Novelty", "Thief", 0 ) -GAME( 1982, natodef, 0, natodef, natodef, thief_state, thief, ROT0, "Pacific Novelty", "NATO Defense" , 0 ) -GAME( 1982, natodefa, natodef, natodef, natodef, thief_state, thief, ROT0, "Pacific Novelty", "NATO Defense (alternate mazes)" , 0 ) +GAME( 1980, sharkatt, 0, sharkatt, sharkatt, thief_state, 0, ROT0, "Pacific Novelty", "Shark Attack", 0 ) +GAME( 1981, thief, 0, thief, thief, thief_state, thief, ROT0, "Pacific Novelty", "Thief", 0 ) +GAME( 1982, natodef, 0, natodef, natodef, thief_state, thief, ROT0, "Pacific Novelty", "NATO Defense" , 0 ) +GAME( 1982, natodefa, natodef, natodef, natodef, thief_state, thief, ROT0, "Pacific Novelty", "NATO Defense (alternate mazes)" , 0 ) diff --git a/src/mame/drivers/thomson.cpp b/src/mame/drivers/thomson.cpp index 8d91433c861..7864b3a1d8c 100644 --- a/src/mame/drivers/thomson.cpp +++ b/src/mame/drivers/thomson.cpp @@ -617,7 +617,7 @@ SLOT_INTERFACE_END /* ------------ driver ------------ */ -static MACHINE_CONFIG_START( to7, thomson_state ) +static MACHINE_CONFIG_START( to7 ) MCFG_MACHINE_START_OVERRIDE( thomson_state, to7 ) MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to7 ) @@ -633,7 +633,7 @@ static MACHINE_CONFIG_START( to7, thomson_state ) MCFG_SCREEN_VISIBLE_AREA ( 0, THOM_TOTAL_WIDTH * 2 - 1, 0, THOM_TOTAL_HEIGHT - 1 ) MCFG_SCREEN_UPDATE_DRIVER( thomson_state, screen_update_thom ) - MCFG_SCREEN_VBLANK_DRIVER( thomson_state, thom_vblank ) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(thomson_state, thom_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD ( "palette", 4097 ) /* 12-bit color + transparency */ @@ -669,11 +669,6 @@ static MACHINE_CONFIG_START( to7, thomson_state ) /* floppy */ MCFG_DEVICE_ADD("mc6843", MC6843, 0) - MCFG_WD2793_ADD("wd2793", XTAL_1MHz) - - MCFG_FLOPPY_DRIVE_ADD("wd2793:0", cd90_640_floppies, "dd", thomson_state::cd90_640_formats) - MCFG_FLOPPY_DRIVE_ADD("wd2793:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats) - MCFG_DEVICE_ADD(FLOPPY_0, LEGACY_FLOPPY, 0) MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface) MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(thomson_state, fdc_index_0_w)) @@ -687,6 +682,11 @@ static MACHINE_CONFIG_START( to7, thomson_state ) MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface) MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(thomson_state, fdc_index_3_w)) + MCFG_WD2793_ADD("wd2793", XTAL_1MHz) + MCFG_FLOPPY_DRIVE_ADD("wd2793:0", cd90_640_floppies, "dd", thomson_state::cd90_640_formats) + MCFG_FLOPPY_DRIVE_ADD("wd2793:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats) + + /* network */ MCFG_DEVICE_ADD( "mc6854", MC6854, 0 ) MCFG_MC6854_OUT_FRAME_CB(thomson_state, to7_network_got_frame) @@ -759,9 +759,9 @@ static MACHINE_CONFIG_DERIVED( t9000, to7 ) MACHINE_CONFIG_END -COMP ( 1982, to7, 0, 0, to7, to7, driver_device, 0, "Thomson", "TO7", 0 ) +COMP ( 1982, to7, 0, 0, to7, to7, thomson_state, 0, "Thomson", "TO7", 0 ) -COMP ( 1980, t9000, to7, 0, t9000, t9000, driver_device, 0, "Thomson", "T9000", 0 ) +COMP ( 1980, t9000, to7, 0, t9000, t9000, thomson_state, 0, "Thomson", "T9000", 0 ) /***************************** TO7/70 ********************************* @@ -948,9 +948,9 @@ static MACHINE_CONFIG_DERIVED( to770a, to770 ) MCFG_SOFTWARE_LIST_ADD("t770a_cart_list","to770a_cart") MACHINE_CONFIG_END -COMP ( 1984, to770, 0, 0, to770, to770, driver_device, 0, "Thomson", "TO7/70", 0 ) +COMP ( 1984, to770, 0, 0, to770, to770, thomson_state, 0, "Thomson", "TO7/70", 0 ) -COMP ( 1984, to770a, to770, 0, to770a, to770a, driver_device, 0, "Thomson", "TO7/70 (Arabic)", 0 ) +COMP ( 1984, to770a, to770, 0, to770a, to770a, thomson_state, 0, "Thomson", "TO7/70 (Arabic)", 0 ) /************************* MO5 / MO5E ********************************* @@ -1156,9 +1156,9 @@ static MACHINE_CONFIG_DERIVED( mo5e, mo5 ) MACHINE_CONFIG_END -COMP ( 1984, mo5, 0, 0, mo5, mo5, driver_device, 0, "Thomson", "MO5", 0 ) +COMP ( 1984, mo5, 0, 0, mo5, mo5, thomson_state, 0, "Thomson", "MO5", 0 ) -COMP ( 1986, mo5e, mo5, 0, mo5e, mo5e, driver_device, 0, "Thomson", "MO5E", 0 ) +COMP ( 1986, mo5e, mo5, 0, mo5e, mo5e, thomson_state, 0, "Thomson", "MO5E", 0 ) /********************************* TO9 ******************************* @@ -1495,7 +1495,7 @@ static MACHINE_CONFIG_DERIVED( to9, to7 ) MACHINE_CONFIG_END -COMP ( 1985, to9, 0, 0, to9, to9, driver_device, 0, "Thomson", "TO9", MACHINE_IMPERFECT_COLORS ) +COMP ( 1985, to9, 0, 0, to9, to9, thomson_state, 0, "Thomson", "TO9", MACHINE_IMPERFECT_COLORS ) /******************************** TO8 ******************************** @@ -1730,9 +1730,9 @@ static MACHINE_CONFIG_DERIVED( to8d, to8 ) MACHINE_CONFIG_END -COMP ( 1986, to8, 0, 0, to8, to8, driver_device, 0, "Thomson", "TO8", 0 ) +COMP ( 1986, to8, 0, 0, to8, to8, thomson_state, 0, "Thomson", "TO8", 0 ) -COMP ( 1987, to8d, to8, 0, to8d, to8d, driver_device, 0, "Thomson", "TO8D", 0 ) +COMP ( 1987, to8d, to8, 0, to8d, to8d, thomson_state, 0, "Thomson", "TO8D", 0 ) /******************************** TO9+ ******************************* @@ -1889,7 +1889,7 @@ static MACHINE_CONFIG_DERIVED( to9p, to7 ) MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("to7_qd_list", "to7_qd") MACHINE_CONFIG_END -COMP ( 1986, to9p, 0, 0, to9p, to9p, driver_device, 0, "Thomson", "TO9+", 0 ) +COMP ( 1986, to9p, 0, 0, to9p, to9p, thomson_state, 0, "Thomson", "TO9+", 0 ) @@ -2269,9 +2269,9 @@ static MACHINE_CONFIG_DERIVED( pro128, mo6 ) MCFG_SOFTWARE_LIST_ADD("p128_flop_list","pro128_flop") MACHINE_CONFIG_END -COMP ( 1986, mo6, 0, 0, mo6, mo6, driver_device, 0, "Thomson", "MO6", 0 ) +COMP ( 1986, mo6, 0, 0, mo6, mo6, thomson_state, 0, "Thomson", "MO6", 0 ) -COMP ( 1986, pro128, mo6, 0, pro128, pro128, driver_device, 0, "Olivetti / Thomson", "Prodest PC 128", 0 ) +COMP ( 1986, pro128, mo6, 0, pro128, pro128, thomson_state, 0, "Olivetti / Thomson", "Prodest PC 128", 0 ) @@ -2525,4 +2525,4 @@ static MACHINE_CONFIG_DERIVED( mo5nr, to7 ) MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("mo5_qd_list","mo5_qd") MACHINE_CONFIG_END -COMP ( 1986, mo5nr, 0, 0, mo5nr, mo5nr, driver_device, 0, "Thomson", "MO5 NR", 0 ) +COMP ( 1986, mo5nr, 0, 0, mo5nr, mo5nr, thomson_state, 0, "Thomson", "MO5 NR", 0 ) diff --git a/src/mame/drivers/thoop2.cpp b/src/mame/drivers/thoop2.cpp index a231bc3ce3e..2bafc649745 100644 --- a/src/mame/drivers/thoop2.cpp +++ b/src/mame/drivers/thoop2.cpp @@ -202,7 +202,7 @@ static GFXDECODE_START( thoop2 ) GFXDECODE_END -static MACHINE_CONFIG_START( thoop2, thoop2_state ) +static MACHINE_CONFIG_START( thoop2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,24000000/2) /* 12 MHz */ @@ -227,7 +227,7 @@ static MACHINE_CONFIG_START( thoop2, thoop2_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -250,4 +250,4 @@ ROM_START( thoop2 ) /* 0x00000-0x2ffff is fixed, 0x30000-0x3ffff is bank switched */ ROM_END -GAME( 1994, thoop2, 0, thoop2, thoop2, driver_device, 0, ROT0, "Gaelco", "TH Strikes Back", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, thoop2, 0, thoop2, thoop2, thoop2_state, 0, ROT0, "Gaelco", "TH Strikes Back", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/thunderj.cpp b/src/mame/drivers/thunderj.cpp index da56a785aa1..6e65c10fa94 100644 --- a/src/mame/drivers/thunderj.cpp +++ b/src/mame/drivers/thunderj.cpp @@ -247,7 +247,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( thunderj, thunderj_state ) +static MACHINE_CONFIG_START( thunderj ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) diff --git a/src/mame/drivers/thunderx.cpp b/src/mame/drivers/thunderx.cpp index b384a0b94cc..a24fafb78b0 100644 --- a/src/mame/drivers/thunderx.cpp +++ b/src/mame/drivers/thunderx.cpp @@ -313,7 +313,7 @@ WRITE8_MEMBER(thunderx_state::thunderx_1f98_w) calculate_collisions(); /* 100 cycle delay is arbitrary */ - timer_set(downcast(&space.device())->cycles_to_attotime(100), TIMER_THUNDERX_FIRQ); + m_thunderx_firq_timer->adjust(m_maincpu->cycles_to_attotime(100)); } m_1f98_latch = data; @@ -630,7 +630,7 @@ void thunderx_state::machine_reset() m_priority = 0; } -static MACHINE_CONFIG_START( scontra, thunderx_state ) +static MACHINE_CONFIG_START( scontra ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 052001 (verified on pcb) */ @@ -1034,15 +1034,19 @@ ROM_START( crazycop ) ROM_END +DRIVER_INIT_MEMBER(thunderx_state, thunderx) +{ + m_thunderx_firq_timer = timer_alloc(TIMER_THUNDERX_FIRQ); +} /***************************************************************************/ -GAME( 1988, scontra, 0, scontra, scontra, driver_device, 0, ROT90, "Konami", "Super Contra", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, scontraj, scontra, scontra, scontra, driver_device, 0, ROT90, "Konami", "Super Contra (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, thunderx, 0, thunderx, thunderx, driver_device, 0, ROT0, "Konami", "Thunder Cross (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, thunderxa, thunderx, thunderx, thunderx, driver_device, 0, ROT0, "Konami", "Thunder Cross (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, thunderxb, thunderx, thunderx, thunderx, driver_device, 0, ROT0, "Konami", "Thunder Cross (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, thunderxj, thunderx, thunderx, thnderxj, driver_device, 0, ROT0, "Konami", "Thunder Cross (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gbusters, 0, gbusters, gbusters, driver_device, 0, ROT90, "Konami", "Gang Busters (set 1)", MACHINE_SUPPORTS_SAVE ) /* N02 & J03 program roms */ -GAME( 1988, gbustersa, gbusters, gbusters, gbusters, driver_device, 0, ROT90, "Konami", "Gang Busters (set 2)", MACHINE_SUPPORTS_SAVE ) /* unknown region program roms */ -GAME( 1988, crazycop, gbusters, gbusters, gbusters, driver_device, 0, ROT90, "Konami", "Crazy Cop (Japan)", MACHINE_SUPPORTS_SAVE ) /* M02 & J03 program roms */ +GAME( 1988, scontra, 0, scontra, scontra, thunderx_state, 0, ROT90, "Konami", "Super Contra", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, scontraj, scontra, scontra, scontra, thunderx_state, 0, ROT90, "Konami", "Super Contra (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, thunderx, 0, thunderx, thunderx, thunderx_state, thunderx, ROT0, "Konami", "Thunder Cross (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, thunderxa, thunderx, thunderx, thunderx, thunderx_state, thunderx, ROT0, "Konami", "Thunder Cross (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, thunderxb, thunderx, thunderx, thunderx, thunderx_state, thunderx, ROT0, "Konami", "Thunder Cross (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, thunderxj, thunderx, thunderx, thnderxj, thunderx_state, thunderx, ROT0, "Konami", "Thunder Cross (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gbusters, 0, gbusters, gbusters, thunderx_state, 0, ROT90, "Konami", "Gang Busters (set 1)", MACHINE_SUPPORTS_SAVE ) // N02 & J03 program ROMs +GAME( 1988, gbustersa, gbusters, gbusters, gbusters, thunderx_state, 0, ROT90, "Konami", "Gang Busters (set 2)", MACHINE_SUPPORTS_SAVE ) // unknown region program ROMs +GAME( 1988, crazycop, gbusters, gbusters, gbusters, thunderx_state, 0, ROT90, "Konami", "Crazy Cop (Japan)", MACHINE_SUPPORTS_SAVE ) // M02 & J03 program ROMs diff --git a/src/mame/drivers/ti630.cpp b/src/mame/drivers/ti630.cpp index 5ebfadb696f..38b62ce822f 100644 --- a/src/mame/drivers/ti630.cpp +++ b/src/mame/drivers/ti630.cpp @@ -181,7 +181,7 @@ static GFXDECODE_START( ti630 ) GFXDECODE_ENTRY( "hd44780:cgrom", 0x0000, ti630_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( ti630, ti630_state ) +static MACHINE_CONFIG_START( ti630 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80C31, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(i80c31_prg) @@ -210,5 +210,5 @@ ROM_START( ti630 ) ROM_LOAD( "ti630.ci11", 0x00000, 0x10000, CRC(2602cbdc) SHA1(98266bea52a5893e0af0b5872eca0a0a1e0c5f9c) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1999, ti630, 0, 0, ti630, 0, ti630_state, ti630, "Intelbras", "TI630 telephone", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1999, ti630, 0, 0, ti630, 0, ti630_state, ti630, "Intelbras", "TI630 telephone", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ti74.cpp b/src/mame/drivers/ti74.cpp index 1c0f4ae2f41..de66bfd065a 100644 --- a/src/mame/drivers/ti74.cpp +++ b/src/mame/drivers/ti74.cpp @@ -509,7 +509,7 @@ void ti74_state::machine_start() save_item(NAME(m_power)); } -static MACHINE_CONFIG_START( ti74, ti74_state ) +static MACHINE_CONFIG_START( ti74 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS70C46, XTAL_4MHz) @@ -543,7 +543,7 @@ static MACHINE_CONFIG_START( ti74, ti74_state ) MCFG_SOFTWARE_LIST_ADD("cart_list", "ti74_cart") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ti95, ti74_state ) +static MACHINE_CONFIG_START( ti95 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS70C46, XTAL_4MHz) @@ -603,5 +603,6 @@ ROM_START( ti95 ) ROM_END -COMP( 1985, ti74, 0, 0, ti74, ti74, driver_device, 0, "Texas Instruments", "TI-74 BASICALC", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1986, ti95, 0, 0, ti95, ti95, driver_device, 0, "Texas Instruments", "TI-95 PROCALC", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +COMP( 1985, ti74, 0, 0, ti74, ti74, ti74_state, 0, "Texas Instruments", "TI-74 BASICALC", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1986, ti95, 0, 0, ti95, ti95, ti74_state, 0, "Texas Instruments", "TI-95 PROCALC", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/ti85.cpp b/src/mame/drivers/ti85.cpp index 1cadc0ca12c..840c65baab6 100644 --- a/src/mame/drivers/ti85.cpp +++ b/src/mame/drivers/ti85.cpp @@ -564,7 +564,7 @@ static INPUT_PORTS_START (ti83) INPUT_PORTS_END /* machine definition */ -static MACHINE_CONFIG_START( ti81, ti85_state ) +static MACHINE_CONFIG_START( ti81 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 2000000) /* 2 MHz */ MCFG_CPU_PROGRAM_MAP(ti81_mem) @@ -906,15 +906,15 @@ ROM_START (ti84p) ROMX_LOAD( "ti84pb100v255mp.bin", 0x00000, 0x100000, CRC(4af31251) SHA1(8f67269346644b87e7cd0f353f5f4030e787cf57), ROM_BIOS(1) ) ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1990, ti81, 0, 0, ti81, ti81, driver_device, 0, "Texas Instruments", "TI-81", MACHINE_NO_SOUND_HW ) -COMP( 1992, ti85, 0, 0, ti85d, ti85, driver_device, 0, "Texas Instruments", "TI-85", MACHINE_NO_SOUND_HW ) -COMP( 1993, ti82, 0, 0, ti82, ti82, driver_device, 0, "Texas Instruments", "TI-82", MACHINE_NO_SOUND_HW ) -COMP( 1994, ti81v2, ti81, 0, ti81v2, ti81, driver_device, 0, "Texas Instruments", "TI-81 v2.0", MACHINE_NO_SOUND_HW ) -COMP( 1996, ti83, 0, 0, ti83, ti83, driver_device, 0, "Texas Instruments", "TI-83", MACHINE_NO_SOUND_HW ) -COMP( 1997, ti86, 0, 0, ti86, ti85, driver_device, 0, "Texas Instruments", "TI-86", MACHINE_NO_SOUND_HW ) -COMP( 1998, ti73, 0, 0, ti73, ti82, driver_device, 0, "Texas Instruments", "TI-73", MACHINE_NO_SOUND_HW ) -COMP( 1999, ti83p, 0, 0, ti83p, ti82, driver_device, 0, "Texas Instruments", "TI-83 Plus", MACHINE_NO_SOUND_HW ) -COMP( 2001, ti83pse, 0, 0, ti83pse, ti82, driver_device, 0, "Texas Instruments", "TI-83 Plus Silver Edition", MACHINE_NO_SOUND_HW ) -COMP( 2004, ti84p, 0, 0, ti84p, ti82, driver_device, 0, "Texas Instruments", "TI-84 Plus", MACHINE_NO_SOUND_HW ) -COMP( 2004, ti84pse, 0, 0, ti84pse, ti82, driver_device, 0, "Texas Instruments", "TI-84 Plus Silver Edition", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1990, ti81, 0, 0, ti81, ti81, ti85_state, 0, "Texas Instruments", "TI-81", MACHINE_NO_SOUND_HW ) +COMP( 1992, ti85, 0, 0, ti85d, ti85, ti85_state, 0, "Texas Instruments", "TI-85", MACHINE_NO_SOUND_HW ) +COMP( 1993, ti82, 0, 0, ti82, ti82, ti85_state, 0, "Texas Instruments", "TI-82", MACHINE_NO_SOUND_HW ) +COMP( 1994, ti81v2, ti81, 0, ti81v2, ti81, ti85_state, 0, "Texas Instruments", "TI-81 v2.0", MACHINE_NO_SOUND_HW ) +COMP( 1996, ti83, 0, 0, ti83, ti83, ti85_state, 0, "Texas Instruments", "TI-83", MACHINE_NO_SOUND_HW ) +COMP( 1997, ti86, 0, 0, ti86, ti85, ti85_state, 0, "Texas Instruments", "TI-86", MACHINE_NO_SOUND_HW ) +COMP( 1998, ti73, 0, 0, ti73, ti82, ti85_state, 0, "Texas Instruments", "TI-73", MACHINE_NO_SOUND_HW ) +COMP( 1999, ti83p, 0, 0, ti83p, ti82, ti85_state, 0, "Texas Instruments", "TI-83 Plus", MACHINE_NO_SOUND_HW ) +COMP( 2001, ti83pse, 0, 0, ti83pse, ti82, ti85_state, 0, "Texas Instruments", "TI-83 Plus Silver Edition", MACHINE_NO_SOUND_HW ) +COMP( 2004, ti84p, 0, 0, ti84p, ti82, ti85_state, 0, "Texas Instruments", "TI-84 Plus", MACHINE_NO_SOUND_HW ) +COMP( 2004, ti84pse, 0, 0, ti84pse, ti82, ti85_state, 0, "Texas Instruments", "TI-84 Plus Silver Edition", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/ti89.cpp b/src/mame/drivers/ti89.cpp index 9d79267f0bc..eefc6ed205a 100644 --- a/src/mame/drivers/ti89.cpp +++ b/src/mame/drivers/ti89.cpp @@ -515,7 +515,7 @@ PALETTE_INIT_MEMBER(ti68k_state, ti68k) palette.set_pen_color(1, rgb_t(92, 83, 88)); } -static MACHINE_CONFIG_START( ti89, ti68k_state ) +static MACHINE_CONFIG_START( ti89 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(ti89_mem) @@ -669,9 +669,9 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1998, ti89, 0, 0, ti89, ti8x, driver_device, 0, "Texas Instruments", "TI-89", MACHINE_NO_SOUND) -COMP( 1995, ti92, 0, 0, ti92, ti9x, driver_device, 0, "Texas Instruments", "TI-92", MACHINE_NO_SOUND) -COMP( 1999, ti92p, 0, 0, ti92p, ti9x, driver_device, 0, "Texas Instruments", "TI-92 Plus", MACHINE_NO_SOUND) -COMP( 2002, v200, 0, 0, v200, ti9x, driver_device, 0, "Texas Instruments", "Voyage 200 PLT",MACHINE_NO_SOUND) -COMP( 2004, ti89t, 0, 0, ti89t, ti8x, driver_device, 0, "Texas Instruments", "TI-89 Titanium",MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1998, ti89, 0, 0, ti89, ti8x, ti68k_state, 0, "Texas Instruments", "TI-89", MACHINE_NO_SOUND ) +COMP( 1995, ti92, 0, 0, ti92, ti9x, ti68k_state, 0, "Texas Instruments", "TI-92", MACHINE_NO_SOUND ) +COMP( 1999, ti92p, 0, 0, ti92p, ti9x, ti68k_state, 0, "Texas Instruments", "TI-92 Plus", MACHINE_NO_SOUND ) +COMP( 2002, v200, 0, 0, v200, ti9x, ti68k_state, 0, "Texas Instruments", "Voyage 200 PLT", MACHINE_NO_SOUND ) +COMP( 2004, ti89t, 0, 0, ti89t, ti8x, ti68k_state, 0, "Texas Instruments", "TI-89 Titanium", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ti990_10.cpp b/src/mame/drivers/ti990_10.cpp index cdf3422e71e..4cd15ee8990 100644 --- a/src/mame/drivers/ti990_10.cpp +++ b/src/mame/drivers/ti990_10.cpp @@ -311,7 +311,7 @@ WRITE_LINE_MEMBER(ti990_10_state::tape_interrupt) // set_int9(state); } -static MACHINE_CONFIG_START( ti990_10, ti990_10_state ) +static MACHINE_CONFIG_START( ti990_10 ) /* basic machine hardware */ /* TI990/10 CPU @ 4.0(???) MHz */ MCFG_TMS99xx_ADD("maincpu", TI990_10, 4000000, ti990_10_memmap, ti990_10_io ) @@ -371,7 +371,7 @@ ROM_START(ti990_10) /* VDT911 character definitions */ - ROM_REGION(vdt911_chr_region_len, vdt911_chr_region, ROMREGION_ERASEFF) + ROM_REGION(vdt911_device::chr_region_len, vdt911_chr_region, ROMREGION_ERASEFF) ROM_END @@ -385,5 +385,5 @@ DRIVER_INIT_MEMBER(ti990_10_state,ti990_10) #endif } -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1975, ti990_10, 0, 0, ti990_10, 0, ti990_10_state, ti990_10, "Texas Instruments", "TI Model 990/10 Minicomputer System" , MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1975, ti990_10, 0, 0, ti990_10, 0, ti990_10_state, ti990_10, "Texas Instruments", "TI Model 990/10 Minicomputer System", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ti990_4.cpp b/src/mame/drivers/ti990_4.cpp index 2e60a11f674..d141795ef4f 100644 --- a/src/mame/drivers/ti990_4.cpp +++ b/src/mame/drivers/ti990_4.cpp @@ -281,7 +281,7 @@ DRIVER_INIT_MEMBER(ti990_4_state, ti990_4) m_nmi_timer = timer_alloc(NMI_TIMER_ID); } -static MACHINE_CONFIG_START( ti990_4, ti990_4_state ) +static MACHINE_CONFIG_START( ti990_4 ) /* basic machine hardware */ /* TMS9900 CPU @ 3.0(???) MHz */ MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map) @@ -296,13 +296,13 @@ static MACHINE_CONFIG_START( ti990_4, ti990_4_state ) MCFG_ASR733_LINEINT_HANDLER(WRITELINE(ti990_4_state, line_interrupt)) // Floppy controller - MCFG_DEVICE_ADD("fd800", FD800, 0) + MCFG_DEVICE_ADD("fd800", TI99X_FD800, 0) MCFG_FD800_INT_HANDLER(WRITELINE(ti990_4_state, fd_interrupt)) // MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(ti990_4_floppy_interface) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ti990_4v, ti990_4_state ) +static MACHINE_CONFIG_START( ti990_4v ) /* basic machine hardware */ /* TMS9900 CPU @ 3.0(???) MHz */ MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map_v) @@ -316,7 +316,7 @@ static MACHINE_CONFIG_START( ti990_4v, ti990_4_state ) MCFG_VDT911_LINEINT_HANDLER(WRITELINE(ti990_4_state, line_interrupt)) // Floppy controller - MCFG_DEVICE_ADD("fd800", FD800, 0) + MCFG_DEVICE_ADD("fd800", TI99X_FD800, 0) MCFG_FD800_INT_HANDLER(WRITELINE(ti990_4_state, fd_interrupt)) // MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(ti990_4_floppy_interface) @@ -350,7 +350,7 @@ ROM_START(ti990_4) ROM_LOAD16_WORD("ti9904.rom", 0xFC00, 0x400, CRC(691e7d19) SHA1(58d9bed80490fdf71c743bfd3077c70840b7df8c)) #endif - ROM_REGION(asr733_chr_region_len, asr733_chr_region, ROMREGION_ERASEFF) + ROM_REGION(asr733_device::chr_region_len, asr733_chr_region, ROMREGION_ERASEFF) ROM_END ROM_START(ti990_4v) @@ -359,9 +359,9 @@ ROM_START(ti990_4v) ROM_LOAD16_WORD("ti9904.rom", 0xFC00, 0x400, CRC(691e7d19) SHA1(58d9bed80490fdf71c743bfd3077c70840b7df8c)) /* VDT911 character definitions */ - ROM_REGION(vdt911_chr_region_len, vdt911_chr_region, ROMREGION_ERASEFF) + ROM_REGION(vdt911_device::chr_region_len, vdt911_chr_region, ROMREGION_ERASEFF) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1976, ti990_4, 0, 0, ti990_4, 0, ti990_4_state, ti990_4, "Texas Instruments", "TI Model 990/4 Microcomputer System" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1976, ti990_4v, ti990_4, 0, ti990_4v, 0, ti990_4_state, ti990_4, "Texas Instruments", "TI Model 990/4 Microcomputer System with Video Display Terminal" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1976, ti990_4, 0, 0, ti990_4, 0, ti990_4_state, ti990_4, "Texas Instruments", "TI Model 990/4 Microcomputer System", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1976, ti990_4v, ti990_4, 0, ti990_4v, 0, ti990_4_state, ti990_4, "Texas Instruments", "TI Model 990/4 Microcomputer System with Video Display Terminal", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ti99_2.cpp b/src/mame/drivers/ti99_2.cpp index b38df29fea5..ba6dea90229 100644 --- a/src/mame/drivers/ti99_2.cpp +++ b/src/mame/drivers/ti99_2.cpp @@ -367,7 +367,7 @@ static INPUT_PORTS_START(ti99_2) INPUT_PORTS_END -static MACHINE_CONFIG_START( ti99_2, ti99_2_state ) +static MACHINE_CONFIG_START( ti99_2 ) // basic machine hardware // TMS9995, standard variant // We have no lines connected yet @@ -412,6 +412,6 @@ ROM_END /* Hex-bus disk controller: supports up to 4 floppy disk drives */ /* None of these is supported (tape should be easy to emulate) */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1983, ti99_224, 0, 0, ti99_2, ti99_2, ti99_2_state, ti99_2_24, "Texas Instruments", "TI-99/2 BASIC Computer (24kb ROMs)" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1983, ti99_232, ti99_224, 0, ti99_2, ti99_2, ti99_2_state, ti99_2_32, "Texas Instruments", "TI-99/2 BASIC Computer (32kb ROMs)" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, ti99_224, 0, 0, ti99_2, ti99_2, ti99_2_state, ti99_2_24, "Texas Instruments", "TI-99/2 BASIC Computer (24kb ROMs)" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1983, ti99_232, ti99_224, 0, ti99_2, ti99_2, ti99_2_state, ti99_2_32, "Texas Instruments", "TI-99/2 BASIC Computer (32kb ROMs)" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ti99_4p.cpp b/src/mame/drivers/ti99_4p.cpp index 0df5bad73e4..efa0632b5ef 100644 --- a/src/mame/drivers/ti99_4p.cpp +++ b/src/mame/drivers/ti99_4p.cpp @@ -116,8 +116,8 @@ *****************************************************************************/ #include "emu.h" -#include "bus/ti99_peb/peribox.h" -#include "bus/ti99x/joyport.h" +#include "bus/ti99/joyport/joyport.h" +#include "bus/ti99/peb/peribox.h" #include "cpu/tms9900/tms9900.h" #include "imagedev/cassette.h" #include "machine/ram.h" @@ -148,7 +148,7 @@ public: m_joyport(*this, JOYPORT_TAG), m_scratchpad(*this, PADRAM_TAG), m_amsram(*this, AMSRAM_TAG) - { } + { } DECLARE_WRITE_LINE_MEMBER( ready_line ); DECLARE_WRITE_LINE_MEMBER( extint ); @@ -192,7 +192,7 @@ private: required_device m_tms9901; required_device m_cassette; required_device m_peribox; - required_device m_joyport; + required_device m_joyport; required_device m_scratchpad; required_device m_amsram; @@ -728,7 +728,7 @@ READ8_MEMBER( ti99_4p_state::read_by_9901 ) switch (offset & 0x03) { - case TMS9901_CB_INT7: + case tms9901_device::CB_INT7: // Read pins INT3*-INT7* of TI99's 9901. // bit 1: INT1 status // bit 2: INT2 status @@ -751,7 +751,7 @@ READ8_MEMBER( ti99_4p_state::read_by_9901 ) answer = (answer << 3) | m_9901_int; break; - case TMS9901_INT8_INT15: + case tms9901_device::INT8_INT15: // Read pins int8_t*-INT15* of TI99's 9901. // bit 0-2: keyboard status bits 5 to 7 // bit 3: tape input mirror @@ -763,10 +763,10 @@ READ8_MEMBER( ti99_4p_state::read_by_9901 ) answer |= 0xf0; break; - case TMS9901_P0_P7: + case tms9901_device::P0_P7: break; - case TMS9901_P8_P15: + case tms9901_device::P8_P15: // Read pins P8-P15 of TI99's 9901. // bit 26: high // bit 27: tape input @@ -989,7 +989,7 @@ MACHINE_RESET_MEMBER(ti99_4p_state,ti99_4p) /* Machine description. */ -static MACHINE_CONFIG_START( ti99_4p_60hz, ti99_4p_state ) +static MACHINE_CONFIG_START( ti99_4p_60hz ) /* basic machine hardware */ /* TMS9900 CPU @ 3.0 MHz */ MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map) @@ -1049,5 +1049,5 @@ ROM_START(ti99_4p) ROM_LOAD16_BYTE("sgcpu_lb.bin", 0x0001, 0x8000, CRC(2a5dc818) SHA1(dec141fe2eea0b930859cbe1ebd715ac29fa8ecb) ) /* system ROMs */ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1996, ti99_4p, 0, 0, ti99_4p_60hz, ti99_4p, driver_device, 0, "System-99 User Group", "SGCPU (aka TI-99/4P)" , MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1996, ti99_4p, 0, 0, ti99_4p_60hz, ti99_4p, ti99_4p_state, 0, "System-99 User Group", "SGCPU (aka TI-99/4P)" , MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ti99_4x.cpp b/src/mame/drivers/ti99_4x.cpp index d42e0a4261f..67a4ffd6cf3 100644 --- a/src/mame/drivers/ti99_4x.cpp +++ b/src/mame/drivers/ti99_4x.cpp @@ -49,9 +49,9 @@ #include "bus/ti99x/ti99defs.h" #include "bus/ti99x/datamux.h" #include "bus/ti99x/gromport.h" -#include "bus/ti99x/joyport.h" -#include "bus/ti99_peb/peribox.h" +#include "bus/ti99/joyport/joyport.h" +#include "bus/ti99/peb/peribox.h" #include "machine/ram.h" #include "softlist.h" @@ -87,7 +87,7 @@ public: m_video(*this, VDP_TAG), m_cassette1(*this, "cassette"), m_cassette2(*this, "cassette2") - { } + { } // Machine management DECLARE_MACHINE_START(ti99_4); @@ -165,9 +165,9 @@ private: // Connected devices required_device m_cpu; required_device m_tms9901; - required_device m_gromport; + required_device m_gromport; required_device m_peribox; - required_device m_joyport; + required_device m_joyport; required_device m_datamux; optional_device m_video; required_device m_cassette1; @@ -454,7 +454,7 @@ READ8_MEMBER( ti99_4x_state::read_by_9901 ) switch (offset & 0x03) { - case TMS9901_CB_INT7: + case tms9901_device::CB_INT7: // // Read pins INT3*-INT7* of TI99's 9901. // bit 1: INT1 status @@ -490,7 +490,7 @@ READ8_MEMBER( ti99_4x_state::read_by_9901 ) break; - case TMS9901_INT8_INT15: + case tms9901_device::INT8_INT15: // |1|1|1|INT12|0|K|K|K| if (m_keyboard_column >= (m_model==MODEL_4? 5:6)) answer = 0x07; else answer = ((ioport(column[m_keyboard_column])->read())>>5) & 0x07; @@ -498,12 +498,12 @@ READ8_MEMBER( ti99_4x_state::read_by_9901 ) if (m_model != MODEL_4 || m_int12==CLEAR_LINE) answer |= 0x10; break; - case TMS9901_P0_P7: + case tms9901_device::P0_P7: // Required for the handset (only on TI-99/4) if ((m_joyport->read_port() & 0x20)!=0) answer |= 2; break; - case TMS9901_P8_P15: + case tms9901_device::P8_P15: // Preset to 1 answer = 4; @@ -830,7 +830,7 @@ MACHINE_RESET_MEMBER(ti99_4x_state,ti99_4) TI-99/4 - predecessor of the more popular TI-99/4A ***********************************************************************/ -static MACHINE_CONFIG_START( ti99_4, ti99_4x_state ) +static MACHINE_CONFIG_START( ti99_4 ) // CPU MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map) MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(ti99_4x_state, external_operation) ) @@ -854,7 +854,7 @@ static MACHINE_CONFIG_START( ti99_4, ti99_4x_state ) MCFG_TMS9901_P9_HANDLER( WRITELINE( ti99_4x_state, cassette_output) ) MCFG_TMS9901_INTLEVEL_HANDLER( WRITE8( ti99_4x_state, tms9901_interrupt) ) - MCFG_DEVICE_ADD( DATAMUX_TAG, DATAMUX, 0) + MCFG_DEVICE_ADD( DATAMUX_TAG, TI99_DATAMUX, 0) MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) MCFG_GROMPORT4_ADD( GROMPORT_TAG ) @@ -950,7 +950,7 @@ MACHINE_RESET_MEMBER(ti99_4x_state,ti99_4a) m_int12 = CLEAR_LINE; } -static MACHINE_CONFIG_START( ti99_4a, ti99_4x_state ) +static MACHINE_CONFIG_START( ti99_4a ) // CPU MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map) MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(ti99_4x_state, external_operation) ) @@ -974,7 +974,7 @@ static MACHINE_CONFIG_START( ti99_4a, ti99_4x_state ) MCFG_TMS9901_P9_HANDLER( WRITELINE( ti99_4x_state, cassette_output) ) MCFG_TMS9901_INTLEVEL_HANDLER( WRITE8( ti99_4x_state, tms9901_interrupt) ) - MCFG_DEVICE_ADD( DATAMUX_TAG, DATAMUX, 0) + MCFG_DEVICE_ADD( DATAMUX_TAG, TI99_DATAMUX, 0) MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) MCFG_GROMPORT4_ADD( GROMPORT_TAG ) @@ -1112,7 +1112,7 @@ MACHINE_RESET_MEMBER(ti99_4x_state, ti99_4ev) m_gromclk_timer->adjust(attotime::zero, 0, attotime::from_hz(XTAL_10_738635MHz/24)); } -static MACHINE_CONFIG_START( ti99_4ev_60hz, ti99_4x_state ) +static MACHINE_CONFIG_START( ti99_4ev_60hz ) // CPU MCFG_TMS99xx_ADD("maincpu", TMS9900, 3000000, memmap, cru_map) MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(ti99_4x_state, external_operation) ) @@ -1136,7 +1136,7 @@ static MACHINE_CONFIG_START( ti99_4ev_60hz, ti99_4x_state ) MCFG_TMS9901_P9_HANDLER( WRITELINE( ti99_4x_state, cassette_output) ) MCFG_TMS9901_INTLEVEL_HANDLER( WRITE8( ti99_4x_state, tms9901_interrupt) ) - MCFG_DEVICE_ADD( DATAMUX_TAG, DATAMUX, 0) + MCFG_DEVICE_ADD( DATAMUX_TAG, TI99_DATAMUX, 0) MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) MCFG_GROMPORT4_ADD( GROMPORT_TAG ) MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) ) @@ -1253,10 +1253,10 @@ ROM_START(ti99_4ev) ROM_LOAD("994a_grom2.u502", 0x4000, 0x1800, CRC(e0bb5341) SHA1(e255f0d65d69b927cecb8fcfac7a4c17d585ea96)) /* system GROM 2 */ ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1979, ti99_4, 0, 0, ti99_4_60hz, ti99_4, driver_device, 0, "Texas Instruments", "TI-99/4 Home Computer (US)", MACHINE_SUPPORTS_SAVE) -COMP( 1980, ti99_4e, ti99_4, 0, ti99_4_50hz, ti99_4, driver_device, 0, "Texas Instruments", "TI-99/4 Home Computer (Europe)", MACHINE_SUPPORTS_SAVE) -COMP( 1981, ti99_4a, 0, 0, ti99_4a_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer (US)", MACHINE_SUPPORTS_SAVE) -COMP( 1981, ti99_4ae, ti99_4a, 0, ti99_4a_50hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer (Europe)", MACHINE_SUPPORTS_SAVE) -COMP( 1983, ti99_4qi, ti99_4a, 0, ti99_4qi_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4QI Home Computer (US)", MACHINE_SUPPORTS_SAVE) -COMP( 1994, ti99_4ev, ti99_4a, 0, ti99_4ev_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer with EVPC", MACHINE_SUPPORTS_SAVE) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1979, ti99_4, 0, 0, ti99_4_60hz, ti99_4, ti99_4x_state, 0, "Texas Instruments", "TI-99/4 Home Computer (US)", MACHINE_SUPPORTS_SAVE) +COMP( 1980, ti99_4e, ti99_4, 0, ti99_4_50hz, ti99_4, ti99_4x_state, 0, "Texas Instruments", "TI-99/4 Home Computer (Europe)", MACHINE_SUPPORTS_SAVE) +COMP( 1981, ti99_4a, 0, 0, ti99_4a_60hz, ti99_4a, ti99_4x_state, 0, "Texas Instruments", "TI-99/4A Home Computer (US)", MACHINE_SUPPORTS_SAVE) +COMP( 1981, ti99_4ae, ti99_4a, 0, ti99_4a_50hz, ti99_4a, ti99_4x_state, 0, "Texas Instruments", "TI-99/4A Home Computer (Europe)", MACHINE_SUPPORTS_SAVE) +COMP( 1983, ti99_4qi, ti99_4a, 0, ti99_4qi_60hz, ti99_4a, ti99_4x_state, 0, "Texas Instruments", "TI-99/4QI Home Computer (US)", MACHINE_SUPPORTS_SAVE) +COMP( 1994, ti99_4ev, ti99_4a, 0, ti99_4ev_60hz, ti99_4a, ti99_4x_state, 0, "Texas Instruments", "TI-99/4A Home Computer with EVPC", MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/ti99_8.cpp b/src/mame/drivers/ti99_8.cpp index 5d5c52888ca..a2556b4c137 100644 --- a/src/mame/drivers/ti99_8.cpp +++ b/src/mame/drivers/ti99_8.cpp @@ -183,9 +183,9 @@ Known Issues (MZ, 2010-11-07) #include "bus/ti99x/998board.h" #include "bus/ti99x/gromport.h" -#include "bus/ti99x/joyport.h" -#include "bus/ti99_peb/peribox.h" +#include "bus/ti99/joyport/joyport.h" +#include "bus/ti99/peb/peribox.h" #include "softlist.h" #include "speaker.h" @@ -221,7 +221,9 @@ public: m_peribox(*this, PERIBOX_TAG), m_mainboard(*this, MAINBOARD8_TAG), m_joyport(*this, JOYPORT_TAG), - m_cassette(*this, "cassette") { }; + m_cassette(*this, "cassette") + { + } // Machine management DECLARE_MACHINE_START(ti99_8); @@ -273,10 +275,10 @@ private: // Connected devices required_device m_cpu; required_device m_tms9901; - required_device m_gromport; + required_device m_gromport; required_device m_peribox; required_device m_mainboard; - required_device m_joyport; + required_device m_joyport; required_device m_cassette; }; @@ -449,7 +451,7 @@ READ8_MEMBER( ti99_8_state::read_by_9901 ) uint8_t joyst; switch (offset & 0x03) { - case TMS9901_CB_INT7: + case tms9901_device::CB_INT7: // Read pins INT3*-INT7* of TI99's 9901. // // bit 1: INT1 status @@ -475,7 +477,7 @@ READ8_MEMBER( ti99_8_state::read_by_9901 ) break; - case TMS9901_INT8_INT15: + case tms9901_device::INT8_INT15: // Read pins int8_t*-INT15* of TI99's 9901. // // bit 0-2: keyboard status bits 2 to 4 @@ -497,11 +499,11 @@ READ8_MEMBER( ti99_8_state::read_by_9901 ) answer = (answer >> 2) & 0x07; break; - case TMS9901_P0_P7: + case tms9901_device::P0_P7: // Read pins P0-P7 of TI99's 9901. None here. break; - case TMS9901_P8_P15: + case tms9901_device::P8_P15: // Read pins P8-P15 of TI99's 9901. (TI-99/8) // // bit 26: high @@ -712,7 +714,7 @@ MACHINE_RESET_MEMBER(ti99_8_state, ti99_8) m_int2 = CLEAR_LINE; } -static MACHINE_CONFIG_START( ti99_8, ti99_8_state ) +static MACHINE_CONFIG_START( ti99_8 ) // basic machine hardware */ // TMS9995-MP9537 CPU @ 10.7 MHz // MP9537 mask: This variant of the TMS9995 does not contain on-chip RAM @@ -740,7 +742,7 @@ static MACHINE_CONFIG_START( ti99_8, ti99_8_state ) MCFG_TMS9901_INTLEVEL_HANDLER( WRITE8( ti99_8_state, tms9901_interrupt) ) // Mainboard with custom chips - MCFG_DEVICE_ADD(MAINBOARD8_TAG, MAINBOARD8, 0) + MCFG_DEVICE_ADD(MAINBOARD8_TAG, TI99_MAINBOARD8, 0) MCFG_MAINBOARD8_READY_CALLBACK(WRITELINE(ti99_8_state, console_ready)) MCFG_MAINBOARD8_RESET_CALLBACK(WRITELINE(ti99_8_state, console_reset)) MCFG_MAINBOARD8_HOLD_CALLBACK(WRITELINE(ti99_8_state, cpu_hold)) @@ -912,6 +914,6 @@ ROM_END #define rom_ti99_8e rom_ti99_8 -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1983, ti99_8, 0, 0, ti99_8_60hz,ti99_8, driver_device, 0, "Texas Instruments", "TI-99/8 Computer (US)" , MACHINE_SUPPORTS_SAVE ) -COMP( 1983, ti99_8e, ti99_8, 0, ti99_8_50hz,ti99_8, driver_device, 0, "Texas Instruments", "TI-99/8 Computer (Europe)" , MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, ti99_8, 0, 0, ti99_8_60hz, ti99_8, ti99_8_state, 0, "Texas Instruments", "TI-99/8 Computer (US)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, ti99_8e, ti99_8, 0, ti99_8_50hz, ti99_8, ti99_8_state, 0, "Texas Instruments", "TI-99/8 Computer (Europe)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tiamc1.cpp b/src/mame/drivers/tiamc1.cpp index 69ee80cead6..b74d57f9398 100644 --- a/src/mame/drivers/tiamc1.cpp +++ b/src/mame/drivers/tiamc1.cpp @@ -119,6 +119,7 @@ #include "emu.h" #include "includes/tiamc1.h" +#include "audio/tiamc1.h" #include "cpu/i8085/i8085.h" #include "machine/i8255.h" @@ -322,7 +323,7 @@ static GFXDECODE_START( kot ) GFXDECODE_END -static MACHINE_CONFIG_START( tiamc1, tiamc1_state ) +static MACHINE_CONFIG_START( tiamc1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(tiamc1_map) @@ -543,9 +544,9 @@ ROM_START( kot ) ROM_END -GAME( 1988, konek, 0, tiamc1, tiamc1, driver_device, 0, ROT0, "Terminal", "Konek-Gorbunok", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, sosterm, 0, tiamc1, tiamc1, driver_device, 0, ROT0, "Terminal", "S.O.S.", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, koroleva, 0, tiamc1, tiamc1, driver_device, 0, ROT0, "Terminal", "Snezhnaja Koroleva", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, bilyard, 0, tiamc1, tiamc1, driver_device, 0, ROT0, "Terminal", "Billiard", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gorodki, 0, tiamc1, gorodki, driver_device, 0, ROT0, "Terminal", "Gorodki", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, kot, 0, kot, kot, driver_device, 0, ROT0, "Terminal", "Kot-Rybolov", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 1988, konek, 0, tiamc1, tiamc1, tiamc1_state, 0, ROT0, "Terminal", "Konek-Gorbunok", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, sosterm, 0, tiamc1, tiamc1, tiamc1_state, 0, ROT0, "Terminal", "S.O.S.", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, koroleva, 0, tiamc1, tiamc1, tiamc1_state, 0, ROT0, "Terminal", "Snezhnaja Koroleva", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, bilyard, 0, tiamc1, tiamc1, tiamc1_state, 0, ROT0, "Terminal", "Billiard", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gorodki, 0, tiamc1, gorodki, tiamc1_state, 0, ROT0, "Terminal", "Gorodki", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, kot, 0, kot, kot, tiamc1_state, 0, ROT0, "Terminal", "Kot-Rybolov", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) diff --git a/src/mame/drivers/ticalc1x.cpp b/src/mame/drivers/ticalc1x.cpp index d7f52c1cf0b..5e058597450 100644 --- a/src/mame/drivers/ticalc1x.cpp +++ b/src/mame/drivers/ticalc1x.cpp @@ -29,6 +29,7 @@ #include "mathmarv.lh" #include "ti1250.lh" #include "ti1270.lh" +#include "ti25503.lh" #include "ti30.lh" #include "tisr16.lh" #include "wizatron.lh" @@ -183,7 +184,7 @@ static INPUT_PORTS_START( cmulti8 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -static MACHINE_CONFIG_START( cmulti8, cmulti8_state ) +static MACHINE_CONFIG_START( cmulti8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1070, 250000) // approximation - RC osc. R=56K, C=68pf @@ -399,7 +400,7 @@ static INPUT_PORTS_START( tisr16ii ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") INPUT_PORTS_END -static MACHINE_CONFIG_START( tisr16, tisr16_state ) +static MACHINE_CONFIG_START( tisr16 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1000, 300000) // approximation - RC osc. R=43K, C=68pf (note: tisr16ii MCU RC osc. is different: R=30K, C=100pf, same freq) @@ -513,7 +514,7 @@ static INPUT_PORTS_START( ti1250 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) PORT_START("IN.5") // O7 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_NAME("MC") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_NAME("MC") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("MR") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_INSERT) PORT_NAME("M-") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("M+") @@ -537,7 +538,7 @@ static INPUT_PORTS_START( ti1270 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-") INPUT_PORTS_END -static MACHINE_CONFIG_START( ti1250, ti1250_state ) +static MACHINE_CONFIG_START( ti1250 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0950, 200000) // approximation - RC osc. R=68K, C=68pf @@ -566,6 +567,121 @@ MACHINE_CONFIG_END +/*************************************************************************** + + TI-2550 III/TI-1265 (both have same chip) + * TMS1040 MCU label TMS1043NL ZA0352 (die label 1040A, 1043A) + * 9-digit cyan VFD display + +***************************************************************************/ + +class ti25503_state : public ticalc1x_state +{ +public: + ti25503_state(const machine_config &mconfig, device_type type, const char *tag) + : ticalc1x_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE16_MEMBER(write_o); + DECLARE_WRITE16_MEMBER(write_r); + DECLARE_READ8_MEMBER(read_k); +}; + +// handlers + +void ti25503_state::prepare_display() +{ + set_display_segmask(0x1ff, 0xff); + display_matrix(8, 9, m_o, m_r); +} + +WRITE16_MEMBER(ti25503_state::write_r) +{ + // R0-R6: input mux + // R0-R8: select digit + m_r = m_inp_mux = data; + prepare_display(); +} + +WRITE16_MEMBER(ti25503_state::write_o) +{ + // O0-O7: digit segments + m_o = data; + prepare_display(); +} + +READ8_MEMBER(ti25503_state::read_k) +{ + // K: multiplexed inputs + return read_inputs(7); +} + + +// config + +static INPUT_PORTS_START( ti25503 ) + PORT_START("IN.0") // R0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=") + + PORT_START("IN.1") // R1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+") + + PORT_START("IN.2") // R2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-") + + PORT_START("IN.3") // R3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY) + + PORT_START("IN.4") // R4 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("C") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("%") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) + + PORT_START("IN.5") // R5 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("CM") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_END) PORT_NAME("MR") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_INSERT) PORT_NAME("M-") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("M+") + + PORT_START("IN.6") // R6 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("RV") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x") +INPUT_PORTS_END + +static MACHINE_CONFIG_START( ti25503 ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", TMS1000, 250000) // approximation + MCFG_TMS1XXX_READ_K_CB(READ8(ti25503_state, read_k)) + MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti25503_state, write_o)) + MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti25503_state, write_r)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_ti25503) + + /* no sound! */ +MACHINE_CONFIG_END + + + + + /*************************************************************************** TI-1000 (1977 version) @@ -648,7 +764,7 @@ static INPUT_PORTS_START( ti1000 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=") INPUT_PORTS_END -static MACHINE_CONFIG_START( ti1000, ti1000_state ) +static MACHINE_CONFIG_START( ti1000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1990, 250000) // approximation @@ -748,7 +864,7 @@ static INPUT_PORTS_START( wizatron ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) INPUT_PORTS_END -static MACHINE_CONFIG_START( wizatron, wizatron_state ) +static MACHINE_CONFIG_START( wizatron ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation @@ -822,7 +938,7 @@ static INPUT_PORTS_START( lilprof ) PORT_CONFSETTING( 0x08, "4" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( lilprof, lilprof_state ) +static MACHINE_CONFIG_START( lilprof ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation @@ -932,7 +1048,7 @@ static INPUT_PORTS_START( lilprof78 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+") INPUT_PORTS_END -static MACHINE_CONFIG_START( lilprof78, lilprof78_state ) +static MACHINE_CONFIG_START( lilprof78 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1990, 250000) // approximation @@ -1044,7 +1160,7 @@ static INPUT_PORTS_START( dataman ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("Electro Flash") INPUT_PORTS_END -static MACHINE_CONFIG_START( dataman, dataman_state ) +static MACHINE_CONFIG_START( dataman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1980, 300000) // patent says 300kHz @@ -1111,7 +1227,7 @@ static INPUT_PORTS_START( mathmarv ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("Flash") INPUT_PORTS_END -static MACHINE_CONFIG_START( mathmarv, mathmarv_state ) +static MACHINE_CONFIG_START( mathmarv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1980, 300000) // assume same as dataman @@ -1371,7 +1487,7 @@ static INPUT_PORTS_START( tibusan ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false) INPUT_PORTS_END -static MACHINE_CONFIG_START( ti30, ti30_state ) +static MACHINE_CONFIG_START( ti30 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0980, 400000) // guessed @@ -1471,6 +1587,17 @@ ROM_START( ti1270 ) ROM_END +ROM_START( ti25503 ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "tms1043nl_za0352", 0x0000, 0x0400, CRC(434c2684) SHA1(ff566f1991f63cfe057879674e6bc7ccd580a919) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_ti25503_micro.pla", 0, 867, CRC(65d274ae) SHA1(33d77efe38f8b067096c643d71263bb5adde0ca9) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_ti25503_output.pla", 0, 365, CRC(ac43b768) SHA1(5eb19b493328c73edab73e44591afda0fbe4965f) ) +ROM_END + + ROM_START( ti1000 ) ROM_REGION( 0x0400, "maincpu", 0 ) ROM_LOAD( "tmc1991nl", 0x0000, 0x0400, CRC(2da5381d) SHA1(b5dc14553db2068ed48e130e5ec9109930d8cda9) ) @@ -1602,24 +1729,27 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -COMP( 1977, cmulti8, 0, 0, cmulti8, cmulti8, driver_device, 0, "Canon", "Multi 8 (Canon)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +COMP( 1977, cmulti8, 0, 0, cmulti8, cmulti8, cmulti8_state, 0, "Canon", "Multi 8 (Canon)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) + +COMP( 1974, tisr16, 0, 0, tisr16, tisr16, tisr16_state, 0, "Texas Instruments", "SR-16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1975, tisr16ii, 0, 0, tisr16, tisr16ii, tisr16_state, 0, "Texas Instruments", "SR-16 II", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) + +COMP( 1975, ti1250, 0, 0, ti1250, ti1250, ti1250_state, 0, "Texas Instruments", "TI-1250 (1975 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1976, ti125076, ti1250, 0, ti1270, ti1250, ti1250_state, 0, "Texas Instruments", "TI-1250 (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1976, ti1270, 0, 0, ti1270, ti1270, ti1250_state, 0, "Texas Instruments", "TI-1270", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1974, tisr16, 0, 0, tisr16, tisr16, driver_device, 0, "Texas Instruments", "SR-16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1975, tisr16ii, 0, 0, tisr16, tisr16ii, driver_device, 0, "Texas Instruments", "SR-16 II", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1976, ti25503, 0, 0, ti25503, ti25503, ti25503_state, 0, "Texas Instruments", "TI-2550 III", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1975, ti1250, 0, 0, ti1250, ti1250, driver_device, 0, "Texas Instruments", "TI-1250 (1975 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1976, ti125076, ti1250, 0, ti1270, ti1250, driver_device, 0, "Texas Instruments", "TI-1250 (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1976, ti1270, 0, 0, ti1270, ti1270, driver_device, 0, "Texas Instruments", "TI-1270", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1977, ti1000, 0, 0, ti1000, ti1000, driver_device, 0, "Texas Instruments", "TI-1000 (1977 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1977, ti1000, 0, 0, ti1000, ti1000, ti1000_state, 0, "Texas Instruments", "TI-1000 (1977 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1977, wizatron, 0, 0, wizatron, wizatron, driver_device, 0, "Texas Instruments", "Wiz-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1976, lilprof, 0, 0, lilprof, lilprof, driver_device, 0, "Texas Instruments", "Little Professor (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1978, lilprof78, lilprof, 0, lilprof78, lilprof78, driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1977, wizatron, 0, 0, wizatron, wizatron, wizatron_state, 0, "Texas Instruments", "Wiz-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1976, lilprof, 0, 0, lilprof, lilprof, lilprof_state, 0, "Texas Instruments", "Little Professor (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1978, lilprof78, lilprof, 0, lilprof78, lilprof78, lilprof78_state, 0, "Texas Instruments", "Little Professor (1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1977, dataman, 0, 0, dataman, dataman, driver_device, 0, "Texas Instruments", "DataMan", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1980, mathmarv, 0, 0, mathmarv, mathmarv, driver_device, 0, "Texas Instruments", "Math Marvel", MACHINE_SUPPORTS_SAVE ) +COMP( 1977, dataman, 0, 0, dataman, dataman, dataman_state, 0, "Texas Instruments", "DataMan", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1980, mathmarv, 0, 0, mathmarv, mathmarv, mathmarv_state, 0, "Texas Instruments", "Math Marvel", MACHINE_SUPPORTS_SAVE ) -COMP( 1976, ti30, 0, 0, ti30, ti30, driver_device, 0, "Texas Instruments", "TI-30", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1976, tibusan, 0, 0, ti30, tibusan, driver_device, 0, "Texas Instruments", "TI Business Analyst", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1977, tiprog, 0, 0, ti30, tiprog, driver_device, 0, "Texas Instruments", "TI Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1976, ti30, 0, 0, ti30, ti30, ti30_state, 0, "Texas Instruments", "TI-30", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1976, tibusan, 0, 0, ti30, tibusan, ti30_state, 0, "Texas Instruments", "TI Business Analyst", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1977, tiprog, 0, 0, ti30, tiprog, ti30_state, 0, "Texas Instruments", "TI Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/tickee.cpp b/src/mame/drivers/tickee.cpp index 9cc0f2afb4a..6686a4c1457 100644 --- a/src/mame/drivers/tickee.cpp +++ b/src/mame/drivers/tickee.cpp @@ -742,7 +742,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( tickee, tickee_state ) +static MACHINE_CONFIG_START( tickee ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, XTAL_40MHz) @@ -790,7 +790,7 @@ static MACHINE_CONFIG_DERIVED( ghoshunt, tickee ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rapidfir, tickee_state ) +static MACHINE_CONFIG_START( rapidfir ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, XTAL_50MHz) @@ -819,12 +819,12 @@ static MACHINE_CONFIG_START( rapidfir, tickee_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", OKI_CLOCK, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", OKI_CLOCK, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mouseatk, tickee_state ) +static MACHINE_CONFIG_START( mouseatk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS34010, XTAL_40MHz) @@ -855,7 +855,7 @@ static MACHINE_CONFIG_START( mouseatk, tickee_state ) MCFG_AY8910_PORT_B_READ_CB(IOPORT("IN1")) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_OKIM6295_ADD("oki", OKI_CLOCK, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", OKI_CLOCK, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_CONFIG_END @@ -1151,11 +1151,11 @@ ROM_END * *************************************/ -GAME( 1994, tickee, 0, tickee, tickee, driver_device, 0, ROT0, "Raster Elite", "Tickee Tickats", 0 ) -GAME( 1996, ghoshunt, 0, ghoshunt, ghoshunt, driver_device, 0, ROT0, "Hanaho Games", "Ghost Hunter", 0 ) -GAME( 1996, tutstomb, 0, ghoshunt, ghoshunt, driver_device, 0, ROT0, "Island Design", "Tut's Tomb", 0 ) -GAME( 1996, mouseatk, 0, mouseatk, mouseatk, driver_device, 0, ROT0, "ICE", "Mouse Attack", 0 ) -GAME( 1998, rapidfir, 0, rapidfir, rapidfir, driver_device, 0, ROT0, "Hanaho Games", "Rapid Fire v1.1 (Build 239)", 0 ) -GAME( 1998, rapidfira, rapidfir, rapidfir, rapidfir, driver_device, 0, ROT0, "Hanaho Games", "Rapid Fire v1.1 (Build 238)", 0 ) -GAME( 1998, rapidfire, rapidfir, rapidfir, rapidfir, driver_device, 0, ROT0, "Hanaho Games", "Rapid Fire v1.0 (Build 236)", 0 ) -GAME( 1999, maletmad, 0, rapidfir, rapidfir, driver_device, 0, ROT0, "Hanaho Games", "Mallet Madness v2.1", 0 ) +GAME( 1994, tickee, 0, tickee, tickee, tickee_state, 0, ROT0, "Raster Elite", "Tickee Tickats", 0 ) +GAME( 1996, ghoshunt, 0, ghoshunt, ghoshunt, tickee_state, 0, ROT0, "Hanaho Games", "Ghost Hunter", 0 ) +GAME( 1996, tutstomb, 0, ghoshunt, ghoshunt, tickee_state, 0, ROT0, "Island Design", "Tut's Tomb", 0 ) +GAME( 1996, mouseatk, 0, mouseatk, mouseatk, tickee_state, 0, ROT0, "ICE", "Mouse Attack", 0 ) +GAME( 1998, rapidfir, 0, rapidfir, rapidfir, tickee_state, 0, ROT0, "Hanaho Games", "Rapid Fire v1.1 (Build 239)", 0 ) +GAME( 1998, rapidfira, rapidfir, rapidfir, rapidfir, tickee_state, 0, ROT0, "Hanaho Games", "Rapid Fire v1.1 (Build 238)", 0 ) +GAME( 1998, rapidfire, rapidfir, rapidfir, rapidfir, tickee_state, 0, ROT0, "Hanaho Games", "Rapid Fire v1.0 (Build 236)", 0 ) +GAME( 1999, maletmad, 0, rapidfir, rapidfir, tickee_state, 0, ROT0, "Hanaho Games", "Mallet Madness v2.1", 0 ) diff --git a/src/mame/drivers/tigeroad.cpp b/src/mame/drivers/tigeroad.cpp index 2d949670cbd..8fad27fe349 100644 --- a/src/mame/drivers/tigeroad.cpp +++ b/src/mame/drivers/tigeroad.cpp @@ -384,18 +384,18 @@ INPUT_PORTS_END static INPUT_PORTS_START( pushman ) PORT_START("P1_P2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) @@ -451,18 +451,18 @@ INPUT_PORTS_END static INPUT_PORTS_START( bballs ) PORT_START("P1_P2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Open/Close Gate") // Open/Close gate PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Zap") // Use Zap PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) // BUTTON3 in "test mode" - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Open/Close Gate") // Open/Close gate PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Zap") // Use Zap PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -574,7 +574,7 @@ static GFXDECODE_START( tigeroad ) GFXDECODE_ENTRY( "sprites", 0, sprite_layout, 0x200, 16 ) GFXDECODE_END -static MACHINE_CONFIG_START( tigeroad, tigeroad_state ) +static MACHINE_CONFIG_START( tigeroad ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */ @@ -596,7 +596,7 @@ static MACHINE_CONFIG_START( tigeroad, tigeroad_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(tigeroad_state, screen_update_tigeroad) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", tigeroad) @@ -633,12 +633,12 @@ static MACHINE_CONFIG_DERIVED( toramich, tigeroad ) /* sound hardware */ MCFG_SOUND_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* 4KHz playback ? */ + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* 4KHz playback ? */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( f1dream_comad, tigeroad_state ) +static MACHINE_CONFIG_START( f1dream_comad ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) @@ -660,7 +660,7 @@ static MACHINE_CONFIG_START( f1dream_comad, tigeroad_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(tigeroad_state, screen_update_tigeroad) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") @@ -695,7 +695,7 @@ void pushman_state::machine_start() save_item(NAME(m_mcu_latch_ctl)); } -static MACHINE_CONFIG_DERIVED_CLASS(pushman, f1dream_comad, pushman_state) +static MACHINE_CONFIG_DERIVED(pushman, f1dream_comad) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(pushman_map) @@ -1178,21 +1178,21 @@ DRIVER_INIT_MEMBER(tigeroad_state, f1dream) /***************************************************************************/ -GAME( 1987, tigeroad, 0, tigeroad, tigeroad, driver_device, 0, ROT0, "Capcom", "Tiger Road (US)", 0 ) -GAME( 1987, tigeroadu,tigeroad, tigeroad, tigeroad, driver_device, 0, ROT0, "Capcom (Romstar license)", "Tiger Road (US, Romstar license)", 0 ) -GAME( 1987, toramich, tigeroad, toramich, toramich, driver_device, 0, ROT0, "Capcom", "Tora e no Michi (Japan)", 0 ) -GAME( 1987, tigeroadb,tigeroad, tigeroad, tigeroad, driver_device, 0, ROT0, "bootleg", "Tiger Road (US bootleg)", 0 ) +GAME( 1987, tigeroad, 0, tigeroad, tigeroad, tigeroad_state, 0, ROT0, "Capcom", "Tiger Road (US)", 0 ) +GAME( 1987, tigeroadu,tigeroad, tigeroad, tigeroad, tigeroad_state, 0, ROT0, "Capcom (Romstar license)", "Tiger Road (US, Romstar license)", 0 ) +GAME( 1987, toramich, tigeroad, toramich, toramich, tigeroad_state, 0, ROT0, "Capcom", "Tora e no Michi (Japan)", 0 ) +GAME( 1987, tigeroadb,tigeroad, tigeroad, tigeroad, tigeroad_state, 0, ROT0, "bootleg", "Tiger Road (US bootleg)", 0 ) /* F1 Dream has an Intel 8751 microcontroller for protection */ GAME( 1988, f1dream, 0, tigeroad, f1dream, tigeroad_state, f1dream, ROT0, "Capcom (Romstar license)", "F-1 Dream", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // collisions are wrong -GAME( 1988, f1dreamb, f1dream, tigeroad, f1dream, driver_device, 0, ROT0, "bootleg", "F-1 Dream (bootleg, set 1)", 0 ) -GAME( 1988, f1dreamba,f1dream, tigeroad, f1dream, driver_device, 0, ROT0, "bootleg", "F-1 Dream (bootleg, set 2)", 0 ) +GAME( 1988, f1dreamb, f1dream, tigeroad, f1dream, tigeroad_state, 0, ROT0, "bootleg", "F-1 Dream (bootleg, set 1)", 0 ) +GAME( 1988, f1dreamba,f1dream, tigeroad, f1dream, tigeroad_state, 0, ROT0, "bootleg", "F-1 Dream (bootleg, set 2)", 0 ) /* This Comad hardware is based around the F1 Dream design */ -GAME( 1990, pushman, 0, pushman, pushman, driver_device, 0, ROT0, "Comad", "Pushman (Korea, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, pushmana, pushman, pushman, pushman, driver_device, 0, ROT0, "Comad", "Pushman (Korea, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, pushmans, pushman, pushman, pushman, driver_device, 0, ROT0, "Comad (American Sammy license)", "Pushman (American Sammy license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, pushmant, pushman, pushman, pushman, driver_device, 0, ROT0, "Comad (Top Tronic license)", "Pushman (Top Tronic license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, pushman, 0, pushman, pushman, pushman_state, 0, ROT0, "Comad", "Pushman (Korea, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, pushmana, pushman, pushman, pushman, pushman_state, 0, ROT0, "Comad", "Pushman (Korea, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, pushmans, pushman, pushman, pushman, pushman_state, 0, ROT0, "Comad (American Sammy license)", "Pushman (American Sammy license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, pushmant, pushman, pushman, pushman, pushman_state, 0, ROT0, "Comad (Top Tronic license)", "Pushman (Top Tronic license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, bballs, 0, bballs, bballs, driver_device, 0, ROT0, "Comad", "Bouncing Balls", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, bballsa, bballs, bballs, bballs, driver_device, 0, ROT0, "Comad", "Bouncing Balls (Adult)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, bballs, 0, bballs, bballs, pushman_state, 0, ROT0, "Comad", "Bouncing Balls", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, bballsa, bballs, bballs, bballs, pushman_state, 0, ROT0, "Comad", "Bouncing Balls (Adult)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tiki100.cpp b/src/mame/drivers/tiki100.cpp index 91149a0d020..0388d0e9aa5 100644 --- a/src/mame/drivers/tiki100.cpp +++ b/src/mame/drivers/tiki100.cpp @@ -695,7 +695,7 @@ void tiki100_state::machine_reset() /* Machine Driver */ -static MACHINE_CONFIG_START( tiki100, tiki100_state ) +static MACHINE_CONFIG_START( tiki100 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_8MHz/2) MCFG_CPU_PROGRAM_MAP(tiki100_mem) @@ -807,6 +807,6 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, kontiki, 0, 0, tiki100, tiki100, driver_device, 0, "Kontiki Data A/S", "KONTIKI 100", MACHINE_SUPPORTS_SAVE ) -COMP( 1984, tiki100, kontiki, 0, tiki100, tiki100, driver_device, 0, "Tiki Data A/S", "TIKI 100", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, kontiki, 0, 0, tiki100, tiki100, tiki100_state, 0, "Kontiki Data A/S", "KONTIKI 100", MACHINE_SUPPORTS_SAVE ) +COMP( 1984, tiki100, kontiki, 0, tiki100, tiki100, tiki100_state, 0, "Tiki Data A/S", "TIKI 100", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tim011.cpp b/src/mame/drivers/tim011.cpp index 2e95c9de071..2d4641cc948 100644 --- a/src/mame/drivers/tim011.cpp +++ b/src/mame/drivers/tim011.cpp @@ -121,7 +121,7 @@ static const floppy_format_type tim011_floppy_formats[] = { nullptr }; -static MACHINE_CONFIG_START( tim011,tim011_state ) +static MACHINE_CONFIG_START( tim011 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z180, XTAL_12_288MHz / 2) // location U17 HD64180 MCFG_CPU_PROGRAM_MAP(tim011_mem) @@ -162,5 +162,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, tim011, 0, 0, tim011, tim011, driver_device, 0, "Mihajlo Pupin Institute", "TIM-011", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, tim011, 0, 0, tim011, tim011, tim011_state, 0, "Mihajlo Pupin Institute", "TIM-011", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/tim100.cpp b/src/mame/drivers/tim100.cpp index 5e80ae8c2f5..c885a3a66c9 100644 --- a/src/mame/drivers/tim100.cpp +++ b/src/mame/drivers/tim100.cpp @@ -168,7 +168,7 @@ WRITE_LINE_MEMBER( tim100_state::clock_w ) } -static MACHINE_CONFIG_START( tim100, tim100_state ) +static MACHINE_CONFIG_START( tim100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8085A, XTAL_4_9152MHz) // divider unknown MCFG_CPU_PROGRAM_MAP(tim100_mem) @@ -239,4 +239,4 @@ ROM_START( tim100 ) ROM_END /* Driver */ -COMP( 1985, tim100, 0, 0, tim100, tim100, driver_device, 0, "Mihajlo Pupin Institute", "TIM-100", MACHINE_IS_SKELETON) +COMP( 1985, tim100, 0, 0, tim100, tim100, tim100_state, 0, "Mihajlo Pupin Institute", "TIM-100", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/timelimt.cpp b/src/mame/drivers/timelimt.cpp index 06147a0c131..782f4daba1f 100644 --- a/src/mame/drivers/timelimt.cpp +++ b/src/mame/drivers/timelimt.cpp @@ -221,7 +221,7 @@ INTERRUPT_GEN_MEMBER(timelimt_state::irq) /***************************************************************************/ -static MACHINE_CONFIG_START( timelimt, timelimt_state ) +static MACHINE_CONFIG_START( timelimt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 5000000) /* 5.000 MHz */ @@ -329,5 +329,5 @@ ROM_START( progress ) ROM_LOAD( "57.bin", 0x0040, 0x0020, CRC(18455a79) SHA1(e4d64368560e3116a922588129f5f91a4c520f7d) ) ROM_END -GAME( 1983, timelimt, 0, timelimt, timelimt, driver_device, 0, ROT90, "Chuo Co. Ltd", "Time Limit", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, progress, 0, timelimt, progress, driver_device, 0, ROT90, "Chuo Co. Ltd", "Progress", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, timelimt, 0, timelimt, timelimt, timelimt_state, 0, ROT90, "Chuo Co. Ltd", "Time Limit", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, progress, 0, timelimt, progress, timelimt_state, 0, ROT90, "Chuo Co. Ltd", "Progress", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/timeplt.cpp b/src/mame/drivers/timeplt.cpp index 5c782878f65..39a502f1af3 100644 --- a/src/mame/drivers/timeplt.cpp +++ b/src/mame/drivers/timeplt.cpp @@ -424,7 +424,7 @@ void timeplt_state::machine_reset() m_nmi_enable = 0; } -static MACHINE_CONFIG_START( timeplt, timeplt_state ) +static MACHINE_CONFIG_START( timeplt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/3/2) /* not confirmed, but common for Konami games of the era */ @@ -674,12 +674,12 @@ ROM_END * *************************************/ -GAME( 1982, timeplt, 0, timeplt, timeplt, driver_device, 0, ROT90, "Konami", "Time Pilot", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, timepltc, timeplt, timeplt, timeplt, driver_device, 0, ROT90, "Konami (Centuri license)", "Time Pilot (Centuri)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, timeplta, timeplt, timeplt, timeplt, driver_device, 0, ROT90, "Konami (Atari license)", "Time Pilot (Atari)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, spaceplt, timeplt, timeplt, timeplt, driver_device, 0, ROT90, "bootleg", "Space Pilot", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, timeplt, 0, timeplt, timeplt, timeplt_state, 0, ROT90, "Konami", "Time Pilot", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, timepltc, timeplt, timeplt, timeplt, timeplt_state, 0, ROT90, "Konami (Centuri license)", "Time Pilot (Centuri)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, timeplta, timeplt, timeplt, timeplt, timeplt_state, 0, ROT90, "Konami (Atari license)", "Time Pilot (Atari)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, spaceplt, timeplt, timeplt, timeplt, timeplt_state, 0, ROT90, "bootleg", "Space Pilot", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, psurge, 0, psurge, psurge, driver_device, 0, ROT270, "Vision Electronics", "Power Surge", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, psurge, 0, psurge, psurge, timeplt_state, 0, ROT270, "Vision Electronics", "Power Surge", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, chkun, 0, chkun, chkun, driver_device, 0, ROT90, "Peni", "Chance Kun (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -GAME( 1987, bikkuric, 0, bikkuric,bikkuric, driver_device,0, ROT90, "Peni", "Bikkuri Card (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, chkun, 0, chkun, chkun, timeplt_state, 0, ROT90, "Peni", "Chance Kun (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +GAME( 1987, bikkuric, 0, bikkuric, bikkuric, timeplt_state, 0, ROT90, "Peni", "Bikkuri Card (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/timetrv.cpp b/src/mame/drivers/timetrv.cpp index de68294d241..dfec6fecc3d 100644 --- a/src/mame/drivers/timetrv.cpp +++ b/src/mame/drivers/timetrv.cpp @@ -150,7 +150,7 @@ INTERRUPT_GEN_MEMBER(timetrv_state::ld_irq) device.execute().set_input_line_and_vector(0,HOLD_LINE,0x48/4); //ld irq } -static MACHINE_CONFIG_START( timetrv, timetrv_state ) +static MACHINE_CONFIG_START( timetrv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I80188,20000000) //??? @@ -194,5 +194,5 @@ ROM_START( timetrv2 ) DISK_IMAGE_READONLY( "timetrv", 0, NO_DUMP ) ROM_END -GAME( 1991, timetrv, 0, timetrv, timetrv, driver_device, 0, ROT0, "Virtual Image Productions (Sega license)", "Time Traveler (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) -GAME( 1991, timetrv2, timetrv, timetrv, timetrv, driver_device, 0, ROT0, "Virtual Image Productions (Sega license)", "Time Traveler (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // Europe? +GAME( 1991, timetrv, 0, timetrv, timetrv, timetrv_state, 0, ROT0, "Virtual Image Productions (Sega license)", "Time Traveler (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 1991, timetrv2, timetrv, timetrv, timetrv, timetrv_state, 0, ROT0, "Virtual Image Productions (Sega license)", "Time Traveler (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // Europe? diff --git a/src/mame/drivers/timex.cpp b/src/mame/drivers/timex.cpp index 01478571d19..c839f8bfaa8 100644 --- a/src/mame/drivers/timex.cpp +++ b/src/mame/drivers/timex.cpp @@ -703,7 +703,7 @@ static MACHINE_CONFIG_DERIVED( ts2068, spectrum_128 ) MCFG_SCREEN_SIZE(TS2068_SCREEN_WIDTH, TS2068_SCREEN_HEIGHT) MCFG_SCREEN_VISIBLE_AREA(0, TS2068_SCREEN_WIDTH-1, 0, TS2068_SCREEN_HEIGHT-1) MCFG_SCREEN_UPDATE_DRIVER(spectrum_state, screen_update_ts2068) - MCFG_SCREEN_VBLANK_DRIVER(spectrum_state, screen_eof_timex) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(spectrum_state, screen_vblank_timex)) MCFG_GFXDECODE_MODIFY("gfxdecode", ts2068) @@ -748,7 +748,7 @@ static MACHINE_CONFIG_DERIVED( tc2048, spectrum ) MCFG_SCREEN_SIZE(TS2068_SCREEN_WIDTH, SPEC_SCREEN_HEIGHT) MCFG_SCREEN_VISIBLE_AREA(0, TS2068_SCREEN_WIDTH-1, 0, SPEC_SCREEN_HEIGHT-1) MCFG_SCREEN_UPDATE_DRIVER(spectrum_state, screen_update_tc2048) - MCFG_SCREEN_VBLANK_DRIVER(spectrum_state, screen_eof_timex) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(spectrum_state, screen_vblank_timex)) MCFG_VIDEO_START_OVERRIDE(spectrum_state, spectrum_128 ) @@ -782,7 +782,7 @@ ROM_START(uk2086) ROM_LOAD("ts2068_x.rom",0x14000,0x2000, CRC(ae16233a) SHA1(7e265a2c1f621ed365ea23bdcafdedbc79c1299c)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1984, tc2048, spectrum, 0, tc2048, spectrum, driver_device, 0, "Timex of Portugal", "TC-2048" , 0) -COMP( 1983, ts2068, spectrum, 0, ts2068, spectrum, driver_device, 0, "Timex Sinclair", "TS-2068" , 0) -COMP( 1986, uk2086, spectrum, 0, uk2086, spectrum, driver_device, 0, "Unipolbrit", "UK-2086 ver. 1.2" , 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, tc2048, spectrum, 0, tc2048, spectrum, spectrum_state, 0, "Timex of Portugal", "TC-2048" , 0 ) +COMP( 1983, ts2068, spectrum, 0, ts2068, spectrum, spectrum_state, 0, "Timex Sinclair", "TS-2068" , 0 ) +COMP( 1986, uk2086, spectrum, 0, uk2086, spectrum, spectrum_state, 0, "Unipolbrit", "UK-2086 ver. 1.2" , 0 ) diff --git a/src/mame/drivers/tispeak.cpp b/src/mame/drivers/tispeak.cpp index 5209008003c..50fc8c7d062 100644 --- a/src/mame/drivers/tispeak.cpp +++ b/src/mame/drivers/tispeak.cpp @@ -1195,7 +1195,7 @@ static MACHINE_CONFIG_FRAGMENT( tms5110_route ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( snmath, tispeak_state ) +static MACHINE_CONFIG_START( snmath ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0270, MASTER_CLOCK/2) @@ -1292,7 +1292,7 @@ static MACHINE_CONFIG_DERIVED( lantutor, snmath ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( snspellc, tispeak_state ) +static MACHINE_CONFIG_START( snspellc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, MASTER_CLOCK/2) @@ -1325,7 +1325,7 @@ static MACHINE_CONFIG_DERIVED( snspellcuk, snspellc ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vocaid, tispeak_state ) +static MACHINE_CONFIG_START( vocaid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1100, MASTER_CLOCK/2) @@ -1356,7 +1356,7 @@ static MACHINE_CONFIG_DERIVED( tntell, vocaid ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( k28m2, tispeak_state ) +static MACHINE_CONFIG_START( k28m2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS1400, MASTER_CLOCK/2) @@ -1739,7 +1739,7 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS COMP( 1979, snspell, 0, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) COMP( 1978, snspellp, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) COMP( 1980, snspellub, snspell, 0, sns_tmc0281d, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) @@ -1754,9 +1754,9 @@ COMP( 1981, snspellc, 0, 0, snspellc, snspellc, tispeak_state, sn COMP( 1982, snspellca, snspellc, 0, snspellc, snspellc, tispeak_state, snspell, "Texas Instruments", "Speak & Spell Compact (US, 1982 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) COMP( 1982, snspellcuk, snspellc, 0, snspellcuk, snspellcuk, tispeak_state, snspell, "Texas Instruments", "Speak & Write (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -COMP( 1980, snmath, 0, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -COMP( 1986, snmatha, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -COMP( 1980, snmathp, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IS_INCOMPLETE ) +COMP( 1980, snmath, 0, 0, snmath, snmath, tispeak_state, 0, "Texas Instruments", "Speak & Math (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +COMP( 1986, snmatha, snmath, 0, snmath, snmath, tispeak_state, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) +COMP( 1980, snmathp, snmath, 0, snmath, snmath, tispeak_state, 0, "Texas Instruments", "Speak & Math (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IS_INCOMPLETE ) COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, snspell, "Texas Instruments", "Speak & Read (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) @@ -1767,6 +1767,6 @@ COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tn COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) -COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) +COMP( 1982, vocaid, 0, 0, vocaid, tntell, tispeak_state, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) COMP( 1985, k28m2, 0, 0, k28m2, k28m2, tispeak_state, snspell, "Tiger Electronics", "K28: Talking Learning Computer (model 7-232)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/tispellb.cpp b/src/mame/drivers/tispellb.cpp index f4c212e1d2e..5876345a6b1 100644 --- a/src/mame/drivers/tispellb.cpp +++ b/src/mame/drivers/tispellb.cpp @@ -342,7 +342,7 @@ INPUT_PORTS_END ***************************************************************************/ -static MACHINE_CONFIG_START( rev1, tispellb_state ) +static MACHINE_CONFIG_START( rev1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0270, 350000) // approximation @@ -366,7 +366,7 @@ static MACHINE_CONFIG_START( rev1, tispellb_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rev2, tispellb_state ) +static MACHINE_CONFIG_START( rev2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", TMS0270, 350000) // approximation @@ -451,8 +451,8 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -COMP( 1978, spellb, 0, 0, rev1, spellb, driver_device, 0, "Texas Instruments", "Spelling B (1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -COMP( 1979, spellb79, spellb, 0, rev2, spellb, driver_device, 0, "Texas Instruments", "Spelling B (1979 version)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +COMP( 1978, spellb, 0, 0, rev1, spellb, tispellb_state, 0, "Texas Instruments", "Spelling B (1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +COMP( 1979, spellb79, spellb, 0, rev2, spellb, tispellb_state, 0, "Texas Instruments", "Spelling B (1979 version)", MACHINE_SUPPORTS_SAVE ) -COMP( 1979, mrchalgr, 0, 0, rev2, mrchalgr, driver_device, 0, "Texas Instruments", "Mr. Challenger", MACHINE_SUPPORTS_SAVE ) +COMP( 1979, mrchalgr, 0, 0, rev2, mrchalgr, tispellb_state, 0, "Texas Instruments", "Mr. Challenger", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tk2000.cpp b/src/mame/drivers/tk2000.cpp index 1f8b60f8853..cdec166af41 100644 --- a/src/mame/drivers/tk2000.cpp +++ b/src/mame/drivers/tk2000.cpp @@ -561,7 +561,7 @@ static INPUT_PORTS_START( tk2000 ) PORT_CONFSETTING(0x03, "Amber") INPUT_PORTS_END -static MACHINE_CONFIG_START( tk2000, tk2000_state ) +static MACHINE_CONFIG_START( tk2000 ) /* basic machine hardware */ MCFG_CPU_ADD(A2_CPU_TAG, M6502, 1021800) /* close to actual CPU frequency of 1.020484 MHz */ MCFG_CPU_PROGRAM_MAP(apple2_map) @@ -610,5 +610,5 @@ ROM_START(tk2000) ROM_LOAD( "tk2000.rom", 0x000000, 0x004000, CRC(dfdbacc3) SHA1(bb37844c31616046630868a4399ee3d55d6df277) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1984, tk2000, 0, 0, tk2000, tk2000, driver_device, 0, "Microdigital", "TK2000", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT INIT COMPANY FULLNAME */ +COMP( 1984, tk2000, 0, 0, tk2000, tk2000, tk2000_state, 0, "Microdigital", "TK2000", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/tk80.cpp b/src/mame/drivers/tk80.cpp index ddb0ee2121e..0e9424e0c88 100644 --- a/src/mame/drivers/tk80.cpp +++ b/src/mame/drivers/tk80.cpp @@ -248,7 +248,7 @@ WRITE8_MEMBER( tk80_state::mikrolab_serial_w ) m_ppi_portc = data; } -static MACHINE_CONFIG_START( tk80, tk80_state ) +static MACHINE_CONFIG_START( tk80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_1MHz) // 18.432 / 9 MCFG_CPU_PROGRAM_MAP(tk80_mem) @@ -277,7 +277,7 @@ static MACHINE_CONFIG_DERIVED( mikrolab, tk80 ) MCFG_I8255_OUT_PORTC_CB(WRITE8(tk80_state, mikrolab_serial_w)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( nd80z, tk80_state ) +static MACHINE_CONFIG_START( nd80z ) MCFG_CPU_ADD("maincpu", Z80, XTAL_1MHz) // Sharp LH0080A, can't see writing on xtal MCFG_CPU_PROGRAM_MAP(tk85_mem) MCFG_CPU_IO_MAP(nd80z_io) @@ -339,9 +339,9 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1976, tk80, 0, 0, tk80, tk80, driver_device, 0, "NEC", "TK-80", MACHINE_NO_SOUND_HW) -COMP( 1980, nectk85, tk80, 0, tk85, tk80, driver_device, 0, "NEC", "TK-85", MACHINE_NO_SOUND_HW) -COMP( 19??, nd80z, tk80, 0, nd80z, tk80, driver_device, 0, "Chunichi", "ND-80Z", MACHINE_NO_SOUND_HW) -COMP( 19??, mikrolab, tk80, 0, mikrolab, mikrolab, driver_device, 0, "", "Mikrolab KR580IK80", MACHINE_NO_SOUND_HW) -COMP( 19??, ics8080, tk80, 0, ics8080, ics8080, driver_device, 0, "", "ICS8080", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1976, tk80, 0, 0, tk80, tk80, tk80_state, 0, "NEC", "TK-80", MACHINE_NO_SOUND_HW ) +COMP( 1980, nectk85, tk80, 0, tk85, tk80, tk80_state, 0, "NEC", "TK-85", MACHINE_NO_SOUND_HW ) +COMP( 19??, nd80z, tk80, 0, nd80z, tk80, tk80_state, 0, "Chunichi", "ND-80Z", MACHINE_NO_SOUND_HW ) +COMP( 19??, mikrolab, tk80, 0, mikrolab, mikrolab, tk80_state, 0, "", "Mikrolab KR580IK80", MACHINE_NO_SOUND_HW ) +COMP( 19??, ics8080, tk80, 0, ics8080, ics8080, tk80_state, 0, "", "ICS8080", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/tk80bs.cpp b/src/mame/drivers/tk80bs.cpp index 0677dc63199..7176dd2f059 100644 --- a/src/mame/drivers/tk80bs.cpp +++ b/src/mame/drivers/tk80bs.cpp @@ -43,7 +43,7 @@ public: DECLARE_READ8_MEMBER(ppi_custom_r); DECLARE_WRITE8_MEMBER(ppi_custom_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(port_a_r); DECLARE_READ8_MEMBER(port_b_r); uint32_t screen_update_tk80bs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -142,7 +142,7 @@ READ8_MEMBER( tk80bs_state::port_b_r ) return 0; } -WRITE8_MEMBER( tk80bs_state::kbd_put ) +void tk80bs_state::kbd_put(u8 data) { data &= 0x7f; if (data > 0x5f) data-=0x20; @@ -166,7 +166,7 @@ static GFXDECODE_START( tk80bs ) GFXDECODE_END -static MACHINE_CONFIG_START( tk80bs, tk80bs_state ) +static MACHINE_CONFIG_START( tk80bs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_1MHz) //unknown clock MCFG_CPU_PROGRAM_MAP(tk80bs_mem) @@ -189,7 +189,7 @@ static MACHINE_CONFIG_START( tk80bs, tk80bs_state ) MCFG_I8255_IN_PORTB_CB(READ8(tk80bs_state, port_b_r)) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(tk80bs_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(tk80bs_state, kbd_put)) MACHINE_CONFIG_END @@ -220,5 +220,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, tk80bs, tk80, 0, tk80bs, tk80bs, driver_device, 0, "NEC", "TK-80BS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1980, tk80bs, tk80, 0, tk80bs, tk80bs, tk80bs_state, 0, "NEC", "TK-80BS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/tm990189.cpp b/src/mame/drivers/tm990189.cpp index 574070862e0..f78c0cc26c4 100644 --- a/src/mame/drivers/tm990189.cpp +++ b/src/mame/drivers/tm990189.cpp @@ -316,7 +316,7 @@ WRITE8_MEMBER( tm990189_state::sys9901_interrupt_callback ) READ8_MEMBER( tm990189_state::sys9901_r ) { uint8_t data = 0; - if (offset == TMS9901_CB_INT7) + if (offset == tms9901_device::CB_INT7) { static const char *const keynames[] = { "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", "LINE8" }; @@ -456,11 +456,11 @@ protected: virtual void device_start() override; }; -const device_type TM990_189_RS232 = device_creator; +DEFINE_DEVICE_TYPE(TM990_189_RS232, tm990_189_rs232_image_device, "tm990_189_rs232_image", "TM990/189 RS232 port") tm990_189_rs232_image_device::tm990_189_rs232_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TM990_189_RS232, "TM990/189 RS232 port", tag, owner, clock, "tm990_189_rs232_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, TM990_189_RS232, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -626,7 +626,7 @@ WRITE8_MEMBER( tm990189_state::video_joy_w ) // user tms9901 setup static const tms9901_interface usr9901reset_param = { - TMS9901_INT1 | TMS9901_INT2 | TMS9901_INT3 | TMS9901_INT4 | TMS9901_INT5 | TMS9901_INT6, // only input pins whose state is always known + tms9901_device::INT1 | tms9901_device::INT2 | tms9901_device::INT3 | tms9901_device::INT4 | tms9901_device::INT5 | tms9901_device::INT6, // only input pins whose state is always known // Read handler. Covers all input lines (see tms9901.h) DEVCB_NOOP, @@ -803,7 +803,7 @@ static ADDRESS_MAP_START( tm990_189_cru_map, AS_IO, 8, tm990189_state ) AM_RANGE(0x0400, 0x05ff) AM_DEVWRITE("tms9902", tms9902_device, cruwrite) /* optional tms9902 */ ADDRESS_MAP_END -static MACHINE_CONFIG_START( tm990_189, tm990189_state ) +static MACHINE_CONFIG_START( tm990_189 ) /* basic machine hardware */ MCFG_TMS99xx_ADD("maincpu", TMS9980A, 2000000, tm990_189_memmap, tm990_189_cru_map) MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(tm990189_state, external_operation) ) @@ -860,7 +860,7 @@ static MACHINE_CONFIG_START( tm990_189, tm990189_state ) MCFG_TIMER_START_DELAY(attotime::from_msec(150)) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tm990_189_v, tm990189_state ) +static MACHINE_CONFIG_START( tm990_189_v ) /* basic machine hardware */ MCFG_TMS99xx_ADD("maincpu", TMS9980A, 2000000, tm990_189_v_memmap, tm990_189_cru_map) MCFG_TMS99xx_EXTOP_HANDLER( WRITE8(tm990189_state, external_operation) ) @@ -1042,6 +1042,6 @@ static INPUT_PORTS_START(tm990_189) PORT_BIT( 0x3ff, 0x1aa, IPT_AD_STICK_Y) PORT_SENSITIVITY(JOYSTICK_SENSITIVITY) PORT_KEYDELTA(JOYSTICK_DELTA) PORT_MINMAX(0xd2,0x282 ) PORT_PLAYER(2) PORT_REVERSE INPUT_PORTS_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1978, 990189, 0, 0, tm990_189, tm990_189, driver_device, 0, "Texas Instruments", "TM 990/189 University Board microcomputer" , 0) -COMP( 1980, 990189v, 990189, 0, tm990_189_v, tm990_189, driver_device, 0, "Texas Instruments", "TM 990/189 University Board microcomputer with Video Board Interface" , 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1978, 990189, 0, 0, tm990_189, tm990_189, tm990189_state, 0, "Texas Instruments", "TM 990/189 University Board microcomputer", 0 ) +COMP( 1980, 990189v, 990189, 0, tm990_189_v, tm990_189, tm990189_state, 0, "Texas Instruments", "TM 990/189 University Board microcomputer with Video Board Interface", 0 ) diff --git a/src/mame/drivers/tmaster.cpp b/src/mame/drivers/tmaster.cpp index 6df266eda4f..ec1fa4f6512 100644 --- a/src/mame/drivers/tmaster.cpp +++ b/src/mame/drivers/tmaster.cpp @@ -358,7 +358,7 @@ int tmaster_compute_addr(uint16_t reg_low, uint16_t reg_mid, uint16_t reg_high) return (reg_low & 0xff) | ((reg_mid & 0x1ff) << 8) | (reg_high << 17); } -static MACHINE_CONFIG_START( tm, tmaster_state ) +static MACHINE_CONFIG_START( tm ) MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) /* 12MHz */ MCFG_CPU_PROGRAM_MAP(tmaster_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmaster_state, scanline_interrupt, "screen", 0, 1) @@ -390,7 +390,7 @@ static MACHINE_CONFIG_START( tm, tmaster_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_24MHz / 16, OKIM6295_PIN7_HIGH) /* 1.5Mhz? clock frequency & pin 7 not verified */ + MCFG_OKIM6295_ADD("oki", XTAL_24MHz / 16, PIN7_HIGH) /* 1.5Mhz? clock frequency & pin 7 not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -538,6 +538,23 @@ ROM_START( tm2kb ) ROM_CONTINUE( 0xc0000, 0x040000 ) ROM_END +ROM_START( tm2kspeval ) /* NOT FOR RELEASE / FOR EVALUATION - still requires credits - Defaults to Spanish but English can be selected */ + ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code + ROM_LOAD16_BYTE( "tm2k_spain_4.xx3.u51", 0x000000, 0x080000, CRC(ba51f4dd) SHA1(bcdf6acbe6546a562e74178d4f9cdb0e167baee2) ) /* Ver: 4.XX3 Spanish 6-26-97 - Evaluation Only */ + ROM_LOAD16_BYTE( "tm2k_spain_4.xx3.u52", 0x000001, 0x080000, CRC(6ca86264) SHA1(2fb04b8d4bd0a51653ca80e1af7fedab5aebb9dd) ) /* Ver: 4.XX3 Spanish 6-26-97 - Evaluation Only */ + + ROM_REGION( 0x400000, "blitter", ROMREGION_ERASE ) // Blitter gfx + ROM_LOAD16_BYTE( "tm2k_graphic.u38", 0x100000, 0x080000, CRC(22bb6cc5) SHA1(fc6cfd4e1e6e1455d648a7b63f2c8e37cdfe86d6) ) /* All 4 graphic roms marked as Rev 4.X */ + ROM_LOAD16_BYTE( "tm2k_graphic.u36", 0x100001, 0x080000, CRC(7f0840ac) SHA1(1c3af419d571579a3f2c561617d55914d28ef22b) ) + ROM_LOAD16_BYTE( "tm2k_graphic.u39", 0x300000, 0x080000, CRC(059e1bd8) SHA1(7451c1cfa0d090b0566e353738a1ffba732a8ad2) ) + ROM_LOAD16_BYTE( "tm2k_graphic.u37", 0x300001, 0x080000, CRC(4cf65950) SHA1(74d49166da19ecc4b8fc1e8e3f01361dfb645eea) ) + /* Sockets U40 & U41 not populated with earlier Touchmaster 2000 sets */ + + ROM_REGION( 0x100000, "oki", 0 ) // Samples + ROM_LOAD( "tm2k_sound.u8", 0x40000, 0x040000, CRC(f39ad4cf) SHA1(9bcb9a5dd3636d6541eeb3e737c7253ab0ed4e8d) ) /* Marked as Rev 1.0 */ + ROM_CONTINUE( 0xc0000, 0x040000 ) +ROM_END + /*************************************************************************** Touchmaster 3000 @@ -589,6 +606,23 @@ ROM_START( tm3k ) ROM_LOAD( "tm3k_sound.u8", 0x00000, 0x100000, CRC(d0ae33c1) SHA1(a079def9a086a091fcc4493a44fec756d2470415) ) /* Labeled TOUCHMASTER U8 5.0 (green label) */ ROM_END +ROM_START( tm3ksp ) /* Defaults to Spanish but can also be played in English */ + ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code + ROM_LOAD16_BYTE( "tm3k_v5.02_spain.u51", 0x000000, 0x100000, CRC(e5d1d465) SHA1(30ecf32c146a611a257d97bd6789b46ce2695024) ) /* TOUCHMASTER U51 SPAIN 5.02 (Spanish 11-25-97) (yellow label) */ + ROM_LOAD16_BYTE( "tm3k_v5.02_spain.u52", 0x000001, 0x100000, CRC(21c5fb8b) SHA1(5575925d6dc7548f5ccb04876d8c15b24601e3c0) ) /* TOUCHMASTER U52 SPAIN 5.02 (Spanish 11-25-97) (yellow label) */ + + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx + ROM_LOAD16_BYTE( "tm3k_graphic.u38", 0x000000, 0x100000, CRC(a6683899) SHA1(d05024390917cdb1871d030996da8e1eb6460918) ) /* Labeled TOUCHMASTER U38 STANDARD 5.0 (pink label) */ + ROM_LOAD16_BYTE( "tm3k_graphic.u36", 0x000001, 0x100000, CRC(7bde520d) SHA1(77750b689e2f0d47804042456e54bbd9c28deeac) ) /* Labeled TOUCHMASTER U36 STANDARD 5.0 (pink label) */ + ROM_LOAD16_BYTE( "tm3k_graphic.u39", 0x200000, 0x100000, CRC(206b56a6) SHA1(09e5e05bffd0a09abd24d668e2c59b56f2c79134) ) /* Labeled TOUCHMASTER U39 STANDARD 5.0 (pink label) */ + ROM_LOAD16_BYTE( "tm3k_graphic.u37", 0x200001, 0x100000, CRC(18f50eb3) SHA1(a7c9d3b24b5fd110380ec87d9200d55cad473efc) ) /* Labeled TOUCHMASTER U37 STANDARD 5.0 (pink label) */ + ROM_LOAD16_BYTE( "tm3k_graphic.u41", 0x400000, 0x100000, CRC(c35c0536) SHA1(a29fd88e8f3e124f6e84012c3573616f6447eeaa) ) /* Labeled TOUCHMASTER U41 STANDARD 5.0 (pink label) */ + ROM_LOAD16_BYTE( "tm3k_graphic.u40", 0x400001, 0x100000, CRC(353df7ca) SHA1(d6c5d5449af6b6a3acee219778583904c5b554b4) ) /* Labeled TOUCHMASTER U40 STANDARD 5.0 (pink label) */ + + ROM_REGION( 0x100000, "oki", 0 ) // Samples + ROM_LOAD( "tm3k_sound.u8", 0x00000, 0x100000, CRC(d0ae33c1) SHA1(a079def9a086a091fcc4493a44fec756d2470415) ) /* Labeled TOUCHMASTER U8 5.0 (green label) */ +ROM_END + ROM_START( tm3ka ) ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code ROM_LOAD16_BYTE( "tm3k_v5.01.u51", 0x000000, 0x100000, CRC(c9522279) SHA1(e613b791f831271722f05b7e96c35519fa9fc174) ) /* TOUCHMASTER 3000 U51 DOMESTIC 5.01 (Standard 11-4-97) (yellow label) */ @@ -606,6 +640,23 @@ ROM_START( tm3ka ) ROM_LOAD( "tm3k_sound.u8", 0x00000, 0x100000, CRC(d0ae33c1) SHA1(a079def9a086a091fcc4493a44fec756d2470415) ) /* Labeled TOUCHMASTER U8 5.0 (green label) */ ROM_END +ROM_START( tm3keval ) /* FREEPLAY ONLY / NOT FOR RELEASE / FOR EVALUATION ONLY */ + ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 Code + ROM_LOAD16_BYTE( "u51_touchmaster_10-21-97_a903.u51", 0x000000, 0x100000, CRC(4ddf94aa) SHA1(733134f835a30db48e6edb7eef95dc7a8f680955) ) /* U51 TOUCHMASTER 10-21-97 A903 (Standard AMOA 10-21-97) */ + ROM_LOAD16_BYTE( "u52_touchmaster_10-21-97_dab0.u52", 0x000001, 0x100000, CRC(a1e1eb81) SHA1(d2e116872ff41cce9f6c228ac0ce7a3250f21054) ) /* U51 TOUCHMASTER 10-21-97 DAB0 (Standard AMOA 10-21-97) */ + + ROM_REGION( 0x600000, "blitter", 0 ) // Blitter gfx + ROM_LOAD16_BYTE( "u38_touchmaster_10-21-97_0067.u38", 0x000000, 0x100000, CRC(cc2af2b0) SHA1(64de224599e038b98ffedd965ac83b077298097f) ) /* U38 TOUCHMASTER 10-21-97 0067 (date and checksum hand written) */ + ROM_LOAD16_BYTE( "u36_touchmaster_10-21-97_ba57.u36", 0x000001, 0x100000, CRC(73e99b1c) SHA1(812d6958a8746cc8f5cba125486e1f72740a0840) ) /* U36 TOUCHMASTER 10-21-97 BA57 (date and checksum hand written) */ + ROM_LOAD16_BYTE( "u39_touchmaster_10-21-97_4a76.u39", 0x200000, 0x100000, CRC(af92cf87) SHA1(cb6baf8b3afe1e61e440be69a90d5c001eb7b388) ) /* U39 TOUCHMASTER 10-21-97 4A76 (date and checksum hand written) */ + ROM_LOAD16_BYTE( "u37_touchmaster_10-21-97_40F6.u37", 0x200001, 0x100000, CRC(b5e69eca) SHA1(c548e33a049d17381c9755499940ffc459c0cb48) ) /* U37 TOUCHMASTER 10-21-97 40F6 (date and checksum hand written) */ + ROM_LOAD16_BYTE( "u41_touchmaster_10-21-97_f986.u41", 0x400000, 0x100000, CRC(97bc5e19) SHA1(9a9786ec2a9a7b7008d9e2e8624df8301f737dbc) ) /* U41 TOUCHMASTER 10-21-97 F986 (date and checksum hand written) */ + ROM_LOAD16_BYTE( "u40_touchmaster_10-21-97_7086.u40", 0x400001, 0x100000, CRC(e3ae6fa6) SHA1(02c98f59553f4343f0dd855794364ad95aa81063) ) /* U40 TOUCHMASTER 10-21-97 7086 (date and checksum hand written) */ + + ROM_REGION( 0x100000, "oki", 0 ) // Samples + ROM_LOAD( "tm3k_sound.u8", 0x00000, 0x100000, CRC(d0ae33c1) SHA1(a079def9a086a091fcc4493a44fec756d2470415) ) /* Labeled TOUCHMASTER U8 5.0 (green label) */ +ROM_END + /*************************************************************************** Touchmaster 4000 @@ -1084,28 +1135,31 @@ ROM_START( tm8k902 ) ROM_LOAD( "tm8k_sound.u8", 0x00000, 0x100000, CRC(c6070a60) SHA1(2dc20bf2217a36374b5a691133ad43f53dbe29ca) ) /* Mask rom labeled 5341-16513-03 U8 SOUND */ ROM_END -GAME( 1996, tm, 0, tm, tm, driver_device, 0, ROT0, "Midway Games Inc. / CES Inc.", "Touchmaster (v3.00 Euro)", 0 ) -GAME( 1996, tmdo, tm, tm, tm, driver_device, 0, ROT0, "Midway Games Inc. / CES Inc.", "Touchmaster (v2.2-01 Standard)", 0 ) -GAME( 1996, tm2k, 0, tm, tm2k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 2000 Plus (v4.63 Standard)", 0 ) -GAME( 1996, tm2ka, tm2k, tm, tm2k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 2000 (v4.02 Standard)", 0 ) -GAME( 1996, tm2kb, tm2k, tm, tm2k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 2000 (v4.00 Standard)", 0 ) -GAME( 1997, tm3k, 0, tm, tm2k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 3000 (v5.02 Standard)", 0 ) -GAME( 1997, tm3ka, tm3k, tm, tm2k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 3000 (v5.01 Standard)", 0 ) -GAME( 1998, tm4k, 0, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.03 Standard)", 0 ) -GAME( 1998, tm4knj, tm4k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.03 New Jersey)", 0 ) -GAME( 1998, tm4ka, tm4k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.02 Standard)", 0 ) -GAME( 1998, tm4kca, tm4k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.02 California)", 0 ) -GAME( 1998, tm4kb, tm4k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.01 Standard)", 0 ) -GAME( 1998, tm4kmn, tm4k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.01 Minnesota)", 0 ) -GAME( 1998, tm5k, 0, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 5000 (v7.10 Standard)", 0 ) -GAME( 1998, tm5kca, tm5k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 5000 (v7.10 California)", 0 ) -GAME( 1998, tm5kmn, tm5k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 5000 (v7.10 Minnesota)", 0 ) -GAME( 1998, tm5ka, tm5k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 5000 (v7.01 Standard)", 0 ) -GAME( 1999, tm7k, 0, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.04 Standard)", 0 ) -GAME( 1999, tm7knj, tm7k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.05 New Jersey)", 0 ) -GAME( 1999, tm7kmn, tm7k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.04 Minnesota)", 0 ) -GAME( 1999, tm7ka, tm7k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.00 Standard)", 0 ) -GAME( 1999, tm7kmna, tm7k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.00 Minnesota)", 0 ) -GAME( 1999, tm7keval, tm7k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.1X Evaluation)", 0 ) -GAME( 2000, tm8k, 0, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 8000 (v9.04 Standard)", 0 ) -GAME( 2000, tm8k902, tm8k, tmds1204, tm4k, driver_device, 0, ROT0, "Midway Games Inc.", "Touchmaster 8000 (v9.02 Standard)", 0 ) +GAME( 1996, tm, 0, tm, tm, tmaster_state, 0, ROT0, "Midway Games Inc. / CES Inc.", "Touchmaster (v3.00 Euro)", 0 ) +GAME( 1996, tmdo, tm, tm, tm, tmaster_state, 0, ROT0, "Midway Games Inc. / CES Inc.", "Touchmaster (v2.2-01 Standard)", 0 ) +GAME( 1996, tm2k, 0, tm, tm2k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 2000 Plus (v4.63 Standard)", 0 ) +GAME( 1996, tm2ka, tm2k, tm, tm2k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 2000 (v4.02 Standard)", 0 ) +GAME( 1996, tm2kb, tm2k, tm, tm2k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 2000 (v4.00 Standard)", 0 ) +GAME( 1996, tm2kspeval, tm2k, tm, tm2k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 2000 (v4.XX3 Spanish Evaluation)", 0 ) +GAME( 1997, tm3k, 0, tm, tm2k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 3000 (v5.02 Standard)", 0 ) +GAME( 1997, tm3ksp, tm3k, tm, tm2k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 3000 (v5.02 Spanish)", 0 ) +GAME( 1997, tm3ka, tm3k, tm, tm2k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 3000 (v5.01 Standard)", 0 ) +GAME( 1997, tm3keval, tm3k, tm, tm2k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 3000 (v5.XX Standard AMOA Evaluation)", 0 ) +GAME( 1998, tm4k, 0, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.03 Standard)", 0 ) +GAME( 1998, tm4knj, tm4k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.03 New Jersey)", 0 ) +GAME( 1998, tm4ka, tm4k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.02 Standard)", 0 ) +GAME( 1998, tm4kca, tm4k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.02 California)", 0 ) +GAME( 1998, tm4kb, tm4k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.01 Standard)", 0 ) +GAME( 1998, tm4kmn, tm4k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 4000 (v6.01 Minnesota)", 0 ) +GAME( 1998, tm5k, 0, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 5000 (v7.10 Standard)", 0 ) +GAME( 1998, tm5kca, tm5k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 5000 (v7.10 California)", 0 ) +GAME( 1998, tm5kmn, tm5k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 5000 (v7.10 Minnesota)", 0 ) +GAME( 1998, tm5ka, tm5k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 5000 (v7.01 Standard)", 0 ) +GAME( 1999, tm7k, 0, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.04 Standard)", 0 ) +GAME( 1999, tm7knj, tm7k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.05 New Jersey)", 0 ) +GAME( 1999, tm7kmn, tm7k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.04 Minnesota)", 0 ) +GAME( 1999, tm7ka, tm7k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.00 Standard)", 0 ) +GAME( 1999, tm7kmna, tm7k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.00 Minnesota)", 0 ) +GAME( 1999, tm7keval, tm7k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 7000 (v8.1X ASI Standard Evaluation)", 0 ) +GAME( 2000, tm8k, 0, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 8000 (v9.04 Standard)", 0 ) +GAME( 2000, tm8k902, tm8k, tmds1204, tm4k, tmaster_state, 0, ROT0, "Midway Games Inc.", "Touchmaster 8000 (v9.02 Standard)", 0 ) diff --git a/src/mame/drivers/tmc1800.cpp b/src/mame/drivers/tmc1800.cpp index ccb0e237740..98055afd399 100644 --- a/src/mame/drivers/tmc1800.cpp +++ b/src/mame/drivers/tmc1800.cpp @@ -704,7 +704,7 @@ QUICKLOAD_LOAD_MEMBER( tmc1800_base_state, tmc1800 ) return image_init_result::PASS; } -static MACHINE_CONFIG_START( tmc1800, tmc1800_state ) +static MACHINE_CONFIG_START( tmc1800 ) // basic system hardware MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz) MCFG_CPU_PROGRAM_MAP(tmc1800_map) @@ -736,7 +736,7 @@ static MACHINE_CONFIG_START( tmc1800, tmc1800_state ) MCFG_RAM_EXTRA_OPTIONS("4K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( osc1000b, osc1000b_state ) +static MACHINE_CONFIG_START( osc1000b ) // basic system hardware MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz) MCFG_CPU_PROGRAM_MAP(osc1000b_map) @@ -767,7 +767,7 @@ static MACHINE_CONFIG_START( osc1000b, osc1000b_state ) MCFG_RAM_EXTRA_OPTIONS("4K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tmc2000, tmc2000_state ) +static MACHINE_CONFIG_START( tmc2000 ) // basic system hardware MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz) MCFG_CPU_PROGRAM_MAP(tmc2000_map) @@ -793,7 +793,7 @@ static MACHINE_CONFIG_START( tmc2000, tmc2000_state ) MCFG_RAM_EXTRA_OPTIONS("16K,32K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( nano, nano_state ) +static MACHINE_CONFIG_START( nano ) // basic system hardware MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz) MCFG_CPU_PROGRAM_MAP(nano_map) @@ -871,8 +871,8 @@ DRIVER_INIT_MEMBER(tmc1800_state,tmc1800) /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1977, tmc1800, 0, 0, tmc1800, tmc1800, tmc1800_state, tmc1800, "Telercas Oy", "Telmac 1800", MACHINE_NOT_WORKING ) -COMP( 1977, osc1000b, tmc1800,0, osc1000b, tmc1800, driver_device, 0, "OSCOM Oy", "OSCOM 1000B", MACHINE_NOT_WORKING ) -COMP( 1980, tmc2000, 0, 0, tmc2000, tmc2000, driver_device, 0, "Telercas Oy", "Telmac 2000", MACHINE_SUPPORTS_SAVE ) -COMP( 1980, nano, tmc2000,0, nano, nano, driver_device, 0, "OSCOM Oy", "OSCOM Nano", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1977, tmc1800, 0, 0, tmc1800, tmc1800, tmc1800_state, tmc1800, "Telercas Oy", "Telmac 1800", MACHINE_NOT_WORKING ) +COMP( 1977, osc1000b, tmc1800, 0, osc1000b, tmc1800, osc1000b_state, 0, "OSCOM Oy", "OSCOM 1000B", MACHINE_NOT_WORKING ) +COMP( 1980, tmc2000, 0, 0, tmc2000, tmc2000, tmc2000_state, 0, "Telercas Oy", "Telmac 2000", MACHINE_SUPPORTS_SAVE ) +COMP( 1980, nano, tmc2000, 0, nano, nano, nano_state, 0, "OSCOM Oy", "OSCOM Nano", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tmc2000e.cpp b/src/mame/drivers/tmc2000e.cpp index d59a58bb42a..9ae0dd5b707 100644 --- a/src/mame/drivers/tmc2000e.cpp +++ b/src/mame/drivers/tmc2000e.cpp @@ -276,7 +276,7 @@ void tmc2000e_state::machine_reset() /* Machine Drivers */ -static MACHINE_CONFIG_START( tmc2000e, tmc2000e_state ) +static MACHINE_CONFIG_START( tmc2000e ) // basic system hardware MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_1_75MHz) MCFG_CPU_PROGRAM_MAP(tmc2000e_map) @@ -318,5 +318,5 @@ ROM_START( tmc2000e ) ROM_LOAD( "4", 0xd800, 0x0800, NO_DUMP ) ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME -COMP( 1980, tmc2000e, 0, 0, tmc2000e, tmc2000e, driver_device, 0, "Telercas Oy", "Telmac 2000E", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME STATE +COMP( 1980, tmc2000e, 0, 0, tmc2000e, tmc2000e, tmc2000e_state, 0, "Telercas Oy", "Telmac 2000E", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tmc600.cpp b/src/mame/drivers/tmc600.cpp index a0f940a1006..85d59466181 100644 --- a/src/mame/drivers/tmc600.cpp +++ b/src/mame/drivers/tmc600.cpp @@ -243,7 +243,7 @@ void tmc600_state::machine_start() /* Machine Drivers */ -static MACHINE_CONFIG_START( tmc600, tmc600_state ) +static MACHINE_CONFIG_START( tmc600 ) // basic system hardware MCFG_CPU_ADD(CDP1802_TAG, CDP1802, 3579545) // ??? MCFG_CPU_PROGRAM_MAP(tmc600_map) @@ -300,6 +300,6 @@ ROM_START( tmc600s2 ) ROM_END /* System Drivers */ -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME -//COMP( 1982, tmc600s1, 0, 0, tmc600, tmc600, driver_device, 0, "Telercas Oy", "Telmac TMC-600 (Sarja I)", MACHINE_NOT_WORKING ) -COMP( 1982, tmc600s2, 0, 0, tmc600, tmc600, driver_device, 0, "Telercas Oy", "Telmac TMC-600 (Sarja II)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +//COMP( 1982, tmc600s1, 0, 0, tmc600, tmc600, tmc600_state, 0, "Telercas Oy", "Telmac TMC-600 (Sarja I)", MACHINE_NOT_WORKING ) +COMP( 1982, tmc600s2, 0, 0, tmc600, tmc600, tmc600_state, 0, "Telercas Oy", "Telmac TMC-600 (Sarja II)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tmmjprd.cpp b/src/mame/drivers/tmmjprd.cpp index 76f82812c5a..103a92a22ba 100644 --- a/src/mame/drivers/tmmjprd.cpp +++ b/src/mame/drivers/tmmjprd.cpp @@ -763,7 +763,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(tmmjprd_state::scanline) } -static MACHINE_CONFIG_START( tmmjprd, tmmjprd_state ) +static MACHINE_CONFIG_START( tmmjprd ) MCFG_CPU_ADD("maincpu",M68EC020,24000000) /* 24 MHz */ MCFG_CPU_PROGRAM_MAP(tmmjprd_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmmjprd_state, scanline, "lscreen", 0, 1) @@ -886,5 +886,5 @@ ROM_START( tmpdoki ) ROM_END -GAME( 1997, tmmjprd, 0, tmmjprd, tmmjprd, driver_device, 0, ROT0, "Media / Sonnet", "Tokimeki Mahjong Paradise - Dear My Love", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, tmpdoki, tmmjprd, tmpdoki, tmmjprd, driver_device, 0, ROT0, "Media / Sonnet", "Tokimeki Mahjong Paradise - Doki Doki Hen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // missing gfx due to wrong roms? +GAME( 1997, tmmjprd, 0, tmmjprd, tmmjprd, tmmjprd_state, 0, ROT0, "Media / Sonnet", "Tokimeki Mahjong Paradise - Dear My Love", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, tmpdoki, tmmjprd, tmpdoki, tmmjprd, tmmjprd_state, 0, ROT0, "Media / Sonnet", "Tokimeki Mahjong Paradise - Doki Doki Hen", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // missing gfx due to wrong roms? diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp index 117680078a3..e351f646682 100644 --- a/src/mame/drivers/tmnt.cpp +++ b/src/mame/drivers/tmnt.cpp @@ -1699,7 +1699,7 @@ static INPUT_PORTS_START( ssriders ) INPUT_PORTS_END static INPUT_PORTS_START( ssridr4p ) - PORT_INCLUDE( ssriders ) + PORT_INCLUDE( ssriders ) PORT_MODIFY("COINS") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) @@ -1892,7 +1892,7 @@ MACHINE_RESET_MEMBER(tmnt_state,common) } -static MACHINE_CONFIG_START( cuebrick, tmnt_state ) +static MACHINE_CONFIG_START( cuebrick ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz */ @@ -1944,7 +1944,7 @@ static MACHINE_CONFIG_START( cuebrick, tmnt_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mia, tmnt_state ) +static MACHINE_CONFIG_START( mia ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/3) @@ -2009,7 +2009,7 @@ MACHINE_RESET_MEMBER(tmnt_state,tmnt) m_upd7759->reset_w(1); } -static MACHINE_CONFIG_START( tmnt, tmnt_state ) +static MACHINE_CONFIG_START( tmnt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/3) @@ -2076,7 +2076,7 @@ static MACHINE_CONFIG_START( tmnt, tmnt_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( punkshot, tmnt_state ) +static MACHINE_CONFIG_START( punkshot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -2130,7 +2130,7 @@ static MACHINE_CONFIG_START( punkshot, tmnt_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( lgtnfght, tmnt_state ) +static MACHINE_CONFIG_START( lgtnfght ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz/2) @@ -2186,7 +2186,7 @@ static MACHINE_CONFIG_START( lgtnfght, tmnt_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( blswhstl, tmnt_state ) +static MACHINE_CONFIG_START( blswhstl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* Confirmed */ @@ -2212,7 +2212,7 @@ static MACHINE_CONFIG_START( blswhstl, tmnt_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_lgtnfght) - MCFG_SCREEN_VBLANK_DRIVER(tmnt_state, screen_eof_blswhstl) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tmnt_state, screen_vblank_blswhstl)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 2048) @@ -2264,7 +2264,7 @@ static GFXDECODE_START( glfgreat ) GFXDECODE_ENTRY( "zoom", 0, zoomlayout, 0x400, 16 ) GFXDECODE_END -static MACHINE_CONFIG_START( glfgreat, tmnt_state ) +static MACHINE_CONFIG_START( glfgreat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* Confirmed */ @@ -2330,7 +2330,7 @@ MACHINE_START_MEMBER(tmnt_state,prmrsocr) membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x4000); } -static MACHINE_CONFIG_START( prmrsocr, tmnt_state ) +static MACHINE_CONFIG_START( prmrsocr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* Confirmed */ @@ -2395,7 +2395,7 @@ static MACHINE_CONFIG_START( prmrsocr, tmnt_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tmnt2, tmnt_state ) +static MACHINE_CONFIG_START( tmnt2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) @@ -2458,7 +2458,7 @@ static MACHINE_CONFIG_START( tmnt2, tmnt_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ssriders, tmnt_state ) +static MACHINE_CONFIG_START( ssriders ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) @@ -2517,7 +2517,7 @@ static MACHINE_CONFIG_START( ssriders, tmnt_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( sunsetbl, tmnt_state ) +static MACHINE_CONFIG_START( sunsetbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz */ @@ -2558,12 +2558,12 @@ static MACHINE_CONFIG_START( sunsetbl, tmnt_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( thndrx2, tmnt_state ) +static MACHINE_CONFIG_START( thndrx2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz */ @@ -4200,69 +4200,69 @@ DRIVER_INIT_MEMBER(tmnt_state,cuebrick) save_item(NAME(m_cuebrick_nvram)); } -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1989, cuebrick, 0, cuebrick, cuebrick, tmnt_state, cuebrick, ROT0, "Konami", "Cue Brick (World, version D)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1989, mia, 0, mia, mia, tmnt_state, mia, ROT0, "Konami", "M.I.A. - Missing in Action (version T)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mia2, mia, mia, mia, tmnt_state, mia, ROT0, "Konami", "M.I.A. - Missing in Action (version S)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1989, tmnt, 0, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (World 4 Players, version X)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmntu, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, version R)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmntua, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, version J)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmntub, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, version H)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmht, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, version F)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmhta, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, version S)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmhtb, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, version ?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, tmntj, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Japan 4 Players, version 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmnta, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Asia 4 Players, version ?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmht2p, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, version U)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmht2pa, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, version ?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, tmnt2pj, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Japan 2 Players, version 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, tmnt2po, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Oceania 2 Players, version ?)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1990, punkshot, 0, punkshot, punkshot, driver_device, 0, ROT0, "Konami", "Punk Shot (US 4 Players)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, punkshot2, punkshot, punkshot, punksht2, driver_device, 0, ROT0, "Konami", "Punk Shot (US 2 Players)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, punkshotj, punkshot, punkshot, punkshtj, driver_device, 0, ROT0, "Konami", "Punk Shot (Japan 2 Players)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1990, lgtnfght, 0, lgtnfght, lgtnfght, driver_device, 0, ROT90, "Konami", "Lightning Fighters (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, lgtnfghta, lgtnfght, lgtnfght, lgtnfght, driver_device, 0, ROT90, "Konami", "Lightning Fighters (Asia)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, lgtnfghtu, lgtnfght, lgtnfght, lgtnfght, driver_device, 0, ROT90, "Konami", "Lightning Fighters (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, trigon, lgtnfght, lgtnfght, trigon, driver_device, 0, ROT90, "Konami", "Trigon (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1991, blswhstl, 0, blswhstl, blswhstl, driver_device, 0, ROT90, "Konami", "Bells & Whistles (World, version L)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, blswhstla, blswhstl, blswhstl, blswhstl, driver_device, 0, ROT90, "Konami", "Bells & Whistles (Asia, version M)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, detatwin, blswhstl, blswhstl, blswhstl, driver_device, 0, ROT90, "Konami", "Detana!! Twin Bee (Japan, version J)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1991, glfgreat, 0, glfgreat, glfgreat, driver_device, 0, ROT0, "Konami", "Golfing Greats", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, glfgreatj, glfgreat, glfgreat, glfgreatj, driver_device, 0, ROT0, "Konami", "Golfing Greats (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) - -GAME( 1991, tmnt2, 0, tmnt2, ssridr4p, driver_device, 0, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, tmnt2a, tmnt2, tmnt2, ssrid4ps, driver_device, 0, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver ADA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, tmht22pe, tmnt2, tmnt2, ssriders, driver_device, 0, ROT0, "Konami", "Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver EBA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, tmht24pe, tmnt2, tmnt2, ssriders, driver_device, 0, ROT0, "Konami", "Teenage Mutant Hero Turtles - Turtles in Time (4 Players ver EAA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, tmnt22pu, tmnt2, tmnt2, ssriders, driver_device, 0, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver UDA)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1993, qgakumon, 0, tmnt2, qgakumon, driver_device, 0, ROT0, "Konami", "Quiz Gakumon no Susume (Japan ver. JA2 Type L)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1991, ssriders, 0, ssriders, ssridr4p, driver_device, 0, ROT0, "Konami", "Sunset Riders (4 Players ver EAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssriderseaa, ssriders, ssriders, ssridr4p, driver_device, 0, ROT0, "Konami", "Sunset Riders (4 Players ver EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersebd, ssriders, ssriders, ssriders, driver_device, 0, ROT0, "Konami", "Sunset Riders (2 Players ver EBD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersebc, ssriders, ssriders, ssriders, driver_device, 0, ROT0, "Konami", "Sunset Riders (2 Players ver EBC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersuda, ssriders, ssriders, ssrid4ps, driver_device, 0, ROT0, "Konami", "Sunset Riders (4 Players ver UDA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersuac, ssriders, ssriders, ssridr4p, driver_device, 0, ROT0, "Konami", "Sunset Riders (4 Players ver UAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersuab, ssriders, ssriders, ssridr4p, driver_device, 0, ROT0, "Konami", "Sunset Riders (4 Players ver UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersubc, ssriders, ssriders, ssriders, driver_device, 0, ROT0, "Konami", "Sunset Riders (2 Players ver UBC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersadd, ssriders, ssriders, ssrid4ps, driver_device, 0, ROT0, "Konami", "Sunset Riders (4 Players ver ADD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersabd, ssriders, ssriders, ssriders, driver_device, 0, ROT0, "Konami", "Sunset Riders (2 Players ver ABD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersjad, ssriders, ssriders, ssridr4p, driver_device, 0, ROT0, "Konami", "Sunset Riders (4 Players ver JAD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersjac, ssriders, ssriders, ssridr4p, driver_device, 0, ROT0, "Konami", "Sunset Riders (4 Players ver JAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersjbd, ssriders, ssriders, ssriders, driver_device, 0, ROT0, "Konami", "Sunset Riders (2 Players ver JBD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssridersb, ssriders, sunsetbl, sunsetbl, driver_device, 0, ROT0, "bootleg","Sunset Riders (bootleg 4 Players ver ADD)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ssriders2, ssriders, sunsetbl, sunsetbl, driver_device, 0, ROT0, "bootleg","Sunset Riders 2 (bootleg 4 Players ver ADD)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) - -GAME( 1991, thndrx2, 0, thndrx2, thndrx2, driver_device, 0, ROT0, "Konami", "Thunder Cross II (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, thndrx2a, thndrx2, thndrx2, thndrx2, driver_device, 0, ROT0, "Konami", "Thunder Cross II (Asia)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, thndrx2j, thndrx2, thndrx2, thndrx2, driver_device, 0, ROT0, "Konami", "Thunder Cross II (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1993, prmrsocr, 0, prmrsocr, prmrsocr, driver_device, 0, ROT0, "Konami", "Premier Soccer (ver EAB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, prmrsocrj, prmrsocr, prmrsocr, prmrsocr, driver_device, 0, ROT0, "Konami", "Premier Soccer (ver JAB)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME,FLAGS +GAME( 1989, cuebrick, 0, cuebrick, cuebrick, tmnt_state, cuebrick, ROT0, "Konami", "Cue Brick (World, version D)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1989, mia, 0, mia, mia, tmnt_state, mia, ROT0, "Konami", "M.I.A. - Missing in Action (version T)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mia2, mia, mia, mia, tmnt_state, mia, ROT0, "Konami", "M.I.A. - Missing in Action (version S)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1989, tmnt, 0, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (World 4 Players, version X)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmntu, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, version R)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmntua, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, version J)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmntub, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, version H)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmht, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, version F)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmhta, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, version S)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmhtb, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, version ?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, tmntj, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Japan 4 Players, version 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmnta, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Asia 4 Players, version ?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmht2p, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, version U)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmht2pa, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, version ?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, tmnt2pj, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Japan 2 Players, version 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, tmnt2po, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Oceania 2 Players, version ?)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1990, punkshot, 0, punkshot, punkshot, tmnt_state, 0, ROT0, "Konami", "Punk Shot (US 4 Players)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, punkshot2, punkshot, punkshot, punksht2, tmnt_state, 0, ROT0, "Konami", "Punk Shot (US 2 Players)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, punkshotj, punkshot, punkshot, punkshtj, tmnt_state, 0, ROT0, "Konami", "Punk Shot (Japan 2 Players)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1990, lgtnfght, 0, lgtnfght, lgtnfght, tmnt_state, 0, ROT90, "Konami", "Lightning Fighters (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, lgtnfghta, lgtnfght, lgtnfght, lgtnfght, tmnt_state, 0, ROT90, "Konami", "Lightning Fighters (Asia)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, lgtnfghtu, lgtnfght, lgtnfght, lgtnfght, tmnt_state, 0, ROT90, "Konami", "Lightning Fighters (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, trigon, lgtnfght, lgtnfght, trigon, tmnt_state, 0, ROT90, "Konami", "Trigon (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1991, blswhstl, 0, blswhstl, blswhstl, tmnt_state, 0, ROT90, "Konami", "Bells & Whistles (World, version L)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, blswhstla, blswhstl, blswhstl, blswhstl, tmnt_state, 0, ROT90, "Konami", "Bells & Whistles (Asia, version M)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, detatwin, blswhstl, blswhstl, blswhstl, tmnt_state, 0, ROT90, "Konami", "Detana!! Twin Bee (Japan, version J)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1991, glfgreat, 0, glfgreat, glfgreat, tmnt_state, 0, ROT0, "Konami", "Golfing Greats", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, glfgreatj, glfgreat, glfgreat, glfgreatj, tmnt_state, 0, ROT0, "Konami", "Golfing Greats (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) + +GAME( 1991, tmnt2, 0, tmnt2, ssridr4p, tmnt_state, 0, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, tmnt2a, tmnt2, tmnt2, ssrid4ps, tmnt_state, 0, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver ADA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, tmht22pe, tmnt2, tmnt2, ssriders, tmnt_state, 0, ROT0, "Konami", "Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver EBA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, tmht24pe, tmnt2, tmnt2, ssridr4p, tmnt_state, 0, ROT0, "Konami", "Teenage Mutant Hero Turtles - Turtles in Time (4 Players ver EAA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, tmnt22pu, tmnt2, tmnt2, ssriders, tmnt_state, 0, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver UDA)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1993, qgakumon, 0, tmnt2, qgakumon, tmnt_state, 0, ROT0, "Konami", "Quiz Gakumon no Susume (Japan ver. JA2 Type L)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1991, ssriders, 0, ssriders, ssridr4p, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (4 Players ver EAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssriderseaa, ssriders, ssriders, ssridr4p, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (4 Players ver EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersebd, ssriders, ssriders, ssriders, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (2 Players ver EBD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersebc, ssriders, ssriders, ssriders, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (2 Players ver EBC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersuda, ssriders, ssriders, ssrid4ps, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (4 Players ver UDA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersuac, ssriders, ssriders, ssridr4p, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (4 Players ver UAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersuab, ssriders, ssriders, ssridr4p, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (4 Players ver UAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersubc, ssriders, ssriders, ssriders, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (2 Players ver UBC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersadd, ssriders, ssriders, ssrid4ps, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (4 Players ver ADD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersabd, ssriders, ssriders, ssriders, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (2 Players ver ABD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersjad, ssriders, ssriders, ssridr4p, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (4 Players ver JAD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersjac, ssriders, ssriders, ssridr4p, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (4 Players ver JAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersjbd, ssriders, ssriders, ssriders, tmnt_state, 0, ROT0, "Konami", "Sunset Riders (2 Players ver JBD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssridersb, ssriders, sunsetbl, sunsetbl, tmnt_state, 0, ROT0, "bootleg", "Sunset Riders (bootleg 4 Players ver ADD)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ssriders2, ssriders, sunsetbl, sunsetbl, tmnt_state, 0, ROT0, "bootleg", "Sunset Riders 2 (bootleg 4 Players ver ADD)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) + +GAME( 1991, thndrx2, 0, thndrx2, thndrx2, tmnt_state, 0, ROT0, "Konami", "Thunder Cross II (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, thndrx2a, thndrx2, thndrx2, thndrx2, tmnt_state, 0, ROT0, "Konami", "Thunder Cross II (Asia)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, thndrx2j, thndrx2, thndrx2, thndrx2, tmnt_state, 0, ROT0, "Konami", "Thunder Cross II (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1993, prmrsocr, 0, prmrsocr, prmrsocr, tmnt_state, 0, ROT0, "Konami", "Premier Soccer (ver EAB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, prmrsocrj, prmrsocr, prmrsocr, prmrsocr, tmnt_state, 0, ROT0, "Konami", "Premier Soccer (ver JAB)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tmspoker.cpp b/src/mame/drivers/tmspoker.cpp index 13beb6fadc4..e0ed52e640f 100644 --- a/src/mame/drivers/tmspoker.cpp +++ b/src/mame/drivers/tmspoker.cpp @@ -552,7 +552,7 @@ GFXDECODE_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( tmspoker, tmspoker_state ) +static MACHINE_CONFIG_START( tmspoker ) // CPU TMS9980A; no line connections MCFG_TMS99xx_ADD("maincpu", TMS9980A, MASTER_CLOCK/4, tmspoker_map, tmspoker_cru_map) @@ -642,5 +642,5 @@ DRIVER_INIT_MEMBER(tmspoker_state,bus) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 198?, tmspoker, 0, tmspoker, tmspoker, tmspoker_state, bus, ROT0, "", "unknown TMS9980 Poker Game", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/tnzs.cpp b/src/mame/drivers/tnzs.cpp index d0a7352cd0f..cdfab3f772f 100644 --- a/src/mame/drivers/tnzs.cpp +++ b/src/mame/drivers/tnzs.cpp @@ -835,13 +835,6 @@ static ADDRESS_MAP_START( tnzsb_io_map, AS_IO, 8, tnzsb_state ) AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END -static ADDRESS_MAP_START( i8742_map, AS_IO, 8, tnzs_mcu_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(mcu_port1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_port2_r, mcu_port2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ_PORT("COIN1") - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ_PORT("COIN2") -ADDRESS_MAP_END - static ADDRESS_MAP_START( jpopnics_main_map, AS_PROGRAM, 8, jpopnics_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_DEVICE("mainbank", address_map_bank_device, amap8) @@ -1513,7 +1506,7 @@ static GFXDECODE_START( insectx ) GFXDECODE_ENTRY( "gfx1", 0, insectx_charlayout, 0, 32 ) GFXDECODE_END -static MACHINE_CONFIG_START( tnzs_base, tnzs_base_state ) +static MACHINE_CONFIG_START( tnzs_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL_12MHz/2) /* 6.0 MHz ??? - Main board Crystal is 12MHz, verified on insectx, kageki, tnzsb */ MCFG_CPU_PROGRAM_MAP(main_map) @@ -1537,7 +1530,7 @@ static MACHINE_CONFIG_START( tnzs_base, tnzs_base_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(tnzs_base_state, screen_update_tnzs) - MCFG_SCREEN_VBLANK_DRIVER(tnzs_base_state, screen_eof_tnzs) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tnzs_base_state, screen_vblank_tnzs)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", tnzs) @@ -1548,9 +1541,13 @@ static MACHINE_CONFIG_START( tnzs_base, tnzs_base_state ) MCFG_SPEAKER_STANDARD_MONO("speaker") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( tnzs, tnzs_base, tnzs_state ) +static MACHINE_CONFIG_DERIVED( tnzs, tnzs_base ) MCFG_CPU_ADD("mcu", I8742, 12000000/2) /* 400KHz ??? - Main board Crystal is 12MHz */ - MCFG_CPU_IO_MAP(i8742_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(tnzs_mcu_state, mcu_port1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(tnzs_mcu_state, mcu_port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(tnzs_mcu_state, mcu_port2_w)) + MCFG_MCS48_PORT_T0_IN_CB(IOPORT("COIN1")) + MCFG_MCS48_PORT_T1_IN_CB(IOPORT("COIN2")) MCFG_CPU_MODIFY("sub") MCFG_CPU_PROGRAM_MAP(tnzs_sub_map) @@ -1567,7 +1564,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( tnzs, tnzs_base, tnzs_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( extrmatn, tnzs, extrmatn_state ) +static MACHINE_CONFIG_DERIVED( extrmatn, tnzs ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(prompal_main_map) @@ -1581,7 +1578,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( extrmatn, tnzs, extrmatn_state ) MCFG_PALETTE_INIT_OWNER(tnzs_base_state, prompalette) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( arknoid2, extrmatn, arknoid2_state ) +static MACHINE_CONFIG_DERIVED( arknoid2, extrmatn ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_VBLANK_INT_DRIVER("screen", arknoid2_state, mcu_interrupt) @@ -1593,7 +1590,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( arknoid2, extrmatn, arknoid2_state ) MCFG_DEVICE_DISABLE() MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( insectx, tnzs_base, insectx_state ) +static MACHINE_CONFIG_DERIVED( insectx, tnzs_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("sub") MCFG_CPU_PROGRAM_MAP(insectx_sub_map) @@ -1609,7 +1606,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( insectx, tnzs_base, insectx_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( kageki, tnzs_base, kageki_state ) +static MACHINE_CONFIG_DERIVED( kageki, tnzs_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("sub") MCFG_CPU_PROGRAM_MAP(kageki_sub_map) @@ -1629,7 +1626,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( kageki, tnzs_base, kageki_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( tnzsb, tnzs_base, tnzsb_state ) +static MACHINE_CONFIG_DERIVED( tnzsb, tnzs_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(tnzsb_main_map) @@ -1657,7 +1654,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( tnzsb, tnzs_base, tnzsb_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( kabukiz, tnzsb, kabukiz_state ) +static MACHINE_CONFIG_DERIVED( kabukiz, tnzsb ) /* basic machine hardware */ MCFG_CPU_MODIFY("sub") @@ -1677,7 +1674,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( kabukiz, tnzsb, kabukiz_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( jpopnics, tnzs_base, jpopnics_state ) +static MACHINE_CONFIG_DERIVED( jpopnics, tnzs_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(jpopnics_main_map) @@ -2777,41 +2774,41 @@ ROM_END // YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1987, plumppop, 0, extrmatn, plumppop, driver_device, 0, ROT0, "Taito Corporation", "Plump Pop (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, jpopnics, 0, jpopnics, jpopnics, driver_device, 0, ROT0, "Nics", "Jumping Pop (Nics, Korean hack of Plump Pop)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) - -GAME( 1987, extrmatn, 0, extrmatn, extrmatn, driver_device, 0, ROT270, "Taito Corporation Japan", "Extermination (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, extrmatnu, extrmatn, extrmatn, extrmatn, driver_device, 0, ROT270, "Taito (World Games license)", "Extermination (US, World Games)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, extrmatnur,extrmatn, extrmatn, extrmatn, driver_device, 0, ROT270, "Taito America Corporation (Romstar license)", "Extermination (US, Romstar)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, extrmatnj, extrmatn, extrmatn, extrmatn, driver_device, 0, ROT270, "Taito Corporation", "Extermination (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1987, arknoid2, 0, arknoid2, arknoid2, driver_device, 0, ROT270, "Taito Corporation Japan", "Arkanoid - Revenge of DOH (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, arknoid2u, arknoid2, arknoid2, arknid2u, driver_device, 0, ROT270, "Taito America Corporation (Romstar license)", "Arkanoid - Revenge of DOH (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, arknoid2j, arknoid2, arknoid2, arknid2u, driver_device, 0, ROT270, "Taito Corporation", "Arkanoid - Revenge of DOH (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, arknoid2b, arknoid2, arknoid2, arknid2u, driver_device, 0, ROT270, "bootleg", "Arkanoid - Revenge of DOH (Japan bootleg)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1987, drtoppel, 0, extrmatn, drtoppel, driver_device, 0, ROT90, "Kaneko / Taito Corporation Japan", "Dr. Toppel's Adventure (World)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */ -GAME( 1987, drtoppelu, drtoppel, extrmatn, drtopplu, driver_device, 0, ROT90, "Kaneko / Taito America Corporation", "Dr. Toppel's Adventure (US)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */ -GAME( 1987, drtoppelj, drtoppel, extrmatn, drtopplu, driver_device, 0, ROT90, "Kaneko / Taito Corporation", "Dr. Toppel's Tankentai (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1988, kageki, 0, kageki, kageki, driver_device, 0, ROT90, "Kaneko / Taito America Corporation (Romstar license)", "Kageki (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, kagekij, kageki, kageki, kagekij, driver_device, 0, ROT90, "Kaneko / Taito Corporation", "Kageki (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, kagekih, kageki, kageki, kageki, driver_device, 0, ROT90, "hack", "Kageki (hack)", MACHINE_SUPPORTS_SAVE ) // date is hacked at least, might also be a Japan set hacked to show english - -GAME( 1988, chukatai, 0, tnzs, chukatai, driver_device, 0, ROT0, "Taito Corporation Japan", "Chuka Taisen (World)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */ -GAME( 1988, chukataiu, chukatai, tnzs, chukatau, driver_device, 0, ROT0, "Taito America Corporation", "Chuka Taisen (US)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */ -GAME( 1988, chukataij, chukatai, tnzs, chukatau, driver_device, 0, ROT0, "Taito Corporation", "Chuka Taisen (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1988, tnzs, 0, tnzsb, tnzs, driver_device, 0, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, new version) (newer PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, tnzsj, tnzs, tnzsb, tnzsj, driver_device, 0, ROT0, "Taito Corporation", "The NewZealand Story (Japan, new version) (newer PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, tnzso, tnzs, tnzs, tnzsop, driver_device, 0, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, old version) (older PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, tnzsjo, tnzs, tnzs, tnzsjo, driver_device, 0, ROT0, "Taito Corporation", "The NewZealand Story (Japan, old version) (older PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, tnzsuo, tnzs, tnzs, tnzsjo, driver_device, 0, ROT0, "Taito America Corporation", "The NewZealand Story (US, old version) (older PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, tnzsoa, tnzs, tnzs, tnzsop, driver_device, 0, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, unknown version) (older PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, tnzsop, tnzs, tnzs, tnzsop, driver_device, 0, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, prototype) (older PCB)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1988, kabukiz, 0, kabukiz, kabukiz, driver_device, 0, ROT0, "Kaneko / Taito Corporation Japan", "Kabuki-Z (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, kabukizj, kabukiz, kabukiz, kabukizj, driver_device, 0, ROT0, "Kaneko / Taito Corporation", "Kabuki-Z (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1989, insectx, 0, insectx, insectx, driver_device, 0, ROT0, "Taito Corporation Japan", "Insector X (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, insectxj, insectx, insectx, insectxj, driver_device, 0, ROT0, "Taito Corporation", "Insector X (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, plumppop, 0, extrmatn, plumppop, extrmatn_state, 0, ROT0, "Taito Corporation", "Plump Pop (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, jpopnics, 0, jpopnics, jpopnics, jpopnics_state, 0, ROT0, "Nics", "Jumping Pop (Nics, Korean hack of Plump Pop)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) + +GAME( 1987, extrmatn, 0, extrmatn, extrmatn, extrmatn_state, 0, ROT270, "Taito Corporation Japan", "Extermination (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, extrmatnu, extrmatn, extrmatn, extrmatn, extrmatn_state, 0, ROT270, "Taito (World Games license)", "Extermination (US, World Games)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, extrmatnur,extrmatn, extrmatn, extrmatn, extrmatn_state, 0, ROT270, "Taito America Corporation (Romstar license)", "Extermination (US, Romstar)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, extrmatnj, extrmatn, extrmatn, extrmatn, extrmatn_state, 0, ROT270, "Taito Corporation", "Extermination (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1987, arknoid2, 0, arknoid2, arknoid2, arknoid2_state, 0, ROT270, "Taito Corporation Japan", "Arkanoid - Revenge of DOH (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, arknoid2u, arknoid2, arknoid2, arknid2u, arknoid2_state, 0, ROT270, "Taito America Corporation (Romstar license)", "Arkanoid - Revenge of DOH (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, arknoid2j, arknoid2, arknoid2, arknid2u, arknoid2_state, 0, ROT270, "Taito Corporation", "Arkanoid - Revenge of DOH (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, arknoid2b, arknoid2, arknoid2, arknid2u, arknoid2_state, 0, ROT270, "bootleg", "Arkanoid - Revenge of DOH (Japan bootleg)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1987, drtoppel, 0, extrmatn, drtoppel, extrmatn_state, 0, ROT90, "Kaneko / Taito Corporation Japan", "Dr. Toppel's Adventure (World)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */ +GAME( 1987, drtoppelu, drtoppel, extrmatn, drtopplu, extrmatn_state, 0, ROT90, "Kaneko / Taito America Corporation", "Dr. Toppel's Adventure (US)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */ +GAME( 1987, drtoppelj, drtoppel, extrmatn, drtopplu, extrmatn_state, 0, ROT90, "Kaneko / Taito Corporation", "Dr. Toppel's Tankentai (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1988, kageki, 0, kageki, kageki, kageki_state, 0, ROT90, "Kaneko / Taito America Corporation (Romstar license)", "Kageki (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, kagekij, kageki, kageki, kagekij, kageki_state, 0, ROT90, "Kaneko / Taito Corporation", "Kageki (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, kagekih, kageki, kageki, kageki, kageki_state, 0, ROT90, "hack", "Kageki (hack)", MACHINE_SUPPORTS_SAVE ) // date is hacked at least, might also be a Japan set hacked to show english + +GAME( 1988, chukatai, 0, tnzs, chukatai, tnzs_state, 0, ROT0, "Taito Corporation Japan", "Chuka Taisen (World)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */ +GAME( 1988, chukataiu, chukatai, tnzs, chukatau, tnzs_state, 0, ROT0, "Taito America Corporation", "Chuka Taisen (US)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */ +GAME( 1988, chukataij, chukatai, tnzs, chukatau, tnzs_state, 0, ROT0, "Taito Corporation", "Chuka Taisen (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1988, tnzs, 0, tnzsb, tnzs, tnzsb_state, 0, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, new version) (newer PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tnzsj, tnzs, tnzsb, tnzsj, tnzsb_state, 0, ROT0, "Taito Corporation", "The NewZealand Story (Japan, new version) (newer PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tnzso, tnzs, tnzs, tnzsop, tnzs_state, 0, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, old version) (older PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tnzsjo, tnzs, tnzs, tnzsjo, tnzs_state, 0, ROT0, "Taito Corporation", "The NewZealand Story (Japan, old version) (older PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tnzsuo, tnzs, tnzs, tnzsjo, tnzs_state, 0, ROT0, "Taito America Corporation", "The NewZealand Story (US, old version) (older PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tnzsoa, tnzs, tnzs, tnzsop, tnzs_state, 0, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, unknown version) (older PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tnzsop, tnzs, tnzs, tnzsop, tnzs_state, 0, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, prototype) (older PCB)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1988, kabukiz, 0, kabukiz, kabukiz, kabukiz_state, 0, ROT0, "Kaneko / Taito Corporation Japan", "Kabuki-Z (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, kabukizj, kabukiz, kabukiz, kabukizj, kabukiz_state, 0, ROT0, "Kaneko / Taito Corporation", "Kabuki-Z (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1989, insectx, 0, insectx, insectx, insectx_state, 0, ROT0, "Taito Corporation Japan", "Insector X (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, insectxj, insectx, insectx, insectxj, insectx_state, 0, ROT0, "Taito Corporation", "Insector X (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/toaplan1.cpp b/src/mame/drivers/toaplan1.cpp index 6fea2e940d4..bf27b7a3764 100644 --- a/src/mame/drivers/toaplan1.cpp +++ b/src/mame/drivers/toaplan1.cpp @@ -1886,7 +1886,7 @@ GFXDECODE_END #define VBSTART (240) -static MACHINE_CONFIG_START( rallybik, toaplan1_rallybik_state ) +static MACHINE_CONFIG_START( rallybik ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -1906,7 +1906,7 @@ static MACHINE_CONFIG_START( rallybik, toaplan1_rallybik_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL55, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(toaplan1_rallybik_state, screen_update_rallybik) - MCFG_SCREEN_VBLANK_DRIVER(toaplan1_rallybik_state, screen_eof_rallybik) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan1_rallybik_state, screen_vblank_rallybik)) MCFG_SCREEN_PALETTE("palette") MCFG_TOAPLAN_SCU_ADD("scu", "palette", 31, 15) @@ -1926,7 +1926,7 @@ static MACHINE_CONFIG_START( rallybik, toaplan1_rallybik_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( truxton, toaplan1_state ) +static MACHINE_CONFIG_START( truxton ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -1946,7 +1946,7 @@ static MACHINE_CONFIG_START( truxton, toaplan1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1) - MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan1_state, screen_vblank_toaplan1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", toaplan1) @@ -1964,7 +1964,7 @@ static MACHINE_CONFIG_START( truxton, toaplan1_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( hellfire, toaplan1_state ) +static MACHINE_CONFIG_START( hellfire ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -1984,7 +1984,7 @@ static MACHINE_CONFIG_START( hellfire, toaplan1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16) MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1) - MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan1_state, screen_vblank_toaplan1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", toaplan1) @@ -2002,7 +2002,7 @@ static MACHINE_CONFIG_START( hellfire, toaplan1_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( zerowing, toaplan1_state ) +static MACHINE_CONFIG_START( zerowing ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -2022,7 +2022,7 @@ static MACHINE_CONFIG_START( zerowing, toaplan1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16) MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1) - MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan1_state, screen_vblank_toaplan1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", toaplan1) @@ -2040,7 +2040,7 @@ static MACHINE_CONFIG_START( zerowing, toaplan1_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( demonwld, toaplan1_state ) +static MACHINE_CONFIG_START( demonwld ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -2065,7 +2065,7 @@ static MACHINE_CONFIG_START( demonwld, toaplan1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL55, VBEND+16, VBSTART+16) MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1) - MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan1_state, screen_vblank_toaplan1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", toaplan1) @@ -2083,7 +2083,7 @@ static MACHINE_CONFIG_START( demonwld, toaplan1_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( samesame, toaplan1_state ) +static MACHINE_CONFIG_START( samesame ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -2103,7 +2103,7 @@ static MACHINE_CONFIG_START( samesame, toaplan1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1) - MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_samesame) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan1_state, screen_vblank_samesame)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", toaplan1) @@ -2121,7 +2121,7 @@ static MACHINE_CONFIG_START( samesame, toaplan1_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( outzone, toaplan1_state ) +static MACHINE_CONFIG_START( outzone ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -2141,7 +2141,7 @@ static MACHINE_CONFIG_START( outzone, toaplan1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL55, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1) - MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan1_state, screen_vblank_toaplan1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", toaplan1) @@ -2159,7 +2159,7 @@ static MACHINE_CONFIG_START( outzone, toaplan1_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( outzonecv, toaplan1_state ) +static MACHINE_CONFIG_START( outzonecv ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) @@ -2179,7 +2179,7 @@ static MACHINE_CONFIG_START( outzonecv, toaplan1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND+16, VBSTART+16) MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1) - MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan1_state, screen_vblank_toaplan1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", toaplan1) @@ -2197,7 +2197,7 @@ static MACHINE_CONFIG_START( outzonecv, toaplan1_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vimana, toaplan1_state ) +static MACHINE_CONFIG_START( vimana ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */ @@ -2217,7 +2217,7 @@ static MACHINE_CONFIG_START( vimana, toaplan1_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(toaplan1_state, screen_update_toaplan1) - MCFG_SCREEN_VBLANK_DRIVER(toaplan1_state, screen_eof_toaplan1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan1_state, screen_vblank_toaplan1)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", toaplan1) @@ -3112,41 +3112,41 @@ DRIVER_INIT_MEMBER(toaplan1_state,demonwld) -GAME( 1988, rallybik, 0, rallybik, rallybik, toaplan1_state, toaplan1, ROT270, "Toaplan / Taito Corporation", "Rally Bike / Dash Yarou", 0 ) +GAME( 1988, rallybik, 0, rallybik, rallybik, toaplan1_rallybik_state, toaplan1, ROT270, "Toaplan / Taito Corporation", "Rally Bike / Dash Yarou", 0 ) -GAME( 1988, truxton, 0, truxton, truxton, toaplan1_state, toaplan1, ROT270, "Toaplan / Taito Corporation", "Truxton / Tatsujin", 0 ) +GAME( 1988, truxton, 0, truxton, truxton, toaplan1_state, toaplan1, ROT270, "Toaplan / Taito Corporation", "Truxton / Tatsujin", 0 ) -GAME( 1989, hellfire, 0, hellfire, hellfire, toaplan1_state, toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (2P set)", 0 ) -GAME( 1989, hellfire1, hellfire, hellfire, hellfire1, toaplan1_state, toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (1P set)", 0 ) -GAME( 1989, hellfire2a, hellfire, hellfire, hellfire2a,toaplan1_state, toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (2P set, older)", 0 ) -GAME( 1989, hellfire1a, hellfire, hellfire, hellfire1a,toaplan1_state, toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (1P set, older)", 0 ) +GAME( 1989, hellfire, 0, hellfire, hellfire, toaplan1_state, toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (2P set)", 0 ) +GAME( 1989, hellfire1, hellfire, hellfire, hellfire1, toaplan1_state, toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (1P set)", 0 ) +GAME( 1989, hellfire2a, hellfire, hellfire, hellfire2a,toaplan1_state, toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (2P set, older)", 0 ) +GAME( 1989, hellfire1a, hellfire, hellfire, hellfire1a,toaplan1_state, toaplan1, ROT0, "Toaplan (Taito license)", "Hellfire (1P set, older)", 0 ) -GAME( 1989, zerowing, 0, zerowing, zerowing2, toaplan1_state, toaplan1, ROT0, "Toaplan", "Zero Wing (2P set)", 0 ) -GAME( 1989, zerowing1, zerowing, zerowing, zerowing, toaplan1_state, toaplan1, ROT0, "Toaplan", "Zero Wing (1P set)", 0 ) -GAME( 1989, zerowingw, zerowing, zerowing, zerowing2, toaplan1_state, toaplan1, ROT0, "Toaplan (Williams license)", "Zero Wing (2P set, Williams license)", 0 ) +GAME( 1989, zerowing, 0, zerowing, zerowing2, toaplan1_state, toaplan1, ROT0, "Toaplan", "Zero Wing (2P set)", 0 ) +GAME( 1989, zerowing1, zerowing, zerowing, zerowing, toaplan1_state, toaplan1, ROT0, "Toaplan", "Zero Wing (1P set)", 0 ) +GAME( 1989, zerowingw, zerowing, zerowing, zerowing2, toaplan1_state, toaplan1, ROT0, "Toaplan (Williams license)", "Zero Wing (2P set, Williams license)", 0 ) -GAME( 1990, demonwld, 0, demonwld, demonwld, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 1)", 0 ) -GAME( 1989, demonwld1, demonwld, demonwld, demonwld, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 2)", 0 ) -GAME( 1989, demonwld2, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 3)", 0 ) -GAME( 1989, demonwld3, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 4)", 0 ) -GAME( 1989, demonwld4, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 5)", 0 ) +GAME( 1990, demonwld, 0, demonwld, demonwld, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 1)", 0 ) +GAME( 1989, demonwld1, demonwld, demonwld, demonwld, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 2)", 0 ) +GAME( 1989, demonwld2, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 3)", 0 ) +GAME( 1989, demonwld3, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 4)", 0 ) +GAME( 1989, demonwld4, demonwld, demonwld, demonwld1, toaplan1_state, demonwld, ROT0, "Toaplan", "Demon's World / Horror Story (set 5)", 0 ) -GAME( 1990, fireshrk, 0, samesame, fireshrk, toaplan1_state, toaplan1, ROT270, "Toaplan", "Fire Shark", 0 ) -GAME( 1989, fireshrka, fireshrk, samesame, fireshrka, toaplan1_state, toaplan1, ROT270, "Toaplan", "Fire Shark (earlier)", 0 ) -GAME( 1990, fireshrkd, fireshrk, samesame, samesame2, toaplan1_state, toaplan1, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 1, easier)", 0 ) -GAME( 1990, fireshrkdh, fireshrk, samesame, samesame2, toaplan1_state, toaplan1, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 2, harder)", 0 ) -GAME( 1989, samesame, fireshrk, samesame, samesame, toaplan1_state, toaplan1, ROT270, "Toaplan", "Same! Same! Same! (1P set)", 0 ) -GAME( 1989, samesame2, fireshrk, samesame, samesame2, toaplan1_state, toaplan1, ROT270, "Toaplan", "Same! Same! Same! (2P set)", 0 ) -GAME( 2015, samesamenh, fireshrk, samesame, samesame, toaplan1_state, toaplan1, ROT270, "hack (trap15)", "Same! Same! Same! (1P set, NEW VER! hack)", 0 ) +GAME( 1990, fireshrk, 0, samesame, fireshrk, toaplan1_state, toaplan1, ROT270, "Toaplan", "Fire Shark", 0 ) +GAME( 1989, fireshrka, fireshrk, samesame, fireshrka, toaplan1_state, toaplan1, ROT270, "Toaplan", "Fire Shark (earlier)", 0 ) +GAME( 1990, fireshrkd, fireshrk, samesame, samesame2, toaplan1_state, toaplan1, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 1, easier)", 0 ) +GAME( 1990, fireshrkdh, fireshrk, samesame, samesame2, toaplan1_state, toaplan1, ROT270, "Toaplan (Dooyong license)", "Fire Shark (Korea, set 2, harder)", 0 ) +GAME( 1989, samesame, fireshrk, samesame, samesame, toaplan1_state, toaplan1, ROT270, "Toaplan", "Same! Same! Same! (1P set)", 0 ) +GAME( 1989, samesame2, fireshrk, samesame, samesame2, toaplan1_state, toaplan1, ROT270, "Toaplan", "Same! Same! Same! (2P set)", 0 ) +GAME( 2015, samesamenh, fireshrk, samesame, samesame, toaplan1_state, toaplan1, ROT270, "hack (trap15)", "Same! Same! Same! (1P set, NEW VER! hack)", 0 ) -GAME( 1990, outzone, 0, outzone, outzone, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone", 0 ) -GAME( 1990, outzoneh, outzone, outzone, outzone, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (harder)", 0 ) -GAME( 1990, outzonea, outzone, outzone, outzonea, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (old set)", 0 ) -GAME( 1990, outzoneb, outzone, outzone, outzonea, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (older set)", 0 ) -GAME( 1990, outzonec, outzone, outzone, outzonec, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (oldest set)", MACHINE_IMPERFECT_SOUND ) // prototype? -GAME( 1990, outzonecv, outzone, outzonecv,outzone, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (Zero Wing TP-015 PCB conversion)", 0 ) +GAME( 1990, outzone, 0, outzone, outzone, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone", 0 ) +GAME( 1990, outzoneh, outzone, outzone, outzone, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (harder)", 0 ) +GAME( 1990, outzonea, outzone, outzone, outzonea, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (old set)", 0 ) +GAME( 1990, outzoneb, outzone, outzone, outzonea, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (older set)", 0 ) +GAME( 1990, outzonec, outzone, outzone, outzonec, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (oldest set)", MACHINE_IMPERFECT_SOUND ) // prototype? +GAME( 1990, outzonecv, outzone, outzonecv,outzone, toaplan1_state, toaplan1, ROT270, "Toaplan", "Out Zone (Zero Wing TP-015 PCB conversion)", 0 ) // has various licenses / regions depending on jumpers, including Tecmo -GAME( 1991, vimana, 0, vimana, vimana, toaplan1_state, toaplan1, ROT270, "Toaplan", "Vimana (World, set 1)", 0 ) -GAME( 1991, vimanan, vimana, vimana, vimanan, toaplan1_state, toaplan1, ROT270, "Toaplan", "Vimana (World, set 2)", 0 ) -GAME( 1991, vimanaj, vimana, vimana, vimanaj, toaplan1_state, toaplan1, ROT270, "Toaplan", "Vimana (Japan)", 0 ) +GAME( 1991, vimana, 0, vimana, vimana, toaplan1_state, toaplan1, ROT270, "Toaplan", "Vimana (World, set 1)", 0 ) +GAME( 1991, vimanan, vimana, vimana, vimanan, toaplan1_state, toaplan1, ROT270, "Toaplan", "Vimana (World, set 2)", 0 ) +GAME( 1991, vimanaj, vimana, vimana, vimanaj, toaplan1_state, toaplan1, ROT270, "Toaplan", "Vimana (Japan)", 0 ) diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp index ff16f261af6..ea3387c8da0 100644 --- a/src/mame/drivers/toaplan2.cpp +++ b/src/mame/drivers/toaplan2.cpp @@ -384,8 +384,10 @@ To reset the NVRAM in Othello Derby, hold P1 Button 1 down while booting. ***************************************************************************/ -MACHINE_START_MEMBER(toaplan2_state,toaplan2) +void toaplan2_state::machine_start() { + m_raise_irq_timer = timer_alloc(TIMER_RAISE_IRQ); + save_item(NAME(m_mcu_data)); save_item(NAME(m_old_p1_paddle_h)); save_item(NAME(m_old_p2_paddle_h)); @@ -511,7 +513,7 @@ void toaplan2_state::device_timer(emu_timer &timer, device_timer_id id, int para void toaplan2_state::toaplan2_vblank_irq(int irq_line) { // the IRQ appears to fire at line 0xe6 - timer_set(m_screen->time_until_pos(0xe6), TIMER_RAISE_IRQ, irq_line); + m_raise_irq_timer->adjust(m_screen->time_until_pos(0xe6), irq_line); } INTERRUPT_GEN_MEMBER(toaplan2_state::toaplan2_vblank_irq1){ toaplan2_vblank_irq(1); } @@ -3315,16 +3317,13 @@ static GFXDECODE_START( fixeightbl ) GFXDECODE_END -static MACHINE_CONFIG_START( tekipaki, toaplan2_state ) +static MACHINE_CONFIG_START( tekipaki ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* 10MHz Oscillator */ MCFG_CPU_PROGRAM_MAP(tekipaki_68k_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4) - - - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2) /* video hardware */ @@ -3335,7 +3334,7 @@ static MACHINE_CONFIG_START( tekipaki, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3370,7 +3369,7 @@ static MACHINE_CONFIG_DERIVED( tekipaki_mcu, tekipaki ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ghox, toaplan2_state ) +static MACHINE_CONFIG_START( ghox ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */ @@ -3382,7 +3381,6 @@ static MACHINE_CONFIG_START( ghox, toaplan2_state ) MCFG_CPU_PROGRAM_MAP(hd647180_mem) #endif - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,ghox) /* video hardware */ @@ -3393,7 +3391,7 @@ static MACHINE_CONFIG_START( ghox, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3461,7 +3459,7 @@ a4849 cd */ -static MACHINE_CONFIG_START( dogyuun, toaplan2_state ) +static MACHINE_CONFIG_START( dogyuun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_25MHz/2) /* verified on pcb */ @@ -3476,14 +3474,12 @@ static MACHINE_CONFIG_START( dogyuun, toaplan2_state ) MCFG_V25_PORT_P1_READ_CB(IOPORT("JMPR")) MCFG_DEVCB_XOR(0xff) MCFG_V25_PORT_P2_WRITE_CB(NOOP) // bit 0 is FAULT according to kbash schematic - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(XTAL_27MHz/4,432,0,320,262,0,240) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_dogyuun) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3503,12 +3499,12 @@ static MACHINE_CONFIG_START( dogyuun, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_25MHz/24, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_25MHz/24, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kbash, toaplan2_state ) +static MACHINE_CONFIG_START( kbash ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* 16MHz Oscillator */ @@ -3524,8 +3520,6 @@ static MACHINE_CONFIG_START( kbash, toaplan2_state ) MCFG_V25_PORT_P1_READ_CB(IOPORT("JMPR")) MCFG_DEVCB_XOR(0xff) MCFG_V25_PORT_P2_WRITE_CB(NOOP) // bit 0 is FAULT according to kbash schematic - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) @@ -3534,7 +3528,7 @@ static MACHINE_CONFIG_START( kbash, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3551,20 +3545,18 @@ static MACHINE_CONFIG_START( kbash, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kbash2, toaplan2_state ) +static MACHINE_CONFIG_START( kbash2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* 16MHz Oscillator */ MCFG_CPU_PROGRAM_MAP(kbash2_68k_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) @@ -3573,7 +3565,7 @@ static MACHINE_CONFIG_START( kbash2, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3587,29 +3579,27 @@ static MACHINE_CONFIG_START( kbash2, toaplan2_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( truxton2, toaplan2_state ) +static MACHINE_CONFIG_START( truxton2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(truxton2_68k_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq2) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(XTAL_27MHz/4,432,0,320,262,0,240) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", truxton2) @@ -3629,7 +3619,7 @@ static MACHINE_CONFIG_START( truxton2, toaplan2_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) #else // ...but the hardware is mono @@ -3638,13 +3628,13 @@ static MACHINE_CONFIG_START( truxton2, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4, PIN7_LOW) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) #endif MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pipibibs, toaplan2_state ) +static MACHINE_CONFIG_START( pipibibs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */ @@ -3656,7 +3646,6 @@ static MACHINE_CONFIG_START( pipibibs, toaplan2_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2) /* video hardware */ @@ -3667,7 +3656,7 @@ static MACHINE_CONFIG_START( pipibibs, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3687,7 +3676,7 @@ static MACHINE_CONFIG_START( pipibibs, toaplan2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pipibibsbl, toaplan2_state ) +static MACHINE_CONFIG_START( pipibibsbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* 10MHz Oscillator */ @@ -3699,7 +3688,6 @@ static MACHINE_CONFIG_START( pipibibsbl, toaplan2_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2) /* video hardware */ @@ -3710,7 +3698,7 @@ static MACHINE_CONFIG_START( pipibibsbl, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3767,7 +3755,7 @@ static const uint8_t ts001turbo_decryption_table[256] = { }; -static MACHINE_CONFIG_START( fixeight, toaplan2_state ) +static MACHINE_CONFIG_START( fixeight ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* verified on pcb */ @@ -3780,8 +3768,6 @@ static MACHINE_CONFIG_START( fixeight, toaplan2_state ) MCFG_V25_PORT_P0_READ_CB(IOPORT("EEPROM")) MCFG_V25_PORT_P0_WRITE_CB(IOPORT("EEPROM")) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ @@ -3789,7 +3775,7 @@ static MACHINE_CONFIG_START( fixeight, toaplan2_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(XTAL_27MHz/4,432,0,320,262,0,240) /* verified on pcb */ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", truxton2) @@ -3807,20 +3793,18 @@ static MACHINE_CONFIG_START( fixeight, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fixeightbl, toaplan2_state ) +static MACHINE_CONFIG_START( fixeightbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* 10MHz Oscillator */ MCFG_CPU_PROGRAM_MAP(fixeightbl_68k_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq2) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) @@ -3829,7 +3813,7 @@ static MACHINE_CONFIG_START( fixeightbl, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_bootleg) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", fixeightbl) @@ -3844,13 +3828,13 @@ static MACHINE_CONFIG_START( fixeightbl, toaplan2_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_14MHz/16, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", XTAL_14MHz/16, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, fixeightbl_oki) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vfive, toaplan2_state ) +static MACHINE_CONFIG_START( vfive ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) /* verified on pcb */ @@ -3865,14 +3849,12 @@ static MACHINE_CONFIG_START( vfive, toaplan2_state ) MCFG_V25_PORT_P1_READ_CB(IOPORT("JMPR")) MCFG_DEVCB_XOR(0xff) MCFG_V25_PORT_P2_WRITE_CB(NOOP) // bit 0 is FAULT according to kbash schematic - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(XTAL_27MHz/4,432,0,320,262,0,240) /* verified on pcb */ MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3891,7 +3873,7 @@ static MACHINE_CONFIG_START( vfive, toaplan2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( batsugun, toaplan2_state ) +static MACHINE_CONFIG_START( batsugun ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */ @@ -3905,8 +3887,6 @@ static MACHINE_CONFIG_START( batsugun, toaplan2_state ) MCFG_V25_PORT_P1_READ_CB(IOPORT("JMPR")) MCFG_DEVCB_XOR(0xff) MCFG_V25_PORT_P2_WRITE_CB(NOOP) // bit 0 is FAULT according to kbash schematic - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) @@ -3915,7 +3895,7 @@ static MACHINE_CONFIG_START( batsugun, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_batsugun) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3935,18 +3915,17 @@ static MACHINE_CONFIG_START( batsugun, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/8, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/8, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pwrkick, toaplan2_state ) +static MACHINE_CONFIG_START( pwrkick ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(pwrkick_68k_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_UPD4992_ADD("rtc") MCFG_NVRAM_ADD_0FILL("nvram") @@ -3958,7 +3937,7 @@ static MACHINE_CONFIG_START( pwrkick, toaplan2_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(XTAL_27MHz/4,432,0,320,262,0,240) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -3972,17 +3951,16 @@ static MACHINE_CONFIG_START( pwrkick, toaplan2_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") /* empty YM2151 socket*/ - MCFG_OKIM6295_ADD("oki", XTAL_27MHz/8, OKIM6295_PIN7_HIGH) // not confirmed + MCFG_OKIM6295_ADD("oki", XTAL_27MHz/8, PIN7_HIGH) // not confirmed MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( othldrby, toaplan2_state ) +static MACHINE_CONFIG_START( othldrby ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(othldrby_68k_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_UPD4992_ADD("rtc") MCFG_NVRAM_ADD_0FILL("nvram") @@ -3992,7 +3970,7 @@ static MACHINE_CONFIG_START( othldrby, toaplan2_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(XTAL_27MHz/4,432,0,320,262,0,240) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -4006,25 +3984,23 @@ static MACHINE_CONFIG_START( othldrby, toaplan2_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_27MHz/8, OKIM6295_PIN7_HIGH) // not confirmed + MCFG_OKIM6295_ADD("oki", XTAL_27MHz/8, PIN7_HIGH) // not confirmed MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( enmadaio, toaplan2_state ) +static MACHINE_CONFIG_START( enmadaio ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) MCFG_CPU_PROGRAM_MAP(enmadaio_68k_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(XTAL_27MHz/4,432,0,320,262,0,240) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -4041,20 +4017,18 @@ static MACHINE_CONFIG_START( enmadaio, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4, OKIM6295_PIN7_LOW) // pin7 not confirmed + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4, PIN7_LOW) // pin7 not confirmed MCFG_DEVICE_ADDRESS_MAP(AS_0, enmadaio_oki) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( snowbro2, toaplan2_state ) +static MACHINE_CONFIG_START( snowbro2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(snowbro2_68k_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan2_state, toaplan2_vblank_irq4) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) @@ -4063,7 +4037,7 @@ static MACHINE_CONFIG_START( snowbro2, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_toaplan2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", T2PALETTE_LENGTH) @@ -4080,12 +4054,12 @@ static MACHINE_CONFIG_START( snowbro2, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_27MHz/10, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_27MHz/10, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mahoudai, toaplan2_state ) +static MACHINE_CONFIG_START( mahoudai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */ @@ -4097,7 +4071,6 @@ static MACHINE_CONFIG_START( mahoudai, toaplan2_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2) /* video hardware */ @@ -4108,7 +4081,7 @@ static MACHINE_CONFIG_START( mahoudai, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", raizing) @@ -4126,12 +4099,12 @@ static MACHINE_CONFIG_START( mahoudai, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( shippumd, toaplan2_state ) +static MACHINE_CONFIG_START( shippumd ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */ @@ -4143,7 +4116,6 @@ static MACHINE_CONFIG_START( shippumd, toaplan2_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2) /* video hardware */ @@ -4154,7 +4126,7 @@ static MACHINE_CONFIG_START( shippumd, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", raizing) @@ -4172,11 +4144,11 @@ static MACHINE_CONFIG_START( shippumd, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bgaregga, toaplan2_state ) +static MACHINE_CONFIG_START( bgaregga ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */ @@ -4188,7 +4160,6 @@ static MACHINE_CONFIG_START( bgaregga, toaplan2_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2) /* video hardware */ @@ -4199,7 +4170,7 @@ static MACHINE_CONFIG_START( bgaregga, toaplan2_state ) //MCFG_SCREEN_SIZE(432, 262) //MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_truxton2) - MCFG_SCREEN_VBLANK_DRIVER(toaplan2_state, screen_eof_toaplan2) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(toaplan2_state, screen_vblank_toaplan2)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", raizing) @@ -4219,7 +4190,7 @@ static MACHINE_CONFIG_START( bgaregga, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("nmk112", NMK112, 0) @@ -4234,7 +4205,7 @@ static MACHINE_CONFIG_DERIVED( bgareggabl, bgaregga ) MCFG_SCREEN_UPDATE_DRIVER(toaplan2_state, screen_update_bootleg) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( batrider, toaplan2_state ) +static MACHINE_CONFIG_START( batrider ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */ @@ -4247,7 +4218,6 @@ static MACHINE_CONFIG_START( batrider, toaplan2_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2) /* video hardware */ @@ -4280,10 +4250,10 @@ static MACHINE_CONFIG_START( batrider, toaplan2_state ) MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/10, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/10, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki2", XTAL_32MHz/10, OKIM6295_PIN7_LOW) + MCFG_OKIM6295_ADD("oki2", XTAL_32MHz/10, PIN7_LOW) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("nmk112", NMK112, 0) @@ -4292,7 +4262,7 @@ static MACHINE_CONFIG_START( batrider, toaplan2_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bbakraid, toaplan2_state ) +static MACHINE_CONFIG_START( bbakraid ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz , 32MHz Oscillator */ @@ -4306,7 +4276,6 @@ static MACHINE_CONFIG_START( bbakraid, toaplan2_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2) MCFG_EEPROM_SERIAL_93C66_8BIT_ADD("eeprom") @@ -5740,95 +5709,95 @@ ROM_END // The following is in order of Toaplan Board/game numbers // See list at top of file -// ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS ) -GAME( 1991, tekipaki, 0, tekipaki_mcu, tekipaki, driver_device, 0, ROT0, "Toaplan", "Teki Paki", MACHINE_SUPPORTS_SAVE ) +// ( YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS ) +GAME( 1991, tekipaki, 0, tekipaki_mcu, tekipaki, toaplan2_state, 0, ROT0, "Toaplan", "Teki Paki", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ghox, 0, ghox, ghox, driver_device, 0, ROT270, "Toaplan", "Ghox (spinner)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, ghoxj, ghox, ghox, ghox, driver_device, 0, ROT270, "Toaplan", "Ghox (joystick)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ghox, 0, ghox, ghox, toaplan2_state, 0, ROT270, "Toaplan", "Ghox (spinner)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ghoxj, ghox, ghox, ghox, toaplan2_state, 0, ROT270, "Toaplan", "Ghox (joystick)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dogyuun, 0, dogyuun, dogyuun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Dogyuun", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dogyuuna, dogyuun, dogyuun, dogyuuna, toaplan2_state, dogyuun, ROT270, "Toaplan", "Dogyuun (older set)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, dogyuunt, dogyuun, dogyuun, dogyuunt, toaplan2_state, dogyuun, ROT270, "Toaplan", "Dogyuun (location test)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dogyuun, 0, dogyuun, dogyuun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Dogyuun", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dogyuuna, dogyuun, dogyuun, dogyuuna, toaplan2_state, dogyuun, ROT270, "Toaplan", "Dogyuun (older set)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, dogyuunt, dogyuun, dogyuun, dogyuunt, toaplan2_state, dogyuun, ROT270, "Toaplan", "Dogyuun (location test)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, kbash, 0, kbash, kbash, driver_device, 0, ROT0, "Toaplan / Atari", "Knuckle Bash", MACHINE_SUPPORTS_SAVE ) // Atari license shown for some regions. -GAME( 1993, kbashk, kbash, kbash, kbashk,driver_device, 0, ROT0, "Toaplan / Taito", "Knuckle Bash (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // Japan region has optional Taito license, maybe the original Japan release? +GAME( 1993, kbash, 0, kbash, kbash, toaplan2_state, 0, ROT0, "Toaplan / Atari", "Knuckle Bash", MACHINE_SUPPORTS_SAVE ) // Atari license shown for some regions. +GAME( 1993, kbashk, kbash, kbash, kbashk, toaplan2_state, 0, ROT0, "Toaplan / Taito", "Knuckle Bash (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // Japan region has optional Taito license, maybe the original Japan release? -GAME( 1999, kbash2, 0, kbash2, kbash2, driver_device, 0, ROT0, "bootleg", "Knuckle Bash 2 (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, kbash2, 0, kbash2, kbash2, toaplan2_state, 0, ROT0, "bootleg", "Knuckle Bash 2 (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, truxton2, 0, truxton2, truxton2, driver_device, 0, ROT270, "Toaplan", "Truxton II / Tatsujin Oh", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, truxton2, 0, truxton2, truxton2, toaplan2_state, 0, ROT270, "Toaplan", "Truxton II / Tatsujin Oh", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, pipibibs, 0, pipibibs, pipibibs, driver_device, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, pipibibsa, pipibibs, pipibibs, pipibibs, driver_device, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, pipibibsp, pipibibs, pipibibs, pipibibsp, driver_device,0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, whoopee, pipibibs, tekipaki, whoopee, driver_device, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Teki Paki hardware)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // original Whoopee!! boards have a HD647180 instead of Z80 +GAME( 1991, pipibibs, 0, pipibibs, pipibibs, toaplan2_state, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, pipibibsa, pipibibs, pipibibs, pipibibs, toaplan2_state, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, pipibibsp, pipibibs, pipibibs, pipibibsp, toaplan2_state, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, whoopee, pipibibs, tekipaki, whoopee, toaplan2_state, 0, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Teki Paki hardware)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // original Whoopee!! boards have a HD647180 instead of Z80 -GAME( 1991, pipibibsbl, pipibibs, pipibibsbl, pipibibsbl, toaplan2_state, pipibibsbl, ROT0, "bootleg (Ryouta Kikaku)", "Pipi & Bibis / Whoopee!! (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, pipibibsbl, pipibibs, pipibibsbl, pipibibsbl, toaplan2_state, pipibibsbl, ROT0, "bootleg (Ryouta Kikaku)", "Pipi & Bibis / Whoopee!! (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, enmadaio, 0, enmadaio, enmadaio,toaplan2_state, enmadaio, ROT0, "Toaplan / Taito", "Enma Daio (Japan)", 0 ) // TP-031 +GAME( 1993, enmadaio, 0, enmadaio, enmadaio, toaplan2_state, enmadaio, ROT0, "Toaplan / Taito", "Enma Daio (Japan)", 0 ) // TP-031 // region is in eeprom (and also requires correct return value from a v25 mapped address??) -GAME( 1992, fixeight, 0, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeightk, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeighth, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Hong Kong)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeighttw, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Taiwan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeighta, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Southeast Asia)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeightu, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeightj, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeightt, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Europe, Taito license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeightkt, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Korea, Taito license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeightht, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Hong Kong, Taito license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeighttwt,fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Taiwan, Taito license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeightat, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Southeast Asia, Taito license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeightut, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (USA, Taito license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, fixeightjt, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Japan, Taito license)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1992, fixeightbl, fixeight, fixeightbl, fixeightbl, toaplan2_state, fixeightbl, ROT270, "bootleg", "FixEight (Korea, bootleg)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1992, grindstm, 0, vfive, grindstm, toaplan2_state, vfive, ROT270, "Toaplan", "Grind Stormer", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, grindstma, grindstm, vfive, grindstma, toaplan2_state, vfive, ROT270, "Toaplan", "Grind Stormer (older set)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, vfive, grindstm, vfive, vfive, toaplan2_state, vfive, ROT270, "Toaplan", "V-Five (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1993, batsugun, 0, batsugun, batsugun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Batsugun", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, batsuguna, batsugun, batsugun, batsugun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Batsugun (older set)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, batsugunb, batsugun, batsugun, batsugun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Batsugun (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // cheap looking PCB (same 'TP-030' numbering as original) but without Mask ROMs. Still has original customs etc. Jumpers were set to the Korea Unite Trading license, so likely made in Korea, not a bootleg tho. -GAME( 1993, batsugunsp, batsugun, batsugun, batsugun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Batsugun - Special Version", MACHINE_SUPPORTS_SAVE ) - -GAME( 1994, pwrkick, 0, pwrkick, pwrkick, driver_device, 0, ROT0, "Sunwise", "Power Kick (Japan)", 0 ) -GAME( 1995, othldrby, 0, othldrby, othldrby,driver_device, 0, ROT0, "Sunwise", "Othello Derby (Japan)", 0 ) - -GAME( 1994, snowbro2, 0, snowbro2, snowbro2, driver_device, 0, ROT0, "Hanafram", "Snow Bros. 2 - With New Elves / Otenki Paradise", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, snowbro2b, snowbro2, snowbro2, snowbro2, driver_device, 0, ROT0, "bootleg", "Snow Bros. 2 - With New Elves / Otenki Paradise (bootleg)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1993, sstriker, 0, mahoudai, sstriker, driver_device, 0, ROT270, "Raizing", "Sorcer Striker (set 1)" , MACHINE_SUPPORTS_SAVE ) // verified on two different PCBs -GAME( 1993, sstrikera, sstriker, mahoudai, sstrikera, driver_device, 0, ROT270, "Raizing", "Sorcer Striker (set 2)" , MACHINE_SUPPORTS_SAVE ) // from Korean board -GAME( 1993, mahoudai, sstriker, mahoudai, mahoudai, driver_device, 0, ROT270, "Raizing (Able license)", "Mahou Daisakusen (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1994, kingdmgp, 0, shippumd, kingdmgp, driver_device, 0, ROT270, "Raizing / Eighting", "Kingdom Grandprix", MACHINE_SUPPORTS_SAVE ) // from Korean board, missing letters on credits screen but this is correct -GAME( 1994, shippumd, kingdmgp, shippumd, shippumd, driver_device, 0, ROT270, "Raizing / Eighting", "Shippu Mahou Daisakusen (Japan)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1996, bgaregga, 0, bgaregga, bgaregga, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga (Europe / USA / Japan / Asia) (Sat Feb 3 1996)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, bgareggahk, bgaregga, bgaregga, bgareggahk, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga (Austria / Hong Kong) (Sat Feb 3 1996)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, bgareggatw, bgaregga, bgaregga, bgareggatw, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga (Taiwan / Germany) (Thu Feb 1 1996)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, bgaregganv, bgaregga, bgaregga, bgareggahk, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga - New Version (Austria / Hong Kong) (Sat Mar 2 1996)" , MACHINE_SUPPORTS_SAVE ) // displays New Version only when set to HK -GAME( 1996, bgareggat2, bgaregga, bgaregga, bgaregga, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Europe / USA / Japan / Asia) (Sat Mar 2 1996)" , MACHINE_SUPPORTS_SAVE ) // displays Type 2 only when set to Europe -GAME( 1996, bgareggacn, bgaregga, bgaregga, bgareggacn, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996)", MACHINE_SUPPORTS_SAVE ) // displays Type 2 only when set to Denmark -GAME( 1996, bgareggabl, bgaregga, bgareggabl,bgareggacn, toaplan2_state,bgaregga, ROT270, "bootleg", "1945 Part-2 (Chinese hack of Battle Garegga)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, bgareggabla,bgaregga, bgareggabl,bgareggacn, toaplan2_state,bgaregga, ROT270, "bootleg", "Lei Shen Zhuan Thunder Deity Biography (Chinese hack of Battle Garegga)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeight, 0, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeightk, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeighth, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Hong Kong)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeighttw, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Taiwan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeighta, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Southeast Asia)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeightu, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeightj, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan", "FixEight (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeightt, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Europe, Taito license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeightkt, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Korea, Taito license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeightht, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Hong Kong, Taito license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeighttwt, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Taiwan, Taito license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeightat, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Southeast Asia, Taito license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeightut, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (USA, Taito license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fixeightjt, fixeight, fixeight, fixeight, toaplan2_state, fixeight, ROT270, "Toaplan (Taito license)", "FixEight (Japan, Taito license)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1992, fixeightbl, fixeight, fixeightbl, fixeightbl, toaplan2_state, fixeightbl, ROT270, "bootleg", "FixEight (Korea, bootleg)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1992, grindstm, 0, vfive, grindstm, toaplan2_state, vfive, ROT270, "Toaplan", "Grind Stormer", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, grindstma, grindstm, vfive, grindstma, toaplan2_state, vfive, ROT270, "Toaplan", "Grind Stormer (older set)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, vfive, grindstm, vfive, vfive, toaplan2_state, vfive, ROT270, "Toaplan", "V-Five (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1993, batsugun, 0, batsugun, batsugun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Batsugun", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, batsuguna, batsugun, batsugun, batsugun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Batsugun (older set)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, batsugunb, batsugun, batsugun, batsugun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Batsugun (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // cheap looking PCB (same 'TP-030' numbering as original) but without Mask ROMs. Still has original customs etc. Jumpers were set to the Korea Unite Trading license, so likely made in Korea, not a bootleg tho. +GAME( 1993, batsugunsp, batsugun, batsugun, batsugun, toaplan2_state, dogyuun, ROT270, "Toaplan", "Batsugun - Special Version", MACHINE_SUPPORTS_SAVE ) + +GAME( 1994, pwrkick, 0, pwrkick, pwrkick, toaplan2_state, 0, ROT0, "Sunwise", "Power Kick (Japan)", 0 ) +GAME( 1995, othldrby, 0, othldrby, othldrby, toaplan2_state, 0, ROT0, "Sunwise", "Othello Derby (Japan)", 0 ) + +GAME( 1994, snowbro2, 0, snowbro2, snowbro2, toaplan2_state, 0, ROT0, "Hanafram", "Snow Bros. 2 - With New Elves / Otenki Paradise", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, snowbro2b, snowbro2, snowbro2, snowbro2, toaplan2_state, 0, ROT0, "bootleg", "Snow Bros. 2 - With New Elves / Otenki Paradise (bootleg)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1993, sstriker, 0, mahoudai, sstriker, toaplan2_state, 0, ROT270, "Raizing", "Sorcer Striker (set 1)" , MACHINE_SUPPORTS_SAVE ) // verified on two different PCBs +GAME( 1993, sstrikera, sstriker, mahoudai, sstrikera, toaplan2_state, 0, ROT270, "Raizing", "Sorcer Striker (set 2)" , MACHINE_SUPPORTS_SAVE ) // from Korean board +GAME( 1993, mahoudai, sstriker, mahoudai, mahoudai, toaplan2_state, 0, ROT270, "Raizing (Able license)", "Mahou Daisakusen (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1994, kingdmgp, 0, shippumd, kingdmgp, toaplan2_state, 0, ROT270, "Raizing / Eighting", "Kingdom Grandprix", MACHINE_SUPPORTS_SAVE ) // from Korean board, missing letters on credits screen but this is correct +GAME( 1994, shippumd, kingdmgp, shippumd, shippumd, toaplan2_state, 0, ROT270, "Raizing / Eighting", "Shippu Mahou Daisakusen (Japan)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1996, bgaregga, 0, bgaregga, bgaregga, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga (Europe / USA / Japan / Asia) (Sat Feb 3 1996)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, bgareggahk, bgaregga, bgaregga, bgareggahk, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga (Austria / Hong Kong) (Sat Feb 3 1996)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, bgareggatw, bgaregga, bgaregga, bgareggatw, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga (Taiwan / Germany) (Thu Feb 1 1996)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, bgaregganv, bgaregga, bgaregga, bgareggahk, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga - New Version (Austria / Hong Kong) (Sat Mar 2 1996)" , MACHINE_SUPPORTS_SAVE ) // displays New Version only when set to HK +GAME( 1996, bgareggat2, bgaregga, bgaregga, bgaregga, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Europe / USA / Japan / Asia) (Sat Mar 2 1996)" , MACHINE_SUPPORTS_SAVE ) // displays Type 2 only when set to Europe +GAME( 1996, bgareggacn, bgaregga, bgaregga, bgareggacn, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996)", MACHINE_SUPPORTS_SAVE ) // displays Type 2 only when set to Denmark +GAME( 1996, bgareggabl, bgaregga, bgareggabl, bgareggacn, toaplan2_state, bgaregga, ROT270, "bootleg", "1945 Part-2 (Chinese hack of Battle Garegga)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, bgareggabla, bgaregga, bgareggabl, bgareggacn, toaplan2_state, bgaregga, ROT270, "bootleg", "Lei Shen Zhuan Thunder Deity Biography (Chinese hack of Battle Garegga)", MACHINE_SUPPORTS_SAVE ) // these are all based on Version B, even if only the Japan version states 'version B' -GAME( 1998, batrider, 0, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Europe) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, batrideru, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (USA) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, batriderc, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (China) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, batrider, 0, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Europe) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, batrideru, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (USA) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, batriderc, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (China) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, batriderj, batrider, batrider, batriderj, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan, B version) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, batriderk, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Korea) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, batriderk, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Korea) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE ) // older revision of the code GAME( 1998, batriderja, batrider, batrider, batriderj, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan, older version) (Mon Dec 22 1997)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, batriderhk, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Hong Kong) (Mon Dec 22 1997)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, batridert, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Taiwan) (Mon Dec 22 1997)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, batriderhk, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Hong Kong) (Mon Dec 22 1997)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, batridert, batrider, batrider, batrider, toaplan2_state, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Taiwan) (Mon Dec 22 1997)", MACHINE_SUPPORTS_SAVE ) // Battle Bakraid // the 'unlimited' version is a newer revision of the code -GAME( 1999, bbakraid, 0, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (USA) (Tue Jun 8 1999)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, bbakraid, 0, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (USA) (Tue Jun 8 1999)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, bbakraidc, bbakraid, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (China) (Tue Jun 8 1999)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, bbakraidj, bbakraid, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", MACHINE_SUPPORTS_SAVE ) // older revision of the code diff --git a/src/mame/drivers/toki.cpp b/src/mame/drivers/toki.cpp index 0a6b57de6b5..a217d9b759a 100644 --- a/src/mame/drivers/toki.cpp +++ b/src/mame/drivers/toki.cpp @@ -71,7 +71,7 @@ Notes: 8 - 8kx8 EPROM (i.e. 27C64) BK1/BK2 - 512kx8 DIP40 mask ROM OBJ1/OBJ2 - 512kx8 DIP40 mask ROM - 82S129 - Philips 82S129 1k-bit (256x4) Biploar PROM at location J3 + 82S129 - Philips 82S129 1k-bit (256x4) Bipolar PROM at location J3 82S135 - Philips 82S135 2k-bit (256x8) Bipolar PROM at location B6 LA4460 - Sanyo LA4460 12W Power AMP SEI0100BU - Custom chip marked 'SEI0100BU YM3931' (SDIP64) @@ -485,7 +485,7 @@ GFXDECODE_END /*****************************************************************************/ -static MACHINE_CONFIG_START( toki, toki_state ) /* KOYO 20.000MHz near the cpu */ +static MACHINE_CONFIG_START( toki ) /* KOYO 20.000MHz near the cpu */ /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,XTAL_20MHz /2) /* verified on pcb */ @@ -507,7 +507,7 @@ static MACHINE_CONFIG_START( toki, toki_state ) /* KOYO 20.000MHz near the cpu * MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* verified */ MCFG_SCREEN_UPDATE_DRIVER(toki_state, screen_update_toki) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", toki) @@ -521,7 +521,7 @@ static MACHINE_CONFIG_START( toki, toki_state ) /* KOYO 20.000MHz near the cpu * MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) // verified on pcb + MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, PIN7_HIGH) // verified on pcb MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0) @@ -539,7 +539,7 @@ static MACHINE_CONFIG_DERIVED( jujuba, toki ) MCFG_CPU_DECRYPTED_OPCODES_MAP(jujuba_audio_opcodes_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tokib, toki_state ) +static MACHINE_CONFIG_START( tokib ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10MHz causes bad slowdowns with monkey machine rd1, but is correct, 20Mhz XTAL */ @@ -559,7 +559,7 @@ static MACHINE_CONFIG_START( tokib, toki_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* verified */ MCFG_SCREEN_UPDATE_DRIVER(toki_state, screen_update_tokib) - MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", tokib) @@ -576,7 +576,7 @@ static MACHINE_CONFIG_START( tokib, toki_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(toki_state, tokib_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END @@ -615,6 +615,10 @@ ROM_START( toki ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "9.m1", 0x00000, 0x20000, CRC(ae7a6b8b) SHA1(1d410f91354ffd1774896b2e64f20a2043607805) ) + + ROM_REGION( 0x0200, "proms", 0 ) /* video-related */ + ROM_LOAD( "PROM26.B6", 0x0000, 0x0100, CRC(ea6312c6) SHA1(44e2ae948cb79884a3acd8d7d3ff1c9e31562e3e) ) + ROM_LOAD( "PROM27.J3", 0x0100, 0x0100, CRC(e616ae85) SHA1(49614f87615f1a608eeb90bc68d5fc6d9109a565) ) ROM_END @@ -657,6 +661,10 @@ ROM_START( tokip ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "9 1-M", 0x00000, 0x20000, CRC(ae7a6b8b) SHA1(1d410f91354ffd1774896b2e64f20a2043607805) ) // + + ROM_REGION( 0x0200, "proms", 0 ) /* video-related */ + ROM_LOAD( "PROM26.B6", 0x0000, 0x0100, CRC(ea6312c6) SHA1(44e2ae948cb79884a3acd8d7d3ff1c9e31562e3e) ) + ROM_LOAD( "PROM27.J3", 0x0100, 0x0100, CRC(e616ae85) SHA1(49614f87615f1a608eeb90bc68d5fc6d9109a565) ) ROM_END ROM_START( tokia ) @@ -686,6 +694,10 @@ ROM_START( tokia ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "9.m1", 0x00000, 0x20000, CRC(ae7a6b8b) SHA1(1d410f91354ffd1774896b2e64f20a2043607805) ) + + ROM_REGION( 0x0200, "proms", 0 ) /* video-related */ + ROM_LOAD( "PROM26.B6", 0x0000, 0x0100, CRC(ea6312c6) SHA1(44e2ae948cb79884a3acd8d7d3ff1c9e31562e3e) ) + ROM_LOAD( "PROM27.J3", 0x0100, 0x0100, CRC(e616ae85) SHA1(49614f87615f1a608eeb90bc68d5fc6d9109a565) ) ROM_END ROM_START( tokiua ) @@ -715,6 +727,10 @@ ROM_START( tokiua ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "9.m1", 0x00000, 0x20000, CRC(ae7a6b8b) SHA1(1d410f91354ffd1774896b2e64f20a2043607805) ) + + ROM_REGION( 0x0200, "proms", 0 ) /* video-related */ + ROM_LOAD( "PROM26.B6", 0x0000, 0x0100, CRC(ea6312c6) SHA1(44e2ae948cb79884a3acd8d7d3ff1c9e31562e3e) ) + ROM_LOAD( "PROM27.J3", 0x0100, 0x0100, CRC(e616ae85) SHA1(49614f87615f1a608eeb90bc68d5fc6d9109a565) ) ROM_END @@ -745,6 +761,10 @@ ROM_START( tokiu ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "9.m1", 0x00000, 0x20000, CRC(ae7a6b8b) SHA1(1d410f91354ffd1774896b2e64f20a2043607805) ) + + ROM_REGION( 0x0200, "proms", 0 ) /* video-related */ + ROM_LOAD( "PROM26.B6", 0x0000, 0x0100, CRC(ea6312c6) SHA1(44e2ae948cb79884a3acd8d7d3ff1c9e31562e3e) ) + ROM_LOAD( "PROM27.J3", 0x0100, 0x0100, CRC(e616ae85) SHA1(49614f87615f1a608eeb90bc68d5fc6d9109a565) ) ROM_END ROM_START( juju ) @@ -774,6 +794,10 @@ ROM_START( juju ) ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_LOAD( "9.m1", 0x00000, 0x20000, CRC(ae7a6b8b) SHA1(1d410f91354ffd1774896b2e64f20a2043607805) ) + + ROM_REGION( 0x0200, "proms", 0 ) /* video-related */ + ROM_LOAD( "PROM26.B6", 0x0000, 0x0100, CRC(ea6312c6) SHA1(44e2ae948cb79884a3acd8d7d3ff1c9e31562e3e) ) + ROM_LOAD( "PROM27.J3", 0x0100, 0x0100, CRC(e616ae85) SHA1(49614f87615f1a608eeb90bc68d5fc6d9109a565) ) ROM_END ROM_START( jujuba ) diff --git a/src/mame/drivers/tokyocop.cpp b/src/mame/drivers/tokyocop.cpp deleted file mode 100644 index 0261cbe55e8..00000000000 --- a/src/mame/drivers/tokyocop.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood -/* Tokyo Cop - -TODO: -can't be emulated without proper mb bios - -Italian Version - -PC based hardware -Custom motherboard with -82815 -82801 -82562 (LAN) -RTM 560-25R (Audio) -TI4200 128Mb AGP -256 Mb PC133 -Pentium 4 (??? XXXXMhz) - -I/O Board with Altera Flex EPF15K50EQC240-3 - -*/ - - -#include "emu.h" -#include "cpu/i386/i386.h" -#include "screen.h" - - -class tokyocop_state : public driver_device -{ -public: - tokyocop_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") - { } - - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - -protected: - - // devices - required_device m_maincpu; - - // driver_device overrides - virtual void video_start() override; -}; - - -void tokyocop_state::video_start() -{ -} - -uint32_t tokyocop_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - return 0; -} - -static ADDRESS_MAP_START( tokyocop_map, AS_PROGRAM, 32, tokyocop_state ) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM -ADDRESS_MAP_END - -static INPUT_PORTS_START( tokyocop ) -INPUT_PORTS_END - - -static MACHINE_CONFIG_START( tokyocop, tokyocop_state ) - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", PENTIUM, 2000000000) /* Pentium4? */ - MCFG_CPU_PROGRAM_MAP(tokyocop_map) - - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_UPDATE_DRIVER(tokyocop_state, screen_update) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 0x100) -MACHINE_CONFIG_END - - -ROM_START(tokyocop) - ROM_REGION32_LE(0x20000, "maincpu", 0) /* motherboard bios */ - ROM_LOAD("tokyocop.pcbios", 0x000000, 0x10000, NO_DUMP ) - - DISK_REGION( "disks" ) - DISK_IMAGE( "tokyocop", 0, SHA1(a3cf011c8ef8ec80724c28e1534191b40ae8515d) ) -ROM_END - - -GAME( 2003, tokyocop, 0, tokyocop, tokyocop, driver_device, 0, ROT0, "Gaelco", "Tokyo Cop (Italy)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/tomcat.cpp b/src/mame/drivers/tomcat.cpp index dfd9ebf8ee5..34455a5593d 100644 --- a/src/mame/drivers/tomcat.cpp +++ b/src/mame/drivers/tomcat.cpp @@ -370,7 +370,7 @@ void tomcat_state::machine_start() m_dsp_BIO = 0; } -static MACHINE_CONFIG_START( tomcat, tomcat_state ) +static MACHINE_CONFIG_START( tomcat ) MCFG_CPU_ADD("maincpu", M68010, XTAL_12MHz / 2) MCFG_CPU_PROGRAM_MAP(tomcat_map) MCFG_CPU_PERIODIC_INT_DRIVER(tomcat_state, irq1_line_assert, 5*60) @@ -444,4 +444,4 @@ ROM_START( tomcat ) ROM_LOAD( "136021-105.1l", 0x0000, 0x0100, CRC(82fc3eb2) SHA1(184231c7baef598294860a7d2b8a23798c5c7da6) ) /* AVG PROM */ ROM_END -GAME( 1985, tomcat, 0, tomcat, tomcat, driver_device, 0, ROT0, "Atari", "TomCat (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tomcat, 0, tomcat, tomcat, tomcat_state, 0, ROT0, "Atari", "TomCat (prototype)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tonton.cpp b/src/mame/drivers/tonton.cpp index efef89e5df8..1bd44b4eb3a 100644 --- a/src/mame/drivers/tonton.cpp +++ b/src/mame/drivers/tonton.cpp @@ -210,7 +210,7 @@ WRITE8_MEMBER(tonton_state::ay_bout_w) * Machine Driver * *************************************************/ -static MACHINE_CONFIG_START( tonton, tonton_state ) +static MACHINE_CONFIG_START( tonton ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, CPU_CLOCK) /* Guess. According to other MSX2 based gambling games */ @@ -256,5 +256,5 @@ ROM_START( tonton ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 199?, tonton, 0, tonton, tonton, driver_device, 0, ROT0, "Success / Taiyo Jidoki", "Waku Waku Doubutsu Land TonTon (Japan)", 0 ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 199?, tonton, 0, tonton, tonton, tonton_state, 0, ROT0, "Success / Taiyo Jidoki", "Waku Waku Doubutsu Land TonTon (Japan)", 0 ) diff --git a/src/mame/drivers/toobin.cpp b/src/mame/drivers/toobin.cpp index e039a1d0434..cca681eaa97 100644 --- a/src/mame/drivers/toobin.cpp +++ b/src/mame/drivers/toobin.cpp @@ -195,7 +195,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( toobin, toobin_state ) +static MACHINE_CONFIG_START( toobin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68010, MASTER_CLOCK/4) @@ -578,9 +578,9 @@ ROM_END * *************************************/ -GAME( 1988, toobin, 0, toobin, toobin, driver_device, 0, ROT270, "Atari Games", "Toobin' (rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, toobine, toobin, toobin, toobin, driver_device, 0, ROT270, "Atari Games", "Toobin' (Europe, rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, toobing, toobin, toobin, toobin, driver_device, 0, ROT270, "Atari Games", "Toobin' (German, rev 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, toobin2, toobin, toobin, toobin, driver_device, 0, ROT270, "Atari Games", "Toobin' (rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, toobin2e, toobin, toobin, toobin, driver_device, 0, ROT270, "Atari Games", "Toobin' (Europe, rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, toobin1, toobin, toobin, toobin, driver_device, 0, ROT270, "Atari Games", "Toobin' (rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, toobin, 0, toobin, toobin, toobin_state, 0, ROT270, "Atari Games", "Toobin' (rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, toobine, toobin, toobin, toobin, toobin_state, 0, ROT270, "Atari Games", "Toobin' (Europe, rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, toobing, toobin, toobin, toobin, toobin_state, 0, ROT270, "Atari Games", "Toobin' (German, rev 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, toobin2, toobin, toobin, toobin, toobin_state, 0, ROT270, "Atari Games", "Toobin' (rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, toobin2e, toobin, toobin, toobin, toobin_state, 0, ROT270, "Atari Games", "Toobin' (Europe, rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, toobin1, toobin, toobin, toobin, toobin_state, 0, ROT270, "Atari Games", "Toobin' (rev 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp index a7c1abdd37f..8da45569ca7 100644 --- a/src/mame/drivers/topspeed.cpp +++ b/src/mame/drivers/topspeed.cpp @@ -562,7 +562,7 @@ void topspeed_state::machine_reset() } -static MACHINE_CONFIG_START( topspeed, topspeed_state ) +static MACHINE_CONFIG_START( topspeed ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz / 2) @@ -625,11 +625,11 @@ static MACHINE_CONFIG_START( topspeed, topspeed_state ) MCFG_SOUND_ADD("msm1", MSM5205, XTAL_384kHz) MCFG_MSM5205_VCLK_CB(WRITELINE(topspeed_state, msm5205_1_vck)) // VCK function - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) // 8 kHz, 4-bit + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8 kHz, 4-bit MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter2", 1.0) MCFG_SOUND_ADD("msm2", MSM5205, XTAL_384kHz) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) // Slave mode, 4-bit + MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) // Slave mode, 4-bit MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter3", 1.0) MCFG_FILTER_VOLUME_ADD("filter1l", 0) @@ -778,6 +778,6 @@ ROM_START( fullthrl ) ROM_END -GAMEL( 1987, topspeed, 0, topspeed, topspeed, driver_device, 0, ROT0, "Taito Corporation Japan", "Top Speed (World)", MACHINE_SUPPORTS_SAVE, layout_topspeed ) -GAMEL( 1987, topspeedu,topspeed, topspeed, fullthrl, driver_device, 0, ROT0, "Taito America Corporation (Romstar license)", "Top Speed (US)", MACHINE_SUPPORTS_SAVE, layout_topspeed ) -GAMEL( 1987, fullthrl, topspeed, topspeed, fullthrl, driver_device, 0, ROT0, "Taito Corporation", "Full Throttle (Japan)", MACHINE_SUPPORTS_SAVE, layout_topspeed ) +GAMEL( 1987, topspeed, 0, topspeed, topspeed, topspeed_state, 0, ROT0, "Taito Corporation Japan", "Top Speed (World)", MACHINE_SUPPORTS_SAVE, layout_topspeed ) +GAMEL( 1987, topspeedu,topspeed, topspeed, fullthrl, topspeed_state, 0, ROT0, "Taito America Corporation (Romstar license)", "Top Speed (US)", MACHINE_SUPPORTS_SAVE, layout_topspeed ) +GAMEL( 1987, fullthrl, topspeed, topspeed, fullthrl, topspeed_state, 0, ROT0, "Taito Corporation", "Full Throttle (Japan)", MACHINE_SUPPORTS_SAVE, layout_topspeed ) diff --git a/src/mame/drivers/toratora.cpp b/src/mame/drivers/toratora.cpp index a60cb5ede94..893c89c82dc 100644 --- a/src/mame/drivers/toratora.cpp +++ b/src/mame/drivers/toratora.cpp @@ -256,7 +256,7 @@ WRITE8_MEMBER(toratora_state::sn1_port_b_u3_w) * However, shot audio is muted if V < 1.0, as mixer state * is set to SLF & VCO. Should SLF FF state be inverted? */ - m_sn1->slf_cap_voltage_w((data >> 5) == 0x7 ? 2.5 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT); + m_sn1->slf_cap_voltage_w((data >> 5) == 0x7 ? 2.5 : sn76477_device::EXTERNAL_VOLTAGE_DISCONNECT); } @@ -292,7 +292,7 @@ WRITE8_MEMBER(toratora_state::sn2_port_b_u2_w) m_sn2->envelope_1_w ((data >> 3) & 0x01); m_sn2->envelope_2_w ((data >> 4) & 0x01); m_sn2->slf_res_w(resistances[(data >> 5)]); - m_sn2->slf_cap_voltage_w((data >> 5) == 0x7 ? 2.5 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT); + m_sn2->slf_cap_voltage_w((data >> 5) == 0x7 ? 2.5 : sn76477_device::EXTERNAL_VOLTAGE_DISCONNECT); /* Seems like the output should be muted in this case, but unsure of exact mechanism */ m_sn2->amplitude_res_w((data >> 5) == 0x0 ? RES_INF : RES_K(47)); @@ -390,7 +390,7 @@ void toratora_state::machine_reset() m_clear_tv = 0; } -static MACHINE_CONFIG_START( toratora, toratora_state ) +static MACHINE_CONFIG_START( toratora ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 5185000 / 8) /* 5.185 MHz XTAL divided by 8 (@ U94.12) */ @@ -522,5 +522,5 @@ ROM_END * *************************************/ -GAME( 1980, toratora, 0, toratora, toratora, driver_device, 0, ROT90, "Game Plan", "Tora Tora (prototype?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, toratorab,toratora, toratora, toratora, driver_device, 0, ROT90, "Game Plan", "Tora Tora (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, toratora, 0, toratora, toratora, toratora_state, 0, ROT90, "Game Plan", "Tora Tora (prototype?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, toratorab,toratora, toratora, toratora, toratora_state, 0, ROT90, "Game Plan", "Tora Tora (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tosh1000.cpp b/src/mame/drivers/tosh1000.cpp index 7bd75098972..c322cc203fd 100644 --- a/src/mame/drivers/tosh1000.cpp +++ b/src/mame/drivers/tosh1000.cpp @@ -30,7 +30,7 @@ Useful links: - board photo: http://s8.hostingkartinok.com/uploads/images/2016/05/579e9d152bc772d9c16bc8ac611eb97f.jpg - - manuals: http://www.minuszerodegrees.net/manuals/Toshiba/Toshiba.htm + - manuals: http://www.minuszerodegrees.net/manuals/Toshiba/Toshiba.htm ***************************************************************************/ @@ -126,7 +126,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( tosh1000_io, AS_IO, 8, tosh1000_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map) - AM_RANGE(0x00c8, 0x00c8) AM_WRITE(romdos_bank_w) // ROM-DOS page select [p. B-15] + AM_RANGE(0x00c8, 0x00c8) AM_WRITE(romdos_bank_w) // ROM-DOS page select [p. B-15] AM_RANGE(0x02c0, 0x02df) AM_DEVREADWRITE("rtc", rp5c01_device, read, write) ADDRESS_MAP_END @@ -139,7 +139,7 @@ static MACHINE_CONFIG_FRAGMENT( cfg_fdc_35 ) MCFG_DEVICE_REMOVE("fdc:1") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tosh1000, tosh1000_state ) +static MACHINE_CONFIG_START( tosh1000 ) MCFG_CPU_ADD("maincpu", I8088, XTAL_5MHz) MCFG_CPU_PROGRAM_MAP(tosh1000_map) MCFG_CPU_IO_MAP(tosh1000_io) @@ -190,5 +190,5 @@ ROM_START( tosh1000 ) ROM_END -/* YEAR ROM NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP ( 1987, tosh1000, ibm5150, 0, tosh1000, 0, tosh1000_state, tosh1000, "Toshiba", "Toshiba T1000", MACHINE_IS_SKELETON) +// YEAR ROM NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP ( 1987, tosh1000, ibm5150, 0, tosh1000, 0, tosh1000_state, tosh1000, "Toshiba", "Toshiba T1000", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/tourtabl.cpp b/src/mame/drivers/tourtabl.cpp index 2c7d91f6c7d..f87eceb031c 100644 --- a/src/mame/drivers/tourtabl.cpp +++ b/src/mame/drivers/tourtabl.cpp @@ -146,7 +146,7 @@ static INPUT_PORTS_START( tourtabl ) INPUT_PORTS_END -static MACHINE_CONFIG_START( tourtabl, tourtabl_state ) +static MACHINE_CONFIG_START( tourtabl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 3) /* actually M6507 */ MCFG_CPU_PROGRAM_MAP(main_map) @@ -203,5 +203,5 @@ ROM_START( tourtab2 ) ROM_END -GAME( 1978, tourtabl, 0, tourtabl, tourtabl, driver_device, 0, ROT0, "Atari", "Tournament Table (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1978, tourtab2, tourtabl, tourtabl, tourtabl, driver_device, 0, ROT0, "Atari", "Tournament Table (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1978, tourtabl, 0, tourtabl, tourtabl, tourtabl_state, 0, ROT0, "Atari", "Tournament Table (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1978, tourtab2, tourtabl, tourtabl, tourtabl, tourtabl_state, 0, ROT0, "Atari", "Tournament Table (set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp index a4090b82075..4c596cd4e75 100644 --- a/src/mame/drivers/tourvis.cpp +++ b/src/mame/drivers/tourvis.cpp @@ -44,7 +44,7 @@ Doraemon Meikyuu Daisakusen (20) * Doraemon II Down Load (43) - * Dragon Egg! + Dragon Egg! (137) Dragon Saber (65) Dragon Spirit (?) Drop Rock Hora Hora (12) @@ -498,7 +498,7 @@ WRITE_LINE_MEMBER(tourvision_state::tourvision_timer_out) } -static MACHINE_CONFIG_START( tourvision, tourvision_state ) +static MACHINE_CONFIG_START( tourvision ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H6280, PCE_MAIN_CLOCK/3) MCFG_CPU_PROGRAM_MAP(pce_mem) @@ -510,7 +510,7 @@ static MACHINE_CONFIG_START( tourvision, tourvision_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242) + MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242) MCFG_SCREEN_UPDATE_DRIVER( pce_common_state, screen_update ) MCFG_SCREEN_PALETTE("huc6260:palette") @@ -568,4 +568,4 @@ ROM_START(tourvis) ROM_END -GAME( 19??, tourvis, 0, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision)", "Tourvision PCE bootleg", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING ) +GAME( 19??, tourvis, 0, tourvision, tourvision, tourvision_state, pce_common, ROT0, "bootleg (Tourvision)", "Tourvision PCE bootleg", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/toypop.cpp b/src/mame/drivers/toypop.cpp index 0a2bfe6af56..fe81bfec9d9 100644 --- a/src/mame/drivers/toypop.cpp +++ b/src/mame/drivers/toypop.cpp @@ -4,7 +4,8 @@ "Universal System 16" Hardware (c) 1983/1986 Namco - driver by Angelo Salese, based off "wiped off due of not anymore licenseable" driver by Edgardo E. Contini Salvan. + driver by Angelo Salese, + original "wiped off due of not anymore licenseable" driver by Edgardo E. Contini Salvan. TODO: - PAL is presumably inverted with address bit 11 (0x800) for 0x6000-0x7fff area @@ -650,7 +651,7 @@ INTERRUPT_GEN_MEMBER(namcos16_state::slave_vblank_irq) device.execute().set_input_line(6,HOLD_LINE); } -static MACHINE_CONFIG_START( liblrabl, namcos16_state ) +static MACHINE_CONFIG_START( liblrabl ) MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/4) MCFG_CPU_PROGRAM_MAP(master_liblrabl_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos16_state, master_scanline, "screen", 0, 1) @@ -664,20 +665,20 @@ static MACHINE_CONFIG_START( liblrabl, namcos16_state ) MCFG_CPU_PERIODIC_INT_DRIVER(namcos16_state, irq0_line_hold, 60) - MCFG_DEVICE_ADD("58xx", NAMCO58XX, 0) + MCFG_DEVICE_ADD("58xx", NAMCO_58XX, 0) MCFG_NAMCO58XX_IN_0_CB(IOPORT("COINS")) MCFG_NAMCO58XX_IN_1_CB(IOPORT("P1_RIGHT")) MCFG_NAMCO58XX_IN_2_CB(IOPORT("P2_RIGHT")) MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS")) - MCFG_DEVICE_ADD("56xx_1", NAMCO56XX, 0) + MCFG_DEVICE_ADD("56xx_1", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_0_CB(READ8(namcos16_state, dipA_h)) MCFG_NAMCO56XX_IN_1_CB(READ8(namcos16_state, dipB_l)) MCFG_NAMCO56XX_IN_2_CB(READ8(namcos16_state, dipB_h)) MCFG_NAMCO56XX_IN_3_CB(READ8(namcos16_state, dipA_l)) MCFG_NAMCO56XX_OUT_0_CB(WRITE8(namcos16_state, flip)) - MCFG_DEVICE_ADD("56xx_2", NAMCO56XX, 0) + MCFG_DEVICE_ADD("56xx_2", NAMCO_56XX, 0) MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1_LEFT")) MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2_LEFT")) MCFG_NAMCO56XX_IN_3_CB(IOPORT("SERVICE")) @@ -763,5 +764,5 @@ ROM_START( toypop ) ROM_LOAD( "tp1-6.3d", 0x0000, 0x0100, CRC(16a9166a) SHA1(847cbaf7c88616576c410177e066ae1d792ac0ba) ) ROM_END -GAME( 1983, liblrabl, 0, liblrabl, liblrabl, driver_device, 0, ROT0, "Namco", "Libble Rabble", MACHINE_NO_COCKTAIL ) -GAME( 1986, toypop, 0, toypop, toypop, driver_device, 0, ROT0, "Namco", "Toypop", MACHINE_NO_COCKTAIL ) +GAME( 1983, liblrabl, 0, liblrabl, liblrabl, namcos16_state, 0, ROT0, "Namco", "Libble Rabble", MACHINE_NO_COCKTAIL ) +GAME( 1986, toypop, 0, toypop, toypop, namcos16_state, 0, ROT0, "Namco", "Toypop", MACHINE_NO_COCKTAIL ) diff --git a/src/mame/drivers/tp84.cpp b/src/mame/drivers/tp84.cpp index 3cf5ee6bd08..e4d8546dbd5 100644 --- a/src/mame/drivers/tp84.cpp +++ b/src/mame/drivers/tp84.cpp @@ -100,7 +100,7 @@ WRITE8_MEMBER(tp84_state::tp84_filter_w) C = 0; if (offset & 0x008) C += 47000; /* 47000pF = 0.047uF */ if (offset & 0x010) C += 470000; /* 470000pF = 0.47uF */ - dynamic_cast(machine().device("filter1"))->filter_rc_set_RC(FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C)); + downcast(machine().device("filter1"))->filter_rc_set_RC(filter_rc_device::LOWPASS,1000,2200,1000,CAP_P(C)); /* 76489 #1 (optional) */ C = 0; @@ -111,12 +111,12 @@ WRITE8_MEMBER(tp84_state::tp84_filter_w) /* 76489 #2 */ C = 0; if (offset & 0x080) C += 470000; /* 470000pF = 0.47uF */ - dynamic_cast(machine().device("filter2"))->filter_rc_set_RC(FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C)); + downcast(machine().device("filter2"))->filter_rc_set_RC(filter_rc_device::LOWPASS,1000,2200,1000,CAP_P(C)); /* 76489 #3 */ C = 0; if (offset & 0x100) C += 470000; /* 470000pF = 0.47uF */ - dynamic_cast(machine().device("filter3"))->filter_rc_set_RC(FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C)); + downcast(machine().device("filter3"))->filter_rc_set_RC(filter_rc_device::LOWPASS,1000,2200,1000,CAP_P(C)); } WRITE8_MEMBER(tp84_state::tp84_sh_irqtrigger_w) @@ -286,7 +286,7 @@ INTERRUPT_GEN_MEMBER(tp84_state::sub_vblank_irq) } -static MACHINE_CONFIG_START( tp84, tp84_state ) +static MACHINE_CONFIG_START( tp84 ) /* basic machine hardware */ MCFG_CPU_ADD("cpu1",M6809, XTAL_18_432MHz/12) /* verified on pcb */ @@ -442,6 +442,6 @@ ROM_START( tp84b ) ROM_END -GAME( 1984, tp84, 0, tp84, tp84, driver_device, 0, ROT90, "Konami", "Time Pilot '84 (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, tp84a, tp84, tp84, tp84a, driver_device,0, ROT90, "Konami", "Time Pilot '84 (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, tp84b, tp84, tp84b, tp84, driver_device, 0, ROT90, "Konami", "Time Pilot '84 (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, tp84, 0, tp84, tp84, tp84_state, 0, ROT90, "Konami", "Time Pilot '84 (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, tp84a, tp84, tp84, tp84a, tp84_state, 0, ROT90, "Konami", "Time Pilot '84 (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, tp84b, tp84, tp84b, tp84, tp84_state, 0, ROT90, "Konami", "Time Pilot '84 (set 3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tr606.cpp b/src/mame/drivers/tr606.cpp index 0b99d9992a3..95a18f94525 100644 --- a/src/mame/drivers/tr606.cpp +++ b/src/mame/drivers/tr606.cpp @@ -77,7 +77,7 @@ void tr606_state::machine_start() // register for savestates } -static MACHINE_CONFIG_START( tr606, tr606_state ) +static MACHINE_CONFIG_START( tr606 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NEC_D650, TP2_HZ) @@ -107,4 +107,4 @@ ROM_START( tr606 ) ROM_END -CONS( 1982, tr606, 0, 0, tr606, tr606, driver_device, 0, "Roland", "TR-606 Drumatix", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 1982, tr606, 0, 0, tr606, tr606, tr606_state, 0, "Roland", "TR-606 Drumatix", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index b749b17c225..4edd4b221a9 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -900,7 +900,7 @@ INTERRUPT_GEN_MEMBER(trackfld_state::vblank_nmi) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( trackfld, trackfld_state ) +static MACHINE_CONFIG_START( trackfld ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI1, MASTER_CLOCK/6/2) /* a guess for now */ @@ -957,7 +957,7 @@ INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( yieartf, trackfld_state ) +static MACHINE_CONFIG_START( yieartf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/6/2) /* a guess for now */ @@ -1620,20 +1620,20 @@ DRIVER_INIT_MEMBER(trackfld_state,wizzquiz) } -GAME( 1983, trackfld, 0, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami", "Track & Field", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, trackfldc, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami (Centuri license)", "Track & Field (Centuri)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hyprolym, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami", "Hyper Olympic", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hyprolymb, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hyprolymba,trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hipoly, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hipoly (bootleg of Hyper Olympic)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, atlantol, trackfld, atlantol, atlantol, trackfld_state, atlantol, ROT0, "bootleg", "Atlant Olimpic", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, trackfldnz,trackfld, trackfld, trackfld, trackfld_state, trackfldnz,ROT0, "bootleg? (Goldberg Enterprizes Inc.)", "Track & Field (NZ bootleg?)", MACHINE_SUPPORTS_SAVE) // bootleg of the Centuri version +GAME( 1983, trackfld, 0, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami", "Track & Field", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, trackfldc, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami (Centuri license)", "Track & Field (Centuri)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hyprolym, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami", "Hyper Olympic", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hyprolymb, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hyprolymba, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hipoly, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hipoly (bootleg of Hyper Olympic)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, atlantol, trackfld, atlantol, atlantol, trackfld_state, atlantol, ROT0, "bootleg", "Atlant Olimpic", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, trackfldnz, trackfld, trackfld, trackfld, trackfld_state, trackfldnz, ROT0, "bootleg? (Goldberg Enterprizes Inc.)", "Track & Field (NZ bootleg?)", MACHINE_SUPPORTS_SAVE) // bootleg of the Centuri version -GAME( 1988, mastkin, 0, mastkin, mastkin, trackfld_state, mastkin, ROT0, "Du Tech", "The Masters of Kin", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mastkin, 0, mastkin, mastkin, trackfld_state, mastkin, ROT0, "Du Tech", "The Masters of Kin", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, wizzquiz, 0, wizzquiz, wizzquiz, trackfld_state, wizzquiz, ROT0, "Zilec-Zenitone (Konami license)", "Wizz Quiz (Konami version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, wizzquiza, wizzquiz, wizzquiz, wizzquiz, trackfld_state, wizzquiz, ROT0, "Zilec-Zenitone", "Wizz Quiz (version 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, wizzquiz, 0, wizzquiz, wizzquiz, trackfld_state, wizzquiz, ROT0, "Zilec-Zenitone (Konami license)", "Wizz Quiz (Konami version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, wizzquiza, wizzquiz, wizzquiz, wizzquiz, trackfld_state, wizzquiz, ROT0, "Zilec-Zenitone", "Wizz Quiz (version 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, reaktor, 0, reaktor, reaktor, driver_device, 0, ROT90, "Zilec", "Reaktor (Track & Field conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, reaktor, 0, reaktor, reaktor, trackfld_state, 0, ROT90, "Zilec", "Reaktor (Track & Field conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, yieartf, yiear, yieartf, yieartf, driver_device, 0, ROT0, "Konami", "Yie Ar Kung-Fu (GX361 conversion)", MACHINE_SUPPORTS_SAVE ) // the conversion looks of bootleg quality, but the code is clearly a very different revision to either original hardware set... +GAME( 1985, yieartf, yiear, yieartf, yieartf, trackfld_state, 0, ROT0, "Konami", "Yie Ar Kung-Fu (GX361 conversion)", MACHINE_SUPPORTS_SAVE ) // the conversion looks of bootleg quality, but the code is clearly a very different revision to either original hardware set... diff --git a/src/mame/drivers/tranz330.cpp b/src/mame/drivers/tranz330.cpp index 97874e0b349..5ce58c01ac2 100644 --- a/src/mame/drivers/tranz330.cpp +++ b/src/mame/drivers/tranz330.cpp @@ -150,7 +150,7 @@ static const z80_daisy_config tranz330_daisy_chain[] = // * - check clocks // ? - check purported RS232 hookup, inconsistent information found at the relevant webpage vs. user-submitted errata -static MACHINE_CONFIG_START( tranz330, tranz330_state ) +static MACHINE_CONFIG_START( tranz330 ) MCFG_CPU_ADD(CPU_TAG, Z80, XTAL_7_15909MHz/2) //* MCFG_CPU_PROGRAM_MAP(tranz330_mem) MCFG_CPU_IO_MAP(tranz330_io) @@ -200,5 +200,5 @@ ROM_START( tranz330 ) ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1985, tranz330, 0, 0, tranz330, tranz330, driver_device, 0, "VeriFone", "Tranz 330", MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1985, tranz330, 0, 0, tranz330, tranz330, tranz330_state, 0, "VeriFone", "Tranz 330", MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/travrusa.cpp b/src/mame/drivers/travrusa.cpp index 9eb1c058c42..19f2bd3e96b 100644 --- a/src/mame/drivers/travrusa.cpp +++ b/src/mame/drivers/travrusa.cpp @@ -303,7 +303,7 @@ void travrusa_state::machine_reset() m_scrollx[1] = 0; } -static MACHINE_CONFIG_START( travrusa, travrusa_state ) +static MACHINE_CONFIG_START( travrusa ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */ @@ -616,11 +616,11 @@ DRIVER_INIT_MEMBER(travrusa_state, shtridrb) } -GAME( 1983, travrusa, 0, travrusa, travrusa, driver_device, 0, ROT270, "Irem", "Traverse USA / Zippy Race", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, travrusab,travrusa, travrusa, travrusa, driver_device, 0, ROT270, "bootleg (I.P.)", "Traverse USA (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, mototour, travrusa, travrusa, travrusa, driver_device, 0, ROT270, "Irem (Tecfri license)", "MotoTour / Zippy Race (Tecfri license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, motorace, travrusa, travrusa, motorace, travrusa_state, motorace, ROT270, "Irem (Williams license)", "MotoRace USA", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, travrusa, 0, travrusa, travrusa, travrusa_state, 0, ROT270, "Irem", "Traverse USA / Zippy Race", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, travrusab,travrusa, travrusa, travrusa, travrusa_state, 0, ROT270, "bootleg (I.P.)", "Traverse USA (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mototour, travrusa, travrusa, travrusa, travrusa_state, 0, ROT270, "Irem (Tecfri license)", "MotoTour / Zippy Race (Tecfri license)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, motorace, travrusa, travrusa, motorace, travrusa_state, motorace, ROT270, "Irem (Williams license)", "MotoRace USA", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, shtrider, 0, shtrider, shtrider, driver_device, 0, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu", "Shot Rider", MACHINE_SUPPORTS_SAVE ) // possible bootleg +GAME( 1985, shtrider, 0, shtrider, shtrider, travrusa_state, 0, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu", "Shot Rider", MACHINE_SUPPORTS_SAVE ) // possible bootleg GAME( 1984, shtridera,shtrider, shtrider, shtrider, travrusa_state, shtridra, ROT270|ORIENTATION_FLIP_X, "Seibu Kaihatsu (Sigma license)", "Shot Rider (Sigma license)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, shtriderb,shtrider, shtriderb,shtrider, travrusa_state, shtridrb, ROT270|ORIENTATION_FLIP_X, "bootleg", "Shot Rider (bootleg)", MACHINE_SUPPORTS_SAVE ) // resets when you attempt to start a game? diff --git a/src/mame/drivers/tricep.cpp b/src/mame/drivers/tricep.cpp index a3447f5eb02..7110250a508 100644 --- a/src/mame/drivers/tricep.cpp +++ b/src/mame/drivers/tricep.cpp @@ -18,19 +18,23 @@ class tricep_state : public driver_device { public: tricep_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_terminal(*this, TERMINAL_TAG) - , - m_p_ram(*this, "p_ram"){ } + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_terminal(*this, TERMINAL_TAG) + , m_p_ram(*this, "p_ram") + { + } - required_device m_maincpu; - required_device m_terminal; DECLARE_READ16_MEMBER(tricep_terminal_r); DECLARE_WRITE16_MEMBER(tricep_terminal_w); - DECLARE_WRITE8_MEMBER(kbd_put); - required_shared_ptr m_p_ram; + void kbd_put(u8 data); + +protected: virtual void machine_reset() override; + + required_device m_maincpu; + required_device m_terminal; + required_shared_ptr m_p_ram; }; @@ -66,19 +70,18 @@ void tricep_state::machine_reset() m_maincpu->reset(); } -WRITE8_MEMBER( tricep_state::kbd_put ) +void tricep_state::kbd_put(u8 data) { } -static MACHINE_CONFIG_START( tricep, tricep_state ) +static MACHINE_CONFIG_START( tricep ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu",M68000, XTAL_8MHz) + MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(tricep_mem) - /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(tricep_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(tricep_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -90,5 +93,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, tricep, 0, 0, tricep, tricep, driver_device, 0, "Morrow Designs", "Tricep", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, tricep, 0, 0, tricep, tricep, tricep_state, 0, "Morrow Designs", "Tricep", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/triforce.cpp b/src/mame/drivers/triforce.cpp index 94b7ef4a875..503ed3c2310 100644 --- a/src/mame/drivers/triforce.cpp +++ b/src/mame/drivers/triforce.cpp @@ -28,7 +28,7 @@ Games on this system include.... | | 2003 | F-Zero AX (Rev A) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004A | 317-0362-COM | 253-5508-0362 | | | 2003 | F-Zero AX (Rev B) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004B | 317-0362-COM | 253-5508-0362 | |*| 2003 | F-Zero AX (Rev C) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004C | 317-0362-COM | 253-5508-0362 | -|*| 2003 | F-Zero AX (Rev D) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004D | 317-0362-COM | 253-5508-0362 | +| | 2003 | F-Zero AX (Rev D) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004D | 317-0362-COM | 253-5508-0362 | |*| 2003 | F-Zero AX (Rev E) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004E | 317-0362-COM | 253-5508-0362 | | | 2003 | The Key Of Avalon: The Wizard Master (server) | Sega / Hitmaker | GDROM | GDT-0005 | 317-0355-JPN | 253-5508-0355J| | | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0005A | 317-0355-JPN | 253-5508-0355J| @@ -67,7 +67,7 @@ Games on this system include.... | | 2004 | Virtua Striker 4 (Japan) (Rev C) | Sega | GDROM | GDT-0013C | 317-0391-JPN | | | | 2004 | Virtua Striker 4 (Japan) (Rev D) | Sega | GDROM | GDT-0013D | 317-0391-JPN | | |*| 2004 | Virtua Striker 4 (Japan) (Rev E) | Sega | GDROM | GDT-0013E | 317-0391-JPN | | -| | 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0014 | | | +| | 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0014 | | 253-5508-0392E| |*| 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0015 | 317-0393-EXP | | | | 2004 | Virtua Striker 4 (Export) | Sega | CF | MDA-G0016 | 317-0393-EXP | | | | 2004 | The Key Of Avalon 2: Eutaxy Commandment (server) | Sega / Hitmaker | GDROM | GDT-0016 | 317-0403-JPN | 253-5508-0403J| @@ -566,7 +566,7 @@ void triforce_state::machine_start() descrambler(&rom[0x100], 0x1afe00); } -static MACHINE_CONFIG_START( triforce_base, triforce_state ) +static MACHINE_CONFIG_START( triforce_base ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC603, 64000000) /* Correct CPU is a PowerPC 750 (what Apple called "G3") with paired-single vector instructions added */ @@ -833,7 +833,7 @@ ROM_START( tfupdate ) TRIFORCE_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdt-0011", 0, BAD_DUMP SHA1(71bfa8f53d211085c020d54f55eeeabf85212a0b) ) + DISK_IMAGE_READONLY( "gdt-0011", 0, SHA1(834e261f2752883ceac0220a0305f9b09c3b5a9b) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) ROM_LOAD("317-0371-jpn.data", 0x00, 0x50, CRC(08434e5e) SHA1(2121999e851f6f62ab845e6de40849d850ac9d1c) ) @@ -914,7 +914,7 @@ ROM_START( avalon20 ) TRIFORCE_BIOS DISK_REGION( "gdrom" ) - DISK_IMAGE_READONLY( "gdt-0017b", 0, BAD_DUMP SHA1(e2dd32c322ffcaf38b82275d2721b71bb3dfc1f2) ) + DISK_IMAGE_READONLY( "gdt-0017b", 0, SHA1(22827a78415c967c9b6abff5aa1037e01785a7b3) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) ROM_LOAD("317-0403-jpn.data", 0x00, 0x50, CRC(c5071ada) SHA1(70018180b917beec1b2c272f9125fa43fd1a7b00) ) @@ -1061,77 +1061,77 @@ ROM_START( mkartag2a ) ROM_END /* Main board */ -/*Triforce*/GAME( 2002, triforce, 0, triforce_base, triforce, driver_device, 0, ROT0, "Sega", "Triforce Bios", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT ) +/*Triforce*/GAME( 2002, triforce, 0, triforce_base, triforce, triforce_state, 0, ROT0, "Sega", "Triforce Bios", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT ) /* GDT-xxxx (Sega GD-ROM games) */ -/* 0001 */ GAME( 2002, vs2002j, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (GDT-0001)", MACHINE_IS_SKELETON ) -/* 0002 */ GAME( 2002, vs2002ex, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (GDT-0002)", MACHINE_IS_SKELETON ) +/* 0001 */ GAME( 2002, vs2002j, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (GDT-0001)", MACHINE_IS_SKELETON ) +/* 0002 */ GAME( 2002, vs2002ex, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (GDT-0002)", MACHINE_IS_SKELETON ) // 0003 -// 0004 GAME( 2003, fzeroaxo, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (GDT-0004)", MACHINE_IS_SKELETON ) -// 0004A GAME( 2003, fzeroaxa, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev A) (GDT-0004A)", MACHINE_IS_SKELETON ) -// 0004B GAME( 2003, fzeroaxb, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev B) (GDT-0004B)", MACHINE_IS_SKELETON ) -/* 0004C */ GAME( 2003, fzeroaxc, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev C) (GDT-0004C)", MACHINE_IS_SKELETON ) -// 0004D GAME( 2003, fzeroaxd, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev D) (GDT-0004D)", MACHINE_IS_SKELETON ) -/* 0004E */ GAME( 2003, fzeroax, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev E) (GDT-0004E)", MACHINE_IS_SKELETON ) -// 0005 GAME( 2003, avalonso, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (GDT-0005)", MACHINE_IS_SKELETON ) -// 0005A GAME( 2003, avalonsa, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev A) (GDT-0005A)", MACHINE_IS_SKELETON ) -// 0005B GAME( 2003, avalonsb, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev B) (GDT-0005B)", MACHINE_IS_SKELETON ) -/* 0005C */ GAME( 2003, avalonsc, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev C) (GDT-0005C)", MACHINE_IS_SKELETON ) -// 0005D GAME( 2003, avalonsd, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev D) (GDT-0005D)", MACHINE_IS_SKELETON ) -/* 0005E */ GAME( 2003, avalonse, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev E) (GDT-0005E)", MACHINE_IS_SKELETON ) -/* 0005F */ GAME( 2003, avalonsf, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev F) (GDT-0005F)", MACHINE_IS_SKELETON ) -/* 0005G */ GAME( 2003, avalons, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev G) (GDT-0005G)", MACHINE_IS_SKELETON ) -// 0006 GAME( 2003, avalonco, avalonc, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (GDT-0006)", MACHINE_IS_SKELETON ) -// 0006A GAME( 2003, avalonca, avalonc, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev A) (GDT-0006A)", MACHINE_IS_SKELETON ) -// 0006B GAME( 2003, avaloncb, avalonc, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev B) (GDT-0006B)", MACHINE_IS_SKELETON ) -// 0006C GAME( 2003, avaloncc, avalonc, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev C) (GDT-0006C)", MACHINE_IS_SKELETON ) -// 0006D GAME( 2003, avaloncd, avalonc, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev D) (GDT-0006D)", MACHINE_IS_SKELETON ) -/* 0006E */ GAME( 2003, avalonce, avalonc, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev E) (GDT-0006E)", MACHINE_IS_SKELETON ) -/* 0006F */ GAME( 2003, avaloncf, avalonc, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev F) (GDT-0006F)", MACHINE_IS_SKELETON ) -/* 0006G */ GAME( 2003, avalonc, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev G) (GDT-0006G)", MACHINE_IS_SKELETON ) +// 0004 GAME( 2003, fzeroaxo, fzeroax, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (GDT-0004)", MACHINE_IS_SKELETON ) +// 0004A GAME( 2003, fzeroaxa, fzeroax, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev A) (GDT-0004A)", MACHINE_IS_SKELETON ) +// 0004B GAME( 2003, fzeroaxb, fzeroax, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev B) (GDT-0004B)", MACHINE_IS_SKELETON ) +/* 0004C */ GAME( 2003, fzeroaxc, fzeroax, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev C) (GDT-0004C)", MACHINE_IS_SKELETON ) +// 0004D GAME( 2003, fzeroaxd, fzeroax, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev D) (GDT-0004D)", MACHINE_IS_SKELETON ) +/* 0004E */ GAME( 2003, fzeroax, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev E) (GDT-0004E)", MACHINE_IS_SKELETON ) +// 0005 GAME( 2003, avalonso, avalons, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (GDT-0005)", MACHINE_IS_SKELETON ) +// 0005A GAME( 2003, avalonsa, avalons, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev A) (GDT-0005A)", MACHINE_IS_SKELETON ) +// 0005B GAME( 2003, avalonsb, avalons, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev B) (GDT-0005B)", MACHINE_IS_SKELETON ) +/* 0005C */ GAME( 2003, avalonsc, avalons, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev C) (GDT-0005C)", MACHINE_IS_SKELETON ) +// 0005D GAME( 2003, avalonsd, avalons, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev D) (GDT-0005D)", MACHINE_IS_SKELETON ) +/* 0005E */ GAME( 2003, avalonse, avalons, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev E) (GDT-0005E)", MACHINE_IS_SKELETON ) +/* 0005F */ GAME( 2003, avalonsf, avalons, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev F) (GDT-0005F)", MACHINE_IS_SKELETON ) +/* 0005G */ GAME( 2003, avalons, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev G) (GDT-0005G)", MACHINE_IS_SKELETON ) +// 0006 GAME( 2003, avalonco, avalonc, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (GDT-0006)", MACHINE_IS_SKELETON ) +// 0006A GAME( 2003, avalonca, avalonc, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev A) (GDT-0006A)", MACHINE_IS_SKELETON ) +// 0006B GAME( 2003, avaloncb, avalonc, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev B) (GDT-0006B)", MACHINE_IS_SKELETON ) +// 0006C GAME( 2003, avaloncc, avalonc, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev C) (GDT-0006C)", MACHINE_IS_SKELETON ) +// 0006D GAME( 2003, avaloncd, avalonc, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev D) (GDT-0006D)", MACHINE_IS_SKELETON ) +/* 0006E */ GAME( 2003, avalonce, avalonc, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev E) (GDT-0006E)", MACHINE_IS_SKELETON ) +/* 0006F */ GAME( 2003, avaloncf, avalonc, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev F) (GDT-0006F)", MACHINE_IS_SKELETON ) +/* 0006G */ GAME( 2003, avalonc, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev G) (GDT-0006G)", MACHINE_IS_SKELETON ) // 0007 -// 0008 GAME( 2003, gekpuryao,gekpurya, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (GDT-0008)", MACHINE_IS_SKELETON ) -// 0008A GAME( 2003, gekpuryaa,gekpurya, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev A) (GDT-0008A)", MACHINE_IS_SKELETON ) -/* 0008B */ GAME( 2003, gekpuryb, gekpurya, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev B) (GDT-0008B)", MACHINE_IS_SKELETON ) -/* 0008C */ GAME( 2003, gekpurya, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C) (GDT-0008C)", MACHINE_IS_SKELETON ) -// 0009 GAME( 2004, avalns11, avalns13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (server) (GDT-0009)", MACHINE_IS_SKELETON ) -/* 0009A */ GAME( 2004, avalns12, avalns13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (server) (Rev A) (GDT-0009A)", MACHINE_IS_SKELETON ) -// 0009B GAME( 2004, avals13b, avalns13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (server) (Rev B) (GDT-0009B)", MACHINE_IS_SKELETON ) -/* 0009C */ GAME( 2004, avalns13, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (server) (Rev C) (GDT-0009C)", MACHINE_IS_SKELETON ) -// 0010 GAME( 2004, avalnc11, avalnc13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (client) (GDT-0010)", MACHINE_IS_SKELETON ) -/* 0010A */ GAME( 2004, avalnc12, avalnc13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (client) (Rev A) (GDT-0010A)", MACHINE_IS_SKELETON ) -// 0010B GAME( 2004, avalc13b, avalnc13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (client) (Rev B) (GDT-0010B)", MACHINE_IS_SKELETON ) -/* 0010C */ GAME( 2004, avalnc13, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (client) (Rev C) (GDT-0010C)", MACHINE_IS_SKELETON ) -/* 0011 */ GAME( 2004, tfupdate, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Triforce DIMM Updater (3.17) (GDT-0011)", MACHINE_IS_SKELETON ) +// 0008 GAME( 2003, gekpuryao,gekpurya, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (GDT-0008)", MACHINE_IS_SKELETON ) +// 0008A GAME( 2003, gekpuryaa,gekpurya, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev A) (GDT-0008A)", MACHINE_IS_SKELETON ) +/* 0008B */ GAME( 2003, gekpuryb, gekpurya, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev B) (GDT-0008B)", MACHINE_IS_SKELETON ) +/* 0008C */ GAME( 2003, gekpurya, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C) (GDT-0008C)", MACHINE_IS_SKELETON ) +// 0009 GAME( 2004, avalns11, avalns13, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (server) (GDT-0009)", MACHINE_IS_SKELETON ) +/* 0009A */ GAME( 2004, avalns12, avalns13, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (server) (Rev A) (GDT-0009A)", MACHINE_IS_SKELETON ) +// 0009B GAME( 2004, avals13b, avalns13, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (server) (Rev B) (GDT-0009B)", MACHINE_IS_SKELETON ) +/* 0009C */ GAME( 2004, avalns13, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (server) (Rev C) (GDT-0009C)", MACHINE_IS_SKELETON ) +// 0010 GAME( 2004, avalnc11, avalnc13, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (client) (GDT-0010)", MACHINE_IS_SKELETON ) +/* 0010A */ GAME( 2004, avalnc12, avalnc13, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (client) (Rev A) (GDT-0010A)", MACHINE_IS_SKELETON ) +// 0010B GAME( 2004, avalc13b, avalnc13, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (client) (Rev B) (GDT-0010B)", MACHINE_IS_SKELETON ) +/* 0010C */ GAME( 2004, avalnc13, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (client) (Rev C) (GDT-0010C)", MACHINE_IS_SKELETON ) +/* 0011 */ GAME( 2004, tfupdate, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Triforce DIMM Updater (3.17) (GDT-0011)", MACHINE_IS_SKELETON ) // 0012 -// 0013 GAME( 2005, vs4jo, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (GDT-0013)", MACHINE_IS_SKELETON ) -// 0013A GAME( 2005, vs4ja, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev A) (GDT-0013A)", MACHINE_IS_SKELETON ) -// 0013B GAME( 2005, vs4jb, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev B) (GDT-0013B)", MACHINE_IS_SKELETON ) -// 0013C GAME( 2005, vs4jc, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev C) (GDT-0013C)", MACHINE_IS_SKELETON ) -// 0013D GAME( 2005, vs4jd, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev D) (GDT-0013D)", MACHINE_IS_SKELETON ) -/* 0013E */ GAME( 2005, vs4j, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev E) (GDT-0013E)", MACHINE_IS_SKELETON ) +// 0013 GAME( 2005, vs4jo, vs4j, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (GDT-0013)", MACHINE_IS_SKELETON ) +// 0013A GAME( 2005, vs4ja, vs4j, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev A) (GDT-0013A)", MACHINE_IS_SKELETON ) +// 0013B GAME( 2005, vs4jb, vs4j, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev B) (GDT-0013B)", MACHINE_IS_SKELETON ) +// 0013C GAME( 2005, vs4jc, vs4j, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev C) (GDT-0013C)", MACHINE_IS_SKELETON ) +// 0013D GAME( 2005, vs4jd, vs4j, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev D) (GDT-0013D)", MACHINE_IS_SKELETON ) +/* 0013E */ GAME( 2005, vs4j, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev E) (GDT-0013E)", MACHINE_IS_SKELETON ) // 0014 -/* 0015 */ GAME( 2004, vs4, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Export) (GDT-0015)", MACHINE_IS_SKELETON ) -// 0016 GAME( 2004, avalons20,triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (server) (GDT-0016)", MACHINE_IS_SKELETON ) -// 0017 GAME( 2004, avalon20o,avalon20, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (GDT-0017)", MACHINE_IS_SKELETON ) -// 0017A GAME( 2004, avalon20a,avalon20, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev A) (GDT-0017A)", MACHINE_IS_SKELETON ) -/* 0017B */ GAME( 2004, avalon20, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev B) (GDT-0017B)", MACHINE_IS_SKELETON ) -// 0018 GAME( 2005, avalns25o,avalns25, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (GDT-0018)", MACHINE_IS_SKELETON ) -// 0018A GAME( 2005, avalns25a,avalns25, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev A) (GDT-0018A)", MACHINE_IS_SKELETON ) -/* 0018B */ GAME( 2005, avalns25, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev B) (GDT-0018B)", MACHINE_IS_SKELETON ) -// 0019 GAME( 2005, avalnc25o,avalnc25, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (GDT-0019)", MACHINE_IS_SKELETON ) -// 0019A GAME( 2005, avalnc25a,avalnc25, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev A) (GDT-0019A)", MACHINE_IS_SKELETON ) -/* 0019B */ GAME( 2005, avalnc25, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev B) (GDT-0019B)", MACHINE_IS_SKELETON ) -// 0020 GAME( 2006, vs42006o, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (GDT-0020)", MACHINE_IS_SKELETON ) -// 0020A GAME( 2006, vs42006a, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev A) (GDT-0020A)", MACHINE_IS_SKELETON ) -// 0020B GAME( 2006, vs42006b, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev B) (GDT-0020B)", MACHINE_IS_SKELETON ) -// 0020C GAME( 2006, vs42006c, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev C) (GDT-0020C)", MACHINE_IS_SKELETON ) -/* 0020D */ GAME( 2006, vs42006, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev D) (GDT-0020D)", MACHINE_IS_SKELETON ) -/* 0021 */ GAME( 2006, vs42k6ex, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Export) (GDT-0021)", MACHINE_IS_SKELETON ) -// 0022 GAME( 2006, tcfboxo, tcfboxa, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Triforce Firmware Update For Compact Flash Box (GDT-0022)", MACHINE_IS_SKELETON ) -/* 0022A */ GAME( 2006, tcfboxa, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Triforce Firmware Update For Compact Flash Box (4.01) (GDT-0022A)", MACHINE_IS_SKELETON ) +/* 0015 */ GAME( 2004, vs4, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 (Export) (GDT-0015)", MACHINE_IS_SKELETON ) +// 0016 GAME( 2004, avalons20,triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (server) (GDT-0016)", MACHINE_IS_SKELETON ) +// 0017 GAME( 2004, avalon20o,avalon20, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (GDT-0017)", MACHINE_IS_SKELETON ) +// 0017A GAME( 2004, avalon20a,avalon20, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev A) (GDT-0017A)", MACHINE_IS_SKELETON ) +/* 0017B */ GAME( 2004, avalon20, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev B) (GDT-0017B)", MACHINE_IS_SKELETON ) +// 0018 GAME( 2005, avalns25o,avalns25, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (GDT-0018)", MACHINE_IS_SKELETON ) +// 0018A GAME( 2005, avalns25a,avalns25, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev A) (GDT-0018A)", MACHINE_IS_SKELETON ) +/* 0018B */ GAME( 2005, avalns25, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev B) (GDT-0018B)", MACHINE_IS_SKELETON ) +// 0019 GAME( 2005, avalnc25o,avalnc25, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (GDT-0019)", MACHINE_IS_SKELETON ) +// 0019A GAME( 2005, avalnc25a,avalnc25, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev A) (GDT-0019A)", MACHINE_IS_SKELETON ) +/* 0019B */ GAME( 2005, avalnc25, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev B) (GDT-0019B)", MACHINE_IS_SKELETON ) +// 0020 GAME( 2006, vs42006o, vs42006, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (GDT-0020)", MACHINE_IS_SKELETON ) +// 0020A GAME( 2006, vs42006a, vs42006, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev A) (GDT-0020A)", MACHINE_IS_SKELETON ) +// 0020B GAME( 2006, vs42006b, vs42006, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev B) (GDT-0020B)", MACHINE_IS_SKELETON ) +// 0020C GAME( 2006, vs42006c, vs42006, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev C) (GDT-0020C)", MACHINE_IS_SKELETON ) +/* 0020D */ GAME( 2006, vs42006, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev D) (GDT-0020D)", MACHINE_IS_SKELETON ) +/* 0021 */ GAME( 2006, vs42k6ex, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Export) (GDT-0021)", MACHINE_IS_SKELETON ) +// 0022 GAME( 2006, tcfboxo, tcfboxa, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Triforce Firmware Update For Compact Flash Box (GDT-0022)", MACHINE_IS_SKELETON ) +/* 0022A */ GAME( 2006, tcfboxa, triforce, triforcegd, triforce, triforce_state, 0, ROT0, "Sega", "Triforce Firmware Update For Compact Flash Box (4.01) (GDT-0022A)", MACHINE_IS_SKELETON ) // 837-xxxxx (Sega cart games) -/* 14343-4T1 */ GAME( 2005, mkartagp, triforce, triforce_base, triforce, driver_device, 0, ROT0, "Namco / Nintendo", "Mario Kart Arcade GP (Japan, MKA1 Ver.A1)", MACHINE_IS_SKELETON ) -/* 14343-R4S0 */ GAME( 2007, mkartag2, triforce, triforce_base, triforce, driver_device, 0, ROT0, "Namco / Nintendo", "Mario Kart Arcade GP 2 (Japan, MK21 Ver.A)", MACHINE_IS_SKELETON ) -/* 14343-R4S0 */ GAME( 2007, mkartag2a,mkartag2, triforce_base, triforce, driver_device, 0, ROT0, "Namco / Nintendo", "Mario Kart Arcade GP 2 (Japan, MK21 Ver.A, alt dump)", MACHINE_IS_SKELETON ) +/* 14343-4T1 */ GAME( 2005, mkartagp, triforce, triforce_base, triforce, triforce_state, 0, ROT0, "Namco / Nintendo", "Mario Kart Arcade GP (Japan, MKA1 Ver.A1)", MACHINE_IS_SKELETON ) +/* 14343-R4S0 */ GAME( 2007, mkartag2, triforce, triforce_base, triforce, triforce_state, 0, ROT0, "Namco / Nintendo", "Mario Kart Arcade GP 2 (Japan, MK21 Ver.A)", MACHINE_IS_SKELETON ) +/* 14343-R4S0 */ GAME( 2007, mkartag2a,mkartag2, triforce_base, triforce, triforce_state, 0, ROT0, "Namco / Nintendo", "Mario Kart Arcade GP 2 (Japan, MK21 Ver.A, alt dump)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/triplhnt.cpp b/src/mame/drivers/triplhnt.cpp index a165bc4183a..fe020337307 100644 --- a/src/mame/drivers/triplhnt.cpp +++ b/src/mame/drivers/triplhnt.cpp @@ -22,7 +22,7 @@ DRIVER_INIT_MEMBER(triplhnt_state,triplhnt) } -void triplhnt_state::triplhnt_set_collision(int code) +void triplhnt_state::set_collision(int code) { m_hit_code = code; @@ -30,7 +30,7 @@ void triplhnt_state::triplhnt_set_collision(int code) } -void triplhnt_state::triplhnt_update_misc(address_space &space, int offset) +void triplhnt_state::update_misc(address_space &space, int offset) { uint8_t is_witch_hunt; uint8_t bit = offset >> 1; @@ -85,13 +85,13 @@ void triplhnt_state::triplhnt_update_misc(address_space &space, int offset) } -WRITE8_MEMBER(triplhnt_state::triplhnt_misc_w) +WRITE8_MEMBER(triplhnt_state::misc_w) { - triplhnt_update_misc(space, offset); + update_misc(space, offset); } -READ8_MEMBER(triplhnt_state::triplhnt_cmos_r) +READ8_MEMBER(triplhnt_state::cmos_r) { m_cmos_latch = offset; @@ -99,21 +99,21 @@ READ8_MEMBER(triplhnt_state::triplhnt_cmos_r) } -READ8_MEMBER(triplhnt_state::triplhnt_input_port_4_r) +READ8_MEMBER(triplhnt_state::input_port_4_r) { m_watchdog->watchdog_reset(); return ioport("0C0B")->read(); } -READ8_MEMBER(triplhnt_state::triplhnt_misc_r) +READ8_MEMBER(triplhnt_state::misc_r) { - triplhnt_update_misc(space, offset); + update_misc(space, offset); return ioport("VBLANK")->read() | m_hit_code; } -READ8_MEMBER(triplhnt_state::triplhnt_da_latch_r) +READ8_MEMBER(triplhnt_state::da_latch_r) { int cross_x = ioport("STICKX")->read(); int cross_y = ioport("STICKY")->read(); @@ -138,10 +138,10 @@ static ADDRESS_MAP_START( triplhnt_map, AS_PROGRAM, 8, triplhnt_state ) AM_RANGE(0x0c08, 0x0c08) AM_READ_PORT("0C08") AM_RANGE(0x0c09, 0x0c09) AM_READ_PORT("0C09") AM_RANGE(0x0c0a, 0x0c0a) AM_READ_PORT("0C0A") - AM_RANGE(0x0c0b, 0x0c0b) AM_READ(triplhnt_input_port_4_r) - AM_RANGE(0x0c10, 0x0c1f) AM_READ(triplhnt_da_latch_r) - AM_RANGE(0x0c20, 0x0c2f) AM_READ(triplhnt_cmos_r) AM_SHARE("nvram") - AM_RANGE(0x0c30, 0x0c3f) AM_READWRITE(triplhnt_misc_r, triplhnt_misc_w) + AM_RANGE(0x0c0b, 0x0c0b) AM_READ(input_port_4_r) + AM_RANGE(0x0c10, 0x0c1f) AM_READ(da_latch_r) + AM_RANGE(0x0c20, 0x0c2f) AM_READ(cmos_r) AM_SHARE("nvram") + AM_RANGE(0x0c30, 0x0c3f) AM_READWRITE(misc_r, misc_w) AM_RANGE(0x0c40, 0x0c40) AM_READ_PORT("0C40") AM_RANGE(0x0c48, 0x0c48) AM_READ_PORT("0C48") AM_RANGE(0x7000, 0x7fff) AM_ROM /* program */ @@ -301,7 +301,7 @@ PALETTE_INIT_MEMBER(triplhnt_state, triplhnt) } -static MACHINE_CONFIG_START( triplhnt, triplhnt_state ) +static MACHINE_CONFIG_START( triplhnt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6800, 800000) @@ -317,7 +317,7 @@ static MACHINE_CONFIG_START( triplhnt, triplhnt_state ) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(256, 262) MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239) - MCFG_SCREEN_UPDATE_DRIVER(triplhnt_state, screen_update_triplhnt) + MCFG_SCREEN_UPDATE_DRIVER(triplhnt_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", triplhnt) @@ -359,4 +359,4 @@ ROM_START( triplhnt ) ROM_END -GAME( 1977, triplhnt, 0, triplhnt, triplhnt, triplhnt_state, triplhnt, 0, "Atari", "Triple Hunt", MACHINE_REQUIRES_ARTWORK ) +GAME( 1977, triplhnt, 0, triplhnt, triplhnt, triplhnt_state, triplhnt, 0, "Atari", "Triple Hunt", MACHINE_REQUIRES_ARTWORK | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/trs80.cpp b/src/mame/drivers/trs80.cpp index f3c3e3aa306..3e595bd4d78 100644 --- a/src/mame/drivers/trs80.cpp +++ b/src/mame/drivers/trs80.cpp @@ -166,10 +166,10 @@ static ADDRESS_MAP_START( model1_map, AS_PROGRAM, 8, trs80_state ) AM_RANGE(0x37e4, 0x37e7) AM_WRITE(trs80_cassunit_w) AM_RANGE(0x37e8, 0x37eb) AM_READWRITE(trs80_printer_r, trs80_printer_w) AM_RANGE(0x37ec, 0x37ec) AM_READ(trs80_wd179x_r) - AM_RANGE(0x37ec, 0x37ec) AM_DEVWRITE("fdc", fd1793_t, cmd_w) - AM_RANGE(0x37ed, 0x37ed) AM_DEVREADWRITE("fdc", fd1793_t, track_r, track_w) - AM_RANGE(0x37ee, 0x37ee) AM_DEVREADWRITE("fdc", fd1793_t, sector_r, sector_w) - AM_RANGE(0x37ef, 0x37ef) AM_DEVREADWRITE("fdc", fd1793_t, data_r, data_w) + AM_RANGE(0x37ec, 0x37ec) AM_DEVWRITE("fdc", fd1793_device, cmd_w) + AM_RANGE(0x37ed, 0x37ed) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) + AM_RANGE(0x37ee, 0x37ee) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) + AM_RANGE(0x37ef, 0x37ef) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) AM_RANGE(0x3800, 0x38ff) AM_MIRROR(0x300) AM_READ(trs80_keyboard_r) AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram") AM_RANGE(0x4000, 0xffff) AM_RAM @@ -220,10 +220,10 @@ static ADDRESS_MAP_START( model3_io, AS_IO, 8, trs80_state ) AM_RANGE(0xeb, 0xeb) AM_READWRITE(trs80m4_eb_r, trs80m4_eb_w) AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w) AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r) - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_t, cmd_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_t, track_r, track_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_t, sector_r, sector_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_t, data_r, data_w) + AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w) + AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) + AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) + AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w) AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w) AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w) @@ -243,10 +243,10 @@ static ADDRESS_MAP_START( model4_io, AS_IO, 8, trs80_state ) AM_RANGE(0xeb, 0xeb) AM_READWRITE(trs80m4_eb_r, trs80m4_eb_w) AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w) AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r) - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_t, cmd_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_t, track_r, track_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_t, sector_r, sector_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_t, data_r, data_w) + AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w) + AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) + AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) + AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w) AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w) AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w) @@ -267,10 +267,10 @@ static ADDRESS_MAP_START( model4p_io, AS_IO, 8, trs80_state ) AM_RANGE(0xeb, 0xeb) AM_READWRITE(trs80m4_eb_r, trs80m4_eb_w) AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w) AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r) - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_t, cmd_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_t, track_r, track_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_t, sector_r, sector_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_t, data_r, data_w) + AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w) + AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) + AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) + AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w) AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w) AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w) @@ -292,10 +292,10 @@ static ADDRESS_MAP_START( meritum_io, AS_IO, 8, trs80_state ) // eg. port F0 should be 5, port F2 should have bit 3 set. //AM_RANGE(0x03, 0x03) unknown AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r) - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_t, cmd_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_t, track_r, track_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_t, sector_r, sector_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_t, data_r, data_w) + AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w) + AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) + AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) + AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w) AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w) //AM_RANGE(0xfc, 0xfd) unknown @@ -570,7 +570,7 @@ static SLOT_INTERFACE_START( trs80_floppies ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( trs80, trs80_state ) // the original model I, level I, with no extras +static MACHINE_CONFIG_START( trs80 ) // the original model I, level I, with no extras /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 1796000) /* 1.796 MHz */ MCFG_CPU_PROGRAM_MAP(trs80_map) @@ -924,17 +924,17 @@ DRIVER_INIT_MEMBER(trs80_state,lnw80) m_p_videoram.set_target(memregion("maincpu")->base()+0x4000,m_p_videoram.bytes()); } -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1977, trs80, 0, 0, trs80, trs80, trs80_state, trs80, "Tandy Radio Shack", "TRS-80 Model I (Level I Basic)", 0 ) -COMP( 1978, trs80l2, trs80, 0, model1, trs80, trs80_state, trs80l2, "Tandy Radio Shack", "TRS-80 Model I (Level II Basic)", 0 ) -COMP( 1983, radionic, trs80, 0, radionic, trs80, trs80_state, trs80, "Komtek", "Radionic", 0 ) -COMP( 1980, sys80, trs80, 0, sys80, trs80, trs80_state, trs80l2, "EACA Computers Ltd", "System-80", 0 ) -COMP( 1981, lnw80, trs80, 0, lnw80, trs80m3, trs80_state, lnw80, "LNW Research", "LNW-80", 0 ) -COMP( 1980, trs80m3, trs80, 0, model3, trs80m3, trs80_state, trs80m4, "Tandy Radio Shack", "TRS-80 Model III", 0 ) -COMP( 1980, trs80m4, trs80, 0, model4, trs80m3, trs80_state, trs80m4, "Tandy Radio Shack", "TRS-80 Model 4", 0 ) -COMP( 1983, trs80m4p, trs80, 0, model4p, trs80m3, trs80_state, trs80m4p, "Tandy Radio Shack", "TRS-80 Model 4P", 0 ) -COMP( 1983, ht1080z, trs80, 0, ht1080z, trs80, trs80_state, trs80l2, "Hiradastechnika Szovetkezet", "HT-1080Z Series I", 0 ) -COMP( 1984, ht1080z2, trs80, 0, ht1080z, trs80, trs80_state, trs80l2, "Hiradastechnika Szovetkezet", "HT-1080Z Series II", 0 ) -COMP( 1985, ht108064, trs80, 0, ht1080z, trs80, trs80_state, trs80, "Hiradastechnika Szovetkezet", "HT-1080Z/64", 0 ) -COMP( 1985, meritum, trs80, 0, meritum, trs80, trs80_state, trs80l2, "Mera-Elzab", "Meritum I (Model 2)", 0 ) -COMP( 1985, meritum_net, trs80, 0, meritum, trs80, trs80_state, trs80l2, "Mera-Elzab", "Meritum I (Model 2) (network)", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1977, trs80, 0, 0, trs80, trs80, trs80_state, trs80, "Tandy Radio Shack", "TRS-80 Model I (Level I Basic)", 0 ) +COMP( 1978, trs80l2, trs80, 0, model1, trs80, trs80_state, trs80l2, "Tandy Radio Shack", "TRS-80 Model I (Level II Basic)", 0 ) +COMP( 1983, radionic, trs80, 0, radionic, trs80, trs80_state, trs80, "Komtek", "Radionic", 0 ) +COMP( 1980, sys80, trs80, 0, sys80, trs80, trs80_state, trs80l2, "EACA Computers Ltd", "System-80", 0 ) +COMP( 1981, lnw80, trs80, 0, lnw80, trs80m3, trs80_state, lnw80, "LNW Research", "LNW-80", 0 ) +COMP( 1980, trs80m3, trs80, 0, model3, trs80m3, trs80_state, trs80m4, "Tandy Radio Shack", "TRS-80 Model III", 0 ) +COMP( 1980, trs80m4, trs80, 0, model4, trs80m3, trs80_state, trs80m4, "Tandy Radio Shack", "TRS-80 Model 4", 0 ) +COMP( 1983, trs80m4p, trs80, 0, model4p, trs80m3, trs80_state, trs80m4p, "Tandy Radio Shack", "TRS-80 Model 4P", 0 ) +COMP( 1983, ht1080z, trs80, 0, ht1080z, trs80, trs80_state, trs80l2, "Hiradastechnika Szovetkezet", "HT-1080Z Series I", 0 ) +COMP( 1984, ht1080z2, trs80, 0, ht1080z, trs80, trs80_state, trs80l2, "Hiradastechnika Szovetkezet", "HT-1080Z Series II", 0 ) +COMP( 1985, ht108064, trs80, 0, ht1080z, trs80, trs80_state, trs80, "Hiradastechnika Szovetkezet", "HT-1080Z/64", 0 ) +COMP( 1985, meritum, trs80, 0, meritum, trs80, trs80_state, trs80l2, "Mera-Elzab", "Meritum I (Model 2)", 0 ) +COMP( 1985, meritum_net, trs80, 0, meritum, trs80, trs80_state, trs80l2, "Mera-Elzab", "Meritum I (Model 2) (network)", 0 ) diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp index 2231afb6e36..3ee4da460dd 100644 --- a/src/mame/drivers/trs80m2.cpp +++ b/src/mame/drivers/trs80m2.cpp @@ -490,7 +490,7 @@ WRITE_LINE_MEMBER( trs80m2_state::kb_clock_w ) m_kbclk = state; } -WRITE8_MEMBER( trs80m2_state::kbd_w ) +void trs80m2_state::kbd_w(u8 data) { // latch key data m_key_data = data; @@ -702,7 +702,7 @@ void trs80m2_state::machine_reset() // MACHINE_CONFIG( trs80m2 ) //------------------------------------------------- -static MACHINE_CONFIG_START( trs80m2, trs80m2_state ) +static MACHINE_CONFIG_START( trs80m2 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_8MHz/2) MCFG_Z80_DAISY_CHAIN(trs80m2_daisy_chain) @@ -771,7 +771,7 @@ static MACHINE_CONFIG_START( trs80m2, trs80m2_state ) MCFG_DEVICE_ADD(TRS80M2_KEYBOARD_TAG, TRS80M2_KEYBOARD, 0) MCFG_TRS80M2_KEYBOARD_CLOCK_CALLBACK(WRITELINE(trs80m2_state, kb_clock_w)) MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(trs80m2_state, kbd_w)) + MCFG_GENERIC_KEYBOARD_CB(PUT(trs80m2_state, kbd_w)) // internal RAM MCFG_RAM_ADD(RAM_TAG) @@ -787,7 +787,7 @@ MACHINE_CONFIG_END // MACHINE_CONFIG( trs80m16 ) //------------------------------------------------- -static MACHINE_CONFIG_START( trs80m16, trs80m16_state ) +static MACHINE_CONFIG_START( trs80m16 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_8MHz/2) MCFG_Z80_DAISY_CHAIN(trs80m2_daisy_chain) @@ -863,7 +863,7 @@ static MACHINE_CONFIG_START( trs80m16, trs80m16_state ) MCFG_DEVICE_ADD(TRS80M2_KEYBOARD_TAG, TRS80M2_KEYBOARD, 0) MCFG_TRS80M2_KEYBOARD_CLOCK_CALLBACK(WRITELINE(trs80m2_state, kb_clock_w)) MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(trs80m2_state, kbd_w)) + MCFG_GENERIC_KEYBOARD_CB(PUT(trs80m2_state, kbd_w)) // internal RAM MCFG_RAM_ADD(RAM_TAG) @@ -950,9 +950,9 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1979, trs80m2, 0, 0, trs80m2, trs80m2, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model II", MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) -COMP( 1982, trs80m16, trs80m2, 0, trs80m16, trs80m2, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model 16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) -//COMP( 1983, trs80m12, trs80m2, 0, trs80m16, trs80m2, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model 12", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) -//COMP( 1984, trs80m16b,trs80m2, 0, trs80m16, trs80m2, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model 16B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) -//COMP( 1985, tandy6k, trs80m2, 0, tandy6k, trs80m2, driver_device, 0, "Tandy Radio Shack", "Tandy 6000 HD", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1979, trs80m2, 0, 0, trs80m2, trs80m2, trs80m2_state, 0, "Tandy Radio Shack", "TRS-80 Model II", MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) +COMP( 1982, trs80m16, trs80m2, 0, trs80m16, trs80m2, trs80m16_state, 0, "Tandy Radio Shack", "TRS-80 Model 16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) +//COMP( 1983, trs80m12, trs80m2, 0, trs80m16, trs80m2, trs80m16_state, 0, "Tandy Radio Shack", "TRS-80 Model 12", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) +//COMP( 1984, trs80m16b,trs80m2, 0, trs80m16, trs80m2, trs80m16_state, 0, "Tandy Radio Shack", "TRS-80 Model 16B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) +//COMP( 1985, tandy6k, trs80m2, 0, tandy6k, trs80m2, tandy6k_state, 0, "Tandy Radio Shack", "Tandy 6000 HD", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_KEYBOARD ) diff --git a/src/mame/drivers/truco.cpp b/src/mame/drivers/truco.cpp index 24dee6ebd60..cf2bb59b5b6 100644 --- a/src/mame/drivers/truco.cpp +++ b/src/mame/drivers/truco.cpp @@ -416,7 +416,7 @@ INTERRUPT_GEN_MEMBER(truco_state::interrupt) * Machine Driver * *******************************************/ -static MACHINE_CONFIG_START( truco, truco_state ) +static MACHINE_CONFIG_START( truco ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, CPU_CLOCK) @@ -471,5 +471,5 @@ ROM_START( truco ) ROM_LOAD( "truco.u2", 0x0c000, 0x4000, CRC(ff355750) SHA1(1538f20b1919928ffca439e4046a104ddfbc756c) ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 198?, truco, 0, truco, truco, driver_device, 0, ROT0, "Playtronic SRL", "Truco-Tron", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 198?, truco, 0, truco, truco, truco_state, 0, ROT0, "Playtronic SRL", "Truco-Tron", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/trucocl.cpp b/src/mame/drivers/trucocl.cpp index 6f3d262d701..62eb1cd3377 100644 --- a/src/mame/drivers/trucocl.cpp +++ b/src/mame/drivers/trucocl.cpp @@ -89,7 +89,7 @@ WRITE8_MEMBER(trucocl_state::audio_dac_w) m_dac->write(rom[dac_address+m_cur_dac_address_index]); - timer_set( attotime::from_hz( 16000 ), TIMER_DAC_IRQ); + m_dac_irq_timer->adjust(attotime::from_hz( 16000 )); } static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, trucocl_state ) @@ -142,7 +142,7 @@ INTERRUPT_GEN_MEMBER(trucocl_state::trucocl_interrupt) } -static MACHINE_CONFIG_START( trucocl, trucocl_state ) +static MACHINE_CONFIG_START( trucocl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) MCFG_CPU_PROGRAM_MAP(main_map) @@ -200,11 +200,12 @@ DRIVER_INIT_MEMBER(trucocl_state,trucocl) { m_cur_dac_address = -1; m_cur_dac_address_index = 0; + + m_dac_irq_timer = timer_alloc(TIMER_DAC_IRQ); } /******************************************************************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR */ - +// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR GAME( 1991, trucocl, 0, trucocl, trucocl, trucocl_state, trucocl, ROT0, "Miky SRL", "Truco Clemente", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/trvmadns.cpp b/src/mame/drivers/trvmadns.cpp index ea31e27cf16..46461a1de1e 100644 --- a/src/mame/drivers/trvmadns.cpp +++ b/src/mame/drivers/trvmadns.cpp @@ -379,7 +379,7 @@ void trvmadns_state::machine_reset() m_old_data = -1; } -static MACHINE_CONFIG_START( trvmadns, trvmadns_state ) +static MACHINE_CONFIG_START( trvmadns ) MCFG_CPU_ADD("maincpu", Z80, XTAL_10MHz/4) // Most likely 2.5MHz (less likely 5MHz (10MHz/2)) MCFG_CPU_PROGRAM_MAP(cpu_map) MCFG_CPU_IO_MAP(io_map) @@ -463,5 +463,5 @@ ROM_START( trvmadnsa ) // empty space, for 3 roms (each one max 0x8000 bytes long) ROM_END -GAME( 1985, trvmadns, 0, trvmadns, trvmadns, driver_device, 0, ROT0, "Thunderhead Inc.", "Trivia Madness - Series A Question set", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING ) -GAME( 1985, trvmadnsa, trvmadns, trvmadns, trvmadns, driver_device, 0, ROT0, "Thunderhead Inc.", "Trivia Madness - Series B Question set", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING ) +GAME( 1985, trvmadns, 0, trvmadns, trvmadns, trvmadns_state, 0, ROT0, "Thunderhead Inc.", "Trivia Madness - Series A Question set", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING ) +GAME( 1985, trvmadnsa, trvmadns, trvmadns, trvmadns, trvmadns_state, 0, ROT0, "Thunderhead Inc.", "Trivia Madness - Series B Question set", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/trvquest.cpp b/src/mame/drivers/trvquest.cpp index 0c5eb0f4544..49c05ddde00 100644 --- a/src/mame/drivers/trvquest.cpp +++ b/src/mame/drivers/trvquest.cpp @@ -177,7 +177,7 @@ INTERRUPT_GEN_MEMBER(gameplan_state::trvquest_interrupt) m_via_2->write_ca1(0); } -static MACHINE_CONFIG_START( trvquest, gameplan_state ) +static MACHINE_CONFIG_START( trvquest ) MCFG_CPU_ADD("maincpu", M6809,XTAL_6MHz/4) MCFG_CPU_PROGRAM_MAP(cpu_map) @@ -238,4 +238,4 @@ ROM_START( trvquest ) ROM_LOAD( "roma", 0x16000, 0x2000, CRC(b4bcaf33) SHA1(c6b08fb8d55b2834d0c6c5baff9f544c795e4c15) ) ROM_END -GAME( 1984, trvquest, 0, trvquest, trvquest, driver_device, 0, ROT90, "Sunn / Techstar", "Trivia Quest", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, trvquest, 0, trvquest, trvquest, gameplan_state, 0, ROT90, "Sunn / Techstar", "Trivia Quest", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tryout.cpp b/src/mame/drivers/tryout.cpp index 24887efe4cb..5a0941ad553 100644 --- a/src/mame/drivers/tryout.cpp +++ b/src/mame/drivers/tryout.cpp @@ -189,7 +189,7 @@ static GFXDECODE_START( tryout ) GFXDECODE_ENTRY( nullptr, 0, vramlayout, 0, 4 ) GFXDECODE_END -static MACHINE_CONFIG_START( tryout, tryout_state ) +static MACHINE_CONFIG_START( tryout ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 2000000) /* ? */ MCFG_CPU_PROGRAM_MAP(main_cpu) @@ -247,4 +247,4 @@ ROM_START( tryout ) ROM_LOAD( "ch14.bpr", 0x00000, 0x0020, CRC(8ce19925) SHA1(12f8f6022f1148b6ba1d019a34247452637063a7) ) ROM_END -GAME( 1985, tryout, 0, tryout, tryout, driver_device, 0, ROT90, "Data East Corporation", "Pro Baseball Skill Tryout (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tryout, 0, tryout, tryout, tryout_state, 0, ROT90, "Data East Corporation", "Pro Baseball Skill Tryout (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ts802.cpp b/src/mame/drivers/ts802.cpp index dd8efa0aec2..bb7ea828b83 100644 --- a/src/mame/drivers/ts802.cpp +++ b/src/mame/drivers/ts802.cpp @@ -56,7 +56,7 @@ public: DECLARE_WRITE8_MEMBER(memory_write_byte); DECLARE_READ8_MEMBER(io_read_byte); DECLARE_WRITE8_MEMBER(io_write_byte); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); private: uint8_t m_term_data; address_space *m_mem; @@ -88,7 +88,7 @@ static ADDRESS_MAP_START(ts802_io, AS_IO, 8, ts802_state) // 10: Z80 DMA AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("z80dma", z80dma_device, read, write) // 14-17: WD 1793 - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("fdc", fd1793_t, read, write) + AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("fdc", fd1793_device, read, write) // 18: floppy misc. AM_RANGE(0x18, 0x1c) AM_WRITE(port18_w) // 20-23: Z80 SIO #2 @@ -153,7 +153,7 @@ READ8_MEMBER( ts802_state::port0d_r ) return ret; } -WRITE8_MEMBER( ts802_state::kbd_put ) +void ts802_state::kbd_put(u8 data) { m_term_data = data; } @@ -182,7 +182,7 @@ DRIVER_INIT_MEMBER( ts802_state, ts802 ) membank("bankw0")->configure_entry(0, &main[0x0000]); } -static MACHINE_CONFIG_START( ts802, ts802_state ) +static MACHINE_CONFIG_START( ts802 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(ts802_mem) @@ -192,7 +192,7 @@ static MACHINE_CONFIG_START( ts802, ts802_state ) /* Devices */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ts802_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ts802_state, kbd_put)) MCFG_DEVICE_ADD("z80dma", Z80DMA, XTAL_16MHz / 4) MCFG_Z80DMA_OUT_BUSREQ_CB(INPUTLINE("maincpu", INPUT_LINE_HALT)) @@ -237,6 +237,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS COMP( 1982, ts802, 0, 0, ts802, ts802, ts802_state, ts802, "Televideo", "TS802", MACHINE_IS_SKELETON ) COMP( 1982, ts802h, ts802, 0, ts802, ts802, ts802_state, ts802, "Televideo", "TS802H", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/ts803.cpp b/src/mame/drivers/ts803.cpp index db2260f484e..263fb10adb9 100644 --- a/src/mame/drivers/ts803.cpp +++ b/src/mame/drivers/ts803.cpp @@ -107,7 +107,7 @@ private: required_device m_palette; required_device m_maincpu; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; //required_device m_sti; @@ -151,7 +151,7 @@ static ADDRESS_MAP_START(ts803_io, AS_IO, 8, ts803_state) //AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("sti", z80sti_device, read, write) AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("dart", z80dart_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("fdc", fd1793_t, read, write) + AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("fdc", fd1793_device, read, write) AM_RANGE(0x90, 0x90) AM_READWRITE(disk_0_control_r,disk_0_control_w) //AM_RANGE(0x91, 0xff) AM_READWRITE(ts803_porthi_r, ts803_porthi_w) @@ -215,10 +215,11 @@ d7 Drive select 3 (active low) m_fdc->set_floppy(floppy); - floppy->mon_w(BIT(data, 1)); - - floppy->ss_w(BIT(data, 2) ? 0: 1); - + if (floppy) + { + floppy->mon_w(BIT(data, 1)); + floppy->ss_w(BIT(data, 2) ? 0: 1); + } m_fdc->dden_w(BIT(data, 3)); } @@ -490,7 +491,7 @@ static const z80_daisy_config daisy_chain[] = { nullptr } }; -static MACHINE_CONFIG_START( ts803, ts803_state ) +static MACHINE_CONFIG_START( ts803 ) MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/4) MCFG_CPU_PROGRAM_MAP(ts803_mem) MCFG_CPU_IO_MAP(ts803_io) @@ -552,5 +553,5 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP(1983, ts803h, 0, 0, ts803, ts803, ts803_state, ts803, "Televideo", "TS803H", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/ts816.cpp b/src/mame/drivers/ts816.cpp index 59ccce42735..12e7aa78b38 100644 --- a/src/mame/drivers/ts816.cpp +++ b/src/mame/drivers/ts816.cpp @@ -26,7 +26,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(keyin_r); DECLARE_READ8_MEMBER(status_r); @@ -74,7 +74,7 @@ READ8_MEMBER( ts816_state::status_r ) return 4; } -WRITE8_MEMBER( ts816_state::kbd_put ) +void ts816_state::kbd_put(u8 data) { m_term_data = data; m_status = 3; @@ -86,7 +86,7 @@ void ts816_state::machine_reset() m_status = 1; } -static MACHINE_CONFIG_START( ts816, ts816_state ) +static MACHINE_CONFIG_START( ts816 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(ts816_mem) @@ -94,7 +94,7 @@ static MACHINE_CONFIG_START( ts816, ts816_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ts816_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ts816_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -105,5 +105,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, ts816, 0, 0, ts816, ts816, driver_device, 0, "Televideo", "TS816", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, ts816, 0, 0, ts816, ts816, ts816_state, 0, "Televideo", "TS816", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp index 391f10a70c6..757ef186d49 100644 --- a/src/mame/drivers/tsamurai.cpp +++ b/src/mame/drivers/tsamurai.cpp @@ -706,7 +706,7 @@ GFXDECODE_END /*******************************************************************************/ -static MACHINE_CONFIG_START( tsamurai, tsamurai_state ) +static MACHINE_CONFIG_START( tsamurai ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/8) @@ -749,7 +749,7 @@ static MACHINE_CONFIG_START( tsamurai, tsamurai_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vsgongf, tsamurai_state ) +static MACHINE_CONFIG_START( vsgongf ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/8) @@ -790,7 +790,7 @@ static MACHINE_CONFIG_START( vsgongf, tsamurai_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( m660, tsamurai_state ) +static MACHINE_CONFIG_START( m660 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/8) @@ -1273,20 +1273,20 @@ ROM_START( ringfgt2 ) ROM_LOAD( "clr.6p", 0x200, 0x0100, CRC(0e4fd17a) SHA1(d4e32bd9dd903177af61f77976a25c5db1467bba) ) ROM_END -GAME( 1984, vsgongf, 0, vsgongf, vsgongf, driver_device, 0, ROT90, "Kaneko", "VS Gong Fight", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1984, ringfgt, vsgongf, vsgongf, vsgongf, driver_device, 0, ROT90, "Kaneko (Taito license)", "Ring Fighter (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, ringfgt2, vsgongf, vsgongf, vsgongf, driver_device, 0, ROT90, "Kaneko (Taito license)", "Ring Fighter (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, vsgongf, 0, vsgongf, vsgongf, tsamurai_state, 0, ROT90, "Kaneko", "VS Gong Fight", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1984, ringfgt, vsgongf, vsgongf, vsgongf, tsamurai_state, 0, ROT90, "Kaneko (Taito license)", "Ring Fighter (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, ringfgt2, vsgongf, vsgongf, vsgongf, tsamurai_state, 0, ROT90, "Kaneko (Taito license)", "Ring Fighter (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tsamurai, 0, tsamurai, tsamurai, driver_device, 0, ROT90, "Kaneko / Taito", "Samurai Nihon-Ichi (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tsamurai2,tsamurai, tsamurai, tsamurai, driver_device, 0, ROT90, "Kaneko / Taito", "Samurai Nihon-Ichi (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tsamuraih,tsamurai, tsamurai, tsamurai, driver_device, 0, ROT90, "bootleg", "Samurai Nihon-Ichi (bootleg, harder)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tsamurai, 0, tsamurai, tsamurai, tsamurai_state, 0, ROT90, "Kaneko / Taito", "Samurai Nihon-Ichi (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tsamurai2, tsamurai, tsamurai, tsamurai, tsamurai_state, 0, ROT90, "Kaneko / Taito", "Samurai Nihon-Ichi (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tsamuraih, tsamurai, tsamurai, tsamurai, tsamurai_state, 0, ROT90, "bootleg", "Samurai Nihon-Ichi (bootleg, harder)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, ladymstr, 0, tsamurai, ladymstr, driver_device, 0, ROT90, "Kaneko / Taito", "Lady Master of Kung Fu", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, nunchaku, ladymstr, tsamurai, nunchaku, driver_device, 0, ROT90, "Kaneko / Taito", "Nunchackun", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, ladymstr, 0, tsamurai, ladymstr, tsamurai_state, 0, ROT90, "Kaneko / Taito", "Lady Master of Kung Fu", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, nunchaku, ladymstr, tsamurai, nunchaku, tsamurai_state, 0, ROT90, "Kaneko / Taito", "Nunchackun", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, yamagchi, 0, tsamurai, yamagchi, driver_device, 0, ROT90, "Kaneko / Taito", "Go Go Mr. Yamaguchi / Yuke Yuke Yamaguchi-kun", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, yamagchi, 0, tsamurai, yamagchi, tsamurai_state, 0, ROT90, "Kaneko / Taito", "Go Go Mr. Yamaguchi / Yuke Yuke Yamaguchi-kun", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1986, m660, 0, m660, m660, driver_device, 0, ROT90, "Wood Place Inc. (Taito America Corporation license)", "Mission 660 (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, m660j, m660, m660, m660, driver_device, 0, ROT90, "Wood Place Inc. (Taito Corporation license)", "Mission 660 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, m660b, m660, m660, m660, driver_device, 0, ROT90, "bootleg", "Mission 660 (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, alphaxz, m660, m660, m660, driver_device, 0, ROT90, "Ed Co. Ltd. (Wood Place Inc. license)", "The Alphax Z (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, m660, 0, m660, m660, tsamurai_state, 0, ROT90, "Wood Place Inc. (Taito America Corporation license)", "Mission 660 (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, m660j, m660, m660, m660, tsamurai_state, 0, ROT90, "Wood Place Inc. (Taito Corporation license)", "Mission 660 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, m660b, m660, m660, m660, tsamurai_state, 0, ROT90, "bootleg", "Mission 660 (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, alphaxz, m660, m660, m660, tsamurai_state, 0, ROT90, "Ed Co. Ltd. (Wood Place Inc. license)", "The Alphax Z (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tsispch.cpp b/src/mame/drivers/tsispch.cpp index 5478f1f124b..850f6f35297 100644 --- a/src/mame/drivers/tsispch.cpp +++ b/src/mame/drivers/tsispch.cpp @@ -116,8 +116,6 @@ #include "cpu/i86/i86.h" #include "cpu/upd7725/upd7725.h" #include "machine/i8251.h" -#include "machine/pic8259.h" -#include "machine/terminal.h" #include "sound/dac.h" #include "sound/volt_reg.h" #include "speaker.h" @@ -150,11 +148,6 @@ WRITE_LINE_MEMBER(tsispch_state::i8251_txrdy_int) m_pic->ir3_w(state); } -WRITE8_MEMBER( tsispch_state::i8251_rxd ) -{ - m_uart->receive_character(data); -} - /***************************************************************************** LED/dipswitch stuff *****************************************************************************/ @@ -379,7 +372,7 @@ INPUT_PORTS_END /****************************************************************************** Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( prose2k, tsispch_state ) +static MACHINE_CONFIG_START( prose2k ) /* basic machine hardware */ /* There are two crystals on the board: a 24MHz xtal at Y2 and a 16MHz xtal at Y1 */ MCFG_CPU_ADD("maincpu", I8086, 8000000) /* VERIFIED clock, unknown divider */ @@ -413,7 +406,7 @@ static MACHINE_CONFIG_START( prose2k, tsispch_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(tsispch_state, i8251_rxd)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(DEVPUT("i8251a_u15", i8251_device, receive_character)) MACHINE_CONFIG_END /****************************************************************************** @@ -548,6 +541,6 @@ ROM_START( prose2ko ) Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, prose2k, 0, 0, prose2k, prose2k, tsispch_state, prose2k, "Telesensory Systems Inc/Speech Plus", "Prose 2000/2020 v3.4.1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1982, prose2ko, prose2k, 0, prose2k, prose2k, tsispch_state, prose2k, "Telesensory Systems Inc/Speech Plus", "Prose 2000/2020 v1.1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1987, prose2k, 0, 0, prose2k, prose2k, tsispch_state, prose2k, "Telesensory Systems Inc/Speech Plus", "Prose 2000/2020 v3.4.1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1982, prose2ko, prose2k, 0, prose2k, prose2k, tsispch_state, prose2k, "Telesensory Systems Inc/Speech Plus", "Prose 2000/2020 v1.1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/ttchamp.cpp b/src/mame/drivers/ttchamp.cpp index 0581ac6ddb9..00bab4887ea 100644 --- a/src/mame/drivers/ttchamp.cpp +++ b/src/mame/drivers/ttchamp.cpp @@ -638,7 +638,7 @@ INTERRUPT_GEN_MEMBER(ttchamp_state::irq)/* right? */ device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( ttchamp, ttchamp_state ) +static MACHINE_CONFIG_START( ttchamp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, 8000000) MCFG_CPU_PROGRAM_MAP(ttchamp_map) @@ -660,7 +660,7 @@ static MACHINE_CONFIG_START( ttchamp, ttchamp_state ) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 8000000/8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 8000000/8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -695,5 +695,5 @@ ROM_END // only the graphics differ between the two sets, code section is the same -GAME( 1995, ttchamp, 0, ttchamp, ttchamp, driver_device, 0, ROT0, "Gamart", "Table Tennis Champions", MACHINE_SUPPORTS_SAVE ) // this has various advertising boards, including 'Electronic Devices' and 'Deniam' -GAME( 1995, ttchampa,ttchamp, ttchamp, ttchamp, driver_device, 0, ROT0, "Gamart (Palencia Elektronik license)", "Table Tennis Champions (Palencia Elektronik license)", MACHINE_SUPPORTS_SAVE ) // this only has Palencia Elektronik advertising boards +GAME( 1995, ttchamp, 0, ttchamp, ttchamp, ttchamp_state, 0, ROT0, "Gamart", "Table Tennis Champions", MACHINE_SUPPORTS_SAVE ) // this has various advertising boards, including 'Electronic Devices' and 'Deniam' +GAME( 1995, ttchampa,ttchamp, ttchamp, ttchamp, ttchamp_state, 0, ROT0, "Gamart (Palencia Elektronik license)", "Table Tennis Champions (Palencia Elektronik license)", MACHINE_SUPPORTS_SAVE ) // this only has Palencia Elektronik advertising boards diff --git a/src/mame/drivers/tubep.cpp b/src/mame/drivers/tubep.cpp index 12284ffd479..fd3dec57bef 100644 --- a/src/mame/drivers/tubep.cpp +++ b/src/mame/drivers/tubep.cpp @@ -562,11 +562,9 @@ WRITE8_MEMBER(tubep_state::rjammer_voice_frequency_select_w) /* bit 0 of data selects voice frequency on MSM5205 */ // 0 -4 KHz; 1- 8KHz if (data & 1) - m_msm->playmode_w(MSM5205_S48_4B); /* 8 KHz */ + m_msm->playmode_w(msm5205_device::S48_4B); /* 8 KHz */ else - m_msm->playmode_w(MSM5205_S96_4B); /* 4 KHz */ - - return; + m_msm->playmode_w(msm5205_device::S96_4B); /* 4 KHz */ } @@ -857,7 +855,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( tubep, tubep_state ) +static MACHINE_CONFIG_START( tubep ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */ @@ -891,8 +889,6 @@ static MACHINE_CONFIG_START( tubep, tubep_state ) MCFG_PALETTE_ADD("palette", 32 + 256*64) MCFG_PALETTE_INIT_OWNER(tubep_state,tubep) - MCFG_VIDEO_START_OVERRIDE(tubep_state,tubep) - MCFG_VIDEO_RESET_OVERRIDE(tubep_state,tubep) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -922,7 +918,7 @@ static MACHINE_CONFIG_DERIVED( tubepb, tubep ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( rjammer, tubep_state ) +static MACHINE_CONFIG_START( rjammer ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,16000000 / 4) /* 4 MHz */ @@ -955,8 +951,6 @@ static MACHINE_CONFIG_START( rjammer, tubep_state ) MCFG_PALETTE_ADD("palette", 64) MCFG_PALETTE_INIT_OWNER(tubep_state,rjammer) - MCFG_VIDEO_START_OVERRIDE(tubep_state,tubep) - MCFG_VIDEO_RESET_OVERRIDE(tubep_state,tubep) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -978,7 +972,7 @@ static MACHINE_CONFIG_START( rjammer, tubep_state ) MCFG_SOUND_ADD("msm", MSM5205, 384000) MCFG_MSM5205_VCLK_CB(WRITELINE(tubep_state, rjammer_adpcm_vck)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz (changes at run time) */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz (changes at run time) */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1178,7 +1172,7 @@ ROM_END * *************************************/ -/* year rom parent machine inp init */ -GAME( 1984, tubep, 0, tubep, tubep, driver_device, 0, ROT0, "Nichibutsu / Fujitek", "Tube Panic", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, tubepb, tubep, tubepb, tubepb, driver_device, 0, ROT0, "bootleg", "Tube Panic (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, rjammer, 0, rjammer, rjammer, driver_device, 0, ROT0, "Nichibutsu / Alice", "Roller Jammer", MACHINE_SUPPORTS_SAVE ) +// year rom parent machine inp state init +GAME( 1984, tubep, 0, tubep, tubep, tubep_state, 0, ROT0, "Nichibutsu / Fujitek", "Tube Panic", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, tubepb, tubep, tubepb, tubepb, tubep_state, 0, ROT0, "bootleg", "Tube Panic (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, rjammer, 0, rjammer, rjammer, tubep_state, 0, ROT0, "Nichibutsu / Alice", "Roller Jammer", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tugboat.cpp b/src/mame/drivers/tugboat.cpp index b8d88f8cc84..4ef5c6de3bd 100644 --- a/src/mame/drivers/tugboat.cpp +++ b/src/mame/drivers/tugboat.cpp @@ -358,7 +358,7 @@ static GFXDECODE_START( tugboat ) GFXDECODE_END -static MACHINE_CONFIG_START( tugboat, tugboat_state ) +static MACHINE_CONFIG_START( tugboat ) MCFG_CPU_ADD("maincpu", M6502, 2000000) /* 2 MHz ???? */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", tugboat_state, nmi_line_pulse) @@ -472,6 +472,6 @@ ROM_START( berenstn ) ROM_END -GAME( 1982, tugboat, 0, tugboat, tugboat, driver_device, 0, ROT90, "Enter-Tech, Ltd.", "Tugboat", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, noahsark, 0, tugboat, noahsark, driver_device, 0, ROT90, "Enter-Tech, Ltd.", "Noah's Ark", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, berenstn, 0, tugboat, noahsark, driver_device, 0, ROT90, "Enter-Tech, Ltd.", "The Berenstain Bears in Big Paw's Cave", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, tugboat, 0, tugboat, tugboat, tugboat_state, 0, ROT90, "Enter-Tech, Ltd.", "Tugboat", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, noahsark, 0, tugboat, noahsark, tugboat_state, 0, ROT90, "Enter-Tech, Ltd.", "Noah's Ark", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, berenstn, 0, tugboat, noahsark, tugboat_state, 0, ROT90, "Enter-Tech, Ltd.", "The Berenstain Bears in Big Paw's Cave", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tumbleb.cpp b/src/mame/drivers/tumbleb.cpp index c800a3e1f25..a0357b522f6 100644 --- a/src/mame/drivers/tumbleb.cpp +++ b/src/mame/drivers/tumbleb.cpp @@ -2041,7 +2041,7 @@ MACHINE_RESET_MEMBER(tumbleb_state,tumbleb) memset(m_control_0, 0, sizeof(m_control_0)); } -static MACHINE_CONFIG_START( tumblepb, tumbleb_state ) +static MACHINE_CONFIG_START( tumblepb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -2074,12 +2074,12 @@ static MACHINE_CONFIG_START( tumblepb, tumbleb_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 8000000/10, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 8000000/10, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tumbleb2, tumbleb_state ) +static MACHINE_CONFIG_START( tumbleb2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -2112,11 +2112,11 @@ static MACHINE_CONFIG_START( tumbleb2, tumbleb_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 8000000/10, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 8000000/10, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jumpkids, tumbleb_state ) +static MACHINE_CONFIG_START( jumpkids ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -2155,11 +2155,11 @@ static MACHINE_CONFIG_START( jumpkids, tumbleb_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 8000000/8, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 8000000/8, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fncywld, tumbleb_state ) +static MACHINE_CONFIG_START( fncywld ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) @@ -2196,7 +2196,7 @@ static MACHINE_CONFIG_START( fncywld, tumbleb_state ) MCFG_YM2151_ADD("ymsnd", 32220000/9) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) - MCFG_OKIM6295_ADD("oki", 1023924, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1023924, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2217,7 +2217,7 @@ MACHINE_RESET_MEMBER(tumbleb_state,htchctch) MACHINE_RESET_CALL_MEMBER(tumbleb); } -static MACHINE_CONFIG_START( htchctch, tumbleb_state ) +static MACHINE_CONFIG_START( htchctch ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 15000000) /* verified */ @@ -2261,7 +2261,7 @@ static MACHINE_CONFIG_START( htchctch, tumbleb_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) /* correct for cookie & bibi and hatch catch, (4096000/4) */ - MCFG_OKIM6295_ADD("oki", 1024000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1024000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2276,7 +2276,7 @@ static MACHINE_CONFIG_DERIVED( chokchok, htchctch ) // some PCBs have left factory with a 3.57mhz while some have a 4.096 which matches other games, assuming the former are factory errors // TODO: MAME sound cores doesn't handle on-the-fly sound frequency changes, I guess best action here is to make the sound chip a slot option, // assuming it's worth emulating a factory error in the first place. - MCFG_OKIM6295_REPLACE("oki", 4096000/4, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_REPLACE("oki", 4096000/4, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -2325,7 +2325,7 @@ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( suprtrio, tumbleb_state ) +static MACHINE_CONFIG_START( suprtrio ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) /* 14mhz should be correct, but lots of sprite flicker later in game */ @@ -2363,11 +2363,11 @@ static MACHINE_CONFIG_START( suprtrio, tumbleb_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 875000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 875000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( pangpang, tumbleb_state ) +static MACHINE_CONFIG_START( pangpang ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -2400,7 +2400,7 @@ static MACHINE_CONFIG_START( pangpang, tumbleb_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", 8000000/10, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 8000000/10, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END diff --git a/src/mame/drivers/tumblep.cpp b/src/mame/drivers/tumblep.cpp index f0d237ede43..918d5522ebb 100644 --- a/src/mame/drivers/tumblep.cpp +++ b/src/mame/drivers/tumblep.cpp @@ -280,7 +280,7 @@ void tumblep_state::machine_start() { } -static MACHINE_CONFIG_START( tumblep, tumblep_state ) +static MACHINE_CONFIG_START( tumblep ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14000000) @@ -331,7 +331,7 @@ static MACHINE_CONFIG_START( tumblep, tumblep_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki", 1023924, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1023924, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END diff --git a/src/mame/drivers/tunhunt.cpp b/src/mame/drivers/tunhunt.cpp index 38430300be4..329b9661578 100644 --- a/src/mame/drivers/tunhunt.cpp +++ b/src/mame/drivers/tunhunt.cpp @@ -268,7 +268,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( tunhunt, tunhunt_state ) +static MACHINE_CONFIG_START( tunhunt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL_12_096MHz/6) /* ??? */ @@ -393,6 +393,6 @@ ROM_END * *************************************/ -/* rom parent machine inp init */ -GAME( 1979,tunhunt, 0, tunhunt, tunhunt, driver_device, 0, ORIENTATION_SWAP_XY, "Atari", "Tunnel Hunt", MACHINE_SUPPORTS_SAVE ) -GAME( 1981,tunhuntc, tunhunt, tunhunt, tunhunt, driver_device, 0, ORIENTATION_SWAP_XY, "Atari (Centuri license)", "Tunnel Hunt (Centuri)", MACHINE_SUPPORTS_SAVE ) +/* rom parent machine inp state init */ +GAME( 1979,tunhunt, 0, tunhunt, tunhunt, tunhunt_state, 0, ORIENTATION_SWAP_XY, "Atari", "Tunnel Hunt", MACHINE_SUPPORTS_SAVE ) +GAME( 1981,tunhuntc, tunhunt, tunhunt, tunhunt, tunhunt_state, 0, ORIENTATION_SWAP_XY, "Atari (Centuri license)", "Tunnel Hunt (Centuri)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp index 567af1825b6..ff9236da7c5 100644 --- a/src/mame/drivers/turbo.cpp +++ b/src/mame/drivers/turbo.cpp @@ -835,7 +835,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( turbo, turbo_state ) +static MACHINE_CONFIG_START( turbo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4) @@ -885,7 +885,7 @@ static MACHINE_CONFIG_START( turbo, turbo_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( subroc3d, turbo_state ) +static MACHINE_CONFIG_START( subroc3d ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4) @@ -925,7 +925,7 @@ static MACHINE_CONFIG_START( subroc3d, turbo_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( buckrog, turbo_state ) +static MACHINE_CONFIG_START( buckrog ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4) @@ -1785,16 +1785,16 @@ DRIVER_INIT_MEMBER(turbo_state,turbo_noenc) * *************************************/ -GAMEL( 1981, turbo, 0, turbo, turbo, turbo_state, turbo_noenc, ROT270, "Sega", "Turbo (program 1513-1515)", MACHINE_IMPERFECT_SOUND , layout_turbo ) -GAMEL( 1981, turboa, turbo, turbo, turbo, turbo_state, turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1262-1264)", MACHINE_IMPERFECT_SOUND , layout_turbo ) -GAMEL( 1981, turbob, turbo, turbo, turbo, turbo_state, turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev B)", MACHINE_IMPERFECT_SOUND , layout_turbo ) -GAMEL( 1981, turboc, turbo, turbo, turbo, turbo_state, turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev A)", MACHINE_IMPERFECT_SOUND , layout_turbo ) -GAMEL( 1981, turbod, turbo, turbo, turbo, turbo_state, turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365)", MACHINE_IMPERFECT_SOUND , layout_turbo ) // but still reports 1262-1264 in the test mode? -GAMEL( 1981, turbobl, turbo, turbo, turbo, turbo_state, turbo_noenc, ROT270, "bootleg", "Indianapolis (bootleg of Turbo)", MACHINE_IMPERFECT_SOUND , layout_turbo ) // decrypted bootleg of a 1262-1264 set +GAMEL( 1981, turbo, 0, turbo, turbo, turbo_state, turbo_noenc, ROT270, "Sega", "Turbo (program 1513-1515)", MACHINE_IMPERFECT_SOUND , layout_turbo ) +GAMEL( 1981, turboa, turbo, turbo, turbo, turbo_state, turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1262-1264)", MACHINE_IMPERFECT_SOUND , layout_turbo ) +GAMEL( 1981, turbob, turbo, turbo, turbo, turbo_state, turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev B)", MACHINE_IMPERFECT_SOUND , layout_turbo ) +GAMEL( 1981, turboc, turbo, turbo, turbo, turbo_state, turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev A)", MACHINE_IMPERFECT_SOUND , layout_turbo ) +GAMEL( 1981, turbod, turbo, turbo, turbo, turbo_state, turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365)", MACHINE_IMPERFECT_SOUND , layout_turbo ) // but still reports 1262-1264 in the test mode? +GAMEL( 1981, turbobl, turbo, turbo, turbo, turbo_state, turbo_noenc, ROT270, "bootleg", "Indianapolis (bootleg of Turbo)", MACHINE_IMPERFECT_SOUND , layout_turbo ) // decrypted bootleg of a 1262-1264 set -GAMEL( 1982, subroc3d, 0, subroc3d, subroc3d, driver_device, 0, ORIENTATION_FLIP_X, "Sega", "Subroc-3D", MACHINE_IMPERFECT_SOUND , layout_subroc3d ) +GAMEL( 1982, subroc3d, 0, subroc3d, subroc3d, turbo_state, 0, ORIENTATION_FLIP_X, "Sega", "Subroc-3D", MACHINE_IMPERFECT_SOUND , layout_subroc3d ) -GAMEL( 1982, buckrog, 0, buckroge, buckrog, driver_device, 0, ROT0, "Sega", "Buck Rogers: Planet of Zoom", MACHINE_IMPERFECT_SOUND , layout_buckrog ) -GAMEL( 1982, buckrogn, buckrog, buckrogu, buckrog, driver_device, 0, ROT0, "Sega", "Buck Rogers: Planet of Zoom (not encrypted, set 1)", MACHINE_IMPERFECT_SOUND , layout_buckrog ) -GAMEL( 1982, buckrogn2,buckrog, buckrogu, buckrog, driver_device, 0, ROT0, "Sega", "Buck Rogers: Planet of Zoom (not encrypted, set 2)", MACHINE_IMPERFECT_SOUND , layout_buckrog ) -GAMEL( 1982, zoom909, buckrog, buckroge, buckrog, driver_device, 0, ROT0, "Sega", "Zoom 909", MACHINE_IMPERFECT_SOUND, layout_buckrog ) +GAMEL( 1982, buckrog, 0, buckroge, buckrog, turbo_state, 0, ROT0, "Sega", "Buck Rogers: Planet of Zoom", MACHINE_IMPERFECT_SOUND , layout_buckrog ) +GAMEL( 1982, buckrogn, buckrog, buckrogu, buckrog, turbo_state, 0, ROT0, "Sega", "Buck Rogers: Planet of Zoom (not encrypted, set 1)", MACHINE_IMPERFECT_SOUND , layout_buckrog ) +GAMEL( 1982, buckrogn2,buckrog, buckrogu, buckrog, turbo_state, 0, ROT0, "Sega", "Buck Rogers: Planet of Zoom (not encrypted, set 2)", MACHINE_IMPERFECT_SOUND , layout_buckrog ) +GAMEL( 1982, zoom909, buckrog, buckroge, buckrog, turbo_state, 0, ROT0, "Sega", "Zoom 909", MACHINE_IMPERFECT_SOUND, layout_buckrog ) diff --git a/src/mame/drivers/turrett.cpp b/src/mame/drivers/turrett.cpp index fa8aa2e6f49..f085dcdd5c2 100644 --- a/src/mame/drivers/turrett.cpp +++ b/src/mame/drivers/turrett.cpp @@ -13,6 +13,7 @@ #include "cpu/mips/r3000.h" #include "machine/ataintf.h" +#include "machine/idehd.h" #include "speaker.h" @@ -317,15 +318,13 @@ INTERRUPT_GEN_MEMBER( turrett_state::adc ) /// HACK: The game expects a different LBA mapping to the standard HDD. /// The reason for this is unknown. -#include "machine/idehd.h" - -extern const device_type TURRETT_HARDDISK; +DECLARE_DEVICE_TYPE(TURRETT_HARDDISK, turrett_hdd) class turrett_hdd : public ide_hdd_device { public: turrett_hdd(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ide_hdd_device(mconfig, TURRETT_HARDDISK, "HDD Turrett Tower", tag, owner, clock, "turrett_hdd", __FILE__) + : ide_hdd_device(mconfig, TURRETT_HARDDISK, tag, owner, clock) { } @@ -338,7 +337,7 @@ public: } }; -const device_type TURRETT_HARDDISK = device_creator; +DEFINE_DEVICE_TYPE(TURRETT_HARDDISK, turrett_hdd, "turrett_hdd", "Turret Tower HDD") SLOT_INTERFACE_START(turrett_devices) SLOT_INTERFACE("hdd", TURRETT_HARDDISK) @@ -350,7 +349,7 @@ SLOT_INTERFACE_END * *************************************/ -static MACHINE_CONFIG_START( turrett, turrett_state ) +static MACHINE_CONFIG_START( turrett ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R3041, R3041_CLOCK) @@ -413,4 +412,4 @@ ROM_END * *************************************/ -GAME( 2001, turrett, 0, turrett, turrett, driver_device, 0, ROT0, "Dell Electronics (Namco license)", "Turret Tower", 0 ) +GAME( 2001, turrett, 0, turrett, turrett, turrett_state, 0, ROT0, "Dell Electronics (Namco license)", "Turret Tower", 0 ) diff --git a/src/mame/drivers/tutankhm.cpp b/src/mame/drivers/tutankhm.cpp index b32ccde28e3..f674fce3246 100644 --- a/src/mame/drivers/tutankhm.cpp +++ b/src/mame/drivers/tutankhm.cpp @@ -223,7 +223,7 @@ MACHINE_RESET_MEMBER(tutankhm_state,tutankhm) m_flip_y = 0; } -static MACHINE_CONFIG_START( tutankhm, tutankhm_state ) +static MACHINE_CONFIG_START( tutankhm ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_18_432MHz/12) /* 1.5 MHz ??? */ @@ -328,5 +328,5 @@ ROM_END * *************************************/ -GAME( 1982, tutankhm, 0, tutankhm, tutankhm, driver_device, 0, ROT90, "Konami", "Tutankham", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) -GAME( 1982, tutankhms,tutankhm, tutankhm, tutankhm, driver_device, 0, ROT90, "Konami (Stern Electronics license)", "Tutankham (Stern Electronics)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) +GAME( 1982, tutankhm, 0, tutankhm, tutankhm, tutankhm_state, 0, ROT90, "Konami", "Tutankham", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) +GAME( 1982, tutankhms,tutankhm, tutankhm, tutankhm, tutankhm_state, 0, ROT90, "Konami (Stern Electronics license)", "Tutankham (Stern Electronics)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS) diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp index 838a904207d..4f3221ce142 100644 --- a/src/mame/drivers/tutor.cpp +++ b/src/mame/drivers/tutor.cpp @@ -732,7 +732,7 @@ static INPUT_PORTS_START(pyuutajr) PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED) INPUT_PORTS_END -static MACHINE_CONFIG_START( tutor, tutor_state ) +static MACHINE_CONFIG_START( tutor ) // basic machine hardware // TMS9995 CPU @ 10.7 MHz // No lines connected yet @@ -795,7 +795,7 @@ ROM_START(pyuutajr) ROM_LOAD( "ipl.rom", 0x0000, 0x4000, CRC(2ca37e62) SHA1(eebdc5c37d3b532edd5e5ca65eb785269ebd1ac0)) /* system ROM */ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP(1983?, tutor, 0, 0, tutor, tutor, driver_device, 0, "Tomy", "Tomy Tutor" , 0) -COMP(1982, pyuuta, tutor, 0, tutor, tutor, driver_device, 0, "Tomy", "Tomy Pyuuta" , 0) -COMP(1983, pyuutajr, tutor, 0, pyuutajr, pyuutajr, driver_device, 0, "Tomy", "Tomy Pyuuta Jr." , 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP(1983?, tutor, 0, 0, tutor, tutor, tutor_state, 0, "Tomy", "Tomy Tutor" , 0) +COMP(1982, pyuuta, tutor, 0, tutor, tutor, tutor_state, 0, "Tomy", "Tomy Pyuuta" , 0) +COMP(1983, pyuutajr, tutor, 0, pyuutajr, pyuutajr, tutor_state, 0, "Tomy", "Tomy Pyuuta Jr.", 0) diff --git a/src/mame/drivers/tv910.cpp b/src/mame/drivers/tv910.cpp index adc6615e63c..4d2b83249af 100644 --- a/src/mame/drivers/tv910.cpp +++ b/src/mame/drivers/tv910.cpp @@ -490,7 +490,7 @@ MC6845_UPDATE_ROW( tv910_state::crtc_update_row ) } } -static MACHINE_CONFIG_START( tv910, tv910_state ) +static MACHINE_CONFIG_START( tv910 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/8) MCFG_CPU_PROGRAM_MAP(tv910_mem) @@ -549,5 +549,5 @@ ROM_START( tv910 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, tv910, 0, 0, tv910, tv910, driver_device, 0, "TeleVideo", "TV910", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, tv910, 0, 0, tv910, tv910, tv910_state, 0, "TeleVideo", "TV910", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/tv950.cpp b/src/mame/drivers/tv950.cpp index cec50bc958c..6922e37c3c9 100644 --- a/src/mame/drivers/tv950.cpp +++ b/src/mame/drivers/tv950.cpp @@ -266,7 +266,7 @@ MC6845_UPDATE_ROW( tv950_state::crtc_update_row ) m_row = (m_row + 1) % 250; } -static MACHINE_CONFIG_START( tv950, tv950_state ) +static MACHINE_CONFIG_START( tv950 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/14) MCFG_CPU_PROGRAM_MAP(tv950_mem) @@ -318,5 +318,5 @@ ROM_START( tv950 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, tv950, 0, 0, tv950, tv950, driver_device, 0, "TeleVideo", "TV950", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1981, tv950, 0, 0, tv950, tv950, tv950_state, 0, "TeleVideo", "TV950", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/tv990.cpp b/src/mame/drivers/tv990.cpp index a8f093c087b..17887a09148 100644 --- a/src/mame/drivers/tv990.cpp +++ b/src/mame/drivers/tv990.cpp @@ -177,6 +177,9 @@ WRITE16_MEMBER(tv990_state::tvi1111_w) if(!m_rowh) m_rowh = 16; m_height = (tvi1111_regs[0xa] - tvi1111_regs[0x9]) / m_rowh; + // m_height can be 0 or -1 while machine is starting, leading to a crash on a debug build, so we sanitise it. + if(m_height < 8 || m_height > 99) + m_height = 0x1a; m_screen->set_visible_area(0, m_width * 16 - 1, 0, m_height * m_rowh - 1); } if(offset == 0x17) @@ -364,7 +367,7 @@ void tv990_state::device_post_load() m_screen->set_visible_area(0, m_width * 16 - 1, 0, m_height * m_rowh - 1); } -static MACHINE_CONFIG_START( tv990, tv990_state ) +static MACHINE_CONFIG_START( tv990 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 14967500) // verified (59.86992/4) MCFG_CPU_PROGRAM_MAP(tv990_mem) @@ -427,5 +430,5 @@ ROM_START( tv995 ) ROM_END /* Driver */ -COMP( 1992, tv990, 0, 0, tv990, tv990, driver_device, 0, "TeleVideo", "TeleVideo 990", MACHINE_SUPPORTS_SAVE) -COMP( 1994, tv995, 0, 0, tv990, tv990, driver_device, 0, "TeleVideo", "TeleVideo 995-65", MACHINE_SUPPORTS_SAVE) +COMP( 1992, tv990, 0, 0, tv990, tv990, tv990_state, 0, "TeleVideo", "TeleVideo 990", MACHINE_SUPPORTS_SAVE ) +COMP( 1994, tv995, 0, 0, tv990, tv990, tv990_state, 0, "TeleVideo", "TeleVideo 995-65", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tvc.cpp b/src/mame/drivers/tvc.cpp index 1804e78dd04..8d52b8e5500 100644 --- a/src/mame/drivers/tvc.cpp +++ b/src/mame/drivers/tvc.cpp @@ -760,7 +760,7 @@ extern SLOT_INTERFACE_START(tvc_exp) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( tvc, tvc_state ) +static MACHINE_CONFIG_START( tvc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, 3125000) MCFG_CPU_PROGRAM_MAP(tvc_mem) @@ -876,7 +876,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, tvc64, 0, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1985, tvc64p, tvc64, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64+", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -COMP( 1985, tvc64pru, tvc64, 0, tvc, tvc64pru, driver_device, 0, "Videoton", "TVC 64+ (Russian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, tvc64, 0, 0, tvc, tvc, tvc_state, 0, "Videoton", "TVC 64", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1985, tvc64p, tvc64, 0, tvc, tvc, tvc_state, 0, "Videoton", "TVC 64+", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1985, tvc64pru, tvc64, 0, tvc, tvc64pru, tvc_state, 0, "Videoton", "TVC 64+ (Russian)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/tvcapcom.cpp b/src/mame/drivers/tvcapcom.cpp index 293d3638621..c2d9e2278da 100644 --- a/src/mame/drivers/tvcapcom.cpp +++ b/src/mame/drivers/tvcapcom.cpp @@ -48,7 +48,7 @@ uint32_t tvcapcom_state::screen_update_tvcapcom(screen_device &screen, bitmap_rg static INPUT_PORTS_START( tvcapcom ) INPUT_PORTS_END -static MACHINE_CONFIG_START( tvcapcom, tvcapcom_state ) +static MACHINE_CONFIG_START( tvcapcom ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC603, 72900000) // IBM PowerPC Broadway CPU @ 729 MHz ? @@ -82,4 +82,4 @@ ROM_START( tvcapcom ) ROM_END -GAME( 2008, tvcapcom, 0, tvcapcom, tvcapcom, driver_device, 0, ROT0, "Capcom", "Tatsunoko Vs Capcom : Cross Generation of Heroes", MACHINE_IS_SKELETON ) +GAME( 2008, tvcapcom, 0, tvcapcom, tvcapcom, tvcapcom_state, 0, ROT0, "Capcom", "Tatsunoko Vs Capcom : Cross Generation of Heroes", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/tvgame.cpp b/src/mame/drivers/tvgame.cpp index 4fee6adf61a..1ad716e471d 100644 --- a/src/mame/drivers/tvgame.cpp +++ b/src/mame/drivers/tvgame.cpp @@ -93,7 +93,7 @@ uint32_t tvgame_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap return 0; } -static MACHINE_CONFIG_START( tvgame, tvgame_state ) +static MACHINE_CONFIG_START( tvgame ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(tvgame_mem) @@ -131,5 +131,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -CONS( 2011, tvgame, 0, 0, tvgame, tvgame, driver_device, 0, "Mr. Isizu", "Z80 TV Game System", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS( 2011, tvgame, 0, 0, tvgame, tvgame, tvgame_state, 0, "Mr. Isizu", "Z80 TV Game System", 0 ) diff --git a/src/mame/drivers/twin16.cpp b/src/mame/drivers/twin16.cpp index e1844f3d911..7b662c3a9c1 100644 --- a/src/mame/drivers/twin16.cpp +++ b/src/mame/drivers/twin16.cpp @@ -661,7 +661,7 @@ void twin16_state::machine_start() save_item(NAME(m_CPUB_register)); } -static MACHINE_CONFIG_START( twin16, twin16_state ) +static MACHINE_CONFIG_START( twin16 ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, XTAL_18_432MHz/2) MCFG_CPU_PROGRAM_MAP(main_map) @@ -684,7 +684,7 @@ static MACHINE_CONFIG_START( twin16, twin16_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_18_432MHz/2, 576, 0, 40*8, 264, 2*8, 30*8) MCFG_SCREEN_UPDATE_DRIVER(twin16_state, screen_update_twin16) - MCFG_SCREEN_VBLANK_DRIVER(twin16_state, screen_eof_twin16) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(twin16_state, screen_vblank_twin16)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", twin16) @@ -719,7 +719,7 @@ static MACHINE_CONFIG_DERIVED( devilw, twin16 ) MCFG_QUANTUM_TIME(attotime::from_hz(60000)) // watchdog reset otherwise MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fround, fround_state ) +static MACHINE_CONFIG_START( fround ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_18_432MHz/2) MCFG_CPU_PROGRAM_MAP(fround_map) @@ -738,7 +738,7 @@ static MACHINE_CONFIG_START( fround, fround_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_18_432MHz/2, 576, 0, 40*8, 264, 2*8, 30*8) MCFG_SCREEN_UPDATE_DRIVER(twin16_state, screen_update_twin16) - MCFG_SCREEN_VBLANK_DRIVER(twin16_state, screen_eof_twin16) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(twin16_state, screen_vblank_twin16)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", fround) @@ -774,7 +774,7 @@ static MACHINE_CONFIG_DERIVED( miaj, twin16 ) MCFG_SCREEN_RAW_PARAMS(XTAL_18_432MHz/2, 576, 1*8, 39*8, 264, 2*8, 30*8) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( cuebrickj, twin16, cuebrickj_state ) +static MACHINE_CONFIG_DERIVED( cuebrickj, twin16 ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_RAW_PARAMS(XTAL_18_432MHz/2, 576, 1*8, 39*8, 264, 2*8, 30*8) MCFG_NVRAM_ADD_0FILL("nvram") @@ -1279,19 +1279,19 @@ DRIVER_INIT_MEMBER(cuebrickj_state,cuebrickj) /* Game Drivers */ -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1987, devilw, 0, devilw, devilw, twin16_state, twin16, ROT0, "Konami", "Devil World", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, majuu, devilw, devilw, devilw, twin16_state, twin16, ROT0, "Konami", "Majuu no Ohkoku", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, darkadv, devilw, devilw, darkadv, twin16_state, twin16, ROT0, "Konami", "Dark Adventure", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vulcan, 0, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Vulcan Venture (New)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vulcana, vulcan, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Vulcan Venture (Old)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vulcanb, vulcan, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Vulcan Venture (Oldest)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gradius2, vulcan, twin16, gradius2, twin16_state, twin16, ROT0, "Konami", "Gradius II - GOFER no Yabou (Japan New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gradius2a, vulcan, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Gradius II - GOFER no Yabou (Japan Old Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gradius2b, vulcan, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Gradius II - GOFER no Yabou (Japan Older Ver.)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1988, fround, 0, fround, fround, fround_state, fround, ROT0, "Konami", "The Final Round (version M)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, froundl, fround, fround, fround, fround_state, fround, ROT0, "Konami", "The Final Round (version L)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, hpuncher, fround, twin16, fround, twin16_state, twin16, ROT0, "Konami", "Hard Puncher (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, miaj, mia, miaj, miaj, twin16_state, twin16, ROT0, "Konami", "M.I.A. - Missing in Action (version R) (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, cuebrickj, cuebrick, cuebrickj, cuebrickj, cuebrickj_state, cuebrickj, ROT0, "Konami", "Cue Brick (Japan)", MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY, FULLNAME,FLAGS +GAME( 1987, devilw, 0, devilw, devilw, twin16_state, twin16, ROT0, "Konami", "Devil World", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, majuu, devilw, devilw, devilw, twin16_state, twin16, ROT0, "Konami", "Majuu no Ohkoku", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, darkadv, devilw, devilw, darkadv, twin16_state, twin16, ROT0, "Konami", "Dark Adventure", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vulcan, 0, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Vulcan Venture (New)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vulcana, vulcan, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Vulcan Venture (Old)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vulcanb, vulcan, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Vulcan Venture (Oldest)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gradius2, vulcan, twin16, gradius2, twin16_state, twin16, ROT0, "Konami", "Gradius II - GOFER no Yabou (Japan New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gradius2a, vulcan, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Gradius II - GOFER no Yabou (Japan Old Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gradius2b, vulcan, twin16, vulcan, twin16_state, twin16, ROT0, "Konami", "Gradius II - GOFER no Yabou (Japan Older Ver.)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1988, fround, 0, fround, fround, fround_state, fround, ROT0, "Konami", "The Final Round (version M)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, froundl, fround, fround, fround, fround_state, fround, ROT0, "Konami", "The Final Round (version L)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, hpuncher, fround, twin16, fround, twin16_state, twin16, ROT0, "Konami", "Hard Puncher (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, miaj, mia, miaj, miaj, twin16_state, twin16, ROT0, "Konami", "M.I.A. - Missing in Action (version R) (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cuebrickj, cuebrick, cuebrickj, cuebrickj, cuebrickj_state, cuebrickj, ROT0, "Konami", "Cue Brick (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/twincobr.cpp b/src/mame/drivers/twincobr.cpp index d05a5f46654..8f684a4da56 100644 --- a/src/mame/drivers/twincobr.cpp +++ b/src/mame/drivers/twincobr.cpp @@ -654,7 +654,7 @@ static GFXDECODE_START( twincobr ) GFXDECODE_END -static MACHINE_CONFIG_START( twincobr, twincobr_state ) +static MACHINE_CONFIG_START( twincobr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_28MHz/4) /* 7MHz - Main board Crystal is 28MHz */ @@ -688,7 +688,7 @@ static MACHINE_CONFIG_START( twincobr, twincobr_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4, 446, 0, 320, 286, 0, 240) MCFG_SCREEN_UPDATE_DRIVER(twincobr_state, screen_update_toaplan0) - MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram16", buffered_spriteram16_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", twincobr) diff --git a/src/mame/drivers/twinkle.cpp b/src/mame/drivers/twinkle.cpp index f15375168ea..60e32339fb0 100644 --- a/src/mame/drivers/twinkle.cpp +++ b/src/mame/drivers/twinkle.cpp @@ -933,7 +933,7 @@ static MACHINE_CONFIG_FRAGMENT( cdrom_config ) MCFG_SOUND_ROUTE( 1, "^^^^speakerright", 1.0 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( twinkle, twinkle_state ) +static MACHINE_CONFIG_START( twinkle ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8530CQ, XTAL_67_7376MHz ) MCFG_CPU_PROGRAM_MAP( main_map ) @@ -941,8 +941,8 @@ static MACHINE_CONFIG_START( twinkle, twinkle_state ) MCFG_RAM_MODIFY("maincpu:ram") MCFG_RAM_DEFAULT_SIZE("4M") - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate(&scsi_dma_read, (twinkle_state *) owner ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate(&scsi_dma_write, (twinkle_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&scsi_dma_read, (twinkle_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&scsi_dma_write, (twinkle_state *) owner ) ) MCFG_CPU_ADD("audiocpu", M68000, 32000000/2) /* 16.000 MHz */ MCFG_CPU_PROGRAM_MAP( sound_map ) @@ -1333,20 +1333,20 @@ ROM_START( bmiidxc2 ) DISK_IMAGE_READONLY( "983hdda01", 0, SHA1(bcbbf55acf8bebc5773ffc5769420a0129f4da57) ) ROM_END -GAME( 1999, gq863, 0, twinkle, twinkle, driver_device, 0, ROT0, "Konami", "Twinkle System", MACHINE_IS_BIOS_ROOT ) - -GAME( 1999, bmiidx, gq863, twinklex, twinklex, driver_device, 0, ROT0, "Konami", "beatmania IIDX (863 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1999, bmiidxa, bmiidx, twinklex, twinklex, driver_device, 0, ROT0, "Konami", "beatmania IIDX (863 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1999, bmiidxc, gq863, twinklex, twinklex, driver_device, 0, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1999, bmiidxca, bmiidxc, twinklex, twinklex, driver_device, 0, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1999, bmiidxs, gq863, twinklex, twinklex, driver_device, 0, ROT0, "Konami", "beatmania IIDX Substream (983 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1999, bmiidxc2, gq863, twinklex, twinklex, driver_device, 0, ROT0, "Konami", "beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1999, bmiidx2, gq863, twinklei, twinklei, driver_device, 0, ROT0, "Konami", "beatmania IIDX 2nd style (GC985 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 2000, bmiidx3, gq863, twinklei, twinklei, driver_device, 0, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAC)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 2000, bmiidx3a, bmiidx3, twinklei, twinklei, driver_device, 0, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 2000, bmiidx4, gq863, twinklei, twinklei, driver_device, 0, ROT0, "Konami", "beatmania IIDX 4th style (GCA03 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 2001, bmiidx5, gq863, twinklei, twinklei, driver_device, 0, ROT0, "Konami", "beatmania IIDX 5th style (GCA17 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 2001, bmiidx6, gq863, twinklei, twinklei, driver_device, 0, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 2001, bmiidx6a, bmiidx6, twinklei, twinklei, driver_device, 0, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 2002, bmiidx7, gq863, twinklei, twinklei, driver_device, 0, ROT0, "Konami", "beatmania IIDX 7th style (GCB44 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 2002, bmiidx8, gq863, twinklei, twinklei, driver_device, 0, ROT0, "Konami", "beatmania IIDX 8th style (GCC44 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1999, gq863, 0, twinkle, twinkle, twinkle_state, 0, ROT0, "Konami", "Twinkle System", MACHINE_IS_BIOS_ROOT ) + +GAME( 1999, bmiidx, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX (863 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1999, bmiidxa, bmiidx, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX (863 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1999, bmiidxc, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1999, bmiidxca, bmiidxc, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1999, bmiidxs, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX Substream (983 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1999, bmiidxc2, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1999, bmiidx2, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 2nd style (GC985 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 2000, bmiidx3, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAC)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 2000, bmiidx3a, bmiidx3, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 2000, bmiidx4, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 4th style (GCA03 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 2001, bmiidx5, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 5th style (GCA17 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 2001, bmiidx6, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 2001, bmiidx6a, bmiidx6, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 2002, bmiidx7, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 7th style (GCB44 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 2002, bmiidx8, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 8th style (GCC44 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/twins.cpp b/src/mame/drivers/twins.cpp index fcfa4544a1a..a5be8a0b686 100644 --- a/src/mame/drivers/twins.cpp +++ b/src/mame/drivers/twins.cpp @@ -379,7 +379,7 @@ static INPUT_PORTS_START(twins) INPUT_PORTS_END -static MACHINE_CONFIG_START( twins, twins_state ) +static MACHINE_CONFIG_START( twins ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, 8000000) MCFG_CPU_PROGRAM_MAP(twins_map) @@ -427,7 +427,7 @@ static ADDRESS_MAP_START( ramdac_map, AS_0, 8, twins_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( twinsa, twins_state ) +static MACHINE_CONFIG_START( twinsa ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz/2) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(twins_map) @@ -556,7 +556,7 @@ ADDRESS_MAP_END -static MACHINE_CONFIG_START( spider, twins_state ) +static MACHINE_CONFIG_START( spider ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, 8000000) MCFG_CPU_PROGRAM_MAP(twins_map) @@ -623,7 +623,7 @@ ROM_START( spider ) ROM_LOAD16_BYTE( "21.bin", 0x000000, 0x080000, CRC(ff224206) SHA1(d8d45850983542e811facc917d016841fc56a97f) ) ROM_END -GAME( 1994, twins, 0, twins, twins, driver_device, 0, ROT0, "Electronic Devices", "Twins (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, twinsa, twins, twinsa, twins, driver_device, 0, ROT0, "Electronic Devices", "Twins (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, twins, 0, twins, twins, twins_state, 0, ROT0, "Electronic Devices", "Twins (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, twinsa, twins, twinsa, twins, twins_state, 0, ROT0, "Electronic Devices", "Twins (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, spider, 0, spider, twins, driver_device, 0, ROT0, "Buena Vision", "Spider", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, spider, 0, spider, twins, twins_state, 0, ROT0, "Buena Vision", "Spider", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tx0.cpp b/src/mame/drivers/tx0.cpp index 81776b3e753..16e9b60fc12 100644 --- a/src/mame/drivers/tx0.cpp +++ b/src/mame/drivers/tx0.cpp @@ -378,11 +378,11 @@ protected: virtual void device_start() override { } }; -const device_type TX0_READTAPE = device_creator; +DEFINE_DEVICE_TYPE(TX0_READTAPE, tx0_readtape_image_device, "tx0_readtape_image", "TX0 Tape Reader") tx0_readtape_image_device::tx0_readtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TX0_READTAPE, "TX0 Tape Reader", tag, owner, clock, "tx0_readtape_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, TX0_READTAPE, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -410,11 +410,11 @@ protected: virtual void device_start() override { } }; -const device_type TX0_PUNCHTAPE = device_creator; +DEFINE_DEVICE_TYPE(TX0_PUNCHTAPE, tx0_punchtape_image_device, "tx0_punchtape_image", "TX0 Tape Puncher") tx0_punchtape_image_device::tx0_punchtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TX0_PUNCHTAPE, "TX0 Tape Puncher", tag, owner, clock, "tx0_punchtape_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, TX0_PUNCHTAPE, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -443,11 +443,11 @@ protected: virtual void device_start() override { } }; -const device_type TX0_PRINTER = device_creator; +DEFINE_DEVICE_TYPE(TX0_PRINTER, tx0_printer_image_device, "tx0_printer_image", "TX0 Typewriter") tx0_printer_image_device::tx0_printer_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TX0_PRINTER, "TX0 Typewriter", tag, owner, clock, "tx0_printer_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, TX0_PRINTER, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -475,11 +475,11 @@ protected: virtual void device_start() override; }; -const device_type TX0_MAGTAPE = device_creator; +DEFINE_DEVICE_TYPE(TX0_MAGTAPE, tx0_magtape_image_device, "tx0_magtape_image", "TX0 Magnetic Tape") tx0_magtape_image_device::tx0_magtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TX0_MAGTAPE, "TX0 Magnetic Tape", tag, owner, clock, "tx0_magtape_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, TX0_MAGTAPE, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -1530,7 +1530,7 @@ INTERRUPT_GEN_MEMBER(tx0_state::tx0_interrupt) } } -static MACHINE_CONFIG_START( tx0_64kw, tx0_state ) +static MACHINE_CONFIG_START( tx0_64kw ) /* basic machine hardware */ /* TX0 CPU @ approx. 167 kHz (no master clock, but the memory cycle time is approximately 6usec) */ MCFG_CPU_ADD("maincpu", TX0_64KW, 166667) @@ -1557,7 +1557,7 @@ static MACHINE_CONFIG_START( tx0_64kw, tx0_state ) MCFG_SCREEN_SIZE(virtual_width, virtual_height) MCFG_SCREEN_VISIBLE_AREA(0, virtual_width-1, 0, virtual_height-1) MCFG_SCREEN_UPDATE_DRIVER(tx0_state, screen_update_tx0) - MCFG_SCREEN_VBLANK_DRIVER(tx0_state, screen_eof_tx0) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tx0_state, screen_vblank_tx0)) MCFG_SCREEN_PALETTE("palette") MCFG_DEVICE_ADD("crt", CRT, 0) @@ -1610,6 +1610,6 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1956, tx0_64kw, 0, 0, tx0_64kw, tx0, tx0_state, tx0, "MIT", "TX-0 original demonstrator (64 kWords of RAM)" , MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING) -COMP( 1962, tx0_8kw, tx0_64kw, 0, tx0_8kw, tx0, tx0_state, tx0, "MIT", "TX-0 upgraded system (8 kWords of RAM)" , MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1956, tx0_64kw, 0, 0, tx0_64kw, tx0, tx0_state, tx0, "MIT", "TX-0 original demonstrator (64 kWords of RAM)" , MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING) +COMP( 1962, tx0_8kw, tx0_64kw, 0, tx0_8kw, tx0, tx0_state, tx0, "MIT", "TX-0 upgraded system (8 kWords of RAM)" , MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/tx1.cpp b/src/mame/drivers/tx1.cpp index bf397deb3fc..e0c716ecac2 100644 --- a/src/mame/drivers/tx1.cpp +++ b/src/mame/drivers/tx1.cpp @@ -454,6 +454,7 @@ static uint8_t bit_reverse8(uint8_t val) return val; } +// Tazmi TZ2103 custom 4-channel A/D converter @ 7.5 MHz READ8_MEMBER(tx1_state::bb_analog_r) { if (offset == 0) @@ -605,7 +606,7 @@ ADDRESS_MAP_END * *************************************/ -static MACHINE_CONFIG_START( tx1, tx1_state ) +static MACHINE_CONFIG_START( tx1 ) MCFG_CPU_ADD("main_cpu", I8086, CPU_MASTER_CLOCK / 3) MCFG_CPU_PROGRAM_MAP(tx1_main) @@ -647,7 +648,7 @@ static MACHINE_CONFIG_START( tx1, tx1_state ) MCFG_SCREEN_ADD("rscreen", RASTER) MCFG_SCREEN_RAW_PARAMS(TX1_PIXEL_CLOCK, TX1_HTOTAL, TX1_HBEND, TX1_HBSTART, TX1_VTOTAL, TX1_VBEND, TX1_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_tx1_right) - MCFG_SCREEN_VBLANK_DRIVER(tx1_state, screen_eof_tx1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tx1_state, screen_vblank_tx1)) MCFG_SCREEN_PALETTE("palette") MCFG_VIDEO_START_OVERRIDE(tx1_state,tx1) @@ -668,7 +669,7 @@ static MACHINE_CONFIG_START( tx1, tx1_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( buggyboy, tx1_state ) +static MACHINE_CONFIG_START( buggyboy ) MCFG_CPU_ADD("main_cpu", I8086, CPU_MASTER_CLOCK / 3) MCFG_CPU_PROGRAM_MAP(buggyboy_main) @@ -707,7 +708,7 @@ static MACHINE_CONFIG_START( buggyboy, tx1_state ) MCFG_SCREEN_ADD("rscreen", RASTER) MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggyboy_right) - MCFG_SCREEN_VBLANK_DRIVER(tx1_state, screen_eof_buggyboy) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tx1_state, screen_vblank_buggyboy)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 256) @@ -732,7 +733,7 @@ static MACHINE_CONFIG_START( buggyboy, tx1_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( buggybjr, tx1_state ) +static MACHINE_CONFIG_START( buggybjr ) MCFG_CPU_ADD("main_cpu", I8086, CPU_MASTER_CLOCK / 3) MCFG_CPU_PROGRAM_MAP(buggybjr_main) @@ -753,7 +754,7 @@ static MACHINE_CONFIG_START( buggybjr, tx1_state ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(BB_PIXEL_CLOCK, BB_HTOTAL, BB_HBEND, BB_HBSTART, BB_VTOTAL, BB_VBEND, BB_VBSTART) MCFG_SCREEN_UPDATE_DRIVER(tx1_state, screen_update_buggybjr) - MCFG_SCREEN_VBLANK_DRIVER(tx1_state, screen_eof_buggyboy) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tx1_state, screen_vblank_buggyboy)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 256) @@ -1242,8 +1243,8 @@ ROM_END * *************************************/ -GAMEL( 1983, tx1, 0, tx1, tx1, driver_device, 0, ROT0, "Tatsumi (Atari/Namco/Taito license)", "TX-1 (World)", MACHINE_IMPERFECT_SOUND, layout_tx1 ) -GAMEL( 1983, tx1jb, tx1, tx1, tx1j, driver_device, 0, ROT0, "Tatsumi", "TX-1 (Japan rev. B)", MACHINE_IMPERFECT_SOUND, layout_tx1 ) -GAMEL( 1983, tx1jc, tx1, tx1, tx1j, driver_device, 0, ROT0, "Tatsumi", "TX-1 (Japan rev. C)", MACHINE_IMPERFECT_SOUND, layout_tx1 ) -GAMEL( 1985, buggyboy, 0, buggyboy, buggyboy, driver_device, 0, ROT0, "Tatsumi", "Buggy Boy/Speed Buggy (cockpit)", 0, layout_buggyboy ) -GAMEL( 1986, buggyboyjr, buggyboy, buggybjr, buggybjr, driver_device, 0, ROT0, "Tatsumi", "Buggy Boy Junior/Speed Buggy (upright)", 0, layout_buggybjr ) +GAMEL( 1983, tx1, 0, tx1, tx1, tx1_state, 0, ROT0, "Tatsumi (Atari/Namco/Taito license)", "TX-1 (World)", MACHINE_IMPERFECT_SOUND, layout_tx1 ) +GAMEL( 1983, tx1jb, tx1, tx1, tx1j, tx1_state, 0, ROT0, "Tatsumi", "TX-1 (Japan rev. B)", MACHINE_IMPERFECT_SOUND, layout_tx1 ) +GAMEL( 1983, tx1jc, tx1, tx1, tx1j, tx1_state, 0, ROT0, "Tatsumi", "TX-1 (Japan rev. C)", MACHINE_IMPERFECT_SOUND, layout_tx1 ) +GAMEL( 1985, buggyboy, 0, buggyboy, buggyboy, tx1_state, 0, ROT0, "Tatsumi", "Buggy Boy/Speed Buggy (cockpit)", 0, layout_buggyboy ) +GAMEL( 1986, buggyboyjr, buggyboy, buggybjr, buggybjr, tx1_state, 0, ROT0, "Tatsumi", "Buggy Boy Junior/Speed Buggy (upright)", 0, layout_buggybjr ) diff --git a/src/mame/drivers/uapce.cpp b/src/mame/drivers/uapce.cpp index 9a205c149b2..9d4b16d8e83 100644 --- a/src/mame/drivers/uapce.cpp +++ b/src/mame/drivers/uapce.cpp @@ -306,7 +306,7 @@ static ADDRESS_MAP_START( pce_io , AS_IO, 8, uapce_state ) ADDRESS_MAP_END -static MACHINE_CONFIG_START( uapce, uapce_state ) +static MACHINE_CONFIG_START( uapce ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", H6280, PCE_MAIN_CLOCK/3) MCFG_CPU_PROGRAM_MAP(pce_mem) @@ -319,7 +319,7 @@ static MACHINE_CONFIG_START( uapce, uapce_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK, HUC6260_WPF, 64, 64 + 1024 + 64, HUC6260_LPF, 18, 18 + 242) + MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242) MCFG_SCREEN_UPDATE_DRIVER( pce_common_state, screen_update ) MCFG_SCREEN_PALETTE("huc6260:palette") @@ -378,7 +378,7 @@ ROM_START(paclandp) ROM_LOAD( "u1.bin", 0x0000, 0x800, CRC(f5e538a9) SHA1(19ac9525c9ad6bea1789cc9e63cdb7fe949867d9) ) ROM_END -GAME( 1989, blazlaz, 0, uapce, uapce, pce_common_state, pce_common, ROT0, "Hudson Soft", "Blazing Lazers", MACHINE_IMPERFECT_SOUND ) -GAME( 1989, keith, 0, uapce, uapce, pce_common_state, pce_common, ROT0, "Hudson Soft", "Keith Courage In Alpha Zones", MACHINE_IMPERFECT_SOUND ) -GAME( 1989, aliencr, 0, uapce, uapce, pce_common_state, pce_common, ROT0, "Hudson Soft", "Alien Crush", MACHINE_IMPERFECT_SOUND ) -GAME( 1989, paclandp,0, uapce, uapce, pce_common_state, pce_common, ROT0, "Namco", "Pac-Land (United Amusements PC Engine)", MACHINE_IMPERFECT_SOUND ) +GAME( 1989, blazlaz, 0, uapce, uapce, uapce_state, pce_common, ROT0, "Hudson Soft", "Blazing Lazers", MACHINE_IMPERFECT_SOUND ) +GAME( 1989, keith, 0, uapce, uapce, uapce_state, pce_common, ROT0, "Hudson Soft", "Keith Courage In Alpha Zones", MACHINE_IMPERFECT_SOUND ) +GAME( 1989, aliencr, 0, uapce, uapce, uapce_state, pce_common, ROT0, "Hudson Soft", "Alien Crush", MACHINE_IMPERFECT_SOUND ) +GAME( 1989, paclandp,0, uapce, uapce, uapce_state, pce_common, ROT0, "Namco", "Pac-Land (United Amusements PC Engine)", MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/uknc.cpp b/src/mame/drivers/uknc.cpp index 8154368c50e..9bdd1be0489 100644 --- a/src/mame/drivers/uknc.cpp +++ b/src/mame/drivers/uknc.cpp @@ -57,7 +57,7 @@ uint32_t uknc_state::screen_update_uknc(screen_device &screen, bitmap_ind16 &bit return 0; } -static MACHINE_CONFIG_START( uknc, uknc_state ) +static MACHINE_CONFIG_START( uknc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", K1801VM2, 8000000) MCFG_T11_INITIAL_MODE(0x8000) @@ -90,5 +90,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, uknc, 0, 0, uknc, uknc, driver_device, 0, "", "UKNC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, uknc, 0, 0, uknc, uknc, uknc_state, 0, "", "UKNC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/ultraman.cpp b/src/mame/drivers/ultraman.cpp index c39b3815374..9dd01670230 100644 --- a/src/mame/drivers/ultraman.cpp +++ b/src/mame/drivers/ultraman.cpp @@ -176,7 +176,7 @@ void ultraman_state::machine_reset() m_bank2 = -1; } -static MACHINE_CONFIG_START( ultraman, ultraman_state ) +static MACHINE_CONFIG_START( ultraman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,24000000/2) /* 12 MHz? */ @@ -233,7 +233,7 @@ static MACHINE_CONFIG_START( ultraman, ultraman_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) MACHINE_CONFIG_END @@ -278,4 +278,4 @@ ROM_START( ultraman ) ROM_END -GAME( 1991, ultraman, 0, ultraman, ultraman, driver_device, 0, ROT0, "Banpresto / Bandai", "Ultraman (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, ultraman, 0, ultraman, ultraman, ultraman_state, 0, ROT0, "Banpresto / Bandai", "Ultraman (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ultratnk.cpp b/src/mame/drivers/ultratnk.cpp index 8d8c8731c97..6ab14d4c161 100644 --- a/src/mame/drivers/ultratnk.cpp +++ b/src/mame/drivers/ultratnk.cpp @@ -71,91 +71,98 @@ TIMER_CALLBACK_MEMBER(ultratnk_state::nmi_callback) if (ioport("IN0")->read() & 0x40) m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); - timer_set(m_screen->time_until_pos(scanline), TIMER_NMI, scanline); + m_nmi_timer->adjust(m_screen->time_until_pos(scanline), scanline); +} + + +void ultratnk_state::machine_start() +{ + m_nmi_timer = timer_alloc(TIMER_NMI); + + save_item(NAME(m_da_latch)); + save_item(NAME(m_collision)); } void ultratnk_state::machine_reset() { - timer_set(m_screen->time_until_pos(32), TIMER_NMI, 32); + m_nmi_timer->adjust(m_screen->time_until_pos(32), 32); } -READ8_MEMBER(ultratnk_state::ultratnk_wram_r) +READ8_MEMBER(ultratnk_state::wram_r) { - uint8_t *videoram = m_videoram; - return videoram[0x380 + offset]; + return m_videoram[0x380 + offset]; } -READ8_MEMBER(ultratnk_state::ultratnk_analog_r) +READ8_MEMBER(ultratnk_state::analog_r) { return (ioport("ANALOG")->read() << (~offset & 7)) & 0x80; } -READ8_MEMBER(ultratnk_state::ultratnk_coin_r) +READ8_MEMBER(ultratnk_state::coin_r) { return (ioport("COIN")->read() << (~offset & 7)) & 0x80; } -READ8_MEMBER(ultratnk_state::ultratnk_collision_r) +READ8_MEMBER(ultratnk_state::collision_r) { return (ioport("COLLISION")->read() << (~offset & 7)) & 0x80; } -READ8_MEMBER(ultratnk_state::ultratnk_options_r) +READ8_MEMBER(ultratnk_state::options_r) { return (ioport("DIP")->read() >> (2 * (offset & 3))) & 3; } -WRITE8_MEMBER(ultratnk_state::ultratnk_wram_w) +WRITE8_MEMBER(ultratnk_state::wram_w) { - uint8_t *videoram = m_videoram; - videoram[0x380 + offset] = data; + m_videoram[0x380 + offset] = data; } -WRITE8_MEMBER(ultratnk_state::ultratnk_collision_reset_w) +WRITE8_MEMBER(ultratnk_state::collision_reset_w) { m_collision[(offset >> 1) & 3] = 0; } -WRITE8_MEMBER(ultratnk_state::ultratnk_da_latch_w) +WRITE8_MEMBER(ultratnk_state::da_latch_w) { m_da_latch = data & 15; } -WRITE8_MEMBER(ultratnk_state::ultratnk_led_1_w) +WRITE8_MEMBER(ultratnk_state::led_1_w) { output().set_led_value(0, offset & 1); /* left player start */ } -WRITE8_MEMBER(ultratnk_state::ultratnk_led_2_w) +WRITE8_MEMBER(ultratnk_state::led_2_w) { output().set_led_value(1, offset & 1); /* right player start */ } -WRITE8_MEMBER(ultratnk_state::ultratnk_lockout_w) +WRITE8_MEMBER(ultratnk_state::lockout_w) { machine().bookkeeping().coin_lockout_global_w(~offset & 1); } -WRITE8_MEMBER(ultratnk_state::ultratnk_fire_1_w) +WRITE8_MEMBER(ultratnk_state::fire_1_w) { m_discrete->write(space, ULTRATNK_FIRE_EN_1, offset & 1); } -WRITE8_MEMBER(ultratnk_state::ultratnk_fire_2_w) +WRITE8_MEMBER(ultratnk_state::fire_2_w) { m_discrete->write(space, ULTRATNK_FIRE_EN_2, offset & 1); } -WRITE8_MEMBER(ultratnk_state::ultratnk_attract_w) +WRITE8_MEMBER(ultratnk_state::attract_w) { m_discrete->write(space, ULTRATNK_ATTRACT_EN, data & 1); } -WRITE8_MEMBER(ultratnk_state::ultratnk_explosion_w) +WRITE8_MEMBER(ultratnk_state::explosion_w) { m_discrete->write(space, ULTRATNK_EXPLOSION_DATA, data & 15); } @@ -166,27 +173,27 @@ static ADDRESS_MAP_START( ultratnk_cpu_map, AS_PROGRAM, 8, ultratnk_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x700) AM_RAM - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(ultratnk_wram_r, ultratnk_wram_w) - AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(ultratnk_video_ram_w) AM_SHARE("videoram") + AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(wram_r, wram_w) + AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(video_ram_w) AM_SHARE("videoram") AM_RANGE(0x1000, 0x17ff) AM_READ_PORT("IN0") AM_RANGE(0x1800, 0x1fff) AM_READ_PORT("IN1") - AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x718) AM_READ(ultratnk_analog_r) - AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_READ(ultratnk_coin_r) - AM_RANGE(0x2040, 0x2047) AM_MIRROR(0x718) AM_READ(ultratnk_collision_r) - AM_RANGE(0x2060, 0x2063) AM_MIRROR(0x71c) AM_READ(ultratnk_options_r) + AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x718) AM_READ(analog_r) + AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_READ(coin_r) + AM_RANGE(0x2040, 0x2047) AM_MIRROR(0x718) AM_READ(collision_r) + AM_RANGE(0x2060, 0x2063) AM_MIRROR(0x71c) AM_READ(options_r) - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x71f) AM_WRITE(ultratnk_attract_w) - AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_WRITE(ultratnk_collision_reset_w) - AM_RANGE(0x2040, 0x2041) AM_MIRROR(0x718) AM_WRITE(ultratnk_da_latch_w) - AM_RANGE(0x2042, 0x2043) AM_MIRROR(0x718) AM_WRITE(ultratnk_explosion_w) + AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x71f) AM_WRITE(attract_w) + AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_WRITE(collision_reset_w) + AM_RANGE(0x2040, 0x2041) AM_MIRROR(0x718) AM_WRITE(da_latch_w) + AM_RANGE(0x2042, 0x2043) AM_MIRROR(0x718) AM_WRITE(explosion_w) AM_RANGE(0x2044, 0x2045) AM_MIRROR(0x718) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2066, 0x2067) AM_MIRROR(0x710) AM_WRITE(ultratnk_lockout_w) - AM_RANGE(0x2068, 0x2069) AM_MIRROR(0x710) AM_WRITE(ultratnk_led_1_w) - AM_RANGE(0x206a, 0x206b) AM_MIRROR(0x710) AM_WRITE(ultratnk_led_2_w) - AM_RANGE(0x206c, 0x206d) AM_MIRROR(0x710) AM_WRITE(ultratnk_fire_2_w) - AM_RANGE(0x206e, 0x206f) AM_MIRROR(0x710) AM_WRITE(ultratnk_fire_1_w) + AM_RANGE(0x2066, 0x2067) AM_MIRROR(0x710) AM_WRITE(lockout_w) + AM_RANGE(0x2068, 0x2069) AM_MIRROR(0x710) AM_WRITE(led_1_w) + AM_RANGE(0x206a, 0x206b) AM_MIRROR(0x710) AM_WRITE(led_2_w) + AM_RANGE(0x206c, 0x206d) AM_MIRROR(0x710) AM_WRITE(fire_2_w) + AM_RANGE(0x206e, 0x206f) AM_MIRROR(0x710) AM_WRITE(fire_1_w) AM_RANGE(0x2800, 0x2fff) AM_NOP /* diagnostic ROM */ AM_RANGE(0x3000, 0x3fff) AM_ROM @@ -302,7 +309,7 @@ static GFXDECODE_START( ultratnk ) GFXDECODE_END -static MACHINE_CONFIG_START( ultratnk, ultratnk_state ) +static MACHINE_CONFIG_START( ultratnk ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, PIXEL_CLOCK / 8) @@ -314,8 +321,8 @@ static MACHINE_CONFIG_START( ultratnk, ultratnk_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224) - MCFG_SCREEN_UPDATE_DRIVER(ultratnk_state, screen_update_ultratnk) - MCFG_SCREEN_VBLANK_DRIVER(ultratnk_state, screen_eof_ultratnk) + MCFG_SCREEN_UPDATE_DRIVER(ultratnk_state, screen_update) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ultratnk_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", ultratnk) @@ -358,4 +365,4 @@ ROM_START( ultratnk ) ROM_END -GAME( 1978, ultratnk, 0, ultratnk, ultratnk, driver_device, 0, 0, "Atari (Kee Games)", "Ultra Tank", 0 ) +GAME( 1978, ultratnk, 0, ultratnk, ultratnk, ultratnk_state, 0, 0, "Atari (Kee Games)", "Ultra Tank", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ultrsprt.cpp b/src/mame/drivers/ultrsprt.cpp index b60b1f91378..f0580d34fd6 100644 --- a/src/mame/drivers/ultrsprt.cpp +++ b/src/mame/drivers/ultrsprt.cpp @@ -210,7 +210,7 @@ void ultrsprt_state::machine_reset() /*****************************************************************************/ -static MACHINE_CONFIG_START( ultrsprt, ultrsprt_state ) +static MACHINE_CONFIG_START( ultrsprt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GA, 25000000) MCFG_CPU_PROGRAM_MAP(ultrsprt_map) @@ -266,4 +266,4 @@ ROM_START( fiveside ) ROM_END // Undumped: Ultra Hockey -GAME(1995, fiveside, 0, ultrsprt, ultrsprt, driver_device, 0, ROT90, "Konami", "Five a Side Soccer (ver UAA)", 0) +GAME(1995, fiveside, 0, ultrsprt, ultrsprt, ultrsprt_state, 0, ROT90, "Konami", "Five a Side Soccer (ver UAA)", 0) diff --git a/src/mame/drivers/umipoker.cpp b/src/mame/drivers/umipoker.cpp index 772dee4513c..63863c875f6 100644 --- a/src/mame/drivers/umipoker.cpp +++ b/src/mame/drivers/umipoker.cpp @@ -657,7 +657,7 @@ void umipoker_state::machine_reset() } // TODO: clocks -static MACHINE_CONFIG_START( umipoker, umipoker_state ) +static MACHINE_CONFIG_START( umipoker ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000,16000000) // TMP68HC000-16 @@ -693,7 +693,7 @@ static MACHINE_CONFIG_START( umipoker, umipoker_state ) MCFG_SOUND_ADD("ym", YM3812, 4000000 / 2) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_OKIM6295_ADD("oki", 4000000 / 2, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 4000000 / 2, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -763,6 +763,6 @@ DRIVER_INIT_MEMBER(umipoker_state,saiyukip) * Game Drivers * ******************************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT GAME( 1997, umipoker, 0, umipoker, umipoker, umipoker_state, umipoker, ROT0, "World Station Co.,LTD", "Umi de Poker / Marine Paradise (Japan)", 0 ) // title screen is toggleable thru a dsw GAMEL( 1998, saiyukip, 0, umipoker, saiyukip, umipoker_state, saiyukip, ROT0, "World Station Co.,LTD", "Slot Poker Saiyuki (Japan)", 0, layout_saiyukip ) diff --git a/src/mame/drivers/undrfire.cpp b/src/mame/drivers/undrfire.cpp index 21ba3b7481d..fa109834b19 100644 --- a/src/mame/drivers/undrfire.cpp +++ b/src/mame/drivers/undrfire.cpp @@ -676,7 +676,7 @@ INTERRUPT_GEN_MEMBER(undrfire_state::undrfire_interrupt) device.execute().set_input_line(4, HOLD_LINE); } -static MACHINE_CONFIG_START( undrfire, undrfire_state ) +static MACHINE_CONFIG_START( undrfire ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_40MHz/2) /* 20 MHz - NOT verified */ @@ -719,7 +719,7 @@ static MACHINE_CONFIG_START( undrfire, undrfire_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cbombers, undrfire_state ) +static MACHINE_CONFIG_START( cbombers ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_40MHz/2) /* 20 MHz - NOT verified */ @@ -1158,9 +1158,9 @@ DRIVER_INIT_MEMBER(undrfire_state,cbombers) -GAME( 1993, undrfire, 0, undrfire, undrfire, undrfire_state, undrfire, ROT0, "Taito Corporation Japan", "Under Fire (World)", 0 ) -GAME( 1993, undrfireu, undrfire, undrfire, undrfire, undrfire_state, undrfire, ROT0, "Taito America Corporation", "Under Fire (US)", 0 ) -GAME( 1993, undrfirej, undrfire, undrfire, undrfire, undrfire_state, undrfire, ROT0, "Taito Corporation", "Under Fire (Japan)", 0 ) -GAMEL(1994, cbombers, 0, cbombers, cbombers, undrfire_state, cbombers, ROT0, "Taito Corporation Japan", "Chase Bombers (World)", MACHINE_IMPERFECT_GRAPHICS, layout_cbombers ) -GAMEL(1994, cbombersj, cbombers, cbombers, cbombers, undrfire_state, cbombers, ROT0, "Taito Corporation", "Chase Bombers (Japan)", MACHINE_IMPERFECT_GRAPHICS, layout_cbombers ) +GAME( 1993, undrfire, 0, undrfire, undrfire, undrfire_state, undrfire, ROT0, "Taito Corporation Japan", "Under Fire (World)", 0 ) +GAME( 1993, undrfireu, undrfire, undrfire, undrfire, undrfire_state, undrfire, ROT0, "Taito America Corporation", "Under Fire (US)", 0 ) +GAME( 1993, undrfirej, undrfire, undrfire, undrfire, undrfire_state, undrfire, ROT0, "Taito Corporation", "Under Fire (Japan)", 0 ) +GAMEL(1994, cbombers, 0, cbombers, cbombers, undrfire_state, cbombers, ROT0, "Taito Corporation Japan", "Chase Bombers (World)", MACHINE_IMPERFECT_GRAPHICS, layout_cbombers ) +GAMEL(1994, cbombersj, cbombers, cbombers, cbombers, undrfire_state, cbombers, ROT0, "Taito Corporation", "Chase Bombers (Japan)", MACHINE_IMPERFECT_GRAPHICS, layout_cbombers ) GAMEL(1994, cbombersp, cbombers, cbombers, cbombers, undrfire_state, cbombers, ROT0, "Taito Corporation", "Chase Bombers (Japan Prototype)", MACHINE_IMPERFECT_GRAPHICS, layout_cbombers ) diff --git a/src/mame/drivers/unichamp.cpp b/src/mame/drivers/unichamp.cpp index abb021d6cf3..c6f23d02f62 100644 --- a/src/mame/drivers/unichamp.cpp +++ b/src/mame/drivers/unichamp.cpp @@ -71,8 +71,8 @@ public: DECLARE_READ8_MEMBER(bext_r); - DECLARE_READ16_MEMBER(unichamp_gicram_r); - DECLARE_WRITE16_MEMBER(unichamp_gicram_w); + DECLARE_READ8_MEMBER(unichamp_gicram_r); + DECLARE_WRITE8_MEMBER(unichamp_gicram_w); DECLARE_READ16_MEMBER(unichamp_trapl_r); DECLARE_WRITE16_MEMBER(unichamp_trapl_w); @@ -104,7 +104,7 @@ PALETTE_INIT_MEMBER(unichamp_state, unichamp) static ADDRESS_MAP_START( unichamp_mem, AS_PROGRAM, 16, unichamp_state ) ADDRESS_MAP_GLOBAL_MASK(0x1FFF) //B13/B14/B15 are grounded! - AM_RANGE(0x0000, 0x00FF) AM_READWRITE(unichamp_gicram_r, unichamp_gicram_w) + AM_RANGE(0x0000, 0x00FF) AM_READWRITE8(unichamp_gicram_r, unichamp_gicram_w, 0x00ff) AM_RANGE(0x0100, 0x07FF) AM_READWRITE(unichamp_trapl_r, unichamp_trapl_w) AM_RANGE(0x0800, 0x17FF) AM_ROM AM_REGION("maincpu", 0x0800 << 1) // Carts and EXE ROM, 10-bits wide ADDRESS_MAP_END @@ -152,13 +152,10 @@ READ8_MEMBER(unichamp_state::bext_r) DRIVER_INIT_MEMBER(unichamp_state,unichamp) { - m_gic->set_shared_memory(m_ram); } void unichamp_state::machine_start() { - m_gic->set_shared_memory(m_ram); - if (m_cart->exists()){ //flip endians in more "this surely exists in MAME" way? //NOTE The unichamp roms have the same endianness as intv on disk and in memory @@ -195,7 +192,7 @@ void unichamp_state::machine_reset() m_maincpu->set_input_line_vector(CP1610_INT_INTR, 0x0804);//not used anyway /* Set initial PC */ - m_maincpu->set_state_int(CP1610_R7, 0x0800); + m_maincpu->set_state_int(cp1610_cpu_device::CP1610_R7, 0x0800); } @@ -204,14 +201,14 @@ uint32_t unichamp_state::screen_update_unichamp(screen_device &screen, bitmap_in return m_gic->screen_update(screen, bitmap, cliprect); } -READ16_MEMBER( unichamp_state::unichamp_gicram_r ) +READ8_MEMBER( unichamp_state::unichamp_gicram_r ) { - return (int)m_ram[offset]; + return m_ram[offset]; } -WRITE16_MEMBER( unichamp_state::unichamp_gicram_w ) +WRITE8_MEMBER( unichamp_state::unichamp_gicram_w ) { - m_ram[offset] = data&0xff; + m_ram[offset] = data; } READ16_MEMBER( unichamp_state::unichamp_trapl_r ) @@ -225,7 +222,7 @@ WRITE16_MEMBER( unichamp_state::unichamp_trapl_w ) logerror("trapl_w(%x) = %x\n",offset,data); } -static MACHINE_CONFIG_START( unichamp, unichamp_state ) +static MACHINE_CONFIG_START( unichamp ) /* basic machine hardware */ //The CPU is really clocked this way: @@ -256,7 +253,7 @@ static MACHINE_CONFIG_START( unichamp, unichamp_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_GIC_ADD( "gic", XTAL_3_579545MHz, "screen" ) + MCFG_GIC_ADD( "gic", XTAL_3_579545MHz, "screen", READ8(unichamp_state, unichamp_gicram_r) ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) /* cartridge */ @@ -280,4 +277,4 @@ ROM_START(unichamp) ROM_END -CONS( 1977, unichamp, 0, 0, unichamp, unichamp, unichamp_state, unichamp, "Unisonic", "Champion 2711", 0/*MACHINE_IMPERFECT_GRAPHICS*/) +CONS( 1977, unichamp, 0, 0, unichamp, unichamp, unichamp_state, unichamp, "Unisonic", "Champion 2711", 0/*MACHINE_IMPERFECT_GRAPHICS*/ ) diff --git a/src/mame/drivers/unico.cpp b/src/mame/drivers/unico.cpp index 0cd5aa02ebd..9bf32b2bf31 100644 --- a/src/mame/drivers/unico.cpp +++ b/src/mame/drivers/unico.cpp @@ -570,7 +570,7 @@ MACHINE_RESET_MEMBER(unico_state,unico) Burglar X ***************************************************************************/ -static MACHINE_CONFIG_START( burglarx, unico_state ) +static MACHINE_CONFIG_START( burglarx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz */ @@ -600,7 +600,7 @@ static MACHINE_CONFIG_START( burglarx, unico_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) MACHINE_CONFIG_END @@ -616,7 +616,7 @@ MACHINE_RESET_MEMBER(unico_state,zeropt) MACHINE_RESET_CALL_MEMBER(unico); } -static MACHINE_CONFIG_START( zeropnt, unico_state ) +static MACHINE_CONFIG_START( zeropnt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) /* 16MHz */ @@ -646,7 +646,7 @@ static MACHINE_CONFIG_START( zeropnt, unico_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) - MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) MACHINE_CONFIG_END @@ -657,7 +657,7 @@ MACHINE_CONFIG_END Zero Point 2 ***************************************************************************/ -static MACHINE_CONFIG_START( zeropnt2, unico_state ) +static MACHINE_CONFIG_START( zeropnt2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC020, XTAL_32MHz/2) /* 16MHz */ @@ -689,11 +689,11 @@ static MACHINE_CONFIG_START( zeropnt2, unico_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.70) MCFG_SOUND_ROUTE(1, "rspeaker", 0.70) - MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/32, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40) - MCFG_OKIM6295_ADD("oki2", XTAL_14_31818MHz/4, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki2", XTAL_14_31818MHz/4, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.20) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.20) MACHINE_CONFIG_END @@ -1050,8 +1050,8 @@ ROM_END ***************************************************************************/ -GAME( 1997, burglarx, 0, burglarx, burglarx, driver_device, 0, ROT0, "Unico", "Burglar X" , 0 ) -GAME( 1998, zeropnt, 0, zeropnt, zeropnt, driver_device, 0, ROT0, "Unico", "Zero Point (set 1)", 0 ) -GAME( 1998, zeropnta, zeropnt, zeropnt, zeropnt, driver_device, 0, ROT0, "Unico", "Zero Point (set 2)", 0 ) -GAME( 1998, zeropntj, zeropnt, zeropnt, zeropnt, driver_device, 0, ROT0, "Unico", "Zero Point (Japan)", 0 ) -GAME( 1999, zeropnt2, 0, zeropnt2, zeropnt2, driver_device, 0, ROT0, "Unico", "Zero Point 2", 0 ) +GAME( 1997, burglarx, 0, burglarx, burglarx, unico_state, 0, ROT0, "Unico", "Burglar X" , 0 ) +GAME( 1998, zeropnt, 0, zeropnt, zeropnt, unico_state, 0, ROT0, "Unico", "Zero Point (set 1)", 0 ) +GAME( 1998, zeropnta, zeropnt, zeropnt, zeropnt, unico_state, 0, ROT0, "Unico", "Zero Point (set 2)", 0 ) +GAME( 1998, zeropntj, zeropnt, zeropnt, zeropnt, unico_state, 0, ROT0, "Unico", "Zero Point (Japan)", 0 ) +GAME( 1999, zeropnt2, 0, zeropnt2, zeropnt2, unico_state, 0, ROT0, "Unico", "Zero Point 2", 0 ) diff --git a/src/mame/drivers/unior.cpp b/src/mame/drivers/unior.cpp index cc32d924c4a..cbeb12284ca 100644 --- a/src/mame/drivers/unior.cpp +++ b/src/mame/drivers/unior.cpp @@ -380,10 +380,10 @@ WRITE_LINE_MEMBER( unior_state::hrq_w ) void unior_state::machine_reset() { - m_maincpu->set_state_int(I8085_PC, 0xF800); + m_maincpu->set_state_int(i8080_cpu_device::I8085_PC, 0xF800); } -static MACHINE_CONFIG_START( unior, unior_state ) +static MACHINE_CONFIG_START( unior ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_20MHz / 9) MCFG_CPU_PROGRAM_MAP(unior_mem) @@ -455,5 +455,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 19??, unior, radio86, 0, unior, unior, driver_device, 0, "", "Unior", MACHINE_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 19??, unior, radio86, 0, unior, unior, unior_state, 0, "", "Unior", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/unistar.cpp b/src/mame/drivers/unistar.cpp index fc141caecb6..ffc6434301a 100644 --- a/src/mame/drivers/unistar.cpp +++ b/src/mame/drivers/unistar.cpp @@ -86,7 +86,7 @@ static GFXDECODE_START( unistar ) GFXDECODE_ENTRY( "chargen", 0x0000, unistar_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( unistar, unistar_state ) +static MACHINE_CONFIG_START( unistar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8085A, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(unistar_mem) @@ -119,5 +119,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, unistar, 0, 0, unistar, unistar, driver_device, 0, "Callan Data Systems", "Unistar 200 Terminal", MACHINE_IS_SKELETON ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 198?, unistar, 0, 0, unistar, unistar, unistar_state, 0, "Callan Data Systems", "Unistar 200 Terminal", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/univac.cpp b/src/mame/drivers/univac.cpp index 88a78da0e6c..5cd68b651d0 100644 --- a/src/mame/drivers/univac.cpp +++ b/src/mame/drivers/univac.cpp @@ -167,7 +167,7 @@ static const z80_daisy_config daisy_chain[] = { nullptr } }; -static MACHINE_CONFIG_START( uts20, univac_state ) +static MACHINE_CONFIG_START( uts20 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) // unknown clock MCFG_CPU_PROGRAM_MAP(uts20_mem) @@ -211,5 +211,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, uts20, 0, 0, uts20, uts20, driver_device, 0, "Sperry Univac", "UTS-20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1980, uts20, 0, 0, uts20, uts20, univac_state, 0, "Sperry Univac", "UTS-20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/unixpc.cpp b/src/mame/drivers/unixpc.cpp index 2eb0c34cca2..4f5102e862e 100644 --- a/src/mame/drivers/unixpc.cpp +++ b/src/mame/drivers/unixpc.cpp @@ -45,7 +45,7 @@ public: required_device m_maincpu; required_device m_ram; - required_device m_wd2797; + required_device m_wd2797; required_device m_floppy; required_device m_ramrombank; @@ -283,7 +283,7 @@ static ADDRESS_MAP_START( unixpc_mem, AS_PROGRAM, 16, unixpc_state ) AM_RANGE(0x4d0000, 0x4d7fff) AM_WRITE(diskdma_ptr_w) AM_RANGE(0x4e0000, 0x4e0001) AM_WRITE(disk_control_w) AM_RANGE(0x800000, 0x803fff) AM_MIRROR(0x7fc000) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0xe10000, 0xe10007) AM_DEVREADWRITE8("wd2797", wd_fdc_t, read, write, 0x00ff) + AM_RANGE(0xe10000, 0xe10007) AM_DEVREADWRITE8("wd2797", wd_fdc_device_base, read, write, 0x00ff) AM_RANGE(0xe30000, 0xe30001) AM_READ(rtc_r) AM_RANGE(0xe40000, 0xe40001) AM_WRITE(error_enable_w) AM_RANGE(0xe41000, 0xe41001) AM_WRITE(parity_enable_w) @@ -313,7 +313,7 @@ static SLOT_INTERFACE_START( unixpc_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( unixpc, unixpc_state ) +static MACHINE_CONFIG_START( unixpc ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68010, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(unixpc_mem) @@ -365,5 +365,5 @@ ROM_END GAME DRIVERS ***************************************************************************/ -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1985, 3b1, 0, 0, unixpc, unixpc, driver_device, 0, "AT&T", "3B1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, 3b1, 0, 0, unixpc, unixpc, unixpc_state, 0, "AT&T", "3B1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/unkhorse.cpp b/src/mame/drivers/unkhorse.cpp index 67460abb150..596f86f2418 100644 --- a/src/mame/drivers/unkhorse.cpp +++ b/src/mame/drivers/unkhorse.cpp @@ -191,7 +191,7 @@ INTERRUPT_GEN_MEMBER(horse_state::interrupt) device.execute().set_input_line(I8085_RST75_LINE, CLEAR_LINE); } -static MACHINE_CONFIG_START( horse, horse_state ) +static MACHINE_CONFIG_START( horse ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_12MHz / 2) @@ -240,4 +240,4 @@ ROM_START( unkhorse ) ROM_END -GAME( 1981?, unkhorse, 0, horse, horse, driver_device, 0, ROT270, "", "unknown Japanese horse gambling game", MACHINE_SUPPORTS_SAVE ) // copyright not shown, datecodes on pcb suggests early-1981 +GAME( 1981?, unkhorse, 0, horse, horse, horse_state, 0, ROT270, "", "unknown Japanese horse gambling game", MACHINE_SUPPORTS_SAVE ) // copyright not shown, datecodes on pcb suggests early-1981 diff --git a/src/mame/drivers/upscope.cpp b/src/mame/drivers/upscope.cpp index e82ca3eb601..ac732c80370 100644 --- a/src/mame/drivers/upscope.cpp +++ b/src/mame/drivers/upscope.cpp @@ -28,6 +28,7 @@ #include "emu.h" #include "includes/amiga.h" #include "cpu/m68000/m68000.h" +#include "machine/i8255.h" #include "machine/nvram.h" #include "machine/amigafdc.h" #include "speaker.h" @@ -39,7 +40,8 @@ public: upscope_state(const machine_config &mconfig, device_type type, const char *tag) : amiga_state(mconfig, type, tag), m_prev_cia1_porta(0xff), - m_parallel_data(0xff) + m_parallel_data(0xff), + m_ppi(*this, "ppi") { } uint8_t m_nvram[0x100]; @@ -53,10 +55,16 @@ public: DECLARE_READ8_MEMBER(upscope_cia_1_porta_r); DECLARE_WRITE8_MEMBER(upscope_cia_1_porta_w); + DECLARE_WRITE8_MEMBER(lamps_w); + DECLARE_WRITE8_MEMBER(coin_counter_w); + DECLARE_DRIVER_INIT(upscope); protected: virtual void machine_reset() override; + +private: + required_device m_ppi; }; @@ -132,34 +140,7 @@ WRITE8_MEMBER( upscope_state::upscope_cia_1_porta_w ) /* if SEL == 1 && BUSY == 1, we write data to internal registers */ else if ((data & 5) == 5) { - switch (m_nvram_address_latch) - { - case 0x01: - /* lamps: - 01 = Enemy Right - 02 = Enemy Left - 04 = Torpedo 1 - 08 = Torpedo 2 - 10 = Torpedo 3 - 20 = Torpedo 4 - 40 = Sight - 80 = Bubble Light - */ - break; - - case 0x02: - /* coin counter */ - machine().bookkeeping().coin_counter_w(0, data & 1); - break; - - case 0x03: - /* Written $98 at startup and nothing afterwards */ - break; - - default: - logerror("Internal register (%d) = %02X\n", m_nvram_address_latch, m_parallel_data); - break; - } + m_ppi->write(space, m_nvram_address_latch & 0x03, m_parallel_data); } /* if SEL == 0 && BUSY == 1, we write data to NVRAM */ @@ -183,7 +164,7 @@ WRITE8_MEMBER( upscope_state::upscope_cia_1_porta_w ) if (data & 4) { if (LOG_IO) logerror("Internal register (%d) read\n", m_nvram_address_latch); - m_nvram_data_latch = (m_nvram_address_latch == 0) ? ioport("IO0")->read() : 0xff; + m_nvram_data_latch = m_ppi->read(space, m_nvram_address_latch & 0x03); } /* if SEL == 0, we read NVRAM */ @@ -198,6 +179,22 @@ WRITE8_MEMBER( upscope_state::upscope_cia_1_porta_w ) m_prev_cia1_porta = data; } +WRITE8_MEMBER( upscope_state::lamps_w ) +{ + // 7------- bubble light + // -6------ sight + // --5----- torpedo 4 + // ---4---- torpedo 3 + // ----3--- torpedo 2 + // -----2-- torpedo 1 + // ------1- enemy left + // -------0 enemy right +} + +WRITE8_MEMBER( upscope_state::coin_counter_w ) +{ + machine().bookkeeping().coin_counter_w(0, data & 1); +} /************************************* @@ -259,7 +256,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( upscope, upscope_state ) +static MACHINE_CONFIG_START( upscope ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_NTSC) @@ -307,6 +304,12 @@ static MACHINE_CONFIG_START( upscope, upscope_state ) /* fdc */ MCFG_DEVICE_ADD("fdc", AMIGA_FDC, amiga_state::CLK_7M_NTSC) MCFG_AMIGA_FDC_INDEX_CALLBACK(DEVWRITELINE("cia_1", mos8520_device, flag_w)) + + // i/o extension + MCFG_DEVICE_ADD("ppi", I8255, 0) + MCFG_I8255_IN_PORTA_CB(IOPORT("IO0")) + MCFG_I8255_OUT_PORTB_CB(WRITE8(upscope_state, lamps_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(upscope_state, coin_counter_w)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/usbilliards.cpp b/src/mame/drivers/usbilliards.cpp new file mode 100644 index 00000000000..535b22d4852 --- /dev/null +++ b/src/mame/drivers/usbilliards.cpp @@ -0,0 +1,138 @@ +// license:BSD-3-Clause +// copyright-holders:Stiletto +/*************************************************************************** + + US Billiards TTL Games + + Game Name DATA + ------------------------------------- + TV Tennis (1973/03,11?) NO + TV Hockey? (1973) UNKNOWN + Survival (1975/02-03?) UNKNOWN + Shark (1975/11) YES + Space Battle (1977/10-12?) UNKNOWN + Variety TV (1978/09) UNKNOWN + + ***************************************************************************/ + + +#include "emu.h" + +#include "machine/netlist.h" +#include "netlist/devices/net_lib.h" +#include "video/fixfreq.h" + +// copied from Pong, not accurate for this driver! +// start +#define MASTER_CLOCK 7159000 +#define V_TOTAL (0x105+1) // 262 +#define H_TOTAL (0x1C6+1) // 454 + +#define HBSTART (H_TOTAL) +#define HBEND (80) +#define VBSTART (V_TOTAL) +#define VBEND (16) + +#define HRES_MULT (1) +// end + + +class usbilliards_state : public driver_device +{ +public: + usbilliards_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_video(*this, "fixfreq") + { + } + + // devices + required_device m_maincpu; + required_device m_video; + +protected: + + // driver_device overrides + virtual void machine_start() override; + virtual void machine_reset() override; + + virtual void video_start() override; + +private: + +}; + + +static NETLIST_START(usbilliards) + SOLVER(Solver, 48000) +// PARAM(Solver.FREQ, 48000) + PARAM(Solver.ACCURACY, 1e-4) // works and is sufficient + + // schematics + //... + + // NETDEV_ANALOG_CALLBACK(sound_cb, sound, usbilliards_state, sound_cb, "") + // NETDEV_ANALOG_CALLBACK(video_cb, videomix, fixedfreq_device, update_vid, "fixfreq") +NETLIST_END() + + + +void usbilliards_state::machine_start() +{ +} + +void usbilliards_state::machine_reset() +{ +} + + +void usbilliards_state::video_start() +{ +} + +static MACHINE_CONFIG_START( usbilliards ) + + /* basic machine hardware */ + MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) + MCFG_NETLIST_SETUP(usbilliards) + + /* video hardware */ + MCFG_FIXFREQ_ADD("fixfreq", "screen") + MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK) + MCFG_FIXFREQ_HORZ_PARAMS(H_TOTAL-67,H_TOTAL-40,H_TOTAL-8,H_TOTAL) + MCFG_FIXFREQ_VERT_PARAMS(V_TOTAL-22,V_TOTAL-19,V_TOTAL-12,V_TOTAL) + MCFG_FIXFREQ_FIELDCOUNT(1) + MCFG_FIXFREQ_SYNC_THRESHOLD(0.30) +MACHINE_CONFIG_END + + +/*************************************************************************** + + Game driver(s) + + ***************************************************************************/ + +/* +Shark by U.S. Billiards + +Etched in copper on Top (C) 1975 + 010 + 1SCOOP J6 2SCOOP + +Handwritten on top J0037 + 124 + +empty socket at 5M C etched in copper next to socket + +*/ + +ROM_START( sharkusb ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) + + ROM_REGION( 0x0200, "roms", ROMREGION_ERASE00 ) + ROM_LOAD( "82s123_b.5n", 0x0000, 0x0100, CRC(91b977b3) SHA1(37929f6049dea0ebed2c01ae20354e41c867b8f9) ) // 82s123 - handwritten B - B also etched in copper next to socket + ROM_LOAD( "82s123_a.6n", 0x0100, 0x0100, CRC(63f621cb) SHA1(6c6e6f22313db33afd069dae1b0180b5ccddfa56) ) // 82s123 - handwritten A - A also etched in copper next to socket +ROM_END + +GAME( 1975, sharkusb, 0, usbilliards, 0, usbilliards_state, 0, ROT0, "US Billiards Inc.", "Shark [TTL]", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/usgames.cpp b/src/mame/drivers/usgames.cpp index 055c580a33e..3724fd62b56 100644 --- a/src/mame/drivers/usgames.cpp +++ b/src/mame/drivers/usgames.cpp @@ -217,7 +217,7 @@ static GFXDECODE_START( usgames ) GFXDECODE_END -static MACHINE_CONFIG_START( usg32, usgames_state ) +static MACHINE_CONFIG_START( usg32 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) /* ?? */ @@ -405,11 +405,11 @@ ROM_START( usg182 ) /* Version 18.2 */ ROM_END -GAME( 1987, usg32, 0, usg32, usg32, driver_device, 0, ROT0, "U.S. Games", "Super Duper Casino (California V3.2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, superten, 0, usg32, usg83, driver_device, 0, ROT0, "U.S. Games", "Super Ten V8.3", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, usg83x, superten, usg32, usg83, driver_device, 0, ROT0, "U.S. Games", "Super Ten V8.3X", MACHINE_SUPPORTS_SAVE ) /* "Experimental" version?? */ -GAME( 1988, usg82, superten, usg32, usg83, driver_device, 0, ROT0, "U.S. Games", "Super Ten V8.2" , MACHINE_SUPPORTS_SAVE ) -GAME( 1992, usgames, 0, usg185, usg83, driver_device, 0, ROT0, "U.S. Games", "Games V25.4X", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, usg187c, usgames, usg185, usg83, driver_device, 0, ROT0, "U.S. Games", "Games V18.7C", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, usg185, usgames, usg185, usg83, driver_device, 0, ROT0, "U.S. Games", "Games V18.5", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, usg182, usgames, usg185, usg83, driver_device, 0, ROT0, "U.S. Games", "Games V18.2", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, usg32, 0, usg32, usg32, usgames_state, 0, ROT0, "U.S. Games", "Super Duper Casino (California V3.2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, superten, 0, usg32, usg83, usgames_state, 0, ROT0, "U.S. Games", "Super Ten V8.3", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, usg83x, superten, usg32, usg83, usgames_state, 0, ROT0, "U.S. Games", "Super Ten V8.3X", MACHINE_SUPPORTS_SAVE ) /* "Experimental" version?? */ +GAME( 1988, usg82, superten, usg32, usg83, usgames_state, 0, ROT0, "U.S. Games", "Super Ten V8.2" , MACHINE_SUPPORTS_SAVE ) +GAME( 1992, usgames, 0, usg185, usg83, usgames_state, 0, ROT0, "U.S. Games", "Games V25.4X", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, usg187c, usgames, usg185, usg83, usgames_state, 0, ROT0, "U.S. Games", "Games V18.7C", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, usg185, usgames, usg185, usg83, usgames_state, 0, ROT0, "U.S. Games", "Games V18.5", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, usg182, usgames, usg185, usg83, usgames_state, 0, ROT0, "U.S. Games", "Games V18.2", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ut88.cpp b/src/mame/drivers/ut88.cpp index 2a1ea0fbec1..ad8ef9be646 100644 --- a/src/mame/drivers/ut88.cpp +++ b/src/mame/drivers/ut88.cpp @@ -183,7 +183,7 @@ static INPUT_PORTS_START( ut88mini ) INPUT_PORTS_END /* Machine driver */ -static MACHINE_CONFIG_START( ut88, ut88_state ) +static MACHINE_CONFIG_START( ut88 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 2000000) MCFG_CPU_PROGRAM_MAP(ut88_mem) @@ -226,7 +226,7 @@ static MACHINE_CONFIG_START( ut88, ut88_state ) MCFG_SOFTWARE_LIST_ADD("cass_list","ut88") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ut88mini, ut88_state ) +static MACHINE_CONFIG_START( ut88mini ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 2000000) MCFG_CPU_PROGRAM_MAP(ut88mini_mem) @@ -268,6 +268,6 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ COMP( 1989, ut88mini, 0, 0, ut88mini, ut88mini, ut88_state, ut88mini, "", "UT-88 mini", 0) -COMP( 1989, ut88, ut88mini, 0, ut88, ut88, ut88_state, ut88, "", "UT-88", 0) +COMP( 1989, ut88, ut88mini, 0, ut88, ut88, ut88_state, ut88, "", "UT-88", 0) diff --git a/src/mame/drivers/uzebox.cpp b/src/mame/drivers/uzebox.cpp index 1f07f7a1372..394630ed8de 100644 --- a/src/mame/drivers/uzebox.cpp +++ b/src/mame/drivers/uzebox.cpp @@ -273,7 +273,7 @@ DEVICE_IMAGE_LOAD_MEMBER(uzebox_state, uzebox_cart) * Machine definition * \****************************************************/ -static MACHINE_CONFIG_START( uzebox, uzebox_state ) +static MACHINE_CONFIG_START( uzebox ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ATMEGA644, MASTER_CLOCK) @@ -312,5 +312,5 @@ ROM_START( uzebox ) ROM_REGION( 0x800, "eeprom", ROMREGION_ERASE00 ) /* on-die eeprom */ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS(2010, uzebox, 0, 0, uzebox, uzebox, driver_device, 0, "Belogic", "Uzebox", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ +CONS(2010, uzebox, 0, 0, uzebox, uzebox, uzebox_state, 0, "Belogic", "Uzebox", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/v1050.cpp b/src/mame/drivers/v1050.cpp index 899640d33d1..ce065995414 100644 --- a/src/mame/drivers/v1050.cpp +++ b/src/mame/drivers/v1050.cpp @@ -486,7 +486,7 @@ static ADDRESS_MAP_START( v1050_io, AS_IO, 8, v1050_state ) AM_RANGE(0x8c, 0x8c) AM_DEVREADWRITE(I8251A_SIO_TAG, i8251_device, data_r, data_w) AM_RANGE(0x8d, 0x8d) AM_DEVREADWRITE(I8251A_SIO_TAG, i8251_device, status_r, control_w) AM_RANGE(0x90, 0x93) AM_DEVREADWRITE(I8255A_MISC_TAG, i8255_device, read, write) - AM_RANGE(0x94, 0x97) AM_DEVREADWRITE(MB8877_TAG, mb8877_t, read, write) + AM_RANGE(0x94, 0x97) AM_DEVREADWRITE(MB8877_TAG, mb8877_device, read, write) AM_RANGE(0x9c, 0x9f) AM_DEVREADWRITE(I8255A_RTC_TAG, i8255_device, read, write) AM_RANGE(0xa0, 0xa0) AM_READWRITE(vint_clr_r, vint_clr_w) AM_RANGE(0xb0, 0xb0) AM_READWRITE(dint_clr_r, dint_clr_w) @@ -1020,7 +1020,7 @@ void v1050_state::machine_reset() // Machine Driver -static MACHINE_CONFIG_START( v1050, v1050_state ) +static MACHINE_CONFIG_START( v1050 ) // basic machine hardware MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_16MHz/4) MCFG_CPU_PROGRAM_MAP(v1050_mem) @@ -1149,5 +1149,5 @@ ROM_END // System Drivers -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1983, v1050, 0, 0, v1050, v1050, driver_device, 0, "Visual Technology Inc", "Visual 1050", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_KEYBOARD ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1983, v1050, 0, 0, v1050, v1050, v1050_state, 0, "Visual Technology Inc", "Visual 1050", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_KEYBOARD ) diff --git a/src/mame/drivers/v6809.cpp b/src/mame/drivers/v6809.cpp index 66540576ac6..47b8037c64e 100644 --- a/src/mame/drivers/v6809.cpp +++ b/src/mame/drivers/v6809.cpp @@ -90,7 +90,7 @@ public: DECLARE_WRITE8_MEMBER(videoram_w); DECLARE_WRITE8_MEMBER(v6809_address_w); DECLARE_WRITE8_MEMBER(v6809_register_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE_LINE_MEMBER(write_acia_clock); DECLARE_MACHINE_RESET(v6809); MC6845_UPDATE_ROW(crtc_update_row); @@ -105,7 +105,7 @@ private: required_device m_pia0; required_device m_maincpu; required_device m_crtc; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_speaker; required_device m_acia0; @@ -126,7 +126,7 @@ static ADDRESS_MAP_START(v6809_mem, AS_PROGRAM, 8, v6809_state) AM_RANGE(0xf501, 0xf501) AM_MIRROR(0x36) AM_DEVREADWRITE("acia0", acia6850_device, data_r, data_w) AM_RANGE(0xf508, 0xf508) AM_MIRROR(0x36) AM_DEVREADWRITE("acia1", acia6850_device, status_r, control_w) // printer AM_RANGE(0xf509, 0xf509) AM_MIRROR(0x36) AM_DEVREADWRITE("acia1", acia6850_device, data_r, data_w) - AM_RANGE(0xf600, 0xf603) AM_MIRROR(0x3c) AM_DEVREADWRITE("fdc", mb8876_t, read, write) + AM_RANGE(0xf600, 0xf603) AM_MIRROR(0x3c) AM_DEVREADWRITE("fdc", mb8876_device, read, write) AM_RANGE(0xf640, 0xf64f) AM_MIRROR(0x30) AM_DEVREADWRITE("rtc", mm58274c_device, read, write) AM_RANGE(0xf680, 0xf683) AM_MIRROR(0x3c) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0xf6c0, 0xf6c7) AM_MIRROR(0x08) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) @@ -231,7 +231,7 @@ WRITE8_MEMBER( v6809_state::v6809_register_w ) // **** Keyboard **** -WRITE8_MEMBER( v6809_state::kbd_put ) +void v6809_state::kbd_put(u8 data) { m_term_data = data; m_pia0->cb1_w(0); @@ -293,7 +293,7 @@ SLOT_INTERFACE_END // *** Machine **** -static MACHINE_CONFIG_START( v6809, v6809_state ) +static MACHINE_CONFIG_START( v6809 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(v6809_mem) @@ -323,7 +323,7 @@ static MACHINE_CONFIG_START( v6809, v6809_state ) MCFG_MC6845_ADDR_CHANGED_CB(v6809_state, crtc_update_addr) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(v6809_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(v6809_state, kbd_put)) // port A = drive select and 2 control lines ; port B = keyboard // CB2 connects to the interrupt pin of the RTC (the rtc code doesn't support it) @@ -376,5 +376,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, v6809, 0, 0, v6809, v6809, driver_device, 0, "Microkit", "Vegas 6809", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, v6809, 0, 0, v6809, v6809, v6809_state, 0, "Microkit", "Vegas 6809", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/vamphalf.cpp b/src/mame/drivers/vamphalf.cpp index 06a5b2abfde..9e83dade2a0 100644 --- a/src/mame/drivers/vamphalf.cpp +++ b/src/mame/drivers/vamphalf.cpp @@ -983,7 +983,7 @@ static GFXDECODE_START( vamphalf ) GFXDECODE_END -static MACHINE_CONFIG_START( common, vamphalf_state ) +static MACHINE_CONFIG_START( common ) MCFG_CPU_ADD("maincpu", E116T, 50000000) /* 50 MHz */ MCFG_CPU_PROGRAM_MAP(common_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", vamphalf_state, irq1_line_hold) @@ -1014,7 +1014,7 @@ static MACHINE_CONFIG_FRAGMENT( sound_ym_oki ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_28MHz/16 , OKIM6295_PIN7_HIGH) /* 1.75MHz */ + MCFG_OKIM6295_ADD("oki", XTAL_28MHz/16 , PIN7_HIGH) /* 1.75MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -1026,7 +1026,7 @@ static MACHINE_CONFIG_FRAGMENT( sound_suplup ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki", XTAL_14_31818MHz/8, OKIM6295_PIN7_HIGH) /* 1.7897725 MHz */ + MCFG_OKIM6295_ADD("oki", XTAL_14_31818MHz/8, PIN7_HIGH) /* 1.7897725 MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -1123,7 +1123,7 @@ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( aoh, vamphalf_state ) +static MACHINE_CONFIG_START( aoh ) MCFG_CPU_ADD("maincpu", E132XN, XTAL_20MHz*4) /* 4x internal multiplier */ MCFG_CPU_PROGRAM_MAP(aoh_map) MCFG_CPU_IO_MAP(aoh_io) @@ -1151,11 +1151,11 @@ static MACHINE_CONFIG_START( aoh, vamphalf_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki_1", XTAL_32MHz/8, OKIM6295_PIN7_HIGH) /* 4MHz */ + MCFG_OKIM6295_ADD("oki_1", XTAL_32MHz/8, PIN7_HIGH) /* 4MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - MCFG_OKIM6295_ADD("oki_2", XTAL_32MHz/32, OKIM6295_PIN7_HIGH) /* 1MHz */ + MCFG_OKIM6295_ADD("oki_2", XTAL_32MHz/32, PIN7_HIGH) /* 1MHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -2990,27 +2990,27 @@ DRIVER_INIT_MEMBER(vamphalf_state,boonggab) m_flip_bit = 1; } -GAME( 1999, coolmini, 0, coolmini, common, vamphalf_state, coolmini, ROT0, "SemiCom", "Cool Minigame Collection", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, jmpbreak, 0, jmpbreak, common, vamphalf_state, jmpbreak, ROT0, "F2 System", "Jumping Break" , MACHINE_SUPPORTS_SAVE ) -GAME( 1999, suplup, 0, suplup, common, vamphalf_state, suplup, ROT0, "Omega System", "Super Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 4.0 / 990518)" , MACHINE_SUPPORTS_SAVE ) -GAME( 1999, luplup, suplup, suplup, common, vamphalf_state, luplup, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 3.0 / 990128)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, luplup29, suplup, suplup, common, vamphalf_state, luplup29, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 2.9 / 990108)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, puzlbang, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.9 / 990108)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, puzlbanga, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.8 / 990106)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, vamphalf, 0, vamphalf, common, vamphalf_state, vamphalf, ROT0, "Danbi / F2 System", "Vamf x1/2 (Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, vamphalfk, vamphalf, vamphalf, common, vamphalf_state, vamphafk, ROT0, "Danbi / F2 System", "Vamp x1/2 (Korea)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, dquizgo2, 0, coolmini, common, vamphalf_state, dquizgo2, ROT0, "SemiCom", "Date Quiz Go Go Episode 2" , MACHINE_SUPPORTS_SAVE ) -GAME( 2000, misncrft, 0, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.7)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2000, misncrfta, misncrft, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.4)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2000, mrdig, 0, mrdig, common, vamphalf_state, mrdig, ROT0, "Sun", "Mr. Dig", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, dtfamily, 0, coolmini, common, vamphalf_state, dtfamily, ROT0, "SemiCom", "Diet Family", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, finalgdr, 0, finalgdr, finalgdr, vamphalf_state, finalgdr, ROT0, "SemiCom", "Final Godori (Korea, version 2.20.5915)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, mrkicker, 0, coolmini, common, vamphalf_state, mrkicker,ROT0, "SemiCom", "Mr. Kicker (F-E1-16-010 PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, mrkickera, mrkicker, mrkickera,finalgdr, vamphalf_state, mrkickera, ROT0, "SemiCom", "Mr. Kicker (SEMICOM-003b PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // if you allow eeprom saving works then this set corrupts the eeprom and then won't boot -GAME( 2001, toyland, 0, coolmini, common, vamphalf_state, toyland, ROT0, "SemiCom", "Toy Land Adventure", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, wivernwg, 0, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom", "Wivern Wings", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2001, wyvernwg, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2001, wyvernwga, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 2001, aoh, 0, aoh, aoh, vamphalf_state, aoh, ROT0, "Unico", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, boonggab, 0, boonggab, boonggab, vamphalf_state, boonggab, ROT270, "Taff System", "Boong-Ga Boong-Ga (Spank'em!)", MACHINE_SUPPORTS_SAVE ) -GAME( 199?, yorijori, 0, yorijori, common, vamphalf_state, yorijori, ROT0, "Golden Bell Entertainment", "Yori Jori Kuk Kuk", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, coolmini, 0, coolmini, common, vamphalf_state, coolmini, ROT0, "SemiCom", "Cool Minigame Collection", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, jmpbreak, 0, jmpbreak, common, vamphalf_state, jmpbreak, ROT0, "F2 System", "Jumping Break" , MACHINE_SUPPORTS_SAVE ) +GAME( 1999, suplup, 0, suplup, common, vamphalf_state, suplup, ROT0, "Omega System", "Super Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 4.0 / 990518)" , MACHINE_SUPPORTS_SAVE ) +GAME( 1999, luplup, suplup, suplup, common, vamphalf_state, luplup, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 3.0 / 990128)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, luplup29, suplup, suplup, common, vamphalf_state, luplup29, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 2.9 / 990108)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, puzlbang, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.9 / 990108)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, puzlbanga, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.8 / 990106)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, vamphalf, 0, vamphalf, common, vamphalf_state, vamphalf, ROT0, "Danbi / F2 System", "Vamf x1/2 (Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, vamphalfk, vamphalf, vamphalf, common, vamphalf_state, vamphafk, ROT0, "Danbi / F2 System", "Vamp x1/2 (Korea)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, dquizgo2, 0, coolmini, common, vamphalf_state, dquizgo2, ROT0, "SemiCom", "Date Quiz Go Go Episode 2" , MACHINE_SUPPORTS_SAVE ) +GAME( 2000, misncrft, 0, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.7)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2000, misncrfta, misncrft, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.4)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mrdig, 0, mrdig, common, vamphalf_state, mrdig, ROT0, "Sun", "Mr. Dig", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, dtfamily, 0, coolmini, common, vamphalf_state, dtfamily, ROT0, "SemiCom", "Diet Family", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, finalgdr, 0, finalgdr, finalgdr, vamphalf_state, finalgdr, ROT0, "SemiCom", "Final Godori (Korea, version 2.20.5915)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, mrkicker, 0, coolmini, common, vamphalf_state, mrkicker, ROT0, "SemiCom", "Mr. Kicker (F-E1-16-010 PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, mrkickera, mrkicker, mrkickera, finalgdr, vamphalf_state, mrkickera, ROT0, "SemiCom", "Mr. Kicker (SEMICOM-003b PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // if you allow eeprom saving works then this set corrupts the eeprom and then won't boot +GAME( 2001, toyland, 0, coolmini, common, vamphalf_state, toyland, ROT0, "SemiCom", "Toy Land Adventure", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, wivernwg, 0, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom", "Wivern Wings", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2001, wyvernwg, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2001, wyvernwga, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2001, aoh, 0, aoh, aoh, vamphalf_state, aoh, ROT0, "Unico", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, boonggab, 0, boonggab, boonggab, vamphalf_state, boonggab, ROT270, "Taff System", "Boong-Ga Boong-Ga (Spank'em!)", MACHINE_SUPPORTS_SAVE ) +GAME( 199?, yorijori, 0, yorijori, common, vamphalf_state, yorijori, ROT0, "Golden Bell Entertainment", "Yori Jori Kuk Kuk", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vaportra.cpp b/src/mame/drivers/vaportra.cpp index ef99c3874ee..97b54521db3 100644 --- a/src/mame/drivers/vaportra.cpp +++ b/src/mame/drivers/vaportra.cpp @@ -238,7 +238,7 @@ void vaportra_state::machine_reset() m_priority[1] = 0; } -static MACHINE_CONFIG_START( vaportra, vaportra_state ) +static MACHINE_CONFIG_START( vaportra ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,XTAL_24MHz/2) /* Custom chip 59 */ @@ -311,10 +311,10 @@ static MACHINE_CONFIG_START( vaportra, vaportra_state ) MCFG_SOUND_ROUTE(0, "mono", 0.60) MCFG_SOUND_ROUTE(1, "mono", 0.60) - MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki1", XTAL_32_22MHz/32, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) - MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki2", XTAL_32_22MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END diff --git a/src/mame/drivers/vastar.cpp b/src/mame/drivers/vastar.cpp index bc3f7c329ec..db3d13b8d97 100644 --- a/src/mame/drivers/vastar.cpp +++ b/src/mame/drivers/vastar.cpp @@ -423,7 +423,7 @@ INTERRUPT_GEN_MEMBER(vastar_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( vastar, vastar_state ) +static MACHINE_CONFIG_START( vastar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) @@ -657,8 +657,8 @@ ROM_START( pprobe ) ROM_END -GAME( 1983, vastar, 0, vastar, vastar, driver_device, 0, ROT90, "Orca (Sesame Japan license)", "Vastar (set 1)", MACHINE_SUPPORTS_SAVE ) // Sesame Japan was a brand of Fujikousan -GAME( 1983, vastar2, vastar, vastar, vastar, driver_device, 0, ROT90, "Orca (Sesame Japan license)", "Vastar (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, vastar3, vastar, vastar, vastar, driver_device, 0, ROT90, "Orca (Sesame Japan license)", "Vastar (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, vastar4, vastar, vastar, vastar4,driver_device, 0, ROT90, "Orca (Sesame Japan license)", "Vastar (set 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, pprobe, 0, vastar, pprobe, driver_device, 0, ROT90, "Crux / Kyugo?", "Planet Probe (prototype?)", MACHINE_SUPPORTS_SAVE ) // has no Copyright, probably because Crux didn't have a trading name at this point? +GAME( 1983, vastar, 0, vastar, vastar, vastar_state, 0, ROT90, "Orca (Sesame Japan license)", "Vastar (set 1)", MACHINE_SUPPORTS_SAVE ) // Sesame Japan was a brand of Fujikousan +GAME( 1983, vastar2, vastar, vastar, vastar, vastar_state, 0, ROT90, "Orca (Sesame Japan license)", "Vastar (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, vastar3, vastar, vastar, vastar, vastar_state, 0, ROT90, "Orca (Sesame Japan license)", "Vastar (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, vastar4, vastar, vastar, vastar4, vastar_state, 0, ROT90, "Orca (Sesame Japan license)", "Vastar (set 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, pprobe, 0, vastar, pprobe, vastar_state, 0, ROT90, "Crux / Kyugo?", "Planet Probe (prototype?)", MACHINE_SUPPORTS_SAVE ) // has no Copyright, probably because Crux didn't have a trading name at this point? diff --git a/src/mame/drivers/vax11.cpp b/src/mame/drivers/vax11.cpp index 6ef07148c04..99fa220c047 100644 --- a/src/mame/drivers/vax11.cpp +++ b/src/mame/drivers/vax11.cpp @@ -88,7 +88,7 @@ public: DECLARE_READ16_MEMBER( term_tx_status_r ); DECLARE_READ16_MEMBER( term_rx_status_r ); DECLARE_WRITE16_MEMBER( term_w ); - DECLARE_WRITE8_MEMBER( kbd_put ); + void kbd_put(u8 data); uint8_t m_term_data; uint16_t m_term_status; }; @@ -131,13 +131,13 @@ ADDRESS_MAP_END static INPUT_PORTS_START( vax11 ) INPUT_PORTS_END -WRITE8_MEMBER( vax11_state::kbd_put ) +void vax11_state::kbd_put(u8 data) { m_term_data = data; m_term_status = 0xffff; } -static MACHINE_CONFIG_START( vax11, vax11_state ) +static MACHINE_CONFIG_START( vax11 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",T11, XTAL_4MHz) // Need proper CPU here MCFG_T11_INITIAL_MODE(0 << 13) @@ -145,7 +145,7 @@ static MACHINE_CONFIG_START( vax11, vax11_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(vax11_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(vax11_state, kbd_put)) MCFG_RX01_ADD("rx01") MACHINE_CONFIG_END @@ -170,5 +170,5 @@ ROM_START( vax785 ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, vax785, 0, 0, vax11, vax11, driver_device, 0, "Digital Equipment Corporation", "VAX-11/785", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, vax785, 0, 0, vax11, vax11, vax11_state, 0, "Digital Equipment Corporation", "VAX-11/785", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/vball.cpp b/src/mame/drivers/vball.cpp index aa933868d46..14f52abeb28 100644 --- a/src/mame/drivers/vball.cpp +++ b/src/mame/drivers/vball.cpp @@ -401,7 +401,7 @@ static GFXDECODE_START( vb ) GFXDECODE_END -static MACHINE_CONFIG_START( vball, vball_state ) +static MACHINE_CONFIG_START( vball ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, CPU_CLOCK) /* 2 MHz - measured by guru but it makes the game far far too slow ?! */ @@ -432,7 +432,7 @@ static MACHINE_CONFIG_START( vball, vball_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END @@ -563,7 +563,7 @@ ROM_START( vball2pjb ) /* bootleg of the Japan set with unmoddified program rom ROM_END -GAME( 1988, vball, 0, vball, vball, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vball2pj, vball, vball, vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vballb, vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vball2pjb,vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vball, 0, vball, vball, vball_state, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vball2pj, vball, vball, vball2pj, vball_state, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vballb, vball, vball, vball, vball_state, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vball2pjb,vball, vball, vball, vball_state, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vboy.cpp b/src/mame/drivers/vboy.cpp index 18d5cc65ecb..c5b57d34e27 100644 --- a/src/mame/drivers/vboy.cpp +++ b/src/mame/drivers/vboy.cpp @@ -1345,7 +1345,7 @@ static SLOT_INTERFACE_START(vboy_cart) SLOT_INTERFACE_INTERNAL("vb_eeprom", VBOY_ROM_EEPROM) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( vboy, vboy_state ) +static MACHINE_CONFIG_START( vboy ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", V810, XTAL_20MHz ) @@ -1397,5 +1397,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1995, vboy, 0, 0, vboy, vboy, driver_device, 0, "Nintendo", "Virtual Boy", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +CONS( 1995, vboy, 0, 0, vboy, vboy, vboy_state, 0, "Nintendo", "Virtual Boy", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/vc4000.cpp b/src/mame/drivers/vc4000.cpp index ab4b2c560f0..bbdf29ea99c 100644 --- a/src/mame/drivers/vc4000.cpp +++ b/src/mame/drivers/vc4000.cpp @@ -527,7 +527,7 @@ static SLOT_INTERFACE_START(vc4000_cart) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( vc4000, vc4000_state ) +static MACHINE_CONFIG_START( vc4000 ) /* basic machine hardware */ // MCFG_CPU_ADD("maincpu", S2650, 865000) /* 3550000/4, 3580000/3, 4430000/3 */ MCFG_CPU_ADD("maincpu", S2650, 3546875/4) @@ -701,29 +701,29 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS(1978, vc4000, 0, 0, vc4000, vc4000, driver_device, 0, "Interton", "Interton Electronic VC 4000", MACHINE_IMPERFECT_GRAPHICS ) /* Germany, Austria, UK, Australia */ -CONS(1979, spc4000, vc4000, 0, vc4000, vc4000, driver_device, 0, "Grundig", "Super Play Computer 4000", MACHINE_IMPERFECT_GRAPHICS ) /* Germany, Austria */ -CONS(1979, cx3000tc, vc4000, 0, cx3000tc, vc4000, driver_device, 0, "Palson", "CX 3000 Tele Computer", MACHINE_IMPERFECT_GRAPHICS ) /* Spain */ -CONS(1979, tvc4000, vc4000, 0, vc4000, vc4000, driver_device, 0, "Koerting", "TVC-4000", MACHINE_IMPERFECT_GRAPHICS ) /* Argentina */ -CONS(1976, 1292apvs, 0, vc4000, vc4000, vc4000, driver_device, 0, "Radofin", "1292 Advanced Programmable Video System", MACHINE_IMPERFECT_GRAPHICS )/* Europe */ -CONS(1976, 1392apvs, 1292apvs, 0, vc4000, vc4000, driver_device, 0, "Radofin", "1392 Advanced Programmable Video System", MACHINE_IMPERFECT_GRAPHICS )/* Europe */ -CONS(1979, mpu1000, 1292apvs, 0, mpu1000, vc4000, driver_device, 0, "Acetronic", "MPU-1000", MACHINE_IMPERFECT_GRAPHICS ) /* Europe */ -CONS(1979, mpu2000, 1292apvs, 0, mpu1000, vc4000, driver_device, 0, "Acetronic", "MPU-2000", MACHINE_IMPERFECT_GRAPHICS ) /* Europe */ -CONS(1978, pp1292, 1292apvs, 0, vc4000, vc4000, driver_device, 0, "Audio Sonic", "PP-1292 Advanced Programmable Video System", MACHINE_IMPERFECT_GRAPHICS )/* Europe */ -CONS(1978, pp1392, 1292apvs, 0, vc4000, vc4000, driver_device, 0, "Audio Sonic", "PP-1392 Advanced Programmable Video System", MACHINE_IMPERFECT_GRAPHICS )/* Europe */ -CONS(1979, f1392, 1292apvs, 0, vc4000, vc4000, driver_device, 0, "Fountain", "Fountain 1392", MACHINE_IMPERFECT_GRAPHICS ) /* New Zealand */ -CONS(1979, fforce2, 1292apvs, 0, vc4000, vc4000, driver_device, 0, "Fountain", "Fountain Force 2", MACHINE_IMPERFECT_GRAPHICS ) /* New Zealand, Australia */ -CONS(1979, hmg1292, 1292apvs, 0, vc4000, vc4000, driver_device, 0, "Hanimex", "HMG 1292", MACHINE_IMPERFECT_GRAPHICS ) /* Europe */ -CONS(1979, hmg1392, 1292apvs, 0, vc4000, vc4000, driver_device, 0, "Hanimex", "HMG 1392", MACHINE_IMPERFECT_GRAPHICS ) /* Europe */ -CONS(1979, lnsy1392, 1292apvs, 0, vc4000, vc4000, driver_device, 0, "Lansay", "Lansay 1392", MACHINE_IMPERFECT_GRAPHICS ) /* Europe */ -CONS(1979, vc6000, 1292apvs, 0, vc4000, vc4000, driver_device, 0, "Prinztronic", "VC 6000", MACHINE_IMPERFECT_GRAPHICS ) /* UK */ -CONS(1979, database, 0, vc4000, database, vc4000, driver_device, 0, "Voltmace", "Voltmace Database", MACHINE_IMPERFECT_GRAPHICS ) /* UK */ -CONS(1979, vmdtbase, database, 0, database, vc4000, driver_device, 0, "Videomaster", "Videomaster Database Games-Computer", MACHINE_IMPERFECT_GRAPHICS )/* UK */ -CONS(1979, rwtrntcs, 0, vc4000, rwtrntcs, vc4000, driver_device, 0, "Rowtron", "Rowtron Television Computer System", MACHINE_IMPERFECT_GRAPHICS )/* UK */ -CONS(1979, telngtcs, rwtrntcs, 0, rwtrntcs, vc4000, driver_device, 0, "Teleng", "Teleng Television Computer System", MACHINE_IMPERFECT_GRAPHICS )/* UK */ -CONS(1979, krvnjvtv, 0, vc4000, vc4000, vc4000, driver_device, 0, "SOE", "OC Jeu Video TV Karvan", MACHINE_IMPERFECT_GRAPHICS ) /* France */ -CONS(1979, oc2000, krvnjvtv, 0, vc4000, vc4000, driver_device, 0, "SOE", "OC-2000", MACHINE_IMPERFECT_GRAPHICS ) /* France */ -CONS(1980, mpt05, 0, vc4000, vc4000, vc4000, driver_device, 0, "ITMC", "MPT-05", MACHINE_IMPERFECT_GRAPHICS ) /* France */ -CONS(1982, h21, 0, vc4000, h21, vc4000, driver_device, 0, "TRQ", "Video Computer H-21", MACHINE_IMPERFECT_GRAPHICS) // Spain -CONS(1979, elektor, 0, 0, elektor, elektor, driver_device, 0, "Elektor", "Elektor TV Games Computer", MACHINE_IMPERFECT_GRAPHICS ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS(1978, vc4000, 0, 0, vc4000, vc4000, vc4000_state, 0, "Interton", "Interton Electronic VC 4000", MACHINE_IMPERFECT_GRAPHICS) // Germany, Austria, UK, Australia +CONS(1979, spc4000, vc4000, 0, vc4000, vc4000, vc4000_state, 0, "Grundig", "Super Play Computer 4000", MACHINE_IMPERFECT_GRAPHICS) // Germany, Austria +CONS(1979, cx3000tc, vc4000, 0, cx3000tc, vc4000, vc4000_state, 0, "Palson", "CX 3000 Tele Computer", MACHINE_IMPERFECT_GRAPHICS) // Spain +CONS(1979, tvc4000, vc4000, 0, vc4000, vc4000, vc4000_state, 0, "Koerting", "TVC-4000", MACHINE_IMPERFECT_GRAPHICS) // Argentina +CONS(1976, 1292apvs, 0, vc4000, vc4000, vc4000, vc4000_state, 0, "Radofin", "1292 Advanced Programmable Video System", MACHINE_IMPERFECT_GRAPHICS) // Europe +CONS(1976, 1392apvs, 1292apvs, 0, vc4000, vc4000, vc4000_state, 0, "Radofin", "1392 Advanced Programmable Video System", MACHINE_IMPERFECT_GRAPHICS) // Europe +CONS(1979, mpu1000, 1292apvs, 0, mpu1000, vc4000, vc4000_state, 0, "Acetronic", "MPU-1000", MACHINE_IMPERFECT_GRAPHICS) // Europe +CONS(1979, mpu2000, 1292apvs, 0, mpu1000, vc4000, vc4000_state, 0, "Acetronic", "MPU-2000", MACHINE_IMPERFECT_GRAPHICS) // Europe +CONS(1978, pp1292, 1292apvs, 0, vc4000, vc4000, vc4000_state, 0, "Audio Sonic", "PP-1292 Advanced Programmable Video System", MACHINE_IMPERFECT_GRAPHICS) // Europe +CONS(1978, pp1392, 1292apvs, 0, vc4000, vc4000, vc4000_state, 0, "Audio Sonic", "PP-1392 Advanced Programmable Video System", MACHINE_IMPERFECT_GRAPHICS) // Europe +CONS(1979, f1392, 1292apvs, 0, vc4000, vc4000, vc4000_state, 0, "Fountain", "Fountain 1392", MACHINE_IMPERFECT_GRAPHICS) // New Zealand +CONS(1979, fforce2, 1292apvs, 0, vc4000, vc4000, vc4000_state, 0, "Fountain", "Fountain Force 2", MACHINE_IMPERFECT_GRAPHICS) // New Zealand, Australia +CONS(1979, hmg1292, 1292apvs, 0, vc4000, vc4000, vc4000_state, 0, "Hanimex", "HMG 1292", MACHINE_IMPERFECT_GRAPHICS) // Europe +CONS(1979, hmg1392, 1292apvs, 0, vc4000, vc4000, vc4000_state, 0, "Hanimex", "HMG 1392", MACHINE_IMPERFECT_GRAPHICS) // Europe +CONS(1979, lnsy1392, 1292apvs, 0, vc4000, vc4000, vc4000_state, 0, "Lansay", "Lansay 1392", MACHINE_IMPERFECT_GRAPHICS) // Europe +CONS(1979, vc6000, 1292apvs, 0, vc4000, vc4000, vc4000_state, 0, "Prinztronic", "VC 6000", MACHINE_IMPERFECT_GRAPHICS) // UK +CONS(1979, database, 0, vc4000, database, vc4000, vc4000_state, 0, "Voltmace", "Voltmace Database", MACHINE_IMPERFECT_GRAPHICS) // UK +CONS(1979, vmdtbase, database, 0, database, vc4000, vc4000_state, 0, "Videomaster", "Videomaster Database Games-Computer", MACHINE_IMPERFECT_GRAPHICS) // UK +CONS(1979, rwtrntcs, 0, vc4000, rwtrntcs, vc4000, vc4000_state, 0, "Rowtron", "Rowtron Television Computer System", MACHINE_IMPERFECT_GRAPHICS) // UK +CONS(1979, telngtcs, rwtrntcs, 0, rwtrntcs, vc4000, vc4000_state, 0, "Teleng", "Teleng Television Computer System", MACHINE_IMPERFECT_GRAPHICS) // UK +CONS(1979, krvnjvtv, 0, vc4000, vc4000, vc4000, vc4000_state, 0, "SOE", "OC Jeu Video TV Karvan", MACHINE_IMPERFECT_GRAPHICS) // France +CONS(1979, oc2000, krvnjvtv, 0, vc4000, vc4000, vc4000_state, 0, "SOE", "OC-2000", MACHINE_IMPERFECT_GRAPHICS) // France +CONS(1980, mpt05, 0, vc4000, vc4000, vc4000, vc4000_state, 0, "ITMC", "MPT-05", MACHINE_IMPERFECT_GRAPHICS) // France +CONS(1982, h21, 0, vc4000, h21, vc4000, vc4000_state, 0, "TRQ", "Video Computer H-21", MACHINE_IMPERFECT_GRAPHICS) // Spain +CONS(1979, elektor, 0, 0, elektor, elektor, vc4000_state, 0, "Elektor", "Elektor TV Games Computer", MACHINE_IMPERFECT_GRAPHICS) diff --git a/src/mame/drivers/vcombat.cpp b/src/mame/drivers/vcombat.cpp index b16c1aec187..d92457c6ad8 100644 --- a/src/mame/drivers/vcombat.cpp +++ b/src/mame/drivers/vcombat.cpp @@ -543,7 +543,7 @@ WRITE_LINE_MEMBER(vcombat_state::sound_update) m_soundcpu->set_input_line(M68K_IRQ_1, state ? ASSERT_LINE : CLEAR_LINE); } -static MACHINE_CONFIG_START( vcombat, vcombat_state ) +static MACHINE_CONFIG_START( vcombat ) MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", vcombat_state, irq1_line_assert) @@ -591,7 +591,7 @@ static MACHINE_CONFIG_START( vcombat, vcombat_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( shadfgtr, vcombat_state ) +static MACHINE_CONFIG_START( shadfgtr ) MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", vcombat_state, irq1_line_assert) @@ -682,6 +682,6 @@ ROM_START( shadfgtr ) /* The second upper-board PAL couldn't be read */ ROM_END -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS */ -GAME( 1993, vcombat, 0, vcombat, vcombat, vcombat_state, vcombat, ORIENTATION_FLIP_X, "VR8 Inc.", "Virtual Combat", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS +GAME( 1993, vcombat, 0, vcombat, vcombat, vcombat_state, vcombat, ORIENTATION_FLIP_X, "VR8 Inc.", "Virtual Combat", MACHINE_NOT_WORKING ) GAME( 1993, shadfgtr, 0, shadfgtr, shadfgtr, vcombat_state, shadfgtr, ROT0, "Dutech Inc.", "Shadow Fighters", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/vcs80.cpp b/src/mame/drivers/vcs80.cpp index eea5014f8bc..7cc93cef46e 100644 --- a/src/mame/drivers/vcs80.cpp +++ b/src/mame/drivers/vcs80.cpp @@ -209,7 +209,7 @@ void vcs80_state::machine_start() /* Machine Driver */ -static MACHINE_CONFIG_START( vcs80, vcs80_state ) +static MACHINE_CONFIG_START( vcs80 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_5MHz/2) /* U880D */ MCFG_CPU_PROGRAM_MAP(vcs80_mem) @@ -249,5 +249,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, vcs80, 0, 0, vcs80, vcs80, driver_device, 0, "Eckhard Schiller", "VCS-80", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, vcs80, 0, 0, vcs80, vcs80, vcs80_state, 0, "Eckhard Schiller", "VCS-80", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/vd.cpp b/src/mame/drivers/vd.cpp index fd253aa90b6..bfb8022b92f 100644 --- a/src/mame/drivers/vd.cpp +++ b/src/mame/drivers/vd.cpp @@ -180,7 +180,7 @@ void vd_state::machine_reset() m_t_c = 0; } -static MACHINE_CONFIG_START( vd, vd_state ) +static MACHINE_CONFIG_START( vd ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(vd_map) @@ -227,5 +227,5 @@ ROM_START(papillon) ROM_END -GAME(1986, break86, 0, vd, break86, driver_device, 0, ROT0, "Video Dens", "Break '86", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, papillon, 0, vd, papillon, driver_device, 0, ROT0, "Video Dens", "Papillon", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, break86, 0, vd, break86, vd_state, 0, ROT0, "Video Dens", "Break '86", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, papillon, 0, vd, papillon, vd_state, 0, ROT0, "Video Dens", "Papillon", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/vector06.cpp b/src/mame/drivers/vector06.cpp index 88bbe937128..7c4dab9ff6a 100644 --- a/src/mame/drivers/vector06.cpp +++ b/src/mame/drivers/vector06.cpp @@ -46,10 +46,10 @@ static ADDRESS_MAP_START(vector06_io, AS_IO, 8, vector06_state) AM_RANGE( 0x0C, 0x0C) AM_WRITE(vector06_color_set) AM_RANGE( 0x10, 0x10) AM_WRITE(vector06_ramdisk_w) AM_RANGE( 0x14, 0x15) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_address_w) - AM_RANGE( 0x18, 0x18) AM_DEVREADWRITE("wd1793", kr1818vg93_t, data_r, data_w) - AM_RANGE( 0x19, 0x19) AM_DEVREADWRITE("wd1793", kr1818vg93_t, sector_r, sector_w) - AM_RANGE( 0x1a, 0x1a) AM_DEVREADWRITE("wd1793", kr1818vg93_t, track_r, track_w) - AM_RANGE( 0x1b, 0x1b) AM_DEVREADWRITE("wd1793", kr1818vg93_t, status_r, cmd_w) + AM_RANGE( 0x18, 0x18) AM_DEVREADWRITE("wd1793", kr1818vg93_device, data_r, data_w) + AM_RANGE( 0x19, 0x19) AM_DEVREADWRITE("wd1793", kr1818vg93_device, sector_r, sector_w) + AM_RANGE( 0x1a, 0x1a) AM_DEVREADWRITE("wd1793", kr1818vg93_device, track_r, track_w) + AM_RANGE( 0x1b, 0x1b) AM_DEVREADWRITE("wd1793", kr1818vg93_device, status_r, cmd_w) AM_RANGE( 0x1C, 0x1C) AM_WRITE(vector06_disc_w) ADDRESS_MAP_END @@ -153,7 +153,7 @@ SLOT_INTERFACE_END /* Machine driver */ -static MACHINE_CONFIG_START( vector06, vector06_state ) +static MACHINE_CONFIG_START( vector06 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, 3000000) // actual speed is wrong due to unemulated latency // MCFG_CPU_ADD("maincpu", Z80, 3000000) @@ -266,8 +266,8 @@ ROM_START( krista2 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, vector06, 0, 0, vector06, vector06, driver_device, 0, "", "Vector 06c", 0) -COMP( 1987, vec1200, vector06, 0, vector06, vector06, driver_device, 0, "", "Vector 1200", MACHINE_NOT_WORKING) -COMP( 1987, pk6128c, vector06, 0, vector06, vector06, driver_device, 0, "", "PK-6128c", MACHINE_NOT_WORKING) -COMP( 1987, krista2, vector06, 0, vector06, vector06, driver_device, 0, "", "Krista-2", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, vector06, 0, 0, vector06, vector06, vector06_state, 0, "", "Vector 06c", 0) +COMP( 1987, vec1200, vector06, 0, vector06, vector06, vector06_state, 0, "", "Vector 1200", MACHINE_NOT_WORKING) +COMP( 1987, pk6128c, vector06, 0, vector06, vector06, vector06_state, 0, "", "PK-6128c", MACHINE_NOT_WORKING) +COMP( 1987, krista2, vector06, 0, vector06, vector06, vector06_state, 0, "", "Krista-2", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/vector4.cpp b/src/mame/drivers/vector4.cpp index 74b7dc3d9d7..3facf73a53c 100644 --- a/src/mame/drivers/vector4.cpp +++ b/src/mame/drivers/vector4.cpp @@ -24,14 +24,17 @@ public: { } - required_device m_maincpu; - required_device m_terminal; DECLARE_READ8_MEMBER(vector4_02_r); DECLARE_READ8_MEMBER(vector4_03_r); DECLARE_WRITE8_MEMBER(vector4_02_w); - DECLARE_WRITE8_MEMBER(kbd_put); - uint8_t m_term_data; + void kbd_put(u8 data); + +protected: virtual void machine_reset() override; + + required_device m_maincpu; + required_device m_terminal; + uint8_t m_term_data; }; @@ -81,12 +84,12 @@ void vector4_state::machine_reset() m_maincpu->set_state_int(Z80_PC, 0xe000); } -WRITE8_MEMBER( vector4_state::kbd_put ) +void vector4_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( vector4, vector4_state ) +static MACHINE_CONFIG_START( vector4 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(vector4_mem) @@ -95,7 +98,7 @@ static MACHINE_CONFIG_START( vector4, vector4_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(vector4_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(vector4_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -116,5 +119,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 19??, vector4, 0, 0, vector4, vector4, driver_device, 0, "Vector Graphics", "Vector 4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 19??, vector4, 0, 0, vector4, vector4, vector4_state, 0, "Vector Graphics", "Vector 4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/vectrex.cpp b/src/mame/drivers/vectrex.cpp index 5759a3a6c9f..7b8adbec7a7 100644 --- a/src/mame/drivers/vectrex.cpp +++ b/src/mame/drivers/vectrex.cpp @@ -95,7 +95,7 @@ static SLOT_INTERFACE_START(vectrex_cart) SLOT_INTERFACE_INTERNAL("vec_sram", VECTREX_ROM_SRAM) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( vectrex, vectrex_state ) +static MACHINE_CONFIG_START( vectrex ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_6MHz / 4) MCFG_CPU_PROGRAM_MAP(vectrex_map) @@ -241,7 +241,7 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -CONS(1982, vectrex, 0, 0, vectrex, vectrex, vectrex_state, vectrex, "General Consumer Electronics", "Vectrex" , ROT270) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME +CONS(1982, vectrex, 0, 0, vectrex, vectrex, vectrex_state, vectrex, "General Consumer Electronics", "Vectrex" , ROT270) -GAME(1984, raaspec, 0, raaspec, raaspec, vectrex_state, vectrex, ROT270, "Roy Abel & Associates", "Spectrum I+", MACHINE_NOT_WORKING ) //TODO: button labels & timings, a mandatory artwork too? +GAME(1984, raaspec, 0, raaspec, raaspec, vectrex_state, vectrex, ROT270, "Roy Abel & Associates", "Spectrum I+", MACHINE_NOT_WORKING ) //TODO: button labels & timings, a mandatory artwork too? diff --git a/src/mame/drivers/vega.cpp b/src/mame/drivers/vega.cpp index f07f81b2c6c..5f0b3bd8991 100644 --- a/src/mame/drivers/vega.cpp +++ b/src/mame/drivers/vega.cpp @@ -141,7 +141,7 @@ public: DECLARE_WRITE8_MEMBER(extern_w); DECLARE_WRITE8_MEMBER(p2_w); DECLARE_READ8_MEMBER(p2_r); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_WRITE8_MEMBER(rombank_w); DECLARE_READ8_MEMBER(txtram_r); @@ -374,7 +374,7 @@ WRITE8_MEMBER(vega_state::p2_w) m_p2_data=data; } -READ8_MEMBER(vega_state::t1_r) +READ_LINE_MEMBER(vega_state::t1_r) { return machine().rand(); } @@ -390,21 +390,8 @@ static ADDRESS_MAP_START( vega_map, AS_PROGRAM, 8, vega_state ) AM_RANGE(0x800, 0xfff) AM_ROM ADDRESS_MAP_END -/* -MCS48_PORT_P0 = 0x100, - MCS48_PORT_P1 = 0x101, - MCS48_PORT_P2 = 0x102, - MCS48_PORT_T0 = 0x110, - MCS48_PORT_T1 = 0x111, - MCS48_PORT_BUS = 0x120, - MCS48_PORT_PROG = 0x121 0/1 - */ static ADDRESS_MAP_START( vega_io_map, AS_IO, 8, vega_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(extern_r, extern_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ_PORT("DSW") AM_WRITE(rombank_w) //101 - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w)//102 - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) //111 - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_WRITENOP /* prog - inputs CLK */ ADDRESS_MAP_END @@ -802,12 +789,16 @@ void vega_state::machine_start() } -static MACHINE_CONFIG_START( vega, vega_state ) - - +static MACHINE_CONFIG_START( vega ) MCFG_CPU_ADD("maincpu", I8035, 4000000) MCFG_CPU_PROGRAM_MAP(vega_map) MCFG_CPU_IO_MAP(vega_io_map) + MCFG_MCS48_PORT_P1_IN_CB(IOPORT("DSW")) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(vega_state, rombank_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(vega_state, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(vega_state, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(vega_state, t1_r)) + MCFG_MCS48_PORT_PROG_OUT_CB(NOOP) /* prog - inputs CLK */ MCFG_CPU_VBLANK_INT_DRIVER("screen", vega_state, irq0_line_hold) MCFG_DEVICE_ADD("ppi8255", I8255A, 0) diff --git a/src/mame/drivers/vegaeo.cpp b/src/mame/drivers/vegaeo.cpp index efc1b61154d..abe5e9cafc7 100644 --- a/src/mame/drivers/vegaeo.cpp +++ b/src/mame/drivers/vegaeo.cpp @@ -217,7 +217,7 @@ uint32_t vegaeo_state::screen_update_vega(screen_device &screen, bitmap_ind16 &b } -static MACHINE_CONFIG_START( vega, vegaeo_state ) +static MACHINE_CONFIG_START( vega ) MCFG_CPU_ADD("maincpu", GMS30C2132, XTAL_55MHz) MCFG_CPU_PROGRAM_MAP(vega_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", vegaeo_state, eolith_speedup, "screen", 0, 1) diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp index 52ed8641791..a504e2908c7 100644 --- a/src/mame/drivers/vegas.cpp +++ b/src/mame/drivers/vegas.cpp @@ -283,7 +283,10 @@ #include "machine/midwayic.h" #include "machine/smc91c9x.h" #include "machine/timekpr.h" -#include "video/voodoo.h" +#include "machine/pci.h" +#include "machine/vrc5074.h" +#include "machine/pci-ide.h" +#include "video/voodoo_pci.h" #include "screen.h" @@ -293,16 +296,8 @@ * *************************************/ -#define LOG_NILE (0) -#define LOG_NILE_IRQS (0) -#define LOG_PCI (0) -#define LOG_TIMERS (0) #define LOG_TIMEKEEPER (0) #define LOG_SIO (0) -#define LOG_DYNAMIC (0) -#define PRINTF_SERIAL (1) - - /************************************* * @@ -310,148 +305,9 @@ * *************************************/ -#define SYSTEM_CLOCK 100000000 -#define TIMER_PERIOD attotime::from_hz(SYSTEM_CLOCK) - -#define MAX_DYNAMIC_ADDRESSES 32 - -#define NOP_HANDLER read32_delegate() - - - -/************************************* - * - * NILE constants - * - *************************************/ - -/* NILE 4 registers 0x000-0x0ff */ -#define NREG_SDRAM0 (0x000/4) -#define NREG_SDRAM1 (0x008/4) -#define NREG_DCS2 (0x010/4) /* SIO misc */ -#define NREG_DCS3 (0x018/4) /* ADC */ -#define NREG_DCS4 (0x020/4) /* CMOS */ -#define NREG_DCS5 (0x028/4) /* SIO */ -#define NREG_DCS6 (0x030/4) /* IOASIC */ -#define NREG_DCS7 (0x038/4) /* ethernet */ -#define NREG_DCS8 (0x040/4) -#define NREG_PCIW0 (0x060/4) -#define NREG_PCIW1 (0x068/4) -#define NREG_INTCS (0x070/4) -#define NREG_BOOTCS (0x078/4) -#define NREG_CPUSTAT (0x080/4) -#define NREG_INTCTRL (0x088/4) -#define NREG_INTSTAT0 (0x090/4) -#define NREG_INTSTAT1 (0x098/4) -#define NREG_INTCLR (0x0A0/4) -#define NREG_INTPPES (0x0A8/4) -#define NREG_PCIERR (0x0B8/4) -#define NREG_MEMCTRL (0x0C0/4) -#define NREG_ACSTIME (0x0C8/4) -#define NREG_CHKERR (0x0D0/4) -#define NREG_PCICTRL (0x0E0/4) -#define NREG_PCIARB (0x0E8/4) -#define NREG_PCIINIT0 (0x0F0/4) -#define NREG_PCIINIT1 (0x0F8/4) - -/* NILE 4 registers 0x100-0x1ff */ -#define NREG_LCNFG (0x100/4) -#define NREG_LCST2 (0x110/4) -#define NREG_LCST3 (0x118/4) -#define NREG_LCST4 (0x120/4) -#define NREG_LCST5 (0x128/4) -#define NREG_LCST6 (0x130/4) -#define NREG_LCST7 (0x138/4) -#define NREG_LCST8 (0x140/4) -#define NREG_DCSFN (0x150/4) -#define NREG_DCSIO (0x158/4) -#define NREG_BCST (0x178/4) -#define NREG_DMACTRL0 (0x180/4) -#define NREG_DMASRCA0 (0x188/4) -#define NREG_DMADESA0 (0x190/4) -#define NREG_DMACTRL1 (0x198/4) -#define NREG_DMASRCA1 (0x1A0/4) -#define NREG_DMADESA1 (0x1A8/4) -#define NREG_T0CTRL (0x1C0/4) -#define NREG_T0CNTR (0x1C8/4) -#define NREG_T1CTRL (0x1D0/4) -#define NREG_T1CNTR (0x1D8/4) -#define NREG_T2CTRL (0x1E0/4) -#define NREG_T2CNTR (0x1E8/4) -#define NREG_T3CTRL (0x1F0/4) -#define NREG_T3CNTR (0x1F8/4) - -/* NILE 4 registers 0x200-0x2ff */ -#define NREG_VID (0x200/4) -#define NREG_DID (0x202/4) -#define NREG_PCICMD (0x204/4) -#define NREG_PCISTS (0x206/4) -#define NREG_REVID (0x208/4) -#define NREG_CLASS (0x209/4) -#define NREG_CLSIZ (0x20C/4) -#define NREG_MLTIM (0x20D/4) -#define NREG_HTYPE (0x20E/4) -#define NREG_BIST (0x20F/4) -#define NREG_BARC (0x210/4) -#define NREG_BAR0 (0x218/4) -#define NREG_BAR1 (0x220/4) -#define NREG_CIS (0x228/4) -#define NREG_SSVID (0x22C/4) -#define NREG_SSID (0x22E/4) -#define NREG_ROM (0x230/4) -#define NREG_INTLIN (0x23C/4) -#define NREG_INTPIN (0x23D/4) -#define NREG_MINGNT (0x23E/4) -#define NREG_MAXLAT (0x23F/4) -#define NREG_BAR2 (0x240/4) -#define NREG_BAR3 (0x248/4) -#define NREG_BAR4 (0x250/4) -#define NREG_BAR5 (0x258/4) -#define NREG_BAR6 (0x260/4) -#define NREG_BAR7 (0x268/4) -#define NREG_BAR8 (0x270/4) -#define NREG_BARB (0x278/4) - -/* NILE 4 registers 0x300-0x3ff */ -#define NREG_UARTRBR (0x300/4) -#define NREG_UARTTHR (0x300/4) -#define NREG_UARTIER (0x308/4) -#define NREG_UARTDLL (0x300/4) -#define NREG_UARTDLM (0x308/4) -#define NREG_UARTIIR (0x310/4) -#define NREG_UARTFCR (0x310/4) -#define NREG_UARTLCR (0x318/4) -#define NREG_UARTMCR (0x320/4) -#define NREG_UARTLSR (0x328/4) -#define NREG_UARTMSR (0x330/4) -#define NREG_UARTSCR (0x338/4) - -/* NILE 4 interrupts */ -#define NINT_CPCE (0) -#define NINT_CNTD (1) -#define NINT_MCE (2) -#define NINT_DMA (3) -#define NINT_UART (4) -#define NINT_WDOG (5) -#define NINT_GPT (6) -#define NINT_LBRTD (7) -#define NINT_INTA (8) -#define NINT_INTB (9) -#define NINT_INTC (10) -#define NINT_INTD (11) -#define NINT_INTE (12) -#define NINT_RESV (13) -#define NINT_PCIS (14) -#define NINT_PCIE (15) - - -struct dynamic_address -{ - offs_t start; - offs_t end; - read32_delegate read; - write32_delegate write; -}; +#define PCI_ID_NILE ":pci:00.0" +#define PCI_ID_VIDEO ":pci:04.0" +#define PCI_ID_IDE ":pci:05.0" class vegas_state : public driver_device { @@ -459,48 +315,32 @@ public: vegas_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_nile(*this, PCI_ID_NILE), m_timekeeper(*this, "timekeeper") , - m_ide(*this, "ide"), m_ethernet(*this, "ethernet"), - m_rambase(*this, "rambase"), - m_nile_regs(*this, "nile_regs"), - m_rombase(*this, "rombase"), m_dcs(*this, "dcs"), m_ioasic(*this, "ioasic"), m_io_analog(*this, "AN.%u", 0) { } required_device m_maincpu; + required_device m_nile; required_device m_timekeeper; - required_device m_ide; required_device m_ethernet; - required_shared_ptr m_rambase; - required_shared_ptr m_nile_regs; - required_shared_ptr m_rombase; required_device m_dcs; required_device m_ioasic; optional_ioport_array<8> m_io_analog; - uint16_t m_nile_irq_state; - uint16_t m_ide_irq_state; - uint32_t m_pci_bridge_regs[0x40]; - uint32_t m_pci_ide_regs[0x40]; - uint32_t m_pci_3dfx_regs[0x40]; - emu_timer *m_timer[4]; uint8_t m_vblank_state; - uint8_t m_sio_data[4]; + uint8_t m_cpuio_data[4]; uint8_t m_sio_irq_clear; uint8_t m_sio_irq_enable; uint8_t m_sio_irq_state; uint8_t m_sio_led_state; uint8_t m_pending_analog_read; uint8_t m_cmos_unlocked; - voodoo_device *m_voodoo; uint8_t m_dcs_idma_cs; - int m_count; - int m_dynamic_count; - dynamic_address m_dynamic[MAX_DYNAMIC_ADDRESSES]; - DECLARE_WRITE_LINE_MEMBER(ide_interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_assert); DECLARE_DRIVER_INIT(gauntleg); DECLARE_DRIVER_INIT(cartfury); @@ -515,37 +355,18 @@ public: DECLARE_DRIVER_INIT(sf2049se); virtual void machine_start() override; virtual void machine_reset() override; - uint32_t screen_update_vegas(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - TIMER_CALLBACK_MEMBER(nile_timer_callback); - void remap_dynamic_addresses(); - void update_nile_irqs(); + void update_sio_irqs(); - inline void _add_dynamic_address(offs_t start, offs_t end, read32_delegate read, write32_delegate write); - DECLARE_WRITE32_MEMBER( cmos_unlock_w ); + DECLARE_WRITE32_MEMBER(timekeeper_w); DECLARE_READ32_MEMBER(timekeeper_r); - DECLARE_READ32_MEMBER( pci_bridge_r ); - DECLARE_WRITE32_MEMBER( pci_bridge_w ); - DECLARE_READ32_MEMBER( pci_ide_r ); - DECLARE_WRITE32_MEMBER( pci_ide_w ); - DECLARE_READ32_MEMBER( pci_3dfx_r ); - DECLARE_WRITE32_MEMBER( pci_3dfx_w ); - DECLARE_READ32_MEMBER( nile_r ); - DECLARE_WRITE32_MEMBER( nile_w ); - DECLARE_READ32_MEMBER( sio_irq_clear_r ); - DECLARE_WRITE32_MEMBER( sio_irq_clear_w ); - DECLARE_READ32_MEMBER( sio_irq_enable_r ); - DECLARE_WRITE32_MEMBER( sio_irq_enable_w ); - DECLARE_READ32_MEMBER( sio_irq_cause_r ); - DECLARE_READ32_MEMBER( sio_irq_status_r ); - DECLARE_WRITE32_MEMBER( sio_led_w ); - DECLARE_READ32_MEMBER( sio_led_r ); - DECLARE_WRITE32_MEMBER( sio_w ); - DECLARE_READ32_MEMBER( sio_r ); + DECLARE_READ8_MEMBER(sio_r); + DECLARE_WRITE8_MEMBER(sio_w); + DECLARE_WRITE8_MEMBER( cpu_io_w ); + DECLARE_READ8_MEMBER( cpu_io_r ); DECLARE_READ32_MEMBER( analog_port_r ); DECLARE_WRITE32_MEMBER( analog_port_w ); - DECLARE_WRITE32_MEMBER( vegas_watchdog_w ); DECLARE_WRITE32_MEMBER( asic_fifo_w ); DECLARE_READ32_MEMBER( ide_main_r ); DECLARE_WRITE32_MEMBER( ide_main_w ); @@ -558,21 +379,10 @@ public: DECLARE_WRITE32_MEMBER( dcs3_fifo_full_w ); DECLARE_WRITE_LINE_MEMBER(ethernet_interrupt); DECLARE_WRITE_LINE_MEMBER(ioasic_irq); + DECLARE_READ32_MEMBER(unknown_r); }; -/************************************* - * - * Video start and update - * - *************************************/ - -uint32_t vegas_state::screen_update_vegas(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -{ - return m_voodoo->voodoo_update(bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED; -} - - /************************************* * * Machine init @@ -581,14 +391,6 @@ uint32_t vegas_state::screen_update_vegas(screen_device &screen, bitmap_rgb32 &b void vegas_state::machine_start() { - m_voodoo = (voodoo_device*)machine().device("voodoo"); - - /* allocate timers for the NILE */ - m_timer[0] = machine().scheduler().timer_alloc(timer_expired_delegate()); - m_timer[1] = machine().scheduler().timer_alloc(timer_expired_delegate()); - m_timer[2] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(vegas_state::nile_timer_callback),this)); - m_timer[3] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(vegas_state::nile_timer_callback),this)); - /* identify our sound board */ if (machine().device("dcs:dsio") != nullptr) { m_dcs_idma_cs = 6; @@ -609,34 +411,20 @@ void vegas_state::machine_start() /* set the fastest DRC options, but strict verification */ m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY + MIPS3DRC_FLUSH_PC); - /* configure fast RAM regions */ - m_maincpu->add_fastram(0x00000000, m_rambase.bytes() - 1, false, m_rambase); - m_maincpu->add_fastram(0x1fc00000, 0x1fc7ffff, true, m_rombase); - /* register for save states */ - save_item(NAME(m_nile_irq_state)); - save_item(NAME(m_ide_irq_state)); - save_item(NAME(m_pci_bridge_regs)); - save_item(NAME(m_pci_ide_regs)); - save_item(NAME(m_pci_3dfx_regs)); save_item(NAME(m_vblank_state)); - save_item(NAME(m_sio_data)); + save_item(NAME(m_cpuio_data)); save_item(NAME(m_sio_irq_clear)); save_item(NAME(m_sio_irq_enable)); save_item(NAME(m_sio_irq_state)); save_item(NAME(m_sio_led_state)); save_item(NAME(m_pending_analog_read)); save_item(NAME(m_cmos_unlocked)); - machine().save().register_postload(save_prepost_delegate(FUNC(vegas_state::remap_dynamic_addresses), this)); } void vegas_state::machine_reset() { - /* reset dynamic addressing */ - memset(m_nile_regs, 0, 0x1000); - memset(m_pci_ide_regs, 0, sizeof(m_pci_ide_regs)); - memset(m_pci_3dfx_regs, 0, sizeof(m_pci_3dfx_regs)); /* reset the DCS system if we have one */ if (machine().device("dcs") != nullptr) @@ -646,8 +434,6 @@ void vegas_state::machine_reset() } /* initialize IRQ states */ - m_ide_irq_state = 0; - m_nile_irq_state = 0; m_sio_irq_state = 0; } @@ -658,12 +444,6 @@ void vegas_state::machine_reset() * *************************************/ -WRITE32_MEMBER( vegas_state::cmos_unlock_w ) -{ - m_cmos_unlocked = 1; -} - - WRITE32_MEMBER( vegas_state::timekeeper_w ) { if (m_cmos_unlocked) @@ -703,770 +483,209 @@ READ32_MEMBER( vegas_state::timekeeper_r ) -/************************************* - * - * PCI bridge accesses - * - *************************************/ - -READ32_MEMBER( vegas_state::pci_bridge_r ) -{ - uint32_t result = m_pci_bridge_regs[offset]; - - switch (offset) - { - case 0x00: /* ID register: 0x005a = VRC 5074, 0x1033 = NEC */ - result = 0x005a1033; - break; - - case 0x02: /* revision ID register */ - result = 0x00000004; - break; - } - - if (LOG_PCI) - logerror("%06X:PCI bridge read: reg %d = %08X\n", safe_pc(), offset, result); - return result; -} - - -WRITE32_MEMBER( vegas_state::pci_bridge_w ) -{ - m_pci_bridge_regs[offset] = data; - if (LOG_PCI) - logerror("%06X:PCI bridge write: reg %d = %08X\n", safe_pc(), offset, data); -} - - /************************************* * - * PCI IDE accesses + * SIO interrupts * *************************************/ -READ32_MEMBER( vegas_state::pci_ide_r ) -{ - uint32_t result = m_pci_ide_regs[offset]; - - switch (offset) - { - case 0x00: /* ID register: 0x0646 = 646 EIDE controller, 0x1095 = CMD */ - result = 0x06461095; - break; - - case 0x14: /* interrupt pending */ - result &= 0xffffff00; - if (m_ide_irq_state) - result |= 4; - break; - } - - if (LOG_PCI) - logerror("%06X:PCI IDE read: reg %d = %08X\n", safe_pc(), offset, result); - return result; -} - - -WRITE32_MEMBER( vegas_state::pci_ide_w ) +void vegas_state::update_sio_irqs() { - m_pci_ide_regs[offset] = data; - - switch (offset) - { - case 0x04: /* address register */ - m_pci_ide_regs[offset] &= 0xfffffff0; - remap_dynamic_addresses(); - break; - - case 0x05: /* address register */ - m_pci_ide_regs[offset] &= 0xfffffffc; - remap_dynamic_addresses(); - break; - - case 0x08: /* address register */ - m_pci_ide_regs[offset] &= 0xfffffff0; - remap_dynamic_addresses(); - break; - - case 0x14: /* interrupt pending */ - if (data & 4) - ide_interrupt(0); - break; + if (m_sio_irq_state & m_sio_irq_enable) { + m_nile->pci_intr_c(ASSERT_LINE); } - if (LOG_PCI) - logerror("%06X:PCI IDE write: reg %d = %08X\n", safe_pc(), offset, data); -} - - - -/************************************* - * - * PCI 3dfx accesses - * - *************************************/ - -READ32_MEMBER( vegas_state::pci_3dfx_r ) -{ - int voodoo_type = m_voodoo->voodoo_get_type(); - uint32_t result = m_pci_3dfx_regs[offset]; - - switch (offset) - { - case 0x00: /* ID register: 0x0002 = SST-2, 0x121a = 3dfx */ - if (voodoo_type == TYPE_VOODOO_2) - result = 0x0002121a; - else - result = 0x0003121a; - break; - - case 0x02: /* revision ID register */ - result = 0x00000002; - break; - - case 0x10: /* fab ID register?? */ - result = 0x00044000; - break; - - case 0x15: /* ???? -- gauntleg wants 0s in the bits below */ - result &= 0xf000ffff; - break; + else { + m_nile->pci_intr_c(CLEAR_LINE); } - - if (LOG_PCI) - logerror("%06X:PCI 3dfx read: reg %d = %08X\n", safe_pc(), offset, result); - return result; + //logerror("update_sio_irqs: m_sio_irq_state: %02x\n", m_sio_irq_state); } -WRITE32_MEMBER( vegas_state::pci_3dfx_w ) +WRITE_LINE_MEMBER(vegas_state::vblank_assert) { - int voodoo_type = m_voodoo->voodoo_get_type(); - - m_pci_3dfx_regs[offset] = data; - - switch (offset) + if (!m_vblank_state && state) { - case 0x04: /* address register */ - if (voodoo_type == TYPE_VOODOO_2) - m_pci_3dfx_regs[offset] &= 0xff000000; - else - m_pci_3dfx_regs[offset] &= 0xfe000000; - remap_dynamic_addresses(); - break; - - case 0x05: /* address register */ - if (voodoo_type >= TYPE_VOODOO_BANSHEE) - { - m_pci_3dfx_regs[offset] &= 0xfe000000; - remap_dynamic_addresses(); - } - break; - - case 0x06: /* I/O register */ - if (voodoo_type >= TYPE_VOODOO_BANSHEE) - { - m_pci_3dfx_regs[offset] &= 0xffffff00; - remap_dynamic_addresses(); - } - break; - - case 0x0c: /* romBaseAddr register */ - if (voodoo_type >= TYPE_VOODOO_BANSHEE) - { - m_pci_3dfx_regs[offset] &= 0xffff0000; - remap_dynamic_addresses(); - } - break; - - case 0x10: /* initEnable register */ - m_voodoo->voodoo_set_init_enable(data); - break; - + m_sio_irq_state |= 0x20; + update_sio_irqs(); } - if (LOG_PCI) - logerror("%06X:PCI 3dfx write: reg %d = %08X\n", safe_pc(), offset, data); + m_vblank_state = state; } - -/************************************* - * - * nile timers & interrupts - * - *************************************/ - -void vegas_state::update_nile_irqs() +WRITE_LINE_MEMBER(vegas_state::ioasic_irq) { - uint32_t intctll = m_nile_regs[NREG_INTCTRL+0]; - uint32_t intctlh = m_nile_regs[NREG_INTCTRL+1]; - uint8_t irq[6]; - int i; - - /* check for UART transmit IRQ enable and synthsize one */ - if (m_nile_regs[NREG_UARTIER] & 2) - m_nile_irq_state |= 0x0010; + if (state) + m_sio_irq_state |= 0x04; else - m_nile_irq_state &= ~0x0010; - - irq[0] = irq[1] = irq[2] = irq[3] = irq[4] = irq[5] = 0; - m_nile_regs[NREG_INTSTAT0+0] = 0; - m_nile_regs[NREG_INTSTAT0+1] = 0; - m_nile_regs[NREG_INTSTAT1+0] = 0; - m_nile_regs[NREG_INTSTAT1+1] = 0; - - /* handle the lower interrupts */ - for (i = 0; i < 8; i++) - if (m_nile_irq_state & (1 << i)) - if ((intctll >> (4*i+3)) & 1) - { - int vector = (intctll >> (4*i)) & 7; - if (vector < 6) - { - irq[vector] = 1; - m_nile_regs[NREG_INTSTAT0 + vector/2] |= 1 << (i + 16*(vector&1)); - } - } - - /* handle the upper interrupts */ - for (i = 0; i < 8; i++) - if (m_nile_irq_state & (1 << (i+8))) - if ((intctlh >> (4*i+3)) & 1) - { - int vector = (intctlh >> (4*i)) & 7; - if (vector < 6) - { - irq[vector] = 1; - m_nile_regs[NREG_INTSTAT0 + vector/2] |= 1 << (i + 8 + 16*(vector&1)); - } - } - - /* push out the state */ - if (LOG_NILE_IRQS) logerror("NILE IRQs:"); - for (i = 0; i < 6; i++) - { - if (irq[i]) - { - if (LOG_NILE_IRQS) logerror(" 1"); - m_maincpu->set_input_line(MIPS3_IRQ0 + i, ASSERT_LINE); - } - else - { - if (LOG_NILE_IRQS) logerror(" 0"); - m_maincpu->set_input_line(MIPS3_IRQ0 + i, CLEAR_LINE); - } - } - if (LOG_NILE_IRQS) logerror("\n"); + m_sio_irq_state &= ~0x04; + update_sio_irqs(); } - -TIMER_CALLBACK_MEMBER(vegas_state::nile_timer_callback) +WRITE_LINE_MEMBER(vegas_state::ethernet_interrupt) { - int which = param; - uint32_t *regs = &m_nile_regs[NREG_T0CTRL + which * 4]; - if (LOG_TIMERS) logerror("timer %d fired\n", which); - - /* adjust the timer to fire again */ - { - uint32_t scale = regs[0]; - if (regs[1] & 2) { - uint32_t scaleSrc = (regs[1] >> 2) & 0x3; - uint32_t *scaleReg = &m_nile_regs[NREG_T0CTRL + scaleSrc * 4]; - scale *= scaleReg[0]; - //logerror("Unexpected value: timer %d is prescaled\n", which); - logerror("Timer Scaling value: timer %d is prescaled from %08X to %08X\n", which, regs[0], scale); - } - if (scale != 0) - m_timer[which]->adjust(TIMER_PERIOD * scale, which); - } - - /* trigger the interrupt */ - if (which == 2) - m_nile_irq_state |= 1 << 6; - if (which == 3) - m_nile_irq_state |= 1 << 5; - - update_nile_irqs(); + if (state) + m_sio_irq_state |= 0x10; + else + m_sio_irq_state &= ~0x10; + update_sio_irqs(); } - -/************************************* - * - * Nile system controller - * - *************************************/ - -READ32_MEMBER( vegas_state::nile_r ) +READ8_MEMBER(vegas_state::sio_r) { - uint32_t result = m_nile_regs[offset]; - bool logit = true; - int which; - - switch (offset) + uint32_t result = 0x0; + int index = offset >> 12; + switch (index) { + case 0: + // Reset Control: Bit 0=>Reset IOASIC, Bit 1=>Reset NSS Connection, Bit 2=>Reset SMC, Bit 3=>Reset VSYNC, Bit 4=>VSYNC Polarity + result = m_sio_irq_clear; + // Hack for fpga programming finished + m_cpuio_data[3] |= 0x1; + break; + case 1: + // Interrupt Enable + result = m_sio_irq_enable; + break; + case 2: + // Interrupt Cause + result = m_sio_irq_state & m_sio_irq_enable; + break; + case 3: + // Interrupt Status + result = m_sio_irq_state; + break; + case 4: + // LED + result = m_sio_led_state; + break; + case 5: { - case NREG_CPUSTAT+0: /* CPU status */ - case NREG_CPUSTAT+1: /* CPU status */ - if (LOG_NILE) logerror("%08X:NILE READ: CPU status(%03X) = %08X\n", safe_pc(), offset*4, result); - logit = 0; + switch (offset & 0x7) { + case 0: + // Gun 1 H Low break; - - case NREG_INTCTRL+0: /* Interrupt control */ - case NREG_INTCTRL+1: /* Interrupt control */ - if (LOG_NILE) logerror("%08X:NILE READ: interrupt control(%03X) = %08X\n", safe_pc(), offset*4, result); - logit = 0; + case 1: + // Gun 1 H High break; - - case NREG_INTSTAT0+0: /* Interrupt status 0 */ - case NREG_INTSTAT0+1: /* Interrupt status 0 */ - if (LOG_NILE) logerror("%08X:NILE READ: interrupt status 0(%03X) = %08X\n", safe_pc(), offset*4, result); - logit = 0; + case 2: + // Gun 1 V Low break; - - case NREG_INTSTAT1+0: /* Interrupt status 1 */ - case NREG_INTSTAT1+1: /* Interrupt status 1 */ - if (LOG_NILE) logerror("%08X:NILE READ: interrupt status 1/enable(%03X) = %08X\n", safe_pc(), offset*4, result); - logit = 0; + case 3: + // Gun 1 V High break; - - case NREG_INTCLR+0: /* Interrupt clear */ - case NREG_INTCLR+1: /* Interrupt clear */ - if (LOG_NILE) logerror("%08X:NILE READ: interrupt clear(%03X) = %08X\n", safe_pc(), offset*4, result); - logit = 0; + case 4: + // Gun 2 H Low break; - - case NREG_INTPPES+0: /* PCI Interrupt control */ - case NREG_INTPPES+1: /* PCI Interrupt control */ - if (LOG_NILE) logerror("%08X:NILE READ: PCI interrupt control(%03X) = %08X\n", safe_pc(), offset*4, result); - logit = 0; + case 5: + // Gun 2 H High break; - - case NREG_PCIERR+0: /* PCI error */ - case NREG_PCIERR+1: /* PCI error */ - case NREG_PCICTRL+0: /* PCI control */ - case NREG_PCICTRL+1: /* PCI arbiter */ - case NREG_PCIINIT0+0: /* PCI master */ - case NREG_PCIINIT0+1: /* PCI master */ - case NREG_PCIINIT1+0: /* PCI master */ - case NREG_PCIINIT1+1: /* PCI master */ - logit = 0; + case 6: + // Gun 2 V Low break; - - case NREG_T0CNTR: /* SDRAM timer control (counter) */ - case NREG_T1CNTR: /* bus timeout timer control (counter) */ - case NREG_T2CNTR: /* general purpose timer control (counter) */ - case NREG_T3CNTR: /* watchdog timer control (counter) */ - which = (offset - NREG_T0CTRL) / 4; - if (m_nile_regs[offset - 1] & 1) - { - //if (m_nile_regs[offset - 1] & 2) - // logerror("Unexpected value: timer %d is prescaled\n", which); - uint32_t scale = 1; - if (m_nile_regs[offset - 1] & 2) { - uint32_t scaleSrc = (m_nile_regs[offset - 1] >> 2) & 0x3; - scale = m_nile_regs[NREG_T0CTRL + scaleSrc * 4]; - logerror("Timer value: timer %d is prescaled by \n", which, scale); - } - result = m_nile_regs[offset + 1] = m_timer[which]->remaining().as_double() * (double)SYSTEM_CLOCK / scale; - } - - if (LOG_TIMERS) logerror("%08X:NILE READ: timer %d counter(%03X) = %08X\n", safe_pc(), which, offset*4, result); - logit = 0; - break; - - case NREG_UARTIIR: /* serial port interrupt ID */ - if (m_nile_regs[NREG_UARTIER] & 2) - result = 0x02; /* transmitter buffer IRQ pending */ - else - result = 0x01; /* no IRQ pending */ - break; - - case NREG_UARTLSR: /* serial port line status */ - result = 0x60; - logit = 0; + case 7: + // Gun 2 V High break; - - case NREG_VID: - case NREG_PCICMD: - case NREG_REVID: - case NREG_CLSIZ: - case NREG_BARC: - case NREG_BAR0: - case NREG_BAR1: - case NREG_CIS: - case NREG_SSVID: - case NREG_ROM: - case NREG_INTLIN: - case NREG_BAR2: - case NREG_BAR3: - case NREG_BAR4: - case NREG_BAR5: - case NREG_BAR6: - case NREG_BAR7: - case NREG_BAR8: - case NREG_BARB: - result = pci_bridge_r(space, offset & 0x3f, mem_mask); - break; - + } + break; } - - if (LOG_NILE && logit) - logerror("%06X:nile read from offset %03X = %08X\n", safe_pc(), offset*4, result); + } + if (LOG_SIO) + logerror("%08X: sio_r: offset: %08x index: %d result: %02X\n", machine().device("maincpu")->safe_pc(), offset, index, result); return result; } -WRITE32_MEMBER( vegas_state::nile_w ) +WRITE8_MEMBER(vegas_state::sio_w) { - uint32_t olddata = m_nile_regs[offset]; - bool logit = true; - int which; - - COMBINE_DATA(&m_nile_regs[offset]); - - switch (offset) - { - case NREG_CPUSTAT+0: /* CPU status */ - case NREG_CPUSTAT+1: /* CPU status */ - if (LOG_NILE) logerror("%08X:NILE WRITE: CPU status(%03X) = %08X & %08X\n", safe_pc(), offset*4, data, mem_mask); - logit = 0; - break; - - case NREG_INTCTRL+0: /* Interrupt control */ - case NREG_INTCTRL+1: /* Interrupt control */ - if (LOG_NILE) logerror("%08X:NILE WRITE: interrupt control(%03X) = %08X & %08X\n", safe_pc(), offset*4, data, mem_mask); - logit = 0; - update_nile_irqs(); - break; - - case NREG_INTSTAT0+0: /* Interrupt status 0 */ - case NREG_INTSTAT0+1: /* Interrupt status 0 */ - if (LOG_NILE) logerror("%08X:NILE WRITE: interrupt status 0(%03X) = %08X & %08X\n", safe_pc(), offset*4, data, mem_mask); - logit = 0; - update_nile_irqs(); - break; - - case NREG_INTSTAT1+0: /* Interrupt status 1 */ - case NREG_INTSTAT1+1: /* Interrupt status 1 */ - if (LOG_NILE) logerror("%08X:NILE WRITE: interrupt status 1/enable(%03X) = %08X & %08X\n", safe_pc(), offset*4, data, mem_mask); - logit = 0; - update_nile_irqs(); - break; - - case NREG_INTCLR+0: /* Interrupt clear */ - case NREG_INTCLR+1: /* Interrupt clear */ - if (LOG_NILE) logerror("%08X:NILE WRITE: interrupt clear(%03X) = %08X & %08X\n", safe_pc(), offset*4, data, mem_mask); - logit = 0; - m_nile_irq_state &= ~(m_nile_regs[offset] & ~0xf00); - update_nile_irqs(); - break; - - case NREG_INTPPES+0: /* PCI Interrupt control */ - case NREG_INTPPES+1: /* PCI Interrupt control */ - if (LOG_NILE) logerror("%08X:NILE WRITE: PCI interrupt control(%03X) = %08X & %08X\n", safe_pc(), offset*4, data, mem_mask); - logit = 0; - break; - - case NREG_PCIERR+0: /* PCI error */ - case NREG_PCIERR+1: /* PCI error */ - case NREG_PCICTRL+0: /* PCI control */ - case NREG_PCICTRL+1: /* PCI arbiter */ - case NREG_PCIINIT0+0: /* PCI master */ - case NREG_PCIINIT0+1: /* PCI master */ - case NREG_PCIINIT1+1: /* PCI master */ - logit = 0; - break; - - case NREG_PCIINIT1+0: /* PCI master */ - if (((olddata & 0xe) == 0xa) != ((m_nile_regs[offset] & 0xe) == 0xa)) - remap_dynamic_addresses(); - logit = 0; - break; - - case NREG_T0CTRL+1: /* SDRAM timer control (control bits) */ - case NREG_T1CTRL+1: /* bus timeout timer control (control bits) */ - case NREG_T2CTRL+1: /* general purpose timer control (control bits) */ - case NREG_T3CTRL+1: /* watchdog timer control (control bits) */ - which = (offset - NREG_T0CTRL) / 4; - if (LOG_NILE) logerror("%08X:NILE WRITE: timer %d control(%03X) = %08X & %08X\n", safe_pc(), which, offset*4, data, mem_mask); - logit = 0; - - /* timer just enabled? */ - if (!(olddata & 1) && (m_nile_regs[offset] & 1)) - { - uint32_t scale = m_nile_regs[offset - 1]; - //if (m_nile_regs[offset] & 2) - // logerror("Unexpected value: timer %d is prescaled\n", which); - if (m_nile_regs[offset] & 2) { - uint32_t scaleSrc = (m_nile_regs[offset] >> 2) & 0x3; - scale *= m_nile_regs[NREG_T0CTRL + scaleSrc * 4]; - logerror("Timer scale: timer %d is scaled by %08X\n", which, m_nile_regs[NREG_T0CTRL + which * 4]); - } - if (scale != 0) - m_timer[which]->adjust(TIMER_PERIOD * scale, which); - if (LOG_TIMERS) logerror("Starting timer %d at a rate of %f Hz scale = %08X\n", which, ATTOSECONDS_TO_HZ((TIMER_PERIOD * (m_nile_regs[offset + 1] + 1)).attoseconds()), scale); - } - - /* timer disabled? */ - else if ((olddata & 1) && !(m_nile_regs[offset] & 1)) + if (m_cpuio_data[3] & 0x1) { + int index = offset >> 12; + switch (index) { + case 0: + if (LOG_SIO) + logerror("sio_w: Reset Control offset: %08x index: %d data: %02X\n", offset, index, data); + // Reset Control: Bit 0=>Reset IOASIC, Bit 1=>Reset NSS Connection, Bit 2=>Reset SMC, Bit 3=>Reset VSYNC, Bit 4=>VSYNC Polarity + m_sio_irq_clear = data; + + /* bit 0x01 seems to be used to reset the IOASIC */ + if (!(data & 0x01)) { - //if (m_nile_regs[offset] & 2) - // logerror("Unexpected value: timer %d is prescaled\n", which); - uint32_t scale = 1; - if (m_nile_regs[offset] & 2) { - uint32_t scaleSrc = (m_nile_regs[offset] >> 2) & 0x3; - scale = m_nile_regs[NREG_T0CTRL + scaleSrc * 4]; - logerror("Timer scale: timer %d is scaled by %08X\n", which, scale); - } - m_nile_regs[offset + 1] = m_timer[which]->remaining().as_double() * SYSTEM_CLOCK / scale; - m_timer[which]->adjust(attotime::never, which); + m_ioasic->ioasic_reset(); + m_dcs->reset_w(data & 0x01); } - break; - case NREG_T0CNTR: /* SDRAM timer control (counter) */ - case NREG_T1CNTR: /* bus timeout timer control (counter) */ - case NREG_T2CNTR: /* general purpose timer control (counter) */ - case NREG_T3CNTR: /* watchdog timer control (counter) */ - which = (offset - NREG_T0CTRL) / 4; - if (LOG_TIMERS) logerror("%08X:NILE WRITE: timer %d counter(%03X) = %08X & %08X\n", safe_pc(), which, offset*4, data, mem_mask); - logit = 0; - - if (m_nile_regs[offset - 1] & 1) + /* they toggle bit 0x08 low to reset the VBLANK */ + if (!(data & 0x08)) { - //if (m_nile_regs[offset - 1] & 2) - // logerror("Unexpected value: timer %d is prescaled\n", which); - uint32_t scale = 1; - if (m_nile_regs[offset - 1] & 2) { - uint32_t scaleSrc = (m_nile_regs[offset - 1] >> 2) & 0x3; - scale = m_nile_regs[NREG_T0CTRL + scaleSrc * 4]; - logerror("Timer scale: timer %d is scaled by %08X\n", which, scale); - } - m_timer[which]->adjust(TIMER_PERIOD * m_nile_regs[offset] * scale, which); + m_sio_irq_state &= ~0x20; + update_sio_irqs(); } break; - - case NREG_UARTTHR: /* serial port output */ - if (PRINTF_SERIAL) osd_printf_info("%c", data & 0xff); - logit = 0; + case 1: + // Interrupt Enable + // Bit 0 => SIO Watchdog + // Bit 1 => A/D Converter + // Bit 2 => IOASIC + // Bit 3 => NSS / Hi-Link + // Bit 4 => Ethernet + // Bit 5 => Vsync + if (LOG_SIO) + logerror("sio_w: Interrupt Enable offset: %08x index: %d data: %02X\n", offset, index, data); + m_sio_irq_enable = data; + update_sio_irqs(); break; - case NREG_UARTIER: /* serial interrupt enable */ - update_nile_irqs(); + case 4: + // LED + m_sio_led_state = data; break; - - case NREG_VID: - case NREG_PCICMD: - case NREG_REVID: - case NREG_CLSIZ: - case NREG_BARC: - case NREG_BAR0: - case NREG_BAR1: - case NREG_CIS: - case NREG_SSVID: - case NREG_ROM: - case NREG_INTLIN: - case NREG_BAR2: - case NREG_BAR3: - case NREG_BAR4: - case NREG_BAR5: - case NREG_BAR6: - case NREG_BAR7: - case NREG_BAR8: - case NREG_BARB: - pci_bridge_w(space, offset & 0x3f, data, mem_mask); + case 6: + // CMOS Unlock + m_cmos_unlocked = 1; break; - - case NREG_DCS2: - case NREG_DCS3: - case NREG_DCS4: - case NREG_DCS5: - case NREG_DCS6: - case NREG_DCS7: - case NREG_DCS8: - case NREG_PCIW0: - case NREG_PCIW1: - remap_dynamic_addresses(); + case 7: + // Watchdog + space.device().execute().eat_cycles(100); break; - } - - if (LOG_NILE && logit) - logerror("%06X:nile write to offset %03X = %08X & %08X\n", safe_pc(), offset*4, data, mem_mask); -} - - - -/************************************* - * - * IDE interrupts - * - *************************************/ - -WRITE_LINE_MEMBER(vegas_state::ide_interrupt) -{ - m_ide_irq_state = state; - if (state) - m_nile_irq_state |= 0x800; - else - m_nile_irq_state &= ~0x800; - update_nile_irqs(); -} - - - -/************************************* - * - * SIO interrupts - * - *************************************/ - -void vegas_state::update_sio_irqs() -{ - if (m_sio_irq_state & m_sio_irq_enable) - m_nile_irq_state |= 0x400; - else - m_nile_irq_state &= ~0x400; - update_nile_irqs(); -} - - -WRITE_LINE_MEMBER(vegas_state::vblank_assert) -{ - if (!m_vblank_state && state) - { - m_sio_irq_state |= 0x20; - update_sio_irqs(); - } - m_vblank_state = state; - - /* if we have stalled DMA, restart */ -// if (dma_pending_on_vblank[0]) { perform_dma(0); } -// if (dma_pending_on_vblank[1]) { perform_dma(1); } -// if (dma_pending_on_vblank[2]) { perform_dma(2); } -// if (dma_pending_on_vblank[3]) { perform_dma(3); } -} - - -WRITE_LINE_MEMBER(vegas_state::ioasic_irq) -{ - if (state) - m_sio_irq_state |= 0x04; - else - m_sio_irq_state &= ~0x04; - update_sio_irqs(); -} - -WRITE_LINE_MEMBER(vegas_state::ethernet_interrupt) -{ - if (state) - m_sio_irq_state |= 0x10; - else - m_sio_irq_state &= ~0x10; - update_sio_irqs(); -} - - -READ32_MEMBER( vegas_state::sio_irq_clear_r ) -{ - return m_sio_irq_clear; -} - - -WRITE32_MEMBER( vegas_state::sio_irq_clear_w ) -{ - if (ACCESSING_BITS_0_7) - { - m_sio_irq_clear = data; - - /* bit 0x01 seems to be used to reset the IOASIC */ - if (!(data & 0x01)) - { - m_ioasic->ioasic_reset(); - m_dcs->reset_w(data & 0x01); } - - /* they toggle bit 0x08 low to reset the VBLANK */ - if (!(data & 0x08)) - { - m_sio_irq_state &= ~0x20; - update_sio_irqs(); - } - } -} - - -READ32_MEMBER( vegas_state::sio_irq_enable_r ) -{ - return m_sio_irq_enable; -} - - -WRITE32_MEMBER( vegas_state::sio_irq_enable_w ) -{ - if (ACCESSING_BITS_0_7) - { - m_sio_irq_enable = data; - update_sio_irqs(); + if (LOG_SIO) + logerror("sio_w: offset: %08x index: %d data: %02X\n", offset, index, data); } } - -READ32_MEMBER( vegas_state::sio_irq_cause_r ) -{ - return m_sio_irq_state & m_sio_irq_enable; -} - - -READ32_MEMBER( vegas_state::sio_irq_status_r ) -{ - return m_sio_irq_state; -} - - -WRITE32_MEMBER( vegas_state::sio_led_w ) -{ - if (ACCESSING_BITS_0_7) - m_sio_led_state = data; -} - - -READ32_MEMBER( vegas_state::sio_led_r ) -{ - return m_sio_led_state; -} - - - /************************************* * - * SIO FPGA accesses + * CPU IO accesses * *************************************/ -WRITE32_MEMBER( vegas_state::sio_w ) +WRITE8_MEMBER( vegas_state::cpu_io_w ) { - if (ACCESSING_BITS_0_7) offset += 0; - if (ACCESSING_BITS_8_15) offset += 1; - if (ACCESSING_BITS_16_23) offset += 2; - if (ACCESSING_BITS_24_31) offset += 3; + // 0: system LED + // 1: PLD Config / Clock Gen + // 2: PLD Status / Jammma Serial Sense + // 3: System Reset Bit 0=>enable sio, Bit 1=>enable ide, Bit 2=>enable PCI if (LOG_SIO && offset != 0) - logerror("%08X:sio write to offset %X = %02X\n", machine().device("maincpu")->safe_pc(), offset, data >> (offset*8)); + logerror("%08X:cpuio write to offset %X = %02X\n", machine().device("maincpu")->safe_pc(), offset, data); if (offset < 4) - m_sio_data[offset] = data >> (offset*8); + m_cpuio_data[offset] = data; if (offset == 1) - m_sio_data[2] = (m_sio_data[2] & ~0x02) | ((m_sio_data[1] & 0x01) << 1) | (m_sio_data[1] & 0x01); + m_cpuio_data[2] = (m_cpuio_data[2] & ~0x02) | ((m_cpuio_data[1] & 0x01) << 1) | (m_cpuio_data[1] & 0x01); + if (offset == 1) { + if (!(data & 0x1)) { + // Need to clear this register while programming SIO FPGA so that fpga config data doesn't register in sio_w + m_cpuio_data[3] &= ~0x1; + } + } } -READ32_MEMBER( vegas_state::sio_r ) +READ8_MEMBER( vegas_state::cpu_io_r ) { uint32_t result = 0; - if (ACCESSING_BITS_0_7) offset += 0; - if (ACCESSING_BITS_8_15) offset += 1; - if (ACCESSING_BITS_16_23) offset += 2; - if (ACCESSING_BITS_24_31) offset += 3; if (offset < 4) - result = m_sio_data[0] | (m_sio_data[1] << 8) | (m_sio_data[2] << 16) | (m_sio_data[3] << 24); + result = m_cpuio_data[offset]; if (LOG_SIO && offset != 2) - logerror("%08X:sio read from offset %X = %02X\n", machine().device("maincpu")->safe_pc(), offset, result >> (offset*8)); + logerror("%08X:cpuio read from offset %X = %02X\n", machine().device("maincpu")->safe_pc(), offset, result); return result; } @@ -1499,54 +718,11 @@ WRITE32_MEMBER( vegas_state::analog_port_w ) * *************************************/ -WRITE32_MEMBER( vegas_state::vegas_watchdog_w ) -{ - space.device().execute().eat_cycles(100); -} - - WRITE32_MEMBER( vegas_state::asic_fifo_w ) { m_ioasic->fifo_w(data); } - -READ32_MEMBER( vegas_state::ide_main_r ) -{ - return m_ide->read_cs0(space, offset, mem_mask); -} - - -WRITE32_MEMBER( vegas_state::ide_main_w ) -{ - m_ide->write_cs0(space, offset, data, mem_mask); -} - - -READ32_MEMBER( vegas_state::ide_alt_r ) -{ - return m_ide->read_cs1(space, offset + 1, mem_mask); -} - - -WRITE32_MEMBER( vegas_state::ide_alt_w ) -{ - m_ide->write_cs1(space, offset + 1, data, mem_mask); -} - - -READ32_MEMBER( vegas_state::ide_bus_master32_r ) -{ - return m_ide->bmdma_r(space, offset, mem_mask); -} - - -WRITE32_MEMBER( vegas_state::ide_bus_master32_w ) -{ - m_ide->bmdma_w(space, offset, data, mem_mask); -} - - READ32_MEMBER( vegas_state::ethernet_r ) { uint32_t result = 0; @@ -1572,204 +748,14 @@ WRITE32_MEMBER( vegas_state::dcs3_fifo_full_w ) m_ioasic->fifo_full_w(data); } - - -/************************************* - * - * Dynamic addressing - * - *************************************/ - -#define add_dynamic_address(s,e,r,w) _add_dynamic_address(s,e,r,w) - - -inline void vegas_state::_add_dynamic_address(offs_t start, offs_t end, read32_delegate read, write32_delegate write) +READ32_MEMBER(vegas_state::unknown_r) { - dynamic_address *dynamic = m_dynamic; - dynamic[m_dynamic_count].start = start; - dynamic[m_dynamic_count].end = end; - dynamic[m_dynamic_count].read = read; - dynamic[m_dynamic_count].write = write; - m_dynamic_count++; -} - -void vegas_state::remap_dynamic_addresses() -{ - dynamic_address *dynamic = m_dynamic; - int voodoo_type = m_voodoo->voodoo_get_type(); - offs_t base; - int addr; - - /* unmap everything we know about */ - for (addr = 0; addr < m_dynamic_count; addr++) - m_maincpu->space(AS_PROGRAM).unmap_readwrite(dynamic[addr].start, dynamic[addr].end); - - /* the build the list of stuff */ - m_dynamic_count = 0; - - /* DCS2 */ - base = m_nile_regs[NREG_DCS2] & 0x1fffff00; - if (base >= m_rambase.bytes()) - { - add_dynamic_address(base + 0x0000, base + 0x0003, read32_delegate(FUNC(vegas_state::sio_irq_clear_r), this), write32_delegate(FUNC(vegas_state::sio_irq_clear_w), this)); - add_dynamic_address(base + 0x1000, base + 0x1003, read32_delegate(FUNC(vegas_state::sio_irq_enable_r), this), write32_delegate(FUNC(vegas_state::sio_irq_enable_w), this)); - add_dynamic_address(base + 0x2000, base + 0x2003, read32_delegate(FUNC(vegas_state::sio_irq_cause_r), this), write32_delegate()); - add_dynamic_address(base + 0x3000, base + 0x3003, read32_delegate(FUNC(vegas_state::sio_irq_status_r), this), write32_delegate()); - add_dynamic_address(base + 0x4000, base + 0x4003, read32_delegate(FUNC(vegas_state::sio_led_r), this), write32_delegate(FUNC(vegas_state::sio_led_w), this)); - add_dynamic_address(base + 0x5000, base + 0x5007, NOP_HANDLER, write32_delegate()); - add_dynamic_address(base + 0x6000, base + 0x6003, read32_delegate(), write32_delegate(FUNC(vegas_state::cmos_unlock_w), this)); - add_dynamic_address(base + 0x7000, base + 0x7003, read32_delegate(), write32_delegate(FUNC(vegas_state::vegas_watchdog_w), this)); - } - - /* DCS3 */ - base = m_nile_regs[NREG_DCS3] & 0x1fffff00; - if (base >= m_rambase.bytes()) - add_dynamic_address(base + 0x0000, base + 0x0003, read32_delegate(FUNC(vegas_state::analog_port_r), this), write32_delegate(FUNC(vegas_state::analog_port_w), this)); - - /* DCS4 */ - base = m_nile_regs[NREG_DCS4] & 0x1fffff00; - if (base >= m_rambase.bytes()) - add_dynamic_address(base + 0x0000, base + 0x7fff, read32_delegate(FUNC(vegas_state::timekeeper_r), this), write32_delegate(FUNC(vegas_state::timekeeper_w), this)); - - /* DCS5 */ - base = m_nile_regs[NREG_DCS5] & 0x1fffff00; - if (base >= m_rambase.bytes()) - add_dynamic_address(base + 0x0000, base + 0x0003, read32_delegate(FUNC(vegas_state::sio_r), this), write32_delegate(FUNC(vegas_state::sio_w), this)); - - /* DCS6 */ - base = m_nile_regs[NREG_DCS6] & 0x1fffff00; - if (base >= m_rambase.bytes()) - { - add_dynamic_address(base + 0x0000, base + 0x003f, read32_delegate(FUNC(midway_ioasic_device::packed_r),(midway_ioasic_device*)m_ioasic), write32_delegate(FUNC(midway_ioasic_device::packed_w),(midway_ioasic_device*)m_ioasic)); - add_dynamic_address(base + 0x1000, base + 0x1003, read32_delegate(), write32_delegate(FUNC(vegas_state::asic_fifo_w), this)); - if (m_dcs_idma_cs != 0) - add_dynamic_address(base + 0x3000, base + 0x3003, read32_delegate(), write32_delegate(FUNC(vegas_state::dcs3_fifo_full_w), this)); - if (m_dcs_idma_cs == 6) - { - add_dynamic_address(base + 0x5000, base + 0x5003, read32_delegate(), write32_delegate(FUNC(dcs_audio_device::dsio_idma_addr_w),(dcs_audio_device*)m_dcs)); - add_dynamic_address(base + 0x7000, base + 0x7003, read32_delegate(FUNC(dcs_audio_device::dsio_idma_data_r),(dcs_audio_device*)m_dcs), write32_delegate(FUNC(dcs_audio_device::dsio_idma_data_w),(dcs_audio_device*)m_dcs)); - } - } - - /* DCS7 */ - base = m_nile_regs[NREG_DCS7] & 0x1fffff00; - if (base >= m_rambase.bytes()) - { - add_dynamic_address(base + 0x1000, base + 0x100f, read32_delegate(FUNC(vegas_state::ethernet_r), this), write32_delegate(FUNC(vegas_state::ethernet_w), this)); - if (m_dcs_idma_cs == 7) - { - add_dynamic_address(base + 0x5000, base + 0x5003, read32_delegate(), write32_delegate(FUNC(dcs_audio_device::dsio_idma_addr_w),(dcs_audio_device*)m_dcs)); - add_dynamic_address(base + 0x7000, base + 0x7003, read32_delegate(FUNC(dcs_audio_device::dsio_idma_data_r),(dcs_audio_device*)m_dcs), write32_delegate(FUNC(dcs_audio_device::dsio_idma_data_w),(dcs_audio_device*)m_dcs)); - } - } - - /* PCI config space */ - if ((m_nile_regs[NREG_PCIINIT1] & 0xe) == 0xa) - { - base = m_nile_regs[NREG_PCIW1] & 0x1fffff00; - if (base >= m_rambase.bytes()) - { - add_dynamic_address(base + (1 << (21 + 4)) + 0x0000, base + (1 << (21 + 4)) + 0x00ff, read32_delegate(FUNC(vegas_state::pci_3dfx_r), this), write32_delegate(FUNC(vegas_state::pci_3dfx_w), this)); - add_dynamic_address(base + (1 << (21 + 5)) + 0x0000, base + (1 << (21 + 5)) + 0x00ff, read32_delegate(FUNC(vegas_state::pci_ide_r), this), write32_delegate(FUNC(vegas_state::pci_ide_w), this)); - } - } - - /* PCI real space */ - else - { - /* IDE controller */ - base = m_pci_ide_regs[0x04] & 0xfffffff0; - if (base >= m_rambase.bytes() && base < 0x20000000) - add_dynamic_address(base + 0x0000, base + 0x000f, read32_delegate(FUNC(vegas_state::ide_main_r), this), write32_delegate(FUNC(vegas_state::ide_main_w), this)); - - base = m_pci_ide_regs[0x05] & 0xfffffffc; - if (base >= m_rambase.bytes() && base < 0x20000000) - add_dynamic_address(base + 0x0000, base + 0x0003, read32_delegate(FUNC(vegas_state::ide_alt_r), this), write32_delegate(FUNC(vegas_state::ide_alt_w), this)); - - base = m_pci_ide_regs[0x08] & 0xfffffff0; - if (base >= m_rambase.bytes() && base < 0x20000000) - add_dynamic_address(base + 0x0000, base + 0x0007, read32_delegate(FUNC(vegas_state::ide_bus_master32_r), this), write32_delegate(FUNC(vegas_state::ide_bus_master32_w), this)); - - /* 3dfx card */ - base = m_pci_3dfx_regs[0x04] & 0xfffffff0; - if (base >= m_rambase.bytes() && base < 0x20000000) - { - if (voodoo_type == TYPE_VOODOO_2) - add_dynamic_address(base + 0x000000, base + 0xffffff, read32_delegate(FUNC(voodoo_device::voodoo_r),(voodoo_device*)m_voodoo), write32_delegate(FUNC(voodoo_device::voodoo_w),(voodoo_device*)m_voodoo)); - else - add_dynamic_address(base + 0x000000, base + 0x1ffffff, read32_delegate(FUNC(voodoo_banshee_device::banshee_r),(voodoo_banshee_device*)m_voodoo), write32_delegate(FUNC(voodoo_banshee_device::banshee_w),(voodoo_banshee_device*)m_voodoo)); - } - - if (voodoo_type >= TYPE_VOODOO_BANSHEE) - { - base = m_pci_3dfx_regs[0x05] & 0xfffffff0; - if (base >= m_rambase.bytes() && base < 0x20000000) - add_dynamic_address(base + 0x0000000, base + 0x1ffffff, read32_delegate(FUNC(voodoo_banshee_device::banshee_fb_r),(voodoo_banshee_device*)m_voodoo), write32_delegate(FUNC(voodoo_banshee_device::banshee_fb_w),(voodoo_banshee_device*)m_voodoo)); - - base = m_pci_3dfx_regs[0x06] & 0xfffffff0; - if (base >= m_rambase.bytes() && base < 0x20000000) - add_dynamic_address(base + 0x0000000, base + 0x00000ff, read32_delegate(FUNC(voodoo_banshee_device::banshee_io_r),(voodoo_banshee_device*)m_voodoo), write32_delegate(FUNC(voodoo_banshee_device::banshee_io_w),(voodoo_banshee_device*)m_voodoo)); - - base = m_pci_3dfx_regs[0x0c] & 0xffff0000; - if (base >= m_rambase.bytes() && base < 0x20000000) - add_dynamic_address(base + 0x0000000, base + 0x000ffff, read32_delegate(FUNC(voodoo_banshee_device::banshee_rom_r),(voodoo_banshee_device*)m_voodoo), write32_delegate()); - } - } - - /* now remap everything */ - if (LOG_DYNAMIC) logerror("remap_dynamic_addresses:\n"); - address_space &space = m_maincpu->space(AS_PROGRAM); - for (addr = 0; addr < m_dynamic_count; addr++) - { - if (LOG_DYNAMIC) logerror(" installing: %08X-%08X \n", dynamic[addr].start, dynamic[addr].end); - - if (dynamic[addr].read == NOP_HANDLER) - space.nop_read(dynamic[addr].start, dynamic[addr].end); - else if (!dynamic[addr].read.isnull()) - space.install_read_handler(dynamic[addr].start, dynamic[addr].end, dynamic[addr].read); - if (!dynamic[addr].write.isnull()) - space.install_write_handler(dynamic[addr].start, dynamic[addr].end, dynamic[addr].write); - } - - if (LOG_DYNAMIC) - { - ++m_count; - popmessage("Remaps = %d", m_count); - } + uint32_t result = 0xffffffff; + if (1) + logerror("unknown_r: offset: %08X data: %08X mask: %08X\n", offset * 4, result, mem_mask); + return result; } - - -/************************************* - * - * Memory maps - * - *************************************/ - -static ADDRESS_MAP_START( vegas_map_8mb, AS_PROGRAM, 32, vegas_state ) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x1fa00000, 0x1fa00fff) AM_READWRITE(nile_r, nile_w) AM_SHARE("nile_regs") - - AM_RANGE(0x01700000, 0x017fffff) AM_ROM AM_REGION("update", 0) - - AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("rombase") -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( vegas_map_32mb, AS_PROGRAM, 32, vegas_state ) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x01ffffff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x1fa00000, 0x1fa00fff) AM_READWRITE(nile_r, nile_w) AM_SHARE("nile_regs") - - - AM_RANGE(0x01700000, 0x017fffff) AM_ROM AM_REGION("update", 0) - - AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("rombase") -ADDRESS_MAP_END - - - /************************************* * * Input ports @@ -1976,21 +962,31 @@ static INPUT_PORTS_START( warfa ) PORT_MODIFY("DIPS") PORT_DIPNAME( 0x0001, 0x0001, "PM Dump" ) - PORT_DIPSETTING( 0x0001, "Watchdog resets only" ) - PORT_DIPSETTING( 0x0000, "All resets" ) + PORT_DIPSETTING( 0x0001, "Watchdog resets only" ) + PORT_DIPSETTING( 0x0000, "All resets" ) PORT_DIPNAME( 0x0002, 0x0002, "Quantum 3dfx card rev" ) - PORT_DIPSETTING( 0x0002, "4" ) - PORT_DIPSETTING( 0x0000, "?" ) + PORT_DIPSETTING( 0x0002, "4" ) + PORT_DIPSETTING( 0x0000, "?" ) PORT_DIPNAME( 0x0040, 0x0040, "Boot ROM Test" ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, "Boot ROM Test v1.3" ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0xc000, 0x4000, "Resolution" ) - PORT_DIPSETTING( 0xc000, "Standard Res 512x256" ) - PORT_DIPSETTING( 0x4000, "Medium Res 512x384" ) - PORT_DIPSETTING( 0x0000, "VGA Res 640x480" ) + PORT_DIPSETTING( 0xc000, "Standard Res 512x256" ) + PORT_DIPSETTING( 0x4000, "Medium Res 512x384" ) + PORT_DIPSETTING( 0x0000, "VGA Res 640x480" ) + + PORT_MODIFY("IN1") + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_J) PORT_NAME("Trigger") + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_K) PORT_NAME("Discard") + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_L) PORT_NAME("Jump") + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_U) PORT_NAME("View") + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CODE(KEYCODE_W) PORT_NAME("Forward") + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CODE(KEYCODE_S) PORT_NAME("Back") + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CODE(KEYCODE_A) PORT_NAME("Dodge Left") + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CODE(KEYCODE_D) PORT_NAME("Dodge Right") PORT_START("AN.0") PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1) @@ -2036,14 +1032,14 @@ static INPUT_PORTS_START( roadburn ) PORT_DIPSETTING( 0x0200, "Medium Res 512x384" ) PORT_DIPSETTING( 0x0000, "VGA Res 640x480" ) - PORT_START("AN.0") /* Steer */ - PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10, 0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) + PORT_START("AN.0") /* Accel */ + PORT_BIT( 0xff, 0x80, IPT_PEDAL ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) - PORT_START("AN.1") /* Accel */ - PORT_BIT( 0xff, 0x80, IPT_PEDAL ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) + PORT_START("AN.1") /* Steer */ + PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_START("AN.2") /* Brake */ - PORT_BIT( 0xff, 0x80, IPT_PEDAL2 ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_START("AN.3") PORT_BIT( 0xff, 0x80, IPT_SPECIAL ) @@ -2250,7 +1246,43 @@ static INPUT_PORTS_START( cartfury ) PORT_BIT( 0xff, 0x80, IPT_SPECIAL ) INPUT_PORTS_END +/************************************* +* +* Memory maps +* +*************************************/ +static ADDRESS_MAP_START(vegas_cs2_map, AS_PROGRAM, 32, vegas_state) + AM_RANGE(0x00000000, 0x00007003) AM_READWRITE8(sio_r, sio_w, 0xffffffff) +ADDRESS_MAP_END + +static ADDRESS_MAP_START(vegas_cs3_map, AS_PROGRAM, 32, vegas_state) + AM_RANGE(0x00000000, 0x00000003) AM_READWRITE(analog_port_r, analog_port_w) + //AM_RANGE(0x00001000, 0x00001003) AM_READWRITE(lcd_r, lcd_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START(vegas_cs4_map, AS_PROGRAM, 32, vegas_state) + AM_RANGE(0x00000000, 0x00007fff) AM_READWRITE(timekeeper_r, timekeeper_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START(vegas_cs5_map, AS_PROGRAM, 32, vegas_state) + AM_RANGE(0x00000000, 0x00000003) AM_READWRITE8(cpu_io_r, cpu_io_w, 0xffffffff) + AM_RANGE(0x00100000, 0x001fffff) AM_READ(unknown_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START(vegas_cs6_map, AS_PROGRAM, 32, vegas_state) + AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, packed_r, packed_w) + AM_RANGE(0x00001000, 0x00001003) AM_WRITE(asic_fifo_w) + AM_RANGE(0x00003000, 0x00003003) AM_WRITE(dcs3_fifo_full_w) // if (m_dcs_idma_cs != 0) + AM_RANGE(0x00005000, 0x00005003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) // if (m_dcs_idma_cs == 6) + AM_RANGE(0x00007000, 0x00007003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) // if (m_dcs_idma_cs == 6) +ADDRESS_MAP_END +static ADDRESS_MAP_START(vegas_cs7_map, AS_PROGRAM, 32, vegas_state) + //AM_RANGE(0x00000000, 0x00000003) AM_READWRITE8(nss_r, nss_w, 0xffffffff) + AM_RANGE(0x00001000, 0x0000100f) AM_READWRITE(ethernet_r, ethernet_w) + AM_RANGE(0x00005000, 0x00005003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) // if (m_dcs_idma_cs == 7) + AM_RANGE(0x00007000, 0x00007003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) // if (m_dcs_idma_cs == 7) +ADDRESS_MAP_END /************************************* * @@ -2258,37 +1290,48 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( vegascore, vegas_state ) +static MACHINE_CONFIG_START( vegascore ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", R5000LE, SYSTEM_CLOCK*2) + MCFG_CPU_ADD("maincpu", R5000LE, vrc5074_device::SYSTEM_CLOCK*2) MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) - MCFG_MIPS3_SYSTEM_CLOCK(SYSTEM_CLOCK) - MCFG_CPU_PROGRAM_MAP(vegas_map_8mb) + MCFG_MIPS3_SYSTEM_CLOCK(vrc5074_device::SYSTEM_CLOCK) - MCFG_M48T37_ADD("timekeeper") + // PCI Bus Devices + MCFG_PCI_ROOT_ADD(":pci") + + MCFG_VRC5074_ADD(PCI_ID_NILE, ":maincpu") + MCFG_VRC5074_SET_SDRAM(0, 0x00800000) + MCFG_VRC5074_SET_CS(2, vegas_cs2_map) + MCFG_VRC5074_SET_CS(3, vegas_cs3_map) + MCFG_VRC5074_SET_CS(4, vegas_cs4_map) + MCFG_VRC5074_SET_CS(5, vegas_cs5_map) + MCFG_VRC5074_SET_CS(6, vegas_cs6_map) + MCFG_VRC5074_SET_CS(7, vegas_cs7_map) + + MCFG_IDE_PCI_ADD(PCI_ID_IDE, 0x10950646, 0x07, 0x0) + MCFG_IDE_PCI_IRQ_HANDLER(DEVWRITELINE(PCI_ID_NILE, vrc5074_device, pci_intr_d)) + + MCFG_VOODOO_PCI_ADD(PCI_ID_VIDEO, TYPE_VOODOO_2, ":maincpu") + MCFG_VOODOO_PCI_FBMEM(2) + MCFG_VOODOO_PCI_TMUMEM(4, 4) + MCFG_DEVICE_MODIFY(PCI_ID_VIDEO":voodoo") + MCFG_VOODOO_VBLANK_CB(DEVWRITELINE(":", vegas_state, vblank_assert)) - MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", nullptr, true) - MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(vegas_state, ide_interrupt)) - MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE("maincpu", AS_PROGRAM) + MCFG_M48T37_ADD("timekeeper") MCFG_SMC91C94_ADD("ethernet") MCFG_SMC91C94_IRQ_CALLBACK(WRITELINE(vegas_state, ethernet_interrupt)) - MCFG_DEVICE_ADD("voodoo", VOODOO_2, STD_VOODOO_2_CLOCK) - MCFG_VOODOO_FBMEM(2) - MCFG_VOODOO_TMUMEM(4,4) - MCFG_VOODOO_SCREEN_TAG("screen") - MCFG_VOODOO_CPU_TAG("maincpu") - MCFG_VOODOO_VBLANK_CB(WRITELINE(vegas_state,vblank_assert)) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(57) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479) - MCFG_SCREEN_UPDATE_DRIVER(vegas_state, screen_update_vegas) + MCFG_SCREEN_UPDATE_DEVICE(PCI_ID_VIDEO, voodoo_pci_device, screen_update) + + /* sound hardware */ MACHINE_CONFIG_END @@ -2298,58 +1341,55 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( vegas250, vegascore ) MCFG_CPU_MODIFY("maincpu") - MCFG_CPU_CLOCK(SYSTEM_CLOCK*2.5) + MCFG_CPU_CLOCK(vrc5074_device::SYSTEM_CLOCK*2.5) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( vegas32m, vegascore ) - MCFG_CPU_MODIFY("maincpu") - MCFG_CPU_PROGRAM_MAP(vegas_map_32mb) + MCFG_DEVICE_MODIFY(PCI_ID_NILE) + MCFG_VRC5074_SET_SDRAM(0, 0x02000000) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( vegasban, vegascore ) - MCFG_CPU_MODIFY("maincpu") - MCFG_CPU_PROGRAM_MAP(vegas_map_32mb) - - MCFG_DEVICE_REMOVE("voodoo") - MCFG_DEVICE_ADD("voodoo", VOODOO_BANSHEE, STD_VOODOO_BANSHEE_CLOCK) - MCFG_VOODOO_FBMEM(16) - MCFG_VOODOO_SCREEN_TAG("screen") - MCFG_VOODOO_CPU_TAG("maincpu") - MCFG_VOODOO_VBLANK_CB(WRITELINE(vegas_state,vblank_assert)) + MCFG_DEVICE_MODIFY(PCI_ID_NILE) + MCFG_VRC5074_SET_SDRAM(0, 0x02000000) + + MCFG_DEVICE_REMOVE(PCI_ID_VIDEO) + MCFG_VOODOO_PCI_ADD(PCI_ID_VIDEO, TYPE_VOODOO_BANSHEE, ":maincpu") + MCFG_VOODOO_PCI_FBMEM(16) + MCFG_DEVICE_MODIFY(PCI_ID_VIDEO":voodoo") + MCFG_VOODOO_VBLANK_CB(DEVWRITELINE(":", vegas_state, vblank_assert)) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( vegasv3, vegas32m ) - MCFG_CPU_REPLACE("maincpu", RM7000LE, SYSTEM_CLOCK*2.5) +static MACHINE_CONFIG_DERIVED( vegasv3, vegascore) + MCFG_CPU_REPLACE("maincpu", RM7000LE, vrc5074_device::SYSTEM_CLOCK*2.5) MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) - MCFG_MIPS3_SYSTEM_CLOCK(SYSTEM_CLOCK) - MCFG_CPU_PROGRAM_MAP(vegas_map_8mb) - - MCFG_DEVICE_REMOVE("voodoo") - MCFG_DEVICE_ADD("voodoo", VOODOO_3, STD_VOODOO_3_CLOCK) - MCFG_VOODOO_FBMEM(16) - MCFG_VOODOO_SCREEN_TAG("screen") - MCFG_VOODOO_CPU_TAG("maincpu") - MCFG_VOODOO_VBLANK_CB(WRITELINE(vegas_state,vblank_assert)) + MCFG_MIPS3_SYSTEM_CLOCK(vrc5074_device::SYSTEM_CLOCK) + + MCFG_DEVICE_REMOVE(PCI_ID_VIDEO) + MCFG_VOODOO_PCI_ADD(PCI_ID_VIDEO, TYPE_VOODOO_3, ":maincpu") + MCFG_VOODOO_PCI_FBMEM(16) + MCFG_DEVICE_MODIFY(PCI_ID_VIDEO":voodoo") + MCFG_VOODOO_VBLANK_CB(DEVWRITELINE(":", vegas_state, vblank_assert)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( denver, vegascore ) - MCFG_CPU_REPLACE("maincpu", RM7000LE, SYSTEM_CLOCK*2.5) + MCFG_CPU_REPLACE("maincpu", RM7000LE, vrc5074_device::SYSTEM_CLOCK*2.5) MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(16384) - MCFG_MIPS3_SYSTEM_CLOCK(SYSTEM_CLOCK) - MCFG_CPU_PROGRAM_MAP(vegas_map_32mb) - - MCFG_DEVICE_REMOVE("voodoo") - MCFG_DEVICE_ADD("voodoo", VOODOO_3, STD_VOODOO_3_CLOCK) - MCFG_VOODOO_FBMEM(16) - MCFG_VOODOO_SCREEN_TAG("screen") - MCFG_VOODOO_CPU_TAG("maincpu") - MCFG_VOODOO_VBLANK_CB(WRITELINE(vegas_state,vblank_assert)) + MCFG_MIPS3_SYSTEM_CLOCK(vrc5074_device::SYSTEM_CLOCK) + MCFG_DEVICE_MODIFY(PCI_ID_NILE) + MCFG_VRC5074_SET_SDRAM(0, 0x02000000) + + MCFG_DEVICE_REMOVE(PCI_ID_VIDEO) + MCFG_VOODOO_PCI_ADD(PCI_ID_VIDEO, TYPE_VOODOO_3, ":maincpu") + MCFG_VOODOO_PCI_FBMEM(16) + MCFG_DEVICE_MODIFY(PCI_ID_VIDEO":voodoo") + MCFG_VOODOO_VBLANK_CB(DEVWRITELINE(":", vegas_state, vblank_assert)) MACHINE_CONFIG_END // Per driver configs @@ -2394,7 +1434,7 @@ static MACHINE_CONFIG_DERIVED( warfa, vegas250 ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( tenthdeg, vegas ) - MCFG_DEVICE_ADD("dcs", DCS2_AUDIO_2104, 0) + MCFG_DEVICE_ADD("dcs", DCS2_AUDIO_2115, 0) MCFG_DCS2_AUDIO_DRAM_IN_MB(4) // MCFG_DCS2_AUDIO_POLLING_OFFSET(0x0afb) -- Not in ram??? @@ -2502,12 +1542,12 @@ MACHINE_CONFIG_END ROM_START( gauntleg ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "legend15.bin", 0x000000, 0x80000, CRC(a8372d70) SHA1(d8cd4fd4d7007ee38bb58b5a818d0f83043d5a48) ) // EPROM Boot code. Version: Nov 17 1998 19:18:28 / 1.5 Nov 17 1998 19:21:49 - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts 1.5 1/14/1999 Game 1/14/1999 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.5 1/14/1999 Game 1/14/1999 */ DISK_IMAGE( "gauntleg", 0, SHA1(66eb70e2fba574a7abe54be8bd45310654b24b08) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */ @@ -2516,11 +1556,11 @@ ROM_END ROM_START( gauntleg12 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "legend13.bin", 0x000000, 0x80000, CRC(34674c5f) SHA1(92ec1779f3ab32944cbd953b6e1889503a57794b) ) // EPROM Boot code. Version: Sep 25 1998 18:34:43 / 1.3 Sep 25 1998 18:33:45 ROM_LOAD( "legend14.bin", 0x000000, 0x80000, CRC(66869402) SHA1(bf470e0b9198b80f8baf8b9432a7e1df8c7d18ca) ) // EPROM Boot code. Version: Oct 30 1998 17:48:21 / 1.4 Oct 30 1998 17:44:29 - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) ROM_SYSTEM_BIOS( 0, "noupdate", "No Update Rom" ) ROM_SYSTEM_BIOS( 1, "up16_1", "Disk Update 1.2 to 1.6 Step 1 of 3" ) @@ -2532,7 +1572,7 @@ ROM_START( gauntleg12 ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts 1.4 10/22/1998 Main 10/23/1998 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.4 10/22/1998 Main 10/23/1998 */ DISK_IMAGE( "gauntl12", 0, SHA1(62917fbd692d004bc391287349041ebe669385cf) ) // compressed with -chs 4969,16,63 (which is apparently correct for a Quantum FIREBALL 2.5 GB and allows the update program to work) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */ @@ -2541,13 +1581,13 @@ ROM_END ROM_START( gauntdl ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* EPROM 1.7 12/14/1999 */ + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.7 12/14/1999 */ ROM_LOAD( "gauntdl.bin", 0x000000, 0x80000, CRC(3d631518) SHA1(d7f5a3bc109a19c9c7a711d607ff87e11868b536) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts: 1.9 3/17/2000 Game 5/9/2000 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts: 1.9 3/17/2000 Game 5/9/2000 */ DISK_IMAGE( "gauntdl", 0, SHA1(ba3af48171e727c2f7232c06dcf8411cbcf14de8) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */ @@ -2556,13 +1596,13 @@ ROM_END ROM_START( gauntdl24 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* EPROM 1.7 12/14/1999 */ + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.7 12/14/1999 */ ROM_LOAD( "gauntdl.bin", 0x000000, 0x80000, CRC(3d631518) SHA1(d7f5a3bc109a19c9c7a711d607ff87e11868b536) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts: 1.9 3/17/2000 Game 3/19/2000 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts: 1.9 3/17/2000 Game 3/19/2000 */ DISK_IMAGE( "gauntd24", 0, SHA1(3e055794d23d62680732e906cfaf9154765de698) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */ @@ -2571,13 +1611,13 @@ ROM_END ROM_START( warfa ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* EPROM 1.9 3/25/1999 */ + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.9 3/25/1999 */ ROM_LOAD( "warboot.v19", 0x000000, 0x80000, CRC(b0c095cd) SHA1(d3b8cccdca83f0ecb49aa7993864cfdaa4e5c6f0) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts 1.3 4/20/1999 Game 4/20/1999 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.3 4/20/1999 Game 4/20/1999 */ DISK_IMAGE( "warfa", 0, SHA1(87f8a8878cd6be716dbd6c68fb1bc7f564ede484) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */ @@ -2585,13 +1625,13 @@ ROM_START( warfa ) ROM_END ROM_START( warfaa ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* EPROM 1.6 Jan 14 1999 */ + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.6 Jan 14 1999 */ ROM_LOAD( "warboot.v16", 0x000000, 0x80000, CRC(1c44b3a3) SHA1(e81c15d7c9bc19078787d39c7f5e48eab003c5f4) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* GUTS 1.1 Mar 16 1999, GAME Mar 16 1999 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* GUTS 1.1 Mar 16 1999, GAME Mar 16 1999 */ DISK_IMAGE( "warfaa", 0, SHA1(b443ba68003f8492e5c20156e0d3091fe51e9224) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */ @@ -2599,13 +1639,13 @@ ROM_START( warfaa ) ROM_END ROM_START( warfab ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) // test: EPROM 1.3 Apr 7 1999 + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) // test: EPROM 1.3 Apr 7 1999 // label: WAR 42CE / BOOT V1.9 / PROG V1.6 ROM_LOAD( "war42ce.bin", 0x000000, 0x80000, CRC(1a6e7f59) SHA1(0d8b4ce1e4b1132689796c4374aa54447b9a3369) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) // test: Guts 1.3 Apr7 1999 Game 1.3 Apr7 1999 + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // test: Guts 1.3 Apr7 1999 Game 1.3 Apr7 1999 // V1.5 DISK_IMAGE( "warfa15", 0, SHA1(bd538bf2f6a245545dae4ea97c433bb3f7d4394e) ) @@ -2614,13 +1654,13 @@ ROM_START( warfab ) ROM_END ROM_START( tenthdeg ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "tenthdeg.bio", 0x000000, 0x80000, CRC(1cd2191b) SHA1(a40c48f3d6a9e2760cec809a79a35abe762da9ce) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts 5/26/1998 Main 8/25/1998 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 5/26/1998 Main 8/25/1998 */ DISK_IMAGE( "tenthdeg", 0, SHA1(41a1a045a2d118cf6235be2cc40bf16dbb8be5d1) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */ @@ -2629,36 +1669,36 @@ ROM_END ROM_START( roadburn ) /* version 1.04 - verified on hardware */ - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* EPROM 2.6 4/22/1999 */ + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 2.6 4/22/1999 */ ROM_LOAD( "rbmain.bin", 0x000000, 0x80000, CRC(060e1aa8) SHA1(2a1027d209f87249fe143500e721dfde7fb5f3bc) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts 5/19/1999 Game 5/19/1999 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 5/19/1999 Game 5/19/1999 */ DISK_IMAGE( "ROAD BURNERS V1.04", 0, SHA1(30567241c000ee572a9cfb1b080c02a51a2b12d2) ) ROM_END ROM_START( roadburn1 ) /* version 1.0 - verified on hardware */ - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* EPROM 2.6 4/22/1999 */ + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 2.6 4/22/1999 */ ROM_LOAD( "rbmain.bin", 0x000000, 0x80000, CRC(060e1aa8) SHA1(2a1027d209f87249fe143500e721dfde7fb5f3bc) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts 4/22/1999 Game 4/22/1999 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 4/22/1999 Game 4/22/1999 */ DISK_IMAGE( "roadburn", 0, SHA1(a62870cceafa6357d7d3505aca250c3f16087566) ) ROM_END ROM_START( nbashowt ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "showtime_mar15_1999.u27", 0x000000, 0x80000, CRC(ff5d620d) SHA1(8f07567929f40a2269a42495dfa9dd5edef688fe) ) // 16:09:14 Mar 15 1999 BIOS FOR SHOWTIME USING BANSHEE / 16:09:01 Mar 15 1999. POST FOR SHOWTIME USING BANSHEE - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // various strings from this image // SHOWTIME REV 2.0 // BUILD DATE: Apr 25 1999 (diag.exe?) @@ -2671,15 +1711,15 @@ ROM_END ROM_START( nbanfl ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "blitz00_sep22_1999.u27", 0x000000, 0x80000, CRC(6a9bd382) SHA1(18b942df6af86ea944c24166dbe88148334eaff9) ) // 16:00:32 Sep 22 1999 BIOS FOR BLITZ00 USING BANSHEE / 16:00:26 Sep 22 1999 POST FOR BLITZ00 USING BANSHEE // ROM_LOAD( "bootnflnba.bin", 0x000000, 0x80000, CRC(3def7053) SHA1(8f07567929f40a2269a42495dfa9dd5edef688fe) ) // 1 byte different to above (0x51b95 is 0x1b instead of 0x18) ROM_LOAD( "blitz00_nov30_1999.u27", 0x000000, 0x80000, CRC(4242bf14) SHA1(c1fcec67d7463df5f41afc89f22c3b4484279534) ) // 15:10:49 Nov 30 1999 BIOS FOR BLITZ00 USING BANSHEE / 15:10:43 Nov 30 1999 POST FOR BLITZ00 USING BANSHEE - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // various strings from this image //NBA SHOWTIME 2.1 //BUILD DATE: Sep 22 1999 (diag.exe?) @@ -2693,13 +1733,13 @@ ROM_END // I'm not sure if NBA Showtime: NBA on NBC Gold was a standalone release, or the version with NBA Showtime: NBA on NBC Gold is actually 'Sports Station' // it's possible the boot rom and CHD are mismatched here ROM_START( nbagold ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "nbagold_jan10_2000.u27", 0x000000, 0x80000, CRC(6768e802) SHA1(d994e3efe14f57e261841134ddd1489fa67d418b) ) // 11:29:11 Jan 10 2000. BIOS FOR NBAGOLD USING BANSHEE / 11:23:58 Jan 10 2000. POST FOR NBAGOLD USING BANSHEE - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // various strings from this image //NBA SHOWTIME GOLD 3.00 //BUILD DATE Feb 18 2000 (diag.exe) @@ -2719,13 +1759,13 @@ ROM_END ROM_START( cartfury ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "cart_mar8_2000.u27", 0x000000, 0x80000, CRC(c44550a2) SHA1(ad30f1c3382ff2f5902a4cbacbb1f0c4e37f42f9) ) // 10:40:17 Mar 8 2000 BIOS FOR CART USING VOODOO3 / 10:39:55 Mar 8 2000 POST FOR CART USING VOODOO3 - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) DISK_IMAGE( "cartfury", 0, SHA1(4c5bc2803297ea9a191bbd8b002d0e46b4ae1563) ) ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2105 data */ @@ -2734,37 +1774,37 @@ ROM_END ROM_START( sf2049 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* EPROM 1.02 7/9/1999 */ + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.02 7/9/1999 */ ROM_LOAD( "sf2049.u27", 0x000000, 0x80000, CRC(174ba8fe) SHA1(baba83b811eca659f00514a008a86ef0ac9680ee) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) /* Guts 1.03 9/3/1999 Game 9/8/1999 */ + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.03 9/3/1999 Game 9/8/1999 */ DISK_IMAGE( "sf2049", 0, SHA1(9e0661b8566a6c78d18c59c11cd3a6628d025405) ) ROM_END ROM_START( sf2049se ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "sf2049se.u27", 0x000000, 0x80000, CRC(da4ecd9c) SHA1(2574ff3d608ebcc59a63cf6dea13ee7650ae8921) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) DISK_IMAGE( "sf2049se", 0, SHA1(7b27a8ce2a953050ce267548bb7160b41f3e8054) ) ROM_END ROM_START( sf2049te ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) + ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) ROM_LOAD( "sf2049te.u27", 0x000000, 0x80000, CRC(cc7c8601) SHA1(3f37dbd1b32b3ac5caa300725468e8e426f0fb83) ) - ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF ) + ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF ) - DISK_REGION( "ide:0:hdd:image" ) + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) DISK_IMAGE( "sf2049te", 0, SHA1(625aa36436587b7bec3e7db1d19793b760e2ea51) ) ROM_END @@ -2856,32 +1896,32 @@ DRIVER_INIT_MEMBER(vegas_state,cartfury) *************************************/ /* Vegas + Vegas SIO + Voodoo 2 */ -GAME( 1998, gauntleg, 0, gauntleg, gauntleg, vegas_state, gauntleg, ROT0, "Atari Games", "Gauntlet Legends (version 1.6)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, gauntleg12, gauntleg, gauntleg, gauntleg, vegas_state, gauntleg, ROT0, "Atari Games", "Gauntlet Legends (version 1.2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, tenthdeg, 0, tenthdeg, tenthdeg, vegas_state, tenthdeg, ROT0, "Atari Games", "Tenth Degree (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, gauntleg, 0, gauntleg, gauntleg, vegas_state, gauntleg, ROT0, "Atari Games", "Gauntlet Legends (version 1.6)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, gauntleg12, gauntleg, gauntleg, gauntleg, vegas_state, gauntleg, ROT0, "Atari Games", "Gauntlet Legends (version 1.2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, tenthdeg, 0, tenthdeg, tenthdeg, vegas_state, tenthdeg, ROT0, "Atari Games", "Tenth Degree (prototype)", MACHINE_SUPPORTS_SAVE ) /* Durango + Vegas SIO + Voodoo 2 */ -GAME( 1999, gauntdl, 0, gauntdl, gauntdl, vegas_state, gauntdl, ROT0, "Midway Games", "Gauntlet Dark Legacy (version DL 2.52)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, gauntdl24,gauntdl, gauntdl, gauntdl, vegas_state, gauntdl, ROT0, "Midway Games", "Gauntlet Dark Legacy (version DL 2.4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, warfa, 0, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.9 Mar 25 1999, GUTS 1.3 Apr 20 1999, GAME Apr 20 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1999, warfaa, warfa, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.6 Jan 14 1999, GUTS 1.1 Mar 16 1999, GAME Mar 16 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1999, warfab, warfa, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.3 Apr 7 1999, GUTS 1.3 Apr 7 1999, GAME Apr 7 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // version numbers comes from test mode, can be unreliable +GAME( 1999, gauntdl, 0, gauntdl, gauntdl, vegas_state, gauntdl, ROT0, "Midway Games", "Gauntlet Dark Legacy (version DL 2.52)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, gauntdl24, gauntdl, gauntdl, gauntdl, vegas_state, gauntdl, ROT0, "Midway Games", "Gauntlet Dark Legacy (version DL 2.4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, warfa, 0, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.9 Mar 25 1999, GUTS 1.3 Apr 20 1999, GAME Apr 20 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, warfaa, warfa, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.6 Jan 14 1999, GUTS 1.1 Mar 16 1999, GAME Mar 16 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, warfab, warfa, warfa, warfa, vegas_state, warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.3 Apr 7 1999, GUTS 1.3 Apr 7 1999, GAME Apr 7 1999)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // version numbers comes from test mode, can be unreliable /* Durango + DSIO + Voodoo 2 */ -GAME( 1999, roadburn, 0, roadburn, roadburn, vegas_state, roadburn, ROT0, "Atari Games", "Road Burners (ver 1.04)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1999, roadburn1,roadburn, roadburn, roadburn, vegas_state, roadburn, ROT0, "Atari Games", "Road Burners (ver 1.0)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, roadburn, 0, roadburn, roadburn, vegas_state, roadburn, ROT0, "Atari Games", "Road Burners (ver 1.04)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, roadburn1, roadburn, roadburn, roadburn, vegas_state, roadburn, ROT0, "Atari Games", "Road Burners (ver 1.0)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* Durango + DSIO? + Voodoo banshee */ -GAME( 1998, nbashowt, 0, nbashowt, nbashowt, vegas_state, nbashowt, ROT0, "Midway Games", "NBA Showtime: NBA on NBC (ver 2.0)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1999, nbanfl, 0, nbanfl, nbashowt, vegas_state, nbanfl, ROT0, "Midway Games", "NBA Showtime / NFL Blitz 2000 (ver 2.1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 2000, nbagold , 0, nbanfl, nbashowt, vegas_state, nbanfl, ROT0, "Midway Games", "NBA Showtime Gold / NFL Blitz 2000 (ver 3.0) (Sports Station?)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, nbashowt, 0, nbashowt, nbashowt, vegas_state, nbashowt, ROT0, "Midway Games", "NBA Showtime: NBA on NBC (ver 2.0)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1999, nbanfl, 0, nbanfl, nbashowt, vegas_state, nbanfl, ROT0, "Midway Games", "NBA Showtime / NFL Blitz 2000 (ver 2.1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 2000, nbagold , 0, nbanfl, nbashowt, vegas_state, nbanfl, ROT0, "Midway Games", "NBA Showtime Gold / NFL Blitz 2000 (ver 3.0) (Sports Station?)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* Durango + Denver SIO + Voodoo 3 */ -GAME( 1998, sf2049, 0, sf2049, sf2049, vegas_state, sf2049, ROT0, "Atari Games", "San Francisco Rush 2049", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sf2049se, sf2049, sf2049se, sf2049se, vegas_state, sf2049se, ROT0, "Atari Games", "San Francisco Rush 2049: Special Edition", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sf2049te, sf2049, sf2049te, sf2049te, vegas_state, sf2049te, ROT0, "Atari Games", "San Francisco Rush 2049: Tournament Edition", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE) +GAME( 1998, sf2049, 0, sf2049, sf2049, vegas_state, sf2049, ROT0, "Atari Games", "San Francisco Rush 2049", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sf2049se, sf2049, sf2049se, sf2049se, vegas_state, sf2049se, ROT0, "Atari Games", "San Francisco Rush 2049: Special Edition", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sf2049te, sf2049, sf2049te, sf2049te, vegas_state, sf2049te, ROT0, "Atari Games", "San Francisco Rush 2049: Tournament Edition", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE) /* Durango + Vegas SIO + Voodoo 3 */ -GAME( 2000, cartfury, 0, cartfury, cartfury, vegas_state, cartfury, ROT0, "Midway Games", "Cart Fury", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 2000, cartfury, 0, cartfury, cartfury, vegas_state, cartfury, ROT0, "Midway Games", "Cart Fury", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vendetta.cpp b/src/mame/drivers/vendetta.cpp index 694faee3bf3..f8e05ee86f9 100644 --- a/src/mame/drivers/vendetta.cpp +++ b/src/mame/drivers/vendetta.cpp @@ -418,7 +418,7 @@ WRITE8_MEMBER( vendetta_state::banking_callback ) membank("bank1")->set_entry(data); } -static MACHINE_CONFIG_START( vendetta, vendetta_state ) +static MACHINE_CONFIG_START( vendetta ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) /* 052001 (verified on pcb) */ @@ -793,14 +793,14 @@ ROM_END ***************************************************************************/ -GAME( 1991, vendetta, 0, vendetta, vendet4p, driver_device, 0, ROT0, "Konami", "Vendetta (World, 4 Players, ver. T)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, vendettar, vendetta, vendetta, vendet4p, driver_device, 0, ROT0, "Konami", "Vendetta (US, 4 Players, ver. R)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, vendettaz, vendetta, vendetta, vendet4p, driver_device, 0, ROT0, "Konami", "Vendetta (Asia, 4 Players, ver. Z)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, vendetta2p, vendetta, vendetta, vendetta, driver_device, 0, ROT0, "Konami", "Vendetta (World, 2 Players, ver. W)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, vendetta2peba,vendetta,vendetta, vendetta, driver_device, 0, ROT0, "Konami", "Vendetta (World, 2 Players, ver. EB-A?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, vendetta2pun,vendetta, vendetta, vendetta, driver_device, 0, ROT0, "Konami", "Vendetta (World, 2 Players, ver. ?)", MACHINE_SUPPORTS_SAVE ) /* program rom labeled as 1 */ -GAME( 1991, vendetta2pu, vendetta, vendetta, vendetta, driver_device, 0, ROT0, "Konami", "Vendetta (Asia, 2 Players, ver. U)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, vendetta2pd, vendetta, vendetta, vendetta, driver_device, 0, ROT0, "Konami", "Vendetta (Asia, 2 Players, ver. D)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, vendettaj, vendetta, vendetta, vendetta, driver_device, 0, ROT0, "Konami", "Crime Fighters 2 (Japan, 2 Players, ver. P)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, esckids, 0, esckids, esckids, driver_device, 0, ROT0, "Konami", "Escape Kids (Asia, 4 Players)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, esckidsj, esckids, esckids, esckidsj, driver_device, 0, ROT0, "Konami", "Escape Kids (Japan, 2 Players)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, vendetta, 0, vendetta, vendet4p, vendetta_state, 0, ROT0, "Konami", "Vendetta (World, 4 Players, ver. T)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, vendettar, vendetta, vendetta, vendet4p, vendetta_state, 0, ROT0, "Konami", "Vendetta (US, 4 Players, ver. R)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, vendettaz, vendetta, vendetta, vendet4p, vendetta_state, 0, ROT0, "Konami", "Vendetta (Asia, 4 Players, ver. Z)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, vendetta2p, vendetta, vendetta, vendetta, vendetta_state, 0, ROT0, "Konami", "Vendetta (World, 2 Players, ver. W)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, vendetta2peba,vendetta,vendetta, vendetta, vendetta_state, 0, ROT0, "Konami", "Vendetta (World, 2 Players, ver. EB-A?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, vendetta2pun,vendetta, vendetta, vendetta, vendetta_state, 0, ROT0, "Konami", "Vendetta (World, 2 Players, ver. ?)", MACHINE_SUPPORTS_SAVE ) /* program rom labeled as 1 */ +GAME( 1991, vendetta2pu, vendetta, vendetta, vendetta, vendetta_state, 0, ROT0, "Konami", "Vendetta (Asia, 2 Players, ver. U)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, vendetta2pd, vendetta, vendetta, vendetta, vendetta_state, 0, ROT0, "Konami", "Vendetta (Asia, 2 Players, ver. D)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, vendettaj, vendetta, vendetta, vendetta, vendetta_state, 0, ROT0, "Konami", "Crime Fighters 2 (Japan, 2 Players, ver. P)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, esckids, 0, esckids, esckids, vendetta_state, 0, ROT0, "Konami", "Escape Kids (Asia, 4 Players)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, esckidsj, esckids, esckids, esckidsj, vendetta_state, 0, ROT0, "Konami", "Escape Kids (Japan, 2 Players)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vertigo.cpp b/src/mame/drivers/vertigo.cpp index 7070aff0c52..86cd694381f 100644 --- a/src/mame/drivers/vertigo.cpp +++ b/src/mame/drivers/vertigo.cpp @@ -113,7 +113,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( vertigo, vertigo_state ) +static MACHINE_CONFIG_START( vertigo ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 8000000) @@ -223,4 +223,4 @@ ROM_END * *************************************/ -GAME( 1986, topgunnr, 0, vertigo, vertigo, driver_device, 0, ROT0, "Exidy", "Top Gunner (Exidy)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, topgunnr, 0, vertigo, vertigo, vertigo_state, 0, ROT0, "Exidy", "Top Gunner (Exidy)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vg5k.cpp b/src/mame/drivers/vg5k.cpp index 41c73f6d31a..c460768f086 100644 --- a/src/mame/drivers/vg5k.cpp +++ b/src/mame/drivers/vg5k.cpp @@ -202,7 +202,7 @@ static INPUT_PORTS_START( vg5k ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_NAME("CTRL ACCENT") PORT_CHAR(UCHAR_SHIFT_2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_NAME("CTRL ACCENT") PORT_CHAR(UCHAR_SHIFT_2) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_INSERT) PORT_NAME("INSC INSL") PORT_CHAR(UCHAR_MAMEKEY(INSERT)) PORT_START("ROW2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2) PORT_NAME("RUN STOP") PORT_CHAR(UCHAR_MAMEKEY(F2)) PORT_CHAR(UCHAR_MAMEKEY(PAUSE)) @@ -358,7 +358,7 @@ DRIVER_INIT_MEMBER(vg5k_state,vg5k) } -static MACHINE_CONFIG_START( vg5k, vg5k_state ) +static MACHINE_CONFIG_START( vg5k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) @@ -425,5 +425,5 @@ ROM_START( vg5k ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, vg5k, 0, 0, vg5k, vg5k, vg5k_state, vg5k, "Philips", "VG-5000", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984, vg5k, 0, 0, vg5k, vg5k, vg5k_state, vg5k, "Philips", "VG-5000", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/vgmplay.cpp b/src/mame/drivers/vgmplay.cpp index 7e540c62ec1..1401cda9294 100644 --- a/src/mame/drivers/vgmplay.cpp +++ b/src/mame/drivers/vgmplay.cpp @@ -128,7 +128,7 @@ private: void blocks_clear(); }; -const device_type VGMPLAY = device_creator; +DEFINE_DEVICE_TYPE(VGMPLAY, vgmplay_device, "vgmplay_core", "VGM Player engine") class vgmplay_state : public driver_device { @@ -182,7 +182,7 @@ private: }; vgmplay_device::vgmplay_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - cpu_device(mconfig, VGMPLAY, "VGM Player engine", tag, owner, clock, "vgmplay_core", __FILE__), + cpu_device(mconfig, VGMPLAY, tag, owner, clock), m_file_config("file", ENDIANNESS_LITTLE, 8, 32), m_io_config("io", ENDIANNESS_LITTLE, 8, 32), m_io16_config("io16", ENDIANNESS_LITTLE, 16, 32) @@ -1289,7 +1289,7 @@ static ADDRESS_MAP_START( h6280_io_map, AS_IO, 8, vgmplay_state ) AM_RANGE(0, 3) AM_NOP ADDRESS_MAP_END -static MACHINE_CONFIG_START( vgmplay, vgmplay_state ) +static MACHINE_CONFIG_START( vgmplay ) MCFG_CPU_ADD("vgmplay", VGMPLAY, 44100) MCFG_CPU_PROGRAM_MAP( file_map ) MCFG_CPU_IO_MAP( soundchips_map ) @@ -1396,7 +1396,7 @@ static MACHINE_CONFIG_START( vgmplay, vgmplay_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 1) MCFG_SOUND_ROUTE(1, "rspeaker", 1) - MCFG_OKIM6295_ADD("okim6295", 1000000, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("okim6295", 1000000, PIN7_HIGH) MCFG_DEVICE_ADDRESS_MAP(AS_0, okim6295_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) @@ -1405,5 +1405,4 @@ MACHINE_CONFIG_END ROM_START( vgmplay ) ROM_END -CONS( 2016, vgmplay, 0, 0, vgmplay, vgmplay, driver_device, 0, "MAME", "VGM player", 0) - +CONS( 2016, vgmplay, 0, 0, vgmplay, vgmplay, vgmplay_state, 0, "MAME", "VGM player", 0 ) diff --git a/src/mame/drivers/vic10.cpp b/src/mame/drivers/vic10.cpp index b6a207cf2b7..a51946e10a7 100644 --- a/src/mame/drivers/vic10.cpp +++ b/src/mame/drivers/vic10.cpp @@ -688,7 +688,7 @@ void vic10_state::machine_reset() // MACHINE_CONFIG( vic10 ) //------------------------------------------------- -static MACHINE_CONFIG_START( vic10, vic10_state ) +static MACHINE_CONFIG_START( vic10 ) // basic hardware MCFG_CPU_ADD(M6510_TAG, M6510, XTAL_8MHz/8) MCFG_CPU_PROGRAM_MAP(vic10_mem) @@ -761,4 +761,4 @@ ROM_END // GAME DRIVERS //************************************************************************** -COMP( 1982, vic10, 0, 0, vic10, vic10, driver_device, 0, "Commodore Business Machines", "VIC-10 / Max Machine / UltiMax (NTSC)", MACHINE_SUPPORTS_SAVE ) +COMP( 1982, vic10, 0, 0, vic10, vic10, vic10_state, 0, "Commodore Business Machines", "VIC-10 / Max Machine / UltiMax (NTSC)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vic20.cpp b/src/mame/drivers/vic20.cpp index 67a3547188a..024015cdf9e 100644 --- a/src/mame/drivers/vic20.cpp +++ b/src/mame/drivers/vic20.cpp @@ -787,7 +787,7 @@ WRITE_LINE_MEMBER(vic20_state::write_user_cassette_switch) // MACHINE_CONFIG( vic20_common ) //------------------------------------------------- -static MACHINE_CONFIG_START( vic20, vic20_state ) +static MACHINE_CONFIG_START( vic20 ) // devices MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, 0) MCFG_VIA6522_READPA_HANDLER(READ8(vic20_state, via1_pa_r)) @@ -984,8 +984,8 @@ ROM_END // GAME DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1980, vic1001, 0, 0, ntsc, vic1001, driver_device, 0, "Commodore Business Machines", "VIC-1001 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -COMP( 1981, vic20, vic1001, 0, ntsc, vic20, driver_device, 0, "Commodore Business Machines", "VIC-20 (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -COMP( 1981, vic20p, vic1001, 0, pal, vic20, driver_device, 0, "Commodore Business Machines", "VIC-20 / VC-20 (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -COMP( 1981, vic20_se, vic1001, 0, pal, vic20s, driver_device, 0, "Commodore Business Machines", "VIC-20 (Sweden/Finland)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, vic1001, 0, 0, ntsc, vic1001, vic20_state, 0, "Commodore Business Machines", "VIC-1001 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +COMP( 1981, vic20, vic1001, 0, ntsc, vic20, vic20_state, 0, "Commodore Business Machines", "VIC-20 (NTSC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +COMP( 1981, vic20p, vic1001, 0, pal, vic20, vic20_state, 0, "Commodore Business Machines", "VIC-20 / VC-20 (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +COMP( 1981, vic20_se, vic1001, 0, pal, vic20s, vic20_state, 0, "Commodore Business Machines", "VIC-20 (Sweden/Finland)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vicdual.cpp b/src/mame/drivers/vicdual.cpp index b704f867d68..176b0f04fc5 100644 --- a/src/mame/drivers/vicdual.cpp +++ b/src/mame/drivers/vicdual.cpp @@ -58,6 +58,8 @@ #include "audio/invinco.h" #include "audio/pulsar.h" #include "audio/vicdual.h" +#include "audio/vicdual-97271p.h" +#include "video/vicdual-97269pb.h" #include "cpu/i8085/i8085.h" #include "cpu/z80/z80.h" @@ -253,7 +255,7 @@ void vicdual_state::machine_start() } -static MACHINE_CONFIG_START( vicdual_root, vicdual_state ) +static MACHINE_CONFIG_START( vicdual_root ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, VICDUAL_MAIN_CPU_CLOCK) @@ -2232,7 +2234,7 @@ MACHINE_CONFIG_END * *************************************/ -READ8_MEMBER(vicdual_state::nsub_io_r) +READ8_MEMBER(nsub_state::nsub_io_r) { uint8_t ret = 0; @@ -2243,19 +2245,22 @@ READ8_MEMBER(vicdual_state::nsub_io_r) } -WRITE8_MEMBER(vicdual_state::nsub_io_w) +WRITE8_MEMBER(nsub_state::nsub_io_w) { if (offset & 0x01) assert_coin_status(); - if (offset & 0x02) { /* nsub_audio_w(0, data) */ } + if (offset & 0x02) + { + m_s97271p->port_w(data); + } if (offset & 0x04) { palette_bank_w(space, 0, data); - m_gradient = data & 4; + m_s97269pb->palette_bank_w(data); } } -static ADDRESS_MAP_START( nsub_map, AS_PROGRAM, 8, vicdual_state ) +static ADDRESS_MAP_START( nsub_map, AS_PROGRAM, 8, nsub_state ) AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_NOP /* unused */ AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") @@ -2264,7 +2269,7 @@ static ADDRESS_MAP_START( nsub_map, AS_PROGRAM, 8, vicdual_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( nsub_io_map, AS_IO, 8, vicdual_state ) +static ADDRESS_MAP_START( nsub_io_map, AS_IO, 8, nsub_state ) ADDRESS_MAP_GLOBAL_MASK(0x0f) /* no decoder, just logic gates, so in theory the @@ -2275,7 +2280,7 @@ ADDRESS_MAP_END // coinage is handled by extra hardware on a daughterboard, put before the coin-in pin on the main logic board // IC board "COIN CALCULATOR" (97201-P): two 74191 counters, a 555 timer, coin meters, and lots of other TTL -TIMER_DEVICE_CALLBACK_MEMBER(vicdual_state::nsub_coin_pulse) +TIMER_DEVICE_CALLBACK_MEMBER(nsub_state::nsub_coin_pulse) { if (m_nsub_play_counter > 0) { @@ -2284,7 +2289,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(vicdual_state::nsub_coin_pulse) } } -INPUT_CHANGED_MEMBER(vicdual_state::nsub_coin_in) +INPUT_CHANGED_MEMBER(nsub_state::nsub_coin_in) { if (newval) { @@ -2339,14 +2344,14 @@ static INPUT_PORTS_START( nsub ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state, get_composite_blank_comp, nullptr) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nsub_state, get_composite_blank_comp, nullptr) PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state, read_coin_status, nullptr) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nsub_state, read_coin_status, nullptr) PORT_START("COIN") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vicdual_state,nsub_coin_in, (void*)0) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vicdual_state,nsub_coin_in, (void*)1) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, vicdual_state,nsub_coin_in, (void*)2) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, nsub_state, nsub_coin_in, (void*)0) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, nsub_state, nsub_coin_in, (void*)1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, nsub_state, nsub_coin_in, (void*)2) PORT_START("COINAGE") // "OPTION SW." on daughterboard PORT_DIPNAME( 0x07, 0x01, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW:1,2,3") @@ -2372,7 +2377,7 @@ static INPUT_PORTS_START( nsub ) INPUT_PORTS_END -MACHINE_START_MEMBER(vicdual_state,nsub) +MACHINE_START_MEMBER(nsub_state, nsub) { m_nsub_play_counter = 0; save_item(NAME(m_nsub_coin_counter)); @@ -2385,28 +2390,33 @@ MACHINE_START_MEMBER(vicdual_state,nsub) m_nsub_coinage_timer->adjust(attotime::zero, 0, attotime::from_msec(150)); } -MACHINE_RESET_MEMBER(vicdual_state,nsub) +MACHINE_RESET_MEMBER(nsub_state, nsub) { m_nsub_coin_counter = m_coinage->read() & 7; machine_reset(); } -static MACHINE_CONFIG_DERIVED( nsub, vicdual_root ) - +static MACHINE_CONFIG_START( nsub ) /* basic machine hardware */ - MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_ADD("maincpu", Z80, VICDUAL_MAIN_CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(nsub_map) MCFG_CPU_IO_MAP(nsub_io_map) - MCFG_TIMER_DRIVER_ADD("nsub_coin", vicdual_state, nsub_coin_pulse) - - MCFG_MACHINE_START_OVERRIDE(vicdual_state,nsub) - MCFG_MACHINE_RESET_OVERRIDE(vicdual_state,nsub) + MCFG_TIMER_DRIVER_ADD("coinstate", nsub_state, clear_coin_status) + MCFG_TIMER_DRIVER_ADD("nsub_coin", nsub_state, nsub_coin_pulse) /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_color) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(VICDUAL_PIXEL_CLOCK, VICDUAL_HTOTAL, VICDUAL_HBEND, VICDUAL_HBSTART, VICDUAL_VTOTAL, VICDUAL_VBEND, VICDUAL_VBSTART) + MCFG_SCREEN_UPDATE_DRIVER(nsub_state, screen_update_color) + MCFG_S97269PB_ADD("s97269pb") + + MCFG_MACHINE_START_OVERRIDE(nsub_state, nsub) + MCFG_MACHINE_RESET_OVERRIDE(nsub_state, nsub) + + /* audio hardware */ + MCFG_S97271P_ADD("s97271p") MACHINE_CONFIG_END @@ -2664,11 +2674,8 @@ Epr-274.u42 Epr-275.u41 Pr-69.u11 -Also PR33.u82 and PR34.u83 were not dumped from this pcb, couldn't be read because aluminium cooler on it. -They're probably the same as on other games. - -This game use a separate "daughter" board for input ??? ref: 97269-P-B -with a prom on it : PR-02 type MMI 6336-1j which is soldered. +This game use a separate "daughter" board for gradient and starfield ref: 97269-P-B +with 3 proms on it : PR-02 type MMI 6336-1j, PR-56 type MB7054 and PR-57 type MB7054 */ @@ -3624,47 +3631,47 @@ ROM_END * *************************************/ -GAMEL(1977, depthch, 0, depthch, depthch, driver_device, 0, ROT0, "Gremlin", "Depthcharge", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch ) -GAMEL(1977, depthcho, depthch, depthch, depthch, driver_device, 0, ROT0, "Gremlin", "Depthcharge (older)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch ) -GAMEL(1977, subhunt, depthch, depthch, depthch, driver_device, 0, ROT0, "Gremlin (Taito license)", "Sub Hunter (Gremlin / Taito)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch ) -GAME( 1977, safari, 0, safari, safari, driver_device, 0, ROT0, "Gremlin", "Safari (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1977, safaria, safari, safari, safari, driver_device, 0, ROT0, "Gremlin", "Safari (set 2, bootleg?)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // on a bootleg board, but seems a different code revision too -GAME( 1978, frogs, 0, frogs, frogs, driver_device, 0, ROT0, "Gremlin", "Frogs", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, sspaceat, 0, sspaceat, sspaceat, driver_device, 0, ROT270, "Sega", "Space Attack (upright set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, sspaceat2, sspaceat, sspaceat, sspaceat, driver_device, 0, ROT270, "Sega", "Space Attack (upright set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, sspaceat3, sspaceat, sspaceat, sspaceat, driver_device, 0, ROT270, "Sega", "Space Attack (upright set 3)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, sspaceatc, sspaceat, sspaceat, sspaceat, driver_device, 0, ROT270, "Sega", "Space Attack (cocktail)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, sspacaho, 0, sspacaho, sspacaho, driver_device, 0, ROT270, "Sega", "Space Attack / Head On", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, headon, 0, headon, headon, driver_device, 0, ROT0, "Gremlin", "Head On (2 players)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, headon1, headon, headon, headon, driver_device, 0, ROT0, "Gremlin", "Head On (1 player)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, headons, headon, headons, headons, driver_device, 0, ROT0, "bootleg (Sidam)", "Head On (Sidam bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, headonsa, headon, headons, headons, driver_device, 0, ROT0, "bootleg (Sidam)", "Head On (Sidam bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // won't coin up? -GAME( 1979, headonmz, headon, headon, headonmz, driver_device, 0, ROT0, "bootleg", "Head On (bootleg, alt maze)", MACHINE_SUPPORTS_SAVE ) -GAME( 1979, supcrash, headon, headons, supcrash, driver_device, 0, ROT0, "bootleg", "Super Crash (bootleg of Head On)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, hocrash, headon, headons, headons, driver_device, 0, ROT0, "bootleg (Fraber)", "Crash (bootleg of Head On)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, headon2, 0, headon2, headon2, driver_device, 0, ROT0, "Sega", "Head On 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, headon2s, headon2, headon2bw, car2, driver_device, 0, ROT0, "bootleg (Sidam)", "Head On 2 (Sidam bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // won't coin up? -GAME( 1979, car2, headon2, headon2bw, car2, driver_device, 0, ROT0, "bootleg (RZ Bologna)", "Car 2 (bootleg of Head On 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // title still says 'HeadOn 2' -GAME( 1979, invho2, 0, invho2, invho2, driver_device, 0, ROT270, "Sega", "Invinco / Head On 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, nsub, 0, nsub, nsub, driver_device, 0, ROT270, "Sega", "N-Sub (upright)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // this is the upright set. cocktail set still needs to be dumped -GAME( 1980, samurai, 0, samurai, samurai, driver_device, 0, ROT270, "Sega", "Samurai", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, invinco, 0, invinco, invinco, driver_device, 0, ROT270, "Sega", "Invinco", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, invds, 0, invds, invds, driver_device, 0, ROT270, "Sega", "Invinco / Deep Scan", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, carhntds, 0, carhntds, carhntds, driver_device, 0, ROT270, "Sega", "Car Hunt / Deep Scan (France)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, tranqgun, 0, tranqgun, tranqgun, driver_device, 0, ROT270, "Sega", "Tranquillizer Gun", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacetrk, 0, spacetrk, spacetrk, driver_device, 0, ROT270, "Sega", "Space Trek (upright)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, spacetrkc, spacetrk, spacetrk, spacetrkc, driver_device, 0, ROT270, "Sega", "Space Trek (cocktail)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, carnival, 0, carnival, carnival, driver_device, 0, ROT270, "Sega", "Carnival (upright)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, carnivalc, carnival, carnival, carnivalc, driver_device, 0, ROT270, "Sega", "Carnival (cocktail)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, carnivalh, carnival, carnivalh, carnivalh, driver_device, 0, ROT270, "Sega", "Carnival (Head On hardware, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, carnivalha, carnival, carnivalh, carnivalh, driver_device, 0, ROT270, "Sega", "Carnival (Head On hardware, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, brdrline, 0, brdrline, brdrline, driver_device, 0, ROT270, "Sega", "Borderline", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, starrkr, brdrline, brdrline, starrkr, driver_device, 0, ROT270, "Sega", "Star Raker", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, brdrlins, brdrline, brdrline, brdrline, driver_device, 0, ROT270, "bootleg (Sidam)", "Borderline (Sidam bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, brdrlinb, brdrline, brdrline, brdrline, driver_device, 0, ROT270, "bootleg (Karateco)", "Borderline (Karateco bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, brdrlinet, brdrline, tranqgun, tranqgun, driver_device, 0, ROT270, "Sega", "Borderline (Tranquillizer Gun conversion)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // official factory conversion -GAME( 198?, startrks, 0, headons, headons, driver_device, 0, ROT0, "bootleg (Sidam)", "Star Trek (Head On hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, digger, 0, digger, digger, driver_device, 0, ROT270, "Sega", "Digger", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, pulsar, 0, pulsar, pulsar, driver_device, 0, ROT270, "Sega", "Pulsar", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, heiankyo, 0, heiankyo, heiankyo, driver_device, 0, ROT270, "Denki Onkyo", "Heiankyo Alien", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 19??, alphaho, 0, alphaho, alphaho, driver_device, 0, ROT270, "Data East Corporation", "Alpha Fighter / Head On", MACHINE_WRONG_COLORS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL(1977, depthch, 0, depthch, depthch, vicdual_state, 0, ROT0, "Gremlin", "Depthcharge", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch ) +GAMEL(1977, depthcho, depthch, depthch, depthch, vicdual_state, 0, ROT0, "Gremlin", "Depthcharge (older)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch ) +GAMEL(1977, subhunt, depthch, depthch, depthch, vicdual_state, 0, ROT0, "Gremlin (Taito license)", "Sub Hunter (Gremlin / Taito)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch ) +GAME( 1977, safari, 0, safari, safari, vicdual_state, 0, ROT0, "Gremlin", "Safari (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1977, safaria, safari, safari, safari, vicdual_state, 0, ROT0, "Gremlin", "Safari (set 2, bootleg?)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // on a bootleg board, but seems a different code revision too +GAME( 1978, frogs, 0, frogs, frogs, vicdual_state, 0, ROT0, "Gremlin", "Frogs", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, sspaceat, 0, sspaceat, sspaceat, vicdual_state, 0, ROT270, "Sega", "Space Attack (upright set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, sspaceat2, sspaceat, sspaceat, sspaceat, vicdual_state, 0, ROT270, "Sega", "Space Attack (upright set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, sspaceat3, sspaceat, sspaceat, sspaceat, vicdual_state, 0, ROT270, "Sega", "Space Attack (upright set 3)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, sspaceatc, sspaceat, sspaceat, sspaceat, vicdual_state, 0, ROT270, "Sega", "Space Attack (cocktail)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, sspacaho, 0, sspacaho, sspacaho, vicdual_state, 0, ROT270, "Sega", "Space Attack / Head On", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, headon, 0, headon, headon, vicdual_state, 0, ROT0, "Gremlin", "Head On (2 players)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, headon1, headon, headon, headon, vicdual_state, 0, ROT0, "Gremlin", "Head On (1 player)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, headons, headon, headons, headons, vicdual_state, 0, ROT0, "bootleg (Sidam)", "Head On (Sidam bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, headonsa, headon, headons, headons, vicdual_state, 0, ROT0, "bootleg (Sidam)", "Head On (Sidam bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // won't coin up? +GAME( 1979, headonmz, headon, headon, headonmz, vicdual_state, 0, ROT0, "bootleg", "Head On (bootleg, alt maze)", MACHINE_SUPPORTS_SAVE ) +GAME( 1979, supcrash, headon, headons, supcrash, vicdual_state, 0, ROT0, "bootleg", "Super Crash (bootleg of Head On)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, hocrash, headon, headons, headons, vicdual_state, 0, ROT0, "bootleg (Fraber)", "Crash (bootleg of Head On)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, headon2, 0, headon2, headon2, vicdual_state, 0, ROT0, "Sega", "Head On 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, headon2s, headon2, headon2bw, car2, vicdual_state, 0, ROT0, "bootleg (Sidam)", "Head On 2 (Sidam bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // won't coin up? +GAME( 1979, car2, headon2, headon2bw, car2, vicdual_state, 0, ROT0, "bootleg (RZ Bologna)", "Car 2 (bootleg of Head On 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // title still says 'HeadOn 2' +GAME( 1979, invho2, 0, invho2, invho2, vicdual_state, 0, ROT270, "Sega", "Invinco / Head On 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, nsub, 0, nsub, nsub, nsub_state, 0, ROT270, "Sega", "N-Sub (upright)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // this is the upright set. cocktail set still needs to be dumped +GAME( 1980, samurai, 0, samurai, samurai, vicdual_state, 0, ROT270, "Sega", "Samurai", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, invinco, 0, invinco, invinco, vicdual_state, 0, ROT270, "Sega", "Invinco", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, invds, 0, invds, invds, vicdual_state, 0, ROT270, "Sega", "Invinco / Deep Scan", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, carhntds, 0, carhntds, carhntds, vicdual_state, 0, ROT270, "Sega", "Car Hunt / Deep Scan (France)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, tranqgun, 0, tranqgun, tranqgun, vicdual_state, 0, ROT270, "Sega", "Tranquillizer Gun", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacetrk, 0, spacetrk, spacetrk, vicdual_state, 0, ROT270, "Sega", "Space Trek (upright)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, spacetrkc, spacetrk, spacetrk, spacetrkc, vicdual_state, 0, ROT270, "Sega", "Space Trek (cocktail)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, carnival, 0, carnival, carnival, vicdual_state, 0, ROT270, "Sega", "Carnival (upright)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, carnivalc, carnival, carnival, carnivalc, vicdual_state, 0, ROT270, "Sega", "Carnival (cocktail)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, carnivalh, carnival, carnivalh, carnivalh, vicdual_state, 0, ROT270, "Sega", "Carnival (Head On hardware, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, carnivalha, carnival, carnivalh, carnivalh, vicdual_state, 0, ROT270, "Sega", "Carnival (Head On hardware, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, brdrline, 0, brdrline, brdrline, vicdual_state, 0, ROT270, "Sega", "Borderline", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, starrkr, brdrline, brdrline, starrkr, vicdual_state, 0, ROT270, "Sega", "Star Raker", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, brdrlins, brdrline, brdrline, brdrline, vicdual_state, 0, ROT270, "bootleg (Sidam)", "Borderline (Sidam bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, brdrlinb, brdrline, brdrline, brdrline, vicdual_state, 0, ROT270, "bootleg (Karateco)", "Borderline (Karateco bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, brdrlinet, brdrline, tranqgun, tranqgun, vicdual_state, 0, ROT270, "Sega", "Borderline (Tranquillizer Gun conversion)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // official factory conversion +GAME( 198?, startrks, 0, headons, headons, vicdual_state, 0, ROT0, "bootleg (Sidam)", "Star Trek (Head On hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, digger, 0, digger, digger, vicdual_state, 0, ROT270, "Sega", "Digger", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1981, pulsar, 0, pulsar, pulsar, vicdual_state, 0, ROT270, "Sega", "Pulsar", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, heiankyo, 0, heiankyo, heiankyo, vicdual_state, 0, ROT270, "Denki Onkyo", "Heiankyo Alien", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 19??, alphaho, 0, alphaho, alphaho, vicdual_state, 0, ROT270, "Data East Corporation", "Alpha Fighter / Head On", MACHINE_WRONG_COLORS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/victor9k.cpp b/src/mame/drivers/victor9k.cpp index 5b59ebbff2c..616a8129095 100644 --- a/src/mame/drivers/victor9k.cpp +++ b/src/mame/drivers/victor9k.cpp @@ -34,7 +34,7 @@ #include "machine/pit8253.h" #include "machine/pic8259.h" #include "machine/ram.h" -#include "machine/victor9kb.h" +#include "machine/victor9k_kb.h" #include "machine/victor9k_fdc.h" #include "machine/z80dart.h" #include "sound/hc55516.h" @@ -108,8 +108,8 @@ public: required_device m_cvsd; required_device m_crtc; required_device m_ram; - required_device m_kb; - required_device m_fdc; + required_device m_kb; + required_device m_fdc; required_device m_centronics; required_device m_rs232a; required_device m_rs232b; @@ -201,9 +201,9 @@ static ADDRESS_MAP_START( victor9k_mem, AS_PROGRAM, 8, victor9k_state ) AM_RANGE(0xe8040, 0xe804f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_2_TAG, via6522_device, read, write) AM_RANGE(0xe8060, 0xe8061) AM_MIRROR(0x7f00) AM_DEVREADWRITE(MC6852_TAG, mc6852_device, read, write) AM_RANGE(0xe8080, 0xe808f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_3_TAG, via6522_device, read, write) - AM_RANGE(0xe80a0, 0xe80af) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_t, cs5_r, cs5_w) - AM_RANGE(0xe80c0, 0xe80cf) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_t, cs6_r, cs6_w) - AM_RANGE(0xe80e0, 0xe80ef) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_t, cs7_r, cs7_w) + AM_RANGE(0xe80a0, 0xe80af) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_device, cs5_r, cs5_w) + AM_RANGE(0xe80c0, 0xe80cf) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_device, cs6_r, cs6_w) + AM_RANGE(0xe80e0, 0xe80ef) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_device, cs7_r, cs7_w) AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("video_ram") AM_RANGE(0xf8000, 0xf9fff) AM_MIRROR(0x6000) AM_ROM AM_REGION(I8088_TAG, 0) ADDRESS_MAP_END @@ -674,7 +674,7 @@ void victor9k_state::machine_reset() // MACHINE_CONFIG( victor9k ) //------------------------------------------------- -static MACHINE_CONFIG_START( victor9k, victor9k_state ) +static MACHINE_CONFIG_START( victor9k ) // basic machine hardware MCFG_CPU_ADD(I8088_TAG, I8088, XTAL_30MHz/6) MCFG_CPU_PROGRAM_MAP(victor9k_mem) @@ -816,5 +816,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1982, victor9k, 0, 0, victor9k, victor9k, driver_device, 0, "Victor Business Products", "Victor 9000", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, victor9k, 0, 0, victor9k, victor9k, victor9k_state, 0, "Victor Business Products", "Victor 9000", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/victory.cpp b/src/mame/drivers/victory.cpp index 439aaf32701..8480d91c62f 100644 --- a/src/mame/drivers/victory.cpp +++ b/src/mame/drivers/victory.cpp @@ -210,7 +210,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( victory, victory_state ) +static MACHINE_CONFIG_START( victory ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, VICTORY_MAIN_CPU_CLOCK) @@ -317,5 +317,5 @@ ROM_END * *************************************/ -GAME( 1982, victory, 0, victory, victory, driver_device, 0, ROT0, "Exidy", "Victory", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, victorba, victory, victory, victory, driver_device, 0, ROT0, "Exidy", "Victor Banana", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, victory, 0, victory, victory, victory_state, 0, ROT0, "Exidy", "Victory", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, victorba, victory, victory, victory, victory_state, 0, ROT0, "Exidy", "Victor Banana", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vidbrain.cpp b/src/mame/drivers/vidbrain.cpp index f5a134439c1..8581750e536 100644 --- a/src/mame/drivers/vidbrain.cpp +++ b/src/mame/drivers/vidbrain.cpp @@ -500,7 +500,7 @@ void vidbrain_state::machine_reset() // MACHINE_CONFIG( vidbrain ) //------------------------------------------------- -static MACHINE_CONFIG_START( vidbrain, vidbrain_state ) +static MACHINE_CONFIG_START( vidbrain ) // basic machine hardware MCFG_CPU_ADD(F3850_TAG, F8, XTAL_4MHz/2) MCFG_CPU_PROGRAM_MAP(vidbrain_mem) @@ -563,5 +563,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1977, vidbrain, 0, 0, vidbrain, vidbrain, driver_device, 0, "VideoBrain Computer Company", "VideoBrain FamilyComputer", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1977, vidbrain, 0, 0, vidbrain, vidbrain, vidbrain_state, 0, "VideoBrain Computer Company", "VideoBrain FamilyComputer", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/videopin.cpp b/src/mame/drivers/videopin.cpp index ed83948190a..1aad6842543 100644 --- a/src/mame/drivers/videopin.cpp +++ b/src/mame/drivers/videopin.cpp @@ -358,7 +358,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( videopin, videopin_state ) +static MACHINE_CONFIG_START( videopin ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 12096000 / 16) @@ -465,5 +465,5 @@ ROM_END * *************************************/ -GAMEL( 1979, videopin, 0, videopin, videopin, driver_device, 0, ROT270, "Atari", "Video Pinball", MACHINE_SUPPORTS_SAVE, layout_videopin ) -GAMEL( 1979, solarwar, 0, videopin, solarwar, driver_device, 0, ROT270, "Atari", "Solar War", MACHINE_SUPPORTS_SAVE, layout_videopin ) +GAMEL( 1979, videopin, 0, videopin, videopin, videopin_state, 0, ROT270, "Atari", "Video Pinball", MACHINE_SUPPORTS_SAVE, layout_videopin ) +GAMEL( 1979, solarwar, 0, videopin, solarwar, videopin_state, 0, ROT270, "Atari", "Solar War", MACHINE_SUPPORTS_SAVE, layout_videopin ) diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp index 26b0b171ac2..3fcb610ab73 100644 --- a/src/mame/drivers/videopkr.cpp +++ b/src/mame/drivers/videopkr.cpp @@ -349,8 +349,8 @@ public: DECLARE_READ8_MEMBER(videopkr_p2_data_r); DECLARE_WRITE8_MEMBER(videopkr_p1_data_w); DECLARE_WRITE8_MEMBER(videopkr_p2_data_w); - DECLARE_READ8_MEMBER(videopkr_t0_latch); - DECLARE_WRITE8_MEMBER(prog_w); + DECLARE_READ_LINE_MEMBER(videopkr_t0_latch); + DECLARE_WRITE_LINE_MEMBER(prog_w); DECLARE_READ8_MEMBER(sound_io_r); DECLARE_WRITE8_MEMBER(sound_io_w); DECLARE_READ8_MEMBER(sound_p2_r); @@ -751,14 +751,14 @@ WRITE8_MEMBER(videopkr_state::videopkr_p2_data_w) m_p2 = data; } -READ8_MEMBER(videopkr_state::videopkr_t0_latch) +READ_LINE_MEMBER(videopkr_state::videopkr_t0_latch) { return m_t0_latch; } -WRITE8_MEMBER(videopkr_state::prog_w) +WRITE_LINE_MEMBER(videopkr_state::prog_w) { - if (!data) + if (!state) m_maincpu->set_input_line(0, CLEAR_LINE); /* clear interrupt FF */ } @@ -963,11 +963,7 @@ static ADDRESS_MAP_START( i8039_map, AS_PROGRAM, 8, videopkr_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_io_port, AS_IO, 8, videopkr_state ) - AM_RANGE(0x00, 0xff ) AM_READWRITE(videopkr_io_r, videopkr_io_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1 ) AM_READWRITE(videopkr_p1_data_r, videopkr_p1_data_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2 ) AM_READWRITE(videopkr_p2_data_r, videopkr_p2_data_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_WRITE(prog_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0 ) AM_READ(videopkr_t0_latch) + AM_RANGE(0x00, 0xff) AM_READWRITE(videopkr_io_r, videopkr_io_w) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_sound_mem, AS_PROGRAM, 8, videopkr_state ) @@ -975,9 +971,7 @@ static ADDRESS_MAP_START( i8039_sound_mem, AS_PROGRAM, 8, videopkr_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_sound_port, AS_IO, 8, videopkr_state ) - AM_RANGE(0x00 , 0xff ) AM_READWRITE(sound_io_r, sound_io_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(sound_p2_r, sound_p2_w) + AM_RANGE(0x00, 0xff) AM_READWRITE(sound_io_r, sound_io_w) ADDRESS_MAP_END @@ -1229,18 +1223,28 @@ void videopkr_state::machine_start() * Machine Drivers * ************************/ -static MACHINE_CONFIG_START( videopkr, videopkr_state ) +static MACHINE_CONFIG_START( videopkr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8039, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(i8039_map) MCFG_CPU_IO_MAP(i8039_io_port) + MCFG_MCS48_PORT_P1_IN_CB(READ8(videopkr_state, videopkr_p1_data_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(videopkr_state, videopkr_p1_data_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(videopkr_state, videopkr_p2_data_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(videopkr_state, videopkr_p2_data_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(videopkr_state, prog_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(videopkr_state, videopkr_t0_latch)) MCFG_CPU_VBLANK_INT_DRIVER("screen", videopkr_state, irq0_line_assert) MCFG_CPU_ADD("soundcpu", I8039, SOUND_CLOCK) MCFG_CPU_PROGRAM_MAP(i8039_sound_mem) MCFG_CPU_IO_MAP(i8039_sound_port) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(videopkr_state, sound_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(videopkr_state, sound_p2_w)) + MCFG_NVRAM_ADD_0FILL("nvram") MCFG_TIMER_DRIVER_ADD_PERIODIC("t1_timer", videopkr_state, sound_t1_callback, attotime::from_hz(50)) @@ -1262,7 +1266,7 @@ static MACHINE_CONFIG_START( videopkr, videopkr_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("speaker") - MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.275) // unknown DAC + MCFG_SOUND_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.275) MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END @@ -1549,12 +1553,12 @@ ROM_END /************************* * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1984, videopkr, 0, videopkr, videopkr, driver_device, 0, ROT0, "InterFlip", "Video Poker", 0, layout_videopkr ) -GAMEL( 1984, fortune1, videopkr, fortune1, videopkr, driver_device, 0, ROT0, "IGT - International Game Technology", "Fortune I (PK485-S) Draw Poker", 0, layout_videopkr ) -GAMEL( 1984, blckjack, videopkr, blckjack, blckjack, driver_device, 0, ROT0, "InterFlip", "Black Jack", 0, layout_blckjack ) -GAMEL( 1987, videodad, videopkr, videodad, videodad, driver_device, 0, ROT0, "InterFlip", "Video Dado", 0, layout_videodad ) -GAMEL( 1987, videocba, videopkr, videodad, videocba, driver_device, 0, ROT0, "InterFlip", "Video Cordoba", 0, layout_videocba ) -GAMEL( 1987, babypkr , videopkr, babypkr, babypkr, driver_device, 0, ROT0, "Recreativos Franco", "Baby Poker", 0, layout_babypkr ) -GAMEL( 1987, babydad , videopkr, babypkr, babydad, driver_device, 0, ROT0, "Recreativos Franco", "Baby Dado", 0, layout_babydad ) -GAMEL( 198?, bpoker , videopkr, babypkr, babypkr, driver_device, 0, ROT0, "Recreativos Franco", "Video Poker (v1403)", MACHINE_NOT_WORKING, layout_babypkr ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1984, videopkr, 0, videopkr, videopkr, videopkr_state, 0, ROT0, "InterFlip", "Video Poker", 0, layout_videopkr ) +GAMEL( 1984, fortune1, videopkr, fortune1, videopkr, videopkr_state, 0, ROT0, "IGT - International Game Technology", "Fortune I (PK485-S) Draw Poker", 0, layout_videopkr ) +GAMEL( 1984, blckjack, videopkr, blckjack, blckjack, videopkr_state, 0, ROT0, "InterFlip", "Black Jack", 0, layout_blckjack ) +GAMEL( 1987, videodad, videopkr, videodad, videodad, videopkr_state, 0, ROT0, "InterFlip", "Video Dado", 0, layout_videodad ) +GAMEL( 1987, videocba, videopkr, videodad, videocba, videopkr_state, 0, ROT0, "InterFlip", "Video Cordoba", 0, layout_videocba ) +GAMEL( 1987, babypkr, videopkr, babypkr, babypkr, videopkr_state, 0, ROT0, "Recreativos Franco", "Baby Poker", 0, layout_babypkr ) +GAMEL( 1987, babydad, videopkr, babypkr, babydad, videopkr_state, 0, ROT0, "Recreativos Franco", "Baby Dado", 0, layout_babydad ) +GAMEL( 198?, bpoker, videopkr, babypkr, babypkr, videopkr_state, 0, ROT0, "Recreativos Franco", "Video Poker (v1403)", MACHINE_NOT_WORKING, layout_babypkr ) diff --git a/src/mame/drivers/vigilant.cpp b/src/mame/drivers/vigilant.cpp index cebf0c1a97a..0982882747f 100644 --- a/src/mame/drivers/vigilant.cpp +++ b/src/mame/drivers/vigilant.cpp @@ -471,7 +471,7 @@ static GFXDECODE_START( kikcubic ) GFXDECODE_END -static MACHINE_CONFIG_START( vigilant, vigilant_state ) +static MACHINE_CONFIG_START( vigilant ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3579645) /* 3.579645 MHz */ @@ -502,7 +502,7 @@ static MACHINE_CONFIG_START( vigilant, vigilant_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("m72", M72, 0) + MCFG_SOUND_ADD("m72", IREM_M72_AUDIO, 0) MCFG_YM2151_ADD("ymsnd", 3579645) MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) @@ -514,7 +514,7 @@ static MACHINE_CONFIG_START( vigilant, vigilant_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( buccanrs, vigilant_state ) +static MACHINE_CONFIG_START( buccanrs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 5688800) /* 5.688800 MHz */ @@ -545,7 +545,7 @@ static MACHINE_CONFIG_START( buccanrs, vigilant_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("m72", M72, 0) + MCFG_SOUND_ADD("m72", IREM_M72_AUDIO, 0) MCFG_SOUND_ADD("ym1", YM2203, 18432000/6) MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) @@ -573,7 +573,7 @@ static MACHINE_CONFIG_START( buccanrs, vigilant_state ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kikcubic, vigilant_state ) +static MACHINE_CONFIG_START( kikcubic ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3579645) /* 3.579645 MHz */ @@ -604,7 +604,7 @@ static MACHINE_CONFIG_START( kikcubic, vigilant_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("m72", M72, 0) + MCFG_SOUND_ADD("m72", IREM_M72_AUDIO, 0) MCFG_YM2151_ADD("ymsnd", 3579645) MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler)) @@ -1121,18 +1121,18 @@ ROM_START( buccanrsb ) ROM_LOAD( "prom2.u99", 0x0300, 0x0100, CRC(e0aa8869) SHA1(ac8bdfeba69420ba56ec561bf3d0f1229d02cea2) ) ROM_END -GAME( 1988, vigilant, 0, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev E)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vigilantg, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East license)", "Vigilante (US, Rev G)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vigilanto, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East license)", "Vigilante (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vigilanta, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev A)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vigilantb, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East license)", "Vigilante (US, Rev B)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vigilantc, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev C)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vigilantd, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (Japan, Rev D)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, vigilantbl, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "bootleg", "Vigilante (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) - -GAME( 1988, kikcubic, 0, kikcubic, kikcubic, driver_device, 0, ROT0, "Irem", "Meikyu Jima (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) /* English title is Kickle Cubicle */ -GAME( 1988, kikcubicb, kikcubic, kikcubic, kikcubic, driver_device, 0, ROT0, "bootleg", "Kickle Cubele", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) - -GAME( 1989, buccanrs, 0, buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, buccanrsa, buccanrs, buccanrs, buccanra, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, buccanrsb, buccanrs, buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 3, harder)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vigilant, 0, vigilant, vigilant, vigilant_state, 0, ROT0, "Irem", "Vigilante (World, Rev E)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vigilantg, vigilant, vigilant, vigilant, vigilant_state, 0, ROT0, "Irem (Data East license)", "Vigilante (US, Rev G)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vigilanto, vigilant, vigilant, vigilant, vigilant_state, 0, ROT0, "Irem (Data East license)", "Vigilante (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vigilanta, vigilant, vigilant, vigilant, vigilant_state, 0, ROT0, "Irem", "Vigilante (World, Rev A)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vigilantb, vigilant, vigilant, vigilant, vigilant_state, 0, ROT0, "Irem (Data East license)", "Vigilante (US, Rev B)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vigilantc, vigilant, vigilant, vigilant, vigilant_state, 0, ROT0, "Irem", "Vigilante (World, Rev C)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vigilantd, vigilant, vigilant, vigilant, vigilant_state, 0, ROT0, "Irem", "Vigilante (Japan, Rev D)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, vigilantbl, vigilant, vigilant, vigilant, vigilant_state, 0, ROT0, "bootleg", "Vigilante (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) + +GAME( 1988, kikcubic, 0, kikcubic, kikcubic, vigilant_state, 0, ROT0, "Irem", "Meikyu Jima (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) /* English title is Kickle Cubicle */ +GAME( 1988, kikcubicb, kikcubic, kikcubic, kikcubic, vigilant_state, 0, ROT0, "bootleg", "Kickle Cubele", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) + +GAME( 1989, buccanrs, 0, buccanrs, buccanrs, vigilant_state, 0, ROT0, "Duintronic", "Buccaneers (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, buccanrsa, buccanrs, buccanrs, buccanra, vigilant_state, 0, ROT0, "Duintronic", "Buccaneers (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, buccanrsb, buccanrs, buccanrs, buccanrs, vigilant_state, 0, ROT0, "Duintronic", "Buccaneers (set 3, harder)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp index 01fcc6b65b0..29192f6d8f4 100644 --- a/src/mame/drivers/vii.cpp +++ b/src/mame/drivers/vii.cpp @@ -36,7 +36,9 @@ D - SPG243 - Wall-E D - SPG243 - Chintendo / KenSingTon / Siatronics / Jungle Soft Vii Partial D - SPG200 - V-Tech V-Smile - ND - unknown - Wireless 60 + ND - unknown - Zone 40 + D - SPG243 - Zone 60 + D - SPG243 - Wireless 60 ND - unknown - Wireless Air 60 ND - Likely many more @@ -44,7 +46,7 @@ Similar Systems: ( from http://en.wkikpedia.org/wiki/V.Smile ) - V.Smile by Vtech, a system designed for children under the age of 10 - V.Smile Pocket (2 versions) -- V.SMile Cyber Pocket +- V.Smile Cyber Pocket - V.Smile PC Pal - V-Motion Active Learning System - Leapster @@ -69,6 +71,9 @@ Detailed list of bugs: -- The "EEPROM TEST" option in the diagnostic menu (accessible by holding 1+2 or A+B during startup) freezes when selected -- The "MOTOR" option in the diagnostic menu does nothing when selected -- The input for the gyroscopic sensor tests in the "KEYBOARD + G-SENSOR" sub-menu goes haywire +- Zone 60 / Wireless 60: +-- Auto Racing / Auto X, Dragon, Yummy, some other games: some sprites are inverted or opaque where they should be transparent +-- Basketball: emulator crashes when starting the game due to an unimplemented instruction *******************************************************************************/ @@ -109,7 +114,8 @@ public: m_p_spriteram(*this, "p_spriteram"), m_bank(*this, "cart"), m_bios_rom(*this, "bios"), - m_io_p1(*this, "P1") + m_io_p1(*this, "P1"), + m_io_p2(*this, "P2") { } required_device m_maincpu; @@ -142,6 +148,7 @@ public: uint16_t m_io_regs[0x200]; uint16_t m_uart_rx_count; uint8_t m_controller_input[8]; + uint8_t m_w60_controller_input; uint32_t m_spg243_mode; emu_timer *m_tmb1; @@ -155,6 +162,7 @@ public: DECLARE_DRIVER_INIT(walle); DECLARE_DRIVER_INIT(vii); DECLARE_DRIVER_INIT(batman); + DECLARE_DRIVER_INIT(wirels60); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; @@ -168,6 +176,7 @@ public: protected: optional_memory_region m_bios_rom; required_ioport m_io_p1; + optional_ioport m_io_p2; memory_region *m_cart_rom; @@ -187,6 +196,7 @@ enum SPG243_VII = 0, SPG243_BATMAN, SPG243_VSMILE, + SPG243_WIRELESS60, SPG243_MODEL_COUNT }; @@ -640,6 +650,36 @@ void vii_state::do_gpio(uint32_t offset) { // TODO: find out how vsmile accesses these GPIO regs! } + else if (m_spg243_mode == SPG243_WIRELESS60) + { + if(index == 0) + { + switch(what & 0x300) + { + case 0x300: + m_w60_controller_input = -1; + break; + + case 0x200: + m_w60_controller_input++; + break; + + default: + uint16_t temp1 = m_io_p1->read(); + uint16_t temp2 = m_io_p2->read(); + uint16_t temp3 = 1 << m_w60_controller_input; + if (temp1 & temp3) what ^= 0x400; + if (temp2 & temp3) what ^= 0x800; + break; + } + } + + if(index == 1) + { + uint32_t bank = (what & 7); + switch_bank(bank); + } + } m_io_regs[5*index + 1] = what; } @@ -952,6 +992,27 @@ static INPUT_PORTS_START( walle ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("B Button") INPUT_PORTS_END +static INPUT_PORTS_START( wirels60 ) + PORT_START("P1") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_NAME("Joypad Up") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_NAME("Joypad Down") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_NAME("Joypad Left") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_NAME("Joypad Right") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("A Button") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("B Button") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("Menu") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("Start") + PORT_START("P2") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_NAME("Joypad Up") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_NAME("Joypad Down") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_NAME("Joypad Left") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_NAME("Joypad Right") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("A Button") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("B Button") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("Menu") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("Start") +INPUT_PORTS_END + void vii_state::test_centered(uint8_t *ROM) { @@ -1017,6 +1078,7 @@ void vii_state::machine_start() m_controller_input[4] = 0; m_controller_input[6] = 0xff; m_controller_input[7] = 0; + m_w60_controller_input = -1; if (m_cart && m_cart->exists()) { @@ -1025,7 +1087,7 @@ void vii_state::machine_start() m_bank->configure_entries(0, ceilf((float)m_cart_rom->bytes()/0x800000), m_cart_rom->base(), 0x800000 ); m_bank->set_entry(0); } - else if (m_spg243_mode == SPG243_VII) // Vii bios is banked + else if (m_spg243_mode == SPG243_VII || m_spg243_mode == SPG243_WIRELESS60) // Vii bios is banked { m_bank->configure_entries(0, ceilf((float)m_bios_rom->bytes()/0x800000), m_bios_rom->base(), 0x800000 ); m_bank->set_entry(0); @@ -1117,7 +1179,7 @@ INTERRUPT_GEN_MEMBER(vii_state::vii_vblank) } -static MACHINE_CONFIG_START( vii, vii_state ) +static MACHINE_CONFIG_START( vii ) MCFG_CPU_ADD( "maincpu", UNSP, XTAL_27MHz) MCFG_CPU_PROGRAM_MAP( vii_mem ) @@ -1138,7 +1200,7 @@ static MACHINE_CONFIG_START( vii, vii_state ) MCFG_SOFTWARE_LIST_ADD("vii_cart","vii") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vsmile, vii_state ) +static MACHINE_CONFIG_START( vsmile ) MCFG_CPU_ADD( "maincpu", UNSP, XTAL_27MHz) MCFG_CPU_PROGRAM_MAP( vii_mem ) @@ -1159,7 +1221,7 @@ static MACHINE_CONFIG_START( vsmile, vii_state ) MCFG_SOFTWARE_LIST_ADD("cart_list","vsmile_cart") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( batman, vii_state ) +static MACHINE_CONFIG_START( batman ) MCFG_CPU_ADD( "maincpu", UNSP, XTAL_27MHz) MCFG_CPU_PROGRAM_MAP( vii_mem ) @@ -1177,6 +1239,21 @@ static MACHINE_CONFIG_START( batman, vii_state ) MCFG_PALETTE_ADD("palette", 32768) MACHINE_CONFIG_END +static MACHINE_CONFIG_START( wirels60 ) + + MCFG_CPU_ADD( "maincpu", UNSP, XTAL_27MHz) + MCFG_CPU_PROGRAM_MAP( vii_mem ) + MCFG_CPU_VBLANK_INT_DRIVER("screen", vii_state, vii_vblank) + + + MCFG_SCREEN_ADD( "screen", RASTER ) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_SIZE(320, 240) + MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1) + MCFG_SCREEN_UPDATE_DRIVER(vii_state, screen_update_vii) + MCFG_PALETTE_ADD("palette", 32768) +MACHINE_CONFIG_END + DRIVER_INIT_MEMBER(vii_state,vii) { m_spg243_mode = SPG243_VII; @@ -1201,6 +1278,12 @@ DRIVER_INIT_MEMBER(vii_state,walle) m_centered_coordinates = 0; } +DRIVER_INIT_MEMBER(vii_state,wirels60) +{ + m_spg243_mode = SPG243_WIRELESS60; + m_centered_coordinates = 1; +} + ROM_START( vii ) ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) /* dummy region for u'nSP */ @@ -1230,9 +1313,25 @@ ROM_START( walle ) //ROM_LOAD16_WORD_SWAP( "walle.bin", 0x000000, 0x400000, CRC(6bc90b16) SHA1(184d72de059057aae7800da510fcf05ed1da9ec9)) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 2004, batmantv, vii, 0, batman, batman, vii_state, batman, "JAKKS Pacific Inc / HotGen Ltd", "The Batman", MACHINE_NO_SOUND ) -CONS( 2005, vsmile, 0, 0, vsmile, vsmile, vii_state, vsmile, "V-Tech", "V-Smile (Germany)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) -CONS( 2005, vsmilef, vsmile, 0, vsmile, vsmile, vii_state, vsmile, "V-Tech", "V-Smile (France)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) -CONS( 2007, vii, 0, 0, vii, vii, vii_state, vii, "Jungle Soft / KenSingTon / Chintendo / Siatronics", "Vii", MACHINE_NO_SOUND ) -CONS( 2008, walle, vii, 0, batman, walle, vii_state, walle, "JAKKS Pacific Inc", "Wall-E", MACHINE_NO_SOUND ) +ROM_START( zone60 ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) /* dummy region for u'nSP */ + + ROM_REGION( 0x4000000, "bios", 0 ) + ROM_LOAD( "zone60.bin", 0x0000, 0x4000000, CRC(4cb637d1) SHA1(1f97cbdb4299ac0fbafc2a3aa592066cb0727066)) +ROM_END + +ROM_START( wirels60 ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) /* dummy region for u'nSP */ + + ROM_REGION( 0x4000000, "bios", 0 ) + ROM_LOAD( "wirels60.bin", 0x0000, 0x4000000, CRC(b4df8b28) SHA1(00e3da542e4bc14baf4724ad436f66d4c0f65c84)) +ROM_END + +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +CONS( 2004, batmantv, vii, 0, batman, batman, vii_state, batman, "JAKKS Pacific Inc / HotGen Ltd", "The Batman", MACHINE_NO_SOUND ) +CONS( 2005, vsmile, 0, 0, vsmile, vsmile, vii_state, vsmile, "V-Tech", "V-Smile (Germany)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +CONS( 2005, vsmilef, vsmile, 0, vsmile, vsmile, vii_state, vsmile, "V-Tech", "V-Smile (France)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +CONS( 2007, vii, 0, 0, vii, vii, vii_state, vii, "Jungle Soft / KenSingTon / Chintendo / Siatronics", "Vii", MACHINE_NO_SOUND ) +CONS( 2008, walle, vii, 0, batman, walle, vii_state, walle, "JAKKS Pacific Inc", "Wall-E", MACHINE_NO_SOUND ) +CONS( 2010, zone60, 0, 0, wirels60, wirels60, vii_state, wirels60, "Jungle Soft / Ultimate Products (HK) Ltd", "Zone 60", MACHINE_NO_SOUND ) +CONS( 2010, wirels60, 0, 0, wirels60, wirels60, vii_state, wirels60, "Jungle Soft / Kids Station Toys Inc", "Wireless 60", MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/vindictr.cpp b/src/mame/drivers/vindictr.cpp index 93dbb21c466..b757fe65406 100644 --- a/src/mame/drivers/vindictr.cpp +++ b/src/mame/drivers/vindictr.cpp @@ -181,7 +181,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( vindictr, vindictr_state ) +static MACHINE_CONFIG_START( vindictr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2) diff --git a/src/mame/drivers/vip.cpp b/src/mame/drivers/vip.cpp index a70675f905a..24efd928e23 100644 --- a/src/mame/drivers/vip.cpp +++ b/src/mame/drivers/vip.cpp @@ -710,7 +710,7 @@ QUICKLOAD_LOAD_MEMBER( vip_state, vip ) // MACHINE_CONFIG( vip ) //------------------------------------------------- -static MACHINE_CONFIG_START( vip, vip_state ) +static MACHINE_CONFIG_START( vip ) // basic machine hardware MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_52128MHz/2) MCFG_CPU_PROGRAM_MAP(vip_mem) @@ -808,6 +808,6 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1977, vip, 0, 0, vip, vip, driver_device, 0, "RCA", "Cosmac VIP (VP-711)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS ) -COMP( 1977, vp111, vip, 0, vp111, vip, driver_device, 0, "RCA", "Cosmac VIP (VP-111)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1977, vip, 0, 0, vip, vip, vip_state, 0, "RCA", "Cosmac VIP (VP-711)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS ) +COMP( 1977, vp111, vip, 0, vp111, vip, vip_state, 0, "RCA", "Cosmac VIP (VP-111)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS ) diff --git a/src/mame/drivers/viper.cpp b/src/mame/drivers/viper.cpp index 2ce03887b29..a70817c8f50 100644 --- a/src/mame/drivers/viper.cpp +++ b/src/mame/drivers/viper.cpp @@ -1,6 +1,104 @@ // license:BSD-3-Clause // copyright-holders:Ville Linde + /* + Konami Viper System + + Driver by Ville Linde + + + + Software notes (as per Police 911) + -- VL - 01.06.2011 + + IRQs: + + IRQ0: ??? (Task 4) + IRQ1: unused + IRQ2: ??? Possibly UART? Accesses registers at 0xffe00008...f + IRQ3: ??? (Task 5, sound?) + IRQ4: Voodoo3 Currently only for User Interrupt Command, maybe a more extensive handler gets installed later? + + I2C: ??? (no task switch) what drives this? network? U13 (ADC838) test fails if I2C doesn't work + DMA0: unused + DMA1: unused + IIVPR3: unused + + Memory: + + 0x000001E0: Current task + 0x000001E1: Current FPU task + 0x000001E4: Scheduled tasks bitvector (bit 31 = task0, etc.) + 0x00000A00...BFF: Task structures + 0x00-03: unknown + 0x04: unknown + 0x05: if non-zero, this task uses FPU + 0x06-07: unknown + 0x08: unknown mem pointer, task stack pointer? + 0x0c: pointer to task PC (also top of stack?) + + + 0x00000310: Global timer 0 IRQ handler + 0x00000320: Global timer 1 IRQ handler + 0x00000330: Global timer 2 IRQ handler + 0x00000340: Global timer 3 IRQ handler + 0x00000350: IRQ0 handler + 0x00000360: IRQ1 handler + 0x00000370: IRQ2 handler + 0x00000380: IRQ3 handler + 0x00000390: IRQ4 handler + 0x000003a0: I2C IRQ handler + 0x000003b0: DMA0 IRQ handler + 0x000003c0: DMA1 IRQ handler + 0x000003d0: Message Unit IRQ handler + + 0x000004e4: Global timer 0 IRQ handler function ptr + 0x000004e8: Global timer 1 IRQ handler function ptr + 0x000004ec: Global timer 2 IRQ handler function ptr + 0x000004f0: Global timer 3 IRQ handler function ptr + + + IRQ0: Vector 0x0004e020 Stack 0x000d4fa4 + IRQ1: Vector 0x0000a5b8 Stack 0x0001323c (dummy) + IRQ2: Vector 0x000229bc Stack 0x000d4fa4 + IRQ3: Vector 0x006a02f4 Stack 0x006afeb0 + IRQ4: Vector 0x0068c354 Stack 0x0068cc54 + I2C: Vector 0x00023138 Stack 0x000d4fa4 + + + Functions of interest: + + 0x0000f7b4: SwitchTask() + 0x0000c130: ScheduleTask() + 0x00009d00: LoadProgram(): R3 = ptr to filename + + + TODO: + - needs a proper way to dump security dongles, anything but p9112 has placeholder ROM for ds2430. + + Game status: + ppp2nd POST: "NO SECURITY ERROR" + boxingm Goes to attract mode when ran with memory card check. Coins up. + code1d,b RTC self check bad + gticlub2 Attract mode works. Coins up. Hangs in car selection. + gticlub2ea Doesn't boot: bad CHD? + jpark3 POST?: Shows "Now loading..." then black screen (sets global timer 1 on EPIC) - with IRQ3 crashes at first 3d frame + mocapglf Security code error + mocapb,j Crash after self checks + p911 "Distribution error" + p911e,j,uc,kc Hangs at POST, with IRQ3 it crashes at first 3d frame + p9112 RTC self check bad + popn9 Doesn't boot: bad CHD? + sscopex/sogeki Security code error + thrild2,a Attract mode with partial graphics. Coins up. Hangs in car selection screen. + thrild2c Inf loop on blue screen + tsurugi Goes to attract mode when ran with memory card check. Coins up. + tsurugij No NVRAM + wcombat Stuck on network check + xtrial Attract mode. Hangs. + mfightc,c Passes POST. Waits for network connection from main unit? Spams writes to 0xffe08000 (8-bit) + +=========================================================================================================================== Konami Viper Hardware Overview (last updated 5th June 2011 10:56pm) @@ -251,101 +349,6 @@ some other components. It will be documented at a later date. */ -/* - Konami Viper System - - Driver by Ville Linde - - - - Software notes (as per Police 911) - -- VL - 01.06.2011 - - IRQs: - - IRQ0: ??? (Task 4) - IRQ1: unused - IRQ2: ??? Possibly UART? Accesses registers at 0xffe00008...f - IRQ3: ??? (Task 5, sound?) - IRQ4: Voodoo3 Currently only for User Interrupt Command, maybe a more extensive handler gets installed later? - - I2C: ??? (no task switch) what drives this? network? U13 (ADC838) test fails if I2C doesn't work - DMA0: unused - DMA1: unused - IIVPR3: unused - - Memory: - - 0x000001E0: Current task - 0x000001E1: Current FPU task - 0x000001E4: Scheduled tasks bitvector (bit 31 = task0, etc.) - 0x00000A00...BFF: Task structures - 0x00-03: unknown - 0x04: unknown - 0x05: if non-zero, this task uses FPU - 0x06-07: unknown - 0x08: unknown mem pointer, task stack pointer? - 0x0c: pointer to task PC (also top of stack?) - - - 0x00000310: Global timer 0 IRQ handler - 0x00000320: Global timer 1 IRQ handler - 0x00000330: Global timer 2 IRQ handler - 0x00000340: Global timer 3 IRQ handler - 0x00000350: IRQ0 handler - 0x00000360: IRQ1 handler - 0x00000370: IRQ2 handler - 0x00000380: IRQ3 handler - 0x00000390: IRQ4 handler - 0x000003a0: I2C IRQ handler - 0x000003b0: DMA0 IRQ handler - 0x000003c0: DMA1 IRQ handler - 0x000003d0: Message Unit IRQ handler - - 0x000004e4: Global timer 0 IRQ handler function ptr - 0x000004e8: Global timer 1 IRQ handler function ptr - 0x000004ec: Global timer 2 IRQ handler function ptr - 0x000004f0: Global timer 3 IRQ handler function ptr - - - IRQ0: Vector 0x0004e020 Stack 0x000d4fa4 - IRQ1: Vector 0x0000a5b8 Stack 0x0001323c (dummy) - IRQ2: Vector 0x000229bc Stack 0x000d4fa4 - IRQ3: Vector 0x006a02f4 Stack 0x006afeb0 - IRQ4: Vector 0x0068c354 Stack 0x0068cc54 - I2C: Vector 0x00023138 Stack 0x000d4fa4 - - - Functions of interest: - - 0x0000f7b4: SwitchTask() - 0x0000c130: ScheduleTask() - 0x00009d00: LoadProgram(): R3 = ptr to filename - - - - Game status: - ppp2nd POST: "DIP SWITCH ERROR", "NO SECURITY ERROR" - boxingm Goes to attract mode when ran with memory card check. Coins up. - code1d,b RTC self check bad - gticlub2 Attract mode works. Coins up. Hangs in car selection. - gticlub2ea Doesn't boot: bad CHD? - jpark3 POST?: Shows "Now loading..." then black screen (sets global timer 1 on EPIC...) - mocapglf Security code error - mocapb,j Crash after self checks - p911,e,j,uc,kc "Distribution error" - p9112 RTC self check bad - popn9 Doesn't boot: bad CHD? - sscopex/sogeki Security code error - thrild2,a Attract mode with partial graphics. Coins up. Hangs in car selection screen. - thrild2c Inf loop on blue screen - tsurugi Goes to attract mode when ran with memory card check. Coins up. - tsurugij No NVRAM - wcombat Stuck on network check - xtrial Attract mode. Hangs. - mfightc,c Passes POST. Waits for network connection from main unit? Spams writes to 0xffe08000 (8-bit) -*/ - #include "emu.h" #include "cpu/powerpc/ppc.h" #include "machine/ataintf.h" @@ -380,13 +383,13 @@ public: m_maincpu(*this, "maincpu"), m_ata(*this, "ata"), m_voodoo(*this, "voodoo"), - m_workram(*this, "workram") + m_workram(*this, "workram"), + m_io_ports(*this, {"IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7"}) { } uint32_t m_epic_iack; int m_cf_card_ide; - int m_unk1_bit; uint32_t m_voodoo3_pci_reg[0x100]; int m_unk_serial_bit_w; uint16_t m_unk_serial_cmd; @@ -403,7 +406,7 @@ public: DECLARE_WRITE64_MEMBER(voodoo3_w); DECLARE_READ64_MEMBER(voodoo3_lfb_r); DECLARE_WRITE64_MEMBER(voodoo3_lfb_w); - DECLARE_READ64_MEMBER(unk1_r); + DECLARE_READ8_MEMBER(input_r); DECLARE_READ64_MEMBER(e70000_r); DECLARE_WRITE64_MEMBER(e70000_w); DECLARE_WRITE64_MEMBER(unk1a_w); @@ -446,6 +449,9 @@ public: required_device m_ata; required_device m_voodoo; required_shared_ptr m_workram; + required_ioport_array<8> m_io_ports; + uint8_t m_ds2430_unk_status; + DECLARE_CUSTOM_INPUT_MEMBER(ds2430_unk_r); }; uint32_t viper_state::screen_update_viper(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -1729,7 +1735,6 @@ WRITE64_MEMBER(viper_state::voodoo3_lfb_w) #define DS2430_STATE_READ_MEM 5 #define DS2430_STATE_READ_MEM_ADDRESS 6 -static int unk1_bit = 1; static uint8_t ds2430_data; static int ds2430_data_count = 0; static int ds2430_reset = 0; @@ -1745,18 +1750,19 @@ TIMER_CALLBACK_MEMBER(viper_state::ds2430_timer_callback) if (param == 1) { - unk1_bit = 0; + m_ds2430_unk_status = 0; ds2430_timer->adjust(attotime::from_usec(150), 2); } else if (param == 2) { - unk1_bit = 1; + m_ds2430_unk_status = 1; ds2430_reset = 1; ds2430_state = DS2430_STATE_ROM_COMMAND; } } -READ64_MEMBER(viper_state::unk1_r) +#ifdef UNUSED_FUNCTION +READ64_MEMBER(viper_state::input_r) { uint64_t r = 0; //return 0;//0x0000400000000000U; @@ -1766,14 +1772,14 @@ READ64_MEMBER(viper_state::unk1_r) if (ACCESSING_BITS_40_47) { uint64_t reg = 0; - reg |= (unk1_bit << 5); + reg |= (m_ds2430_unk_status << 5); reg |= 0x40; // if this bit is 0, loads a disk copier instead //r |= 0x04; // screen flip reg |= 0x08; // memory card check (1 = enable) r |= reg << 40; - //r |= (uint64_t)(unk1_bit << 5) << 40; + //r |= (uint64_t)(m_ds2430_unk_status << 5) << 40; //r |= 0x0000400000000000U; //r |= 0x0000040000000000U; // screen flip @@ -1801,7 +1807,12 @@ READ64_MEMBER(viper_state::unk1_r) return r; } +#endif +READ8_MEMBER(viper_state::input_r) +{ + return (m_io_ports[offset & 7])->read(); +} int viper_state::ds2430_insert_cmd_bit(int bit) { @@ -1865,12 +1876,14 @@ void viper_state::DS2430_w(int bit) case DS2430_STATE_READ_MEM: { - unk1_bit = (ds2430_rom[(ds2430_data_count/8)] >> (ds2430_data_count%8)) & 1; + m_ds2430_unk_status = (ds2430_rom[(ds2430_data_count/8)] >> (ds2430_data_count%8)) & 1; ds2430_data_count++; - printf("DS2430_w: read mem %d, bit = %d\n", ds2430_data_count, unk1_bit); + printf("DS2430_w: read mem %d, bit = %d\n", ds2430_data_count, m_ds2430_unk_status); if (ds2430_data_count >= 256) { + //machine().debug_break(); + ds2430_data_count = 0; ds2430_state = DS2430_STATE_ROM_COMMAND; ds2430_reset = 0; @@ -1884,7 +1897,7 @@ void viper_state::DS2430_w(int bit) ds2430_data_count++; printf("DS2430_w: read rom %d, bit = %d\n", ds2430_data_count, rombit); - unk1_bit = rombit; + m_ds2430_unk_status = rombit; if (ds2430_data_count >= 64) { @@ -1925,7 +1938,7 @@ WRITE64_MEMBER(viper_state::e70000_w) { ds2430_timer->adjust(attotime::from_usec(40), 1); // presence pulse for 240 microsecs - unk1_bit = 1; + m_ds2430_unk_status = 1; // printf("e70000_w: %08X%08X, %08X (mask %08X%08X) at %08X\n", (uint32_t)(data >> 32), (uint32_t)data, offset, (uint32_t)(mem_mask >> 32), (uint32_t)mem_mask, space.device().safe_pc()); } else @@ -1959,7 +1972,7 @@ WRITE64_MEMBER(viper_state::unk1b_w) { if (ACCESSING_BITS_56_63) { - unk1_bit = 0; + m_ds2430_unk_status = 0; // printf("unk1b_w: %08X%08X, %08X (mask %08X%08X) at %08X\n", (uint32_t)(data >> 32), (uint32_t)data, offset, (uint32_t)(mem_mask >> 32), (uint32_t)mem_mask, cpu->safe_pc()); } } @@ -2053,11 +2066,10 @@ WRITE64_MEMBER(viper_state::unk_serial_w) } } - - /*****************************************************************************/ static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state ) +// ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000000, 0x00ffffff) AM_MIRROR(0x1000000) AM_RAM AM_SHARE("workram") AM_RANGE(0x80000000, 0x800fffff) AM_READWRITE32(epic_r, epic_w,0xffffffffffffffffU) AM_RANGE(0x82000000, 0x83ffffff) AM_READWRITE(voodoo3_r, voodoo3_w) @@ -2068,69 +2080,200 @@ static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state ) // 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf)) // 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf)) // 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd)) +// AM_RANGE(0xff400xxx, 0xff400xxx) ppp2nd sense device AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r) AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w) - AM_RANGE(0xffe10000, 0xffe10007) AM_READ(unk1_r) + AM_RANGE(0xffe08000, 0xffe08007) AM_NOP + AM_RANGE(0xffe10000, 0xffe10007) AM_READ8(input_r, 0xffffffffffffffffU) + AM_RANGE(0xffe28000, 0xffe28007) AM_WRITENOP // ppp2nd lamps AM_RANGE(0xffe30000, 0xffe31fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffffffffffffU) AM_RANGE(0xffe40000, 0xffe4000f) AM_NOP AM_RANGE(0xffe50000, 0xffe50007) AM_WRITE(unk2_w) + AM_RANGE(0xffe60000, 0xffe60007) AM_NOP AM_RANGE(0xffe70000, 0xffe7000f) AM_READWRITE(e70000_r, e70000_w) AM_RANGE(0xffe80000, 0xffe80007) AM_WRITE(unk1a_w) AM_RANGE(0xffe88000, 0xffe88007) AM_WRITE(unk1b_w) + AM_RANGE(0xffe98000, 0xffe98007) AM_NOP AM_RANGE(0xffe9a000, 0xffe9bfff) AM_RAM // World Combat uses this AM_RANGE(0xfff00000, 0xfff3ffff) AM_ROM AM_REGION("user1", 0) // Boot ROM ADDRESS_MAP_END /*****************************************************************************/ -static INPUT_PORTS_START( viper ) - PORT_START("IN0") +CUSTOM_INPUT_MEMBER(viper_state::ds2430_unk_r) +{ + return m_ds2430_unk_status; +} - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // Shift down - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW) /* Test Button */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7) +static INPUT_PORTS_START( viper ) + PORT_START("IN0") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN1") - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // Shift up - - PORT_START("DSW") - PORT_DIPNAME( 0x80, 0x80, "DIP1" ) PORT_DIPLOCATION("SW:1") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "DIP2" ) PORT_DIPLOCATION("SW:2") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "DIP3" ) PORT_DIPLOCATION("SW:3") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN2") + PORT_DIPNAME( 0x01, 0x01, "DIP4" ) PORT_DIPLOCATION("SW:4") + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "DIP4" ) PORT_DIPLOCATION("SW:4") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPNAME( 0x02, 0x02, "DIP3" ) PORT_DIPLOCATION("SW:3") + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, "DIP5" ) PORT_DIPLOCATION("SW:5") + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW:2") + PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPNAME( 0x08, 0x00, "DIP1" ) PORT_DIPLOCATION("SW:1") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, "DIP6" ) PORT_DIPLOCATION("SW:6") - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, viper_state, ds2430_unk_r, nullptr) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // if this bit is 0, loads a disk copier instead + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START("IN3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) /* Test Button */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) + PORT_DIPNAME( 0x20, 0x20, "3" ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "3-3" ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("IN4") + PORT_DIPNAME( 0x01, 0x01, "4" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + // following bits controls screen mux in Mocap Golf? + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("IN5") + PORT_BIT(0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START("IN6") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN7") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +INPUT_PORTS_START( ppp2nd ) + PORT_INCLUDE( viper ) + + PORT_MODIFY("IN2") + PORT_DIPNAME( 0x01, 0x01, "DIP4" ) PORT_DIPLOCATION("SW:4") + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "DIP7" ) PORT_DIPLOCATION("SW:7") + PORT_DIPNAME( 0x02, 0x02, "DIP3" ) PORT_DIPLOCATION("SW:3") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x01, 0x01, "DIP8" ) PORT_DIPLOCATION("SW:8") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPNAME( 0x04, 0x04, "DIP2" ) PORT_DIPLOCATION("SW:2") + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, "DIP1" ) PORT_DIPLOCATION("SW:1") + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_MODIFY("IN3") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("OK Button") + + PORT_MODIFY("IN4") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Left Button") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Right Button") + + PORT_MODIFY("IN5") + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // another OK button +INPUT_PORTS_END + +INPUT_PORTS_START( thrild2 ) + PORT_INCLUDE( viper ) + + PORT_MODIFY("IN3") + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Shift Down") + + PORT_MODIFY("IN4") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Shift Up") + + // TODO: analog channels +INPUT_PORTS_END + +INPUT_PORTS_START( gticlub2 ) + PORT_INCLUDE( thrild2 ) + + // TODO: specific analog channel for hand brake +INPUT_PORTS_END + +INPUT_PORTS_START( boxingm ) + PORT_INCLUDE( viper ) + + PORT_MODIFY("IN5") + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // memory card check for boxingm (actually comms enable?) +INPUT_PORTS_END + +// TODO: left/right escape, 2nd service switch? +INPUT_PORTS_START( jpark3 ) + PORT_INCLUDE( viper ) + + PORT_MODIFY("IN3") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_MODIFY("IN4") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Gun Trigger") PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Gun Trigger") PORT_PLAYER(2) + +INPUT_PORTS_END + +INPUT_PORTS_START( p911 ) + PORT_INCLUDE( viper ) + + PORT_MODIFY("IN4") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Gun Trigger") + + PORT_MODIFY("IN5") + // one of these is P2 SHT2 (checks and fails serial if pressed) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +INPUT_PORTS_START( tsurugi ) + PORT_INCLUDE( viper ) + + PORT_MODIFY("IN4") + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Shot Button") + + PORT_MODIFY("IN5") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Foot Pedal") + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // deluxe ID? if off tries to check UART & "lampo"/bleeder at POST + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // sensor grip (1) horizontal (0) vertical INPUT_PORTS_END /*****************************************************************************/ @@ -2139,7 +2282,7 @@ INPUT_PORTS_END INTERRUPT_GEN_MEMBER(viper_state::viper_vblank) { mpc8240_interrupt(MPC8240_IRQ0); - //mpc8240_interrupt(device.machine, MPC8240_IRQ3); + //mpc8240_interrupt(MPC8240_IRQ3); } WRITE_LINE_MEMBER(viper_state::voodoo_vblank) @@ -2172,9 +2315,11 @@ void viper_state::machine_reset() // Viper expects these settings or the BIOS fails identify_device[51] = 0x0200; /* 51: PIO data transfer cycle timing mode */ identify_device[67] = 0x00f0; /* 67: minimum PIO transfer cycle time without flow control */ + + m_ds2430_unk_status = 1; } -static MACHINE_CONFIG_START( viper, viper_state ) +static MACHINE_CONFIG_START( viper ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MPC8240, 200000000) @@ -2252,7 +2397,8 @@ ROM_START(kviper) VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + // presumably doesn't belong here + ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_END @@ -2263,8 +2409,10 @@ ROM_START(ppp2nd) VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) - + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + // byte 0x1e (0) JAA (1) AAA + // byte 0x1f (1) rental + ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ DISK_REGION( "ata:0:hdd:image" ) @@ -2276,7 +2424,7 @@ ROM_START(boxingm) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a45jaa_nvram.u39", 0x00000, 0x2000, CRC(c24e29fc) SHA1(efb6ecaf25cbdf9d8dfcafa85e38a195fa5ff6c4)) @@ -2289,7 +2437,7 @@ ROM_START(code1d) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* game-specific DS2430 on PCB */ - ROM_LOAD("ds2430_code1d.u3", 0x00, 0x28, CRC(fada04dd) SHA1(49bd4e87d48f0404a091a79354bbc09cde739f5c)) + ROM_LOAD("ds2430_code1d.u3", 0x00, 0x28, BAD_DUMP CRC(fada04dd) SHA1(49bd4e87d48f0404a091a79354bbc09cde739f5c)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("nvram.u39", 0x00000, 0x2000, NO_DUMP ) @@ -2302,7 +2450,7 @@ ROM_START(code1db) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* game-specific DS2430 on PCB */ - ROM_LOAD("ds2430_code1d.u3", 0x00, 0x28, CRC(fada04dd) SHA1(49bd4e87d48f0404a091a79354bbc09cde739f5c)) + ROM_LOAD("ds2430_code1d.u3", 0x00, 0x28, BAD_DUMP CRC(fada04dd) SHA1(49bd4e87d48f0404a091a79354bbc09cde739f5c)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("m48t58_UAB.u39", 0x00000, 0x2000, CRC(6059cdad) SHA1(67f9d9239c3e3ef8c967f26c45fa9201981ad848) ) @@ -2315,11 +2463,12 @@ ROM_START(gticlub2) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ - ROM_LOAD("nvram.u39", 0x00000, 0x2000, CRC(d0604e84) SHA1(18d1183f1331af3e655a56692eb7ab877b4bc239)) //old dump, probably has non-default settings. - ROM_LOAD("941jab_nvram.u39", 0x00000, 0x2000, CRC(6c4a852f) SHA1(2753dda42cdd81af22dc6780678f1ddeb3c62013)) + // both with non-default settings (check sound options for istance) + ROM_LOAD("nvram.u39", 0x00000, 0x2000, BAD_DUMP CRC(d0604e84) SHA1(18d1183f1331af3e655a56692eb7ab877b4bc239)) + ROM_LOAD("941jab_nvram.u39", 0x00000, 0x2000, BAD_DUMP CRC(6c4a852f) SHA1(2753dda42cdd81af22dc6780678f1ddeb3c62013)) DISK_REGION( "ata:0:hdd:image" ) DISK_IMAGE( "941b02", 0, SHA1(943bc9b1ea7273a8382b94c8a75010dfe296df14) ) @@ -2329,9 +2478,10 @@ ROM_START(gticlub2ea) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ + ROM_LOAD("ds2430.u3", 0x00, 0x28, NO_DUMP ) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ - ROM_LOAD("941eaa_nvram.u39", 0x00000, 0x2000, CRC(5ee7004d) SHA1(92e0ce01049308f459985d466fbfcfac82f34a47)) + ROM_LOAD("941eaa_nvram.u39", 0x00000, 0x2000, BAD_DUMP CRC(5ee7004d) SHA1(92e0ce01049308f459985d466fbfcfac82f34a47)) DISK_REGION( "ata:0:hdd:image" ) DISK_IMAGE( "941a02", 0, NO_DUMP ) @@ -2342,7 +2492,7 @@ ROM_START(jpark3) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("b41ebc_nvram.u39", 0x00000, 0x2000, CRC(55d1681d) SHA1(26868cf0d14f23f06b81f2df0b4186924439bb43)) @@ -2356,7 +2506,7 @@ ROM_START(jpark3u) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("b41 ua rtc.u39", 0x00000, 0x1ff8, CRC(75fdda39) SHA1(6292ce0d32afdf6bde33ac7f1f07655fa17282f6)) @@ -2370,7 +2520,7 @@ ROM_START(mocapglf) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("b33uaa_nvram.u39", 0x00000, 0x1ff8, BAD_DUMP CRC(0f0ba988) SHA1(5618c03b21fc2ba14b2e159cee3aab7f53c2c34d)) //data looks plain bad (compared to the other games) @@ -2383,7 +2533,7 @@ ROM_START(mocapb) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a29aaa_nvram.u39", 0x000000, 0x2000, CRC(14b9fe68) SHA1(3c59e6df1bb46bc1835c13fd182b1bb092c08759)) //supposed to be aab version? @@ -2396,7 +2546,7 @@ ROM_START(mocapbj) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a29jaa_nvram.u39", 0x000000, 0x2000, CRC(2f7cdf27) SHA1(0b69d8728be12909e235268268a312982f81d46a)) @@ -2409,7 +2559,7 @@ ROM_START(p911) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a00uad_nvram.u39", 0x000000, 0x2000, CRC(cca056ca) SHA1(de1a00d84c1311d48bbe6d24f5b36e22ecf5e85a)) @@ -2422,7 +2572,7 @@ ROM_START(p911uc) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a00uac_nvram.u39", 0x000000, 0x2000, NO_DUMP ) @@ -2435,7 +2585,7 @@ ROM_START(p911kc) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a00kac_nvram.u39", 0x000000, 0x2000, CRC(8ddc921c) SHA1(901538da237679fc74966a301278b36d1335671f) ) @@ -2448,7 +2598,7 @@ ROM_START(p911e) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a00eaa_nvram.u39", 0x000000, 0x2000, CRC(4f3497b6) SHA1(3045c54f98dff92cdf3a1fc0cd4c76ba82d632d7) ) @@ -2461,7 +2611,7 @@ ROM_START(p911ea) VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a00eaa_nvram.u39", 0x000000, 0x2000, CRC(4f3497b6) SHA1(3045c54f98dff92cdf3a1fc0cd4c76ba82d632d7) ) @@ -2474,7 +2624,7 @@ ROM_START(p911j) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a00jaa_nvram.u39", 0x000000, 0x2000, CRC(9ecf70dc) SHA1(4769a99b0cc28563e219860b8d480f32d1e21f60)) @@ -2500,7 +2650,7 @@ ROM_START(popn9) //Note: this is actually a Konami Pyson HW! (PlayStation 2-base VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("nvram.u39", 0x000000, 0x2000, NO_DUMP ) @@ -2513,7 +2663,7 @@ ROM_START(sscopex) VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a13uaa_nvram.u39", 0x000000, 0x2000, CRC(7b0e1ac8) SHA1(1ea549964539e27f87370e9986bfa44eeed037cd)) @@ -2528,7 +2678,7 @@ ROM_START(sogeki) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("nvram.u39", 0x000000, 0x2000, CRC(2f325c55) SHA1(0bc44f40f981a815c8ce64eae95ae55db510c565)) @@ -2541,8 +2691,10 @@ ROM_START(sscopefh) VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ + ROM_LOAD("ds2430.u3", 0x00, 0x28, NO_DUMP ) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ + ROM_LOAD("nvram.u39", 0x000000, 0x2000, NO_DUMP ) DISK_REGION( "ata:0:hdd:image" ) DISK_IMAGE( "ccca02", 0, SHA1(ec0d9a1520f17c73750de71dba8b31bc8c9d0409) ) @@ -2552,7 +2704,7 @@ ROM_START(thrild2) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a41ebb_nvram.u39", 0x00000, 0x2000, CRC(22f59ac0) SHA1(e14ea2ba95b72edf0a3331ab82c192760bfdbce3)) @@ -2562,11 +2714,24 @@ ROM_START(thrild2) //* DISK_IMAGE( "a41b02", 0, SHA1(0426f4bb9001cf457f44e2c22e3d7575b8049aa3) ) ROM_END +ROM_START(thrild2j) //* + VIPER_BIOS + + ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + + ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ + ROM_LOAD("a41jaa_nvram.u39", 0x00000, 0x2000, CRC(d56226d5) SHA1(085f40816befde993069f56fdd5f8bd6ccfcf301)) + + DISK_REGION( "ata:0:hdd:image" ) + DISK_IMAGE( "a41a02", 0, SHA1(bbb71e23bddfa07dfa30b6565a35befd82b055b8) ) // same as Asian version +ROM_END + ROM_START(thrild2a) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a41aaa_nvram.u39", 0x00000, 0x2000, CRC(d5de9b8e) SHA1(768bcd46a6ad20948f60f5e0ecd2f7b9c2901061)) @@ -2579,7 +2744,7 @@ ROM_START(thrild2ab) VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a41aaa_nvram.u39", 0x00000, 0x2000, CRC(d5de9b8e) SHA1(768bcd46a6ad20948f60f5e0ecd2f7b9c2901061)) @@ -2592,7 +2757,7 @@ ROM_START(thrild2ac) VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a41aaa_nvram.u39", 0x00000, 0x2000, CRC(d5de9b8e) SHA1(768bcd46a6ad20948f60f5e0ecd2f7b9c2901061)) @@ -2606,7 +2771,7 @@ ROM_START(thrild2c) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("941eaa_nvram.u39", 0x00000, 0x2000, NO_DUMP ) @@ -2619,7 +2784,7 @@ ROM_START(tsurugi) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a30eab_nvram.u39", 0x00000, 0x2000, CRC(c123342c) SHA1(55416767608fe0311a362854a16b214b04435a31)) @@ -2632,7 +2797,7 @@ ROM_START(tsurugij) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("a30jac_nvram.u39", 0x00000, 0x2000, NO_DUMP ) @@ -2645,8 +2810,10 @@ ROM_START(tsurugie) VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ + ROM_LOAD("ds2430.u3", 0x00, 0x28, NO_DUMP ) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ + ROM_LOAD("nvram.u39", 0x000000, 0x2000, NO_DUMP ) DISK_REGION( "ata:0:hdd:image" ) DISK_IMAGE( "a30eab02", 0, SHA1(fcc5b69f89e246f26ca4b8546cc409d3488bbdd9) ) @@ -2657,7 +2824,7 @@ ROM_START(wcombat) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("wcombat_nvram.u39", 0x00000, 0x2000, CRC(4f8b5858) SHA1(68066241c6f9db7f45e55b3c5da101987f4ce53c)) @@ -2670,7 +2837,7 @@ ROM_START(wcombatb) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("wcombat_nvram.u39", 0x00000, 0x2000, CRC(4f8b5858) SHA1(68066241c6f9db7f45e55b3c5da101987f4ce53c)) @@ -2683,6 +2850,7 @@ ROM_START(wcombatk) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ + ROM_LOAD("ds2430.u3", 0x00, 0x28, NO_DUMP ) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("wcombatk_nvram.u39", 0x00000, 0x2000, CRC(ebd4d645) SHA1(2fa7e2c6b113214f3eb1900c8ceef4d5fcf0bb76)) @@ -2695,6 +2863,7 @@ ROM_START(wcombatu) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ + ROM_LOAD("ds2430.u3", 0x00, 0x28, NO_DUMP ) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("Warzaid u39 c22d02", 0x00000, 0x2000, CRC(71744990) SHA1(19ed07572f183e7b3a712704ebddf7a848c48a78) ) @@ -2710,7 +2879,7 @@ ROM_START(wcombatj) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("wcombatj_nvram.u39", 0x00000, 0x2000, CRC(bd8a6640) SHA1(2d409197ef3fb07d984d27fa943f29c7a711d715)) @@ -2723,7 +2892,7 @@ ROM_START(xtrial) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("b4xjab_nvram.u39", 0x00000, 0x2000, CRC(33708a93) SHA1(715968e3c9c15edf628fa6ac655dc0864e336c6c)) @@ -2784,7 +2953,7 @@ ROM_START(mfightc) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("nvram.u39", 0x00000, 0x2000, CRC(9fb551a5) SHA1(a33d185e186d404c3bf62277d7e34e5ad0000b09)) //likely non-default settings @@ -2799,7 +2968,7 @@ ROM_START(mfightcc) //* VIPER_BIOS ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) + ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ ROM_LOAD("c09jac_nvram.u39", 0x00000, 0x2000, NO_DUMP ) @@ -2813,37 +2982,38 @@ ROM_END /* Viper BIOS */ GAME(1999, kviper, 0, viper, viper, viper_state, viper, ROT0, "Konami", "Konami Viper BIOS", MACHINE_IS_BIOS_ROOT) -GAME(2001, ppp2nd, kviper, viper, viper, viper_state, viperhd, ROT0, "Konami", "ParaParaParadise 2nd Mix", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, ppp2nd, kviper, viper, ppp2nd, viper_state, viperhd, ROT0, "Konami", "ParaParaParadise 2nd Mix", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, boxingm, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Boxing Mania (ver JAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, boxingm, kviper, viper, boxingm, viper_state, vipercf, ROT0, "Konami", "Boxing Mania: Ashita no Joe (ver JAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2000, code1d, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Code One Dispatch (ver D)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2000, code1db, code1d, viper, viper, viper_state, vipercf, ROT0, "Konami", "Code One Dispatch (ver B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, gticlub2, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "GTI Club 2 (ver JAB)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, gticlub2ea,gticlub2, viper, viper, viper_state, vipercf, ROT0, "Konami", "GTI Club 2 (ver EAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, jpark3, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Jurassic Park 3 (ver EBC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, jpark3u, jpark3, viper, viper, viper_state, vipercf, ROT0, "Konami", "Jurassic Park 3 (ver UA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, mocapglf, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Mocap Golf (ver UAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, gticlub2, kviper, viper, gticlub2, viper_state, vipercf, ROT0, "Konami", "GTI Club: Corso Italiano (ver JAB)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, gticlub2ea,gticlub2, viper, gticlub2, viper_state, vipercf, ROT0, "Konami", "GTI Club: Corso Italiano (ver EAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, jpark3, kviper, viper, jpark3, viper_state, vipercf, ROT0, "Konami", "Jurassic Park 3 (ver EBC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, jpark3u, jpark3, viper, jpark3, viper_state, vipercf, ROT0, "Konami", "Jurassic Park 3 (ver UA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, mocapglf, kviper, viper, viper, viper_state, vipercf, ROT90, "Konami", "Mocap Golf (ver UAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2001, mocapb, kviper, viper, viper, viper_state, vipercf, ROT90, "Konami", "Mocap Boxing (ver AAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2001, mocapbj, mocapb, viper, viper, viper_state, vipercf, ROT90, "Konami", "Mocap Boxing (ver JAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, p911, kviper, viper, viper, viper_state, vipercf, ROT90, "Konami", "Police 911 (ver UAD)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, p911uc, p911, viper, viper, viper_state, vipercf, ROT90, "Konami", "Police 911 (ver UAC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, p911kc, p911, viper, viper, viper_state, vipercf, ROT90, "Konami", "Police 911 (ver KAC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, p911e, p911, viper, viper, viper_state, vipercf, ROT90, "Konami", "Police 24/7 (ver EAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, p911ea, p911, viper, viper, viper_state, vipercf, ROT90, "Konami", "Police 24/7 (ver EAA, alt)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, p911j, p911, viper, viper, viper_state, vipercf, ROT90, "Konami", "Keisatsukan Shinjuku 24ji (ver JAC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, p9112, kviper, viper, viper, viper_state, vipercf, ROT90, "Konami", "Police 911 2 (VER. UAA:B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, p911, kviper, viper, p911, viper_state, vipercf, ROT90, "Konami", "Police 911 (ver UAD)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, p911uc, p911, viper, p911, viper_state, vipercf, ROT90, "Konami", "Police 911 (ver UAC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, p911kc, p911, viper, p911, viper_state, vipercf, ROT90, "Konami", "Police 911 (ver KAC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, p911e, p911, viper, p911, viper_state, vipercf, ROT90, "Konami", "Police 24/7 (ver EAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, p911ea, p911, viper, p911, viper_state, vipercf, ROT90, "Konami", "Police 24/7 (ver EAA, alt)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, p911j, p911, viper, p911, viper_state, vipercf, ROT90, "Konami", "Keisatsukan Shinjuku 24ji (ver JAC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, p9112, kviper, viper, p911, viper_state, vipercf, ROT90, "Konami", "Police 911 2 (VER. UAA:B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2003, popn9, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Pop'n Music 9 (ver JAB)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2001, sscopex, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Silent Scope EX (ver UAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2001, sogeki, sscopex, viper, viper, viper_state, vipercf, ROT0, "Konami", "Sogeki (ver JAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2002, sscopefh, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Silent Scope Fortune Hunter", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, thrild2, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver EBB)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, thrild2a, thrild2, viper, viper, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver AAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, thrild2ab, thrild2, viper, viper, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver AAA, alt)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, thrild2ac, thrild2, viper, viper, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver AAA, alt 2)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2001, thrild2c, thrild2, viper, viper, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver EAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2002, tsurugi, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Tsurugi (ver EAB)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2002, tsurugie, tsurugi, viper, viper, viper_state, vipercf, ROT0, "Konami", "Tsurugi (ver EAB, alt)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) -GAME(2002, tsurugij, tsurugi, viper, viper, viper_state, vipercf, ROT0, "Konami", "Tsurugi (ver JAC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, thrild2, kviper, viper, thrild2, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver EBB)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, thrild2j, thrild2, viper, thrild2, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver JAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, thrild2a, thrild2, viper, thrild2, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver AAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, thrild2ab, thrild2, viper, thrild2, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver AAA, alt)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, thrild2ac, thrild2, viper, thrild2, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver AAA, alt 2)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2001, thrild2c, thrild2, viper, thrild2, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver EAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2002, tsurugi, kviper, viper, tsurugi, viper_state, vipercf, ROT0, "Konami", "Tsurugi (ver EAB)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2002, tsurugie, tsurugi, viper, tsurugi, viper_state, vipercf, ROT0, "Konami", "Tsurugi (ver EAB, alt)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +GAME(2002, tsurugij, tsurugi, viper, tsurugi, viper_state, vipercf, ROT0, "Konami", "Tsurugi (ver JAC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2002, wcombat, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "World Combat (ver AAD:B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2002, wcombatb, wcombat, viper, viper, viper_state, vipercf, ROT0, "Konami", "World Combat (ver AAD:B, alt)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) GAME(2002, wcombatk, wcombat, viper, viper, viper_state, vipercf, ROT0, "Konami", "World Combat (ver KBC:B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp index 71a8d2912b2..3b8d1f51d48 100644 --- a/src/mame/drivers/vis.cpp +++ b/src/mame/drivers/vis.cpp @@ -41,10 +41,10 @@ private: emu_timer *m_pcm; }; -const device_type VIS_AUDIO = device_creator; +DEFINE_DEVICE_TYPE(VIS_AUDIO, vis_audio_device, "vis_pcm", "vis_pcm") vis_audio_device::vis_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VIS_AUDIO, "vis_pcm", tag, owner, clock, "vis_pcm", __FILE__), + : device_t(mconfig, VIS_AUDIO, tag, owner, clock), device_isa16_card_interface(mconfig, *this), m_rdac(*this, "rdac"), m_ldac(*this, "ldac") @@ -252,10 +252,10 @@ private: uint8_t m_crtc_regs[0x31]; }; -const device_type VIS_VGA = device_creator; +DEFINE_DEVICE_TYPE(VIS_VGA, vis_vga_device, "vis_vga", "vis_vga") vis_vga_device::vis_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : svga_device(mconfig, VIS_VGA, "vis_vga", tag, owner, clock, "vis_vga", __FILE__), + : svga_device(mconfig, VIS_VGA, tag, owner, clock), device_isa16_card_interface(mconfig, *this) { m_palette.set_tag("palette"); @@ -890,7 +890,7 @@ static INPUT_PORTS_START(vis) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, vis_state, update, 0) INPUT_PORTS_END -static MACHINE_CONFIG_START( vis, vis_state ) +static MACHINE_CONFIG_START( vis ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80286, XTAL_12MHz ) MCFG_CPU_PROGRAM_MAP(at16_map) @@ -920,5 +920,4 @@ ROM_START(vis) ROM_LOAD( "p513bk1b.bin", 0x80000, 0x80000, CRC(e18239c4) SHA1(a0262109e10a07a11eca43371be9978fff060bc5)) ROM_END -COMP ( 1992, vis, 0, 0, vis, vis, driver_device, 0, "Tandy/Memorex", "Video Information System MD-2500", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) - +COMP ( 1992, vis, 0, 0, vis, vis, vis_state, 0, "Tandy/Memorex", "Video Information System MD-2500", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp index 1249beae019..19d7037288f 100644 --- a/src/mame/drivers/vixen.cpp +++ b/src/mame/drivers/vixen.cpp @@ -281,7 +281,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( vixen_io, AS_IO, 8, vixen_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(FDC1797_TAG, fd1797_t, read, write) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(FDC1797_TAG, fd1797_device, read, write) AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READWRITE(status_r, cmd_w) AM_RANGE(0x08, 0x08) AM_MIRROR(0x01) AM_DEVREADWRITE(P8155H_TAG, i8155_device, read, write) AM_RANGE(0x0c, 0x0d) AM_DEVWRITE(P8155H_TAG, i8155_device, ale_w) @@ -737,7 +737,7 @@ void vixen_state::machine_reset() // MACHINE_CONFIG( vixen ) //------------------------------------------------- -static MACHINE_CONFIG_START( vixen, vixen_state ) +static MACHINE_CONFIG_START( vixen ) // basic machine hardware MCFG_CPU_ADD(Z8400A_TAG, Z80, XTAL_23_9616MHz/6) MCFG_CPU_PROGRAM_MAP(vixen_mem) @@ -844,5 +844,5 @@ DRIVER_INIT_MEMBER(vixen_state,vixen) // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1984, vixen, 0, 0, vixen, vixen, vixen_state, vixen, "Osborne", "Vixen", 0 ) diff --git a/src/mame/drivers/vk100.cpp b/src/mame/drivers/vk100.cpp index df9b4873af7..6d53403aec5 100644 --- a/src/mame/drivers/vk100.cpp +++ b/src/mame/drivers/vk100.cpp @@ -1032,7 +1032,7 @@ MC6845_UPDATE_ROW( vk100_state::crtc_update_row ) } -static MACHINE_CONFIG_START( vk100, vk100_state ) +static MACHINE_CONFIG_START( vk100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_5_0688MHz) MCFG_CPU_PROGRAM_MAP(vk100_mem) @@ -1266,5 +1266,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ COMP( 1980, vk100, 0, 0, vk100, vk100, vk100_state, vk100, "Digital Equipment Corporation", "VK100 'GIGI'", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/vlc.cpp b/src/mame/drivers/vlc.cpp index d07c5a66852..5574256c365 100644 --- a/src/mame/drivers/vlc.cpp +++ b/src/mame/drivers/vlc.cpp @@ -163,7 +163,9 @@ public: m_microtouch(*this,"microtouch"), m_nvram(*this,"nvram"), m_ram62256(*this, "ram62256"), - m_backup(*this, "backup") + m_backup(*this, "backup"), + m_vram(*this, "vram"), + m_gfxdecode(*this, "gfxdecode") { } required_device m_duart18_68681; @@ -176,6 +178,8 @@ public: required_shared_ptr m_ram62256; required_shared_ptr m_backup; + required_shared_ptr m_vram; + required_device m_gfxdecode; void nvram_init(nvram_device &nvram, void *data, size_t size); @@ -184,8 +188,7 @@ public: //uint8_t* m_videoram; //uint8_t* m_colorram; - uint16_t* m_videoram; - tilemap_t *m_bg_tilemap; + tilemap_t *m_tilemap; virtual void video_start() override; uint32_t screen_update_nevada(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_PALETTE_INIT(nevada); @@ -199,9 +202,13 @@ public: DECLARE_WRITE16_MEMBER (io_board_x); DECLARE_READ16_MEMBER( nevada_sec_r ); DECLARE_WRITE16_MEMBER( nevada_sec_w ); + DECLARE_WRITE16_MEMBER( vram_w ); DECLARE_MACHINE_START(nevada); DECLARE_DRIVER_INIT(nevada); + + TILE_GET_INFO_MEMBER(get_bg_tile_info); + }; /* @@ -245,25 +252,25 @@ static const gfx_layout charlayout = /* Todo , just for sample */ 8,8, - RGN_FRAC(1,4), + RGN_FRAC(1,1), 4, - { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 + { 0, 1, 2, 3 }, + { 5*4, 4*4, 7*4, 6*4, 1*4, 0*4, 3*4, 2*4 }, + { 0*8*4, 1*8*4, 2*8*4, 3*8*4, 4*8*4, 5*8*4, 6*8*4, 7*8*4 }, + 8*8*4 }; /***************************************************************************/ -/* -WRITE16_MEMBER( nevada_state:nevada_videoram_w ) + +WRITE16_MEMBER( nevada_state::vram_w ) { // Todo, Just for sample - m_videoram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset); + m_vram[offset] = data; + m_tilemap->mark_tile_dirty(offset / 2); } -*/ + /***************************************************************************/ static GFXDECODE_START( nevada ) /* Todo , just for sample */ @@ -271,36 +278,30 @@ static GFXDECODE_START( nevada ) GFXDECODE_END /***************************************************************************/ -/* -static TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info ) + +TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info ) { -// Todo, Just for sample - int attr = m_colorram[tile_index]; - int code = ((attr & 1) << 8) | m_videoram[tile_index]; - int bank = (attr & 0x02) >> 1; - int color = (attr & 0x3c) >> 2; + //int attr = m_colorram[tile_index]; + int code = m_vram[tile_index*2+1]; + //int bank = (attr & 0x02) >> 1; + //int color = (attr & 0x3c) >> 2; - SET_TILE_INFO_MEMBER(bank, code, color, 0); + SET_TILE_INFO_MEMBER(0, code, 0, 0); } -*/ + /***************************************************************************/ void nevada_state::video_start() { -// todo -/* - m_bg_tilemap = tilemap_create(machine(), get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32); -*/ + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nevada_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,31,31); } /***************************************************************************/ uint32_t nevada_state::screen_update_nevada(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - // Todo -/* - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); -*/ + m_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; } @@ -521,8 +522,7 @@ static ADDRESS_MAP_START( nevada_map, AS_PROGRAM, 16,nevada_state ) AM_RANGE(0x00a28000, 0x00a28001) AM_DEVWRITE8("aysnd", ay8910_device, data_w, 0x00ff) AM_RANGE(0x00a30000, 0x00A300ff) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff) AM_RANGE(0x00a40000, 0x00A40001) AM_READWRITE( nevada_sec_r, nevada_sec_w) - //AM_RANGE(0x00b00000, 0x00b01fff) AM_RAM_WRITE(nevada_videoram_w) AM_BASE_MEMBER(nevada_state, m_videoram) - AM_RANGE(0x00b00000, 0x00b01fff) AM_RAM // Video + AM_RANGE(0x00b00000, 0x00b03fff) AM_RAM_WRITE(vram_w) AM_SHARE("vram") AM_RANGE(0x00b10000, 0x00b100ff) AM_DEVREADWRITE8( "duart40_68681", mc68681_device, read, write, 0x00ff ) // Lower byte AM_RANGE(0x00b20000, 0x00b200ff) AM_DEVREADWRITE8( "duart39_68681", mc68681_device, read, write, 0x00ff ) // Lower byte AM_RANGE(0x00e00000, 0x00e000ff) AM_DEVREADWRITE8( "duart18_68681", mc68681_device, read, write, 0xff00 ) // Upper byte @@ -532,10 +532,7 @@ ADDRESS_MAP_END /***************************************************************************/ -static ADDRESS_MAP_START( nevada_iomap, AS_IO, 8, nevada_state ) -// todo -ADDRESS_MAP_END /* U18 MC68681 PIN4 IP1 from U16 (75HC189 pin6) from PIN2 J90 UNKNOWN ! U18 MC68681 PIN36 IP2 ACCESS DOOR SWITCH @@ -592,11 +589,10 @@ MACHINE_START_MEMBER(nevada_state, nevada) * Machine Driver * *************************/ -static MACHINE_CONFIG_START( nevada, nevada_state ) +static MACHINE_CONFIG_START( nevada ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, MASTER_CPU) MCFG_CPU_PROGRAM_MAP(nevada_map) - MCFG_CPU_IO_MAP(nevada_iomap) //0x10000 0x20000 MCFG_WATCHDOG_ADD("watchdog") MCFG_WATCHDOG_TIME_INIT(attotime::from_msec(150)) /* 150ms Ds1232 TD to Ground */ @@ -702,6 +698,5 @@ DRIVER_INIT_MEMBER(nevada_state,nevada) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS... */ - +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 1995, nevada, 0, nevada, nevada, nevada_state, nevada, ROT0, "VLC Inc.", "VLC Nevada", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/volfied.cpp b/src/mame/drivers/volfied.cpp index 39fb13bfbc6..7827b211ac7 100644 --- a/src/mame/drivers/volfied.cpp +++ b/src/mame/drivers/volfied.cpp @@ -20,7 +20,8 @@ Volfied (c) 1989 Taito Corporation OSC: 32MHz, 26.686MHz & 20MHz -TC0030CMD is a custom Z80 with embedded 8K ram + 8k rom (20MHz OSC is next to chip, 20MHz/4 = 5MHz(?)) +TC0030CMD is a hybrid package ASIC containing NEC D78C11 +(with 4k internal ROM) + 8k EPROM + 8k DRAM + logic. Stephh's notes (based on the game M68000 code and some tests) : @@ -34,7 +35,7 @@ Stephh's notes (based on the game M68000 code and some tests) : - These 3 games are 100% the same, only region differs ! - Coinage relies on the region (code at 0x00666a) : * 0x0001 (Japan) uses TAITO_COINAGE_JAPAN_OLD - * 0x0002 (US) uses slighlty different TAITO_COINAGE_US : + * 0x0002 (US) uses slightly different TAITO_COINAGE_US : in fact, as there is no possibility to continue a game, what are used to be "Continue Price" Dip Switches are unused * 0x0003 (World) uses TAITO_COINAGE_WORLD @@ -70,16 +71,16 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, volfied_state ) AM_RANGE(0x080000, 0x0fffff) AM_ROM /* tiles */ AM_RANGE(0x100000, 0x103fff) AM_RAM /* main */ AM_RANGE(0x200000, 0x203fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) - AM_RANGE(0x400000, 0x47ffff) AM_READWRITE(volfied_video_ram_r, volfied_video_ram_w) + AM_RANGE(0x400000, 0x47ffff) AM_READWRITE(video_ram_r, video_ram_w) AM_RANGE(0x500000, 0x503fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x600000, 0x600001) AM_WRITE(volfied_video_mask_w) - AM_RANGE(0x700000, 0x700001) AM_WRITE(volfied_sprite_ctrl_w) - AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(volfied_video_ctrl_r, volfied_video_ctrl_w) + AM_RANGE(0x600000, 0x600001) AM_WRITE(video_mask_w) + AM_RANGE(0x700000, 0x700001) AM_WRITE(sprite_ctrl_w) + AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(video_ctrl_r, video_ctrl_w) AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) AM_RANGE(0xe00002, 0xe00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0xf00000, 0xf007ff) AM_READWRITE(volfied_cchip_ram_r, volfied_cchip_ram_w) - AM_RANGE(0xf00802, 0xf00803) AM_READWRITE(volfied_cchip_ctrl_r, volfied_cchip_ctrl_w) - AM_RANGE(0xf00c00, 0xf00c01) AM_WRITE(volfied_cchip_bank_w) + AM_RANGE(0xf00000, 0xf007ff) AM_READWRITE(cchip_ram_r, cchip_ram_w) + AM_RANGE(0xf00802, 0xf00803) AM_READWRITE(cchip_ctrl_r, cchip_ctrl_w) + AM_RANGE(0xf00c00, 0xf00c01) AM_WRITE(cchip_bank_w) ADDRESS_MAP_END static ADDRESS_MAP_START( z80_map, AS_PROGRAM, 8, volfied_state ) @@ -210,15 +211,15 @@ GFXDECODE_END void volfied_state::machine_start() { - volfied_cchip_init(); + cchip_init(); } void volfied_state::machine_reset() { - volfied_cchip_reset(); + cchip_reset(); } -static MACHINE_CONFIG_START( volfied, volfied_state ) +static MACHINE_CONFIG_START( volfied ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) /* 8MHz */ @@ -237,7 +238,7 @@ static MACHINE_CONFIG_START( volfied, volfied_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(320, 256) MCFG_SCREEN_VISIBLE_AREA(0, 319, 8, 247) - MCFG_SCREEN_UPDATE_DRIVER(volfied_state, screen_update_volfied) + MCFG_SCREEN_UPDATE_DRIVER(volfied_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", volfied) @@ -445,9 +446,9 @@ ROM_START( volfiedjo ) ROM_END -GAME( 1989, volfied, 0, volfied, volfied, driver_device, 0, ROT270, "Taito Corporation Japan", "Volfied (World, revision 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, volfiedu, volfied, volfied, volfiedu, driver_device, 0, ROT270, "Taito America Corporation", "Volfied (US, revision 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, volfiedj, volfied, volfied, volfiedj, driver_device, 0, ROT270, "Taito Corporation", "Volfied (Japan, revision 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, volfiedo, volfied, volfied, volfiedj, driver_device, 0, ROT270, "Taito Corporation Japan", "Volfied (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, volfieduo, volfied, volfied, volfiedj, driver_device, 0, ROT270, "Taito America Corporation", "Volfied (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, volfiedjo, volfied, volfied, volfiedj, driver_device, 0, ROT270, "Taito Corporation", "Volfied (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, volfied, 0, volfied, volfied, volfied_state, 0, ROT270, "Taito Corporation Japan", "Volfied (World, revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, volfiedu, volfied, volfied, volfiedu, volfied_state, 0, ROT270, "Taito America Corporation", "Volfied (US, revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, volfiedj, volfied, volfied, volfiedj, volfied_state, 0, ROT270, "Taito Corporation", "Volfied (Japan, revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, volfiedo, volfied, volfied, volfiedj, volfied_state, 0, ROT270, "Taito Corporation Japan", "Volfied (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, volfieduo, volfied, volfied, volfiedj, volfied_state, 0, ROT270, "Taito America Corporation", "Volfied (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, volfiedjo, volfied, volfied, volfiedj, volfied_state, 0, ROT270, "Taito Corporation", "Volfied (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/votrpss.cpp b/src/mame/drivers/votrpss.cpp index fc70577202a..d6f5ce0f253 100644 --- a/src/mame/drivers/votrpss.cpp +++ b/src/mame/drivers/votrpss.cpp @@ -101,7 +101,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(ppi_pa_r); DECLARE_READ8_MEMBER(ppi_pb_r); DECLARE_READ8_MEMBER(ppi_pc_r); @@ -111,6 +111,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(irq_timer); DECLARE_WRITE_LINE_MEMBER(write_uart_clock); IRQ_CALLBACK_MEMBER(irq_ack); + private: uint8_t m_term_data; uint8_t m_porta; @@ -239,7 +240,7 @@ WRITE8_MEMBER( votrpss_state::ppi_pc_w ) m_portc = data; } -WRITE8_MEMBER( votrpss_state::kbd_put ) +void votrpss_state::kbd_put(u8 data) { m_term_data = data; } @@ -254,7 +255,7 @@ DECLARE_WRITE_LINE_MEMBER( votrpss_state::write_uart_clock ) Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( votrpss, votrpss_state ) +static MACHINE_CONFIG_START( votrpss ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz/2) /* 4.000 MHz, verified */ MCFG_CPU_PROGRAM_MAP(votrpss_mem) @@ -275,7 +276,7 @@ static MACHINE_CONFIG_START( votrpss, votrpss_state ) /* Devices */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(votrpss_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(votrpss_state, kbd_put)) MCFG_DEVICE_ADD("uart", I8251, 0) MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd)) @@ -334,5 +335,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, votrpss, 0, 0, votrpss, votrpss, driver_device, 0, "Votrax", "Personal Speech System", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, votrpss, 0, 0, votrpss, votrpss, votrpss_state, 0, "Votrax", "Personal Speech System", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/votrtnt.cpp b/src/mame/drivers/votrtnt.cpp index fb4bf03efb8..97d93c0f20f 100644 --- a/src/mame/drivers/votrtnt.cpp +++ b/src/mame/drivers/votrtnt.cpp @@ -125,7 +125,7 @@ WRITE_LINE_MEMBER(votrtnt_state::write_acia_clock) Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( votrtnt, votrtnt_state ) +static MACHINE_CONFIG_START( votrtnt ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6802, XTAL_2_4576MHz) /* 2.4576MHz XTAL, verified; divided by 4 inside the m6802*/ MCFG_CPU_PROGRAM_MAP(6802_mem) @@ -168,5 +168,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, votrtnt, 0, 0, votrtnt, votrtnt, driver_device, 0, "Votrax", "Type 'N Talk", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1980, votrtnt, 0, 0, votrtnt, votrtnt, votrtnt_state, 0, "Votrax", "Type 'N Talk", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/voyager.cpp b/src/mame/drivers/voyager.cpp index 789465d1bc5..74459d06189 100644 --- a/src/mame/drivers/voyager.cpp +++ b/src/mame/drivers/voyager.cpp @@ -3,9 +3,12 @@ /************************************************************************************ Star Trek Voyager (c) 2002 Team Play, Inc. / Game Refuge / Monaco Entertainment +Police Trainer 2 (c) 2003 Team Play, Inc. / Phantom Systems skeleton driver by R. Belmont +Both of these games run Linux. + Motherboard is FIC AZIIEA with AMD Duron processor of unknown speed Chipset: VIA KT133a with VT8363A Northbridge and VT82C686B Southbridge Video: Jaton 3DForce2MX-32, based on Nvidia GeForce 2MX chipset w/32 MB of VRAM @@ -481,7 +484,7 @@ void voyager_state::machine_reset() membank("bank1")->set_base(memregion("bios")->base()); } -static MACHINE_CONFIG_START( voyager, voyager_state ) +static MACHINE_CONFIG_START( voyager ) MCFG_CPU_ADD("maincpu", PENTIUM3, 133000000) // actually AMD Duron CPU of unknown clock MCFG_CPU_PROGRAM_MAP(voyager_map) MCFG_CPU_IO_MAP(voyager_io) @@ -514,8 +517,8 @@ ROM_START( voyager ) ROM_REGION( 0x40000, "bios", 0 ) ROM_LOAD( "stv.u23", 0x000000, 0x040000, CRC(0bed28b6) SHA1(8e7f17af65ca9d17c5c7ddedb2313507d0ea8181) ) - ROM_REGION( 0x8000, "video_bios", 0 ) // incorrect, - ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, CRC(1eebde64) SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) + ROM_REGION( 0x8000, "video_bios", 0 ) // incorrect, need GeForce 2MX BIOS for 32MB card + ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, CRC(1eebde64) BAD_DUMP SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) ROM_CONTINUE( 0x0001, 0x4000 ) ROM_REGION( 0x800, "nvram", ROMREGION_ERASE00 ) @@ -524,4 +527,19 @@ ROM_START( voyager ) DISK_IMAGE_READONLY( "voyager", 0, SHA1(8b94f2420f6abb40148e4ba6eed8819d8e85dbde)) ROM_END +ROM_START( policet2 ) + ROM_REGION( 0x40000, "bios", 0 ) + ROM_LOAD( "pm29f002t.u22", 0x000000, 0x040000, CRC(eb32ace6) SHA1(1b1eeb07e20822c690d05959077c7ddcc22d1708) ) + + ROM_REGION( 0x8000, "video_bios", 0 ) // incorrect, need GeForce 2MX BIOS for 32MB card + ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, CRC(1eebde64) BAD_DUMP SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) + ROM_CONTINUE( 0x0001, 0x4000 ) + + ROM_REGION( 0x800, "nvram", ROMREGION_ERASE00 ) + + DISK_REGION( "ide:0:hdd:image" ) + DISK_IMAGE_READONLY( "pt2", 0, SHA1(11d29548c685f12bc9bc1db7791957cd5e62db10)) +ROM_END + GAME( 2002, voyager, 0, voyager, voyager, voyager_state, voyager, ROT0, "Team Play/Game Refuge/Monaco Entertainment", "Star Trek: Voyager", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 2003, policet2, 0, voyager, voyager, voyager_state, voyager, ROT0, "Team Play/Phantom Entertainment", "Police Trainer 2", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/vp101.cpp b/src/mame/drivers/vp101.cpp index 69987b5d419..eed2691184f 100644 --- a/src/mame/drivers/vp101.cpp +++ b/src/mame/drivers/vp101.cpp @@ -2,54 +2,296 @@ // copyright-holders:R. Belmont /*************************************************************************** - Play Mechanix / Right Hand Tech "VP100" and "VP101" platforms + Play Mechanix / Right Hand Tech "VP50", "VP100" and "VP101" platforms (PCBs are also marked "Raw Thrills" but all RT games appear to be on PC hardware) - Skeleton driver by R. Belmont - - MIPS VR5500 at 300 to 400 MHz - Xilinx Virtex-II FPGA with custom 3D hardware and 1 or 2 PowerPC 405 CPU cores - AC97 audio with custom DMA frontend which streams 8 stereo channels - PIC18c442 protection chip (not readable) on VP101 only (VP100 is unprotected?) + Boards: + - VP101: Johnny Nero. The original (?) + - VP100: Special Forces Elite Training. A not-quite-complete VP101; missing ATA DMA. + - VP50 : Zoofari. Cost-reduced (?) with TX4925 SoC, much less complex FPGA. + + Preliminary driver by R. Belmont + + TODO: + - All games: that formidable sounding 3D accelerator mentioned below. + - All games: the sound system (the POST plays some example sounds) + - Zoofari's framebuffer is 256 color but I don't know where the CLUT comes from. + + To make the games go into a POST test, hold down START 1 while resetting. + + VP101 Features from http://web.archive.org/web/20041016000248/http://www.righthandtech.com/projects.htm + + MIPS VR5500 CPU + The VR5500 operates at either at 300 or 400 MHz with 120MHz external bus + MIPS 64-bit RISC architecture + Two-way super-scalar super pipeline + On-chip floating-point unit (FPU) + High-speed translation look-aside buffer (TLB)(48 double-entries) + On-chip primary cache memory (instruction/data: 32 KB each) + 2-way set associative, Supports line lock feature + Conforms to MIPS I, II, III, and IV instruction sets. Also supports product-sum operation instruction, rotate instruction, register scan instruction + Six execution units (ALU0, ALU1, FPU, FPU/MAC, BRU, and LSU) + Employment of out-of-order execution mechanism + Branch prediction mechanism - Branch history table with 4K entries + Support for CPU emulator connection via JTAG/n-Wire port + + Unified Memory Architecture - DDR SDRAM bank + Arbitrating DDR SDRAM Memory controller + 128Mbyte to 512Mbyte memory capacity + 120/240 MHz @ 64 bits - ~2GBytes/sec bandwidth + + 3D Render Engine + True color and 8-bit palette lookup textures + 8K byte texel cache for accelerated source texel selection. + Perspective corrected rendering + Bi-linear filter for source texel scaling + 256 Color Palette Lookup (888 RGB plus 8 bit Source Palette Alpha) + True Color Source Textures (888 RGB plus 8 bit Alpha) + 24 bit Z-buffer structure in DDR SDRAM buffer + Per-vertex colored lighting + Alpha channel structure in DDR SDRAM buffer + Pixel processing effects (fog, night, etc.) + 888 RGB Video DAC output section. + Bitmap structure in DDR SDRAM with DMA for screen update + Flexible CRT controller with X/Y gun interface counters + + Game I/O + Standard JAMMA I/O interface, including player 3 and 4 connectors + 4 channel general purpose A to D interface (steering wheel and control pedals) + 100baseT Ethernet interface for debugging and/or inter game communications + Forced-feedback “Wheel Driver Interface” for driving games + High-current drivers for lamps or solenoids + Gun interface I/O tightly coupled to the CRT controller + + Sound System + AC97 codec for low cost of implementation and development + TDA7375 40 Watt Integrated Amplifier + Codec fed from the DDR bank via a 16 channel (8 channels of stereo) DMA engine. + + ATA/IDE Disk Drive Interface + Standard ATA/IDE interface + Ultra DMA 33/66/100/133 to the DDR SDRAM memory + + Video DAC + RGB values at 8 bits per color + RGB voltage level adjustable from 0-1.0 Vp-p to 0-4.0 Vp-p + + Flash Memory + Minimum of 1MB of Flash memory – expandable to 4 MB + Updateable Boot ROM + Updateable FPGA configuration + + Battery Backed Up RAM + 32K bytes of non-volatile memory for static game configuration and high score table + Non-volatile Real-Time clock + + Small Footprint + Small outline design for easy kit retrofitting of existing cabinet + 12.2 in x 14.96 in + + Security Interface + Security processor provides for a means to “unlock” the FPGA functions + Enabled for software protection against piracy and unwarranted game updates + +Full populated and tested board is less than $500, including IDE hard disk. +Small outline design for easy kit retrofitting of existing cabinets. ****************************************************************************/ - #include "emu.h" #include "cpu/mips/mips3.h" #include "machine/ataintf.h" +#include "machine/nvram.h" +#include "imagedev/harddriv.h" #include "screen.h" - class vp10x_state : public driver_device { public: vp10x_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + m_maincpu(*this, "maincpu"), + m_mainram(*this, "mainram"), + m_ata(*this, "ata"), + m_in0(*this, "IN0") { } + virtual void machine_reset() override; + virtual void machine_start() override; + DECLARE_READ32_MEMBER(tty_ready_r); DECLARE_WRITE32_MEMBER(tty_w); + DECLARE_READ32_MEMBER(test_r) { return 0xffffffff; } + + DECLARE_READ32_MEMBER(pic_r); + DECLARE_WRITE32_MEMBER(pic_w); + + DECLARE_WRITE32_MEMBER(dmaaddr_w); + + DECLARE_WRITE_LINE_MEMBER(dmarq_w); + + DECLARE_READ32_MEMBER(tty_4925_rdy_r) { return 0x2; } + + DECLARE_READ32_MEMBER(spi_status_r) { return 0x8007; } - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_READ32_MEMBER(spi_r); + DECLARE_WRITE32_MEMBER(spi_w); + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t vp50_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: // devices required_device m_maincpu; + required_shared_ptr m_mainram; + required_device m_ata; + required_ioport m_in0; // driver_device overrides virtual void video_start() override; + int pic_cmd; + int pic_state; + int m_dmarq_state; + uint32_t m_dma_ptr; + uint32_t m_spi_select; }; +void vp10x_state::machine_reset() +{ + m_dmarq_state = 0; + pic_cmd = pic_state = 0; +} + +void vp10x_state::machine_start() +{ + m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS); +// m_maincpu->add_fastram(0x00000000, 0x03ffffff, false, m_mainram); +} + +WRITE32_MEMBER(vp10x_state::dmaaddr_w) +{ + m_dma_ptr = (data & 0x07ffffff); +} + +WRITE_LINE_MEMBER(vp10x_state::dmarq_w) +{ + if (state != m_dmarq_state) + { + m_dmarq_state = state; + + if (state) + { + uint16_t *RAMbase = (uint16_t *)&m_mainram[0]; + uint16_t *RAM = &RAMbase[m_dma_ptr>>1]; + + m_ata->write_dmack(ASSERT_LINE); + + while (m_dmarq_state) + { + *RAM++ = m_ata->read_dma(); + m_dma_ptr += 2; // pointer must advance + } + + m_ata->write_dmack(CLEAR_LINE); + } + } +} + +READ32_MEMBER(vp10x_state::pic_r) +{ + static const uint8_t vers[5] = { 0x00, 0x01, 0x00, 0x00, 0x00 }; + static const uint8_t serial[10] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a }; + static const uint8_t magic[10] = { 0xaa, 0x55, 0x18, 0x18, 0xc0, 0x03, 0xf0, 0x0f, 0x09, 0x0a }; + + switch (pic_cmd) + { + case 0x20: + return vers[pic_state++]; + + case 0x21: + case 0x22: + return serial[pic_state++]; + + case 0x23: // this is the same for jnero and specfrce. great security! + return magic[pic_state++]; + } + + return 0; +} + +WRITE32_MEMBER(vp10x_state::pic_w) +{ + //printf("%02x to pic_cmd\n", data&0xff); + if ((data & 0xff) == 0) + { + return; + } + pic_cmd = data & 0xff; + pic_state = 0; +} + +READ32_MEMBER(vp10x_state::spi_r) +{ + return 0xffffffff; +} + +WRITE32_MEMBER(vp10x_state::spi_w) +{ +// printf("%d to SPI select\n", data); + m_spi_select = data; +} void vp10x_state::video_start() { } -uint32_t vp10x_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t vp10x_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { + const uint32_t *video_ram; + uint32_t word; + uint32_t *line; + int y, x; + + for (y = 0; y < 240; y++) + { + line = &bitmap.pix32(y); + video_ram = (const uint32_t *) &m_mainram[(0x7400000/4) + (y * (0x1000/4)) + 4]; + + for (x = 0; x < 320; x++) + { + word = *(video_ram++); + video_ram++; + *line++ = word; + } + } + return 0; +} + +// TODO: Palette is not at 0, where is it? +uint32_t vp10x_state::vp50_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + const uint8_t *video_ram; + uint32_t *line; + int y, x; + int r,g,b; + const uint16_t *pal_ram = (const uint16_t *) &m_mainram[0]; + + for (y = 0; y < 240; y++) + { + line = &bitmap.pix32(y); + video_ram = (const uint8_t *) &m_mainram[(0x10000/4)+(y * 100)]; + + for (x = 0; x < 400; x++) + { + // assume 565 + r = pal_ram[video_ram[x]] >> 11; + g = (pal_ram[video_ram[x]] >> 5) & 0x3f; + b = pal_ram[video_ram[x]] & 0x1f; + + *line++ = (r << 19) | (g << 10) | (b << 3); + } + } return 0; } @@ -66,21 +308,61 @@ WRITE32_MEMBER(vp10x_state::tty_w) // set breakpoint at bfc01430 to catch when } static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, vp10x_state ) - AM_RANGE(0x00000000, 0x07ffffff) AM_RAM // this is a sufficient amount to get "RAM OK" + AM_RANGE(0x00000000, 0x07ffffff) AM_RAM AM_SHARE("mainram") + AM_RANGE(0x14000000, 0x14000003) AM_READ(test_r) AM_RANGE(0x1c000000, 0x1c000003) AM_WRITE(tty_w) // RSS OS code uses this one AM_RANGE(0x1c000014, 0x1c000017) AM_READ(tty_ready_r) AM_RANGE(0x1c400000, 0x1c400003) AM_WRITE(tty_w) // boot ROM code uses this one AM_RANGE(0x1c400014, 0x1c400017) AM_READ(tty_ready_r) + AM_RANGE(0x1ca0000c, 0x1ca0000f) AM_READ_PORT("IN0") + AM_RANGE(0x1ca00010, 0x1ca00013) AM_READ(test_r) // bits here cause various test mode stuff + AM_RANGE(0x1cf00000, 0x1cf00003) AM_NOP AM_READNOP + AM_RANGE(0x1d000030, 0x1d000033) AM_WRITE(dmaaddr_w) // ATA DMA destination address + AM_RANGE(0x1d000040, 0x1d00005f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff) + AM_RANGE(0x1d000060, 0x1d00007f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff) + AM_RANGE(0x1f200000, 0x1f200003) AM_READWRITE(pic_r, pic_w) + AM_RANGE(0x1f807000, 0x1f807fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) ADDRESS_MAP_END +static ADDRESS_MAP_START( vp50_map, AS_PROGRAM, 32, vp10x_state ) + AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("mainram") + AM_RANGE(0x1f000010, 0x1f00001f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) + AM_RANGE(0x1f000020, 0x1f00002f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) + AM_RANGE(0x1f400000, 0x1f400003) AM_NOP // FPGA bitstream download? + AM_RANGE(0x1f400800, 0x1f400bff) AM_RAM AM_SHARE("nvram") + AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) + + // TX4925 peripherals + AM_RANGE(0xff1ff40c, 0xff1ff40f) AM_READ(tty_4925_rdy_r) + AM_RANGE(0xff1ff41c, 0xff1ff41f) AM_WRITE(tty_w) + AM_RANGE(0xff1ff500, 0xff1ff503) AM_NOP + AM_RANGE(0xff1ff814, 0xff1ff817) AM_READ(spi_status_r) + AM_RANGE(0xff1ff818, 0xff1ff81b) AM_READWRITE(spi_r, spi_w) +ADDRESS_MAP_END + static INPUT_PORTS_START( vp101 ) + PORT_START("IN0") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END +static INPUT_PORTS_START( vp50 ) + PORT_START("IN0") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 ) -static MACHINE_CONFIG_START( vp101, vp10x_state ) - MCFG_CPU_ADD("maincpu", R5000LE, 300000000) /* actually VR5500 with added NEC VR-series custom instructions */ - MCFG_MIPS3_ICACHE_SIZE(32768) + PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) +INPUT_PORTS_END + +static MACHINE_CONFIG_START( vp101 ) + MCFG_CPU_ADD("maincpu", VR5500LE, 400000000) MCFG_MIPS3_DCACHE_SIZE(32768) MCFG_MIPS3_SYSTEM_CLOCK(100000000) MCFG_CPU_PROGRAM_MAP(main_map) @@ -91,11 +373,30 @@ static MACHINE_CONFIG_START( vp101, vp10x_state ) MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, screen_update) MCFG_SCREEN_SIZE(320, 240) MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) - MCFG_SCREEN_PALETTE("palette") - MCFG_PALETTE_ADD("palette", 32768) + MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", nullptr, false) + MCFG_ATA_INTERFACE_DMARQ_HANDLER(WRITELINE(vp10x_state, dmarq_w)) + + MCFG_NVRAM_ADD_0FILL("nvram") MACHINE_CONFIG_END +static MACHINE_CONFIG_START( vp50 ) + MCFG_CPU_ADD("maincpu", TX4925LE, 200000000) + MCFG_MIPS3_DCACHE_SIZE(32768) + MCFG_MIPS3_SYSTEM_CLOCK(100000000) + MCFG_CPU_PROGRAM_MAP(vp50_map) + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) + MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, vp50_screen_update) + MCFG_SCREEN_SIZE(400, 240) + MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239) + + MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", nullptr, false) + + MCFG_NVRAM_ADD_0FILL("nvram") +MACHINE_CONFIG_END ROM_START(jnero) ROM_REGION(0x400000, "maincpu", 0) /* Boot ROM */ @@ -104,14 +405,35 @@ ROM_START(jnero) ROM_REGION(0x80000, "pic", 0) /* PIC18c422 program - read-protected, need dumped */ ROM_LOAD( "8722a-1206.bin", 0x000000, 0x80000, NO_DUMP ) - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE_READONLY("jn010108", 0, SHA1(4f3e9c6349c9be59213df1236dba7d79e7cd704e) ) + DISK_REGION( "ata:0:hdd:image" ) /* ideally an IDENTIFY page from a real drive should be the IDTN metadata, + but even factory-new boardsets came with a variety of HDD makes and models */ + DISK_IMAGE_READONLY("jn010108", 0, SHA1(5a27990478b65fca801c3a6518c519c5b4ca934d) ) ROM_END ROM_START(specfrce) ROM_REGION(0x400000, "maincpu", 0) /* Boot ROM */ - ROM_LOAD( "special_forces_boot_v3.4.u4", 0x000000, 0x100000, CRC(db4862ac) SHA1(a1e886d424cf7d26605e29d972d48e8d44ae2d58) ) - ROM_LOAD( "special_forces_boot_v3.5.u4", 0x000000, 0x100000, CRC(ae8dfdf0) SHA1(d64130e710d0c70095ad8ebd4e2194b8c461be4a) ) /* Newer, but keep both in driver */ + ROM_SYSTEM_BIOS(0, "default", "rev. 3.6") + ROMX_LOAD( "boot 3.6.u4.27c801", 0x000000, 0x100000, CRC(b1628dd9) SHA1(5970d31b0cf3d0c1ab4b10ee8e54d2696fafde24), ROM_BIOS(1) ) + ROM_SYSTEM_BIOS(1, "r35", "rev. 3.5") + ROMX_LOAD( "special_forces_boot_v3.5.u4", 0x000000, 0x100000, CRC(ae8dfdf0) SHA1(d64130e710d0c70095ad8ebd4e2194b8c461be4a), ROM_BIOS(2) ) /* Newer, but keep both in driver */ + ROM_SYSTEM_BIOS(2, "r34", "rev. 3.4") + ROMX_LOAD( "special_forces_boot_v3.4.u4", 0x000000, 0x100000, CRC(db4862ac) SHA1(a1e886d424cf7d26605e29d972d48e8d44ae2d58), ROM_BIOS(3) ) + + ROM_REGION(0x80000, "pic", 0) /* PIC18c422 I/P program - read-protected, need dumped */ + ROM_LOAD( "special_forces_et_u7_rev1.2.u7", 0x000000, 0x80000, NO_DUMP ) + + DISK_REGION( "ata:0:hdd:image" ) + DISK_IMAGE_READONLY("sf010200", 0, SHA1(33c35fd5e110ff06330e0f0313fcd75d5c64a090) ) +ROM_END + +ROM_START(specfrceo) + ROM_REGION(0x400000, "maincpu", 0) /* Boot ROM */ + ROM_SYSTEM_BIOS(0, "default", "rev. 3.6") + ROMX_LOAD( "boot 3.6.u4.27c801", 0x000000, 0x100000, CRC(b1628dd9) SHA1(5970d31b0cf3d0c1ab4b10ee8e54d2696fafde24), ROM_BIOS(1) ) + ROM_SYSTEM_BIOS(1, "r35", "rev. 3.5") + ROMX_LOAD( "special_forces_boot_v3.5.u4", 0x000000, 0x100000, CRC(ae8dfdf0) SHA1(d64130e710d0c70095ad8ebd4e2194b8c461be4a), ROM_BIOS(2) ) /* Newer, but keep both in driver */ + ROM_SYSTEM_BIOS(2, "r34", "rev. 3.4") + ROMX_LOAD( "special_forces_boot_v3.4.u4", 0x000000, 0x100000, CRC(db4862ac) SHA1(a1e886d424cf7d26605e29d972d48e8d44ae2d58), ROM_BIOS(3) ) ROM_REGION(0x80000, "pic", 0) /* PIC18c422 I/P program - read-protected, need dumped */ ROM_LOAD( "special_forces_et_u7_rev1.2.u7", 0x000000, 0x80000, NO_DUMP ) @@ -131,6 +453,7 @@ ROM_START(zoofari) DISK_IMAGE_READONLY("zoofari", 0, SHA1(8fb9cfb1ab2660f40b643fcd772243903bd69a6c) ) ROM_END -GAME( 2002, specfrce, 0, vp101, vp101, driver_device, 0, ROT0, "ICE/Play Mechanix", "Special Forces Elite Training", MACHINE_IS_SKELETON ) -GAME( 2004, jnero, 0, vp101, vp101, driver_device, 0, ROT0, "ICE/Play Mechanix", "Johnny Nero Action Hero", MACHINE_IS_SKELETON ) -GAME( 2006, zoofari, 0, vp101, vp101, driver_device, 0, ROT0, "ICE/Play Mechanix", "Zoofari", MACHINE_IS_SKELETON ) +GAME( 2002, specfrce, 0, vp101, vp101, vp10x_state, 0, ROT0, "ICE/Play Mechanix", "Special Forces Elite Training (v01.02.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2002, specfrceo, specfrce, vp101, vp101, vp10x_state, 0, ROT0, "ICE/Play Mechanix", "Special Forces Elite Training (v01.01.01)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2004, jnero, 0, vp101, vp101, vp10x_state, 0, ROT0, "ICE/Play Mechanix", "Johnny Nero Action Hero (v01.01.08)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2006, zoofari, 0, vp50, vp50, vp10x_state, 0, ROT0, "ICE/Play Mechanix", "Zoofari", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/vpoker.cpp b/src/mame/drivers/vpoker.cpp index 5d72ebd56f9..9cfde154c45 100644 --- a/src/mame/drivers/vpoker.cpp +++ b/src/mame/drivers/vpoker.cpp @@ -627,7 +627,7 @@ WRITE_LINE_MEMBER(vpoker_state::ptm_irq) m_maincpu->set_input_line(M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE); } -static MACHINE_CONFIG_START( vpoker, vpoker_state ) +static MACHINE_CONFIG_START( vpoker ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M6809,XTAL_4MHz) @@ -702,6 +702,6 @@ ROM_START( 5acespkr ) ROM_END -/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ -GAME( 198?, vpoker, 0, vpoker, vpoker, driver_device, 0, ROT0, "Videotronics, Inc.", "Videotronics Draw Poker", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 198?, 5acespkr, 0, vpoker, 5acespkr, driver_device, 0, ROT0, "", "5-Aces Poker", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 198?, vpoker, 0, vpoker, vpoker, vpoker_state, 0, ROT0, "Videotronics, Inc.", "Videotronics Draw Poker", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 198?, 5acespkr, 0, vpoker, 5acespkr, vpoker_state, 0, ROT0, "", "5-Aces Poker", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/vroulet.cpp b/src/mame/drivers/vroulet.cpp index 43b2449fbe2..d01f069e83a 100644 --- a/src/mame/drivers/vroulet.cpp +++ b/src/mame/drivers/vroulet.cpp @@ -271,7 +271,7 @@ WRITE8_MEMBER(vroulet_state::ppi8255_c_w){} /* Machine Driver */ -static MACHINE_CONFIG_START( vroulet, vroulet_state ) +static MACHINE_CONFIG_START( vroulet ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, 4000000) //??? MCFG_CPU_PROGRAM_MAP(vroulet_map) @@ -326,4 +326,4 @@ ROM_END /* Game Driver */ -GAME( 1989, vroulet, 0, vroulet, vroulet, driver_device, 0, ROT90, "World Game", "Vegas Roulette", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, vroulet, 0, vroulet, vroulet, vroulet_state, 0, ROT90, "World Game", "Vegas Roulette", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vsmilepro.cpp b/src/mame/drivers/vsmilepro.cpp index a5110e4891f..c1c807de2bf 100644 --- a/src/mame/drivers/vsmilepro.cpp +++ b/src/mame/drivers/vsmilepro.cpp @@ -47,7 +47,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( vsmilpro ) INPUT_PORTS_END -static MACHINE_CONFIG_START( vsmilpro, vsmilpro_state ) +static MACHINE_CONFIG_START( vsmilpro ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM9, 150000000) MCFG_CPU_PROGRAM_MAP(vsmilpro_map) @@ -66,5 +66,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 2007, vsmilpro, 0, 0, vsmilpro, vsmilpro, driver_device, 0, "V-Tech", "V-Smile Pro", MACHINE_NOT_WORKING|MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 2007, vsmilpro, 0, 0, vsmilpro, vsmilpro, vsmilpro_state, 0, "V-Tech", "V-Smile Pro", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/vsnes.cpp b/src/mame/drivers/vsnes.cpp index 0b27c15c664..77062881873 100644 --- a/src/mame/drivers/vsnes.cpp +++ b/src/mame/drivers/vsnes.cpp @@ -261,7 +261,7 @@ ADDRESS_MAP_END READ8_MEMBER( vsnes_state::vsnes_bootleg_z80_latch_r ) { - return 0x00;// rand(); + return 0x00; } static ADDRESS_MAP_START( vsnes_bootleg_z80_map, AS_PROGRAM, 8, vsnes_state ) @@ -1699,10 +1699,10 @@ static INPUT_PORTS_START( supxevs ) PORT_DIPSETTING( 0xc0, "RP2C04-0004" ) INPUT_PORTS_END -static MACHINE_CONFIG_START( vsnes, vsnes_state ) +static MACHINE_CONFIG_START( vsnes ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", N2A03,N2A03_DEFAULTCLOCK) + MCFG_CPU_ADD("maincpu", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(vsnes_cpu1_map) /* some carts also trigger IRQs */ MCFG_MACHINE_RESET_OVERRIDE(vsnes_state,vsnes) @@ -1766,13 +1766,13 @@ static MACHINE_CONFIG_DERIVED( topgun, vsnes ) MCFG_PPU2C0X_SET_NMI(vsnes_state, ppu_irq_1) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vsdual, vsnes_state ) +static MACHINE_CONFIG_START( vsdual ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", N2A03,N2A03_DEFAULTCLOCK) + MCFG_CPU_ADD("maincpu", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(vsnes_cpu1_map) /* some carts also trigger IRQs */ - MCFG_CPU_ADD("sub", N2A03,N2A03_DEFAULTCLOCK) + MCFG_CPU_ADD("sub", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(vsnes_cpu2_map) /* some carts also trigger IRQs */ MCFG_MACHINE_RESET_OVERRIDE(vsnes_state,vsdual) @@ -1824,7 +1824,7 @@ static MACHINE_CONFIG_DERIVED( vsdual_pi, vsdual ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( vsnes_bootleg, vsnes_state ) +static MACHINE_CONFIG_START( vsnes_bootleg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,XTAL_16MHz/4) // 4mhz? seems too high but flickers badly otherwise, issue elsewhere? @@ -2800,63 +2800,63 @@ ROM_END Japan (C) Nintendo Co., Ltd. */ -/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR */ -GAME( 1985, btlecity, 0, vsnes, btlecity, vsnes_state, vsnormal, ROT0, "Namco", "Vs. Battle City", 0 ) -GAME( 1985, starlstr, 0, vsnes, starlstr, vsnes_state, vsnormal, ROT0, "Namco", "Vs. Star Luster", 0 ) -GAME( 1987, cstlevna, 0, vsnes, cstlevna, vsnes_state, vsvram, ROT0, "Konami", "Vs. Castlevania", 0 ) -GAME( 1984, cluclu, 0, vsnes, cluclu, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Clu Clu Land", 0 ) -GAME( 1990, drmario, 0, vsnes, drmario, vsnes_state, drmario, ROT0, "Nintendo", "Vs. Dr. Mario", 0 ) -GAME( 1984, excitebk, 0, vsnes, excitebk, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Excitebike (set EB4-3 E)", 0 ) -GAME( 1984, excitebko,excitebk, vsnes, excitebk, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Excitebike (set EB4-3 ?)", 0 ) // older -GAME( 1984, excitebkj,excitebk, vsnes, excitebk, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Excitebike (set EB4-4 A)", 0 ) // likely Japan -GAME( 1986, goonies, 0, vsnes, goonies, vsnes_state, vskonami, ROT0, "Konami", "Vs. The Goonies (set E)", 0 ) -GAME( 1984, iceclimb, 0, vsnes, iceclmbj, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Ice Climber (set IC4-4 B-1)", 0 ) -GAME( 1984, iceclimba,iceclimb, vsnes, iceclimb, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Ice Climber (set IC4-4 ?)", 0 ) -GAME( 1985, nvs_machrider, 0, vsnes, machridr, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Mach Rider (Endurance Course Version)", MACHINE_IMPERFECT_GRAPHICS ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR */ +GAME( 1985, btlecity, 0, vsnes, btlecity, vsnes_state, vsnormal, ROT0, "Namco", "Vs. Battle City", 0 ) +GAME( 1985, starlstr, 0, vsnes, starlstr, vsnes_state, vsnormal, ROT0, "Namco", "Vs. Star Luster", 0 ) +GAME( 1987, cstlevna, 0, vsnes, cstlevna, vsnes_state, vsvram, ROT0, "Konami", "Vs. Castlevania", 0 ) +GAME( 1984, cluclu, 0, vsnes, cluclu, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Clu Clu Land", 0 ) +GAME( 1990, drmario, 0, vsnes, drmario, vsnes_state, drmario, ROT0, "Nintendo", "Vs. Dr. Mario", 0 ) +GAME( 1984, excitebk, 0, vsnes, excitebk, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Excitebike (set EB4-3 E)", 0 ) +GAME( 1984, excitebko,excitebk, vsnes, excitebk, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Excitebike (set EB4-3 ?)", 0 ) // older +GAME( 1984, excitebkj,excitebk, vsnes, excitebk, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Excitebike (set EB4-4 A)", 0 ) // likely Japan +GAME( 1986, goonies, 0, vsnes, goonies, vsnes_state, vskonami, ROT0, "Konami", "Vs. The Goonies (set E)", 0 ) +GAME( 1984, iceclimb, 0, vsnes, iceclmbj, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Ice Climber (set IC4-4 B-1)", 0 ) +GAME( 1984, iceclimba,iceclimb, vsnes, iceclimb, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Ice Climber (set IC4-4 ?)", 0 ) +GAME( 1985, nvs_machrider, 0, vsnes, machridr, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Mach Rider (Endurance Course Version)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1985, nvs_machridera,nvs_machrider, vsnes, machridj, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Mach Rider (Fighting Course Version, set MR4-1 A)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1986, rbibb, 0, vsnes, rbibb, vsnes_state, rbibb, ROT0, "Namco", "Vs. Atari R.B.I. Baseball (set 1)", 0 ) -GAME( 1986, rbibba, rbibb, vsnes, rbibb, vsnes_state, rbibb, ROT0, "Namco", "Vs. Atari R.B.I. Baseball (set 2)", 0 ) -GAME( 1986, suprmrio, 0, vsnes, suprmrio, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Super Mario Bros. (set SM4-4 E)", 0 ) -GAME( 1986, suprmrioa,suprmrio, vsnes, suprmrio, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Super Mario Bros. (set ?, harder)", 0 ) -GAME( 1986, suprmriobl,suprmrio,vsnes_bootleg,suprmrio,vsnes_state,vsnormal, ROT0, "bootleg", "Vs. Super Mario Bros. (bootleg with Z80, set 1)", MACHINE_NOT_WORKING ) // timer starts at 200(!) -GAME( 1986, suprmriobl2,suprmrio,vsnes_bootleg,suprmrio,vsnes_state,vsnormal, ROT0, "bootleg", "Vs. Super Mario Bros. (bootleg with Z80, set 2)", MACHINE_NOT_WORKING ) // timer starts at 300 -GAME( 1988, skatekds, suprmrio, vsnes, suprmrio, vsnes_state, vsnormal, ROT0, "hack (Two-Bit Score)", "Vs. Skate Kids. (Graphic hack of Super Mario Bros.)", 0 ) -GAME( 1985, vsskykid, 0, vsnes, vsskykid, vsnes_state, MMC3, ROT0, "Namco", "Vs. Super SkyKid" , 0 ) -GAME( 1987, tkoboxng, 0, vsnes, tkoboxng, vsnes_state, tkoboxng, ROT0, "Namco / Data East USA", "Vs. T.K.O. Boxing", 0 ) -GAME( 1984, smgolf, 0, vsnes, golf4s, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Stroke & Match Golf (Men Version, set GF4-2 F)", 0 ) -GAME( 1984, smgolfb, smgolf, vsnes, golf, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Stroke & Match Golf (Men Version, set GF4-2 ?)", 0 ) -GAME( 1984, smgolfj, smgolf, vsnes, golf, vsnes_state, vsnormal, ROT0, "Nintendo Co., Ltd.", "Vs. Stroke & Match Golf (Men Version) (Japan, set GF3 B)", 0 ) -GAME( 1984, ladygolfe,smgolf, vsnes, golf, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Stroke & Match Golf (Ladies Version, set LG4 E)", 0 ) -GAME( 1984, ladygolf, smgolf, vsnes, golf, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Stroke & Match Golf (Ladies Version, set LG4 ?)", 0 ) -GAME( 1984, vspinbal, 0, vsnes, vspinbal, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Pinball (US, set PN4 E-1)", 0 ) -GAME( 1984, vspinbalj,vspinbal, vsnes, vspinblj, vsnes_state, vsnormal, ROT0, "Nintendo Co., Ltd.", "Vs. Pinball (Japan, set PN3 B)", 0 ) -GAME( 1986, vsslalom, 0, vsnes, vsslalom, vsnes_state, vsnormal, ROT0, "Rare Coin-It Inc.", "Vs. Slalom", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1985, vssoccer, 0, vsnes, vssoccer, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Soccer (set SC4-2 A)", 0 ) -GAME( 1985, vssoccera,vssoccer, vsnes, vssoccer, vsnes_state, bnglngby, ROT0, "Nintendo", "Vs. Soccer (set SC4-3 ?)", 0 ) -GAME( 1986, vsgradus, 0, vsnes, vsgradus, vsnes_state, vskonami, ROT0, "Konami", "Vs. Gradius (US, set GR E)", 0 ) -GAME( 1987, nvs_platoon, 0, vsnes, platoon, vsnes_state, platoon, ROT0, "Ocean Software Limited", "Vs. Platoon", 0 ) -GAME( 1987, vstetris, 0, vsnes, vstetris, vsnes_state, vsnormal, ROT0, "Academysoft-Elorg", "Vs. Tetris" , 0 ) -GAME( 1986, nvs_mightybj, 0, mightybj,mightybj, vsnes_state, vsnormal, ROT0, "Tecmo", "Vs. Mighty Bomb Jack (Japan)", 0 ) -GAME( 1985, jajamaru, 0, jajamaru,jajamaru, vsnes_state, vsnormal, ROT0, "Jaleco", "Vs. Ninja Jajamaru Kun (Japan)", 0 ) -GAME( 1987, topgun, 0, topgun, topgun, vsnes_state, vsvram, ROT0, "Konami", "Vs. Top Gun", 0) -GAME( 1985, bnglngby, 0, vsnes, bnglngby, vsnes_state, bnglngby, ROT0, "Nintendo / Broderbund Software Inc.", "Vs. Raid on Bungeling Bay (RD4-2 B)", 0 ) -GAME( 1986, supxevs, 0, vsnes, supxevs, vsnes_state, supxevs, ROT0, "Namco", "Vs. Super Xevious", 0 ) +GAME( 1986, rbibb, 0, vsnes, rbibb, vsnes_state, rbibb, ROT0, "Namco", "Vs. Atari R.B.I. Baseball (set 1)", 0 ) +GAME( 1986, rbibba, rbibb, vsnes, rbibb, vsnes_state, rbibb, ROT0, "Namco", "Vs. Atari R.B.I. Baseball (set 2)", 0 ) +GAME( 1986, suprmrio, 0, vsnes, suprmrio, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Super Mario Bros. (set SM4-4 E)", 0 ) +GAME( 1986, suprmrioa,suprmrio, vsnes, suprmrio, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Super Mario Bros. (set ?, harder)", 0 ) +GAME( 1986, suprmriobl,suprmrio, vsnes_bootleg, suprmrio, vsnes_state, vsnormal, ROT0, "bootleg", "Vs. Super Mario Bros. (bootleg with Z80, set 1)", MACHINE_NOT_WORKING ) // timer starts at 200(!) +GAME( 1986, suprmriobl2,suprmrio,vsnes_bootleg, suprmrio, vsnes_state, vsnormal, ROT0, "bootleg", "Vs. Super Mario Bros. (bootleg with Z80, set 2)", MACHINE_NOT_WORKING ) // timer starts at 300 +GAME( 1988, skatekds, suprmrio, vsnes, suprmrio, vsnes_state, vsnormal, ROT0, "hack (Two-Bit Score)", "Vs. Skate Kids. (Graphic hack of Super Mario Bros.)", 0 ) +GAME( 1985, vsskykid, 0, vsnes, vsskykid, vsnes_state, MMC3, ROT0, "Namco", "Vs. Super SkyKid", 0 ) +GAME( 1987, tkoboxng, 0, vsnes, tkoboxng, vsnes_state, tkoboxng, ROT0, "Namco / Data East USA", "Vs. T.K.O. Boxing", 0 ) +GAME( 1984, smgolf, 0, vsnes, golf4s, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Stroke & Match Golf (Men Version, set GF4-2 F)", 0 ) +GAME( 1984, smgolfb, smgolf, vsnes, golf, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Stroke & Match Golf (Men Version, set GF4-2 ?)", 0 ) +GAME( 1984, smgolfj, smgolf, vsnes, golf, vsnes_state, vsnormal, ROT0, "Nintendo Co., Ltd.", "Vs. Stroke & Match Golf (Men Version) (Japan, set GF3 B)", 0 ) +GAME( 1984, ladygolfe,smgolf, vsnes, golf, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Stroke & Match Golf (Ladies Version, set LG4 E)", 0 ) +GAME( 1984, ladygolf, smgolf, vsnes, golf, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Stroke & Match Golf (Ladies Version, set LG4 ?)", 0 ) +GAME( 1984, vspinbal, 0, vsnes, vspinbal, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Pinball (US, set PN4 E-1)", 0 ) +GAME( 1984, vspinbalj,vspinbal, vsnes, vspinblj, vsnes_state, vsnormal, ROT0, "Nintendo Co., Ltd.", "Vs. Pinball (Japan, set PN3 B)", 0 ) +GAME( 1986, vsslalom, 0, vsnes, vsslalom, vsnes_state, vsnormal, ROT0, "Rare Coin-It Inc.", "Vs. Slalom", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1985, vssoccer, 0, vsnes, vssoccer, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Soccer (set SC4-2 A)", 0 ) +GAME( 1985, vssoccera,vssoccer, vsnes, vssoccer, vsnes_state, bnglngby, ROT0, "Nintendo", "Vs. Soccer (set SC4-3 ?)", 0 ) +GAME( 1986, vsgradus, 0, vsnes, vsgradus, vsnes_state, vskonami, ROT0, "Konami", "Vs. Gradius (US, set GR E)", 0 ) +GAME( 1987, nvs_platoon, 0, vsnes, platoon, vsnes_state, platoon, ROT0, "Ocean Software Limited", "Vs. Platoon", 0 ) +GAME( 1987, vstetris, 0, vsnes, vstetris, vsnes_state, vsnormal, ROT0, "Academysoft-Elorg", "Vs. Tetris" , 0 ) +GAME( 1986, nvs_mightybj, 0, mightybj, mightybj, vsnes_state, vsnormal, ROT0, "Tecmo", "Vs. Mighty Bomb Jack (Japan)", 0 ) +GAME( 1985, jajamaru, 0, jajamaru, jajamaru, vsnes_state, vsnormal, ROT0, "Jaleco", "Vs. Ninja Jajamaru Kun (Japan)", 0 ) +GAME( 1987, topgun, 0, topgun, topgun, vsnes_state, vsvram, ROT0, "Konami", "Vs. Top Gun", 0) +GAME( 1985, bnglngby, 0, vsnes, bnglngby, vsnes_state, bnglngby, ROT0, "Nintendo / Broderbund Software Inc.", "Vs. Raid on Bungeling Bay (RD4-2 B)", 0 ) +GAME( 1986, supxevs, 0, vsnes, supxevs, vsnes_state, supxevs, ROT0, "Namco", "Vs. Super Xevious", 0 ) /* Light Gun games */ -GAME( 1985, duckhunt, 0, vsnes, duckhunt, vsnes_state, vsgun, ROT0, "Nintendo", "Vs. Duck Hunt (set DH3 E)", 0 ) -GAME( 1985, hogalley, 0, vsnes, hogalley, vsnes_state, vsgun, ROT0, "Nintendo", "Vs. Hogan's Alley (set HA4-1 E-1)", 0 ) -GAME( 1986, vsgshoe, 0, vsgshoe, vsgshoe, vsnes_state, vsgshoe, ROT0, "Nintendo", "Vs. Gumshoe (set GM5)", 0 ) -GAME( 1988, vsfdf, 0, vsnes, vsfdf, vsnes_state, vsfdf, ROT0, "Sunsoft", "Vs. Freedom Force", 0 ) +GAME( 1985, duckhunt, 0, vsnes, duckhunt, vsnes_state, vsgun, ROT0, "Nintendo", "Vs. Duck Hunt (set DH3 E)", 0 ) +GAME( 1985, hogalley, 0, vsnes, hogalley, vsnes_state, vsgun, ROT0, "Nintendo", "Vs. Hogan's Alley (set HA4-1 E-1)", 0 ) +GAME( 1986, vsgshoe, 0, vsgshoe, vsgshoe, vsnes_state, vsgshoe, ROT0, "Nintendo", "Vs. Gumshoe (set GM5)", 0 ) +GAME( 1988, vsfdf, 0, vsnes, vsfdf, vsnes_state, vsfdf, ROT0, "Sunsoft", "Vs. Freedom Force", 0 ) /* Dual games */ -GAME( 1984, vstennis, 0, vsdual_pi, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set TE A-3)" , 0 ) -GAME( 1984, vstennisa,vstennis, vsdual_pi, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set 2)" , 0 ) -GAME( 1984, vstennisb,vstennis, vsdual_pi, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set 3)" , MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1984, wrecking, 0, vsdual_pi, wrecking, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Wrecking Crew", 0 ) -GAME( 1984, balonfgt, 0, vsdual_pi, balonfgt, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Balloon Fight (set BF4 A-3)", 0 ) -GAME( 1984, vsmahjng, 0, vsdual, vsmahjng, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Mahjong (Japan)" , 0 ) -GAME( 1984, vsbball, 0, vsdual_pi, vsbball, vsnes_state, vsdual, ROT0, "Nintendo of America", "Vs. BaseBall (US, set BA E-1)", 0 ) -GAME( 1984, vsbballj, vsbball, vsdual_pi, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-3)", 0 ) -GAME( 1984, vsbballja,vsbball, vsdual_pi, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-2)", 0 ) -GAME( 1984, vsbballjb,vsbball, vsdual_pi, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-1)", 0 ) -GAME( 1984, iceclmrd, 0, vsdual_pi, iceclmrj, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Ice Climber Dual (set IC4-4 A-1)" , 0 ) +GAME( 1984, vstennis, 0, vsdual_pi, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set TE A-3)" , 0 ) +GAME( 1984, vstennisa,vstennis, vsdual_pi, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set 2)", 0 ) +GAME( 1984, vstennisb,vstennis, vsdual_pi, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set 3)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1984, wrecking, 0, vsdual_pi, wrecking, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Wrecking Crew", 0 ) +GAME( 1984, balonfgt, 0, vsdual_pi, balonfgt, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Balloon Fight (set BF4 A-3)", 0 ) +GAME( 1984, vsmahjng, 0, vsdual, vsmahjng, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Mahjong (Japan)", 0 ) +GAME( 1984, vsbball, 0, vsdual_pi, vsbball, vsnes_state, vsdual, ROT0, "Nintendo of America", "Vs. BaseBall (US, set BA E-1)", 0 ) +GAME( 1984, vsbballj, vsbball, vsdual_pi, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-3)", 0 ) +GAME( 1984, vsbballja,vsbball, vsdual_pi, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-2)", 0 ) +GAME( 1984, vsbballjb,vsbball, vsdual_pi, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-1)", 0 ) +GAME( 1984, iceclmrd, 0, vsdual_pi, iceclmrj, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Ice Climber Dual (set IC4-4 A-1)", 0 ) diff --git a/src/mame/drivers/vt100.cpp b/src/mame/drivers/vt100.cpp index bf2a2a09463..bc12952d55b 100644 --- a/src/mame/drivers/vt100.cpp +++ b/src/mame/drivers/vt100.cpp @@ -402,7 +402,7 @@ static GFXDECODE_START( vt100 ) GFXDECODE_ENTRY( "chargen", 0x0000, vt100_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( vt100, vt100_state ) +static MACHINE_CONFIG_START( vt100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_24_8832MHz / 9) MCFG_CPU_PROGRAM_MAP(vt100_mem) @@ -880,15 +880,15 @@ ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1978, vt100, 0, 0, vt100, vt100, driver_device, 0, "Digital Equipment Corporation", "VT100",MACHINE_NOT_WORKING) -//COMP( 1978, vt100wp, vt100, 0, vt100, vt100, driver_device, 0, "Digital Equipment Corporation", "VT100-Wx", MACHINE_NOT_WORKING) -COMP( 1979, vt100ac, vt100, 0, vt100, vt100, driver_device, 0, "Digital Equipment Corporation", "VT100 w/VT1xx-AC STP", MACHINE_NOT_WORKING) -COMP( 1981, vt101, vt102, 0, vt102, vt100, driver_device, 0, "Digital Equipment Corporation", "VT101", MACHINE_NOT_WORKING) -COMP( 1981, vt102, 0, 0, vt102, vt100, driver_device, 0, "Digital Equipment Corporation", "VT102", MACHINE_NOT_WORKING) -//COMP( 1979, vt103, vt100, 0, vt100, vt100, driver_device, 0, "Digital Equipment Corporation", "VT103", MACHINE_NOT_WORKING) -COMP( 1978, vt105, vt100, 0, vt100, vt100, driver_device, 0, "Digital Equipment Corporation", "VT105", MACHINE_NOT_WORKING) -//COMP( 1978, vt110, vt100, 0, vt100, vt100, driver_device, 0, "Digital Equipment Corporation", "VT110", MACHINE_NOT_WORKING) -//COMP( 1981, vt125, vt100, 0, vt100, vt100, driver_device, 0, "Digital Equipment Corporation", "VT125", MACHINE_NOT_WORKING) -COMP( 1981, vt131, vt102, 0, vt102, vt100, driver_device, 0, "Digital Equipment Corporation", "VT131", MACHINE_NOT_WORKING) -//COMP( 1979, vt132, vt100, 0, vt100, vt100, driver_device, 0, "Digital Equipment Corporation", "VT132", MACHINE_NOT_WORKING) -COMP( 1983, vt180, vt100, 0, vt180, vt100, driver_device, 0, "Digital Equipment Corporation", "VT180", MACHINE_NOT_WORKING) +COMP( 1978, vt100, 0, 0, vt100, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT100",MACHINE_NOT_WORKING) +//COMP( 1978, vt100wp, vt100, 0, vt100, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT100-Wx", MACHINE_NOT_WORKING) +COMP( 1979, vt100ac, vt100, 0, vt100, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT100 w/VT1xx-AC STP", MACHINE_NOT_WORKING) +COMP( 1981, vt101, vt102, 0, vt102, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT101", MACHINE_NOT_WORKING) +COMP( 1981, vt102, 0, 0, vt102, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT102", MACHINE_NOT_WORKING) +//COMP( 1979, vt103, vt100, 0, vt100, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT103", MACHINE_NOT_WORKING) +COMP( 1978, vt105, vt100, 0, vt100, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT105", MACHINE_NOT_WORKING) +//COMP( 1978, vt110, vt100, 0, vt100, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT110", MACHINE_NOT_WORKING) +//COMP( 1981, vt125, vt100, 0, vt100, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT125", MACHINE_NOT_WORKING) +COMP( 1981, vt131, vt102, 0, vt102, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT131", MACHINE_NOT_WORKING) +//COMP( 1979, vt132, vt100, 0, vt100, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT132", MACHINE_NOT_WORKING) +COMP( 1983, vt180, vt100, 0, vt180, vt100, vt100_state, 0, "Digital Equipment Corporation", "VT180", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/vt220.cpp b/src/mame/drivers/vt220.cpp index 266d9115166..abb63cfab67 100644 --- a/src/mame/drivers/vt220.cpp +++ b/src/mame/drivers/vt220.cpp @@ -59,7 +59,7 @@ uint32_t vt220_state::screen_update_vt220(screen_device &screen, bitmap_ind16 &b } -static MACHINE_CONFIG_START( vt220, vt220_state ) +static MACHINE_CONFIG_START( vt220 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8051, XTAL_11_0592MHz) // from schematic MCFG_CPU_PROGRAM_MAP(vt220_mem) @@ -110,5 +110,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, vt220, 0, 0, vt220, vt220, driver_device, 0, "Digital Equipment Corporation", "VT220", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, vt220, 0, 0, vt220, vt220, vt220_state, 0, "Digital Equipment Corporation", "VT220", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp index 050a9b2e77c..0ecce7b128f 100644 --- a/src/mame/drivers/vt240.cpp +++ b/src/mame/drivers/vt240.cpp @@ -638,7 +638,7 @@ static INPUT_PORTS_START( vt240 ) PORT_CONFSETTING(0x01, "Color") INPUT_PORTS_END -static MACHINE_CONFIG_START( vt240, vt240_state ) +static MACHINE_CONFIG_START( vt240 ) MCFG_CPU_ADD("maincpu", T11, XTAL_7_3728MHz) // confirm MCFG_CPU_PROGRAM_MAP(vt240_mem) MCFG_T11_INITIAL_MODE(5 << 13) @@ -774,7 +774,7 @@ ROM_START( vt240 ) ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, vt240, 0, 0, vt240, vt240, driver_device, 0, "Digital Equipment Corporation", "VT240", MACHINE_IMPERFECT_GRAPHICS ) -//COMP( 1983, vt241, 0, 0, vt220, vt220, driver_device, 0, "Digital Equipment Corporation", "VT241", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1983, vt240, 0, 0, vt240, vt240, vt240_state, 0, "Digital Equipment Corporation", "VT240", MACHINE_IMPERFECT_GRAPHICS ) +//COMP( 1983, vt241, 0, 0, vt220, vt220, vt240_state, 0, "Digital Equipment Corporation", "VT241", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // NOTE: the only difference between VT240 and VT241 is the latter comes with a VR241 Color monitor, while the former comes with a mono display; the ROMs and operation are identical. -COMP( 1983, mc7105, 0, 0, mc7105, vt240, driver_device, 0, "Elektronika", "MC7105", MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1983, mc7105, 0, 0, mc7105, vt240, vt240_state, 0, "Elektronika", "MC7105", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/drivers/vt320.cpp b/src/mame/drivers/vt320.cpp index 0bb658bcd1f..153080bcb44 100644 --- a/src/mame/drivers/vt320.cpp +++ b/src/mame/drivers/vt320.cpp @@ -84,7 +84,7 @@ uint32_t vt320_state::screen_update_vt320(screen_device &screen, bitmap_ind16 &b } -static MACHINE_CONFIG_START( vt320, vt320_state ) +static MACHINE_CONFIG_START( vt320 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8051, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(vt320_mem) @@ -121,8 +121,8 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, vt320, 0, 0, vt320, vt320, driver_device, 0, "Digital Equipment Corporation", "VT320", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -//COMP( 1989?, vt330, 0, 0, vt320, vt320, driver_device, 0, "Digital Equipment Corporation", "VT330", MACHINE_NOT_WORKING) -//COMP( 1989?, vt340, 0, 0, vt320, vt320, driver_device, 0, "Digital Equipment Corporation", "VT340", MACHINE_NOT_WORKING) -//COMP( 1990?, vt340p, 0, 0, vt320, vt320, driver_device, 0, "Digital Equipment Corporation", "VT340+", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1987, vt320, 0, 0, vt320, vt320, vt320_state, 0, "Digital Equipment Corporation", "VT320", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +//COMP( 1989?, vt330, 0, 0, vt320, vt320, vt320_state, 0, "Digital Equipment Corporation", "VT330", MACHINE_NOT_WORKING) +//COMP( 1989?, vt340, 0, 0, vt320, vt320, vt320_state, 0, "Digital Equipment Corporation", "VT340", MACHINE_NOT_WORKING) +//COMP( 1990?, vt340p, 0, 0, vt320, vt320, vt320_state, 0, "Digital Equipment Corporation", "VT340+", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/vt520.cpp b/src/mame/drivers/vt520.cpp index ccb9d33fe23..ea306fc52e9 100644 --- a/src/mame/drivers/vt520.cpp +++ b/src/mame/drivers/vt520.cpp @@ -73,7 +73,7 @@ uint32_t vt520_state::screen_update_vt520(screen_device &screen, bitmap_ind16 &b return 0; } -static MACHINE_CONFIG_START( vt520, vt520_state ) +static MACHINE_CONFIG_START( vt520 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8032, XTAL_20MHz) MCFG_CPU_PROGRAM_MAP(vt520_mem) @@ -106,7 +106,7 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -//COMP( 1993, vt510, 0, 0, vt520, vt520, driver_device, 0, "Digital Equipment Corporation", "VT510", MACHINE_NOT_WORKING) -COMP( 1994, vt520, 0, 0, vt520, vt520, driver_device, 0, "Digital Equipment Corporation", "VT520", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -//COMP( 1994, vt525, 0, 0, vt520, vt520, driver_device, 0, "Digital Equipment Corporation", "VT525", MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +//COMP( 1993, vt510, 0, 0, vt520, vt520, vt520_state, 0, "Digital Equipment Corporation", "VT510", MACHINE_NOT_WORKING) +COMP( 1994, vt520, 0, 0, vt520, vt520, vt520_state, 0, "Digital Equipment Corporation", "VT520", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +//COMP( 1994, vt525, 0, 0, vt520, vt520, vt520_state, 0, "Digital Equipment Corporation", "VT525", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/vta2000.cpp b/src/mame/drivers/vta2000.cpp index acc2064ad6a..2655f2e0ee8 100644 --- a/src/mame/drivers/vta2000.cpp +++ b/src/mame/drivers/vta2000.cpp @@ -154,7 +154,7 @@ PALETTE_INIT_MEMBER(vta2000_state, vta2000) palette.set_pen_color(2, 0x00, 0xff, 0x00); // highlight } -static MACHINE_CONFIG_START( vta2000, vta2000_state ) +static MACHINE_CONFIG_START( vta2000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_4MHz / 4) MCFG_CPU_PROGRAM_MAP(vta2000_mem) @@ -188,5 +188,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 19??, vta2000, 0, 0, vta2000, vta2000, driver_device, 0, "", "VTA-2000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 19??, vta2000, 0, 0, vta2000, vta2000, vta2000_state, 0, "", "VTA-2000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/vtech1.cpp b/src/mame/drivers/vtech1.cpp index d24cb5ce684..f1d23a777e8 100644 --- a/src/mame/drivers/vtech1.cpp +++ b/src/mame/drivers/vtech1.cpp @@ -99,8 +99,8 @@ private: required_device m_mc6847; required_device m_speaker; required_device m_cassette; - required_device m_ioexp; - required_device m_memexp; + required_device m_ioexp; + required_device m_memexp; }; @@ -419,7 +419,7 @@ INPUT_PORTS_END static const int16_t speaker_levels[] = {-32768, 0, 32767, 0}; -static MACHINE_CONFIG_START( laser110, vtech1_state ) +static MACHINE_CONFIG_START( laser110 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, VTECH1_CLK) /* 3.57950 MHz */ @@ -433,7 +433,7 @@ static MACHINE_CONFIG_START( laser110, vtech1_state ) MCFG_MC6847_FSYNC_CALLBACK(INPUTLINE("maincpu", 0)) MCFG_DEVCB_INVERT MCFG_MC6847_INPUT_CALLBACK(READ8(vtech1_state, mc6847_videoram_r)) MCFG_MC6847_BW(true) - MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM1) + MCFG_MC6847_FIXED_MODE(mc6847_pal_device::MODE_GM1) // GM2 = GND, GM0 = GND, INTEXT = GND // other lines not connected @@ -465,7 +465,7 @@ static MACHINE_CONFIG_DERIVED( laser200, laser110 ) MCFG_DEVICE_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz) MCFG_MC6847_FSYNC_CALLBACK(INPUTLINE("maincpu", 0)) MCFG_DEVCB_INVERT MCFG_MC6847_INPUT_CALLBACK(READ8(vtech1_state, mc6847_videoram_r)) - MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM1) + MCFG_MC6847_FIXED_MODE(mc6847_pal_device::MODE_GM1) // GM2 = GND, GM0 = GND, INTEXT = GND // other lines not connected MACHINE_CONFIG_END @@ -489,7 +489,7 @@ static MACHINE_CONFIG_DERIVED( laser310h, laser310 ) MCFG_DEVICE_ADD("mc6847", MC6847_PAL, XTAL_4_433619MHz) MCFG_MC6847_FSYNC_CALLBACK(INPUTLINE("maincpu", 0)) MCFG_DEVCB_INVERT MCFG_MC6847_INPUT_CALLBACK(READ8(vtech1_state, mc6847_videoram_r)) - MCFG_MC6847_FIXED_MODE(MC6847_MODE_GM1) + MCFG_MC6847_FIXED_MODE(mc6847_pal_device::MODE_GM1) // INTEXT = GND // other lines not connected MACHINE_CONFIG_END @@ -550,7 +550,7 @@ ROM_END GAME DRIVERS ***************************************************************************/ -// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS COMP( 1983, laser110, 0, 0, laser110, vtech1, vtech1_state, vtech1, "Video Technology", "Laser 110", 0 ) COMP( 1983, laser200, 0, 0, laser200, vtech1, vtech1_state, vtech1, "Video Technology", "Laser 200", 0 ) COMP( 1983, vz200de, laser200, 0, laser200, vtech1, vtech1_state, vtech1, "Video Technology", "VZ-200 (Germany & Netherlands)", MACHINE_NOT_WORKING ) @@ -560,4 +560,4 @@ COMP( 1984, laser210, 0, 0, laser210, vtech1, vtech1_state, vtech1 COMP( 1984, vz200, laser210, 0, laser210, vtech1, vtech1_state, vtech1, "Dick Smith Electronics", "VZ-200 (Oceania)", 0 ) COMP( 1984, laser310, 0, 0, laser310, vtech1, vtech1_state, vtech1, "Video Technology", "Laser 310", 0 ) COMP( 1984, vz300, laser310, 0, laser310, vtech1, vtech1_state, vtech1, "Dick Smith Electronics", "VZ-300 (Oceania)", 0 ) -COMP( 1984, laser310h, laser310, 0, laser310h, vtech1, vtech1_state, vtech1h, "Video Technology", "Laser 310 (SHRG)", MACHINE_UNOFFICIAL) +COMP( 1984, laser310h, laser310, 0, laser310h, vtech1, vtech1_state, vtech1h, "Video Technology", "Laser 310 (SHRG)", MACHINE_UNOFFICIAL ) diff --git a/src/mame/drivers/vtech2.cpp b/src/mame/drivers/vtech2.cpp index d87b59474ae..968bd2d2f20 100644 --- a/src/mame/drivers/vtech2.cpp +++ b/src/mame/drivers/vtech2.cpp @@ -413,7 +413,7 @@ static const floppy_interface vtech2_floppy_interface = nullptr }; -static MACHINE_CONFIG_START( laser350, vtech2_state ) +static MACHINE_CONFIG_START( laser350 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 3694700) /* 3.694700 MHz */ MCFG_CPU_PROGRAM_MAP(vtech2_mem) @@ -504,7 +504,7 @@ ROM_END ***************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1984?, laser350, 0, 0, laser350, laser350, vtech2_state, laser, "Video Technology", "Laser 350" , 0) -COMP( 1984?, laser500, laser350, 0, laser500, laser500, vtech2_state, laser, "Video Technology", "Laser 500" , 0) -COMP( 1984?, laser700, laser350, 0, laser700, laser500, vtech2_state, laser, "Video Technology", "Laser 700" , 0) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1984?, laser350, 0, 0, laser350, laser350, vtech2_state, laser, "Video Technology", "Laser 350" , 0) +COMP( 1984?, laser500, laser350, 0, laser500, laser500, vtech2_state, laser, "Video Technology", "Laser 500" , 0) +COMP( 1984?, laser700, laser350, 0, laser700, laser500, vtech2_state, laser, "Video Technology", "Laser 700" , 0) diff --git a/src/mame/drivers/vulgus.cpp b/src/mame/drivers/vulgus.cpp index 358dff49947..1c477546ad7 100644 --- a/src/mame/drivers/vulgus.cpp +++ b/src/mame/drivers/vulgus.cpp @@ -214,7 +214,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( vulgus, vulgus_state ) +static MACHINE_CONFIG_START( vulgus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) /* 3 MHz */ @@ -379,6 +379,6 @@ ROM_END -GAME( 1984, vulgus, 0, vulgus, vulgus, driver_device, 0, ROT270, "Capcom", "Vulgus (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, vulgusa, vulgus, vulgus, vulgus, driver_device, 0, ROT90, "Capcom", "Vulgus (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, vulgusj, vulgus, vulgus, vulgus, driver_device, 0, ROT270, "Capcom", "Vulgus (Japan?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, vulgus, 0, vulgus, vulgus, vulgus_state, 0, ROT270, "Capcom", "Vulgus (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, vulgusa, vulgus, vulgus, vulgus, vulgus_state, 0, ROT90, "Capcom", "Vulgus (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, vulgusj, vulgus, vulgus, vulgus, vulgus_state, 0, ROT270, "Capcom", "Vulgus (Japan?)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wacky_gator.cpp b/src/mame/drivers/wacky_gator.cpp index 524e529d0df..ae6a9ca04cc 100644 --- a/src/mame/drivers/wacky_gator.cpp +++ b/src/mame/drivers/wacky_gator.cpp @@ -270,7 +270,7 @@ static ADDRESS_MAP_START( program_map, AS_PROGRAM, 8, wackygtr_state ) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END -static MACHINE_CONFIG_START( wackygtr, wackygtr_state ) +static MACHINE_CONFIG_START( wackygtr ) MCFG_CPU_ADD("maincpu", M6809E, XTAL_3_579545MHz) // HD68B09P MCFG_CPU_PROGRAM_MAP(program_map) @@ -285,7 +285,7 @@ static MACHINE_CONFIG_START( wackygtr, wackygtr_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz ) MCFG_MSM5205_VCLK_CB(WRITELINE(wackygtr_state, adpcm_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8 KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz ) diff --git a/src/mame/drivers/wallc.cpp b/src/mame/drivers/wallc.cpp index 1afee902a0e..1200bde3e6e 100644 --- a/src/mame/drivers/wallc.cpp +++ b/src/mame/drivers/wallc.cpp @@ -308,7 +308,7 @@ DRIVER_INIT_MEMBER(wallc_state,wallca) -static MACHINE_CONFIG_START( wallc, wallc_state ) +static MACHINE_CONFIG_START( wallc ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 12288000 / 4) /* 3.072 MHz ? */ MCFG_CPU_PROGRAM_MAP(wallc_map) @@ -492,8 +492,8 @@ DRIVER_INIT_MEMBER(wallc_state,sidam) } -GAME( 1984, wallc, 0, wallc, wallc, wallc_state, wallc, ROT0, "Midcoin", "Wall Crash (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, wallca, wallc, wallc, wallc, wallc_state, wallca, ROT0, "Midcoin", "Wall Crash (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, brkblast,wallc, wallc, wallc, wallc_state, wallca, ROT0, "bootleg (Fadesa)", "Brick Blast (bootleg of Wall Crash)", MACHINE_SUPPORTS_SAVE ) // Spanish bootleg board, Fadesa stickers / text on various components +GAME( 1984, wallc, 0, wallc, wallc, wallc_state, wallc, ROT0, "Midcoin", "Wall Crash (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, wallca, wallc, wallc, wallc, wallc_state, wallca, ROT0, "Midcoin", "Wall Crash (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, brkblast, wallc, wallc, wallc, wallc_state, wallca, ROT0, "bootleg (Fadesa)", "Brick Blast (bootleg of Wall Crash)", MACHINE_SUPPORTS_SAVE ) // Spanish bootleg board, Fadesa stickers / text on various components -GAME( 1984, sidampkr,0, wallc, wallc, wallc_state, sidam, ROT270, "Sidam", "unknown Sidam Poker", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, sidampkr, 0, wallc, wallc, wallc_state, sidam, ROT270, "Sidam", "unknown Sidam Poker", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wangpc.cpp b/src/mame/drivers/wangpc.cpp index c6e70b61ac4..200cb8cba00 100644 --- a/src/mame/drivers/wangpc.cpp +++ b/src/mame/drivers/wangpc.cpp @@ -1265,7 +1265,7 @@ void wangpc_state::on_disk1_unload(floppy_image_device *image) // MACHINE_CONFIG( wangpc ) //------------------------------------------------- -static MACHINE_CONFIG_START( wangpc, wangpc_state ) +static MACHINE_CONFIG_START( wangpc ) MCFG_CPU_ADD(I8086_TAG, I8086, 8000000) MCFG_CPU_PROGRAM_MAP(wangpc_mem) MCFG_CPU_IO_MAP(wangpc_io) @@ -1305,7 +1305,7 @@ static MACHINE_CONFIG_START( wangpc, wangpc_state ) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(wangpc_state, pit2_w)) MCFG_IM6402_ADD(IM6402_TAG, 62500*16, 62500*16) - MCFG_IM6402_TRO_CALLBACK(DEVWRITELINE(WANGPC_KEYBOARD_TAG, wangpc_keyboard_t, write_rxd)) + MCFG_IM6402_TRO_CALLBACK(DEVWRITELINE(WANGPC_KEYBOARD_TAG, wangpc_keyboard_device, write_rxd)) MCFG_IM6402_DR_CALLBACK(WRITELINE(wangpc_state, uart_dr_w)) MCFG_IM6402_TBRE_CALLBACK(WRITELINE(wangpc_state, uart_tbre_w)) @@ -1386,4 +1386,4 @@ ROM_END // GAME DRIVERS //************************************************************************** -COMP( 1985, wangpc, 0, 0, wangpc, wangpc, driver_device, 0, "Wang Laboratories", "Wang Professional Computer", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, wangpc, 0, 0, wangpc, wangpc, wangpc_state, 0, "Wang Laboratories", "Wang Professional Computer", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wardner.cpp b/src/mame/drivers/wardner.cpp index b5f5c483819..0de5a882755 100644 --- a/src/mame/drivers/wardner.cpp +++ b/src/mame/drivers/wardner.cpp @@ -362,7 +362,7 @@ void wardner_state::machine_reset() m_membank->set_bank(0); } -static MACHINE_CONFIG_START( wardner, wardner_state ) +static MACHINE_CONFIG_START( wardner ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4) /* 6MHz */ @@ -402,7 +402,7 @@ static MACHINE_CONFIG_START( wardner, wardner_state ) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_RAW_PARAMS(XTAL_14MHz/2, 446, 0, 320, 286, 0, 240) MCFG_SCREEN_UPDATE_DRIVER(wardner_state, screen_update_toaplan0) - MCFG_SCREEN_VBLANK_DEVICE("spriteram8", buffered_spriteram8_device, vblank_copy_rising) + MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram8", buffered_spriteram8_device, vblank_copy_rising)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", wardner) @@ -581,6 +581,6 @@ ROM_START( wardnerj ) ROM_END -GAME( 1987, wardner, 0, wardner, wardner, driver_device, 0, ROT0, "Toaplan / Taito Corporation Japan", "Wardner (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, pyros, wardner, wardner, pyros, driver_device, 0, ROT0, "Toaplan / Taito America Corporation", "Pyros (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, wardnerj, wardner, wardner, wardnerj, driver_device, 0, ROT0, "Toaplan / Taito Corporation", "Wardner no Mori (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, wardner, 0, wardner, wardner, wardner_state, 0, ROT0, "Toaplan / Taito Corporation Japan", "Wardner (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, pyros, wardner, wardner, pyros, wardner_state, 0, ROT0, "Toaplan / Taito America Corporation", "Pyros (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, wardnerj, wardner, wardner, wardnerj, wardner_state, 0, ROT0, "Toaplan / Taito Corporation", "Wardner no Mori (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/warpsped.cpp b/src/mame/drivers/warpsped.cpp index 1bedf832669..3e594948206 100644 --- a/src/mame/drivers/warpsped.cpp +++ b/src/mame/drivers/warpsped.cpp @@ -315,7 +315,7 @@ PALETTE_INIT_MEMBER(warpspeed_state, warpspeed) } } -static MACHINE_CONFIG_START( warpspeed, warpspeed_state ) +static MACHINE_CONFIG_START( warpspeed ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz/2) @@ -373,4 +373,4 @@ ROM_START( warpsped ) ROM_END -GAME( 1979?, warpsped, 0, warpspeed, warpspeed, driver_device, 0, ROT0, "Meadows Games, Inc.", "Warp Speed (prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // year not shown, 1979 is according to date stamps on PCB chips. +GAME( 1979?, warpsped, 0, warpspeed, warpspeed, warpspeed_state, 0, ROT0, "Meadows Games, Inc.", "Warp Speed (prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // year not shown, 1979 is according to date stamps on PCB chips. diff --git a/src/mame/drivers/warpwarp.cpp b/src/mame/drivers/warpwarp.cpp index 5d2bfdff051..39e819805a1 100644 --- a/src/mame/drivers/warpwarp.cpp +++ b/src/mame/drivers/warpwarp.cpp @@ -730,7 +730,7 @@ GFXDECODE_END -static MACHINE_CONFIG_START( geebee, warpwarp_state ) +static MACHINE_CONFIG_START( geebee ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, MASTER_CLOCK/9) /* verified on pcb */ @@ -768,7 +768,7 @@ static MACHINE_CONFIG_DERIVED( navarone, geebee ) MCFG_VIDEO_START_OVERRIDE(warpwarp_state,navarone) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bombbee, warpwarp_state ) +static MACHINE_CONFIG_START( bombbee ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8080, MASTER_CLOCK/9) diff --git a/src/mame/drivers/warriorb.cpp b/src/mame/drivers/warriorb.cpp index 6ae23e97825..7569b3504b0 100644 --- a/src/mame/drivers/warriorb.cpp +++ b/src/mame/drivers/warriorb.cpp @@ -424,7 +424,7 @@ void warriorb_state::machine_reset() machine().sound().system_enable(true); /* mixer enabled */ } -static MACHINE_CONFIG_START( darius2d, warriorb_state ) +static MACHINE_CONFIG_START( darius2d ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ??? (Might well be 16!) */ @@ -512,7 +512,7 @@ static MACHINE_CONFIG_START( darius2d, warriorb_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( warriorb, warriorb_state ) +static MACHINE_CONFIG_START( warriorb ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 16 MHz ? */ @@ -780,8 +780,8 @@ ROM_END /* Working Games */ -// YEAR, NAME, PARENT, MACHINE, INPUT, INIT,MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1989, sagaia, darius2, darius2d, sagaia, driver_device, 0, ROT0, "Taito Corporation Japan", "Sagaia (dual screen) (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, darius2d, darius2, darius2d, darius2d, driver_device, 0, ROT0, "Taito Corporation", "Darius II (dual screen) (Japan, Rev 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, darius2do, darius2, darius2d, darius2d, driver_device, 0, ROT0, "Taito Corporation", "Darius II (dual screen) (Japan, Rev 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, warriorb, 0, warriorb, warriorb, driver_device, 0, ROT0, "Taito Corporation", "Warrior Blade - Rastan Saga Episode III (Japan)", MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT,MONITOR,COMPANY,FULLNAME, FLAGS +GAME( 1989, sagaia, darius2, darius2d, sagaia, warriorb_state, 0, ROT0, "Taito Corporation Japan", "Sagaia (dual screen) (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, darius2d, darius2, darius2d, darius2d, warriorb_state, 0, ROT0, "Taito Corporation", "Darius II (dual screen) (Japan, Rev 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, darius2do, darius2, darius2d, darius2d, warriorb_state, 0, ROT0, "Taito Corporation", "Darius II (dual screen) (Japan, Rev 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, warriorb, 0, warriorb, warriorb, warriorb_state, 0, ROT0, "Taito Corporation", "Warrior Blade - Rastan Saga Episode III (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wc90.cpp b/src/mame/drivers/wc90.cpp index 29efcaebcff..8d40cdeb587 100644 --- a/src/mame/drivers/wc90.cpp +++ b/src/mame/drivers/wc90.cpp @@ -349,7 +349,7 @@ void wc90_state::machine_start() } -static MACHINE_CONFIG_START( wc90, wc90_state ) +static MACHINE_CONFIG_START( wc90 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz) /* verified on pcb */ @@ -568,9 +568,9 @@ ROM_START( pac90 ) ROM_END -GAME( 1989, wc90, 0, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (World)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wc90a, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wc90b, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wc90t, wc90, wc90t,wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (trackball set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wc90, 0, wc90, wc90, wc90_state, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (World)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wc90a, wc90, wc90, wc90, wc90_state, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wc90b, wc90, wc90, wc90, wc90_state, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wc90t, wc90, wc90t, wc90, wc90_state, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (trackball set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 199?, pac90, puckman, pac90,pac90,driver_device, 0, ROT90, "bootleg (Macro)", "Pac-Man (bootleg on World Cup '90 hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // made by Mike Coates etc. +GAME( 199?, pac90, puckman, pac90, pac90, wc90_state, 0, ROT90, "bootleg (Macro)", "Pac-Man (bootleg on World Cup '90 hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // made by Mike Coates etc. diff --git a/src/mame/drivers/wc90b.cpp b/src/mame/drivers/wc90b.cpp index f7bec2930b5..0b8da2877bc 100644 --- a/src/mame/drivers/wc90b.cpp +++ b/src/mame/drivers/wc90b.cpp @@ -350,7 +350,7 @@ void wc90b_state::machine_start() } -static MACHINE_CONFIG_START( wc90b, wc90b_state ) +static MACHINE_CONFIG_START( wc90b ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK) @@ -392,7 +392,7 @@ static MACHINE_CONFIG_START( wc90b, wc90b_state ) MCFG_SOUND_ADD("msm", MSM5205, MSM5205_CLOCK) MCFG_MSM5205_VCLK_CB(WRITELINE(wc90b_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MACHINE_CONFIG_END @@ -534,6 +534,6 @@ ROM_START( wc90ba ) ROM_END -GAME( 1989, wc90b1, wc90, wc90b, wc90b, driver_device, 0, ROT0, "bootleg", "Euro League (Italian hack of Tecmo World Cup '90)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wc90b2, wc90, wc90b, wc90b, driver_device, 0, ROT0, "bootleg", "Worldcup '90", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wc90ba, wc90, wc90b, wc90b, driver_device, 0, ROT0, "bootleg", "Euro League (Italian hack of Tecmo World Cup '90 - alt version)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wc90b1, wc90, wc90b, wc90b, wc90b_state, 0, ROT0, "bootleg", "Euro League (Italian hack of Tecmo World Cup '90)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wc90b2, wc90, wc90b, wc90b, wc90b_state, 0, ROT0, "bootleg", "Worldcup '90", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wc90ba, wc90, wc90b, wc90b, wc90b_state, 0, ROT0, "bootleg", "Euro League (Italian hack of Tecmo World Cup '90 - alt version)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wecleman.cpp b/src/mame/drivers/wecleman.cpp index b2fcacb7b70..e489f9beaae 100644 --- a/src/mame/drivers/wecleman.cpp +++ b/src/mame/drivers/wecleman.cpp @@ -1069,7 +1069,7 @@ MACHINE_RESET_MEMBER(wecleman_state,wecleman) m_k007232->set_bank( 0, 1 ); } -static MACHINE_CONFIG_START( wecleman, wecleman_state ) +static MACHINE_CONFIG_START( wecleman ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* Schems show 10MHz */ @@ -1140,7 +1140,7 @@ MACHINE_RESET_MEMBER(wecleman_state,hotchase) } -static MACHINE_CONFIG_START( hotchase, wecleman_state ) +static MACHINE_CONFIG_START( hotchase ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz - PCB is drawn in one set's readme */ diff --git a/src/mame/drivers/welltris.cpp b/src/mame/drivers/welltris.cpp index 30a1fcdc197..80bd94bc98f 100644 --- a/src/mame/drivers/welltris.cpp +++ b/src/mame/drivers/welltris.cpp @@ -318,6 +318,7 @@ TODO: #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "sound/2610intf.h" +#include "video/vsystem_gga.h" #include "screen.h" #include "speaker.h" @@ -371,9 +372,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, welltris_state ) AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w) AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("EXTRA") /* P3+P4 Coin + Start Buttons */ AM_RANGE(0xfff00c, 0xfff00d) AM_READ_PORT("DSW1") - AM_RANGE(0xfff00c, 0xfff00d) AM_WRITENOP /* ?? */ AM_RANGE(0xfff00e, 0xfff00f) AM_READ_PORT("DSW2") - AM_RANGE(0xfff00e, 0xfff00f) AM_WRITENOP /* ?? */ + AM_RANGE(0xfff00c, 0xfff00f) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, welltris_state ) @@ -690,7 +690,7 @@ void welltris_state::machine_start() save_item(NAME(m_pending_command)); } -static MACHINE_CONFIG_START( welltris, welltris_state ) +static MACHINE_CONFIG_START( welltris ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,20000000/2) /* 10 MHz */ @@ -714,6 +714,8 @@ static MACHINE_CONFIG_START( welltris, welltris_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0) + MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_VSYSTEM_SPR2_SET_GFXREGION(1) MCFG_VSYSTEM_SPR2_SET_PRITYPE(-1) @@ -826,6 +828,6 @@ ROM_END -GAME( 1991, welltris, 0, welltris, welltris, welltris_state, welltris, ROT0, "Video System Co.", "Welltris (World?, 2 players)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, welltrisj,welltris, welltris, welltris, welltris_state, welltris, ROT0, "Video System Co.", "Welltris (Japan, 2 players)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, quiz18k, 0, quiz18k, quiz18k, driver_device, 0, ROT0, "EIM", "Miyasu Nonki no Quiz 18-Kin", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, welltris, 0, welltris, welltris, welltris_state, welltris, ROT0, "Video System Co.", "Welltris (World?, 2 players)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1991, welltrisj, welltris, welltris, welltris, welltris_state, welltris, ROT0, "Video System Co.", "Welltris (Japan, 2 players)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, quiz18k, 0, quiz18k, quiz18k, welltris_state, 0, ROT0, "EIM", "Miyasu Nonki no Quiz 18-Kin", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wgp.cpp b/src/mame/drivers/wgp.cpp index dbaa2a12778..ffc4400fa7a 100644 --- a/src/mame/drivers/wgp.cpp +++ b/src/mame/drivers/wgp.cpp @@ -910,7 +910,7 @@ void wgp_state::machine_start() machine().save().register_postload(save_prepost_delegate(FUNC(wgp_state::wgp_postload), this)); } -static MACHINE_CONFIG_START( wgp, wgp_state ) +static MACHINE_CONFIG_START( wgp ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ??? */ @@ -1202,8 +1202,8 @@ DRIVER_INIT_MEMBER(wgp_state,wgp2) /* Working Games with some graphics problems - e.g. missing rotation */ -GAME( 1989, wgp, 0, wgp, wgp, wgp_state, wgp, ROT0, "Taito America Corporation", "World Grand Prix (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1989, wgpj, wgp, wgp, wgpj, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1989, wgpjoy, wgp, wgp, wgpjoy, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1989, wgpjoya, wgp, wgp, wgpjoy, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1990, wgp2, wgp, wgp2, wgp2, wgp_state, wgp2, ROT0, "Taito Corporation", "World Grand Prix 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1989, wgp, 0, wgp, wgp, wgp_state, wgp, ROT0, "Taito America Corporation", "World Grand Prix (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1989, wgpj, wgp, wgp, wgpj, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1989, wgpjoy, wgp, wgp, wgpjoy, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1989, wgpjoya, wgp, wgp, wgpjoy, wgp_state, wgp, ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1990, wgp2, wgp, wgp2, wgp2, wgp_state, wgp2, ROT0, "Taito Corporation", "World Grand Prix 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/wheelfir.cpp b/src/mame/drivers/wheelfir.cpp index 58a7f45e778..b7a24880081 100644 --- a/src/mame/drivers/wheelfir.cpp +++ b/src/mame/drivers/wheelfir.cpp @@ -289,7 +289,7 @@ public: virtual void machine_start() override; virtual void video_start() override; uint32_t screen_update_wheelfir(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_wheelfir(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_wheelfir); TIMER_DEVICE_CALLBACK_MEMBER(scanline_timer_callback); }; @@ -553,12 +553,12 @@ uint32_t wheelfir_state::screen_update_wheelfir(screen_device &screen, bitmap_in return 0; } -void wheelfir_state::screen_eof_wheelfir(screen_device &screen, bool state) +WRITE_LINE_MEMBER(wheelfir_state::screen_vblank_wheelfir) { // rising edge if (state) { - m_tmp_bitmap[LAYER_FG]->fill(0, screen.visible_area()); + m_tmp_bitmap[LAYER_FG]->fill(0, m_screen->visible_area()); } } @@ -770,7 +770,7 @@ void wheelfir_state::machine_start() } -static MACHINE_CONFIG_START( wheelfir, wheelfir_state ) +static MACHINE_CONFIG_START( wheelfir ) MCFG_CPU_ADD("maincpu", M68000, 32000000/2) MCFG_CPU_PROGRAM_MAP(wheelfir_main) @@ -788,7 +788,7 @@ static MACHINE_CONFIG_START( wheelfir, wheelfir_state ) MCFG_SCREEN_SIZE(336, NUM_SCANLINES+NUM_VBLANK_LINES) MCFG_SCREEN_VISIBLE_AREA(0,335, 0, NUM_SCANLINES-1) MCFG_SCREEN_UPDATE_DRIVER(wheelfir_state, screen_update_wheelfir) - MCFG_SCREEN_VBLANK_DRIVER(wheelfir_state, screen_eof_wheelfir) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(wheelfir_state, screen_vblank_wheelfir)) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", NUM_COLORS) @@ -830,4 +830,4 @@ ROM_START( wheelfir ) ROM_LOAD16_WORD_SWAP( "eeprom", 0x000000, 0x000080, CRC(961e4bc9) SHA1(8944504bf56a272e9aa08185e73c6b4212d52383) ) ROM_END -GAME( 199?, wheelfir, 0, wheelfir, wheelfir, driver_device, 0, ROT0, "TCH", "Wheels & Fire", MACHINE_IMPERFECT_GRAPHICS) +GAME( 199?, wheelfir, 0, wheelfir, wheelfir, wheelfir_state, 0, ROT0, "TCH", "Wheels & Fire", MACHINE_IMPERFECT_GRAPHICS) diff --git a/src/mame/drivers/white_mod.cpp b/src/mame/drivers/white_mod.cpp index 4f2c340b416..e39d9801121 100644 --- a/src/mame/drivers/white_mod.cpp +++ b/src/mame/drivers/white_mod.cpp @@ -43,7 +43,7 @@ DRIVER_INIT_MEMBER(whitestar_mod_state,whitestar_mod) { } -static MACHINE_CONFIG_START( whitestar_mod, whitestar_mod_state ) +static MACHINE_CONFIG_START( whitestar_mod ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) MCFG_CPU_PROGRAM_MAP(whitestar_mod_map) @@ -3590,156 +3590,156 @@ ROM_START(sopranoi_107) ROM_LOAD("sopsndi.u37", 0x300000, 0x100000, CRC(b34c0a5f) SHA1(b84979d6eef7d23e6dd5410993d83fba2121bc6a)) ROM_END -GAME(2004, elvisp, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisp4, elvisp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisp303, elvisp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisp302, elvisp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisl, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisl4, elvisl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisl303, elvisl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisl302, elvisl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisg, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisg4, elvisg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisg303, elvisg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisg302, elvisg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisf, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisf4, elvisf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisf303, elvisf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisf302, elvisf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisi, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisi4, elvisi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisi303, elvisi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, elvisi302, elvisi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprix, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprix_400, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprix_352, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprix_350, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprix_340, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprix_301, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixg, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixg_400, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixg_352, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixg_350, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixg_340, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixg_301, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixl, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixl_400, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixl_352, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixl_350, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixl_340, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixl_301, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixf, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixf_400, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixf_352, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixf_350, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixf_340, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixf_301, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixi, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixi_400, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixi_352, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixi_350, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixi_340, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, gprixi_301, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascar, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (4.50)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascar_400, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (4.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascar_352, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.52)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascar_350, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.50)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascar_340, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.40)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascar_301, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.01)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, dalejr, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Dale Jr. (5.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascarl, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (4.50 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascarl_400,nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (4.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascarl_352,nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.52 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascarl_350,nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.50 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascarl_340,nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.40 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, nascarl_301,nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripleys, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, rip310, ripleys, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, rip302, ripleys, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, rip301, ripleys, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, rip300, ripleys, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripleysf, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripf310, ripleysf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripf302, ripleysf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripf301, ripleysf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripf300, ripleysf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripleysg, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20 Germany)",MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripg310, ripleysg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10 Germany)",MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripg302, ripleysg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02 Germany)",MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripg301, ripleysg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01 Germany)",MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripg300, ripleysg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00 Germany)",MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripleysi, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripi310, ripleysi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripi302, ripleysi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripi301, ripleysi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripi300, ripleysi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripleysl, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripl310, ripleysl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripl302, ripleysl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripl301, ripleysl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2004, ripl300, ripleysl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_le, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.02 Limited Edition)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr9, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr8, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr7, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr6, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr501, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr5, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr410, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.10)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr401, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_sp, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_sp9, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_sp8, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_sp7, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_sp6, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_sp501, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_sp5, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_sp401, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_gr, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_gr9, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_gr8, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_gr7, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_gr6, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_gr501, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_gr5, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_gr410, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.10 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_gr401, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_fr, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_fr9, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.0 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_fr8, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.0 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_fr7, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.0 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_fr6, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.0 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_fr501, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_fr5, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.0 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_fr410, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.10 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_fr401, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_it, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_it9, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_it8, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_it7, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_it6, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_it501, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_it5, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_it410, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.10 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2003, lotr_it401, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranos, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranos_400,sopranos, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranos_300,sopranos, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranos_204,sopranos, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (2.04)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranog, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranog_400,sopranog, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranog_300,sopranog, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranog_107,sopranog, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (1.07 Germany)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranof, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranof_400,sopranof, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranof_300,sopranof, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranof_107,sopranof, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (1.07 France)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranol, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranol_400,sopranol, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranol_300,sopranol, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranol_107,sopranol, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (1.07 Spain)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranoi, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranoi_400,sopranoi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranoi_300,sopranoi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2005, sopranoi_107,sopranoi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (1.07 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisp, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisp4, elvisp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisp303, elvisp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisp302, elvisp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisl, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisl4, elvisl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisl303, elvisl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisl302, elvisl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisg, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisg4, elvisg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisg303, elvisg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisg302, elvisg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisf, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisf4, elvisf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisf303, elvisf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisf302, elvisf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisi, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (5.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisi4, elvisi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (4.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisi303, elvisi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.03 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, elvisi302, elvisi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Elvis (3.02 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprix, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprix_400, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprix_352, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprix_350, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprix_340, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprix_301, gprix, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixg, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixg_400, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixg_352, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixg_350, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixg_340, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixg_301, gprixg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixl, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixl_400, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixl_352, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixl_350, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixl_340, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixl_301, gprixl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixf, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixf_400, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixf_352, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixf_350, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixf_340, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixf_301, gprixf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixi, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.50 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixi_400, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (4.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixi_352, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.52 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixi_350, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.50 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixi_340, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.40 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, gprixi_301, gprixi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Grand Prix (3.01 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascar, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (4.50)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascar_400, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (4.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascar_352, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.52)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascar_350, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.50)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascar_340, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.40)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascar_301, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.01)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, dalejr, nascar, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Dale Jr. (5.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascarl, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (4.50 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascarl_400, nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (4.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascarl_352, nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.52 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascarl_350, nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.50 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascarl_340, nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.40 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, nascarl_301, nascarl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Nascar (3.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripleys, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, rip310, ripleys, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, rip302, ripleys, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, rip301, ripleys, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, rip300, ripleys, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripleysf, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripf310, ripleysf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripf302, ripleysf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripf301, ripleysf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripf300, ripleysf, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripleysg, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripg310, ripleysg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripg302, ripleysg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripg301, ripleysg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripg300, ripleysg, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripleysi, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripi310, ripleysi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripi302, ripleysi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripi301, ripleysi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripi300, ripleysi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripleysl, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.20 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripl310, ripleysl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.10 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripl302, ripleysl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.02 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripl301, ripleysl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2004, ripl300, ripleysl, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "Ripley's Believe It or Not! (3.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_le, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.02 Limited Edition)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr9, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr8, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr7, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr6, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr501, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr5, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr410, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.10)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr401, lotr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_sp, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_sp9, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_sp8, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_sp7, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_sp6, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_sp501, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_sp5, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.0 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_sp401, lotr_sp, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_gr, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_gr9, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_gr8, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_gr7, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_gr6, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_gr501, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_gr5, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.0 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_gr410, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.10 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_gr401, lotr_gr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_fr, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_fr9, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.0 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_fr8, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.0 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_fr7, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.0 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_fr6, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.0 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_fr501, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_fr5, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.0 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_fr410, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.10 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_fr401, lotr_fr, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_it, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (10.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_it9, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (9.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_it8, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (8.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_it7, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (7.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_it6, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (6.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_it501, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.01 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_it5, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (5.0 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_it410, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.10 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2003, lotr_it401, lotr_it, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Lord Of The Rings (4.01 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranos, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranos_400, sopranos, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranos_300, sopranos, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranos_204, sopranos, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (2.04)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranog, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranog_400, sopranog, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranog_300, sopranog, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranog_107, sopranog, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (1.07 Germany)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranof, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranof_400, sopranof, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranof_300, sopranof, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranof_107, sopranof, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (1.07 France)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranol, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranol_400, sopranol, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranol_300, sopranol, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranol_107, sopranol, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (1.07 Spain)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranoi, 0, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (5.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranoi_400, sopranoi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (4.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranoi_300, sopranoi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (3.00 Italy)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2005, sopranoi_107, sopranoi, whitestar_mod, whitestar_mod, whitestar_mod_state, whitestar_mod, ROT0, "Stern", "The Sopranos (1.07 Italy)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/whitestar.cpp b/src/mame/drivers/whitestar.cpp index 3580b605f57..c2ed791b947 100644 --- a/src/mame/drivers/whitestar.cpp +++ b/src/mame/drivers/whitestar.cpp @@ -113,7 +113,7 @@ INTERRUPT_GEN_MEMBER(whitestar_state::whitestar_firq_interrupt) device.execute().set_input_line(M6809_FIRQ_LINE, HOLD_LINE); } -static MACHINE_CONFIG_START( whitestar, whitestar_state ) +static MACHINE_CONFIG_START( whitestar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) MCFG_CPU_PROGRAM_MAP(whitestar_map) @@ -3385,197 +3385,197 @@ ROM_END #define MACHINE_IS_PINBALL MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_MECHANICAL -GAME(1995, apollo13, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Apollo 13 (5.01)", MACHINE_IS_PINBALL) -GAME(1995, apollo13_d4,apollo13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Apollo 13 (5.01, Display 4.01)", MACHINE_IS_PINBALL) -GAME(1995, apollo13_20,apollo13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Apollo 13 (2.03)", MACHINE_IS_PINBALL) -GAME(1995, apollo13_10,apollo13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Apollo 13 (1.00)", MACHINE_IS_PINBALL) -GAME(2001, austin, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (3.02)", MACHINE_IS_PINBALL) -GAME(2001, aust301, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (3.01)", MACHINE_IS_PINBALL) -GAME(2001, aust300, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (3.00)", MACHINE_IS_PINBALL) -GAME(2001, aust201, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (2.01)", MACHINE_IS_PINBALL) -GAME(2001, austnew, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (ARM7 Sound Board)", MACHINE_IS_PINBALL) -GAME(2001, austinf, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (France)", MACHINE_IS_PINBALL) -GAME(2001, austing, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (Germany)", MACHINE_IS_PINBALL) -GAME(2001, austini, austin, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Austin Powers (Italy)", MACHINE_IS_PINBALL) -GAME(1998, godzillp, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Godzilla (Pinball, 2.05)", MACHINE_IS_PINBALL) -GAME(1998, godzillp_100,godzillp, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Godzilla (Pinball, 1.00)", MACHINE_IS_PINBALL) -GAME(1998, godzillp_090,godzillp, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Godzilla (Pinball, 0.90)", MACHINE_IS_PINBALL) -GAME(1996, gldneye, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Goldeneye", MACHINE_IS_PINBALL) -GAME(1998, goldcue, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Golden Cue", MACHINE_IS_PINBALL) -GAME(1999, harl_a13, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03)", MACHINE_IS_PINBALL) -GAME(1999, harl_u13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 UK)", MACHINE_IS_PINBALL) -GAME(1999, harl_a10, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 Display rev. 1.00)", MACHINE_IS_PINBALL) -GAME(1999, harl_f13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 France)", MACHINE_IS_PINBALL) -GAME(1999, harl_g13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 Germany)", MACHINE_IS_PINBALL) -GAME(1999, harl_i13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 Italy)", MACHINE_IS_PINBALL) -GAME(1999, harl_l13, harl_a13, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Harley Davidson (1.03 Spain)", MACHINE_IS_PINBALL) -GAME(2004, harl_a40, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00)", MACHINE_IS_PINBALL) -GAME(2004, harl_f40, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00 France)", MACHINE_IS_PINBALL) -GAME(2004, harl_g40, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00 Germany)", MACHINE_IS_PINBALL) -GAME(2004, harl_i40, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00 Italy)", MACHINE_IS_PINBALL) -GAME(2004, harl_l40, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (4.00 Spain)", MACHINE_IS_PINBALL) -GAME(2004, harl_a30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00)", MACHINE_IS_PINBALL) -GAME(2004, harl_f30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00 France)", MACHINE_IS_PINBALL) -GAME(2004, harl_g30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00 Germany)", MACHINE_IS_PINBALL) -GAME(2004, harl_i30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00 Italy)", MACHINE_IS_PINBALL) -GAME(2004, harl_l30, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (3.00 Spain)", MACHINE_IS_PINBALL) -GAME(2003, harl_a18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08)", MACHINE_IS_PINBALL) -GAME(2003, harl_f18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08 France)", MACHINE_IS_PINBALL) -GAME(2003, harl_g18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08 Germany)", MACHINE_IS_PINBALL) -GAME(2003, harl_i18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08 Italy)", MACHINE_IS_PINBALL) -GAME(2003, harl_l18, harl_a40, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Harley Davidson (1.08 Spain)", MACHINE_IS_PINBALL) -GAME(2001, hirolcas, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00)", MACHINE_IS_PINBALL) -GAME(2001, hironew, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (ARM7 Sound Board)", MACHINE_IS_PINBALL) -GAME(2001, hirolcat, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00) TEST", MACHINE_IS_PINBALL) -GAME(2001, hirolcas_210,hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (2.10)", MACHINE_IS_PINBALL) -GAME(2001, hirol_fr, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00 France)", MACHINE_IS_PINBALL) -GAME(2001, hirol_gr, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00 Germany)", MACHINE_IS_PINBALL) -GAME(2001, hirol_gr_210,hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (2.10 Germany)", MACHINE_IS_PINBALL) -GAME(2001, hirol_it, hirolcas, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "High Roller Casino (3.00 Italy)", MACHINE_IS_PINBALL) -GAME(1996, id4, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Independence Day (v2.02)", MACHINE_IS_PINBALL) -GAME(1996, id4f, id4, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Independence Day (v2.02 France)", MACHINE_IS_PINBALL) -GAME(1996, id4_201, id4, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Independence Day (v2.01)", MACHINE_IS_PINBALL) -GAME(1996, id4f_201, id4, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Independence Day (v2.01 France)", MACHINE_IS_PINBALL) -GAME(1998, lostspc, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Lost in Space (1.01)", MACHINE_IS_PINBALL) -GAME(1998, lostspcf, lostspc, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Lost in Space (1.01 France)", MACHINE_IS_PINBALL) -GAME(1998, lostspcg, lostspc, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Lost in Space (1.01 Germany)", MACHINE_IS_PINBALL) -GAME(1998, lostspc_d1, lostspc, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Lost in Space (1.01, Display 1.01)", MACHINE_IS_PINBALL) -GAME(2001, monopolp, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (3.20)", MACHINE_IS_PINBALL) -GAME(2002, monop303, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (3.03)", MACHINE_IS_PINBALL) -GAME(2002, monop301, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (3.01)", MACHINE_IS_PINBALL) -GAME(2002, monop251, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (2.51)", MACHINE_IS_PINBALL) -GAME(2002, monop233, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (2.33)", MACHINE_IS_PINBALL) -GAME(2002, monopolf, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (France)", MACHINE_IS_PINBALL) -GAME(2002, monopolg, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (Germany)", MACHINE_IS_PINBALL) -GAME(2002, monopoli, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (Italy)", MACHINE_IS_PINBALL) -GAME(2002, monopoll, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (Spain)", MACHINE_IS_PINBALL) -GAME(2002, mononew, monopolp, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (ARM7 Sound Board)", MACHINE_IS_PINBALL) -GAME(2001, nfl, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "NFL", MACHINE_IS_PINBALL) -GAME(2002, playboys, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00)", MACHINE_IS_PINBALL) -GAME(2002, playboys_401,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01)", MACHINE_IS_PINBALL) -GAME(2002, playboys_303,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03)", MACHINE_IS_PINBALL) -GAME(2002, playboys_302,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02)", MACHINE_IS_PINBALL) -GAME(2002, playboys_300,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00)", MACHINE_IS_PINBALL) -GAME(2002, playboys_203,playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03)", MACHINE_IS_PINBALL) -GAME(2002, playnew, playboys, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (ARM7 Sound Board)", MACHINE_IS_PINBALL) -GAME(2002, playboyf, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00 France)", MACHINE_IS_PINBALL) -GAME(2002, playboyf_401,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01 France)", MACHINE_IS_PINBALL) -GAME(2002, playboyf_303,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03 France)", MACHINE_IS_PINBALL) -GAME(2002, playboyf_302,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02 France)", MACHINE_IS_PINBALL) -GAME(2002, playboyf_300,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00 France)", MACHINE_IS_PINBALL) -GAME(2002, playboyf_203,playboyf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03 France)", MACHINE_IS_PINBALL) -GAME(2002, playboyg, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00 Germany)", MACHINE_IS_PINBALL) -GAME(2002, playboyg_401,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01 Germany)", MACHINE_IS_PINBALL) -GAME(2002, playboyg_303,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03 Germany)", MACHINE_IS_PINBALL) -GAME(2002, playboyg_302,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02 Germany)", MACHINE_IS_PINBALL) -GAME(2002, playboyg_300,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00 Germany)", MACHINE_IS_PINBALL) -GAME(2002, playboyg_203,playboyg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03 Germany)", MACHINE_IS_PINBALL) -GAME(2002, playboyi, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00 Italy)", MACHINE_IS_PINBALL) -GAME(2002, playboyi_401,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01 Italy)", MACHINE_IS_PINBALL) -GAME(2002, playboyi_303,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03 Italy)", MACHINE_IS_PINBALL) -GAME(2002, playboyi_302,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02 Italy)", MACHINE_IS_PINBALL) -GAME(2002, playboyi_300,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00 Italy)", MACHINE_IS_PINBALL) -GAME(2002, playboyi_203,playboyi, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03 Italy)", MACHINE_IS_PINBALL) -GAME(2002, playboyl, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (5.00 Spain)", MACHINE_IS_PINBALL) -GAME(2002, playboyl_401,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (4.01 Spain)", MACHINE_IS_PINBALL) -GAME(2002, playboyl_303,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.03 Spain)", MACHINE_IS_PINBALL) -GAME(2002, playboyl_302,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.02 Spain)", MACHINE_IS_PINBALL) -GAME(2002, playboyl_300,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (3.00 Spain)", MACHINE_IS_PINBALL) -GAME(2002, playboyl_203,playboyl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Playboy (2.03 Spain)", MACHINE_IS_PINBALL) -GAME(2002, rctycn, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02)", MACHINE_IS_PINBALL) -GAME(2002, rctycn_701, rctycn, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01)", MACHINE_IS_PINBALL) -GAME(2002, rctycn_600, rctycn, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00)", MACHINE_IS_PINBALL) -GAME(2002, rctycn_400, rctycn, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00)", MACHINE_IS_PINBALL) -GAME(2002, rctnew, rctycn, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (ARM7 Sound Board)", MACHINE_IS_PINBALL) -GAME(2002, rctycng, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Germany)", MACHINE_IS_PINBALL) -GAME(2002, rctycng_701,rctycng, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Germany)", MACHINE_IS_PINBALL) -GAME(2002, rctycng_400,rctycng, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Germany)", MACHINE_IS_PINBALL) -GAME(2002, rctycnf, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 France)", MACHINE_IS_PINBALL) -GAME(2002, rctycnf_701,rctycnf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 France)", MACHINE_IS_PINBALL) -GAME(2002, rctycnf_600,rctycnf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00 France)", MACHINE_IS_PINBALL) -GAME(2002, rctycnf_400,rctycnf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 France)", MACHINE_IS_PINBALL) -GAME(2002, rctycni, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Italy)", MACHINE_IS_PINBALL) -GAME(2002, rctycni_701,rctycni, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Italy)", MACHINE_IS_PINBALL) -GAME(2002, rctycni_600,rctycni, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00 Italy)", MACHINE_IS_PINBALL) -GAME(2002, rctycni_400,rctycni, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Italy)", MACHINE_IS_PINBALL) -GAME(2002, rctycnl, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Spain)", MACHINE_IS_PINBALL) -GAME(2002, rctycnl_701,rctycnl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Spain)", MACHINE_IS_PINBALL) -GAME(2002, rctycnl_600,rctycnl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00 Spain)", MACHINE_IS_PINBALL) -GAME(2002, rctycnl_400,rctycnl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Spain)", MACHINE_IS_PINBALL) -GAME(2000, shrkysht, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.11)", MACHINE_IS_PINBALL) -GAME(2000, shrky_207, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.07)", MACHINE_IS_PINBALL) -GAME(2001, shrknew, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (ARM7 Sound Board)", MACHINE_IS_PINBALL) -GAME(2001, shrkygr, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.11 Germany)", MACHINE_IS_PINBALL) -GAME(2001, shrkygr_207,shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.07 Germany)", MACHINE_IS_PINBALL) -GAME(2001, shrkyfr, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.11 France)", MACHINE_IS_PINBALL) -GAME(2001, shrkyfr_207,shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.07 France)", MACHINE_IS_PINBALL) -GAME(2001, shrkyit, shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.11 Italy)", MACHINE_IS_PINBALL) -GAME(2001, shrkyit_207,shrkysht, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Sharkey's Shootout (2.07 Italy)", MACHINE_IS_PINBALL) -GAME(1999, sprk_103, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "South Park (1.03)", MACHINE_IS_PINBALL) -GAME(1999, sprk_096, sprk_103, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "South Park (0.96)", MACHINE_IS_PINBALL) -GAME(1999, sprk_090, sprk_103, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "South Park (0.90)", MACHINE_IS_PINBALL) -GAME(1997, spacejam, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Space Jam (3.00)", MACHINE_IS_PINBALL) -GAME(1997, spacejam_200,spacejam, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Space Jam (2.00)", MACHINE_IS_PINBALL) -GAME(1997, spacejmg, spacejam, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Space Jam (3.00 Germany)", MACHINE_IS_PINBALL) -GAME(1997, spacejmf, spacejam, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Space Jam (3.00 France)", MACHINE_IS_PINBALL) -GAME(1997, spacejmi, spacejam, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Space Jam (3.00 Italy)", MACHINE_IS_PINBALL) -GAME(1997, swtril43, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Star Wars Trilogy (4.03)", MACHINE_IS_PINBALL) -GAME(1997, swtril41, swtril43, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Star Wars Trilogy (4.01)", MACHINE_IS_PINBALL) -GAME(1997, startrp, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Starship Troopers (2.01)", MACHINE_IS_PINBALL) -GAME(1997, startrp2, startrp, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Starship Troopers (2.00)", MACHINE_IS_PINBALL) -GAME(1999, strikext, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (1.02)", MACHINE_IS_PINBALL) -GAME(1999, strknew, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (ARM7 Sound Board)", MACHINE_IS_PINBALL) -GAME(1999, strxt_uk, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (UK)", MACHINE_IS_PINBALL) -GAME(1999, strxt_gr, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (Germany)", MACHINE_IS_PINBALL) -GAME(1999, strxt_fr, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (France)", MACHINE_IS_PINBALL) -GAME(1999, strxt_it, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (Italy)", MACHINE_IS_PINBALL) -GAME(1999, strxt_sp, strikext, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Striker Xtreme (Spain)", MACHINE_IS_PINBALL) -GAME(2003, term3, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00)", MACHINE_IS_PINBALL) -GAME(2003, term3_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01)", MACHINE_IS_PINBALL) -GAME(2003, term3_205, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05)", MACHINE_IS_PINBALL) -GAME(2003, t3new, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (ARM7 Sound Board)", MACHINE_IS_PINBALL) -GAME(2003, term3g, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Germany)", MACHINE_IS_PINBALL) -GAME(2003, term3g_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Germany)", MACHINE_IS_PINBALL) -GAME(2003, term3l, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Spain)", MACHINE_IS_PINBALL) -GAME(2003, term3l_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Spain)", MACHINE_IS_PINBALL) -GAME(2003, term3l_205, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 Spain)", MACHINE_IS_PINBALL) -GAME(2003, term3f, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 France)", MACHINE_IS_PINBALL) -GAME(2003, term3f_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 France)", MACHINE_IS_PINBALL) -GAME(2003, term3f_205, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 France)", MACHINE_IS_PINBALL) -GAME(2003, term3i, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Italy)", MACHINE_IS_PINBALL) -GAME(2003, term3i_301, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Italy)", MACHINE_IS_PINBALL) -GAME(2003, term3i_205, term3, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 Italy)", MACHINE_IS_PINBALL) -GAME(1997, jplstw22, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "The Lost World: Jurassic Park (2.02)", MACHINE_IS_PINBALL) -GAME(1997, jplstw20, jplstw22, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "The Lost World: Jurassic Park (2.00)", MACHINE_IS_PINBALL) -GAME(2003, simpprty, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00)", MACHINE_IS_PINBALL) -GAME(2003, simpprty_400,simpprty, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00)", MACHINE_IS_PINBALL) -GAME(2003, simpprty_300,simpprty, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00)", MACHINE_IS_PINBALL) -GAME(2003, simpprty_204,simpprty, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04)", MACHINE_IS_PINBALL) -GAME(2003, simpnew, simpprty, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (ARM7 Sound Board)", MACHINE_IS_PINBALL) -GAME(2003, simpprtg, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Germany)", MACHINE_IS_PINBALL) -GAME(2003, simpprtg_400,simpprtg, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Germany)", MACHINE_IS_PINBALL) -GAME(2003, simpprtl, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Spain)", MACHINE_IS_PINBALL) -GAME(2003, simpprtl_400,simpprtl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Spain)", MACHINE_IS_PINBALL) -GAME(2003, simpprtl_300,simpprtl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00 Spain)", MACHINE_IS_PINBALL) -GAME(2003, simpprtl_204,simpprtl, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04 Spain)", MACHINE_IS_PINBALL) -GAME(2003, simpprtf, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 France)", MACHINE_IS_PINBALL) -GAME(2003, simpprtf_400,simpprtf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 France)", MACHINE_IS_PINBALL) -GAME(2003, simpprtf_300,simpprtf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00 France)", MACHINE_IS_PINBALL) -GAME(2003, simpprtf_204,simpprtf, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04 France)", MACHINE_IS_PINBALL) -GAME(2003, simpprti, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Italy)", MACHINE_IS_PINBALL) -GAME(2003, simpprti_400,simpprti, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Italy)", MACHINE_IS_PINBALL) -GAME(2003, simpprti_300,simpprti, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00 Italy)", MACHINE_IS_PINBALL) -GAME(2003, simpprti_204,simpprti, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04 Italy)", MACHINE_IS_PINBALL) -GAME(1997, xfilesp, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "X-Files (3.03)", MACHINE_IS_PINBALL) -GAME(1997, xfilespf, xfilesp, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "X-Files (3.03 France)", MACHINE_IS_PINBALL) -GAME(1997, xfiles2, xfilesp, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "X-Files (2.04)", MACHINE_IS_PINBALL) -GAME(1997, xfiles20, xfilesp, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "X-Files (2.00)", MACHINE_IS_PINBALL) -GAME(1996, twst_405, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Twister (4.05)", MACHINE_IS_PINBALL) -GAME(1996, twst_404, twst_405, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Twister (4.04)", MACHINE_IS_PINBALL) -GAME(1996, twst_300, twst_405, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Twister (3.00)", MACHINE_IS_PINBALL) -GAME(1998, viprsega, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Viper Night Drivin' (2.01)", MACHINE_IS_PINBALL) -GAME(1998, viprsega_102,viprsega, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Viper Night Drivin' (1.02)", MACHINE_IS_PINBALL) -GAME(1998, ctchzdlx, ctcheese, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Cut The Cheese Deluxe (Redemption)", MACHINE_IS_PINBALL) -GAME(1998, titanic, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Titanic (Coin dropper)", MACHINE_IS_PINBALL) -GAME(2002, monopred, 0, whitestar, whitestar, driver_device, 0, ROT0, "Stern", "Monopoly (Coin dropper)", MACHINE_IS_PINBALL) -GAME(1998, wackadoo, 0, whitestar, whitestar, driver_device, 0, ROT0, "Sega", "Wack-A-Doodle-Doo (Redemption)", MACHINE_IS_PINBALL) +GAME(1995, apollo13, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Apollo 13 (5.01)", MACHINE_IS_PINBALL) +GAME(1995, apollo13_d4, apollo13, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Apollo 13 (5.01, Display 4.01)", MACHINE_IS_PINBALL) +GAME(1995, apollo13_20, apollo13, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Apollo 13 (2.03)", MACHINE_IS_PINBALL) +GAME(1995, apollo13_10, apollo13, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Apollo 13 (1.00)", MACHINE_IS_PINBALL) +GAME(2001, austin, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Austin Powers (3.02)", MACHINE_IS_PINBALL) +GAME(2001, aust301, austin, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Austin Powers (3.01)", MACHINE_IS_PINBALL) +GAME(2001, aust300, austin, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Austin Powers (3.00)", MACHINE_IS_PINBALL) +GAME(2001, aust201, austin, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Austin Powers (2.01)", MACHINE_IS_PINBALL) +GAME(2001, austnew, austin, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Austin Powers (ARM7 Sound Board)", MACHINE_IS_PINBALL) +GAME(2001, austinf, austin, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Austin Powers (France)", MACHINE_IS_PINBALL) +GAME(2001, austing, austin, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Austin Powers (Germany)", MACHINE_IS_PINBALL) +GAME(2001, austini, austin, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Austin Powers (Italy)", MACHINE_IS_PINBALL) +GAME(1998, godzillp, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Godzilla (Pinball, 2.05)", MACHINE_IS_PINBALL) +GAME(1998, godzillp_100, godzillp, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Godzilla (Pinball, 1.00)", MACHINE_IS_PINBALL) +GAME(1998, godzillp_090, godzillp, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Godzilla (Pinball, 0.90)", MACHINE_IS_PINBALL) +GAME(1996, gldneye, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Goldeneye", MACHINE_IS_PINBALL) +GAME(1998, goldcue, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Golden Cue", MACHINE_IS_PINBALL) +GAME(1999, harl_a13, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Harley Davidson (1.03)", MACHINE_IS_PINBALL) +GAME(1999, harl_u13, harl_a13, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Harley Davidson (1.03 UK)", MACHINE_IS_PINBALL) +GAME(1999, harl_a10, harl_a13, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Harley Davidson (1.03 Display rev. 1.00)", MACHINE_IS_PINBALL) +GAME(1999, harl_f13, harl_a13, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Harley Davidson (1.03 France)", MACHINE_IS_PINBALL) +GAME(1999, harl_g13, harl_a13, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Harley Davidson (1.03 Germany)", MACHINE_IS_PINBALL) +GAME(1999, harl_i13, harl_a13, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Harley Davidson (1.03 Italy)", MACHINE_IS_PINBALL) +GAME(1999, harl_l13, harl_a13, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Harley Davidson (1.03 Spain)", MACHINE_IS_PINBALL) +GAME(2004, harl_a40, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (4.00)", MACHINE_IS_PINBALL) +GAME(2004, harl_f40, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (4.00 France)", MACHINE_IS_PINBALL) +GAME(2004, harl_g40, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (4.00 Germany)", MACHINE_IS_PINBALL) +GAME(2004, harl_i40, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (4.00 Italy)", MACHINE_IS_PINBALL) +GAME(2004, harl_l40, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (4.00 Spain)", MACHINE_IS_PINBALL) +GAME(2004, harl_a30, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (3.00)", MACHINE_IS_PINBALL) +GAME(2004, harl_f30, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (3.00 France)", MACHINE_IS_PINBALL) +GAME(2004, harl_g30, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (3.00 Germany)", MACHINE_IS_PINBALL) +GAME(2004, harl_i30, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (3.00 Italy)", MACHINE_IS_PINBALL) +GAME(2004, harl_l30, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (3.00 Spain)", MACHINE_IS_PINBALL) +GAME(2003, harl_a18, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (1.08)", MACHINE_IS_PINBALL) +GAME(2003, harl_f18, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (1.08 France)", MACHINE_IS_PINBALL) +GAME(2003, harl_g18, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (1.08 Germany)", MACHINE_IS_PINBALL) +GAME(2003, harl_i18, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (1.08 Italy)", MACHINE_IS_PINBALL) +GAME(2003, harl_l18, harl_a40, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Harley Davidson (1.08 Spain)", MACHINE_IS_PINBALL) +GAME(2001, hirolcas, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "High Roller Casino (3.00)", MACHINE_IS_PINBALL) +GAME(2001, hironew, hirolcas, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "High Roller Casino (ARM7 Sound Board)", MACHINE_IS_PINBALL) +GAME(2001, hirolcat, hirolcas, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "High Roller Casino (3.00) TEST", MACHINE_IS_PINBALL) +GAME(2001, hirolcas_210, hirolcas, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "High Roller Casino (2.10)", MACHINE_IS_PINBALL) +GAME(2001, hirol_fr, hirolcas, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "High Roller Casino (3.00 France)", MACHINE_IS_PINBALL) +GAME(2001, hirol_gr, hirolcas, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "High Roller Casino (3.00 Germany)", MACHINE_IS_PINBALL) +GAME(2001, hirol_gr_210, hirolcas, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "High Roller Casino (2.10 Germany)", MACHINE_IS_PINBALL) +GAME(2001, hirol_it, hirolcas, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "High Roller Casino (3.00 Italy)", MACHINE_IS_PINBALL) +GAME(1996, id4, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Independence Day (v2.02)", MACHINE_IS_PINBALL) +GAME(1996, id4f, id4, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Independence Day (v2.02 France)", MACHINE_IS_PINBALL) +GAME(1996, id4_201, id4, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Independence Day (v2.01)", MACHINE_IS_PINBALL) +GAME(1996, id4f_201, id4, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Independence Day (v2.01 France)", MACHINE_IS_PINBALL) +GAME(1998, lostspc, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Lost in Space (1.01)", MACHINE_IS_PINBALL) +GAME(1998, lostspcf, lostspc, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Lost in Space (1.01 France)", MACHINE_IS_PINBALL) +GAME(1998, lostspcg, lostspc, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Lost in Space (1.01 Germany)", MACHINE_IS_PINBALL) +GAME(1998, lostspc_d1, lostspc, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Lost in Space (1.01, Display 1.01)", MACHINE_IS_PINBALL) +GAME(2001, monopolp, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (3.20)", MACHINE_IS_PINBALL) +GAME(2002, monop303, monopolp, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (3.03)", MACHINE_IS_PINBALL) +GAME(2002, monop301, monopolp, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (3.01)", MACHINE_IS_PINBALL) +GAME(2002, monop251, monopolp, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (2.51)", MACHINE_IS_PINBALL) +GAME(2002, monop233, monopolp, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (2.33)", MACHINE_IS_PINBALL) +GAME(2002, monopolf, monopolp, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (France)", MACHINE_IS_PINBALL) +GAME(2002, monopolg, monopolp, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (Germany)", MACHINE_IS_PINBALL) +GAME(2002, monopoli, monopolp, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (Italy)", MACHINE_IS_PINBALL) +GAME(2002, monopoll, monopolp, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (Spain)", MACHINE_IS_PINBALL) +GAME(2002, mononew, monopolp, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (ARM7 Sound Board)", MACHINE_IS_PINBALL) +GAME(2001, nfl, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "NFL", MACHINE_IS_PINBALL) +GAME(2002, playboys, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (5.00)", MACHINE_IS_PINBALL) +GAME(2002, playboys_401, playboys, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (4.01)", MACHINE_IS_PINBALL) +GAME(2002, playboys_303, playboys, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.03)", MACHINE_IS_PINBALL) +GAME(2002, playboys_302, playboys, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.02)", MACHINE_IS_PINBALL) +GAME(2002, playboys_300, playboys, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.00)", MACHINE_IS_PINBALL) +GAME(2002, playboys_203, playboys, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (2.03)", MACHINE_IS_PINBALL) +GAME(2002, playnew, playboys, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (ARM7 Sound Board)", MACHINE_IS_PINBALL) +GAME(2002, playboyf, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (5.00 France)", MACHINE_IS_PINBALL) +GAME(2002, playboyf_401, playboyf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (4.01 France)", MACHINE_IS_PINBALL) +GAME(2002, playboyf_303, playboyf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.03 France)", MACHINE_IS_PINBALL) +GAME(2002, playboyf_302, playboyf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.02 France)", MACHINE_IS_PINBALL) +GAME(2002, playboyf_300, playboyf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.00 France)", MACHINE_IS_PINBALL) +GAME(2002, playboyf_203, playboyf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (2.03 France)", MACHINE_IS_PINBALL) +GAME(2002, playboyg, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (5.00 Germany)", MACHINE_IS_PINBALL) +GAME(2002, playboyg_401, playboyg, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (4.01 Germany)", MACHINE_IS_PINBALL) +GAME(2002, playboyg_303, playboyg, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.03 Germany)", MACHINE_IS_PINBALL) +GAME(2002, playboyg_302, playboyg, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.02 Germany)", MACHINE_IS_PINBALL) +GAME(2002, playboyg_300, playboyg, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.00 Germany)", MACHINE_IS_PINBALL) +GAME(2002, playboyg_203, playboyg, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (2.03 Germany)", MACHINE_IS_PINBALL) +GAME(2002, playboyi, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (5.00 Italy)", MACHINE_IS_PINBALL) +GAME(2002, playboyi_401, playboyi, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (4.01 Italy)", MACHINE_IS_PINBALL) +GAME(2002, playboyi_303, playboyi, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.03 Italy)", MACHINE_IS_PINBALL) +GAME(2002, playboyi_302, playboyi, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.02 Italy)", MACHINE_IS_PINBALL) +GAME(2002, playboyi_300, playboyi, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.00 Italy)", MACHINE_IS_PINBALL) +GAME(2002, playboyi_203, playboyi, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (2.03 Italy)", MACHINE_IS_PINBALL) +GAME(2002, playboyl, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (5.00 Spain)", MACHINE_IS_PINBALL) +GAME(2002, playboyl_401, playboyl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (4.01 Spain)", MACHINE_IS_PINBALL) +GAME(2002, playboyl_303, playboyl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.03 Spain)", MACHINE_IS_PINBALL) +GAME(2002, playboyl_302, playboyl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.02 Spain)", MACHINE_IS_PINBALL) +GAME(2002, playboyl_300, playboyl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (3.00 Spain)", MACHINE_IS_PINBALL) +GAME(2002, playboyl_203, playboyl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Playboy (2.03 Spain)", MACHINE_IS_PINBALL) +GAME(2002, rctycn, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02)", MACHINE_IS_PINBALL) +GAME(2002, rctycn_701, rctycn, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01)", MACHINE_IS_PINBALL) +GAME(2002, rctycn_600, rctycn, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00)", MACHINE_IS_PINBALL) +GAME(2002, rctycn_400, rctycn, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00)", MACHINE_IS_PINBALL) +GAME(2002, rctnew, rctycn, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (ARM7 Sound Board)", MACHINE_IS_PINBALL) +GAME(2002, rctycng, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Germany)", MACHINE_IS_PINBALL) +GAME(2002, rctycng_701, rctycng, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Germany)", MACHINE_IS_PINBALL) +GAME(2002, rctycng_400, rctycng, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Germany)", MACHINE_IS_PINBALL) +GAME(2002, rctycnf, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 France)", MACHINE_IS_PINBALL) +GAME(2002, rctycnf_701, rctycnf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 France)", MACHINE_IS_PINBALL) +GAME(2002, rctycnf_600, rctycnf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00 France)", MACHINE_IS_PINBALL) +GAME(2002, rctycnf_400, rctycnf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 France)", MACHINE_IS_PINBALL) +GAME(2002, rctycni, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Italy)", MACHINE_IS_PINBALL) +GAME(2002, rctycni_701, rctycni, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Italy)", MACHINE_IS_PINBALL) +GAME(2002, rctycni_600, rctycni, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00 Italy)", MACHINE_IS_PINBALL) +GAME(2002, rctycni_400, rctycni, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Italy)", MACHINE_IS_PINBALL) +GAME(2002, rctycnl, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.02 Spain)", MACHINE_IS_PINBALL) +GAME(2002, rctycnl_701, rctycnl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (7.01 Spain)", MACHINE_IS_PINBALL) +GAME(2002, rctycnl_600, rctycnl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (6.00 Spain)", MACHINE_IS_PINBALL) +GAME(2002, rctycnl_400, rctycnl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Roller Coaster Tycoon (4.00 Spain)", MACHINE_IS_PINBALL) +GAME(2000, shrkysht, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Sharkey's Shootout (2.11)", MACHINE_IS_PINBALL) +GAME(2000, shrky_207, shrkysht, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Sharkey's Shootout (2.07)", MACHINE_IS_PINBALL) +GAME(2001, shrknew, shrkysht, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Sharkey's Shootout (ARM7 Sound Board)", MACHINE_IS_PINBALL) +GAME(2001, shrkygr, shrkysht, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Sharkey's Shootout (2.11 Germany)", MACHINE_IS_PINBALL) +GAME(2001, shrkygr_207, shrkysht, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Sharkey's Shootout (2.07 Germany)", MACHINE_IS_PINBALL) +GAME(2001, shrkyfr, shrkysht, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Sharkey's Shootout (2.11 France)", MACHINE_IS_PINBALL) +GAME(2001, shrkyfr_207, shrkysht, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Sharkey's Shootout (2.07 France)", MACHINE_IS_PINBALL) +GAME(2001, shrkyit, shrkysht, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Sharkey's Shootout (2.11 Italy)", MACHINE_IS_PINBALL) +GAME(2001, shrkyit_207, shrkysht, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Sharkey's Shootout (2.07 Italy)", MACHINE_IS_PINBALL) +GAME(1999, sprk_103, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "South Park (1.03)", MACHINE_IS_PINBALL) +GAME(1999, sprk_096, sprk_103, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "South Park (0.96)", MACHINE_IS_PINBALL) +GAME(1999, sprk_090, sprk_103, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "South Park (0.90)", MACHINE_IS_PINBALL) +GAME(1997, spacejam, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Space Jam (3.00)", MACHINE_IS_PINBALL) +GAME(1997, spacejam_200 ,spacejam, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Space Jam (2.00)", MACHINE_IS_PINBALL) +GAME(1997, spacejmg, spacejam, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Space Jam (3.00 Germany)", MACHINE_IS_PINBALL) +GAME(1997, spacejmf, spacejam, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Space Jam (3.00 France)", MACHINE_IS_PINBALL) +GAME(1997, spacejmi, spacejam, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Space Jam (3.00 Italy)", MACHINE_IS_PINBALL) +GAME(1997, swtril43, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Star Wars Trilogy (4.03)", MACHINE_IS_PINBALL) +GAME(1997, swtril41, swtril43, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Star Wars Trilogy (4.01)", MACHINE_IS_PINBALL) +GAME(1997, startrp, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Starship Troopers (2.01)", MACHINE_IS_PINBALL) +GAME(1997, startrp2, startrp, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Starship Troopers (2.00)", MACHINE_IS_PINBALL) +GAME(1999, strikext, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Striker Xtreme (1.02)", MACHINE_IS_PINBALL) +GAME(1999, strknew, strikext, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Striker Xtreme (ARM7 Sound Board)", MACHINE_IS_PINBALL) +GAME(1999, strxt_uk, strikext, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Striker Xtreme (UK)", MACHINE_IS_PINBALL) +GAME(1999, strxt_gr, strikext, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Striker Xtreme (Germany)", MACHINE_IS_PINBALL) +GAME(1999, strxt_fr, strikext, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Striker Xtreme (France)", MACHINE_IS_PINBALL) +GAME(1999, strxt_it, strikext, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Striker Xtreme (Italy)", MACHINE_IS_PINBALL) +GAME(1999, strxt_sp, strikext, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Striker Xtreme (Spain)", MACHINE_IS_PINBALL) +GAME(2003, term3, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00)", MACHINE_IS_PINBALL) +GAME(2003, term3_301, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01)", MACHINE_IS_PINBALL) +GAME(2003, term3_205, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05)", MACHINE_IS_PINBALL) +GAME(2003, t3new, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (ARM7 Sound Board)", MACHINE_IS_PINBALL) +GAME(2003, term3g, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Germany)", MACHINE_IS_PINBALL) +GAME(2003, term3g_301, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Germany)", MACHINE_IS_PINBALL) +GAME(2003, term3l, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Spain)", MACHINE_IS_PINBALL) +GAME(2003, term3l_301, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Spain)", MACHINE_IS_PINBALL) +GAME(2003, term3l_205, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 Spain)", MACHINE_IS_PINBALL) +GAME(2003, term3f, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 France)", MACHINE_IS_PINBALL) +GAME(2003, term3f_301, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 France)", MACHINE_IS_PINBALL) +GAME(2003, term3f_205, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 France)", MACHINE_IS_PINBALL) +GAME(2003, term3i, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (4.00 Italy)", MACHINE_IS_PINBALL) +GAME(2003, term3i_301, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (3.01 Italy)", MACHINE_IS_PINBALL) +GAME(2003, term3i_205, term3, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Terminator 3: Rise of the Machines (2.05 Italy)", MACHINE_IS_PINBALL) +GAME(1997, jplstw22, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "The Lost World: Jurassic Park (2.02)", MACHINE_IS_PINBALL) +GAME(1997, jplstw20, jplstw22, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "The Lost World: Jurassic Park (2.00)", MACHINE_IS_PINBALL) +GAME(2003, simpprty, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00)", MACHINE_IS_PINBALL) +GAME(2003, simpprty_400, simpprty, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00)", MACHINE_IS_PINBALL) +GAME(2003, simpprty_300, simpprty, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00)", MACHINE_IS_PINBALL) +GAME(2003, simpprty_204, simpprty, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04)", MACHINE_IS_PINBALL) +GAME(2003, simpnew, simpprty, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (ARM7 Sound Board)", MACHINE_IS_PINBALL) +GAME(2003, simpprtg, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Germany)", MACHINE_IS_PINBALL) +GAME(2003, simpprtg_400, simpprtg, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Germany)", MACHINE_IS_PINBALL) +GAME(2003, simpprtl, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Spain)", MACHINE_IS_PINBALL) +GAME(2003, simpprtl_400, simpprtl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Spain)", MACHINE_IS_PINBALL) +GAME(2003, simpprtl_300, simpprtl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00 Spain)", MACHINE_IS_PINBALL) +GAME(2003, simpprtl_204, simpprtl, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04 Spain)", MACHINE_IS_PINBALL) +GAME(2003, simpprtf, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 France)", MACHINE_IS_PINBALL) +GAME(2003, simpprtf_400, simpprtf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 France)", MACHINE_IS_PINBALL) +GAME(2003, simpprtf_300, simpprtf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00 France)", MACHINE_IS_PINBALL) +GAME(2003, simpprtf_204, simpprtf, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04 France)", MACHINE_IS_PINBALL) +GAME(2003, simpprti, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (5.00 Italy)", MACHINE_IS_PINBALL) +GAME(2003, simpprti_400, simpprti, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (4.00 Italy)", MACHINE_IS_PINBALL) +GAME(2003, simpprti_300, simpprti, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (3.00 Italy)", MACHINE_IS_PINBALL) +GAME(2003, simpprti_204, simpprti, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "The Simpsons Pinball Party (2.04 Italy)", MACHINE_IS_PINBALL) +GAME(1997, xfilesp, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "X-Files (3.03)", MACHINE_IS_PINBALL) +GAME(1997, xfilespf, xfilesp, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "X-Files (3.03 France)", MACHINE_IS_PINBALL) +GAME(1997, xfiles2, xfilesp, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "X-Files (2.04)", MACHINE_IS_PINBALL) +GAME(1997, xfiles20, xfilesp, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "X-Files (2.00)", MACHINE_IS_PINBALL) +GAME(1996, twst_405, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Twister (4.05)", MACHINE_IS_PINBALL) +GAME(1996, twst_404, twst_405, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Twister (4.04)", MACHINE_IS_PINBALL) +GAME(1996, twst_300, twst_405, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Twister (3.00)", MACHINE_IS_PINBALL) +GAME(1998, viprsega, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Viper Night Drivin' (2.01)", MACHINE_IS_PINBALL) +GAME(1998, viprsega_102, viprsega, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Viper Night Drivin' (1.02)", MACHINE_IS_PINBALL) +GAME(1998, ctchzdlx, ctcheese, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Cut The Cheese Deluxe (Redemption)", MACHINE_IS_PINBALL) +GAME(1998, titanic, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Titanic (Coin dropper)", MACHINE_IS_PINBALL) +GAME(2002, monopred, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Stern", "Monopoly (Coin dropper)", MACHINE_IS_PINBALL) +GAME(1998, wackadoo, 0, whitestar, whitestar, whitestar_state, 0, ROT0, "Sega", "Wack-A-Doodle-Doo (Redemption)", MACHINE_IS_PINBALL) diff --git a/src/mame/drivers/wicat.cpp b/src/mame/drivers/wicat.cpp index c4823140c4a..0eabbc0756e 100644 --- a/src/mame/drivers/wicat.cpp +++ b/src/mame/drivers/wicat.cpp @@ -121,7 +121,7 @@ public: required_device m_videosram; required_device m_palette; required_memory_region m_chargen; - required_device m_fdc; + required_device m_fdc; uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return 0; } virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; @@ -277,6 +277,10 @@ static INPUT_PORTS_START( wicat ) INPUT_PORTS_END +static SLOT_INTERFACE_START(wicat_floppies) + SLOT_INTERFACE("525qd", FLOPPY_525_QD) +SLOT_INTERFACE_END + void wicat_state::driver_start() { m_video_timer = timer_alloc(VIDEO_TIMER); @@ -759,7 +763,7 @@ I8275_DRAW_CHARACTER_MEMBER(wicat_state::wicat_display_pixels) } } -static MACHINE_CONFIG_START( wicat, wicat_state ) +static MACHINE_CONFIG_START( wicat ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(wicat_mem) @@ -900,8 +904,16 @@ static MACHINE_CONFIG_START( wicat, wicat_state ) MCFG_CPU_PROGRAM_MAP(wicat_wd1000_mem) MCFG_CPU_IO_MAP(wicat_wd1000_io) MCFG_FD1795_ADD("fdc",XTAL_8MHz) - - + MCFG_FLOPPY_DRIVE_ADD("fdc:0", wicat_floppies, "525qd", floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD("fdc:1", wicat_floppies, nullptr, floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD("fdc:2", wicat_floppies, nullptr, floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD("fdc:3", wicat_floppies, nullptr, floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + + MCFG_SOFTWARE_LIST_ADD("flop_list", "wicat") MACHINE_CONFIG_END /* ROM definition */ @@ -989,5 +1001,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, wicat, 0, 0, wicat, wicat, driver_device, 0, "Millennium Systems", "Wicat System 150", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, wicat, 0, 0, wicat, wicat, wicat_state, 0, "Millennium Systems", "Wicat System 150", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/wico.cpp b/src/mame/drivers/wico.cpp index dfb546fe6ba..ad15cdbf6bf 100644 --- a/src/mame/drivers/wico.cpp +++ b/src/mame/drivers/wico.cpp @@ -427,7 +427,7 @@ void wico_state::machine_reset() } -static MACHINE_CONFIG_START( wico, wico_state ) +static MACHINE_CONFIG_START( wico ) /* basic machine hardware */ MCFG_CPU_ADD("ccpu", M6809, 10000000 / 8) MCFG_CPU_PROGRAM_MAP(ccpu_map) @@ -463,4 +463,4 @@ ROM_END / Big Top (1977) /-------------------------------------------------------------------*/ -GAME(1984, aftor, 0, wico, wico, driver_device, 0, ROT0, "Wico", "Af-Tor", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) +GAME(1984, aftor, 0, wico, wico, wico_state, 0, ROT0, "Wico", "Af-Tor", MACHINE_MECHANICAL | MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/wildpkr.cpp b/src/mame/drivers/wildpkr.cpp index 5218248e5e2..8b5d2e4073a 100644 --- a/src/mame/drivers/wildpkr.cpp +++ b/src/mame/drivers/wildpkr.cpp @@ -440,7 +440,7 @@ ADDRESS_MAP_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( wildpkr, wildpkr_state ) +static MACHINE_CONFIG_START( wildpkr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, MAIN_CLOCK) @@ -471,7 +471,7 @@ static MACHINE_CONFIG_START( wildpkr, wildpkr_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tabpkr, wildpkr_state ) +static MACHINE_CONFIG_START( tabpkr ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) @@ -579,6 +579,6 @@ DRIVER_INIT_MEMBER(wildpkr_state,wildpkr) * Game Drivers * *************************/ -/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 199?, wildpkr, 0, wildpkr, wildpkr, wildpkr_state, wildpkr, ROT0, "TAB Austria", "Wild Poker (ver. D 1.01)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1996, tabpkr, 0, tabpkr, tabpkr, wildpkr_state, wildpkr, ROT0, "TAB Austria", "Royal Poker V 1.85", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1996, tabpkr, 0, tabpkr, tabpkr, wildpkr_state, wildpkr, ROT0, "TAB Austria", "Royal Poker V 1.85", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp index c1fdbbfc83b..e5eeaf562e6 100644 --- a/src/mame/drivers/williams.cpp +++ b/src/mame/drivers/williams.cpp @@ -818,27 +818,26 @@ static INPUT_PORTS_START( jin ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_START("IN1") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x07, "A 2C/1C B 1C/3C" ) + PORT_DIPSETTING( 0x06, "A 2C/1C B 1C/1C" ) + PORT_DIPSETTING( 0x05, "A 1C/3C B 1C/3C" ) + PORT_DIPSETTING( 0x04, "A 1C/3C B 1C/1C" ) + PORT_DIPSETTING( 0x03, "A 1C/2C B 1C/3C" ) + PORT_DIPSETTING( 0x02, "A 1C/2C B 1C/1C" ) + PORT_DIPSETTING( 0x01, "A 1C/1C B 1C/3C" ) + PORT_DIPSETTING( 0x00, "A 1C/1C B 1C/1C" ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x08, "4" ) + PORT_DIPSETTING( 0x00, "3" ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x60, 0x60, "Level completed" ) + PORT_DIPSETTING( 0x60, "85%" ) + PORT_DIPSETTING( 0x40, "75%" ) + PORT_DIPSETTING( 0x20, "65%" ) + PORT_DIPSETTING( 0x00, "55%" ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -847,16 +846,14 @@ static INPUT_PORTS_START( jin ) PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) // coins don't work if you change this.. + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 ) // where is coin 2? + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1436,7 +1433,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( williams, williams_state ) +static MACHINE_CONFIG_START( williams ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/3/4) @@ -1594,7 +1591,7 @@ static MACHINE_CONFIG_DERIVED( playball, williams ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( blastkit, williams, blaster_state ) +static MACHINE_CONFIG_DERIVED( blastkit, williams ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1650,7 +1647,7 @@ static MACHINE_CONFIG_DERIVED( blaster, blastkit ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( williams2, williams2_state ) +static MACHINE_CONFIG_START( williams2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/3/4) @@ -1752,7 +1749,7 @@ static MACHINE_CONFIG_DERIVED( tshoot, williams2 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( joust2, williams2, joust2_state ) +static MACHINE_CONFIG_DERIVED( joust2, williams2 ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -1869,8 +1866,7 @@ ROM_END ROM_START( defenderj ) ROM_REGION( 0x19000, "maincpu", 0 ) ROM_LOAD( "DF1-1.E3", 0x0d000, 0x1000, CRC(8c04602b) SHA1(a8ed5afd0b276cebb479b1717666eaabbf75c6a5) ) //2532 - ROM_LOAD( "DF2-1.E2", 0x0e000, 0x1000, BAD_DUMP CRC(b1018914) SHA1(f036f3ef21e8992a1e086024c95ce7950230069e) ) //2532 - //ROM_LOAD( "defend.2", 0x0e000, 0x1000, CRC(89b75984) SHA1(a9481478da38f99efb67f0ecf82d084e14b93b42) ) // original defender ROM passes ROM test + ROM_LOAD( "DF2-1.E2", 0x0e000, 0x1000, CRC(89b75984) SHA1(a9481478da38f99efb67f0ecf82d084e14b93b42) ) //2532 ROM_LOAD( "DF3-1.E1", 0x0f000, 0x1000, CRC(94f51e9b) SHA1(a24cfc55de56a72758c76fe2a55f1ec6c353b16f) ) //2532 ROM_LOAD( "DF10-1.A1", 0x10000, 0x0800, CRC(12e2bd1c) SHA1(c2fdf2fced003a0acf037aa6fab141b04c1c81bd) ) //2716 ROM_LOAD( "DF7-1.B1", 0x10800, 0x0800, CRC(f1f88938) SHA1(26e48dfeefa0766837b1e762695b9532dbc8bc5e) ) //2716 @@ -3052,19 +3048,19 @@ DRIVER_INIT_MEMBER(williams_state,stargate) DRIVER_INIT_MEMBER(williams_state,robotron) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000); } DRIVER_INIT_MEMBER(williams_state,joust) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000); } DRIVER_INIT_MEMBER(williams_state,bubbles) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000); /* bubbles has a full 8-bit-wide CMOS */ m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc00, 0xcfff, write8_delegate(FUNC(williams_state::bubbles_cmos_w),this)); @@ -3073,25 +3069,25 @@ DRIVER_INIT_MEMBER(williams_state,bubbles) DRIVER_INIT_MEMBER(williams_state,splat) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0xc000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0xc000); } DRIVER_INIT_MEMBER(williams_state,sinistar) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0x7400); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0x7400); } DRIVER_INIT_MEMBER(williams_state,playball) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000); } DRIVER_INIT_MEMBER(blaster_state,blaster) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9700); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9700); } @@ -3099,7 +3095,7 @@ DRIVER_INIT_MEMBER(williams_state,spdball) { pia6821_device *pia_3 = machine().device("pia_3"); - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000); /* add a third PIA */ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc808, 0xc80b, read8_delegate(FUNC(pia6821_device::read), pia_3), write8_delegate(FUNC(pia6821_device::write), pia_3)); @@ -3114,21 +3110,21 @@ DRIVER_INIT_MEMBER(williams_state,spdball) DRIVER_INIT_MEMBER(williams_state,alienar) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000); m_maincpu->space(AS_PROGRAM).nop_write(0xcbff, 0xcbff); } DRIVER_INIT_MEMBER(williams_state,alienaru) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000); m_maincpu->space(AS_PROGRAM).nop_write(0xcbff, 0xcbff); } DRIVER_INIT_MEMBER(williams_state,lottofun) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000); } @@ -3141,28 +3137,28 @@ DRIVER_INIT_MEMBER(williams_state,lottofun) DRIVER_INIT_MEMBER(williams2_state,mysticm) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9000); CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_MYSTICM); } DRIVER_INIT_MEMBER(williams2_state,tshoot) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9000); CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_TSHOOT); } DRIVER_INIT_MEMBER(williams2_state,inferno) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9000); CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_TSHOOT); } DRIVER_INIT_MEMBER(joust2_state,joust2) { - CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000); + CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9000); CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_JOUST2); } @@ -3179,7 +3175,7 @@ GAME( 1980, defender, 0, defender, defender, williams_state, defe GAME( 1980, defenderg, defender, defender, defender, williams_state, defender, ROT0, "Williams", "Defender (Green label)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, defenderb, defender, defender, defender, williams_state, defender, ROT0, "Williams", "Defender (Blue label)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, defenderw, defender, defender, defender, williams_state, defender, ROT0, "Williams", "Defender (White label)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, defenderj, defender, defender, defender, williams_state, defender, ROT0, "Taito Corporation", "T.T. Defender", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump +GAME( 1980, defenderj, defender, defender, defender, williams_state, defender, ROT0, "Taito Corporation", "T.T. Defender", MACHINE_SUPPORTS_SAVE ) GAME( 1980, defndjeu, defender, defender, defender, williams_state, defndjeu, ROT0, "bootleg (Jeutel)", "Defender (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1980, tornado1, defender, defender, defender, williams_state, defndjeu, ROT0, "bootleg (Jeutel)", "Tornado (set 1, Defender bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, tornado2, defender, defender, defender, williams_state, defndjeu, ROT0, "bootleg (Jeutel)", "Tornado (set 2, Defender bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump? @@ -3189,15 +3185,15 @@ GAME( 1980, defcmnd, defender, defender, defender, williams_state, defe GAME( 1981, defence, defender, defender, defender, williams_state, defender, ROT0, "bootleg (Outer Limits)", "Defence Command (Defender bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, startrkd, defender, defender, defender, williams_state, defender, ROT0, "bootleg", "Star Trek (Defender bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, mayday, 0, defender, mayday, williams_state, mayday, ROT0, "Hoei", "Mayday (set 1)", MACHINE_SUPPORTS_SAVE ) // original by Hoei, which one of these 3 sets is bootleg/licensed/original is unknown -GAME( 1980, maydaya, mayday, defender, mayday, williams_state, mayday, ROT0, "Hoei", "Mayday (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, maydayb, mayday, defender, mayday, williams_state, mayday, ROT0, "Hoei", "Mayday (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1980, batlzone, mayday, defender, mayday, williams_state, mayday, ROT0, "bootleg (Video Game)", "Battle Zone (bootleg of Mayday)", MACHINE_SUPPORTS_SAVE ) +GAME( 1980, mayday, 0, defender, mayday, williams_state, mayday, ROT0, "Hoei", "Mayday (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) // \ original by Hoei, which one of these 3 sets is bootleg/licensed/original is unknown +GAME( 1980, maydaya, mayday, defender, mayday, williams_state, mayday, ROT0, "Hoei", "Mayday (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) // > these games have an unemulated protection chip of some sort which is hacked around in /machine/williams.cpp "mayday_protection_r" function +GAME( 1980, maydayb, mayday, defender, mayday, williams_state, mayday, ROT0, "Hoei", "Mayday (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) // / +GAME( 1980, batlzone, mayday, defender, mayday, williams_state, mayday, ROT0, "bootleg (Video Game)", "Battle Zone (bootleg of Mayday)", MACHINE_SUPPORTS_SAVE )// the bootleg may or may not use the same protection chip, or some hack around it. -GAME( 1981, colony7, 0, defender, colony7, williams_state, defender, ROT270, "Taito", "Colony 7 (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, colony7a, colony7, defender, colony7, williams_state, defender, ROT270, "Taito", "Colony 7 (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, colony7, 0, defender, colony7, williams_state, defender, ROT270, "Taito", "Colony 7 (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, colony7a, colony7, defender, colony7, williams_state, defender, ROT270, "Taito", "Colony 7 (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, jin, 0, jin, jin, williams_state, defender, ROT90, "Falcon", "Jin", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, jin, 0, jin, jin, williams_state, defender, ROT90, "Falcon", "Jin", MACHINE_SUPPORTS_SAVE ) @@ -3211,15 +3207,15 @@ GAME( 1987, robotron87, robotron, williams, robotron, williams_state, robo GAME( 2012, robotron12, robotron, williams, robotron, williams_state, robotron, ROT0, "hack", "Robotron: 2084 (2012 'wave 201 start' hack)", MACHINE_SUPPORTS_SAVE ) // includes sitc bug fix, used for competitive play. GAME( 2015, robotrontd, robotron, williams, robotron, williams_state, robotron, ROT0, "hack", "Robotron: 2084 (2015 'tie-die V2' hack)", MACHINE_SUPPORTS_SAVE ) // inc. sitc fix, mods by some of the original developers, see backstory here http://www.robotron2084guidebook.com/gameplay/raceto100million/robo2k14_tie-die-romset/ (I guess there's a tie-die V1 before it was released to the public?) -GAME( 1982, joust, 0, williams_muxed, joust, williams_state, joust, ROT0, "Williams", "Joust (White/Green label)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, joustr, joust, williams_muxed, joust, williams_state, joust, ROT0, "Williams", "Joust (Solid Red label)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, joustwr, joust, williams_muxed, joust, williams_state, joust, ROT0, "Williams", "Joust (White/Red label)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, joust, 0, williams_muxed, joust, williams_state, joust, ROT0, "Williams", "Joust (White/Green label)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, joustr, joust, williams_muxed, joust, williams_state, joust, ROT0, "Williams", "Joust (Solid Red label)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, joustwr, joust, williams_muxed, joust, williams_state, joust, ROT0, "Williams", "Joust (White/Red label)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bubbles, 0, williams, bubbles, williams_state, bubbles, ROT0, "Williams", "Bubbles", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bubblesr, bubbles, williams, bubbles, williams_state, bubbles, ROT0, "Williams", "Bubbles (Solid Red label)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bubblesp, bubbles, williams, bubbles, williams_state, bubbles, ROT0, "Williams", "Bubbles (prototype version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bubbles, 0, williams, bubbles, williams_state, bubbles, ROT0, "Williams", "Bubbles", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bubblesr, bubbles, williams, bubbles, williams_state, bubbles, ROT0, "Williams", "Bubbles (Solid Red label)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bubblesp, bubbles, williams, bubbles, williams_state, bubbles, ROT0, "Williams", "Bubbles (prototype version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, splat, 0, williams_muxed, splat, williams_state, splat, ROT0, "Williams", "Splat!", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, splat, 0, williams_muxed, splat, williams_state, splat, ROT0, "Williams", "Splat!", MACHINE_SUPPORTS_SAVE ) GAME( 1982, sinistar, 0, sinistar, sinistar, williams_state, sinistar, ROT270, "Williams", "Sinistar (revision 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, sinistar1, sinistar, sinistar, sinistar, williams_state, sinistar, ROT270, "Williams", "Sinistar (prototype version)", MACHINE_SUPPORTS_SAVE ) @@ -3227,14 +3223,14 @@ GAME( 1982, sinistar2, sinistar, sinistar, sinistar, williams_state, sini GAME( 1983, playball, 0, playball, playball, williams_state, playball, ROT270, "Williams", "PlayBall! (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, blaster, 0, blaster, blaster, blaster_state, blaster, ROT0, "Williams / Vid Kidz", "Blaster", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, blastero, blaster, blaster, blaster, blaster_state, blaster, ROT0, "Williams / Vid Kidz", "Blaster (location test)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, blaster, 0, blaster, blaster, blaster_state, blaster, ROT0, "Williams / Vid Kidz", "Blaster", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, blastero, blaster, blaster, blaster, blaster_state, blaster, ROT0, "Williams / Vid Kidz", "Blaster (location test)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, blasterkit, blaster, blastkit, blastkit, blaster_state, blaster, ROT0, "Williams / Vid Kidz", "Blaster (conversion kit)", MACHINE_SUPPORTS_SAVE ) // mono sound -GAME( 1985, spdball, 0, spdball, spdball, williams_state, spdball, ROT0, "Williams", "Speed Ball - Contest at Neonworld (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, spdball, 0, spdball, spdball, williams_state, spdball, ROT0, "Williams", "Speed Ball - Contest at Neonworld (prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, alienar, 0, williams_muxed, alienar, williams_state, alienar, ROT0, "Duncan Brown", "Alien Arena", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, alienaru, alienar, williams_muxed, alienar, williams_state, alienaru, ROT0, "Duncan Brown", "Alien Arena (Stargate upgrade)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, alienar, 0, williams_muxed, alienar, williams_state, alienar, ROT0, "Duncan Brown", "Alien Arena", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, alienaru, alienar, williams_muxed, alienar, williams_state, alienaru, ROT0, "Duncan Brown", "Alien Arena (Stargate upgrade)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, lottofun, 0, lottofun, lottofun, williams_state, lottofun, ROT0, "H.A.R. Management", "Lotto Fun", MACHINE_SUPPORTS_SAVE ) @@ -3244,9 +3240,9 @@ GAME( 1987, lottofun, 0, lottofun, lottofun, williams_state, lott GAME( 1983, mysticm, 0, mysticm, mysticm, williams2_state, mysticm, ROT0, "Williams", "Mystic Marathon", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE) GAME( 1983, mysticmp, mysticm, mysticm, mysticm, williams2_state, mysticm, ROT0, "Williams", "Mystic Marathon (prototype)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // newest roms are 'proto 6' ? -GAME( 1984, tshoot, 0, tshoot, tshoot, williams2_state, tshoot, ROT0, "Williams", "Turkey Shoot (prototype)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, tshoot, 0, tshoot, tshoot, williams2_state, tshoot, ROT0, "Williams", "Turkey Shoot (prototype)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, inferno, 0, williams2, inferno, williams2_state, inferno, ROT0, "Williams", "Inferno (Williams)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, joust2, 0, joust2, joust2, joust2_state, joust2, ROT270, "Williams", "Joust 2 - Survival of the Fittest (revision 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, joust2r1, joust2, joust2, joust2, joust2_state, joust2, ROT270, "Williams", "Joust 2 - Survival of the Fittest (revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, joust2, 0, joust2, joust2, joust2_state, joust2, ROT270, "Williams", "Joust 2 - Survival of the Fittest (revision 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, joust2r1, joust2, joust2, joust2, joust2_state, joust2, ROT270, "Williams", "Joust 2 - Survival of the Fittest (revision 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wink.cpp b/src/mame/drivers/wink.cpp index 3a9340da411..6ea8c59db63 100644 --- a/src/mame/drivers/wink.cpp +++ b/src/mame/drivers/wink.cpp @@ -354,7 +354,7 @@ void wink_state::machine_reset() m_sound_flag = 0; } -static MACHINE_CONFIG_START( wink, wink_state ) +static MACHINE_CONFIG_START( wink ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 12000000 / 4) MCFG_CPU_PROGRAM_MAP(wink_map) diff --git a/src/mame/drivers/wiping.cpp b/src/mame/drivers/wiping.cpp index 3ea4b14ff93..5f79e91e739 100644 --- a/src/mame/drivers/wiping.cpp +++ b/src/mame/drivers/wiping.cpp @@ -289,7 +289,7 @@ INTERRUPT_GEN_MEMBER(wiping_state::sound_timer_irq) -static MACHINE_CONFIG_START( wiping, wiping_state ) +static MACHINE_CONFIG_START( wiping ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,18432000/6) /* 3.072 MHz */ @@ -391,5 +391,5 @@ ROM_END -GAME( 1982, wiping, 0, wiping, wiping, driver_device, 0, ROT90, "Nichibutsu", "Wiping", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, rugrats, wiping, wiping, rugrats, driver_device, 0, ROT90, "Nichibutsu", "Rug Rats", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, wiping, 0, wiping, wiping, wiping_state, 0, ROT90, "Nichibutsu", "Wiping", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, rugrats, wiping, wiping, rugrats, wiping_state, 0, ROT90, "Nichibutsu", "Rug Rats", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/witch.cpp b/src/mame/drivers/witch.cpp index 4adc5f27bb4..c220eed5371 100644 --- a/src/mame/drivers/witch.cpp +++ b/src/mame/drivers/witch.cpp @@ -761,7 +761,7 @@ void witch_state::machine_reset() m_motor_active = (ioport("YM_PortB")->read() & 0x08) ? 0 : 1; } -static MACHINE_CONFIG_START( witch, witch_state ) +static MACHINE_CONFIG_START( witch ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz */ MCFG_CPU_PROGRAM_MAP(map_main) diff --git a/src/mame/drivers/wiz.cpp b/src/mame/drivers/wiz.cpp index e2892d43d29..3bfe462151d 100644 --- a/src/mame/drivers/wiz.cpp +++ b/src/mame/drivers/wiz.cpp @@ -784,7 +784,7 @@ INTERRUPT_GEN_MEMBER(wiz_state::wiz_sound_interrupt) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_START( kungfut, wiz_state ) +static MACHINE_CONFIG_START( kungfut ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz ??? */ @@ -1161,12 +1161,12 @@ DRIVER_INIT_MEMBER(wiz_state,stinger) } -GAME( 1983, stinger, 0, stinger, stinger, wiz_state, stinger, ROT90, "Seibu Denshi", "Stinger", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, stinger2, stinger, stinger, stinger2, wiz_state, stinger, ROT90, "Seibu Denshi", "Stinger (prototype?)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, scion, 0, scion, scion, driver_device, 0, ROT0, "Seibu Denshi", "Scion", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, scionc, scion, scion, scion, driver_device, 0, ROT0, "Seibu Denshi (Cinematronics license)", "Scion (Cinematronics)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, kungfut, 0, kungfut, kungfut, driver_device, 0, ROT0, "Seibu Kaihatsu", "Kung-Fu Taikun (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_MICROPHONE ) -GAME( 1984, kungfuta, kungfut, kungfut, kungfut, driver_device, 0, ROT0, "Seibu Kaihatsu", "Kung-Fu Taikun (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_MICROPHONE ) /* board was a bootleg but set might still be original */ -GAME( 1985, wiz, 0, wiz, wiz, driver_device, 0, ROT270, "Seibu Kaihatsu", "Wiz", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, wizt, wiz, wiz, wiz, driver_device, 0, ROT270, "Seibu Kaihatsu (Taito license)", "Wiz (Taito, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, wizta, wiz, wiz, wiz, driver_device, 0, ROT270, "Seibu Kaihatsu (Taito license)", "Wiz (Taito, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, stinger, 0, stinger, stinger, wiz_state, stinger, ROT90, "Seibu Denshi", "Stinger", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, stinger2, stinger, stinger, stinger2, wiz_state, stinger, ROT90, "Seibu Denshi", "Stinger (prototype?)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, scion, 0, scion, scion, wiz_state, 0, ROT0, "Seibu Denshi", "Scion", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, scionc, scion, scion, scion, wiz_state, 0, ROT0, "Seibu Denshi (Cinematronics license)", "Scion (Cinematronics)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, kungfut, 0, kungfut, kungfut, wiz_state, 0, ROT0, "Seibu Kaihatsu", "Kung-Fu Taikun (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_MICROPHONE ) +GAME( 1984, kungfuta, kungfut, kungfut, kungfut, wiz_state, 0, ROT0, "Seibu Kaihatsu", "Kung-Fu Taikun (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_MICROPHONE ) /* board was a bootleg but set might still be original */ +GAME( 1985, wiz, 0, wiz, wiz, wiz_state, 0, ROT270, "Seibu Kaihatsu", "Wiz", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, wizt, wiz, wiz, wiz, wiz_state, 0, ROT270, "Seibu Kaihatsu (Taito license)", "Wiz (Taito, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, wizta, wiz, wiz, wiz, wiz_state, 0, ROT270, "Seibu Kaihatsu (Taito license)", "Wiz (Taito, set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wmg.cpp b/src/mame/drivers/wmg.cpp index cbe0f878cce..b7ca9caa796 100644 --- a/src/mame/drivers/wmg.cpp +++ b/src/mame/drivers/wmg.cpp @@ -480,7 +480,7 @@ DRIVER_INIT_MEMBER( wmg_state, wmg ) membank("bank5")->configure_entries(0, 8, &cpu[0x2d000], 0x10000); // Code membank("bank6")->configure_entries(0, 8, &snd[0x10000], 0x1000); // Sound membank("bank7")->configure_entries(1, 4, &cpu[0x78000], 0x1000); // Defender roms - m_blitter_config = WILLIAMS_BLITTER_SC01; + m_blitter_config = WILLIAMS_BLITTER_SC1; m_blitter_clip_address = 0xc000; } @@ -489,7 +489,7 @@ DRIVER_INIT_MEMBER( wmg_state, wmg ) * Machine Driver * *************************************/ -static MACHINE_CONFIG_START( wmg, wmg_state ) +static MACHINE_CONFIG_START( wmg ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/3/4) diff --git a/src/mame/drivers/wms.cpp b/src/mame/drivers/wms.cpp index 01d9d085ce3..196d8b9f392 100644 --- a/src/mame/drivers/wms.cpp +++ b/src/mame/drivers/wms.cpp @@ -165,7 +165,7 @@ static GFXDECODE_START( wms ) GFXDECODE_END -static MACHINE_CONFIG_START( wms, wms_state ) +static MACHINE_CONFIG_START( wms ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I80188, MAIN_CLOCK ) // AMD N80C188-20, ( 40 MHz. internally divided by 2) MCFG_CPU_PROGRAM_MAP(wms_map) diff --git a/src/mame/drivers/wolfpack.cpp b/src/mame/drivers/wolfpack.cpp index ca8156a4e13..d158671c222 100644 --- a/src/mame/drivers/wolfpack.cpp +++ b/src/mame/drivers/wolfpack.cpp @@ -38,24 +38,28 @@ TIMER_CALLBACK_MEMBER(wolfpack_state::periodic_callback) if (scanline >= 262) scanline = 0; - timer_set(m_screen->time_until_pos(scanline), TIMER_PERIODIC, scanline); + m_periodic_timer->adjust(m_screen->time_until_pos(scanline), scanline); } +void wolfpack_state::machine_start() +{ + m_periodic_timer = timer_alloc(TIMER_PERIODIC); +} void wolfpack_state::machine_reset() { - timer_set(m_screen->time_until_pos(0), TIMER_PERIODIC); + m_periodic_timer->adjust(m_screen->time_until_pos(0)); } -CUSTOM_INPUT_MEMBER(wolfpack_state::wolfpack_dial_r) +CUSTOM_INPUT_MEMBER(wolfpack_state::dial_r) { int bit = (uintptr_t)param; return ((ioport("DIAL")->read() + bit) / 2) & 0x01; } -READ8_MEMBER(wolfpack_state::wolfpack_misc_r) +READ8_MEMBER(wolfpack_state::misc_r) { uint8_t val = 0; @@ -81,43 +85,43 @@ READ8_MEMBER(wolfpack_state::wolfpack_misc_r) } -WRITE8_MEMBER(wolfpack_state::wolfpack_high_explo_w){ } -WRITE8_MEMBER(wolfpack_state::wolfpack_sonar_ping_w){} -WRITE8_MEMBER(wolfpack_state::wolfpack_sirlat_w){} -WRITE8_MEMBER(wolfpack_state::wolfpack_pt_sound_w){} -WRITE8_MEMBER(wolfpack_state::wolfpack_launch_torpedo_w){} -WRITE8_MEMBER(wolfpack_state::wolfpack_low_explo_w){} -WRITE8_MEMBER(wolfpack_state::wolfpack_screw_cont_w){} -WRITE8_MEMBER(wolfpack_state::wolfpack_lamp_flash_w){} -WRITE8_MEMBER(wolfpack_state::wolfpack_warning_light_w){} -WRITE8_MEMBER(wolfpack_state::wolfpack_audamp_w){} +WRITE8_MEMBER(wolfpack_state::high_explo_w){ } +WRITE8_MEMBER(wolfpack_state::sonar_ping_w){} +WRITE8_MEMBER(wolfpack_state::sirlat_w){} +WRITE8_MEMBER(wolfpack_state::pt_sound_w){} +WRITE8_MEMBER(wolfpack_state::launch_torpedo_w){} +WRITE8_MEMBER(wolfpack_state::low_explo_w){} +WRITE8_MEMBER(wolfpack_state::screw_cont_w){} +WRITE8_MEMBER(wolfpack_state::lamp_flash_w){} +WRITE8_MEMBER(wolfpack_state::warning_light_w){} +WRITE8_MEMBER(wolfpack_state::audamp_w){} -WRITE8_MEMBER(wolfpack_state::wolfpack_word_w) +WRITE8_MEMBER(wolfpack_state::word_w) { /* latch word from bus into temp register, and place on s14001a input bus */ /* there is no real need for a temp register at all, since the bus 'register' acts as one */ m_s14001a->data_w(space, 0, data & 0x1f); /* SA0 (IN5) is pulled low according to the schematic, so its 0x1f and not 0x3f as one would expect */ } -WRITE8_MEMBER(wolfpack_state::wolfpack_start_speech_w) +WRITE8_MEMBER(wolfpack_state::start_speech_w) { m_s14001a->start_w(data&1); } -WRITE8_MEMBER(wolfpack_state::wolfpack_attract_w) +WRITE8_MEMBER(wolfpack_state::attract_w) { machine().bookkeeping().coin_lockout_global_w(!(data & 1)); } -WRITE8_MEMBER(wolfpack_state::wolfpack_credit_w) +WRITE8_MEMBER(wolfpack_state::credit_w) { output().set_led_value(0, !(data & 1)); } -WRITE8_MEMBER(wolfpack_state::wolfpack_coldetres_w) +WRITE8_MEMBER(wolfpack_state::coldetres_w) { m_collision = 0; } @@ -127,35 +131,35 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, wolfpack_state ) AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x100) AM_RANGE(0x1000, 0x1000) AM_READ_PORT("INPUTS") AM_RANGE(0x1000, 0x10ff) AM_WRITEONLY AM_SHARE("alpha_num_ram") - AM_RANGE(0x2000, 0x2000) AM_READ(wolfpack_misc_r) - AM_RANGE(0x2000, 0x2000) AM_WRITE(wolfpack_high_explo_w) - AM_RANGE(0x2001, 0x2001) AM_WRITE(wolfpack_sonar_ping_w) - AM_RANGE(0x2002, 0x2002) AM_WRITE(wolfpack_sirlat_w) - AM_RANGE(0x2003, 0x2003) AM_WRITE(wolfpack_pt_sound_w) - AM_RANGE(0x2004, 0x2004) AM_WRITE(wolfpack_start_speech_w) - AM_RANGE(0x2005, 0x2005) AM_WRITE(wolfpack_launch_torpedo_w) - AM_RANGE(0x2006, 0x2006) AM_WRITE(wolfpack_low_explo_w) - AM_RANGE(0x2007, 0x2007) AM_WRITE(wolfpack_screw_cont_w) - AM_RANGE(0x2008, 0x2008) AM_WRITE(wolfpack_video_invert_w) - AM_RANGE(0x2009, 0x2009) AM_WRITE(wolfpack_ship_reflect_w) - AM_RANGE(0x200a, 0x200a) AM_WRITE(wolfpack_lamp_flash_w) - AM_RANGE(0x200c, 0x200c) AM_WRITE(wolfpack_credit_w) - AM_RANGE(0x200d, 0x200d) AM_WRITE(wolfpack_attract_w) - AM_RANGE(0x200e, 0x200e) AM_WRITE(wolfpack_pt_pos_select_w) - AM_RANGE(0x200f, 0x200f) AM_WRITE(wolfpack_warning_light_w) + AM_RANGE(0x2000, 0x2000) AM_READ(misc_r) + AM_RANGE(0x2000, 0x2000) AM_WRITE(high_explo_w) + AM_RANGE(0x2001, 0x2001) AM_WRITE(sonar_ping_w) + AM_RANGE(0x2002, 0x2002) AM_WRITE(sirlat_w) + AM_RANGE(0x2003, 0x2003) AM_WRITE(pt_sound_w) + AM_RANGE(0x2004, 0x2004) AM_WRITE(start_speech_w) + AM_RANGE(0x2005, 0x2005) AM_WRITE(launch_torpedo_w) + AM_RANGE(0x2006, 0x2006) AM_WRITE(low_explo_w) + AM_RANGE(0x2007, 0x2007) AM_WRITE(screw_cont_w) + AM_RANGE(0x2008, 0x2008) AM_WRITE(video_invert_w) + AM_RANGE(0x2009, 0x2009) AM_WRITE(ship_reflect_w) + AM_RANGE(0x200a, 0x200a) AM_WRITE(lamp_flash_w) + AM_RANGE(0x200c, 0x200c) AM_WRITE(credit_w) + AM_RANGE(0x200d, 0x200d) AM_WRITE(attract_w) + AM_RANGE(0x200e, 0x200e) AM_WRITE(pt_pos_select_w) + AM_RANGE(0x200f, 0x200f) AM_WRITE(warning_light_w) AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW") - AM_RANGE(0x3000, 0x3000) AM_WRITE(wolfpack_audamp_w) - AM_RANGE(0x3001, 0x3001) AM_WRITE(wolfpack_pt_horz_w) - AM_RANGE(0x3003, 0x3003) AM_WRITE(wolfpack_pt_pic_w) - AM_RANGE(0x3004, 0x3004) AM_WRITE(wolfpack_word_w) - AM_RANGE(0x3007, 0x3007) AM_WRITE(wolfpack_coldetres_w) - AM_RANGE(0x4000, 0x4000) AM_WRITE(wolfpack_ship_h_w) - AM_RANGE(0x4001, 0x4001) AM_WRITE(wolfpack_torpedo_pic_w) - AM_RANGE(0x4002, 0x4002) AM_WRITE(wolfpack_ship_size_w) - AM_RANGE(0x4003, 0x4003) AM_WRITE(wolfpack_ship_h_precess_w) - AM_RANGE(0x4004, 0x4004) AM_WRITE(wolfpack_ship_pic_w) - AM_RANGE(0x4005, 0x4005) AM_WRITE(wolfpack_torpedo_h_w) - AM_RANGE(0x4006, 0x4006) AM_WRITE(wolfpack_torpedo_v_w) + AM_RANGE(0x3000, 0x3000) AM_WRITE(audamp_w) + AM_RANGE(0x3001, 0x3001) AM_WRITE(pt_horz_w) + AM_RANGE(0x3003, 0x3003) AM_WRITE(pt_pic_w) + AM_RANGE(0x3004, 0x3004) AM_WRITE(word_w) + AM_RANGE(0x3007, 0x3007) AM_WRITE(coldetres_w) + AM_RANGE(0x4000, 0x4000) AM_WRITE(ship_h_w) + AM_RANGE(0x4001, 0x4001) AM_WRITE(torpedo_pic_w) + AM_RANGE(0x4002, 0x4002) AM_WRITE(ship_size_w) + AM_RANGE(0x4003, 0x4003) AM_WRITE(ship_h_precess_w) + AM_RANGE(0x4004, 0x4004) AM_WRITE(ship_pic_w) + AM_RANGE(0x4005, 0x4005) AM_WRITE(torpedo_h_w) + AM_RANGE(0x4006, 0x4006) AM_WRITE(torpedo_v_w) AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x7000, 0x7fff) AM_ROM AM_RANGE(0x9000, 0x9000) AM_READNOP /* debugger ROM location? */ @@ -165,8 +169,8 @@ ADDRESS_MAP_END static INPUT_PORTS_START( wolfpack ) PORT_START("INPUTS") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wolfpack_state,wolfpack_dial_r, (void *)0) /* dial connects here */ - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wolfpack_state,wolfpack_dial_r, (void *)1) /* dial connects here */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wolfpack_state, dial_r, (void *)0) /* dial connects here */ + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, wolfpack_state, dial_r, (void *)1) /* dial connects here */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_SERVICE( 0x10, IP_ACTIVE_HIGH ) @@ -300,7 +304,7 @@ static GFXDECODE_START( wolfpack ) GFXDECODE_END -static MACHINE_CONFIG_START( wolfpack, wolfpack_state ) +static MACHINE_CONFIG_START( wolfpack ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 12096000 / 16) @@ -313,8 +317,8 @@ static MACHINE_CONFIG_START( wolfpack, wolfpack_state ) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(512, 262) MCFG_SCREEN_VISIBLE_AREA(0, 511, 16, 239) - MCFG_SCREEN_UPDATE_DRIVER(wolfpack_state, screen_update_wolfpack) - MCFG_SCREEN_VBLANK_DRIVER(wolfpack_state, screen_eof_wolfpack) + MCFG_SCREEN_UPDATE_DRIVER(wolfpack_state, screen_update) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(wolfpack_state, screen_vblank)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", wolfpack) @@ -359,4 +363,4 @@ ROM_START( wolfpack ) ROM_END -GAME( 1978, wolfpack, 0, wolfpack, wolfpack, driver_device, 0, ORIENTATION_FLIP_Y, "Atari", "Wolf Pack (prototype)", MACHINE_IMPERFECT_SOUND ) +GAME( 1978, wolfpack, 0, wolfpack, wolfpack, wolfpack_state, 0, ORIENTATION_FLIP_Y, "Atari", "Wolf Pack (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wpc_95.cpp b/src/mame/drivers/wpc_95.cpp index 6bc85f01c6d..8a64afddbbb 100644 --- a/src/mame/drivers/wpc_95.cpp +++ b/src/mame/drivers/wpc_95.cpp @@ -2243,7 +2243,7 @@ static INPUT_PORTS_START( ttt ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("UL Flipper Button") INPUT_PORTS_END -static MACHINE_CONFIG_START( wpc_95, wpc_95_state ) +static MACHINE_CONFIG_START( wpc_95 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_8MHz/4) MCFG_CPU_PROGRAM_MAP(wpc_95_map) diff --git a/src/mame/drivers/wpc_an.cpp b/src/mame/drivers/wpc_an.cpp index b0cdccad78b..226f887a25e 100644 --- a/src/mame/drivers/wpc_an.cpp +++ b/src/mame/drivers/wpc_an.cpp @@ -331,7 +331,7 @@ static MACHINE_CONFIG_FRAGMENT( wpc_an_base ) MCFG_DEFAULT_LAYOUT(layout_wpc_an) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wpc_an, wpc_an_state ) +static MACHINE_CONFIG_START( wpc_an ) MCFG_FRAGMENT_ADD(wpc_an_base) MCFG_SPEAKER_STANDARD_MONO("speaker") @@ -341,7 +341,7 @@ static MACHINE_CONFIG_START( wpc_an, wpc_an_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( wpc_an_dd, wpc_an_state ) +static MACHINE_CONFIG_START( wpc_an_dd ) MCFG_FRAGMENT_ADD(wpc_an_base) MCFG_SPEAKER_STANDARD_MONO("speaker") @@ -685,21 +685,21 @@ ROM_START(tfa_13) ROM_FILL(0x0000,0x8000,0x00) ROM_END -GAME(1990, tfa_13, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "WPC Test Fixture: Alphanumeric (1.3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, dd_p7, dd_l2, wpc_an_dd, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-7 WPC)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, dd_p06, dd_l2, wpc_an_dd, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-6 WPC)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, fh_l9, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-9 (SL-2m)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, fh_l9b, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-9 (SL-2m) Bootleg Improved German translation", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1996, fh_905h, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse 9.05H", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, fh_l3, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-3", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, fh_l4, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-4", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1990, fh_l5, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-5", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, hd_l3, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Harley Davidson (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, hd_l2, hd_l3, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Harley Davidson (L-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, hd_l1, hd_l3, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Harley Davidson (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, bop_l7, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-7)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, bop_l6, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-6)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, bop_l5, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, bop_l4, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, bop_l3, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1991, bop_l2, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, tfa_13, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "WPC Test Fixture: Alphanumeric (1.3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, dd_p7, dd_l2, wpc_an_dd, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-7 WPC)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, dd_p06, dd_l2, wpc_an_dd, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-6 WPC)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, fh_l9, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-9 (SL-2m)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, fh_l9b, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-9 (SL-2m) Bootleg Improved German translation", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1996, fh_905h, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse 9.05H", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, fh_l3, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-3", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, fh_l4, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-4", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1990, fh_l5, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-5", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, hd_l3, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Harley Davidson (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, hd_l2, hd_l3, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Harley Davidson (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, hd_l1, hd_l3, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Harley Davidson (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, bop_l7, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-7)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, bop_l6, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-6)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, bop_l5, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, bop_l4, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, bop_l3, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1991, bop_l2, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-2)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/wpc_dcs.cpp b/src/mame/drivers/wpc_dcs.cpp index 46956e32f69..6249a9ea5ce 100644 --- a/src/mame/drivers/wpc_dcs.cpp +++ b/src/mame/drivers/wpc_dcs.cpp @@ -420,7 +420,7 @@ static INPUT_PORTS_START( wpc_dcs ) INPUT_PORTS_END -static MACHINE_CONFIG_START( wpc_dcs, wpc_dcs_state ) +static MACHINE_CONFIG_START( wpc_dcs ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_8MHz/4) MCFG_CPU_PROGRAM_MAP(wpc_dcs_map) diff --git a/src/mame/drivers/wpc_dot.cpp b/src/mame/drivers/wpc_dot.cpp index 4a72919ffcf..f3c57bc10ab 100644 --- a/src/mame/drivers/wpc_dot.cpp +++ b/src/mame/drivers/wpc_dot.cpp @@ -301,7 +301,7 @@ uint32_t wpc_dot_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma return 0; } -static MACHINE_CONFIG_START( wpc_dot, wpc_dot_state ) +static MACHINE_CONFIG_START( wpc_dot ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) MCFG_CPU_PROGRAM_MAP(wpc_dot_map) diff --git a/src/mame/drivers/wpc_flip1.cpp b/src/mame/drivers/wpc_flip1.cpp index 55498d58334..143f3732ba6 100644 --- a/src/mame/drivers/wpc_flip1.cpp +++ b/src/mame/drivers/wpc_flip1.cpp @@ -157,7 +157,7 @@ DRIVER_INIT_MEMBER(wpc_flip1_state,wpc_flip1) wpc_dot_state::init_wpc_dot(); } -static MACHINE_CONFIG_START( wpc_flip1, wpc_flip1_state ) +static MACHINE_CONFIG_START( wpc_flip1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) MCFG_CPU_PROGRAM_MAP(wpc_flip1_map) diff --git a/src/mame/drivers/wpc_flip2.cpp b/src/mame/drivers/wpc_flip2.cpp index 8cbdd80b8d9..73b94996e1e 100644 --- a/src/mame/drivers/wpc_flip2.cpp +++ b/src/mame/drivers/wpc_flip2.cpp @@ -186,7 +186,7 @@ DRIVER_INIT_MEMBER(wpc_flip2_state,wpc_flip2) wpc_flip1_state::init_wpc_flip1(); } -static MACHINE_CONFIG_START( wpc_flip2, wpc_flip2_state ) +static MACHINE_CONFIG_START( wpc_flip2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, 2000000) MCFG_CPU_PROGRAM_MAP(wpc_flip2_map) @@ -837,52 +837,52 @@ ROM_START(lc_11) ROM_END -GAME(1993, br_l4, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Black Rose (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, br_p17, br_l4, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Black Rose (SP-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, br_l1, br_l4, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Black Rose (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, br_l3, br_l4, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Black Rose (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, drac_l1, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Bram Stoker's Dracula (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, drac_p11, drac_l1, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Bram Stoker's Dracula (P-11)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, cftbl_l4, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Creature from the Black Lagoon (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, cftbl_l3, cftbl_l4, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Creature from the Black Lagoon (L-3,SP-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, dw_l2, 0, wpc_flip2, wpc_dw, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Doctor Who (L-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, dw_l1, dw_l2, wpc_flip2, wpc_dw, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Doctor Who (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, dw_p5, dw_l2, wpc_flip2, wpc_dw, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Doctor Who (P-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, ft_l5, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Fish Tales (L-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, ft_l3, ft_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Fish Tales (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, ft_l4, ft_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Fish Tales (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, ft_p4, ft_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Fish Tales (P-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, tafg_lx3, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "The Addams Family Special Collectors Edition Gold (LX-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, tafg_h3, tafg_lx3, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "The Addams Family Special Collectors Edition (H-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, tafg_la2, tafg_lx3, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "The Addams Family Special Collectors Edition (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, tafg_la3, tafg_lx3, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "The Addams Family Special Collectors Edition (LA-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, gw_l5, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (L-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, gw_pb, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (P-B)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, gw_pc, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (P-C)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, gw_l1, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, gw_l2, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (L-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, gw_l3, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, gw_p7, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (P-7)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1998, tz_92, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (9.2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1998, tz_94h, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (9.4H)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1998, tz_94ch, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (9.4CH)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, tz_pa1, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (PA-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, tz_p3, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (P-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, tz_p4, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (P-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, tz_l1, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (L-1)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, tz_l2, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (L-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, tz_ifpa, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (IFPA rules)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, tz_l3, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, tz_l4, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, tz_h7, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (H-7)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1994, tz_h8, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (H-8)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2000, ww_l5, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (L-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2000, ww_lh6, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (LH-6)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(2000, ww_lh5, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (LH-5)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, ww_l4, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1993, ww_l3, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (L-3)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, ww_l2, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (L-2)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, ww_p8, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (P-8 P-2 sound)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, ww_p1, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (P-8 P-1 sound)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1992, strik_l4, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Strike Master (L-4)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1996, lc_11, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "League Champ (1.1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, br_l4, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Black Rose (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, br_p17, br_l4, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Black Rose (SP-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, br_l1, br_l4, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Black Rose (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, br_l3, br_l4, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Black Rose (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, drac_l1, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Bram Stoker's Dracula (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, drac_p11, drac_l1, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Bram Stoker's Dracula (P-11)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, cftbl_l4, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Creature from the Black Lagoon (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, cftbl_l3, cftbl_l4, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Creature from the Black Lagoon (L-3,SP-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, dw_l2, 0, wpc_flip2, wpc_dw, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Doctor Who (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, dw_l1, dw_l2, wpc_flip2, wpc_dw, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Doctor Who (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, dw_p5, dw_l2, wpc_flip2, wpc_dw, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Doctor Who (P-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, ft_l5, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Fish Tales (L-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, ft_l3, ft_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Fish Tales (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, ft_l4, ft_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Fish Tales (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, ft_p4, ft_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Fish Tales (P-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, tafg_lx3, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "The Addams Family Special Collectors Edition Gold (LX-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, tafg_h3, tafg_lx3, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "The Addams Family Special Collectors Edition (H-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, tafg_la2, tafg_lx3, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "The Addams Family Special Collectors Edition (LA-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, tafg_la3, tafg_lx3, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "The Addams Family Special Collectors Edition (LA-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, gw_l5, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (L-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, gw_pb, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (P-B)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, gw_pc, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (P-C)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, gw_l1, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, gw_l2, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, gw_l3, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, gw_p7, gw_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "The Getaway: High Speed II (P-7)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1998, tz_92, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (9.2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1998, tz_94h, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (9.4H)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1998, tz_94ch, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (9.4CH)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, tz_pa1, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (PA-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, tz_p3, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (P-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, tz_p4, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (P-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, tz_l1, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (L-1)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, tz_l2, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, tz_ifpa, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (IFPA rules)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, tz_l3, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, tz_l4, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, tz_h7, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (H-7)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1994, tz_h8, tz_92, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "Twilight Zone (H-8)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2000, ww_l5, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (L-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2000, ww_lh6, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (LH-6)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(2000, ww_lh5, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (LH-5)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, ww_l4, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1993, ww_l3, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (L-3)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, ww_l2, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (L-2)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, ww_p8, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (P-8 P-2 sound)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, ww_p1, ww_l5, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "White Water (P-8 P-1 sound)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1992, strik_l4, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Williams", "Strike Master (L-4)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1996, lc_11, 0, wpc_flip2, wpc_flip2, wpc_flip2_state, wpc_flip2, ROT0, "Bally", "League Champ (1.1)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/wpc_s.cpp b/src/mame/drivers/wpc_s.cpp index 40a2c9604ce..ac70e8469db 100644 --- a/src/mame/drivers/wpc_s.cpp +++ b/src/mame/drivers/wpc_s.cpp @@ -1967,7 +1967,7 @@ static INPUT_PORTS_START( tfs ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("UL Flipper Button") INPUT_PORTS_END -static MACHINE_CONFIG_START( wpc_s, wpc_s_state ) +static MACHINE_CONFIG_START( wpc_s ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, XTAL_8MHz/4) MCFG_CPU_PROGRAM_MAP(wpc_s_map) diff --git a/src/mame/drivers/wrally.cpp b/src/mame/drivers/wrally.cpp index ee94f3a410e..93691026d7b 100644 --- a/src/mame/drivers/wrally.cpp +++ b/src/mame/drivers/wrally.cpp @@ -253,7 +253,7 @@ static GFXDECODE_START( wrally ) GFXDECODE_END -static MACHINE_CONFIG_START( wrally, wrally_state ) +static MACHINE_CONFIG_START( wrally ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000,XTAL_24MHz/2) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(wrally_map) @@ -283,7 +283,7 @@ static MACHINE_CONFIG_START( wrally, wrally_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_OKIM6295_ADD("oki", XTAL_1MHz, OKIM6295_PIN7_HIGH) /* verified on pcb */ + MCFG_OKIM6295_ADD("oki", XTAL_1MHz, PIN7_HIGH) /* verified on pcb */ MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -390,7 +390,7 @@ ROM_START( wrallyat ) /* Board Marked 930217, Atari License */ ROM_END -GAME( 1993, wrally, 0, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (Version 1.0, Checksum 0E56)", MACHINE_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Tension baja " */ -GAME( 1993, wrallya, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (Version 1.0, Checksum 3873)", MACHINE_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Power Failure" */ -GAME( 1993, wrallyb, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (Version 1.0, Checksum 8AA2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, wrallyat, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, wrally, 0, wrally, wrally, wrally_state, 0, ROT0, "Gaelco", "World Rally (Version 1.0, Checksum 0E56)", MACHINE_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Tension baja " */ +GAME( 1993, wrallya, wrally, wrally, wrally, wrally_state, 0, ROT0, "Gaelco", "World Rally (Version 1.0, Checksum 3873)", MACHINE_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Power Failure" */ +GAME( 1993, wrallyb, wrally, wrally, wrally, wrally_state, 0, ROT0, "Gaelco", "World Rally (Version 1.0, Checksum 8AA2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, wrallyat, wrally, wrally, wrally, wrally_state, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wswan.cpp b/src/mame/drivers/wswan.cpp index 5790c1de45d..40658dfeaa5 100644 --- a/src/mame/drivers/wswan.cpp +++ b/src/mame/drivers/wswan.cpp @@ -108,7 +108,7 @@ static SLOT_INTERFACE_START(wswan_cart) SLOT_INTERFACE_INTERNAL("ws_eeprom", WS_ROM_EEPROM) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( wswan, wswan_state ) +static MACHINE_CONFIG_START( wswan ) /* Basic machine hardware */ MCFG_CPU_ADD("maincpu", V30MZ, 3072000) MCFG_CPU_PROGRAM_MAP(wswan_mem) @@ -191,6 +191,6 @@ ROM_START( wscolor ) // ROM_LOAD_OPTIONAL( "wsc_bios.bin", 0x0000, 0x0001, NO_DUMP ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME*/ -CONS( 1999, wswan, 0, 0, wswan, wswan, driver_device, 0, "Bandai", "WonderSwan", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -CONS( 2000, wscolor, wswan, 0, wscolor, wswan, driver_device, 0, "Bandai", "WonderSwan Color", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME*/ +CONS( 1999, wswan, 0, 0, wswan, wswan, wswan_state, 0, "Bandai", "WonderSwan", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 2000, wscolor, wswan, 0, wscolor, wswan, wswan_state, 0, "Bandai", "WonderSwan Color", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wwfsstar.cpp b/src/mame/drivers/wwfsstar.cpp index d54104fdbf1..0bab6f60f4d 100644 --- a/src/mame/drivers/wwfsstar.cpp +++ b/src/mame/drivers/wwfsstar.cpp @@ -417,7 +417,7 @@ GFXDECODE_END Machine Driver(s) *******************************************************************************/ -static MACHINE_CONFIG_START( wwfsstar, wwfsstar_state ) +static MACHINE_CONFIG_START( wwfsstar ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK) @@ -447,7 +447,7 @@ static MACHINE_CONFIG_START( wwfsstar, wwfsstar_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) - MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) MACHINE_CONFIG_END @@ -635,8 +635,8 @@ ROM_END -GAME( 1989, wwfsstar, 0, wwfsstar, wwfsstar, driver_device, 0, ROT0, "Technos Japan", "WWF Superstars (Europe)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wwfsstaru, wwfsstar, wwfsstar, wwfsstar, driver_device, 0, ROT0, "Technos Japan", "WWF Superstars (US, Newer)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wwfsstarua, wwfsstar, wwfsstar, wwfsstar, driver_device, 0, ROT0, "Technos Japan", "WWF Superstars (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wwfsstarj, wwfsstar, wwfsstar, wwfsstar, driver_device, 0, ROT0, "Technos Japan", "WWF Superstars (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, wwfsstarb, wwfsstar, wwfsstar, wwfsstar, driver_device, 0, ROT0, "bootleg", "WWF Superstars (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wwfsstar, 0, wwfsstar, wwfsstar, wwfsstar_state, 0, ROT0, "Technos Japan", "WWF Superstars (Europe)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wwfsstaru, wwfsstar, wwfsstar, wwfsstar, wwfsstar_state, 0, ROT0, "Technos Japan", "WWF Superstars (US, Newer)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wwfsstarua, wwfsstar, wwfsstar, wwfsstar, wwfsstar_state, 0, ROT0, "Technos Japan", "WWF Superstars (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wwfsstarj, wwfsstar, wwfsstar, wwfsstar, wwfsstar_state, 0, ROT0, "Technos Japan", "WWF Superstars (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, wwfsstarb, wwfsstar, wwfsstar, wwfsstar, wwfsstar_state, 0, ROT0, "bootleg", "WWF Superstars (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wyvernf0.cpp b/src/mame/drivers/wyvernf0.cpp index 7ff061a75f3..d91747569fa 100644 --- a/src/mame/drivers/wyvernf0.cpp +++ b/src/mame/drivers/wyvernf0.cpp @@ -631,7 +631,7 @@ MACHINE_RESET_MEMBER(wyvernf0_state,wyvernf0) m_mcu_ready = 0; } -static MACHINE_CONFIG_START( wyvernf0, wyvernf0_state ) +static MACHINE_CONFIG_START( wyvernf0 ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, 6000000) // ? @@ -731,4 +731,4 @@ ROM_START( wyvernf0 ) ROM_LOAD( "a39_12.ic74", 0x6000, 0x2000, CRC(1cc389de) SHA1(4213484d3a82688f312811e7a5c4d128e40584c3) ) ROM_END -GAME( 1985, wyvernf0, 0, wyvernf0, wyvernf0, driver_device, 0, ROT270, "Taito", "Wyvern F-0", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND) +GAME( 1985, wyvernf0, 0, wyvernf0, wyvernf0, wyvernf0_state, 0, ROT270, "Taito", "Wyvern F-0", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/drivers/x07.cpp b/src/mame/drivers/x07.cpp index 598390b32af..d8e7abcb6fc 100644 --- a/src/mame/drivers/x07.cpp +++ b/src/mame/drivers/x07.cpp @@ -1477,7 +1477,7 @@ void x07_state::machine_reset() m_maincpu->set_state_int(Z80_PC, 0xc3c3); } -static MACHINE_CONFIG_START( x07, x07_state ) +static MACHINE_CONFIG_START( x07 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", NSC800, XTAL_15_36MHz / 4) diff --git a/src/mame/drivers/x1.cpp b/src/mame/drivers/x1.cpp index ef10422cf31..995fe38bc0e 100644 --- a/src/mame/drivers/x1.cpp +++ b/src/mame/drivers/x1.cpp @@ -2526,7 +2526,7 @@ static SLOT_INTERFACE_START( x1_floppies ) SLOT_INTERFACE("dd", FLOPPY_525_DD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( x1, x1_state ) +static MACHINE_CONFIG_START( x1 ) /* basic machine hardware */ MCFG_CPU_ADD("x1_cpu", Z80, MAIN_CLOCK/4) MCFG_CPU_PROGRAM_MAP(x1_mem) @@ -2730,9 +2730,9 @@ DRIVER_INIT_MEMBER(x1_state,x1_kanji) } -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, x1, 0, 0, x1, x1, driver_device, 0, "Sharp", "X1 (CZ-800C)", 0 ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, x1, 0, 0, x1, x1, x1_state, 0, "Sharp", "X1 (CZ-800C)", 0 ) // x1twin in x1twin.c COMP( 1984, x1turbo, x1, 0, x1turbo, x1turbo, x1_state, x1_kanji, "Sharp", "X1 Turbo (CZ-850C)", MACHINE_NOT_WORKING ) //model 10 COMP( 1985, x1turbo40, x1, 0, x1turbo, x1turbo, x1_state, x1_kanji, "Sharp", "X1 Turbo (CZ-862C)", 0 ) //model 40 -//COMP( 1986, x1turboz, x1, 0, x1turbo, x1turbo, x1_state, x1_kanji, "Sharp", "X1 TurboZ", MACHINE_NOT_WORKING ) +//COMP( 1986, x1turboz, x1, 0, x1turbo, x1turbo, x1_state, x1_kanji, "Sharp", "X1 TurboZ", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/x1twin.cpp b/src/mame/drivers/x1twin.cpp index 6d16b959d83..231c96afece 100644 --- a/src/mame/drivers/x1twin.cpp +++ b/src/mame/drivers/x1twin.cpp @@ -401,7 +401,7 @@ static SLOT_INTERFACE_START( x1_floppies ) SLOT_INTERFACE("dd", FLOPPY_525_DD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( x1twin, x1twin_state ) +static MACHINE_CONFIG_START( x1twin ) /* basic machine hardware */ MCFG_CPU_ADD("x1_cpu", Z80, X1_MAIN_CLOCK/4) MCFG_CPU_PROGRAM_MAP(x1_mem) @@ -446,7 +446,7 @@ static MACHINE_CONFIG_START( x1twin, x1twin_state ) MCFG_SCREEN_ADD("pce_screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ - MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, HUC6260_WPF, 70, 70 + 512 + 32, HUC6260_LPF, 14, 14+242) + MCFG_SCREEN_RAW_PARAMS(PCE_MAIN_CLOCK/2, huc6260_device::WPF, 70, 70 + 512 + 32, huc6260_device::LPF, 14, 14+242) MCFG_SCREEN_UPDATE_DRIVER(x1twin_state, screen_update_x1pce) MCFG_MC6845_ADD("crtc", H46505, "x1_screen", (VDP_CLOCK/48)) //unknown divider @@ -540,4 +540,4 @@ ROM_START( x1twin ) ROM_LOAD("kanji1.rom", 0x18000, 0x8000, BAD_DUMP CRC(5874f70b) SHA1(dad7ada1b70c45f1e9db11db273ef7b385ef4f17) ) ROM_END -COMP( 1986, x1twin, x1, 0, x1twin, x1twin, x1_state, x1_kanji,"Sharp", "X1 Twin (CZ-830C)", MACHINE_NOT_WORKING ) +COMP( 1986, x1twin, x1, 0, x1twin, x1twin, x1twin_state, x1_kanji,"Sharp", "X1 Twin (CZ-830C)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/x68k.cpp b/src/mame/drivers/x68k.cpp index d382ee418f5..d22d206b9a5 100644 --- a/src/mame/drivers/x68k.cpp +++ b/src/mame/drivers/x68k.cpp @@ -1071,10 +1071,10 @@ WRITE8_MEMBER(x68k_state::x68030_adpcm_w) switch(offset) { case 0x00: - m_okim6258->okim6258_ctrl_w(space,0,data); + m_okim6258->ctrl_w(space,0,data); break; case 0x01: - m_okim6258->okim6258_data_w(space,0,data); + m_okim6258->data_w(space,0,data); break; } } @@ -1150,8 +1150,8 @@ static ADDRESS_MAP_START(x68k_map, AS_PROGRAM, 16, x68k_state ) // AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w) AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE(x68k_sysport_r, x68k_sysport_w) AM_RANGE(0xe90000, 0xe91fff) AM_DEVREADWRITE8("ym2151", ym2151_device, read, write, 0x00ff) - AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_device, okim6258_status_r, okim6258_ctrl_w, 0x00ff) - AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_device, okim6258_status_r, okim6258_data_w, 0x00ff) + AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, ctrl_w, 0x00ff) + AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, data_w, 0x00ff) AM_RANGE(0xe94000, 0xe94003) AM_DEVICE8("upd72065", upd72065_device, map, 0x00ff) AM_RANGE(0xe94004, 0xe94007) AM_READWRITE(x68k_fdc_r, x68k_fdc_w) AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE("x68k_hdc", x68k_hdc_image_device, hdc_r, hdc_w) @@ -1188,8 +1188,8 @@ static ADDRESS_MAP_START(x68kxvi_map, AS_PROGRAM, 16, x68k_state ) // AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w) AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE(x68k_sysport_r, x68k_sysport_w) AM_RANGE(0xe90000, 0xe91fff) AM_DEVREADWRITE8("ym2151", ym2151_device, read, write, 0x00ff) - AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_device, okim6258_status_r, okim6258_ctrl_w, 0x00ff) - AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_device, okim6258_status_r, okim6258_data_w, 0x00ff) + AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, ctrl_w, 0x00ff) + AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, data_w, 0x00ff) AM_RANGE(0xe94000, 0xe94003) AM_DEVICE8("upd72065", upd72065_device, map, 0x00ff) AM_RANGE(0xe94004, 0xe94007) AM_READWRITE(x68k_fdc_r, x68k_fdc_w) // AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE("x68k_hdc", x68k_hdc_image_device, hdc_r, hdc_w) @@ -1228,7 +1228,7 @@ static ADDRESS_MAP_START(x68030_map, AS_PROGRAM, 32, x68k_state ) // AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w) AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE16(x68k_sysport_r, x68k_sysport_w,0xffffffff) AM_RANGE(0xe90000, 0xe91fff) AM_DEVREADWRITE8("ym2151", ym2151_device, read, write, 0x00ff00ff) - AM_RANGE(0xe92000, 0xe92003) AM_DEVREAD8("okim6258", okim6258_device, okim6258_status_r, 0x00ff00ff) AM_WRITE8(x68030_adpcm_w, 0x00ff00ff) + AM_RANGE(0xe92000, 0xe92003) AM_DEVREAD8("okim6258", okim6258_device, status_r, 0x00ff00ff) AM_WRITE8(x68030_adpcm_w, 0x00ff00ff) AM_RANGE(0xe94000, 0xe94003) AM_DEVICE8("upd72065", upd72065_device, map, 0x00ff00ff) AM_RANGE(0xe94004, 0xe94007) AM_READWRITE16(x68k_fdc_r, x68k_fdc_w,0xffffffff) // AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE16("x68k_hdc", x68k_hdc_image_device, hdc_r, hdc_w, 0xffffffff) @@ -1636,7 +1636,7 @@ static SLOT_INTERFACE_START(keyboard) SLOT_INTERFACE("x68k", X68K_KEYBOARD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( x68000, x68k_state ) +static MACHINE_CONFIG_START( x68000 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz */ MCFG_CPU_PROGRAM_MAP(x68k_map) @@ -1861,8 +1861,8 @@ ROM_START( x68030 ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1987, x68000, 0, 0, x68000, x68000, x68k_state, x68000, "Sharp", "X68000", MACHINE_IMPERFECT_GRAPHICS ) -COMP( 1990, x68ksupr,x68000, 0, x68ksupr,x68000, x68k_state,x68000, "Sharp", "X68000 Super", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -COMP( 1991, x68kxvi,x68000, 0, x68kxvi,x68000, x68k_state, x68kxvi,"Sharp", "X68000 XVI", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -COMP( 1993, x68030, x68000, 0, x68030, x68000, x68k_state, x68030, "Sharp", "X68030", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1987, x68000, 0, 0, x68000, x68000, x68k_state, x68000, "Sharp", "X68000", MACHINE_IMPERFECT_GRAPHICS ) +COMP( 1990, x68ksupr, x68000, 0, x68ksupr, x68000, x68k_state, x68000, "Sharp", "X68000 Super", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +COMP( 1991, x68kxvi, x68000, 0, x68kxvi, x68000, x68k_state, x68kxvi,"Sharp", "X68000 XVI", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +COMP( 1993, x68030, x68000, 0, x68030, x68000, x68k_state, x68030, "Sharp", "X68030", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/xain.cpp b/src/mame/drivers/xain.cpp index 79ef95e19b1..2b63065723d 100644 --- a/src/mame/drivers/xain.cpp +++ b/src/mame/drivers/xain.cpp @@ -454,7 +454,7 @@ void xain_state::machine_start() save_item(NAME(m_vblank)); } -static MACHINE_CONFIG_START( xsleena, xain_state ) +static MACHINE_CONFIG_START( xsleena ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, CPU_CLOCK) @@ -780,8 +780,8 @@ ROM_START( xsleenaba ) ROM_END -GAME( 1986, xsleena, 0, xsleena, xsleena, driver_device, 0, ROT0, "Technos Japan (Taito license)", "Xain'd Sleena (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, xsleenaj, xsleena, xsleena, xsleena, driver_device, 0, ROT0, "Technos Japan", "Xain'd Sleena (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, solrwarr, xsleena, xsleena, xsleena, driver_device, 0, ROT0, "Technos Japan (Taito / Memetron license)", "Solar-Warrior (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, xsleenab, xsleena, xsleenab, xsleena, driver_device, 0, ROT0, "bootleg", "Xain'd Sleena (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, xsleenaba,xsleena, xsleenab, xsleena, driver_device, 0, ROT0, "bootleg", "Xain'd Sleena (bootleg, bugfixed)", MACHINE_SUPPORTS_SAVE ) // newer bootleg, fixes some of the issues with the other one +GAME( 1986, xsleena, 0, xsleena, xsleena, xain_state, 0, ROT0, "Technos Japan (Taito license)", "Xain'd Sleena (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, xsleenaj, xsleena, xsleena, xsleena, xain_state, 0, ROT0, "Technos Japan", "Xain'd Sleena (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, solrwarr, xsleena, xsleena, xsleena, xain_state, 0, ROT0, "Technos Japan (Taito / Memetron license)", "Solar-Warrior (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, xsleenab, xsleena, xsleenab, xsleena, xain_state, 0, ROT0, "bootleg", "Xain'd Sleena (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, xsleenaba, xsleena, xsleenab, xsleena, xain_state, 0, ROT0, "bootleg", "Xain'd Sleena (bootleg, bugfixed)", MACHINE_SUPPORTS_SAVE ) // newer bootleg, fixes some of the issues with the other one diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp index c08f46819a0..1f04500145d 100644 --- a/src/mame/drivers/xavix.cpp +++ b/src/mame/drivers/xavix.cpp @@ -142,7 +142,7 @@ void xavix_state::machine_reset() } -static MACHINE_CONFIG_START( xavix, xavix_state ) +static MACHINE_CONFIG_START( xavix ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",G65816,MAIN_CLOCK/4) @@ -179,4 +179,4 @@ ROM_START( taitons1 ) ROM_LOAD( "taitonostalgia1.u3", 0x000000, 0x200000, CRC(25bd8c67) SHA1(a109cd2da6aa4596e3ca3abd1afce2d0001a473f) ) ROM_END -CONS( 2006, taitons1, 0, 0, xavix, xavix, driver_device, 0, "Bandai / SSD Company LTD / Taito", "Let's! TV Play Classic - Taito Nostalgia 1", MACHINE_IS_SKELETON ) +CONS( 2006, taitons1, 0, 0, xavix, xavix, xavix_state, 0, "Bandai / SSD Company LTD / Taito", "Let's! TV Play Classic - Taito Nostalgia 1", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/xbox.cpp b/src/mame/drivers/xbox.cpp index 263c141db19..fbbfbe708b5 100644 --- a/src/mame/drivers/xbox.cpp +++ b/src/mame/drivers/xbox.cpp @@ -11,11 +11,11 @@ #include "emu.h" #include "includes/xbox.h" +#include "includes/xbox_pci.h" #include "cpu/i386/i386.h" #include "machine/atapicdr.h" #include "machine/idehd.h" -#include "machine/lpci.h" #include "machine/pit8253.h" #include "debug/debugcmd.h" @@ -136,8 +136,8 @@ void xbox_state::machine_start() xbox_devs.ide = machine().device("ide"); usb_device = machine().device("ohci_gamepad"); if (usb_device != nullptr) { - usb_device->initialize(machine(), ohci_usb); - ohci_usb->usb_ohci_plug(3, usb_device); // connect to root hub port 3, chihiro needs to use 1 and 2 + usb_device->initialize(machine()); + machine().device(":pci:02.0")->plug_usb_device(3, usb_device); // connect to root hub port 3, chihiro needs to use 1 and 2 } // savestates //save_item(NAME(item)); @@ -150,11 +150,11 @@ void xbox_state::machine_reset() uint16_t *id; // set some needed parameters - devh = machine().device("ide:0:hdd"); + devh = machine().device(":pci:09.0:ide:0:hdd"); id = devh->identify_device_buffer(); id[88] |= (1 << 2); // ultra dma mode 2 supported id[128] |= 2; // bits 2-1=01 drive already unlocked - devc = machine().device("ide:1:cdrom"); + devc = machine().device(":pci:09.0:ide:1:cdrom"); id = devc->identify_device_buffer(); id[64] |= (1 << 1); id[88] |= (1 << 2); // ultra dma mode 2 supported @@ -165,14 +165,14 @@ SLOT_INTERFACE_START(xbox_ata_devices) SLOT_INTERFACE("cdrom", ATAPI_CDROM) SLOT_INTERFACE_END -static MACHINE_CONFIG_DERIVED_CLASS(xbox, xbox_base, xbox_state) +static MACHINE_CONFIG_DERIVED(xbox, xbox_base) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(xbox_map) MCFG_CPU_IO_MAP(xbox_map_io) - MCFG_DEVICE_MODIFY("ide:0") + MCFG_DEVICE_MODIFY(":pci:09.0:ide:0") MCFG_DEVICE_SLOT_INTERFACE(xbox_ata_devices, "hdd", true) - MCFG_DEVICE_MODIFY("ide:1") + MCFG_DEVICE_MODIFY(":pci:09.0:ide:1") MCFG_DEVICE_SLOT_INTERFACE(xbox_ata_devices, "cdrom", true) /* sound hardware */ @@ -194,8 +194,7 @@ MACHINE_CONFIG_END ROM_START( xbox ) ROM_REGION( 0x400, "mcpx", 0 ) - // mcpx_1_0.bin is bad, first byte (0x7f) sould be removed and a byte with value 0xee added at the end - ROM_LOAD( "mcpx_1_0.bin", 0, 0x200, CRC(f31429fc) SHA1(a9ecbf8896d10db81594923e485862aa3aac7b58) ) + ROM_LOAD( "mcpx_1_0.bin", 0, 0x200, CRC(0b07d1f1) SHA1(5d270675b54eb8071b480e42d22a3015ac211cef) ) ROM_LOAD( "mcpx_1_1.bin", 0x200, 0x200, CRC(94ce376b) SHA1(6c875f17f773aaec51eb434068bb6c657c4343c0) ) ROM_REGION( 0x100000, "bios", 0) @@ -207,10 +206,10 @@ ROM_START( xbox ) ROM_LOAD_BIOS(2, "4034_1024k.bin", 0x000000, 0x100000, CRC(0d6fc88f) SHA1(ab676b712204fb1728bf89f9cd541a8f5a64ab97)) \ ROM_SYSTEM_BIOS(3, "bios3", "Chihiro Bios 4817 1024k") \ ROM_LOAD_BIOS(3, "4817_1024k.bin", 0x000000, 0x100000, CRC(3f30863a) SHA1(dc955bd4d3ca71e01214a49e5d0aba615270c03c)) - ROM_COPY( "mcpx", 1, 0x3fe00, 0x1ff) - ROM_COPY( "mcpx", 1, 0x7fe00, 0x1ff) - ROM_COPY( "mcpx", 1, 0xbfe00, 0x1ff) - ROM_COPY( "mcpx", 1, 0xffe00, 0x1ff) + ROM_COPY( "mcpx", 0, 0x3fe00, 0x200) + ROM_COPY( "mcpx", 0, 0x7fe00, 0x200) + ROM_COPY( "mcpx", 0, 0xbfe00, 0x200) + ROM_COPY( "mcpx", 0, 0xffe00, 0x200) ROM_REGION( 0x1000000, "tbp", 0 ) // To Be Processed, of course @@ -232,4 +231,4 @@ ROM_END // For a generic system: // SYST(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,INIT,COMPANY,FULLNAME,FLAGS) -CONS( 2001, xbox, 0, 0, xbox, xbox, driver_device, 0, "Microsoft", "XBOX", MACHINE_IS_SKELETON ) +CONS( 2001, xbox, 0, 0, xbox, xbox, xbox_state, 0, "Microsoft", "XBOX", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/xerox820.cpp b/src/mame/drivers/xerox820.cpp index ba78325ab91..6f7debdd24f 100644 --- a/src/mame/drivers/xerox820.cpp +++ b/src/mame/drivers/xerox820.cpp @@ -545,7 +545,7 @@ GFXDECODE_END /* Machine Drivers */ -static MACHINE_CONFIG_START( xerox820, xerox820_state ) +static MACHINE_CONFIG_START( xerox820 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_20MHz/8) MCFG_CPU_PROGRAM_MAP(xerox820_mem) @@ -612,14 +612,14 @@ static MACHINE_CONFIG_START( xerox820, xerox820_state ) MCFG_SOFTWARE_LIST_ADD("flop_list", "xerox820") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( bigboard, xerox820, bigboard_state ) +static MACHINE_CONFIG_DERIVED( bigboard, xerox820 ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("beeper", BEEP, 950) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* bigboard only */ MACHINE_CONFIG_END -static MACHINE_CONFIG_START( xerox820ii, xerox820ii_state ) +static MACHINE_CONFIG_START( xerox820ii ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_16MHz/4) MCFG_CPU_PROGRAM_MAP(xerox820ii_mem) @@ -829,10 +829,10 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, bigboard, 0, 0, bigboard, xerox820, driver_device, 0, "Digital Research Computers", "Big Board", 0 ) -COMP( 1981, x820, bigboard, 0, xerox820, xerox820, driver_device, 0, "Xerox", "Xerox 820", MACHINE_NO_SOUND_HW ) -COMP( 1982, mk82, bigboard, 0, bigboard, xerox820, driver_device, 0, "Scomar", "MK-82", 0 ) -COMP( 1983, x820ii, 0, 0, xerox820ii, xerox820, driver_device, 0, "Xerox", "Xerox 820-II", MACHINE_NOT_WORKING ) -COMP( 1983, x168, x820ii, 0, xerox168, xerox820, driver_device, 0, "Xerox", "Xerox 16/8", MACHINE_NOT_WORKING ) -COMP( 1983, mk83, x820ii, 0, mk83, xerox820, driver_device, 0, "Scomar", "MK-83", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, bigboard, 0, 0, bigboard, xerox820, bigboard_state, 0, "Digital Research Computers", "Big Board", 0 ) +COMP( 1981, x820, bigboard, 0, xerox820, xerox820, xerox820_state, 0, "Xerox", "Xerox 820", MACHINE_NO_SOUND_HW ) +COMP( 1982, mk82, bigboard, 0, bigboard, xerox820, bigboard_state, 0, "Scomar", "MK-82", 0 ) +COMP( 1983, x820ii, 0, 0, xerox820ii, xerox820, xerox820ii_state, 0, "Xerox", "Xerox 820-II", MACHINE_NOT_WORKING ) +COMP( 1983, x168, x820ii, 0, xerox168, xerox820, xerox820ii_state, 0, "Xerox", "Xerox 16/8", MACHINE_NOT_WORKING ) +COMP( 1983, mk83, x820ii, 0, mk83, xerox820, xerox820_state, 0, "Scomar", "MK-83", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/xexex.cpp b/src/mame/drivers/xexex.cpp index 25a88cdce64..0f6284e01ca 100644 --- a/src/mame/drivers/xexex.cpp +++ b/src/mame/drivers/xexex.cpp @@ -262,36 +262,11 @@ WRITE16_MEMBER(xexex_state::control2_w) parse_control2(); } - -WRITE16_MEMBER(xexex_state::sound_cmd1_w) -{ - if(ACCESSING_BITS_0_7) - { - // anyone knows why 0x1a keeps lurking the sound queue in the world version??? - if (m_strip_0x1a) - if (m_soundlatch2->read(space, 0) == 1 && data == 0x1a) - return; - - m_soundlatch->write(space, 0, data & 0xff); - } -} - -WRITE16_MEMBER(xexex_state::sound_cmd2_w) -{ - if (ACCESSING_BITS_0_7) - m_soundlatch2->write(space, 0, data & 0xff); -} - WRITE16_MEMBER(xexex_state::sound_irq_w) { m_audiocpu->set_input_line(0, HOLD_LINE); } -READ16_MEMBER(xexex_state::sound_status_r) -{ - return m_soundlatch3->read(space, 0); -} - WRITE8_MEMBER(xexex_state::sound_bankswitch_w) { membank("z80bank")->set_entry(data & 0x07); @@ -378,10 +353,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, xexex_state ) AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w) // priority encoder // AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w) - AM_RANGE(0x0d600c, 0x0d600d) AM_WRITE(sound_cmd1_w) - AM_RANGE(0x0d600e, 0x0d600f) AM_WRITE(sound_cmd2_w) - AM_RANGE(0x0d6014, 0x0d6015) AM_READ(sound_status_r) - AM_RANGE(0x0d6000, 0x0d601f) AM_RAM // sound regs fall through + AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS regs AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1") AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2") @@ -412,9 +384,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, xexex_state ) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) - AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) + AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) ADDRESS_MAP_END @@ -495,7 +465,7 @@ void xexex_state::machine_reset() m_k054539->init_flags(k054539_device::REVERSE_STEREO); } -static MACHINE_CONFIG_START( xexex, xexex_state ) +static MACHINE_CONFIG_START( xexex ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_32MHz/2) // 16MHz @@ -545,9 +515,7 @@ static MACHINE_CONFIG_START( xexex, xexex_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_GENERIC_LATCH_8_ADD("soundlatch2") - MCFG_GENERIC_LATCH_8_ADD("soundlatch3") + MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker") MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) // 4MHz MCFG_SOUND_ROUTE(0, "filter1l", 0.50) diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp index 9ce6c484615..212c25e53cb 100644 --- a/src/mame/drivers/xmen.cpp +++ b/src/mame/drivers/xmen.cpp @@ -53,29 +53,15 @@ WRITE16_MEMBER(xmen_state::eeprom_w) /* bit 8 = enable sprite ROM reading */ m_k053246->k053246_set_objcha_line( (data & 0x0100) ? ASSERT_LINE : CLEAR_LINE); /* bit 9 = enable char ROM reading through the video RAM */ + /* bit 10 = sound irq, but with some kind of hold */ m_k052109->set_rmrd_line((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE); + if(data & 0x4) { + logerror("tick!\n"); + m_audiocpu->set_input_line(0, HOLD_LINE); + } } } -READ16_MEMBER(xmen_state::sound_status_r) -{ - return m_soundlatch2->read(space, 0); -} - -WRITE16_MEMBER(xmen_state::sound_cmd_w) -{ - if (ACCESSING_BITS_0_7) - { - data &= 0xff; - m_soundlatch->write(space, 0, data); - } -} - -WRITE16_MEMBER(xmen_state::sound_irq_w) -{ - m_audiocpu->set_input_line(0, HOLD_LINE); -} - WRITE16_MEMBER(xmen_state::xmen_18fa00_w) { if(ACCESSING_BITS_0_7) @@ -99,9 +85,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, xmen_state ) AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w) AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) - AM_RANGE(0x10804c, 0x10804d) AM_WRITE(sound_cmd_w) - AM_RANGE(0x10804e, 0x10804f) AM_WRITE(sound_irq_w) - AM_RANGE(0x108054, 0x108055) AM_READ(sound_status_r) + AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w) AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3") @@ -118,8 +102,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, xmen_state ) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) ADDRESS_MAP_END @@ -134,9 +117,7 @@ static ADDRESS_MAP_START( 6p_main_map, AS_PROGRAM, 16, xmen_state ) AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w) AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) /* sprites */ - AM_RANGE(0x10804c, 0x10804d) AM_WRITE(sound_cmd_w) - AM_RANGE(0x10804e, 0x10804f) AM_WRITE(sound_irq_w) - AM_RANGE(0x108054, 0x108055) AM_READ(sound_status_r) + AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w) AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3") @@ -313,7 +294,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(xmen_state::xmen_scanline) } -static MACHINE_CONFIG_START( xmen, xmen_state ) +static MACHINE_CONFIG_START( xmen ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* verified on pcb */ @@ -354,8 +335,7 @@ static MACHINE_CONFIG_START( xmen, xmen_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker") MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */ MCFG_SOUND_ROUTE(0, "lspeaker", 0.20) @@ -366,7 +346,7 @@ static MACHINE_CONFIG_START( xmen, xmen_state ) MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( xmen6p, xmen_state ) +static MACHINE_CONFIG_START( xmen6p ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -400,7 +380,7 @@ static MACHINE_CONFIG_START( xmen6p, xmen_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(16*8, 52*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(xmen_state, screen_update_xmen6p_right) - MCFG_SCREEN_VBLANK_DRIVER(xmen_state, screen_eof_xmen6p) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(xmen_state, screen_vblank_xmen6p)) MCFG_SCREEN_PALETTE("palette") MCFG_VIDEO_START_OVERRIDE(xmen_state,xmen6p) @@ -417,12 +397,11 @@ static MACHINE_CONFIG_START( xmen6p, xmen_state ) MCFG_K053251_ADD("k053251") + MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker") + /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_GENERIC_LATCH_8_ADD("soundlatch2") - MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) MCFG_SOUND_ROUTE(0, "lspeaker", 0.20) MCFG_SOUND_ROUTE(1, "rspeaker", 0.20) @@ -842,15 +821,15 @@ ROM_END /* Second "version" letter denotes players, A=2 players, B=4 players, C=6 players ??? - For the Asia versions both D & E are 4 players */ -GAME( 1992, xmen, 0, xmen, xmen, driver_device, 0, ROT0, "Konami", "X-Men (4 Players ver UBB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, xmenj, xmen, xmen, xmen, driver_device, 0, ROT0, "Konami", "X-Men (4 Players ver JBA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, xmene, xmen, xmen, xmen, driver_device, 0, ROT0, "Konami", "X-Men (4 Players ver EBA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, xmena, xmen, xmen, xmen, driver_device, 0, ROT0, "Konami", "X-Men (4 Players ver AEA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, xmenaa, xmen, xmen, xmen, driver_device, 0, ROT0, "Konami", "X-Men (4 Players ver ADA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, xmen2pe, xmen, xmen, xmen2p, driver_device, 0, ROT0, "Konami", "X-Men (2 Players ver EAA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, xmen2pu, xmen, xmen, xmen2p, driver_device, 0, ROT0, "Konami", "X-Men (2 Players ver UAB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, xmen2pa, xmen, xmen, xmen2p, driver_device, 0, ROT0, "Konami", "X-Men (2 Players ver AAA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, xmen2pj, xmen, xmen, xmen2p, driver_device, 0, ROT0, "Konami", "X-Men (2 Players ver JAA)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1992, xmen6p, xmen, xmen6p, xmen6p, driver_device, 0, ROT0, "Konami", "X-Men (6 Players ver ECB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, xmen6pu, xmen, xmen6p, xmen6p, driver_device, 0, ROT0, "Konami", "X-Men (6 Players ver UCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmen, 0, xmen, xmen, xmen_state, 0, ROT0, "Konami", "X-Men (4 Players ver UBB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmenj, xmen, xmen, xmen, xmen_state, 0, ROT0, "Konami", "X-Men (4 Players ver JBA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmene, xmen, xmen, xmen, xmen_state, 0, ROT0, "Konami", "X-Men (4 Players ver EBA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmena, xmen, xmen, xmen, xmen_state, 0, ROT0, "Konami", "X-Men (4 Players ver AEA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmenaa, xmen, xmen, xmen, xmen_state, 0, ROT0, "Konami", "X-Men (4 Players ver ADA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmen2pe, xmen, xmen, xmen2p, xmen_state, 0, ROT0, "Konami", "X-Men (2 Players ver EAA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmen2pu, xmen, xmen, xmen2p, xmen_state, 0, ROT0, "Konami", "X-Men (2 Players ver UAB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmen2pa, xmen, xmen, xmen2p, xmen_state, 0, ROT0, "Konami", "X-Men (2 Players ver AAA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmen2pj, xmen, xmen, xmen2p, xmen_state, 0, ROT0, "Konami", "X-Men (2 Players ver JAA)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1992, xmen6p, xmen, xmen6p, xmen6p, xmen_state, 0, ROT0, "Konami", "X-Men (6 Players ver ECB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, xmen6pu, xmen, xmen6p, xmen6p, xmen_state, 0, ROT0, "Konami", "X-Men (6 Players ver UCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/xor100.cpp b/src/mame/drivers/xor100.cpp index 9da4cd3ca6b..1b7cc7dbb03 100644 --- a/src/mame/drivers/xor100.cpp +++ b/src/mame/drivers/xor100.cpp @@ -512,7 +512,7 @@ void xor100_state::post_load() /* Machine Driver */ -static MACHINE_CONFIG_START( xor100, xor100_state ) +static MACHINE_CONFIG_START( xor100 ) /* basic machine hardware */ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_8MHz/2) MCFG_CPU_PROGRAM_MAP(xor100_mem) @@ -597,5 +597,5 @@ ROM_END /* System Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, xor100, 0, 0, xor100, xor100, driver_device, 0, "Xor Data Science", "XOR S-100-12", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, xor100, 0, 0, xor100, xor100, xor100_state, 0, "Xor Data Science", "XOR S-100-12", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/xorworld.cpp b/src/mame/drivers/xorworld.cpp index 332cf52e6d1..9e436c2aaab 100644 --- a/src/mame/drivers/xorworld.cpp +++ b/src/mame/drivers/xorworld.cpp @@ -171,7 +171,7 @@ static GFXDECODE_START( xorworld ) GFXDECODE_END -static MACHINE_CONFIG_START( xorworld, xorworld_state ) +static MACHINE_CONFIG_START( xorworld ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, 10000000) // 10 MHz MCFG_CPU_PROGRAM_MAP(xorworld_map) diff --git a/src/mame/drivers/xtheball.cpp b/src/mame/drivers/xtheball.cpp index 22638d9ebed..4f2044f4461 100644 --- a/src/mame/drivers/xtheball.cpp +++ b/src/mame/drivers/xtheball.cpp @@ -337,7 +337,7 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_START( xtheball, xtheball_state ) +static MACHINE_CONFIG_START( xtheball ) MCFG_CPU_ADD("maincpu", TMS34010, 40000000) MCFG_CPU_PROGRAM_MAP(main_map) @@ -400,4 +400,4 @@ ROM_END * *************************************/ -GAME( 1991, xtheball, 0, xtheball, xtheball, driver_device, 0, ROT0, "Rare", "X the Ball", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, xtheball, 0, xtheball, xtheball, xtheball_state, 0, ROT0, "Rare", "X the Ball", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/xtom3d.cpp b/src/mame/drivers/xtom3d.cpp index 5e725ea928f..69d3bd02433 100644 --- a/src/mame/drivers/xtom3d.cpp +++ b/src/mame/drivers/xtom3d.cpp @@ -394,7 +394,7 @@ void xtom3d_state::machine_reset() membank("video_bank2")->set_base(memregion("video_bios")->base() + 0x4000); } -static MACHINE_CONFIG_START( xtom3d, xtom3d_state ) +static MACHINE_CONFIG_START( xtom3d ) MCFG_CPU_ADD("maincpu", PENTIUM2, 450000000/16) // actually Pentium II 450 MCFG_CPU_PROGRAM_MAP(xtom3d_map) MCFG_CPU_IO_MAP(xtom3d_io) @@ -431,4 +431,4 @@ ROM_START( xtom3d ) ROM_END -GAME(1999, xtom3d, 0, xtom3d, at_keyboard, driver_device, 0, ROT0, "Jamie System Development", "X Tom 3D", MACHINE_IS_SKELETON) +GAME(1999, xtom3d, 0, xtom3d, at_keyboard, xtom3d_state, 0, ROT0, "Jamie System Development", "X Tom 3D", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/xxmissio.cpp b/src/mame/drivers/xxmissio.cpp index 79d22d91cbb..09fcf163042 100644 --- a/src/mame/drivers/xxmissio.cpp +++ b/src/mame/drivers/xxmissio.cpp @@ -260,7 +260,7 @@ GFXDECODE_END /****************************************************************************/ -static MACHINE_CONFIG_START( xxmissio, xxmissio_state ) +static MACHINE_CONFIG_START( xxmissio ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/4) /* 3.0MHz */ @@ -331,4 +331,4 @@ ROM_START( xxmissio ) ROM_LOAD16_BYTE( "xx11.4b", 0x0001, 0x8000, CRC(d9dd827c) SHA1(aea3a5abd871adf7f75ad4d6cc57eff0833135c7) ) ROM_END -GAME( 1986, xxmissio, 0, xxmissio, xxmissio, driver_device, 0, ROT90, "UPL", "XX Mission", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, xxmissio, 0, xxmissio, xxmissio, xxmissio_state, 0, ROT90, "UPL", "XX Mission", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/xybots.cpp b/src/mame/drivers/xybots.cpp index b564c0cedb8..70b3ce57cf4 100644 --- a/src/mame/drivers/xybots.cpp +++ b/src/mame/drivers/xybots.cpp @@ -180,7 +180,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( xybots, xybots_state ) +static MACHINE_CONFIG_START( xybots ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) diff --git a/src/mame/drivers/xyonix.cpp b/src/mame/drivers/xyonix.cpp index bc72efd1d1c..6b674a975af 100644 --- a/src/mame/drivers/xyonix.cpp +++ b/src/mame/drivers/xyonix.cpp @@ -224,7 +224,7 @@ GFXDECODE_END /* MACHINE driver *************************************************************/ -static MACHINE_CONFIG_START( xyonix, xyonix_state ) +static MACHINE_CONFIG_START( xyonix ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,16000000 / 4) /* 4 MHz ? */ @@ -275,4 +275,4 @@ ROM_END /* GAME drivers **************************************************************/ -GAME( 1989, xyonix, 0, xyonix, xyonix, driver_device, 0, ROT0, "Philko", "Xyonix", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, xyonix, 0, xyonix, xyonix, xyonix_state, 0, ROT0, "Philko", "Xyonix", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/yiear.cpp b/src/mame/drivers/yiear.cpp index 1ef1d9a0e5b..bdd7f3053b0 100644 --- a/src/mame/drivers/yiear.cpp +++ b/src/mame/drivers/yiear.cpp @@ -278,7 +278,7 @@ void yiear_state::machine_reset() m_yiear_nmi_enable = 0; } -static MACHINE_CONFIG_START( yiear, yiear_state ) +static MACHINE_CONFIG_START( yiear ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809,XTAL_18_432MHz/12) /* verified on pcb */ @@ -367,5 +367,5 @@ ROM_END -GAME( 1985, yiear, 0, yiear, yiear, driver_device, 0, ROT0, "Konami", "Yie Ar Kung-Fu (program code I)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, yiear2, yiear, yiear, yiear, driver_device, 0, ROT0, "Konami", "Yie Ar Kung-Fu (program code G)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, yiear, 0, yiear, yiear, yiear_state, 0, ROT0, "Konami", "Yie Ar Kung-Fu (program code I)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, yiear2, yiear, yiear, yiear, yiear_state, 0, ROT0, "Konami", "Yie Ar Kung-Fu (program code G)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ymmu100.cpp b/src/mame/drivers/ymmu100.cpp index da11e35f9ee..389c56869ff 100644 --- a/src/mame/drivers/ymmu100.cpp +++ b/src/mame/drivers/ymmu100.cpp @@ -431,7 +431,7 @@ static ADDRESS_MAP_START( mu100_iomap, AS_IO, 16, mu100_state ) AM_RANGE(h8_device::ADC_7, h8_device::ADC_7) AM_READ(adc7_r) ADDRESS_MAP_END -static MACHINE_CONFIG_START( mu100, mu100_state ) +static MACHINE_CONFIG_START( mu100 ) MCFG_CPU_ADD( "maincpu", H8S2655, XTAL_16MHz ) MCFG_CPU_PROGRAM_MAP( mu100_map ) MCFG_CPU_IO_MAP( mu100_iomap ) @@ -457,9 +457,6 @@ static MACHINE_CONFIG_START( mu100, mu100_state ) MCFG_H8_SCI_TX_CALLBACK(DEVWRITELINE(":mdout", midi_port_device, write_txd)) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( mu100r, mu100, mu100r_state ) -MACHINE_CONFIG_END - #define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \ ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(bios+1)) /* Note '+1' */ @@ -500,5 +497,5 @@ ROM_START( mu100r ) ROM_LOAD( "mu100-font.bin", 0x0000, 0x1000, BAD_DUMP CRC(a7d6c1d6) SHA1(9f0398d678bdf607cb34d83ee535f3b7fcc97c41) ) ROM_END -CONS( 1997, mu100, 0, 0, mu100, mu100, driver_device, 0, "Yamaha", "MU100", MACHINE_NOT_WORKING ) -CONS( 1997, mu100r, mu100, 0, mu100r, mu100, driver_device, 0, "Yamaha", "MU100 Rackable version", MACHINE_NOT_WORKING ) +CONS( 1997, mu100, 0, 0, mu100, mu100, mu100_state, 0, "Yamaha", "MU100", MACHINE_NOT_WORKING ) +CONS( 1997, mu100r, mu100, 0, mu100, mu100, mu100r_state, 0, "Yamaha", "MU100 Rackable version", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/yunsun16.cpp b/src/mame/drivers/yunsun16.cpp index ceb08fa8665..cd605dcf3dd 100644 --- a/src/mame/drivers/yunsun16.cpp +++ b/src/mame/drivers/yunsun16.cpp @@ -586,7 +586,7 @@ MACHINE_RESET_MEMBER(yunsun16_state, shocking) Magic Bubble ***************************************************************************/ -static MACHINE_CONFIG_START( magicbub, yunsun16_state ) +static MACHINE_CONFIG_START( magicbub ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -619,7 +619,7 @@ static MACHINE_CONFIG_START( magicbub, yunsun16_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) MACHINE_CONFIG_END @@ -629,7 +629,7 @@ MACHINE_CONFIG_END Shocking ***************************************************************************/ -static MACHINE_CONFIG_START( shocking, yunsun16_state ) +static MACHINE_CONFIG_START( shocking ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) @@ -652,7 +652,7 @@ static MACHINE_CONFIG_START( shocking, yunsun16_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) + MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) @@ -1020,10 +1020,10 @@ ROM_END GAME( 199?, magicbub, 0, magicbub, magicbub, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 199?, magicbuba, magicbub, magicbub, magicbua, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble (Adult version, YS-1302 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 199?, magicbubb, magicbub, shocking, magicbua, driver_device, 0, ROT0, "Yun Sung", "Magic Bubble (Adult version, YS-0211 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, paprazzi, 0, shocking, paprazzi, driver_device, 0, ROT270, "Yun Sung", "Paparazzi", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1997, shocking, 0, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1997, shockingk, shocking, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking (Korea, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1997, shockingko, shocking, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking (Korea, set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, bombkick, 0, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1998, bombkicka, bombkick, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 199?, magicbubb, magicbub, shocking, magicbua, yunsun16_state, 0, ROT0, "Yun Sung", "Magic Bubble (Adult version, YS-0211 PCB)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, paprazzi, 0, shocking, paprazzi, yunsun16_state, 0, ROT270, "Yun Sung", "Paparazzi", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1997, shocking, 0, shocking, shocking, yunsun16_state, 0, ROT0, "Yun Sung", "Shocking", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1997, shockingk, shocking, shocking, shocking, yunsun16_state, 0, ROT0, "Yun Sung", "Shocking (Korea, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1997, shockingko, shocking, shocking, shocking, yunsun16_state, 0, ROT0, "Yun Sung", "Shocking (Korea, set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, bombkick, 0, shocking, bombkick, yunsun16_state, 0, ROT0, "Yun Sung", "Bomb Kick (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, bombkicka, bombkick, shocking, bombkick, yunsun16_state, 0, ROT0, "Yun Sung", "Bomb Kick (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/yunsung8.cpp b/src/mame/drivers/yunsung8.cpp index e198e9d649d..30837a49e7e 100644 --- a/src/mame/drivers/yunsung8.cpp +++ b/src/mame/drivers/yunsung8.cpp @@ -350,7 +350,7 @@ void yunsung8_state::machine_reset() } -static MACHINE_CONFIG_START( yunsung8, yunsung8_state ) +static MACHINE_CONFIG_START( yunsung8 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Z80B @ 8MHz? */ @@ -385,7 +385,7 @@ static MACHINE_CONFIG_START( yunsung8, yunsung8_state ) MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb */ MCFG_MSM5205_VCLK_CB(WRITELINE(yunsung8_state, adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz, 4 Bits */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz, 4 Bits */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) MACHINE_CONFIG_END @@ -608,8 +608,8 @@ ROM_END ***************************************************************************/ -GAME( 1995, cannball, 0, yunsung8, cannball, driver_device, 0, ROT0, "Yun Sung / Soft Vision", "Cannon Ball (Yun Sung, horizontal)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, cannballv, cannball, yunsung8, cannbalv, driver_device, 0, ROT270, "Yun Sung / J&K Production", "Cannon Ball (Yun Sung, vertical)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, magix, 0, yunsung8, magix, driver_device, 0, ROT0, "Yun Sung", "Magix / Rock", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, magixb, magix, yunsung8, magix, driver_device, 0, ROT0, "Yun Sung", "Magix / Rock (no copyright message)", MACHINE_SUPPORTS_SAVE ) // was marked as bootleg, but has been seen on original PCBs -GAME( 1994?, rocktris, 0, yunsung8, rocktris, driver_device, 0, ROT0, "Yun Sung", "Rock Tris", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cannball, 0, yunsung8, cannball, yunsung8_state, 0, ROT0, "Yun Sung / Soft Vision", "Cannon Ball (Yun Sung, horizontal)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cannballv, cannball, yunsung8, cannbalv, yunsung8_state, 0, ROT270, "Yun Sung / J&K Production", "Cannon Ball (Yun Sung, vertical)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, magix, 0, yunsung8, magix, yunsung8_state, 0, ROT0, "Yun Sung", "Magix / Rock", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, magixb, magix, yunsung8, magix, yunsung8_state, 0, ROT0, "Yun Sung", "Magix / Rock (no copyright message)", MACHINE_SUPPORTS_SAVE ) // was marked as bootleg, but has been seen on original PCBs +GAME( 1994?, rocktris, 0, yunsung8, rocktris, yunsung8_state, 0, ROT0, "Yun Sung", "Rock Tris", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp index 70c3f9fec9f..bdcf92bdbfe 100644 --- a/src/mame/drivers/z100.cpp +++ b/src/mame/drivers/z100.cpp @@ -177,7 +177,7 @@ public: required_device m_pia1; required_device m_picm; required_device m_pics; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_floppy2; @@ -392,7 +392,7 @@ static ADDRESS_MAP_START(z100_io, AS_IO, 8, z100_state) // AM_RANGE (0xa4, 0xa7) gateway (reserved) // AM_RANGE (0xac, 0xad) Z-217 secondary disk controller (winchester) // AM_RANGE (0xae, 0xaf) Z-217 primary disk controller (winchester) - AM_RANGE (0xb0, 0xb3) AM_DEVREADWRITE("z207_fdc", fd1797_t, read, write) + AM_RANGE (0xb0, 0xb3) AM_DEVREADWRITE("z207_fdc", fd1797_device, read, write) AM_RANGE (0xb4, 0xb4) AM_WRITE(floppy_select_w) AM_RANGE (0xb5, 0xb5) AM_WRITE(floppy_motor_w) // z-207 secondary disk controller (wd1797) @@ -664,7 +664,7 @@ static SLOT_INTERFACE_START( z100_floppies ) SLOT_INTERFACE("dd", FLOPPY_525_DD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( z100, z100_state ) +static MACHINE_CONFIG_START( z100 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8088, XTAL_14_31818MHz/3) MCFG_CPU_PROGRAM_MAP(z100_mem) @@ -728,5 +728,5 @@ DRIVER_INIT_MEMBER(z100_state,z100) /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, z100, 0, 0, z100, z100, z100_state, z100, "Zenith", "Z-100", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1982, z100, 0, 0, z100, z100, z100_state, z100, "Zenith", "Z-100", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/drivers/z1013.cpp b/src/mame/drivers/z1013.cpp index ce59dec2464..cb081f103bf 100644 --- a/src/mame/drivers/z1013.cpp +++ b/src/mame/drivers/z1013.cpp @@ -362,7 +362,7 @@ static GFXDECODE_START( z1013 ) GFXDECODE_END /* Machine driver */ -static MACHINE_CONFIG_START( z1013, z1013_state ) +static MACHINE_CONFIG_START( z1013 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_1MHz ) MCFG_CPU_PROGRAM_MAP(z1013_mem) @@ -460,9 +460,9 @@ ROM_START( z1013k69 ) ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1985, z1013, 0, 0, z1013, z1013_8x4, driver_device, 0, "VEB Robotron Electronics Riesa", "Z1013 (matrix 8x4)", 0 ) -COMP( 1985, z1013a2, z1013, 0, z1013, z1013_8x8, driver_device, 0, "VEB Robotron Electronics Riesa", "Z1013 (matrix 8x8)", 0 ) -COMP( 1985, z1013k76, z1013, 0, z1013k76, z1013, driver_device, 0, "VEB Robotron Electronics Riesa", "Z1013 (K7659)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1985, z1013s60, z1013, 0, z1013k76, z1013_8x8, driver_device, 0, "VEB Robotron Electronics Riesa", "Z1013 (K7652/S6009)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1985, z1013k69, z1013, 0, z1013k76, z1013, driver_device, 0, "VEB Robotron Electronics Riesa", "Z1013 (K7669)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1985, z1013, 0, 0, z1013, z1013_8x4, z1013_state, 0, "VEB Robotron Electronics Riesa", "Z1013 (matrix 8x4)", 0 ) +COMP( 1985, z1013a2, z1013, 0, z1013, z1013_8x8, z1013_state, 0, "VEB Robotron Electronics Riesa", "Z1013 (matrix 8x8)", 0 ) +COMP( 1985, z1013k76, z1013, 0, z1013k76, z1013, z1013_state, 0, "VEB Robotron Electronics Riesa", "Z1013 (K7659)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 1985, z1013s60, z1013, 0, z1013k76, z1013_8x8, z1013_state, 0, "VEB Robotron Electronics Riesa", "Z1013 (K7652/S6009)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 1985, z1013k69, z1013, 0, z1013k76, z1013, z1013_state, 0, "VEB Robotron Electronics Riesa", "Z1013 (K7669)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/z80dev.cpp b/src/mame/drivers/z80dev.cpp index ac72881f1d7..a88275e75ed 100644 --- a/src/mame/drivers/z80dev.cpp +++ b/src/mame/drivers/z80dev.cpp @@ -105,7 +105,7 @@ INPUT_PORTS_START( z80dev ) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LD") PORT_CODE(KEYCODE_L) INPUT_PORTS_END -static MACHINE_CONFIG_START( z80dev, z80dev_state ) +static MACHINE_CONFIG_START( z80dev ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(z80dev_mem) @@ -123,5 +123,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 198?, z80dev, 0, 0, z80dev, z80dev, driver_device, 0, "", "Z80 dev board", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 198?, z80dev, 0, 0, z80dev, z80dev, z80dev_state, 0, "", "Z80 dev board", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/z80ne.cpp b/src/mame/drivers/z80ne.cpp index 1bb5233afd3..d7c59bb2c73 100644 --- a/src/mame/drivers/z80ne.cpp +++ b/src/mame/drivers/z80ne.cpp @@ -97,6 +97,7 @@ #include "imagedev/flopdrv.h" #include "formats/dmk_dsk.h" #include "machine/ram.h" +#include "softlist.h" /* Layout */ #include "z80ne.lh" @@ -221,7 +222,7 @@ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LX.384 Reset") PORT_CO /* Settings */ PORT_START("LX.385") -PORT_CONFNAME(0x07, 0x01 , "LX.385 Cassette: P1,P3 Data Rate") +PORT_CONFNAME(0x07, 0x04, "LX.385 Cassette: P1,P3 Data Rate") PORT_CONFSETTING( 0x01, "A-B: 300 bps") PORT_CONFSETTING( 0x02, "A-C: 600 bps") PORT_CONFSETTING( 0x04, "A-D: 1200 bps") @@ -409,7 +410,7 @@ static SLOT_INTERFACE_START( z80ne_floppies ) SLOT_INTERFACE("sssd", FLOPPY_525_SSSD) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( z80ne, z80ne_state ) +static MACHINE_CONFIG_START( z80ne ) /* basic machine hardware */ MCFG_CPU_ADD("z80ne", Z80, Z80NE_CPU_SPEED_HZ) MCFG_CPU_PROGRAM_MAP(z80ne_mem) @@ -424,15 +425,20 @@ static MACHINE_CONFIG_START( z80ne, z80ne_state ) MCFG_CASSETTE_ADD( "cassette" ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) + MCFG_CASSETTE_INTERFACE("z80ne_cass") MCFG_CASSETTE_ADD( "cassette2" ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) + MCFG_CASSETTE_INTERFACE("z80ne_cass") MCFG_DEFAULT_LAYOUT(layout_z80ne) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("32K") + + // all known tapes require LX.388 expansion + //MCFG_SOFTWARE_LIST_ADD("cass_list","z80ne_cass") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( z80net, z80ne ) @@ -460,9 +466,11 @@ static MACHINE_CONFIG_DERIVED( z80net, z80ne ) MCFG_RAM_MODIFY(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("32K") MCFG_RAM_EXTRA_OPTIONS("1K") + + MCFG_SOFTWARE_LIST_ADD("cass_list","z80ne_cass") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( z80netb, z80ne_state ) +static MACHINE_CONFIG_START( z80netb ) /* basic machine hardware */ MCFG_CPU_ADD("z80ne", Z80, Z80NE_CPU_SPEED_HZ) MCFG_CPU_PROGRAM_MAP(z80netb_mem) @@ -477,9 +485,11 @@ static MACHINE_CONFIG_START( z80netb, z80ne_state ) MCFG_CASSETTE_ADD( "cassette" ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) + MCFG_CASSETTE_INTERFACE("z80ne_cass") MCFG_CASSETTE_ADD( "cassette2" ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) + MCFG_CASSETTE_INTERFACE("z80ne_cass") MCFG_DEVICE_ADD("lx388_kr2376", KR2376, 50000) @@ -497,9 +507,11 @@ static MACHINE_CONFIG_START( z80netb, z80ne_state ) MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("32K") MCFG_RAM_EXTRA_OPTIONS("1K") + + MCFG_SOFTWARE_LIST_ADD("cass_list","z80ne_cass") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( z80netf, z80ne_state ) +static MACHINE_CONFIG_START( z80netf ) /* basic machine hardware */ MCFG_CPU_ADD("z80ne", Z80, Z80NE_CPU_SPEED_HZ) MCFG_CPU_PROGRAM_MAP(z80netf_mem) @@ -514,9 +526,11 @@ static MACHINE_CONFIG_START( z80netf, z80ne_state ) MCFG_CASSETTE_ADD( "cassette" ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) + MCFG_CASSETTE_INTERFACE("z80ne_cass") MCFG_CASSETTE_ADD( "cassette2" ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) + MCFG_CASSETTE_INTERFACE("z80ne_cass") MCFG_DEVICE_ADD("lx388_kr2376", KR2376, 50000) @@ -539,6 +553,9 @@ static MACHINE_CONFIG_START( z80netf, z80ne_state ) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("56K") + + MCFG_SOFTWARE_LIST_ADD("cass_list","z80ne_cass") + MCFG_SOFTWARE_LIST_ADD("flop_list","z80ne_flop") MACHINE_CONFIG_END /****************************************************************************** @@ -594,8 +611,8 @@ ROM_START( z80netf ) ROM_LOAD( "ep2390.ic6", 0x14C00, 0x0400, CRC(28d28eee) SHA1(b80f75c1ac4905ae369ecbc9b9ce120cc85502ed) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, z80ne, 0, 0, z80ne, z80ne, z80ne_state, z80ne, "Nuova Elettronica", "Z80NE", MACHINE_NO_SOUND_HW) -COMP( 1980, z80net, z80ne, 0, z80net, z80net, z80ne_state, z80net, "Nuova Elettronica", "Z80NE + LX.388", MACHINE_NO_SOUND_HW) -COMP( 1980, z80netb, z80ne, 0, z80netb, z80net, z80ne_state, z80netb, "Nuova Elettronica", "Z80NE + LX.388 + Basic 16k", MACHINE_NO_SOUND_HW) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 1980, z80ne, 0, 0, z80ne, z80ne, z80ne_state, z80ne, "Nuova Elettronica", "Z80NE", MACHINE_NO_SOUND_HW) +COMP( 1980, z80net, z80ne, 0, z80net, z80net, z80ne_state, z80net, "Nuova Elettronica", "Z80NE + LX.388", MACHINE_NO_SOUND_HW) +COMP( 1980, z80netb, z80ne, 0, z80netb, z80net, z80ne_state, z80netb, "Nuova Elettronica", "Z80NE + LX.388 + Basic 16k", MACHINE_NO_SOUND_HW) COMP( 1980, z80netf, z80ne, 0, z80netf, z80netf, z80ne_state, z80netf, "Nuova Elettronica", "Z80NE + LX.388 + LX.390", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/z88.cpp b/src/mame/drivers/z88.cpp index 87ec399d8a0..07f616d8847 100644 --- a/src/mame/drivers/z88.cpp +++ b/src/mame/drivers/z88.cpp @@ -20,6 +20,7 @@ #include "emu.h" #include "includes/z88.h" + #include "screen.h" #include "speaker.h" @@ -620,7 +621,7 @@ static SLOT_INTERFACE_START(z88_cart) SLOT_INTERFACE("1024kflash", Z88_1024K_FLASH) // 1024KB Flash cart SLOT_INTERFACE_END -static MACHINE_CONFIG_START( z88, z88_state ) +static MACHINE_CONFIG_START( z88 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_9_8304MHz/3) // divided by 3 through the uPD65031 MCFG_CPU_PROGRAM_MAP(z88_mem) @@ -751,15 +752,15 @@ ROM_START(z88tr) ROMX_LOAD("z88v317tk.rom", 0x00000, 0x20000, CRC(9468d677) SHA1(8d76e94f43846c736bf257d15d531c2df1e20fae), ROM_BIOS(1) ) ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1988, z88 , 0, 0, z88, z88 , driver_device, 0, "Cambridge Computers", "Z88" , MACHINE_NOT_WORKING) -COMP( 1988, z88de, z88, 0, z88, z88de, driver_device, 0, "Cambridge Computers", "Z88 (German)" , MACHINE_NOT_WORKING) -COMP( 1988, z88es, z88, 0, z88, z88es, driver_device, 0, "Cambridge Computers", "Z88 (Spanish)" , MACHINE_NOT_WORKING) -COMP( 1988, z88fr, z88, 0, z88, z88fr, driver_device, 0, "Cambridge Computers", "Z88 (French)" , MACHINE_NOT_WORKING) -COMP( 1988, z88it, z88, 0, z88, z88it, driver_device, 0, "Cambridge Computers", "Z88 (Italian)" , MACHINE_NOT_WORKING) -COMP( 1988, z88se, z88, 0, z88, z88se, driver_device, 0, "Cambridge Computers", "Z88 (Swedish)" , MACHINE_NOT_WORKING) -COMP( 1988, z88fi, z88, 0, z88, z88se, driver_device, 0, "Cambridge Computers", "Z88 (Finnish)" , MACHINE_NOT_WORKING) -COMP( 1988, z88no, z88, 0, z88, z88no, driver_device, 0, "Cambridge Computers", "Z88 (Norwegian)", MACHINE_NOT_WORKING) -COMP( 1988, z88dk, z88, 0, z88, z88no, driver_device, 0, "Cambridge Computers", "Z88 (Danish)" , MACHINE_NOT_WORKING) -COMP( 1988, z88ch, z88, 0, z88, z88ch, driver_device, 0, "Cambridge Computers", "Z88 (Swiss)" , MACHINE_NOT_WORKING) -COMP( 1988, z88tr, z88, 0, z88, z88tr, driver_device, 0, "Cambridge Computers", "Z88 (Turkish)" , MACHINE_NOT_WORKING) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1988, z88 , 0, 0, z88, z88 , z88_state, 0, "Cambridge Computers", "Z88" , MACHINE_NOT_WORKING) +COMP( 1988, z88de, z88, 0, z88, z88de, z88_state, 0, "Cambridge Computers", "Z88 (German)" , MACHINE_NOT_WORKING) +COMP( 1988, z88es, z88, 0, z88, z88es, z88_state, 0, "Cambridge Computers", "Z88 (Spanish)" , MACHINE_NOT_WORKING) +COMP( 1988, z88fr, z88, 0, z88, z88fr, z88_state, 0, "Cambridge Computers", "Z88 (French)" , MACHINE_NOT_WORKING) +COMP( 1988, z88it, z88, 0, z88, z88it, z88_state, 0, "Cambridge Computers", "Z88 (Italian)" , MACHINE_NOT_WORKING) +COMP( 1988, z88se, z88, 0, z88, z88se, z88_state, 0, "Cambridge Computers", "Z88 (Swedish)" , MACHINE_NOT_WORKING) +COMP( 1988, z88fi, z88, 0, z88, z88se, z88_state, 0, "Cambridge Computers", "Z88 (Finnish)" , MACHINE_NOT_WORKING) +COMP( 1988, z88no, z88, 0, z88, z88no, z88_state, 0, "Cambridge Computers", "Z88 (Norwegian)", MACHINE_NOT_WORKING) +COMP( 1988, z88dk, z88, 0, z88, z88no, z88_state, 0, "Cambridge Computers", "Z88 (Danish)" , MACHINE_NOT_WORKING) +COMP( 1988, z88ch, z88, 0, z88, z88ch, z88_state, 0, "Cambridge Computers", "Z88 (Swiss)" , MACHINE_NOT_WORKING) +COMP( 1988, z88tr, z88, 0, z88, z88tr, z88_state, 0, "Cambridge Computers", "Z88 (Turkish)" , MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp index e842e268ebc..725a5b6d748 100644 --- a/src/mame/drivers/z9001.cpp +++ b/src/mame/drivers/z9001.cpp @@ -56,7 +56,7 @@ public: { } - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_WRITE8_MEMBER(port88_w); DECLARE_WRITE_LINE_MEMBER(cass_w); TIMER_DEVICE_CALLBACK_MEMBER(timer_callback); @@ -187,7 +187,7 @@ static const gfx_layout z9001_charlayout = 8*8 /* every char takes 8 bytes */ }; -WRITE8_MEMBER( z9001_state::kbd_put ) +void z9001_state::kbd_put(u8 data) { m_maincpu->space(AS_PROGRAM).write_byte(0x0025, data); } @@ -197,7 +197,7 @@ static GFXDECODE_START( z9001 ) GFXDECODE_END -static MACHINE_CONFIG_START( z9001, z9001_state ) +static MACHINE_CONFIG_START( z9001 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_9_8304MHz / 4) MCFG_CPU_PROGRAM_MAP(z9001_mem) @@ -225,7 +225,7 @@ static MACHINE_CONFIG_START( z9001, z9001_state ) /* Devices */ MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(z9001_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(z9001_state, kbd_put)) MCFG_TIMER_DRIVER_ADD_PERIODIC("z9001_timer", z9001_state, timer_callback, attotime::from_msec(10)) MCFG_DEVICE_ADD("z80pio1", Z80PIO, XTAL_9_8304MHz / 4) @@ -304,10 +304,10 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, z9001, 0, 0, z9001, z9001, driver_device, 0, "Robotron", "Z9001 (KC 85/1.10)", MACHINE_NOT_WORKING ) -COMP( 1986, kc85_111, z9001, 0, z9001, z9001, driver_device, 0, "Robotron", "KC 85/1.11", MACHINE_NOT_WORKING ) -COMP( 1987, kc87_10, z9001, 0, z9001, z9001, driver_device, 0, "Robotron", "KC 87.10", MACHINE_NOT_WORKING ) -COMP( 1987, kc87_11, z9001, 0, z9001, z9001, driver_device, 0, "Robotron", "KC 87.11", MACHINE_NOT_WORKING ) -COMP( 1987, kc87_20, z9001, 0, z9001, z9001, driver_device, 0, "Robotron", "KC 87.20", MACHINE_NOT_WORKING ) -COMP( 1987, kc87_21, z9001, 0, z9001, z9001, driver_device, 0, "Robotron", "KC 87.21", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1984, z9001, 0, 0, z9001, z9001, z9001_state, 0, "Robotron", "Z9001 (KC 85/1.10)", MACHINE_NOT_WORKING ) +COMP( 1986, kc85_111, z9001, 0, z9001, z9001, z9001_state, 0, "Robotron", "KC 85/1.11", MACHINE_NOT_WORKING ) +COMP( 1987, kc87_10, z9001, 0, z9001, z9001, z9001_state, 0, "Robotron", "KC 87.10", MACHINE_NOT_WORKING ) +COMP( 1987, kc87_11, z9001, 0, z9001, z9001, z9001_state, 0, "Robotron", "KC 87.11", MACHINE_NOT_WORKING ) +COMP( 1987, kc87_20, z9001, 0, z9001, z9001, z9001_state, 0, "Robotron", "KC 87.20", MACHINE_NOT_WORKING ) +COMP( 1987, kc87_21, z9001, 0, z9001, z9001, z9001_state, 0, "Robotron", "KC 87.21", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/zac2650.cpp b/src/mame/drivers/zac2650.cpp index 1bc2e0f61f5..8a401fe20cb 100644 --- a/src/mame/drivers/zac2650.cpp +++ b/src/mame/drivers/zac2650.cpp @@ -239,7 +239,7 @@ static GFXDECODE_START( tinvader ) GFXDECODE_SCALE( nullptr, 0x1F00, s2636_character, 0, 2, 8, 6 ) /* dynamic */ GFXDECODE_END -static MACHINE_CONFIG_START( tinvader, zac2650_state ) +static MACHINE_CONFIG_START( tinvader ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 3800000/4) @@ -318,6 +318,6 @@ ROM_START( dodgem ) ROM_END -GAMEL(1979?,tinv2650, 0, tinvader, tinvader, driver_device, 0, ROT270, "Zaccaria / Zelco", "The Invaders", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_tinv2650 ) -GAME( 1979?,sia2650, tinv2650, tinvader, sinvader, driver_device, 0, ROT270, "bootleg (Sidam)", "Super Invader Attack (bootleg of The Invaders)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 1980? -GAME( 1979, dodgem, 0, tinvader, dodgem, driver_device, 0, ROT0, "Zaccaria", "Dodgem", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAMEL(1979?,tinv2650, 0, tinvader, tinvader, zac2650_state, 0, ROT270, "Zaccaria / Zelco", "The Invaders", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_tinv2650 ) +GAME( 1979?,sia2650, tinv2650, tinvader, sinvader, zac2650_state, 0, ROT270, "bootleg (Sidam)", "Super Invader Attack (bootleg of The Invaders)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 1980? +GAME( 1979, dodgem, 0, tinvader, dodgem, zac2650_state, 0, ROT0, "Zaccaria", "Dodgem", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/zac_1.cpp b/src/mame/drivers/zac_1.cpp index d0e9146b2ad..b8adb03a90f 100644 --- a/src/mame/drivers/zac_1.cpp +++ b/src/mame/drivers/zac_1.cpp @@ -243,7 +243,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(zac_1_state::zac_1_outtimer) } } -static MACHINE_CONFIG_START( zac_1, zac_1_state ) +static MACHINE_CONFIG_START( zac_1 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 6000000/2) // no xtal, just 2 chips forming a random oscillator MCFG_CPU_PROGRAM_MAP(zac_1_map) @@ -448,15 +448,15 @@ ROM_START(wsports) ROM_LOAD ( "ws5.bin", 0x1000, 0x0400, CRC(5ef51ced) SHA1(390579d0482ceabf87924f7718ef33e336726d92)) ROM_END -GAME(1981, ewf, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Earth Wind Fire", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1980, firemntn, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Fire Mountain", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1978, futurwld, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Future World", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1979, hotwheel, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Hot Wheels", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1978, hod, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "House of Diamonds", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1981, locomotp, 0, locomotp, zac_1, driver_device, 0, ROT0, "Zaccaria", "Locomotion", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1979, strapids, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Shooting the Rapids", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1980, sshtlzac, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Space Shuttle (Zaccaria)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1980, stargod, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Star God", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1980, stargoda, stargod, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Star God (alternate sound)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1980, stargodb, stargod, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Star God (variable replay score)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) -GAME(1978, wsports, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Winter Sports", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1981, ewf, 0, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Earth Wind Fire", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1980, firemntn, 0, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Fire Mountain", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1978, futurwld, 0, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Future World", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1979, hotwheel, 0, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Hot Wheels", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1978, hod, 0, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "House of Diamonds", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1981, locomotp, 0, locomotp, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Locomotion", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1979, strapids, 0, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Shooting the Rapids", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1980, sshtlzac, 0, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Space Shuttle (Zaccaria)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1980, stargod, 0, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Star God", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1980, stargoda, stargod, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Star God (alternate sound)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1980, stargodb, stargod, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Star God (variable replay score)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +GAME(1978, wsports, 0, zac_1, zac_1, zac_1_state, 0, ROT0, "Zaccaria", "Winter Sports", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND) diff --git a/src/mame/drivers/zac_2.cpp b/src/mame/drivers/zac_2.cpp index b8843aafc83..b0499522c15 100644 --- a/src/mame/drivers/zac_2.cpp +++ b/src/mame/drivers/zac_2.cpp @@ -201,7 +201,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(zac_2_state::zac_2_outtimer) } } -static MACHINE_CONFIG_START( zac_2, zac_2_state ) +static MACHINE_CONFIG_START( zac_2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, 6000000/2) MCFG_CPU_PROGRAM_MAP(zac_2_map) @@ -966,44 +966,44 @@ ROM_START(zankor) ROM_LOAD("zan_ic6.128", 0x8000, 0x4000, CRC(13a5b8d4) SHA1(d8c976b3f5e9c7cded0922feefa1531c59432515)) ROM_END -GAME(1986, bbeltzac, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Black Belt (Zaccaria)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, clown, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Clown", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, dvlrider, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Devil Riders", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, dvlrideri, dvlrider, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Devil Riders (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, dvlriderg, dvlrider, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Devil Riders (German speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, dvlriderf, dvlrider, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Devil Riders (French speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, farfalla, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Farfalla", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, farfallai, farfalla, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Farfalla (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, farfallag, farfalla, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Farfalla (German speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, mcastle, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Magic Castle", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, mcastlei, mcastle, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Magic Castle (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, mcastleg, mcastle, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Magic Castle (German speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1984, mcastlef, mcastle, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Magic Castle (French speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, mexico, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Mexico 86 (German speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, nstrphnx, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "New Star's Phoenix (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, pinchamp, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Pinball Champ", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, pinchampg, pinchamp, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Pinball Champ (German speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, pinchampi, pinchamp, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Pinball Champ (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, pinchamp7, pinchamp, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Pinball Champ (7 digits)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, pinchamp7g, pinchamp, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Pinball Champ (7 digits German speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, pinchamp7i, pinchamp, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Pinball Champ (7 digits Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, poolcham, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Pool Champion", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, poolchami, poolcham, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Pool Champion (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, poolchama, poolcham, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Pool Champion (alternate sound)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, robot, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Robot (Zaccaria)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, roboti, robot, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Robot (Zaccaria, Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, robotg, robot, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Robot (Zaccaria, German speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1985, robotf, robot, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Robot (Zaccaria, French speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, scram_tp, 0, zac_2, zac_2, driver_device, 0, ROT0, "Tecnoplay", "Scramble (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, socrking, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Soccer Kings", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, socrkinga, socrking, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Soccer Kings (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, socrkingi, socrking, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Soccer Kings (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1982, socrkingg, socrking, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Soccer Kings (German speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, spookyp, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Spooky", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, spookyi, spookyp, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Spooky (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, strsphnx, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Star's Phoenix (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1987, thndrman, 0, zac_2, zac_2, driver_device, 0, ROT0, "Apple Time", "Thunder Man", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, tmachzac, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Time Machine (Zaccaria)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, tmachzacg, tmachzac, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Time Machine (Zaccaria, German speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1983, tmachzacf, tmachzac, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Time Machine (Zaccaria, French speech)", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1986, zankor, 0, zac_2, zac_2, driver_device, 0, ROT0, "Zaccaria", "Zankor (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, bbeltzac, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Black Belt (Zaccaria)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, clown, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Clown", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, dvlrider, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Devil Riders", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, dvlrideri, dvlrider, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Devil Riders (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, dvlriderg, dvlrider, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Devil Riders (German speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, dvlriderf, dvlrider, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Devil Riders (French speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, farfalla, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Farfalla", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, farfallai, farfalla, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Farfalla (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, farfallag, farfalla, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Farfalla (German speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, mcastle, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Magic Castle", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, mcastlei, mcastle, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Magic Castle (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, mcastleg, mcastle, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Magic Castle (German speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1984, mcastlef, mcastle, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Magic Castle (French speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, mexico, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Mexico 86 (German speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, nstrphnx, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "New Star's Phoenix (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, pinchamp, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Pinball Champ", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, pinchampg, pinchamp, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Pinball Champ (German speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, pinchampi, pinchamp, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Pinball Champ (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, pinchamp7, pinchamp, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Pinball Champ (7 digits)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, pinchamp7g, pinchamp, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Pinball Champ (7 digits German speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, pinchamp7i, pinchamp, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Pinball Champ (7 digits Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, poolcham, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Pool Champion", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, poolchami, poolcham, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Pool Champion (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, poolchama, poolcham, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Pool Champion (alternate sound)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, robot, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Robot (Zaccaria)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, roboti, robot, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Robot (Zaccaria, Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, robotg, robot, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Robot (Zaccaria, German speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1985, robotf, robot, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Robot (Zaccaria, French speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, scram_tp, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Tecnoplay", "Scramble (Pinball)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, socrking, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Soccer Kings", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, socrkinga, socrking, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Soccer Kings (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, socrkingi, socrking, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Soccer Kings (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1982, socrkingg, socrking, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Soccer Kings (German speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, spookyp, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Spooky", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, spookyi, spookyp, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Spooky (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, strsphnx, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Star's Phoenix (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1987, thndrman, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Apple Time", "Thunder Man", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, tmachzac, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Time Machine (Zaccaria)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, tmachzacg, tmachzac, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Time Machine (Zaccaria, German speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, tmachzacf, tmachzac, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Time Machine (Zaccaria, French speech)", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1986, zankor, 0, zac_2, zac_2, zac_2_state, 0, ROT0, "Zaccaria", "Zankor (Italian speech)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/zac_proto.cpp b/src/mame/drivers/zac_proto.cpp index 2a34b478a14..aa2faf52ab6 100644 --- a/src/mame/drivers/zac_proto.cpp +++ b/src/mame/drivers/zac_proto.cpp @@ -233,7 +233,7 @@ void zac_proto_state::machine_reset() output().set_digit_value(10, 0x3f); // units shows zero all the time } -static MACHINE_CONFIG_START( zac_proto, zac_proto_state ) +static MACHINE_CONFIG_START( zac_proto ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", INS8060, XTAL_4MHz / 2) // Using SC/MP II chip which has an internal /2 circuit. MCFG_CPU_PROGRAM_MAP(zac_proto_map) @@ -279,6 +279,6 @@ ROM_START(spacecty) ROM_LOAD("zsc4.dat", 0x1400, 0x0400, CRC(69e0bb95) SHA1(d9a1d0159bf49445b0ece0f9d7806ed80657c2b2)) ROM_END -GAME(1978, skijump, 0, zac_proto, zac_proto, driver_device, 0, ROT0, "Zaccaria", "Ski Jump", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1979, spacecty, 0, zac_proto, zac_proto, driver_device, 0, ROT0, "Zaccaria", "Space City", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) -GAME(1978, strike, 0, zac_proto, zac_proto, driver_device, 0, ROT0, "Zaccaria", "Strike", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1978, skijump, 0, zac_proto, zac_proto, zac_proto_state, 0, ROT0, "Zaccaria", "Ski Jump", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1979, spacecty, 0, zac_proto, zac_proto, zac_proto_state, 0, ROT0, "Zaccaria", "Space City", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +GAME(1978, strike, 0, zac_proto, zac_proto, zac_proto_state, 0, ROT0, "Zaccaria", "Strike", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/zaccaria.cpp b/src/mame/drivers/zaccaria.cpp index 6332f15e54c..c45538846b3 100644 --- a/src/mame/drivers/zaccaria.cpp +++ b/src/mame/drivers/zaccaria.cpp @@ -338,7 +338,7 @@ INTERRUPT_GEN_MEMBER(zaccaria_state::vblank_irq) } -static MACHINE_CONFIG_START( zaccaria, zaccaria_state ) +static MACHINE_CONFIG_START( zaccaria ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL_18_432MHz/6) /* verified on pcb */ @@ -534,7 +534,7 @@ ROM_END -GAME( 1983, monymony, 0, zaccaria, monymony, driver_device, 0, ROT90, "Zaccaria", "Money Money", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, jackrabt, 0, zaccaria, jackrabt, driver_device, 0, ROT90, "Zaccaria", "Jack Rabbit (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, jackrabt2, jackrabt, zaccaria, jackrabt, driver_device, 0, ROT90, "Zaccaria", "Jack Rabbit (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, jackrabts, jackrabt, zaccaria, jackrabt, driver_device, 0, ROT90, "Zaccaria", "Jack Rabbit (special)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, monymony, 0, zaccaria, monymony, zaccaria_state, 0, ROT90, "Zaccaria", "Money Money", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, jackrabt, 0, zaccaria, jackrabt, zaccaria_state, 0, ROT90, "Zaccaria", "Jack Rabbit (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, jackrabt2, jackrabt, zaccaria, jackrabt, zaccaria_state, 0, ROT90, "Zaccaria", "Jack Rabbit (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, jackrabts, jackrabt, zaccaria, jackrabt, zaccaria_state, 0, ROT90, "Zaccaria", "Jack Rabbit (special)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/zapcomputer.cpp b/src/mame/drivers/zapcomputer.cpp index 4819ae7242a..455531b56e9 100644 --- a/src/mame/drivers/zapcomputer.cpp +++ b/src/mame/drivers/zapcomputer.cpp @@ -156,7 +156,7 @@ void zapcomp_state::machine_start() { } -static MACHINE_CONFIG_START( zapcomp, zapcomp_state ) +static MACHINE_CONFIG_START( zapcomp ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, XTAL_2MHz) MCFG_CPU_PROGRAM_MAP(zapcomp_mem) @@ -171,5 +171,5 @@ ROM_START( zapcomp ) ROM_LOAD("zap.rom", 0x0000, 0x0400, CRC(3f4416e9) SHA1(d6493707bfba1a1e1e551f8144194afa5bda3316) ) ROM_END -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1981, zapcomp, 0, 0, zapcomp, zapcomp, driver_device, 0, "Steve Ciarcia / BYTE / McGRAW-HILL", "ZAP - Z80 Applications Processor", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1981, zapcomp, 0, 0, zapcomp, zapcomp, zapcomp_state, 0, "Steve Ciarcia / BYTE / McGRAW-HILL", "ZAP - Z80 Applications Processor", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/zaurus.cpp b/src/mame/drivers/zaurus.cpp index fe86bec9ec1..15920f5eddd 100644 --- a/src/mame/drivers/zaurus.cpp +++ b/src/mame/drivers/zaurus.cpp @@ -1747,7 +1747,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(zaurus_state::rtc_irq_callback) } // TODO: main CPU differs greatly between versions! -static MACHINE_CONFIG_START( zaurus, zaurus_state ) +static MACHINE_CONFIG_START( zaurus ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",PXA255,MAIN_CLOCK) @@ -1809,9 +1809,9 @@ ROM_START( zslc1000 ) ROM_LOAD( "openzaurus 3.5.3 - zimage-sharp sl-c1000-20050427214434.bin", 0x000000, 0x128980, BAD_DUMP CRC(1e1a9279) SHA1(909ac3f00385eced55822d6a155b79d9d25f43b3) ) ROM_END -COMP( 2002, zsl5500, 0, 0, zaurus, zaurus, driver_device, 0, "Sharp", "Zaurus SL-5500 \"Collie\"", MACHINE_IS_SKELETON ) -COMP( 2002, zsl5600, 0, 0, zaurus, zaurus, driver_device, 0, "Sharp", "Zaurus SL-5600 / SL-B500 \"Poodle\"", MACHINE_IS_SKELETON ) -COMP( 2003, zslc750, 0, 0, zaurus, zaurus, driver_device, 0, "Sharp", "Zaurus SL-C750 \"Shepherd\" (Japan)", MACHINE_IS_SKELETON ) -COMP( 2004, zslc760, 0, 0, zaurus, zaurus, driver_device, 0, "Sharp", "Zaurus SL-C760 \"Husky\" (Japan)", MACHINE_IS_SKELETON ) -COMP( 200?, zslc3000, 0, 0, zaurus, zaurus, driver_device, 0, "Sharp", "Zaurus SL-C3000 \"Spitz\" (Japan)", MACHINE_IS_SKELETON ) -COMP( 200?, zslc1000, 0, 0, zaurus, zaurus, driver_device, 0, "Sharp", "Zaurus SL-C3000 \"Akita\" (Japan)", MACHINE_IS_SKELETON ) +COMP( 2002, zsl5500, 0, 0, zaurus, zaurus, zaurus_state, 0, "Sharp", "Zaurus SL-5500 \"Collie\"", MACHINE_IS_SKELETON ) +COMP( 2002, zsl5600, 0, 0, zaurus, zaurus, zaurus_state, 0, "Sharp", "Zaurus SL-5600 / SL-B500 \"Poodle\"", MACHINE_IS_SKELETON ) +COMP( 2003, zslc750, 0, 0, zaurus, zaurus, zaurus_state, 0, "Sharp", "Zaurus SL-C750 \"Shepherd\" (Japan)", MACHINE_IS_SKELETON ) +COMP( 2004, zslc760, 0, 0, zaurus, zaurus, zaurus_state, 0, "Sharp", "Zaurus SL-C760 \"Husky\" (Japan)", MACHINE_IS_SKELETON ) +COMP( 200?, zslc3000, 0, 0, zaurus, zaurus, zaurus_state, 0, "Sharp", "Zaurus SL-C3000 \"Spitz\" (Japan)", MACHINE_IS_SKELETON ) +COMP( 200?, zslc1000, 0, 0, zaurus, zaurus, zaurus_state, 0, "Sharp", "Zaurus SL-C3000 \"Akita\" (Japan)", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/zaxxon.cpp b/src/mame/drivers/zaxxon.cpp index 9c3cd3f05c8..19bc5e26523 100644 --- a/src/mame/drivers/zaxxon.cpp +++ b/src/mame/drivers/zaxxon.cpp @@ -914,7 +914,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( root, zaxxon_state ) +static MACHINE_CONFIG_START( root ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/16) @@ -1581,25 +1581,25 @@ DRIVER_INIT_MEMBER(zaxxon_state,razmataz) *************************************/ /* these games run on standard Zaxxon hardware */ -GAME( 1982, zaxxon, 0, zaxxon, zaxxon, driver_device, 0, ROT90, "Sega", "Zaxxon (set 1, rev D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zaxxon2, zaxxon, zaxxon, zaxxon, driver_device, 0, ROT90, "Sega", "Zaxxon (set 2, unknown rev)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zaxxon3, zaxxon, zaxxon, zaxxon, driver_device, 0, ROT90, "Sega", "Zaxxon (set 3, unknown rev)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zaxxonj, zaxxon, szaxxon, zaxxon, zaxxon_state, zaxxonj, ROT90, "Sega", "Zaxxon (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zaxxonb, zaxxon, szaxxon, zaxxon, zaxxon_state, zaxxonj, ROT90, "bootleg", "Jackson", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zaxxon, 0, zaxxon, zaxxon, zaxxon_state, 0, ROT90, "Sega", "Zaxxon (set 1, rev D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zaxxon2, zaxxon, zaxxon, zaxxon, zaxxon_state, 0, ROT90, "Sega", "Zaxxon (set 2, unknown rev)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zaxxon3, zaxxon, zaxxon, zaxxon, zaxxon_state, 0, ROT90, "Sega", "Zaxxon (set 3, unknown rev)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zaxxonj, zaxxon, szaxxon, zaxxon, zaxxon_state, zaxxonj, ROT90, "Sega", "Zaxxon (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zaxxonb, zaxxon, szaxxon, zaxxon, zaxxon_state, zaxxonj, ROT90, "bootleg", "Jackson", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) /* standard Zaxxon hardware but extra sound board plugged into 8255 PPI socket and encrypted cpu */ -GAME( 1982, szaxxon, 0, szaxxone, szaxxon, driver_device, 0, ROT90, "Sega", "Super Zaxxon (315-5013)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, szaxxon, 0, szaxxone, szaxxon, zaxxon_state, 0, ROT90, "Sega", "Super Zaxxon (315-5013)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) /* standard Zaxxon hardware? but encrypted cpu */ -GAME( 1984, futspy, 0, futspye, futspy, driver_device, 0, ROT90, "Sega", "Future Spy (315-5061)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, futspy, 0, futspye, futspy, zaxxon_state, 0, ROT90, "Sega", "Future Spy (315-5061)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) /* these games run on modified Zaxxon hardware with no skewing, extra inputs, and a */ /* G-80 Universal Sound Board */ -GAME( 1983, razmataz, 0, razmataze, razmataz, zaxxon_state, razmataz, ROT90, "Sega", "Razzmatazz", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, ixion, 0, ixion, ixion, driver_device, 0, ROT270, "Sega", "Ixion (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) +GAME( 1983, razmataz, 0, razmataze, razmataz, zaxxon_state, razmataz, ROT90, "Sega", "Razzmatazz", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, ixion, 0, ixion, ixion, zaxxon_state, 0, ROT270, "Sega", "Ixion (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE) /* these games run on a slightly newer Zaxxon hardware with more ROM space and a */ /* custom sprite DMA chip */ -GAME( 1983, congo, 0, congo, congo, driver_device, 0, ROT90, "Sega", "Congo Bongo (Rev C, 2 board stack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, congoa, congo, congo, congo, driver_device, 0, ROT90, "Sega", "Congo Bongo (Rev C, 3 board stack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, tiptop, congo, congo, congo, driver_device, 0, ROT90, "Sega", "Tip Top (3 board stack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, congo, 0, congo, congo, zaxxon_state, 0, ROT90, "Sega", "Congo Bongo (Rev C, 2 board stack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, congoa, congo, congo, congo, zaxxon_state, 0, ROT90, "Sega", "Congo Bongo (Rev C, 3 board stack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, tiptop, congo, congo, congo, zaxxon_state, 0, ROT90, "Sega", "Tip Top (3 board stack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/zerozone.cpp b/src/mame/drivers/zerozone.cpp index 1c654bd43da..5670cc958aa 100644 --- a/src/mame/drivers/zerozone.cpp +++ b/src/mame/drivers/zerozone.cpp @@ -168,7 +168,7 @@ void zerozone_state::machine_reset() m_tilebank = 0; } -static MACHINE_CONFIG_START( zerozone, zerozone_state ) +static MACHINE_CONFIG_START( zerozone ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz */ @@ -199,7 +199,7 @@ static MACHINE_CONFIG_START( zerozone, zerozone_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MCFG_OKIM6295_ADD("oki", 1056000, PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -245,5 +245,5 @@ ROM_START( lvgirl94 ) ROM_END -GAME( 1993, zerozone, 0, zerozone, zerozone, driver_device, 0, ROT0, "Comad", "Zero Zone", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, lvgirl94, 0, zerozone, zerozone, driver_device, 0, ROT0, "Comad", "Las Vegas Girl (Girl '94)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, zerozone, 0, zerozone, zerozone, zerozone_state, 0, ROT0, "Comad", "Zero Zone", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, lvgirl94, 0, zerozone, zerozone, zerozone_state, 0, ROT0, "Comad", "Las Vegas Girl (Girl '94)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/zexall.cpp b/src/mame/drivers/zexall.cpp index 9c25629d73a..8823cc55db8 100644 --- a/src/mame/drivers/zexall.cpp +++ b/src/mame/drivers/zexall.cpp @@ -139,7 +139,7 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( zexall, zexall_state ) +static MACHINE_CONFIG_START( zexall ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz*10) MCFG_CPU_PROGRAM_MAP(z80_mem) @@ -167,5 +167,5 @@ ROM_END Drivers ******************************************************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 2009, zexall, 0, 0, zexall, zexall, zexall_state, zexall, "Frank Cringle & MESSDEV", "ZEXALL Z80 instruction set exerciser (modified for MESS)", MACHINE_NO_SOUND_HW ) +// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS +COMP( 2009, zexall, 0, 0, zexall, zexall, zexall_state, zexall, "Frank Cringle & MESSDEV", "ZEXALL Z80 instruction set exerciser (modified for MESS)", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp index 9c7aecf08ea..ea4fae00fbb 100644 --- a/src/mame/drivers/zn.cpp +++ b/src/mame/drivers/zn.cpp @@ -312,7 +312,7 @@ static ADDRESS_MAP_START( zn_map, AS_PROGRAM, 32, zn_state ) AM_RANGE(0x1fb20000, 0x1fb20007) AM_READ16(unknown_r, 0xffffffff) ADDRESS_MAP_END -static MACHINE_CONFIG_START( zn1_1mb_vram, zn_state ) +static MACHINE_CONFIG_START( zn1_1mb_vram ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8530CQ, XTAL_67_7376MHz ) @@ -357,7 +357,7 @@ static MACHINE_CONFIG_DERIVED( zn1_2mb_vram, zn1_1mb_vram ) MCFG_PSXGPU_REPLACE( "maincpu", "gpu", CXD8561Q, 0x200000, XTAL_53_693175MHz ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( zn2, zn_state ) +static MACHINE_CONFIG_START( zn2 ) /* basic machine hardware */ MCFG_CPU_ADD( "maincpu", CXD8661R, XTAL_100MHz ) @@ -1358,8 +1358,8 @@ static MACHINE_CONFIG_DERIVED( coh1000w, zn1_2mb_vram ) MCFG_VT83C461_ADD("ide", ata_devices, "hdd", nullptr, true) MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("maincpu:irq", psxirq_device, intin10)) - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate(&zn_state::atpsx_dma_read, (zn_state *) owner ) ) - MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate(&zn_state::atpsx_dma_write, (zn_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&zn_state::atpsx_dma_read, (zn_state *) owner ) ) + MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psxdma_device::write_delegate(&zn_state::atpsx_dma_write, (zn_state *) owner ) ) MACHINE_CONFIG_END /* @@ -3264,6 +3264,36 @@ ROM_END ROM_START( jgakuen ) CPZN2_BIOS + ROM_REGION32_LE( 0x80000, "countryrom", 0 ) + ROM_LOAD( "jstj_04a.2h", 0x0000000, 0x080000, CRC(91b36f38) SHA1(423dbf0f9f08458a866e9acb2a5b657c736b179f) ) + + ROM_REGION32_LE( 0x3000000, "maskroms", 0 ) + ROM_LOAD( "jst-05m.3h", 0x0000000, 0x400000, CRC(723372b8) SHA1(2a7c95d1f9a3f58c469dfc28ead1fd192eaaebd1) ) + ROM_LOAD( "jst-06m.4h", 0x0400000, 0x400000, CRC(4248988e) SHA1(4bdf7cac17d70ea85aa2002fc6b21a64d05e6e5a) ) + ROM_LOAD( "jst-07m.5h", 0x0800000, 0x400000, CRC(c84c5a16) SHA1(5c0ca7454189c766f1ca7305504ff1867007c8e6) ) + ROM_LOAD( "jst-08m.2k", 0x0c00000, 0x400000, CRC(791b57f3) SHA1(4ea12a0f7a7110d7dcbc55b3f02aa9a92dea4b12) ) + ROM_LOAD( "jst-09m.3k", 0x1000000, 0x400000, CRC(6df42048) SHA1(9e2b4a424de3918e5e54bc87fd9dcceff8d162be) ) + ROM_LOAD( "jst-10m.4k", 0x1400000, 0x400000, CRC(d7e22769) SHA1(733f96dce2586fc0a8af3cec18153085750c9a4d) ) + ROM_LOAD( "jst-11m.5k", 0x1800000, 0x400000, CRC(0a033ac5) SHA1(218b33cb51db99d3e9ee180da6a74460f4444fc6) ) + ROM_LOAD( "jst-12m.6k", 0x1c00000, 0x400000, CRC(43bd2ddd) SHA1(7f2976e394362cb648f620e430b3bf11b71485a6) ) + ROM_LOAD( "jst-13m.7k", 0x2000000, 0x400000, CRC(6b443235) SHA1(c764d8b742aa1c46bc8d37f36e864ef50a1ff4e4) ) + + ROM_REGION( 0x50000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_LOAD( "jst_02.2e", 0x00000, 0x08000, CRC(7809e2c3) SHA1(0216a665f7978bc8db3f7fdab038e1c7aa120844) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + ROM_LOAD( "jst_03.3e", 0x28000, 0x20000, CRC(860ff24d) SHA1(eea72fa5eaf407a112a5b3daf60f7ac8ad191cc7) ) + + ROM_REGION( 0x400000, "qsound", 0 ) /* Q Sound Samples */ + ROM_LOAD16_WORD_SWAP( "jst-01m.3b", 0x0000000, 0x400000, CRC(9a7c98f9) SHA1(764c6c4f41047e1f36d2dceac4aa9b943a9d529a) ) + + ROM_REGION( 0x8, "cat702_2", 0 ) + ROM_LOAD( "cp06", 0x000000, 0x000008, CRC(99b22128) SHA1(9a773927ead72ed4ded44d53d89ecb123e1d3f17) ) +ROM_END + +/* 95681-2 */ +ROM_START( jgakuen1 ) + CPZN2_BIOS + ROM_REGION32_LE( 0x80000, "countryrom", 0 ) ROM_LOAD( "jstj_04.2h", 0x0000000, 0x080000, CRC(28b8000a) SHA1(9ebf74b453d775cadca9c2d7d8e2c7eb57bb9a38) ) @@ -5110,130 +5140,131 @@ ROM_START( hvnsgate ) ROM_END /* Capcom ZN1 */ -GAME( 1995, coh1000c, 0, coh1000c, zn, driver_device, 0, ROT0, "Capcom", "ZN1", MACHINE_IS_BIOS_ROOT ) -GAME( 1995, ts2, coh1000c, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, ts2a, ts2, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124) Older", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, ts2j, ts2, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (Japan 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, starglad, coh1000c, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (USA 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, stargladj, starglad, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (Japan 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, glpracr, coh1000c, glpracr, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer (English Ver 10.17.K)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, glpracrj, glpracr, glpracr, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer (Japanese Ver 9.01.12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, sfex, coh1000c, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Euro 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, sfexu, sfex, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (USA 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, sfexa, sfex, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Asia 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, sfexj, sfex, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Japan 961130)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, sfexp, coh1000c, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (USA 970407)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, sfexpu1, sfexp, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (USA 970311)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, sfexpj, sfexp, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (Japan 970407)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, sfexpj1, sfexp, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (Japan 970311)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, coh1000c, 0, coh1000c, zn, zn_state, 0, ROT0, "Capcom", "ZN1", MACHINE_IS_BIOS_ROOT ) +GAME( 1995, ts2, coh1000c, coh1000c, zn6b, zn_state, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, ts2a, ts2, coh1000c, zn6b, zn_state, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124) Older", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, ts2j, ts2, coh1000c, zn6b, zn_state, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (Japan 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, starglad, coh1000c, coh1000c, zn6b, zn_state, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (USA 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, stargladj, starglad, coh1000c, zn6b, zn_state, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (Japan 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, glpracr, coh1000c, glpracr, zn, zn_state, 0, ROT0, "Tecmo", "Gallop Racer (English Ver 10.17.K)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, glpracrj, glpracr, glpracr, zn, zn_state, 0, ROT0, "Tecmo", "Gallop Racer (Japanese Ver 9.01.12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, sfex, coh1000c, coh1002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Euro 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, sfexu, sfex, coh1002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX (USA 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, sfexa, sfex, coh1002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Asia 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, sfexj, sfex, coh1002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Japan 961130)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, sfexp, coh1000c, coh1002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (USA 970407)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, sfexpu1, sfexp, coh1002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (USA 970311)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, sfexpj, sfexp, coh1002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (Japan 970407)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, sfexpj1, sfexp, coh1002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX Plus (Japan 970311)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* Capcom ZN2 */ -GAME( 1997, coh3002c, 0, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "ZN2", MACHINE_IS_BIOS_ROOT ) -GAME( 1997, rvschool, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (Euro 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, rvschoolu, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (USA 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, rvschoola, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (Asia 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, jgakuen, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Shiritsu Justice Gakuen: Legion of Heroes (Japan 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sfex2, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (USA 980526)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sfex2u1, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (USA 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sfex2a, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Asia 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sfex2h, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Hispanic 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sfex2j, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Japan 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, plsmaswd, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (USA 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, plsmaswda, plsmaswd, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (Asia 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, stargld2, plsmaswd, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator 2: Nightmare of Bilstein (Japan 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, tgmj, coh3002c, coh3002c, zn4w, driver_device, 0, ROT0, "Arika / Capcom", "Tetris The Grand Master (Japan 980710)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, techromn, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (Euro 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, techromnu, techromn, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (USA 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, kikaioh, techromn, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Choukou Senki Kikaioh (Japan 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, sfex2p, coh3002c, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (USA 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, sfex2pa, sfex2p, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Asia 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, sfex2ph, sfex2p, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Hispanic 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, sfex2pj, sfex2p, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Japan 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, strider2, coh3002c, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (USA 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // random hangs / crashes -GAME( 1999, strider2a, strider2, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (Asia 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1999, shiryu2, strider2, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "Strider Hiryu 2 (Japan 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1997, coh3002c, 0, coh3002c, zn, zn_state, 0, ROT0, "Capcom", "ZN2", MACHINE_IS_BIOS_ROOT ) +GAME( 1997, rvschool, coh3002c, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Rival Schools: United By Fate (Euro 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, rvschoolu, rvschool, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Rival Schools: United By Fate (USA 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, rvschoola, rvschool, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Rival Schools: United By Fate (Asia 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, jgakuen, rvschool, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Shiritsu Justice Gakuen: Legion of Heroes (Japan 971216)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, jgakuen1, rvschool, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Shiritsu Justice Gakuen: Legion of Heroes (Japan 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sfex2, coh3002c, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (USA 980526)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sfex2u1, sfex2, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (USA 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sfex2a, sfex2, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Asia 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sfex2h, sfex2, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Hispanic 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sfex2j, sfex2, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Japan 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, plsmaswd, coh3002c, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (USA 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, plsmaswda, plsmaswd, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (Asia 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, stargld2, plsmaswd, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Star Gladiator 2: Nightmare of Bilstein (Japan 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, tgmj, coh3002c, coh3002c, zn4w, zn_state, 0, ROT0, "Arika / Capcom", "Tetris The Grand Master (Japan 980710)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, techromn, coh3002c, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Tech Romancer (Euro 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, techromnu, techromn, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Tech Romancer (USA 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, kikaioh, techromn, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom", "Choukou Senki Kikaioh (Japan 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, sfex2p, coh3002c, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (USA 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, sfex2pa, sfex2p, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Asia 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, sfex2ph, sfex2p, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Hispanic 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, sfex2pj, sfex2p, coh3002c, zn6b, zn_state, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Japan 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, strider2, coh3002c, coh3002c, zn, zn_state, 0, ROT0, "Capcom", "Strider 2 (USA 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // random hangs / crashes +GAME( 1999, strider2a, strider2, coh3002c, zn, zn_state, 0, ROT0, "Capcom", "Strider 2 (Asia 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, shiryu2, strider2, coh3002c, zn, zn_state, 0, ROT0, "Capcom", "Strider Hiryu 2 (Japan 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* Atari */ -GAME( 1996, coh1000w, 0, coh1000w, zn, driver_device, 0, ROT0, "Atari", "Atari PSX", MACHINE_IS_BIOS_ROOT ) -GAME( 1996, primrag2, coh1000w, coh1000w, primrag2, driver_device, 0, ROT0, "Atari", "Primal Rage 2 (Ver 0.36a)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // watchdog reset at startup +GAME( 1996, coh1000w, 0, coh1000w, zn, zn_state, 0, ROT0, "Atari", "Atari PSX", MACHINE_IS_BIOS_ROOT ) +GAME( 1996, primrag2, coh1000w, coh1000w, primrag2, zn_state, 0, ROT0, "Atari", "Primal Rage 2 (Ver 0.36a)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // watchdog reset at startup /* Acclaim */ -GAME( 1995, coh1000a, 0, coh1000a, zn, driver_device, 0, ROT0, "Acclaim", "Acclaim PSX", MACHINE_IS_BIOS_ROOT ) -GAME( 1996, nbajamex, coh1000a, nbajamex, nbajamex, zn_state, nbajamex, ROT0, "Acclaim", "NBA Jam Extreme (ver. 1.10I)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, nbajamexa, nbajamex, nbajamex, nbajamex, zn_state, nbajamex, ROT0, "Acclaim", "NBA Jam Extreme (ver. 1.04)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, jdredd, coh1000a, jdredd, jdredd, driver_device, 0, ROT0, "Acclaim", "Judge Dredd (Rev C Dec. 17 1997)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, jdreddb, jdredd, jdredd, jdredd, driver_device, 0, ROT0, "Acclaim", "Judge Dredd (Rev B Nov. 26 1997)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, coh1000a, 0, coh1000a, zn, zn_state, 0, ROT0, "Acclaim", "Acclaim PSX", MACHINE_IS_BIOS_ROOT ) +GAME( 1996, nbajamex, coh1000a, nbajamex, nbajamex, zn_state, nbajamex, ROT0, "Acclaim", "NBA Jam Extreme (ver. 1.10I)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, nbajamexa, nbajamex, nbajamex, nbajamex, zn_state, nbajamex, ROT0, "Acclaim", "NBA Jam Extreme (ver. 1.04)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, jdredd, coh1000a, jdredd, jdredd, zn_state, 0, ROT0, "Acclaim", "Judge Dredd (Rev C Dec. 17 1997)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, jdreddb, jdredd, jdredd, jdredd, zn_state, 0, ROT0, "Acclaim", "Judge Dredd (Rev B Nov. 26 1997)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* Tecmo */ -GAME( 1997, coh1002m, 0, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "TPS", MACHINE_IS_BIOS_ROOT ) -GAME( 1997, glpracr2, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 (Export)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, glpracr2j, glpracr2, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, glpracr2l, glpracr2, coh1002ml, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 Link HW (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, doapp, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Dead Or Alive ++ (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, cbaj, coh1002m, coh1002msnd, zn, driver_device, 0, ROT0, "UEP Systems", "Cool Boarders Arcade Jam", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, shngmtkb, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Sunsoft / Activision", "Shanghai Matekibuyuu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, tondemo, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Tondemo Crisis (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, glpracr3, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Export)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, glpracr3j, glpracr3, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, flamegun, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, flamegunj, flamegun, coh1002m, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, lpadv, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Amuse World", "Logic Pro Adventure (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, tblkkuzu, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tamsoft / D3 Publisher", "The Block Kuzushi (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, 1on1gov, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "1 on 1 Government (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, tecmowcm, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup Millennium (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2001, mfjump, coh1002m, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Monster Farm Jump (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, coh1002m, 0, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "TPS", MACHINE_IS_BIOS_ROOT ) +GAME( 1997, glpracr2, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "Gallop Racer 2 (Export)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, glpracr2j, glpracr2, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "Gallop Racer 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, glpracr2l, glpracr2, coh1002ml, zn, zn_state, 0, ROT0, "Tecmo", "Gallop Racer 2 Link HW (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, doapp, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "Dead Or Alive ++ (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, cbaj, coh1002m, coh1002msnd, zn, zn_state, 0, ROT0, "UEP Systems", "Cool Boarders Arcade Jam", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, shngmtkb, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Sunsoft / Activision", "Shanghai Matekibuyuu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, tondemo, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "Tondemo Crisis (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, glpracr3, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "Gallop Racer 3 (Export)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, glpracr3j, glpracr3, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "Gallop Racer 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, flamegun, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Gaps Inc.", "Flame Gunner", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, flamegunj, flamegun, coh1002m, zn, zn_state, 0, ROT0, "Gaps Inc.", "Flame Gunner (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, lpadv, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Amuse World", "Logic Pro Adventure (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, tblkkuzu, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Tamsoft / D3 Publisher", "The Block Kuzushi (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, 1on1gov, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "1 on 1 Government (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, tecmowcm, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "Tecmo World Cup Millennium (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2001, mfjump, coh1002m, coh1002m, zn, zn_state, 0, ROT0, "Tecmo", "Monster Farm Jump (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* Video System */ -GAME( 1996, coh1002v, 0, coh1002v, zn, driver_device, 0, ROT0, "Video System Co.", "Video System PSX", MACHINE_IS_BIOS_ROOT ) -GAME( 1996, aerofgts, coh1002v, coh1002v, aerofgts, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters Special (Taiwan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, sncwgltd, aerofgts, coh1002v, aerofgts, driver_device, 0, ROT270, "Video System Co.", "Sonic Wings Limited (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, coh1002v, 0, coh1002v, zn, zn_state, 0, ROT0, "Video System Co.", "Video System PSX", MACHINE_IS_BIOS_ROOT ) +GAME( 1996, aerofgts, coh1002v, coh1002v, aerofgts, zn_state, 0, ROT270, "Video System Co.", "Aero Fighters Special (Taiwan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, sncwgltd, aerofgts, coh1002v, aerofgts, zn_state, 0, ROT270, "Video System Co.", "Sonic Wings Limited (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* Taito FX-1A */ -GAME( 1995, coh1000t, 0, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Taito FX1", MACHINE_IS_BIOS_ROOT ) -GAME( 1995, sfchamp, coh1000t, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.5O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, sfchampo, sfchamp, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, sfchampu, sfchamp, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, sfchampj, sfchamp, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, psyforce, coh1000t, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, psyforcej, psyforce, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, psyforcex, psyforce, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Psychic Force EX (Ver 2.0J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // exception in attract after reading 0xbbbbbbbb from 0x8025ed18 leads to watchdog reset -GAME( 1996, mgcldate, mgcldtex, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Magical Date / Magical Date - dokidoki kokuhaku daisakusen (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, mgcldtex, coh1000t, coh1000ta, znt, driver_device, 0, ROT0, "Taito", "Magical Date EX / Magical Date - sotsugyou kokuhaku daisakusen (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, coh1000t, 0, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Taito FX1", MACHINE_IS_BIOS_ROOT ) +GAME( 1995, sfchamp, coh1000t, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Super Football Champ (Ver 2.5O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, sfchampo, sfchamp, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, sfchampu, sfchamp, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, sfchampj, sfchamp, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, psyforce, coh1000t, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Psychic Force (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, psyforcej, psyforce, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Psychic Force (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, psyforcex, psyforce, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Psychic Force EX (Ver 2.0J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // exception in attract after reading 0xbbbbbbbb from 0x8025ed18 leads to watchdog reset +GAME( 1996, mgcldate, mgcldtex, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Magical Date / Magical Date - dokidoki kokuhaku daisakusen (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, mgcldtex, coh1000t, coh1000ta, znt, zn_state, 0, ROT0, "Taito", "Magical Date EX / Magical Date - sotsugyou kokuhaku daisakusen (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* Taito FX-1B */ -GAME( 1996, raystorm, coh1000t, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.06A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, raystormo, raystorm, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, raystormu, raystorm, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, raystormj, raystorm, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, ftimpact, ftimpcta, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, ftimpactu, ftimpcta, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, ftimpactj, ftimpcta, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, raystorm, coh1000t, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.06A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, raystormo, raystorm, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, raystormu, raystorm, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, raystormj, raystorm, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, ftimpact, ftimpcta, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, ftimpactu, ftimpcta, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, ftimpactj, ftimpcta, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1997, ftimpcta, coh1000t, coh1000tb, znt, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact A (Ver 2.00J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, gdarius, gdarius2, coh1002tb, znt, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, gdariusb, gdarius2, coh1002tb, znt, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, gdarius2, coh1000t, coh1002tb, znt, zn_state, coh1000tb, ROT0, "Taito", "G-Darius Ver.2 (Ver 2.03J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, gdarius, gdarius2, coh1002tb, znt, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, gdariusb, gdarius2, coh1002tb, znt, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, gdarius2, coh1000t, coh1002tb, znt, zn_state, coh1000tb, ROT0, "Taito", "G-Darius Ver.2 (Ver 2.03J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* Eighting / Raizing */ -GAME( 1997, coh1002e, 0, coh1002e, znt, driver_device, 0, ROT0, "Eighting / Raizing", "PS Arcade 95", MACHINE_IS_BIOS_ROOT ) -GAME( 1997, beastrzr, coh1002e, coh1002e, znt, driver_device, 0, ROT0, "Eighting / Raizing", "Beastorizer (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, bldyroar, beastrzr, coh1002e, znt, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, beastrzrb, beastrzr, coh1002e, znt, driver_device, 0, ROT0, "bootleg", "Beastorizer (USA bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1997, coh1002e, 0, coh1002e, znt, zn_state, 0, ROT0, "Eighting / Raizing", "PS Arcade 95", MACHINE_IS_BIOS_ROOT ) +GAME( 1997, beastrzr, coh1002e, coh1002e, znt, zn_state, 0, ROT0, "Eighting / Raizing", "Beastorizer (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, bldyroar, beastrzr, coh1002e, znt, zn_state, 0, ROT0, "Eighting / Raizing", "Bloody Roar (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, beastrzrb, beastrzr, coh1002e, znt, zn_state, 0, ROT0, "bootleg", "Beastorizer (USA bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* The region on these is determined from the NVRAM, it can't be changed from the test menu, it's pre-programmed */ -GAME( 1998, bldyror2, coh1002e, coh1002e, bldyror2, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // locks up if you coin up during the fmw with interlace enabled -GAME( 1998, bldyror2u, bldyror2, coh1002e, bldyror2, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, bldyror2a, bldyror2, coh1002e, bldyror2, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, bldyror2j, bldyror2, coh1002e, bldyror2, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, bldyror2, coh1002e, coh1002e, bldyror2, zn_state, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // locks up if you coin up during the fmw with interlace enabled +GAME( 1998, bldyror2u, bldyror2, coh1002e, bldyror2, zn_state, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, bldyror2a, bldyror2, coh1002e, bldyror2, zn_state, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, bldyror2j, bldyror2, coh1002e, bldyror2, zn_state, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* The region on these is determined from the NVRAM, it can't be changed from the test menu, it's pre-programmed */ -GAME( 2000, brvblade, coh1002m, coh1002e, znt, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, brvbladeu, brvblade, coh1002e, znt, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, brvbladea, brvblade, coh1002e, znt, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, brvbladej, brvblade, coh1002e, znt, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, brvblade, coh1002m, coh1002e, znt, zn_state, 0, ROT270, "Eighting / Raizing", "Brave Blade (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, brvbladeu, brvblade, coh1002e, znt, zn_state, 0, ROT270, "Eighting / Raizing", "Brave Blade (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, brvbladea, brvblade, coh1002e, znt, zn_state, 0, ROT270, "Eighting / Raizing", "Brave Blade (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, brvbladej, brvblade, coh1002e, znt, zn_state, 0, ROT270, "Eighting / Raizing", "Brave Blade (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* Bust a Move 2 uses the PSARC95 bios and ET series security but the top board is completely different */ -GAME( 1999, bam2, coh1002e, bam2, zn, driver_device, 0, ROT0, "Metro / Enix / Namco", "Bust a Move 2 - Dance Tengoku Mix (Japanese ROM ver. 1999/07/17 10:00:00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, bam2, coh1002e, bam2, zn, zn_state, 0, ROT0, "Metro / Enix / Namco", "Bust a Move 2 - Dance Tengoku Mix (Japanese ROM ver. 1999/07/17 10:00:00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* Atlus */ -GAME( 1996, coh1001l, 0, coh1001l, zn, driver_device, 0, ROT0, "Atlus", "Atlus PSX", MACHINE_IS_BIOS_ROOT ) -GAME( 1996, hvnsgate, coh1001l, coh1001l, zn, driver_device, 0, ROT0, "Racdym / Atlus", "Heaven's Gate", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, coh1001l, 0, coh1001l, zn, zn_state, 0, ROT0, "Atlus", "Atlus PSX", MACHINE_IS_BIOS_ROOT ) +GAME( 1996, hvnsgate, coh1001l, coh1001l, zn, zn_state, 0, ROT0, "Racdym / Atlus", "Heaven's Gate", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/drivers/zodiack.cpp b/src/mame/drivers/zodiack.cpp index 63d26577a6d..e67f66d980f 100644 --- a/src/mame/drivers/zodiack.cpp +++ b/src/mame/drivers/zodiack.cpp @@ -563,7 +563,7 @@ void zodiack_state::machine_reset() } -static MACHINE_CONFIG_START( zodiack, zodiack_state ) +static MACHINE_CONFIG_START( zodiack ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) @@ -716,8 +716,8 @@ DRIVER_INIT_MEMBER(zodiack_state,percuss) m_percuss_hardware = true; } -GAME( 1983, zodiack, 0, zodiack, zodiack, zodiack_state, zodiack, ROT270, "Orca (Esco Trading Co., Inc. license)", "Zodiack", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) /* bullet color needs to be verified */ -GAME( 1983, dogfight, 0, zodiack, dogfight, zodiack_state, zodiack, ROT270, "Orca / Thunderbolt", "Dog Fight (Thunderbolt)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) /* bullet color needs to be verified */ -GAME( 1982, moguchan, 0, zodiack, moguchan, zodiack_state, percuss, ROT270, "Orca (Eastern Commerce Inc. license)", "Mogu Chan (bootleg?)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) /* license copyright taken from ROM string at $0b5c */ -GAME( 1981, percuss, 0, zodiack, percuss, zodiack_state, percuss, ROT270, "Orca", "The Percussor", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bounty, 0, zodiack, bounty, zodiack_state, percuss, ROT180, "Orca", "The Bounty", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, zodiack, 0, zodiack, zodiack, zodiack_state, zodiack, ROT270, "Orca (Esco Trading Co., Inc. license)", "Zodiack", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) /* bullet color needs to be verified */ +GAME( 1983, dogfight, 0, zodiack, dogfight, zodiack_state, zodiack, ROT270, "Orca / Thunderbolt", "Dog Fight (Thunderbolt)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) /* bullet color needs to be verified */ +GAME( 1982, moguchan, 0, zodiack, moguchan, zodiack_state, percuss, ROT270, "Orca (Eastern Commerce Inc. license)", "Mogu Chan (bootleg?)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) /* license copyright taken from ROM string at $0b5c */ +GAME( 1981, percuss, 0, zodiack, percuss, zodiack_state, percuss, ROT270, "Orca", "The Percussor", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, bounty, 0, zodiack, bounty, zodiack_state, percuss, ROT180, "Orca", "The Bounty", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/zorba.cpp b/src/mame/drivers/zorba.cpp index 8d2e129bbd4..3a24178746c 100644 --- a/src/mame/drivers/zorba.cpp +++ b/src/mame/drivers/zorba.cpp @@ -93,7 +93,7 @@ ADDRESS_MAP_START( zorba_io, AS_IO, 8, zorba_state ) AM_RANGE(0x25, 0x25) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) AM_RANGE(0x26, 0x26) AM_WRITE(intmask_w) AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("fdc", fd1793_t, read, write) + AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("fdc", fd1793_device, read, write) AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pia1", pia6821_device, read, write) ADDRESS_MAP_END @@ -131,7 +131,7 @@ GFXDECODE_START( zorba ) GFXDECODE_END -MACHINE_CONFIG_START( zorba, zorba_state ) +MACHINE_CONFIG_START( zorba ) // basic machine hardware MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz / 6) MCFG_CPU_PROGRAM_MAP(zorba_mem) @@ -564,5 +564,5 @@ ROM_END COMP( 1984?, zorba, 0, 0, zorba, zorba, zorba_state, zorba, "Modular Micros", "Zorba (Modular Micros)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // Undumped versions (see startup screen notes at top of file) -// COMP( 1983, zorbat, zorba, 0, zorba, zorba, zorba_state, zorba, "Telcon Industries", "Zorba (Telcon Industries)", MACHINE_NOT_WORKING ) +// COMP( 1983, zorbat, zorba, 0, zorba, zorba, zorba_state, zorba, "Telcon Industries", "Zorba (Telcon Industries)", MACHINE_NOT_WORKING ) // COMP( 1984, zorbag, zorba, 0, zorba, zorba, zorba_state, zorba, "Gemini Electronics", "Zorba (Gemini Electronics)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/zr107.cpp b/src/mame/drivers/zr107.cpp index 2138b499618..932fcfa7a7d 100644 --- a/src/mame/drivers/zr107.cpp +++ b/src/mame/drivers/zr107.cpp @@ -756,7 +756,7 @@ void zr107_state::machine_reset() m_dsp->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); } -static MACHINE_CONFIG_START( zr107, zr107_state ) +static MACHINE_CONFIG_START( zr107 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GA, XTAL_64MHz/2) /* PowerPC 403GA 32MHz */ @@ -823,11 +823,11 @@ static MACHINE_CONFIG_START( zr107, zr107_state ) MCFG_DEVICE_ADD("konppc", KONPPC, 0) MCFG_KONPPC_CGBOARD_NUMBER(1) - MCFG_KONPPC_CGBOARD_TYPE(CGBOARD_TYPE_ZR107) + MCFG_KONPPC_CGBOARD_TYPE(ZR107) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( jetwave, zr107_state ) +static MACHINE_CONFIG_START( jetwave ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC403GA, XTAL_64MHz/2) /* PowerPC 403GA 32MHz */ @@ -902,7 +902,7 @@ static MACHINE_CONFIG_START( jetwave, zr107_state ) MCFG_DEVICE_ADD("konppc", KONPPC, 0) MCFG_KONPPC_CGBOARD_NUMBER(1) - MCFG_KONPPC_CGBOARD_TYPE(CGBOARD_TYPE_GTICLUB) + MCFG_KONPPC_CGBOARD_TYPE(GTICLUB) MACHINE_CONFIG_END /*****************************************************************************/ diff --git a/src/mame/drivers/zrt80.cpp b/src/mame/drivers/zrt80.cpp index cf1b0a0fa85..2b980acc2ce 100644 --- a/src/mame/drivers/zrt80.cpp +++ b/src/mame/drivers/zrt80.cpp @@ -48,7 +48,7 @@ public: DECLARE_READ8_MEMBER(zrt80_10_r); DECLARE_WRITE8_MEMBER(zrt80_30_w); DECLARE_WRITE8_MEMBER(zrt80_38_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); MC6845_UPDATE_ROW(crtc_update_row); private: @@ -243,7 +243,7 @@ MC6845_UPDATE_ROW( zrt80_state::crtc_update_row ) } } -WRITE8_MEMBER( zrt80_state::kbd_put ) +void zrt80_state::kbd_put(u8 data) { m_term_data = data; m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); @@ -267,7 +267,7 @@ static GFXDECODE_START( zrt80 ) GFXDECODE_ENTRY( "chargen", 0x0000, zrt80_charlayout, 0, 1 ) GFXDECODE_END -static MACHINE_CONFIG_START( zrt80, zrt80_state ) +static MACHINE_CONFIG_START( zrt80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_2_4576MHz) MCFG_CPU_PROGRAM_MAP(zrt80_mem) @@ -297,7 +297,7 @@ static MACHINE_CONFIG_START( zrt80, zrt80_state ) MCFG_DEVICE_ADD( "ins8250", INS8250, 2457600 ) MCFG_INS8250_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(zrt80_state, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(zrt80_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -312,5 +312,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1982, zrt80, 0, 0, zrt80, zrt80, driver_device, 0, "Digital Research Computers", "ZRT-80", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1982, zrt80, 0, 0, zrt80, zrt80, zrt80_state, 0, "Digital Research Computers", "ZRT-80", 0) diff --git a/src/mame/drivers/zsbc3.cpp b/src/mame/drivers/zsbc3.cpp index caf00a0e7bb..4f2ad18238b 100644 --- a/src/mame/drivers/zsbc3.cpp +++ b/src/mame/drivers/zsbc3.cpp @@ -52,7 +52,8 @@ public: DECLARE_READ8_MEMBER(zsbc3_28_r); DECLARE_READ8_MEMBER(zsbc3_2a_r); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); + private: uint8_t m_term_data; virtual void machine_reset() override; @@ -95,13 +96,13 @@ void zsbc3_state::machine_reset() { } -WRITE8_MEMBER( zsbc3_state::kbd_put ) +void zsbc3_state::kbd_put(u8 data) { m_term_data = data; } -static MACHINE_CONFIG_START( zsbc3, zsbc3_state ) +static MACHINE_CONFIG_START( zsbc3 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz /4) MCFG_CPU_PROGRAM_MAP(zsbc3_mem) @@ -109,7 +110,7 @@ static MACHINE_CONFIG_START( zsbc3, zsbc3_state ) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) - MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(zsbc3_state, kbd_put)) + MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(zsbc3_state, kbd_put)) MACHINE_CONFIG_END /* ROM definition */ @@ -123,5 +124,5 @@ ROM_END /* Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1980, zsbc3, 0, 0, zsbc3, zsbc3, driver_device, 0, "Digital Microsystems", "ZSBC-3", MACHINE_NO_SOUND_HW) +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1980, zsbc3, 0, 0, zsbc3, zsbc3, zsbc3_state, 0, "Digital Microsystems", "ZSBC-3", MACHINE_NO_SOUND_HW) diff --git a/src/mame/drivers/zwackery.cpp b/src/mame/drivers/zwackery.cpp index 01591f36d27..327b9d69277 100644 --- a/src/mame/drivers/zwackery.cpp +++ b/src/mame/drivers/zwackery.cpp @@ -488,7 +488,7 @@ void zwackery_state::machine_start() // MACHINE DEFINTIONS //************************************************************************** -static MACHINE_CONFIG_START( zwackery, zwackery_state ) +static MACHINE_CONFIG_START( zwackery ) // basic machine hardware MCFG_CPU_ADD("maincpu", M68000, 7652400) // based on counter usage, should be XTAL_16MHz/2 MCFG_CPU_PROGRAM_MAP(zwackery_map) @@ -606,5 +606,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS -GAME( 1984, zwackery, 0, zwackery, zwackery, driver_device, 0, ROT0, "Bally Midway", "Zwackery", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS +GAME( 1984, zwackery, 0, zwackery, zwackery, zwackery_state, 0, ROT0, "Bally Midway", "Zwackery", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/zx.cpp b/src/mame/drivers/zx.cpp index aa853f8c0f8..8d8063b374c 100644 --- a/src/mame/drivers/zx.cpp +++ b/src/mame/drivers/zx.cpp @@ -320,7 +320,7 @@ PALETTE_INIT_MEMBER(zx_state,ts1000) palette.set_pen_color(1, rgb_t::black()); } -static MACHINE_CONFIG_START( zx80, zx_state ) +static MACHINE_CONFIG_START( zx80 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_6_5MHz/2) MCFG_CPU_PROGRAM_MAP(zx80_map) @@ -494,7 +494,7 @@ ROM_END /* Game Drivers */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1980, zx80, 0, 0, zx80, zx80, zx_state, zx, "Sinclair Research Ltd", "ZX-80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) COMP( 1981, zx81, 0, 0, zx81, zx81, zx_state, zx, "Sinclair Research Ltd", "ZX-81", MACHINE_NO_SOUND_HW ) COMP( 1982, ts1000, zx81, 0, ts1000, zx81, zx_state, zx, "Timex Sinclair", "Timex Sinclair 1000", MACHINE_NO_SOUND_HW ) diff --git a/src/mame/etc/template_cpu.cpp b/src/mame/etc/template_cpu.cpp index 2989b384b2a..626e02171fb 100644 --- a/src/mame/etc/template_cpu.cpp +++ b/src/mame/etc/template_cpu.cpp @@ -7,11 +7,11 @@ *****************************************************************************/ #include "emu.h" -#include "debugger.h" #include "xxx.h" +#include "debugger.h" -const device_type XXX = &device_creator; +DEFINE_DEVICE_TYPE(XXX, xxx_cpu_device, "xxx", "XXX") /* FLAGS */ @@ -82,26 +82,26 @@ void xxx_cpu_device::execute_set_input(int irqline, int state) { switch(irqline) { - case XXX_INT_INTRM: - m_intrm_pending = (state == ASSERT_LINE); - m_intrm_state = state; + case XXX_INT_INTRM: // level-sensitive + m_intrm_pending = ((ASSERT_LINE == state) || (HOLD_LINE == state)); + m_intrm_state = (ASSERT_LINE == state); break; - case XXX_RESET: - if (state == ASSERT_LINE) + case XXX_RESET: // edge-sensitive + if (CLEAR_LINE != state) m_reset_pending = 1; - m_reset_state = state; + m_reset_state = (ASSERT_LINE == state); break; - case XXX_INT_INTR: - if (state == ASSERT_LINE) + case XXX_INT_INTR: // edge-sensitive + if (CLEAR_LINE != state) m_intr_pending = 1; - m_intr_state = state; + m_intr_state = (ASSERT_LINE == state); break; } } #endif xxx_cpu_device::xxx_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cpu_device(mconfig, XXX, "XXX", tag, owner, clock, "xxx", __FILE__) + : cpu_device(mconfig, XXX, tag, owner, clock) , m_program_config("program", ENDIANNESS_BIG, 8, 32, -1) , m_data_config("data", ENDIANNESS_BIG, 8, 32, 0) { @@ -113,11 +113,11 @@ void xxx_cpu_device::state_string_export(const device_state_entry &entry, std::s switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c", - m_flags & 0x80 ? 'S':'.', - m_flags & 0x40 ? 'Z':'.', - m_flags & 0x20 ? 'V':'.', - m_flags & 0x10 ? 'C':'.'); + str = util::string_format("%c%c%c%c", + m_flags & 0x80 ? 'S':'.', + m_flags & 0x40 ? 'Z':'.', + m_flags & 0x20 ? 'V':'.', + m_flags & 0x10 ? 'C':'.'); break; } } @@ -125,6 +125,5 @@ void xxx_cpu_device::state_string_export(const device_state_entry &entry, std::s offs_t xxx_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const uint32_t *oprom, const uint32_t *opram, uint32_t options) { - extern CPU_DISASSEMBLE( xxx ); return CPU_DISASSEMBLE_NAME(xxx)(this, buffer, pc, oprom, opram, options); } diff --git a/src/mame/etc/template_cpu.h b/src/mame/etc/template_cpu.h index 62af4185199..97467026087 100644 --- a/src/mame/etc/template_cpu.h +++ b/src/mame/etc/template_cpu.h @@ -6,10 +6,10 @@ * *****************************************************************************/ -#pragma once +#ifndef MAME_CPU_XXX_H +#define MAME_CPU_XXX_H -#ifndef __XXX_H__ -#define __XXX_H__ +#pragma once enum { @@ -24,7 +24,7 @@ class xxx_cpu_device : public cpu_device { public: // construction/destruction - xxx_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); + xxx_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: // device-level overrides @@ -39,7 +39,7 @@ protected: virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides - virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); } + virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : (spacenum == AS_DATA) ? &m_data_config : nullptr; } // device_state_interface overrides virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; @@ -63,9 +63,9 @@ private: }; -extern const device_type XXX; +DECLARE_DEVICE_TYPE(XXX, xxx_cpu_device) CPU_DISASSEMBLE( xxx ); -#endif /* __XXX_H__ */ +#endif // MAME_CPU_XXX_H diff --git a/src/mame/etc/template_device.cpp b/src/mame/etc/template_device.cpp index 358938a5ee0..f29b85215eb 100644 --- a/src/mame/etc/template_device.cpp +++ b/src/mame/etc/template_device.cpp @@ -2,7 +2,7 @@ // copyright-holders: /*************************************************************************** -Template for skeleton device +Template for squeleton device ***************************************************************************/ @@ -16,7 +16,7 @@ Template for skeleton device //************************************************************************** // device type definition -const device_type XXX = &device_creator; +DEFINE_DEVICE_TYPE(XXX, xxx_device, "xxx", "XXX Device") //************************************************************************** @@ -28,7 +28,7 @@ const device_type XXX = &device_creator; //------------------------------------------------- xxx_device::xxx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, XXX, "xxx_longname", tag, owner, clock, "xxx", __FILE__) + : device_t(mconfig, XXX, tag, owner, clock) { } diff --git a/src/mame/etc/template_device.h b/src/mame/etc/template_device.h index b553f3058c6..afcf02d44aa 100644 --- a/src/mame/etc/template_device.h +++ b/src/mame/etc/template_device.h @@ -2,14 +2,14 @@ // copyright-holders: /*************************************************************************** -Template for skeleton device +Template for squeleton device ***************************************************************************/ -#pragma once +#ifndef MAME_MACHINE_XXX_H +#define MAME_MACHINE_XXX_H -#ifndef __XXXDEV_H__ -#define __XXXDEV_H__ +#pragma once @@ -17,8 +17,9 @@ Template for skeleton device // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_XXX_ADD(_tag,_freq) \ - MCFG_DEVICE_ADD(_tag, XXX, _freq) +#define MCFG_XXX_ADD(tag, freq) \ + MCFG_DEVICE_ADD((tag), XXX, (freq)) + //************************************************************************** // TYPE DEFINITIONS @@ -38,14 +39,14 @@ public: protected: // device-level overrides -// virtual void device_validity_check(validity_checker &valid) const; + //virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; }; // device type definition -extern const device_type XXX; +DECLARE_DEVICE_TYPE(XXX, xxx_device) @@ -54,5 +55,4 @@ extern const device_type XXX; //************************************************************************** - -#endif +#endif // MAME_MACHINE_XXX_H diff --git a/src/mame/etc/template_driver.cpp b/src/mame/etc/template_driver.cpp index 84ad22ddf2d..56fe6ae5c29 100644 --- a/src/mame/etc/template_driver.cpp +++ b/src/mame/etc/template_driver.cpp @@ -2,7 +2,7 @@ // copyright-holders: /*************************************************************************** -Template for skeleton drivers +Template for squeleton drivers ***************************************************************************/ @@ -17,22 +17,24 @@ class xxx_state : public driver_device { public: xxx_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") - { } - - // devices - required_device m_maincpu; + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + { + } // screen updates uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_PALETTE_INIT(xxx); + protected: // driver_device overrides virtual void machine_start(); virtual void machine_reset(); virtual void video_start(); + + // devices + required_device m_maincpu; }; void xxx_state::video_start() @@ -137,7 +139,7 @@ PALETTE_INIT_MEMBER(xxx_state, xxx) { } -static MACHINE_CONFIG_START( xxx, xxx_state ) +static MACHINE_CONFIG_START( xxx ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,MAIN_CLOCK/2) @@ -191,4 +193,4 @@ ROM_END // For a generic system: // SYST(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,INIT,COMPANY,FULLNAME,FLAGS) -GAME( 198?, xxx, 0, xxx, xxx, driver_device, 0, ROT0, "", "", MACHINE_IS_SKELETON ) +GAME( 198?, xxx, 0, xxx, xxx, xxxx_state, 0, ROT0, "", "", MACHINE_IS_SKELETON ) diff --git a/src/mame/includes/abc1600.h b/src/mame/includes/abc1600.h index de87b7dc048..2e24b965dd9 100644 --- a/src/mame/includes/abc1600.h +++ b/src/mame/includes/abc1600.h @@ -86,17 +86,17 @@ public: required_device m_dart; required_device m_scc; required_device m_cio; - required_device m_fdc; + required_device m_fdc; required_device m_rtc; required_device m_nvram; required_device m_ram; required_device m_floppy0; required_device m_floppy1; required_device m_floppy2; - required_device m_bus0i; - required_device m_bus0x; - required_device m_bus1; - required_device m_bus2; + required_device m_bus0i; + required_device m_bus0x; + required_device m_bus1; + required_device m_bus2; virtual void machine_start() override; virtual void machine_reset() override; diff --git a/src/mame/includes/abc80.h b/src/mame/includes/abc80.h index c389254e5df..0c17f01bddc 100644 --- a/src/mame/includes/abc80.h +++ b/src/mame/includes/abc80.h @@ -6,8 +6,10 @@ * ****************************************************************************/ -#ifndef __ABC80__ -#define __ABC80__ +#ifndef MAME_INCLUDES_ABC80_H +#define MAME_INCLUDES_ABC80_H + +#pragma once #include "bus/abcbus/abcbus.h" #include "bus/rs232/rs232.h" @@ -94,7 +96,7 @@ public: required_device m_pio; required_device m_csg; required_device m_cassette; - required_device m_bus; + required_device m_bus; required_device m_kb; required_device m_ram; required_device m_rs232; @@ -145,7 +147,7 @@ public: DECLARE_WRITE8_MEMBER( pio_pb_w ); DECLARE_WRITE_LINE_MEMBER( keydown_w ); - DECLARE_WRITE8_MEMBER( kbd_w ); + void kbd_w(u8 data); DECLARE_WRITE8_MEMBER( csg_w ); DECLARE_QUICKLOAD_LOAD_MEMBER( bac ); @@ -188,4 +190,4 @@ public: MACHINE_CONFIG_EXTERN( abc80_video ); -#endif +#endif // MAME_INCLUDES_ABC80_H diff --git a/src/mame/includes/abc80x.h b/src/mame/includes/abc80x.h index 25dae3c1ce1..a75b01e7cba 100644 --- a/src/mame/includes/abc80x.h +++ b/src/mame/includes/abc80x.h @@ -171,13 +171,10 @@ public: required_memory_region m_fgctl_prom; required_memory_region m_char_rom; - DECLARE_DRIVER_INIT(driver_init); - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); void hr_update(bitmap_rgb32 &bitmap, const rectangle &cliprect); - DECLARE_DIRECT_UPDATE_MEMBER( direct_update_handler ); MC6845_UPDATE_ROW( abc800m_update_row ); }; @@ -198,15 +195,12 @@ public: required_device m_palette; required_memory_region m_fgctl_prom; - DECLARE_DRIVER_INIT(driver_init); - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); offs_t translate_trom_offset(offs_t offset); void hr_update(bitmap_rgb32 &bitmap, const rectangle &cliprect); DECLARE_READ8_MEMBER( char_ram_r ); - DECLARE_DIRECT_UPDATE_MEMBER( direct_update_handler ); DECLARE_PALETTE_INIT( abc800c ); }; @@ -229,7 +223,6 @@ public: required_memory_region m_char_rom; required_ioport m_config; - DECLARE_DRIVER_INIT(driver_init); virtual void machine_start() override; virtual void machine_reset() override; @@ -242,7 +235,6 @@ public: DECLARE_WRITE_LINE_MEMBER( lrs_w ); DECLARE_WRITE_LINE_MEMBER( mux80_40_w ); DECLARE_WRITE_LINE_MEMBER( vs_w ); - DECLARE_DIRECT_UPDATE_MEMBER( direct_update_handler ); MC6845_UPDATE_ROW( abc802_update_row ); // cpu state @@ -279,7 +271,6 @@ public: required_memory_region m_char_rom; optional_shared_ptr m_attr_ram; - DECLARE_DRIVER_INIT(driver_init); virtual void machine_start() override; virtual void machine_reset() override; @@ -304,7 +295,6 @@ public: DECLARE_WRITE_LINE_MEMBER( keydtr_w ); DECLARE_WRITE_LINE_MEMBER( hs_w ); DECLARE_WRITE_LINE_MEMBER( vs_w ); - DECLARE_DIRECT_UPDATE_MEMBER( direct_update_handler ); DECLARE_PALETTE_INIT( abc806 ); MC6845_UPDATE_ROW( abc806_update_row ); diff --git a/src/mame/includes/advision.h b/src/mame/includes/advision.h index 093b6179336..f0435127ae7 100644 --- a/src/mame/includes/advision.h +++ b/src/mame/includes/advision.h @@ -55,7 +55,7 @@ public: DECLARE_READ8_MEMBER( controller_r ); DECLARE_WRITE8_MEMBER( bankswitch_w ); DECLARE_WRITE8_MEMBER( av_control_w ); - DECLARE_READ8_MEMBER( vsync_r ); + DECLARE_READ_LINE_MEMBER( vsync_r ); DECLARE_READ8_MEMBER( sound_cmd_r ); DECLARE_WRITE8_MEMBER( sound_g_w ); DECLARE_WRITE8_MEMBER( sound_d_w ); diff --git a/src/mame/includes/aerofgt.h b/src/mame/includes/aerofgt.h index 621de27e2ad..a49da09365a 100644 --- a/src/mame/includes/aerofgt.h +++ b/src/mame/includes/aerofgt.h @@ -85,6 +85,7 @@ public: DECLARE_WRITE8_MEMBER(aerfboot_soundlatch_w); DECLARE_READ8_MEMBER(pending_command_r); DECLARE_WRITE8_MEMBER(pending_command_clear_w); + DECLARE_WRITE8_MEMBER(aerofgt_unknown_output_w); DECLARE_WRITE8_MEMBER(aerofgt_sh_bankswitch_w); DECLARE_WRITE8_MEMBER(aerfboot_okim6295_banking_w); DECLARE_WRITE16_MEMBER(aerofgt_bg1videoram_w); diff --git a/src/mame/includes/airbustr.h b/src/mame/includes/airbustr.h index d251c0c66ba..b946a944ba2 100644 --- a/src/mame/includes/airbustr.h +++ b/src/mame/includes/airbustr.h @@ -89,7 +89,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); INTERRUPT_GEN_MEMBER(slave_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(airbustr_scanline); }; diff --git a/src/mame/includes/alesis.h b/src/mame/includes/alesis.h index 47076f5cb0b..cdcf4723b56 100644 --- a/src/mame/includes/alesis.h +++ b/src/mame/includes/alesis.h @@ -6,10 +6,10 @@ ****************************************************************************/ -#pragma once +#ifndef MAME_INCLUDES_ALESIS_H +#define MAME_INCLUDES_ALESIS_H -#ifndef _ALESIS_H_ -#define _ALESIS_H_ +#pragma once #include "cpu/mcs51/mcs51.h" #include "machine/nvram.h" @@ -111,6 +111,6 @@ private: }; // device type definition -extern const device_type ALESIS_DM3AG; +DECLARE_DEVICE_TYPE(ALESIS_DM3AG, alesis_dm3ag_device) -#endif // _ALESIS_H_ +#endif // MAME_INCLUDES_ALESIS_H diff --git a/src/mame/includes/amiga.h b/src/mame/includes/amiga.h index 30289f756d0..532bbe6341d 100644 --- a/src/mame/includes/amiga.h +++ b/src/mame/includes/amiga.h @@ -9,8 +9,10 @@ Ernesto Corvi & Mariusz Wojcieszek ***************************************************************************/ -#ifndef __AMIGA_H__ -#define __AMIGA_H__ +#ifndef MAME_INCLUDES_AMIGA_H +#define MAME_INCLUDES_AMIGA_H + +#pragma once #include "cpu/m68000/m68000.h" #include "machine/bankdev.h" @@ -579,7 +581,7 @@ protected: optional_device m_rs232; optional_device m_centronics; required_device m_paula; - optional_device m_fdc; + optional_device m_fdc; required_device m_screen; optional_device m_palette; required_device m_overlay; @@ -651,6 +653,7 @@ private: emu_timer *m_irq_timer; emu_timer *m_serial_timer; + emu_timer *m_scanline_timer; bool m_gayle_reset; @@ -702,4 +705,4 @@ void amiga_sprite_enable_comparitor(running_machine &machine, int which, int ena MACHINE_CONFIG_EXTERN( pal_video ); MACHINE_CONFIG_EXTERN( ntsc_video ); -#endif /* __AMIGA_H__ */ +#endif // MAME_INCLUDES_AMIGA_H diff --git a/src/mame/includes/amstrad.h b/src/mame/includes/amstrad.h index 7e7d8474c7c..9fea9f0625b 100644 --- a/src/mame/includes/amstrad.h +++ b/src/mame/includes/amstrad.h @@ -229,7 +229,7 @@ public: DECLARE_MACHINE_RESET(aleste); DECLARE_PALETTE_INIT(aleste); uint32_t screen_update_amstrad(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_amstrad(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_amstrad); DECLARE_INPUT_CHANGED_MEMBER(cpc_monitor_changed); TIMER_CALLBACK_MEMBER(amstrad_pc2_low); TIMER_CALLBACK_MEMBER(amstrad_video_update_timer); diff --git a/src/mame/includes/apollo.h b/src/mame/includes/apollo.h index 64072444a6b..e1006db7bee 100644 --- a/src/mame/includes/apollo.h +++ b/src/mame/includes/apollo.h @@ -8,28 +8,33 @@ * */ +#ifndef MAME_INCLUDES_APOLLO_H +#define MAME_INCLUDES_APOLLO_H + #pragma once -#ifndef APOLLO_H_ -#define APOLLO_H_ +#include "machine/apollo_dbg.h" +#include "machine/apollo_kbd.h" #include "cpu/m68000/m68000.h" -#include "bus/rs232/rs232.h" -#include "machine/terminal.h" -#include "machine/ram.h" + #include "machine/6840ptm.h" -#include "machine/mc68681.h" #include "machine/am9517a.h" -#include "machine/pic8259.h" -#include "machine/mc146818.h" -#include "machine/apollo_dbg.h" -#include "machine/apollo_kbd.h" #include "machine/clock.h" +#include "machine/mc146818.h" +#include "machine/mc68681.h" +#include "machine/pic8259.h" +#include "machine/ram.h" +#include "machine/terminal.h" + #include "bus/isa/isa.h" #include "bus/isa/isa_cards.h" #include "bus/isa/3c505.h" + +#include "bus/rs232/rs232.h" + #ifndef VERBOSE #define VERBOSE 0 #endif @@ -338,7 +343,7 @@ private: uint8_t m_ip6; }; -extern const device_type APOLLO_SIO; +DECLARE_DEVICE_TYPE(APOLLO_SIO, apollo_sio) /*----------- machine/apollo_ni.c -----------*/ @@ -387,7 +392,7 @@ private: }; // device type definition -extern const device_type APOLLO_NI; +DECLARE_DEVICE_TYPE(APOLLO_NI, apollo_ni) /*----------- video/apollo.c -----------*/ @@ -397,7 +402,6 @@ class apollo_graphics_15i : public device_t { public: apollo_graphics_15i(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - apollo_graphics_15i(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, device_type type, const char *name, const char *shortname, const char *source); ~apollo_graphics_15i(); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -425,6 +429,8 @@ public: int is_mono() { return m_n_planes == 1; } protected: + apollo_graphics_15i(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, device_type type); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -624,7 +630,7 @@ private: running_machine *m_machine; }; -extern const device_type APOLLO_GRAPHICS; +DECLARE_DEVICE_TYPE(APOLLO_GRAPHICS, apollo_graphics_15i) #define MCFG_APOLLO_GRAPHICS_ADD( _tag) \ MCFG_FRAGMENT_ADD(apollo_graphics) \ @@ -645,7 +651,7 @@ private: // internal state }; -extern const device_type APOLLO_MONO19I; +DECLARE_DEVICE_TYPE(APOLLO_MONO19I, apollo_graphics_19i) #define MCFG_APOLLO_MONO19I_ADD(_tag) \ MCFG_FRAGMENT_ADD(apollo_mono19i) \ @@ -708,7 +714,7 @@ private: }; // device type definition -extern const device_type APOLLO_STDIO; +DECLARE_DEVICE_TYPE(APOLLO_STDIO, apollo_stdio_device) #endif /* APOLLO_XXL */ -#endif /* APOLLO_H_ */ +#endif // MAME_INCLUDES_APOLLO_H diff --git a/src/mame/includes/apple3.h b/src/mame/includes/apple3.h index 43446b315fa..ebb34c4d6ff 100644 --- a/src/mame/includes/apple3.h +++ b/src/mame/includes/apple3.h @@ -69,7 +69,7 @@ public: required_device m_via_0; required_device m_via_1; required_device m_acia; - required_device m_fdc; + required_device m_fdc; required_device m_ay3600; required_device m_a2bus; required_device m_rtc; diff --git a/src/mame/includes/arcadia.h b/src/mame/includes/arcadia.h index 21a1c5f3c50..f2171ce36b1 100644 --- a/src/mame/includes/arcadia.h +++ b/src/mame/includes/arcadia.h @@ -6,8 +6,8 @@ * ****************************************************************************/ -#ifndef ARCADIA_H_ -#define ARCADIA_H_ +#ifndef MAME_INCLUDES_ARCADIA_H +#define MAME_INCLUDES_ARCADIA_H #include "cpu/s2650/s2650.h" #include "audio/arcadia.h" @@ -126,4 +126,4 @@ protected: required_device m_palette; required_device m_screen; }; -#endif /* ARCADIA_H_ */ +#endif // MAME_INCLUDES_ARCADIA_H diff --git a/src/mame/includes/archimds.h b/src/mame/includes/archimds.h index 16c5782c78e..7db518ccfc6 100644 --- a/src/mame/includes/archimds.h +++ b/src/mame/includes/archimds.h @@ -100,7 +100,7 @@ public: protected: required_device m_maincpu; optional_device m_i2cmem; - optional_device m_fdc; + optional_device m_fdc; optional_device m_floppy0; optional_device m_floppy1; required_memory_region m_region_maincpu; diff --git a/src/mame/includes/artmagic.h b/src/mame/includes/artmagic.h index 2dc6587773c..755c33b0021 100644 --- a/src/mame/includes/artmagic.h +++ b/src/mame/includes/artmagic.h @@ -61,6 +61,7 @@ public: uint16_t m_blitter_data[8]; uint8_t m_blitter_page; attotime m_blitter_busy_until; + emu_timer * m_irq_off_timer; DECLARE_WRITE16_MEMBER(control_w); DECLARE_READ16_MEMBER(ultennis_hack_r); DECLARE_WRITE16_MEMBER(protection_bit_w); diff --git a/src/mame/includes/asuka.h b/src/mame/includes/asuka.h index 8dbd790738e..137cdc4df20 100644 --- a/src/mame/includes/asuka.h +++ b/src/mame/includes/asuka.h @@ -50,6 +50,8 @@ public: u16 m_adpcm_pos; bool m_adpcm_ff; + emu_timer *m_cadash_int5_timer; + optional_shared_ptr m_cadash_shared_ram; /* devices */ @@ -74,8 +76,9 @@ public: virtual void machine_reset() override; uint32_t screen_update_bonzeadv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_asuka(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_asuka(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_asuka); INTERRUPT_GEN_MEMBER(cadash_interrupt); + DECLARE_DRIVER_INIT(cadash); /*----------- defined in machine/bonzeadv.c -----------*/ void WriteLevelData(); diff --git a/src/mame/includes/atarigt.h b/src/mame/includes/atarigt.h index e958683f36e..7e632b4d544 100644 --- a/src/mame/includes/atarigt.h +++ b/src/mame/includes/atarigt.h @@ -6,8 +6,9 @@ *************************************************************************/ -#include "machine/atarigen.h" #include "audio/cage.h" +#include "machine/atarigen.h" +#include "video/atarirle.h" #define CRAM_ENTRIES 0x4000 #define TRAM_ENTRIES 0x4000 diff --git a/src/mame/includes/atarigx2.h b/src/mame/includes/atarigx2.h index 11618c9ea09..76e4199be92 100644 --- a/src/mame/includes/atarigx2.h +++ b/src/mame/includes/atarigx2.h @@ -16,14 +16,14 @@ class atarigx2_state : public atarigen_state { public: atarigx2_state(const machine_config &mconfig, device_type type, const char *tag) - : atarigen_state(mconfig, type, tag), - m_jsa(*this, "jsa"), - m_xga(*this, "xga"), - m_mo_command(*this, "mo_command"), - m_playfield_tilemap(*this, "playfield"), - m_alpha_tilemap(*this, "alpha"), - m_rle(*this, "rle") - { } + : atarigen_state(mconfig, type, tag) + , m_jsa(*this, "jsa") + , m_xga(*this, "xga") + , m_mo_command(*this, "mo_command") + , m_playfield_tilemap(*this, "playfield") + , m_alpha_tilemap(*this, "alpha") + , m_rle(*this, "rle") + { } uint16_t m_playfield_base; diff --git a/src/mame/includes/atarist.h b/src/mame/includes/atarist.h index bddb2781113..5ed1f0d373f 100644 --- a/src/mame/includes/atarist.h +++ b/src/mame/includes/atarist.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder, Olivier Galibert -#pragma once +#ifndef MAME_INCLUDES_ATARI_ST_H +#define MAME_INCLUDES_ATARI_ST_H -#ifndef __ATARI_ST__ -#define __ATARI_ST__ +#pragma once #include "bus/rs232/rs232.h" #include "cpu/m68000/m68000.h" @@ -124,7 +124,7 @@ public: { } required_device m_maincpu; - required_device m_fdc; + required_device m_fdc; required_device m_mfp; required_device m_acia0; required_device m_acia1; @@ -465,4 +465,4 @@ public: DECLARE_READ8_MEMBER( mfp_gpio_r ); }; -#endif +#endif // MAME_INCLUDES_ATARI_ST_H diff --git a/src/mame/includes/aussiebyte.h b/src/mame/includes/aussiebyte.h index 4fe530f4ed3..7cb3a5268c6 100644 --- a/src/mame/includes/aussiebyte.h +++ b/src/mame/includes/aussiebyte.h @@ -131,7 +131,7 @@ private: required_device m_sio2; required_device m_centronics; required_device m_rs232; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; optional_device m_floppy1; required_device m_crtc; diff --git a/src/mame/includes/b2m.h b/src/mame/includes/b2m.h index 156e2c7df9a..03ab576cf62 100644 --- a/src/mame/includes/b2m.h +++ b/src/mame/includes/b2m.h @@ -9,6 +9,8 @@ #ifndef MAME_INCLUDES_B2M_H #define MAME_INCLUDES_B2M_H +#pragma once + #include "machine/i8255.h" #include "machine/pic8259.h" #include "machine/pit8253.h" @@ -21,45 +23,23 @@ class b2m_state : public driver_device { public: b2m_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_speaker(*this, "speaker"), - m_pit(*this, "pit8253"), - m_ram(*this, RAM_TAG), - m_palette(*this, "palette") { } - - uint8_t m_b2m_8255_porta; - uint8_t m_b2m_video_scroll; - uint8_t m_b2m_8255_portc; - - uint8_t m_b2m_video_page; - uint8_t m_b2m_drive; - uint8_t m_b2m_side; + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_speaker(*this, "speaker") + , m_pit(*this, "pit8253") + , m_ram(*this, RAM_TAG) + , m_palette(*this, "palette") + , m_fdc(*this, "fd1793") + , m_pic(*this, "pic8259") + { } - uint8_t m_b2m_romdisk_lsb; - uint8_t m_b2m_romdisk_msb; - - uint8_t m_b2m_color[4]; - uint8_t m_b2m_localmachine; - uint8_t m_vblank_state; - required_device m_maincpu; - required_device m_speaker; - required_device m_pit; - required_device m_ram; - required_device m_palette; - - /* devices */ - fd1793_t *m_fdc; - pic8259_device *m_pic; DECLARE_READ8_MEMBER(b2m_keyboard_r); DECLARE_WRITE8_MEMBER(b2m_palette_w); DECLARE_READ8_MEMBER(b2m_palette_r); DECLARE_WRITE8_MEMBER(b2m_localmachine_w); DECLARE_READ8_MEMBER(b2m_localmachine_r); DECLARE_DRIVER_INIT(b2m); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; + DECLARE_PALETTE_INIT(b2m); uint32_t screen_update_b2m(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(b2m_vblank_interrupt); @@ -74,8 +54,38 @@ public: DECLARE_WRITE8_MEMBER(b2m_romdisk_portc_w); DECLARE_WRITE_LINE_MEMBER(b2m_fdc_drq); DECLARE_FLOPPY_FORMATS( b2m_floppy_formats ); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + void b2m_postload(); void b2m_set_bank(int bank); + + uint8_t m_b2m_8255_porta; + uint8_t m_b2m_video_scroll; + uint8_t m_b2m_8255_portc; + + uint8_t m_b2m_video_page; + uint8_t m_b2m_drive; + uint8_t m_b2m_side; + + uint8_t m_b2m_romdisk_lsb; + uint8_t m_b2m_romdisk_msb; + + uint8_t m_b2m_color[4]; + uint8_t m_b2m_localmachine; + uint8_t m_vblank_state; + required_device m_maincpu; + required_device m_speaker; + required_device m_pit; + required_device m_ram; + required_device m_palette; + + /* devices */ + optional_device m_fdc; + optional_device m_pic; }; #endif // MAME_INCLUDES_B2M_H diff --git a/src/mame/includes/badlands.h b/src/mame/includes/badlands.h index 3e64a668b97..f14b0ed68f6 100644 --- a/src/mame/includes/badlands.h +++ b/src/mame/includes/badlands.h @@ -17,14 +17,17 @@ public: m_audiocpu(*this, "audiocpu"), m_soundcomm(*this, "soundcomm"), m_playfield_tilemap(*this, "playfield"), - m_mob(*this, "mob") { } + m_mob(*this, "mob"), + m_b_sharedram(*this, "b_sharedram") + { } optional_device m_audiocpu; optional_device m_soundcomm; required_device m_playfield_tilemap; required_device m_mob; - + optional_shared_ptr m_b_sharedram; + uint8_t m_pedal_value[2]; uint8_t m_playfield_tile_bank; @@ -44,7 +47,12 @@ public: DECLARE_MACHINE_RESET(badlandsb); uint32_t screen_update_badlands(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(vblank_int); + TIMER_DEVICE_CALLBACK_MEMBER(sound_scanline); + TIMER_DEVICE_CALLBACK_MEMBER(bootleg_sound_scanline); DECLARE_WRITE16_MEMBER( badlands_pf_bank_w ); + DECLARE_READ8_MEMBER(bootleg_shared_r); + DECLARE_WRITE8_MEMBER(bootleg_shared_w); + DECLARE_WRITE8_MEMBER(bootleg_main_irq_w); static const atari_motion_objects_config s_mob_config; }; diff --git a/src/mame/includes/baraduke.h b/src/mame/includes/baraduke.h index 87de2e9c1f1..b6032c7efda 100644 --- a/src/mame/includes/baraduke.h +++ b/src/mame/includes/baraduke.h @@ -51,7 +51,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(baraduke); uint32_t screen_update_baraduke(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_baraduke(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_baraduke); void scroll_w(address_space &space, int layer, int offset, int data); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int sprite_priority); void set_scroll(int layer); diff --git a/src/mame/includes/bbc.h b/src/mame/includes/bbc.h index 5969e4c7e4b..dacbdf4d622 100644 --- a/src/mame/includes/bbc.h +++ b/src/mame/includes/bbc.h @@ -139,8 +139,6 @@ public: DECLARE_WRITE8_MEMBER(bbcm_wd1772l_write); DECLARE_WRITE8_MEMBER(bbc_videoULA_w); DECLARE_READ8_MEMBER(bbc_fe_r); - DECLARE_DIRECT_UPDATE_MEMBER(bbcbp_direct_handler); - DECLARE_DIRECT_UPDATE_MEMBER(bbcm_direct_handler); DECLARE_DRIVER_INIT(bbc); DECLARE_VIDEO_START(bbc); @@ -232,8 +230,8 @@ public: // HACK FOR MC6845 optional_device m_rtc; optional_device m_fdc; optional_device m_i8271; - optional_device m_wd1770; - optional_device m_wd1772; + optional_device m_wd1770; + optional_device m_wd1772; optional_device m_exp1; optional_device m_exp2; optional_device m_exp3; diff --git a/src/mame/includes/bbusters.h b/src/mame/includes/bbusters.h index c3100bf4ead..261d6250005 100644 --- a/src/mame/includes/bbusters.h +++ b/src/mame/includes/bbusters.h @@ -70,7 +70,6 @@ public: uint32_t screen_update_bbuster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_mechatt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_bbuster(screen_device &screen, bool state); inline const uint8_t *get_source_ptr(gfx_element *gfx, uint32_t sprite, int dx, int dy, int block); void draw_block(bitmap_ind16 &dest,int x,int y,int size,int flipx,int flipy,uint32_t sprite,int color,int bank,int block); void draw_sprites(bitmap_ind16 &bitmap, const uint16_t *source, int bank, int colval, int colmask); diff --git a/src/mame/includes/beathead.h b/src/mame/includes/beathead.h index d1fb985052c..786cf7a9c6f 100644 --- a/src/mame/includes/beathead.h +++ b/src/mame/includes/beathead.h @@ -15,14 +15,15 @@ class beathead_state : public atarigen_state public: beathead_state(const machine_config &mconfig, device_type type, const char *tag) : atarigen_state(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_jsa(*this, "jsa"), - m_nvram(*this, "nvram"), - m_videoram(*this, "videoram"), - m_vram_bulk_latch(*this, "vram_bulk_latch"), - m_palette_select(*this, "palette_select"), - m_ram_base(*this, "ram_base"), - m_rom_base(*this, "rom_base") { } + m_maincpu(*this, "maincpu"), + m_jsa(*this, "jsa"), + m_nvram(*this, "nvram"), + m_videoram(*this, "videoram"), + m_vram_bulk_latch(*this, "vram_bulk_latch"), + m_palette_select(*this, "palette_select"), + m_ram_base(*this, "ram_base"), + m_rom_base(*this, "rom_base") + { } virtual void machine_reset() override; @@ -58,9 +59,6 @@ public: uint8_t m_eeprom_enabled; - uint32_t * m_speedup_data; - uint32_t * m_movie_speedup_data; - // in drivers/beathead.c virtual void update_interrupts() override; DECLARE_WRITE32_MEMBER( interrupt_control_w ); @@ -80,6 +78,5 @@ public: DECLARE_WRITE32_MEMBER( finescroll_w ); DECLARE_READ32_MEMBER( hsync_ram_r ); DECLARE_WRITE32_MEMBER( hsync_ram_w ); - DECLARE_DRIVER_INIT(beathead); TIMER_DEVICE_CALLBACK_MEMBER(scanline_callback); }; diff --git a/src/mame/includes/bfm_sc4.h b/src/mame/includes/bfm_sc4.h index 1933b6cdc92..be08dd9d447 100644 --- a/src/mame/includes/bfm_sc4.h +++ b/src/mame/includes/bfm_sc4.h @@ -2,6 +2,10 @@ // copyright-holders:David Haywood /* Scorpion 4 + 5 driver related includes */ /* mainly used for stuff which is currently shared between sc4 / 5 sets to avoid duplication */ +#ifndef MAME_INCLUDES_BFP_SC4_H +#define MAME_INCLUDES_BFP_SC4_H + +#pragma once #include "machine/sec.h" #include "machine/steppers.h" // stepper motor @@ -95,8 +99,8 @@ public: public: required_device m_duart; - optional_device m_vfd0; - optional_device m_dm01; + optional_device m_vfd0; + optional_device m_dm01; required_device m_ymz; // serial vfd @@ -139,7 +143,7 @@ public: m_dochk41 = false; } - required_device m_maincpu; + required_device m_maincpu; required_memory_region m_cpuregion; // devices required_device m_nvram; @@ -638,7 +642,7 @@ public: DECLARE_MACHINE_START(adder4); // devices - required_device m_adder4cpu; + required_device m_adder4cpu; }; @@ -3373,3 +3377,5 @@ INPUT_PORTS_EXTERN( sc4_raw ); ROM_REGION( 0x400000, "ymz", ROMREGION_ERASE00 ) \ /* not for either of these games? */ \ ROM_LOAD( "casroysnd.bin", 0x00000, 0x80000, CRC(cf1d4b59) SHA1(1b2bc74c6fcc43197a6f295bc34554da01f7b517) ) + +#endif // MAME_INCLUDES_BFP_SC4_H diff --git a/src/mame/includes/bionicc.h b/src/mame/includes/bionicc.h index 6b36e460a26..7fb7094ad49 100644 --- a/src/mame/includes/bionicc.h +++ b/src/mame/includes/bionicc.h @@ -44,14 +44,14 @@ public: DECLARE_WRITE16_MEMBER(hacked_controls_w); DECLARE_READ16_MEMBER(hacked_controls_r); - DECLARE_WRITE16_MEMBER(bionicc_mpu_trigger_w); + DECLARE_WRITE16_MEMBER(mpu_trigger_w); DECLARE_WRITE16_MEMBER(hacked_soundcommand_w); DECLARE_READ16_MEMBER(hacked_soundcommand_r); - DECLARE_WRITE16_MEMBER(bionicc_bgvideoram_w); - DECLARE_WRITE16_MEMBER(bionicc_fgvideoram_w); - DECLARE_WRITE16_MEMBER(bionicc_txvideoram_w); - DECLARE_WRITE16_MEMBER(bionicc_scroll_w); - DECLARE_WRITE16_MEMBER(bionicc_gfxctrl_w); + DECLARE_WRITE16_MEMBER(bgvideoram_w); + DECLARE_WRITE16_MEMBER(fgvideoram_w); + DECLARE_WRITE16_MEMBER(txvideoram_w); + DECLARE_WRITE16_MEMBER(scroll_w); + DECLARE_WRITE16_MEMBER(gfxctrl_w); TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info); TILE_GET_INFO_MEMBER(get_tx_tile_info); @@ -59,8 +59,8 @@ public: virtual void machine_reset() override; virtual void video_start() override; DECLARE_PALETTE_DECODER(RRRRGGGGBBBBIIII); - uint32_t screen_update_bionicc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_DEVICE_CALLBACK_MEMBER(bionicc_scanline); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TIMER_DEVICE_CALLBACK_MEMBER(scanline); required_device m_maincpu; required_device m_gfxdecode; required_device m_palette; diff --git a/src/mame/includes/bk.h b/src/mame/includes/bk.h index 0910fd45685..6ac9b06d105 100644 --- a/src/mame/includes/bk.h +++ b/src/mame/includes/bk.h @@ -26,6 +26,7 @@ public: uint16_t m_key_pressed; uint16_t m_key_irq_vector; uint16_t m_drive; + emu_timer *m_kbd_timer; DECLARE_READ16_MEMBER(bk_key_state_r); DECLARE_READ16_MEMBER(bk_key_code_r); DECLARE_READ16_MEMBER(bk_vid_scrool_r); diff --git a/src/mame/includes/bking.h b/src/mame/includes/bking.h index ebc5c809c36..44a7c521589 100644 --- a/src/mame/includes/bking.h +++ b/src/mame/includes/bking.h @@ -93,5 +93,5 @@ public: DECLARE_MACHINE_RESET(bking3); DECLARE_MACHINE_RESET(common); uint32_t screen_update_bking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_bking(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_bking); }; diff --git a/src/mame/includes/blstroid.h b/src/mame/includes/blstroid.h index 980f005dad8..010707d5a94 100644 --- a/src/mame/includes/blstroid.h +++ b/src/mame/includes/blstroid.h @@ -41,6 +41,9 @@ public: DECLARE_VIDEO_START(blstroid); uint32_t screen_update_blstroid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + emu_timer *m_irq_off_timer; + emu_timer *m_irq_on_timer; + static const atari_motion_objects_config s_mob_config; protected: diff --git a/src/mame/includes/bosco.h b/src/mame/includes/bosco.h index 2ea566cb5ec..2a0a17c0003 100644 --- a/src/mame/includes/bosco.h +++ b/src/mame/includes/bosco.h @@ -36,7 +36,7 @@ public: DECLARE_VIDEO_START(bosco); DECLARE_PALETTE_INIT(bosco); uint32_t screen_update_bosco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_bosco(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_bosco); inline void get_tile_info_bosco(tile_data &tileinfo,int tile_index,int ram_offs); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int flip); diff --git a/src/mame/includes/bullet.h b/src/mame/includes/bullet.h index 3b9ca19b9f4..9902d4e2753 100644 --- a/src/mame/includes/bullet.h +++ b/src/mame/includes/bullet.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder -#pragma once +#ifndef MAME_INCLUDES_BULLET_H +#define MAME_INCLUDES_BULLET_H -#ifndef __BULLET__ -#define __BULLET__ +#pragma once #include "cpu/z80/z80.h" #include "bus/centronics/ctronics.h" @@ -55,28 +55,6 @@ public: { } - required_device m_maincpu; - required_device m_ctc; - required_device m_dart; - required_device m_dmac; - required_device m_fdc; - required_device m_ram; - required_device m_floppy0; - required_device m_floppy1; - required_device m_floppy2; - required_device m_floppy3; - required_device m_floppy4; - required_device m_floppy5; - required_device m_floppy6; - required_device m_floppy7; - floppy_image_device *m_floppy; - required_device m_centronics; - required_memory_region m_rom; - required_ioport m_sw1; - - virtual void machine_start() override; - virtual void machine_reset() override; - DECLARE_READ8_MEMBER( mreq_r ); DECLARE_WRITE8_MEMBER( mreq_w ); DECLARE_READ8_MEMBER( info_r ); @@ -99,7 +77,36 @@ public: DECLARE_WRITE_LINE_MEMBER( write_centronics_fault ); DECLARE_WRITE_LINE_MEMBER( fdc_drq_w ); + TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick); + DECLARE_WRITE_LINE_MEMBER(dart_rxtxca_w); + DECLARE_READ8_MEMBER(io_read_byte); + DECLARE_WRITE8_MEMBER(io_write_byte); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + void update_dma_rdy(); + + required_device m_maincpu; + required_device m_ctc; + required_device m_dart; + required_device m_dmac; + required_device m_fdc; + required_device m_ram; + required_device m_floppy0; + required_device m_floppy1; + required_device m_floppy2; + required_device m_floppy3; + required_device m_floppy4; + required_device m_floppy5; + required_device m_floppy6; + required_device m_floppy7; + floppy_image_device *m_floppy; + required_device m_centronics; + required_memory_region m_rom; + required_ioport m_sw1; + // memory state int m_segst; int m_brom; @@ -120,11 +127,6 @@ public: int m_centronics_perror; int m_centronics_select; int m_centronics_fault; - - TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick); - DECLARE_WRITE_LINE_MEMBER(dart_rxtxca_w); - DECLARE_READ8_MEMBER(io_read_byte); - DECLARE_WRITE8_MEMBER(io_write_byte); }; class bulletf_state : public bullet_state @@ -141,16 +143,6 @@ public: { } - required_device m_floppy8; - required_device m_floppy9; - required_device m_scsibus; - required_device m_scsi_data_in; - required_device m_scsi_data_out; - required_device m_scsi_ctrl_in; - - virtual void machine_start() override; - virtual void machine_reset() override; - DECLARE_READ8_MEMBER( mreq_r ); DECLARE_WRITE8_MEMBER( mreq_w ); DECLARE_WRITE8_MEMBER( xdma0_w ); @@ -166,8 +158,19 @@ public: DECLARE_WRITE_LINE_MEMBER( cstrb_w ); DECLARE_WRITE_LINE_MEMBER( req_w ); +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + void update_dma_rdy(); + required_device m_floppy8; + required_device m_floppy9; + required_device m_scsibus; + required_device m_scsi_data_in; + required_device m_scsi_data_out; + required_device m_scsi_ctrl_in; + int m_rome; uint8_t m_xdma0; uint8_t m_mbank; @@ -175,4 +178,4 @@ public: int m_wrdy; }; -#endif +#endif // MAME_INCLUDES_BULLET_H diff --git a/src/mame/includes/bw2.h b/src/mame/includes/bw2.h index 067fe96a983..f9a36bc9614 100644 --- a/src/mame/includes/bw2.h +++ b/src/mame/includes/bw2.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder -#pragma once +#ifndef MAME_INCLUDES_BW2_H +#define MAME_INCLUDES_BW2_H -#ifndef __BW2__ -#define __BW2__ +#pragma once #include "bus/bw2/exp.h" #include "cpu/z80/z80.h" @@ -50,7 +50,7 @@ public: required_device m_maincpu; required_device m_uart; - required_device m_fdc; + required_device m_fdc; required_device m_lcdc; required_device m_pit; required_device m_centronics; @@ -96,4 +96,4 @@ public: int m_centronics_busy; }; -#endif +#endif // MAME_INCLUDES_BW2_H diff --git a/src/mame/includes/capbowl.h b/src/mame/includes/capbowl.h index 2cffa30c5c7..5d856c1a27c 100644 --- a/src/mame/includes/capbowl.h +++ b/src/mame/includes/capbowl.h @@ -5,6 +5,10 @@ Coors Light Bowling/Bowl-O-Rama hardware *************************************************************************/ +#ifndef MAME_INCLUDES_CAPBOWL_H +#define MAME_INCLUDES_CAPBOWL_H + +#pragma once #include "machine/gen_latch.h" #include "machine/nvram.h" @@ -72,8 +76,10 @@ public: TIMER_CALLBACK_MEMBER(update); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - inline rgb_t pen_for_pixel( uint8_t *src, uint8_t pix ); + inline rgb_t pen_for_pixel( uint8_t const *src, uint8_t pix ); protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; + +#endif // MAME_INCLUDES_CAPBOWL_H diff --git a/src/mame/includes/carpolo.h b/src/mame/includes/carpolo.h index 6935e9a62d8..a2442cec6db 100644 --- a/src/mame/includes/carpolo.h +++ b/src/mame/includes/carpolo.h @@ -95,7 +95,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(carpolo); uint32_t screen_update_carpolo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_carpolo(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_carpolo); INTERRUPT_GEN_MEMBER(carpolo_timer_interrupt); DECLARE_WRITE_LINE_MEMBER(coin1_interrupt_clear_w); DECLARE_WRITE_LINE_MEMBER(coin2_interrupt_clear_w); diff --git a/src/mame/includes/cave.h b/src/mame/includes/cave.h index d0191eff62c..647ad66df59 100644 --- a/src/mame/includes/cave.h +++ b/src/mame/includes/cave.h @@ -100,6 +100,7 @@ public: int m_spritetype[2]; int m_kludge; + emu_timer *m_vblank_end_timer; /* misc */ diff --git a/src/mame/includes/cidelsa.h b/src/mame/includes/cidelsa.h index 4fecb52f077..4c101366e49 100644 --- a/src/mame/includes/cidelsa.h +++ b/src/mame/includes/cidelsa.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder -#pragma once +#ifndef MAME_INCLUDES_CIDELSA_H +#define MAME_INCLUDES_CIDELSA_H -#ifndef __CIDELSA__ -#define __CIDELSA__ +#pragma once #include "cpu/cosmac/cosmac.h" @@ -13,6 +13,7 @@ #include "machine/cdp1852.h" #include "machine/nvram.h" + #define SCREEN_TAG "screen" #define CDP1802_TAG "cdp1802" #define CDP1869_TAG "cdp1869" @@ -22,9 +23,9 @@ #define DESTRYER_CHR1 3579000.0 // unverified #define DESTRYER_CHR2 XTAL_5_7143MHz #define ALTAIR_CHR1 3579000.0 // unverified -#define ALTAIR_CHR2 CDP1869_DOT_CLK_PAL // unverified +#define ALTAIR_CHR2 cdp1869_device::DOT_CLK_PAL // unverified #define DRACO_CHR1 XTAL_4_43361MHz -#define DRACO_CHR2 CDP1869_DOT_CLK_PAL // unverified +#define DRACO_CHR2 cdp1869_device::DOT_CLK_PAL // unverified #define DRACO_SND_CHR1 XTAL_2_01216MHz #define CIDELSA_PAGERAM_SIZE 0x400 @@ -35,6 +36,7 @@ #define DRACO_PAGERAM_MASK 0x7ff #define CIDELSA_CHARRAM_MASK 0x7ff + class cidelsa_state : public driver_device { public: @@ -44,9 +46,9 @@ public: }; cidelsa_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, CDP1802_TAG), - m_vis(*this, CDP1869_TAG) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, CDP1802_TAG) + , m_vis(*this, CDP1869_TAG) { } required_device m_maincpu; @@ -121,4 +123,4 @@ MACHINE_CONFIG_EXTERN( destryer_video ); MACHINE_CONFIG_EXTERN( altair_video ); MACHINE_CONFIG_EXTERN( draco_video ); -#endif +#endif // MAME_INCLUDES_CIDELSA_H diff --git a/src/mame/includes/coco.h b/src/mame/includes/coco.h index 06920b09a10..17313f4db37 100644 --- a/src/mame/includes/coco.h +++ b/src/mame/includes/coco.h @@ -31,6 +31,7 @@ //************************************************************************** INPUT_PORTS_EXTERN( coco_analog_control ); +INPUT_PORTS_EXTERN( coco_joystick ); INPUT_PORTS_EXTERN( coco_rtc ); INPUT_PORTS_EXTERN( coco_beckerport ); diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h index 7191b8815ee..9ab83bf145f 100644 --- a/src/mame/includes/cps1.h +++ b/src/mame/includes/cps1.h @@ -327,7 +327,7 @@ public: DECLARE_VIDEO_START(cps); DECLARE_MACHINE_START(sf2m1); uint32_t screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_cps1(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_cps1); INTERRUPT_GEN_MEMBER(cps1_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(ganbare_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(cps2_interrupt); diff --git a/src/mame/includes/crshrace.h b/src/mame/includes/crshrace.h index 9d1621000d8..e1562f4cfc5 100644 --- a/src/mame/includes/crshrace.h +++ b/src/mame/includes/crshrace.h @@ -69,7 +69,6 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_crshrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_crshrace(screen_device &screen, bool state); void draw_bg( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ); void draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; diff --git a/src/mame/includes/cyberbal.h b/src/mame/includes/cyberbal.h index d02c60ae628..1659118305a 100644 --- a/src/mame/includes/cyberbal.h +++ b/src/mame/includes/cyberbal.h @@ -79,7 +79,9 @@ public: DECLARE_WRITE16_MEMBER(sound_68k_dac_w); DECLARE_DRIVER_INIT(cyberbalt); TILE_GET_INFO_MEMBER(get_alpha_tile_info); + TILE_GET_INFO_MEMBER(get_alpha2_tile_info); TILE_GET_INFO_MEMBER(get_playfield_tile_info); + TILE_GET_INFO_MEMBER(get_playfield2_tile_info); DECLARE_MACHINE_START(cyberbal); DECLARE_MACHINE_START(cyberbal2p); DECLARE_MACHINE_RESET(cyberbal); diff --git a/src/mame/includes/dcheese.h b/src/mame/includes/dcheese.h index 56815c02fc1..4d7e25627ce 100644 --- a/src/mame/includes/dcheese.h +++ b/src/mame/includes/dcheese.h @@ -36,6 +36,7 @@ public: std::unique_ptr m_dstbitmap; emu_timer *m_blitter_timer; + emu_timer *m_signal_irq_timer; /* misc */ uint8_t m_irq_state[5]; diff --git a/src/mame/includes/dday.h b/src/mame/includes/dday.h index 405a9db04a9..e844a732ce1 100644 --- a/src/mame/includes/dday.h +++ b/src/mame/includes/dday.h @@ -6,6 +6,7 @@ *************************************************************************/ #include "screen.h" +#include "sound/ay8910.h" class dday_state : public driver_device @@ -20,7 +21,8 @@ public: m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_ay1(*this, "ay1") { } /* memory pointers */ required_shared_ptr m_textvideoram; @@ -38,9 +40,9 @@ public: int m_sl_image; int m_sl_enable; int m_timer_value; + emu_timer *m_countdown_timer; /* devices */ - device_t *m_ay1; DECLARE_READ8_MEMBER(dday_countdown_timer_r); DECLARE_WRITE8_MEMBER(dday_bgvideoram_w); DECLARE_WRITE8_MEMBER(dday_fgvideoram_w); @@ -64,4 +66,5 @@ public: required_device m_gfxdecode; required_device m_screen; required_device m_palette; + required_device m_ay1; }; diff --git a/src/mame/includes/dec8.h b/src/mame/includes/dec8.h index 85a91294041..47cf8212838 100644 --- a/src/mame/includes/dec8.h +++ b/src/mame/includes/dec8.h @@ -160,7 +160,7 @@ public: uint32_t screen_update_oscar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_srdarwin(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_cobracom(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_dec8(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_dec8); INTERRUPT_GEN_MEMBER(gondo_interrupt); INTERRUPT_GEN_MEMBER(oscar_interrupt); void srdarwin_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri ); diff --git a/src/mame/includes/deco_mlc.h b/src/mame/includes/deco_mlc.h index 39147574b49..7e0496f37b3 100644 --- a/src/mame/includes/deco_mlc.h +++ b/src/mame/includes/deco_mlc.h @@ -68,7 +68,7 @@ public: DECLARE_MACHINE_RESET(mlc); DECLARE_VIDEO_START(mlc); uint32_t screen_update_mlc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_mlc(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_mlc); TIMER_DEVICE_CALLBACK_MEMBER(interrupt_gen); void draw_sprites( const rectangle &cliprect, int scanline, uint32_t* dest); void descramble_sound( ); diff --git a/src/mame/includes/dgn_beta.h b/src/mame/includes/dgn_beta.h index 2c93ad9f771..9e6d7f24c7c 100644 --- a/src/mame/includes/dgn_beta.h +++ b/src/mame/includes/dgn_beta.h @@ -53,7 +53,7 @@ /* From Dragon Beta OS9 keyboard driver */ #define KAny 0x04 /* Any key pressed mask PB2 */ -#define KOutClk 0x08 /* Ouput shift register clock */ +#define KOutClk 0x08 /* Output shift register clock */ #define KInClk 0x10 /* Input shift register clock */ #define KOutDat KInClk /* Also used for data into output shifter */ #define KInDat 0x20 /* Keyboard data in from keyboard (serial stream) */ @@ -74,7 +74,7 @@ enum BETA_VID_MODES struct PageReg { int value; /* Value of the page register */ - uint8_t *memory; /* The memory it actually points to */ + uint8_t *memory; /* The memory it actually points to */ }; @@ -83,10 +83,14 @@ class dgn_beta_state : public driver_device public: dgn_beta_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_mc6845(*this, "crtc"), + m_mc6845(*this, "crtc"), m_videoram(*this, "videoram"), m_maincpu(*this, "maincpu"), + m_dmacpu(*this, DMACPU_TAG), m_ram(*this, RAM_TAG), + m_pia_0(*this, PIA_0_TAG), + m_pia_1(*this, PIA_1_TAG), + m_pia_2(*this, PIA_2_TAG), m_fdc(*this, FDC_TAG), m_floppy0(*this, FDC_TAG ":0"), m_floppy1(*this, FDC_TAG ":1"), @@ -98,6 +102,18 @@ public: required_device m_mc6845; required_shared_ptr m_videoram; + required_device m_maincpu; + required_device m_dmacpu; + required_device m_ram; + required_device m_pia_0; + required_device m_pia_1; + required_device m_pia_2; + required_device m_fdc; + required_device m_floppy0; + required_device m_floppy1; + required_device m_floppy2; + required_device m_floppy3; + required_device m_palette; uint8_t *m_system_rom; int m_LogDatWrites; @@ -201,7 +217,7 @@ public: /* WD2797 FDC */ DECLARE_READ8_MEMBER(dgnbeta_wd2797_r); DECLARE_WRITE8_MEMBER(dgnbeta_wd2797_w); - required_device m_maincpu; + void dgnbeta_vid_set_gctrl(int data); void UpdateBanks(int first, int last); void SetDefaultTask(); @@ -213,13 +229,6 @@ public: void cpu1_recalc_firq(int state); void ScanInKeyboard(void); void dgn_beta_frame_interrupt (int data); - required_device m_ram; - required_device m_fdc; - required_device m_floppy0; - required_device m_floppy1; - required_device m_floppy2; - required_device m_floppy3; - required_device m_palette; offs_t dgnbeta_dasm_override(device_t &device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options); diff --git a/src/mame/includes/dgnalpha.h b/src/mame/includes/dgnalpha.h index 9ea62d3aeef..128f5e3915b 100644 --- a/src/mame/includes/dgnalpha.h +++ b/src/mame/includes/dgnalpha.h @@ -8,10 +8,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_INCLUDES_DGNALPHA_H +#define MAME_INCLUDES_DGNALPHA_H -#ifndef __DGNALPHA__ -#define __DGNALPHA__ +#pragma once #include "includes/dragon.h" @@ -52,14 +52,6 @@ public: DECLARE_FLOPPY_FORMATS(dragon_formats); - required_device m_pia_2; - required_device m_ay8912; - required_device m_fdc; - required_device m_floppy0; - required_device m_floppy1; - required_device m_floppy2; - required_device m_floppy3; - /* pia2 */ DECLARE_WRITE8_MEMBER( pia2_pa_w ); @@ -86,6 +78,14 @@ protected: virtual DECLARE_READ8_MEMBER( ff20_read ) override; virtual DECLARE_WRITE8_MEMBER( ff20_write ) override; + required_device m_pia_2; + required_device m_ay8912; + required_device m_fdc; + required_device m_floppy0; + required_device m_floppy1; + required_device m_floppy2; + required_device m_floppy3; + private: uint8_t m_just_reset; @@ -94,4 +94,4 @@ private: void modem_w(offs_t offset, uint8_t data); }; -#endif /* __DGNALPHA__ */ +#endif // MAME_INCLUDES_DGNALPHA_H diff --git a/src/mame/includes/djboy.h b/src/mame/includes/djboy.h index 2795829b15a..0f26e4914d7 100644 --- a/src/mame/includes/djboy.h +++ b/src/mame/includes/djboy.h @@ -90,6 +90,6 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_djboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_djboy(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_djboy); TIMER_DEVICE_CALLBACK_MEMBER(djboy_scanline); }; diff --git a/src/mame/includes/dkong.h b/src/mame/includes/dkong.h index 476ea44d13b..8b4a32702ad 100644 --- a/src/mame/includes/dkong.h +++ b/src/mame/includes/dkong.h @@ -266,10 +266,11 @@ public: DECLARE_MACHINE_RESET(strtheat); DECLARE_MACHINE_RESET(drakton); DECLARE_WRITE8_MEMBER(M58817_command_w); - DECLARE_READ8_MEMBER(M58817_status_r); DECLARE_READ8_MEMBER(dkong_voice_status_r); DECLARE_READ8_MEMBER(dkong_tune_r); DECLARE_WRITE8_MEMBER(dkong_p1_w); + DECLARE_READ8_MEMBER(sound_t0_r); + DECLARE_READ8_MEMBER(sound_t1_r); uint32_t screen_update_dkong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_pestplce(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_spclforc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/mame/includes/dm7000.h b/src/mame/includes/dm7000.h index b50ee550e78..8b2b52b588d 100644 --- a/src/mame/includes/dm7000.h +++ b/src/mame/includes/dm7000.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Lukasz Markowski -#ifndef DM7000_H_ -#define DM7000_H_ +#ifndef MAME_INCLUDES_DM7000_H +#define MAME_INCLUDES_DM7000_H + +#pragma once #include "cpu/powerpc/ppc.h" #include "machine/terminal.h" @@ -28,7 +30,7 @@ public: DECLARE_WRITE8_MEMBER ( dm7000_scc0_w ); DECLARE_READ8_MEMBER ( dm7000_scc0_r ); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); uint8_t m_scc0_lcr; uint8_t m_scc0_lsr; uint8_t m_term_data; @@ -90,4 +92,4 @@ public: #define DCRSTB045_DISP_MODE 0x154 /* Display Mode Register */ #define DCRSTB045_FRAME_BUFR_BASE 0x179 /* Frame Buffers Base Address Register */ -#endif /* DM7000_H_ */ +#endif // MAME_INCLUDES_DM7000_H diff --git a/src/mame/includes/dooyong.h b/src/mame/includes/dooyong.h deleted file mode 100644 index 44da12b5215..00000000000 --- a/src/mame/includes/dooyong.h +++ /dev/null @@ -1,297 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nicola Salmoria,Vas Crabb -#include "video/bufsprite.h" -#include "screen.h" - -#define MCFG_DOOYONG_ROM_TILEMAP_ADD(tag, gfx, num, rom, offset) \ - MCFG_DEVICE_ADD(tag, DOOYONG_ROM_TILEMAP, 0) \ - dooyong_rom_tilemap_device::static_set_gfxdecode_tag(*device, "^" gfx); \ - dooyong_rom_tilemap_device::static_set_tilerom_tag(*device, "^" rom); \ - dooyong_rom_tilemap_device::static_set_gfxnum(*device, (num)); \ - dooyong_rom_tilemap_device::static_set_tilerom_offset(*device, (offset)); -#define MCFG_DOOYONG_ROM_TILEMAP_TRANSPARENT_PEN(pen) \ - dooyong_rom_tilemap_device::static_set_transparent_pen(*device, (pen)); -#define MCFG_DOOYONG_ROM_TILEMAP_PRIMELLA_CODE_BITS(bits) \ - dooyong_rom_tilemap_device::static_set_primella_code_bits(*device, (bits)); - -#define MCFG_RSHARK_ROM_TILEMAP_ADD(tag, gfx, num, rom, offset, rom2, offset2) \ - MCFG_DEVICE_ADD(tag, RSHARK_ROM_TILEMAP, 0) \ - dooyong_rom_tilemap_device::static_set_gfxdecode_tag(*device, "^" gfx); \ - dooyong_rom_tilemap_device::static_set_tilerom_tag(*device, "^" rom); \ - dooyong_rom_tilemap_device::static_set_gfxnum(*device, (num)); \ - dooyong_rom_tilemap_device::static_set_tilerom_offset(*device, (offset)); \ - dooyong_rom_tilemap_device::static_set_primella_code_bits(*device, 13); \ - rshark_rom_tilemap_device::static_set_colorrom_tag(*device, "^" rom2); \ - rshark_rom_tilemap_device::static_set_colorrom_offset(*device, (offset2)); - -#define MCFG_DOOYONG_RAM_TILEMAP_ADD(tag, gfx, num) \ - MCFG_DEVICE_ADD(tag, DOOYONG_RAM_TILEMAP, 0) \ - dooyong_rom_tilemap_device::static_set_gfxdecode_tag(*device, "^" gfx); \ - dooyong_rom_tilemap_device::static_set_gfxnum(*device, (num)); - - -extern device_type const DOOYONG_ROM_TILEMAP; -extern device_type const RSHARK_ROM_TILEMAP; -extern device_type const DOOYONG_RAM_TILEMAP; - - -class dooyong_tilemap_device_base : public device_t -{ -public: - static void static_set_gfxdecode_tag(device_t &device, char const *tag); - static void static_set_gfxnum(device_t &device, int gfxnum); - - void draw(screen_device &screen, bitmap_ind16 &dest, rectangle const &cliprect, uint32_t flags, uint8_t priority); - - void set_palette_bank(uint16_t bank); - -protected: - dooyong_tilemap_device_base( - machine_config const &mconfig, - device_type type, - char const *name, - char const *tag, - device_t *owner, - uint32_t clock, - char const *shortname, - char const *source); - - gfx_element const &gfx() const { return *m_gfxdecode->gfx(m_gfxnum); } - - required_device m_gfxdecode; - int m_gfxnum; - - tilemap_t *m_tilemap; - uint16_t m_palette_bank; -}; - -class dooyong_rom_tilemap_device : public dooyong_tilemap_device_base -{ -public: - dooyong_rom_tilemap_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); - - static void static_set_tilerom_tag(device_t &device, char const *tag); - static void static_set_tilerom_offset(device_t &device, int offset); - static void static_set_transparent_pen(device_t &device, unsigned pen); - static void static_set_primella_code_bits(device_t &device, unsigned bits); - - DECLARE_WRITE8_MEMBER(ctrl_w); - -protected: - dooyong_rom_tilemap_device( - machine_config const &mconfig, - device_type type, - char const *name, - char const *tag, - device_t *owner, - uint32_t clock, - char const *shortname, - char const *source); - - virtual void device_start() override; - - virtual TILE_GET_INFO_MEMBER(tile_info); - - tilemap_memory_index adjust_tile_index(tilemap_memory_index tile_index) const - { return tile_index + ((unsigned(m_registers[1]) * 256U / gfx().width()) * m_rows); } - - int m_rows; - -private: - required_region_ptr m_tilerom; - int m_tilerom_offset; - unsigned m_transparent_pen; - unsigned m_primella_code_mask; - unsigned m_primella_color_mask; - unsigned m_primella_color_shift; - - uint8_t m_registers[0x10]; -}; - -class rshark_rom_tilemap_device : public dooyong_rom_tilemap_device -{ -public: - rshark_rom_tilemap_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); - - static void static_set_colorrom_tag(device_t &device, char const *tag); - static void static_set_colorrom_offset(device_t &device, int offset); - -protected: - virtual void device_start() override; - - virtual TILE_GET_INFO_MEMBER(tile_info) override; - -private: - required_region_ptr m_colorrom; - int m_colorrom_offset; -}; - -class dooyong_ram_tilemap_device : public dooyong_tilemap_device_base -{ -public: - dooyong_ram_tilemap_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); - - DECLARE_READ16_MEMBER(tileram_r) { return m_tileram[offset & ((64U * 32U) - 1)]; } - DECLARE_WRITE16_MEMBER(tileram_w); - void set_scrolly(int value) { m_tilemap->set_scrolly(value); } - -protected: - virtual void device_start() override; - -private: - TILE_GET_INFO_MEMBER(tile_info); - - std::unique_ptr m_tileram; -}; - - -class dooyong_state : public driver_device -{ -public: - dooyong_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_audiocpu(*this, "audiocpu") - , m_gfxdecode(*this, "gfxdecode") - , m_palette(*this, "palette") - , m_bg(*this, "bg") - , m_bg2(*this, "bg2") - , m_fg(*this, "fg") - , m_fg2(*this, "fg2") - { - } - - required_device m_maincpu; - required_device m_audiocpu; - required_device m_gfxdecode; - required_device m_palette; - optional_device m_bg; - optional_device m_bg2; - optional_device m_fg; - optional_device m_fg2; -}; - -class dooyong_z80_state : public dooyong_state -{ -public: - dooyong_z80_state(const machine_config &mconfig, device_type type, const char *tag) - : dooyong_state(mconfig, type, tag) - , m_tx(*this, "tx") - , m_spriteram(*this, "spriteram") - { - } - - enum - { - SPRITE_12BIT = 0x01, - SPRITE_HEIGHT = 0x02, - SPRITE_YSHIFT_BLUEHAWK = 0x04, - SPRITE_YSHIFT_FLYTIGER = 0x08 - }; - - DECLARE_WRITE8_MEMBER(flip_screen_w); - DECLARE_WRITE8_MEMBER(bankswitch_w); - DECLARE_READ8_MEMBER(lastday_tx_r); - DECLARE_WRITE8_MEMBER(lastday_tx_w); - DECLARE_READ8_MEMBER(bluehawk_tx_r); - DECLARE_WRITE8_MEMBER(bluehawk_tx_w); - DECLARE_WRITE8_MEMBER(primella_ctrl_w); - DECLARE_READ8_MEMBER(paletteram_flytiger_r); - DECLARE_WRITE8_MEMBER(paletteram_flytiger_w); - DECLARE_WRITE8_MEMBER(flytiger_ctrl_w); - TILE_GET_INFO_MEMBER(get_tx_tile_info); - void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, unsigned extensions = 0); - uint32_t screen_update_bluehawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_flytiger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_primella(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_MACHINE_START(cpu_z80); - DECLARE_VIDEO_START(bluehawk); - DECLARE_VIDEO_START(flytiger); - DECLARE_VIDEO_START(primella); - - std::unique_ptr m_paletteram_flytiger; - uint8_t m_sprites_disabled = 0; - uint8_t m_flytiger_pri = 0; - uint8_t m_tx_pri = 0; - uint8_t m_palette_bank = 0; - - required_device m_tx; - optional_device m_spriteram; -}; - -class dooyong_z80_ym2203_state : public dooyong_z80_state -{ -public: - dooyong_z80_ym2203_state(const machine_config &mconfig, device_type type, const char *tag) - : dooyong_z80_state(mconfig, type, tag) - { - } - - DECLARE_WRITE8_MEMBER(lastday_ctrl_w); - DECLARE_WRITE8_MEMBER(pollux_ctrl_w); - DECLARE_WRITE_LINE_MEMBER(irqhandler_2203_1); - DECLARE_WRITE_LINE_MEMBER(irqhandler_2203_2); - DECLARE_READ8_MEMBER(unk_r); - DECLARE_MACHINE_RESET(sound_ym2203); - uint32_t screen_update_lastday(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_gulfstrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_pollux(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_VIDEO_START(lastday); - DECLARE_VIDEO_START(gulfstrm); - DECLARE_VIDEO_START(pollux); - - int m_interrupt_line_1 = 0; - int m_interrupt_line_2 = 0; -}; - -class dooyong_68k_state : public dooyong_state -{ -public: - dooyong_68k_state(const machine_config &mconfig, device_type type, const char *tag) - : dooyong_state(mconfig, type, tag) - , m_spriteram(*this, "spriteram") - { - } - - DECLARE_WRITE16_MEMBER(ctrl_w); - TIMER_DEVICE_CALLBACK_MEMBER(scanline); - -protected: - void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - uint16_t m_bg2_priority = 0; - required_device m_spriteram; -}; - -class rshark_state : public dooyong_68k_state -{ -public: - rshark_state(const machine_config &mconfig, device_type type, const char *tag) - : dooyong_68k_state(mconfig, type, tag) - { - } - - uint32_t screen_update_rshark(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_VIDEO_START(rshark); -}; - -class popbingo_state : public dooyong_68k_state -{ -public: - popbingo_state(const machine_config &mconfig, device_type type, const char *tag) - : dooyong_68k_state(mconfig, type, tag) - , m_bg_bitmap() - , m_bg2_bitmap() - , m_screen(*this, "screen") - { - } - - uint32_t screen_update_popbingo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_VIDEO_START(popbingo); - -protected: - bitmap_ind16 m_bg_bitmap; - bitmap_ind16 m_bg2_bitmap; - - required_device m_screen; -}; diff --git a/src/mame/includes/dragon.h b/src/mame/includes/dragon.h index 450f09ffa57..524760616a6 100644 --- a/src/mame/includes/dragon.h +++ b/src/mame/includes/dragon.h @@ -17,7 +17,7 @@ #include "includes/coco12.h" #include "imagedev/printer.h" #include "machine/mos6551.h" - +#include "video/mc6845.h" //************************************************************************** @@ -69,4 +69,42 @@ protected: void page_rom(bool romswitch); }; + +/* dragon200e has a character generator */ +class dragon200e_state : public dragon64_state +{ +public: + dragon200e_state(const machine_config &mconfig, device_type type, const char *tag) + : dragon64_state(mconfig, type, tag), + m_char_rom(*this, "chargen") + { + } + + MC6847_GET_CHARROM_MEMBER(char_rom_r); + +private: + required_memory_region m_char_rom; +}; + + +/* d64plus has a HD6845 and character generator */ +class d64plus_state : public dragon64_state +{ +public: + d64plus_state(const machine_config &mconfig, device_type type, const char *tag) + : dragon64_state(mconfig, type, tag), + m_hd6845(*this, "hd6845"), + m_videoram(*this, "videoram"), + m_char_rom(*this, "chargen") + { + } + + MC6847_GET_CHARROM_MEMBER(char_rom_r); + +private: + required_device m_hd6845; + required_memory_region m_videoram; + required_memory_region m_char_rom; +}; + #endif /* __DRAGON__ */ diff --git a/src/mame/includes/einstein.h b/src/mame/includes/einstein.h index 92f4d88220d..c1d47b339fb 100644 --- a/src/mame/includes/einstein.h +++ b/src/mame/includes/einstein.h @@ -6,8 +6,10 @@ ***************************************************************************/ -#ifndef EINSTEIN_H_ -#define EINSTEIN_H_ +#ifndef MAME_INCLUDES_EINSTEIN_H +#define MAME_INCLUDES_EINSTEIN_H + +#pragma once #include "video/mc6845.h" #include "cpu/z80/z80daisy.h" @@ -65,44 +67,14 @@ public: m_bank1(*this, "bank1"), m_bank2(*this, "bank2"), m_bank3(*this, "bank3"), - m_line0(*this, "LINE0"), - m_line1(*this, "LINE1"), - m_line2(*this, "LINE2"), - m_line3(*this, "LINE3"), - m_line4(*this, "LINE4"), - m_line5(*this, "LINE5"), - m_line6(*this, "LINE6"), - m_line7(*this, "LINE7"), + m_line(*this, "LINE%u", 0), m_extra(*this, "EXTRA"), m_buttons(*this, "BUTTONS"), m_config(*this, "config"), m_80column_dips(*this, "80column_dips"), - m_palette(*this, "palette") { } - - required_device m_fdc; - required_device m_color_screen; - required_device m_ctc; - required_device m_tms9929a; - optional_memory_region m_region_gfx1; - - int m_rom_enabled; - int m_interrupt; - int m_interrupt_mask; - int m_ctc_trigger; - - /* keyboard */ - uint8_t m_keyboard_line; - uint8_t m_keyboard_data; - - /* 80 column device */ - optional_device m_mc6845; - optional_device m_crtc_screen; - std::unique_ptr m_crtc_ram; - uint8_t m_de; - - int m_centronics_busy; - int m_centronics_perror; - int m_centronics_fault; + m_palette(*this, "palette") + { + } DECLARE_FLOPPY_FORMATS( floppy_formats ); DECLARE_WRITE8_MEMBER(einstein_80col_ram_w); @@ -118,8 +90,6 @@ public: DECLARE_WRITE_LINE_MEMBER(write_centronics_busy); DECLARE_WRITE_LINE_MEMBER(write_centronics_perror); DECLARE_WRITE_LINE_MEMBER(write_centronics_fault); - virtual void machine_start() override; - virtual void machine_reset() override; DECLARE_MACHINE_START(einstein2); DECLARE_MACHINE_RESET(einstein2); uint32_t screen_update_einstein2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -131,7 +101,36 @@ public: DECLARE_WRITE_LINE_MEMBER(einstein_serial_receive_clock); MC6845_UPDATE_ROW(crtc_update_row); + int m_interrupt; + int m_interrupt_mask; + protected: + virtual void machine_start() override; + virtual void machine_reset() override; + + required_device m_fdc; + required_device m_color_screen; + required_device m_ctc; + required_device m_tms9929a; + optional_memory_region m_region_gfx1; + + int m_rom_enabled; + int m_ctc_trigger; + + /* keyboard */ + uint8_t m_keyboard_line; + uint8_t m_keyboard_data; + + /* 80 column device */ + optional_device m_mc6845; + optional_device m_crtc_screen; + std::unique_ptr m_crtc_ram; + uint8_t m_de; + + int m_centronics_busy; + int m_centronics_perror; + int m_centronics_fault; + required_device m_uart; required_device m_ram; required_device m_centronics; @@ -139,18 +138,12 @@ protected: required_memory_bank m_bank1; required_memory_bank m_bank2; required_memory_bank m_bank3; - required_ioport m_line0; - required_ioport m_line1; - required_ioport m_line2; - required_ioport m_line3; - required_ioport m_line4; - required_ioport m_line5; - required_ioport m_line6; - required_ioport m_line7; + required_ioport_array<8> m_line; required_ioport m_extra; required_ioport m_buttons; required_ioport m_config; optional_ioport m_80column_dips; + public: optional_device m_palette; @@ -161,8 +154,7 @@ public: // ======================> einstein_keyboard_daisy_device -class einstein_keyboard_daisy_device : public device_t, - public device_z80daisy_interface +class einstein_keyboard_daisy_device : public device_t, public device_z80daisy_interface { public: // construction/destruction @@ -176,13 +168,12 @@ private: virtual void z80daisy_irq_reti() override; }; -extern const device_type EINSTEIN_KEYBOARD_DAISY; +DECLARE_DEVICE_TYPE(EINSTEIN_KEYBOARD_DAISY, einstein_keyboard_daisy_device) // ======================> einstein_adc_daisy_device -class einstein_adc_daisy_device : public device_t, - public device_z80daisy_interface +class einstein_adc_daisy_device : public device_t, public device_z80daisy_interface { public: // construction/destruction @@ -197,12 +188,11 @@ private: }; -extern const device_type EINSTEIN_ADC_DAISY; +DECLARE_DEVICE_TYPE(EINSTEIN_ADC_DAISY, einstein_adc_daisy_device) // ======================> einstein_fire_daisy_device -class einstein_fire_daisy_device : public device_t, - public device_z80daisy_interface +class einstein_fire_daisy_device : public device_t, public device_z80daisy_interface { public: // construction/destruction @@ -216,6 +206,6 @@ private: virtual void z80daisy_irq_reti() override; }; -extern const device_type EINSTEIN_FIRE_DAISY; +DECLARE_DEVICE_TYPE(EINSTEIN_FIRE_DAISY, einstein_fire_daisy_device) -#endif /* EINSTEIN_H_ */ +#endif // MAME_INCLUDES_EINSTEIN_H diff --git a/src/mame/includes/epos.h b/src/mame/includes/epos.h index 2f8858dada4..08af6fe3d1a 100644 --- a/src/mame/includes/epos.h +++ b/src/mame/includes/epos.h @@ -13,28 +13,35 @@ public: : driver_device(mconfig, type, tag), m_videoram(*this, "videoram"), m_inputs(*this, { "INPUTS", "INPUTS2" }), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_palette(*this, "palette") + { } /* memory pointers */ required_shared_ptr m_videoram; optional_ioport_array<2> m_inputs; /* video-related */ - uint8_t m_palette; + uint8_t m_palette_bank; /* misc */ int m_counter; int m_input_multiplex; + bool m_ay_porta_multiplex; DECLARE_WRITE8_MEMBER(dealer_decrypt_rom); DECLARE_WRITE8_MEMBER(port_1_w); - DECLARE_READ8_MEMBER(read_prta); - DECLARE_WRITE8_MEMBER(write_prtc); + DECLARE_READ8_MEMBER(i8255_porta_r); + DECLARE_WRITE8_MEMBER(i8255_portc_w); + DECLARE_READ8_MEMBER(ay_porta_mpx_r); DECLARE_WRITE8_MEMBER(flip_screen_w); + DECLARE_WRITE8_MEMBER(dealer_pal_w); DECLARE_DRIVER_INIT(dealer); virtual void machine_reset() override; DECLARE_MACHINE_START(epos); DECLARE_MACHINE_START(dealer); + DECLARE_PALETTE_INIT(epos); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void get_pens( pen_t *pens ); + void set_pal_color( uint8_t offset, uint8_t data ); required_device m_maincpu; + required_device m_palette; }; diff --git a/src/mame/includes/exidy440.h b/src/mame/includes/exidy440.h index 832c56512ac..185ad52e7ab 100644 --- a/src/mame/includes/exidy440.h +++ b/src/mame/includes/exidy440.h @@ -48,6 +48,8 @@ public: uint8_t m_firq_select; uint8_t m_palettebank_io; uint8_t m_palettebank_vis; + emu_timer *m_beam_firq_timer; + emu_timer *m_collide_firq_timer; DECLARE_WRITE8_MEMBER(bankram_w); DECLARE_READ8_MEMBER(exidy440_input_port_3_r); DECLARE_READ8_MEMBER(sound_command_ack_r); diff --git a/src/mame/includes/fidelbase.h b/src/mame/includes/fidelbase.h index 589d53157e1..cfadc5ed056 100644 --- a/src/mame/includes/fidelbase.h +++ b/src/mame/includes/fidelbase.h @@ -3,9 +3,15 @@ /****************************************************************************** * * Fidelity Electronics chess machines base class +* main driver is fidelz80.cpp * ******************************************************************************/ +#pragma once + +#ifndef DRIVERS_FIDELBASE_H +#define DRIVERS_FIDELBASE_H + #include "sound/dac.h" #include "sound/s14001a.h" #include "bus/generic/slot.h" @@ -67,3 +73,9 @@ protected: virtual void machine_start() override; virtual void machine_reset() override; }; + + +INPUT_PORTS_EXTERN( fidel_cb_buttons ); +INPUT_PORTS_EXTERN( fidel_cb_magnets ); + +#endif // DRIVERS_FIDELBASE_H diff --git a/src/mame/includes/finalizr.h b/src/mame/includes/finalizr.h index 533da2736a9..928c9005c52 100644 --- a/src/mame/includes/finalizr.h +++ b/src/mame/includes/finalizr.h @@ -54,7 +54,7 @@ public: DECLARE_WRITE8_MEMBER(finalizr_flipscreen_w); DECLARE_WRITE8_MEMBER(finalizr_i8039_irq_w); DECLARE_WRITE8_MEMBER(i8039_irqen_w); - DECLARE_READ8_MEMBER(i8039_T1_r); + DECLARE_READ_LINE_MEMBER(i8039_T1_r); DECLARE_WRITE8_MEMBER(i8039_T0_w); DECLARE_WRITE8_MEMBER(finalizr_videoctrl_w); TILE_GET_INFO_MEMBER(get_bg_tile_info); diff --git a/src/mame/includes/fm7.h b/src/mame/includes/fm7.h index 49631341e7e..4d0a7315cdd 100644 --- a/src/mame/includes/fm7.h +++ b/src/mame/includes/fm7.h @@ -1,5 +1,16 @@ // license:BSD-3-Clause // copyright-holders:Barry Rodewald +/* + * + * FM-7 header file + * + */ +#ifndef MAME_INCLUDES_FM7_H +#define MAME_INCLUDES_FM7_H + +#pragma once + + #include "machine/buffer.h" #include "bus/centronics/ctronics.h" #include "imagedev/cassette.h" @@ -8,14 +19,6 @@ #include "machine/wd_fdc.h" #include "machine/bankdev.h" -/* - * - * FM-7 header file - * - */ - -#ifndef FM7_H_ -#define FM7_H_ // Interrupt flags #define IRQ_FLAG_KEY 0x01 @@ -342,7 +345,7 @@ protected: required_device m_centronics; required_device m_cent_data_out; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; floppy_image_device *m_floppy; @@ -405,4 +408,4 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; -#endif /*FM7_H_*/ +#endif // MAME_INCLUDES_FM7_H diff --git a/src/mame/includes/fmtowns.h b/src/mame/includes/fmtowns.h index c7342c0bc86..fff7ba23a12 100644 --- a/src/mame/includes/fmtowns.h +++ b/src/mame/includes/fmtowns.h @@ -128,7 +128,7 @@ class towns_state : public driver_device required_device m_dma_2; required_device m_palette; required_device m_ram; - required_device m_fdc; + required_device m_fdc; required_device m_flop0; required_device m_flop1; required_device m_icmemcard; diff --git a/src/mame/includes/fromance.h b/src/mame/includes/fromance.h index 3c129b8ac8b..3b8bb14c8c7 100644 --- a/src/mame/includes/fromance.h +++ b/src/mame/includes/fromance.h @@ -8,7 +8,9 @@ and Bryan McPhail, Nicola Salmoria, Aaron Giles ***************************************************************************/ + #include "sound/msm5205.h" +#include "video/vsystem_gga.h" #include "video/vsystem_spr2.h" #include "screen.h" @@ -19,6 +21,7 @@ public: : driver_device(mconfig, type, tag), m_videoram(*this, "videoram"), m_spriteram(*this, "spriteram"), + m_gga(*this, "gga"), m_spr_old(*this, "vsystem_spr_old"), m_subcpu(*this, "sub"), m_maincpu(*this, "maincpu"), @@ -31,6 +34,7 @@ public: optional_shared_ptr m_videoram; optional_shared_ptr m_spriteram; + required_device m_gga; optional_device m_spr_old; // only used by pipe dream, split this state up and clean things... /* video-related */ @@ -48,8 +52,6 @@ public: uint32_t m_scrolly_ofs; uint32_t m_scrollx_ofs; - uint8_t m_crtc_register; - uint8_t m_crtc_data[0x10]; emu_timer *m_crtc_timer; /* misc */ @@ -80,8 +82,7 @@ public: DECLARE_READ8_MEMBER(fromance_videoram_r); DECLARE_WRITE8_MEMBER(fromance_videoram_w); DECLARE_WRITE8_MEMBER(fromance_scroll_w); - DECLARE_WRITE8_MEMBER(fromance_crtc_data_w); - DECLARE_WRITE8_MEMBER(fromance_crtc_register_w); + DECLARE_WRITE8_MEMBER(fromance_gga_data_w); DECLARE_WRITE8_MEMBER(fromance_adpcm_reset_w); TILE_GET_INFO_MEMBER(get_fromance_bg_tile_info); TILE_GET_INFO_MEMBER(get_fromance_fg_tile_info); diff --git a/src/mame/includes/fuukifg3.h b/src/mame/includes/fuukifg3.h index e9f890b6689..7d4654e69ac 100644 --- a/src/mame/includes/fuukifg3.h +++ b/src/mame/includes/fuukifg3.h @@ -82,7 +82,7 @@ public: virtual void video_start() override; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); inline void get_tile_info8bpp(tile_data &tileinfo, tilemap_memory_index tile_index, int _N_); inline void get_tile_info4bpp(tile_data &tileinfo, tilemap_memory_index tile_index, int _N_); inline void vram_w(offs_t offset, uint32_t data, uint32_t mem_mask, int _N_); diff --git a/src/mame/includes/galaga.h b/src/mame/includes/galaga.h index 93abfddf3d5..d38ba4f5263 100644 --- a/src/mame/includes/galaga.h +++ b/src/mame/includes/galaga.h @@ -80,7 +80,7 @@ public: DECLARE_VIDEO_START(galaga); DECLARE_PALETTE_INIT(galaga); uint32_t screen_update_galaga(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_galaga(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_galaga); INTERRUPT_GEN_MEMBER(main_vblank_irq); INTERRUPT_GEN_MEMBER(sub_vblank_irq); TIMER_CALLBACK_MEMBER(cpu3_interrupt_callback); diff --git a/src/mame/includes/galastrm.h b/src/mame/includes/galastrm.h index 28e39178006..ac1044ab734 100644 --- a/src/mame/includes/galastrm.h +++ b/src/mame/includes/galastrm.h @@ -87,6 +87,7 @@ public: struct gs_tempsprite *m_sprite_ptr_pre; bitmap_ind16 m_tmpbitmaps; std::unique_ptr m_poly; + emu_timer *m_interrupt6_timer; int m_rsxb; int m_rsyb; @@ -101,6 +102,7 @@ public: DECLARE_WRITE32_MEMBER(galastrm_adstick_ctrl_w); DECLARE_CUSTOM_INPUT_MEMBER(frame_counter_r); DECLARE_CUSTOM_INPUT_MEMBER(coin_word_r); + virtual void machine_start() override; virtual void video_start() override; uint32_t screen_update_galastrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(galastrm_interrupt); diff --git a/src/mame/includes/galpanic.h b/src/mame/includes/galpanic.h index f14c0288f0f..dfd7242645d 100644 --- a/src/mame/includes/galpanic.h +++ b/src/mame/includes/galpanic.h @@ -36,7 +36,7 @@ public: DECLARE_PALETTE_INIT(galpanic); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); TIMER_DEVICE_CALLBACK_MEMBER(scanline); void draw_fgbitmap(bitmap_ind16 &bitmap, const rectangle &cliprect); }; diff --git a/src/mame/includes/gamate.h b/src/mame/includes/gamate.h deleted file mode 100644 index 9e387f8e7f0..00000000000 --- a/src/mame/includes/gamate.h +++ /dev/null @@ -1,100 +0,0 @@ -// license:GPL-2.0+ -// copyright-holders:Peter Trauner -/***************************************************************************** - * - * includes/gamate.h - * - ****************************************************************************/ - -#ifndef GAMATE_H_ -#define GAMATE_H_ - -#include "cpu/m6502/m6502.h" -#include "bus/generic/slot.h" -#include "bus/generic/carts.h" - - -// ======================> gamate_sound_device - -class gamate_sound_device : public device_t, public device_sound_interface -{ -public: - gamate_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~gamate_sound_device() { } - - DECLARE_WRITE8_MEMBER( device_w ); - DECLARE_READ8_MEMBER( device_r ); - -protected: - // device-level overrides - virtual void device_start() override; - - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - -private: - - static const int DAConverter[]; - static int Value2Volume(int volume) { return DAConverter[volume]*1; } - - sound_stream *m_mixer_channel; - struct Tone - { - Tone() : - envelope_on(false), - level(false), - tone(false), full_cycle(false), - volume(0), - pos(0), - size(0) - {} - - bool envelope_on, level; - bool tone/*else noise*/, full_cycle/* else square signal/pulse */; - int volume; - int pos, size; - }; - - enum - { - Right, - Left, - Both - }; - - Tone m_channels[3]; - - struct Noise - { - Noise(): - state(1), - level(false), - step(0.0), - pos(0.0) - {} - - int state; - bool level; - double step, pos; - } noise; - - struct Envelope - { - Envelope(): - control(0), - index(0), - first(false) - {} - - int control; - int index; - bool first; - double step, pos; - } envelope; - - uint8_t reg[14]; -}; - -extern const device_type GAMATE_SND; - -#endif /* GAMATE_H_ */ diff --git a/src/mame/includes/gaplus.h b/src/mame/includes/gaplus.h index 46e510ad8e9..75e00946876 100644 --- a/src/mame/includes/gaplus.h +++ b/src/mame/includes/gaplus.h @@ -18,7 +18,8 @@ class gaplus_state : public driver_device public: enum { - TIMER_NAMCOIO_RUN + TIMER_NAMCOIO0_RUN, + TIMER_NAMCOIO1_RUN }; enum @@ -66,6 +67,8 @@ public: uint8_t m_main_irq_mask; uint8_t m_sub_irq_mask; uint8_t m_sub2_irq_mask; + emu_timer *m_namcoio0_run_timer; + emu_timer *m_namcoio1_run_timer; DECLARE_WRITE8_MEMBER(irq_1_ctrl_w); DECLARE_WRITE8_MEMBER(irq_2_ctrl_w); @@ -94,10 +97,11 @@ public: INTERRUPT_GEN_MEMBER(gapluso_vblank_main_irq); INTERRUPT_GEN_MEMBER(vblank_sub_irq); INTERRUPT_GEN_MEMBER(vblank_sub2_irq); - TIMER_CALLBACK_MEMBER(namcoio_run); + TIMER_CALLBACK_MEMBER(namcoio0_run); + TIMER_CALLBACK_MEMBER(namcoio1_run); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); void starfield_init(); void starfield_render(bitmap_ind16 &bitmap); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); diff --git a/src/mame/includes/gcpinbal.h b/src/mame/includes/gcpinbal.h index c9f97ef746f..ce557b289a6 100644 --- a/src/mame/includes/gcpinbal.h +++ b/src/mame/includes/gcpinbal.h @@ -45,6 +45,8 @@ public: required_device m_gfxdecode; required_device m_palette; + emu_timer *m_int1_timer; + /* video-related */ tilemap_t *m_tilemap[3]; uint16_t m_scrollx[3]; diff --git a/src/mame/includes/gijoe.h b/src/mame/includes/gijoe.h index f325e0a89ed..239f8812235 100644 --- a/src/mame/includes/gijoe.h +++ b/src/mame/includes/gijoe.h @@ -6,12 +6,12 @@ *************************************************************************/ -#include "machine/gen_latch.h" #include "sound/k054539.h" #include "video/k053251.h" #include "video/k054156_k054157_k056832.h" #include "video/k053246_k053247_k055673.h" #include "video/konami_helper.h" +#include "machine/k054321.h" class gijoe_state : public driver_device { @@ -27,8 +27,7 @@ public: m_k053246(*this, "k053246"), m_k053251(*this, "k053251"), m_palette(*this, "palette"), - m_soundlatch(*this, "soundlatch"), - m_soundlatch2(*this, "soundlatch2") { } + m_k054321(*this, "k054321") { } /* memory pointers */ required_shared_ptr m_spriteram; @@ -54,14 +53,11 @@ public: required_device m_k053246; required_device m_k053251; required_device m_palette; - required_device m_soundlatch; - required_device m_soundlatch2; + required_device m_k054321; DECLARE_READ16_MEMBER(control2_r); DECLARE_WRITE16_MEMBER(control2_w); - DECLARE_WRITE16_MEMBER(sound_cmd_w); DECLARE_WRITE16_MEMBER(sound_irq_w); - DECLARE_READ16_MEMBER(sound_status_r); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; diff --git a/src/mame/includes/gladiatr.h b/src/mame/includes/gladiatr.h index 39c99eb8391..2b0144c5f49 100644 --- a/src/mame/includes/gladiatr.h +++ b/src/mame/includes/gladiatr.h @@ -106,17 +106,15 @@ public: DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq); DECLARE_WRITE_LINE_MEMBER(tclk_w); - DECLARE_READ8_MEMBER(cctl_t_r); DECLARE_READ8_MEMBER(cctl_p1_r); DECLARE_READ8_MEMBER(cctl_p2_r); - DECLARE_READ8_MEMBER(ccpu_t_r); DECLARE_WRITE8_MEMBER(ccpu_p2_w); - DECLARE_READ8_MEMBER(tclk_r); - DECLARE_READ8_MEMBER(ucpu_t1_r); + DECLARE_READ_LINE_MEMBER(tclk_r); + DECLARE_READ_LINE_MEMBER(ucpu_t1_r); DECLARE_READ8_MEMBER(ucpu_p1_r); DECLARE_WRITE8_MEMBER(ucpu_p1_w); DECLARE_READ8_MEMBER(ucpu_p2_r); - DECLARE_READ8_MEMBER(csnd_t1_r); + DECLARE_READ_LINE_MEMBER(csnd_t1_r); DECLARE_READ8_MEMBER(csnd_p1_r); DECLARE_WRITE8_MEMBER(csnd_p1_w); DECLARE_READ8_MEMBER(csnd_p2_r); diff --git a/src/mame/includes/goal92.h b/src/mame/includes/goal92.h index e489371cf21..f5826358cca 100644 --- a/src/mame/includes/goal92.h +++ b/src/mame/includes/goal92.h @@ -68,7 +68,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_goal92(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_goal92(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_goal92); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri ); DECLARE_WRITE_LINE_MEMBER(irqhandler); DECLARE_WRITE_LINE_MEMBER(goal92_adpcm_int); diff --git a/src/mame/includes/gomoku.h b/src/mame/includes/gomoku.h index 45d0f80040a..e443d80d1a7 100644 --- a/src/mame/includes/gomoku.h +++ b/src/mame/includes/gomoku.h @@ -1,5 +1,8 @@ // license:BSD-3-Clause // copyright-holders:Takahiro Nogi, David Haywood +#ifndef MAME_INCLUDES_GOMOKU_H +#define MAME_INCLUDES_GOMOKU_H + #include "screen.h" class gomoku_state : public driver_device @@ -38,75 +41,4 @@ public: required_device m_screen; }; - -/*----------- defined in audio/gomoku.c -----------*/ - -/* 4 voices max */ -#define GOMOKU_MAX_VOICES 4 - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -struct gomoku_sound_channel -{ - gomoku_sound_channel(): - channel(0), - frequency(0), - counter(0), - volume(0), - oneshotplaying(0) {} - - int channel; - int frequency; - int counter; - int volume; - int oneshotplaying; -}; - - -// ======================> gomoku_sound_device - -class gomoku_sound_device : public device_t, - public device_sound_interface -{ -public: - gomoku_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~gomoku_sound_device() { } - -protected: - // device-level overrides - virtual void device_start() override; - - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - -public: - DECLARE_WRITE8_MEMBER( sound1_w ); - DECLARE_WRITE8_MEMBER( sound2_w ); - -private: - void make_mixer_table(int voices, int gain); - -private: - /* data about the sound system */ - gomoku_sound_channel m_channel_list[GOMOKU_MAX_VOICES]; - gomoku_sound_channel *m_last_channel; - - /* global sound parameters */ - const uint8_t *m_sound_rom; - int m_num_voices; - int m_sound_enable; - sound_stream *m_stream; - - /* mixer tables and internal buffers */ - std::unique_ptr m_mixer_table; - int16_t *m_mixer_lookup; - std::unique_ptr m_mixer_buffer; - short *m_mixer_buffer_2; - - uint8_t m_soundregs1[0x20]; - uint8_t m_soundregs2[0x20]; -}; - -extern const device_type GOMOKU; +#endif // MAME_INCLUDES_GOMOKU_H diff --git a/src/mame/includes/gridlee.h b/src/mame/includes/gridlee.h index 81c3dc3c1a5..45fa8aa3c05 100644 --- a/src/mame/includes/gridlee.h +++ b/src/mame/includes/gridlee.h @@ -14,7 +14,7 @@ #define GRIDLEE_MASTER_CLOCK (20000000) #define GRIDLEE_CPU_CLOCK (GRIDLEE_MASTER_CLOCK / 16) -#define GRIDLEE_PIXEL_CLOCK (GRIDLEE_MASTER_CLOCK / 4) +#define GRIDLEE_PIXEL_CLOCK (GRIDLEE_MASTER_CLOCK / 4) #define GRIDLEE_HTOTAL (0x140) #define GRIDLEE_HBEND (0x000) #define GRIDLEE_HBSTART (0x100) @@ -76,8 +76,7 @@ public: /*----------- defined in audio/gridlee.c -----------*/ -class gridlee_sound_device : public device_t, - public device_sound_interface +class gridlee_sound_device : public device_t, public device_sound_interface { public: gridlee_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -106,4 +105,4 @@ private: uint8_t m_sound_data[24]; }; -extern const device_type GRIDLEE; +DECLARE_DEVICE_TYPE(GRIDLEE, gridlee_sound_device) diff --git a/src/mame/includes/groundfx.h b/src/mame/includes/groundfx.h index 8784a9810ea..9a2225aab29 100644 --- a/src/mame/includes/groundfx.h +++ b/src/mame/includes/groundfx.h @@ -50,19 +50,20 @@ public: std::unique_ptr m_spritelist; uint16_t m_rotate_ctrl[8]; rectangle m_hack_cliprect; + emu_timer *m_interrupt5_timer; - DECLARE_WRITE32_MEMBER(groundfx_input_w); - DECLARE_READ32_MEMBER(groundfx_adc_r); - DECLARE_WRITE32_MEMBER(groundfx_adc_w); + DECLARE_WRITE32_MEMBER(input_w); + DECLARE_READ32_MEMBER(adc_r); + DECLARE_WRITE32_MEMBER(adc_w); DECLARE_WRITE32_MEMBER(rotate_control_w); DECLARE_WRITE32_MEMBER(motor_control_w); - DECLARE_READ32_MEMBER(irq_speedup_r_groundfx); + DECLARE_READ32_MEMBER(irq_speedup_r); DECLARE_CUSTOM_INPUT_MEMBER(frame_counter_r); DECLARE_CUSTOM_INPUT_MEMBER(coin_word_r); DECLARE_DRIVER_INIT(groundfx); virtual void video_start() override; - uint32_t screen_update_groundfx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(groundfx_interrupt); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(interrupt); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int do_hack,int x_offs,int y_offs); diff --git a/src/mame/includes/gstriker.h b/src/mame/includes/gstriker.h index 83251a3d6c4..797a25b6db1 100644 --- a/src/mame/includes/gstriker.h +++ b/src/mame/includes/gstriker.h @@ -47,14 +47,15 @@ public: required_shared_ptr m_mixerregs1; required_shared_ptr m_mixerregs2; - uint16_t m_dmmy_8f_ret; + uint8_t m_dmmy_8f_ret; int m_pending_command; int m_gametype; uint16_t m_mcu_data; uint16_t m_prot_reg[2]; // common - DECLARE_READ16_MEMBER(dmmy_8f); + DECLARE_READ8_MEMBER(dmmy_8f); + DECLARE_WRITE8_MEMBER(unknown_output_w); DECLARE_WRITE16_MEMBER(sound_command_w); DECLARE_WRITE8_MEMBER(sh_pending_command_clear_w); DECLARE_WRITE8_MEMBER(sh_bankswitch_w); diff --git a/src/mame/includes/gsword.h b/src/mame/includes/gsword.h index 24204bf4ed5..db4fc678526 100644 --- a/src/mame/includes/gsword.h +++ b/src/mame/includes/gsword.h @@ -121,7 +121,6 @@ public: DECLARE_READ8_MEMBER(mcu1_p2_r); DECLARE_READ8_MEMBER(mcu2_p1_r); DECLARE_READ8_MEMBER(mcu2_p2_r); - DECLARE_READ8_MEMBER(mcu2_test_r); DECLARE_WRITE8_MEMBER(cpu2_nmi_enable_w); DECLARE_WRITE8_MEMBER(cpu2_irq_clear_w); diff --git a/src/mame/includes/gunbustr.h b/src/mame/includes/gunbustr.h index 565cdec6120..85ae503643e 100644 --- a/src/mame/includes/gunbustr.h +++ b/src/mame/includes/gunbustr.h @@ -49,6 +49,7 @@ public: uint16_t m_coin_word; std::unique_ptr m_spritelist; uint32_t m_mem[2]; + emu_timer *m_interrupt5_timer; DECLARE_WRITE32_MEMBER(gunbustr_input_w); DECLARE_WRITE32_MEMBER(motor_control_w); diff --git a/src/mame/includes/harddriv.h b/src/mame/includes/harddriv.h index cff18a7e6f9..f408df654c0 100644 --- a/src/mame/includes/harddriv.h +++ b/src/mame/includes/harddriv.h @@ -5,48 +5,52 @@ Driver for Atari polygon racer games **************************************************************************/ +#ifndef MAME_INCLUDES_HARDDRIV_H +#define MAME_INCLUDES_HARDDRIV_H + +#pragma once + +#include "audio/atarijsa.h" + +#include "bus/rs232/rs232.h" -#include "cpu/m68000/m68000.h" -#include "cpu/tms34010/tms34010.h" -#include "cpu/tms32010/tms32010.h" #include "cpu/adsp2100/adsp2100.h" #include "cpu/dsp32/dsp32.h" -#include "audio/atarijsa.h" -#include "sound/dac.h" -#include "machine/mc68681.h" +#include "cpu/m68000/m68000.h" +#include "cpu/tms32010/tms32010.h" +#include "cpu/tms34010/tms34010.h" + #include "machine/asic65.h" +#include "machine/mc68681.h" #include "machine/timekpr.h" -#include "bus/rs232/rs232.h" + +#include "sound/dac.h" + #include "screen.h" #define HARDDRIV_MASTER_CLOCK XTAL_32MHz #define HARDDRIV_GSP_CLOCK XTAL_48MHz -extern const device_type HARDDRIV_BOARD_DEVICE; -extern const device_type HARDDRIVC_BOARD_DEVICE; -extern const device_type RACEDRIV_BOARD_DEVICE; -extern const device_type RACEDRIVC_BOARD_DEVICE; -extern const device_type RACEDRIVC1_BOARD_DEVICE; -extern const device_type RACEDRIVB1_BOARD_DEVICE; -extern const device_type RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE; -extern const device_type STUNRUN_BOARD_DEVICE; -extern const device_type STEELTAL_BOARD_DEVICE; -extern const device_type STEELTAL1_BOARD_DEVICE; -extern const device_type STEELTALP_BOARD_DEVICE; -extern const device_type STRTDRIV_BOARD_DEVICE; -extern const device_type HDRIVAIR_BOARD_DEVICE; -extern const device_type HDRIVAIRP_BOARD_DEVICE; -extern const device_type HARDDRIV_SOUND_BOARD_DEVICE; - - -class harddriv_sound_board_device; - -class harddriv_state : public device_t - /* public device_video_interface */ +DECLARE_DEVICE_TYPE(HARDDRIV_BOARD, harddriv_board_device_state) +DECLARE_DEVICE_TYPE(HARDDRIVC_BOARD, harddrivc_board_device_state) +DECLARE_DEVICE_TYPE(RACEDRIV_BOARD, racedrivc_board_device_state) +DECLARE_DEVICE_TYPE(RACEDRIVB1_BOARD, racedrivb1_board_device_state) +DECLARE_DEVICE_TYPE(RACEDRIVC_BOARD, racedrivc_board_device_state) +DECLARE_DEVICE_TYPE(RACEDRIVC1_BOARD, racedrivc1_board_device_state) +DECLARE_DEVICE_TYPE(RACEDRIVC_PANORAMA_SIDE_BOARD,racedrivc_panorama_side_board_device_state) +DECLARE_DEVICE_TYPE(STUNRUN_BOARD, stunrun_board_device_state) +DECLARE_DEVICE_TYPE(STEELTAL_BOARD, steeltal_board_device_state) +DECLARE_DEVICE_TYPE(STEELTAL1_BOARD, steeltal1_board_device_state) +DECLARE_DEVICE_TYPE(STEELTALP_BOARD, steeltalp_board_device_state) +DECLARE_DEVICE_TYPE(STRTDRIV_BOARD, strtdriv_board_device_state) +DECLARE_DEVICE_TYPE(HDRIVAIR_BOARD, hdrivair_board_device_state) +DECLARE_DEVICE_TYPE(HDRIVAIRP_BOARD, hdrivairp_board_device_state) +DECLARE_DEVICE_TYPE(HARDDRIV_SOUND_BOARD, harddriv_sound_board_device) + + +class harddriv_state : public device_t { public: - harddriv_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - void init_strtdriv(void); void init_harddriv(void); @@ -248,6 +252,8 @@ public: DECLARE_READ32_MEMBER(hdds3xdsp_serial_rx_callback); protected: + harddriv_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + required_device m_maincpu; required_device m_gsp; optional_device m_msp; @@ -560,9 +566,10 @@ class racedriv_board_device_state : public harddriv_state { public: racedriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - racedriv_board_device_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); protected: + racedriv_board_device_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; // virtual void device_reset(); @@ -583,9 +590,10 @@ class racedrivc_board_device_state : public harddriv_state { public: racedrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - racedrivc_board_device_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); protected: + racedrivc_board_device_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; // virtual void device_reset(); @@ -630,9 +638,10 @@ class steeltal_board_device_state : public harddriv_state { public: steeltal_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - steeltal_board_device_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); protected: + steeltal_board_device_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; // virtual void device_reset(); @@ -677,9 +686,10 @@ class hdrivair_board_device_state : public harddriv_state { public: hdrivair_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - hdrivair_board_device_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); protected: + hdrivair_board_device_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; // virtual void device_reset(); @@ -692,3 +702,5 @@ public: protected: virtual void device_start() override; }; + +#endif // MAME_INCLUDES_HARDDRIV_H diff --git a/src/mame/includes/hec2hrp.h b/src/mame/includes/hec2hrp.h index c2d81923fa4..b12e900253f 100644 --- a/src/mame/includes/hec2hrp.h +++ b/src/mame/includes/hec2hrp.h @@ -38,6 +38,10 @@ TODO : Add the cartridge function, Adjust the one shot and A/D timing (sn76477) */ +#ifndef MAME_INCLUDES_HEC2HRP_H +#define MAME_INCLUDES_HEC2HRP_H + +#pragma once #include "machine/upd765.h" #include "machine/wd_fdc.h" @@ -99,7 +103,7 @@ public: optional_shared_ptr m_hector_videoram; required_ioport_array<9> m_keyboard; - optional_device m_minidisc_fdc; + optional_device m_minidisc_fdc; optional_device m_floppy0; uint8_t m_hector_flag_hr; @@ -197,3 +201,5 @@ public: }; MACHINE_CONFIG_EXTERN( hector_audio ); + +#endif // MAME_INCLUDES_HEC2HRP_H diff --git a/src/mame/includes/hng64.h b/src/mame/includes/hng64.h index 84fb806ade4..631742d4563 100644 --- a/src/mame/includes/hng64.h +++ b/src/mame/includes/hng64.h @@ -311,7 +311,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_hng64(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_hng64(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_hng64); TIMER_DEVICE_CALLBACK_MEMBER(hng64_irq); void do_dma(address_space &space); diff --git a/src/mame/includes/homedata.h b/src/mame/includes/homedata.h index 9803481fa4c..67213889c77 100644 --- a/src/mame/includes/homedata.h +++ b/src/mame/includes/homedata.h @@ -139,7 +139,7 @@ public: uint32_t screen_update_reikaids(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_pteacher(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_mirderby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_homedata(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_homedata); INTERRUPT_GEN_MEMBER(homedata_irq); INTERRUPT_GEN_MEMBER(upd7807_irq); void mrokumei_handleblit( address_space &space, int rom_base ); diff --git a/src/mame/includes/hp48.h b/src/mame/includes/hp48.h index c9ac8576a08..bcc88e6f029 100644 --- a/src/mame/includes/hp48.h +++ b/src/mame/includes/hp48.h @@ -7,8 +7,13 @@ Hewlett Packard HP48 S/SX & G/GX and HP49 G **********************************************************************/ +#ifndef MAME_INCLUDES_HP84_H +#define MAME_INCLUDES_HP84_H + +#pragma once #include "sound/dac.h" + /* model */ typedef enum { HP48_S, @@ -79,6 +84,9 @@ public: uint8_t m_screens[ HP48_NB_SCREENS ][ 64 ][ 144 ]; int m_cur_screen; uint8_t* m_rom; + emu_timer *m_1st_timer; + emu_timer *m_2nd_timer; + emu_timer *m_kbd_timer; DECLARE_DRIVER_INIT(hp48); virtual void machine_reset() override; @@ -211,8 +219,10 @@ private: }; // device type definition -extern const device_type HP48_PORT; +DECLARE_DEVICE_TYPE(HP48_PORT, hp48_port_image_device) #define MCFG_HP48_PORT_ADD(_tag, _port, _module, _max_size) \ MCFG_DEVICE_ADD(_tag, HP48_PORT, 0) \ hp48_port_image_device::set_port_config(*device, _port, _module, _max_size); + +#endif // MAME_INCLUDES_HP84_H diff --git a/src/mame/includes/hp9845.h b/src/mame/includes/hp9845.h index d54496d537c..dd00e7b8c58 100644 --- a/src/mame/includes/hp9845.h +++ b/src/mame/includes/hp9845.h @@ -46,6 +46,9 @@ public: DECLARE_WRITE8_MEMBER(pa_w); + DECLARE_WRITE_LINE_MEMBER(t14_irq_w); + DECLARE_WRITE_LINE_MEMBER(t14_flg_w); + DECLARE_WRITE_LINE_MEMBER(t14_sts_w); DECLARE_WRITE_LINE_MEMBER(t15_irq_w); DECLARE_WRITE_LINE_MEMBER(t15_flg_w); DECLARE_WRITE_LINE_MEMBER(t15_sts_w); @@ -60,6 +63,7 @@ protected: required_ioport m_io_key1; required_ioport m_io_key2; required_ioport m_io_key3; + required_device m_t14; required_device m_t15; required_device m_beeper; required_device m_beep_timer; @@ -76,9 +80,6 @@ protected: // Character generator required_region_ptr m_chargen; - // Optional character generator - required_region_ptr m_optional_chargen; - // Text mode video I/F typedef struct { uint8_t chars[ 80 ]; diff --git a/src/mame/includes/hyhoo.h b/src/mame/includes/hyhoo.h index 062d4302843..ed6d926365b 100644 --- a/src/mame/includes/hyhoo.h +++ b/src/mame/includes/hyhoo.h @@ -35,6 +35,7 @@ public: int m_highcolorflag; int m_flipscreen; bitmap_rgb32 m_tmpbitmap; + emu_timer *m_blitter_timer; DECLARE_WRITE8_MEMBER(hyhoo_blitter_w); DECLARE_WRITE8_MEMBER(hyhoo_romsel_w); diff --git a/src/mame/includes/hyprduel.h b/src/mame/includes/hyprduel.h index 125d322f799..fe55ab82db6 100644 --- a/src/mame/includes/hyprduel.h +++ b/src/mame/includes/hyprduel.h @@ -61,6 +61,8 @@ public: /* misc */ emu_timer *m_magerror_irq_timer; + emu_timer *m_vblank_end_timer; + emu_timer *m_blit_done_timer; int m_blitter_bit; int m_requested_int; int m_subcpu_resetline; @@ -74,22 +76,22 @@ public: required_device m_screen; required_device m_palette; - DECLARE_READ16_MEMBER(hyprduel_irq_cause_r); - DECLARE_WRITE16_MEMBER(hyprduel_irq_cause_w); - DECLARE_WRITE16_MEMBER(hyprduel_subcpu_control_w); + DECLARE_READ16_MEMBER(irq_cause_r); + DECLARE_WRITE16_MEMBER(irq_cause_w); + DECLARE_WRITE16_MEMBER(subcpu_control_w); DECLARE_READ16_MEMBER(hyprduel_cpusync_trigger1_r); DECLARE_WRITE16_MEMBER(hyprduel_cpusync_trigger1_w); DECLARE_READ16_MEMBER(hyprduel_cpusync_trigger2_r); DECLARE_WRITE16_MEMBER(hyprduel_cpusync_trigger2_w); - DECLARE_READ16_MEMBER(hyprduel_bankedrom_r); - DECLARE_WRITE16_MEMBER(hyprduel_blitter_w); - DECLARE_WRITE16_MEMBER(hyprduel_paletteram_w); - DECLARE_WRITE16_MEMBER(hyprduel_vram_0_w); - DECLARE_WRITE16_MEMBER(hyprduel_vram_1_w); - DECLARE_WRITE16_MEMBER(hyprduel_vram_2_w); - DECLARE_WRITE16_MEMBER(hyprduel_window_w); - DECLARE_WRITE16_MEMBER(hyprduel_scrollreg_w); - DECLARE_WRITE16_MEMBER(hyprduel_scrollreg_init_w); + DECLARE_READ16_MEMBER(bankedrom_r); + DECLARE_WRITE16_MEMBER(blitter_w); + DECLARE_WRITE16_MEMBER(paletteram_w); + DECLARE_WRITE16_MEMBER(vram_0_w); + DECLARE_WRITE16_MEMBER(vram_1_w); + DECLARE_WRITE16_MEMBER(vram_2_w); + DECLARE_WRITE16_MEMBER(window_w); + DECLARE_WRITE16_MEMBER(scrollreg_w); + DECLARE_WRITE16_MEMBER(scrollreg_init_w); void blt_write( address_space &space, const int tmap, const offs_t offs, const uint16_t data, const uint16_t mask ); DECLARE_DRIVER_INIT(magerror); DECLARE_DRIVER_INIT(hyprduel); @@ -102,18 +104,18 @@ public: DECLARE_MACHINE_START(magerror); DECLARE_VIDEO_START(magerror_14220); DECLARE_VIDEO_START(common_14220); - uint32_t screen_update_hyprduel(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_CALLBACK_MEMBER(vblank_end_callback); TIMER_CALLBACK_MEMBER(magerror_irq_callback); - TIMER_CALLBACK_MEMBER(hyprduel_blit_done); - TIMER_DEVICE_CALLBACK_MEMBER(hyprduel_interrupt); - void hyprduel_postload(); + TIMER_CALLBACK_MEMBER(blit_done); + TIMER_DEVICE_CALLBACK_MEMBER(interrupt); + void postload(); inline void get_tile_info( tile_data &tileinfo, int tile_index, int layer, uint16_t *vram); inline void get_tile_info_8bit( tile_data &tileinfo, int tile_index, int layer, uint16_t *vram ); inline void get_tile_info_16x16_8bit( tile_data &tileinfo, int tile_index, int layer, uint16_t *vram ); - inline void hyprduel_vram_w( offs_t offset, uint16_t data, uint16_t mem_mask, int layer, uint16_t *vram ); + inline void vram_w( offs_t offset, uint16_t data, uint16_t mem_mask, int layer, uint16_t *vram ); void alloc_empty_tiles( ); - void expand_gfx1(hyprduel_state &state); + void expand_gfx1( ); void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ); void draw_layers( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int layers_ctrl ); void dirty_tiles( int layer, uint16_t *vram ); diff --git a/src/mame/includes/imds2.h b/src/mame/includes/imds2.h index dc03bfbaeb8..059e87bb9b0 100644 --- a/src/mame/includes/imds2.h +++ b/src/mame/includes/imds2.h @@ -41,8 +41,8 @@ class imds2_state : public driver_device DECLARE_READ8_MEMBER(imds2_kb_read); DECLARE_READ8_MEMBER(imds2_kb_port_p2_r); DECLARE_WRITE8_MEMBER(imds2_kb_port_p1_w); - DECLARE_READ8_MEMBER(imds2_kb_port_t0_r); - DECLARE_READ8_MEMBER(imds2_kb_port_t1_r); + DECLARE_READ_LINE_MEMBER(imds2_kb_port_t0_r); + DECLARE_READ_LINE_MEMBER(imds2_kb_port_t1_r); DECLARE_WRITE8_MEMBER(imds2_ioc_dbbout_w); DECLARE_WRITE8_MEMBER(imds2_ioc_f0_w); DECLARE_WRITE8_MEMBER(imds2_ioc_set_f1_w); diff --git a/src/mame/includes/inufuku.h b/src/mame/includes/inufuku.h index f648a5e3e78..cfa27c6cf9b 100644 --- a/src/mame/includes/inufuku.h +++ b/src/mame/includes/inufuku.h @@ -70,7 +70,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_inufuku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_inufuku(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_inufuku); }; #endif // MAME_INCLUDES_INUFUKU_H diff --git a/src/mame/includes/jpmimpct.h b/src/mame/includes/jpmimpct.h index 39883a8afd4..b03c5037ce0 100644 --- a/src/mame/includes/jpmimpct.h +++ b/src/mame/includes/jpmimpct.h @@ -96,7 +96,7 @@ public: int m_slidesout; int m_hopper[3]; int m_motor[3]; - optional_device m_vfd; + optional_device m_vfd; optional_shared_ptr m_vram; struct bt477_t m_bt477; DECLARE_READ16_MEMBER(duart_1_r); diff --git a/src/mame/includes/jpmsys5.h b/src/mame/includes/jpmsys5.h index a02b918f972..78c323c5d29 100644 --- a/src/mame/includes/jpmsys5.h +++ b/src/mame/includes/jpmsys5.h @@ -36,7 +36,7 @@ public: required_device m_acia6850_2; required_device m_upd7759; optional_device m_tms34061; - optional_device m_vfd; + optional_device m_vfd; required_ioport m_direct_port; optional_device m_palette; optional_device m_meters; //jpmsys5v doesn't use this diff --git a/src/mame/includes/jupiter.h b/src/mame/includes/jupiter.h index 0f624613125..d85690ecc4b 100644 --- a/src/mame/includes/jupiter.h +++ b/src/mame/includes/jupiter.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol, Robbbert -#pragma once +#ifndef MAME_INCLUDES_JUPITER_H +#define MAME_INCLUDES_JUPITER_H -#ifndef __JUPITER__ -#define __JUPITER__ +#pragma once #define MCM6571AP_TAG "vid125_6c" #define S6820_TAG "vid125_4a" @@ -19,12 +19,13 @@ public: jupiter2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, MCM6571AP_TAG) - { } + { } DECLARE_DRIVER_INIT(jupiter); private: required_device m_maincpu; + virtual void machine_start() override; }; @@ -37,22 +38,23 @@ public: , m_p_videoram(*this, "videoram") , m_p_ram(*this, "ram") , m_p_chargen(*this, "chargen") - { } + { } uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_DRIVER_INIT(jupiter3); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(status_r); DECLARE_READ8_MEMBER(key_r); DECLARE_READ8_MEMBER(ff_r); private: - uint8_t m_term_data; virtual void machine_reset() override; + + uint8_t m_term_data; required_device m_maincpu; required_shared_ptr m_p_videoram; required_shared_ptr m_p_ram; required_region_ptr m_p_chargen; }; -#endif +#endif // MAME_INCLUDES_JUPITER_H diff --git a/src/mame/includes/kaypro.h b/src/mame/includes/kaypro.h index 2973e21a70f..ba977be1ef0 100644 --- a/src/mame/includes/kaypro.h +++ b/src/mame/includes/kaypro.h @@ -1,5 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Robbbert +#ifndef MAME_INCLUDES_KAYPRO_H +#define MAME_INCLUDES_KAYPRO_H + +#pragma once + #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" #include "machine/z80pio.h" @@ -100,9 +105,11 @@ private: required_device m_sio; optional_device m_sio2x; required_device m_centronics; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; optional_device m_floppy1; optional_device m_crtc; required_device m_beep; }; + +#endif // MAME_INCLUDES_KAYPRO_H diff --git a/src/mame/includes/leland.h b/src/mame/includes/leland.h index 4662cda5e51..e6c6168fa6a 100644 --- a/src/mame/includes/leland.h +++ b/src/mame/includes/leland.h @@ -5,13 +5,14 @@ Cinemat/Leland driver *************************************************************************/ +#ifndef MAME_INCLUDES_LELAND_H +#define MAME_INCLUDES_LELAND_H + +#pragma once #include "machine/eepromser.h" -#include "sound/ym2151.h" #include "sound/dac.h" #include "sound/ay8910.h" -#include "machine/pit8253.h" -#include "cpu/i86/i186.h" #include "screen.h" #define LELAND_BATTERY_RAM_SIZE 0x4000 @@ -217,123 +218,9 @@ public: #define SERIAL_TYPE_ENCRYPT_XOR 4 -/*----------- defined in audio/leland.c -----------*/ - -class leland_80186_sound_device : public device_t -{ -public: - leland_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - leland_80186_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - virtual machine_config_constructor device_mconfig_additions() const override; - - DECLARE_WRITE16_MEMBER(peripheral_ctrl); - DECLARE_WRITE8_MEMBER(leland_80186_control_w); - DECLARE_WRITE8_MEMBER(ataxx_80186_control_w); - DECLARE_READ16_MEMBER(peripheral_r); - DECLARE_WRITE16_MEMBER(peripheral_w); - DECLARE_WRITE8_MEMBER(leland_80186_command_lo_w); - DECLARE_WRITE8_MEMBER(leland_80186_command_hi_w); - DECLARE_READ8_MEMBER(leland_80186_response_r); - DECLARE_WRITE16_MEMBER(dac_w); - DECLARE_WRITE16_MEMBER(ataxx_dac_control); - DECLARE_WRITE_LINE_MEMBER(pit0_2_w); - DECLARE_WRITE_LINE_MEMBER(pit1_0_w); - DECLARE_WRITE_LINE_MEMBER(pit1_1_w); - DECLARE_WRITE_LINE_MEMBER(pit1_2_w); - DECLARE_WRITE_LINE_MEMBER(i80186_tmr0_w); - DECLARE_WRITE_LINE_MEMBER(i80186_tmr1_w); -protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - int m_type; - - enum { - TYPE_LELAND, - TYPE_REDLINE, - TYPE_ATAXX, - TYPE_WSF - }; - - required_device m_dac1; - required_device m_dac2; - required_device m_dac3; - required_device m_dac4; - optional_device m_dac5; - optional_device m_dac6; - optional_device m_dac7; - optional_device m_dac8; - optional_device m_dac9; - required_device m_dac1vol; - required_device m_dac2vol; - required_device m_dac3vol; - required_device m_dac4vol; - optional_device m_dac5vol; - optional_device m_dac6vol; - optional_device m_dac7vol; - optional_device m_dac8vol; - -private: - void command_lo_sync(void *ptr, int param); - void delayed_response_r(void *ptr, int param); - void set_clock_line(int which, int state) { m_clock_active = state ? (m_clock_active | (1< m_pit0; - optional_device m_pit1; - optional_device m_pit2; - optional_device m_ymsnd; -}; - -extern const device_type LELAND_80186; - -class redline_80186_sound_device : public leland_80186_sound_device -{ -public: - redline_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_WRITE16_MEMBER(redline_dac_w); - virtual machine_config_constructor device_mconfig_additions() const override; -}; - -extern const device_type REDLINE_80186; - -class ataxx_80186_sound_device : public leland_80186_sound_device -{ -public: - ataxx_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual machine_config_constructor device_mconfig_additions() const override; -}; - -extern const device_type ATAXX_80186; - -class wsf_80186_sound_device : public leland_80186_sound_device -{ -public: - wsf_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual machine_config_constructor device_mconfig_additions() const override; -}; - -extern const device_type WSF_80186; - -ADDRESS_MAP_EXTERN(leland_80186_map_program, 16); -ADDRESS_MAP_EXTERN(leland_80186_map_io, 16); -ADDRESS_MAP_EXTERN(redline_80186_map_io, 16); -ADDRESS_MAP_EXTERN(ataxx_80186_map_io, 16); - - /*----------- defined in video/leland.c -----------*/ MACHINE_CONFIG_EXTERN( leland_video ); MACHINE_CONFIG_EXTERN( ataxx_video ); + +#endif // MAME_INCLUDES_LELAND_H diff --git a/src/mame/includes/lemmings.h b/src/mame/includes/lemmings.h index a6c5d094c89..54d4fa1dfe8 100644 --- a/src/mame/includes/lemmings.h +++ b/src/mame/includes/lemmings.h @@ -62,7 +62,7 @@ public: virtual void machine_start() override; virtual void video_start() override; uint32_t screen_update_lemmings(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_lemmings(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_lemmings); void lemmings_copy_bitmap(bitmap_rgb32& bitmap, bitmap_ind16& srcbitmap, int* xscroll, int* yscroll, const rectangle& cliprect); DECLARE_READ16_MEMBER( lem_protection_region_0_146_r ); diff --git a/src/mame/includes/lethal.h b/src/mame/includes/lethal.h index 4703c8003f7..092f2e16813 100644 --- a/src/mame/includes/lethal.h +++ b/src/mame/includes/lethal.h @@ -12,6 +12,7 @@ #include "video/k054156_k054157_k056832.h" #include "video/k053244_k053245.h" #include "video/k054000.h" +#include "machine/k054321.h" class lethal_state : public driver_device { @@ -23,6 +24,7 @@ public: m_bank4000(*this, "bank4000"), m_k056832(*this, "k056832"), m_k053244(*this, "k053244"), + m_k054321(*this, "k054321"), m_palette(*this, "palette") { } /* video-related */ @@ -39,11 +41,12 @@ public: required_device m_bank4000; required_device m_k056832; required_device m_k053244; + required_device m_k054321; required_device m_palette; DECLARE_WRITE8_MEMBER(control2_w); + DECLARE_READ8_MEMBER(sound_irq_r); DECLARE_WRITE8_MEMBER(sound_irq_w); - DECLARE_READ8_MEMBER(sound_status_r); DECLARE_WRITE8_MEMBER(le_bankswitch_w); DECLARE_READ8_MEMBER(guns_r); DECLARE_READ8_MEMBER(gunsaux_r); diff --git a/src/mame/includes/lethalj.h b/src/mame/includes/lethalj.h index 6cb1ae765a9..df87de7d8aa 100644 --- a/src/mame/includes/lethalj.h +++ b/src/mame/includes/lethalj.h @@ -44,6 +44,7 @@ public: optional_ioport m_light1_x; optional_ioport m_light1_y; + emu_timer *m_gen_ext1_int_timer; uint16_t m_blitter_data[8]; std::unique_ptr m_screenram; uint8_t m_vispage; @@ -70,7 +71,4 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; -/*----------- defined in video/lethalj.c -----------*/ -void lethalj_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params); - #endif // MAME_INCLUDES_LETHALJ_H diff --git a/src/mame/includes/lisa.h b/src/mame/includes/lisa.h index 176164f4e38..f43392426e7 100644 --- a/src/mame/includes/lisa.h +++ b/src/mame/includes/lisa.h @@ -181,6 +181,7 @@ public: int m_mouse_data_offset; int m_COPS_force_unplug; emu_timer *m_mouse_timer; + emu_timer *m_cops_ready_timer; int m_hold_COPS_data; int m_NMIcode; clock_regs_t m_clock_regs; diff --git a/src/mame/includes/llc.h b/src/mame/includes/llc.h index 38317d538e4..24f5cd6461d 100644 --- a/src/mame/includes/llc.h +++ b/src/mame/includes/llc.h @@ -9,6 +9,9 @@ #ifndef MAME_INCLUDES_LLC_H #define MAME_INCLUDES_LLC_H +#pragma once + + #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" #include "machine/k7659kb.h" @@ -31,7 +34,7 @@ public: DECLARE_WRITE8_MEMBER(llc2_rom_disable_w); DECLARE_WRITE8_MEMBER(llc2_basic_enable_w); - DECLARE_WRITE8_MEMBER(kbd_put); + void kbd_put(u8 data); DECLARE_READ8_MEMBER(llc1_port1_a_r); DECLARE_READ8_MEMBER(llc1_port2_a_r); DECLARE_READ8_MEMBER(llc1_port2_b_r); diff --git a/src/mame/includes/lockon.h b/src/mame/includes/lockon.h index 72ff10a5e9b..9ced782d8f9 100644 --- a/src/mame/includes/lockon.h +++ b/src/mame/includes/lockon.h @@ -129,7 +129,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(lockon); uint32_t screen_update_lockon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_lockon(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_lockon); TIMER_CALLBACK_MEMBER(cursor_callback); TIMER_CALLBACK_MEMBER(bufend_callback); void scene_draw( ); diff --git a/src/mame/includes/m10.h b/src/mame/includes/m10.h index adfad1d2840..f7b9ec43733 100644 --- a/src/mame/includes/m10.h +++ b/src/mame/includes/m10.h @@ -75,6 +75,7 @@ public: /* misc */ int m_last; + emu_timer *m_interrupt_timer; /* devices */ required_device m_maincpu; diff --git a/src/mame/includes/m5.h b/src/mame/includes/m5.h index 758020efa9d..d23f3e109a1 100644 --- a/src/mame/includes/m5.h +++ b/src/mame/includes/m5.h @@ -51,24 +51,6 @@ public: , m_DIPS(*this, "DIPS") { } - required_device m_maincpu; - required_device m_ctc; - //I've changed following devices to optional since we have to remove them in BRNO mod (I don't know better solution) - optional_device m_fd5cpu; - optional_device m_ppi; - optional_device m_fdc; - optional_device m_floppy0; - required_device m_cassette; - optional_device m_cart1; - optional_device m_cart2; - required_device m_centronics; - required_device m_ram; - required_ioport m_reset; - optional_ioport m_DIPS; - - virtual void machine_start() override; - virtual void machine_reset() override; - DECLARE_READ8_MEMBER( sts_r ); DECLARE_WRITE8_MEMBER( com_w ); DECLARE_READ8_MEMBER( ppi_pa_r ); @@ -86,10 +68,6 @@ public: DECLARE_FLOPPY_FORMATS( floppy_formats ); - // video state -// const TMS9928a_interface *m_vdp_intf; - - int m_centronics_busy; DECLARE_WRITE_LINE_MEMBER(write_centronics_busy); DECLARE_DRIVER_INIT(pal); @@ -101,6 +79,31 @@ public: DECLARE_WRITE8_MEMBER( mem64KBI_w ); DECLARE_WRITE8_MEMBER( mem64KBF_w ); DECLARE_WRITE8_MEMBER( mem64KRX_w ); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + + required_device m_maincpu; + required_device m_ctc; + //I've changed following devices to optional since we have to remove them in BRNO mod (I don't know better solution) + optional_device m_fd5cpu; + optional_device m_ppi; + optional_device m_fdc; + optional_device m_floppy0; + required_device m_cassette; + optional_device m_cart1; + optional_device m_cart2; + required_device m_centronics; + required_device m_ram; + required_ioport m_reset; + optional_ioport m_DIPS; + + // video state +// const TMS9928a_interface *m_vdp_intf; + + int m_centronics_busy; + uint8_t m_ram_mode; uint8_t m_ram_type; memory_region *m_cart_rom; @@ -112,7 +115,6 @@ public: int m_intra; int m_ibfa; int m_obfa; - }; @@ -120,22 +122,13 @@ class brno_state : public m5_state { public: brno_state(const machine_config &mconfig, device_type type, const char *tag) - : m5_state(mconfig, type, tag), - - m_fdc(*this, WD2797_TAG), - m_floppy0(*this, WD2797_TAG":0"), - m_floppy1(*this, WD2797_TAG":1") - // m_ramdisk(*this, RAMDISK) + : m5_state(mconfig, type, tag) + , m_fdc(*this, WD2797_TAG) + , m_floppy0(*this, WD2797_TAG":0") + , m_floppy1(*this, WD2797_TAG":1") + //, m_ramdisk(*this, RAMDISK) { } - - required_device m_fdc; - required_device m_floppy0; - optional_device m_floppy1; - floppy_image_device *m_floppy; - - - DECLARE_READ8_MEMBER( mmu_r ); DECLARE_WRITE8_MEMBER( mmu_w ); DECLARE_READ8_MEMBER( ramsel_r ); @@ -157,16 +150,20 @@ public: DECLARE_SNAPSHOT_LOAD_MEMBER( brno ); // DECLARE_DEVICE_IMAGE_LOAD_MEMBER(m5_cart); - +protected: virtual void machine_start() override; virtual void machine_reset() override; + required_device m_fdc; + required_device m_floppy0; + optional_device m_floppy1; + floppy_image_device *m_floppy; + uint8_t m_rambank; // bank # uint8_t m_ramcpu; //where Ramdisk bank is mapped bool m_romen; bool m_ramen; - uint8_t m_rammap[16]; // memory map }; diff --git a/src/mame/includes/m92.h b/src/mame/includes/m92.h index 1d83a93617b..84ae25cbc72 100644 --- a/src/mame/includes/m92.h +++ b/src/mame/includes/m92.h @@ -55,6 +55,7 @@ public: required_device m_upd71059c; optional_device m_soundlatch; + emu_timer *m_spritebuffer_timer; uint16_t m_sound_status; uint32_t m_raster_irq_position; uint16_t m_videocontrol; diff --git a/src/mame/includes/macrossp.h b/src/mame/includes/macrossp.h index 5d5ccd5d2ba..130c3c01449 100644 --- a/src/mame/includes/macrossp.h +++ b/src/mame/includes/macrossp.h @@ -97,7 +97,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_macrossp(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_macrossp(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_macrossp); void draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); void draw_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int linem, int pri); DECLARE_WRITE_LINE_MEMBER(irqhandler); diff --git a/src/mame/includes/marineb.h b/src/mame/includes/marineb.h index 9c1cad46b64..60324a8ec75 100644 --- a/src/mame/includes/marineb.h +++ b/src/mame/includes/marineb.h @@ -55,4 +55,4 @@ public: INTERRUPT_GEN_MEMBER(marineb_vblank_irq); INTERRUPT_GEN_MEMBER(wanted_vblank_irq); void set_tilemap_scrolly( int cols ); -}; \ No newline at end of file +}; diff --git a/src/mame/includes/mario.h b/src/mame/includes/mario.h index 57fd4f27ce2..29a5dcdae6d 100644 --- a/src/mame/includes/mario.h +++ b/src/mame/includes/mario.h @@ -82,10 +82,10 @@ public: #if OLD_SOUND optional_device m_discrete; #else - optional_device m_audio_snd0; - optional_device m_audio_snd1; - optional_device m_audio_snd7; - optional_device m_audio_dac; + optional_device m_audio_snd0; + optional_device m_audio_snd1; + optional_device m_audio_snd7; + optional_device m_audio_dac; #endif /* memory pointers */ @@ -114,8 +114,8 @@ public: DECLARE_WRITE8_MEMBER(mario_flip_w); DECLARE_READ8_MEMBER(mario_sh_p1_r); DECLARE_READ8_MEMBER(mario_sh_p2_r); - DECLARE_READ8_MEMBER(mario_sh_t0_r); - DECLARE_READ8_MEMBER(mario_sh_t1_r); + DECLARE_READ_LINE_MEMBER(mario_sh_t0_r); + DECLARE_READ_LINE_MEMBER(mario_sh_t1_r); DECLARE_READ8_MEMBER(mario_sh_tune_r); DECLARE_WRITE8_MEMBER(mario_sh_p1_w); DECLARE_WRITE8_MEMBER(mario_sh_p2_w); diff --git a/src/mame/includes/maygay1b.h b/src/mame/includes/maygay1b.h index bc5c31ef129..d7d40c913a7 100644 --- a/src/mame/includes/maygay1b.h +++ b/src/mame/includes/maygay1b.h @@ -55,7 +55,7 @@ public: required_device m_maincpu; required_device m_mcu; - optional_device m_vfd; + optional_device m_vfd; required_device m_ay; optional_device m_msm6376; optional_device m_upd7759; diff --git a/src/mame/includes/mbc55x.h b/src/mame/includes/mbc55x.h index 07011355e56..e463e5688f0 100644 --- a/src/mame/includes/mbc55x.h +++ b/src/mame/includes/mbc55x.h @@ -116,20 +116,6 @@ public: DECLARE_FLOPPY_FORMATS(floppy_formats); - required_device m_maincpu; - required_device m_crtc; - required_device m_kb_uart; - required_device m_pit; - required_device m_ppi; - required_device m_pic; - required_device m_fdc; - required_device m_floppy0; - required_device m_floppy1; - required_device m_floppy2; - required_device m_floppy3; - required_device m_speaker; - required_device m_ram; - required_device m_palette; //DECLARE_READ8_MEMBER(pic8259_r); //DECLARE_WRITE8_MEMBER(pic8259_w); //DECLARE_READ8_MEMBER(mbc55x_disk_r); @@ -154,12 +140,6 @@ public: DECLARE_WRITE_LINE_MEMBER(vid_vsync_changed); DECLARE_WRITE_LINE_MEMBER(pit8253_t2); - uint32_t m_debug_machine; - uint32_t m_debug_video; - uint8_t m_video_mem[VIDEO_MEM_SIZE]; - uint8_t m_vram_page; - - keyboard_t m_keyboard; DECLARE_READ8_MEMBER(mbcpic8259_r); DECLARE_WRITE8_MEMBER(mbcpic8259_w); DECLARE_READ8_MEMBER(mbcpit8253_r); @@ -169,18 +149,46 @@ public: DECLARE_READ8_MEMBER(mbc55x_kb_usart_r); DECLARE_WRITE8_MEMBER(mbc55x_kb_usart_w); DECLARE_DRIVER_INIT(mbc55x); + MC6845_UPDATE_ROW(crtc_update_row); + DECLARE_PALETTE_INIT(mbc55x); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_mbc55x); + TIMER_CALLBACK_MEMBER(keyscan_callback); + + required_device m_maincpu; + + uint32_t m_debug_machine; + +protected: virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; virtual void video_reset() override; - DECLARE_PALETTE_INIT(mbc55x); - void screen_eof_mbc55x(screen_device &screen, bool state); - TIMER_CALLBACK_MEMBER(keyscan_callback); + void keyboard_reset(); void scan_keyboard(); void set_ram_size(); + required_device m_crtc; + required_device m_kb_uart; + required_device m_pit; + required_device m_ppi; + required_device m_pic; + required_device m_fdc; + required_device m_floppy0; + required_device m_floppy1; + required_device m_floppy2; + required_device m_floppy3; + required_device m_speaker; + required_device m_ram; + required_device m_palette; + + uint32_t m_debug_video; + uint8_t m_video_mem[VIDEO_MEM_SIZE]; + uint8_t m_vram_page; + + keyboard_t m_keyboard; + private: void debug_command(int ref, const std::vector ¶ms); void video_debug(int ref, const std::vector ¶ms); diff --git a/src/mame/includes/mbee.h b/src/mame/includes/mbee.h index fe91bd4cbf8..771606aa25f 100644 --- a/src/mame/includes/mbee.h +++ b/src/mame/includes/mbee.h @@ -160,7 +160,7 @@ private: required_device m_centronics; required_device m_cent_data_out; required_device m_crtc; - optional_device m_fdc; + optional_device m_fdc; optional_device m_floppy0; optional_device m_floppy1; optional_device m_rtc; @@ -174,4 +174,4 @@ private: required_device m_screen; }; -#endif /* MAME_INCLUDES_MBEE_H */ +#endif // MAME_INCLUDES_MBEE_H diff --git a/src/mame/includes/mcatadv.h b/src/mame/includes/mcatadv.h index 5c779e02ed0..6b40d3f54c4 100644 --- a/src/mame/includes/mcatadv.h +++ b/src/mame/includes/mcatadv.h @@ -56,7 +56,7 @@ public: virtual void machine_start() override; virtual void video_start() override; uint32_t screen_update_mcatadv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_mcatadv(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_mcatadv); void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ); void mcatadv_draw_tilemap_part( screen_device &screen, uint16_t* current_scroll, uint16_t* current_videoram1, int i, tilemap_t* current_tilemap, bitmap_ind16 &bitmap, const rectangle &cliprect ); }; diff --git a/src/mame/includes/megadriv.h b/src/mame/includes/megadriv.h index 4803db7fcb0..98e3b21791d 100644 --- a/src/mame/includes/megadriv.h +++ b/src/mame/includes/megadriv.h @@ -133,7 +133,7 @@ public: DECLARE_MACHINE_RESET( megadriv ); DECLARE_VIDEO_START( megadriv ); uint32_t screen_update_megadriv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_megadriv(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_megadriv); DECLARE_WRITE8_MEMBER(megadriv_tas_callback); }; @@ -171,7 +171,7 @@ public: DECLARE_MACHINE_START( ms_megacd ); // setup ioport_port + dma delay for cd DECLARE_MACHINE_RESET( ms_megadriv ); - void screen_eof_console(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_console); DECLARE_DEVICE_IMAGE_LOAD_MEMBER( _32x_cart ); diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h index 289f26ebd5f..5d4042ec790 100644 --- a/src/mame/includes/megasys1.h +++ b/src/mame/includes/megasys1.h @@ -157,7 +157,7 @@ public: DECLARE_MACHINE_RESET(megasys1_hachoo); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); INTERRUPT_GEN_MEMBER(megasys1D_irq); TIMER_DEVICE_CALLBACK_MEMBER(megasys1A_scanline); TIMER_DEVICE_CALLBACK_MEMBER(megasys1A_iganinju_scanline); diff --git a/src/mame/includes/mermaid.h b/src/mame/includes/mermaid.h index 68d370c3f22..2a43ff480b9 100644 --- a/src/mame/includes/mermaid.h +++ b/src/mame/includes/mermaid.h @@ -96,7 +96,7 @@ public: DECLARE_PALETTE_INIT(mermaid); DECLARE_PALETTE_INIT(rougien); uint32_t screen_update_mermaid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_mermaid(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_mermaid); INTERRUPT_GEN_MEMBER(vblank_irq); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); uint8_t collision_check( rectangle& rect ); diff --git a/src/mame/includes/metro.h b/src/mame/includes/metro.h index 1b66b4e6b2a..256ed80fb97 100644 --- a/src/mame/includes/metro.h +++ b/src/mame/includes/metro.h @@ -98,6 +98,7 @@ public: int m_sprite_xoffs; int m_sprite_yoffs; int m_sprite_xoffs_dx; + emu_timer *m_blit_done_timer; std::unique_ptr m_expanded_gfx1; @@ -105,8 +106,9 @@ public: int m_vblank_bit; int m_blitter_bit; int m_irq_line; - uint8_t m_requested_int[8]; + uint8_t m_requested_int[8]; emu_timer *m_mouja_irq_timer; + emu_timer *m_karatour_irq_timer; /* sound related */ uint16_t m_soundstatus; @@ -183,6 +185,7 @@ public: DECLARE_DRIVER_INIT(dharmak); DECLARE_DRIVER_INIT(puzzlet); DECLARE_DRIVER_INIT(metro); + DECLARE_DRIVER_INIT(lastfortg); TILE_GET_INFO_MEMBER(metro_k053936_get_tile_info); TILE_GET_INFO_MEMBER(metro_k053936_gstrik2_get_tile_info); TILEMAP_MAPPER_MEMBER(tilemap_scan_gstrik2); diff --git a/src/mame/includes/micro3d.h b/src/mame/includes/micro3d.h index 87d11f4f571..eeb57b3dbcf 100644 --- a/src/mame/includes/micro3d.h +++ b/src/mame/includes/micro3d.h @@ -5,6 +5,10 @@ Microprose Games 3D hardware *************************************************************************/ +#ifndef MAME_INCLUDES_MICRO3D_H +#define MAME_INCLUDES_MICRO3D_H + +#pragma once #include "cpu/tms34010/tms34010.h" #include "cpu/mcs51/mcs51.h" @@ -32,13 +36,6 @@ enum planes CLIP_Y_MAX }; -enum dac_registers { - VCF, - VCQ, - VCA, - PAN -}; - class micro3d_sound_device; class micro3d_state : public driver_device @@ -93,7 +90,6 @@ public: /* Sound */ uint8_t m_sound_port_latch[4]; - uint8_t m_dac_data; /* TI UART */ uint8_t m_ti_uart[9]; @@ -203,66 +199,4 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; -/*----------- defined in audio/micro3d.c -----------*/ - -struct biquad -{ - double a0, a1, a2; /* Numerator coefficients */ - double b0, b1, b2; /* Denominator coefficients */ -}; - -struct lp_filter -{ - std::unique_ptr history; - std::unique_ptr coef; - double fs; - biquad ProtoCoef[2]; -}; - -struct m3d_filter_state -{ - double capval; - double exponent; -}; - -class micro3d_sound_device : public device_t, - public device_sound_interface -{ -public: - micro3d_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~micro3d_sound_device() {} - - void noise_sh_w(uint8_t data); - -protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -private: - // internal state -// union -// { -// struct -// { -// uint8_t m_vcf; -// uint8_t m_vcq; -// uint8_t m_vca; -// uint8_t m_pan; -// }; - uint8_t m_dac[4]; -// }; - - float m_gain; - uint32_t m_noise_shift; - uint8_t m_noise_value; - uint8_t m_noise_subcount; - - m3d_filter_state m_noise_filters[4]; - lp_filter m_filter; - sound_stream *m_stream; -}; - -extern const device_type MICRO3D; +#endif // MAME_INCLUDES_MICRO3D_H diff --git a/src/mame/includes/midtunit.h b/src/mame/includes/midtunit.h index 8da238e8b9f..3e6ad93e2c9 100644 --- a/src/mame/includes/midtunit.h +++ b/src/mame/includes/midtunit.h @@ -92,6 +92,8 @@ public: void init_tunit_generic(int sound); void init_nbajam_common(int te_protection); + emu_timer *m_dma_timer; + /* CMOS-related variables */ uint8_t m_cmos_write_enable; diff --git a/src/mame/includes/midvunit.h b/src/mame/includes/midvunit.h index 181dab4f0ca..5a2871eed33 100644 --- a/src/mame/includes/midvunit.h +++ b/src/mame/includes/midvunit.h @@ -96,6 +96,7 @@ public: uint16_t m_page_control; uint8_t m_video_changed; emu_timer *m_scanline_timer; + emu_timer *m_adc_ready_timer; std::unique_ptr m_poly; uint8_t m_galil_input_index; uint8_t m_galil_input_length; diff --git a/src/mame/includes/midyunit.h b/src/mame/includes/midyunit.h index 7ff403062ae..e062f9b2fbe 100644 --- a/src/mame/includes/midyunit.h +++ b/src/mame/includes/midyunit.h @@ -95,6 +95,8 @@ public: uint8_t m_yawdim_dma; uint16_t m_dma_register[16]; dma_state_t m_dma_state; + emu_timer *m_dma_timer; + emu_timer *m_autoerase_line_timer; DECLARE_WRITE16_MEMBER(midyunit_cmos_w); DECLARE_READ16_MEMBER(midyunit_cmos_r); DECLARE_WRITE16_MEMBER(midyunit_cmos_enable_w); diff --git a/src/mame/includes/midzeus.h b/src/mame/includes/midzeus.h index 4a66ad27f18..340286ff7c8 100644 --- a/src/mame/includes/midzeus.h +++ b/src/mame/includes/midzeus.h @@ -18,7 +18,7 @@ public: : driver_device(mconfig, type, tag), m_nvram(*this, "nvram"), m_ram_base(*this, "ram_base"), - m_linkram(*this, "linkram"), + m_firewire(*this, "firewire"), m_tms32031_control(*this, "tms32031_ctl"), m_zeusbase(*this, "zeusbase") , m_m48t35(*this, "m48t35"), @@ -28,7 +28,7 @@ public: required_shared_ptr m_nvram; required_shared_ptr m_ram_base; - optional_shared_ptr m_linkram; + optional_shared_ptr m_firewire; required_shared_ptr m_tms32031_control; optional_shared_ptr m_zeusbase; optional_device m_m48t35; @@ -36,17 +36,21 @@ public: required_device m_screen; optional_device m_palette; + emu_timer *m_display_irq_off_timer; + DECLARE_WRITE32_MEMBER(cmos_w); DECLARE_READ32_MEMBER(cmos_r); DECLARE_WRITE32_MEMBER(cmos_protect_w); DECLARE_READ32_MEMBER(zpram_r); DECLARE_WRITE32_MEMBER(zpram_w); - DECLARE_READ32_MEMBER(bitlatches_r); - DECLARE_WRITE32_MEMBER(bitlatches_w); + DECLARE_READ32_MEMBER(disk_asic_r); + DECLARE_WRITE32_MEMBER(disk_asic_w); + DECLARE_READ32_MEMBER(disk_asic_jr_r); + DECLARE_WRITE32_MEMBER(disk_asic_jr_w); DECLARE_READ32_MEMBER(crusnexo_leds_r); DECLARE_WRITE32_MEMBER(crusnexo_leds_w); - DECLARE_READ32_MEMBER(linkram_r); - DECLARE_WRITE32_MEMBER(linkram_w); + DECLARE_READ32_MEMBER(firewire_r); + DECLARE_WRITE32_MEMBER(firewire_w); DECLARE_READ32_MEMBER(tms32031_control_r); DECLARE_WRITE32_MEMBER(tms32031_control_w); DECLARE_WRITE32_MEMBER(keypad_select_w); @@ -58,8 +62,8 @@ public: DECLARE_WRITE32_MEMBER(zeus_w); DECLARE_CUSTOM_INPUT_MEMBER(custom_49way_r); DECLARE_CUSTOM_INPUT_MEMBER(keypad_r); - DECLARE_READ32_MEMBER(zeus2_timekeeper_r); - DECLARE_WRITE32_MEMBER(zeus2_timekeeper_w); + DECLARE_READ32_MEMBER(grid_keypad_r); + DECLARE_READ32_MEMBER(trackball_r); DECLARE_DRIVER_INIT(invasn); DECLARE_DRIVER_INIT(mk4); DECLARE_DRIVER_INIT(thegrid); diff --git a/src/mame/includes/mitchell.h b/src/mame/includes/mitchell.h index 01ccf76b793..d2bfc8ac8af 100644 --- a/src/mame/includes/mitchell.h +++ b/src/mame/includes/mitchell.h @@ -72,7 +72,6 @@ public: int m_dial_selected; int m_dir[2]; int m_keymatrix; - uint8_t m_dummy_nvram; uint8_t m_irq_source; DECLARE_READ8_MEMBER(pang_port5_r); diff --git a/src/mame/includes/model1.h b/src/mame/includes/model1.h index 6df79c3974a..0c5fa94cb12 100644 --- a/src/mame/includes/model1.h +++ b/src/mame/includes/model1.h @@ -10,6 +10,7 @@ #include "cpu/mb86233/mb86233.h" #include "cpu/v60/v60.h" +#include "machine/i8251.h" #include "machine/m1comm.h" #include "video/segaic24.h" @@ -32,6 +33,7 @@ public: : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_m1audio(*this, "m1audio") + , m_m1uart(*this, "m1uart") , m_m1comm(*this, "m1comm") , m_dsbz80(*this, DSBZ80_TAG) , m_tgp(*this, "tgp") @@ -65,10 +67,6 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(model1_interrupt); IRQ_CALLBACK_MEMBER(irq_callback); - // Sound - DECLARE_READ16_MEMBER(snd_68k_ready_r); - DECLARE_WRITE16_MEMBER(snd_latch_to_68k_w); - // TGP DECLARE_READ16_MEMBER(fifoin_status_r); DECLARE_WRITE16_MEMBER(md1_w); @@ -107,7 +105,7 @@ public: DECLARE_WRITE16_MEMBER(model1_listctl_w); uint32_t screen_update_model1(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_model1(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_model1); struct spoint_t { @@ -193,6 +191,7 @@ private: // Devices required_device m_maincpu; // V60 required_device m_m1audio; // Model 1 standard sound board + required_device m_m1uart; optional_device m_m1comm; // Model 1 communication board optional_device m_dsbz80; // Digital Sound Board optional_device m_tgp; @@ -206,8 +205,6 @@ private: // Sound int m_sound_irq; - uint8_t m_last_snd_cmd; - int m_snd_cmd_state; // TGP FIFO uint32_t fifoout_pop(); @@ -473,7 +470,7 @@ private: optional_shared_ptr m_paletteram16; required_device m_palette; - required_device m_tiles; + required_device m_tiles; // I/O related uint16_t m_lamp_state; diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h index f19d204a793..965584d8702 100644 --- a/src/mame/includes/model2.h +++ b/src/mame/includes/model2.h @@ -4,6 +4,7 @@ #include "audio/dsbz80.h" #include "audio/segam1audio.h" #include "machine/eepromser.h" +#include "machine/i8251.h" #include "cpu/i960/i960.h" #include "cpu/mb86235/mb86235.h" #include "sound/scsp.h" @@ -33,6 +34,7 @@ public: m_maincpu(*this,"maincpu"), m_dsbz80(*this, DSBZ80_TAG), m_m1audio(*this, "m1audio"), + m_uart(*this, "uart"), m_m2comm(*this, "m2comm"), m_audiocpu(*this, "audiocpu"), m_tgp(*this, "tgp"), @@ -49,7 +51,7 @@ public: m_gears(*this, "GEARS"), m_analog_ports(*this, {"ANA0", "ANA1", "ANA2", "ANA3"}), m_lightgun_ports(*this, {"P1_Y", "P1_X", "P2_Y", "P2_X"}) - { } + { } required_shared_ptr m_workram; required_shared_ptr m_bufferram; @@ -65,6 +67,7 @@ public: required_device m_maincpu; optional_device m_dsbz80; // Z80-based MPEG Digital Sound Board optional_device m_m1audio; // Model 1 standard sound board + required_device m_uart; optional_device m_m2comm; // Model 2 communication board optional_device m_audiocpu; optional_device m_tgp; @@ -186,9 +189,9 @@ public: DECLARE_READ32_MEMBER(copro_status_r); DECLARE_READ32_MEMBER(polygon_count_r); - DECLARE_READ8_MEMBER(driveio_port_r); + DECLARE_READ8_MEMBER(driveio_portg_r); + DECLARE_READ8_MEMBER(driveio_porth_r); DECLARE_WRITE8_MEMBER(driveio_port_w); - DECLARE_READ8_MEMBER(driveio_port_str_r); void push_geo_data(uint32_t data); DECLARE_DRIVER_INIT(overrev); DECLARE_DRIVER_INIT(pltkids); diff --git a/src/mame/includes/model3.h b/src/mame/includes/model3.h index 8f27cdbf903..053d7b86dea 100644 --- a/src/mame/includes/model3.h +++ b/src/mame/includes/model3.h @@ -6,6 +6,7 @@ #include "machine/53c810.h" #include "audio/dsbz80.h" #include "machine/eepromser.h" +#include "machine/i8251.h" #include "sound/scsp.h" #include "machine/315-5881_crypt.h" #include "machine/msm6242.h" @@ -67,6 +68,7 @@ public: m_work_ram(*this, "work_ram"), m_paletteram64(*this, "paletteram64"), m_dsbz80(*this, DSBZ80_TAG), + m_uart(*this, "uart"), m_soundram(*this, "soundram"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), @@ -89,6 +91,7 @@ public: required_shared_ptr m_work_ram; required_shared_ptr m_paletteram64; optional_device m_dsbz80; // Z80-based MPEG Digital Sound Board + optional_device m_uart; required_shared_ptr m_soundram; required_device m_gfxdecode; diff --git a/src/mame/includes/moo.h b/src/mame/includes/moo.h index 3a856f77205..aa7bd468cbf 100644 --- a/src/mame/includes/moo.h +++ b/src/mame/includes/moo.h @@ -7,13 +7,13 @@ *************************************************************************/ #include "sound/okim6295.h" #include "sound/k054539.h" -#include "machine/gen_latch.h" #include "machine/k053252.h" #include "video/k053251.h" #include "video/k054156_k054157_k056832.h" #include "video/k053246_k053247_k055673.h" #include "video/k054000.h" #include "video/k054338.h" +#include "machine/k054321.h" #include "video/konami_helper.h" #include "screen.h" @@ -35,9 +35,7 @@ public: m_k054338(*this, "k054338"), m_palette(*this, "palette"), m_screen(*this, "screen"), - m_soundlatch(*this, "soundlatch"), - m_soundlatch2(*this, "soundlatch2"), - m_soundlatch3(*this, "soundlatch3") { } + m_k054321(*this, "k054321") { } /* memory pointers */ optional_shared_ptr m_workram; @@ -66,17 +64,12 @@ public: required_device m_k054338; required_device m_palette; required_device m_screen; - optional_device m_soundlatch; - optional_device m_soundlatch2; - optional_device m_soundlatch3; + optional_device m_k054321; emu_timer *m_dmaend_timer; DECLARE_READ16_MEMBER(control2_r); DECLARE_WRITE16_MEMBER(control2_w); - DECLARE_WRITE16_MEMBER(sound_cmd1_w); - DECLARE_WRITE16_MEMBER(sound_cmd2_w); DECLARE_WRITE16_MEMBER(sound_irq_w); - DECLARE_READ16_MEMBER(sound_status_r); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_WRITE16_MEMBER(moo_prot_w); DECLARE_WRITE16_MEMBER(moobl_oki_bank_w); diff --git a/src/mame/includes/mpu4.h b/src/mame/includes/mpu4.h index 0b9e55a0ef3..d0eaa5658a9 100644 --- a/src/mame/includes/mpu4.h +++ b/src/mame/includes/mpu4.h @@ -275,7 +275,7 @@ protected: void mpu4_config_common(); required_device m_maincpu; - optional_device m_vfd; + optional_device m_vfd; optional_device m_6840ptm; optional_device m_pia3; optional_device m_pia4; diff --git a/src/mame/includes/mpz80.h b/src/mame/includes/mpz80.h index 4a4f771f4d4..ca478bd0c5a 100644 --- a/src/mame/includes/mpz80.h +++ b/src/mame/includes/mpz80.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder -#pragma once +#ifndef MAME_INCLUDES_MPZ80_H +#define MAME_INCLUDES_MPZ80_H -#ifndef __MPZ80__ -#define __MPZ80__ +#pragma once #include "bus/s100/s100.h" #include "cpu/z80/z80.h" @@ -38,7 +38,7 @@ public: required_device m_maincpu; required_device m_ram; - required_device m_s100; + required_device m_s100; required_memory_region m_rom; optional_shared_ptr m_map_ram; required_ioport m_16c; @@ -93,4 +93,4 @@ public: DECLARE_DRIVER_INIT(mpz80); }; -#endif +#endif // MAME_INCLUDES_MPZ80_H diff --git a/src/mame/includes/munchmo.h b/src/mame/includes/munchmo.h index aa4d7fed3f3..42db82cfece 100644 --- a/src/mame/includes/munchmo.h +++ b/src/mame/includes/munchmo.h @@ -60,7 +60,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(munchmo); u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void vblank_irq(screen_device &screen, bool vblank_state); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); IRQ_CALLBACK_MEMBER(generic_irq_ack); void draw_status( bitmap_ind16 &bitmap, const rectangle &cliprect ); void draw_background( bitmap_ind16 &bitmap, const rectangle &cliprect ); diff --git a/src/mame/includes/mw8080bw.h b/src/mame/includes/mw8080bw.h index aa27e8f8634..ad87c7c7619 100644 --- a/src/mame/includes/mw8080bw.h +++ b/src/mame/includes/mw8080bw.h @@ -92,8 +92,9 @@ public: std::unique_ptr m_scattered_colorram; std::unique_ptr m_scattered_colorram2; - /* timer */ + /* timers */ emu_timer *m_interrupt_timer; + emu_timer *m_maze_tone_timer; /* other devices */ optional_device m_samples; @@ -169,7 +170,7 @@ public: uint32_t screen_update_spcenctr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_phantom2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_invaders(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_phantom2(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_phantom2); TIMER_CALLBACK_MEMBER(maze_tone_timing_timer_callback); TIMER_CALLBACK_MEMBER(mw8080bw_interrupt_callback); TIMER_DEVICE_CALLBACK_MEMBER(spcenctr_strobe_timer_callback); diff --git a/src/mame/includes/mystwarr.h b/src/mame/includes/mystwarr.h index 3a59e3850f3..fecfcf683e2 100644 --- a/src/mame/includes/mystwarr.h +++ b/src/mame/includes/mystwarr.h @@ -4,11 +4,11 @@ #include "includes/konamigx.h" #include "video/k053246_k053247_k055673.h" -#include "machine/gen_latch.h" #include "sound/k054539.h" #include "machine/k053252.h" #include "video/k055555.h" #include "video/k054000.h" +#include "machine/k054321.h" class mystwarr_state : public konamigx_state { @@ -19,9 +19,7 @@ public: m_k053252(*this, "k053252"), m_k056832(*this, "k056832"), m_k055673(*this, "k055673"), - m_soundlatch(*this, "soundlatch"), - m_soundlatch2(*this, "soundlatch2"), - m_soundlatch3(*this, "soundlatch3"), + m_k054321(*this, "k054321"), m_gx_workram(*this,"gx_workram"), m_spriteram(*this,"spriteram") { } @@ -30,9 +28,7 @@ public: required_device m_k053252; required_device m_k056832; required_device m_k055673; - required_device m_soundlatch; - required_device m_soundlatch2; - required_device m_soundlatch3; + required_device m_k054321; required_shared_ptr m_gx_workram; optional_shared_ptr m_spriteram; std::unique_ptr m_decoded; @@ -58,13 +54,7 @@ public: DECLARE_WRITE16_MEMBER(mweeprom_w); DECLARE_READ16_MEMBER(dddeeprom_r); DECLARE_WRITE16_MEMBER(mmeeprom_w); - DECLARE_WRITE16_MEMBER(sound_cmd1_w); - DECLARE_WRITE16_MEMBER(sound_cmd1_msb_w); - DECLARE_WRITE16_MEMBER(sound_cmd2_w); - DECLARE_WRITE16_MEMBER(sound_cmd2_msb_w); DECLARE_WRITE16_MEMBER(sound_irq_w); - DECLARE_READ16_MEMBER(sound_status_r); - DECLARE_READ16_MEMBER(sound_status_msb_r); DECLARE_WRITE16_MEMBER(irq_ack_w); DECLARE_READ16_MEMBER(k053247_scattered_word_r); DECLARE_WRITE16_MEMBER(k053247_scattered_word_w); diff --git a/src/mame/includes/n64.h b/src/mame/includes/n64.h index 028fca344ad..a2d8ffa8ceb 100644 --- a/src/mame/includes/n64.h +++ b/src/mame/includes/n64.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Ryan Holtz -#ifndef _INCLUDES_N64_H_ -#define _INCLUDES_N64_H_ +#ifndef MAME_INCLUDES_N64_H +#define MAME_INCLUDES_N64_H + +#pragma once #include "cpu/rsp/rsp.h" #include "cpu/mips/mips3.h" @@ -31,7 +33,7 @@ public: void n64_machine_stop(); uint32_t screen_update_n64(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_n64(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_n64); // Getters n64_rdp* rdp() { return m_rdp; } @@ -307,7 +309,7 @@ private: }; // device type definition -extern const device_type N64PERIPH; +DECLARE_DEVICE_TYPE(N64PERIPH, n64_periphs) /*----------- defined in video/n64.c -----------*/ @@ -402,4 +404,4 @@ const unsigned int ddStartOffset[16] = {0x0,0x5F15E0,0xB79D00,0x10801A0,0x1523720,0x1963D80,0x1D414C0,0x20BBCE0, 0x23196E0,0x28A1E00,0x2DF5DC0,0x3299340,0x36D99A0,0x3AB70E0,0x3E31900,0x4149200}; -#endif +#endif // MAME_INCLUDES_N64_H diff --git a/src/mame/includes/n8080.h b/src/mame/includes/n8080.h index 25e6749426d..fc4a161da00 100644 --- a/src/mame/includes/n8080.h +++ b/src/mame/includes/n8080.h @@ -67,10 +67,10 @@ public: DECLARE_WRITE8_MEMBER(n8080_sound_1_w); DECLARE_WRITE8_MEMBER(n8080_sound_2_w); DECLARE_READ8_MEMBER(n8080_8035_p1_r); - DECLARE_READ8_MEMBER(n8080_8035_t0_r); - DECLARE_READ8_MEMBER(n8080_8035_t1_r); - DECLARE_READ8_MEMBER(helifire_8035_t0_r); - DECLARE_READ8_MEMBER(helifire_8035_t1_r); + DECLARE_READ_LINE_MEMBER(n8080_8035_t0_r); + DECLARE_READ_LINE_MEMBER(n8080_8035_t1_r); + DECLARE_READ_LINE_MEMBER(helifire_8035_t0_r); + DECLARE_READ_LINE_MEMBER(helifire_8035_t1_r); DECLARE_READ8_MEMBER(helifire_8035_external_ram_r); DECLARE_READ8_MEMBER(helifire_8035_p2_r); DECLARE_WRITE8_MEMBER(n8080_dac_w); @@ -97,7 +97,7 @@ public: uint32_t screen_update_spacefev(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_sheriff(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_helifire(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_helifire(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_helifire); TIMER_CALLBACK_MEMBER(spacefev_stop_red_cannon); TIMER_DEVICE_CALLBACK_MEMBER(rst1_tick); TIMER_DEVICE_CALLBACK_MEMBER(rst2_tick); diff --git a/src/mame/includes/namcofl.h b/src/mame/includes/namcofl.h index acf2f54cefc..ad11303c9b3 100644 --- a/src/mame/includes/namcofl.h +++ b/src/mame/includes/namcofl.h @@ -33,7 +33,7 @@ public: m_accel(*this, "ACCEL"), m_brake(*this, "BRAKE"), m_wheel(*this, "WHEEL"), - m_shareram(*this, "shareram") { } + m_shareram(*this, "shareram", 32) { } required_device m_maincpu; required_device m_mcu; @@ -46,6 +46,8 @@ public: optional_ioport m_brake; optional_ioport m_wheel; emu_timer *m_raster_interrupt_timer; + emu_timer *m_vblank_interrupt_timer; + emu_timer *m_network_interrupt_timer; std::unique_ptr m_workram; required_shared_ptr m_shareram; uint8_t m_mcu_port6; @@ -56,8 +58,6 @@ public: DECLARE_READ32_MEMBER(namcofl_sysreg_r); DECLARE_WRITE32_MEMBER(namcofl_sysreg_w); DECLARE_WRITE8_MEMBER(namcofl_c116_w); - DECLARE_READ32_MEMBER(namcofl_share_r); - DECLARE_WRITE32_MEMBER(namcofl_share_w); DECLARE_WRITE16_MEMBER(mcu_shared_w); DECLARE_READ8_MEMBER(port6_r); DECLARE_WRITE8_MEMBER(port6_w); @@ -84,4 +84,6 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(mcu_irq2_cb); TIMER_DEVICE_CALLBACK_MEMBER(mcu_adc_cb); void common_init(); + int FLobjcode2tile(int code); + void TilemapCB(uint16_t code, int *tile, int *mask); }; diff --git a/src/mame/includes/namcoic.h b/src/mame/includes/namcoic.h deleted file mode 100644 index c4695444785..00000000000 --- a/src/mame/includes/namcoic.h +++ /dev/null @@ -1,107 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Phil Stroffolino -/* namcoic.h - -Custom Chips: Final Lap Assault LuckyWld System21 NA1/2 NB1/2 - C45 Land Generator * * - C65 I/O Controller * * - C68 * * - C70 * - C95 * * - C102 ROZ:Memory Access Control * - C106 OBJ:X-Axis Zoom Control * * - C107 Land Line Buffer * - C116 Screen Waveform Generator * * * * - C121 Yamaha YM2151 Sound Gen * * * - C123 GFX:Tile Mem Decoder * * * * - C134 OBJ:Address Generator * * - C135 OBJ:Line matching * * - C137 Clock Generator IC * * * * * - C138 * - C139 Serial I/F Controller * * * * - C140 24 Channel PCM * * * - C145 GFX:Tile Memory Access * * * * - C146 OBJ:Line Buf Steering * * - C148 CPU Bus Manager * * * * - C149 Mouse/Trackball Decoder * * * * - C156 Pixel Stream Combo * * * * - C160 Control * - C165 * - C169 ROZ(B) * * - C187 * * * - C210 * - C215 * - C218 * - C219 * - C329 CPU? * - C347 GfxObj * - C352 PCM * - C355 Motion Obj(B) * * * - C373 LAND-related * - C382 * - C383 * - C384 GFX(3) * - C385 * - C390 Key Custom * - - -General Support ---------------- -C65 - This is the I/O Microcontroller, handles all input/output devices. 63705 uC, CPU4 in Namco System2. -C137 - Takes System clock and generates all sub-system clocks, doesn't need emulation, not accessed via CPU -C139 - Serial Interface Controller -C148 - Does some Memory Decode, Interrupt Handling, 3 bit PIO port, Bus Controller -C149 - Does decoding of mouse/trackball input streams for the I/O Controller. (Offset Square wave) - - -Tile Fields Static/Scrolled ---------------------------- -Combination of these two devices and associated RAM & TileGFX produces a pixel stream that is fed -into the Pixel stream decoder. - -C145 - Tile Screen Memory Access controller -C123 - Tile Memory decoder Part 1, converts X,Y,Tile into character ROM address index - - -Pixel Stream Decode -------------------- -These two devices take the pixel streams from the tilefield generator and the associated graphics board -and combine them to form an RGB data stream that is fed to the monitor. - -C156 - Pixel stream combiner -Takes tile field & graphics board streams and generates the prioritized pixel, then does the lookup to -go from palettised to 24bit RGB pixel. - -C116 - Screen Waveform Generator -Takes RGB24 pixel stream from C156 and generates the waveform signals for the monitor, also generates -the line interrupt and controls screen blanking,shift, etc. - -Object Control --------------- -C106 - Generates memory output clocks to generate X-Axis Zoom for Line Buffer Writes -C134 - Object Memory Address Generator. Sequences the sprite memory contents to the hardware. -C135 - Checks is object is displayed on Current output line. -C146 - Steers the Decode Object Pixel data to the correct line buffer A or B - -ROZ ---- -C102 - Controls CPU access to ROZ Memory Area. -*/ - -/***********************************************************************************/ - -#pragma once - -#ifndef __NAMCOIC_H__ -#define __NAMCOIC_H__ - - - -/*----------- defined in drivers/namcoic.c -----------*/ - -void namco_tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri ); -void namco_tilemap_invalidate( void ); - -/***********************************************************************************/ - -#endif diff --git a/src/mame/includes/namconb1.h b/src/mame/includes/namconb1.h index e484888e9fe..7834741df7f 100644 --- a/src/mame/includes/namconb1.h +++ b/src/mame/includes/namconb1.h @@ -119,4 +119,6 @@ public: int NB1objcode2tile(int code); int NB2objcode2tile(int code); + void NB1TilemapCB(uint16_t code, int *tile, int *mask); + void NB2TilemapCB(uint16_t code, int *tile, int *mask); }; diff --git a/src/mame/includes/namcos1.h b/src/mame/includes/namcos1.h index 5b1ea68346c..3e262428458 100644 --- a/src/mame/includes/namcos1.h +++ b/src/mame/includes/namcos1.h @@ -133,7 +133,7 @@ public: void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); private: inline void get_tile_info(tile_data &tileinfo,int tile_index,uint8_t *info_vram); diff --git a/src/mame/includes/namcos2.h b/src/mame/includes/namcos2.h index 13393afe5f7..05a67e643ec 100644 --- a/src/mame/includes/namcos2.h +++ b/src/mame/includes/namcos2.h @@ -8,11 +8,11 @@ ***************************************************************************/ -#include "namcoic.h" -#include "cpu/m6502/m3745x.h" -#include "video/c45.h" -#include "machine/namco_c148.h" #include "machine/namco_c139.h" +#include "machine/namco_c148.h" +#include "video/c45.h" + +#include "cpu/m6502/m3745x.h" #include "screen.h" /* CPU reference numbers */ @@ -94,7 +94,6 @@ enum NAMCOFL_FINAL_LAP_R }; - // fix me -- most of this should be devices eventually class namcos2_shared_state : public driver_device { @@ -158,7 +157,36 @@ public: TILE_GET_INFO_MEMBER( get_tile_info3 ); TILE_GET_INFO_MEMBER( get_tile_info4 ); TILE_GET_INFO_MEMBER( get_tile_info5 ); - void namco_tilemap_init(int gfxbank, void *pMaskROM, void (*cb)( running_machine &machine, uint16_t code, int *gfx, int *mask) ); + typedef delegate c123_tilemap_delegate; + void c123_tilemap_init(int gfxbank, void *pMaskROM, c123_tilemap_delegate tilemap_cb); + void c123_tilemap_invalidate(void); + void c123_tilemap_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri); + void c123_SetTilemapVideoram(int offset, uint16_t newword); + void c123_SetTilemapControl(int offset, uint16_t newword); + + struct c123_mTilemapInfo + { + uint16_t control[0x40/2]; + /** + * [0x1] 0x02/2 tilemap#0.scrollx + * [0x3] 0x06/2 tilemap#0.scrolly + * [0x5] 0x0a/2 tilemap#1.scrollx + * [0x7] 0x0e/2 tilemap#1.scrolly + * [0x9] 0x12/2 tilemap#2.scrollx + * [0xb] 0x16/2 tilemap#2.scrolly + * [0xd] 0x1a/2 tilemap#3.scrollx + * [0xf] 0x1e/2 tilemap#3.scrolly + * 0x20/2 priority + * 0x30/2 color + */ + tilemap_t *tmap[6]; + std::unique_ptr videoram; + int gfxbank; + uint8_t *maskBaseAddr; + c123_tilemap_delegate cb; + }; + + c123_mTilemapInfo m_c123_TilemapInfo; // C169 ROZ Layer Emulation public: @@ -357,6 +385,7 @@ public: void GollyGhostUpdateLED_c8( int data ); void GollyGhostUpdateLED_ca( int data ); void GollyGhostUpdateDiorama_c0( int data ); + void TilemapCB(uint16_t code, int *tile, int *mask); }; diff --git a/src/mame/includes/namcos86.h b/src/mame/includes/namcos86.h index deebc374de6..483a127ed18 100644 --- a/src/mame/includes/namcos86.h +++ b/src/mame/includes/namcos86.h @@ -76,7 +76,7 @@ public: DECLARE_PALETTE_INIT(namcos86); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void scroll_w(address_space &space, int offset, int data, int layer); diff --git a/src/mame/includes/nb1413m3.h b/src/mame/includes/nb1413m3.h index 6135130b5b6..5240d2f3e70 100644 --- a/src/mame/includes/nb1413m3.h +++ b/src/mame/includes/nb1413m3.h @@ -7,6 +7,10 @@ Driver by Takahiro Nogi 1999/11/05 - ******************************************************************************/ +#ifndef MAME_INCLUDES_NB1413M3_H +#define MAME_INCLUDES_NB1413M3_H + +#pragma once #define NB1413M3_VCR_NOP 0x00 #define NB1413M3_VCR_POWER 0x01 @@ -193,7 +197,10 @@ INPUT_PORTS_EXTERN( nbhf1_ctrl ); INPUT_PORTS_EXTERN( nbhf2_ctrl ); extern const device_type NB1413M3; +DECLARE_DEVICE_TYPE(NB1413M3, nb1413m3_device) #define MCFG_NB1413M3_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, NB1413M3, 0) + +#endif // MAME_INCLUDES_NB1413M3_H diff --git a/src/mame/includes/nb1414m4.h b/src/mame/includes/nb1414m4.h index 4a3718baa33..bba25f89e12 100644 --- a/src/mame/includes/nb1414m4.h +++ b/src/mame/includes/nb1414m4.h @@ -1,11 +1,14 @@ // license:LGPL-2.1+ // copyright-holders:Angelo Salese -class nb1414m4_device : public device_t, - public device_video_interface +#ifndef MAME_INCLUDES_NB1414M4_H +#define MAME_INCLUDES_NB1414M4_H + +#pragma once + +class nb1414m4_device : public device_t, public device_video_interface { public: nb1414m4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~nb1414m4_device() {} void exec(uint16_t mcu_cmd, uint8_t *vram, uint16_t &scrollx, uint16_t &scrolly, tilemap_t *tilemap); @@ -28,4 +31,6 @@ private: }; -extern const device_type NB1414M4; +DECLARE_DEVICE_TYPE(NB1414M4, nb1414m4_device) + +#endif // MAME_INCLUDES_NB1414M4_H diff --git a/src/mame/includes/nes.h b/src/mame/includes/nes.h index d6ce3d7761f..1ba3f013236 100644 --- a/src/mame/includes/nes.h +++ b/src/mame/includes/nes.h @@ -8,11 +8,14 @@ ****************************************************************************/ -#ifndef NES_H_ -#define NES_H_ +#ifndef MAME_INCLUDES_NES_H +#define MAME_INCLUDES_NES_H + +#pragma once #include "video/ppu2c0x.h" +#include "bus/nes/disksys.h" #include "bus/nes/nes_slot.h" #include "bus/nes/nes_carts.h" #include "bus/nes_ctrl/ctrl.h" @@ -21,12 +24,8 @@ CONSTANTS ***************************************************************************/ -#define NTSC_CLOCK N2A03_DEFAULTCLOCK /* 1.789772 MHz */ -#define PAL_CLOCK (26601712.0/16) /* 1.662607 MHz */ - #define NES_BATTERY_SIZE 0x2000 - /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ @@ -53,32 +52,16 @@ class nes_state : public driver_device { public: nes_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_ppu(*this, "ppu"), - m_ctrl1(*this, "ctrl1"), - m_ctrl2(*this, "ctrl2"), - m_exp(*this, "exp"), - m_cartslot(*this, "nes_slot"), - m_disk(*this, "disk") - { } - - /* video-related */ - int m_last_frame_flip; - - /* misc */ - ioport_port *m_io_disksel; - - uint8_t *m_vram; - std::unique_ptr m_ciram; //PPU nametable RAM - external to PPU! - - required_device m_maincpu; - required_device m_ppu; - required_device m_ctrl1; - required_device m_ctrl2; - optional_device m_exp; - optional_device m_cartslot; - optional_device m_disk; + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_ppu(*this, "ppu") + , m_ctrl1(*this, "ctrl1") + , m_ctrl2(*this, "ctrl2") + , m_exp(*this, "exp") + , m_cartslot(*this, "nes_slot") + , m_disk(*this, "disk") + { + } int nes_ppu_vidaccess(int address, int data); void ppu_nmi(int *ppu_regs); @@ -108,7 +91,24 @@ public: void setup_disk(nes_disksys_device *slot); private: + /* video-related */ + int m_last_frame_flip; + + /* misc */ + ioport_port *m_io_disksel; + + uint8_t *m_vram; + std::unique_ptr m_ciram; //PPU nametable RAM - external to PPU! + + required_device m_maincpu; + required_device m_ppu; + required_device m_ctrl1; + required_device m_ctrl2; + optional_device m_exp; + optional_device m_cartslot; + optional_device m_disk; + memory_bank *m_prg_bank_mem[5]; }; -#endif /* NES_H_ */ +#endif // MAME_INCLUDES_NES_H diff --git a/src/mame/includes/newbrain.h b/src/mame/includes/newbrain.h index 9b97f7028aa..41f6e4958a6 100644 --- a/src/mame/includes/newbrain.h +++ b/src/mame/includes/newbrain.h @@ -97,7 +97,7 @@ protected: required_device m_maincpu; required_device m_cop; required_device m_palette; - required_device m_exp; + required_device m_exp; required_device m_cassette1; required_device m_cassette2; required_device m_rs232_v24; diff --git a/src/mame/includes/next.h b/src/mame/includes/next.h index b50ed43d41a..014261e17c2 100644 --- a/src/mame/includes/next.h +++ b/src/mame/includes/next.h @@ -113,7 +113,7 @@ public: DECLARE_WRITE_LINE_MEMBER(mo_drq); DECLARE_FLOPPY_FORMATS( floppy_formats ); - void vblank_w(screen_device &screen, bool vblank_state); + DECLARE_WRITE_LINE_MEMBER(vblank_w); protected: struct dma_slot { diff --git a/src/mame/includes/ninjakd2.h b/src/mame/includes/ninjakd2.h index c0ad204704a..1edc6390616 100644 --- a/src/mame/includes/ninjakd2.h +++ b/src/mame/includes/ninjakd2.h @@ -115,7 +115,7 @@ public: uint32_t screen_update_ninjakd2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_robokid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_omegaf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_ninjakd2(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_ninjakd2); INTERRUPT_GEN_MEMBER(ninjakd2_interrupt); void robokid_get_bg_tile_info( tile_data& tileinfo, tilemap_memory_index const tile_index, int const gfxnum, const uint8_t* const videoram); void bg_ctrl(int offset, int data, tilemap_t* tilemap); diff --git a/src/mame/includes/novagbase.h b/src/mame/includes/novagbase.h index 9bbefb01c45..18b6870e920 100644 --- a/src/mame/includes/novagbase.h +++ b/src/mame/includes/novagbase.h @@ -3,9 +3,16 @@ /****************************************************************************** * * Novag chess machines base class +* main driver is novag6502.cpp * ******************************************************************************/ +#pragma once + +#ifndef DRIVERS_NOVAGBASE_H +#define DRIVERS_NOVAGBASE_H + +#include "sound/dac.h" #include "sound/beep.h" #include "video/hd44780.h" @@ -15,6 +22,7 @@ public: novagbase_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_dac(*this, "dac"), m_beeper(*this, "beeper"), m_lcd(*this, "hd44780"), m_inp_matrix(*this, "IN.%u", 0), @@ -25,9 +33,10 @@ public: // devices/pointers required_device m_maincpu; + optional_device m_dac; optional_device m_beeper; optional_device m_lcd; - optional_ioport_array<8> m_inp_matrix; // max 8 + optional_ioport_array<9> m_inp_matrix; // max 9 // misc common u16 m_inp_mux; // multiplexed keypad mask @@ -60,3 +69,9 @@ protected: virtual void machine_start() override; virtual void machine_reset() override; }; + + +INPUT_PORTS_EXTERN( novag_cb_buttons ); +INPUT_PORTS_EXTERN( novag_cb_magnets ); + +#endif // DRIVERS_NOVAGBASE_H diff --git a/src/mame/includes/ondra.h b/src/mame/includes/ondra.h index 4fc82d2d68e..979faa54010 100644 --- a/src/mame/includes/ondra.h +++ b/src/mame/includes/ondra.h @@ -39,6 +39,7 @@ public: uint8_t m_video_enable; uint8_t m_bank1_status; uint8_t m_bank2_status; + emu_timer *m_nmi_check_timer; DECLARE_READ8_MEMBER(ondra_keyboard_r); DECLARE_WRITE8_MEMBER(ondra_port_03_w); DECLARE_WRITE8_MEMBER(ondra_port_09_w); diff --git a/src/mame/includes/opwolf.h b/src/mame/includes/opwolf.h index 886518bbddb..93043860950 100644 --- a/src/mame/includes/opwolf.h +++ b/src/mame/includes/opwolf.h @@ -45,6 +45,8 @@ public: int m_opwolf_gun_xoffs; int m_opwolf_gun_yoffs; + emu_timer *m_opwolf_timer; + /* c-chip */ emu_timer *m_cchip_timer; diff --git a/src/mame/includes/orion.h b/src/mame/includes/orion.h index b025736dadb..bc2beae935f 100644 --- a/src/mame/includes/orion.h +++ b/src/mame/includes/orion.h @@ -49,27 +49,6 @@ public: , m_bank8(*this, "bank8") { } - uint8_t m_orion128_video_mode; - uint8_t m_orion128_video_page; - uint8_t m_orion128_video_width; - uint8_t m_video_mode_mask; - uint8_t m_orionpro_pseudo_color; - uint8_t m_romdisk_lsb; - uint8_t m_romdisk_msb; - uint8_t m_orion128_memory_page; - uint8_t m_orionz80_memory_page; - uint8_t m_orionz80_dispatcher; - uint8_t m_speaker_data; - uint8_t m_orionpro_ram0_segment; - uint8_t m_orionpro_ram1_segment; - uint8_t m_orionpro_ram2_segment; - uint8_t m_orionpro_page; - uint8_t m_orionpro_128_page; - uint8_t m_orionpro_rom2_segment; - uint8_t m_orionpro_dispatcher; - - required_device m_fdc; - DECLARE_READ8_MEMBER(orion128_system_r); DECLARE_WRITE8_MEMBER(orion128_system_w); DECLARE_READ8_MEMBER(orion128_romdisk_r); @@ -106,6 +85,27 @@ public: DECLARE_FLOPPY_FORMATS( orion_floppy_formats ); protected: + uint8_t m_orion128_video_mode; + uint8_t m_orion128_video_page; + uint8_t m_orion128_video_width; + uint8_t m_video_mode_mask; + uint8_t m_orionpro_pseudo_color; + uint8_t m_romdisk_lsb; + uint8_t m_romdisk_msb; + uint8_t m_orion128_memory_page; + uint8_t m_orionz80_memory_page; + uint8_t m_orionz80_dispatcher; + uint8_t m_speaker_data; + uint8_t m_orionpro_ram0_segment; + uint8_t m_orionpro_ram1_segment; + uint8_t m_orionpro_ram2_segment; + uint8_t m_orionpro_page; + uint8_t m_orionpro_128_page; + uint8_t m_orionpro_rom2_segment; + uint8_t m_orionpro_dispatcher; + + required_device m_fdc; + required_device m_ram; required_device m_fd0; required_device m_fd1; diff --git a/src/mame/includes/osborne1.h b/src/mame/includes/osborne1.h index 33da903005a..f2cc2fea32f 100644 --- a/src/mame/includes/osborne1.h +++ b/src/mame/includes/osborne1.h @@ -102,7 +102,7 @@ public: required_device m_pia0; required_device m_pia1; required_device m_acia; - required_device m_fdc; + required_device m_fdc; required_device m_ram; required_device m_ieee; required_device m_floppy0; diff --git a/src/mame/includes/othunder.h b/src/mame/includes/othunder.h index 78e285c3d76..ca08f6606c3 100644 --- a/src/mame/includes/othunder.h +++ b/src/mame/includes/othunder.h @@ -62,6 +62,7 @@ public: int m_vblank_irq; int m_ad_irq; int m_pan[4]; + emu_timer *m_ad_interrupt_timer; /* devices */ required_device m_maincpu; diff --git a/src/mame/includes/overdriv.h b/src/mame/includes/overdriv.h index 64bc0010b16..bbfba5fe516 100644 --- a/src/mame/includes/overdriv.h +++ b/src/mame/includes/overdriv.h @@ -32,6 +32,7 @@ public: int m_zoom_colorbase[2]; int m_road_colorbase[2]; int m_sprite_colorbase; + emu_timer *m_objdma_end_timer; /* misc */ uint16_t m_cpuB_ctrl; diff --git a/src/mame/includes/partner.h b/src/mame/includes/partner.h index ba204d4646b..7cf4e69a1ab 100644 --- a/src/mame/includes/partner.h +++ b/src/mame/includes/partner.h @@ -27,8 +27,6 @@ public: { } - uint8_t m_mem_page; - uint8_t m_win_mem_page; DECLARE_READ8_MEMBER(partner_floppy_r); DECLARE_WRITE8_MEMBER(partner_floppy_w); DECLARE_WRITE8_MEMBER(partner_win_memory_page_w); @@ -38,13 +36,19 @@ public: DECLARE_MACHINE_RESET(partner); I8275_DRAW_CHARACTER_MEMBER(display_pixels); + DECLARE_FLOPPY_FORMATS( floppy_formats ); + +protected: void partner_window_1(uint8_t bank_num, uint16_t offset,uint8_t *rom); void partner_window_2(uint8_t bank_num, uint16_t offset,uint8_t *rom); void partner_iomap_bank(uint8_t *rom); void partner_bank_switch(); + + uint8_t m_mem_page; + uint8_t m_win_mem_page; + required_device m_ram; - required_device m_fdc; - DECLARE_FLOPPY_FORMATS( floppy_formats ); + required_device m_fdc; }; diff --git a/src/mame/includes/pastelg.h b/src/mame/includes/pastelg.h index 12afb5d1944..9151ffb13e4 100644 --- a/src/mame/includes/pastelg.h +++ b/src/mame/includes/pastelg.h @@ -37,6 +37,7 @@ public: int m_palbank; std::unique_ptr m_videoram; int m_flipscreen_old; + emu_timer *m_blitter_timer; DECLARE_READ8_MEMBER(pastelg_sndrom_r); DECLARE_READ8_MEMBER(pastelg_irq_ack_r); diff --git a/src/mame/includes/patinhofeio.h b/src/mame/includes/patinhofeio.h index e9e5d7f586b..74d5fc91fad 100644 --- a/src/mame/includes/patinhofeio.h +++ b/src/mame/includes/patinhofeio.h @@ -1,5 +1,10 @@ // license:GPL2+ // copyright-holders:Felipe Sanches +#ifndef MAME_INCLUDES_PATINHOFEIO_H +#define MAME_INCLUDES_PATINHOFEIO_H + +#pragma once + #include "machine/teleprinter.h" class patinho_feio_state : public driver_device { @@ -12,26 +17,29 @@ public: { } DECLARE_DRIVER_INIT(patinho_feio); - DECLARE_READ16_MEMBER(rc_r); - DECLARE_READ16_MEMBER(buttons_r); DECLARE_WRITE8_MEMBER(decwriter_data_w); - DECLARE_WRITE8_MEMBER(decwriter_kbd_input); + void decwriter_kbd_input(u8 data); TIMER_CALLBACK_MEMBER(decwriter_callback); DECLARE_WRITE8_MEMBER(teletype_data_w); - DECLARE_WRITE8_MEMBER(teletype_kbd_input); + void teletype_kbd_input(u8 data); TIMER_CALLBACK_MEMBER(teletype_callback); DECLARE_DEVICE_IMAGE_LOAD_MEMBER( patinho_tape ); - void load_tape(const char* name); - void load_raw_data(const char* name, unsigned int start_address, unsigned int data_length); + void update_panel(uint8_t ACC, uint8_t opcode, uint8_t mem_data, uint16_t mem_addr, uint16_t PC, uint8_t FLAGS, uint16_t RC, uint8_t mode); + +protected: virtual void machine_start() override; + void load_tape(const char* name); + void load_raw_data(const char* name, unsigned int start_address, unsigned int data_length); + required_device m_maincpu; required_device m_decwriter; required_device m_tty; + private: uint8_t* paper_tape_data; uint32_t paper_tape_length; @@ -48,3 +56,5 @@ private: uint8_t m_prev_FLAGS; uint16_t m_prev_RC; }; + +#endif // MAME_INCLUDES_PATINHOFEIO_H diff --git a/src/mame/includes/pc1512.h b/src/mame/includes/pc1512.h index 0c36f09a66a..f44879733b5 100644 --- a/src/mame/includes/pc1512.h +++ b/src/mame/includes/pc1512.h @@ -97,7 +97,7 @@ public: required_device m_centronics; required_device m_cent_data_out; required_device m_speaker; - required_device m_kb; + required_device m_kb; required_device m_ram; required_device m_floppy0; optional_device m_floppy1; diff --git a/src/mame/includes/pcw.h b/src/mame/includes/pcw.h index 084d4d38cb8..5e44dee0c44 100644 --- a/src/mame/includes/pcw.h +++ b/src/mame/includes/pcw.h @@ -71,8 +71,10 @@ public: uint32_t m_paper_feed; // amount of paper fed through printer, by n/360 inches. One line feed is 61/360in (from the linefeed command in CP/M;s ptr menu) std::unique_ptr m_prn_output; uint8_t m_printer_p2_prev; - emu_timer* m_prn_stepper; - emu_timer* m_prn_pins; + emu_timer *m_prn_stepper; + emu_timer *m_prn_pins; + emu_timer *m_pulse_timer; + emu_timer *m_beep_setup_timer; DECLARE_READ8_MEMBER(pcw_keyboard_r); DECLARE_READ8_MEMBER(pcw_keyboard_data_r); DECLARE_READ8_MEMBER(pcw_interrupt_counter_r); @@ -93,15 +95,15 @@ public: DECLARE_WRITE8_MEMBER(mcu_printer_p1_w); DECLARE_READ8_MEMBER(mcu_printer_p2_r); DECLARE_WRITE8_MEMBER(mcu_printer_p2_w); - DECLARE_READ8_MEMBER(mcu_printer_t1_r); - DECLARE_READ8_MEMBER(mcu_printer_t0_r); + DECLARE_READ_LINE_MEMBER(mcu_printer_t1_r); + DECLARE_READ_LINE_MEMBER(mcu_printer_t0_r); DECLARE_READ8_MEMBER(mcu_kb_scan_r); DECLARE_WRITE8_MEMBER(mcu_kb_scan_w); DECLARE_READ8_MEMBER(mcu_kb_scan_high_r); DECLARE_WRITE8_MEMBER(mcu_kb_scan_high_w); DECLARE_READ8_MEMBER(mcu_kb_data_r); - DECLARE_READ8_MEMBER(mcu_kb_t1_r); - DECLARE_READ8_MEMBER(mcu_kb_t0_r); + DECLARE_READ_LINE_MEMBER(mcu_kb_t1_r); + DECLARE_READ_LINE_MEMBER(mcu_kb_t0_r); DECLARE_READ8_MEMBER(pcw9512_parallel_r); DECLARE_WRITE8_MEMBER(pcw9512_parallel_w); void mcu_transmit_serial(uint8_t bit); diff --git a/src/mame/includes/pdp1.h b/src/mame/includes/pdp1.h index 4eccc98f69f..72e4aa428a3 100644 --- a/src/mame/includes/pdp1.h +++ b/src/mame/includes/pdp1.h @@ -268,7 +268,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(pdp1); uint32_t screen_update_pdp1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_pdp1(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_pdp1); INTERRUPT_GEN_MEMBER(pdp1_interrupt); TIMER_CALLBACK_MEMBER(reader_callback); TIMER_CALLBACK_MEMBER(puncher_callback); diff --git a/src/mame/includes/pes.h b/src/mame/includes/pes.h index dcd93cda9f0..de3ba6aa129 100644 --- a/src/mame/includes/pes.h +++ b/src/mame/includes/pes.h @@ -45,7 +45,7 @@ public: DECLARE_WRITE8_MEMBER(port3_w); DECLARE_READ8_MEMBER(port1_r); DECLARE_READ8_MEMBER(port3_r); - DECLARE_WRITE8_MEMBER(pes_kbd_input); + void pes_kbd_input(u8 data); DECLARE_READ8_MEMBER(data_to_i8031); DECLARE_WRITE8_MEMBER(data_from_i8031); }; diff --git a/src/mame/includes/pgm.h b/src/mame/includes/pgm.h index d26e1693c09..22afae585db 100644 --- a/src/mame/includes/pgm.h +++ b/src/mame/includes/pgm.h @@ -101,7 +101,7 @@ public: DECLARE_MACHINE_START(pgm); DECLARE_MACHINE_RESET(pgm); uint32_t screen_update_pgm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_pgm(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_pgm); TIMER_DEVICE_CALLBACK_MEMBER(pgm_interrupt); inline void pgm_draw_pix( int xdrawpos, int pri, uint16_t* dest, uint8_t* destpri, uint16_t srcdat); diff --git a/src/mame/includes/phoenix.h b/src/mame/includes/phoenix.h index a14fbf13d85..9bfdb286e8c 100644 --- a/src/mame/includes/phoenix.h +++ b/src/mame/includes/phoenix.h @@ -1,32 +1,25 @@ // license:BSD-3-Clause // copyright-holders:Richard Davies +#ifndef MAME_INCLUDES_PHOENIX_H +#define MAME_INCLUDES_PHOENIX_H + +#pragma once + #include "audio/pleiads.h" -#include "sound/discrete.h" -#include "sound/tms36xx.h" class phoenix_state : public driver_device { public: phoenix_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) , - m_maincpu(*this, "maincpu"), - m_pleiads_custom(*this, "pleiads_custom"), - m_gfxdecode(*this, "gfxdecode") { } + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_pleiads_custom(*this, "pleiads_custom") + , m_gfxdecode(*this, "gfxdecode") + , m_fg_tilemap(nullptr) + , m_bg_tilemap(nullptr) + { + } - required_device m_maincpu; - optional_device m_pleiads_custom; - required_device m_gfxdecode; - std::unique_ptr m_videoram_pg[2]; - uint8_t m_videoram_pg_index; - uint8_t m_palette_bank; - uint8_t m_cocktail_mode; - uint8_t m_pleiads_protection_question; - uint8_t m_survival_protection_value; - int m_survival_sid_value; - tilemap_t *m_fg_tilemap; - tilemap_t *m_bg_tilemap; - uint8_t m_survival_input_latches[2]; - uint8_t m_survival_input_readc; DECLARE_WRITE8_MEMBER(phoenix_videoram_w); DECLARE_WRITE8_MEMBER(phoenix_videoreg_w); DECLARE_WRITE8_MEMBER(pleiads_videoreg_w); @@ -47,6 +40,24 @@ public: uint32_t screen_update_phoenix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_READ8_MEMBER(survival_protection_r); DECLARE_READ_LINE_MEMBER(survival_sid_callback); + +protected: + required_device m_maincpu; + optional_device m_pleiads_custom; + required_device m_gfxdecode; + + tilemap_t *m_fg_tilemap; + tilemap_t *m_bg_tilemap; + + std::unique_ptr m_videoram_pg[2]; + uint8_t m_videoram_pg_index; + uint8_t m_palette_bank; + uint8_t m_cocktail_mode; + uint8_t m_pleiads_protection_question; + uint8_t m_survival_protection_value; + int m_survival_sid_value; + uint8_t m_survival_input_latches[2]; + uint8_t m_survival_input_readc; }; @@ -63,55 +74,4 @@ public: #define VBSTART (208) #define VBEND (0) -/*----------- defined in audio/phoenix.c -----------*/ - -struct c_state -{ - int32_t counter; - int32_t level; -}; - -struct n_state -{ - int32_t counter; - int32_t polyoffs; - int32_t polybit; - int32_t lowpass_counter; - int32_t lowpass_polybit; -}; - -class phoenix_sound_device : public device_t, - public device_sound_interface -{ -public: - phoenix_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~phoenix_sound_device() {} - - DECLARE_WRITE8_MEMBER( control_a_w ); - DECLARE_WRITE8_MEMBER( control_b_w ); - -protected: - // device-level overrides - virtual void device_start() override; - - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; -private: - // internal state - struct c_state m_c24_state; - struct c_state m_c25_state; - struct n_state m_noise_state; - uint8_t m_sound_latch_a; - sound_stream * m_channel; - std::unique_ptr m_poly18; - discrete_device *m_discrete; - tms36xx_device *m_tms; - - int update_c24(int samplerate); - int update_c25(int samplerate); - int noise(int samplerate); -}; - -extern const device_type PHOENIX; - -DISCRETE_SOUND_EXTERN( phoenix ); +#endif // MAME_INCLUDES_PHOENIX_H diff --git a/src/mame/includes/pk8020.h b/src/mame/includes/pk8020.h index ffa47827dc8..c15a9c3bb60 100644 --- a/src/mame/includes/pk8020.h +++ b/src/mame/includes/pk8020.h @@ -88,7 +88,7 @@ protected: required_device m_rs232; required_device m_lan; required_device m_ram; - required_device m_wd1793; + required_device m_wd1793; required_device m_floppy0; required_device m_floppy1; required_device m_floppy2; diff --git a/src/mame/includes/plygonet.h b/src/mame/includes/plygonet.h index 2a741b265ea..ddcf4ab811f 100644 --- a/src/mame/includes/plygonet.h +++ b/src/mame/includes/plygonet.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont, Andrew Gardner +#ifndef MAME_INCLUDES_PLYGONET_H +#define MAME_INCLUDES_PLYGONET_H + +#pragma once #include "machine/eepromser.h" #include "machine/gen_latch.h" @@ -31,7 +35,7 @@ public: m_shared_ram(*this, "shared_ram"), m_dsp56k_p_mirror(*this, "dsp56k_p_mirror"), m_dsp56k_p_8000(*this, "dsp56k_p_8000") - { } + { } required_device m_maincpu; required_device m_audiocpu; @@ -110,3 +114,5 @@ public: INTERRUPT_GEN_MEMBER(polygonet_interrupt); DECLARE_WRITE_LINE_MEMBER(k054539_nmi_gen); }; + +#endif // MAME_INCLUDES_PLYGONET_H diff --git a/src/mame/includes/polepos.h b/src/mame/includes/polepos.h index a2900e4ffbd..f9b08e76656 100644 --- a/src/mame/includes/polepos.h +++ b/src/mame/includes/polepos.h @@ -5,6 +5,10 @@ Pole Position hardware *************************************************************************/ +#ifndef MAME_INCLUDES_POLEPOS_H +#define MAME_INCLUDES_POLEPOS_H + +#pragma once #include "machine/gen_latch.h" #include "sound/namco.h" @@ -161,6 +165,8 @@ private: filter2_context m_filter_engine[3]; }; -extern const device_type POLEPOS; +DECLARE_DEVICE_TYPE(POLEPOS, polepos_sound_device) DISCRETE_SOUND_EXTERN( polepos ); + +#endif // MAME_INCLUDES_POLEPOS_H diff --git a/src/mame/includes/policetr.h b/src/mame/includes/policetr.h index 3d578794db5..8b8b6c090ce 100644 --- a/src/mame/includes/policetr.h +++ b/src/mame/includes/policetr.h @@ -44,6 +44,7 @@ public: uint16_t m_dst_yoffs; uint8_t m_video_latch; uint32_t m_srcbitmap_height_mask; + emu_timer *m_irq5_gen_timer; DECLARE_WRITE32_MEMBER(control_w); DECLARE_WRITE32_MEMBER(policetr_bsmt2000_reg_w); DECLARE_WRITE32_MEMBER(policetr_bsmt2000_data_w); @@ -58,6 +59,7 @@ public: DECLARE_DRIVER_INIT(policetr); DECLARE_DRIVER_INIT(sshooter); DECLARE_DRIVER_INIT(plctr13b); + virtual void machine_start() override; virtual void video_start() override; uint32_t screen_update_policetr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(irq4_gen); diff --git a/src/mame/includes/psikyo.h b/src/mame/includes/psikyo.h index 76b993c8ec9..3dafde3cce5 100644 --- a/src/mame/includes/psikyo.h +++ b/src/mame/includes/psikyo.h @@ -100,7 +100,7 @@ public: DECLARE_VIDEO_START(psikyo); uint32_t screen_update_psikyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_psikyo_bootleg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_psikyo(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_psikyo); TIMER_CALLBACK_MEMBER(psikyo_soundlatch_callback); void psikyo_switch_banks( int tmap, int bank ); void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int trans_pen ); diff --git a/src/mame/includes/qdrmfgp.h b/src/mame/includes/qdrmfgp.h index c7e0e2ab8ac..4d2b29d0dbb 100644 --- a/src/mame/includes/qdrmfgp.h +++ b/src/mame/includes/qdrmfgp.h @@ -39,6 +39,7 @@ public: uint16_t m_control; int32_t m_gp2_irq_control; int32_t m_pal; + emu_timer *m_gp2_timer; DECLARE_WRITE16_MEMBER(gp_control_w); DECLARE_WRITE16_MEMBER(gp2_control_w); diff --git a/src/mame/includes/quasar.h b/src/mame/includes/quasar.h index 77827a677ea..972aa632e1a 100644 --- a/src/mame/includes/quasar.h +++ b/src/mame/includes/quasar.h @@ -25,7 +25,7 @@ public: DECLARE_WRITE8_MEMBER(quasar_bullet_w); DECLARE_WRITE8_MEMBER(quasar_sh_command_w); DECLARE_READ8_MEMBER(quasar_sh_command_r); - DECLARE_READ8_MEMBER(audio_t1_r); + DECLARE_READ_LINE_MEMBER(audio_t1_r); DECLARE_MACHINE_START(quasar); DECLARE_MACHINE_RESET(quasar); DECLARE_VIDEO_START(quasar); diff --git a/src/mame/includes/rbisland.h b/src/mame/includes/rbisland.h index 54900b51f01..ca521e489e2 100644 --- a/src/mame/includes/rbisland.h +++ b/src/mame/includes/rbisland.h @@ -36,6 +36,7 @@ public: std::unique_ptr m_CRAM[8]; int m_extra_version; uint8_t m_current_bank; + emu_timer *m_cchip_timer; /* devices */ required_device m_maincpu; diff --git a/src/mame/includes/redclash.h b/src/mame/includes/redclash.h index bb492439122..53acf47376b 100644 --- a/src/mame/includes/redclash.h +++ b/src/mame/includes/redclash.h @@ -41,8 +41,8 @@ public: DECLARE_PALETTE_INIT(redclash); uint32_t screen_update_sraider(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_redclash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_sraider(screen_device &screen, bool state); - void screen_eof_redclash(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_sraider); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_redclash); DECLARE_WRITE8_MEMBER( redclash_videoram_w ); DECLARE_WRITE8_MEMBER( redclash_gfxbank_w ); DECLARE_WRITE8_MEMBER( redclash_flipscreen_w ); diff --git a/src/mame/includes/rm380z.h b/src/mame/includes/rm380z.h index 41532a64ec7..b853afa34ce 100644 --- a/src/mame/includes/rm380z.h +++ b/src/mame/includes/rm380z.h @@ -7,8 +7,10 @@ Research Machines RM 380Z */ -#ifndef RM380Z_H_ -#define RM380Z_H_ +#ifndef MAME_INCLUDES_RM380Z_H +#define MAME_INCLUDES_RM380Z_H + +#pragma once #include "cpu/z80/z80.h" #include "imagedev/cassette.h" @@ -85,10 +87,12 @@ private: int m_videomode; int m_old_videomode; + emu_timer *m_static_vblank_timer; + required_device m_maincpu; optional_device m_cassette; optional_device m_messram; - optional_device m_fdc; + optional_device m_fdc; optional_device m_floppy0; optional_device m_floppy1; @@ -123,7 +127,7 @@ public: DECLARE_WRITE8_MEMBER(disk_0_control); - DECLARE_WRITE8_MEMBER( keyboard_put ); + void keyboard_put(u8 data); DECLARE_DRIVER_INIT(rm380z); DECLARE_DRIVER_INIT(rm380z34d); @@ -138,5 +142,4 @@ public: TIMER_CALLBACK_MEMBER(static_vblank_timer); }; - -#endif +#endif // MAME_INCLUDES_RM380Z_H diff --git a/src/mame/includes/rmnimbus.h b/src/mame/includes/rmnimbus.h index 7e8b8803f8c..0a31b41fb08 100644 --- a/src/mame/includes/rmnimbus.h +++ b/src/mame/includes/rmnimbus.h @@ -7,6 +7,11 @@ Phill Harvey-Smith 2009-11-29. */ +#ifndef MAME_INCLUDES_RMNIMBUS_H +#define MAME_INCLUDES_RMNIMBUS_H + +#pragma once + #include "cpu/i86/i186.h" #include "machine/z80dart.h" #include "machine/wd_fdc.h" @@ -77,7 +82,7 @@ public: required_device m_maincpu; required_device m_msm; - required_device m_scsibus; + required_device m_scsibus; required_device m_ram; required_device m_eeprom; required_device m_via; @@ -86,7 +91,7 @@ public: required_device m_scsi_data_out; required_device m_scsi_data_in; required_device m_scsi_ctrl_out; - required_device m_fdc; + required_device m_fdc; required_device m_z80sio; required_device m_screen; required_ioport m_io_config; @@ -223,3 +228,5 @@ private: void debug_command(int ref, const std::vector ¶ms); void video_debug(int ref, const std::vector ¶ms); }; + +#endif // MAME_INCLUDES_RMNIMBUS_H diff --git a/src/mame/includes/rollerg.h b/src/mame/includes/rollerg.h index ed7d4f53576..f1d65e83757 100644 --- a/src/mame/includes/rollerg.h +++ b/src/mame/includes/rollerg.h @@ -29,6 +29,7 @@ public: /* misc */ int m_readzoomroms; + emu_timer *m_nmi_timer; /* devices */ required_device m_maincpu; diff --git a/src/mame/includes/rpunch.h b/src/mame/includes/rpunch.h index c51ba148294..20b88d8887e 100644 --- a/src/mame/includes/rpunch.h +++ b/src/mame/includes/rpunch.h @@ -1,6 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles #include "sound/upd7759.h" +#include "video/vsystem_gga.h" #include "screen.h" class rpunch_state : public driver_device @@ -14,6 +15,7 @@ public: m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette"), + m_gga(*this, "gga"), m_videoram(*this, "videoram"), m_bitmapram(*this, "bitmapram"), m_spriteram(*this, "spriteram") { } @@ -24,6 +26,7 @@ public: required_device m_gfxdecode; required_device m_screen; required_device m_palette; + required_device m_gga; required_shared_ptr m_videoram; required_shared_ptr m_bitmapram; @@ -36,7 +39,6 @@ public: int m_sprite_palette; int m_sprite_xoffs; uint16_t m_videoflags; - uint8_t m_crtc_register; uint8_t m_bins; uint8_t m_gins; tilemap_t *m_background[2]; @@ -48,8 +50,8 @@ public: DECLARE_WRITE16_MEMBER(rpunch_videoram_w); DECLARE_WRITE16_MEMBER(rpunch_videoreg_w); DECLARE_WRITE16_MEMBER(rpunch_scrollreg_w); - DECLARE_WRITE16_MEMBER(rpunch_crtc_data_w); - DECLARE_WRITE16_MEMBER(rpunch_crtc_register_w); + DECLARE_WRITE8_MEMBER(rpunch_gga_w); + DECLARE_WRITE8_MEMBER(rpunch_gga_data_w); DECLARE_WRITE16_MEMBER(rpunch_ins_w); DECLARE_CUSTOM_INPUT_MEMBER(hi_bits_r); DECLARE_WRITE8_MEMBER(upd_control_w); diff --git a/src/mame/includes/rungun.h b/src/mame/includes/rungun.h index 99d92b7e77c..601f121e17d 100644 --- a/src/mame/includes/rungun.h +++ b/src/mame/includes/rungun.h @@ -7,10 +7,10 @@ *************************************************************************/ #include "sound/k054539.h" -#include "machine/gen_latch.h" #include "machine/k053252.h" #include "video/k053246_k053247_k055673.h" #include "video/k053936.h" +#include "machine/k054321.h" #include "video/konami_helper.h" #include "screen.h" @@ -30,8 +30,7 @@ public: m_palette(*this, "palette"), m_palette2(*this, "palette2"), m_screen(*this, "screen"), - m_soundlatch(*this, "soundlatch"), - m_soundlatch2(*this, "soundlatch2"), + m_k054321(*this, "k054321"), m_sysreg(*this, "sysreg") { } @@ -47,8 +46,7 @@ public: required_device m_palette; optional_device m_palette2; required_device m_screen; - required_device m_soundlatch; - required_device m_soundlatch2; + required_device m_k054321; /* memory pointers */ required_shared_ptr m_sysreg; diff --git a/src/mame/includes/samcoupe.h b/src/mame/includes/samcoupe.h index 76e873f194e..f1f3967a19c 100644 --- a/src/mame/includes/samcoupe.h +++ b/src/mame/includes/samcoupe.h @@ -162,7 +162,7 @@ public: required_device m_lpt2; required_device m_ram; required_device m_rtc; - required_device m_fdc; + required_device m_fdc; required_device m_wd1772_0; required_device m_wd1772_1; required_memory_region m_region_maincpu; diff --git a/src/mame/includes/saturn.h b/src/mame/includes/saturn.h index bb8ebf478e5..b0d96a5fed2 100644 --- a/src/mame/includes/saturn.h +++ b/src/mame/includes/saturn.h @@ -161,6 +161,8 @@ public: emu_timer *m_stv_rtc_timer; uint8_t m_port_sel,m_mux_data; uint8_t m_system_output; + uint8_t m_ioga_mode; + uint8_t m_ioga_portg; uint16_t m_serial_tx; required_device m_maincpu; diff --git a/src/mame/includes/segag80r.h b/src/mame/includes/segag80r.h index 55943ead060..c598f547798 100644 --- a/src/mame/includes/segag80r.h +++ b/src/mame/includes/segag80r.h @@ -5,6 +5,11 @@ Sega G-80 raster hardware *************************************************************************/ +#ifndef MAME_INCLUDES_SEGAG80R_H +#define MAME_INCLUDES_SEGAG80R_H + +#pragma once + #include "sound/samples.h" #include "machine/segag80.h" #include "sound/sn76496.h" @@ -114,7 +119,6 @@ public: DECLARE_WRITE8_MEMBER(spaceod_sound_w); DECLARE_READ8_MEMBER(n7751_rom_r); DECLARE_READ8_MEMBER(n7751_command_r); - DECLARE_READ8_MEMBER(n7751_t1_r); DECLARE_INPUT_CHANGED_MEMBER(service_switch); DECLARE_WRITE8_MEMBER(usb_ram_w); DECLARE_WRITE8_MEMBER(sindbadm_soundport_w); @@ -158,6 +162,7 @@ public: protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + emu_timer *m_vblank_latch_clear_timer; }; @@ -185,7 +190,7 @@ private: TIMER_CALLBACK_MEMBER( sega005_auto_timer ); }; -extern const device_type SEGA005; +DECLARE_DEVICE_TYPE(SEGA005, sega005_sound_device) MACHINE_CONFIG_EXTERN( astrob_sound_board ); @@ -200,3 +205,5 @@ MACHINE_CONFIG_EXTERN( monsterb_sound_board ); #define G80_BACKGROUND_MONSTERB 2 #define G80_BACKGROUND_PIGNEWT 3 #define G80_BACKGROUND_SINDBADM 4 + +#endif // MAME_INCLUDES_SEGAG80R_H diff --git a/src/mame/includes/segaorun.h b/src/mame/includes/segaorun.h index d4c580fb2d0..d06a1ff66bf 100644 --- a/src/mame/includes/segaorun.h +++ b/src/mame/includes/segaorun.h @@ -145,6 +145,7 @@ protected: // internal state emu_timer * m_scanline_timer; + emu_timer * m_irq2_gen_timer; uint8_t m_irq2_state; uint8_t m_adc_select; uint8_t m_vblank_irq_state; diff --git a/src/mame/includes/segas16a.h b/src/mame/includes/segas16a.h index 4c83c52941a..61cd8af83e9 100644 --- a/src/mame/includes/segas16a.h +++ b/src/mame/includes/segas16a.h @@ -74,7 +74,6 @@ public: DECLARE_READ8_MEMBER( n7751_rom_r ); DECLARE_READ8_MEMBER( n7751_p2_r ); DECLARE_WRITE8_MEMBER( n7751_p2_w ); - DECLARE_READ8_MEMBER( n7751_t1_r ); // I8751 MCU read/write handlers DECLARE_WRITE8_MEMBER( mcu_control_w ); diff --git a/src/mame/includes/segas16b.h b/src/mame/includes/segas16b.h index c69cd5c9821..39f6006a6a3 100644 --- a/src/mame/includes/segas16b.h +++ b/src/mame/includes/segas16b.h @@ -43,7 +43,7 @@ public: m_soundlatch(*this, "soundlatch"), m_workram(*this, "workram"), m_romboard(ROM_BOARD_INVALID), - m_tilemap_type(SEGAIC16_TILEMAP_16B), + m_tilemap_type(segaic16_video_device::TILEMAP_16B), m_disable_screen_blanking(false), m_i8751_initial_config(nullptr), m_atomicp_sound_divisor(0), diff --git a/src/mame/includes/segas24.h b/src/mame/includes/segas24.h index 7ef6df2dfe3..b55370912b6 100644 --- a/src/mame/includes/segas24.h +++ b/src/mame/includes/segas24.h @@ -25,12 +25,8 @@ public: , m_p1(*this, "P1") , m_p2(*this, "P2") , m_p3(*this, "P3") - , m_service(*this, "SERVICE") - , m_coinage(*this, "COINAGE") - , m_dsw(*this, "DSW") , m_paddle(*this, "PADDLE") , m_dials(*this, {"DIAL1", "DIAL2", "DIAL3", "DIAL4"}) - , m_pedals(*this, {"PEDAL1", "PEDAL2", "PEDAL3", "PEDAL4"}) , m_mj_inputs(*this, {"MJ0", "MJ1", "MJ2", "MJ3", "MJ4", "MJ5", "P1", "P2"}) { } @@ -63,9 +59,6 @@ public: uint8_t *fdc_pt; int track_size; int cur_input_line; - uint8_t hotrod_ctrl_cur; - uint8_t resetcontrol; - uint8_t prev_resetcontrol; uint8_t curbank; uint8_t mlatch; const uint8_t *mlatch_table; @@ -84,14 +77,14 @@ public: timer_device *frc_cnt_timer; uint8_t frc_mode; + bool m_cnt1; + bool m_cnt2; + uint16_t *shared_ram; - uint8_t (segas24_state::*io_r)(uint8_t port); - void (segas24_state::*io_w)(uint8_t port, uint8_t data); - uint8_t io_cnt, io_dir; - segas24_tile *vtile; - segas24_sprite *vsprite; - segas24_mixer *vmixer; + segas24_tile_device *vtile; + segas24_sprite_device *vsprite; + segas24_mixer_device *vmixer; DECLARE_WRITE_LINE_MEMBER(irq_ym); DECLARE_READ16_MEMBER( sys16_paletteram_r ); @@ -110,19 +103,17 @@ public: DECLARE_WRITE8_MEMBER( frc_w ); DECLARE_READ16_MEMBER( mlatch_r ); DECLARE_WRITE16_MEMBER( mlatch_w ); - DECLARE_READ16_MEMBER( hotrod3_ctrl_r ); - DECLARE_WRITE16_MEMBER( hotrod3_ctrl_w ); + DECLARE_READ8_MEMBER( dials_r ); DECLARE_READ16_MEMBER( iod_r ); DECLARE_WRITE16_MEMBER( iod_w ); - DECLARE_READ16_MEMBER ( sys16_io_r ); - DECLARE_WRITE16_MEMBER( sys16_io_w ); - uint8_t hotrod_io_r(uint8_t port); - uint8_t dcclub_io_r(uint8_t port); - uint8_t mahmajn_io_r(uint8_t port); + READ8_MEMBER(dcclub_p1_r); + READ8_MEMBER(dcclub_p3_r); + READ8_MEMBER(mahmajn_input_line_r); + READ8_MEMBER(mahmajn_inputs_r); - void hotrod_io_w(uint8_t port, uint8_t data); - void mahmajn_io_w(uint8_t port, uint8_t data); + WRITE8_MEMBER(mahmajn_mux_w); + WRITE8_MEMBER(hotrod_lamps_w); void fdc_init(); void reset_reset(); @@ -130,7 +121,8 @@ public: void irq_init(); void irq_timer_sync(); void irq_timer_start(int old_tmode); - void reset_control_w(uint8_t data); + WRITE_LINE_MEMBER(cnt1); + WRITE_LINE_MEMBER(cnt2); DECLARE_DRIVER_INIT(crkdown); DECLARE_DRIVER_INIT(quizmeku); DECLARE_DRIVER_INIT(qrouka); @@ -160,12 +152,8 @@ public: emu_timer *m_gground_hack_timer; required_ioport m_p1; required_ioport m_p2; - optional_ioport m_p3; - required_ioport m_service; - required_ioport m_coinage; - required_ioport m_dsw; + required_ioport m_p3; optional_ioport m_paddle; optional_ioport_array<4> m_dials; - optional_ioport_array<4> m_pedals; optional_ioport_array<8> m_mj_inputs; }; diff --git a/src/mame/includes/segas32.h b/src/mame/includes/segas32.h index 4aefeed42bd..8cbb0e04222 100644 --- a/src/mame/includes/segas32.h +++ b/src/mame/includes/segas32.h @@ -5,8 +5,11 @@ Sega System 32/Multi 32 hardware ***************************************************************************/ +#ifndef MAME_INCLUDES_SEGAS32_H +#define MAME_INCLUDES_SEGAS32_H + +#pragma once -#include "machine/eepromser.h" #include "sound/multipcm.h" #include "machine/s32comm.h" #include "screen.h" @@ -18,25 +21,16 @@ class segas32_state : public device_t { public: segas32_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - segas32_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); required_shared_ptr m_z80_shared_ram; - optional_shared_ptr m_ga2_dpram; optional_shared_ptr m_system32_workram; required_shared_ptr m_system32_videoram; required_shared_ptr m_system32_spriteram; optional_shared_ptr_array m_system32_paletteram; - optional_ioport_array<8> m_ports_a; - optional_ioport_array<8> m_ports_b; - optional_ioport_array<8> m_analog_ports; - optional_ioport_array<4> m_extra_ports; - optional_ioport_array<6> m_track_ports; - required_device m_maincpu; required_device m_soundcpu; optional_device m_multipcm; - required_device m_eeprom; required_device m_gfxdecode; required_device m_screen; required_device m_palette; @@ -74,12 +68,6 @@ public: uint8_t m_sound_irq_input; uint8_t m_sound_dummy_value; uint16_t m_sound_bank; - uint8_t m_misc_io_data[2][0x10]; - read16_delegate m_custom_io_r[2]; - write16_delegate m_custom_io_w[2]; - uint8_t m_analog_bank; - uint8_t m_analog_value[4]; - uint8_t m_sonic_last[6]; sys32_output_callback m_sw1_output; sys32_output_callback m_sw2_output; sys32_output_callback m_sw3_output; @@ -100,8 +88,8 @@ public: typedef void (segas32_state::*prot_vblank_func)(); prot_vblank_func m_system32_prot_vblank; int m_print_count; - DECLARE_WRITE16_MEMBER(ga2_dpram_w); - DECLARE_READ16_MEMBER(ga2_dpram_r); + emu_timer *m_vblank_end_int_timer; + emu_timer *m_update_sprites_timer; DECLARE_WRITE16_MEMBER(sonic_level_load_protection); DECLARE_READ16_MEMBER(brival_protection_r); DECLARE_WRITE16_MEMBER(brival_protection_w); @@ -141,24 +129,13 @@ public: DECLARE_WRITE16_MEMBER(interrupt_control_16_w); DECLARE_READ32_MEMBER(interrupt_control_32_r); DECLARE_WRITE32_MEMBER(interrupt_control_32_w); - DECLARE_READ16_MEMBER(io_chip_r); - DECLARE_WRITE16_MEMBER(io_chip_w); - DECLARE_READ32_MEMBER(io_chip_0_r); - DECLARE_WRITE32_MEMBER(io_chip_0_w); - DECLARE_READ32_MEMBER(io_chip_1_r); - DECLARE_WRITE32_MEMBER(io_chip_1_w); - DECLARE_READ16_MEMBER(io_expansion_r); - DECLARE_WRITE16_MEMBER(io_expansion_w); - DECLARE_READ32_MEMBER(io_expansion_0_r); - DECLARE_WRITE32_MEMBER(io_expansion_0_w); - DECLARE_READ32_MEMBER(io_expansion_1_r); - DECLARE_WRITE32_MEMBER(io_expansion_1_w); - DECLARE_READ16_MEMBER(analog_custom_io_r); - DECLARE_WRITE16_MEMBER(analog_custom_io_w); - DECLARE_READ16_MEMBER(extra_custom_io_r); - DECLARE_WRITE16_MEMBER(orunners_custom_io_w); - DECLARE_READ16_MEMBER(sonic_custom_io_r); - DECLARE_WRITE16_MEMBER(sonic_custom_io_w); + DECLARE_WRITE8_MEMBER(misc_output_0_w); + DECLARE_WRITE8_MEMBER(misc_output_1_w); + DECLARE_WRITE8_MEMBER(sw2_output_0_w); + DECLARE_WRITE8_MEMBER(sw2_output_1_w); + DECLARE_WRITE8_MEMBER(tilebank_external_w); + DECLARE_WRITE_LINE_MEMBER(display_enable_0_w); + DECLARE_WRITE_LINE_MEMBER(display_enable_1_w); DECLARE_WRITE16_MEMBER(random_number_16_w); DECLARE_READ16_MEMBER(random_number_16_r); DECLARE_WRITE32_MEMBER(random_number_32_w); @@ -209,10 +186,8 @@ public: void update_irq_state(); void signal_v60_irq(int which); void int_control_w(address_space &space, int offset, uint8_t data); - uint16_t common_io_chip_r(address_space &space, int which, offs_t offset, uint16_t mem_mask); - void common_io_chip_w(address_space &space, int which, offs_t offset, uint16_t data, uint16_t mem_mask); void update_sound_irq_state(); - void segas32_common_init(read16_delegate custom_r, write16_delegate custom_w); + void segas32_common_init(); void radm_sw1_output( int which, uint16_t data ); void radm_sw2_output( int which, uint16_t data ); void radr_sw2_output( int which, uint16_t data ); @@ -267,6 +242,8 @@ public: void init_titlef(void); protected: + segas32_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual void device_reset() override; }; @@ -278,8 +255,47 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; -// virtual void device_start(); -// virtual void device_reset(); +// virtual void device_start() override; +// virtual void device_reset() override; +}; + +class segas32_analog_state : public segas32_state +{ +public: + segas32_analog_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; +// virtual void device_start() override; +// virtual void device_reset() override; +}; + +class segas32_trackball_state : public segas32_state +{ +public: + segas32_trackball_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_READ8_MEMBER(sonic_custom_io_r); + DECLARE_WRITE8_MEMBER(sonic_custom_io_w); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; + +private: + required_ioport_array<6> m_track_ports; + uint8_t m_sonic_last[6]; +}; + +class segas32_4player_state : public segas32_state +{ +public: + segas32_4player_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; +// virtual void device_start() override; +// virtual void device_reset() override; }; class segas32_v25_state : public segas32_state @@ -290,7 +306,7 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; -// virtual void device_reset(); +// virtual void device_reset() override; }; class segas32_upd7725_state : public segas32_state @@ -301,7 +317,21 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; -// virtual void device_reset(); +// virtual void device_reset() override; +}; + +class segas32_cd_state : public segas32_state +{ +public: + segas32_cd_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER(lamps1_w); + DECLARE_WRITE8_MEMBER(lamps2_w); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; +// virtual void device_reset() override; }; class sega_multi32_state : public segas32_state @@ -312,10 +342,42 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; -// virtual void device_reset(); +// virtual void device_reset() override; +}; + +class sega_multi32_analog_state : public segas32_state +{ +public: + sega_multi32_analog_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + ioport_value in2_analog_read(); + ioport_value in3_analog_read(); + DECLARE_WRITE8_MEMBER(analog_bank_w); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; +// virtual void device_reset() override; + +private: + optional_ioport_array<8> m_analog_ports; + uint8_t m_analog_bank; +}; + +class sega_multi32_6player_state : public segas32_state +{ +public: + sega_multi32_6player_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; +// virtual void device_reset() override; }; /*----------- defined in machine/segas32.c -----------*/ extern const uint8_t ga2_v25_opcode_table[]; -extern const device_type SEGA_S32_PCB; +DECLARE_DEVICE_TYPE(SEGA_S32_PCB, segas32_state) + +#endif // MAME_INCLUDES_SEGAS32_H diff --git a/src/mame/includes/segaxbd.h b/src/mame/includes/segaxbd.h index 88487f8a1f0..7ee29f0d974 100644 --- a/src/mame/includes/segaxbd.h +++ b/src/mame/includes/segaxbd.h @@ -5,16 +5,22 @@ Sega X-Board hardware ***************************************************************************/ +#ifndef MAME_INCLUDES_SEGAXBD_H +#define MAME_INCLUDES_SEGAXBD_H + +#pragma once + +#include "machine/segaic16.h" +#include "video/segaic16.h" +#include "video/segaic16_road.h" +#include "video/sega16sp.h" #include "cpu/m68000/m68000.h" #include "cpu/mcs51/mcs51.h" #include "cpu/z80/z80.h" #include "machine/gen_latch.h" +#include "machine/mb3773.h" #include "machine/watchdog.h" -#include "machine/segaic16.h" -#include "video/segaic16.h" -#include "video/segaic16_road.h" -#include "video/sega16sp.h" #include "video/resnet.h" #include "screen.h" @@ -26,50 +32,48 @@ class segaxbd_state : public device_t public: // construction/destruction segaxbd_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - segaxbd_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); // compare/timer chip callbacks void timer_ack_callback(); void sound_data_w(uint8_t data); // main CPU read/write handlers - DECLARE_READ16_MEMBER( adc_r ); - DECLARE_WRITE16_MEMBER( adc_w ); - uint16_t iochip_r(int which, int port, int inputval); - DECLARE_READ16_MEMBER( iochip_0_r ); - DECLARE_WRITE16_MEMBER( iochip_0_w ); - DECLARE_READ16_MEMBER( iochip_1_r ); - DECLARE_WRITE16_MEMBER( iochip_1_w ); - DECLARE_WRITE16_MEMBER( iocontrol_w ); + DECLARE_READ16_MEMBER(adc_r); + DECLARE_WRITE16_MEMBER(adc_w); + DECLARE_WRITE8_MEMBER(pc_0_w); + DECLARE_WRITE8_MEMBER(pd_0_w); + DECLARE_WRITE16_MEMBER(iocontrol_w); // game-specific main CPU read/write handlers - DECLARE_WRITE16_MEMBER( loffire_sync0_w ); - DECLARE_READ16_MEMBER( rascot_excs_r ); - DECLARE_WRITE16_MEMBER( rascot_excs_w ); - DECLARE_READ16_MEMBER( smgp_excs_r ); - DECLARE_WRITE16_MEMBER( smgp_excs_w ); + DECLARE_WRITE16_MEMBER(loffire_sync0_w); + DECLARE_READ16_MEMBER(rascot_excs_r); + DECLARE_WRITE16_MEMBER(rascot_excs_w); + DECLARE_READ16_MEMBER(smgp_excs_r); + DECLARE_WRITE16_MEMBER(smgp_excs_w); - // sound Z80 CPU read/write handlers - DECLARE_READ8_MEMBER( sound_data_r ); + // custom I/O + DECLARE_READ8_MEMBER(aburner2_motor_r); + DECLARE_WRITE8_MEMBER(aburner2_motor_w); + DECLARE_READ8_MEMBER(smgp_motor_r); + DECLARE_WRITE8_MEMBER(smgp_motor_w); + DECLARE_READ8_MEMBER(lastsurv_port_r); + DECLARE_WRITE8_MEMBER(lastsurv_muxer_w); + // sound Z80 CPU read/write handlers + DECLARE_READ8_MEMBER(sound_data_r); // video updates uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); // palette helpers - DECLARE_WRITE16_MEMBER( paletteram_w ); + DECLARE_WRITE16_MEMBER(paletteram_w); void install_aburner2(void); - void install_lastsurv(void); void install_loffire(void); void install_smgp(void); void install_gprider(void); protected: - // internal types - typedef delegate ioread_delegate; - typedef delegate iowrite_delegate; - // timer IDs enum { @@ -78,6 +82,8 @@ protected: TID_SOUND_WRITE }; + segaxbd_state(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device overrides // virtual void machine_reset(); virtual void video_start(); @@ -86,15 +92,7 @@ protected: // internal helpers void update_main_irqs(); DECLARE_WRITE_LINE_MEMBER(m68k_reset_callback); - - // custom I/O void generic_iochip0_lamps_w(uint8_t data); - uint8_t aburner2_iochip0_motor_r(uint8_t data); - void aburner2_iochip0_motor_w(uint8_t data); - uint8_t smgp_iochip0_motor_r(uint8_t data); - void smgp_iochip0_motor_w(uint8_t data); - uint8_t lastsurv_iochip1_port_r(uint8_t data); - void lastsurv_iochip0_muxer_w(uint8_t data); // devices public: @@ -104,7 +102,7 @@ protected: required_device m_soundcpu; optional_device m_soundcpu2; optional_device m_mcu; - required_device m_watchdog; + required_device m_watchdog; required_device m_cmptimer_1; required_device m_sprites; required_device m_segaic16vid; @@ -114,15 +112,13 @@ protected: // configuration bool m_adc_reverse[8]; - ioread_delegate m_iochip_custom_io_r[2][8]; - iowrite_delegate m_iochip_custom_io_w[2][8]; uint8_t m_road_priority; // internal state emu_timer * m_scanline_timer; uint8_t m_timer_irq_state; uint8_t m_vblank_irq_state; - uint8_t m_iochip_regs[2][8]; + uint8_t m_pc_0; // game-specific state uint16_t * m_loffire_sync; @@ -140,6 +136,7 @@ protected: uint8_t m_palette_hilight[32]; // RGB translations for hilighted pixels required_device m_screen; required_device m_palette; + required_ioport m_io0_porta; optional_ioport_array<8> m_adc_ports; optional_ioport_array<4> m_mux_ports; @@ -156,8 +153,6 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; -// virtual void device_start(); -// virtual void device_reset(); }; @@ -167,6 +162,15 @@ class segaxbd_fd1094_state : public segaxbd_state public: segaxbd_fd1094_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: + virtual machine_config_constructor device_mconfig_additions() const override; +}; + +class segaxbd_aburner2_state : public segaxbd_state +{ +public: + segaxbd_aburner2_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + protected: virtual machine_config_constructor device_mconfig_additions() const override; // virtual void device_start(); @@ -180,8 +184,6 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; -// virtual void device_start(); -// virtual void device_reset(); }; class segaxbd_lastsurv_state : public segaxbd_state @@ -191,8 +193,6 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; -// virtual void device_start(); -// virtual void device_reset(); }; @@ -203,8 +203,6 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; -// virtual void device_start(); -// virtual void device_reset(); }; @@ -215,8 +213,6 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; -// virtual void device_start(); -// virtual void device_reset(); }; @@ -227,6 +223,6 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; -// virtual void device_start(); -// virtual void device_reset(); }; + +#endif // MAME_INCLUDES_SEGAXBD_H diff --git a/src/mame/includes/segaybd.h b/src/mame/includes/segaybd.h index 9c4e32ba716..388caf8ac67 100644 --- a/src/mame/includes/segaybd.h +++ b/src/mame/includes/segaybd.h @@ -9,7 +9,7 @@ #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "machine/gen_latch.h" -#include "machine/watchdog.h" +#include "machine/mb3773.h" #include "machine/segaic16.h" #include "video/segaic16.h" #include "video/sega16sp.h" @@ -33,36 +33,36 @@ public: , m_ysprites(*this, "ysprites") , m_segaic16vid(*this, "segaic16vid") , m_soundlatch(*this, "soundlatch") - , m_digital_ports(*this, { { "P1", "GENERAL", "LIMITSW", "PORTD", "PORTE", "DSW", "COINAGE", "PORTH" } }) , m_adc_ports(*this, "ADC.%u", 0) , m_pdrift_bank(0) , m_scanline_timer(nullptr) , m_irq2_scanline(0) , m_timer_irq_state(0) , m_vblank_irq_state(0) + , m_misc_io_data(0) , m_tmp_bitmap(512, 512) { - memset(m_analog_data, 0, sizeof(m_analog_data)); - memset(m_misc_io_data, 0, sizeof(m_misc_io_data)); } // main CPU read/write handlers - DECLARE_READ16_MEMBER( analog_r ); - DECLARE_WRITE16_MEMBER( analog_w ); - DECLARE_READ16_MEMBER( io_chip_r ); - DECLARE_WRITE16_MEMBER( io_chip_w ); - DECLARE_WRITE16_MEMBER( sound_data_w ); + DECLARE_WRITE8_MEMBER(output1_w); + DECLARE_WRITE8_MEMBER(misc_output_w); + DECLARE_WRITE8_MEMBER(output2_w); + DECLARE_WRITE16_MEMBER(sound_data_w); // sound Z80 CPU read/write handlers - DECLARE_READ8_MEMBER( sound_data_r ); + DECLARE_READ8_MEMBER(sound_data_r); // linked cabinet specific handlers - DECLARE_WRITE_LINE_MEMBER( mb8421_intl ); - DECLARE_WRITE_LINE_MEMBER( mb8421_intr ); - DECLARE_READ16_MEMBER( link_r ); - DECLARE_READ16_MEMBER( link2_r ); - DECLARE_WRITE16_MEMBER( link2_w ); -// DECLARE_READ8_MEMBER( link_portc0_r ); + DECLARE_WRITE_LINE_MEMBER(mb8421_intl); + DECLARE_WRITE_LINE_MEMBER(mb8421_intr); + DECLARE_READ16_MEMBER(link_r); + DECLARE_READ16_MEMBER(link2_r); + DECLARE_WRITE16_MEMBER(link2_w); +// DECLARE_READ8_MEMBER(link_portc0_r); + + // input helpers + ioport_value analog_mux(); // game-specific output handlers void gforce2_output_cb1(uint16_t data); @@ -110,14 +110,13 @@ protected: required_device m_suby; required_device m_soundcpu; optional_device m_linkcpu; - required_device m_watchdog; + required_device m_watchdog; required_device m_bsprites; required_device m_ysprites; required_device m_segaic16vid; required_device m_soundlatch; // input ports - required_ioport_array<8> m_digital_ports; optional_ioport_array<6> m_adc_ports; // configuration @@ -127,10 +126,9 @@ protected: // internal state uint16_t m_pdrift_bank; emu_timer * m_scanline_timer; - uint8_t m_analog_data[4]; int m_irq2_scanline; uint8_t m_timer_irq_state; uint8_t m_vblank_irq_state; - uint8_t m_misc_io_data[0x10]; + uint8_t m_misc_io_data; bitmap_ind16 m_tmp_bitmap; }; diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h index e3e9a88e199..611b81a2252 100644 --- a/src/mame/includes/seta.h +++ b/src/mame/includes/seta.h @@ -246,8 +246,8 @@ public: uint32_t screen_update_setaroul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_inttoote(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_seta_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_seta_buffer_sprites(screen_device &screen, bool state); - void screen_eof_setaroul(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_seta_buffer_sprites); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_setaroul); void uPD71054_update_timer(device_t *cpu, int no); INTERRUPT_GEN_MEMBER(wrofaero_interrupt); TIMER_CALLBACK_MEMBER(uPD71054_timer_callback); diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h index a734c279e8b..4598d41e043 100644 --- a/src/mame/includes/seta2.h +++ b/src/mame/includes/seta2.h @@ -115,7 +115,7 @@ public: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t staraudi_screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); void draw_rgbram(bitmap_ind16 &bitmap); diff --git a/src/mame/includes/shadfrce.h b/src/mame/includes/shadfrce.h index e8e20ef46e3..4d95658e050 100644 --- a/src/mame/includes/shadfrce.h +++ b/src/mame/includes/shadfrce.h @@ -87,6 +87,6 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(scanline); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ); }; diff --git a/src/mame/includes/slapshot.h b/src/mame/includes/slapshot.h index 6488a4feea0..5e6738b2a65 100644 --- a/src/mame/includes/slapshot.h +++ b/src/mame/includes/slapshot.h @@ -83,7 +83,7 @@ public: virtual void video_start() override; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_taito_no_buffer(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_taito_no_buffer); void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks, int y_offset ); void taito_handle_sprite_buffering( ); void taito_update_sprites_active_area( ); diff --git a/src/mame/includes/slapstic.h b/src/mame/includes/slapstic.h index f3fdbb9a48c..4e57f5e8d40 100644 --- a/src/mame/includes/slapstic.h +++ b/src/mame/includes/slapstic.h @@ -11,32 +11,22 @@ *************************************************************************/ -#pragma once +#ifndef MAME_INCLUDES_SLAPSTIC_H +#define MAME_INCLUDES_SLAPSTIC_H -#ifndef __SLAPSTIC__ -#define __SLAPSTIC__ +#pragma once #include "cpu/m6800/m6800.h" #include "cpu/m68000/m68000.h" -extern const device_type SLAPSTIC; +DECLARE_DEVICE_TYPE(SLAPSTIC, atari_slapstic_device) #define MCFG_SLAPSTIC_ADD(_tag, _chip) \ MCFG_DEVICE_ADD(_tag, SLAPSTIC, 0) \ MCFG_SLAPSTIC_NUM(_chip) -/************************************* - * - * Debugging - * - *************************************/ - -#define LOG_SLAPSTIC (0) - - - /************************************* * * Structure of slapstic params @@ -179,16 +169,6 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_validity_check(validity_checker &valid) const override; - - -private: - - - - }; - - - -#endif +#endif // MAME_INCLUDES_SLAPSTIC_H diff --git a/src/mame/includes/sms.h b/src/mame/includes/sms.h index 99c82563f7e..ca063f4bf1f 100644 --- a/src/mame/includes/sms.h +++ b/src/mame/includes/sms.h @@ -223,7 +223,7 @@ public: uint32_t screen_update_sms1(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_gamegear(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); void screen_gg_sms_mode_scaling(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_vblank_sms1(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_sms1); protected: uint8_t read_bus(address_space &space, unsigned int bank, uint16_t base_addr, uint16_t offset); diff --git a/src/mame/includes/snk6502.h b/src/mame/includes/snk6502.h index 955a5b4902d..3538845b0d5 100644 --- a/src/mame/includes/snk6502.h +++ b/src/mame/includes/snk6502.h @@ -5,10 +5,11 @@ rokola hardware *************************************************************************/ +#ifndef MAME_INCLUDES_SNK6502_H +#define MAME_INCLUDES_SNK6502_H + +#pragma once -#include "sound/discrete.h" -#include "sound/samples.h" -#include "sound/sn76477.h" class snk6502_sound_device; @@ -53,6 +54,7 @@ public: DECLARE_WRITE8_MEMBER(scrollx_w); DECLARE_WRITE8_MEMBER(scrolly_w); DECLARE_WRITE8_MEMBER(flipscreen_w); + DECLARE_WRITE8_MEMBER(fantasy_flipscreen_w); DECLARE_WRITE8_MEMBER(satansat_b002_w); DECLARE_WRITE8_MEMBER(satansat_backcolor_w); @@ -86,75 +88,4 @@ public: void postload(); }; - -/*----------- defined in audio/snk6502.c -----------*/ - -#define CHANNELS 3 - -struct TONE -{ - int mute; - int offset; - int base; - int mask; - int32_t sample_rate; - int32_t sample_step; - int32_t sample_cur; - int16_t form[16]; -}; - -class snk6502_sound_device : public device_t, - public device_sound_interface -{ -public: - snk6502_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~snk6502_sound_device() {} - - DECLARE_WRITE8_MEMBER( sasuke_sound_w ); - DECLARE_WRITE8_MEMBER( satansat_sound_w ); - DECLARE_WRITE8_MEMBER( vanguard_sound_w ); - DECLARE_WRITE8_MEMBER( vanguard_speech_w ); - DECLARE_WRITE8_MEMBER( fantasy_sound_w ); - DECLARE_WRITE8_MEMBER( fantasy_speech_w ); - - void set_music_clock(double clock_time); - void set_music_freq(int freq); - int music0_playing(); - -protected: - // device-level overrides - virtual void device_start() override; - - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - -private: - // internal state - TONE m_tone_channels[CHANNELS]; - int32_t m_tone_clock_expire; - int32_t m_tone_clock; - sound_stream * m_tone_stream; - - optional_device m_samples; - uint8_t *m_ROM; - int m_Sound0StopOnRollover; - uint8_t m_LastPort1; - - int m_hd38880_cmd; - uint32_t m_hd38880_addr; - int m_hd38880_data_bytes; - double m_hd38880_speed; - - inline void validate_tone_channel(int channel); - void sasuke_build_waveform(int mask); - void satansat_build_waveform(int mask); - void build_waveform(int channel, int mask); - void speech_w(uint8_t data, const uint16_t *table, int start); -}; - -extern const device_type SNK6502; - -DISCRETE_SOUND_EXTERN( fantasy ); -extern const char *const sasuke_sample_names[]; -extern const char *const vanguard_sample_names[]; -extern const char *const fantasy_sample_names[]; +#endif // MAME_INCLUDES_SNK6502_H diff --git a/src/mame/includes/snowbros.h b/src/mame/includes/snowbros.h index c5b7f7efff3..228c92a1ced 100644 --- a/src/mame/includes/snowbros.h +++ b/src/mame/includes/snowbros.h @@ -71,7 +71,7 @@ public: uint32_t screen_update_twinadv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_snowbro3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_wintbob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_snowbros(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_snowbros); TIMER_DEVICE_CALLBACK_MEMBER(snowbros_irq); TIMER_DEVICE_CALLBACK_MEMBER(snowbros3_irq); diff --git a/src/mame/includes/softbox.h b/src/mame/includes/softbox.h index 8bce05cfd80..606e9e9e1a1 100644 --- a/src/mame/includes/softbox.h +++ b/src/mame/includes/softbox.h @@ -36,7 +36,7 @@ public: required_device m_maincpu; required_device m_dbrg; required_device m_ieee; - required_device m_hdc; + required_device m_hdc; virtual void machine_start() override; virtual void device_reset_after_children() override; diff --git a/src/mame/includes/spacefb.h b/src/mame/includes/spacefb.h index ccf5a7d29b9..38b35979924 100644 --- a/src/mame/includes/spacefb.h +++ b/src/mame/includes/spacefb.h @@ -58,8 +58,8 @@ public: DECLARE_WRITE8_MEMBER(port_1_w); DECLARE_WRITE8_MEMBER(port_2_w); DECLARE_READ8_MEMBER(audio_p2_r); - DECLARE_READ8_MEMBER(audio_t0_r); - DECLARE_READ8_MEMBER(audio_t1_r); + DECLARE_READ_LINE_MEMBER(audio_t0_r); + DECLARE_READ_LINE_MEMBER(audio_t1_r); virtual void machine_start() override; virtual void machine_reset() override; diff --git a/src/mame/includes/spcforce.h b/src/mame/includes/spcforce.h index f74a480d4c1..550322457fa 100644 --- a/src/mame/includes/spcforce.h +++ b/src/mame/includes/spcforce.h @@ -43,7 +43,7 @@ public: DECLARE_WRITE_LINE_MEMBER(write_sn1_ready); DECLARE_WRITE_LINE_MEMBER(write_sn2_ready); DECLARE_WRITE_LINE_MEMBER(write_sn3_ready); - DECLARE_READ8_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t0_r); DECLARE_WRITE8_MEMBER(soundtrigger_w); DECLARE_WRITE8_MEMBER(irq_mask_w); DECLARE_WRITE8_MEMBER(flip_screen_w); diff --git a/src/mame/includes/special.h b/src/mame/includes/special.h index 0e40d43dcdf..80ea784e24d 100644 --- a/src/mame/includes/special.h +++ b/src/mame/includes/special.h @@ -6,8 +6,10 @@ * ****************************************************************************/ -#ifndef SPECIAL_H_ -#define SPECIAL_H_ +#ifndef MAME_INCLUDES_SPECIAL_H +#define MAME_INCLUDES_SPECIAL_H + +#pragma once #include "cpu/z80/z80.h" #include "cpu/i8085/i8085.h" @@ -117,7 +119,7 @@ private: uint8_t m_RC_register; required_device m_maincpu; optional_device m_ppi; - optional_device m_fdc; + optional_device m_fdc; optional_device m_dac; optional_device m_pit; optional_device m_cassette; @@ -148,4 +150,4 @@ private: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; -#endif /* SPECIAL_H_ */ +#endif // MAME_INCLUDES_SPECIAL_H diff --git a/src/mame/includes/spectrum.h b/src/mame/includes/spectrum.h index 11672822f03..e787e23baab 100644 --- a/src/mame/includes/spectrum.h +++ b/src/mame/includes/spectrum.h @@ -158,8 +158,8 @@ public: uint32_t screen_update_spectrum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_tc2048(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_ts2068(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_spectrum(screen_device &screen, bool state); - void screen_eof_timex(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_spectrum); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_timex); INTERRUPT_GEN_MEMBER(spec_interrupt); DECLARE_DEVICE_IMAGE_LOAD_MEMBER( spectrum_cart ); diff --git a/src/mame/includes/sprint2.h b/src/mame/includes/sprint2.h index 28a46765168..79a61f3b824 100644 --- a/src/mame/includes/sprint2.h +++ b/src/mame/includes/sprint2.h @@ -78,7 +78,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(sprint2); uint32_t screen_update_sprint2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_sprint2(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_sprint2); INTERRUPT_GEN_MEMBER(sprint2); uint8_t collision_check(rectangle& rect); inline int get_sprite_code(uint8_t *video_ram, int n); diff --git a/src/mame/includes/sprint4.h b/src/mame/includes/sprint4.h index 41080c35236..3144a335489 100644 --- a/src/mame/includes/sprint4.h +++ b/src/mame/includes/sprint4.h @@ -15,15 +15,23 @@ public: sprint4_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), m_maincpu(*this, "maincpu"), m_watchdog(*this, "watchdog"), m_discrete(*this, "discrete"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_videoram(*this, "videoram") { } + + required_device m_maincpu; + required_device m_watchdog; + required_device m_discrete; + required_device m_gfxdecode; + required_device m_screen; + required_device m_palette; required_shared_ptr m_videoram; + int m_da_latch; int m_steer_FF1[4]; int m_steer_FF2[4]; @@ -32,38 +40,37 @@ public: int m_collision[4]; tilemap_t* m_playfield; bitmap_ind16 m_helper; - DECLARE_READ8_MEMBER(sprint4_wram_r); - DECLARE_READ8_MEMBER(sprint4_analog_r); - DECLARE_READ8_MEMBER(sprint4_coin_r); - DECLARE_READ8_MEMBER(sprint4_collision_r); - DECLARE_READ8_MEMBER(sprint4_options_r); - DECLARE_WRITE8_MEMBER(sprint4_wram_w); - DECLARE_WRITE8_MEMBER(sprint4_collision_reset_w); - DECLARE_WRITE8_MEMBER(sprint4_da_latch_w); - DECLARE_WRITE8_MEMBER(sprint4_lamp_w); - DECLARE_WRITE8_MEMBER(sprint4_video_ram_w); + emu_timer *m_nmi_timer; + + DECLARE_READ8_MEMBER(wram_r); + DECLARE_READ8_MEMBER(analog_r); + DECLARE_READ8_MEMBER(coin_r); + DECLARE_READ8_MEMBER(collision_r); + DECLARE_READ8_MEMBER(options_r); + DECLARE_WRITE8_MEMBER(wram_w); + DECLARE_WRITE8_MEMBER(collision_reset_w); + DECLARE_WRITE8_MEMBER(da_latch_w); + DECLARE_WRITE8_MEMBER(lamp_w); + DECLARE_WRITE8_MEMBER(video_ram_w); DECLARE_CUSTOM_INPUT_MEMBER(get_lever); DECLARE_CUSTOM_INPUT_MEMBER(get_wheel); DECLARE_CUSTOM_INPUT_MEMBER(get_collision); - DECLARE_WRITE8_MEMBER(sprint4_screech_1_w); - DECLARE_WRITE8_MEMBER(sprint4_screech_2_w); - DECLARE_WRITE8_MEMBER(sprint4_screech_3_w); - DECLARE_WRITE8_MEMBER(sprint4_screech_4_w); - DECLARE_WRITE8_MEMBER(sprint4_bang_w); - DECLARE_WRITE8_MEMBER(sprint4_attract_w); - TILE_GET_INFO_MEMBER(sprint4_tile_info); + DECLARE_WRITE8_MEMBER(screech_1_w); + DECLARE_WRITE8_MEMBER(screech_2_w); + DECLARE_WRITE8_MEMBER(screech_3_w); + DECLARE_WRITE8_MEMBER(screech_4_w); + DECLARE_WRITE8_MEMBER(bang_w); + DECLARE_WRITE8_MEMBER(attract_w); + + virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; DECLARE_PALETTE_INIT(sprint4); - uint32_t screen_update_sprint4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_sprint4(screen_device &screen, bool state); + + TILE_GET_INFO_MEMBER(tile_info); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); TIMER_CALLBACK_MEMBER(nmi_callback); - required_device m_maincpu; - required_device m_watchdog; - required_device m_discrete; - required_device m_gfxdecode; - required_device m_screen; - required_device m_palette; protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; diff --git a/src/mame/includes/sprint8.h b/src/mame/includes/sprint8.h index 437e39a9743..3a279090c1a 100644 --- a/src/mame/includes/sprint8.h +++ b/src/mame/includes/sprint8.h @@ -8,57 +8,65 @@ class sprint8_state : public driver_device public: sprint8_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), + m_palette(*this, "palette"), + m_discrete(*this, "discrete"), m_video_ram(*this, "video_ram"), m_pos_h_ram(*this, "pos_h_ram"), m_pos_v_ram(*this, "pos_v_ram"), m_pos_d_ram(*this, "pos_d_ram"), - m_team(*this, "team"), - m_discrete(*this, "discrete"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_team(*this, "team") { } + + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_screen; + required_device m_palette; + required_device m_discrete; - int m_steer_dir[8]; - int m_steer_flag[8]; - int m_collision_reset; - int m_collision_index; - uint8_t m_dial[8]; required_shared_ptr m_video_ram; required_shared_ptr m_pos_h_ram; required_shared_ptr m_pos_v_ram; required_shared_ptr m_pos_d_ram; required_shared_ptr m_team; - required_device m_discrete; + + int m_steer_dir[8]; + int m_steer_flag[8]; + int m_collision_reset; + int m_collision_index; + uint8_t m_dial[8]; tilemap_t* m_tilemap1; tilemap_t* m_tilemap2; bitmap_ind16 m_helper1; bitmap_ind16 m_helper2; - DECLARE_READ8_MEMBER(sprint8_collision_r); - DECLARE_READ8_MEMBER(sprint8_input_r); - DECLARE_WRITE8_MEMBER(sprint8_lockout_w); - DECLARE_WRITE8_MEMBER(sprint8_int_reset_w); - DECLARE_WRITE8_MEMBER(sprint8_video_ram_w); - TILE_GET_INFO_MEMBER(get_tile_info1); - TILE_GET_INFO_MEMBER(get_tile_info2); + emu_timer *m_collision_timer; + + DECLARE_READ8_MEMBER(collision_r); + DECLARE_READ8_MEMBER(input_r); + DECLARE_WRITE8_MEMBER(lockout_w); + DECLARE_WRITE8_MEMBER(int_reset_w); + DECLARE_WRITE8_MEMBER(video_ram_w); + DECLARE_WRITE8_MEMBER(crash_w); + DECLARE_WRITE8_MEMBER(screech_w); + DECLARE_WRITE8_MEMBER(attract_w); + DECLARE_WRITE8_MEMBER(motor_w); + + virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; DECLARE_PALETTE_INIT(sprint8); - uint32_t screen_update_sprint8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_sprint8(screen_device &screen, bool state); - TIMER_CALLBACK_MEMBER(sprint8_collision_callback); + + TILE_GET_INFO_MEMBER(get_tile_info1); + TILE_GET_INFO_MEMBER(get_tile_info2); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); + TIMER_CALLBACK_MEMBER(collision_callback); TIMER_DEVICE_CALLBACK_MEMBER(input_callback); - DECLARE_WRITE8_MEMBER(sprint8_crash_w); - DECLARE_WRITE8_MEMBER(sprint8_screech_w); - DECLARE_WRITE8_MEMBER(sprint8_attract_w); - DECLARE_WRITE8_MEMBER(sprint8_motor_w); + void set_pens(); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); - void sprint8_set_collision(int n); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_screen; - required_device m_palette; + void set_collision(int n); }; /*----------- defined in audio/sprint8.c -----------*/ diff --git a/src/mame/includes/sspeedr.h b/src/mame/includes/sspeedr.h index af08e28c3fe..5376e2705dc 100644 --- a/src/mame/includes/sspeedr.h +++ b/src/mame/includes/sspeedr.h @@ -41,7 +41,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(sspeedr); uint32_t screen_update_sspeedr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_sspeedr(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_sspeedr); void draw_track(bitmap_ind16 &bitmap); void draw_drones(bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_driver(bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/mame/includes/ssrj.h b/src/mame/includes/ssrj.h index 19d2cf14753..426fb63fca5 100644 --- a/src/mame/includes/ssrj.h +++ b/src/mame/includes/ssrj.h @@ -45,6 +45,6 @@ public: DECLARE_PALETTE_INIT(ssrj); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); void draw_objects(bitmap_ind16 &bitmap, const rectangle &cliprect ); }; diff --git a/src/mame/includes/starshp1.h b/src/mame/includes/starshp1.h index d3ec471c6e8..fc4e239271d 100644 --- a/src/mame/includes/starshp1.h +++ b/src/mame/includes/starshp1.h @@ -87,7 +87,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(starshp1); uint32_t screen_update_starshp1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_starshp1(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_starshp1); INTERRUPT_GEN_MEMBER(starshp1_interrupt); void set_pens(); void draw_starfield(bitmap_ind16 &bitmap); diff --git a/src/mame/includes/stfight.h b/src/mame/includes/stfight.h index 7197093f469..2cf4167e905 100644 --- a/src/mame/includes/stfight.h +++ b/src/mame/includes/stfight.h @@ -88,4 +88,6 @@ protected: bool m_vck2; bool m_adpcm_reset; uint16_t m_adpcm_data_offs; + + emu_timer *m_int1_timer; }; diff --git a/src/mame/includes/stv.h b/src/mame/includes/stv.h index 96525ff87b8..7a45f717aee 100644 --- a/src/mame/includes/stv.h +++ b/src/mame/includes/stv.h @@ -3,6 +3,7 @@ #include "includes/saturn.h" #include "audio/rax.h" +#include "machine/ticket.h" class stv_state : public saturn_state { @@ -11,7 +12,8 @@ public: : saturn_state(mconfig, type, tag), m_rax(*this, "rax"), m_cryptdevice(*this, "315_5881"), - m_5838crypt(*this, "315_5838") + m_5838crypt(*this, "315_5838"), + m_hopper(*this, "hopper") { } @@ -60,6 +62,7 @@ public: DECLARE_DRIVER_INIT(znpwfv); DECLARE_DRIVER_INIT(othellos); DECLARE_DRIVER_INIT(mausuke); + DECLARE_DRIVER_INIT(hopper); DECLARE_READ8_MEMBER(stv_ioga_r); DECLARE_WRITE8_MEMBER(stv_ioga_w); @@ -77,6 +80,8 @@ public: DECLARE_WRITE32_MEMBER(magzun_ioga_w32); DECLARE_READ32_MEMBER(magzun_hef_hack_r); DECLARE_READ32_MEMBER(magzun_rx_hack_r); + DECLARE_WRITE8_MEMBER(hop_ioga_w); + DECLARE_WRITE32_MEMBER(hop_ioga_w32); image_init_result load_cart(device_image_interface &image, generic_slot_device *slot); DECLARE_DEVICE_IMAGE_LOAD_MEMBER( stv_cart1 ) { return load_cart(image, m_cart1); } @@ -107,6 +112,7 @@ public: optional_device m_cryptdevice; optional_device m_5838crypt; + optional_device m_hopper; uint16_t crypt_read_callback(uint32_t addr); uint16_t crypt_read_callback_ch1(uint32_t addr); uint16_t crypt_read_callback_ch2(uint32_t addr); diff --git a/src/mame/includes/super6.h b/src/mame/includes/super6.h index 0ec8fc2729c..5470b1567bc 100644 --- a/src/mame/includes/super6.h +++ b/src/mame/includes/super6.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder -#pragma once +#ifndef MAME_INCLUDES_SUPER6_H +#define MAME_INCLUDES_SUPER6_H -#ifndef __SUPER6__ -#define __SUPER6__ +#pragma once #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" @@ -45,22 +45,6 @@ public: m_j7(*this, "J7") { } - required_device m_maincpu; - required_device m_ctc; - required_device m_dart; - required_device m_dma; - required_device m_pio; - required_device m_fdc; - required_device m_brg; - required_device m_ram; - required_device m_floppy0; - required_device m_floppy1; - required_region_ptr m_rom; - required_ioport m_j7; - - virtual void machine_start() override; - virtual void machine_reset() override; - DECLARE_READ8_MEMBER( fdc_r ); DECLARE_WRITE8_MEMBER( fdc_w ); DECLARE_WRITE8_MEMBER( s100_w ); @@ -71,17 +55,35 @@ public: DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w ); DECLARE_WRITE_LINE_MEMBER( fdc_drq_w ); + TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick); + DECLARE_READ8_MEMBER(memory_read_byte); + DECLARE_WRITE8_MEMBER(memory_write_byte); + DECLARE_READ8_MEMBER(io_read_byte); + DECLARE_WRITE8_MEMBER(io_write_byte); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + void bankswitch(); + required_device m_maincpu; + required_device m_ctc; + required_device m_dart; + required_device m_dma; + required_device m_pio; + required_device m_fdc; + required_device m_brg; + required_device m_ram; + required_device m_floppy0; + required_device m_floppy1; + required_region_ptr m_rom; + required_ioport m_j7; + // memory state uint8_t m_s100; uint8_t m_bank0; uint8_t m_bank1; - TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick); - DECLARE_READ8_MEMBER(memory_read_byte); - DECLARE_WRITE8_MEMBER(memory_write_byte); - DECLARE_READ8_MEMBER(io_read_byte); - DECLARE_WRITE8_MEMBER(io_write_byte); }; -#endif +#endif // MAME_INCLUDES_SUPER6_H diff --git a/src/mame/includes/super80.h b/src/mame/includes/super80.h index 6e29dc76e80..66402fae33d 100644 --- a/src/mame/includes/super80.h +++ b/src/mame/includes/super80.h @@ -87,7 +87,7 @@ public: uint32_t screen_update_super80d(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_super80e(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_super80m(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_super80m(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_super80m); TIMER_CALLBACK_MEMBER(super80_reset); TIMER_DEVICE_CALLBACK_MEMBER(timer_h); TIMER_DEVICE_CALLBACK_MEMBER(timer_k); @@ -126,7 +126,7 @@ private: required_ioport_array<8> m_io_keyboard; optional_device m_crtc; optional_device m_dma; - optional_device m_fdc; + optional_device m_fdc; optional_device m_floppy0; optional_device m_floppy1; }; diff --git a/src/mame/includes/suprslam.h b/src/mame/includes/suprslam.h index 7089fbecf59..ffb95542905 100644 --- a/src/mame/includes/suprslam.h +++ b/src/mame/includes/suprslam.h @@ -21,7 +21,6 @@ public: m_bg_videoram(*this, "bg_videoram"), m_sp_videoram(*this, "sp_videoram"), m_spriteram(*this, "spriteram"), - m_spr_ctrl(*this, "spr_ctrl"), m_screen_vregs(*this, "screen_vregs"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), @@ -36,7 +35,6 @@ public: required_shared_ptr m_bg_videoram; required_shared_ptr m_sp_videoram; required_shared_ptr m_spriteram; - required_shared_ptr m_spr_ctrl; required_shared_ptr m_screen_vregs; /* video-related */ @@ -45,6 +43,7 @@ public: uint16_t m_screen_bank; uint16_t m_bg_bank; uint32_t suprslam_tile_callback( uint32_t code ); + uint8_t m_spr_ctrl; /* misc */ int m_pending_command; @@ -64,6 +63,7 @@ public: DECLARE_WRITE16_MEMBER(suprslam_screen_videoram_w); DECLARE_WRITE16_MEMBER(suprslam_bg_videoram_w); DECLARE_WRITE16_MEMBER(suprslam_bank_w); + DECLARE_WRITE8_MEMBER(spr_ctrl_w); TILE_GET_INFO_MEMBER(get_suprslam_tile_info); TILE_GET_INFO_MEMBER(get_suprslam_bg_tile_info); virtual void machine_start() override; diff --git a/src/mame/includes/swtpc09.h b/src/mame/includes/swtpc09.h index 7e43cf2ea35..af1317d7834 100644 --- a/src/mame/includes/swtpc09.h +++ b/src/mame/includes/swtpc09.h @@ -6,8 +6,10 @@ ****************************************************************************/ -#ifndef swtpc09_H_ -#define swtpc09_H_ +#ifndef MAME_INCLUDES_SWTPC09_H +#define MAME_INCLUDES_SWTPC09_H + +#pragma once #include "cpu/m6809/m6809.h" #include "video/generic.h" @@ -29,38 +31,24 @@ class swtpc09_state : public driver_device { public: swtpc09_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_pia(*this, "pia"), - m_ptm(*this, "ptm"), - m_acia(*this, "acia"), - m_fdc(*this, "fdc"), - m_floppy0(*this, "fdc:0"), - m_floppy1(*this, "fdc:1"), - m_floppy2(*this, "fdc:2"), - m_floppy3(*this, "fdc:3"), - m_via(*this, "via"), - m_piaide(*this, "piaide"), - m_harddisk(*this, "harddisk"), - m_ide(*this, "ide") + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_pia(*this, "pia") + , m_ptm(*this, "ptm") + , m_acia(*this, "acia") + , m_fdc(*this, "fdc") + , m_floppy0(*this, "fdc:0") + , m_floppy1(*this, "fdc:1") + , m_floppy2(*this, "fdc:2") + , m_floppy3(*this, "fdc:3") + , m_via(*this, "via") + , m_piaide(*this, "piaide") + , m_harddisk(*this, "harddisk") + , m_ide(*this, "ide") { } DECLARE_FLOPPY_FORMATS(floppy_formats); - required_device m_maincpu; - required_device m_pia; - required_device m_ptm; - required_device m_acia; - required_device m_fdc; - required_device m_floppy0; - required_device m_floppy1; - required_device m_floppy2; - required_device m_floppy3; - optional_device m_via; - optional_device m_piaide; - optional_device m_harddisk; - optional_device m_ide; - DECLARE_READ8_MEMBER(pia0_a_r); DECLARE_READ8_MEMBER(pia0_ca1_r); DECLARE_WRITE_LINE_MEMBER( pia0_irq_a ); @@ -104,9 +92,27 @@ public: DECLARE_DRIVER_INIT( swtpc09u ); DECLARE_DRIVER_INIT( swtpc09d3 ); + DECLARE_READ8_MEMBER ( m6844_r ); + DECLARE_WRITE8_MEMBER ( m6844_w ); + +protected: void swtpc09_fdc_dma_transfer(); void swtpc09_irq_handler(uint8_t peripheral, uint8_t state); + required_device m_maincpu; + required_device m_pia; + required_device m_ptm; + required_device m_acia; + required_device m_fdc; + required_device m_floppy0; + required_device m_floppy1; + required_device m_floppy2; + required_device m_floppy3; + optional_device m_via; + optional_device m_piaide; + optional_device m_harddisk; + optional_device m_ide; + uint8_t m_term_data; // terminal keyboard value uint8_t m_pia_counter; // this is the counter on pia porta uint8_t m_fdc_dma_address_reg; // dmf2 or dmf3 dma extended address reg @@ -119,11 +125,10 @@ public: uint8_t m_active_interrupt; uint8_t m_interrupt; - // TODO: move this in proper device /* channel_data structure holds info about each 6844 DMA channel */ - typedef struct m6844_channel_data + struct m6844_channel_data { int active; int address; @@ -131,16 +136,13 @@ public: uint8_t control; int start_address; int start_counter; - } m6844_channel_data; + }; /* 6844 description */ m6844_channel_data m_m6844_channel[4]; uint8_t m_m6844_priority; uint8_t m_m6844_interrupt; uint8_t m_m6844_chain; - DECLARE_READ8_MEMBER ( m6844_r ); - DECLARE_WRITE8_MEMBER ( m6844_w ); - }; -#endif /* swtpc09_H_ */ +#endif // MAME_INCLUDES_SWTPC09_H diff --git a/src/mame/includes/taito_b.h b/src/mame/includes/taito_b.h index e8ac3c333a7..bd60fc87f96 100644 --- a/src/mame/includes/taito_b.h +++ b/src/mame/includes/taito_b.h @@ -111,7 +111,7 @@ public: DECLARE_VIDEO_START(taitob_core); uint32_t screen_update_taitob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_realpunc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_taitob(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_taitob); INTERRUPT_GEN_MEMBER(rastansaga2_interrupt); INTERRUPT_GEN_MEMBER(crimec_interrupt); INTERRUPT_GEN_MEMBER(hitice_interrupt); diff --git a/src/mame/includes/taito_f2.h b/src/mame/includes/taito_f2.h index fa6f34f6638..2c4cf2ff844 100644 --- a/src/mame/includes/taito_f2.h +++ b/src/mame/includes/taito_f2.h @@ -169,11 +169,11 @@ public: uint32_t screen_update_taitof2_deadconx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_taitof2_yesnoj(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_taitof2_metalb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_taitof2_no_buffer(screen_device &screen, bool state); - void screen_eof_taitof2_partial_buffer_delayed(screen_device &screen, bool state); - void screen_eof_taitof2_partial_buffer_delayed_thundfox(screen_device &screen, bool state); - void screen_eof_taitof2_full_buffer_delayed(screen_device &screen, bool state); - void screen_eof_taitof2_partial_buffer_delayed_qzchikyu(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_no_buffer); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_partial_buffer_delayed); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_partial_buffer_delayed_thundfox); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_full_buffer_delayed); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_partial_buffer_delayed_qzchikyu); INTERRUPT_GEN_MEMBER(taitof2_interrupt); void reset_driveout_sound_region(); void taitof2_core_vh_start (int sprite_type, int hide, int flip_hide ); diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h index ee8faf04cf3..681a6551f6d 100644 --- a/src/mame/includes/taito_f3.h +++ b/src/mame/includes/taito_f3.h @@ -93,6 +93,7 @@ public: std::unique_ptr m_f3_pf_data; std::unique_ptr m_f3_pivot_ram; + emu_timer *m_interrupt3_timer; uint32_t m_coin_word[2]; int m_f3_game; tilemap_t *m_pf1_tilemap; @@ -307,11 +308,11 @@ public: TILE_GET_INFO_MEMBER(get_tile_info8); TILE_GET_INFO_MEMBER(get_tile_info_vram); TILE_GET_INFO_MEMBER(get_tile_info_pixel); - DECLARE_MACHINE_START(f3); + virtual void machine_start() override; DECLARE_MACHINE_RESET(f3); DECLARE_VIDEO_START(f3); uint32_t screen_update_f3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void screen_eof_f3(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_f3); INTERRUPT_GEN_MEMBER(f3_interrupt2); protected: diff --git a/src/mame/includes/taito_l.h b/src/mame/includes/taito_l.h index e3f8f425a10..97b644bdc0a 100644 --- a/src/mame/includes/taito_l.h +++ b/src/mame/includes/taito_l.h @@ -73,7 +73,7 @@ public: DECLARE_VIDEO_START(taito_l); DECLARE_MACHINE_RESET(taito_l); u32 screen_update_taitol(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_taitol(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_taitol); TIMER_DEVICE_CALLBACK_MEMBER(vbl_interrupt); IRQ_CALLBACK_MEMBER(irq_callback); void taitol_chardef14_m(int offset); diff --git a/src/mame/includes/tandy2k.h b/src/mame/includes/tandy2k.h index a5affb130a2..573aa33a75f 100644 --- a/src/mame/includes/tandy2k.h +++ b/src/mame/includes/tandy2k.h @@ -108,10 +108,10 @@ public: required_device m_fdc; required_device m_pic0; required_device m_pic1; - required_device m_vpac; - required_device m_drb0; - required_device m_drb1; - required_device m_vac; + required_device m_vpac; + required_device m_drb0; + required_device m_drb1; + required_device m_vac; required_device m_palette; required_device m_timer_vidldsh; required_device m_centronics; diff --git a/src/mame/includes/tank8.h b/src/mame/includes/tank8.h index 16deea7df78..0bf7b290b04 100644 --- a/src/mame/includes/tank8.h +++ b/src/mame/includes/tank8.h @@ -85,7 +85,7 @@ public: DECLARE_PALETTE_INIT(tank8); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); void set_pens(); inline int get_x_pos(int n); inline int get_y_pos(int n); diff --git a/src/mame/includes/taotaido.h b/src/mame/includes/taotaido.h index b254f757bab..b65b2748004 100644 --- a/src/mame/includes/taotaido.h +++ b/src/mame/includes/taotaido.h @@ -42,7 +42,8 @@ public: std::unique_ptr m_spriteram2_older; DECLARE_READ16_MEMBER(pending_command_r); - DECLARE_WRITE16_MEMBER(sound_command_w); + DECLARE_WRITE8_MEMBER(sound_command_w); + DECLARE_WRITE8_MEMBER(unknown_output_w); DECLARE_WRITE8_MEMBER(pending_command_clear_w); DECLARE_WRITE8_MEMBER(sh_bankswitch_w); DECLARE_WRITE16_MEMBER(sprite_character_bank_select_w); @@ -56,7 +57,7 @@ public: virtual void video_start() override; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); uint32_t tile_callback( uint32_t code ); }; diff --git a/src/mame/includes/tatsumi.h b/src/mame/includes/tatsumi.h index 9bd6d882ea0..bb8c25ef874 100644 --- a/src/mame/includes/tatsumi.h +++ b/src/mame/includes/tatsumi.h @@ -3,6 +3,7 @@ #include "sound/okim6295.h" #include "cpu/m68000/m68000.h" +#include "machine/cxd1095.h" #include "machine/gen_latch.h" class tatsumi_state : public driver_device @@ -18,6 +19,7 @@ public: m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), m_soundlatch(*this, "soundlatch"), + m_io(*this, {"io1", "io2"}), m_videoram(*this, "videoram"), m_cyclwarr_cpua_ram(*this, "cw_cpua_ram"), m_cyclwarr_cpub_ram(*this, "cw_cpub_ram"), @@ -45,6 +47,7 @@ public: required_device m_gfxdecode; required_device m_palette; optional_device m_soundlatch; + optional_device_array m_io; optional_shared_ptr m_videoram; optional_shared_ptr m_cyclwarr_cpua_ram; @@ -74,7 +77,7 @@ public: uint8_t *m_rom_clut1; uint16_t m_control_word; uint16_t m_apache3_rotate_ctrl[12]; - uint16_t m_last_control; + uint8_t m_last_control; uint8_t m_apache3_adc; int m_apache3_rot_idx; tilemap_t *m_tx_layer; @@ -96,6 +99,8 @@ public: DECLARE_WRITE16_MEMBER(bigfight_a20000_w); DECLARE_WRITE16_MEMBER(bigfight_a40000_w); DECLARE_WRITE16_MEMBER(bigfight_a60000_w); + DECLARE_WRITE16_MEMBER(io1_byte_smear_w); + DECLARE_WRITE16_MEMBER(io2_byte_smear_w); DECLARE_WRITE16_MEMBER(cyclwarr_sound_w); DECLARE_READ16_MEMBER(apache3_bank_r); DECLARE_WRITE16_MEMBER(apache3_bank_w); @@ -112,8 +117,7 @@ public: DECLARE_WRITE16_MEMBER(roundup5_control_w); DECLARE_WRITE16_MEMBER(roundup5_d0000_w); DECLARE_WRITE16_MEMBER(roundup5_e0000_w); - DECLARE_READ16_MEMBER(cyclwarr_control_r); - DECLARE_WRITE16_MEMBER(cyclwarr_control_w); + DECLARE_WRITE8_MEMBER(cyclwarr_control_w); DECLARE_READ16_MEMBER(tatsumi_v30_68000_r); DECLARE_WRITE16_MEMBER(tatsumi_v30_68000_w); DECLARE_WRITE16_MEMBER(tatsumi_sprite_control_w); diff --git a/src/mame/includes/tceptor.h b/src/mame/includes/tceptor.h index c2b5b92deea..ce4c1f81ef6 100644 --- a/src/mame/includes/tceptor.h +++ b/src/mame/includes/tceptor.h @@ -79,7 +79,7 @@ public: uint32_t screen_update_tceptor_2d(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_tceptor_3d_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_tceptor_3d_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_tceptor(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_tceptor); INTERRUPT_GEN_MEMBER(m6809_vb_interrupt); INTERRUPT_GEN_MEMBER(m68k_vb_interrupt); INTERRUPT_GEN_MEMBER(mcu_vb_interrupt); diff --git a/src/mame/includes/tehkanwc.h b/src/mame/includes/tehkanwc.h index a4d5b229dae..4c5baed9f20 100644 --- a/src/mame/includes/tehkanwc.h +++ b/src/mame/includes/tehkanwc.h @@ -50,6 +50,7 @@ public: uint8_t m_led1; tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; + emu_timer *m_reset_timer; DECLARE_WRITE8_MEMBER(sub_cpu_halt_w); DECLARE_READ8_MEMBER(track_0_r); diff --git a/src/mame/includes/tetrisp2.h b/src/mame/includes/tetrisp2.h index de7a53b891f..b89c85721cc 100644 --- a/src/mame/includes/tetrisp2.h +++ b/src/mame/includes/tetrisp2.h @@ -69,6 +69,8 @@ public: uint16_t m_rockn_soundvolume; emu_timer *m_rockn_timer_l4; emu_timer *m_rockn_timer_sub_l4; + emu_timer *m_rockn_timer_l1; + emu_timer *m_rockn_timer_sub_l1; int m_bank_lo; int m_bank_hi; uint16_t m_rocknms_main2sub; diff --git a/src/mame/includes/thomson.h b/src/mame/includes/thomson.h index 5587c47835d..b8e0b4d1bfa 100644 --- a/src/mame/includes/thomson.h +++ b/src/mame/includes/thomson.h @@ -8,8 +8,10 @@ **********************************************************************/ -#ifndef _THOMSON_H_ -#define _THOMSON_H_ +#ifndef MAME_INCLUDES_THOMSON_H +#define MAME_INCLUDES_THOMSON_H + +#pragma once #include "cpu/m6809/m6809.h" #include "formats/thom_cas.h" @@ -313,7 +315,7 @@ public: void overlay_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); void overlayhalf_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); void overlay3_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); - void thom_vblank( screen_device &screen, bool state ); + DECLARE_WRITE_LINE_MEMBER(thom_vblank); DECLARE_VIDEO_START( thom ); DECLARE_READ8_MEMBER( to7_5p14_r ); @@ -697,9 +699,9 @@ private: int m_dsr; }; -extern const device_type TO7_IO_LINE; +DECLARE_DEVICE_TYPE(TO7_IO_LINE, to7_io_line_device) #define MCFG_TO7_IO_LINE_ADD(_tag) \ MCFG_DEVICE_ADD((_tag), TO7_IO_LINE, 0) -#endif /* _THOMSON_H_ */ +#endif // MAME_INCLUDES_THOMSON_H diff --git a/src/mame/includes/thunderx.h b/src/mame/includes/thunderx.h index e9ee6df35c1..a667b3cf27a 100644 --- a/src/mame/includes/thunderx.h +++ b/src/mame/includes/thunderx.h @@ -48,6 +48,7 @@ public: /* misc */ int m_priority; uint8_t m_1f98_latch; + emu_timer *m_thunderx_firq_timer; DECLARE_WRITE8_MEMBER(scontra_bankswitch_w); DECLARE_WRITE8_MEMBER(thunderx_videobank_w); @@ -65,6 +66,7 @@ public: virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; + DECLARE_DRIVER_INIT(thunderx); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(vblank_interrupt); diff --git a/src/mame/includes/ti85.h b/src/mame/includes/ti85.h index 7f07288b66c..1d1e71e5387 100644 --- a/src/mame/includes/ti85.h +++ b/src/mame/includes/ti85.h @@ -112,6 +112,9 @@ public: int m_ti_number_of_frames; std::unique_ptr m_frames; uint8_t * m_bios; + emu_timer *m_ti85_timer; + emu_timer *m_ti83_1st_timer; + emu_timer *m_ti83_2nd_timer; DECLARE_READ8_MEMBER(ti85_port_0000_r); DECLARE_READ8_MEMBER(ti8x_keypad_r); DECLARE_READ8_MEMBER(ti85_port_0006_r); @@ -219,7 +222,6 @@ public: void ti85_setup_snapshot(uint8_t *data); void ti86_setup_snapshot(uint8_t *data); DECLARE_SNAPSHOT_LOAD_MEMBER(ti8x); - DECLARE_DIRECT_UPDATE_MEMBER(ti83p_direct_update_handler); ti83pse_timer m_ctimer[3]; diff --git a/src/mame/includes/tiamc1.h b/src/mame/includes/tiamc1.h index 44ae26dafea..7586e4a5134 100644 --- a/src/mame/includes/tiamc1.h +++ b/src/mame/includes/tiamc1.h @@ -66,80 +66,4 @@ private: void update_bg_palette(); }; - -/*----------- defined in audio/tiamc1.c -----------*/ - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -struct timer8253chan -{ - timer8253chan() : - count(0), - cnval(0), - bcdMode(0), - cntMode(0), - valMode(0), - gate(0), - output(0), - loadCnt(0), - enable(0) - {} - - uint16_t count; - uint16_t cnval; - uint8_t bcdMode; - uint8_t cntMode; - uint8_t valMode; - uint8_t gate; - uint8_t output; - uint8_t loadCnt; - uint8_t enable; -}; - -struct timer8253struct -{ - struct timer8253chan channel[3]; -}; - - -// ======================> tiamc1_sound_device - -class tiamc1_sound_device : public device_t, - public device_sound_interface -{ -public: - tiamc1_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tiamc1_sound_device() { } - -protected: - // device-level overrides - virtual void device_start() override; - - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; - -public: - DECLARE_WRITE8_MEMBER( tiamc1_timer0_w ); - DECLARE_WRITE8_MEMBER( tiamc1_timer1_w ); - DECLARE_WRITE8_MEMBER( tiamc1_timer1_gate_w ); - -private: - void timer8253_reset(struct timer8253struct *t); - void timer8253_tick(struct timer8253struct *t,int chn); - void timer8253_wr(struct timer8253struct *t, int reg, uint8_t val); - char timer8253_get_output(struct timer8253struct *t, int chn); - void timer8253_set_gate(struct timer8253struct *t, int chn, uint8_t gate); - -private: - sound_stream *m_channel; - int m_timer1_divider; - - timer8253struct m_timer0; - timer8253struct m_timer1; -}; - -extern const device_type TIAMC1; - #endif // MAME_INCLUDES_TIAMC1_H diff --git a/src/mame/includes/tiki100.h b/src/mame/includes/tiki100.h index 3cd378c4140..299bd033d86 100644 --- a/src/mame/includes/tiki100.h +++ b/src/mame/includes/tiki100.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder -#pragma once +#ifndef MAME_INCLUDES_TIKI100_H +#define MAME_INCLUDES_TIKI100_H -#ifndef __TIKI100__ -#define __TIKI100__ +#pragma once #include "bus/centronics/ctronics.h" #include "bus/rs232/rs232.h" @@ -65,28 +65,6 @@ public: m_vire(1) { } - required_device m_maincpu; - required_device m_ctc; - required_device m_fdc; - required_device m_pio; - required_device m_dart; - required_device m_psg; - required_device m_ram; - required_device m_floppy0; - required_device m_floppy1; - required_device m_cassette; - required_device m_centronics; - required_device m_exp; - required_memory_region m_rom; - required_memory_region m_prom; - optional_shared_ptr m_video_ram; - required_ioport_array<12> m_y; - required_ioport m_st_io; - required_device m_palette; - - virtual void machine_start() override; - virtual void machine_reset() override; - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); DECLARE_READ8_MEMBER( mrq_r ); @@ -117,6 +95,29 @@ public: DECLARE_WRITE_LINE_MEMBER( busrq_w ); +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + + required_device m_maincpu; + required_device m_ctc; + required_device m_fdc; + required_device m_pio; + required_device m_dart; + required_device m_psg; + required_device m_ram; + required_device m_floppy0; + required_device m_floppy1; + required_device m_cassette; + required_device m_centronics; + required_device m_exp; + required_memory_region m_rom; + required_memory_region m_prom; + optional_shared_ptr m_video_ram; + required_ioport_array<12> m_y; + required_ioport m_st_io; + required_device m_palette; + enum { ROM0 = 0x01, @@ -146,4 +147,4 @@ public: bool m_st; }; -#endif +#endif // MAME_INCLUDES_TIKI100_H diff --git a/src/mame/includes/tmnt.h b/src/mame/includes/tmnt.h index fed21e7685c..8205bffd82e 100644 --- a/src/mame/includes/tmnt.h +++ b/src/mame/includes/tmnt.h @@ -162,7 +162,7 @@ public: uint32_t screen_update_glfgreat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_tmnt2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_thndrx2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_blswhstl(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_blswhstl); INTERRUPT_GEN_MEMBER(tmnt_interrupt); INTERRUPT_GEN_MEMBER(punkshot_interrupt); INTERRUPT_GEN_MEMBER(lgtnfght_interrupt); diff --git a/src/mame/includes/tnzs.h b/src/mame/includes/tnzs.h index 673ae0d6951..5032f8f2855 100644 --- a/src/mame/includes/tnzs.h +++ b/src/mame/includes/tnzs.h @@ -37,7 +37,7 @@ public: DECLARE_WRITE8_MEMBER(ramrom_bankswitch_w); uint32_t screen_update_tnzs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_tnzs(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_tnzs); DECLARE_READ8_MEMBER(analog_r); // TODO: Move into a subclass diff --git a/src/mame/includes/toaplan1.h b/src/mame/includes/toaplan1.h index dca3fa03cdc..b45ed1633c4 100644 --- a/src/mame/includes/toaplan1.h +++ b/src/mame/includes/toaplan1.h @@ -141,8 +141,8 @@ public: DECLARE_MACHINE_RESET(vimana); uint32_t screen_update_toaplan1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_toaplan1(screen_device &screen, bool state); - void screen_eof_samesame(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_toaplan1); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_samesame); INTERRUPT_GEN_MEMBER(toaplan1_interrupt); void demonwld_restore_dsp(); @@ -179,7 +179,7 @@ public: DECLARE_READ16_MEMBER(rallybik_tileram16_r); DECLARE_VIDEO_START(rallybik); uint32_t screen_update_rallybik(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_rallybik(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_rallybik); required_device m_spritegen; }; diff --git a/src/mame/includes/toaplan2.h b/src/mame/includes/toaplan2.h index 1cc9ec190fa..51cf2e9923b 100644 --- a/src/mame/includes/toaplan2.h +++ b/src/mame/includes/toaplan2.h @@ -87,6 +87,8 @@ public: bitmap_ind8 m_custom_priority_bitmap; bitmap_ind16 m_secondary_render_bitmap; + emu_timer * m_raise_irq_timer; + tilemap_t *m_tx_tilemap; /* Tilemap for extra-text-layer */ DECLARE_READ16_MEMBER(video_count_r); DECLARE_WRITE8_MEMBER(toaplan2_coin_w); @@ -141,7 +143,7 @@ public: DECLARE_DRIVER_INIT(batrider); DECLARE_DRIVER_INIT(enmadaio); TILE_GET_INFO_MEMBER(get_text_tile_info); - DECLARE_MACHINE_START(toaplan2); + virtual void machine_start() override; DECLARE_MACHINE_RESET(toaplan2); DECLARE_VIDEO_START(toaplan2); DECLARE_MACHINE_RESET(ghox); @@ -163,7 +165,7 @@ public: uint32_t screen_update_batsugun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_truxton2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_bootleg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_toaplan2(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_toaplan2); INTERRUPT_GEN_MEMBER(toaplan2_vblank_irq1); INTERRUPT_GEN_MEMBER(toaplan2_vblank_irq2); INTERRUPT_GEN_MEMBER(toaplan2_vblank_irq4); diff --git a/src/mame/includes/tranz330.h b/src/mame/includes/tranz330.h index fa60cd09b85..146eb533c03 100644 --- a/src/mame/includes/tranz330.h +++ b/src/mame/includes/tranz330.h @@ -59,7 +59,7 @@ private: required_device m_dart; required_device m_pio; required_device m_rtc; - required_device m_vfd; + required_device m_vfd; required_device m_rs232; required_device m_speaker; required_ioport_array<4> m_keypad; diff --git a/src/mame/includes/triplhnt.h b/src/mame/includes/triplhnt.h index 4057ab3452f..325c5fedd4d 100644 --- a/src/mame/includes/triplhnt.h +++ b/src/mame/includes/triplhnt.h @@ -30,57 +30,64 @@ public: triplhnt_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_playfield_ram(*this, "playfield_ram"), - m_vpos_ram(*this, "vpos_ram"), - m_hpos_ram(*this, "hpos_ram"), - m_orga_ram(*this, "orga_ram"), - m_code_ram(*this, "code_ram"), m_maincpu(*this, "maincpu"), m_watchdog(*this, "watchdog"), m_discrete(*this, "discrete"), m_samples(*this, "samples"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_playfield_ram(*this, "playfield_ram"), + m_vpos_ram(*this, "vpos_ram"), + m_hpos_ram(*this, "hpos_ram"), + m_orga_ram(*this, "orga_ram"), + m_code_ram(*this, "code_ram") { } + + required_device m_maincpu; + required_device m_watchdog; + required_device m_discrete; + required_device m_samples; + required_device m_gfxdecode; + required_device m_screen; + required_device m_palette; - uint8_t m_cmos[16]; - uint8_t m_da_latch; - uint8_t m_misc_flags; - uint8_t m_cmos_latch; - uint8_t m_hit_code; required_shared_ptr m_playfield_ram; required_shared_ptr m_vpos_ram; required_shared_ptr m_hpos_ram; required_shared_ptr m_orga_ram; required_shared_ptr m_code_ram; + + uint8_t m_cmos[16]; + uint8_t m_da_latch; + uint8_t m_misc_flags; + uint8_t m_cmos_latch; + uint8_t m_hit_code; int m_sprite_zoom; int m_sprite_bank; bitmap_ind16 m_helper; + emu_timer *m_hit_timer; tilemap_t* m_bg_tilemap; - DECLARE_WRITE8_MEMBER(triplhnt_misc_w); - DECLARE_READ8_MEMBER(triplhnt_cmos_r); - DECLARE_READ8_MEMBER(triplhnt_input_port_4_r); - DECLARE_READ8_MEMBER(triplhnt_misc_r); - DECLARE_READ8_MEMBER(triplhnt_da_latch_r); + + DECLARE_WRITE8_MEMBER(misc_w); + DECLARE_READ8_MEMBER(cmos_r); + DECLARE_READ8_MEMBER(input_port_4_r); + DECLARE_READ8_MEMBER(misc_r); + DECLARE_READ8_MEMBER(da_latch_r); + DECLARE_DRIVER_INIT(triplhnt); TILE_GET_INFO_MEMBER(get_tile_info); virtual void video_start() override; DECLARE_PALETTE_INIT(triplhnt); - uint32_t screen_update_triplhnt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); - void triplhnt_set_collision(int code); - void triplhnt_update_misc(address_space &space, int offset); - required_device m_maincpu; - required_device m_watchdog; - required_device m_discrete; - required_device m_samples; - required_device m_gfxdecode; - required_device m_screen; - required_device m_palette; + void set_collision(int code); + void update_misc(address_space &space, int offset); + protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; -/*----------- defined in audio/triplhnt.c -----------*/ +/*----------- defined in audio/triplhnt.cpp -----------*/ DISCRETE_SOUND_EXTERN( triplhnt ); extern const char *const triplhnt_sample_names[]; diff --git a/src/mame/includes/trs80.h b/src/mame/includes/trs80.h index 02f3408d0f9..c65340d9003 100644 --- a/src/mame/includes/trs80.h +++ b/src/mame/includes/trs80.h @@ -162,7 +162,7 @@ private: optional_device m_cent_data_out; optional_device m_cent_status_in; optional_device m_ay31015; - optional_device m_fdc; + optional_device m_fdc; optional_device m_floppy0; optional_device m_floppy1; optional_device m_floppy2; diff --git a/src/mame/includes/trs80m2.h b/src/mame/includes/trs80m2.h index 151b57b667c..6a799948dc9 100644 --- a/src/mame/includes/trs80m2.h +++ b/src/mame/includes/trs80m2.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder -#pragma once +#ifndef MAME_INCLUDES_TRS80M2_H +#define MAME_INCLUDES_TRS80M2_H -#ifndef __TRS80M2__ -#define __TRS80M2__ +#pragma once #include "cpu/z80/z80.h" @@ -60,29 +60,6 @@ public: { } - required_device m_maincpu; - required_device m_ctc; - required_device m_dmac; - required_device m_pio; - required_device m_crtc; - required_device m_palette; - required_device m_fdc; - required_device m_centronics; - required_device m_floppy0; - required_device m_floppy1; - required_device m_floppy2; - required_device m_floppy3; - floppy_image_device *m_floppy; - required_device m_ram; - required_device m_kb; - required_memory_region m_rom; - required_memory_region m_char_rom; - optional_shared_ptr m_video_ram; - - virtual void machine_start() override; - virtual void machine_reset() override; - - virtual void video_start() override; uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); DECLARE_READ8_MEMBER( read ); @@ -101,10 +78,43 @@ public: DECLARE_WRITE8_MEMBER( pio_pa_w ); DECLARE_WRITE_LINE_MEMBER( strobe_w ); DECLARE_WRITE_LINE_MEMBER( kb_clock_w ); - DECLARE_WRITE8_MEMBER( kbd_w ); + void kbd_w(u8 data); MC6845_UPDATE_ROW( crtc_update_row ); + TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick); + DECLARE_READ8_MEMBER(io_read_byte); + DECLARE_WRITE8_MEMBER(io_write_byte); + + DECLARE_WRITE_LINE_MEMBER(write_centronics_busy); + DECLARE_WRITE_LINE_MEMBER(write_centronics_fault); + DECLARE_WRITE_LINE_MEMBER(write_centronics_perror); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + + virtual void video_start() override; + + required_device m_maincpu; + required_device m_ctc; + required_device m_dmac; + required_device m_pio; + required_device m_crtc; + required_device m_palette; + required_device m_fdc; + required_device m_centronics; + required_device m_floppy0; + required_device m_floppy1; + required_device m_floppy2; + required_device m_floppy3; + floppy_image_device *m_floppy; + required_device m_ram; + required_device m_kb; + required_memory_region m_rom; + required_memory_region m_char_rom; + optional_shared_ptr m_video_ram; + // memory state int m_boot_rom; int m_bank; @@ -125,39 +135,33 @@ public: int m_rtc_int; int m_enable_rtc_int; - TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick); - DECLARE_READ8_MEMBER(io_read_byte); - DECLARE_WRITE8_MEMBER(io_write_byte); - int m_centronics_busy; int m_centronics_fault; int m_centronics_perror; - - DECLARE_WRITE_LINE_MEMBER(write_centronics_busy); - DECLARE_WRITE_LINE_MEMBER(write_centronics_fault); - DECLARE_WRITE_LINE_MEMBER(write_centronics_perror); }; class trs80m16_state : public trs80m2_state { public: trs80m16_state(const machine_config &mconfig, device_type type, const char *tag) - : trs80m2_state(mconfig, type, tag), - m_subcpu(*this, M68000_TAG), - m_pic(*this, AM9519A_TAG) - { } + : trs80m2_state(mconfig, type, tag) + , m_subcpu(*this, M68000_TAG) + , m_pic(*this, AM9519A_TAG) + { + } - required_device m_subcpu; - required_device m_pic; + DECLARE_WRITE8_MEMBER( ual_w ); + DECLARE_WRITE8_MEMBER( tcl_w ); +protected: virtual void machine_start() override; - DECLARE_WRITE8_MEMBER( ual_w ); - DECLARE_WRITE8_MEMBER( tcl_w ); + required_device m_subcpu; + required_device m_pic; uint16_t m_ual; uint8_t m_limit[2]; uint8_t m_offset[2]; }; -#endif +#endif // MAME_INCLUDES_TRS80M2_H diff --git a/src/mame/includes/trucocl.h b/src/mame/includes/trucocl.h index 96e91d58038..24ad0ce79ed 100644 --- a/src/mame/includes/trucocl.h +++ b/src/mame/includes/trucocl.h @@ -25,6 +25,8 @@ public: tilemap_t *m_bg_tilemap; uint8_t m_irq_mask; + emu_timer *m_dac_irq_timer; + DECLARE_WRITE8_MEMBER(irq_enable_w); DECLARE_WRITE8_MEMBER(trucocl_videoram_w); DECLARE_WRITE8_MEMBER(trucocl_colorram_w); diff --git a/src/mame/includes/tsispch.h b/src/mame/includes/tsispch.h index 6b3db7d4f25..952d10badff 100644 --- a/src/mame/includes/tsispch.h +++ b/src/mame/includes/tsispch.h @@ -6,12 +6,11 @@ ****************************************************************************/ -#pragma once +#ifndef MAME_INCLUDES_TSISPCH_H +#define MAME_INCLUDES_TSISPCH_H -#ifndef _TSISPCH_H_ -#define _TSISPCH_H_ +#pragma once -#include "machine/i8251.h" #include "machine/pic8259.h" #include "machine/terminal.h" @@ -25,21 +24,10 @@ public: m_maincpu(*this, "maincpu"), m_dsp(*this, "dsp"), m_terminal(*this, TERMINAL_TAG), - m_uart(*this, "i8251a_u15"), m_pic(*this, "pic8259") { } - required_device m_maincpu; - required_device m_dsp; - required_device m_terminal; - required_device m_uart; - required_device m_pic; - - uint8_t m_paramReg; // status leds and resets and etc - - virtual void machine_reset() override; - DECLARE_WRITE8_MEMBER(i8251_rxd); DECLARE_READ8_MEMBER(dsw_r); DECLARE_WRITE8_MEMBER(peripheral_w); DECLARE_READ16_MEMBER(dsp_data_r); @@ -52,7 +40,16 @@ public: DECLARE_WRITE_LINE_MEMBER(i8251_txrdy_int); DECLARE_WRITE_LINE_MEMBER(dsp_to_8086_p0_w); DECLARE_WRITE_LINE_MEMBER(dsp_to_8086_p1_w); -}; +protected: + virtual void machine_reset() override; + + required_device m_maincpu; + required_device m_dsp; + required_device m_terminal; + required_device m_pic; + + uint8_t m_paramReg; // status leds and resets and etc +}; -#endif // _TSISPCH_H_ +#endif // MAME_INCLUDES_TSISPCH_H diff --git a/src/mame/includes/tubep.h b/src/mame/includes/tubep.h index 43138505bd3..1df6d5e6472 100644 --- a/src/mame/includes/tubep.h +++ b/src/mame/includes/tubep.h @@ -30,6 +30,7 @@ public: uint8_t m_ls74; uint8_t m_ls377; emu_timer *m_interrupt_timer; + emu_timer *m_sprite_timer; int m_curr_scanline; required_shared_ptr m_textram; optional_shared_ptr m_backgroundram; @@ -88,8 +89,8 @@ public: DECLARE_WRITE8_MEMBER(ay8910_portB_2_w); DECLARE_MACHINE_START(tubep); DECLARE_MACHINE_RESET(tubep); - DECLARE_VIDEO_START(tubep); - DECLARE_VIDEO_RESET(tubep); + virtual void video_start() override; + virtual void video_reset() override; DECLARE_PALETTE_INIT(tubep); DECLARE_MACHINE_START(rjammer); DECLARE_MACHINE_RESET(rjammer); diff --git a/src/mame/includes/turrett.h b/src/mame/includes/turrett.h index cf540a6e8ef..fc9f74e4c2a 100644 --- a/src/mame/includes/turrett.h +++ b/src/mame/includes/turrett.h @@ -5,6 +5,10 @@ Turret Tower hardware ****************************************************************************/ +#ifndef MAME_INCLUDES_TURRETT_H +#define MAME_INCLUDES_TURRETT_H + +#pragma once #include "machine/ataintf.h" #include "screen.h" @@ -128,4 +132,6 @@ private: }; // device type definition -extern const device_type TURRETT; +DECLARE_DEVICE_TYPE(TURRETT, turrett_device) + +#endif // MAME_INCLUDES_TURRETT_H diff --git a/src/mame/includes/twin16.h b/src/mame/includes/twin16.h index 299187d1851..b9fe3b0c97b 100644 --- a/src/mame/includes/twin16.h +++ b/src/mame/includes/twin16.h @@ -76,7 +76,7 @@ public: TILE_GET_INFO_MEMBER(layer1_tile_info); uint32_t screen_update_twin16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_twin16(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_twin16); INTERRUPT_GEN_MEMBER(CPUA_interrupt); INTERRUPT_GEN_MEMBER(CPUB_interrupt); TIMER_CALLBACK_MEMBER(sprite_tick); diff --git a/src/mame/includes/tx0.h b/src/mame/includes/tx0.h index cdd436ee467..f946e2d72c2 100644 --- a/src/mame/includes/tx0.h +++ b/src/mame/includes/tx0.h @@ -162,7 +162,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(tx0); uint32_t screen_update_tx0(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_tx0(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_tx0); INTERRUPT_GEN_MEMBER(tx0_interrupt); TIMER_CALLBACK_MEMBER(reader_callback); TIMER_CALLBACK_MEMBER(puncher_callback); diff --git a/src/mame/includes/tx1.h b/src/mame/includes/tx1.h index 75858e9c2ec..d9fe40a979f 100644 --- a/src/mame/includes/tx1.h +++ b/src/mame/includes/tx1.h @@ -5,6 +5,10 @@ TX-1/Buggy Boy hardware *************************************************************************/ +#ifndef MAME_INCLUDES_TX1_H +#define MAME_INCLUDES_TX1_H + +#pragma once #include "screen.h" @@ -225,8 +229,8 @@ public: uint32_t screen_update_buggyboy_middle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_buggyboy_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_buggybjr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_tx1(screen_device &screen, bool state); - void screen_eof_buggyboy(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_tx1); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_buggyboy); INTERRUPT_GEN_MEMBER(z80_irq); TIMER_CALLBACK_MEMBER(interrupt_callback); }; @@ -258,7 +262,6 @@ class tx1_sound_device : public device_t, { public: tx1_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - tx1_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); ~tx1_sound_device() {} DECLARE_READ8_MEMBER( pit8253_r ); @@ -267,6 +270,8 @@ public: DECLARE_WRITE8_MEMBER( ay8910_b_w ); protected: + tx1_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -308,7 +313,7 @@ protected: uint16_t m_eng_voltages[16]; }; -extern const device_type TX1; +DECLARE_DEVICE_TYPE(TX1, tx1_sound_device) class buggyboy_sound_device : public tx1_sound_device { @@ -331,4 +336,6 @@ private: // internal state }; -extern const device_type BUGGYBOY; +DECLARE_DEVICE_TYPE(BUGGYBOY, buggyboy_sound_device) + +#endif // MAME_INCLUDES_TX1_H diff --git a/src/mame/includes/ultratnk.h b/src/mame/includes/ultratnk.h index b1c924e6861..a2c5ce72c2e 100644 --- a/src/mame/includes/ultratnk.h +++ b/src/mame/includes/ultratnk.h @@ -20,50 +20,57 @@ public: ultratnk_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), m_maincpu(*this, "maincpu"), m_watchdog(*this, "watchdog"), m_discrete(*this, "discrete"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_videoram(*this, "videoram") { } + + required_device m_maincpu; + required_device m_watchdog; + required_device m_discrete; + required_device m_gfxdecode; + required_device m_screen; + required_device m_palette; required_shared_ptr m_videoram; + int m_da_latch; int m_collision[4]; tilemap_t* m_playfield; bitmap_ind16 m_helper; - DECLARE_READ8_MEMBER(ultratnk_wram_r); - DECLARE_READ8_MEMBER(ultratnk_analog_r); - DECLARE_READ8_MEMBER(ultratnk_coin_r); - DECLARE_READ8_MEMBER(ultratnk_collision_r); - DECLARE_READ8_MEMBER(ultratnk_options_r); - DECLARE_WRITE8_MEMBER(ultratnk_wram_w); - DECLARE_WRITE8_MEMBER(ultratnk_collision_reset_w); - DECLARE_WRITE8_MEMBER(ultratnk_da_latch_w); - DECLARE_WRITE8_MEMBER(ultratnk_led_1_w); - DECLARE_WRITE8_MEMBER(ultratnk_led_2_w); - DECLARE_WRITE8_MEMBER(ultratnk_lockout_w); - DECLARE_WRITE8_MEMBER(ultratnk_video_ram_w); + emu_timer *m_nmi_timer; + + DECLARE_READ8_MEMBER(wram_r); + DECLARE_READ8_MEMBER(analog_r); + DECLARE_READ8_MEMBER(coin_r); + DECLARE_READ8_MEMBER(collision_r); + DECLARE_READ8_MEMBER(options_r); + DECLARE_WRITE8_MEMBER(wram_w); + DECLARE_WRITE8_MEMBER(collision_reset_w); + DECLARE_WRITE8_MEMBER(da_latch_w); + DECLARE_WRITE8_MEMBER(led_1_w); + DECLARE_WRITE8_MEMBER(led_2_w); + DECLARE_WRITE8_MEMBER(lockout_w); + DECLARE_WRITE8_MEMBER(video_ram_w); DECLARE_CUSTOM_INPUT_MEMBER(get_collision); DECLARE_CUSTOM_INPUT_MEMBER(get_joystick); - DECLARE_WRITE8_MEMBER(ultratnk_fire_1_w); - DECLARE_WRITE8_MEMBER(ultratnk_fire_2_w); - DECLARE_WRITE8_MEMBER(ultratnk_attract_w); - DECLARE_WRITE8_MEMBER(ultratnk_explosion_w); - TILE_GET_INFO_MEMBER(ultratnk_tile_info); + DECLARE_WRITE8_MEMBER(fire_1_w); + DECLARE_WRITE8_MEMBER(fire_2_w); + DECLARE_WRITE8_MEMBER(attract_w); + DECLARE_WRITE8_MEMBER(explosion_w); + + virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; DECLARE_PALETTE_INIT(ultratnk); - uint32_t screen_update_ultratnk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_ultratnk(screen_device &screen, bool state); + + TILE_GET_INFO_MEMBER(tile_info); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); TIMER_CALLBACK_MEMBER(nmi_callback); - required_device m_maincpu; - required_device m_watchdog; - required_device m_discrete; - required_device m_gfxdecode; - required_device m_screen; - required_device m_palette; protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; diff --git a/src/mame/includes/v1050.h b/src/mame/includes/v1050.h index 2c6ea33a5b1..16056093234 100644 --- a/src/mame/includes/v1050.h +++ b/src/mame/includes/v1050.h @@ -1,9 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder +#ifndef MAME_INCLUDES_V1050_H +#define MAME_INCLUDES_V1050_H + #pragma once -#ifndef __V1050__ -#define __V1050__ +#pragma once #include "cpu/z80/z80.h" #include "cpu/m6502/m6502.h" @@ -162,7 +164,6 @@ private: void scan_keyboard(); void set_baud_sel(int sel); -public: // HACK for MC6845 required_device m_maincpu; required_device m_subcpu; required_device m_pic; @@ -171,7 +172,7 @@ public: // HACK for MC6845 required_device m_rtc; required_device m_uart_kb; required_device m_uart_sio; - required_device m_fdc; + required_device m_fdc; required_device m_crtc; required_device m_palette; required_device m_centronics; @@ -183,7 +184,7 @@ public: // HACK for MC6845 required_device m_clock_sio; required_device m_timer_ack; required_device m_timer_rst; - required_device m_sasibus; + required_device m_sasibus; required_device m_sasi_data_out; required_device m_sasi_data_in; required_device m_sasi_ctrl_in; @@ -229,4 +230,4 @@ public: // HACK for MC6845 MACHINE_CONFIG_EXTERN( v1050_video ); -#endif +#endif // MAME_INCLUDES_V1050_H diff --git a/src/mame/includes/vector06.h b/src/mame/includes/vector06.h index 88df82c5a55..19e17d6524c 100644 --- a/src/mame/includes/vector06.h +++ b/src/mame/includes/vector06.h @@ -90,7 +90,7 @@ private: required_device m_speaker; required_device m_cassette; required_device m_cart; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_ppi; @@ -116,6 +116,7 @@ private: uint8_t m_aylatch; bool m_stack_state; bool m_romen; + emu_timer *m_reset_check_timer; void update_mem(); }; diff --git a/src/mame/includes/vicdual.h b/src/mame/includes/vicdual.h index 6b7b6a8f75f..b9807288d3f 100644 --- a/src/mame/includes/vicdual.h +++ b/src/mame/includes/vicdual.h @@ -11,6 +11,8 @@ #include "sound/discrete.h" #include "sound/samples.h" #include "screen.h" +#include "audio/vicdual-97271p.h" +#include "video/vicdual-97269pb.h" class vicdual_state : public driver_device { @@ -58,10 +60,7 @@ public: uint8_t m_coin_status; uint8_t m_palette_bank; - uint8_t m_gradient; uint8_t m_samurai_protection_data; - int m_nsub_coin_counter; - int m_nsub_play_counter; int m_port1State; int m_port2State; int m_psgData; @@ -102,8 +101,6 @@ public: DECLARE_WRITE8_MEMBER(alphaho_io_w); DECLARE_WRITE8_MEMBER(samurai_protection_w); DECLARE_WRITE8_MEMBER(samurai_io_w); - DECLARE_READ8_MEMBER(nsub_io_r); - DECLARE_WRITE8_MEMBER(nsub_io_w); DECLARE_READ8_MEMBER(invinco_io_r); DECLARE_WRITE8_MEMBER(invinco_io_w); @@ -116,7 +113,7 @@ public: /*----------- defined in audio/carnival.c -----------*/ DECLARE_WRITE8_MEMBER( carnival_audio_1_w ); DECLARE_WRITE8_MEMBER( carnival_audio_2_w ); - DECLARE_READ8_MEMBER( carnival_music_port_t1_r ); + DECLARE_READ_LINE_MEMBER( carnival_music_port_t1_r ); DECLARE_WRITE8_MEMBER( carnival_music_port_1_w ); DECLARE_WRITE8_MEMBER( carnival_music_port_2_w ); void carnival_psg_latch(address_space &space); @@ -139,14 +136,10 @@ public: DECLARE_CUSTOM_INPUT_MEMBER(fake_lives_r); DECLARE_CUSTOM_INPUT_MEMBER(samurai_protection_r); DECLARE_INPUT_CHANGED_MEMBER(coin_changed); - DECLARE_INPUT_CHANGED_MEMBER(nsub_coin_in); TIMER_DEVICE_CALLBACK_MEMBER(clear_coin_status); - TIMER_DEVICE_CALLBACK_MEMBER(nsub_coin_pulse); DECLARE_MACHINE_START(samurai); - DECLARE_MACHINE_START(nsub); - DECLARE_MACHINE_RESET(nsub); DECLARE_MACHINE_START(frogs_audio); virtual void machine_start() override; @@ -156,4 +149,33 @@ public: uint32_t screen_update_color(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); int get_vcounter(); int is_cabinet_color(); + virtual pen_t choose_pen(uint8_t x, uint8_t y, pen_t back_pen); +}; + +class nsub_state : public vicdual_state +{ +public: + nsub_state(const machine_config &mconfig, device_type type, const char *tag) + : vicdual_state(mconfig, type, tag), + m_s97269pb(*this,"s97269pb"), + m_s97271p(*this,"s97271p") + { } + + required_device m_s97269pb; + required_device m_s97271p; + + int m_nsub_coin_counter; + int m_nsub_play_counter; + + DECLARE_READ8_MEMBER(nsub_io_r); + DECLARE_WRITE8_MEMBER(nsub_io_w); + + DECLARE_INPUT_CHANGED_MEMBER(nsub_coin_in); + + TIMER_DEVICE_CALLBACK_MEMBER(nsub_coin_pulse); + + DECLARE_MACHINE_START(nsub); + DECLARE_MACHINE_RESET(nsub); + + virtual pen_t choose_pen(uint8_t x, uint8_t y, pen_t back_pen) override; }; diff --git a/src/mame/includes/victory.h b/src/mame/includes/victory.h index 31c775819b5..877e2d96e4e 100644 --- a/src/mame/includes/victory.h +++ b/src/mame/includes/victory.h @@ -68,6 +68,7 @@ public: uint8_t m_scrolly; uint8_t m_video_control; struct micro_t m_micro; + emu_timer *m_bgcoll_irq_timer; DECLARE_WRITE8_MEMBER(lamp_control_w); DECLARE_WRITE8_MEMBER(paletteram_w); diff --git a/src/mame/includes/vixen.h b/src/mame/includes/vixen.h index 60e75070ba2..969dbd7b151 100644 --- a/src/mame/includes/vixen.h +++ b/src/mame/includes/vixen.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder -#pragma once +#ifndef MAME_INCLUDES_VIXEN_H +#define MAME_INCLUDES_VIXEN_H -#ifndef __VIXEN__ -#define __VIXEN__ +#pragma once #include "bus/rs232/rs232.h" #include "cpu/z80/z80.h" @@ -77,7 +77,7 @@ public: private: required_device m_maincpu; - required_device m_fdc; + required_device m_fdc; required_device m_io_i8155; required_device m_usart; required_device m_discrete; @@ -129,4 +129,4 @@ private: bool m_256; }; -#endif +#endif // MAME_INCLUDES_VIXEN_H diff --git a/src/mame/includes/volfied.h b/src/mame/includes/volfied.h index fcd3f4ef6e0..651e6ef3c9e 100644 --- a/src/mame/includes/volfied.h +++ b/src/mame/includes/volfied.h @@ -37,6 +37,7 @@ public: uint8_t m_current_flag; uint8_t m_cc_port; uint8_t m_current_cmd; + emu_timer *m_cchip_timer; /* devices */ required_device m_maincpu; @@ -44,25 +45,25 @@ public: required_device m_pc090oj; required_device m_screen; - DECLARE_WRITE16_MEMBER(volfied_cchip_ctrl_w); - DECLARE_WRITE16_MEMBER(volfied_cchip_bank_w); - DECLARE_WRITE16_MEMBER(volfied_cchip_ram_w); - DECLARE_READ16_MEMBER(volfied_cchip_ctrl_r); - DECLARE_READ16_MEMBER(volfied_cchip_ram_r); - DECLARE_READ16_MEMBER(volfied_video_ram_r); - DECLARE_WRITE16_MEMBER(volfied_video_ram_w); - DECLARE_WRITE16_MEMBER(volfied_video_ctrl_w); - DECLARE_READ16_MEMBER(volfied_video_ctrl_r); - DECLARE_WRITE16_MEMBER(volfied_video_mask_w); - DECLARE_WRITE16_MEMBER(volfied_sprite_ctrl_w); + DECLARE_WRITE16_MEMBER(cchip_ctrl_w); + DECLARE_WRITE16_MEMBER(cchip_bank_w); + DECLARE_WRITE16_MEMBER(cchip_ram_w); + DECLARE_READ16_MEMBER(cchip_ctrl_r); + DECLARE_READ16_MEMBER(cchip_ram_r); + DECLARE_READ16_MEMBER(video_ram_r); + DECLARE_WRITE16_MEMBER(video_ram_w); + DECLARE_WRITE16_MEMBER(video_ctrl_w); + DECLARE_READ16_MEMBER(video_ctrl_r); + DECLARE_WRITE16_MEMBER(video_mask_w); + DECLARE_WRITE16_MEMBER(sprite_ctrl_w); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; - uint32_t screen_update_volfied(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_CALLBACK_MEMBER(volfied_timer_callback); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TIMER_CALLBACK_MEMBER(timer_callback); void refresh_pixel_layer( bitmap_ind16 &bitmap ); - void volfied_cchip_init(); - void volfied_cchip_reset(); + void cchip_init(); + void cchip_reset(); protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; diff --git a/src/mame/includes/vsnes.h b/src/mame/includes/vsnes.h index 00149dc35df..c068a2f70b3 100644 --- a/src/mame/includes/vsnes.h +++ b/src/mame/includes/vsnes.h @@ -29,35 +29,6 @@ public: optional_memory_region m_gfx1_rom; - int m_coin; - int m_do_vrom_bank; - int m_input_latch[4]; - int m_sound_fix; - uint8_t m_last_bank; - std::unique_ptr m_vram; - uint8_t* m_vrom[2]; - std::unique_ptr m_nt_ram[2]; - uint8_t* m_nt_page[2][4]; - uint32_t m_vrom_size[2]; - int m_vrom_banks; - int m_zapstore; - int m_old_bank; - int m_drmario_shiftreg; - int m_drmario_shiftcount; - int m_size16k; - int m_switchlow; - int m_vrom4k; - int m_MMC3_cmd; - int m_MMC3_prg_bank[4]; - int m_MMC3_chr_bank[6]; - int m_MMC3_prg_mask; - int m_IRQ_enable; - int m_IRQ_count; - int m_IRQ_count_latch; - int m_VSindex; - int m_supxevs_prot_index; - int m_security_counter; - int m_ret; DECLARE_WRITE8_MEMBER(sprite_dma_0_w); DECLARE_WRITE8_MEMBER(sprite_dma_1_w); DECLARE_WRITE8_MEMBER(vsnes_coin_counter_w); @@ -129,7 +100,38 @@ public: DECLARE_WRITE8_MEMBER(bootleg_sound_write); DECLARE_READ8_MEMBER(vsnes_bootleg_z80_data_r); DECLARE_READ8_MEMBER(vsnes_bootleg_z80_address_r); + +private: + int m_coin; + int m_do_vrom_bank; + int m_input_latch[4]; + int m_sound_fix; + uint8_t m_last_bank; + std::unique_ptr m_vram; + uint8_t* m_vrom[2]; + std::unique_ptr m_nt_ram[2]; + uint8_t* m_nt_page[2][4]; + uint32_t m_vrom_size[2]; + int m_vrom_banks; + int m_zapstore; + int m_old_bank; + int m_drmario_shiftreg; + int m_drmario_shiftcount; + int m_size16k; + int m_switchlow; + int m_vrom4k; + int m_MMC3_cmd; + int m_MMC3_prg_bank[4]; + int m_MMC3_chr_bank[6]; + int m_MMC3_prg_mask; + int m_IRQ_enable; + int m_IRQ_count; + int m_IRQ_count_latch; + int m_VSindex; + int m_supxevs_prot_index; + int m_security_counter; + int m_ret; + uint8_t m_bootleg_sound_offset; uint8_t m_bootleg_sound_data; - }; diff --git a/src/mame/includes/williams.h b/src/mame/includes/williams.h index e881db20a91..567013ca6bc 100644 --- a/src/mame/includes/williams.h +++ b/src/mame/includes/williams.h @@ -30,7 +30,10 @@ public: m_watchdog(*this, "watchdog"), m_screen(*this, "screen"), m_palette(*this, "palette"), - m_generic_paletteram_8(*this, "paletteram") { } + m_generic_paletteram_8(*this, "paletteram"), + m_pia_0(*this, "pia_0"), + m_pia_1(*this, "pia_1"), + m_pia_2(*this, "pia_2") { } enum { @@ -120,6 +123,9 @@ public: required_device m_screen; optional_device m_palette; optional_shared_ptr m_generic_paletteram_8; + required_device m_pia_0; + required_device m_pia_1; + required_device m_pia_2; }; @@ -129,10 +135,12 @@ public: blaster_state(const machine_config &mconfig, device_type type, const char *tag) : williams_state(mconfig, type, tag), m_soundcpu_b(*this, "soundcpu_b"), + m_pia_2b(*this, "pia_2b"), m_blaster_palette_0(*this, "blaster_pal0"), m_blaster_scanline_control(*this, "blaster_scan") { } optional_device m_soundcpu_b; + optional_device m_pia_2b; required_shared_ptr m_blaster_palette_0; required_shared_ptr m_blaster_scanline_control; @@ -227,11 +235,11 @@ public: DECLARE_WRITE_LINE_MEMBER(joust2_pia_3_cb1_w); }; -/*----------- defined in video/williams.c -----------*/ +/*----------- defined in video/williams.cpp -----------*/ #define WILLIAMS_BLITTER_NONE 0 /* no blitter */ -#define WILLIAMS_BLITTER_SC01 1 /* SC-01 blitter */ -#define WILLIAMS_BLITTER_SC02 2 /* SC-02 "fixed" blitter */ +#define WILLIAMS_BLITTER_SC1 1 /* Special Chip 1 blitter */ +#define WILLIAMS_BLITTER_SC2 2 /* Special Chip 2 "bugfixed" blitter */ #define WILLIAMS_TILEMAP_MYSTICM 0 /* IC79 is a 74LS85 comparator */ #define WILLIAMS_TILEMAP_TSHOOT 1 /* IC79 is a 74LS157 selector jumpered to be enabled */ diff --git a/src/mame/includes/wolfpack.h b/src/mame/includes/wolfpack.h index 24264f09a17..73c269a5baf 100644 --- a/src/mame/includes/wolfpack.h +++ b/src/mame/includes/wolfpack.h @@ -35,7 +35,7 @@ public: required_device m_screen; required_device m_palette; - int m_collision; + bool m_collision; unsigned m_current_index; uint8_t m_video_invert; uint8_t m_ship_reflect; @@ -51,40 +51,45 @@ public: uint8_t m_torpedo_v; std::unique_ptr m_LFSR; bitmap_ind16 m_helper; - DECLARE_READ8_MEMBER(wolfpack_misc_r); - DECLARE_WRITE8_MEMBER(wolfpack_high_explo_w); - DECLARE_WRITE8_MEMBER(wolfpack_sonar_ping_w); - DECLARE_WRITE8_MEMBER(wolfpack_sirlat_w); - DECLARE_WRITE8_MEMBER(wolfpack_pt_sound_w); - DECLARE_WRITE8_MEMBER(wolfpack_launch_torpedo_w); - DECLARE_WRITE8_MEMBER(wolfpack_low_explo_w); - DECLARE_WRITE8_MEMBER(wolfpack_screw_cont_w); - DECLARE_WRITE8_MEMBER(wolfpack_lamp_flash_w); - DECLARE_WRITE8_MEMBER(wolfpack_warning_light_w); - DECLARE_WRITE8_MEMBER(wolfpack_audamp_w); - DECLARE_WRITE8_MEMBER(wolfpack_attract_w); - DECLARE_WRITE8_MEMBER(wolfpack_credit_w); - DECLARE_WRITE8_MEMBER(wolfpack_coldetres_w); - DECLARE_WRITE8_MEMBER(wolfpack_ship_size_w); - DECLARE_WRITE8_MEMBER(wolfpack_video_invert_w); - DECLARE_WRITE8_MEMBER(wolfpack_ship_reflect_w); - DECLARE_WRITE8_MEMBER(wolfpack_pt_pos_select_w); - DECLARE_WRITE8_MEMBER(wolfpack_pt_horz_w); - DECLARE_WRITE8_MEMBER(wolfpack_pt_pic_w); - DECLARE_WRITE8_MEMBER(wolfpack_ship_h_w); - DECLARE_WRITE8_MEMBER(wolfpack_torpedo_pic_w); - DECLARE_WRITE8_MEMBER(wolfpack_ship_h_precess_w); - DECLARE_WRITE8_MEMBER(wolfpack_ship_pic_w); - DECLARE_WRITE8_MEMBER(wolfpack_torpedo_h_w); - DECLARE_WRITE8_MEMBER(wolfpack_torpedo_v_w); - DECLARE_CUSTOM_INPUT_MEMBER(wolfpack_dial_r); - DECLARE_WRITE8_MEMBER(wolfpack_word_w); - DECLARE_WRITE8_MEMBER(wolfpack_start_speech_w); + emu_timer *m_periodic_timer; + + DECLARE_READ8_MEMBER(misc_r); + DECLARE_WRITE8_MEMBER(high_explo_w); + DECLARE_WRITE8_MEMBER(sonar_ping_w); + DECLARE_WRITE8_MEMBER(sirlat_w); + DECLARE_WRITE8_MEMBER(pt_sound_w); + DECLARE_WRITE8_MEMBER(launch_torpedo_w); + DECLARE_WRITE8_MEMBER(low_explo_w); + DECLARE_WRITE8_MEMBER(screw_cont_w); + DECLARE_WRITE8_MEMBER(lamp_flash_w); + DECLARE_WRITE8_MEMBER(warning_light_w); + DECLARE_WRITE8_MEMBER(audamp_w); + DECLARE_WRITE8_MEMBER(attract_w); + DECLARE_WRITE8_MEMBER(credit_w); + DECLARE_WRITE8_MEMBER(coldetres_w); + DECLARE_WRITE8_MEMBER(ship_size_w); + DECLARE_WRITE8_MEMBER(video_invert_w); + DECLARE_WRITE8_MEMBER(ship_reflect_w); + DECLARE_WRITE8_MEMBER(pt_pos_select_w); + DECLARE_WRITE8_MEMBER(pt_horz_w); + DECLARE_WRITE8_MEMBER(pt_pic_w); + DECLARE_WRITE8_MEMBER(ship_h_w); + DECLARE_WRITE8_MEMBER(torpedo_pic_w); + DECLARE_WRITE8_MEMBER(ship_h_precess_w); + DECLARE_WRITE8_MEMBER(ship_pic_w); + DECLARE_WRITE8_MEMBER(torpedo_h_w); + DECLARE_WRITE8_MEMBER(torpedo_v_w); + DECLARE_CUSTOM_INPUT_MEMBER(dial_r); + DECLARE_WRITE8_MEMBER(word_w); + DECLARE_WRITE8_MEMBER(start_speech_w); + + virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; DECLARE_PALETTE_INIT(wolfpack); - uint32_t screen_update_wolfpack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_wolfpack(screen_device &screen, bool state); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); TIMER_CALLBACK_MEMBER(periodic_callback); void draw_ship(bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_torpedo(bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/mame/includes/x1.h b/src/mame/includes/x1.h index 3329e1b883f..0abab512956 100644 --- a/src/mame/includes/x1.h +++ b/src/mame/includes/x1.h @@ -6,8 +6,10 @@ * ****************************************************************************/ -#ifndef X1_H_ -#define X1_H_ +#ifndef MAME_INCLUDES_X1_H +#define MAME_INCLUDES_X1_H + +#pragma once #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" @@ -44,35 +46,35 @@ private: virtual void z80daisy_irq_reti() override; }; -struct scrn_reg_t +class x1_state : public driver_device { - uint8_t gfx_bank; - uint8_t disp_bank; - uint8_t pcg_mode; - uint8_t v400_mode; - uint8_t ank_sel; +public: + struct scrn_reg_t + { + uint8_t gfx_bank; + uint8_t disp_bank; + uint8_t pcg_mode; + uint8_t v400_mode; + uint8_t ank_sel; - uint8_t pri; - uint8_t blackclip; // x1 turbo specific -}; + uint8_t pri; + uint8_t blackclip; // x1 turbo specific + }; -struct turbo_reg_t -{ - uint8_t pal; - uint8_t gfx_pal; - uint8_t txt_pal[8]; - uint8_t txt_disp; -}; + struct turbo_reg_t + { + uint8_t pal; + uint8_t gfx_pal; + uint8_t txt_pal[8]; + uint8_t txt_disp; + }; -struct x1_rtc_t -{ - uint8_t sec, min, hour, day, wday, month, year; -}; + struct x1_rtc_t + { + uint8_t sec, min, hour, day, wday, month, year; + }; -class x1_state : public driver_device -{ -public: x1_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this,"x1_cpu"), @@ -95,7 +97,7 @@ public: required_device m_maincpu; required_device m_cassette; required_device m_cart; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_floppy2; @@ -299,6 +301,6 @@ public: /*----------- defined in machine/x1.c -----------*/ -extern const device_type X1_KEYBOARD; +DECLARE_DEVICE_TYPE(X1_KEYBOARD, x1_keyboard_device) -#endif /* X1_H_ */ +#endif // MAME_INCLUDES_X1_H diff --git a/src/mame/includes/xbox.h b/src/mame/includes/xbox.h index 613a2ca48f6..fa1d0f4b16b 100644 --- a/src/mame/includes/xbox.h +++ b/src/mame/includes/xbox.h @@ -10,7 +10,7 @@ #include "machine/idectrl.h" #include "machine/pic8259.h" - +#include "machine/pci.h" class xbox_base_state : public driver_device { @@ -20,35 +20,14 @@ public: nvidia_nv2a(nullptr), debug_irq_active(false), debug_irq_number(0), - usb_hack_enabled(false), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + debugc_bios(nullptr) { } - DECLARE_READ32_MEMBER(geforce_r); - DECLARE_WRITE32_MEMBER(geforce_w); - DECLARE_READ32_MEMBER(smbus_r); - DECLARE_WRITE32_MEMBER(smbus_w); - DECLARE_READ32_MEMBER(smbus2_r); - DECLARE_WRITE32_MEMBER(smbus2_w); - DECLARE_READ32_MEMBER(networkio_r); - DECLARE_WRITE32_MEMBER(networkio_w); DECLARE_READ8_MEMBER(superio_read); DECLARE_WRITE8_MEMBER(superio_write); DECLARE_READ8_MEMBER(superiors232_read); DECLARE_WRITE8_MEMBER(superiors232_write); - DECLARE_READ32_MEMBER(audio_apu_r); - DECLARE_WRITE32_MEMBER(audio_apu_w); - DECLARE_READ32_MEMBER(audio_ac93_r); - DECLARE_WRITE32_MEMBER(audio_ac93_w); - DECLARE_READ32_MEMBER(dummy_r); - DECLARE_WRITE32_MEMBER(dummy_w); - DECLARE_READ32_MEMBER(ohci_usb_r); - DECLARE_WRITE32_MEMBER(ohci_usb_w); - DECLARE_READ32_MEMBER(ohci_usb2_r); - DECLARE_WRITE32_MEMBER(ohci_usb2_w); - DECLARE_READ32_MEMBER(network_r); - DECLARE_WRITE32_MEMBER(network_w); - void smbus_register_device(int address, int(*handler)(xbox_base_state &chs, int command, int rw, int data)); int smbus_pic16lc(int command, int rw, int data); int smbus_cx25871(int command, int rw, int data); int smbus_eeprom(int command, int rw, int data); @@ -56,7 +35,7 @@ public: virtual void hack_eeprom() {}; virtual void hack_usb() {}; - void vblank_callback(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(vblank_callback); uint32_t screen_update_callback(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); virtual void machine_start() override; @@ -65,49 +44,15 @@ public: DECLARE_WRITE_LINE_MEMBER(xbox_pit8254_out0_changed); DECLARE_WRITE_LINE_MEMBER(xbox_pit8254_out2_changed); DECLARE_WRITE_LINE_MEMBER(xbox_ohci_usb_interrupt_changed); + DECLARE_WRITE_LINE_MEMBER(xbox_smbus_interrupt_changed); + DECLARE_WRITE_LINE_MEMBER(xbox_nv2a_interrupt_changed); IRQ_CALLBACK_MEMBER(irq_callback); - TIMER_CALLBACK_MEMBER(audio_apu_timer); struct xbox_devices { pic8259_device *pic8259_1; pic8259_device *pic8259_2; bus_master_ide_controller_device *ide; } xbox_base_devs; - struct smbus_state { - int status; - int control; - int address; - int data; - int command; - int rw; - int(*devices[128])(xbox_base_state &chs, int command, int rw, int data); - uint32_t words[256 / 4]; - } smbusst; - struct apu_state { - uint32_t memory[0x60000 / 4]; - uint32_t gpdsp_sgaddress; // global processor scatter-gather - uint32_t gpdsp_sgblocks; - uint32_t gpdsp_address; - uint32_t epdsp_sgaddress; // encoder processor scatter-gather - uint32_t epdsp_sgblocks; - uint32_t unknown_sgaddress; - uint32_t unknown_sgblocks; - int voice_number; - uint32_t voices_heap_blockaddr[1024]; - uint64_t voices_active[4]; //one bit for each voice: 1 playing 0 not - uint32_t voicedata_address; - int voices_frequency[256]; // sample rate - int voices_position[256]; // position in samples * 1000 - int voices_position_start[256]; // position in samples * 1000 - int voices_position_end[256]; // position in samples * 1000 - int voices_position_increment[256]; // position increment every 1ms * 1000 - emu_timer *timer; - address_space *space; - } apust; - struct ac97_state { - uint32_t mixer_regs[0x80 / 4]; - uint32_t controller_regs[0x38 / 4]; - } ac97st; struct superio_state { bool configuration_mode; @@ -116,12 +61,10 @@ public: uint8_t registers[16][256]; // 256 registers for up to 16 devices, registers 0-0x2f common to all } superiost; uint8_t pic16lc_buffer[0xff]; - std::unique_ptr nvidia_nv2a; + nv2a_renderer *nvidia_nv2a; bool debug_irq_active; int debug_irq_number; - bool usb_hack_enabled; required_device m_maincpu; - ohci_usb_controller *ohci_usb; static const struct debugger_constants { uint32_t id; diff --git a/src/mame/includes/xbox_nv2a.h b/src/mame/includes/xbox_nv2a.h index f090f0b373f..970db40f534 100644 --- a/src/mame/includes/xbox_nv2a.h +++ b/src/mame/includes/xbox_nv2a.h @@ -455,10 +455,10 @@ public: } DECLARE_READ32_MEMBER(geforce_r); DECLARE_WRITE32_MEMBER(geforce_w); - void vblank_callback(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(vblank_callback); uint32_t screen_update_callback(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); bool update_interrupts(); - void set_interrupt_device(pic8259_device *device); + void set_irq_callbaclk(std::function callback) { irq_callback = callback; } void render_texture_simple(int32_t scanline, const extent_t &extent, const nvidia_object_data &extradata, int threadid); void render_color(int32_t scanline, const extent_t &extent, const nvidia_object_data &extradata, int threadid); @@ -540,7 +540,7 @@ public: uint32_t dma_size[2]; uint8_t *basemempointer; uint8_t *topmempointer; - pic8259_device *interruptdevice; + std::function irq_callback; rectangle clippingwindows[8]; rectangle limits_rendertarget; uint32_t pitch_rendertarget; diff --git a/src/mame/includes/xbox_pci.h b/src/mame/includes/xbox_pci.h new file mode 100644 index 00000000000..7c9f34b5d8d --- /dev/null +++ b/src/mame/includes/xbox_pci.h @@ -0,0 +1,341 @@ +// license:BSD-3-Clause +// copyright-holders:Samuele Zannoli +#ifndef MAME_INCLUDES_XBOX_PCI_H +#define MAME_INCLUDES_XBOX_PCI_H + +#pragma once + +#include "xbox_nv2a.h" +#include "xbox_usb.h" + +/* + * Host + */ + +class nv2a_host_device : public pci_host_device { +public: + nv2a_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space, + uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override; + void set_cpu_tag(const char *_cpu_tag); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + const char *cpu_tag; + cpu_device *cpu; +}; + +extern const device_type NV2A_HOST; + +#define MCFG_NV2A_HOST_ADD(_tag, _cpu_tag) MCFG_PCI_HOST_ADD(_tag, NV2A_HOST, 0x10de02a5, 0, 0) \ + downcast(device)->set_cpu_tag(_cpu_tag); + +/* + * Ram + */ + +class nv2a_ram_device : public pci_device { +public: + nv2a_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + virtual DECLARE_ADDRESS_MAP(config_map, 32) override; + +protected: + DECLARE_READ32_MEMBER(config_register_r); + DECLARE_WRITE32_MEMBER(config_register_w); +}; + +extern const device_type NV2A_RAM; + +/* + * LPC Bus + */ + +class mcpx_lpc_device : public pci_device { +public: + mcpx_lpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_READ32_MEMBER(lpc_r); + DECLARE_WRITE32_MEMBER(lpc_w); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + DECLARE_ADDRESS_MAP(lpc_io, 32); +}; + +extern const device_type MCPX_LPC; + +/* + * SMBus + */ + +class mcpx_smbus_device : public pci_device { +public: + mcpx_smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + void register_device(int address, std::function callback) { if (address < 128) smbusst.devices[address] = callback; } + + template static devcb_base &set_interrupt_handler(device_t &device, _Object object) { return downcast(device).m_interrupt_handler.set_callback(object); } + + DECLARE_READ32_MEMBER(smbus_r); + DECLARE_WRITE32_MEMBER(smbus_w); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + devcb_write_line m_interrupt_handler; + struct smbus_state { + int status; + int control; + int address; + int data; + int command; + int rw; + std::function devices[128]; + uint32_t words[256 / 4]; + } smbusst; + DECLARE_ADDRESS_MAP(smbus_io0, 32); + DECLARE_ADDRESS_MAP(smbus_io1, 32); + DECLARE_ADDRESS_MAP(smbus_io2, 32); +}; + +extern const device_type MCPX_SMBUS; + +#define MCFG_MCPX_SMBUS_INTERRUPT_HANDLER(_devcb) \ + devcb = &mcpx_smbus_device::set_interrupt_handler(*device, DEVCB_##_devcb); + +/* + * OHCI USB Controller + */ + +class mcpx_ohci_device : public pci_device { +public: + mcpx_ohci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + void set_hack_callback(std::function hack) { hack_callback = hack; } + void plug_usb_device(int port, ohci_function *function); + + template static devcb_base &set_interrupt_handler(device_t &device, _Object object) { return downcast(device).m_interrupt_handler.set_callback(object); } + + DECLARE_READ32_MEMBER(ohci_r); + DECLARE_WRITE32_MEMBER(ohci_w); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + +private: + ohci_usb_controller *ohci_usb; + devcb_write_line m_interrupt_handler; + emu_timer *timer; + std::function hack_callback; + DECLARE_ADDRESS_MAP(ohci_mmio, 32); +}; + +extern const device_type MCPX_OHCI; + +#define MCFG_MCPX_OHCI_INTERRUPT_HANDLER(_devcb) \ + devcb = &mcpx_ohci_device::set_interrupt_handler(*device, DEVCB_##_devcb); + +/* + * Ethernet + */ + +class mcpx_eth_device : public pci_device { +public: + mcpx_eth_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_READ32_MEMBER(eth_r); + DECLARE_WRITE32_MEMBER(eth_w); + DECLARE_READ32_MEMBER(eth_io_r); + DECLARE_WRITE32_MEMBER(eth_io_w); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + DECLARE_ADDRESS_MAP(eth_mmio, 32); + DECLARE_ADDRESS_MAP(eth_io, 32); +}; + +extern const device_type MCPX_ETH; + +/* + * Audio Processing Unit + */ + +class mcpx_apu_device : public pci_device { +public: + mcpx_apu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + void set_cpu_tag(const char *_cpu_tag); + + DECLARE_READ32_MEMBER(apu_r); + DECLARE_WRITE32_MEMBER(apu_w); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + +private: + const char *cpu_tag; + cpu_device *cpu; + // APU contains 3 dsps: voice processor (VP) global processor (GP) encode processor (EP) + struct apu_state { + uint32_t memory[0x60000 / 4]; + uint32_t gpdsp_sgaddress; // global processor scatter-gather + uint32_t gpdsp_sgblocks; + uint32_t gpdsp_address; + uint32_t epdsp_sgaddress; // encoder processor scatter-gather + uint32_t epdsp_sgblocks; + uint32_t epdsp_sgaddress2; + uint32_t epdsp_sgblocks2; + int voice_number; + uint32_t voices_heap_blockaddr[1024]; + uint64_t voices_active[4]; //one bit for each voice: 1 playing 0 not + uint32_t voicedata_address; + int voices_frequency[256]; // sample rate + int voices_position[256]; // position in samples * 1000 + int voices_position_start[256]; // position in samples * 1000 + int voices_position_end[256]; // position in samples * 1000 + int voices_position_increment[256]; // position increment every 1ms * 1000 + emu_timer *timer; + address_space *space; + } apust; + DECLARE_ADDRESS_MAP(apu_mmio, 32); +}; + +extern const device_type MCPX_APU; + +#define MCFG_MCPX_APU_ADD(_tag, _cpu_tag) MCFG_PCI_DEVICE_ADD(_tag, MCPX_APU, 0x10de01b0, 0, 0, 0) \ + downcast(device)->set_cpu_tag(_cpu_tag); + +/* + * AC97 Audio Controller + */ + +class mcpx_ac97_audio_device : public pci_device { +public: + mcpx_ac97_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_READ32_MEMBER(ac97_audio_r); + DECLARE_WRITE32_MEMBER(ac97_audio_w); + DECLARE_READ32_MEMBER(ac97_audio_io0_r); + DECLARE_WRITE32_MEMBER(ac97_audio_io0_w); + DECLARE_READ32_MEMBER(ac97_audio_io1_r); + DECLARE_WRITE32_MEMBER(ac97_audio_io1_w); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + struct ac97_state { + uint32_t mixer_regs[0x84 / 4]; + uint32_t controller_regs[0x40 / 4]; + } ac97st; + DECLARE_ADDRESS_MAP(ac97_mmio, 32); + DECLARE_ADDRESS_MAP(ac97_io0, 32); + DECLARE_ADDRESS_MAP(ac97_io1, 32); +}; + +extern const device_type MCPX_AC97_AUDIO; + +/* + * AC97 Modem Controller + */ + +class mcpx_ac97_modem_device : public pci_device { +public: + mcpx_ac97_modem_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +}; + +extern const device_type MCPX_AC97_MODEM; + +/* + * IDE Controller + */ + +class mcpx_ide_device : public pci_device { +public: + mcpx_ide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + DECLARE_WRITE_LINE_MEMBER(ide_interrupt); + + template static devcb_base &set_interrupt_handler(device_t &device, _Object object) { return downcast(device).m_interrupt_handler.set_callback(object); } + +protected: + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + +private: + devcb_write_line m_interrupt_handler; + DECLARE_ADDRESS_MAP(mcpx_ide_io, 32); +}; + +extern const device_type MCPX_IDE; + +#define MCFG_MCPX_IDE_INTERRUPT_HANDLER(_devcb) \ + devcb = &mcpx_ide_device::set_interrupt_handler(*device, DEVCB_##_devcb); + +/* + * AGP Bridge + */ + +class nv2a_agp_device : public agp_bridge_device { +public: + nv2a_agp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +DECLARE_DEVICE_TYPE(NV2A_AGP, nv2a_agp_device) + +/* + * NV2A 3D Accelerator + */ + +class nv2a_gpu_device : public pci_device { +public: + nv2a_gpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + void set_cpu_tag(const char *_cpu_tag); + nv2a_renderer *debug_get_renderer() { return nvidia_nv2a; } + + template static devcb_base &set_interrupt_handler(device_t &device, _Object object) { return downcast(device).m_interrupt_handler.set_callback(object); } + + DECLARE_READ32_MEMBER(geforce_r); + DECLARE_WRITE32_MEMBER(geforce_w); + DECLARE_READ32_MEMBER(nv2a_mirror_r); + DECLARE_WRITE32_MEMBER(nv2a_mirror_w); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + nv2a_renderer *nvidia_nv2a; + const char *cpu_tag; + devcb_write_line m_interrupt_handler; + address_space *m_program; + DECLARE_ADDRESS_MAP(nv2a_mmio, 32); + DECLARE_ADDRESS_MAP(nv2a_mirror, 32); +}; + +DECLARE_DEVICE_TYPE(NV2A_GPU, nv2a_gpu_device) + +#define MCFG_MCPX_NV2A_GPU_CPU(_cpu_tag) \ + downcast(device)->set_cpu_tag(_cpu_tag); +#define MCFG_MCPX_NV2A_GPU_INTERRUPT_HANDLER(_devcb) \ + devcb = &nv2a_gpu_device::set_interrupt_handler(*device, DEVCB_##_devcb); + +#endif // MAME_INCLUDES_XBOX_PCI_H diff --git a/src/mame/includes/xbox_usb.h b/src/mame/includes/xbox_usb.h index bab0689e46d..bf32b1ad2ab 100644 --- a/src/mame/includes/xbox_usb.h +++ b/src/mame/includes/xbox_usb.h @@ -1,5 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Samuele Zannoli +#ifndef MAME_INCLUDES_XBOX_USB_H +#define MAME_INCLUDES_XBOX_USB_H #pragma once @@ -314,7 +316,7 @@ struct usb_device_string int size; }; -struct usb_device_interface_alternate +struct usb_device_interfac_alternate { uint8_t *position; int size; @@ -322,11 +324,11 @@ struct usb_device_interface_alternate std::forward_list endpoint_descriptors; }; -struct usb_device_interface +struct usb_device_interfac { uint8_t *position; int size; - std::forward_list alternate_settings; + std::forward_list alternate_settings; int selected_alternate; }; @@ -335,30 +337,29 @@ struct usb_device_configuration USBStandardConfigurationDescriptor configuration_descriptor; uint8_t *position; int size; - std::forward_list interfaces; + std::forward_list interfaces; }; -class ohci_function_device; // forward declaration +class ohci_function; // forward declaration -class ohci_usb_controller : public device_t +class ohci_usb_controller { public: - ohci_usb_controller(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ohci_usb_controller(); ~ohci_usb_controller() {} - void usb_ohci_plug(int port, ohci_function_device *function); + void usb_ohci_plug(int port, ohci_function *function); void usb_ohci_device_address_changed(int old_address, int new_address); + void set_cpu(cpu_device *cpu) { m_maincpu = cpu; } + void set_timer(emu_timer *timer) { ohcist.timer = timer; } + void set_irq_callbaclk(std::function callback) { irq_callback = callback; } - template static devcb_base &set_interrupt_handler(device_t &device, _Object object) { return downcast(device).m_interrupt_handler.set_callback(object); } + void start(); + void reset(); + void timer(emu_timer &timer, device_timer_id id, int param, void *ptr); DECLARE_READ32_MEMBER(read); DECLARE_WRITE32_MEMBER(write); -protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - private: void usb_ohci_interrupts(); void usb_ohci_read_endpoint_descriptor(uint32_t address); @@ -367,18 +368,18 @@ private: void usb_ohci_writeback_transfer_descriptor(uint32_t address); void usb_ohci_read_isochronous_transfer_descriptor(uint32_t address); void usb_ohci_writeback_isochronous_transfer_descriptor(uint32_t address); + std::function irq_callback; cpu_device *m_maincpu; - //required_device pic8259_1; struct { uint32_t hc_regs[256]; struct { - ohci_function_device *function; + ohci_function *function; int address; int delay; } ports[4 + 1]; struct { - ohci_function_device *function; + ohci_function *function; int port; } address[256]; emu_timer *timer; @@ -394,23 +395,16 @@ private: OHCITransferDescriptor transfer_descriptor; OHCIIsochronousTransferDescriptor isochronous_transfer_descriptor; } ohcist; - devcb_write_line m_interrupt_handler; }; -extern const device_type OHCI_USB_CONTROLLER; - -#define MCFG_OHCI_USB_CONTROLLER_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, OHCI_USB_CONTROLLER, 0) -#define MCFG_OHCI_USB_CONTROLLER_INTERRUPT_HANDLER(_devcb) \ - devcb = &ohci_usb_controller::set_interrupt_handler(*device, DEVCB_##_devcb); - -class ohci_function_device { +class ohci_function { public: - ohci_function_device(); - virtual void initialize(running_machine &machine, ohci_usb_controller *usb_bus_manager); + ohci_function(); + virtual void initialize(running_machine &machine); virtual void execute_reset(); virtual void execute_connect() {}; virtual void execute_disconnect() {}; + void set_bus_manager(ohci_usb_controller *usb_bus_manager); int execute_transfer(int endpoint, int pid, uint8_t *buffer, int size); protected: virtual int handle_nonstandard_request(int endpoint, USBSetupPacket *setup) { return -1; }; @@ -457,17 +451,17 @@ protected: std::forward_list configurations; std::forward_list device_strings; usb_device_configuration *latest_configuration; - usb_device_interface_alternate *latest_alternate; + usb_device_interfac_alternate *latest_alternate; usb_device_configuration *selected_configuration; }; -extern const device_type OHCI_GAME_CONTROLLER; +DECLARE_DEVICE_TYPE(OHCI_GAME_CONTROLLER, ohci_game_controller_device) -class ohci_game_controller_device : public device_t, public ohci_function_device +class ohci_game_controller_device : public device_t, public ohci_function { public: ohci_game_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - void initialize(running_machine &machine, ohci_usb_controller *usb_bus_manager) override; + void initialize(running_machine &machine) override; int handle_nonstandard_request(int endpoint, USBSetupPacket *setup) override; int handle_interrupt_pid(int endpoint, int pid, uint8_t *buffer, int size) override; @@ -495,3 +489,5 @@ private: required_ioport m_Black; // analog button required_ioport m_White; // analog button }; + +#endif // MAME_INCLUDES_XBOX_USB_H diff --git a/src/mame/includes/xerox820.h b/src/mame/includes/xerox820.h index 2969f58712c..b3f3fbdd8bf 100644 --- a/src/mame/includes/xerox820.h +++ b/src/mame/includes/xerox820.h @@ -66,36 +66,39 @@ public: m_400_460(0) { } + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + DECLARE_READ8_MEMBER( fdc_r ); + DECLARE_WRITE8_MEMBER( fdc_w ); + DECLARE_WRITE8_MEMBER( scroll_w ); + //DECLARE_WRITE8_MEMBER( x120_system_w ); + DECLARE_READ8_MEMBER( kbpio_pa_r ); + DECLARE_WRITE8_MEMBER( kbpio_pa_w ); + DECLARE_READ8_MEMBER( kbpio_pb_r ); + DECLARE_WRITE_LINE_MEMBER( fr_w ); + DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w ); + DECLARE_WRITE_LINE_MEMBER( fdc_drq_w ); + + TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick); + +protected: virtual void machine_start() override; virtual void machine_reset() override; - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - required_device m_maincpu; required_device m_kbpio; required_device m_ctc; required_device m_sio; - required_device m_fdc; + required_device m_fdc; required_device m_ram; required_device m_palette; required_device m_floppy0; required_device m_floppy1; - required_device m_kb; + required_device m_kb; required_memory_region m_rom; required_memory_region m_char_rom; required_shared_ptr m_video_ram; - DECLARE_READ8_MEMBER( fdc_r ); - DECLARE_WRITE8_MEMBER( fdc_w ); - DECLARE_WRITE8_MEMBER( scroll_w ); - //DECLARE_WRITE8_MEMBER( x120_system_w ); - DECLARE_READ8_MEMBER( kbpio_pa_r ); - DECLARE_WRITE8_MEMBER( kbpio_pa_w ); - DECLARE_READ8_MEMBER( kbpio_pb_r ); - DECLARE_WRITE_LINE_MEMBER( fr_w ); - DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w ); - DECLARE_WRITE_LINE_MEMBER( fdc_drq_w ); - virtual void bankswitch(int bank); void update_nmi(); @@ -112,27 +115,26 @@ public: bool m_fdc_drq; /* data request */ int m_8n5; /* 5.25" / 8" drive select */ int m_400_460; /* double sided disk detect */ - - TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick); }; class bigboard_state : public xerox820_state { public: bigboard_state(const machine_config &mconfig, device_type type, const char *tag) - : xerox820_state(mconfig, type, tag), - m_beeper(*this, "beeper") + : xerox820_state(mconfig, type, tag) + , m_beeper(*this, "beeper") { } - required_device m_beeper; + DECLARE_WRITE8_MEMBER( kbpio_pa_w ); +protected: virtual void machine_reset() override; - DECLARE_WRITE8_MEMBER( kbpio_pa_w ); + TIMER_CALLBACK_MEMBER(bigboard_beepoff); - bool m_bit5; + required_device m_beeper; - TIMER_CALLBACK_MEMBER(bigboard_beepoff); + bool m_bit5; }; class xerox820ii_state : public xerox820_state @@ -145,11 +147,6 @@ public: { } - required_device m_speaker; - required_device m_sasibus; - - virtual void machine_reset() override; - DECLARE_WRITE8_MEMBER( bell_w ); DECLARE_WRITE8_MEMBER( slden_w ); DECLARE_WRITE8_MEMBER( chrom_w ); @@ -159,7 +156,13 @@ public: DECLARE_WRITE8_MEMBER( rdpio_pb_w ); DECLARE_WRITE_LINE_MEMBER( rdpio_pardy_w ); +protected: + virtual void machine_reset() override; + void bankswitch(int bank) override; + + required_device m_speaker; + required_device m_sasibus; }; #endif // MAME_INCLUDES_XEROX820_H diff --git a/src/mame/includes/xexex.h b/src/mame/includes/xexex.h index a77801fe8e8..5dc6d0568f5 100644 --- a/src/mame/includes/xexex.h +++ b/src/mame/includes/xexex.h @@ -9,13 +9,13 @@ #include "video/k053250.h" #include "sound/flt_vol.h" #include "sound/k054539.h" -#include "machine/gen_latch.h" #include "machine/k053252.h" #include "video/k054156_k054157_k056832.h" #include "video/k053246_k053247_k055673.h" #include "video/k054338.h" #include "video/k053251.h" #include "video/konami_helper.h" +#include "machine/k054321.h" #include "screen.h" class xexex_state : public driver_device @@ -40,9 +40,7 @@ public: m_k054338(*this, "k054338"), m_palette(*this, "palette"), m_screen(*this, "screen"), - m_soundlatch(*this, "soundlatch"), - m_soundlatch2(*this, "soundlatch2"), - m_soundlatch3(*this, "soundlatch3") { } + m_k054321(*this, "k054321") { } /* memory pointers */ required_shared_ptr m_workram; @@ -78,19 +76,14 @@ public: required_device m_k054338; required_device m_palette; required_device m_screen; - required_device m_soundlatch; - required_device m_soundlatch2; - required_device m_soundlatch3; + required_device m_k054321; DECLARE_READ16_MEMBER(spriteram_mirror_r); DECLARE_WRITE16_MEMBER(spriteram_mirror_w); DECLARE_READ16_MEMBER(xexex_waitskip_r); DECLARE_READ16_MEMBER(control2_r); DECLARE_WRITE16_MEMBER(control2_w); - DECLARE_WRITE16_MEMBER(sound_cmd1_w); - DECLARE_WRITE16_MEMBER(sound_cmd2_w); DECLARE_WRITE16_MEMBER(sound_irq_w); - DECLARE_READ16_MEMBER(sound_status_r); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_DRIVER_INIT(xexex); virtual void machine_start() override; diff --git a/src/mame/includes/xmen.h b/src/mame/includes/xmen.h index 2e88cba6b2f..5422a7105b6 100644 --- a/src/mame/includes/xmen.h +++ b/src/mame/includes/xmen.h @@ -7,6 +7,7 @@ #include "video/k053251.h" #include "video/k052109.h" #include "video/konami_helper.h" +#include "machine/k054321.h" #include "screen.h" class xmen_state : public driver_device @@ -25,8 +26,7 @@ public: m_k053246(*this, "k053246"), m_k053251(*this, "k053251"), m_screen(*this, "screen"), - m_soundlatch(*this, "soundlatch"), - m_soundlatch2(*this, "soundlatch2"), + m_k054321(*this, "k054321"), m_z80bank(*this, "z80bank") { } /* video-related */ @@ -54,14 +54,10 @@ public: required_device m_k053246; required_device m_k053251; required_device m_screen; - required_device m_soundlatch; - required_device m_soundlatch2; + required_device m_k054321; required_memory_bank m_z80bank; DECLARE_WRITE16_MEMBER(eeprom_w); - DECLARE_READ16_MEMBER(sound_status_r); - DECLARE_WRITE16_MEMBER(sound_cmd_w); - DECLARE_WRITE16_MEMBER(sound_irq_w); DECLARE_WRITE16_MEMBER(xmen_18fa00_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_CUSTOM_INPUT_MEMBER(xmen_frame_r); @@ -71,7 +67,7 @@ public: uint32_t screen_update_xmen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_xmen6p_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_xmen6p_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_xmen6p(screen_device &screen, bool state); + DECLARE_WRITE_LINE_MEMBER(screen_vblank_xmen6p); TIMER_DEVICE_CALLBACK_MEMBER(xmen_scanline); K052109_CB_MEMBER(tile_callback); K053246_CB_MEMBER(sprite_callback); diff --git a/src/mame/includes/xor100.h b/src/mame/includes/xor100.h index 63423cbf5fb..1656fd18b3f 100644 --- a/src/mame/includes/xor100.h +++ b/src/mame/includes/xor100.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Curt Coder -#pragma once +#ifndef MAME_INCLUDES_XOR100_H +#define MAME_INCLUDES_XOR100_H -#ifndef __XOR100__ -#define __XOR100__ +#pragma once #include "bus/s100/s100.h" #include "cpu/z80/z80.h" @@ -48,24 +48,6 @@ public: m_rom(*this, Z80_TAG) { } - required_device m_maincpu; - required_device m_dbrg; - required_device m_uart_a; - required_device m_uart_b; - required_device m_fdc; - required_device m_ctc; - required_device m_ram; - required_device m_centronics; - required_device m_s100; - required_device m_floppy0; - required_device m_floppy1; - required_device m_floppy2; - required_device m_floppy3; - required_memory_region m_rom; - - virtual void machine_start() override; - virtual void machine_reset() override; - DECLARE_WRITE8_MEMBER( mmu_w ); DECLARE_WRITE8_MEMBER( prom_toggle_w ); DECLARE_READ8_MEMBER( prom_disable_r ); @@ -78,9 +60,37 @@ public: void fdc_intrq_w(bool state); void fdc_drq_w(bool state); + DECLARE_WRITE_LINE_MEMBER(com5016_fr_w); + DECLARE_WRITE_LINE_MEMBER(com5016_ft_w); + DECLARE_READ8_MEMBER(i8255_pc_r); + DECLARE_WRITE_LINE_MEMBER(ctc_z0_w); + DECLARE_WRITE_LINE_MEMBER(ctc_z1_w); + DECLARE_WRITE_LINE_MEMBER(ctc_z2_w); + DECLARE_WRITE_LINE_MEMBER(write_centronics_busy); + DECLARE_WRITE_LINE_MEMBER(write_centronics_select); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + void bankswitch(); void post_load(); + required_device m_maincpu; + required_device m_dbrg; + required_device m_uart_a; + required_device m_uart_b; + required_device m_fdc; + required_device m_ctc; + required_device m_ram; + required_device m_centronics; + required_device m_s100; + required_device m_floppy0; + required_device m_floppy1; + required_device m_floppy2; + required_device m_floppy3; + required_memory_region m_rom; + // memory state int m_mode; int m_bank; @@ -89,17 +99,9 @@ public: bool m_fdc_irq; bool m_fdc_drq; int m_fdc_dden; - DECLARE_WRITE_LINE_MEMBER(com5016_fr_w); - DECLARE_WRITE_LINE_MEMBER(com5016_ft_w); - DECLARE_READ8_MEMBER(i8255_pc_r); - DECLARE_WRITE_LINE_MEMBER(ctc_z0_w); - DECLARE_WRITE_LINE_MEMBER(ctc_z1_w); - DECLARE_WRITE_LINE_MEMBER(ctc_z2_w); int m_centronics_busy; int m_centronics_select; - DECLARE_WRITE_LINE_MEMBER(write_centronics_busy); - DECLARE_WRITE_LINE_MEMBER(write_centronics_select); }; -#endif +#endif // MAME_INCLUDES_XOR100_H diff --git a/src/mame/includes/z80ne.h b/src/mame/includes/z80ne.h index 502bb44b0ac..ffe4765b7f5 100644 --- a/src/mame/includes/z80ne.h +++ b/src/mame/includes/z80ne.h @@ -10,8 +10,10 @@ * ****************************************************************************/ -#ifndef Z80NE_H_ -#define Z80NE_H_ +#ifndef MAME_INCLUDES_Z80NE_H +#define MAME_INCLUDES_Z80NE_H + +#pragma once #include "video/mc6847.h" #include "imagedev/cassette.h" @@ -114,6 +116,7 @@ public: int m_lx383_downsampler; uint8_t m_lx385_ctrl; emu_timer *m_cassette_timer; + emu_timer *m_kbd_timer; z80ne_cass_data_t m_cass_data; wd17xx_state_t m_wd17xx_state; DECLARE_READ8_MEMBER(lx383_r); @@ -157,7 +160,7 @@ protected: optional_device m_floppy3; required_device m_cassette1; required_device m_cassette2; - optional_device m_wd1771; + optional_device m_wd1771; required_memory_region m_region_z80ne; optional_memory_bank m_bank1; optional_memory_bank m_bank2; @@ -189,4 +192,4 @@ protected: void reset_lx390_banking(); }; -#endif /* Z80NE_H_ */ +#endif // MAME_INCLUDES_Z80NE_H diff --git a/src/mame/includes/zorba.h b/src/mame/includes/zorba.h index 1c14b8399b3..14fa6bb41e2 100644 --- a/src/mame/includes/zorba.h +++ b/src/mame/includes/zorba.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Robbbert, Vas Crabb +#ifndef MAME_INCLUDES_ZORBA_H +#define MAME_INCLUDES_ZORBA_H + +#pragma once #include "sound/beep.h" @@ -95,7 +99,7 @@ private: required_device m_beep; - required_device m_fdc; + required_device m_fdc; required_device m_floppy0; required_device m_floppy1; @@ -111,3 +115,5 @@ private: uint8_t m_term_data; }; + +#endif // MAME_INCLUDES_ZORBA_H diff --git a/src/mame/layout/3bagflnz.lay b/src/mame/layout/3bagflnz.lay index 427634771bf..282c26644fb 100644 --- a/src/mame/layout/3bagflnz.lay +++ b/src/mame/layout/3bagflnz.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -91,7 +91,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -208,7 +208,6 @@ - @@ -239,78 +238,60 @@ - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - - - - - - diff --git a/src/mame/layout/3bagflvt.lay b/src/mame/layout/3bagflvt.lay index cd65820a595..9012047fcfc 100644 --- a/src/mame/layout/3bagflvt.lay +++ b/src/mame/layout/3bagflvt.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -235,7 +235,6 @@ - @@ -266,86 +265,66 @@ - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - - - - - - diff --git a/src/mame/layout/7smash.lay b/src/mame/layout/7smash.lay new file mode 100644 index 00000000000..64e0796a49b --- /dev/null +++ b/src/mame/layout/7smash.lay @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/acommand.lay b/src/mame/layout/acommand.lay new file mode 100644 index 00000000000..63296392793 --- /dev/null +++ b/src/mame/layout/acommand.lay @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/arcwins.lay b/src/mame/layout/arcwins.lay index 32132bb2419..47defc72cf7 100644 --- a/src/mame/layout/arcwins.lay +++ b/src/mame/layout/arcwins.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -235,7 +235,6 @@ - @@ -266,86 +265,66 @@ - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/arimk4nz.lay b/src/mame/layout/arimk4nz.lay index 6ef7f95aca6..5fd449f1c46 100644 --- a/src/mame/layout/arimk4nz.lay +++ b/src/mame/layout/arimk4nz.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -235,7 +235,6 @@ - @@ -266,86 +265,66 @@ - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/aristmk4.lay b/src/mame/layout/aristmk4.lay index ac14cd920e3..2d0c85ee22a 100644 --- a/src/mame/layout/aristmk4.lay +++ b/src/mame/layout/aristmk4.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -235,7 +235,6 @@ - @@ -266,86 +265,66 @@ - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/aristmk5.lay b/src/mame/layout/aristmk5.lay index e0e5fe12623..32caa00921c 100644 --- a/src/mame/layout/aristmk5.lay +++ b/src/mame/layout/aristmk5.lay @@ -83,8 +83,7 @@ - - + diff --git a/src/mame/layout/cgold2.lay b/src/mame/layout/cgold2.lay index e66b2bbfa24..9efda9144f0 100644 --- a/src/mame/layout/cgold2.lay +++ b/src/mame/layout/cgold2.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -91,7 +91,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -208,7 +208,6 @@ - @@ -239,78 +238,60 @@ - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/cnfball2.lay b/src/mame/layout/cnfball2.lay index fee4f1130e5..27f6d177644 100644 --- a/src/mame/layout/cnfball2.lay +++ b/src/mame/layout/cnfball2.lay @@ -34,6 +34,7 @@ + @@ -80,10 +81,8 @@ - - - - + + diff --git a/src/mame/layout/cqback.lay b/src/mame/layout/cqback.lay index ebdfa1feaf8..42d9a0e00c6 100644 --- a/src/mame/layout/cqback.lay +++ b/src/mame/layout/cqback.lay @@ -35,6 +35,7 @@ + @@ -82,10 +83,8 @@ - - - - + + @@ -173,6 +172,5 @@ - diff --git a/src/mame/layout/cuckoou.lay b/src/mame/layout/cuckoou.lay index a7e1f8d17df..6e2e218479c 100644 --- a/src/mame/layout/cuckoou.lay +++ b/src/mame/layout/cuckoou.lay @@ -33,7 +33,7 @@ - + diff --git a/src/mame/layout/eforest.lay b/src/mame/layout/eforest.lay index 62ee8a56bf8..c2c783e527c 100644 --- a/src/mame/layout/eforest.lay +++ b/src/mame/layout/eforest.lay @@ -1,19 +1,19 @@ - + - + - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -235,7 +235,6 @@ - @@ -266,86 +265,66 @@ - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/fhunter.lay b/src/mame/layout/fhunter.lay index 2a85e752263..12c0c79663b 100644 --- a/src/mame/layout/fhunter.lay +++ b/src/mame/layout/fhunter.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -91,7 +91,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -208,7 +208,6 @@ - @@ -239,78 +238,60 @@ - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/fidel_chesster.lay b/src/mame/layout/fidel_chesster.lay index 22bfb3bc735..1927d9d7e6a 100644 --- a/src/mame/layout/fidel_chesster.lay +++ b/src/mame/layout/fidel_chesster.lay @@ -197,7 +197,7 @@ - + @@ -393,7 +393,7 @@ - + diff --git a/src/mame/layout/fidel_csc.lay b/src/mame/layout/fidel_csc.lay index c4b883c3982..a35a459e1b4 100644 --- a/src/mame/layout/fidel_csc.lay +++ b/src/mame/layout/fidel_csc.lay @@ -225,7 +225,7 @@ - + @@ -594,7 +594,7 @@ - + diff --git a/src/mame/layout/fidel_desdis.lay b/src/mame/layout/fidel_desdis.lay index 06381c86b11..84b93b034fc 100644 --- a/src/mame/layout/fidel_desdis.lay +++ b/src/mame/layout/fidel_desdis.lay @@ -209,7 +209,7 @@ - + @@ -405,7 +405,7 @@ - + diff --git a/src/mame/layout/fidel_dsc.lay b/src/mame/layout/fidel_dsc.lay new file mode 100644 index 00000000000..1f4ac23da0d --- /dev/null +++ b/src/mame/layout/fidel_dsc.lay @@ -0,0 +1,531 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/fidel_sc12.lay b/src/mame/layout/fidel_sc12.lay index e296533a269..69fc90284a5 100644 --- a/src/mame/layout/fidel_sc12.lay +++ b/src/mame/layout/fidel_sc12.lay @@ -251,7 +251,7 @@ - + @@ -484,7 +484,7 @@ - + diff --git a/src/mame/layout/fidel_sc6.lay b/src/mame/layout/fidel_sc6.lay new file mode 100644 index 00000000000..f3cbcd49389 --- /dev/null +++ b/src/mame/layout/fidel_sc6.lay @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/fidel_sc8.lay b/src/mame/layout/fidel_sc8.lay new file mode 100644 index 00000000000..bb624815da6 --- /dev/null +++ b/src/mame/layout/fidel_sc8.lay @@ -0,0 +1,398 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/fidel_sc9.lay b/src/mame/layout/fidel_sc9.lay index ebf037f5565..b3685ea7e91 100644 --- a/src/mame/layout/fidel_sc9.lay +++ b/src/mame/layout/fidel_sc9.lay @@ -155,7 +155,7 @@ - + @@ -390,7 +390,7 @@ - + diff --git a/src/mame/layout/fidel_su9.lay b/src/mame/layout/fidel_su9.lay index 61e26e8a759..043cdf1f704 100644 --- a/src/mame/layout/fidel_su9.lay +++ b/src/mame/layout/fidel_su9.lay @@ -169,7 +169,7 @@ - + @@ -429,7 +429,7 @@ - + diff --git a/src/mame/layout/fidel_vsc.lay b/src/mame/layout/fidel_vsc.lay index fcd23761d06..cc112db62f3 100644 --- a/src/mame/layout/fidel_vsc.lay +++ b/src/mame/layout/fidel_vsc.lay @@ -142,7 +142,7 @@ - + @@ -422,7 +422,7 @@ - + diff --git a/src/mame/layout/fvrpitch.lay b/src/mame/layout/fvrpitch.lay index b134fe6356e..4432afabff3 100644 --- a/src/mame/layout/fvrpitch.lay +++ b/src/mame/layout/fvrpitch.lay @@ -1,84 +1,84 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -91,66 +91,66 @@ - + - + - + - + - + - + - + - + - + - + @@ -208,7 +208,6 @@ - @@ -239,78 +238,60 @@ - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/gldnpkr.lay b/src/mame/layout/gldnpkr.lay index 299680dfd00..9b0da188472 100644 --- a/src/mame/layout/gldnpkr.lay +++ b/src/mame/layout/gldnpkr.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -66,7 +66,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -226,74 +226,57 @@ - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/goldenc.lay b/src/mame/layout/goldenc.lay index 2551f4d0fa0..9a0fccd541a 100644 --- a/src/mame/layout/goldenc.lay +++ b/src/mame/layout/goldenc.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -235,7 +235,6 @@ - @@ -266,86 +265,66 @@ - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/gotcha.lay b/src/mame/layout/gotcha.lay index d546cb5421f..1e4539d3baf 100644 --- a/src/mame/layout/gotcha.lay +++ b/src/mame/layout/gotcha.lay @@ -2,7 +2,7 @@ diff --git a/src/mame/layout/gunnrose.lay b/src/mame/layout/gunnrose.lay index 541e3184f6d..46f74db93bd 100644 --- a/src/mame/layout/gunnrose.lay +++ b/src/mame/layout/gunnrose.lay @@ -1,85 +1,85 @@ - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + - + - - + - + - + - + - + - + - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,40 +118,40 @@ - + - + - + - + - + - + - + - + @@ -239,78 +239,60 @@ - - + - - + - - + + + + - - - + + - - - + + - + - - + - - + - - + - - + - - + - - - - - - - - - - + - - + - diff --git a/src/mame/layout/h2hfootb.lay b/src/mame/layout/h2hfootb.lay index e00c99e2f04..f66e8d26107 100644 --- a/src/mame/layout/h2hfootb.lay +++ b/src/mame/layout/h2hfootb.lay @@ -34,6 +34,7 @@ + @@ -81,10 +82,8 @@ - - - - + + diff --git a/src/mame/layout/ie15.lay b/src/mame/layout/ie15.lay deleted file mode 100644 index 38b829ba317..00000000000 --- a/src/mame/layout/ie15.lay +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mame/layout/jclub2.lay b/src/mame/layout/jclub2.lay new file mode 100644 index 00000000000..6686bd5e9dc --- /dev/null +++ b/src/mame/layout/jclub2.lay @@ -0,0 +1,635 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/jclub2o.lay b/src/mame/layout/jclub2o.lay new file mode 100644 index 00000000000..259d0ccbaae --- /dev/null +++ b/src/mame/layout/jclub2o.lay @@ -0,0 +1,605 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/kgbird.lay b/src/mame/layout/kgbird.lay index c6e702273b1..965ff84f6ed 100644 --- a/src/mame/layout/kgbird.lay +++ b/src/mame/layout/kgbird.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -235,7 +235,6 @@ - @@ -266,86 +265,66 @@ - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/magimaska.lay b/src/mame/layout/magimaska.lay index a1a5147b680..809866f39d3 100644 --- a/src/mame/layout/magimaska.lay +++ b/src/mame/layout/magimaska.lay @@ -33,7 +33,7 @@ - + diff --git a/src/mame/layout/novag_presto.lay b/src/mame/layout/novag_presto.lay new file mode 100644 index 00000000000..3bf1afb89f9 --- /dev/null +++ b/src/mame/layout/novag_presto.lay @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/novag_supercon.lay b/src/mame/layout/novag_supercon.lay index 7df19dd70ac..5c45e200599 100644 --- a/src/mame/layout/novag_supercon.lay +++ b/src/mame/layout/novag_supercon.lay @@ -92,7 +92,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -384,7 +384,7 @@ - + @@ -431,7 +431,7 @@ - + diff --git a/src/mame/layout/one4all.lay b/src/mame/layout/one4all.lay new file mode 100644 index 00000000000..ca35246e07d --- /dev/null +++ b/src/mame/layout/one4all.lay @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/pasha2.lay b/src/mame/layout/pasha2.lay new file mode 100644 index 00000000000..0eee5863328 --- /dev/null +++ b/src/mame/layout/pasha2.lay @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/qnilecea.lay b/src/mame/layout/qnilecea.lay index b4fd588562f..0153fcbe7f3 100644 --- a/src/mame/layout/qnilecea.lay +++ b/src/mame/layout/qnilecea.lay @@ -33,7 +33,7 @@ - + diff --git a/src/mame/layout/qnilenl.lay b/src/mame/layout/qnilenl.lay new file mode 100644 index 00000000000..6f6ecf7751e --- /dev/null +++ b/src/mame/layout/qnilenl.lay @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/sbuk2.lay b/src/mame/layout/sbuk2.lay index 336e5c2e560..4fcf1b9f818 100644 --- a/src/mame/layout/sbuk2.lay +++ b/src/mame/layout/sbuk2.lay @@ -65,14 +65,14 @@ - + - + @@ -168,7 +168,7 @@ - + diff --git a/src/mame/layout/tbreakup.lay b/src/mame/layout/tbreakup.lay index f203a23fee9..c5afd0c4336 100644 --- a/src/mame/layout/tbreakup.lay +++ b/src/mame/layout/tbreakup.lay @@ -39,9 +39,6 @@ - - - @@ -52,7 +49,6 @@ - @@ -66,66 +62,63 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/ti25503.lay b/src/mame/layout/ti25503.lay new file mode 100644 index 00000000000..fd55bcf1c80 --- /dev/null +++ b/src/mame/layout/ti25503.lay @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/topgear.lay b/src/mame/layout/topgear.lay index 6a574ddebe3..a5ce112789a 100644 --- a/src/mame/layout/topgear.lay +++ b/src/mame/layout/topgear.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -91,7 +91,7 @@ - + @@ -156,7 +156,6 @@ - @@ -187,62 +186,48 @@ - - + - - + - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/layout/toutangonl.lay b/src/mame/layout/toutangonl.lay new file mode 100644 index 00000000000..7f91ec634e2 --- /dev/null +++ b/src/mame/layout/toutangonl.lay @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/us2pfball.lay b/src/mame/layout/us2pfball.lay new file mode 100644 index 00000000000..508e530637d --- /dev/null +++ b/src/mame/layout/us2pfball.lay @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/wildone.lay b/src/mame/layout/wildone.lay index 541e3184f6d..ab83eedc39d 100644 --- a/src/mame/layout/wildone.lay +++ b/src/mame/layout/wildone.lay @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -66,7 +66,7 @@ - + @@ -79,7 +79,7 @@ - + @@ -92,7 +92,7 @@ - + @@ -105,7 +105,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -239,78 +239,60 @@ - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - - - - - + - - + - diff --git a/src/mame/machine/315-5838_317-0229_comp.cpp b/src/mame/machine/315-5838_317-0229_comp.cpp index dd03de19e1d..b54ed9a51ae 100644 --- a/src/mame/machine/315-5838_317-0229_comp.cpp +++ b/src/mame/machine/315-5838_317-0229_comp.cpp @@ -48,12 +48,12 @@ #include "emu.h" #include "machine/315-5838_317-0229_comp.h" -const device_type SEGA315_5838_COMP = device_creator; +DEFINE_DEVICE_TYPE(SEGA315_5838_COMP, sega_315_5838_comp_device, "sega315_5838", "Sega 315-4838 / 317-0029 Compression (Encryption?)") //#define DEBUG_DATA_DUMP sega_315_5838_comp_device::sega_315_5838_comp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGA315_5838_COMP, "Sega 315-5838 / 317-0029 Compression (Encryption?)", tag, owner, clock, "sega315_5838", __FILE__) + : device_t(mconfig, SEGA315_5838_COMP, tag, owner, clock) { } diff --git a/src/mame/machine/315-5838_317-0229_comp.h b/src/mame/machine/315-5838_317-0229_comp.h index 1d741c73ac3..0990472fadb 100644 --- a/src/mame/machine/315-5838_317-0229_comp.h +++ b/src/mame/machine/315-5838_317-0229_comp.h @@ -1,16 +1,13 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_315_5838_371_0229_COMP_H +#define MAME_MACHINE_315_5838_371_0229_COMP_H #pragma once -#ifndef __SEGA315_5838_COMP__ -#define __SEGA315_5838_COMP__ - -#define CHANNELS 2 - typedef device_delegate sega_dec_read_delegate; -extern const device_type SEGA315_5838_COMP; +DECLARE_DEVICE_TYPE(SEGA315_5838_COMP, sega_315_5838_comp_device) #define MCFG_SET_5838_READ_CALLBACK_CH1( _class, _method) \ sega_315_5838_comp_device::set_read_cb_ch1(*device, sega_m2_read_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); @@ -24,8 +21,6 @@ public: // construction/destruction sega_315_5838_comp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - sega_dec_read_delegate m_read_ch2; - static void set_read_cb_ch1(device_t &device,sega_dec_read_delegate readcb) { sega_315_5838_comp_device &dev = downcast(device); @@ -65,6 +60,10 @@ protected: virtual void device_reset() override; private: + static constexpr unsigned CHANNELS = 2; + + sega_dec_read_delegate m_read_ch2; + uint16_t m_decathlt_prottable1[24]; uint16_t m_decathlt_dictionaryy[128]; @@ -84,12 +83,10 @@ private: channel_type m_channel[2]; - - // Doa int m_protstate; int m_prot_a; uint8_t m_protram[256]; }; -#endif +#endif // MAME_MACHINE_315_5838_371_0229_COMP_H diff --git a/src/mame/machine/315-5881_crypt.cpp b/src/mame/machine/315-5881_crypt.cpp index 124f430c4e1..f7f861339e2 100644 --- a/src/mame/machine/315-5881_crypt.cpp +++ b/src/mame/machine/315-5881_crypt.cpp @@ -17,11 +17,11 @@ #include "emu.h" #include "machine/315-5881_crypt.h" -const device_type SEGA315_5881_CRYPT = device_creator; +DEFINE_DEVICE_TYPE(SEGA315_5881_CRYPT, sega_315_5881_crypt_device, "sega315_5881", "Sega 315-5881 Encryption") sega_315_5881_crypt_device::sega_315_5881_crypt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGA315_5881_CRYPT, "Sega 315-5881 Encryption", tag, owner, clock, "sega315_5881", __FILE__) + : device_t(mconfig, SEGA315_5881_CRYPT, tag, owner, clock) { } diff --git a/src/mame/machine/315-5881_crypt.h b/src/mame/machine/315-5881_crypt.h index 109ec4c23b9..62c0de16e9a 100644 --- a/src/mame/machine/315-5881_crypt.h +++ b/src/mame/machine/315-5881_crypt.h @@ -1,14 +1,14 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_315_5881_CRYPT_H +#define MAME_MACHINE_315_5881_CRYPT_H #pragma once -#ifndef __SEGA315_5881_CRYPT__ -#define __SEGA315_5881_CRYPT__ typedef device_delegate sega_m2_read_delegate; -extern const device_type SEGA315_5881_CRYPT; +DECLARE_DEVICE_TYPE(SEGA315_5881_CRYPT, sega_315_5881_crypt_device) #define MCFG_SET_READ_CALLBACK( _class, _method) \ sega_315_5881_crypt_device::set_read_cb(*device, sega_m2_read_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); @@ -97,4 +97,4 @@ private: }; -#endif +#endif // MAME_MACHINE_315_5881_CRYPT_H diff --git a/src/mame/machine/315_5296.cpp b/src/mame/machine/315_5296.cpp index 15621dc3cda..c169671020d 100644 --- a/src/mame/machine/315_5296.cpp +++ b/src/mame/machine/315_5296.cpp @@ -26,14 +26,14 @@ #include "machine/315_5296.h" -const device_type SEGA_315_5296 = device_creator; +DEFINE_DEVICE_TYPE(SEGA_315_5296, sega_315_5296_device, "315_5296", "Sega 315-5296 I/O") //------------------------------------------------- // sega_315_5296_device - constructor //------------------------------------------------- sega_315_5296_device::sega_315_5296_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGA_315_5296, "Sega 315-5296 I/O", tag, owner, clock, "315_5296", __FILE__), + : device_t(mconfig, SEGA_315_5296, tag, owner, clock), m_in_pa_cb(*this), m_in_pb_cb(*this), m_in_pc_cb(*this), @@ -190,7 +190,10 @@ WRITE8_MEMBER( sega_315_5296_device::write ) for (int i = 0; i < 8; i++) { if ((m_dir ^ data) & (1 << i)) + { + logerror("Port %c configured for output\n", 'A' + i); (*m_out_port_cb[i])((offs_t)i, (data & 1 << i) ? m_output_latch[i] : 0); + } } m_dir = data; diff --git a/src/mame/machine/315_5296.h b/src/mame/machine/315_5296.h index f66064895c0..f02e82f1ca5 100644 --- a/src/mame/machine/315_5296.h +++ b/src/mame/machine/315_5296.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_315_5296_H +#define MAME_MACHINE_315_5296_H -#ifndef _SEGA_315_5296_H -#define _SEGA_315_5296_H +#pragma once @@ -139,7 +139,7 @@ private: }; // device type definition -extern const device_type SEGA_315_5296; +DECLARE_DEVICE_TYPE(SEGA_315_5296, sega_315_5296_device) -#endif /* _SEGA_315_5296_H */ +#endif // MAME_MACHINE_315_5296_H diff --git a/src/mame/machine/6883sam.cpp b/src/mame/machine/6883sam.cpp index ecca3bd78bc..d5d064167dd 100644 --- a/src/mame/machine/6883sam.cpp +++ b/src/mame/machine/6883sam.cpp @@ -2,7 +2,7 @@ // copyright-holders:Nathan Woods /*************************************************************************** - 6883sam.c + 6883sam.cpp Motorola 6883 Synchronous Address Multiplexer @@ -59,7 +59,7 @@ #define LOG_SAM 0 -const device_type SAM6883 = device_creator; +DEFINE_DEVICE_TYPE(SAM6883, sam6883_device, "sam6883", "MC6883 SAM") @@ -72,7 +72,7 @@ const device_type SAM6883 = device_creator; //------------------------------------------------- sam6883_device::sam6883_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SAM6883, "SAM6883", tag, owner, clock, "sam6883", __FILE__), + : device_t(mconfig, SAM6883, tag, owner, clock), m_cpu_tag(nullptr), m_cpu_space_ref(AS_PROGRAM), m_read_res(*this), @@ -330,7 +330,7 @@ void sam6883_friend_device::update_cpu_clock(void) int speed = (m_sam_state & (SAM_STATE_R1|SAM_STATE_R0)) / SAM_STATE_R0; // the line below is weird because we are not strictly emulating the M6809E with emphasis on the 'E' - m_cpu->set_clock_scale(speed ? 2 : 1); + m_cpu->owner()->set_clock_scale(speed ? 2 : 1); } diff --git a/src/mame/machine/6883sam.h b/src/mame/machine/6883sam.h index 02bfd0603ae..1a2ce5bd045 100644 --- a/src/mame/machine/6883sam.h +++ b/src/mame/machine/6883sam.h @@ -8,10 +8,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_MACHINE_6883SAM_H +#define MAME_MACHINE_6883SAM_H -#ifndef __6883SAM__ -#define __6883SAM__ +#pragma once #define MCFG_SAM6883_ADD(_tag, _clock, _cputag, _cpuspace) \ @@ -88,7 +88,7 @@ class sam6883_device : public device_t, public sam6883_friend_device public: sam6883_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_res_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_res.set_callback(object); } + template static devcb_base &set_res_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_res.set_callback(std::forward(cb)); } static void configure_cpu(device_t &device, const char *tag, address_spacenum space) { @@ -151,7 +151,7 @@ private: // represents one of the memory "spaces" (e.g. - $8000-$9FFF) that // can ultimately point to a bank - template + template class sam_space { public: @@ -173,7 +173,7 @@ private: // incidentals address_space * m_cpu_space; - devcb_read8 m_read_res; + devcb_read8 m_read_res; sam_bank m_banks[8]; sam_space<0x0000, 0x7FFF> m_space_0000; sam_space<0x8000, 0x9FFF> m_space_8000; @@ -260,6 +260,6 @@ private: void update_memory(void); }; -extern const device_type SAM6883; +DECLARE_DEVICE_TYPE(SAM6883, sam6883_device) -#endif /* __6883SAM__ */ +#endif // MAME_MACHINE_6883SAM_H diff --git a/src/mame/machine/abc1600mac.cpp b/src/mame/machine/abc1600mac.cpp index 16e2338a9b2..3b3e812c53e 100644 --- a/src/mame/machine/abc1600mac.cpp +++ b/src/mame/machine/abc1600mac.cpp @@ -54,7 +54,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type ABC1600_MAC = device_creator; +DEFINE_DEVICE_TYPE(ABC1600_MAC, abc1600_mac_device, "abc1600mac", "ABC 1600 MAC") DEVICE_ADDRESS_MAP_START( map, 8, abc1600_mac_device ) @@ -110,7 +110,7 @@ const tiny_rom_entry *abc1600_mac_device::device_rom_region() const //------------------------------------------------- abc1600_mac_device::abc1600_mac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, ABC1600_MAC, "ABC 1600 MAC", tag, owner, clock, "abc1600mac", __FILE__), + device_t(mconfig, ABC1600_MAC, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("program", ENDIANNESS_LITTLE, 8, 22, 0, *ADDRESS_MAP_NAME(program_map)), m_rom(*this, "boot"), diff --git a/src/mame/machine/abc1600mac.h b/src/mame/machine/abc1600mac.h index a13a7bf40d0..78edac40e1a 100644 --- a/src/mame/machine/abc1600mac.h +++ b/src/mame/machine/abc1600mac.h @@ -5,11 +5,11 @@ Luxor ABC 1600 Memory Access Controller emulation **********************************************************************/ +#ifndef MAME_MACHINE_ABC1600MAC_H +#define MAME_MACHINE_ABC1600MAC_H #pragma once -#ifndef __ABC1600_MAC__ -#define __ABC1600_MAC__ #include "cpu/m68000/m68000.h" #include "machine/watchdog.h" @@ -132,8 +132,7 @@ private: // device type definition -extern const device_type ABC1600_MAC; +DECLARE_DEVICE_TYPE(ABC1600_MAC, abc1600_mac_device) - -#endif +#endif // MAME_MACHINE_ABC1600MAC_H diff --git a/src/mame/machine/abc80kb.cpp b/src/mame/machine/abc80kb.cpp index afefb8cf5d8..d689ea88c1f 100644 --- a/src/mame/machine/abc80kb.cpp +++ b/src/mame/machine/abc80kb.cpp @@ -74,6 +74,8 @@ Notes: #include "emu.h" #include "abc80kb.h" +#include "cpu/mcs48/mcs48.h" + //************************************************************************** @@ -88,7 +90,7 @@ Notes: // DEVICE DEFINITIONS //************************************************************************** -const device_type ABC80_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(ABC80_KEYBOARD, abc80_keyboard_device, "abc80kb", "ABC-80 Keyboard") //------------------------------------------------- @@ -169,9 +171,9 @@ ioport_constructor abc80_keyboard_device::device_input_ports() const //------------------------------------------------- abc80_keyboard_device::abc80_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ABC80_KEYBOARD, "ABC-80 Keyboard", tag, owner, clock, "abc80kb", __FILE__), - m_write_keydown(*this), - m_maincpu(*this, I8048_TAG) + : device_t(mconfig, ABC80_KEYBOARD, tag, owner, clock) + , m_write_keydown(*this) + , m_maincpu(*this, I8048_TAG) { } diff --git a/src/mame/machine/abc80kb.h b/src/mame/machine/abc80kb.h index 67beace62b3..6dfe5d9175d 100644 --- a/src/mame/machine/abc80kb.h +++ b/src/mame/machine/abc80kb.h @@ -5,14 +5,11 @@ Luxor ABC-80 keyboard emulation **********************************************************************/ +#ifndef MAME_MACHINE_ABC80KB_H +#define MAME_MACHINE_ABC80KB_H #pragma once -#ifndef __ABC80_KEYBOARD__ -#define __ABC80_KEYBOARD__ - -#include "cpu/mcs48/mcs48.h" - //************************************************************************** @@ -66,8 +63,8 @@ private: // device type definition -extern const device_type ABC80_KEYBOARD; +DECLARE_DEVICE_TYPE(ABC80_KEYBOARD, abc80_keyboard_device) -#endif +#endif // MAME_MACHINE_ABC80KB_H diff --git a/src/mame/machine/advision.cpp b/src/mame/machine/advision.cpp index d75589a9f0c..adc01887ead 100644 --- a/src/mame/machine/advision.cpp +++ b/src/mame/machine/advision.cpp @@ -157,7 +157,7 @@ WRITE8_MEMBER( advision_state::av_control_w ) m_video_bank = (data & 0xe0) >> 5; } -READ8_MEMBER( advision_state::vsync_r ) +READ_LINE_MEMBER( advision_state::vsync_r ) { if (m_frame_start) { diff --git a/src/mame/machine/alpha8201.cpp b/src/mame/machine/alpha8201.cpp index 9aa3522329c..f277f989894 100644 --- a/src/mame/machine/alpha8201.cpp +++ b/src/mame/machine/alpha8201.cpp @@ -277,15 +277,15 @@ Notes: /**************************************************************************/ -const device_type ALPHA_8201 = device_creator; +DEFINE_DEVICE_TYPE(ALPHA_8201, alpha_8201_device, "alpha8201", "ALPHA-8201") //------------------------------------------------- // alpha_8201_device - constructor //------------------------------------------------- alpha_8201_device::alpha_8201_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, ALPHA_8201, "ALPHA-8201", tag, owner, clock, "alpha8201", __FILE__), - m_mcu(*this, "mcu") + : device_t(mconfig, ALPHA_8201, tag, owner, clock) + , m_mcu(*this, "mcu") { } @@ -372,7 +372,7 @@ READ8_MEMBER(alpha_8201_device::mcu_data_r) else logerror("%s: MCU side invalid read\n", tag()); - if (offset == HMCS40_PORT_R0X) + if (offset == hmcs40_cpu_device::PORT_R0X) ret >>= 4; return ret & 0xf; } diff --git a/src/mame/machine/alpha8201.h b/src/mame/machine/alpha8201.h index c116d2cbf92..2a6250f7dc0 100644 --- a/src/mame/machine/alpha8201.h +++ b/src/mame/machine/alpha8201.h @@ -6,8 +6,8 @@ ***************************************************************************/ -#ifndef _ALPHA8201_H_ -#define _ALPHA8201_H_ +#ifndef MAME_MACHINE_ALPHA8201_H +#define MAME_MACHINE_ALPHA8201_H class alpha_8201_device : public device_t @@ -48,7 +48,7 @@ private: }; -extern const device_type ALPHA_8201; +DECLARE_DEVICE_TYPE(ALPHA_8201, alpha_8201_device) -#endif /* _ALPHA8201_H_ */ +#endif // MAME_MACHINE_ALPHA8201_H diff --git a/src/mame/machine/amiga.cpp b/src/mame/machine/amiga.cpp index 7eb00839867..dc279456348 100644 --- a/src/mame/machine/amiga.cpp +++ b/src/mame/machine/amiga.cpp @@ -156,9 +156,10 @@ void amiga_state::machine_start() m_irq_timer = timer_alloc(TIMER_AMIGA_IRQ); m_blitter_timer = timer_alloc(TIMER_AMIGA_BLITTER); m_serial_timer = timer_alloc(TIMER_SERIAL); + m_scanline_timer = timer_alloc(TIMER_SCANLINE); // start the scanline timer - timer_set(m_screen->time_until_pos(0), TIMER_SCANLINE); + m_scanline_timer->adjust(m_screen->time_until_pos(0)); } WRITE_LINE_MEMBER( amiga_state::m68k_reset ) @@ -297,7 +298,7 @@ TIMER_CALLBACK_MEMBER( amiga_state::scanline_callback ) // set timer for next line scanline = (scanline + 1) % m_screen->height(); - timer_set(m_screen->time_until_pos(scanline), TIMER_SCANLINE, scanline); + m_scanline_timer->adjust(m_screen->time_until_pos(scanline), scanline); } diff --git a/src/mame/machine/amstrad.cpp b/src/mame/machine/amstrad.cpp index 8e7d114e1ae..95c5aa5c768 100644 --- a/src/mame/machine/amstrad.cpp +++ b/src/mame/machine/amstrad.cpp @@ -1168,7 +1168,7 @@ void amstrad_state::amstrad_setLowerRom() if ((m_gate_array.mrer & (1<<2)) == 0 && m_gate_array.romdis == 0) { if (m_exp) - m_exp->set_mapping(MAP_LOWER); + m_exp->set_mapping(device_cpc_expansion_card_interface::MAP_LOWER); } } else // CPC+/GX4000 @@ -1235,7 +1235,7 @@ void amstrad_state::amstrad_setLowerRom() m_bank1->set_base(m_region_cart->base()); m_bank2->set_base(m_region_cart->base() + 0x2000); if (m_exp) - m_exp->set_mapping(MAP_LOWER); + m_exp->set_mapping(device_cpc_expansion_card_interface::MAP_LOWER); } } } @@ -1270,7 +1270,7 @@ void amstrad_state::amstrad_setUpperRom() if ( ! ( m_gate_array.mrer & 0x08 ) && m_gate_array.romdis == 0) { if (m_exp) - m_exp->set_mapping(MAP_UPPER); + m_exp->set_mapping(device_cpc_expansion_card_interface::MAP_UPPER); } } @@ -2462,7 +2462,7 @@ void amstrad_state::amstrad_rethinkMemory() /* mappings for other expansion devices */ if (m_exp) - m_exp->set_mapping(MAP_OTHER); + m_exp->set_mapping(device_cpc_expansion_card_interface::MAP_OTHER); } @@ -2476,7 +2476,7 @@ void amstrad_state::kccomp_reset_machine() } -void amstrad_state::screen_eof_amstrad(screen_device &screen, bool state) +WRITE_LINE_MEMBER(amstrad_state::screen_vblank_amstrad) { // rising edge if (state) @@ -3007,7 +3007,7 @@ void amstrad_state::enumerate_roms() { char str[20]; sprintf(str, "rom%i", i + 1); - rom_image_device* romimage = romexp->subdevice(str); + cpc_rom_image_device* romimage = romexp->subdevice(str); if(romimage != nullptr && romimage->base() != nullptr) { m_Amstrad_ROM_Table[m_rom_count] = romimage->base(); diff --git a/src/mame/machine/apollo.cpp b/src/mame/machine/apollo.cpp index 7ed02aaf7a8..db79e533abf 100644 --- a/src/mame/machine/apollo.cpp +++ b/src/mame/machine/apollo.cpp @@ -137,10 +137,10 @@ private: // internal state }; -const device_type APOLLO_CONF = device_creator; +DEFINE_DEVICE_TYPE(APOLLO_CONF, apollo_config_device, "apollo_config", "Apollo Configuration") apollo_config_device::apollo_config_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, APOLLO_CONF, "Apollo Configuration", tag, owner, clock, "apollo_config", __FILE__) + : device_t(mconfig, APOLLO_CONF, tag, owner, clock) { } @@ -712,9 +712,8 @@ TIMER_CALLBACK_MEMBER( apollo_state::apollo_rtc_timer ) #undef VERBOSE #define VERBOSE 0 -apollo_sio::apollo_sio(const machine_config &mconfig, const char *tag, - device_t *owner, uint32_t clock) : - mc68681_base_device(mconfig, APOLLO_SIO, "DN3000/DS3500 SIO", tag, owner, clock, "apollo_sio", __FILE__), +apollo_sio::apollo_sio(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + mc68681_base_device(mconfig, APOLLO_SIO, tag, owner, clock), m_csrb(0), m_ip6(0) { @@ -809,7 +808,7 @@ WRITE8_MEMBER( apollo_sio::write ) } // device type definition -const device_type APOLLO_SIO = device_creator; +DEFINE_DEVICE_TYPE(APOLLO_SIO, apollo_sio, "apollo_sio", "DN3000/DS3500 SIO") WRITE_LINE_MEMBER(apollo_state::sio_irq_handler) { @@ -862,16 +861,15 @@ WRITE_LINE_MEMBER(apollo_state::sio2_irq_handler) /*** Apollo Node ID device ***/ // device type definition -const device_type APOLLO_NI = device_creator ; +DEFINE_DEVICE_TYPE(APOLLO_NI, apollo_ni, "node_id", "Apollo Node ID") //------------------------------------------------- // apollo_ni - constructor //------------------------------------------------- -apollo_ni::apollo_ni(const machine_config &mconfig, const char *tag, - device_t *owner, uint32_t clock) : - device_t(mconfig, APOLLO_NI, "Node ID", tag, owner, clock, "node_id", - __FILE__), device_image_interface(mconfig, *this) +apollo_ni::apollo_ni(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, APOLLO_NI, tag, owner, clock), + device_image_interface(mconfig, *this) { } @@ -1263,17 +1261,16 @@ MACHINE_RESET_MEMBER(apollo_state,apollo) ***************************************************************************/ // device type definition -const device_type APOLLO_STDIO = device_creator ; +DEFINE_DEVICE_TYPE(APOLLO_STDIO, apollo_stdio_device, "apollo_stdio", "Apollo STDIO") //------------------------------------------------- // apollo_stdio_device - constructor //------------------------------------------------- -apollo_stdio_device::apollo_stdio_device(const machine_config &mconfig, - const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, APOLLO_STDIO, "Apollo STDIO", tag, owner, clock, - "apollo_stdio", __FILE__), device_serial_interface(mconfig, *this), - m_tx_w(*this) +apollo_stdio_device::apollo_stdio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, APOLLO_STDIO, tag, owner, clock), + device_serial_interface(mconfig, *this), + m_tx_w(*this) { } diff --git a/src/mame/machine/apollo_dbg.h b/src/mame/machine/apollo_dbg.h index 3ce08a200f4..f9f77b8b8d7 100644 --- a/src/mame/machine/apollo_dbg.h +++ b/src/mame/machine/apollo_dbg.h @@ -8,12 +8,14 @@ * */ +#ifndef MAME_MACHINE_APOLLO_DBG_H +#define MAME_MACHINE_APOLLO_DBG_H + #pragma once -#ifndef __APOLLO_DBG_H__ -#define __APOLLO_DBG_H__ +#include "cpu/m68000/m68000.h" int apollo_debug_instruction_hook(m68000_base_device *device, offs_t curpc); -#endif +#endif // MAME_MACHINE_APOLLO_DBG_H diff --git a/src/mame/machine/apollo_kbd.cpp b/src/mame/machine/apollo_kbd.cpp index 67244a77f24..e8b9510fc7e 100644 --- a/src/mame/machine/apollo_kbd.cpp +++ b/src/mame/machine/apollo_kbd.cpp @@ -10,11 +10,12 @@ * */ +#include "emu.h" + #define VERBOSE 0 -#include "emu.h" #include "machine/apollo_kbd.h" -#include "sound/beep.h" + #define LOG(x) { m_device->logerror ("%s apollo_kbd: ", m_device->cpu_context()); m_device->logerror x; m_device->logerror ("\n"); } #define LOG1(x) { if (VERBOSE > 0) LOG(x)} @@ -26,8 +27,6 @@ // DEVICE DEFINITIONS //************************************************************************** -//const device_type APOLLO_KBD = apollo_kbd_device_config::static_alloc_device_config; - //************************************************************************** // CONSTANTS //************************************************************************** @@ -56,14 +55,14 @@ ***************************************************************************/ // device type definition -const device_type APOLLO_KBD = device_creator; +DEFINE_DEVICE_TYPE(APOLLO_KBD, apollo_kbd_device, "apollo_kbd", "Apollo Keyboard") //------------------------------------------------- // apollo_kbd_device - constructor //------------------------------------------------- apollo_kbd_device::apollo_kbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, APOLLO_KBD, "Apollo Keyboard", tag, owner, clock, "apollo_kbd", __FILE__), + : device_t(mconfig, APOLLO_KBD, tag, owner, clock), device_serial_interface(mconfig, *this), m_tx_w(*this), m_german_r(*this) diff --git a/src/mame/machine/apollo_kbd.h b/src/mame/machine/apollo_kbd.h index 369c3873095..3d4c9d7789a 100644 --- a/src/mame/machine/apollo_kbd.h +++ b/src/mame/machine/apollo_kbd.h @@ -8,10 +8,10 @@ * */ -#pragma once +#ifndef MAME_MACHINE_APOLLO_KBD_H +#define MAME_MACHINE_APOLLO_KBD_H -#ifndef __APOLLO_KBD_H__ -#define __APOLLO_KBD_H__ +#pragma once #include "sound/beep.h" @@ -42,7 +42,7 @@ INPUT_PORTS_EXTERN(apollo_kbd); // ======================> apollo_kbd_device -class apollo_kbd_device : public device_t, public device_serial_interface +class apollo_kbd_device : public device_t, public device_serial_interface { public: // construction/destruction @@ -155,6 +155,6 @@ private: }; // device type definition -extern const device_type APOLLO_KBD; +DECLARE_DEVICE_TYPE(APOLLO_KBD, apollo_kbd_device) -#endif +#endif // MAME_MACHINE_APOLLO_KBD_H diff --git a/src/mame/machine/apricotkb.cpp b/src/mame/machine/apricotkb.cpp index 558145031c7..9691e1c9941 100644 --- a/src/mame/machine/apricotkb.cpp +++ b/src/mame/machine/apricotkb.cpp @@ -23,7 +23,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type APRICOT_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(APRICOT_KEYBOARD, apricot_keyboard_device, "aprikb", "Apricot Keyboard") //------------------------------------------------- @@ -247,7 +247,7 @@ ioport_constructor apricot_keyboard_device::device_input_ports() const //------------------------------------------------- apricot_keyboard_device::apricot_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, APRICOT_KEYBOARD, "Apricot Keyboard", tag, owner, clock, "aprikb", __FILE__), + device_t(mconfig, APRICOT_KEYBOARD, tag, owner, clock), m_write_txd(*this), m_y(*this, "Y%u", 0), m_modifiers(*this, "MODIFIERS") diff --git a/src/mame/machine/apricotkb.h b/src/mame/machine/apricotkb.h index 598155fd011..ed0bbc6a9aa 100644 --- a/src/mame/machine/apricotkb.h +++ b/src/mame/machine/apricotkb.h @@ -6,10 +6,10 @@ *********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_APRICOTKB_H +#define MAME_MACHINE_APRICOTKB_H -#ifndef __APRICOT_KEYBOARD__ -#define __APRICOT_KEYBOARD__ +#pragma once @@ -77,8 +77,8 @@ private: // device type definition -extern const device_type APRICOT_KEYBOARD; +DECLARE_DEVICE_TYPE(APRICOT_KEYBOARD, apricot_keyboard_device) -#endif +#endif // MAME_MACHINE_APRICOTKB_H diff --git a/src/mame/machine/asic65.cpp b/src/mame/machine/asic65.cpp index 2336825677b..47f7331ca02 100644 --- a/src/mame/machine/asic65.cpp +++ b/src/mame/machine/asic65.cpp @@ -82,10 +82,10 @@ static const uint8_t command_map[3][MAX_COMMANDS] = } }; -const device_type ASIC65 = device_creator; +DEFINE_DEVICE_TYPE(ASIC65, asic65_device, "asic65", "Atari ASIC65") asic65_device::asic65_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ASIC65, "Atari ASIC65", tag, owner, clock, "asic65", __FILE__), + : device_t(mconfig, ASIC65, tag, owner, clock), m_asic65_type(0), m_command(0), m_yorigin(0x1800), diff --git a/src/mame/machine/asic65.h b/src/mame/machine/asic65.h index 1900528794a..1dd9e32851c 100644 --- a/src/mame/machine/asic65.h +++ b/src/mame/machine/asic65.h @@ -5,10 +5,14 @@ * Implementation of ASIC65 * *************************************/ +#ifndef MAME_MACHINE_ASIC65_H +#define MAME_MACHINE_ASIC65_H - #include "cpu/tms32010/tms32010.h" +#pragma once - enum { +#include "cpu/tms32010/tms32010.h" + +enum { ASIC65_STANDARD, ASIC65_STEELTAL, ASIC65_GUARDIANS, @@ -68,8 +72,10 @@ private: FILE * m_log; }; -extern const device_type ASIC65; +DECLARE_DEVICE_TYPE(ASIC65, asic65_device) #define MCFG_ASIC65_ADD(_tag, _type) \ MCFG_DEVICE_ADD(_tag, ASIC65, 0) \ asic65_device::set_type(*device, _type); + +#endif // MAME_MACHINE_ASIC65_H diff --git a/src/mame/machine/at.cpp b/src/mame/machine/at.cpp index 5dcca6b3177..a4287c23ae6 100644 --- a/src/mame/machine/at.cpp +++ b/src/mame/machine/at.cpp @@ -17,10 +17,10 @@ #define LOG_PORT80 0 -const device_type AT_MB = device_creator; +DEFINE_DEVICE_TYPE(AT_MB, at_mb_device, "at_mb", "PC/AT Motherboard") at_mb_device::at_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, AT_MB, "PC/AT Motherboard", tag, owner, clock, "at_mb", __FILE__), + : device_t(mconfig, AT_MB, tag, owner, clock), m_maincpu(*this, ":maincpu"), m_isabus(*this, "isabus"), m_pic8259_slave(*this, "pic8259_slave"), diff --git a/src/mame/machine/at.h b/src/mame/machine/at.h index 3eac37f4355..9a0797deaab 100644 --- a/src/mame/machine/at.h +++ b/src/mame/machine/at.h @@ -87,7 +87,7 @@ private: uint8_t m_nmi_enabled; }; -extern const device_type AT_MB; +DECLARE_DEVICE_TYPE(AT_MB, at_mb_device) MACHINE_CONFIG_EXTERN(at_softlists); diff --git a/src/mame/machine/atari_vg.cpp b/src/mame/machine/atari_vg.cpp index f9d0a999074..76281f54a23 100644 --- a/src/mame/machine/atari_vg.cpp +++ b/src/mame/machine/atari_vg.cpp @@ -35,14 +35,14 @@ // device type definition -const device_type ATARIVGEAROM = device_creator; +DEFINE_DEVICE_TYPE(ATARIVGEAROM, atari_vg_earom_device, "atari_vg_earom", "Atari VG EAROM") //------------------------------------------------- // atari_vg_earom_device - constructor //------------------------------------------------- atari_vg_earom_device::atari_vg_earom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ATARIVGEAROM, "Atari VG EAROM", tag, owner, clock, "atari_vg_earom", __FILE__), + : device_t(mconfig, ATARIVGEAROM, tag, owner, clock), device_nvram_interface(mconfig, *this) { } diff --git a/src/mame/machine/atari_vg.h b/src/mame/machine/atari_vg.h index 49515261e4b..cc597a3b8a0 100644 --- a/src/mame/machine/atari_vg.h +++ b/src/mame/machine/atari_vg.h @@ -6,8 +6,10 @@ ***************************************************************************/ -#ifndef __ATARIVGEAROM_H__ -#define __ATARIVGEAROM_H__ +#ifndef MAME_MACHINE_ATARI_VG_H +#define MAME_MACHINE_ATARI_VG_H + +#pragma once /*************************************************************************** DEVICE CONFIGURATION MACROS @@ -27,6 +29,11 @@ class atari_vg_earom_device : public device_t, public: // construction/destruction atari_vg_earom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_READ8_MEMBER( read ); + DECLARE_WRITE8_MEMBER( write ); + DECLARE_WRITE8_MEMBER( ctrl_w ); + protected: // device-level overrides virtual void device_start() override; @@ -36,10 +43,7 @@ protected: virtual void nvram_default() override; virtual void nvram_read(emu_file &file) override; virtual void nvram_write(emu_file &file) override; -public: - DECLARE_READ8_MEMBER( read ); - DECLARE_WRITE8_MEMBER( write ); - DECLARE_WRITE8_MEMBER( ctrl_w ); + private: int m_old_ctrl; int m_state; @@ -50,6 +54,6 @@ private: }; // device type definition -extern const device_type ATARIVGEAROM; +DECLARE_DEVICE_TYPE(ATARIVGEAROM, atari_vg_earom_device) -#endif +#endif // MAME_MACHINE_ATARI_VG_H diff --git a/src/mame/machine/atarifdc.cpp b/src/mame/machine/atarifdc.cpp index ef399bb11c8..a965ea9c604 100644 --- a/src/mame/machine/atarifdc.cpp +++ b/src/mame/machine/atarifdc.cpp @@ -10,16 +10,17 @@ ***************************************************************************/ -#include - #include "emu.h" -#include "cpu/m6502/m6502.h" -#include "includes/atari400.h" #include "atarifdc.h" -#include "sound/pokey.h" + #include "machine/6821pia.h" +#include "sound/pokey.h" + #include "formats/atari_dsk.h" +#include + + #define VERBOSE_SERIAL 0 #define VERBOSE_CHKSUM 0 @@ -749,10 +750,10 @@ legacy_floppy_image_device *atari_fdc_device::atari_floppy_get_device_child(int return nullptr; } -const device_type ATARI_FDC = device_creator; +DEFINE_DEVICE_TYPE(ATARI_FDC, atari_fdc_device, "atari_fdc", "Atari FDC") atari_fdc_device::atari_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ATARI_FDC, "Atari FDC", tag, owner, clock, "atari_fdc", __FILE__), + : device_t(mconfig, ATARI_FDC, tag, owner, clock), m_serout_count(0), m_serout_offs(0), m_serout_chksum(0), diff --git a/src/mame/machine/atarifdc.h b/src/mame/machine/atarifdc.h index f7d8045e207..e68612b5204 100644 --- a/src/mame/machine/atarifdc.h +++ b/src/mame/machine/atarifdc.h @@ -5,8 +5,8 @@ */ -#ifndef _ATARIFDC_H -#define _ATARIFDC_H +#ifndef MAME_MACHINE_ATARIFDC_H +#define MAME_MACHINE_ATARIFDC_H #include "imagedev/flopdrv.h" @@ -64,6 +64,6 @@ private: atari_drive m_drv[4]; }; -extern const device_type ATARI_FDC; +DECLARE_DEVICE_TYPE(ATARI_FDC, atari_fdc_device) -#endif /* _ATARIFDC_H */ +#endif // MAME_MACHINE_ATARIFDC_H diff --git a/src/mame/machine/atarigen.cpp b/src/mame/machine/atarigen.cpp index 57f851b131a..3b8aa98bc89 100644 --- a/src/mame/machine/atarigen.cpp +++ b/src/mame/machine/atarigen.cpp @@ -49,14 +49,14 @@ inline const atarigen_screen_timer *get_screen_timer(screen_device &screen) //************************************************************************** // device type definition -const device_type ATARI_SOUND_COMM = device_creator; +DEFINE_DEVICE_TYPE(ATARI_SOUND_COMM, atari_sound_comm_device, "atarscom", "Atari Sound Communications") //------------------------------------------------- // atari_sound_comm_device - constructor //------------------------------------------------- atari_sound_comm_device::atari_sound_comm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ATARI_SOUND_COMM, "Atari Sound Communications", tag, owner, clock, "atarscom", __FILE__), + : device_t(mconfig, ATARI_SOUND_COMM, tag, owner, clock), m_sound_cpu_tag(nullptr), m_main_int_cb(*this), m_sound_cpu(nullptr), @@ -342,14 +342,14 @@ void atari_sound_comm_device::delayed_6502_write(int data) //************************************************************************** // device type definition -const device_type ATARI_VAD = device_creator; +DEFINE_DEVICE_TYPE(ATARI_VAD, atari_vad_device, "atarivad", "Atari VAD") //------------------------------------------------- // atari_vad_device - constructor //------------------------------------------------- atari_vad_device::atari_vad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ATARI_VAD, "Atari VAD", tag, owner, clock, "atarivad", __FILE__), + : device_t(mconfig, ATARI_VAD, tag, owner, clock), device_video_interface(mconfig, *this), m_scanline_int_cb(*this), m_alpha_tilemap(*this, "alpha"), @@ -819,15 +819,15 @@ void atari_vad_device::eof_update(emu_timer &timer) //************************************************************************** // device type definition -const device_type ATARI_EEPROM_2804 = device_creator; -const device_type ATARI_EEPROM_2816 = device_creator; +DEFINE_DEVICE_TYPE(ATARI_EEPROM_2804, atari_eeprom_2804_device, "atari2804", "Atari EEPROM Interface (2804)") +DEFINE_DEVICE_TYPE(ATARI_EEPROM_2816, atari_eeprom_2816_device, "atari2816", "Atari EEPROM Interface (2816)") //------------------------------------------------- // atari_eeprom_device - constructor //------------------------------------------------- -atari_eeprom_device::atari_eeprom_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file) - : device_t(mconfig, devtype, name, tag, owner, 0, shortname, file), +atari_eeprom_device::atari_eeprom_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner) + : device_t(mconfig, devtype, tag, owner, 0), m_eeprom(*this, "eeprom"), m_unlocked(false) { @@ -894,7 +894,7 @@ void atari_eeprom_device::device_reset() //------------------------------------------------- atari_eeprom_2804_device::atari_eeprom_2804_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : atari_eeprom_device(mconfig, ATARI_EEPROM_2804, "Atari EEPROM Interface (2804)", tag, owner, "atari2804", __FILE__) + : atari_eeprom_device(mconfig, ATARI_EEPROM_2804, tag, owner) { } @@ -919,7 +919,7 @@ machine_config_constructor atari_eeprom_2804_device::device_mconfig_additions() //------------------------------------------------- atari_eeprom_2816_device::atari_eeprom_2816_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : atari_eeprom_device(mconfig, ATARI_EEPROM_2816, "Atari EEPROM Interface (2816)", tag, owner, "atari2816", __FILE__) + : atari_eeprom_device(mconfig, ATARI_EEPROM_2816, tag, owner) { } diff --git a/src/mame/machine/atarigen.h b/src/mame/machine/atarigen.h index bcede09ed34..95d29226874 100644 --- a/src/mame/machine/atarigen.h +++ b/src/mame/machine/atarigen.h @@ -103,9 +103,9 @@ // ======================> atari_sound_comm_device // device type definition -extern const device_type ATARI_SOUND_COMM; +DECLARE_DEVICE_TYPE(ATARI_SOUND_COMM, atari_sound_comm_device) -class atari_sound_comm_device : public device_t +class atari_sound_comm_device : public device_t { public: // construction/destruction @@ -175,7 +175,7 @@ private: // ======================> atari_vad_device // device type definition -extern const device_type ATARI_VAD; +DECLARE_DEVICE_TYPE(ATARI_VAD, atari_vad_device) class atari_vad_device : public device_t, public device_video_interface @@ -256,14 +256,14 @@ private: // ======================> atari_eeprom_device // device type definition -extern const device_type ATARI_EEPROM_2804; -extern const device_type ATARI_EEPROM_2816; +DECLARE_DEVICE_TYPE(ATARI_EEPROM_2804, atari_eeprom_2804_device) +DECLARE_DEVICE_TYPE(ATARI_EEPROM_2816, atari_eeprom_2816_device) class atari_eeprom_device : public device_t { protected: // construction/destruction - atari_eeprom_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file); + atari_eeprom_device(const machine_config &mconfig, device_type devtype, const char *tag, device_t *owner); public: // unlock controls diff --git a/src/mame/machine/atarixga.cpp b/src/mame/machine/atarixga.cpp index 6608463b266..d3858fcce86 100644 --- a/src/mame/machine/atarixga.cpp +++ b/src/mame/machine/atarixga.cpp @@ -63,10 +63,10 @@ static uint16_t parity(uint16_t x) * *************************************/ -const device_type ATARI_136094_0072 = device_creator; +DEFINE_DEVICE_TYPE(ATARI_136094_0072, atari_136094_0072_device, "136094_0072", "Atari 136094-0072 XGA") atari_136094_0072_device::atari_136094_0072_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) -: atari_xga_device(mconfig, ATARI_136094_0072, tag, owner, clock, "Atari 136094-0072 XGA", "136094_0072") + : atari_xga_device(mconfig, ATARI_136094_0072, tag, owner, clock) { } @@ -283,10 +283,10 @@ READ32_MEMBER(atari_136094_0072_device::read) * *************************************/ -const device_type ATARI_136095_0072 = device_creator; +DEFINE_DEVICE_TYPE(ATARI_136095_0072, atari_136095_0072_device, "136095_0072", "Atari 136095-0072 XGA") atari_136095_0072_device::atari_136095_0072_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) -: atari_xga_device(mconfig, ATARI_136095_0072, tag, owner, clock, "Atari 136095-0072 XGA", "136095_0072") + : atari_xga_device(mconfig, ATARI_136095_0072, tag, owner, clock) { } diff --git a/src/mame/machine/atarixga.h b/src/mame/machine/atarixga.h index 5204caa5e94..6f1ab1c52ad 100644 --- a/src/mame/machine/atarixga.h +++ b/src/mame/machine/atarixga.h @@ -8,25 +8,25 @@ *************************************************************************/ -#ifndef __MACHINE_ATARIXGA__ -#define __MACHINE_ATARIXGA__ +#ifndef MAME_MACHINE_ATARIXGA_H +#define MAME_MACHINE_ATARIXGA_H -extern const device_type ATARI_136094_0072; -extern const device_type ATARI_136095_0072; +DECLARE_DEVICE_TYPE(ATARI_136094_0072, atari_136094_0072_device) +DECLARE_DEVICE_TYPE(ATARI_136095_0072, atari_136095_0072_device) class atari_xga_device : public device_t { public: - // construction/destruction - atari_xga_device(const machine_config &mconfig, device_type type, const char *tag, - device_t *owner, uint32_t clock, const char *name, const char *shortname) - : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__) - {} - virtual DECLARE_WRITE32_MEMBER(write) = 0; virtual DECLARE_READ32_MEMBER(read) = 0; protected: + // construction/destruction + atari_xga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + { + } + virtual void device_start() override = 0; virtual void device_reset() override = 0; @@ -108,4 +108,4 @@ private: }; -#endif +#endif // MAME_MACHINE_ATARIXGA_H diff --git a/src/mame/machine/awboard.cpp b/src/mame/machine/awboard.cpp index dcccc77efc1..226bd72b0bc 100644 --- a/src/mame/machine/awboard.cpp +++ b/src/mame/machine/awboard.cpp @@ -153,7 +153,7 @@ ROM board internal layouts: */ -const device_type AW_ROM_BOARD = device_creator; +DEFINE_DEVICE_TYPE(AW_ROM_BOARD, aw_rom_board, "aw_rom_board", "Sammy Atomiswave ROM Board") DEVICE_ADDRESS_MAP_START(submap, 16, aw_rom_board) AM_RANGE(0x00, 0x01) AM_WRITE(epr_offsetl_w) @@ -166,7 +166,7 @@ DEVICE_ADDRESS_MAP_START(submap, 16, aw_rom_board) ADDRESS_MAP_END aw_rom_board::aw_rom_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : naomi_g1_device(mconfig, AW_ROM_BOARD, "Sammy Atomiswave ROM Board", tag, owner, clock, "aw_rom_board", __FILE__) + : naomi_g1_device(mconfig, AW_ROM_BOARD, tag, owner, clock) , m_region(*this, DEVICE_SELF) , m_keyregion(*this, finder_base::DUMMY_TAG) { diff --git a/src/mame/machine/awboard.h b/src/mame/machine/awboard.h index 9f47c20b4b1..c2c8afcdd7e 100644 --- a/src/mame/machine/awboard.h +++ b/src/mame/machine/awboard.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert,Andreas Naive -#ifndef _AWBOARD_H_ -#define _AWBOARD_H_ +#ifndef MAME_MACHINE_AWBOARD_H +#define MAME_MACHINE_AWBOARD_H + +#pragma once #include "naomig1.h" @@ -63,6 +65,6 @@ private: void recalc_dma_offset(int mode); }; -extern const device_type AW_ROM_BOARD; +DECLARE_DEVICE_TYPE(AW_ROM_BOARD, aw_rom_board) -#endif +#endif // MAME_MACHINE_AWBOARD_H diff --git a/src/mame/machine/b2m.cpp b/src/mame/machine/b2m.cpp index e771ffa3529..1948c3bd53a 100644 --- a/src/mame/machine/b2m.cpp +++ b/src/mame/machine/b2m.cpp @@ -269,9 +269,6 @@ void b2m_state::b2m_postload() void b2m_state::machine_start() { - m_pic = machine().device("pic8259"); - m_fdc = machine().device("fd1793"); - /* register for state saving */ save_item(NAME(m_b2m_8255_porta)); save_item(NAME(m_b2m_video_scroll)); diff --git a/src/mame/machine/balsente.cpp b/src/mame/machine/balsente.cpp index 3390a42fbe4..b6a81536e08 100644 --- a/src/mame/machine/balsente.cpp +++ b/src/mame/machine/balsente.cpp @@ -209,7 +209,7 @@ void balsente_state::poly17_init() inline void balsente_state::noise_gen_chip(int chip, int count, short *buffer) { /* noise generator runs at 100kHz */ - uint32_t step = (100000 << 14) / CEM3394_SAMPLE_RATE; + uint32_t step = (100000 << 14) / cem3394_device::SAMPLE_RATE; uint32_t noise_counter = m_noise_position[chip]; while (count--) @@ -895,17 +895,17 @@ void balsente_state::update_counter_0_timer() /* find the counter with the maximum frequency */ /* this is used to calibrate the timers at startup */ for (i = 0; i < 6; i++) - if (m_cem_device[i]->get_parameter(CEM3394_FINAL_GAIN) < 10.0) + if (m_cem_device[i]->get_parameter(cem3394_device::FINAL_GAIN) < 10.0) { double tempfreq; /* if the filter resonance is high, then they're calibrating the filter frequency */ - if (m_cem_device[i]->get_parameter(CEM3394_FILTER_RESONANCE) > 0.9) - tempfreq = m_cem_device[i]->get_parameter(CEM3394_FILTER_FREQENCY); + if (m_cem_device[i]->get_parameter(cem3394_device::FILTER_RESONANCE) > 0.9) + tempfreq = m_cem_device[i]->get_parameter(cem3394_device::FILTER_FREQENCY); /* otherwise, they're calibrating the VCO frequency */ else - tempfreq = m_cem_device[i]->get_parameter(CEM3394_VCO_FREQUENCY); + tempfreq = m_cem_device[i]->get_parameter(cem3394_device::VCO_FREQUENCY); if (tempfreq > maxfreq) maxfreq = tempfreq; } @@ -987,16 +987,16 @@ WRITE8_MEMBER(balsente_state::balsente_counter_control_w) WRITE8_MEMBER(balsente_state::balsente_chip_select_w) { - static const uint8_t register_map[8] = + static constexpr uint8_t register_map[8] = { - CEM3394_VCO_FREQUENCY, - CEM3394_FINAL_GAIN, - CEM3394_FILTER_RESONANCE, - CEM3394_FILTER_FREQENCY, - CEM3394_MIXER_BALANCE, - CEM3394_MODULATION_AMOUNT, - CEM3394_PULSE_WIDTH, - CEM3394_WAVE_SELECT + cem3394_device::VCO_FREQUENCY, + cem3394_device::FINAL_GAIN, + cem3394_device::FILTER_RESONANCE, + cem3394_device::FILTER_FREQENCY, + cem3394_device::MIXER_BALANCE, + cem3394_device::MODULATION_AMOUNT, + cem3394_device::PULSE_WIDTH, + cem3394_device::WAVE_SELECT }; double voltage = (double)m_dac_value * (8.0 / 4096.0) - 4.0; diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp index 44cca181e29..24cbe1bfeaa 100644 --- a/src/mame/machine/bbc.cpp +++ b/src/mame/machine/bbc.cpp @@ -145,41 +145,6 @@ WRITE8_MEMBER(bbc_state::bbc_memorybp1_w) } -/* the next two function handle reads and write to the shadow video ram area - between 0x3000 and 0x7fff - - when vdusel is set high the video display uses the shadow ram memory - the processor only reads and write to the shadow ram when vdusel is set - and when the instruction being executed is stored in a set range of memory - addresses known as the VDU driver instructions. -*/ - - -DIRECT_UPDATE_MEMBER(bbc_state::bbcbp_direct_handler) -{ - uint8_t *RAM = m_region_maincpu->base(); - if (m_vdusel == 0) - { - // not in shadow ram mode so just read normal ram - m_bank2->set_base(RAM + 0x3000); - } - else - { - if (vdudriverset()) - { - // if VDUDriver set then read from shadow ram - m_bank2->set_base(RAM + 0xb000); - } - else - { - // else read from normal ram - m_bank2->set_base(RAM + 0x3000); - } - } - return address; -} - - WRITE8_MEMBER(bbc_state::bbc_memorybp2_w) { uint8_t *RAM = m_region_maincpu->base(); @@ -401,28 +366,6 @@ WRITE8_MEMBER(bbc_state::bbc_memorybm1_w) } -DIRECT_UPDATE_MEMBER(bbc_state::bbcm_direct_handler) -{ - if (m_ACCCON_X) - { - m_bank2->set_base(m_region_maincpu->base() + 0xb000); - } - else - { - if (m_ACCCON_E && bbcm_vdudriverset()) - { - m_bank2->set_base(m_region_maincpu->base() + 0xb000); - } - else - { - m_bank2->set_base(m_region_maincpu->base() + 0x3000); - } - } - - return address; -} - - WRITE8_MEMBER(bbc_state::bbc_memorybm2_w) { @@ -1788,8 +1731,6 @@ MACHINE_START_MEMBER(bbc_state, bbcbp) m_machinetype = BPLUS; m_mc6850_clock = 0; - m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&bbc_state::bbcbp_direct_handler, this)); - bbc_setup_banks(m_bank4, 16, 0, 0x3000); m_bank4->configure_entries(16, 1, m_region_maincpu->base() + 0x8000, 0x3000); // additional bank for paged ram bbc_setup_banks(m_bank6, 16, 0x3000, 0x1000); @@ -1816,8 +1757,6 @@ MACHINE_START_MEMBER(bbc_state, bbcm) m_machinetype = MASTER; m_mc6850_clock = 0; - m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&bbc_state::bbcm_direct_handler, this)); - bbcm_setup_banks(m_bank4, 16, 0, 0x1000); m_bank4->configure_entries(16, 1, m_region_maincpu->base() + 0x8000, 0x1000); // additional bank for paged ram bbcm_setup_banks(m_bank5, 16, 0x1000, 0x3000); diff --git a/src/mame/machine/bebox.cpp b/src/mame/machine/bebox.cpp index 49856bdbb9c..4838fe68107 100644 --- a/src/mame/machine/bebox.cpp +++ b/src/mame/machine/bebox.cpp @@ -623,28 +623,28 @@ READ64_MEMBER(bebox_state::scsi53c810_r ) int reg = offset*8; uint64_t r = 0; if (!ACCESSING_BITS_56_63) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+0) << 56; + r |= (uint64_t)m_lsi53c810->reg_r(reg+0) << 56; } if (!ACCESSING_BITS_48_55) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+1) << 48; + r |= (uint64_t)m_lsi53c810->reg_r(reg+1) << 48; } if (!ACCESSING_BITS_40_47) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+2) << 40; + r |= (uint64_t)m_lsi53c810->reg_r(reg+2) << 40; } if (!ACCESSING_BITS_32_39) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+3) << 32; + r |= (uint64_t)m_lsi53c810->reg_r(reg+3) << 32; } if (!ACCESSING_BITS_24_31) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+4) << 24; + r |= (uint64_t)m_lsi53c810->reg_r(reg+4) << 24; } if (!ACCESSING_BITS_16_23) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+5) << 16; + r |= (uint64_t)m_lsi53c810->reg_r(reg+5) << 16; } if (!ACCESSING_BITS_8_15) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+6) << 8; + r |= (uint64_t)m_lsi53c810->reg_r(reg+6) << 8; } if (!ACCESSING_BITS_0_7) { - r |= (uint64_t)m_lsi53c810->lsi53c810_reg_r(reg+7) << 0; + r |= (uint64_t)m_lsi53c810->reg_r(reg+7) << 0; } return r; @@ -655,28 +655,28 @@ WRITE64_MEMBER(bebox_state::scsi53c810_w ) { int reg = offset*8; if (!ACCESSING_BITS_56_63) { - m_lsi53c810->lsi53c810_reg_w(reg+0, data >> 56); + m_lsi53c810->reg_w(reg+0, data >> 56); } if (!ACCESSING_BITS_48_55) { - m_lsi53c810->lsi53c810_reg_w(reg+1, data >> 48); + m_lsi53c810->reg_w(reg+1, data >> 48); } if (!ACCESSING_BITS_40_47) { - m_lsi53c810->lsi53c810_reg_w(reg+2, data >> 40); + m_lsi53c810->reg_w(reg+2, data >> 40); } if (!ACCESSING_BITS_32_39) { - m_lsi53c810->lsi53c810_reg_w(reg+3, data >> 32); + m_lsi53c810->reg_w(reg+3, data >> 32); } if (!ACCESSING_BITS_24_31) { - m_lsi53c810->lsi53c810_reg_w(reg+4, data >> 24); + m_lsi53c810->reg_w(reg+4, data >> 24); } if (!ACCESSING_BITS_16_23) { - m_lsi53c810->lsi53c810_reg_w(reg+5, data >> 16); + m_lsi53c810->reg_w(reg+5, data >> 16); } if (!ACCESSING_BITS_8_15) { - m_lsi53c810->lsi53c810_reg_w(reg+6, data >> 8); + m_lsi53c810->reg_w(reg+6, data >> 8); } if (!ACCESSING_BITS_0_7) { - m_lsi53c810->lsi53c810_reg_w(reg+7, data >> 0); + m_lsi53c810->reg_w(reg+7, data >> 0); } } diff --git a/src/mame/machine/beta.cpp b/src/mame/machine/beta.cpp index 83d01f23f19..693e4c29488 100644 --- a/src/mame/machine/beta.cpp +++ b/src/mame/machine/beta.cpp @@ -15,19 +15,20 @@ BUGS: */ #include "emu.h" -#include "formats/trd_dsk.h" #include "machine/beta.h" +#include "formats/trd_dsk.h" + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ -const device_type BETA_DISK = device_creator; +DEFINE_DEVICE_TYPE(BETA_DISK, beta_disk_device, "betadisk", "Beta Disk Interface") beta_disk_device::beta_disk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, BETA_DISK, "Beta Disk Interface", tag, owner, clock, "betadisk", __FILE__) + : device_t(mconfig, BETA_DISK, tag, owner, clock) , m_betadisk_active(0) , m_wd179x(*this, "wd179x") , m_floppy0(*this, "wd179x:0") diff --git a/src/mame/machine/beta.h b/src/mame/machine/beta.h index c1ffa85db4d..a8505977cf1 100644 --- a/src/mame/machine/beta.h +++ b/src/mame/machine/beta.h @@ -9,8 +9,10 @@ 04/05/2008 Created by Miodrag Milanovic *********************************************************************/ -#ifndef __BETA_H__ -#define __BETA_H__ +#ifndef MAME_MACHINE_BETA_H +#define MAME_MACHINE_BETA_H + +#pragma once #include "machine/wd_fdc.h" @@ -21,7 +23,6 @@ class beta_disk_device : public device_t { public: beta_disk_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~beta_disk_device() {} DECLARE_READ8_MEMBER(status_r); DECLARE_READ8_MEMBER(track_r); @@ -40,8 +41,6 @@ public: void enable(); void disable(); - uint8_t m_betadisk_active; - protected: // device-level overrides virtual void device_start() override; @@ -50,14 +49,16 @@ protected: virtual machine_config_constructor device_mconfig_additions() const override; private: - required_device m_wd179x; + uint8_t m_betadisk_active; + + required_device m_wd179x; required_device m_floppy0; required_device m_floppy1; required_device m_floppy2; required_device m_floppy3; }; -extern const device_type BETA_DISK; +DECLARE_DEVICE_TYPE(BETA_DISK, beta_disk_device) #define MCFG_BETA_DISK_ADD(_tag) \ @@ -66,4 +67,4 @@ extern const device_type BETA_DISK; #define MCFG_BETA_DISK_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) -#endif /* __BETA_H__ */ +#endif // MAME_MACHINE_BETA_H diff --git a/src/mame/machine/bfm_bd1.cpp b/src/mame/machine/bfm_bd1.cpp index e16118c9424..affed8679d3 100644 --- a/src/mame/machine/bfm_bd1.cpp +++ b/src/mame/machine/bfm_bd1.cpp @@ -11,7 +11,7 @@ #include "emu.h" #include "bfm_bd1.h" -const device_type BFM_BD1 = device_creator; +DEFINE_DEVICE_TYPE(BFM_BD1, bfm_bd1_device, "bfm_bd1", "BFM BD1 VFD controller") /* @@ -101,19 +101,19 @@ static const uint16_t BD1charset[]= 0x4406, // 0100 0100 0000 0110 ? }; -bfm_bd1_t::bfm_bd1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, BFM_BD1, "BFM BD1 VFD controller", tag, owner, clock, "bfm_bd1", __FILE__), +bfm_bd1_device::bfm_bd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, BFM_BD1, tag, owner, clock), m_port_val(0) { } -void bfm_bd1_t::static_set_value(device_t &device, int val) +void bfm_bd1_device::static_set_value(device_t &device, int val) { - bfm_bd1_t &bd1 = downcast(device); + bfm_bd1_device &bd1 = downcast(device); bd1.m_port_val = val; } -void bfm_bd1_t::device_start() +void bfm_bd1_device::device_start() { save_item(NAME(m_cursor)); save_item(NAME(m_cursor_pos)); @@ -138,7 +138,7 @@ void bfm_bd1_t::device_start() device_reset(); } -void bfm_bd1_t::device_reset() +void bfm_bd1_device::device_reset() { m_cursor = 0; m_cursor_pos = 0; @@ -162,17 +162,17 @@ void bfm_bd1_t::device_reset() memset(m_attrs, 0, sizeof(m_attrs)); } -uint16_t bfm_bd1_t::set_display(uint16_t segin) +uint16_t bfm_bd1_device::set_display(uint16_t segin) { return BITSWAP16(segin,8,12,11,7,6,4,10,3,14,15,0,13,9,5,1,2); } -void bfm_bd1_t::device_post_load() +void bfm_bd1_device::device_post_load() { update_display(); } -void bfm_bd1_t::update_display() +void bfm_bd1_device::update_display() { for (int i =0; i<16; i++) { @@ -188,7 +188,7 @@ void bfm_bd1_t::update_display() } } /////////////////////////////////////////////////////////////////////////// -void bfm_bd1_t::blank(int data) +void bfm_bd1_device::blank(int data) { switch ( data & 0x03 ) { @@ -241,7 +241,7 @@ void bfm_bd1_t::blank(int data) } } -int bfm_bd1_t::write_char(int data) +int bfm_bd1_device::write_char(int data) { int change = 0; if ( m_user_def ) @@ -374,7 +374,7 @@ int bfm_bd1_t::write_char(int data) } /////////////////////////////////////////////////////////////////////////// -void bfm_bd1_t::setdata(int segdata, int data) +void bfm_bd1_device::setdata(int segdata, int data) { int move = 0; int change =0; @@ -538,7 +538,7 @@ void bfm_bd1_t::setdata(int segdata, int data) } } -void bfm_bd1_t::shift_clock(int state) +void bfm_bd1_device::shift_clock(int state) { if (m_sclk != state) { @@ -561,10 +561,10 @@ void bfm_bd1_t::shift_clock(int state) m_sclk = state; } -WRITE_LINE_MEMBER( bfm_bd1_t::sclk ) { shift_clock(state); } -WRITE_LINE_MEMBER( bfm_bd1_t::data ) { m_data = state; } +WRITE_LINE_MEMBER( bfm_bd1_device::sclk ) { shift_clock(state); } +WRITE_LINE_MEMBER( bfm_bd1_device::data ) { m_data = state; } -WRITE_LINE_MEMBER( bfm_bd1_t::por ) +WRITE_LINE_MEMBER( bfm_bd1_device::por ) { if (!state) { diff --git a/src/mame/machine/bfm_bd1.h b/src/mame/machine/bfm_bd1.h index 02026b586b1..f1a825dcf9d 100644 --- a/src/mame/machine/bfm_bd1.h +++ b/src/mame/machine/bfm_bd1.h @@ -1,21 +1,23 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_BFM_BD1_H +#define MAME_MACHINE_BFM_BD1_H + #pragma once -#ifndef BFM_BD1_H -#define BFM_BD1_H + #define MCFG_BFMBD1_ADD(_tag,_val) \ MCFG_DEVICE_ADD(_tag, BFM_BD1,60)\ MCFG_BD1_PORT(_val) #define MCFG_BD1_PORT(_val) \ - bfm_bd1_t::static_set_value(*device, _val); + bfm_bd1_device::static_set_value(*device, _val); #define MCFG_BFMBD1_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) -class bfm_bd1_t : public device_t +class bfm_bd1_device : public device_t { public: - bfm_bd1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + bfm_bd1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers static void static_set_value(device_t &device, int val); @@ -65,5 +67,6 @@ protected: }; -extern const device_type BFM_BD1; -#endif +DECLARE_DEVICE_TYPE(BFM_BD1, bfm_bd1_device) + +#endif // MAME_MACHINE_BFM_BD1_H diff --git a/src/mame/machine/bfm_bda.cpp b/src/mame/machine/bfm_bda.cpp index 9d32eb883cd..fc345c94215 100644 --- a/src/mame/machine/bfm_bda.cpp +++ b/src/mame/machine/bfm_bda.cpp @@ -10,7 +10,7 @@ #include "emu.h" #include "bfm_bda.h" -const device_type BFM_BDA = device_creator; +DEFINE_DEVICE_TYPE(BFM_BDA, bfm_bda_device, "bfm_bda", "BFM BDA VFD controller") //I currently use the BDA character set, until a suitable image can be programmed @@ -83,19 +83,19 @@ static const uint16_t BDAcharset[]= 0x4406, // 0100 0100 0000 0110 ? }; -bfm_bda_t::bfm_bda_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, BFM_BDA, "BFM BDA VFD controller", tag, owner, clock, "bfm_bda", __FILE__), +bfm_bda_device::bfm_bda_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, BFM_BDA, tag, owner, clock), m_port_val(0) { } -void bfm_bda_t::static_set_value(device_t &device, int val) +void bfm_bda_device::static_set_value(device_t &device, int val) { - bfm_bda_t &BDA = downcast(device); + bfm_bda_device &BDA = downcast(device); BDA.m_port_val = val; } -void bfm_bda_t::device_start() +void bfm_bda_device::device_start() { save_item(NAME(m_cursor)); save_item(NAME(m_cursor_pos)); @@ -120,7 +120,7 @@ void bfm_bda_t::device_start() device_reset(); } -void bfm_bda_t::device_reset() +void bfm_bda_device::device_reset() { m_cursor = 0; m_cursor_pos = 0; @@ -144,12 +144,12 @@ void bfm_bda_t::device_reset() memset(m_attrs, 0, sizeof(m_attrs)); } -uint16_t bfm_bda_t::set_display(uint16_t segin) +uint16_t bfm_bda_device::set_display(uint16_t segin) { return BITSWAP16(segin,8,12,11,7,6,4,10,3,14,15,0,13,9,5,1,2); } -void bfm_bda_t::device_post_load() +void bfm_bda_device::device_post_load() { for (int i =0; i<16; i++) { @@ -157,7 +157,7 @@ void bfm_bda_t::device_post_load() } } -void bfm_bda_t::update_display() +void bfm_bda_device::update_display() { for (int i =0; i<16; i++) { @@ -173,7 +173,7 @@ void bfm_bda_t::update_display() } } /////////////////////////////////////////////////////////////////////////// -void bfm_bda_t::blank(int data) +void bfm_bda_device::blank(int data) { switch ( data & 0x03 ) // TODO: wrong case values??? { @@ -226,7 +226,7 @@ void bfm_bda_t::blank(int data) } } -int bfm_bda_t::write_char(int data) +int bfm_bda_device::write_char(int data) { int change = 0; if ( m_user_def ) @@ -381,7 +381,7 @@ int bfm_bda_t::write_char(int data) } /////////////////////////////////////////////////////////////////////////// -void bfm_bda_t::setdata(int segdata, int data) +void bfm_bda_device::setdata(int segdata, int data) { int move = 0; int change =0; @@ -545,7 +545,7 @@ void bfm_bda_t::setdata(int segdata, int data) } } -void bfm_bda_t::shift_data(int data) +void bfm_bda_device::shift_data(int data) { m_shift_data <<= 1; diff --git a/src/mame/machine/bfm_bda.h b/src/mame/machine/bfm_bda.h index 1e5c8a664cd..04a9f058a3d 100644 --- a/src/mame/machine/bfm_bda.h +++ b/src/mame/machine/bfm_bda.h @@ -1,21 +1,23 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_BFM_BDA_H +#define MAME_MACHINE_BFM_BDA_H + #pragma once -#ifndef BFM_BDA_H -#define BFM_BDA_H + #define MCFG_BFMBDA_ADD(_tag,_val) \ MCFG_DEVICE_ADD(_tag, BFM_BDA,60)\ MCFG_BDA_PORT(_val) #define MCFG_BDA_PORT(_val) \ - bfm_bda_t::static_set_value(*device, _val); + bfm_bda_device::static_set_value(*device, _val); #define MCFG_BFMBDA_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) -class bfm_bda_t : public device_t +class bfm_bda_device : public device_t { public: - bfm_bda_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + bfm_bda_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers static void static_set_value(device_t &device, int val); @@ -61,5 +63,6 @@ protected: }; -extern const device_type BFM_BDA; -#endif +DECLARE_DEVICE_TYPE(BFM_BDA, bfm_bda_device) + +#endif // MAME_MACHINE_BFM_BDA_H diff --git a/src/mame/machine/bk.cpp b/src/mame/machine/bk.cpp index 10cbd4df372..c88b995f9f1 100644 --- a/src/mame/machine/bk.cpp +++ b/src/mame/machine/bk.cpp @@ -69,7 +69,8 @@ TIMER_CALLBACK_MEMBER(bk_state::keyboard_callback) void bk_state::machine_start() { - machine().scheduler().timer_pulse(attotime::from_hz(2400), timer_expired_delegate(FUNC(bk_state::keyboard_callback),this)); + m_kbd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(bk_state::keyboard_callback), this)); + m_kbd_timer->adjust(attotime::from_hz(2400), 0, attotime::from_hz(2400)); } IRQ_CALLBACK_MEMBER(bk_state::bk0010_irq_callback) diff --git a/src/mame/machine/c117.cpp b/src/mame/machine/c117.cpp index 36e8b5e3305..ccb493c583a 100644 --- a/src/mame/machine/c117.cpp +++ b/src/mame/machine/c117.cpp @@ -31,7 +31,7 @@ static MACHINE_CONFIG_FRAGMENT( namco_c117 ) MACHINE_CONFIG_END -const device_type NAMCO_C117 = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_C117, namco_c117_device, "namco_c117", "Namco C117 MMU") //------------------------------------------------- @@ -39,7 +39,7 @@ const device_type NAMCO_C117 = device_creator; //------------------------------------------------- namco_c117_device::namco_c117_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_C117, "Namco C117 MMU", tag, owner, clock, "namco_c117", __FILE__), + : device_t(mconfig, NAMCO_C117, tag, owner, clock), device_memory_interface(mconfig, *this), m_subres_cb(*this), m_program_config("program", ENDIANNESS_BIG, 8, 23), diff --git a/src/mame/machine/c117.h b/src/mame/machine/c117.h index 1ff70089072..4586332a56e 100644 --- a/src/mame/machine/c117.h +++ b/src/mame/machine/c117.h @@ -1,10 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Alex W. Jackson +#ifndef MAME_MACHINE_C117_H +#define MAME_MACHINE_C117_H #pragma once -#ifndef __C117_H__ -#define __C117_H__ #include "machine/watchdog.h" @@ -84,6 +84,6 @@ private: }; // device type definition -extern const device_type NAMCO_C117; +DECLARE_DEVICE_TYPE(NAMCO_C117, namco_c117_device) -#endif +#endif // MAME_MACHINE_C117_H diff --git a/src/mame/machine/cammu.cpp b/src/mame/machine/cammu.cpp index 286b253cf70..41c043cba7d 100644 --- a/src/mame/machine/cammu.cpp +++ b/src/mame/machine/cammu.cpp @@ -98,24 +98,32 @@ DEVICE_ADDRESS_MAP_START(map, 32, cammu_c3_device) AM_RANGE(0xd80, 0xd83) AM_WRITE(g_reset_w) ADDRESS_MAP_END -const device_type CAMMU_C4T = device_creator; -const device_type CAMMU_C4I = device_creator; -const device_type CAMMU_C3 = device_creator; +DEFINE_DEVICE_TYPE(CAMMU_C4T, cammu_c4t_device, "c4t", "C4E/C4T CAMMU") +DEFINE_DEVICE_TYPE(CAMMU_C4I, cammu_c4i_device, "c4i", "C4I CAMMU") +DEFINE_DEVICE_TYPE(CAMMU_C3, cammu_c3_device, "c3", "C1/C3 CAMMU") cammu_c4t_device::cammu_c4t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cammu_c4_device(mconfig, CAMMU_C4T, "C4E/C4T CAMMU", tag, owner, clock, "c4t", __FILE__) { } + : cammu_c4_device(mconfig, CAMMU_C4T, tag, owner, clock) +{ +} cammu_c4i_device::cammu_c4i_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cammu_c4_device(mconfig, CAMMU_C4I, "C4I CAMMU", tag, owner, clock, "c4i", __FILE__) { } + : cammu_c4_device(mconfig, CAMMU_C4I, tag, owner, clock) +{ +} -cammu_c4_device::cammu_c4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : cammu_device(mconfig, type, name, tag, owner, clock, shortname, source) { } +cammu_c4_device::cammu_c4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : cammu_device(mconfig, type, tag, owner, clock) +{ +} cammu_c3_device::cammu_c3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cammu_device(mconfig, CAMMU_C3, "C1/C3 CAMMU", tag, owner, clock, "c3", __FILE__) { } + : cammu_device(mconfig, CAMMU_C3, tag, owner, clock) +{ +} -cammu_device::cammu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +cammu_device::cammu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , device_memory_interface(mconfig, *this), m_main_space_config("main", ENDIANNESS_LITTLE, 32, 32, 0), m_io_space_config("io", ENDIANNESS_LITTLE, 32, 32, 0), @@ -124,7 +132,8 @@ cammu_device::cammu_device(const machine_config &mconfig, device_type type, cons m_io_space(nullptr), m_boot_space(nullptr), m_ssw_func(*this) -{ } +{ +} void cammu_device::device_start() { diff --git a/src/mame/machine/cammu.h b/src/mame/machine/cammu.h index 36d707ad071..bb23900b162 100644 --- a/src/mame/machine/cammu.h +++ b/src/mame/machine/cammu.h @@ -18,9 +18,7 @@ class cammu_device : public device_t, public device_memory_interface { public: - cammu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - - template static devcb_base &static_set_ssw_callback(device_t &device, _Object object) { return downcast(device).m_ssw_func.set_callback(object); } + template static devcb_base &static_set_ssw_callback(device_t &device, Object &&cb) { return downcast(device).m_ssw_func.set_callback(std::forward(cb)); } virtual DECLARE_ADDRESS_MAP(map, 32) = 0; @@ -30,6 +28,8 @@ public: DECLARE_WRITE32_MEMBER(data_w); protected: + cammu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -77,7 +77,7 @@ private: class cammu_c4_device : public cammu_device { public: - cammu_c4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + cammu_c4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); DECLARE_READ32_MEMBER(s_pdo_r) { return m_s_pdo; } DECLARE_WRITE32_MEMBER(s_pdo_w) { m_s_pdo = data; } @@ -261,8 +261,8 @@ private: }; // device type definitions -extern const device_type CAMMU_C4T; -extern const device_type CAMMU_C4I; -extern const device_type CAMMU_C3; +DECLARE_DEVICE_TYPE(CAMMU_C4T, cammu_c4t_device) +DECLARE_DEVICE_TYPE(CAMMU_C4I, cammu_c4i_device) +DECLARE_DEVICE_TYPE(CAMMU_C3, cammu_c3_device) #endif // MAME_MACHINE_CAMMU_H diff --git a/src/mame/machine/cat702.cpp b/src/mame/machine/cat702.cpp index 7a3dc1f0e52..1daafb75fa5 100644 --- a/src/mame/machine/cat702.cpp +++ b/src/mame/machine/cat702.cpp @@ -87,10 +87,10 @@ #include "emu.h" #include "cat702.h" -const device_type CAT702 = device_creator; +DEFINE_DEVICE_TYPE(CAT702, cat702_device, "cat702", "CAT702") cat702_device::cat702_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, CAT702, "CAT702", tag, owner, clock, "cat702", __FILE__), + device_t(mconfig, CAT702, tag, owner, clock), m_region(*this, DEVICE_SELF), m_dataout_handler(*this) { diff --git a/src/mame/machine/cat702.h b/src/mame/machine/cat702.h index e6c63dea541..550da70f991 100644 --- a/src/mame/machine/cat702.h +++ b/src/mame/machine/cat702.h @@ -2,13 +2,13 @@ // copyright-holders:smf /* CAT702 security chip */ -#pragma once +#ifndef MAME_MACHINE_CAT702_H +#define MAME_MACHINE_CAT702_H -#ifndef __CAT702_H__ -#define __CAT702_H__ +#pragma once -extern const device_type CAT702; +DECLARE_DEVICE_TYPE(CAT702, cat702_device) #define MCFG_CAT702_DATAOUT_HANDLER(_devcb) \ devcb = &cat702_device::set_dataout_handler(*device, DEVCB_##_devcb); @@ -19,7 +19,7 @@ public: cat702_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template static devcb_base &set_dataout_handler(device_t &device, _Object object) { return downcast(device).m_dataout_handler.set_callback(object); } + template static devcb_base &set_dataout_handler(device_t &device, Object &&cb) { return downcast(device).m_dataout_handler.set_callback(std::forward(cb)); } DECLARE_WRITE_LINE_MEMBER(write_select); DECLARE_WRITE_LINE_MEMBER(write_datain); @@ -45,4 +45,4 @@ private: devcb_write_line m_dataout_handler; }; -#endif +#endif // MAME_MACHINE_CAT702_H diff --git a/src/mame/machine/cdi070.cpp b/src/mame/machine/cdi070.cpp index c3ba4d00891..c7baa63b3b0 100644 --- a/src/mame/machine/cdi070.cpp +++ b/src/mame/machine/cdi070.cpp @@ -22,12 +22,13 @@ TODO: *******************************************************************************/ #include "emu.h" -#include "cpu/m68000/m68000.h" #include "machine/cdi070.h" #include "includes/cdi.h" +#include "cpu/m68000/m68000.h" + // device type definition -const device_type MACHINE_CDI68070 = device_creator; +DEFINE_DEVICE_TYPE(MACHINE_CDI68070, cdi68070_device, "cdi68070", "CDI68070") #if ENABLE_VERBOSE_LOG static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, const char *s_fmt, ...) @@ -55,7 +56,7 @@ static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, co //------------------------------------------------- cdi68070_device::cdi68070_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MACHINE_CDI68070, "CDI68070", tag, owner, clock, "cdi68070", __FILE__) + : device_t(mconfig, MACHINE_CDI68070, tag, owner, clock) { } diff --git a/src/mame/machine/cdi070.h b/src/mame/machine/cdi070.h index 478297d27b6..0f1df7f7bad 100644 --- a/src/mame/machine/cdi070.h +++ b/src/mame/machine/cdi070.h @@ -21,8 +21,10 @@ TODO: *******************************************************************************/ -#ifndef _MACHINE_CDI68070_H_ -#define _MACHINE_CDI68070_H_ +#ifndef MAME_MACHINE_CDI070_H +#define MAME_MACHINE_CDI070_H + +#pragma once #define ISR_MST 0x80 // Master @@ -297,6 +299,6 @@ private: }; // device type definition -extern const device_type MACHINE_CDI68070; +DECLARE_DEVICE_TYPE(MACHINE_CDI68070, cdi68070_device) -#endif // _MACHINE_CDI68070_H_ +#endif // MAME_MACHINE_CDI070_H diff --git a/src/mame/machine/cdicdic.cpp b/src/mame/machine/cdicdic.cpp index 022fd1313c3..c04602721d4 100644 --- a/src/mame/machine/cdicdic.cpp +++ b/src/mame/machine/cdicdic.cpp @@ -22,15 +22,17 @@ TODO: *******************************************************************************/ #include "emu.h" -#include "cpu/m68000/m68000.h" -#include "cdrom.h" #include "machine/cdicdic.h" #include "includes/cdi.h" + +#include "cpu/m68000/m68000.h" +#include "cdrom.h" #include "sound/cdda.h" #include "imagedev/chd_cd.h" + // device type definition -const device_type MACHINE_CDICDIC = device_creator; +DEFINE_DEVICE_TYPE(MACHINE_CDICDIC, cdicdic_device, "cdicdic", "CDICDIC") #if ENABLE_VERBOSE_LOG static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, const char *s_fmt, ...) @@ -1162,7 +1164,7 @@ WRITE16_MEMBER( cdicdic_device::regs_w ) //------------------------------------------------- cdicdic_device::cdicdic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MACHINE_CDICDIC, "CDICDIC", tag, owner, clock, "cdicdic", __FILE__) + : device_t(mconfig, MACHINE_CDICDIC, tag, owner, clock) { } diff --git a/src/mame/machine/cdicdic.h b/src/mame/machine/cdicdic.h index 881f6ab16da..e275ed5739b 100644 --- a/src/mame/machine/cdicdic.h +++ b/src/mame/machine/cdicdic.h @@ -21,10 +21,10 @@ TODO: *******************************************************************************/ -#pragma once +#ifndef MAME_MACHINE_CDICDIC_H +#define MAME_MACHINE_CDICDIC_H -#ifndef __CDICDIC_H__ -#define __CDICDIC_H__ +#pragma once #include "cdrom.h" #include "sound/cdda.h" @@ -115,6 +115,6 @@ private: }; // device type definition -extern const device_type MACHINE_CDICDIC; +DECLARE_DEVICE_TYPE(MACHINE_CDICDIC, cdicdic_device) -#endif // __CDICDIC_H__ +#endif // MAME_MACHINE_CDICDIC_H diff --git a/src/mame/machine/cdislave.cpp b/src/mame/machine/cdislave.cpp index bbf21038307..1e24587088c 100644 --- a/src/mame/machine/cdislave.cpp +++ b/src/mame/machine/cdislave.cpp @@ -22,13 +22,15 @@ TODO: *******************************************************************************/ #include "emu.h" -#include "cpu/m68000/m68000.h" #include "machine/cdislave.h" #include "machine/cdi070.h" #include "includes/cdi.h" +#include "cpu/m68000/m68000.h" + + // device type definition -const device_type MACHINE_CDISLAVE = device_creator; +DEFINE_DEVICE_TYPE(MACHINE_CDISLAVE, cdislave_device, "cdislave", "CDISLAVE") #if ENABLE_VERBOSE_LOG @@ -419,7 +421,7 @@ WRITE16_MEMBER( cdislave_device::slave_w ) //------------------------------------------------- cdislave_device::cdislave_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MACHINE_CDISLAVE, "CDISLAVE", tag, owner, clock, "cdislave", __FILE__) + : device_t(mconfig, MACHINE_CDISLAVE, tag, owner, clock) { } diff --git a/src/mame/machine/cdislave.h b/src/mame/machine/cdislave.h index 7fee3e4561b..3791a98378d 100644 --- a/src/mame/machine/cdislave.h +++ b/src/mame/machine/cdislave.h @@ -21,10 +21,10 @@ TODO: *******************************************************************************/ -#pragma once +#ifndef MAME_MACHINE_CDISLAVE_H +#define MAME_MACHINE_CDISLAVE_H -#ifndef __CDISLAVE_H__ -#define __CDISLAVE_H__ +#pragma once //************************************************************************** diff --git a/src/mame/machine/cedar_magnet_board.h b/src/mame/machine/cedar_magnet_board.h index dbdddbed103..08cc36d9a9a 100644 --- a/src/mame/machine/cedar_magnet_board.h +++ b/src/mame/machine/cedar_magnet_board.h @@ -2,11 +2,11 @@ // copyright-holders:David Haywood // device interface to hold some common functions of the EFO / Cedar Magnet System PCBs +#ifndef MAME_MACHINE_CEDAR_MAGNET_BOARD_H +#define MAME_MACHINE_CEDAR_MAGNET_BOARD_H #pragma once -#ifndef CEDAR_MAGNET_BOARD_DEF -#define CEDAR_MAGNET_BOARD_DEF #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" @@ -46,4 +46,4 @@ private: bool m_is_running; }; -#endif +#endif // MAME_MACHINE_CEDAR_MAGNET_BOARD_H diff --git a/src/mame/machine/cedar_magnet_flop.cpp b/src/mame/machine/cedar_magnet_flop.cpp index c0abb54b341..a9b0d3a407a 100644 --- a/src/mame/machine/cedar_magnet_flop.cpp +++ b/src/mame/machine/cedar_magnet_flop.cpp @@ -8,10 +8,10 @@ #include "emu.h" #include "cedar_magnet_flop.h" -const device_type CEDAR_MAGNET_FLOP = device_creator; +DEFINE_DEVICE_TYPE(CEDAR_MAGNET_FLOP, cedar_magnet_flop_device, "cedmag_flop", "Cedar Floppy Simulation") cedar_magnet_flop_device::cedar_magnet_flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CEDAR_MAGNET_FLOP, "Cedar Floppy Simulation", tag, owner, clock, "cedmag_flop", __FILE__) + : device_t(mconfig, CEDAR_MAGNET_FLOP, tag, owner, clock) { } @@ -53,7 +53,7 @@ READ8_MEMBER(cedar_magnet_flop_device::port61_r) READ8_MEMBER(cedar_magnet_flop_device::port63_r) { - uint8_t ret = rand(); + uint8_t ret = machine().rand(); // printf("%s: port63_r (DATA) (%02x)\n", machine().describe_context(), ret); diff --git a/src/mame/machine/cedar_magnet_flop.h b/src/mame/machine/cedar_magnet_flop.h index c73f8f6e031..fc82a4adb8d 100644 --- a/src/mame/machine/cedar_magnet_flop.h +++ b/src/mame/machine/cedar_magnet_flop.h @@ -1,33 +1,25 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_CEDAR_MAGNET_FLOP_H +#define MAME_MACHINE_CEDAR_MAGNET_FLOP_H #pragma once -#ifndef CEDAR_MAGNET_FLOP_DEF -#define CEDAR_MAGNET_FLOP_DEF extern const device_type CEDAR_MAGNET_FLOP; +DECLARE_DEVICE_TYPE(CEDAR_MAGNET_FLOP, cedar_magnet_flop_device) #define MCFG_CEDAR_MAGNET_FLOP_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, CEDAR_MAGNET_FLOP, 0) #include "machine/nvram.h" -class cedar_magnet_flop_device : public device_t +class cedar_magnet_flop_device : public device_t { public: // construction/destruction cedar_magnet_flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - uint8_t m_flopdat; - uint8_t m_flopcmd; - uint8_t m_flopsec; - uint8_t m_flopstat; - uint8_t m_floptrk; - - uint8_t m_curtrack; - int m_secoffs; - DECLARE_READ8_MEMBER(port60_r); DECLARE_READ8_MEMBER(port61_r); DECLARE_READ8_MEMBER(port63_r); @@ -43,7 +35,17 @@ protected: virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; virtual void device_reset() override; + private: + uint8_t m_flopdat; + uint8_t m_flopcmd; + uint8_t m_flopsec; + uint8_t m_flopstat; + uint8_t m_floptrk; + + uint8_t m_curtrack; + int m_secoffs; + }; -#endif +#endif // MAME_MACHINE_CEDAR_MAGNET_FLOP_H diff --git a/src/mame/machine/cedar_magnet_plane.cpp b/src/mame/machine/cedar_magnet_plane.cpp index 9646d49dbed..3d69bb43c5b 100644 --- a/src/mame/machine/cedar_magnet_plane.cpp +++ b/src/mame/machine/cedar_magnet_plane.cpp @@ -6,12 +6,12 @@ #include "cedar_magnet_plane.h" -const device_type CEDAR_MAGNET_PLANE = device_creator; +DEFINE_DEVICE_TYPE(CEDAR_MAGNET_PLANE, cedar_magnet_plane_device, "cedmag_plane", "Cedar Plane") cedar_magnet_plane_device::cedar_magnet_plane_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CEDAR_MAGNET_PLANE, "Cedar Plane", tag, owner, clock, "cedmag_plane", __FILE__), - cedar_magnet_board_interface(mconfig, *this, "planecpu", "ram") + : device_t(mconfig, CEDAR_MAGNET_PLANE, tag, owner, clock) + , cedar_magnet_board_interface(mconfig, *this, "planecpu", "ram") { } diff --git a/src/mame/machine/cedar_magnet_plane.h b/src/mame/machine/cedar_magnet_plane.h index a1bafdc74b9..1b6cadf78b0 100644 --- a/src/mame/machine/cedar_magnet_plane.h +++ b/src/mame/machine/cedar_magnet_plane.h @@ -1,15 +1,16 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_CEDAR_MAGNET_PLANE_H +#define MAME_MACHINE_CEDAR_MAGNET_PLANE_H #pragma once -#ifndef CEDAR_MAGNET_PLANE_DEF -#define CEDAR_MAGNET_PLANE_DEF #include "machine/cedar_magnet_board.h" #include "machine/z80pio.h" extern const device_type CEDAR_MAGNET_PLANE; +DECLARE_DEVICE_TYPE(CEDAR_MAGNET_PLANE, cedar_magnet_plane_device) #define MCFG_CEDAR_MAGNET_PLANE_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, CEDAR_MAGNET_PLANE, 0) @@ -38,6 +39,13 @@ public: INTERRUPT_GEN_MEMBER(vblank_irq); + uint32_t draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int palbase); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; + +private: uint8_t m_framebuffer[0x10000]; int m_curline; int m_lineoffset; @@ -50,13 +58,6 @@ public: uint8_t m_cd_data; uint8_t m_cf_data; - uint32_t draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int palbase); -protected: - virtual machine_config_constructor device_mconfig_additions() const override; - virtual void device_start() override; -// virtual void device_reset() override; - -private: }; -#endif +#endif // MAME_MACHINE_CEDAR_MAGNET_PLANE_H diff --git a/src/mame/machine/cedar_magnet_sprite.cpp b/src/mame/machine/cedar_magnet_sprite.cpp index 5b27751dedd..ef653288022 100644 --- a/src/mame/machine/cedar_magnet_sprite.cpp +++ b/src/mame/machine/cedar_magnet_sprite.cpp @@ -10,11 +10,11 @@ #include "cedar_magnet_sprite.h" -const device_type CEDAR_MAGNET_SPRITE = device_creator; +DEFINE_DEVICE_TYPE(CEDAR_MAGNET_SPRITE, cedar_magnet_sprite_device, "cedmag_sprite", "Cedar Sprite") cedar_magnet_sprite_device::cedar_magnet_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CEDAR_MAGNET_SPRITE, "Cedar Sprite", tag, owner, clock, "cedmag_sprite", __FILE__), + : device_t(mconfig, CEDAR_MAGNET_SPRITE, tag, owner, clock), cedar_magnet_board_interface(mconfig, *this, "spritecpu", "ram"), m_sprite_ram_bankdev(*this, "sp_sub_ram"), m_pio0(*this, "z80pio0"), @@ -117,7 +117,7 @@ void cedar_magnet_sprite_device::do_blit() uint8_t data = m_ram[source + ((m_uppersprite & 0x3) * 0x10000)]; if (!(pio0_pb_data & 0x02)) - data = rand(); + data = machine().rand(); source++; diff --git a/src/mame/machine/cedar_magnet_sprite.h b/src/mame/machine/cedar_magnet_sprite.h index f6882e50923..3bdf55ed0f0 100644 --- a/src/mame/machine/cedar_magnet_sprite.h +++ b/src/mame/machine/cedar_magnet_sprite.h @@ -1,18 +1,18 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_CEDAR_MAGNET_SPRITE_H +#define MAME_MACHINE_CEDAR_MAGNET_SPRITE_H #pragma once -#ifndef CEDAR_MAGNET_SPRITE_DEF -#define CEDAR_MAGNET_SPRITE_DEF +#include "machine/cedar_magnet_board.h" #include "cpu/z80/z80.h" #include "cpu/z80/z80daisy.h" #include "machine/z80pio.h" #include "machine/bankdev.h" -#include "machine/cedar_magnet_board.h" -extern const device_type CEDAR_MAGNET_SPRITE; +DECLARE_DEVICE_TYPE(CEDAR_MAGNET_SPRITE, cedar_magnet_sprite_device) #define MCFG_CEDAR_MAGNET_SPRITE_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, CEDAR_MAGNET_SPRITE, 0) @@ -24,11 +24,6 @@ public: // construction/destruction cedar_magnet_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - uint8_t m_framebuffer[0x10000]; - uint8_t pio2_pb_data; - - required_device m_sprite_ram_bankdev; - DECLARE_READ8_MEMBER(pio0_pa_r); DECLARE_WRITE8_MEMBER(pio0_pa_w); // DECLARE_READ8_MEMBER(pio0_pb_r); @@ -52,11 +47,26 @@ public: DECLARE_READ8_MEMBER(exzisus_hack_r); - uint8_t m_upperaddr; - uint8_t m_loweraddr; + INTERRUPT_GEN_MEMBER(irq); + + uint32_t draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int palbase); +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; + virtual void device_reset() override; + +private: void do_blit(); + uint8_t m_framebuffer[0x10000]; + uint8_t pio2_pb_data; + + required_device m_sprite_ram_bankdev; + + uint8_t m_upperaddr; + uint8_t m_loweraddr; + uint8_t m_spritesize; uint8_t pio0_pb_data; uint8_t m_spritecodelow; @@ -65,19 +75,9 @@ public: int m_high_write; uint8_t m_uppersprite; - INTERRUPT_GEN_MEMBER(irq); - required_device m_pio0; required_device m_pio1; required_device m_pio2; - - uint32_t draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int palbase); -protected: - virtual machine_config_constructor device_mconfig_additions() const override; - virtual void device_start() override; - virtual void device_reset() override; - -private: }; -#endif +#endif // MAME_MACHINE_CEDAR_MAGNET_SPRITE_H diff --git a/src/mame/machine/coco.cpp b/src/mame/machine/coco.cpp index 5dfc15c28ed..6bdfa8bf137 100644 --- a/src/mame/machine/coco.cpp +++ b/src/mame/machine/coco.cpp @@ -695,7 +695,7 @@ void coco_state::update_sound(void) m_cassette->change_state(cas_sound, CASSETTE_MASK_SPEAKER); /* determine the cartridge sound status */ - m_cococart->cart_set_line( + m_cococart->set_line_value( cococart_slot_device::line::SOUND_ENABLE, bCartSoundEnable ? cococart_slot_device::line_value::ASSERT : cococart_slot_device::line_value::CLEAR); } diff --git a/src/mame/machine/coco_vhd.cpp b/src/mame/machine/coco_vhd.cpp index 2cbb0eeef90..2384127346e 100644 --- a/src/mame/machine/coco_vhd.cpp +++ b/src/mame/machine/coco_vhd.cpp @@ -65,15 +65,15 @@ CORE IMPLEMENTATION ***************************************************************************/ -const device_type COCO_VHD = device_creator; +DEFINE_DEVICE_TYPE(COCO_VHD, coco_vhd_image_device, "coco_vhd_image", "CoCo Virtual Hard Disk") //------------------------------------------------- // coco_vhd_image_device - constructor //------------------------------------------------- coco_vhd_image_device::coco_vhd_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, COCO_VHD, "Virtual Hard Disk", tag, owner, clock, "coco_vhd_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, COCO_VHD, tag, owner, clock) + , device_image_interface(mconfig, *this) { } diff --git a/src/mame/machine/coco_vhd.h b/src/mame/machine/coco_vhd.h index 08e8499c56a..2d4a2c3deb8 100644 --- a/src/mame/machine/coco_vhd.h +++ b/src/mame/machine/coco_vhd.h @@ -8,9 +8,10 @@ ***************************************************************************/ -#ifndef COCOVHD_H -#define COCOVHD_H +#ifndef MAME_MACHINE_COCO_VHD_H +#define MAME_MACHINE_COCO_VHD_H +#pragma once /*************************************************************************** TYPE DEFINITIONS @@ -59,7 +60,7 @@ private: }; // device type definition -extern const device_type COCO_VHD; +DECLARE_DEVICE_TYPE(COCO_VHD, coco_vhd_image_device) /*************************************************************************** DEVICE CONFIGURATION MACROS @@ -67,4 +68,5 @@ extern const device_type COCO_VHD; #define MCFG_COCO_VHD_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, COCO_VHD, 0) -#endif /* COCOVHD_H */ + +#endif // MAME_MACHINE_COCO_VHD_H diff --git a/src/mame/machine/compiskb.cpp b/src/mame/machine/compiskb.cpp index 8680a94798b..ae4884da194 100644 --- a/src/mame/machine/compiskb.cpp +++ b/src/mame/machine/compiskb.cpp @@ -28,7 +28,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type COMPIS_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(COMPIS_KEYBOARD, compis_keyboard_device, "compiskb", "Compis Keyboard") //------------------------------------------------- @@ -51,26 +51,18 @@ const tiny_rom_entry *compis_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( compis_keyboard_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( compis_keyboard_io, AS_IO, 8, compis_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(p1_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(p2_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_NOP - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_NOP -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( compis_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( compis_keyboard ) MCFG_CPU_ADD(I8748_TAG, I8748, 2016000) // XTAL_4_032MHz/2 ??? - MCFG_CPU_IO_MAP(compis_keyboard_io) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(compis_keyboard_device, bus_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(compis_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(compis_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(compis_keyboard_device, p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(NOOP) // ??? + MCFG_MCS48_PORT_T1_IN_CB(NOOP) // ??? // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") @@ -241,7 +233,7 @@ ioport_constructor compis_keyboard_device::device_input_ports() const //------------------------------------------------- compis_keyboard_device::compis_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, COMPIS_KEYBOARD, "Compis Keyboard", tag, owner, clock, "compiskb", __FILE__), + : device_t(mconfig, COMPIS_KEYBOARD, tag, owner, clock), m_maincpu(*this, I8748_TAG), m_speaker(*this, SPEAKER_TAG), m_y(*this, "Y%u", 1), diff --git a/src/mame/machine/compiskb.h b/src/mame/machine/compiskb.h index dfaf863bee4..a4087f1f2cf 100644 --- a/src/mame/machine/compiskb.h +++ b/src/mame/machine/compiskb.h @@ -31,13 +31,13 @@ // ======================> compis_keyboard_device -class compis_keyboard_device : public device_t +class compis_keyboard_device : public device_t { public: // construction/destruction compis_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_out_tx_handler(device_t &device, _Object object) { return downcast(device).m_out_tx_handler.set_callback(object); } + template static devcb_base &set_out_tx_handler(device_t &device, Object &&cb) { return downcast(device).m_out_tx_handler.set_callback(std::forward(cb)); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -65,7 +65,7 @@ private: required_device m_speaker; required_ioport_array<9> m_y; required_ioport m_special; - devcb_write_line m_out_tx_handler; + devcb_write_line m_out_tx_handler; uint8_t m_bus; uint8_t m_keylatch; @@ -74,7 +74,6 @@ private: // device type definition extern const device_type COMPIS_KEYBOARD; - - +DECLARE_DEVICE_TYPE(COMPIS_KEYBOARD, compis_keyboard_device) #endif // MAME_INCLUDES_COMPISKB_H diff --git a/src/mame/machine/cuda.cpp b/src/mame/machine/cuda.cpp index 5ce2edfbd9a..7ef3d210cd3 100644 --- a/src/mame/machine/cuda.cpp +++ b/src/mame/machine/cuda.cpp @@ -54,7 +54,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type CUDA = device_creator; +DEFINE_DEVICE_TYPE(CUDA, cuda_device, "cuda", "Apple Cuda") ROM_START( cuda ) ROM_REGION(0x4400, CUDA_CPU_TAG, 0) @@ -383,7 +383,7 @@ WRITE8_MEMBER( cuda_device::pram_w ) //------------------------------------------------- cuda_device::cuda_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CUDA, "Apple Cuda", tag, owner, clock, "cuda", __FILE__), + : device_t(mconfig, CUDA, tag, owner, clock), device_nvram_interface(mconfig, *this), write_reset(*this), write_linechange(*this), diff --git a/src/mame/machine/cuda.h b/src/mame/machine/cuda.h index ecc77b127d2..7e5e614623d 100644 --- a/src/mame/machine/cuda.h +++ b/src/mame/machine/cuda.h @@ -135,6 +135,6 @@ private: }; // device type definition -extern const device_type CUDA; +DECLARE_DEVICE_TYPE(CUDA, cuda_device) #endif diff --git a/src/mame/machine/dc-ctrl.cpp b/src/mame/machine/dc-ctrl.cpp index 48db78e1af6..fa8f28346f5 100644 --- a/src/mame/machine/dc-ctrl.cpp +++ b/src/mame/machine/dc-ctrl.cpp @@ -3,7 +3,7 @@ #include "emu.h" #include "dc-ctrl.h" -const device_type DC_CONTROLLER = device_creator; +DEFINE_DEVICE_TYPE(DC_CONTROLLER, dc_controller_device, "dcctrl", "Dreamcast Controller") void dc_controller_device::static_set_port_tag(device_t &device, int port, const char *tag) { @@ -30,7 +30,7 @@ void dc_controller_device::static_set_versions(device_t &device, const char *ver } dc_controller_device::dc_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - maple_device(mconfig, DC_CONTROLLER, "Dreamcast Controller", tag, owner, clock, "dcctrl", __FILE__) + maple_device(mconfig, DC_CONTROLLER, tag, owner, clock) { memset(port_tag, 0, sizeof(port_tag)); diff --git a/src/mame/machine/dc-ctrl.h b/src/mame/machine/dc-ctrl.h index afc935c5f75..b5b98f42dab 100644 --- a/src/mame/machine/dc-ctrl.h +++ b/src/mame/machine/dc-ctrl.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef _DC_CTRL_H_ -#define _DC_CTRL_H_ +#ifndef MAME_MACHINE_DC_CTRL_H +#define MAME_MACHINE_DC_CTRL_H + +#pragma once #include "mapledev.h" @@ -53,6 +55,6 @@ private: ioport_port *port[8]; }; -extern const device_type DC_CONTROLLER; +DECLARE_DEVICE_TYPE(DC_CONTROLLER, dc_controller_device) -#endif // _DC_CTRL_H_ +#endif // MAME_MACHINE_DC_CTRL_H diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp index 97b7da6829b..d1c95ed1e5c 100644 --- a/src/mame/machine/dec_lk201.cpp +++ b/src/mame/machine/dec_lk201.cpp @@ -177,7 +177,7 @@ ________|D7 |D6 |D5 |D4 |D3 |D2 |D1 |D0 // DEVICE DEFINITIONS //************************************************************************** -const device_type LK201 = device_creator; +DEFINE_DEVICE_TYPE(LK201, lk201_device, "lk201", "DEC LK201 Keyboard") ROM_START( lk201 ) ROM_REGION(0x2000, LK201_CPU_TAG, 0) @@ -512,7 +512,7 @@ ioport_constructor lk201_device::device_input_ports() const //------------------------------------------------- lk201_device::lk201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, LK201, "DEC LK201 keyboard", tag, owner, clock, "lk201", __FILE__), + : device_t(mconfig, LK201, tag, owner, clock), device_serial_interface(mconfig, *this), m_maincpu(*this, LK201_CPU_TAG), m_speaker(*this, LK201_SPK_TAG), diff --git a/src/mame/machine/dec_lk201.h b/src/mame/machine/dec_lk201.h index 308d6a98052..d451ea8d530 100644 --- a/src/mame/machine/dec_lk201.h +++ b/src/mame/machine/dec_lk201.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont, M. Burke -#pragma once +#ifndef MAME_MACHINE_DEC_LK201_H +#define MAME_MACHINE_DEC_LK201_H -#ifndef __LK201_H__ -#define __LK201_H__ +#pragma once #include "sound/beep.h" @@ -139,6 +139,6 @@ private: }; // device type definition -extern const device_type LK201; +DECLARE_DEVICE_TYPE(LK201, lk201_device) -#endif +#endif // MAME_MACHINE_DEC_LK201_H diff --git a/src/mame/machine/deco104.cpp b/src/mame/machine/deco104.cpp index 42ce906f9a6..36fffd62e70 100644 --- a/src/mame/machine/deco104.cpp +++ b/src/mame/machine/deco104.cpp @@ -14,14 +14,12 @@ ***************************************************************************/ #include "emu.h" -#include "machine/eepromser.h" #include "deco104.h" +#include "machine/eepromser.h" - - -deco146port_xx port104_table[] = { +static deco146port_xx const port104_table[] = { /* 0x000 */ { 0x04, { NIB3__, NIB0__, NIB1__, NIB2__ } , 1, 1 }, /* 0x002 */ { 0x2a, { NIB1__, NIB3__, NIB0__, NIB2__ } , 0, 1 }, /* 0x004 */ { 0x5e, { NIB0__, NIB1__, NIB2__, NIB3__ } , 0, 0 }, @@ -1051,12 +1049,12 @@ deco146port_xx port104_table[] = { -const device_type DECO104PROT = device_creator; +DEFINE_DEVICE_TYPE(DECO104PROT, deco104_device, "deco104", "DECO 104 Protection") deco104_device::deco104_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : deco_146_base_device(mconfig, DECO104PROT, "DECO 104 Protection", tag, owner, clock, "deco104", __FILE__) + : deco_146_base_device(mconfig, DECO104PROT, tag, owner, clock) { m_bankswitch_swap_read_address = 0x66; m_magic_read_address_xor = 0x2a4; diff --git a/src/mame/machine/deco104.h b/src/mame/machine/deco104.h index cae62defaf0..e9bde950888 100644 --- a/src/mame/machine/deco104.h +++ b/src/mame/machine/deco104.h @@ -1,13 +1,13 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_DECO104_H +#define MAME_MACHINE_DECO104_H + #pragma once -#ifndef __DECO104_H__ -#define __DECO104_H__ #include "deco146.h" - /* Data East 104 protection chip */ class deco104_device : public deco_146_base_device @@ -15,29 +15,15 @@ class deco104_device : public deco_146_base_device public: deco104_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - - protected: virtual void device_start() override; virtual void device_reset() override; - - - - - -private: - - }; -extern const device_type DECO104PROT; +DECLARE_DEVICE_TYPE(DECO104PROT, deco104_device) #define MCFG_DECO104_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, DECO104PROT, 0) - - - -#endif +#endif // MAME_MACHINE_DECO104_H diff --git a/src/mame/machine/deco146.cpp b/src/mame/machine/deco146.cpp index e5c9f35cd59..089217af218 100644 --- a/src/mame/machine/deco146.cpp +++ b/src/mame/machine/deco146.cpp @@ -92,10 +92,7 @@ #include "machine/eepromser.h" - - - -deco146port_xx port_table[] = { +static deco146port_xx const port_table[] = { /* 0x000 */ { 0x08a, { NIB1__, NIB2__, NIB3__, BLANK_ }, 0, 1 }, /* 0x002 */ { 0x0aa, { NIB3__, NIB2__, NIB0__, NIB1__ }, 0, 0 }, /* 0x004 */ { 0x018, { NIB2R2, NIB3__, BLANK_, BLANK_ }, 0, 1 }, @@ -1122,7 +1119,7 @@ deco146port_xx port_table[] = { /* 0x7fe */ { 0x04c, { NIB1__, NIB2__, NIB0__, NIB3__ }, 0, 1 } }; -uint16_t reorder(uint16_t input, uint8_t *weights) +inline uint16_t reorder(uint16_t input, uint8_t const *weights) { uint16_t temp = 0; for(int i = 0; i < 16; i++) @@ -1315,12 +1312,9 @@ uint16_t deco_146_base_device::read_data(uint16_t address, uint16_t mem_mask, ui } -//const device_type DECO146BASE = device_creator; - - -deco_146_base_device::deco_146_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +deco_146_base_device::deco_146_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), m_sound_latch(*this, ":soundlatch") { m_port_a_r = deco146_port_read_cb(FUNC(deco_146_base_device::port_a_default), this); @@ -1458,15 +1452,6 @@ void deco_146_base_device::device_reset() } - - - - - - -const device_type DECO146PROT = device_creator; - - uint16_t deco_146_base_device::read_data_getloc(uint16_t address, int& location) { uint16_t retdata = 0; @@ -1502,8 +1487,12 @@ uint16_t deco_146_base_device::read_data_getloc(uint16_t address, int& location) } + +DEFINE_DEVICE_TYPE(DECO146PROT, deco146_device, "deco146", "DECO 146 Protection") + + deco146_device::deco146_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : deco_146_base_device(mconfig, DECO146PROT, "DECO 146 Protection", tag, owner, clock, "deco146", __FILE__) + : deco_146_base_device(mconfig, DECO146PROT, tag, owner, clock) { m_bankswitch_swap_read_address = 0x78; m_magic_read_address_xor = 0x44a; diff --git a/src/mame/machine/deco146.h b/src/mame/machine/deco146.h index d8bf3bf5c28..1ef7ab87082 100644 --- a/src/mame/machine/deco146.h +++ b/src/mame/machine/deco146.h @@ -1,8 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood, Charles MacDonald +#ifndef MAME_MACHINE_DECO146_H +#define MAME_MACHINE_DECO146_H + #pragma once -#ifndef __DECO146_H__ -#define __DECO146_H__ #include "machine/gen_latch.h" @@ -82,9 +83,6 @@ struct deco146port_xx class deco_146_base_device : public device_t { public: - //deco_146_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - deco_146_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - void write_data(address_space &space, uint16_t address, uint16_t data, uint16_t mem_mask, uint8_t &csflags); uint16_t read_data(uint16_t address, uint16_t mem_mask, uint8_t &csflags); @@ -121,18 +119,11 @@ public: uint8_t m_external_addrswap[10]; - deco146port_xx* m_lookup_table; - - - -// for older handlers -#define DECO146__PORT(p) (prot_ram[p/2]) - - - - + deco146port_xx const *m_lookup_table; protected: + deco_146_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual void device_reset() override; @@ -161,8 +152,6 @@ private: }; -extern const device_type DECO146BASE; - class deco146_device : public deco_146_base_device { public: @@ -170,14 +159,9 @@ public: }; extern const device_type DECO146PROT; +DECLARE_DEVICE_TYPE(DECO146PROT, deco146_device) #define MCFG_DECO146_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, DECO146PROT, 0) - - - - - - -#endif +#endif // MAME_MACHINE_DECO146_H diff --git a/src/mame/machine/deco156.h b/src/mame/machine/deco156.h index b73b82f4b56..f33670c459a 100644 --- a/src/mame/machine/deco156.h +++ b/src/mame/machine/deco156.h @@ -1,4 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria +#ifndef MAME_MACHINE_DECO156_H +#define MAME_MACHINE_DECO156_H + +#pragma once void deco156_decrypt(running_machine &machine); + +#endif // MAME_MACHINE_DECO156_H diff --git a/src/mame/machine/deco222.cpp b/src/mame/machine/deco222.cpp index d19aefade66..50478cc48bc 100644 --- a/src/mame/machine/deco222.cpp +++ b/src/mame/machine/deco222.cpp @@ -8,12 +8,12 @@ #include "emu.h" #include "deco222.h" -const device_type DECO_222 = device_creator; -const device_type DECO_C10707 = device_creator; +DEFINE_DEVICE_TYPE(DECO_222, deco_222_device, "deco222", "DECO 222") +DEFINE_DEVICE_TYPE(DECO_C10707, deco_c10707_device, "decoc10707", "DECO C10707") deco_222_device::deco_222_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - m6502_device(mconfig, DECO_222, "DECO 222", tag, owner, clock, "deco222", __FILE__) + m6502_device(mconfig, DECO_222, tag, owner, clock) { } @@ -37,7 +37,7 @@ uint8_t deco_222_device::mi_decrypt::read_sync(uint16_t adr) deco_c10707_device::deco_c10707_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - m6502_device(mconfig, DECO_C10707, "DECO C10707", tag, owner, clock, "decoc10707", __FILE__) + m6502_device(mconfig, DECO_C10707, tag, owner, clock) { } diff --git a/src/mame/machine/deco222.h b/src/mame/machine/deco222.h index 56df49a0bad..c7bf940acac 100644 --- a/src/mame/machine/deco222.h +++ b/src/mame/machine/deco222.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_DECO222 +#define MAME_MACHINE_DECO222 + +#pragma once #include "cpu/m6502/m6502.h" @@ -42,5 +46,7 @@ protected: }; -extern const device_type DECO_222; -extern const device_type DECO_C10707; +DECLARE_DEVICE_TYPE(DECO_222, deco_222_device) +DECLARE_DEVICE_TYPE(DECO_C10707, deco_c10707_device) + +#endif // MAME_MACHINE_DECO222 diff --git a/src/mame/machine/decocass_tape.cpp b/src/mame/machine/decocass_tape.cpp index a3be6307cfc..8686be2cb06 100644 --- a/src/mame/machine/decocass_tape.cpp +++ b/src/mame/machine/decocass_tape.cpp @@ -7,9 +7,10 @@ ***********************************************************************/ #include "emu.h" +#include "machine/decocass_tape.h" + #include "cpu/m6502/m6502.h" #include "cpu/mcs48/mcs48.h" -#include "machine/decocass_tape.h" #define LOG_CASSETTE_STATE 0 @@ -56,10 +57,10 @@ static uint16_t tape_crc16_byte(uint16_t crc, uint8_t data); -const device_type DECOCASS_TAPE = device_creator; +DEFINE_DEVICE_TYPE(DECOCASS_TAPE, decocass_tape_device, "decocass_tape", "DECO Cassette Tape") decocass_tape_device::decocass_tape_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECOCASS_TAPE, "DECO Cassette Tape", tag, owner, clock, "decocass_tape", __FILE__), + : device_t(mconfig, DECOCASS_TAPE, tag, owner, clock), m_tape_timer(nullptr), m_speed(0), m_region(REGION_LEADER), diff --git a/src/mame/machine/decocass_tape.h b/src/mame/machine/decocass_tape.h index c8a766c101a..0b6131d5ae8 100644 --- a/src/mame/machine/decocass_tape.h +++ b/src/mame/machine/decocass_tape.h @@ -1,7 +1,9 @@ // license:GPL-2.0+ // copyright-holders:Juergen Buchmueller, David Haywood -#ifndef __DECOCASS_TAPE_H__ -#define __DECOCASS_TAPE_H__ +#ifndef MAME_MACHINE_DECOCASS_TAPE_H +#define MAME_MACHINE_DECOCASS_TAPE_H + +#pragma once class decocass_tape_device : public device_t { @@ -69,9 +71,9 @@ private: TIMER_CALLBACK_MEMBER( tape_clock_callback ); }; -extern const device_type DECOCASS_TAPE; +DECLARE_DEVICE_TYPE(DECOCASS_TAPE, decocass_tape_device) #define MCFG_DECOCASS_TAPE_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, DECOCASS_TAPE, 0) -#endif +#endif // MAME_MACHINE_DECOCASS_TAPE_H diff --git a/src/mame/machine/decocpu6.cpp b/src/mame/machine/decocpu6.cpp index 2162812d3dd..3d855e2864d 100644 --- a/src/mame/machine/decocpu6.cpp +++ b/src/mame/machine/decocpu6.cpp @@ -9,11 +9,11 @@ #include "emu.h" #include "decocpu6.h" -const device_type DECO_CPU6 = device_creator; +DEFINE_DEVICE_TYPE(DECO_CPU6, deco_cpu6_device, "decocpu6", "DECO CPU-6") deco_cpu6_device::deco_cpu6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - m6502_device(mconfig, DECO_CPU6, "DECO CPU-6", tag, owner, clock, "decocpu6", __FILE__) + m6502_device(mconfig, DECO_CPU6, tag, owner, clock) { } diff --git a/src/mame/machine/decocpu6.h b/src/mame/machine/decocpu6.h index 5db333114fc..21e649ed5ac 100644 --- a/src/mame/machine/decocpu6.h +++ b/src/mame/machine/decocpu6.h @@ -1,6 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_DECOCPU6_H +#define MAME_MACHINE_DECOCPU6_H +#pragma once #include "cpu/m6502/m6502.h" @@ -20,4 +23,6 @@ protected: }; -extern const device_type DECO_CPU6; +DECLARE_DEVICE_TYPE(DECO_CPU6, deco_cpu6_device) + +#endif // MAME_MACHINE_DECOCPU6_H diff --git a/src/mame/machine/decocpu7.cpp b/src/mame/machine/decocpu7.cpp index 6c7fe9c8179..332cea3ac45 100644 --- a/src/mame/machine/decocpu7.cpp +++ b/src/mame/machine/decocpu7.cpp @@ -4,11 +4,11 @@ #include "emu.h" #include "decocpu7.h" -const device_type DECO_CPU7 = device_creator; +DEFINE_DEVICE_TYPE(DECO_CPU7, deco_cpu7_device, "decocpu7", "DECO CPU-7") deco_cpu7_device::deco_cpu7_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - m6502_device(mconfig, DECO_CPU7, "DECO CPU-7", tag, owner, clock, "decocpu7", __FILE__) + m6502_device(mconfig, DECO_CPU7, tag, owner, clock) { } diff --git a/src/mame/machine/decocpu7.h b/src/mame/machine/decocpu7.h index 18d1510bcb9..4f854816f21 100644 --- a/src/mame/machine/decocpu7.h +++ b/src/mame/machine/decocpu7.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_DECOCPU7_H +#define MAME_MACHINE_DECOCPU7_H + +#pragma once #include "cpu/m6502/m6502.h" @@ -22,4 +26,6 @@ protected: }; -extern const device_type DECO_CPU7; +DECLARE_DEVICE_TYPE(DECO_CPU7, deco_cpu7_device) + +#endif // MAME_MACHINE_DECOCPU7_H diff --git a/src/mame/machine/decopincpu.cpp b/src/mame/machine/decopincpu.cpp index 38082be8ad4..4f9424cdc84 100644 --- a/src/mame/machine/decopincpu.cpp +++ b/src/mame/machine/decopincpu.cpp @@ -16,10 +16,10 @@ #include "emu.h" #include "decopincpu.h" -const device_type DECOCPU1 = device_creator; -const device_type DECOCPU2 = device_creator; -const device_type DECOCPU3 = device_creator; -const device_type DECOCPU3B = device_creator; +DEFINE_DEVICE_TYPE(DECOCPU1, decocpu_type1_device, "decocpu1", "Data East Pinball CPU Board Type 1") +DEFINE_DEVICE_TYPE(DECOCPU2, decocpu_type2_device, "decocpu2", "Data East Pinball CPU Board Type 2") +DEFINE_DEVICE_TYPE(DECOCPU3, decocpu_type3_device, "decocpu3", "Data East Pinball CPU Board Type 3") +DEFINE_DEVICE_TYPE(DECOCPU3B, decocpu_type3b_device, "decocpu3b", "Data East Pinball CPU Board Type 3B") static ADDRESS_MAP_START( decocpu1_map, AS_PROGRAM, 8, decocpu_type1_device ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") @@ -264,26 +264,11 @@ ioport_constructor decocpu_type1_device::device_input_ports() const } decocpu_type1_device::decocpu_type1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECOCPU1, "Data East Pinball CPU Board Type 1", tag, owner, clock, "decocpu1", __FILE__), - m_cpu(*this,"maincpu"), - m_pia21(*this, "pia21"), - m_pia24(*this, "pia24"), - m_pia28(*this, "pia28"), - m_pia2c(*this, "pia2c"), - m_pia30(*this, "pia30"), - m_pia34(*this, "pia34"), - m_read_display(*this), - m_write_display(*this), - m_read_dmdstatus(*this), - m_write_soundlatch(*this), - m_read_switch(*this), - m_write_switch(*this), - m_write_lamp(*this), - m_write_solenoid(*this) + : decocpu_type1_device(mconfig, DECOCPU1, tag, owner, clock) {} -decocpu_type1_device::decocpu_type1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +decocpu_type1_device::decocpu_type1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), m_cpu(*this,"maincpu"), m_pia21(*this, "pia21"), m_pia24(*this, "pia24"), @@ -329,11 +314,11 @@ void decocpu_type1_device::static_set_cpuregion(device_t &device, const char *ta } decocpu_type2_device::decocpu_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : decocpu_type1_device(mconfig, DECOCPU2, "Data East Pinball CPU Board Type 2", tag, owner, clock, "decocpu2", __FILE__) + : decocpu_type2_device(mconfig, DECOCPU2, tag, owner, clock) {} -decocpu_type2_device::decocpu_type2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : decocpu_type1_device(mconfig, type, name, tag, owner, clock, shortname, source) +decocpu_type2_device::decocpu_type2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : decocpu_type1_device(mconfig, type, tag, owner, clock) {} machine_config_constructor decocpu_type2_device::device_mconfig_additions() const @@ -347,11 +332,11 @@ void decocpu_type2_device::device_start() } decocpu_type3_device::decocpu_type3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : decocpu_type2_device(mconfig, DECOCPU3, "Data East Pinball CPU Board Type 3", tag, owner, clock, "decocpu3", __FILE__) + : decocpu_type3_device(mconfig, DECOCPU3, tag, owner, clock) {} -decocpu_type3_device::decocpu_type3_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : decocpu_type2_device(mconfig, type, name, tag, owner, clock, shortname, source) +decocpu_type3_device::decocpu_type3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : decocpu_type2_device(mconfig, type, tag, owner, clock) {} void decocpu_type3_device::device_start() @@ -360,7 +345,7 @@ void decocpu_type3_device::device_start() } decocpu_type3b_device::decocpu_type3b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : decocpu_type3_device(mconfig, DECOCPU3B, "Data East Pinball CPU Board Type 3B", tag, owner, clock, "decocpu3b", __FILE__) + : decocpu_type3_device(mconfig, DECOCPU3B, tag, owner, clock) {} void decocpu_type3b_device::device_start() diff --git a/src/mame/machine/decopincpu.h b/src/mame/machine/decopincpu.h index 73385b3ea99..cb40d0b26f9 100644 --- a/src/mame/machine/decopincpu.h +++ b/src/mame/machine/decopincpu.h @@ -6,8 +6,10 @@ * Created on: 10/07/2013 */ -#ifndef DECOPINCPU_H_ -#define DECOPINCPU_H_ +#ifndef MAME_MACHINE_DECOPINCPU_H +#define MAME_MACHINE_DECOPINCPU_H + +#pragma once #include "cpu/m6800/m6800.h" #include "machine/6821pia.h" @@ -64,24 +66,16 @@ class decocpu_type1_device : public device_t { public: decocpu_type1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - decocpu_type1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - required_device m_cpu; - required_device m_pia21; - required_device m_pia24; - required_device m_pia28; - required_device m_pia2c; - required_device m_pia30; - required_device m_pia34; // callbacks - template void set_display_read_callback(_disp_r disp_r) { m_read_display.set_callback(disp_r); } - template void set_display_write_callback(_disp_w disp_w) { m_write_display.set_callback(disp_w); } - template void set_dmdstatus_read_callback(_dmdstat_r dmdstat_r) { m_read_dmdstatus.set_callback(dmdstat_r); } - template void set_soundlatch_write_callback(_soundlatch_w slatch_w) { m_write_soundlatch.set_callback(slatch_w); } - template void set_switch_read_callback(_switch_r switch_r) { m_read_switch.set_callback(switch_r); } - template void set_switch_write_callback(_switch_w switch_w) { m_write_switch.set_callback(switch_w); } - template void set_lamp_write_callback(_lamp_w lamp_w) { m_write_lamp.set_callback(lamp_w); } - template void set_solenoid_write_callback(_sol_w sol_w) { m_write_solenoid.set_callback(sol_w); } + template void set_display_read_callback(Object &&cb) { m_read_display.set_callback(std::forward(cb)); } + template void set_display_write_callback(Object &&cb) { m_write_display.set_callback(std::forward(cb)); } + template void set_dmdstatus_read_callback(Object &&cb) { m_read_dmdstatus.set_callback(std::forward(cb)); } + template void set_soundlatch_write_callback(Object &&cb) { m_write_soundlatch.set_callback(std::forward(cb)); } + template void set_switch_read_callback(Object &&cb) { m_read_switch.set_callback(std::forward(cb)); } + template void set_switch_write_callback(Object &&cb) { m_write_switch.set_callback(std::forward(cb)); } + template void set_lamp_write_callback(Object &&cb) { m_write_lamp.set_callback(std::forward(cb)); } + template void set_solenoid_write_callback(Object &&cb) { m_write_solenoid.set_callback(std::forward(cb)); } DECLARE_WRITE_LINE_MEMBER(cpu_pia_irq); DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w); @@ -106,12 +100,23 @@ public: static void static_set_cpuregion(device_t &device, const char *tag); protected: + static constexpr device_timer_id TIMER_IRQ = 0; + + decocpu_type1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; virtual ioport_constructor device_input_ports() const override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - static const device_timer_id TIMER_IRQ = 0; + + required_device m_cpu; + required_device m_pia21; + required_device m_pia24; + required_device m_pia28; + required_device m_pia2c; + required_device m_pia30; + required_device m_pia34; private: const char* m_cputag; // region for cpu board code and data @@ -134,8 +139,10 @@ class decocpu_type2_device : public decocpu_type1_device { public: decocpu_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - decocpu_type2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + protected: + decocpu_type2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; @@ -145,9 +152,10 @@ class decocpu_type3_device : public decocpu_type2_device { public: decocpu_type3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - decocpu_type3_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); protected: + decocpu_type3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // overrides virtual void device_start() override; }; @@ -162,9 +170,9 @@ protected: virtual void device_start() override; }; -extern const device_type DECOCPU1; -extern const device_type DECOCPU2; -extern const device_type DECOCPU3; -extern const device_type DECOCPU3B; +DECLARE_DEVICE_TYPE(DECOCPU1, decocpu_type1_device) +DECLARE_DEVICE_TYPE(DECOCPU2, decocpu_type2_device) +DECLARE_DEVICE_TYPE(DECOCPU3, decocpu_type3_device) +DECLARE_DEVICE_TYPE(DECOCPU3B, decocpu_type3b_device) -#endif /* DECOPINCPU_H_ */ +#endif // MAME_MACHINE_DECOPINCPU_H diff --git a/src/mame/machine/dgn_beta.cpp b/src/mame/machine/dgn_beta.cpp index 3c75c4c11f9..dab45919b06 100644 --- a/src/mame/machine/dgn_beta.cpp +++ b/src/mame/machine/dgn_beta.cpp @@ -35,7 +35,7 @@ 2005-11-29 - Major track tracing excersise on scans of bare beta board, reveal where a + Major track tracing exercise on scans of bare beta board, reveal where a whole bunch of the PIA lines go, especially the IRQs, most of them go back to the IRQ line on the main CPU. @@ -46,8 +46,8 @@ 2005-12-08 Fixed density setting on WD2797, so density of read data is now - correctlty set as required by OS-9. This was the reason startup - script was not being executed as Beta disks have a single denisty + correctly set as required by OS-9. This was the reason startup + script was not being executed as Beta disks have a single density boot track, however the rest of the disk is double density. Booted completely to OS-9, including running startup script. @@ -89,8 +89,8 @@ //static int DMA_NMI; /* DMA cpu has received an NMI */ -#define INVALID_KEYROW -1 /* no ketrow selected */ -#define NO_KEY_PRESSED 0x7F /* retrurned by hardware if no key pressed */ +#define INVALID_KEYROW -1 /* no keyrow selected */ +#define NO_KEY_PRESSED 0x7F /* returned by hardware if no key pressed */ // Info for bank switcher struct bank_info_entry @@ -135,15 +135,15 @@ static const struct bank_info_entry bank_info[] = // For the purpose of this driver any block that is not ram, and is not a known ROM block, // is mapped to the first page of the boot rom, I do not know what happens in the real // hardware, however this does allow the boot rom to correctly size the RAM. -// this should probably be considdered a hack ! +// this should probably be considered a hack ! // void dgn_beta_state::UpdateBanks(int first, int last) { address_space &space_0 = m_maincpu->space(AS_PROGRAM); - address_space &space_1 = machine().device(DMACPU_TAG)->memory().space(AS_PROGRAM); + address_space &space_1 = m_dmacpu->space(AS_PROGRAM); int Page; - uint8_t *readbank; + uint8_t *readbank; int bank_start; int bank_end; int MapPage; @@ -575,7 +575,7 @@ WRITE8_MEMBER(dgn_beta_state::d_pia1_pa_w) HALT_DMA = CLEAR_LINE; LOG_HALT(("DMA_CPU HALT=%d\n", HALT_DMA)); - machine().device(DMACPU_TAG)->execute().set_input_line(INPUT_LINE_HALT, HALT_DMA); + m_dmacpu->set_input_line(INPUT_LINE_HALT, HALT_DMA); /* CPU un-halted let it run ! */ if (HALT_DMA == CLEAR_LINE) @@ -597,6 +597,11 @@ WRITE8_MEMBER(dgn_beta_state::d_pia1_pa_w) m_fdc->set_floppy(floppy); + if (m_floppy0->get_device()) m_floppy0->get_device()->mon_w(0); + if (m_floppy1->get_device()) m_floppy1->get_device()->mon_w(0); + if (m_floppy2->get_device()) m_floppy2->get_device()->mon_w(0); + if (m_floppy3->get_device()) m_floppy3->get_device()->mon_w(0); + // not connected: bit 5 = ENP m_fdc->dden_w(BIT(data, 6)); LOG_DISK(("Set density %s\n", BIT(data, 6) ? "low" : "high")); @@ -627,7 +632,7 @@ WRITE8_MEMBER(dgn_beta_state::d_pia1_pb_w) /* CPU un-halted let it run ! */ if (HALT_CPU == CLEAR_LINE) - machine().device(DMACPU_TAG)->execute().yield(); + m_dmacpu->yield(); } } @@ -648,7 +653,7 @@ WRITE_LINE_MEMBER(dgn_beta_state::d_pia1_irq_b) DMA CPU NMI PA7 Graphics control PB0..PB7 ??? - VSYNC intutrupt CB2 + VSYNC interrupt CB2 */ READ8_MEMBER(dgn_beta_state::d_pia2_pa_r) { @@ -672,13 +677,13 @@ WRITE8_MEMBER(dgn_beta_state::d_pia2_pa_w) LOG_INTS(("cpu1 NMI : %d\n", NMI)); if(!NMI) { - machine().device(DMACPU_TAG)->execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_dmacpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); logerror("device_yield()\n"); - machine().device(DMACPU_TAG)->execute().yield(); /* Let DMA CPU run */ + m_dmacpu->yield(); /* Let DMA CPU run */ } else { - machine().device(DMACPU_TAG)->execute().set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + m_dmacpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } m_DMA_NMI_LAST = NMI; /* Save it for next time */ @@ -697,7 +702,7 @@ WRITE8_MEMBER(dgn_beta_state::d_pia2_pa_w) LOG_TASK(("OldTask=$%02X EnableMapRegs=%d OldEnableMap=%d\n", OldTask, m_EnableMapRegs, OldEnableMap)); - // Maping was enabled or disabled, select apropreate task reg + // Mapping was enabled or disabled, select appropriate task reg // and map it in if (m_EnableMapRegs != OldEnableMap) { @@ -741,18 +746,15 @@ WRITE_LINE_MEMBER(dgn_beta_state::d_pia2_irq_b) cpu0_recalc_irq(state); } -/************************************ Recalculate CPU inturrupts ****************************/ +/************************************ Recalculate CPU interrupts ****************************/ /* CPU 0 */ void dgn_beta_state::cpu0_recalc_irq(int state) { - pia6821_device *pia_0 = machine().device( PIA_0_TAG ); - pia6821_device *pia_1 = machine().device( PIA_1_TAG ); - pia6821_device *pia_2 = machine().device( PIA_2_TAG ); - uint8_t pia0_irq_a = pia_0->irq_a_state(); - uint8_t pia1_irq_a = pia_1->irq_a_state(); - uint8_t pia1_irq_b = pia_1->irq_b_state(); - uint8_t pia2_irq_a = pia_2->irq_a_state(); - uint8_t pia2_irq_b = pia_2->irq_b_state(); + uint8_t pia0_irq_a = m_pia_0->irq_a_state(); + uint8_t pia1_irq_a = m_pia_1->irq_a_state(); + uint8_t pia1_irq_b = m_pia_1->irq_b_state(); + uint8_t pia2_irq_a = m_pia_2->irq_a_state(); + uint8_t pia2_irq_b = m_pia_2->irq_b_state(); uint8_t IRQ; if (pia0_irq_a || pia1_irq_a || pia1_irq_b || pia2_irq_a || pia2_irq_b) @@ -766,8 +768,7 @@ void dgn_beta_state::cpu0_recalc_irq(int state) void dgn_beta_state::cpu0_recalc_firq(int state) { - pia6821_device *pia_0 = machine().device( PIA_0_TAG ); - uint8_t pia0_irq_b = pia_0->irq_b_state(); + uint8_t pia0_irq_b = m_pia_0->irq_b_state(); uint8_t FIRQ; if (pia0_irq_b) @@ -784,7 +785,7 @@ void dgn_beta_state::cpu0_recalc_firq(int state) void dgn_beta_state::cpu1_recalc_firq(int state) { - machine().device(DMACPU_TAG)->execute().set_input_line(M6809_FIRQ_LINE, state); + m_dmacpu->set_input_line(M6809_FIRQ_LINE, state); LOG_INTS(("cpu1 FIRQ : %d\n",state)); } @@ -795,13 +796,13 @@ void dgn_beta_state::cpu1_recalc_firq(int state) /* The INTRQ line goes through pia2 ca1, in exactly the same way as DRQ from DragonDos does */ WRITE_LINE_MEMBER( dgn_beta_state::dgnbeta_fdc_intrq_w ) { - device_t *device = machine().device(PIA_2_TAG); LOG_DISK(("dgnbeta_fdc_intrq_w(%d)\n", state)); + if(m_wd2797_written) - downcast(device)->ca1_w(state); + m_pia_2->ca1_w(state); } -/* DRQ is routed through various logic to the FIRQ inturrupt line on *BOTH* CPUs */ +/* DRQ is routed through various logic to the FIRQ interrupt line on *BOTH* CPUs */ WRITE_LINE_MEMBER( dgn_beta_state::dgnbeta_fdc_drq_w ) { LOG_DISK(("dgnbeta_fdc_drq_w(%d)\n", state)); @@ -853,16 +854,14 @@ void dgn_beta_state::ScanInKeyboard(void) #endif } -/* VBlank inturrupt */ +/* VBlank interrupt */ void dgn_beta_state::dgn_beta_frame_interrupt (int data) { - pia6821_device *pia_2 = machine().device( PIA_2_TAG ); - - /* Set PIA line, so it recognises inturrupt */ + /* Set PIA line, so it recognises interrupt */ if (!data) - pia_2->cb2_w(ASSERT_LINE); + m_pia_2->cb2_w(ASSERT_LINE); else - pia_2->cb2_w(CLEAR_LINE); + m_pia_2->cb2_w(CLEAR_LINE); // LOG_VIDEO(("Vblank\n")); ScanInKeyboard(); @@ -871,14 +870,14 @@ void dgn_beta_state::dgn_beta_frame_interrupt (int data) #ifdef UNUSED_FUNCTION void dgn_beta_state::dgn_beta_line_interrupt (int data) { -// /* Set PIA line, so it recognises inturrupt */ +// /* Set PIA line, so it recognises interrupt */ // if (data) // { -// pia_0_cb1_w(machine, 0,ASSERT_LINE); +// m_pia_0->cb1_w(ASSERT_LINE); // } // else // { -// pia_0_cb1_w(machine, 0,CLEAR_LINE); +// m_pia_0->cb1_w(CLEAR_LINE); // } } #endif @@ -887,16 +886,12 @@ void dgn_beta_state::dgn_beta_line_interrupt (int data) /********************************* Machine/Driver Initialization ****************************************/ void dgn_beta_state::machine_reset() { - pia6821_device *pia_0 = machine().device( PIA_0_TAG ); - pia6821_device *pia_1 = machine().device( PIA_1_TAG ); - pia6821_device *pia_2 = machine().device( PIA_2_TAG ); - logerror("dgn_beta_state::machine_reset()\n"); m_system_rom = memregion(MAINCPU_TAG)->base(); /* Make sure CPU 1 is started out halted ! */ - machine().device(DMACPU_TAG)->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE); + m_dmacpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); /* Reset to task 0, and map banks disabled, so standard memory map */ /* with ram at $0000-$BFFF, ROM at $C000-FBFF, IO at $FC00-$FEFF */ @@ -908,9 +903,9 @@ void dgn_beta_state::machine_reset() SetDefaultTask(); /* Set pullups on all PIA port A, to match what hardware does */ - pia_0->set_port_a_z_mask(0xFF); - pia_1->set_port_a_z_mask(0xFF); - pia_2->set_port_a_z_mask(0xFF); + m_pia_0->set_port_a_z_mask(0xFF); + m_pia_1->set_port_a_z_mask(0xFF); + m_pia_2->set_port_a_z_mask(0xFF); m_d_pia1_pa_last = 0x00; m_d_pia1_pb_last = 0x00; diff --git a/src/mame/machine/dmv_keyb.cpp b/src/mame/machine/dmv_keyb.cpp index 6d5d830c9d9..f4fca72fc18 100644 --- a/src/mame/machine/dmv_keyb.cpp +++ b/src/mame/machine/dmv_keyb.cpp @@ -14,7 +14,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type DMV_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(DMV_KEYBOARD, dmv_keyboard_device, "dmv_keyboard", "Decision Mate V Keyboard") //*************************************************************************** @@ -27,15 +27,11 @@ ROM_START( dmv_keyboard ) ROM_END -static ADDRESS_MAP_START( dmv_keyboard_io, AS_IO, 8, dmv_keyboard_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(port1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(port2_r, port2_w) -ADDRESS_MAP_END - - static MACHINE_CONFIG_FRAGMENT( dmv_keyboard ) MCFG_CPU_ADD("mcu", I8741, XTAL_6MHz) - MCFG_CPU_IO_MAP(dmv_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(dmv_keyboard_device, port1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(dmv_keyboard_device, port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(dmv_keyboard_device, port2_w)) MACHINE_CONFIG_END @@ -209,7 +205,7 @@ ioport_constructor dmv_keyboard_device::device_input_ports() const //------------------------------------------------- dmv_keyboard_device::dmv_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DMV_KEYBOARD, "Decision Mate V Keyboard", tag, owner, clock, "dmv_keyboard", __FILE__) + : device_t(mconfig, DMV_KEYBOARD, tag, owner, clock) , m_maincpu(*this, "mcu") , m_keyboard(*this, "COL.%u", 0) { diff --git a/src/mame/machine/dmv_keyb.h b/src/mame/machine/dmv_keyb.h index 77317be417a..6411b39ed1b 100644 --- a/src/mame/machine/dmv_keyb.h +++ b/src/mame/machine/dmv_keyb.h @@ -6,10 +6,10 @@ *********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_DMV_KEYB_H +#define MAME_MACHINE_DMV_KEYB_H -#ifndef __DMV_KEYBOARD__ -#define __DMV_KEYBOARD__ +#pragma once #include "cpu/mcs48/mcs48.h" @@ -49,7 +49,6 @@ public: protected: // device-level overrides - virtual void device_config_complete() override { m_shortname = "dmv_keyb"; } virtual void device_start() override; virtual void device_reset() override; @@ -64,7 +63,7 @@ private: // device type definition -extern const device_type DMV_KEYBOARD; +DECLARE_DEVICE_TYPE(DMV_KEYBOARD, dmv_keyboard_device) -#endif +#endif // MAME_MACHINE_DMV_KEYB_H diff --git a/src/mame/machine/docg3.cpp b/src/mame/machine/docg3.cpp index d6ef4bdca30..717a3178734 100644 --- a/src/mame/machine/docg3.cpp +++ b/src/mame/machine/docg3.cpp @@ -32,15 +32,15 @@ static inline void ATTR_PRINTF(3,4) verboselog( device_t &device, int n_level, c ***************************************************************************/ // device type definition -const device_type DISKONCHIP_G3 = device_creator; +DEFINE_DEVICE_TYPE(DISKONCHIP_G3, diskonchip_g3_device, "diskonchip_g3", "DiskOnChip G3") //------------------------------------------------- // diskonchip_g3_device - constructor //------------------------------------------------- diskonchip_g3_device::diskonchip_g3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DISKONCHIP_G3, "DiskOnChip G3", tag, owner, clock, "diskonchip_g3", __FILE__), - device_nvram_interface(mconfig, *this) + : device_t(mconfig, DISKONCHIP_G3, tag, owner, clock) + , device_nvram_interface(mconfig, *this) { } diff --git a/src/mame/machine/docg3.h b/src/mame/machine/docg3.h index 76346933d1e..d7e328caec2 100644 --- a/src/mame/machine/docg3.h +++ b/src/mame/machine/docg3.h @@ -8,17 +8,18 @@ */ -#ifndef __DOCG3_H__ -#define __DOCG3_H__ +#ifndef MAME_MACHINE_DOCG3_H +#define MAME_MACHINE_DOCG3_H + +#pragma once #define MCFG_DISKONCHIP_G3_ADD(_tag, _size) \ MCFG_DEVICE_ADD(_tag, DISKONCHIP_G3, 0) \ - static_cast(device)->set_size(_size); + downcast(device)->set_size(_size); // ======================> diskonchip_g3_device -class diskonchip_g3_device : public device_t, - public device_nvram_interface +class diskonchip_g3_device : public device_t, public device_nvram_interface { public: // construction/destruction @@ -98,6 +99,6 @@ private: }; // device type definition -extern const device_type DISKONCHIP_G3; +DECLARE_DEVICE_TYPE(DISKONCHIP_G3, diskonchip_g3_device) -#endif /* __DOCG3_H__ */ +#endif // MAME_MACHINE_DOCG3_H diff --git a/src/mame/machine/egret.cpp b/src/mame/machine/egret.cpp index 4ca3dd6fb3e..35852a1c8ef 100644 --- a/src/mame/machine/egret.cpp +++ b/src/mame/machine/egret.cpp @@ -53,7 +53,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type EGRET = device_creator; +DEFINE_DEVICE_TYPE(EGRET, egret_device, "egret", "Apple Egret") ROM_START( egret ) ROM_REGION(0x4400, EGRET_CPU_TAG, 0) @@ -334,7 +334,7 @@ WRITE8_MEMBER( egret_device::pram_w ) //------------------------------------------------- egret_device::egret_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, EGRET, "Apple Egret", tag, owner, clock, "egret", __FILE__), + : device_t(mconfig, EGRET, tag, owner, clock), device_nvram_interface(mconfig, *this), write_reset(*this), write_linechange(*this), diff --git a/src/mame/machine/egret.h b/src/mame/machine/egret.h index 04f461fa5f3..742c3e47929 100644 --- a/src/mame/machine/egret.h +++ b/src/mame/machine/egret.h @@ -1,10 +1,9 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont -#pragma once - -#ifndef __EGRET_H__ -#define __EGRET_H__ +#ifndef MAME_MACHINE_EGRET_H +#define MAME_MACHINE_EGRET_H +#pragma once @@ -134,6 +133,6 @@ private: }; // device type definition -extern const device_type EGRET; +DECLARE_DEVICE_TYPE(EGRET, egret_device) -#endif +#endif // MAME_MACHINE_EGRET_H diff --git a/src/mame/machine/einstein.cpp b/src/mame/machine/einstein.cpp index d9145ab2509..9e2c31d8074 100644 --- a/src/mame/machine/einstein.cpp +++ b/src/mame/machine/einstein.cpp @@ -15,7 +15,7 @@ ****************************************************************/ -const device_type EINSTEIN_KEYBOARD_DAISY = device_creator; +DEFINE_DEVICE_TYPE(EINSTEIN_KEYBOARD_DAISY, einstein_keyboard_daisy_device, "einstein_keyboard", "Einstein keyboard daisy chain") //************************************************************************** @@ -27,8 +27,8 @@ const device_type EINSTEIN_KEYBOARD_DAISY = device_creator; +DEFINE_DEVICE_TYPE(EINSTEIN_ADC_DAISY, einstein_adc_daisy_device, "einstein_adc", "Einstein ADC daisy chain") //************************************************************************** // LIVE DEVICE @@ -90,8 +90,8 @@ const device_type EINSTEIN_ADC_DAISY = device_creator //------------------------------------------------- einstein_adc_daisy_device::einstein_adc_daisy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, EINSTEIN_ADC_DAISY, "Einstein ADC daisy chain", tag, owner, clock, "einstein_adc_daisy", __FILE__), - device_z80daisy_interface(mconfig, *this) + : device_t(mconfig, EINSTEIN_ADC_DAISY, tag, owner, clock) + , device_z80daisy_interface(mconfig, *this) { } @@ -143,7 +143,7 @@ void einstein_adc_daisy_device::z80daisy_irq_reti() } -const device_type EINSTEIN_FIRE_DAISY = device_creator; +DEFINE_DEVICE_TYPE(EINSTEIN_FIRE_DAISY, einstein_fire_daisy_device, "einstein_fire", "Einstein fire button daisy chain") //************************************************************************** @@ -155,8 +155,8 @@ const device_type EINSTEIN_FIRE_DAISY = device_creator; +DEFINE_DEVICE_TYPE(ESQ2X16_SQ1, esq2x16_sq1_device, "esq2x16_sq1", "Ensoniq 2x16 VFD (SQ-1 variant)") // --- SQ1 - Parduz -------------------------------------------------------------------------------------------------------------------------- static MACHINE_CONFIG_FRAGMENT(esq2x16) @@ -32,7 +32,7 @@ MACHINE_CONFIG_END //***************************************************************************** // standard ascii 5x7 font // defines ascii characters 0x20-0x7F (32-127) -static unsigned char Font5x7[][5] = { +static unsigned char const Font5x7[][5] = { {0x00, 0x00, 0x08, 0x00, 0x00}, // _Undef_ 0x00 - dots for debug purposes {0x01, 0x00, 0x00, 0x00, 0x40}, // _Undef_ 0x01 - dots for debug purposes {0x02, 0x00, 0x00, 0x00, 0x00}, // _Undef_ 0x02 @@ -163,12 +163,12 @@ static unsigned char Font5x7[][5] = { {0x08, 0x1C, 0x2A, 0x08, 0x08} // <- 0x7F }; //-------------------------------------------------------------------------------------------------------------------------------------------- -machine_config_constructor esq2x16_sq1_t::device_mconfig_additions() const +machine_config_constructor esq2x16_sq1_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( esq2x16 ); } //-------------------------------------------------------------------------------------------------------------------------------------------- -void esq2x16_sq1_t::write_char(int data) +void esq2x16_sq1_device::write_char(int data) { int DisplayCode = data; int LedState; @@ -183,7 +183,7 @@ void esq2x16_sq1_t::write_char(int data) ) data = '^'; // musical notes // Resolve here 2-Bytes commands: the command was saved previously - switch (m_LcdCommand) { + switch (m_lcd_command) { case 0: // No current command. break; @@ -191,30 +191,30 @@ void esq2x16_sq1_t::write_char(int data) case 0x87: // Go To #ifdef VERBOSE - printf("LCD %02X: Go To %02X - pos=%02X (%d)\n", m_LcdCommand, DisplayCode, m_lcdPos, m_lcdPage); + printf("LCD %02X: Go To %02X - pos=%02X (%d)\n", m_lcd_command, DisplayCode, m_lcdPos, m_lcdPage); #endif m_lcdPos = DisplayCode; - m_LcdCommand = 0; + m_lcd_command = 0; return; break; case 0x88: // Save Cursor position - What the second byte (00 or 01) means? #ifdef VERBOSE - printf("LCD %02X: Save Pos. (%02X) - pos=%02X (%d)\n", m_LcdCommand, DisplayCode, m_lcdPos, m_lcdPage); + printf("LCD %02X: Save Pos. (%02X) - pos=%02X (%d)\n", m_lcd_command, DisplayCode, m_lcdPos, m_lcdPage); #endif m_lcdSavedPos = m_lcdPos; - m_LcdCommand = 0; + m_lcd_command = 0; return; break; case 0x89: // Restore Cursor position - What the second byte (00 or 01) means? #ifdef VERBOSE - printf("LCD %02X: Restore Pos. (%02X) - pos=%02X (%d)\n", m_LcdCommand, DisplayCode, m_lcdPos, m_lcdPage); + printf("LCD %02X: Restore Pos. (%02X) - pos=%02X (%d)\n", m_lcd_command, DisplayCode, m_lcdPos, m_lcdPage); #endif m_lcdPos = m_lcdSavedPos; - m_LcdCommand = 0; + m_lcd_command = 0; return; break; @@ -222,7 +222,7 @@ void esq2x16_sq1_t::write_char(int data) case 0x8E: case 0x8F: // LED OFF, ON, BLINK - LedState = m_LcdCommand & 0x03; + LedState = m_lcd_command & 0x03; if ( DisplayCode >= 16 || // Out of bounds DisplayCode == 6 || // non-existent @@ -232,7 +232,7 @@ void esq2x16_sq1_t::write_char(int data) ) { #ifdef VERBOSE - printf("LCD %02X: Led %02d does'nt exist - pos=%02X (%d)\n", m_LcdCommand, DisplayCode, m_lcdPos, m_lcdPage); + printf("LCD %02X: Led %02d does'nt exist - pos=%02X (%d)\n", m_lcd_command, DisplayCode, m_lcdPos, m_lcdPage); #endif } else @@ -244,15 +244,15 @@ void esq2x16_sq1_t::write_char(int data) } update_display(); } - m_LcdCommand = 0; + m_lcd_command = 0; return; break; default: #ifdef VERBOSE - printf("LCD: Unknown 2-Bytes Command:%02X-%02X - pos=%02X (%d)\n", m_LcdCommand, DisplayCode, m_lcdPos, m_lcdPage); + printf("LCD: Unknown 2-Bytes Command:%02X-%02X - pos=%02X (%d)\n", m_lcd_command, DisplayCode, m_lcdPos, m_lcdPage); #endif - m_LcdCommand = 0; + m_lcd_command = 0; return; break; } @@ -277,7 +277,7 @@ void esq2x16_sq1_t::write_char(int data) case 0x88: // Save Cursor Position case 0x89: // Restore Cursor Position // Save the command for the next byte - m_LcdCommand = DisplayCode; + m_lcd_command = DisplayCode; return; break; @@ -286,7 +286,7 @@ void esq2x16_sq1_t::write_char(int data) case 0x86: case 0x95: // ??? - related to blinking chars? - 2 bytes command - m_LcdCommand = DisplayCode; + m_lcd_command = DisplayCode; return; break; @@ -294,7 +294,7 @@ void esq2x16_sq1_t::write_char(int data) case 0x8E: case 0x8F: // LEDs OFF,ON and BLINK - 2 bytes command - m_LcdCommand = DisplayCode; + m_lcd_command = DisplayCode; return; break; @@ -306,7 +306,7 @@ void esq2x16_sq1_t::write_char(int data) #ifdef VERBOSE printf("LCD %02X: Page Change ? - pos=%02X (%d)\n", DisplayCode, m_lcdPos, m_lcdPage); #endif - m_LcdCommand = 0; + m_lcd_command = 0; return; break; @@ -329,7 +329,7 @@ void esq2x16_sq1_t::write_char(int data) #ifdef VERBOSE printf("LCD %02X: Unknown Command - pos=%02X (%d)\n", DisplayCode, m_lcdPos, m_lcdPage); #endif - m_LcdCommand = 0; + m_lcd_command = 0; return; break; } @@ -342,13 +342,13 @@ void esq2x16_sq1_t::write_char(int data) #endif } //-------------------------------------------------------------------------------------------------------------------------------------------- -esq2x16_sq1_t::esq2x16_sq1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : esqvfd_t(mconfig, ESQ2x16_SQ1, "Ensoniq 2x16 VFD (SQ-1 variant)", tag, owner, clock, "esq2x16_sq1", __FILE__) +esq2x16_sq1_device::esq2x16_sq1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : esqvfd_device(mconfig, ESQ2X16_SQ1, tag, owner, clock) { m_rows = 2; m_cols = 16; } //-------------------------------------------------------------------------------------------------------------------------------------------- -void esq2x16_sq1_t::update_display() +void esq2x16_sq1_device::update_display() { char lcdCharRow; @@ -366,35 +366,35 @@ void esq2x16_sq1_t::update_display() { // stealed from tecnbras.cpp and modified for (int rr=0; rr<7; rr++) { - lcdCharRow = RotateLcdChar(m_lcdpg[page][pos],rr); + lcdCharRow = rotate_lcd_char(m_lcdpg[page][pos],rr); machine().output().set_indexed_value("pg_", (page+1)*1000 + pos*7 + rr, 0x1F & lcdCharRow); } } } } //-------------------------------------------------------------------------------------------------------------------------------------------- -void esq2x16_sq1_t::device_reset() +void esq2x16_sq1_device::device_reset() { //lcd_reset(); - m_lcdPage = m_lcdSavedPos = m_lcdPos = m_LcdCommand = 0; + m_lcdPage = m_lcdSavedPos = m_lcdPos = m_lcd_command = 0; memset(m_leds, 0, sizeof(m_leds)); memset(m_lcdpg, 1, sizeof(m_lcdpg)); // Set to 1 for debug: to see what "pages" are set to 0 from the firmware } //-------------------------------------------------------------------------------------------------------------------------------------------- -void esq2x16_sq1_t::lcd_reset() +void esq2x16_sq1_device::lcd_reset() { - m_lcdPage = m_lcdSavedPos = m_lcdPos = m_LcdCommand = 0; + m_lcdPage = m_lcdSavedPos = m_lcdPos = m_lcd_command = 0; memset(m_leds, 0, sizeof(m_leds)); memset(m_lcdpg, 0, sizeof(m_lcdpg)); } //-------------------------------------------------------------------------------------------------------------------------------------------- -void esq2x16_sq1_t::page_reset() +void esq2x16_sq1_device::page_reset() { memset(m_lcdpg[m_lcdPage], 0, 32); - m_lcdPos = m_LcdCommand = 0; + m_lcdPos = m_lcd_command = 0; } //-------------------------------------------------------------------------------------------------------------------------------------------- -char esq2x16_sq1_t::RotateLcdChar(uint8_t lcdChar, int charRow) +char esq2x16_sq1_device::rotate_lcd_char(uint8_t lcdChar, int charRow) { char lcdCharRow = 0; for (int cc=0; cc<5; cc++){ diff --git a/src/mame/machine/esqlcd.h b/src/mame/machine/esqlcd.h index cb474cd6b8f..967c64af07f 100644 --- a/src/mame/machine/esqlcd.h +++ b/src/mame/machine/esqlcd.h @@ -1,33 +1,32 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont, Parduz -#ifndef ESQLCD_H -#define ESQLCD_H +#ifndef MAME_MACHINE_ESQLCD_H +#define MAME_MACHINE_ESQLCD_H + +#pragma once #include "esqvfd.h" // --- SQ1 - Parduz -------------------------------------------------------------------------------------------------------------------------- -#define MCFG_ESQ2x16_SQ1_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, ESQ2x16_SQ1, 60) +#define MCFG_ESQ2X16_SQ1_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, ESQ2X16_SQ1, 60) -#define MCFG_ESQ2x16_SQ1_REMOVE(_tag) \ +#define MCFG_ESQ2X16_SQ1_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) -class esq2x16_sq1_t : public esqvfd_t { +class esq2x16_sq1_device : public esqvfd_device { public: - esq2x16_sq1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + esq2x16_sq1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual void write_char(int data) override; virtual void update_display() override; - virtual void device_reset() override; - - void lcd_reset(); - void page_reset(); - char RotateLcdChar(uint8_t lcdChar, int charRow); protected: virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_reset() override; + uint8_t m_lcdpg[4][32]; int m_lcdPage; int m_lcdPos,m_lcdSavedPos; @@ -36,9 +35,14 @@ protected: uint8_t m_ledsDirty[16]; private: - int m_LcdCommand; + void lcd_reset(); + void page_reset(); + + static char rotate_lcd_char(uint8_t lcdChar, int charRow); + + int m_lcd_command; }; -extern const device_type ESQ2x16_SQ1; +DECLARE_DEVICE_TYPE(ESQ2X16_SQ1, esq2x16_sq1_device) -#endif +#endif // MAME_MACHINE_ESQLCD_H diff --git a/src/mame/machine/esqpanel.cpp b/src/mame/machine/esqpanel.cpp index e0bdfc823b5..fe73622a722 100644 --- a/src/mame/machine/esqpanel.cpp +++ b/src/mame/machine/esqpanel.cpp @@ -14,9 +14,9 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type ESQPANEL1x22 = device_creator; -const device_type ESQPANEL2x40 = device_creator; -const device_type ESQPANEL2x16_SQ1 = device_creator; +DEFINE_DEVICE_TYPE(ESQPANEL1X22, esqpanel1x22_device, "esqpanel122", "Ensoniq front panel with 1x22 VFD") +DEFINE_DEVICE_TYPE(ESQPANEL2X40, esqpanel2x40_device, "esqpanel240", "Ensoniq front panel with 2x40 VFD") +DEFINE_DEVICE_TYPE(ESQPANEL2X16_SQ1, esqpanel2x16_sq1_device, "esqpanel216_sq1", "Ensoniq front panel with 2x16 LCD") //************************************************************************** // LIVE DEVICE @@ -26,8 +26,8 @@ const device_type ESQPANEL2x16_SQ1 = device_creator; // esqpanel_device - constructor //------------------------------------------------- -esqpanel_device::esqpanel_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), +esqpanel_device::esqpanel_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), device_serial_interface(mconfig, *this), m_write_tx(*this), m_write_analog(*this) @@ -201,7 +201,7 @@ void esqpanel_device::set_analog_value(offs_t offset, uint16_t value) /* panel with 1x22 VFD display used in the EPS-16 and EPS-16 Plus */ static MACHINE_CONFIG_FRAGMENT(esqpanel1x22) - MCFG_ESQ1x22_ADD("vfd") + MCFG_ESQ1X22_ADD("vfd") MACHINE_CONFIG_END machine_config_constructor esqpanel1x22_device::device_mconfig_additions() const @@ -210,7 +210,7 @@ machine_config_constructor esqpanel1x22_device::device_mconfig_additions() const } esqpanel1x22_device::esqpanel1x22_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - esqpanel_device(mconfig, ESQPANEL1x22, "Ensoniq front panel with 1x22 VFD", tag, owner, clock, "esqpanel122", __FILE__), + esqpanel_device(mconfig, ESQPANEL1X22, tag, owner, clock), m_vfd(*this, "vfd") { m_eps_mode = true; @@ -219,7 +219,7 @@ esqpanel1x22_device::esqpanel1x22_device(const machine_config &mconfig, const ch /* panel with 2x40 VFD display used in the ESQ-1, VFX-SD, SD-1, and others */ static MACHINE_CONFIG_FRAGMENT(esqpanel2x40) - MCFG_ESQ2x40_ADD("vfd") + MCFG_ESQ2X40_ADD("vfd") MACHINE_CONFIG_END machine_config_constructor esqpanel2x40_device::device_mconfig_additions() const @@ -228,7 +228,7 @@ machine_config_constructor esqpanel2x40_device::device_mconfig_additions() const } esqpanel2x40_device::esqpanel2x40_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - esqpanel_device(mconfig, ESQPANEL2x40, "Ensoniq front panel with 2x40 VFD", tag, owner, clock, "esqpanel240", __FILE__), + esqpanel_device(mconfig, ESQPANEL2X40, tag, owner, clock), m_vfd(*this, "vfd") { m_eps_mode = false; @@ -236,7 +236,7 @@ esqpanel2x40_device::esqpanel2x40_device(const machine_config &mconfig, const ch // --- SQ1 - Parduz -------------------------------------------------------------------------------------------------------------------------- static MACHINE_CONFIG_FRAGMENT(esqpanel2x16_sq1) - MCFG_ESQ2x16_SQ1_ADD("vfd") + MCFG_ESQ2X16_SQ1_ADD("vfd") MACHINE_CONFIG_END // --- SQ1 - Parduz -------------------------------------------------------------------------------------------------------------------------- machine_config_constructor esqpanel2x16_sq1_device::device_mconfig_additions() const @@ -245,7 +245,7 @@ machine_config_constructor esqpanel2x16_sq1_device::device_mconfig_additions() c } // --- SQ1 - Parduz -------------------------------------------------------------------------------------------------------------------------- esqpanel2x16_sq1_device::esqpanel2x16_sq1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - esqpanel_device(mconfig, ESQPANEL2x16_SQ1, "Ensoniq front panel with 2x16 LCD", tag, owner, clock, "esqpanel216_sq1", __FILE__), + esqpanel_device(mconfig, ESQPANEL2X16_SQ1, tag, owner, clock), m_vfd(*this, "vfd") { m_eps_mode = false; diff --git a/src/mame/machine/esqpanel.h b/src/mame/machine/esqpanel.h index f92ad91d501..2a2352507a4 100644 --- a/src/mame/machine/esqpanel.h +++ b/src/mame/machine/esqpanel.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont -#pragma once +#ifndef MAME_MACHINE_ESQPANEL_H +#define MAME_MACHINE_ESQPANEL_H -#ifndef __ESQPANEL_H__ -#define __ESQPANEL_H__ +#pragma once #include "machine/esqvfd.h" #include "machine/esqlcd.h" @@ -12,31 +12,31 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_ESQPANEL1x22_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, ESQPANEL1x22, 0) +#define MCFG_ESQPANEL1X22_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, ESQPANEL1X22, 0) -#define MCFG_ESQPANEL1x22_REPLACE(_tag) \ - MCFG_DEVICE_REPLACE(_tag, ESQPANEL1x22, 0) +#define MCFG_ESQPANEL1X22_REPLACE(_tag) \ + MCFG_DEVICE_REPLACE(_tag, ESQPANEL1X22, 0) -#define MCFG_ESQPANEL1x22_REMOVE(_tag) \ +#define MCFG_ESQPANEL1X22_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) -#define MCFG_ESQPANEL2x40_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, ESQPANEL2x40, 0) +#define MCFG_ESQPANEL2X40_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, ESQPANEL2X40, 0) -#define MCFG_ESQPANEL2x40_REPLACE(_tag) \ - MCFG_DEVICE_REPLACE(_tag, ESQPANEL2x40, 0) +#define MCFG_ESQPANEL2X40_REPLACE(_tag) \ + MCFG_DEVICE_REPLACE(_tag, ESQPANEL2X40, 0) -#define MCFG_ESQPANEL_2x40_REMOVE(_tag) \ +#define MCFG_ESQPANEL_2X40_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) -#define MCFG_ESQPANEL2x16_SQ1_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, ESQPANEL2x16_SQ1, 0) +#define MCFG_ESQPANEL2X16_SQ1_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, ESQPANEL2X16_SQ1, 0) -#define MCFG_ESQPANEL2x16_SQ1_REPLACE(_tag) \ - MCFG_DEVICE_REPLACE(_tag, ESQPANEL2x16_SQ1, 0) +#define MCFG_ESQPANEL2X16_SQ1_REPLACE(_tag) \ + MCFG_DEVICE_REPLACE(_tag, ESQPANEL2X16_SQ1, 0) -#define MCFG_ESQPANEL2x16_SQ1_REMOVE(_tag) \ +#define MCFG_ESQPANEL2X16_SQ1_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) #define MCFG_ESQPANEL_TX_CALLBACK(_write) \ @@ -51,21 +51,19 @@ // ======================> esqpanel_device -class esqpanel_device : public device_t, public device_serial_interface +class esqpanel_device : public device_t, public device_serial_interface { public: - // construction/destruction - esqpanel_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - - template static devcb_base &set_tx_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_tx.set_callback(object); } - template static devcb_base &set_analog_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_analog.set_callback(object); } - - virtual void send_to_display(uint8_t data) = 0; + template static devcb_base &set_tx_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_tx.set_callback(std::forward(cb)); } + template static devcb_base &set_analog_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_analog.set_callback(std::forward(cb)); } void xmit_char(uint8_t data); void set_analog_value(offs_t offset, uint16_t value); protected: + // construction/destruction + esqpanel_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -76,6 +74,8 @@ protected: virtual void tra_complete() override; // Tx completed sending byte virtual void tra_callback() override; // Tx send bit + virtual void send_to_display(uint8_t data) = 0; + bool m_eps_mode; private: @@ -95,42 +95,36 @@ class esqpanel1x22_device : public esqpanel_device { public: esqpanel1x22_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - required_device m_vfd; - - virtual void send_to_display(uint8_t data) override { m_vfd->write_char(data); } - protected: virtual machine_config_constructor device_mconfig_additions() const override; -private: + virtual void send_to_display(uint8_t data) override { m_vfd->write_char(data); } + + required_device m_vfd; }; class esqpanel2x40_device : public esqpanel_device { public: esqpanel2x40_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - required_device m_vfd; - - virtual void send_to_display(uint8_t data) override { m_vfd->write_char(data); } - protected: virtual machine_config_constructor device_mconfig_additions() const override; -private: + virtual void send_to_display(uint8_t data) override { m_vfd->write_char(data); } + + required_device m_vfd; }; class esqpanel2x40_sq1_device : public esqpanel_device { public: esqpanel2x40_sq1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - required_device m_vfd; - - virtual void send_to_display(uint8_t data) override { m_vfd->write_char(data); } - protected: virtual machine_config_constructor device_mconfig_additions() const override; -private: + virtual void send_to_display(uint8_t data) override { m_vfd->write_char(data); } + + required_device m_vfd; }; // --- SQ1 - Parduz -------------------------------------------------------------------------------------------------------------------------- @@ -138,18 +132,17 @@ class esqpanel2x16_sq1_device : public esqpanel_device { public: esqpanel2x16_sq1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - required_device m_vfd; - - virtual void send_to_display(uint8_t data) override { m_vfd->write_char(data); } - protected: virtual machine_config_constructor device_mconfig_additions() const override; -private: + virtual void send_to_display(uint8_t data) override { m_vfd->write_char(data); } + + required_device m_vfd; }; -extern const device_type ESQPANEL1x22; -extern const device_type ESQPANEL2x40; -extern const device_type ESQPANEL2x16_SQ1; +DECLARE_DEVICE_TYPE(ESQPANEL1X22, esqpanel1x22_device) +DECLARE_DEVICE_TYPE(ESQPANEL2X40, esqpanel2x40_device) +DECLARE_DEVICE_TYPE(ESQPANEL2X40_SQ1, esqpanel2x40_sq1_device) +DECLARE_DEVICE_TYPE(ESQPANEL2X16_SQ1, esqpanel2x16_sq1_device) -#endif +#endif // MAME_MACHINE_ESQPANEL_H diff --git a/src/mame/machine/esqvfd.cpp b/src/mame/machine/esqvfd.cpp index 81a7400b223..06b8a4b3073 100644 --- a/src/mame/machine/esqvfd.cpp +++ b/src/mame/machine/esqvfd.cpp @@ -7,12 +7,13 @@ #include "emu.h" #include "esqvfd.h" + #include "esq1by22.lh" #include "esq2by40.lh" -const device_type ESQ1x22 = device_creator; -const device_type ESQ2x40 = device_creator; -const device_type ESQ2x40_SQ1 = device_creator; +DEFINE_DEVICE_TYPE(ESQ1X22, esq1x22_device, "esq1x22", "Ensoniq 1x22 VFD") +DEFINE_DEVICE_TYPE(ESQ2X40, esq2x40_device, "esq2x40", "Ensoniq 2x40 VFD") +DEFINE_DEVICE_TYPE(ESQ2X40_SQ1, esq2x40_sq1_device, "esq2x40_sq1", "Ensoniq 2x40 VFD (SQ-1 variant)") // adapted from bfm_bd1, rearranged to work with ASCII data used by the Ensoniq h/w static const uint16_t font[]= @@ -115,16 +116,16 @@ static const uint16_t font[]= 0x0000, // 0000 0000 0000 0000 (DEL) }; -esqvfd_t::esqvfd_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source) +esqvfd_device::esqvfd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock) { } -void esqvfd_t::device_start() +void esqvfd_device::device_start() { } -void esqvfd_t::device_reset() +void esqvfd_device::device_reset() { m_cursx = m_cursy = 0; m_savedx = m_savedy = 0; @@ -135,12 +136,12 @@ void esqvfd_t::device_reset() memset(m_dirty, 1, sizeof(m_attrs)); } -void esqvfd_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +void esqvfd_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { } // why isn't the font just stored in this order? -uint32_t esqvfd_t::conv_segments(uint16_t segin) +uint32_t esqvfd_device::conv_segments(uint16_t segin) { uint32_t segout = 0; @@ -164,7 +165,7 @@ uint32_t esqvfd_t::conv_segments(uint16_t segin) } // generic display update; can override from child classes if not good enough -void esqvfd_t::update_display() +void esqvfd_device::update_display() { for (int row = 0; row < m_rows; row++) { @@ -194,12 +195,12 @@ static MACHINE_CONFIG_FRAGMENT(esq2x40) MCFG_DEFAULT_LAYOUT(layout_esq2by40) MACHINE_CONFIG_END -machine_config_constructor esq2x40_t::device_mconfig_additions() const +machine_config_constructor esq2x40_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( esq2x40 ); } -void esq2x40_t::write_char(int data) +void esq2x40_device::write_char(int data) { // ESQ-1 sends (cursor move) 0xfa 0xYY to mark YY characters as underlined at the current cursor location if (m_lastchar == 0xfa) @@ -282,7 +283,7 @@ void esq2x40_t::write_char(int data) update_display(); } -esq2x40_t::esq2x40_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : esqvfd_t(mconfig, ESQ2x40, "Ensoniq 2x40 VFD", tag, owner, clock, "esq2x40", __FILE__) +esq2x40_device::esq2x40_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : esqvfd_device(mconfig, ESQ2X40, tag, owner, clock) { m_rows = 2; m_cols = 40; @@ -294,12 +295,12 @@ static MACHINE_CONFIG_FRAGMENT(esq1x22) MCFG_DEFAULT_LAYOUT(layout_esq1by22) MACHINE_CONFIG_END -machine_config_constructor esq1x22_t::device_mconfig_additions() const +machine_config_constructor esq1x22_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( esq1x22 ); } -void esq1x22_t::write_char(int data) +void esq1x22_device::write_char(int data) { if (data >= 0x60) { @@ -335,34 +336,34 @@ void esq1x22_t::write_char(int data) update_display(); } -esq1x22_t::esq1x22_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : esqvfd_t(mconfig, ESQ1x22, "Ensoniq 1x22 VFD", tag, owner, clock, "esq1x22", __FILE__) +esq1x22_device::esq1x22_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : esqvfd_device(mconfig, ESQ1X22, tag, owner, clock) { m_rows = 1; m_cols = 22; } /* SQ-1 display, I think it's really an LCD but we'll deal with it for now */ -machine_config_constructor esq2x40_sq1_t::device_mconfig_additions() const +machine_config_constructor esq2x40_sq1_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( esq2x40 ); // we use the normal 2x40 layout } -void esq2x40_sq1_t::write_char(int data) +void esq2x40_sq1_device::write_char(int data) { if (data == 0x09) // musical note { data = '^'; // approximate for now } - if (m_Wait87Shift) + if (m_wait87shift) { m_cursy = (data >> 4) & 0xf; m_cursx = data & 0xf; - m_Wait87Shift = false; + m_wait87shift = false; } - else if (m_Wait88Shift) + else if (m_wait88shift) { - m_Wait88Shift = false; + m_wait88shift = false; } else if ((data >= 0x20) && (data <= 0x7f)) { @@ -387,11 +388,11 @@ void esq2x40_sq1_t::write_char(int data) } else if (data == 0x87) { - m_Wait87Shift = true; + m_wait87shift = true; } else if (data == 0x88) { - m_Wait88Shift = true; + m_wait88shift = true; } else { @@ -399,10 +400,10 @@ void esq2x40_sq1_t::write_char(int data) } } -esq2x40_sq1_t::esq2x40_sq1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : esqvfd_t(mconfig, ESQ2x40_SQ1, "Ensoniq 2x40 VFD (SQ-1 variant)", tag, owner, clock, "esq2x40_sq1", __FILE__) +esq2x40_sq1_device::esq2x40_sq1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : esqvfd_device(mconfig, ESQ2X40_SQ1, tag, owner, clock) { m_rows = 2; m_cols = 40; - m_Wait87Shift = false; - m_Wait88Shift = false; + m_wait87shift = false; + m_wait88shift = false; } diff --git a/src/mame/machine/esqvfd.h b/src/mame/machine/esqvfd.h index f804bc698b5..ac70201defc 100644 --- a/src/mame/machine/esqvfd.h +++ b/src/mame/machine/esqvfd.h @@ -1,31 +1,29 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont -#ifndef ESQVFD_H -#define ESQVFD_H +#ifndef MAME_MACHINE_ESQVFD_H +#define MAME_MACHINE_ESQVFD_H -#define MCFG_ESQ1x22_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, ESQ1x22, 60) +#define MCFG_ESQ1X22_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, ESQ1X22, 60) #define MCFG_ESQ1x22_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) -#define MCFG_ESQ2x40_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, ESQ2x40, 60) +#define MCFG_ESQ2X40_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, ESQ2X40, 60) -#define MCFG_ESQ2x40_REMOVE(_tag) \ +#define MCFG_ESQ2X40_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) -#define MCFG_ESQ2x40_SQ1_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, ESQ2x40_SQ1, 60) +#define MCFG_ESQ2X40_SQ1_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, ESQ2X40_SQ1, 60) -#define MCFG_ESQ2x40_SQ1_REMOVE(_tag) \ +#define MCFG_ESQ2X40_SQ1_REMOVE(_tag) \ MCFG_DEVICE_REMOVE(_tag) -class esqvfd_t : public device_t { +class esqvfd_device : public device_t { public: - esqvfd_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - DECLARE_WRITE8_MEMBER( write ) { write_char(data); } virtual void write_char(int data) = 0; @@ -34,11 +32,13 @@ public: uint32_t conv_segments(uint16_t segin); protected: - static const uint8_t AT_NORMAL = 0x00; - static const uint8_t AT_BOLD = 0x01; - static const uint8_t AT_UNDERLINE = 0x02; - static const uint8_t AT_BLINK = 0x04; - static const uint8_t AT_BLINKED = 0x80; // set when character should be blinked off + esqvfd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + static constexpr uint8_t AT_NORMAL = 0x00; + static constexpr uint8_t AT_BOLD = 0x01; + static constexpr uint8_t AT_UNDERLINE = 0x02; + static constexpr uint8_t AT_BLINK = 0x04; + static constexpr uint8_t AT_BLINKED = 0x80; // set when character should be blinked off virtual void device_start() override; virtual void device_reset() override; @@ -54,9 +54,9 @@ protected: uint8_t m_dirty[2][40]; }; -class esq1x22_t : public esqvfd_t { +class esq1x22_device : public esqvfd_device { public: - esq1x22_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + esq1x22_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual void write_char(int data) override; @@ -66,21 +66,19 @@ protected: private: }; -class esq2x40_t : public esqvfd_t { +class esq2x40_device : public esqvfd_device { public: - esq2x40_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + esq2x40_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual void write_char(int data) override; protected: virtual machine_config_constructor device_mconfig_additions() const override; - -private: }; -class esq2x40_sq1_t : public esqvfd_t { +class esq2x40_sq1_device : public esqvfd_device { public: - esq2x40_sq1_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + esq2x40_sq1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual void write_char(int data) override; @@ -88,11 +86,11 @@ protected: virtual machine_config_constructor device_mconfig_additions() const override; private: - bool m_Wait87Shift, m_Wait88Shift; + bool m_wait87shift, m_wait88shift; }; -extern const device_type ESQ1x22; -extern const device_type ESQ2x40; -extern const device_type ESQ2x40_SQ1; +DECLARE_DEVICE_TYPE(ESQ1X22, esq1x22_device) +DECLARE_DEVICE_TYPE(ESQ2X40, esq2x40_device) +DECLARE_DEVICE_TYPE(ESQ2X40_SQ1, esq2x40_sq1_device) -#endif +#endif // MAME_MACHINE_ESQVFD_H diff --git a/src/mame/machine/fd1089.cpp b/src/mame/machine/fd1089.cpp index 03d4a17c476..e29fad8275c 100644 --- a/src/mame/machine/fd1089.cpp +++ b/src/mame/machine/fd1089.cpp @@ -142,8 +142,8 @@ //************************************************************************** // device type definition -const device_type FD1089A = device_creator; -const device_type FD1089B = device_creator; +DEFINE_DEVICE_TYPE(FD1089A, fd1089a_device, "fd1089a", "Hitachi FD1089A Encrypted CPU") +DEFINE_DEVICE_TYPE(FD1089B, fd1089b_device, "fd1089b", "Hitachi FD1089B Encrypted CPU") // common base lookup table, shared between A and B variants const uint8_t fd1089_base_device::s_basetable_fd1089[0x100] = @@ -221,26 +221,23 @@ ADDRESS_MAP_END // fd1089_base_device - constructor //------------------------------------------------- -fd1089_base_device::fd1089_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : m68000_device(mconfig, type, name, tag, owner, clock, shortname, source), +fd1089_base_device::fd1089_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : m68000_device(mconfig, type, tag, owner, clock), m_region(*this, DEVICE_SELF), m_key(*this, "key"), m_decrypted_opcodes(*this, ":fd1089_decrypted_opcodes") { - // override the name after the m68000 initializes - m_name.assign(name); - // add the decrypted opcodes map m_address_map[AS_DECRYPTED_OPCODES] = ADDRESS_MAP_NAME(decrypted_opcodes_map); } fd1089a_device::fd1089a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : fd1089_base_device(mconfig, FD1089A, "FD1089A", tag, owner, clock, "fd1089a", __FILE__) + : fd1089_base_device(mconfig, FD1089A, tag, owner, clock) { } fd1089b_device::fd1089b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : fd1089_base_device(mconfig, FD1089B, "FD1089B", tag, owner, clock, "fd1089b", __FILE__) + : fd1089_base_device(mconfig, FD1089B, tag, owner, clock) { } diff --git a/src/mame/machine/fd1089.h b/src/mame/machine/fd1089.h index f77427ff3f6..4fc70bfc40f 100644 --- a/src/mame/machine/fd1089.h +++ b/src/mame/machine/fd1089.h @@ -12,8 +12,10 @@ ***************************************************************************/ -#ifndef __FD1089_H__ -#define __FD1089_H__ +#ifndef MAME_MACHINE_FD1089_H +#define MAME_MACHINE_FD1089_H + +#pragma once #include "cpu/m68000/m68000.h" @@ -23,8 +25,8 @@ //************************************************************************** // device type definition -extern const device_type FD1089A; -extern const device_type FD1089B; +DECLARE_DEVICE_TYPE(FD1089A, fd1089a_device) +DECLARE_DEVICE_TYPE(FD1089B, fd1089b_device) @@ -38,13 +40,13 @@ extern const device_type FD1089B; class fd1089_base_device : public m68000_device { public: - // construction/destruction - fd1089_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - // explicit decryption helpers void decrypt(offs_t baseaddr, uint32_t size, offs_t regionoffs, uint16_t *opcodesptr, uint16_t *dataptr) { decrypt(baseaddr, size, &m_plaintext[regionoffs/2], opcodesptr, dataptr); } protected: + // construction/destruction + fd1089_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device overrides virtual void device_start() override; @@ -102,4 +104,4 @@ protected: }; -#endif +#endif // MAME_MACHINE_FD1089_H diff --git a/src/mame/machine/fd1094.cpp b/src/mame/machine/fd1094.cpp index a9af8ba32ea..14cfdd65aeb 100644 --- a/src/mame/machine/fd1094.cpp +++ b/src/mame/machine/fd1094.cpp @@ -379,7 +379,7 @@ //************************************************************************** // device type definition -const device_type FD1094 = device_creator; +DEFINE_DEVICE_TYPE(FD1094, fd1094_device, "fd1094", "Hitachi FD1094 Encrypted CPU") /* 317-0162 CPU also needs to mask: @@ -553,7 +553,7 @@ uint16_t *fd1094_decryption_cache::decrypted_opcodes(uint8_t state) fd1094_device::fd1094_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : m68000_device(mconfig, FD1094, "FD1094", tag, owner, clock, "fd1094", __FILE__) + : m68000_device(mconfig, FD1094, tag, owner, clock) , m_decrypted_opcodes_bank(*this, "^fd1094_decrypted_opcodes") , m_state(0x00) , m_irqmode(false) @@ -562,9 +562,6 @@ fd1094_device::fd1094_device(const machine_config &mconfig, const char *tag, dev , m_rom(*this, DEVICE_SELF) , m_key(*this, "key") { - // override the name after the m68000 initializes - m_name.assign("FD1094"); - // add the decrypted opcodes map // m_address_map[AS_DECRYPTED_OPCODES] = ADDRESS_MAP_NAME(decrypted_opcodes_map); diff --git a/src/mame/machine/fd1094.h b/src/mame/machine/fd1094.h index ba04da2858a..41f4294da05 100644 --- a/src/mame/machine/fd1094.h +++ b/src/mame/machine/fd1094.h @@ -12,8 +12,10 @@ ***************************************************************************/ -#ifndef __FD1094_H__ -#define __FD1094_H__ +#ifndef MAME_MACHINE_FD1094_H +#define MAME_MACHINE_FD1094_H + +#pragma once #include "cpu/m68000/m68000.h" @@ -127,4 +129,4 @@ struct fd1094_constraint uint16_t mask; }; -#endif +#endif // MAME_MACHINE_FD1094_H diff --git a/src/mame/machine/fm_scsi.cpp b/src/mame/machine/fm_scsi.cpp index 164f26e7610..ada0ef8cb7e 100644 --- a/src/mame/machine/fm_scsi.cpp +++ b/src/mame/machine/fm_scsi.cpp @@ -28,18 +28,38 @@ #include "fm_scsi.h" #include "debugger.h" +// SCSI input lines (from target) +#define FMSCSI_LINE_REQ 0x80 +#define FMSCSI_LINE_IO 0x40 +#define FMSCSI_LINE_MSG 0x20 +#define FMSCSI_LINE_CD 0x10 +#define FMSCSI_LINE_BSY 0x08 +#define FMSCSI_LINE_EX 0x04 +#define FMSCSI_LINE_INT 0x02 +#define FMSCSI_LINE_PERR 0x01 + +// SCSI output lines (to target) +#define FMSCSI_LINE_WEN 0x80 +#define FMSCSI_LINE_IMSK 0x40 +#define FMSCSI_LINE_RMSK 0x20 +#define FMSCSI_LINE_ATN 0x10 +#define FMSCSI_LINE_WRD 0x08 +#define FMSCSI_LINE_SEL 0x04 +#define FMSCSI_LINE_DMAE 0x02 +#define FMSCSI_LINE_RST 0x01 + /* * Device config */ -const device_type FMSCSI = device_creator; +DEFINE_DEVICE_TYPE(FMSCSI, fmscsi_device, "fmscsi", "FM-SCSI") /* * Device */ fmscsi_device::fmscsi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : legacy_scsi_host_adapter(mconfig, FMSCSI, "FM-SCSI", tag, owner, clock, "fmscsi", __FILE__), + : legacy_scsi_host_adapter(mconfig, FMSCSI, tag, owner, clock), m_irq_handler(*this), m_drq_handler(*this) { diff --git a/src/mame/machine/fm_scsi.h b/src/mame/machine/fm_scsi.h index 895d25e494c..d9d3a09d1e0 100644 --- a/src/mame/machine/fm_scsi.h +++ b/src/mame/machine/fm_scsi.h @@ -7,31 +7,11 @@ * */ -#ifndef FM_SCSI_H_ -#define FM_SCSI_H_ +#ifndef MAME_MACHINE_FM_SCSI_H +#define MAME_MACHINE_FM_SCSI_H #include "machine/legscsi.h" -// SCSI input lines (from target) -#define FMSCSI_LINE_REQ 0x80 -#define FMSCSI_LINE_IO 0x40 -#define FMSCSI_LINE_MSG 0x20 -#define FMSCSI_LINE_CD 0x10 -#define FMSCSI_LINE_BSY 0x08 -#define FMSCSI_LINE_EX 0x04 -#define FMSCSI_LINE_INT 0x02 -#define FMSCSI_LINE_PERR 0x01 - -// SCSI output lines (to target) -#define FMSCSI_LINE_WEN 0x80 -#define FMSCSI_LINE_IMSK 0x40 -#define FMSCSI_LINE_RMSK 0x20 -#define FMSCSI_LINE_ATN 0x10 -#define FMSCSI_LINE_WRD 0x08 -#define FMSCSI_LINE_SEL 0x04 -#define FMSCSI_LINE_DMAE 0x02 -#define FMSCSI_LINE_RST 0x01 - #define MCFG_FMSCSI_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, FMSCSI, 0) @@ -47,8 +27,8 @@ public: fmscsi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast(device).m_irq_handler.set_callback(object); } - template static devcb_base &set_drq_handler(device_t &device, _Object object) { return downcast(device).m_drq_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast(device).m_drq_handler.set_callback(std::forward(cb)); } // any publically accessible interfaces needed for runtime uint8_t fmscsi_data_r(void); @@ -98,6 +78,6 @@ private: emu_timer* m_phase_timer; }; -extern const device_type FMSCSI; +DECLARE_DEVICE_TYPE(FMSCSI, fmscsi_device) -#endif /* FM_SCSI_H_ */ +#endif // MAME_MACHINE_FM_SCSI_H diff --git a/src/mame/machine/fmt_icmem.cpp b/src/mame/machine/fmt_icmem.cpp index 2d19ca908fb..d0ab625a508 100644 --- a/src/mame/machine/fmt_icmem.cpp +++ b/src/mame/machine/fmt_icmem.cpp @@ -14,14 +14,14 @@ #include "fmt_icmem.h" // device type definition -const device_type FMT_ICMEM = device_creator; +DEFINE_DEVICE_TYPE(FMT_ICMEM, fmt_icmem_device, "fmt_icmem", "FM Towns IC Memory Card") //------------------------------------------------- // fmt_icmem_device - constructor //------------------------------------------------- fmt_icmem_device::fmt_icmem_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, FMT_ICMEM, "FM Towns IC Memory Card", tag, owner, clock, "fmt_icmem", __FILE__), + : device_t(mconfig, FMT_ICMEM, tag, owner, clock), device_image_interface(mconfig, *this), m_writeprotect(*this,"icmem"), m_change(false), diff --git a/src/mame/machine/fmt_icmem.h b/src/mame/machine/fmt_icmem.h index b9def9a8f30..6b3c8456687 100644 --- a/src/mame/machine/fmt_icmem.h +++ b/src/mame/machine/fmt_icmem.h @@ -8,10 +8,10 @@ *********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_FMT_ICMEM_H +#define MAME_MACHINE_FMT_ICMEM_H -#ifndef __FMT_ICMEM_H__ -#define __FMT_ICMEM_H__ +#pragma once //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -24,8 +24,7 @@ FUNCTION PROTOTYPES ***************************************************************************/ -class fmt_icmem_device : public device_t, - public device_image_interface +class fmt_icmem_device : public device_t, public device_image_interface { public: // construction/destruction @@ -70,7 +69,7 @@ private: // device type definition -extern const device_type FMT_ICMEM; +DECLARE_DEVICE_TYPE(FMT_ICMEM, fmt_icmem_device) -#endif /* __FMT_ICMEM_H__ */ +#endif // MAME_MACHINE_FMT_ICMEM_H diff --git a/src/mame/machine/gaelco3d.cpp b/src/mame/machine/gaelco3d.cpp index f1a7c4851b7..331c0a62774 100644 --- a/src/mame/machine/gaelco3d.cpp +++ b/src/mame/machine/gaelco3d.cpp @@ -54,6 +54,18 @@ #define LOGMSG(x) do {} while (0); #endif +/* external status bits */ +#define GAELCOSER_STATUS_READY 0x01 +#define GAELCOSER_STATUS_RTS 0x02 + +/* only RTS currently understood ! */ +//#define GAELCOSER_STATUS_DTR 0x04 + +/* internal bits follow ... */ +#define GAELCOSER_STATUS_IRQ_ENABLE 0x10 +#define GAELCOSER_STATUS_RESET 0x20 +#define GAELCOSER_STATUS_SEND 0x40 + /* * 115200 seems plausible, radikalb won't work below this speed * surfplnt will not work below 460800 .... @@ -82,7 +94,7 @@ /* code below currently works on unix only */ #ifdef SHARED_MEM_DRIVER -static osd_shared_mem *osd_sharedmem_alloc(const char *path, int create, size_t size) +gaelco_serial_device::osd_shared_mem *gaelco_serial_device::osd_sharedmem_alloc(const char *path, int create, size_t size) { int fd; osd_shared_mem *os_shmem = (osd_shared_mem *)malloc(sizeof(osd_shared_mem)); @@ -117,7 +129,7 @@ static osd_shared_mem *osd_sharedmem_alloc(const char *path, int create, size_t return os_shmem; } -static void osd_sharedmem_free(osd_shared_mem *os_shmem) +void gaelco_serial_device::osd_sharedmem_free(osd_shared_mem *os_shmem) { munmap(os_shmem->ptr, os_shmem->size); if (os_shmem->creator) @@ -126,12 +138,12 @@ static void osd_sharedmem_free(osd_shared_mem *os_shmem) free(os_shmem); } -static void *osd_sharedmem_ptr(osd_shared_mem *os_shmem) +void *gaelco_serial_device::osd_sharedmem_ptr(osd_shared_mem *os_shmem) { return os_shmem->ptr; } #else -static osd_shared_mem *osd_sharedmem_alloc(const char *path, int create, size_t size) +gaelco_serial_device::osd_shared_mem *gaelco_serial_device::osd_sharedmem_alloc(const char *path, int create, size_t size) { osd_shared_mem *os_shmem = (osd_shared_mem *) malloc(sizeof(osd_shared_mem)); @@ -142,13 +154,13 @@ static osd_shared_mem *osd_sharedmem_alloc(const char *path, int create, size_t return os_shmem; } -static void osd_sharedmem_free(osd_shared_mem *os_shmem) +void gaelco_serial_device::osd_sharedmem_free(osd_shared_mem *os_shmem) { free(os_shmem->ptr); free(os_shmem); } -static void *osd_sharedmem_ptr(osd_shared_mem *os_shmem) +void *gaelco_serial_device::osd_sharedmem_ptr(osd_shared_mem *os_shmem) { return os_shmem->ptr; } @@ -160,18 +172,18 @@ static void *osd_sharedmem_ptr(osd_shared_mem *os_shmem) #define PATH_NAME "/tmp/gaelco_serial" -static void buf_reset(buf_t *buf) +void gaelco_serial_device::buf_reset(buf_t *buf) { - buf->stat = GAELCOSER_STATUS_RTS| GAELCOSER_STATUS_RESET; + buf->stat = GAELCOSER_STATUS_RTS | GAELCOSER_STATUS_RESET; buf->data = 0; buf->data_cnt = -1; buf->cnt = 0; } -const device_type GAELCO_SERIAL = device_creator; +DEFINE_DEVICE_TYPE(GAELCO_SERIAL, gaelco_serial_device, "gaelco_serial", "Gaelco 3D Serial Hardware") gaelco_serial_device::gaelco_serial_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GAELCO_SERIAL, "Gaelco 3D Serial Hardware", tag, owner, clock, "gaelco_serial", __FILE__), + : device_t(mconfig, GAELCO_SERIAL, tag, owner, clock), m_irq_handler(*this), m_status(0), m_last_in_msg_cnt(0), diff --git a/src/mame/machine/gaelco3d.h b/src/mame/machine/gaelco3d.h index 50e9fafdaed..85ba9283a3e 100644 --- a/src/mame/machine/gaelco3d.h +++ b/src/mame/machine/gaelco3d.h @@ -5,6 +5,10 @@ Gaelco 3D serial hardware ***************************************************************************/ +#ifndef MAME_MACHINE_GAELCO3D_H +#define MAME_MACHINE_GAELCO3D_H + +#pragma once /*************************************************************************** @@ -14,20 +18,6 @@ #define MCFG_GAELCO_SERIAL_IRQ_HANDLER(_devcb) \ devcb = &gaelco_serial_device::set_irq_handler(*device, DEVCB_##_devcb); -/* external status bits */ -#define GAELCOSER_STATUS_READY 0x01 -#define GAELCOSER_STATUS_RTS 0x02 - -/* only RTS currently understood ! */ -//#define GAELCOSER_STATUS_DTR 0x04 - -#define GAELCOSER_EXT_STATUS_MASK 0x03 - -/* internal bits follow ... */ -#define GAELCOSER_STATUS_IRQ_ENABLE 0x10 -#define GAELCOSER_STATUS_RESET 0x20 -#define GAELCOSER_STATUS_SEND 0x40 - /*************************************************************************** @@ -36,34 +26,14 @@ /* ----- device interface ----- */ -struct buf_t -{ - volatile uint8_t data; - volatile uint8_t stat; - volatile int cnt; - volatile int data_cnt; -}; - -struct shmem_t -{ - buf_t buf[2]; -}; - -struct osd_shared_mem -{ - char *fn; - size_t size; - void *ptr; - int creator; -}; - class gaelco_serial_device : public device_t { public: + static constexpr unsigned EXT_STATUS_MASK = 0x03; + gaelco_serial_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~gaelco_serial_device() {} - template static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast(device).m_irq_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( status_r); DECLARE_WRITE8_MEMBER( data_w); @@ -91,6 +61,33 @@ protected: virtual void device_reset() override; private: + struct buf_t + { + volatile uint8_t data; + volatile uint8_t stat; + volatile int cnt; + volatile int data_cnt; + }; + + struct shmem_t + { + buf_t buf[2]; + }; + + struct osd_shared_mem + { + char *fn; + size_t size; + void *ptr; + int creator; + }; + + static osd_shared_mem *osd_sharedmem_alloc(const char *path, int create, size_t size); + static void osd_sharedmem_free(osd_shared_mem *os_shmem); + static void *osd_sharedmem_ptr(osd_shared_mem *os_shmem); + + static void buf_reset(buf_t *buf); + // internal state devcb_write_line m_irq_handler; @@ -114,3 +111,5 @@ private: }; extern const device_type GAELCO_SERIAL; + +#endif // MAME_MACHINE_GAELCO3D_H diff --git a/src/mame/machine/gdrom.cpp b/src/mame/machine/gdrom.cpp index e7420ec9383..5f6bd02fe17 100644 --- a/src/mame/machine/gdrom.cpp +++ b/src/mame/machine/gdrom.cpp @@ -434,10 +434,10 @@ void gdrom_device::WriteData( uint8_t *data, int dataLength ) } // device type definition -const device_type GDROM = device_creator; +DEFINE_DEVICE_TYPE(GDROM, gdrom_device, "gdrom", "GD-ROM") gdrom_device::gdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - atapi_cdrom_device(mconfig, GDROM, "GDROM", tag, owner, clock, "gdrom", __FILE__) + atapi_cdrom_device(mconfig, GDROM, tag, owner, clock) { } diff --git a/src/mame/machine/gdrom.h b/src/mame/machine/gdrom.h index 954e3b29231..eae39ce0541 100644 --- a/src/mame/machine/gdrom.h +++ b/src/mame/machine/gdrom.h @@ -6,8 +6,10 @@ ***************************************************************************/ -#ifndef _GDROM_H_ -#define _GDROM_H_ +#ifndef MAME_MACHINE_GDROM_H +#define MAME_MACHINE_GDROM_H + +#pragma once #include "machine/atapicdr.h" @@ -36,7 +38,6 @@ private: uint32_t transferOffset; }; -// device type definition -extern const device_type GDROM; +DECLARE_DEVICE_TYPE(GDROM, gdrom_device) -#endif +#endif // MAME_MACHINE_GDROM_H diff --git a/src/mame/machine/hp48.cpp b/src/mame/machine/hp48.cpp index 4c39f5517ab..1dfd2e05b56 100644 --- a/src/mame/machine/hp48.cpp +++ b/src/mame/machine/hp48.cpp @@ -914,7 +914,7 @@ void hp48_state::hp48_encode_nibble( uint8_t* dst, uint8_t* src, int size ) /* ----- card images ------ */ -const device_type HP48_PORT = device_creator; +DEFINE_DEVICE_TYPE(HP48_PORT, hp48_port_image_device, "hp48_port_image", "HP48 memory card") /* helper for load and create */ void hp48_port_image_device::hp48_fill_port() @@ -1011,8 +1011,8 @@ void hp48_port_image_device::device_start() } hp48_port_image_device::hp48_port_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HP48_PORT, "HP48 memory card", tag, owner, clock, "hp48_port_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, HP48_PORT, tag, owner, clock) + , device_image_interface(mconfig, *this) { } @@ -1110,11 +1110,15 @@ void hp48_state::hp48_machine_start( hp48_models model ) } /* timers */ - machine().scheduler().timer_pulse(attotime::from_hz( 16 ), timer_expired_delegate(FUNC(hp48_state::hp48_timer1_cb),this)); - machine().scheduler().timer_pulse(attotime::from_hz( 8192 ), timer_expired_delegate(FUNC(hp48_state::hp48_timer2_cb),this)); + m_1st_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hp48_state::hp48_timer1_cb), this)); + m_1st_timer->adjust(attotime::from_hz( 16 ), 0, attotime::from_hz( 16 )); + + m_2nd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hp48_state::hp48_timer2_cb), this)); + m_2nd_timer->adjust(attotime::from_hz( 8192 ), 0, attotime::from_hz( 8192 )); /* 1ms keyboard polling */ - machine().scheduler().timer_pulse(attotime::from_msec( 1 ), timer_expired_delegate(FUNC(hp48_state::hp48_kbd_cb),this)); + m_kbd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hp48_state::hp48_kbd_cb), this)); + m_kbd_timer->adjust(attotime::from_msec( 1 ), 0, attotime::from_msec( 1 )); /* save state */ save_item(NAME(m_out) ); diff --git a/src/mame/machine/ibm6580_fdc.cpp b/src/mame/machine/ibm6580_fdc.cpp index 101aa9b0453..732627f7eb1 100644 --- a/src/mame/machine/ibm6580_fdc.cpp +++ b/src/mame/machine/ibm6580_fdc.cpp @@ -3,6 +3,8 @@ #include "emu.h" #include "ibm6580_fdc.h" +#include "cpu/mcs48/mcs48.h" + #define VERBOSE_DBG 2 /* general debug messages */ @@ -17,7 +19,7 @@ } while (0) -const device_type DW_FDC = device_creator; +DEFINE_DEVICE_TYPE(DW_FDC, dw_fdc_device, "dw_fdc", "IBM Displaywriter Floppy") ROM_START( dw_fdc ) ROM_REGION(0x800, "mcu", 0) @@ -30,17 +32,14 @@ const tiny_rom_entry *dw_fdc_device::device_rom_region() const return ROM_NAME( dw_fdc ); } -static ADDRESS_MAP_START( dw_fdc_io, AS_IO, 8, dw_fdc_device ) -// AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) -// AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( dw_fdc ) MCFG_CPU_ADD("mcu", I8048, XTAL_24MHz/4) // divisor is unverified - MCFG_CPU_IO_MAP(dw_fdc_io) +// MCFG_MCS48_PORT_BUS_IN_CB(READ8(dw_fdc_device, bus_r)) +// MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(dw_fdc_device, bus_w)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dw_fdc_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(dw_fdc_device, p2_w)) +// MCFG_MCS48_PORT_T0_IN_CB(READLINE(dw_fdc_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(dw_fdc_device, t1_r)) MCFG_DEVICE_ADD("ppi8255", I8255, 0) @@ -57,7 +56,7 @@ machine_config_constructor dw_fdc_device::device_mconfig_additions() const } dw_fdc_device::dw_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DW_FDC, "IBM Displaywriter Floppy", tag, owner, clock, "dw_kbd", __FILE__) + : device_t(mconfig, DW_FDC, tag, owner, clock) , m_out_data(*this) , m_out_clock(*this) , m_out_strobe(*this) @@ -106,14 +105,14 @@ READ8_MEMBER( dw_fdc_device::p2_r ) return data; } -READ8_MEMBER( dw_fdc_device::t0_r ) +READ_LINE_MEMBER( dw_fdc_device::t0_r ) { DBG_LOG(2,"t0",( "== %d\n", m_t0)); return m_t0; } -READ8_MEMBER( dw_fdc_device::t1_r ) +READ_LINE_MEMBER( dw_fdc_device::t1_r ) { DBG_LOG(2,"t1",( "== %d\n", m_t1)); diff --git a/src/mame/machine/ibm6580_fdc.h b/src/mame/machine/ibm6580_fdc.h index b63bbfbfc2b..b76562a9357 100644 --- a/src/mame/machine/ibm6580_fdc.h +++ b/src/mame/machine/ibm6580_fdc.h @@ -1,9 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Sergey Svishchev -#ifndef DWFDC_H_ -#define DWFDC_H_ +#ifndef MAME_MACHINE_IBM6580_FDC_H +#define MAME_MACHINE_IBM6580_FDC_H + +#pragma once -#include "cpu/mcs48/mcs48.h" #include "machine/i8255.h" #include "machine/upd765.h" @@ -23,9 +24,9 @@ class dw_fdc_device : public device_t public: dw_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_out_data_handler(device_t &device, _Object object) { return downcast(device).m_out_data.set_callback(object); } - template static devcb_base &set_out_clock_handler(device_t &device, _Object object) { return downcast(device).m_out_clock.set_callback(object); } - template static devcb_base &set_out_strobe_handler(device_t &device, _Object object) { return downcast(device).m_out_strobe.set_callback(object); } + template static devcb_base &set_out_data_handler(device_t &device, Object &&cb) { return downcast(device).m_out_data.set_callback(std::forward(cb)); } + template static devcb_base &set_out_clock_handler(device_t &device, Object &&cb) { return downcast(device).m_out_clock.set_callback(std::forward(cb)); } + template static devcb_base &set_out_strobe_handler(device_t &device, Object &&cb) { return downcast(device).m_out_strobe.set_callback(std::forward(cb)); } virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; @@ -39,8 +40,8 @@ public: DECLARE_WRITE8_MEMBER(p1_w); DECLARE_WRITE8_MEMBER(p2_w); DECLARE_READ8_MEMBER(p2_r); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_WRITE_LINE_MEMBER(reset_w); DECLARE_WRITE_LINE_MEMBER(ack_w); @@ -54,6 +55,6 @@ private: required_device m_mcu; }; -extern const device_type DW_FDC; +DECLARE_DEVICE_TYPE(DW_FDC, dw_fdc_device) -#endif /* DWFDC_H_ */ +#endif // MAME_MACHINE_IBM6580_FDC_H diff --git a/src/mame/machine/ibm6580_kbd.cpp b/src/mame/machine/ibm6580_kbd.cpp index 5bd25997f8d..950a7d34695 100644 --- a/src/mame/machine/ibm6580_kbd.cpp +++ b/src/mame/machine/ibm6580_kbd.cpp @@ -3,6 +3,9 @@ #include "emu.h" #include "ibm6580_kbd.h" +#include "cpu/mcs48/mcs48.h" + + #define VERBOSE_DBG 0 /* general debug messages */ #define DBG_LOG(N,M,A) \ @@ -16,7 +19,7 @@ } while (0) -const device_type DW_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(DW_KEYBOARD, dw_keyboard_device, "dw_kbd", "IBM Displaywriter Keyboard") ROM_START( dw_keyboard ) ROM_REGION(0x800, "mcu", 0) @@ -29,17 +32,15 @@ const tiny_rom_entry *dw_keyboard_device::device_rom_region() const return ROM_NAME( dw_keyboard ); } -static ADDRESS_MAP_START( dw_keyboard_io, AS_IO, 8, dw_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( dw_keyboard ) MCFG_CPU_ADD("mcu", I8049, XTAL_6MHz) // XXX RC oscillator - MCFG_CPU_IO_MAP(dw_keyboard_io) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(dw_keyboard_device, bus_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(dw_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dw_keyboard_device, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(dw_keyboard_device, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(dw_keyboard_device, p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(dw_keyboard_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(dw_keyboard_device, t1_r)) MACHINE_CONFIG_END machine_config_constructor dw_keyboard_device::device_mconfig_additions() const @@ -185,7 +186,7 @@ ioport_constructor dw_keyboard_device::device_input_ports() const } dw_keyboard_device::dw_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DW_KEYBOARD, "IBM Displaywriter Keyboard", tag, owner, clock, "dw_kbd", __FILE__) + : device_t(mconfig, DW_KEYBOARD, tag, owner, clock) , m_kbd(*this, "COL.%u", 0) , m_out_data(*this) , m_out_clock(*this) @@ -239,14 +240,14 @@ READ8_MEMBER( dw_keyboard_device::p2_r ) return data; } -READ8_MEMBER( dw_keyboard_device::t0_r ) +READ_LINE_MEMBER( dw_keyboard_device::t0_r ) { DBG_LOG(3,"t0",( "== %d\n", m_ack)); return m_ack; } -READ8_MEMBER( dw_keyboard_device::t1_r ) +READ_LINE_MEMBER( dw_keyboard_device::t1_r ) { DBG_LOG(2,"t1",( "== %d\n", m_keylatch)); diff --git a/src/mame/machine/ibm6580_kbd.h b/src/mame/machine/ibm6580_kbd.h index bd6e53935bf..b5e583ea7bc 100644 --- a/src/mame/machine/ibm6580_kbd.h +++ b/src/mame/machine/ibm6580_kbd.h @@ -1,9 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Sergey Svishchev -#ifndef DWKBD_H_ -#define DWKBD_H_ +#ifndef MAME_MACHINE_IBM6580_KBD_H +#define MAME_MACHINE_IBM6580_KBD_H + +#pragma once -#include "cpu/mcs48/mcs48.h" #define MCFG_DW_KEYBOARD_OUT_DATA_HANDLER(_devcb) \ devcb = &dw_keyboard_device::set_out_data_handler(*device, DEVCB_##_devcb); @@ -19,9 +20,9 @@ class dw_keyboard_device : public device_t public: dw_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_out_data_handler(device_t &device, _Object object) { return downcast(device).m_out_data.set_callback(object); } - template static devcb_base &set_out_clock_handler(device_t &device, _Object object) { return downcast(device).m_out_clock.set_callback(object); } - template static devcb_base &set_out_strobe_handler(device_t &device, _Object object) { return downcast(device).m_out_strobe.set_callback(object); } + template static devcb_base &set_out_data_handler(device_t &device, Object &&cb) { return downcast(device).m_out_data.set_callback(std::forward(cb)); } + template static devcb_base &set_out_clock_handler(device_t &device, Object &&cb) { return downcast(device).m_out_clock.set_callback(std::forward(cb)); } + template static devcb_base &set_out_strobe_handler(device_t &device, Object &&cb) { return downcast(device).m_out_strobe.set_callback(std::forward(cb)); } virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; @@ -36,8 +37,8 @@ public: DECLARE_WRITE8_MEMBER(p1_w); DECLARE_WRITE8_MEMBER(p2_w); DECLARE_READ8_MEMBER(p2_r); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_WRITE_LINE_MEMBER(reset_w); DECLARE_WRITE_LINE_MEMBER(ack_w); @@ -54,6 +55,6 @@ private: required_device m_mcu; }; -extern const device_type DW_KEYBOARD; +DECLARE_DEVICE_TYPE(DW_KEYBOARD, dw_keyboard_device) -#endif /* DWKBD_H_ */ +#endif // MAME_MACHINE_IBM6580_KBD_H diff --git a/src/mame/machine/ie15_kbd.cpp b/src/mame/machine/ie15_kbd.cpp deleted file mode 100644 index c5016c6006c..00000000000 --- a/src/mame/machine/ie15_kbd.cpp +++ /dev/null @@ -1,303 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Sergey Svishchev -/*************************************************************************** - - 15WWW-97-006 keyboard, normally used with 15IE-00-013. - Irisha can use it too. - -***************************************************************************/ - -#include "emu.h" -#include "machine/ie15_kbd.h" - -/*************************************************************************** - IMPLEMENTATION -***************************************************************************/ - - -ie15_keyboard_device::ie15_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) - , m_io_kbd(*this, "TERM_LINE%u", 0) - , m_io_kbdc(*this, "TERM_LINEC") - , m_keyboard_cb(*this) -{ -} - -ie15_keyboard_device::ie15_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, IE15_KEYBOARD, "15WWW-97-006 Keyboard", tag, owner, clock, "ie15_keyboard", __FILE__) - , m_io_kbd(*this, "TERM_LINE%u", 0) - , m_io_kbdc(*this, "TERM_LINEC") - , m_keyboard_cb(*this) -{ -} - -uint8_t ie15_keyboard_device::row_number(uint32_t code) -{ - int row = 0; - - while (code >>= 1) { ++row; } - - return row; -} - -uint16_t ie15_keyboard_device::keyboard_handler(uint16_t last_code, uint8_t *scan_line) -{ - int i; - uint32_t code = 0; - uint16_t key_code = 0; - uint16_t retVal = 0; - uint8_t ctrl = BIT(m_io_kbdc->read(), 0); - uint8_t shift = BIT(m_io_kbdc->read(), 1); - - i = *scan_line; - { - if (i<4) - code = m_io_kbd[i]->read(); - - if (code != 0) - { - if (!m_ruslat) - i += 4; - if (shift) - i += 8; - i <<= 4; - if (code < 0x10000) { - key_code = m_rom [i + row_number(code)]; - } else { - key_code = m_rom [i + row_number(code >> 16)*2 + 256]; - } - if (ctrl) { - key_code &= 0x1f; - } - retVal = key_code; - } else { - *scan_line += 1; - if (*scan_line==4) { - *scan_line = 0; - } - } - } - - // setup mode toggle - if (BIT(m_io_kbdc->read(), 2)) { - retVal |= (IE_KB_SDV << 8); - } - // aux keyboard flag - if (code & 0xe0e000) { - retVal |= (IE_KB_DK << 8); - } - // shift - if (shift) { - retVal |= (IE_KB_NR << 8); - } - // SI/SO handling - if ((key_code & 127) == IE_KB_SI) { - m_ruslat = 0; - } - if ((key_code & 127) == IE_KB_SO) { - m_ruslat = 1; - } - - return retVal; -} - -void ie15_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - uint16_t new_code; - new_code = keyboard_handler(m_last_code, &m_scan_line); - if ((m_last_code != new_code) /* && (new_code) */) - send_key(new_code); - m_last_code = new_code; -} - -/*************************************************************************** - VIDEO HARDWARE -***************************************************************************/ - -ROM_START( ie15_keyboard ) - ROM_REGION( 0x200, "ie15kbd", 0 ) - ROM_LOAD( "15bbb.rt5", 0x000, 0x200, CRC(e6a4226e) SHA1(0ee46f5be1b01fa917a6d483bb51463106ae441f) ) -ROM_END - -const tiny_rom_entry *ie15_keyboard_device::device_rom_region() const -{ - return ROM_NAME( ie15_keyboard ); -} - -static MACHINE_CONFIG_FRAGMENT( ie15_keyboard ) -MACHINE_CONFIG_END - -machine_config_constructor ie15_keyboard_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME(ie15_keyboard); -} - -void ie15_keyboard_device::device_start() -{ - m_keyboard_cb.resolve_safe(); - m_timer = timer_alloc(); - m_rom = (uint8_t*)memregion("ie15kbd")->base(); -} - -void ie15_keyboard_device::device_reset() -{ - m_last_code = 0; - m_scan_line = 0; - m_ruslat = 0; - m_timer->adjust(attotime::from_hz(10000), 0, attotime::from_hz(10000)); -} - -/* -Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16 Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24 --- -;+ 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 -= 7 8 9 ?????? ???? ?????? ?????? ?????? f1 f2 f3 -??J ??C ??U ??K ??E ??N ??G ??[ ??] ??Z ??H :* 4 5 6 ???? ???? ????1 ??1 ????2 f4 f5 f6 -??F ??Y ??W ??A ??P ??R ??O ??L ??D ??V ??\ .> ???? 1 2 3 ?????? ?????? ?????? f7 f8 f9 -??Q ??^ ??S ??M ??I ??T ??X ??B ??@ ,< /? _ SPC 0 , fA fB fC - -rom: - -00000000 3b 31 32 33 34 35 36 37 38 39 30 2d 00 37 38 39 |;1234567890-.789| rus + upper -00000010 6a 63 75 6b 65 6e 67 7b 7d 7a 68 3a 00 34 35 36 |jcukeng{}zh:.456| -00000020 66 79 77 61 70 72 6f 6c 64 76 7c 2e 7f 31 32 33 |fywaproldv|..123| -00000030 71 7e 73 6d 69 74 78 62 60 2c 2f 7f 20 30 30 2c |q~smitxb`,/. 00,| - -00000040 3b 31 32 33 34 35 36 37 38 39 30 2d 00 37 38 39 |;1234567890-.789| lat + upper -00000050 4a 43 55 4b 45 4e 47 5b 5d 5a 48 3a 00 34 35 36 |JCUKENG[]ZH:.456| -00000060 46 59 57 41 50 52 4f 4c 44 56 5c 2e 7f 31 32 33 |FYWAPROLDV\..123| -00000070 51 5e 53 4d 49 54 58 42 40 2c 2f 5f 20 30 30 2c |Q^SMITXB@,/_ 00,| - -00000080 2b 21 22 23 24 25 26 27 28 29 30 3d 00 37 38 39 |+!"#$%&'()0=.789| rus + lower -00000090 4a 43 55 4b 45 4e 47 5b 5d 5a 48 2a 00 34 35 36 |JCUKENG[]ZH*.456| -000000a0 46 59 57 41 50 52 4f 4c 44 56 5c 3e 7f 31 32 33 |FYWAPROLDV\>.123| -000000b0 51 5e 53 4d 49 54 58 42 40 3c 3f 5f 20 30 30 2c |Q^SMITXB@.123| -000000f0 71 7e 73 6d 69 74 78 62 60 3c 3f 7f 20 30 30 2c |q~smitxb`') - PORT_BIT(0x001000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) - PORT_BIT(0x002000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) - PORT_BIT(0x004000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) - PORT_BIT(0x008000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) - PORT_BIT(0x010000, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x020000, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x040000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PRD") PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6)) - PORT_BIT(0x080000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PRM") PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7)) - PORT_BIT(0x100000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PRS") PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8)) - PORT_BIT(0x200000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Del") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL)) - PORT_BIT(0x400000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) - PORT_BIT(0x800000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ins") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) - - PORT_START("TERM_LINE3") - PORT_BIT(0x000001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') - PORT_BIT(0x000002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('^') PORT_CHAR('~') - PORT_BIT(0x000004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') - PORT_BIT(0x000008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') - PORT_BIT(0x000010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') - PORT_BIT(0x000020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') - PORT_BIT(0x000040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') - PORT_BIT(0x000080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') - PORT_BIT(0x000100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) // PORT_CHAR('`') PORT_CHAR('@') // XXX - PORT_BIT(0x000200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') - PORT_BIT(0x000400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') - PORT_BIT(0x000800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('_') // XXX - PORT_BIT(0x001000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') - PORT_BIT(0x002000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) - PORT_BIT(0x004000, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x008000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Keypad ,") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) - PORT_BIT(0x010000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Lat (SO)") PORT_CODE(KEYCODE_LALT) - PORT_BIT(0x020000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Rus (SI)") PORT_CODE(KEYCODE_RALT) - PORT_BIT(0x040000, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x080000, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x100000, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_BIT(0x200000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PgDn") PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) - PORT_BIT(0x400000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Next SetUp") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) - PORT_BIT(0x800000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PgUp") PORT_CODE(KEYCODE_PGUP) PORT_CHAR(UCHAR_MAMEKEY(PGUP)) - - PORT_START("TERM_LINEC") - PORT_BIT(0x000001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) -// PORT_BIT(0x000002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) - PORT_BIT(0x000002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SetUp") PORT_CODE(KEYCODE_RSHIFT) PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(RSHIFT)) - PORT_BIT(0x000004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SetUp") PORT_CODE(KEYCODE_PRTSCR) PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(PRTSCR)) -INPUT_PORTS_END - -ioport_constructor ie15_keyboard_device::device_input_ports() const -{ - return INPUT_PORTS_NAME(ie15_keyboard); -} - -const device_type IE15_KEYBOARD = device_creator; diff --git a/src/mame/machine/ie15_kbd.h b/src/mame/machine/ie15_kbd.h deleted file mode 100644 index d2dbb3709a9..00000000000 --- a/src/mame/machine/ie15_kbd.h +++ /dev/null @@ -1,76 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Sergey Svishchev -#ifndef __IE15_KEYBOARD_H__ -#define __IE15_KEYBOARD_H__ - - -#define IE_KB_ACK 1 - -#define IE_KB_RED 0x01 -#define IE_KB_SDV 0x02 -#define IE_KB_DUP 0x08 -#define IE_KB_LIN 0x10 -#define IE_KB_DK 0x20 -#define IE_KB_PCH 0x40 -#define IE_KB_NR 0x80 - -#define IE_KB_RED_BIT 0 -#define IE_KB_SDV_BIT 1 -#define IE_KB_DUP_BIT 3 -#define IE_KB_LIN_BIT 4 -#define IE_KB_DK_BIT 5 -#define IE_KB_PCH_BIT 6 -#define IE_KB_NR_BIT 7 - -#define IE_KB_SI 0x0f -#define IE_KB_SO 0x0e - - -/*************************************************************************** - DEVICE CONFIGURATION MACROS -***************************************************************************/ - -#define MCFG_IE15_KEYBOARD_CB(_devcb) \ - devcb = &ie15_keyboard_device::set_keyboard_callback(*device, DEVCB_##_devcb); - -/*************************************************************************** - FUNCTION PROTOTYPES -***************************************************************************/ - -class ie15_keyboard_device : - public device_t -{ -public: - ie15_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - ie15_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - template static devcb_base &set_keyboard_callback(device_t &device, _Object object) { return downcast(device).m_keyboard_cb.set_callback(object); } - - virtual ioport_constructor device_input_ports() const override; - virtual machine_config_constructor device_mconfig_additions() const override; - virtual const tiny_rom_entry *device_rom_region() const override; - -protected: - required_ioport_array<4> m_io_kbd; - required_ioport m_io_kbdc; - - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual void send_key(uint16_t code) { m_keyboard_cb((offs_t)0, code); } - emu_timer *m_timer; - -private: - virtual uint16_t keyboard_handler(uint16_t last_code, uint8_t *scan_line); - uint8_t row_number(uint32_t code); - uint16_t m_last_code; - uint8_t m_scan_line; - uint8_t m_ruslat; - uint8_t *m_rom; - - devcb_write16 m_keyboard_cb; -}; - -extern const device_type IE15_KEYBOARD; - -#endif /* __IE15_KEYBOARD_H__ */ diff --git a/src/mame/machine/igs022.cpp b/src/mame/machine/igs022.cpp index afa5dda87e9..a46a6ba71b4 100644 --- a/src/mame/machine/igs022.cpp +++ b/src/mame/machine/igs022.cpp @@ -13,7 +13,7 @@ igs022_device::igs022_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, IGS022, "IGS022", tag, owner, clock, "igs022", __FILE__) + : device_t(mconfig, IGS022, tag, owner, clock) { } @@ -273,4 +273,4 @@ void igs022_device::IGS022_handle_command() } -const device_type IGS022 = device_creator; +DEFINE_DEVICE_TYPE(IGS022, igs022_device, "igs022", "IGS022") diff --git a/src/mame/machine/igs022.h b/src/mame/machine/igs022.h index 0460b1586d6..69c36bc9199 100644 --- a/src/mame/machine/igs022.h +++ b/src/mame/machine/igs022.h @@ -4,6 +4,8 @@ #ifndef MAME_MACHINE_IGS022_H #define MAME_MACHINE_IGS022_H +#pragma once + class igs022_device : public device_t { @@ -25,6 +27,6 @@ protected: }; -extern const device_type IGS022; +DECLARE_DEVICE_TYPE(IGS022, igs022_device) #endif // MAME_MACHINE_IGS022_H diff --git a/src/mame/machine/igs025.cpp b/src/mame/machine/igs025.cpp index 5bbec6fa07e..c1e1b3d83e9 100644 --- a/src/mame/machine/igs025.cpp +++ b/src/mame/machine/igs025.cpp @@ -17,7 +17,7 @@ igs025_device::igs025_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, IGS025, "IGS025", tag, owner, clock, "igs_025_022", __FILE__) + : device_t(mconfig, IGS025, tag, owner, clock) { m_execute_external = igs025_execute_external(FUNC(igs025_device::no_callback_setup), this); } @@ -352,8 +352,4 @@ void igs025_device::killbld_protection_calculate_hilo() } - - - - -const device_type IGS025 = device_creator; +DEFINE_DEVICE_TYPE(IGS025, igs025_device, "igs025", "IGS025") diff --git a/src/mame/machine/igs025.h b/src/mame/machine/igs025.h index d3dc87f0447..7d58b365b8b 100644 --- a/src/mame/machine/igs025.h +++ b/src/mame/machine/igs025.h @@ -4,6 +4,7 @@ #ifndef MAME_MACHINE_IGS025_H #define MAME_MACHINE_IGS025_H +#pragma once // used to connect the 022 typedef device_delegate igs025_execute_external; @@ -57,6 +58,6 @@ protected: }; -extern const device_type IGS025; +DECLARE_DEVICE_TYPE(IGS025, igs025_device) #endif // MAME_MACHINE_IGS025_H diff --git a/src/mame/machine/igs028.cpp b/src/mame/machine/igs028.cpp index 74205936960..7060d33395f 100644 --- a/src/mame/machine/igs028.cpp +++ b/src/mame/machine/igs028.cpp @@ -12,7 +12,7 @@ igs028_device::igs028_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, IGS028, "IGS028", tag, owner, clock, "igs028", __FILE__) + : device_t(mconfig, IGS028, tag, owner, clock) { } @@ -212,4 +212,4 @@ void igs028_device::IGS028_handle() } -const device_type IGS028 = device_creator; +DEFINE_DEVICE_TYPE(IGS028, igs028_device, "igs028", "IGS028") diff --git a/src/mame/machine/igs028.h b/src/mame/machine/igs028.h index 911781d19ca..287f5671a51 100644 --- a/src/mame/machine/igs028.h +++ b/src/mame/machine/igs028.h @@ -4,6 +4,8 @@ #ifndef MAME_MACHINE_IGS028_H #define MAME_MACHINE_IGS028_H +#pragma once + class igs028_device : public device_t { @@ -25,6 +27,6 @@ protected: }; -extern const device_type IGS028; +DECLARE_DEVICE_TYPE(IGS028, igs028_device) #endif // MAME_MACHINE_IGS028_H diff --git a/src/mame/machine/inder_sb.cpp b/src/mame/machine/inder_sb.cpp index b199717fa76..19087400189 100644 --- a/src/mame/machine/inder_sb.cpp +++ b/src/mame/machine/inder_sb.cpp @@ -10,14 +10,14 @@ #include "speaker.h" -const device_type INDER_AUDIO = device_creator; +DEFINE_DEVICE_TYPE(INDER_AUDIO, inder_sb_device, "indersb", "Inder 4xDAC Sound Board") inder_sb_device::inder_sb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INDER_AUDIO, "Inder 4xDAC Sound Board", tag, owner, clock, "indersb", __FILE__), - device_mixer_interface(mconfig, *this, 2), - m_audiocpu(*this, "audiocpu"), - m_ctc(*this, "ctc") + : device_t(mconfig, INDER_AUDIO, tag, owner, clock) + , device_mixer_interface(mconfig, *this, 2) + , m_audiocpu(*this, "audiocpu") + , m_ctc(*this, "ctc") { } diff --git a/src/mame/machine/inder_sb.h b/src/mame/machine/inder_sb.h index 87bed3d80ea..939e509bbe3 100644 --- a/src/mame/machine/inder_sb.h +++ b/src/mame/machine/inder_sb.h @@ -3,10 +3,10 @@ /* */ -#pragma once +#ifndef MAME_MACHINE_INDER_SB_H +#define MAME_MACHINE_INDER_SB_H -#ifndef __INDER_AUDIO__ -#define __INDER_AUDIO__ +#pragma once #include "cpu/z80/z80.h" #include "machine/z80ctc.h" @@ -14,7 +14,7 @@ #include "sound/dac.h" -extern const device_type INDER_AUDIO; +DECLARE_DEVICE_TYPE(INDER_AUDIO, inder_sb_device) #define MCFG_INDER_AUDIO_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, INDER_AUDIO, 0) @@ -53,12 +53,6 @@ public: DECLARE_READ16_MEMBER(megaphx_0x050002_r); DECLARE_WRITE16_MEMBER(megaphx_0x050000_w); - uint8_t m_soundbank[4]; - - int m_soundsent; - uint8_t m_sounddata; - uint8_t m_soundback; - void install_sound_hacks(void); void update_sound_irqs(void); @@ -68,12 +62,15 @@ protected: virtual void device_reset() override; - int m_soundirq; - private: + uint8_t m_soundbank[4]; + int m_soundsent; + uint8_t m_sounddata; + uint8_t m_soundback; + int m_soundirq; }; -#endif +#endif // MAME_MACHINE_INDER_SB_H diff --git a/src/mame/machine/inder_vid.cpp b/src/mame/machine/inder_vid.cpp index 82568dec121..bc3b7d3d97f 100644 --- a/src/mame/machine/inder_vid.cpp +++ b/src/mame/machine/inder_vid.cpp @@ -11,11 +11,11 @@ #include "screen.h" -const device_type INDER_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(INDER_VIDEO, inder_vid_device, "indervd", "Inder / Dinamic TMS Video") inder_vid_device::inder_vid_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INDER_VIDEO, "Inder / Dinamic TMS Video", tag, owner, clock, "indervd", __FILE__), + : device_t(mconfig, INDER_VIDEO, tag, owner, clock), /* device_video_interface(mconfig, *this, false), */ m_vram(*this, "vram"), m_palette(*this, "palette"), diff --git a/src/mame/machine/inder_vid.h b/src/mame/machine/inder_vid.h index 581ba051228..5bb62591d15 100644 --- a/src/mame/machine/inder_vid.h +++ b/src/mame/machine/inder_vid.h @@ -6,35 +6,30 @@ /* */ -#pragma once +#ifndef MAME_MACHINE_INDER_VID_H +#define MAME_MACHINE_INDER_VID_H -#ifndef __INDER_VIDEO__ -#define __INDER_VIDEO__ +#pragma once #include "video/ramdac.h" #include "cpu/tms34010/tms34010.h" -extern const device_type INDER_VIDEO; +DECLARE_DEVICE_TYPE(INDER_VIDEO, inder_vid_device) #define MCFG_INDER_VIDEO_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, INDER_VIDEO, 0) -class inder_vid_device : public device_t +class inder_vid_device : public device_t /* public device_video_interface */ { public: // construction/destruction inder_vid_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - required_shared_ptr m_vram; - required_device m_palette; - required_device m_tms; - DECLARE_WRITE_LINE_MEMBER(m68k_gen_int); - int m_shiftfull; // this might be a driver specific hack for a TMS bug. TMS340X0_TO_SHIFTREG_CB_MEMBER(to_shiftreg); TMS340X0_FROM_SHIFTREG_CB_MEMBER(from_shiftreg); TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline); @@ -45,6 +40,11 @@ protected: virtual void device_reset() override; private: + required_shared_ptr m_vram; + required_device m_palette; + required_device m_tms; + + int m_shiftfull; // this might be a driver specific hack for a TMS bug. }; -#endif +#endif // MAME_MACHINE_INDER_VID_H diff --git a/src/mame/machine/interpro_ioga.cpp b/src/mame/machine/interpro_ioga.cpp index 32382854df2..90297634e88 100644 --- a/src/mame/machine/interpro_ioga.cpp +++ b/src/mame/machine/interpro_ioga.cpp @@ -63,10 +63,10 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_ioga_device) AM_RANGE(0xb0, 0xbf) AM_READWRITE16(softint_vector_r, softint_vector_w, 0xffffffff) ADDRESS_MAP_END -const device_type INTERPRO_IOGA = device_creator; +DEFINE_DEVICE_TYPE(INTERPRO_IOGA, interpro_ioga_device, "ioga", "InterPro IOGA") interpro_ioga_device::interpro_ioga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INTERPRO_IOGA, "InterPro IOGA", tag, owner, clock, "ioga", __FILE__), + : device_t(mconfig, INTERPRO_IOGA, tag, owner, clock), m_out_nmi_func(*this), m_out_irq_func(*this), m_memory_space(nullptr), diff --git a/src/mame/machine/interpro_ioga.h b/src/mame/machine/interpro_ioga.h index c3973bc295a..f478f70d896 100644 --- a/src/mame/machine/interpro_ioga.h +++ b/src/mame/machine/interpro_ioga.h @@ -272,6 +272,6 @@ private: }; // device type definition -extern const device_type INTERPRO_IOGA; +DECLARE_DEVICE_TYPE(INTERPRO_IOGA, interpro_ioga_device) #endif // MAME_MACHINE_INTERPRO_IOGA_H \ No newline at end of file diff --git a/src/mame/machine/interpro_mcga.cpp b/src/mame/machine/interpro_mcga.cpp index 8d4d6dd4b1a..6aeb2e13a63 100644 --- a/src/mame/machine/interpro_mcga.cpp +++ b/src/mame/machine/interpro_mcga.cpp @@ -44,21 +44,21 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_fmcc_device) AM_RANGE(0x48, 0x4b) AM_READWRITE16(error_control_r, error_control_w, 0xffff) ADDRESS_MAP_END -const device_type INTERPRO_MCGA = device_creator; -const device_type INTERPRO_FMCC = device_creator; +DEFINE_DEVICE_TYPE(INTERPRO_MCGA, interpro_mcga_device, "mcga", "InterPro MCGA") +DEFINE_DEVICE_TYPE(INTERPRO_FMCC, interpro_fmcc_device, "fmcc", "InterPro FMCC") -interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) { } interpro_mcga_device::interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : interpro_mcga_device(mconfig, INTERPRO_MCGA, "InterPro MCGA", tag, owner, clock, "mcga", __FILE__) + : interpro_mcga_device(mconfig, INTERPRO_MCGA, tag, owner, clock) { } interpro_fmcc_device::interpro_fmcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : interpro_mcga_device(mconfig, INTERPRO_FMCC, "InterPro FMCC", tag, owner, clock, "fmcc", __FILE__) + : interpro_mcga_device(mconfig, INTERPRO_FMCC, tag, owner, clock) { } diff --git a/src/mame/machine/interpro_mcga.h b/src/mame/machine/interpro_mcga.h index 7b57963e5ba..67efb168801 100644 --- a/src/mame/machine/interpro_mcga.h +++ b/src/mame/machine/interpro_mcga.h @@ -26,7 +26,6 @@ class interpro_mcga_device : public device_t { public: - interpro_mcga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); interpro_mcga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual DECLARE_ADDRESS_MAP(map, 32); @@ -49,6 +48,8 @@ public: DECLARE_WRITE16_MEMBER(memsize_w) { m_memsize = data; } protected: + interpro_mcga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual void device_reset() override; @@ -78,7 +79,7 @@ private: }; // device type definition -extern const device_type INTERPRO_MCGA; -extern const device_type INTERPRO_FMCC; +DECLARE_DEVICE_TYPE(INTERPRO_MCGA, interpro_mcga_device) +DECLARE_DEVICE_TYPE(INTERPRO_FMCC, interpro_fmcc_device) -#endif // MAME_MACHINE_INTERPRO_MCGA_H \ No newline at end of file +#endif // MAME_MACHINE_INTERPRO_MCGA_H diff --git a/src/mame/machine/interpro_sga.cpp b/src/mame/machine/interpro_sga.cpp index 89b86a2305e..d38a3702b16 100644 --- a/src/mame/machine/interpro_sga.cpp +++ b/src/mame/machine/interpro_sga.cpp @@ -62,10 +62,10 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_sga_device) AM_RANGE(0xec, 0xef) AM_READWRITE(dcksum1_r, dcksum1_w) // dma 1 device checksum register 1 (esga) ADDRESS_MAP_END -const device_type INTERPRO_SGA = device_creator; +DEFINE_DEVICE_TYPE(INTERPRO_SGA, interpro_sga_device, "sga", "InterPro SGA") interpro_sga_device::interpro_sga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INTERPRO_SGA, "InterPro SGA", tag, owner, clock, "sga", __FILE__), + : device_t(mconfig, INTERPRO_SGA, tag, owner, clock), out_berr_func(*this) { } diff --git a/src/mame/machine/interpro_sga.h b/src/mame/machine/interpro_sga.h index 996faf534c7..4232a436fa1 100644 --- a/src/mame/machine/interpro_sga.h +++ b/src/mame/machine/interpro_sga.h @@ -150,6 +150,6 @@ private: }; // device type definition -extern const device_type INTERPRO_SGA; +DECLARE_DEVICE_TYPE(INTERPRO_SGA, interpro_sga_device) #endif // MAME_MACHINE_INTERPRO_SGA_H diff --git a/src/mame/machine/interpro_srarb.cpp b/src/mame/machine/interpro_srarb.cpp index 5e5b40d6db1..d87fa81f397 100644 --- a/src/mame/machine/interpro_srarb.cpp +++ b/src/mame/machine/interpro_srarb.cpp @@ -30,10 +30,10 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_srarb_device) AM_RANGE(0x2c, 0x2f) AM_READWRITE(tmscale_r, tmscale_w) ADDRESS_MAP_END -const device_type INTERPRO_SRARB = device_creator; +DEFINE_DEVICE_TYPE(INTERPRO_SRARB, interpro_srarb_device, "srarb", "InterPro SRARB") interpro_srarb_device::interpro_srarb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INTERPRO_SRARB, "InterPro SRARB", tag, owner, clock, "srarb", __FILE__) + : device_t(mconfig, INTERPRO_SRARB, tag, owner, clock) { } diff --git a/src/mame/machine/intv.cpp b/src/mame/machine/intv.cpp index ddaa99975ec..3f9654426a3 100644 --- a/src/mame/machine/intv.cpp +++ b/src/mame/machine/intv.cpp @@ -217,8 +217,8 @@ WRITE8_MEMBER( intv_state::intvkbd_io_w ) // If write mode: // 0=Write Channel B data, 1 = Record Channel B Audio tape_drive.channel_select = (data & 1); - case 0x027: break; + case 0x027: // "Tape Drive Control: Erase" tape_drive.erase = (data & 1); break; @@ -557,7 +557,7 @@ void intv_state::machine_reset() m_maincpu->set_input_line_vector(CP1610_INT_INTR, 0x1004); /* Set initial PC */ - m_maincpu->set_state_int(CP1610_R7, 0x1000); + m_maincpu->set_state_int(cp1610_cpu_device::CP1610_R7, 0x1000); if (m_is_keybd) { @@ -581,7 +581,7 @@ void intv_state::machine_start() for (int i = 0; i < 10; i++) { char str[5]; - sprintf(str, "ROW%i", i); + sprintf(str, "ROW%X", uint8_t(i)); m_intv_keyboard[i] = ioport(str); } @@ -646,8 +646,8 @@ TIMER_CALLBACK_MEMBER(intv_state::intv_btb_fill) uint8_t row = m_backtab_row; //m_maincpu->adjust_icount(-STIC_ROW_FETCH); - for (int column = 0; column < STIC_BACKTAB_WIDTH; column++) - m_stic->write_to_btb(row, column, m_ram16[column + row * STIC_BACKTAB_WIDTH]); + for (int column = 0; column < stic_device::BACKTAB_WIDTH; column++) + m_stic->write_to_btb(row, column, m_ram16[column + row * stic_device::BACKTAB_WIDTH]); m_backtab_row += 1; } @@ -660,16 +660,16 @@ INTERRUPT_GEN_MEMBER(intv_state::intv_interrupt) m_bus_copy_mode = 1; m_backtab_row = 0; - m_maincpu->adjust_icount(-(12*STIC_ROW_BUSRQ+STIC_FRAME_BUSRQ)); // Account for stic cycle stealing - timer_set(m_maincpu->cycles_to_attotime(STIC_VBLANK_END), TIMER_INTV_INTERRUPT_COMPLETE); - for (int row = 0; row < STIC_BACKTAB_HEIGHT; row++) + m_maincpu->adjust_icount(-(12*stic_device::ROW_BUSRQ+stic_device::FRAME_BUSRQ)); // Account for stic cycle stealing + timer_set(m_maincpu->cycles_to_attotime(stic_device::VBLANK_END), TIMER_INTV_INTERRUPT_COMPLETE); + for (int row = 0; row < stic_device::BACKTAB_HEIGHT; row++) { - timer_set(m_maincpu->cycles_to_attotime(STIC_FIRST_FETCH-STIC_FRAME_BUSRQ+STIC_CYCLES_PER_SCANLINE*STIC_Y_SCALE*delay + (STIC_CYCLES_PER_SCANLINE*STIC_Y_SCALE*STIC_CARD_HEIGHT - STIC_ROW_BUSRQ)*row), TIMER_INTV_BTB_FILL); + timer_set(m_maincpu->cycles_to_attotime(stic_device::FIRST_FETCH-stic_device::FRAME_BUSRQ+stic_device::CYCLES_PER_SCANLINE*stic_device::Y_SCALE*delay + (stic_device::CYCLES_PER_SCANLINE*stic_device::Y_SCALE*stic_device::CARD_HEIGHT - stic_device::ROW_BUSRQ)*row), TIMER_INTV_BTB_FILL); } if (delay == 0) { - m_maincpu->adjust_icount(-STIC_ROW_BUSRQ); // extra row fetch occurs if vertical delay == 0 + m_maincpu->adjust_icount(-stic_device::ROW_BUSRQ); // extra row fetch occurs if vertical delay == 0 } m_stic->screenrefresh(); diff --git a/src/mame/machine/isbc_208.cpp b/src/mame/machine/isbc_208.cpp index df2562bd1f3..f7f21f80c9f 100644 --- a/src/mame/machine/isbc_208.cpp +++ b/src/mame/machine/isbc_208.cpp @@ -6,10 +6,13 @@ #include "emu.h" #include "isbc_208.h" -const device_type ISBC_208 = device_creator; +#include "formats/pc_dsk.h" + + +DEFINE_DEVICE_TYPE(ISBC_208, isbc_208_device, "isbc_208", "ISBC 208 Flexible Disk Driver Controller") isbc_208_device::isbc_208_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, ISBC_208, "ISBC 208 Flexible Disk Drive Controller", tag, owner, clock, "isbc_208", __FILE__), + device_t(mconfig, ISBC_208, tag, owner, clock), m_dmac(*this, "dmac"), m_fdc(*this, "fdc"), m_out_irq_func(*this) diff --git a/src/mame/machine/isbc_208.h b/src/mame/machine/isbc_208.h index 691266e0a67..0611cbe0007 100644 --- a/src/mame/machine/isbc_208.h +++ b/src/mame/machine/isbc_208.h @@ -1,10 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Carl -#ifndef ISBC_208_H_ -#define ISBC_208_H_ +#ifndef MAME_MACHINE_ISBC_208_H +#define MAME_MACHINE_ISBC_208_H + +#pragma once -#include "formats/pc_dsk.h" #include "machine/upd765.h" #include "machine/am9517a.h" @@ -24,7 +25,7 @@ public: DECLARE_WRITE_LINE_MEMBER(irq_w); DECLARE_FLOPPY_FORMATS( floppy_formats ); - template static devcb_base &static_set_irq_callback(device_t &device, _Object object) { return downcast(device).m_out_irq_func.set_callback(object); } + template static devcb_base &static_set_irq_callback(device_t &device, Object &&cb) { return downcast(device).m_out_irq_func.set_callback(std::forward(cb)); } static void static_set_maincpu_tag(device_t &device, const char *maincpu_tag) { downcast(device).m_maincpu_tag = maincpu_tag; } protected: @@ -47,6 +48,6 @@ private: #define MCFG_ISBC_208_IRQ(_irq_line) \ devcb = &isbc_208_device::static_set_irq_callback(*device, DEVCB_##_irq_line); -extern const device_type ISBC_208; +DECLARE_DEVICE_TYPE(ISBC_208, isbc_208_device) -#endif /* ISBC_208_H_ */ +#endif // MAME_MACHINE_ISBC_208_H diff --git a/src/mame/machine/isbc_215g.cpp b/src/mame/machine/isbc_215g.cpp index a142ff9819b..8d69ad6b53f 100644 --- a/src/mame/machine/isbc_215g.cpp +++ b/src/mame/machine/isbc_215g.cpp @@ -9,10 +9,10 @@ #include "emu.h" #include "isbc_215g.h" -const device_type ISBC_215G = device_creator; +DEFINE_DEVICE_TYPE(ISBC_215G, isbc_215g_device, "isbc_215g", "ISBC 215G Winchester Disk Controller") isbc_215g_device::isbc_215g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, ISBC_215G, "ISBC 215G Winchester Disk Controller", tag, owner, clock, "isbc_215g", __FILE__), + device_t(mconfig, ISBC_215G, tag, owner, clock), m_dmac(*this, "u84"), m_hdd0(*this, "drive0"), m_hdd1(*this, "drive1"), diff --git a/src/mame/machine/isbc_215g.h b/src/mame/machine/isbc_215g.h index 3b13ee4326c..70695e91990 100644 --- a/src/mame/machine/isbc_215g.h +++ b/src/mame/machine/isbc_215g.h @@ -1,8 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Carl -#ifndef ISBC_215G_H_ -#define ISBC_215G_H_ +#ifndef MAME_MACHINE_ISBC_215G_H +#define MAME_MACHINE_ISBC_215G_H + +#pragma once #include "cpu/i8089/i8089.h" #include "bus/isbx/isbx.h" @@ -71,6 +73,6 @@ private: #define MCFG_ISBC_215_IRQ(_irq_line) \ devcb = &isbc_215g_device::static_set_irq_callback(*device, DEVCB_##_irq_line); -extern const device_type ISBC_215G; +DECLARE_DEVICE_TYPE(ISBC_215G, isbc_215g_device) -#endif /* ISBC_215G_H_ */ +#endif // MAME_MACHINE_ISBC_215G_H diff --git a/src/mame/machine/iteagle_fpga.cpp b/src/mame/machine/iteagle_fpga.cpp index 9597d32851f..416ea1cfc90 100644 --- a/src/mame/machine/iteagle_fpga.cpp +++ b/src/mame/machine/iteagle_fpga.cpp @@ -15,26 +15,26 @@ #define COM1_TAG "com1" #define COM2_TAG "com2" -const device_type ITEAGLE_FPGA = device_creator; +DEFINE_DEVICE_TYPE(ITEAGLE_FPGA, iteagle_fpga_device, "iteagle_fpga", "ITEagle FPGA") MACHINE_CONFIG_FRAGMENT(iteagle_fpga) MCFG_NVRAM_ADD_0FILL("eagle2_rtc") // RS232 serial ports - //MCFG_SCC85C30_ADD(AM85C30_TAG, XTAL_7_3728MHz, XTAL_1_8432MHz, 0, XTAL_1_8432MHz, 0) - MCFG_SCC85C30_ADD(AM85C30_TAG, XTAL_1_8432MHz, XTAL_1_8432MHz, 0, XTAL_1_8432MHz, 0) + // The console terminal (com1) operates at 38400 baud + MCFG_SCC85C30_ADD(AM85C30_TAG, XTAL_7_3728MHz, XTAL_7_3728MHz, 0, XTAL_7_3728MHz, 0) MCFG_Z80SCC_OUT_INT_CB(WRITELINE(iteagle_fpga_device, serial_interrupt)) MCFG_Z80SCC_OUT_TXDA_CB(DEVWRITELINE(COM2_TAG, rs232_port_device, write_txd)) MCFG_Z80SCC_OUT_TXDB_CB(DEVWRITELINE(COM1_TAG, rs232_port_device, write_txd)) MCFG_RS232_PORT_ADD(COM1_TAG, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85C30_device, rxb_w)) - MCFG_RS232_DCD_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85C30_device, dcdb_w)) - MCFG_RS232_CTS_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85C30_device, ctsb_w)) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85c30_device, rxb_w)) + MCFG_RS232_DCD_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85c30_device, dcdb_w)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85c30_device, ctsb_w)) MCFG_RS232_PORT_ADD(COM2_TAG, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85C30_device, rxa_w)) - MCFG_RS232_DCD_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85C30_device, dcda_w)) - MCFG_RS232_CTS_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85C30_device, ctsa_w)) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85c30_device, rxa_w)) + MCFG_RS232_DCD_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85c30_device, dcda_w)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE(AM85C30_TAG, scc85c30_device, ctsa_w)) MACHINE_CONFIG_END DEVICE_ADDRESS_MAP_START(fpga_map, 32, iteagle_fpga_device) @@ -50,7 +50,7 @@ DEVICE_ADDRESS_MAP_START(ram_map, 32, iteagle_fpga_device) ADDRESS_MAP_END iteagle_fpga_device::iteagle_fpga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pci_device(mconfig, ITEAGLE_FPGA, "ITEagle FPGA", tag, owner, clock, "iteagle_fpga", __FILE__), + : pci_device(mconfig, ITEAGLE_FPGA, tag, owner, clock), m_rtc(*this, "eagle2_rtc"), m_scc1(*this, AM85C30_TAG), m_version(0), m_seq_init(0) { } @@ -93,6 +93,16 @@ void iteagle_fpga_device::device_start() m_ram[0x0c/4] = 0x00000001; m_ram[0x10/4] = 0x00000018; + // Save states + save_item(NAME(m_fpga_regs)); + save_item(NAME(m_rtc_regs)); + save_item(NAME(m_ram)); + save_item(NAME(m_prev_reg)); + // m_version + save_item(NAME(m_seq_init)); + save_item(NAME(m_seq)); + save_item(NAME(m_seq_rem1)); + save_item(NAME(m_seq_rem2)); } void iteagle_fpga_device::device_reset() @@ -241,6 +251,10 @@ READ32_MEMBER( iteagle_fpga_device::fpga_r ) break; case 0x0c/4: // result = 0; + // Need to eat some CPU cycles otherwise the CPU times out waiting for tx uart buffer empty + if (ACCESSING_BITS_0_15) { + m_cpu->eat_cycles(40); + } if (ACCESSING_BITS_0_7) { result |= m_scc1->cb_r(space, offset) << 0; if (LOG_SERIAL) m_serial0_1.read_control(1); @@ -595,7 +609,7 @@ WRITE32_MEMBER( iteagle_fpga_device::ram_w ) // Attached serial EEPROM //************************************ -const device_type ITEAGLE_EEPROM = device_creator; +DEFINE_DEVICE_TYPE(ITEAGLE_EEPROM, iteagle_eeprom_device, "iteagle_eeprom", "ITEagle EEPROM AT93C46") DEVICE_ADDRESS_MAP_START(eeprom_map, 32, iteagle_eeprom_device) AM_RANGE(0x0000, 0x000F) AM_READWRITE(eeprom_r, eeprom_w) @@ -611,7 +625,7 @@ machine_config_constructor iteagle_eeprom_device::device_mconfig_additions() con } iteagle_eeprom_device::iteagle_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pci_device(mconfig, ITEAGLE_EEPROM, "ITEagle EEPROM AT93C46", tag, owner, clock, "eeprom", __FILE__), + : pci_device(mconfig, ITEAGLE_EEPROM, tag, owner, clock), m_eeprom(*this, "eeprom"), m_sw_version(0), m_hw_version(0) { // When corrupt writes 0x3=2, 0x3e=2, 0xa=0, 0x30=0 @@ -729,14 +743,14 @@ machine_config_constructor iteagle_periph_device::device_mconfig_additions() con return MACHINE_CONFIG_NAME(eagle1); } -const device_type ITEAGLE_PERIPH = device_creator; +DEFINE_DEVICE_TYPE(ITEAGLE_PERIPH, iteagle_periph_device, "iteagle_periph", "ITEagle Peripheral Controller") DEVICE_ADDRESS_MAP_START(ctrl_map, 32, iteagle_periph_device) AM_RANGE(0x000, 0x0cf) AM_READWRITE(ctrl_r, ctrl_w) ADDRESS_MAP_END iteagle_periph_device::iteagle_periph_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pci_device(mconfig, ITEAGLE_PERIPH, "ITEagle Peripheral Controller", tag, owner, clock, "periph", __FILE__), + : pci_device(mconfig, ITEAGLE_PERIPH, tag, owner, clock), m_rtc(*this, "eagle1_rtc") { } @@ -752,6 +766,9 @@ void iteagle_periph_device::device_start() m_rtc_regs[0xa] = 0x20; // 32.768 MHz m_rtc_regs[0xb] = 0x02; // 24-hour format m_rtc->set_base(m_rtc_regs, sizeof(m_rtc_regs)); + + // Save states + save_item(NAME(m_ctrl_regs)); } void iteagle_periph_device::device_reset() diff --git a/src/mame/machine/iteagle_fpga.h b/src/mame/machine/iteagle_fpga.h index f0cef354373..7ed878c58ba 100644 --- a/src/mame/machine/iteagle_fpga.h +++ b/src/mame/machine/iteagle_fpga.h @@ -3,8 +3,8 @@ //************************************* // iteagle fpga device //************************************* -#ifndef ITEAGLE_FPGA_H -#define ITEAGLE_FPGA_H +#ifndef MAME_MACHINE_ITEAGLE_FPGA_H +#define MAME_MACHINE_ITEAGLE_FPGA_H #include "machine/pci.h" #include "machine/nvram.h" @@ -59,7 +59,7 @@ public: virtual machine_config_constructor device_mconfig_additions() const override; required_device m_rtc; - required_device m_scc1; + required_device m_scc1; void set_init_info(int version, int seq_init) {m_version=version; m_seq_init=seq_init;} void set_irq_info(const char *tag, const int irq_num, const int serial_num) { @@ -158,8 +158,8 @@ private: }; -extern const device_type ITEAGLE_FPGA; -extern const device_type ITEAGLE_EEPROM; -extern const device_type ITEAGLE_PERIPH; +DECLARE_DEVICE_TYPE(ITEAGLE_FPGA, iteagle_fpga_device) +DECLARE_DEVICE_TYPE(ITEAGLE_EEPROM, iteagle_eeprom_device) +DECLARE_DEVICE_TYPE(ITEAGLE_PERIPH, iteagle_periph_device) -#endif +#endif // MAME_MACHINE_ITEAGLE_FPGA_H diff --git a/src/mame/machine/jvs13551.cpp b/src/mame/machine/jvs13551.cpp index 5c9782524d7..586626a0376 100644 --- a/src/mame/machine/jvs13551.cpp +++ b/src/mame/machine/jvs13551.cpp @@ -3,15 +3,17 @@ #include "emu.h" #include "jvs13551.h" -const device_type SEGA_837_13551 = device_creator; +#include "cpu/tlcs90/tlcs90.h" -WRITE_LINE_MEMBER(sega_837_13551::jvs13551_coin_1_w) +DEFINE_DEVICE_TYPE(SEGA_837_13551, sega_837_13551_device, "jvs13551", "Sega 837-13551 I/O Board") + +WRITE_LINE_MEMBER(sega_837_13551_device::jvs13551_coin_1_w) { if(state) inc_coin(0); } -WRITE_LINE_MEMBER(sega_837_13551::jvs13551_coin_2_w) +WRITE_LINE_MEMBER(sega_837_13551_device::jvs13551_coin_2_w) { if(state) inc_coin(1); @@ -19,65 +21,74 @@ WRITE_LINE_MEMBER(sega_837_13551::jvs13551_coin_2_w) static INPUT_PORTS_START(sega_837_13551_coins) PORT_START("COINS") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, sega_837_13551, jvs13551_coin_1_w) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_COIN2) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, sega_837_13551, jvs13551_coin_2_w) + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, sega_837_13551_device, jvs13551_coin_1_w) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_COIN2) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, sega_837_13551_device, jvs13551_coin_2_w) INPUT_PORTS_END +MACHINE_CONFIG_FRAGMENT(sega_837_13551) + MCFG_CPU_ADD("iomcu", TMP90PH44, 10000000) // unknown clock +MACHINE_CONFIG_END + ROM_START( jvs13551 ) // TMP90PH44N firmwares - ROM_REGION( 0x8000, "jvs13551", ROMREGION_ERASE ) + ROM_REGION( 0x4000, "iomcu", ROMREGION_ERASE ) // Sega 838-13683-93 - ROM_LOAD( "sp5001.bin", 0x0000, 0x8000, CRC(2f17e21a) SHA1(ac227ef3ca52ef17321bd60e435dba147645d8b8)) + ROM_LOAD( "sp5001.bin", 0x0000, 0x4000, CRC(3456c8cc) SHA1(f3b66ab1d2eab32e97b46077e3ed2ab5b2982325)) // Sega 838-13683-93 Rev.B - ROM_LOAD( "sp5001-b.bin", 0x0000, 0x8000, CRC(121693cd) SHA1(c9834aca671aff5e283ac708788c2a0f4a5bdecc)) + ROM_LOAD( "sp5001-b.bin", 0x0000, 0x4000, CRC(28b5fb84) SHA1(8784024548d24b6a43057f06de1d53ce3a34eb12)) // Sega 838-13683-02 - ROM_LOAD( "sp5002-a.bin", 0x0000, 0x8000, CRC(a088df8c) SHA1(8237e9b18b8367d3f5b99b8f29c528a55c2e0fbf)) + ROM_LOAD( "sp5002-a.bin", 0x0000, 0x4000, CRC(72983a0f) SHA1(aa13276347bc643ef93e81e9ab7c905deb16c415)) // Sega 837-13551-92 0007 Type1 - ROM_LOAD( "315-6215.bin", 0x0000, 0x8000, CRC(d7c97e40) SHA1(b1ae8db332f869c4fdbbae15967baeca0bc7f57d)) + ROM_LOAD( "315-6215.bin", 0x0000, 0x4000, CRC(98202738) SHA1(8c4dc85438298e31e25f69542804a78ff0e20962)) ROM_END -const tiny_rom_entry *sega_837_13551::device_rom_region() const +const tiny_rom_entry *sega_837_13551_device::device_rom_region() const { return ROM_NAME(jvs13551); } -void sega_837_13551::static_set_port_tag(device_t &device, int port, const char *tag) +void sega_837_13551_device::static_set_port_tag(device_t &device, int port, const char *tag) { - sega_837_13551 &ctrl = downcast(device); + sega_837_13551_device &ctrl = downcast(device); ctrl.port_tag[port] = tag; } -ioport_constructor sega_837_13551::device_input_ports() const +machine_config_constructor sega_837_13551_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME(sega_837_13551); +} + +ioport_constructor sega_837_13551_device::device_input_ports() const { return INPUT_PORTS_NAME(sega_837_13551_coins); } -sega_837_13551::sega_837_13551(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : jvs_device(mconfig, SEGA_837_13551, "Sega 837-13551 I/O Board", tag, owner, clock, "jvs13551", __FILE__) +sega_837_13551_device::sega_837_13551_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : jvs_device(mconfig, SEGA_837_13551, tag, owner, clock) { memset(port_tag, 0, sizeof(port_tag)); } -const char *sega_837_13551::device_id() +const char *sega_837_13551_device::device_id() { return "SEGA ENTERPRISES,LTD.;I/O BD JVS;837-13551"; } -uint8_t sega_837_13551::command_format_version() +uint8_t sega_837_13551_device::command_format_version() { return 0x11; } -uint8_t sega_837_13551::jvs_standard_version() +uint8_t sega_837_13551_device::jvs_standard_version() { return 0x20; } -uint8_t sega_837_13551::comm_method_version() +uint8_t sega_837_13551_device::comm_method_version() { return 0x10; } -void sega_837_13551::device_start() +void sega_837_13551_device::device_start() { jvs_device::device_start(); for (int i = 0; i < ARRAY_LENGTH(port_tag); i++) @@ -87,14 +98,14 @@ void sega_837_13551::device_start() save_item(NAME(coin_counter)); } -void sega_837_13551::device_reset() +void sega_837_13551_device::device_reset() { jvs_device::device_reset(); coin_counter[0] = 0; coin_counter[1] = 0; } -void sega_837_13551::inc_coin(int coin) +void sega_837_13551_device::inc_coin(int coin) { coin_counter[coin]++; if(coin_counter[coin] == 16384) @@ -102,7 +113,7 @@ void sega_837_13551::inc_coin(int coin) } -void sega_837_13551::function_list(uint8_t *&buf) +void sega_837_13551_device::function_list(uint8_t *&buf) { // SW input - 2 players, 13 bits *buf++ = 0x01; *buf++ = 2; *buf++ = 13; *buf++ = 0; @@ -117,7 +128,7 @@ void sega_837_13551::function_list(uint8_t *&buf) *buf++ = 0x12; *buf++ = 6; *buf++ = 0; *buf++ = 0; } -bool sega_837_13551::coin_counters(uint8_t *&buf, uint8_t count) +bool sega_837_13551_device::coin_counters(uint8_t *&buf, uint8_t count) { if(count > 2) return false; @@ -131,7 +142,7 @@ bool sega_837_13551::coin_counters(uint8_t *&buf, uint8_t count) return true; } -bool sega_837_13551::coin_add(uint8_t slot, int32_t count) +bool sega_837_13551_device::coin_add(uint8_t slot, int32_t count) { if(slot < 1 || slot > 2) return false; @@ -141,7 +152,7 @@ bool sega_837_13551::coin_add(uint8_t slot, int32_t count) return true; } -bool sega_837_13551::switches(uint8_t *&buf, uint8_t count_players, uint8_t bytes_per_switch) +bool sega_837_13551_device::switches(uint8_t *&buf, uint8_t count_players, uint8_t bytes_per_switch) { if(count_players > 2 || bytes_per_switch > 2) return false; @@ -156,7 +167,7 @@ bool sega_837_13551::switches(uint8_t *&buf, uint8_t count_players, uint8_t byte } -bool sega_837_13551::analogs(uint8_t *&buf, uint8_t count) +bool sega_837_13551_device::analogs(uint8_t *&buf, uint8_t count) { if(count > 8) return false; @@ -168,7 +179,7 @@ bool sega_837_13551::analogs(uint8_t *&buf, uint8_t count) return true; } -bool sega_837_13551::swoutputs(uint8_t count, const uint8_t *vals) +bool sega_837_13551_device::swoutputs(uint8_t count, const uint8_t *vals) { // WARNING! JVS standard have reversed bits count order // so "board have 6 output bits" means 6 MSB bits is used, the same rules for input too @@ -183,7 +194,7 @@ bool sega_837_13551::swoutputs(uint8_t count, const uint8_t *vals) return true; } -bool sega_837_13551::swoutputs(uint8_t id, uint8_t val) +bool sega_837_13551_device::swoutputs(uint8_t id, uint8_t val) { if(id > 6) return false; diff --git a/src/mame/machine/jvs13551.h b/src/mame/machine/jvs13551.h index 7a55a29f0d3..eccf1dd4b2f 100644 --- a/src/mame/machine/jvs13551.h +++ b/src/mame/machine/jvs13551.h @@ -1,31 +1,33 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef __JVS13551_H__ -#define __JVS13551_H__ +#ifndef MAME_MACHINE_JVS13551_H +#define MAME_MACHINE_JVS13551_H + +#pragma once #include "machine/jvsdev.h" #define MCFG_SEGA_837_13551_DEVICE_ADD(_tag, _host, tilt, d0, d1, a0, a1, a2, a3, a4, a5, a6, a7, out) \ MCFG_JVS_DEVICE_ADD(_tag, SEGA_837_13551, _host) \ - sega_837_13551::static_set_port_tag(*device, 0, tilt); \ - sega_837_13551::static_set_port_tag(*device, 1, d0); \ - sega_837_13551::static_set_port_tag(*device, 2, d1); \ - sega_837_13551::static_set_port_tag(*device, 3, a0); \ - sega_837_13551::static_set_port_tag(*device, 4, a1); \ - sega_837_13551::static_set_port_tag(*device, 5, a2); \ - sega_837_13551::static_set_port_tag(*device, 6, a3); \ - sega_837_13551::static_set_port_tag(*device, 7, a4); \ - sega_837_13551::static_set_port_tag(*device, 8, a5); \ - sega_837_13551::static_set_port_tag(*device, 9, a6); \ - sega_837_13551::static_set_port_tag(*device, 10, a7); \ - sega_837_13551::static_set_port_tag(*device, 11, out); + sega_837_13551_device::static_set_port_tag(*device, 0, tilt); \ + sega_837_13551_device::static_set_port_tag(*device, 1, d0); \ + sega_837_13551_device::static_set_port_tag(*device, 2, d1); \ + sega_837_13551_device::static_set_port_tag(*device, 3, a0); \ + sega_837_13551_device::static_set_port_tag(*device, 4, a1); \ + sega_837_13551_device::static_set_port_tag(*device, 5, a2); \ + sega_837_13551_device::static_set_port_tag(*device, 6, a3); \ + sega_837_13551_device::static_set_port_tag(*device, 7, a4); \ + sega_837_13551_device::static_set_port_tag(*device, 8, a5); \ + sega_837_13551_device::static_set_port_tag(*device, 9, a6); \ + sega_837_13551_device::static_set_port_tag(*device, 10, a7); \ + sega_837_13551_device::static_set_port_tag(*device, 11, out); class jvs_host; -class sega_837_13551 : public jvs_device +class sega_837_13551_device : public jvs_device { public: - sega_837_13551(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + sega_837_13551_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void static_set_port_tag(device_t &device, int port, const char *tag); virtual const tiny_rom_entry *device_rom_region() const override; @@ -38,6 +40,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; // JVS device overrides @@ -60,5 +63,6 @@ private: }; extern const device_type SEGA_837_13551; +DECLARE_DEVICE_TYPE(SEGA_837_13551, sega_837_13551_device) -#endif +#endif // MAME_MACHINE_JVS13551_H diff --git a/src/mame/machine/k573cass.cpp b/src/mame/machine/k573cass.cpp index e2dfa9a2edd..e0ad9e5f590 100644 --- a/src/mame/machine/k573cass.cpp +++ b/src/mame/machine/k573cass.cpp @@ -62,17 +62,15 @@ READ_LINE_MEMBER(konami573_cassette_interface::read_line_adc083x_sars) } -const device_type KONAMI573_CASSETTE_X = device_creator; +DEFINE_DEVICE_TYPE(KONAMI573_CASSETTE_X, konami573_cassette_x_device, "k573cassx", "Konami 573 Cassette X") konami573_cassette_x_device::konami573_cassette_x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, KONAMI573_CASSETTE_X, "Konami 573 Cassette X", tag, owner, clock, "k573cassx", __FILE__), - konami573_cassette_interface(mconfig, *this), - m_x76f041(*this, "eeprom") + konami573_cassette_x_device(mconfig, KONAMI573_CASSETTE_X, tag, owner, clock) { } -konami573_cassette_x_device::konami573_cassette_x_device(const machine_config &mconfig, const device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), +konami573_cassette_x_device::konami573_cassette_x_device(const machine_config &mconfig, const device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), konami573_cassette_interface(mconfig, *this), m_x76f041(*this, "eeprom") { @@ -118,10 +116,10 @@ READ_LINE_MEMBER(konami573_cassette_x_device::read_line_secflash_sda) } -const device_type KONAMI573_CASSETTE_XI = device_creator; +DEFINE_DEVICE_TYPE(KONAMI573_CASSETTE_XI, konami573_cassette_xi_device, "k573cassxi", "Konami 573 Cassette XI") konami573_cassette_xi_device::konami573_cassette_xi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - konami573_cassette_x_device(mconfig, KONAMI573_CASSETTE_XI, "Konami 573 Cassette XI", tag, owner, clock, "k573cassxi", __FILE__), + konami573_cassette_x_device(mconfig, KONAMI573_CASSETTE_XI, tag, owner, clock), m_ds2401(*this, "id"), m_adc0838(*this, "adc0838") { @@ -178,25 +176,15 @@ READ_LINE_MEMBER(konami573_cassette_xi_device::read_line_adc083x_sars) } -const device_type KONAMI573_CASSETTE_Y = device_creator; +DEFINE_DEVICE_TYPE(KONAMI573_CASSETTE_Y, konami573_cassette_y_device, "k573cassy", "Konami 573 Cassette Y") konami573_cassette_y_device::konami573_cassette_y_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, KONAMI573_CASSETTE_Y, "Konami 573 Cassette Y", tag, owner, clock, "k573cassy", __FILE__), - konami573_cassette_interface(mconfig, *this), - m_x76f100(*this, "eeprom"), - m_d0_handler(*this), - m_d1_handler(*this), - m_d2_handler(*this), - m_d3_handler(*this), - m_d4_handler(*this), - m_d5_handler(*this), - m_d6_handler(*this), - m_d7_handler(*this) + konami573_cassette_y_device(mconfig, KONAMI573_CASSETTE_Y, tag, owner, clock) { } -konami573_cassette_y_device::konami573_cassette_y_device(const machine_config &mconfig, const device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), +konami573_cassette_y_device::konami573_cassette_y_device(const machine_config &mconfig, const device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), konami573_cassette_interface(mconfig, *this), m_x76f100(*this, "eeprom"), m_d0_handler(*this), @@ -283,10 +271,10 @@ WRITE_LINE_MEMBER(konami573_cassette_y_device::write_line_d7) } -const device_type KONAMI573_CASSETTE_YI = device_creator; +DEFINE_DEVICE_TYPE(KONAMI573_CASSETTE_YI, konami573_cassette_yi_device, "k573cassyi", "Konami 573 Cassette YI") konami573_cassette_yi_device::konami573_cassette_yi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - konami573_cassette_y_device(mconfig, KONAMI573_CASSETTE_YI, "Konami 573 Cassette YI", tag, owner, clock, "k573cassyi", __FILE__), + konami573_cassette_y_device(mconfig, KONAMI573_CASSETTE_YI, tag, owner, clock), m_ds2401(*this, "id") { } @@ -314,10 +302,10 @@ READ_LINE_MEMBER(konami573_cassette_yi_device::read_line_ds2401) } -const device_type KONAMI573_CASSETTE_ZI = device_creator; +DEFINE_DEVICE_TYPE(KONAMI573_CASSETTE_ZI, konami573_cassette_zi_device, "k573casszi", "Konami 573 Cassette ZI") konami573_cassette_zi_device::konami573_cassette_zi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, KONAMI573_CASSETTE_ZI, "Konami 573 Cassette ZI", tag, owner, clock, "k573casszi", __FILE__), + device_t(mconfig, KONAMI573_CASSETTE_ZI, tag, owner, clock), konami573_cassette_interface(mconfig, *this), m_zs01(*this,"eeprom"), m_ds2401(*this, "id") @@ -376,10 +364,10 @@ READ_LINE_MEMBER(konami573_cassette_zi_device::read_line_secflash_sda) } -const device_type KONAMI573_CASSETTE_SLOT = device_creator; +DEFINE_DEVICE_TYPE(KONAMI573_CASSETTE_SLOT, konami573_cassette_slot_device, "k572cassslot", "Konami 573 Cassette Slot") konami573_cassette_slot_device::konami573_cassette_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, KONAMI573_CASSETTE_SLOT, "Konami 573 Cassette Slot", tag, owner, clock, "k573cassslot", __FILE__), + device_t(mconfig, KONAMI573_CASSETTE_SLOT, tag, owner, clock), device_slot_interface(mconfig, *this), m_dsr_handler(*this) { diff --git a/src/mame/machine/k573cass.h b/src/mame/machine/k573cass.h index ee5057746cc..442ec5d2d86 100644 --- a/src/mame/machine/k573cass.h +++ b/src/mame/machine/k573cass.h @@ -4,11 +4,11 @@ * Konami 573 Security Cassette * */ +#ifndef MAME_MACHINE_K573CASS_H +#define MAME_MACHINE_K573CASS_H #pragma once -#ifndef __K573CASS_H__ -#define __K573CASS_H__ #include "machine/adc083x.h" #include "machine/ds2401.h" @@ -20,7 +20,7 @@ devcb = &konami573_cassette_slot_device::set_dsr_handler(*device, DEVCB_##_devcb); -extern const device_type KONAMI573_CASSETTE_SLOT; +DECLARE_DEVICE_TYPE(KONAMI573_CASSETTE_SLOT, konami573_cassette_slot_device) class konami573_cassette_interface; @@ -32,7 +32,7 @@ class konami573_cassette_slot_device : public device_t, public: konami573_cassette_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_dsr_handler(device_t &device, _Object object) { return downcast(device).m_dsr_handler.set_callback(object); } + template static devcb_base &set_dsr_handler(device_t &device, Object &&cb) { return downcast(device).m_dsr_handler.set_callback(std::forward(cb)); } DECLARE_WRITE_LINE_MEMBER(write_line_d0); DECLARE_WRITE_LINE_MEMBER(write_line_d1); @@ -62,7 +62,6 @@ class konami573_cassette_interface : public device_slot_card_interface friend class konami573_cassette_slot_device; public: - konami573_cassette_interface(const machine_config &mconfig, device_t &device); virtual ~konami573_cassette_interface(); DECLARE_WRITE_LINE_MEMBER(output_dsr) { m_slot->m_dsr_handler(state); } @@ -81,18 +80,20 @@ public: virtual DECLARE_READ_LINE_MEMBER(read_line_adc083x_do); virtual DECLARE_READ_LINE_MEMBER(read_line_adc083x_sars); +protected: + konami573_cassette_interface(const machine_config &mconfig, device_t &device); + konami573_cassette_slot_device *m_slot; }; -extern const device_type KONAMI573_CASSETTE_X; +DECLARE_DEVICE_TYPE(KONAMI573_CASSETTE_X, konami573_cassette_x_device) class konami573_cassette_x_device: public device_t, public konami573_cassette_interface { public: konami573_cassette_x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - konami573_cassette_x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source); virtual DECLARE_READ_LINE_MEMBER(read_line_secflash_sda) override; virtual DECLARE_WRITE_LINE_MEMBER(write_line_d0) override; @@ -101,6 +102,8 @@ public: virtual DECLARE_WRITE_LINE_MEMBER(write_line_d3) override; protected: + konami573_cassette_x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual machine_config_constructor device_mconfig_additions() const override; @@ -109,7 +112,7 @@ private: }; -extern const device_type KONAMI573_CASSETTE_XI; +DECLARE_DEVICE_TYPE(KONAMI573_CASSETTE_XI, konami573_cassette_xi_device) class konami573_cassette_xi_device: public konami573_cassette_x_device { @@ -136,7 +139,7 @@ private: }; -extern const device_type KONAMI573_CASSETTE_Y; +DECLARE_DEVICE_TYPE(KONAMI573_CASSETTE_Y, konami573_cassette_y_device) #define MCFG_KONAMI573_CASSETTE_Y_D0_HANDLER(_devcb) \ @@ -168,7 +171,6 @@ class konami573_cassette_y_device: public device_t, { public: konami573_cassette_y_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - konami573_cassette_y_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source); // static configuration helpers template static devcb_base &set_d0_handler(device_t &device, _Object object) { return downcast(device).m_d0_handler.set_callback(object); } @@ -191,6 +193,8 @@ public: virtual DECLARE_WRITE_LINE_MEMBER(write_line_d7) override; protected: + konami573_cassette_y_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual machine_config_constructor device_mconfig_additions() const override; @@ -207,7 +211,7 @@ private: }; -extern const device_type KONAMI573_CASSETTE_YI; +DECLARE_DEVICE_TYPE(KONAMI573_CASSETTE_YI, konami573_cassette_yi_device) class konami573_cassette_yi_device: public konami573_cassette_y_device { @@ -225,7 +229,7 @@ private: }; -extern const device_type KONAMI573_CASSETTE_ZI; +DECLARE_DEVICE_TYPE(KONAMI573_CASSETTE_ZI, konami573_cassette_zi_device) class konami573_cassette_zi_device: public device_t, public konami573_cassette_interface @@ -251,4 +255,4 @@ private: }; -#endif +#endif // MAME_MACHINE_K573CASS_H diff --git a/src/mame/machine/k573dio.cpp b/src/mame/machine/k573dio.cpp index e805f12c389..5df5bcfd84e 100644 --- a/src/mame/machine/k573dio.cpp +++ b/src/mame/machine/k573dio.cpp @@ -65,7 +65,7 @@ */ -const device_type KONAMI_573_DIGITAL_IO_BOARD = device_creator; +DEFINE_DEVICE_TYPE(KONAMI_573_DIGITAL_IO_BOARD, k573dio_device, "k573_dio", "Konami 573 digital I/O board") DEVICE_ADDRESS_MAP_START(amap, 16, k573dio_device) AM_RANGE(0x00, 0x01) AM_READ(a00_r) @@ -106,7 +106,7 @@ static MACHINE_CONFIG_FRAGMENT( k573dio ) MACHINE_CONFIG_END k573dio_device::k573dio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, KONAMI_573_DIGITAL_IO_BOARD, "Konami 573 digital I/O board", tag, owner, clock, "k573dio", __FILE__), + : device_t(mconfig, KONAMI_573_DIGITAL_IO_BOARD, tag, owner, clock), mas3507d(*this, "mpeg"), digital_id(*this, "digital_id"), output_cb(*this) diff --git a/src/mame/machine/k573dio.h b/src/mame/machine/k573dio.h index 0fb3ee47ce5..9387238a622 100644 --- a/src/mame/machine/k573dio.h +++ b/src/mame/machine/k573dio.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:smf -#pragma once +#ifndef MAME_MACHINE_K573DIO_H +#define MAME_MACHINE_K573DIO_H -#ifndef _K573DIO_H_ -#define _K573DIO_H_ +#pragma once #include "sound/mas3507d.h" #include "machine/ds2401.h" @@ -80,6 +80,6 @@ private: void output(int offset, uint16_t data); }; -extern const device_type KONAMI_573_DIGITAL_IO_BOARD; +DECLARE_DEVICE_TYPE(KONAMI_573_DIGITAL_IO_BOARD, k573dio_device) -#endif +#endif // MAME_MACHINE_K573DIO_H diff --git a/src/mame/machine/k573mcr.cpp b/src/mame/machine/k573mcr.cpp index 43db5e70cc7..1255fa50a20 100644 --- a/src/mame/machine/k573mcr.cpp +++ b/src/mame/machine/k573mcr.cpp @@ -13,7 +13,7 @@ */ k573mcr_device::k573mcr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, KONAMI_573_MEMORY_CARD_READER, "Konami 573 Memory Card Reader", tag, owner, clock, "k573mcr", __FILE__) + device_t(mconfig, KONAMI_573_MEMORY_CARD_READER, tag, owner, clock) { } @@ -31,4 +31,4 @@ const tiny_rom_entry *k573mcr_device::device_rom_region() const return ROM_NAME( k573mcr ); } -const device_type KONAMI_573_MEMORY_CARD_READER = device_creator; +DEFINE_DEVICE_TYPE(KONAMI_573_MEMORY_CARD_READER, k573mcr_device, "k573mcr", "Konami 573 Memory Card Reader") diff --git a/src/mame/machine/k573mcr.h b/src/mame/machine/k573mcr.h index 720f027fc9c..29e44ca098e 100644 --- a/src/mame/machine/k573mcr.h +++ b/src/mame/machine/k573mcr.h @@ -4,14 +4,14 @@ * Konami 573 Memory Card Reader * */ +#ifndef MAME_MACHINE_K573_MCR_H +#define MAME_MACHINE_K573_MCR_H #pragma once -#ifndef __K573MCR_H__ -#define __K573MCR_H__ -extern const device_type KONAMI_573_MEMORY_CARD_READER; +DECLARE_DEVICE_TYPE(KONAMI_573_MEMORY_CARD_READER, k573mcr_device) class k573mcr_device : public device_t { @@ -24,4 +24,4 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; }; -#endif +#endif // MAME_MACHINE_K573_MCR_H diff --git a/src/mame/machine/k573msu.cpp b/src/mame/machine/k573msu.cpp index 4113837a44e..2f04b9672a3 100644 --- a/src/mame/machine/k573msu.cpp +++ b/src/mame/machine/k573msu.cpp @@ -73,7 +73,7 @@ */ k573msu_device::k573msu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, KONAMI_573_MULTI_SESSION_UNIT, "Konami 573 Multi Session Unit", tag, owner, clock, "k573msu", __FILE__) + device_t(mconfig, KONAMI_573_MULTI_SESSION_UNIT, tag, owner, clock) { } @@ -94,4 +94,4 @@ const tiny_rom_entry *k573msu_device::device_rom_region() const return ROM_NAME( k573msu ); } -const device_type KONAMI_573_MULTI_SESSION_UNIT = device_creator; +DEFINE_DEVICE_TYPE(KONAMI_573_MULTI_SESSION_UNIT, k573msu_device, "k573msu", "Konami 573 Multi Session Unit") diff --git a/src/mame/machine/k573msu.h b/src/mame/machine/k573msu.h index 64623d5ca82..e32121a1c14 100644 --- a/src/mame/machine/k573msu.h +++ b/src/mame/machine/k573msu.h @@ -4,14 +4,14 @@ * Konami 573 Multi Session Unit * */ +#ifndef MAME_MACHINE_K573MSU_H +#define MAME_MACHINE_K573MSU_H #pragma once -#ifndef __K573MSU_H__ -#define __K573MSU_H__ -extern const device_type KONAMI_573_MULTI_SESSION_UNIT; +DECLARE_DEVICE_TYPE(KONAMI_573_MULTI_SESSION_UNIT, k573msu_device) class k573msu_device : public device_t { @@ -24,4 +24,4 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; }; -#endif +#endif // MAME_MACHINE_K573MSU_H diff --git a/src/mame/machine/k573npu.cpp b/src/mame/machine/k573npu.cpp index 5364b4c3001..5d06644ae29 100644 --- a/src/mame/machine/k573npu.cpp +++ b/src/mame/machine/k573npu.cpp @@ -73,7 +73,7 @@ */ k573npu_device::k573npu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, KONAMI_573_NETWORK_PCB_UNIT, "Konami 573 Network PCB Unit", tag, owner, clock, "k573npu", __FILE__) + device_t(mconfig, KONAMI_573_NETWORK_PCB_UNIT, tag, owner, clock) { } @@ -91,4 +91,4 @@ const tiny_rom_entry *k573npu_device::device_rom_region() const return ROM_NAME( k573npu ); } -const device_type KONAMI_573_NETWORK_PCB_UNIT = device_creator; +DEFINE_DEVICE_TYPE(KONAMI_573_NETWORK_PCB_UNIT, k573npu_device, "k573npu", "Konami 573 Network PCB Unit") diff --git a/src/mame/machine/k573npu.h b/src/mame/machine/k573npu.h index e1c9fa35842..c4317f2dc67 100644 --- a/src/mame/machine/k573npu.h +++ b/src/mame/machine/k573npu.h @@ -4,14 +4,14 @@ * Konami 573 Network PCB Unit * */ +#ifndef MAME_MACHINE_K573NPU_H +#define MAME_MACHINE_K573NPU_H #pragma once -#ifndef __K573NPU_H__ -#define __K573NPU_H__ -extern const device_type KONAMI_573_NETWORK_PCB_UNIT; +DECLARE_DEVICE_TYPE(KONAMI_573_NETWORK_PCB_UNIT, k573npu_device) class k573npu_device : public device_t { @@ -24,4 +24,4 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; }; -#endif +#endif // MAME_MACHINE_K573NPU_H diff --git a/src/mame/machine/k7659kb.cpp b/src/mame/machine/k7659kb.cpp index 9c9114c8d4a..a58e3c5d220 100644 --- a/src/mame/machine/k7659kb.cpp +++ b/src/mame/machine/k7659kb.cpp @@ -22,7 +22,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type K7659_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(K7659_KEYBOARD, k7659_keyboard_device, "k7659_keyboard", "K7659 Keyboard") @@ -214,7 +214,7 @@ ioport_constructor k7659_keyboard_device::device_input_ports() const //------------------------------------------------- k7659_keyboard_device::k7659_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K7659_KEYBOARD, "K7659 Keyboard", tag, owner, clock, "k7659kb", __FILE__) + : device_t(mconfig, K7659_KEYBOARD, tag, owner, clock) {} diff --git a/src/mame/machine/k7659kb.h b/src/mame/machine/k7659kb.h index d5ed7ab3ee4..42f1ab26dc2 100644 --- a/src/mame/machine/k7659kb.h +++ b/src/mame/machine/k7659kb.h @@ -6,11 +6,10 @@ *********************************************************************/ -#pragma once - -#ifndef __K7659_KEYBOARD__ -#define __K7659_KEYBOARD__ +#ifndef MAME_MACHINE_K7659KB_H +#define MAME_MACHINE_K7659KB_H +#pragma once @@ -68,7 +67,7 @@ private: // device type definition extern const device_type K7659_KEYBOARD; +DECLARE_DEVICE_TYPE(K7659_KEYBOARD, k7659_keyboard_device) - -#endif +#endif // MAME_MACHINE_K7659KB_H diff --git a/src/mame/machine/kaneko_calc3.cpp b/src/mame/machine/kaneko_calc3.cpp index 78ccadafb80..13ab946a72b 100644 --- a/src/mame/machine/kaneko_calc3.cpp +++ b/src/mame/machine/kaneko_calc3.cpp @@ -27,10 +27,13 @@ #include "kaneko_calc3.h" #include "machine/eepromser.h" -const device_type KANEKO_CALC3 = device_creator; +#define VERBOSE_OUTPUT 0 + + +DEFINE_DEVICE_TYPE(KANEKO_CALC3, kaneko_calc3_device, "kaneko_calc3", "Kaneko CALC3 MCU") kaneko_calc3_device::kaneko_calc3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, KANEKO_CALC3, "Kaneko CALC3 MCU", tag, owner, clock, "kaneko_calc3", __FILE__), + : device_t(mconfig, KANEKO_CALC3, tag, owner, clock), m_mcuram(*this, ":mcuram"), m_mcu_status(0), m_mcu_command_offset(0), diff --git a/src/mame/machine/kaneko_calc3.h b/src/mame/machine/kaneko_calc3.h index 51a3b52a4b4..3400883aed9 100644 --- a/src/mame/machine/kaneko_calc3.h +++ b/src/mame/machine/kaneko_calc3.h @@ -1,9 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia, David Haywood /* CALC 3 */ +#ifndef MAME_MACHINE_KANEKO_CALC3_H +#define MAME_MACHINE_KANEKO_CALC3_H -#define VERBOSE_OUTPUT 0 - +#pragma once class kaneko_calc3_device : public device_t @@ -59,4 +60,6 @@ private: }; -extern const device_type KANEKO_CALC3; +DECLARE_DEVICE_TYPE(KANEKO_CALC3, kaneko_calc3_device) + +#endif // MAME_MACHINE_KANEKO_CALC3_H diff --git a/src/mame/machine/kaneko_hit.cpp b/src/mame/machine/kaneko_hit.cpp index 47200d796b6..fdb758645a6 100644 --- a/src/mame/machine/kaneko_hit.cpp +++ b/src/mame/machine/kaneko_hit.cpp @@ -28,10 +28,10 @@ #include "emu.h" #include "kaneko_hit.h" -const device_type KANEKO_HIT = device_creator; +DEFINE_DEVICE_TYPE(KANEKO_HIT, kaneko_hit_device, "kaneko_hit", "Kaneko CALC Hitbox") kaneko_hit_device::kaneko_hit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, KANEKO_HIT, "Kaneko CALC Hitbox", tag, owner, clock, "kaneko_hit", __FILE__), + : device_t(mconfig, KANEKO_HIT, tag, owner, clock), m_watchdog(*this, "^watchdog") { m_hittype = -1; diff --git a/src/mame/machine/kaneko_hit.h b/src/mame/machine/kaneko_hit.h index 35cbbef2c50..40f3355776a 100644 --- a/src/mame/machine/kaneko_hit.h +++ b/src/mame/machine/kaneko_hit.h @@ -1,59 +1,63 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia, David Haywood,Stephane Humbert /* Kaneko Hit protection */ +#ifndef MAME_MACHINE_KANEKO_HIT_H +#define MAME_MACHINE_KANEKO_HIT_H + +#pragma once #include "machine/watchdog.h" -struct calc1_hit_t +class kaneko_hit_device : public device_t { - uint16_t x1p, y1p, x1s, y1s; - uint16_t x2p, y2p, x2s, y2s; +public: + kaneko_hit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - int16_t x12, y12, x21, y21; + static void set_type(device_t &device, int hittype); - uint16_t mult_a, mult_b; -}; + int m_hittype; -struct calc3_hit_t -{ - int x1p, y1p, z1p, x1s, y1s, z1s; - int x2p, y2p, z2p, x2s, y2s, z2s; + DECLARE_READ16_MEMBER(kaneko_hit_r); + DECLARE_WRITE16_MEMBER(kaneko_hit_w); - int x1po, y1po, z1po, x1so, y1so, z1so; - int x2po, y2po, z2po, x2so, y2so, z2so; +protected: + virtual void device_start() override; + virtual void device_reset() override; - int x12, y12, z12, x21, y21, z21; +private: + struct calc1_hit_t + { + uint16_t x1p, y1p, x1s, y1s; + uint16_t x2p, y2p, x2s, y2s; - int x_coll, y_coll, z_coll; + int16_t x12, y12, x21, y21; - int x1tox2, y1toy2, z1toz2; + uint16_t mult_a, mult_b; + }; - uint16_t mult_a, mult_b; + struct calc3_hit_t + { + int x1p, y1p, z1p, x1s, y1s, z1s; + int x2p, y2p, z2p, x2s, y2s, z2s; - uint16_t flags; - uint16_t mode; -}; + int x1po, y1po, z1po, x1so, y1so, z1so; + int x2po, y2po, z2po, x2so, y2so, z2so; + int x12, y12, z12, x21, y21, z21; + int x_coll, y_coll, z_coll; -class kaneko_hit_device : public device_t -{ -public: - kaneko_hit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + int x1tox2, y1toy2, z1toz2; - static void set_type(device_t &device, int hittype); + uint16_t mult_a, mult_b; - int m_hittype; + uint16_t flags; + uint16_t mode; + }; - DECLARE_READ16_MEMBER(kaneko_hit_r); - DECLARE_WRITE16_MEMBER(kaneko_hit_w); -protected: - virtual void device_start() override; - virtual void device_reset() override; -private: required_device m_watchdog; calc1_hit_t m_hit; @@ -75,4 +79,6 @@ private: }; -extern const device_type KANEKO_HIT; +DECLARE_DEVICE_TYPE(KANEKO_HIT, kaneko_hit_device) + +#endif // MAME_MACHINE_KANEKO_HIT_H diff --git a/src/mame/machine/kaneko_toybox.cpp b/src/mame/machine/kaneko_toybox.cpp index 3a1868e4e9a..930573fbb70 100644 --- a/src/mame/machine/kaneko_toybox.cpp +++ b/src/mame/machine/kaneko_toybox.cpp @@ -51,10 +51,331 @@ mcu_subcmd = kaneko16_mcu_ram[0x0014/2]; // sub-command parameter, happens o #include "kaneko_toybox.h" #include "machine/eepromser.h" -const device_type KANEKO_TOYBOX = device_creator; +/*************************************************************************** + + TOYBOX MCU data for Bonk's Adventure + +***************************************************************************/ + +// notes based on test programs results, verified on PCB: +// - bonkadv_mcu_4_30 is the only cmd that outputs an odd (655) number of bytes +// - bonkadv_mcu_4_33: the 32 'zeroed' bytes every 64 bytes are effectively written by the MCU + +// MCU executed command: 4300 0100 - factory settings +// this command is issued whenever the nvram settings are corrupted +// the MCU writes directly to NVRAM +static const uint16_t bonkadv_mcu_43[] = { + 0x8BE0,0x8E71,0x0102,0x0102,0x0300,0x010C,0x0202,0x0202, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0030,0x0020,0x4F6B,0x0305,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0082,0x6F82,0x628C,0xB490,0x6CAB +}; + +// MCU executed command: 0400 0E00 0034 - code +/* +200E00: 7071 moveq #$71, D0 +200E02: 7273 moveq #$73, D1 +200E04: 7475 moveq #$75, D2 +200E06: 7677 moveq #$77, D3 +200E08: 7879 moveq #$79, D4 +200E0A: 7A7B moveq #$7b, D5 +200E0C: 7C7D moveq #$7d, D6 +200E0E: 7E7F moveq #$7f, D7 +200E10: 4E75 rts +*/ +static const uint16_t bonkadv_mcu_4_34[] = { + 0x7071,0x7273,0x7475,0x7677,0x7879,0x7a7b,0x7c7d,0x7e7f, + 0x4e75 +}; +// MCU executed command: 0400 0180 0032 - 128 bytes at $200180 +static const uint16_t bonkadv_mcu_4_32[] = { + 0x00cc,0xcc0c,0xc0c0,0xc080,0x0484,0xb6a6,0x0404,0x80c0, + 0x80b1,0xb1a1,0xa1b2,0xa2b3,0xb3a3,0xa3b1,0xb1b1,0xb1c0, + 0xc0a1,0xa1a1,0xa1b2,0xb2a2,0xa290,0x9090,0xb9b9,0xa9a9, + 0xbaaa,0xbbbb,0xabab,0xb9b9,0xb9b9,0xc8c8,0xa9a9,0xa9a9, + 0xbaba,0xaaaa,0x9898,0x98b9,0xb9a9,0xa9ba,0xaabb,0xbbab, + 0xabb9,0xb9b9,0xb9c8,0xc8a9,0xa9a9,0xa9ba,0xbaaa,0xaa98, + 0x9898,0xb1b1,0xa1a1,0xb2a2,0xb3b3,0xa3a3,0xb1b1,0xb1b1, + 0xc0c0,0xa1a1,0xa1a1,0xb2b2,0xa2a2,0x9090,0x9000,0x0000 +}; +// MCU executed command: 0400 0280 0031 - 112 bytes at $200280 +static const uint16_t bonkadv_mcu_4_31[] = { + 0x1013,0x1411,0x1216,0x1519,0x1a17,0x1824,0x2322,0x211f, + 0x201e,0x1d1c,0x1b27,0x2825,0x2629,0x2a2b,0x2e2f,0x2c2d, + 0x3130,0x3435,0x3233,0x3f3e,0x3d3c,0x3a3b,0x3938,0x3736, + 0x4243,0x4041,0x4445,0x4649,0x4a47,0x484c,0x4b4f,0x504d, + 0x4e5a,0x5958,0x5755,0x5654,0x5352,0x515d,0x5e5b,0x5c5f, + 0x6061,0x6465,0x6263,0x6766,0x6a6b,0x6869,0x7574,0x7372, + 0x7071,0x6f6e,0x6d6c,0x7879,0x7677,0x7a7b,0x7c7d,0x7e7f +}; +// MCU executed command: 0400 0E50 0030 - 655 bytes at $200E50 (656 here) +static const uint16_t bonkadv_mcu_4_30[] = { + 0x8c00,0x9700,0xa000,0xa700,0xb200,0xb700,0xc000,0xcc00, + 0xd600,0xdf00,0xef00,0xf500,0xfd00,0x0501,0x0b01,0x1801, + 0x1e01,0x2901,0x3101,0x3701,0x4101,0x4901,0x0b01,0x5d01, + 0xa700,0xb200,0x6c01,0x8101,0xb200,0x8101,0x8101,0x8101, + 0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101, + 0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101, + 0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x2e02, + 0x3602,0x3d02,0x4102,0x4f02,0x5502,0x5502,0x5f02,0x6402, + 0x6d02,0x7302,0x7802,0x7d02,0x8302,0x8a02,0x0165,0x712b, + 0x57fe,0x57a2,0xff00,0x0003,0x7c3a,0x436c,0x66ff,0x0000, + 0x026c,0x6d43,0xff00,0x0000,0x74a5,0x8373,0x3599,0x9fff, + + 0x0000,0x074a,0xff00,0x0002,0x8788,0x3331,0x32ff,0x0000, + 0x0276,0x8c71,0x2d8c,0xfe12,0x8cff,0x0000,0x0171,0x0d29, + 0xfe0d,0x29ff,0x0000,0x0559,0x5a5b,0x8a8b,0xff00,0x0003, + 0x0d0e,0x576a,0x641e,0xfe0d,0x0efe,0x64a3,0xff00,0x0006, + 0x0262,0xff00,0x0007,0x3e3f,0x7a7b,0xff00,0x0007,0x7584, + 0x4c53,0xff00,0x0001,0x6645,0xff00,0x0007,0x0d18,0x2984, + 0x5384,0xfe0d,0x29ff,0x0000,0x0457,0x5cff,0x0000,0x0751, + 0x5202,0x45fe,0x4575,0xff00,0x0000,0x191a,0x1b6e,0xff00, + 0x0006,0x3472,0xff00,0x0000,0x6569,0x090f,0x8b23,0xff00, + 0x0004,0x3b3c,0x3d79,0xff00,0x0080,0x770a,0x8176,0x2a65, + 0x64fe,0x7776,0xfe2a,0x76fe,0x650a,0xff00,0x0000,0x1011, + 0x1226,0x2728,0xa655,0x940f,0x68ff,0x0000,0x8045,0x6477, + 0x0a81,0x762a,0x65fe,0x7776,0xfe2a,0x76fe,0x650a,0xff00, + 0x0000,0x166b,0xff00,0x0007,0x1e30,0x39ff,0x0000,0x0345, + 0x3a77,0x7843,0x4647,0xff00,0x0000,0x7335,0x8399,0x9fff, + 0x0000,0x0237,0x38ff,0x0000,0x0044,0x303b,0xff00,0x0000, + + 0x7d7e,0x7fa1,0x0aff,0x0000,0x0070,0xff00,0x0000,0x3e3f, + 0x7a7b,0x6180,0x89a4,0xff00,0x0006,0x86a5,0x4f42,0xff00, + 0x0000,0x1011,0x1255,0x0f68,0xff00,0x0002,0x8788,0x4033, + 0xff00,0x0005,0x650f,0xff00,0x0008,0x9596,0x9ba7,0xff00, + 0x0000,0x4849,0x82ff,0x0000,0x022e,0x2f30,0xff00,0x0001, + 0x7778,0x5826,0x2728,0xa6ff,0x0000,0x0813,0x1402,0x51ff, + 0x0000,0x072e,0x5c5d,0xff00,0x0006,0x57ff,0x0000,0x0230, + 0x391e,0x65fe,0x6530,0xff00,0x0000,0x4bff,0x0000,0x008e, + 0x8f90,0x91ff,0x0000,0x0092,0x9d17,0xff00,0x0000,0xff00, + 0x0000,0x8d9b,0xa77d,0x7e7f,0xa10a,0x9596,0xff00,0x0001, + 0x1993,0xff00,0x0000,0x67ff,0x0000,0x0067,0xff00,0x0000, + 0x27ff,0x0000,0x0390,0x8e23,0x978b,0xff00,0x0000,0x1d9e, + 0xff00,0x0007,0x3bff,0x0000,0x001d,0xff00,0x0000,0x8e90, + 0xff00,0x0005,0x2495,0x96ff,0x0000,0x009a,0xff00,0x0000 +}; +// MCU executed command: 0400 0400 0033 - 2560 bytes at $200400 +static const uint16_t bonkadv_mcu_4_33[] = { + 0x00a4,0x0001,0x00a5,0x005a,0x00a6,0x0074,0x00a7,0x009b, + 0x00a8,0x00d0,0x00a9,0x00fe,0x00aa,0x015d,0x00ab,0x01b0, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0001,0x0002,0x0019,0x005b,0x0022,0x0075,0x002d,0x009c, + 0x0041,0x00d1,0x004e,0x00ff,0x0060,0x015f,0x0072,0x01b1, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0002,0x0008,0x001a,0x0061,0x0023,0x007b,0x002e,0x00a2, + 0x0042,0x00d7,0x004f,0x0107,0x0061,0x0165,0x0073,0x01b7, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x000a,0x0000,0x0063,0x0000,0x007d,0x0000,0x00a4, + 0x0000,0x00d9,0x0000,0x0109,0x0000,0x0167,0x0000,0x01b9, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + 0x0003,0x000b,0x001b,0x0064,0x0024,0x007e,0x002f,0x00a5, + 0x0043,0x00da,0x0050,0x010a,0x0062,0x0168,0x0074,0x01ba, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x000c,0x0000,0x0065,0x0000,0x007f,0x0000,0x00a6, + 0x0000,0x00db,0x0000,0x010b,0x0000,0x0169,0x0000,0x01bb, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0004,0x0008,0x001c,0x0061,0x0025,0x007b,0x0030,0x00a2, + 0x0044,0x00d7,0x0051,0x0107,0x0063,0x0165,0x0075,0x01b7, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0005,0x000d,0x001d,0x0066,0x0025,0x007b,0x0031,0x00a7, + 0x0045,0x00dc,0x0051,0x0107,0x0063,0x0165,0x0075,0x01b7, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + 0x0000,0x0017,0x0000,0x0069,0x0000,0x0089,0x0000,0x00af, + 0x0000,0x00df,0x0000,0x0115,0x0000,0x0173,0x0000,0x01c5, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0009,0x0015,0x001e,0x0067,0x0029,0x0087,0x0034,0x00ad, + 0x0046,0x00dd,0x0055,0x0113,0x0067,0x0171,0x0079,0x01c3, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0006,0x000e,0x0006,0x000e,0x0026,0x0080,0x0006,0x000e, + 0x0000,0x0000,0x0052,0x010c,0x0064,0x016a,0x0076,0x01bc, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0007,0x0010,0x0007,0x0010,0x0027,0x0082,0x0032,0x00a8, + 0x0000,0x0000,0x0053,0x010e,0x0065,0x016c,0x0077,0x01be, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + 0x0000,0x0013,0x0000,0x0013,0x0000,0x0085,0x0000,0x00ab, + 0x0000,0x0000,0x0000,0x0111,0x0000,0x016f,0x0000,0x01c1, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0008,0x0014,0x0008,0x0014,0x0028,0x0086,0x0033,0x00ac, + 0x0000,0x0000,0x0054,0x0112,0x0066,0x0170,0x0078,0x01c2, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0018,0x0000,0x006a,0x0000,0x008a,0x0000,0x00b0, + 0x0000,0x00e0,0x0000,0x0116,0x0000,0x0174,0x0000,0x01c6, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x000c,0x0000,0x0065,0x0000,0x007f,0x0000,0x00a6, + 0x0000,0x00db,0x0000,0x010b,0x0000,0x0169,0x0000,0x01bb, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + 0x000a,0x0019,0x001f,0x006b,0x002a,0x008b,0x0035,0x00b1, + 0x0047,0x00e1,0x0056,0x0117,0x0068,0x0175,0x007a,0x01c7, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x000b,0x0019,0x0020,0x006b,0x002b,0x008b,0x0036,0x00b1, + 0x0048,0x00e1,0x0057,0x0117,0x0069,0x0175,0x007a,0x01c7, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0015,0x003e,0x0015,0x003e,0x0099,0x0095,0x0015,0x003e, + 0x0000,0x0000,0x009e,0x013a,0x006d,0x018f,0x007e,0x01dc, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x000c,0x001d,0x000c,0x001d,0x000c,0x001d,0x000c,0x001d, + 0x0049,0x00e5,0x0058,0x011b,0x006a,0x0179,0x007b,0x01c9, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + 0x0000,0x001f,0x0000,0x001f,0x0000,0x001f,0x0000,0x001f, + 0x0000,0x00e7,0x0000,0x011d,0x0000,0x017b,0x0000,0x01cb, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x000d,0x0020,0x0021,0x006f,0x002c,0x008f,0x0037,0x00b5, + 0x004a,0x00e8,0x0059,0x011e,0x006b,0x017c,0x007c,0x01cc, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0022,0x0000,0x0071,0x0000,0x0091,0x0000,0x00b7, + 0x0000,0x00ea,0x0000,0x0120,0x0000,0x017e,0x0000,0x01ce, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0014,0x003b,0x0014,0x003b,0x005d,0x0092,0x0014,0x003b, + 0x0014,0x003b,0x009d,0x0137,0x00a0,0x018c,0x00a1,0x01d9, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + 0x0012,0x0036,0x0012,0x0036,0x0012,0x0036,0x0012,0x0036, + 0x008a,0x00e5,0x00be,0x013c,0x006c,0x0184,0x007d,0x01d1, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0013,0x0038,0x0013,0x0038,0x0013,0x0038,0x0013,0x0038, + 0x008a,0x00e5,0x00bf,0x013d,0x006c,0x0184,0x007d,0x01d1, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0038,0x00ba,0x0038,0x00ba,0x0038,0x00ba,0x0038,0x00ba, + 0x0038,0x00ba,0x00a2,0x0128,0x006e,0x019c,0x007f,0x01e7, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x005c,0x014d,0x005c,0x014d,0x005c,0x014d,0x005c,0x014d, + 0x0000,0x0000,0x009c,0x0124,0x0071,0x01a5,0x0082,0x01f0, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + 0x005b,0x014d,0x005b,0x014d,0x005b,0x014d,0x005b,0x014d, + 0x0000,0x0000,0x009b,0x0124,0x0070,0x01a1,0x0081,0x01ec, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0044,0x0000,0x0044,0x0000,0x0044,0x0000,0x0044, + 0x0000,0x00db,0x0000,0x010b,0x0000,0x0169,0x0000,0x01bb, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0018,0x0045,0x0018,0x0045,0x0018,0x0045,0x0018,0x0045, + 0x0044,0x00d7,0x0051,0x0107,0x0063,0x0165,0x0075,0x01b7, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x008b,0x000e,0x008b,0x000e,0x008c,0x0080,0x008b,0x000e, + 0x0000,0x0000,0x008d,0x010c,0x008e,0x016a,0x008f,0x01bc, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + 0x0090,0x0010,0x0090,0x0010,0x0091,0x0082,0x0092,0x00a8, + 0x0000,0x0000,0x0093,0x010e,0x0094,0x016c,0x0095,0x01be, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0096,0x003e,0x0096,0x003e,0x009a,0x0095,0x0096,0x003e, + 0x0000,0x0000,0x009f,0x013a,0x0097,0x018f,0x0098,0x01dc, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0049,0x0000,0x0069,0x0000,0x0098,0x0000,0x00af, + 0x0000,0x00df,0x0000,0x0145,0x0000,0x0173,0x0000,0x01c5, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x005e,0x0048,0x005f,0x0068,0x006f,0x0097,0x0080,0x00ae, + 0x00ac,0x00de,0x00ad,0x0144,0x00ae,0x0172,0x00af,0x01c4, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + 0x004b,0x00ed,0x004b,0x00ed,0x004b,0x00ed,0x004b,0x00ed, + 0x004b,0x00ed,0x00b0,0x012b,0x00b6,0x0186,0x00ba,0x01d3, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0087,0x00f2,0x0087,0x00f2,0x0087,0x00f2,0x0087,0x00f2, + 0x0087,0x00f2,0x00b3,0x0130,0x00b8,0x018b,0x00bc,0x01d8, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x00c1,0x0050,0x00c1,0x0050,0x00c1,0x0050,0x00c1,0x0050, + 0x00c1,0x0050,0x00c3,0x0148,0x00c5,0x019a,0x00c7,0x01e5, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x00c2,0x0050,0x00c2,0x0050,0x00c2,0x0050,0x00c2,0x0050, + 0x00c2,0x0050,0x00c4,0x0148,0x00c6,0x019a,0x00c8,0x01e5, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 +}; + +/* decryption table */ +static const uint8_t decryption_table[0x100] = { + 0x7b,0x82,0xf0,0xbc,0x7f,0x1d,0xa2,0xc5,0x2a,0xfa,0x55,0xee,0x1a,0xd0,0x59,0x76, + 0x5e,0x75,0x79,0x16,0xa5,0xf6,0x84,0xed,0x0f,0x2e,0xf2,0x36,0x61,0xac,0xcd,0xab, + 0x01,0x3b,0x01,0x87,0x73,0xab,0xce,0x5d,0xd4,0x1d,0x68,0x2a,0x35,0xea,0x13,0x27, + 0x00,0xaa,0x46,0x36,0x6e,0x65,0x80,0x7e,0x19,0xe2,0x96,0xab,0xac,0xa5,0x6c,0x63, + 0x4a,0x6f,0x87,0xf6,0x6a,0xac,0x38,0xe2,0x1f,0x87,0xf9,0xaa,0xf5,0x41,0x60,0xa6, + 0x42,0xb9,0x30,0xf2,0xc3,0x1c,0x4e,0x4b,0x08,0x10,0x42,0x32,0xbf,0xb2,0xc5,0x0f, + 0x7a,0xab,0x97,0xf6,0xe7,0xb3,0x46,0xf8,0xec,0x2b,0x7d,0x5f,0xb1,0x10,0x03,0xe4, + 0x0f,0x22,0xdf,0x8d,0x10,0x66,0xa7,0x7e,0x96,0xbd,0x5a,0xaf,0xaa,0x43,0xdf,0x10, + 0x7c,0x04,0xe2,0x9d,0x66,0xd7,0xf0,0x02,0x58,0x8a,0x55,0x17,0x16,0xe2,0xe2,0x52, + 0xaf,0xd9,0xf9,0x0d,0x59,0x70,0x86,0x3c,0x05,0xd1,0x52,0xa7,0xf0,0xbf,0x17,0xd0, + 0x23,0x15,0xfe,0x23,0xf2,0x80,0x60,0x6f,0x95,0x89,0x67,0x65,0xc9,0x0e,0xfc,0x16, + 0xd6,0x8a,0x9f,0x25,0x2c,0x0f,0x2d,0xe4,0x51,0xb2,0xa8,0x18,0x3a,0x5d,0x66,0xa0, + 0x9f,0xb0,0x58,0xea,0x78,0x72,0x08,0x6a,0x90,0xb6,0xa4,0xf5,0x08,0x19,0x60,0x4e, + 0x92,0xbd,0xf1,0x05,0x67,0x4f,0x24,0x99,0x69,0x1d,0x0c,0x6d,0xe7,0x74,0x88,0x22, + 0x2d,0x15,0x7a,0xa2,0x37,0xa9,0xa0,0xb0,0x2c,0xfb,0x27,0xe5,0x4f,0xb6,0xcd,0x75, + 0xdc,0x39,0xce,0x6f,0x1f,0xfe,0xcc,0xb5,0xe6,0xda,0xd8,0xee,0x85,0xee,0x2f,0x04, +}; + +/* alt decryption table (gtmr2) */ +static const uint8_t decryption_table_alt[0x100] = { + 0x26,0x17,0xb9,0xcf,0x1a,0xf5,0x14,0x1e,0x0c,0x35,0xb3,0x66,0xa0,0x17,0xe9,0xe4, + 0x90,0xf6,0xd5,0x35,0xac,0x95,0x49,0x43,0x64,0x0c,0x03,0x75,0x4d,0xda,0xb6,0xdf, + 0x06,0xcf,0x83,0x9e,0x35,0x2c,0x71,0x2a,0xab,0xcc,0x65,0xd4,0x1f,0xb0,0x88,0x3c, + 0xb7,0x87,0x35,0xc0,0x41,0x65,0x9f,0xa0,0xd5,0x8c,0x3e,0x06,0x53,0xdb,0x45,0x64, + 0x09,0x1e,0xc5,0x8d,0x50,0x24,0xe2,0x4a,0x9b,0x99,0x77,0x25,0x43,0xa9,0x1d,0xac, + 0x99,0x31,0x75,0xb5,0x53,0xab,0xad,0x5a,0x42,0x14,0xa1,0x52,0xac,0xec,0x5f,0xf8, + 0x8c,0x78,0x05,0x47,0xea,0xb8,0xde,0x69,0x98,0x2d,0x8f,0x9d,0xfc,0x05,0xea,0xee, + 0x77,0xbb,0xa9,0x31,0x01,0x00,0xea,0xd8,0x9c,0x43,0xb5,0x2f,0x4e,0xb5,0x1b,0xd2, + 0x01,0x4b,0xc4,0xf8,0x76,0x92,0x59,0x4f,0x20,0x52,0xd9,0x7f,0xa9,0x19,0xe9,0x7c, + 0x8d,0x3b,0xec,0xe0,0x60,0x08,0x2e,0xbd,0x27,0x8b,0xb2,0xfc,0x29,0xd8,0x39,0x8a, + 0x4f,0x2f,0x6b,0x04,0x10,0xbd,0xa1,0x04,0xde,0xc0,0xd5,0x0f,0x04,0x86,0xd6,0xd8, + 0xfd,0xb1,0x3c,0x4c,0xd1,0xc4,0xf1,0x5b,0xf5,0x8b,0xe3,0xc4,0x89,0x3c,0x39,0x86, + 0xd2,0x92,0xc9,0xe5,0x2c,0x4f,0xe2,0x2f,0x2d,0xc5,0x35,0x09,0x94,0x47,0x3c,0x04, + 0x40,0x8b,0x57,0x08,0xf6,0x74,0xe9,0xb8,0x36,0x4d,0xc5,0x26,0x13,0x3d,0x75,0xa0, + 0xa8,0x29,0x09,0x8c,0x87,0xf7,0x13,0xaf,0x4c,0x38,0x0b,0x8a,0x7f,0x2c,0x62,0x27, + 0x47,0xaa,0xda,0x07,0x92,0x8d,0xfd,0x1f,0xee,0x48,0x1a,0x53,0x3b,0x98,0x6a,0x72, +}; + + +DEFINE_DEVICE_TYPE(KANEKO_TOYBOX, kaneko_toybox_device, "kaneko_toybox", "Kaneko Toybox MCU") kaneko_toybox_device::kaneko_toybox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, KANEKO_TOYBOX, "Kaneko Toybox MCU", tag, owner, clock, "kaneko_toybox", __FILE__), + : device_t(mconfig, KANEKO_TOYBOX, tag, owner, clock), m_mcuram(*this, ":mcuram"), m_gametype(GAME_NORMAL), m_tabletype(TABLE_NORMAL) diff --git a/src/mame/machine/kaneko_toybox.h b/src/mame/machine/kaneko_toybox.h index acabe623d6d..6d040ae1d76 100644 --- a/src/mame/machine/kaneko_toybox.h +++ b/src/mame/machine/kaneko_toybox.h @@ -1,340 +1,20 @@ // license:BSD-3-Clause // copyright-holders:David Haywood, Luca Elia, Sebastien Volpe /* Kaneko Toybox */ +#ifndef MAME_MACHINE_KANEKO_TOYBOX_H +#define MAME_MACHINE_KANEKO_TOYBOX_H - -#define GAME_NORMAL (0) -#define GAME_BONK (1) - -#define TABLE_NORMAL (0) -#define TABLE_ALT (1) - - - -/*************************************************************************** - - TOYBOX MCU data for Bonk's Adventure - -***************************************************************************/ - -// notes based on test programs results, verified on PCB: -// - bonkadv_mcu_4_30 is the only cmd that outputs an odd (655) number of bytes -// - bonkadv_mcu_4_33: the 32 'zeroed' bytes every 64 bytes are effectively written by the MCU - -// MCU executed command: 4300 0100 - factory settings -// this command is issued whenever the nvram settings are corrupted -// the MCU writes directly to NVRAM -static const uint16_t bonkadv_mcu_43[] = { - 0x8BE0,0x8E71,0x0102,0x0102,0x0300,0x010C,0x0202,0x0202, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0030,0x0020,0x4F6B,0x0305,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0082,0x6F82,0x628C,0xB490,0x6CAB -}; - -// MCU executed command: 0400 0E00 0034 - code -/* -200E00: 7071 moveq #$71, D0 -200E02: 7273 moveq #$73, D1 -200E04: 7475 moveq #$75, D2 -200E06: 7677 moveq #$77, D3 -200E08: 7879 moveq #$79, D4 -200E0A: 7A7B moveq #$7b, D5 -200E0C: 7C7D moveq #$7d, D6 -200E0E: 7E7F moveq #$7f, D7 -200E10: 4E75 rts -*/ -static const uint16_t bonkadv_mcu_4_34[] = { - 0x7071,0x7273,0x7475,0x7677,0x7879,0x7a7b,0x7c7d,0x7e7f, - 0x4e75 -}; -// MCU executed command: 0400 0180 0032 - 128 bytes at $200180 -static const uint16_t bonkadv_mcu_4_32[] = { - 0x00cc,0xcc0c,0xc0c0,0xc080,0x0484,0xb6a6,0x0404,0x80c0, - 0x80b1,0xb1a1,0xa1b2,0xa2b3,0xb3a3,0xa3b1,0xb1b1,0xb1c0, - 0xc0a1,0xa1a1,0xa1b2,0xb2a2,0xa290,0x9090,0xb9b9,0xa9a9, - 0xbaaa,0xbbbb,0xabab,0xb9b9,0xb9b9,0xc8c8,0xa9a9,0xa9a9, - 0xbaba,0xaaaa,0x9898,0x98b9,0xb9a9,0xa9ba,0xaabb,0xbbab, - 0xabb9,0xb9b9,0xb9c8,0xc8a9,0xa9a9,0xa9ba,0xbaaa,0xaa98, - 0x9898,0xb1b1,0xa1a1,0xb2a2,0xb3b3,0xa3a3,0xb1b1,0xb1b1, - 0xc0c0,0xa1a1,0xa1a1,0xb2b2,0xa2a2,0x9090,0x9000,0x0000 -}; -// MCU executed command: 0400 0280 0031 - 112 bytes at $200280 -static const uint16_t bonkadv_mcu_4_31[] = { - 0x1013,0x1411,0x1216,0x1519,0x1a17,0x1824,0x2322,0x211f, - 0x201e,0x1d1c,0x1b27,0x2825,0x2629,0x2a2b,0x2e2f,0x2c2d, - 0x3130,0x3435,0x3233,0x3f3e,0x3d3c,0x3a3b,0x3938,0x3736, - 0x4243,0x4041,0x4445,0x4649,0x4a47,0x484c,0x4b4f,0x504d, - 0x4e5a,0x5958,0x5755,0x5654,0x5352,0x515d,0x5e5b,0x5c5f, - 0x6061,0x6465,0x6263,0x6766,0x6a6b,0x6869,0x7574,0x7372, - 0x7071,0x6f6e,0x6d6c,0x7879,0x7677,0x7a7b,0x7c7d,0x7e7f -}; -// MCU executed command: 0400 0E50 0030 - 655 bytes at $200E50 (656 here) -static const uint16_t bonkadv_mcu_4_30[] = { - 0x8c00,0x9700,0xa000,0xa700,0xb200,0xb700,0xc000,0xcc00, - 0xd600,0xdf00,0xef00,0xf500,0xfd00,0x0501,0x0b01,0x1801, - 0x1e01,0x2901,0x3101,0x3701,0x4101,0x4901,0x0b01,0x5d01, - 0xa700,0xb200,0x6c01,0x8101,0xb200,0x8101,0x8101,0x8101, - 0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101, - 0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101, - 0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x8101,0x2e02, - 0x3602,0x3d02,0x4102,0x4f02,0x5502,0x5502,0x5f02,0x6402, - 0x6d02,0x7302,0x7802,0x7d02,0x8302,0x8a02,0x0165,0x712b, - 0x57fe,0x57a2,0xff00,0x0003,0x7c3a,0x436c,0x66ff,0x0000, - 0x026c,0x6d43,0xff00,0x0000,0x74a5,0x8373,0x3599,0x9fff, - - 0x0000,0x074a,0xff00,0x0002,0x8788,0x3331,0x32ff,0x0000, - 0x0276,0x8c71,0x2d8c,0xfe12,0x8cff,0x0000,0x0171,0x0d29, - 0xfe0d,0x29ff,0x0000,0x0559,0x5a5b,0x8a8b,0xff00,0x0003, - 0x0d0e,0x576a,0x641e,0xfe0d,0x0efe,0x64a3,0xff00,0x0006, - 0x0262,0xff00,0x0007,0x3e3f,0x7a7b,0xff00,0x0007,0x7584, - 0x4c53,0xff00,0x0001,0x6645,0xff00,0x0007,0x0d18,0x2984, - 0x5384,0xfe0d,0x29ff,0x0000,0x0457,0x5cff,0x0000,0x0751, - 0x5202,0x45fe,0x4575,0xff00,0x0000,0x191a,0x1b6e,0xff00, - 0x0006,0x3472,0xff00,0x0000,0x6569,0x090f,0x8b23,0xff00, - 0x0004,0x3b3c,0x3d79,0xff00,0x0080,0x770a,0x8176,0x2a65, - 0x64fe,0x7776,0xfe2a,0x76fe,0x650a,0xff00,0x0000,0x1011, - 0x1226,0x2728,0xa655,0x940f,0x68ff,0x0000,0x8045,0x6477, - 0x0a81,0x762a,0x65fe,0x7776,0xfe2a,0x76fe,0x650a,0xff00, - 0x0000,0x166b,0xff00,0x0007,0x1e30,0x39ff,0x0000,0x0345, - 0x3a77,0x7843,0x4647,0xff00,0x0000,0x7335,0x8399,0x9fff, - 0x0000,0x0237,0x38ff,0x0000,0x0044,0x303b,0xff00,0x0000, - - 0x7d7e,0x7fa1,0x0aff,0x0000,0x0070,0xff00,0x0000,0x3e3f, - 0x7a7b,0x6180,0x89a4,0xff00,0x0006,0x86a5,0x4f42,0xff00, - 0x0000,0x1011,0x1255,0x0f68,0xff00,0x0002,0x8788,0x4033, - 0xff00,0x0005,0x650f,0xff00,0x0008,0x9596,0x9ba7,0xff00, - 0x0000,0x4849,0x82ff,0x0000,0x022e,0x2f30,0xff00,0x0001, - 0x7778,0x5826,0x2728,0xa6ff,0x0000,0x0813,0x1402,0x51ff, - 0x0000,0x072e,0x5c5d,0xff00,0x0006,0x57ff,0x0000,0x0230, - 0x391e,0x65fe,0x6530,0xff00,0x0000,0x4bff,0x0000,0x008e, - 0x8f90,0x91ff,0x0000,0x0092,0x9d17,0xff00,0x0000,0xff00, - 0x0000,0x8d9b,0xa77d,0x7e7f,0xa10a,0x9596,0xff00,0x0001, - 0x1993,0xff00,0x0000,0x67ff,0x0000,0x0067,0xff00,0x0000, - 0x27ff,0x0000,0x0390,0x8e23,0x978b,0xff00,0x0000,0x1d9e, - 0xff00,0x0007,0x3bff,0x0000,0x001d,0xff00,0x0000,0x8e90, - 0xff00,0x0005,0x2495,0x96ff,0x0000,0x009a,0xff00,0x0000 -}; -// MCU executed command: 0400 0400 0033 - 2560 bytes at $200400 -static const uint16_t bonkadv_mcu_4_33[] = { - 0x00a4,0x0001,0x00a5,0x005a,0x00a6,0x0074,0x00a7,0x009b, - 0x00a8,0x00d0,0x00a9,0x00fe,0x00aa,0x015d,0x00ab,0x01b0, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0001,0x0002,0x0019,0x005b,0x0022,0x0075,0x002d,0x009c, - 0x0041,0x00d1,0x004e,0x00ff,0x0060,0x015f,0x0072,0x01b1, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0002,0x0008,0x001a,0x0061,0x0023,0x007b,0x002e,0x00a2, - 0x0042,0x00d7,0x004f,0x0107,0x0061,0x0165,0x0073,0x01b7, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x000a,0x0000,0x0063,0x0000,0x007d,0x0000,0x00a4, - 0x0000,0x00d9,0x0000,0x0109,0x0000,0x0167,0x0000,0x01b9, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - - 0x0003,0x000b,0x001b,0x0064,0x0024,0x007e,0x002f,0x00a5, - 0x0043,0x00da,0x0050,0x010a,0x0062,0x0168,0x0074,0x01ba, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x000c,0x0000,0x0065,0x0000,0x007f,0x0000,0x00a6, - 0x0000,0x00db,0x0000,0x010b,0x0000,0x0169,0x0000,0x01bb, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0004,0x0008,0x001c,0x0061,0x0025,0x007b,0x0030,0x00a2, - 0x0044,0x00d7,0x0051,0x0107,0x0063,0x0165,0x0075,0x01b7, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0005,0x000d,0x001d,0x0066,0x0025,0x007b,0x0031,0x00a7, - 0x0045,0x00dc,0x0051,0x0107,0x0063,0x0165,0x0075,0x01b7, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - - 0x0000,0x0017,0x0000,0x0069,0x0000,0x0089,0x0000,0x00af, - 0x0000,0x00df,0x0000,0x0115,0x0000,0x0173,0x0000,0x01c5, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0009,0x0015,0x001e,0x0067,0x0029,0x0087,0x0034,0x00ad, - 0x0046,0x00dd,0x0055,0x0113,0x0067,0x0171,0x0079,0x01c3, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0006,0x000e,0x0006,0x000e,0x0026,0x0080,0x0006,0x000e, - 0x0000,0x0000,0x0052,0x010c,0x0064,0x016a,0x0076,0x01bc, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0007,0x0010,0x0007,0x0010,0x0027,0x0082,0x0032,0x00a8, - 0x0000,0x0000,0x0053,0x010e,0x0065,0x016c,0x0077,0x01be, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - - 0x0000,0x0013,0x0000,0x0013,0x0000,0x0085,0x0000,0x00ab, - 0x0000,0x0000,0x0000,0x0111,0x0000,0x016f,0x0000,0x01c1, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0008,0x0014,0x0008,0x0014,0x0028,0x0086,0x0033,0x00ac, - 0x0000,0x0000,0x0054,0x0112,0x0066,0x0170,0x0078,0x01c2, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0018,0x0000,0x006a,0x0000,0x008a,0x0000,0x00b0, - 0x0000,0x00e0,0x0000,0x0116,0x0000,0x0174,0x0000,0x01c6, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x000c,0x0000,0x0065,0x0000,0x007f,0x0000,0x00a6, - 0x0000,0x00db,0x0000,0x010b,0x0000,0x0169,0x0000,0x01bb, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - - 0x000a,0x0019,0x001f,0x006b,0x002a,0x008b,0x0035,0x00b1, - 0x0047,0x00e1,0x0056,0x0117,0x0068,0x0175,0x007a,0x01c7, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x000b,0x0019,0x0020,0x006b,0x002b,0x008b,0x0036,0x00b1, - 0x0048,0x00e1,0x0057,0x0117,0x0069,0x0175,0x007a,0x01c7, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0015,0x003e,0x0015,0x003e,0x0099,0x0095,0x0015,0x003e, - 0x0000,0x0000,0x009e,0x013a,0x006d,0x018f,0x007e,0x01dc, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x000c,0x001d,0x000c,0x001d,0x000c,0x001d,0x000c,0x001d, - 0x0049,0x00e5,0x0058,0x011b,0x006a,0x0179,0x007b,0x01c9, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - - 0x0000,0x001f,0x0000,0x001f,0x0000,0x001f,0x0000,0x001f, - 0x0000,0x00e7,0x0000,0x011d,0x0000,0x017b,0x0000,0x01cb, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x000d,0x0020,0x0021,0x006f,0x002c,0x008f,0x0037,0x00b5, - 0x004a,0x00e8,0x0059,0x011e,0x006b,0x017c,0x007c,0x01cc, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0022,0x0000,0x0071,0x0000,0x0091,0x0000,0x00b7, - 0x0000,0x00ea,0x0000,0x0120,0x0000,0x017e,0x0000,0x01ce, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0014,0x003b,0x0014,0x003b,0x005d,0x0092,0x0014,0x003b, - 0x0014,0x003b,0x009d,0x0137,0x00a0,0x018c,0x00a1,0x01d9, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - - 0x0012,0x0036,0x0012,0x0036,0x0012,0x0036,0x0012,0x0036, - 0x008a,0x00e5,0x00be,0x013c,0x006c,0x0184,0x007d,0x01d1, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0013,0x0038,0x0013,0x0038,0x0013,0x0038,0x0013,0x0038, - 0x008a,0x00e5,0x00bf,0x013d,0x006c,0x0184,0x007d,0x01d1, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0038,0x00ba,0x0038,0x00ba,0x0038,0x00ba,0x0038,0x00ba, - 0x0038,0x00ba,0x00a2,0x0128,0x006e,0x019c,0x007f,0x01e7, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x005c,0x014d,0x005c,0x014d,0x005c,0x014d,0x005c,0x014d, - 0x0000,0x0000,0x009c,0x0124,0x0071,0x01a5,0x0082,0x01f0, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - - 0x005b,0x014d,0x005b,0x014d,0x005b,0x014d,0x005b,0x014d, - 0x0000,0x0000,0x009b,0x0124,0x0070,0x01a1,0x0081,0x01ec, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0044,0x0000,0x0044,0x0000,0x0044,0x0000,0x0044, - 0x0000,0x00db,0x0000,0x010b,0x0000,0x0169,0x0000,0x01bb, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0018,0x0045,0x0018,0x0045,0x0018,0x0045,0x0018,0x0045, - 0x0044,0x00d7,0x0051,0x0107,0x0063,0x0165,0x0075,0x01b7, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x008b,0x000e,0x008b,0x000e,0x008c,0x0080,0x008b,0x000e, - 0x0000,0x0000,0x008d,0x010c,0x008e,0x016a,0x008f,0x01bc, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - - 0x0090,0x0010,0x0090,0x0010,0x0091,0x0082,0x0092,0x00a8, - 0x0000,0x0000,0x0093,0x010e,0x0094,0x016c,0x0095,0x01be, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0096,0x003e,0x0096,0x003e,0x009a,0x0095,0x0096,0x003e, - 0x0000,0x0000,0x009f,0x013a,0x0097,0x018f,0x0098,0x01dc, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0049,0x0000,0x0069,0x0000,0x0098,0x0000,0x00af, - 0x0000,0x00df,0x0000,0x0145,0x0000,0x0173,0x0000,0x01c5, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x005e,0x0048,0x005f,0x0068,0x006f,0x0097,0x0080,0x00ae, - 0x00ac,0x00de,0x00ad,0x0144,0x00ae,0x0172,0x00af,0x01c4, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - - 0x004b,0x00ed,0x004b,0x00ed,0x004b,0x00ed,0x004b,0x00ed, - 0x004b,0x00ed,0x00b0,0x012b,0x00b6,0x0186,0x00ba,0x01d3, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0087,0x00f2,0x0087,0x00f2,0x0087,0x00f2,0x0087,0x00f2, - 0x0087,0x00f2,0x00b3,0x0130,0x00b8,0x018b,0x00bc,0x01d8, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x00c1,0x0050,0x00c1,0x0050,0x00c1,0x0050,0x00c1,0x0050, - 0x00c1,0x0050,0x00c3,0x0148,0x00c5,0x019a,0x00c7,0x01e5, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x00c2,0x0050,0x00c2,0x0050,0x00c2,0x0050,0x00c2,0x0050, - 0x00c2,0x0050,0x00c4,0x0148,0x00c6,0x019a,0x00c8,0x01e5, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, - 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 -}; - -/* decryption table */ -static const uint8_t decryption_table[0x100] = { -0x7b,0x82,0xf0,0xbc,0x7f,0x1d,0xa2,0xc5,0x2a,0xfa,0x55,0xee,0x1a,0xd0,0x59,0x76, -0x5e,0x75,0x79,0x16,0xa5,0xf6,0x84,0xed,0x0f,0x2e,0xf2,0x36,0x61,0xac,0xcd,0xab, -0x01,0x3b,0x01,0x87,0x73,0xab,0xce,0x5d,0xd4,0x1d,0x68,0x2a,0x35,0xea,0x13,0x27, -0x00,0xaa,0x46,0x36,0x6e,0x65,0x80,0x7e,0x19,0xe2,0x96,0xab,0xac,0xa5,0x6c,0x63, -0x4a,0x6f,0x87,0xf6,0x6a,0xac,0x38,0xe2,0x1f,0x87,0xf9,0xaa,0xf5,0x41,0x60,0xa6, -0x42,0xb9,0x30,0xf2,0xc3,0x1c,0x4e,0x4b,0x08,0x10,0x42,0x32,0xbf,0xb2,0xc5,0x0f, -0x7a,0xab,0x97,0xf6,0xe7,0xb3,0x46,0xf8,0xec,0x2b,0x7d,0x5f,0xb1,0x10,0x03,0xe4, -0x0f,0x22,0xdf,0x8d,0x10,0x66,0xa7,0x7e,0x96,0xbd,0x5a,0xaf,0xaa,0x43,0xdf,0x10, -0x7c,0x04,0xe2,0x9d,0x66,0xd7,0xf0,0x02,0x58,0x8a,0x55,0x17,0x16,0xe2,0xe2,0x52, -0xaf,0xd9,0xf9,0x0d,0x59,0x70,0x86,0x3c,0x05,0xd1,0x52,0xa7,0xf0,0xbf,0x17,0xd0, -0x23,0x15,0xfe,0x23,0xf2,0x80,0x60,0x6f,0x95,0x89,0x67,0x65,0xc9,0x0e,0xfc,0x16, -0xd6,0x8a,0x9f,0x25,0x2c,0x0f,0x2d,0xe4,0x51,0xb2,0xa8,0x18,0x3a,0x5d,0x66,0xa0, -0x9f,0xb0,0x58,0xea,0x78,0x72,0x08,0x6a,0x90,0xb6,0xa4,0xf5,0x08,0x19,0x60,0x4e, -0x92,0xbd,0xf1,0x05,0x67,0x4f,0x24,0x99,0x69,0x1d,0x0c,0x6d,0xe7,0x74,0x88,0x22, -0x2d,0x15,0x7a,0xa2,0x37,0xa9,0xa0,0xb0,0x2c,0xfb,0x27,0xe5,0x4f,0xb6,0xcd,0x75, -0xdc,0x39,0xce,0x6f,0x1f,0xfe,0xcc,0xb5,0xe6,0xda,0xd8,0xee,0x85,0xee,0x2f,0x04, -}; - -/* alt decryption table (gtmr2) */ -static const uint8_t decryption_table_alt[0x100] = { -0x26,0x17,0xb9,0xcf,0x1a,0xf5,0x14,0x1e,0x0c,0x35,0xb3,0x66,0xa0,0x17,0xe9,0xe4, -0x90,0xf6,0xd5,0x35,0xac,0x95,0x49,0x43,0x64,0x0c,0x03,0x75,0x4d,0xda,0xb6,0xdf, -0x06,0xcf,0x83,0x9e,0x35,0x2c,0x71,0x2a,0xab,0xcc,0x65,0xd4,0x1f,0xb0,0x88,0x3c, -0xb7,0x87,0x35,0xc0,0x41,0x65,0x9f,0xa0,0xd5,0x8c,0x3e,0x06,0x53,0xdb,0x45,0x64, -0x09,0x1e,0xc5,0x8d,0x50,0x24,0xe2,0x4a,0x9b,0x99,0x77,0x25,0x43,0xa9,0x1d,0xac, -0x99,0x31,0x75,0xb5,0x53,0xab,0xad,0x5a,0x42,0x14,0xa1,0x52,0xac,0xec,0x5f,0xf8, -0x8c,0x78,0x05,0x47,0xea,0xb8,0xde,0x69,0x98,0x2d,0x8f,0x9d,0xfc,0x05,0xea,0xee, -0x77,0xbb,0xa9,0x31,0x01,0x00,0xea,0xd8,0x9c,0x43,0xb5,0x2f,0x4e,0xb5,0x1b,0xd2, -0x01,0x4b,0xc4,0xf8,0x76,0x92,0x59,0x4f,0x20,0x52,0xd9,0x7f,0xa9,0x19,0xe9,0x7c, -0x8d,0x3b,0xec,0xe0,0x60,0x08,0x2e,0xbd,0x27,0x8b,0xb2,0xfc,0x29,0xd8,0x39,0x8a, -0x4f,0x2f,0x6b,0x04,0x10,0xbd,0xa1,0x04,0xde,0xc0,0xd5,0x0f,0x04,0x86,0xd6,0xd8, -0xfd,0xb1,0x3c,0x4c,0xd1,0xc4,0xf1,0x5b,0xf5,0x8b,0xe3,0xc4,0x89,0x3c,0x39,0x86, -0xd2,0x92,0xc9,0xe5,0x2c,0x4f,0xe2,0x2f,0x2d,0xc5,0x35,0x09,0x94,0x47,0x3c,0x04, -0x40,0x8b,0x57,0x08,0xf6,0x74,0xe9,0xb8,0x36,0x4d,0xc5,0x26,0x13,0x3d,0x75,0xa0, -0xa8,0x29,0x09,0x8c,0x87,0xf7,0x13,0xaf,0x4c,0x38,0x0b,0x8a,0x7f,0x2c,0x62,0x27, -0x47,0xaa,0xda,0x07,0x92,0x8d,0xfd,0x1f,0xee,0x48,0x1a,0x53,0x3b,0x98,0x6a,0x72, -}; - +#pragma once class kaneko_toybox_device : public device_t { public: + static constexpr int GAME_NORMAL = 0; + static constexpr int GAME_BONK = 1; + + static constexpr int TABLE_NORMAL = 0; + static constexpr int TABLE_ALT = 1; + kaneko_toybox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void set_table(device_t &device, int tabletype); @@ -364,10 +44,12 @@ private: }; -extern const device_type KANEKO_TOYBOX; +DECLARE_DEVICE_TYPE(KANEKO_TOYBOX, kaneko_toybox_device) #define MCFG_TOYBOX_TABLE_TYPE(_type) \ - kaneko_toybox_device::set_table(*device, _type); + kaneko_toybox_device::set_table(*device, kaneko_toybox_device::TABLE_##_type); #define MCFG_TOYBOX_GAME_TYPE(_type) \ - kaneko_toybox_device::set_game_type(*device, _type); + kaneko_toybox_device::set_game_type(*device, kaneko_toybox_device::GAME_##_type); + +#endif // MAME_MACHINE_KANEKO_TOYBOX_H diff --git a/src/mame/machine/kc_keyb.cpp b/src/mame/machine/kc_keyb.cpp index 6dc9f46d0ec..37c1beb7397 100644 --- a/src/mame/machine/kc_keyb.cpp +++ b/src/mame/machine/kc_keyb.cpp @@ -322,13 +322,13 @@ triggers the time measurement by the CTC channel 3." #include "kc_keyb.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" //************************************************************************** // GLOBAL VARIABLES //************************************************************************** -const device_type KC_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(KC_KEYBOARD, kc_keyboard_device, "kc_keyboard", "KC Keyboard") //************************************************************************** // Input Ports @@ -436,7 +436,7 @@ INPUT_PORTS_END // kc_keyboard_device - constructor //------------------------------------------------- kc_keyboard_device::kc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, KC_KEYBOARD, "KC Keyboard", tag, owner, clock, "kc_keyboard", __FILE__), + device_t(mconfig, KC_KEYBOARD, tag, owner, clock), m_write_out(*this) { } @@ -506,7 +506,7 @@ void kc_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int // get current pulse state int pulse_state = (m_transmit_buffer.data[pulse_byte_count]>>pulse_bit_count) & 0x01; - LOG(("KC keyboard sending pulse: %02x\n", pulse_state)); + LOG("KC keyboard sending pulse: %02x\n", pulse_state); // send pulse m_write_out(pulse_state ? ASSERT_LINE : CLEAR_LINE); @@ -535,7 +535,7 @@ void kc_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int { // generate fake code uint8_t code = (i<<3) | b; - LOG(("Code: %02x\n",code)); + LOG("Code: %02x\n",code); transmit_scancode(code); } @@ -553,7 +553,7 @@ void kc_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int void kc_keyboard_device::add_pulse_to_transmit_buffer(int pulse_state, int pulse_number) { - if (m_transmit_buffer.pulse_count + 1 < KC_TRANSMIT_BUFFER_LENGTH) + if (m_transmit_buffer.pulse_count + 1 < TRANSMIT_BUFFER_LENGTH) { for (int i=0; i kc_keyboard_device class kc_keyboard_device : public device_t @@ -28,12 +27,15 @@ public: kc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~kc_keyboard_device(); - template static devcb_base &set_out_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_out.set_callback(object); } + template static devcb_base &set_out_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_out.set_callback(std::forward(cb)); } // optional information overrides virtual ioport_constructor device_input_ports() const override; protected: + /* number of pulses that can be stored */ + static constexpr unsigned TRANSMIT_BUFFER_LENGTH = 256; + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -44,22 +46,22 @@ protected: void transmit_scancode(uint8_t scan_code); private: - static const device_timer_id TIMER_TRANSMIT_PULSE = 1; + static constexpr device_timer_id TIMER_TRANSMIT_PULSE = 1; // internal state - emu_timer * m_timer_transmit_pulse; + emu_timer * m_timer_transmit_pulse; devcb_write_line m_write_out; // pulses to transmit struct { - uint8_t data[KC_TRANSMIT_BUFFER_LENGTH>>3]; + uint8_t data[TRANSMIT_BUFFER_LENGTH>>3]; int pulse_sent; int pulse_count; } m_transmit_buffer; }; // device type definition -extern const device_type KC_KEYBOARD; +DECLARE_DEVICE_TYPE(KC_KEYBOARD, kc_keyboard_device) -#endif /* __KC_KEYB_H__ */ +#endif // MAME_MACHINE_KC_KEYB_H diff --git a/src/mame/machine/km035.cpp b/src/mame/machine/km035.cpp index 133a03efc45..6b144f5b4e2 100644 --- a/src/mame/machine/km035.cpp +++ b/src/mame/machine/km035.cpp @@ -34,7 +34,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type KM035 = device_creator; +DEFINE_DEVICE_TYPE(KM035, km035_device, "km035", "KM035 Keyboard") ROM_START( km035 ) ROM_REGION (0x800, KM035_CPU_TAG, 0) @@ -49,14 +49,6 @@ static ADDRESS_MAP_START( km035_map, AS_PROGRAM, 8, km035_device ) AM_RANGE(0x0000, 0x07ff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( km035_iomap, AS_IO, 8, km035_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - //------------------------------------------------- // MACHINE_CONFIG //------------------------------------------------- @@ -64,7 +56,13 @@ ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( km035 ) MCFG_CPU_ADD(KM035_CPU_TAG, I8035, XTAL_4_608MHz) MCFG_CPU_PROGRAM_MAP(km035_map) - MCFG_CPU_IO_MAP(km035_iomap) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(km035_device, bus_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(km035_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(km035_device, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(km035_device, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(km035_device, p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(km035_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(km035_device, t1_r)) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD(KM035_SPK_TAG, BEEP, 3250) @@ -271,7 +269,7 @@ ioport_constructor km035_device::device_input_ports() const //------------------------------------------------- km035_device::km035_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, KM035, "KM035 keyboard", tag, owner, clock, "km035", __FILE__), + : device_t(mconfig, KM035, tag, owner, clock), m_maincpu(*this, KM035_CPU_TAG), m_speaker(*this, KM035_SPK_TAG), m_kbd(*this, "KBD%u", 0), @@ -369,7 +367,7 @@ WRITE8_MEMBER( km035_device::bus_w ) // t0_r - //------------------------------------------------- -READ8_MEMBER( km035_device::t0_r ) +READ_LINE_MEMBER( km035_device::t0_r ) { return m_keylatch; } @@ -378,7 +376,7 @@ READ8_MEMBER( km035_device::t0_r ) // t1_r - //------------------------------------------------- -READ8_MEMBER( km035_device::t1_r ) +READ_LINE_MEMBER( km035_device::t1_r ) { return m_rx; } diff --git a/src/mame/machine/km035.h b/src/mame/machine/km035.h index bbc5afcdf1d..599c2cd64a2 100644 --- a/src/mame/machine/km035.h +++ b/src/mame/machine/km035.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Sergey Svishchev -#pragma once +#ifndef MAME_MACHINE_KM035_H +#define MAME_MACHINE_KM035_H -#ifndef __KM035_H__ -#define __KM035_H__ +#pragma once #include "cpu/mcs48/mcs48.h" #include "sound/beep.h" @@ -44,8 +44,8 @@ public: DECLARE_WRITE8_MEMBER( p2_w ); DECLARE_READ8_MEMBER( p1_r ); DECLARE_READ8_MEMBER( p2_r ); - DECLARE_READ8_MEMBER( t0_r ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); DECLARE_WRITE_LINE_MEMBER( write_rxd ); @@ -73,6 +73,6 @@ private: }; // device type definition -extern const device_type KM035; +DECLARE_DEVICE_TYPE(KM035, km035_device) -#endif +#endif // MAME_MACHINE_KM035_H diff --git a/src/mame/machine/konami1.cpp b/src/mame/machine/konami1.cpp index f3b6b920934..501b54c3018 100644 --- a/src/mame/machine/konami1.cpp +++ b/src/mame/machine/konami1.cpp @@ -9,10 +9,10 @@ #include "emu.h" #include "konami1.h" -const device_type KONAMI1 = device_creator; +DEFINE_DEVICE_TYPE(KONAMI1, konami1_device, "konami1", "KONAMI-1") konami1_device::konami1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : m6809_base_device(mconfig, "KONAMI-1", tag, owner, clock, KONAMI1, 1, "konami1", __FILE__) + : m6809_base_device(mconfig, tag, owner, clock, KONAMI1, 1) { m_boundary = 0x0000; } diff --git a/src/mame/machine/konami1.h b/src/mame/machine/konami1.h index a15ad165b36..a21542a1967 100644 --- a/src/mame/machine/konami1.h +++ b/src/mame/machine/konami1.h @@ -1,5 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert +#ifndef MAME_MACHINE_KONAMI1_H +#define MAME_MACHINE_KONAMI1_H + +#pragma once + #include "cpu/m6809/m6809.h" @@ -23,4 +28,6 @@ protected: virtual void device_start() override; }; -extern const device_type KONAMI1; +DECLARE_DEVICE_TYPE(KONAMI1, konami1_device) + +#endif // MAME_MACHINE_KONAMI1_H diff --git a/src/mame/machine/konppc.cpp b/src/mame/machine/konppc.cpp index 2d841620c82..b9429c8a1e6 100644 --- a/src/mame/machine/konppc.cpp +++ b/src/mame/machine/konppc.cpp @@ -14,10 +14,10 @@ /*****************************************************************************/ -const device_type KONPPC = device_creator; +DEFINE_DEVICE_TYPE(KONPPC, konppc_device, "konppc", "Konami PowerPC Common Functions") konppc_device::konppc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, KONPPC, "Konami PowerPC Common Functions", tag, owner, clock, "konppc", __FILE__), + : device_t(mconfig, KONPPC, tag, owner, clock), cgboard_type(0), num_cgboards(0)/*, cgboard_id(MAX_CG_BOARDS)*/ diff --git a/src/mame/machine/konppc.h b/src/mame/machine/konppc.h index a4657a01edc..8ec5324e1bd 100644 --- a/src/mame/machine/konppc.h +++ b/src/mame/machine/konppc.h @@ -1,25 +1,27 @@ // license:BSD-3-Clause // copyright-holders:Ville Linde -#ifndef _KONPPC_H -#define _KONPPC_H +#ifndef MAME_MACHINE_KONPPC_H +#define MAME_MACHINE_KONPPC_H -#define CGBOARD_TYPE_ZR107 0 -#define CGBOARD_TYPE_GTICLUB 1 -#define CGBOARD_TYPE_NWKTR 2 -#define CGBOARD_TYPE_HORNET 3 -#define CGBOARD_TYPE_HANGPLT 4 - -#define MAX_CG_BOARDS 2 +#pragma once #define MCFG_KONPPC_CGBOARD_NUMBER(_num) \ konppc_device::static_set_num_boards(*device, _num); #define MCFG_KONPPC_CGBOARD_TYPE(_cgtype) \ - konppc_device::static_set_cbboard_type(*device, _cgtype); + konppc_device::static_set_cbboard_type(*device, konppc_device::CGBOARD_TYPE_##_cgtype); class konppc_device : public device_t { public: + static constexpr int CGBOARD_TYPE_ZR107 = 0; + static constexpr int CGBOARD_TYPE_GTICLUB = 1; + static constexpr int CGBOARD_TYPE_NWKTR = 2; + static constexpr int CGBOARD_TYPE_HORNET = 3; + static constexpr int CGBOARD_TYPE_HANGPLT = 4; + + static constexpr int MAX_CG_BOARDS = 2; + // construction/destruction konppc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -98,9 +100,9 @@ private: // device type definition -extern const device_type KONPPC; +DECLARE_DEVICE_TYPE(KONPPC, konppc_device) void draw_7segment_led(bitmap_rgb32 &bitmap, int x, int y, uint8_t value); -#endif +#endif // MAME_MACHINE_KONPPC_H diff --git a/src/mame/machine/leland.cpp b/src/mame/machine/leland.cpp index ae9972572be..694c910383f 100644 --- a/src/mame/machine/leland.cpp +++ b/src/mame/machine/leland.cpp @@ -9,8 +9,10 @@ ***************************************************************************/ #include "emu.h" -#include "cpu/z80/z80.h" #include "includes/leland.h" +#include "audio/leland.h" + +#include "cpu/z80/z80.h" /************************************* diff --git a/src/mame/machine/lisa.cpp b/src/mame/machine/lisa.cpp index cfc9ef45f60..0c5b73c0826 100644 --- a/src/mame/machine/lisa.cpp +++ b/src/mame/machine/lisa.cpp @@ -945,7 +945,8 @@ void lisa_state::machine_start() m_mouse_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(lisa_state::handle_mouse),this)); /* read command every ms (don't know the real value) */ - machine().scheduler().timer_pulse(attotime::from_msec(1), timer_expired_delegate(FUNC(lisa_state::set_COPS_ready),this)); + m_cops_ready_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(lisa_state::set_COPS_ready), this)); + m_cops_ready_timer->adjust(attotime::from_msec(1), 0, attotime::from_msec(1)); m_nvram->set_base(m_fdc_ram, 1024); } diff --git a/src/mame/machine/lviv.cpp b/src/mame/machine/lviv.cpp index cebbe846cc6..24701e193d1 100644 --- a/src/mame/machine/lviv.cpp +++ b/src/mame/machine/lviv.cpp @@ -2,7 +2,7 @@ // copyright-holders:Krzysztof Strzecha /*************************************************************************** - machine.c + lviv.cpp Functions to emulate general aspects of PK-01 Lviv (RAM, ROM, interrupts, I/O ports) @@ -208,8 +208,6 @@ void lviv_state::machine_reset() membank("bank3")->set_base(mem + 0x010000); membank("bank4")->set_base(mem + 0x010000); - /*machine().scheduler().timer_pulse(TIME_IN_NSEC(200), FUNC(lviv_draw_pixel));*/ - /*memset(m_ram->pointer(), 0, sizeof(unsigned char)*0xffff);*/ } @@ -229,29 +227,29 @@ Lviv snapshot files (SAV) 1411D - 1412A: ??? (something additional) *******************************************************************************/ -void lviv_state::lviv_setup_snapshot (uint8_t * data) +void lviv_state::lviv_setup_snapshot(uint8_t * data) { unsigned char lo,hi; /* Set registers */ lo = data[0x14112] & 0x0ff; hi = data[0x14111] & 0x0ff; - m_maincpu->set_state_int(I8085_BC, (hi << 8) | lo); + m_maincpu->set_state_int(i8080_cpu_device::I8085_BC, (hi << 8) | lo); lo = data[0x14114] & 0x0ff; hi = data[0x14113] & 0x0ff; - m_maincpu->set_state_int(I8085_DE, (hi << 8) | lo); + m_maincpu->set_state_int(i8080_cpu_device::I8085_DE, (hi << 8) | lo); lo = data[0x14116] & 0x0ff; hi = data[0x14115] & 0x0ff; - m_maincpu->set_state_int(I8085_HL, (hi << 8) | lo); + m_maincpu->set_state_int(i8080_cpu_device::I8085_HL, (hi << 8) | lo); lo = data[0x14118] & 0x0ff; hi = data[0x14117] & 0x0ff; - m_maincpu->set_state_int(I8085_AF, (hi << 8) | lo); + m_maincpu->set_state_int(i8080_cpu_device::I8085_AF, (hi << 8) | lo); lo = data[0x14119] & 0x0ff; hi = data[0x1411a] & 0x0ff; - m_maincpu->set_state_int(I8085_SP, (hi << 8) | lo); + m_maincpu->set_state_int(i8080_cpu_device::I8085_SP, (hi << 8) | lo); lo = data[0x1411b] & 0x0ff; hi = data[0x1411c] & 0x0ff; - m_maincpu->set_state_int(I8085_PC, (hi << 8) | lo); + m_maincpu->set_state_int(i8080_cpu_device::I8085_PC, (hi << 8) | lo); /* Memory dump */ memcpy (m_ram->pointer(), data+0x0011, 0xc000); @@ -267,12 +265,12 @@ void lviv_state::lviv_setup_snapshot (uint8_t * data) void lviv_state::dump_registers() { - logerror("PC = %04x\n", (unsigned) m_maincpu->state_int(I8085_PC)); - logerror("SP = %04x\n", (unsigned) m_maincpu->state_int(I8085_SP)); - logerror("AF = %04x\n", (unsigned) m_maincpu->state_int(I8085_AF)); - logerror("BC = %04x\n", (unsigned) m_maincpu->state_int(I8085_BC)); - logerror("DE = %04x\n", (unsigned) m_maincpu->state_int(I8085_DE)); - logerror("HL = %04x\n", (unsigned) m_maincpu->state_int(I8085_HL)); + logerror("PC = %04x\n", (unsigned) m_maincpu->state_int(i8080_cpu_device::I8085_PC)); + logerror("SP = %04x\n", (unsigned) m_maincpu->state_int(i8080_cpu_device::I8085_SP)); + logerror("AF = %04x\n", (unsigned) m_maincpu->state_int(i8080_cpu_device::I8085_AF)); + logerror("BC = %04x\n", (unsigned) m_maincpu->state_int(i8080_cpu_device::I8085_BC)); + logerror("DE = %04x\n", (unsigned) m_maincpu->state_int(i8080_cpu_device::I8085_DE)); + logerror("HL = %04x\n", (unsigned) m_maincpu->state_int(i8080_cpu_device::I8085_HL)); } image_verify_result lviv_state::lviv_verify_snapshot(uint8_t * data, uint32_t size) diff --git a/src/mame/machine/m1comm.cpp b/src/mame/machine/m1comm.cpp index be4f81f0381..c078bac817e 100644 --- a/src/mame/machine/m1comm.cpp +++ b/src/mame/machine/m1comm.cpp @@ -57,7 +57,8 @@ Notes: #define Z80_TAG "m1commcpu" -//#define __M1COMM_VERBOSE__ +#define VERBOSE 0 +#include "logmacro.h" /************************************* * M1COMM Memory Map @@ -95,7 +96,7 @@ ROM_END // GLOBAL VARIABLES //************************************************************************** -const device_type M1COMM = device_creator; +DEFINE_DEVICE_TYPE(M1COMM, m1comm_device, "m1comm", "Model 1 Communication Board") //------------------------------------------------- // machine_config_additions - device-specific @@ -125,7 +126,7 @@ const tiny_rom_entry *m1comm_device::device_rom_region() const //------------------------------------------------- m1comm_device::m1comm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, M1COMM, "MODEL-1 COMMUNICATION BD", tag, owner, clock, "m1comm", __FILE__), + device_t(mconfig, M1COMM, tag, owner, clock), m_commcpu(*this, Z80_TAG), m_line_rx(OPEN_FLAG_WRITE | OPEN_FLAG_CREATE ), m_line_tx(OPEN_FLAG_READ) @@ -178,43 +179,33 @@ READ8_MEMBER(m1comm_device::dlc_reg_r) // dirty hack to keep Z80 in RESET state uint8_t result = m_dlc_reg[offset]; -#ifdef __M1COMM_VERBOSE__ - osd_printf_verbose("m1comm-dlc_reg_r: read register %02x for value %02x\n", offset, result); -#endif + LOG("m1comm-dlc_reg_r: read register %02x for value %02x\n", offset, result); return result; } WRITE8_MEMBER(m1comm_device::dlc_reg_w) { m_dlc_reg[offset] = data; -#ifdef __M1COMM_VERBOSE__ - osd_printf_verbose("m1comm-dlc_reg_w: write register %02x for value %02x\n", offset, data); -#endif + LOG("m1comm-dlc_reg_w: write register %02x for value %02x\n", offset, data); } READ8_MEMBER(m1comm_device::dma_reg_r) { uint8_t result = m_dma_reg[offset]; -#ifdef __M1COMM_VERBOSE__ - osd_printf_verbose("m1comm-dma_reg_r: read register %02x for value %02x\n", offset, result); -#endif + LOG("m1comm-dma_reg_r: read register %02x for value %02x\n", offset, result); return result; } WRITE8_MEMBER(m1comm_device::dma_reg_w) { -#ifdef __M1COMM_VERBOSE__ - osd_printf_verbose("m1comm-dma_reg_w: %02x %02x\n", offset, data); -#endif + LOG("m1comm-dma_reg_w: %02x %02x\n", offset, data); m_dma_reg[offset] = data; } READ8_MEMBER(m1comm_device::syn_r) { uint8_t result = m_syn | 0xfc; -#ifdef __M1COMM_VERBOSE__ - osd_printf_verbose("m1comm-syn_r: read register %02x for value %02x\n", offset, result); -#endif + LOG("m1comm-syn_r: read register %02x for value %02x\n", offset, result); return result; } @@ -222,38 +213,32 @@ WRITE8_MEMBER(m1comm_device::syn_w) { m_syn = data & 0x03; -#ifdef __M1COMM_VERBOSE__ switch (data & 0x02) { - case 0x00: - osd_printf_verbose("m1comm-syn_w: VINT disabled\n"); - break; + case 0x00: + LOG("m1comm-syn_w: VINT disabled\n"); + break; - case 0x02: - osd_printf_verbose("m1comm-syn_w: VINT enabled\n"); - break; + case 0x02: + LOG("m1comm-syn_w: VINT enabled\n"); + break; - default: - osd_printf_verbose("m1comm-syn_w: %02x\n", data); - break; + default: + LOG("m1comm-syn_w: %02x\n", data); + break; } -#endif } READ8_MEMBER(m1comm_device::zfg_r) { uint8_t result = m_zfg | (~m_fg << 7) | 0x7e; -#ifdef __M1COMM_VERBOSE__ - osd_printf_verbose("m1comm-zfg_r: read register %02x for value %02x\n", offset, result); -#endif + LOG("m1comm-zfg_r: read register %02x for value %02x\n", offset, result); return result; } WRITE8_MEMBER(m1comm_device::zfg_w) { -#ifdef __M1COMM_VERBOSE__ - osd_printf_verbose("m1comm-zfg_w: %02x\n", data); -#endif + LOG("m1comm-zfg_w: %02x\n", data); m_zfg = data & 0x01; } @@ -276,7 +261,7 @@ WRITE8_MEMBER(m1comm_device::cn_w) { m_cn = data & 0x01; -#ifndef __M1COMM_SIMULATION__ +#ifndef M1COMM_SIMULATION if (!m_cn) device_reset(); else @@ -317,20 +302,18 @@ WRITE8_MEMBER(m1comm_device::fg_w) void m1comm_device::check_vint_irq() { -#ifndef __M1COMM_SIMULATION__ +#ifndef M1COMM_SIMULATION if (m_syn & 0x02) { m_commcpu->set_input_line_and_vector(0, HOLD_LINE, 0xef); -#ifdef __M1COMM_VERBOSE__ - osd_printf_verbose("m1comm-INT5\n"); -#endif + LOG("m1comm-INT5\n"); } #else comm_tick(); #endif } -#ifdef __M1COMM_SIMULATION__ +#ifdef M1COMM_SIMULATION void m1comm_device::comm_tick() { if (m_linkenable == 0x01) diff --git a/src/mame/machine/m1comm.h b/src/mame/machine/m1comm.h index 2321c5ebddb..064a0f04a16 100644 --- a/src/mame/machine/m1comm.h +++ b/src/mame/machine/m1comm.h @@ -1,11 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Ariane Fugmann -#pragma once +#ifndef MAME_MACHINE_M1COMM_H +#define MAME_MACHINE_M1COMM_H -#ifndef __M1COMM_H__ -#define __M1COMM_H__ +#pragma once -#define __M1COMM_SIMULATION__ +#define M1COMM_SIMULATION #include "cpu/z80/z80.h" @@ -80,7 +80,7 @@ private: char m_remotehost[256]; uint8_t m_buffer[0x1000]; -#ifdef __M1COMM_SIMULATION__ +#ifdef M1COMM_SIMULATION uint8_t m_linkenable; uint16_t m_linktimer; uint8_t m_linkalive; @@ -94,4 +94,4 @@ private: // device type definition extern const device_type M1COMM; -#endif /* __M1COMM_H__ */ +#endif // MAME_MACHINE_M1COMM_H diff --git a/src/mame/machine/m20_8086.cpp b/src/mame/machine/m20_8086.cpp index fa690919fa4..891128bf1ad 100644 --- a/src/mame/machine/m20_8086.cpp +++ b/src/mame/machine/m20_8086.cpp @@ -4,10 +4,10 @@ #include "m20_8086.h" #include "machine/ram.h" -const device_type M20_8086 = device_creator; +DEFINE_DEVICE_TYPE(M20_8086, m20_8086_device, "m20_8086", "Olivetti M20 8086 Adapter") m20_8086_device::m20_8086_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, M20_8086, "Olivetti M20 8086 Adapter", tag, owner, clock, "m20_8086", __FILE__), + device_t(mconfig, M20_8086, tag, owner, clock), m_8086(*this, "8086"), m_maincpu(*this, ":maincpu"), m_pic(*this, ":i8259"), diff --git a/src/mame/machine/m20_8086.h b/src/mame/machine/m20_8086.h index 56f7a81e43a..c49fe1173cc 100644 --- a/src/mame/machine/m20_8086.h +++ b/src/mame/machine/m20_8086.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Carl -#ifndef M20_8086_H_ -#define M20_8086_H_ +#ifndef MAME_MACHINE_M20_8086_H +#define MAME_MACHINE_M20_8086_H #include "cpu/i86/i86.h" #include "machine/pic8259.h" @@ -20,20 +20,22 @@ public: DECLARE_WRITE_LINE_MEMBER(nvi_w); DECLARE_WRITE16_MEMBER(handshake_w); IRQ_CALLBACK_MEMBER(int_cb); - bool halted() { return m_8086_halt; } - required_device m_8086; + + void halt() { m_8086->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); } + bool halted() const { return m_8086_halt; } protected: void device_start() override; void device_reset() override; private: + required_device m_8086; required_device m_maincpu; required_device m_pic; bool m_8086_halt; int m_nvi, m_vi; }; -extern const device_type M20_8086; +DECLARE_DEVICE_TYPE(M20_8086, m20_8086_device) -#endif /* M20_8086_H_ */ +#endif // MAME_MACHINE_M20_8086_H diff --git a/src/mame/machine/m20_kbd.cpp b/src/mame/machine/m20_kbd.cpp index 796dcae5a7b..78942ef41b4 100644 --- a/src/mame/machine/m20_kbd.cpp +++ b/src/mame/machine/m20_kbd.cpp @@ -155,7 +155,7 @@ INPUT_PORTS_END m20_keyboard_device::m20_keyboard_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) - : buffered_rs232_device(mconfig, M20_KEYBOARD, "M20 Keyboard", tag, owner, 0, "m20_keyboard", __FILE__) + : buffered_rs232_device(mconfig, M20_KEYBOARD, tag, owner, 0) , device_matrix_keyboard_interface(mconfig, *this, "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", "LINE8") , m_modifiers(*this, "MODIFIERS") { @@ -235,4 +235,4 @@ void m20_keyboard_device::received_byte(uint8_t byte) } -const device_type M20_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(M20_KEYBOARD, m20_keyboard_device, "m20_kbd", "Olivetti M20 Keyboard") diff --git a/src/mame/machine/m20_kbd.h b/src/mame/machine/m20_kbd.h index 2c6ac21f144..7b022f905f4 100644 --- a/src/mame/machine/m20_kbd.h +++ b/src/mame/machine/m20_kbd.h @@ -23,6 +23,6 @@ private: required_ioport m_modifiers; }; -extern const device_type M20_KEYBOARD; +DECLARE_DEVICE_TYPE(M20_KEYBOARD, m20_keyboard_device) #endif // MAME_MACHINE_M20KBD_H diff --git a/src/mame/machine/m24_kbd.cpp b/src/mame/machine/m24_kbd.cpp index d29e8e6b23d..835d1216e2e 100644 --- a/src/mame/machine/m24_kbd.cpp +++ b/src/mame/machine/m24_kbd.cpp @@ -3,7 +3,7 @@ #include "emu.h" #include "m24_kbd.h" -const device_type M24_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(M24_KEYBOARD, m24_keyboard_device, "m24_kbd", "Olivetti M24 Keyboard") ROM_START( m24_keyboard ) ROM_REGION(0x800, "mcu", 0) @@ -16,17 +16,14 @@ const tiny_rom_entry *m24_keyboard_device::device_rom_region() const return ROM_NAME( m24_keyboard ); } -static ADDRESS_MAP_START( m24_keyboard_io, AS_IO, 8, m24_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(p2_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( m24_keyboard ) MCFG_CPU_ADD("mcu", I8049, XTAL_6MHz) - MCFG_CPU_IO_MAP(m24_keyboard_io) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(m24_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(m24_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(m24_keyboard_device, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(m24_keyboard_device, p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(m24_keyboard_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(m24_keyboard_device, t1_r)) MACHINE_CONFIG_END machine_config_constructor m24_keyboard_device::device_mconfig_additions() const @@ -212,7 +209,7 @@ ioport_constructor m24_keyboard_device::device_input_ports() const } m24_keyboard_device::m24_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, M24_KEYBOARD, "Olivetti M24 Keyboard", tag, owner, clock, "m24_kbd", __FILE__) + : device_t(mconfig, M24_KEYBOARD, tag, owner, clock) , m_rows(*this, "ROW.%u", 0) , m_mousebtn(*this, "MOUSEBTN") , m_out_data(*this) @@ -259,12 +256,12 @@ READ8_MEMBER( m24_keyboard_device::p2_r ) return (m_keypress << 7) | m_mousebtn->read(); } -READ8_MEMBER( m24_keyboard_device::t0_r ) +READ_LINE_MEMBER( m24_keyboard_device::t0_r ) { return 0; } -READ8_MEMBER( m24_keyboard_device::t1_r ) +READ_LINE_MEMBER( m24_keyboard_device::t1_r ) { return 0; } diff --git a/src/mame/machine/m24_kbd.h b/src/mame/machine/m24_kbd.h index e8ce21b81cc..a8845809ff8 100644 --- a/src/mame/machine/m24_kbd.h +++ b/src/mame/machine/m24_kbd.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Carl -#ifndef M24KBD_H_ -#define M24KBD_H_ +#ifndef MAME_MACHINE_M24_KBD_H +#define MAME_MACHINE_M24_KBD_H + +#pragma once #include "cpu/mcs48/mcs48.h" @@ -13,24 +15,26 @@ class m24_keyboard_device : public device_t public: m24_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_out_data_handler(device_t &device, _Object object) { return downcast(device).m_out_data.set_callback(object); } + template static devcb_base &set_out_data_handler(device_t &device, Object &&cb) { return downcast(device).m_out_data.set_callback(std::forward(cb)); } virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - void device_start() override; - void device_reset() override; - void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - DECLARE_WRITE8_MEMBER(bus_w); DECLARE_READ8_MEMBER(p1_r); DECLARE_WRITE8_MEMBER(p1_w); DECLARE_READ8_MEMBER(p2_r); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_WRITE_LINE_MEMBER(clock_w); DECLARE_WRITE_LINE_MEMBER(data_w); + +protected: + void device_start() override; + void device_reset() override; + void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + private: required_ioport_array<16> m_rows; required_ioport m_mousebtn; @@ -41,6 +45,6 @@ private: emu_timer *m_reset_timer; }; -extern const device_type M24_KEYBOARD; +DECLARE_DEVICE_TYPE(M24_KEYBOARD, m24_keyboard_device) -#endif /* M24KBD_H_ */ +#endif // MAME_MACHINE_M24_KBD_H diff --git a/src/mame/machine/m24_z8000.cpp b/src/mame/machine/m24_z8000.cpp index ffdc85a89d9..2edf10fe7c0 100644 --- a/src/mame/machine/m24_z8000.cpp +++ b/src/mame/machine/m24_z8000.cpp @@ -3,10 +3,10 @@ #include "emu.h" #include "m24_z8000.h" -const device_type M24_Z8000 = device_creator; +DEFINE_DEVICE_TYPE(M24_Z8000, m24_z8000_device, "m24_z8000", "Olivetti M24 Z8000 Adapter") m24_z8000_device::m24_z8000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, M24_Z8000, "Olivetti M24 Z8000 Adapter", tag, owner, clock, "m24_z8000", __FILE__), + device_t(mconfig, M24_Z8000, tag, owner, clock), m_z8000(*this, "z8000"), m_maincpu(*this, ":maincpu"), m_pic(*this, ":mb:pic8259"), diff --git a/src/mame/machine/m24_z8000.h b/src/mame/machine/m24_z8000.h index e0eac4ef2ca..9e2590701ef 100644 --- a/src/mame/machine/m24_z8000.h +++ b/src/mame/machine/m24_z8000.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Carl -#ifndef M24_Z8000_H_ -#define M24_Z8000_H_ +#ifndef MAME_MACHINE_M24_Z8000_H +#define MAME_MACHINE_M24_Z8000_H + +#pragma once #include "cpu/z8000/z8000.h" #include "machine/i8251.h" @@ -18,7 +20,7 @@ public: virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; - template static devcb_base &set_halt_callback(device_t &device, _Object object) { return downcast(device).m_halt_out.set_callback(object); } + template static devcb_base &set_halt_callback(device_t &device, Object &&cb) { return downcast(device).m_halt_out.set_callback(std::forward(cb)); } DECLARE_READ16_MEMBER(pmem_r); DECLARE_WRITE16_MEMBER(pmem_w); @@ -33,14 +35,18 @@ public: DECLARE_WRITE_LINE_MEMBER(mo_w); DECLARE_WRITE_LINE_MEMBER(timer_irq_w); IRQ_CALLBACK_MEMBER(int_cb); - bool halted() { return m_z8000_halt; } - required_device m_z8000; + DECLARE_WRITE_LINE_MEMBER(halt_w) { m_z8000->set_input_line(INPUT_LINE_HALT, state); } + DECLARE_WRITE_LINE_MEMBER(int_w) { m_z8000->set_input_line(INPUT_LINE_IRQ1, state); } + + bool halted() const { return m_z8000_halt; } + protected: void device_start() override; void device_reset() override; private: + required_device m_z8000; required_device m_maincpu; required_device m_pic; devcb_write_line m_halt_out; @@ -51,5 +57,6 @@ private: }; extern const device_type M24_Z8000; +DECLARE_DEVICE_TYPE(M24_Z8000, m24_z8000_device) -#endif /* M24_Z8000_H_ */ +#endif // MAME_MACHINE_M24_Z8000_H diff --git a/src/mame/machine/m2comm.cpp b/src/mame/machine/m2comm.cpp index d7b313b8e08..3285e9a7dff 100644 --- a/src/mame/machine/m2comm.cpp +++ b/src/mame/machine/m2comm.cpp @@ -168,7 +168,8 @@ Sega PC BD MODEL2 C-CRX COMMUNICATION 837-12839 #include "emuopts.h" #include "machine/m2comm.h" -//#define __M2COMM_VERBOSE__ +#define VERBOSE 0 +#include "logmacro.h" MACHINE_CONFIG_FRAGMENT( m2comm ) MACHINE_CONFIG_END @@ -177,7 +178,7 @@ MACHINE_CONFIG_END // GLOBAL VARIABLES //************************************************************************** -const device_type M2COMM = device_creator; +DEFINE_DEVICE_TYPE(M2COMM, m2comm_device, "m2comm", "Model 2 Communication Board") //------------------------------------------------- // machine_config_additions - device-specific @@ -198,7 +199,7 @@ machine_config_constructor m2comm_device::device_mconfig_additions() const //------------------------------------------------- m2comm_device::m2comm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, M2COMM, "MODEL2 COMMUNICATION BD", tag, owner, clock, "m2comm", __FILE__), + device_t(mconfig, M2COMM, tag, owner, clock), m_line_rx(OPEN_FLAG_WRITE | OPEN_FLAG_CREATE ), m_line_tx(OPEN_FLAG_READ) { @@ -239,34 +240,26 @@ void m2comm_device::device_reset() READ8_MEMBER(m2comm_device::zfg_r) { uint8_t result = m_zfg | (~m_fg << 7) | 0x7e; -#ifdef __M2COMM_VERBOSE__ - osd_printf_verbose("m2comm-zfg_r: read register %02x for value %02x\n", offset, result); -#endif + LOG("m2comm-zfg_r: read register %02x for value %02x\n", offset, result); return result; } WRITE8_MEMBER(m2comm_device::zfg_w) { -#ifdef __M2COMM_VERBOSE__ - osd_printf_verbose("m2comm-zfg_w: %02x\n", data); -#endif + LOG("m2comm-zfg_w: %02x\n", data); m_zfg = data & 0x01; } READ8_MEMBER(m2comm_device::share_r) { uint8_t result = m_shared[offset]; -#ifdef __M2COMM_VERBOSE__ - osd_printf_verbose("m2comm-share_r: read shared memory %02x for value %02x\n", offset, result); -#endif + LOG("m2comm-share_r: read shared memory %02x for value %02x\n", offset, result); return result; } WRITE8_MEMBER(m2comm_device::share_w) { -#ifdef __M2COMM_VERBOSE__ - osd_printf_verbose("m2comm-share_w: %02x %02x\n", offset, data); -#endif + LOG("m2comm-share_w: %02x %02x\n", offset, data); m_shared[offset] = data; } @@ -279,7 +272,7 @@ WRITE8_MEMBER(m2comm_device::cn_w) { m_cn = data & 0x01; -#ifndef __M2COMM_SIMULATION__ +#ifndef M2COMM_SIMULATION if (!m_cn) device_reset(); #else @@ -336,13 +329,13 @@ WRITE8_MEMBER(m2comm_device::fg_w) void m2comm_device::check_vint_irq() { -#ifndef __M2COMM_SIMULATION__ +#ifndef M2COMM_SIMULATION #else comm_tick(); #endif } -#ifdef __M2COMM_SIMULATION__ +#ifdef M2COMM_SIMULATION void m2comm_device::comm_tick() { if (m_linkenable == 0x01) diff --git a/src/mame/machine/m2comm.h b/src/mame/machine/m2comm.h index 5145b59d54b..2667f277340 100644 --- a/src/mame/machine/m2comm.h +++ b/src/mame/machine/m2comm.h @@ -1,11 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Ariane Fugmann -#pragma once +#ifndef MAME_MACHINE_M2COMM_H +#define MAME_MACHINE_M2COMM_H -#ifndef __M2COMM_H__ -#define __M2COMM_H__ +#pragma once -#define __M2COMM_SIMULATION__ +#define M2COMM_SIMULATION #define MCFG_M2COMM_ADD(_tag ) \ @@ -64,7 +64,7 @@ private: char m_remotehost[256]; uint8_t m_buffer[0x4000]; -#ifdef __M2COMM_SIMULATION__ +#ifdef M2COMM_SIMULATION uint8_t m_linkenable; uint16_t m_linktimer; uint8_t m_linkalive; @@ -76,6 +76,6 @@ private: }; // device type definition -extern const device_type M2COMM; +DECLARE_DEVICE_TYPE(M2COMM, m2comm_device) -#endif /* __M2COMM_H__ */ +#endif // MAME_MACHINE_M2COMM_H diff --git a/src/mame/machine/m3comm.cpp b/src/mame/machine/m3comm.cpp index 0c90c8a025a..7017e16928a 100644 --- a/src/mame/machine/m3comm.cpp +++ b/src/mame/machine/m3comm.cpp @@ -116,7 +116,7 @@ MACHINE_CONFIG_END // GLOBAL VARIABLES //************************************************************************** -const device_type M3COMM = device_creator; +DEFINE_DEVICE_TYPE(M3COMM, m3comm_device, "m3comm", "Model 3 Communication Board") //------------------------------------------------- // machine_config_additions - device-specific @@ -137,7 +137,7 @@ machine_config_constructor m3comm_device::device_mconfig_additions() const //------------------------------------------------- m3comm_device::m3comm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, M3COMM, "MODEL-3 COMMUNICATION BD", tag, owner, clock, "m3comm", __FILE__), + device_t(mconfig, M3COMM, tag, owner, clock), m68k_ram(*this, "m68k_ram"), m_commcpu(*this, M68K_TAG), m_ram(*this, RAM_TAG), diff --git a/src/mame/machine/m3comm.h b/src/mame/machine/m3comm.h index 5e1ba416664..2989bddabba 100644 --- a/src/mame/machine/m3comm.h +++ b/src/mame/machine/m3comm.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:MetalliC -#pragma once +#ifndef MAME_MACHINE_M3COMM_H +#define MAME_MACHINE_M3COMM_H -#ifndef __M3COMM_H__ -#define __M3COMM_H__ +#pragma once #include "machine/ram.h" #include "cpu/m68000/m68000.h" @@ -77,6 +77,6 @@ private: }; // device type definition -extern const device_type M3COMM; +DECLARE_DEVICE_TYPE(M3COMM, m3comm_device) -#endif /* __M3COMM_H__ */ +#endif // MAME_MACHINE_M3COMM_H diff --git a/src/mame/machine/mac.cpp b/src/mame/machine/mac.cpp index 43cac6789cf..da1791d1191 100644 --- a/src/mame/machine/mac.cpp +++ b/src/mame/machine/mac.cpp @@ -1238,10 +1238,15 @@ WRITE_LINE_MEMBER(mac_state::mac_adb_via_out_cb2) } else { + m_adb_command <<= 1; if (state) + { m_adb_command |= 1; + } else + { m_adb_command &= ~1; + } } } @@ -2018,7 +2023,7 @@ void mac_state::machine_reset() } WRITE_LINE_MEMBER(mac_state::cuda_reset_w) -{ +{ if ((state == ASSERT_LINE) && (m_model < MODEL_MAC_POWERMAC_6100)) { set_memory_overlay(0); diff --git a/src/mame/machine/macadb.cpp b/src/mame/machine/macadb.cpp index a3f81e3a6b4..6eabc071851 100644 --- a/src/mame/machine/macadb.cpp +++ b/src/mame/machine/macadb.cpp @@ -283,7 +283,7 @@ void mac_state::adb_talk() addr = (m_adb_command>>4); reg = (m_adb_command & 3); -// printf("Mac sent %x (cmd %d addr %d reg %d mr %d kr %d)\n", mac->m_adb_command, (mac->m_adb_command>>2)&3, addr, reg, m_adb_mouseaddr, m_adb_keybaddr); + //printf("Mac sent %x (cmd %d addr %d reg %d mr %d kr %d)\n", m_adb_command, (m_adb_command>>2)&3, addr, reg, m_adb_mouseaddr, m_adb_keybaddr); if (m_adb_waiting_cmd) { @@ -637,21 +637,15 @@ TIMER_CALLBACK_MEMBER(mac_state::mac_adb_tick) } else { - // do one clock transition on CB1 to advance the VIA shifter - m_adb_extclock ^= 1; - m_via1->write_cb1(m_adb_extclock); - - if (m_adb_direction) - { - m_adb_command <<= 1; - } - else + // for input to Mac, the VIA reads on the *other* clock edge, so update this here + if (!m_adb_direction) { m_via1->write_cb2((m_adb_send & 0x80)>>7); m_adb_send <<= 1; } - m_adb_extclock ^= 1; + // do one clock transition on CB1 to advance the VIA shifter + m_via1->write_cb1(m_adb_extclock ^ 1); m_via1->write_cb1(m_adb_extclock); m_adb_timer_ticks--; diff --git a/src/mame/machine/mackbd.cpp b/src/mame/machine/mackbd.cpp index 72f7c0d6a9c..d6f35dbc6aa 100644 --- a/src/mame/machine/mackbd.cpp +++ b/src/mame/machine/mackbd.cpp @@ -65,7 +65,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type MACKBD = device_creator; +DEFINE_DEVICE_TYPE(MACKBD, mackbd_device, "mackbd", "Macintosh Keyboard") ROM_START( mackbd ) ROM_REGION(0x800, MACKBD_CPU_TAG, 0) @@ -84,11 +84,7 @@ static ADDRESS_MAP_START( mackbd_map, AS_PROGRAM, 8, mackbd_device ) ADDRESS_MAP_END static ADDRESS_MAP_START( mackbd_io_map, AS_IO, 8, mackbd_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(p0_r) AM_RANGE(0x2f, 0x36) AM_WRITE(p0_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) ADDRESS_MAP_END //------------------------------------------------- @@ -99,6 +95,12 @@ static MACHINE_CONFIG_FRAGMENT( mackbd ) MCFG_CPU_ADD(MACKBD_CPU_TAG, I8021, 3000000) // "the approximate clock rate of the MPU is 3 MHz" MCFG_CPU_PROGRAM_MAP(mackbd_map) MCFG_CPU_IO_MAP(mackbd_io_map) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(mackbd_device, p0_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(mackbd_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(mackbd_device, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(mackbd_device, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(mackbd_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(IOPORT("MODS")) MCFG_DEVCB_RSHIFT(1) // option MACHINE_CONFIG_END static INPUT_PORTS_START( mackbd ) @@ -210,7 +212,7 @@ ioport_constructor mackbd_device::device_input_ports() const //------------------------------------------------- mackbd_device::mackbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MACKBD, "Macintosh keyboard", tag, owner, clock, "mackbd", __FILE__), + : device_t(mconfig, MACKBD, tag, owner, clock), m_maincpu(*this, MACKBD_CPU_TAG), m_clkout_handler(*this), m_dataout_handler(*this) @@ -318,11 +320,6 @@ WRITE8_MEMBER(mackbd_device::p2_w) } } -READ8_MEMBER(mackbd_device::t1_r) -{ - return (ioport("MODS")->read() & 0x2) ? 0xff : 0x00; -} - WRITE_LINE_MEMBER(mackbd_device::data_w) { data_from_mac = (state == ASSERT_LINE) ? 1 : 0; diff --git a/src/mame/machine/mackbd.h b/src/mame/machine/mackbd.h index e36acad7e33..4984f8ebc12 100644 --- a/src/mame/machine/mackbd.h +++ b/src/mame/machine/mackbd.h @@ -1,10 +1,9 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont -#pragma once - -#ifndef __MACKBD_H__ -#define __MACKBD_H__ +#ifndef MAME_MACHINE_MACKBD_H +#define MAME_MACHINE_MACKBD_H +#pragma once @@ -49,7 +48,6 @@ public: DECLARE_WRITE8_MEMBER(p1_w); DECLARE_READ8_MEMBER(p2_r); DECLARE_WRITE8_MEMBER(p2_w); - DECLARE_READ8_MEMBER(t1_r); DECLARE_WRITE_LINE_MEMBER(data_w); @@ -73,6 +71,6 @@ private: }; // device type definition -extern const device_type MACKBD; +DECLARE_DEVICE_TYPE(MACKBD, mackbd_device) -#endif +#endif // MAME_MACHINE_MACKBD_H diff --git a/src/mame/machine/macrtc.cpp b/src/mame/machine/macrtc.cpp index 94a5c5435ff..b375098daf1 100644 --- a/src/mame/machine/macrtc.cpp +++ b/src/mame/machine/macrtc.cpp @@ -33,7 +33,7 @@ enum //************************************************************************** // device type definition -const device_type RTC3430042 = device_creator; +DEFINE_DEVICE_TYPE(RTC3430042, rtc3430042_device, "rtc3430042", "Apple 343-0042 clock/PRAM") //------------------------------------------------- @@ -41,7 +41,7 @@ const device_type RTC3430042 = device_creator; //------------------------------------------------- rtc3430042_device::rtc3430042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, RTC3430042, "Apple 343-0042 clock/PRAM", tag, owner, clock, "rtc3430042", __FILE__), + : device_t(mconfig, RTC3430042, tag, owner, clock), device_rtc_interface(mconfig, *this), device_nvram_interface(mconfig, *this) { diff --git a/src/mame/machine/macrtc.h b/src/mame/machine/macrtc.h index dd96403cd99..01fba185e20 100644 --- a/src/mame/machine/macrtc.h +++ b/src/mame/machine/macrtc.h @@ -7,10 +7,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_MACRTC_H +#define MAME_MACHINE_MACRTC_H -#ifndef __RTC3430042_H__ -#define __RTC3430042_H__ +#pragma once #include "dirtc.h" @@ -96,6 +96,6 @@ private: // device type definition -extern const device_type RTC3430042; +DECLARE_DEVICE_TYPE(RTC3430042, rtc3430042_device) -#endif +#endif // MAME_MACHINE_MACRTC_H diff --git a/src/mame/machine/maple-dc.cpp b/src/mame/machine/maple-dc.cpp index aa51b0fcdf9..41bbdacc173 100644 --- a/src/mame/machine/maple-dc.cpp +++ b/src/mame/machine/maple-dc.cpp @@ -5,7 +5,7 @@ #include "maple-dc.h" #include "mie.h" -const device_type MAPLE_DC = device_creator; +DEFINE_DEVICE_TYPE(MAPLE_DC, maple_dc_device, "maple_dc", "Dreamcast Maple Bus") DEVICE_ADDRESS_MAP_START(amap, 32, maple_dc_device) AM_RANGE(0x04, 0x07) AM_READWRITE(sb_mdstar_r, sb_mdstar_w) @@ -29,7 +29,7 @@ void maple_dc_device::static_set_irq_cb(device_t &device, void (*irq_cb)(running } maple_dc_device::maple_dc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MAPLE_DC, "Dreamcast Maple Bus", tag, owner, clock, "maple_dc", __FILE__) + : device_t(mconfig, MAPLE_DC, tag, owner, clock) { // Do not move that in device_start or there will be a race // condition with the maple devices call to register_port. diff --git a/src/mame/machine/maple-dc.h b/src/mame/machine/maple-dc.h index 7c8e1b69c46..8752c34cbce 100644 --- a/src/mame/machine/maple-dc.h +++ b/src/mame/machine/maple-dc.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef __MAPLE_DC_H__ -#define __MAPLE_DC_H__ +#ifndef MAME_MACHINE_MAPLE_DC_H +#define MAME_MACHINE_MAPLE_DC_H + +#pragma once #include "cpu/sh4/sh4.h" @@ -72,6 +74,6 @@ private: const char *maincpu_tag; }; -extern const device_type MAPLE_DC; +DECLARE_DEVICE_TYPE(MAPLE_DC, maple_dc_device) -#endif /* __MAPLE_DC_H__ */ +#endif // MAME_MACHINE_MAPLE_DC_H diff --git a/src/mame/machine/mapledev.cpp b/src/mame/machine/mapledev.cpp index 01ba48849a9..68144ee0f97 100644 --- a/src/mame/machine/mapledev.cpp +++ b/src/mame/machine/mapledev.cpp @@ -12,7 +12,7 @@ void maple_device::static_set_host(device_t &device, const char *_host_tag, int } -maple_device::maple_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +maple_device::maple_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) { host_tag = nullptr; host_port = 0; diff --git a/src/mame/machine/mapledev.h b/src/mame/machine/mapledev.h index f8942d13853..6d858fbd442 100644 --- a/src/mame/machine/mapledev.h +++ b/src/mame/machine/mapledev.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef _MAPLEDEV_H_ -#define _MAPLEDEV_H_ +#ifndef MAME_MACHINE_MAPLEDEV_H +#define MAME_MACHINE_MAPLEDEV_H #define MCFG_MAPLE_DEVICE_ADD(_tag, _type, _clock, _host_tag, _host_port) \ MCFG_DEVICE_ADD(_tag, _type, _clock) \ @@ -10,8 +10,6 @@ class maple_device : public device_t { public: - maple_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - static void static_set_host(device_t &device, const char *_host_tag, int _host_port); virtual void maple_w(const uint32_t *data, uint32_t in_size) = 0; void maple_r(uint32_t *data, uint32_t &out_size, bool &partial); @@ -20,6 +18,8 @@ public: protected: enum { TIMER_ID = 1000 }; + maple_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + uint32_t reply_size; bool reply_partial; uint32_t reply_buffer[256]; @@ -47,4 +47,4 @@ private: emu_timer *timer; }; -#endif // _MAPLEDEV_H_ +#endif // MAME_MACHINE_MAPLEDEV_H diff --git a/src/mame/machine/mathbox.cpp b/src/mame/machine/mathbox.cpp index 658881873dd..fe29aa10fca 100644 --- a/src/mame/machine/mathbox.cpp +++ b/src/mame/machine/mathbox.cpp @@ -37,10 +37,10 @@ // mathbox_device - constructor //------------------------------------------------- -const device_type MATHBOX = device_creator; +DEFINE_DEVICE_TYPE(MATHBOX, mathbox_device, "mathbox", "Atari MATHBOX") mathbox_device::mathbox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MATHBOX, "Atari MATHBOX", tag, owner, clock, "mathbox", __FILE__) + : device_t(mconfig, MATHBOX, tag, owner, clock) { } diff --git a/src/mame/machine/mathbox.h b/src/mame/machine/mathbox.h index a4492309b5c..035093b0c4b 100644 --- a/src/mame/machine/mathbox.h +++ b/src/mame/machine/mathbox.h @@ -6,6 +6,10 @@ * Copyright Eric Smith * */ +#ifndef MAME_MACHINE_MATHBOX_H +#define MAME_MACHINE_MATHBOX_H + +#pragma once /*************************************************************************** DEVICE CONFIGURATION MACROS @@ -41,4 +45,6 @@ protected: int16_t m_result; }; -extern const device_type MATHBOX; +DECLARE_DEVICE_TYPE(MATHBOX, mathbox_device) + +#endif // MAME_MACHINE_MATHBOX_H diff --git a/src/mame/machine/mc8123.cpp b/src/mame/machine/mc8123.cpp index b11ec7880a0..8a4ff955299 100644 --- a/src/mame/machine/mc8123.cpp +++ b/src/mame/machine/mc8123.cpp @@ -80,12 +80,27 @@ CPU # Game Notes Seed Upper Limit #include "mc8123.h" +DEFINE_DEVICE_TYPE(MC8123, mc8123_device, "mc8123", "MC-8123") + +//------------------------------------------------- +// mc8123_device - constructor +//------------------------------------------------- + +mc8123_device::mc8123_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : z80_device(mconfig, MC8123, tag, owner, clock) + , m_key(*this, "key", 0x2000) +{ +} + + namespace { template constexpr u8 BITS(T b) { return u8(1) << b; } template constexpr u8 BITS(T b, U... c) { return (u8(1) << b) | BITS(c...); } -u8 decrypt_type0(u8 val, u8 param, unsigned swap) +} // anonymous namespace + +u8 mc8123_device::decrypt_type0(u8 val, u8 param, unsigned swap) { if (swap == 0) val = BITSWAP8(val,7,5,3,1,2,0,6,4); if (swap == 1) val = BITSWAP8(val,5,3,7,2,1,0,4,6); @@ -117,7 +132,7 @@ u8 decrypt_type0(u8 val, u8 param, unsigned swap) } -u8 decrypt_type1a(u8 val, u8 param, unsigned swap) +u8 mc8123_device::decrypt_type1a(u8 val, u8 param, unsigned swap) { if (swap == 0) val = BITSWAP8(val,4,2,6,5,3,7,1,0); if (swap == 1) val = BITSWAP8(val,6,0,5,4,3,2,1,7); @@ -145,7 +160,7 @@ u8 decrypt_type1a(u8 val, u8 param, unsigned swap) return val; } -u8 decrypt_type1b(u8 val, u8 param, unsigned swap) +u8 mc8123_device::decrypt_type1b(u8 val, u8 param, unsigned swap) { if (swap == 0) val = BITSWAP8(val,1,0,3,2,5,6,4,7); if (swap == 1) val = BITSWAP8(val,2,0,5,1,7,4,6,3); @@ -173,7 +188,7 @@ u8 decrypt_type1b(u8 val, u8 param, unsigned swap) return val; } -u8 decrypt_type2a(u8 val, u8 param, unsigned swap) +u8 mc8123_device::decrypt_type2a(u8 val, u8 param, unsigned swap) { if (swap == 0) val = BITSWAP8(val,0,1,4,3,5,6,2,7); if (swap == 1) val = BITSWAP8(val,6,3,0,5,7,4,1,2); @@ -208,7 +223,7 @@ u8 decrypt_type2a(u8 val, u8 param, unsigned swap) return val; } -u8 decrypt_type2b(u8 val, u8 param, unsigned swap) +u8 mc8123_device::decrypt_type2b(u8 val, u8 param, unsigned swap) { // only 0x20 possible encryptions for this method - all others have 0x40 // this happens because BIT(param,2) cancels the other three @@ -246,7 +261,7 @@ u8 decrypt_type2b(u8 val, u8 param, unsigned swap) return val; } -u8 decrypt_type3a(u8 val, u8 param, unsigned swap) +u8 mc8123_device::decrypt_type3a(u8 val, u8 param, unsigned swap) { if (swap == 0) val = BITSWAP8(val,5,3,1,7,0,2,6,4); if (swap == 1) val = BITSWAP8(val,3,1,2,5,4,7,0,6); @@ -276,7 +291,7 @@ u8 decrypt_type3a(u8 val, u8 param, unsigned swap) return val; } -u8 decrypt_type3b(u8 val, u8 param, unsigned swap) +u8 mc8123_device::decrypt_type3b(u8 val, u8 param, unsigned swap) { if (swap == 0) val = BITSWAP8(val,3,7,5,4,0,6,2,1); if (swap == 1) val = BITSWAP8(val,7,5,4,6,1,2,0,3); @@ -314,7 +329,7 @@ u8 decrypt_type3b(u8 val, u8 param, unsigned swap) return val; } -u8 decrypt(u8 val, u8 key, bool opcode) +u8 mc8123_device::decrypt_internal(u8 val, u8 key, bool opcode) { unsigned type = 0; unsigned swap = 0; @@ -372,18 +387,16 @@ u8 decrypt(u8 val, u8 key, bool opcode) } -u8 mc8123_decrypt(offs_t addr, u8 val, u8 const *key, bool opcode) +u8 mc8123_device::decrypt(offs_t addr, u8 val, bool opcode) { // pick the translation table from bits fd57 of the address offs_t const tbl_num = bitswap<12>(addr,15,14,13,12,11,10,8,6,4,2,1,0); - return decrypt(val, key[tbl_num | (opcode ? 0x0000 : 0x1000)], opcode); + return decrypt_internal(val, m_key[tbl_num | (opcode ? 0x0000 : 0x1000)], opcode); } -} // anonymous namespace - -void mc8123_decode(u8 *rom, u8 *opcodes, u8 const *key, unsigned length) +void mc8123_device::decode(u8 *rom, u8 *opcodes, unsigned length) { for (unsigned i = 0; i < length; i++) { @@ -391,9 +404,9 @@ void mc8123_decode(u8 *rom, u8 *opcodes, u8 const *key, unsigned length) u8 const src = rom[i]; // decode the opcodes - opcodes[i] = mc8123_decrypt(adr, src, key, true); + opcodes[i] = decrypt(adr, src, true); // decode the data - rom[i] = mc8123_decrypt(adr, src, key, false); + rom[i] = decrypt(adr, src, false); } } diff --git a/src/mame/machine/mc8123.h b/src/mame/machine/mc8123.h index b8b5c26ef32..8c5d322a968 100644 --- a/src/mame/machine/mc8123.h +++ b/src/mame/machine/mc8123.h @@ -6,7 +6,39 @@ ***************************************************************************/ -// this function assumes a fixed portion of ROM at 0000-7FFF, and -// an arbitrary amount of banks at 8000-BFFF. +#ifndef MAME_MACHINE_MC8123 +#define MAME_MACHINE_MC8123 -void mc8123_decode(u8 *rom, u8 *opcodes, u8 const *key, unsigned length); +#pragma once + +#include "cpu/z80/z80.h" + +class mc8123_device : public z80_device +{ +public: + // construction/destruction + mc8123_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + + // this function assumes a fixed portion of ROM at 0000-7FFF, and + // an arbitrary amount of banks at 8000-BFFF. + void decode(u8 *rom, u8 *opcodes, unsigned length); + +private: + static u8 decrypt_type0(u8 val, u8 param, unsigned swap); + static u8 decrypt_type1a(u8 val, u8 param, unsigned swap); + static u8 decrypt_type1b(u8 val, u8 param, unsigned swap); + static u8 decrypt_type2a(u8 val, u8 param, unsigned swap); + static u8 decrypt_type2b(u8 val, u8 param, unsigned swap); + static u8 decrypt_type3a(u8 val, u8 param, unsigned swap); + static u8 decrypt_type3b(u8 val, u8 param, unsigned swap); + static u8 decrypt_internal(u8 val, u8 key, bool opcode); + + u8 decrypt(offs_t addr, u8 val, bool opcode); + + required_region_ptr m_key; +}; + +extern const device_type MC8123; +DECLARE_DEVICE_TYPE(MC8123, mc8123_device) + +#endif // MAME_MACHINE_MC8123 diff --git a/src/mame/machine/mega32x.cpp b/src/mame/machine/mega32x.cpp index df371297ec3..5969e929393 100644 --- a/src/mame/machine/mega32x.cpp +++ b/src/mame/machine/mega32x.cpp @@ -202,27 +202,49 @@ GFX check (these don't explicitly fails): #include "sound/volt_reg.h" -const device_type SEGA_32X_NTSC = device_creator; -const device_type SEGA_32X_PAL = device_creator; +// Fifa96 needs the CPUs swapped for the gameplay to enter due to some race conditions +// when using the DRC core. Needs further investigation, the non-DRC core works either +// way +#define _32X_SWAP_MASTER_SLAVE_HACK +#define _32X_COMMS_PORT_SYNC 0 +#define MAX_HPOSITION 480 +/* need to make some pwm stuff part of device */ +#define PWM_FIFO_SIZE m_pwm_tm_reg // guess, Marsch calls this register as FIFO width +#define PWM_CLOCK m_32x_pal ? ((MASTER_CLOCK_PAL*3) / 7) : ((MASTER_CLOCK_NTSC*3) / 7) -sega_32x_device::sega_32x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) + + +#define SH2_VRES_IRQ_LEVEL 14 +#define SH2_VINT_IRQ_LEVEL 12 +#define SH2_HINT_IRQ_LEVEL 10 +#define SH2_CINT_IRQ_LEVEL 8 +#define SH2_PINT_IRQ_LEVEL 6 + +#define MASTER_CLOCK_NTSC 53693175 +#define MASTER_CLOCK_PAL 53203424 + + +DEFINE_DEVICE_TYPE(SEGA_32X_NTSC, sega_32x_ntsc_device, "sega_32x_ntsc", "Sega 32X (NTSC)") +DEFINE_DEVICE_TYPE(SEGA_32X_PAL, sega_32x_pal_device, "sega_32x_pal", "Sega 32X (PAL)") + +sega_32x_device::sega_32x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , m_sh2_shared(*this, "sh2_shared") , m_master_cpu(*this, "32x_master_sh2") , m_slave_cpu(*this, "32x_slave_sh2") , m_ldac(*this, "ldac") , m_rdac(*this, "rdac") - , m_sh2_shared(*this, "sh2_shared") , m_palette(*this, finder_base::DUMMY_TAG) { } sega_32x_ntsc_device::sega_32x_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sega_32x_device(mconfig, SEGA_32X_NTSC, "sega_32x_ntsc", tag, owner, clock, "sega_32x_ntsc", __FILE__) + : sega_32x_device(mconfig, SEGA_32X_NTSC, tag, owner, clock) { } sega_32x_pal_device::sega_32x_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sega_32x_device(mconfig, SEGA_32X_PAL, "sega_32x_pal", tag, owner, clock, "sega_32x_pal", __FILE__) + : sega_32x_device(mconfig, SEGA_32X_PAL, tag, owner, clock) { } diff --git a/src/mame/machine/mega32x.h b/src/mame/machine/mega32x.h index de465b5f7ca..4b2328100a3 100644 --- a/src/mame/machine/mega32x.h +++ b/src/mame/machine/mega32x.h @@ -1,28 +1,10 @@ // license:BSD-3-Clause // copyright-holders:David Haywood /* 32X */ +#ifndef MAME_MACHINE_MEGA32X_H +#define MAME_MACHINE_MEGA32X_H - -// Fifa96 needs the CPUs swapped for the gameplay to enter due to some race conditions -// when using the DRC core. Needs further investigation, the non-DRC core works either -// way -#define _32X_SWAP_MASTER_SLAVE_HACK -#define _32X_COMMS_PORT_SYNC 0 -#define MAX_HPOSITION 480 -/* need to make some pwm stuff part of device */ -#define PWM_FIFO_SIZE m_pwm_tm_reg // guess, Marsch calls this register as FIFO width -#define PWM_CLOCK m_32x_pal ? ((MASTER_CLOCK_PAL*3) / 7) : ((MASTER_CLOCK_NTSC*3) / 7) - - - -#define SH2_VRES_IRQ_LEVEL 14 -#define SH2_VINT_IRQ_LEVEL 12 -#define SH2_HINT_IRQ_LEVEL 10 -#define SH2_CINT_IRQ_LEVEL 8 -#define SH2_PINT_IRQ_LEVEL 6 - -#define MASTER_CLOCK_NTSC 53693175 -#define MASTER_CLOCK_PAL 53203424 +#pragma once #include "cpu/sh2/sh2.h" #include "cpu/sh2/sh2comn.h" @@ -31,22 +13,19 @@ class sega_32x_device : public device_t { public: - sega_32x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - - required_device m_master_cpu; - required_device m_slave_cpu; - required_device m_ldac; - required_device m_rdac; - - required_shared_ptr m_sh2_shared; - void pause_cpu(); // set some variables at start, depending on region (shall be moved to a device interface?) void set_framerate(int rate) { m_framerate = rate; } void set_32x_pal(bool pal) { m_32x_pal = pal ? 1 : 0; } void set_total_scanlines(int total) { m_base_total_scanlines = total; } // this get set at start only - void update_total_scanlines(bool mode3) { m_total_scanlines = mode3 ? (m_base_total_scanlines * 2) : m_base_total_scanlines; } // this gets set at each EOF + + void screen_eof(bool mode3) + { + m_32x_vblank_flag = 0; + m_32x_hcount_compare_val = -1; + update_total_scanlines(mode3); + } // static configuration static void static_set_palette_tag(device_t &device, const char *tag); @@ -126,7 +105,25 @@ public: void _32x_check_irqs(); void _32x_interrupt_cb(int scanline, int irq6); +protected: + sega_32x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + required_shared_ptr m_sh2_shared; + + virtual void device_start() override; + virtual void device_reset() override; + + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const override; + + void update_total_scanlines(bool mode3) { m_total_scanlines = mode3 ? (m_base_total_scanlines * 2) : m_base_total_scanlines; } // this gets set at each EOF + /* our main vblank handler resets this */ + required_device m_master_cpu; + required_device m_slave_cpu; + required_device m_ldac; + required_device m_rdac; + int m_32x_hcount_compare_val; int m_32x_vblank_flag; int m_sh2_are_running; @@ -147,14 +144,6 @@ public: emu_timer *m_32x_pwm_timer; -protected: - virtual void device_start() override; - virtual void device_reset() override; - - // optional information overrides -// virtual const rom_entry *device_rom_region() const; - virtual machine_config_constructor device_mconfig_additions() const override; - private: int m_32x_displaymode; @@ -213,22 +202,24 @@ private: class sega_32x_ntsc_device : public sega_32x_device { - public: - sega_32x_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +public: + sega_32x_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; class sega_32x_pal_device : public sega_32x_device { - public: - sega_32x_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - protected: - virtual machine_config_constructor device_mconfig_additions() const override; +public: + sega_32x_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: + virtual machine_config_constructor device_mconfig_additions() const override; }; -extern const device_type SEGA_32X_NTSC; -extern const device_type SEGA_32X_PAL; +DECLARE_DEVICE_TYPE(SEGA_32X_NTSC, sega_32x_ntsc_device) +DECLARE_DEVICE_TYPE(SEGA_32X_PAL, sega_32x_pal_device) #define MCFG_SEGA_32X_PALETTE(_palette_tag) \ sega_32x_device::static_set_palette_tag(*device, "^" _palette_tag); + +#endif // MAME_MACHINE_MEGA32X_H diff --git a/src/mame/machine/megacd.cpp b/src/mame/machine/megacd.cpp index 2262cf5a5b6..dbb7665468a 100644 --- a/src/mame/machine/megacd.cpp +++ b/src/mame/machine/megacd.cpp @@ -6,9 +6,41 @@ #include "megacd.lh" -const device_type SEGA_SEGACD_US = device_creator; -const device_type SEGA_SEGACD_JAPAN = device_creator; -const device_type SEGA_SEGACD_EUROPE = device_creator; +#define SEGACD_CLOCK 12500000 + +#define RAM_MODE_2MEG (0) +#define RAM_MODE_1MEG (2) + +#define DMA_PCM (0x0400) +#define DMA_PRG (0x0500) +#define DMA_WRAM (0x0700) + +// irq3 timer +#define CHECK_SCD_LV3_INTERRUPT \ + if (m_lc89510_temp->get_segacd_irq_mask() & 0x08) \ + { \ + m_scdcpu->set_input_line(3, HOLD_LINE); \ + } +// from master +#define CHECK_SCD_LV2_INTERRUPT \ + if (m_lc89510_temp->get_segacd_irq_mask() & 0x04) \ + { \ + m_scdcpu->set_input_line(2, HOLD_LINE); \ + } + +// gfx convert +#define CHECK_SCD_LV1_INTERRUPT \ + if (m_lc89510_temp->get_segacd_irq_mask() & 0x02) \ + { \ + m_scdcpu->set_input_line(1, HOLD_LINE); \ + } + +#define SEGACD_IRQ3_TIMER_SPEED (attotime::from_nsec(m_irq3_timer_reg*30720)) + + +DEFINE_DEVICE_TYPE(SEGA_SEGACD_US, sega_segacd_us_device, "segacd_us", "Sega Sega CD (US)") +DEFINE_DEVICE_TYPE(SEGA_SEGACD_JAPAN, sega_segacd_japan_device, "segacd_japan", "Sega Mega-CD (Japan)") +DEFINE_DEVICE_TYPE(SEGA_SEGACD_EUROPE, sega_segacd_europe_device, "segacd_europe", "Sega Mega-CD (PAL)") /* Callback when the genesis enters interrupt code */ @@ -289,8 +321,8 @@ machine_config_constructor sega_segacd_device::device_mconfig_additions() const } -sega_segacd_device::sega_segacd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +sega_segacd_device::sega_segacd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), device_gfx_interface(mconfig, *this, GFXDECODE_NAME( segacd )), m_scdcpu(*this, "segacd_68k"), m_rfsnd(*this, "rfsnd"), @@ -306,17 +338,17 @@ sega_segacd_device::sega_segacd_device(const machine_config &mconfig, device_typ } sega_segacd_us_device::sega_segacd_us_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sega_segacd_device(mconfig, SEGA_SEGACD_US, "sega_segacd_us", tag, owner, clock, "sega_segacd_us", __FILE__) + : sega_segacd_device(mconfig, SEGA_SEGACD_US, tag, owner, clock) { } sega_segacd_japan_device::sega_segacd_japan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sega_segacd_device(mconfig, SEGA_SEGACD_JAPAN, "sega_segacd_japan", tag, owner, clock, "sega_segacd_japan", __FILE__) + : sega_segacd_device(mconfig, SEGA_SEGACD_JAPAN, tag, owner, clock) { } sega_segacd_europe_device::sega_segacd_europe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sega_segacd_device(mconfig, SEGA_SEGACD_EUROPE, "sega_segacd_europe", tag, owner, clock, "sega_segacd_europe", __FILE__) + : sega_segacd_device(mconfig, SEGA_SEGACD_EUROPE, tag, owner, clock) { } @@ -1433,7 +1465,7 @@ inline uint8_t sega_segacd_device::read_pixel_from_stampmap(bitmap_ind16* srcbit /* if (!srcbitmap) { - return machine.rand(); + return machine().rand(); } if (x >= srcbitmap->width) return 0; diff --git a/src/mame/machine/megacd.h b/src/mame/machine/megacd.h index 9d447b3d8d9..cab6d1ea258 100644 --- a/src/mame/machine/megacd.h +++ b/src/mame/machine/megacd.h @@ -1,48 +1,113 @@ // license:BSD-3-Clause // copyright-holders:David Haywood /* Sega CD / Mega CD */ +#ifndef MAME_MACHINE_MEGACD_H +#define MAME_MACHINE_MEGACD_H + +#pragma once #include "cpu/m68000/m68000.h" #include "machine/lc89510.h" #include "machine/megacdcd.h" #include "sound/rf5c68.h" -#define SEGACD_CLOCK 12500000 +class sega_segacd_device : public device_t, public device_gfx_interface +{ +public: + // set some variables at start, depending on region (shall be moved to a device interface?) + void set_framerate(int rate) { m_framerate = rate; } + void set_total_scanlines(int total) { m_base_total_scanlines = total; } // this gets set at start only + void update_total_scanlines(bool mode3) { m_total_scanlines = mode3 ? (m_base_total_scanlines * 2) : m_base_total_scanlines; } // this gets set at each EOF -#define RAM_MODE_2MEG (0) -#define RAM_MODE_1MEG (2) + DECLARE_READ16_MEMBER( segacd_dmaaddr_r ); + DECLARE_WRITE16_MEMBER( segacd_dmaaddr_w ); -#define DMA_PCM (0x0400) -#define DMA_PRG (0x0500) -#define DMA_WRAM (0x0700) + DECLARE_WRITE16_MEMBER( scd_a12000_halt_reset_w ); + DECLARE_READ16_MEMBER( scd_a12000_halt_reset_r ); + DECLARE_READ16_MEMBER( scd_a12002_memory_mode_r ); + DECLARE_WRITE8_MEMBER( scd_a12002_memory_mode_w_8_15 ); + DECLARE_WRITE8_MEMBER( scd_a12002_memory_mode_w_0_7 ); + DECLARE_WRITE16_MEMBER( scd_a12002_memory_mode_w ); + DECLARE_READ16_MEMBER( segacd_sub_memory_mode_r ); + DECLARE_WRITE8_MEMBER( segacd_sub_memory_mode_w_8_15 ); + DECLARE_WRITE8_MEMBER( segacd_sub_memory_mode_w_0_7 ); + DECLARE_WRITE16_MEMBER( segacd_sub_memory_mode_w ); + + DECLARE_READ16_MEMBER( segacd_comms_flags_r ); + DECLARE_WRITE16_MEMBER( segacd_comms_flags_subcpu_w ); + DECLARE_WRITE16_MEMBER( segacd_comms_flags_maincpu_w ); + DECLARE_READ16_MEMBER( scd_4m_prgbank_ram_r ); + DECLARE_WRITE16_MEMBER( scd_4m_prgbank_ram_w ); + DECLARE_READ16_MEMBER( segacd_comms_main_part1_r ); + DECLARE_WRITE16_MEMBER( segacd_comms_main_part1_w ); + DECLARE_READ16_MEMBER( segacd_comms_main_part2_r ); + DECLARE_WRITE16_MEMBER( segacd_comms_main_part2_w ); + DECLARE_READ16_MEMBER( segacd_comms_sub_part1_r ); + DECLARE_WRITE16_MEMBER( segacd_comms_sub_part1_w ); + DECLARE_READ16_MEMBER( segacd_comms_sub_part2_r ); + DECLARE_WRITE16_MEMBER( segacd_comms_sub_part2_w ); + + + + DECLARE_READ16_MEMBER( segacd_main_dataram_part1_r ); + DECLARE_WRITE16_MEMBER( segacd_main_dataram_part1_w ); + + DECLARE_READ16_MEMBER( scd_hint_vector_r ); + DECLARE_READ16_MEMBER( scd_a12006_hint_register_r ); + DECLARE_WRITE16_MEMBER( scd_a12006_hint_register_w ); + + + DECLARE_WRITE16_MEMBER( segacd_stopwatch_timer_w ); + DECLARE_READ16_MEMBER( segacd_stopwatch_timer_r ); + DECLARE_READ16_MEMBER( segacd_sub_led_ready_r ); + DECLARE_WRITE16_MEMBER( segacd_sub_led_ready_w ); + DECLARE_READ16_MEMBER( segacd_sub_dataram_part1_r ); + DECLARE_WRITE16_MEMBER( segacd_sub_dataram_part1_w ); + DECLARE_READ16_MEMBER( segacd_sub_dataram_part2_r ); + DECLARE_WRITE16_MEMBER( segacd_sub_dataram_part2_w ); + + + DECLARE_READ16_MEMBER( segacd_stampsize_r ); + DECLARE_WRITE16_MEMBER( segacd_stampsize_w ); -// irq3 timer -#define CHECK_SCD_LV3_INTERRUPT \ - if (m_lc89510_temp->get_segacd_irq_mask() & 0x08) \ - { \ - m_scdcpu->set_input_line(3, HOLD_LINE); \ - } -// from master -#define CHECK_SCD_LV2_INTERRUPT \ - if (m_lc89510_temp->get_segacd_irq_mask() & 0x04) \ - { \ - m_scdcpu->set_input_line(2, HOLD_LINE); \ - } + TILE_GET_INFO_MEMBER( get_stampmap_16x16_1x1_tile_info ); + TILE_GET_INFO_MEMBER( get_stampmap_32x32_1x1_tile_info ); + TILE_GET_INFO_MEMBER( get_stampmap_16x16_16x16_tile_info ); + TILE_GET_INFO_MEMBER( get_stampmap_32x32_16x16_tile_info ); -// gfx convert -#define CHECK_SCD_LV1_INTERRUPT \ - if (m_lc89510_temp->get_segacd_irq_mask() & 0x02) \ - { \ - m_scdcpu->set_input_line(1, HOLD_LINE); \ - } + WRITE16_MEMBER( segacd_trace_vector_base_address_w ); + READ16_MEMBER( segacd_imagebuffer_vdot_size_r ); + WRITE16_MEMBER( segacd_imagebuffer_vdot_size_w ); + READ16_MEMBER( segacd_stampmap_base_address_r ); + WRITE16_MEMBER( segacd_stampmap_base_address_w ); + READ16_MEMBER( segacd_imagebuffer_start_address_r ); + WRITE16_MEMBER( segacd_imagebuffer_start_address_w ); + READ16_MEMBER( segacd_imagebuffer_offset_r ); + WRITE16_MEMBER( segacd_imagebuffer_offset_w ); + READ16_MEMBER( segacd_imagebuffer_vcell_size_r ); + WRITE16_MEMBER( segacd_imagebuffer_vcell_size_w ); + READ16_MEMBER( segacd_imagebuffer_hdot_size_r ); + WRITE16_MEMBER( segacd_imagebuffer_hdot_size_w ); + READ16_MEMBER( segacd_irq3timer_r ); + WRITE16_MEMBER( segacd_irq3timer_w ); + READ8_MEMBER( backupram_r ); + WRITE8_MEMBER( backupram_w ); + READ8_MEMBER( font_color_r ); + WRITE8_MEMBER( font_color_w ); + READ16_MEMBER( font_converted_r ); + TIMER_DEVICE_CALLBACK_MEMBER( dma_timer_callback ); + IRQ_CALLBACK_MEMBER(segacd_sub_int_callback); + + TIMER_DEVICE_CALLBACK_MEMBER( irq3_timer_callback ); + TIMER_DEVICE_CALLBACK_MEMBER( stamp_timer_callback ); -#define SEGACD_IRQ3_TIMER_SPEED (attotime::from_nsec(m_irq3_timer_reg*30720)) + void SegaCD_CDC_Do_DMA( int &dmacount, uint8_t *CDC_BUFFER, uint16_t &dma_addrc, uint16_t &destination ); +protected: + sega_segacd_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); -class sega_segacd_device : public device_t, public device_gfx_interface -{ -public: - sega_segacd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const override; required_device m_scdcpu; required_device m_rfsnd; @@ -94,15 +159,10 @@ public: uint8_t m_irq3_timer_reg; - TIMER_DEVICE_CALLBACK_MEMBER( irq3_timer_callback ); - TIMER_DEVICE_CALLBACK_MEMBER( stamp_timer_callback ); - inline void write_pixel(uint8_t pix, int pixeloffset); uint16_t segacd_1meg_mode_word_read(int offset, uint16_t mem_mask); void segacd_1meg_mode_word_write(int offset, uint16_t data, uint16_t mem_mask, int use_pm); - DECLARE_READ16_MEMBER( segacd_dmaaddr_r ); - DECLARE_WRITE16_MEMBER( segacd_dmaaddr_w ); uint16_t m_dmaaddr; uint16_t m_a12000_halt_reset_reg; @@ -114,138 +174,44 @@ public: void segacd_mark_tiles_dirty(int offset); int segacd_get_active_stampmap_tilemap(void); - // set some variables at start, depending on region (shall be moved to a device interface?) - void set_framerate(int rate) { m_framerate = rate; } - void set_total_scanlines(int total) { m_base_total_scanlines = total; } // this gets set at start only - void update_total_scanlines(bool mode3) { m_total_scanlines = mode3 ? (m_base_total_scanlines * 2) : m_base_total_scanlines; } // this gets set at each EOF - void SCD_GET_TILE_INFO_16x16_1x1( int& tile_region, int& tileno, int tile_index ); void SCD_GET_TILE_INFO_32x32_1x1( int& tile_region, int& tileno, int tile_index ); void SCD_GET_TILE_INFO_16x16_16x16( int& tile_region, int& tileno, int tile_index ); void SCD_GET_TILE_INFO_32x32_16x16( int& tile_region, int& tileno, int tile_index ); - TILE_GET_INFO_MEMBER( get_stampmap_16x16_1x1_tile_info ); - TILE_GET_INFO_MEMBER( get_stampmap_32x32_1x1_tile_info ); - TILE_GET_INFO_MEMBER( get_stampmap_16x16_16x16_tile_info ); - TILE_GET_INFO_MEMBER( get_stampmap_32x32_16x16_tile_info ); - uint8_t get_stampmap_16x16_1x1_tile_info_pixel(int xpos, int ypos); uint8_t get_stampmap_32x32_1x1_tile_info_pixel(int xpos, int ypos); uint8_t get_stampmap_16x16_16x16_tile_info_pixel(int xpos, int ypos); uint8_t get_stampmap_32x32_16x16_tile_info_pixel(int xpos, int ypos); - WRITE16_MEMBER( scd_a12000_halt_reset_w ); - READ16_MEMBER( scd_a12000_halt_reset_r ); - READ16_MEMBER( scd_a12002_memory_mode_r ); - WRITE8_MEMBER( scd_a12002_memory_mode_w_8_15 ); - WRITE8_MEMBER( scd_a12002_memory_mode_w_0_7 ); - WRITE16_MEMBER( scd_a12002_memory_mode_w ); - READ16_MEMBER( segacd_sub_memory_mode_r ); - WRITE8_MEMBER( segacd_sub_memory_mode_w_8_15 ); - WRITE8_MEMBER( segacd_sub_memory_mode_w_0_7 ); - WRITE16_MEMBER( segacd_sub_memory_mode_w ); - - READ16_MEMBER( segacd_comms_flags_r ); - WRITE16_MEMBER( segacd_comms_flags_subcpu_w ); - WRITE16_MEMBER( segacd_comms_flags_maincpu_w ); - READ16_MEMBER( scd_4m_prgbank_ram_r ); - WRITE16_MEMBER( scd_4m_prgbank_ram_w ); - READ16_MEMBER( segacd_comms_main_part1_r ); - WRITE16_MEMBER( segacd_comms_main_part1_w ); - READ16_MEMBER( segacd_comms_main_part2_r ); - WRITE16_MEMBER( segacd_comms_main_part2_w ); - READ16_MEMBER( segacd_comms_sub_part1_r ); - WRITE16_MEMBER( segacd_comms_sub_part1_w ); - READ16_MEMBER( segacd_comms_sub_part2_r ); - WRITE16_MEMBER( segacd_comms_sub_part2_w ); - - - - READ16_MEMBER( segacd_main_dataram_part1_r ); - WRITE16_MEMBER( segacd_main_dataram_part1_w ); - - READ16_MEMBER( scd_hint_vector_r ); - READ16_MEMBER( scd_a12006_hint_register_r ); - WRITE16_MEMBER( scd_a12006_hint_register_w ); - - - WRITE16_MEMBER( segacd_stopwatch_timer_w ); - READ16_MEMBER( segacd_stopwatch_timer_r ); - READ16_MEMBER( segacd_sub_led_ready_r ); - WRITE16_MEMBER( segacd_sub_led_ready_w ); - READ16_MEMBER( segacd_sub_dataram_part1_r ); - WRITE16_MEMBER( segacd_sub_dataram_part1_w ); - READ16_MEMBER( segacd_sub_dataram_part2_r ); - WRITE16_MEMBER( segacd_sub_dataram_part2_w ); - - - READ16_MEMBER( segacd_stampsize_r ); - WRITE16_MEMBER( segacd_stampsize_w ); - uint8_t read_pixel_from_stampmap(bitmap_ind16* srcbitmap, int x, int y); - WRITE16_MEMBER( segacd_trace_vector_base_address_w ); - READ16_MEMBER( segacd_imagebuffer_vdot_size_r ); - WRITE16_MEMBER( segacd_imagebuffer_vdot_size_w ); - READ16_MEMBER( segacd_stampmap_base_address_r ); - WRITE16_MEMBER( segacd_stampmap_base_address_w ); - READ16_MEMBER( segacd_imagebuffer_start_address_r ); - WRITE16_MEMBER( segacd_imagebuffer_start_address_w ); - READ16_MEMBER( segacd_imagebuffer_offset_r ); - WRITE16_MEMBER( segacd_imagebuffer_offset_w ); - READ16_MEMBER( segacd_imagebuffer_vcell_size_r ); - WRITE16_MEMBER( segacd_imagebuffer_vcell_size_w ); - READ16_MEMBER( segacd_imagebuffer_hdot_size_r ); - WRITE16_MEMBER( segacd_imagebuffer_hdot_size_w ); - READ16_MEMBER( segacd_irq3timer_r ); - WRITE16_MEMBER( segacd_irq3timer_w ); - READ8_MEMBER( backupram_r ); - WRITE8_MEMBER( backupram_w ); - READ8_MEMBER( font_color_r ); - WRITE8_MEMBER( font_color_w ); - READ16_MEMBER( font_converted_r ); - TIMER_DEVICE_CALLBACK_MEMBER( dma_timer_callback ); - IRQ_CALLBACK_MEMBER(segacd_sub_int_callback); - - void SegaCD_CDC_Do_DMA( int &dmacount, uint8_t *CDC_BUFFER, uint16_t &dma_addrc, uint16_t &destination ); - -protected: virtual void device_start() override; virtual void device_reset() override; - - // optional information overrides -// virtual const rom_entry *device_rom_region() const; - virtual machine_config_constructor device_mconfig_additions() const override; -private: - }; class sega_segacd_us_device : public sega_segacd_device { - public: - sega_segacd_us_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - protected: - +public: + sega_segacd_us_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; class sega_segacd_japan_device : public sega_segacd_device { - public: - sega_segacd_japan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - protected: -// virtual machine_config_constructor device_mconfig_additions() const; +public: + sega_segacd_japan_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; class sega_segacd_europe_device : public sega_segacd_device { - public: - sega_segacd_europe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - protected: -// virtual machine_config_constructor device_mconfig_additions() const; +public: + sega_segacd_europe_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; -extern const device_type SEGA_SEGACD_US; -extern const device_type SEGA_SEGACD_JAPAN; -extern const device_type SEGA_SEGACD_EUROPE; +DECLARE_DEVICE_TYPE(SEGA_SEGACD_US, sega_segacd_us_device) +DECLARE_DEVICE_TYPE(SEGA_SEGACD_JAPAN, sega_segacd_japan_device) +DECLARE_DEVICE_TYPE(SEGA_SEGACD_EUROPE, sega_segacd_europe_device) + +#endif // MAME_MACHINE_MEGACD_H diff --git a/src/mame/machine/megacdcd.cpp b/src/mame/machine/megacdcd.cpp index 23b9a9b0ff4..7714e7d83ac 100644 --- a/src/mame/machine/megacdcd.cpp +++ b/src/mame/machine/megacdcd.cpp @@ -10,10 +10,131 @@ #include "emu.h" #include "machine/megacdcd.h" -const device_type LC89510_TEMP = device_creator; +#define READ_MAIN (0x0200) +#define READ_SUB (0x0300) + +#define REG_W_SBOUT (0x0) +#define REG_W_IFCTRL (0x1) +#define REG_W_DBCL (0x2) +#define REG_W_DBCH (0x3) +#define REG_W_DACL (0x4) +#define REG_W_DACH (0x5) +#define REG_W_DTTRG (0x6) +#define REG_W_DTACK (0x7) +#define REG_W_WAL (0x8) +#define REG_W_WAH (0x9) +#define REG_W_CTRL0 (0xA) +#define REG_W_CTRL1 (0xB) +#define REG_W_PTL (0xC) +#define REG_W_PTH (0xD) +#define REG_W_CTRL2 (0xE) +#define REG_W_RESET (0xF) + +#define REG_R_COMIN (0x0) +#define REG_R_IFSTAT (0x1) +#define REG_R_DBCL (0x2) +#define REG_R_DBCH (0x3) +#define REG_R_HEAD0 (0x4) +#define REG_R_HEAD1 (0x5) +#define REG_R_HEAD2 (0x6) +#define REG_R_HEAD3 (0x7) +#define REG_R_PTL (0x8) +#define REG_R_PTH (0x9) +#define REG_R_WAL (0xa) +#define REG_R_WAH (0xb) +#define REG_R_STAT0 (0xc) +#define REG_R_STAT1 (0xd) +#define REG_R_STAT2 (0xe) +#define REG_R_STAT3 (0xf) + +#define CMD_STATUS (0x0) +#define CMD_STOPALL (0x1) +#define CMD_GETTOC (0x2) +#define CMD_READ (0x3) +#define CMD_SEEK (0x4) +// (0x5) +#define CMD_STOP (0x6) +#define CMD_RESUME (0x7) +#define CMD_FF (0x8) +#define CMD_RW (0x9) +#define CMD_INIT (0xa) +// (0xb) +#define CMD_CLOSE (0xc) +#define CMD_OPEN (0xd) +// (0xe) +// (0xf) + + +#define TOCCMD_CURPOS (0x0) +#define TOCCMD_TRKPOS (0x1) +#define TOCCMD_CURTRK (0x2) +#define TOCCMD_LENGTH (0x3) +#define TOCCMD_FIRSTLAST (0x4) +#define TOCCMD_TRACKADDR (0x5) + + + + +#define SET_CDD_DATA_MODE \ + CDD_CONTROL |= 0x0100; +#define SET_CDD_AUDIO_MODE \ + CDD_CONTROL &= ~0x0100; +#define STOP_CDC_READ \ + SCD_STATUS_CDC &= ~0x01; +#define SET_CDC_READ \ + SCD_STATUS_CDC |= 0x01; +#define SET_CDC_DMA \ + SCD_STATUS_CDC |= 0x08; +#define STOP_CDC_DMA \ + SCD_STATUS_CDC &= ~0x08; +#define SCD_READ_ENABLED \ + (SCD_STATUS_CDC & 1) + +#define SCD_DMA_ENABLED \ + (SCD_STATUS_CDC & 0x08) + +#define CLEAR_CDD_RESULT \ + CDD_MIN = CDD_SEC = CDD_FRAME = CDD_EXT = 0; +#define CHECK_SCD_LV5_INTERRUPT \ + if (segacd_irq_mask & 0x20) \ + { \ + machine.device(":segacd:segacd_68k")->execute().set_input_line(5, HOLD_LINE); \ + } +#define CHECK_SCD_LV4_INTERRUPT \ + if (segacd_irq_mask & 0x10) \ + { \ + machine.device(":segacd:segacd_68k")->execute().set_input_line(4, HOLD_LINE); \ + } +#define CHECK_SCD_LV4_INTERRUPT_A \ + if (segacd_irq_mask & 0x10) \ + { \ + machine().device(":segacd:segacd_68k")->execute().set_input_line(4, HOLD_LINE); \ + } + + +#define CURRENT_TRACK_IS_DATA \ + (segacd.toc->tracks[SCD_CURTRK - 1].trktype != CD_TRACK_AUDIO) + +#define CDD_PLAYINGCDDA 0x0100 +#define CDD_READY 0x0400 +#define CDD_STOPPED 0x0900 + + +/* neocd */ + +#define CD_FRAMES_MINUTE (60 * 75) +#define CD_FRAMES_SECOND ( 75) +#define CD_FRAMES_PREGAP ( 2 * 75) + +#define SEK_IRQSTATUS_NONE (0x0000) +#define SEK_IRQSTATUS_AUTO (0x2000) +#define SEK_IRQSTATUS_ACK (0x1000) + + +DEFINE_DEVICE_TYPE(LC89510_TEMP, lc89510_temp_device, "lc89510_temp", "lc89510_temp_device") lc89510_temp_device::lc89510_temp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, LC89510_TEMP, "lc89510_temp_device", tag, owner, clock, "lc89510_temp", __FILE__) + : device_t(mconfig, LC89510_TEMP, tag, owner, clock) { segacd_dma_callback = segacd_dma_delegate(FUNC(lc89510_temp_device::Fake_CDC_Do_DMA), this); type1_interrupt_callback = interrupt_delegate(FUNC(lc89510_temp_device::dummy_interrupt_callback), this); @@ -1163,7 +1284,7 @@ char* lc89510_temp_device::LC8915InitTransfer(int NeoCDDMACount) //bprintf(PRINT_ERROR, _T(" LC8951 DOUTEN status invalid\n")); return nullptr; } - if (((LC8951RegistersW[REG_W_DACH] << 8) | LC8951RegistersW[REG_W_DACL]) + (NeoCDDMACount << 1) > LC89510_EXTERNAL_BUFFER_SIZE) { + if (((LC8951RegistersW[REG_W_DACH] << 8) | LC8951RegistersW[REG_W_DACL]) + (NeoCDDMACount << 1) > EXTERNAL_BUFFER_SIZE) { //bprintf(PRINT_ERROR, _T(" DMA transfer exceeds current sector in LC8951 external buffer\n")); return nullptr; diff --git a/src/mame/machine/megacdcd.h b/src/mame/machine/megacdcd.h index 35f5cfc7e7f..c933a2cb887 100644 --- a/src/mame/machine/megacdcd.h +++ b/src/mame/machine/megacdcd.h @@ -1,127 +1,16 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_SEGACDCD_H +#define MAME_MACHINE_SEGACDCD_H -#include "sound/cdda.h" #include "imagedev/chd_cd.h" +#include "sound/cdda.h" typedef device_delegate segacd_dma_delegate; typedef device_delegate interrupt_delegate; - -#define READ_MAIN (0x0200) -#define READ_SUB (0x0300) - -#define REG_W_SBOUT (0x0) -#define REG_W_IFCTRL (0x1) -#define REG_W_DBCL (0x2) -#define REG_W_DBCH (0x3) -#define REG_W_DACL (0x4) -#define REG_W_DACH (0x5) -#define REG_W_DTTRG (0x6) -#define REG_W_DTACK (0x7) -#define REG_W_WAL (0x8) -#define REG_W_WAH (0x9) -#define REG_W_CTRL0 (0xA) -#define REG_W_CTRL1 (0xB) -#define REG_W_PTL (0xC) -#define REG_W_PTH (0xD) -#define REG_W_CTRL2 (0xE) -#define REG_W_RESET (0xF) - -#define REG_R_COMIN (0x0) -#define REG_R_IFSTAT (0x1) -#define REG_R_DBCL (0x2) -#define REG_R_DBCH (0x3) -#define REG_R_HEAD0 (0x4) -#define REG_R_HEAD1 (0x5) -#define REG_R_HEAD2 (0x6) -#define REG_R_HEAD3 (0x7) -#define REG_R_PTL (0x8) -#define REG_R_PTH (0x9) -#define REG_R_WAL (0xa) -#define REG_R_WAH (0xb) -#define REG_R_STAT0 (0xc) -#define REG_R_STAT1 (0xd) -#define REG_R_STAT2 (0xe) -#define REG_R_STAT3 (0xf) - -#define CMD_STATUS (0x0) -#define CMD_STOPALL (0x1) -#define CMD_GETTOC (0x2) -#define CMD_READ (0x3) -#define CMD_SEEK (0x4) -// (0x5) -#define CMD_STOP (0x6) -#define CMD_RESUME (0x7) -#define CMD_FF (0x8) -#define CMD_RW (0x9) -#define CMD_INIT (0xa) -// (0xb) -#define CMD_CLOSE (0xc) -#define CMD_OPEN (0xd) -// (0xe) -// (0xf) - - -#define TOCCMD_CURPOS (0x0) -#define TOCCMD_TRKPOS (0x1) -#define TOCCMD_CURTRK (0x2) -#define TOCCMD_LENGTH (0x3) -#define TOCCMD_FIRSTLAST (0x4) -#define TOCCMD_TRACKADDR (0x5) - - - - -#define SECTOR_SIZE (2352) - -#define SET_CDD_DATA_MODE \ - CDD_CONTROL |= 0x0100; -#define SET_CDD_AUDIO_MODE \ - CDD_CONTROL &= ~0x0100; -#define STOP_CDC_READ \ - SCD_STATUS_CDC &= ~0x01; -#define SET_CDC_READ \ - SCD_STATUS_CDC |= 0x01; -#define SET_CDC_DMA \ - SCD_STATUS_CDC |= 0x08; -#define STOP_CDC_DMA \ - SCD_STATUS_CDC &= ~0x08; -#define SCD_READ_ENABLED \ - (SCD_STATUS_CDC & 1) - -#define SCD_DMA_ENABLED \ - (SCD_STATUS_CDC & 0x08) - -#define CLEAR_CDD_RESULT \ - CDD_MIN = CDD_SEC = CDD_FRAME = CDD_EXT = 0; -#define CHECK_SCD_LV5_INTERRUPT \ - if (segacd_irq_mask & 0x20) \ - { \ - machine.device(":segacd:segacd_68k")->execute().set_input_line(5, HOLD_LINE); \ - } -#define CHECK_SCD_LV4_INTERRUPT \ - if (segacd_irq_mask & 0x10) \ - { \ - machine.device(":segacd:segacd_68k")->execute().set_input_line(4, HOLD_LINE); \ - } -#define CHECK_SCD_LV4_INTERRUPT_A \ - if (segacd_irq_mask & 0x10) \ - { \ - machine().device(":segacd:segacd_68k")->execute().set_input_line(4, HOLD_LINE); \ - } - - -#define CURRENT_TRACK_IS_DATA \ - (segacd.toc->tracks[SCD_CURTRK - 1].trktype != CD_TRACK_AUDIO) - -#define CDD_PLAYINGCDDA 0x0100 -#define CDD_READY 0x0400 -#define CDD_STOPPED 0x0900 - - #define MCFG_SEGACD_HACK_SET_CDC_DO_DMA( _class, _method) \ lc89510_temp_device::set_CDC_Do_DMA(*device, segacd_dma_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); #define MCFG_SEGACD_HACK_SET_NEOCD \ @@ -132,23 +21,66 @@ typedef device_delegate interrupt_delegate; lc89510_temp_device::set_type2_interrupt_callback(*device, interrupt_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); #define MCFG_SET_TYPE3_INTERRUPT_CALLBACK( _class, _method) \ lc89510_temp_device::set_type3_interrupt_callback(*device, interrupt_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); -/* neocd */ - -#define CD_FRAMES_MINUTE (60 * 75) -#define CD_FRAMES_SECOND ( 75) -#define CD_FRAMES_PREGAP ( 2 * 75) - -#define SEK_IRQSTATUS_NONE (0x0000) -#define SEK_IRQSTATUS_AUTO (0x2000) -#define SEK_IRQSTATUS_ACK (0x1000) - -#define LC89510_EXTERNAL_BUFFER_SIZE ((32 * 1024 * 2) + SECTOR_SIZE) class lc89510_temp_device : public device_t { public: + static void set_is_neoCD(device_t &device, bool is_neoCD); + + static void set_type1_interrupt_callback(device_t &device,interrupt_delegate interrupt_callback); + static void set_type2_interrupt_callback(device_t &device,interrupt_delegate interrupt_callback); + static void set_type3_interrupt_callback(device_t &device,interrupt_delegate interrupt_callback); + + static void set_CDC_Do_DMA(device_t &device,segacd_dma_delegate new_segacd_dma_callback); + + lc89510_temp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + uint16_t get_segacd_irq_mask() const { return segacd_irq_mask; } + + DECLARE_READ16_MEMBER( segacd_irq_mask_r ); + DECLARE_WRITE16_MEMBER( segacd_irq_mask_w ); + DECLARE_READ16_MEMBER( segacd_cdd_ctrl_r ); + DECLARE_WRITE16_MEMBER( segacd_cdd_ctrl_w ); + DECLARE_READ8_MEMBER( segacd_cdd_rx_r ); + DECLARE_WRITE8_MEMBER( segacd_cdd_tx_w ); + READ16_MEMBER( segacd_cdfader_r ); + WRITE16_MEMBER( segacd_cdfader_w ); + + WRITE16_MEMBER( segacd_cdc_mode_address_w ); + READ16_MEMBER( segacd_cdc_mode_address_r ); + WRITE16_MEMBER( segacd_cdc_data_w ); + READ16_MEMBER( segacd_cdc_data_r ); + READ16_MEMBER( cdc_data_sub_r ); + READ16_MEMBER( cdc_data_main_r ); + + void CDC_Do_DMA(running_machine& machine, int rate); + + uint8_t CDC_Reg_r(void); + void CDC_Reg_w(uint8_t data); + + void reset_cd(); + + // NeoGeo CD stuff + void neocd_cdd_tx_w(uint8_t data); + uint8_t neocd_cdd_rx_r(); + void NeoCDCommsControl(uint8_t clock, uint8_t send); + void NeoCDCommsReset(); + + uint16_t nff0016_r(); + void nff0016_set(uint16_t wordValue); + void nff0002_set(uint16_t wordValue); + + char* LC8915InitTransfer(int NeoCDDMACount); + void LC8915EndTransfer(); + + + TIMER_DEVICE_CALLBACK_MEMBER( segacd_access_timer_callback ); + +protected: + static constexpr unsigned SECTOR_SIZE = 2352; + static constexpr unsigned EXTERNAL_BUFFER_SIZE = (32 * 1024 * 2) + SECTOR_SIZE; + // HACK for DMA handling segacd_dma_delegate segacd_dma_callback; interrupt_delegate type1_interrupt_callback; @@ -156,15 +88,8 @@ public: interrupt_delegate type3_interrupt_callback; void Fake_CDC_Do_DMA(int &dmacount, uint8_t *CDC_BUFFER, uint16_t &dma_addrc, uint16_t &destination ); - static void set_CDC_Do_DMA(device_t &device,segacd_dma_delegate new_segacd_dma_callback); void dummy_interrupt_callback(void); - static void set_type1_interrupt_callback(device_t &device,interrupt_delegate interrupt_callback); - static void set_type2_interrupt_callback(device_t &device,interrupt_delegate interrupt_callback); - static void set_type3_interrupt_callback(device_t &device,interrupt_delegate interrupt_callback); - - - static void set_is_neoCD(device_t &device, bool is_neoCD); // HACK for neoCD handling @@ -193,7 +118,7 @@ public: uint16_t CDC_REG0; uint16_t CDC_REG1; - uint8_t CDC_BUFFER[LC89510_EXTERNAL_BUFFER_SIZE]; + uint8_t CDC_BUFFER[EXTERNAL_BUFFER_SIZE]; uint8_t CDD_RX[10]; @@ -241,34 +166,11 @@ public: void CDC_Reset(void); void lc89510_Reset(void); void CDC_End_Transfer(running_machine& machine); - void CDC_Do_DMA(running_machine& machine, int rate); uint16_t CDC_Host_r(running_machine& machine, uint16_t type); - uint8_t CDC_Reg_r(void); - void CDC_Reg_w(uint8_t data); void CDD_Process(running_machine& machine, int reason); void CDD_Handle_TOC_Commands(void); bool CDD_Import(running_machine& machine); - READ16_MEMBER( segacd_irq_mask_r ); - WRITE16_MEMBER( segacd_irq_mask_w ); - READ16_MEMBER( segacd_cdd_ctrl_r ); - WRITE16_MEMBER( segacd_cdd_ctrl_w ); - READ8_MEMBER( segacd_cdd_rx_r ); - WRITE8_MEMBER( segacd_cdd_tx_w ); - READ16_MEMBER( segacd_cdfader_r ); - WRITE16_MEMBER( segacd_cdfader_w ); - - void reset_cd(void); - - WRITE16_MEMBER( segacd_cdc_mode_address_w ); - READ16_MEMBER( segacd_cdc_mode_address_r ); - WRITE16_MEMBER( segacd_cdc_data_w ); - READ16_MEMBER( segacd_cdc_data_r ); - READ16_MEMBER( cdc_data_sub_r ); - READ16_MEMBER( cdc_data_main_r ); - TIMER_DEVICE_CALLBACK_MEMBER( segacd_access_timer_callback ); - - uint16_t get_segacd_irq_mask(void) { return segacd_irq_mask; } uint16_t segacd_irq_mask; cdda_device* m_cdda; @@ -288,30 +190,14 @@ public: int32_t NeoCD_StatusHack; - - - - void NeoCDCommsControl(uint8_t clock, uint8_t send); void LC8951UpdateHeader(); - char* LC8915InitTransfer(int NeoCDDMACount); - void LC8915EndTransfer(); - void neocd_cdd_tx_w(uint8_t data); - uint8_t neocd_cdd_rx_r(); - void NeoCDCommsReset(); - - uint16_t nff0016_r(void); - void nff0016_set(uint16_t wordValue); - void nff0002_set(uint16_t wordValue); - -protected: virtual void device_start() override; virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; -private: - - }; -extern const device_type LC89510_TEMP; +DECLARE_DEVICE_TYPE(LC89510_TEMP, lc89510_temp_device) + +#endif // MAME_MACHINE_SEGACDCD_H diff --git a/src/mame/machine/megadriv.cpp b/src/mame/machine/megadriv.cpp index 50d9ff92739..ec74ab33c5f 100644 --- a/src/mame/machine/megadriv.cpp +++ b/src/mame/machine/megadriv.cpp @@ -921,7 +921,7 @@ MACHINE_CONFIG_FRAGMENT( md_ntsc ) MCFG_SCREEN_SIZE(64*8, 620) MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(md_base_state, screen_update_megadriv) /* Copies a bitmap */ - MCFG_SCREEN_VBLANK_DRIVER(md_base_state, screen_eof_megadriv) /* Used to Sync the timing */ + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_base_state, screen_vblank_megadriv)) /* Used to Sync the timing */ MCFG_VIDEO_START_OVERRIDE(md_base_state, megadriv) @@ -969,7 +969,7 @@ MACHINE_CONFIG_FRAGMENT( md_pal ) MCFG_SCREEN_SIZE(64*8, 620) MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(md_base_state, screen_update_megadriv) /* Copies a bitmap */ - MCFG_SCREEN_VBLANK_DRIVER(md_base_state, screen_eof_megadriv) /* Used to Sync the timing */ + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(md_base_state, screen_vblank_megadriv)) /* Used to Sync the timing */ MCFG_VIDEO_START_OVERRIDE(md_base_state, megadriv) @@ -1065,7 +1065,7 @@ DRIVER_INIT_MEMBER(md_base_state, megadrie) m_version_hi_nibble = 0xe0; // Export PAL no-SCD } -void md_base_state::screen_eof_megadriv(screen_device &screen, bool state) +WRITE_LINE_MEMBER(md_base_state::screen_vblank_megadriv) { if (m_io_reset.read_safe(0) & 0x01) m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); diff --git a/src/mame/machine/meters.cpp b/src/mame/machine/meters.cpp index 9a15cf9b6e0..62a1ca25092 100644 --- a/src/mame/machine/meters.cpp +++ b/src/mame/machine/meters.cpp @@ -15,11 +15,11 @@ DEVICE INTERFACE *****************************************************************************/ -const device_type METERS = device_creator; +DEFINE_DEVICE_TYPE(METERS, meters_device, "meters", "Electromechanical meters") meters_device::meters_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, METERS, "Electro mechanical meters", tag, owner, clock, "meters", __FILE__), - m_number_mtr(0) + : device_t(mconfig, METERS, tag, owner, clock) + , m_number_mtr(0) { memset(m_meter_info, 0, sizeof(m_meter_info)); } diff --git a/src/mame/machine/meters.h b/src/mame/machine/meters.h index f248d9295a9..fd69152f0b7 100644 --- a/src/mame/machine/meters.h +++ b/src/mame/machine/meters.h @@ -9,24 +9,23 @@ // // /////////////////////////////////////////////////////////////////////////// -#pragma once - -#ifndef __METERS_H__ -#define __METERS_H__ +#ifndef MAME_MACHINE_METERS_H +#define MAME_MACHINE_METERS_H +#pragma once #define MCFG_METERS_NUMBER(_number) \ meters_device::static_set_number_meters(*device, _number); -#define MAXMECHMETERS 8 - -#define METERREACTTIME 0.025 // number of seconds meter has to be active to tick class meters_device : public device_t { public: + static constexpr unsigned MAXMECHMETERS = 8; + + static constexpr double METERREACTTIME = 0.025; // number of seconds meter has to be active to tick + meters_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~meters_device() {} static void static_set_number_meters(device_t &device, int number) { downcast(device).m_number_mtr = number; } @@ -60,6 +59,6 @@ private: int m_number_mtr; }; -extern const device_type METERS; +DECLARE_DEVICE_TYPE(METERS, meters_device) -#endif +#endif // MAME_MACHINE_METERS_H diff --git a/src/mame/machine/micro3d.cpp b/src/mame/machine/micro3d.cpp index 4929e2c64ec..512a9483b53 100644 --- a/src/mame/machine/micro3d.cpp +++ b/src/mame/machine/micro3d.cpp @@ -7,11 +7,13 @@ ****************************************************************************/ #include "emu.h" +#include "includes/micro3d.h" +#include "audio/micro3d.h" + #include "cpu/m68000/m68000.h" #include "cpu/tms34010/tms34010.h" #include "cpu/am29000/am29000.h" #include "cpu/mcs51/mcs51.h" -#include "includes/micro3d.h" /************************************* @@ -579,6 +581,74 @@ WRITE32_MEMBER(micro3d_state::drmath_intr2_ack) } +/*************************************************************************** + + 8031 port mappings: + + Port 1 Port 2 + ======= ====== + 0: S/H sel A (O) 0: + 1: S/H sel B (O) 1: + 2: S/H sel C (O) 2: uPD bank select (O) + 3: S/H en (O) 3: /uPD busy (I) + 4: DS1267 data (O) 4: /uPD reset (O) + 5: DS1267 clock (O) 5: Watchdog reset (O) + 6: /DS1267 reset (O) 6: + 7: Test SW (I) 7: + +***************************************************************************/ + + +WRITE8_MEMBER(micro3d_state::micro3d_snd_dac_a) +{ + m_noise_1->dac_w(data); + m_noise_2->dac_w(data); +} + +WRITE8_MEMBER(micro3d_state::micro3d_snd_dac_b) +{ + /* TODO: This controls upd7759 volume */ +} + +WRITE8_MEMBER(micro3d_state::micro3d_sound_io_w) +{ + m_sound_port_latch[offset] = data; + + switch (offset) + { + case 0x01: + { + micro3d_sound_device *noise = (data & 4) ? m_noise_2 : m_noise_1; + noise->noise_sh_w(data); + break; + } + case 0x03: + { + m_upd7759->set_bank_base((data & 0x4) ? 0x20000 : 0); + m_upd7759->reset_w((data & 0x10) ? 0 : 1); + break; + } + } +} + +READ8_MEMBER(micro3d_state::micro3d_sound_io_r) +{ + switch (offset) + { + case 0x01: return (m_sound_port_latch[offset] & 0x7f) | m_sound_sw->read(); + case 0x03: return (m_sound_port_latch[offset] & 0xf7) | (m_upd7759->busy_r() ? 0x08 : 0); + default: return 0; + } +} + +WRITE8_MEMBER(micro3d_state::micro3d_upd7759_w) +{ + m_upd7759->port_w(space, 0, data); + m_upd7759->start_w(0); + m_upd7759->start_w(1); +} + + /************************************* * * Driver initialisation diff --git a/src/mame/machine/microdrv.cpp b/src/mame/machine/microdrv.cpp index f19d2671b25..1947d22f840 100644 --- a/src/mame/machine/microdrv.cpp +++ b/src/mame/machine/microdrv.cpp @@ -37,14 +37,14 @@ ***************************************************************************/ // device type definition -const device_type MICRODRIVE = device_creator; +DEFINE_DEVICE_TYPE(MICRODRIVE, microdrive_image_device, "microdrive_image", "Sinclair Microdrive") //------------------------------------------------- // microdrive_image_device - constructor //------------------------------------------------- microdrive_image_device::microdrive_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, MICRODRIVE, "Microdrive", tag, owner, clock, "microdrive_image", __FILE__), + device_t(mconfig, MICRODRIVE, tag, owner, clock), device_image_interface(mconfig, *this), m_write_comms_out(*this) { diff --git a/src/mame/machine/microdrv.h b/src/mame/machine/microdrv.h index 2b3ee762f36..069f4e37d87 100644 --- a/src/mame/machine/microdrv.h +++ b/src/mame/machine/microdrv.h @@ -8,10 +8,10 @@ *********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_MICRODRV_H +#define MAME_MACHINE_MICRODRV_H -#ifndef __MICRODRV__ -#define __MICRODRV__ +#pragma once #include "softlist_dev.h" @@ -46,7 +46,7 @@ public: microdrive_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~microdrive_image_device(); - template static devcb_base &set_comms_out_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_comms_out.set_callback(object); } + template static devcb_base &set_comms_out_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_comms_out.set_callback(std::forward(cb)); } // image-level overrides virtual image_init_result call_load() override; @@ -97,8 +97,6 @@ private: // device type definition -extern const device_type MICRODRIVE; - - +DECLARE_DEVICE_TYPE(MICRODRIVE, microdrive_image_device) -#endif +#endif // MAME_MACHINE_MICRODRV_H diff --git a/src/mame/machine/micropolis.cpp b/src/mame/machine/micropolis.cpp index a747e7d2a36..e3c760dd82f 100644 --- a/src/mame/machine/micropolis.cpp +++ b/src/mame/machine/micropolis.cpp @@ -63,10 +63,10 @@ static const uint8_t track_SD[][2] = { MAME DEVICE INTERFACE ***************************************************************************/ -const device_type MICROPOLIS = device_creator; +DEFINE_DEVICE_TYPE(MICROPOLIS, micropolis_device, "micropolis", "Micropolis FDC") micropolis_device::micropolis_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MICROPOLIS, "MICROPOLIS", tag, owner, clock, "micropolis", __FILE__), + : device_t(mconfig, MICROPOLIS, tag, owner, clock), m_read_dden(*this), m_write_intrq(*this), m_write_drq(*this), @@ -82,11 +82,8 @@ micropolis_device::micropolis_device(const machine_config &mconfig, const char * m_sector_length(0), m_drive(nullptr) { - for (auto & elem : m_buffer) - elem = 0; - - for (auto & elem : m_floppy_drive_tags) - elem = nullptr; + std::fill(std::begin(m_buffer), std::end(m_buffer), 0); + std::fill(std::begin(m_floppy_drive_tags), std::end(m_floppy_drive_tags), nullptr); } //------------------------------------------------- diff --git a/src/mame/machine/micropolis.h b/src/mame/machine/micropolis.h index 12e9bea0431..9ee893c1cdd 100644 --- a/src/mame/machine/micropolis.h +++ b/src/mame/machine/micropolis.h @@ -9,8 +9,10 @@ *********************************************************************/ -#ifndef __MICROPOLIS_H__ -#define __MICROPOLIS_H__ +#ifndef MAME_MACHINE_MICROPOLIS_H +#define MAME_MACHINE_MICROPOLIS_H + +#pragma once #include "imagedev/flopdrv.h" @@ -42,11 +44,10 @@ class micropolis_device : public device_t { public: micropolis_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~micropolis_device() {} - template static devcb_base &set_dden_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_dden.set_callback(object); } - template static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_intrq.set_callback(object); } - template static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_drq.set_callback(object); } + template static devcb_base &set_dden_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_dden.set_callback(std::forward(cb)); } + template static devcb_base &set_intrq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_intrq.set_callback(std::forward(cb)); } + template static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_drq.set_callback(std::forward(cb)); } static void set_drive_tags(device_t &device, const char *tag1, const char *tag2, const char *tag3, const char *tag4) { @@ -105,7 +106,7 @@ private: void write_sector(); }; -extern const device_type MICROPOLIS; +DECLARE_DEVICE_TYPE(MICROPOLIS, micropolis_device) -#endif /* __MICROPOLIS_H__ */ +#endif // MAME_MACHINE_MICROPOLIS_H diff --git a/src/mame/machine/midikbd.cpp b/src/mame/machine/midikbd.cpp index 3fdbb105cf9..35eb0dc5507 100644 --- a/src/mame/machine/midikbd.cpp +++ b/src/mame/machine/midikbd.cpp @@ -3,10 +3,10 @@ #include "emu.h" #include "machine/midikbd.h" -const device_type MIDI_KBD = device_creator; +DEFINE_DEVICE_TYPE(MIDI_KBD, midi_keyboard_device, "midi_kbd", "Generic MIDI Keyboard") midi_keyboard_device::midi_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, MIDI_KBD, "Generic MIDI Keyboard", tag, owner, clock, "midi_kbd", __FILE__), + device_t(mconfig, MIDI_KBD, tag, owner, clock), device_serial_interface(mconfig, *this), m_out_tx_func(*this), m_keyboard(*this, "KEYBOARD") diff --git a/src/mame/machine/midikbd.h b/src/mame/machine/midikbd.h index 84c811c237d..2d1e81f4dcc 100644 --- a/src/mame/machine/midikbd.h +++ b/src/mame/machine/midikbd.h @@ -1,21 +1,22 @@ // license:BSD-3-Clause // copyright-holders:Carl -#ifndef MIDIKBD_H_ -#define MIDIKBD_H_ +#ifndef MAME_MACHINE_MIDIKBD_H +#define MAME_MACHINE_MIDIKBD_H + +#pragma once #define MCFG_MIDI_KBD_ADD(_tag, _devcb, _clock) \ MCFG_DEVICE_ADD(_tag, MIDI_KBD, _clock) \ devcb = &midi_keyboard_device::static_set_tx_callback(*device, DEVCB_##_devcb); -class midi_keyboard_device : public device_t, - public device_serial_interface +class midi_keyboard_device : public device_t, public device_serial_interface { public: midi_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ioport_constructor device_input_ports() const override; - template static devcb_base &static_set_tx_callback(device_t &device, _Object object) { return downcast(device).m_out_tx_func.set_callback(object); } + template static devcb_base &static_set_tx_callback(device_t &device, Object &&cb) { return downcast(device).m_out_tx_func.set_callback(std::forward(cb)); } protected: void device_start() override; @@ -34,6 +35,6 @@ private: uint8_t m_head, m_tail; }; -extern const device_type MIDI_KBD; +DECLARE_DEVICE_TYPE(MIDI_KBD, midi_keyboard_device) -#endif /* MIDIKBD_H_ */ +#endif // MAME_MACHINE_MIDIKBD_H diff --git a/src/mame/machine/midwayic.cpp b/src/mame/machine/midwayic.cpp index 1a6cac2b1e0..49a917a065c 100644 --- a/src/mame/machine/midwayic.cpp +++ b/src/mame/machine/midwayic.cpp @@ -105,7 +105,7 @@ void midway_serial_pic_device::serial_register_state() save_item(NAME(m_ormask)); } -const device_type MIDWAY_SERIAL_PIC = device_creator; +DEFINE_DEVICE_TYPE(MIDWAY_SERIAL_PIC, midway_serial_pic_device, "midway_serial_pic_sim", "Midway Serial PIC Simulation") //------------------------------------------------- @@ -113,12 +113,12 @@ const device_type MIDWAY_SERIAL_PIC = device_creator; //------------------------------------------------- midway_serial_pic_device::midway_serial_pic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - midway_serial_pic_device(mconfig, MIDWAY_SERIAL_PIC, "Midway Serial Pic Simulation", tag, owner, clock, "midway_serial_pic_sim", __FILE__) + midway_serial_pic_device(mconfig, MIDWAY_SERIAL_PIC, tag, owner, clock) { } -midway_serial_pic_device::midway_serial_pic_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), +midway_serial_pic_device::midway_serial_pic_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), m_upper(0), m_buff(0), m_idx(0), @@ -193,7 +193,7 @@ WRITE8_MEMBER(midway_serial_pic_device::write) *************************************/ -const device_type MIDWAY_SERIAL_PIC_EMU = device_creator; +DEFINE_DEVICE_TYPE(MIDWAY_SERIAL_PIC_EMU, midway_serial_pic_emu_device, "midway_serial_pic_emu", "Midway Serial PIC Emulation") //------------------------------------------------- @@ -201,7 +201,7 @@ const device_type MIDWAY_SERIAL_PIC_EMU = device_creator; +DEFINE_DEVICE_TYPE(MIDWAY_SERIAL_PIC2, midway_serial_pic2_device, "midway_serial_pic2", "Midway Serial PIC 2") //------------------------------------------------- @@ -286,27 +286,12 @@ const device_type MIDWAY_SERIAL_PIC2 = device_creator //------------------------------------------------- midway_serial_pic2_device::midway_serial_pic2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - midway_serial_pic_device(mconfig, MIDWAY_SERIAL_PIC2, "Midway Serial Pic 2", tag, owner, clock, "midway_serial_pic2", __FILE__), - device_nvram_interface(mconfig, *this), - m_latch(0), - m_state(0), - m_index(0), - m_total(0), - m_nvram_addr(0), - m_time_index(0), - m_time_just_written(0), - m_yearoffs(0), - m_time_write_timer(nullptr) + midway_serial_pic2_device(mconfig, MIDWAY_SERIAL_PIC2, tag, owner, clock) { - memset(m_buffer,0,sizeof(m_buffer)); - memset(m_time_buf,0,sizeof(m_time_buf)); - memset(m_nvram,0,sizeof(m_nvram)); - memset(m_default_nvram,0,sizeof(m_default_nvram)); - } -midway_serial_pic2_device::midway_serial_pic2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - midway_serial_pic_device(mconfig, type, name, tag, owner, clock, shortname, source), +midway_serial_pic2_device::midway_serial_pic2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + midway_serial_pic_device(mconfig, type, tag, owner, clock), device_nvram_interface(mconfig, *this), m_latch(0), m_state(0), @@ -655,7 +640,7 @@ void midway_ioasic_device::ioasic_register_state() save_item(NAME(m_fifo_force_buffer_empty_pc)); } -const device_type MIDWAY_IOASIC = device_creator; +DEFINE_DEVICE_TYPE(MIDWAY_IOASIC, midway_ioasic_device, "midway_ioasic", "Midway IOASIC") //------------------------------------------------- @@ -663,7 +648,7 @@ const device_type MIDWAY_IOASIC = device_creator; //------------------------------------------------- midway_ioasic_device::midway_ioasic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - midway_serial_pic2_device(mconfig, MIDWAY_IOASIC, "Midway IOASIC", tag, owner, clock, "midway_ioasic", __FILE__), + midway_serial_pic2_device(mconfig, MIDWAY_IOASIC, tag, owner, clock), m_serial_tx_cb(*this), m_has_dcs(0), m_has_cage(0), @@ -777,9 +762,8 @@ void midway_ioasic_device::update_ioasic_irq() uint16_t irqbits = 0x2000; uint8_t new_state; - irqbits |= m_sound_irq_state; - if (m_reg[IOASIC_UARTIN] & 0x1000) - irqbits |= 0x1000; + irqbits |= m_sound_irq_state & 0xff; + irqbits |= m_reg[IOASIC_UARTIN] & 0x3f00; if (fifo_state & 8) irqbits |= 0x0008; if (irqbits) @@ -793,6 +777,8 @@ void midway_ioasic_device::update_ioasic_irq() m_irq_state = new_state; if (!m_irq_callback.isnull()) m_irq_callback(m_irq_state ? ASSERT_LINE : CLEAR_LINE); + if (m_irq_state && (m_reg[IOASIC_UARTIN] & 0x1000)) + logerror("IOASIC: Asserting IRQ INTCTRL=%04x INTSTAT=%04X\n", m_reg[IOASIC_INTCTL], m_reg[IOASIC_INTSTAT]); } } @@ -1017,14 +1003,15 @@ READ32_MEMBER( midway_ioasic_device::read ) switch (offset) { case IOASIC_PORT0: - result = machine().root_device().ioport("DIPS")->read(); - /* bit 0 seems to be a ready flag before shuffling happens */ + // bit 0 is PIC ready flag before shuffling happens + // bits 15:13 == 001 if (!m_shuffle_active) { - result |= 0x0001; /* blitz99 wants bit bits 13-15 to be 1 */ - result &= ~0xe000; - result |= 0x2000; + result = 0x2001; + } + else { + result = machine().root_device().ioport("DIPS")->read(); } break; @@ -1042,6 +1029,12 @@ READ32_MEMBER( midway_ioasic_device::read ) case IOASIC_UARTIN: m_reg[offset] &= ~0x1000; + if (result & 0x1000) + logerror("%06X:ioasic_r(%d) = %08X\n", machine().device("maincpu")->safe_pc(), offset, result); + // Add lf + if ((result & 0xff)==0x0d) + m_reg[offset] = 0x300a; + update_ioasic_irq(); break; case IOASIC_SOUNDSTAT: @@ -1087,7 +1080,7 @@ READ32_MEMBER( midway_ioasic_device::read ) } if (LOG_IOASIC && offset != IOASIC_SOUNDSTAT && offset != IOASIC_SOUNDIN) - logerror("%06X:ioasic_r(%d) = %08X\n", space.device().safe_pc(), offset, result); + logerror("%08X:ioasic_r(%d) = %08X\n", space.device().safe_pc(), offset, result); return result; } @@ -1101,10 +1094,20 @@ WRITE32_MEMBER( midway_ioasic_device::packed_w ) write(space, offset*2+1, data >> 16, 0x0000ffff); } -WRITE8_MEMBER(midway_ioasic_device::serial_rx_w) +void midway_ioasic_device::serial_rx_w(u8 data) { - m_reg[IOASIC_UARTIN] = data | 0x1000; - update_ioasic_irq(); + // Break Detect 0x0100 + // Frame Error 0x0200 + // Overrun 0x0400 + // Rx FIFO FULL 0x0800 + // Rx Ready 0x1000 + // Tx EMPTY 0x2000 + // CTS IN 0x4000 + // CTS OUT 0x8000 + if (m_reg[IOASIC_UARTCONTROL] & 0x200) { + m_reg[IOASIC_UARTIN] = data | 0x3000; + update_ioasic_irq(); + } } @@ -1114,7 +1117,10 @@ WRITE32_MEMBER( midway_ioasic_device::write ) offset = m_shuffle_active ? m_shuffle_map[offset & 15] : offset; oldreg = m_reg[offset]; - COMBINE_DATA(&m_reg[offset]); + // Block register updates until ioasic is unlocked + // mwskins and thegrid use this as test to see if the ioasic is unlocked + if (m_shuffle_active) + COMBINE_DATA(&m_reg[offset]); newreg = m_reg[offset]; if (LOG_IOASIC && offset != IOASIC_SOUNDOUT) @@ -1127,7 +1133,7 @@ WRITE32_MEMBER( midway_ioasic_device::write ) if (data == 0xe2) { m_shuffle_active = 1; - logerror("*** I/O ASIC shuffling enabled!\n"); + logerror("*** I/O ASIC unlocked!\n"); m_reg[IOASIC_INTCTL] = 0; m_reg[IOASIC_UARTCONTROL] = 0; /* bug in 10th Degree assumes this */ } @@ -1140,20 +1146,27 @@ WRITE32_MEMBER( midway_ioasic_device::write ) break; break; + case IOASIC_UARTCONTROL: + logerror("%08X IOASIC uart control = %04X INTCTRL=%04x\n", machine().device("maincpu")->safe_pc(), data, m_reg[IOASIC_INTCTL]); + break; + case IOASIC_UARTOUT: if (m_reg[IOASIC_UARTCONTROL] & 0x800) { /* we're in loopback mode -- copy to the input */ - m_reg[IOASIC_UARTIN] = (newreg & 0x00ff) | 0x1000; + m_reg[IOASIC_UARTIN] = (newreg & 0x00ff) | 0x3000; update_ioasic_irq(); } else { - m_serial_tx_cb(data & 0xff); + m_serial_tx_cb(data); + m_reg[IOASIC_UARTIN] |= 0x2000; + update_ioasic_irq(); if (PRINTF_DEBUG) { osd_printf_info("%c", data & 0xff); logerror("%c", data & 0xff); } } + //logerror("IOASIC uart tx data = %04X\n", data); break; case IOASIC_SOUNDCTL: @@ -1209,7 +1222,7 @@ WRITE32_MEMBER( midway_ioasic_device::write ) /* bit 7 = sound output buffer empty */ /* bit 14 = LED? */ if (LOG_IOASIC && ((oldreg ^ newreg) & 0x3ff6)) - logerror("IOASIC int control = %04X\n", data); + logerror("IOASIC interrupt control = %04X\n", data); update_ioasic_irq(); break; diff --git a/src/mame/machine/midwayic.h b/src/mame/machine/midwayic.h index 28bdcd6c6ee..65a6c6cf8fb 100644 --- a/src/mame/machine/midwayic.h +++ b/src/mame/machine/midwayic.h @@ -5,9 +5,11 @@ Emulation of various Midway ICs ***************************************************************************/ +#ifndef MAME_MACHINE_MIDWAY_IC_H +#define MAME_MACHINE_MIDWAY_IC_H + +#pragma once -#ifndef __MIDWAY_IC__ -#define __MIDWAY_IC__ #include "audio/cage.h" #include "audio/dcs.h" @@ -20,7 +22,6 @@ class midway_serial_pic_device : public device_t public: // construction/destruction midway_serial_pic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - midway_serial_pic_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); static void static_set_upper(device_t &device, int upper) { downcast(device).m_upper = upper; } @@ -30,6 +31,8 @@ public: DECLARE_WRITE_LINE_MEMBER( reset_w ); protected: + midway_serial_pic_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; @@ -48,7 +51,7 @@ private: // device type definition -extern const device_type MIDWAY_SERIAL_PIC; +DECLARE_DEVICE_TYPE(MIDWAY_SERIAL_PIC, midway_serial_pic_device) #define MCFG_MIDWAY_SERIAL_PIC_UPPER(_upper) \ midway_serial_pic_device::static_set_upper(*device, _upper); @@ -60,7 +63,6 @@ class midway_serial_pic_emu_device : public device_t public: // construction/destruction midway_serial_pic_emu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - midway_serial_pic_emu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); DECLARE_READ8_MEMBER(read_a); DECLARE_READ8_MEMBER(read_b); @@ -70,17 +72,16 @@ public: DECLARE_WRITE8_MEMBER(write_c); protected: + midway_serial_pic_emu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; - -private: - }; // device type definition -extern const device_type MIDWAY_SERIAL_PIC_EMU; +DECLARE_DEVICE_TYPE(MIDWAY_SERIAL_PIC_EMU, midway_serial_pic_emu_device) @@ -88,13 +89,11 @@ extern const device_type MIDWAY_SERIAL_PIC_EMU; // ======================> midway_serial_pic2_device -class midway_serial_pic2_device : public midway_serial_pic_device, - public device_nvram_interface +class midway_serial_pic2_device : public midway_serial_pic_device, public device_nvram_interface { public: // construction/destruction midway_serial_pic2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - midway_serial_pic2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); static void static_set_yearoffs(device_t &device, int yearoffs) { downcast(device).m_yearoffs = yearoffs; } @@ -105,6 +104,8 @@ public: void set_default_nvram(const uint8_t *nvram); protected: + midway_serial_pic2_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; @@ -136,7 +137,7 @@ private: // device type definition -extern const device_type MIDWAY_SERIAL_PIC2; +DECLARE_DEVICE_TYPE(MIDWAY_SERIAL_PIC2, midway_serial_pic2_device) #define MCFG_MIDWAY_SERIAL_PIC2_UPPER MCFG_MIDWAY_SERIAL_PIC_UPPER @@ -178,7 +179,7 @@ public: DECLARE_WRITE8_MEMBER(cage_irq_handler); - DECLARE_WRITE8_MEMBER(serial_rx_w); + void serial_rx_w(u8 data); void ioasic_reset(); @@ -218,7 +219,7 @@ private: // device type definition -extern const device_type MIDWAY_IOASIC; +DECLARE_DEVICE_TYPE(MIDWAY_IOASIC, midway_ioasic_device) #define MCFG_MIDWAY_IOASIC_UPPER MCFG_MIDWAY_SERIAL_PIC_UPPER @@ -253,4 +254,4 @@ enum MIDWAY_IOASIC_HYPRDRIV }; -#endif +#endif // MAME_MACHINE_MIDWAY_IC_H diff --git a/src/mame/machine/mie.cpp b/src/mame/machine/mie.cpp index a130493dc3a..6f020a7a2d2 100644 --- a/src/mame/machine/mie.cpp +++ b/src/mame/machine/mie.cpp @@ -23,8 +23,8 @@ // - Speed is all wrong -const device_type MIE = device_creator; -const device_type MIE_JVS = device_creator; +DEFINE_DEVICE_TYPE(MIE, mie_device, "mie", "Sega 315-6146 MIE") +DEFINE_DEVICE_TYPE(MIE_JVS, mie_jvs_device, "mie_jvs", "JVS (MIE)") static ADDRESS_MAP_START( mie_map, AS_PROGRAM, 8, mie_device) AM_RANGE(0x0000, 0x07ff) AM_ROM @@ -88,12 +88,12 @@ machine_config_constructor mie_device::device_mconfig_additions() const } mie_jvs_device::mie_jvs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : jvs_host(mconfig, MIE_JVS, "JVS (MIE)", tag, owner, clock, "mie_jvs", __FILE__) + : jvs_host(mconfig, MIE_JVS, tag, owner, clock) { } mie_device::mie_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : maple_device(mconfig, MIE, "Sega 315-6146 MIE", tag, owner, clock, "mie", __FILE__) + : maple_device(mconfig, MIE, tag, owner, clock) { memset(gpio_name, 0, sizeof(gpio_name)); jvs_name = nullptr; diff --git a/src/mame/machine/mie.h b/src/mame/machine/mie.h index 4d3e5213354..f74def20266 100644 --- a/src/mame/machine/mie.h +++ b/src/mame/machine/mie.h @@ -1,12 +1,15 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef __MIE_H__ -#define __MIE_H__ +#ifndef MAME_MACHINE_MIE_H +#define MAME_MACHINE_MIE_H + +#pragma once + +#include "machine/mapledev.h" #include "cpu/z80/z80.h" #include "machine/eepromser.h" #include "machine/jvshost.h" -#include "machine/mapledev.h" #define MCFG_MIE_ADD(_tag, _clock, _host_tag, _host_port, g0, g1, g2, g3, g4, g5, g6, g7) \ MCFG_MAPLE_DEVICE_ADD(_tag "_maple", MIE, _clock, _host_tag, _host_port) \ @@ -128,6 +131,7 @@ public: // device type definition -extern const device_type MIE, MIE_JVS; +DECLARE_DEVICE_TYPE(MIE, mie_device) +DECLARE_DEVICE_TYPE(MIE_JVS, mie_jvs_device) -#endif /* __MIE_H__ */ +#endif // MAME_MACHINE_MIE_H diff --git a/src/mame/machine/mm1kb.cpp b/src/mame/machine/mm1kb.cpp index 875076bd196..4db233d9ea3 100644 --- a/src/mame/machine/mm1kb.cpp +++ b/src/mame/machine/mm1kb.cpp @@ -17,7 +17,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type MM1_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(MM1_KEYBOARD, mm1_keyoard_device, "mm1kb", "MikroMikko 1 keyboard") //------------------------------------------------- @@ -34,7 +34,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const tiny_rom_entry *mm1_keyboard_t::device_rom_region() const +const tiny_rom_entry *mm1_keyoard_device::device_rom_region() const { return ROM_NAME( mm1_keyboard ); } @@ -51,7 +51,7 @@ static const char *const mm1_kb_sample_names[] = nullptr }; -bool mm1_keyboard_t::first_time = true; +bool mm1_keyoard_device::first_time = true; //------------------------------------------------- // MACHINE_DRIVER( mm1_keyboard ) @@ -71,7 +71,7 @@ MACHINE_CONFIG_END // machine configurations //------------------------------------------------- -machine_config_constructor mm1_keyboard_t::device_mconfig_additions() const +machine_config_constructor mm1_keyoard_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( mm1_keyboard ); } @@ -193,7 +193,7 @@ INPUT_PORTS_END // input_ports - device-specific input ports //------------------------------------------------- -ioport_constructor mm1_keyboard_t::device_input_ports() const +ioport_constructor mm1_keyoard_device::device_input_ports() const { return INPUT_PORTS_NAME( mm1_keyboard ); } @@ -205,11 +205,11 @@ ioport_constructor mm1_keyboard_t::device_input_ports() const //************************************************************************** //------------------------------------------------- -// mm1_keyboard_t - constructor +// mm1_keyoard_device - constructor //------------------------------------------------- -mm1_keyboard_t::mm1_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, MM1_KEYBOARD, "MikroMikko 1 keyboard", tag, owner, clock, "mm1kb", __FILE__), +mm1_keyoard_device::mm1_keyoard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, MM1_KEYBOARD, tag, owner, clock), m_write_kbst(*this), m_samples(*this, "keyboard_and_chassis_sounds"), m_rom(*this, "keyboard"), @@ -230,7 +230,7 @@ enum // device_start - device-specific startup //------------------------------------------------- -void mm1_keyboard_t::device_start() +void mm1_keyoard_device::device_start() { // resolve callbacks m_write_kbst.resolve_safe(); @@ -240,7 +240,7 @@ void mm1_keyboard_t::device_start() m_scan_timer->adjust(attotime::from_hz(clock()), 0, attotime::from_hz(clock())); // add notification request for system shut down (to play back the power switch sound once more) - machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(&mm1_keyboard_t::shut_down_mm1, this)); + machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(&mm1_keyoard_device::shut_down_mm1, this)); // state saving save_item(NAME(m_sense)); @@ -248,7 +248,7 @@ void mm1_keyboard_t::device_start() save_item(NAME(m_data)); } -void mm1_keyboard_t::shut_down_mm1() +void mm1_keyoard_device::shut_down_mm1() { m_samples->start(1, 1); // pretty useless this, as far as there is no way to delay the shut down process... } @@ -257,7 +257,7 @@ void mm1_keyboard_t::shut_down_mm1() // device_timer - handler timer events //------------------------------------------------- -void mm1_keyboard_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +void mm1_keyoard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { // handle scan timer uint8_t data = 0xff; diff --git a/src/mame/machine/mm1kb.h b/src/mame/machine/mm1kb.h index f5c19f7e74c..ce5af33d784 100644 --- a/src/mame/machine/mm1kb.h +++ b/src/mame/machine/mm1kb.h @@ -5,11 +5,11 @@ Nokia MikroMikko 1 keyboard emulation *********************************************************************/ +#ifndef MAME_MACHINE_MM1KB_H +#define MAME_MACHINE_MM1KB_H #pragma once -#ifndef __MM1_KEYBOARD__ -#define __MM1_KEYBOARD__ #include "sound/samples.h" @@ -20,7 +20,7 @@ //************************************************************************** #define MCFG_MM1_KEYBOARD_KBST_CALLBACK(_write) \ - devcb = &mm1_keyboard_t::set_kbst_wr_callback(*device, DEVCB_##_write); + devcb = &mm1_keyoard_device::set_kbst_wr_callback(*device, DEVCB_##_write); @@ -28,15 +28,15 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> mm1_keyboard_t +// ======================> mm1_keyoard_device -class mm1_keyboard_t : public device_t +class mm1_keyoard_device : public device_t { public: // construction/destruction - mm1_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + mm1_keyoard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_kbst_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_kbst.set_callback(object); } + template static devcb_base &set_kbst_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_kbst.set_callback(std::forward(cb)); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -83,8 +83,8 @@ private: // device type definition -extern const device_type MM1_KEYBOARD; +DECLARE_DEVICE_TYPE(MM1_KEYBOARD, mm1_keyoard_device) -#endif +#endif // MAME_MACHINE_MM1KB_H diff --git a/src/mame/machine/ms7004.cpp b/src/mame/machine/ms7004.cpp index 1f3ae8a3421..601643727eb 100644 --- a/src/mame/machine/ms7004.cpp +++ b/src/mame/machine/ms7004.cpp @@ -36,7 +36,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type MS7004 = device_creator; +DEFINE_DEVICE_TYPE(MS7004, ms7004_device, "ms7004", "MS7004 keyboard") ROM_START( ms7004 ) ROM_REGION (0x800, MS7004_CPU_TAG, 0) @@ -51,13 +51,6 @@ static ADDRESS_MAP_START( ms7004_map, AS_PROGRAM, 8, ms7004_device ) AM_RANGE(0x0000, 0x07ff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( ms7004_iomap, AS_IO, 8, ms7004_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w) -ADDRESS_MAP_END - //------------------------------------------------- // MACHINE_CONFIG //------------------------------------------------- @@ -65,7 +58,10 @@ ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( ms7004 ) MCFG_CPU_ADD(MS7004_CPU_TAG, I8035, XTAL_4_608MHz) MCFG_CPU_PROGRAM_MAP(ms7004_map) - MCFG_CPU_IO_MAP(ms7004_iomap) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(ms7004_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(ms7004_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(ms7004_device, t1_r)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) MCFG_I8243_ADD("i8243", NOOP, WRITE8(ms7004_device, i8243_port_w)) @@ -361,7 +357,7 @@ ioport_constructor ms7004_device::device_input_ports() const //------------------------------------------------- ms7004_device::ms7004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MS7004, "MS7004 keyboard", tag, owner, clock, "ms7004", __FILE__), + : device_t(mconfig, MS7004, tag, owner, clock), m_maincpu(*this, MS7004_CPU_TAG), m_speaker(*this, MS7004_SPK_TAG), m_i8243(*this, "i8243"), @@ -443,7 +439,7 @@ WRITE8_MEMBER( ms7004_device::p2_w ) DBG_LOG(2,0,( "p2_w %02x = col %d\n", data, data&15)); m_p2 = data; - m_i8243->i8243_p2_w(space, offset, data); + m_i8243->p2_w(space, offset, data); } @@ -476,7 +472,7 @@ WRITE8_MEMBER( ms7004_device::i8243_port_w ) // t1_r - //------------------------------------------------- -READ8_MEMBER( ms7004_device::t1_r ) +READ_LINE_MEMBER( ms7004_device::t1_r ) { if (!BIT(m_p1,4)) return m_keylatch; diff --git a/src/mame/machine/ms7004.h b/src/mame/machine/ms7004.h index 4847e4b66e2..f8bf4b1def2 100644 --- a/src/mame/machine/ms7004.h +++ b/src/mame/machine/ms7004.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Sergey Svishchev -#pragma once +#ifndef MAME_MACHINE_MS7004_H +#define MAME_MACHINE_MS7004_H -#ifndef __MS7004_H__ -#define __MS7004_H__ +#pragma once #include "cpu/mcs48/mcs48.h" #include "machine/i8243.h" @@ -37,12 +37,12 @@ public: // construction/destruction ms7004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_tx_handler(device_t &device, _Object wr) { return downcast(device).m_tx_handler.set_callback(wr); } - template static devcb_base &set_rts_handler(device_t &device, _Object wr) { return downcast(device).m_rts_handler.set_callback(wr); } + template static devcb_base &set_tx_handler(device_t &device, Object &&wr) { return downcast(device).m_tx_handler.set_callback(std::forward(wr)); } + template static devcb_base &set_rts_handler(device_t &device, Object &&wr) { return downcast(device).m_rts_handler.set_callback(std::forward(wr)); } DECLARE_WRITE8_MEMBER( p1_w ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); DECLARE_WRITE8_MEMBER( i8243_port_w ); DECLARE_WRITE_LINE_MEMBER( write_rxd ); @@ -71,6 +71,6 @@ private: }; // device type definition -extern const device_type MS7004; +DECLARE_DEVICE_TYPE(MS7004, ms7004_device) -#endif +#endif // MAME_MACHINE_MS7004_H diff --git a/src/mame/machine/msx_matsushita.cpp b/src/mame/machine/msx_matsushita.cpp index 563b8003162..c4fbcdfa9bb 100644 --- a/src/mame/machine/msx_matsushita.cpp +++ b/src/mame/machine/msx_matsushita.cpp @@ -5,10 +5,10 @@ const uint8_t manufacturer_id = 0x08; -const device_type MSX_MATSUSHITA = device_creator; +DEFINE_DEVICE_TYPE(MSX_MATSUSHITA, msx_matsushita_device, "msx_matsushita", "Matsushita switched device") msx_matsushita_device::msx_matsushita_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MSX_MATSUSHITA, "Matsushita switched device", tag, owner, clock, "msx_matsushita", __FILE__) + : device_t(mconfig, MSX_MATSUSHITA, tag, owner, clock) , device_nvram_interface(mconfig, *this) , m_io_config(*this, "CONFIG") , m_turbo_out_cb(*this) diff --git a/src/mame/machine/msx_matsushita.h b/src/mame/machine/msx_matsushita.h index 6fd29efee16..8daad1a006b 100644 --- a/src/mame/machine/msx_matsushita.h +++ b/src/mame/machine/msx_matsushita.h @@ -1,13 +1,13 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol -#ifndef __MSX_MATSUSHITA_H -#define __MSX_MATSUSHITA_H +#ifndef MAME_MACHINE_MSX_MATSUSHITA_H +#define MAME_MACHINE_MSX_MATSUSHITA_H #include "msx_switched.h" -extern const device_type MSX_MATSUSHITA; +DECLARE_DEVICE_TYPE(MSX_MATSUSHITA, msx_matsushita_device) #define MCFG_MSX_MATSUSHITA_ADD(_tag) \ @@ -24,7 +24,8 @@ class msx_matsushita_device : public device_t, public: msx_matsushita_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_turbo_callback(device_t &device, _Object object) { return downcast(device).m_turbo_out_cb.set_callback(object); } + template static devcb_base &set_turbo_callback(device_t &device, Object &&cb) + { return downcast(device).m_turbo_out_cb.set_callback(std::forward(cb)); } virtual DECLARE_READ8_MEMBER(switched_read) override; virtual DECLARE_WRITE8_MEMBER(switched_write) override; @@ -50,4 +51,4 @@ private: uint8_t m_pattern; }; -#endif +#endif // MAME_MACHINE_MSX_MATSUSHITA_H diff --git a/src/mame/machine/msx_s1985.cpp b/src/mame/machine/msx_s1985.cpp index 54695ee6b54..f596600c15c 100644 --- a/src/mame/machine/msx_s1985.cpp +++ b/src/mame/machine/msx_s1985.cpp @@ -5,10 +5,10 @@ const uint8_t manufacturer_id = 0xfe; -const device_type MSX_S1985 = device_creator; +DEFINE_DEVICE_TYPE(MSX_S1985, msx_s1985_device, "msx_s1985", "MSX-Engine S1985") msx_s1985_device::msx_s1985_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MSX_S1985, "MSX-Engine S1985", tag, owner, clock, "msx_s1985", __FILE__) + : device_t(mconfig, MSX_S1985, tag, owner, clock) , device_nvram_interface(mconfig, *this) , m_selected(false) , m_backup_ram_address(0) diff --git a/src/mame/machine/msx_s1985.h b/src/mame/machine/msx_s1985.h index d1ccde5fff4..df93f2f455d 100644 --- a/src/mame/machine/msx_s1985.h +++ b/src/mame/machine/msx_s1985.h @@ -1,13 +1,13 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol -#ifndef __MSX_S1985_H -#define __MSX_S1985_H +#ifndef MAME_MACHINE_MSX_S1985_H +#define MAME_MACHINE_MSX_S1985_H #include "msx_switched.h" -extern const device_type MSX_S1985; +DECLARE_DEVICE_TYPE(MSX_S1985, msx_s1985_device) #define MCFG_MSX_S1985_ADD(_tag) \ @@ -43,4 +43,4 @@ private: uint8_t m_pattern; }; -#endif +#endif // MAME_MACHINE_MSX_S1985_H diff --git a/src/mame/machine/msx_systemflags.cpp b/src/mame/machine/msx_systemflags.cpp index 4aa79e46fac..7857df6761a 100644 --- a/src/mame/machine/msx_systemflags.cpp +++ b/src/mame/machine/msx_systemflags.cpp @@ -4,11 +4,11 @@ #include "msx_systemflags.h" -const device_type MSX_SYSTEMFLAGS = device_creator; +DEFINE_DEVICE_TYPE(MSX_SYSTEMFLAGS, msx_systemflags_device, "msx_systemflags", "MSX System Flags") msx_systemflags_device::msx_systemflags_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MSX_SYSTEMFLAGS, "MSX System Flags", tag, owner, clock, "msx_systemflags", __FILE__) + : device_t(mconfig, MSX_SYSTEMFLAGS, tag, owner, clock) , m_initial_value(0xff) , m_system_flags(0xff) { diff --git a/src/mame/machine/msx_systemflags.h b/src/mame/machine/msx_systemflags.h index c91f8e9b364..aacb60187a0 100644 --- a/src/mame/machine/msx_systemflags.h +++ b/src/mame/machine/msx_systemflags.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol -#ifndef __MSX_SYSTEMFLAGS_H -#define __MSX_SYSTEMFLAGS_H +#ifndef MAME_MACHINE_MSX_SYSTEMFLAGS_H +#define MAME_MACHINE_MSX_SYSTEMFLAGS_H /* Some MSX2+ and TurboR machines have a 'system flags' I/O port ($F4). @@ -9,7 +9,7 @@ The value in this register is cleared on power up, but it keeps it's value during a reset of the system. */ -extern const device_type MSX_SYSTEMFLAGS; +DECLARE_DEVICE_TYPE(MSX_SYSTEMFLAGS, msx_systemflags_device) #define MCFG_MSX_SYSTEMFLAGS_ADD(_tag, _initial_value) \ @@ -36,4 +36,4 @@ private: uint8_t m_system_flags; }; -#endif +#endif // MAME_MACHINE_MSX_SYSTEMFLAGS_H diff --git a/src/mame/machine/n64.cpp b/src/mame/machine/n64.cpp index dcf424d69c9..88355534a74 100644 --- a/src/mame/machine/n64.cpp +++ b/src/mame/machine/n64.cpp @@ -10,10 +10,10 @@ #include "video/n64.h" // device type definition -const device_type N64PERIPH = device_creator; +DEFINE_DEVICE_TYPE(N64PERIPH, n64_periphs, "n64_periphs", "N64 Peripheral Chips") n64_periphs::n64_periphs(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, N64PERIPH, "N64 Periphal Chips", tag, owner, clock, "n64_periphs", __FILE__) + : device_t(mconfig, N64PERIPH, tag, owner, clock) , device_video_interface(mconfig, *this) , m_nvram_image(nullptr) , dd_present(false) @@ -2720,7 +2720,7 @@ void n64_state::n64_machine_stop() device_image_interface *image = dynamic_cast(periphs->m_nvram_image); uint8_t data[0x30800]; - if (m_sram != nullptr) + if (m_sram == nullptr) { memset(data, 0, 0x20000); } diff --git a/src/mame/machine/namco06.cpp b/src/mame/machine/namco06.cpp index 11d2647abed..0b3ba86d86a 100644 --- a/src/mame/machine/namco06.cpp +++ b/src/mame/machine/namco06.cpp @@ -85,18 +85,18 @@ #include "machine/namco06.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" TIMER_CALLBACK_MEMBER( namco_06xx_device::nmi_generate ) { if (!m_nmicpu->suspended(SUSPEND_REASON_HALT | SUSPEND_REASON_RESET | SUSPEND_REASON_DISABLE)) { - LOG(("NMI cpu '%s'\n",m_nmicpu->tag())); + LOG("NMI cpu '%s'\n",m_nmicpu->tag()); m_nmicpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } else - LOG(("NMI not generated because cpu '%s' is suspended\n",m_nmicpu->tag())); + LOG("NMI not generated because cpu '%s' is suspended\n",m_nmicpu->tag()); } @@ -104,7 +104,7 @@ READ8_MEMBER( namco_06xx_device::data_r ) { uint8_t result = 0xff; - LOG(("%s: 06XX '%s' read offset %d\n",machine().describe_context(),tag(),offset)); + LOG("%s: 06XX '%s' read offset %d\n",machine().describe_context(),tag(),offset); if (!(m_control & 0x10)) { @@ -112,10 +112,10 @@ READ8_MEMBER( namco_06xx_device::data_r ) return 0; } - if ((m_control & (1 << 0)) && !m_read_0.isnull()) result &= m_read_0(space, 0); - if ((m_control & (1 << 1)) && !m_read_1.isnull()) result &= m_read_1(space, 0); - if ((m_control & (1 << 2)) && !m_read_2.isnull()) result &= m_read_2(space, 0); - if ((m_control & (1 << 3)) && !m_read_3.isnull()) result &= m_read_3(space, 0); + if (BIT(m_control, 0)) result &= m_read[0](space, 0); + if (BIT(m_control, 1)) result &= m_read[1](space, 0); + if (BIT(m_control, 2)) result &= m_read[2](space, 0); + if (BIT(m_control, 3)) result &= m_read[3](space, 0); return result; } @@ -123,40 +123,40 @@ READ8_MEMBER( namco_06xx_device::data_r ) WRITE8_MEMBER( namco_06xx_device::data_w ) { - LOG(("%s: 06XX '%s' write offset %d = %02x\n",machine().describe_context(),tag(),offset,data)); + LOG("%s: 06XX '%s' write offset %d = %02x\n",machine().describe_context(),tag(),offset,data); if (m_control & 0x10) { logerror("%s: 06XX '%s' write in read mode %02x\n",machine().describe_context(),tag(),m_control); return; } - if ((m_control & (1 << 0)) && !m_write_0.isnull()) m_write_0(space, 0, data); - if ((m_control & (1 << 1)) && !m_write_1.isnull()) m_write_1(space, 0, data); - if ((m_control & (1 << 2)) && !m_write_2.isnull()) m_write_2(space, 0, data); - if ((m_control & (1 << 3)) && !m_write_3.isnull()) m_write_3(space, 0, data); + if (BIT(m_control, 0)) m_write[0](space, 0, data); + if (BIT(m_control, 1)) m_write[1](space, 0, data); + if (BIT(m_control, 2)) m_write[2](space, 0, data); + if (BIT(m_control, 3)) m_write[3](space, 0, data); } READ8_MEMBER( namco_06xx_device::ctrl_r ) { - LOG(("%s: 06XX '%s' ctrl_r\n",machine().describe_context(),tag())); + LOG("%s: 06XX '%s' ctrl_r\n",machine().describe_context(),tag()); return m_control; } WRITE8_MEMBER( namco_06xx_device::ctrl_w ) { - LOG(("%s: 06XX '%s' control %02x\n",space.machine().describe_context(),tag(),data)); + LOG("%s: 06XX '%s' control %02x\n",space.machine().describe_context(),tag(),data); m_control = data; if ((m_control & 0x0f) == 0) { - LOG(("disabling nmi generate timer\n")); + LOG("disabling nmi generate timer\n"); m_nmi_timer->adjust(attotime::never); } else { - LOG(("setting nmi generate timer to 200us\n")); + LOG("setting nmi generate timer to 200us\n"); // this timing is critical. Due to a bug, Bosconian will stop responding to // inputs if a transfer terminates at the wrong time. @@ -164,34 +164,26 @@ WRITE8_MEMBER( namco_06xx_device::ctrl_w ) // not have enough time to process the incoming controls. m_nmi_timer->adjust(attotime::from_usec(200), 0, attotime::from_usec(200)); - if (m_control & 0x10) { - if ((m_control & (1 << 0)) && !m_readreq_0.isnull()) m_readreq_0(space, 0); - if ((m_control & (1 << 1)) && !m_readreq_1.isnull()) m_readreq_1(space, 0); - if ((m_control & (1 << 2)) && !m_readreq_2.isnull()) m_readreq_2(space, 0); - if ((m_control & (1 << 3)) && !m_readreq_3.isnull()) m_readreq_3(space, 0); + if (m_control & 0x10) + { + if (BIT(m_control, 0)) m_readreq[0](space, 0); + if (BIT(m_control, 1)) m_readreq[1](space, 0); + if (BIT(m_control, 2)) m_readreq[2](space, 0); + if (BIT(m_control, 3)) m_readreq[3](space, 0); } } } -const device_type NAMCO_06XX = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_06XX, namco_06xx_device, "namco06", "Namco 06xx") namco_06xx_device::namco_06xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_06XX, "Namco 06xx", tag, owner, clock, "namco06xx", __FILE__) + : device_t(mconfig, NAMCO_06XX, tag, owner, clock) , m_control(0) , m_nmicpu(*this, finder_base::DUMMY_TAG) - , m_read_0(*this) - , m_read_1(*this) - , m_read_2(*this) - , m_read_3(*this) - , m_readreq_0(*this) - , m_readreq_1(*this) - , m_readreq_2(*this) - , m_readreq_3(*this) - , m_write_0(*this) - , m_write_1(*this) - , m_write_2(*this) - , m_write_3(*this) + , m_read{ { *this }, { *this }, { *this }, { *this } } + , m_readreq{ { *this }, { *this }, { *this }, { *this } } + , m_write{ { *this }, { *this }, { *this }, { *this } } { } @@ -201,18 +193,15 @@ namco_06xx_device::namco_06xx_device(const machine_config &mconfig, const char * void namco_06xx_device::device_start() { - m_read_0.resolve(); - m_read_1.resolve(); - m_read_2.resolve(); - m_read_3.resolve(); - m_readreq_0.resolve(); - m_readreq_1.resolve(); - m_readreq_2.resolve(); - m_readreq_3.resolve(); - m_write_0.resolve(); - m_write_1.resolve(); - m_write_2.resolve(); - m_write_3.resolve(); + for (devcb_read8 &cb : m_read) + cb.resolve_safe(0xff); + + for (devcb_write_line &cb : m_readreq) + cb.resolve_safe(); + + for (devcb_write8 &cb : m_write) + cb.resolve_safe(); + /* allocate a timer */ m_nmi_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namco_06xx_device::nmi_generate),this)); diff --git a/src/mame/machine/namco06.h b/src/mame/machine/namco06.h index 04f4e56af28..9b2af7522ad 100644 --- a/src/mame/machine/namco06.h +++ b/src/mame/machine/namco06.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles -#ifndef NAMCO06_H -#define NAMCO06_H +#ifndef MAME_MACHINE_NAMCO06_H +#define MAME_MACHINE_NAMCO06_H + +#pragma once struct namco_06xx_config @@ -21,42 +23,42 @@ struct namco_06xx_config namco_06xx_device::set_maincpu(*device, "^" _tag); #define MCFG_NAMCO_06XX_READ_0_CB(_devcb) \ - devcb = &namco_06xx_device::set_read_0_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_read_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_READ_1_CB(_devcb) \ - devcb = &namco_06xx_device::set_read_1_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_read_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_READ_2_CB(_devcb) \ - devcb = &namco_06xx_device::set_read_2_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_read_callback<2>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_READ_3_CB(_devcb) \ - devcb = &namco_06xx_device::set_read_3_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_read_callback<3>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_READ_REQUEST_0_CB(_devcb) \ - devcb = &namco_06xx_device::set_read_request_0_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_read_request_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_READ_REQUEST_1_CB(_devcb) \ - devcb = &namco_06xx_device::set_read_request_1_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_read_request_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_READ_REQUEST_2_CB(_devcb) \ - devcb = &namco_06xx_device::set_read_request_2_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_read_request_callback<2>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_READ_REQUEST_3_CB(_devcb) \ - devcb = &namco_06xx_device::set_read_request_3_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_read_request_callback<3>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_WRITE_0_CB(_devcb) \ - devcb = &namco_06xx_device::set_write_0_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_write_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_WRITE_1_CB(_devcb) \ - devcb = &namco_06xx_device::set_write_1_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_write_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_WRITE_2_CB(_devcb) \ - devcb = &namco_06xx_device::set_write_2_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_write_callback<2>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_06XX_WRITE_3_CB(_devcb) \ - devcb = &namco_06xx_device::set_write_3_callback(*device, DEVCB_##_devcb); + devcb = &namco_06xx_device::set_write_callback<3>(*device, DEVCB_##_devcb); /* device get info callback */ @@ -67,21 +69,11 @@ public: static void set_maincpu(device_t &device, const char *tag) { downcast(device).m_nmicpu.set_tag(tag); } - template static devcb_base &set_read_0_callback(device_t &device, _Object object) { return downcast(device).m_read_0.set_callback(object); } - template static devcb_base &set_read_1_callback(device_t &device, _Object object) { return downcast(device).m_read_1.set_callback(object); } - template static devcb_base &set_read_2_callback(device_t &device, _Object object) { return downcast(device).m_read_2.set_callback(object); } - template static devcb_base &set_read_3_callback(device_t &device, _Object object) { return downcast(device).m_read_3.set_callback(object); } - - template static devcb_base &set_read_request_0_callback(device_t &device, _Object object) { return downcast(device).m_readreq_0.set_callback(object); } - template static devcb_base &set_read_request_1_callback(device_t &device, _Object object) { return downcast(device).m_readreq_1.set_callback(object); } - template static devcb_base &set_read_request_2_callback(device_t &device, _Object object) { return downcast(device).m_readreq_2.set_callback(object); } - template static devcb_base &set_read_request_3_callback(device_t &device, _Object object) { return downcast(device).m_readreq_3.set_callback(object); } + template static devcb_base &set_read_callback(device_t &device, Object &&cb) { return downcast(device).m_read[N].set_callback(std::forward(cb)); } + template static devcb_base &set_read_request_callback(device_t &device, Object &&cb) { return downcast(device).m_readreq[N].set_callback(std::forward(cb)); } - template static devcb_base &set_write_0_callback(device_t &device, _Object object) { return downcast(device).m_write_0.set_callback(object); } - template static devcb_base &set_write_1_callback(device_t &device, _Object object) { return downcast(device).m_write_1.set_callback(object); } - template static devcb_base &set_write_2_callback(device_t &device, _Object object) { return downcast(device).m_write_2.set_callback(object); } - template static devcb_base &set_write_3_callback(device_t &device, _Object object) { return downcast(device).m_write_3.set_callback(object); } + template static devcb_base &set_write_callback(device_t &device, Object &&cb) { return downcast(device).m_write[N].set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( data_r ); DECLARE_WRITE8_MEMBER( data_w ); @@ -102,24 +94,14 @@ private: required_device m_nmicpu; - devcb_read8 m_read_0; - devcb_read8 m_read_1; - devcb_read8 m_read_2; - devcb_read8 m_read_3; + devcb_read8 m_read[4]; - devcb_write_line m_readreq_0; - devcb_write_line m_readreq_1; - devcb_write_line m_readreq_2; - devcb_write_line m_readreq_3; + devcb_write_line m_readreq[4]; - devcb_write8 m_write_0; - devcb_write8 m_write_1; - devcb_write8 m_write_2; - devcb_write8 m_write_3; + devcb_write8 m_write[4]; }; -extern const device_type NAMCO_06XX; - +DECLARE_DEVICE_TYPE(NAMCO_06XX, namco_06xx_device) -#endif +#endif // MAME_MACHINE_NAMCO06_H diff --git a/src/mame/machine/namco50.cpp b/src/mame/machine/namco50.cpp index 8b54f21e05e..ae9f97338bd 100644 --- a/src/mame/machine/namco50.cpp +++ b/src/mame/machine/namco50.cpp @@ -237,10 +237,10 @@ ROM_START( namco_50xx ) ROM_END -const device_type NAMCO_50XX = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_50XX, namco_50xx_device, "namco50", "Namco 50xx") namco_50xx_device::namco_50xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_50XX, "Namco 50xx", tag, owner, clock, "namco50", __FILE__), + : device_t(mconfig, NAMCO_50XX, tag, owner, clock), m_cpu(*this, "mcu"), m_latched_cmd(0), m_latched_rw(0), diff --git a/src/mame/machine/namco50.h b/src/mame/machine/namco50.h index 565bb4320b4..ed9dfda7bd3 100644 --- a/src/mame/machine/namco50.h +++ b/src/mame/machine/namco50.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles -#ifndef NAMCO50_H -#define NAMCO50_H +#ifndef MAME_MACHINE_NAMCO50_H +#define MAME_MACHINE_NAMCO50_H + +#pragma once #include "cpu/mb88xx/mb88xx.h" @@ -42,6 +44,6 @@ private: uint8_t m_portO; }; -extern const device_type NAMCO_50XX; +DECLARE_DEVICE_TYPE(NAMCO_50XX, namco_50xx_device) -#endif /* NAMCO50_H */ +#endif // MAME_MACHINE_NAMCO50_H diff --git a/src/mame/machine/namco51.cpp b/src/mame/machine/namco51.cpp index a7b1257723a..9b0e0c9e285 100644 --- a/src/mame/machine/namco51.cpp +++ b/src/mame/machine/namco51.cpp @@ -62,17 +62,17 @@ #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" -#define READ_PORT(num) m_in_##num(space, 0) -#define WRITE_PORT(num,data) m_out_##num(space, 0, data) +#define READ_PORT(num) m_in[num](space, 0) +#define WRITE_PORT(num, data) m_out[num](space, 0, data) WRITE8_MEMBER( namco_51xx_device::write ) { data &= 0x07; - LOG(("%s: custom 51XX write %02x\n",machine().describe_context(),data)); + LOG("%s: custom 51XX write %02x\n",machine().describe_context(),data); if (m_coincred_mode) { @@ -168,7 +168,7 @@ static const int joy_map[16] = READ8_MEMBER( namco_51xx_device::read ) { - LOG(("%s: custom 51XX read\n",machine().describe_context())); + LOG("%s: custom 51XX read\n",machine().describe_context()); if (m_mode == 0) /* switch mode */ { @@ -341,17 +341,13 @@ ROM_START( namco_51xx ) ROM_LOAD( "51xx.bin", 0x0000, 0x0400, CRC(c2f57ef8) SHA1(50de79e0d6a76bda95ffb02fcce369a79e6abfec) ) ROM_END -const device_type NAMCO_51XX = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_51XX, namco_51xx_device, "namco51", "Namco 51xx") namco_51xx_device::namco_51xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_51XX, "Namco 51xx", tag, owner, clock, "namco51", __FILE__), + : device_t(mconfig, NAMCO_51XX, tag, owner, clock), m_cpu(*this, "mcu"), - m_in_0(*this), - m_in_1(*this), - m_in_2(*this), - m_in_3(*this), - m_out_0(*this), - m_out_1(*this), + m_in{ { *this }, { *this }, { *this }, { *this } }, + m_out{ { *this }, { *this } }, m_lastcoins(0), m_lastbuttons(0), m_mode(0), @@ -367,14 +363,12 @@ namco_51xx_device::namco_51xx_device(const machine_config &mconfig, const char * void namco_51xx_device::device_start() { /* resolve our read callbacks */ - m_in_0.resolve_safe(0); - m_in_1.resolve_safe(0); - m_in_2.resolve_safe(0); - m_in_3.resolve_safe(0); + for (devcb_read8 &cb : m_in) + cb.resolve_safe(0); /* resolve our write callbacks */ - m_out_0.resolve_safe(); - m_out_1.resolve_safe(); + for (devcb_write8 &cb : m_out) + cb.resolve_safe(); save_item(NAME(m_lastcoins)); save_item(NAME(m_lastbuttons)); diff --git a/src/mame/machine/namco51.h b/src/mame/machine/namco51.h index 56c11d3d788..bbdb17dcd04 100644 --- a/src/mame/machine/namco51.h +++ b/src/mame/machine/namco51.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles -#ifndef NAMCO51_H -#define NAMCO51_H +#ifndef MAME_MACHINE_NAMCO51_H +#define MAME_MACHINE_NAMCO51_H + +#pragma once #include "cpu/mb88xx/mb88xx.h" @@ -10,35 +12,31 @@ MCFG_DEVICE_ADD(_tag, NAMCO_51XX, _clock) #define MCFG_NAMCO_51XX_INPUT_0_CB(_devcb) \ - devcb = &namco_51xx_device::set_input_0_callback(*device, DEVCB_##_devcb); + devcb = &namco_51xx_device::set_input_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_51XX_INPUT_1_CB(_devcb) \ - devcb = &namco_51xx_device::set_input_1_callback(*device, DEVCB_##_devcb); + devcb = &namco_51xx_device::set_input_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_51XX_INPUT_2_CB(_devcb) \ - devcb = &namco_51xx_device::set_input_2_callback(*device, DEVCB_##_devcb); + devcb = &namco_51xx_device::set_input_callback<2>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_51XX_INPUT_3_CB(_devcb) \ - devcb = &namco_51xx_device::set_input_3_callback(*device, DEVCB_##_devcb); + devcb = &namco_51xx_device::set_input_callback<3>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_51XX_OUTPUT_0_CB(_devcb) \ - devcb = &namco_51xx_device::set_output_0_callback(*device, DEVCB_##_devcb); + devcb = &namco_51xx_device::set_output_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_51XX_OUTPUT_1_CB(_devcb) \ - devcb = &namco_51xx_device::set_output_1_callback(*device, DEVCB_##_devcb); + devcb = &namco_51xx_device::set_output_callback<1>(*device, DEVCB_##_devcb); class namco_51xx_device : public device_t { public: namco_51xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_input_0_callback(device_t &device, _Object object) { return downcast(device).m_in_0.set_callback(object); } - template static devcb_base &set_input_1_callback(device_t &device, _Object object) { return downcast(device).m_in_1.set_callback(object); } - template static devcb_base &set_input_2_callback(device_t &device, _Object object) { return downcast(device).m_in_2.set_callback(object); } - template static devcb_base &set_input_3_callback(device_t &device, _Object object) { return downcast(device).m_in_3.set_callback(object); } + template static devcb_base &set_input_callback(device_t &device, Object &&cb) { return downcast(device).m_in[N].set_callback(std::forward(cb)); } - template static devcb_base &set_output_0_callback(device_t &device, _Object object) { return downcast(device).m_out_0.set_callback(object); } - template static devcb_base &set_output_1_callback(device_t &device, _Object object) { return downcast(device).m_out_1.set_callback(object); } + template static devcb_base &set_output_callback(device_t &device, Object &&cb) { return downcast(device).m_out[N].set_callback(std::forward(cb)); } DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); @@ -52,12 +50,8 @@ protected: private: // internal state required_device m_cpu; - devcb_read8 m_in_0; - devcb_read8 m_in_1; - devcb_read8 m_in_2; - devcb_read8 m_in_3; - devcb_write8 m_out_0; - devcb_write8 m_out_1; + devcb_read8 m_in[4]; + devcb_write8 m_out[2]; int32_t m_lastcoins; int32_t m_lastbuttons; @@ -71,8 +65,7 @@ private: int32_t m_remap_joy; }; -extern const device_type NAMCO_51XX; - +DECLARE_DEVICE_TYPE(NAMCO_51XX, namco_51xx_device) -#endif /* NAMCO51_H */ +#endif // NAMCO_51XX diff --git a/src/mame/machine/namco53.cpp b/src/mame/machine/namco53.cpp index a76388149f1..1b183a614a9 100644 --- a/src/mame/machine/namco53.cpp +++ b/src/mame/machine/namco53.cpp @@ -59,7 +59,8 @@ #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" + READ8_MEMBER( namco_53xx_device::K_r ) { @@ -68,14 +69,7 @@ READ8_MEMBER( namco_53xx_device::K_r ) READ8_MEMBER( namco_53xx_device::Rx_r ) { - switch(offset) { - case 0 : return m_in_0(0); - case 1 : return m_in_1(0); - case 2 : return m_in_2(0); - case 3 : return m_in_3(0); - default : return 0xff; - } - + return (offset < ARRAY_LENGTH(m_in)) ? m_in[offset](0) : 0xff; } WRITE8_MEMBER( namco_53xx_device::O_w ) @@ -143,17 +137,14 @@ ROM_START( namco_53xx ) ROM_LOAD( "53xx.bin", 0x0000, 0x0400, CRC(b326fecb) SHA1(758d8583d658e4f1df93184009d86c3eb8713899) ) ROM_END -const device_type NAMCO_53XX = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_53XX, namco_53xx_device, "namco53", "Namco 53xx") namco_53xx_device::namco_53xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_53XX, "Namco 53xx", tag, owner, clock, "namco53", __FILE__), + : device_t(mconfig, NAMCO_53XX, tag, owner, clock), m_cpu(*this, "mcu"), m_portO(0), m_k(*this), - m_in_0(*this), - m_in_1(*this), - m_in_2(*this), - m_in_3(*this), + m_in{ { *this }, { *this }, { *this }, { *this } }, m_p(*this) { } @@ -165,10 +156,8 @@ void namco_53xx_device::device_start() { /* resolve our read/write callbacks */ m_k.resolve_safe(0); - m_in_0.resolve_safe(0); - m_in_1.resolve_safe(0); - m_in_2.resolve_safe(0); - m_in_3.resolve_safe(0); + for (devcb_read8 &cb : m_in) + cb.resolve_safe(0); m_p.resolve_safe(); save_item(NAME(m_portO)); diff --git a/src/mame/machine/namco53.h b/src/mame/machine/namco53.h index ba23efe4123..3526fb9176a 100644 --- a/src/mame/machine/namco53.h +++ b/src/mame/machine/namco53.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles -#ifndef NAMCO53_H -#define NAMCO53_H +#ifndef MAME_MACHINE_NAMCO53_H +#define MAME_MACHINE_NAMCO53_H + +#pragma once #include "cpu/mb88xx/mb88xx.h" @@ -12,16 +14,16 @@ devcb = &namco_53xx_device::set_k_port_callback(*device, DEVCB_##_devcb); #define MCFG_NAMCO_53XX_INPUT_0_CB(_devcb) \ - devcb = &namco_53xx_device::set_input_0_callback(*device, DEVCB_##_devcb); + devcb = &namco_53xx_device::set_input_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_53XX_INPUT_1_CB(_devcb) \ - devcb = &namco_53xx_device::set_input_1_callback(*device, DEVCB_##_devcb); + devcb = &namco_53xx_device::set_input_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_53XX_INPUT_2_CB(_devcb) \ - devcb = &namco_53xx_device::set_input_2_callback(*device, DEVCB_##_devcb); + devcb = &namco_53xx_device::set_input_callback<2>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_53XX_INPUT_3_CB(_devcb) \ - devcb = &namco_53xx_device::set_input_3_callback(*device, DEVCB_##_devcb); + devcb = &namco_53xx_device::set_input_callback<3>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_53XX_P_CB(_devcb) \ devcb = &namco_53xx_device::set_p_port_callback(*device, DEVCB_##_devcb); @@ -32,13 +34,10 @@ class namco_53xx_device : public device_t public: namco_53xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_input_0_callback(device_t &device, _Object object) { return downcast(device).m_in_0.set_callback(object); } - template static devcb_base &set_input_1_callback(device_t &device, _Object object) { return downcast(device).m_in_1.set_callback(object); } - template static devcb_base &set_input_2_callback(device_t &device, _Object object) { return downcast(device).m_in_2.set_callback(object); } - template static devcb_base &set_input_3_callback(device_t &device, _Object object) { return downcast(device).m_in_3.set_callback(object); } + template static devcb_base &set_input_callback(device_t &device, Object &&cb) { return downcast(device).m_in[N].set_callback(std::forward(cb)); } - template static devcb_base &set_k_port_callback(device_t &device, _Object object) { return downcast(device).m_k.set_callback(object); } - template static devcb_base &set_p_port_callback(device_t &device, _Object object) { return downcast(device).m_p.set_callback(object); } + template static devcb_base &set_k_port_callback(device_t &device, Object &&cb) { return downcast(device).m_k.set_callback(std::forward(cb)); } + template static devcb_base &set_p_port_callback(device_t &device, Object &&cb) { return downcast(device).m_p.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( K_r ); DECLARE_READ8_MEMBER( Rx_r ); @@ -60,16 +59,12 @@ private: required_device m_cpu; uint8_t m_portO; devcb_read8 m_k; - devcb_read8 m_in_0; - devcb_read8 m_in_1; - devcb_read8 m_in_2; - devcb_read8 m_in_3; + devcb_read8 m_in[4]; devcb_write8 m_p; }; -extern const device_type NAMCO_53XX; - +DECLARE_DEVICE_TYPE(NAMCO_53XX, namco_53xx_device) -#endif /* NAMCO53_H */ +#endif // MAME_MACHINE_NAMCO53_H diff --git a/src/mame/machine/namco62.cpp b/src/mame/machine/namco62.cpp index 4ef3d0e79e7..680b1223f37 100644 --- a/src/mame/machine/namco62.cpp +++ b/src/mame/machine/namco62.cpp @@ -15,7 +15,7 @@ #include "machine/namco62.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" /*************************************************************************** @@ -42,17 +42,13 @@ ROM_START( namco_62xx ) ROM_END -const device_type NAMCO_62XX = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_62XX, namco_62xx_device, "namco62", "Namco 62xx") namco_62xx_device::namco_62xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_62XX, "Namco 62xx", tag, owner, clock, "namco62", __FILE__), + : device_t(mconfig, NAMCO_62XX, tag, owner, clock), m_cpu(*this, "mcu"), - m_in_0(*this), - m_in_1(*this), - m_in_2(*this), - m_in_3(*this), - m_out_0(*this), - m_out_1(*this) + m_in{ { *this }, { *this }, { *this }, { *this } }, + m_out{ { *this }, { *this } } { } @@ -63,14 +59,12 @@ namco_62xx_device::namco_62xx_device(const machine_config &mconfig, const char * void namco_62xx_device::device_start() { /* resolve our read callbacks */ - m_in_0.resolve_safe(0); - m_in_1.resolve_safe(0); - m_in_2.resolve_safe(0); - m_in_3.resolve_safe(0); + for (devcb_read8 &cb : m_in) + cb.resolve_safe(0); /* resolve our write callbacks */ - m_out_0.resolve_safe(); - m_out_1.resolve_safe(); + for (devcb_write8 &cb : m_out) + cb.resolve_safe(); } //------------------------------------------------- diff --git a/src/mame/machine/namco62.h b/src/mame/machine/namco62.h index e41af64a221..d21f186a6e5 100644 --- a/src/mame/machine/namco62.h +++ b/src/mame/machine/namco62.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Philip Bennett -#ifndef NAMCO62_H -#define NAMCO62_H +#ifndef MAME_MACHINE_NAMCO62_H +#define MAME_MACHINE_NAMCO62_H #include "cpu/mb88xx/mb88xx.h" @@ -9,22 +9,22 @@ MCFG_DEVICE_ADD(_tag, NAMCO_62XX, _clock) #define MCFG_NAMCO_62XX_INPUT_0_CB(_devcb) \ - devcb = &namco_62xx_device::set_input_0_callback(*device, DEVCB_##_devcb); + devcb = &namco_62xx_device::set_input_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_62XX_INPUT_1_CB(_devcb) \ - devcb = &namco_62xx_device::set_input_1_callback(*device, DEVCB_##_devcb); + devcb = &namco_62xx_device::set_input_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_62XX_INPUT_2_CB(_devcb) \ - devcb = &namco_62xx_device::set_input_2_callback(*device, DEVCB_##_devcb); + devcb = &namco_62xx_device::set_input_callback<2>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_62XX_INPUT_3_CB(_devcb) \ - devcb = &namco_62xx_device::set_input_3_callback(*device, DEVCB_##_devcb); + devcb = &namco_62xx_device::set_input_callback<3>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_62XX_OUTPUT_0_CB(_devcb) \ - devcb = &namco_62xx_device::set_output_0_callback(*device, DEVCB_##_devcb); + devcb = &namco_62xx_device::set_output_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO_62XX_OUTPUT_1_CB(_devcb) \ - devcb = &namco_62xx_device::set_output_1_callback(*device, DEVCB_##_devcb); + devcb = &namco_62xx_device::set_output_callback<1>(*device, DEVCB_##_devcb); class namco_62xx_device : public device_t @@ -32,13 +32,9 @@ class namco_62xx_device : public device_t public: namco_62xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_input_0_callback(device_t &device, _Object object) { return downcast(device).m_in_0.set_callback(object); } - template static devcb_base &set_input_1_callback(device_t &device, _Object object) { return downcast(device).m_in_1.set_callback(object); } - template static devcb_base &set_input_2_callback(device_t &device, _Object object) { return downcast(device).m_in_2.set_callback(object); } - template static devcb_base &set_input_3_callback(device_t &device, _Object object) { return downcast(device).m_in_3.set_callback(object); } + template static devcb_base &set_input_callback(device_t &device, Object &&cb) { return downcast(device).m_in[N].set_callback(std::forward(cb)); } - template static devcb_base &set_output_0_callback(device_t &device, _Object object) { return downcast(device).m_out_0.set_callback(object); } - template static devcb_base &set_output_1_callback(device_t &device, _Object object) { return downcast(device).m_out_1.set_callback(object); } + template static devcb_base &set_output_callback(device_t &device, Object &&cb) { return downcast(device).m_out[N].set_callback(std::forward(cb)); } protected: // device-level overrides virtual void device_start() override; @@ -48,14 +44,10 @@ protected: private: // internal state required_device m_cpu; - devcb_read8 m_in_0; - devcb_read8 m_in_1; - devcb_read8 m_in_2; - devcb_read8 m_in_3; - devcb_write8 m_out_0; - devcb_write8 m_out_1; + devcb_read8 m_in[4]; + devcb_write8 m_out[2]; }; -extern const device_type NAMCO_62XX; +DECLARE_DEVICE_TYPE(NAMCO_62XX, namco_62xx_device) -#endif /* NAMCO62_H */ +#endif // MAME_MACHINE_NAMCO62_H diff --git a/src/mame/machine/namco_c139.cpp b/src/mame/machine/namco_c139.cpp index 9581a8325b0..ac8b9216a28 100644 --- a/src/mame/machine/namco_c139.cpp +++ b/src/mame/machine/namco_c139.cpp @@ -21,7 +21,7 @@ //************************************************************************** // device type definition -const device_type NAMCO_C139 = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_C139, namco_c139_device, "namco_c139", "Namco C139 Serial") //************************************************************************** @@ -45,7 +45,7 @@ ADDRESS_MAP_END //------------------------------------------------- namco_c139_device::namco_c139_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_C139, "namco_c139_longname", tag, owner, clock, "namco_c139", __FILE__), + : device_t(mconfig, NAMCO_C139, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("data", ENDIANNESS_BIG, 16, 14, 0, *ADDRESS_MAP_NAME(data_map)) { diff --git a/src/mame/machine/namco_c139.h b/src/mame/machine/namco_c139.h index bee3f51a6a3..7eb5f117978 100644 --- a/src/mame/machine/namco_c139.h +++ b/src/mame/machine/namco_c139.h @@ -5,11 +5,11 @@ Namco C139 - Serial I/F Controller ***************************************************************************/ +#ifndef MAME_MACHINE_NAMCO_C139_H +#define MAME_MACHINE_NAMCO_C139_H #pragma once -#ifndef __NAMCO_C139DEV_H__ -#define __NAMCO_C139DEV_H__ @@ -54,7 +54,7 @@ private: // device type definition -extern const device_type NAMCO_C139; +DECLARE_DEVICE_TYPE(NAMCO_C139, namco_c139_device) @@ -64,4 +64,4 @@ extern const device_type NAMCO_C139; -#endif +#endif // MAME_MACHINE_NAMCO_C139_H diff --git a/src/mame/machine/namco_c148.cpp b/src/mame/machine/namco_c148.cpp index ab8470b67eb..491daef7496 100644 --- a/src/mame/machine/namco_c148.cpp +++ b/src/mame/machine/namco_c148.cpp @@ -9,7 +9,7 @@ Based off implementation from K.Wilkins and Phil Stroffolino TODO: - - hookup C116 device, @see mame/includes/namcoic.h + - hookup C116 device, @see mame/machine/namcoic.h ============================================================================= Interrupt Controller C148 1C0000-1FFFFF R/W D00-D02 @@ -45,7 +45,7 @@ Interrupt Controller C148 1C0000-1FFFFF R/W D00-D02 #include "namco_c148.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) printf x; } while (0) +#include "logmacro.h" @@ -54,7 +54,7 @@ Interrupt Controller C148 1C0000-1FFFFF R/W D00-D02 //************************************************************************** // device type definition -const device_type NAMCO_C148 = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_C148, namco_c148_device, "namco_c148", "Namco C148 Interrupt Controller") //************************************************************************** @@ -66,7 +66,7 @@ const device_type NAMCO_C148 = device_creator; //------------------------------------------------- namco_c148_device::namco_c148_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_C148, "Namco C148 Interrupt Controller", tag, owner, clock, "namco_c148", __FILE__), + : device_t(mconfig, NAMCO_C148, tag, owner, clock), m_out_ext1_cb(*this), m_out_ext2_cb(*this), m_hostcpu_tag(nullptr), @@ -154,11 +154,11 @@ inline void namco_c148_device::flush_irq_acks() m_hostcpu->set_input_line(i,CLEAR_LINE); } -WRITE8_MEMBER( namco_c148_device::pos_irq_level_w ) { m_irqlevel.pos = data & 7; flush_irq_acks(); if(data != 0) { LOG(("%s: pos IRQ level = %02x\n",this->tag(),data)); } } -WRITE8_MEMBER( namco_c148_device::vblank_irq_level_w ) { m_irqlevel.vblank = data & 7; flush_irq_acks(); LOG(("%s: vblank IRQ level = %02x\n",this->tag(),data)); } -WRITE8_MEMBER( namco_c148_device::cpu_irq_level_w ) { m_irqlevel.cpu = data & 7; flush_irq_acks(); LOG(("%s: cpu IRQ level = %02x\n",this->tag(),data)); } -WRITE8_MEMBER( namco_c148_device::ex_irq_level_w ) { m_irqlevel.ex = data & 7; flush_irq_acks(); LOG(("%s: ex IRQ level = %02x\n",this->tag(),data)); } -WRITE8_MEMBER( namco_c148_device::sci_irq_level_w ) { m_irqlevel.sci = data & 7; flush_irq_acks(); LOG(("%s: sci IRQ level = %02x\n",this->tag(),data)); } +WRITE8_MEMBER( namco_c148_device::pos_irq_level_w ) { m_irqlevel.pos = data & 7; flush_irq_acks(); if(data != 0) { LOG("%s: pos IRQ level = %02x\n",data); } } +WRITE8_MEMBER( namco_c148_device::vblank_irq_level_w ) { m_irqlevel.vblank = data & 7; flush_irq_acks(); LOG("%s: vblank IRQ level = %02x\n",data); } +WRITE8_MEMBER( namco_c148_device::cpu_irq_level_w ) { m_irqlevel.cpu = data & 7; flush_irq_acks(); LOG("%s: cpu IRQ level = %02x\n",data); } +WRITE8_MEMBER( namco_c148_device::ex_irq_level_w ) { m_irqlevel.ex = data & 7; flush_irq_acks(); LOG("%s: ex IRQ level = %02x\n",data); } +WRITE8_MEMBER( namco_c148_device::sci_irq_level_w ) { m_irqlevel.sci = data & 7; flush_irq_acks(); LOG("%s: sci IRQ level = %02x\n",data); } READ16_MEMBER( namco_c148_device::vblank_irq_ack_r ) { m_hostcpu->set_input_line(m_irqlevel.vblank, CLEAR_LINE); return 0; } READ16_MEMBER( namco_c148_device::pos_irq_ack_r ) { m_hostcpu->set_input_line(m_irqlevel.pos, CLEAR_LINE); return 0; } diff --git a/src/mame/machine/namco_c148.h b/src/mame/machine/namco_c148.h index 7b920708e2b..4da06b3df38 100644 --- a/src/mame/machine/namco_c148.h +++ b/src/mame/machine/namco_c148.h @@ -5,11 +5,11 @@ Namco C148 - CPU Bus Manager ***************************************************************************/ +#ifndef MAME_MACHINE_NAMCO_C148_H +#define MAME_MACHINE_NAMCO_C148_H #pragma once -#ifndef __NAMCO_C148DEV_H__ -#define __NAMCO_C148DEV_H__ @@ -130,7 +130,7 @@ private: // device type definition -extern const device_type NAMCO_C148; +DECLARE_DEVICE_TYPE(NAMCO_C148, namco_c148_device) @@ -140,4 +140,4 @@ extern const device_type NAMCO_C148; -#endif +#endif // MAME_MACHINE_NAMCO_C148_H diff --git a/src/mame/machine/namco_settings.cpp b/src/mame/machine/namco_settings.cpp index 7d3a4c1a82b..1df580b9574 100644 --- a/src/mame/machine/namco_settings.cpp +++ b/src/mame/machine/namco_settings.cpp @@ -3,10 +3,10 @@ #include "emu.h" #include "namco_settings.h" -const device_type NAMCO_SETTINGS = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_SETTINGS, namco_settings_device, "namco_settings", "Namco Settings") namco_settings_device::namco_settings_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, NAMCO_SETTINGS, "Namco Settings", tag, owner, clock, "namco_settings", __FILE__) + device_t(mconfig, NAMCO_SETTINGS, tag, owner, clock) { } diff --git a/src/mame/machine/namco_settings.h b/src/mame/machine/namco_settings.h index 7f8c8b4826b..bc25f7db48e 100644 --- a/src/mame/machine/namco_settings.h +++ b/src/mame/machine/namco_settings.h @@ -3,8 +3,10 @@ // Namco system 12/23 settings device -#ifndef __NAMCO_SETTINGS_H__ -#define __NAMCO_SETTINGS_H__ +#ifndef MAME_MACHINE_NAMCO_SETTINGS_H +#define MAME_MACHINE_NAMCO_SETTINGS_H + +#pragma once #define MCFG_NAMCO_SETTINGS_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, NAMCO_SETTINGS, 0) @@ -27,6 +29,6 @@ private: uint8_t adr, value; }; -extern const device_type NAMCO_SETTINGS; +DECLARE_DEVICE_TYPE(NAMCO_SETTINGS, namco_settings_device) -#endif +#endif // MAME_MACHINE_NAMCO_SETTINGS_H diff --git a/src/mame/machine/namcoic.cpp b/src/mame/machine/namcoic.cpp index 663e918902c..292e22f02de 100644 --- a/src/mame/machine/namcoic.cpp +++ b/src/mame/machine/namcoic.cpp @@ -1,141 +1,114 @@ // license:BSD-3-Clause // copyright-holders:Phil Stroffolino #include "emu.h" +#include "machine/namcoic.h" + #include "includes/namcos2.h" /* for game-specific hacks */ -#include "includes/namcoic.h" /**************************************************************************************/ -static struct -{ - uint16_t control[0x40/2]; - /** - * [0x1] 0x02/2 tilemap#0.scrollx - * [0x3] 0x06/2 tilemap#0.scrolly - * [0x5] 0x0a/2 tilemap#1.scrollx - * [0x7] 0x0e/2 tilemap#1.scrolly - * [0x9] 0x12/2 tilemap#2.scrollx - * [0xb] 0x16/2 tilemap#2.scrolly - * [0xd] 0x1a/2 tilemap#3.scrollx - * [0xf] 0x1e/2 tilemap#3.scrolly - * 0x20/2 priority - * 0x30/2 color - */ - tilemap_t *tmap[6]; - std::unique_ptr videoram; - int gfxbank; - uint8_t *maskBaseAddr; - void (*cb)( running_machine &machine, uint16_t code, int *gfx, int *mask); -} mTilemapInfo; - -void namco_tilemap_invalidate( void ) + +void namcos2_shared_state::c123_tilemap_invalidate(void) { - int i; - for( i=0; i<6; i++ ) + for( int i = 0; i < 6; i++ ) { - mTilemapInfo.tmap[i]->mark_all_dirty(); + m_c123_TilemapInfo.tmap[i]->mark_all_dirty(); } } /* namco_tilemap_invalidate */ inline void namcos2_shared_state::namcoic_get_tile_info(tile_data &tileinfo,int tile_index,uint16_t *vram) { int tile, mask; - mTilemapInfo.cb( machine(), vram[tile_index], &tile, &mask ); - tileinfo.mask_data = mTilemapInfo.maskBaseAddr+mask*8; - SET_TILE_INFO_MEMBER(mTilemapInfo.gfxbank,tile,0,0); + m_c123_TilemapInfo.cb( vram[tile_index], &tile, &mask ); + tileinfo.mask_data = m_c123_TilemapInfo.maskBaseAddr+mask*8; + SET_TILE_INFO_MEMBER(m_c123_TilemapInfo.gfxbank,tile,0,0); } /* get_tile_info */ -TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info0 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x0000]); } -TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info1 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x1000]); } -TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info2 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x2000]); } -TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info3 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x3000]); } -TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info4 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x4008]); } -TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info5 ) { namcoic_get_tile_info(tileinfo,tile_index,&mTilemapInfo.videoram[0x4408]); } +TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info0 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x0000]); } +TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info1 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x1000]); } +TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info2 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x2000]); } +TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info3 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x3000]); } +TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info4 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x4008]); } +TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info5 ) { namcoic_get_tile_info(tileinfo,tile_index,&m_c123_TilemapInfo.videoram[0x4408]); } -void namcos2_shared_state::namco_tilemap_init( int gfxbank, void *maskBaseAddr, - void (*cb)( running_machine &machine, uint16_t code, int *gfx, int *mask) ) +void namcos2_shared_state::c123_tilemap_init( int gfxbank, void *maskBaseAddr, c123_tilemap_delegate tilemap_cb ) { - int i; - mTilemapInfo.gfxbank = gfxbank; - mTilemapInfo.maskBaseAddr = (uint8_t *)maskBaseAddr; - mTilemapInfo.cb = cb; - mTilemapInfo.videoram = std::make_unique( 0x10000 ); + m_c123_TilemapInfo.gfxbank = gfxbank; + m_c123_TilemapInfo.maskBaseAddr = (uint8_t *)maskBaseAddr; + m_c123_TilemapInfo.cb = tilemap_cb; + m_c123_TilemapInfo.videoram = std::make_unique( 0x10000 ); /* four scrolling tilemaps */ - mTilemapInfo.tmap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info0),this),TILEMAP_SCAN_ROWS,8,8,64,64); - mTilemapInfo.tmap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,8,8,64,64); - mTilemapInfo.tmap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,64,64); - mTilemapInfo.tmap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info3),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_c123_TilemapInfo.tmap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info0),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_c123_TilemapInfo.tmap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_c123_TilemapInfo.tmap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_c123_TilemapInfo.tmap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info3),this),TILEMAP_SCAN_ROWS,8,8,64,64); /* two non-scrolling tilemaps */ - mTilemapInfo.tmap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info4),this),TILEMAP_SCAN_ROWS,8,8,36,28); - mTilemapInfo.tmap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info5),this),TILEMAP_SCAN_ROWS,8,8,36,28); + m_c123_TilemapInfo.tmap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info4),this),TILEMAP_SCAN_ROWS,8,8,36,28); + m_c123_TilemapInfo.tmap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info5),this),TILEMAP_SCAN_ROWS,8,8,36,28); /* define offsets for scrolling */ - for( i=0; i<4; i++ ) + for( int i = 0; i < 4; i++ ) { static const int adj[4] = { 4,2,1,0 }; int dx = 44+adj[i]; - mTilemapInfo.tmap[i]->set_scrolldx( -dx, 288+dx ); - mTilemapInfo.tmap[i]->set_scrolldy( -24, 224+24 ); + m_c123_TilemapInfo.tmap[i]->set_scrolldx( -dx, 288+dx ); + m_c123_TilemapInfo.tmap[i]->set_scrolldy( -24, 224+24 ); } - save_item(NAME(mTilemapInfo.control)); - save_pointer(NAME(mTilemapInfo.videoram.get()), 0x10000); -} /* namco_tilemap_init */ + save_item(NAME(m_c123_TilemapInfo.control)); + save_pointer(NAME(m_c123_TilemapInfo.videoram.get()), 0x10000); +} -void -namco_tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri ) +void namcos2_shared_state::c123_tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri ) { - int i; - for( i=0; i<6; i++ ) + for( int i = 0; i < 6; i++ ) { /* note: priority is only in range 0..7, but Point Blank uses 0xf to hide a layer */ - if( (mTilemapInfo.control[0x20/2+i]&0xf) == pri ) + if( (m_c123_TilemapInfo.control[0x20/2+i]&0xf) == pri ) { - int color = mTilemapInfo.control[0x30/2+i] & 0x07; - mTilemapInfo.tmap[i]->set_palette_offset( color*256 ); - mTilemapInfo.tmap[i]->draw(screen, bitmap,cliprect,0,0); + int color = m_c123_TilemapInfo.control[0x30/2+i] & 0x07; + m_c123_TilemapInfo.tmap[i]->set_palette_offset( color*256 ); + m_c123_TilemapInfo.tmap[i]->draw(screen, bitmap,cliprect,0,0); } } -} /* namco_tilemap_draw */ +} /* c123_tilemap_draw */ -static void -SetTilemapVideoram( int offset, uint16_t newword ) +void namcos2_shared_state::c123_SetTilemapVideoram(int offset, uint16_t newword) { - mTilemapInfo.videoram[offset] = newword; + m_c123_TilemapInfo.videoram[offset] = newword; if( offset<0x4000 ) { - mTilemapInfo.tmap[offset>>12]->mark_tile_dirty(offset&0xfff); + m_c123_TilemapInfo.tmap[offset>>12]->mark_tile_dirty(offset&0xfff); } else if( offset>=0x8010/2 && offset<0x87f0/2 ) { /* fixed plane#1 */ offset-=0x8010/2; - mTilemapInfo.tmap[4]->mark_tile_dirty( offset ); + m_c123_TilemapInfo.tmap[4]->mark_tile_dirty( offset ); } else if( offset>=0x8810/2 && offset<0x8ff0/2 ) { /* fixed plane#2 */ offset-=0x8810/2; - mTilemapInfo.tmap[5]->mark_tile_dirty( offset ); + m_c123_TilemapInfo.tmap[5]->mark_tile_dirty( offset ); } } /* SetTilemapVideoram */ WRITE16_MEMBER( namcos2_shared_state::c123_tilemap_videoram_w ) { - uint16_t newword = mTilemapInfo.videoram[offset]; + uint16_t newword = m_c123_TilemapInfo.videoram[offset]; COMBINE_DATA( &newword ); - SetTilemapVideoram( offset, newword ); + c123_SetTilemapVideoram( offset, newword ); } READ16_MEMBER( namcos2_shared_state::c123_tilemap_videoram_r ) { - return mTilemapInfo.videoram[offset]; + return m_c123_TilemapInfo.videoram[offset]; } -static void -SetTilemapControl( int offset, uint16_t newword ) +void namcos2_shared_state::c123_SetTilemapControl(int offset, uint16_t newword) { - mTilemapInfo.control[offset] = newword; + m_c123_TilemapInfo.control[offset] = newword; if( offset<0x20/2 ) { if( offset == 0x02/2 ) @@ -145,54 +118,54 @@ SetTilemapControl( int offset, uint16_t newword ) int i; for( i=0; i<=5; i++ ) { - mTilemapInfo.tmap[i]->set_flip(attrs); + m_c123_TilemapInfo.tmap[i]->set_flip(attrs); } } } newword &= 0x1ff; - if( mTilemapInfo.control[0x02/2]&0x8000 ) + if( m_c123_TilemapInfo.control[0x02/2]&0x8000 ) { newword = -newword; } switch( offset ) { case 0x02/2: - mTilemapInfo.tmap[0]->set_scrollx( 0, newword ); + m_c123_TilemapInfo.tmap[0]->set_scrollx( 0, newword ); break; case 0x06/2: - mTilemapInfo.tmap[0]->set_scrolly( 0, newword ); + m_c123_TilemapInfo.tmap[0]->set_scrolly( 0, newword ); break; case 0x0a/2: - mTilemapInfo.tmap[1]->set_scrollx( 0, newword ); + m_c123_TilemapInfo.tmap[1]->set_scrollx( 0, newword ); break; case 0x0e/2: - mTilemapInfo.tmap[1]->set_scrolly( 0, newword ); + m_c123_TilemapInfo.tmap[1]->set_scrolly( 0, newword ); break; case 0x12/2: - mTilemapInfo.tmap[2]->set_scrollx( 0, newword ); + m_c123_TilemapInfo.tmap[2]->set_scrollx( 0, newword ); break; case 0x16/2: - mTilemapInfo.tmap[2]->set_scrolly( 0, newword ); + m_c123_TilemapInfo.tmap[2]->set_scrolly( 0, newword ); break; case 0x1a/2: - mTilemapInfo.tmap[3]->set_scrollx( 0, newword ); + m_c123_TilemapInfo.tmap[3]->set_scrollx( 0, newword ); break; case 0x1e/2: - mTilemapInfo.tmap[3]->set_scrolly( 0, newword ); + m_c123_TilemapInfo.tmap[3]->set_scrolly( 0, newword ); break; } } /* SetTilemapControl */ WRITE16_MEMBER( namcos2_shared_state::c123_tilemap_control_w ) { - uint16_t newword = mTilemapInfo.control[offset]; + uint16_t newword = m_c123_TilemapInfo.control[offset]; COMBINE_DATA( &newword ); - SetTilemapControl( offset, newword ); + c123_SetTilemapControl( offset, newword ); } READ16_MEMBER( namcos2_shared_state::c123_tilemap_control_r ) { - return mTilemapInfo.control[offset]; + return m_c123_TilemapInfo.control[offset]; } @@ -350,8 +323,7 @@ void namcos2_shared_state::zdrawgfxzoom( /* nop */ } -void -namcos2_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control ) +void namcos2_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int control ) { int offset = (control & 0x000f) * (128*4); int loop; diff --git a/src/mame/machine/namcoic.h b/src/mame/machine/namcoic.h new file mode 100644 index 00000000000..8d69e541eef --- /dev/null +++ b/src/mame/machine/namcoic.h @@ -0,0 +1,102 @@ +// license:BSD-3-Clause +// copyright-holders:Phil Stroffolino +/* namcoic.h + +Custom Chips: Final Lap Assault LuckyWld System21 NA1/2 NB1/2 + C45 Land Generator * * + C65 I/O Controller * * + C68 * * + C70 * + C95 * * + C102 ROZ:Memory Access Control * + C106 OBJ:X-Axis Zoom Control * * + C107 Land Line Buffer * + C116 Screen Waveform Generator * * * * + C121 Yamaha YM2151 Sound Gen * * * + C123 GFX:Tile Mem Decoder * * * * + C134 OBJ:Address Generator * * + C135 OBJ:Line matching * * + C137 Clock Generator IC * * * * * + C138 * + C139 Serial I/F Controller * * * * + C140 24 Channel PCM * * * + C145 GFX:Tile Memory Access * * * * + C146 OBJ:Line Buf Steering * * + C148 CPU Bus Manager * * * * + C149 Mouse/Trackball Decoder * * * * + C156 Pixel Stream Combo * * * * + C160 Control * + C165 * + C169 ROZ(B) * * + C187 * * * + C210 * + C215 * + C218 * + C219 * + C329 CPU? * + C347 GfxObj * + C352 PCM * + C355 Motion Obj(B) * * * + C373 LAND-related * + C382 * + C383 * + C384 GFX(3) * + C385 * + C390 Key Custom * + + +General Support +--------------- +C65 - This is the I/O Microcontroller, handles all input/output devices. 63705 uC, CPU4 in Namco System2. +C137 - Takes System clock and generates all sub-system clocks, doesn't need emulation, not accessed via CPU +C139 - Serial Interface Controller +C148 - Does some Memory Decode, Interrupt Handling, 3 bit PIO port, Bus Controller +C149 - Does decoding of mouse/trackball input streams for the I/O Controller. (Offset Square wave) + + +Tile Fields Static/Scrolled +--------------------------- +Combination of these two devices and associated RAM & TileGFX produces a pixel stream that is fed +into the Pixel stream decoder. + +C145 - Tile Screen Memory Access controller +C123 - Tile Memory decoder Part 1, converts X,Y,Tile into character ROM address index + + +Pixel Stream Decode +------------------- +These two devices take the pixel streams from the tilefield generator and the associated graphics board +and combine them to form an RGB data stream that is fed to the monitor. + +C156 - Pixel stream combiner +Takes tile field & graphics board streams and generates the prioritized pixel, then does the lookup to +go from palettised to 24bit RGB pixel. + +C116 - Screen Waveform Generator +Takes RGB24 pixel stream from C156 and generates the waveform signals for the monitor, also generates +the line interrupt and controls screen blanking,shift, etc. + +Object Control +-------------- +C106 - Generates memory output clocks to generate X-Axis Zoom for Line Buffer Writes +C134 - Object Memory Address Generator. Sequences the sprite memory contents to the hardware. +C135 - Checks is object is displayed on Current output line. +C146 - Steers the Decode Object Pixel data to the correct line buffer A or B + +ROZ +--- +C102 - Controls CPU access to ROZ Memory Area. +*/ + +/***********************************************************************************/ + +#ifndef MAME_MACHINE_NAMCOIC_H +#define MAME_MACHINE_NAMCOIC_H + +#pragma once + + + +/***********************************************************************************/ + +#endif // MAME_MACHINE_NAMCOIC_H diff --git a/src/mame/machine/namcoio.cpp b/src/mame/machine/namcoio.cpp index b4a32041a0e..c94ec7d6dba 100644 --- a/src/mame/machine/namcoio.cpp +++ b/src/mame/machine/namcoio.cpp @@ -115,40 +115,34 @@ TODO: #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" -const device_type NAMCO56XX = device_creator; -const device_type NAMCO58XX = device_creator; -const device_type NAMCO59XX = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_56XX, namco56xx_device, "namco56", "Namco 56xx I/O") +DEFINE_DEVICE_TYPE(NAMCO_58XX, namco58xx_device, "namco58", "Namco 58xx I/O") +DEFINE_DEVICE_TYPE(NAMCO_59XX, namco59xx_device, "namco59", "Namco 59xx I/O") -namcoio_device::namcoio_device(const machine_config &mconfig, device_type type, const char* name, const char *tag, device_t *owner, uint32_t clock, const char *shortname) - : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), - m_in_0_cb(*this), - m_in_1_cb(*this), - m_in_2_cb(*this), - m_in_3_cb(*this), - m_out_0_cb(*this), - m_out_1_cb(*this) +namcoio_device::namcoio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int device_type) + : device_t(mconfig, type, tag, owner, clock) + , m_in_cb{ { *this }, { *this }, { *this }, { *this } } + , m_out_cb{ { *this }, { *this } } + //, m_device_type(device_type) { } namco56xx_device::namco56xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : namcoio_device(mconfig, NAMCO56XX, "Namco 56xx", tag, owner, clock, "56xx") + : namcoio_device(mconfig, NAMCO_56XX, tag, owner, clock, TYPE_NAMCO56XX) { - m_device_type = TYPE_NAMCO56XX; } namco58xx_device::namco58xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : namcoio_device(mconfig, NAMCO58XX, "Namco 58xx", tag, owner, clock, "58xx") + : namcoio_device(mconfig, NAMCO_58XX, tag, owner, clock, TYPE_NAMCO58XX) { - m_device_type = TYPE_NAMCO58XX; } namco59xx_device::namco59xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : namcoio_device(mconfig, NAMCO59XX, "Namco 59xx", tag, owner, clock, "59xx") + : namcoio_device(mconfig, NAMCO_59XX, tag, owner, clock, TYPE_NAMCO59XX) { - m_device_type = TYPE_NAMCO59XX; } //------------------------------------------------- @@ -157,12 +151,10 @@ namco59xx_device::namco59xx_device(const machine_config &mconfig, const char *ta void namcoio_device::device_start() { - m_in_0_cb.resolve_safe(0); - m_in_1_cb.resolve_safe(0); - m_in_2_cb.resolve_safe(0); - m_in_3_cb.resolve_safe(0); - m_out_0_cb.resolve_safe(); - m_out_1_cb.resolve_safe(); + for (devcb_read8 &cb : m_in_cb) + cb.resolve_safe(0); + for (devcb_write8 &cb : m_out_cb) + cb.resolve_safe(); save_item(NAME(m_ram)); save_item(NAME(m_reset)); @@ -203,7 +195,7 @@ void namcoio_device::handle_coins( int swap ) //popmessage("%x %x %x %x %x %x %x %x",IORAM_READ(8),IORAM_READ(9),IORAM_READ(10),IORAM_READ(11),IORAM_READ(12),IORAM_READ(13),IORAM_READ(14),IORAM_READ(15)); - val = ~m_in_0_cb(0 & 0x0f); // pins 38-41 + val = ~m_in_cb[0](0 & 0x0f); // pins 38-41 toggled = val ^ m_lastcoins; m_lastcoins = val; @@ -235,7 +227,7 @@ void namcoio_device::handle_coins( int swap ) credit_add = 1; } - val = ~m_in_3_cb(0 & 0x0f); // pins 30-33 + val = ~m_in_cb[3](0 & 0x0f); // pins 30-33 toggled = val ^ m_lastbuttons; m_lastbuttons = val; @@ -259,10 +251,10 @@ void namcoio_device::handle_coins( int swap ) IORAM_WRITE(1 ^ swap, m_credits % 10); // BCD credits IORAM_WRITE(2 ^ swap, credit_add); // credit increment (coin inputs) IORAM_WRITE(3 ^ swap, credit_sub); // credit decrement (start buttons) - IORAM_WRITE(4, ~m_in_1_cb(0 & 0x0f)); // pins 22-25 + IORAM_WRITE(4, ~m_in_cb[1](0 & 0x0f)); // pins 22-25 button = ((val & 0x05) << 1) | (val & toggled & 0x05); IORAM_WRITE(5, button); // pins 30 & 32 normal and impulse - IORAM_WRITE(6, ~m_in_2_cb(0 & 0x0f)); // pins 26-29 + IORAM_WRITE(6, ~m_in_cb[2](0 & 0x0f)); // pins 26-29 button = (val & 0x0a) | ((val & toggled & 0x0a) >> 1); IORAM_WRITE(7, button); // pins 31 & 33 normal and impulse } @@ -270,7 +262,7 @@ void namcoio_device::handle_coins( int swap ) void namco56xx_device::customio_run() { - LOG(("execute 56XX mode %d\n", IORAM_READ(8))); + LOG("execute 56XX mode %d\n", IORAM_READ(8)); switch (IORAM_READ(8)) { @@ -278,15 +270,15 @@ void namco56xx_device::customio_run() break; case 1: // read switch inputs - IORAM_WRITE(0, ~m_in_0_cb(0 & 0x0f)); // pins 38-41 - IORAM_WRITE(1, ~m_in_1_cb(0 & 0x0f)); // pins 22-25 - IORAM_WRITE(2, ~m_in_2_cb(0 & 0x0f)); // pins 26-29 - IORAM_WRITE(3, ~m_in_3_cb(0 & 0x0f)); // pins 30-33 + IORAM_WRITE(0, ~m_in_cb[0](0 & 0x0f)); // pins 38-41 + IORAM_WRITE(1, ~m_in_cb[1](0 & 0x0f)); // pins 22-25 + IORAM_WRITE(2, ~m_in_cb[2](0 & 0x0f)); // pins 26-29 + IORAM_WRITE(3, ~m_in_cb[3](0 & 0x0f)); // pins 30-33 //popmessage("%x %x %x %x %x %x %x %x",IORAM_READ(8),IORAM_READ(9),IORAM_READ(10),IORAM_READ(11),IORAM_READ(12),IORAM_READ(13),IORAM_READ(14),IORAM_READ(15)); - m_out_0_cb((offs_t)0, IORAM_READ(9)); // output to pins 13-16 (motos, pacnpal, gaplus) - m_out_1_cb((offs_t)0, IORAM_READ(10)); // output to pins 17-20 (gaplus) + m_out_cb[0]((offs_t)0, IORAM_READ(9)); // output to pins 13-16 (motos, pacnpal, gaplus) + m_out_cb[1]((offs_t)0, IORAM_READ(10)); // output to pins 17-20 (gaplus) break; case 2: // initialize coinage settings @@ -329,16 +321,16 @@ void namco56xx_device::customio_run() break; case 9: // read dip switches and inputs - m_out_0_cb((offs_t)0, 0 & 0x0f); // set pin 13 = 0 - IORAM_WRITE(0, ~m_in_0_cb(0 & 0x0f)); // pins 38-41, pin 13 = 0 - IORAM_WRITE(2, ~m_in_1_cb(0 & 0x0f)); // pins 22-25, pin 13 = 0 - IORAM_WRITE(4, ~m_in_2_cb(0 & 0x0f)); // pins 26-29, pin 13 = 0 - IORAM_WRITE(6, ~m_in_3_cb(0 & 0x0f)); // pins 30-33, pin 13 = 0 - m_out_0_cb((offs_t)0, 1 & 0x0f); // set pin 13 = 1 - IORAM_WRITE(1, ~m_in_0_cb(0 & 0x0f)); // pins 38-41, pin 13 = 1 - IORAM_WRITE(3, ~m_in_1_cb(0 & 0x0f)); // pins 22-25, pin 13 = 1 - IORAM_WRITE(5, ~m_in_2_cb(0 & 0x0f)); // pins 26-29, pin 13 = 1 - IORAM_WRITE(7, ~m_in_3_cb(0 & 0x0f)); // pins 30-33, pin 13 = 1 + m_out_cb[0]((offs_t)0, 0 & 0x0f); // set pin 13 = 0 + IORAM_WRITE(0, ~m_in_cb[0](0 & 0x0f)); // pins 38-41, pin 13 = 0 + IORAM_WRITE(2, ~m_in_cb[1](0 & 0x0f)); // pins 22-25, pin 13 = 0 + IORAM_WRITE(4, ~m_in_cb[2](0 & 0x0f)); // pins 26-29, pin 13 = 0 + IORAM_WRITE(6, ~m_in_cb[3](0 & 0x0f)); // pins 30-33, pin 13 = 0 + m_out_cb[0]((offs_t)0, 1 & 0x0f); // set pin 13 = 1 + IORAM_WRITE(1, ~m_in_cb[0](0 & 0x0f)); // pins 38-41, pin 13 = 1 + IORAM_WRITE(3, ~m_in_cb[1](0 & 0x0f)); // pins 22-25, pin 13 = 1 + IORAM_WRITE(5, ~m_in_cb[2](0 & 0x0f)); // pins 26-29, pin 13 = 1 + IORAM_WRITE(7, ~m_in_cb[3](0 & 0x0f)); // pins 30-33, pin 13 = 1 break; default: @@ -350,7 +342,7 @@ void namco56xx_device::customio_run() void namco59xx_device::customio_run() { - LOG(("execute 59XX mode %d\n", IORAM_READ(8))); + LOG("execute 59XX mode %d\n", IORAM_READ(8)); switch (IORAM_READ(8)) { @@ -358,10 +350,10 @@ void namco59xx_device::customio_run() break; case 3: // pacnpal chip #1: read dip switches and inputs - IORAM_WRITE(4, ~m_in_0_cb(0 & 0x0f)); // pins 38-41, pin 13 = 0 ? - IORAM_WRITE(5, ~m_in_2_cb(0 & 0x0f)); // pins 26-29 ? - IORAM_WRITE(6, ~m_in_1_cb(0 & 0x0f)); // pins 22-25 ? - IORAM_WRITE(7, ~m_in_3_cb(0 & 0x0f)); // pins 30-33 + IORAM_WRITE(4, ~m_in_cb[0](0 & 0x0f)); // pins 38-41, pin 13 = 0 ? + IORAM_WRITE(5, ~m_in_cb[2](0 & 0x0f)); // pins 26-29 ? + IORAM_WRITE(6, ~m_in_cb[1](0 & 0x0f)); // pins 22-25 ? + IORAM_WRITE(7, ~m_in_cb[3](0 & 0x0f)); // pins 30-33 break; default: @@ -373,7 +365,7 @@ void namco59xx_device::customio_run() void namco58xx_device::customio_run() { - LOG(("execute 58XX mode %d\n", IORAM_READ(8))); + LOG("execute 58XX mode %d\n", IORAM_READ(8)); switch (IORAM_READ(8)) { @@ -381,15 +373,15 @@ void namco58xx_device::customio_run() break; case 1: // read switch inputs - IORAM_WRITE(4, ~m_in_0_cb(0 & 0x0f)); // pins 38-41 - IORAM_WRITE(5, ~m_in_1_cb(0 & 0x0f)); // pins 22-25 - IORAM_WRITE(6, ~m_in_2_cb(0 & 0x0f)); // pins 26-29 - IORAM_WRITE(7, ~m_in_3_cb(0 & 0x0f)); // pins 30-33 + IORAM_WRITE(4, ~m_in_cb[0](0 & 0x0f)); // pins 38-41 + IORAM_WRITE(5, ~m_in_cb[1](0 & 0x0f)); // pins 22-25 + IORAM_WRITE(6, ~m_in_cb[2](0 & 0x0f)); // pins 26-29 + IORAM_WRITE(7, ~m_in_cb[3](0 & 0x0f)); // pins 30-33 //popmessage("%x %x %x %x %x %x %x %x",IORAM_READ(8),IORAM_READ(9),IORAM_READ(10),IORAM_READ(11),IORAM_READ(12),IORAM_READ(13),IORAM_READ(14),IORAM_READ(15)); - m_out_0_cb((offs_t)0, IORAM_READ(9)); // output to pins 13-16 (toypop) - m_out_1_cb((offs_t)0, IORAM_READ(10)); // output to pins 17-20 (toypop) + m_out_cb[0]((offs_t)0, IORAM_READ(9)); // output to pins 13-16 (toypop) + m_out_cb[1]((offs_t)0, IORAM_READ(10)); // output to pins 17-20 (toypop) break; case 2: // initialize coinage settings @@ -407,16 +399,16 @@ void namco58xx_device::customio_run() break; case 4: // read dip switches and inputs - m_out_0_cb((offs_t)0, 0 & 0x0f); // set pin 13 = 0 - IORAM_WRITE(0, ~m_in_0_cb(0 & 0x0f)); // pins 38-41, pin 13 = 0 - IORAM_WRITE(2, ~m_in_1_cb(0 & 0x0f)); // pins 22-25, pin 13 = 0 - IORAM_WRITE(4, ~m_in_2_cb(0 & 0x0f)); // pins 26-29, pin 13 = 0 - IORAM_WRITE(6, ~m_in_3_cb(0 & 0x0f)); // pins 30-33, pin 13 = 0 - m_out_0_cb((offs_t)0, 1 & 0x0f); // set pin 13 = 1 - IORAM_WRITE(1, ~m_in_0_cb(0 & 0x0f)); // pins 38-41, pin 13 = 1 - IORAM_WRITE(3, ~m_in_1_cb(0 & 0x0f)); // pins 22-25, pin 13 = 1 - IORAM_WRITE(5, ~m_in_2_cb(0 & 0x0f)); // pins 26-29, pin 13 = 1 - IORAM_WRITE(7, ~m_in_3_cb(0 & 0x0f)); // pins 30-33, pin 13 = 1 + m_out_cb[0]((offs_t)0, 0 & 0x0f); // set pin 13 = 0 + IORAM_WRITE(0, ~m_in_cb[0](0 & 0x0f)); // pins 38-41, pin 13 = 0 + IORAM_WRITE(2, ~m_in_cb[1](0 & 0x0f)); // pins 22-25, pin 13 = 0 + IORAM_WRITE(4, ~m_in_cb[2](0 & 0x0f)); // pins 26-29, pin 13 = 0 + IORAM_WRITE(6, ~m_in_cb[3](0 & 0x0f)); // pins 30-33, pin 13 = 0 + m_out_cb[0]((offs_t)0, 1 & 0x0f); // set pin 13 = 1 + IORAM_WRITE(1, ~m_in_cb[0](0 & 0x0f)); // pins 38-41, pin 13 = 1 + IORAM_WRITE(3, ~m_in_cb[1](0 & 0x0f)); // pins 22-25, pin 13 = 1 + IORAM_WRITE(5, ~m_in_cb[2](0 & 0x0f)); // pins 26-29, pin 13 = 1 + IORAM_WRITE(7, ~m_in_cb[3](0 & 0x0f)); // pins 30-33, pin 13 = 1 break; case 5: // bootup check @@ -483,7 +475,7 @@ READ8_MEMBER( namcoio_device::read ) // RAM is 4-bit wide; Pac & Pal requires the | 0xf0 otherwise Easter egg doesn't work offset &= 0x3f; -// LOG(("%04x: I/O read: mode %d, offset %d = %02x\n", space.device().safe_pc(), offset / 16, namcoio_ram[(offset & 0x30) + 8], offset & 0x0f, namcoio_ram[offset]&0x0f)); +// LOG("%04x: I/O read: mode %d, offset %d = %02x\n", space.device().safe_pc(), offset / 16, namcoio_ram[(offset & 0x30) + 8], offset & 0x0f, namcoio_ram[offset]&0x0f); return 0xf0 | m_ram[offset]; } @@ -493,7 +485,7 @@ WRITE8_MEMBER( namcoio_device::write ) offset &= 0x3f; data &= 0x0f; // RAM is 4-bit wide -// LOG(("%04x: I/O write %d: offset %d = %02x\n", space.device().safe_pc(), offset / 16, offset & 0x0f, data)); +// LOG("%04x: I/O write %d: offset %d = %02x\n", space.device().safe_pc(), offset / 16, offset & 0x0f, data); m_ram[offset] = data; } diff --git a/src/mame/machine/namcoio.h b/src/mame/machine/namcoio.h index 40b8ac15b76..2dece40ec90 100644 --- a/src/mame/machine/namcoio.h +++ b/src/mame/machine/namcoio.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef __NAMCOIO_H__ -#define __NAMCOIO_H__ +#ifndef MAME_MACHINE_NAMCOIO_H +#define MAME_MACHINE_NAMCOIO_H /*************************************************************************** @@ -11,14 +11,8 @@ class namcoio_device : public device_t { public: - namcoio_device(const machine_config &mconfig, device_type type, const char* name, const char *tag, device_t *owner, uint32_t clock, const char *shortname); - - template static devcb_base &set_in_0_callback(device_t &device, _Object object) { return downcast(device).m_in_0_cb.set_callback(object); } - template static devcb_base &set_in_1_callback(device_t &device, _Object object) { return downcast(device).m_in_1_cb.set_callback(object); } - template static devcb_base &set_in_2_callback(device_t &device, _Object object) { return downcast(device).m_in_2_cb.set_callback(object); } - template static devcb_base &set_in_3_callback(device_t &device, _Object object) { return downcast(device).m_in_3_cb.set_callback(object); } - template static devcb_base &set_out_0_callback(device_t &device, _Object object) { return downcast(device).m_out_0_cb.set_callback(object); } - template static devcb_base &set_out_1_callback(device_t &device, _Object object) { return downcast(device).m_out_1_cb.set_callback(object); } + template static devcb_base &set_in_callback(device_t &device, Object &&cb) { return downcast(device).m_in_cb[N].set_callback(std::forward(cb)); } + template static devcb_base &set_out_callback(device_t &device, Object &&cb) { return downcast(device).m_out_cb[N].set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); @@ -27,13 +21,15 @@ public: WRITE_LINE_MEMBER( set_reset_line ); READ_LINE_MEMBER( read_reset_line ); + virtual void customio_run() = 0; + protected: + namcoio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int device_type); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; - int m_device_type; - enum { TYPE_NAMCO56XX, TYPE_NAMCO58XX, @@ -43,12 +39,8 @@ protected: // internal state uint8_t m_ram[16]; - devcb_read8 m_in_0_cb; - devcb_read8 m_in_1_cb; - devcb_read8 m_in_2_cb; - devcb_read8 m_in_3_cb; - devcb_write8 m_out_0_cb; - devcb_write8 m_out_1_cb; + devcb_read8 m_in_cb[4]; + devcb_write8 m_out_cb[2]; int m_reset; int32_t m_lastcoins, m_lastbuttons; @@ -60,10 +52,8 @@ protected: void handle_coins( int swap ); - virtual void customio_run() {} - private: - + //int m_device_type; }; class namco56xx_device : public namcoio_device @@ -90,68 +80,68 @@ public: virtual void customio_run() override; }; -extern const device_type NAMCO56XX; -extern const device_type NAMCO58XX; -extern const device_type NAMCO59XX; +DECLARE_DEVICE_TYPE(NAMCO_56XX, namco56xx_device) +DECLARE_DEVICE_TYPE(NAMCO_58XX, namco58xx_device) +DECLARE_DEVICE_TYPE(NAMCO_59XX, namco59xx_device) /*************************************************************************** DEVICE CONFIGURATION MACROS ***************************************************************************/ #define MCFG_NAMCO56XX_IN_0_CB(_devcb) \ - devcb = &namco56xx_device::set_in_0_callback(*device, DEVCB_##_devcb); + devcb = &namco56xx_device::set_in_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO56XX_IN_1_CB(_devcb) \ - devcb = &namco56xx_device::set_in_1_callback(*device, DEVCB_##_devcb); + devcb = &namco56xx_device::set_in_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO56XX_IN_2_CB(_devcb) \ - devcb = &namco56xx_device::set_in_2_callback(*device, DEVCB_##_devcb); + devcb = &namco56xx_device::set_in_callback<2>(*device, DEVCB_##_devcb); #define MCFG_NAMCO56XX_IN_3_CB(_devcb) \ - devcb = &namco56xx_device::set_in_3_callback(*device, DEVCB_##_devcb); + devcb = &namco56xx_device::set_in_callback<3>(*device, DEVCB_##_devcb); #define MCFG_NAMCO56XX_OUT_0_CB(_devcb) \ - devcb = &namco56xx_device::set_out_0_callback(*device, DEVCB_##_devcb); + devcb = &namco56xx_device::set_out_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO56XX_OUT_1_CB(_devcb) \ - devcb = &namco56xx_device::set_out_1_callback(*device, DEVCB_##_devcb); + devcb = &namco56xx_device::set_out_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO58XX_IN_0_CB(_devcb) \ - devcb = &namco58xx_device::set_in_0_callback(*device, DEVCB_##_devcb); + devcb = &namco58xx_device::set_in_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO58XX_IN_1_CB(_devcb) \ - devcb = &namco58xx_device::set_in_1_callback(*device, DEVCB_##_devcb); + devcb = &namco58xx_device::set_in_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO58XX_IN_2_CB(_devcb) \ - devcb = &namco58xx_device::set_in_2_callback(*device, DEVCB_##_devcb); + devcb = &namco58xx_device::set_in_callback<2>(*device, DEVCB_##_devcb); #define MCFG_NAMCO58XX_IN_3_CB(_devcb) \ - devcb = &namco58xx_device::set_in_3_callback(*device, DEVCB_##_devcb); + devcb = &namco58xx_device::set_in_callback<3>(*device, DEVCB_##_devcb); #define MCFG_NAMCO58XX_OUT_0_CB(_devcb) \ - devcb = &namco58xx_device::set_out_0_callback(*device, DEVCB_##_devcb); + devcb = &namco58xx_device::set_out_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO58XX_OUT_1_CB(_devcb) \ - devcb = &namco58xx_device::set_out_1_callback(*device, DEVCB_##_devcb); + devcb = &namco58xx_device::set_out_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO59XX_IN_0_CB(_devcb) \ - devcb = &namco59xx_device::set_in_0_callback(*device, DEVCB_##_devcb); + devcb = &namco59xx_device::set_in_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO59XX_IN_1_CB(_devcb) \ - devcb = &namco59xx_device::set_in_1_callback(*device, DEVCB_##_devcb); + devcb = &namco59xx_device::set_in_callback<1>(*device, DEVCB_##_devcb); #define MCFG_NAMCO59XX_IN_2_CB(_devcb) \ - devcb = &namco59xx_device::set_in_2_callback(*device, DEVCB_##_devcb); + devcb = &namco59xx_device::set_in_callback<2>(*device, DEVCB_##_devcb); #define MCFG_NAMCO59XX_IN_3_CB(_devcb) \ - devcb = &namco59xx_device::set_in_3_callback(*device, DEVCB_##_devcb); + devcb = &namco59xx_device::set_in_callback<3>(*device, DEVCB_##_devcb); #define MCFG_NAMCO59XX_OUT_0_CB(_devcb) \ - devcb = &namco59xx_device::set_out_0_callback(*device, DEVCB_##_devcb); + devcb = &namco59xx_device::set_out_callback<0>(*device, DEVCB_##_devcb); #define MCFG_NAMCO59XX_OUT_1_CB(_devcb) \ - devcb = &namco59xx_device::set_out_1_callback(*device, DEVCB_##_devcb); + devcb = &namco59xx_device::set_out_callback<1>(*device, DEVCB_##_devcb); -#endif /* __NAMCOIO_H__ */ +#endif // MAME_MACHINE_NAMCOIO_H diff --git a/src/mame/machine/namcoio_gearbox.cpp b/src/mame/machine/namcoio_gearbox.cpp index 6e4d8096a7c..94855c8ab42 100644 --- a/src/mame/machine/namcoio_gearbox.cpp +++ b/src/mame/machine/namcoio_gearbox.cpp @@ -33,7 +33,7 @@ //************************************************************************** // device type definition -const device_type NAMCOIO_GEARBOX = device_creator; +DEFINE_DEVICE_TYPE(NAMCOIO_GEARBOX, namcoio_gearbox_device, "namcoio_gearbox", "Namco I/O Gearbox") //************************************************************************** @@ -45,7 +45,7 @@ const device_type NAMCOIO_GEARBOX = device_creator; //------------------------------------------------- namcoio_gearbox_device::namcoio_gearbox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCOIO_GEARBOX, "Namco I/O Gearbox", tag, owner, clock, "namcoio_gearbox", __FILE__) + : device_t(mconfig, NAMCOIO_GEARBOX, tag, owner, clock) { } diff --git a/src/mame/machine/namcoio_gearbox.h b/src/mame/machine/namcoio_gearbox.h index 5d80d09d8e4..d276a08c7a0 100644 --- a/src/mame/machine/namcoio_gearbox.h +++ b/src/mame/machine/namcoio_gearbox.h @@ -5,11 +5,11 @@ Namco 6-speed Gearbox device ***************************************************************************/ +#ifndef MAME_MACHINE_NAMCOIO_GEARBOX_H +#define MAME_MACHINE_NAMCOIO_GEARBOX_H #pragma once -#ifndef __NAMCOIO_GEARBOXDEV_H__ -#define __NAMCOIO_GEARBOXDEV_H__ @@ -47,7 +47,7 @@ protected: // device type definition -extern const device_type NAMCOIO_GEARBOX; +DECLARE_DEVICE_TYPE(NAMCOIO_GEARBOX, namcoio_gearbox_device) @@ -57,4 +57,4 @@ extern const device_type NAMCOIO_GEARBOX; -#endif +#endif // MAME_MACHINE_NAMCOIO_GEARBOX_H diff --git a/src/mame/machine/namcomcu.cpp b/src/mame/machine/namcomcu.cpp index b49e53a1b7b..eb23789f6cb 100644 --- a/src/mame/machine/namcomcu.cpp +++ b/src/mame/machine/namcomcu.cpp @@ -16,11 +16,11 @@ C76 System 11 #include "namcomcu.h" -const device_type NAMCO_C69 = device_creator; -const device_type NAMCO_C70 = device_creator; -const device_type NAMCO_C74 = device_creator; -const device_type NAMCO_C75 = device_creator; -const device_type NAMCO_C76 = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_C69, namco_c69_device, "namcoc69", "Namco C69 (M37702)") +DEFINE_DEVICE_TYPE(NAMCO_C70, namco_c70_device, "namcoc70", "Namco C70 (M37702)") +DEFINE_DEVICE_TYPE(NAMCO_C74, namco_c74_device, "namcoc74", "Namco C74 (M37702)") +DEFINE_DEVICE_TYPE(NAMCO_C75, namco_c75_device, "namcoc75", "Namco C75 (M37702)") +DEFINE_DEVICE_TYPE(NAMCO_C76, namco_c76_device, "namcoc76", "Namco C76 (M37702)") ROM_START( c69 ) @@ -54,27 +54,27 @@ ROM_END namco_c69_device::namco_c69_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : m37702m2_device(mconfig, NAMCO_C69, "C69 (M37702)", tag, owner, clock, "namcoc69", __FILE__) + : m37702m2_device(mconfig, NAMCO_C69, tag, owner, clock) { } namco_c70_device::namco_c70_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : m37702m2_device(mconfig, NAMCO_C70, "C70 (M37702)", tag, owner, clock, "namcoc70", __FILE__) + : m37702m2_device(mconfig, NAMCO_C70, tag, owner, clock) { } namco_c74_device::namco_c74_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : m37702m2_device(mconfig, NAMCO_C74, "C74 (M37702)", tag, owner, clock, "namcoc74", __FILE__) + : m37702m2_device(mconfig, NAMCO_C74, tag, owner, clock) { } namco_c75_device::namco_c75_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : m37702m2_device(mconfig, NAMCO_C75, "C75 (M37702)", tag, owner, clock, "namcoc75", __FILE__) + : m37702m2_device(mconfig, NAMCO_C75, tag, owner, clock) { } namco_c76_device::namco_c76_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : m37702m2_device(mconfig, NAMCO_C76, "C76 (M37702)", tag, owner, clock, "namcoc76", __FILE__) + : m37702m2_device(mconfig, NAMCO_C76, tag, owner, clock) { } diff --git a/src/mame/machine/namcomcu.h b/src/mame/machine/namcomcu.h index 31ae1e5dc28..c7332e2faeb 100644 --- a/src/mame/machine/namcomcu.h +++ b/src/mame/machine/namcomcu.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Alex W. Jackson -#pragma once +#ifndef MAME_MACHINE_NAMCOMCU_H +#define MAME_MACHINE_NAMCOMCU_H -#ifndef __NAMCOMCU_H__ -#define __NAMCOMCU_H__ +#pragma once #include "cpu/m37710/m37710.h" @@ -53,11 +53,11 @@ protected: }; -extern const device_type NAMCO_C69; -extern const device_type NAMCO_C70; -extern const device_type NAMCO_C74; -extern const device_type NAMCO_C75; -extern const device_type NAMCO_C76; +DECLARE_DEVICE_TYPE(NAMCO_C69, namco_c69_device) +DECLARE_DEVICE_TYPE(NAMCO_C70, namco_c70_device) +DECLARE_DEVICE_TYPE(NAMCO_C74, namco_c74_device) +DECLARE_DEVICE_TYPE(NAMCO_C75, namco_c75_device) +DECLARE_DEVICE_TYPE(NAMCO_C76, namco_c76_device) -#endif +#endif // MAME_MACHINE_NAMCOMCU_H diff --git a/src/mame/machine/naomibd.cpp b/src/mame/machine/naomibd.cpp index 559ec53c9f7..90154b7de73 100644 --- a/src/mame/machine/naomibd.cpp +++ b/src/mame/machine/naomibd.cpp @@ -73,8 +73,8 @@ DEVICE_ADDRESS_MAP_START(submap, 16, naomi_board) AM_RANGE(0x00, 0xff) AM_READ(default_r) ADDRESS_MAP_END -naomi_board::naomi_board(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : naomi_g1_device(mconfig, type, name, tag, owner, clock, shortname, source) +naomi_board::naomi_board(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : naomi_g1_device(mconfig, type, tag, owner, clock) { eeprom_tag = nullptr; } diff --git a/src/mame/machine/naomibd.h b/src/mame/machine/naomibd.h index 6b087c66798..94e767bb4b8 100644 --- a/src/mame/machine/naomibd.h +++ b/src/mame/machine/naomibd.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef _NAOMIBD_H_ -#define _NAOMIBD_H_ +#ifndef MAME_MACHINE_NAOMIBD_H +#define MAME_MACHINE_NAOMIBD_H + +#pragma once #include "machine/naomig1.h" #include "machine/x76f100.h" @@ -13,8 +15,6 @@ class naomi_board : public naomi_g1_device { public: - naomi_board(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - static void static_set_eeprom_tag(device_t &device, const char *_eeprom_tag); // Can be patched in the underlying class @@ -34,6 +34,8 @@ public: DECLARE_READ16_MEMBER( default_r); protected: + naomi_board(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual void device_reset() override; @@ -58,4 +60,4 @@ private: x76f100_device *eeprom; }; -#endif +#endif // MAME_MACHINE_NAOMIBD_H diff --git a/src/mame/machine/naomig1.cpp b/src/mame/machine/naomig1.cpp index c96a1afc6fc..1b0d197b533 100644 --- a/src/mame/machine/naomig1.cpp +++ b/src/mame/machine/naomig1.cpp @@ -25,9 +25,9 @@ DEVICE_ADDRESS_MAP_START(amap, 32, naomi_g1_device) AM_RANGE(0xf8, 0xfb) AM_READ(sb_gdlend_r) ADDRESS_MAP_END -naomi_g1_device::naomi_g1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - irq_cb(*this) +naomi_g1_device::naomi_g1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , irq_cb(*this) { } diff --git a/src/mame/machine/naomig1.h b/src/mame/machine/naomig1.h index c833bb114d3..0a4b6d066cc 100644 --- a/src/mame/machine/naomig1.h +++ b/src/mame/machine/naomig1.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef _NAOMIG1_H_ -#define _NAOMIG1_H_ +#ifndef MAME_MACHINE_NAOMIG1_H +#define MAME_MACHINE_NAOMIG1_H + +#pragma once #include "cpu/sh4/sh4.h" @@ -18,9 +20,8 @@ public: typedef delegate dma_cb; - naomi_g1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - template void set_irq_cb(_cb cb) { irq_cb.set_callback(cb); } - void set_dma_cb(dma_cb _cb) { _dma_cb = _cb; } + template void set_irq_cb(Object &&cb) { irq_cb.set_callback(std::forward(cb)); } + void set_dma_cb(dma_cb cb) { _dma_cb = cb; } DECLARE_ADDRESS_MAP(amap, 32); @@ -53,6 +54,8 @@ public: protected: enum { G1_TIMER_ID = 0x42 }; + naomi_g1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; @@ -70,4 +73,4 @@ private: void dma(void *dma_ptr, uint32_t main_adr, uint32_t size, bool to_mainram); }; -#endif +#endif // MAME_MACHINE_NAOMIG1_H diff --git a/src/mame/machine/naomigd.cpp b/src/mame/machine/naomigd.cpp index 3f3508d54c9..2327e4def75 100644 --- a/src/mame/machine/naomigd.cpp +++ b/src/mame/machine/naomigd.cpp @@ -98,7 +98,7 @@ SH4 IO port A bits */ -const device_type NAOMI_GDROM_BOARD = device_creator; +DEFINE_DEVICE_TYPE(NAOMI_GDROM_BOARD, naomi_gdrom_board, "segadimm", "Sega DIMM Board") const uint32_t naomi_gdrom_board::DES_LEFTSWAP[] = { 0x00000000, 0x00000001, 0x00000100, 0x00000101, 0x00010000, 0x00010001, 0x00010100, 0x00010101, @@ -401,7 +401,7 @@ void naomi_gdrom_board::write_from_qword(uint8_t *region, uint64_t qword) } naomi_gdrom_board::naomi_gdrom_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : naomi_board(mconfig, NAOMI_GDROM_BOARD, "Sega DIMM Board", tag, owner, clock, "segadimm", __FILE__) + : naomi_board(mconfig, NAOMI_GDROM_BOARD, tag, owner, clock) { image_tag = nullptr; pic_tag = nullptr; @@ -639,14 +639,10 @@ ROM_START( dimm ) // unused and/or unknown security PICs // 253-5508-0352E 317-0352-EXP BFC.BIN unknown, presumable some mahjong game (MJ1 ?) ROM_LOAD("317-0352-exp.pic", 0x00, 0x4000, CRC(b216fbfc) SHA1(da2341003b35d1600d63fbe34d13ff3b42bdc939) ) - // 253-5508-0364 317-0364-COM BGK.BIN unknown, have been seen with DIMM board labeled "DIMM BD NAO DGS SATL" - ROM_LOAD("317-0364-com.pic", 0x00, 0x4000, CRC(82975008) SHA1(6732842d4af630d6c6d96bb11ba98caed1cb6b24) ) - // 253-5508-0422J 317-0422-JPN BHE.BIN Quest of D undumped version + // 253-5508-0422J 317-0422-JPN BHE.BIN Quest of D undumped version, high likely 2.0x "Gofu no Keisyousya" ROM_LOAD("317-0422-jpn.pic", 0x00, 0x4000, CRC(54197fbf) SHA1(a18b5b7aec0498c7a62cacf9f2298ddefb7482c9) ) // 253-5508-0456J 317-0456-JPN BEG.BIN WCCF 2005-2006 undumped Japan version ROM_LOAD("317-0456-jpn.pic", 0x00, 0x4000, CRC(cf3bd834) SHA1(6236cdb780260d34c02806478a39c9f3432a45e8) ) - // 253-5508-0506J 317-0506-JPN BPK.BIN unknown, something Chihiro ? - ROM_LOAD("317-0506-jpn.pic", 0x00, 0x4000, CRC(e105c6c8) SHA1(63e17b330a2f7d30bf0c263b163469f7f8e6a495) ) // main firmwares ROM_LOAD16_WORD_SWAP( "fpr-23489c.ic14", 0x000000, 0x200000, CRC(bc38bea1) SHA1(b36fcc6902f397d9749e9d02de1bbb7a5e29d468) ) diff --git a/src/mame/machine/naomigd.h b/src/mame/machine/naomigd.h index 33d2edd3adb..fb71f919195 100644 --- a/src/mame/machine/naomigd.h +++ b/src/mame/machine/naomigd.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef _NAOMIGD_H_ -#define _NAOMIGD_H_ +#ifndef MAME_MACHINE_NAOMIGD_H +#define MAME_MACHINE_NAOMIGD_H + +#pragma once #include "machine/naomibd.h" @@ -63,5 +65,6 @@ private: }; extern const device_type NAOMI_GDROM_BOARD; +DECLARE_DEVICE_TYPE(NAOMI_GDROM_BOARD, naomi_gdrom_board) -#endif +#endif // MAME_MACHINE_NAOMIGD_H diff --git a/src/mame/machine/naomim1.cpp b/src/mame/machine/naomim1.cpp index 84412849767..760f6e8e020 100644 --- a/src/mame/machine/naomim1.cpp +++ b/src/mame/machine/naomim1.cpp @@ -4,7 +4,7 @@ #include "emu.h" #include "naomim1.h" -const device_type NAOMI_M1_BOARD = device_creator; +DEFINE_DEVICE_TYPE(NAOMI_M1_BOARD, naomi_m1_board, "naomi_m1_board", "Sega NAOMI M1 Board") DEVICE_ADDRESS_MAP_START(submap, 16, naomi_m1_board) AM_RANGE(0x0a, 0x0b) AM_READ(actel_id_r) @@ -13,8 +13,8 @@ DEVICE_ADDRESS_MAP_START(submap, 16, naomi_m1_board) ADDRESS_MAP_END naomi_m1_board::naomi_m1_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : naomi_board(mconfig, NAOMI_M1_BOARD, "Sega NAOMI M1 Board", tag, owner, clock, "naomi_m1_board", __FILE__), - m_region(*this, DEVICE_SELF) + : naomi_board(mconfig, NAOMI_M1_BOARD, tag, owner, clock) + , m_region(*this, DEVICE_SELF) { } diff --git a/src/mame/machine/naomim1.h b/src/mame/machine/naomim1.h index 9ce67ce3565..341e2b40372 100644 --- a/src/mame/machine/naomim1.h +++ b/src/mame/machine/naomim1.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef _NAOMIM1_H_ -#define _NAOMIM1_H_ +#ifndef MAME_MACHINE_NAOMIM1_H +#define MAME_MACHINE_NAOMIM1_H + +#pragma once #include "naomibd.h" @@ -51,6 +53,6 @@ private: void wb(uint8_t byte); }; -extern const device_type NAOMI_M1_BOARD; +DECLARE_DEVICE_TYPE(NAOMI_M1_BOARD, naomi_m1_board) -#endif +#endif // MAME_MACHINE_NAOMIM1_H diff --git a/src/mame/machine/naomim2.cpp b/src/mame/machine/naomim2.cpp index a2d089e6e9b..e6d1e1198f2 100644 --- a/src/mame/machine/naomim2.cpp +++ b/src/mame/machine/naomim2.cpp @@ -109,12 +109,12 @@ note: if ROM is not mounted its area readed as 0xFF ********************************************************************************************************/ -const device_type NAOMI_M2_BOARD = device_creator; +DEFINE_DEVICE_TYPE(NAOMI_M2_BOARD, naomi_m2_board, "naomi_m2_board", "Sega NAOMI M2 Board") naomi_m2_board::naomi_m2_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : naomi_board(mconfig, NAOMI_M2_BOARD, "Sega NAOMI M2 Board", tag, owner, clock, "naomi_m2_board", __FILE__), - m_cryptdevice(*this, "segam2crypt"), - m_region(*this, DEVICE_SELF) + : naomi_board(mconfig, NAOMI_M2_BOARD, tag, owner, clock) + , m_cryptdevice(*this, "segam2crypt") + , m_region(*this, DEVICE_SELF) { } diff --git a/src/mame/machine/naomim2.h b/src/mame/machine/naomim2.h index c51de4e90a6..3f916ad947e 100644 --- a/src/mame/machine/naomim2.h +++ b/src/mame/machine/naomim2.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef _NAOMIM2_H_ -#define _NAOMIM2_H_ +#ifndef MAME_MACHINE_NAOMIM2_H +#define MAME_MACHINE_NAOMIM2_H + +#pragma once #include "naomibd.h" #include "315-5881_crypt.h" @@ -35,6 +37,6 @@ private: required_memory_region m_region; }; -extern const device_type NAOMI_M2_BOARD; +DECLARE_DEVICE_TYPE(NAOMI_M2_BOARD, naomi_m2_board) -#endif +#endif // MAME_MACHINE_NAOMIM2_H diff --git a/src/mame/machine/naomim4.cpp b/src/mame/machine/naomim4.cpp index 12077a6f579..bbf567b8b1b 100644 --- a/src/mame/machine/naomim4.cpp +++ b/src/mame/machine/naomim4.cpp @@ -21,7 +21,7 @@ // the algorithm is a 32-bits key stored in the PIC16C621A. The hardware auto-reset the feed value // to the cart-based IV every 16 blocks (32 bytes); that reset is not address-based, but index-based. -const device_type NAOMI_M4_BOARD = device_creator; +DEFINE_DEVICE_TYPE(NAOMI_M4_BOARD, naomi_m4_board, "naomi_m4_board", "Sega NAOMI M4 Board") const uint8_t naomi_m4_board::k_sboxes[4][16] = { {9,8,2,11,1,14,5,15,12,6,0,3,7,13,10,4}, @@ -47,7 +47,7 @@ DEVICE_ADDRESS_MAP_START(submap, 16, naomi_m4_board) ADDRESS_MAP_END naomi_m4_board::naomi_m4_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : naomi_board(mconfig, NAOMI_M4_BOARD, "Sega NAOMI M4 Board", tag, owner, clock, "naomi_m4_board", __FILE__) + : naomi_board(mconfig, NAOMI_M4_BOARD, tag, owner, clock) , m_region(*this, DEVICE_SELF) , m_key_data(*this, finder_base::DUMMY_TAG) { diff --git a/src/mame/machine/naomim4.h b/src/mame/machine/naomim4.h index 7fb81fa333d..4fb778fd769 100644 --- a/src/mame/machine/naomim4.h +++ b/src/mame/machine/naomim4.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert,Andreas Naive -#ifndef _NAOMIM4_H_ -#define _NAOMIM4_H_ +#ifndef MAME_MACHINE_NAOMIM4_H +#define MAME_MACHINE_NAOMIM4_H #include "naomibd.h" @@ -52,6 +52,6 @@ private: uint16_t decrypt_one_round(uint16_t word, uint16_t subkey); }; -extern const device_type NAOMI_M4_BOARD; +DECLARE_DEVICE_TYPE(NAOMI_M4_BOARD, naomi_m4_board) -#endif +#endif // MAME_MACHINE_NAOMIM4_H diff --git a/src/mame/machine/naomirom.cpp b/src/mame/machine/naomirom.cpp index 62f53eb4eb7..ddb8bcc4c7f 100644 --- a/src/mame/machine/naomirom.cpp +++ b/src/mame/machine/naomirom.cpp @@ -3,11 +3,11 @@ #include "emu.h" #include "naomirom.h" -const device_type NAOMI_ROM_BOARD = device_creator; +DEFINE_DEVICE_TYPE(NAOMI_ROM_BOARD, naomi_rom_board, "naomi_rom_board", "Sega NAOMI ROM Board") naomi_rom_board::naomi_rom_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : naomi_board(mconfig, NAOMI_ROM_BOARD, "Sega NAOMI ROM Board", tag, owner, clock, "naomi_rom_board", __FILE__), - m_region(*this, DEVICE_SELF) + : naomi_board(mconfig, NAOMI_ROM_BOARD, tag, owner, clock) + , m_region(*this, DEVICE_SELF) { } diff --git a/src/mame/machine/naomirom.h b/src/mame/machine/naomirom.h index a1261b35717..fc23b604058 100644 --- a/src/mame/machine/naomirom.h +++ b/src/mame/machine/naomirom.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef _NAOMIROM_H_ -#define _NAOMIROM_H_ +#ifndef MAME_MACHINE_NAOMIROM_H +#define MAME_MACHINE_NAOMIROM_H #include "naomibd.h" @@ -26,6 +26,6 @@ private: required_memory_region m_region; }; -extern const device_type NAOMI_ROM_BOARD; +DECLARE_DEVICE_TYPE(NAOMI_ROM_BOARD, naomi_rom_board) -#endif +#endif // MAME_MACHINE_NAOMIROM_H diff --git a/src/mame/machine/nb1413m3.cpp b/src/mame/machine/nb1413m3.cpp index 7ce1d1f7010..0092777d760 100644 --- a/src/mame/machine/nb1413m3.cpp +++ b/src/mame/machine/nb1413m3.cpp @@ -13,18 +13,19 @@ Memo: ******************************************************************************/ #include "emu.h" -#include "cpu/z80/z80.h" #include "includes/nb1413m3.h" +#include "cpu/z80/z80.h" + #define NB1413M3_DEBUG 0 #define NB1413M3_TIMER_BASE 20000000 -const device_type NB1413M3 = device_creator; +DEFINE_DEVICE_TYPE(NB1413M3, nb1413m3_device, "nb1413m3", "NB1413 Mahjong Custom") nb1413m3_device::nb1413m3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NB1413M3, "NB1413M3 Mahjong Custom", tag, owner, clock, "nb1413m3", __FILE__), + : device_t(mconfig, NB1413M3, tag, owner, clock), m_sndromrgntag("voice"), m_sndrombank1(0), m_sndrombank2(0), diff --git a/src/mame/machine/nb1414m4.cpp b/src/mame/machine/nb1414m4.cpp index c7e4cfe98b2..ce48c057bba 100644 --- a/src/mame/machine/nb1414m4.cpp +++ b/src/mame/machine/nb1414m4.cpp @@ -31,10 +31,10 @@ Notes: #include "includes/nb1414m4.h" #include "screen.h" -const device_type NB1414M4 = device_creator; +DEFINE_DEVICE_TYPE(NB1414M4, nb1414m4_device, "nb1414m4", "NB1414M4 Mahjong Custom") nb1414m4_device::nb1414m4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NB1414M4, "NB1414M4 Mahjong Custom", tag, owner, clock, "nb1414m4", __FILE__) + : device_t(mconfig, NB1414M4, tag, owner, clock) , device_video_interface(mconfig, *this) , m_data(*this, DEVICE_SELF) { diff --git a/src/mame/machine/nes.cpp b/src/mame/machine/nes.cpp index 97f6070c020..9c3c3e5c728 100644 --- a/src/mame/machine/nes.cpp +++ b/src/mame/machine/nes.cpp @@ -67,9 +67,9 @@ void nes_state::machine_start() m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(device_nes_cart_interface::chr_r),m_cartslot->m_cart), write8_delegate(FUNC(device_nes_cart_interface::chr_w),m_cartslot->m_cart)); m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(device_nes_cart_interface::nt_r),m_cartslot->m_cart), write8_delegate(FUNC(device_nes_cart_interface::nt_w),m_cartslot->m_cart)); - m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(device_nes_cart_interface::scanline_irq),m_cartslot->m_cart)); - m_ppu->set_hblank_callback(ppu2c0x_hblank_delegate(FUNC(device_nes_cart_interface::hblank_irq),m_cartslot->m_cart)); - m_ppu->set_latch(ppu2c0x_latch_delegate(FUNC(device_nes_cart_interface::ppu_latch),m_cartslot->m_cart)); + m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(device_nes_cart_interface::scanline_irq),m_cartslot->m_cart)); + m_ppu->set_hblank_callback(ppu2c0x_device::hblank_delegate(FUNC(device_nes_cart_interface::hblank_irq),m_cartslot->m_cart)); + m_ppu->set_latch(ppu2c0x_device::latch_delegate(FUNC(device_nes_cart_interface::ppu_latch),m_cartslot->m_cart)); // install additional handlers (read_h, read_ex, write_ex) if (m_cartslot->get_pcb_id() == STD_EXROM || m_cartslot->get_pcb_id() == STD_NROM368 || m_cartslot->get_pcb_id() == STD_DISKSYS diff --git a/src/mame/machine/nextkbd.cpp b/src/mame/machine/nextkbd.cpp index 2f696f58cc3..d102775d480 100644 --- a/src/mame/machine/nextkbd.cpp +++ b/src/mame/machine/nextkbd.cpp @@ -4,7 +4,7 @@ #include "emu.h" #include "nextkbd.h" -const device_type NEXTKBD = device_creator; +DEFINE_DEVICE_TYPE(NEXTKBD, nextkbd_device, "nextkbd", "NeXT Keyboard") DEVICE_ADDRESS_MAP_START(amap, 32, nextkbd_device) AM_RANGE(0x0, 0x3) AM_READWRITE8(status_snd_r, ctrl_snd_w, 0xff000000) @@ -16,7 +16,7 @@ DEVICE_ADDRESS_MAP_START(amap, 32, nextkbd_device) ADDRESS_MAP_END nextkbd_device::nextkbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, NEXTKBD, "NEXTKBD", tag, owner, clock, "nextkbd", __FILE__), + device_t(mconfig, NEXTKBD, tag, owner, clock), int_change_cb(*this), int_power_cb(*this), int_nmi_cb(*this), diff --git a/src/mame/machine/nextkbd.h b/src/mame/machine/nextkbd.h index 41b183a12ec..e0382354b27 100644 --- a/src/mame/machine/nextkbd.h +++ b/src/mame/machine/nextkbd.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef __NEXTKBD_H__ -#define __NEXTKBD_H__ +#ifndef MAME_MACHINE_NEXTKBD_H +#define MAME_MACHINE_NEXTKBD_H + +#pragma once #define MCFG_NEXTKBD_INT_CHANGE_CALLBACK(_write) \ @@ -17,9 +19,9 @@ class nextkbd_device : public device_t { public: nextkbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_int_change_wr_callback(device_t &device, _Object object) { return downcast(device).int_change_cb.set_callback(object); } - template static devcb_base &set_int_power_wr_callback(device_t &device, _Object object) { return downcast(device).int_power_cb.set_callback(object); } - template static devcb_base &set_int_nmi_wr_callback(device_t &device, _Object object) { return downcast(device).int_nmi_cb.set_callback(object); } + template static devcb_base &set_int_change_wr_callback(device_t &device, Object &&cb) { return downcast(device).int_change_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_int_power_wr_callback(device_t &device, Object &&cb) { return downcast(device).int_power_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_int_nmi_wr_callback(device_t &device, Object &&cb) { return downcast(device).int_nmi_cb.set_callback(std::forward(cb)); } DECLARE_ADDRESS_MAP(amap, 32); @@ -113,6 +115,6 @@ private: void handle_command(); }; -extern const device_type NEXTKBD; +DECLARE_DEVICE_TYPE(NEXTKBD, nextkbd_device) -#endif +#endif // MAME_MACHINE_NEXTKBD_H diff --git a/src/mame/machine/nextmo.cpp b/src/mame/machine/nextmo.cpp index 2df3346f762..d1633f37790 100644 --- a/src/mame/machine/nextmo.cpp +++ b/src/mame/machine/nextmo.cpp @@ -4,7 +4,7 @@ #include "emu.h" #include "nextmo.h" -const device_type NEXTMO = device_creator; +DEFINE_DEVICE_TYPE(NEXTMO, nextmo_device, "nextmo", "NeXT Magneto-optical drive") DEVICE_ADDRESS_MAP_START(map, 8, nextmo_device) AM_RANGE(0x04, 0x04) AM_READWRITE(r4_r, r4_w) @@ -19,7 +19,7 @@ DEVICE_ADDRESS_MAP_START(map, 8, nextmo_device) ADDRESS_MAP_END nextmo_device::nextmo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, NEXTMO, "NeXT Magneto-optical drive", tag, owner, clock, "nextmo", __FILE__), + device_t(mconfig, NEXTMO, tag, owner, clock), r4(0), irq_cb(*this), drq_cb(*this) diff --git a/src/mame/machine/nextmo.h b/src/mame/machine/nextmo.h index 31b4627e74e..741f9d3e16d 100644 --- a/src/mame/machine/nextmo.h +++ b/src/mame/machine/nextmo.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef NEXTMO_H -#define NEXTMO_H +#ifndef MAME_MACHINE_NEXTMO_H +#define MAME_MACHINE_NEXTMO_H + +#pragma once #define MCFG_NEXTMO_IRQ_CALLBACK(_write) \ devcb = &nextmo_device::set_irq_wr_callback(*device, DEVCB_##_write); @@ -14,8 +16,8 @@ class nextmo_device : public device_t public: nextmo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast(device).irq_cb.set_callback(object); } - template static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast(device).drq_cb.set_callback(object); } + template static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast(device).irq_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_drq_wr_callback(device_t &device, Object &&cb) { return downcast(device).drq_cb.set_callback(std::forward(cb)); } DECLARE_ADDRESS_MAP(map, 32); @@ -58,4 +60,4 @@ private: extern const device_type NEXTMO; -#endif +#endif // MAME_MACHINE_NEXTMO_H diff --git a/src/mame/machine/ng_memcard.cpp b/src/mame/machine/ng_memcard.cpp index ca15f3b9d19..9c1fc7ff7e1 100644 --- a/src/mame/machine/ng_memcard.cpp +++ b/src/mame/machine/ng_memcard.cpp @@ -10,18 +10,20 @@ #include "emu.h" #include "emuopts.h" + #include "ng_memcard.h" + // device type definition -const device_type NG_MEMCARD = device_creator; +DEFINE_DEVICE_TYPE(NG_MEMCARD, ng_memcard_device, "ng_memcard", "NeoGeo Memory Card") //------------------------------------------------- // ng_memcard_device - constructor //------------------------------------------------- ng_memcard_device::ng_memcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NG_MEMCARD, "NeoGeo Memory Card", tag, owner, clock, "ng_memcard", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, NG_MEMCARD, tag, owner, clock) + , device_image_interface(mconfig, *this) { } diff --git a/src/mame/machine/ng_memcard.h b/src/mame/machine/ng_memcard.h index 2e3af83e0a9..9fcb73ea0b4 100644 --- a/src/mame/machine/ng_memcard.h +++ b/src/mame/machine/ng_memcard.h @@ -7,11 +7,11 @@ NEOGEO Memory card functions. *********************************************************************/ +#ifndef MAME_MACHINE_NG_MEMCARD_H +#define MAME_MACHINE_NG_MEMCARD_H #pragma once -#ifndef __NG_MEMCARD_H__ -#define __NG_MEMCARD_H__ //************************************************************************** // INTERFACE CONFIGURATION MACROS @@ -60,7 +60,7 @@ private: // device type definition -extern const device_type NG_MEMCARD; +DECLARE_DEVICE_TYPE(NG_MEMCARD, ng_memcard_device) -#endif /* __NG_MEMCARD_H__ */ +#endif // MAME_MACHINE_NG_MEMCARD_H diff --git a/src/mame/machine/ngen_kb.cpp b/src/mame/machine/ngen_kb.cpp index 1fa1f79732d..7d418649fba 100644 --- a/src/mame/machine/ngen_kb.cpp +++ b/src/mame/machine/ngen_kb.cpp @@ -12,7 +12,7 @@ #include "ngen_kb.h" ngen_keyboard_device::ngen_keyboard_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) - : serial_keyboard_device(mconfig, NGEN_KEYBOARD, "NGEN Keyboard", tag, owner, 0, "ngen_keyboard", __FILE__) + : serial_keyboard_device(mconfig, NGEN_KEYBOARD, tag, owner, 0) , m_keys_down(0U) , m_last_reset(0U) { @@ -106,4 +106,4 @@ void ngen_keyboard_device::key_break(uint8_t row, uint8_t column) } } -const device_type NGEN_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(NGEN_KEYBOARD, ngen_keyboard_device, "ngen_kb", "NGEN Keyboard") diff --git a/src/mame/machine/ngen_kb.h b/src/mame/machine/ngen_kb.h index f2a9f8923ab..37589926303 100644 --- a/src/mame/machine/ngen_kb.h +++ b/src/mame/machine/ngen_kb.h @@ -5,6 +5,8 @@ #ifndef MAME_MACHINE_NGEN_KB_H #define MAME_MACHINE_NGEN_KB_H +#pragma once + #include "bus/rs232/keyboard.h" class ngen_keyboard_device : public serial_keyboard_device @@ -27,6 +29,6 @@ private: uint8_t m_last_reset; }; -extern const device_type NGEN_KEYBOARD; +DECLARE_DEVICE_TYPE(NGEN_KEYBOARD, ngen_keyboard_device) #endif // MAME_MACHINE_NGEN_KB_H diff --git a/src/mame/machine/nl_breakout.cpp b/src/mame/machine/nl_breakout.cpp index 30a9934fe1b..87426734036 100644 --- a/src/mame/machine/nl_breakout.cpp +++ b/src/mame/machine/nl_breakout.cpp @@ -90,7 +90,7 @@ CIRCUIT_LAYOUT( breakout ) #if (SLOW_BUT_ACCURATE) SOLVER(Solver, 48000) - PARAM(Solver.ACCURACY, 1e-8) // less accuracy and diode will not work + PARAM(Solver.ACCURACY, 1e-7) // less accuracy and diode will not work PARAM(Solver.METHOD, "MAT_CR") #else SOLVER(Solver, 48000) diff --git a/src/mame/machine/nmk004.cpp b/src/mame/machine/nmk004.cpp index d8e117b6f25..84199d34ef1 100644 --- a/src/mame/machine/nmk004.cpp +++ b/src/mame/machine/nmk004.cpp @@ -9,6 +9,10 @@ #include "emu.h" #include "nmk004.h" +#include "sound/2203intf.h" +#include "sound/okim6295.h" + + WRITE8_MEMBER( nmk004_device::write ) { machine().scheduler().synchronize(); @@ -26,7 +30,7 @@ WRITE8_MEMBER(nmk004_device::nmk004_port4_w) // bit 0x08 toggles frequently but is connected to nothing? // bit 0x01 is set to reset the 68k - m_systemcpu->set_input_line(INPUT_LINE_RESET, (data & 1) ? ASSERT_LINE : CLEAR_LINE); + m_reset_cb(BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE); } WRITE8_MEMBER(nmk004_device::nmk004_oki0_bankswitch_w) @@ -90,12 +94,12 @@ ROM_START( nmk004 ) ROM_END -const device_type NMK004 = device_creator; +DEFINE_DEVICE_TYPE(NMK004, nmk004_device, "nmk004", "NMK004") nmk004_device::nmk004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NMK004, "NMK004", tag, owner, clock, "nmk004", __FILE__), + : device_t(mconfig, NMK004, tag, owner, clock), m_cpu(*this, "mcu"), - m_systemcpu(*this, ":maincpu"), + m_reset_cb(*this), to_nmk004(0xff), to_main(0xff) { @@ -107,6 +111,8 @@ nmk004_device::nmk004_device(const machine_config &mconfig, const char *tag, dev //------------------------------------------------- void nmk004_device::device_start() { + m_reset_cb.resolve_safe(); + membank(":okibank1")->configure_entries(0, 4, memregion(":oki1")->base() + 0x20000, 0x20000); membank(":okibank2")->configure_entries(0, 4, memregion(":oki2")->base() + 0x20000, 0x20000); } diff --git a/src/mame/machine/nmk004.h b/src/mame/machine/nmk004.h index 2851d4a6056..273d539447d 100644 --- a/src/mame/machine/nmk004.h +++ b/src/mame/machine/nmk004.h @@ -6,25 +6,33 @@ ***************************************************************************/ -#ifndef NMK004_H -#define NMK004_H +#ifndef MAME_MACHINE_NMK004_H +#define MAME_MACHINE_NMK004_H #include "cpu/tlcs90/tlcs90.h" -#include "sound/2203intf.h" -#include "sound/okim6295.h" -#define MCFG_NMK004_ADD(_tag, _clock) \ - MCFG_DEVICE_ADD(_tag, NMK004, _clock) +#pragma once -/* device get info callback */ +#define MCFG_NMK004_ADD(tag, clock) \ + MCFG_DEVICE_ADD(tag, NMK004, clock) + +#define MCFG_NMK004_RESET_CB(cb) \ + nmk004_device::set_reset_cb(*device, DEVCB_##cb); + class nmk004_device : public device_t { public: + template static devcb_base &set_reset_cb(device_t &device, Obj &&object) + { return downcast(device).m_reset_cb.set_callback(std::forward(object)); } + nmk004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - WRITE8_MEMBER( write ); - READ8_MEMBER( read ); + // host interface + DECLARE_WRITE8_MEMBER( write ); + DECLARE_READ8_MEMBER( read ); + DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_cpu->set_input_line(INPUT_LINE_NMI, state); } + DECLARE_WRITE8_MEMBER(nmk004_port4_w); DECLARE_WRITE8_MEMBER(nmk004_oki0_bankswitch_w); @@ -32,7 +40,6 @@ public: DECLARE_READ8_MEMBER(nmk004_tonmk004_r); DECLARE_WRITE8_MEMBER(nmk004_tomain_w); void ym2203_irq_handler(int irq); - required_device m_cpu; protected: // device-level overrides @@ -40,15 +47,15 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; - private: // internal state - required_device m_systemcpu; + required_device m_cpu; + devcb_write_line m_reset_cb; + uint8_t to_nmk004; uint8_t to_main; - }; -extern const device_type NMK004; +DECLARE_DEVICE_TYPE(NMK004, nmk004_device) -#endif /* NMK004_H */ +#endif // MAME_MACHINE_NMK004_H diff --git a/src/mame/machine/nmk112.cpp b/src/mame/machine/nmk112.cpp index 1f1d7157af4..e4cbe57ccca 100644 --- a/src/mame/machine/nmk112.cpp +++ b/src/mame/machine/nmk112.cpp @@ -17,10 +17,10 @@ -const device_type NMK112 = device_creator; +DEFINE_DEVICE_TYPE(NMK112, nmk112_device, "nmk112", "NMK112") nmk112_device::nmk112_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NMK112, "NMK112", tag, owner, clock, "nmk112", __FILE__), + : device_t(mconfig, NMK112, tag, owner, clock), m_page_mask(0xff), m_tag0(nullptr), m_tag1(nullptr), diff --git a/src/mame/machine/nmk112.h b/src/mame/machine/nmk112.h index 31724490a7a..ac722031c55 100644 --- a/src/mame/machine/nmk112.h +++ b/src/mame/machine/nmk112.h @@ -6,8 +6,10 @@ **************************************************************************/ -#ifndef __NMK112_H__ -#define __NMK112_H__ +#ifndef MAME_MACHINE_NMK112_H +#define MAME_MACHINE_NMK112_H + +#pragma once /*************************************************************************** TYPE DEFINITIONS @@ -17,7 +19,6 @@ class nmk112_device : public device_t { public: nmk112_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~nmk112_device() {} // static configuration static void set_rom0_tag(device_t &device, const char *tag) { downcast(device).m_tag0 = tag; } @@ -47,7 +48,7 @@ private: int m_size0, m_size1; }; -extern const device_type NMK112; +DECLARE_DEVICE_TYPE(NMK112, nmk112_device) /*************************************************************************** @@ -64,4 +65,4 @@ extern const device_type NMK112; nmk112_device::set_page_mask(*device, _mask); -#endif /* __NMK112_H__ */ +#endif // MAME_MACHINE_NMK112_H diff --git a/src/mame/machine/ns10crypt.cpp b/src/mame/machine/ns10crypt.cpp index bcfcf7847e3..f15c5044f75 100644 --- a/src/mame/machine/ns10crypt.cpp +++ b/src/mame/machine/ns10crypt.cpp @@ -118,19 +118,19 @@ really exist. #include "emu.h" #include "ns10crypt.h" -const device_type CHOCOVDR_DECRYPTER = device_creator; -const device_type GAMSHARA_DECRYPTER = device_creator; -const device_type GJSPACE_DECRYPTER = device_creator; -const device_type KNPUZZLE_DECRYPTER = device_creator; -const device_type KONOTAKO_DECRYPTER = device_creator; -const device_type MRDRILR2_DECRYPTER = device_creator; -const device_type NFLCLSFB_DECRYPTER = device_creator; -const device_type STARTRGN_DECRYPTER = device_creator; +DEFINE_DEVICE_TYPE(CHOCOVDR_DECRYPTER, chocovdr_decrypter_device, "chocovdr_decrypter", "Chocovader Contactee decrypter") +DEFINE_DEVICE_TYPE(GAMSHARA_DECRYPTER, gamshara_decrypter_device, "gamshara_decrypter", "Gamshara decrypter") +DEFINE_DEVICE_TYPE(GJSPACE_DECRYPTER, gjspace_decrypter_device, "gjspace_decrypter", "Gekitorider-Jong Space decrypter") +DEFINE_DEVICE_TYPE(KNPUZZLE_DECRYPTER, knpuzzle_decrypter_device, "knpuzzle_decrypter", "Kotoba no Puzzle Mojipittan decrypter") +DEFINE_DEVICE_TYPE(KONOTAKO_DECRYPTER, konotako_decrypter_device, "konotako_decrypter", "Kono Tako decrypter") +DEFINE_DEVICE_TYPE(MRDRILR2_DECRYPTER, mrdrilr2_decrypter_device, "mrdrilr2_decrypter", "Mr Driller 2 decrypter") +DEFINE_DEVICE_TYPE(NFLCLSFB_DECRYPTER, nflclsfb_decrypter_device, "nflclsfg_decrypter", "NFL Classic Football decrypter") +DEFINE_DEVICE_TYPE(STARTRGN_DECRYPTER, startrgn_decrypter_device, "startrgn_decrypter", "Star Trigon decrypter") // base class -ns10_decrypter_device::ns10_decrypter_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__) +ns10_decrypter_device::ns10_decrypter_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) { _active = false; } @@ -163,8 +163,8 @@ constexpr int U {UNKNOWN}; // this could perfectly be part of the per-game logic but, with only one known type-1 game, we cannot say anything definitive const int ns10_type1_decrypter_device::initSbox[16] {U,U,U,0,4,9,U,U,U,8,U,1,U,9,U,5}; -ns10_type1_decrypter_device::ns10_type1_decrypter_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : ns10_decrypter_device(mconfig, type, name, tag, owner, clock, shortname, source) +ns10_type1_decrypter_device::ns10_type1_decrypter_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : ns10_decrypter_device(mconfig, type, tag, owner, clock) { } @@ -213,8 +213,8 @@ void ns10_type1_decrypter_device::device_start() // this could perfectly be part of the per-game logic; by now, only gamshara seems to use it, so we keep it global const int ns10_type2_decrypter_device::initSbox[16] {0,12,13,6,2,4,9,8,11,1,7,15,10,5,14,3}; -ns10_type2_decrypter_device::ns10_type2_decrypter_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, const ns10_type2_decrypter_device::ns10_crypto_logic &logic) - : ns10_decrypter_device(mconfig, type, name, tag, owner, clock, shortname, source) +ns10_type2_decrypter_device::ns10_type2_decrypter_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const ns10_type2_decrypter_device::ns10_crypto_logic &logic) + : ns10_decrypter_device(mconfig, type, tag, owner, clock) , _logic(logic) { } @@ -257,7 +257,7 @@ void ns10_type2_decrypter_device::device_start() } -gf2_reducer::gf2_reducer() +ns10_type2_decrypter_device::gf2_reducer::gf2_reducer() { int reduction; @@ -274,7 +274,7 @@ gf2_reducer::gf2_reducer() } } -int gf2_reducer::gf2_reduce(uint64_t num)const +int ns10_type2_decrypter_device::gf2_reducer::gf2_reduce(uint64_t num)const { return _gf2Reduction[num & 0xffff] ^ @@ -298,13 +298,13 @@ int gf2_reducer::gf2_reduce(uint64_t num)const // & (reducer.gf2_reduce(0x0000a13140090000ull & previous_cipherwords) ^ reducer.gf2_reduce(0x0000806240090000ull & previous_plainwords))) << 2; // } -static uint16_t chocovdr_nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer& reducer) +uint16_t chocovdr_decrypter_device::nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer& reducer) { uint64_t previous_masks = previous_cipherwords ^ previous_plainwords; return ((previous_masks >> 9) & (reducer.gf2_reduce(0x0000000010065810ull & previous_cipherwords) ^ reducer.gf2_reduce(0x0000000021005810ull & previous_plainwords)) & 1) << 10; } -static constexpr ns10_type2_decrypter_device::ns10_crypto_logic chocovdr_crypto_logic = { +const ns10_type2_decrypter_device::ns10_crypto_logic chocovdr_decrypter_device::crypto_logic = { { 0x00005239351ec1daull, 0x0000000000008090ull, 0x0000000048264808ull, 0x0000000000004820ull, 0x0000000000000500ull, 0x0000000058ff5a54ull, 0x00000000d8220208ull, 0x00005239351e91d3ull, @@ -317,16 +317,16 @@ static constexpr ns10_type2_decrypter_device::ns10_crypto_logic chocovdr_crypto_ 0x000000006800d3f5ull, 0x0000000000000058ull, 0x000000006800d2d5ull, 0x0000000000001840ull, }, 0x5b22, - chocovdr_nonlinear_calc + &nonlinear_calc }; -static uint16_t gamshara_nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer&) +uint16_t gamshara_decrypter_device::nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer&) { uint64_t previous_masks = previous_cipherwords ^ previous_plainwords; return ((previous_masks >> 7) & (previous_masks >> 13) & 1) << 2; } -static constexpr ns10_type2_decrypter_device::ns10_crypto_logic gamshara_crypto_logic = { +const ns10_type2_decrypter_device::ns10_crypto_logic gamshara_decrypter_device::crypto_logic = { { 0x0000000000000028ull, 0x0000cae83f389fd9ull, 0x0000000000001000ull, 0x0000000042823402ull, 0x0000cae8736a0592ull, 0x0000cae8736a8596ull, 0x000000008b4095b9ull, 0x0000000000002100ull, @@ -339,15 +339,15 @@ static constexpr ns10_type2_decrypter_device::ns10_crypto_logic gamshara_crypto_ 0x000000004400d1f1ull, 0x000000006001ce08ull, 0x00000000000000c8ull, 0x0000000054023002ull, }, 0x25ab, - gamshara_nonlinear_calc + &nonlinear_calc }; -static uint16_t gjspace_nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer&) +uint16_t gjspace_decrypter_device::nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer&) { return 0; } -static constexpr ns10_type2_decrypter_device::ns10_crypto_logic gjspace_crypto_logic = { +const ns10_type2_decrypter_device::ns10_crypto_logic gjspace_decrypter_device::crypto_logic = { { 0x0000000000000240ull, 0x0000d617eb0f1ab1ull, 0x00000000451111c0ull, 0x00000000013b1f44ull, 0x0000aab0b356abceull, 0x00007ca76b89602aull, 0x0000000000001800ull, 0x00000000031d1303ull, @@ -360,16 +360,16 @@ static constexpr ns10_type2_decrypter_device::ns10_crypto_logic gjspace_crypto_l 0x0000000000001101ull, 0x000000000000a002ull, 0x0000000029001740ull, 0x00000000a4309bfcull, }, 0x2e7f, - gjspace_nonlinear_calc + &nonlinear_calc }; -static uint16_t knpuzzle_nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer& reducer) +uint16_t knpuzzle_decrypter_device::nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer& reducer) { uint64_t previous_masks = previous_cipherwords ^ previous_plainwords; return ((previous_masks >> 0x13) & (reducer.gf2_reduce(0x0000000014001290ull & previous_cipherwords) ^ reducer.gf2_reduce(0x0000000000021290ull & previous_plainwords)) & 1) << 1; } -static constexpr ns10_type2_decrypter_device::ns10_crypto_logic knpuzzle_crypto_logic = { +const ns10_type2_decrypter_device::ns10_crypto_logic knpuzzle_decrypter_device::crypto_logic = { { 0x00000000c0a4208cull, 0x00000000204100a8ull, 0x000000000c0306a0ull, 0x000000000819e944ull, 0x0000000000001400ull, 0x0000000000000061ull, 0x000000000141401cull, 0x0000000000000020ull, @@ -382,16 +382,16 @@ static constexpr ns10_type2_decrypter_device::ns10_crypto_logic knpuzzle_crypto_ 0x00000000012a04a2ull, 0x00000000003984a4ull, 0x0000000000000700ull, 0x0000000000000882ull, }, 0x01e2, - knpuzzle_nonlinear_calc + &nonlinear_calc }; -static uint16_t konotako_nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer&) +uint16_t konotako_decrypter_device::nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer&) { uint64_t previous_masks = previous_cipherwords ^ previous_plainwords; return ((previous_masks >> 7) & (previous_masks >> 15) & 1) << 15; } -static constexpr ns10_type2_decrypter_device::ns10_crypto_logic konotako_crypto_logic = { +const ns10_type2_decrypter_device::ns10_crypto_logic konotako_decrypter_device::crypto_logic = { { 0x000000000000004cull, 0x00000000d39e3d3dull, 0x0000000000001110ull, 0x0000000000002200ull, 0x000000003680c008ull, 0x0000000000000281ull, 0x0000000000005002ull, 0x00002a7371895a47ull, @@ -404,16 +404,16 @@ static constexpr ns10_type2_decrypter_device::ns10_crypto_logic konotako_crypto_ 0x000000009000200bull, 0x0000000000000310ull, 0x0000000000001840ull, 0x0000000000000400ull, }, 0x0748, - konotako_nonlinear_calc + &nonlinear_calc }; -static uint16_t nflclsfb_nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer& reducer) +uint16_t nflclsfb_decrypter_device::nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer& reducer) { uint64_t previous_masks = previous_cipherwords ^ previous_plainwords; return ((previous_masks >> 1) & (reducer.gf2_reduce(0x0000000040de8fb3ull & previous_cipherwords) ^ reducer.gf2_reduce(0x0000000088008fb3ull & previous_plainwords)) & 1) << 2; } -static constexpr ns10_type2_decrypter_device::ns10_crypto_logic nflclsfb_crypto_logic = { +const ns10_type2_decrypter_device::ns10_crypto_logic nflclsfb_decrypter_device::crypto_logic = { { 0x000034886e281880ull, 0x0000000012c5e7baull, 0x0000000000000200ull, 0x000000002900002aull, 0x00000000000004c0ull, 0x0000000012c5e6baull, 0x00000000e0df8bbbull, 0x000000002011532aull, @@ -426,16 +426,16 @@ static constexpr ns10_type2_decrypter_device::ns10_crypto_logic nflclsfb_crypto_ 0x0000000000000404ull, 0x0000000000004201ull, 0x0000000000001100ull, 0x000000008c0057b2ull, }, 0xbe32, - nflclsfb_nonlinear_calc + &nonlinear_calc }; -static uint16_t startrgn_nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer&) +uint16_t startrgn_decrypter_device::nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer&) { uint64_t previous_masks = previous_cipherwords ^ previous_plainwords; return ((previous_masks >> 12) & (previous_masks >> 14) & 1) << 4; } -static constexpr ns10_type2_decrypter_device::ns10_crypto_logic startrgn_crypto_logic = { +const ns10_type2_decrypter_device::ns10_crypto_logic startrgn_decrypter_device::crypto_logic = { { 0x00003e4bfe92c6a9ull, 0x000000000000010cull, 0x00003e4b7bd6c4aaull, 0x0000b1a904b8fab8ull, 0x0000000000000080ull, 0x0000000000008c00ull, 0x0000b1a9b2f0b4cdull, 0x000000006c100828ull, @@ -448,48 +448,48 @@ static constexpr ns10_type2_decrypter_device::ns10_crypto_logic startrgn_crypto_ 0x0000000000000428ull, 0x0000000000001001ull, 0x000012020b10ceabull, 0x0000000000000144ull, }, 0x8c46, - startrgn_nonlinear_calc + &nonlinear_calc }; // game-specific devices mrdrilr2_decrypter_device::mrdrilr2_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ns10_type1_decrypter_device(mconfig, MRDRILR2_DECRYPTER, "Mr Driller 2 decrypter", tag, owner, clock, "mrdrilr2_decrypter", __FILE__) + : ns10_type1_decrypter_device(mconfig, MRDRILR2_DECRYPTER, tag, owner, clock) { } chocovdr_decrypter_device::chocovdr_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ns10_type2_decrypter_device(mconfig, CHOCOVDR_DECRYPTER, "Chocovader Contactee decrypter", tag, owner, clock, "chocovdr_decrypter", __FILE__, chocovdr_crypto_logic) + : ns10_type2_decrypter_device(mconfig, CHOCOVDR_DECRYPTER, tag, owner, clock, crypto_logic) { } gamshara_decrypter_device::gamshara_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ns10_type2_decrypter_device(mconfig, GAMSHARA_DECRYPTER, "Gamshara decrypter", tag, owner, clock, "gamshara_decrypter", __FILE__, gamshara_crypto_logic) + : ns10_type2_decrypter_device(mconfig, GAMSHARA_DECRYPTER, tag, owner, clock, crypto_logic) { } gjspace_decrypter_device::gjspace_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ns10_type2_decrypter_device(mconfig, GJSPACE_DECRYPTER, "Gekitoride-Jong Space decrypter", tag, owner, clock, "gjspace_decrypter", __FILE__, gjspace_crypto_logic) + : ns10_type2_decrypter_device(mconfig, GJSPACE_DECRYPTER, tag, owner, clock, crypto_logic) { } knpuzzle_decrypter_device::knpuzzle_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ns10_type2_decrypter_device(mconfig, KNPUZZLE_DECRYPTER, "Kotoba no Puzzle Mojipittan decrypter", tag, owner, clock, "knpuzzle_decrypter", __FILE__, knpuzzle_crypto_logic) + : ns10_type2_decrypter_device(mconfig, KNPUZZLE_DECRYPTER, tag, owner, clock, crypto_logic) { } konotako_decrypter_device::konotako_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ns10_type2_decrypter_device(mconfig, KONOTAKO_DECRYPTER, "Kono Tako decrypter", tag, owner, clock, "konotako_decrypter", __FILE__, konotako_crypto_logic) + : ns10_type2_decrypter_device(mconfig, KONOTAKO_DECRYPTER, tag, owner, clock, crypto_logic) { } nflclsfb_decrypter_device::nflclsfb_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ns10_type2_decrypter_device(mconfig, NFLCLSFB_DECRYPTER, "NFL Classic Football decrypter", tag, owner, clock, "nflclsfb_decrypter", __FILE__, nflclsfb_crypto_logic) + : ns10_type2_decrypter_device(mconfig, NFLCLSFB_DECRYPTER, tag, owner, clock, crypto_logic) { } startrgn_decrypter_device::startrgn_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : ns10_type2_decrypter_device(mconfig, STARTRGN_DECRYPTER, "Star Trigon decrypter", tag, owner, clock, "startrgn_decrypter", __FILE__, startrgn_crypto_logic) + : ns10_type2_decrypter_device(mconfig, STARTRGN_DECRYPTER, tag, owner, clock, crypto_logic) { } diff --git a/src/mame/machine/ns10crypt.h b/src/mame/machine/ns10crypt.h index ac2926ae464..960342f682b 100644 --- a/src/mame/machine/ns10crypt.h +++ b/src/mame/machine/ns10crypt.h @@ -1,21 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Andreas Naive -#ifndef _NS10CRYPT_H_ -#define _NS10CRYPT_H_ +#ifndef MAME_MACHINE_NS10CRYPT_H +#define MAME_MACHINE_NS10CRYPT_H #include -class gf2_reducer // helper class -{ -public: - gf2_reducer(); - int gf2_reduce(uint64_t num)const; -private: - int _gf2Reduction[0x10000]; -}; - - class ns10_decrypter_device : public device_t { public: @@ -27,7 +17,7 @@ public: virtual ~ns10_decrypter_device(); protected: - ns10_decrypter_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + ns10_decrypter_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual void init(int iv)=0; virtual void device_start()override=0; @@ -43,7 +33,7 @@ public: uint16_t decrypt(uint16_t cipherword)override; protected: - ns10_type1_decrypter_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); + ns10_type1_decrypter_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); private: uint16_t _mask; @@ -58,6 +48,18 @@ private: class ns10_type2_decrypter_device : public ns10_decrypter_device { public: + uint16_t decrypt(uint16_t cipherword)override; + +protected: + class gf2_reducer // helper class + { + public: + gf2_reducer(); + int gf2_reduce(uint64_t num)const; + private: + int _gf2Reduction[0x10000]; + }; + // this encodes the decryption logic, which varies per game // and is probably hard-coded into the CPLD struct ns10_crypto_logic @@ -68,11 +70,7 @@ public: uint16_t(*nonlinear_calculation)(uint64_t, uint64_t, const gf2_reducer&); // preliminary encoding; need research }; - uint16_t decrypt(uint16_t cipherword)override; - -protected: - ns10_type2_decrypter_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source, - const ns10_type2_decrypter_device::ns10_crypto_logic &logic); + ns10_type2_decrypter_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const ns10_crypto_logic &logic); private: uint16_t _mask; @@ -100,52 +98,73 @@ class chocovdr_decrypter_device : public ns10_type2_decrypter_device { public: chocovdr_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +private: + static uint16_t nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer &reducer); + static const ns10_crypto_logic crypto_logic; }; class gamshara_decrypter_device : public ns10_type2_decrypter_device { public: gamshara_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +private: + static uint16_t nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer &reducer); + static const ns10_crypto_logic crypto_logic; }; class gjspace_decrypter_device : public ns10_type2_decrypter_device { public: gjspace_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +private: + static uint16_t nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer &reducer); + static const ns10_crypto_logic crypto_logic; }; class knpuzzle_decrypter_device : public ns10_type2_decrypter_device { public: knpuzzle_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +private: + static uint16_t nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer &reducer); + static const ns10_crypto_logic crypto_logic; }; class konotako_decrypter_device : public ns10_type2_decrypter_device { public: konotako_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +private: + static uint16_t nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer &reducer); + static const ns10_crypto_logic crypto_logic; }; class nflclsfb_decrypter_device : public ns10_type2_decrypter_device { public: nflclsfb_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +private: + static uint16_t nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer &reducer); + static const ns10_crypto_logic crypto_logic; }; class startrgn_decrypter_device : public ns10_type2_decrypter_device { public: startrgn_decrypter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +private: + static uint16_t nonlinear_calc(uint64_t previous_cipherwords, uint64_t previous_plainwords, const gf2_reducer &reducer); + static const ns10_crypto_logic crypto_logic; }; -extern const device_type MRDRILR2_DECRYPTER; -extern const device_type CHOCOVDR_DECRYPTER; -extern const device_type GAMSHARA_DECRYPTER; -extern const device_type GJSPACE_DECRYPTER; -extern const device_type KNPUZZLE_DECRYPTER; -extern const device_type KONOTAKO_DECRYPTER; -extern const device_type NFLCLSFB_DECRYPTER; -extern const device_type STARTRGN_DECRYPTER; +DECLARE_DEVICE_TYPE(CHOCOVDR_DECRYPTER, chocovdr_decrypter_device) +DECLARE_DEVICE_TYPE(GAMSHARA_DECRYPTER, gamshara_decrypter_device) +DECLARE_DEVICE_TYPE(GJSPACE_DECRYPTER, gjspace_decrypter_device) +DECLARE_DEVICE_TYPE(KNPUZZLE_DECRYPTER, knpuzzle_decrypter_device) +DECLARE_DEVICE_TYPE(KONOTAKO_DECRYPTER, konotako_decrypter_device) +DECLARE_DEVICE_TYPE(MRDRILR2_DECRYPTER, mrdrilr2_decrypter_device) +DECLARE_DEVICE_TYPE(NFLCLSFB_DECRYPTER, nflclsfb_decrypter_device) +DECLARE_DEVICE_TYPE(STARTRGN_DECRYPTER, startrgn_decrypter_device) -#endif +#endif // MAME_MACHINE_NS10CRYPT_H diff --git a/src/mame/machine/ns11prot.cpp b/src/mame/machine/ns11prot.cpp index bec5d68e7a4..6e0f711d795 100644 --- a/src/mame/machine/ns11prot.cpp +++ b/src/mame/machine/ns11prot.cpp @@ -8,8 +8,8 @@ #include "emu.h" #include "ns11prot.h" -ns11_keycus_device::ns11_keycus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source) +ns11_keycus_device::ns11_keycus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock) { } @@ -30,7 +30,7 @@ void ns11_keycus_device::device_reset() /* tekken 2 */ keycus_c406_device::keycus_c406_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - ns11_keycus_device(mconfig, KEYCUS_C406, "Namco C406 KEYCUS", tag, owner, clock, "keycus_c406", __FILE__) + ns11_keycus_device(mconfig, KEYCUS_C406, tag, owner, clock) { } @@ -65,12 +65,12 @@ WRITE16_MEMBER(keycus_c406_device::write) logerror( "keycus_c406_device::write unexpected offset=%d data=%04x\n", offset, data ); } -const device_type KEYCUS_C406 = device_creator; +DEFINE_DEVICE_TYPE(KEYCUS_C406, keycus_c406_device, "keycus_c406", "Namco C406 KEYCUS") /* soul edge */ keycus_c409_device::keycus_c409_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - ns11_keycus_device(mconfig, KEYCUS_C409, "Namco C409 KEYCUS", tag, owner, clock, "keycus_c409", __FILE__) + ns11_keycus_device(mconfig, KEYCUS_C409, tag, owner, clock) { } @@ -105,12 +105,12 @@ WRITE16_MEMBER(keycus_c409_device::write) logerror( "keycus_c409_device::write unexpected offset=%d data=%04x\n", offset, data ); } -const device_type KEYCUS_C409 = device_creator; +DEFINE_DEVICE_TYPE(KEYCUS_C409, keycus_c409_device, "keycus_c409", "Namco C409 KEYCUS") /* dunk mania */ keycus_c410_device::keycus_c410_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - ns11_keycus_device(mconfig, KEYCUS_C410, "Namco C410 KEYCUS", tag, owner, clock, "keycus_c410", __FILE__) + ns11_keycus_device(mconfig, KEYCUS_C410, tag, owner, clock) { } @@ -159,12 +159,12 @@ WRITE16_MEMBER(keycus_c410_device::write) logerror( "keycus_c410_device::write unexpected offset=%d data=%04x\n", offset, data ); } -const device_type KEYCUS_C410 = device_creator; +DEFINE_DEVICE_TYPE(KEYCUS_C410, keycus_c410_device, "keycus_c410", "Namco C410 KEYCUS") /* prime goal ex */ keycus_c411_device::keycus_c411_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - ns11_keycus_device(mconfig, KEYCUS_C411, "Namco C411 KEYCUS", tag, owner, clock, "keycus_c411", __FILE__) + ns11_keycus_device(mconfig, KEYCUS_C411, tag, owner, clock) { } @@ -215,12 +215,12 @@ WRITE16_MEMBER(keycus_c411_device::write) logerror( "keycus_c411_device::write unexpected offset=%d data=%04x\n", offset, data ); } -const device_type KEYCUS_C411 = device_creator; +DEFINE_DEVICE_TYPE(KEYCUS_C411, keycus_c411_device, "keycus_c411", "Namco C411 KEYCUS") /* xevious 3d/g */ keycus_c430_device::keycus_c430_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - ns11_keycus_device(mconfig, KEYCUS_C430, "Namco C430 KEYCUS", tag, owner, clock, "keycus_c430", __FILE__) + ns11_keycus_device(mconfig, KEYCUS_C430, tag, owner, clock) { } @@ -274,12 +274,12 @@ WRITE16_MEMBER(keycus_c430_device::write) logerror( "keycus_c430_device::write unexpected offset=%d data=%04x\n", offset, data ); } -const device_type KEYCUS_C430 = device_creator; +DEFINE_DEVICE_TYPE(KEYCUS_C430, keycus_c430_device, "keycus_c430", "Namco C430 KEYCUS") /* dancing eyes */ keycus_c431_device::keycus_c431_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - ns11_keycus_device(mconfig, KEYCUS_C431, "Namco C431 KEYCUS", tag, owner, clock, "keycus_c431", __FILE__) + ns11_keycus_device(mconfig, KEYCUS_C431, tag, owner, clock) { } @@ -332,12 +332,12 @@ WRITE16_MEMBER(keycus_c431_device::write) logerror( "keycus_c431_device::write unexpected offset=%d data=%04x\n", offset, data ); } -const device_type KEYCUS_C431 = device_creator; +DEFINE_DEVICE_TYPE(KEYCUS_C431, keycus_c431_device, "keycus_c431", "Namco C431 KEYCUS") /* pocket racer */ keycus_c432_device::keycus_c432_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - ns11_keycus_device(mconfig, KEYCUS_C432, "Namco C432 KEYCUS", tag, owner, clock, "keycus_c432", __FILE__) + ns11_keycus_device(mconfig, KEYCUS_C432, tag, owner, clock) { } @@ -392,12 +392,12 @@ WRITE16_MEMBER(keycus_c432_device::write) logerror( "keycus_c432_device::write unexpected offset=%d data=%04x\n", offset, data ); } -const device_type KEYCUS_C432 = device_creator; +DEFINE_DEVICE_TYPE(KEYCUS_C432, keycus_c432_device, "keycus_c432", "Namco C432 KEYCUS") /* star sweep */ keycus_c442_device::keycus_c442_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - ns11_keycus_device(mconfig, KEYCUS_C442, "Namco C442 KEYCUS", tag, owner, clock, "keycus_c442", __FILE__) + ns11_keycus_device(mconfig, KEYCUS_C442, tag, owner, clock) { } @@ -440,12 +440,12 @@ WRITE16_MEMBER(keycus_c442_device::write) logerror( "keycus_c442_device::write unexpected offset=%d data=%04x\n", offset, data ); } -const device_type KEYCUS_C442 = device_creator; +DEFINE_DEVICE_TYPE(KEYCUS_C442, keycus_c442_device, "keycus_c442", "Namco C442 KEYCUS") /* kosodate quiz my angel 3 / point blank 2 */ keycus_c443_device::keycus_c443_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - ns11_keycus_device(mconfig, KEYCUS_C443, "Namco C443 KEYCUS", tag, owner, clock, "keycus_c443", __FILE__) + ns11_keycus_device(mconfig, KEYCUS_C443, tag, owner, clock) { } @@ -486,4 +486,4 @@ WRITE16_MEMBER(keycus_c443_device::write) logerror( "keycus_c443_device::write unexpected offset=%d data=%04x\n", offset, data ); } -const device_type KEYCUS_C443 = device_creator; +DEFINE_DEVICE_TYPE(KEYCUS_C443, keycus_c443_device, "keycus_c443", "Namco C443 KEYCUS") diff --git a/src/mame/machine/ns11prot.h b/src/mame/machine/ns11prot.h index de9af03b7d6..f45eca27b7e 100644 --- a/src/mame/machine/ns11prot.h +++ b/src/mame/machine/ns11prot.h @@ -4,17 +4,20 @@ * Namco System 11 Protection * */ +#ifndef MAME_MACHINE_NS11PROT_H +#define MAME_MACHINE_NS11PROT_H + +#pragma once class ns11_keycus_device : public device_t { protected: - ns11_keycus_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock,const char *shortname, const char *source); + ns11_keycus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual void device_start() override; virtual void device_reset() override; -protected: uint16_t m_p1; uint16_t m_p2; uint16_t m_p3; @@ -35,7 +38,7 @@ public: virtual DECLARE_WRITE16_MEMBER( write ) override; }; -extern const device_type KEYCUS_C406; +DECLARE_DEVICE_TYPE(KEYCUS_C406, keycus_c406_device) /* soul edge */ @@ -48,7 +51,7 @@ public: virtual DECLARE_WRITE16_MEMBER( write ) override; }; -extern const device_type KEYCUS_C409; +DECLARE_DEVICE_TYPE(KEYCUS_C409, keycus_c409_device) /* dunk mania */ @@ -61,7 +64,7 @@ public: virtual DECLARE_WRITE16_MEMBER( write ) override; }; -extern const device_type KEYCUS_C410; +DECLARE_DEVICE_TYPE(KEYCUS_C410, keycus_c410_device) /* prime goal ex */ @@ -74,7 +77,7 @@ public: virtual DECLARE_WRITE16_MEMBER( write ) override; }; -extern const device_type KEYCUS_C411; +DECLARE_DEVICE_TYPE(KEYCUS_C411, keycus_c411_device) /* xevious 3d/g */ @@ -87,7 +90,7 @@ public: virtual DECLARE_WRITE16_MEMBER( write ) override; }; -extern const device_type KEYCUS_C430; +DECLARE_DEVICE_TYPE(KEYCUS_C430, keycus_c430_device) /* dancing eyes */ @@ -100,7 +103,7 @@ public: virtual DECLARE_WRITE16_MEMBER( write ) override; }; -extern const device_type KEYCUS_C431; +DECLARE_DEVICE_TYPE(KEYCUS_C431, keycus_c431_device) /* pocket racer */ @@ -113,7 +116,7 @@ public: virtual DECLARE_WRITE16_MEMBER( write ) override; }; -extern const device_type KEYCUS_C432; +DECLARE_DEVICE_TYPE(KEYCUS_C432, keycus_c432_device) /* star sweep */ @@ -126,7 +129,7 @@ public: virtual DECLARE_WRITE16_MEMBER( write ) override; }; -extern const device_type KEYCUS_C442; +DECLARE_DEVICE_TYPE(KEYCUS_C442, keycus_c442_device) /* kosodate quiz my angel 3 / point blank 2 */ @@ -139,4 +142,6 @@ public: virtual DECLARE_WRITE16_MEMBER( write ) override; }; -extern const device_type KEYCUS_C443; +DECLARE_DEVICE_TYPE(KEYCUS_C443, keycus_c443_device) + +#endif // MAME_MACHINE_NS11PROT_H diff --git a/src/mame/machine/octo_kbd.cpp b/src/mame/machine/octo_kbd.cpp index a5d7219619b..b309bea81dc 100644 --- a/src/mame/machine/octo_kbd.cpp +++ b/src/mame/machine/octo_kbd.cpp @@ -7,7 +7,7 @@ octopus_keyboard_device::octopus_keyboard_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) - : buffered_rs232_device(mconfig, OCTOPUS_KEYBOARD, "Octopus Keyboard", tag, owner, 0, "octopus_kb", __FILE__) + : buffered_rs232_device(mconfig, OCTOPUS_KEYBOARD, tag, owner, 0) , device_matrix_keyboard_interface(mconfig, *this, "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", "LINE8", "LINE9", "LINEA", "LINEB", "LINEC", "LINED", "LINEE", "LINEF") { } @@ -260,6 +260,4 @@ void octopus_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, } -const device_type OCTOPUS_KEYBOARD = device_creator; - - +DEFINE_DEVICE_TYPE(OCTOPUS_KEYBOARD, octopus_keyboard_device, "octopus_kb", "Octopus Keyboard") diff --git a/src/mame/machine/octo_kbd.h b/src/mame/machine/octo_kbd.h index c51fe7b62f2..ab04f8def30 100644 --- a/src/mame/machine/octo_kbd.h +++ b/src/mame/machine/octo_kbd.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Barry Rodewald -#ifndef OCTO_KBD_H -#define OCTO_KBD_H +#ifndef MAME_MACHINE_OCTO_KBD_H +#define MAME_MACHINE_OCTO_KBD_H + +#pragma once #include "bus/rs232/keyboard.h" @@ -27,6 +29,6 @@ private: uint8_t m_enabled; // keyboard enabled? }; -extern const device_type OCTOPUS_KEYBOARD; +DECLARE_DEVICE_TYPE(OCTOPUS_KEYBOARD, octopus_keyboard_device) -#endif // OCTO_KBD_H +#endif // MAME_MACHINE_OCTO_KBD_H diff --git a/src/mame/machine/ondra.cpp b/src/mame/machine/ondra.cpp index 7bced52ddb8..f4c17f16944 100644 --- a/src/mame/machine/ondra.cpp +++ b/src/mame/machine/ondra.cpp @@ -97,5 +97,6 @@ void ondra_state::machine_reset() void ondra_state::machine_start() { - machine().scheduler().timer_pulse(attotime::from_hz(10), timer_expired_delegate(FUNC(ondra_state::nmi_check_callback),this)); + m_nmi_check_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ondra_state::nmi_check_callback), this)); + m_nmi_check_timer->adjust(attotime::from_hz(10), 0, attotime::from_hz(10)); } diff --git a/src/mame/machine/opwolf.cpp b/src/mame/machine/opwolf.cpp index 30728cdbe61..ea96ed46616 100644 --- a/src/mame/machine/opwolf.cpp +++ b/src/mame/machine/opwolf.cpp @@ -1070,7 +1070,7 @@ TIMER_CALLBACK_MEMBER(opwolf_state::cchip_timer) { // Simulate time for command to execute (exact timing unknown, this is close) m_current_cmd = 0xf5; - timer_set(m_maincpu->cycles_to_attotime(80000), TIMER_OPWOLF); + m_opwolf_timer->adjust(m_maincpu->cycles_to_attotime(80000)); } m_cchip_last_7a = m_cchip_ram[0x7a]; diff --git a/src/mame/machine/pc1512kb.cpp b/src/mame/machine/pc1512kb.cpp index a39ed7ef0ae..9b806435ab9 100644 --- a/src/mame/machine/pc1512kb.cpp +++ b/src/mame/machine/pc1512kb.cpp @@ -23,7 +23,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type PC1512_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(PC1512_KEYBOARD, pc1512_keyboard_device, "pc1512kb", "Amstrad PC1512 Keyboard") //------------------------------------------------- @@ -40,32 +40,24 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const tiny_rom_entry *pc1512_keyboard_t::device_rom_region() const +const tiny_rom_entry *pc1512_keyboard_device::device_rom_region() const { return ROM_NAME( pc1512_keyboard ); } -//------------------------------------------------- -// ADDRESS_MAP( pc1512_keyboard_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( pc1512_keyboard_io, AS_IO, 8, pc1512_keyboard_t ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(kb_bus_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(kb_p2_r, kb_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(kb_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(kb_t1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( pc1512_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( pc1512_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_6MHz) - MCFG_CPU_IO_MAP(pc1512_keyboard_io) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(pc1512_keyboard_device, kb_bus_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(pc1512_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(pc1512_keyboard_device, kb_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pc1512_keyboard_device, kb_p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(pc1512_keyboard_device, kb_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(pc1512_keyboard_device, kb_t1_r)) MCFG_VCS_CONTROL_PORT_ADD("joy", vcs_control_port_devices, nullptr) MACHINE_CONFIG_END @@ -76,7 +68,7 @@ MACHINE_CONFIG_END // machine configurations //------------------------------------------------- -machine_config_constructor pc1512_keyboard_t::device_mconfig_additions() const +machine_config_constructor pc1512_keyboard_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( pc1512_keyboard ); } @@ -203,7 +195,7 @@ INPUT_PORTS_END // input_ports - device-specific input ports //------------------------------------------------- -ioport_constructor pc1512_keyboard_t::device_input_ports() const +ioport_constructor pc1512_keyboard_device::device_input_ports() const { return INPUT_PORTS_NAME( pc1512_keyboard ); } @@ -215,11 +207,11 @@ ioport_constructor pc1512_keyboard_t::device_input_ports() const //************************************************************************** //------------------------------------------------- -// pc1512_keyboard_t - constructor +// pc1512_keyboard_device - constructor //------------------------------------------------- -pc1512_keyboard_t::pc1512_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, PC1512_KEYBOARD, "Amstrad PC1512 Keyboard", tag, owner, clock, "pc1512kb", __FILE__), +pc1512_keyboard_device::pc1512_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, PC1512_KEYBOARD, tag, owner, clock), m_maincpu(*this, I8048_TAG), m_joy(*this, "joy"), m_y(*this, "Y%u", 1), @@ -239,7 +231,7 @@ pc1512_keyboard_t::pc1512_keyboard_t(const machine_config &mconfig, const char * // device_start - device-specific startup //------------------------------------------------- -void pc1512_keyboard_t::device_start() +void pc1512_keyboard_device::device_start() { // allocate timers m_reset_timer = timer_alloc(); @@ -262,7 +254,7 @@ void pc1512_keyboard_t::device_start() // device_reset - device-specific reset //------------------------------------------------- -void pc1512_keyboard_t::device_reset() +void pc1512_keyboard_device::device_reset() { m_maincpu->set_input_line(MCS48_INPUT_EA, CLEAR_LINE); } @@ -272,7 +264,7 @@ void pc1512_keyboard_t::device_reset() // device_timer - handler timer events //------------------------------------------------- -void pc1512_keyboard_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +void pc1512_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { if (!m_clock_in) { @@ -285,7 +277,7 @@ void pc1512_keyboard_t::device_timer(emu_timer &timer, device_timer_id id, int p // data_w - keyboard data input //------------------------------------------------- -WRITE_LINE_MEMBER( pc1512_keyboard_t::data_w ) +WRITE_LINE_MEMBER( pc1512_keyboard_device::data_w ) { m_data_in = state; } @@ -295,7 +287,7 @@ WRITE_LINE_MEMBER( pc1512_keyboard_t::data_w ) // clock_w - keyboard clock input //------------------------------------------------- -WRITE_LINE_MEMBER( pc1512_keyboard_t::clock_w ) +WRITE_LINE_MEMBER( pc1512_keyboard_device::clock_w ) { if (m_clock_in != state) { @@ -317,7 +309,7 @@ WRITE_LINE_MEMBER( pc1512_keyboard_t::clock_w ) // m1_w - mouse button 1 //------------------------------------------------- -WRITE_LINE_MEMBER( pc1512_keyboard_t::m1_w ) +WRITE_LINE_MEMBER( pc1512_keyboard_device::m1_w ) { m_m1 = state; } @@ -327,7 +319,7 @@ WRITE_LINE_MEMBER( pc1512_keyboard_t::m1_w ) // m2_w - mouse button 2 //------------------------------------------------- -WRITE_LINE_MEMBER( pc1512_keyboard_t::m2_w ) +WRITE_LINE_MEMBER( pc1512_keyboard_device::m2_w ) { m_m2 = state; } @@ -337,7 +329,7 @@ WRITE_LINE_MEMBER( pc1512_keyboard_t::m2_w ) // kb_bus_r - //------------------------------------------------- -READ8_MEMBER( pc1512_keyboard_t::kb_bus_r ) +READ8_MEMBER( pc1512_keyboard_device::kb_bus_r ) { /* @@ -380,7 +372,7 @@ READ8_MEMBER( pc1512_keyboard_t::kb_bus_r ) // kb_p1_w - //------------------------------------------------- -WRITE8_MEMBER( pc1512_keyboard_t::kb_p1_w ) +WRITE8_MEMBER( pc1512_keyboard_device::kb_p1_w ) { /* @@ -405,7 +397,7 @@ WRITE8_MEMBER( pc1512_keyboard_t::kb_p1_w ) // kb_p2_r - //------------------------------------------------- -READ8_MEMBER( pc1512_keyboard_t::kb_p2_r ) +READ8_MEMBER( pc1512_keyboard_device::kb_p2_r ) { /* @@ -435,7 +427,7 @@ READ8_MEMBER( pc1512_keyboard_t::kb_p2_r ) // kb_p2_w - //------------------------------------------------- -WRITE8_MEMBER( pc1512_keyboard_t::kb_p2_w ) +WRITE8_MEMBER( pc1512_keyboard_device::kb_p2_w ) { /* @@ -476,7 +468,7 @@ WRITE8_MEMBER( pc1512_keyboard_t::kb_p2_w ) // kb_t0_r - //------------------------------------------------- -READ8_MEMBER( pc1512_keyboard_t::kb_t0_r ) +READ_LINE_MEMBER( pc1512_keyboard_device::kb_t0_r ) { return m_m1; } @@ -486,7 +478,7 @@ READ8_MEMBER( pc1512_keyboard_t::kb_t0_r ) // kb_t1_r - //------------------------------------------------- -READ8_MEMBER( pc1512_keyboard_t::kb_t1_r ) +READ_LINE_MEMBER( pc1512_keyboard_device::kb_t1_r ) { return m_m2; } diff --git a/src/mame/machine/pc1512kb.h b/src/mame/machine/pc1512kb.h index 8f9865d1771..469c744d909 100644 --- a/src/mame/machine/pc1512kb.h +++ b/src/mame/machine/pc1512kb.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_PC1512KB_H +#define MAME_MACHINE_PC1512KB_H -#ifndef __PC1512_KEYBOARD__ -#define __PC1512_KEYBOARD__ +#pragma once #include "bus/vcs_ctrl/ctrl.h" @@ -30,10 +30,10 @@ //************************************************************************** #define MCFG_PC1512_KEYBOARD_CLOCK_CALLBACK(_write) \ - devcb = &pc1512_keyboard_t::set_clock_wr_callback(*device, DEVCB_##_write); + devcb = &pc1512_keyboard_device::set_clock_wr_callback(*device, DEVCB_##_write); #define MCFG_PC1512_KEYBOARD_DATA_CALLBACK(_write) \ - devcb = &pc1512_keyboard_t::set_data_wr_callback(*device, DEVCB_##_write); + devcb = &pc1512_keyboard_device::set_data_wr_callback(*device, DEVCB_##_write); @@ -41,16 +41,16 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> pc1512_keyboard_t +// ======================> pc1512_keyboard_device -class pc1512_keyboard_t : public device_t +class pc1512_keyboard_device : public device_t { public: // construction/destruction - pc1512_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + pc1512_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_clock_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_clock.set_callback(object); } - template static devcb_base &set_data_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_data.set_callback(object); } + template static devcb_base &set_clock_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_clock.set_callback(std::forward(cb)); } + template static devcb_base &set_data_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_data.set_callback(std::forward(cb)); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -66,8 +66,8 @@ public: DECLARE_WRITE8_MEMBER( kb_p1_w ); DECLARE_READ8_MEMBER( kb_p2_r ); DECLARE_WRITE8_MEMBER( kb_p2_w ); - DECLARE_READ8_MEMBER( kb_t0_r ); - DECLARE_READ8_MEMBER( kb_t1_r ); + DECLARE_READ_LINE_MEMBER( kb_t0_r ); + DECLARE_READ_LINE_MEMBER( kb_t1_r ); protected: // device-level overrides @@ -102,8 +102,7 @@ private: // device type definition -extern const device_type PC1512_KEYBOARD; - +DECLARE_DEVICE_TYPE(PC1512_KEYBOARD, pc1512_keyboard_device) -#endif +#endif // MAME_MACHINE_PC1512KB_H diff --git a/src/mame/machine/pc9801_118.cpp b/src/mame/machine/pc9801_118.cpp index 3fdd6dd0e06..2d2b9a015cd 100644 --- a/src/mame/machine/pc9801_118.cpp +++ b/src/mame/machine/pc9801_118.cpp @@ -27,7 +27,7 @@ //************************************************************************** // device type definition -const device_type PC9801_118 = device_creator; +DEFINE_DEVICE_TYPE(PC9801_118, pc9801_118_device, "pc9801_118", "pc9801_118") READ8_MEMBER(pc9801_118_device::opn_porta_r) @@ -121,7 +121,7 @@ const tiny_rom_entry *pc9801_118_device::device_rom_region() const //------------------------------------------------- pc9801_118_device::pc9801_118_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PC9801_118, "pc9801_118", tag, owner, clock, "pc9801_118", __FILE__), + : device_t(mconfig, PC9801_118, tag, owner, clock), // m_maincpu(*this, "^maincpu"), m_opn3(*this, "opn3") { diff --git a/src/mame/machine/pc9801_118.h b/src/mame/machine/pc9801_118.h index 87bc44cb7db..ea6d0397cb0 100644 --- a/src/mame/machine/pc9801_118.h +++ b/src/mame/machine/pc9801_118.h @@ -6,11 +6,11 @@ ***************************************************************************/ +#ifndef MAME_MACHINE_PC9801_118_H +#define MAME_MACHINE_PC9801_118_H #pragma once -#ifndef __PC9801_118DEV_H__ -#define __PC9801_118DEV_H__ #include "machine/pic8259.h" #include "sound/2608intf.h" @@ -40,9 +40,8 @@ public: DECLARE_WRITE8_MEMBER(pc9801_118_ext_w); DECLARE_WRITE_LINE_MEMBER(pc9801_sound_irq); -// required_device m_maincpu; - required_device m_opn3; virtual const tiny_rom_entry *device_rom_region() const override; + protected: // device-level overrides virtual void device_validity_check(validity_checker &valid) const override; @@ -51,13 +50,16 @@ protected: void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); private: +// required_device m_maincpu; + required_device m_opn3; + uint8_t m_joy_sel; uint8_t m_ext_reg; }; // device type definition -extern const device_type PC9801_118; +DECLARE_DEVICE_TYPE(PC9801_118, pc9801_118_device) @@ -67,4 +69,4 @@ extern const device_type PC9801_118; -#endif +#endif // MAME_MACHINE_PC9801_118_H diff --git a/src/mame/machine/pc9801_26.cpp b/src/mame/machine/pc9801_26.cpp index 29b65d10b96..5992a2daa7e 100644 --- a/src/mame/machine/pc9801_26.cpp +++ b/src/mame/machine/pc9801_26.cpp @@ -26,7 +26,7 @@ //************************************************************************** // device type definition -const device_type PC9801_26 = device_creator; +DEFINE_DEVICE_TYPE(PC9801_26, pc9801_26_device, "pc9801_26", "pc9801_26") @@ -113,7 +113,7 @@ ioport_constructor pc9801_26_device::device_input_ports() const //------------------------------------------------- pc9801_26_device::pc9801_26_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PC9801_26, "pc9801_26", tag, owner, clock, "pc9801_26", __FILE__), + : device_t(mconfig, PC9801_26, tag, owner, clock), // m_maincpu(*this, "^maincpu"), m_opn(*this, "opn") { diff --git a/src/mame/machine/pc9801_26.h b/src/mame/machine/pc9801_26.h index 4239891c7f2..1aa42a013e9 100644 --- a/src/mame/machine/pc9801_26.h +++ b/src/mame/machine/pc9801_26.h @@ -6,11 +6,11 @@ Template for skeleton device ***************************************************************************/ +#ifndef MAME_MACHINE_PC9801_26_H +#define MAME_MACHINE_PC9801_26_H #pragma once -#ifndef __PC9801_26DEV_H__ -#define __PC9801_26DEV_H__ #include "machine/pic8259.h" #include "sound/2203intf.h" @@ -38,8 +38,6 @@ public: DECLARE_WRITE8_MEMBER(pc9801_26_w); DECLARE_WRITE_LINE_MEMBER(pc9801_sound_irq); -// required_device m_maincpu; - required_device m_opn; protected: // device-level overrides virtual void device_validity_check(validity_checker &valid) const override; @@ -48,13 +46,15 @@ protected: void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); private: - uint8_t m_joy_sel; +// required_device m_maincpu; + required_device m_opn; + uint8_t m_joy_sel; }; // device type definition -extern const device_type PC9801_26; +DECLARE_DEVICE_TYPE(PC9801_26, pc9801_26_device) @@ -64,4 +64,4 @@ extern const device_type PC9801_26; -#endif +#endif // MAME_MACHINE_PC9801_26_H diff --git a/src/mame/machine/pc9801_86.cpp b/src/mame/machine/pc9801_86.cpp index 15899b1029d..f94b6476c4b 100644 --- a/src/mame/machine/pc9801_86.cpp +++ b/src/mame/machine/pc9801_86.cpp @@ -28,7 +28,7 @@ //************************************************************************** // device type definition -const device_type PC9801_86 = device_creator; +DEFINE_DEVICE_TYPE(PC9801_86, pc9801_86_device, "pc9801_86", "pc9801_86") READ8_MEMBER(pc9801_86_device::opn_porta_r) @@ -129,7 +129,7 @@ ioport_constructor pc9801_86_device::device_input_ports() const //------------------------------------------------- pc9801_86_device::pc9801_86_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PC9801_86, "pc9801_86", tag, owner, clock, "pc9801_86", __FILE__), + : device_t(mconfig, PC9801_86, tag, owner, clock), m_opna(*this, "opna"), m_ldac(*this, "ldac"), m_rdac(*this, "rdac"), diff --git a/src/mame/machine/pc9801_86.h b/src/mame/machine/pc9801_86.h index 0e99f90fc10..eb022a8a92d 100644 --- a/src/mame/machine/pc9801_86.h +++ b/src/mame/machine/pc9801_86.h @@ -6,11 +6,11 @@ ***************************************************************************/ +#ifndef MAME_MACHINE_PC9801_86_H +#define MAME_MACHINE_PC9801_86_H #pragma once -#ifndef __PC9801_86DEV_H__ -#define __PC9801_86DEV_H__ #include "machine/pic8259.h" #include "sound/2608intf.h" @@ -66,7 +66,7 @@ private: // device type definition -extern const device_type PC9801_86; +DECLARE_DEVICE_TYPE(PC9801_86, pc9801_86_device) @@ -76,4 +76,4 @@ extern const device_type PC9801_86; -#endif +#endif // MAME_MACHINE_PC9801_86_H diff --git a/src/mame/machine/pc9801_cbus.cpp b/src/mame/machine/pc9801_cbus.cpp index ec3b0df3eb0..06af21561d3 100644 --- a/src/mame/machine/pc9801_cbus.cpp +++ b/src/mame/machine/pc9801_cbus.cpp @@ -15,7 +15,7 @@ // GLOBAL VARIABLES //************************************************************************** -const device_type PC9801CBUS_SLOT = device_creator; +DEFINE_DEVICE_TYPE(PC9801CBUS_SLOT, pc9801_slot_device, "pc9801_slot", "PC-9801 sound cbus slot") @@ -53,8 +53,8 @@ device_pc9801cbus_card_interface::~device_pc9801cbus_card_interface() //------------------------------------------------- pc9801_slot_device::pc9801_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, PC9801CBUS_SLOT, "PC-9801 sound cbus slot", tag, owner, clock, "pc9801_slot", __FILE__), - device_slot_interface(mconfig, *this) + device_t(mconfig, PC9801CBUS_SLOT, tag, owner, clock), + device_slot_interface(mconfig, *this) { } diff --git a/src/mame/machine/pc9801_cbus.h b/src/mame/machine/pc9801_cbus.h index b3d8b85c142..1b1084d8961 100644 --- a/src/mame/machine/pc9801_cbus.h +++ b/src/mame/machine/pc9801_cbus.h @@ -4,11 +4,11 @@ **********************************************************************/ +#ifndef MAME_MACHINE_PC9801_CBUS_H +#define MAME_MACHINE_PC9801_CBUS_H #pragma once -#ifndef __PC9801_SLOTCBUS__ -#define __PC9801_SLOTCBUS__ @@ -52,13 +52,13 @@ public: // ======================> pc9801_slot_device -class pc9801_slot_device : public device_t, - public device_slot_interface +class pc9801_slot_device : public device_t, public device_slot_interface { public: // construction/destruction pc9801_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // device-level overrides virtual void device_start() override; virtual void device_config_complete() override; @@ -69,8 +69,6 @@ public: // device type definition -extern const device_type PC9801CBUS_SLOT; +DECLARE_DEVICE_TYPE(PC9801CBUS_SLOT, pc9801_slot_device) - - -#endif +#endif // MAME_MACHINE_PC9801_CBUS_H diff --git a/src/mame/machine/pc9801_cd.cpp b/src/mame/machine/pc9801_cd.cpp index a8ec66ac672..46368ddfcc9 100644 --- a/src/mame/machine/pc9801_cd.cpp +++ b/src/mame/machine/pc9801_cd.cpp @@ -4,10 +4,10 @@ #include "pc9801_cd.h" // device type definition -const device_type PC9801_CD = device_creator; +DEFINE_DEVICE_TYPE(PC9801_CD, pc9801_cd_device, "pc9801_cd", "PC9801 CD-ROM Drive") pc9801_cd_device::pc9801_cd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - atapi_cdrom_device(mconfig, PC9801_CD, "PC9801 CD-ROM Drive", tag, owner, clock, "pc9801_cd", __FILE__) + atapi_cdrom_device(mconfig, PC9801_CD, tag, owner, clock) { } diff --git a/src/mame/machine/pc9801_cd.h b/src/mame/machine/pc9801_cd.h index 5fdc19eaf21..9abee3a8092 100644 --- a/src/mame/machine/pc9801_cd.h +++ b/src/mame/machine/pc9801_cd.h @@ -1,8 +1,8 @@ // license:BSD-3-Clause // copyright-holders:smf -#ifndef __PC9801_CD_H__ -#define __PC9801_CD_H__ +#ifndef MAME_MACHINE_PC9801_CD_H +#define MAME_MACHINE_PC9801_CD_H #include "machine/atapicdr.h" @@ -18,6 +18,6 @@ protected: }; // device type definition -extern const device_type PC9801_CD; +DECLARE_DEVICE_TYPE(PC9801_CD, pc9801_cd_device) -#endif +#endif // MAME_MACHINE_PC9801_CD_H diff --git a/src/mame/machine/pc9801_kbd.cpp b/src/mame/machine/pc9801_kbd.cpp index d7e01fc887a..2788453358d 100644 --- a/src/mame/machine/pc9801_kbd.cpp +++ b/src/mame/machine/pc9801_kbd.cpp @@ -24,7 +24,7 @@ //************************************************************************** // device type definition -const device_type PC9801_KBD = device_creator; +DEFINE_DEVICE_TYPE(PC9801_KBD, pc9801_kbd_device, "pc9801_kbd", "PC-9801 Keyboard") //************************************************************************** @@ -36,7 +36,7 @@ const device_type PC9801_KBD = device_creator; //------------------------------------------------- pc9801_kbd_device::pc9801_kbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, PC9801_KBD, "pc9801_kbd", tag, owner, clock, "pc9801_kbd_", __FILE__), + device_t(mconfig, PC9801_KBD, tag, owner, clock), m_write_irq(*this) { } diff --git a/src/mame/machine/pc9801_kbd.h b/src/mame/machine/pc9801_kbd.h index 547dca96f64..a5b6912c1cc 100644 --- a/src/mame/machine/pc9801_kbd.h +++ b/src/mame/machine/pc9801_kbd.h @@ -5,11 +5,11 @@ PC-9801 Keyboard simulation ***************************************************************************/ +#ifndef MAME_MACHINE_PC9801_KBD_H +#define MAME_MACHINE_PC9801_KBD_H #pragma once -#ifndef __PC9801_KBDDEV_H__ -#define __PC9801_KBDDEV_H__ //************************************************************************** @@ -32,7 +32,7 @@ public: // construction/destruction pc9801_kbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_irq.set_callback(object); } + template static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_irq.set_callback(std::forward(cb)); } virtual ioport_constructor device_input_ports() const override; @@ -60,7 +60,7 @@ protected: // device type definition -extern const device_type PC9801_KBD; +DECLARE_DEVICE_TYPE(PC9801_KBD, pc9801_kbd_device) @@ -70,4 +70,4 @@ extern const device_type PC9801_KBD; -#endif +#endif // MAME_MACHINE_PC9801_KBD_H diff --git a/src/mame/machine/pcd_kbd.cpp b/src/mame/machine/pcd_kbd.cpp index ed6f8c84582..41e1152e3e7 100644 --- a/src/mame/machine/pcd_kbd.cpp +++ b/src/mame/machine/pcd_kbd.cpp @@ -7,7 +7,7 @@ #include "sound/spkrdev.h" #include "speaker.h" -const device_type PCD_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(PCD_KEYBOARD, pcd_keyboard_device, "pcd_kbd", "Siemens PC-D Keyboard") ROM_START( pcd_keyboard ) ROM_REGION(0x1000, "mcu", 0) @@ -26,16 +26,13 @@ static ADDRESS_MAP_START( pcd_keyboard_map, AS_PROGRAM, 8, pcd_keyboard_device ) AM_RANGE(0x000, 0xfff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( pcd_keyboard_io, AS_IO, 8, pcd_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(bus_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( pcd_keyboard ) MCFG_CPU_ADD("mcu", I8035, 5760000*2) // FIXME: the mc2661 baud rate calculation MCFG_CPU_PROGRAM_MAP(pcd_keyboard_map) - MCFG_CPU_IO_MAP(pcd_keyboard_io) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(pcd_keyboard_device, bus_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(pcd_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(pcd_keyboard_device, p1_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(pcd_keyboard_device, t0_r)) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") @@ -227,7 +224,7 @@ ioport_constructor pcd_keyboard_device::device_input_ports() const } pcd_keyboard_device::pcd_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PCD_KEYBOARD, "PC-D Keyboard", tag, owner, clock, "pcd_kbd", __FILE__) + : device_t(mconfig, PCD_KEYBOARD, tag, owner, clock) , m_rows(*this, "ROW.%u", 0) , m_p1(0) , m_out_tx_handler(*this) @@ -258,7 +255,7 @@ WRITE8_MEMBER( pcd_keyboard_device::p1_w ) m_out_tx_handler(BIT(data, 5)); } -READ8_MEMBER( pcd_keyboard_device::t0_r ) +READ_LINE_MEMBER( pcd_keyboard_device::t0_r ) { return m_t0; } diff --git a/src/mame/machine/pcd_kbd.h b/src/mame/machine/pcd_kbd.h index b899fab91d6..de373132a6b 100644 --- a/src/mame/machine/pcd_kbd.h +++ b/src/mame/machine/pcd_kbd.h @@ -3,6 +3,8 @@ #ifndef MAME_INCLUDES_PCD_KBD_H #define MAME_INCLUDES_PCD_KBD_H +#pragma once + #define MCFG_PCD_KEYBOARD_OUT_TX_HANDLER(_devcb) \ devcb = &pcd_keyboard_device::set_out_tx_handler(*device, DEVCB_##_devcb); @@ -22,8 +24,9 @@ public: DECLARE_READ8_MEMBER( bus_r ); DECLARE_READ8_MEMBER( p1_r ); DECLARE_WRITE8_MEMBER( p1_w ); - DECLARE_READ8_MEMBER( t0_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); DECLARE_WRITE_LINE_MEMBER( t0_w ); + private: required_ioport_array<17> m_rows; uint8_t m_p1; @@ -32,5 +35,6 @@ private: }; extern const device_type PCD_KEYBOARD; +DECLARE_DEVICE_TYPE(PCD_KEYBOARD, pcd_keyboard_device) #endif // MAME_INCLUDES_PCD_KBD_H diff --git a/src/mame/machine/pce220_ser.cpp b/src/mame/machine/pce220_ser.cpp index 4d233fdda5b..a6459ebac6c 100644 --- a/src/mame/machine/pce220_ser.cpp +++ b/src/mame/machine/pce220_ser.cpp @@ -37,15 +37,15 @@ enum }; // device type definition -const device_type PCE220SERIAL = device_creator; +DEFINE_DEVICE_TYPE(PCE220SERIAL, pce220_serial_device, "pce220_serial", "Sharp PC-E220 serial") //------------------------------------------------- // pce220_serial_device - constructor //------------------------------------------------- pce220_serial_device::pce220_serial_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PCE220SERIAL, "Sharp PC-E220 serial", tag, owner, clock, "pce220_serial", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, PCE220SERIAL, tag, owner, clock) + , device_image_interface(mconfig, *this) { } diff --git a/src/mame/machine/pce220_ser.h b/src/mame/machine/pce220_ser.h index 73ed3babd28..f8ff2257e58 100644 --- a/src/mame/machine/pce220_ser.h +++ b/src/mame/machine/pce220_ser.h @@ -8,8 +8,10 @@ ****************************************************************************/ -#ifndef __PCE220_SER_H__ -#define __PCE220_SER_H__ +#ifndef MAME_MACHINE_PCE220_SER_H +#define MAME_MACHINE_PCE220_SER_H + +#pragma once /*************************************************************************** @@ -80,7 +82,7 @@ private: }; // device type definition -extern const device_type PCE220SERIAL; +DECLARE_DEVICE_TYPE(PCE220SERIAL, pce220_serial_device) /*************************************************************************** DEVICE CONFIGURATION MACROS @@ -89,4 +91,5 @@ extern const device_type PCE220SERIAL; #define MCFG_PCE220_SERIAL_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, PCE220SERIAL, 0) -#endif /* __PCE220_SER_H__ */ + +#endif // MAME_MACHINE_PCE220_SER_H diff --git a/src/mame/machine/pce_cd.cpp b/src/mame/machine/pce_cd.cpp index a3919312903..8226802c2b3 100644 --- a/src/mame/machine/pce_cd.cpp +++ b/src/mame/machine/pce_cd.cpp @@ -75,16 +75,16 @@ CD Interface Register 0x0f - ADPCM fade in/out register #define PCE_CD_CLOCK 9216000 -const device_type PCE_CD = device_creator; +DEFINE_DEVICE_TYPE(PCE_CD, pce_cd_device, "pcecd", "PCE CD Add-on") pce_cd_device::pce_cd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PCE_CD, "PCE CD Add-on", tag, owner, clock, "pcecd", __FILE__), - m_maincpu(*this, ":maincpu"), - m_msm(*this, "msm5205"), - m_cdda(*this, "cdda"), - m_nvram(*this, "bram"), - m_cdrom(*this, "cdrom") + : device_t(mconfig, PCE_CD, tag, owner, clock) + , m_maincpu(*this, ":maincpu") + , m_msm(*this, "msm5205") + , m_cdda(*this, "cdda") + , m_nvram(*this, "bram") + , m_cdrom(*this, "cdrom") { } @@ -249,7 +249,7 @@ static MACHINE_CONFIG_FRAGMENT( pce_cd ) MCFG_SOUND_ADD( "msm5205", MSM5205, PCE_CD_CLOCK / 6 ) MCFG_MSM5205_VCLK_CB(WRITELINE(pce_cd_device, msm5205_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 1/48 prescaler, 4bit data */ + MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 1/48 prescaler, 4bit data */ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "^:lspeaker", 0.50 ) MCFG_SOUND_ROUTE( ALL_OUTPUTS, "^:rspeaker", 0.50 ) diff --git a/src/mame/machine/pce_cd.h b/src/mame/machine/pce_cd.h index 504dacc2b36..dba5682b082 100644 --- a/src/mame/machine/pce_cd.h +++ b/src/mame/machine/pce_cd.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol -#ifndef __PCE_CD_H -#define __PCE_CD_H +#ifndef MAME_MACHINE_PCE_CD_H +#define MAME_MACHINE_PCE_CD_H + +#pragma once /*************************************************************************** TYPE DEFINITIONS @@ -43,7 +45,6 @@ class pce_cd_device : public device_t public: // construction/destruction pce_cd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual ~pce_cd_device() {} // device-level overrides virtual void device_start() override; @@ -174,7 +175,7 @@ private: // device type definition -extern const device_type PCE_CD; +DECLARE_DEVICE_TYPE(PCE_CD, pce_cd_device) /*************************************************************************** @@ -185,4 +186,4 @@ extern const device_type PCE_CD; MCFG_DEVICE_ADD(_tag, PCE_CD, 0) -#endif +#endif // MAME_MACHINE_PCE_CD_H diff --git a/src/mame/machine/pecom.cpp b/src/mame/machine/pecom.cpp index 894eed534bd..ba2bc89a032 100644 --- a/src/mame/machine/pecom.cpp +++ b/src/mame/machine/pecom.cpp @@ -108,7 +108,7 @@ READ8_MEMBER(pecom_state::pecom_keyboard_r) Address is available on address bus during reading of value from port, and that is used to determine keyboard line reading */ - uint16_t addr = m_cdp1802->state_int(COSMAC_R0 + m_cdp1802->state_int(COSMAC_X)); + uint16_t addr = m_cdp1802->state_int(cosmac_device::COSMAC_R0 + m_cdp1802->state_int(cosmac_device::COSMAC_X)); /* just in case somone is reading non existing ports */ if (addr<0x7cca || addr>0x7ce3) return 0; return m_io_ports[addr - 0x7cca]->read() & 0x03; diff --git a/src/mame/machine/pgmprot_igs025_igs012.cpp b/src/mame/machine/pgmprot_igs025_igs012.cpp index 5a410899d93..fa965163b1b 100644 --- a/src/mame/machine/pgmprot_igs025_igs012.cpp +++ b/src/mame/machine/pgmprot_igs025_igs012.cpp @@ -132,7 +132,7 @@ static ADDRESS_MAP_START( drgw2_mem, AS_PROGRAM, 16, pgm_012_025_state ) AM_RANGE(0xd00000, 0xd00fff) AM_NOP // Written, but never read back? Related to the protection device? - IGS012? ADDRESS_MAP_END -MACHINE_CONFIG_START( pgm_012_025_drgw2, pgm_012_025_state ) +MACHINE_CONFIG_START( pgm_012_025_drgw2 ) MCFG_FRAGMENT_ADD(pgmbase) MCFG_CPU_MODIFY("maincpu") diff --git a/src/mame/machine/pgmprot_igs025_igs022.cpp b/src/mame/machine/pgmprot_igs025_igs022.cpp index 403f8ee35a2..fad7d6a4c0e 100644 --- a/src/mame/machine/pgmprot_igs025_igs022.cpp +++ b/src/mame/machine/pgmprot_igs025_igs022.cpp @@ -374,7 +374,7 @@ static ADDRESS_MAP_START( killbld_mem, AS_PROGRAM, 16, pgm_022_025_state ) ADDRESS_MAP_END -MACHINE_CONFIG_START( pgm_022_025, pgm_022_025_state ) +MACHINE_CONFIG_START( pgm_022_025 ) MCFG_FRAGMENT_ADD(pgmbase) MCFG_CPU_MODIFY("maincpu") diff --git a/src/mame/machine/pgmprot_igs025_igs028.cpp b/src/mame/machine/pgmprot_igs025_igs028.cpp index 84fcfbe731e..1f679289299 100644 --- a/src/mame/machine/pgmprot_igs025_igs028.cpp +++ b/src/mame/machine/pgmprot_igs025_igs028.cpp @@ -185,7 +185,7 @@ void pgm_028_025_state::igs025_to_igs028_callback( void ) } -MACHINE_CONFIG_START( pgm_028_025_ol, pgm_028_025_state ) +MACHINE_CONFIG_START( pgm_028_025_ol ) MCFG_FRAGMENT_ADD(pgmbase) MCFG_CPU_MODIFY("maincpu") diff --git a/src/mame/machine/pgmprot_igs027a_type1.cpp b/src/mame/machine/pgmprot_igs027a_type1.cpp index 51cb33039d3..adfa59a023f 100644 --- a/src/mame/machine/pgmprot_igs027a_type1.cpp +++ b/src/mame/machine/pgmprot_igs027a_type1.cpp @@ -211,7 +211,7 @@ MACHINE_START_MEMBER(pgm_arm_type1_state,pgm_arm_type1) save_item(NAME(m_slots)); } -MACHINE_CONFIG_START( pgm_arm_type1_cave, pgm_arm_type1_state ) +MACHINE_CONFIG_START( pgm_arm_type1_cave ) MCFG_FRAGMENT_ADD(pgmbase) MCFG_CPU_MODIFY("maincpu") diff --git a/src/mame/machine/pgmprot_igs027a_type2.cpp b/src/mame/machine/pgmprot_igs027a_type2.cpp index 7f7e72565e2..b172cf07eaa 100644 --- a/src/mame/machine/pgmprot_igs027a_type2.cpp +++ b/src/mame/machine/pgmprot_igs027a_type2.cpp @@ -130,7 +130,7 @@ MACHINE_START_MEMBER(pgm_arm_type2_state,pgm_arm_type2) /******* ARM 55857F *******/ -MACHINE_CONFIG_START( pgm_arm_type2, pgm_arm_type2_state ) +MACHINE_CONFIG_START( pgm_arm_type2 ) MCFG_FRAGMENT_ADD(pgmbase) MCFG_MACHINE_START_OVERRIDE(pgm_arm_type2_state, pgm_arm_type2 ) diff --git a/src/mame/machine/pgmprot_igs027a_type3.cpp b/src/mame/machine/pgmprot_igs027a_type3.cpp index 0aab879fc9b..9bfcbded9d9 100644 --- a/src/mame/machine/pgmprot_igs027a_type3.cpp +++ b/src/mame/machine/pgmprot_igs027a_type3.cpp @@ -188,7 +188,7 @@ MACHINE_START_MEMBER(pgm_arm_type3_state,pgm_arm_type3) /******* ARM 55857G *******/ -MACHINE_CONFIG_START( pgm_arm_type3, pgm_arm_type3_state ) +MACHINE_CONFIG_START( pgm_arm_type3 ) MCFG_FRAGMENT_ADD(pgmbase) MCFG_MACHINE_START_OVERRIDE(pgm_arm_type3_state, pgm_arm_type3 ) diff --git a/src/mame/machine/pgmprot_orlegend.cpp b/src/mame/machine/pgmprot_orlegend.cpp index 13efe757335..9f6d6aa5aff 100644 --- a/src/mame/machine/pgmprot_orlegend.cpp +++ b/src/mame/machine/pgmprot_orlegend.cpp @@ -220,6 +220,6 @@ INPUT_PORTS_START( orlegendk ) INPUT_PORTS_END -MACHINE_CONFIG_START( pgm_asic3, pgm_asic3_state ) +MACHINE_CONFIG_START( pgm_asic3 ) MCFG_FRAGMENT_ADD(pgmbase) MACHINE_CONFIG_END diff --git a/src/mame/machine/playch10.cpp b/src/mame/machine/playch10.cpp index c6ef69d0149..aec05bfadb3 100644 --- a/src/mame/machine/playch10.cpp +++ b/src/mame/machine/playch10.cpp @@ -752,7 +752,7 @@ DRIVER_INIT_MEMBER(playch10_state,pceboard) machine().device("cart")->memory().space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::eboard_rom_switch_w),this)); /* ppu_latch callback */ - m_ppu->set_latch(ppu2c0x_latch_delegate(FUNC(playch10_state::mapper9_latch),this)); + m_ppu->set_latch(ppu2c0x_device::latch_delegate(FUNC(playch10_state::mapper9_latch),this)); /* nvram at $6000-$6fff */ machine().device("cart")->memory().space(AS_PROGRAM).install_ram(0x6000, 0x6fff); @@ -804,7 +804,7 @@ DRIVER_INIT_MEMBER(playch10_state,pcfboard_2) void playch10_state::gboard_scanline_cb( int scanline, int vblank, int blanked ) { - if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE) + if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE) { int priorCount = m_IRQ_count; if (m_IRQ_count == 0) @@ -979,7 +979,7 @@ DRIVER_INIT_MEMBER(playch10_state,pcgboard) /* common init */ DRIVER_INIT_CALL(playch10); - m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(playch10_state::gboard_scanline_cb),this)); + m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(playch10_state::gboard_scanline_cb),this)); } DRIVER_INIT_MEMBER(playch10_state,pcgboard_type2) @@ -1099,7 +1099,7 @@ DRIVER_INIT_MEMBER(playch10_state,pchboard) /* common init */ DRIVER_INIT_CALL(playch10); - m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(playch10_state::gboard_scanline_cb),this)); + m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(playch10_state::gboard_scanline_cb),this)); } /**********************************************************************************/ diff --git a/src/mame/machine/poly88.cpp b/src/mame/machine/poly88.cpp index 11a8ed5de3e..579f478a45a 100644 --- a/src/mame/machine/poly88.cpp +++ b/src/mame/machine/poly88.cpp @@ -302,7 +302,7 @@ SNAPSHOT_LOAD_MEMBER( poly88_state, poly88 ) break; case 3 : /* 03 Auto Start @ Address */ - m_maincpu->set_state_int(I8085_PC, address); + m_maincpu->set_state_int(i8080_cpu_device::I8085_PC, address); theend = 1; break; case 4 : diff --git a/src/mame/machine/prof80mmu.cpp b/src/mame/machine/prof80mmu.cpp index a89ed51af15..e46479cd43b 100644 --- a/src/mame/machine/prof80mmu.cpp +++ b/src/mame/machine/prof80mmu.cpp @@ -15,7 +15,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type PROF80_MMU = device_creator; +DEFINE_DEVICE_TYPE(PROF80_MMU, prof80_mmu_device, "prof80_mmu", "PROF80 MMU") DEVICE_ADDRESS_MAP_START( z80_program_map, 8, prof80_mmu_device ) @@ -36,9 +36,9 @@ ADDRESS_MAP_END //------------------------------------------------- prof80_mmu_device::prof80_mmu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PROF80_MMU, "PROF80_MMU", tag, owner, clock, "prof80_mmu", __FILE__), - device_memory_interface(mconfig, *this), - m_program_space_config("program", ENDIANNESS_LITTLE, 8, 20, 0, *ADDRESS_MAP_NAME(program_map)) + : device_t(mconfig, PROF80_MMU, tag, owner, clock) + , device_memory_interface(mconfig, *this) + , m_program_space_config("program", ENDIANNESS_LITTLE, 8, 20, 0, *ADDRESS_MAP_NAME(program_map)) { } diff --git a/src/mame/machine/prof80mmu.h b/src/mame/machine/prof80mmu.h index f6694ac7a1f..0df2a19d553 100644 --- a/src/mame/machine/prof80mmu.h +++ b/src/mame/machine/prof80mmu.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_PROF80MMU_H +#define MAME_MACHINE_PROF80MMU_H -#ifndef __PROF80_MMU__ -#define __PROF80_MMU__ +#pragma once @@ -30,8 +30,7 @@ // ======================> prof80_mmu_device -class prof80_mmu_device : public device_t, - public device_memory_interface +class prof80_mmu_device : public device_t, public device_memory_interface { public: prof80_mmu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -60,8 +59,8 @@ private: // device type definition -extern const device_type PROF80_MMU; +DECLARE_DEVICE_TYPE(PROF80_MMU, prof80_mmu_device) -#endif +#endif // MAME_MACHINE_PROF80MMU_H diff --git a/src/mame/machine/psion_pack.cpp b/src/mame/machine/psion_pack.cpp index a6e91766cd4..498ceeaf85c 100644 --- a/src/mame/machine/psion_pack.cpp +++ b/src/mame/machine/psion_pack.cpp @@ -54,15 +54,15 @@ static const char *datapack_option_spec = // device type definition -const device_type PSION_DATAPACK = device_creator; +DEFINE_DEVICE_TYPE(PSION_DATAPACK, datapack_device, "datapack", "Psion Datapack") //------------------------------------------------- // datapack_device - constructor //------------------------------------------------- datapack_device::datapack_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PSION_DATAPACK, "Psion Datapack", tag, owner, clock, "datapack", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, PSION_DATAPACK, tag, owner, clock) + , device_image_interface(mconfig, *this) { } diff --git a/src/mame/machine/psion_pack.h b/src/mame/machine/psion_pack.h index 24516a93341..13584013754 100644 --- a/src/mame/machine/psion_pack.h +++ b/src/mame/machine/psion_pack.h @@ -6,8 +6,8 @@ ****************************************************************************/ -#ifndef __PSION_PACK_H__ -#define __PSION_PACK_H__ +#ifndef MAME_MACHINE_PSION_PACK_H +#define MAME_MACHINE_PSION_PACK_H #include "softlist_dev.h" @@ -69,7 +69,7 @@ private: // device type definition -extern const device_type PSION_DATAPACK; +DECLARE_DEVICE_TYPE(PSION_DATAPACK, datapack_device) /*************************************************************************** @@ -78,4 +78,5 @@ extern const device_type PSION_DATAPACK; #define MCFG_PSION_DATAPACK_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, PSION_DATAPACK, 0) -#endif /* __PSION_PACK_H__ */ + +#endif // MAME_MACHINE_PSION_PACK_H diff --git a/src/mame/machine/psxcd.cpp b/src/mame/machine/psxcd.cpp index f1b4a3fd0c5..f3f1a1cb5e3 100644 --- a/src/mame/machine/psxcd.cpp +++ b/src/mame/machine/psxcd.cpp @@ -83,10 +83,10 @@ enum submode_flags // DEVICE DEFINITIONS //************************************************************************** -const device_type PSXCD = device_creator; +DEFINE_DEVICE_TYPE(PSXCD, psxcd_device, "psx_cd", "PSX CD-ROM") psxcd_device::psxcd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - cdrom_image_device(mconfig, PSXCD, "PSX Cdrom", tag, owner, clock, "psx_cd", __FILE__), + cdrom_image_device(mconfig, PSXCD, tag, owner, clock), m_irq_handler(*this) { static_set_interface(*this, "psx_cdrom"); diff --git a/src/mame/machine/psxcd.h b/src/mame/machine/psxcd.h index 509817eab1e..b1cc0e5966a 100644 --- a/src/mame/machine/psxcd.h +++ b/src/mame/machine/psxcd.h @@ -1,13 +1,13 @@ // license:BSD-3-Clause // copyright-holders:smf,R. Belmont,pSXAuthor,Carl -#ifndef _included_psxcdrom_ -#define _included_psxcdrom_ +#ifndef MAME_MACHINE_PSXCD_H +#define MAME_MACHINE_PSXCD_H + +#pragma once #include "imagedev/chd_cd.h" #include "sound/spu.h" -#define MAX_PSXCD_TIMERS (4) - //************************************************************************** // INTERFACE CONFIGURATION MACROS //************************************************************************** @@ -24,7 +24,7 @@ public: psxcd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast(device).m_irq_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } virtual image_init_result call_load() override; virtual void call_unload() override; @@ -40,6 +40,8 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: + static constexpr unsigned MAX_PSXCD_TIMERS = 4; + void write_command(uint8_t byte); typedef void (psxcd_device::*cdcmd)(); @@ -156,6 +158,6 @@ private: }; // device type definition -extern const device_type PSXCD; +DECLARE_DEVICE_TYPE(PSXCD, psxcd_device) -#endif +#endif // MAME_MACHINE_PSXCD_H diff --git a/src/mame/machine/qimi.cpp b/src/mame/machine/qimi.cpp index c698f3d587f..00bbc5fc209 100644 --- a/src/mame/machine/qimi.cpp +++ b/src/mame/machine/qimi.cpp @@ -15,14 +15,14 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type QIMI = device_creator; +DEFINE_DEVICE_TYPE(QIMI, qimi_device, "qimi", "QL Internal Mouse Interface") //------------------------------------------------- // INPUT_CHANGED_MEMBER( mouse_x_changed ) //------------------------------------------------- -INPUT_CHANGED_MEMBER( qimi_t::mouse_x_changed ) +INPUT_CHANGED_MEMBER( qimi_device::mouse_x_changed ) { if (newval > oldval) { @@ -46,7 +46,7 @@ INPUT_CHANGED_MEMBER( qimi_t::mouse_x_changed ) // INPUT_CHANGED_MEMBER( mouse_y_changed ) //------------------------------------------------- -INPUT_CHANGED_MEMBER( qimi_t::mouse_y_changed ) +INPUT_CHANGED_MEMBER( qimi_device::mouse_y_changed ) { if (newval < oldval) { @@ -72,10 +72,10 @@ INPUT_CHANGED_MEMBER( qimi_t::mouse_y_changed ) INPUT_PORTS_START( qimi ) PORT_START("mouse_x") - PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_CHANGED_MEMBER(DEVICE_SELF, qimi_t, mouse_x_changed, 0) + PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_CHANGED_MEMBER(DEVICE_SELF, qimi_device, mouse_x_changed, 0) PORT_START("mouse_y") - PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_CHANGED_MEMBER(DEVICE_SELF, qimi_t, mouse_y_changed, 0) + PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_CHANGED_MEMBER(DEVICE_SELF, qimi_device, mouse_y_changed, 0) PORT_START("mouse_buttons") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Right Mouse Button") PORT_CODE(MOUSECODE_BUTTON2) @@ -88,7 +88,7 @@ INPUT_PORTS_END // input_ports - device-specific input ports //------------------------------------------------- -ioport_constructor qimi_t::device_input_ports() const +ioport_constructor qimi_device::device_input_ports() const { return INPUT_PORTS_NAME( qimi ); } @@ -100,11 +100,11 @@ ioport_constructor qimi_t::device_input_ports() const //************************************************************************** //------------------------------------------------- -// qimi_t - constructor +// qimi_device - constructor //------------------------------------------------- -qimi_t::qimi_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, QIMI, "QL Internal Mouse Interface", tag, owner, clock, "qimi", __FILE__), +qimi_device::qimi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, QIMI, tag, owner, clock), m_write_extint(*this), m_buttons(*this, "mouse_buttons"), m_status(0), @@ -117,7 +117,7 @@ qimi_t::qimi_t(const machine_config &mconfig, const char *tag, device_t *owner, // device_start - device-specific startup //------------------------------------------------- -void qimi_t::device_start() +void qimi_device::device_start() { // resolve callbacks m_write_extint.resolve_safe(); @@ -128,7 +128,7 @@ void qimi_t::device_start() // device_reset - device-specific reset //------------------------------------------------- -void qimi_t::device_reset() +void qimi_device::device_reset() { m_status = 0; m_extint_en = false; @@ -139,7 +139,7 @@ void qimi_t::device_reset() // read - //------------------------------------------------- -uint8_t qimi_t::read(address_space &space, offs_t offset, uint8_t data) +uint8_t qimi_device::read(address_space &space, offs_t offset, uint8_t data) { switch (offset) { @@ -169,7 +169,7 @@ uint8_t qimi_t::read(address_space &space, offs_t offset, uint8_t data) // write - //------------------------------------------------- -WRITE8_MEMBER( qimi_t::write ) +WRITE8_MEMBER( qimi_device::write ) { // write to 0x1bfbe resets int status if (offset == 0x1bfbe) diff --git a/src/mame/machine/qimi.h b/src/mame/machine/qimi.h index f35cbf1f749..4a714ccdf16 100644 --- a/src/mame/machine/qimi.h +++ b/src/mame/machine/qimi.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_QIMI_H +#define MAME_MACHINE_QIMI_H -#ifndef __QIMI__ -#define __QIMI__ +#pragma once @@ -19,7 +19,7 @@ //************************************************************************** #define MCFG_QIMI_EXTINT_CALLBACK(_write) \ - devcb = &qimi_t::set_exting_wr_callback(*device, DEVCB_##_write); + devcb = &qimi_device::set_exting_wr_callback(*device, DEVCB_##_write); @@ -27,15 +27,15 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> qimi_t +// ======================> qimi_device -class qimi_t : public device_t +class qimi_device : public device_t { public: // construction/destruction - qimi_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + qimi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_exting_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_extint.set_callback(object); } + template static devcb_base &set_exting_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_extint.set_callback(std::forward(cb)); } // optional information overrides virtual ioport_constructor device_input_ports() const override; @@ -71,7 +71,7 @@ private: // device type definition extern const device_type QIMI; +DECLARE_DEVICE_TYPE(QIMI, qimi_device) - -#endif +#endif // MAME_MACHINE_QIMI_H diff --git a/src/mame/machine/qx10kbd.cpp b/src/mame/machine/qx10kbd.cpp index a93bf7c7dd4..540ec24a2a8 100644 --- a/src/mame/machine/qx10kbd.cpp +++ b/src/mame/machine/qx10kbd.cpp @@ -9,7 +9,7 @@ qx10_keyboard_device::qx10_keyboard_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) - : buffered_rs232_device(mconfig, QX10_KEYBOARD, "QX10 Keyboard", tag, owner, 0, "qx10_keyboard", __FILE__) + : buffered_rs232_device(mconfig, QX10_KEYBOARD, tag, owner, 0) , device_matrix_keyboard_interface(mconfig, *this, "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", "LINE8", "LINE9", "LINEA", "LINEB", "LINEC", "LINED", "LINEE", "LINEF") { } @@ -244,4 +244,4 @@ ioport_constructor qx10_keyboard_device::device_input_ports() const } -const device_type QX10_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(QX10_KEYBOARD, qx10_keyboard_device, "qx10_keyboard", "Epson QX-10 Keyboard") diff --git a/src/mame/machine/qx10kbd.h b/src/mame/machine/qx10kbd.h index 61c0f40d7cb..11fd997875c 100644 --- a/src/mame/machine/qx10kbd.h +++ b/src/mame/machine/qx10kbd.h @@ -3,7 +3,11 @@ #ifndef MAME_MACHINE_QX10KBD_H #define MAME_MACHINE_QX10KBD_H -#include "bus/rs232/keyboard.h" +#pragma once + +#include "bus/rs232/rs232.h" +#include "machine/keyboard.h" + class qx10_keyboard_device : public buffered_rs232_device<16U>, protected device_matrix_keyboard_interface<16U> { @@ -20,6 +24,6 @@ private: virtual void received_byte(uint8_t data) override; }; -extern const device_type QX10_KEYBOARD; +DECLARE_DEVICE_TYPE(QX10_KEYBOARD, qx10_keyboard_device) #endif // MAME_MACHINE_QX10KBD_H diff --git a/src/mame/machine/radio86.cpp b/src/mame/machine/radio86.cpp index 8c083958504..c64d01fff69 100644 --- a/src/mame/machine/radio86.cpp +++ b/src/mame/machine/radio86.cpp @@ -129,7 +129,8 @@ void radio86_state::device_timer(emu_timer &timer, device_timer_id id, int param READ8_MEMBER(radio86_state::radio_cpu_state_r) { - return space.device().state().state_int(I8085_STATUS); + // FIXME: the driver should handler the status callback rather than accessing this through the state interface + return space.device().state().state_int(i8080_cpu_device::I8085_STATUS); } READ8_MEMBER(radio86_state::radio_io_r) diff --git a/src/mame/machine/rbisland.cpp b/src/mame/machine/rbisland.cpp index 7b1baf800b9..4b8b1bcbbac 100644 --- a/src/mame/machine/rbisland.cpp +++ b/src/mame/machine/rbisland.cpp @@ -815,11 +815,9 @@ READ16_MEMBER(rbisland_state::rbisland_cchip_ram_r) void rbisland_state::rbisland_cchip_init( int version ) { - int i; - m_extra_version = version; - for (i = 0; i < 8; i++) + for (int i = 0; i < 8; i++) { m_CRAM[i] = std::make_unique(0x400); @@ -828,5 +826,6 @@ void rbisland_state::rbisland_cchip_init( int version ) save_item(m_current_bank, "cchip/m_current_bank"); - machine().scheduler().timer_pulse(attotime::from_hz(60), timer_expired_delegate(FUNC(rbisland_state::cchip_timer),this)); + m_cchip_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(rbisland_state::cchip_timer), this)); + m_cchip_timer->adjust(attotime::from_hz(60), 0, attotime::from_hz(60)); } diff --git a/src/mame/machine/rm380z.cpp b/src/mame/machine/rm380z.cpp index 158f26cf182..e811de279fa 100644 --- a/src/mame/machine/rm380z.cpp +++ b/src/mame/machine/rm380z.cpp @@ -200,7 +200,7 @@ TIMER_CALLBACK_MEMBER(rm380z_state::static_vblank_timer) } } -WRITE8_MEMBER( rm380z_state::keyboard_put ) +void rm380z_state::keyboard_put(u8 data) { if (data) { @@ -238,7 +238,8 @@ WRITE8_MEMBER( rm380z_state::disk_0_control ) void rm380z_state::machine_start() { - machine().scheduler().timer_pulse(attotime::from_hz(TIMER_SPEED), timer_expired_delegate(FUNC(rm380z_state::static_vblank_timer),this)); + m_static_vblank_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(rm380z_state::static_vblank_timer), this)); + m_static_vblank_timer->adjust(attotime::from_hz(TIMER_SPEED), 0, attotime::from_hz(TIMER_SPEED)); } DRIVER_INIT_MEMBER( rm380z_state, rm380z ) diff --git a/src/mame/machine/rmnimbus.cpp b/src/mame/machine/rmnimbus.cpp index 4f504107d90..d37fcf92e80 100644 --- a/src/mame/machine/rmnimbus.cpp +++ b/src/mame/machine/rmnimbus.cpp @@ -1487,7 +1487,7 @@ void rmnimbus_state::rmni_sound_reset() { m_msm->reset_w(1); - m_last_playmode = MSM5205_S48_4B; + m_last_playmode = msm5205_device::S48_4B; m_msm->playmode_w(m_last_playmode); m_ay8910_a=0; diff --git a/src/mame/machine/rmnkbd.cpp b/src/mame/machine/rmnkbd.cpp index b7ba96f296b..93d9aa7d508 100644 --- a/src/mame/machine/rmnkbd.cpp +++ b/src/mame/machine/rmnkbd.cpp @@ -7,6 +7,7 @@ namespace { + INPUT_PORTS_START( rmnimbus_keyboard ) PORT_START("LINE0") // Key row 0 scancodes 00..07 PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED) @@ -119,7 +120,7 @@ INPUT_PORTS_END rmnimbus_keyboard_device::rmnimbus_keyboard_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) - : buffered_rs232_device(mconfig, RMNIMBUS_KEYBOARD, "RM Nimbus Keyboard", tag, owner, 0, "rmnimbus_keyboard", __FILE__) + : buffered_rs232_device(mconfig, RMNIMBUS_KEYBOARD, tag, owner, clock) , device_matrix_keyboard_interface(mconfig, *this, "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", "LINE8", "LINE9", "LINEA") { } @@ -177,4 +178,4 @@ void rmnimbus_keyboard_device::received_byte(uint8_t byte) } -const device_type RMNIMBUS_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(RMNIMBUS_KEYBOARD, rmnimbus_keyboard_device, "rmnimbus_keyboard", "RM Nimbus Keyboard") diff --git a/src/mame/machine/rmnkbd.h b/src/mame/machine/rmnkbd.h index 7398cf0d211..f7a4ed26342 100644 --- a/src/mame/machine/rmnkbd.h +++ b/src/mame/machine/rmnkbd.h @@ -23,5 +23,6 @@ private: }; extern const device_type RMNIMBUS_KEYBOARD; +DECLARE_DEVICE_TYPE(RMNIMBUS_KEYBOARD, rmnimbus_keyboard_device) #endif // MAME_MACHINE_RMNKBD_H diff --git a/src/mame/machine/rx01.cpp b/src/mame/machine/rx01.cpp index dd62af3cdc8..f202793cf12 100644 --- a/src/mame/machine/rx01.cpp +++ b/src/mame/machine/rx01.cpp @@ -42,14 +42,14 @@ MACHINE_CONFIG_END // DEVICE DEFINITIONS //************************************************************************** -const device_type RX01 = device_creator; +DEFINE_DEVICE_TYPE(RX01, rx01_device, "rx01", "RX01") //------------------------------------------------- // rx01_device - constructor //------------------------------------------------- rx01_device::rx01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, RX01, "RX01", tag, owner, clock, "rx01", __FILE__) + : device_t(mconfig, RX01, tag, owner, clock) { } diff --git a/src/mame/machine/rx01.h b/src/mame/machine/rx01.h index 81bebf2bac9..0b9381ab3a4 100644 --- a/src/mame/machine/rx01.h +++ b/src/mame/machine/rx01.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_RX01_H +#define MAME_MACHINE_RX01_H -#ifndef __RX01__ -#define __RX01__ +#pragma once #include "imagedev/flopdrv.h" @@ -79,6 +79,6 @@ private: }; // device type definition -extern const device_type RX01; +DECLARE_DEVICE_TYPE(RX01, rx01_device) -#endif +#endif // MAME_MACHINE_RX01_H diff --git a/src/mame/machine/s32comm.cpp b/src/mame/machine/s32comm.cpp index d25d3bdfc32..66f55286f01 100644 --- a/src/mame/machine/s32comm.cpp +++ b/src/mame/machine/s32comm.cpp @@ -70,7 +70,8 @@ Sega System Multi32 Comm PCB 837-8792-91 #include "emuopts.h" #include "machine/s32comm.h" -//#define __S32COMM_VERBOSE__ +#define VERBOSE 0 +#include "logmacro.h" MACHINE_CONFIG_FRAGMENT( s32comm ) MACHINE_CONFIG_END @@ -79,7 +80,7 @@ MACHINE_CONFIG_END // GLOBAL VARIABLES //************************************************************************** -const device_type S32COMM = device_creator; +DEFINE_DEVICE_TYPE(S32COMM, s32comm_device, "s32comm", "System 32 Communication Board") //------------------------------------------------- // machine_config_additions - device-specific @@ -100,7 +101,7 @@ machine_config_constructor s32comm_device::device_mconfig_additions() const //------------------------------------------------- s32comm_device::s32comm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, S32COMM, "SYSTEM32 COMMUNICATION BD", tag, owner, clock, "s32comm", __FILE__), + device_t(mconfig, S32COMM, tag, owner, clock), m_line_rx(OPEN_FLAG_WRITE | OPEN_FLAG_CREATE ), m_line_tx(OPEN_FLAG_READ) { @@ -141,34 +142,26 @@ void s32comm_device::device_reset() READ8_MEMBER(s32comm_device::zfg_r) { uint8_t result = m_zfg | 0xFE; -#ifdef __S32COMM_VERBOSE__ - osd_printf_verbose("s32comm-zfg_r: read register %02x for value %02x\n", offset, result); -#endif + LOG("s32comm-zfg_r: read register %02x for value %02x\n", offset, result); return result; } WRITE8_MEMBER(s32comm_device::zfg_w) { -#ifdef __S32COMM_VERBOSE__ - osd_printf_verbose("s32comm-zfg_w: %02x\n", data); -#endif + LOG("s32comm-zfg_w: %02x\n", data); m_zfg = data & 0x01; } READ8_MEMBER(s32comm_device::share_r) { uint8_t result = m_shared[offset]; -#ifdef __S32COMM_VERBOSE__ - osd_printf_verbose("s32comm-share_r: read shared memory %02x for value %02x\n", offset, result); -#endif + LOG("s32comm-share_r: read shared memory %02x for value %02x\n", offset, result); return result; } WRITE8_MEMBER(s32comm_device::share_w) { -#ifdef __S32COMM_VERBOSE__ - osd_printf_verbose("s32comm-share_w: %02x %02x\n", offset, data); -#endif + LOG("s32comm-share_w: %02x %02x\n", offset, data); m_shared[offset] = data; } @@ -181,7 +174,7 @@ WRITE8_MEMBER(s32comm_device::cn_w) { m_cn = data & 0x01; -#ifndef __S32COMM_SIMULATION__ +#ifndef S32COMM_SIMULATION if (!m_cn) device_reset(); #else @@ -221,13 +214,13 @@ WRITE8_MEMBER(s32comm_device::fg_w) void s32comm_device::check_vint_irq() { -#ifndef __S32COMM_SIMULATION__ +#ifndef S32COMM_SIMULATION #else comm_tick(); #endif } -#ifdef __S32COMM_SIMULATION__ +#ifdef S32COMM_SIMULATION void s32comm_device::set_linktype(uint16_t linktype) { m_linktype = linktype; diff --git a/src/mame/machine/s32comm.h b/src/mame/machine/s32comm.h index ffd82ffafa4..c88ec806f4a 100644 --- a/src/mame/machine/s32comm.h +++ b/src/mame/machine/s32comm.h @@ -1,11 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Ariane Fugmann -#pragma once +#ifndef MAME_MACHINE_S32COMM_H +#define MAME_MACHINE_S32COMM_H -#ifndef __S32COMM_H__ -#define __S32COMM_H__ +#pragma once -#define __S32COMM_SIMULATION__ +#define S32COMM_SIMULATION #define MCFG_S32COMM_ADD(_tag ) \ MCFG_DEVICE_ADD(_tag, S32COMM, 0) @@ -45,7 +45,7 @@ public: // IRQ logic - 5 = VINT, 7 = DLC void check_vint_irq(); -#ifdef __S32COMM_SIMULATION__ +#ifdef S32COMM_SIMULATION void set_linktype(uint16_t linktype); #endif @@ -66,7 +66,7 @@ private: char m_remotehost[256]; uint8_t m_buffer[0x800]; -#ifdef __S32COMM_SIMULATION__ +#ifdef S32COMM_SIMULATION uint8_t m_linkenable; uint16_t m_linktimer; uint8_t m_linkalive; @@ -84,6 +84,6 @@ private: }; // device type definition -extern const device_type S32COMM; +DECLARE_DEVICE_TYPE(S32COMM, s32comm_device) -#endif /* __S32COMM_H__ */ +#endif // MAME_MACHINE_S32COMM_H diff --git a/src/mame/machine/segabb.cpp b/src/mame/machine/segabb.cpp index e930caa4f3c..63a5dd7edb2 100644 --- a/src/mame/machine/segabb.cpp +++ b/src/mame/machine/segabb.cpp @@ -3,7 +3,7 @@ #include "emu.h" #include "segabb.h" -const device_type SEGA_LINDBERGH_BASEBOARD = device_creator; +DEFINE_DEVICE_TYPE(SEGA_LINDBERGH_BASEBOARD, sega_lindbergh_baseboard_device, "lindbergh_baseboard", "Sega Lindbergh Baseboard") DEVICE_ADDRESS_MAP_START(map1, 32, sega_lindbergh_baseboard_device) ADDRESS_MAP_END @@ -15,7 +15,7 @@ DEVICE_ADDRESS_MAP_START(map3, 32, sega_lindbergh_baseboard_device) ADDRESS_MAP_END sega_lindbergh_baseboard_device::sega_lindbergh_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pci_device(mconfig, SEGA_LINDBERGH_BASEBOARD, "Sega Lindbergh Baseboard", tag, owner, clock, "sega_lindbergh_baseboard", __FILE__) + : pci_device(mconfig, SEGA_LINDBERGH_BASEBOARD, tag, owner, clock) { } diff --git a/src/mame/machine/segabb.h b/src/mame/machine/segabb.h index 4dfc922a63a..1f1aba4b0a3 100644 --- a/src/mame/machine/segabb.h +++ b/src/mame/machine/segabb.h @@ -2,8 +2,10 @@ // copyright-holders:Olivier Galibert // Lindbergh Sega baseboard -#ifndef SEGABB_H -#define SEGABB_H +#ifndef MAME_MACHINE_SEGABB_H +#define MAME_MACHINE_SEGABB_H + +#pragma once #include "machine/pci.h" @@ -24,6 +26,6 @@ private: DECLARE_ADDRESS_MAP(map3, 32); }; -extern const device_type SEGA_LINDBERGH_BASEBOARD; +DECLARE_DEVICE_TYPE(SEGA_LINDBERGH_BASEBOARD, sega_lindbergh_baseboard_device) -#endif +#endif // MAME_MACHINE_SEGABB_H diff --git a/src/mame/machine/segacrp2_device.cpp b/src/mame/machine/segacrp2_device.cpp index 63b0dd4b8a5..2ac88287eeb 100644 --- a/src/mame/machine/segacrp2_device.cpp +++ b/src/mame/machine/segacrp2_device.cpp @@ -84,20 +84,20 @@ static void decode(uint8_t *rom, uint8_t *decrypted, } } -const device_type SEGA_315_5179 = device_creator; -const device_type SEGA_315_5178 = device_creator; -const device_type SEGA_315_5177 = device_creator; // also seen as 317-5000 -const device_type SEGA_315_5176 = device_creator; // TODO! -const device_type SEGA_315_5162 = device_creator; +DEFINE_DEVICE_TYPE(SEGA_315_5179, sega_315_5179_device, "sega_315_5179", "Sega 315-5179") +DEFINE_DEVICE_TYPE(SEGA_315_5178, sega_315_5178_device, "sega_315_5178", "Sega 315-5178") +DEFINE_DEVICE_TYPE(SEGA_315_5177, sega_315_5177_device, "sega_315_5177", "Sega 315-5177") // also seen as 317-5000 +DEFINE_DEVICE_TYPE(SEGA_315_5176, sega_315_5176_device, "sega_315_5176", "Sega 315-5176") // TODO! +DEFINE_DEVICE_TYPE(SEGA_315_5162, sega_315_5162_device, "sega_315_5162", "Sega 315-5162") -const device_type SEGA_317_0004 = device_creator; -const device_type SEGA_317_0005 = device_creator; -const device_type SEGA_317_0006 = device_creator; -const device_type SEGA_317_0007 = device_creator; +DEFINE_DEVICE_TYPE(SEGA_317_0004, sega_317_0004_device, "sega_317_0004", "Sega 317-0004") +DEFINE_DEVICE_TYPE(SEGA_317_0005, sega_317_0005_device, "sega_317_0005", "Sega 317-0005") +DEFINE_DEVICE_TYPE(SEGA_317_0006, sega_317_0006_device, "sega_317_0006", "Sega 317-0006") +DEFINE_DEVICE_TYPE(SEGA_317_0007, sega_317_0007_device, "sega_317_0007", "Sega 317-0007") -segacrp2_z80_device::segacrp2_z80_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : z80_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__) {} +segacrp2_z80_device::segacrp2_z80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : z80_device(mconfig, type, tag, owner, clock) {} void segacrp2_z80_device::device_start() { z80_device::device_start(); decrypt(); } void segacrp2_z80_device::device_reset() { z80_device::device_reset(); } void segacrp2_z80_device::decrypt() { } @@ -109,7 +109,7 @@ void segacrp2_z80_device::set_decrypted_tag(device_t &device, const char* decryp } -sega_315_5177_device::sega_315_5177_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5177, "Sega 315-5177", tag, owner, clock, "sega_315_5177", __FILE__) {} +sega_315_5177_device::sega_315_5177_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5177, tag, owner, clock) {} void sega_315_5177_device::decrypt() { @@ -167,7 +167,7 @@ void sega_315_5177_device::decrypt() } -sega_315_5176_device::sega_315_5176_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5176, "Sega 315-5176", tag, owner, clock, "sega_315_5176", __FILE__) {} +sega_315_5176_device::sega_315_5176_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5176, tag, owner, clock) {} void sega_315_5176_device::decrypt() { @@ -176,7 +176,7 @@ void sega_315_5176_device::decrypt() } -sega_315_5162_device::sega_315_5162_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5162, "Sega 315-5162", tag, owner, clock, "sega_315_5162", __FILE__) {} +sega_315_5162_device::sega_315_5162_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5162, tag, owner, clock) {} void sega_315_5162_device::decrypt() { // 315-5162 @@ -212,7 +212,7 @@ void sega_315_5162_device::decrypt() -sega_315_5178_device::sega_315_5178_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5178, "Sega 315-5178", tag, owner, clock, "sega_315_5178", __FILE__) {} +sega_315_5178_device::sega_315_5178_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5178, tag, owner, clock) {} void sega_315_5178_device::decrypt() { // 315-5178 static const uint8_t xor_table[128] = @@ -260,7 +260,7 @@ void sega_315_5178_device::decrypt() -sega_315_5179_device::sega_315_5179_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5179, "Sega 315-5179", tag, owner, clock, "sega_315_5179", __FILE__) {} +sega_315_5179_device::sega_315_5179_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_315_5179, tag, owner, clock) {} void sega_315_5179_device::decrypt() { // 315-5179 static const uint8_t xor_table[128] = @@ -310,7 +310,7 @@ void sega_315_5179_device::decrypt() ******************************************************************************/ -void _sega_decode_317(uint8_t *rom, uint8_t *decrypted, int shift) +static void sega_decode_317(uint8_t *rom, uint8_t *decrypted, int shift) { static const uint8_t xor_table[128+3] = { @@ -342,29 +342,29 @@ void _sega_decode_317(uint8_t *rom, uint8_t *decrypted, int shift) } -sega_317_0004_device::sega_317_0004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_317_0004, "Sega 317-0004", tag, owner, clock, "sega_317_0004", __FILE__) {} +sega_317_0004_device::sega_317_0004_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_317_0004, tag, owner, clock) {} void sega_317_0004_device::decrypt() { // 317-0004 - _sega_decode_317(memregion(tag())->base(), (uint8_t*)memshare(m_decrypted_tag)->ptr(), 0); + sega_decode_317(memregion(tag())->base(), (uint8_t*)memshare(m_decrypted_tag)->ptr(), 0); } -sega_317_0005_device::sega_317_0005_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_317_0005, "Sega 317-0005", tag, owner, clock, "sega_317_0005", __FILE__) {} +sega_317_0005_device::sega_317_0005_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_317_0005, tag, owner, clock) {} void sega_317_0005_device::decrypt() { // 317-0005 - _sega_decode_317(memregion(tag())->base(), (uint8_t*)memshare(m_decrypted_tag)->ptr(), 1); + sega_decode_317(memregion(tag())->base(), (uint8_t*)memshare(m_decrypted_tag)->ptr(), 1); } -sega_317_0006_device::sega_317_0006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_317_0006, "Sega 317-0006", tag, owner, clock, "sega_317_0006", __FILE__) {} +sega_317_0006_device::sega_317_0006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_317_0006, tag, owner, clock) {} void sega_317_0006_device::decrypt() { // 317-0006 - _sega_decode_317(memregion(tag())->base(), (uint8_t*)memshare(m_decrypted_tag)->ptr(), 2); + sega_decode_317(memregion(tag())->base(), (uint8_t*)memshare(m_decrypted_tag)->ptr(), 2); } -sega_317_0007_device::sega_317_0007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_317_0007, "Sega 317-0007", tag, owner, clock, "sega_317_0007", __FILE__) {} +sega_317_0007_device::sega_317_0007_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrp2_z80_device(mconfig, SEGA_317_0007, tag, owner, clock) {} void sega_317_0007_device::decrypt() { // 317-0006 - _sega_decode_317(memregion(tag())->base(), (uint8_t*)memshare(m_decrypted_tag)->ptr(), 3); + sega_decode_317(memregion(tag())->base(), (uint8_t*)memshare(m_decrypted_tag)->ptr(), 3); } diff --git a/src/mame/machine/segacrp2_device.h b/src/mame/machine/segacrp2_device.h index 37fbf2fc606..8bda4564b43 100644 --- a/src/mame/machine/segacrp2_device.h +++ b/src/mame/machine/segacrp2_device.h @@ -1,26 +1,26 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_SEGACRP2_DEVICE_H +#define MAME_MACHINE_SEGACRP2_DEVICE_H #pragma once -#ifndef __SEGACRP2_Z80__ -#define __SEGACRP2_Z80__ + +#include "cpu/z80/z80.h" #define MCFG_SEGAZ80_SET_DECRYPTED_TAG(_tag) \ segacrp2_z80_device::set_decrypted_tag(*device, _tag); -#include "cpu/z80/z80.h" - // base class class segacrp2_z80_device : public z80_device { public: - segacrp2_z80_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - static void set_decrypted_tag(device_t &device, const char* decrypted_tag); const char* m_decrypted_tag; protected: + segacrp2_z80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual void device_reset() override; virtual void decrypt(); @@ -105,16 +105,16 @@ protected: }; -extern const device_type SEGA_315_5179; -extern const device_type SEGA_315_5178; -extern const device_type SEGA_315_5177; -extern const device_type SEGA_315_5176; -extern const device_type SEGA_315_5162; +DECLARE_DEVICE_TYPE(SEGA_315_5179, sega_315_5179_device) +DECLARE_DEVICE_TYPE(SEGA_315_5178, sega_315_5178_device) +DECLARE_DEVICE_TYPE(SEGA_315_5177, sega_315_5177_device) +DECLARE_DEVICE_TYPE(SEGA_315_5176, sega_315_5176_device) +DECLARE_DEVICE_TYPE(SEGA_315_5162, sega_315_5162_device) -extern const device_type SEGA_317_0004; -extern const device_type SEGA_317_0005; -extern const device_type SEGA_317_0006; -extern const device_type SEGA_317_0007; +DECLARE_DEVICE_TYPE(SEGA_317_0004, sega_317_0004_device) +DECLARE_DEVICE_TYPE(SEGA_317_0005, sega_317_0005_device) +DECLARE_DEVICE_TYPE(SEGA_317_0006, sega_317_0006_device) +DECLARE_DEVICE_TYPE(SEGA_317_0007, sega_317_0007_device) -#endif /// __SEGACRP2_Z80__ +#endif // MAME_MACHINE_SEGACRP2_DEVICE_H diff --git a/src/mame/machine/segacrpt_device.cpp b/src/mame/machine/segacrpt_device.cpp index ff06ff38f5d..99e772560d6 100644 --- a/src/mame/machine/segacrpt_device.cpp +++ b/src/mame/machine/segacrpt_device.cpp @@ -255,47 +255,53 @@ static void decode(uint8_t *data, uint8_t *opcodes, int size, const uint8_t conv -const device_type SEGA_315_5132 = device_creator; -const device_type SEGA_315_5155 = device_creator; -const device_type SEGA_315_5110 = device_creator; -const device_type SEGA_315_5135 = device_creator; -const device_type SEGA_315_5051 = device_creator; -const device_type SEGA_315_5098 = device_creator; // also 315-5030 ? -const device_type SEGA_315_5102 = device_creator; -const device_type SEGA_315_5065 = device_creator; -const device_type SEGA_315_5064 = device_creator; -const device_type SEGA_315_5033 = device_creator; -const device_type SEGA_315_5041 = device_creator; -const device_type SEGA_315_5048 = device_creator; -const device_type SEGA_315_5093 = device_creator; -const device_type SEGA_315_5099 = device_creator; -const device_type SEGA_315_5015 = device_creator; -const device_type SEGA_315_5133 = device_creator; // NOT DECRYPTED YET -const device_type SEGA_315_5061 = device_creator; -const device_type SEGA_315_5028 = device_creator; -const device_type SEGA_315_5084 = device_creator; -const device_type SEGA_315_5013 = device_creator; -const device_type SEGA_315_5014 = device_creator; -const device_type SEGA_315_5018 = device_creator; -const device_type SEGA_315_5010 = device_creator; +DEFINE_DEVICE_TYPE(SEGA_315_5132, sega_315_5132_device, "sega_315_5132", "Sega 315-5132") +DEFINE_DEVICE_TYPE(SEGA_315_5155, sega_315_5155_device, "sega_315_5155", "Sega 315-5155") +DEFINE_DEVICE_TYPE(SEGA_315_5110, sega_315_5110_device, "sega_315_5110", "Sega 315-5110") +DEFINE_DEVICE_TYPE(SEGA_315_5135, sega_315_5135_device, "sega_315_5135", "Sega 315-5135") +DEFINE_DEVICE_TYPE(SEGA_315_5051, sega_315_5051_device, "sega_315_5051", "Sega 315-5051") +DEFINE_DEVICE_TYPE(SEGA_315_5098, sega_315_5098_device, "sega_315_5098", "Sega 315-5098") // also 315-5030 ? +DEFINE_DEVICE_TYPE(SEGA_315_5102, sega_315_5102_device, "sega_315_5102", "Sega 315-5102") +DEFINE_DEVICE_TYPE(SEGA_315_5065, sega_315_5065_device, "sega_315_5065", "Sega 315-5065") +DEFINE_DEVICE_TYPE(SEGA_315_5064, sega_315_5064_device, "sega_315_5064", "Sega 315-5064") +DEFINE_DEVICE_TYPE(SEGA_315_5033, sega_315_5033_device, "sega_315_5033", "Sega 315-5033") +DEFINE_DEVICE_TYPE(SEGA_315_5041, sega_315_5041_device, "sega_315_5041", "Sega 315-5041") +DEFINE_DEVICE_TYPE(SEGA_315_5048, sega_315_5048_device, "sega_315_5048", "Sega 315-5048") +DEFINE_DEVICE_TYPE(SEGA_315_5093, sega_315_5093_device, "sega_315_5093", "Sega 315-5093") +DEFINE_DEVICE_TYPE(SEGA_315_5099, sega_315_5099_device, "sega_315_5099", "Sega 315-5099") +DEFINE_DEVICE_TYPE(SEGA_315_5015, sega_315_5015_device, "sega_315_5015", "Sega 315-5015") +DEFINE_DEVICE_TYPE(SEGA_315_5133, sega_315_5133_device, "sega_315_5133", "Sega 315-5133") // NOT DECRYPTED YET +DEFINE_DEVICE_TYPE(SEGA_315_5061, sega_315_5061_device, "sega_315_5061", "Sega 315-5061") +DEFINE_DEVICE_TYPE(SEGA_315_5028, sega_315_5028_device, "sega_315_5028", "Sega 315-5028") +DEFINE_DEVICE_TYPE(SEGA_315_5084, sega_315_5084_device, "sega_315_5084", "Sega 315-5084") +DEFINE_DEVICE_TYPE(SEGA_315_5013, sega_315_5013_device, "sega_315_5013", "Sega 315-5013") +DEFINE_DEVICE_TYPE(SEGA_315_5014, sega_315_5014_device, "sega_315_5014", "Sega 315-5014") +DEFINE_DEVICE_TYPE(SEGA_315_5018, sega_315_5018_device, "sega_315_5018", "Sega 315-5018") +DEFINE_DEVICE_TYPE(SEGA_315_5010, sega_315_5010_device, "sega_315_5010", "Sega 315-5010") // below are unknown part numbers -const device_type SEGA_315_SPAT = device_creator; // unknown part number -const device_type SEGA_CPU_PBACTIO4 = device_creator; +DEFINE_DEVICE_TYPE(SEGA_315_SPAT, sega_315_spat_device, "sega_315_spat", "Sega 315-???? Spat") // unknown part number +DEFINE_DEVICE_TYPE(SEGA_CPU_PBACTIO4, sega_cpu_pbactio4_device, "sega_pbactio4", "Sega pbactio4") -segacrpt_z80_device::segacrpt_z80_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - z80_device(mconfig, type, name, tag, owner, clock, shortname, source), +segacrpt_z80_device::segacrpt_z80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + z80_device(mconfig, type, tag, owner, clock), m_decrypted_ptr(nullptr), m_region_ptr(nullptr), m_decode_size(0x8000), m_numbanks(0), m_banksize(0), m_decryption_done(false) - {} -void segacrpt_z80_device::device_start() { z80_device::device_start(); } +{ +} + +void segacrpt_z80_device::device_start() +{ + z80_device::device_start(); +} + void segacrpt_z80_device::device_reset() { // decrypt on reset, makes sure DRIVER_INIT stuff happens first (for myherok) @@ -316,9 +322,7 @@ void segacrpt_z80_device::device_reset() m_decryption_done = true; } z80_device::device_reset(); - } -void segacrpt_z80_device::decrypt() { } void segacrpt_z80_device::set_decrypted_tag(device_t &device, const char* decrypted_tag) { @@ -363,7 +367,7 @@ void segacrpt_z80_device::set_banksize(device_t &device, int banksize) -sega_315_5132_device::sega_315_5132_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5132, "Sega 315-5132", tag, owner, clock, "sega_315_5132", __FILE__) {} +sega_315_5132_device::sega_315_5132_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5132, tag, owner, clock) {} void sega_315_5132_device::decrypt() { static const uint8_t convtable[32][4] = @@ -394,7 +398,7 @@ void sega_315_5132_device::decrypt() -sega_315_5155_device::sega_315_5155_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5155, "Sega 315-5155", tag, owner, clock, "sega_315_5155", __FILE__) {} +sega_315_5155_device::sega_315_5155_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5155, tag, owner, clock) {} void sega_315_5155_device::decrypt() { static const uint8_t convtable[32][4] = @@ -425,7 +429,7 @@ void sega_315_5155_device::decrypt() -sega_315_5110_device::sega_315_5110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5110, "Sega 315-5110", tag, owner, clock, "sega_315_5110", __FILE__) {} +sega_315_5110_device::sega_315_5110_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5110, tag, owner, clock) {} void sega_315_5110_device::decrypt() { static const uint8_t convtable[32][4] = @@ -455,7 +459,7 @@ void sega_315_5110_device::decrypt() -sega_315_5135_device::sega_315_5135_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5135, "Sega 315-5135", tag, owner, clock, "sega_315_5135", __FILE__) {} +sega_315_5135_device::sega_315_5135_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5135, tag, owner, clock) {} void sega_315_5135_device::decrypt() { static const uint8_t convtable[32][4] = @@ -486,7 +490,7 @@ void sega_315_5135_device::decrypt() -sega_315_5051_device::sega_315_5051_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5051, "Sega 315-5051", tag, owner, clock, "sega_315_5051", __FILE__) {} +sega_315_5051_device::sega_315_5051_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5051, tag, owner, clock) {} void sega_315_5051_device::decrypt() { static const uint8_t convtable[32][4] = @@ -516,7 +520,7 @@ void sega_315_5051_device::decrypt() -sega_315_5098_device::sega_315_5098_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5098, "Sega 315-5098", tag, owner, clock, "sega_315_5098", __FILE__) {} +sega_315_5098_device::sega_315_5098_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5098, tag, owner, clock) {} void sega_315_5098_device::decrypt() { // also 315-5030 ? @@ -548,7 +552,7 @@ void sega_315_5098_device::decrypt() -sega_315_5102_device::sega_315_5102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5102, "Sega 315-5102", tag, owner, clock, "sega_315_5102", __FILE__) {} +sega_315_5102_device::sega_315_5102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5102, tag, owner, clock) {} void sega_315_5102_device::decrypt() { static const uint8_t convtable[32][4] = @@ -577,7 +581,7 @@ void sega_315_5102_device::decrypt() } -sega_315_5065_device::sega_315_5065_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5065, "Sega 315-5065", tag, owner, clock, "sega_315_5065", __FILE__) {} +sega_315_5065_device::sega_315_5065_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5065, tag, owner, clock) {} void sega_315_5065_device::decrypt() { static const uint8_t convtable[32][4] = @@ -606,7 +610,7 @@ void sega_315_5065_device::decrypt() } -sega_315_5064_device::sega_315_5064_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5064, "Sega 315-5064", tag, owner, clock, "sega_315_5064", __FILE__) {} +sega_315_5064_device::sega_315_5064_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5064, tag, owner, clock) {} void sega_315_5064_device::decrypt() { static const uint8_t convtable[32][4] = @@ -636,7 +640,7 @@ void sega_315_5064_device::decrypt() -sega_315_5033_device::sega_315_5033_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5033, "Sega 315-5033", tag, owner, clock, "sega_315_5033", __FILE__) {} +sega_315_5033_device::sega_315_5033_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5033, tag, owner, clock) {} void sega_315_5033_device::decrypt() { static const uint8_t convtable[32][4] = @@ -665,7 +669,7 @@ void sega_315_5033_device::decrypt() } -sega_315_5041_device::sega_315_5041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5041, "Sega 315-5041", tag, owner, clock, "sega_315_5041", __FILE__) {} +sega_315_5041_device::sega_315_5041_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5041, tag, owner, clock) {} void sega_315_5041_device::decrypt() { static const uint8_t convtable[32][4] = @@ -695,7 +699,7 @@ void sega_315_5041_device::decrypt() -sega_315_5048_device::sega_315_5048_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5048, "Sega 315-5048", tag, owner, clock, "sega_315_5048", __FILE__) {} +sega_315_5048_device::sega_315_5048_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5048, tag, owner, clock) {} void sega_315_5048_device::decrypt() { static const uint8_t convtable[32][4] = @@ -724,7 +728,7 @@ void sega_315_5048_device::decrypt() } -sega_315_5093_device::sega_315_5093_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5093, "Sega 315-5093", tag, owner, clock, "sega_315_5093", __FILE__) {} +sega_315_5093_device::sega_315_5093_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5093, tag, owner, clock) {} void sega_315_5093_device::decrypt() { static const uint8_t convtable[32][4] = @@ -754,7 +758,7 @@ void sega_315_5093_device::decrypt() -sega_315_5099_device::sega_315_5099_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5099, "Sega 315-5099", tag, owner, clock, "sega_315_5099", __FILE__) {} +sega_315_5099_device::sega_315_5099_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5099, tag, owner, clock) {} void sega_315_5099_device::decrypt() { static const uint8_t convtable[32][4] = @@ -785,7 +789,7 @@ void sega_315_5099_device::decrypt() -sega_315_spat_device::sega_315_spat_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_SPAT, "Sega 315-???? Spat", tag, owner, clock, "sega_315_spat", __FILE__) {} +sega_315_spat_device::sega_315_spat_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_SPAT, tag, owner, clock) {} void sega_315_spat_device::decrypt() { static const uint8_t convtable[32][4] = @@ -813,7 +817,7 @@ void sega_315_spat_device::decrypt() decode(m_region_ptr, m_decrypted_ptr, m_decode_size, convtable, m_numbanks, m_banksize); } -sega_315_5015_device::sega_315_5015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5015, "Sega 315-5015", tag, owner, clock, "sega_315_5015", __FILE__) {} +sega_315_5015_device::sega_315_5015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5015, tag, owner, clock) {} void sega_315_5015_device::decrypt() { static const uint8_t convtable[32][4] = @@ -843,7 +847,7 @@ void sega_315_5015_device::decrypt() } -sega_315_5133_device::sega_315_5133_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5133, "Sega 315-5133", tag, owner, clock, "sega_315_5133", __FILE__) {} +sega_315_5133_device::sega_315_5133_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5133, tag, owner, clock) {} void sega_315_5133_device::decrypt() { // TODO @@ -851,7 +855,7 @@ void sega_315_5133_device::decrypt() -sega_315_5014_device::sega_315_5014_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5014, "Sega 315-5014", tag, owner, clock, "sega_315_5014", __FILE__) {} +sega_315_5014_device::sega_315_5014_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5014, tag, owner, clock) {} void sega_315_5014_device::decrypt() { static const uint8_t convtable[32][4] = @@ -880,7 +884,7 @@ void sega_315_5014_device::decrypt() -sega_315_5013_device::sega_315_5013_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5013, "Sega 315-5013", tag, owner, clock, "sega_315_5013", __FILE__) {} +sega_315_5013_device::sega_315_5013_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5013, tag, owner, clock) {} void sega_315_5013_device::decrypt() { static const uint8_t convtable[32][4] = @@ -909,7 +913,7 @@ void sega_315_5013_device::decrypt() } -sega_315_5061_device::sega_315_5061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5061, "Sega 315-5061", tag, owner, clock, "sega_315_5061", __FILE__) {} +sega_315_5061_device::sega_315_5061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5061, tag, owner, clock) {} void sega_315_5061_device::decrypt() { static const uint8_t convtable[32][4] = @@ -939,7 +943,7 @@ void sega_315_5061_device::decrypt() -sega_315_5018_device::sega_315_5018_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5018, "Sega 315-5018", tag, owner, clock, "sega_315_5018", __FILE__) {} +sega_315_5018_device::sega_315_5018_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5018, tag, owner, clock) {} void sega_315_5018_device::decrypt() { static const uint8_t convtable[32][4] = @@ -969,7 +973,7 @@ void sega_315_5018_device::decrypt() } -sega_315_5010_device::sega_315_5010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5010, "Sega 315-5010", tag, owner, clock, "sega_315_5010", __FILE__) {} +sega_315_5010_device::sega_315_5010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5010, tag, owner, clock) {} void sega_315_5010_device::decrypt() { static const uint8_t convtable[32][4] = @@ -1000,7 +1004,7 @@ void sega_315_5010_device::decrypt() -sega_cpu_pbactio4_device::sega_cpu_pbactio4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_CPU_PBACTIO4, "Sega pbactio4", tag, owner, clock, "sega_pbactio4", __FILE__) {} +sega_cpu_pbactio4_device::sega_cpu_pbactio4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_CPU_PBACTIO4, tag, owner, clock) {} void sega_cpu_pbactio4_device::decrypt() { static const uint8_t convtable[32][4] = @@ -1029,7 +1033,7 @@ void sega_cpu_pbactio4_device::decrypt() } -sega_315_5028_device::sega_315_5028_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5028, "Sega 315-5028", tag, owner, clock, "sega_315_5028", __FILE__) {} +sega_315_5028_device::sega_315_5028_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5028, tag, owner, clock) {} void sega_315_5028_device::decrypt() { static const uint8_t convtable[32][4] = @@ -1058,7 +1062,7 @@ void sega_315_5028_device::decrypt() } -sega_315_5084_device::sega_315_5084_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5084, "Sega 315-5084", tag, owner, clock, "sega_315_5084", __FILE__) {} +sega_315_5084_device::sega_315_5084_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : segacrpt_z80_device(mconfig, SEGA_315_5084, tag, owner, clock) {} void sega_315_5084_device::decrypt() { static const uint8_t convtable[32][4] = diff --git a/src/mame/machine/segacrpt_device.h b/src/mame/machine/segacrpt_device.h index da3a8ad6ddf..653e8efdacb 100644 --- a/src/mame/machine/segacrpt_device.h +++ b/src/mame/machine/segacrpt_device.h @@ -1,10 +1,12 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_MACHINE_SEGACRYPT_DEVICE_H +#define MAME_MACHINE_SEGACRYPT_DEVICE_H + #pragma once -#ifndef __SEGACRPT_Z80__ -#define __SEGACRPT_Z80__ +#include "cpu/z80/z80.h" #define MCFG_SEGACRPT_SET_DECRYPTED_TAG(_tag) \ @@ -23,35 +25,35 @@ segacrpt_z80_device::set_banksize(*device, _banksize); -#include "cpu/z80/z80.h" - // base class class segacrpt_z80_device : public z80_device { public: - segacrpt_z80_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - static void set_decrypted_tag(device_t &device, const char* decrypted_tag); static void set_decrypted_ptr(device_t &device, uint8_t* ptr); // toprollr static void set_size(device_t &device, int size); static void set_numbanks(device_t &device, int _numbanks); static void set_banksize(device_t &device, int _banksize); + void set_decrypted_p(uint8_t* ptr); + void set_region_p(uint8_t* ptr); + +protected: + segacrpt_z80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + virtual void device_start() override; + virtual void device_reset() override; + virtual void decrypt() = 0; + const char* m_decrypted_tag; uint8_t* m_decrypted_ptr; uint8_t* m_region_ptr; int m_decode_size; int m_numbanks; int m_banksize; - bool m_decryption_done; - - void set_decrypted_p(uint8_t* ptr); - void set_region_p(uint8_t* ptr); -protected: - virtual void device_start() override; - virtual void device_reset() override; - virtual void decrypt(); +private: + bool m_decryption_done; }; @@ -264,31 +266,31 @@ protected: }; -extern const device_type SEGA_315_5132; -extern const device_type SEGA_315_5155; -extern const device_type SEGA_315_5110; -extern const device_type SEGA_315_5135; -extern const device_type SEGA_315_5051; -extern const device_type SEGA_315_5098; -extern const device_type SEGA_315_5102; -extern const device_type SEGA_315_5065; -extern const device_type SEGA_315_5064; -extern const device_type SEGA_315_5033; -extern const device_type SEGA_315_5041; -extern const device_type SEGA_315_5048; -extern const device_type SEGA_315_5093; -extern const device_type SEGA_315_5099; -extern const device_type SEGA_315_SPAT; -extern const device_type SEGA_315_5015; -extern const device_type SEGA_315_5133; -extern const device_type SEGA_315_5014; -extern const device_type SEGA_315_5013; -extern const device_type SEGA_315_5061; -extern const device_type SEGA_315_5018; -extern const device_type SEGA_315_5010; -extern const device_type SEGA_CPU_PBACTIO4; -extern const device_type SEGA_315_5028; -extern const device_type SEGA_315_5084; - - -#endif /// __SEGACRPT_Z80__ +DECLARE_DEVICE_TYPE(SEGA_315_5132, sega_315_5132_device) +DECLARE_DEVICE_TYPE(SEGA_315_5155, sega_315_5155_device) +DECLARE_DEVICE_TYPE(SEGA_315_5110, sega_315_5110_device) +DECLARE_DEVICE_TYPE(SEGA_315_5135, sega_315_5135_device) +DECLARE_DEVICE_TYPE(SEGA_315_5051, sega_315_5051_device) +DECLARE_DEVICE_TYPE(SEGA_315_5098, sega_315_5098_device) +DECLARE_DEVICE_TYPE(SEGA_315_5102, sega_315_5102_device) +DECLARE_DEVICE_TYPE(SEGA_315_5065, sega_315_5065_device) +DECLARE_DEVICE_TYPE(SEGA_315_5064, sega_315_5064_device) +DECLARE_DEVICE_TYPE(SEGA_315_5033, sega_315_5033_device) +DECLARE_DEVICE_TYPE(SEGA_315_5041, sega_315_5041_device) +DECLARE_DEVICE_TYPE(SEGA_315_5048, sega_315_5048_device) +DECLARE_DEVICE_TYPE(SEGA_315_5093, sega_315_5093_device) +DECLARE_DEVICE_TYPE(SEGA_315_5099, sega_315_5099_device) +DECLARE_DEVICE_TYPE(SEGA_315_SPAT, sega_315_spat_device) +DECLARE_DEVICE_TYPE(SEGA_315_5015, sega_315_5015_device) +DECLARE_DEVICE_TYPE(SEGA_315_5133, sega_315_5133_device) +DECLARE_DEVICE_TYPE(SEGA_315_5014, sega_315_5014_device) +DECLARE_DEVICE_TYPE(SEGA_315_5013, sega_315_5013_device) +DECLARE_DEVICE_TYPE(SEGA_315_5061, sega_315_5061_device) +DECLARE_DEVICE_TYPE(SEGA_315_5018, sega_315_5018_device) +DECLARE_DEVICE_TYPE(SEGA_315_5010, sega_315_5010_device) +DECLARE_DEVICE_TYPE(SEGA_CPU_PBACTIO4, sega_cpu_pbactio4_device) +DECLARE_DEVICE_TYPE(SEGA_315_5028, sega_315_5028_device) +DECLARE_DEVICE_TYPE(SEGA_315_5084, sega_315_5084_device) + + +#endif // MAME_MACHINE_SEGACRYPT_DEVICE_H diff --git a/src/mame/machine/segaic16.cpp b/src/mame/machine/segaic16.cpp index f1def1e17af..fd46cadf6cc 100644 --- a/src/mame/machine/segaic16.cpp +++ b/src/mame/machine/segaic16.cpp @@ -27,10 +27,10 @@ //************************************************************************** // device type definition -const device_type SEGA_315_5195_MEM_MAPPER = device_creator; -const device_type SEGA_315_5248_MULTIPLIER = device_creator; -const device_type SEGA_315_5249_DIVIDER = device_creator; -const device_type SEGA_315_5250_COMPARE_TIMER = device_creator; +DEFINE_DEVICE_TYPE(SEGA_315_5195_MEM_MAPPER, sega_315_5195_mapper_device, "sega_315_5195", "Sega 315-5195 Memory Mapper") +DEFINE_DEVICE_TYPE(SEGA_315_5248_MULTIPLIER, sega_315_5248_multiplier_device, "sega_315_5248", "Sega 315-5248 Multiplier") +DEFINE_DEVICE_TYPE(SEGA_315_5249_DIVIDER, sega_315_5249_divider_device, "sega_315_5249", "Sega 315-5249 Divider") +DEFINE_DEVICE_TYPE(SEGA_315_5250_COMPARE_TIMER, sega_315_5250_compare_timer_device, "sega_315_5250", "Sega 315-5250 Compare/Timer") @@ -199,7 +199,7 @@ WRITE16_MEMBER( sega_16bit_common_base::philko_paletteram_w ) //------------------------------------------------- sega_315_5195_mapper_device::sega_315_5195_mapper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGA_315_5195_MEM_MAPPER, "Sega 315-5195 Memory Mapper", tag, owner, clock, "sega_315_5195", __FILE__) + : device_t(mconfig, SEGA_315_5195_MEM_MAPPER, tag, owner, clock) , m_cpu(*this, finder_base::DUMMY_TAG) , m_cpuregion(*this, finder_base::DUMMY_TAG) , m_space(nullptr) @@ -739,7 +739,7 @@ void sega_315_5195_mapper_device::decrypt_bank::update() //------------------------------------------------- sega_315_5248_multiplier_device::sega_315_5248_multiplier_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGA_315_5248_MULTIPLIER, "Sega 315-5248 Multiplier", tag, owner, clock, "sega_315_5248", __FILE__) + : device_t(mconfig, SEGA_315_5248_MULTIPLIER, tag, owner, clock) { } @@ -807,7 +807,7 @@ void sega_315_5248_multiplier_device::device_reset() //------------------------------------------------- sega_315_5249_divider_device::sega_315_5249_divider_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGA_315_5249_DIVIDER, "Sega 315-5249 Divider", tag, owner, clock, "sega_315_5249", __FILE__) + : device_t(mconfig, SEGA_315_5249_DIVIDER, tag, owner, clock) { } @@ -952,7 +952,7 @@ void sega_315_5249_divider_device::execute(int mode) //------------------------------------------------- sega_315_5250_compare_timer_device::sega_315_5250_compare_timer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGA_315_5250_COMPARE_TIMER, "Sega 315-5250 Compare/Timer", tag, owner, clock, "sega_315_5250", __FILE__) + : device_t(mconfig, SEGA_315_5250_COMPARE_TIMER, tag, owner, clock) { } diff --git a/src/mame/machine/segaic16.h b/src/mame/machine/segaic16.h index 28c672e6583..b8e73ac6c84 100644 --- a/src/mame/machine/segaic16.h +++ b/src/mame/machine/segaic16.h @@ -51,9 +51,6 @@ class sega_16bit_common_base : public driver_device { public: - // construction/destruction - sega_16bit_common_base(const machine_config &mconfig, device_type type, const char *tag); - // open bus read helpers DECLARE_READ16_MEMBER( open_bus_r ); @@ -62,6 +59,9 @@ public: DECLARE_WRITE16_MEMBER( philko_paletteram_w ); protected: + // construction/destruction + sega_16bit_common_base(const machine_config &mconfig, device_type type, const char *tag); + // internal helpers void palette_init(); @@ -269,10 +269,10 @@ private: // device type definition -extern const device_type SEGA_315_5195_MEM_MAPPER; -extern const device_type SEGA_315_5248_MULTIPLIER; -extern const device_type SEGA_315_5249_DIVIDER; -extern const device_type SEGA_315_5250_COMPARE_TIMER; +DECLARE_DEVICE_TYPE(SEGA_315_5195_MEM_MAPPER, sega_315_5195_mapper_device) +DECLARE_DEVICE_TYPE(SEGA_315_5248_MULTIPLIER, sega_315_5248_multiplier_device) +DECLARE_DEVICE_TYPE(SEGA_315_5249_DIVIDER, sega_315_5249_divider_device) +DECLARE_DEVICE_TYPE(SEGA_315_5250_COMPARE_TIMER, sega_315_5250_compare_timer_device) #endif // MAME_MACHINE_SEGAIC16_H diff --git a/src/mame/machine/segas32.cpp b/src/mame/machine/segas32.cpp index 12286b9e8a3..614608be775 100644 --- a/src/mame/machine/segas32.cpp +++ b/src/mame/machine/segas32.cpp @@ -49,16 +49,6 @@ void segas32_state::decrypt_ga2_protrom() rom[i] = temp[BITSWAP16(i, 14, 11, 15, 12, 13, 4, 3, 7, 5, 10, 2, 8, 9, 6, 1, 0)]; } -WRITE16_MEMBER(segas32_state::ga2_dpram_w) -{ - /* does it ever actually write.. */ -} - -READ16_MEMBER(segas32_state::ga2_dpram_r) -{ - return (m_ga2_dpram[offset])|(m_ga2_dpram[offset+1]<<8); -} - #if 0 // simulation READ16_MEMBER(segas32_state::ga2_sprite_protection_r) diff --git a/src/mame/machine/seibucop/seibucop.cpp b/src/mame/machine/seibucop/seibucop.cpp index 70a3beb7660..eb557abc909 100644 --- a/src/mame/machine/seibucop/seibucop.cpp +++ b/src/mame/machine/seibucop/seibucop.cpp @@ -33,17 +33,18 @@ per-game TODO: Legionnaire - (fixed) player walks on spot on stage clear; - - several if not all enemies definitely wants some sort of "axis aligned bounding box" in order to stop from going out of range + - (fixed) several if not all enemies definitely wants some sort of "axis aligned bounding box" in order to stop from going out of range (when i.e. first boss goes to bottom of the screen and become unreachable) - (btanb) Throw is made by quickly double jumping (!) Heated Barrel + - (btanb) if player moves in diagonal a bogus projectile is fired. - gives random value to hi-score if you continue (only the first time, not a bug?); - (fixed) throws random address exceptions at level 3 and above, a RAM address arrives corrupt in the snippet at 0x136a; - (fixed) some corrupt sprites, probably a non-fatal version of the one above; - - stage 2 boss attacks only in vertical (regressed with the 130e / 3b30 / 42c2 command merge); + - (fixed) stage 2 boss attacks only in vertical (regressed with the 130e / 3b30 / 42c2 command merge); - (fixed) level 3+ boss movements looks wrong; - stage 3 "homing" missiles doesn't seem to like our 6200 hookup here, except it's NOT 6200!? - - barrels seen in later levels seems to fail an axis aligned bounding box, not unlike Legionnaire. + - (fixed) barrels seen in later levels seems to fail an axis aligned bounding box, not unlike Legionnaire. SD Gundam - stage 3 mid-boss still has the sprite garbage bug; - stage 4: has sprite stuck on bottom-left of screen; @@ -110,10 +111,10 @@ if (LOG_Commands) logerror -const device_type RAIDEN2COP = device_creator; +DEFINE_DEVICE_TYPE(RAIDEN2COP, raiden2cop_device, "raiden2cop", "Seibu COP (Raiden 2)") raiden2cop_device::raiden2cop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, RAIDEN2COP, "Seibu COP (Raiden 2)", tag, owner, clock, "raiden2cop", __FILE__), + : device_t(mconfig, RAIDEN2COP, tag, owner, clock), cop_latch_addr(0), cop_latch_trigger(0), cop_latch_value(0), @@ -1071,11 +1072,11 @@ WRITE16_MEMBER( raiden2cop_device::cop_cmd_w) case 0x130e: // 130e 0005 bf7f 0010 - 0984 0aa4 0d82 0aa2 039b 0b9a 0b9a 0a9a case 0x138e: - execute_130e(offset, data); // angle from dx/dy + execute_130e(offset, data, false); // angle from dx/dy break; case 0x338e: { // 338e 0005 bf7f 0030 - 0984 0aa4 0d82 0aa2 039c 0b9c 0b9c 0a9a - execute_338e(offset, data); // angle from dx/dy + execute_338e(offset, data, false); // angle from dx/dy break; } @@ -1434,6 +1435,7 @@ WRITE16_MEMBER(raiden2cop_device::LEGACY_cop_cmd_w) if (check_command_matches(command, 0x984, 0xaa4, 0xd82, 0xaa2, 0x39b, 0xb9a, 0xb9a, 0xa9a, 5, 0xbf7f)) { executed = 1; + // TODO: is it actually called by SD Gundam in any way? LEGACY_execute_130e_cupsoc(offset, data); return; } @@ -1443,7 +1445,7 @@ WRITE16_MEMBER(raiden2cop_device::LEGACY_cop_cmd_w) if (check_command_matches(command, 0x984, 0xaa4, 0xd82, 0xaa2, 0x39b, 0xb9a, 0xb9a, 0xb9a, 5, 0xbf7f)) { executed = 1; - execute_130e(offset, data); + execute_130e(offset, data, true); return; } diff --git a/src/mame/machine/seibucop/seibucop.h b/src/mame/machine/seibucop/seibucop.h index da7eea7731a..7d1a81eaec6 100644 --- a/src/mame/machine/seibucop/seibucop.h +++ b/src/mame/machine/seibucop/seibucop.h @@ -229,11 +229,11 @@ private: void execute_4aa0(int offset, uint16_t data); void execute_6200(int offset, uint16_t data); - void execute_338e(int offset, uint16_t data); + void execute_338e(int offset, uint16_t data, bool is_yflip); void execute_2288(int offset, uint16_t data); void execute_0205(int offset, uint16_t data); void execute_3b30(int offset, uint16_t data); - void execute_130e(int offset, uint16_t data); + void execute_130e(int offset, uint16_t data, bool is_yflip); void execute_0904(int offset, uint16_t data); void execute_2a05(int offset, uint16_t data); void execute_7e05(int offset, uint16_t data); @@ -274,6 +274,6 @@ private: void dma_zsorting(uint16_t data); }; -extern const device_type RAIDEN2COP; +DECLARE_DEVICE_TYPE(RAIDEN2COP, raiden2cop_device) #endif /* RAIDEN2COP_H */ diff --git a/src/mame/machine/seibucop/seibucop_cmd.hxx b/src/mame/machine/seibucop/seibucop_cmd.hxx index 94a7bbe7edd..3cb9eb14ee6 100644 --- a/src/mame/machine/seibucop/seibucop_cmd.hxx +++ b/src/mame/machine/seibucop/seibucop_cmd.hxx @@ -62,10 +62,19 @@ void raiden2cop_device::execute_0904(int offset, uint16_t data) */ // triggered with 130e, 138e -void raiden2cop_device::execute_130e(int offset, uint16_t data) +/* +TAD games uses a variation of this: +[:raiden2cop] COPDIS: 138e s=10 f1=0 l=8 f2=0e 5 bf7f 17 b9a 17.0.1a [:raiden2cop] addmem16 34(r0) +instead of +[:raiden2cop] COPDIS: 130e s=10 f1=0 l=7 f2=0e 5 bf7f 17 a9a 15.0.1a [:raiden2cop] sub32 34(r0) +cop_angle is actually Y flipped when this is called + +TODO: it really needs actual opcode fetching from macro tables +*/ +void raiden2cop_device::execute_130e(int offset, uint16_t data, bool is_yflip) { // this can't be right, or bits 15-12 from mask have different meaning ... - execute_338e(offset, data); + execute_338e(offset, data, is_yflip); } void raiden2cop_device::LEGACY_execute_130e_cupsoc(int offset, uint16_t data) @@ -148,11 +157,11 @@ void raiden2cop_device::execute_2a05(int offset, uint16_t data) 06 - 338e ( 06) ( 38e) : (984, aa4, d82, aa2, 39c, b9c, b9c, a9a) 5 bf7f (legionna, heatbrl, cupsoc, grainbow, godzilla, denjinmk, raiden2, raidendx) 06 - 330e ( 06) ( 30e) : (984, aa4, d82, aa2, 39c, b9c, b9c, a9a) 5 bf7f (zeroteam, xsedae) */ -void raiden2cop_device::execute_338e(int offset, uint16_t data) +void raiden2cop_device::execute_338e(int offset, uint16_t data, bool is_yflip) { int dx = m_host_space->read_dword(cop_regs[1] + 4) - m_host_space->read_dword(cop_regs[0] + 4); int dy = m_host_space->read_dword(cop_regs[1] + 8) - m_host_space->read_dword(cop_regs[0] + 8); - + cop_status = 7; if (!dy) { @@ -173,7 +182,10 @@ void raiden2cop_device::execute_338e(int offset, uint16_t data) if (data & 0x0080) { // TODO: byte or word? - cop_write_byte(cop_regs[0] + 0x34, cop_angle); + if(is_yflip == true) + cop_write_byte(cop_regs[0] + 0x34, cop_angle ^ 0x80); + else + cop_write_byte(cop_regs[0] + 0x34, cop_angle); } } diff --git a/src/mame/machine/seicop.cpp b/src/mame/machine/seicop.cpp index 515b31282a1..55dcd642f74 100644 --- a/src/mame/machine/seicop.cpp +++ b/src/mame/machine/seicop.cpp @@ -18,7 +18,7 @@ #include "includes/legionna.h" -const device_type SEIBU_COP_BOOTLEG = device_creator; +DEFINE_DEVICE_TYPE(SEIBU_COP_BOOTLEG, seibu_cop_bootleg_device, "seibu_cop_boot", "Seibu COP (bootleg)") READ16_MEMBER(seibu_cop_bootleg_device::reg_lo_addr_r) { @@ -246,7 +246,7 @@ static ADDRESS_MAP_START( seibucopbl_map, AS_0, 16, seibu_cop_bootleg_device ) ADDRESS_MAP_END seibu_cop_bootleg_device::seibu_cop_bootleg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEIBU_COP_BOOTLEG, "Seibu COP (Bootleg)", tag, owner, clock, "seibu_cop_boot", __FILE__), + : device_t(mconfig, SEIBU_COP_BOOTLEG, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("regs", ENDIANNESS_LITTLE, 16, 9, 0, nullptr, *ADDRESS_MAP_NAME(seibucopbl_map)) { diff --git a/src/mame/machine/seicop.h b/src/mame/machine/seicop.h index a25a6d22de0..1c25a77e629 100644 --- a/src/mame/machine/seicop.h +++ b/src/mame/machine/seicop.h @@ -1,12 +1,15 @@ // license:LGPL-2.1+ // copyright-holders:Olivier Galibert, Angelo Salese, David Haywood, Tomasz Slanina +#ifndef MAME_MACHINE_SEICOP_H +#define MAME_MACHINE_SEICOP_H + +#pragma once #include "seibucop/seibucop.h" -class seibu_cop_bootleg_device : public device_t, - public device_memory_interface +class seibu_cop_bootleg_device : public device_t, public device_memory_interface { public: seibu_cop_bootleg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -46,6 +49,9 @@ private: }; extern const device_type SEIBU_COP_BOOTLEG; +DECLARE_DEVICE_TYPE(SEIBU_COP_BOOTLEG, seibu_cop_bootleg_device) #define MCFG_DEVICE_SEIBUCOP_BOOTLEG_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, SEIBU_COP_BOOTLEG, 0) + +#endif // MAME_MACHINE_SEICOP_H diff --git a/src/mame/machine/sgi.cpp b/src/mame/machine/sgi.cpp index 909d821fef0..f9dad1b0c2a 100644 --- a/src/mame/machine/sgi.cpp +++ b/src/mame/machine/sgi.cpp @@ -28,10 +28,10 @@ static inline void ATTR_PRINTF(3,4) verboselog( running_machine &machine, int n_ } #endif -const device_type SGI_MC = device_creator; +DEFINE_DEVICE_TYPE(SGI_MC, sgi_mc_device, "sgi_mc", "SGI Memory Controller") sgi_mc_device::sgi_mc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SGI_MC, "SGI Memory Controller", tag, owner, clock, "sgi_mc", __FILE__), + : device_t(mconfig, SGI_MC, tag, owner, clock), m_tUpdateTimer(nullptr), m_nCPUControl0(0), m_nCPUControl1(0), diff --git a/src/mame/machine/sgi.h b/src/mame/machine/sgi.h index f164879d21e..428d68ef499 100644 --- a/src/mame/machine/sgi.h +++ b/src/mame/machine/sgi.h @@ -8,17 +8,18 @@ *********************************************************************/ -#ifndef _SGIMC_H -#define _SGIMC_H +#ifndef MAME_MACHINE_SGI_H +#define MAME_MACHINE_SGI_H + +#pragma once class sgi_mc_device : public device_t { public: sgi_mc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~sgi_mc_device() {} -DECLARE_READ32_MEMBER(read); -DECLARE_WRITE32_MEMBER(write); + DECLARE_READ32_MEMBER(read); + DECLARE_WRITE32_MEMBER(write); protected: // device-level overrides @@ -74,7 +75,7 @@ private: void timer_init(); }; -extern const device_type SGI_MC; +DECLARE_DEVICE_TYPE(SGI_MC, sgi_mc_device) -#endif /* _SGIMC_H */ +#endif // MAME_MACHINE_SGI_H diff --git a/src/mame/machine/slapstic.cpp b/src/mame/machine/slapstic.cpp index 38f74b9358d..45ba5f48312 100644 --- a/src/mame/machine/slapstic.cpp +++ b/src/mame/machine/slapstic.cpp @@ -185,10 +185,20 @@ #include "includes/slapstic.h" -const device_type SLAPSTIC = device_creator; +/************************************* + * + * Debugging + * + *************************************/ + +#define LOG_SLAPSTIC (0) + + + +DEFINE_DEVICE_TYPE(SLAPSTIC, atari_slapstic_device, "slapstic", "Atari Slapstic") atari_slapstic_device::atari_slapstic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SLAPSTIC, "Atari Slapstic", tag, owner, clock, "slapstic", __FILE__), + : device_t(mconfig, SLAPSTIC, tag, owner, clock), state(0), current_bank(0), access_68k(-1), diff --git a/src/mame/machine/sms.cpp b/src/mame/machine/sms.cpp index 1dc3827b811..93f24511f7c 100644 --- a/src/mame/machine/sms.cpp +++ b/src/mame/machine/sms.cpp @@ -68,7 +68,7 @@ WRITE_LINE_MEMBER(sms_state::sms_ctrl2_th_input) WRITE_LINE_MEMBER(sms_state::gg_ext_th_input) { - if (!(m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode())) + if (!(m_cartslot->exists() && m_cartslot->get_sms_mode())) return; // The EXT port act as the controller port 2 on SMS compatibility mode. @@ -128,7 +128,7 @@ WRITE8_MEMBER(sms_state::sms_io_control_w) uint8_t ctrl1_port_data = 0xff; uint8_t ctrl2_port_data = 0xff; - if (m_is_gamegear && !(m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode())) + if (m_is_gamegear && !(m_cartslot->exists() && m_cartslot->get_sms_mode())) { m_io_ctrl_reg = data; return; @@ -226,7 +226,7 @@ WRITE_LINE_MEMBER(sms_state::sms_pause_callback) if (m_is_gamegear) { - if (!(m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode())) + if (!(m_cartslot->exists() && m_cartslot->get_sms_mode())) return; if (!(m_port_start->read() & 0x80)) @@ -325,7 +325,7 @@ READ8_MEMBER(sms_state::sms_input_port_dc_r) { // If SMS mode is disabled, just return the data read from the // input port. Its mapped port bits match the bits of register $dc. - if (!(m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode())) + if (!(m_cartslot->exists() && m_cartslot->get_sms_mode())) return m_port_gg_dc->read(); } else @@ -370,7 +370,7 @@ READ8_MEMBER(sms_state::sms_input_port_dd_r) if (m_is_gamegear) { - if (!(m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode())) + if (!(m_cartslot->exists() && m_cartslot->get_sms_mode())) return 0xff; } else @@ -539,7 +539,7 @@ WRITE8_MEMBER(sms_state::gg_psg_w) WRITE8_MEMBER(sms_state::gg_psg_stereo_w) { - if (m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode()) + if (m_cartslot->exists() && m_cartslot->get_sms_mode()) return; m_psg_gg->stereo_w(space, offset, data, mem_mask); @@ -548,7 +548,7 @@ WRITE8_MEMBER(sms_state::gg_psg_stereo_w) READ8_MEMBER(sms_state::gg_input_port_00_r) { - if (m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode()) + if (m_cartslot->exists() && m_cartslot->get_sms_mode()) return 0xff; else { @@ -840,7 +840,7 @@ WRITE8_MEMBER(sms_state::sg1000m3_peripheral_w) WRITE8_MEMBER(sms_state::gg_sio_w) { - if (m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode()) + if (m_cartslot->exists() && m_cartslot->get_sms_mode()) return; logerror("*** write %02X to SIO register #%d\n", data, offset); @@ -868,7 +868,7 @@ WRITE8_MEMBER(sms_state::gg_sio_w) READ8_MEMBER(sms_state::gg_sio_r) { - if (m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode()) + if (m_cartslot->exists() && m_cartslot->get_sms_mode()) return 0xff; logerror("*** read SIO register #%d\n", offset); @@ -918,7 +918,7 @@ void sms_state::setup_enabled_slots() return; } - if (!(m_mem_ctrl_reg & IO_EXPANSION) && m_smsexpslot && m_smsexpslot->m_device) + if (!(m_mem_ctrl_reg & IO_EXPANSION) && m_smsexpslot && m_smsexpslot->device_present()) { m_mem_device_enabled |= ENABLE_EXPANSION; logerror("Expansion port enabled.\n"); @@ -976,11 +976,11 @@ void sms_state::setup_media_slots() m_lphaser_x_offs = -1; // same value returned for ROMs without custom offset. if (m_mem_device_enabled & ENABLE_CART) - m_lphaser_x_offs = m_cartslot->m_cart->get_lphaser_xoffs(); + m_lphaser_x_offs = m_cartslot->get_lphaser_xoffs(); else if (m_mem_device_enabled & ENABLE_CARD) - m_lphaser_x_offs = m_cardslot->m_cart->get_lphaser_xoffs(); + m_lphaser_x_offs = m_cardslot->get_lphaser_xoffs(); else if (m_mem_device_enabled & ENABLE_EXPANSION) - m_lphaser_x_offs = m_smsexpslot->m_device->get_lphaser_xoffs(); + m_lphaser_x_offs = m_smsexpslot->get_lphaser_xoffs(); if (m_lphaser_x_offs == -1) m_lphaser_x_offs = 36; @@ -1146,7 +1146,7 @@ MACHINE_RESET_MEMBER(sms_state,sms) if (m_is_gamegear) { - if (m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode()) + if (m_cartslot->exists() && m_cartslot->get_sms_mode()) m_vdp->set_sega315_5124_compatibility_mode(true); /* Initialize SIO stuff for GG */ @@ -1368,7 +1368,7 @@ READ32_MEMBER(sms_state::sms_pixel_color) } -void sms_state::screen_vblank_sms1(screen_device &screen, bool state) +WRITE_LINE_MEMBER(sms_state::screen_vblank_sms1) { // on falling edge if (!state) @@ -1491,7 +1491,7 @@ VIDEO_RESET_MEMBER(sms_state,gamegear) m_prev_bitmap.fill(rgb_t::black()); m_prev_bitmap_copied = false; } - if (m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode()) + if (m_cartslot->exists() && m_cartslot->get_sms_mode()) { m_gg_sms_mode_bitmap.fill(rgb_t::black()); memset(m_line_buffer.get(), 0, 160 * 4 * sizeof(int)); @@ -1640,7 +1640,7 @@ uint32_t sms_state::screen_update_gamegear(screen_device &screen, bitmap_rgb32 & { bitmap_rgb32 *source_bitmap; - if (m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode()) + if (m_cartslot->exists() && m_cartslot->get_sms_mode()) { screen_gg_sms_mode_scaling(screen, m_gg_sms_mode_bitmap, cliprect); source_bitmap = &m_gg_sms_mode_bitmap; diff --git a/src/mame/machine/snes.cpp b/src/mame/machine/snes.cpp index 3b688b45e03..56f452e2fa1 100644 --- a/src/mame/machine/snes.cpp +++ b/src/mame/machine/snes.cpp @@ -105,11 +105,11 @@ TIMER_CALLBACK_MEMBER(snes_state::snes_reset_oam_address) // make sure we're in the 65816's context since we're messing with the OAM and stuff address_space &space = m_maincpu->space(AS_PROGRAM); - if (!(m_ppu->m_screen_disabled)) //Reset OAM address, byuu says it happens at H=10 + if (!m_ppu->screen_disabled()) //Reset OAM address, byuu says it happens at H=10 { - space.write_byte(OAMADDL, m_ppu->m_oam.saved_address_low); /* Reset oam address */ - space.write_byte(OAMADDH, m_ppu->m_oam.saved_address_high); - m_ppu->m_oam.first_sprite = m_ppu->m_oam.priority_rotation ? (m_ppu->m_oam.address >> 1) & 127 : 0; + space.write_byte(OAMADDL, m_ppu->saved_oam_address_low()); /* Reset oam address */ + space.write_byte(OAMADDH, m_ppu->saved_oam_address_high()); + m_ppu->set_first_sprite(); } } @@ -130,7 +130,7 @@ TIMER_CALLBACK_MEMBER(snes_state::snes_update_io) TIMER_CALLBACK_MEMBER(snes_state::snes_scanline_tick) { /* Increase current line - we want to latch on this line during it, not after it */ - m_ppu->m_beam.current_vert = m_screen->vpos(); + m_ppu->set_current_vert(m_screen->vpos()); // not in hblank SNES_CPU_REG(HVBJOY) &= ~0x40; @@ -138,7 +138,7 @@ TIMER_CALLBACK_MEMBER(snes_state::snes_scanline_tick) /* Vertical IRQ timer - only if horizontal isn't also enabled! */ if ((SNES_CPU_REG(NMITIMEN) & 0x20) && !(SNES_CPU_REG(NMITIMEN) & 0x10)) { - if (m_ppu->m_beam.current_vert == m_vtime) + if (m_ppu->current_vert() == m_vtime) { SNES_CPU_REG(TIMEUP) = 0x80; /* Indicate that irq occurred */ // IRQ latches the counters, do it now @@ -155,7 +155,7 @@ TIMER_CALLBACK_MEMBER(snes_state::snes_scanline_tick) // is the HIRQ on a specific scanline? if (SNES_CPU_REG(NMITIMEN) & 0x20) { - if (m_ppu->m_beam.current_vert != m_vtime) + if (m_ppu->current_vert() != m_vtime) { setirq = 0; } @@ -163,22 +163,22 @@ TIMER_CALLBACK_MEMBER(snes_state::snes_scanline_tick) if (setirq) { -// printf("HIRQ @ %d, %d\n", pixel * m_ppu->m_htmult, m_ppu->m_beam.current_vert); +// printf("HIRQ @ %d, %d\n", pixel * m_ppu->htmult(), m_ppu->current_vert()); if (pixel == 0) { hirq_tick(); } else { - m_hirq_timer->adjust(m_screen->time_until_pos(m_ppu->m_beam.current_vert, pixel * m_ppu->m_htmult)); + m_hirq_timer->adjust(m_screen->time_until_pos(m_ppu->current_vert(), pixel * m_ppu->htmult())); } } } /* Start of VBlank */ - if (m_ppu->m_beam.current_vert == m_ppu->m_beam.last_visible_line) + if (m_ppu->current_vert() == m_ppu->last_visible_line()) { - timer_set(m_screen->time_until_pos(m_ppu->m_beam.current_vert, 10), TIMER_RESET_OAM_ADDRESS); + timer_set(m_screen->time_until_pos(m_ppu->current_vert(), 10), TIMER_RESET_OAM_ADDRESS); SNES_CPU_REG(HVBJOY) |= 0x81; /* Set vblank bit to on & indicate controllers being read */ SNES_CPU_REG(RDNMI) |= 0x80; /* Set NMI occurred bit */ @@ -190,30 +190,30 @@ TIMER_CALLBACK_MEMBER(snes_state::snes_scanline_tick) } /* three lines after start of vblank we update the controllers (value from snes9x) */ - m_io_timer->adjust(m_screen->time_until_pos(m_ppu->m_beam.current_vert + 2, m_hblank_offset * m_ppu->m_htmult)); + m_io_timer->adjust(m_screen->time_until_pos(m_ppu->current_vert() + 2, m_hblank_offset * m_ppu->htmult())); } // hdma reset happens at scanline 0, H=~6 - if (m_ppu->m_beam.current_vert == 0) + if (m_ppu->current_vert() == 0) { address_space &cpu0space = m_maincpu->space(AS_PROGRAM); hdma_init(cpu0space); } - if (m_ppu->m_beam.current_vert == 0) + if (m_ppu->current_vert() == 0) { /* VBlank is over, time for a new frame */ SNES_CPU_REG(HVBJOY) &= 0x7f; /* Clear vblank bit */ SNES_CPU_REG(RDNMI) &= 0x7f; /* Clear nmi occurred bit */ - m_ppu->m_stat78 ^= 0x80; /* Toggle field flag */ - m_ppu->m_stat77 &= 0x3f; /* Clear Time Over and Range Over bits */ + m_ppu->toggle_field(); + m_ppu->clear_time_range_over(); m_maincpu->set_input_line(G65816_LINE_NMI, CLEAR_LINE ); } m_scanline_timer->adjust(attotime::never); - m_hblank_timer->adjust(m_screen->time_until_pos(m_ppu->m_beam.current_vert, m_hblank_offset * m_ppu->m_htmult)); + m_hblank_timer->adjust(m_screen->time_until_pos(m_ppu->current_vert(), m_hblank_offset * m_ppu->htmult())); -// printf("%02x %d\n",SNES_CPU_REG(HVBJOY),m_ppu->m_beam.current_vert); +// printf("%02x %d\n",SNES_CPU_REG(HVBJOY),m_ppu->current_vert()); } /* This is called at the start of hblank *before* the scanline indicated in current_vert! */ @@ -222,13 +222,13 @@ TIMER_CALLBACK_MEMBER(snes_state::snes_hblank_tick) address_space &cpu0space = m_maincpu->space(AS_PROGRAM); int nextscan; - m_ppu->m_beam.current_vert = m_screen->vpos(); + m_ppu->set_current_vert(m_screen->vpos()); /* make sure we halt */ m_hblank_timer->adjust(attotime::never); /* draw a scanline */ - if (m_ppu->m_beam.current_vert <= m_ppu->m_beam.last_visible_line) + if (m_ppu->current_vert() <= m_ppu->last_visible_line()) { if (m_screen->vpos() > 0) { @@ -236,7 +236,7 @@ TIMER_CALLBACK_MEMBER(snes_state::snes_hblank_tick) if (SNES_CPU_REG(HDMAEN)) hdma(cpu0space); - m_screen->update_partial((m_ppu->m_interlace == 2) ? (m_ppu->m_beam.current_vert * m_ppu->m_interlace) : m_ppu->m_beam.current_vert - 1); + m_screen->update_partial((m_ppu->interlace() == 2) ? (m_ppu->current_vert() * m_ppu->interlace()) : m_ppu->current_vert() - 1); } } @@ -244,8 +244,8 @@ TIMER_CALLBACK_MEMBER(snes_state::snes_hblank_tick) SNES_CPU_REG(HVBJOY) |= 0x40; /* kick off the start of scanline timer */ - nextscan = m_ppu->m_beam.current_vert + 1; - if (nextscan >= (((m_ppu->m_stat78 & 0x10) == SNES_NTSC) ? SNES_VTOTAL_NTSC : SNES_VTOTAL_PAL)) + nextscan = m_ppu->current_vert() + 1; + if (nextscan >= m_ppu->vtotal()) { nextscan = 0; } @@ -561,7 +561,7 @@ WRITE8_MEMBER( snes_state::snes_w_io ) return; case HDMAEN: /* HDMA channel designation */ if (data) //if a HDMA is enabled, data is inited at the next scanline - timer_set(m_screen->time_until_pos(m_ppu->m_beam.current_vert + 1), TIMER_RESET_HDMA); + timer_set(m_screen->time_until_pos(m_ppu->current_vert() + 1), TIMER_RESET_HDMA); SNES_CPU_REG(HDMAEN) = data; return; case TIMEUP: // IRQ Flag is cleared on both read and write @@ -1038,7 +1038,7 @@ void snes_state::snes_init_timers() // SNES hcounter has a 0-339 range. hblank starts at counter 260. // clayfighter sets an HIRQ at 260, apparently it wants it to be before hdma kicks off, so we'll delay 2 pixels. m_hblank_offset = 274; - m_hblank_timer->adjust(m_screen->time_until_pos(((m_ppu->m_stat78 & 0x10) == SNES_NTSC) ? SNES_VTOTAL_NTSC - 1 : SNES_VTOTAL_PAL - 1, m_hblank_offset)); + m_hblank_timer->adjust(m_screen->time_until_pos(m_ppu->vtotal() - 1, m_hblank_offset)); } void snes_state::snes_init_ram() @@ -1065,9 +1065,9 @@ void snes_state::snes_init_ram() // init frame counter so first line is 0 if (ATTOSECONDS_TO_HZ(m_screen->frame_period().attoseconds()) >= 59) - m_ppu->m_beam.current_vert = SNES_VTOTAL_NTSC; + m_ppu->set_current_vert(SNES_VTOTAL_NTSC); else - m_ppu->m_beam.current_vert = SNES_VTOTAL_PAL; + m_ppu->set_current_vert(SNES_VTOTAL_PAL); } void snes_state::machine_start() @@ -1141,9 +1141,7 @@ void snes_state::machine_reset() m_htime = 0x1ff; m_vtime = 0x1ff; - m_ppu->m_htmult = 1; - m_ppu->m_interlace = 1; - m_ppu->m_obj_interlace = 1; + m_ppu->reset_interlace(); } diff --git a/src/mame/machine/st0016.cpp b/src/mame/machine/st0016.cpp index fc14f746b50..ef83a14aaf1 100644 --- a/src/mame/machine/st0016.cpp +++ b/src/mame/machine/st0016.cpp @@ -7,7 +7,7 @@ #include "speaker.h" -const device_type ST0016_CPU = device_creator; +DEFINE_DEVICE_TYPE(ST0016_CPU, st0016_cpu_device, "st0016_cpu", "ST0016") static ADDRESS_MAP_START(st0016_cpu_internal_map, AS_PROGRAM, 8, st0016_cpu_device) AM_RANGE(0xc000, 0xcfff) AM_READ(st0016_sprite_ram_r) AM_WRITE(st0016_sprite_ram_w) @@ -30,7 +30,7 @@ ADDRESS_MAP_END // note: a lot of bits are left uninitialized by the games, the default values are uncertain st0016_cpu_device::st0016_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : z80_device(mconfig, ST0016_CPU, "ST0016", tag, owner, clock, "st0016_cpu", __FILE__), + : z80_device(mconfig, ST0016_CPU, tag, owner, clock), device_gfx_interface(mconfig, *this, nullptr, "palette"), st0016_spr_bank(0), st0016_spr2_bank(0), @@ -148,8 +148,8 @@ WRITE8_MEMBER(st0016_cpu_device::st0016_sprite_bank_w) xxxx - spriteram bank1 xxxx - spriteram bank2 */ - st0016_spr_bank=data&ST0016_SPR_BANK_MASK; - st0016_spr2_bank=(data>>4)&ST0016_SPR_BANK_MASK; + st0016_spr_bank=data&SPR_BANK_MASK; + st0016_spr2_bank=(data>>4)&SPR_BANK_MASK; } WRITE8_MEMBER(st0016_cpu_device::st0016_palette_bank_w) @@ -159,7 +159,7 @@ WRITE8_MEMBER(st0016_cpu_device::st0016_palette_bank_w) xx - palram bank xxxxxx - unknown/unused */ - st0016_pal_bank=data&ST0016_PAL_BANK_MASK; + st0016_pal_bank=data&PAL_BANK_MASK; } WRITE8_MEMBER(st0016_cpu_device::st0016_character_bank_w) @@ -174,40 +174,40 @@ WRITE8_MEMBER(st0016_cpu_device::st0016_character_bank_w) else st0016_char_bank=(st0016_char_bank&0xff00)|data; - st0016_char_bank&=ST0016_CHAR_BANK_MASK; + st0016_char_bank&=CHAR_BANK_MASK; } READ8_MEMBER(st0016_cpu_device::st0016_sprite_ram_r) { - return st0016_spriteram[ST0016_SPR_BANK_SIZE*st0016_spr_bank+offset]; + return st0016_spriteram[SPR_BANK_SIZE*st0016_spr_bank+offset]; } WRITE8_MEMBER(st0016_cpu_device::st0016_sprite_ram_w) { - st0016_spriteram[ST0016_SPR_BANK_SIZE*st0016_spr_bank+offset]=data; + st0016_spriteram[SPR_BANK_SIZE*st0016_spr_bank+offset]=data; } READ8_MEMBER(st0016_cpu_device::st0016_sprite2_ram_r) { - return st0016_spriteram[ST0016_SPR_BANK_SIZE*st0016_spr2_bank+offset]; + return st0016_spriteram[SPR_BANK_SIZE*st0016_spr2_bank+offset]; } WRITE8_MEMBER(st0016_cpu_device::st0016_sprite2_ram_w) { - st0016_spriteram[ST0016_SPR_BANK_SIZE*st0016_spr2_bank+offset]=data; + st0016_spriteram[SPR_BANK_SIZE*st0016_spr2_bank+offset]=data; } READ8_MEMBER(st0016_cpu_device::st0016_palette_ram_r) { - return st0016_paletteram[ST0016_PAL_BANK_SIZE*st0016_pal_bank+offset]; + return st0016_paletteram[PAL_BANK_SIZE*st0016_pal_bank+offset]; } WRITE8_MEMBER(st0016_cpu_device::st0016_palette_ram_w) { - int color=(ST0016_PAL_BANK_SIZE*st0016_pal_bank+offset)/2; + int color=(PAL_BANK_SIZE*st0016_pal_bank+offset)/2; int val; - st0016_paletteram[ST0016_PAL_BANK_SIZE*st0016_pal_bank+offset]=data; + st0016_paletteram[PAL_BANK_SIZE*st0016_pal_bank+offset]=data; val=st0016_paletteram[color*2]+(st0016_paletteram[color*2+1]<<8); if(!color) palette().set_pen_color(UNUSED_PEN,pal5bit(val >> 0),pal5bit(val >> 5),pal5bit(val >> 10)); /* same as color 0 - bg ? */ @@ -216,12 +216,12 @@ WRITE8_MEMBER(st0016_cpu_device::st0016_palette_ram_w) READ8_MEMBER(st0016_cpu_device::st0016_character_ram_r) { - return m_charram[ST0016_CHAR_BANK_SIZE*st0016_char_bank+offset]; + return m_charram[CHAR_BANK_SIZE*st0016_char_bank+offset]; } WRITE8_MEMBER(st0016_cpu_device::st0016_character_ram_w) { - m_charram[ST0016_CHAR_BANK_SIZE*st0016_char_bank+offset]=data; + m_charram[CHAR_BANK_SIZE*st0016_char_bank+offset]=data; gfx(st0016_ramgfx)->mark_dirty(st0016_char_bank); } @@ -258,7 +258,7 @@ READ8_MEMBER(st0016_cpu_device::st0016_vregs_r) READ8_MEMBER(st0016_cpu_device::st0016_dma_r) { /* bits 0 and 1 = 0 -> DMA transfer complete */ - if(ISMACS) + if(ismacs()) return 0; else return 0; @@ -313,7 +313,7 @@ WRITE8_MEMBER(st0016_cpu_device::st0016_vregs_w) while(length>0) { - if( srcadr < srclen && (dstadr < ST0016_MAX_CHAR_BANK*ST0016_CHAR_BANK_SIZE)) + if( srcadr < srclen && (dstadr < MAX_CHAR_BANK*CHAR_BANK_SIZE)) { st0016_char_bank=dstadr>>5; st0016_character_ram_w(space,dstadr&0x1f,mem[srcadr]); @@ -386,7 +386,7 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip int i, j, lx, ly, x, y, code, offset, length, sx, sy, color, flipx, flipy, scrollx, scrolly/*,plx,ply*/; - for (i = 0; i < ST0016_SPR_BANK_SIZE*ST0016_MAX_SPR_BANK; i += 8) + for (i = 0; i < SPR_BANK_SIZE*MAX_SPR_BANK; i += 8) { x = st0016_spriteram[i + 4] + ((st0016_spriteram[i + 5] & 3) << 8); y = st0016_spriteram[i + 6] + ((st0016_spriteram[i + 7] & 3) << 8); @@ -398,7 +398,7 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip scrollx = (st0016_vregs[(((st0016_spriteram[i + 1] & 0x0f) >> 1) << 2) + 0x40] + 256 * st0016_vregs[(((st0016_spriteram[i + 1] & 0x0f) >> 1) << 2) + 1 + 0x40]) & 0x3ff; scrolly = (st0016_vregs[(((st0016_spriteram[i + 1] & 0x0f) >> 1) << 2) + 2 + 0x40] + 256 * st0016_vregs[(((st0016_spriteram[i + 1] & 0x0f) >> 1) << 2) + 3 + 0x40]) & 0x3ff; - if (!ISMACS) + if (!ismacs()) { if (x & 0x200) x -= 0x400; //sign if (y & 0x200) y -= 0x400; @@ -407,7 +407,7 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip if (scrolly & 0x200) scrolly -= 0x400; } - if (ISMACS1) + if (ismacs1()) { if (x & 0x200) x -= 0x400; //sign if (y & 0x200) y -= 0x2b0;//0x400; @@ -419,7 +419,7 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip x += scrollx; y += scrolly; - if (ISMACS) + if (ismacs()) { y += 0x20; } @@ -435,7 +435,7 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip //plx=(st0016_spriteram[i+5]>>2)&0x3; //ply=(st0016_spriteram[i+7]>>2)&0x3; - if (offset < ST0016_SPR_BANK_SIZE*ST0016_MAX_SPR_BANK) + if (offset < SPR_BANK_SIZE*MAX_SPR_BANK) { for (j = 0; j < length; j++) { @@ -443,12 +443,12 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip sx = st0016_spriteram[offset + 4] + ((st0016_spriteram[offset + 5] & 1) << 8); sy = st0016_spriteram[offset + 6] + ((st0016_spriteram[offset + 7] & 1) << 8); - if (ISMACS && !(ISMACS1)) + if (ismacs() && !ismacs1()) { if (sy & 0x100) sy -= 0x200; //yuka & yujan } - if (ISMACS) + if (ismacs()) { sy = 0xe0 - sy; } @@ -480,7 +480,7 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip flipx = st0016_spriteram[offset + 3] & 0x80; flipy = st0016_spriteram[offset + 3] & 0x40; - if (ISMACS) + if (ismacs()) sy -= (1 << ly) * 8; { @@ -497,7 +497,7 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip int gfxoffs; ypos = sy + y0 * 8 + spr_dy; xpos = sx + x0 * 8 + spr_dx; - tileno = (code + i0++)&ST0016_CHAR_BANK_MASK; + tileno = (code + i0++)&CHAR_BANK_MASK; gfxoffs = 0; srcgfx = gfx->get_data(tileno); @@ -530,7 +530,7 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip } else { - if (ISMACS2) + if (ismacs2()) { if (pixdata)//|| destline[drawxpos]==UNUSED_PEN) { @@ -553,7 +553,7 @@ void st0016_cpu_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip } } offset += 8; - if (offset >= ST0016_SPR_BANK_SIZE*ST0016_MAX_SPR_BANK) + if (offset >= SPR_BANK_SIZE*MAX_SPR_BANK) break; } } @@ -570,9 +570,9 @@ void st0016_cpu_device::st0016_save_init() save_item(NAME(m_dma_offset)); //save_item(NAME(st0016_rom_bank)); save_item(NAME(st0016_vregs)); - save_pointer(NAME(m_charram.get()), ST0016_MAX_CHAR_BANK*ST0016_CHAR_BANK_SIZE); - save_pointer(NAME(st0016_paletteram.get()), ST0016_MAX_PAL_BANK*ST0016_PAL_BANK_SIZE); - save_pointer(NAME(st0016_spriteram.get()), ST0016_MAX_SPR_BANK*ST0016_SPR_BANK_SIZE); + save_pointer(NAME(m_charram.get()), MAX_CHAR_BANK*CHAR_BANK_SIZE); + save_pointer(NAME(st0016_paletteram.get()), MAX_PAL_BANK*PAL_BANK_SIZE); + save_pointer(NAME(st0016_spriteram.get()), MAX_SPR_BANK*SPR_BANK_SIZE); } @@ -581,9 +581,9 @@ void st0016_cpu_device::startup() int gfx_index=0; m_dma_offset = 0; - m_charram=make_unique_clear(ST0016_MAX_CHAR_BANK*ST0016_CHAR_BANK_SIZE); - st0016_spriteram=make_unique_clear(ST0016_MAX_SPR_BANK*ST0016_SPR_BANK_SIZE); - st0016_paletteram=make_unique_clear(ST0016_MAX_PAL_BANK*ST0016_PAL_BANK_SIZE); + m_charram=make_unique_clear(MAX_CHAR_BANK*CHAR_BANK_SIZE); + st0016_spriteram=make_unique_clear(MAX_SPR_BANK*SPR_BANK_SIZE); + st0016_paletteram=make_unique_clear(MAX_PAL_BANK*PAL_BANK_SIZE); /* find first empty slot to decode gfx */ for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++) @@ -671,7 +671,7 @@ void st0016_cpu_device::draw_bgmap(bitmap_ind16 &bitmap, const rectangle &clipre destline[drawxpos] = (destline[drawxpos] | (pixdata << 4)) & 0x3ff; else { - if (ISMACS2) + if (ismacs2()) { if (pixdata)// || destline[drawxpos]==UNUSED_PEN) { @@ -716,13 +716,13 @@ uint32_t st0016_cpu_device::update(screen_device &screen, bitmap_ind16 &bitmap, { int h,j; FILE *p=fopen("vram.bin","wb"); - fwrite(st0016_spriteram.get(),1,0x1000*ST0016_MAX_SPR_BANK,p); + fwrite(st0016_spriteram.get(),1,0x1000*MAX_SPR_BANK,p); fclose(p); p=fopen("vram.txt","wt"); for(h=0;h<0xc0;h++) fprintf(p,"VREG %.4x - %.4x\n",h,st0016_vregs[h]); - for(h=0;h<0x1000*ST0016_MAX_SPR_BANK;h+=8) + for(h=0;h<0x1000*MAX_SPR_BANK;h+=8) { fprintf(p,"%.4x - %.4x - ",h,h>>3); for(j=0;j<8;j++) diff --git a/src/mame/machine/st0016.h b/src/mame/machine/st0016.h index c25b1e425e5..92c1805422b 100644 --- a/src/mame/machine/st0016.h +++ b/src/mame/machine/st0016.h @@ -2,8 +2,8 @@ // copyright-holders:Tomasz Slanina, David Haywood /* ST0016 - CPU (z80) + Sound + Video */ -#ifndef MAME_MACHINE_ST0016_CPU_H -#define MAME_MACHINE_ST0016_CPU_H +#ifndef MAME_MACHINE_ST0016_H +#define MAME_MACHINE_ST0016_H #pragma once @@ -11,26 +11,6 @@ #include "sound/st0016.h" #include "screen.h" -#define ISMACS (m_game_flag & 0x80) -#define ISMACS1 (((m_game_flag & 0x180) == 0x180)) -#define ISMACS2 (((m_game_flag & 0x180) == 0x080)) - - -#define ST0016_MAX_SPR_BANK 0x10 -#define ST0016_MAX_CHAR_BANK 0x10000 -#define ST0016_MAX_PAL_BANK 4 - -#define ST0016_SPR_BANK_SIZE 0x1000 -#define ST0016_CHAR_BANK_SIZE 0x20 -#define ST0016_PAL_BANK_SIZE 0x200 - -#define UNUSED_PEN 1024 - -#define ST0016_SPR_BANK_MASK (ST0016_MAX_SPR_BANK-1) -#define ST0016_CHAR_BANK_MASK (ST0016_MAX_CHAR_BANK-1) -#define ST0016_PAL_BANK_MASK (ST0016_MAX_PAL_BANK-1) - - typedef device_delegate st0016_dma_offs_delegate; #define ST0016_DMA_OFFS_CB(name) uint8_t name(void) @@ -83,6 +63,26 @@ public: std::unique_ptr m_charram; protected: + bool ismacs() const { return m_game_flag & 0x80; } + bool ismacs1() const { return (m_game_flag & 0x180) == 0x180; } + bool ismacs2() const { return (m_game_flag & 0x180) == 0x080; } + + + static constexpr unsigned MAX_SPR_BANK = 0x10; + static constexpr unsigned MAX_CHAR_BANK = 0x10000; + static constexpr unsigned MAX_PAL_BANK = 4; + + static constexpr unsigned SPR_BANK_SIZE = 0x1000; + static constexpr unsigned CHAR_BANK_SIZE = 0x20; + static constexpr unsigned PAL_BANK_SIZE = 0x200; + + static constexpr unsigned UNUSED_PEN = 1024; + + static constexpr unsigned SPR_BANK_MASK = MAX_SPR_BANK - 1; + static constexpr unsigned CHAR_BANK_MASK = MAX_CHAR_BANK - 1; + static constexpr unsigned PAL_BANK_MASK = MAX_PAL_BANK - 1; + + // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; @@ -111,7 +111,7 @@ private: // device type definition -extern const device_type ST0016_CPU; +DECLARE_DEVICE_TYPE(ST0016_CPU, st0016_cpu_device) -#endif // MAME_MACHINE_ST0016_CPU_H +#endif // MAME_MACHINE_ST0016_H diff --git a/src/mame/machine/stfight.cpp b/src/mame/machine/stfight.cpp index bc8ceeb09fe..199659d145c 100644 --- a/src/mame/machine/stfight.cpp +++ b/src/mame/machine/stfight.cpp @@ -78,6 +78,8 @@ void stfight_state::machine_start() m_main_bank->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x4000); m_main_bank->set_entry(0); + m_int1_timer = timer_alloc(TIMER_STFIGHT_INTERRUPT_1); + save_item(NAME(m_coin_state)); save_item(NAME(m_fm_data)); @@ -131,7 +133,7 @@ INTERRUPT_GEN_MEMBER(stfight_state::stfight_vb_interrupt) { // Do a RST10 device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xcf); - timer_set(attotime::from_hz(120), TIMER_STFIGHT_INTERRUPT_1); + m_int1_timer->adjust(attotime::from_hz(120)); } /* diff --git a/src/mame/machine/swim.cpp b/src/mame/machine/swim.cpp index 59537173bd8..6e901d1f288 100644 --- a/src/mame/machine/swim.cpp +++ b/src/mame/machine/swim.cpp @@ -32,14 +32,14 @@ enum DEVICE ***************************************************************************/ -const device_type SWIM = device_creator; +DEFINE_DEVICE_TYPE(SWIM, swim_device, "swim", "Apple SWIM (Steve Woz Integrated Machine") //------------------------------------------------- // ctor //------------------------------------------------- swim_device::swim_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : applefdc_base_device(APPLEFDC_SWIM, mconfig, SWIM, "Apple SWIM (Steve Woz Integrated Machine)", tag, owner, clock, "swim", __FILE__) + : applefdc_base_device(APPLEFDC_SWIM, mconfig, SWIM, tag, owner, clock) { } diff --git a/src/mame/machine/swim.h b/src/mame/machine/swim.h index f15412e352e..93d326c32b4 100644 --- a/src/mame/machine/swim.h +++ b/src/mame/machine/swim.h @@ -9,8 +9,8 @@ *********************************************************************/ -#ifndef __SWIM_H__ -#define __SWIM_H__ +#ifndef MAME_MACHINE_SWIM_H +#define MAME_MACHINE_SWIM_H #include "machine/applefdc.h" @@ -19,7 +19,7 @@ DEVICE ***************************************************************************/ -extern const device_type SWIM; +DECLARE_DEVICE_TYPE(SWIM, swim_device) class swim_device : public applefdc_base_device { @@ -60,4 +60,4 @@ private: MCFG_DEVICE_MODIFY(_tag) \ MCFG_APPLEFDC_CONFIG(_intrf) -#endif // __SWIM_H__ +#endif // MAME_MACHINE_SWIM_H diff --git a/src/mame/machine/swtpc09.cpp b/src/mame/machine/swtpc09.cpp index 7f325b2a2b0..9e7773a09fb 100644 --- a/src/mame/machine/swtpc09.cpp +++ b/src/mame/machine/swtpc09.cpp @@ -461,7 +461,7 @@ WRITE8_MEMBER(swtpc09_state::dat_w) address_space &mem = m_maincpu->space(AS_PROGRAM); - fd1793_t *fdc = machine().device("fdc"); + fd1793_device *fdc = machine().device("fdc"); pia6821_device *pia = machine().device("pia"); ptm6840_device *ptm = machine().device("ptm"); acia6850_device *acia = machine().device("acia"); @@ -498,7 +498,7 @@ WRITE8_MEMBER(swtpc09_state::dat_w) mem.install_readwrite_handler(logical_address+0x004, logical_address+0x004, read8_delegate(FUNC(acia6850_device::status_r), acia), write8_delegate(FUNC(acia6850_device::control_w),acia)); mem.install_readwrite_handler(logical_address+0x005, logical_address+0x005, read8_delegate(FUNC(acia6850_device::data_r), acia), write8_delegate(FUNC(acia6850_device::data_w),acia)); mem.install_write_handler(logical_address+0x014, logical_address+0x014, write8_delegate(FUNC(swtpc09_state::dc4_control_reg_w),this)); - mem.install_readwrite_handler(logical_address+0x018, logical_address+0x01b, read8_delegate(FUNC(fd1793_t::read), fdc), write8_delegate(FUNC(fd1793_t::write),fdc)); + mem.install_readwrite_handler(logical_address+0x018, logical_address+0x01b, read8_delegate(FUNC(fd1793_device::read), fdc), write8_delegate(FUNC(fd1793_device::write),fdc)); //mem.nop_readwrite(logical_address+0x01c, logical_address+0x05f); mem.install_readwrite_handler(logical_address+0x060, logical_address+0x06f, read8_delegate(FUNC(pia6821_device::read), piaide), write8_delegate(FUNC(pia6821_device::write), piaide)); //mem.nop_readwrite(logical_address+0x070, logical_address+0x07f); @@ -522,7 +522,7 @@ WRITE8_MEMBER(swtpc09_state::dat_w) if (m_system_type == UNIFLEX_DMF2 || m_system_type == FLEX_DMF2) // if DMF2 conroller this is the map { mem.install_readwrite_handler(logical_address+0x000, logical_address+0x01f, read8_delegate(FUNC(swtpc09_state::m6844_r),this), write8_delegate(FUNC(swtpc09_state::m6844_w),this)); - mem.install_readwrite_handler(logical_address+0x020, logical_address+0x023, read8_delegate(FUNC(fd1793_t::read), fdc), write8_delegate(FUNC(fd1793_t::write),fdc)); + mem.install_readwrite_handler(logical_address+0x020, logical_address+0x023, read8_delegate(FUNC(fd1793_device::read), fdc), write8_delegate(FUNC(fd1793_device::write),fdc)); mem.install_readwrite_handler(logical_address+0x024, logical_address+0x03f, read8_delegate(FUNC(swtpc09_state::dmf2_control_reg_r),this), write8_delegate(FUNC(swtpc09_state::dmf2_control_reg_w),this)); mem.install_readwrite_handler(logical_address+0x040, logical_address+0x041, read8_delegate(FUNC(swtpc09_state::dmf2_dma_address_reg_r),this), write8_delegate(FUNC(swtpc09_state::dmf2_dma_address_reg_w),this)); //mem.nop_readwrite(logical_address+0x042, logical_address+0x7ff); @@ -532,7 +532,7 @@ WRITE8_MEMBER(swtpc09_state::dat_w) else if (m_system_type == FLEX_DC4_PIAIDE) // 2k ram for piaide on s09 board { //mem.install_readwrite_handler(logical_address+0x000, logical_address+0x01f, read8_delegate(FUNC(swtpc09_state::m6844_r),this), write8_delegate(FUNC(swtpc09_state::m6844_w),this)); - //mem.install_readwrite_handler(logical_address+0x020, logical_address+0x023, read8_delegate(FUNC(fd1793_t::read), fdc), write8_delegate(FUNC(fd1793_t::write),fdc)); + //mem.install_readwrite_handler(logical_address+0x020, logical_address+0x023, read8_delegate(FUNC(fd1793_device::read), fdc), write8_delegate(FUNC(fd1793_device::write),fdc)); //mem.install_readwrite_handler(logical_address+0x024, logical_address+0x03f, read8_delegate(FUNC(swtpc09_state::dmf2_control_reg_r),this), write8_delegate(FUNC(swtpc09_state::dmf2_control_reg_w),this)); //mem.install_readwrite_handler(logical_address+0x040, logical_address+0x041, read8_delegate(FUNC(swtpc09_state::dmf2_dma_address_reg_r),this), write8_delegate(FUNC(swtpc09_state::dmf2_dma_address_reg_w),this)); mem.install_ram(logical_address+0x000, logical_address+0x7ff, &RAM[0xf000]); @@ -542,7 +542,7 @@ WRITE8_MEMBER(swtpc09_state::dat_w) else // assume DMF3 controller { mem.install_readwrite_handler(logical_address+0x000, logical_address+0x01f, read8_delegate(FUNC(swtpc09_state::m6844_r),this), write8_delegate(FUNC(swtpc09_state::m6844_w),this)); - mem.install_readwrite_handler(logical_address+0x020, logical_address+0x023, read8_delegate(FUNC(fd1793_t::read), fdc), write8_delegate(FUNC(fd1793_t::write),fdc)); + mem.install_readwrite_handler(logical_address+0x020, logical_address+0x023, read8_delegate(FUNC(fd1793_device::read), fdc), write8_delegate(FUNC(fd1793_device::write),fdc)); mem.install_readwrite_handler(logical_address+0x024, logical_address+0x024, read8_delegate(FUNC(swtpc09_state::dmf3_control_reg_r),this), write8_delegate(FUNC(swtpc09_state::dmf3_control_reg_w),this)); mem.install_readwrite_handler(logical_address+0x025, logical_address+0x025, read8_delegate(FUNC(swtpc09_state::dmf3_dma_address_reg_r),this), write8_delegate(FUNC(swtpc09_state::dmf3_dma_address_reg_w),this)); //mem.nop_readwrite(logical_address+0x030, logical_address+0x03f); diff --git a/src/mame/machine/tait8741.cpp b/src/mame/machine/tait8741.cpp index ba5c223a025..ae9c570b689 100644 --- a/src/mame/machine/tait8741.cpp +++ b/src/mame/machine/tait8741.cpp @@ -13,7 +13,7 @@ Taito 8741 emulation #include "tait8741.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) printf x; } while (0) +#include "logmacro.h" /**************************************************************************** @@ -33,10 +33,10 @@ gladiatr and Great Swordsman set. #define CMD_08 1 #define CMD_4a 2 -const device_type TAITO8741_4PACK = device_creator; +DEFINE_DEVICE_TYPE(TAITO8741_4PACK, taito8741_4pack_device, "taito8741_4pack", "I8741 MCU Simulation (Taito 4Pack)") taito8741_4pack_device::taito8741_4pack_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TAITO8741_4PACK, "I8741 MCU Simulation (Taito 4Pack)", tag, owner, clock, "taito8741_4pack", __FILE__), + : device_t(mconfig, TAITO8741_4PACK, tag, owner, clock), m_port_handler_0_r(*this), m_port_handler_1_r(*this), m_port_handler_2_r(*this), @@ -91,7 +91,7 @@ TIMER_CALLBACK_MEMBER( taito8741_4pack_device::serial_tx ) sst = &m_taito8741[st->connect]; /* transfer data */ serial_rx(sst,st->txd); - LOG(("8741-%d Serial data TX to %d\n",num,st->connect)); + LOG("8741-%d Serial data TX to %d\n",num,st->connect); if( sst->mode==TAITO8741_SLAVE) sst->serial_out = 1; } @@ -275,7 +275,7 @@ int taito8741_4pack_device::status_r(int num) { I8741 *st = &m_taito8741[num]; update(num); - LOG(("%s:8741-%d ST Read %02x\n",machine().describe_context(),num,st->status)); + LOG("%s:8741-%d ST Read %02x\n",machine().describe_context(),num,st->status); return st->status; } @@ -285,7 +285,7 @@ int taito8741_4pack_device::data_r(int num) I8741 *st = &m_taito8741[num]; int ret = st->toData; st->status &= 0xfe; - LOG(("%s:8741-%d DATA Read %02x\n",machine().describe_context(),num,ret)); + LOG("%s:8741-%d DATA Read %02x\n",machine().describe_context(),num,ret); /* update chip */ update(num); @@ -303,7 +303,7 @@ int taito8741_4pack_device::data_r(int num) void taito8741_4pack_device::data_w(int num, int data) { I8741 *st = &m_taito8741[num]; - LOG(("%s:8741-%d DATA Write %02x\n",machine().describe_context(),num,data)); + LOG("%s:8741-%d DATA Write %02x\n",machine().describe_context(),num,data); st->fromData = data; st->status |= 0x02; /* update chip */ @@ -314,7 +314,7 @@ void taito8741_4pack_device::data_w(int num, int data) void taito8741_4pack_device::command_w(int num, int data) { I8741 *st = &m_taito8741[num]; - LOG(("%s:8741-%d CMD Write %02x\n",machine().describe_context(),num,data)); + LOG("%s:8741-%d CMD Write %02x\n",machine().describe_context(),num,data); st->fromCmd = data; st->status |= 0x04; /* update chip */ diff --git a/src/mame/machine/tait8741.h b/src/mame/machine/tait8741.h index 77e2c6338f7..ba97e80b8e3 100644 --- a/src/mame/machine/tait8741.h +++ b/src/mame/machine/tait8741.h @@ -1,8 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Jarek Parchanski -#ifndef __TAITO8741__ -#define __TAITO8741__ +#ifndef MAME_MACHINE_TAITO8741_H +#define MAME_MACHINE_TAITO8741_H +#pragma once /**************************************************************************** gladiatr and Great Swordsman set. @@ -38,32 +39,13 @@ class taito8741_4pack_device : public device_t { - struct I8741 { - int number; - uint8_t toData; /* to host data */ - uint8_t fromData; /* from host data */ - uint8_t fromCmd; /* from host command */ - uint8_t status; /* b0 = rd ready,b1 = wd full,b2 = cmd ?? */ - uint8_t mode; - uint8_t phase; - uint8_t txd[8]; - uint8_t rxd[8]; - uint8_t parallelselect; - uint8_t txpoint; - int connect; - uint8_t pending4a; - int serial_out; - int coins; - }; - public: taito8741_4pack_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~taito8741_4pack_device() {} - template static devcb_base &set_port_handler_0_callback(device_t &device, _Object object) { return downcast(device).m_port_handler_0_r.set_callback(object); } - template static devcb_base &set_port_handler_1_callback(device_t &device, _Object object) { return downcast(device).m_port_handler_1_r.set_callback(object); } - template static devcb_base &set_port_handler_2_callback(device_t &device, _Object object) { return downcast(device).m_port_handler_2_r.set_callback(object); } - template static devcb_base &set_port_handler_3_callback(device_t &device, _Object object) { return downcast(device).m_port_handler_3_r.set_callback(object); } + template static devcb_base &set_port_handler_0_callback(device_t &device, Object &&cb) { return downcast(device).m_port_handler_0_r.set_callback(std::forward(cb)); } + template static devcb_base &set_port_handler_1_callback(device_t &device, Object &&cb) { return downcast(device).m_port_handler_1_r.set_callback(std::forward(cb)); } + template static devcb_base &set_port_handler_2_callback(device_t &device, Object &&cb) { return downcast(device).m_port_handler_2_r.set_callback(std::forward(cb)); } + template static devcb_base &set_port_handler_3_callback(device_t &device, Object &&cb) { return downcast(device).m_port_handler_3_r.set_callback(std::forward(cb)); } static void static_set_mode(device_t &device, int num, uint8_t mode) { downcast(device).m_taito8741[num].mode = mode; } static void static_set_connect(device_t &device, int num, int conn) { downcast(device).m_taito8741[num].connect = conn; } @@ -92,6 +74,24 @@ protected: virtual void device_reset() override; private: + struct I8741 { + int number; + uint8_t toData; /* to host data */ + uint8_t fromData; /* from host data */ + uint8_t fromCmd; /* from host command */ + uint8_t status; /* b0 = rd ready,b1 = wd full,b2 = cmd ?? */ + uint8_t mode; + uint8_t phase; + uint8_t txd[8]; + uint8_t rxd[8]; + uint8_t parallelselect; + uint8_t txpoint; + int connect; + uint8_t pending4a; + int serial_out; + int coins; + }; + void hostdata_w(I8741 *st,int data); int hostdata_r(I8741 *st); int hostcmd_r(I8741 *st); @@ -107,6 +107,6 @@ private: }; -extern const device_type TAITO8741_4PACK; +DECLARE_DEVICE_TYPE(TAITO8741_4PACK, taito8741_4pack_device) -#endif +#endif // MAME_MACHINE_TAITO8741_H diff --git a/src/mame/machine/taito68705interface.cpp b/src/mame/machine/taito68705interface.cpp index 6d08d10468f..176dbe899b2 100644 --- a/src/mame/machine/taito68705interface.cpp +++ b/src/mame/machine/taito68705interface.cpp @@ -73,10 +73,10 @@ MACHINE_CONFIG_END } // anonymous namespace -device_type const TAITO68705_MCU = device_creator; -device_type const TAITO68705_MCU_TIGER = device_creator; -device_type const ARKANOID_68705P3 = device_creator; -device_type const ARKANOID_68705P5 = device_creator; +DEFINE_DEVICE_TYPE(TAITO68705_MCU, taito68705_mcu_device, "taito68705", "Taito MC68705 MCU Interface") +DEFINE_DEVICE_TYPE(TAITO68705_MCU_TIGER, taito68705_mcu_tiger_device, "taito68705tiger", "Taito MC68705 MCU Interface (Tiger Heli)") +DEFINE_DEVICE_TYPE(ARKANOID_68705P3, arkanoid_68705p3_device, "arkanoid68705p3", "Arkanoid MC68705P3 Interface") +DEFINE_DEVICE_TYPE(ARKANOID_68705P5, arkanoid_68705p5_device, "arkanoid68705p5", "Arkanoid MC68705P5 Interface") READ8_MEMBER(taito68705_mcu_device_base::data_r) @@ -122,13 +122,10 @@ WRITE8_MEMBER(taito68705_mcu_device_base::mcu_pa_w) taito68705_mcu_device_base::taito68705_mcu_device_base( machine_config const &mconfig, device_type type, - char const *name, char const *tag, device_t *owner, - u32 clock, - char const *shortname, - char const *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) + u32 clock) + : device_t(mconfig, type, tag, owner, clock) , m_mcu(*this, "mcu") , m_semaphore_cb(*this) , m_latch_driven(false) @@ -209,12 +206,12 @@ void taito68705_mcu_device_base::latch_control(u8 data, u8 &value, unsigned host taito68705_mcu_device::taito68705_mcu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : taito68705_mcu_device(mconfig, TAITO68705_MCU, "Taito MC68705 MCU Interface", tag, owner, clock, "taito68705", __FILE__) + : taito68705_mcu_device(mconfig, TAITO68705_MCU, tag, owner, clock) { } -taito68705_mcu_device::taito68705_mcu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source) - : taito68705_mcu_device_base(mconfig, type, name, tag, owner, clock, shortname, source) +taito68705_mcu_device::taito68705_mcu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) + : taito68705_mcu_device_base(mconfig, type, tag, owner, clock) , m_aux_strobe_cb(*this) , m_pb_output(0xff) { @@ -285,7 +282,7 @@ WRITE8_MEMBER(taito68705_mcu_device::mcu_portb_w) /* The Tiger Heli interface has some extensions, handle them here */ taito68705_mcu_tiger_device::taito68705_mcu_tiger_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : taito68705_mcu_device(mconfig, TAITO68705_MCU_TIGER, "Taito MC68705 MCU Interface (Tiger Heli)", tag, owner, clock, "taito68705tiger", __FILE__) + : taito68705_mcu_device(mconfig, TAITO68705_MCU_TIGER, tag, owner, clock) { } @@ -320,13 +317,10 @@ WRITE8_MEMBER(arkanoid_mcu_device_base::mcu_pc_w) arkanoid_mcu_device_base::arkanoid_mcu_device_base( machine_config const &mconfig, device_type type, - char const *name, char const *tag, device_t *owner, - u32 clock, - char const *shortname, - char const *source) - : taito68705_mcu_device_base(mconfig, type, name, tag, owner, clock, shortname, source) + u32 clock) + : taito68705_mcu_device_base(mconfig, type, tag, owner, clock) , m_portb_r_cb(*this) , m_pc_output(0xff) { @@ -349,7 +343,7 @@ arkanoid_68705p3_device::arkanoid_68705p3_device( char const *tag, device_t *owner, u32 clock) - : arkanoid_mcu_device_base(mconfig, ARKANOID_68705P3, "Arkanoid MC68705P3 Interface", tag, owner, clock, "arkanoid68705p3", __FILE__) + : arkanoid_mcu_device_base(mconfig, ARKANOID_68705P3, tag, owner, clock) { } @@ -364,7 +358,7 @@ arkanoid_68705p5_device::arkanoid_68705p5_device( char const *tag, device_t *owner, u32 clock) - : arkanoid_mcu_device_base(mconfig, ARKANOID_68705P5, "Arkanoid MC68705P5 Interface", tag, owner, clock, "arkanoid68705p5", __FILE__) + : arkanoid_mcu_device_base(mconfig, ARKANOID_68705P5, tag, owner, clock) { } diff --git a/src/mame/machine/taito68705interface.h b/src/mame/machine/taito68705interface.h index aa0ea8f35d3..dd718e68510 100644 --- a/src/mame/machine/taito68705interface.h +++ b/src/mame/machine/taito68705interface.h @@ -1,13 +1,17 @@ // license:BSD-3-Clause // copyright-holders:Ernesto Corvi, Nicola Salmoria, David Haywood, Vas Crabb +#ifndef MAME_MACHINE_TAITO68705INTERFACE_H +#define MAME_MACHINE_TAITO68705INTERFACE_H + +#pragma once #include "cpu/m6805/m68705.h" -extern const device_type TAITO68705_MCU; -extern const device_type TAITO68705_MCU_TIGER; -extern const device_type ARKANOID_68705P3; -extern const device_type ARKANOID_68705P5; +DECLARE_DEVICE_TYPE(TAITO68705_MCU, taito68705_mcu_device) +DECLARE_DEVICE_TYPE(TAITO68705_MCU_TIGER, taito68705_mcu_tiger_device) +DECLARE_DEVICE_TYPE(ARKANOID_68705P3, arkanoid_68705p3_device) +DECLARE_DEVICE_TYPE(ARKANOID_68705P5, arkanoid_68705p5_device) class taito68705_mcu_device_base : public device_t @@ -32,12 +36,9 @@ protected: taito68705_mcu_device_base( machine_config const &mconfig, device_type type, - char const *name, char const *tag, device_t *owner, - u32 clock, - char const *shortname, - char const *source); + u32 clock); virtual void device_start() override; virtual void device_reset() override; @@ -77,7 +78,7 @@ public: DECLARE_WRITE8_MEMBER(mcu_portb_w); protected: - taito68705_mcu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source); + taito68705_mcu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; @@ -117,12 +118,9 @@ protected: arkanoid_mcu_device_base( machine_config const &mconfig, device_type type, - char const *name, char const *tag, device_t *owner, - u32 clock, - char const *shortname, - char const *source); + u32 clock); virtual void device_start() override; @@ -150,3 +148,5 @@ public: protected: virtual machine_config_constructor device_mconfig_additions() const override; }; + +#endif // MAME_MACHINE_TAITO68705INTERFACE_H diff --git a/src/mame/machine/taitoio.cpp b/src/mame/machine/taitoio.cpp index cd38073857a..aa3b1940af7 100644 --- a/src/mame/machine/taitoio.cpp +++ b/src/mame/machine/taitoio.cpp @@ -59,10 +59,10 @@ MACHINE_CONFIG_END /* */ /***************************************************************************/ -const device_type TC0220IOC = device_creator; +DEFINE_DEVICE_TYPE(TC0220IOC, tc0220ioc_device, "tc0220ioc", "Taito TC0220IOC") tc0220ioc_device::tc0220ioc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0220IOC, "Taito TC0220IOC", tag, owner, clock, "tc0220ioc", __FILE__), + : device_t(mconfig, TC0220IOC, tag, owner, clock), m_watchdog(*this, "watchdog"), m_read_0_cb(*this), m_read_1_cb(*this), @@ -196,10 +196,10 @@ WRITE8_MEMBER( tc0220ioc_device::portreg_w ) /***************************************************************************/ -const device_type TC0510NIO = device_creator; +DEFINE_DEVICE_TYPE(TC0510NIO, tc0510nio_device, "tc0510nio", "Taito TC0510NIO") tc0510nio_device::tc0510nio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0510NIO, "Taito TC0510NIO", tag, owner, clock, "tc0510nio", __FILE__), + : device_t(mconfig, TC0510NIO, tag, owner, clock), m_watchdog(*this, "watchdog"), m_read_0_cb(*this), m_read_1_cb(*this), @@ -334,10 +334,10 @@ WRITE16_MEMBER( tc0510nio_device::halfword_wordswap_w ) /***************************************************************************/ -const device_type TC0640FIO = device_creator; +DEFINE_DEVICE_TYPE(TC0640FIO, tc0640fio_device, "tc0640fio", "Taito TC0640FIO") tc0640fio_device::tc0640fio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0640FIO, "Taito TC0640FIO", tag, owner, clock, "tc0640fio", __FILE__), + : device_t(mconfig, TC0640FIO, tag, owner, clock), m_watchdog(*this, "watchdog"), m_read_0_cb(*this), m_read_1_cb(*this), diff --git a/src/mame/machine/taitoio.h b/src/mame/machine/taitoio.h index 30bef9e7eae..83919a71a26 100644 --- a/src/mame/machine/taitoio.h +++ b/src/mame/machine/taitoio.h @@ -8,8 +8,10 @@ **************************************************************************/ -#ifndef __TAITOIO_H__ -#define __TAITOIO_H__ +#ifndef MAME_MACHINE_TAITOIO_H +#define MAME_MACHINE_TAITOIO_H + +#pragma once #include "machine/watchdog.h" @@ -18,13 +20,12 @@ class tc0220ioc_device : public device_t { public: tc0220ioc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0220ioc_device() {} - template static devcb_base &set_read_0_callback(device_t &device, _Object object) { return downcast(device).m_read_0_cb.set_callback(object); } - template static devcb_base &set_read_1_callback(device_t &device, _Object object) { return downcast(device).m_read_1_cb.set_callback(object); } - template static devcb_base &set_read_2_callback(device_t &device, _Object object) { return downcast(device).m_read_2_cb.set_callback(object); } - template static devcb_base &set_read_3_callback(device_t &device, _Object object) { return downcast(device).m_read_3_cb.set_callback(object); } - template static devcb_base &set_read_7_callback(device_t &device, _Object object) { return downcast(device).m_read_7_cb.set_callback(object); } + template static devcb_base &set_read_0_callback(device_t &device, Object &&cb) { return downcast(device).m_read_0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_1_callback(device_t &device, Object &&cb) { return downcast(device).m_read_1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_2_callback(device_t &device, Object &&cb) { return downcast(device).m_read_2_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_3_callback(device_t &device, Object &&cb) { return downcast(device).m_read_3_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_7_callback(device_t &device, Object &&cb) { return downcast(device).m_read_7_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -53,19 +54,18 @@ private: devcb_read8 m_read_7_cb; }; -extern const device_type TC0220IOC; +DECLARE_DEVICE_TYPE(TC0220IOC, tc0220ioc_device) class tc0510nio_device : public device_t { public: tc0510nio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0510nio_device() {} - template static devcb_base &set_read_0_callback(device_t &device, _Object object) { return downcast(device).m_read_0_cb.set_callback(object); } - template static devcb_base &set_read_1_callback(device_t &device, _Object object) { return downcast(device).m_read_1_cb.set_callback(object); } - template static devcb_base &set_read_2_callback(device_t &device, _Object object) { return downcast(device).m_read_2_cb.set_callback(object); } - template static devcb_base &set_read_3_callback(device_t &device, _Object object) { return downcast(device).m_read_3_cb.set_callback(object); } - template static devcb_base &set_read_7_callback(device_t &device, _Object object) { return downcast(device).m_read_7_cb.set_callback(object); } + template static devcb_base &set_read_0_callback(device_t &device, Object &&cb) { return downcast(device).m_read_0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_1_callback(device_t &device, Object &&cb) { return downcast(device).m_read_1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_2_callback(device_t &device, Object &&cb) { return downcast(device).m_read_2_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_3_callback(device_t &device, Object &&cb) { return downcast(device).m_read_3_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_7_callback(device_t &device, Object &&cb) { return downcast(device).m_read_7_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -93,19 +93,18 @@ private: devcb_read8 m_read_7_cb; }; -extern const device_type TC0510NIO; +DECLARE_DEVICE_TYPE(TC0510NIO, tc0510nio_device) class tc0640fio_device : public device_t { public: tc0640fio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0640fio_device() {} - template static devcb_base &set_read_0_callback(device_t &device, _Object object) { return downcast(device).m_read_0_cb.set_callback(object); } - template static devcb_base &set_read_1_callback(device_t &device, _Object object) { return downcast(device).m_read_1_cb.set_callback(object); } - template static devcb_base &set_read_2_callback(device_t &device, _Object object) { return downcast(device).m_read_2_cb.set_callback(object); } - template static devcb_base &set_read_3_callback(device_t &device, _Object object) { return downcast(device).m_read_3_cb.set_callback(object); } - template static devcb_base &set_read_7_callback(device_t &device, _Object object) { return downcast(device).m_read_7_cb.set_callback(object); } + template static devcb_base &set_read_0_callback(device_t &device, Object &&cb) { return downcast(device).m_read_0_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_1_callback(device_t &device, Object &&cb) { return downcast(device).m_read_1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_2_callback(device_t &device, Object &&cb) { return downcast(device).m_read_2_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_3_callback(device_t &device, Object &&cb) { return downcast(device).m_read_3_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_read_7_callback(device_t &device, Object &&cb) { return downcast(device).m_read_7_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); @@ -134,7 +133,7 @@ protected: devcb_read8 m_read_7_cb; }; -extern const device_type TC0640FIO; +DECLARE_DEVICE_TYPE(TC0640FIO, tc0640fio_device) /*************************************************************************** @@ -189,4 +188,4 @@ extern const device_type TC0640FIO; devcb = &tc0640fio_device::set_read_7_callback(*device, DEVCB_##_devcb); -#endif /* __TAITOIO_H__ */ +#endif // MAME_MACHINE_TAITOIO_H diff --git a/src/mame/machine/tandy2kb.cpp b/src/mame/machine/tandy2kb.cpp index fa84fbec7ee..395fd26c09b 100644 --- a/src/mame/machine/tandy2kb.cpp +++ b/src/mame/machine/tandy2kb.cpp @@ -23,7 +23,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type TANDY2K_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(TANDY2K_KEYBOARD, tandy2k_keyboard_device, "tandy2kb", "Tandy 2000 Keyboard") @@ -47,24 +47,15 @@ const tiny_rom_entry *tandy2k_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( tandy2k_keyboard_io, AS_IO, 8, tandy2k_keyboard_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(kb_p1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( tandy2k_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( tandy2k_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, 1000000) // ? - MCFG_CPU_IO_MAP(tandy2k_keyboard_io) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(tandy2k_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(tandy2k_keyboard_device, kb_p2_w)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(tandy2k_keyboard_device, kb_p1_r)) MCFG_DEVICE_DISABLE() // TODO MACHINE_CONFIG_END @@ -227,7 +218,7 @@ ioport_constructor tandy2k_keyboard_device::device_input_ports() const //------------------------------------------------- tandy2k_keyboard_device::tandy2k_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, TANDY2K_KEYBOARD, "Tandy 2000 Keyboard", tag, owner, clock, "tandy2kb", __FILE__), + device_t(mconfig, TANDY2K_KEYBOARD, tag, owner, clock), m_maincpu(*this, I8048_TAG), m_y(*this, "Y%u", 0), m_write_clock(*this), diff --git a/src/mame/machine/tandy2kb.h b/src/mame/machine/tandy2kb.h index b2ad63a38f1..255caae6f4e 100644 --- a/src/mame/machine/tandy2kb.h +++ b/src/mame/machine/tandy2kb.h @@ -6,10 +6,10 @@ *********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_TANDY2KB_H +#define MAME_MACHINE_TANDY2KB_H -#ifndef __TANDY2K_KEYBOARD__ -#define __TANDY2K_KEYBOARD__ +#pragma once #include "cpu/mcs48/mcs48.h" @@ -47,8 +47,8 @@ public: // construction/destruction tandy2k_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_clock_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_clock.set_callback(object); } - template static devcb_base &set_data_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_data.set_callback(object); } + template static devcb_base &set_clock_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_clock.set_callback(std::forward(cb)); } + template static devcb_base &set_data_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_data.set_callback(std::forward(cb)); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -91,8 +91,6 @@ private: // device type definition -extern const device_type TANDY2K_KEYBOARD; - - +DECLARE_DEVICE_TYPE(TANDY2K_KEYBOARD, tandy2k_keyboard_device) -#endif +#endif // MAME_MACHINE_TANDY2KB_H diff --git a/src/mame/machine/tatsumi.cpp b/src/mame/machine/tatsumi.cpp index 25de2eca2e6..a17a33ee903 100644 --- a/src/mame/machine/tatsumi.cpp +++ b/src/mame/machine/tatsumi.cpp @@ -245,15 +245,9 @@ WRITE16_MEMBER(tatsumi_state::roundup5_e0000_w) /******************************************************************************/ -READ16_MEMBER(tatsumi_state::cyclwarr_control_r) +WRITE8_MEMBER(tatsumi_state::cyclwarr_control_w) { -// logerror("%08x: control_r\n", space.device().safe_pc()); - return m_control_word; -} - -WRITE16_MEMBER(tatsumi_state::cyclwarr_control_w) -{ - COMBINE_DATA(&m_control_word); + m_control_word = data; // if ((m_control_word&0xfe) != (m_last_control&0xfe)) // logerror("%08x: control_w %04x\n", space.device().safe_pc(), data); @@ -296,7 +290,7 @@ READ16_MEMBER(tatsumi_state::tatsumi_v30_68000_r) { const uint16_t* rom=(uint16_t*)memregion("sub")->base(); -logerror("%05X:68000_r(%04X),cw=%04X\n", space.device().safe_pc(), offset*2, m_control_word); +//logerror("%05X:68000_r(%04X),cw=%04X\n", space.device().safe_pc(), offset*2, m_control_word); /* Read from 68k RAM */ if ((m_control_word&0x1f)==0x18) { diff --git a/src/mame/machine/teleprinter.cpp b/src/mame/machine/teleprinter.cpp index b2b3ffdae10..0f55b706630 100644 --- a/src/mame/machine/teleprinter.cpp +++ b/src/mame/machine/teleprinter.cpp @@ -140,20 +140,20 @@ static const uint8_t teleprinter_font[128*8] = }; teleprinter_device::teleprinter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : generic_terminal_device(mconfig, TELEPRINTER, "Teleprinter", tag, owner, clock, "teleprinter", __FILE__) + : generic_terminal_device(mconfig, TELEPRINTER, tag, owner, clock, WIDTH, HEIGHT) { } void teleprinter_device::scroll_line() { - memmove(m_buffer,m_buffer+TELEPRINTER_WIDTH,(TELEPRINTER_HEIGHT-1)*TELEPRINTER_WIDTH); - memset(m_buffer + TELEPRINTER_WIDTH*(TELEPRINTER_HEIGHT-1),0x20,TELEPRINTER_WIDTH); + memmove(m_buffer.get(), m_buffer.get() + m_width, (m_height-1) * m_width); + memset(m_buffer.get() + m_width * (m_height-1), 0x20, m_width); } void teleprinter_device::write_char(uint8_t data) { - m_buffer[(TELEPRINTER_HEIGHT-1)*TELEPRINTER_WIDTH+m_x_pos] = data; + m_buffer[(m_height-1)*m_width+m_x_pos] = data; m_x_pos++; - if (m_x_pos >= TELEPRINTER_WIDTH) + if (m_x_pos >= m_width) { m_x_pos = 0; scroll_line(); @@ -161,7 +161,7 @@ void teleprinter_device::write_char(uint8_t data) { } void teleprinter_device::clear() { - memset(m_buffer,0,TELEPRINTER_WIDTH*TELEPRINTER_HEIGHT); + memset(m_buffer.get(), 0, m_width*m_height); m_x_pos = 0; } @@ -173,8 +173,8 @@ void teleprinter_device::term_write(uint8_t data) break; case 13: m_x_pos = 0; break; case 9: m_x_pos = (m_x_pos & 0xf8) + 8; - if (m_x_pos >= TELEPRINTER_WIDTH) - m_x_pos = TELEPRINTER_WIDTH-1; + if (m_x_pos >= m_width) + m_x_pos = m_width-1; break; case 16: break; @@ -190,14 +190,14 @@ uint32_t teleprinter_device::tp_update(screen_device &device, bitmap_rgb32 &bitm uint8_t code; int y, c, x, b; - for (y = 0; y < TELEPRINTER_HEIGHT; y++) + for (y = 0; y < m_height; y++) { for (c = 0; c < 8; c++) { int horpos = 0; - for (x = 0; x < TELEPRINTER_WIDTH; x++) + for (x = 0; x < m_width; x++) { - code = teleprinter_font[(m_buffer[y*TELEPRINTER_WIDTH + x] & 0x7f) *8 + c]; + code = teleprinter_font[(m_buffer[y*m_width + x] & 0x7f) *8 + c]; for (b = 0; b < 8; b++) { bitmap.pix32(y*8 + c, horpos++) = (code >> b) & 0x01 ? 0 : 0x00ffffff; @@ -215,11 +215,11 @@ MACHINE_CONFIG_FRAGMENT( generic_teleprinter ) MCFG_SCREEN_ADD(TELEPRINTER_SCREEN_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ - MCFG_SCREEN_SIZE(TELEPRINTER_WIDTH*8, TELEPRINTER_HEIGHT*8) - MCFG_SCREEN_VISIBLE_AREA(0, TELEPRINTER_WIDTH*8-1, 0, TELEPRINTER_HEIGHT*8-1) + MCFG_SCREEN_SIZE(teleprinter_device::WIDTH*8, teleprinter_device::HEIGHT*8) + MCFG_SCREEN_VISIBLE_AREA(0, teleprinter_device::WIDTH*8-1, 0, teleprinter_device::HEIGHT*8-1) MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, teleprinter_device, tp_update) MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) - MCFG_GENERIC_KEYBOARD_CB(WRITE8(generic_terminal_device, kbd_put)) + MCFG_GENERIC_KEYBOARD_CB(PUT(generic_terminal_device, kbd_put)) MCFG_SPEAKER_STANDARD_MONO("bell") MCFG_SOUND_ADD("beeper", BEEP, 2'000) @@ -241,4 +241,4 @@ void teleprinter_device::device_reset() generic_terminal_device::device_reset(); } -const device_type TELEPRINTER = device_creator; +DEFINE_DEVICE_TYPE(TELEPRINTER, teleprinter_device, "teleprinter", "Teleprinter") diff --git a/src/mame/machine/teleprinter.h b/src/mame/machine/teleprinter.h index f9f58130452..83a46e24a64 100644 --- a/src/mame/machine/teleprinter.h +++ b/src/mame/machine/teleprinter.h @@ -1,12 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Miodrag Milanovic -#ifndef __TELEPRINTER_H__ -#define __TELEPRINTER_H__ +#ifndef MAME_MACHINE_TELEPRINTER_H +#define MAME_MACHINE_TELEPRINTER_H -#include "machine/terminal.h" +#pragma once -#define TELEPRINTER_WIDTH 80 -#define TELEPRINTER_HEIGHT 50 +#include "machine/terminal.h" /*************************************************************************** @@ -15,8 +14,8 @@ #define TELEPRINTER_TAG "teleprinter" #define TELEPRINTER_SCREEN_TAG "tty_screen" -#define MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(_devcb) \ - devcb = &generic_terminal_device::set_keyboard_callback(*device, DEVCB_##_devcb); +#define MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(cb) \ + generic_terminal_device::set_keyboard_callback(*device, KEYBOARDCB_##cb); /*************************************************************************** FUNCTION PROTOTYPES @@ -25,18 +24,23 @@ class teleprinter_device : public generic_terminal_device { public: + static constexpr unsigned WIDTH = 80; + static constexpr unsigned HEIGHT = 50; + teleprinter_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); uint32_t tp_update(screen_device &device, bitmap_rgb32 &bitmap, const rectangle &cliprect); + protected: virtual void term_write(uint8_t data) override; virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; + private: void scroll_line(); void write_char(uint8_t data); void clear(); }; -extern const device_type TELEPRINTER; +DECLARE_DEVICE_TYPE(TELEPRINTER, teleprinter_device) -#endif /* __TELEPRINTER_H__ */ +#endif // MAME_MACHINE_TELEPRINTER_H diff --git a/src/mame/machine/thomflop.cpp b/src/mame/machine/thomflop.cpp index 6bb7416c51f..25fa0292a7f 100644 --- a/src/mame/machine/thomflop.cpp +++ b/src/mame/machine/thomflop.cpp @@ -276,7 +276,7 @@ static uint8_t to7_5p14_select; READ8_MEMBER( thomson_state::to7_5p14_r ) { - wd2793_t *fdc = machine().device("wd2793"); + wd2793_device *fdc = machine().device("wd2793"); if ( offset < 4 ) return fdc->read(space, offset ); @@ -291,7 +291,7 @@ READ8_MEMBER( thomson_state::to7_5p14_r ) WRITE8_MEMBER( thomson_state::to7_5p14_w ) { - wd2793_t *fdc = machine().device("wd2793"); + wd2793_device *fdc = machine().device("wd2793"); if ( offset < 4 ) fdc->write(space, offset, data ); else if ( offset == 8 ) @@ -320,7 +320,7 @@ WRITE8_MEMBER( thomson_state::to7_5p14_w ) void thomson_state::to7_5p14_reset() { - wd2793_t *fdc = machine().device("wd2793"); + wd2793_device *fdc = machine().device("wd2793"); LOG(( "to7_5p14_reset: CD 90-640 controller\n" )); fdc->reset(); } diff --git a/src/mame/machine/thomson.cpp b/src/mame/machine/thomson.cpp index 36774c557a8..649a0b96789 100644 --- a/src/mame/machine/thomson.cpp +++ b/src/mame/machine/thomson.cpp @@ -9,9 +9,9 @@ **********************************************************************/ #include "emu.h" +#include "includes/thomson.h" #include "machine/thomflop.h" #include "formats/thom_dsk.h" -#include "includes/thomson.h" #include "machine/6821pia.h" #include "machine/ram.h" @@ -593,14 +593,14 @@ READ8_MEMBER( thomson_state::to7_sys_portb_in ) because the Data Transmit Ready bit is shared in an incompatible way! */ -const device_type TO7_IO_LINE = device_creator; +DEFINE_DEVICE_TYPE(TO7_IO_LINE, to7_io_line_device, "to7_io_line", "TO7 Serial source") //------------------------------------------------- // to7_io_line_device - constructor //------------------------------------------------- to7_io_line_device::to7_io_line_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TO7_IO_LINE, "T07 Serial source", tag, owner, clock, "to7_io_line", __FILE__), + : device_t(mconfig, TO7_IO_LINE, tag, owner, clock), m_pia_io(*this, THOM_PIA_IO), m_rs232(*this, "rs232"), m_last_low(0) diff --git a/src/mame/machine/ti85.cpp b/src/mame/machine/ti85.cpp index 678b2783894..bbe219e159d 100644 --- a/src/mame/machine/ti85.cpp +++ b/src/mame/machine/ti85.cpp @@ -2,7 +2,7 @@ // copyright-holders:Krzysztof Strzecha,Jon Sturm /*************************************************************************** TI-85 driver by Krzysztof Strzecha - TI-83 Plus, TI-84 Plus, and Siliver Edition support by Jon Sturm + TI-83 Plus, TI-84 Plus, and Silver Edition support by Jon Sturm Functions to emulate general aspects of the machine (RAM, ROM, interrupts, I/O ports) @@ -255,7 +255,8 @@ void ti85_state::machine_start() m_port4_bit0 = 0; m_ti81_port_7_data = 0; - machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti85_timer_callback),this)); + m_ti85_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ti85_state::ti85_timer_callback), this)); + m_ti85_timer->adjust(attotime::from_hz(256), 0, attotime::from_hz(256)); space.unmap_write(0x0000, 0x3fff); space.unmap_write(0x4000, 0x7fff); @@ -268,20 +269,6 @@ MACHINE_RESET_MEMBER(ti85_state,ti85) m_PCR = 0xc0; } -DIRECT_UPDATE_MEMBER(ti85_state::ti83p_direct_update_handler) -{ - if (m_booting) - { - if (((m_ti83p_port4 & 1) && (address >= 0x4000 && address < 0xc000)) || (address >= 0x4000 && address < 0x8000)) - { - m_booting = false; - update_ti83p_memory(); - } - } - return address; -} - - MACHINE_RESET_MEMBER(ti85_state,ti83p) { m_PCR = 0x00; @@ -307,7 +294,6 @@ MACHINE_START_MEMBER(ti85_state,ti83p) m_model = TI83P; //address_space &space = m_maincpu->space(AS_PROGRAM); //m_bios = memregion("flash")->base(); - m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&ti85_state::ti83p_direct_update_handler, this)); m_timer_interrupt_mask = 0; m_timer_interrupt_status = 0; @@ -331,10 +317,10 @@ MACHINE_START_MEMBER(ti85_state,ti83p) ti85_state::update_ti83p_memory(); - - machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this)); - machine().scheduler().timer_pulse(attotime::from_hz(512), timer_expired_delegate(FUNC(ti85_state::ti83_timer2_callback),this)); - + m_ti83_1st_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback), this)); + m_ti83_1st_timer->adjust(attotime::from_hz(256), 0, attotime::from_hz(256)); + m_ti83_2nd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ti85_state::ti83_timer2_callback), this)); + m_ti83_2nd_timer->adjust(attotime::from_hz(512), 0, attotime::from_hz(512)); /* save states and debugging */ save_item(NAME(m_timer_interrupt_status)); @@ -371,11 +357,11 @@ void ti85_state::ti8xpse_init_common() m_flash_unlocked = 0; ti85_state::update_ti83pse_memory(); - m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&ti85_state::ti83p_direct_update_handler, this)); - - machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this)); - machine().scheduler().timer_pulse(attotime::from_hz(512), timer_expired_delegate(FUNC(ti85_state::ti83_timer2_callback),this)); + m_ti83_1st_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback), this)); + m_ti83_1st_timer->adjust(attotime::from_hz(256), 0, attotime::from_hz(256)); + m_ti83_2nd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ti85_state::ti83_timer2_callback), this)); + m_ti83_2nd_timer->adjust(attotime::from_hz(512), 0, attotime::from_hz(512)); m_crystal_timer1 = timer_alloc(CRYSTAL_TIMER1); m_crystal_timer2 = timer_alloc(CRYSTAL_TIMER2); @@ -444,7 +430,8 @@ MACHINE_START_MEMBER(ti85_state,ti86) membank("bank4")->set_base(m_ti8x_ram.get()); machine().device("nvram")->set_base(m_ti8x_ram.get(), sizeof(uint8_t)*128*1024); - machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti85_timer_callback),this)); + m_ti85_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ti85_state::ti85_timer_callback), this)); + m_ti85_timer->adjust(attotime::from_hz(256), 0, attotime::from_hz(256)); } diff --git a/src/mame/machine/ticket.cpp b/src/mame/machine/ticket.cpp index 68cb586d32e..92265c814ae 100644 --- a/src/mame/machine/ticket.cpp +++ b/src/mame/machine/ticket.cpp @@ -26,7 +26,7 @@ //************************************************************************** // device type definition -const device_type TICKET_DISPENSER = device_creator; +DEFINE_DEVICE_TYPE(TICKET_DISPENSER, ticket_dispenser_device, "ticket_dispenser", "Ticket Dispenser") @@ -39,7 +39,7 @@ const device_type TICKET_DISPENSER = device_creator; //------------------------------------------------- ticket_dispenser_device::ticket_dispenser_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TICKET_DISPENSER, "Ticket Dispenser", tag, owner, clock, "ticket_dispenser", __FILE__), + : device_t(mconfig, TICKET_DISPENSER, tag, owner, clock), m_motor_sense(TICKET_MOTOR_ACTIVE_LOW), m_status_sense(TICKET_STATUS_ACTIVE_LOW), m_period(attotime::from_msec(100)), diff --git a/src/mame/machine/ticket.h b/src/mame/machine/ticket.h index 18ed3901bdd..cb48cba8587 100644 --- a/src/mame/machine/ticket.h +++ b/src/mame/machine/ticket.h @@ -7,6 +7,8 @@ Generic ticket dispensing device. ***************************************************************************/ +#ifndef MAME_MACHINE_TICKET_H +#define MAME_MACHINE_TICKET_H #pragma once @@ -16,7 +18,7 @@ //************************************************************************** // device type definition -extern const device_type TICKET_DISPENSER; +DECLARE_DEVICE_TYPE(TICKET_DISPENSER, ticket_dispenser_device) @@ -87,3 +89,5 @@ protected: uint8_t m_power; emu_timer *m_timer; }; + +#endif // MAME_MACHINE_TICKET_H diff --git a/src/mame/machine/trs80.cpp b/src/mame/machine/trs80.cpp index 5cb3001ec68..6b12bb3ab26 100644 --- a/src/mame/machine/trs80.cpp +++ b/src/mame/machine/trs80.cpp @@ -567,10 +567,10 @@ WRITE8_MEMBER( trs80_state::lnw80_fe_w ) mem.install_readwrite_handler (0x37e0, 0x37e3, read8_delegate(FUNC(trs80_state::trs80_irq_status_r), this), write8_delegate(FUNC(trs80_state::trs80_motor_w), this)); mem.install_readwrite_handler (0x37e8, 0x37eb, read8_delegate(FUNC(trs80_state::trs80_printer_r), this), write8_delegate(FUNC(trs80_state::trs80_printer_w), this)); mem.install_read_handler (0x37ec, 0x37ec, read8_delegate(FUNC(trs80_state::trs80_wd179x_r), this)); - mem.install_write_handler (0x37ec, 0x37ec, write8_delegate(FUNC(fd1793_t::cmd_w),(fd1793_t*)m_fdc)); - mem.install_readwrite_handler (0x37ed, 0x37ed, read8_delegate(FUNC(fd1793_t::track_r),(fd1793_t*)m_fdc), write8_delegate(FUNC(fd1793_t::track_w),(fd1793_t*)m_fdc)); - mem.install_readwrite_handler (0x37ee, 0x37ee, read8_delegate(FUNC(fd1793_t::sector_r),(fd1793_t*)m_fdc), write8_delegate(FUNC(fd1793_t::sector_w),(fd1793_t*)m_fdc)); - mem.install_readwrite_handler (0x37ef, 0x37ef, read8_delegate(FUNC(fd1793_t::data_r),(fd1793_t*)m_fdc),write8_delegate( FUNC(fd1793_t::data_w),(fd1793_t*)m_fdc)); + mem.install_write_handler (0x37ec, 0x37ec, write8_delegate(FUNC(fd1793_device::cmd_w),(fd1793_device*)m_fdc)); + mem.install_readwrite_handler (0x37ed, 0x37ed, read8_delegate(FUNC(fd1793_device::track_r),(fd1793_device*)m_fdc), write8_delegate(FUNC(fd1793_device::track_w),(fd1793_device*)m_fdc)); + mem.install_readwrite_handler (0x37ee, 0x37ee, read8_delegate(FUNC(fd1793_device::sector_r),(fd1793_device*)m_fdc), write8_delegate(FUNC(fd1793_device::sector_w),(fd1793_device*)m_fdc)); + mem.install_readwrite_handler (0x37ef, 0x37ef, read8_delegate(FUNC(fd1793_device::data_r),(fd1793_device*)m_fdc),write8_delegate( FUNC(fd1793_device::data_w),(fd1793_device*)m_fdc)); mem.install_read_handler (0x3800, 0x38ff, 0, 0x0300, 0, read8_delegate(FUNC(trs80_state::trs80_keyboard_r), this)); mem.install_readwrite_handler (0x3c00, 0x3fff, read8_delegate(FUNC(trs80_state::trs80_videoram_r), this), write8_delegate(FUNC(trs80_state::trs80_videoram_w), this)); } diff --git a/src/mame/machine/trs80m2kb.cpp b/src/mame/machine/trs80m2kb.cpp index 86a73ed9c7d..40dabc57d11 100644 --- a/src/mame/machine/trs80m2kb.cpp +++ b/src/mame/machine/trs80m2kb.cpp @@ -23,7 +23,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type TRS80M2_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(TRS80M2_KEYBOARD, trs80m2_keyboard_device, "trs80m2kb", "TRS-80 Model II Keyboard") @@ -47,25 +47,16 @@ const tiny_rom_entry *trs80m2_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( trs80m2_keyboard_io, AS_IO, 8, trs80m2_keyboard_device ) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(kb_t1_r) - AM_RANGE(MCS48_PORT_P0, MCS48_PORT_P0) AM_READ(kb_p0_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( trs80m2_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( trs80m2_keyboard ) MCFG_CPU_ADD(I8021_TAG, I8021, 3000000) // 1000uH inductor connected across the XTAL inputs - MCFG_CPU_IO_MAP(trs80m2_keyboard_io) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(trs80m2_keyboard_device, kb_t1_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(trs80m2_keyboard_device, kb_p0_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(trs80m2_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(trs80m2_keyboard_device, kb_p2_w)) MCFG_DEVICE_DISABLE() // TODO MACHINE_CONFIG_END @@ -228,7 +219,7 @@ ioport_constructor trs80m2_keyboard_device::device_input_ports() const //------------------------------------------------- trs80m2_keyboard_device::trs80m2_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, TRS80M2_KEYBOARD, "TRS-80 Model II Keyboard", tag, owner, clock, "trs80m2kb", __FILE__), + device_t(mconfig, TRS80M2_KEYBOARD, tag, owner, clock), m_maincpu(*this, I8021_TAG), m_y(*this, "Y%u", 0), m_write_clock(*this), @@ -288,7 +279,7 @@ READ_LINE_MEMBER( trs80m2_keyboard_device::data_r ) // kb_t1_r - //------------------------------------------------- -READ8_MEMBER( trs80m2_keyboard_device::kb_t1_r ) +READ_LINE_MEMBER( trs80m2_keyboard_device::kb_t1_r ) { return m_busy; } diff --git a/src/mame/machine/trs80m2kb.h b/src/mame/machine/trs80m2kb.h index bf8a45f3606..4c779a35486 100644 --- a/src/mame/machine/trs80m2kb.h +++ b/src/mame/machine/trs80m2kb.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_TRS80M2KB_H +#define MAME_MACHINE_TRS80M2KB_H -#ifndef __TRS80M2_KEYBOARD__ -#define __TRS80M2_KEYBOARD__ +#pragma once #include "cpu/mcs48/mcs48.h" #include "sound/discrete.h" @@ -45,7 +45,7 @@ public: // construction/destruction trs80m2_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_clock_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_clock.set_callback(object); } + template static devcb_base &set_clock_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_clock.set_callback(std::forward(cb)); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -56,7 +56,7 @@ public: DECLARE_READ_LINE_MEMBER( data_r ); // not really public - DECLARE_READ8_MEMBER( kb_t1_r ); + DECLARE_READ_LINE_MEMBER( kb_t1_r ); DECLARE_READ8_MEMBER( kb_p0_r ); DECLARE_WRITE8_MEMBER( kb_p1_w ); DECLARE_WRITE8_MEMBER( kb_p2_w ); @@ -87,8 +87,8 @@ private: // device type definition -extern const device_type TRS80M2_KEYBOARD; +DECLARE_DEVICE_TYPE(TRS80M2_KEYBOARD, trs80m2_keyboard_device) -#endif +#endif // MAME_MACHINE_TRS80M2KB_H diff --git a/src/mame/machine/upd65031.cpp b/src/mame/machine/upd65031.cpp index 8c57602dbd6..74584e6cbba 100644 --- a/src/mame/machine/upd65031.cpp +++ b/src/mame/machine/upd65031.cpp @@ -27,7 +27,7 @@ // device type definition -const device_type UPD65031 = device_creator; +DEFINE_DEVICE_TYPE(UPD65031, upd65031_device, "upd65031", "NEC uPD65031") //************************************************************************** @@ -197,7 +197,7 @@ inline void upd65031_device::set_mode(int mode) //------------------------------------------------- upd65031_device::upd65031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, UPD65031, "NEC uPD65031", tag, owner, clock, "upd65031", __FILE__), + : device_t(mconfig, UPD65031, tag, owner, clock), m_read_kb(*this), m_write_int(*this), m_write_nmi(*this), diff --git a/src/mame/machine/upd65031.h b/src/mame/machine/upd65031.h index aad871e80c6..4c5127727fa 100644 --- a/src/mame/machine/upd65031.h +++ b/src/mame/machine/upd65031.h @@ -6,11 +6,10 @@ **********************************************************************/ -#pragma once - -#ifndef __UPD65031__ -#define __UPD65031__ +#ifndef MAME_MACHINE_UPD65031_H +#define MAME_MACHINE_UPD65031_H +#pragma once @@ -114,7 +113,7 @@ private: // device type definition -extern const device_type UPD65031; +DECLARE_DEVICE_TYPE(UPD65031, upd65031_device) -#endif +#endif // MAME_MACHINE_UPD65031_H diff --git a/src/mame/machine/v1050kb.cpp b/src/mame/machine/v1050kb.cpp index 33b3be0a86d..dab6e0bf902 100644 --- a/src/mame/machine/v1050kb.cpp +++ b/src/mame/machine/v1050kb.cpp @@ -26,7 +26,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type V1050_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(V1050_KEYBOARD, v1050_keyboard_device, "v1050kb", "Visual 1050 Keyboard") //------------------------------------------------- @@ -50,16 +50,6 @@ const tiny_rom_entry *v1050_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( v1050_keyboard_io, AS_IO, 8, v1050_keyboard_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) -ADDRESS_MAP_END - - //------------------------------------------------- // DISCRETE_SOUND_START( v1050kb ) //------------------------------------------------- @@ -84,7 +74,9 @@ DISCRETE_SOUND_END static MACHINE_CONFIG_FRAGMENT( v1050_keyboard ) MCFG_CPU_ADD(I8049_TAG, I8049, XTAL_4_608MHz) - MCFG_CPU_IO_MAP(v1050_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(v1050_keyboard_device, kb_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(v1050_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(v1050_keyboard_device, kb_p2_w)) MCFG_DEVICE_DISABLE() // TODO // discrete sound @@ -305,7 +297,7 @@ ioport_constructor v1050_keyboard_device::device_input_ports() const //------------------------------------------------- v1050_keyboard_device::v1050_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, V1050_KEYBOARD, "Visual 1050 Keyboard", tag, owner, clock, "v1050kb", __FILE__), + device_t(mconfig, V1050_KEYBOARD, tag, owner, clock), m_maincpu(*this, I8049_TAG), m_discrete(*this, DISCRETE_TAG), m_y(*this, "Y%u", 0), diff --git a/src/mame/machine/v1050kb.h b/src/mame/machine/v1050kb.h index 052748b394b..af66b205a1b 100644 --- a/src/mame/machine/v1050kb.h +++ b/src/mame/machine/v1050kb.h @@ -6,10 +6,10 @@ *********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_V1050KB_H +#define MAME_MACHINE_V1050KB_H -#ifndef __V1050_KEYBOARD__ -#define __V1050_KEYBOARD__ +#pragma once #include "cpu/mcs48/mcs48.h" #include "sound/discrete.h" @@ -37,7 +37,7 @@ public: // construction/destruction v1050_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_out_tx_handler(device_t &device, _Object object) { return downcast(device).m_out_tx_handler.set_callback(object); } + template static devcb_base &set_out_tx_handler(device_t &device, Object &&cb) { return downcast(device).m_out_tx_handler.set_callback(std::forward(cb)); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -67,8 +67,6 @@ private: // device type definition -extern const device_type V1050_KEYBOARD; - - +DECLARE_DEVICE_TYPE(V1050_KEYBOARD, v1050_keyboard_device) -#endif +#endif // MAME_MACHINE_V1050KB_H diff --git a/src/mame/machine/vector06.cpp b/src/mame/machine/vector06.cpp index f16eae3e56a..3b0d3b6be42 100644 --- a/src/mame/machine/vector06.cpp +++ b/src/mame/machine/vector06.cpp @@ -187,7 +187,7 @@ void vector06_state::update_mem() WRITE8_MEMBER(vector06_state::vector06_ramdisk_w) { - uint8_t oldbank = m_rambank; + const uint8_t oldbank = m_rambank; m_rambank = data; if (oldbank != m_rambank) update_mem(); @@ -195,8 +195,8 @@ WRITE8_MEMBER(vector06_state::vector06_ramdisk_w) WRITE8_MEMBER(vector06_state::vector06_status_callback) { - bool oldstate = m_stack_state; - m_stack_state = (data & I8085_STATUS_STACK) ? true : false; + const bool oldstate = m_stack_state; + m_stack_state = bool(data & i8080_cpu_device::STATUS_STACK); if (oldstate != m_stack_state && (m_rambank & 0x10)) update_mem(); } @@ -218,7 +218,8 @@ READ8_MEMBER(vector06_state::pit8253_r) void vector06_state::machine_start() { - machine().scheduler().timer_pulse(attotime::from_hz(50), timer_expired_delegate(FUNC(vector06_state::reset_check_callback),this)); + m_reset_check_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(vector06_state::reset_check_callback), this)); + m_reset_check_timer->adjust(attotime::from_hz(50), 0, attotime::from_hz(50)); } void vector06_state::machine_reset() diff --git a/src/mame/machine/victor9k_fdc.cpp b/src/mame/machine/victor9k_fdc.cpp index e63fa8364be..53f78ad57f7 100644 --- a/src/mame/machine/victor9k_fdc.cpp +++ b/src/mame/machine/victor9k_fdc.cpp @@ -78,7 +78,7 @@ #define MOTOR_POLES 8.0 // TODO wrong values here! motor speed is controlled by an LM2917, with help from the spindle TACH and a DAC0808 whose value is set by the SCP 8048 -const int victor_9000_fdc_t::rpm[] = { 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 254, 255, 257, 259, 260, 262, 264, 266, 267, 269, 271, 273, 275, 276, 278, 280, 282, 284, 286, 288, 290, 291, 293, 295, 297, 299, 301, 303, 305, 307, 309, 311, 313, 315, 318, 320, 322, 324, 326, 328, 330, 333, 335, 337, 339, 342, 344, 346, 348, 351, 353, 355, 358, 360, 362, 365, 367, 370, 372, 375, 377, 380, 382, 385, 387, 390, 392, 395, 398, 400, 403, 406, 408, 411, 414, 416, 419, 422, 425, 428, 430, 433, 436, 439, 442, 445, 448, 451, 454, 457, 460, 463, 466, 469, 472, 475, 478, 482, 485, 488, 491, 494, 498, 501, 504, 508, 511, 514, 518, 521, 525, 528, 532, 535, 539, 542, 546, 550, 553, 557, 561, 564, 568, 572, 576, 579, 583, 587, 591, 595, 599, 603, 607, 611, 615, 619, 623, 627, 631, 636, 640, 644, 648, 653, 657, 661, 666, 670, 674, 679, 683, 688, 693, 697, 702, 706, 711, 716, 721, 725, 730, 735, 740, 745, 750, 755, 760, 765, 770, 775, 780, 785, 790, 796, 801, 806, 812, 817, 822, 828, 833, 839, 844, 850, 856, 861, 867, 873, 878, 884 }; +const int victor_9000_fdc_device::rpm[] = { 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 254, 255, 257, 259, 260, 262, 264, 266, 267, 269, 271, 273, 275, 276, 278, 280, 282, 284, 286, 288, 290, 291, 293, 295, 297, 299, 301, 303, 305, 307, 309, 311, 313, 315, 318, 320, 322, 324, 326, 328, 330, 333, 335, 337, 339, 342, 344, 346, 348, 351, 353, 355, 358, 360, 362, 365, 367, 370, 372, 375, 377, 380, 382, 385, 387, 390, 392, 395, 398, 400, 403, 406, 408, 411, 414, 416, 419, 422, 425, 428, 430, 433, 436, 439, 442, 445, 448, 451, 454, 457, 460, 463, 466, 469, 472, 475, 478, 482, 485, 488, 491, 494, 498, 501, 504, 508, 511, 514, 518, 521, 525, 528, 532, 535, 539, 542, 546, 550, 553, 557, 561, 564, 568, 572, 576, 579, 583, 587, 591, 595, 599, 603, 607, 611, 615, 619, 623, 627, 631, 636, 640, 644, 648, 653, 657, 661, 666, 670, 674, 679, 683, 688, 693, 697, 702, 706, 711, 716, 721, 725, 730, 735, 740, 745, 750, 755, 760, 765, 770, 775, 780, 785, 790, 796, 801, 806, 812, 817, 822, 828, 833, 839, 844, 850, 856, 861, 867, 873, 878, 884 }; @@ -86,7 +86,7 @@ const int victor_9000_fdc_t::rpm[] = { 252, 252, 252, 252, 252, 252, 252, 252, 2 // DEVICE DEFINITIONS //************************************************************************** -const device_type VICTOR_9000_FDC = device_creator; +DEFINE_DEVICE_TYPE(VICTOR_9000_FDC, victor_9000_fdc_device, "victor9k_fdc", "Victor 9000 FDC") //------------------------------------------------- @@ -106,30 +106,17 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const tiny_rom_entry *victor_9000_fdc_t::device_rom_region() const +const tiny_rom_entry *victor_9000_fdc_device::device_rom_region() const { return ROM_NAME( victor_9000_fdc ); } -//------------------------------------------------- -// ADDRESS_MAP( floppy_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( floppy_io, AS_IO, 8, victor_9000_fdc_t ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(floppy_p1_r, floppy_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(floppy_p2_r, floppy_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tach0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(tach1_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(da_w) -ADDRESS_MAP_END - - //------------------------------------------------- // SLOT_INTERFACE( victor9k_floppies ) //------------------------------------------------- -image_init_result victor_9000_fdc_t::load0_cb(floppy_image_device *device) +image_init_result victor_9000_fdc_device::load0_cb(floppy_image_device *device) { // DOOR OPEN 0 m_via4->write_ca1(0); @@ -137,13 +124,13 @@ image_init_result victor_9000_fdc_t::load0_cb(floppy_image_device *device) return image_init_result::PASS; } -void victor_9000_fdc_t::unload0_cb(floppy_image_device *device) +void victor_9000_fdc_device::unload0_cb(floppy_image_device *device) { // DOOR OPEN 0 m_via4->write_ca1(1); } -image_init_result victor_9000_fdc_t::load1_cb(floppy_image_device *device) +image_init_result victor_9000_fdc_device::load1_cb(floppy_image_device *device) { // DOOR OPEN 1 m_via4->write_cb1(0); @@ -151,7 +138,7 @@ image_init_result victor_9000_fdc_t::load1_cb(floppy_image_device *device) return image_init_result::PASS; } -void victor_9000_fdc_t::unload1_cb(floppy_image_device *device) +void victor_9000_fdc_device::unload1_cb(floppy_image_device *device) { // DOOR OPEN 1 m_via4->write_cb1(1); @@ -162,7 +149,7 @@ static SLOT_INTERFACE_START( victor9k_floppies ) SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) // Tandon TM100-4 with custom electronics SLOT_INTERFACE_END -FLOPPY_FORMATS_MEMBER( victor_9000_fdc_t::floppy_formats ) +FLOPPY_FORMATS_MEMBER( victor_9000_fdc_device::floppy_formats ) FLOPPY_VICTOR_9000_FORMAT FLOPPY_FORMATS_END @@ -173,32 +160,38 @@ FLOPPY_FORMATS_END static MACHINE_CONFIG_FRAGMENT( victor_9000_fdc ) MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_30MHz/6) - MCFG_CPU_IO_MAP(floppy_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(victor_9000_fdc_device, floppy_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(victor_9000_fdc_device, floppy_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(victor_9000_fdc_device, floppy_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(victor_9000_fdc_device, floppy_p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(victor_9000_fdc_device, tach0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(victor_9000_fdc_device, tach1_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(victor_9000_fdc_device, da_w)) MCFG_DEVICE_ADD(M6522_4_TAG, VIA6522, XTAL_30MHz/30) - MCFG_VIA6522_READPA_HANDLER(READ8(victor_9000_fdc_t, via4_pa_r)) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor_9000_fdc_t, via4_pa_w)) - MCFG_VIA6522_READPB_HANDLER(READ8(victor_9000_fdc_t, via4_pb_r)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor_9000_fdc_t, via4_pb_w)) - MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor_9000_fdc_t, wrsync_w)) - MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor_9000_fdc_t, via4_irq_w)) + MCFG_VIA6522_READPA_HANDLER(READ8(victor_9000_fdc_device, via4_pa_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor_9000_fdc_device, via4_pa_w)) + MCFG_VIA6522_READPB_HANDLER(READ8(victor_9000_fdc_device, via4_pb_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor_9000_fdc_device, via4_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor_9000_fdc_device, wrsync_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor_9000_fdc_device, via4_irq_w)) MCFG_DEVICE_ADD(M6522_5_TAG, VIA6522, XTAL_30MHz/30) - MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor_9000_fdc_t, via5_irq_w)) - MCFG_VIA6522_READPA_HANDLER(READ8(victor_9000_fdc_t, via5_pa_r)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor_9000_fdc_t, via5_pb_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor_9000_fdc_device, via5_irq_w)) + MCFG_VIA6522_READPA_HANDLER(READ8(victor_9000_fdc_device, via5_pa_r)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor_9000_fdc_device, via5_pb_w)) MCFG_DEVICE_ADD(M6522_6_TAG, VIA6522, XTAL_30MHz/30) - MCFG_VIA6522_READPA_HANDLER(READ8(victor_9000_fdc_t, via6_pa_r)) - MCFG_VIA6522_READPB_HANDLER(READ8(victor_9000_fdc_t, via6_pb_r)) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor_9000_fdc_t, via6_pa_w)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor_9000_fdc_t, via6_pb_w)) - MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor_9000_fdc_t, drw_w)) - MCFG_VIA6522_CB2_HANDLER(WRITELINE(victor_9000_fdc_t, erase_w)) - MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor_9000_fdc_t, via6_irq_w)) - - MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":0", victor9k_floppies, "525qd", victor_9000_fdc_t::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", victor_9000_fdc_t::floppy_formats) + MCFG_VIA6522_READPA_HANDLER(READ8(victor_9000_fdc_device, via6_pa_r)) + MCFG_VIA6522_READPB_HANDLER(READ8(victor_9000_fdc_device, via6_pb_r)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor_9000_fdc_device, via6_pa_w)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor_9000_fdc_device, via6_pb_w)) + MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor_9000_fdc_device, drw_w)) + MCFG_VIA6522_CB2_HANDLER(WRITELINE(victor_9000_fdc_device, erase_w)) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor_9000_fdc_device, via6_irq_w)) + + MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":0", victor9k_floppies, "525qd", victor_9000_fdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", victor_9000_fdc_device::floppy_formats) MACHINE_CONFIG_END @@ -207,7 +200,7 @@ MACHINE_CONFIG_END // machine configurations //------------------------------------------------- -machine_config_constructor victor_9000_fdc_t::device_mconfig_additions() const +machine_config_constructor victor_9000_fdc_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( victor_9000_fdc ); } @@ -219,11 +212,11 @@ machine_config_constructor victor_9000_fdc_t::device_mconfig_additions() const //************************************************************************** //------------------------------------------------- -// victor_9000_fdc_t - constructor +// victor_9000_fdc_device - constructor //------------------------------------------------- -victor_9000_fdc_t::victor_9000_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, VICTOR_9000_FDC, "Victor 9000 FDC", tag, owner, clock, "victor9k_fdc", __FILE__), +victor_9000_fdc_device::victor_9000_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, VICTOR_9000_FDC, tag, owner, clock), m_irq_cb(*this), m_syn_cb(*this), m_lbrdy_cb(*this), @@ -276,7 +269,7 @@ victor_9000_fdc_t::victor_9000_fdc_t(const machine_config &mconfig, const char * // device_start - device-specific startup //------------------------------------------------- -void victor_9000_fdc_t::device_start() +void victor_9000_fdc_device::device_start() { // resolve callbacks m_irq_cb.resolve_safe(); @@ -328,7 +321,7 @@ void victor_9000_fdc_t::device_start() // device_reset - device-specific reset //------------------------------------------------- -void victor_9000_fdc_t::device_reset() +void victor_9000_fdc_device::device_reset() { live_abort(); @@ -340,14 +333,14 @@ void victor_9000_fdc_t::device_reset() // set floppy callbacks if (m_floppy0->get_device()) { - m_floppy0->get_device()->setup_load_cb(floppy_image_device::load_cb(&victor_9000_fdc_t::load0_cb, this)); - m_floppy0->get_device()->setup_unload_cb(floppy_image_device::unload_cb(&victor_9000_fdc_t::unload0_cb, this)); + m_floppy0->get_device()->setup_load_cb(floppy_image_device::load_cb(&victor_9000_fdc_device::load0_cb, this)); + m_floppy0->get_device()->setup_unload_cb(floppy_image_device::unload_cb(&victor_9000_fdc_device::unload0_cb, this)); } if (m_floppy1->get_device()) { - m_floppy1->get_device()->setup_load_cb(floppy_image_device::load_cb(&victor_9000_fdc_t::load1_cb, this)); - m_floppy1->get_device()->setup_unload_cb(floppy_image_device::unload_cb(&victor_9000_fdc_t::unload1_cb, this)); + m_floppy1->get_device()->setup_load_cb(floppy_image_device::load_cb(&victor_9000_fdc_device::load1_cb, this)); + m_floppy1->get_device()->setup_unload_cb(floppy_image_device::unload_cb(&victor_9000_fdc_device::unload1_cb, this)); } } @@ -356,7 +349,7 @@ void victor_9000_fdc_t::device_reset() // device_timer - handler timer events //------------------------------------------------- -void victor_9000_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +void victor_9000_fdc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { switch (id) { @@ -382,7 +375,7 @@ void victor_9000_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int p // floppy_p1_r - //------------------------------------------------- -READ8_MEMBER( victor_9000_fdc_t::floppy_p1_r ) +READ8_MEMBER( victor_9000_fdc_device::floppy_p1_r ) { /* @@ -407,7 +400,7 @@ READ8_MEMBER( victor_9000_fdc_t::floppy_p1_r ) // floppy_p1_w - //------------------------------------------------- -WRITE8_MEMBER( victor_9000_fdc_t::floppy_p1_w ) +WRITE8_MEMBER( victor_9000_fdc_device::floppy_p1_w ) { /* @@ -433,7 +426,7 @@ WRITE8_MEMBER( victor_9000_fdc_t::floppy_p1_w ) // floppy_p2_r - //------------------------------------------------- -READ8_MEMBER( victor_9000_fdc_t::floppy_p2_r ) +READ8_MEMBER( victor_9000_fdc_device::floppy_p2_r ) { /* @@ -463,7 +456,7 @@ READ8_MEMBER( victor_9000_fdc_t::floppy_p2_r ) // floppy_p2_w - //------------------------------------------------- -WRITE8_MEMBER( victor_9000_fdc_t::floppy_p2_w ) +WRITE8_MEMBER( victor_9000_fdc_device::floppy_p2_w ) { /* @@ -543,7 +536,7 @@ WRITE8_MEMBER( victor_9000_fdc_t::floppy_p2_w ) // tach0_r - //------------------------------------------------- -READ8_MEMBER( victor_9000_fdc_t::tach0_r ) +READ_LINE_MEMBER( victor_9000_fdc_device::tach0_r ) { if (LOG_SCP) logerror("%s %s Read TACH0 %u\n", machine().time().as_string(), machine().describe_context(), m_tach0); return m_tach0; @@ -554,14 +547,14 @@ READ8_MEMBER( victor_9000_fdc_t::tach0_r ) // tach1_r - //------------------------------------------------- -READ8_MEMBER( victor_9000_fdc_t::tach1_r ) +READ_LINE_MEMBER( victor_9000_fdc_device::tach1_r ) { if (LOG_SCP) logerror("%s %s Read TACH1 %u\n", machine().time().as_string(), machine().describe_context(), m_tach1); return m_tach1; } -void victor_9000_fdc_t::update_stepper_motor(floppy_image_device *floppy, int stp, int old_st, int st) +void victor_9000_fdc_device::update_stepper_motor(floppy_image_device *floppy, int stp, int old_st, int st) { if (stp) return; @@ -591,7 +584,7 @@ void victor_9000_fdc_t::update_stepper_motor(floppy_image_device *floppy, int st floppy->set_rpm(victor9k_format::get_rpm(m_side, floppy->get_cyl())); } -void victor_9000_fdc_t::update_spindle_motor(floppy_image_device *floppy, emu_timer *t_tach, bool start, bool stop, bool sel, uint8_t &da) +void victor_9000_fdc_device::update_spindle_motor(floppy_image_device *floppy, emu_timer *t_tach, bool start, bool stop, bool sel, uint8_t &da) { #ifdef USE_SCP if (start && !stop && floppy->mon_r()) { @@ -606,7 +599,7 @@ void victor_9000_fdc_t::update_spindle_motor(floppy_image_device *floppy, emu_ti #endif } -void victor_9000_fdc_t::update_rpm(floppy_image_device *floppy, emu_timer *t_tach, bool sel, uint8_t &da) +void victor_9000_fdc_device::update_rpm(floppy_image_device *floppy, emu_timer *t_tach, bool sel, uint8_t &da) { #ifdef USE_SCP if (sel) { @@ -625,7 +618,7 @@ void victor_9000_fdc_t::update_rpm(floppy_image_device *floppy, emu_timer *t_tac #endif } -void victor_9000_fdc_t::update_rdy() +void victor_9000_fdc_device::update_rdy() { m_via5->write_ca2((m_via_rdy0 && m_via_rdy1) ? m_rdy0 : m_scp_rdy0); m_via5->write_cb2((m_via_rdy0 && m_via_rdy1) ? m_rdy1 : m_scp_rdy1); @@ -636,7 +629,7 @@ void victor_9000_fdc_t::update_rdy() // da_w - //------------------------------------------------- -WRITE8_MEMBER( victor_9000_fdc_t::da_w ) +WRITE8_MEMBER( victor_9000_fdc_device::da_w ) { if (LOG_SCP) logerror("%s %s DA %02x SEL0 %u SEL1 %u\n", machine().time().as_string(), machine().describe_context(), data, m_sel0, m_sel1); @@ -648,7 +641,7 @@ WRITE8_MEMBER( victor_9000_fdc_t::da_w ) live_run(); } -READ8_MEMBER( victor_9000_fdc_t::via4_pa_r ) +READ8_MEMBER( victor_9000_fdc_device::via4_pa_r ) { /* @@ -668,7 +661,7 @@ READ8_MEMBER( victor_9000_fdc_t::via4_pa_r ) return m_scp_l0ms; } -WRITE8_MEMBER( victor_9000_fdc_t::via4_pa_w ) +WRITE8_MEMBER( victor_9000_fdc_device::via4_pa_w ) { /* @@ -713,7 +706,7 @@ WRITE8_MEMBER( victor_9000_fdc_t::via4_pa_w ) } } -READ8_MEMBER( victor_9000_fdc_t::via4_pb_r ) +READ8_MEMBER( victor_9000_fdc_device::via4_pb_r ) { /* @@ -733,7 +726,7 @@ READ8_MEMBER( victor_9000_fdc_t::via4_pb_r ) return m_scp_l1ms; } -WRITE8_MEMBER( victor_9000_fdc_t::via4_pb_w ) +WRITE8_MEMBER( victor_9000_fdc_device::via4_pb_w ) { /* @@ -778,7 +771,7 @@ WRITE8_MEMBER( victor_9000_fdc_t::via4_pb_w ) } } -WRITE_LINE_MEMBER( victor_9000_fdc_t::wrsync_w ) +WRITE_LINE_MEMBER( victor_9000_fdc_device::wrsync_w ) { if (m_wrsync != state) { @@ -791,14 +784,14 @@ WRITE_LINE_MEMBER( victor_9000_fdc_t::wrsync_w ) } } -WRITE_LINE_MEMBER( victor_9000_fdc_t::via4_irq_w ) +WRITE_LINE_MEMBER( victor_9000_fdc_device::via4_irq_w ) { m_via4_irq = state; m_irq_cb(m_via4_irq || m_via5_irq || m_via6_irq); } -READ8_MEMBER( victor_9000_fdc_t::via5_pa_r ) +READ8_MEMBER( victor_9000_fdc_device::via5_pa_r ) { /* @@ -818,7 +811,7 @@ READ8_MEMBER( victor_9000_fdc_t::via5_pa_r ) return GCR_DECODE(checkpoint_live.e, checkpoint_live.i); } -WRITE8_MEMBER( victor_9000_fdc_t::via5_pb_w ) +WRITE8_MEMBER( victor_9000_fdc_device::via5_pb_w ) { /* @@ -848,7 +841,7 @@ WRITE8_MEMBER( victor_9000_fdc_t::via5_pb_w ) } } -WRITE_LINE_MEMBER( victor_9000_fdc_t::via5_irq_w ) +WRITE_LINE_MEMBER( victor_9000_fdc_device::via5_irq_w ) { m_via5_irq = state; @@ -856,7 +849,7 @@ WRITE_LINE_MEMBER( victor_9000_fdc_t::via5_irq_w ) } -READ8_MEMBER( victor_9000_fdc_t::via6_pa_r ) +READ8_MEMBER( victor_9000_fdc_device::via6_pa_r ) { /* @@ -892,7 +885,7 @@ READ8_MEMBER( victor_9000_fdc_t::via6_pa_r ) return data; } -WRITE8_MEMBER( victor_9000_fdc_t::via6_pa_w ) +WRITE8_MEMBER( victor_9000_fdc_device::via6_pa_w ) { /* @@ -944,7 +937,7 @@ WRITE8_MEMBER( victor_9000_fdc_t::via6_pa_w ) } } -READ8_MEMBER( victor_9000_fdc_t::via6_pb_r ) +READ8_MEMBER( victor_9000_fdc_device::via6_pb_r ) { /* @@ -981,7 +974,7 @@ READ8_MEMBER( victor_9000_fdc_t::via6_pb_r ) return data; } -WRITE8_MEMBER( victor_9000_fdc_t::via6_pb_w ) +WRITE8_MEMBER( victor_9000_fdc_device::via6_pb_w ) { /* @@ -1034,7 +1027,7 @@ WRITE8_MEMBER( victor_9000_fdc_t::via6_pb_w ) } } -WRITE_LINE_MEMBER( victor_9000_fdc_t::drw_w ) +WRITE_LINE_MEMBER( victor_9000_fdc_device::drw_w ) { if (m_drw != state) { @@ -1051,7 +1044,7 @@ WRITE_LINE_MEMBER( victor_9000_fdc_t::drw_w ) } } -WRITE_LINE_MEMBER( victor_9000_fdc_t::erase_w ) +WRITE_LINE_MEMBER( victor_9000_fdc_device::erase_w ) { if (m_erase != state) { @@ -1063,14 +1056,14 @@ WRITE_LINE_MEMBER( victor_9000_fdc_t::erase_w ) } } -WRITE_LINE_MEMBER( victor_9000_fdc_t::via6_irq_w ) +WRITE_LINE_MEMBER( victor_9000_fdc_device::via6_irq_w ) { m_via6_irq = state; m_irq_cb(m_via4_irq || m_via5_irq || m_via6_irq); } -READ8_MEMBER( victor_9000_fdc_t::cs7_r ) +READ8_MEMBER( victor_9000_fdc_device::cs7_r ) { m_lbrdy_cb(1); @@ -1079,7 +1072,7 @@ READ8_MEMBER( victor_9000_fdc_t::cs7_r ) return m_via5->read(space, offset); } -WRITE8_MEMBER( victor_9000_fdc_t::cs7_w ) +WRITE8_MEMBER( victor_9000_fdc_device::cs7_w ) { m_lbrdy_cb(1); @@ -1088,12 +1081,12 @@ WRITE8_MEMBER( victor_9000_fdc_t::cs7_w ) m_via5->write(space, offset, data); } -floppy_image_device* victor_9000_fdc_t::get_floppy() +floppy_image_device* victor_9000_fdc_device::get_floppy() { return m_drive ? m_floppy1->get_device() : m_floppy0->get_device(); } -void victor_9000_fdc_t::live_start() +void victor_9000_fdc_device::live_start() { cur_live.tm = machine().time(); cur_live.state = RUNNING; @@ -1119,63 +1112,63 @@ void victor_9000_fdc_t::live_start() live_run(); } -void victor_9000_fdc_t::pll_reset(const attotime &when) +void victor_9000_fdc_device::pll_reset(const attotime &when) { cur_pll.reset(when); cur_pll.set_clock(attotime::from_nsec(2130)); } -void victor_9000_fdc_t::pll_start_writing(const attotime &tm) +void victor_9000_fdc_device::pll_start_writing(const attotime &tm) { cur_pll.start_writing(tm); pll_reset(cur_live.tm); } -void victor_9000_fdc_t::pll_commit(floppy_image_device *floppy, const attotime &tm) +void victor_9000_fdc_device::pll_commit(floppy_image_device *floppy, const attotime &tm) { cur_pll.commit(floppy, tm); } -void victor_9000_fdc_t::pll_stop_writing(floppy_image_device *floppy, const attotime &tm) +void victor_9000_fdc_device::pll_stop_writing(floppy_image_device *floppy, const attotime &tm) { cur_pll.stop_writing(floppy, tm); pll_reset(cur_live.tm); } -void victor_9000_fdc_t::pll_save_checkpoint() +void victor_9000_fdc_device::pll_save_checkpoint() { checkpoint_pll = cur_pll; } -void victor_9000_fdc_t::pll_retrieve_checkpoint() +void victor_9000_fdc_device::pll_retrieve_checkpoint() { cur_pll = checkpoint_pll; } -int victor_9000_fdc_t::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit) +int victor_9000_fdc_device::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit) { return cur_pll.get_next_bit(tm, floppy, limit); } -bool victor_9000_fdc_t::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit) +bool victor_9000_fdc_device::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit) { return cur_pll.write_next_bit(bit, tm, floppy, limit); } -void victor_9000_fdc_t::checkpoint() +void victor_9000_fdc_device::checkpoint() { pll_commit(get_floppy(), cur_live.tm); checkpoint_live = cur_live; pll_save_checkpoint(); } -void victor_9000_fdc_t::rollback() +void victor_9000_fdc_device::rollback() { cur_live = checkpoint_live; pll_retrieve_checkpoint(); } -void victor_9000_fdc_t::live_delay(int state) +void victor_9000_fdc_device::live_delay(int state) { cur_live.next_state = state; if(cur_live.tm != machine().time()) @@ -1184,7 +1177,7 @@ void victor_9000_fdc_t::live_delay(int state) live_sync(); } -void victor_9000_fdc_t::live_sync() +void victor_9000_fdc_device::live_sync() { if(!cur_live.tm.is_never()) { if(cur_live.tm > machine().time()) { @@ -1207,7 +1200,7 @@ void victor_9000_fdc_t::live_sync() } } -void victor_9000_fdc_t::live_abort() +void victor_9000_fdc_device::live_abort() { if(!cur_live.tm.is_never() && cur_live.tm > machine().time()) { rollback(); @@ -1228,7 +1221,7 @@ void victor_9000_fdc_t::live_abort() cur_live.gcr_err = 1; } -void victor_9000_fdc_t::live_run(const attotime &limit) +void victor_9000_fdc_device::live_run(const attotime &limit) { if(cur_live.state == IDLE || cur_live.next_state != -1) return; diff --git a/src/mame/machine/victor9k_fdc.h b/src/mame/machine/victor9k_fdc.h index dcd82226fdd..15e92f7defc 100644 --- a/src/mame/machine/victor9k_fdc.h +++ b/src/mame/machine/victor9k_fdc.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_VICTOR9K_FDC_H +#define MAME_MACHINE_VICTOR9K_FDC_H -#ifndef __VICTOR_9000_FDC__ -#define __VICTOR_9000_FDC__ +#pragma once #include "cpu/mcs48/mcs48.h" #include "formats/victor9k_dsk.h" @@ -24,13 +24,13 @@ //************************************************************************** #define MCFG_VICTOR_9000_FDC_IRQ_CB(_write) \ - devcb = &victor_9000_fdc_t::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &victor_9000_fdc_device::set_irq_wr_callback(*device, DEVCB_##_write); #define MCFG_VICTOR_9000_FDC_SYN_CB(_write) \ - devcb = &victor_9000_fdc_t::set_syn_wr_callback(*device, DEVCB_##_write); + devcb = &victor_9000_fdc_device::set_syn_wr_callback(*device, DEVCB_##_write); #define MCFG_VICTOR_9000_FDC_LBRDY_CB(_write) \ - devcb = &victor_9000_fdc_t::set_lbrdy_wr_callback(*device, DEVCB_##_write); + devcb = &victor_9000_fdc_device::set_lbrdy_wr_callback(*device, DEVCB_##_write); @@ -38,17 +38,17 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> victor_9000_fdc_t +// ======================> victor_9000_fdc_device -class victor_9000_fdc_t : public device_t +class victor_9000_fdc_device : public device_t { public: // construction/destruction - victor_9000_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + victor_9000_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast(device).m_irq_cb.set_callback(object); } - template static devcb_base &set_syn_wr_callback(device_t &device, _Object object) { return downcast(device).m_syn_cb.set_callback(object); } - template static devcb_base &set_lbrdy_wr_callback(device_t &device, _Object object) { return downcast(device).m_lbrdy_cb.set_callback(object); } + template static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_irq_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_syn_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_syn_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_lbrdy_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_lbrdy_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( cs5_r ) { return m_via4->read(space, offset); } DECLARE_WRITE8_MEMBER( cs5_w ) { m_via4->write(space, offset, data); } @@ -63,8 +63,8 @@ public: DECLARE_WRITE8_MEMBER( floppy_p1_w ); DECLARE_READ8_MEMBER( floppy_p2_r ); DECLARE_WRITE8_MEMBER( floppy_p2_w ); - DECLARE_READ8_MEMBER( tach0_r ); - DECLARE_READ8_MEMBER( tach1_r ); + DECLARE_READ_LINE_MEMBER( tach0_r ); + DECLARE_READ_LINE_MEMBER( tach1_r ); DECLARE_WRITE8_MEMBER( da_w ); DECLARE_READ8_MEMBER( via4_pa_r ); @@ -239,8 +239,7 @@ private: // device type definition -extern const device_type VICTOR_9000_FDC; - +DECLARE_DEVICE_TYPE(VICTOR_9000_FDC, victor_9000_fdc_device) -#endif +#endif // MAME_MACHINE_VICTOR9K_FDC_H diff --git a/src/mame/machine/victor9k_kb.cpp b/src/mame/machine/victor9k_kb.cpp new file mode 100644 index 00000000000..291cab8d8ec --- /dev/null +++ b/src/mame/machine/victor9k_kb.cpp @@ -0,0 +1,678 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Victor 9000 keyboard emulation + +*********************************************************************/ + +/* + +Keyboard PCB Layout +---------- + +Marking on PCB back: A65-02307-201D 007 + +|------------------------------------------------------------------------------------| +| 22-908-03 22-950-3B XTAL 8021 74LS14 [804x] [EPROM] [???] L CN1=___ +| X X X X X X X X X X X | +| X X X X X X X X X X X X X X X X X X X X X | +| X X X X X X X X X X X X X X X X X X X X X | +| X X X X X X X X X X X X X X X X X X X X X | +| X X X X X X X X X X X X X X X X X X X X | +| X X marking X X X X X X X X | +|----------------------------------------------------------------------------------------| + + +Notes: + All IC's shown. + XTAL - 3.579545Mhz Crystal, marked "48-300-010" (front of xtal) and "3.579545Mhz" (back of xtal) + 74LS14 - Z4 - 74LS14 Hex inverter with Schmitt-trigger inputs (0.8v hysteresis) + 8021 - Z3 - Intel 8021 MCU, marked: "P8021 2137 // 8227 // 20-8021-139 // (C) INTEL 77" + 22-908-03 - Z2 - Exar Semiconductor XR22-008-03 keyboard matrix capacitive readout latch + 22-950-3B - Z1 - Exar Semiconductor XR22-050-3B keyboard matrix row driver with 4 to 12 decoder/demultiplexer + CN1 or J1 - J1 - keyboard data connector (SIP, 7 pins, right angle) + L - L1 & L2 - mil-spec 22uH 10% inductors (double wide silver band(mil spec), red(2) red(2) black(x1uH) silver(10%)) + + [804x] - unpopulated space for a 40 pin 804x or 803x MCU + [EPROM] - unpopulated space for an EPROM, if a ROMless 803x MCU was used + [???] - unpopulated space for an unknown NDIP10 IC or DIP-switch array + X - capacitive sensor pad for one key + marking - PCB trace marking: "KTC // A65-02307-007 // PCB 201 D" + +74LS14 (Hex inverter with Schmitt-trigger inputs (0.8v hysteresis)) +------------------ + __ __ + 1A 1 |* \_/ | 14 VCC + /1Y 2 | | 13 6A + 2A 3 | | 12 /6Y + /2Y 4 | | 11 5A + 3A 5 | 74LS14| 10 /5Y + /3Y 6 | | 9 4A + GND 7 |_______| 8 /4Y + + +P8021 Pinout +------------------ + _____ _____ + P22 1 |* \_/ | 28 VCC + P23 2 | | 27 P21 + PROG 3 | | 26 P20 + P00 4 | | 25 P17 + P01 5 | P8021 | 24 P16 + P02 6 | | 23 P15 + P03 7 | | 22 P14 + P04 8 | | 21 P13 + P05 9 | | 20 P12 + P06 10 | | 19 P11 + P07 11 | | 18 P10 + ALE 12 | | 17 RESET + T1 13 | | 16 XTAL 2 + VSS 14 |_____________| 15 XTAL 1 + + +XR22-008-03 Pinout (AKA XR22-908-03) +------------------ + _____ _____ + D0 1 |* \_/ | 20 Vcc + D1 2 | | 19 _CLR + D2 3 | | 18 Q0 + D3 4 | | 17 Q1 + HYS 5 | 22-008-03 | 16 Q2 + D4 6 | | 15 Q3 + D5 7 | | 14 Q4 + D6 8 | | 13 Q5 + D7 9 | | 12 Q6 + GND 10 |_____________| 11 Q7 + + +XR22-050-3B Pinout (AKA XR22-950-3B) +------------------ + _____ _____ + Y8 1 |* \_/ | 20 Vcc + Y9 2 | | 19 Y7 + Y10 3 | | 18 Y6 + Y11 4 | | 17 Y5 + _STB 5 | 22-050-3B | 16 Y4 + A0 6 | | 15 Y3 + A1 7 | | 14 Y2 + A2 8 | | 13 Y1 + A3 9 | | 12 Y0 + GND 10 |_____________| 11 OE? + +i8021 to elsewhere connections +------------------------------ +8021 pin - 22-xxx pin + P22 1 - 74LS14 pin 5 (3A) AND (804x chip pin 37, P26) + P23 2 - 74LS14 pin 11 (5A) AND (804x chip pin 38, P27) + PROG 3 - (804x chip pin 25, PROG) + P00 4 - N/C + P01 5 - N/C + P02 6 - N/C + P03 7 - N/C + P04 8 - N/C + P05 9 - N/C + P06 10 - N/C + P07 11 - N/C + ALE 12 - N/C + T1 13 - 74LS14 pin 2 (/1Y) AND (804x chip pin 39, T1) + VSS 14 - GND +XTAL1 15 - XTAL +XTAL2 16 - XTAL +RESET 17 - 10uf capacitor - VCC + P10 18 - 22-908 pin 18 (Q0) AND 22-950 pin 6 (A0) AND (804x chip pin 27, P10) + P11 19 - 22-908 pin 17 (Q1) AND 22-950 pin 7 (A1) AND (804x chip pin 28, P11) + P12 20 - 22-908 pin 16 (Q2) AND 22-950 pin 8 (A2) AND (804x chip pin 29, P12) + P13 21 - 22-908 pin 15 (Q3) AND 22-950 pin 9 (A3) AND (804x chip pin 30, P13) + P14 22 - 22-908 pin 14 (Q4) AND (804x chip pin 31, P14) + P15 23 - 22-908 pin 13 (Q5) AND (804x chip pin 32, P15) + P16 24 - 22-908 pin 12 (Q6) AND (804x chip pin 33, P16) + P17 25 - 22-908 pin 11 (Q7) AND (804x chip pin 34, P17) + P20 26 - 22-908 pin 19 (/CLR) AND 22-950 pin 5 (/STB) AND (804x chip pin 35, P24) + P21 27 - 74LS14 pin 9 (4A) AND (804x chip pin 36, P25) + VCC 28 - VCC + +74LS14 to elsewhere connections +------------------------------- + 1A 1 - 100 Ohm resistor - J1 pin 4 + /1Y 2 - 8021 pin 13 (T1) + 2A 3 - 74LS14 pin 8 + /2Y 4 - 22uH 10% inductor 'L1' - J1 pin 5 + 3A 5 - 8021 pin 1 (P22) + /3Y 6 - many keyboard contact pads (!) + GND 7 - GND + /4Y 8 - 74LS14 pin 3 + 4A 9 - 8021 pin 27 (P21) + /5Y 10 - 74LS14 pin 13 + 5A 11 - 8021 pin 2 (P23) + /6Y 12 - 22uH 10% inductor 'L2' - J1 pin 6 + 6A 13 - 74LS14 pin 10 + VCC 14 - VCC + + +J1 (aka CN1) connections: +------------------------- +1 - VCC +2 - GND +3 - GND +4 - 100 Ohm 5% resistor -> 74LS14 pin 1 -> inverted 74LS14 pin 2 -> inverted 8021 pin 13 (T1) +5 - 22uH 10% inductor 'L1' <- 74LS14 pin 4 <- inverted 74LS14 pin 3 <- inverted 74LS14 pin 8 <- 74LS14 pin 9 <- 8021 pin 27 (P21) +6 - 22uH 10% inductor 'L2' <- 74LS14 pin 12 <- inverted 74LS14 pin 13 <- inverted 74LS14 pin 10 <- 74LS14 pin 11 <- 8021 pin 2 (P23) +7 - VCC + +Pins 5,and 6 also have a .0047uF capacitor to GND (forming some sort of LC filter) +There is another .0047uF capacitor to ground from the connection between 74LS14 pin 1 and the 100 Ohm 5% resistor which connects to pin 4 (forming some sort of RC filter) + +Exar Custom connections between each other: +------------------------------------------- +22-950 pin 11 (OE?) - 68KOhm 5% resistor - 22-908 pin 5 (HYS) + +Cable connecting J1/CN1 to the Victor: +-------------------------------------- +RJ45 when looking at end of plug (not socket!) +.||||||||. +|87654321| +|__----__| + |__| + +RJ45 pins Wire Color Connection +1 White J1 pin 1 (VCC) +2 Yellow J1 pin 2 (GND) +3 Green J1 pin 3 (GND) +4 Orange J1 pin 4 (?KBACK?) +5 Blue J1 pin 5 (?KBRDY?) +6 Red J1 pin 6 (?KBDATA?) +7 Black J1 pin 7 (VCC) +8 shield/bare Keyboard Frame Ground + + +Key Layout (USA Variant): (the S0x markings appear on the back of the PCB) +|------------------------------------------------------------------------------------| +| 22-908-03 22-950-3B XTAL 8021 74LS14 [804x] [EPROM] [???] L CN1=___ +| 01 02 03 04 05 06 07 08 09 10 11 | +| 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | +| 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | +| 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | +| 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | +| 95 96 marking 97 98 99 100 101 102 103 104| +|----------------------------------------------------------------------------------------| + + key - Shifted(top)/Unshifted(bottom)/Alt(front) (if no slashes in description assume key has just one symbol on it) + S01 - [1] + S02 - [2] + S03 - [3] + S04 - [4] + S05 - [5] + S06 - [6] + S07 - [7] + S08 - [8] + S09 - UNUSED (under the [8] key, no metal contact on this part of the key) + S10 - [9] + S11 - [10] + + S12 - CLR/HOME + S13 - (Degree symbol U+00B0)/(+- symbol U+00B1)/(Pi symbol U+03C0) + S14 - !/1/| + S15 - @/2/< + S16 - #/3/> + S17 - $/4/(centered closed dot U+00B7) + S18 - %/5/(up arrow symbol U+2191) + S19 - (cent symbol U+00A2)/6/(logical not symbol U+00AC) + S20 - &/7/^ + S21 - * /8/` + S22 - (/9/{ + S23 - )/0/} + S24 - _/-/~ + S25 - +/=/\ + S26 - BACKSPACE + S27 - INS + S28 - DEL + S29 - MODE CALC/= (beige keypad key) + S30 - % (beige keypad key) + S31 - (division symbol U+00F7) (beige keypad key) + S32 - (multiplication symbol U+00D7) (beige keypad key) + + S33 - (up arrow, SCRL, down arrow)//VTAB + S34 - TAB//BACK + S35 - Q + S36 - W + S37 - E + S38 - R + S39 - T + S40 - Y + S41 - U + S42 - I + S43 - O + S44 - P + S45 - (1/4 symbol U+00BC)/(1/2 symbol U+00BD) + S46 - [/] + S47 - UNUSED (under the RETURN key, no metal contact on this part of the key) + S48 - ERASE/EOL + S49 - REQ/CAN + S50 - 7 (white keypad key) + S51 - 8 (white keypad key) + S52 - 9 (white keypad key) + S53 - - (beige keypad key) + + S54 - (OFF,RVS,ON)//ESC + S55 - LOCK//CAPS LOCK + S56 - A + S57 - S + S58 - D + S59 - F + S60 - G + S61 - H + S62 - J + S63 - K + S64 - L + S65 - :/; + S66 - "/' + S67 - UNUSED (under the RETURN key, no metal contact on this part of the key) + S68 - RETURN + S69 - WORD/(left arrow U+2190)/(volume up U+1F508 plus U+25B4) (i.e. 'Previous Word') + S70 - WORD/(right arrow U+2192)/(volume down U+1F508 plus U+25BE) (i.e. 'Next Word') + S71 - 4 (white keypad key) + S72 - 5 (white keypad key) + S73 - 6 (white keypad key) + S74 - + (beige keypad key) + + S75 - (OFF,UNDL,ON) + S76 - SHIFT (left shift) + S77 - UNUSED (under the left SHIFT key, no metal contact on this part of the key) + S78 - Z//SUB + S79 - X//SUPER + S80 - C + S81 - V + S82 - B + S83 - N + S84 - M + S85 - ,/, (yes, both are comma) + S86 - ./. (yes, both are period/fullstop) + S87 - ?// (this is the actual / key) + S88 - SHIFT (right shift) + S89 - (up arrow U+2191)//(brightness up U+263C plus U+25B4) + S90 - (down arrow U+2193)//(brightness down U+263C plus U+25BE) + S91 - 1 (white keypad key) + S92 - 2 (white keypad key) + S93 - 3 (white keypad key) + S94 - ENTER (beige keypad key) + + S95 - RPT + S96 - ALT + S97 - (spacebar) + S98 - PAUSE/CONT + S99 - (left arrow U+2190)//(contrast up U+25D0 plus U+25B4) (U+1F313 can be used in place of U+25D0) + S100 - (right arrow U+2192)//(contrast down U+25D0 plus U+25BE) '' + S101 - 0 (white keypad key) + S102 - 00 (white keypad key) ('double zero') + S103 - . (white keypad key) + S104 - UNUSED (under the ENTER (beige keypad) key, no metal contact on this part of the key) + + Note that the five unused key contacts: + S09, S47, S67, S77 and S104 + may be used on international variants of the Victor 9000/Sirius 1 Keyboard. + +Keyboard Matrix +--------------- +Row select +| Columns Sxxx by bit Columns Key by bit +| D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 +V V V V V V V V V V V V V V V V V +Y0 12 13 33 34 54 55 75 76 CLRH DEGR SCRL TAB RVS LOCK UNDL LSHFT +Y1 14 15 35 36 56 57 77 78 1 2 Q W A S N/A Z +Y2 16 17 37 38 58 59 79 80 3 4 E R D F X C +Y3 18 19 39 40 60 61 81 82 5 6 T Y G H V B +Y4 20 21 41 42 62 63 83 84 7 8 U I J K N M +Y5 22 23 43 44 64 65 85 86 9 0 O P L ; , . +Y6 24 25 45 46 66 67 87 88 - = 1/2 [] ' N/A ? RSHFT +Y7 26 27 47 48 68 69 89 90 BKSP INS N/A ERSE RETN WRDL UP DOWN +Y8 28 29 49 50 70 71 91 92 DEL MODE REQ k7 WRDR k4 k1 k2 +Y9 30 31 51 52 72 73 93 94 k% kDIV k8 k9 k5 k6 k3 kENTR +Y10 32 11 53 10 74 09 07 06 kMUL [10] k- [9] k+ N/A [7] [6] +Y11 104 103 102 101 100 99 98 97 kN/A k. k00 k0 RGHT LEFT PAUS SPACE +/3Y 05 04 03 02 01 08 95 96 [5] [4] [3] [2] [1] [8] RPT ALT + +*/ + +#include "emu.h" +#include "victor9k_kb.h" + + + +//************************************************************************** +// MACROS / CONSTANTS +//************************************************************************** + +#define I8021_TAG "z3" + +#define LOG 0 + + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +DEFINE_DEVICE_TYPE(VICTOR9K_KEYBOARD, victor_9000_keyboard_device, "victor9k_kb", "Victor 9000 Keyboard") + + +//------------------------------------------------- +// ROM( victor9k_keyboard ) +//------------------------------------------------- + +ROM_START( victor9k_keyboard ) + ROM_REGION( 0x400, I8021_TAG, 0) + ROM_LOAD( "20-8021-139.z3", 0x000, 0x400, CRC(0fe9d53d) SHA1(61d92ba90f98f8978bbd9303c1ac3134cde8cdcb) ) +ROM_END + + +//------------------------------------------------- +// rom_region - device-specific ROM region +//------------------------------------------------- + +const tiny_rom_entry *victor_9000_keyboard_device::device_rom_region() const +{ + return ROM_NAME( victor9k_keyboard ); +} + + +//------------------------------------------------- +// MACHINE_DRIVER( victor9k_keyboard ) +//------------------------------------------------- + +static MACHINE_CONFIG_FRAGMENT( victor9k_keyboard ) + MCFG_CPU_ADD(I8021_TAG, I8021, XTAL_3_579545MHz) + // P0 is unconnected on pcb + MCFG_MCS48_PORT_P1_IN_CB(READ8(victor_9000_keyboard_device, kb_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(victor_9000_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(victor_9000_keyboard_device, kb_p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(victor_9000_keyboard_device, kb_t1_r)) +MACHINE_CONFIG_END + + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor victor_9000_keyboard_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( victor9k_keyboard ); +} + + +//------------------------------------------------- +// INPUT_PORTS( victor9k_keyboard ) +//------------------------------------------------- + +INPUT_PORTS_START( victor9k_keyboard ) + PORT_START("Y0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CLR/HOME") PORT_CODE(KEYCODE_HOME) // S12 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_PLUSMINUS" " UTF8_DEGREES" " UTF8_SMALL_PI) PORT_CODE(KEYCODE_TILDE) // +-, degree, pi // S13 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP" SCRL " UTF8_DOWN) PORT_CODE(KEYCODE_SCRLOCK) // unicode arrows // S33 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("TAB/BACK") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) // S34 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RVS On-Off/ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) // S54 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LOCK/CAPSLOCK") PORT_CODE(KEYCODE_CAPSLOCK) // S55 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNDL On-Off") PORT_CODE(KEYCODE_PRTSCR) // need better key code // S75 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // S76 + + PORT_START("Y1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("1 ! |") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_CHAR('|') // S14 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("2 @ <") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@') PORT_CHAR('<') // S15 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') // S35 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') // S36 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') // S56 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') // S57 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S75") // unused // S75 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Z SUB") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') // S76 + + PORT_START("Y2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("3 # >") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') PORT_CHAR('>') // S16 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("4 $ \xc2\xb7") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') // centered closed dot U+00B7 // S17 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') // S37 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') // S38 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') // S58 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') // S59 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("X SUPER") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') // S79 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') // S80 + + PORT_START("Y3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("5 % " UTF8_UP) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') // S18 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("6 \xc2\xa2 \xc2\xac") PORT_CODE(KEYCODE_6) PORT_CHAR('6') // cent U+00A2, logic not U+00AC // S19 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') // S39 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') // S40 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') // S60 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') // S61 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') // S81 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') // S82 + + PORT_START("Y4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("7 & ^") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&') PORT_CHAR('^') // S20 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("8 * `") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*') PORT_CHAR('`') // S21 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') // S41 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') // S42 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') // S62 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') // S63 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') // S83 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') // S84 + + PORT_START("Y5") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("9 ( {") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(') PORT_CHAR('{') // S22 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("0 ) }") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') PORT_CHAR('}') // S23 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') // S43 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') // S44 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') // S64 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("; :") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') // S65 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') // S85 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') // S86 + + PORT_START("Y6") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("- _ ~") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') PORT_CHAR('~') // S24 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("= + \\") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') PORT_CHAR('\\') // S25 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xc2\xbd \xc2\xbc") PORT_CODE(KEYCODE_OPENBRACE) // unicode half fraction U+00BD / quarter fraction U+00BC // S45 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("[ ]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR(']') // S46 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("' \"") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('\"') // S66 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S67") // unused // S67 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') // S87 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // S88 + + PORT_START("Y7") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("BACKSPACE") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) // S26 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("INS") PORT_CODE(KEYCODE_INSERT) // S27 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S47") // unused // S47 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ERASE/EOL") PORT_CODE(KEYCODE_END) // should this be mapped to end or del? // S48 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) // S68 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word " UTF8_LEFT"/Volume Up \xf0\x9f\x94\x88\xe2\x96\xb4") PORT_CODE(KEYCODE_PGUP) // unicode U+2190/U+1F508 + U+25B4 // S69 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP"/Brightness Up \xe2\x98\xbc\xe2\x96\xb4") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // U+2191/U+263C + U+25B4 // S89 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_DOWN"/Brightness Down \xe2\x98\xbc\xe2\x96\xbe") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // U+2193/U+263C + U+25BE // S90 + + PORT_START("Y8") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL) PORT_CHAR(127) // S28 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad MODE CALC/=") PORT_CODE(KEYCODE_NUMLOCK) // S29 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("REQ/CAN") PORT_CODE(KEYCODE_BACKSLASH) // is this a good key for this? does sysrq make more sense? // S49 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) // S50 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word " UTF8_RIGHT"/Volume Down \xf0\x9f\x94\x88\xe2\x96\xbe") PORT_CODE(KEYCODE_PGDN) // unicode U+2192/U+1F508 + U+25B4 // S70 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) // S71 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) // S91 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) // S92 + + PORT_START("Y9") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad %") // find a good key for this // S30 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad " UTF8_DIVIDE) PORT_CODE(KEYCODE_SLASH_PAD) // unicode division sign U+00F7 // S31 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) // S51 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) // S52 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) // S72 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) // S73 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) // S93 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad Enter") PORT_CODE(KEYCODE_ENTER_PAD) // S94 + + PORT_START("Y10") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad " UTF8_MULTIPLY) PORT_CODE(KEYCODE_ASTERISK) // unicode multiply sign U+00D7 // S32 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F10 [10]") PORT_CODE(KEYCODE_F10) // S11 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) // S53 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F9 [9]") PORT_CODE(KEYCODE_F9) // S10 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad +") PORT_CODE(KEYCODE_PLUS_PAD) // S74 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S09") // unused // S09 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F7 [7]") PORT_CODE(KEYCODE_F7) // S07 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F6 [6]") PORT_CODE(KEYCODE_F6) // S06 + + PORT_START("Y11") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S04") // unused // S104 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_DEL_PAD) // S103 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 00") PORT_CODE(KEYCODE_00_PAD) // S102 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) // S101 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_RIGHT"/Contrast Down \xe2\x97\x90\xe2\x96\xbe") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) // U+2190/U+25D0 + U+25BE S100 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_LEFT"/Contrast Up \xe2\x97\x90\xe2\x96\xb4") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) // U+2190/U+25D0 + U+25B4 S99 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PAUSE/CONT") PORT_CODE(KEYCODE_PAUSE) // S98 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Spacebar") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') // S97 + + PORT_START("Y12") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F5 [5]") PORT_CODE(KEYCODE_F5) // S05 + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F4 [4]") PORT_CODE(KEYCODE_F4) // S04 + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F3 [3]") PORT_CODE(KEYCODE_F3) // S03 + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F2 [2]") PORT_CODE(KEYCODE_F2) // S02 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F1 [1]") PORT_CODE(KEYCODE_F1) // S01 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F8 [8]") PORT_CODE(KEYCODE_F8) // S11 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RPT") PORT_CODE(KEYCODE_LCONTROL) // S95 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ALT") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_SHIFT_2) // S96 +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor victor_9000_keyboard_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( victor9k_keyboard ); +} + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// victor_9000_keyboard_device - constructor +//------------------------------------------------- + +victor_9000_keyboard_device::victor_9000_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, VICTOR9K_KEYBOARD, tag, owner, clock), + m_maincpu(*this, I8021_TAG), + m_y(*this, "Y%u", 0), + m_kbrdy_cb(*this), + m_kbdata_cb(*this), + m_keylatch(0), + m_kbrdy(-1), + m_kbdata(-1), + m_kback(1) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void victor_9000_keyboard_device::device_start() +{ + // resolve callbacks + m_kbrdy_cb.resolve_safe(); + m_kbdata_cb.resolve_safe(); + + // state saving + save_item(NAME(m_p1)); + save_item(NAME(m_keylatch)); + save_item(NAME(m_stb)); + save_item(NAME(m_y12)); + save_item(NAME(m_kbrdy)); + save_item(NAME(m_kbdata)); + save_item(NAME(m_kback)); +} + + +//------------------------------------------------- +// kback_w - +//------------------------------------------------- + +WRITE_LINE_MEMBER( victor_9000_keyboard_device::kback_w ) +{ + if (LOG) logerror("KBACK %u\n", state); + + m_kback = !state; +} + + +//------------------------------------------------- +// kb_p1_r - +//------------------------------------------------- + +READ8_MEMBER( victor_9000_keyboard_device::kb_p1_r ) +{ + uint8_t data = 0xff; + + if (m_keylatch < 12) + { + data &= m_y[m_keylatch]->read(); + } + + if (!m_y12) + { + data &= m_y[12]->read(); + } + + return data; +} + + +//------------------------------------------------- +// kb_p1_w - +//------------------------------------------------- + +WRITE8_MEMBER( victor_9000_keyboard_device::kb_p1_w ) +{ + m_p1 = data; +} + + +//------------------------------------------------- +// kb_p2_w - +//------------------------------------------------- + +WRITE8_MEMBER( victor_9000_keyboard_device::kb_p2_w ) +{ + /* + + bit description + + P20 22-908 CLR, 22-950 STB + P21 KBRDY + P22 Y12 + P23 KBDATA + + */ + + // falling (?edge or level?), latch keyboard rows 0-11 + if (!BIT(data, 0)) + { + m_keylatch = m_p1 & 0x0f; + m_y12 = BIT(data, 2); + } + + // keyboard ready + m_kbrdy_cb(BIT(data, 1)); + + // keyboard data + m_kbdata_cb(BIT(data, 3)); +} + + +//------------------------------------------------- +// kb_t1_r - +//------------------------------------------------- + +READ_LINE_MEMBER( victor_9000_keyboard_device::kb_t1_r ) +{ + return m_kback; +} diff --git a/src/mame/machine/victor9k_kb.h b/src/mame/machine/victor9k_kb.h new file mode 100644 index 00000000000..dd13aff5790 --- /dev/null +++ b/src/mame/machine/victor9k_kb.h @@ -0,0 +1,84 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Victor 9000 keyboard emulation + +*********************************************************************/ + +#ifndef MAME_MACHINE_VICTOR9K_KB_H +#define MAME_MACHINE_VICTOR9K_KB_H + + +#pragma once + +#include "cpu/mcs48/mcs48.h" + + + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_VICTOR9K_KBRDY_HANDLER(_devcb) \ + devcb = &victor_9000_keyboard_device::set_kbrdy_cb(*device, DEVCB_##_devcb); + +#define MCFG_VICTOR9K_KBDATA_HANDLER(_devcb) \ + devcb = &victor_9000_keyboard_device::set_kbdata_cb(*device, DEVCB_##_devcb); + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> victor_9000_keyboard_device + +class victor_9000_keyboard_device : public device_t +{ +public: + // construction/destruction + victor_9000_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + template static devcb_base &set_kbrdy_cb(device_t &device, _Object object) { return downcast(device).m_kbrdy_cb.set_callback(object); } + template static devcb_base &set_kbdata_cb(device_t &device, _Object object) { return downcast(device).m_kbdata_cb.set_callback(object); } + + // optional information overrides + virtual const tiny_rom_entry *device_rom_region() const override; + virtual machine_config_constructor device_mconfig_additions() const override; + virtual ioport_constructor device_input_ports() const override; + + DECLARE_WRITE_LINE_MEMBER( kback_w ); + + // not really public + DECLARE_READ8_MEMBER( kb_p1_r ); + DECLARE_WRITE8_MEMBER( kb_p1_w ); + DECLARE_WRITE8_MEMBER( kb_p2_w ); + DECLARE_READ_LINE_MEMBER( kb_t1_r ); + +protected: + // device-level overrides + virtual void device_start() override; + +private: + required_device m_maincpu; + required_ioport_array<13> m_y; + + devcb_write_line m_kbrdy_cb; + devcb_write_line m_kbdata_cb; + + uint8_t m_p1; + uint8_t m_keylatch; + int m_stb; + int m_y12; + int m_kbrdy; + int m_kbdata; + int m_kback; +}; + + +// device type definition +DECLARE_DEVICE_TYPE(VICTOR9K_KEYBOARD, victor_9000_keyboard_device) + + + +#endif // MAME_MACHINE_VICTOR9K_KB_H diff --git a/src/mame/machine/victor9kb.cpp b/src/mame/machine/victor9kb.cpp deleted file mode 100644 index b26df2526ac..00000000000 --- a/src/mame/machine/victor9kb.cpp +++ /dev/null @@ -1,686 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Curt Coder -/********************************************************************** - - Victor 9000 keyboard emulation - -*********************************************************************/ - -/* - -Keyboard PCB Layout ----------- - -Marking on PCB back: A65-02307-201D 007 - -|------------------------------------------------------------------------------------| -| 22-908-03 22-950-3B XTAL 8021 74LS14 [804x] [EPROM] [???] L CN1=___ -| X X X X X X X X X X X | -| X X X X X X X X X X X X X X X X X X X X X | -| X X X X X X X X X X X X X X X X X X X X X | -| X X X X X X X X X X X X X X X X X X X X X | -| X X X X X X X X X X X X X X X X X X X X | -| X X marking X X X X X X X X | -|----------------------------------------------------------------------------------------| - - -Notes: - All IC's shown. - XTAL - 3.579545Mhz Crystal, marked "48-300-010" (front of xtal) and "3.579545Mhz" (back of xtal) - 74LS14 - Z4 - 74LS14 Hex inverter with Schmitt-trigger inputs (0.8v hysteresis) - 8021 - Z3 - Intel 8021 MCU, marked: "P8021 2137 // 8227 // 20-8021-139 // (C) INTEL 77" - 22-908-03 - Z2 - Exar Semiconductor XR22-008-03 keyboard matrix capacitive readout latch - 22-950-3B - Z1 - Exar Semiconductor XR22-050-3B keyboard matrix row driver with 4 to 12 decoder/demultiplexer - CN1 or J1 - J1 - keyboard data connector (SIP, 7 pins, right angle) - L - L1 & L2 - mil-spec 22uH 10% inductors (double wide silver band(mil spec), red(2) red(2) black(x1uH) silver(10%)) - - [804x] - unpopulated space for a 40 pin 804x or 803x MCU - [EPROM] - unpopulated space for an EPROM, if a ROMless 803x MCU was used - [???] - unpopulated space for an unknown NDIP10 IC or DIP-switch array - X - capacitive sensor pad for one key - marking - PCB trace marking: "KTC // A65-02307-007 // PCB 201 D" - -74LS14 (Hex inverter with Schmitt-trigger inputs (0.8v hysteresis)) ------------------- - __ __ - 1A 1 |* \_/ | 14 VCC - /1Y 2 | | 13 6A - 2A 3 | | 12 /6Y - /2Y 4 | | 11 5A - 3A 5 | 74LS14| 10 /5Y - /3Y 6 | | 9 4A - GND 7 |_______| 8 /4Y - - -P8021 Pinout ------------------- - _____ _____ - P22 1 |* \_/ | 28 VCC - P23 2 | | 27 P21 - PROG 3 | | 26 P20 - P00 4 | | 25 P17 - P01 5 | P8021 | 24 P16 - P02 6 | | 23 P15 - P03 7 | | 22 P14 - P04 8 | | 21 P13 - P05 9 | | 20 P12 - P06 10 | | 19 P11 - P07 11 | | 18 P10 - ALE 12 | | 17 RESET - T1 13 | | 16 XTAL 2 - VSS 14 |_____________| 15 XTAL 1 - - -XR22-008-03 Pinout (AKA XR22-908-03) ------------------- - _____ _____ - D0 1 |* \_/ | 20 Vcc - D1 2 | | 19 _CLR - D2 3 | | 18 Q0 - D3 4 | | 17 Q1 - HYS 5 | 22-008-03 | 16 Q2 - D4 6 | | 15 Q3 - D5 7 | | 14 Q4 - D6 8 | | 13 Q5 - D7 9 | | 12 Q6 - GND 10 |_____________| 11 Q7 - - -XR22-050-3B Pinout (AKA XR22-950-3B) ------------------- - _____ _____ - Y8 1 |* \_/ | 20 Vcc - Y9 2 | | 19 Y7 - Y10 3 | | 18 Y6 - Y11 4 | | 17 Y5 - _STB 5 | 22-050-3B | 16 Y4 - A0 6 | | 15 Y3 - A1 7 | | 14 Y2 - A2 8 | | 13 Y1 - A3 9 | | 12 Y0 - GND 10 |_____________| 11 OE? - -i8021 to elsewhere connections ------------------------------- -8021 pin - 22-xxx pin - P22 1 - 74LS14 pin 5 (3A) AND (804x chip pin 37, P26) - P23 2 - 74LS14 pin 11 (5A) AND (804x chip pin 38, P27) - PROG 3 - (804x chip pin 25, PROG) - P00 4 - N/C - P01 5 - N/C - P02 6 - N/C - P03 7 - N/C - P04 8 - N/C - P05 9 - N/C - P06 10 - N/C - P07 11 - N/C - ALE 12 - N/C - T1 13 - 74LS14 pin 2 (/1Y) AND (804x chip pin 39, T1) - VSS 14 - GND -XTAL1 15 - XTAL -XTAL2 16 - XTAL -RESET 17 - 10uf capacitor - VCC - P10 18 - 22-908 pin 18 (Q0) AND 22-950 pin 6 (A0) AND (804x chip pin 27, P10) - P11 19 - 22-908 pin 17 (Q1) AND 22-950 pin 7 (A1) AND (804x chip pin 28, P11) - P12 20 - 22-908 pin 16 (Q2) AND 22-950 pin 8 (A2) AND (804x chip pin 29, P12) - P13 21 - 22-908 pin 15 (Q3) AND 22-950 pin 9 (A3) AND (804x chip pin 30, P13) - P14 22 - 22-908 pin 14 (Q4) AND (804x chip pin 31, P14) - P15 23 - 22-908 pin 13 (Q5) AND (804x chip pin 32, P15) - P16 24 - 22-908 pin 12 (Q6) AND (804x chip pin 33, P16) - P17 25 - 22-908 pin 11 (Q7) AND (804x chip pin 34, P17) - P20 26 - 22-908 pin 19 (/CLR) AND 22-950 pin 5 (/STB) AND (804x chip pin 35, P24) - P21 27 - 74LS14 pin 9 (4A) AND (804x chip pin 36, P25) - VCC 28 - VCC - -74LS14 to elsewhere connections -------------------------------- - 1A 1 - 100 Ohm resistor - J1 pin 4 - /1Y 2 - 8021 pin 13 (T1) - 2A 3 - 74LS14 pin 8 - /2Y 4 - 22uH 10% inductor 'L1' - J1 pin 5 - 3A 5 - 8021 pin 1 (P22) - /3Y 6 - many keyboard contact pads (!) - GND 7 - GND - /4Y 8 - 74LS14 pin 3 - 4A 9 - 8021 pin 27 (P21) - /5Y 10 - 74LS14 pin 13 - 5A 11 - 8021 pin 2 (P23) - /6Y 12 - 22uH 10% inductor 'L2' - J1 pin 6 - 6A 13 - 74LS14 pin 10 - VCC 14 - VCC - - -J1 (aka CN1) connections: -------------------------- -1 - VCC -2 - GND -3 - GND -4 - 100 Ohm 5% resistor -> 74LS14 pin 1 -> inverted 74LS14 pin 2 -> inverted 8021 pin 13 (T1) -5 - 22uH 10% inductor 'L1' <- 74LS14 pin 4 <- inverted 74LS14 pin 3 <- inverted 74LS14 pin 8 <- 74LS14 pin 9 <- 8021 pin 27 (P21) -6 - 22uH 10% inductor 'L2' <- 74LS14 pin 12 <- inverted 74LS14 pin 13 <- inverted 74LS14 pin 10 <- 74LS14 pin 11 <- 8021 pin 2 (P23) -7 - VCC - -Pins 5,and 6 also have a .0047uF capacitor to GND (forming some sort of LC filter) -There is another .0047uF capacitor to ground from the connection between 74LS14 pin 1 and the 100 Ohm 5% resistor which connects to pin 4 (forming some sort of RC filter) - -Exar Custom connections between each other: -------------------------------------------- -22-950 pin 11 (OE?) - 68KOhm 5% resistor - 22-908 pin 5 (HYS) - -Cable connecting J1/CN1 to the Victor: --------------------------------------- -RJ45 when looking at end of plug (not socket!) -.||||||||. -|87654321| -|__----__| - |__| - -RJ45 pins Wire Color Connection -1 White J1 pin 1 (VCC) -2 Yellow J1 pin 2 (GND) -3 Green J1 pin 3 (GND) -4 Orange J1 pin 4 (?KBACK?) -5 Blue J1 pin 5 (?KBRDY?) -6 Red J1 pin 6 (?KBDATA?) -7 Black J1 pin 7 (VCC) -8 shield/bare Keyboard Frame Ground - - -Key Layout (USA Variant): (the S0x markings appear on the back of the PCB) -|------------------------------------------------------------------------------------| -| 22-908-03 22-950-3B XTAL 8021 74LS14 [804x] [EPROM] [???] L CN1=___ -| 01 02 03 04 05 06 07 08 09 10 11 | -| 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | -| 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | -| 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | -| 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | -| 95 96 marking 97 98 99 100 101 102 103 104| -|----------------------------------------------------------------------------------------| - - key - Shifted(top)/Unshifted(bottom)/Alt(front) (if no slashes in description assume key has just one symbol on it) - S01 - [1] - S02 - [2] - S03 - [3] - S04 - [4] - S05 - [5] - S06 - [6] - S07 - [7] - S08 - [8] - S09 - UNUSED (under the [8] key, no metal contact on this part of the key) - S10 - [9] - S11 - [10] - - S12 - CLR/HOME - S13 - (Degree symbol U+00B0)/(+- symbol U+00B1)/(Pi symbol U+03C0) - S14 - !/1/| - S15 - @/2/< - S16 - #/3/> - S17 - $/4/(centered closed dot U+00B7) - S18 - %/5/(up arrow symbol U+2191) - S19 - (cent symbol U+00A2)/6/(logical not symbol U+00AC) - S20 - &/7/^ - S21 - * /8/` - S22 - (/9/{ - S23 - )/0/} - S24 - _/-/~ - S25 - +/=/\ - S26 - BACKSPACE - S27 - INS - S28 - DEL - S29 - MODE CALC/= (beige keypad key) - S30 - % (beige keypad key) - S31 - (division symbol U+00F7) (beige keypad key) - S32 - (multiplication symbol U+00D7) (beige keypad key) - - S33 - (up arrow, SCRL, down arrow)//VTAB - S34 - TAB//BACK - S35 - Q - S36 - W - S37 - E - S38 - R - S39 - T - S40 - Y - S41 - U - S42 - I - S43 - O - S44 - P - S45 - (1/4 symbol U+00BC)/(1/2 symbol U+00BD) - S46 - [/] - S47 - UNUSED (under the RETURN key, no metal contact on this part of the key) - S48 - ERASE/EOL - S49 - REQ/CAN - S50 - 7 (white keypad key) - S51 - 8 (white keypad key) - S52 - 9 (white keypad key) - S53 - - (beige keypad key) - - S54 - (OFF,RVS,ON)//ESC - S55 - LOCK//CAPS LOCK - S56 - A - S57 - S - S58 - D - S59 - F - S60 - G - S61 - H - S62 - J - S63 - K - S64 - L - S65 - :/; - S66 - "/' - S67 - UNUSED (under the RETURN key, no metal contact on this part of the key) - S68 - RETURN - S69 - WORD/(left arrow U+2190)/(volume up U+1F508 plus U+25B4) (i.e. 'Previous Word') - S70 - WORD/(right arrow U+2192)/(volume down U+1F508 plus U+25BE) (i.e. 'Next Word') - S71 - 4 (white keypad key) - S72 - 5 (white keypad key) - S73 - 6 (white keypad key) - S74 - + (beige keypad key) - - S75 - (OFF,UNDL,ON) - S76 - SHIFT (left shift) - S77 - UNUSED (under the left SHIFT key, no metal contact on this part of the key) - S78 - Z//SUB - S79 - X//SUPER - S80 - C - S81 - V - S82 - B - S83 - N - S84 - M - S85 - ,/, (yes, both are comma) - S86 - ./. (yes, both are period/fullstop) - S87 - ?// (this is the actual / key) - S88 - SHIFT (right shift) - S89 - (up arrow U+2191)//(brightness up U+263C plus U+25B4) - S90 - (down arrow U+2193)//(brightness down U+263C plus U+25BE) - S91 - 1 (white keypad key) - S92 - 2 (white keypad key) - S93 - 3 (white keypad key) - S94 - ENTER (beige keypad key) - - S95 - RPT - S96 - ALT - S97 - (spacebar) - S98 - PAUSE/CONT - S99 - (left arrow U+2190)//(contrast up U+25D0 plus U+25B4) (U+1F313 can be used in place of U+25D0) - S100 - (right arrow U+2192)//(contrast down U+25D0 plus U+25BE) '' - S101 - 0 (white keypad key) - S102 - 00 (white keypad key) ('double zero') - S103 - . (white keypad key) - S104 - UNUSED (under the ENTER (beige keypad) key, no metal contact on this part of the key) - - Note that the five unused key contacts: - S09, S47, S67, S77 and S104 - may be used on international variants of the Victor 9000/Sirius 1 Keyboard. - -Keyboard Matrix ---------------- -Row select -| Columns Sxxx by bit Columns Key by bit -| D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 -V V V V V V V V V V V V V V V V V -Y0 12 13 33 34 54 55 75 76 CLRH DEGR SCRL TAB RVS LOCK UNDL LSHFT -Y1 14 15 35 36 56 57 77 78 1 2 Q W A S N/A Z -Y2 16 17 37 38 58 59 79 80 3 4 E R D F X C -Y3 18 19 39 40 60 61 81 82 5 6 T Y G H V B -Y4 20 21 41 42 62 63 83 84 7 8 U I J K N M -Y5 22 23 43 44 64 65 85 86 9 0 O P L ; , . -Y6 24 25 45 46 66 67 87 88 - = 1/2 [] ' N/A ? RSHFT -Y7 26 27 47 48 68 69 89 90 BKSP INS N/A ERSE RETN WRDL UP DOWN -Y8 28 29 49 50 70 71 91 92 DEL MODE REQ k7 WRDR k4 k1 k2 -Y9 30 31 51 52 72 73 93 94 k% kDIV k8 k9 k5 k6 k3 kENTR -Y10 32 11 53 10 74 09 07 06 kMUL [10] k- [9] k+ N/A [7] [6] -Y11 104 103 102 101 100 99 98 97 kN/A k. k00 k0 RGHT LEFT PAUS SPACE -/3Y 05 04 03 02 01 08 95 96 [5] [4] [3] [2] [1] [8] RPT ALT - -*/ - -#include "emu.h" -#include "victor9kb.h" - - - -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define I8021_TAG "z3" - -#define LOG 0 - - - -//************************************************************************** -// DEVICE DEFINITIONS -//************************************************************************** - -const device_type VICTOR9K_KEYBOARD = device_creator; - - -//------------------------------------------------- -// ROM( victor9k_keyboard ) -//------------------------------------------------- - -ROM_START( victor9k_keyboard ) - ROM_REGION( 0x400, I8021_TAG, 0) - ROM_LOAD( "20-8021-139.z3", 0x000, 0x400, CRC(0fe9d53d) SHA1(61d92ba90f98f8978bbd9303c1ac3134cde8cdcb) ) -ROM_END - - -//------------------------------------------------- -// rom_region - device-specific ROM region -//------------------------------------------------- - -const tiny_rom_entry *victor_9000_keyboard_t::device_rom_region() const -{ - return ROM_NAME( victor9k_keyboard ); -} - - -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( victor9k_keyboard_io, AS_IO, 8, victor_9000_keyboard_t ) - // P0 is unconnected on pcb - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(kb_t1_r) -ADDRESS_MAP_END - - -//------------------------------------------------- -// MACHINE_DRIVER( victor9k_keyboard ) -//------------------------------------------------- - -static MACHINE_CONFIG_FRAGMENT( victor9k_keyboard ) - MCFG_CPU_ADD(I8021_TAG, I8021, XTAL_3_579545MHz) - MCFG_CPU_IO_MAP(victor9k_keyboard_io) -MACHINE_CONFIG_END - - -//------------------------------------------------- -// machine_config_additions - device-specific -// machine configurations -//------------------------------------------------- - -machine_config_constructor victor_9000_keyboard_t::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( victor9k_keyboard ); -} - - -//------------------------------------------------- -// INPUT_PORTS( victor9k_keyboard ) -//------------------------------------------------- - -INPUT_PORTS_START( victor9k_keyboard ) - PORT_START("Y0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CLR/HOME") PORT_CODE(KEYCODE_HOME) // S12 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_PLUSMINUS" " UTF8_DEGREES" " UTF8_SMALL_PI) PORT_CODE(KEYCODE_TILDE) // +-, degree, pi // S13 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP" SCRL " UTF8_DOWN) PORT_CODE(KEYCODE_SCRLOCK) // unicode arrows // S33 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("TAB/BACK") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) // S34 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RVS On-Off/ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) // S54 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LOCK/CAPSLOCK") PORT_CODE(KEYCODE_CAPSLOCK) // S55 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNDL On-Off") PORT_CODE(KEYCODE_PRTSCR) // need better key code // S75 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // S76 - - PORT_START("Y1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("1 ! |") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_CHAR('|') // S14 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("2 @ <") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@') PORT_CHAR('<') // S15 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') // S35 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') // S36 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') // S56 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') // S57 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S75") // unused // S75 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Z SUB") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') // S76 - - PORT_START("Y2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("3 # >") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') PORT_CHAR('>') // S16 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("4 $ \xc2\xb7") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') // centered closed dot U+00B7 // S17 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') // S37 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') // S38 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') // S58 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') // S59 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("X SUPER") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') // S79 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') // S80 - - PORT_START("Y3") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("5 % " UTF8_UP) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') // S18 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("6 \xc2\xa2 \xc2\xac") PORT_CODE(KEYCODE_6) PORT_CHAR('6') // cent U+00A2, logic not U+00AC // S19 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') // S39 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') // S40 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') // S60 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') // S61 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') // S81 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') // S82 - - PORT_START("Y4") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("7 & ^") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&') PORT_CHAR('^') // S20 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("8 * `") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*') PORT_CHAR('`') // S21 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') // S41 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') // S42 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') // S62 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') // S63 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') // S83 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') // S84 - - PORT_START("Y5") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("9 ( {") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(') PORT_CHAR('{') // S22 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("0 ) }") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') PORT_CHAR('}') // S23 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') // S43 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') // S44 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') // S64 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("; :") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') // S65 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') // S85 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') // S86 - - PORT_START("Y6") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("- _ ~") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') PORT_CHAR('~') // S24 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("= + \\") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') PORT_CHAR('\\') // S25 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xc2\xbd \xc2\xbc") PORT_CODE(KEYCODE_OPENBRACE) // unicode half fraction U+00BD / quarter fraction U+00BC // S45 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("[ ]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR(']') // S46 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("' \"") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('\"') // S66 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S67") // unused // S67 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') // S87 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // S88 - - PORT_START("Y7") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("BACKSPACE") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) // S26 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("INS") PORT_CODE(KEYCODE_INSERT) // S27 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S47") // unused // S47 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ERASE/EOL") PORT_CODE(KEYCODE_END) // should this be mapped to end or del? // S48 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) // S68 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word " UTF8_LEFT"/Volume Up \xf0\x9f\x94\x88\xe2\x96\xb4") PORT_CODE(KEYCODE_PGUP) // unicode U+2190/U+1F508 + U+25B4 // S69 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP"/Brightness Up \xe2\x98\xbc\xe2\x96\xb4") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // U+2191/U+263C + U+25B4 // S89 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_DOWN"/Brightness Down \xe2\x98\xbc\xe2\x96\xbe") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // U+2193/U+263C + U+25BE // S90 - - PORT_START("Y8") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL) PORT_CHAR(127) // S28 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad MODE CALC/=") PORT_CODE(KEYCODE_NUMLOCK) // S29 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("REQ/CAN") PORT_CODE(KEYCODE_BACKSLASH) // is this a good key for this? does sysrq make more sense? // S49 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) // S50 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word " UTF8_RIGHT"/Volume Down \xf0\x9f\x94\x88\xe2\x96\xbe") PORT_CODE(KEYCODE_PGDN) // unicode U+2192/U+1F508 + U+25B4 // S70 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) // S71 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) // S91 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) // S92 - - PORT_START("Y9") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad %") // find a good key for this // S30 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad " UTF8_DIVIDE) PORT_CODE(KEYCODE_SLASH_PAD) // unicode division sign U+00F7 // S31 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) // S51 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) // S52 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) // S72 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) // S73 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) // S93 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad Enter") PORT_CODE(KEYCODE_ENTER_PAD) // S94 - - PORT_START("Y10") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad " UTF8_MULTIPLY) PORT_CODE(KEYCODE_ASTERISK) // unicode multiply sign U+00D7 // S32 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F10 [10]") PORT_CODE(KEYCODE_F10) // S11 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) // S53 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F9 [9]") PORT_CODE(KEYCODE_F9) // S10 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad +") PORT_CODE(KEYCODE_PLUS_PAD) // S74 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S09") // unused // S09 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F7 [7]") PORT_CODE(KEYCODE_F7) // S07 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F6 [6]") PORT_CODE(KEYCODE_F6) // S06 - - PORT_START("Y11") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S04") // unused // S104 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_DEL_PAD) // S103 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 00") PORT_CODE(KEYCODE_00_PAD) // S102 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) // S101 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_RIGHT"/Contrast Down \xe2\x97\x90\xe2\x96\xbe") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) // U+2190/U+25D0 + U+25BE S100 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_LEFT"/Contrast Up \xe2\x97\x90\xe2\x96\xb4") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) // U+2190/U+25D0 + U+25B4 S99 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PAUSE/CONT") PORT_CODE(KEYCODE_PAUSE) // S98 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Spacebar") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') // S97 - - PORT_START("Y12") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F5 [5]") PORT_CODE(KEYCODE_F5) // S05 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F4 [4]") PORT_CODE(KEYCODE_F4) // S04 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F3 [3]") PORT_CODE(KEYCODE_F3) // S03 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F2 [2]") PORT_CODE(KEYCODE_F2) // S02 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F1 [1]") PORT_CODE(KEYCODE_F1) // S01 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F8 [8]") PORT_CODE(KEYCODE_F8) // S11 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RPT") PORT_CODE(KEYCODE_LCONTROL) // S95 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ALT") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_SHIFT_2) // S96 -INPUT_PORTS_END - - -//------------------------------------------------- -// input_ports - device-specific input ports -//------------------------------------------------- - -ioport_constructor victor_9000_keyboard_t::device_input_ports() const -{ - return INPUT_PORTS_NAME( victor9k_keyboard ); -} - - - -//************************************************************************** -// LIVE DEVICE -//************************************************************************** - -//------------------------------------------------- -// victor_9000_keyboard_t - constructor -//------------------------------------------------- - -victor_9000_keyboard_t::victor_9000_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, VICTOR9K_KEYBOARD, "Victor 9000 Keyboard", tag, owner, clock, "victor9kb", __FILE__), - m_maincpu(*this, I8021_TAG), - m_y(*this, "Y%u", 0), - m_kbrdy_cb(*this), - m_kbdata_cb(*this), - m_keylatch(0), - m_kbrdy(-1), - m_kbdata(-1), - m_kback(1) -{ -} - - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void victor_9000_keyboard_t::device_start() -{ - // resolve callbacks - m_kbrdy_cb.resolve_safe(); - m_kbdata_cb.resolve_safe(); - - // state saving - save_item(NAME(m_p1)); - save_item(NAME(m_keylatch)); - save_item(NAME(m_stb)); - save_item(NAME(m_y12)); - save_item(NAME(m_kbrdy)); - save_item(NAME(m_kbdata)); - save_item(NAME(m_kback)); -} - - -//------------------------------------------------- -// kback_w - -//------------------------------------------------- - -WRITE_LINE_MEMBER( victor_9000_keyboard_t::kback_w ) -{ - if (LOG) logerror("KBACK %u\n", state); - - m_kback = !state; -} - - -//------------------------------------------------- -// kb_p1_r - -//------------------------------------------------- - -READ8_MEMBER( victor_9000_keyboard_t::kb_p1_r ) -{ - uint8_t data = 0xff; - - if (m_keylatch < 12) - { - data &= m_y[m_keylatch]->read(); - } - - if (!m_y12) - { - data &= m_y[12]->read(); - } - - return data; -} - - -//------------------------------------------------- -// kb_p1_w - -//------------------------------------------------- - -WRITE8_MEMBER( victor_9000_keyboard_t::kb_p1_w ) -{ - m_p1 = data; -} - - -//------------------------------------------------- -// kb_p2_w - -//------------------------------------------------- - -WRITE8_MEMBER( victor_9000_keyboard_t::kb_p2_w ) -{ - /* - - bit description - - P20 22-908 CLR, 22-950 STB - P21 KBRDY - P22 Y12 - P23 KBDATA - - */ - - // falling (?edge or level?), latch keyboard rows 0-11 - if (!BIT(data, 0)) - { - m_keylatch = m_p1 & 0x0f; - m_y12 = BIT(data, 2); - } - - // keyboard ready - m_kbrdy_cb(BIT(data, 1)); - - // keyboard data - m_kbdata_cb(BIT(data, 3)); -} - - -//------------------------------------------------- -// kb_t1_r - -//------------------------------------------------- - -READ8_MEMBER( victor_9000_keyboard_t::kb_t1_r ) -{ - return m_kback; -} diff --git a/src/mame/machine/victor9kb.h b/src/mame/machine/victor9kb.h deleted file mode 100644 index 5cf750c59ae..00000000000 --- a/src/mame/machine/victor9kb.h +++ /dev/null @@ -1,84 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Curt Coder -/********************************************************************** - - Victor 9000 keyboard emulation - -*********************************************************************/ - -#pragma once - -#ifndef __VICTOR9K_KEYBOARD__ -#define __VICTOR9K_KEYBOARD__ - - -#include "cpu/mcs48/mcs48.h" - - - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_VICTOR9K_KBRDY_HANDLER(_devcb) \ - devcb = &victor_9000_keyboard_t::set_kbrdy_cb(*device, DEVCB_##_devcb); - -#define MCFG_VICTOR9K_KBDATA_HANDLER(_devcb) \ - devcb = &victor_9000_keyboard_t::set_kbdata_cb(*device, DEVCB_##_devcb); - - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -// ======================> victor_9000_keyboard_t - -class victor_9000_keyboard_t : public device_t -{ -public: - // construction/destruction - victor_9000_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - template static devcb_base &set_kbrdy_cb(device_t &device, _Object object) { return downcast(device).m_kbrdy_cb.set_callback(object); } - template static devcb_base &set_kbdata_cb(device_t &device, _Object object) { return downcast(device).m_kbdata_cb.set_callback(object); } - - // optional information overrides - virtual const tiny_rom_entry *device_rom_region() const override; - virtual machine_config_constructor device_mconfig_additions() const override; - virtual ioport_constructor device_input_ports() const override; - - DECLARE_WRITE_LINE_MEMBER( kback_w ); - - // not really public - DECLARE_READ8_MEMBER( kb_p1_r ); - DECLARE_WRITE8_MEMBER( kb_p1_w ); - DECLARE_WRITE8_MEMBER( kb_p2_w ); - DECLARE_READ8_MEMBER( kb_t1_r ); - -protected: - // device-level overrides - virtual void device_start() override; - -private: - required_device m_maincpu; - required_ioport_array<13> m_y; - - devcb_write_line m_kbrdy_cb; - devcb_write_line m_kbdata_cb; - - uint8_t m_p1; - uint8_t m_keylatch; - int m_stb; - int m_y12; - int m_kbrdy; - int m_kbdata; - int m_kback; -}; - - -// device type definition -extern const device_type VICTOR9K_KEYBOARD; - - - -#endif diff --git a/src/mame/machine/volfied.cpp b/src/mame/machine/volfied.cpp index 93887ccaecd..83534e37181 100644 --- a/src/mame/machine/volfied.cpp +++ b/src/mame/machine/volfied.cpp @@ -5,9 +5,8 @@ Volfied C-Chip Protection ========================= - The C-Chip (Taito TC0030CMD) is an unidentified mask programmed - microcontroller of some sort with 64 pins. It probably has - about 2k of ROM and 8k of RAM. + The C-Chip (Taito TC0030CMD) contains a NEC D78C11 (with 4k internal ROM) + + 8k EPROM + 8k DRAM + logic. Cheat: volfied:0:100191:00:001:Complete level with 99.9% Now! @@ -284,14 +283,14 @@ void volfied_state::device_timer(emu_timer &timer, device_timer_id id, int param switch (id) { case TIMER_VOLFIED: - volfied_timer_callback(ptr, param); + timer_callback(ptr, param); break; default: assert_always(false, "Unknown id in volfied_state::device_timer"); } } -TIMER_CALLBACK_MEMBER(volfied_state::volfied_timer_callback) +TIMER_CALLBACK_MEMBER(volfied_state::timer_callback) { // Palette commands - palette data written to bank 0: $10 - $af if (m_current_cmd >= 0x1 && m_current_cmd < 0x12) @@ -339,17 +338,17 @@ TIMER_CALLBACK_MEMBER(volfied_state::volfied_timer_callback) * *************************************/ -WRITE16_MEMBER(volfied_state::volfied_cchip_ctrl_w) +WRITE16_MEMBER(volfied_state::cchip_ctrl_w) { /* value 2 is written here */ } -WRITE16_MEMBER(volfied_state::volfied_cchip_bank_w) +WRITE16_MEMBER(volfied_state::cchip_bank_w) { m_current_bank = data & 7; } -WRITE16_MEMBER(volfied_state::volfied_cchip_ram_w) +WRITE16_MEMBER(volfied_state::cchip_ram_w) { m_cchip_ram[(m_current_bank * 0x400) + offset] = data; @@ -400,12 +399,12 @@ WRITE16_MEMBER(volfied_state::volfied_cchip_ram_w) // Palette request cmd - verified to take around 122242 68000 cycles to complete if (m_current_cmd >= 0x1 && m_current_cmd < 0x12) { - timer_set(downcast(&space.device())->cycles_to_attotime(122242), TIMER_VOLFIED); + m_cchip_timer->adjust(m_maincpu->cycles_to_attotime(122242)); } // Unknown cmd - verified to take around 105500 68000 cycles to complete else if (m_current_cmd >= 0x81 && m_current_cmd < 0x92) { - timer_set(downcast(&space.device())->cycles_to_attotime(105500), TIMER_VOLFIED); + m_cchip_timer->adjust(m_maincpu->cycles_to_attotime(105500)); } else { @@ -429,7 +428,7 @@ WRITE16_MEMBER(volfied_state::volfied_cchip_ram_w) * *************************************/ -READ16_MEMBER(volfied_state::volfied_cchip_ctrl_r) +READ16_MEMBER(volfied_state::cchip_ctrl_r) { /* Bit 2 = Error signal @@ -438,7 +437,7 @@ READ16_MEMBER(volfied_state::volfied_cchip_ctrl_r) return 0x01; /* Return 0x05 for C-Chip error */ } -READ16_MEMBER(volfied_state::volfied_cchip_ram_r) +READ16_MEMBER(volfied_state::cchip_ram_r) { /* Check for input ports */ if (m_current_bank == 0) @@ -491,8 +490,10 @@ READ16_MEMBER(volfied_state::volfied_cchip_ram_r) * *************************************/ -void volfied_state::volfied_cchip_init( ) +void volfied_state::cchip_init() { + m_cchip_timer = timer_alloc(TIMER_VOLFIED); + m_cchip_ram = make_unique_clear(0x400 * 8); save_item(NAME(m_current_bank)); @@ -502,7 +503,7 @@ void volfied_state::volfied_cchip_init( ) save_pointer(NAME(m_cchip_ram.get()), 0x400 * 8); } -void volfied_state::volfied_cchip_reset( ) +void volfied_state::cchip_reset() { m_current_bank = 0; m_current_flag = 0; diff --git a/src/mame/machine/vs9209.cpp b/src/mame/machine/vs9209.cpp new file mode 100644 index 00000000000..849247a8ac7 --- /dev/null +++ b/src/mame/machine/vs9209.cpp @@ -0,0 +1,157 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/********************************************************************** + + VS9209 (4L01F1429) custom QFP80 I/O + + This chip, which appears on various Video System PCBs from 1992 + to 1995, provides a programmable interface for up to eight ports. + + There are at least four configuration registers that control the + directions of individual bits on some of the ports (low for input + and high for output). However, the game programs always write + zero to the first register, except for Super Slams which doesn't + write to it at all. + + No program attempts to write to Ports A, B, C or D, with the + dubious exception of Tao Taido writing to the Port C offset on + its second VS9209 (whose inputs are mostly unused) at + initialization time. It seems possible that only the latter four + ports may be configured for output. + + Much like CXD1095, the last port is apparently only half width. + +**********************************************************************/ + +#include "emu.h" +#include "machine/vs9209.h" + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +DEFINE_DEVICE_TYPE(VS9209, vs9209_device, "vs9209", "VS9209 I/O") + +//************************************************************************** +// DEVICE DEFINITION +//************************************************************************** + +//------------------------------------------------- +// vs9209_device - constructor +//------------------------------------------------- + +vs9209_device::vs9209_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, VS9209, tag, owner, clock) + , m_input_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}} + , m_output_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}} +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void vs9209_device::device_start() +{ + // resolve callbacks + for (auto &cb : m_input_cb) + cb.resolve(); + for (auto &cb : m_output_cb) + cb.resolve(); + + std::fill(std::begin(m_data_latch), std::end(m_data_latch), 0); + + // save state + save_item(NAME(m_data_latch)); + save_item(NAME(m_data_dir)); +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void vs9209_device::device_reset() +{ + std::fill(std::begin(m_data_dir), std::end(m_data_dir), 0); +} + +//------------------------------------------------- +// read - read from an input port +//------------------------------------------------- + +READ8_MEMBER(vs9209_device::read) +{ + int port = offset & 7; + + if ((offset & 8) == 0) + { + u8 input_data = 0; + u8 input_mask = ~m_data_dir[port]; + if (port == 7) + input_mask &= 0x0f; + + // read through callback if port not configured entirely for output + if (input_mask != 0 && !m_input_cb[port].isnull()) + input_data = m_input_cb[port](0, input_mask) & input_mask; + else if (m_data_dir[port] == 0) + logerror("%s: Read from undefined input port %c\n", machine().describe_context(), 'A' + port); + + // combine live inputs with latched data + return input_data | (m_data_latch[port] & m_data_dir[port]); + } + + //logerror("%s: Read from write-only/nonexistent register %d\n", machine().describe_context(), offset); + return space.unmap(); +} + +//------------------------------------------------- +// write - write to an output port or one of two +// control registers +//------------------------------------------------- + +WRITE8_MEMBER(vs9209_device::write) +{ + // port H is probably only 4 bits wide + int port = offset & 7; + if (port == 7 && (data & 0xf0) != 0) + { + logerror("%s: Attempt to write %02X to port H%s", machine().describe_context(), data, (offset & 8) != 0 ? " direction register" : ""); + data &= 0x0f; + } + + if ((offset & 8) == 0) + { + // update our latched data + m_data_latch[port] = data; + + if (m_data_dir[port] != 0) + { + u8 dataout = data & m_data_dir[port]; + + // send output through callback + if (!m_output_cb[port].isnull()) + m_output_cb[port](0, dataout, m_data_dir[port]); + else + logerror("%s: Writing %02X to undefined output port %c\n", machine().describe_context(), dataout, 'A' + port); + } + else if (m_output_cb[port].isnull()) + logerror("%s: Writing %02X to input-only port %c\n", machine().describe_context(), data, 'A' + port); + } + else + { + u8 old_data_dir = m_data_dir[port]; + m_data_dir[port] = data; + + u8 all_port_bits = (port == 7) ? 0x0f : 0xff; + if (data != all_port_bits) + logerror("Port %c & %02X configured for input\n", 'A' + port, all_port_bits ^ data); + if (data != 0) + { + logerror("Port %c & %02X configured for output\n", 'A' + port, data); + + // if direction changed to output, begin output from latch + if ((data & ~old_data_dir) != 0 && !m_output_cb[port].isnull()) + m_output_cb[port](0, m_data_latch[port], data); + } + } +} diff --git a/src/mame/machine/vs9209.h b/src/mame/machine/vs9209.h new file mode 100644 index 00000000000..f4fb1cee393 --- /dev/null +++ b/src/mame/machine/vs9209.h @@ -0,0 +1,102 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/********************************************************************** + + VS9209 (4L01F1429) QFP80 I/O chip + +**********************************************************************/ + +#ifndef MAME_MACHINE_VS9209_H +#define MAME_MACHINE_VS9209_H + +#pragma once + +//************************************************************************** +// CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_VS9209_IN_PORTA_CB(_devcb) \ + devcb = &vs9209_device::set_input_cb(*device, 0, DEVCB_##_devcb); +#define MCFG_VS9209_IN_PORTB_CB(_devcb) \ + devcb = &vs9209_device::set_input_cb(*device, 1, DEVCB_##_devcb); +#define MCFG_VS9209_IN_PORTC_CB(_devcb) \ + devcb = &vs9209_device::set_input_cb(*device, 2, DEVCB_##_devcb); +#define MCFG_VS9209_IN_PORTD_CB(_devcb) \ + devcb = &vs9209_device::set_input_cb(*device, 3, DEVCB_##_devcb); +#define MCFG_VS9209_IN_PORTE_CB(_devcb) \ + devcb = &vs9209_device::set_input_cb(*device, 4, DEVCB_##_devcb); +#define MCFG_VS9209_IN_PORTF_CB(_devcb) \ + devcb = &vs9209_device::set_input_cb(*device, 5, DEVCB_##_devcb); +#define MCFG_VS9209_IN_PORTG_CB(_devcb) \ + devcb = &vs9209_device::set_input_cb(*device, 6, DEVCB_##_devcb); +#define MCFG_VS9209_IN_PORTH_CB(_devcb) \ + devcb = &vs9209_device::set_input_cb(*device, 7, DEVCB_##_devcb); + +#ifdef VS9209_PROBABLY_NONEXISTENT_OUTPUTS +#define MCFG_VS9209_OUT_PORTA_CB(_devcb) \ + devcb = &vs9209_device::set_output_cb(*device, 0, DEVCB_##_devcb); +#define MCFG_VS9209_OUT_PORTB_CB(_devcb) \ + devcb = &vs9209_device::set_output_cb(*device, 1, DEVCB_##_devcb); +#define MCFG_VS9209_OUT_PORTC_CB(_devcb) \ + devcb = &vs9209_device::set_output_cb(*device, 2, DEVCB_##_devcb); +#define MCFG_VS9209_OUT_PORTD_CB(_devcb) \ + devcb = &vs9209_device::set_output_cb(*device, 3, DEVCB_##_devcb); +#endif +#define MCFG_VS9209_OUT_PORTE_CB(_devcb) \ + devcb = &vs9209_device::set_output_cb(*device, 4, DEVCB_##_devcb); +#define MCFG_VS9209_OUT_PORTF_CB(_devcb) \ + devcb = &vs9209_device::set_output_cb(*device, 5, DEVCB_##_devcb); +#define MCFG_VS9209_OUT_PORTG_CB(_devcb) \ + devcb = &vs9209_device::set_output_cb(*device, 6, DEVCB_##_devcb); +#define MCFG_VS9209_OUT_PORTH_CB(_devcb) \ + devcb = &vs9209_device::set_output_cb(*device, 7, DEVCB_##_devcb); + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> vs9209_device + +class vs9209_device : public device_t +{ +public: + // construction/destruction + vs9209_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + + // static configuration + template + static devcb_base &set_input_cb(device_t &device, int p, Object &&obj) + { + assert(p >= 0 && p < 8); + return downcast(device).m_input_cb[p].set_callback(std::forward(obj)); + } + template + static devcb_base &set_output_cb(device_t &device, int p, Object &&obj) + { + assert(p >= 0 && p < 8); + return downcast(device).m_output_cb[p].set_callback(std::forward(obj)); + } + + // memory handlers + DECLARE_READ8_MEMBER(read); + DECLARE_WRITE8_MEMBER(write); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + +private: + // input/output callbacks + devcb_read8 m_input_cb[8]; + devcb_write8 m_output_cb[8]; + + // internal state + u8 m_data_latch[8]; + u8 m_data_dir[8]; +}; + +// device type definition +DECLARE_DEVICE_TYPE(VS9209, vs9209_device) + +#endif // MAME_MACHINE_VS9209_H diff --git a/src/mame/machine/vsnes.cpp b/src/mame/machine/vsnes.cpp index 666f5319d2d..2f90695c044 100644 --- a/src/mame/machine/vsnes.cpp +++ b/src/mame/machine/vsnes.cpp @@ -678,12 +678,10 @@ void vsnes_state::mapper4_set_chr( ) v_set_videorom_bank(chr_page ^ 7, 1, m_MMC3_chr_bank[5]); } -#define BOTTOM_VISIBLE_SCANLINE 239 /* The bottommost visible scanline */ -#define NUM_SCANLINE 262 void vsnes_state::mapper4_irq( int scanline, int vblank, int blanked ) { - if (scanline < PPU_BOTTOM_VISIBLE_SCANLINE) + if (scanline < ppu2c0x_device::BOTTOM_VISIBLE_SCANLINE) { int priorCount = m_IRQ_count; if (m_IRQ_count == 0) @@ -763,12 +761,12 @@ WRITE8_MEMBER(vsnes_state::mapper4_w) case 0x6000: /* $e000 - Disable IRQs */ m_IRQ_enable = 0; m_IRQ_count = m_IRQ_count_latch; - m_ppu1->set_scanline_callback(ppu2c0x_scanline_delegate()); + m_ppu1->set_scanline_callback(ppu2c0x_device::scanline_delegate()); break; case 0x6001: /* $e001 - Enable IRQs */ m_IRQ_enable = 1; - m_ppu1->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(vsnes_state::mapper4_irq), this)); + m_ppu1->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(vsnes_state::mapper4_irq), this)); break; default: diff --git a/src/mame/machine/wangpckb.cpp b/src/mame/machine/wangpckb.cpp index e9332d7dc06..d5567615b7a 100644 --- a/src/mame/machine/wangpckb.cpp +++ b/src/mame/machine/wangpckb.cpp @@ -70,7 +70,7 @@ Notes: // DEVICE DEFINITIONS //************************************************************************** -const device_type WANGPC_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(WANGPC_KEYBOARD, wangpc_keyboard_device, "wangpckb", "Wang PC Keyboard") @@ -88,7 +88,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const tiny_rom_entry *wangpc_keyboard_t::device_rom_region() const +const tiny_rom_entry *wangpc_keyboard_device::device_rom_region() const { return ROM_NAME( wangpc_keyboard ); } @@ -98,7 +98,7 @@ const tiny_rom_entry *wangpc_keyboard_t::device_rom_region() const // ADDRESS_MAP( wangpc_keyboard_io ) //------------------------------------------------- -static ADDRESS_MAP_START( wangpc_keyboard_io, AS_IO, 8, wangpc_keyboard_t ) +static ADDRESS_MAP_START( wangpc_keyboard_io, AS_IO, 8, wangpc_keyboard_device ) //AM_RANGE(0x0000, 0xfeff) AM_READNOP AM_RANGE(0x47, 0x58) AM_MIRROR(0xff00) AM_READNOP AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_DEVWRITE(SN76496_TAG, sn76496_device, write) @@ -115,8 +115,8 @@ ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( wangpc_keyboard ) MCFG_CPU_ADD(I8051_TAG, I8051, XTAL_4MHz) MCFG_CPU_IO_MAP(wangpc_keyboard_io) - MCFG_MCS51_SERIAL_TX_CB(WRITE8(wangpc_keyboard_t, mcs51_tx_callback)) - MCFG_MCS51_SERIAL_RX_CB(READ8(wangpc_keyboard_t, mcs51_rx_callback)) + MCFG_MCS51_SERIAL_TX_CB(WRITE8(wangpc_keyboard_device, mcs51_tx_callback)) + MCFG_MCS51_SERIAL_RX_CB(READ8(wangpc_keyboard_device, mcs51_rx_callback)) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") @@ -130,7 +130,7 @@ MACHINE_CONFIG_END // machine configurations //------------------------------------------------- -machine_config_constructor wangpc_keyboard_t::device_mconfig_additions() const +machine_config_constructor wangpc_keyboard_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( wangpc_keyboard ); } @@ -359,7 +359,7 @@ INPUT_PORTS_END // input_ports - device-specific input ports //------------------------------------------------- -ioport_constructor wangpc_keyboard_t::device_input_ports() const +ioport_constructor wangpc_keyboard_device::device_input_ports() const { return INPUT_PORTS_NAME( wangpc_keyboard ); } @@ -371,11 +371,11 @@ ioport_constructor wangpc_keyboard_t::device_input_ports() const //************************************************************************** //------------------------------------------------- -// wangpc_keyboard_t - constructor +// wangpc_keyboard_device - constructor //------------------------------------------------- -wangpc_keyboard_t::wangpc_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, WANGPC_KEYBOARD, "Wang PC Keyboard", tag, owner, clock, "wangpckb", __FILE__), +wangpc_keyboard_device::wangpc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, WANGPC_KEYBOARD, tag, owner, clock), device_serial_interface(mconfig, *this), m_maincpu(*this, I8051_TAG), m_y(*this, "Y%u", 0), @@ -390,7 +390,7 @@ wangpc_keyboard_t::wangpc_keyboard_t(const machine_config &mconfig, const char * // device_start - device-specific startup //------------------------------------------------- -void wangpc_keyboard_t::device_start() +void wangpc_keyboard_device::device_start() { m_txd_handler.resolve_safe(); @@ -408,7 +408,7 @@ void wangpc_keyboard_t::device_start() // device_reset - device-specific reset //------------------------------------------------- -void wangpc_keyboard_t::device_reset() +void wangpc_keyboard_device::device_reset() { receive_register_reset(); transmit_register_reset(); @@ -421,7 +421,7 @@ void wangpc_keyboard_t::device_reset() // device_timer - handler timer events //------------------------------------------------- -void wangpc_keyboard_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +void wangpc_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { device_serial_interface::device_timer(timer, id, param, ptr); } @@ -431,7 +431,7 @@ void wangpc_keyboard_t::device_timer(emu_timer &timer, device_timer_id id, int p // tra_callback - //------------------------------------------------- -void wangpc_keyboard_t::tra_callback() +void wangpc_keyboard_device::tra_callback() { int bit = transmit_register_get_data_bit(); @@ -445,7 +445,7 @@ void wangpc_keyboard_t::tra_callback() // tra_complete - //------------------------------------------------- -void wangpc_keyboard_t::tra_complete() +void wangpc_keyboard_device::tra_complete() { } @@ -454,7 +454,7 @@ void wangpc_keyboard_t::tra_complete() // rcv_callback - //------------------------------------------------- -void wangpc_keyboard_t::rcv_callback() +void wangpc_keyboard_device::rcv_callback() { if (LOG) logerror("KB '%s' Receive Bit %u\n", tag(), m_rxd); @@ -466,7 +466,7 @@ void wangpc_keyboard_t::rcv_callback() // rcv_complete - //------------------------------------------------- -void wangpc_keyboard_t::rcv_complete() +void wangpc_keyboard_device::rcv_complete() { receive_register_extract(); @@ -481,7 +481,7 @@ void wangpc_keyboard_t::rcv_complete() // write_rxd - //------------------------------------------------- -WRITE_LINE_MEMBER(wangpc_keyboard_t::write_rxd) +WRITE_LINE_MEMBER(wangpc_keyboard_device::write_rxd) { m_rxd = state; @@ -493,7 +493,7 @@ WRITE_LINE_MEMBER(wangpc_keyboard_t::write_rxd) // mcs51_rx_callback - //------------------------------------------------- -READ8_MEMBER(wangpc_keyboard_t::mcs51_rx_callback) +READ8_MEMBER(wangpc_keyboard_device::mcs51_rx_callback) { if (LOG) logerror("KB '%s' CPU Receive Data %02x\n", tag(), get_received_char()); @@ -505,7 +505,7 @@ READ8_MEMBER(wangpc_keyboard_t::mcs51_rx_callback) // mcs51_tx_callback - //------------------------------------------------- -WRITE8_MEMBER(wangpc_keyboard_t::mcs51_tx_callback) +WRITE8_MEMBER(wangpc_keyboard_device::mcs51_tx_callback) { if (LOG) logerror("KB '%s' CPU Transmit Data %02x\n", tag(), data); @@ -523,7 +523,7 @@ WRITE8_MEMBER(wangpc_keyboard_t::mcs51_tx_callback) // kb_p1_r - //------------------------------------------------- -READ8_MEMBER( wangpc_keyboard_t::kb_p1_r ) +READ8_MEMBER( wangpc_keyboard_device::kb_p1_r ) { return m_y[m_keylatch]->read(); } @@ -533,7 +533,7 @@ READ8_MEMBER( wangpc_keyboard_t::kb_p1_r ) // kb_p1_w - //------------------------------------------------- -WRITE8_MEMBER( wangpc_keyboard_t::kb_p1_w ) +WRITE8_MEMBER( wangpc_keyboard_device::kb_p1_w ) { /* @@ -563,7 +563,7 @@ WRITE8_MEMBER( wangpc_keyboard_t::kb_p1_w ) // kb_p2_w - //------------------------------------------------- -WRITE8_MEMBER( wangpc_keyboard_t::kb_p2_w ) +WRITE8_MEMBER( wangpc_keyboard_device::kb_p2_w ) { /* @@ -590,7 +590,7 @@ WRITE8_MEMBER( wangpc_keyboard_t::kb_p2_w ) // kb_p3_w - //------------------------------------------------- -WRITE8_MEMBER( wangpc_keyboard_t::kb_p3_w ) +WRITE8_MEMBER( wangpc_keyboard_device::kb_p3_w ) { /* diff --git a/src/mame/machine/wangpckb.h b/src/mame/machine/wangpckb.h index a621d9e8f88..938be9bde46 100644 --- a/src/mame/machine/wangpckb.h +++ b/src/mame/machine/wangpckb.h @@ -6,10 +6,10 @@ *********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_WANGPCKB_H +#define MAME_MACHINE_WANGPCKB_H -#ifndef __WANGPC_KEYBOARD__ -#define __WANGPC_KEYBOARD__ +#pragma once #include "cpu/mcs51/mcs51.h" @@ -33,23 +33,23 @@ MCFG_DEVICE_ADD(WANGPC_KEYBOARD_TAG, WANGPC_KEYBOARD, 0) #define MCFG_WANGPCKB_TXD_HANDLER(_devcb) \ - devcb = &wangpc_keyboard_t::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &wangpc_keyboard_device::set_txd_handler(*device, DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -// ======================> wangpc_keyboard_t +// ======================> wangpc_keyboard_device -class wangpc_keyboard_t : public device_t, +class wangpc_keyboard_device : public device_t, public device_serial_interface { public: // construction/destruction - wangpc_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + wangpc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast(device).m_txd_handler.set_callback(object); } + template static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast(device).m_txd_handler.set_callback(std::forward(cb)); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -90,8 +90,6 @@ private: // device type definition -extern const device_type WANGPC_KEYBOARD; - - +DECLARE_DEVICE_TYPE(WANGPC_KEYBOARD, wangpc_keyboard_device) -#endif +#endif // MAME_MACHINE_WANGPCKB_H diff --git a/src/mame/machine/williams.cpp b/src/mame/machine/williams.cpp index 88357e63dfd..f70daa8a79c 100644 --- a/src/mame/machine/williams.cpp +++ b/src/mame/machine/williams.cpp @@ -18,11 +18,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(williams_state::williams_va11_callback) { - pia6821_device *pia_1 = machine().device("pia_1"); int scanline = param; /* the IRQ signal comes into CB1, and is set to VA11 */ - pia_1->cb1_w(scanline & 0x20); + m_pia_1->cb1_w(scanline & 0x20); /* set a timer for the next update */ scanline += 0x20; @@ -33,19 +32,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(williams_state::williams_va11_callback) TIMER_CALLBACK_MEMBER(williams_state::williams_count240_off_callback) { - pia6821_device *pia_1 = machine().device("pia_1"); - /* the COUNT240 signal comes into CA1, and is set to the logical AND of VA10-VA13 */ - pia_1->ca1_w(0); + m_pia_1->ca1_w(0); } TIMER_DEVICE_CALLBACK_MEMBER(williams_state::williams_count240_callback) { - pia6821_device *pia_1 = machine().device("pia_1"); - /* the COUNT240 signal comes into CA1, and is set to the logical AND of VA10-VA13 */ - pia_1->ca1_w(1); + m_pia_1->ca1_w(1); /* set a timer to turn it off once the scanline counter resets */ machine().scheduler().timer_set(m_screen->time_until_pos(0), timer_expired_delegate(FUNC(williams_state::williams_count240_off_callback),this)); @@ -57,8 +52,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(williams_state::williams_count240_callback) WRITE_LINE_MEMBER(williams_state::williams_main_irq) { - pia6821_device *pia_1 = machine().device("pia_1"); - int combined_state = pia_1->irq_a_state() | pia_1->irq_b_state(); + int combined_state = m_pia_1->irq_a_state() | m_pia_1->irq_b_state(); /* IRQ to the main CPU */ m_maincpu->set_input_line(M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE); @@ -74,8 +68,7 @@ WRITE_LINE_MEMBER(williams_state::williams_main_firq) WRITE_LINE_MEMBER(williams_state::williams_snd_irq) { - pia6821_device *pia_2 = machine().device("pia_2"); - int combined_state = pia_2->irq_a_state() | pia_2->irq_b_state(); + int combined_state = m_pia_2->irq_a_state() | m_pia_2->irq_b_state(); /* IRQ to the sound CPU */ m_soundcpu->set_input_line(M6808_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE); @@ -83,8 +76,7 @@ WRITE_LINE_MEMBER(williams_state::williams_snd_irq) /* Same as above, but for second sound board */ WRITE_LINE_MEMBER(blaster_state::williams_snd_irq_b) { - pia6821_device *pia_2 = machine().device("pia_2b"); - int combined_state = pia_2->irq_a_state() | pia_2->irq_b_state(); + int combined_state = m_pia_2b->irq_a_state() | m_pia_2b->irq_b_state(); /* IRQ to the sound CPU */ m_soundcpu_b->set_input_line(M6808_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE); @@ -100,9 +92,7 @@ WRITE_LINE_MEMBER(blaster_state::williams_snd_irq_b) WRITE_LINE_MEMBER(williams2_state::mysticm_main_irq) { - pia6821_device *pia_0 = machine().device("pia_0"); - pia6821_device *pia_1 = machine().device("pia_1"); - int combined_state = pia_0->irq_b_state() | pia_1->irq_a_state() | pia_1->irq_b_state(); + int combined_state = m_pia_0->irq_b_state() | m_pia_1->irq_a_state() | m_pia_1->irq_b_state(); /* IRQ to the main CPU */ m_maincpu->set_input_line(M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE); @@ -111,9 +101,7 @@ WRITE_LINE_MEMBER(williams2_state::mysticm_main_irq) WRITE_LINE_MEMBER(williams2_state::tshoot_main_irq) { - pia6821_device *pia_0 = machine().device("pia_0"); - pia6821_device *pia_1 = machine().device("pia_1"); - int combined_state = pia_0->irq_a_state() | pia_0->irq_b_state() | pia_1->irq_a_state() | pia_1->irq_b_state(); + int combined_state = m_pia_0->irq_a_state() | m_pia_0->irq_b_state() | m_pia_1->irq_a_state() | m_pia_1->irq_b_state(); /* IRQ to the main CPU */ m_maincpu->set_input_line(M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE); @@ -168,13 +156,11 @@ MACHINE_RESET_MEMBER(williams_state,williams) TIMER_DEVICE_CALLBACK_MEMBER(williams2_state::williams2_va11_callback) { - pia6821_device *pia_0 = machine().device("pia_0"); - pia6821_device *pia_1 = machine().device("pia_1"); int scanline = param; /* the IRQ signal comes into CB1, and is set to VA11 */ - pia_0->cb1_w(scanline & 0x20); - pia_1->ca1_w(scanline & 0x20); + m_pia_0->cb1_w(scanline & 0x20); + m_pia_1->ca1_w(scanline & 0x20); /* set a timer for the next update */ scanline += 0x20; @@ -185,19 +171,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(williams2_state::williams2_va11_callback) TIMER_CALLBACK_MEMBER(williams2_state::williams2_endscreen_off_callback) { - pia6821_device *pia_0 = machine().device("pia_0"); - /* the /ENDSCREEN signal comes into CA1 */ - pia_0->ca1_w(1); + m_pia_0->ca1_w(1); } TIMER_DEVICE_CALLBACK_MEMBER(williams2_state::williams2_endscreen_callback) { - pia6821_device *pia_0 = machine().device("pia_0"); - /* the /ENDSCREEN signal comes into CA1 */ - pia_0->ca1_w(0); + m_pia_0->ca1_w(0); /* set a timer to turn it off once the scanline counter resets */ machine().scheduler().timer_set(m_screen->time_until_pos(8), timer_expired_delegate(FUNC(williams2_state::williams2_endscreen_off_callback),this)); @@ -293,10 +275,8 @@ WRITE8_MEMBER(williams2_state::williams2_bank_select_w) TIMER_CALLBACK_MEMBER(williams_state::williams_deferred_snd_cmd_w) { - pia6821_device *pia_2 = machine().device("pia_2"); - - pia_2->portb_w(param); - pia_2->cb1_w((param == 0xff) ? 0 : 1); + m_pia_2->portb_w(param); + m_pia_2->cb1_w((param == 0xff) ? 0 : 1); } WRITE8_MEMBER(williams_state::williams_snd_cmd_w) @@ -312,9 +292,7 @@ WRITE8_MEMBER(williams_state::playball_snd_cmd_w) TIMER_CALLBACK_MEMBER(williams2_state::williams2_deferred_snd_cmd_w) { - pia6821_device *pia_2 = machine().device("pia_2"); - - pia_2->porta_w(param); + m_pia_2->porta_w(param); } WRITE8_MEMBER(williams2_state::williams2_snd_cmd_w) @@ -598,13 +576,11 @@ WRITE8_MEMBER(blaster_state::blaster_bank_select_w) TIMER_CALLBACK_MEMBER(blaster_state::blaster_deferred_snd_cmd_w) { - pia6821_device *pia_2l = machine().device("pia_2"); - pia6821_device *pia_2r = machine().device("pia_2b"); uint8_t l_data = param | 0x80; uint8_t r_data = (param >> 1 & 0x40) | (param & 0x3f) | 0x80; - pia_2l->portb_w(l_data); pia_2l->cb1_w((l_data == 0xff) ? 0 : 1); - pia_2r->portb_w(r_data); pia_2r->cb1_w((r_data == 0xff) ? 0 : 1); + m_pia_2->portb_w(l_data); m_pia_2->cb1_w((l_data == 0xff) ? 0 : 1); + m_pia_2b->portb_w(r_data); m_pia_2b->cb1_w((r_data == 0xff) ? 0 : 1); } @@ -685,8 +661,7 @@ MACHINE_RESET_MEMBER(joust2_state,joust2) TIMER_CALLBACK_MEMBER(joust2_state::joust2_deferred_snd_cmd_w) { - pia6821_device *pia_2 = machine().device("pia_2"); - pia_2->porta_w(param & 0xff); + m_pia_2->porta_w(param & 0xff); } diff --git a/src/mame/machine/wpc.cpp b/src/mame/machine/wpc.cpp index b959966164e..4a4dbea06a0 100644 --- a/src/mame/machine/wpc.cpp +++ b/src/mame/machine/wpc.cpp @@ -11,10 +11,10 @@ #define LOG_WPC (0) -const device_type WPCASIC = device_creator; +DEFINE_DEVICE_TYPE(WPCASIC, wpc_device, "wpc", "Williams WPC ASIC") wpc_device::wpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig,WPCASIC,"Williams WPC ASIC",tag,owner,clock, "wpc", __FILE__), + : device_t(mconfig, WPCASIC, tag, owner, clock), m_dmd_visiblepage(0), m_irq_cb(*this), m_firq_cb(*this), diff --git a/src/mame/machine/wpc.h b/src/mame/machine/wpc.h index 146c0f74754..326e0037c75 100644 --- a/src/mame/machine/wpc.h +++ b/src/mame/machine/wpc.h @@ -6,8 +6,10 @@ * Created on: 7/10/2013 */ -#ifndef WPC_H_ -#define WPC_H_ +#ifndef MAME_MACHINE_WPC_H +#define MAME_MACHINE_WPC_H + +#pragma once /* A = Alpha-numeric @@ -101,39 +103,41 @@ class wpc_device : public device_t { public: + static constexpr device_timer_id TIMER_IRQ = 1; + static constexpr device_timer_id TIMER_ZEROCROSS = 2; + wpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); uint16_t get_memprotect_mask() { return m_memprotect_mask; } - bool memprotect_active() { if(m_memprotect == 0xb4) return false; else return true; } - uint16_t get_alphanumeric(uint8_t offset) { if(offset < 40) return m_alpha_data[offset]; else return 0; } - void reset_alphanumeric() { memset(m_alpha_data,0,40*2); } + bool memprotect_active() { return m_memprotect != 0xb4; } + uint16_t get_alphanumeric(uint8_t offset) { return (offset < 40) ? m_alpha_data[offset] : 0; } + void reset_alphanumeric() { std::fill(std::begin(m_alpha_data), std::end(m_alpha_data), 0); } uint8_t get_visible_page() { return m_dmd_visiblepage; } uint8_t get_dmd_firq_line() { return m_dmd_irqline; } void set_dmd_firq() { m_dmd_irqsrc = true; } void set_snd_firq() { m_snd_irqsrc = true; } // callbacks - template void set_irq_callback(_irq irq) { m_irq_cb.set_callback(irq); } - template void set_firq_callback(_firq firq) { m_firq_cb.set_callback(firq); } - template void set_sound_data_read(_sounddata_r sounddata_r) { m_sounddata_r.set_callback(sounddata_r); } - template void set_sound_data_write(_sounddata_w sounddata_w) { m_sounddata_w.set_callback(sounddata_w); } - template void set_sound_ctrl_read(_soundctrl_r soundctrl_r) { m_soundctrl_r.set_callback(soundctrl_r); } - template void set_sound_ctrl_write(_soundctrl_w soundctrl_w) { m_soundctrl_w.set_callback(soundctrl_w); } - template void set_sound_s11_write(_sounds11 sounds11) { m_sounds11_w.set_callback(sounds11); } - template void set_bank_write(_bank_w bank_w) { m_bank_w.set_callback(bank_w); } - template void set_dmdbank_write(_dmdbank_w dmdbank_w) { m_dmdbank_w.set_callback(dmdbank_w); } + template void set_irq_callback(Object &&cb) { m_irq_cb.set_callback(std::forward(cb)); } + template void set_firq_callback(Object &&cb) { m_firq_cb.set_callback(std::forward(cb)); } + template void set_sound_data_read(Object &&cb) { m_sounddata_r.set_callback(std::forward(cb)); } + template void set_sound_data_write(Object &&cb) { m_sounddata_w.set_callback(std::forward(cb)); } + template void set_sound_ctrl_read(Object &&cb) { m_soundctrl_r.set_callback(std::forward(cb)); } + template void set_sound_ctrl_write(Object &&cb) { m_soundctrl_w.set_callback(std::forward(cb)); } + template void set_sound_s11_write(Object &&cb) { m_sounds11_w.set_callback(std::forward(cb)); } + template void set_bank_write(Object &&cb) { m_bank_w.set_callback(std::forward(cb)); } + template void set_dmdbank_write(Object &&cb) { m_dmdbank_w.set_callback(std::forward(cb)); } - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - static const device_timer_id TIMER_IRQ = 1; - static const device_timer_id TIMER_ZEROCROSS = 2; protected: // overrides virtual void device_start() override; virtual void device_reset() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + private: uint8_t m_shift_addr_high; uint8_t m_shift_addr_low; @@ -163,6 +167,6 @@ private: devcb_write8 m_dmdbank_w; }; -extern const device_type WPCASIC; +DECLARE_DEVICE_TYPE(WPCASIC, wpc_device) -#endif /* WPC_H_ */ +#endif // MAME_MACHINE_WPC_H diff --git a/src/mame/machine/wpc_lamp.cpp b/src/mame/machine/wpc_lamp.cpp index d40bc033b03..bab67eb0299 100644 --- a/src/mame/machine/wpc_lamp.cpp +++ b/src/mame/machine/wpc_lamp.cpp @@ -4,10 +4,10 @@ #include "emu.h" #include "wpc_lamp.h" -const device_type WPC_LAMP = device_creator; +DEFINE_DEVICE_TYPE(WPC_LAMP, wpc_lamp_device, "wpc_lamp", "Williams Pinball Controller Lamp Control") wpc_lamp_device::wpc_lamp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, WPC_LAMP, "Williams Pinball Controller Lamp Control", tag, owner, clock, "wpc_lamp", __FILE__) + device_t(mconfig, WPC_LAMP, tag, owner, clock) { names = nullptr; } diff --git a/src/mame/machine/wpc_lamp.h b/src/mame/machine/wpc_lamp.h index c1e7de09620..b4fb87ab074 100644 --- a/src/mame/machine/wpc_lamp.h +++ b/src/mame/machine/wpc_lamp.h @@ -3,8 +3,10 @@ // Williams Pinball Controller lamp control -#ifndef WPC_LAMP_H -#define WPC_LAMP_H +#ifndef MAME_MACHINE_WPC_LAMP_H +#define MAME_MACHINE_WPC_LAMP_H + +#pragma once #define MCFG_WPC_LAMP_ADD( _tag ) \ MCFG_DEVICE_ADD( _tag, WPC_LAMP, 0 ) @@ -33,6 +35,6 @@ protected: void update(); }; -extern const device_type WPC_LAMP; +DECLARE_DEVICE_TYPE(WPC_LAMP, wpc_lamp_device) -#endif +#endif // MAME_MACHINE_WPC_LAMP_H diff --git a/src/mame/machine/wpc_out.cpp b/src/mame/machine/wpc_out.cpp index 1e5cb36f084..5a8941efab9 100644 --- a/src/mame/machine/wpc_out.cpp +++ b/src/mame/machine/wpc_out.cpp @@ -4,10 +4,10 @@ #include "emu.h" #include "wpc_out.h" -const device_type WPC_OUT = device_creator; +DEFINE_DEVICE_TYPE(WPC_OUT, wpc_out_device, "wpc_out", "Williams Pinball Controller Output Control") wpc_out_device::wpc_out_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, WPC_OUT, "Williams Pinball Controller Output Control", tag, owner, clock, "wpc_out", __FILE__) + device_t(mconfig, WPC_OUT, tag, owner, clock) { names = nullptr; } diff --git a/src/mame/machine/wpc_out.h b/src/mame/machine/wpc_out.h index 5755ed90d87..eaa08c7f8db 100644 --- a/src/mame/machine/wpc_out.h +++ b/src/mame/machine/wpc_out.h @@ -3,8 +3,10 @@ // Williams Pinball Controller outputs control (solenoids, flashers, generic logic, global illumination, coin counter, cpu led) -#ifndef WPC_OUT_H -#define WPC_OUT_H +#ifndef MAME_MACHINE_WPC_OUT_H +#define MAME_MACHINE_WPC_OUT_H + +#pragma once #define MCFG_WPC_OUT_ADD( _tag, _count ) \ MCFG_DEVICE_ADD( _tag, WPC_OUT, 0 ) \ @@ -46,6 +48,6 @@ protected: void gi_update(); }; -extern const device_type WPC_OUT; +DECLARE_DEVICE_TYPE(WPC_OUT, wpc_out_device) -#endif +#endif // MAME_MACHINE_WPC_OUT_H diff --git a/src/mame/machine/wpc_pic.cpp b/src/mame/machine/wpc_pic.cpp index 64ec9fbafb5..a5a25b70bb9 100644 --- a/src/mame/machine/wpc_pic.cpp +++ b/src/mame/machine/wpc_pic.cpp @@ -4,10 +4,10 @@ #include "emu.h" #include "wpc_pic.h" -const device_type WPC_PIC = device_creator; +DEFINE_DEVICE_TYPE(WPC_PIC, wpc_pic_device, "wpc_pic", "Williams Pinball Controller PIC Security") wpc_pic_device::wpc_pic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, WPC_PIC, "Williams Pinball Controller PIC Security", tag, owner, clock, "wpc_pic", __FILE__), + device_t(mconfig, WPC_PIC, tag, owner, clock), swarray(*this, ":SW.%u", 0) { serial = "000 000000 00000 000"; diff --git a/src/mame/machine/wpc_pic.h b/src/mame/machine/wpc_pic.h index c1f7690f039..4b1fcda7baf 100644 --- a/src/mame/machine/wpc_pic.h +++ b/src/mame/machine/wpc_pic.h @@ -3,8 +3,10 @@ // Williams Pinball Controller Pic-based protection simulation -#ifndef WPC_PIC_H -#define WPC_PIC_H +#ifndef MAME_MACHINE_WPC_PIC_H +#define MAME_MACHINE_WPC_PIC_H + +#pragma once #define MCFG_WPC_PIC_ADD( _tag ) \ MCFG_DEVICE_ADD( _tag, WPC_PIC, 0 ) @@ -33,6 +35,6 @@ protected: void check_game_id(); }; -extern const device_type WPC_PIC; +DECLARE_DEVICE_TYPE(WPC_PIC, wpc_pic_device) -#endif +#endif // MAME_MACHINE_WPC_PIC_H diff --git a/src/mame/machine/wpc_shift.cpp b/src/mame/machine/wpc_shift.cpp index a8cfa7c853c..1a51477694a 100644 --- a/src/mame/machine/wpc_shift.cpp +++ b/src/mame/machine/wpc_shift.cpp @@ -4,10 +4,10 @@ #include "emu.h" #include "wpc_shift.h" -const device_type WPC_SHIFT = device_creator; +DEFINE_DEVICE_TYPE(WPC_SHIFT, wpc_shift_device, "wpc_shift", "Windows Pinball Controller Shifter") wpc_shift_device::wpc_shift_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, WPC_SHIFT, "Williams Pinball Controller Shifter", tag, owner, clock, "wpc_shift", __FILE__) + device_t(mconfig, WPC_SHIFT, tag, owner, clock) { } diff --git a/src/mame/machine/wpc_shift.h b/src/mame/machine/wpc_shift.h index 0870588c530..661bbb4fb83 100644 --- a/src/mame/machine/wpc_shift.h +++ b/src/mame/machine/wpc_shift.h @@ -3,8 +3,8 @@ // Williams Pinball Controller Shift-based protection simulation -#ifndef WPC_SHIFT_H -#define WPC_SHIFT_H +#ifndef MAME_MACHINE_WPC_SHIFT_H +#define MAME_MACHINE_WPC_SHIFT_H #define MCFG_WPC_SHIFT_ADD( _tag ) \ MCFG_DEVICE_ADD( _tag, WPC_SHIFT, 0 ) @@ -34,6 +34,6 @@ protected: virtual void device_reset() override; }; -extern const device_type WPC_SHIFT; +DECLARE_DEVICE_TYPE(WPC_SHIFT, wpc_shift_device) -#endif +#endif // MAME_MACHINE_WPC_SHIFT_H diff --git a/src/mame/machine/x1.cpp b/src/mame/machine/x1.cpp index 71cdb6ff643..6a2ddc2f771 100644 --- a/src/mame/machine/x1.cpp +++ b/src/mame/machine/x1.cpp @@ -9,15 +9,15 @@ // LIVE DEVICE //************************************************************************** -const device_type X1_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(X1_KEYBOARD, x1_keyboard_device, "x1_keyboard", "Sharp X1 Keyboard") //------------------------------------------------- // z80ctc_device - constructor //------------------------------------------------- x1_keyboard_device::x1_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, X1_KEYBOARD, "X1 Keyboard", tag, owner, clock, "x1_keyboard", __FILE__), - device_z80daisy_interface(mconfig, *this) + : device_t(mconfig, X1_KEYBOARD, tag, owner, clock) + , device_z80daisy_interface(mconfig, *this) { } diff --git a/src/mame/machine/x68k_hdc.cpp b/src/mame/machine/x68k_hdc.cpp index da4cebfd53d..de909abad0a 100644 --- a/src/mame/machine/x68k_hdc.cpp +++ b/src/mame/machine/x68k_hdc.cpp @@ -22,11 +22,80 @@ #include "imagedev/harddriv.h" #include "image.h" -const device_type X68KHDC = device_creator; +enum +{ + SASI_PHASE_BUSFREE = 0, + SASI_PHASE_ARBITRATION, + SASI_PHASE_SELECTION, + SASI_PHASE_RESELECTION, + SASI_PHASE_COMMAND, + SASI_PHASE_DATA, + SASI_PHASE_STATUS, + SASI_PHASE_MESSAGE, + SASI_PHASE_READ, + SASI_PHASE_WRITE +}; + +// SASI commands, based on the SASI standard +enum +{ + // Class 0 (6-byte) commands + SASI_CMD_TEST_UNIT_READY = 0, + SASI_CMD_REZERO_UNIT, + SASI_CMD_RESERVED_02, + SASI_CMD_REQUEST_SENSE, + SASI_CMD_FORMAT_UNIT, + SASI_CMD_RESERVED_05, + SASI_CMD_FORMAT_UNIT_06, // the X68000 uses command 0x06 for Format Unit, despite the SASI specs saying 0x04 + SASI_CMD_RESERVED_07, + SASI_CMD_READ, + SASI_CMD_RESERVED_09, + SASI_CMD_WRITE, + SASI_CMD_SEEK, + SASI_CMD_RESERVED_0C, + SASI_CMD_RESERVED_0D, + SASI_CMD_RESERVED_0E, + SASI_CMD_WRITE_FILE_MARK, + SASI_CMD_INVALID_10, + SASI_CMD_INVALID_11, + SASI_CMD_RESERVE_UNIT, + SASI_CMD_RELEASE_UNIT, + SASI_CMD_INVALID_14, + SASI_CMD_INVALID_15, + SASI_CMD_READ_CAPACITY, + SASI_CMD_INVALID_17, + SASI_CMD_INVALID_18, + SASI_CMD_INVALID_19, + SASI_CMD_READ_DIAGNOSTIC, + SASI_CMD_WRITE_DIAGNOSTIC, + SASI_CMD_INVALID_1C, + SASI_CMD_INVALID_1D, + SASI_CMD_INVALID_1E, + SASI_CMD_INQUIRY, + // Class 1 commands (yes, just the one) + SASI_CMD_RESERVED_20, + SASI_CMD_RESERVED_21, + SASI_CMD_RESERVED_22, + SASI_CMD_SET_BLOCK_LIMITS = 0x28, + // Class 2 commands + SASI_CMD_EXTENDED_ADDRESS_READ = 0x48, + SASI_CMD_INVALID_49, + SASI_CMD_EXTENDED_ADDRESS_WRITE, + SASI_CMD_WRITE_AND_VERIFY = 0x54, + SASI_CMD_VERIFY, + SASI_CMD_INVALID_56, + SASI_CMD_SEARCH_DATA_HIGH, + SASI_CMD_SEARCH_DATA_EQUAL, + SASI_CMD_SEARCH_DATA_LOW, + // controller-specific commands + SASI_CMD_SPECIFY = 0xc2 +}; + +DEFINE_DEVICE_TYPE(X68KHDC, x68k_hdc_image_device, "x68k_hdc_image", "SASI Hard Disk") x68k_hdc_image_device::x68k_hdc_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, X68KHDC, "SASI Hard Disk", tag, owner, clock, "x68k_hdc_image", __FILE__), - device_image_interface(mconfig, *this) + : device_t(mconfig, X68KHDC, tag, owner, clock) + , device_image_interface(mconfig, *this) { } diff --git a/src/mame/machine/x68k_hdc.h b/src/mame/machine/x68k_hdc.h index decc9a6ef82..20f943d46b6 100644 --- a/src/mame/machine/x68k_hdc.h +++ b/src/mame/machine/x68k_hdc.h @@ -5,76 +5,11 @@ X68000 Custom SASI HD controller */ +#ifndef MAME_MACHINE_X68K_HDC_H +#define MAME_MACHINE_X68K_HDC_H +#pragma once -enum -{ - SASI_PHASE_BUSFREE = 0, - SASI_PHASE_ARBITRATION, - SASI_PHASE_SELECTION, - SASI_PHASE_RESELECTION, - SASI_PHASE_COMMAND, - SASI_PHASE_DATA, - SASI_PHASE_STATUS, - SASI_PHASE_MESSAGE, - SASI_PHASE_READ, - SASI_PHASE_WRITE -}; - -// SASI commands, based on the SASI standard -enum -{ - // Class 0 (6-byte) commands - SASI_CMD_TEST_UNIT_READY = 0, - SASI_CMD_REZERO_UNIT, - SASI_CMD_RESERVED_02, - SASI_CMD_REQUEST_SENSE, - SASI_CMD_FORMAT_UNIT, - SASI_CMD_RESERVED_05, - SASI_CMD_FORMAT_UNIT_06, // the X68000 uses command 0x06 for Format Unit, despite the SASI specs saying 0x04 - SASI_CMD_RESERVED_07, - SASI_CMD_READ, - SASI_CMD_RESERVED_09, - SASI_CMD_WRITE, - SASI_CMD_SEEK, - SASI_CMD_RESERVED_0C, - SASI_CMD_RESERVED_0D, - SASI_CMD_RESERVED_0E, - SASI_CMD_WRITE_FILE_MARK, - SASI_CMD_INVALID_10, - SASI_CMD_INVALID_11, - SASI_CMD_RESERVE_UNIT, - SASI_CMD_RELEASE_UNIT, - SASI_CMD_INVALID_14, - SASI_CMD_INVALID_15, - SASI_CMD_READ_CAPACITY, - SASI_CMD_INVALID_17, - SASI_CMD_INVALID_18, - SASI_CMD_INVALID_19, - SASI_CMD_READ_DIAGNOSTIC, - SASI_CMD_WRITE_DIAGNOSTIC, - SASI_CMD_INVALID_1C, - SASI_CMD_INVALID_1D, - SASI_CMD_INVALID_1E, - SASI_CMD_INQUIRY, - // Class 1 commands (yes, just the one) - SASI_CMD_RESERVED_20, - SASI_CMD_RESERVED_21, - SASI_CMD_RESERVED_22, - SASI_CMD_SET_BLOCK_LIMITS = 0x28, - // Class 2 commands - SASI_CMD_EXTENDED_ADDRESS_READ = 0x48, - SASI_CMD_INVALID_49, - SASI_CMD_EXTENDED_ADDRESS_WRITE, - SASI_CMD_WRITE_AND_VERIFY = 0x54, - SASI_CMD_VERIFY, - SASI_CMD_INVALID_56, - SASI_CMD_SEARCH_DATA_HIGH, - SASI_CMD_SEARCH_DATA_EQUAL, - SASI_CMD_SEARCH_DATA_LOW, - // controller-specific commands - SASI_CMD_SPECIFY = 0xc2 -}; class x68k_hdc_image_device : public device_t, public device_image_interface @@ -86,11 +21,11 @@ public: // image-level overrides virtual iodevice_t image_type() const override { return IO_HARDDISK; } - virtual bool is_readable() const override { return 1; } - virtual bool is_writeable() const override { return 1; } - virtual bool is_creatable() const override { return 1; } - virtual bool must_be_loaded() const override { return 0; } - virtual bool is_reset_on_load() const override { return 0; } + virtual bool is_readable() const override { return true; } + virtual bool is_writeable() const override { return true; } + virtual bool is_creatable() const override { return true; } + virtual bool must_be_loaded() const override { return false; } + virtual bool is_reset_on_load() const override { return false; } virtual const char *file_extensions() const override { return "hdf"; } virtual const char *custom_instance_name() const override { return "sasihd"; } virtual const char *custom_brief_instance_name() const override { return "sasi"; } @@ -122,7 +57,9 @@ private: }; // device type definition -extern const device_type X68KHDC; +DECLARE_DEVICE_TYPE(X68KHDC, x68k_hdc_image_device) #define MCFG_X68KHDC_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, X68KHDC, 0) + +#endif // MAME_MACHINE_X68K_HDC_H diff --git a/src/mame/machine/x68k_kbd.cpp b/src/mame/machine/x68k_kbd.cpp index 7aa06e76a31..ec3ed0cbe03 100644 --- a/src/mame/machine/x68k_kbd.cpp +++ b/src/mame/machine/x68k_kbd.cpp @@ -7,7 +7,7 @@ x68k_keyboard_device::x68k_keyboard_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) - : buffered_rs232_device(mconfig, X68K_KEYBOARD, "X68k Keyboard", tag, owner, 0, "x68k_keyboard", __FILE__) + : buffered_rs232_device(mconfig, X68K_KEYBOARD, tag, owner, 0) , device_matrix_keyboard_interface(mconfig, *this, "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", "LINE8", "LINE9", "LINEA", "LINEB", "LINEC", "LINED", "LINEE") { } @@ -302,7 +302,7 @@ void x68k_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, in } -const device_type X68K_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(X68K_KEYBOARD, x68k_keyboard_device, "x68k_keyboard", "Sharp X68000 Keyboard") #if 0 diff --git a/src/mame/machine/x68k_kbd.h b/src/mame/machine/x68k_kbd.h index f856a68efb2..13fff783557 100644 --- a/src/mame/machine/x68k_kbd.h +++ b/src/mame/machine/x68k_kbd.h @@ -27,6 +27,6 @@ private: uint8_t m_enabled; // keyboard enabled? }; -extern const device_type X68K_KEYBOARD; +DECLARE_DEVICE_TYPE(X68K_KEYBOARD, x68k_keyboard_device) #endif // MAME_MACHINE_X68K_KBD_H diff --git a/src/mame/machine/x820kb.cpp b/src/mame/machine/x820kb.cpp index e9f1b57f49d..22f9f9d6823 100644 --- a/src/mame/machine/x820kb.cpp +++ b/src/mame/machine/x820kb.cpp @@ -57,7 +57,7 @@ Notes: // DEVICE DEFINITIONS //************************************************************************** -const device_type XEROX_820_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(XEROX_820_KEYBOARD, xerox_820_keyboard_device, "x820kb", "Xerox 820 Keyboard") //------------------------------------------------- @@ -74,32 +74,24 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const tiny_rom_entry *xerox_820_keyboard_t::device_rom_region() const +const tiny_rom_entry *xerox_820_keyboard_device::device_rom_region() const { return ROM_NAME( xerox_820_keyboard ); } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( xerox_820_keyboard_io, AS_IO, 8, xerox_820_keyboard_t ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(kb_p2_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(kb_t0_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(kb_t1_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(kb_bus_w) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( xerox_820_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( xerox_820_keyboard ) MCFG_CPU_ADD(I8748_TAG, I8048, XTAL_6MHz) - MCFG_CPU_IO_MAP(xerox_820_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(xerox_820_keyboard_device, kb_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(xerox_820_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(xerox_820_keyboard_device, kb_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(xerox_820_keyboard_device, kb_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(xerox_820_keyboard_device, kb_t1_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(xerox_820_keyboard_device, kb_bus_w)) MACHINE_CONFIG_END @@ -108,7 +100,7 @@ MACHINE_CONFIG_END // machine configurations //------------------------------------------------- -machine_config_constructor xerox_820_keyboard_t::device_mconfig_additions() const +machine_config_constructor xerox_820_keyboard_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( xerox_820_keyboard ); } @@ -243,7 +235,7 @@ INPUT_PORTS_END // input_ports - device-specific input ports //------------------------------------------------- -ioport_constructor xerox_820_keyboard_t::device_input_ports() const +ioport_constructor xerox_820_keyboard_device::device_input_ports() const { return INPUT_PORTS_NAME( xerox_820_keyboard ); } @@ -255,11 +247,11 @@ ioport_constructor xerox_820_keyboard_t::device_input_ports() const //************************************************************************** //------------------------------------------------- -// xerox_820_keyboard_t - constructor +// xerox_820_keyboard_device - constructor //------------------------------------------------- -xerox_820_keyboard_t::xerox_820_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, XEROX_820_KEYBOARD, "Xerox 820 Keyboard", tag, owner, clock, "x820kb", __FILE__), +xerox_820_keyboard_device::xerox_820_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, XEROX_820_KEYBOARD, tag, owner, clock), m_maincpu(*this, I8748_TAG), m_y(*this, "Y%u", 0), m_kbstb_cb(*this), @@ -273,7 +265,7 @@ xerox_820_keyboard_t::xerox_820_keyboard_t(const machine_config &mconfig, const // device_start - device-specific startup //------------------------------------------------- -void xerox_820_keyboard_t::device_start() +void xerox_820_keyboard_device::device_start() { // state saving save_item(NAME(m_p1)); @@ -285,12 +277,12 @@ void xerox_820_keyboard_t::device_start() // device_reset - device-specific reset //------------------------------------------------- -void xerox_820_keyboard_t::device_reset() +void xerox_820_keyboard_device::device_reset() { m_kbstb_cb.resolve_safe(); } -void xerox_820_keyboard_t::device_reset_after_children() +void xerox_820_keyboard_device::device_reset_after_children() { m_maincpu->set_input_line(MCS48_INPUT_IRQ, ASSERT_LINE); } @@ -300,7 +292,7 @@ void xerox_820_keyboard_t::device_reset_after_children() // kb_p1_r - //------------------------------------------------- -READ8_MEMBER( xerox_820_keyboard_t::kb_p1_r ) +READ8_MEMBER( xerox_820_keyboard_device::kb_p1_r ) { return m_p1; // TODO: move to mcs48.c } @@ -310,7 +302,7 @@ READ8_MEMBER( xerox_820_keyboard_t::kb_p1_r ) // kb_p1_w - //------------------------------------------------- -WRITE8_MEMBER( xerox_820_keyboard_t::kb_p1_w ) +WRITE8_MEMBER( xerox_820_keyboard_device::kb_p1_w ) { /* @@ -337,7 +329,7 @@ WRITE8_MEMBER( xerox_820_keyboard_t::kb_p1_w ) // kb_p2_r - //------------------------------------------------- -READ8_MEMBER( xerox_820_keyboard_t::kb_p2_r ) +READ8_MEMBER( xerox_820_keyboard_device::kb_p2_r ) { return m_y[m_p1 & 0x0f]->read(); } @@ -347,7 +339,7 @@ READ8_MEMBER( xerox_820_keyboard_t::kb_p2_r ) // kb_t0_r - //------------------------------------------------- -READ8_MEMBER( xerox_820_keyboard_t::kb_t0_r ) +READ_LINE_MEMBER( xerox_820_keyboard_device::kb_t0_r ) { uint8_t data = 1; @@ -365,7 +357,7 @@ READ8_MEMBER( xerox_820_keyboard_t::kb_t0_r ) // kb_t1_r - //------------------------------------------------- -READ8_MEMBER( xerox_820_keyboard_t::kb_t1_r ) +READ_LINE_MEMBER( xerox_820_keyboard_device::kb_t1_r ) { return 1; // ??? if 0, toggle P17 } @@ -375,7 +367,7 @@ READ8_MEMBER( xerox_820_keyboard_t::kb_t1_r ) // kb_bus_w - //------------------------------------------------- -WRITE8_MEMBER( xerox_820_keyboard_t::kb_bus_w ) +WRITE8_MEMBER( xerox_820_keyboard_device::kb_bus_w ) { m_bus = data; } diff --git a/src/mame/machine/x820kb.h b/src/mame/machine/x820kb.h index 0edf355d032..f7845b8c7c1 100644 --- a/src/mame/machine/x820kb.h +++ b/src/mame/machine/x820kb.h @@ -6,10 +6,10 @@ *********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_X820KB_H +#define MAME_MACHINE_X820KB_H -#ifndef __XEROX_820_KEYBOARD__ -#define __XEROX_820_KEYBOARD__ +#pragma once #include "cpu/mcs48/mcs48.h" @@ -20,7 +20,7 @@ //************************************************************************** #define MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(_devcb) \ - devcb = &xerox_820_keyboard_t::set_kbstb_wr_callback(*device, DEVCB_##_devcb); + devcb = &xerox_820_keyboard_device::set_kbstb_wr_callback(*device, DEVCB_##_devcb); @@ -28,15 +28,15 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> xerox_820_keyboard_t +// ======================> xerox_820_keyboard_device -class xerox_820_keyboard_t : public device_t +class xerox_820_keyboard_device : public device_t { public: // construction/destruction - xerox_820_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + xerox_820_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_kbstb_wr_callback(device_t &device, _Object object) { return downcast(device).m_kbstb_cb.set_callback(object); } + template static devcb_base &set_kbstb_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_kbstb_cb.set_callback(std::forward(cb)); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -48,8 +48,8 @@ public: DECLARE_READ8_MEMBER( kb_p1_r ); DECLARE_WRITE8_MEMBER( kb_p1_w ); DECLARE_READ8_MEMBER( kb_p2_r ); - DECLARE_READ8_MEMBER( kb_t0_r ); - DECLARE_READ8_MEMBER( kb_t1_r ); + DECLARE_READ_LINE_MEMBER( kb_t0_r ); + DECLARE_READ_LINE_MEMBER( kb_t1_r ); DECLARE_WRITE8_MEMBER( kb_bus_w ); protected: @@ -70,8 +70,7 @@ private: // device type definition -extern const device_type XEROX_820_KEYBOARD; - +DECLARE_DEVICE_TYPE(XEROX_820_KEYBOARD, xerox_820_keyboard_device) -#endif +#endif // MAME_MACHINE_X820KB_H diff --git a/src/mame/machine/xbox.cpp b/src/mame/machine/xbox.cpp index 10afbf19381..301620b112c 100644 --- a/src/mame/machine/xbox.cpp +++ b/src/mame/machine/xbox.cpp @@ -3,22 +3,17 @@ #include "emu.h" #include "includes/xbox.h" +#include "includes/xbox_pci.h" #include "cpu/i386/i386.h" -#include "machine/lpci.h" #include "machine/pit8253.h" #include "debug/debugcon.h" #include "debug/debugcmd.h" #include "debugger.h" -#include "bitmap.h" - #include -#define LOG_PCI -//#define LOG_AUDIO - const xbox_base_state::debugger_constants xbox_base_state::debugp[] = { { 0x66232714, {0x8003aae0, 0x5c, 0x1c, 0x28, 0x210, 8, 0x28, 0x1c} }, { 0x49d8055a, {0x8003aae0, 0x5c, 0x1c, 0x28, 0x210, 8, 0x28, 0x1c} } @@ -575,9 +570,9 @@ void xbox_base_state::debug_generate_irq(int irq, bool active) } } -void xbox_base_state::vblank_callback(screen_device &screen, bool state) +WRITE_LINE_MEMBER(xbox_base_state::vblank_callback) { - nvidia_nv2a->vblank_callback(screen, state); + nvidia_nv2a->vblank_callback(state); } uint32_t xbox_base_state::screen_update_callback(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -585,291 +580,6 @@ uint32_t xbox_base_state::screen_update_callback(screen_device &screen, bitmap_r return nvidia_nv2a->screen_update_callback(screen, bitmap, cliprect); } -READ32_MEMBER(xbox_base_state::geforce_r) -{ - return nvidia_nv2a->geforce_r(space, offset, mem_mask); -} - -WRITE32_MEMBER(xbox_base_state::geforce_w) -{ - nvidia_nv2a->geforce_w(space, offset, data, mem_mask); -} - -static uint32_t geforce_pci_r(device_t *busdevice, device_t *device, int function, int reg, uint32_t mem_mask) -{ -#ifdef LOG_PCI - busdevice->logerror(" bus:1 device:NV_2A function:%d register:%d mask:%08X\n",function,reg,mem_mask); -#endif - return 0; -} - -static void geforce_pci_w(device_t *busdevice, device_t *device, int function, int reg, uint32_t data, uint32_t mem_mask) -{ -#ifdef LOG_PCI - busdevice->logerror(" bus:1 device:NV_2A function:%d register:%d data:%08X mask:%08X\n",function,reg,data,mem_mask); -#endif -} - -/* - * Audio - */ - -READ32_MEMBER(xbox_base_state::audio_apu_r) -{ -#ifdef LOG_AUDIO - logerror("Audio_APU: read from %08X mask %08X\n", 0xfe800000 + offset * 4, mem_mask); -#endif - if (offset == 0x20010 / 4) // some kind of internal counter or state value - return 0x20 + 4 + 8 + 0x48 + 0x80; - return apust.memory[offset]; -} - -WRITE32_MEMBER(xbox_base_state::audio_apu_w) -{ - //uint32_t old; - uint32_t v; - -#ifdef LOG_AUDIO - logerror("Audio_APU: write at %08X mask %08X value %08X\n", 0xfe800000 + offset * 4, mem_mask, data); -#endif - //old = apust.memory[offset]; - apust.memory[offset] = data; - if (offset == 0x02040 / 4) // address of memory area with scatter-gather info (gpdsp scratch dma) - apust.gpdsp_sgaddress = data; - if (offset == 0x020d4 / 4) { // block count (gpdsp) - apust.gpdsp_sgblocks = data; - apust.gpdsp_address = apust.space->read_dword(apust.gpdsp_sgaddress); // memory address of first block - apust.timer->enable(); - apust.timer->adjust(attotime::from_msec(1), 0, attotime::from_msec(1)); - } - if (offset == 0x02048 / 4) // (epdsp scratch dma) - apust.epdsp_sgaddress = data; - if (offset == 0x020dc / 4) // (epdsp) - apust.epdsp_sgblocks = data; - if (offset == 0x0204c / 4) // address of memory area with information about blocks - apust.unknown_sgaddress = data; - if (offset == 0x020e0 / 4) // block count - 1 - apust.unknown_sgblocks = data; - if (offset == 0x0202c / 4) { // address of memory area with 0x80 bytes for each voice - apust.voicedata_address = data; - return; - } - if (offset == 0x04024 / 4) // offset in memory area indicated by 0x204c (analog output ?) - return; - if (offset == 0x04034 / 4) // size - return; - if (offset == 0x04028 / 4) // offset in memory area indicated by 0x204c (digital output ?) - return; - if (offset == 0x04038 / 4) // size - return; - if (offset == 0x20804 / 4) { // block number for scatter-gather heap that stores sampled audio to be played - if (data >= 1024) { - logerror("Audio_APU: sg block number too high, increase size of voices_heap_blockaddr\n"); - apust.memory[offset] = 1023; - } - return; - } - if (offset == 0x20808 / 4) { // block address for scatter-gather heap that stores sampled audio to be played - apust.voices_heap_blockaddr[apust.memory[0x20804 / 4]] = data; - return; - } - if (offset == 0x202f8 / 4) { // voice number for parameters ? - apust.voice_number = data; - return; - } - if (offset == 0x202fc / 4) // 1 when accessing voice parameters 0 otherwise - return; - if (offset == 0x20304 / 4) { // format - /* - bits 28-31 sample format: - 0 8-bit pcm - 5 16-bit pcm - 10 adpcm ? - 14 24-bit pcm - 15 32-bit pcm - bits 16-20 number of channels - 1: - 0 mono - 1 stereo - */ - return; - } - if (offset == 0x2037c / 4) { // value related to sample rate - int16_t v0 = (int16_t)(data >> 16); // upper 16 bits as a signed 16 bit value - float vv = ((float)v0) / 4096.0f; // divide by 4096 - float vvv = powf(2, vv); // two to the vv - int f = vvv*48000.0f; // sample rate - apust.voices_frequency[apust.voice_number] = f; - return; - } - if (offset == 0x203a0 / 4) // start offset of data in scatter-gather heap - return; - if (offset == 0x203a4 / 4) { // first sample to play - apust.voices_position_start[apust.voice_number] = data * 1000; - return; - } - if (offset == 0x203dc / 4) { // last sample to play - apust.voices_position_end[apust.voice_number] = data * 1000; - return; - } - if (offset == 0x2010c / 4) // voice processor 0 idle 1 not idle ? - return; - if (offset == 0x20124 / 4) { // voice number to activate ? - v = apust.voice_number; - apust.voices_active[v >> 6] |= ((uint64_t)1 << (v & 63)); - apust.voices_position[v] = apust.voices_position_start[apust.voice_number]; - apust.voices_position_increment[apust.voice_number] = apust.voices_frequency[apust.voice_number]; - return; - } - if (offset == 0x20128 / 4) { // voice number to deactivate ? - v = apust.voice_number; - apust.voices_active[v >> 6] &= ~(1 << (v & 63)); - return; - } - if (offset == 0x20140 / 4) // voice number to ? - return; - if ((offset >= 0x20200 / 4) && (offset < 0x20280 / 4)) // headroom for each of the 32 mixbins - return; - if (offset == 0x20280 / 4) // hrtf headroom ? - return; -} - -READ32_MEMBER(xbox_base_state::audio_ac93_r) -{ - uint32_t ret = 0; - -#ifdef LOG_AUDIO - logerror("Audio_AC3: read from %08X mask %08X\n", 0xfec00000 + offset * 4, mem_mask); -#endif - if (offset < 0x80 / 4) - { - ret = ac97st.mixer_regs[offset]; - } - if ((offset >= 0x100 / 4) && (offset <= 0x138 / 4)) - { - offset = offset - 0x100 / 4; - if (offset == 0x18 / 4) - { - ac97st.controller_regs[offset] &= ~0x02000000; // REGRST: register reset - } - if (offset == 0x30 / 4) - { - ac97st.controller_regs[offset] |= 0x100; // PCRDY: primary codec ready - } - if (offset == 0x34 / 4) - { - ac97st.controller_regs[offset] &= ~1; // CAS: codec access semaphore - } - ret = ac97st.controller_regs[offset]; - } - return ret; -} - -WRITE32_MEMBER(xbox_base_state::audio_ac93_w) -{ -#ifdef LOG_AUDIO - logerror("Audio_AC3: write at %08X mask %08X value %08X\n", 0xfec00000 + offset * 4, mem_mask, data); -#endif - if (offset < 0x80 / 4) - { - COMBINE_DATA(ac97st.mixer_regs + offset); - } - if ((offset >= 0x100 / 4) && (offset <= 0x138 / 4)) - { - offset = offset - 0x100 / 4; - COMBINE_DATA(ac97st.controller_regs + offset); - } -} - -TIMER_CALLBACK_MEMBER(xbox_base_state::audio_apu_timer) -{ - int cmd; - int bb, b, v; - uint64_t bv; - uint32_t phys; - - cmd = apust.space->read_dword(apust.gpdsp_address + 0x800 + 0x10); - if (cmd == 3) - apust.space->write_dword(apust.gpdsp_address + 0x800 + 0x10, 0); - /*else - logerror("Audio_APU: unexpected value at address %d\n",apust.gpdsp_address+0x800+0x10);*/ - for (b = 0; b < 4; b++) { - bv = 1; - for (bb = 0; bb < 64; bb++) { - if (apust.voices_active[b] & bv) { - v = bb + (b << 6); - apust.voices_position[v] += apust.voices_position_increment[v]; - while (apust.voices_position[v] >= apust.voices_position_end[v]) - apust.voices_position[v] = apust.voices_position_start[v] + apust.voices_position[v] - apust.voices_position_end[v] - 1000; - phys = apust.voicedata_address + 0x80 * v; - apust.space->write_dword(phys + 0x58, apust.voices_position[v] / 1000); - } - bv = bv << 1; - } - } -} - -static uint32_t pcibridghostbridg_pci_r(device_t *busdevice, device_t *device, int function, int reg, uint32_t mem_mask) -{ -#ifdef LOG_PCI - busdevice->logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask); -#endif - if ((function == 3) && (reg == 0x6c)) - return 0x08800044; - return 0; -} - -static void pcibridghostbridg_pci_w(device_t *busdevice, device_t *device, int function, int reg, uint32_t data, uint32_t mem_mask) -{ -#ifdef LOG_PCI - busdevice->logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask); -#endif -} - -static uint32_t hubintisabridg_pci_r(device_t *busdevice, device_t *device, int function, int reg, uint32_t mem_mask) -{ -#ifdef LOG_PCI - busdevice->logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask); -#endif - if ((function == 0) && (reg == 8)) - return 0xb4; // 0:1:0 revision id must be at least 0xb4, otherwise usb will require a hub - return 0; -} - -static void hubintisabridg_pci_w(device_t *busdevice, device_t *device, int function, int reg, uint32_t data, uint32_t mem_mask) -{ -#ifdef LOG_PCI - busdevice->logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask); -#endif -} - -/* - * dummy for non connected devices - */ - -static uint32_t dummy_pci_r(device_t *busdevice, device_t *device, int function, int reg, uint32_t mem_mask) -{ -#ifdef LOG_PCI - busdevice->logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask); -#endif - return 0; -} - -static void dummy_pci_w(device_t *busdevice, device_t *device, int function, int reg, uint32_t data, uint32_t mem_mask) -{ -#ifdef LOG_PCI - busdevice->logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask); -#endif -} - -READ32_MEMBER(xbox_base_state::dummy_r) -{ - return 0; -} - -WRITE32_MEMBER(xbox_base_state::dummy_w) -{ -} - /* * PIC & PIT */ @@ -909,15 +619,25 @@ WRITE_LINE_MEMBER(xbox_base_state::xbox_pit8254_out2_changed) //xbox_speaker_set_input( state ? 1 : 0 ); } -/* - * SMbus devices - */ +WRITE_LINE_MEMBER(xbox_base_state::xbox_ohci_usb_interrupt_changed) +{ + xbox_base_devs.pic8259_1->ir1_w(state); +} -int smbus_callback_pic16lc(xbox_base_state &chs, int command, int rw, int data) +WRITE_LINE_MEMBER(xbox_base_state::xbox_smbus_interrupt_changed) { - return chs.smbus_pic16lc(command, rw, data); + xbox_base_devs.pic8259_2->ir3_w(state); } +WRITE_LINE_MEMBER(xbox_base_state::xbox_nv2a_interrupt_changed) +{ + xbox_base_devs.pic8259_1->ir3_w(state); +} + +/* + * SMbus devices + */ + int xbox_base_state::smbus_pic16lc(int command, int rw, int data) { if (rw == 1) { // read @@ -941,11 +661,6 @@ int xbox_base_state::smbus_pic16lc(int command, int rw, int data) return 0; } -int smbus_callback_cx25871(xbox_base_state &chs, int command, int rw, int data) -{ - return chs.smbus_cx25871(command, rw, data); -} - int xbox_base_state::smbus_cx25871(int command, int rw, int data) { logerror("cx25871: %d %d %d\n", command, rw, data); @@ -966,11 +681,6 @@ static int dummyeeprom[256] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -int smbus_callback_eeprom(xbox_base_state &chs, int command, int rw, int data) -{ - return chs.smbus_eeprom(command, rw, data); -} - int xbox_base_state::smbus_eeprom(int command, int rw, int data) { if (command >= 112) @@ -990,103 +700,6 @@ int xbox_base_state::smbus_eeprom(int command, int rw, int data) return 0; } -/* - * SMbus controller - */ - -void xbox_base_state::smbus_register_device(int address, int(*handler)(xbox_base_state &chs, int command, int rw, int data)) -{ - if (address < 128) - smbusst.devices[address] = handler; -} - -READ32_MEMBER(xbox_base_state::smbus_r) -{ - if ((offset == 0) && (mem_mask == 0xff)) // 0 smbus status - smbusst.words[offset] = (smbusst.words[offset] & ~mem_mask) | ((smbusst.status << 0) & mem_mask); - if ((offset == 1) && ((mem_mask == 0x00ff0000) || (mem_mask == 0xffff0000))) // 6 smbus data - smbusst.words[offset] = (smbusst.words[offset] & ~mem_mask) | ((smbusst.data << 16) & mem_mask); - return smbusst.words[offset]; -} - -WRITE32_MEMBER(xbox_base_state::smbus_w) -{ - COMBINE_DATA(smbusst.words); - if ((offset == 0) && (mem_mask == 0xff)) // 0 smbus status - { - if (!((smbusst.status ^ data) & 0x10)) // clearing interrupt - xbox_base_devs.pic8259_2->ir3_w(0); // IRQ 11 - smbusst.status &= ~data; - } - if ((offset == 0) && (mem_mask == 0xff0000)) // 2 smbus control - { - data = data >> 16; - smbusst.control = data; - int cycletype = smbusst.control & 7; - if (smbusst.control & 8) { // start - if ((cycletype & 6) == 2) - { - if (smbusst.devices[smbusst.address]) - if (smbusst.rw == 0) - smbusst.devices[smbusst.address](*this, smbusst.command, smbusst.rw, smbusst.data); - else - smbusst.data = smbusst.devices[smbusst.address](*this, smbusst.command, smbusst.rw, smbusst.data); - else - logerror("SMBUS: access to missing device at address %d\n", smbusst.address); - smbusst.status |= 0x10; - if (smbusst.control & 0x10) - { - xbox_base_devs.pic8259_2->ir3_w(1); // IRQ 11 - } - } - } - } - if ((offset == 1) && (mem_mask == 0xff)) // 4 smbus address - { - smbusst.address = data >> 1; - smbusst.rw = data & 1; - } - if ((offset == 1) && ((mem_mask == 0x00ff0000) || (mem_mask == 0xffff0000))) // 6 smbus data - { - data = data >> 16; - smbusst.data = data; - } - if ((offset == 2) && (mem_mask == 0xff)) // 8 smbus command - smbusst.command = data; - //if ((offset == 2) && (mem_mask == 0x00ff0000)) ; -} - -READ32_MEMBER(xbox_base_state::smbus2_r) -{ - return 0; -} - -WRITE32_MEMBER(xbox_base_state::smbus2_w) -{ -} - -/* -* Ethernet controller -*/ - -READ32_MEMBER(xbox_base_state::network_r) -{ - return 0; -} - -WRITE32_MEMBER(xbox_base_state::network_w) -{ -} - -READ32_MEMBER(xbox_base_state::networkio_r) -{ - return 0; -} - -WRITE32_MEMBER(xbox_base_state::networkio_w) -{ -} - /* * SuperIO */ @@ -1158,40 +771,72 @@ WRITE8_MEMBER(xbox_base_state::superiors232_write) } } -READ32_MEMBER(xbox_base_state::ohci_usb_r) +void xbox_base_state::machine_start() { - if (offset == 0) /* hacks needed until usb (and jvs) is implemented */ + find_debug_params(machine()); + nvidia_nv2a = machine().device(":pci:1e.0:00.0")->debug_get_renderer(); + memset(pic16lc_buffer, 0, sizeof(pic16lc_buffer)); + pic16lc_buffer[0] = 'B'; + pic16lc_buffer[4] = 0; // A/V connector, 0=scart 2=vga 4=svideo 7=none + // PIC challenge handshake data + pic16lc_buffer[0x1c] = 0x0c; + pic16lc_buffer[0x1d] = 0x0d; + pic16lc_buffer[0x1e] = 0x0e; + pic16lc_buffer[0x1f] = 0x0f; + mcpx_smbus_device *smbus = machine().device(":pci:01.1"); + smbus->register_device(0x10, + [&](int command, int rw, int data) + { + return smbus_pic16lc(command, rw, data); + } + ); + smbus->register_device(0x45, + [&](int command, int rw, int data) + { + return smbus_cx25871(command, rw, data); + } + ); + smbus->register_device(0x54, + [&](int command, int rw, int data) + { + return smbus_eeprom(command, rw, data); + } + ); + xbox_base_devs.pic8259_1 = machine().device("pic8259_1"); + xbox_base_devs.pic8259_2 = machine().device("pic8259_2"); + xbox_base_devs.ide = machine().device("ide"); + if (machine().debug_flags & DEBUG_FLAG_ENABLED) + { + using namespace std::placeholders; + machine().debugger().console().register_command("xbox", CMDFLAG_NONE, 0, 1, 4, std::bind(&xbox_base_state::xbox_debug_commands, this, _1, _2)); + } + machine().device(":pci:02.0")->set_hack_callback( + [&](void) { hack_usb(); } - return ohci_usb->read(space, offset, mem_mask); -} - -WRITE32_MEMBER(xbox_base_state::ohci_usb_w) -{ - if (!usb_hack_enabled) - ohci_usb->write(space, offset, data, mem_mask); -} - -READ32_MEMBER(xbox_base_state::ohci_usb2_r) -{ - return 0; -} - -WRITE32_MEMBER(xbox_base_state::ohci_usb2_w) -{ + ); + // super-io + memset(&superiost, 0, sizeof(superiost)); + superiost.configuration_mode = false; + superiost.registers[0][0x26] = 0x2e; // Configuration port address byte 0 + // savestates + save_item(NAME(debug_irq_active)); + save_item(NAME(debug_irq_number)); + save_item(NAME(pic16lc_buffer)); } ADDRESS_MAP_START(xbox_base_map, AS_PROGRAM, 32, xbox_base_state) - AM_RANGE(0x00000000, 0x07ffffff) AM_RAM AM_SHARE("nv2a_share") // 128 megabytes + AM_RANGE(0x00000000, 0x07ffffff) AM_RAM // 128 megabytes +#if 0 AM_RANGE(0xf0000000, 0xf7ffffff) AM_RAM AM_SHARE("nv2a_share") // 3d accelerator wants this AM_RANGE(0xfd000000, 0xfdffffff) AM_RAM AM_READWRITE(geforce_r, geforce_w) AM_RANGE(0xfed00000, 0xfed003ff) AM_READWRITE(ohci_usb_r, ohci_usb_w) - //AM_RANGE(0xfed00000, 0xfed00fff) AM_DEVREADWRITE("ohci_usb", ohci_usb_controller, read, write) - AM_RANGE(0xfed08000, 0xfed08fff) AM_READWRITE(ohci_usb2_r, ohci_usb2_w) + AM_RANGE(0xfed08000, 0xfed083ff) AM_READWRITE(ohci_usb2_r, ohci_usb2_w) AM_RANGE(0xfe800000, 0xfe87ffff) AM_READWRITE(audio_apu_r, audio_apu_w) AM_RANGE(0xfec00000, 0xfec00fff) AM_READWRITE(audio_ac93_r, audio_ac93_w) AM_RANGE(0xfef00000, 0xfef003ff) AM_READWRITE(network_r, network_w) +#endif ADDRESS_MAP_END ADDRESS_MAP_START(xbox_base_map_io, AS_IO, 32, xbox_base_state) @@ -1199,73 +844,21 @@ ADDRESS_MAP_START(xbox_base_map_io, AS_IO, 32, xbox_base_state) AM_RANGE(0x002c, 0x002f) AM_READWRITE8(superio_read, superio_write, 0xffff0000) AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffff) AM_RANGE(0x00a0, 0x00a3) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, read_cs0, write_cs0) + AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE(":pci:09.0:ide", bus_master_ide_controller_device, read_cs0, write_cs0) AM_RANGE(0x03f8, 0x03ff) AM_READWRITE8(superiors232_read, superiors232_write, 0xffffffff) +#if 0 AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) AM_RANGE(0x8000, 0x80ff) AM_READWRITE(dummy_r, dummy_w) // lpc bridge AM_RANGE(0xc000, 0xc00f) AM_READWRITE(smbus_r, smbus_w) AM_RANGE(0xc200, 0xc21f) AM_READWRITE(smbus2_r, smbus2_w) + AM_RANGE(0xd000, 0xd0ff) AM_NOP // ac97 + AM_RANGE(0xd200, 0xd27f) AM_NOP // ac97 AM_RANGE(0xe000, 0xe007) AM_READWRITE(networkio_r, networkio_w) AM_RANGE(0xff60, 0xff6f) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, bmdma_r, bmdma_w) +#endif ADDRESS_MAP_END -void xbox_base_state::machine_start() -{ - find_debug_params(machine()); - nvidia_nv2a = std::make_unique(machine()); - memset(pic16lc_buffer, 0, sizeof(pic16lc_buffer)); - pic16lc_buffer[0] = 'B'; - pic16lc_buffer[4] = 0; // A/V connector, 0=scart 2=vga 4=svideo 7=none - smbus_register_device(0x10, smbus_callback_pic16lc); - smbus_register_device(0x45, smbus_callback_cx25871); - smbus_register_device(0x54, smbus_callback_eeprom); - xbox_base_devs.pic8259_1 = machine().device("pic8259_1"); - xbox_base_devs.pic8259_2 = machine().device("pic8259_2"); - xbox_base_devs.ide = machine().device("ide"); - memset(apust.memory, 0, sizeof(apust.memory)); - memset(apust.voices_heap_blockaddr, 0, sizeof(apust.voices_heap_blockaddr)); - memset(apust.voices_active, 0, sizeof(apust.voices_active)); - memset(apust.voices_position, 0, sizeof(apust.voices_position)); - memset(apust.voices_position_start, 0, sizeof(apust.voices_position_start)); - memset(apust.voices_position_end, 0, sizeof(apust.voices_position_end)); - memset(apust.voices_position_increment, 0, sizeof(apust.voices_position_increment)); - apust.space = &m_maincpu->space(); - apust.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(xbox_base_state::audio_apu_timer), this), (void *)"APU Timer"); - apust.timer->enable(false); - if (machine().debug_flags & DEBUG_FLAG_ENABLED) - { - using namespace std::placeholders; - machine().debugger().console().register_command("xbox", CMDFLAG_NONE, 0, 1, 4, std::bind(&xbox_base_state::xbox_debug_commands, this, _1, _2)); - } - // PIC challenge handshake data - pic16lc_buffer[0x1c] = 0x0c; - pic16lc_buffer[0x1d] = 0x0d; - pic16lc_buffer[0x1e] = 0x0e; - pic16lc_buffer[0x1f] = 0x0f; - // usb - ohci_usb = machine().device("ohci_usb"); - // super-io - memset(&superiost, 0, sizeof(superiost)); - superiost.configuration_mode = false; - superiost.registers[0][0x26] = 0x2e; // Configuration port address byte 0 - // savestates - save_item(NAME(debug_irq_active)); - save_item(NAME(debug_irq_number)); - save_item(NAME(smbusst.status)); - save_item(NAME(smbusst.control)); - save_item(NAME(smbusst.address)); - save_item(NAME(smbusst.data)); - save_item(NAME(smbusst.command)); - save_item(NAME(smbusst.rw)); - save_item(NAME(smbusst.words)); - save_item(NAME(pic16lc_buffer)); - nvidia_nv2a->set_interrupt_device(xbox_base_devs.pic8259_1); - nvidia_nv2a->start(&m_maincpu->space()); - nvidia_nv2a->savestate_items(); -} - -MACHINE_CONFIG_START(xbox_base, xbox_base_state) - +MACHINE_CONFIG_START(xbox_base) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PENTIUM3, 733333333) /* Wrong! family 6 model 8 stepping 10 */ MCFG_CPU_PROGRAM_MAP(xbox_base_map) @@ -1274,19 +867,26 @@ MACHINE_CONFIG_START(xbox_base, xbox_base_state) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) - MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0) - MCFG_PCI_BUS_LEGACY_DEVICE(0, "PCI Bridge Device - Host Bridge", pcibridghostbridg_pci_r, pcibridghostbridg_pci_w) - MCFG_PCI_BUS_LEGACY_DEVICE(1, "HUB Interface - ISA Bridge", hubintisabridg_pci_r, hubintisabridg_pci_w) // function 0 lpc function 1 smbus - MCFG_PCI_BUS_LEGACY_DEVICE(2, "OHCI USB Controller 1", dummy_pci_r, dummy_pci_w) - MCFG_PCI_BUS_LEGACY_DEVICE(3, "OHCI USB Controller 2", dummy_pci_r, dummy_pci_w) - MCFG_PCI_BUS_LEGACY_DEVICE(4, "MCP Networking Adapter", dummy_pci_r, dummy_pci_w) - MCFG_PCI_BUS_LEGACY_DEVICE(5, "MCP APU", dummy_pci_r, dummy_pci_w) - MCFG_PCI_BUS_LEGACY_DEVICE(6, "AC`97 Audio Codec Interface", dummy_pci_r, dummy_pci_w) - MCFG_PCI_BUS_LEGACY_DEVICE(9, "IDE Controller", dummy_pci_r, dummy_pci_w) - MCFG_PCI_BUS_LEGACY_DEVICE(30, "AGP Host to PCI Bridge", dummy_pci_r, dummy_pci_w) - MCFG_PCI_BUS_LEGACY_ADD("agpbus", 1) - MCFG_PCI_BUS_LEGACY_SIBLING("pcibus") - MCFG_PCI_BUS_LEGACY_DEVICE(0, "NV2A GeForce 3MX Integrated GPU/Northbridge", geforce_pci_r, geforce_pci_w) + MCFG_PCI_ROOT_ADD( ":pci") + MCFG_NV2A_HOST_ADD( ":pci:00.0", "maincpu") + MCFG_PCI_DEVICE_ADD(":pci:00.3", NV2A_RAM, 0x10de02a6, 0, 0, 0) + MCFG_PCI_DEVICE_ADD(":pci:01.0", MCPX_LPC, 0x10de01b2, 0xb4, 0, 0) // revision id must be at least 0xb4, otherwise usb will require a hub + MCFG_PCI_DEVICE_ADD(":pci:01.1", MCPX_SMBUS, 0x10de01b4, 0, 0, 0) + MCFG_MCPX_SMBUS_INTERRUPT_HANDLER(DEVWRITELINE(":", xbox_base_state, xbox_smbus_interrupt_changed)) + MCFG_PCI_DEVICE_ADD(":pci:02.0", MCPX_OHCI, 0x10de01c2, 0, 0, 0) + MCFG_MCPX_OHCI_INTERRUPT_HANDLER(DEVWRITELINE(":", xbox_base_state, xbox_ohci_usb_interrupt_changed)) + MCFG_PCI_DEVICE_ADD(":pci:03.0", MCPX_OHCI, 0x10de01c2, 0, 0, 0) + MCFG_PCI_DEVICE_ADD(":pci:04.0", MCPX_ETH, 0x10de01c3, 0, 0, 0) + MCFG_MCPX_APU_ADD( ":pci:05.0", "maincpu") + MCFG_PCI_DEVICE_ADD(":pci:06.0", MCPX_AC97_AUDIO, 0x10de01b1, 0, 0, 0) + MCFG_PCI_DEVICE_ADD(":pci:06.1", MCPX_AC97_MODEM, 0x10de01c1, 0, 0, 0) + MCFG_PCI_BRIDGE_ADD(":pci:08.0", 0x10de01b8, 0) + MCFG_PCI_DEVICE_ADD(":pci:09.0", MCPX_IDE, 0x10de01bc, 0, 0, 0) + MCFG_MCPX_IDE_INTERRUPT_HANDLER(DEVWRITELINE(":pic8259_2", pic8259_device, ir6_w)) + MCFG_AGP_BRIDGE_ADD(":pci:1e.0", NV2A_AGP, 0x10de01b7, 0) + MCFG_PCI_DEVICE_ADD(":pci:1e.0:00.0", NV2A_GPU, 0x10de02a0, 0, 0, 0) + MCFG_MCPX_NV2A_GPU_CPU("maincpu") + MCFG_MCPX_NV2A_GPU_INTERRUPT_HANDLER(DEVWRITELINE(":", xbox_base_state, xbox_nv2a_interrupt_changed)) MCFG_PIC8259_ADD("pic8259_1", WRITELINE(xbox_base_state, xbox_pic8259_1_set_int_line), VCC, READ8(xbox_base_state, get_slave_ack)) MCFG_PIC8259_ADD("pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NOOP) @@ -1297,14 +897,6 @@ MACHINE_CONFIG_START(xbox_base, xbox_base_state) MCFG_PIT8253_CLK2(1125000) /* (unused) pio port c pin 4, and speaker polling enough */ MCFG_PIT8253_OUT2_HANDLER(WRITELINE(xbox_base_state, xbox_pit8254_out2_changed)) - MCFG_DEVICE_ADD("ide", BUS_MASTER_IDE_CONTROLLER, 0) - MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w)) - MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE("maincpu", AS_PROGRAM) - - // usb controller - MCFG_OHCI_USB_CONTROLLER_ADD("ohci_usb") - MCFG_OHCI_USB_CONTROLLER_INTERRUPT_HANDLER(WRITELINE(xbox_base_state, xbox_ohci_usb_interrupt_changed)) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1312,5 +904,5 @@ MACHINE_CONFIG_START(xbox_base, xbox_base_state) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479) MCFG_SCREEN_UPDATE_DRIVER(xbox_base_state, screen_update_callback) - MCFG_SCREEN_VBLANK_DRIVER(xbox_base_state, vblank_callback) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(xbox_base_state, vblank_callback)) MACHINE_CONFIG_END diff --git a/src/mame/machine/xbox_pci.cpp b/src/mame/machine/xbox_pci.cpp new file mode 100644 index 00000000000..33b86730cfc --- /dev/null +++ b/src/mame/machine/xbox_pci.cpp @@ -0,0 +1,788 @@ +// license:BSD-3-Clause +// copyright-holders:Samuele Zannoli + +#include "emu.h" +#include "includes/xbox.h" +#include "includes/xbox_pci.h" + +#include + +//#define LOG_AUDIO + +/* + * Host + */ + +DEFINE_DEVICE_TYPE(NV2A_HOST, nv2a_host_device, "nv2a_host", "NV2A PCI Bridge Device - Host Bridge") + +nv2a_host_device::nv2a_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_host_device(mconfig, NV2A_HOST, tag, owner, clock), + cpu_tag(nullptr), + cpu(nullptr) +{ +} + +void nv2a_host_device::map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space, + uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) +{ + io_space->install_device(0, 0xffff, *static_cast(this), &pci_host_device::io_configuration_access_map); +} + +void nv2a_host_device::set_cpu_tag(const char *_cpu_tag) +{ + cpu_tag = _cpu_tag; +} + +void nv2a_host_device::device_start() +{ + pci_host_device::device_start(); + cpu = machine().device(cpu_tag); + memory_space = &cpu->space(AS_PROGRAM); + io_space = &cpu->space(AS_IO); + + // do not change the next two + memory_window_start = 0x10000000; + memory_window_end = 0xfeefffff; + memory_offset = 0; + // do not change the next two + io_window_start = 0x5000; + io_window_end = 0xefff; + io_offset = 0; +} + +void nv2a_host_device::device_reset() +{ + pci_host_device::device_reset(); +} + +/* + * Ram + */ + +DEFINE_DEVICE_TYPE(NV2A_RAM, nv2a_ram_device, "nv2a_ram", "NV2A Memory Controller - SDRAM") + +DEVICE_ADDRESS_MAP_START(config_map, 32, nv2a_ram_device) + AM_RANGE(0x6c, 0x6f) AM_READWRITE(config_register_r, config_register_w) + AM_INHERIT_FROM(pci_device::config_map) +ADDRESS_MAP_END + +nv2a_ram_device::nv2a_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, NV2A_RAM, tag, owner, clock) +{ +} + +READ32_MEMBER(nv2a_ram_device::config_register_r) +{ + return 0x08800044; +} + +WRITE32_MEMBER(nv2a_ram_device::config_register_w) +{ +} + +/* + * LPC Bus + */ + +DEFINE_DEVICE_TYPE(MCPX_LPC, mcpx_lpc_device, "mcpx_lpc", "MCPX HUB Interface - ISA Bridge") + +DEVICE_ADDRESS_MAP_START(lpc_io, 32, mcpx_lpc_device) + AM_RANGE(0x00000000, 0x000000ff) AM_READWRITE(lpc_r, lpc_w) +ADDRESS_MAP_END + +mcpx_lpc_device::mcpx_lpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, MCPX_LPC, tag, owner, clock) +{ +} + +void mcpx_lpc_device::device_start() +{ + pci_device::device_start(); + add_map(0x00000100, M_IO, FUNC(mcpx_lpc_device::lpc_io)); + bank_infos[0].adr = 0x8000; +} + +void mcpx_lpc_device::device_reset() +{ + pci_device::device_reset(); +} + +READ32_MEMBER(mcpx_lpc_device::lpc_r) +{ + return 0; +} + +WRITE32_MEMBER(mcpx_lpc_device::lpc_w) +{ +} + +/* + * SMBus + */ + +DEFINE_DEVICE_TYPE(MCPX_SMBUS, mcpx_smbus_device, "mcpx_smbus", "MCPX SMBus Controller") + +DEVICE_ADDRESS_MAP_START(smbus_io0, 32, mcpx_smbus_device) + AM_RANGE(0x00000000, 0x0000000f) AM_NOP +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START(smbus_io1, 32, mcpx_smbus_device) + AM_RANGE(0x00000000, 0x0000000f) AM_READWRITE(smbus_r, smbus_w) +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START(smbus_io2, 32, mcpx_smbus_device) + AM_RANGE(0x00000000, 0x0000001f) AM_NOP +ADDRESS_MAP_END + +mcpx_smbus_device::mcpx_smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, MCPX_SMBUS, tag, owner, clock), + m_interrupt_handler(*this) +{ +} + +void mcpx_smbus_device::device_start() +{ + pci_device::device_start(); + m_interrupt_handler.resolve_safe(); + add_map(0x00000010, M_IO, FUNC(mcpx_smbus_device::smbus_io0)); + bank_infos[0].adr = 0x1000; + add_map(0x00000010, M_IO, FUNC(mcpx_smbus_device::smbus_io1)); + bank_infos[1].adr = 0xc000; + add_map(0x00000020, M_IO, FUNC(mcpx_smbus_device::smbus_io2)); + bank_infos[2].adr = 0xc200; + memset(&smbusst, 0, sizeof(smbusst)); +} + +void mcpx_smbus_device::device_reset() +{ + pci_device::device_reset(); +} + +READ32_MEMBER(mcpx_smbus_device::smbus_r) +{ + if ((offset == 0) && (mem_mask == 0xff)) // 0 smbus status + smbusst.words[offset] = (smbusst.words[offset] & ~mem_mask) | ((smbusst.status << 0) & mem_mask); + if ((offset == 1) && ((mem_mask == 0x00ff0000) || (mem_mask == 0xffff0000))) // 6 smbus data + smbusst.words[offset] = (smbusst.words[offset] & ~mem_mask) | ((smbusst.data << 16) & mem_mask); + return smbusst.words[offset]; +} + +WRITE32_MEMBER(mcpx_smbus_device::smbus_w) +{ + COMBINE_DATA(smbusst.words); + if ((offset == 0) && (mem_mask == 0xff)) // 0 smbus status + { + if (!((smbusst.status ^ data) & 0x10)) // clearing interrupt + { + m_interrupt_handler(0); + } + smbusst.status &= ~data; + } + if ((offset == 0) && (mem_mask == 0xff0000)) // 2 smbus control + { + data = data >> 16; + smbusst.control = data; + int cycletype = smbusst.control & 7; + if (smbusst.control & 8) { // start + if ((cycletype & 6) == 2) + { + if (smbusst.devices[smbusst.address]) + if (smbusst.rw == 0) + smbusst.devices[smbusst.address](smbusst.command, smbusst.rw, smbusst.data); + else + smbusst.data = smbusst.devices[smbusst.address](smbusst.command, smbusst.rw, smbusst.data); + else + logerror("SMBUS: access to missing device at address %d\n", smbusst.address); + smbusst.status |= 0x10; + if (smbusst.control & 0x10) + { + m_interrupt_handler(1); + } + } + } + } + if ((offset == 1) && (mem_mask == 0xff)) // 4 smbus address + { + smbusst.address = data >> 1; + smbusst.rw = data & 1; + } + if ((offset == 1) && ((mem_mask == 0x00ff0000) || (mem_mask == 0xffff0000))) // 6 smbus data + { + data = data >> 16; + smbusst.data = data; + } + if ((offset == 2) && (mem_mask == 0xff)) // 8 smbus command + smbusst.command = data; +} + +/* + * OHCI USB Controller + */ + +DEFINE_DEVICE_TYPE(MCPX_OHCI, mcpx_ohci_device, "mcpx_ohci", "MCPX OHCI USB Controller") + +DEVICE_ADDRESS_MAP_START(ohci_mmio, 32, mcpx_ohci_device) + AM_RANGE(0x00000000, 0x00000fff) AM_READWRITE(ohci_r, ohci_w) +ADDRESS_MAP_END + +mcpx_ohci_device::mcpx_ohci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, MCPX_OHCI, tag, owner, clock), + ohci_usb(nullptr), + m_interrupt_handler(*this), + timer(nullptr) +{ +} + +void mcpx_ohci_device::plug_usb_device(int port, ohci_function *function) +{ + function->set_bus_manager(ohci_usb); + ohci_usb->usb_ohci_plug(port, function); // connect to root hub port 3, chihiro needs to use 1 and 2 +} + +void mcpx_ohci_device::device_start() +{ + pci_device::device_start(); + m_interrupt_handler.resolve_safe(); + add_map(0x00001000, M_MEM, FUNC(mcpx_ohci_device::ohci_mmio)); + bank_infos[0].adr = 0xfed00000; + ohci_usb = new ohci_usb_controller(); + ohci_usb->set_cpu(machine().device("maincpu")); + ohci_usb->set_irq_callbaclk( + [&](int state) + { + m_interrupt_handler(state); + } + ); + timer = timer_alloc(0); + ohci_usb->set_timer(timer); + ohci_usb->start(); +} + +void mcpx_ohci_device::device_reset() +{ + pci_device::device_reset(); + if (ohci_usb) + ohci_usb->reset(); +} + +void mcpx_ohci_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + if (ohci_usb) + ohci_usb->timer(timer, id, param, ptr); +} + +READ32_MEMBER(mcpx_ohci_device::ohci_r) +{ + if (!ohci_usb) + return 0; + if (offset == 0) // hacks needed until usb (and jvs) is implemented + { + hack_callback(); + } + return ohci_usb->read(space, offset, mem_mask); +} + +WRITE32_MEMBER(mcpx_ohci_device::ohci_w) +{ + if (ohci_usb) + ohci_usb->write(space, offset, data, mem_mask); +} + +/* + * Ethernet + */ + +DEFINE_DEVICE_TYPE(MCPX_ETH, mcpx_eth_device, "mcpx_eth", "MCP Networking Adapter") + +DEVICE_ADDRESS_MAP_START(eth_mmio, 32, mcpx_eth_device) + AM_RANGE(0x00000000, 0x0000003ff) AM_READWRITE(eth_r, eth_w) +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START(eth_io, 32, mcpx_eth_device) + AM_RANGE(0x00000000, 0x000000007) AM_READWRITE(eth_io_r, eth_io_w) +ADDRESS_MAP_END + +mcpx_eth_device::mcpx_eth_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, MCPX_ETH, tag, owner, clock) +{ +} + +void mcpx_eth_device::device_start() +{ + pci_device::device_start(); + add_map(0x00001000, M_MEM, FUNC(mcpx_eth_device::eth_mmio)); + bank_infos[0].adr = 0xfef00000; + add_map(0x00000100, M_IO, FUNC(mcpx_eth_device::eth_io)); + bank_infos[1].adr = 0xe000; +} + +void mcpx_eth_device::device_reset() +{ + pci_device::device_reset(); +} + +READ32_MEMBER(mcpx_eth_device::eth_r) +{ + return 0; +} + +WRITE32_MEMBER(mcpx_eth_device::eth_w) +{ +} + +READ32_MEMBER(mcpx_eth_device::eth_io_r) +{ + return 0; +} + +WRITE32_MEMBER(mcpx_eth_device::eth_io_w) +{ +} + +/* + * Audio Processing Unit + */ + +DEFINE_DEVICE_TYPE(MCPX_APU, mcpx_apu_device, "mcpx_apu", "MCP APU") + +DEVICE_ADDRESS_MAP_START(apu_mmio, 32, mcpx_apu_device) + AM_RANGE(0x00000000, 0x00007ffff) AM_READWRITE(apu_r, apu_w) +ADDRESS_MAP_END + +mcpx_apu_device::mcpx_apu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, MCPX_APU, tag, owner, clock), + cpu_tag(nullptr), + cpu(nullptr) +{ +} + +void mcpx_apu_device::set_cpu_tag(const char *_cpu_tag) +{ + cpu_tag = _cpu_tag; +} + +void mcpx_apu_device::device_start() +{ + pci_device::device_start(); + add_map(0x00080000, M_MEM, FUNC(mcpx_apu_device::apu_mmio)); + bank_infos[0].adr = 0xfe800000; + memset(apust.memory, 0, sizeof(apust.memory)); + memset(apust.voices_heap_blockaddr, 0, sizeof(apust.voices_heap_blockaddr)); + memset(apust.voices_active, 0, sizeof(apust.voices_active)); + memset(apust.voices_position, 0, sizeof(apust.voices_position)); + memset(apust.voices_position_start, 0, sizeof(apust.voices_position_start)); + memset(apust.voices_position_end, 0, sizeof(apust.voices_position_end)); + memset(apust.voices_position_increment, 0, sizeof(apust.voices_position_increment)); + cpu = machine().device(cpu_tag); + apust.space = &cpu->space(); + apust.timer = timer_alloc(0); + apust.timer->enable(false); +} + +void mcpx_apu_device::device_reset() +{ + pci_device::device_reset(); +} + +void mcpx_apu_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + int cmd; + int bb, b, v; + uint64_t bv; + uint32_t phys; + + // this works only for outr2 + // value at 0x810 is modified by the firmware that has been loaded on the gp dsp + cmd = apust.space->read_dword(apust.gpdsp_address + 0x800 + 0x10); + if (cmd == 3) + apust.space->write_dword(apust.gpdsp_address + 0x800 + 0x10, 0); + /*else + logerror("Audio_APU: unexpected value at address %d\n",apust.gpdsp_address+0x800+0x10);*/ + // check all the 256 possible voices + for (b = 0; b < 4; b++) { + bv = 1; + for (bb = 0; bb < 64; bb++) { + if (apust.voices_active[b] & bv) { + v = bb + (b << 6); + apust.voices_position[v] += apust.voices_position_increment[v]; + while (apust.voices_position[v] >= apust.voices_position_end[v]) + apust.voices_position[v] = apust.voices_position_start[v] + apust.voices_position[v] - apust.voices_position_end[v] - 1000; + phys = apust.voicedata_address + 0x80 * v; + apust.space->write_dword(phys + 0x58, apust.voices_position[v] / 1000); + } + bv = bv << 1; + } + } +} + +READ32_MEMBER(mcpx_apu_device::apu_r) +{ +#ifdef LOG_AUDIO + logerror("Audio_APU: read from %08X mask %08X\n", 0xfe800000 + offset * 4, mem_mask); +#endif + if (offset == 0x20010 / 4) // some kind of internal counter or state value + return 0x20 + 4 + 8 + 0x48 + 0x80; + return apust.memory[offset]; +} + +WRITE32_MEMBER(mcpx_apu_device::apu_w) +{ + uint32_t v; + +#ifdef LOG_AUDIO + logerror("Audio_APU: write at %08X mask %08X value %08X\n", 0xfe800000 + offset * 4, mem_mask, data); +#endif + apust.memory[offset] = data; + if (offset == 0x02040 / 4) // address of memory area with scatter-gather info (gpdsp scratch dma) + apust.gpdsp_sgaddress = data; + if (offset == 0x020d4 / 4) { // block count (gpdsp) + apust.gpdsp_sgblocks = data; + apust.gpdsp_address = apust.space->read_dword(apust.gpdsp_sgaddress); // memory address of first block + apust.timer->enable(); + apust.timer->adjust(attotime::from_msec(1), 0, attotime::from_msec(1)); + } + if (offset == 0x02048 / 4) // (epdsp scratch dma) + apust.epdsp_sgaddress = data; + if (offset == 0x020dc / 4) // (epdsp) + apust.epdsp_sgblocks = data; + if (offset == 0x0204c / 4) // address of memory area with information about blocks + apust.epdsp_sgaddress2 = data; + if (offset == 0x020e0 / 4) // block count - 1 + apust.epdsp_sgblocks2 = data; + if (offset == 0x0202c / 4) { // address of memory area with 0x80 bytes for each voice + apust.voicedata_address = data; + return; + } + if (offset == 0x04024 / 4) // offset in memory area indicated by 0x204c (analog output ?) + return; + if (offset == 0x04034 / 4) // size + return; + if (offset == 0x04028 / 4) // offset in memory area indicated by 0x204c (digital output ?) + return; + if (offset == 0x04038 / 4) // size + return; + if (offset == 0x20804 / 4) { // block number for scatter-gather heap that stores sampled audio to be played + if (data >= 1024) { + logerror("Audio_APU: sg block number too high, increase size of voices_heap_blockaddr\n"); + apust.memory[offset] = 1023; + } + return; + } + if (offset == 0x20808 / 4) { // block address for scatter-gather heap that stores sampled audio to be played + apust.voices_heap_blockaddr[apust.memory[0x20804 / 4]] = data; + return; + } + if (offset == 0x202f8 / 4) { // voice number for parameters ? + apust.voice_number = data; + return; + } + if (offset == 0x202fc / 4) // 1 when accessing voice parameters 0 otherwise + return; + if (offset == 0x20304 / 4) { // format + /* + bits 28-31 sample format: + 0 8-bit pcm + 5 16-bit pcm + 10 adpcm ? + 14 24-bit pcm + 15 32-bit pcm + bits 16-20 number of channels - 1: + 0 mono + 1 stereo + */ + return; + } + if (offset == 0x2037c / 4) { // value related to sample rate + int16_t v0 = (int16_t)(data >> 16); // upper 16 bits as a signed 16 bit value + float vv = ((float)v0) / 4096.0f; // divide by 4096 + float vvv = powf(2, vv); // two to the vv + int f = vvv*48000.0f; // sample rate + apust.voices_frequency[apust.voice_number] = f; + return; + } + if (offset == 0x203a0 / 4) // start offset of data in scatter-gather heap + return; + if (offset == 0x203a4 / 4) { // first sample to play + apust.voices_position_start[apust.voice_number] = data * 1000; + return; + } + if (offset == 0x203dc / 4) { // last sample to play + apust.voices_position_end[apust.voice_number] = data * 1000; + return; + } + if (offset == 0x2010c / 4) // voice processor 0 idle 1 not idle ? + return; + if (offset == 0x20124 / 4) { // voice number to activate ? + v = apust.voice_number; + apust.voices_active[v >> 6] |= ((uint64_t)1 << (v & 63)); + apust.voices_position[v] = apust.voices_position_start[apust.voice_number]; + apust.voices_position_increment[apust.voice_number] = apust.voices_frequency[apust.voice_number]; + return; + } + if (offset == 0x20128 / 4) { // voice number to deactivate ? + v = apust.voice_number; + apust.voices_active[v >> 6] &= ~(1 << (v & 63)); + return; + } + if (offset == 0x20140 / 4) // voice number to ? + return; + if ((offset >= 0x20200 / 4) && (offset < 0x20280 / 4)) // headroom for each of the 32 mixbins + return; + if (offset == 0x20280 / 4) // hrtf headroom ? + return; +} + +/* + * AC97 Audio Controller + */ + +DEFINE_DEVICE_TYPE(MCPX_AC97_AUDIO, mcpx_ac97_audio_device, "mcpx_ac97_audio", "MCPX AC'97 Audio Codec Interface") + +DEVICE_ADDRESS_MAP_START(ac97_mmio, 32, mcpx_ac97_audio_device) + AM_RANGE(0x00000000, 0x000000fff) AM_READWRITE(ac97_audio_r, ac97_audio_w) +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START(ac97_io0, 32, mcpx_ac97_audio_device) + AM_RANGE(0x00000000, 0x0000000ff) AM_READWRITE(ac97_audio_io0_r, ac97_audio_io0_w) +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START(ac97_io1, 32, mcpx_ac97_audio_device) + AM_RANGE(0x00000000, 0x00000007f) AM_READWRITE(ac97_audio_io1_r, ac97_audio_io1_w) +ADDRESS_MAP_END + +mcpx_ac97_audio_device::mcpx_ac97_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, MCPX_AC97_AUDIO, tag, owner, clock) +{ +} + +void mcpx_ac97_audio_device::device_start() +{ + pci_device::device_start(); + add_map(0x00000100, M_IO, FUNC(mcpx_ac97_audio_device::ac97_io0)); + bank_infos[0].adr = 0xd000; + add_map(0x00000080, M_IO, FUNC(mcpx_ac97_audio_device::ac97_io1)); + bank_infos[1].adr = 0xd200; + add_map(0x00001000, M_MEM, FUNC(mcpx_ac97_audio_device::ac97_mmio)); + bank_infos[2].adr = 0xfec00000; + memset(&ac97st, 0, sizeof(ac97st)); +} + +void mcpx_ac97_audio_device::device_reset() +{ + pci_device::device_reset(); +} + +READ32_MEMBER(mcpx_ac97_audio_device::ac97_audio_r) +{ + uint32_t ret = 0; + +#ifdef LOG_AUDIO + logerror("Audio_AC3: read from %08X mask %08X\n", 0xfec00000 + offset * 4, mem_mask); +#endif + if (offset < 0x80 / 4) + { + ret = ac97st.mixer_regs[offset]; + } + if ((offset >= 0x100 / 4) && (offset <= 0x138 / 4)) + { + offset = offset - 0x100 / 4; + if (offset == 0x18 / 4) + { + ac97st.controller_regs[offset] &= ~0x02000000; // REGRST: register reset + } + if (offset == 0x30 / 4) + { + ac97st.controller_regs[offset] |= 0x100; // PCRDY: primary codec ready + } + if (offset == 0x34 / 4) + { + ac97st.controller_regs[offset] &= ~1; // CAS: codec access semaphore + } + ret = ac97st.controller_regs[offset]; + } + return ret; +} + +WRITE32_MEMBER(mcpx_ac97_audio_device::ac97_audio_w) +{ +#ifdef LOG_AUDIO + logerror("Audio_AC3: write at %08X mask %08X value %08X\n", 0xfec00000 + offset * 4, mem_mask, data); +#endif + if (offset < 0x80 / 4) + { + COMBINE_DATA(ac97st.mixer_regs + offset); + } + if ((offset >= 0x100 / 4) && (offset < 0x13c / 4)) + { + offset = offset - 0x100 / 4; + COMBINE_DATA(ac97st.controller_regs + offset); + } +} + +READ32_MEMBER(mcpx_ac97_audio_device::ac97_audio_io0_r) +{ + return 0; +} + +WRITE32_MEMBER(mcpx_ac97_audio_device::ac97_audio_io0_w) +{ +} + +READ32_MEMBER(mcpx_ac97_audio_device::ac97_audio_io1_r) +{ + return 0; +} + +WRITE32_MEMBER(mcpx_ac97_audio_device::ac97_audio_io1_w) +{ +} + +/* + * AC97 Modem Controller + */ + +DEFINE_DEVICE_TYPE(MCPX_AC97_MODEM, mcpx_ac97_modem_device, "mcpx_ac97_modem", "MCPX AC'97 Modem Controller") + +mcpx_ac97_modem_device::mcpx_ac97_modem_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, MCPX_AC97_MODEM, tag, owner, clock) +{ +} + +/* + * IDE Controller + */ + +DEFINE_DEVICE_TYPE(MCPX_IDE, mcpx_ide_device, "mcpx_ide", "MCPX IDE Controller") + +DEVICE_ADDRESS_MAP_START(mcpx_ide_io, 32, mcpx_ide_device) + AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, bmdma_r, bmdma_w) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT(mcpx_ide) + MCFG_DEVICE_ADD("ide", BUS_MASTER_IDE_CONTROLLER, 0) + MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(mcpx_ide_device, ide_interrupt)) + MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE("maincpu", AS_PROGRAM) +MACHINE_CONFIG_END + +mcpx_ide_device::mcpx_ide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, MCPX_IDE, tag, owner, clock), + m_interrupt_handler(*this) +{ +} + +void mcpx_ide_device::device_start() +{ + pci_device::device_start(); + add_map(0x00000010, M_IO, FUNC(mcpx_ide_device::mcpx_ide_io)); + bank_infos[0].adr = 0xff60; + m_interrupt_handler.resolve_safe(); +} + +void mcpx_ide_device::device_reset() +{ + pci_device::device_reset(); +} + +machine_config_constructor mcpx_ide_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME(mcpx_ide); +} + +WRITE_LINE_MEMBER(mcpx_ide_device::ide_interrupt) +{ + m_interrupt_handler(state); +} + +/* + * AGP Bridge + */ + +DEFINE_DEVICE_TYPE(NV2A_AGP, nv2a_agp_device, "nv2a_agp", "NV2A AGP Host to PCI Bridge") + +nv2a_agp_device::nv2a_agp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : agp_bridge_device(mconfig, NV2A_AGP, tag, owner, clock) +{ +} + +void nv2a_agp_device::device_start() +{ + agp_bridge_device::device_start(); +} + +void nv2a_agp_device::device_reset() +{ + agp_bridge_device::device_reset(); +} + +/* + * NV2A 3D Accelerator + */ + +DEFINE_DEVICE_TYPE(NV2A_GPU, nv2a_gpu_device, "nv2a_gpu", "NVIDIA NV2A GPU") + +DEVICE_ADDRESS_MAP_START(nv2a_mmio, 32, nv2a_gpu_device) + AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_READWRITE(geforce_r, geforce_w) +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START(nv2a_mirror, 32, nv2a_gpu_device) + AM_RANGE(0x00000000, 0x07ffffff) AM_RAM AM_READWRITE(nv2a_mirror_r, nv2a_mirror_w) +ADDRESS_MAP_END + +nv2a_gpu_device::nv2a_gpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : pci_device(mconfig, NV2A_GPU, tag, owner, clock), + nvidia_nv2a(nullptr), + cpu_tag(nullptr), + m_interrupt_handler(*this), + m_program(nullptr) +{ +} + +void nv2a_gpu_device::set_cpu_tag(const char *_cpu_tag) +{ + cpu_tag = _cpu_tag; +} + +void nv2a_gpu_device::device_start() +{ + pci_device::device_start(); + m_interrupt_handler.resolve_safe(); + add_map(0x01000000, M_MEM, FUNC(nv2a_gpu_device::nv2a_mmio)); + bank_infos[0].adr = 0xfd000000; + add_map(0x08000000, M_MEM, FUNC(nv2a_gpu_device::nv2a_mirror)); + bank_infos[1].adr = 0xf0000000; + m_program = &machine().device(cpu_tag)->space(); + nvidia_nv2a = new nv2a_renderer(machine()); + nvidia_nv2a->set_irq_callbaclk( + [&](int state) + { + m_interrupt_handler(state); + } + ); + nvidia_nv2a->start(m_program); + nvidia_nv2a->savestate_items(); +} + +void nv2a_gpu_device::device_reset() +{ + pci_device::device_reset(); +} + +READ32_MEMBER(nv2a_gpu_device::geforce_r) +{ + return nvidia_nv2a->geforce_r(space, offset, mem_mask); +} + +WRITE32_MEMBER(nv2a_gpu_device::geforce_w) +{ + nvidia_nv2a->geforce_w(space, offset, data, mem_mask); +} + +READ32_MEMBER(nv2a_gpu_device::nv2a_mirror_r) +{ + return m_program->read_dword(offset); +} + +WRITE32_MEMBER(nv2a_gpu_device::nv2a_mirror_w) +{ + m_program->write_dword(offset, data, mem_mask); +} diff --git a/src/mame/machine/xbox_usb.cpp b/src/mame/machine/xbox_usb.cpp index 41356020862..e8776dce19b 100644 --- a/src/mame/machine/xbox_usb.cpp +++ b/src/mame/machine/xbox_usb.cpp @@ -38,19 +38,15 @@ static const char *const usbregnames[] = { }; #endif -const device_type OHCI_USB_CONTROLLER = device_creator; - -ohci_usb_controller::ohci_usb_controller(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, OHCI_USB_CONTROLLER, "OHCI USB CONTROLLER", tag, owner, clock, "ohciusb", __FILE__), - m_interrupt_handler(*this) +ohci_usb_controller::ohci_usb_controller() { memset(&ohcist, 0, sizeof(ohcist)); + m_maincpu = nullptr; + irq_callback = nullptr; } -void ohci_usb_controller::device_start() +void ohci_usb_controller::start() { - m_maincpu = machine().device("maincpu"); - m_interrupt_handler.resolve_safe(); ohcist.hc_regs[HcRevision] = 0x10; ohcist.hc_regs[HcFmInterval] = 0x2edf; ohcist.hc_regs[HcLSThreshold] = 0x628; @@ -64,11 +60,10 @@ void ohci_usb_controller::device_start() for (int n = 0; n < 256; n++) ohcist.address[n].port = -1; ohcist.space = &(m_maincpu->space()); - ohcist.timer = timer_alloc(0); ohcist.timer->enable(false); } -void ohci_usb_controller::device_reset() +void ohci_usb_controller::reset() { } @@ -219,7 +214,7 @@ WRITE32_MEMBER(ohci_usb_controller::write) ohcist.hc_regs[offset] = data; } -void ohci_usb_controller::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +void ohci_usb_controller::timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { uint32_t hcca; uint32_t plh; @@ -708,7 +703,7 @@ void ohci_usb_controller::device_timer(emu_timer &timer, device_timer_id id, int usb_ohci_interrupts(); } -void ohci_usb_controller::usb_ohci_plug(int port, ohci_function_device *function) +void ohci_usb_controller::usb_ohci_plug(int port, ohci_function *function) { if ((port > 0) && (port <= 4)) { ohcist.ports[port].function = function; @@ -726,12 +721,12 @@ void ohci_usb_controller::usb_ohci_interrupts() { if (((ohcist.hc_regs[HcInterruptStatus] & ohcist.hc_regs[HcInterruptEnable]) != 0) && ((ohcist.hc_regs[HcInterruptEnable] & MasterInterruptEnable) != 0)) { - //pic8259_1->ir1_w(1); - m_interrupt_handler(1); + //m_interrupt_handler(1); + irq_callback(1); } else { - //pic8259_1->ir1_w(0); - m_interrupt_handler(0); + //m_interrupt_handler(0); + irq_callback(0); } } @@ -857,13 +852,12 @@ void ohci_usb_controller::usb_ohci_device_address_changed(int old_address, int n * ohci device base class */ -ohci_function_device::ohci_function_device() +ohci_function::ohci_function() { } -void ohci_function_device::initialize(running_machine &machine, ohci_usb_controller *usb_bus_manager) +void ohci_function::initialize(running_machine &machine) { - busmanager = usb_bus_manager; state = DefaultState; descriptors = auto_alloc_array(machine, uint8_t, 1024); descriptors_pos = 0; @@ -886,7 +880,13 @@ void ohci_function_device::initialize(running_machine &machine, ohci_usb_control latest_alternate = nullptr; } -void ohci_function_device::add_device_descriptor(const USBStandardDeviceDescriptor &descriptor) +void ohci_function::set_bus_manager(ohci_usb_controller *usb_bus_manager) +{ + busmanager = usb_bus_manager; +} + + +void ohci_function::add_device_descriptor(const USBStandardDeviceDescriptor &descriptor) { uint8_t *p = descriptors + descriptors_pos; @@ -912,7 +912,7 @@ void ohci_function_device::add_device_descriptor(const USBStandardDeviceDescript memcpy(&device_descriptor, &descriptor, sizeof(USBStandardDeviceDescriptor)); } -void ohci_function_device::add_configuration_descriptor(const USBStandardConfigurationDescriptor &descriptor) +void ohci_function::add_configuration_descriptor(const USBStandardConfigurationDescriptor &descriptor) { usb_device_configuration *c = new usb_device_configuration; uint8_t *p = descriptors + descriptors_pos; @@ -935,10 +935,10 @@ void ohci_function_device::add_configuration_descriptor(const USBStandardConfigu latest_alternate = nullptr; } -void ohci_function_device::add_interface_descriptor(const USBStandardInterfaceDescriptor &descriptor) +void ohci_function::add_interface_descriptor(const USBStandardInterfaceDescriptor &descriptor) { - usb_device_interface *ii; - usb_device_interface_alternate *aa; + usb_device_interfac *ii; + usb_device_interfac_alternate *aa; uint8_t *p = descriptors + descriptors_pos; if (latest_configuration == nullptr) @@ -960,7 +960,7 @@ void ohci_function_device::add_interface_descriptor(const USBStandardInterfaceDe { (*i)->size += descriptor.bLength; latest_configuration->interfaces.front()->size += descriptor.bLength; - aa = new usb_device_interface_alternate; + aa = new usb_device_interfac_alternate; memcpy(&aa->interface_descriptor, &descriptor, sizeof(USBStandardInterfaceDescriptor)); aa->position = p; aa->size = descriptor.bLength; @@ -969,8 +969,8 @@ void ohci_function_device::add_interface_descriptor(const USBStandardInterfaceDe return; } } - ii = new usb_device_interface; - aa = new usb_device_interface_alternate; + ii = new usb_device_interfac; + aa = new usb_device_interfac_alternate; memcpy(&aa->interface_descriptor, &descriptor, sizeof(USBStandardInterfaceDescriptor)); aa->position = p; aa->size = descriptor.bLength; @@ -982,7 +982,7 @@ void ohci_function_device::add_interface_descriptor(const USBStandardInterfaceDe latest_configuration->interfaces.push_front(ii); } -void ohci_function_device::add_endpoint_descriptor(const USBStandardEndpointDescriptor &descriptor) +void ohci_function::add_endpoint_descriptor(const USBStandardEndpointDescriptor &descriptor) { uint8_t *p = descriptors + descriptors_pos; @@ -1002,7 +1002,7 @@ void ohci_function_device::add_endpoint_descriptor(const USBStandardEndpointDesc latest_configuration->size += descriptor.bLength; } -void ohci_function_device::add_string_descriptor(const uint8_t *descriptor) +void ohci_function::add_string_descriptor(const uint8_t *descriptor) { usb_device_string *ss; int len = descriptor[0]; @@ -1018,7 +1018,7 @@ void ohci_function_device::add_string_descriptor(const uint8_t *descriptor) //latest_configuration->size += len; } -void ohci_function_device::select_configuration(int index) +void ohci_function::select_configuration(int index) { configurationvalue = index; for (auto c = configurations.begin(); c != configurations.end(); ++c) @@ -1049,7 +1049,7 @@ void ohci_function_device::select_configuration(int index) } } -void ohci_function_device::select_alternate(int interfacei, int index) +void ohci_function::select_alternate(int interfacei, int index) { // among all the interfaces in the currently selected configuration, consider interface interfacei for (auto i = selected_configuration->interfaces.begin(); i != selected_configuration->interfaces.end(); ++i) @@ -1083,7 +1083,7 @@ void ohci_function_device::select_alternate(int interfacei, int index) } } -int ohci_function_device::find_alternate(int interfacei) +int ohci_function::find_alternate(int interfacei) { // find the active alternate setting for interface inteerfacei for (auto i = selected_configuration->interfaces.begin(); i != selected_configuration->interfaces.end(); ++i) @@ -1099,13 +1099,13 @@ int ohci_function_device::find_alternate(int interfacei) return 0; } -uint8_t *ohci_function_device::position_device_descriptor(int &size) +uint8_t *ohci_function::position_device_descriptor(int &size) { size = descriptors_pos; // descriptors[0]; return descriptors; } -uint8_t *ohci_function_device::position_configuration_descriptor(int index, int &size) +uint8_t *ohci_function::position_configuration_descriptor(int index, int &size) { for (auto c = configurations.begin(); c != configurations.end(); ++c) { @@ -1119,7 +1119,7 @@ uint8_t *ohci_function_device::position_configuration_descriptor(int index, int return nullptr; } -uint8_t *ohci_function_device::position_string_descriptor(int index, int &size) +uint8_t *ohci_function::position_string_descriptor(int index, int &size) { int i = 0; @@ -1136,13 +1136,13 @@ uint8_t *ohci_function_device::position_string_descriptor(int index, int &size) return nullptr; } -void ohci_function_device::execute_reset() +void ohci_function::execute_reset() { address = 0; newaddress = 0; } -int ohci_function_device::execute_transfer(int endpoint, int pid, uint8_t *buffer, int size) +int ohci_function::execute_transfer(int endpoint, int pid, uint8_t *buffer, int size) { int descriptortype, descriptorindex; @@ -1386,11 +1386,11 @@ const USBStandardInterfaceDescriptor ohci_game_controller_device::intdesc = { 9, const USBStandardEndpointDescriptor ohci_game_controller_device::enddesc82 = { 7,5,0x82,3,0x20,4 }; const USBStandardEndpointDescriptor ohci_game_controller_device::enddesc02 = { 7,5,0x02,3,0x20,4 }; -const device_type OHCI_GAME_CONTROLLER = device_creator; +DEFINE_DEVICE_TYPE(OHCI_GAME_CONTROLLER, ohci_game_controller_device, "ohci_gc", "OHCI Game Controller") ohci_game_controller_device::ohci_game_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, OHCI_GAME_CONTROLLER, "OHCI Game Controller", tag, owner, clock, "ohci_gc", __FILE__), - ohci_function_device(), + device_t(mconfig, OHCI_GAME_CONTROLLER, tag, owner, clock), + ohci_function(), m_ThumbstickLh(*this, "ThumbstickLh"), m_ThumbstickLv(*this, "ThumbstickLv"), m_ThumbstickRh(*this, "ThumbstickRh"), @@ -1408,9 +1408,9 @@ ohci_game_controller_device::ohci_game_controller_device(const machine_config &m { } -void ohci_game_controller_device::initialize(running_machine &machine, ohci_usb_controller *usb_bus_manager) +void ohci_game_controller_device::initialize(running_machine &machine) { - ohci_function_device::initialize(machine, usb_bus_manager); + ohci_function::initialize(machine); add_device_descriptor(devdesc); add_configuration_descriptor(condesc); add_interface_descriptor(intdesc); @@ -1519,8 +1519,3 @@ ioport_constructor ohci_game_controller_device::device_input_ports() const { return INPUT_PORTS_NAME(xbox_controller); } - -WRITE_LINE_MEMBER(xbox_base_state::xbox_ohci_usb_interrupt_changed) -{ - xbox_base_devs.pic8259_1->ir1_w(state); -} diff --git a/src/mame/machine/z80bin.cpp b/src/mame/machine/z80bin.cpp index 5a683273881..6fcf9998a36 100644 --- a/src/mame/machine/z80bin.cpp +++ b/src/mame/machine/z80bin.cpp @@ -8,7 +8,7 @@ memory -------------------------------------------------*/ -image_init_result z80bin_load_file(device_image_interface *image, address_space &space, const char *file_type, uint16_t *exec_addr, uint16_t *start_addr, uint16_t *end_addr ) +image_init_result z80bin_load_file(device_image_interface *image, address_space &space, const char *file_type, uint16_t *exec_addr, uint16_t *start_addr, uint16_t *end_addr) { int ch; uint16_t args[3]; diff --git a/src/mame/machine/z80bin.h b/src/mame/machine/z80bin.h index b47aa9fa76c..904b89c9325 100644 --- a/src/mame/machine/z80bin.h +++ b/src/mame/machine/z80bin.h @@ -8,11 +8,11 @@ *********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_Z80BIN_H +#define MAME_MACHINE_Z80BIN_H -#ifndef __Z80_BIN__ -#define __Z80_BIN__ +#pragma once -image_init_result z80bin_load_file(device_image_interface *image, address_space &space, const char *file_type, uint16_t *exec_addr, uint16_t *start_addr, uint16_t *end_addr ); +image_init_result z80bin_load_file(device_image_interface *image, address_space &space, const char *file_type, uint16_t *exec_addr, uint16_t *start_addr, uint16_t *end_addr); -#endif +#endif // MAME_MACHINE_Z80BIN_H diff --git a/src/mame/machine/z80ne.cpp b/src/mame/machine/z80ne.cpp index a357d9dd089..2f1f2c9bd79 100644 --- a/src/mame/machine/z80ne.cpp +++ b/src/mame/machine/z80ne.cpp @@ -19,8 +19,8 @@ /* Devices */ #include "imagedev/flopdrv.h" -#define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +//#define VERBOSE 1 +#include "logmacro.h" @@ -170,8 +170,8 @@ void z80ne_state::device_timer(emu_timer &timer, device_timer_id id, int param, void z80ne_state::reset_lx388() { - m_lx388_kr2376->set_input_pin( KR2376_DSII, 0); - m_lx388_kr2376->set_input_pin( KR2376_PII, 0); + m_lx388_kr2376->set_input_pin( kr2376_device::KR2376_DSII, 0); + m_lx388_kr2376->set_input_pin( kr2376_device::KR2376_PII, 0); } void z80ne_state::reset_lx382_banking() @@ -241,7 +241,7 @@ MACHINE_RESET_MEMBER(z80ne_state,z80ne_base) { int i; - LOG(("In machine_reset z80ne_base\n")); + LOG("In machine_reset z80ne_base\n"); for ( i=0; iadjust(attotime::from_hz(1000), 0, attotime::from_hz(1000)); } MACHINE_START_MEMBER(z80ne_state,z80net) { MACHINE_START_CALL_MEMBER( z80ne ); - LOG(("In MACHINE_START z80net\n")); + LOG("In MACHINE_START z80net\n"); } MACHINE_START_MEMBER(z80ne_state,z80netb) { MACHINE_START_CALL_MEMBER( z80net ); - LOG(("In MACHINE_START z80netb\n")); + LOG("In MACHINE_START z80netb\n"); } MACHINE_START_MEMBER(z80ne_state,z80netf) { MACHINE_START_CALL_MEMBER( z80net ); - LOG(("In MACHINE_START z80netf\n")); + LOG("In MACHINE_START z80netf\n"); } /****************************************************************************** @@ -584,7 +585,7 @@ READ8_MEMBER(z80ne_state::lx388_data_r) uint8_t data; data = m_lx388_kr2376->data_r(space, 0) & 0x7f; - data |= m_lx388_kr2376->get_output_pin(KR2376_SO) << 7; + data |= m_lx388_kr2376->get_output_pin(kr2376_device::KR2376_SO) << 7; return data; } @@ -650,12 +651,12 @@ READ8_MEMBER(z80ne_state::lx390_reset_bank) pc = m_maincpu->pc(); if((pc >= 0xf000) && (pc <=0xffff)) { - LOG(("lx390_reset_bank, reset memory bank 1\n")); + LOG("lx390_reset_bank, reset memory bank 1\n"); m_bank1->set_entry(0); /* RAM at 0x0000 (bank 1) */ } else { - LOG(("lx390_reset_bank, bypass because in debugger\n")); + LOG("lx390_reset_bank, bypass because in debugger\n"); } return 0xff; } @@ -668,19 +669,19 @@ READ8_MEMBER(z80ne_state::lx390_fdc_r) { case 0: d = m_wd1771->status_r(space, 0) ^ 0xff; - LOG(("lx390_fdc_r, WD17xx status: %02x\n", d)); + LOG("lx390_fdc_r, WD17xx status: %02x\n", d); break; case 1: d = m_wd1771->track_r(space, 0) ^ 0xff; - LOG(("lx390_fdc_r, WD17xx track: %02x\n", d)); + LOG("lx390_fdc_r, WD17xx track: %02x\n", d); break; case 2: d = m_wd1771->sector_r(space, 0) ^ 0xff; - LOG(("lx390_fdc_r, WD17xx sector: %02x\n", d)); + LOG("lx390_fdc_r, WD17xx sector: %02x\n", d); break; case 3: d = m_wd1771->data_r(space, 0) ^ 0xff; - LOG(("lx390_fdc_r, WD17xx data3: %02x\n", d)); + LOG("lx390_fdc_r, WD17xx data3: %02x\n", d); break; case 6: d = 0xff; @@ -688,7 +689,7 @@ READ8_MEMBER(z80ne_state::lx390_fdc_r) break; case 7: d = m_wd1771->data_r(space, 3) ^ 0xff; - LOG(("lx390_fdc_r, WD17xx data7, force: %02x\n", d)); + LOG("lx390_fdc_r, WD17xx data7, force: %02x\n", d); break; default: d = 0x00; @@ -704,7 +705,7 @@ WRITE8_MEMBER(z80ne_state::lx390_fdc_w) switch(offset) { case 0: - LOG(("lx390_fdc_w, WD17xx command: %02x\n", d)); + LOG("lx390_fdc_w, WD17xx command: %02x\n", d); m_wd1771->cmd_w(space, offset, d ^ 0xff); if (m_wd17xx_state.drive & 1) output().set_value("drv0", 2); @@ -712,23 +713,23 @@ WRITE8_MEMBER(z80ne_state::lx390_fdc_w) output().set_value("drv1", 2); break; case 1: - LOG(("lx390_fdc_w, WD17xx track: %02x\n", d)); + LOG("lx390_fdc_w, WD17xx track: %02x\n", d); m_wd1771->track_w(space, offset, d ^ 0xff); break; case 2: - LOG(("lx390_fdc_w, WD17xx sector: %02x\n", d)); + LOG("lx390_fdc_w, WD17xx sector: %02x\n", d); m_wd1771->sector_w(space, offset, d ^ 0xff); break; case 3: m_wd1771->data_w(space, 0, d ^ 0xff); - LOG(("lx390_fdc_w, WD17xx data3: %02x\n", d)); + LOG("lx390_fdc_w, WD17xx data3: %02x\n", d); break; case 6: - LOG(("lx390_fdc_w, motor_w: %02x\n", d)); + LOG("lx390_fdc_w, motor_w: %02x\n", d); lx390_motor_w(space, 0, d); break; case 7: - LOG(("lx390_fdc_w, WD17xx data7, force: %02x\n", d)); + LOG("lx390_fdc_w, WD17xx data7, force: %02x\n", d); m_wd1771->data_w(space, 3, d ^ 0xff); break; } diff --git a/src/mame/machine/znmcu.cpp b/src/mame/machine/znmcu.cpp index 8e4d1d8ba2c..1b21d956e1b 100644 --- a/src/mame/machine/znmcu.cpp +++ b/src/mame/machine/znmcu.cpp @@ -3,10 +3,10 @@ #include "emu.h" #include "znmcu.h" -const device_type ZNMCU = device_creator; +DEFINE_DEVICE_TYPE(ZNMCU, znmcu_device, "znmcu", "Sony ZN MCU") znmcu_device::znmcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, ZNMCU, "Sony ZN MCU", tag, owner, clock, "znmcu", __FILE__), + device_t(mconfig, ZNMCU, tag, owner, clock), m_dsw_handler(*this), m_analog1_handler(*this), m_analog2_handler(*this), diff --git a/src/mame/machine/znmcu.h b/src/mame/machine/znmcu.h index b7c19c89331..2c97e21a128 100644 --- a/src/mame/machine/znmcu.h +++ b/src/mame/machine/znmcu.h @@ -1,12 +1,12 @@ // license:BSD-3-Clause // copyright-holders:smf -#pragma once +#ifndef MAME_MACHINE_ZNMCU_H +#define MAME_MACHINE_ZNMCU_H -#ifndef __ZNMCU_H__ -#define __ZNMCU_H__ +#pragma once -extern const device_type ZNMCU; +DECLARE_DEVICE_TYPE(ZNMCU, znmcu_device) #define MCFG_ZNMCU_DATAOUT_HANDLER(_devcb) \ devcb = &znmcu_device::set_dataout_handler(*device, DEVCB_##_devcb); @@ -29,11 +29,11 @@ public: znmcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration helpers - template static devcb_base &set_dsw_handler(device_t &device, _Object object) { return downcast(device).m_dsw_handler.set_callback(object); } - template static devcb_base &set_analog1_handler(device_t &device, _Object object) { return downcast(device).m_analog1_handler.set_callback(object); } - template static devcb_base &set_analog2_handler(device_t &device, _Object object) { return downcast(device).m_analog2_handler.set_callback(object); } - template static devcb_base &set_dataout_handler(device_t &device, _Object object) { return downcast(device).m_dataout_handler.set_callback(object); } - template static devcb_base &set_dsr_handler(device_t &device, _Object object) { return downcast(device).m_dsr_handler.set_callback(object); } + template static devcb_base &set_dsw_handler(device_t &device, Object &&cb) { return downcast(device).m_dsw_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_analog1_handler(device_t &device, Object &&cb) { return downcast(device).m_analog1_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_analog2_handler(device_t &device, Object &&cb) { return downcast(device).m_analog2_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_dataout_handler(device_t &device, Object &&cb) { return downcast(device).m_dataout_handler.set_callback(std::forward(cb)); } + template static devcb_base &set_dsr_handler(device_t &device, Object &&cb) { return downcast(device).m_dsr_handler.set_callback(std::forward(cb)); } WRITE_LINE_MEMBER(write_select); WRITE_LINE_MEMBER(write_clock); @@ -60,4 +60,4 @@ private: emu_timer *m_mcu_timer; }; -#endif +#endif // MAME_MACHINE_ZNMCU_H diff --git a/src/mame/machine/zorbakbd.cpp b/src/mame/machine/zorbakbd.cpp index b0aa346a688..f552c3014e7 100644 --- a/src/mame/machine/zorbakbd.cpp +++ b/src/mame/machine/zorbakbd.cpp @@ -260,7 +260,7 @@ ROM_END } // anonymous namespace -device_type const ZORBA_KEYBOARD = device_creator; +DEFINE_DEVICE_TYPE(ZORBA_KEYBOARD, zorba_keyboard_device, "zorba_kbd", "Zorba Keyboard") zorba_keyboard_device::zorba_keyboard_device( @@ -268,15 +268,7 @@ zorba_keyboard_device::zorba_keyboard_device( char const *tag, device_t *owner, uint32_t clock) - : device_t( - mconfig, - ZORBA_KEYBOARD, - "Zorba Keyboard", - tag, - owner, - clock, - "zorba_kbd", - __FILE__) + : device_t(mconfig, ZORBA_KEYBOARD, tag, owner, clock) , m_rows(*this, "ROW%u", 0) , m_beeper(*this, "beeper") , m_rxd_cb(*this) diff --git a/src/mame/machine/zorbakbd.h b/src/mame/machine/zorbakbd.h index 6d03fc5a9c5..451e4102d8d 100644 --- a/src/mame/machine/zorbakbd.h +++ b/src/mame/machine/zorbakbd.h @@ -3,10 +3,12 @@ #ifndef MAME_MACHINE_ZORBAKBD_H #define MAME_MACHINE_ZORBAKBD_H +#pragma once + #include "sound/beep.h" -extern device_type const ZORBA_KEYBOARD; +DECLARE_DEVICE_TYPE(ZORBA_KEYBOARD, zorba_keyboard_device) #define MCFG_ZORBA_KEYBOARD_RXD_CB(cb) \ zorba_keyboard_device::set_rxd_cb(*device, DEVCB_##cb); @@ -14,8 +16,8 @@ extern device_type const ZORBA_KEYBOARD; class zorba_keyboard_device : public device_t { public: - template static devcb_base &set_rxd_cb(device_t &device, Obj &&object) - { return downcast(device).m_rxd_cb.set_callback(std::forward(object)); } + template static devcb_base &set_rxd_cb(device_t &device, Obj &&cb) + { return downcast(device).m_rxd_cb.set_callback(std::forward(cb)); } zorba_keyboard_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); diff --git a/src/mame/machine/zs01.cpp b/src/mame/machine/zs01.cpp index 57d938939d3..75a552745b6 100644 --- a/src/mame/machine/zs01.cpp +++ b/src/mame/machine/zs01.cpp @@ -28,10 +28,10 @@ inline void ATTR_PRINTF( 3, 4 ) zs01_device::verboselog( int n_level, const char } // device type definition -const device_type ZS01 = device_creator; +DEFINE_DEVICE_TYPE(ZS01, zs01_device, "zs01", "Konami ZS01 PIC") zs01_device::zs01_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock ) - : device_t( mconfig, ZS01, "Konami ZS01 PIC", tag, owner, clock, "zs01", __FILE__ ), + : device_t(mconfig, ZS01, tag, owner, clock), device_nvram_interface(mconfig, *this), m_region(*this, DEVICE_SELF), m_cs( 0 ), diff --git a/src/mame/machine/zs01.h b/src/mame/machine/zs01.h index 2eb0dca8049..60611ade967 100644 --- a/src/mame/machine/zs01.h +++ b/src/mame/machine/zs01.h @@ -6,11 +6,11 @@ * Secure SerialFlash * */ +#ifndef MAME_MACHINE_ZS01_H +#define MAME_MACHINE_ZS01_H #pragma once -#ifndef __ZS01_H__ -#define __ZS01_H__ #include "machine/ds2401.h" @@ -97,6 +97,6 @@ private: // device type definition -extern const device_type ZS01; +DECLARE_DEVICE_TYPE(ZS01, zs01_device) -#endif +#endif // MAME_MACHINE_ZS01_H diff --git a/src/mame/machine/zx8302.cpp b/src/mame/machine/zx8302.cpp index e4680ef865f..5d17d2c1e19 100644 --- a/src/mame/machine/zx8302.cpp +++ b/src/mame/machine/zx8302.cpp @@ -19,10 +19,12 @@ */ #include "emu.h" -#include -#include "machine/microdrv.h" #include "zx8302.h" +#include "machine/microdrv.h" + +#include + //************************************************************************** @@ -41,7 +43,7 @@ static const int RTC_BASE_ADJUST = 283996800; // DEVICE DEFINITIONS //************************************************************************** -const device_type ZX8302 = device_creator; +DEFINE_DEVICE_TYPE(ZX8302, zx8302_device, "zx8302", "Sinclair ZX8302") //************************************************************************** // INLINE HELPERS @@ -128,7 +130,7 @@ inline void zx8302_device::transmit_ipc_data() //------------------------------------------------- zx8302_device::zx8302_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ZX8302, "Sinclair ZX8302", tag, owner, clock, "zx8302", __FILE__), + : device_t(mconfig, ZX8302, tag, owner, clock), device_serial_interface(mconfig, *this), m_rtc_clock(0), m_out_ipl1l_cb(*this), diff --git a/src/mame/machine/zx8302.h b/src/mame/machine/zx8302.h index 679438cfa0e..4ada67efb8c 100644 --- a/src/mame/machine/zx8302.h +++ b/src/mame/machine/zx8302.h @@ -29,10 +29,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_MACHINE_ZX8302_H +#define MAME_MACHINE_ZX8302_H -#ifndef __ZX8302__ -#define __ZX8302__ +#pragma once @@ -100,20 +100,20 @@ public: zx8302_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void set_rtc_clock(device_t &device, int rtc_clock) { downcast(device).m_rtc_clock = rtc_clock; } - template static devcb_base &set_out_ipl1l_callback(device_t &device, _Object object) { return downcast(device).m_out_ipl1l_cb.set_callback(object); } - template static devcb_base &set_out_baudx4_callback(device_t &device, _Object object) { return downcast(device).m_out_baudx4_cb.set_callback(object); } - template static devcb_base &set_out_comdata_callback(device_t &device, _Object object) { return downcast(device).m_out_comdata_cb.set_callback(object); } - template static devcb_base &set_out_txd1_callback(device_t &device, _Object object) { return downcast(device).m_out_txd1_cb.set_callback(object); } - template static devcb_base &set_out_txd2_callback(device_t &device, _Object object) { return downcast(device).m_out_txd2_cb.set_callback(object); } - template static devcb_base &set_out_netout_callback(device_t &device, _Object object) { return downcast(device).m_out_netout_cb.set_callback(object); } - template static devcb_base &set_out_mdselck_callback(device_t &device, _Object object) { return downcast(device).m_out_mdselck_cb.set_callback(object); } - template static devcb_base &set_out_mdseld_callback(device_t &device, _Object object) { return downcast(device).m_out_mdseld_cb.set_callback(object); } - template static devcb_base &set_out_mdrdw_callback(device_t &device, _Object object) { return downcast(device).m_out_mdrdw_cb.set_callback(object); } - template static devcb_base &set_out_erase_callback(device_t &device, _Object object) { return downcast(device).m_out_erase_cb.set_callback(object); } - template static devcb_base &set_out_raw1_callback(device_t &device, _Object object) { return downcast(device).m_out_raw1_cb.set_callback(object); } - template static devcb_base &set_in_raw1_callback(device_t &device, _Object object) { return downcast(device).m_in_raw1_cb.set_callback(object); } - template static devcb_base &set_out_raw2_callback(device_t &device, _Object object) { return downcast(device).m_out_raw2_cb.set_callback(object); } - template static devcb_base &set_in_raw2_callback(device_t &device, _Object object) { return downcast(device).m_in_raw2_cb.set_callback(object); } + template static devcb_base &set_out_ipl1l_callback(device_t &device, Object &&cb) { return downcast(device).m_out_ipl1l_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_baudx4_callback(device_t &device, Object &&cb) { return downcast(device).m_out_baudx4_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_comdata_callback(device_t &device, Object &&cb) { return downcast(device).m_out_comdata_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_txd1_callback(device_t &device, Object &&cb) { return downcast(device).m_out_txd1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_txd2_callback(device_t &device, Object &&cb) { return downcast(device).m_out_txd2_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_netout_callback(device_t &device, Object &&cb) { return downcast(device).m_out_netout_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_mdselck_callback(device_t &device, Object &&cb) { return downcast(device).m_out_mdselck_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_mdseld_callback(device_t &device, Object &&cb) { return downcast(device).m_out_mdseld_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_mdrdw_callback(device_t &device, Object &&cb) { return downcast(device).m_out_mdrdw_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_erase_callback(device_t &device, Object &&cb) { return downcast(device).m_out_erase_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_raw1_callback(device_t &device, Object &&cb) { return downcast(device).m_out_raw1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_in_raw1_callback(device_t &device, Object &&cb) { return downcast(device).m_in_raw1_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_out_raw2_callback(device_t &device, Object &&cb) { return downcast(device).m_out_raw2_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_in_raw2_callback(device_t &device, Object &&cb) { return downcast(device).m_in_raw2_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( rtc_r ); DECLARE_WRITE8_MEMBER( rtc_w ); @@ -259,4 +259,4 @@ extern const device_type ZX8302; -#endif +#endif // MAME_MACHINE_ZX8302_H diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 1720702adef..07b296ce621 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -127,6 +127,7 @@ galmonst // (c) Laguna S.A. galxwars // (c) 1979 Universal galxwars2 // (c) 1979 Universal galxwarst // (c) 1979 Taito? +galxwarst2 // (c) 1979 Taito grescue // bootleg? gunchamp // (c) 1980 Model Racing indianbt // (c) 1980 Taito @@ -212,12 +213,14 @@ spacewr3 // bootleg spacmiss // bootleg? spceking // (c) 1978 Leijac Corporation (Konami) spcewarl // (c) 1979 Leijac Corporation (Konami) +spcewarla // spcewars // (c) 1978 Sanritsu spclaser // (c) 1980 GamePlan (Taito) starw // bootleg starw1 // bootleg steelwkr // (c) 1980 Taito superinv // bootleg +swipeout // bootleg tst_invd // Test ROM ultrainv // vortex // 852 [1980] Zilec Electronics Ltd. @@ -910,6 +913,10 @@ wbbc97 // (c) 1997 Comad @source:age_candy.cpp age_cand // AGE Candy Crane +@source:agat.cpp +agat7 // Agat-7 +agat9 // Agat-9 + @source:aim65.cpp aim65 // Rockwell AIM65 @@ -1073,6 +1080,7 @@ pstlpkr1 // punchy // punchy3 // usafootb // +usafootba // wrldtour // wrldtour2 // wrldtour3 // @@ -1088,9 +1096,6 @@ am_mg35i // (c) Amatic am_mg3a // (c) 2000 Amatic suprstar // (c) 1996 Amatic -@source:amazonlf.cpp -crospuzl // - @source:ambush.cpp ambush // (c) 1983 ambushh // (c) 1983 @@ -1216,8 +1221,6 @@ apple1 // Jul 1976 Apple 1 @source:apple2.cpp ace100 // ??? 1982 Franklin Ace 100 -agat7 // Agat-7 -agat9 // Agat-9 am64 // 1985 ASEM AM 64 (motherboard is marked AM-100 but it boots as "AM 64") apple2 // Apr 1977 Apple ][ apple2jp // ??? ???? Apple ][j+ @@ -1232,6 +1235,7 @@ space84 // 1985 IBS/ComputerTechnik Space 84 uniap2en // 1982 Unitron AP II (in English) uniap2pt // 1982 Unitron AP II (in Brazilian Portuguese) uniap2ti // 1982 Unitron AP II+ (Teclado Inteligente) +craft2p // 1982 Craft? @source:apple2e.cpp apple2c // Apr 1984 Apple //c @@ -1350,8 +1354,8 @@ butasanj // (c) 1987 Jaleco valtric // (c) 1986 Jaleco @source:aristmk4.cpp -3bagflnz // (c) 1994 -3bagflvt // (c) 1994 +3bagflnz // (c) 1996 +3bagflvt // (c) 1996 86lions // (c) 1985? arcwins // (c) 1996 autmoon // (c) 1999 @@ -1359,8 +1363,8 @@ blkrhino // (c) 1996 cgold // (c) 1986 Ainsworth Nominees P.L. cgold2 // (c) 1995 clkwise // (c) 1986 Ainsworth Nominees P.L. -coralr2 // (c) 2002 -eforest // (c) 1994 +coralr2 // (c) 2000 +eforest // (c) 1996 eforesta // (c) 1995 eforestb // (c) 1996 ffortune // (c) 1998 @@ -1392,10 +1396,12 @@ bootsctn // (c) 1998 bootsctnu // (c) 1999 bootsctnua // (c) 1999 bparty // (c) 2000 +bpartya // (c) 2000 bumblbug // (c) 1996 bumblbugql // (c) 1996 bumblbugu // (c) 1997 buttdeli // (c) 1995 +canrose // (c) 1996 cashcat // (c) 1998 cashcata // (c) 1997 cashcatnz // (c) 1999 @@ -1404,6 +1410,7 @@ cashchamu // (c) 1996 cashchama // (c) 1998 cashchamnz // (c) 1998 cashcra5 // (c) 1997 +cashcra5a // (c) 1997 chariotc // (c) 1998 chariotcv // (c) 1998 checkma5 // (c) 2001 @@ -1415,6 +1422,7 @@ cuckoo // (c) 1998 cuckoou // (c) 2000 dstbloom // (c) 1995 dstblooma // (c) 1995 +diamdest // (c) 2000 diamdove // (c) 1999 dmdfever // (c) 1996 dimtouch // (c) 1997 @@ -1428,11 +1436,14 @@ dolphntrceb // (c) 1999 dreamwv // (c) 1997 drgneye // (c) 1997 dynajack // (c) 2000 +dynajacku // (c) 2001 eldorda5 // (c) 1998 eforsta5 // (c) 1995 +eforsta5ce // (c) 2000 eforsta5u // (c) 1997 fastfort // (c) 1998 fortellr // (c) 2000 +fortfvr // (c) 2001 gambler // (c) 1998 geisha // (c) 2001 genmagi // (c) 1999 @@ -1445,17 +1456,21 @@ incasun // (c) 1999 incasunsp // (c) 1999 incasunnz // (c) 2000 incasunu // (c) 2000 +incasunua // (c) 2000 indrema5 // (c) 1998 +jumpbean // (c) 1996 jumpjoey // (c) 1996 jungjuic // (c) 1996 kgalah // (c) 1995 kgalaha // (c) 1995 kgbirda5 // (c) 1994 koalamnt // (c) 2001 +koalamnta // (c) 2001 kookabuk // (c) 1998 locoloot // (c) 1997 locoloota // (c) 1997 locolootnz // (c) 1998 +locolootu // (c) 2001 lonewolf // (c) 1997 luckyclo // (c) 1995 mgarden // (c) 1997 @@ -1468,6 +1483,7 @@ mammothm // (c) 1997 marmagic // (c) 2000 marmagicu // (c) 2000 marmagicua // (c) 2000 +marmagicub // (c) 2000 minemine // (c) 1996 minemineu // (c) 1996 monmouse // (c) 1997 @@ -1475,8 +1491,11 @@ monmousea // (c) 1997 montree // (c) 2001 mountmon // (c) 1996 mountmona // (c) 1996 +mountmonce // (c) 2001 +mountmonu // (c) 2001 multidrw // (c) 2000 mystgard // (c) 1996 +one4all // (c) 2001 orchidms // (c) 1999 orchidmsa // (c) 1999 oscara5 // (c) 1996 @@ -1485,11 +1504,13 @@ pantmag // (c) 1999 pantmaga // (c) 1999 partygrs // (c) 2001 partygrsa // (c) 2001 +partygrsb // (c) 2001 peaflut // (c) 2000 pengpay // (c) 1997 pengpaya // (c) 1996 pengpayb // (c) 1997 pengpayc // (c) 1995 +pengpayd // (c) 1995 pengpayu // (c) 1997 pengpuck // (c) 2001 penpir // (c) 1998 @@ -1508,6 +1529,7 @@ qnilec // (c) 1997 qnilece // (c) 2001 qnilecea // (c) 2001 qniled // (c) 1999 +qnilenl // (c) 2000 qnileu // (c) 1997 qnilev // (c) 1997 qnilemax // (c) 1999 @@ -1520,8 +1542,10 @@ retrsama // (c) 1997 retrsamb // (c) 1997 rushrst // (c) 1997 sbuk2 // (c) 1999 +sbuk2a // (c) 1995 sbuk3 // (c) 1998 sbuk3a // (c) 1998 +sldeluxe // (c) 2001 slvrwolf // (c) 1998 snowcat // (c) 1996 sumospin // (c) 1997 @@ -1534,6 +1558,7 @@ thndha // (c) 1996 thor // (c) 1996 topbana // (c) 1997 toutango // (c) 1998 +toutangonl // (c) 1999 trstrove // (c) 2000 tritreat // (c) 2002 trojhors // (c) 2001 @@ -1542,6 +1567,7 @@ trpdlghtu // (c) 1997 unicornd // (c) 1998 unicornda // (c) 1998 unicorndnz // (c) 2000 +unicorndu // (c) 2001 wamazon // (c) 1996 wamazona // (c) 1996 wamazonv // (c) 1996 @@ -1550,253 +1576,268 @@ wildbill // (c) 1996 wldangel // (c) 1996 wcougar // (c) 1996 wcougaru // (c) 1997 +wcoyote // (c) 2001 wizways // (c) 1996 wnpost // (c) 1997 wthing // (c) 1999 +wthinga // (c) 2000 wtiger // (c) 1999 yukongl5 // (c) 2000 @source:aristmk6.cpp -aristmk6 // -5drag -5dragsp -5dragce -5koipp +aristmk6 // (c) 2000 +5drag // (c) 2004 +5dragsp // (c) 2004 +5dragce // (c) 2007 +5koipp // (c) 2007 50lions // (c) 2002 50lionsm // (c) 2003 -50lionrr -100lions -adonisa6 -adustcm -afterhrs -alchemy -atkgld -amzqueen -amztempl -antcleo +50lionrr // (c) 2012 +100lions // (c) 2006 +adonisa6 // (c) 2005 +aduskcm // (c) 2001 +afterhrs // (c) 2004 +alchemy // (c) 2003 +atkgld // (c) 2007 +amzqueen // (c) 2001 +amztempl // (c) 2009 +antcleo // (c) 2004 antcleom // (c) 2004 -apocof -arabnga6 -arabnga6u -arwincm -arish -asnprinc -beavbuk -bigben -bigheart -bigred -bigred2 -blkbrum -blkmust -bluetigr -bobdolly -brazil -bucaneer -buckstop -buffalo -buffalou -bmbugs -bushrngr -cactusco -callwld -calyking -canaryrc -cmtonig -cinhell -csd -csdsp -csdm // (c) 2003 -csdce -csret -corrida -cryspri +apocof // (c) 2003 +arabnga6 // (c) 2001 +arabnga6u // (c) 2004 +arwincm // (c) 2003 +arish // (c) 2003 +asnprinc // (c) 2004 +beavbuk // (c) 2008 +betzoo // (c) 2003 +bigben // (c) 2003 +bigbena // (c) 2003 +bigheart // (c) 1999 +bigred // (c) 2002 +bigreda // (c) 2002 +bigred2 // (c) 2005 +blkbrum // (c) 2002 +blkmust // (c) 200? +bluetigr // (c) 2007 +bobdolly // (c) 2007 +brazil // (c) 2005 +bucaneer // (c) 2004 +bucaneeru // (c) 2005 +buckstop // (c) 2010 +buffalo // (c) 2006 +buffalou // (c) 2006 +bmbugs // (c) 2005 +bushrngr // (c) 2001 +cactusco // (c) 2007 +callwld // (c) 2007 +calyking // (c) 2005 +canaryrc // (c) 2006 +cmtonig // (c) 2005 +cinhell // (c) 2004 +csd // (c) 2002 +csdsp // (c) 2002 +csdm // (c) 2003 +csdce // (c) 2003 +csret // (c) 2006 +corrida // (c) 2005 +cryspri // (c) 2003 crysprim // (c) 2003 -cryspriu -deepfrz -deepfrzu -deltabel -deltaqn -dimeye -dimeyece -di4ever -dinosa6 -dblagent -dbldolph -drgnlord -drgnmgic -drmcatch -drmred -eaglrock -estrike -eastland -eggsrccm -efce -encspell -enchantr -eott -firednc -flamoljc -flamolce -followst -fortath -frogwld -gambjack -gwnn -geishaa6 -goape -gogreen -goldarch -gldnflc -gldgong -goldinc -goldincu -goldpym -goldsam -gbmoney -grizzly -heartgld -heartveg -hlntroy -highnoon -holdrma -househrt -incachf -indream -indremce -indremll -indrem2c +cryspriu // (c) 2006 +deepfrz // (c) 2009 +deepfrzu // (c) 2009 +deltabel // (c) 2005 +deltaqn // (c) 2004 +dimeye // (c) 2004 +dimeyece // (c) 2004 +di4ever // (c) 2002 +dinosa6 // (c) 2003 +dblagent // (c) 2005 +dbldolph // (c) 2000 +drgnlord // (c) 2004 +drgnmgic // (c) 2006 +drmcatch // (c) 2003 +drmred // (c) 2008 +eaglrock // (c) 2004 +estrike // (c) 2010 +eastland // (c) 2004 +eggsrccm // (c) 2005 +efce // (c) 200? +encspell // (c) 2007 +enchantr // (c) 2000 +eott // (c) 2000 +firednc // (c) 2004 +flamolce // (c) 2002 +flamoljc // (c) 2002 +followst // (c) 2000 +fortath // (c) 2007 +frogwld // (c) 2004 +gambjack // (c) 2005 +gwnn // (c) 2004 +geishaa6 // (c) 2000 +geishajc // (c) 2001 +goape // (c) 2001 +gogreen // (c) 2001 +goldarch // (c) 2005 +gldnflc // (c) 2003 +gldgong // (c) 2005 +goldinc // (c) 2004 +goldincu // (c) 2005 +goldpym // (c) 2002 +goldsam // (c) 2007 +gbmoney // (c) 2002 +grizzly // (c) 2006 +heartgld // (c) 2003 +heartveg // (c) 2006 +hlntroy // (c) 2002 +hlntroyu // (c) 2004 +highnoon // (c) 2001 +holdrma // (c) 2002 +househrt // (c) 2004 +incachf // (c) 2005 +indream // (c) 2001 +indremce // (c) 2002 +indremll // (c) 2003 +indrem2c // (c) 2003 indremmm // (c) 2003 -indgldcm -indprncs -jailbrk -jefffox -jewelcm -kingnep -kingnile -kingnilea -kingpeng -koalama6 -kohinoor -lgfish -lemrol -lineking -lordleo -lougcm -lovestrk -luigibal -lucky88 -magforst -magmerm -metestrm -milkin -mskitty -mnytree -moonwalt -mchilli -mrwoo -mystarr -mysteycm -mysteycmu -mystmerm -nerdwild -opsesam -orbeaut -outbackj -owlcap -pandpays -parislgt -parislgtu -pcockmag -pelipete -pelipeteu -pennyar -pengpyce -pharfor -phxfant -pirata6 -pcfavor -pcbydem -pcmostw -pcgold -pcplat -pcorig -pwsuper -pompeia6 -pompeia6u -prideaf -prophecy -qnilea6 -qnilese -qnilejc -qnilejcsp -qsheeba -raprichs -redbara6 -roadtrip -ruprup -rubymag -rumbreel -scatmag2 -scatmag2sa -sealdeal -shorthng -shamnmg -shamnmgu -smtma6 -silkrda6 -silgola6 -skydnca6 -spgcarn -stardrft -stardrftu -starqst -statsymb -sunmoon -sunmonbb -sunqndol -sbuk5 -swhr2a6 -swh2ld -tahitim -thaiprnc -thaiprncm // (c) 2003 -thndrhrt -tigress -tikitalk -tiktorch -timbwolf -topshta6 -torgods -toprdice -trsking -turtreas -venetian -venice -werewild +indgldcm // (c) 2001 +indprncs // (c) 2004 +jailbrk // (c) 2002 +jefffox // (c) 2003 +jewelcm // (c) 2003 +kingnep // (c) 2005 +kingnile // (c) 2003 +kingnilea // (c) 2002 +kingpeng // (c) 2002 +kingpengsp // (c) 2002 +koalama6 // (c) 2000 +kohinoor // (c) 2003 +lgfish // (c) 2006 +lemrol // (c) 2004 +lineking // (c) 2005 +lordleo // (c) 2002 +lougcm // (c) 2001 +lovestuk // (c) 200? +luigibal // (c) 2007 +lucky88 // (c) 2007 +magforst // (c) 2005 +magmerm // (c) 2003 +metestrm // (c) 2007 +milkin // (c) 2007 +mskitty // (c) 2005 +mnytree // (c) 2000 +moonwalt // (c) 2007 +mchilli // (c) 2008 +mrwoo // (c) 200? +mystarr // (c) 2002 +mysteycm // (c) 2001 +mysteycmu // (c) 2002 +mystmerm // (c) 2002 +nerdwild // (c) 2005 +opsesam // (c) 200? +orbeaut // (c) 2006 +outbackj // (c) 2005 +owlcap // (c) 2001 +pandpays // (c) 2004 +parislgt // (c) 2001 +parislgtu // (c) 2002 +pcockmag // (c) 2002 +pcockmagu // (c) 2004 +pelipete // (c) 2004 +pelipeteu // (c) 2005 +pennyar // (c) 2005 +pengpyce // (c) 2003 +pharfor // (c) 2000 +phxfant // (c) 2005 +pirata6 // (c) 2000 +pcbydem // (c) 2006 +pcfavor // (c) 2004 +pcgold // (c) 2010 +pcmostw // (c) 2006 +pcorig // (c) 2004 +pcplat // (c) 2009 +pwsuper // (c) 200? +pompeia6 // (c) 2001 +pompeia6u // (c) 2005 +pompeia6ua // (c) 2002 +prideaf // (c) 2005 +prophecy // (c) 2004 +qnilea6 // (c) 2005 +qnilese // (c) 2001 +qnilesea // (c) 2001 +qnilejc // (c) 2002 +qnilejcsp // (c) 2002 +qsheba // (c) 2003 +raprichs // (c) 2005 +redbara6 // (c) 2002 +retsama6 // (c) 2002 +roadtrip // (c) 2005 +ruprup // (c) 2002 +rubymag // (c) 2002 +rumbreel // (c) 2010 +scatmag2 // (c) 2000 +scatmag2sa // (c) 2001 +scatmag3 // (c) 2006 +sealdeal // (c) 2002 +shorthng // (c) 2004 +shamnmg // (c) 2006 +shamnmgu // (c) 200? +smtma6 // (c) 2001 +silkrda6 // (c) 2006 +silgola6 // (c) 2002 +skydnca6 // (c) 2008 +spgcarn // (c) 1999 +stardrft // (c) 2003 +stardrftu // (c) 2004 +starqst // (c) 2001 +statsymb // (c) 2005 +sunmoon // (c) 2003 +sunmoona // (c) 2003 +sunmonbb // (c) 200? +sunqndol // (c) 2003 +sbuk5 // (c) 2005 +swhr2a6 // (c) 2005 +swh2ld // (c) 2002 +tahitim // (c) 2006 +thaiprnc // (c) 2002 +thaiprncm // (c) 2003 +thndrhrt // (c) 2004 +tigress // (c) 2007 +tikitalk // (c) 2007 +tiktorch // (c) 2001 +timbwolf // (c) 200? +topshta6 // (c) 2002 +torgods // (c) 2000 +toprdice // (c) 2001 +trsking // (c) 200? +turtreas // (c) 2006 +venetian // (c) 2002 +venice // (c) 2004 +werewild // (c) 2009 whalecsh // (c) 2002 -whalecshu -whalecshua -wheregld -wheregldsp -wheregldm // (c) 2004 -whtwater -wikwin2 -wldafr -wldcata6 -wldgoos -wgorilla -wldpanda -wldpanth -wldstall -wtepee -wwaratah -wwaratahsp -wways -wwaysm // (c) 2003 -wzwaysll -wingoly -zorroa6 -zorroa6u +whalecshu // (c) 2003 +whalecshua // (c) 2005 +wheregld // (c) 2004 +wheregldsp // (c) 2004 +wheregldm // (c) 2004 +whtwater // (c) 2003 +wikwin2 // (c) 2006 +wldafr // (c) 2002 +wldcata6 // (c) 2006 +wldgoos // (c) 2003 +wgorilla // (c) 2009 +wldpanda // (c) 2006 +wldpanth // (c) 2004 +wldstall // (c) 2006 +wtepee // (c) 2007 +wwaratah // (c) 2006 +wwaratahsp // (c) 2006 +wways // (c) 2002 +wwaysm // (c) 2003 +wzwaysll // (c) 2003 +wingoly // (c) 2005 +zorroa6 // (c) 2003 +zorroa6u // (c) 2005 @source:arkanoid.cpp ark1ball // bootleg @@ -2538,6 +2579,7 @@ badlandsb2 // bootleg set 2 @source:bagman.cpp bagman // (c) 1982 +bagmanj // (c) 1982 bagmans // (c) 1982 + Stern license bagmans2 // (c) 1982 + Stern license bagnard // (c) 1982 @@ -8607,12 +8649,14 @@ bingor2 // (c) 2002 Unknown bingor3 // (c) 2002 Unknown bingor4 // (c) 2002 Unknown bingor5 // (c) 2002 Unknown +vip2000 // (c) Paloma-Elektronik @source:bionicc.cpp bionicc // 3/1987 (c) 1987 (Euro) bionicc1 // 3/1987 (c) 1987 (US) bionicc2 // 3/1987 (c) 1987 (US) bioniccbl // bootleg +bioniccbl2 // bootleg topsecrt // 3/1987 (c) 1987 (Japan) @source:bishi.cpp @@ -8766,6 +8810,9 @@ bowltry // (c) 200? Atlus @source:boxer.cpp boxer // ?????? prototype 1978 [6502] +@source:bpmmicro.cpp +bp1200 // (c) 1991 BP Microsystems + @source:br8641.cpp br8641 // @@ -9238,6 +9285,7 @@ sailormnot // (c) 1995 Banpresto (country is in EEPROM) sailormnou // (c) 1995 Banpresto (country is in EEPROM) sailormnt // (c) 1995 Banpresto (country is in EEPROM) sailormnu // (c) 1995 Banpresto (country is in EEPROM) +tekkencw // (c) 1997 Namco theroes // (c) 2001 Primetek Investments tjumpman // (c) 1999 Namco uopoko // (c) 1998 Cave + Jaleco license @@ -9505,6 +9553,8 @@ wangmid2o // 2005.02 Wangan Midnight Maximum Tune 2 (Expor wangmid2j // 2005.04 Wangan Midnight Maximum Tune 2 (Japan) wangmid2ja // 2005.09 Wangan Midnight Maximum Tune 2 (Japan) (Rev A) questofd // 2004.09 Quest of D (CDV-10005C) +qofd3 // 2007.02 Quest of D Oukoku no Syugosya Ver. 3.02 (CDV-10026D) +qofdtbk // 2007.10 Quest of D The Battle Kingdom (CDV-10035B) gundcb79 // 2005.10 Mobile Suit Gundam 0079 Card Builder (CDV-10010) gundcb79a // 2006.10 Mobile Suit Gundam 0079 Card Builder Ver.2.02 (CDV-10024B) gundcb83 // 2007.01 Mobile Suit Gundam 0083 Card Builder (CDV-10030) @@ -9519,6 +9569,7 @@ saiyugoub2 // bootleg @source:chinsan.cpp chinsan // (c) 1987 Sanritsu +mayumi // (c) 1988 Victory L.L.C., made by Sanritsu @source:chqflag.cpp chqflag // GX717 (c) 1988 @@ -9624,6 +9675,9 @@ firebeas // (proto) (c) 1983 @source:clowndwn.cpp clowndwn // Elwood Clown Roll Down +@source:clpoker.cpp +clpoker // Chain Leisure + @source:clshroad.cpp clshroad // (c) 1986 Wood Place Inc. clshroadd // (c) 1986 Wood Place Inc. (Data East license) @@ -9868,6 +9922,7 @@ daimakai // 12/1988 (c) 1988 (Japan) daimakair // 12/1988 (c) 1988 (Japan) dino // 01/02/1993 (c) 1993 (World) (CPS1 + QSound) dinohunt // bootleg +dinoa // 23/02/1993 (c) 1993 (Asia TW) (CPS1 + QSound) dinoj // 01/02/1993 (c) 1993 (Japan) (CPS1 + QSound) dinou // 01/02/1993 (c) 1993 (USA) (CPS1 + QSound) dynwar // 4/1989 (c) 1989 (USA) @@ -9953,6 +10008,7 @@ sf2ceea // 13/03/1992 (c) 1992 (World) sf2ceja // 22/03/1992 (c) 1992 (Japan) sf2cejb // 13/05/1992 (c) 1992 (Japan) sf2cejc // 03/08/1992 (c) 1992 (Japan) +sf2ceupl // 03/08/1992 (c) 1992 (Japan) sf2ceua // 13/03/1992 (c) 1992 (USA) sf2ceub // 13/05/1992 (c) 1992 (USA) sf2ceuc // 03/08/1992 (c) 1992 (USA) @@ -10272,6 +10328,7 @@ ssf2t // 23/02/1994 (c) 1994 (World) ssf2ta // 23/02/1994 (c) 1994 (Asia) ssf2tad // ssf2tb // 19/11/1993 (c) 1993 (World) +ssf2tba // 05/10/1993 (c) 1993 (Asia) ssf2tbd // ssf2tbh // 05/10/1993 (c) 1993 (Hispanic) ssf2tbj // 05/10/1993 (c) 1993 (Japan) @@ -10433,6 +10490,7 @@ menghong // 2004? Sealy psattack // 2004 Uniana topbladv // 2002 Sonokong. Top Blade V trivrus // 2009 AGT. Trivia R Us +crospuzl // @source:airraid.cpp airraid // (c) 1987 Seibu Kaihatsu @@ -10838,6 +10896,7 @@ tftc_302 // tftc_303 // tmnt_103 // tmnt_104 // +tmnt_104g // tomy_102 // tomy_400 // tomy_h30 // @@ -10929,10 +10988,12 @@ cobracom // (c) 1988 Data East Corporation (World) cobracomj // (c) 1988 Data East Corporation (Japan) csilver // (c) 1987 Data East Corporation (Japan) csilverj // (c) 1987 Data East Corporation (Japan) +csilverja // (c) 1987 Data East Corporation (Japan) garyoret // (c) 1987 Data East Corporation (Japan) ghostb // (c) 1987 Data East USA (US) ghostb2a // (c) 1987 Data East USA (US) ghostb3 // (c) 1987 Data East USA (US) +ghostb3a // (c) 1987 Data East USA (US) gondo // (c) 1987 Data East USA (US) lastmisn // (c) 1986 Data East USA (US) lastmisnj // (c) 1986 Data East Corporation (Japan) @@ -11182,6 +11243,7 @@ herodk // (c) 1984 Seatongrove + Crown license herodku // (c) 1984 Seatongrove + Crown license hunchbkd // (c) 1983 Century jrking // bootleg +maguila // bootleg pestplce // bootleg on donkey kong hw radarscp // (c) 1980 Nintendo radarscp1 // (c) 1980 Nintendo @@ -11996,6 +12058,7 @@ catapult // (c) 1982 dealer // (c) 198? igmo // (c) 1984 megadon // (c) 1982 +revngr84 // (c) 1984 revenger // (c) 1984 suprglob // (c) 1983 theglob // (c) 1983 @@ -12105,8 +12168,8 @@ promutrvc // (c) 1985 Enerdyne Technologies Inc strvmstr // (c) 1986 Enerdyne Technologies Inc @source:eurocom2.cpp -eurocom2 // -waveterm // +eurocom2 // +waveterm // @source:europc.cpp europc // 1988 Schneider Euro PC (CGA or Hercules) @@ -12139,6 +12202,7 @@ mtrap2 // (c) 1981 mtrap3 // (c) 1981 mtrap4 // (c) 1981 mtrapb // bootleg +mtrapb2 // bootleg panzer // (c) 1980 Proel (bootleg) pepper2 // (c) 1982 pepper27 // (c) 1982 @@ -12349,6 +12413,7 @@ fgoala // MF (c) 1979 Taito Corporation @source:fidel6502.cpp chesster // chesstera // +kishon // csc // CSC: Champion Sensory Chess Challenger (English) cscfr // * French cscg // * German @@ -12398,10 +12463,15 @@ feagv7 // feagv9 // fexcel68k // +@source:fidelmcs48.cpp +fscc6 // + @source:fidelz80.cpp bridgec3 // cc10 // cc7 // +damesc // +fscc8 // uvc // UVC: Advanced Voice Chess Challenger (English) uvcfr // * French uvcg // * German @@ -12736,6 +12806,7 @@ touchgok // (c) 1995 - Ref 950510-1 wrally2 // (c) 1995 - Ref 950510 @source:gaelco3d.cpp +footbpow // (c) 2000 - Ref 000208 radikalb // (c) 1998 - Ref ??? radikalba // (c) 1998 - Ref ??? speedup // (c) 1996 - Ref ??? @@ -12743,6 +12814,13 @@ speedup10 // (c) 1996 - Ref ??? surfplnt // (c) 1997 - Ref 971223 surfplnt40 // (c) 1997 - Ref 970514 +@source:gaelcopc.cpp +rriders // +tokyocop // (c) 2003 (Arcade TV Game List - P.168, Right, 19 from bottom) +tokyocopi // +tokyocopk // +tuningrc // + @source:gaiden.cpp drgnbowl // (c) 1992 Nics drgnbowla // (c) 1992 Nics @@ -12782,6 +12860,7 @@ galagamw // (c) 1981 Midway galagao // (c) 1981 gallag // bootleg gatsbee // (c) 1984 Uchida / hack +nebulbee // bootleg sxevious // (c) 1984 sxeviousj // (c) 1984 xevios // bootleg @@ -13045,6 +13124,7 @@ galgame // (c) 1971 Computer Recreations, Inc @source:galgames.cpp galgame2 // (c) 1998 Creative Electronics & Software (CES) / Namco galgame3 // (c) 1998 Creative Electronics & Software (CES) / Atari +galgame4 // (c) 1998 Creative Electronics & Software (CES) galgbios // (c) 1998 Creative Electronics & Software (CES) @source:galivan.cpp @@ -13083,6 +13163,7 @@ galpani3k // (c) 1995 Kaneko (Korea) @source:galpanic.cpp galpanic // (c) 1990 Kaneko galpanica // (c) 1990 Kaneko +galpanicb // (c) 1990 Kaneko @source:galspnbl.cpp galspnbl // (c) 1996 Comad @@ -13114,6 +13195,7 @@ killcom // (c) 1980 Centuri leprechn // (c) 1982 leprechp // (c) 1982 megatack // (c) 1980 Centuri +megatacka // (c) 1980 Centuri piratetr // (c) 1982 potogold // (c) 1982 @@ -13453,6 +13535,10 @@ bballoon // (c) 2003 Eolith hapytour // (c) 2005 GAV Company (on Eolith's Ghost hardware) touryuu // (c) 200? Yuki Enterprise +@source:giclassic.cpp +giclasex +giclassvr + @source:gijoe.cpp gijoe // GX069 (c) 1991 (World) gijoea // GX069 (c) 1991 (World) @@ -13701,6 +13787,7 @@ wupndownc // (c) 1998, Video Klein wupndownd // (c) 1998, Video Klein @source:goldstar.cpp +aplan // bootleg (WeaShing) bingowng // (c) 1993 Wing Co. Ltd bingownga // (c) 1993 Wing Co. Ltd bonusch // (c) 1990 Wing Co. Ltd @@ -14084,6 +14171,7 @@ rackempp // raimfire // rflshdlx // rocky // +rockyf // sorbit // spirit // striker // @@ -14206,9 +14294,9 @@ gyrussce // GX347 (c) 1983 + Centuri license venus // bootleg @source:h19.cpp -h19 // -super19 // -watz19 // +h19 // Heath H19 (Zenith Z-19) +super19 // Super19 replacement ROMS for H19 +watz19 // Watzman replacement ROMS for H19 @source:h8.cpp h8 // @@ -14394,14 +14482,19 @@ ttfballa // Toytronic us2pfball // US Games uspbball // US Games +@source:hh_sm500.cpp +nupogodi // + @source:hh_sm510.cpp -gnwmndon // Nintendo +gnw_bx301 // Nintendo +gnw_dm53 // Nintendo +gnw_jr55 // Nintendo +gnw_ml102 // Nintendo kcontra // Konami kgradius // Konami kloneran // Konami ktmnt // Konami ktopgun // Konami -nupogodi // @source:hh_tms1k.cpp 7in1ss // Tiger Electronics @@ -15187,6 +15280,7 @@ zzyzzyxx2 // (c) 1982 Cinematronics + Advanced Microcomput @source:jackal.cpp jackal // GX631 (c) 1986 (World) +jackalbl // bootleg jackalj // GX631 (c) 1986 (Japan) jackalr // GX631 (c) 1986 (World) topgunbl // bootleg @@ -15258,9 +15352,16 @@ jchan2 // (c) 1995 Kaneko @source:jclub2.cpp darkhors // bootleg of Jockey Club II -jclub2 // (c) 199? Seta -jclub2o // (c) 199? Seta -jclub2ob // (c) 199? Seta +jclub2v100 // v1.00 5 OCT. 1994 +jclub2v101 // v1.01 20 FEB. 1995 +jclub2v110 // v1.10X 5 MAY. 1996 +jclub2v112 // v1.12X 3 JUN. 1996 +jclub2v200 // v2.00 7 SEP. 1996 +jclub2v201 // v2.01 20 NOV. 1996 +jclub2v203 // v2.03X RC 26 MAR. 1997 +jclub2v204 // v2.04 30 APR. 1997 +jclub2v205 // v2.05 21 JUL. 1997 +jclub2v220 // v2.20 14 APR. 1998 @source:jedi.cpp jedi // 136030 (c) 1984 @@ -16864,6 +16965,7 @@ kingdrby // (c) 1981 Tatsumi @source:kingobox.cpp kingofb // (c) 1985 Wood Place Inc. +kingofbj // (c) 1985 Wood Place Inc. ringking // (c) 1985 Data East USA ringking2 // (c) 1985 Data East USA ringking3 // (c) 1985 Data East USA @@ -17468,7 +17570,6 @@ discodan // force // hhotel // hustlerp // -hustlerpa // kkongltd // pecmen // tmacltd2 // @@ -17763,7 +17864,7 @@ unitron // 1985 Unitron utrn1024 // 1986 Unitron 1024 @source:macp.cpp -//glxplay // +glxplay // glxplay2 // kidnap // mac_1808 // @@ -19845,9 +19946,6 @@ screenp3a // screenp4 // screenpl // Screenplay -@source:mayumi.cpp -mayumi // (c) 1988 Victory L.L.C., made by Sanritsu - @source:mazerbla.cpp greatgun // (c) 1983 mazerbla // (c) 1983 @@ -20025,6 +20123,7 @@ mp_col3 // ?? mp_gaxe2 // 02 mp_gaxe2a // 02 mp_gslam // 03 +mp_gunhe // 10 mp_mazin // 11 mp_shnb3 // 09 mp_soni2 // 07 @@ -20568,6 +20667,9 @@ minicom // @source:miniforce.cpp miniforce // D26 cabinet test board +@source:minitel_2_rpic.cpp +minitel2 // + @source:minivadr.cpp minivadr // D26 cabinet test board @@ -20613,6 +20715,7 @@ pang // (c) 1989 Mitchell (World) pangb // bootleg pangb2 // bootleg pangba // bootleg +pangbb // bootleg pangbold // bootleg pkladies // (c) 1989 Mitchell pkladiesbl // bootleg @@ -20856,6 +20959,7 @@ monzagpb // bootleg bucky // GX173 (c) 1992 (World) buckyaab // GX173 (c) 1992 (Asia) buckyea // GX173 (c) 1992 (World) +buckyjaa // GX173 (c) 1992 (Japan) buckyuab // GX173 (c) 1992 (US) moomesa // GX151 (c) 1992 (World) moomesaaab // GX151 (c) 1992 (Asia) @@ -27618,6 +27722,17 @@ yis60464 // @source:mt735.cpp mt735 // +@source:mtouchxl.cpp +mtouchxl // 1997 Merit Industries +mtchxl5k // 1998 Merit Industries +mtchxl5ko // 1998 Merit Industries +mtchxl5ko2 // 1998 Merit Industries +mtchxl6k // 1999 Merit Industries +mtchxl6ko // 1999 Merit Industries +mtchxl6ko4 // 1999 Merit Industries +mtchxlgld // 2000 Merit Industries +mtchxlgldo // 2000 Merit Industries + @source:mtx.cpp mtx500 // 1983 Memotech MTX 500 mtx512 // 1983 Memotech MTX 512 @@ -28048,7 +28163,8 @@ gslgr94u // (c) 1994 gslugrsj // (c) 1993 (Japan) gunbuletj // (c) 1994 (GN1 Japan) gunbuletw // (c) 1994 (GN3 World) -machbrkr // (c) 1995 (Japan) +machbrkr // (c) 1995 (World) +machbrkrj // (c) 1995 (Japan) nebulray // (c) 1994 (World) nebulrayj // (c) 1994 (Japan) outfxies // (c) 1994 (World) @@ -28181,44 +28297,45 @@ startrgn // 2002.07 Star Trigon (STT1 Ver.A) @source:namcos11.cpp danceyes // 1996.10 Dancing Eyes (US, DC3/VER.C) danceyesj // 1996.09 Dancing Eyes (Japan, DC1/VER.A) -dunkmnia // 1996.05 Dunk Mania (Asia, DM2/VER.C) +dunkmnia // 1996.05 Dunk Mania (World, DM2/VER.C) dunkmniajc // 1996.05 Dunk Mania (Japan, DM1/VER.C) myangel3 // 1998.03 Kosodate Quiz My Angel 3 (Japan, KQT1/VER.A) pocketrc // 1997.03 Pocket Racer (Japan, PKR1/VER.B) primglex // 1996.03 Prime Goal EX (Japan, PG1/VER.A) ptblank2ua // 1999.?? Point Blank 2 (US, GNB3/VER.A) -souledge // 1996.05 Soul Edge Ver. II (World, SO4/VER.C) -souledgeaa // 1996.02 Soul Edge (Asia, SO2/VER.A) +souledge // 1996.05 Soul Edge Ver. II (Asia, SO4/VER.C) +souledgea // 1996.02 Soul Edge (World, SO2/VER.A) souledgeja // 1996.02 Soul Edge (Japan, SO1/VER.A) souledgeua // 1996.01 Soul Edge (US, SO3/VER.A) souledgeuc // 1996.05 Soul Edge Ver. II (US, SO3/VER.C) -starswep // 1997.07 Star Sweep (Japan, STP1/VER.A) -tekken // 1995.01 Tekken (World, TE4/VER.C) +starswep // 1997.07 Star Sweep (World, STP2/VER.A) +starswepj // 1997.07 Star Sweep (Japan, STP1/VER.A) +tekken // 1995.01 Tekken (World, TE2/VER.C) tekken2 // 1996.04 Tekken 2 Ver.B (US, TES3/VER.D) -tekken2aa // 1995.08 Tekken 2 (Asia, TES2/VER.A) -tekken2ab // 1995.09 Tekken 2 Ver.B (Asia, TES2/VER.B) +tekken2a // 1995.08 Tekken 2 (World, TES2/VER.A) +tekken2b // 1995.09 Tekken 2 Ver.B (World, TES2/VER.B) tekken2jb // 1995.09 Tekken 2 Ver.B (Japan, TES1/VER.B) tekken2jc // 1995.11 Tekken 2 Ver.B (Japan, TES1/VER.C) tekken2ub // 1995.09 Tekken 2 Ver.B (US, TES3/VER.B) -tekkenab // 1994.12 Tekken (Asia, TE2/VER.B) -tekkenac // 1995.01 Tekken (Asia, TE2/VER.C) +tekkenac // 1995.01 Tekken (Asia, TE4/VER.C) +tekkenb // 1994.12 Tekken (World, TE2/VER.B) tekkenjb // 1994.12 Tekken (Japan, TE1/VER.B) xevi3dg // 1996.05 Xevious 3D/G (Japan, XV31/VER.A) @source:namcos12.cpp -aplarail // 1998.12 Attack Pla Rail -aquarush // 2000.02 Aqua Rush (AQ1/VER.A1, Japan) -ehrgeiz // 1998.?? Ehrgeiz (US, EG3/VER.A) -ehrgeizaa // 1998.?? Ehrgeiz (Asia, EG2/VER.A) +aplarail // 1998.12 Attack Pla Rail (Japan, AP1/VER.A) +aquarush // 2000.02 Aqua Rush (Japan, AQ1/VER.A1) +ehrgeiz // 1998.?? Ehrgeiz (World, EG2/VER.A) ehrgeizja // 1998.05 Ehrgeiz (Japan, EG1/VER.A) +ehrgeizua // 1998.?? Ehrgeiz (US, EG3/VER.A) fgtlayer // 1998.12 Fighting Layer (Japan, FTL0/VER.A) -g13knd // 2000.10 Golgo 13 Kiseki no Dandou (GLS1/VER.A, Japan) -ghlpanic // 1999.?? Ghoul Panic (Asia, OB2/VER.A) -golgo13 // 2000.03 Golgo 13 (GLG1/VER.A, Japan) +g13knd // 2000.10 Golgo 13 Kiseki no Dandou (Japan, GLS1/VER.A) +ghlpanic // 1999.?? Ghoul Panic (World, OB2/VER.A) +golgo13 // 2000.03 Golgo 13 (Japan, GLG1/VER.A) gunbarl // 1999.?? Gunbarl (Japan, GNB4/VER.A) -kaiunqz // 1999.12 Kaiun Quiz (KW1/VER.A, Japan) -kartduel // 2000.07 Kart Duel -lbgrande // 1997.?? Libero Grande (Asia, LG2/VER.A) +kaiunqz // 1999.12 Kaiun Quiz (Japan, KW1/VER.A) +kartduel // 2000.07 Kart Duel (Japan, KTD1/VER.A) +lbgrande // 1997.?? Libero Grande (World, LG2/VER.A) lbgrandeja // 1997.12 Libero Grande (Japan, LG1/VER.A) mdhorse // 1998.11 Derby Quiz My Dream Horse (Japan, MDH1/VER.A2) mrdrillr // 1999.11 Mr Driller (US, DRI3/VER.A2) @@ -28226,7 +28343,7 @@ mrdrillrj // 1999.11 Mr Driller (Japan, DRI1/VER.A2, Japan ohbakyuun // 1999.07 Oh! Bakyuuun (Japan, OB1/VER.A) pacapp // 1998.12 Paca Paca Passion (Japan, PPP1/VER.A2) pacapp2 // 1999.07 Paca Paca Passion 2 (Japan, PKS1/VER.A) -pacappsp // 1999.12 Paca Paca Passion Special (PSP1/VER.A, Japan) +pacappsp // 1999.12 Paca Paca Passion Special (Japan, PSP1/VER.A) ptblank2 // 1999.?? Point Blank 2 (GNB5/VER.A) soulclbr // 1998.?? Soul Calibur (World, SOC14/VER.C) soulclbrja // 1998.?? Soul Calibur (Japan, SOC11/VER.A2) @@ -28235,29 +28352,29 @@ soulclbrjc // 1998.07 Soul Calibur (Japan, SOC11/VER.C) soulclbrub // 1998.?? Soul Calibur (US, SOC13/VER.B) soulclbruc // 1998.?? Soul Calibur (US, SOC13/VER.C) soulclbrwb // 1998.?? Soul Calibur (World, SOC14/VER.B) -sws2000 // 2000.03 Super World Stadium 2000 (SS01/VER.A, Japan) -sws2001 // 2001.04 Super World Stadium 2001 (SS11/VER.A, Japan) -sws98 // 1998.06 Super World Stadium '98 (SS81/VER.A, Japan) +sws2000 // 2000.03 Super World Stadium 2000 (Japan, SS01/VER.A) +sws2001 // 2001.04 Super World Stadium 2001 (Japan, SS11/VER.A) +sws98 // 1998.06 Super World Stadium '98 (Japan, SS81/VER.A) sws99 // 1999.05 Super World Stadium '99 (Japan, SS91/VER.A3) -technodr // 1998.07 Techno Drive -tekken3 // 1997.03 Tekken 3 (Japan, TET1/VER.E1) -tekken3aa // 1997.?? Tekken 3 (Asia, TET2/VER.A) -tekken3ab // 1997.?? Tekken 3 (Asia, TET2/VER.B) -tekken3ae // 1997.03 Tekken 3 (Asia, TET2/VER.E1) +technodr // 1998.07 Techno Drive (Japan, TD2/VER.B) +tekken3 // 1997.03 Tekken 3 (World, TET2/VER.E1) +tekken3a // 1997.?? Tekken 3 (World, TET2/VER.A) +tekken3b // 1997.?? Tekken 3 (World, TET2/VER.B) tekken3ja // 1997.?? Tekken 3 (Japan, TET1/VER.A) +tekken3je1 // 1997.03 Tekken 3 (Japan, TET1/VER.E1) tekken3ua // 1997.?? Tekken 3 (US, TET3/VER.A) tekken3ud // 1997.?? Tekken 3 (US, TET3/VER.D) -tektagt // 1999.?? Tekken Tag Tournament (US, TEG3/VER.C1) -tektagtac // 1999.?? Tekken Tag Tournament (Asia, TEG2/VER.C1) -tektagtac1 // 1999.?? Tekken Tag Tournament (Asia, TEG2/VER.C1) - alt mainboard & rom board +tektagt // 1999.?? Tekken Tag Tournament (World, TEG2/VER.C1) +tektagtc1 // 1999.?? Tekken Tag Tournament (World, TEG2/VER.C1) - alt mainboard & rom board tektagtja // 1999.07 Tekken Tag Tournament (Japan, TEG1/VER.A) tektagtjb // 1999.07 Tekken Tag Tournament (Japan, TEG1/VER.B) tektagtjc1 // 1999.?? Tekken Tag Tournament (Japan, TEG1/VER.C1) tektagtub // 1999.?? Tekken Tag Tournament (US, TEG3/VER.B) -tenkomor // 1998.?? Tenkomori Shooting (Asia, TKM2/VER.A1) +tektagtuc1 // 1999.?? Tekken Tag Tournament (US, TEG3/VER.C1) +tenkomor // 1998.?? Tenkomori Shooting (World, TKM2/VER.A1) tenkomorja // 1998.12 Tenkomori Shooting (Japan, TKM1/VER.A1) toukon3 // 1997.12 Shin Nihon Pro Wrestling Toukon Retsuden 3 Arcade Edition (Japan, TR1/VER.A) -truckk // 2000.06 Truck Kyousoukyoku (Metro) +truckk // 2000.06 Truck Kyousoukyoku (Metro) (Japan, TKK2/VER.A) @source:namcos2.cpp assault // (c) 1988 @@ -28447,7 +28564,8 @@ crzytaxi // 1999.02 Crazy Taxi csmash // 2000.?? Cosmic Smash (Rev A) csmasho // 2000.?? Cosmic Smash cspike // 2000.10 Gun Spike / Cannon Spike -cvs2gd // 2001.07.05 Capcom Vs. SNK 2 Millionaire Fighting 2001 (Rev A) +cvs2mf // 2001.07.05 Capcom Vs. SNK 2 Millionaire Fighting 2001 (Rev A) +cvs2 // 2001.08.04 Capcom Vs. SNK 2 Mark Of The Millennium 2001 cvsgd // 2001.05 Capcom Vs. SNK Millennium Fight 2000 Pro deathcox // 2000.10 Death Crimson OX demofist // 2003.06 Demolish Fist @@ -28460,6 +28578,8 @@ doa2 // 1999.12? Dead or Alive 2 doa2a // 1999.11 Dead or Alive 2 (Rev A) doa2m // 2000.01 Dead or Alive 2 Millennium dolphin // 2003.08 Dolphin Blue +dragntra // 2003.05 Dragon Treasure (Rev A) +dragntr // 2003.10 Dragon Treasure (Rev B) dragntr2 // 2004.?? Dragon Treasure 2 (Rev A) dragntr3 // 2005.11 Dragon Treasure 3 (Rev A) drbyocwc // 2001.?? Derby Owners Club World Edition (Rev C) @@ -28486,7 +28606,7 @@ gram2000 // 2000.09 Giant Gram 2000 gundmct // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (cartridge) gundmgd // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (GD-ROM) gundmxgd // 2001.09 Mobile Suit Gundam: Federation Vs. Zeon DX -gunsur2 // 2001.07 Gun Survivor 2 Biohazard Code: Veronica (Asia, BHF2 Ver.E) +gunsur2 // 2001.07 Gun Survivor 2 Biohazard Code: Veronica (World, BHF2 Ver.E) gunsur2j // 2001.07 Gun Survivor 2 Biohazard Code: Veronica (Japan, BHF1 Ver.E) gwing2 // 2000.?? Giga Wing 2 hmgeo // 2001.06 Heavy Metal Geomatrix (Rev B) @@ -28527,8 +28647,8 @@ mamonoro // 2008.07 Mamoru-kun wa Norowarete Shimatta! manicpnc // 2007.07 Manic Panic Ghosts! (USA) marstv // 1999.12 Mars TV maxspeed // 2002.12 Maximum Speed -mazan // 2002.07 Mazan: Flash of the Blade (US, MAZ3 Ver.A) -mazana // 2002.07 Mazan: Flash of the Blade (Asia, MAZ2 Ver.A) +mazan // 2002.07 Mazan: Flash of the Blade (World, MAZ2 Ver.A) +mazanu // 2002.07 Mazan: Flash of the Blade (US, MAZ3 Ver.A) mbaa // 2008.12 Melty Blood Actress Again Version A (Rev A) mbaao // 2008.09 Melty Blood Actress Again meltyb // 2007.03 Melty Blood Act Cadenza Version B2 (Rev A) // Last GD-ROM game? @@ -28540,9 +28660,9 @@ mok // 2002.03.06 The Maze of the Kings monkeyba // 2001.05 Monkey Ball mslug6 // 2006.02 Metal Slug 6 mtkob2 // 2003.02 MushiKing The King Of Beetle -mushi2eo // 2005.?? Mushiking The King Of Beetles II ENG (Ver. 1.001) +mushi2eo // 2005.?? Mushiking The King Of Beetles II / III / III+ (Ver. 1.001) mushi2k5 // 2005.?? MushiKing The King Of Beetle 2K5 1st -mushik2e // 2005.?? Mushiking The King Of Beetles II ENG (Ver. 2.001) +mushik2e // 2005.?? Mushiking The King Of Beetles II / III / III+ (Ver. 2.001) mvsc2 // 2000.03 Marvel Vs. Capcom 2 New Age of Heroes (Export, Korea) (Rev A) mvsc2u // 2000.03 Marvel Vs. Capcom 2 New Age of Heroes (USA) (Rev A) naomi // 1998.?? Naomi BIOS @@ -28554,8 +28674,8 @@ ngbcj // 2005.07 NeoGeo Battle Colloseum (Japan) ngdup23a // DIMM Firmware Updater (Rev A) ngdup23c // DIMM Firmware Updater (Rev C) ngdup23e // DIMM Firmware Updater (Rev E) -ninjaslt // 2000.11 Ninja Assault (World, NJA4 Ver.A) -ninjaslta // 2000.11 Ninja Assault (Asia, NJA2 Ver.A) +ninjaslt // 2000.11 Ninja Assault (World, NJA2 Ver.A) +ninjaslta // 2000.11 Ninja Assault (Asia, NJA4 Ver.A) ninjasltj // 2000.11 Ninja Assault (Japan, NJA1 Ver.A) ninjasltu // 2000.11 Ninja Assault (US, NJA3 Ver.A) oinori // 2003.08 Oinori-daimyoujin Matsuri @@ -28671,9 +28791,9 @@ wccf310j // 2005.06 World Club Champion Football European wccf322e // 2005.11 World Club Champion Football European Clubs 2004-2005 Ver.3.22 wccf331e // 2005.06 World Club Champion Football European Clubs 2004-2005 Ver.1.1 wccf420e // 2006.08 World Club Champion Football European Clubs 2005-2006 -wldkicks // 2000.03 World Kicks (US, WK3 Ver.A) -wldkicksa // 2000.03 World Kicks (Asia, WK2 Ver.A) +wldkicks // 2000.03 World Kicks (World, WK2 Ver.A) wldkicksj // 2000.03 World Kicks (Japan, WK1 Ver.A) +wldkicksu // 2000.03 World Kicks (US, WK3 Ver.A) wldkickspj // 2000.03 World Kicks PCB (Japan, WKC1 Ver.A) wldrider // 2001.05 Wild Riders wrungp // 2001.08 Wave Runner GP @@ -29154,13 +29274,18 @@ nprsp // neptunp2 // @source:nes.cpp -dendy // Dendy (Classic russian famiclone) +iq501 // Micro Genius IQ-501 +iq502 // Micro Genius IQ-502 +dendy // Dendy Classic (Russian import of IQ-501 famiclone) +dendy2 // Dendy Classic 2 (Russian import of IQ-502 famiclone) +sb486 // Subor/Xiao Ba Wang SB-486 drpcjr // Bung Doctor PC Jr famicom // Nintendo Family Computer (a.k.a. Famicom) famitwin // Sharp Famicom Twin System fds // Nintendo Family Computer (a.k.a. Famicom) + Disk System add-on gchinatv // Golden China TV Game Centre (Chinese famiclone) m82 // Nintendo M82 Display Unit +m82p // Nintendo M82 Display Unit PAL nes // Nintendo Entertainment System nespal // Nintendo Entertainment System PAL @@ -29412,6 +29537,10 @@ supercon // @source:novag68k.cpp diablo68 // +@source:novagmcs48.cpp +nocto // +npresto // + @source:nsm.cpp firebird // @@ -29477,6 +29606,7 @@ ohmygod // (c) 1993 Atlus (Japan) ccasino // [1987] V-System Co. (Japan) ojanko2 // [1987] V-System Co. (Japan) ojankoc // [1986] V-System Co. (Japan) +ojankoca // [1986] V-System Co. (Japan) ojankohs // [1988] V-System Co. (Japan) ojankoy // [1986] V-System Co. (Japan) @@ -29563,6 +29693,9 @@ othundero // B67 (c) 1988 Taito Corporation Japan (World) othunderu // B67 (c) 1988 Taito America Corporation (US, rev 1) othunderuo // B67 (c) 1988 Taito America Corporation (US) +@source:otomedius.cpp +otomedius // (c) 2007 Konami + @source:overdriv.cpp overdriv // GX789 (c) 1990 overdriva // GX789 (c) 1990 @@ -29744,6 +29877,7 @@ paradisea // (c) 1994 Yun Sung paradisee // (c) 1994 Yun Sung (Escape license) paradlx // (c) >1994 Yun Sung penky // (c) 1995 Yun Sung +penkyi // (c) 1995 Yun Sung (Impeuropex license) tgtball // (c) 1995 Yun Sung tgtballa // (c) 1995 Yun Sung torus // (c) 1996 Yun Sung @@ -29784,6 +29918,9 @@ galds // (c) 1985 pastelg // (c) 1985 threeds // (c) 1985 +@source:patapata.cpp +patapata // 1993 NTC / NMK / ATLUS + @source:patinho_feio.cpp patinho // 1972 Patinho Feio @@ -30676,6 +30813,7 @@ killbld104 // killbldp // (c) 2004 Killing Blade Plus kov // (c) 1999 Knights of Valor kov100 // +kov100hk // kov115 // kov2 // (c) 2000 Knights of Valor 2 kov2100 // @@ -30707,6 +30845,7 @@ kovshxas // bootleg kovytzy // (c) 1999 Knights of Valour: Yi Tong Zhong Yuan martmast // (c) 2001 Martial Masters martmastc // +martmastc103 // martmastc102 // olds // (c) 1999 Oriental Legend Super / Special olds100 // @@ -30770,6 +30909,7 @@ falcon // bootleg falconz // bootleg fenix // bootleg griffon // bootleg (Videotron) +griffono // bootleg (Olympia) nextfase // bootleg phoenix // (c) 1980 Amstar phoenix2 // (c) 1980 Amstar @@ -30861,6 +31001,9 @@ genix // (c) 199? NIX pirates // (c) 1994 NIX piratesb // bootleg? +@source:piratesh.cpp +piratesh // (c) 1995 Konami + @source:pitagjr.cpp pitagjr // Pitagorin Junior @@ -31270,6 +31413,7 @@ gensitou // A8003 'GT' (c) 1989 prehisle // A8003 'GT' (c) 1989 prehislek // A8003 'GT' (c) 1989 prehisleu // A8003 'GT' (c) 1989 +prehisleb // bootleg @source:prestige.cpp cars2lap // CARS 2 Laptop (Germany) @@ -31800,11 +31944,13 @@ wipeormt // (c) 1974 Ramtek @source:rastan.cpp rastan // B04 (c) 1987 Taito Corporation Japan (World) rastana // B04 (c) 1987 Taito Corporation Japan (World) +rastanb // B04 (c) 1987 Taito Corporation Japan (World) rastanu // B04 (c) 1987 Taito America Corporation (US) rastanua // B04 (c) 1987 Taito America Corporation (US) rastanub // B04 (c) 1987 Taito America Corporation (US) rastsaga // B04 (c) 1987 Taito Corporation (Japan) rastsagaa // B04 (c) 1987 Taito Corporation (Japan) +rastsagab // B04 (c) 1987 Taito Corporation (Japan) @source:rastersp.cpp fbcrazy // 1997 @@ -31918,6 +32064,7 @@ rm480za // @source:rmhaihai.cpp rmhaihai // (c) 1985 Alba +rmhaihai2 // (c) 1985 Alba rmhaihib // (c) 1985 Alba rmhaijin // (c) 1986 Alba rmhaisei // (c) 1986 Visco @@ -32001,6 +32148,7 @@ cafetime // "63" (c) 1992 Dynax daisyari // (c) 1989 Best System dondenmj // "03" (c) 1986 Dyna Electronics ippatsu // 01? (c) 1986 Dyna Electronics +jangtaku // (c) 1986 Dyna Computer janoh // (c) 1984 Toaplan janoha // (c) 1984 Toaplan janptr96 // "503" (c) 1996 Dynax @@ -32026,9 +32174,11 @@ mjtensin // "100" (c) 1995 Dynax mjvegas // "50" 1991 Dynax mjvegasa // "50" 1991 Dynax mjyarou // (c) 1986 Visco / Video System +mjyarou2 // (c) 1986 Visco / Video System openmj // (c) 1982 Nichibutsu royalmah // Falcon bootleg royalmj // (c) 1982 Nichibutsu +rkjanoh2 suzume // 04? (c) 1986 Dyna Electronics tahjong // (c) 1985 Bally Pond / Nasco tontonb // "09" (c) 1987 Dynax @@ -32646,12 +32796,16 @@ scregg // TA-0001 (c) 1983 scv // scv_pal // +@source:scyclone.cpp +scyclone // (c) 1980 Taito Corporation + @source:sderby.cpp croupier // (c) 1997 Playmark croupiera // (c) 1997 Playmark luckboom // sderby // (c) 1996 sderbya // (c) 1996 +shinygld // spacewin // @source:sdk80.cpp @@ -32701,6 +32855,7 @@ seattle // sawatte // @source:segac2.cpp +anpanman // (c) 1993 Sega bloxeedc // (c) 1989 Sega / Elorg bloxeedu // (c) 1989 Sega / Elorg borench // (c) 1990 Sega @@ -32812,6 +32967,7 @@ sblazerp // (c) 1983 @source:segam1.cpp bingpty // ? +unkm1 // ? @source:segaorun.cpp outrun // Revision B @@ -33316,7 +33472,8 @@ sengokmj // (c) 1991 Sigma @source:senjyo.cpp baluba // (c) 1986 Able Corp. -megaforc // (c) 1985 Tehkan + Video Ware license +megaforc // (c) 1984 Tehkan +megaforcu // (c) 1985 Tehkan + Video Ware license senjyo // (c) 1983 Tehkan starforc // (c) 1984 Tehkan starforca // (c) 1984 Tehkan @@ -33692,6 +33849,7 @@ sg1000m2 // Sega SG-1000 Mark II (Japan) chboxing // (c) 1984 chwrestl // (c) 1985 dokidoki // (c) 1985 +sderby2 // (c) 1985 @source:sh4robot.cpp sh4robot // @@ -33707,6 +33865,7 @@ heberpop // (c) 1994 Sunsoft / Atlus shangha3 // (c) 1993 Sunsoft shangha3j // (c) 1993 Sunsoft shangha3u // (c) 1993 Sunsoft +shangha3up // (c) 1993 Sunsoft (US prototype from 'PCB001') @source:shanghai.cpp kothello // (c) 1990 Success. @@ -34036,7 +34195,8 @@ fantasy // (c) 1981 SNK fantasyj // (c) 1981 SNK fantasyu // (c) 1981 Rock-Ola nibbler // (c) 1982 Rock-ola (version 9) -nibbler6 // (c) 1982 Rock-ola (vresion 6) +nibbler6 // (c) 1982 Rock-ola (version 6) +nibbler7 // (c) 1982 Rock-ola (version 7) nibbler8 // (c) 1982 Rock-ola (version 8) nibblera // (c) 1982 Rock-ola (version ?) nibblero // (c) 1983 Olympia/Rock-Ola (version 8) @@ -34588,6 +34748,7 @@ nameclub // nclubv2 // nclubv3 // 1997.07 Name Club Ver. 3 othellos // 1998.07 Othello Shiyouyo (Success) +patocar // 1999.03 Hashire Patrol Car pblbeach // 1996.03 Pebble Beach the Great Shot (T&E Soft) pclb2elk // 1997.07 Print Club Custom pckobe99 // Print Club Custom 3 @@ -34634,6 +34795,7 @@ sss // 1998.12 Steep Slope Sliders (Capcom / Cave / stress // 1998.10 Stress Busters stvbios // suikoenb // 1995.03 Suiko Enbu (Data East) +tatacot // 1995.?? Tatacot techbowl // 1997.12 Technical Bowling thunt // 1997.09 Puzzle & Action Treasure Hunt (Sega (Deniam License)) thuntk // @@ -34837,6 +34999,7 @@ cyvern // 1998.02 (c) 1998 Kaneko (US) cyvernj // 1998.02 (c) 1998 Kaneko (Japan) galpani4 // 1996.09 (c) 1996 Kaneko (Japan) galpani4k // 1996.09 (c) 1996 Kaneko (Korea) +galpanidx // 1996.09 (c) 1996 Kaneko (Asia) galpanis // 1997.04 (c) 1997 Kaneko (Europe) galpanise // 1997.04 (c) 1997 Kaneko (Europe) galpanisj // 1997.04 (c) 1997 Kaneko (Japan) @@ -34874,6 +35037,9 @@ suprridr // (c) 1983 Venture Line + Taito license @source:suprslam.cpp suprslam // (c) 1995 Banpresto +@source:supstarf.cpp +supstarf // + @source:surpratk.cpp suratk // GX911 (c) 1990 (World) suratka // GX911 (c) 1990 (Asia) @@ -35104,7 +35270,8 @@ rambo3u // B93 (c) 1989 Taito America Corporation (US) rastsag2 // B81 (c) 1988 Taito Corporation (Japan) realpunc // D76 (c) 1994 Taito Corporation (Japan) ryujin // ??? (c) 1993 Taito Corporation (Japan) -sbm // C69 (c) 1990 Taito Corporation (Japan) +sbm // C69 (c) 1990 Taito America Corporation (US) +sbmj // C69 (c) 1990 Taito Corporation (Japan) selfeena // ??? (c) 1991 East Technology silentd // ??? (c) 1992 Taito Corporation Japan (World) silentdj // ??? (c) 1992 Taito Corporation (Japan) @@ -35376,6 +35543,7 @@ spacegunu // C57 (c) 1990 Taito America Corporation (US) ainferno // C45 (c) 1990 Taito America Corporation (US) ainfernoj // C45 (c) 1990 Taito Corporation (Japan) topland // B62 (c) 1988 Taito Corporation Japan (World) +toplandj // B62 (c) 1988 Taito Corporation (Japan) @source:taitogn.cpp chaoshea // 1998.10 Chaos Heat (V2.09O) @@ -35826,6 +35994,7 @@ ti1000 // ti1250 // ti125076 // ti1270 // +ti25503 // ti30 // tibusan // tiprog // @@ -35942,8 +36111,11 @@ tm // (c) 1996 Midway Games tm2k // (c) 1996 Midway Games tm2ka // (c) 1996 Midway Games tm2kb // (c) 1996 Midway Games +tm2kspeval // (c) 1996 Midway Games tm3k // (c) 1997 Midway Games tm3ka // (c) 1997 Midway Games +tm3keval // (c) 1997 Midway Games +tm3ksp // (c) 1997 Midway Games tm4k // (c) 1998 Midway Games tm4ka // (c) 1998 Midway Games tm4kb // (c) 1998 Midway Games @@ -36181,9 +36353,6 @@ tokiu // (c) 1989 Tad + Fabtek license (US) tokiua // (c) 1989 Tad + Fabtek license (US) tokip -@source:tokyocop.cpp -tokyocop // (c) 2003 (Arcade TV Game List - P.168, Right, 19 from bottom) - @source:tomcat.cpp tomcat // (proto) (c) 1985 @@ -36570,6 +36739,9 @@ unkhorse // @source:upscope.cpp upscope // (c) 1986 Grand products +@source:usbilliards.cpp +sharkusb // (c) 1975 US Billiards + @source:usgames.cpp superten // (c) 1988 usg182 // (c) 1989 @@ -36839,6 +37011,8 @@ vii // Chintendo / KenSingTon / Jungle Soft / Siatro vsmile // vsmilef // walle // +wirels60 // Wireless 60 +zone60 // Zone 60 @source:vsmilepro.cpp vsmilpro @@ -36888,6 +37062,7 @@ thrild2a // 2001 thrild2ab // 2001 thrild2ac // 2001 thrild2c // 2001 +thrild2j // 2001 tsurugi // 2001 tsurugie // 2001 tsurugij // 2001 @@ -36926,11 +37101,13 @@ votrtnt // 1980 Votrax Type-'N-Talk @source:voyager.cpp voyager // (c) 2002 Team Play, Inc. +policet2 // (c) 2003 Team Play, Inc. @source:vp101.cpp jnero // (c) 2004 ICE/Play Mechanix specfrce // (c) 2002 ICE/Play Mechanix -zoofari // (c) 2006 ICE/Play Mechanix +specfrceo // (c) 2002 ICE/Play Mechanix +zoofari // (c) 2006 ICE/Play Mechanix @source:vpoker.cpp 5acespkr // (c) 198? @@ -38166,7 +38343,8 @@ glpracrj // Gallop Racer (Japanese Ver 9.01.12) hvnsgate // Heaven's Gate (JAPAN) jdredd // Judge Dredd (Rev C) jdreddb // Judge Dredd (Rev B) -jgakuen // Justice Gakuen (JAPAN 971117) +jgakuen // Justice Gakuen (JAPAN 971216) +jgakuen1 // Justice Gakuen (JAPAN 971117) kikaioh // Kikaioh (JAPAN 980914) lpadv // Logic Pro Adventure (JAPAN) mfjump // Monster Farm Jump (JAPAN) diff --git a/src/mame/mess.flt b/src/mame/mess.flt index cff14552aef..f7c12badc22 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -17,6 +17,7 @@ aceex.cpp acrnsys1.cpp adam.cpp advision.cpp +agat.cpp aim65.cpp aim65_40.cpp akaiax80.cpp @@ -84,6 +85,7 @@ bk.cpp bmjr.cpp bml3.cpp bob85.cpp +bpmmicro.cpp br8641.cpp bullet.cpp busicom.cpp @@ -193,6 +195,7 @@ fccpu20.cpp fccpu30.cpp fidel6502.cpp fidel68k.cpp +fidelmcs48.cpp fidelz80.cpp fk1.cpp fm7.cpp @@ -232,6 +235,7 @@ hh_cop400.cpp hh_hmcs40.cpp hh_melps4.cpp hh_pic16.cpp +hh_sm500.cpp hh_sm510.cpp hh_tms1k.cpp hh_ucom4.cpp @@ -351,6 +355,7 @@ mikrosha.cpp mini2440.cpp minicom.cpp miniforce.cpp +minitel_2_rpic.cpp mits680b.cpp mk1.cpp mk14.cpp @@ -403,6 +408,7 @@ nokia_3310.cpp notetaker.cpp novag6502.cpp novag68k.cpp +novagmcs48.cpp ob68k1a.cpp octopus.cpp odyssey2.cpp diff --git a/src/mame/nl.lst b/src/mame/nl.lst index df3f4a5f4ea..86c0a0bc62a 100644 --- a/src/mame/nl.lst +++ b/src/mame/nl.lst @@ -176,3 +176,6 @@ pongf // (c) 1972 Atari //missilex // (c) 1977 Taito //ttblock // (c) 1977 Taito //zzblock // (c) 1979 Taito + +// usbilliards.cpp +//sharkusb // (c) 1975 US Billiards diff --git a/src/mame/video/733_asr.cpp b/src/mame/video/733_asr.cpp index f5fc7277af5..eb87ffe6acb 100644 --- a/src/mame/video/733_asr.cpp +++ b/src/mame/video/733_asr.cpp @@ -79,10 +79,10 @@ PALETTE_INIT_MEMBER(asr733_device, asr733) } -const device_type ASR733 = device_creator; +DEFINE_DEVICE_TYPE(ASR733, asr733_device, "asr733", "733 ASR") asr733_device::asr733_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ASR733, "733 ASR", tag, owner, clock, "asr733", __FILE__), + : device_t(mconfig, ASR733, tag, owner, clock), device_gfx_interface(mconfig, *this, GFXDECODE_NAME(asr733), "palette"), m_keyint_line(*this), m_lineint_line(*this) diff --git a/src/mame/video/733_asr.h b/src/mame/video/733_asr.h index 4f14ededda4..567eaebe1bf 100644 --- a/src/mame/video/733_asr.h +++ b/src/mame/video/733_asr.h @@ -1,18 +1,22 @@ // license:GPL-2.0+ // copyright-holders:Raphael Nabet +#ifndef MAME_VIDEO_733_ASR +#define MAME_VIDEO_733_ASR -#define asr733_chr_region ":gfx1" +#pragma once -enum -{ - /* 8 bytes per character definition */ - asr733_single_char_len = 8, - asr733_chr_region_len = 128*asr733_single_char_len -}; +#define asr733_chr_region ":gfx1" class asr733_device : public device_t, public device_gfx_interface { public: + enum + { + /* 8 bytes per character definition */ + single_char_len = 8, + chr_region_len = 128*single_char_len + }; + asr733_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_PALETTE_INIT(asr733); @@ -20,13 +24,13 @@ public: DECLARE_READ8_MEMBER(cru_r); DECLARE_WRITE8_MEMBER(cru_w); - template static devcb_base &static_set_keyint_callback(device_t &device, _Object object) + template static devcb_base &static_set_keyint_callback(device_t &device, Object &&cb) { - return downcast(device).m_keyint_line.set_callback(object); + return downcast(device).m_keyint_line.set_callback(std::forward(cb)); } - template static devcb_base &static_set_lineint_callback(device_t &device, _Object object) + template static devcb_base &static_set_lineint_callback(device_t &device, Object &&cb) { - return downcast(device).m_lineint_line.set_callback(object); + return downcast(device).m_lineint_line.set_callback(std::forward(cb)); } uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -76,10 +80,12 @@ private: devcb_write_line m_lineint_line; }; -extern const device_type ASR733; +DECLARE_DEVICE_TYPE(ASR733, asr733_device) #define MCFG_ASR733_KEYINT_HANDLER( _intcallb ) \ devcb = &asr733_device::static_set_keyint_callback( *device, DEVCB_##_intcallb ); #define MCFG_ASR733_LINEINT_HANDLER( _intcallb ) \ devcb = &asr733_device::static_set_lineint_callback( *device, DEVCB_##_intcallb ); + +#endif // MAME_VIDEO_733_ASR diff --git a/src/mame/video/911_vdt.cpp b/src/mame/video/911_vdt.cpp index 96a6236c262..ed17d6a32a6 100644 --- a/src/mame/video/911_vdt.cpp +++ b/src/mame/video/911_vdt.cpp @@ -48,31 +48,31 @@ static const gfx_layout fontlayout_8bit = static GFXDECODE_START( vdt911 ) // Caution: Array must use same order as vdt911_model_t // US - GFXDECODE_ENTRY( vdt911_chr_region, vdt911_US_chr_offset, fontlayout_7bit, 0, 4 ) + GFXDECODE_ENTRY( vdt911_chr_region, vdt911_device::US_chr_offset, fontlayout_7bit, 0, 4 ) // UK - GFXDECODE_ENTRY( vdt911_chr_region, vdt911_UK_chr_offset, fontlayout_7bit, 0, 4 ) + GFXDECODE_ENTRY( vdt911_chr_region, vdt911_device::UK_chr_offset, fontlayout_7bit, 0, 4 ) // French (without accented characters) - GFXDECODE_ENTRY( vdt911_chr_region, vdt911_US_chr_offset, fontlayout_7bit, 0, 4 ) + GFXDECODE_ENTRY( vdt911_chr_region, vdt911_device::US_chr_offset, fontlayout_7bit, 0, 4 ) // German - GFXDECODE_ENTRY( vdt911_chr_region, vdt911_german_chr_offset, fontlayout_7bit, 0, 4 ) + GFXDECODE_ENTRY( vdt911_chr_region, vdt911_device::german_chr_offset, fontlayout_7bit, 0, 4 ) // Swedish - GFXDECODE_ENTRY( vdt911_chr_region, vdt911_swedish_chr_offset, fontlayout_7bit, 0, 4 ) + GFXDECODE_ENTRY( vdt911_chr_region, vdt911_device::swedish_chr_offset, fontlayout_7bit, 0, 4 ) // Norwegian - GFXDECODE_ENTRY( vdt911_chr_region, vdt911_norwegian_chr_offset, fontlayout_7bit, 0, 4 ) + GFXDECODE_ENTRY( vdt911_chr_region, vdt911_device::norwegian_chr_offset, fontlayout_7bit, 0, 4 ) // Japanese - GFXDECODE_ENTRY( vdt911_chr_region, vdt911_japanese_chr_offset, fontlayout_8bit, 0, 4 ) + GFXDECODE_ENTRY( vdt911_chr_region, vdt911_device::japanese_chr_offset, fontlayout_8bit, 0, 4 ) // Arabic - // GFXDECODE_ENTRY( vdt911_chr_region, vdt911_arabic_chr_offset, fontlayout_8bit, 0, 4 ) + // GFXDECODE_ENTRY( vdt911_chr_region, vdt911_device::arabic_chr_offset, fontlayout_8bit, 0, 4 ) // FrenchWP (contains accented characters) - GFXDECODE_ENTRY( vdt911_chr_region, vdt911_frenchWP_chr_offset, fontlayout_7bit, 0, 4 ) + GFXDECODE_ENTRY( vdt911_chr_region, vdt911_device::frenchWP_chr_offset, fontlayout_7bit, 0, 4 ) GFXDECODE_END static const unsigned char vdt911_colors[] = @@ -94,13 +94,13 @@ static const unsigned short vdt911_palette[] = Macros for model features */ /* TRUE for Japanese and Arabic terminals, which use 8-bit charcodes and keyboard shift modes */ -#define USES_8BIT_CHARCODES() ((m_model == vdt911_model_Japanese) /*|| (m_model == vdt911_model_Arabic)*/) +#define USES_8BIT_CHARCODES() ((m_model == model::Japanese) /*|| (m_model == model::Arabic)*/) /* TRUE for keyboards which have this extra key (on the left of TAB/SKIP) (Most localized keyboards have it) */ -#define HAS_EXTRA_KEY_67() (! ((m_model == vdt911_model_US) || (m_model == vdt911_model_UK) || (m_model == vdt911_model_French))) +#define HAS_EXTRA_KEY_67() (! ((m_model == model::US) || (m_model == model::UK) || (m_model == model::French))) /* TRUE for keyboards which have this extra key (on the right of space), AND do not use it as a modifier */ -#define HAS_EXTRA_KEY_91() ((m_model == vdt911_model_German) || (m_model == vdt911_model_Swedish) || (m_model == vdt911_model_Norwegian)) +#define HAS_EXTRA_KEY_91() ((m_model == model::German) || (m_model == model::Swedish) || (m_model == model::Norwegian)) /* Initialize vdt911 palette @@ -145,10 +145,10 @@ static void apply_char_overrides(int nb_char_overrides, const char_override_t ch } } -const device_type VDT911 = device_creator; +DEFINE_DEVICE_TYPE(VDT911, vdt911_device, "vdt911", "911 VDT") vdt911_device::vdt911_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VDT911, "911 VDT", tag, owner, clock, "vdt911", __FILE__), + : device_t(mconfig, VDT911, tag, owner, clock), device_gfx_interface(mconfig, *this, GFXDECODE_NAME(vdt911), "palette"), m_beeper(*this, "beeper"), m_keyint_line(*this), @@ -191,49 +191,49 @@ void vdt911_device::device_start() uint8_t *chr = machine().root_device().memregion(vdt911_chr_region)->base(); /* set up US character definitions */ - base = chr+vdt911_US_chr_offset; + base = chr+US_chr_offset; copy_character_matrix_array(char_defs+char_defs_US_base, base); /* set up UK character definitions */ - base = chr+vdt911_UK_chr_offset; + base = chr+UK_chr_offset; copy_character_matrix_array(char_defs+char_defs_US_base, base); apply_char_overrides(sizeof(UK_overrides)/sizeof(char_override_t), UK_overrides, base); /* French character set is identical to US character set */ /* set up German character definitions */ - base = chr+vdt911_german_chr_offset; + base = chr+german_chr_offset; copy_character_matrix_array(char_defs+char_defs_US_base, base); apply_char_overrides(sizeof(german_overrides)/sizeof(char_override_t), german_overrides, base); /* set up Swedish/Finnish character definitions */ - base = chr+vdt911_swedish_chr_offset; + base = chr+swedish_chr_offset; copy_character_matrix_array(char_defs+char_defs_US_base, base); apply_char_overrides(sizeof(swedish_overrides)/sizeof(char_override_t), swedish_overrides, base); /* set up Norwegian/Danish character definitions */ - base = chr+vdt911_norwegian_chr_offset; + base = chr+norwegian_chr_offset; copy_character_matrix_array(char_defs+char_defs_US_base, base); apply_char_overrides(sizeof(norwegian_overrides)/sizeof(char_override_t), norwegian_overrides, base); /* set up French word processing character definitions */ - base = chr+vdt911_frenchWP_chr_offset; + base = chr+frenchWP_chr_offset; copy_character_matrix_array(char_defs+char_defs_US_base, base); apply_char_overrides(sizeof(frenchWP_overrides)/sizeof(char_override_t), frenchWP_overrides, base); /* set up Katakana Japanese character definitions */ - base = chr+vdt911_japanese_chr_offset; + base = chr+japanese_chr_offset; copy_character_matrix_array(char_defs+char_defs_US_base, base); apply_char_overrides(sizeof(japanese_overrides)/sizeof(char_override_t), japanese_overrides, base); - base = chr+vdt911_japanese_chr_offset+128*vdt911_single_char_len; + base = chr+japanese_chr_offset+128*single_char_len; copy_character_matrix_array(char_defs+char_defs_katakana_base, base); #if 0 /* set up Arabic character definitions */ - base = chr+vdt911_arabic_chr_offset; + base = chr+arabic_chr_offset; copy_character_matrix_array(char_defs+char_defs_US_base, base); apply_char_overrides(sizeof(arabic_overrides)/sizeof(char_override_t), arabic_overrides, base); - base = chr+vdt911_arabic_chr_offset+128*vdt911_single_char_len; + base = chr+arabic_chr_offset+128*single_char_len; copy_character_matrix_array(char_defs+char_defs_arabic_base, base); #endif } @@ -241,10 +241,10 @@ void vdt911_device::device_start() void vdt911_device::device_reset() { - m_model = (vdt911_model_t)ioport("LOCALE")->read(); - m_screen_size = (vdt911_screen_size_t)ioport("SCREEN")->read(); + m_model = model(ioport("LOCALE")->read()); + m_screen_size = screen_size(ioport("SCREEN")->read()); - if (m_screen_size == char_960) + if (m_screen_size == screen_size::char_960) m_cursor_address_mask = 0x3ff; /* 1kb of RAM */ else m_cursor_address_mask = 0x7ff; /* 2 kb of RAM */ @@ -460,8 +460,8 @@ WRITE8_MEMBER( vdt911_device::cru_w ) */ void vdt911_device::refresh(bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y) { - gfx_element *gfx = this->gfx(m_model); - int height = (m_screen_size == char_960) ? 12 : /*25*/24; + gfx_element *gfx = this->gfx(unsigned(m_model)); + int height = (m_screen_size == screen_size::char_960) ? 12 : /*25*/24; int use_8bit_charcodes = USES_8BIT_CHARCODES(); int address = 0; @@ -652,7 +652,7 @@ void vdt911_device::check_keyboard() m_last_key_pressed = (i << 4) | j; m_last_modifier_state = modifier_state; - m_keyboard_data = (int)key_translate[m_model][modifier_state][m_last_key_pressed]; + m_keyboard_data = (int)key_translate[unsigned(m_model)][modifier_state][m_last_key_pressed]; m_keyboard_data_ready = 1; if (m_keyboard_interrupt_enable) m_keyint_line(ASSERT_LINE); @@ -667,7 +667,7 @@ void vdt911_device::check_keyboard() int vdt911_device::get_refresh_rate() { // European models have 50 Hz - return ((m_model == vdt911_model_US) || (m_model == vdt911_model_Japanese))? 60 : 50; + return ((m_model == model::US) || (m_model == model::Japanese))? 60 : 50; } uint32_t vdt911_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -679,20 +679,20 @@ uint32_t vdt911_device::screen_update(screen_device &screen, bitmap_ind16 &bitma INPUT_PORTS_START( vdt911 ) PORT_START( "LOCALE" ) PORT_CONFNAME( 0x0f, 0x00, "Terminal language" ) - PORT_CONFSETTING( vdt911_model_US, "English US" ) - PORT_CONFSETTING( vdt911_model_UK, "English UK" ) - PORT_CONFSETTING( vdt911_model_French, "French" ) - PORT_CONFSETTING( vdt911_model_German, "German" ) - PORT_CONFSETTING( vdt911_model_Swedish, "Swedish" ) - PORT_CONFSETTING( vdt911_model_Norwegian, "Norwegian" ) - PORT_CONFSETTING( vdt911_model_Japanese, "Japanese" ) - // PORT_CONFSETTING( vdt911_model_Arabic, "Arabic" ) - PORT_CONFSETTING( vdt911_model_FrenchWP, "French Word Processing" ) + PORT_CONFSETTING( ioport_value(vdt911_device::model::US), "English US" ) + PORT_CONFSETTING( ioport_value(vdt911_device::model::UK), "English UK" ) + PORT_CONFSETTING( ioport_value(vdt911_device::model::French), "French" ) + PORT_CONFSETTING( ioport_value(vdt911_device::model::German), "German" ) + PORT_CONFSETTING( ioport_value(vdt911_device::model::Swedish), "Swedish" ) + PORT_CONFSETTING( ioport_value(vdt911_device::model::Norwegian), "Norwegian" ) + PORT_CONFSETTING( ioport_value(vdt911_device::model::Japanese), "Japanese" ) + // PORT_CONFSETTING( ioport_value(vdt911_device::model::Arabic), "Arabic" ) + PORT_CONFSETTING( ioport_value(vdt911_device::model::FrenchWP), "French Word Processing" ) PORT_START( "SCREEN" ) - PORT_CONFNAME( 0x01, char_960, "Terminal screen size" ) - PORT_CONFSETTING( char_960, "960 chars (12 lines)") - PORT_CONFSETTING( char_1920, "1920 chars (24 lines)") + PORT_CONFNAME( 0x01, ioport_value(vdt911_device::screen_size::char_960), "Terminal screen size" ) + PORT_CONFSETTING( ioport_value(vdt911_device::screen_size::char_960), "960 chars (12 lines)") + PORT_CONFSETTING( ioport_value(vdt911_device::screen_size::char_1920), "1920 chars (24 lines)") PORT_START("KEY0") /* keys 1-16 */ \ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) \ diff --git a/src/mame/video/911_vdt.h b/src/mame/video/911_vdt.h index ea495f12d1e..12134c330f2 100644 --- a/src/mame/video/911_vdt.h +++ b/src/mame/video/911_vdt.h @@ -1,42 +1,48 @@ // license:GPL-2.0+ // copyright-holders:Raphael Nabet +#ifndef MAME_VIDEO_911_VDT_H +#define MAME_VIDEO_911_VDT_H + +#pragma once #include "sound/beep.h" #define vdt911_chr_region ":gfx1" -enum -{ - /* 10 bytes per character definition */ - vdt911_single_char_len = 10, - - vdt911_US_chr_offset = 0, - vdt911_UK_chr_offset = vdt911_US_chr_offset+128*vdt911_single_char_len, - vdt911_german_chr_offset = vdt911_UK_chr_offset+128*vdt911_single_char_len, - vdt911_swedish_chr_offset = vdt911_german_chr_offset+128*vdt911_single_char_len, - vdt911_norwegian_chr_offset = vdt911_swedish_chr_offset+128*vdt911_single_char_len, - vdt911_frenchWP_chr_offset = vdt911_norwegian_chr_offset+128*vdt911_single_char_len, - vdt911_japanese_chr_offset = vdt911_frenchWP_chr_offset+128*vdt911_single_char_len, - - vdt911_chr_region_len = vdt911_japanese_chr_offset+256*vdt911_single_char_len -}; - -enum vdt911_screen_size_t { char_960 = 0, char_1920 }; -enum vdt911_model_t -{ - vdt911_model_US = 0, - vdt911_model_UK, - vdt911_model_French, - vdt911_model_German, - vdt911_model_Swedish, // Swedish/Finnish - vdt911_model_Norwegian, // Norwegian/Danish - vdt911_model_Japanese, // Katakana Japanese - /*vdt911_model_Arabic,*/ // Arabic - vdt911_model_FrenchWP // French word processing -}; class vdt911_device : public device_t, public device_gfx_interface { public: + enum + { + /* 10 bytes per character definition */ + single_char_len = 10, + + US_chr_offset = 0, + UK_chr_offset = US_chr_offset+128*single_char_len, + german_chr_offset = UK_chr_offset+128*single_char_len, + swedish_chr_offset = german_chr_offset+128*single_char_len, + norwegian_chr_offset = swedish_chr_offset+128*single_char_len, + frenchWP_chr_offset = norwegian_chr_offset+128*single_char_len, + japanese_chr_offset = frenchWP_chr_offset+128*single_char_len, + + chr_region_len = japanese_chr_offset+256*single_char_len + }; + + enum class screen_size { char_960 = 0, char_1920 }; + + enum class model + { + US = 0, + UK, + French, + German, + Swedish, // Swedish/Finnish + Norwegian, // Norwegian/Danish + Japanese, // Katakana Japanese + /*Arabic,*/ // Arabic + FrenchWP // French word processing + }; + vdt911_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_READ8_MEMBER(cru_r); @@ -44,14 +50,14 @@ public: DECLARE_PALETTE_INIT(vdt911); - template static devcb_base &static_set_keyint_callback(device_t &device, _Object object) + template static devcb_base &static_set_keyint_callback(device_t &device, Object &&cb) { - return downcast(device).m_keyint_line.set_callback(object); + return downcast(device).m_keyint_line.set_callback(std::forward(cb)); } - template static devcb_base &static_set_lineint_callback(device_t &device, _Object object) + template static devcb_base &static_set_lineint_callback(device_t &device, Object &&cb) { - return downcast(device).m_lineint_line.set_callback(object); + return downcast(device).m_lineint_line.set_callback(std::forward(cb)); } uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -71,8 +77,8 @@ private: int get_refresh_rate(); void check_keyboard(); - vdt911_screen_size_t m_screen_size; // char_960 for 960-char, 12-line model; char_1920 for 1920-char, 24-line model - vdt911_model_t m_model; // country code + screen_size m_screen_size; // char_960 for 960-char, 12-line model; char_1920 for 1920-char, 24-line model + model m_model; // country code uint8_t m_data_reg; // dt911 write buffer uint8_t m_display_RAM[2048]; // vdt911 char buffer (1kbyte for 960-char model, 2kbytes for 1920-char model) @@ -106,10 +112,12 @@ private: devcb_write_line m_lineint_line; }; -extern const device_type VDT911; +DECLARE_DEVICE_TYPE(VDT911, vdt911_device) #define MCFG_VDT911_KEYINT_HANDLER( _intcallb ) \ devcb = &vdt911_device::static_set_keyint_callback( *device, DEVCB_##_intcallb ); #define MCFG_VDT911_LINEINT_HANDLER( _intcallb ) \ devcb = &vdt911_device::static_set_lineint_callback( *device, DEVCB_##_intcallb ); + +#endif // MAME_VIDEO_911_VDT_H diff --git a/src/mame/video/abc1600.cpp b/src/mame/video/abc1600.cpp index 559590ec1cc..93f37116251 100644 --- a/src/mame/video/abc1600.cpp +++ b/src/mame/video/abc1600.cpp @@ -44,7 +44,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type ABC1600_MOVER = device_creator; +DEFINE_DEVICE_TYPE(ABC1600_MOVER, abc1600_mover_device, "abc1600mover", "ABC 1600 Mover") DEVICE_ADDRESS_MAP_START( vram_map, 8, abc1600_mover_device ) @@ -229,7 +229,7 @@ machine_config_constructor abc1600_mover_device::device_mconfig_additions() cons //------------------------------------------------- abc1600_mover_device::abc1600_mover_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, ABC1600_MOVER, "ABC 1600 Mover", tag, owner, clock, "abc1600mover", __FILE__), + device_t(mconfig, ABC1600_MOVER, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("vram", ENDIANNESS_BIG, 16, 18, -1, *ADDRESS_MAP_NAME(mover_map)), m_crtc(*this, SY6845E_TAG), diff --git a/src/mame/video/abc1600.h b/src/mame/video/abc1600.h index eae56c6e1ab..3d3b0059eca 100644 --- a/src/mame/video/abc1600.h +++ b/src/mame/video/abc1600.h @@ -5,11 +5,11 @@ Luxor ABC 1600 Mover emulation **********************************************************************/ +#ifndef MAME_VIDEO_ABC1600_H +#define MAME_VIDEO_ABC1600_H #pragma once -#ifndef __ABC1600_MOVER__ -#define __ABC1600_MOVER__ #include "video/mc6845.h" @@ -145,8 +145,8 @@ private: // device type definition -extern const device_type ABC1600_MOVER; +DECLARE_DEVICE_TYPE(ABC1600_MOVER, abc1600_mover_device) -#endif +#endif // MAME_VIDEO_ABC1600_H diff --git a/src/mame/video/abc80.cpp b/src/mame/video/abc80.cpp index ecc95facf1a..d1ba7f3be0e 100644 --- a/src/mame/video/abc80.cpp +++ b/src/mame/video/abc80.cpp @@ -157,7 +157,7 @@ void abc80_state::draw_scanline(bitmap_rgb32 &bitmap, int y) void abc80_state::video_start() { m_screen->register_screen_bitmap(m_bitmap); - + // start timers m_scanline_timer = timer_alloc(TIMER_ID_SCANLINE); m_scanline_timer->adjust(m_screen->time_until_pos(0, ABC80_HBEND), 0, m_screen->scan_period()); diff --git a/src/mame/video/agat7.cpp b/src/mame/video/agat7.cpp new file mode 100644 index 00000000000..76d5c8e04b6 --- /dev/null +++ b/src/mame/video/agat7.cpp @@ -0,0 +1,376 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +/********************************************************************* + + agat7video.cpp + + Implementation of Agat-7 onboard video. + + 5 video modes: + - 32x32 color text + - 64x32 mono text with reverse video + - 64x64 color graphics + - 128x128 color graphics + - 256x256 mono graphics + + Character generator ROM could have 128 or 256 chars. + + C7xx: video mode select + +*********************************************************************/ + +#include "emu.h" +#include "video/agat7.h" + +#include "screen.h" + + +/*************************************************************************** + PARAMETERS +***************************************************************************/ + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +DEFINE_DEVICE_TYPE(AGAT7VIDEO, agat7video_device, "agat7video", "Agat-7 Video") + +MACHINE_CONFIG_FRAGMENT(agat7video) + MCFG_SCREEN_ADD("a7screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL_10_5MHz, 672, 0, 512, 312, 0, 256) + MCFG_SCREEN_UPDATE_DRIVER(agat7video_device, screen_update) + MCFG_SCREEN_PALETTE("a7palette") + + MCFG_PALETTE_ADD("a7palette", 16) + MCFG_PALETTE_INIT_OWNER(agat7video_device, agat7) +MACHINE_CONFIG_END + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor agat7video_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( agat7video ); +} + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +agat7video_device::agat7video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, AGAT7VIDEO, tag, owner, clock), + m_palette(*this, "a7palette") +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void agat7video_device::device_start() +{ +// save_item(NAME(m_video_mode)); + save_item(NAME(m_start_address)); +} + +void agat7video_device::device_reset() +{ + // XXX to be confirmed + m_video_mode = TEXT_LORES; + m_start_address = 0x7800; +} + + +READ8_MEMBER(agat7video_device::read) +{ + do_io(offset); + return 0; +} + +WRITE8_MEMBER(agat7video_device::write) +{ + do_io(offset); +} + + +void agat7video_device::do_io(int offset) +{ + switch (offset & 3) + { + case 0: + m_video_mode = GRAPHICS_LORES; + m_start_address = (offset) << 9; + logerror("offset %04X, video mode 0 (GRAPHICS_LORES)\n", m_start_address); + break; + + case 1: + m_video_mode = GRAPHICS_HIRES; + m_start_address = ((offset & 0x3f) - 0x01) << 9; + logerror("offset %04X, video mode 1 (GRAPHICS_HIRES)\n", m_start_address); + break; + + case 2: + if (offset > 0x80) { + m_video_mode = TEXT_HIRES; + m_start_address = (offset - 0x82) << 9; + logerror("offset %04X, video mode 2 (TEXT_HIRES)\n", m_start_address); + } else { + m_video_mode = TEXT_LORES; + m_start_address = (offset - 0x02) << 9; + logerror("offset %04X, video mode 2 (TEXT_LORES)\n", m_start_address); + } + break; + + case 3: + m_video_mode = GRAPHICS_MONO; + m_start_address = ((offset & 0x3f) - 0x03) << 9; + logerror("offset %04X, video mode 3 (GRAPHICS_MONO)\n", m_start_address); + break; + } +} + + +void agat7video_device::plot_text_character(bitmap_ind16 &bitmap, int xpos, int ypos, int xscale, uint32_t code, + const uint8_t *textgfx_data, uint32_t textgfx_datalen, int fg, int bg) +{ + int x, y, i; + const uint8_t *chardata; + uint16_t color; + + /* look up the character data */ + chardata = &textgfx_data[(code * 8)]; + + for (y = 0; y < 8; y++) + { + for (x = 0; x < 8; x++) + { + color = (chardata[y] & (1 << (7-x))) ? fg : bg; + + for (i = 0; i < xscale; i++) + { + bitmap.pix16(ypos + y, xpos + (x * xscale) + i) = color; + } + } + } +} + +void agat7video_device::text_update_lores(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow) +{ + int row, col; + uint32_t address; + uint8_t ch, attr; + int fg = 0; + int bg = 0; + + beginrow = std::max(beginrow, cliprect.min_y - (cliprect.min_y % 8)); + endrow = std::min(endrow, cliprect.max_y - (cliprect.max_y % 8) + 7); + + for (row = beginrow; row <= endrow; row += 8) + { + for (col = 0; col < 32; col++) + { + /* calculate address */ + address = m_start_address + (col * 2) + (row * 8); + ch = m_ram_dev->read(address); + attr = m_ram_dev->read(address + 1); + if (BIT(attr, 5)) { + fg = BITSWAP8(attr,7,6,5,3,4,2,1,0) & 15; + bg = 0; + } else { + fg = 0; + bg = BITSWAP8(attr,7,6,5,3,4,2,1,0) & 15; + } + plot_text_character(bitmap, col * 16, row, 2, ch, m_char_ptr, m_char_size, fg, bg); + } + } +} + +void agat7video_device::text_update_hires(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow) +{ + int row, col; + uint32_t address; + uint8_t ch; + int fg, bg; + + beginrow = std::max(beginrow, cliprect.min_y - (cliprect.min_y % 8)); + endrow = std::min(endrow, cliprect.max_y - (cliprect.max_y % 8) + 7); + + if (m_start_address & 0x800) { + fg = 7; bg = 0; + } else { + fg = 0; bg = 7; + } + + for (row = beginrow; row <= endrow; row += 8) + { + for (col = 0; col < 64; col++) + { + /* calculate address */ + address = m_start_address + col + (row * 8); + ch = m_ram_dev->read(address); + plot_text_character(bitmap, col * 8, row, 1, ch, m_char_ptr, m_char_size, fg, bg); + } + } +} + +void agat7video_device::graph_update_mono(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow) +{ + int row, col, b; + uint32_t address; + uint16_t *p; + uint8_t gfx, v; + int fg = 7, bg = 0; + + beginrow = std::max(beginrow, cliprect.min_y - (cliprect.min_y % 8)); + endrow = std::min(endrow, cliprect.max_y - (cliprect.max_y % 8) + 7); + + for (row = beginrow; row <= endrow; row++) + { + p = &bitmap.pix16(row); + for (col = 0; col < 32; col++) + { + address = m_start_address + col + (row * 0x20); + gfx = m_ram_dev->read(address); + + for (b = 0; b < 8; b++) + { + v = (gfx & 0x80); + gfx <<= 1; + *(p++) = v ? fg : bg; + *(p++) = v ? fg : bg; + } + } + } +} + +void agat7video_device::graph_update_hires(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow) +{ + int row, col, b; + uint32_t address; + uint16_t *p; + uint8_t gfx, v; + + beginrow = std::max(beginrow, cliprect.min_y - (cliprect.min_y % 8)); + endrow = std::min(endrow, cliprect.max_y - (cliprect.max_y % 8) + 7); + + for (row = beginrow; row <= endrow; row++) + { + p = &bitmap.pix16(row); + for (col = 0; col < 0x40; col++) + { + address = m_start_address + col + ((row/2) * 0x40); + gfx = m_ram_dev->read(address); + + for (b = 0; b < 2; b++) + { + v = (gfx & 0xf0) >> 4; + gfx <<= 4; + *(p++) = v; + *(p++) = v; + *(p++) = v; + *(p++) = v; + } + } + } +} + +void agat7video_device::graph_update_lores(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow) +{ + int row, col, b; + uint32_t address; + uint16_t *p; + uint8_t gfx, v; + + beginrow = std::max(beginrow, cliprect.min_y - (cliprect.min_y % 8)); + endrow = std::min(endrow, cliprect.max_y - (cliprect.max_y % 8) + 7); + + for (row = beginrow; row <= endrow; row++) + { + p = &bitmap.pix16(row); + for (col = 0; col < 0x20; col++) + { + address = m_start_address + col + ((row/4) * 0x20); + gfx = m_ram_dev->read(address); + + for (b = 0; b < 2; b++) + { + v = (gfx & 0xf0) >> 4; + gfx <<= 4; + *(p++) = v; + *(p++) = v; + *(p++) = v; + *(p++) = v; + *(p++) = v; + *(p++) = v; + *(p++) = v; + *(p++) = v; + } + } + } +} + + +uint32_t agat7video_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + switch (m_video_mode) + { + case TEXT_LORES: + text_update_lores(screen, bitmap, cliprect, 0, 255); + break; + + case TEXT_HIRES: + text_update_hires(screen, bitmap, cliprect, 0, 255); + break; + + case GRAPHICS_MONO: + graph_update_mono(screen, bitmap, cliprect, 0, 255); + break; + + case GRAPHICS_LORES: + graph_update_lores(screen, bitmap, cliprect, 0, 255); + break; + + case GRAPHICS_HIRES: + graph_update_hires(screen, bitmap, cliprect, 0, 255); + break; + + default: + graph_update_mono(screen, bitmap, cliprect, 0, 255); + break; + } + + return 0; +} + +// per http://agatcomp.ru/Reading/IiO/87-2-077.djvu +static const rgb_t agat7_palette[] = +{ + rgb_t::black(), + rgb_t(0xFF, 0x00, 0x00), /* White */ + rgb_t(0x00, 0xFF, 0x00), /* White */ + rgb_t(0xFF, 0xFF, 0x00), /* White */ + rgb_t(0x00, 0x00, 0xFF), /* White */ + rgb_t(0xFF, 0x00, 0xFF), /* White */ + rgb_t(0xFF, 0xFF, 0x00), /* White */ + rgb_t(0xFF, 0xFF, 0xFF), /* White */ + rgb_t::black(), + rgb_t(0x7F, 0x00, 0x00), /* White */ + rgb_t(0x00, 0x7F, 0x00), /* White */ + rgb_t(0x7F, 0x7F, 0x00), /* White */ + rgb_t(0x00, 0x00, 0x7F), /* White */ + rgb_t(0x7F, 0x00, 0x7F), /* White */ + rgb_t(0x7F, 0x7F, 0x00), /* White */ + rgb_t(0x7F, 0x7F, 0x7F) /* White */ +}; + +PALETTE_INIT_MEMBER(agat7video_device, agat7) +{ + palette.set_pen_colors(0, agat7_palette, ARRAY_LENGTH(agat7_palette)); +} diff --git a/src/mame/video/agat7.h b/src/mame/video/agat7.h new file mode 100644 index 00000000000..728b68e8626 --- /dev/null +++ b/src/mame/video/agat7.h @@ -0,0 +1,74 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +/********************************************************************* + + agat7video.h + + Implementation of Agat-7 onboard video. + +*********************************************************************/ + +#ifndef MAME_VIDEO_AGAT7_H +#define MAME_VIDEO_AGAT7_H + +#pragma once + +#include "machine/ram.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class agat7video_device : public device_t +{ +public: + // construction/destruction + agat7video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const override; + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + DECLARE_PALETTE_INIT(agat7); + + DECLARE_READ8_MEMBER(read); + DECLARE_WRITE8_MEMBER(write); + + ram_device *m_ram_dev; + uint8_t *m_char_ptr; + int m_char_size; + +protected: + virtual void device_start() override; + virtual void device_reset() override; + + void text_update_lores(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow); + void text_update_hires(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow); + void graph_update_mono(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow); + void graph_update_lores(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow); + void graph_update_hires(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow); + +private: + void do_io(int offset); + + uint32_t m_start_address; + enum { + TEXT_LORES = 0, + TEXT_HIRES, + GRAPHICS_LORES, + GRAPHICS_HIRES, + GRAPHICS_MONO + } m_video_mode; + + void plot_text_character(bitmap_ind16 &bitmap, int xpos, int ypos, int xscale, uint32_t code, const uint8_t *textgfx_data, uint32_t textgfx_datalen, int fg, int bg); + +public: + required_device m_palette; +}; + +// device type definition +DECLARE_DEVICE_TYPE(AGAT7VIDEO, agat7video_device) + +#endif // MAME_VIDEO_AGAT7_H diff --git a/src/mame/video/airbustr.cpp b/src/mame/video/airbustr.cpp index 233695e39d7..9e84296967a 100644 --- a/src/mame/video/airbustr.cpp +++ b/src/mame/video/airbustr.cpp @@ -136,7 +136,7 @@ uint32_t airbustr_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -void airbustr_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(airbustr_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/airraid_dev.cpp b/src/mame/video/airraid_dev.cpp index 1b3d1b768e3..3750b5e296d 100644 --- a/src/mame/video/airraid_dev.cpp +++ b/src/mame/video/airraid_dev.cpp @@ -9,10 +9,10 @@ #include "emu.h" #include "airraid_dev.h" -const device_type AIRRAID_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(AIRRAID_VIDEO, airraid_video_device, "airraid_vid", "Seibu Air Raid Video") airraid_video_device::airraid_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, AIRRAID_VIDEO, "Seibu Air Raid Video", tag, owner, clock, "airraid_vid", __FILE__), + : device_t(mconfig, AIRRAID_VIDEO, tag, owner, clock), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "^palette"), m_screen(*this, "screen"), diff --git a/src/mame/video/airraid_dev.h b/src/mame/video/airraid_dev.h index fb91af5e28c..c00a6f011bd 100644 --- a/src/mame/video/airraid_dev.h +++ b/src/mame/video/airraid_dev.h @@ -9,7 +9,7 @@ #include "screen.h" -extern const device_type AIRRAID_VIDEO; +DECLARE_DEVICE_TYPE(AIRRAID_VIDEO, airraid_video_device) #define MCFG_AIRRAID_VIDEO_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, AIRRAID_VIDEO, 0) diff --git a/src/mame/video/antic.cpp b/src/mame/video/antic.cpp index 247173d40fd..c5f4a51e819 100644 --- a/src/mame/video/antic.cpp +++ b/src/mame/video/antic.cpp @@ -20,40 +20,321 @@ #define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#define CYCLES_PER_LINE 114 /* total number of cpu cycles per scanline (incl. hblank) */ +#define CYCLES_REFRESH 9 /* number of cycles lost for ANTICs RAM refresh using DMA */ +#define CYCLES_HSTART 32 /* where does the ANTIC DMA fetch start */ +#define CYCLES_DLI_NMI 7 /* number of cycles until the CPU recognizes a DLI */ +#define CYCLES_HSYNC 104 /* where does the HSYNC position of a scanline start */ + +#define PMOFFSET 32 /* # of pixels to adjust p/m hpos */ + +#define VPAGE 0xf000 /* 4K page mask for video data src */ +#define VOFFS 0x0fff /* 4K offset mask for video data src */ +#define DPAGE 0xfc00 /* 1K page mask for display list */ +#define DOFFS 0x03ff /* 1K offset mask for display list */ + +#define DLI_NMI 0x80 /* 10000000b bit mask for display list interrupt */ +#define VBL_NMI 0x40 /* 01000000b bit mask for vertical blank interrupt */ + +#define ANTIC_DLI 0x80 /* 10000000b cmds with display list intr */ +#define ANTIC_LMS 0x40 /* 01000000b cmds with load memory scan */ +#define ANTIC_VSCR 0x20 /* 00100000b cmds with vertical scroll */ +#define ANTIC_HSCR 0x10 /* 00010000b cmds with horizontal scroll */ +#define ANTIC_MODE 0x0f /* 00001111b cmd mode mask */ + +#define DMA_ANTIC 0x20 /* 00100000b ANTIC DMA enable */ +#define DMA_PM_DBLLINE 0x10 /* 00010000b double line player/missile */ +#define DMA_PLAYER 0x08 /* 00001000b player DMA enable */ +#define DMA_MISSILE 0x04 /* 00000100b missile DMA enable */ + +#define OFS_MIS_SINGLE 3*256 /* offset missiles single line DMA */ +#define OFS_PL0_SINGLE 4*256 /* offset player 0 single line DMA */ +#define OFS_PL1_SINGLE 5*256 /* offset player 1 single line DMA */ +#define OFS_PL2_SINGLE 6*256 /* offset player 2 single line DMA */ +#define OFS_PL3_SINGLE 7*256 /* offset player 3 single line DMA */ + +#define OFS_MIS_DOUBLE 3*128 /* offset missiles double line DMA */ +#define OFS_PL0_DOUBLE 4*128 /* offset player 0 double line DMA */ +#define OFS_PL1_DOUBLE 5*128 /* offset player 1 double line DMA */ +#define OFS_PL2_DOUBLE 6*128 /* offset player 2 double line DMA */ +#define OFS_PL3_DOUBLE 7*128 /* offset player 3 double line DMA */ + +#define PFD 0x00 /* 00000000b playfield default color */ + +#define PBK 0x00 /* 00000000b playfield background */ +#define PF0 0x01 /* 00000001b playfield color #0 */ +#define PF1 0x02 /* 00000010b playfield color #1 */ +#define PF2 0x04 /* 00000100b playfield color #2 */ +#define PF3 0x08 /* 00001000b playfield color #3 */ +#define PL0 0x11 /* 00010001b player #0 */ +#define PL1 0x12 /* 00010010b player #1 */ +#define PL2 0x14 /* 00010100b player #2 */ +#define PL3 0x18 /* 00011000b player #3 */ +#define MI0 0x21 /* 00100001b missile #0 */ +#define MI1 0x22 /* 00100010b missile #1 */ +#define MI2 0x24 /* 00100100b missile #2 */ +#define MI3 0x28 /* 00101000b missile #3 */ +#define T00 0x40 /* 01000000b text mode pixels 00 */ +#define P000 0x48 /* 01001000b player #0 pixels 00 */ +#define P100 0x4a /* 01001010b player #1 pixels 00 */ +#define P200 0x4c /* 01001100b player #2 pixels 00 */ +#define P300 0x4e /* 01001110b player #3 pixels 00 */ +#define P400 0x4f /* 01001111b missiles pixels 00 */ +#define T01 0x50 /* 01010000b text mode pixels 01 */ +#define P001 0x58 /* 01011000b player #0 pixels 01 */ +#define P101 0x5a /* 01011010b player #1 pixels 01 */ +#define P201 0x5c /* 01011100b player #2 pixels 01 */ +#define P301 0x5e /* 01011110b player #3 pixels 01 */ +#define P401 0x5f /* 01011111b missiles pixels 01 */ +#define T10 0x60 /* 01100000b text mode pixels 10 */ +#define P010 0x68 /* 01101000b player #0 pixels 10 */ +#define P110 0x6a /* 01101010b player #1 pixels 10 */ +#define P210 0x6c /* 01101100b player #2 pixels 10 */ +#define P310 0x6e /* 01101110b player #3 pixels 10 */ +#define P410 0x6f /* 01101111b missiles pixels 10 */ +#define T11 0x70 /* 01110000b text mode pixels 11 */ +#define P011 0x78 /* 01111000b player #0 pixels 11 */ +#define P111 0x7a /* 01111010b player #1 pixels 11 */ +#define P211 0x7c /* 01111100b player #2 pixels 11 */ +#define P311 0x7e /* 01111110b player #3 pixels 11 */ +#define P411 0x7f /* 01111111b missiles pixels 11 */ +#define G00 0x80 /* 10000000b hires gfx pixels 00 */ +#define G01 0x90 /* 10010000b hires gfx pixels 01 */ +#define G10 0xa0 /* 10100000b hires gfx pixels 10 */ +#define G11 0xb0 /* 10110000b hires gfx pixels 11 */ +#define GT1 0xc0 /* 11000000b gtia mode 1 */ +#define GT2 0xd0 /* 11010000b gtia mode 2 */ +#define GT3 0xe0 /* 11100000b gtia mode 3 */ +#define ILL 0xfe /* 11111110b illegal priority */ +#define EOR 0xff /* 11111111b EOR mode color */ + +#define LUM 0x0f /* 00001111b luminance bits */ +#define HUE 0xf0 /* 11110000b hue bits */ + +#define TRIGGER_VBLANK 64715 +#define TRIGGER_STEAL 64716 +#define TRIGGER_HSYNC 64717 + + +/***************************************************************************** + * If your memcpy does not expand too well if you use it with constant + * size_t field, you might want to define these macros somehow different. + * NOTE: dst is not necessarily uint32_t aligned (because of horz scrolling)! + *****************************************************************************/ +#define COPY4(dst,s1) *dst++ = s1 +#define COPY8(dst,s1,s2) *dst++ = s1; *dst++ = s2 +#define COPY16(dst,s1,s2,s3,s4) *dst++ = s1; *dst++ = s2; *dst++ = s3; *dst++ = s4 + +#define RDANTIC(space) space.read_byte(m_dpage+m_doffs) +#define RDVIDEO(space,o) space.read_byte(m_vpage+((m_voffs+(o))&VOFFS)) +#define RDCHGEN(space,o) space.read_byte(m_chbase+(o)) +#define RDPMGFXS(space,o) space.read_byte(m_pmbase_s+(o)+(m_scanline>>1)) +#define RDPMGFXD(space,o) space.read_byte(m_pmbase_d+(o)+m_scanline) + +#define PREPARE() \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET] + +#define PREPARE_TXT2(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + { \ + uint16_t ch = RDVIDEO(space,i) << 3; \ + if (ch & 0x400) \ + { \ + ch = RDCHGEN(space,(ch & 0x3f8) + m_w.chbasl); \ + ch = (ch ^ m_chxor) & m_chand; \ + } \ + else \ + { \ + ch = RDCHGEN(space,ch + m_w.chbasl); \ + } \ + video->data[i] = ch; \ + } + +#define PREPARE_TXT3(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + { \ + uint16_t ch = RDVIDEO(space,i) << 3; \ + if (ch & 0x400) \ + { \ + ch &= 0x3f8; \ + if ((ch & 0x300) == 0x300) \ + { \ + if (m_w.chbasl < 2) /* first two lines empty */ \ + ch = 0x00; \ + else /* lines 2..7 are standard, 8&9 are 0&1 */ \ + ch = RDCHGEN(space,ch + (m_w.chbasl & 7));\ + } \ + else \ + { \ + if (m_w.chbasl > 7) /* last two lines empty */ \ + ch = 0x00; \ + else /* lines 0..7 are standard */ \ + ch = RDCHGEN(space,ch + m_w.chbasl); \ + } \ + ch = (ch ^ m_chxor) & m_chand; \ + } \ + else \ + { \ + if ((ch & 0x300) == 0x300) \ + { \ + if (m_w.chbasl < 2) /* first two lines empty */ \ + ch = 0x00; \ + else /* lines 2..7 are standard, 8&9 are 0&1 */ \ + ch = RDCHGEN(space,ch + (m_w.chbasl & 7));\ + } \ + else \ + { \ + if (m_w.chbasl > 7) /* last two lines empty */ \ + ch = 0x00; \ + else /* lines 0..7 are standard */ \ + ch = RDCHGEN(space,ch + m_w.chbasl); \ + } \ + } \ + video->data[i] = ch; \ + } + +#define PREPARE_TXT45(space,width,shift) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + { \ + uint16_t ch = RDVIDEO(space,i) << 3; \ + ch = ((ch>>2)&0x100)|RDCHGEN(space,(ch&0x3f8)+(m_w.chbasl>>shift)); \ + video->data[i] = ch; \ + } + + +#define PREPARE_TXT67(space,width,shift) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + { \ + uint16_t ch = RDVIDEO(space,i) << 3; \ + ch = (ch&0x600)|(RDCHGEN(space,(ch&0x1f8)+(m_w.chbasl>>shift))<<1); \ + video->data[i] = ch; \ + } + +#define PREPARE_GFX8(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + video->data[i] = RDVIDEO(space,i) << 2 + +#define PREPARE_GFX9BC(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + video->data[i] = RDVIDEO(space,i) << 1 + +#define PREPARE_GFXA(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + video->data[i] = RDVIDEO(space,i) << 1 + +#define PREPARE_GFXDE(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + video->data[i] = RDVIDEO(space,i) + +#define PREPARE_GFXF(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + video->data[i] = RDVIDEO(space,i) + +#define PREPARE_GFXG1(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + video->data[i] = RDVIDEO(space,i) + +#define PREPARE_GFXG2(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + video->data[i] = RDVIDEO(space,i) + +#define PREPARE_GFXG3(space,width) \ + uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ + for (int i = 0; i < width; i++) \ + video->data[i] = RDVIDEO(space,i) + +/****************************************************************** + * common end of a single antic/gtia mode emulation function + ******************************************************************/ +#define POST() \ + --m_modelines + +#define POST_GFX(width) \ + m_steal_cycles += width; \ + if (--m_modelines == 0) \ + m_voffs = (m_voffs + width) & VOFFS + +#define POST_TXT(width) \ + m_steal_cycles += width; \ + if (--m_modelines == 0) \ + m_voffs = (m_voffs + width) & VOFFS; \ + else if (m_w.chactl & 4) \ + m_w.chbasl--; \ + else \ + m_w.chbasl++ + +/* erase a number of color clocks to background color PBK */ +#define ERASE(size) \ + for (int i = 0; i < size; i++) \ + { \ + *dst++ = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ + } +#define ZAP48() \ + dst = (uint32_t *)&antic.cclock[PMOFFSET]; \ + dst[ 0] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ + dst[ 1] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ + dst[ 2] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ + dst[45] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ + dst[46] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ + dst[47] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK + +#define REP(FUNC, size) \ + for (int i = 0; i < size; i++) \ + { \ + FUNC(i); \ + } + + +constexpr unsigned antic_device::TOTAL_LINES_60HZ; +constexpr unsigned antic_device::TOTAL_LINES_50HZ; +constexpr double antic_device::FRAME_RATE_50HZ; +constexpr double antic_device::FRAME_RATE_60HZ; + // devices -const device_type ATARI_ANTIC = device_creator; +DEFINE_DEVICE_TYPE(ATARI_ANTIC, antic_device, "antic", "Atari ANTIC") //------------------------------------------------- // antic_device - constructor //------------------------------------------------- antic_device::antic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, ATARI_ANTIC, "Atari ANTIC", tag, owner, clock, "antic", __FILE__), - device_video_interface(mconfig, *this), - m_gtia_tag(nullptr), - m_maincpu(*this, ":maincpu"), - m_djoy_b(*this, ":djoy_b"), - m_artifacts(*this, ":artifacts"), - m_tv_artifacts(0), - m_render1(0), - m_render2(0), - m_render3(0), - m_cmd(0), - m_steal_cycles(0), - m_vscrol_old(0), - m_hscrol_old(0), - m_modelines(0), - m_chbase(0), - m_chand(0), - m_chxor(0), - m_scanline(0), - m_pfwidth(0), - m_dpage(0), - m_doffs(0), - m_vpage(0), - m_voffs(0), - m_pmbase_s(0), - m_pmbase_d(0) + device_t(mconfig, ATARI_ANTIC, tag, owner, clock), + device_video_interface(mconfig, *this), + m_gtia_tag(nullptr), + m_maincpu(*this, ":maincpu"), + m_djoy_b(*this, ":djoy_b"), + m_artifacts(*this, ":artifacts"), + m_tv_artifacts(0), + m_render1(0), + m_render2(0), + m_render3(0), + m_cmd(0), + m_steal_cycles(0), + m_vscrol_old(0), + m_hscrol_old(0), + m_modelines(0), + m_chbase(0), + m_chand(0), + m_chxor(0), + m_scanline(0), + m_pfwidth(0), + m_dpage(0), + m_doffs(0), + m_vpage(0), + m_voffs(0), + m_pmbase_s(0), + m_pmbase_d(0) { } diff --git a/src/mame/video/antic.h b/src/mame/video/antic.h index 68915e19f55..9aa7053ab03 100644 --- a/src/mame/video/antic.h +++ b/src/mame/video/antic.h @@ -10,360 +10,38 @@ ***************************************************************************/ -#ifndef __ANTIC_H__ -#define __ANTIC_H__ - -#include "video/gtia.h" +#ifndef MAME_VIDEO_ANTIC_H +#define MAME_VIDEO_ANTIC_H +#pragma once -#define CYCLES_PER_LINE 114 /* total number of cpu cycles per scanline (incl. hblank) */ -#define CYCLES_REFRESH 9 /* number of cycles lost for ANTICs RAM refresh using DMA */ -#define CYCLES_HSTART 32 /* where does the ANTIC DMA fetch start */ -#define CYCLES_DLI_NMI 7 /* number of cycles until the CPU recognizes a DLI */ -#define CYCLES_HSYNC 104 /* where does the HSYNC position of a scanline start */ - -#define VBL_END 8 /* vblank ends in this scanline */ -#define VDATA_START 11 /* video display begins in this scanline */ -#define VDATA_END 244 /* video display ends in this scanline */ -#define VBL_START 248 /* vblank starts in this scanline */ - -/* total number of lines per frame (incl. vblank) */ -#define TOTAL_LINES_60HZ 262 -#define TOTAL_LINES_50HZ 312 - -/* frame rates */ -#define FRAME_RATE_50HZ (double)1789790/114/TOTAL_LINES_50HZ -#define FRAME_RATE_60HZ (double)1789790/114/TOTAL_LINES_60HZ - -#define HWIDTH 48 /* total characters per line */ -#define HCHARS 44 /* visible characters per line */ -#define VHEIGHT 32 -#define VCHARS (VDATA_END-VDATA_START+7)/8 -#define BUF_OFFS0 (HWIDTH-HCHARS)/2 -#define MIN_X ((HWIDTH-42)/2)*8 -#define MAX_X MIN_X+42*8-1 -#define MIN_Y VDATA_START -#define MAX_Y VDATA_END-8-1 - -#define PMOFFSET 32 /* # of pixels to adjust p/m hpos */ - -#define VPAGE 0xf000 /* 4K page mask for video data src */ -#define VOFFS 0x0fff /* 4K offset mask for video data src */ -#define DPAGE 0xfc00 /* 1K page mask for display list */ -#define DOFFS 0x03ff /* 1K offset mask for display list */ - -#define DLI_NMI 0x80 /* 10000000b bit mask for display list interrupt */ -#define VBL_NMI 0x40 /* 01000000b bit mask for vertical blank interrupt */ - -#define ANTIC_DLI 0x80 /* 10000000b cmds with display list intr */ -#define ANTIC_LMS 0x40 /* 01000000b cmds with load memory scan */ -#define ANTIC_VSCR 0x20 /* 00100000b cmds with vertical scroll */ -#define ANTIC_HSCR 0x10 /* 00010000b cmds with horizontal scroll */ -#define ANTIC_MODE 0x0f /* 00001111b cmd mode mask */ - -#define DMA_ANTIC 0x20 /* 00100000b ANTIC DMA enable */ -#define DMA_PM_DBLLINE 0x10 /* 00010000b double line player/missile */ -#define DMA_PLAYER 0x08 /* 00001000b player DMA enable */ -#define DMA_MISSILE 0x04 /* 00000100b missile DMA enable */ - -#define OFS_MIS_SINGLE 3*256 /* offset missiles single line DMA */ -#define OFS_PL0_SINGLE 4*256 /* offset player 0 single line DMA */ -#define OFS_PL1_SINGLE 5*256 /* offset player 1 single line DMA */ -#define OFS_PL2_SINGLE 6*256 /* offset player 2 single line DMA */ -#define OFS_PL3_SINGLE 7*256 /* offset player 3 single line DMA */ - -#define OFS_MIS_DOUBLE 3*128 /* offset missiles double line DMA */ -#define OFS_PL0_DOUBLE 4*128 /* offset player 0 double line DMA */ -#define OFS_PL1_DOUBLE 5*128 /* offset player 1 double line DMA */ -#define OFS_PL2_DOUBLE 6*128 /* offset player 2 double line DMA */ -#define OFS_PL3_DOUBLE 7*128 /* offset player 3 double line DMA */ - -#define PFD 0x00 /* 00000000b playfield default color */ - -#define PBK 0x00 /* 00000000b playfield background */ -#define PF0 0x01 /* 00000001b playfield color #0 */ -#define PF1 0x02 /* 00000010b playfield color #1 */ -#define PF2 0x04 /* 00000100b playfield color #2 */ -#define PF3 0x08 /* 00001000b playfield color #3 */ -#define PL0 0x11 /* 00010001b player #0 */ -#define PL1 0x12 /* 00010010b player #1 */ -#define PL2 0x14 /* 00010100b player #2 */ -#define PL3 0x18 /* 00011000b player #3 */ -#define MI0 0x21 /* 00100001b missile #0 */ -#define MI1 0x22 /* 00100010b missile #1 */ -#define MI2 0x24 /* 00100100b missile #2 */ -#define MI3 0x28 /* 00101000b missile #3 */ -#define T00 0x40 /* 01000000b text mode pixels 00 */ -#define P000 0x48 /* 01001000b player #0 pixels 00 */ -#define P100 0x4a /* 01001010b player #1 pixels 00 */ -#define P200 0x4c /* 01001100b player #2 pixels 00 */ -#define P300 0x4e /* 01001110b player #3 pixels 00 */ -#define P400 0x4f /* 01001111b missiles pixels 00 */ -#define T01 0x50 /* 01010000b text mode pixels 01 */ -#define P001 0x58 /* 01011000b player #0 pixels 01 */ -#define P101 0x5a /* 01011010b player #1 pixels 01 */ -#define P201 0x5c /* 01011100b player #2 pixels 01 */ -#define P301 0x5e /* 01011110b player #3 pixels 01 */ -#define P401 0x5f /* 01011111b missiles pixels 01 */ -#define T10 0x60 /* 01100000b text mode pixels 10 */ -#define P010 0x68 /* 01101000b player #0 pixels 10 */ -#define P110 0x6a /* 01101010b player #1 pixels 10 */ -#define P210 0x6c /* 01101100b player #2 pixels 10 */ -#define P310 0x6e /* 01101110b player #3 pixels 10 */ -#define P410 0x6f /* 01101111b missiles pixels 10 */ -#define T11 0x70 /* 01110000b text mode pixels 11 */ -#define P011 0x78 /* 01111000b player #0 pixels 11 */ -#define P111 0x7a /* 01111010b player #1 pixels 11 */ -#define P211 0x7c /* 01111100b player #2 pixels 11 */ -#define P311 0x7e /* 01111110b player #3 pixels 11 */ -#define P411 0x7f /* 01111111b missiles pixels 11 */ -#define G00 0x80 /* 10000000b hires gfx pixels 00 */ -#define G01 0x90 /* 10010000b hires gfx pixels 01 */ -#define G10 0xa0 /* 10100000b hires gfx pixels 10 */ -#define G11 0xb0 /* 10110000b hires gfx pixels 11 */ -#define GT1 0xc0 /* 11000000b gtia mode 1 */ -#define GT2 0xd0 /* 11010000b gtia mode 2 */ -#define GT3 0xe0 /* 11100000b gtia mode 3 */ -#define ILL 0xfe /* 11111110b illegal priority */ -#define EOR 0xff /* 11111111b EOR mode color */ - -#define LUM 0x0f /* 00001111b luminance bits */ -#define HUE 0xf0 /* 11110000b hue bits */ - -#define TRIGGER_VBLANK 64715 -#define TRIGGER_STEAL 64716 -#define TRIGGER_HSYNC 64717 - - -/***************************************************************************** - * If your memcpy does not expand too well if you use it with constant - * size_t field, you might want to define these macros somehow different. - * NOTE: dst is not necessarily uint32_t aligned (because of horz scrolling)! - *****************************************************************************/ -#define COPY4(dst,s1) *dst++ = s1 -#define COPY8(dst,s1,s2) *dst++ = s1; *dst++ = s2 -#define COPY16(dst,s1,s2,s3,s4) *dst++ = s1; *dst++ = s2; *dst++ = s3; *dst++ = s4 - -#define RDANTIC(space) space.read_byte(m_dpage+m_doffs) -#define RDVIDEO(space,o) space.read_byte(m_vpage+((m_voffs+(o))&VOFFS)) -#define RDCHGEN(space,o) space.read_byte(m_chbase+(o)) -#define RDPMGFXS(space,o) space.read_byte(m_pmbase_s+(o)+(m_scanline>>1)) -#define RDPMGFXD(space,o) space.read_byte(m_pmbase_d+(o)+m_scanline) - -#define PREPARE() \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET] - -#define PREPARE_TXT2(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - { \ - uint16_t ch = RDVIDEO(space,i) << 3; \ - if (ch & 0x400) \ - { \ - ch = RDCHGEN(space,(ch & 0x3f8) + m_w.chbasl); \ - ch = (ch ^ m_chxor) & m_chand; \ - } \ - else \ - { \ - ch = RDCHGEN(space,ch + m_w.chbasl); \ - } \ - video->data[i] = ch; \ - } - -#define PREPARE_TXT3(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - { \ - uint16_t ch = RDVIDEO(space,i) << 3; \ - if (ch & 0x400) \ - { \ - ch &= 0x3f8; \ - if ((ch & 0x300) == 0x300) \ - { \ - if (m_w.chbasl < 2) /* first two lines empty */ \ - ch = 0x00; \ - else /* lines 2..7 are standard, 8&9 are 0&1 */ \ - ch = RDCHGEN(space,ch + (m_w.chbasl & 7));\ - } \ - else \ - { \ - if (m_w.chbasl > 7) /* last two lines empty */ \ - ch = 0x00; \ - else /* lines 0..7 are standard */ \ - ch = RDCHGEN(space,ch + m_w.chbasl); \ - } \ - ch = (ch ^ m_chxor) & m_chand; \ - } \ - else \ - { \ - if ((ch & 0x300) == 0x300) \ - { \ - if (m_w.chbasl < 2) /* first two lines empty */ \ - ch = 0x00; \ - else /* lines 2..7 are standard, 8&9 are 0&1 */ \ - ch = RDCHGEN(space,ch + (m_w.chbasl & 7));\ - } \ - else \ - { \ - if (m_w.chbasl > 7) /* last two lines empty */ \ - ch = 0x00; \ - else /* lines 0..7 are standard */ \ - ch = RDCHGEN(space,ch + m_w.chbasl); \ - } \ - } \ - video->data[i] = ch; \ - } - -#define PREPARE_TXT45(space,width,shift) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - { \ - uint16_t ch = RDVIDEO(space,i) << 3; \ - ch = ((ch>>2)&0x100)|RDCHGEN(space,(ch&0x3f8)+(m_w.chbasl>>shift)); \ - video->data[i] = ch; \ - } - - -#define PREPARE_TXT67(space,width,shift) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - { \ - uint16_t ch = RDVIDEO(space,i) << 3; \ - ch = (ch&0x600)|(RDCHGEN(space,(ch&0x1f8)+(m_w.chbasl>>shift))<<1); \ - video->data[i] = ch; \ - } - -#define PREPARE_GFX8(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - video->data[i] = RDVIDEO(space,i) << 2 - -#define PREPARE_GFX9BC(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - video->data[i] = RDVIDEO(space,i) << 1 - -#define PREPARE_GFXA(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - video->data[i] = RDVIDEO(space,i) << 1 - -#define PREPARE_GFXDE(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - video->data[i] = RDVIDEO(space,i) - -#define PREPARE_GFXF(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - video->data[i] = RDVIDEO(space,i) - -#define PREPARE_GFXG1(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - video->data[i] = RDVIDEO(space,i) - -#define PREPARE_GFXG2(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - video->data[i] = RDVIDEO(space,i) - -#define PREPARE_GFXG3(space,width) \ - uint32_t *dst = (uint32_t *)&m_cclock[PMOFFSET]; \ - for (int i = 0; i < width; i++) \ - video->data[i] = RDVIDEO(space,i) - -/****************************************************************** - * common end of a single antic/gtia mode emulation function - ******************************************************************/ -#define POST() \ - --m_modelines - -#define POST_GFX(width) \ - m_steal_cycles += width; \ - if (--m_modelines == 0) \ - m_voffs = (m_voffs + width) & VOFFS - -#define POST_TXT(width) \ - m_steal_cycles += width; \ - if (--m_modelines == 0) \ - m_voffs = (m_voffs + width) & VOFFS; \ - else if (m_w.chactl & 4) \ - m_w.chbasl--; \ - else \ - m_w.chbasl++ - -/* erase a number of color clocks to background color PBK */ -#define ERASE(size) \ - for (int i = 0; i < size; i++) \ - { \ - *dst++ = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ - } -#define ZAP48() \ - dst = (uint32_t *)&antic.cclock[PMOFFSET]; \ - dst[ 0] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ - dst[ 1] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ - dst[ 2] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ - dst[45] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ - dst[46] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \ - dst[47] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK - -#define REP(FUNC, size) \ - for (int i = 0; i < size; i++) \ - { \ - FUNC(i); \ - } - - -struct ANTIC_R { - uint8_t antic00; /* 00 nothing */ - uint8_t antic01; /* 01 nothing */ - uint8_t antic02; /* 02 nothing */ - uint8_t antic03; /* 03 nothing */ - uint8_t antic04; /* 04 nothing */ - uint8_t antic05; /* 05 nothing */ - uint8_t antic06; /* 06 nothing */ - uint8_t antic07; /* 07 nothing */ - uint8_t antic08; /* 08 nothing */ - uint8_t antic09; /* 09 nothing */ - uint8_t antic0a; /* 0a nothing */ - uint8_t vcount; /* 0b vertical (scanline) counter */ - uint8_t penh; /* 0c light pen horizontal pos */ - uint8_t penv; /* 0d light pen vertical pos */ - uint8_t antic0e; /* 0e nothing */ - uint8_t nmist; /* 0f NMI status */ -}; /* read registers */ - -struct ANTIC_W { - uint8_t dmactl; /* 00 write DMA control */ - uint8_t chactl; /* 01 write character control */ - uint8_t dlistl; /* 02 display list low */ - uint8_t dlisth; /* 03 display list high */ - uint8_t hscrol; /* 04 horz scroll */ - uint8_t vscrol; /* 05 vert scroll */ - uint8_t pmbasl; /* 06 player/missile base addr low */ - uint8_t pmbash; /* 07 player/missile base addr high */ - uint8_t chbasl; /* 08 character generator base addr low */ - uint8_t chbash; /* 09 character generator base addr high */ - uint8_t wsync; /* 0a wait for hsync */ - uint8_t antic0b; /* 0b nothing */ - uint8_t antic0c; /* 0c nothing */ - uint8_t antic0d; /* 0d nothing */ - uint8_t nmien; /* 0e NMI enable */ - uint8_t nmires; /* 0f NMI reset */ -}; /* write registers */ - -/* per scanline buffer for video data (and optimization variables) */ -struct VIDEO { - uint32_t cmd; /* antic command for this scanline */ - uint16_t data[HWIDTH]; /* graphics data buffer (text through chargen) */ -}; +#include "video/gtia.h" -class antic_device : public device_t, - public device_video_interface +class antic_device : public device_t, public device_video_interface { +private: + static constexpr unsigned VBL_END = 8; // vblank ends in this scanline + static constexpr unsigned VDATA_START = 11; // video display begins in this scanline + static constexpr unsigned VDATA_END = 244; // video display ends in this scanline + static constexpr unsigned VBL_START = 248; // vblank starts in this scanline + public: + // total number of lines per frame (incl. vblank) + static constexpr unsigned TOTAL_LINES_60HZ = 262; + static constexpr unsigned TOTAL_LINES_50HZ = 312; + + // frame rates + static constexpr double FRAME_RATE_50HZ = 1789790.0 / 114 / TOTAL_LINES_50HZ; + static constexpr double FRAME_RATE_60HZ = 1789790.0 / 114 / TOTAL_LINES_60HZ; + + static constexpr unsigned HWIDTH = 48; // total characters per line + static constexpr unsigned VHEIGHT = 32; + static constexpr unsigned MIN_X = ((HWIDTH - 42) / 2) * 8; + static constexpr unsigned MAX_X = MIN_X + (42 * 8) - 1; + static constexpr unsigned MIN_Y = VDATA_START; + static constexpr unsigned MAX_Y = VDATA_END - 8 - 1; + // construction/destruction antic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -381,10 +59,59 @@ public: void generic_interrupt(int button_count); private: - static const device_timer_id TIMER_CYCLE_STEAL = 0; - static const device_timer_id TIMER_ISSUE_DLI = 1; - static const device_timer_id TIMER_LINE_REND = 2; - static const device_timer_id TIMER_LINE_DONE = 3; + static constexpr device_timer_id TIMER_CYCLE_STEAL = 0; + static constexpr device_timer_id TIMER_ISSUE_DLI = 1; + static constexpr device_timer_id TIMER_LINE_REND = 2; + static constexpr device_timer_id TIMER_LINE_DONE = 3; + + static constexpr unsigned HCHARS = 44; // visible characters per line + static constexpr unsigned VCHARS = (VDATA_END - VDATA_START + 7) / 8; + static constexpr unsigned BUF_OFFS0 = (HWIDTH - HCHARS) / 2; + + struct ANTIC_R { + uint8_t antic00; /* 00 nothing */ + uint8_t antic01; /* 01 nothing */ + uint8_t antic02; /* 02 nothing */ + uint8_t antic03; /* 03 nothing */ + uint8_t antic04; /* 04 nothing */ + uint8_t antic05; /* 05 nothing */ + uint8_t antic06; /* 06 nothing */ + uint8_t antic07; /* 07 nothing */ + uint8_t antic08; /* 08 nothing */ + uint8_t antic09; /* 09 nothing */ + uint8_t antic0a; /* 0a nothing */ + uint8_t vcount; /* 0b vertical (scanline) counter */ + uint8_t penh; /* 0c light pen horizontal pos */ + uint8_t penv; /* 0d light pen vertical pos */ + uint8_t antic0e; /* 0e nothing */ + uint8_t nmist; /* 0f NMI status */ + }; /* read registers */ + + struct ANTIC_W { + uint8_t dmactl; /* 00 write DMA control */ + uint8_t chactl; /* 01 write character control */ + uint8_t dlistl; /* 02 display list low */ + uint8_t dlisth; /* 03 display list high */ + uint8_t hscrol; /* 04 horz scroll */ + uint8_t vscrol; /* 05 vert scroll */ + uint8_t pmbasl; /* 06 player/missile base addr low */ + uint8_t pmbash; /* 07 player/missile base addr high */ + uint8_t chbasl; /* 08 character generator base addr low */ + uint8_t chbash; /* 09 character generator base addr high */ + uint8_t wsync; /* 0a wait for hsync */ + uint8_t antic0b; /* 0b nothing */ + uint8_t antic0c; /* 0c nothing */ + uint8_t antic0d; /* 0d nothing */ + uint8_t nmien; /* 0e NMI enable */ + uint8_t nmires; /* 0f NMI reset */ + }; /* write registers */ + + /* per scanline buffer for video data (and optimization variables) */ + struct VIDEO { + uint32_t cmd; /* antic command for this scanline */ + uint16_t data[HWIDTH]; /* graphics data buffer (text through chargen) */ + }; + const char *m_gtia_tag; gtia_device *m_gtia; @@ -480,12 +207,27 @@ private: // device type definition -extern const device_type ATARI_ANTIC; +DECLARE_DEVICE_TYPE(ATARI_ANTIC, antic_device) #define MCFG_ANTIC_GTIA(_tag) \ - antic_device::set_gtia_tag(*device, _tag); + antic_device::set_gtia_tag(*device, _tag); + +#define MCFG_SCREEN_VISIBLE_AREA_ANTIC() \ + MCFG_SCREEN_VISIBLE_AREA(antic_device::MIN_X, antic_device::MAX_X, antic_device::MIN_Y, antic_device::MAX_Y) + +#define MCFG_SCREEN_REFRESH_RATE_ANTIC_50HZ() \ + MCFG_SCREEN_REFRESH_RATE(antic_device::FRAME_RATE_50HZ) + +#define MCFG_SCREEN_REFRESH_RATE_ANTIC_60HZ() \ + MCFG_SCREEN_REFRESH_RATE(antic_device::FRAME_RATE_60HZ) + +#define MCFG_SCREEN_SIZE_ANTIC_50HZ() \ + MCFG_SCREEN_SIZE(antic_device::HWIDTH * 8, antic_device::TOTAL_LINES_50HZ) + +#define MCFG_SCREEN_SIZE_ANTIC_60HZ() \ + MCFG_SCREEN_SIZE(antic_device::HWIDTH * 8, antic_device::TOTAL_LINES_60HZ) -#endif /* __GTIA_H__ */ +#endif // MAME_VIDEO_ANTIC_H diff --git a/src/mame/video/apollo.cpp b/src/mame/video/apollo.cpp index 9f1e9f9d59b..a87c625530d 100644 --- a/src/mame/video/apollo.cpp +++ b/src/mame/video/apollo.cpp @@ -1720,17 +1720,17 @@ MACHINE_CONFIG_FRAGMENT( apollo_graphics ) MCFG_SCREEN_UPDATE_DEVICE(APOLLO_SCREEN_TAG, apollo_graphics_15i, screen_update) MACHINE_CONFIG_END -const device_type APOLLO_GRAPHICS = device_creator ; +DEFINE_DEVICE_TYPE(APOLLO_GRAPHICS, apollo_graphics_15i, "apollo_graphics_15i", "Apollo Screen") apollo_graphics_15i::apollo_graphics_15i(const machine_config &mconfig,const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, APOLLO_GRAPHICS, "Apollo Screen", tag, owner, clock,"apollo_graphics_15i", __FILE__), + device_t(mconfig, APOLLO_GRAPHICS, tag, owner, clock), m_lut_fifo(nullptr), m_bt458(nullptr) { } -apollo_graphics_15i::apollo_graphics_15i(const machine_config &mconfig,const char *tag, device_t *owner, uint32_t clock, device_type type,const char *name, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), +apollo_graphics_15i::apollo_graphics_15i(const machine_config &mconfig,const char *tag, device_t *owner, uint32_t clock, device_type type) : + device_t(mconfig, type, tag, owner, clock), m_lut_fifo(nullptr), m_bt458(nullptr) { @@ -1891,12 +1891,10 @@ MACHINE_CONFIG_FRAGMENT( apollo_mono19i ) MCFG_SCREEN_UPDATE_DEVICE(APOLLO_SCREEN_TAG, apollo_graphics_19i, screen_update) MACHINE_CONFIG_END -const device_type APOLLO_MONO19I = device_creator ; +DEFINE_DEVICE_TYPE(APOLLO_MONO19I, apollo_graphics_19i, "apollo_graphics_19i", "Apollo 19\" Monochrome Screen") -apollo_graphics_19i::apollo_graphics_19i(const machine_config &mconfig, - const char *tag, device_t *owner, uint32_t clock) : - apollo_graphics_15i(mconfig, tag, owner, clock, APOLLO_MONO19I, - "Apollo 19\" Monochrome Screen", "apollo_graphics_19i", __FILE__) +apollo_graphics_19i::apollo_graphics_19i(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + apollo_graphics_15i(mconfig, tag, owner, clock, APOLLO_MONO19I) { } diff --git a/src/mame/video/apple2.cpp b/src/mame/video/apple2.cpp index 9747cee634e..19d07343d00 100644 --- a/src/mame/video/apple2.cpp +++ b/src/mame/video/apple2.cpp @@ -668,14 +668,14 @@ uint32_t apple2_state::screen_update_apple2(screen_device &screen, bitmap_ind16 New implementation */ -const device_type APPLE2_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(APPLE2_VIDEO, a2_video_device, "a2video", "Apple II video") //------------------------------------------------- // a2_video_device - constructor //------------------------------------------------- a2_video_device::a2_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, APPLE2_VIDEO, "Apple II video", tag, owner, clock, "a2video", __FILE__) + : device_t(mconfig, APPLE2_VIDEO, tag, owner, clock) { } diff --git a/src/mame/video/apple2.h b/src/mame/video/apple2.h index e3daa888210..b9bc4b5f44f 100644 --- a/src/mame/video/apple2.h +++ b/src/mame/video/apple2.h @@ -58,6 +58,6 @@ private: }; // device type definition -extern const device_type APPLE2_VIDEO; +DECLARE_DEVICE_TYPE(APPLE2_VIDEO, a2_video_device) #endif // MAME_VIDEO_APPLE2_H diff --git a/src/mame/video/asterix.cpp b/src/mame/video/asterix.cpp index 50726b4dd8a..77f904e3853 100644 --- a/src/mame/video/asterix.cpp +++ b/src/mame/video/asterix.cpp @@ -45,7 +45,7 @@ K056832_CB_MEMBER(asterix_state::tile_callback) uint32_t asterix_state::screen_update_asterix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - static const int K053251_CI[4] = { K053251_CI0, K053251_CI2, K053251_CI3, K053251_CI4 }; + static const int K053251_CI[4] = { k053251_device::CI0, k053251_device::CI2, k053251_device::CI3, k053251_device::CI4 }; int layer[3], plane, new_colorbase; /* Layer offsets are different if horizontally flipped */ @@ -71,7 +71,7 @@ uint32_t asterix_state::screen_update_asterix(screen_device &screen, bitmap_ind1 m_tilebanks[3] = (m_k056832->get_lookup(3) << 10); // update color info and refresh tilemaps - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); for (plane = 0; plane < 4; plane++) { @@ -84,11 +84,11 @@ uint32_t asterix_state::screen_update_asterix(screen_device &screen, bitmap_ind1 } layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI0); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI0); layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI2); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI2); layer[2] = 3; - m_layerpri[2] = m_k053251->get_priority(K053251_CI4); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4); konami_sortlayers3(layer, m_layerpri); diff --git a/src/mame/video/astrocde.cpp b/src/mame/video/astrocde.cpp index 1efd9c9f14d..128cbed6e48 100644 --- a/src/mame/video/astrocde.cpp +++ b/src/mame/video/astrocde.cpp @@ -439,14 +439,14 @@ TIMER_CALLBACK_MEMBER(astrocde_state::scanline_callback) if ((m_interrupt_enabl & 0x04) == 0) { m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_interrupt_vector); - timer_set(m_screen->time_until_vblank_end(), TIMER_INTERRUPT_OFF); + m_intoff_timer->adjust(m_screen->time_until_vblank_end()); } /* mode 1 means assert for 1 instruction */ else { m_maincpu->set_input_line_and_vector(0, ASSERT_LINE, m_interrupt_vector); - timer_set(m_maincpu->cycles_to_attotime(1), TIMER_INTERRUPT_OFF); + m_intoff_timer->adjust(m_maincpu->cycles_to_attotime(1)); } } diff --git a/src/mame/video/atari400.cpp b/src/mame/video/atari400.cpp index c57ed2d8aaa..33d60408ad1 100644 --- a/src/mame/video/atari400.cpp +++ b/src/mame/video/atari400.cpp @@ -24,7 +24,7 @@ void atari_common_state::video_start() { - palette_device &palette = machine().first_screen()->palette(); + device_palette_interface &palette = machine().first_screen()->palette(); for (int i = 0; i < 256; i++) m_gtia->set_color_lookup(i, (palette.pen(0) << 8) + palette.pen(0)); diff --git a/src/mame/video/atarig1.cpp b/src/mame/video/atarig1.cpp index aa27f34827e..7f769a77a4e 100644 --- a/src/mame/video/atarig1.cpp +++ b/src/mame/video/atarig1.cpp @@ -20,7 +20,7 @@ TILE_GET_INFO_MEMBER(atarig1_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0xfff; int color = (data >> 12) & 0x0f; int opaque = data & 0x8000; @@ -30,7 +30,7 @@ TILE_GET_INFO_MEMBER(atarig1_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(atarig1_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = (m_playfield_tile_bank << 12) | (data & 0xfff); int color = (data >> 12) & 7; SET_TILE_INFO_MEMBER(0, code, color, (data >> 15) & 1); diff --git a/src/mame/video/atarig42.cpp b/src/mame/video/atarig42.cpp index d38d7034927..b553cc0f512 100644 --- a/src/mame/video/atarig42.cpp +++ b/src/mame/video/atarig42.cpp @@ -35,7 +35,7 @@ TILE_GET_INFO_MEMBER(atarig42_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0xfff; int color = (data >> 12) & 0x0f; int opaque = data & 0x8000; @@ -45,7 +45,7 @@ TILE_GET_INFO_MEMBER(atarig42_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(atarig42_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = (m_playfield_tile_bank << 12) | (data & 0xfff); int color = (m_playfield_base >> 5) + ((m_playfield_color_bank << 3) & 0x18) + ((data >> 12) & 7); SET_TILE_INFO_MEMBER(0, code, color, (data >> 15) & 1); diff --git a/src/mame/video/atarigt.cpp b/src/mame/video/atarigt.cpp index 20610f2851f..6f1808b797f 100644 --- a/src/mame/video/atarigt.cpp +++ b/src/mame/video/atarigt.cpp @@ -46,7 +46,7 @@ TILE_GET_INFO_MEMBER(atarigt_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0xfff; int color = (data >> 12) & 0x0f; SET_TILE_INFO_MEMBER(1, code, color, 0); @@ -55,7 +55,7 @@ TILE_GET_INFO_MEMBER(atarigt_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(atarigt_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = (m_playfield_tile_bank << 12) | (data & 0xfff); int color = (data >> 12) & 7; SET_TILE_INFO_MEMBER(0, code, color, (data >> 15) & 1); diff --git a/src/mame/video/atarigx2.cpp b/src/mame/video/atarigx2.cpp index 79bb6234d91..db1d7b79a31 100644 --- a/src/mame/video/atarigx2.cpp +++ b/src/mame/video/atarigx2.cpp @@ -35,7 +35,7 @@ TILE_GET_INFO_MEMBER(atarigx2_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0xfff; int color = (data >> 12) & 0x0f; int opaque = data & 0x8000; @@ -45,7 +45,7 @@ TILE_GET_INFO_MEMBER(atarigx2_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(atarigx2_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = (m_playfield_tile_bank << 12) | (data & 0xfff); int color = (m_playfield_base >> 5) + ((m_playfield_color_bank << 3) & 0x18) + ((data >> 12) & 7); SET_TILE_INFO_MEMBER(0, code, color, (data >> 15) & 1); diff --git a/src/mame/video/atarimo.cpp b/src/mame/video/atarimo.cpp index e16b5499567..1100d646b82 100644 --- a/src/mame/video/atarimo.cpp +++ b/src/mame/video/atarimo.cpp @@ -118,14 +118,14 @@ inline int atari_motion_objects_device::round_to_powerof2(int value) //************************************************************************** // device type definition -const device_type ATARI_MOTION_OBJECTS = device_creator; +DEFINE_DEVICE_TYPE(ATARI_MOTION_OBJECTS, atari_motion_objects_device, "atarimo", "Atari Motion Objects") //------------------------------------------------- // atari_motion_objects_device - constructor //------------------------------------------------- atari_motion_objects_device::atari_motion_objects_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : sprite16_device_ind16(mconfig, ATARI_MOTION_OBJECTS, "Atari Motion Objects", tag, owner, "atarimo", __FILE__) + : sprite16_device_ind16(mconfig, ATARI_MOTION_OBJECTS, tag, owner) , device_video_interface(mconfig, *this) , m_tilewidth(0) , m_tileheight(0) diff --git a/src/mame/video/atarimo.h b/src/mame/video/atarimo.h index 618646fb852..0631b7a69fa 100644 --- a/src/mame/video/atarimo.h +++ b/src/mame/video/atarimo.h @@ -8,8 +8,8 @@ ***************************************************************************/ -#ifndef __ATARIMO__ -#define __ATARIMO__ +#ifndef MAME_VIDEO_ATARIMO_H +#define MAME_VIDEO_ATARIMO_H #include "video/sprite.h" @@ -73,7 +73,7 @@ struct atari_motion_objects_config // ======================> atari_motion_objects_device // device type definition -extern const device_type ATARI_MOTION_OBJECTS; +DECLARE_DEVICE_TYPE(ATARI_MOTION_OBJECTS, atari_motion_objects_device) class atari_motion_objects_device : public sprite16_device_ind16, public device_video_interface, @@ -225,4 +225,4 @@ private: }; -#endif +#endif // MAME_VIDEO_ATARIMO_H diff --git a/src/mame/video/atarirle.cpp b/src/mame/video/atarirle.cpp index d3e41edff56..c006f2ad814 100644 --- a/src/mame/video/atarirle.cpp +++ b/src/mame/video/atarirle.cpp @@ -29,7 +29,7 @@ // CONSTANTS //************************************************************************** -const device_type ATARI_RLE_OBJECTS = device_creator; +DEFINE_DEVICE_TYPE(ATARI_RLE_OBJECTS, atari_rle_objects_device, "atari_rle", "Atari RLE Motion Objects") enum { atarirle_hilite_index = -1 }; @@ -68,7 +68,7 @@ inline int atari_rle_objects_device::round_to_powerof2(int value) //------------------------------------------------- atari_rle_objects_device::atari_rle_objects_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ATARI_RLE_OBJECTS, "Atari RLE Motion Objects", tag, owner, clock, "atari_rle", __FILE__), + : device_t(mconfig, ATARI_RLE_OBJECTS, tag, owner, clock), device_video_interface(mconfig, *this), m_rombase(*this, DEVICE_SELF) { diff --git a/src/mame/video/atarirle.h b/src/mame/video/atarirle.h index ce59c841862..3bd70986705 100644 --- a/src/mame/video/atarirle.h +++ b/src/mame/video/atarirle.h @@ -9,8 +9,8 @@ ***************************************************************************/ -#ifndef __ATARIRLE__ -#define __ATARIRLE__ +#ifndef MAME_VIDEO_ATARIRLE_H +#define MAME_VIDEO_ATARIRLE_H //************************************************************************** @@ -70,7 +70,7 @@ struct atari_rle_objects_config // ======================> atari_rle_objects_device // device type definition -extern const device_type ATARI_RLE_OBJECTS; +DECLARE_DEVICE_TYPE(ATARI_RLE_OBJECTS, atari_rle_objects_device) class atari_rle_objects_device : public device_t, public device_video_interface, @@ -179,6 +179,4 @@ private: uint16_t m_rle_table_data[0x500]; }; - - -#endif +#endif // MAME_VIDEO_ATARIRLE_H diff --git a/src/mame/video/atarisy1.cpp b/src/mame/video/atarisy1.cpp index 2f41ce7d5d1..30c46e10f9a 100644 --- a/src/mame/video/atarisy1.cpp +++ b/src/mame/video/atarisy1.cpp @@ -83,7 +83,7 @@ static const gfx_layout objlayout_6bpp = TILE_GET_INFO_MEMBER(atarisy1_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0x3ff; int color = (data >> 10) & 0x07; int opaque = data & 0x2000; @@ -93,7 +93,7 @@ TILE_GET_INFO_MEMBER(atarisy1_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(atarisy1_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); uint16_t lookup = m_playfield_lookup[((data >> 8) & 0x7f) | (m_playfield_tile_bank << 7)]; int gfxindex = (lookup >> 8) & 15; int code = ((lookup & 0xff) << 8) | (data & 0xff); diff --git a/src/mame/video/atarisy2.cpp b/src/mame/video/atarisy2.cpp index 0ded30fe3fc..ca38359a8f0 100644 --- a/src/mame/video/atarisy2.cpp +++ b/src/mame/video/atarisy2.cpp @@ -21,7 +21,7 @@ TILE_GET_INFO_MEMBER(atarisy2_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0x3ff; int color = (data >> 13) & 0x07; SET_TILE_INFO_MEMBER(2, code, color, 0); @@ -30,7 +30,7 @@ TILE_GET_INFO_MEMBER(atarisy2_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(atarisy2_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = m_playfield_tile_bank[(data >> 10) & 1] + (data & 0x3ff); int color = (data >> 11) & 7; SET_TILE_INFO_MEMBER(0, code, color, 0); diff --git a/src/mame/video/avgdvg.cpp b/src/mame/video/avgdvg.cpp index 99ef35ae8a5..0786b1d61ff 100644 --- a/src/mame/video/avgdvg.cpp +++ b/src/mame/video/avgdvg.cpp @@ -233,7 +233,7 @@ void dvg_device::dvg_draw_to(int x, int y, int intensity) if (((x | y) & 0x400) == 0) vg_add_point_buf((xmin + x - 512) << 16, (ymin + 512 - y) << 16, - VECTOR_COLOR111(7), intensity << 4); + vector_device::color111(7), intensity << 4); } int dvg_device::handler_2() //dvg_gostrobe @@ -674,7 +674,7 @@ int avg_device::handler_7() // avg_strobe3 if ((m_op & 5) == 0) { - vg_add_point_buf(m_xpos, m_ypos, VECTOR_COLOR111(m_color), + vg_add_point_buf(m_xpos, m_ypos, vector_device::color111(m_color), (((m_int_latch >> 1) == 1)? m_intensity: m_int_latch & 0xe) << 4); } @@ -947,7 +947,7 @@ int avg_starwars_device::handler_7() // starwars_strobe3 if ((m_op & 5) == 0) { - vg_add_point_buf(m_xpos, m_ypos, VECTOR_COLOR111(m_color), + vg_add_point_buf(m_xpos, m_ypos, vector_device::color111(m_color), ((m_int_latch >> 1) * m_intensity) >> 3); } @@ -1187,7 +1187,7 @@ int avg_bzone_device::handler_7() // bzone_strobe3 if ((m_op & 5) == 0) { - vg_add_point_buf(m_xpos, m_ypos, VECTOR_COLOR111(7), + vg_add_point_buf(m_xpos, m_ypos, vector_device::color111(7), (((m_int_latch >> 1) == 1)? m_intensity: m_int_latch & 0xe) << 4); } @@ -1219,7 +1219,7 @@ int avg_tomcat_device::handler_7() // starwars_strobe3 if ((m_op & 5) == 0) { - vg_add_point_buf(m_xpos, m_ypos, VECTOR_COLOR111(m_color), + vg_add_point_buf(m_xpos, m_ypos, vector_device::color111(m_color), ((m_int_latch >> 1) * m_intensity) >> 3); } @@ -1467,8 +1467,8 @@ void avgdvg_device::static_set_vector_tag(device_t &device, const char *tag) downcast(device).m_vector.set_tag(tag); } -avgdvg_device::avgdvg_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +avgdvg_device::avgdvg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , m_vector(*this, finder_base::DUMMY_TAG) { m_pc = 0; @@ -1524,55 +1524,55 @@ avgdvg_device::avgdvg_device(const machine_config &mconfig, device_type type, co } dvg_device::dvg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - avgdvg_device(mconfig, DVG, "Atari DVG", tag, owner, clock, "dvg", __FILE__) + avgdvg_device(mconfig, DVG, tag, owner, clock) { } avg_device::avg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - avgdvg_device(mconfig, AVG, "Atari AVG", tag, owner, clock, "avg", __FILE__) + avg_device(mconfig, AVG, tag, owner, clock) { } -avg_device::avg_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - avgdvg_device(mconfig, type, name, tag, owner, clock, shortname, source) +avg_device::avg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + avgdvg_device(mconfig, type, tag, owner, clock) { } avg_tempest_device::avg_tempest_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - avg_device(mconfig, AVG_TEMPEST, "Atari AVG (Tempest)", tag, owner, clock, "avg_tempest", __FILE__) + avg_device(mconfig, AVG_TEMPEST, tag, owner, clock) { } avg_mhavoc_device::avg_mhavoc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - avg_device(mconfig, AVG_MHAVOC, "Atari AVG (Major Havoc)", tag, owner, clock, "avg_mhavoc", __FILE__) + avg_device(mconfig, AVG_MHAVOC, tag, owner, clock) { } avg_starwars_device::avg_starwars_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - avg_device(mconfig, AVG_STARWARS, "Atari AVG (Star Wars)", tag, owner, clock, "avg_starwars", __FILE__) + avg_device(mconfig, AVG_STARWARS, tag, owner, clock) { } avg_quantum_device::avg_quantum_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - avg_device(mconfig, AVG_QUANTUM, "Atari AVG (Quantum)", tag, owner, clock, "avg_quantum", __FILE__) + avg_device(mconfig, AVG_QUANTUM, tag, owner, clock) { } avg_bzone_device::avg_bzone_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - avg_device(mconfig, AVG_BZONE, "Atari AVG (Battle Zone)", tag, owner, clock, "avg_bzone", __FILE__) + avg_device(mconfig, AVG_BZONE, tag, owner, clock) { } avg_tomcat_device::avg_tomcat_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - avg_device(mconfig, AVG_TOMCAT, "Atari AVG (TomCat)", tag, owner, clock, "avg_tomcat", __FILE__) + avg_device(mconfig, AVG_TOMCAT, tag, owner, clock) { } -const device_type DVG = device_creator; -const device_type AVG = device_creator; -const device_type AVG_TEMPEST = device_creator; -const device_type AVG_MHAVOC = device_creator; -const device_type AVG_STARWARS = device_creator; -const device_type AVG_QUANTUM = device_creator; -const device_type AVG_BZONE = device_creator; -const device_type AVG_TOMCAT = device_creator; +DEFINE_DEVICE_TYPE(DVG, dvg_device, "dvg", "Atari DVG") +DEFINE_DEVICE_TYPE(AVG, avg_device, "avg", "Atari AVG") +DEFINE_DEVICE_TYPE(AVG_TEMPEST, avg_tempest_device, "avg_tempest", "Atari AVG (Tempest)") +DEFINE_DEVICE_TYPE(AVG_MHAVOC, avg_mhavoc_device, "avg_mhavoc", "Atari AVG (Major Havoc)") +DEFINE_DEVICE_TYPE(AVG_STARWARS, avg_starwars_device, "avg_starwars", "Atari AVG (Star Wars)") +DEFINE_DEVICE_TYPE(AVG_QUANTUM, avg_quantum_device, "avg_quantum", "Atari AVG (Quantum)") +DEFINE_DEVICE_TYPE(AVG_BZONE, avg_bzone_device, "avg_bzone", "Atari AVG (Battle Zone)") +DEFINE_DEVICE_TYPE(AVG_TOMCAT, avg_tomcat_device, "avg_tomcat", "Atari AVG (TomCat)") diff --git a/src/mame/video/avgdvg.h b/src/mame/video/avgdvg.h index 157c8c69fd4..113d7633032 100644 --- a/src/mame/video/avgdvg.h +++ b/src/mame/video/avgdvg.h @@ -1,33 +1,21 @@ // license:BSD-3-Clause // copyright-holders:Mathis Rosenhauer // thanks-to:Eric Smith, Brad Oliver, Bernd Wiebelt, Aaron Giles, Andrew Caldwell -#ifndef __AVGDVG__ -#define __AVGDVG__ +#ifndef MAME_VIDEO_AVGDVG_H +#define MAME_VIDEO_AVGDVG_H -#define MAXVECT (10000) +#pragma once #include "video/vector.h" #define MCFG_AVGDVG_VECTOR(_tag) \ avgdvg_device::static_set_vector_tag(*device, "^" _tag); -struct vgvector -{ - int x; int y; - rgb_t color; - int intensity; - int arg1; int arg2; - int status; -}; - // ======================> avgdvg_device class avgdvg_device : public device_t { public: - // construction/destruction - avgdvg_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - static void static_set_vector_tag(device_t &device, const char *tag); DECLARE_CUSTOM_INPUT_MEMBER(done_r); @@ -44,6 +32,20 @@ public: TIMER_CALLBACK_MEMBER(vg_set_halt_callback); TIMER_CALLBACK_MEMBER(run_state_machine); protected: + static constexpr unsigned MAXVECT = 10000; + + struct vgvector + { + int x; int y; + rgb_t color; + int intensity; + int arg1; int arg2; + int status; + }; + + // construction/destruction + avgdvg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + void apply_flipping(int *x, int *y); void vg_set_halt(int dummy); @@ -132,6 +134,7 @@ public: void dvg_draw_to(int x, int y, int intensity); +protected: virtual int handler_0() override; virtual int handler_1() override; virtual int handler_2() override; @@ -149,19 +152,21 @@ public: }; // device type definition -extern const device_type DVG; +DECLARE_DEVICE_TYPE(DVG, dvg_device) class avg_device : public avgdvg_device { public: // construction/destruction avg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - avg_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); int avg_common_strobe1(); int avg_common_strobe2(); int avg_common_strobe3(); +protected: + avg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual int handler_0() override; virtual int handler_1() override; virtual int handler_2() override; @@ -179,7 +184,7 @@ public: }; // device type definition -extern const device_type AVG; +DECLARE_DEVICE_TYPE(AVG, avg_device) class avg_tempest_device : public avg_device { @@ -187,13 +192,14 @@ public: // construction/destruction avg_tempest_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: virtual int handler_6() override; virtual int handler_7() override; //virtual void vggo(); }; // device type definition -extern const device_type AVG_TEMPEST; +DECLARE_DEVICE_TYPE(AVG_TEMPEST, avg_tempest_device) class avg_mhavoc_device : public avg_device { @@ -201,6 +207,7 @@ public: // construction/destruction avg_mhavoc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: virtual int handler_1() override; virtual int handler_6() override; virtual int handler_7() override; @@ -209,26 +216,30 @@ public: }; // device type definition -extern const device_type AVG_MHAVOC; +DECLARE_DEVICE_TYPE(AVG_MHAVOC, avg_mhavoc_device) class avg_starwars_device : public avg_device { public: // construction/destruction avg_starwars_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: virtual int handler_6() override; virtual int handler_7() override; virtual void update_databus() override; }; // device type definition -extern const device_type AVG_STARWARS; +DECLARE_DEVICE_TYPE(AVG_STARWARS, avg_starwars_device) class avg_quantum_device : public avg_device { public: // construction/destruction avg_quantum_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: virtual int handler_0() override; virtual int handler_1() override; virtual int handler_2() override; @@ -242,20 +253,22 @@ public: }; // device type definition -extern const device_type AVG_QUANTUM; +DECLARE_DEVICE_TYPE(AVG_QUANTUM, avg_quantum_device) class avg_bzone_device : public avg_device { public: // construction/destruction avg_bzone_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: virtual int handler_1() override; virtual int handler_6() override; virtual int handler_7() override; }; // device type definition -extern const device_type AVG_BZONE; +DECLARE_DEVICE_TYPE(AVG_BZONE, avg_bzone_device) class avg_tomcat_device : public avg_device { @@ -263,12 +276,13 @@ public: // construction/destruction avg_tomcat_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: virtual int handler_6() override; virtual int handler_7() override; }; // device type definition -extern const device_type AVG_TOMCAT; +DECLARE_DEVICE_TYPE(AVG_TOMCAT, avg_tomcat_device) -#endif +#endif // MAME_VIDEO_AVGDVG_H diff --git a/src/mame/video/aztarac.cpp b/src/mame/video/aztarac.cpp index 95a6899f241..f6c1558d71a 100644 --- a/src/mame/video/aztarac.cpp +++ b/src/mame/video/aztarac.cpp @@ -52,7 +52,7 @@ WRITE16_MEMBER(aztarac_state::ubr_w) { /* latch color only once */ intensity = (c >> 8); - color = VECTOR_COLOR222(c & 0x3f); + color = vector_device::color222(c & 0x3f); while (ndefs--) { defaddr++; @@ -70,7 +70,7 @@ WRITE16_MEMBER(aztarac_state::ubr_w) { defaddr++; read_vectorram(m_vectorram, defaddr, &x, &y, &c); - color = VECTOR_COLOR222(c & 0x3f); + color = vector_device::color222(c & 0x3f); AVECTOR (x + xoffset, y + yoffset, color, c >> 8); } } diff --git a/src/mame/video/badlands.cpp b/src/mame/video/badlands.cpp index 92aecae9162..c8c0a955b99 100644 --- a/src/mame/video/badlands.cpp +++ b/src/mame/video/badlands.cpp @@ -20,7 +20,7 @@ TILE_GET_INFO_MEMBER(badlands_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = (data & 0x1fff) + ((data & 0x1000) ? (m_playfield_tile_bank << 12) : 0); int color = (data >> 13) & 0x07; SET_TILE_INFO_MEMBER(0, code, color, 0); diff --git a/src/mame/video/baraduke.cpp b/src/mame/video/baraduke.cpp index 6354c9e10f9..3ce0f59070a 100644 --- a/src/mame/video/baraduke.cpp +++ b/src/mame/video/baraduke.cpp @@ -325,7 +325,7 @@ uint32_t baraduke_state::screen_update_baraduke(screen_device &screen, bitmap_in } -void baraduke_state::screen_eof_baraduke(screen_device &screen, bool state) +WRITE_LINE_MEMBER(baraduke_state::screen_vblank_baraduke) { // rising edge if (state) diff --git a/src/mame/video/batman.cpp b/src/mame/video/batman.cpp index e555e057ddf..3d652be2551 100644 --- a/src/mame/video/batman.cpp +++ b/src/mame/video/batman.cpp @@ -19,7 +19,7 @@ TILE_GET_INFO_MEMBER(batman_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_vad->alpha().basemem_read(tile_index); int code = ((data & 0x400) ? (m_alpha_tile_bank * 0x400) : 0) + (data & 0x3ff); int color = (data >> 11) & 0x0f; int opaque = data & 0x8000; @@ -29,8 +29,8 @@ TILE_GET_INFO_MEMBER(batman_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(batman_state::get_playfield_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) & 0xff; + uint16_t data1 = m_vad->playfield().basemem_read(tile_index); + uint16_t data2 = m_vad->playfield().extmem_read(tile_index) & 0xff; int code = data1 & 0x7fff; int color = 0x10 + (data2 & 0x0f); SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); @@ -40,8 +40,8 @@ TILE_GET_INFO_MEMBER(batman_state::get_playfield_tile_info) TILE_GET_INFO_MEMBER(batman_state::get_playfield2_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) >> 8; + uint16_t data1 = m_vad->playfield2().basemem_read(tile_index); + uint16_t data2 = m_vad->playfield2().extmem_read(tile_index) >> 8; int code = data1 & 0x7fff; int color = data2 & 0x0f; SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); diff --git a/src/mame/video/battlex.cpp b/src/mame/video/battlex.cpp index 7184af80f91..bd10120f76a 100644 --- a/src/mame/video/battlex.cpp +++ b/src/mame/video/battlex.cpp @@ -12,7 +12,13 @@ WRITE8_MEMBER(battlex_state::battlex_palette_w) { + int palette_num = offset / 8; + int color_num = offset & 7; + m_palette->set_pen_color(offset, pal1bit(data >> 0), pal1bit(data >> 2), pal1bit(data >> 1)); + /* set darker colors */ + m_palette->set_pen_color(64+palette_num*16+color_num, pal1bit(data >> 0), pal1bit(data >> 2), pal1bit(data >> 1)); + m_palette->set_pen_color(64+palette_num*16+color_num+8, pal2bit((data >> 0)&1), pal2bit((data >> 2)&1), pal2bit( (data >> 1) &1)); } WRITE8_MEMBER(battlex_state::battlex_scroll_x_lsb_w) @@ -83,7 +89,7 @@ void battlex_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec { int sx = (source[0] & 0x7f) * 2 - (source[0] & 0x80) * 2; int sy = source[3]; - int tile = source[2] & 0x7f; + int tile = source[2] ; /* dodgeman has 0x100 sprites */ int color = source[1] & 0x07; /* bits 3,4,5 also used during explosions */ int flipy = source[1] & 0x80; int flipx = source[1] & 0x40; @@ -102,7 +108,6 @@ void battlex_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec } - uint32_t battlex_state::screen_update_battlex(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { if (!flip_screen()) diff --git a/src/mame/video/bfm_adr2.cpp b/src/mame/video/bfm_adr2.cpp index bb7b46f2844..092aadd0c18 100644 --- a/src/mame/video/bfm_adr2.cpp +++ b/src/mame/video/bfm_adr2.cpp @@ -137,12 +137,12 @@ static GFXDECODE_START( adder2 ) GFXDECODE_ENTRY( ":gfx1", 0, charlayout, 0, 16 ) GFXDECODE_END -const device_type BFM_ADDER2 = device_creator; +DEFINE_DEVICE_TYPE(BFM_ADDER2, bfm_adder2_device, "bfm_adder2", "BFM ADDER2") bfm_adder2_device::bfm_adder2_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock ) - : device_t(mconfig, BFM_ADDER2, "BFM ADDER2", tag, owner, clock, "bfm_adder2", __FILE__), - device_gfx_interface(mconfig, *this, GFXDECODE_NAME(adder2), "palette"), - m_cpu(*this, "adder2") + : device_t(mconfig, BFM_ADDER2, tag, owner, clock) + , device_gfx_interface(mconfig, *this, GFXDECODE_NAME(adder2), "palette") + , m_cpu(*this, "adder2") { } @@ -215,7 +215,7 @@ void bfm_adder2_device::device_reset() void bfm_adder2_device::device_start() { - if (!palette().started()) + if (!palette().device().started()) throw device_missing_dependencies(); adder2_decode_char_roms(); diff --git a/src/mame/video/bfm_adr2.h b/src/mame/video/bfm_adr2.h index c459231b241..02f95e69772 100644 --- a/src/mame/video/bfm_adr2.h +++ b/src/mame/video/bfm_adr2.h @@ -1,7 +1,10 @@ // license:BSD-3-Clause // copyright-holders:David Haywood -#ifndef INC_BFMADDER2 -#define INC_BFMADDER2 +#ifndef MAME_INCLUDES_BFM_ADR2_H +#define MAME_INCLUDES_BFM_ADR2_H + +#pragma once + class bfm_adder2_device : public device_t, public device_gfx_interface { @@ -64,7 +67,7 @@ private: }; // device type definition -extern const device_type BFM_ADDER2; +DECLARE_DEVICE_TYPE(BFM_ADDER2, bfm_adder2_device) //************************************************************************** @@ -74,4 +77,4 @@ extern const device_type BFM_ADDER2; #define MCFG_BFM_ADDER2_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, BFM_ADDER2, 0) -#endif +#endif // MAME_INCLUDES_BFM_ADR2_H diff --git a/src/mame/video/bfm_dm01.cpp b/src/mame/video/bfm_dm01.cpp index 3077451f046..c82a3b59cb1 100644 --- a/src/mame/video/bfm_dm01.cpp +++ b/src/mame/video/bfm_dm01.cpp @@ -51,11 +51,11 @@ Standard dm01 memorymap #define LOG(x) do { if (VERBOSE) logerror x; } while (0) -const device_type BF_DM01 = device_creator; +DEFINE_DEVICE_TYPE(BFM_DM01, bfm_dm01_device, "bfm_dm01", "BFM Dotmatrix 01") -bfmdm01_device::bfmdm01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, BF_DM01, "BFM Dotmatrix 01", tag, owner, clock, "bfm_dm01", __FILE__), +bfm_dm01_device::bfm_dm01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, BFM_DM01, tag, owner, clock), m_matrixcpu(*this, "matrix"), m_screen(*this, "dmd"), m_palette(*this, "palette_lcd"), @@ -77,7 +77,7 @@ bfmdm01_device::bfmdm01_device(const machine_config &mconfig, const char *tag, d // device_start - device-specific startup //------------------------------------------------- -void bfmdm01_device::device_start() +void bfm_dm01_device::device_start() { if(!m_screen->started()) throw device_missing_dependencies(); @@ -96,7 +96,7 @@ void bfmdm01_device::device_start() for (int i = 0; i < 65; i++) save_item(NAME(m_segbuffer), i); - for (int i = 0; i < DM_BYTESPERROW; i++) + for (int i = 0; i < BYTES_PER_ROW; i++) save_item(NAME(m_scanline), i); m_screen->register_screen_bitmap(m_tmpbitmap); @@ -111,7 +111,7 @@ void bfmdm01_device::device_start() // device_reset - device-specific reset //------------------------------------------------- -void bfmdm01_device::device_reset() +void bfm_dm01_device::device_reset() { m_busy = 0; m_control = 0; @@ -123,7 +123,7 @@ void bfmdm01_device::device_reset() /////////////////////////////////////////////////////////////////////////// -int bfmdm01_device::read_data(void) +int bfm_dm01_device::read_data(void) { int data = m_comdata; @@ -134,14 +134,14 @@ int bfmdm01_device::read_data(void) /////////////////////////////////////////////////////////////////////////// -READ8_MEMBER( bfmdm01_device::control_r ) +READ8_MEMBER( bfm_dm01_device::control_r ) { return 0; } /////////////////////////////////////////////////////////////////////////// -WRITE8_MEMBER( bfmdm01_device::control_w ) +WRITE8_MEMBER( bfm_dm01_device::control_w ) { int changed = m_control ^ data; @@ -168,18 +168,18 @@ WRITE8_MEMBER( bfmdm01_device::control_w ) /////////////////////////////////////////////////////////////////////////// -READ8_MEMBER( bfmdm01_device::mux_r ) +READ8_MEMBER( bfm_dm01_device::mux_r ) { return 0; } /////////////////////////////////////////////////////////////////////////// -WRITE8_MEMBER( bfmdm01_device::mux_w ) +WRITE8_MEMBER( bfm_dm01_device::mux_w ) { g_profiler.start(PROFILER_USER2); - if ( m_xcounter < DM_BYTESPERROW ) + if ( m_xcounter < BYTES_PER_ROW ) { m_scanline[m_xcounter] = data; m_xcounter++; @@ -192,7 +192,7 @@ WRITE8_MEMBER( bfmdm01_device::mux_w ) { int p = 0; - while ( p < (DM_BYTESPERROW) ) + while ( p < (BYTES_PER_ROW) ) { uint8_t d = m_scanline[p]; @@ -224,7 +224,7 @@ WRITE8_MEMBER( bfmdm01_device::mux_w ) /////////////////////////////////////////////////////////////////////////// -READ8_MEMBER( bfmdm01_device::comm_r ) +READ8_MEMBER( bfm_dm01_device::comm_r ) { int result = 0; @@ -245,26 +245,26 @@ READ8_MEMBER( bfmdm01_device::comm_r ) /////////////////////////////////////////////////////////////////////////// -WRITE8_MEMBER( bfmdm01_device::comm_w ) +WRITE8_MEMBER( bfm_dm01_device::comm_w ) { } /////////////////////////////////////////////////////////////////////////// -READ8_MEMBER( bfmdm01_device::unknown_r ) +READ8_MEMBER( bfm_dm01_device::unknown_r ) { return 0; } /////////////////////////////////////////////////////////////////////////// -WRITE8_MEMBER( bfmdm01_device::unknown_w ) +WRITE8_MEMBER( bfm_dm01_device::unknown_w ) { m_matrixcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE ); //? } /////////////////////////////////////////////////////////////////////////// -ADDRESS_MAP_START( bfm_dm01_memmap, AS_PROGRAM, 8, bfmdm01_device ) +ADDRESS_MAP_START( bfm_dm01_memmap, AS_PROGRAM, 8, bfm_dm01_device ) AM_RANGE(0x0000, 0x1fff) AM_RAM // 8k RAM AM_RANGE(0x2000, 0x2000) AM_READWRITE(control_r, control_w) // control reg AM_RANGE(0x2800, 0x2800) AM_READWRITE(mux_r, mux_w) // mux @@ -274,7 +274,7 @@ ADDRESS_MAP_START( bfm_dm01_memmap, AS_PROGRAM, 8, bfmdm01_device ) ADDRESS_MAP_END -uint32_t bfmdm01_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t bfm_dm01_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { copybitmap(bitmap, m_tmpbitmap, 0, 0, 0, 0, cliprect); return 0; @@ -282,7 +282,7 @@ uint32_t bfmdm01_device::screen_update(screen_device &screen, bitmap_ind16 &bitm -INTERRUPT_GEN_MEMBER( bfmdm01_device::nmi_line_assert ) +INTERRUPT_GEN_MEMBER( bfm_dm01_device::nmi_line_assert ) { m_matrixcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } @@ -290,7 +290,7 @@ INTERRUPT_GEN_MEMBER( bfmdm01_device::nmi_line_assert ) static MACHINE_CONFIG_FRAGMENT( bdmdm01 ) MCFG_CPU_ADD("matrix", M6809, 2000000 ) /* matrix board 6809 CPU at 2 Mhz ?? I don't know the exact freq.*/ MCFG_CPU_PROGRAM_MAP(bfm_dm01_memmap) - MCFG_CPU_PERIODIC_INT_DRIVER(bfmdm01_device, nmi_line_assert, 1500 ) /* generate 1500 NMI's per second ?? what is the exact freq?? */ + MCFG_CPU_PERIODIC_INT_DRIVER(bfm_dm01_device, nmi_line_assert, 1500 ) /* generate 1500 NMI's per second ?? what is the exact freq?? */ MCFG_PALETTE_ADD("palette_lcd", 3) @@ -299,12 +299,12 @@ static MACHINE_CONFIG_FRAGMENT( bdmdm01 ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(65*2, 21*2) MCFG_SCREEN_VISIBLE_AREA(0, 65*2-1, 0, 21*2-1) - MCFG_SCREEN_UPDATE_DRIVER(bfmdm01_device, screen_update) + MCFG_SCREEN_UPDATE_DRIVER(bfm_dm01_device, screen_update) MCFG_SCREEN_PALETTE("palette_lcd") MACHINE_CONFIG_END -machine_config_constructor bfmdm01_device::device_mconfig_additions() const +machine_config_constructor bfm_dm01_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( bdmdm01 ); } @@ -312,7 +312,7 @@ machine_config_constructor bfmdm01_device::device_mconfig_additions() const /////////////////////////////////////////////////////////////////////////// -void bfmdm01_device::writedata(uint8_t data) +void bfm_dm01_device::writedata(uint8_t data) { m_comdata = data; m_data_avail = 1; @@ -322,7 +322,7 @@ void bfmdm01_device::writedata(uint8_t data) } /////////////////////////////////////////////////////////////////////////// -int bfmdm01_device::busy(void) +int bfm_dm01_device::busy(void) { return m_data_avail; } diff --git a/src/mame/video/bfm_dm01.h b/src/mame/video/bfm_dm01.h index 47755cd2582..458d0f2e9d0 100644 --- a/src/mame/video/bfm_dm01.h +++ b/src/mame/video/bfm_dm01.h @@ -5,23 +5,23 @@ Bellfruit dotmatrix driver, (under heavy construction !!!) *************************************************************************************/ -#include "screen.h" +#ifndef MAME_VIDEO_BFM_DM01 +#define MAME_VIDEO_BFM_DM01 -#ifndef BFM_DM01 -#define BFM_DM01 +#pragma once -#define DM_BYTESPERROW 9 +#include "screen.h" -#define MCFG_BF_DM01_BUSY_CB(_devcb) \ - devcb = &bfmdm01_device::set_busy_callback(*device, DEVCB_##_devcb); +#define MCFG_BFM_DM01_BUSY_CB(_devcb) \ + devcb = &bfm_dm01_device::set_busy_callback(*device, DEVCB_##_devcb); -class bfmdm01_device : public device_t +class bfm_dm01_device : public device_t { public: - bfmdm01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~bfmdm01_device() {} + bfm_dm01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ~bfm_dm01_device() {} - template static devcb_base &set_busy_callback(device_t &device, _Object object) { return downcast(device).m_busy_cb.set_callback(object); } + template static devcb_base &set_busy_callback(device_t &device, Object &&cb) { return downcast(device).m_busy_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( control_r ); DECLARE_WRITE8_MEMBER( control_w ); @@ -46,6 +46,8 @@ protected: virtual void device_reset() override; private: + static constexpr unsigned BYTES_PER_ROW = 9; + required_device m_matrixcpu; required_device m_screen; required_device m_palette; @@ -57,7 +59,7 @@ private: int m_segbuffer[65]; int m_busy; - uint8_t m_scanline[DM_BYTESPERROW]; + uint8_t m_scanline[BYTES_PER_ROW]; uint8_t m_comdata; devcb_write_line m_busy_cb; @@ -68,7 +70,6 @@ private: }; -extern const device_type BF_DM01; - +DECLARE_DEVICE_TYPE(BFM_DM01, bfm_dm01_device) -#endif +#endif // MAME_VIDEO_BFM_DM01 diff --git a/src/mame/video/bionicc.cpp b/src/mame/video/bionicc.cpp index ccc95634958..5f443feb1dd 100644 --- a/src/mame/video/bionicc.cpp +++ b/src/mame/video/bionicc.cpp @@ -124,25 +124,25 @@ PALETTE_DECODER_MEMBER( bionicc_state, RRRRGGGGBBBBIIII ) ***************************************************************************/ -WRITE16_MEMBER(bionicc_state::bionicc_bgvideoram_w) +WRITE16_MEMBER(bionicc_state::bgvideoram_w) { COMBINE_DATA(&m_bgvideoram[offset]); m_bg_tilemap->mark_tile_dirty(offset / 2); } -WRITE16_MEMBER(bionicc_state::bionicc_fgvideoram_w) +WRITE16_MEMBER(bionicc_state::fgvideoram_w) { COMBINE_DATA(&m_fgvideoram[offset]); m_fg_tilemap->mark_tile_dirty(offset / 2); } -WRITE16_MEMBER(bionicc_state::bionicc_txvideoram_w) +WRITE16_MEMBER(bionicc_state::txvideoram_w) { COMBINE_DATA(&m_txvideoram[offset]); m_tx_tilemap->mark_tile_dirty(offset & 0x3ff); } -WRITE16_MEMBER(bionicc_state::bionicc_scroll_w) +WRITE16_MEMBER(bionicc_state::scroll_w) { data = COMBINE_DATA(&m_scroll[offset]); @@ -163,7 +163,7 @@ WRITE16_MEMBER(bionicc_state::bionicc_scroll_w) } } -WRITE16_MEMBER(bionicc_state::bionicc_gfxctrl_w) +WRITE16_MEMBER(bionicc_state::gfxctrl_w) { if (ACCESSING_BITS_8_15) { @@ -187,7 +187,7 @@ WRITE16_MEMBER(bionicc_state::bionicc_gfxctrl_w) -uint32_t bionicc_state::screen_update_bionicc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t bionicc_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap.fill(m_palette->black_pen(), cliprect); m_fg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER1, 0); /* nothing in FRONT */ diff --git a/src/mame/video/bking.cpp b/src/mame/video/bking.cpp index f64a80b8c3b..d39212ad6f2 100644 --- a/src/mame/video/bking.cpp +++ b/src/mame/video/bking.cpp @@ -254,7 +254,7 @@ uint32_t bking_state::screen_update_bking(screen_device &screen, bitmap_ind16 &b } -void bking_state::screen_eof_bking(screen_device &screen, bool state) +WRITE_LINE_MEMBER(bking_state::screen_vblank_bking) { // rising edge if (state) @@ -290,7 +290,7 @@ void bking_state::screen_eof_bking(screen_device &screen, bool state) m_bg_tilemap->set_scrollx(0, flip_screen() ? -xld : xld); m_bg_tilemap->set_scrolly(0, flip_screen() ? -yld : yld); - m_bg_tilemap->draw(screen, m_colmap_bg, rect, 0, 0); + m_bg_tilemap->draw(*m_screen, m_colmap_bg, rect, 0, 0); m_bg_tilemap->set_scrollx(0, 0); m_bg_tilemap->set_scrolly(0, 0); diff --git a/src/mame/video/blstroid.cpp b/src/mame/video/blstroid.cpp index d69d6043fee..af8c6b9a12e 100644 --- a/src/mame/video/blstroid.cpp +++ b/src/mame/video/blstroid.cpp @@ -21,7 +21,7 @@ TILE_GET_INFO_MEMBER(blstroid_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = data & 0x1fff; int color = (data >> 13) & 0x07; SET_TILE_INFO_MEMBER(0, code, color, 0); @@ -71,6 +71,8 @@ const atari_motion_objects_config blstroid_state::s_mob_config = VIDEO_START_MEMBER(blstroid_state,blstroid) { + m_irq_off_timer = timer_alloc(TIMER_IRQ_OFF); + m_irq_on_timer = timer_alloc(TIMER_IRQ_ON); } @@ -123,8 +125,8 @@ void blstroid_state::scanline_update(screen_device &screen, int scanline) attotime period_on = screen.time_until_pos(vpos + 7, width * 0.9); attotime period_off = screen.time_until_pos(vpos + 8, width * 0.9); - timer_set(period_on, TIMER_IRQ_ON); - timer_set(period_off, TIMER_IRQ_OFF); + m_irq_on_timer->adjust(period_on); + m_irq_off_timer->adjust(period_off); } } diff --git a/src/mame/video/bosco.cpp b/src/mame/video/bosco.cpp index f2153c3873e..07f2f428eac 100644 --- a/src/mame/video/bosco.cpp +++ b/src/mame/video/bosco.cpp @@ -301,7 +301,7 @@ uint32_t bosco_state::screen_update_bosco(screen_device &screen, bitmap_ind16 &b } -void bosco_state::screen_eof_bosco(screen_device &screen, bool state) +WRITE_LINE_MEMBER(bosco_state::screen_vblank_bosco) { // falling edge if (!state) diff --git a/src/mame/video/c45.cpp b/src/mame/video/c45.cpp index 960c1fc23c0..b2c72aacc8b 100644 --- a/src/mame/video/c45.cpp +++ b/src/mame/video/c45.cpp @@ -45,7 +45,7 @@ //**************************************************************************** // device type definition -const device_type NAMCO_C45_ROAD = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_C45_ROAD, namco_c45_road_device, "namco_c45_road", "Namco C45 Road") const gfx_layout namco_c45_road_device::tilelayout = @@ -77,7 +77,7 @@ ADDRESS_MAP_END //------------------------------------------------- namco_c45_road_device::namco_c45_road_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_C45_ROAD, "Namco C45 Road", tag, owner, clock, "namco_c45_road", __FILE__), + : device_t(mconfig, NAMCO_C45_ROAD, tag, owner, clock), device_gfx_interface(mconfig, *this, gfxinfo), device_memory_interface(mconfig, *this), m_space_config("c45", ENDIANNESS_BIG, 16, 17, 0, address_map_delegate(FUNC(namco_c45_road_device::map), this)), diff --git a/src/mame/video/c45.h b/src/mame/video/c45.h index 621308e493a..bc9172d1b5e 100644 --- a/src/mame/video/c45.h +++ b/src/mame/video/c45.h @@ -1,9 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Phil Stroffolino, Aaron Giles, Alex W. Jackson -#pragma once +#ifndef MAME_VIDEO_C45_H +#define MAME_VIDEO_C45_H -#ifndef __C45_H__ -#define __C45_H__ +#pragma once //************************************************************************** @@ -23,15 +23,6 @@ class namco_c45_road_device : public device_t, public device_gfx_interface, public device_memory_interface { - // constants - static const int ROAD_COLS = 64; - static const int ROAD_ROWS = 512; - static const int ROAD_TILE_SIZE = 16; - static const int ROAD_TILEMAP_WIDTH = ROAD_TILE_SIZE * ROAD_COLS; - static const int ROAD_TILEMAP_HEIGHT = ROAD_TILE_SIZE * ROAD_ROWS; - static const int WORDS_PER_ROAD_TILE = 0x40/2; - static const gfx_layout tilelayout; - public: // construction/destruction namco_c45_road_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -52,6 +43,15 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; private: + // constants + static constexpr int ROAD_COLS = 64; + static constexpr int ROAD_ROWS = 512; + static constexpr int ROAD_TILE_SIZE = 16; + static constexpr int ROAD_TILEMAP_WIDTH = ROAD_TILE_SIZE * ROAD_COLS; + static constexpr int ROAD_TILEMAP_HEIGHT = ROAD_TILE_SIZE * ROAD_ROWS; + static constexpr int WORDS_PER_ROAD_TILE = 0x40/2; + static const gfx_layout tilelayout; + // internal helpers DECLARE_GFXDECODE_MEMBER(gfxinfo); DECLARE_WRITE16_MEMBER( tilemap_w ); @@ -70,6 +70,6 @@ private: // device type definition -extern const device_type NAMCO_C45_ROAD; +DECLARE_DEVICE_TYPE(NAMCO_C45_ROAD, namco_c45_road_device) -#endif +#endif // MAME_VIDEO_C45_H diff --git a/src/mame/video/capbowl.cpp b/src/mame/video/capbowl.cpp index fc5d0a625f6..66b3a599676 100644 --- a/src/mame/video/capbowl.cpp +++ b/src/mame/video/capbowl.cpp @@ -117,7 +117,7 @@ READ8_MEMBER(capbowl_state::bowlrama_blitter_r) * *************************************/ -inline rgb_t capbowl_state::pen_for_pixel( uint8_t *src, uint8_t pix ) +inline rgb_t capbowl_state::pen_for_pixel( uint8_t const *src, uint8_t pix ) { return rgb_t(pal4bit(src[(pix << 1) + 0] >> 0), pal4bit(src[(pix << 1) + 1] >> 4), @@ -131,7 +131,7 @@ uint32_t capbowl_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma m_tms34061->get_display_state(); /* if we're blanked, just fill with black */ - if (m_tms34061->m_display.blanked) + if (m_tms34061->blanked()) { bitmap.fill(rgb_t::black(), cliprect); return 0; @@ -140,7 +140,7 @@ uint32_t capbowl_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma /* now regenerate the bitmap */ for (int y = cliprect.min_y; y <= cliprect.max_y; y++) { - uint8_t *src = &m_tms34061->m_display.vram[256 * y]; + uint8_t const *src = &m_tms34061->vram(y); uint32_t *dest = &bitmap.pix32(y); for (int x = cliprect.min_x & ~1; x <= cliprect.max_x; x += 2) diff --git a/src/mame/video/carpolo.cpp b/src/mame/video/carpolo.cpp index e2e7d2d0915..48082e42c4d 100644 --- a/src/mame/video/carpolo.cpp +++ b/src/mame/video/carpolo.cpp @@ -540,7 +540,7 @@ int carpolo_state::check_sprite_border_collision(uint8_t x1, uint8_t y1, int cod } -void carpolo_state::screen_eof_carpolo(screen_device &screen, bool state) +WRITE_LINE_MEMBER(carpolo_state::screen_vblank_carpolo) { // rising edge if (state) diff --git a/src/mame/video/cchasm.cpp b/src/mame/video/cchasm.cpp index e97437241ef..9aa48af8bca 100644 --- a/src/mame/video/cchasm.cpp +++ b/src/mame/video/cchasm.cpp @@ -65,7 +65,7 @@ void cchasm_state::refresh () logerror("JUMP to %x\n", data); break; case COLOR: - color = VECTOR_COLOR444(data ^ 0xfff); + color = vector_device::color444(data ^ 0xfff); break; case SCALEY: scaley = data << 5; diff --git a/src/mame/video/cinemat.cpp b/src/mame/video/cinemat.cpp index 09e5d235b2a..fb90344d2ea 100644 --- a/src/mame/video/cinemat.cpp +++ b/src/mame/video/cinemat.cpp @@ -86,7 +86,7 @@ WRITE8_MEMBER(cinemat_state::cinemat_vector_control_w) /* X register as the intensity */ if (data != m_last_control && data) { - int xval = cpu->state_int(CCPU_X) & 0x0f; + int xval = cpu->state_int(ccpu_cpu_device::CCPU_X) & 0x0f; i = (xval + 1) * 255 / 16; m_vector_color = rgb_t(i,i,i); } @@ -97,7 +97,7 @@ WRITE8_MEMBER(cinemat_state::cinemat_vector_control_w) /* X register as the intensity */ if (data != m_last_control && data) { - int xval = cpu->state_int(CCPU_X); + int xval = cpu->state_int(ccpu_cpu_device::CCPU_X); xval = (~xval >> 2) & 0x3f; i = (xval + 1) * 255 / 64; m_vector_color = rgb_t(i,i,i); @@ -109,7 +109,7 @@ WRITE8_MEMBER(cinemat_state::cinemat_vector_control_w) /* as 4-4-4 BGR values */ if (data != m_last_control && data) { - int xval = cpu->state_int(CCPU_X); + int xval = cpu->state_int(ccpu_cpu_device::CCPU_X); r = (~xval >> 0) & 0x0f; r = r * 255 / 15; g = (~xval >> 4) & 0x0f; @@ -128,15 +128,15 @@ WRITE8_MEMBER(cinemat_state::cinemat_vector_control_w) /* on an IV instruction if data == 0 here */ if (data != m_last_control && !data) { - m_qb3_lastx = cpu->state_int(CCPU_X); - m_qb3_lasty = cpu->state_int(CCPU_Y); + m_qb3_lastx = cpu->state_int(ccpu_cpu_device::CCPU_X); + m_qb3_lasty = cpu->state_int(ccpu_cpu_device::CCPU_Y); } /* on the rising edge of the data value, latch the Y register */ /* as 2-3-3 BGR values */ if (data != m_last_control && data) { - int yval = cpu->state_int(CCPU_Y); + int yval = cpu->state_int(ccpu_cpu_device::CCPU_Y); r = (~yval >> 0) & 0x07; r = r * 255 / 7; g = (~yval >> 3) & 0x07; @@ -146,8 +146,8 @@ WRITE8_MEMBER(cinemat_state::cinemat_vector_control_w) m_vector_color = rgb_t(r,g,b); /* restore the original X,Y values */ - cpu->set_state_int(CCPU_X, m_qb3_lastx); - cpu->set_state_int(CCPU_Y, m_qb3_lasty); + cpu->set_state_int(ccpu_cpu_device::CCPU_X, m_qb3_lastx); + cpu->set_state_int(ccpu_cpu_device::CCPU_Y, m_qb3_lasty); } } break; diff --git a/src/mame/video/comx35.cpp b/src/mame/video/comx35.cpp index 32da4703c94..013809140f5 100644 --- a/src/mame/video/comx35.cpp +++ b/src/mame/video/comx35.cpp @@ -89,13 +89,13 @@ void comx35_state::video_start() /* Machine Drivers */ MACHINE_CONFIG_FRAGMENT( comx35_pal_video ) - MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, CDP1869_DOT_CLK_PAL) + MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_CDP1869_ADD(CDP1869_TAG, CDP1869_DOT_CLK_PAL, cdp1869_page_ram) - MCFG_CDP1869_COLOR_CLOCK(CDP1869_COLOR_CLK_PAL) + MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_PAL, cdp1869_page_ram) + MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_PAL) MCFG_CDP1869_CHAR_PCB_READ_OWNER(comx35_state, comx35_pcb_r) MCFG_CDP1869_CHAR_RAM_READ_OWNER(comx35_state, comx35_charram_r) MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(comx35_state, comx35_charram_w) @@ -109,13 +109,13 @@ MACHINE_CONFIG_FRAGMENT( comx35_pal_video ) MACHINE_CONFIG_END MACHINE_CONFIG_FRAGMENT( comx35_ntsc_video ) - MCFG_CDP1869_SCREEN_NTSC_ADD(CDP1869_TAG, SCREEN_TAG, CDP1869_DOT_CLK_NTSC) + MCFG_CDP1869_SCREEN_NTSC_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_NTSC) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_CDP1869_ADD(CDP1869_TAG, CDP1869_DOT_CLK_NTSC, cdp1869_page_ram) - MCFG_CDP1869_COLOR_CLOCK(CDP1869_COLOR_CLK_NTSC) + MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_NTSC, cdp1869_page_ram) + MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_NTSC) MCFG_CDP1869_CHAR_PCB_READ_OWNER(comx35_state, comx35_pcb_r) MCFG_CDP1869_CHAR_RAM_READ_OWNER(comx35_state, comx35_charram_r) MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(comx35_state, comx35_charram_w) diff --git a/src/mame/video/cps1.cpp b/src/mame/video/cps1.cpp index 14aba3f2eae..7efc92a4813 100644 --- a/src/mame/video/cps1.cpp +++ b/src/mame/video/cps1.cpp @@ -1555,7 +1555,8 @@ static const struct CPS1config cps1_config_table[]= {"sf2mdt", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, {"sf2mdta", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, {"sf2mdtb", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, - {"sf2b", CPS_B_17, mapper_STF29, 0x36, 0, 0, 1 }, + {"sf2b", CPS_B_17, mapper_STF29, 0x36, 0, 0, 1 }, + {"sf2ceupl", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 1 }, {"varth", CPS_B_04, mapper_VA63B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ // wrong, this set uses VA24B, dumped but equations still not added {"varthb", CPS_B_04, mapper_VA63B, 0, 0, 0, 0x0F }, {"varthr1", CPS_B_04, mapper_VA63B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ // wrong, this set uses VA24B, dumped but equations still not added @@ -1574,6 +1575,7 @@ static const struct CPS1config cps1_config_table[]= {"dino", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */ {"dinou", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */ {"dinoj", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */ + {"dinoa", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */ {"dinopic", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */ {"dinopic2", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */ {"dinohunt", CPS_B_21_DEF, mapper_CD63B }, /* Chinese bootleg */ @@ -3089,7 +3091,7 @@ if (0 && machine().input().code_pressed(KEYCODE_Z)) return 0; } -void cps_state::screen_eof_cps1(screen_device &screen, bool state) +WRITE_LINE_MEMBER(cps_state::screen_vblank_cps1) { // rising edge if (state) diff --git a/src/mame/video/crshrace.cpp b/src/mame/video/crshrace.cpp index f2289d494bd..879d436923d 100644 --- a/src/mame/video/crshrace.cpp +++ b/src/mame/video/crshrace.cpp @@ -140,9 +140,3 @@ uint32_t crshrace_state::screen_update_crshrace(screen_device &screen, bitmap_in } return 0; } - -void crshrace_state::screen_eof_crshrace(screen_device &screen, bool state) -{ - m_spriteram->vblank_copy_rising(screen, state); - m_spriteram2->vblank_copy_rising(screen, state); -} diff --git a/src/mame/video/crt.cpp b/src/mame/video/crt.cpp index a29fce66706..c4a13af52a0 100644 --- a/src/mame/video/crt.cpp +++ b/src/mame/video/crt.cpp @@ -39,7 +39,7 @@ enum // device type definition -const device_type CRT = device_creator; +DEFINE_DEVICE_TYPE(CRT, crt_device, "crt", "CRT Video") //************************************************************************** // LIVE DEVICE @@ -50,7 +50,7 @@ const device_type CRT = device_creator; //------------------------------------------------- crt_device::crt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, CRT, "CRT Video", tag, owner, clock, "crt", __FILE__), + : device_t(mconfig, CRT, tag, owner, clock), m_list(nullptr), m_list_head(nullptr), m_decay_counter(0), diff --git a/src/mame/video/crt.h b/src/mame/video/crt.h index 9f4376c911e..34c546107f3 100644 --- a/src/mame/video/crt.h +++ b/src/mame/video/crt.h @@ -8,8 +8,10 @@ *************************************************************************/ -#ifndef __CRT_H__ -#define __CRT_H__ +#ifndef MAME_VIDEO_CRT_H +#define MAME_VIDEO_CRT_H + +#pragma once //************************************************************************** @@ -30,24 +32,12 @@ // TYPE DEFINITIONS //************************************************************************** -struct crt_point -{ - crt_point() : - intensity(0), - next(0) {} - - int intensity; /* current intensity of the pixel */ - /* a node is not in the list when (intensity == -1) */ - int next; /* index of next pixel in list */ -}; - // ======================> crt_device class crt_device : public device_t { public: crt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~crt_device() { } static void set_num_levels(device_t &device, int levels) { downcast(device).m_num_intensity_levels = levels; } static void set_offsets(device_t &device, int x_offset, int y_offset) @@ -72,6 +62,15 @@ protected: virtual void device_start() override; private: + struct crt_point + { + crt_point() { } + + int intensity = 0; /* current intensity of the pixel */ + /* a node is not in the list when (intensity == -1) */ + int next = 0; /* index of next pixel in list */ + }; + crt_point *m_list; /* array of (crt_window_width*crt_window_height) point */ std::unique_ptr m_list_head; /* head of the list of lit pixels (index in the array) */ /* keep a separate list for each display line (makes the video code slightly faster) */ @@ -86,8 +85,8 @@ private: int m_window_height; }; -extern const device_type CRT; +DECLARE_DEVICE_TYPE(CRT, crt_device) -#endif /* CRT_H_ */ +#endif // MAME_VIDEO_CRT_H diff --git a/src/mame/video/cyberbal.cpp b/src/mame/video/cyberbal.cpp index 3a22913acc2..31b132a0436 100644 --- a/src/mame/video/cyberbal.cpp +++ b/src/mame/video/cyberbal.cpp @@ -23,7 +23,16 @@ TILE_GET_INFO_MEMBER(cyberbal_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); + int code = data & 0xfff; + int color = (data >> 12) & 0x07; + SET_TILE_INFO_MEMBER(2, code, color, (data >> 15) & 1); +} + + +TILE_GET_INFO_MEMBER(cyberbal_state::get_alpha2_tile_info) +{ + uint16_t data = m_alpha2_tilemap->basemem_read(tile_index); int code = data & 0xfff; int color = (data >> 12) & 0x07; SET_TILE_INFO_MEMBER(2, code, color, (data >> 15) & 1); @@ -32,13 +41,23 @@ TILE_GET_INFO_MEMBER(cyberbal_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(cyberbal_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = data & 0x1fff; int color = (data >> 11) & 0x0f; SET_TILE_INFO_MEMBER(0, code, color, (data >> 15) & 1); } +TILE_GET_INFO_MEMBER(cyberbal_state::get_playfield2_tile_info) +{ + uint16_t data = m_playfield2_tilemap->basemem_read(tile_index); + int code = data & 0x1fff; + int color = (data >> 11) & 0x0f; + SET_TILE_INFO_MEMBER(0, code, color, (data >> 15) & 1); +} + + + /************************************* * diff --git a/src/mame/video/dbz.cpp b/src/mame/video/dbz.cpp index ee91f5d1b2e..dae60f3e7ea 100644 --- a/src/mame/video/dbz.cpp +++ b/src/mame/video/dbz.cpp @@ -90,10 +90,10 @@ void dbz_state::video_start() uint32_t dbz_state::screen_update_dbz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - static const int K053251_CI[6] = { K053251_CI3, K053251_CI4, K053251_CI4, K053251_CI4, K053251_CI2, K053251_CI1 }; + static const int K053251_CI[6] = { k053251_device::CI3, k053251_device::CI4, k053251_device::CI4, k053251_device::CI4, k053251_device::CI2, k053251_device::CI1 }; int layer[5], plane, new_colorbase; - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI0); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI0); for (plane = 0; plane < 6; plane++) { @@ -113,15 +113,15 @@ uint32_t dbz_state::screen_update_dbz(screen_device &screen, bitmap_ind16 &bitma //layers priority layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI3); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI3); layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI4); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4); layer[2] = 3; - m_layerpri[2] = m_k053251->get_priority(K053251_CI0); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI0); layer[3] = 4; - m_layerpri[3] = m_k053251->get_priority(K053251_CI2); + m_layerpri[3] = m_k053251->get_priority(k053251_device::CI2); layer[4] = 5; - m_layerpri[4] = m_k053251->get_priority(K053251_CI1); + m_layerpri[4] = m_k053251->get_priority(k053251_device::CI1); konami_sortlayers5(layer, m_layerpri); diff --git a/src/mame/video/dcheese.cpp b/src/mame/video/dcheese.cpp index 37c0fe12b69..ad4cb6619d7 100644 --- a/src/mame/video/dcheese.cpp +++ b/src/mame/video/dcheese.cpp @@ -99,8 +99,9 @@ void dcheese_state::video_start() /* the destination bitmap is not directly accessible to the CPU */ m_dstbitmap = std::make_unique(DSTBITMAP_WIDTH, DSTBITMAP_HEIGHT); - /* create a timer */ + /* create timers */ m_blitter_timer = timer_alloc(TIMER_BLITTER_SCANLINE); + m_signal_irq_timer = timer_alloc(TIMER_SIGNAL_IRQ); /* register for saving */ save_item(NAME(m_blitter_color)); @@ -151,7 +152,7 @@ void dcheese_state::do_clear( ) memset(&m_dstbitmap->pix16(y % DSTBITMAP_HEIGHT), 0, DSTBITMAP_WIDTH * 2); /* signal an IRQ when done (timing is just a guess) */ - timer_set(m_screen->scan_period(), TIMER_SIGNAL_IRQ, 1); + m_signal_irq_timer->adjust(m_screen->scan_period(), 1); } @@ -205,7 +206,7 @@ void dcheese_state::do_blit( ) } /* signal an IRQ when done (timing is just a guess) */ - timer_set(m_screen->scan_period() / 2, TIMER_SIGNAL_IRQ, 2); + m_signal_irq_timer->adjust(m_screen->scan_period() / 2, 2); /* these extra parameters are written but they are always zero, so I don't know what they do */ if (m_blitter_xparam[8] != 0 || m_blitter_xparam[9] != 0 || m_blitter_xparam[10] != 0 || m_blitter_xparam[11] != 0 || diff --git a/src/mame/video/dday.cpp b/src/mame/video/dday.cpp index d6e2ee36aac..43fa2cc6811 100644 --- a/src/mame/video/dday.cpp +++ b/src/mame/video/dday.cpp @@ -37,7 +37,7 @@ void dday_state::start_countdown_timer() { m_timer_value = 0; - machine().scheduler().timer_pulse(attotime::from_seconds(1), timer_expired_delegate(FUNC(dday_state::countdown_timer_callback),this)); + m_countdown_timer->adjust(attotime::from_seconds(1), 0, attotime::from_seconds(1)); } @@ -216,6 +216,8 @@ void dday_state::video_start() m_fg_tilemap->set_transparent_pen(0); m_text_tilemap->set_transparent_pen(0); + m_countdown_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(dday_state::countdown_timer_callback), this)); + start_countdown_timer(); } diff --git a/src/mame/video/decbac06.cpp b/src/mame/video/decbac06.cpp index 7f140cf2365..9ae938168e6 100644 --- a/src/mame/video/decbac06.cpp +++ b/src/mame/video/decbac06.cpp @@ -65,10 +65,10 @@ Priority word (Midres): #include "emu.h" #include "decbac06.h" -const device_type DECO_BAC06 = device_creator; +DEFINE_DEVICE_TYPE(DECO_BAC06, deco_bac06_device, "deco_back06", "DECO BAC06 Tilemap") deco_bac06_device::deco_bac06_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECO_BAC06, "DECO BAC06 Tilemap", tag, owner, clock, "deco_bac06", __FILE__), + : device_t(mconfig, DECO_BAC06, tag, owner, clock), m_pf_data(nullptr), m_pf_rowscroll(nullptr), m_pf_colscroll(nullptr), diff --git a/src/mame/video/decbac06.h b/src/mame/video/decbac06.h index 882f8ef3d23..bf639b7bda7 100644 --- a/src/mame/video/decbac06.h +++ b/src/mame/video/decbac06.h @@ -1,6 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Bryan McPhail, David Haywood -/* BAC06 */ +#ifndef MAME_VIDEO_DECOBAC06_H +#define MAME_VIDEO_DECOBAC06_H + +#pragma once + +#include #define MCFG_BAC06_BOOTLEG_DISABLE_8x8 \ deco_bac06_device::disable_8x8(*device); @@ -148,10 +153,12 @@ private: required_device m_gfxdecode; }; -extern const device_type DECO_BAC06; +DECLARE_DEVICE_TYPE(DECO_BAC06, deco_bac06_device) #define MCFG_DECO_BAC06_GFXDECODE(_gfxtag) \ deco_bac06_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); #define MCFG_DECO_BAC06_GFX_REGION_WIDE(_8x8, _16x16, _wide) \ deco_bac06_device::set_gfx_region_wide(*device, _8x8, _16x16, _wide); + +#endif // MAME_VIDEO_DECOBAC06_H diff --git a/src/mame/video/deckarn.cpp b/src/mame/video/deckarn.cpp index 78f4f38f49b..e0437548660 100644 --- a/src/mame/video/deckarn.cpp +++ b/src/mame/video/deckarn.cpp @@ -12,10 +12,10 @@ void deco_karnovsprites_device::set_gfx_region(device_t &device, int region) dev.m_gfxregion = region; } -const device_type DECO_KARNOVSPRITES = device_creator; +DEFINE_DEVICE_TYPE(DECO_KARNOVSPRITES, deco_karnovsprites_device, "deco_karnovsprites", "DECO Karnov Sprites") deco_karnovsprites_device::deco_karnovsprites_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECO_KARNOVSPRITES, "DECO Karnov Sprites", tag, owner, clock, "deco_karnovsprites", __FILE__) + : device_t(mconfig, DECO_KARNOVSPRITES, tag, owner, clock) , m_gfxregion(0) , m_gfxdecode(*this, finder_base::DUMMY_TAG) { diff --git a/src/mame/video/deckarn.h b/src/mame/video/deckarn.h index 1250d559a87..137ea8a5403 100644 --- a/src/mame/video/deckarn.h +++ b/src/mame/video/deckarn.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Bryan McPhail,David Haywood +#ifndef MAME_VIDEO_DECKARN_H +#define MAME_VIDEO_DECKARN_H + +#pragma once class deco_karnovsprites_device : public device_t @@ -22,10 +26,12 @@ private: required_device m_gfxdecode; }; -extern const device_type DECO_KARNOVSPRITES; +DECLARE_DEVICE_TYPE(DECO_KARNOVSPRITES, deco_karnovsprites_device) #define MCFG_DECO_KARNOVSPRITES_GFXDECODE(_gfxtag) \ deco_karnovsprites_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); #define MCFG_DECO_KARNOVSPRITES_GFX_REGION(_region) \ deco_karnovsprites_device::set_gfx_region(*device, _region); + +#endif // MAME_VIDEO_DECKARN_H diff --git a/src/mame/video/decmxc06.cpp b/src/mame/video/decmxc06.cpp index 46966a99a2e..220cd81127d 100644 --- a/src/mame/video/decmxc06.cpp +++ b/src/mame/video/decmxc06.cpp @@ -48,10 +48,10 @@ void deco_mxc06_device::set_gfx_region(device_t &device, int region) } -const device_type DECO_MXC06 = device_creator; +DEFINE_DEVICE_TYPE(DECO_MXC06, deco_mxc06_device, "deco_mxc06", "DECO MXC06 Sprite") deco_mxc06_device::deco_mxc06_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECO_MXC06, "DECO MXC06 Sprite", tag, owner, clock, "deco_mxc06", __FILE__) + : device_t(mconfig, DECO_MXC06, tag, owner, clock) , device_video_interface(mconfig, *this) , m_gfxregion(0) , m_ramsize(0x800) diff --git a/src/mame/video/decmxc06.h b/src/mame/video/decmxc06.h index 45036eb8a41..1d31aaa93e3 100644 --- a/src/mame/video/decmxc06.h +++ b/src/mame/video/decmxc06.h @@ -1,10 +1,12 @@ // license:BSD-3-Clause // copyright-holders:Bryan McPhail, David Haywood -/* MXC06 */ +#ifndef MAME_VIDEO_DECMXC06_H +#define MAME_VIDEO_DECMXC06_H +#pragma once -class deco_mxc06_device : public device_t, - public device_video_interface + +class deco_mxc06_device : public device_t, public device_video_interface { public: deco_mxc06_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -36,7 +38,7 @@ private: required_device m_gfxdecode; }; -extern const device_type DECO_MXC06; +DECLARE_DEVICE_TYPE(DECO_MXC06, deco_mxc06_device) #define MCFG_DECO_MXC06_GFXDECODE(_gfxtag) \ deco_mxc06_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); @@ -46,3 +48,5 @@ extern const device_type DECO_MXC06; #define MCFG_DECO_MXC06_RAMSIZE(_size) \ deco_mxc06_device::set_ram_size(*device, _size); + +#endif // MAME_VIDEO_DECMXC06_H diff --git a/src/mame/video/deco16ic.cpp b/src/mame/video/deco16ic.cpp index aa5e5cf99e0..55daf66fa2a 100644 --- a/src/mame/video/deco16ic.cpp +++ b/src/mame/video/deco16ic.cpp @@ -174,10 +174,10 @@ Rowscroll style: #include "video/deco16ic.h" #include "render.h" -const device_type DECO16IC = device_creator; +DEFINE_DEVICE_TYPE(DECO16IC, deco16ic_device, "deco16ic", "DECO 55 / 56 / 74 / 141 IC") deco16ic_device::deco16ic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECO16IC, "DECO 55 / 56 / 74 / 141 IC", tag, owner, clock, "deco16ic", __FILE__), + : device_t(mconfig, DECO16IC, tag, owner, clock), device_video_interface(mconfig, *this), m_pf1_data(nullptr), m_pf2_data(nullptr), diff --git a/src/mame/video/deco16ic.h b/src/mame/video/deco16ic.h index 1483c62c24c..b1e6794410a 100644 --- a/src/mame/video/deco16ic.h +++ b/src/mame/video/deco16ic.h @@ -8,10 +8,10 @@ Data East IC 55 / 56 / 74 / 141 **************************************************************************/ +#ifndef MAME_VIDEO_DECO16IC_H +#define MAME_VIDEO_DECO16IC_H #pragma once -#ifndef __DECO16IC_H__ -#define __DECO16IC_H__ @@ -156,7 +156,7 @@ private: required_device m_gfxdecode; }; -extern const device_type DECO16IC; +DECLARE_DEVICE_TYPE(DECO16IC, deco16ic_device) @@ -208,4 +208,4 @@ extern const device_type DECO16IC; // function definition for a callback #define DECO16IC_BANK_CB_MEMBER(_name) int _name(int bank) -#endif +#endif // MAME_VIDEO_DECO16IC_H diff --git a/src/mame/video/deco_mlc.cpp b/src/mame/video/deco_mlc.cpp index 433a8937dc4..a97b1c2e10d 100644 --- a/src/mame/video/deco_mlc.cpp +++ b/src/mame/video/deco_mlc.cpp @@ -537,7 +537,7 @@ void deco_mlc_state::draw_sprites( const rectangle &cliprect, int scanline, uint } } -void deco_mlc_state::screen_eof_mlc(screen_device &screen, bool state) +WRITE_LINE_MEMBER(deco_mlc_state::screen_vblank_mlc) { // rising edge if (state) diff --git a/src/mame/video/deco_zoomspr.cpp b/src/mame/video/deco_zoomspr.cpp index 1933b0797eb..4a613bf5e78 100644 --- a/src/mame/video/deco_zoomspr.cpp +++ b/src/mame/video/deco_zoomspr.cpp @@ -13,10 +13,10 @@ #include "emu.h" #include "deco_zoomspr.h" -const device_type DECO_ZOOMSPR = device_creator; +DEFINE_DEVICE_TYPE(DECO_ZOOMSPR, deco_zoomspr_device, "deco_zoomspr", "DECO Zooming Sprites") deco_zoomspr_device::deco_zoomspr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECO_ZOOMSPR, "DECO Zooming Sprites", tag, owner, clock, "deco_zoomspr", __FILE__) + : device_t(mconfig, DECO_ZOOMSPR, tag, owner, clock) , m_gfxdecode(*this, finder_base::DUMMY_TAG) { } diff --git a/src/mame/video/deco_zoomspr.h b/src/mame/video/deco_zoomspr.h index 5f4236e510d..83236eb4ff6 100644 --- a/src/mame/video/deco_zoomspr.h +++ b/src/mame/video/deco_zoomspr.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Bryan McPhail,David Haywood +#ifndef MAME_VIDEO_DECO_ZOOMSPR_H +#define MAME_VIDEO_DECO_ZOOMSPR_H + +#pragma once class deco_zoomspr_device : public device_t @@ -29,7 +33,9 @@ private: }; -extern const device_type DECO_ZOOMSPR; +DECLARE_DEVICE_TYPE(DECO_ZOOMSPR, deco_zoomspr_device) #define MCFG_DECO_ZOOMSPR_GFXDECODE(_gfxtag) \ deco_zoomspr_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); + +#endif // MAME_VIDEO_DECO_ZOOMSPR_H diff --git a/src/mame/video/decocass.cpp b/src/mame/video/decocass.cpp index a9901a93f6d..72c3684bb56 100644 --- a/src/mame/video/decocass.cpp +++ b/src/mame/video/decocass.cpp @@ -11,8 +11,10 @@ with semi-independent scrolling, and the ability to transition between scrolling different sections. - Additionally it supports the headlight effect also needed for - a Highway Chase style game. + Additionally it supports the headlight and tunnel effects also + needed for a Highway Chase style game. These both produce a pen + modification effect which is not emulated properly now. The lack + of tunnel . --- @@ -32,18 +34,15 @@ - different game revision to emulated version, main boss enemy shown at the top of the scoreboard differs so notes below could be invalid - - - bullets should be white, not black - - BG layer changes to orange colours for first level - (this would require a palette bitplane re-order we - don't currently support) + - bullets should be white, not black (OK) + - BG layer changes to orange colours for first level, but + reverts to red when player explodes mamedev.emulab.it/haze/reference/sm18975592-HWY_CHASE.mp4 - road / bg colour should be darkish blue outside of tunnels - road / bg colour should be black in tunnels - headlight should be the same darkish blue as the road at all times, so only visible in tunnels - - our headlight is misplaced (should be simple fix) - center line of road does not exist on hw! - enemies are hidden in tunnels (like madalien) - road / bg flashs regular blue when enemy is hit revealing @@ -53,7 +52,7 @@ - colours of BG tilemap are glitchy even on hardware eg. Pink desert after first tunnel, Green water after 2nd tunnel even when the right palettes exist! - - enemy bullets are red + - player bullets are yellow, enemy bullets are red (OK) mamedev.emulab.it/haze/reference/sm17433759-PRO_BOWLING.mp4 - no notes @@ -81,8 +80,7 @@ blue, they appear green in our emulation mamedev.emulab.it/haze/reference/sm17202201-SKATER.mp4 - - shadow handling (headlight sprite) positioning is wrong, the - game also turns on the 'cross' bit, why? + - the game turns on the 'cross' bit, why? mamedev.emulab.it/haze/reference/sm17201813-ZEROIZE.mp4 - no notes @@ -558,7 +556,7 @@ void decocass_state::draw_missiles(bitmap_ind16 &bitmap, const rectangle &clipre for (x = 0; x < 4; x++) { if (sx >= cliprect.min_x && sx <= cliprect.max_x) - bitmap.pix16(sy, sx) = (m_color_missiles >> 4) & 7; + bitmap.pix16(sy, sx) = (m_color_missiles & 7) | 8; sx++; } @@ -574,7 +572,7 @@ void decocass_state::draw_missiles(bitmap_ind16 &bitmap, const rectangle &clipre for (x = 0; x < 4; x++) { if (sx >= cliprect.min_x && sx <= cliprect.max_x) - bitmap.pix16(sy, sx) = m_color_missiles & 7; + bitmap.pix16(sy, sx) = ((m_color_missiles >> 4) & 7) | 8; sx++; } } @@ -741,8 +739,17 @@ uint32_t decocass_state::screen_update_decocass(screen_device &screen, bitmap_in draw_edge(bitmap,cliprect,1,false); } } - m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + // LS148 @ 2B (DSP-8 board) sets pen priority + + // priority 1: sprites draw_sprites(bitmap, cliprect, (m_color_center_bot >> 1) & 1, 0, 0, m_fgvideoram, 0x20); + + // priority 2 & 3: missiles draw_missiles(bitmap, cliprect, 1, 0, m_colorram, 0x20); + + // priority 4: foreground + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; } diff --git a/src/mame/video/decocomn.cpp b/src/mame/video/decocomn.cpp index b9612e2ea4f..61a5226b21d 100644 --- a/src/mame/video/decocomn.cpp +++ b/src/mame/video/decocomn.cpp @@ -10,10 +10,10 @@ #include "video/decocomn.h" -const device_type DECOCOMN = device_creator; +DEFINE_DEVICE_TYPE(DECOCOMN, decocomn_device, "decocomn", "DECO Common Video Functions") decocomn_device::decocomn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECOCOMN, "DECO Common Video Functions", tag, owner, clock, "decocomn", __FILE__), + : device_t(mconfig, DECOCOMN, tag, owner, clock), device_video_interface(mconfig, *this), m_dirty_palette(nullptr), m_priority(0), diff --git a/src/mame/video/decocomn.h b/src/mame/video/decocomn.h index ff70be8ef23..80879d3810d 100644 --- a/src/mame/video/decocomn.h +++ b/src/mame/video/decocomn.h @@ -5,10 +5,10 @@ decocomn.h **************************************************************************/ +#ifndef MAME_VIDEO_DECOCOMN_H +#define MAME_VIDEO_DECOCOMN_H #pragma once -#ifndef __DECOCOMN_H__ -#define __DECOCOMN_H__ /*************************************************************************** @@ -21,7 +21,6 @@ class decocomn_device : public device_t, { public: decocomn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~decocomn_device() {} // static configuration static void static_set_palette_tag(device_t &device, const char *tag); @@ -46,7 +45,7 @@ private: required_shared_ptr m_generic_paletteram_16; }; -extern const device_type DECOCOMN; +DECLARE_DEVICE_TYPE(DECOCOMN, decocomn_device) @@ -60,4 +59,4 @@ extern const device_type DECOCOMN; #define MCFG_DECOCOMN_PALETTE(_palette_tag) \ decocomn_device::static_set_palette_tag(*device, "^" _palette_tag); -#endif +#endif // MAME_VIDEO_DECOCOMN_H diff --git a/src/mame/video/decodmd1.cpp b/src/mame/video/decodmd1.cpp index 810d9562208..47d2bb5857b 100644 --- a/src/mame/video/decodmd1.cpp +++ b/src/mame/video/decodmd1.cpp @@ -12,7 +12,7 @@ #include "rendlay.h" #include "screen.h" -const device_type DECODMD1 = device_creator; +DEFINE_DEVICE_TYPE(DECODMD1, decodmd_type1_device, "decodmd1", "Data East Pinball Dot Matrix Display Type 1") READ8_MEMBER( decodmd_type1_device::latch_r ) { @@ -233,7 +233,7 @@ machine_config_constructor decodmd_type1_device::device_mconfig_additions() cons } decodmd_type1_device::decodmd_type1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECODMD1, "Data East Pinball Dot Matrix Display Type 1", tag, owner, clock, "decodmd1", __FILE__), + : device_t(mconfig, DECODMD1, tag, owner, clock), m_cpu(*this,"dmdcpu"), m_rombank1(*this,"dmdbank1"), m_rombank2(*this,"dmdbank2"), @@ -252,7 +252,7 @@ void decodmd_type1_device::device_reset() m_rom = memregion(m_gfxtag); memset(RAM,0,0x2000); - memset(m_pixels,0,0x200); + memset(m_pixels,0,0x200*sizeof(uint32_t)); ROM = m_rom->base(); m_rombank1->configure_entries(0, 8, &ROM[0x0000], 0x4000); diff --git a/src/mame/video/decodmd1.h b/src/mame/video/decodmd1.h index 3a5e605d58a..6e44c91cf62 100644 --- a/src/mame/video/decodmd1.h +++ b/src/mame/video/decodmd1.h @@ -4,8 +4,10 @@ * Data East Pinball DMD Type 1 display */ -#ifndef DECODMD1_H_ -#define DECODMD1_H_ +#ifndef MAME_VIDEO_DECODMD1_H +#define MAME_VIDEO_DECODMD1_H + +#pragma once #include "cpu/z80/z80.h" #include "machine/ram.h" @@ -14,10 +16,6 @@ MCFG_DEVICE_ADD(_tag, DECODMD1, 0) \ decodmd_type1_device::static_set_gfxregion(*device, _region); -#define B_CLR 0x01 -#define B_SET 0x02 -#define B_CLK 0x04 - class decodmd_type1_device : public device_t { public: @@ -49,6 +47,10 @@ protected: virtual void device_reset() override; private: + static constexpr unsigned B_CLR = 0x01; + static constexpr unsigned B_SET = 0x02; + static constexpr unsigned B_CLK = 0x04; + uint8_t m_latch; uint8_t m_status; uint8_t m_ctrl; @@ -73,7 +75,7 @@ private: void set_busy(uint8_t input, uint8_t val); }; -extern const device_type DECODMD1; +DECLARE_DEVICE_TYPE(DECODMD1, decodmd_type1_device) -#endif /* DECODMD1_H_ */ +#endif // MAME_VIDEO_DECODMD1_H diff --git a/src/mame/video/decodmd2.cpp b/src/mame/video/decodmd2.cpp index d801afe3025..3e0d94137b0 100644 --- a/src/mame/video/decodmd2.cpp +++ b/src/mame/video/decodmd2.cpp @@ -13,7 +13,7 @@ #include "rendlay.h" #include "screen.h" -const device_type DECODMD2 = device_creator; +DEFINE_DEVICE_TYPE(DECODMD2, decodmd_type2_device, "decodmd2", "Data East Pinball Dot Matrix Display Type 2") WRITE8_MEMBER( decodmd_type2_device::bank_w ) { @@ -161,7 +161,7 @@ machine_config_constructor decodmd_type2_device::device_mconfig_additions() cons } decodmd_type2_device::decodmd_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECODMD2, "Data East Pinball Dot Matrix Display Type 2", tag, owner, clock, "decodmd2", __FILE__), + : device_t(mconfig, DECODMD2, tag, owner, clock), m_cpu(*this,"dmdcpu"), m_mc6845(*this,"dmd6845"), m_rombank1(*this,"dmdbank1"), diff --git a/src/mame/video/decodmd2.h b/src/mame/video/decodmd2.h index 413653ea170..73dbe10ca33 100644 --- a/src/mame/video/decodmd2.h +++ b/src/mame/video/decodmd2.h @@ -4,30 +4,23 @@ * Data East Pinball DMD Type 2 Display */ -#ifndef DECODMD_H_ -#define DECODMD_H_ +#ifndef MAME_VIDEO_DECODMD2_H +#define MAME_VIDEO_DECODMD2_H + +#pragma once #include "cpu/m6809/m6809.h" -#include "video/mc6845.h" #include "machine/ram.h" +#include "video/mc6845.h" #define MCFG_DECODMD_TYPE2_ADD(_tag, _region) \ MCFG_DEVICE_ADD(_tag, DECODMD2, 0) \ decodmd_type2_device::static_set_gfxregion(*device, _region); -#define START_ADDRESS (((m_crtc_reg[0x0c]<<8) & 0x3f00) | (m_crtc_reg[0x0d] & 0xff)) - class decodmd_type2_device : public device_t { public: decodmd_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - required_device m_cpu; - required_device m_mc6845; - required_memory_bank m_rombank1; - required_memory_bank m_rombank2; - required_memory_bank m_rambank; - required_device m_ram; - memory_region* m_rom; DECLARE_WRITE8_MEMBER(bank_w); DECLARE_WRITE8_MEMBER(crtc_address_w); @@ -50,7 +43,17 @@ protected: virtual void device_start() override; virtual void device_reset() override; + uint16_t start_address() const { return ((m_crtc_reg[0x0c] << 8) & 0x3f00) | (m_crtc_reg[0x0d] & 0xff); } + private: + required_device m_cpu; + required_device m_mc6845; + required_memory_bank m_rombank1; + required_memory_bank m_rombank2; + required_memory_bank m_rambank; + required_device m_ram; + memory_region* m_rom; + uint8_t m_crtc_index; uint8_t m_crtc_reg[0x100]; uint8_t m_latch; @@ -61,6 +64,6 @@ private: const char* m_gfxtag; }; -extern const device_type DECODMD2; +DECLARE_DEVICE_TYPE(DECODMD2, decodmd_type2_device) -#endif /* DECODMD_H_ */ +#endif // MAME_VIDEO_DECODMD2_H diff --git a/src/mame/video/decodmd3.cpp b/src/mame/video/decodmd3.cpp index a5702d4c97d..72f6e068cc3 100644 --- a/src/mame/video/decodmd3.cpp +++ b/src/mame/video/decodmd3.cpp @@ -13,7 +13,7 @@ #include "rendlay.h" #include "screen.h" -const device_type DECODMD3 = device_creator; +DEFINE_DEVICE_TYPE(DECODMD3, decodmd_type3_device, "decodmd3", "Data East Pinball Dot Matrix Display Type 3") WRITE8_MEMBER( decodmd_type3_device::data_w ) { @@ -162,7 +162,7 @@ machine_config_constructor decodmd_type3_device::device_mconfig_additions() cons } decodmd_type3_device::decodmd_type3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECODMD3, "Data East Pinball Dot Matrix Display Type 3", tag, owner, clock, "decodmd3", __FILE__), + : device_t(mconfig, DECODMD3, tag, owner, clock), m_cpu(*this,"dmdcpu"), m_mc6845(*this,"dmd6845"), m_ram(*this,RAM_TAG), diff --git a/src/mame/video/decodmd3.h b/src/mame/video/decodmd3.h index 7bcc898017c..c53504ac373 100644 --- a/src/mame/video/decodmd3.h +++ b/src/mame/video/decodmd3.h @@ -4,12 +4,14 @@ * Data East Pinball DMD Type 3 Display */ -#ifndef DECODMD3_H_ -#define DECODMD3_H_ +#ifndef MAME_VIDEO_DECODMD3_H +#define MAME_VIDEO_DECODMD3_H + +#pragma once #include "cpu/m68000/m68000.h" -#include "video/mc6845.h" #include "machine/ram.h" +#include "video/mc6845.h" #define MCFG_DECODMD_TYPE3_ADD(_tag, _region) \ MCFG_DEVICE_ADD(_tag, DECODMD3, 0) \ @@ -19,11 +21,6 @@ class decodmd_type3_device : public device_t { public: decodmd_type3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - required_device m_cpu; - required_device m_mc6845; - required_device m_ram; - required_memory_bank m_rambank; - required_memory_bank m_rombank; DECLARE_WRITE8_MEMBER(data_w); DECLARE_READ8_MEMBER(busy_r); @@ -39,14 +36,20 @@ public: static void static_set_gfxregion(device_t &device, const char *tag); - memory_region* m_rom; - protected: virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; virtual void device_reset() override; private: + required_device m_cpu; + required_device m_mc6845; + required_device m_ram; + required_memory_bank m_rambank; + required_memory_bank m_rombank; + + memory_region* m_rom; + uint8_t m_status; uint8_t m_crtc_index; uint8_t m_crtc_reg[0x100]; @@ -58,7 +61,6 @@ private: const char* m_gfxtag; }; -extern const device_type DECODMD3; - +DECLARE_DEVICE_TYPE(DECODMD3, decodmd_type3_device) -#endif /* DECODMD3_H_ */ +#endif // MAME_VIDEO_DECODMD3_H diff --git a/src/mame/video/decospr.cpp b/src/mame/video/decospr.cpp index f98e5e61f9c..f332a201074 100644 --- a/src/mame/video/decospr.cpp +++ b/src/mame/video/decospr.cpp @@ -146,10 +146,10 @@ void decospr_device::set_gfx_region(device_t &device, int gfxregion) // printf("decospr_device::set_gfx_region()\n"); } -const device_type DECO_SPRITE = device_creator; +DEFINE_DEVICE_TYPE(DECO_SPRITE, decospr_device, "decospr", "DECO 52 Sprite") decospr_device::decospr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECO_SPRITE, "DECO 52 Sprite", tag, owner, clock, "decospr", __FILE__), + : device_t(mconfig, DECO_SPRITE, tag, owner, clock), device_video_interface(mconfig, *this), m_gfxregion(0), m_is_bootleg(false), diff --git a/src/mame/video/decospr.h b/src/mame/video/decospr.h index c420c6f04b1..883ad675b55 100644 --- a/src/mame/video/decospr.h +++ b/src/mame/video/decospr.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Bryan McPhail, David Haywood +#ifndef MAME_VIDEO_DECOSPR_H +#define MAME_VIDEO_DECOSPR_H + +#pragma once typedef device_delegate decospr_pri_cb_delegate; typedef device_delegate decospr_col_cb_delegate; @@ -10,8 +14,7 @@ typedef device_delegate decospr_col_cb_delegate; #define DECOSPR_COLOUR_CB_MEMBER(_name) uint16_t _name(uint16_t col) -class decospr_device : public device_t, - public device_video_interface +class decospr_device : public device_t, public device_video_interface { public: decospr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -68,7 +71,7 @@ private: required_device m_gfxdecode; }; -extern const device_type DECO_SPRITE; +DECLARE_DEVICE_TYPE(DECO_SPRITE, decospr_device) #define MCFG_DECO_SPRITE_GFX_REGION(_region) \ decospr_device::set_gfx_region(*device, _region); @@ -96,3 +99,5 @@ extern const device_type DECO_SPRITE; #define MCFG_DECO_SPRITE_GFXDECODE(_gfxtag) \ decospr_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); + +#endif // MAME_VIDEO_DECOSPR_H diff --git a/src/mame/video/dgn_beta.cpp b/src/mame/video/dgn_beta.cpp index a5e7b770ab3..0909a8200af 100644 --- a/src/mame/video/dgn_beta.cpp +++ b/src/mame/video/dgn_beta.cpp @@ -4,8 +4,8 @@ video/dgn_beta.c The Dragon Beta uses a 68B45 for it's display generation, this is used in the -conventional wat with a character generator ROM in the two text modes, which are -standard 40x25 and 80x25. In adition to the 6845 there is some TTL logic which +conventional way with a character generator ROM in the two text modes, which are +standard 40x25 and 80x25. In addition to the 6845 there is some TTL logic which provides colour and attributes. In text modes the video ram is organised as pairs of character and attribute, in alternate bytes. @@ -18,7 +18,7 @@ The attributes decode as follows :- u=underline FFF = foreground colour - BBB = bakcground colour + BBB = background colour 000 black 001 red @@ -34,16 +34,16 @@ The attributes decode as follows :- It is interesting to note that the 6845 uses 16 bit wide access to the ram, in contrast to the 8 bit accesses from the CPUs, this allows each increment of the MA lines to move 2 bytes at a time, and therefore feed both the character rom and the attribute decode -circuit simultaniously. +circuit simultaneously. The RAM addresses are made up of two parts, the MA0..13 from the 6845, plus two output lines from the 6821 PIA, I28, the lines are BP6 and PB7, with PB7 being the most -significant. This effectivly allows the 6845 access to the first 128K of memory, as there +significant. This effectively allows the 6845 access to the first 128K of memory, as there are 16 address lines, accessing a 16 bit wide memory. The relationship between how the cpu sees the RAM, and the way the 6845 sees it is simply CPU addr=2x6845 addr. So for the default video address of $1F000, the CPU sees this as -being at $1F000 (after DAT trasnlation). The 6845 is programmed to start it's MA lines +being at $1F000 (after DAT translation). The 6845 is programmed to start it's MA lines counting at $3800, plus A14 and A15 being supplied by PB6 and PB7 from I28, gives an address of $F800, which is the same as $1F000 / 2. @@ -84,13 +84,13 @@ the access to the video memory is unclear to me at the moment. #include "emu.h" #include "includes/dgn_beta.h" -/* GCtrl bitmasks, infered from bits of Beta schematic */ -#define GCtrlWI 0x01 -#define GCtrlSWChar 0x02 /* Character set select */ -#define GCtrlHiLo 0x04 /* Hi/Lo res graphics, Hi=1, Lo=0 */ -#define GCtrlChrGfx 0x08 /* Character=1 / Graphics=0 */ +/* GCtrl bitmasks, inferred from bits of Beta schematic */ +#define GCtrlWI 0x01 +#define GCtrlSWChar 0x02 /* Character set select */ +#define GCtrlHiLo 0x04 /* Hi/Lo res graphics, Hi=1, Lo=0 */ +#define GCtrlChrGfx 0x08 /* Character=1 / Graphics=0 */ #define GCtrlControl 0x10 /* Control bit, sets direct drive mode */ -#define GCtrlFS 0x20 /* labeled F/S, not yet sure of function Fast or Slow scan ? */ +#define GCtrlFS 0x20 /* labeled F/S, not yet sure of function Fast or Slow scan ? */ #define GCtrlAddrLines 0xC0 /* Top two address lines for text mode */ #define IsTextMode (m_GCtrl & GCtrlChrGfx) ? 1 : 0 // Is this text mode ? @@ -113,7 +113,7 @@ MC6845_UPDATE_ROW( dgn_beta_state::crtc_update_row ) uint8_t chr = videoram[ offset ]; uint8_t attr = videoram[ offset +1 ]; - /* Extract non-colour attributes, in character set 1, undeline is used */ + /* Extract non-colour attributes, in character set 1, underline is used */ /* We will extract the colours below, when we have decoded inverse */ /* to indicate a double height character */ int UnderLine=(attr & 0x40) >> 6; // Underline active @@ -122,7 +122,7 @@ MC6845_UPDATE_ROW( dgn_beta_state::crtc_update_row ) // underline is active for character set 0, on character row 9 int ULActive=(UnderLine && (ra==9) && ~SWChar); - /* Invert forground and background if flashing char and flash acive */ + /* Invert foreground and background if flashing char and flash active */ int Invert=(FlashChar & m_FlashBit); /* Underline inverts flash */ @@ -187,7 +187,7 @@ MC6845_UPDATE_ROW( dgn_beta_state::crtc_update_row ) int Colour; int Dot; - /* If contol is low then we are plotting 4 bit per pixel, 16 colour mode */ + /* If control is low then we are plotting 4 bit per pixel, 16 colour mode */ /* This directly drives the colour output lines, from the pixel value */ /* If Control is high, then we lookup the colour from the LS670 4x4 bit */ /* palate register */ @@ -265,7 +265,7 @@ WRITE_LINE_MEMBER(dgn_beta_state::dgnbeta_vsync_changed) /* 1 Character set select, drives A12 of character rom in text mode */ /* 2 High (1) or Low(0) resolution if in graphics mode. */ /* 3 Text (1) or Graphics(0) mode */ -/* 4 Control bit, Selects between colour palate and drirect drive */ +/* 4 Control bit, Selects between colour palette and direct drive */ /* 5 F/S bit, 1=80 bytes/line, 0=40bytes/line */ /* 6 Effective A14, to ram, in text mode */ /* 7 Effective A15, to ram, in text mode */ @@ -279,7 +279,7 @@ void dgn_beta_state::dgnbeta_vid_set_gctrl(int data) } -/* Write handler for colour, pallate ram */ +/* Write handler for colour, palette ram */ WRITE8_MEMBER(dgn_beta_state::dgnbeta_colour_ram_w) { m_ColourRAM[offset]=data&0x0f; /* Colour ram 4 bit and write only to CPU */ diff --git a/src/mame/video/djboy.cpp b/src/mame/video/djboy.cpp index 08a912a6479..39bae7bc99b 100644 --- a/src/mame/video/djboy.cpp +++ b/src/mame/video/djboy.cpp @@ -75,7 +75,7 @@ uint32_t djboy_state::screen_update_djboy(screen_device &screen, bitmap_ind16 &b return 0; } -void djboy_state::screen_eof_djboy(screen_device &screen, bool state) +WRITE_LINE_MEMBER(djboy_state::screen_vblank_djboy) { // rising edge if (state) diff --git a/src/mame/video/dkong.cpp b/src/mame/video/dkong.cpp index 91f5123ef53..60d1b6b5af8 100644 --- a/src/mame/video/dkong.cpp +++ b/src/mame/video/dkong.cpp @@ -708,8 +708,7 @@ void dkong_state::radarscp_step(int line_cnt) */ /* Now mix with SND02 (sound 2) line - on 74ls259, bit2 */ - address_space &space = machine().dummy_space(); - m_rflip_sig = m_dev_6h->bit2_r(space, 0) & m_lfsr_5I; + m_rflip_sig = m_dev_6h->bit2_r() & m_lfsr_5I; /* blue background generation */ @@ -774,7 +773,7 @@ void dkong_state::radarscp_step(int line_cnt) * * Mixed with ANS line (bit 5) from Port B of 8039 */ - if (m_grid_on && m_dev_vp2->bit5_r(space, 0)) + if (m_grid_on && m_dev_vp2->bit5_r()) { diff = (0.0 - m_cv3); diff = diff - diff*exp(0.0 - (1.0/RC32 * dt) ); diff --git a/src/mame/video/dooyong.cpp b/src/mame/video/dooyong.cpp index cd3999440d5..baae9402616 100644 --- a/src/mame/video/dooyong.cpp +++ b/src/mame/video/dooyong.cpp @@ -1,7 +1,9 @@ // license:BSD-3-Clause -// copyright-holders:Nicola Salmoria,Vas Crabb +// copyright-holders:Vas Crabb #include "emu.h" -#include "includes/dooyong.h" +#include "video/dooyong.h" + +#include "screen.h" /* These games all have ROM-based tilemaps for the backgrounds, title @@ -14,21 +16,18 @@ when the x scroll moves out of range (trying to decode the whole lot at once uses hundreds of megabytes of RAM). */ -device_type const DOOYONG_ROM_TILEMAP = device_creator; -device_type const RSHARK_ROM_TILEMAP = device_creator; -device_type const DOOYONG_RAM_TILEMAP = device_creator; +DEFINE_DEVICE_TYPE(DOOYONG_ROM_TILEMAP, dooyong_rom_tilemap_device, "dooyong_rom_tilemap", "Dooyong ROM Tilemap") +DEFINE_DEVICE_TYPE(RSHARK_ROM_TILEMAP, rshark_rom_tilemap_device, "rshark_rom_tilemap", "R-Shark ROM Tilemap") +DEFINE_DEVICE_TYPE(DOOYONG_RAM_TILEMAP, dooyong_ram_tilemap_device, "dooyong_ram_tilemap", "Dooyong RAM Tilemap") dooyong_tilemap_device_base::dooyong_tilemap_device_base( - machine_config const &mconfig, - device_type type, - char const *name, - char const *tag, - device_t *owner, - uint32_t clock, - char const *shortname, - char const *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) + machine_config const &mconfig, + device_type type, + char const *tag, + device_t *owner, + uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , m_gfxdecode(*this, finder_base::DUMMY_TAG) , m_gfxnum(0) , m_tilemap(nullptr) @@ -62,20 +61,17 @@ void dooyong_tilemap_device_base::set_palette_bank(uint16_t bank) dooyong_rom_tilemap_device::dooyong_rom_tilemap_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) - : dooyong_rom_tilemap_device(mconfig, DOOYONG_ROM_TILEMAP, "Dooyong ROM Tilemap", tag, owner, clock, "dooyong_rom_tilemap", __FILE__) + : dooyong_rom_tilemap_device(mconfig, DOOYONG_ROM_TILEMAP, tag, owner, clock) { } dooyong_rom_tilemap_device::dooyong_rom_tilemap_device( - machine_config const &mconfig, - device_type type, - char const *name, - char const *tag, - device_t *owner, - uint32_t clock, - char const *shortname, - char const *source) - : dooyong_tilemap_device_base(mconfig, type, name, tag, owner, clock, shortname, source) + machine_config const &mconfig, + device_type type, + char const *tag, + device_t *owner, + uint32_t clock) + : dooyong_tilemap_device_base(mconfig, type, tag, owner, clock) , m_rows(8) , m_tilerom(*this, finder_base::DUMMY_TAG) , m_tilerom_offset(0) @@ -208,7 +204,7 @@ TILE_GET_INFO_MEMBER(dooyong_rom_tilemap_device::tile_info) rshark_rom_tilemap_device::rshark_rom_tilemap_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) - : dooyong_rom_tilemap_device(mconfig, RSHARK_ROM_TILEMAP, "R-Shark ROM Tilemap", tag, owner, clock, "rshark_rom_tilemap", __FILE__) + : dooyong_rom_tilemap_device(mconfig, RSHARK_ROM_TILEMAP, tag, owner, clock) , m_colorrom(*this, finder_base::DUMMY_TAG) , m_colorrom_offset(0) { @@ -243,7 +239,7 @@ TILE_GET_INFO_MEMBER(rshark_rom_tilemap_device::tile_info) dooyong_ram_tilemap_device::dooyong_ram_tilemap_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) - : dooyong_tilemap_device_base(mconfig, DOOYONG_RAM_TILEMAP, "Dooyong RAM Tilemap", tag, owner, clock, "dooyong_ram_tilemap", __FILE__) + : dooyong_tilemap_device_base(mconfig, DOOYONG_RAM_TILEMAP, tag, owner, clock) , m_tileram() { } @@ -293,507 +289,3 @@ TILE_GET_INFO_MEMBER(dooyong_ram_tilemap_device::tile_info) unsigned const attr(m_tileram[tile_index]); tileinfo.set(m_gfxnum, attr & 0x0fffU, m_palette_bank | ((attr >> 12) & 0x0fU), 0); } - - -READ8_MEMBER(dooyong_z80_state::lastday_tx_r) -{ - bool const lane(BIT(offset, 11)); - return m_tx->tileram_r(space, offset & 0x07ffU) >> (lane ? 8 : 0); -} - -WRITE8_MEMBER(dooyong_z80_state::lastday_tx_w) -{ - bool const lane(BIT(offset, 11)); - m_tx->tileram_w(space, offset & 0x07ffU, uint16_t(data) << (lane ? 8 : 0), lane ? 0xff00U : 0x00ffU); -} - -READ8_MEMBER(dooyong_z80_state::bluehawk_tx_r) -{ - bool const lane(BIT(offset, 0)); - return m_tx->tileram_r(space, offset >> 1) >> (lane ? 8 : 0); -} - -WRITE8_MEMBER(dooyong_z80_state::bluehawk_tx_w) -{ - bool const lane(BIT(offset, 0)); - m_tx->tileram_w(space, offset >> 1, uint16_t(data) << (lane ? 8 : 0), lane ? 0xff00U : 0x00ffU); -} - - -/* Control registers seem to be different on every game */ - -WRITE8_MEMBER(dooyong_z80_ym2203_state::lastday_ctrl_w) -{ - /* bits 0 and 1 are coin counters */ - machine().bookkeeping().coin_counter_w(0, data & 0x01); - machine().bookkeeping().coin_counter_w(1, data & 0x02); - - /* bit 3 is used but unknown */ - - /* bit 4 disables sprites */ - m_sprites_disabled = data & 0x10; - - /* bit 6 is flip screen */ - flip_screen_set(data & 0x40); -} - -WRITE8_MEMBER(dooyong_z80_ym2203_state::pollux_ctrl_w) -{ -// printf("pollux_ctrl_w %02x\n", data); - - /* bit 0 is flip screen */ - flip_screen_set(data & 0x01); - - /* bits 6 and 7 are coin counters */ - machine().bookkeeping().coin_counter_w(0, data & 0x80); - machine().bookkeeping().coin_counter_w(1, data & 0x40); - - /* bit 1 is used but unknown - palette banking (both write and display based on pollux bombs) */ - uint8_t const last_palbank = m_palette_bank; - if (m_paletteram_flytiger) m_palette_bank = BIT(data, 1); - if (last_palbank != m_palette_bank) - { - m_bg->set_palette_bank(m_palette_bank << 6); - m_fg->set_palette_bank(m_palette_bank << 6); - m_tx->set_palette_bank(m_palette_bank << 6); - } - - /* bit 2 is continuously toggled (unknown) */ - - /* bit 4 is used but unknown - display disable? */ -} - - - -WRITE8_MEMBER(dooyong_z80_state::primella_ctrl_w) -{ - /* bits 0-2 select ROM bank */ - membank("bank1")->set_entry(data & 0x07); - - /* bit 3 disables tx layer */ - m_tx_pri = data & 0x08; - - /* bit 4 flips screen */ - flip_screen_set(data & 0x10); - - /* bit 5 used but unknown */ - -// logerror("%04x: bankswitch = %02x\n",space.device().safe_pc(),data&0xe0); -} - -READ8_MEMBER(dooyong_z80_state::paletteram_flytiger_r) -{ - if (m_palette_bank) offset |= 0x800; - - return m_paletteram_flytiger[offset]; -} - - -WRITE8_MEMBER(dooyong_z80_state::paletteram_flytiger_w) -{ - if (m_palette_bank) offset |= 0x800; - - m_paletteram_flytiger[offset] = data; - uint16_t const value = m_paletteram_flytiger[offset & ~1] | (m_paletteram_flytiger[offset | 1] << 8); - m_palette->set_pen_color(offset/2, pal5bit(value >> 10), pal5bit(value >> 5), pal5bit(value >> 0)); - -} - -WRITE8_MEMBER(dooyong_z80_state::flytiger_ctrl_w) -{ - /* bit 0 is flip screen */ - flip_screen_set(data & 0x01); - - /* bits 1, 2 used but unknown */ - - /* bit 3 palette banking */ - uint8_t const last_palbank = m_palette_bank; - m_palette_bank = BIT(data, 3); - if (last_palbank != m_palette_bank) - { - m_bg->set_palette_bank(m_palette_bank << 6); - m_fg->set_palette_bank(m_palette_bank << 6); - m_tx->set_palette_bank(m_palette_bank << 6); - } - - /* bit 4 changes tilemaps priority */ - m_flytiger_pri = data & 0x10; -} - - -void dooyong_z80_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, unsigned extensions) -{ - /* Sprites take 32 bytes each in memory: - MSB LSB - [offs + 0x00] cccc cccc (bits 7-0 of gfx code) - [offs + 0x01] cccx CCCC (bits 10-8 of gfx code, bit 8 of x position, bits 3-0 of color code) - [offs + 0x02] yyyy yyyy - [offs + 0x03] xxxx xxxx (bits 7-0 of x offset) - ... - [offs + 0x1c] ?hhh XY*c (bits 2-0 of height, x flip, y flip, * see note, bit 11 of gfx code) - ... - ? = unused/unknown - E = enable - c = gfx code - x = x position - y = y position - C = color code - w = width - X = x flip - Y = y flip - * = alters y position in bluehawk and flytiger - see code below - bit 11 of gfx code only used by gulfstrm, pollux, bluehawk and flytiger - height only used by pollux, bluehawk and flytiger - x flip and y flip only used by pollux and flytiger */ - - uint8_t const *const buffered_spriteram = m_spriteram->buffer(); - for (int offs = 0; offs < m_spriteram->bytes(); offs += 32) - { - int sx = buffered_spriteram[offs+3] | ((buffered_spriteram[offs+1] & 0x10) << 4); - int sy = buffered_spriteram[offs+2]; - int code = buffered_spriteram[offs] | ((buffered_spriteram[offs+1] & 0xe0) << 3); - int color = buffered_spriteram[offs+1] & 0x0f; - - //TODO: This priority mechanism works for known games, but seems a bit strange. - //Are we missing something? (The obvious spare palette bit isn't it.) - int const pri = (((color == 0x00) || (color == 0x0f)) ? 0xfc : 0xf0); - - bool flipx = false, flipy = false; - int height = 0; - if (extensions) - { - uint8_t const ext = buffered_spriteram[offs+0x1c]; - - if (extensions & SPRITE_12BIT) - code |= ((ext & 0x01) << 11); - - if (extensions & SPRITE_HEIGHT) - { - height = (ext & 0x70) >> 4; - code &= ~height; - - flipx = ext & 0x08; - flipy = ext & 0x04; - } - - if (extensions & SPRITE_YSHIFT_BLUEHAWK) - sy += 6 - ((~ext & 0x02) << 7); - - if (extensions & SPRITE_YSHIFT_FLYTIGER) - sy -=(ext & 0x02) << 7; - } - - if (flip_screen()) - { - sx = 498 - sx; - sy = 240 - (16 * height) - sy; - flipx = !flipx; - flipy = !flipy; - } - - color |= m_palette_bank << 6; - - for (int y = 0; y <= height; y++) - { - m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect, - code + y, - color, - flipx, flipy, - sx, sy + (16 * (flipy ? (height - y) : y)), - screen.priority(), - pri, 15); - } - } -} - - -uint32_t dooyong_z80_ym2203_state::screen_update_lastday(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - bitmap.fill(m_palette->black_pen(), cliprect); - screen.priority().fill(0, cliprect); - - /* Text layer is offset on this machine */ - m_tx->set_scrolly(flip_screen() ? -8 : 8); - - m_bg->draw(screen, bitmap, cliprect, 0, 1); - m_fg->draw(screen, bitmap, cliprect, 0, 2); - m_tx->draw(screen, bitmap, cliprect, 0, 4); - - if (!m_sprites_disabled) - draw_sprites(screen, bitmap, cliprect); - - return 0; -} - -uint32_t dooyong_z80_ym2203_state::screen_update_gulfstrm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - bitmap.fill(m_palette->black_pen(), cliprect); - screen.priority().fill(0, cliprect); - - /* Text layer is offset on this machine */ - m_tx->set_scrolly(flip_screen() ? -8 : 8); - - m_bg->draw(screen, bitmap, cliprect, 0, 1); - m_fg->draw(screen, bitmap, cliprect, 0, 2); - m_tx->draw(screen, bitmap, cliprect, 0, 4); - - draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT); - - return 0; -} - -uint32_t dooyong_z80_ym2203_state::screen_update_pollux(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - bitmap.fill(m_palette->black_pen(), cliprect); - screen.priority().fill(0, cliprect); - - m_bg->draw(screen, bitmap, cliprect, 0, 1); - m_fg->draw(screen, bitmap, cliprect, 0, 2); - m_tx->draw(screen, bitmap, cliprect, 0, 4); - - draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT | SPRITE_HEIGHT); - - return 0; -} - -uint32_t dooyong_z80_state::screen_update_flytiger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - bitmap.fill(m_palette->black_pen(), cliprect); - screen.priority().fill(0, cliprect); - - if (m_flytiger_pri) - { - m_fg->draw(screen, bitmap, cliprect, 0, 1); - m_bg->draw(screen, bitmap, cliprect, 0, 2); - } - else - { - m_bg->draw(screen, bitmap, cliprect, 0, 1); - m_fg->draw(screen, bitmap, cliprect, 0, 2); - } - m_tx->draw(screen, bitmap, cliprect, 0, 4); - - draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT | SPRITE_HEIGHT | SPRITE_YSHIFT_FLYTIGER); - - return 0; -} - - -uint32_t dooyong_z80_state::screen_update_bluehawk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - bitmap.fill(m_palette->black_pen(), cliprect); - screen.priority().fill(0, cliprect); - - m_bg->draw(screen, bitmap, cliprect, 0, 1); - m_fg->draw(screen, bitmap, cliprect, 0, 2); - m_fg2->draw(screen, bitmap, cliprect, 0, 4); - m_tx->draw(screen, bitmap, cliprect, 0, 4); - - draw_sprites(screen, bitmap, cliprect, SPRITE_12BIT | SPRITE_HEIGHT | SPRITE_YSHIFT_BLUEHAWK); - - return 0; -} - -uint32_t dooyong_z80_state::screen_update_primella(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - bitmap.fill(m_palette->black_pen(), cliprect); - - m_bg->draw(screen, bitmap, cliprect, 0, 0); - if (m_tx_pri) m_tx->draw(screen, bitmap, cliprect, 0, 0); - m_fg->draw(screen, bitmap, cliprect, 0, 0); - if (!m_tx_pri) m_tx->draw(screen, bitmap, cliprect, 0, 0); - - return 0; -} - - - -VIDEO_START_MEMBER(dooyong_z80_ym2203_state, lastday) -{ - /* Register for save/restore */ - save_item(NAME(m_sprites_disabled)); - save_item(NAME(m_interrupt_line_1)); - save_item(NAME(m_interrupt_line_2)); -} - -VIDEO_START_MEMBER(dooyong_z80_ym2203_state, gulfstrm) -{ - m_palette_bank = 0; - - /* Register for save/restore */ - save_item(NAME(m_palette_bank)); - save_item(NAME(m_interrupt_line_1)); - save_item(NAME(m_interrupt_line_2)); -} - -VIDEO_START_MEMBER(dooyong_z80_ym2203_state, pollux) -{ - m_paletteram_flytiger = make_unique_clear(0x1000); - save_pointer(NAME(m_paletteram_flytiger.get()), 0x1000); - - m_palette_bank = 0; - - /* Register for save/restore */ - save_item(NAME(m_palette_bank)); - save_item(NAME(m_interrupt_line_1)); - save_item(NAME(m_interrupt_line_2)); -} - -VIDEO_START_MEMBER(dooyong_z80_state, bluehawk) -{ -} - -VIDEO_START_MEMBER(dooyong_z80_state, flytiger) -{ - m_paletteram_flytiger = make_unique_clear(0x1000); - save_pointer(NAME(m_paletteram_flytiger.get()), 0x1000); - - m_palette_bank = 0; - - /* Register for save/restore */ - save_item(NAME(m_palette_bank)); - save_item(NAME(m_flytiger_pri)); -} - -VIDEO_START_MEMBER(dooyong_z80_state, primella) -{ - /* Register for save/restore */ - save_item(NAME(m_tx_pri)); -} - - -WRITE16_MEMBER(dooyong_68k_state::ctrl_w) -{ - if (ACCESSING_BITS_0_7) - { - /* bit 0 flips screen */ - flip_screen_set(data & 0x0001); - - /* bit 4 changes tilemaps priority */ - m_bg2_priority = data & 0x0010; - - /* bit 5 used but unknown */ - } -} - - -void dooyong_68k_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - /* Sprites take 8 16-bit words each in memory: - MSB LSB - [offs + 0] ???? ???? ???? ???E - [offs + 1] ???? ???? hhhh wwww - [offs + 2] ???? ???? ???? ???? - [offs + 3] cccc cccc cccc cccc - [offs + 4] ???? ???x xxxx xxxx - [offs + 5] ???? ???? ???? ???? - [offs + 6] ???? ???y yyyy yyyy - [offs + 7] ???? ???? ???? CCCC - ? = unused/unknown - E = enable - c = gfx code - x = x offset - y = y offset (signed) - C = color code - w = width - h = height */ - - uint16_t const *const buffered_spriteram = m_spriteram->buffer(); - for (int offs = (m_spriteram->bytes() / 2) - 8; offs >= 0; offs -= 8) - { - if (buffered_spriteram[offs] & 0x0001) /* enable */ - { - int code = buffered_spriteram[offs+3]; - int const color = buffered_spriteram[offs+7] & 0x000f; - //TODO: This priority mechanism works for known games, but seems a bit strange. - //Are we missing something? (The obvious spare palette bit isn't it.) - int const pri = (((color == 0x00) || (color == 0x0f)) ? 0xfc : 0xf0); - int const width = buffered_spriteram[offs+1] & 0x000f; - int const height = (buffered_spriteram[offs+1] & 0x00f0) >> 4; - - bool const flip = flip_screen(); - int sx = buffered_spriteram[offs+4] & 0x01ff; - int sy = (int16_t)buffered_spriteram[offs+6] & 0x01ff; - if (sy & 0x0100) sy |= ~(int)0x01ff; // Correctly sign-extend 9-bit number - if (flip) - { - sx = 498 - (16 * width) - sx; - sy = 240 - (16 * height) - sy; - } - - for (int y = 0; y <= height; y++) - { - int const _y = sy + (16 * (flip ? (height - y) : y)); - for (int x = 0; x <= width; x++) - { - int const _x = sx + (16 * (flip ? (width - x) : x)); - m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, - code, - color, - flip, flip, - _x, _y, - screen.priority(), - pri, 15); - code++; - } - } - } - } -} - - -uint32_t rshark_state::screen_update_rshark(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - bitmap.fill(m_palette->black_pen(), cliprect); - screen.priority().fill(0, cliprect); - - m_bg->draw(screen, bitmap, cliprect, 0, 1); - m_bg2->draw(screen, bitmap, cliprect, 0, (m_bg2_priority ? 2 : 1)); - m_fg->draw(screen, bitmap, cliprect, 0, 2); - m_fg2->draw(screen, bitmap, cliprect, 0, 2); - - draw_sprites(screen, bitmap, cliprect); - - return 0; -} - -VIDEO_START_MEMBER(rshark_state, rshark) -{ - /* Register for save/restore */ - save_item(NAME(m_bg2_priority)); -} - - -uint32_t popbingo_state::screen_update_popbingo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - bitmap.fill(m_palette->black_pen(), cliprect); - screen.priority().fill(0, cliprect); - - m_bg_bitmap.fill(m_palette->black_pen(), cliprect); - m_bg->draw(screen, m_bg_bitmap, cliprect, 0, 1); - - m_bg2_bitmap.fill(m_palette->black_pen(), cliprect); - m_bg2->draw(screen, m_bg2_bitmap, cliprect, 0, 1); - - for (int y = cliprect.min_y; cliprect.max_y >= y; y++) - { - uint16_t const *const bg_src(&m_bg_bitmap.pix16(y, 0)); - uint16_t const *const bg2_src(&m_bg2_bitmap.pix16(y, 0)); - uint16_t *const dst(&bitmap.pix16(y, 0)); - for (int x = cliprect.min_x; cliprect.max_x >= x; x++) - dst[x] = 0x100U | (bg_src[x] << 4) | bg2_src[x]; - } - - draw_sprites(screen, bitmap, cliprect); - - return 0; -} - -VIDEO_START_MEMBER(popbingo_state, popbingo) -{ - m_screen->register_screen_bitmap(m_bg_bitmap); - m_screen->register_screen_bitmap(m_bg2_bitmap); - - /* Register for save/restore */ - save_item(NAME(m_bg2_priority)); // Not used atm -} diff --git a/src/mame/video/dooyong.h b/src/mame/video/dooyong.h new file mode 100644 index 00000000000..03f9bbde16c --- /dev/null +++ b/src/mame/video/dooyong.h @@ -0,0 +1,145 @@ +// license:BSD-3-Clause +// copyright-holders:Vas Crabb +#ifndef MAME_VIDEO_DOOYONG_H +#define MAME_VIDEO_DOOYONG_H + +#pragma once + +#include "video/bufsprite.h" + +#define MCFG_DOOYONG_ROM_TILEMAP_ADD(tag, gfx, num, rom, offset) \ + MCFG_DEVICE_ADD(tag, DOOYONG_ROM_TILEMAP, 0) \ + dooyong_rom_tilemap_device::static_set_gfxdecode_tag(*device, "^" gfx); \ + dooyong_rom_tilemap_device::static_set_tilerom_tag(*device, "^" rom); \ + dooyong_rom_tilemap_device::static_set_gfxnum(*device, (num)); \ + dooyong_rom_tilemap_device::static_set_tilerom_offset(*device, (offset)); +#define MCFG_DOOYONG_ROM_TILEMAP_TRANSPARENT_PEN(pen) \ + dooyong_rom_tilemap_device::static_set_transparent_pen(*device, (pen)); +#define MCFG_DOOYONG_ROM_TILEMAP_PRIMELLA_CODE_BITS(bits) \ + dooyong_rom_tilemap_device::static_set_primella_code_bits(*device, (bits)); + +#define MCFG_RSHARK_ROM_TILEMAP_ADD(tag, gfx, num, rom, offset, rom2, offset2) \ + MCFG_DEVICE_ADD(tag, RSHARK_ROM_TILEMAP, 0) \ + dooyong_rom_tilemap_device::static_set_gfxdecode_tag(*device, "^" gfx); \ + dooyong_rom_tilemap_device::static_set_tilerom_tag(*device, "^" rom); \ + dooyong_rom_tilemap_device::static_set_gfxnum(*device, (num)); \ + dooyong_rom_tilemap_device::static_set_tilerom_offset(*device, (offset)); \ + dooyong_rom_tilemap_device::static_set_primella_code_bits(*device, 13); \ + rshark_rom_tilemap_device::static_set_colorrom_tag(*device, "^" rom2); \ + rshark_rom_tilemap_device::static_set_colorrom_offset(*device, (offset2)); + +#define MCFG_DOOYONG_RAM_TILEMAP_ADD(tag, gfx, num) \ + MCFG_DEVICE_ADD(tag, DOOYONG_RAM_TILEMAP, 0) \ + dooyong_rom_tilemap_device::static_set_gfxdecode_tag(*device, "^" gfx); \ + dooyong_rom_tilemap_device::static_set_gfxnum(*device, (num)); + + +DECLARE_DEVICE_TYPE(DOOYONG_ROM_TILEMAP, dooyong_rom_tilemap_device) +DECLARE_DEVICE_TYPE(RSHARK_ROM_TILEMAP, rshark_rom_tilemap_device) +DECLARE_DEVICE_TYPE(DOOYONG_RAM_TILEMAP, dooyong_ram_tilemap_device) + + +class dooyong_tilemap_device_base : public device_t +{ +public: + static void static_set_gfxdecode_tag(device_t &device, char const *tag); + static void static_set_gfxnum(device_t &device, int gfxnum); + + void draw(screen_device &screen, bitmap_ind16 &dest, rectangle const &cliprect, uint32_t flags, uint8_t priority); + + void set_palette_bank(uint16_t bank); + +protected: + dooyong_tilemap_device_base( + machine_config const &mconfig, + device_type type, + char const *tag, + device_t *owner, + uint32_t clock); + + gfx_element const &gfx() const { return *m_gfxdecode->gfx(m_gfxnum); } + + required_device m_gfxdecode; + int m_gfxnum; + + tilemap_t *m_tilemap; + uint16_t m_palette_bank; +}; + +class dooyong_rom_tilemap_device : public dooyong_tilemap_device_base +{ +public: + dooyong_rom_tilemap_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); + + static void static_set_tilerom_tag(device_t &device, char const *tag); + static void static_set_tilerom_offset(device_t &device, int offset); + static void static_set_transparent_pen(device_t &device, unsigned pen); + static void static_set_primella_code_bits(device_t &device, unsigned bits); + + DECLARE_WRITE8_MEMBER(ctrl_w); + +protected: + dooyong_rom_tilemap_device( + machine_config const &mconfig, + device_type type, + char const *tag, + device_t *owner, + uint32_t clock); + + virtual void device_start() override; + + virtual TILE_GET_INFO_MEMBER(tile_info); + + tilemap_memory_index adjust_tile_index(tilemap_memory_index tile_index) const + { return tile_index + ((unsigned(m_registers[1]) * 256U / gfx().width()) * m_rows); } + + int m_rows; + +private: + required_region_ptr m_tilerom; + int m_tilerom_offset; + unsigned m_transparent_pen; + unsigned m_primella_code_mask; + unsigned m_primella_color_mask; + unsigned m_primella_color_shift; + + uint8_t m_registers[0x10]; +}; + +class rshark_rom_tilemap_device : public dooyong_rom_tilemap_device +{ +public: + rshark_rom_tilemap_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); + + static void static_set_colorrom_tag(device_t &device, char const *tag); + static void static_set_colorrom_offset(device_t &device, int offset); + +protected: + virtual void device_start() override; + + virtual TILE_GET_INFO_MEMBER(tile_info) override; + +private: + required_region_ptr m_colorrom; + int m_colorrom_offset; +}; + +class dooyong_ram_tilemap_device : public dooyong_tilemap_device_base +{ +public: + dooyong_ram_tilemap_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); + + DECLARE_READ16_MEMBER(tileram_r) { return m_tileram[offset & ((64U * 32U) - 1)]; } + DECLARE_WRITE16_MEMBER(tileram_w); + void set_scrolly(int value) { m_tilemap->set_scrolly(value); } + +protected: + virtual void device_start() override; + +private: + TILE_GET_INFO_MEMBER(tile_info); + + std::unique_ptr m_tileram; +}; + +#endif // MAME_VIDEO_DOOYONG_H diff --git a/src/mame/video/epos.cpp b/src/mame/video/epos.cpp index ccae4353885..60876258a72 100644 --- a/src/mame/video/epos.cpp +++ b/src/mame/video/epos.cpp @@ -24,39 +24,41 @@ ***************************************************************************/ -void epos_state::get_pens( pen_t *pens ) +PALETTE_INIT_MEMBER(epos_state,epos) { offs_t i; - const uint8_t *prom = memregion("proms")->base(); + const uint8_t *color_prom = memregion("proms")->base(); int len = memregion("proms")->bytes(); for (i = 0; i < len; i++) - { - int bit0, bit1, bit2, r, g, b; + set_pal_color(i, color_prom[i]); +} - uint8_t data = prom[i]; +void epos_state::set_pal_color( uint8_t offset, uint8_t data ) +{ + int bit0, bit1, bit2, r, g, b; - bit0 = (data >> 7) & 0x01; - bit1 = (data >> 6) & 0x01; - bit2 = (data >> 5) & 0x01; - r = 0x92 * bit0 + 0x4a * bit1 + 0x23 * bit2; + bit0 = (data >> 7) & 0x01; + bit1 = (data >> 6) & 0x01; + bit2 = (data >> 5) & 0x01; + r = 0x92 * bit0 + 0x4a * bit1 + 0x23 * bit2; - bit0 = (data >> 4) & 0x01; - bit1 = (data >> 3) & 0x01; - bit2 = (data >> 2) & 0x01; - g = 0x92 * bit0 + 0x4a * bit1 + 0x23 * bit2; + bit0 = (data >> 4) & 0x01; + bit1 = (data >> 3) & 0x01; + bit2 = (data >> 2) & 0x01; + g = 0x92 * bit0 + 0x4a * bit1 + 0x23 * bit2; - bit0 = (data >> 1) & 0x01; - bit1 = (data >> 0) & 0x01; - b = 0xad * bit0 + 0x52 * bit1; + bit0 = (data >> 1) & 0x01; + bit1 = (data >> 0) & 0x01; + b = 0xad * bit0 + 0x52 * bit1; - pens[i] = rgb_t(r, g, b); - } + m_palette->set_pen_color(offset, rgb_t(r,g,b)); } -WRITE8_MEMBER(epos_state::flip_screen_w) +// later (tristar 9000) games uses a dynamic palette instead of prom +WRITE8_MEMBER(epos_state::dealer_pal_w) { - flip_screen_set(BIT(data, 7)); + set_pal_color(offset,data); } WRITE8_MEMBER(epos_state::port_1_w) @@ -73,17 +75,14 @@ WRITE8_MEMBER(epos_state::port_1_w) machine().bookkeeping().coin_counter_w(0, (data >> 2) & 0x01); - m_palette = (data >> 3) & 0x01; + m_palette_bank = (data >> 3) & 0x01; } uint32_t epos_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - pen_t pens[0x20]; offs_t offs; - get_pens(pens); - for (offs = 0; offs < m_videoram.bytes(); offs++) { uint8_t data = m_videoram[offs]; @@ -93,12 +92,14 @@ uint32_t epos_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, if (flip_screen()) { - x = 270 - x; // wrong - y = 240 - y; // wrong + bitmap.pix32(240 - y, 270 - x + 1) = m_palette->pen((m_palette_bank << 4) | (data & 0x0f)); + bitmap.pix32(240 - y, 270 - x + 0) = m_palette->pen((m_palette_bank << 4) | (data >> 4)); + } + else + { + bitmap.pix32(y, x + 0) = m_palette->pen((m_palette_bank << 4) | (data & 0x0f)); + bitmap.pix32(y, x + 1) = m_palette->pen((m_palette_bank << 4) | (data >> 4)); } - - bitmap.pix32(y, x + 0) = pens[(m_palette << 4) | (data & 0x0f)]; - bitmap.pix32(y, x + 1) = pens[(m_palette << 4) | (data >> 4)]; } return 0; diff --git a/src/mame/video/eprom.cpp b/src/mame/video/eprom.cpp index 89600f339d2..6fbb6e34657 100644 --- a/src/mame/video/eprom.cpp +++ b/src/mame/video/eprom.cpp @@ -53,7 +53,7 @@ void eprom_state::update_palette() TILE_GET_INFO_MEMBER(eprom_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0x3ff; int color = ((data >> 10) & 0x0f) | ((data >> 9) & 0x20); int opaque = data & 0x8000; @@ -63,8 +63,8 @@ TILE_GET_INFO_MEMBER(eprom_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(eprom_state::get_playfield_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) >> 8; + uint16_t data1 = m_playfield_tilemap->basemem_read(tile_index); + uint16_t data2 = m_playfield_tilemap->extmem_read(tile_index) >> 8; int code = data1 & 0x7fff; int color = 0x10 + (data2 & 0x0f); SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); @@ -73,8 +73,8 @@ TILE_GET_INFO_MEMBER(eprom_state::get_playfield_tile_info) TILE_GET_INFO_MEMBER(eprom_state::guts_get_playfield_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) >> 8; + uint16_t data1 = m_playfield_tilemap->basemem_read(tile_index); + uint16_t data2 = m_playfield_tilemap->extmem_read(tile_index) >> 8; int code = data1 & 0x7fff; int color = 0x10 + (data2 & 0x0f); SET_TILE_INFO_MEMBER(2, code, color, (data1 >> 15) & 1); diff --git a/src/mame/video/excellent_spr.cpp b/src/mame/video/excellent_spr.cpp index 2b77f721cbd..7b5168563d0 100644 --- a/src/mame/video/excellent_spr.cpp +++ b/src/mame/video/excellent_spr.cpp @@ -20,11 +20,11 @@ #include "screen.h" -const device_type EXCELLENT_SPRITE = device_creator; +DEFINE_DEVICE_TYPE(EXCELLENT_SPRITE, excellent_spr_device, "excellent_spr", "Excellent 8-bit Sprite") excellent_spr_device::excellent_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, EXCELLENT_SPRITE, "Excellent 8-bit Sprite", tag, owner, clock, "excellent_spr", __FILE__), - device_video_interface(mconfig, *this) + : device_t(mconfig, EXCELLENT_SPRITE, tag, owner, clock) + , device_video_interface(mconfig, *this) { } diff --git a/src/mame/video/excellent_spr.h b/src/mame/video/excellent_spr.h index bad423784b5..36c3d002a29 100644 --- a/src/mame/video/excellent_spr.h +++ b/src/mame/video/excellent_spr.h @@ -1,8 +1,12 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_EXCELLENT_SPR_H +#define MAME_VIDEO_EXCELLENT_SPR_H -class excellent_spr_device : public device_t, - public device_video_interface +#pragma once + + +class excellent_spr_device : public device_t, public device_video_interface { public: excellent_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -21,4 +25,6 @@ protected: private: }; -extern const device_type EXCELLENT_SPRITE; +DECLARE_DEVICE_TYPE(EXCELLENT_SPRITE, excellent_spr_device) + +#endif // MAME_VIDEO_EXCELLENT_SPR_H diff --git a/src/mame/video/exidy440.cpp b/src/mame/video/exidy440.cpp index 0a5e8580699..5420a665b26 100644 --- a/src/mame/video/exidy440.cpp +++ b/src/mame/video/exidy440.cpp @@ -50,6 +50,9 @@ VIDEO_START_MEMBER(exidy440_state,exidy440) /* allocate a buffer for palette RAM */ m_local_paletteram = std::make_unique(512 * 2); memset(m_local_paletteram.get(), 0, 512 * 2); + + m_collide_firq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(exidy440_state::collide_firq_callback), this)); + m_beam_firq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(exidy440_state::beam_firq_callback), this)); } @@ -349,7 +352,7 @@ void exidy440_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c /* check the collisions bit */ if (check_collision && (palette[2 * pen] & 0x80) && (count++ < 128)) - screen.machine().scheduler().timer_set(screen.time_until_pos(yoffs, currx), timer_expired_delegate(FUNC(exidy440_state::collide_firq_callback), this), currx); + m_collide_firq_timer->adjust(screen.time_until_pos(yoffs, currx), currx); } currx++; @@ -362,7 +365,7 @@ void exidy440_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c /* check the collisions bit */ if (check_collision && (palette[2 * pen] & 0x80) && (count++ < 128)) - screen.machine().scheduler().timer_set(screen.time_until_pos(yoffs, currx), timer_expired_delegate(FUNC(exidy440_state::collide_firq_callback), this), currx); + m_collide_firq_timer->adjust(screen.time_until_pos(yoffs, currx), currx); } currx++; } @@ -430,7 +433,7 @@ uint32_t exidy440_state::screen_update_exidy440(screen_device &screen, bitmap_in attotime time = screen.time_until_pos(beamy, beamx) - increment * 6; for (i = 0; i <= 12; i++) { - machine().scheduler().timer_set(time, timer_expired_delegate(FUNC(exidy440_state::beam_firq_callback),this), beamx); + m_beam_firq_timer->adjust(time, beamx); time += increment; } } diff --git a/src/mame/video/exterm.cpp b/src/mame/video/exterm.cpp index aa5be9cd190..5327fcbd1db 100644 --- a/src/mame/video/exterm.cpp +++ b/src/mame/video/exterm.cpp @@ -69,7 +69,7 @@ TMS340X0_SCANLINE_IND16_CB_MEMBER(exterm_state::scanline_update) uint16_t *bgsrc = &m_master_videoram[(params->rowaddr << 8) & 0xff00]; uint16_t *fgsrc = nullptr; uint16_t *dest = &bitmap.pix16(scanline); - tms34010_display_params fgparams; + tms340x0_device::display_params fgparams; int coladdr = params->coladdr; int fgcoladdr = 0; int x; diff --git a/src/mame/video/foodf.cpp b/src/mame/video/foodf.cpp index 6756d142642..2fed0782160 100644 --- a/src/mame/video/foodf.cpp +++ b/src/mame/video/foodf.cpp @@ -19,7 +19,7 @@ TILE_GET_INFO_MEMBER(foodf_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = (data & 0xff) | ((data >> 7) & 0x100); int color = (data >> 8) & 0x3f; SET_TILE_INFO_MEMBER(0, code, color, m_playfield_flip ? (TILE_FLIPX | TILE_FLIPY) : 0); diff --git a/src/mame/video/fromance.cpp b/src/mame/video/fromance.cpp index a42eb221506..06ffec1c4e2 100644 --- a/src/mame/video/fromance.cpp +++ b/src/mame/video/fromance.cpp @@ -82,8 +82,6 @@ void fromance_state::init_common( ) save_item(NAME(m_flipscreen_old)); save_item(NAME(m_scrollx_ofs)); save_item(NAME(m_scrolly_ofs)); - save_item(NAME(m_crtc_register)); - save_item(NAME(m_crtc_data)); save_pointer(NAME(m_local_paletteram.get()), 0x800 * 2); } @@ -263,7 +261,7 @@ TIMER_CALLBACK_MEMBER(fromance_state::crtc_interrupt_gen) // TODO: guesswork, looks fully programmable void fromance_state::crtc_refresh() { - if(m_crtc_data[0] == 0) // sanity check + if (m_gga->reg(0) == 0) // sanity check return; rectangle visarea; @@ -271,7 +269,7 @@ void fromance_state::crtc_refresh() visarea.min_x = 0; visarea.min_y = 0; - visarea.max_x = ((m_crtc_data[0]+1)*4) - 1; + visarea.max_x = ((m_gga->reg(0)+1)*4) - 1; visarea.max_y = 240 - 1; refresh = HZ_TO_ATTOSECONDS(60); @@ -279,11 +277,9 @@ void fromance_state::crtc_refresh() m_screen->configure(512, 256, visarea, refresh); } -WRITE8_MEMBER(fromance_state::fromance_crtc_data_w) +WRITE8_MEMBER(fromance_state::fromance_gga_data_w) { - m_crtc_data[m_crtc_register] = data; - - switch (m_crtc_register) + switch (offset) { case 0x00: crtc_refresh(); @@ -295,18 +291,12 @@ WRITE8_MEMBER(fromance_state::fromance_crtc_data_w) break; default: - logerror("CRTC register %02X = %02X\n", m_crtc_register, data & 0xff); + logerror("CRTC register %02X = %02X\n", offset, data); break; } } -WRITE8_MEMBER(fromance_state::fromance_crtc_register_w) -{ - m_crtc_register = data & 0x0f; -} - - /************************************* * * Main screen refresh diff --git a/src/mame/video/fuukifg.cpp b/src/mame/video/fuukifg.cpp index 1e43d668911..5fb1012ce60 100644 --- a/src/mame/video/fuukifg.cpp +++ b/src/mame/video/fuukifg.cpp @@ -7,10 +7,10 @@ #include "fuukifg.h" #include "screen.h" -const device_type FUUKI_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(FUUKI_VIDEO, fuukivid_device, "fuukivid", "Fuuki Video") fuukivid_device::fuukivid_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, FUUKI_VIDEO, "Fuuki Video", tag, owner, clock, "fuukivid", __FILE__) + : device_t(mconfig, FUUKI_VIDEO, tag, owner, clock) , device_video_interface(mconfig, *this) , m_gfxdecode(*this, finder_base::DUMMY_TAG) { diff --git a/src/mame/video/fuukifg.h b/src/mame/video/fuukifg.h index e93b3865d65..5e57722f2cc 100644 --- a/src/mame/video/fuukifg.h +++ b/src/mame/video/fuukifg.h @@ -1,6 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia, David Haywood +#ifndef MAME_VIDEO_FUUKIFH_H +#define MAME_VIDEO_FUUKIFH_H +#pragma once class fuukivid_device : public device_t, @@ -38,7 +41,9 @@ private: required_device m_gfxdecode; }; -extern const device_type FUUKI_VIDEO; +DECLARE_DEVICE_TYPE(FUUKI_VIDEO, fuukivid_device) #define MCFG_FUUKI_VIDEO_GFXDECODE(_gfxtag) \ fuukivid_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); + +#endif // MAME_VIDEO_FUUKIFH_H diff --git a/src/mame/video/fuukifg3.cpp b/src/mame/video/fuukifg3.cpp index f9320d13fe9..01c15f097ab 100644 --- a/src/mame/video/fuukifg3.cpp +++ b/src/mame/video/fuukifg3.cpp @@ -223,7 +223,7 @@ uint32_t fuuki32_state::screen_update(screen_device &screen, bitmap_ind16 &bitma return 0; } -void fuuki32_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(fuuki32_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/galaga.cpp b/src/mame/video/galaga.cpp index d7c1e19bfb7..e8f0ea17c9d 100644 --- a/src/mame/video/galaga.cpp +++ b/src/mame/video/galaga.cpp @@ -562,7 +562,7 @@ uint32_t galaga_state::screen_update_galaga(screen_device &screen, bitmap_ind16 -void galaga_state::screen_eof_galaga(screen_device &screen, bool state) +WRITE_LINE_MEMBER(galaga_state::screen_vblank_galaga) { // falling edge if (!state) diff --git a/src/mame/video/gaplus.cpp b/src/mame/video/gaplus.cpp index 2216fcc2f0b..a7a492bc588 100644 --- a/src/mame/video/gaplus.cpp +++ b/src/mame/video/gaplus.cpp @@ -323,7 +323,7 @@ uint32_t gaplus_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap } -void gaplus_state::screen_eof(screen_device &screen, bool state)/* update starfields */ +WRITE_LINE_MEMBER(gaplus_state::screen_vblank)/* update starfields */ { // falling edge if (!state) diff --git a/src/mame/video/gauntlet.cpp b/src/mame/video/gauntlet.cpp index 0d9f42464bc..7d53b3f22bb 100644 --- a/src/mame/video/gauntlet.cpp +++ b/src/mame/video/gauntlet.cpp @@ -21,7 +21,7 @@ TILE_GET_INFO_MEMBER(gauntlet_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0x3ff; int color = ((data >> 10) & 0x0f) | ((data >> 9) & 0x20); int opaque = data & 0x8000; @@ -31,7 +31,7 @@ TILE_GET_INFO_MEMBER(gauntlet_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(gauntlet_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = ((m_playfield_tile_bank * 0x1000) + (data & 0xfff)) ^ 0x800; int color = 0x10 + (m_playfield_color_bank * 8) + ((data >> 12) & 7); SET_TILE_INFO_MEMBER(0, code, color, (data >> 15) & 1); diff --git a/src/mame/video/gic.cpp b/src/mame/video/gic.cpp index 03d9f27b4b4..03c9e1c5692 100644 --- a/src/mame/video/gic.cpp +++ b/src/mame/video/gic.cpp @@ -65,7 +65,7 @@ #include "screen.h" // device type definition -const device_type GIC = device_creator; +DEFINE_DEVICE_TYPE(GIC, gic_device, "gic", "AY-3-8800-1 GIC") //Font data taken from Paul Robson's simulator @@ -82,27 +82,20 @@ ROM_END //------------------------------------------------- gic_device::gic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GIC, "GIC", tag, owner, clock, "gic", __FILE__) - , device_sound_interface(mconfig, *this) - , device_video_interface(mconfig, *this) - , m_cgrom(nullptr) - , m_audiocnt(0) - , m_audioval(0) - , m_audioreset(0) - , m_ram(nullptr) + : gic_device(mconfig, GIC, tag, owner, clock) { } -gic_device::gic_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, int lines, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +gic_device::gic_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , device_sound_interface(mconfig, *this) , device_video_interface(mconfig, *this) - , m_cgrom(nullptr) + , m_cgrom(*this, "cgrom") , m_audiocnt(0) , m_audioval(0) , m_audioreset(0) - , m_ram(nullptr) + , m_ram(*this) { } @@ -118,8 +111,6 @@ const tiny_rom_entry *gic_device::device_rom_region() const void gic_device::device_start() { - m_cgrom = memregion("cgrom")->base(); - // Let the screen create our temporary bitmap with the screen's dimensions m_screen->register_screen_bitmap(m_bitmap); @@ -128,6 +119,8 @@ void gic_device::device_start() // allocate the audio stream m_stream = stream_alloc( 0, 1, clock()/(2*228) ); + + m_ram.resolve_safe(0xff); } @@ -193,7 +186,7 @@ uint32_t gic_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, for(uint8_t cx=0;cx(device).m_screen_tag = screen_tag; } + template static void set_ram(device_t &device, Obj &&cb) { downcast(device).m_ram.set_callback(std::forward(cb)); } DECLARE_PALETTE_INIT(gic); @@ -65,19 +66,18 @@ public: inline bitmap_ind16 *get_bitmap() { return &m_bitmap; } - //plgDavid please change this to a MESS friendly handshake - void set_shared_memory(const uint8_t*m){ m_ram = m;}; - // Global constants (non measured figures) - static const int START_ACTIVE_SCAN = 10; - static const int BORDER_SIZE = GIC_CHAR_W*3; - static const int END_ACTIVE_SCAN = 10 + GIC_CHAR_W*2 + 150 + GIC_CHAR_W*2; - static const int START_Y = 1; - static const int SCREEN_HEIGHT = GIC_CHAR_H*(GIC_LEFT_H+2); - static const int LINE_CLOCKS = 455; - static const int LINES = 262; + static constexpr int START_ACTIVE_SCAN = 10; + static constexpr int BORDER_SIZE = GIC_CHAR_W*3; + static constexpr int END_ACTIVE_SCAN = 10 + GIC_CHAR_W*2 + 150 + GIC_CHAR_W*2; + static constexpr int START_Y = 1; + static constexpr int SCREEN_HEIGHT = GIC_CHAR_H*(GIC_LEFT_H+2); + static constexpr int LINE_CLOCKS = 455; + static constexpr int LINES = 262; protected: + gic_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -96,7 +96,7 @@ protected: void draw_char_right(int x, int y, uint8_t code, bitmap_ind16 &bitmap,int bg_col); bitmap_ind16 m_bitmap; - uint8_t * m_cgrom; // internal chargen ROM + required_region_ptr m_cgrom; // internal chargen ROM emu_timer *m_vblank_timer; sound_stream *m_stream; @@ -104,10 +104,10 @@ protected: int m_audiocnt; int m_audioval; int m_audioreset; - const uint8_t* m_ram; + devcb_read8 m_ram; }; // device type definition -extern const device_type GIC; +DECLARE_DEVICE_TYPE(GIC, gic_device) -#endif /* __GIC_H__ */ +#endif // MAME_VIDEO_GIC_H diff --git a/src/mame/video/gijoe.cpp b/src/mame/video/gijoe.cpp index b8969055690..13bec02c520 100644 --- a/src/mame/video/gijoe.cpp +++ b/src/mame/video/gijoe.cpp @@ -75,7 +75,7 @@ void gijoe_state::video_start() uint32_t gijoe_state::screen_update_gijoe(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - static const int K053251_CI[4] = { K053251_CI1, K053251_CI2, K053251_CI3, K053251_CI4 }; + static const int K053251_CI[4] = { k053251_device::CI1, k053251_device::CI2, k053251_device::CI3, k053251_device::CI4 }; int layer[4]; int vrc_mode, vrc_new, colorbase_new, /*primode,*/ dirty, i; int mask = 0; @@ -99,7 +99,7 @@ uint32_t gijoe_state::screen_update_gijoe(screen_device &screen, bitmap_ind16 &b m_avac_bits[3] = m_avac_bits[2] = m_avac_bits[1] = m_avac_bits[0] = 0xf000; // update color info and refresh tilemaps - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI0); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI0); for (i = 0; i < 4; i++) { @@ -142,16 +142,16 @@ uint32_t gijoe_state::screen_update_gijoe(screen_device &screen, bitmap_ind16 &b } // seems to switch the K053251 between different priority modes, detail unknown - // primode = m_k053251->get_priority(K053251_CI1); + // primode = m_k053251->get_priority(k053251_device::CI1); layer[0] = 0; m_layer_pri[0] = 0; // not sure layer[1] = 1; - m_layer_pri[1] = m_k053251->get_priority(K053251_CI2); + m_layer_pri[1] = m_k053251->get_priority(k053251_device::CI2); layer[2] = 2; - m_layer_pri[2] = m_k053251->get_priority(K053251_CI3); + m_layer_pri[2] = m_k053251->get_priority(k053251_device::CI3); layer[3] = 3; - m_layer_pri[3] = m_k053251->get_priority(K053251_CI4); + m_layer_pri[3] = m_k053251->get_priority(k053251_device::CI4); konami_sortlayers4(layer, m_layer_pri); diff --git a/src/mame/video/gime.cpp b/src/mame/video/gime.cpp index a4ccfdd9419..0009b950ea8 100644 --- a/src/mame/video/gime.cpp +++ b/src/mame/video/gime.cpp @@ -108,8 +108,8 @@ // ctor //------------------------------------------------- -gime_base_device::gime_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, const char *shortname, const char *source) - : mc6847_friend_device(mconfig, type, name, tag, owner, clock, fontdata, true, 263, 25+192+26+3, false, shortname, source), +gime_base_device::gime_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata) + : mc6847_friend_device(mconfig, type, tag, owner, clock, fontdata, true, 263, 25+192+26+3, false), m_write_irq(*this), m_write_firq(*this), m_read_floating_bus(*this), @@ -624,15 +624,15 @@ uint8_t gime_base_device::read(offs_t offset) switch(offset & 0xF0) { case 0x00: - data = read_gime_register(offset); + data = read_gime_register(offset); // $FF90 - $FF9F break; case 0x10: - data = read_mmu_register(offset); + data = read_mmu_register(offset); // $FFA0 - $FFAF break; case 0x20: - data = read_palette_register(offset); + data = read_palette_register(offset); // $FFB0 - $FFBF break; default: @@ -656,22 +656,14 @@ inline uint8_t gime_base_device::read_gime_register(offs_t offset) uint8_t result; switch(offset) { - case 2: // read pending IRQs + case 2: // $FF92 - read pending IRQs result = m_irq; - if (result != 0x00) - { - m_irq = 0x00; - recalculate_irq(); - } + change_gime_irq(0x00); break; - case 3: // read pending FIRQs + case 3: // $FF93 - read pending FIRQs result = m_firq; - if (result != 0x00) - { - m_firq = 0x00; - recalculate_firq(); - } + change_gime_firq(0x00); break; #ifdef NOPE_NOT_READABLE @@ -741,20 +733,20 @@ void gime_base_device::write(offs_t offset, uint8_t data) switch(offset & 0xF0) { case 0x00: - write_gime_register(offset & 0x0F, data); + write_gime_register(offset & 0x0F, data); // $FF90 - $FF9F break; case 0x10: - write_mmu_register(offset & 0x0F, data); + write_mmu_register(offset & 0x0F, data); // $FFA0 - $FFAF break; case 0x20: - write_palette_register(offset & 0x0F, data & 0x3F); + write_palette_register(offset & 0x0F, data & 0x3F); // $FFB0 - $FFBF break; case 0x30: case 0x40: - write_sam_register(offset - 0x30); + write_sam_register(offset - 0x30); // $FFC0 - $FFDF break; } } @@ -836,6 +828,13 @@ inline void gime_base_device::write_gime_register(offs_t offset, uint8_t data) (data & 0x02) ? "EI1 " : "", (data & 0x01) ? "EI0 " : ""); } + + // While normally interrupts are acknowledged by reading from this + // register and not writing to it, the act of disabling these interrupts + // has the exact same effect + // + // Kudos to Glen Hewlett for identifying this problem + change_gime_irq(m_irq & data); break; case 0x03: @@ -859,6 +858,13 @@ inline void gime_base_device::write_gime_register(offs_t offset, uint8_t data) (data & 0x02) ? "EI1 " : "", (data & 0x01) ? "EI0 " : ""); } + + // While normally interrupts are acknowledged by reading from this + // register and not writing to it, the act of disabling these interrupts + // has the exact same effect + // + // Kudos to Glen Hewlett for identifying this problem + change_gime_firq(m_firq & data); break; case 0x04: @@ -1041,52 +1047,52 @@ inline void gime_base_device::write_sam_register(offs_t offset) } - //------------------------------------------------- // interrupt_rising_edge //------------------------------------------------- void gime_base_device::interrupt_rising_edge(uint8_t interrupt) { - /* evaluate IRQ */ + // evaluate IRQ if ((m_gime_registers[0x00] & 0x20) && (m_gime_registers[0x02] & interrupt)) - { - m_irq |= interrupt; - recalculate_irq(); - } + change_gime_irq(m_irq | interrupt); - /* evaluate FIRQ */ + // evaluate FIRQ if ((m_gime_registers[0x00] & 0x10) && (m_gime_registers[0x03] & interrupt)) - { - m_firq |= interrupt; - recalculate_firq(); - } + change_gime_firq(m_firq | interrupt); } - //------------------------------------------------- -// recalculate_irq +// change_gime_irq //------------------------------------------------- -void gime_base_device::recalculate_irq(void) +void gime_base_device::change_gime_irq(uint8_t data) { - m_write_irq(irq_r()); + // did the value actually change? + if (m_irq != data) + { + m_irq = data; + m_write_irq(irq_r()); + } } - //------------------------------------------------- -// recalculate_firq +// change_gime_firq //------------------------------------------------- -void gime_base_device::recalculate_firq(void) +void gime_base_device::change_gime_firq(uint8_t data) { - m_write_firq(firq_r()); + // did the value actually change? + if (m_firq != data) + { + m_firq = data; + m_write_firq(firq_r()); + } } - //************************************************************************** // VIDEO STATE //************************************************************************** @@ -2017,8 +2023,8 @@ const uint8_t gime_base_device::hires_font[128][12] = // VARIATIONS //************************************************************************** -const device_type GIME_NTSC = device_creator; -const device_type GIME_PAL = device_creator; +DEFINE_DEVICE_TYPE(GIME_NTSC, gime_ntsc_device, "gime_ntsc", "CoCo GIME (NTSC)") +DEFINE_DEVICE_TYPE(GIME_PAL, gime_pal_device, "gime_pal", "CoCo GIME (PAL)") @@ -2027,7 +2033,7 @@ const device_type GIME_PAL = device_creator; //------------------------------------------------- gime_ntsc_device::gime_ntsc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : gime_base_device(mconfig, GIME_NTSC, "GIME_NTSC", tag, owner, clock, ntsc_round_fontdata8x12, "gime_ntsc", __FILE__) + : gime_base_device(mconfig, GIME_NTSC, tag, owner, clock, ntsc_round_fontdata8x12) { } @@ -2038,6 +2044,6 @@ gime_ntsc_device::gime_ntsc_device(const machine_config &mconfig, const char *ta //------------------------------------------------- gime_pal_device::gime_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : gime_base_device(mconfig, GIME_PAL, "GIME_PAL", tag, owner, clock, pal_round_fontdata8x12, "gime_pal", __FILE__) + : gime_base_device(mconfig, GIME_PAL, tag, owner, clock, pal_round_fontdata8x12) { } diff --git a/src/mame/video/gime.h b/src/mame/video/gime.h index 3e141df22a4..e2b3ec96354 100644 --- a/src/mame/video/gime.h +++ b/src/mame/video/gime.h @@ -9,10 +9,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_GIME_H +#define MAME_VIDEO_GIME_H -#ifndef __GIME__ -#define __GIME__ +#pragma once #include "video/mc6847.h" #include "machine/6883sam.h" @@ -55,9 +55,9 @@ class cococart_slot_device; class gime_base_device : public mc6847_friend_device, public sam6883_friend_device { public: - template static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_irq.set_callback(object); } - template static devcb_base &set_firq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_firq.set_callback(object); } - template static devcb_base &set_floating_bus_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_floating_bus.set_callback(object); } + template static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_irq.set_callback(std::forward(cb)); } + template static devcb_base &set_firq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_firq.set_callback(std::forward(cb)); } + template static devcb_base &set_floating_bus_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_floating_bus.set_callback(std::forward(cb)); } static void set_maincpu_tag(device_t &device, const char *tag) { downcast(device).m_maincpu_tag = tag; } static void set_ram_tag(device_t &device, const char *tag) { downcast(device).m_ram_tag = tag; } static void set_ext_tag(device_t &device, const char *tag) { downcast(device).m_ext_tag = tag; } @@ -82,8 +82,8 @@ public: bool update_rgb(bitmap_rgb32 &bitmap, const rectangle &cliprect); // interrupt outputs - bool firq_r(void) { return m_firq != 0x00; } - bool irq_r(void) { return m_irq != 0x00; } + bool firq_r() const { return m_firq != 0x00; } + bool irq_r() const { return m_irq != 0x00; } // interrupt inputs void set_il0(bool value) { set_interrupt_value(INTERRUPT_EI0, value); } @@ -91,7 +91,7 @@ public: void set_il2(bool value) { set_interrupt_value(INTERRUPT_EI2, value); } protected: - gime_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata, const char *shortname, const char *source); + gime_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const uint8_t *fontdata); // device-level overrides virtual void device_start(void) override; @@ -233,8 +233,8 @@ private: // interrupts void interrupt_rising_edge(uint8_t interrupt); - void recalculate_irq(void); - void recalculate_firq(void); + void change_gime_irq(uint8_t data); + void change_gime_firq(uint8_t data); ATTR_FORCE_INLINE void set_interrupt_value(uint8_t interrupt, bool value) { @@ -307,7 +307,7 @@ public: gime_pal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); }; -extern const device_type GIME_NTSC; -extern const device_type GIME_PAL; +DECLARE_DEVICE_TYPE(GIME_NTSC, gime_ntsc_device) +DECLARE_DEVICE_TYPE(GIME_PAL, gime_pal_device) -#endif /* __GIME__ */ +#endif //MAME_VIDEO_GIME_H diff --git a/src/mame/video/goal92.cpp b/src/mame/video/goal92.cpp index 38012031cc3..006c6d04a23 100644 --- a/src/mame/video/goal92.cpp +++ b/src/mame/video/goal92.cpp @@ -179,7 +179,7 @@ uint32_t goal92_state::screen_update_goal92(screen_device &screen, bitmap_ind16 return 0; } -void goal92_state::screen_eof_goal92(screen_device &screen, bool state) +WRITE_LINE_MEMBER(goal92_state::screen_vblank_goal92) { // rising edge if (state) diff --git a/src/mame/video/gp9001.cpp b/src/mame/video/gp9001.cpp index 3469e84b95a..6fcf7e3bf44 100644 --- a/src/mame/video/gp9001.cpp +++ b/src/mame/video/gp9001.cpp @@ -212,10 +212,10 @@ GFXDECODE_MEMBER( gp9001vdp_device::gfxinfo ) GFXDECODE_END -const device_type GP9001_VDP = device_creator; +DEFINE_DEVICE_TYPE(GP9001_VDP, gp9001vdp_device, "gp9001vdp", "GP9001 VDP") gp9001vdp_device::gp9001vdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, GP9001_VDP, "GP9001 VDP", tag, owner, clock, "gp9001vdp", __FILE__), + : device_t(mconfig, GP9001_VDP, tag, owner, clock), device_gfx_interface(mconfig, *this, gfxinfo), device_video_interface(mconfig, *this), device_memory_interface(mconfig, *this), @@ -238,12 +238,7 @@ TILE_GET_INFO_MEMBER(gp9001vdp_device::get_top0_tile_info) attrib = m_vram_top[2*tile_index]; - tile_number = m_vram_top[2*tile_index+1]; - - if (gp9001_gfxrom_is_banked) - { - tile_number = ( gp9001_gfxrom_bank[(tile_number >> 13) & 7] << 13 ) | ( tile_number & 0x1fff ); - } + tile_number = get_tile_number(m_vram_top, tile_index); color = attrib & 0x0fff; // 0x0f00 priority, 0x007f colour SET_TILE_INFO_MEMBER(0, @@ -259,13 +254,7 @@ TILE_GET_INFO_MEMBER(gp9001vdp_device::get_fg0_tile_info) attrib = m_vram_fg[2*tile_index]; - tile_number = m_vram_fg[2*tile_index+1]; - - - if (gp9001_gfxrom_is_banked) - { - tile_number = ( gp9001_gfxrom_bank[(tile_number >> 13) & 7] << 13 ) | ( tile_number & 0x1fff ); - } + tile_number = get_tile_number(m_vram_fg, tile_index); color = attrib & 0x0fff; // 0x0f00 priority, 0x007f colour SET_TILE_INFO_MEMBER(0, @@ -280,12 +269,7 @@ TILE_GET_INFO_MEMBER(gp9001vdp_device::get_bg0_tile_info) int color, tile_number, attrib; attrib = m_vram_bg[2*tile_index]; - tile_number = m_vram_bg[2*tile_index+1]; - - if (gp9001_gfxrom_is_banked) - { - tile_number = ( gp9001_gfxrom_bank[(tile_number >> 13) & 7] << 13 ) | ( tile_number & 0x1fff ); - } + tile_number = get_tile_number(m_vram_bg, tile_index); color = attrib & 0x0fff; // 0x0f00 priority, 0x007f colour SET_TILE_INFO_MEMBER(0, @@ -309,11 +293,11 @@ void gp9001vdp_device::create_tilemaps() void gp9001vdp_device::device_start() { - sp.vram16_buffer = make_unique_clear(GP9001_SPRITERAM_SIZE/2); + sp.vram16_buffer = make_unique_clear(SPRITERAM_SIZE/2); create_tilemaps(); - save_pointer(NAME(sp.vram16_buffer.get()), GP9001_SPRITERAM_SIZE/2); + save_pointer(NAME(sp.vram16_buffer.get()), SPRITERAM_SIZE/2); save_item(NAME(gp9001_scroll_reg)); save_item(NAME(gp9001_voffs)); @@ -330,9 +314,9 @@ void gp9001vdp_device::device_start() save_item(NAME(top.flip)); save_item(NAME(sp.flip)); - gp9001_gfxrom_is_banked = 0; - gp9001_gfxrom_bank_dirty = 0; - save_item(NAME(gp9001_gfxrom_bank)); + gfxrom_is_banked = false; + gfxrom_bank_dirty = false; + save_item(NAME(gfxrom_bank)); // default layer offsets used by all original games bg.extra_xoffset.normal = -0x1d6; @@ -416,80 +400,80 @@ void gp9001vdp_device::gp9001_scroll_reg_select_w(uint16_t data, uint16_t mem_ma } } -static void gp9001_set_scrollx_and_flip_reg(gp9001tilemaplayer* layer, uint16_t data, uint16_t mem_mask, int flip) +void gp9001vdp_device::tilemaplayer::set_scrollx_and_flip_reg(uint16_t data, uint16_t mem_mask, bool f) { - COMBINE_DATA(&layer->scrollx); + COMBINE_DATA(&scrollx); - if (flip) + if (f) { - layer->flip |= TILEMAP_FLIPX; - layer->tmap->set_scrollx(0,-(layer->scrollx+layer->extra_xoffset.flipped)); + flip |= TILEMAP_FLIPX; + tmap->set_scrollx(0, -(scrollx + extra_xoffset.flipped)); } else { - layer->flip &= (~TILEMAP_FLIPX); - layer->tmap->set_scrollx(0,layer->scrollx+layer->extra_xoffset.normal); + flip &= ~TILEMAP_FLIPX; + tmap->set_scrollx(0, scrollx + extra_xoffset.normal); } - layer->tmap->set_flip(layer->flip); + tmap->set_flip(flip); } -static void gp9001_set_scrolly_and_flip_reg(gp9001tilemaplayer* layer, uint16_t data, uint16_t mem_mask, int flip) +void gp9001vdp_device::tilemaplayer::set_scrolly_and_flip_reg(uint16_t data, uint16_t mem_mask, bool f) { - COMBINE_DATA(&layer->scrolly); + COMBINE_DATA(&scrolly); - if (flip) + if (f) { - layer->flip |= TILEMAP_FLIPY; - layer->tmap->set_scrolly(0,-(layer->scrolly+layer->extra_yoffset.flipped)); + flip |= TILEMAP_FLIPY; + tmap->set_scrolly(0, -(scrolly + extra_yoffset.flipped)); } else { - layer->flip &= (~TILEMAP_FLIPY); - layer->tmap->set_scrolly(0,layer->scrolly+layer->extra_yoffset.normal); + flip &= ~TILEMAP_FLIPY; + tmap->set_scrolly(0, scrolly + extra_yoffset.normal); } - layer->tmap->set_flip(layer->flip); + tmap->set_flip(flip); } -static void gp9001_set_sprite_scrollx_and_flip_reg(gp9001spritelayer* layer, uint16_t data, uint16_t mem_mask, int flip) +void gp9001vdp_device::spritelayer::set_scrollx_and_flip_reg(uint16_t data, uint16_t mem_mask, bool f) { - if (flip) + if (f) { - data += layer->extra_xoffset.flipped; - COMBINE_DATA(&layer->scrollx); - if (layer->scrollx & 0x8000) layer->scrollx |= 0xfe00; - else layer->scrollx &= 0x1ff; - layer->flip |= GP9001_SPRITE_FLIPX; + data += extra_xoffset.flipped; + COMBINE_DATA(&scrollx); + if (scrollx & 0x8000) scrollx |= 0xfe00; + else scrollx &= 0x1ff; + flip |= SPRITE_FLIPX; } else { - data += layer->extra_xoffset.normal; - COMBINE_DATA(&layer->scrollx); + data += extra_xoffset.normal; + COMBINE_DATA(&scrollx); - if (layer->scrollx & 0x8000) layer->scrollx |= 0xfe00; - else layer->scrollx &= 0x1ff; - layer->flip &= (~GP9001_SPRITE_FLIPX); + if (scrollx & 0x8000) scrollx |= 0xfe00; + else scrollx &= 0x1ff; + flip &= ~SPRITE_FLIPX; } } -static void gp9001_set_sprite_scrolly_and_flip_reg(gp9001spritelayer* layer, uint16_t data, uint16_t mem_mask, int flip) +void gp9001vdp_device::spritelayer::set_scrolly_and_flip_reg(uint16_t data, uint16_t mem_mask, bool f) { - if (flip) + if (f) { - data += layer->extra_yoffset.flipped; - COMBINE_DATA(&layer->scrolly); - if (layer->scrolly & 0x8000) layer->scrolly |= 0xfe00; - else layer->scrolly &= 0x1ff; - layer->flip |= GP9001_SPRITE_FLIPY; + data += extra_yoffset.flipped; + COMBINE_DATA(&scrolly); + if (scrolly & 0x8000) scrolly |= 0xfe00; + else scrolly &= 0x1ff; + flip |= SPRITE_FLIPY; } else { - data += layer->extra_yoffset.normal; - COMBINE_DATA(&layer->scrolly); - if (layer->scrolly & 0x8000) layer->scrolly |= 0xfe00; - else layer->scrolly &= 0x1ff; - layer->flip &= (~GP9001_SPRITE_FLIPY); + data += extra_yoffset.normal; + COMBINE_DATA(&scrolly); + if (scrolly & 0x8000) scrolly |= 0xfe00; + else scrolly &= 0x1ff; + flip &= ~SPRITE_FLIPY; } } @@ -502,19 +486,19 @@ void gp9001vdp_device::gp9001_scroll_reg_data_w(uint16_t data, uint16_t mem_mask // writes with 8x set turn on flip for the specified layer / axis int flip = gp9001_scroll_reg & 0x80; - switch(gp9001_scroll_reg&0x7f) + switch (gp9001_scroll_reg&0x7f) { - case 0x00: gp9001_set_scrollx_and_flip_reg(&bg, data, mem_mask, flip); break; - case 0x01: gp9001_set_scrolly_and_flip_reg(&bg, data, mem_mask, flip); break; + case 0x00: bg.set_scrollx_and_flip_reg(data, mem_mask, flip); break; + case 0x01: bg.set_scrolly_and_flip_reg(data, mem_mask, flip); break; - case 0x02: gp9001_set_scrollx_and_flip_reg(&fg, data, mem_mask, flip); break; - case 0x03: gp9001_set_scrolly_and_flip_reg(&fg, data, mem_mask, flip); break; + case 0x02: fg.set_scrollx_and_flip_reg(data, mem_mask, flip); break; + case 0x03: fg.set_scrolly_and_flip_reg(data, mem_mask, flip); break; - case 0x04: gp9001_set_scrollx_and_flip_reg(&top,data, mem_mask, flip); break; - case 0x05: gp9001_set_scrolly_and_flip_reg(&top,data, mem_mask, flip); break; + case 0x04: top.set_scrollx_and_flip_reg(data, mem_mask, flip); break; + case 0x05: top.set_scrolly_and_flip_reg(data, mem_mask, flip); break; - case 0x06: gp9001_set_sprite_scrollx_and_flip_reg(&sp, data,mem_mask,flip); break; - case 0x07: gp9001_set_sprite_scrolly_and_flip_reg(&sp, data,mem_mask,flip); break; + case 0x06: sp.set_scrollx_and_flip_reg(data, mem_mask, flip); break; + case 0x07: sp.set_scrolly_and_flip_reg(data, mem_mask, flip); break; case 0x0e: /******* Initialise video controller register ? *******/ @@ -529,14 +513,14 @@ void gp9001vdp_device::gp9001_scroll_reg_data_w(uint16_t data, uint16_t mem_mask void gp9001vdp_device::init_scroll_regs() { - gp9001_set_scrollx_and_flip_reg(&bg, 0, 0xffff, 0); - gp9001_set_scrolly_and_flip_reg(&bg, 0, 0xffff, 0); - gp9001_set_scrollx_and_flip_reg(&fg, 0, 0xffff, 0); - gp9001_set_scrolly_and_flip_reg(&fg, 0, 0xffff, 0); - gp9001_set_scrollx_and_flip_reg(&top,0, 0xffff, 0); - gp9001_set_scrolly_and_flip_reg(&top,0, 0xffff, 0); - gp9001_set_sprite_scrollx_and_flip_reg(&sp, 0,0xffff,0); - gp9001_set_sprite_scrolly_and_flip_reg(&sp, 0,0xffff,0); + bg.set_scrollx_and_flip_reg(0, 0xffff, 0); + bg.set_scrolly_and_flip_reg(0, 0xffff, 0); + fg.set_scrollx_and_flip_reg(0, 0xffff, 0); + fg.set_scrolly_and_flip_reg(0, 0xffff, 0); + top.set_scrollx_and_flip_reg(0, 0xffff, 0); + top.set_scrolly_and_flip_reg(0, 0xffff, 0); + sp.set_scrollx_and_flip_reg(0, 0xffff, 0); + sp.set_scrolly_and_flip_reg(0, 0xffff, 0); } @@ -689,7 +673,7 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip int old_x = (-(sp.scrollx)) & 0x1ff; int old_y = (-(sp.scrolly)) & 0x1ff; - for (int offs = 0; offs < (GP9001_SPRITERAM_SIZE/2); offs += 4) + for (int offs = 0; offs < (SPRITERAM_SIZE/2); offs += 4) { int attrib, sprite, color, priority, flipx, flipy, sx, sy; int sprite_sizex, sprite_sizey, dim_x, dim_y, sx_base, sy_base; @@ -700,7 +684,7 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip if ((attrib & 0x8000)) { - if (!gp9001_gfxrom_is_banked) /* No Sprite select bank switching needed */ + if (!gfxrom_is_banked) /* No Sprite select bank switching needed */ { sprite = ((attrib & 3) << 16) | source[offs + 1]; /* 18 bit */ } @@ -708,7 +692,7 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip { sprite_num = source[offs + 1] & 0x7fff; bank = ((attrib & 3) << 1) | (source[offs + 1] >> 15); - sprite = (gp9001_gfxrom_bank[bank] << 15 ) | sprite_num; + sprite = (gfxrom_bank[bank] << 15 ) | sprite_num; } color = (attrib >> 2) & 0x3f; @@ -730,8 +714,8 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip old_x = sx_base; old_y = sy_base; - flipx = attrib & GP9001_SPRITE_FLIPX; - flipy = attrib & GP9001_SPRITE_FLIPY; + flipx = attrib & SPRITE_FLIPX; + flipy = attrib & SPRITE_FLIPY; if (flipx) { @@ -757,15 +741,15 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip /***** Flip the sprite layer in any active X or Y flip *****/ if (sp.flip) { - if (sp.flip & GP9001_SPRITE_FLIPX) + if (sp.flip & SPRITE_FLIPX) sx_base = 320 - sx_base; - if (sp.flip & GP9001_SPRITE_FLIPY) + if (sp.flip & SPRITE_FLIPY) sy_base = 240 - sy_base; } /***** Cancel flip, if it, and sprite layer flip are active *****/ - flipx = (flipx ^ (sp.flip & GP9001_SPRITE_FLIPX)); - flipy = (flipy ^ (sp.flip & GP9001_SPRITE_FLIPY)); + flipx = (flipx ^ (sp.flip & SPRITE_FLIPX)); + flipy = (flipy ^ (sp.flip & SPRITE_FLIPY)); /***** Draw the complete sprites using the dimension info *****/ for (dim_y = 0; dim_y < sprite_sizey; dim_y += 8) @@ -920,11 +904,11 @@ static const uint8_t batsugun_prienable0[16]={ 1, 1, 1, 1, 1, 1, void gp9001vdp_device::gp9001_render_vdp(bitmap_ind16 &bitmap, const rectangle &cliprect) { - if (gp9001_gfxrom_is_banked && gp9001_gfxrom_bank_dirty) + if (gfxrom_is_banked && gfxrom_bank_dirty) { bg.tmap->mark_all_dirty(); fg.tmap->mark_all_dirty(); - gp9001_gfxrom_bank_dirty = 0; + gfxrom_bank_dirty = false; } gp9001_draw_custom_tilemap(bitmap, bg.tmap, gp9001_primap1, batsugun_prienable0); @@ -937,5 +921,5 @@ void gp9001vdp_device::gp9001_render_vdp(bitmap_ind16 &bitmap, const rectangle & void gp9001vdp_device::gp9001_screen_eof(void) { /** Shift sprite RAM buffers *** Used to fix sprite lag **/ - if (sp.use_sprite_buffer) memcpy(sp.vram16_buffer.get(),m_spriteram,GP9001_SPRITERAM_SIZE); + if (sp.use_sprite_buffer) memcpy(sp.vram16_buffer.get(),m_spriteram,SPRITERAM_SIZE); } diff --git a/src/mame/video/gp9001.h b/src/mame/video/gp9001.h index c788f1788d0..703d4e08ee5 100644 --- a/src/mame/video/gp9001.h +++ b/src/mame/video/gp9001.h @@ -1,59 +1,19 @@ // license:BSD-3-Clause // copyright-holders:Quench, David Haywood /* GP9001 Video Controller */ +#ifndef MAME_VIDEO_GP9001_H +#define MAME_VIDEO_GP9001_H -struct gp9001layeroffsets -{ - int normal; - int flipped; -}; - -struct gp9001layer -{ - uint16_t flip; - uint16_t scrollx; - uint16_t scrolly; - - gp9001layeroffsets extra_xoffset; - gp9001layeroffsets extra_yoffset; -}; - -struct gp9001tilemaplayer : gp9001layer -{ - tilemap_t *tmap; -}; - -struct gp9001spritelayer : gp9001layer -{ - bool use_sprite_buffer; - std::unique_ptr vram16_buffer; // vram buffer for this layer -}; - +#pragma once class gp9001vdp_device : public device_t, public device_gfx_interface, public device_video_interface, public device_memory_interface { - static const gfx_layout tilelayout, spritelayout; - DECLARE_GFXDECODE_MEMBER(gfxinfo); - public: gp9001vdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - uint16_t gp9001_voffs; - uint16_t gp9001_scroll_reg; - - gp9001tilemaplayer bg, top, fg; - gp9001spritelayer sp; - - // technically this is just rom banking, allowing the chip to see more graphic ROM, however it's easier to handle it - // in the chip implementation than externally for now (which would require dynamic decoding of the entire charsets every - // time the bank was changed) - int gp9001_gfxrom_is_banked; - int gp9001_gfxrom_bank_dirty; /* dirty flag of object bank (for Batrider) */ - uint16_t gp9001_gfxrom_bank[8]; /* Batrider object bank */ - void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, const uint8_t* primap ); void gp9001_draw_custom_tilemap( bitmap_ind16 &bitmap, tilemap_t* tilemap, const uint8_t* priremap, const uint8_t* pri_enable ); @@ -66,6 +26,24 @@ public: DECLARE_ADDRESS_MAP(map, 16); + // game-specific hack stuff + void disable_sprite_buffer() { sp.use_sprite_buffer = 0; } + void set_bg_extra_offsets(int xn, int yn, int xf, int yf) { bg.set_extra_offsets(xn, yn, xf, yf); } + void set_fg_extra_offsets(int xn, int yn, int xf, int yf) { fg.set_extra_offsets(xn, yn, xf, yf); } + void set_top_extra_offsets(int xn, int yn, int xf, int yf) { top.set_extra_offsets(xn, yn, xf, yf); } + void set_sp_extra_offsets(int xn, int yn, int xf, int yf) { sp.set_extra_offsets(xn, yn, xf, yf); } + + // ROM banking control + void set_gfxrom_banked() { gfxrom_is_banked = true; } + void set_gfxrom_bank(unsigned index, uint16_t value) + { + if (gfxrom_bank[index] != value) + { + gfxrom_bank[index] = value; + gfxrom_bank_dirty = true; + } + } + // access to VDP DECLARE_READ16_MEMBER( gp9001_vdp_r ); DECLARE_WRITE16_MEMBER( gp9001_vdp_w ); @@ -97,10 +75,65 @@ protected: TILE_GET_INFO_MEMBER(get_bg0_tile_info); private: - required_shared_ptr m_vram_bg; - required_shared_ptr m_vram_fg; - required_shared_ptr m_vram_top; - required_shared_ptr m_spriteram; + static constexpr unsigned BG_VRAM_SIZE = 0x1000; /* Background RAM size */ + static constexpr unsigned FG_VRAM_SIZE = 0x1000; /* Foreground RAM size */ + static constexpr unsigned TOP_VRAM_SIZE = 0x1000; /* Top Layer RAM size */ + static constexpr unsigned SPRITERAM_SIZE = 0x0800; /* Sprite RAM size */ + static constexpr unsigned SPRITE_FLIPX = 0x1000; /* Sprite flip flags */ + static constexpr unsigned SPRITE_FLIPY = 0x2000; + + struct gp9001layeroffsets + { + int normal; + int flipped; + }; + + struct gp9001layer + { + void set_extra_offsets(int xn, int yn, int xf, int yf) + { + extra_xoffset.normal = xn; + extra_yoffset.normal = yn; + extra_xoffset.flipped = xf; + extra_yoffset.flipped = yf; + } + + uint16_t flip; + uint16_t scrollx; + uint16_t scrolly; + + gp9001layeroffsets extra_xoffset; + gp9001layeroffsets extra_yoffset; + }; + + struct tilemaplayer : gp9001layer + { + void set_scrollx_and_flip_reg(uint16_t data, uint16_t mem_mask, bool f); + void set_scrolly_and_flip_reg(uint16_t data, uint16_t mem_mask, bool f); + + tilemap_t *tmap; + }; + + struct spritelayer : gp9001layer + { + void set_scrollx_and_flip_reg(uint16_t data, uint16_t mem_mask, bool f); + void set_scrolly_and_flip_reg(uint16_t data, uint16_t mem_mask, bool f); + + bool use_sprite_buffer; + std::unique_ptr vram16_buffer; // vram buffer for this layer + }; + + int get_tile_number(uint16_t const *vram, int index) + { + uint16_t const value = vram[(index << 1) | 1]; + if (gfxrom_is_banked) + return (gfxrom_bank[(value >> 13) & 7] << 13) | (value & 0x1fff); + else + return value; + } + + static const gfx_layout tilelayout, spritelayout; + DECLARE_GFXDECODE_MEMBER(gfxinfo); void gp9001_voffs_w(uint16_t data, uint16_t mem_mask); int gp9001_videoram16_r(void); @@ -108,13 +141,26 @@ private: uint16_t gp9001_vdpstatus_r(void); void gp9001_scroll_reg_select_w(uint16_t data, uint16_t mem_mask); void gp9001_scroll_reg_data_w(uint16_t data, uint16_t mem_mask); + + uint16_t gp9001_voffs; + uint16_t gp9001_scroll_reg; + + tilemaplayer bg, top, fg; + spritelayer sp; + + // technically this is just rom banking, allowing the chip to see more graphic ROM, however it's easier to handle it + // in the chip implementation than externally for now (which would require dynamic decoding of the entire charsets every + // time the bank was changed) + bool gfxrom_is_banked; + bool gfxrom_bank_dirty; /* dirty flag of object bank (for Batrider) */ + uint16_t gfxrom_bank[8]; /* Batrider object bank */ + + required_shared_ptr m_vram_bg; + required_shared_ptr m_vram_fg; + required_shared_ptr m_vram_top; + required_shared_ptr m_spriteram; }; -extern const device_type GP9001_VDP; +DECLARE_DEVICE_TYPE(GP9001_VDP, gp9001vdp_device) -#define GP9001_BG_VRAM_SIZE 0x1000 /* Background RAM size */ -#define GP9001_FG_VRAM_SIZE 0x1000 /* Foreground RAM size */ -#define GP9001_TOP_VRAM_SIZE 0x1000 /* Top Layer RAM size */ -#define GP9001_SPRITERAM_SIZE 0x800 /* Sprite RAM size */ -#define GP9001_SPRITE_FLIPX 0x1000 /* Sprite flip flags */ -#define GP9001_SPRITE_FLIPY 0x2000 +#endif // MAME_VIDEO_GP9001_H diff --git a/src/mame/video/groundfx.cpp b/src/mame/video/groundfx.cpp index ace0e91afd5..797f3d5300d 100644 --- a/src/mame/video/groundfx.cpp +++ b/src/mame/video/groundfx.cpp @@ -196,7 +196,7 @@ void groundfx_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co SCREEN REFRESH **************************************************************/ -uint32_t groundfx_state::screen_update_groundfx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t groundfx_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { address_space &space = machine().dummy_space(); uint8_t layer[5]; diff --git a/src/mame/video/gstriker.cpp b/src/mame/video/gstriker.cpp index 72e1ee4c1bc..4b6bab05a61 100644 --- a/src/mame/video/gstriker.cpp +++ b/src/mame/video/gstriker.cpp @@ -27,7 +27,7 @@ uint32_t gstriker_state::screen_update(screen_device &screen, bitmap_ind16 &bitm m_spr->draw_sprites(m_CG10103_m_vram, 0x2000, screen, bitmap, cliprect, 0x2, 0x0); - m_tx->draw( screen, bitmap, cliprect, 0); + m_tx->draw(screen, bitmap, cliprect, 0); m_spr->draw_sprites(m_CG10103_m_vram, 0x2000, screen, bitmap, cliprect, 0x2, 0x2); @@ -37,8 +37,8 @@ uint32_t gstriker_state::screen_update(screen_device &screen, bitmap_ind16 &bitm void gstriker_state::video_start() { // Initialize the chip for the score plane - m_tx->get_tilemap()->set_transparent_pen(0xf); + m_tx->set_transparent_pen(0xf); // Initialize the chip for the screen plane - m_bg->get_tilemap()->set_transparent_pen(0xf); + m_bg->set_transparent_pen(0xf); } diff --git a/src/mame/video/gtia.cpp b/src/mame/video/gtia.cpp index 3010dad1121..cacd7d84c97 100644 --- a/src/mame/video/gtia.cpp +++ b/src/mame/video/gtia.cpp @@ -112,16 +112,16 @@ // devices -const device_type ATARI_GTIA = device_creator; +DEFINE_DEVICE_TYPE(ATARI_GTIA, gtia_device, "gtia", "Atari GTIA") //------------------------------------------------- // upd7220_device - constructor //------------------------------------------------- gtia_device::gtia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, ATARI_GTIA, "Atari GTIA", tag, owner, clock, "gtia", __FILE__), - m_read_cb(*this), - m_write_cb(*this) + device_t(mconfig, ATARI_GTIA, tag, owner, clock), + m_read_cb(*this), + m_write_cb(*this) { } diff --git a/src/mame/video/gtia.h b/src/mame/video/gtia.h index 6bb78f407ed..68f911fde35 100644 --- a/src/mame/video/gtia.h +++ b/src/mame/video/gtia.h @@ -10,110 +10,12 @@ ***************************************************************************/ -#ifndef __GTIA_H__ -#define __GTIA_H__ +#ifndef MAME_VIDEO_GTIA_H +#define MAME_VIDEO_GTIA_H +#pragma once -/* reading registers */ -struct gtia_readregs -{ - uint8_t m0pf; /* d000 missile 0 playfield collisions */ - uint8_t m1pf; /* d001 missile 1 playfield collisions */ - uint8_t m2pf; /* d002 missile 2 playfield collisions */ - uint8_t m3pf; /* d003 missile 3 playfield collisions */ - uint8_t p0pf; /* d004 player 0 playfield collisions */ - uint8_t p1pf; /* d005 player 1 playfield collisions */ - uint8_t p2pf; /* d006 player 2 playfield collisions */ - uint8_t p3pf; /* d007 player 3 playfield collisions */ - uint8_t m0pl; /* d008 missile 0 player collisions */ - uint8_t m1pl; /* d009 missile 1 player collisions */ - uint8_t m2pl; /* d00a missile 2 player collisions */ - uint8_t m3pl; /* d00b missile 3 player collisions */ - uint8_t p0pl; /* d00c player 0 player collisions */ - uint8_t p1pl; /* d00d player 1 player collisions */ - uint8_t p2pl; /* d00e player 2 player collisions */ - uint8_t p3pl; /* d00f player 3 player collisions */ - uint8_t but[4]; /* d010-d013 button stick 0-3 */ - uint8_t pal; /* d014 PAL/NTSC config (D3,2,1 0=PAL, 1=NTSC */ - uint8_t gtia15; /* d015 nothing */ - uint8_t gtia16; /* d016 nothing */ - uint8_t gtia17; /* d017 nothing */ - uint8_t gtia18; /* d018 nothing */ - uint8_t gtia19; /* d019 nothing */ - uint8_t gtia1a; /* d01a nothing */ - uint8_t gtia1b; /* d01b nothing */ - uint8_t gtia1c; /* d01c nothing */ - uint8_t gtia1d; /* d01d nothing */ - uint8_t gtia1e; /* d01e nothing */ - uint8_t cons; /* d01f console keys */ -}; - -/* writing registers */ -struct gtia_writeregs -{ - uint8_t hposp0; /* d000 player 0 horz position */ - uint8_t hposp1; /* d001 player 1 horz position */ - uint8_t hposp2; /* d002 player 2 horz position */ - uint8_t hposp3; /* d003 player 3 horz position */ - uint8_t hposm0; /* d004 missile 0 horz position */ - uint8_t hposm1; /* d005 missile 1 horz position */ - uint8_t hposm2; /* d006 missile 2 horz position */ - uint8_t hposm3; /* d007 missile 3 horz position */ - uint8_t sizep0; /* d008 size player 0 */ - uint8_t sizep1; /* d009 size player 1 */ - uint8_t sizep2; /* d00a size player 2 */ - uint8_t sizep3; /* d00b size player 3 */ - uint8_t sizem; /* d00c size missiles */ - uint8_t grafp0[2]; /* d00d graphics data for player 0 */ - uint8_t grafp1[2]; /* d00e graphics data for player 1 */ - uint8_t grafp2[2]; /* d00f graphics data for player 2 */ - uint8_t grafp3[2]; /* d010 graphics data for player 3 */ - uint8_t grafm[2]; /* d011 graphics data for missiles */ - uint8_t colpm0; /* d012 color for player/missile 0 */ - uint8_t colpm1; /* d013 color for player/missile 1 */ - uint8_t colpm2; /* d014 color for player/missile 2 */ - uint8_t colpm3; /* d015 color for player/missile 3 */ - uint8_t colpf0; /* d016 playfield color 0 */ - uint8_t colpf1; /* d017 playfield color 1 */ - uint8_t colpf2; /* d018 playfield color 2 */ - uint8_t colpf3; /* d019 playfield color 3 */ - uint8_t colbk; /* d01a background playfield */ - uint8_t prior; /* d01b priority select */ - uint8_t vdelay; /* d01c delay until vertical retrace */ - uint8_t gractl; /* d01d graphics control */ - uint8_t hitclr; /* d01e clear collisions */ - uint8_t cons; /* d01f write console (speaker) */ -}; - -/* helpers */ -struct gtia_helpervars -{ - uint8_t grafp0; /* optimized graphics data player 0 */ - uint8_t grafp1; /* optimized graphics data player 1 */ - uint8_t grafp2; /* optimized graphics data player 2 */ - uint8_t grafp3; /* optimized graphics data player 3 */ - uint8_t grafm0; /* optimized graphics data missile 0 */ - uint8_t grafm1; /* optimized graphics data missile 1 */ - uint8_t grafm2; /* optimized graphics data missile 2 */ - uint8_t grafm3; /* optimized graphics data missile 3 */ - uint32_t hitclr_frames;/* frames gone since last hitclr */ - uint8_t sizem; /* optimized size missiles */ - uint8_t usedp; /* mask for used player colors */ - uint8_t usedm0; /* mask for used missile 0 color */ - uint8_t usedm1; /* mask for used missile 1 color */ - uint8_t usedm2; /* mask for used missile 2 color */ - uint8_t usedm3; /* mask for used missile 3 color */ - uint8_t vdelay_m0; /* vertical delay for missile 0 */ - uint8_t vdelay_m1; /* vertical delay for missile 1 */ - uint8_t vdelay_m2; /* vertical delay for missile 2 */ - uint8_t vdelay_m3; /* vertical delay for missile 3 */ - uint8_t vdelay_p0; /* vertical delay for player 0 */ - uint8_t vdelay_p1; /* vertical delay for player 1 */ - uint8_t vdelay_p2; /* vertical delay for player 2 */ - uint8_t vdelay_p3; /* vertical delay for player 3 */ -}; - #define MCFG_GTIA_READ_CB(_devcb) \ devcb = >ia_device::set_read_callback(*device, DEVCB_##_devcb); @@ -129,8 +31,8 @@ public: // construction/destruction gtia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_read_callback(device_t &device, _Object object) { return downcast(device).m_read_cb.set_callback(object); } - template static devcb_base &set_write_callback(device_t &device, _Object object) { return downcast(device).m_write_cb.set_callback(object); } + template static devcb_base &set_read_callback(device_t &device, Object &&cb) { return downcast(device).m_read_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_write_callback(device_t &device, Object &&cb) { return downcast(device).m_write_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -168,6 +70,105 @@ protected: inline void missile_render(uint8_t gfx, int size, uint8_t color, uint8_t *dst); private: + /* reading registers */ + struct gtia_readregs + { + uint8_t m0pf; /* d000 missile 0 playfield collisions */ + uint8_t m1pf; /* d001 missile 1 playfield collisions */ + uint8_t m2pf; /* d002 missile 2 playfield collisions */ + uint8_t m3pf; /* d003 missile 3 playfield collisions */ + uint8_t p0pf; /* d004 player 0 playfield collisions */ + uint8_t p1pf; /* d005 player 1 playfield collisions */ + uint8_t p2pf; /* d006 player 2 playfield collisions */ + uint8_t p3pf; /* d007 player 3 playfield collisions */ + uint8_t m0pl; /* d008 missile 0 player collisions */ + uint8_t m1pl; /* d009 missile 1 player collisions */ + uint8_t m2pl; /* d00a missile 2 player collisions */ + uint8_t m3pl; /* d00b missile 3 player collisions */ + uint8_t p0pl; /* d00c player 0 player collisions */ + uint8_t p1pl; /* d00d player 1 player collisions */ + uint8_t p2pl; /* d00e player 2 player collisions */ + uint8_t p3pl; /* d00f player 3 player collisions */ + uint8_t but[4]; /* d010-d013 button stick 0-3 */ + uint8_t pal; /* d014 PAL/NTSC config (D3,2,1 0=PAL, 1=NTSC */ + uint8_t gtia15; /* d015 nothing */ + uint8_t gtia16; /* d016 nothing */ + uint8_t gtia17; /* d017 nothing */ + uint8_t gtia18; /* d018 nothing */ + uint8_t gtia19; /* d019 nothing */ + uint8_t gtia1a; /* d01a nothing */ + uint8_t gtia1b; /* d01b nothing */ + uint8_t gtia1c; /* d01c nothing */ + uint8_t gtia1d; /* d01d nothing */ + uint8_t gtia1e; /* d01e nothing */ + uint8_t cons; /* d01f console keys */ + }; + + /* writing registers */ + struct gtia_writeregs + { + uint8_t hposp0; /* d000 player 0 horz position */ + uint8_t hposp1; /* d001 player 1 horz position */ + uint8_t hposp2; /* d002 player 2 horz position */ + uint8_t hposp3; /* d003 player 3 horz position */ + uint8_t hposm0; /* d004 missile 0 horz position */ + uint8_t hposm1; /* d005 missile 1 horz position */ + uint8_t hposm2; /* d006 missile 2 horz position */ + uint8_t hposm3; /* d007 missile 3 horz position */ + uint8_t sizep0; /* d008 size player 0 */ + uint8_t sizep1; /* d009 size player 1 */ + uint8_t sizep2; /* d00a size player 2 */ + uint8_t sizep3; /* d00b size player 3 */ + uint8_t sizem; /* d00c size missiles */ + uint8_t grafp0[2]; /* d00d graphics data for player 0 */ + uint8_t grafp1[2]; /* d00e graphics data for player 1 */ + uint8_t grafp2[2]; /* d00f graphics data for player 2 */ + uint8_t grafp3[2]; /* d010 graphics data for player 3 */ + uint8_t grafm[2]; /* d011 graphics data for missiles */ + uint8_t colpm0; /* d012 color for player/missile 0 */ + uint8_t colpm1; /* d013 color for player/missile 1 */ + uint8_t colpm2; /* d014 color for player/missile 2 */ + uint8_t colpm3; /* d015 color for player/missile 3 */ + uint8_t colpf0; /* d016 playfield color 0 */ + uint8_t colpf1; /* d017 playfield color 1 */ + uint8_t colpf2; /* d018 playfield color 2 */ + uint8_t colpf3; /* d019 playfield color 3 */ + uint8_t colbk; /* d01a background playfield */ + uint8_t prior; /* d01b priority select */ + uint8_t vdelay; /* d01c delay until vertical retrace */ + uint8_t gractl; /* d01d graphics control */ + uint8_t hitclr; /* d01e clear collisions */ + uint8_t cons; /* d01f write console (speaker) */ + }; + + /* helpers */ + struct gtia_helpervars + { + uint8_t grafp0; /* optimized graphics data player 0 */ + uint8_t grafp1; /* optimized graphics data player 1 */ + uint8_t grafp2; /* optimized graphics data player 2 */ + uint8_t grafp3; /* optimized graphics data player 3 */ + uint8_t grafm0; /* optimized graphics data missile 0 */ + uint8_t grafm1; /* optimized graphics data missile 1 */ + uint8_t grafm2; /* optimized graphics data missile 2 */ + uint8_t grafm3; /* optimized graphics data missile 3 */ + uint32_t hitclr_frames;/* frames gone since last hitclr */ + uint8_t sizem; /* optimized size missiles */ + uint8_t usedp; /* mask for used player colors */ + uint8_t usedm0; /* mask for used missile 0 color */ + uint8_t usedm1; /* mask for used missile 1 color */ + uint8_t usedm2; /* mask for used missile 2 color */ + uint8_t usedm3; /* mask for used missile 3 color */ + uint8_t vdelay_m0; /* vertical delay for missile 0 */ + uint8_t vdelay_m1; /* vertical delay for missile 1 */ + uint8_t vdelay_m2; /* vertical delay for missile 2 */ + uint8_t vdelay_m3; /* vertical delay for missile 3 */ + uint8_t vdelay_p0; /* vertical delay for player 0 */ + uint8_t vdelay_p1; /* vertical delay for player 1 */ + uint8_t vdelay_p2; /* vertical delay for player 2 */ + uint8_t vdelay_p3; /* vertical delay for player 3 */ + }; + gtia_readregs m_r; /* read registers */ gtia_writeregs m_w; /* write registers */ gtia_helpervars m_h; /* helper variables */ @@ -184,6 +185,6 @@ private: // device type definition -extern const device_type ATARI_GTIA; +DECLARE_DEVICE_TYPE(ATARI_GTIA, gtia_device) -#endif /* __GTIA_H__ */ +#endif // MAME_VIDEO_GTIA_H diff --git a/src/mame/video/hng64.cpp b/src/mame/video/hng64.cpp index 2491a9b0ccd..b2a3a9b4feb 100644 --- a/src/mame/video/hng64.cpp +++ b/src/mame/video/hng64.cpp @@ -1110,7 +1110,7 @@ uint32_t hng64_state::screen_update_hng64(screen_device &screen, bitmap_rgb32 &b return 0; } -void hng64_state::screen_eof_hng64(screen_device &screen, bool state) +WRITE_LINE_MEMBER(hng64_state::screen_vblank_hng64) { // rising edge if (state) diff --git a/src/mame/video/homedata.cpp b/src/mame/video/homedata.cpp index f3a20512a58..1c4a6d33993 100644 --- a/src/mame/video/homedata.cpp +++ b/src/mame/video/homedata.cpp @@ -1022,7 +1022,7 @@ uint32_t homedata_state::screen_update_mirderby(screen_device &screen, bitmap_in } -void homedata_state::screen_eof_homedata(screen_device &screen, bool state) +WRITE_LINE_MEMBER(homedata_state::screen_vblank_homedata) { // rising edge if (state) diff --git a/src/mame/video/hyhoo.cpp b/src/mame/video/hyhoo.cpp index 91ef3c6acd4..aebc3c49420 100644 --- a/src/mame/video/hyhoo.cpp +++ b/src/mame/video/hyhoo.cpp @@ -221,12 +221,14 @@ void hyhoo_state::hyhoo_gfxdraw() } m_nb1413m3->m_busyflag = 0; - timer_set(attotime::from_hz(400000) * m_nb1413m3->m_busyctr, TIMER_BLITTER); + m_blitter_timer->adjust(attotime::from_hz(400000) * m_nb1413m3->m_busyctr); } void hyhoo_state::video_start() { + m_blitter_timer = timer_alloc(TIMER_BLITTER); + m_screen->register_screen_bitmap(m_tmpbitmap); save_item(NAME(m_blitter_destx)); save_item(NAME(m_blitter_desty)); diff --git a/src/mame/video/hyprduel.cpp b/src/mame/video/hyprduel.cpp index d396ee6f424..c429527fa43 100644 --- a/src/mame/video/hyprduel.cpp +++ b/src/mame/video/hyprduel.cpp @@ -63,7 +63,7 @@ Note: if MAME_DEBUG is defined, pressing Z with: Palette GGGGGRRRRRBBBBBx ***************************************************************************/ -WRITE16_MEMBER(hyprduel_state::hyprduel_paletteram_w) +WRITE16_MEMBER(hyprduel_state::paletteram_w) { data = COMBINE_DATA(&m_paletteram[offset]); m_palette->set_pen_color(offset, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1)); @@ -231,7 +231,7 @@ inline void hyprduel_state::get_tile_info_16x16_8bit( tile_data &tileinfo, int t } } -inline void hyprduel_state::hyprduel_vram_w( offs_t offset, uint16_t data, uint16_t mem_mask, int layer, uint16_t *vram ) +inline void hyprduel_state::vram_w( offs_t offset, uint16_t data, uint16_t mem_mask, int layer, uint16_t *vram ) { COMBINE_DATA(&vram[offset]); { @@ -264,24 +264,24 @@ TILE_GET_INFO_MEMBER(hyprduel_state::get_tile_info_2_8bit) get_tile_info_8bit(tileinfo, tile_index, 2, m_vram_2); } -WRITE16_MEMBER(hyprduel_state::hyprduel_vram_0_w) +WRITE16_MEMBER(hyprduel_state::vram_0_w) { - hyprduel_vram_w(offset, data, mem_mask, 0, m_vram_0); + vram_w(offset, data, mem_mask, 0, m_vram_0); } -WRITE16_MEMBER(hyprduel_state::hyprduel_vram_1_w) +WRITE16_MEMBER(hyprduel_state::vram_1_w) { - hyprduel_vram_w(offset, data, mem_mask, 1, m_vram_1); + vram_w(offset, data, mem_mask, 1, m_vram_1); } -WRITE16_MEMBER(hyprduel_state::hyprduel_vram_2_w) +WRITE16_MEMBER(hyprduel_state::vram_2_w) { - hyprduel_vram_w(offset, data, mem_mask, 2, m_vram_2); + vram_w(offset, data, mem_mask, 2, m_vram_2); } /* Dirty the relevant tilemap when its window changes */ -WRITE16_MEMBER(hyprduel_state::hyprduel_window_w) +WRITE16_MEMBER(hyprduel_state::window_w) { uint16_t olddata = m_window[offset]; uint16_t newdata = COMBINE_DATA(&m_window[offset]); @@ -313,7 +313,7 @@ void hyprduel_state::alloc_empty_tiles( ) } -void hyprduel_state::hyprduel_postload() +void hyprduel_state::postload() { int i; @@ -330,22 +330,22 @@ void hyprduel_state::hyprduel_postload() } -void hyprduel_state::expand_gfx1(hyprduel_state &state) +void hyprduel_state::expand_gfx1() { - uint8_t *base_gfx = state.memregion("gfx1")->base(); - uint32_t length = 2 * state.memregion("gfx1")->bytes(); - state.m_expanded_gfx1 = std::make_unique(length); + uint8_t *base_gfx = memregion("gfx1")->base(); + uint32_t length = 2 * memregion("gfx1")->bytes(); + m_expanded_gfx1 = std::make_unique(length); for (int i = 0; i < length; i += 2) { uint8_t src = base_gfx[i / 2]; - state.m_expanded_gfx1[i+0] = src & 15; - state.m_expanded_gfx1[i+1] = src >> 4; + m_expanded_gfx1[i+0] = src & 15; + m_expanded_gfx1[i+1] = src >> 4; } } VIDEO_START_MEMBER(hyprduel_state,common_14220) { - expand_gfx1(*this); + expand_gfx1(); alloc_empty_tiles(); m_tiletable_old = std::make_unique(m_tiletable.bytes() / 2); m_dirtyindex = std::make_unique(m_tiletable.bytes() / 4); @@ -373,7 +373,7 @@ VIDEO_START_MEMBER(hyprduel_state,common_14220) /* Set up save state */ save_item(NAME(m_sprite_xoffs)); save_item(NAME(m_sprite_yoffs)); - machine().save().register_postload(save_prepost_delegate(FUNC(hyprduel_state::hyprduel_postload), this)); + machine().save().register_postload(save_prepost_delegate(FUNC(hyprduel_state::postload), this)); } VIDEO_START_MEMBER(hyprduel_state,hyprduel_14220) @@ -587,7 +587,7 @@ void hyprduel_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, Screen Drawing ***************************************************************************/ -WRITE16_MEMBER(hyprduel_state::hyprduel_scrollreg_w) +WRITE16_MEMBER(hyprduel_state::scrollreg_w) { uint16_t window = m_window[offset]; @@ -599,7 +599,7 @@ WRITE16_MEMBER(hyprduel_state::hyprduel_scrollreg_w) m_bg_tilemap[offset / 2]->set_scrolly(0, m_scroll[offset] - window - (window & 7)); } -WRITE16_MEMBER(hyprduel_state::hyprduel_scrollreg_init_w) +WRITE16_MEMBER(hyprduel_state::scrollreg_init_w) { int i; @@ -652,7 +652,7 @@ void hyprduel_state::dirty_tiles( int layer, uint16_t *vram ) } -uint32_t hyprduel_state::screen_update_hyprduel(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t hyprduel_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i, pri, layers_ctrl = -1; uint16_t screenctrl = *m_screenctrl; diff --git a/src/mame/video/igs017_igs031.cpp b/src/mame/video/igs017_igs031.cpp index 9c6e46c010d..91dabdf1771 100644 --- a/src/mame/video/igs017_igs031.cpp +++ b/src/mame/video/igs017_igs031.cpp @@ -73,10 +73,10 @@ GFXDECODE_MEMBER( igs017_igs031_device::gfxinfo ) GFXDECODE_END -const device_type IGS017_IGS031 = device_creator; +DEFINE_DEVICE_TYPE(IGS017_IGS031, igs017_igs031_device, "igs017_031", "IGS017_IGS031") igs017_igs031_device::igs017_igs031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, IGS017_IGS031, "IGS017_IGS031", tag, owner, clock, "igs017_igs031", __FILE__), + : device_t(mconfig, IGS017_IGS031, tag, owner, clock), device_gfx_interface(mconfig, *this, gfxinfo), device_video_interface(mconfig, *this), device_memory_interface(mconfig, *this), diff --git a/src/mame/video/igs017_igs031.h b/src/mame/video/igs017_igs031.h index 39b6290b5b2..6285b7391d1 100644 --- a/src/mame/video/igs017_igs031.h +++ b/src/mame/video/igs017_igs031.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Pierpaolo Prazzoli, Luca Elia +#ifndef MAME_VIDEO_IGS017_IGS031_H +#define MAME_VIDEO_IGS017_IGS031_H + +#pragma once #include "machine/i8255.h" @@ -16,9 +20,6 @@ class igs017_igs031_device : public device_t, public device_video_interface, public device_memory_interface { - //static const gfx_layout tilelayout, spritelayout; - DECLARE_GFXDECODE_MEMBER(gfxinfo); - public: igs017_igs031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -40,26 +41,10 @@ public: DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); - // the gfx roms were often hooked up with the bits backwards, allow us to handle it here to save doing it in every driver. - int m_revbits; - - int m_toggle; - int m_debug_addr; - int m_debug_width; - uint8_t m_video_disable; - tilemap_t *m_fg_tilemap; - tilemap_t *m_bg_tilemap; - std::unique_ptr m_sprites_gfx; - int m_sprites_gfx_size; - int get_nmi_enable() { return m_nmi_enable; } int get_irq_enable() { return m_irq_enable; } - int m_nmi_enable; - int m_irq_enable; - - DECLARE_WRITE8_MEMBER(palram_w); DECLARE_READ8_MEMBER(i8255_r); @@ -90,9 +75,11 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; + DECLARE_GFXDECODE_MEMBER(gfxinfo); + +private: address_space_config m_space_config; -public: required_shared_ptr m_spriteram; required_shared_ptr m_fg_videoram; required_shared_ptr m_bg_videoram; @@ -100,7 +87,22 @@ public: optional_device m_i8255; required_device m_palette; -private: + // the gfx roms were often hooked up with the bits backwards, allow us to handle it here to save doing it in every driver. + int m_revbits; + + int m_toggle; + int m_debug_addr; + int m_debug_width; + uint8_t m_video_disable; + tilemap_t *m_fg_tilemap; + tilemap_t *m_bg_tilemap; + std::unique_ptr m_sprites_gfx; + int m_sprites_gfx_size; + + int m_nmi_enable; + int m_irq_enable; }; -extern const device_type IGS017_IGS031; +DECLARE_DEVICE_TYPE(IGS017_IGS031, igs017_igs031_device) + +#endif // MAME_VIDEO_IGS017_IGS031_H diff --git a/src/mame/video/intv.cpp b/src/mame/video/intv.cpp index 678c820765b..cf1bf324777 100644 --- a/src/mame/video/intv.cpp +++ b/src/mame/video/intv.cpp @@ -23,8 +23,8 @@ uint32_t intv_state::screen_update_intvkbd(screen_device &screen, bitmap_ind16 & if (!m_intvkbd_text_blanked) { uint8_t *videoram = m_videoram; - int xoffset = STIC_OVERSCAN_LEFT_WIDTH*STIC_X_SCALE*INTVKBD_X_SCALE; - int yoffset = STIC_OVERSCAN_TOP_HEIGHT*STIC_Y_SCALE*INTVKBD_Y_SCALE; + int xoffset = stic_device::OVERSCAN_LEFT_WIDTH*stic_device::X_SCALE*INTVKBD_X_SCALE; + int yoffset = stic_device::OVERSCAN_TOP_HEIGHT*stic_device::Y_SCALE*INTVKBD_Y_SCALE; rectangle cursor_rect; m_crtc->cursor_bounds(cursor_rect); diff --git a/src/mame/video/inufuku.cpp b/src/mame/video/inufuku.cpp index c22177f52dc..111ede75c2e 100644 --- a/src/mame/video/inufuku.cpp +++ b/src/mame/video/inufuku.cpp @@ -163,7 +163,7 @@ uint32_t inufuku_state::screen_update_inufuku(screen_device &screen, bitmap_ind1 return 0; } -void inufuku_state::screen_eof_inufuku(screen_device &screen, bool state) +WRITE_LINE_MEMBER(inufuku_state::screen_vblank_inufuku) { // rising edge if (state) diff --git a/src/mame/video/itech8.cpp b/src/mame/video/itech8.cpp index b96353a17ca..48ff06ed009 100644 --- a/src/mame/video/itech8.cpp +++ b/src/mame/video/itech8.cpp @@ -263,7 +263,7 @@ inline void itech8_state::consume_rle(int count) void itech8_state::perform_blit(address_space &space) { - offs_t addr = m_tms34061->m_display.regs[TMS34061_XYADDRESS] | ((m_tms34061->m_display.regs[TMS34061_XYOFFSET] & 0x300) << 8); + offs_t addr = m_tms34061->xyaddress() | ((m_tms34061->xyoffset() & 0x300) << 8); uint8_t shift = (BLITTER_FLAGS & BLITFLAG_SHIFT) ? 4 : 0; int transparent = (BLITTER_FLAGS & BLITFLAG_TRANSPARENT); int ydir = (BLITTER_FLAGS & BLITFLAG_YFLIP) ? -1 : 1; @@ -283,7 +283,7 @@ void itech8_state::perform_blit(address_space &space) logerror("Blit: scan=%d src=%06x @ (%05x) for %dx%d ... flags=%02x\n", m_screen->vpos(), (m_grom_bank << 16) | (BLITTER_ADDRHI << 8) | BLITTER_ADDRLO, - m_tms34061->m_display.regs[TMS34061_XYADDRESS] | ((m_tms34061->m_display.regs[TMS34061_XYOFFSET] & 0x300) << 8), + m_tms34061->xyaddress() | ((m_tms34061->xyoffset() & 0x300) << 8), BLITTER_WIDTH, BLITTER_HEIGHT, BLITTER_FLAGS); /* initialize the fetcher */ @@ -455,7 +455,7 @@ WRITE8_MEMBER(itech8_state::blitter_w) if (BLIT_LOGGING) { logerror("Blit: XY=%1X%04X SRC=%02X%02X%02X SIZE=%3dx%3d FLAGS=%02x", - (m_tms34061->m_display.regs[TMS34061_XYOFFSET] >> 8) & 0x0f, m_tms34061->m_display.regs[TMS34061_XYADDRESS], + (m_tms34061->xyoffset() >> 8) & 0x0f, m_tms34061->xyaddress(), m_grom_bank, m_blitter_data[0], m_blitter_data[1], m_blitter_data[4], m_blitter_data[5], m_blitter_data[2]); @@ -584,7 +584,7 @@ uint32_t itech8_state::screen_update_2layer(screen_device &screen, bitmap_rgb32 m_tms34061->get_display_state(); /* if we're blanked, just fill with black */ - if (m_tms34061->m_display.blanked) + if (m_tms34061->blanked()) { bitmap.fill(rgb_t::black(), cliprect); return 0; @@ -619,7 +619,7 @@ uint32_t itech8_state::screen_update_grmatch(screen_device &screen, bitmap_rgb32 m_tms34061->get_display_state(); /* if we're blanked, just fill with black */ - if (m_tms34061->m_display.blanked) + if (m_tms34061->blanked()) { bitmap.fill(rgb_t::black(), cliprect); return 0; @@ -667,7 +667,7 @@ uint32_t itech8_state::screen_update_2page(screen_device &screen, bitmap_rgb32 & m_tms34061->get_display_state(); /* if we're blanked, just fill with black */ - if (m_tms34061->m_display.blanked) + if (m_tms34061->blanked()) { bitmap.fill(rgb_t::black(), cliprect); return 0; @@ -698,7 +698,7 @@ uint32_t itech8_state::screen_update_2page_large(screen_device &screen, bitmap_r m_tms34061->get_display_state(); /* if we're blanked, just fill with black */ - if (m_tms34061->m_display.blanked) + if (m_tms34061->blanked()) { bitmap.fill(rgb_t::black(), cliprect); return 0; diff --git a/src/mame/video/jalblend.cpp b/src/mame/video/jalblend.cpp index 3f0faeab5f6..650bd99a8f2 100644 --- a/src/mame/video/jalblend.cpp +++ b/src/mame/video/jalblend.cpp @@ -22,11 +22,11 @@ -const device_type JALECO_BLEND = device_creator; +DEFINE_DEVICE_TYPE(JALECO_BLEND, jaleco_blend_device, "jaleco_blend", "Jaleco Blending Device") jaleco_blend_device::jaleco_blend_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, JALECO_BLEND, "Jaleco Blending Device", tag, owner, clock, "jaleco_blend", __FILE__), - m_table(nullptr) + : device_t(mconfig, JALECO_BLEND, tag, owner, clock) + , m_table(nullptr) { } diff --git a/src/mame/video/jalblend.h b/src/mame/video/jalblend.h index 7eb21f82ba8..825f2ab18f1 100644 --- a/src/mame/video/jalblend.h +++ b/src/mame/video/jalblend.h @@ -1,5 +1,10 @@ // license:BSD-3-Clause // copyright-holders:David Haywood, Luca Elia +#ifndef MAME_VIDEO_JALBLEND_H +#define MAME_VIDEO_JALBLEND_H + +#pragma once + class jaleco_blend_device : public device_t { public: @@ -30,4 +35,6 @@ private: int transparent_color); }; -extern const device_type JALECO_BLEND; +DECLARE_DEVICE_TYPE(JALECO_BLEND, jaleco_blend_device) + +#endif // MAME_VIDEO_JALBLEND_H diff --git a/src/mame/video/k001005.cpp b/src/mame/video/k001005.cpp index f677a03d15d..8e44865eb47 100644 --- a/src/mame/video/k001005.cpp +++ b/src/mame/video/k001005.cpp @@ -3,6 +3,8 @@ #include "emu.h" #include "k001005.h" +#include "video/k001006.h" + /*****************************************************************************/ /* Konami K001005 Polygon Renderer (KS10071) */ @@ -1181,10 +1183,10 @@ void k001005_renderer::draw(bitmap_rgb32 &bitmap, const rectangle &cliprect) -const device_type K001005 = device_creator; +DEFINE_DEVICE_TYPE(K001005, k001005_device, "k001005", "K001005 Polygon Renderer") k001005_device::k001005_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K001005, "K001005 Polygon Renderer", tag, owner, clock, "k001005", __FILE__), + : device_t(mconfig, K001005, tag, owner, clock), device_video_interface(mconfig, *this), m_k001006(nullptr), m_fifo(nullptr), diff --git a/src/mame/video/k001005.h b/src/mame/video/k001005.h index e36c3c5a0ee..4a459295d24 100644 --- a/src/mame/video/k001005.h +++ b/src/mame/video/k001005.h @@ -1,14 +1,15 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_K001005_H +#define MAME_VIDEO_K001005_H + #pragma once -#ifndef __K001005_H__ -#define __K001005_H__ -#include #include "video/poly.h" -#include "video/k001006.h" #include "cpu/sharc/sharc.h" +#include + struct k001005_polydata { @@ -44,7 +45,6 @@ class k001005_renderer : public poly_manager { public: k001005_renderer(device_t &parent, screen_device &screen, device_t *k001006); - ~k001005_renderer() {} void reset(); void push_data(uint32_t data); @@ -60,16 +60,16 @@ public: void draw_scanline_tex(int32_t scanline, const extent_t &extent, const k001005_polydata &extradata, int threadid); void draw_scanline_gouraud_blend(int32_t scanline, const extent_t &extent, const k001005_polydata &extradata, int threadid); - static const int POLY_Z = 0; - static const int POLY_FOG = 1; - static const int POLY_BRI = 2; - static const int POLY_U = 3; - static const int POLY_V = 4; - static const int POLY_W = 5; - static const int POLY_A = 2; - static const int POLY_R = 3; - static const int POLY_G = 4; - static const int POLY_B = 5; + static constexpr int POLY_Z = 0; + static constexpr int POLY_FOG = 1; + static constexpr int POLY_BRI = 2; + static constexpr int POLY_U = 3; + static constexpr int POLY_V = 4; + static constexpr int POLY_W = 5; + static constexpr int POLY_A = 2; + static constexpr int POLY_R = 3; + static constexpr int POLY_G = 4; + static constexpr int POLY_B = 5; private: std::unique_ptr m_fb[2]; @@ -99,12 +99,10 @@ private: }; -class k001005_device : public device_t, - public device_video_interface +class k001005_device : public device_t, public device_video_interface { public: k001005_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k001005_device() {} static void set_texel_chip(device_t &device, const char *tag); @@ -138,10 +136,10 @@ private: k001005_renderer *m_renderer; }; -extern const device_type K001005; +DECLARE_DEVICE_TYPE(K001005, k001005_device) #define MCFG_K001005_TEXEL_CHIP(_tag) \ k001005_device::set_texel_chip(*device, _tag); -#endif +#endif // MAME_VIDEO_K001005_H diff --git a/src/mame/video/k001006.cpp b/src/mame/video/k001006.cpp index 9d4b1f62516..54aa9d088cf 100644 --- a/src/mame/video/k001006.cpp +++ b/src/mame/video/k001006.cpp @@ -12,10 +12,10 @@ /* */ /***************************************************************************/ -const device_type K001006 = device_creator; +DEFINE_DEVICE_TYPE(K001006, k001006_device, "k001006", "K001006 Texel Unit") k001006_device::k001006_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K001006, "K001006 Texel Unit", tag, owner, clock, "k001006", __FILE__), + : device_t(mconfig, K001006, tag, owner, clock), m_pal_ram(nullptr), m_unknown_ram(nullptr), m_addr(0), diff --git a/src/mame/video/k001006.h b/src/mame/video/k001006.h index b41696a6b52..8a49eb1c891 100644 --- a/src/mame/video/k001006.h +++ b/src/mame/video/k001006.h @@ -1,8 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_K001006_H +#define MAME_VIDEO_K001006_H + #pragma once -#ifndef __K001006_H__ -#define __K001006_H__ @@ -49,6 +50,7 @@ private: extern const device_type K001006; +DECLARE_DEVICE_TYPE(K001006, k001006_device) #define MCFG_K001006_GFX_REGION(_tag) \ @@ -57,4 +59,4 @@ extern const device_type K001006; #define MCFG_K001006_TEX_LAYOUT(x) \ k001006_device::set_tex_layout(*device, x); -#endif +#endif // MAME_VIDEO_K001006_H diff --git a/src/mame/video/k001604.cpp b/src/mame/video/k001604.cpp index 6735d79dad1..39955b2a803 100644 --- a/src/mame/video/k001604.cpp +++ b/src/mame/video/k001604.cpp @@ -15,10 +15,10 @@ #define K001604_NUM_TILES_LAYER0 16384 #define K001604_NUM_TILES_LAYER1 4096 -const device_type K001604 = device_creator; +DEFINE_DEVICE_TYPE(K001604, k001604_device, "k001604_device", "K001604 2D tilemaps + 2x ROZ") k001604_device::k001604_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K001604, "K001604 2D tilemaps + 2x ROZ", tag, owner, clock, "k001604", __FILE__), + : device_t(mconfig, K001604, tag, owner, clock), device_gfx_interface(mconfig, *this, nullptr), m_layer_size(0), m_roz_size(0), @@ -37,6 +37,9 @@ k001604_device::k001604_device(const machine_config &mconfig, const char *tag, d void k001604_device::device_start() { + if (!palette().device().started()) + throw device_missing_dependencies(); + static const gfx_layout k001604_char_layout_layer_8x8 = { 8, 8, diff --git a/src/mame/video/k001604.h b/src/mame/video/k001604.h index d149b9460a8..1bbe1278ae2 100644 --- a/src/mame/video/k001604.h +++ b/src/mame/video/k001604.h @@ -1,15 +1,15 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_K001604_H +#define MAME_VIDEO_K001604_H + #pragma once -#ifndef __K001604_H__ -#define __K001604_H__ class k001604_device : public device_t, public device_gfx_interface { public: k001604_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k001604_device() {} // static configuration static void set_layer_size(device_t &device, int size) { downcast(device).m_layer_size = size; } @@ -54,7 +54,7 @@ private: TILE_GET_INFO_MEMBER(tile_info_layer_roz); }; -extern const device_type K001604; +DECLARE_DEVICE_TYPE(K001604, k001604_device) #define MCFG_K001604_LAYER_SIZE(_size) \ @@ -72,4 +72,4 @@ extern const device_type K001604; #define MCFG_K001604_PALETTE(_palette_tag) \ MCFG_GFX_PALETTE(_palette_tag) -#endif +#endif // MAME_VIDEO_K001604_H diff --git a/src/mame/video/k007121.cpp b/src/mame/video/k007121.cpp index 312c2d0b4b1..04a367572e5 100644 --- a/src/mame/video/k007121.cpp +++ b/src/mame/video/k007121.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Fabio Priuli,Acho A. Tang, R. Belmont +// copyright-holders:Fabio Priuli, Acho A. Tang, R. Belmont /* Konami 007121 ------ @@ -119,10 +119,10 @@ control registers #define LOG(x) do { if (VERBOSE) logerror x; } while (0) -const device_type K007121 = device_creator; +DEFINE_DEVICE_TYPE(K007121, k007121_device, "k007121", "K007121 Sprite/Tilemap Controller") k007121_device::k007121_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K007121, "K007121 Sprite/Tilemap Controller", tag, owner, clock, "k007121", __FILE__) + : device_t(mconfig, K007121, tag, owner, clock) , m_flipscreen(0) , m_palette(*this, finder_base::DUMMY_TAG) { @@ -219,7 +219,7 @@ WRITE8_MEMBER( k007121_device::ctrl_w ) * */ -void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, palette_device &palette, +void k007121_device::sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, device_palette_interface &palette, const uint8_t *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, uint32_t pri_mask, bool is_flakatck ) { // gfx_element *gfx = gfxs[chip]; diff --git a/src/mame/video/k007121.h b/src/mame/video/k007121.h index 22948934bf8..74aeaf5b7d4 100644 --- a/src/mame/video/k007121.h +++ b/src/mame/video/k007121.h @@ -1,14 +1,15 @@ // license:BSD-3-Clause // copyright-holders:Fabio Priuli,Acho A. Tang, R. Belmont +#ifndef MAME_VIDEO_K007121_H +#define MAME_VIDEO_K007121_H + #pragma once -#ifndef __K007121_H__ -#define __K007121_H__ + class k007121_device : public device_t { public: k007121_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k007121_device() {} static void static_set_palette_tag(device_t &device, const char *tag); @@ -17,7 +18,7 @@ public: /* shall we move source in the interface? */ /* also notice that now we directly pass *gfx[chip] instead of **gfx !! */ - void sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, palette_device &palette, const uint8_t *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, uint32_t pri_mask, bool is_flakatck = false ); + void sprites_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, device_palette_interface &palette, const uint8_t *source, int base_color, int global_x_offset, int bank_base, bitmap_ind8 &priority_bitmap, uint32_t pri_mask, bool is_flakatck = false ); protected: // device-level overrides @@ -31,7 +32,7 @@ private: required_device m_palette; }; -extern const device_type K007121; +DECLARE_DEVICE_TYPE(K007121, k007121_device) #define MCFG_K007121_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, K007121, 0) @@ -39,4 +40,4 @@ extern const device_type K007121; #define MCFG_K007121_PALETTE(_palette_tag) \ k007121_device::static_set_palette_tag(*device, "^" _palette_tag); -#endif +#endif // MAME_VIDEO_K007121_H diff --git a/src/mame/video/k007342.cpp b/src/mame/video/k007342.cpp index 65fa0dc9ae1..5290b1636e6 100644 --- a/src/mame/video/k007342.cpp +++ b/src/mame/video/k007342.cpp @@ -35,10 +35,10 @@ control registers #define VERBOSE 0 #define LOG(x) do { if (VERBOSE) logerror x; } while (0) -const device_type K007342 = device_creator; +DEFINE_DEVICE_TYPE(K007342, k007342_device, "k007342", "K007342 Video Controller") k007342_device::k007342_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K007342, "K007342 Video Controller", tag, owner, clock, "k007342", __FILE__), + : device_t(mconfig, K007342, tag, owner, clock), m_ram(nullptr), m_scroll_ram(nullptr), m_videoram_0(nullptr), diff --git a/src/mame/video/k007342.h b/src/mame/video/k007342.h index f3bc0439398..a25e16f244d 100644 --- a/src/mame/video/k007342.h +++ b/src/mame/video/k007342.h @@ -1,8 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Fabio Priuli,Acho A. Tang, R. Belmont +#ifndef MAME_VIDEO_K007342_H +#define MAME_VIDEO_K007342_H + #pragma once -#ifndef __K007342_H__ -#define __K007342_H__ + typedef device_delegate k007342_delegate; @@ -10,7 +12,6 @@ class k007342_device : public device_t { public: k007342_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k007342_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -55,7 +56,7 @@ private: void get_tile_info( tile_data &tileinfo, int tile_index, int layer, uint8_t *cram, uint8_t *vram ); }; -extern const device_type K007342; +DECLARE_DEVICE_TYPE(K007342, k007342_device) #define MCFG_K007342_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, K007342, 0) @@ -74,4 +75,4 @@ extern const device_type K007342; // function definition for a callback #define K007342_CALLBACK_MEMBER(_name) void _name(int layer, int bank, int *code, int *color, int *flags) -#endif +#endif // MAME_VIDEO_K007342_H diff --git a/src/mame/video/k007420.cpp b/src/mame/video/k007420.cpp index 30c735f7248..235ee5c222c 100644 --- a/src/mame/video/k007420.cpp +++ b/src/mame/video/k007420.cpp @@ -16,10 +16,10 @@ and a variable amount of ROM. Nothing is known about its external interface. #define K007420_SPRITERAM_SIZE 0x200 -const device_type K007420 = device_creator; +DEFINE_DEVICE_TYPE(K007420, k007420_device, "k007420", "K007420 Sprite Generator") k007420_device::k007420_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K007420, "K007420 Sprite Generator", tag, owner, clock, "k007420", __FILE__) + : device_t(mconfig, K007420, tag, owner, clock) , m_ram(nullptr) , m_flipscreen(0) , m_palette(*this, finder_base::DUMMY_TAG) diff --git a/src/mame/video/k007420.h b/src/mame/video/k007420.h index 637adf200ab..c4bb9a318c6 100644 --- a/src/mame/video/k007420.h +++ b/src/mame/video/k007420.h @@ -1,8 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Fabio Priuli,Acho A. Tang, R. Belmont +#ifndef MAME_VIDEO_K007420_H +#define MAME_VIDEO_K007420_H + #pragma once -#ifndef __K007420_H__ -#define __K007420_H__ + typedef device_delegate k007420_delegate; @@ -10,7 +12,6 @@ class k007420_device : public device_t { public: k007420_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k007420_device() {} static void static_set_palette_tag(device_t &device, const char *tag); static void static_set_bank_limit(device_t &device, int limit) { downcast(device).m_banklimit = limit; } @@ -35,7 +36,7 @@ private: k007420_delegate m_callback; }; -extern const device_type K007420; +DECLARE_DEVICE_TYPE(K007420, k007420_device) #define MCFG_K007420_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, K007420, 0) @@ -53,4 +54,4 @@ extern const device_type K007420; #define K007420_CALLBACK_MEMBER(_name) void _name(int *code, int *color) -#endif +#endif // MAME_VIDEO_K007420_H diff --git a/src/mame/video/k037122.cpp b/src/mame/video/k037122.cpp index 5e25e19a897..9939cdaa24f 100644 --- a/src/mame/video/k037122.cpp +++ b/src/mame/video/k037122.cpp @@ -14,10 +14,10 @@ Konami 037122 #define K037122_NUM_TILES 16384 -const device_type K037122 = device_creator; +DEFINE_DEVICE_TYPE(K037122, k037122_device, "k037122", "K037122 2D Tilemap") k037122_device::k037122_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K037122, "K037122 2D Tilemap", tag, owner, clock, "k037122", __FILE__), + : device_t(mconfig, K037122, tag, owner, clock), device_video_interface(mconfig, *this), device_gfx_interface(mconfig, *this, nullptr), m_tile_ram(nullptr), @@ -33,6 +33,9 @@ k037122_device::k037122_device(const machine_config &mconfig, const char *tag, d void k037122_device::device_start() { + if (!palette().device().started()) + throw device_missing_dependencies(); + static const gfx_layout k037122_char_layout = { 8, 8, diff --git a/src/mame/video/k037122.h b/src/mame/video/k037122.h index 317627d8783..dd0dff6f216 100644 --- a/src/mame/video/k037122.h +++ b/src/mame/video/k037122.h @@ -1,8 +1,8 @@ // license:BSD-3-Clause -// copyright-holders:Fabio Priuli,Acho A. Tang, R. Belmont +// copyright-holders:Fabio Priuli, Acho A. Tang, R. Belmont +#ifndef MAME_VIDEO_K037122_H +#define MAME_VIDEO_K037122_H #pragma once -#ifndef __K037122_H__ -#define __K037122_H__ class k037122_device : public device_t, public device_video_interface, @@ -10,7 +10,6 @@ class k037122_device : public device_t, { public: k037122_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k037122_device() {} // static configuration static void static_set_gfx_index(device_t &device, int index) { downcast(device).m_gfx_index = index; } @@ -43,7 +42,7 @@ private: void update_palette_color( uint32_t palette_base, int color ); }; -extern const device_type K037122; +DECLARE_DEVICE_TYPE(K037122, k037122_device) #define MCFG_K037122_ADD(_tag, _screen) \ MCFG_DEVICE_ADD(_tag, K037122, 0) \ @@ -52,4 +51,4 @@ extern const device_type K037122; #define MCFG_K037122_PALETTE(_palette_tag) \ MCFG_GFX_PALETTE(_palette_tag) -#endif +#endif // MAME_VIDEO_K037122_H diff --git a/src/mame/video/k051316.cpp b/src/mame/video/k051316.cpp index 22b78747023..18fecde3e1e 100644 --- a/src/mame/video/k051316.cpp +++ b/src/mame/video/k051316.cpp @@ -41,9 +41,10 @@ control registers #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" -const device_type K051316 = device_creator; + +DEFINE_DEVICE_TYPE(K051316, k051316_device, "k051316", "K051316 PSAC") const gfx_layout k051316_device::charlayout4 = @@ -104,7 +105,7 @@ GFXDECODE_END k051316_device::k051316_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K051316, "K051316 PSAC", tag, owner, clock, "k051316", __FILE__), + : device_t(mconfig, K051316, tag, owner, clock), device_gfx_interface(mconfig, *this, gfxinfo), m_zoom_rom(*this, DEVICE_SELF), m_dx(0), @@ -150,6 +151,9 @@ void k051316_device::set_bpp(device_t &device, int bpp) void k051316_device::device_start() { + if (!palette().device().started()) + throw device_missing_dependencies(); + decode_gfx(); gfx(0)->set_colors(palette().entries() / gfx(0)->depth()); diff --git a/src/mame/video/k051316.h b/src/mame/video/k051316.h index 0c3670a1fa2..dcf0a380973 100644 --- a/src/mame/video/k051316.h +++ b/src/mame/video/k051316.h @@ -1,8 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Fabio Priuli,Acho A. Tang, R. Belmont +#ifndef MAME_VIDEO_K051316_H +#define MAME_VIDEO_K051316_H + #pragma once -#ifndef __K051316_H__ -#define __K051316_H__ + typedef device_delegate k051316_cb_delegate; #define K051316_CB_MEMBER(_name) void _name(int *code, int *color, int *flags) @@ -24,12 +26,10 @@ typedef device_delegate k051316_cb_del k051316_device::set_wrap(*device, _wrap); -class k051316_device : public device_t, - public device_gfx_interface +class k051316_device : public device_t, public device_gfx_interface { public: k051316_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k051316_device() {} static const gfx_layout charlayout4; static const gfx_layout charlayout7; @@ -95,6 +95,6 @@ private: TILE_GET_INFO_MEMBER(get_tile_info); }; -extern const device_type K051316; +DECLARE_DEVICE_TYPE(K051316, k051316_device) -#endif +#endif // MAME_VIDEO_K051316_H diff --git a/src/mame/video/k051733.cpp b/src/mame/video/k051733.cpp index 6bd7f99d412..25feef68b02 100644 --- a/src/mame/video/k051733.cpp +++ b/src/mame/video/k051733.cpp @@ -60,12 +60,13 @@ reads from 0x0006, and only uses bit 1. #include "konami_helper.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" -const device_type K051733 = device_creator; + +DEFINE_DEVICE_TYPE(K051733, k051733_device, "k051733", "K051733 Protection") k051733_device::k051733_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K051733, "K051733 Protection", tag, owner, clock, "k051733", __FILE__), + : device_t(mconfig, K051733, tag, owner, clock), //m_ram[0x20], m_rng(0) { diff --git a/src/mame/video/k051733.h b/src/mame/video/k051733.h index f24106dedd1..e743409cb53 100644 --- a/src/mame/video/k051733.h +++ b/src/mame/video/k051733.h @@ -1,14 +1,15 @@ // license:BSD-3-Clause // copyright-holders:Fabio Priuli,Acho A. Tang, R. Belmont +#ifndef MAME_VIDEO_K051733_H +#define MAME_VIDEO_K051733_H + #pragma once -#ifndef __K051733_H__ -#define __K051733_H__ + class k051733_device : public device_t { public: k051733_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k051733_device() {} DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); @@ -23,9 +24,9 @@ private: uint8_t m_rng; }; -extern const device_type K051733; +DECLARE_DEVICE_TYPE(K051733, k051733_device) #define MCFG_K051733_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, K051733, 0) -#endif +#endif // MAME_VIDEO_K051733_H diff --git a/src/mame/video/k051960.cpp b/src/mame/video/k051960.cpp index b0fb6d5893e..cc90a4d4619 100644 --- a/src/mame/video/k051960.cpp +++ b/src/mame/video/k051960.cpp @@ -61,9 +61,10 @@ memory map: #include "k051960.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" -const device_type K051960 = device_creator; + +DEFINE_DEVICE_TYPE(K051960, k051960_device, "k051960", "K051960 Sprite Generator") const gfx_layout k051960_device::spritelayout = { @@ -126,7 +127,7 @@ GFXDECODE_END k051960_device::k051960_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K051960, "K051960 Sprite Generator", tag, owner, clock, "k051960", __FILE__) + : device_t(mconfig, K051960, tag, owner, clock) , device_gfx_interface(mconfig, *this, gfxinfo) , m_ram(nullptr) , m_sprite_rom(*this, DEVICE_SELF) @@ -184,6 +185,8 @@ void k051960_device::device_start() // make sure our screen is started if (!m_screen->started()) throw device_missing_dependencies(); + if (!palette().device().started()) + throw device_missing_dependencies(); // allocate scanline timer and start at first scanline m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(k051960_device::scanline_callback), this)); diff --git a/src/mame/video/k051960.h b/src/mame/video/k051960.h index caab61d3975..c9b83843311 100644 --- a/src/mame/video/k051960.h +++ b/src/mame/video/k051960.h @@ -34,8 +34,7 @@ typedef device_delegate static devcb_base &set_irq_handler(device_t &device, _Object object) - { return downcast(device).m_irq_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) + { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } - template static devcb_base &set_nmi_handler(device_t &device, _Object object) - { return downcast(device).m_nmi_handler.set_callback(object); } + template static devcb_base &set_nmi_handler(device_t &device, Object &&cb) + { return downcast(device).m_nmi_handler.set_callback(std::forward(cb)); } // static configuration static void set_k051960_callback(device_t &device, k051960_cb_delegate callback) { downcast(device).m_k051960_cb = callback; } @@ -111,6 +109,6 @@ private: int k051960_fetchromdata( int byte ); }; -extern const device_type K051960; +DECLARE_DEVICE_TYPE(K051960, k051960_device) #endif // MAME_VIDEO_K051960_H diff --git a/src/mame/video/k052109.cpp b/src/mame/video/k052109.cpp index 3dbab67b8c7..a8fc8c2223e 100644 --- a/src/mame/video/k052109.cpp +++ b/src/mame/video/k052109.cpp @@ -124,9 +124,10 @@ to through the chip. #include "k052109.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" -const device_type K052109 = device_creator; + +DEFINE_DEVICE_TYPE(K052109, k052109_device, "k052109", "K052109 Tilemap Generator") const gfx_layout k052109_device::charlayout = { @@ -160,7 +161,7 @@ GFXDECODE_END k052109_device::k052109_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K052109, "K052109 Tilemap Generator", tag, owner, clock, "k052109", __FILE__), + : device_t(mconfig, K052109, tag, owner, clock), device_gfx_interface(mconfig, *this, gfxinfo), m_ram(nullptr), m_videoram_F(nullptr), diff --git a/src/mame/video/k052109.h b/src/mame/video/k052109.h index e31adc250a0..0deacf9b467 100644 --- a/src/mame/video/k052109.h +++ b/src/mame/video/k052109.h @@ -2,6 +2,7 @@ // copyright-holders:Fabio Priuli,Acho A. Tang, R. Belmont #ifndef MAME_VIDEO_K052109_H #define MAME_VIDEO_K052109_H + #pragma once #include "screen.h" @@ -33,8 +34,8 @@ public: k052109_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~k052109_device() {} - template static devcb_base &set_irq_handler(device_t &device, _Object object) - { return downcast(device).m_irq_handler.set_callback(object); } + template static devcb_base &set_irq_handler(device_t &device, Object &&cb) + { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } static void set_k052109_callback(device_t &device, k052109_cb_delegate callback) { downcast(device).m_k052109_cb = callback; } static void set_ram(device_t &device, bool ram); @@ -116,6 +117,6 @@ private: void tileflip_reset(); }; -extern const device_type K052109; +DECLARE_DEVICE_TYPE(K052109, k052109_device) #endif // MAME_VIDEO_K052109_H diff --git a/src/mame/video/k053244_k053245.cpp b/src/mame/video/k053244_k053245.cpp index 186942fa794..9e96492e276 100644 --- a/src/mame/video/k053244_k053245.cpp +++ b/src/mame/video/k053244_k053245.cpp @@ -33,7 +33,7 @@ main ram and the buffer. #include "konami_helper.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" @@ -41,7 +41,8 @@ main ram and the buffer. DEVICE INTERFACE *****************************************************************************/ -const device_type K053244 = device_creator; +DEFINE_DEVICE_TYPE(K053244, k05324x_device, "k05324x", "K053244/053245 Sprite Generator") +device_type const K053245 = K053244; const gfx_layout k05324x_device::spritelayout = { @@ -82,7 +83,7 @@ GFXDECODE_END k05324x_device::k05324x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K053244, "K053244 & 053245 Sprite Generator", tag, owner, clock, "k05324x", __FILE__), + : device_t(mconfig, K053244, tag, owner, clock), device_gfx_interface(mconfig, *this, gfxinfo), m_ram(nullptr), m_buffer(nullptr), @@ -118,6 +119,9 @@ void k05324x_device::set_bpp(device_t &device, int bpp) void k05324x_device::device_start() { + if (!palette().device().started()) + throw device_missing_dependencies(); + /* decode the graphics */ decode_gfx(); gfx(0)->set_colors(palette().entries() / gfx(0)->depth()); diff --git a/src/mame/video/k053244_k053245.h b/src/mame/video/k053244_k053245.h index f677e0b6653..e0176b39079 100644 --- a/src/mame/video/k053244_k053245.h +++ b/src/mame/video/k053244_k053245.h @@ -1,8 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_K053244_K053245_H +#define MAME_VIDEO_K053244_K053245_H + #pragma once -#ifndef __K053244_K053245_H__ -#define __K053244_K053245_H__ typedef device_delegate k05324x_cb_delegate; @@ -19,8 +20,7 @@ typedef device_delegate k05324x_cb_ k05324x_device::set_offsets(*device, _xoffs, _yoffs); -class k05324x_device : public device_t, - public device_gfx_interface +class k05324x_device : public device_t, public device_gfx_interface { static const gfx_layout spritelayout; static const gfx_layout spritelayout_6bpp; @@ -29,7 +29,6 @@ class k05324x_device : public device_t, public: k05324x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k05324x_device() {} // static configuration static void set_bpp(device_t &device, int bpp); @@ -78,7 +77,7 @@ private: }; -extern const device_type K053244; -#define K053245 K053244 +DECLARE_DEVICE_TYPE(K053244, k05324x_device) +extern device_type const K053245; -#endif +#endif // MAME_VIDEO_K053244_K053245_H diff --git a/src/mame/video/k053246_k053247_k055673.cpp b/src/mame/video/k053246_k053247_k055673.cpp index bfb4885de65..4948c7b8f60 100644 --- a/src/mame/video/k053246_k053247_k055673.cpp +++ b/src/mame/video/k053246_k053247_k055673.cpp @@ -39,7 +39,7 @@ The sprite RAM format is very similar to the 053245. #include "konami_helper.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" /***************************************************************************** @@ -162,7 +162,7 @@ READ16_MEMBER( k053247_device::k055673_5bpp_rom_word_r ) // 5bpp romofs /= 2; return ROM8[romofs]; default: - LOG(("55673_rom_word_r: Unknown read offset %x\n", offset)); + LOG("55673_rom_word_r: Unknown read offset %x\n", offset); break; } @@ -186,6 +186,20 @@ READ16_MEMBER( k053247_device::k055673_rom_word_r ) return ROM[romofs + (offset & 0x3)]; } +READ16_MEMBER( k053247_device::k055673_ps_rom_word_r ) +{ + uint8_t *ROM = (uint8_t *)space.machine().root_device().memregion(m_memory_region)->base(); + int romofs; + int magic = (offset & 1); + + romofs = m_kx46_regs[6] << 16 | m_kx46_regs[7] << 8 | m_kx46_regs[4]; + offset = ((offset & 4) >> 1); + + int finoffs = (romofs * 2) + (offset * 2) + magic; + + return ROM[finoffs+2] | (ROM[finoffs]<<8); +} + READ8_MEMBER( k053247_device::k053246_r ) { if (m_objcha_line == ASSERT_LINE) @@ -200,7 +214,7 @@ READ8_MEMBER( k053247_device::k053246_r ) } else { -// LOG(("%04x: read from unknown 053246 address %x\n", space.device().safe_pc(), offset)); +// LOG("%04x: read from unknown 053246 address %x\n", space.device().safe_pc(), offset); return 0; } } @@ -900,10 +914,10 @@ void k053247_device::zdrawgfxzoom32GP( -const device_type K055673 = device_creator; +DEFINE_DEVICE_TYPE(K055673, k055673_device, "k055673", "K055673 Sprite Generator") k055673_device::k055673_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : k053247_device(mconfig, K055673, "K053246 & K055673 Sprite Generator", tag, owner, clock, "k055673", __FILE__) + : k053247_device(mconfig, K055673, tag, owner, clock) { } @@ -914,6 +928,9 @@ k055673_device::k055673_device(const machine_config &mconfig, const char *tag, d void k055673_device::device_start() { + if (!palette().device().started()) + throw device_missing_dependencies(); + int gfx_index = 0; uint32_t total; @@ -960,6 +977,16 @@ void k055673_device::device_start() 12*8*9, 12*8*10, 12*8*11, 12*8*12, 12*8*13, 12*8*14, 12*8*15 }, 16*16*6 }; + static const gfx_layout spritelayout5 = /* Pirate Ship layout */ + { + 16,16, + 0, + 4, + { 24, 8, 16, 0 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39 }, + { 0, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960 }, + 16*16*4 + }; uint8_t *s1, *s2, *d; long i; uint16_t *alt_k055673_rom; @@ -997,6 +1024,11 @@ void k055673_device::device_start() konami_decode_gfx(*this, gfx_index, (uint8_t *)alt_k055673_rom, total, &spritelayout2, 4); break; + case K055673_LAYOUT_PS: + total = machine().root_device().memregion(m_memory_region)->bytes() / (16*16/2); + konami_decode_gfx(*this, gfx_index, (uint8_t *)alt_k055673_rom, total, &spritelayout5, 4); + break; + case K055673_LAYOUT_LE2: total = machine().root_device().memregion(m_memory_region)->bytes() / (16*16); konami_decode_gfx(*this, gfx_index, (uint8_t *)alt_k055673_rom, total, &spritelayout3, 8); @@ -1035,19 +1067,16 @@ void k055673_device::device_start() -const device_type K053246 = device_creator; +DEFINE_DEVICE_TYPE(K053247, k053247_device, "k053247", "K053246/K053247 Sprite Generator") +device_type const K053246 = K053247; k053247_device::k053247_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K053246, "K053246 & K053247 Sprite Generator", tag, owner, clock, "k053247", __FILE__), - device_video_interface(mconfig, *this), - device_gfx_interface(mconfig, *this), - m_gfx_num(0) + : k053247_device(mconfig, K053247, tag, owner, clock) { - clear_all(); } -k053247_device::k053247_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +k053247_device::k053247_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), device_video_interface(mconfig, *this), device_gfx_interface(mconfig, *this, nullptr), m_gfx_num(0) @@ -1061,6 +1090,9 @@ k053247_device::k053247_device(const machine_config &mconfig, device_type type, void k053247_device::device_start() { + if (!palette().device().started()) + throw device_missing_dependencies(); + uint32_t total; static const gfx_layout spritelayout = { diff --git a/src/mame/video/k053246_k053247_k055673.h b/src/mame/video/k053246_k053247_k055673.h index 339a6ebaf6c..4782ca54a35 100644 --- a/src/mame/video/k053246_k053247_k055673.h +++ b/src/mame/video/k053246_k053247_k055673.h @@ -34,7 +34,7 @@ typedef device_delegate k05324 #define K055673_LAYOUT_RNG 4 #define K055673_LAYOUT_LE2 8 #define K055673_LAYOUT_GX6 6 - +#define K055673_LAYOUT_PS 7 /* Callback procedures for non-standard shadows: @@ -65,9 +65,6 @@ class k053247_device : public device_t, { public: k053247_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - k053247_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - - ~k053247_device() { } // static configuration static void set_k053247_callback(device_t &device, k053247_cb_delegate callback) { downcast(device).m_k053247_cb = callback; } @@ -83,6 +80,7 @@ public: void clear_all(); DECLARE_READ16_MEMBER( k055673_rom_word_r ); + DECLARE_READ16_MEMBER( k055673_ps_rom_word_r ); DECLARE_READ16_MEMBER( k055673_5bpp_rom_word_r ); DECLARE_READ8_MEMBER( k053247_r ); @@ -462,23 +460,18 @@ public: } - - - - template - void k053247_sprites_draw_common( _BitmapClass &bitmap, const rectangle &cliprect ); - - protected: + k053247_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; -private: - + template void k053247_sprites_draw_common( _BitmapClass &bitmap, const rectangle &cliprect ); }; -extern const device_type K053246; +DECLARE_DEVICE_TYPE(K053247, k053247_device) +extern device_type const K053246; class k055673_device : public k053247_device { @@ -494,7 +487,7 @@ private: }; -extern const device_type K055673; +DECLARE_DEVICE_TYPE(K055673, k055673_device) #define MCFG_K053246_SET_SCREEN MCFG_VIDEO_SET_SCREEN diff --git a/src/mame/video/k053250.cpp b/src/mame/video/k053250.cpp index 09ad0464add..f3c393cecf6 100644 --- a/src/mame/video/k053250.cpp +++ b/src/mame/video/k053250.cpp @@ -5,10 +5,10 @@ #include "screen.h" -const device_type K053250 = device_creator; +DEFINE_DEVICE_TYPE(K053250, k053250_device, "k053250", "K053250 LVC") k053250_device::k053250_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K053250, "K053250 LVC", tag, owner, clock, "k053250", __FILE__), + : device_t(mconfig, K053250, tag, owner, clock), device_gfx_interface(mconfig, *this), device_video_interface(mconfig, *this), m_rom(*this, DEVICE_SELF) diff --git a/src/mame/video/k053250.h b/src/mame/video/k053250.h index c4980bc058e..3365c7f4dbe 100644 --- a/src/mame/video/k053250.h +++ b/src/mame/video/k053250.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef __K053250_H__ -#define __K053250_H__ +#ifndef MAME_VIDEO_K053250_H +#define MAME_VIDEO_K053250_H + +#pragma once // // Konami 053250 road generator @@ -57,6 +59,6 @@ private: uint32_t clipmask, uint32_t wrapmask, uint32_t orientation, bitmap_ind8 &priority, uint8_t pri); }; -extern const device_type K053250; +DECLARE_DEVICE_TYPE(K053250, k053250_device) -#endif +#endif // MAME_VIDEO_K053250_H diff --git a/src/mame/video/k053250_ps.cpp b/src/mame/video/k053250_ps.cpp new file mode 100644 index 00000000000..9d607f5cba6 --- /dev/null +++ b/src/mame/video/k053250_ps.cpp @@ -0,0 +1,597 @@ +// license:BSD-3-Clause +// copyright-holders:Olivier Galibert +#include "emu.h" +#include "k053250_ps.h" +#include "screen.h" + +/* + + Registers + + 0 + xxxx xxxx X-Scroll [7:0] + + 1 + xxxx xxxx X-Scroll [15:8] + + 2 + xxxx xxxx Y-Scroll [7:0] + + 3 + xxxx xxxx Y-Scroll [15:8] + + 4 Control + .... ...x 0:Swap XY 1:Normal + .... ..x. Interrupt related? + .... .x.. 0:Disable 1:Enable source clipping + .... x... Flip X + ...x .... Flip Y + xxx. .... Wrap control + + 5 + .... .... Unknown + + 6 + xxxx xxxx ROM access address [7:0] + + 7 + xxxx xxxx ROM access address [15:8] + */ + +DEFINE_DEVICE_TYPE(K053250PS, k053250ps_device, "k053250ps", "K053250PS LVC") + +k053250ps_device::k053250ps_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, K053250PS, tag, owner, clock), + device_gfx_interface(mconfig, *this), + device_video_interface(mconfig, *this), + m_dmairq_cb(*this), + m_rom(*this, DEVICE_SELF) +{ +} + +void k053250ps_device::static_set_offsets(device_t &device, int offx, int offy) +{ + k053250ps_device &dev = downcast(device); + dev.m_offx = offx; + dev.m_offy = offy; +} + +void k053250ps_device::unpack_nibbles() +{ + m_unpacked_rom.resize(m_rom.length()*2); + + for (int i = 0; i < m_rom.length(); i++) + { + m_unpacked_rom[2*i] = m_rom[i] >> 4; + m_unpacked_rom[2*i+1] = m_rom[i] & 0xf; + } +} + +void k053250ps_device::device_start() +{ + m_ram.resize(0x6000/2); + m_buffer[0] = &m_ram[0x0000]; + m_buffer[1] = &m_ram[0x0800]; + +// m_buffer[0] = &m_ram[0x2000]; +// m_buffer[1] = &m_ram[0x2800]; + + unpack_nibbles(); + + save_item(NAME(m_ram)); + save_item(NAME(m_regs)); + save_item(NAME(m_page)); + save_item(NAME(m_dmairq_on)); + + m_dmairq_cb.resolve_safe(); + m_timer_lvcdma = timer_alloc(0); +} + +void k053250ps_device::device_reset() +{ + m_page = 0; + memset(m_regs, 0, sizeof(m_regs)); + + m_timer_lvcdma_state = OD_IDLE; + m_timer_lvcdma->adjust(attotime::never); + + m_dmairq_on = false; +} + +// utility function to render a clipped scanline vertically or horizontally +inline void k053250ps_device::pdraw_scanline32(bitmap_rgb32 &bitmap, const pen_t *pal_base, uint8_t *source, + const rectangle &cliprect, int linepos, int scroll, int zoom, + uint32_t clipmask, uint32_t wrapmask, uint32_t orientation, bitmap_ind8 &priority, uint8_t pri) +{ +// a sixteen-bit fixed point resolution should be adequate to our application +#define FIXPOINT_PRECISION 16 +#define FIXPOINT_PRECISION_HALF (1<<(FIXPOINT_PRECISION-1)) + + int end_pixel, flip, dst_min, dst_max, dst_start, dst_length; + + uint32_t src_wrapmask; + uint8_t *src_base; + int src_fx, src_fdx; + int pix_data, dst_offset; + uint8_t *pri_base; + uint32_t *dst_base; + int dst_adv; + + // flip X and flip Y also switch role when the X Y coordinates are swapped + if (!(orientation & ORIENTATION_SWAP_XY)) + { + flip = orientation & ORIENTATION_FLIP_X; + dst_min = cliprect.min_x; + dst_max = cliprect.max_x; + } + else + { + flip = orientation & ORIENTATION_FLIP_Y; + dst_min = cliprect.min_y; + dst_max = cliprect.max_y; + } + + if (clipmask) + { + // reject scanlines that are outside of the target bitmap's right(bottom) clip boundary + dst_start = -scroll; + if (dst_start > dst_max) return; + + // calculate target length + dst_length = clipmask + 1; + if (zoom) dst_length = (dst_length << 6) / zoom; + + // reject scanlines that are outside of the target bitmap's left(top) clip boundary + end_pixel = dst_start + dst_length - 1; + if (end_pixel < dst_min) return; + + // clip scanline tail + if ((end_pixel -= dst_max) > 0) dst_length -= end_pixel; + + // reject 0-length scanlines + if (dst_length <= 0) return; + + // calculate zoom factor + src_fdx = zoom << (FIXPOINT_PRECISION-6); + + // clip scanline head + end_pixel = dst_min; + if ((end_pixel -= dst_start) > 0) + { + // chop scanline to the correct length and move target start location to the left(top) clip boundary + dst_length -= end_pixel; + dst_start = dst_min; + + // and skip the source for the left(top) clip region + src_fx = end_pixel * src_fdx + FIXPOINT_PRECISION_HALF; + } + else + // the point five bias is to ensure even distribution of stretched or shrinked pixels + src_fx = FIXPOINT_PRECISION_HALF; + + // adjust flipped source + if (flip) + { + // start from the target's clipped end if the scanline is flipped + dst_start = dst_max + dst_min - dst_start - (dst_length-1); + + // and move source start location to the opposite end + src_fx += (dst_length-1) * src_fdx - 1; + src_fdx = -src_fdx; + } + } + else + { + // draw wrapped scanline at virtual bitmap boundary when source clipping is off + dst_start = dst_min; + dst_length = dst_max - dst_min + 1; // target scanline spans the entire visible area + src_fdx = zoom << (FIXPOINT_PRECISION-6); + + // pre-advance source for the clipped region + if (!flip) + src_fx = (scroll + dst_min) * src_fdx + FIXPOINT_PRECISION_HALF; + else + { + src_fx = (scroll + dst_max) * src_fdx + FIXPOINT_PRECISION_HALF-1; + src_fdx = -src_fdx; + } + } + + if (!(orientation & ORIENTATION_SWAP_XY)) + { + // calculate target increment for horizontal scanlines which is exactly one + dst_adv = 1; + dst_offset = dst_length; + pri_base = &priority.pix8(linepos, dst_start + dst_offset); + dst_base = &bitmap.pix32(linepos, dst_start + dst_length); + } + else + { + // calculate target increment for vertical scanlines which is the bitmap's pitch value + dst_adv = bitmap.rowpixels(); + dst_offset= dst_length * dst_adv; + pri_base = &priority.pix8(dst_start, linepos + dst_offset); + dst_base = &bitmap.pix32(dst_start, linepos + dst_offset); + } + + // generalized + src_base = source; + + // there is no need to wrap source offsets along with source clipping + // so we set all bits of the wrapmask to one + src_wrapmask = (clipmask) ? ~0 : wrapmask; + + dst_offset = -dst_offset; // negate target offset in order to terminated draw loop at 0 condition + + if (pri) + { + // draw scanline and update priority bitmap + do + { + pix_data = src_base[(src_fx>>FIXPOINT_PRECISION) & src_wrapmask]; + src_fx += src_fdx; + + if (pix_data) + { + pix_data = pal_base[pix_data]; + pri_base[dst_offset] = pri; + dst_base[dst_offset] = pix_data; + } + } + while (dst_offset += dst_adv); + } + else + { + // draw scanline but do not update priority bitmap + do + { + pix_data = src_base[(src_fx>>FIXPOINT_PRECISION) & src_wrapmask]; + src_fx += src_fdx; + + if (pix_data) + { + dst_base[dst_offset] = pal_base[pix_data]; + } + } + while (dst_offset += dst_adv); + } + +#undef FIXPOINT_PRECISION +#undef FIXPOINT_PRECISION_HALF +} + +void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colorbase, int flags, bitmap_ind8 &priority_bitmap, int priority ) +{ + static int16_t scroll_x; + + if (machine().input().code_pressed(KEYCODE_A)) + { + scroll_x--; + popmessage("SCROLL: %d\n", scroll_x); + } + + else if (machine().input().code_pressed(KEYCODE_S)) + { + scroll_x++; + popmessage("SCROLL: %d\n", scroll_x); + } + + uint8_t *pix_ptr; + const pen_t *pal_base, *pal_ptr; + uint32_t src_clipmask, src_wrapmask; //, dst_wrapmask; + int linedata_offs, line_pos, line_start, line_end, scroll_corr; + int color, offset, zoom, scroll, passes, i; + bool wrap500 = false; + + uint16_t *line_ram = m_buffer[0]; // pointer to physical line RAM + int map_scrollx = short(m_regs[0] << 8 | m_regs[1]) - m_offx; // signed horizontal scroll value + int map_scrolly = short(m_regs[2] << 8 | m_regs[3]) - m_offy; // signed vertical scroll value + uint8_t ctrl = m_regs[4]; // register four is the main control register + + // copy visible boundary values to more accessible locations + int dst_minx = cliprect.min_x; + int dst_maxx = cliprect.max_x; + int dst_miny = cliprect.min_y; + int dst_maxy = cliprect.max_y; + + int orientation = 0; // orientation defaults to no swapping and no flipping + int dst_height = 512; // virtual bitmap height defaults to 512 pixels + int linedata_adv = 4; // line info packets are four words(eight bytes) apart + + // switch X and Y parameters when the first bit of the control register is cleared + if (!(ctrl & 0x01)) orientation |= ORIENTATION_SWAP_XY; + + // invert X parameters when the forth bit of the control register is set + if (ctrl & 0x08) orientation |= ORIENTATION_FLIP_X; + + // invert Y parameters when the fifth bit of the control register is set + if (ctrl & 0x10) orientation |= ORIENTATION_FLIP_Y; + + //printf("CTRL: %x\n", ctrl); + + // 00 + // 0x12 + // 0x10 + + switch (ctrl >> 5) // the upper four bits of the control register select source and target dimensions + { + case 0 : + // PirateSH + // Xexex: L6 galaxies + // Metam: L4 forest, L5 arena, L6 tower interior, final boss + + // crop source offset between 0 and 255 inclusive, + // and set virtual bitmap height to 256 pixels + src_wrapmask = src_clipmask = 0xff; + dst_height = 0x100; + break; + case 1 : + // Xexex: prologue, L7 nebulae + + // the source offset is cropped to 0 and 511 inclusive + src_wrapmask = src_clipmask = 0x1ff; + break; + case 4 : + // Xexex: L1 sky and boss, L3 planet, L5 poly-face, L7 battle ship patches + // Metam: L1 summoning circle, L3 caves, L6 gargoyle towers + + // crop source offset between 0 and 255 inclusive, + // and allow source offset to wrap back at 0x500 to -0x300 + src_wrapmask = src_clipmask = 0xff; + wrap500 = true; + break; +// case 2 : // Xexex: title +// case 7 : // Xexex: L4 organic stage + default: + // crop source offset between 0 and 1023 inclusive, + // keep other dimensions to their defaults + src_wrapmask = src_clipmask = 0x3ff; + break; + } + + // disable source clipping when the third bit of the control register is set + if (ctrl & 0x04) + src_clipmask = 0; + + if (!(orientation & ORIENTATION_SWAP_XY)) // normal orientaion with no X Y switching + { + line_start = dst_miny; // the first scanline starts at the minimum Y clip location + line_end = dst_maxy; // the last scanline ends at the maximum Y clip location + scroll_corr = map_scrollx; // concentrate global X scroll + linedata_offs = map_scrolly; // determine where to get info for the first line + + if (orientation & ORIENTATION_FLIP_X) + { + scroll_corr = -scroll_corr; // X scroll adjustment should be negated in X flipped scenarioes + } + + if (orientation & ORIENTATION_FLIP_Y) + { + linedata_adv = -linedata_adv; // traverse line RAM backward in Y flipped scenarioes + linedata_offs += bitmap.height() - 1; // and get info for the first line from the bottom + } + +// dst_wrapmask = ~0; // scanlines don't seem to wrap horizontally in normal orientation + passes = 1; // draw scanline in a single pass + } + else // orientaion with X and Y parameters switched + { + line_start = dst_minx; // the first scanline starts at the minimum X clip location + line_end = dst_maxx; // the last scanline ends at the maximum X clip location + scroll_corr = map_scrolly; // concentrate global Y scroll + linedata_offs = map_scrollx; // determine where to get info for the first line + + if (orientation & ORIENTATION_FLIP_Y) + { + scroll_corr = 0x100 - scroll_corr; // apply common vertical correction + + // Y correction (ref: 1st and 5th boss) + scroll_corr -= 2; // apply unique vertical correction + + // X correction (ref: 1st boss, seems to undo non-rotated global X offset) + linedata_offs -= 5; // apply unique horizontal correction + } + + if (orientation & ORIENTATION_FLIP_X) + { + linedata_adv = -linedata_adv; // traverse line RAM backward in X flipped scenarioes + linedata_offs += bitmap.width() - 1; // and get info for the first line from the bottom + } + + if (src_clipmask) + { + // determine target wrap boundary and draw scanline in two passes if the source is clipped +// dst_wrapmask = dst_height - 1; + passes = 2; + } + else + { + // otherwise disable target wraparound and draw scanline in a single pass +// dst_wrapmask = ~0; + passes = 1; + } + } + + // PJB - HOW IS THIS DETERMINED? + src_clipmask = 0; + + linedata_offs *= 4; // each line info packet has four words(eight bytes) + linedata_offs &= 0x7ff; // and it should wrap at the four-kilobyte boundary + linedata_offs += line_start * linedata_adv; // pre-advance line info offset for the clipped region + + // load physical palette base + pal_base = palette().pens() + (colorbase << 4) % palette().entries(); + + //printf("Line Start: %u Line End: %u Advance: %u\n", line_start, line_end, linedata_adv); + + + // walk the target bitmap within the visible area vertically or horizontally, one line at a time + for (line_pos=line_start; line_pos <= line_end; linedata_offs += linedata_adv, line_pos++) + { + linedata_offs &= 0x7ff; // line info data wraps at the four-kilobyte boundary + + color = line_ram[linedata_offs]; // get scanline color code + if (color == 0xffff) continue; // reject scanline if color code equals minus one + + offset = line_ram[linedata_offs + 1]; // get first pixel offset in ROM + if (!(color & 0xff) && !offset) continue; // reject scanline if both color and pixel offset are 0 + + // calculate physical palette location + // there can be thirty-two color codes and each code represents sixteen pens + pal_ptr = pal_base + ((color & 0x1f) << 4); + + // calculate physical pixel location + // each offset unit represents 256 pixels and should wrap at ROM boundary for safety + pix_ptr = &m_unpacked_rom[((offset << 8) % m_unpacked_rom.size())]; + + // get scanline zoom factor + // For example, 0x20 doubles the length, 0x40 maintains a one-to-one length, + // and 0x80 halves the length. The zoom center is at the beginning of the + // scanline therefore it is not necessary to adjust render start position + zoom = line_ram[linedata_offs + 2]; + + scroll = ((short)line_ram[linedata_offs + 3]); // get signed local scroll value for the current scanline + + // scavenged from old code; improves Xexex' first level sky + if (wrap500 && scroll >= 0x500) scroll -= 0x800; + + if (1 && scroll >= 0x500) scroll -= 0x800; + + scroll += scroll_corr; // apply final scroll correction + // PJB + //scroll &= src_wrapmask; // wraparound scroll value if necessary + + if (0) + { + printf("%u: [%x] COLR:%x OFFS:%x ZOOM:%x SCRL:%d (%.4x)\n", line_pos, linedata_offs, color, offset, zoom, scroll, line_ram[linedata_offs + 3]); + } + + + // draw scanlines wrapped at virtual bitmap boundary in two passes + // this should not impose too much overhead due to clipping performed by the render code + i = passes; + do + { + /* + Parameter descriptions: + + bitmap : pointer to a MAME bitmap as the render target + pal_ptr : pointer to the palette's physical location relative to the scanline + pix_ptr : pointer to the physical start location of source pixels in ROM + cliprect : pointer to a rectangle structue which describes the visible area of the target bitmap + line_pos : scanline render position relative to the target bitmap + should be a Y offset to the target bitmap in normal orientaion, + or an X offset to the target bitmap if X,Y are swapped + scroll : source scroll value of the scanline + zoom : source zoom factor of the scanline + src_clipmask : source offset clip mask; source pixels with offsets beyond the scope of this mask will not be drawn + src_wrapmask : source offset wrap mask; wraps source offset around, no effect when src_clipmask is set + orientation : flags indicating whether scanlines should be drawn horizontally, vertically, forward or backward + priority : value to be written to the priority bitmap, no effect when equals 0 + */ + pdraw_scanline32(bitmap, pal_ptr, pix_ptr, cliprect, + line_pos, scroll, zoom, src_clipmask, src_wrapmask, orientation, priority_bitmap, (uint8_t)priority); + + // shift scanline position one virtual screen upward to render the wrapped end if necessary + scroll -= dst_height; + } + while (--i); + } +} + +READ16_MEMBER(k053250ps_device::reg_r) +{ + return m_regs[offset]; +} + + +void k053250ps_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + switch(m_timer_lvcdma_state) + { + case OD_WAIT_START: + m_timer_lvcdma_state = OD_WAIT_END; + m_timer_lvcdma->adjust(attotime::from_ticks(4096, clock())); + m_dmairq_cb(ASSERT_LINE); + +// memcpy(m_buffer[m_page], &m_ram[0], 0x1000); +// m_page ^= 1; + + break; + + case OD_WAIT_END: + m_timer_lvcdma_state = OD_IDLE; + m_timer_lvcdma->adjust(attotime::never); + m_dmairq_cb(CLEAR_LINE); + + if(/*(m_regs[4] & 0x02) &&*/ !m_dmairq_on) + { + m_dmairq_on = true; + m_dmairq_cb(ASSERT_LINE); + } + break; + } +} + +WRITE_LINE_MEMBER(k053250ps_device::vblank_w) +{ + if (state == 1) + { + if (1) + { + if(m_dmairq_on) + { + m_dmairq_on = false; + m_dmairq_cb(CLEAR_LINE); + } + m_timer_lvcdma_state = OD_WAIT_START; + m_timer_lvcdma->adjust(attotime::from_ticks(256, clock())); + } + else + { + //memset(m_sram, 0, sizeof(m_sram)); + } + } +} + +READ_LINE_MEMBER(k053250ps_device::dmairq_r) +{ + return !m_dmairq_on; +} + + +WRITE16_MEMBER(k053250ps_device::reg_w) +{ +#if 0 + static const char * regnames[] = + { + "SCROLL_X_L", + "SCROLL_X_H", + "SCROLL_Y_L", + "SCROLL_X_H", + "DMA Control", + "UNKNOWN", + "ROM_H", + "ROM_L", + }; + + printf("053250 REG_W[%x] (%s): %.2x\n", offset, regnames[offset], data & 0xff); +#endif + if (ACCESSING_BITS_0_7) + m_regs[offset] = data; +} + +READ16_MEMBER(k053250ps_device::ram_r) +{ + return m_ram[offset]; +} + +WRITE16_MEMBER(k053250ps_device::ram_w) +{ + COMBINE_DATA(&m_ram[offset]); +} + +READ16_MEMBER(k053250ps_device::rom_r) +{ + return m_rom[0x80000 * m_regs[6] + 0x800 * m_regs[7] + offset/2]; +} diff --git a/src/mame/video/k053250_ps.h b/src/mame/video/k053250_ps.h new file mode 100644 index 00000000000..99479e5a9a2 --- /dev/null +++ b/src/mame/video/k053250_ps.h @@ -0,0 +1,82 @@ +// license:BSD-3-Clause +// copyright-holders:Olivier Galibert +#ifndef MAME_VIDEO_K053250PS_H +#define MAME_VIDEO_K053250PS_H + +#pragma once + +// +// Konami 053250 road generator (Pirate Ship version) +// + + +#define MCFG_K053250PS_ADD(_tag, _palette_tag, _screen_tag, offx, offy) \ + MCFG_DEVICE_ADD(_tag, K053250PS, 12000000) \ + MCFG_GFX_PALETTE(_palette_tag) \ + MCFG_VIDEO_SET_SCREEN(_screen_tag) \ + k053250ps_device::static_set_offsets(*device, offx, offy); + +#define MCFG_K053250PS_DMAIRQ_CB(_cb) \ + devcb = &k053250ps_device::set_dmairq_cb(*device, DEVCB_##_cb); + +class k053250ps_device : public device_t, + public device_gfx_interface, + public device_video_interface +{ +public: + k053250ps_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + static void static_set_offsets(device_t &device, int offx, int offy); + template static devcb_base &set_dmairq_cb(device_t &device, _cb cb) { return downcast(device).m_dmairq_cb.set_callback(cb); } + + DECLARE_READ16_MEMBER(reg_r); + DECLARE_WRITE16_MEMBER(reg_w); + DECLARE_READ16_MEMBER(ram_r); + DECLARE_WRITE16_MEMBER(ram_w); + DECLARE_READ16_MEMBER(rom_r); + DECLARE_WRITE_LINE_MEMBER(vblank_w); + DECLARE_READ_LINE_MEMBER(dmairq_r); + + void draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colorbase, int flags, bitmap_ind8 &priority_bitmap, int priority ); + +protected: + // device-level overrides + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + + enum { + OD_IDLE, + OD_WAIT_START, + OD_WAIT_END + }; + + devcb_write_line m_dmairq_cb; + int m_timer_lvcdma_state; + bool m_dmairq_on; + + // configuration + int m_offx, m_offy; + + emu_timer *m_timer_lvcdma; + + // internal state + required_region_ptr m_rom; + std::vector m_unpacked_rom; + std::vector m_ram; + uint16_t *m_buffer[2]; + uint8_t m_regs[8]; + uint8_t m_page; + + // internal helpers + void unpack_nibbles(); + static void pdraw_scanline32(bitmap_rgb32 &bitmap, const pen_t *pal_base, uint8_t *source, + const rectangle &cliprect, int linepos, int scroll, int zoom, + uint32_t clipmask, uint32_t wrapmask, uint32_t orientation, bitmap_ind8 &priority, uint8_t pri); +}; + +DECLARE_DEVICE_TYPE(K053250PS, k053250ps_device) + +#endif // MAME_VIDEO_K053250PS_H diff --git a/src/mame/video/k053251.cpp b/src/mame/video/k053251.cpp index 876a1497666..21eece746f6 100644 --- a/src/mame/video/k053251.cpp +++ b/src/mame/video/k053251.cpp @@ -122,12 +122,13 @@ actually used, since the priority is taken from the external ports. #include "konami_helper.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" -const device_type K053251 = device_creator; + +DEFINE_DEVICE_TYPE(K053251, k053251_device, "k053251", "K053251 Priority Encoder") k053251_device::k053251_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K053251, "K053251 Priority Encoder", tag, owner, clock, "k053251", __FILE__), + : device_t(mconfig, K053251, tag, owner, clock), //m_dirty_tmap[5], //m_ram[16], m_tilemaps_set(0) diff --git a/src/mame/video/k053251.h b/src/mame/video/k053251.h index 6c1baed9636..b2736f71d4c 100644 --- a/src/mame/video/k053251.h +++ b/src/mame/video/k053251.h @@ -1,22 +1,21 @@ // license:BSD-3-Clause -// copyright-holders:Fabio Priuli,Acho A. Tang, R. Belmont -#ifndef __K053251_H__ -#define __K053251_H__ +// copyright-holders:Fabio Priuli, Acho A. Tang, R. Belmont +#ifndef MAME_VIDEO_K053251_H +#define MAME_VIDEO_K053251_H +class k053251_device : public device_t +{ +public: enum { - K053251_CI0 = 0, - K053251_CI1, - K053251_CI2, - K053251_CI3, - K053251_CI4 + CI0 = 0, + CI1, + CI2, + CI3, + CI4 }; -class k053251_device : public device_t -{ -public: k053251_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k053251_device() {} /* Note: k053251_w() automatically does a ALL_TILEMAPS->mark_all_dirty() @@ -52,8 +51,9 @@ private: }; extern const device_type K053251; +DECLARE_DEVICE_TYPE(K053251, k053251_device) #define MCFG_K053251_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, K053251, 0) -#endif +#endif // MAME_VIDEO_K053251_H diff --git a/src/mame/video/k053936.cpp b/src/mame/video/k053936.cpp index 54269a89a32..429d033084d 100644 --- a/src/mame/video/k053936.cpp +++ b/src/mame/video/k053936.cpp @@ -6,7 +6,7 @@ #include "k053936.h" #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" // Localized K053936/ROZ+ @@ -227,10 +227,10 @@ void K053936_set_offset(int chip, int xoffs, int yoffs) /* */ /***************************************************************************/ -const device_type K053936 = device_creator; +DEFINE_DEVICE_TYPE(K053936, k053936_device, "k053936", "K053936 Video Controller") k053936_device::k053936_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K053936, "K053936 Video Controller", tag, owner, clock, "k053936", __FILE__), + : device_t(mconfig, K053936, tag, owner, clock), m_ctrl(nullptr), m_linectrl(nullptr), m_wrap(0), diff --git a/src/mame/video/k053936.h b/src/mame/video/k053936.h index cae0e8a7394..f1546e8482b 100644 --- a/src/mame/video/k053936.h +++ b/src/mame/video/k053936.h @@ -1,8 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_K053936_H +#define MAME_VIDEO_K053936_H + #pragma once -#ifndef __K053936_H__ -#define __K053936_H__ void K053936_0_zoom_draw(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,tilemap_t *tmap,int flags,uint32_t priority, int glfgreat_hack); @@ -51,7 +52,7 @@ private: int m_wrap, m_xoff, m_yoff; }; -extern const device_type K053936; +DECLARE_DEVICE_TYPE(K053936, k053936_device) #define MCFG_K053936_WRAP(_wrap) \ k053936_device::set_wrap(*device, _wrap); @@ -59,4 +60,4 @@ extern const device_type K053936; #define MCFG_K053936_OFFSETS(_xoffs, _yoffs) \ k053936_device::set_offsets(*device, _xoffs, _yoffs); -#endif +#endif // MAME_VIDEO_K053936_H diff --git a/src/mame/video/k054000.cpp b/src/mame/video/k054000.cpp index f34f8c84155..2b96bdcdce9 100644 --- a/src/mame/video/k054000.cpp +++ b/src/mame/video/k054000.cpp @@ -6,7 +6,8 @@ #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" + /***************************************************************************/ /* */ @@ -52,10 +53,10 @@ Memory map: /* */ /***************************************************************************/ -const device_type K054000 = device_creator; +DEFINE_DEVICE_TYPE(K054000, k054000_device, "k054000", "K054000 Protection") k054000_device::k054000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K054000, "K054000 Protection", tag, owner, clock, "k054000", __FILE__) + : device_t(mconfig, K054000, tag, owner, clock) { } diff --git a/src/mame/video/k054000.h b/src/mame/video/k054000.h index f8ebe242dc8..9e951822456 100644 --- a/src/mame/video/k054000.h +++ b/src/mame/video/k054000.h @@ -1,9 +1,10 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_K054000_H +#define MAME_VIDEO_K054000_H #pragma once -#ifndef __K054000_H__ -#define __K054000_H__ + #define MCFG_K054000_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, K054000, 0) @@ -29,9 +30,6 @@ private: uint8_t m_regs[0x20]; }; -extern const device_type K054000; - - - +DECLARE_DEVICE_TYPE(K054000, k054000_device) -#endif +#endif // MAME_VIDEO_K054000_H diff --git a/src/mame/video/k054156_k054157_k056832.cpp b/src/mame/video/k054156_k054157_k056832.cpp index c908c4ce72d..0348da64ce8 100644 --- a/src/mame/video/k054156_k054157_k056832.cpp +++ b/src/mame/video/k054156_k054157_k056832.cpp @@ -168,6 +168,11 @@ ones. The other 7 words are ignored. Global scrollx is ignored. #include "k054156_k054157_k056832.h" #include "konami_helper.h" +#include "video/k055555.h" // still needs k055555_get_palette_index + +#define VERBOSE 0 +#include "logmacro.h" + /* end common functions */ @@ -179,10 +184,10 @@ ones. The other 7 words are ignored. Global scrollx is ignored. -const device_type K056832 = device_creator; +DEFINE_DEVICE_TYPE(K056832, k056832_device, "k056832", "K056832 Tilemap Generator") k056832_device::k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K056832, "K056832 Tilemap Generator", tag, owner, clock, "k056832", __FILE__), + : device_t(mconfig, K056832, tag, owner, clock), device_gfx_interface(mconfig, *this), //m_tilemap[K056832_PAGE_COUNT], //*m_pixmap[K056832_PAGE_COUNT], @@ -333,6 +338,9 @@ void k056832_device::finalize_init() void k056832_device::device_start() { + if (!palette().device().started()) + throw device_missing_dependencies(); + memset(m_regs, 0x00, sizeof(m_regs) ); memset(m_regsb, 0x00, sizeof(m_regsb) ); @@ -640,9 +648,7 @@ READ16_MEMBER( k056832_device::k_5bpp_rom_word_r ) else if (mem_mask == 0x00ff) return rom_read_b(offset * 2 + 1, 4, 5, 0)<<16; else - { - //LOG(("Non-byte read of tilemap ROM, PC=%x (mask=%x)\n", space.device().safe_pc(), mem_mask)); - } + LOG("Non-byte read of tilemap ROM, PC=%x (mask=%x)\n", space.device().safe_pc(), mem_mask); return 0; } @@ -657,9 +663,7 @@ READ32_MEMBER( k056832_device::k_5bpp_rom_long_r ) else if (mem_mask == 0x000000ff) return rom_read_b(offset * 4 + 3, 4, 5, 1); else - { - //LOG(("Non-byte read of tilemap ROM, PC=%x (mask=%x)\n", space.device().safe_pc(), mem_mask)); - } + LOG("Non-byte read of tilemap ROM, PC=%x (mask=%x)\n", space.device().safe_pc(), mem_mask); return 0; } @@ -674,9 +678,7 @@ READ32_MEMBER( k056832_device::k_6bpp_rom_long_r ) else if (mem_mask == 0x000000ff) return rom_read_b(offset * 4 + 3, 4, 6, 0); else - { - //LOG(("Non-byte read of tilemap ROM, PC=%x (mask=%x)\n", space.device().safe_pc(), mem_mask)); - } + LOG("Non-byte read of tilemap ROM, PC=%x (mask=%x)\n", space.device().safe_pc(), mem_mask); return 0; } diff --git a/src/mame/video/k054156_k054157_k056832.h b/src/mame/video/k054156_k054157_k056832.h index 8854645b752..410306b070a 100644 --- a/src/mame/video/k054156_k054157_k056832.h +++ b/src/mame/video/k054156_k054157_k056832.h @@ -1,13 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood -#pragma once -#ifndef __K056832_H__ -#define __K056832_H__ - -#define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#ifndef MAME_VIDEO_K054156_K054157_K056832_H +#define MAME_VIDEO_K054156_K054157_K056832_H -#include "video/k055555.h"// still needs k055555_get_palette_index +#pragma once typedef device_delegate k056832_cb_delegate; @@ -36,14 +32,12 @@ typedef device_delegate k05 #define K056382_DRAW_FLAG_FORCE_XYSCROLL 0x00800000 +class k055555_device; + class k056832_device : public device_t, public device_gfx_interface { public: k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k056832_device() - { - m_k055555 = nullptr; - } static void set_k056832_callback(device_t &device, k056832_cb_delegate callback) { downcast(device).m_k056832_cb = callback; } static void set_config(device_t &device, const char *gfx_reg, int bpp, int big, int djmain_hack, const char *k055555) @@ -222,13 +216,12 @@ private: int altK056832_update_linemap(screen_device &screen, bitmap_rgb32 &bitmap, int page, int flags); }; -extern const device_type K056832; - - +DECLARE_DEVICE_TYPE(K056832, k056832_device) #define MCFG_K056832_PALETTE(_palette_tag) \ MCFG_GFX_PALETTE(_palette_tag) -#endif +#endif // MAME_VIDEO_K054156_K054157_K056832_H + diff --git a/src/mame/video/k054338.cpp b/src/mame/video/k054338.cpp index 1ca97eea33b..a8d97bcda4d 100644 --- a/src/mame/video/k054338.cpp +++ b/src/mame/video/k054338.cpp @@ -4,9 +4,9 @@ #include "emu.h" #include "k054338.h" - #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" + /***************************************************************************/ /* */ @@ -18,10 +18,10 @@ // because the implementation is video dependant, this is just a // register-handling shell. -const device_type K054338 = device_creator; +DEFINE_DEVICE_TYPE(K054338, k054338_device, "k054338", "K054338 Mixer") k054338_device::k054338_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K054338, "K054338 Mixer", tag, owner, clock, "k054338", __FILE__), + : device_t(mconfig, K054338, tag, owner, clock), device_video_interface(mconfig, *this), m_alpha_inv(0), m_k055555_tag(nullptr) diff --git a/src/mame/video/k054338.h b/src/mame/video/k054338.h index 93022f66c45..8385fe10c2d 100644 --- a/src/mame/video/k054338.h +++ b/src/mame/video/k054338.h @@ -1,8 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_K054338_H +#define MAME_VIDEO_K054338_H + #pragma once -#ifndef __K054338_H__ -#define __K054338_H__ #include "k055555.h" @@ -26,7 +27,6 @@ class k054338_device : public device_t, { public: k054338_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~k054338_device() {} // static configuration static void set_mixer_tag(device_t &device, const char *tag) { downcast(device).m_k055555_tag = tag; } @@ -60,7 +60,7 @@ private: k055555_device *m_k055555; /* used to fill BG color */ }; -extern const device_type K054338; +DECLARE_DEVICE_TYPE(K054338, k054338_device) #define MCFG_K054338_MIXER(_tag) \ @@ -71,4 +71,4 @@ extern const device_type K054338; #define MCFG_K054338_SET_SCREEN MCFG_VIDEO_SET_SCREEN -#endif +#endif // MAME_VIDEO_K054338_H diff --git a/src/mame/video/k055555.cpp b/src/mame/video/k055555.cpp index 5be5657e5ce..68abbbdfb09 100644 --- a/src/mame/video/k055555.cpp +++ b/src/mame/video/k055555.cpp @@ -64,7 +64,8 @@ Lots of byte-wise registers. A partial map: #define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" + /* K055555 5-bit-per-pixel priority encoder */ /* This device has 48 8-bit-wide registers */ @@ -83,7 +84,7 @@ void k055555_device::K055555_write_reg(uint8_t regnum, uint8_t regdat) if (regdat != m_regs[regnum]) { - LOG(("5^5: %x to reg %x (%s)\n", regdat, regnum, rnames[regnum])); + LOG("5^5: %x to reg %x (%s)\n", regdat, regnum, rnames[regnum]); } m_regs[regnum] = regdat; @@ -140,10 +141,10 @@ int k055555_device::K055555_get_palette_index(int idx) -const device_type K055555 = device_creator; +DEFINE_DEVICE_TYPE(K055555, k055555_device, "k055555", "K055555 Priority Encoder") k055555_device::k055555_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K055555, "K055555 Priority Encoder", tag, owner, clock, "k055555", __FILE__) + : device_t(mconfig, K055555, tag, owner, clock) { } @@ -163,5 +164,5 @@ void k055555_device::device_start() void k055555_device::device_reset() { - memset(m_regs, 0, 64 * sizeof(uint8_t)); + std::fill(std::begin(m_regs), std::end(m_regs), 0); } diff --git a/src/mame/video/k055555.h b/src/mame/video/k055555.h index 01c615cac03..ea0cc05dbd6 100644 --- a/src/mame/video/k055555.h +++ b/src/mame/video/k055555.h @@ -1,10 +1,11 @@ // license:BSD-3-Clause // copyright-holders:David Haywood /* */ +#ifndef MAME_MACHINE_K055555_H +#define MAME_MACHINE_K055555_H #pragma once -#ifndef __K055555_H__ -#define __K055555_H__ + #define MCFG_K055555_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, K055555, 0) @@ -100,7 +101,7 @@ private: uint8_t m_regs[128]; }; -extern const device_type K055555; +DECLARE_DEVICE_TYPE(K055555, k055555_device) -#endif +#endif // MAME_MACHINE_K055555_H diff --git a/src/mame/video/k057714.cpp b/src/mame/video/k057714.cpp index ddbad471cfe..eafecfa74c8 100644 --- a/src/mame/video/k057714.cpp +++ b/src/mame/video/k057714.cpp @@ -12,11 +12,11 @@ #define PRINT_GCU 0 -const device_type K057714 = device_creator; +DEFINE_DEVICE_TYPE(K057714, k057714_device, "k057714", "k057714_device GCU") k057714_device::k057714_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K057714, "K057714 GCU", tag, owner, clock, "k057714", __FILE__), - m_irq(*this) + : device_t(mconfig, K057714, tag, owner, clock) + , m_irq(*this) { } diff --git a/src/mame/video/k057714.h b/src/mame/video/k057714.h index 6290464459b..c5bf4b0bf40 100644 --- a/src/mame/video/k057714.h +++ b/src/mame/video/k057714.h @@ -1,15 +1,16 @@ // license:BSD-3-Clause // copyright-holders:Ville Linde +#ifndef MAME_MACHINE_K057714_H +#define MAME_MACHINE_K057714_H #pragma once -#ifndef __K057714_H__ -#define __K057714_H__ + class k057714_device : public device_t { public: k057714_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &static_set_irq_callback(device_t &device, _Object object) { return downcast(device).m_irq.set_callback(object); } + template static devcb_base &static_set_irq_callback(device_t &device, Object &&cb) { return downcast(device).m_irq.set_callback(std::forward(cb)); } int draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -60,10 +61,10 @@ private: devcb_write_line m_irq; }; -extern const device_type K057714; +DECLARE_DEVICE_TYPE(K057714, k057714_device) #define MCFG_K057714_IRQ_CALLBACK(_devcb) \ devcb = &k057714_device::static_set_irq_callback(*device, DEVCB_##_devcb); -#endif +#endif // MAME_MACHINE_K057714_H diff --git a/src/mame/video/k1ge.cpp b/src/mame/video/k1ge.cpp index 402345f1060..15baa56265b 100644 --- a/src/mame/video/k1ge.cpp +++ b/src/mame/video/k1ge.cpp @@ -862,18 +862,15 @@ void k1ge_device::device_reset() } -const device_type K1GE = device_creator; +DEFINE_DEVICE_TYPE(K1GE, k1ge_device, "k1ge", "K1GE Monochrome Graphics + LCD") k1ge_device::k1ge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K1GE, "K1GE Monochrome Graphics + LCD", tag, owner, clock, "k1ge", __FILE__) - , device_video_interface(mconfig, *this) - , m_vblank_pin_w(*this) - , m_hblank_pin_w(*this) + : k1ge_device(mconfig, K1GE, tag, owner, clock) { } -k1ge_device::k1ge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +k1ge_device::k1ge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , device_video_interface(mconfig, *this) , m_vblank_pin_w(*this) , m_hblank_pin_w(*this) @@ -896,10 +893,10 @@ machine_config_constructor k1ge_device::device_mconfig_additions() const } -const device_type K2GE = device_creator; +DEFINE_DEVICE_TYPE(K2GE, k2ge_device, "k2ge", "K2GE Color Graphics + LCD") k2ge_device::k2ge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : k1ge_device(mconfig, K2GE, "K2GE Color Graphics + LCD", tag, owner, clock, "k2ge", __FILE__) + : k1ge_device(mconfig, K2GE, tag, owner, clock) { } diff --git a/src/mame/video/k1ge.h b/src/mame/video/k1ge.h index 4c73467d03f..0761f0d03c1 100644 --- a/src/mame/video/k1ge.h +++ b/src/mame/video/k1ge.h @@ -6,8 +6,10 @@ ******************************************************************************/ -#ifndef __K2GE_H_ -#define __K2GE_H_ +#ifndef MAME_VIDEO_K1GE_H +#define MAME_VIDEO_K1GE_H + +#pragma once #define MCFG_K1GE_ADD(_tag, _clock, _screen, _vblank, _hblank ) \ @@ -23,12 +25,10 @@ devcb = &k1ge_device::static_set_hblank_callback( *device, DEVCB_##_hblank ); -class k1ge_device : public device_t, - public device_video_interface +class k1ge_device : public device_t, public device_video_interface { public: k1ge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - k1ge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -38,11 +38,14 @@ public: void update( bitmap_ind16 &bitmap, const rectangle &cliprect ); // Static methods - template static devcb_base &static_set_vblank_callback(device_t &device, _Object object) { return downcast(device).m_vblank_pin_w.set_callback(object); } - template static devcb_base &static_set_hblank_callback(device_t &device, _Object object) { return downcast(device).m_hblank_pin_w.set_callback(object); } + template static devcb_base &static_set_vblank_callback(device_t &device, Object &&cb) { return downcast(device).m_vblank_pin_w.set_callback(std::forward(cb)); } + template static devcb_base &static_set_hblank_callback(device_t &device, Object &&cb) { return downcast(device).m_hblank_pin_w.set_callback(std::forward(cb)); } static const int K1GE_SCREEN_HEIGHT = 199; + protected: + k1ge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -73,6 +76,7 @@ public: k2ge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_PALETTE_INIT(k2ge); + protected: virtual machine_config_constructor device_mconfig_additions() const override; @@ -85,8 +89,7 @@ protected: }; -extern const device_type K1GE; -extern const device_type K2GE; - +DECLARE_DEVICE_TYPE(K1GE, k1ge_device) +DECLARE_DEVICE_TYPE(K2GE, k2ge_device) -#endif +#endif // MAME_VIDEO_K1GE_H diff --git a/src/mame/video/kan_pand.cpp b/src/mame/video/kan_pand.cpp index c8639ebfc57..6c30e9b04a4 100644 --- a/src/mame/video/kan_pand.cpp +++ b/src/mame/video/kan_pand.cpp @@ -53,10 +53,10 @@ #include "video/kan_pand.h" #include "screen.h" -const device_type KANEKO_PANDORA = device_creator; +DEFINE_DEVICE_TYPE(KANEKO_PANDORA, kaneko_pandora_device, "kaneko_pandora", "Kaneko PANDORA GFX") kaneko_pandora_device::kaneko_pandora_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, KANEKO_PANDORA, "Kaneko PANDORA GFX", tag, owner, clock, "kaneko_pandora", __FILE__) + : device_t(mconfig, KANEKO_PANDORA, tag, owner, clock) , device_video_interface(mconfig, *this) , m_gfx_region(0) , m_xoffset(0) diff --git a/src/mame/video/kan_pand.h b/src/mame/video/kan_pand.h index d0e25faed36..175debb9dbf 100644 --- a/src/mame/video/kan_pand.h +++ b/src/mame/video/kan_pand.h @@ -8,8 +8,10 @@ **************************************************************************/ -#ifndef __KAN_PAND_H__ -#define __KAN_PAND_H__ +#ifndef MAME_VIDEO_KAN_PAND_H +#define MAME_VIDEO_KAN_PAND_H + +#pragma once /*************************************************************************** TYPE DEFINITIONS @@ -20,7 +22,6 @@ class kaneko_pandora_device : public device_t, { public: kaneko_pandora_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~kaneko_pandora_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -60,7 +61,7 @@ private: required_device m_gfxdecode; }; -extern const device_type KANEKO_PANDORA; +DECLARE_DEVICE_TYPE(KANEKO_PANDORA, kaneko_pandora_device) /*************************************************************************** @@ -76,4 +77,4 @@ extern const device_type KANEKO_PANDORA; #define MCFG_KANEKO_PANDORA_GFXDECODE(_gfxtag) \ kaneko_pandora_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); -#endif /* __KAN_PAND_H__ */ +#endif // MAME_VIDEO_KAN_PAND_H diff --git a/src/mame/video/kaneko_grap2.cpp b/src/mame/video/kaneko_grap2.cpp index bcc09283668..07b0e08c8cd 100644 --- a/src/mame/video/kaneko_grap2.cpp +++ b/src/mame/video/kaneko_grap2.cpp @@ -14,10 +14,10 @@ #include "emu.h" #include "kaneko_grap2.h" -const device_type KANEKO_GRAP2 = device_creator; +DEFINE_DEVICE_TYPE(KANEKO_GRAP2, kaneko_grap2_device, "kaneko_grap2", "Kaneko GRAP2") kaneko_grap2_device::kaneko_grap2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, KANEKO_GRAP2, "Kaneko GRAP2", tag, owner, clock, "kaneko_grap2", __FILE__) + : device_t(mconfig, KANEKO_GRAP2, tag, owner, clock) , m_palette(*this, finder_base::DUMMY_TAG) { m_chipnum = 0; diff --git a/src/mame/video/kaneko_grap2.h b/src/mame/video/kaneko_grap2.h index 921b94df347..65380accf6d 100644 --- a/src/mame/video/kaneko_grap2.h +++ b/src/mame/video/kaneko_grap2.h @@ -1,6 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_KANEKO_GRAP2_H +#define MAME_VIDEO_KANEKO_GRAP2_H +#pragma once #define GRAP2_AREA( _BASE, name ) \ @@ -91,7 +94,10 @@ private: }; -extern const device_type KANEKO_GRAP2; +DECLARE_DEVICE_TYPE(KANEKO_GRAP2, kaneko_grap2_device) #define MCFG_KANEKO_GRAP2_PALETTE(_palette_tag) \ kaneko_grap2_device::static_set_palette_tag(*device, "^" _palette_tag); + + +#endif // MAME_VIDEO_KANEKO_GRAP2_H diff --git a/src/mame/video/kaneko_spr.cpp b/src/mame/video/kaneko_spr.cpp index 106e74a7b63..6a738e11a92 100644 --- a/src/mame/video/kaneko_spr.cpp +++ b/src/mame/video/kaneko_spr.cpp @@ -28,19 +28,16 @@ #include "kaneko_spr.h" #include "screen.h" -const device_type KANEKO_VU002_SPRITE = device_creator; -const device_type KANEKO_KC002_SPRITE = device_creator; +DEFINE_DEVICE_TYPE(KANEKO_VU002_SPRITE, kaneko_vu002_sprite_device, "kaneko_vu002", "Kaneko VU002 Sprites") +DEFINE_DEVICE_TYPE(KANEKO_KC002_SPRITE, kaneko_kc002_sprite_device, "kaneko_kc002", "Kaneko KC002 Sprites") kaneko16_sprite_device::kaneko16_sprite_device( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - uint32_t clock, - const char *shortname, - const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) + uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , device_video_interface(mconfig, *this) , m_gfxdecode(*this, finder_base::DUMMY_TAG) { @@ -619,12 +616,12 @@ void kaneko16_sprite_device::kaneko16_render_sprites_common(_BitmapClass &bitmap } kaneko_vu002_sprite_device::kaneko_vu002_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : kaneko16_sprite_device(mconfig, KANEKO_VU002_SPRITE, "Kaneko VU002 Sprites", tag, owner, clock, "kaneko_vu002", __FILE__) + : kaneko16_sprite_device(mconfig, KANEKO_VU002_SPRITE, tag, owner, clock) { } kaneko_kc002_sprite_device::kaneko_kc002_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : kaneko16_sprite_device(mconfig, KANEKO_KC002_SPRITE, "Kaneko KC002 Sprites", tag, owner, clock, "kaneko_kc002", __FILE__) + : kaneko16_sprite_device(mconfig, KANEKO_KC002_SPRITE, tag, owner, clock) { } diff --git a/src/mame/video/kaneko_spr.h b/src/mame/video/kaneko_spr.h index 88dff484812..8a27bb8013e 100644 --- a/src/mame/video/kaneko_spr.h +++ b/src/mame/video/kaneko_spr.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia, David Haywood +#ifndef MAME_VIDEO_KANEKO_SPR_H +#define MAME_VIDEO_KANEKO_SPR_H + +#pragma once /* Kaneko Sprites */ @@ -56,12 +60,9 @@ protected: kaneko16_sprite_device( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - uint32_t clock, - const char *shortname, - const char *source); + uint32_t clock); virtual void device_start() override; virtual void device_reset() override; @@ -125,7 +126,7 @@ public: int get_sprite_type(void) override{ return 0; }; }; -extern const device_type KANEKO_VU002_SPRITE; +DECLARE_DEVICE_TYPE(KANEKO_VU002_SPRITE, kaneko_vu002_sprite_device) class kaneko_kc002_sprite_device : public kaneko16_sprite_device { @@ -135,4 +136,6 @@ public: int get_sprite_type(void) override{ return 1; }; }; -extern const device_type KANEKO_KC002_SPRITE; +DECLARE_DEVICE_TYPE(KANEKO_KC002_SPRITE, kaneko_kc002_sprite_device) + +#endif // MAME_VIDEO_KANEKO_SPR_H diff --git a/src/mame/video/kaneko_tmap.cpp b/src/mame/video/kaneko_tmap.cpp index 77e1046d49a..d9770bc8478 100644 --- a/src/mame/video/kaneko_tmap.cpp +++ b/src/mame/video/kaneko_tmap.cpp @@ -94,10 +94,10 @@ There are more! #include "emu.h" #include "kaneko_tmap.h" -const device_type KANEKO_TMAP = device_creator; +DEFINE_DEVICE_TYPE(KANEKO_TMAP, kaneko_view2_tilemap_device, "kaneko_view2", "Kaneko VIEW2 Tilemaps") kaneko_view2_tilemap_device::kaneko_view2_tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, KANEKO_TMAP, "Kaneko VIEW2 Tilemaps", tag, owner, clock, "kaneko_view2_tilemap", __FILE__) + : device_t(mconfig, KANEKO_TMAP, tag, owner, clock) , m_gfxdecode(*this, finder_base::DUMMY_TAG) { m_invert_flip = 0; diff --git a/src/mame/video/kaneko_tmap.h b/src/mame/video/kaneko_tmap.h index a504b3a23c6..23daae62f50 100644 --- a/src/mame/video/kaneko_tmap.h +++ b/src/mame/video/kaneko_tmap.h @@ -1,5 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia, David Haywood +#ifndef MAME_VIDEO_KANEKO_TMAP_H +#define MAME_VIDEO_KANEKO_TMAP_H + +#pragma once + class kaneko_view2_tilemap_device : public device_t @@ -13,17 +18,6 @@ public: static void set_offset(device_t &device, int dx, int dy, int xdim, int ydim); static void set_invert_flip(device_t &device, int invert_flip); // for fantasia (bootleg) - // set when creating device - int m_tilebase; - int m_dx, m_dy, m_xdim, m_ydim; - int m_invert_flip; - - std::unique_ptr m_vram[2]; - std::unique_ptr m_vscroll[2]; - std::unique_ptr m_regs; - tilemap_t* m_tmap[2]; - uint16_t m_vram_tile_addition[2]; // galsnew - void get_tile_info(tile_data &tileinfo, tilemap_memory_index tile_index, int _N_); void kaneko16_vram_w(offs_t offset, uint16_t data, uint16_t mem_mask, int _N_); @@ -75,10 +69,23 @@ private: TILE_GET_INFO_MEMBER(get_tile_info_0); TILE_GET_INFO_MEMBER(get_tile_info_1); required_device m_gfxdecode; + + // set when creating device + int m_tilebase; + int m_dx, m_dy, m_xdim, m_ydim; + int m_invert_flip; + + std::unique_ptr m_vram[2]; + std::unique_ptr m_vscroll[2]; + std::unique_ptr m_regs; + tilemap_t* m_tmap[2]; + uint16_t m_vram_tile_addition[2]; // galsnew }; -extern const device_type KANEKO_TMAP; +DECLARE_DEVICE_TYPE(KANEKO_TMAP, kaneko_view2_tilemap_device) #define MCFG_KANEKO_TMAP_GFXDECODE(_gfxtag) \ kaneko_view2_tilemap_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); + +#endif // MAME_VIDEO_KANEKO_TMAP_H diff --git a/src/mame/video/klax.cpp b/src/mame/video/klax.cpp index e699a5e066b..94544abc92f 100644 --- a/src/mame/video/klax.cpp +++ b/src/mame/video/klax.cpp @@ -20,8 +20,8 @@ TILE_GET_INFO_MEMBER(klax_state::get_playfield_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) >> 8; + uint16_t data1 = m_playfield_tilemap->basemem_read(tile_index); + uint16_t data2 = m_playfield_tilemap->extmem_read(tile_index) >> 8; int code = data1 & 0x1fff; int color = data2 & 0x0f; SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); diff --git a/src/mame/video/konami_helper.cpp b/src/mame/video/konami_helper.cpp index 2c77d923a97..e2c76140256 100644 --- a/src/mame/video/konami_helper.cpp +++ b/src/mame/video/konami_helper.cpp @@ -8,7 +8,7 @@ void konami_decode_gfx(device_gfx_interface &gfxdecode, int gfx_index, uint8_t *data, uint32_t total, const gfx_layout *layout, int bpp) { gfx_layout gl; - palette_device &palette = gfxdecode.palette(); + device_palette_interface &palette = gfxdecode.palette(); memcpy(&gl, layout, sizeof(gl)); gl.total = total; diff --git a/src/mame/video/ksayakyu.cpp b/src/mame/video/ksayakyu.cpp index 0894ca23257..bd143d13772 100644 --- a/src/mame/video/ksayakyu.cpp +++ b/src/mame/video/ksayakyu.cpp @@ -56,7 +56,8 @@ TILE_GET_INFO_MEMBER(ksayakyu_state::get_ksayakyu_tile_info) } /* -xy-- ---- flip bits +x--- ---- flip bits +-y-- ---- unknown, used when runner slides (NOT flip Y!) --cc cc-- color ---- --bb bank select */ @@ -64,9 +65,9 @@ TILE_GET_INFO_MEMBER(ksayakyu_state::get_text_tile_info) { int code = m_videoram[tile_index * 2 + 1]; int attr = m_videoram[tile_index * 2]; - int flags = ((attr & 0x80) ? TILE_FLIPX : 0) | ((attr & 0x40) ? TILE_FLIPY : 0); + int flags = ((attr & 0x80) ? TILE_FLIPX : 0);// | ((attr & 0x40) ? TILE_FLIPY : 0); int color = (attr & 0x3c) >> 2; - + code |= (attr & 3) << 8; SET_TILE_INFO_MEMBER(0, code, color, flags); diff --git a/src/mame/video/leland.cpp b/src/mame/video/leland.cpp index 7f51b56b7c7..4683e7f9361 100644 --- a/src/mame/video/leland.cpp +++ b/src/mame/video/leland.cpp @@ -10,6 +10,7 @@ #include "emu.h" #include "includes/leland.h" +#include "audio/leland.h" /* constants */ diff --git a/src/mame/video/lemmings.cpp b/src/mame/video/lemmings.cpp index 48d74992f63..b7945932770 100644 --- a/src/mame/video/lemmings.cpp +++ b/src/mame/video/lemmings.cpp @@ -48,7 +48,7 @@ void lemmings_state::video_start() save_item(NAME(m_sprite_triple_buffer_1)); } -void lemmings_state::screen_eof_lemmings(screen_device &screen, bool state) +WRITE_LINE_MEMBER(lemmings_state::screen_vblank_lemmings) { // rising edge if (state) diff --git a/src/mame/video/lethalj.cpp b/src/mame/video/lethalj.cpp index c23f2e5f987..09d3a4c06e7 100644 --- a/src/mame/video/lethalj.cpp +++ b/src/mame/video/lethalj.cpp @@ -91,6 +91,8 @@ void lethalj_state::video_start() /* predetermine blitter info */ m_blitter_base = (uint16_t *)memregion("gfx1")->base(); m_blitter_rows = memregion("gfx1")->bytes() / (2*BLITTER_SOURCE_WIDTH); + + m_gen_ext1_int_timer = timer_alloc(TIMER_GEN_EXT1_INT); } @@ -168,7 +170,7 @@ WRITE16_MEMBER(lethalj_state::lethalj_blitter_w) else do_blit(); - timer_set(attotime::from_hz(XTAL_32MHz) * ((m_blitter_data[5] + 1) * (m_blitter_data[7] + 1)), TIMER_GEN_EXT1_INT); + m_gen_ext1_int_timer->adjust(attotime::from_hz(XTAL_32MHz) * ((m_blitter_data[5] + 1) * (m_blitter_data[7] + 1))); } /* clear the IRQ on offset 0 */ diff --git a/src/mame/video/lockon.cpp b/src/mame/video/lockon.cpp index 0b9634ce87f..ee98db7a6a1 100644 --- a/src/mame/video/lockon.cpp +++ b/src/mame/video/lockon.cpp @@ -930,7 +930,7 @@ uint32_t lockon_state::screen_update_lockon(screen_device &screen, bitmap_ind16 return 0; } -void lockon_state::screen_eof_lockon(screen_device &screen, bool state) +WRITE_LINE_MEMBER(lockon_state::screen_vblank_lockon) { // on falling edge if (!state) diff --git a/src/mame/video/m92.cpp b/src/mame/video/m92.cpp index 1329b260427..40337285486 100644 --- a/src/mame/video/m92.cpp +++ b/src/mame/video/m92.cpp @@ -91,7 +91,7 @@ WRITE16_MEMBER(m92_state::m92_spritecontrol_w) /* Pixel clock is 26.6666MHz (some boards 27MHz??), we have 0x800 bytes, or 0x400 words to copy from spriteram to the buffer. It seems safe to assume 1 word can be copied per clock. */ - timer_set(attotime::from_hz(XTAL_26_66666MHz) * 0x400, TIMER_SPRITEBUFFER); + m_spritebuffer_timer->adjust(attotime::from_hz(XTAL_26_66666MHz) * 0x400); } // logerror("%04x: m92_spritecontrol_w %08x %08x\n",space.device().safe_pc(),offset,data); } @@ -247,10 +247,10 @@ WRITE16_MEMBER(m92_state::m92_master_control_w) VIDEO_START_MEMBER(m92_state,m92) { - int laynum; + m_spritebuffer_timer = timer_alloc(TIMER_SPRITEBUFFER); memset(&m_pf_layer, 0, sizeof(m_pf_layer)); - for (laynum = 0; laynum < 3; laynum++) + for (int laynum = 0; laynum < 3; laynum++) { M92_pf_layer_info *layer = &m_pf_layer[laynum]; @@ -301,11 +301,9 @@ VIDEO_START_MEMBER(m92_state,m92) VIDEO_START_MEMBER(m92_state,ppan) { - int laynum; - VIDEO_START_CALL_MEMBER(m92); - for (laynum = 0; laynum < 3; laynum++) + for (int laynum = 0; laynum < 3; laynum++) { M92_pf_layer_info *layer = &m_pf_layer[laynum]; diff --git a/src/mame/video/macrossp.cpp b/src/mame/video/macrossp.cpp index 93ec700a98e..9cac1274daa 100644 --- a/src/mame/video/macrossp.cpp +++ b/src/mame/video/macrossp.cpp @@ -457,7 +457,7 @@ m_scrc_videoregs[2]);// 08 - 0b return 0; } -void macrossp_state::screen_eof_macrossp(screen_device &screen, bool state) +WRITE_LINE_MEMBER(macrossp_state::screen_vblank_macrossp) { // rising edge if (state) diff --git a/src/mame/video/maria.cpp b/src/mame/video/maria.cpp index d76cced296a..f4632c478f4 100644 --- a/src/mame/video/maria.cpp +++ b/src/mame/video/maria.cpp @@ -55,12 +55,12 @@ #define READ_MEM(x) space.read_byte(x) -const device_type ATARI_MARIA = device_creator; +DEFINE_DEVICE_TYPE(ATARI_MARIA, atari_maria_device, "atari_maria", "Atari MARIA") atari_maria_device::atari_maria_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ATARI_MARIA, "Atari MARIA", tag, owner, clock, "atari_maria", __FILE__) + : device_t(mconfig, ATARI_MARIA, tag, owner, clock) { } diff --git a/src/mame/video/maria.h b/src/mame/video/maria.h index 346414dfae3..48145b4062d 100644 --- a/src/mame/video/maria.h +++ b/src/mame/video/maria.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Dan Boris -#ifndef __ATARI_MARIA__ -#define __ATARI_MARIA__ +#ifndef MAME_VIDEO_MARIA_H +#define MAME_VIDEO_MARIA_H + +#pragma once // ======================> atari_maria_device @@ -61,11 +63,11 @@ private: // device type definition -extern const device_type ATARI_MARIA; +DECLARE_DEVICE_TYPE(ATARI_MARIA, atari_maria_device) #define MCFG_MARIA_DMACPU(_tag) \ atari_maria_device::set_cpu_tag(*device, _tag); -#endif +#endif // MAME_VIDEO_MARIA_H diff --git a/src/mame/video/mb60553.cpp b/src/mame/video/mb60553.cpp index 9f34417a83c..9178227b0e4 100644 --- a/src/mame/video/mb60553.cpp +++ b/src/mame/video/mb60553.cpp @@ -13,27 +13,25 @@ #include "screen.h" -const device_type MB60553 = device_creator; +DEFINE_DEVICE_TYPE(MB60553, mb60553_zooming_tilemap_device, "mb60553", "MB60553 Zooming Tilemap") mb60553_zooming_tilemap_device::mb60553_zooming_tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MB60553, "MB60553 Zooming Tilemap", tag, owner, clock, "mb60553", __FILE__), - m_vram(nullptr), - m_pal_base(0), - m_lineram(nullptr), - m_gfx_region(0), - m_gfxdecode(*this, finder_base::DUMMY_TAG) + : device_t(mconfig, MB60553, tag, owner, clock) + , m_tmap(nullptr) + , m_vram() + , m_regs{ 0, 0, 0, 0, 0, 0, 0, 0 } + , m_bank{ 0, 0, 0, 0, 0, 0, 0, 0, } + , m_pal_base(0) + , m_lineram() + , m_gfx_region(0) + , m_gfxdecode(*this, finder_base::DUMMY_TAG) { - for (int i = 0; i < 8; i++) - { - m_regs[i] = 0; - m_bank[i] = 0; - } } void mb60553_zooming_tilemap_device::device_start() { - if(!m_gfxdecode->started()) + if (!m_gfxdecode->started()) throw device_missing_dependencies(); m_lineram = make_unique_clear(0x1000/2); @@ -179,15 +177,9 @@ void mb60553_zooming_tilemap_device::reg_written( int num_reg) TILEMAP_MAPPER_MEMBER(mb60553_zooming_tilemap_device::twc94_scan) { /* logical (col,row) -> memory offset */ - return (row*64) + (col&63) + ((col&64)<<6); -} - -void mb60553_zooming_tilemap_device::set_pal_base( int pal_base) -{ - m_pal_base = pal_base; + return (row << 6) + (col & 0x003f) + (BIT(col, 6) << 12); } - void mb60553_zooming_tilemap_device::draw_roz_core(screen_device &screen, bitmap_ind16 &destbitmap, const rectangle &cliprect, uint32_t startx, uint32_t starty, int incxx, int incxy, int incyx, int incyy, bool wraparound) { @@ -298,12 +290,6 @@ void mb60553_zooming_tilemap_device::draw( screen_device &screen, bitmap_ind16& } } -tilemap_t* mb60553_zooming_tilemap_device::get_tilemap() -{ - return m_tmap; -} - - WRITE16_MEMBER(mb60553_zooming_tilemap_device::regs_w) { uint16_t oldreg = m_regs[offset]; diff --git a/src/mame/video/mb60553.h b/src/mame/video/mb60553.h index b23df749314..71d387227c2 100644 --- a/src/mame/video/mb60553.h +++ b/src/mame/video/mb60553.h @@ -2,27 +2,23 @@ // copyright-holders:David Haywood /*** MB60553 **********************************************/ +#ifndef MAME_VIDEO_MB60533_H +#define MAME_VIDEO_MB60533_H + +#pragma once class mb60553_zooming_tilemap_device : public device_t { public: - mb60553_zooming_tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void static_set_gfxdecode_tag(device_t &device, const char *tag); static void set_gfx_region(device_t &device, int gfxregion); - tilemap_t* m_tmap; - std::unique_ptr m_vram; - uint16_t m_regs[8]; - uint8_t m_bank[8]; - uint16_t m_pal_base; - void reg_written( int num_reg); - TILE_GET_INFO_MEMBER(get_tile_info); - void set_pal_base( int m_pal_base); - void draw( screen_device &screen, bitmap_ind16& bitmap, const rectangle &cliprect, int priority); - tilemap_t* get_tilemap(); + mb60553_zooming_tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - std::unique_ptr m_lineram; + void set_pal_base(int pal_base) { m_pal_base = pal_base; } + void set_transparent_pen(pen_t pen) { m_tmap->set_transparent_pen(pen); } + void draw(screen_device &screen, bitmap_ind16& bitmap, const rectangle &cliprect, int priority); TILEMAP_MAPPER_MEMBER(twc94_scan); @@ -34,22 +30,33 @@ public: DECLARE_READ16_MEMBER(vram_r); DECLARE_READ16_MEMBER(line_r); - void draw_roz_core(screen_device &screen, bitmap_ind16 &destbitmap, const rectangle &cliprect, - uint32_t startx, uint32_t starty, int incxx, int incxy, int incyx, int incyy, bool wraparound); - protected: virtual void device_start() override; virtual void device_reset() override; - private: + + void draw_roz_core(screen_device &screen, bitmap_ind16 &destbitmap, const rectangle &cliprect, + uint32_t startx, uint32_t starty, int incxx, int incxy, int incyx, int incyy, bool wraparound); + + void reg_written(int num_reg); + TILE_GET_INFO_MEMBER(get_tile_info); + + tilemap_t* m_tmap; + std::unique_ptr m_vram; + uint16_t m_regs[8]; + uint8_t m_bank[8]; + uint16_t m_pal_base; + + std::unique_ptr m_lineram; + uint8_t m_gfx_region; required_device m_gfxdecode; }; -extern const device_type MB60553; +DECLARE_DEVICE_TYPE(MB60553, mb60553_zooming_tilemap_device) #define MCFG_MB60553_GFX_REGION(_region) \ @@ -57,3 +64,5 @@ extern const device_type MB60553; #define MCFG_MB60553_GFXDECODE(_gfxtag) \ mb60553_zooming_tilemap_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); + +#endif // MAME_VIDEO_MB60533_H diff --git a/src/mame/video/mbc55x.cpp b/src/mame/video/mbc55x.cpp index eac28ff4419..af946d84baa 100644 --- a/src/mame/video/mbc55x.cpp +++ b/src/mame/video/mbc55x.cpp @@ -184,7 +184,7 @@ void mbc55x_state::video_reset() logerror("Video reset\n"); } -void mbc55x_state::screen_eof_mbc55x(screen_device &screen, bool state) +WRITE_LINE_MEMBER(mbc55x_state::screen_vblank_mbc55x) { -// logerror("screen_eof_mbc55x\n"); +// logerror("screen_vblank_mbc55x\n"); } diff --git a/src/mame/video/mcatadv.cpp b/src/mame/video/mcatadv.cpp index 56149fa1b20..8cef97d7b4a 100644 --- a/src/mame/video/mcatadv.cpp +++ b/src/mame/video/mcatadv.cpp @@ -282,7 +282,7 @@ void mcatadv_state::video_start() save_pointer(NAME(m_vidregs_old.get()), (0x0f + 1) / 2); } -void mcatadv_state::screen_eof_mcatadv(screen_device &screen, bool state) +WRITE_LINE_MEMBER(mcatadv_state::screen_vblank_mcatadv) { // rising edge if (state) diff --git a/src/mame/video/mcd212.cpp b/src/mame/video/mcd212.cpp index a87dc288561..b4460062bd9 100644 --- a/src/mame/video/mcd212.cpp +++ b/src/mame/video/mcd212.cpp @@ -30,7 +30,7 @@ TODO: // device type definition -const device_type MACHINE_MCD212 = device_creator; +DEFINE_DEVICE_TYPE(MACHINE_MCD212, mcd212_device, "mcd212", "MCD212 Video") #if ENABLE_VERBOSE_LOG static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, const char *s_fmt, ...) @@ -1518,8 +1518,8 @@ void mcd212_device::device_reset() //------------------------------------------------- mcd212_device::mcd212_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MACHINE_MCD212, "MCD212 Video", tag, owner, clock, "mcd212", __FILE__), - device_video_interface(mconfig, *this) + : device_t(mconfig, MACHINE_MCD212, tag, owner, clock) + , device_video_interface(mconfig, *this) { } diff --git a/src/mame/video/mcd212.h b/src/mame/video/mcd212.h index e902697c6cd..05088b8f0bb 100644 --- a/src/mame/video/mcd212.h +++ b/src/mame/video/mcd212.h @@ -21,8 +21,10 @@ TODO: *******************************************************************************/ -#ifndef _VIDEO_MCD212_H_ -#define _VIDEO_MCD212_H_ +#ifndef MAME_VIDEO_MCD212_H +#define MAME_VIDEO_MCD212_H + +#pragma once #define MCD212_CURCNT_COLOR 0x00000f // Cursor color @@ -247,6 +249,6 @@ private: }; // device type definition -extern const device_type MACHINE_MCD212; +DECLARE_DEVICE_TYPE(MACHINE_MCD212, mcd212_device) -#endif // _VIDEO_MCD212_H_ +#endif // MAME_VIDEO_MCD212_H diff --git a/src/mame/video/megasys1.cpp b/src/mame/video/megasys1.cpp index 1513d41790b..13b99f9fd2f 100644 --- a/src/mame/video/megasys1.cpp +++ b/src/mame/video/megasys1.cpp @@ -864,7 +864,7 @@ uint32_t megasys1_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -void megasys1_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(megasys1_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/mermaid.cpp b/src/mame/video/mermaid.cpp index e365ccdfad0..77a8aeb3ba2 100644 --- a/src/mame/video/mermaid.cpp +++ b/src/mame/video/mermaid.cpp @@ -244,7 +244,7 @@ uint8_t mermaid_state::collision_check( rectangle& rect ) return data; } -void mermaid_state::screen_eof_mermaid(screen_device &screen, bool state) +WRITE_LINE_MEMBER(mermaid_state::screen_vblank_mermaid) { // rising edge if (state) @@ -304,7 +304,7 @@ void mermaid_state::screen_eof_mermaid(screen_device &screen, bool state) m_helper.fill(0, rect); m_helper2.fill(0, rect); - m_bg_tilemap->draw(screen, m_helper, rect, 0, 0); + m_bg_tilemap->draw(*m_screen, m_helper, rect, 0, 0); m_gfxdecode->gfx(1)->transpen(m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0); @@ -315,7 +315,7 @@ void mermaid_state::screen_eof_mermaid(screen_device &screen, bool state) m_helper.fill(0, rect); m_helper2.fill(0, rect); - m_fg_tilemap->draw(screen, m_helper, rect, 0, 0); + m_fg_tilemap->draw(*m_screen, m_helper, rect, 0, 0); m_gfxdecode->gfx(1)->transpen(m_helper2,rect, code, 0, flipx, flipy, sx, sy, 0); diff --git a/src/mame/video/micro3d.cpp b/src/mame/video/micro3d.cpp index fa15bf259f3..8a8a177e68f 100644 --- a/src/mame/video/micro3d.cpp +++ b/src/mame/video/micro3d.cpp @@ -11,8 +11,10 @@ ****************************************************************************/ #include "emu.h" -#include "cpu/am29000/am29000.h" #include "includes/micro3d.h" +#include "audio/micro3d.h" + +#include "cpu/am29000/am29000.h" /************************************* diff --git a/src/mame/video/midtunit.cpp b/src/mame/video/midtunit.cpp index 075e3c366f1..5e56e29d3fe 100644 --- a/src/mame/video/midtunit.cpp +++ b/src/mame/video/midtunit.cpp @@ -93,6 +93,8 @@ VIDEO_START_MEMBER(midtunit_state,midtunit) /* allocate memory */ local_videoram = std::make_unique(0x100000/2); + m_dma_timer = timer_alloc(TIMER_DMA); + /* reset all the globals */ gfxbank_offset[0] = 0x000000; gfxbank_offset[1] = 0x400000; @@ -790,7 +792,7 @@ if (LOG_DMA) /* signal we're done */ skipdma: - timer_set(attotime::from_nsec(41 * pixels), TIMER_DMA); + m_dma_timer->adjust(attotime::from_nsec(41 * pixels)); g_profiler.stop(); } diff --git a/src/mame/video/midyunit.cpp b/src/mame/video/midyunit.cpp index 62e954bcb6c..5c409dab39e 100644 --- a/src/mame/video/midyunit.cpp +++ b/src/mame/video/midyunit.cpp @@ -48,6 +48,9 @@ VIDEO_START_MEMBER(midyunit_state,common) machine().device("nvram")->set_base(m_cmos_ram.get(), 0x2000 * 4); + m_dma_timer = timer_alloc(TIMER_DMA); + m_autoerase_line_timer = timer_alloc(TIMER_AUTOERASE_LINE); + /* reset all the globals */ m_cmos_page = 0; m_autoerase_enable = 0; @@ -530,7 +533,7 @@ if (LOG_DMA) } /* signal we're done */ - timer_set(attotime::from_nsec(41 * dma_state.width * dma_state.height), TIMER_DMA); + m_dma_timer->adjust(attotime::from_nsec(41 * dma_state.width * dma_state.height)); g_profiler.stop(); } @@ -569,5 +572,5 @@ TMS340X0_SCANLINE_IND16_CB_MEMBER(midyunit_state::scanline_update) /* if this is the last update of the screen, set a timer to clear out the final line */ /* (since we update one behind) */ if (scanline == screen.visible_area().max_y) - timer_set(screen.time_until_pos(scanline + 1), midyunit_state::TIMER_AUTOERASE_LINE, params->rowaddr); + m_autoerase_line_timer->adjust(screen.time_until_pos(scanline + 1), params->rowaddr); } diff --git a/src/mame/video/model1.cpp b/src/mame/video/model1.cpp index 4c0454018b7..b128650fbbb 100644 --- a/src/mame/video/model1.cpp +++ b/src/mame/video/model1.cpp @@ -1667,7 +1667,7 @@ uint32_t model1_state::screen_update_model1(screen_device &screen, bitmap_rgb32 return 0; } -void model1_state::screen_eof_model1(screen_device &screen, bool state) +WRITE_LINE_MEMBER(model1_state::screen_vblank_model1) { // on rising edge if (state) diff --git a/src/mame/video/model2.cpp b/src/mame/video/model2.cpp index a98f05199df..dca574e56b4 100644 --- a/src/mame/video/model2.cpp +++ b/src/mame/video/model2.cpp @@ -2607,7 +2607,7 @@ uint32_t model2_state::screen_update_model2(screen_device &screen, bitmap_rgb32 bitmap.fill(m_palette->pen(0), cliprect); m_sys24_bitmap.fill(0, cliprect); - segas24_tile *tile = machine().device("tile"); + segas24_tile_device *tile = machine().device("tile"); tile->draw(screen, m_sys24_bitmap, cliprect, 7, 0, 0); tile->draw(screen, m_sys24_bitmap, cliprect, 6, 0, 0); tile->draw(screen, m_sys24_bitmap, cliprect, 5, 0, 0); diff --git a/src/mame/video/moo.cpp b/src/mame/video/moo.cpp index 5d5fcfb3d1e..9d9327a2c1b 100644 --- a/src/mame/video/moo.cpp +++ b/src/mame/video/moo.cpp @@ -66,11 +66,11 @@ VIDEO_START_MEMBER(moo_state,bucky) uint32_t moo_state::screen_update_moo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - static const int K053251_CI[4] = { K053251_CI1, K053251_CI2, K053251_CI3, K053251_CI4 }; + static const int K053251_CI[4] = { k053251_device::CI1, k053251_device::CI2, k053251_device::CI3, k053251_device::CI4 }; int layers[3]; int new_colorbase, plane, dirty, alpha; - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI0); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI0); m_layer_colorbase[0] = 0x70; if (m_k056832->get_layer_association()) @@ -101,11 +101,11 @@ uint32_t moo_state::screen_update_moo(screen_device &screen, bitmap_rgb32 &bitma } layers[0] = 1; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); layers[1] = 2; - m_layerpri[1] = m_k053251->get_priority(K053251_CI3); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI3); layers[2] = 3; - m_layerpri[2] = m_k053251->get_priority(K053251_CI4); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4); konami_sortlayers3(layers, m_layerpri); @@ -114,7 +114,7 @@ uint32_t moo_state::screen_update_moo(screen_device &screen, bitmap_rgb32 &bitma screen.priority().fill(0, cliprect); - if (m_layerpri[0] < m_k053251->get_priority(K053251_CI1)) /* bucky hides back layer behind background */ + if (m_layerpri[0] < m_k053251->get_priority(k053251_device::CI1)) /* bucky hides back layer behind background */ m_k056832->tilemap_draw(screen, bitmap, cliprect, layers[0], 0, 1); m_k056832->tilemap_draw(screen, bitmap, cliprect, layers[1], 0, 2); diff --git a/src/mame/video/ms1_tmap.cpp b/src/mame/video/ms1_tmap.cpp index baf05535713..babccf4fafe 100644 --- a/src/mame/video/ms1_tmap.cpp +++ b/src/mame/video/ms1_tmap.cpp @@ -36,10 +36,10 @@ static constexpr int TILES_PER_PAGE = TILES_PER_PAGE_X * TILES_PER_PAGE_Y; */ -const device_type MEGASYS1_TILEMAP = device_creator; +DEFINE_DEVICE_TYPE(MEGASYS1_TILEMAP, megasys1_tilemap_device, "ms1_tmap", "Mega System 1 Tilemap") megasys1_tilemap_device::megasys1_tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MEGASYS1_TILEMAP, "Mega System 1 Tilemap", tag, owner, clock, "ms1_tmap", __FILE__), + : device_t(mconfig, MEGASYS1_TILEMAP, tag, owner, clock), device_gfx_interface(mconfig, *this), m_scrollram(*this, DEVICE_SELF), m_8x8_scroll_factor(1), diff --git a/src/mame/video/ms1_tmap.h b/src/mame/video/ms1_tmap.h index f0607b9a4be..4bf19756931 100644 --- a/src/mame/video/ms1_tmap.h +++ b/src/mame/video/ms1_tmap.h @@ -8,11 +8,11 @@ and mahjong games from the same period. ***************************************************************************/ +#ifndef MAME_VIDEO_MS1_TMAP_H +#define MAME_VIDEO_MS1_TMAP_H #pragma once -#ifndef MAME_VIDEO_MEGASYS1_TILEMAP_DEVICE -#define MAME_VIDEO_MEGASYS1_TILEMAP_DEVICE //************************************************************************** // DEVICE CONFIGURATION MACROS @@ -96,6 +96,6 @@ private: }; // device type definition -extern const device_type MEGASYS1_TILEMAP; +DECLARE_DEVICE_TYPE(MEGASYS1_TILEMAP, megasys1_tilemap_device) -#endif /* MAME_VIDEO_MEGASYS1_TILEMAP_DEVICE */ +#endif // MAME_VIDEO_MS1_TMAP_H diff --git a/src/mame/video/msisaac.cpp b/src/mame/video/msisaac.cpp index e41c1b4266a..fea78aae6d3 100644 --- a/src/mame/video/msisaac.cpp +++ b/src/mame/video/msisaac.cpp @@ -169,7 +169,7 @@ void msisaac_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec if (attributes & 4) { - //color = rand() & 15; + //color = machine().rand() & 15; gfx = m_gfxdecode->gfx(3); } diff --git a/src/mame/video/mw8080bw.cpp b/src/mame/video/mw8080bw.cpp index 6fb940571cc..2faa2adb3a4 100644 --- a/src/mame/video/mw8080bw.cpp +++ b/src/mame/video/mw8080bw.cpp @@ -345,7 +345,7 @@ uint32_t mw8080bw_state::screen_update_phantom2(screen_device &screen, bitmap_rg } -void mw8080bw_state::screen_eof_phantom2(screen_device &screen, bool state) +WRITE_LINE_MEMBER(mw8080bw_state::screen_vblank_phantom2) { // falling edge if (!state) diff --git a/src/mame/video/n64.cpp b/src/mame/video/n64.cpp index dd69cb6334c..d12787bb9b0 100644 --- a/src/mame/video/n64.cpp +++ b/src/mame/video/n64.cpp @@ -165,7 +165,7 @@ uint32_t n64_state::screen_update_n64(screen_device &screen, bitmap_rgb32 &bitma return 0; } -void n64_state::screen_eof_n64(screen_device &screen, bool state) +WRITE_LINE_MEMBER(n64_state::screen_vblank_n64) { } @@ -956,7 +956,7 @@ void n64_rdp::get_dither_values(int32_t x, int32_t y, int32_t* cdith, int32_t* a break; case 14: *cdith = 0; - *adith = m_machine->rand() & 7; + *adith = machine().rand() & 7; break; case 15: *adith = *cdith = 0; @@ -1664,7 +1664,7 @@ void n64_rdp::disassemble(char* buffer) case 0x2f: sprintf(buffer, "Set_Other_Modes %08X %08X", uint32_t(cmd[0] >> 32), (uint32_t)cmd[0]); break; case 0x30: sprintf(buffer, "Load_TLUT %d, %s, %s, %s, %s", tile, sl, tl, sh, th); break; case 0x32: sprintf(buffer, "Set_Tile_Size %d, %s, %s, %s, %s", tile, sl, tl, sh, th); break; - case 0x33: sprintf(buffer, "Load_Block %d, %03X, %03X, %03X, %03X", tile, uint32_t(cmd[0] >> 44) & 0xfff, uint32_t(cmd[0] >> 32) & 0xfff, uint32_t(cmd[0] >> 12) & 0xfff, uint32_t(cmd[1]) & 0xfff); break; + case 0x33: sprintf(buffer, "Load_Block %d, %03X, %03X, %03X, %03X", tile, uint32_t(cmd[0] >> 44) & 0xfff, uint32_t(cmd[0] >> 32) & 0xfff, uint32_t(cmd[0] >> 12) & 0xfff, uint32_t(cmd[0]) & 0xfff); break; case 0x34: sprintf(buffer, "Load_Tile %d, %s, %s, %s, %s", tile, sl, tl, sh, th); break; case 0x35: sprintf(buffer, "Set_Tile %d, %s, %s, %d, %04X", tile, format, size, (uint32_t(cmd[0] >> 41) & 0x1ff) * 8, (uint32_t(cmd[0] >> 32) & 0x1ff) * 8); break; case 0x36: sprintf(buffer, "Fill_Rectangle %s, %s, %s, %s", sh, th, sl, tl); break; @@ -3636,7 +3636,7 @@ void n64_rdp::span_draw_1cycle(int32_t scanline, const extent_t &extent, const r uint32_t t0a = userdata->m_texel0_color.get_a(); userdata->m_texel0_alpha.set(t0a, t0a, t0a, t0a); - const uint8_t noise = rand() << 3; // Not accurate + const uint8_t noise = machine().rand() << 3; // Not accurate userdata->m_noise_color.set(0, noise, noise, noise); rgbaint_t rgbsub_a(*userdata->m_color_inputs.combiner_rgbsub_a[1]); @@ -3863,7 +3863,7 @@ void n64_rdp::span_draw_2cycle(int32_t scanline, const extent_t &extent, const r userdata->m_texel1_alpha.set(t1a, t1a, t1a, t1a); userdata->m_next_texel_alpha.set(tna, tna, tna, tna); - const uint8_t noise = rand() << 3; // Not accurate + const uint8_t noise = machine().rand() << 3; // Not accurate userdata->m_noise_color.set(0, noise, noise, noise); rgbaint_t rgbsub_a(*userdata->m_color_inputs.combiner_rgbsub_a[0]); diff --git a/src/mame/video/n8080.cpp b/src/mame/video/n8080.cpp index f2d625f12c0..eab68ba12ca 100644 --- a/src/mame/video/n8080.cpp +++ b/src/mame/video/n8080.cpp @@ -338,7 +338,7 @@ uint32_t n8080_state::screen_update_helifire(screen_device &screen, bitmap_ind16 } -void n8080_state::screen_eof_helifire(screen_device &screen, bool state) +WRITE_LINE_MEMBER(n8080_state::screen_vblank_helifire) { // falling edge if (!state) diff --git a/src/mame/video/namco_c116.cpp b/src/mame/video/namco_c116.cpp index c62831ba901..4ccd853693f 100644 --- a/src/mame/video/namco_c116.cpp +++ b/src/mame/video/namco_c116.cpp @@ -68,14 +68,14 @@ i960 CPU, needs to write its clip and raster values byteswapped. #include "emu.h" #include "video/namco_c116.h" -const device_type NAMCO_C116 = device_creator; +DEFINE_DEVICE_TYPE(NAMCO_C116, namco_c116_device, "namco_c116", "Namco C116 Video Controller") //------------------------------------------------- // namco_c116_device -- constructor //------------------------------------------------- namco_c116_device::namco_c116_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NAMCO_C116, "Namco C116 Video Controller", tag, owner, clock, "namco_c116", __FILE__), + : device_t(mconfig, NAMCO_C116, tag, owner, clock), device_gfx_interface(mconfig, *this), device_video_interface(mconfig, *this) { diff --git a/src/mame/video/namco_c116.h b/src/mame/video/namco_c116.h index 48d5c46f932..e24d61119c0 100644 --- a/src/mame/video/namco_c116.h +++ b/src/mame/video/namco_c116.h @@ -1,10 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Alex W. Jackson +#ifndef MAME_VIDEO_NAMCO_C116_H +#define MAME_VIDEO_NAMCO_C116_H #pragma once -#ifndef __C116_H__ -#define __C116_H__ //*************************************************************************** @@ -39,6 +39,6 @@ private: uint16_t m_regs[8]; }; -extern const device_type NAMCO_C116; +DECLARE_DEVICE_TYPE(NAMCO_C116, namco_c116_device) -#endif +#endif // MAME_VIDEO_NAMCO_C116_H diff --git a/src/mame/video/namcofl.cpp b/src/mame/video/namcofl.cpp index 4f9267c0a77..f23c3648f33 100644 --- a/src/mame/video/namcofl.cpp +++ b/src/mame/video/namcofl.cpp @@ -1,11 +1,12 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont, ElSemi -/* video/namcofl.c */ +/* video/namcofl.cpp */ #include "emu.h" -#include "includes/namcoic.h" #include "includes/namcofl.h" +#include "machine/namcoic.h" + /* nth_word32 is a general-purpose utility function, which allows us to * read from 32-bit aligned memory as if it were an array of 16 bit words. @@ -47,7 +48,7 @@ nth_byte32( const uint32_t *pSource, int which ) } /* nth_byte32 */ #endif -static void TilemapCB(running_machine &machine, uint16_t code, int *tile, int *mask ) +void namcofl_state::TilemapCB(uint16_t code, int *tile, int *mask) { *tile = code; *mask = code; @@ -64,7 +65,7 @@ uint32_t namcofl_state::screen_update_namcofl(screen_device &screen, bitmap_ind1 { c169_roz_draw(screen, bitmap, cliprect, pri); if((pri&1)==0) - namco_tilemap_draw( screen, bitmap, cliprect, pri>>1 ); + c123_tilemap_draw( screen, bitmap, cliprect, pri>>1 ); c355_obj_draw(screen, bitmap, cliprect, pri ); } @@ -80,17 +81,16 @@ WRITE32_MEMBER(namcofl_state::namcofl_spritebank_w) COMBINE_DATA(&m_sprbank); } -static int FLobjcode2tile( running_machine &machine, int code ) +int namcofl_state::FLobjcode2tile(int code) { - namcofl_state *state = machine.driver_data(); - if ((code & 0x2000) && (state->m_sprbank & 2)) { code += 0x4000; } + if ((code & 0x2000) && (m_sprbank & 2)) { code += 0x4000; } return code; } VIDEO_START_MEMBER(namcofl_state,namcofl) { - namco_tilemap_init(NAMCOFL_TILEGFX, memregion(NAMCOFL_TILEMASKREGION)->base(), TilemapCB ); - c355_obj_init(NAMCOFL_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&FLobjcode2tile, &machine())); + c123_tilemap_init(NAMCOFL_TILEGFX, memregion(NAMCOFL_TILEMASKREGION)->base(), namcos2_shared_state::c123_tilemap_delegate(&namcofl_state::TilemapCB, this)); + c355_obj_init(NAMCOFL_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&namcofl_state::FLobjcode2tile, this)); c169_roz_init(NAMCOFL_ROTGFX,NAMCOFL_ROTMASKREGION); } diff --git a/src/mame/video/namconb1.cpp b/src/mame/video/namconb1.cpp index a51794ad84e..ae13ed4e4b5 100644 --- a/src/mame/video/namconb1.cpp +++ b/src/mame/video/namconb1.cpp @@ -4,7 +4,8 @@ #include "emu.h" #include "includes/namconb1.h" -#include "includes/namcoic.h" + +#include "machine/namcoic.h" /* nth_word32 is a general-purpose utility function, which allows us to @@ -40,24 +41,21 @@ nth_byte32( const uint32_t *pSource, int which ) } } /* nth_byte32 */ -static void -NB1TilemapCB(running_machine &machine, uint16_t code, int *tile, int *mask ) +void namconb1_state::NB1TilemapCB(uint16_t code, int *tile, int *mask) { *tile = code; *mask = code; } /* NB1TilemapCB */ -static void -NB2TilemapCB(running_machine &machine, uint16_t code, int *tile, int *mask ) +void namconb1_state::NB2TilemapCB(uint16_t code, int *tile, int *mask ) { - namconb1_state *state = machine.driver_data(); int mangle; - if( state->m_gametype == NAMCONB2_MACH_BREAKERS ) + if( m_gametype == NAMCONB2_MACH_BREAKERS ) { /* 00010203 04050607 00010203 04050607 (normal) */ /* 00010718 191a1b07 00010708 090a0b07 (alt bank) */ - int bank = nth_byte32( state->m_tilebank32, (code>>13)+8 ); + int bank = nth_byte32( m_tilebank32, (code>>13)+8 ); mangle = (code&0x1fff) + bank*0x2000; *tile = mangle; *mask = mangle; @@ -84,7 +82,7 @@ void namconb1_state::video_update_common(screen_device &screen, bitmap_ind16 &bi c169_roz_draw(screen, bitmap, cliprect, pri); if( (pri&1)==0 ) { - namco_tilemap_draw( screen, bitmap, cliprect, pri/2 ); + c123_tilemap_draw( screen, bitmap, cliprect, pri/2 ); } c355_obj_draw(screen, bitmap, cliprect, pri ); } @@ -93,7 +91,7 @@ void namconb1_state::video_update_common(screen_device &screen, bitmap_ind16 &bi { for( pri=0; pri<8; pri++ ) { - namco_tilemap_draw( screen, bitmap, cliprect, pri ); + c123_tilemap_draw( screen, bitmap, cliprect, pri ); c355_obj_draw(screen, bitmap, cliprect, pri ); } } @@ -128,7 +126,7 @@ int namconb1_state::NB1objcode2tile( int code ) VIDEO_START_MEMBER(namconb1_state,namconb1) { - namco_tilemap_init(NAMCONB1_TILEGFX, memregion(NAMCONB1_TILEMASKREGION)->base(), NB1TilemapCB ); + c123_tilemap_init(NAMCONB1_TILEGFX, memregion(NAMCONB1_TILEMASKREGION)->base(), namcos2_shared_state::c123_tilemap_delegate(&namconb1_state::NB1TilemapCB, this)); c355_obj_init(NAMCONB1_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&namconb1_state::NB1objcode2tile, this)); save_item(NAME(m_tilemap_tile_bank)); @@ -152,7 +150,7 @@ uint32_t namconb1_state::screen_update_namconb2(screen_device &screen, bitmap_in if( memcmp(m_tilemap_tile_bank,m_tilebank32,sizeof(m_tilemap_tile_bank))!=0 ) { - namco_tilemap_invalidate(); + c123_tilemap_invalidate(); memcpy(m_tilemap_tile_bank,m_tilebank32,sizeof(m_tilemap_tile_bank)); } video_update_common( screen, bitmap, clip, 1 ); @@ -186,7 +184,7 @@ int namconb1_state::NB2objcode2tile( int code ) VIDEO_START_MEMBER(namconb1_state,namconb2) { - namco_tilemap_init(NAMCONB1_TILEGFX, memregion(NAMCONB1_TILEMASKREGION)->base(), NB2TilemapCB ); + c123_tilemap_init(NAMCONB1_TILEGFX, memregion(NAMCONB1_TILEMASKREGION)->base(), namcos2_shared_state::c123_tilemap_delegate(&namconb1_state::NB2TilemapCB, this)); c355_obj_init(NAMCONB1_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(&namconb1_state::NB2objcode2tile, this)); c169_roz_init(NAMCONB1_ROTGFX,NAMCONB1_ROTMASKREGION); diff --git a/src/mame/video/namcos1.cpp b/src/mame/video/namcos1.cpp index cba0f3e3a7d..0caac817ce0 100644 --- a/src/mame/video/namcos1.cpp +++ b/src/mame/video/namcos1.cpp @@ -347,7 +347,7 @@ uint32_t namcos1_state::screen_update(screen_device &screen, bitmap_ind16 &bitma } -void namcos1_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(namcos1_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/namcos2.cpp b/src/mame/video/namcos2.cpp index ea036dd33d8..55f6f07a109 100644 --- a/src/mame/video/namcos2.cpp +++ b/src/mame/video/namcos2.cpp @@ -3,18 +3,13 @@ /* video hardware for Namco System II */ #include "emu.h" - #include "includes/namcos2.h" -#include "includes/namcoic.h" -static void -TilemapCB( running_machine &machine, uint16_t code, int *tile, int *mask ) -//void namcos2_shared_state::tilemap_cb(uint16_t code, int *tile, int *mask) +void namcos2_state::TilemapCB(uint16_t code, int *tile, int *mask) { *mask = code; - namcos2_shared_state *state = machine.driver_data(); - switch( state->m_gametype ) + switch( m_gametype ) { case NAMCOS2_FINAL_LAP_2: case NAMCOS2_FINAL_LAP_3: @@ -401,7 +396,7 @@ void namcos2_state::draw_sprite_init() void namcos2_state::video_start() { - namco_tilemap_init(2, memregion("gfx4")->base(), TilemapCB); + c123_tilemap_init(2, memregion("gfx4")->base(), namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this)); m_tilemap_roz = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_state::roz_tile_info), this), TILEMAP_SCAN_ROWS, 8,8,256,256); m_tilemap_roz->set_transparent_pen(0xff); draw_sprite_init(); @@ -433,7 +428,7 @@ uint32_t namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitma { if( (pri&1)==0 ) { - namco_tilemap_draw( screen, bitmap, clip, pri/2 ); + c123_tilemap_draw( screen, bitmap, clip, pri/2 ); if( ((m_gfx_ctrl & 0x7000) >> 12)==pri/2 ) { @@ -449,7 +444,7 @@ uint32_t namcos2_state::screen_update(screen_device &screen, bitmap_ind16 &bitma void namcos2_state::video_start_finallap() { - namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB); + c123_tilemap_init(2,memregion("gfx4")->base(),namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this)); draw_sprite_init(); } @@ -466,7 +461,7 @@ uint32_t namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind { if( (pri&1)==0 ) { - namco_tilemap_draw( screen, bitmap, clip, pri/2 ); + c123_tilemap_draw( screen, bitmap, clip, pri/2 ); } m_c45_road->draw(bitmap,clip,pri); draw_sprites(screen,bitmap,clip,pri,m_gfx_ctrl ); @@ -478,7 +473,7 @@ uint32_t namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind void namcos2_state::video_start_luckywld() { - namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB); + c123_tilemap_init(2,memregion("gfx4")->base(),namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this)); c355_obj_init( 0, 0x0, namcos2_shared_state::c355_obj_code2tile_delegate() ); if( m_gametype==NAMCOS2_LUCKY_AND_WILD ) { @@ -499,7 +494,7 @@ uint32_t namcos2_state::screen_update_luckywld(screen_device &screen, bitmap_ind { if( (pri&1)==0 ) { - namco_tilemap_draw( screen, bitmap, clip, pri/2 ); + c123_tilemap_draw( screen, bitmap, clip, pri/2 ); } m_c45_road->draw(bitmap,clip,pri); if( m_gametype==NAMCOS2_LUCKY_AND_WILD ) @@ -515,7 +510,7 @@ uint32_t namcos2_state::screen_update_luckywld(screen_device &screen, bitmap_ind void namcos2_state::video_start_sgunner() { - namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB); + c123_tilemap_init(2,memregion("gfx4")->base(),namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this)); c355_obj_init( 0, 0x0, namcos2_shared_state::c355_obj_code2tile_delegate() ); } @@ -530,7 +525,7 @@ uint32_t namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind1 for( pri=0; pri<8; pri++ ) { - namco_tilemap_draw( screen, bitmap, clip, pri ); + c123_tilemap_draw( screen, bitmap, clip, pri ); c355_obj_draw(screen, bitmap, clip, pri ); } return 0; @@ -541,7 +536,7 @@ uint32_t namcos2_state::screen_update_sgunner(screen_device &screen, bitmap_ind1 void namcos2_state::video_start_metlhawk() { - namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB); + c123_tilemap_init(2,memregion("gfx4")->base(),namcos2_shared_state::c123_tilemap_delegate(&namcos2_state::TilemapCB, this)); c169_roz_init(1, "gfx5"); } @@ -558,7 +553,7 @@ uint32_t namcos2_state::screen_update_metlhawk(screen_device &screen, bitmap_ind { if( (pri&1)==0 ) { - namco_tilemap_draw( screen, bitmap, clip, pri/2 ); + c123_tilemap_draw( screen, bitmap, clip, pri/2 ); } c169_roz_draw(screen, bitmap, clip, pri); draw_sprites_metalhawk(screen,bitmap,clip,pri ); diff --git a/src/mame/video/namcos21.cpp b/src/mame/video/namcos21.cpp index d7f5cb7ad14..5fdb1deda54 100644 --- a/src/mame/video/namcos21.cpp +++ b/src/mame/video/namcos21.cpp @@ -25,9 +25,11 @@ Namco System 21 Video Hardware */ #include "emu.h" -#include "includes/namcoic.h" #include "includes/namcos21.h" +#include "machine/namcoic.h" + + #define FRAMEBUFFER_SIZE_IN_BYTES (sizeof(uint16_t)*NAMCOS21_POLY_FRAME_WIDTH*NAMCOS21_POLY_FRAME_HEIGHT) READ16_MEMBER(namcos21_state::winrun_gpu_color_r) diff --git a/src/mame/video/namcos86.cpp b/src/mame/video/namcos86.cpp index e075e830b50..0d97fac415b 100644 --- a/src/mame/video/namcos86.cpp +++ b/src/mame/video/namcos86.cpp @@ -365,7 +365,7 @@ uint32_t namcos86_state::screen_update(screen_device &screen, bitmap_ind16 &bitm } -void namcos86_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(namcos86_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/neogeo.cpp b/src/mame/video/neogeo.cpp index d71f196748f..ad0481ac655 100644 --- a/src/mame/video/neogeo.cpp +++ b/src/mame/video/neogeo.cpp @@ -11,6 +11,9 @@ #include "includes/neogeo.h" #include "video/resnet.h" +#define VERBOSE (0) + + #define NUM_PENS (0x1000) /************************************* diff --git a/src/mame/video/neogeo_spr.cpp b/src/mame/video/neogeo_spr.cpp index 91c3348d93c..069015f632f 100644 --- a/src/mame/video/neogeo_spr.cpp +++ b/src/mame/video/neogeo_spr.cpp @@ -14,13 +14,10 @@ neosprite_base_device::neosprite_base_device( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - uint32_t clock, - const char *shortname, - const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) + uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , m_bppshift(4) { } @@ -649,10 +646,10 @@ void neosprite_base_device::set_pens(const pen_t* pens) /* regions (alternatively I could add an additional size check in the draw routine, but that would be slower) */ /*********************************************************************************************************************************/ -const device_type NEOGEO_SPRITE_REGULAR = device_creator; +DEFINE_DEVICE_TYPE(NEOGEO_SPRITE_REGULAR, neosprite_regular_device, "neosprite_reg", "Neo-Geo Sprites (regular)") neosprite_regular_device::neosprite_regular_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : neosprite_base_device(mconfig, NEOGEO_SPRITE_REGULAR, "Neo-Geo Sprites (regular)", tag, owner, clock, "neosprite_reg", __FILE__) + : neosprite_base_device(mconfig, NEOGEO_SPRITE_REGULAR, tag, owner, clock) { } @@ -697,10 +694,10 @@ inline void neosprite_regular_device::draw_pixel(int romaddr, uint32_t* dst, con /* for additional speed */ /*********************************************************************************************************************************/ -const device_type NEOGEO_SPRITE_OPTIMZIED = device_creator; +DEFINE_DEVICE_TYPE(NEOGEO_SPRITE_OPTIMZIED, neosprite_optimized_device, "neosprite_opt", "Neo-Geo Sprites (optimized)") neosprite_optimized_device::neosprite_optimized_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : neosprite_base_device(mconfig, NEOGEO_SPRITE_OPTIMZIED, "Neo-Geo Sprites (optimized)", tag, owner, clock, "neosprite_opt", __FILE__) + : neosprite_base_device(mconfig, NEOGEO_SPRITE_OPTIMZIED, tag, owner, clock) , m_spritegfx8(nullptr) { } @@ -773,11 +770,11 @@ inline void neosprite_optimized_device::draw_pixel(int romaddr, uint32_t* dst, c /* and uploads the zoom table. The additional videoram buffering is a guess because 'hammer' is very glitchy without it */ /*********************************************************************************************************************************/ -const device_type NEOGEO_SPRITE_MIDAS = device_creator; +DEFINE_DEVICE_TYPE(NEOGEO_SPRITE_MIDAS, neosprite_midas_device, "midassprite", "MIDAS Sprites") neosprite_midas_device::neosprite_midas_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : neosprite_base_device(mconfig, NEOGEO_SPRITE_MIDAS, "MIDAS Sprites", tag, owner, clock, "midassprite", __FILE__) + : neosprite_base_device(mconfig, NEOGEO_SPRITE_MIDAS, tag, owner, clock) { m_bppshift = 8; } diff --git a/src/mame/video/neogeo_spr.h b/src/mame/video/neogeo_spr.h index 8c040c4f903..0c4cc9ce5d6 100644 --- a/src/mame/video/neogeo_spr.h +++ b/src/mame/video/neogeo_spr.h @@ -1,7 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari // thanks-to:Fuzz -#define VERBOSE (0) +#ifndef MAME_VIDEO_NEOGEO_SPR_H +#define MAME_VIDEO_NEOGEO_SPR_H + +#pragma once // todo, move these back, currently the sprite code needs some of the values tho #define NEOGEO_MASTER_CLOCK (24000000) @@ -80,12 +83,9 @@ protected: neosprite_base_device( const machine_config &mconfig, device_type type, - const char *name, const char *tag, device_t *owner, - uint32_t clock, - const char *shortname, - const char *source); + uint32_t clock); virtual void device_start() override; virtual void device_reset() override; @@ -97,8 +97,6 @@ protected: const pen_t *m_pens; }; -//extern const device_type NEOGEO_SPRITE_BASE; - class neosprite_regular_device : public neosprite_base_device { @@ -109,7 +107,7 @@ public: }; -extern const device_type NEOGEO_SPRITE_REGULAR; +DECLARE_DEVICE_TYPE(NEOGEO_SPRITE_REGULAR, neosprite_regular_device) class neosprite_optimized_device : public neosprite_base_device @@ -126,10 +124,7 @@ private: uint32_t optimize_helper(std::vector &spritegfx, uint8_t* region_sprites, uint32_t region_sprites_size); }; -extern const device_type NEOGEO_SPRITE_OPTIMZIED; - - - +DECLARE_DEVICE_TYPE(NEOGEO_SPRITE_OPTIMZIED, neosprite_optimized_device) class neosprite_midas_device : public neosprite_base_device @@ -149,4 +144,6 @@ public: }; -extern const device_type NEOGEO_SPRITE_MIDAS; +DECLARE_DEVICE_TYPE(NEOGEO_SPRITE_MIDAS, neosprite_midas_device) + +#endif // MAME_VIDEO_NEOGEO_SPR_H diff --git a/src/mame/video/nes.cpp b/src/mame/video/nes.cpp index 5443911540c..a4306ca4ed5 100644 --- a/src/mame/video/nes.cpp +++ b/src/mame/video/nes.cpp @@ -13,7 +13,7 @@ void nes_state::video_reset() { - m_ppu->set_vidaccess_callback(ppu2c0x_vidaccess_delegate(FUNC(nes_state::nes_ppu_vidaccess),this)); + m_ppu->set_vidaccess_callback(ppu2c0x_device::vidaccess_delegate(FUNC(nes_state::nes_ppu_vidaccess),this)); } void nes_state::video_start() diff --git a/src/mame/video/newport.cpp b/src/mame/video/newport.cpp index 21a03eef2db..8691d996dd1 100644 --- a/src/mame/video/newport.cpp +++ b/src/mame/video/newport.cpp @@ -80,11 +80,11 @@ static inline void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_l #define XMAP1_MODETBLIDX m_XMAP1.nRegister[0x07] -const device_type NEWPORT_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(NEWPORT_VIDEO, newport_video_device, "newport_video", "SGI Newport graphics board") newport_video_device::newport_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NEWPORT_VIDEO, "SGI Newport graphics board", tag, owner, clock, "newport_video", __FILE__) + : device_t(mconfig, NEWPORT_VIDEO, tag, owner, clock) { } diff --git a/src/mame/video/newport.h b/src/mame/video/newport.h index 4c210b2176f..46774652a0b 100644 --- a/src/mame/video/newport.h +++ b/src/mame/video/newport.h @@ -5,116 +5,15 @@ */ -#ifndef __VIDHRDW_NEWPORT__ -#define __VIDHRDW_NEWPORT__ - -struct VC2_t -{ - uint16_t nRegister[0x21]; - uint16_t nRAM[0x8000]; - uint8_t nRegIdx; - uint16_t nRegData; -}; - - -struct XMAP_t -{ - uint32_t nRegister[0x08]; - uint32_t nModeTable[0x20]; -}; - -struct REX3_t -{ - uint32_t nDrawMode1; - uint32_t nDrawMode0; - uint32_t nLSMode; - uint32_t nLSPattern; - uint32_t nLSPatSave; - uint32_t nZPattern; - uint32_t nColorBack; - uint32_t nColorVRAM; - uint32_t nAlphaRef; - //uint32_t nStall0; - uint32_t nSMask0X; - uint32_t nSMask0Y; - uint32_t nSetup; - uint32_t nStepZ; - uint32_t nXStart; - uint32_t nYStart; - uint32_t nXEnd; - uint32_t nYEnd; - uint32_t nXSave; - uint32_t nXYMove; - uint32_t nBresD; - uint32_t nBresS1; - uint32_t nBresOctInc1; - uint32_t nBresRndInc2; - uint32_t nBresE1; - uint32_t nBresS2; - uint32_t nAWeight0; - uint32_t nAWeight1; - uint32_t nXStartF; - uint32_t nYStartF; - uint32_t nXEndF; - uint32_t nYEndF; - uint32_t nXStartI; - //uint32_t nYEndF1; - uint32_t nXYStartI; - uint32_t nXYEndI; - uint32_t nXStartEndI; - uint32_t nColorRed; - uint32_t nColorAlpha; - uint32_t nColorGreen; - uint32_t nColorBlue; - uint32_t nSlopeRed; - uint32_t nSlopeAlpha; - uint32_t nSlopeGreen; - uint32_t nSlopeBlue; - uint32_t nWriteMask; - uint32_t nZeroFract; - uint32_t nZeroOverflow; - //uint32_t nColorIndex; - uint32_t nHostDataPortMSW; - uint32_t nHostDataPortLSW; - uint32_t nDCBMode; - uint32_t nDCBRegSelect; - uint32_t nDCBSlvSelect; - uint32_t nDCBDataMSW; - uint32_t nDCBDataLSW; - uint32_t nSMask1X; - uint32_t nSMask1Y; - uint32_t nSMask2X; - uint32_t nSMask2Y; - uint32_t nSMask3X; - uint32_t nSMask3Y; - uint32_t nSMask4X; - uint32_t nSMask4Y; - uint32_t nTopScanline; - uint32_t nXYWin; - uint32_t nClipMode; - uint32_t nConfig; - uint32_t nStatus; - uint8_t nXFerWidth; -#if 0 - uint32_t nCurrentX; - uint32_t nCurrentY; -#endif - uint32_t nKludge_SkipLine; -}; - - -struct CMAP_t -{ - uint16_t nPaletteIndex; - uint32_t nPalette[0x10000]; -}; +#ifndef MAME_VIDEO_NEWPORT_H +#define MAME_VIDEO_NEWPORT_H +#pragma once class newport_video_device : public device_t { public: newport_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~newport_video_device() {} DECLARE_READ32_MEMBER( rex3_r ); @@ -128,6 +27,108 @@ protected: virtual void device_reset() override; private: + struct VC2_t + { + uint16_t nRegister[0x21]; + uint16_t nRAM[0x8000]; + uint8_t nRegIdx; + uint16_t nRegData; + }; + + + struct XMAP_t + { + uint32_t nRegister[0x08]; + uint32_t nModeTable[0x20]; + }; + + struct REX3_t + { + uint32_t nDrawMode1; + uint32_t nDrawMode0; + uint32_t nLSMode; + uint32_t nLSPattern; + uint32_t nLSPatSave; + uint32_t nZPattern; + uint32_t nColorBack; + uint32_t nColorVRAM; + uint32_t nAlphaRef; + //uint32_t nStall0; + uint32_t nSMask0X; + uint32_t nSMask0Y; + uint32_t nSetup; + uint32_t nStepZ; + uint32_t nXStart; + uint32_t nYStart; + uint32_t nXEnd; + uint32_t nYEnd; + uint32_t nXSave; + uint32_t nXYMove; + uint32_t nBresD; + uint32_t nBresS1; + uint32_t nBresOctInc1; + uint32_t nBresRndInc2; + uint32_t nBresE1; + uint32_t nBresS2; + uint32_t nAWeight0; + uint32_t nAWeight1; + uint32_t nXStartF; + uint32_t nYStartF; + uint32_t nXEndF; + uint32_t nYEndF; + uint32_t nXStartI; + //uint32_t nYEndF1; + uint32_t nXYStartI; + uint32_t nXYEndI; + uint32_t nXStartEndI; + uint32_t nColorRed; + uint32_t nColorAlpha; + uint32_t nColorGreen; + uint32_t nColorBlue; + uint32_t nSlopeRed; + uint32_t nSlopeAlpha; + uint32_t nSlopeGreen; + uint32_t nSlopeBlue; + uint32_t nWriteMask; + uint32_t nZeroFract; + uint32_t nZeroOverflow; + //uint32_t nColorIndex; + uint32_t nHostDataPortMSW; + uint32_t nHostDataPortLSW; + uint32_t nDCBMode; + uint32_t nDCBRegSelect; + uint32_t nDCBSlvSelect; + uint32_t nDCBDataMSW; + uint32_t nDCBDataLSW; + uint32_t nSMask1X; + uint32_t nSMask1Y; + uint32_t nSMask2X; + uint32_t nSMask2Y; + uint32_t nSMask3X; + uint32_t nSMask3Y; + uint32_t nSMask4X; + uint32_t nSMask4Y; + uint32_t nTopScanline; + uint32_t nXYWin; + uint32_t nClipMode; + uint32_t nConfig; + uint32_t nStatus; + uint8_t nXFerWidth; +#if 0 + uint32_t nCurrentX; + uint32_t nCurrentY; +#endif + uint32_t nKludge_SkipLine; + }; + + + struct CMAP_t + { + uint16_t nPaletteIndex; + uint32_t nPalette[0x10000]; + }; + + // internal state DECLARE_READ32_MEMBER( cmap0_r ); @@ -156,7 +157,7 @@ private: MCFG_DEVICE_ADD(_tag, NEWPORT_VIDEO, 0) -extern const device_type NEWPORT_VIDEO; +DECLARE_DEVICE_TYPE(NEWPORT_VIDEO, newport_video_device) -#endif +#endif // MAME_VIDEO_NEWPORT_H diff --git a/src/mame/video/nick.cpp b/src/mame/video/nick.cpp index d8191174fdf..906d715ec6f 100644 --- a/src/mame/video/nick.cpp +++ b/src/mame/video/nick.cpp @@ -73,7 +73,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type NICK = device_creator; +DEFINE_DEVICE_TYPE(NICK, nick_device, "nick", "NICK") DEVICE_ADDRESS_MAP_START( vram_map, 8, nick_device ) @@ -103,7 +103,7 @@ ADDRESS_MAP_END //------------------------------------------------- nick_device::nick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, NICK, "NICK", tag, owner, clock, "nick", __FILE__), + : device_t(mconfig, NICK, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_space_config("vram", ENDIANNESS_LITTLE, 8, 16, 0, *ADDRESS_MAP_NAME(nick_map)), diff --git a/src/mame/video/nick.h b/src/mame/video/nick.h index 4a8ccb6357e..c769928e911 100644 --- a/src/mame/video/nick.h +++ b/src/mame/video/nick.h @@ -168,6 +168,6 @@ private: // device type definition -extern const device_type NICK; +DECLARE_DEVICE_TYPE(NICK, nick_device) #endif // MAME_VIDEO_NICK_H diff --git a/src/mame/video/ninjakd2.cpp b/src/mame/video/ninjakd2.cpp index ad398a36310..9579b240a0a 100644 --- a/src/mame/video/ninjakd2.cpp +++ b/src/mame/video/ninjakd2.cpp @@ -460,7 +460,7 @@ void ninjakd2_state::update_sprites() uint32_t ninjakd2_state::screen_update_ninjakd2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - // updating sprites here instead than in screen_eof avoids a palette glitch + // updating sprites here instead than in screen_vblank avoids a palette glitch // at the end of the "rainbow sky" screens. update_sprites(); m_sprites_updated = 1; @@ -507,7 +507,7 @@ uint32_t ninjakd2_state::screen_update_omegaf(screen_device &screen, bitmap_ind1 } -void ninjakd2_state::screen_eof_ninjakd2(screen_device &screen, bool state) +WRITE_LINE_MEMBER(ninjakd2_state::screen_vblank_ninjakd2) { // rising edge if (state) diff --git a/src/mame/video/offtwall.cpp b/src/mame/video/offtwall.cpp index 88ab1587fbf..9276f738cac 100644 --- a/src/mame/video/offtwall.cpp +++ b/src/mame/video/offtwall.cpp @@ -19,8 +19,8 @@ TILE_GET_INFO_MEMBER(offtwall_state::get_playfield_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) >> 8; + uint16_t data1 = m_vad->playfield().basemem_read(tile_index); + uint16_t data2 = m_vad->playfield().extmem_read(tile_index) >> 8; int code = data1 & 0x7fff; int color = 0x10 + (data2 & 0x0f); SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); diff --git a/src/mame/video/overdriv.cpp b/src/mame/video/overdriv.cpp index c140ce6a37d..826d4067d37 100644 --- a/src/mame/video/overdriv.cpp +++ b/src/mame/video/overdriv.cpp @@ -50,11 +50,11 @@ K051316_CB_MEMBER(overdriv_state::zoom_callback_2) uint32_t overdriv_state::screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI0); - m_road_colorbase[1] = m_k053251->get_palette_index(K053251_CI1); - m_road_colorbase[0] = m_k053251->get_palette_index(K053251_CI2); - m_zoom_colorbase[1] = m_k053251->get_palette_index(K053251_CI3); - m_zoom_colorbase[0] = m_k053251->get_palette_index(K053251_CI4); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI0); + m_road_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI1); + m_road_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2); + m_zoom_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI3); + m_zoom_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI4); screen.priority().fill(0, cliprect); diff --git a/src/mame/video/parodius.cpp b/src/mame/video/parodius.cpp index 96826b1050a..d830ec7c562 100644 --- a/src/mame/video/parodius.cpp +++ b/src/mame/video/parodius.cpp @@ -48,20 +48,20 @@ uint32_t parodius_state::screen_update_parodius(screen_device &screen, bitmap_in { int layer[3], bg_colorbase; - bg_colorbase = m_k053251->get_palette_index(K053251_CI0); - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI2); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI4); - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI3); + bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4); + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3); m_k052109->tilemap_update(); layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI4); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4); layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI3); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3); konami_sortlayers3(layer, m_layerpri); diff --git a/src/mame/video/pastelg.cpp b/src/mame/video/pastelg.cpp index d8148976217..a586449e936 100644 --- a/src/mame/video/pastelg.cpp +++ b/src/mame/video/pastelg.cpp @@ -272,7 +272,7 @@ void pastelg_state::pastelg_gfxdraw() } m_nb1413m3->m_busyflag = 0; - timer_set(attotime::from_hz(400000) * m_nb1413m3->m_busyctr, TIMER_BLITTER); + m_blitter_timer->adjust(attotime::from_hz(400000) * m_nb1413m3->m_busyctr); } /****************************************************************************** @@ -286,6 +286,8 @@ void pastelg_state::video_start() m_videoram = make_unique_clear(width * height); + m_blitter_timer = timer_alloc(TIMER_BLITTER); + save_item(NAME(m_blitter_desty)); save_item(NAME(m_blitter_sizex)); save_item(NAME(m_blitter_sizey)); diff --git a/src/mame/video/pc080sn.cpp b/src/mame/video/pc080sn.cpp index 40022810636..f277554f771 100644 --- a/src/mame/video/pc080sn.cpp +++ b/src/mame/video/pc080sn.cpp @@ -49,10 +49,10 @@ Control registers #define PC080SN_RAM_SIZE 0x10000 #define TOPSPEED_ROAD_COLORS -const device_type PC080SN = device_creator; +DEFINE_DEVICE_TYPE(PC080SN, pc080sn_device, "pc080sn", "Taito PC080SN") pc080sn_device::pc080sn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PC080SN, "Taito PC080SN", tag, owner, clock, "pc080sn", __FILE__), + : device_t(mconfig, PC080SN, tag, owner, clock), m_ram(nullptr), m_gfxnum(0), m_x_offset(0), diff --git a/src/mame/video/pc080sn.h b/src/mame/video/pc080sn.h index 62cb583d93e..a108b45ffbb 100644 --- a/src/mame/video/pc080sn.h +++ b/src/mame/video/pc080sn.h @@ -1,13 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef __PC080SN_H__ -#define __PC080SN_H__ +#ifndef MAME_VIDEO_PC080SN_H +#define MAME_VIDEO_PC080SN_H + +#pragma once class pc080sn_device : public device_t { public: pc080sn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~pc080sn_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -69,7 +70,7 @@ public: required_device m_gfxdecode; }; -extern const device_type PC080SN; +DECLARE_DEVICE_TYPE(PC080SN, pc080sn_device) #define MCFG_PC080SN_GFX_REGION(_region) \ @@ -87,4 +88,4 @@ extern const device_type PC080SN; #define MCFG_PC080SN_GFXDECODE(_gfxtag) \ pc080sn_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); -#endif +#endif // MAME_VIDEO_PC080SN_H diff --git a/src/mame/video/pc090oj.cpp b/src/mame/video/pc090oj.cpp index 21c9373e7ab..59988bdd08a 100644 --- a/src/mame/video/pc090oj.cpp +++ b/src/mame/video/pc090oj.cpp @@ -72,10 +72,10 @@ Taito pc090oj *****************************************************************************/ -const device_type PC090OJ = device_creator; +DEFINE_DEVICE_TYPE(PC090OJ, pc090oj_device, "pc090oj", "Taito PC090OJ") pc090oj_device::pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PC090OJ, "Taito PC090OJ", tag, owner, clock, "pc090oj", __FILE__), + : device_t(mconfig, PC090OJ, tag, owner, clock), m_ctrl(0), m_sprite_ctrl(0), m_ram(nullptr), diff --git a/src/mame/video/pc090oj.h b/src/mame/video/pc090oj.h index 312dd336efb..85a1ee7e904 100644 --- a/src/mame/video/pc090oj.h +++ b/src/mame/video/pc090oj.h @@ -1,13 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef __PC090OJ_H__ -#define __PC090OJ_H__ +#ifndef MAME_VIDEO_PC090OJ_H +#define MAME_VIDEO_PC090OJ_H + +#pragma once class pc090oj_device : public device_t { public: pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~pc090oj_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -58,7 +59,7 @@ private: required_device m_palette; }; -extern const device_type PC090OJ; +DECLARE_DEVICE_TYPE(PC090OJ, pc090oj_device) #define MCFG_PC090OJ_GFX_REGION(_region) \ @@ -76,4 +77,4 @@ extern const device_type PC090OJ; #define MCFG_PC090OJ_PALETTE(_palette_tag) \ pc090oj_device::static_set_palette_tag(*device, "^" _palette_tag); -#endif +#endif // MAME_VIDEO_PC090)J_H diff --git a/src/mame/video/pc4.cpp b/src/mame/video/pc4.cpp index 336da060c7d..81a829500bf 100644 --- a/src/mame/video/pc4.cpp +++ b/src/mame/video/pc4.cpp @@ -144,7 +144,7 @@ WRITE8_MEMBER(pc4_state::lcd_control_w) READ8_MEMBER(pc4_state::lcd_control_r) { - return m_busy_flag<<7 || m_ac&0x7f; + return (m_busy_flag<<7) | (m_ac & 0x7f); } void pc4_state::update_ac(void) diff --git a/src/mame/video/pc_t1t.cpp b/src/mame/video/pc_t1t.cpp index a4a91c8c61b..69d026a5ce8 100644 --- a/src/mame/video/pc_t1t.cpp +++ b/src/mame/video/pc_t1t.cpp @@ -31,11 +31,11 @@ enum }; -const device_type PCVIDEO_T1000 = device_creator; -const device_type PCVIDEO_PCJR = device_creator; +DEFINE_DEVICE_TYPE(PCVIDEO_T1000, pcvideo_t1000_device, "tandy_1000_graphics", "Tandy 1000 Graphics Adapter") +DEFINE_DEVICE_TYPE(PCVIDEO_PCJR, pcvideo_pcjr_device, "pcjr_graphics", "PC Jr Graphics Adapter") -pc_t1t_device::pc_t1t_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), +pc_t1t_device::pc_t1t_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock), device_video_interface(mconfig, *this), m_mc6845(*this, T1000_MC6845_NAME), m_mode_control(0), @@ -59,12 +59,12 @@ pc_t1t_device::pc_t1t_device(const machine_config &mconfig, device_type type, co } pcvideo_t1000_device::pcvideo_t1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pc_t1t_device(mconfig, PCVIDEO_T1000, "Tandy 1000 Graphics Adapter", tag, owner, clock, "tandy_1000_graphics_adapter", __FILE__) + : pc_t1t_device(mconfig, PCVIDEO_T1000, tag, owner, clock) { } pcvideo_pcjr_device::pcvideo_pcjr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : pc_t1t_device(mconfig, PCVIDEO_PCJR, "PC Jr Graphics Adapter", tag, owner, clock, "pcjr_graphics_adapter", __FILE__), + : pc_t1t_device(mconfig, PCVIDEO_PCJR, tag, owner, clock), m_jxkanji(nullptr) { } diff --git a/src/mame/video/pc_t1t.h b/src/mame/video/pc_t1t.h index c3c5b345046..fb622d72087 100644 --- a/src/mame/video/pc_t1t.h +++ b/src/mame/video/pc_t1t.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol -#ifndef PC_T1T_H -#define PC_T1T_H +#ifndef MAME_VIDEO_PC_T1T_H +#define MAME_VIDEO_PC_T1T_H #include "video/mc6845.h" #include "machine/ram.h" @@ -10,34 +10,9 @@ #define T1000_SCREEN_NAME "screen" #define T1000_MC6845_NAME "mc6845_t1000" -// used in tandy1000hx; used in pcjr??? -struct reg -{ - reg() - { - index = 0; - memset(&data, 0, sizeof(data)); - } - - uint8_t index; - uint8_t data[0x20]; - /* see vgadoc - 0 mode control 1 - 1 palette mask - 2 border color - 3 mode control 2 - 4 reset - 0x10-0x1f palette registers - */ -}; - -class pc_t1t_device : public device_t, - public device_video_interface +class pc_t1t_device : public device_t, public device_video_interface { public: - // construction/destruction - pc_t1t_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - DECLARE_PALETTE_INIT( pcjr ); DECLARE_WRITE_LINE_MEMBER( t1000_de_changed ); @@ -52,6 +27,30 @@ public: MC6845_UPDATE_ROW( t1000_gfx_1bpp_update_row ); protected: + // used in tandy1000hx; used in pcjr??? + struct reg + { + reg() + { + index = 0; + memset(&data, 0, sizeof(data)); + } + + uint8_t index; + uint8_t data[0x20]; + /* see vgadoc + 0 mode control 1 + 1 palette mask + 2 border color + 3 mode control 2 + 4 reset + 0x10-0x1f palette registers + */ + }; + + // construction/destruction + pc_t1t_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + required_device m_mc6845; uint8_t m_mode_control, m_color_select; uint8_t m_status; @@ -111,7 +110,7 @@ private: bool m_disable; }; -extern const device_type PCVIDEO_T1000; +DECLARE_DEVICE_TYPE(PCVIDEO_T1000, pcvideo_t1000_device) #define MCFG_PCVIDEO_T1000_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, PCVIDEO_T1000, 0) @@ -125,8 +124,6 @@ public: DECLARE_WRITE8_MEMBER( write ); DECLARE_WRITE_LINE_MEMBER( pcjr_vsync_changed ); - uint8_t *m_jxkanji; - virtual MC6845_UPDATE_ROW( crtc_update_row ) override; MC6845_UPDATE_ROW( pcjx_text_update_row ); MC6845_UPDATE_ROW( pcjr_gfx_2bpp_high_update_row ); @@ -135,6 +132,8 @@ protected: virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; + uint8_t *m_jxkanji; + private: void pc_pcjr_mode_switch(); void pc_pcjr_vga_data_w(int data); @@ -142,10 +141,10 @@ private: void pc_pcjx_bank_w(int data); }; -extern const device_type PCVIDEO_PCJR; +DECLARE_DEVICE_TYPE(PCVIDEO_PCJR, pcvideo_pcjr_device) #define MCFG_PCVIDEO_PCJR_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, PCVIDEO_PCJR, 0) -#endif /* PC_T1T_H */ +#endif // MAME_VIDEO_PC_T1T_H diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp index 4ad58ebb3fe..1b6f5ae318f 100644 --- a/src/mame/video/pcd.cpp +++ b/src/mame/video/pcd.cpp @@ -9,11 +9,11 @@ #include "screen.h" -const device_type PCD_VIDEO = device_creator; -const device_type PCX_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(PCD_VIDEO, pcd_video_device, "pcd_video", "Siemens PC-D Video") +DEFINE_DEVICE_TYPE(PCX_VIDEO, pcx_video_device, "pcx_video", "Siemens PC-X Video") -pcdx_video_device::pcdx_video_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) : - device_t(mconfig, type, name, tag, owner, clock, shortname, source), +pcdx_video_device::pcdx_video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), device_gfx_interface(mconfig, *this, nullptr, "palette"), m_maincpu(*this, ":maincpu"), m_mcu(*this, "graphics"), @@ -23,7 +23,7 @@ pcdx_video_device::pcdx_video_device(const machine_config &mconfig, device_type } pcd_video_device::pcd_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - pcdx_video_device(mconfig, PCD_VIDEO, "Siemens PC-D Video", tag, owner, clock, "pcd_video", __FILE__), + pcdx_video_device(mconfig, PCD_VIDEO, tag, owner, clock), m_mouse_btn(*this, "MOUSE"), m_mouse_x(*this, "MOUSEX"), m_mouse_y(*this, "MOUSEY"), @@ -33,7 +33,7 @@ pcd_video_device::pcd_video_device(const machine_config &mconfig, const char *ta } pcx_video_device::pcx_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - pcdx_video_device(mconfig, PCX_VIDEO, "Siemens PC-X Video", tag, owner, clock, "pcx_video", __FILE__), + pcdx_video_device(mconfig, PCX_VIDEO, tag, owner, clock), device_serial_interface(mconfig, *this), m_vram(4*1024), m_charrom(*this, "char"), @@ -99,15 +99,11 @@ ioport_constructor pcd_video_device::device_input_ports() const return INPUT_PORTS_NAME(pcd_mouse); } -static ADDRESS_MAP_START( pcd_vid_io, AS_IO, 8, pcd_video_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(p1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( pcd_video ) MCFG_CPU_ADD("graphics", I8741, XTAL_16MHz/2) - MCFG_CPU_IO_MAP(pcd_vid_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(pcd_video_device, p1_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pcd_video_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(pcd_video_device, t1_r)) // video hardware MCFG_SCREEN_ADD("screen", RASTER) @@ -294,7 +290,7 @@ WRITE8_MEMBER(pcd_video_device::vram_sw_w) m_vram_sw = data & 1; } -READ8_MEMBER(pcd_video_device::t1_r) +READ_LINE_MEMBER(pcd_video_device::t1_r) { return m_t1; } diff --git a/src/mame/video/pcd.h b/src/mame/video/pcd.h index 4cb355bea27..ad1802e0676 100644 --- a/src/mame/video/pcd.h +++ b/src/mame/video/pcd.h @@ -1,8 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Carl -#ifndef _PCD_H_ -#define _PCD_H_ +#ifndef MAME_VIDEO_PCD_H +#define MAME_VIDEO_PCD_H + +#pragma once #include "machine/pic8259.h" #include "video/scn2674.h" @@ -13,14 +15,14 @@ class pcdx_video_device : public device_t, public device_gfx_interface { public: - pcdx_video_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); - virtual DECLARE_ADDRESS_MAP(map, 16) = 0; DECLARE_READ8_MEMBER(detect_r); DECLARE_WRITE8_MEMBER(detect_w); DECLARE_PALETTE_INIT(pcdx); protected: + pcdx_video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + required_device m_maincpu; required_device m_mcu; required_device m_crtc; @@ -36,7 +38,7 @@ public: DECLARE_WRITE8_MEMBER(vram_sw_w); DECLARE_READ8_MEMBER(vram_r); DECLARE_WRITE8_MEMBER(vram_w); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_READ8_MEMBER(p1_r); DECLARE_WRITE8_MEMBER(p2_w); TIMER_DEVICE_CALLBACK_MEMBER(mouse_timer); @@ -76,7 +78,7 @@ class pcx_video_device : public pcdx_video_device, { public: pcx_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast(device).m_txd_handler.set_callback(object); } + template static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast(device).m_txd_handler.set_callback(std::forward(cb)); } virtual DECLARE_ADDRESS_MAP(map, 16) override; DECLARE_READ8_MEMBER(term_r); @@ -108,7 +110,7 @@ private: uint8_t m_term_key, m_term_char, m_term_stat, m_vram_latch_r[2], m_vram_latch_w[2], m_p1; }; -extern const device_type PCD_VIDEO; -extern const device_type PCX_VIDEO; +DECLARE_DEVICE_TYPE(PCD_VIDEO, pcd_video_device) +DECLARE_DEVICE_TYPE(PCX_VIDEO, pcx_video_device) -#endif +#endif // MAME_VIDEO_PCD_H diff --git a/src/mame/video/pdp1.cpp b/src/mame/video/pdp1.cpp index 7dd685e11bb..0a4597fd3be 100644 --- a/src/mame/video/pdp1.cpp +++ b/src/mame/video/pdp1.cpp @@ -50,7 +50,7 @@ void pdp1_state::video_start() } -void pdp1_state::screen_eof_pdp1(screen_device &screen, bool state) +WRITE_LINE_MEMBER(pdp1_state::screen_vblank_pdp1) { // rising edge if (state) diff --git a/src/mame/video/pecom.cpp b/src/mame/video/pecom.cpp index cb79b8ea4cd..434dca9c60a 100644 --- a/src/mame/video/pecom.cpp +++ b/src/mame/video/pecom.cpp @@ -91,14 +91,14 @@ VIDEO_START_MEMBER(pecom_state,pecom) } MACHINE_CONFIG_FRAGMENT( pecom_video ) - MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, CDP1869_DOT_CLK_PAL) + MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL) MCFG_VIDEO_START_OVERRIDE(pecom_state,pecom) MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_CDP1869_ADD(CDP1869_TAG, CDP1869_DOT_CLK_PAL, cdp1869_page_ram) - MCFG_CDP1869_COLOR_CLOCK(CDP1869_COLOR_CLK_PAL) + MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_PAL, cdp1869_page_ram) + MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_PAL) MCFG_CDP1869_CHAR_PCB_READ_OWNER(pecom_state, pecom_pcb_r) MCFG_CDP1869_CHAR_RAM_READ_OWNER(pecom_state, pecom_char_ram_r) MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(pecom_state, pecom_char_ram_w) diff --git a/src/mame/video/pgm.cpp b/src/mame/video/pgm.cpp index 249554fcfd5..4fde104b15c 100644 --- a/src/mame/video/pgm.cpp +++ b/src/mame/video/pgm.cpp @@ -664,7 +664,7 @@ uint32_t pgm_state::screen_update_pgm(screen_device &screen, bitmap_ind16 &bitma } -void pgm_state::screen_eof_pgm(screen_device &screen, bool state) +WRITE_LINE_MEMBER(pgm_state::screen_vblank_pgm) { // rising edge if (state) diff --git a/src/mame/video/powervr2.cpp b/src/mame/video/powervr2.cpp index e49bc6f845c..10e3abd67d3 100644 --- a/src/mame/video/powervr2.cpp +++ b/src/mame/video/powervr2.cpp @@ -7,11 +7,13 @@ #include "emu.h" #include "powervr2.h" #include "includes/dc.h" + #include "cpu/sh4/sh4.h" -#include "rendutil.h" #include "video/rgbutil.h" +#include "rendutil.h" + -const device_type POWERVR2 = device_creator; +DEFINE_DEVICE_TYPE(POWERVR2, powervr2_device, "powervr2", "PowerVR 2") DEVICE_ADDRESS_MAP_START(ta_map, 32, powervr2_device) AM_RANGE(0x0000, 0x0003) AM_READ( id_r) @@ -3607,7 +3609,7 @@ void powervr2_device::pvr_dma_execute(address_space &space) } powervr2_device::powervr2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, POWERVR2, "PowerVR 2", tag, owner, clock, "powervr2", __FILE__), + : device_t(mconfig, POWERVR2, tag, owner, clock), device_video_interface(mconfig, *this), irq_cb(*this), m_mamedebug(*this, ":MAMEDEBUG") diff --git a/src/mame/video/powervr2.h b/src/mame/video/powervr2.h index 7ef55f553c3..afdf4b23458 100644 --- a/src/mame/video/powervr2.h +++ b/src/mame/video/powervr2.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert -#ifndef __POWERVR2_H__ -#define __POWERVR2_H__ +#ifndef MAME_VIDEO_POWERVR2_H +#define MAME_VIDEO_POWERVR2_H + +#pragma once #define MCFG_POWERVR2_ADD(_tag, _irq_cb) \ MCFG_DEVICE_ADD(_tag, POWERVR2, 0) \ @@ -483,6 +485,6 @@ private: }; -extern const device_type POWERVR2; +DECLARE_DEVICE_TYPE(POWERVR2, powervr2_device) -#endif +#endif // MAME_VIDEO_POWERVR2_H diff --git a/src/mame/video/psikyo.cpp b/src/mame/video/psikyo.cpp index b4e76c1a9f4..b5d0eeab5f6 100644 --- a/src/mame/video/psikyo.cpp +++ b/src/mame/video/psikyo.cpp @@ -845,7 +845,7 @@ uint32_t psikyo_state::screen_update_psikyo_bootleg(screen_device &screen, bitma } -void psikyo_state::screen_eof_psikyo(screen_device &screen, bool state) +WRITE_LINE_MEMBER(psikyo_state::screen_vblank_psikyo) { // rising edge if (state) diff --git a/src/mame/video/rdpblend.cpp b/src/mame/video/rdpblend.cpp index 5d7fe05a494..7e20b68aa64 100644 --- a/src/mame/video/rdpblend.cpp +++ b/src/mame/video/rdpblend.cpp @@ -90,7 +90,7 @@ bool n64_blender_t::alpha_reject(rdp_span_aux* userdata, const rdp_poly_state& o return userdata->m_pixel_color.get_a() < userdata->m_blend_color.get_a(); case 3: - return userdata->m_pixel_color.get_a() < (rand() & 0xff); + return userdata->m_pixel_color.get_a() < (machine().rand() & 0xff); default: return false; diff --git a/src/mame/video/redclash.cpp b/src/mame/video/redclash.cpp index 067f38afb31..49df7515913 100644 --- a/src/mame/video/redclash.cpp +++ b/src/mame/video/redclash.cpp @@ -335,7 +335,7 @@ void redclash_state::redclash_set_stars_enable(uint8_t on) } /* This sets up which starfield to draw and the offset, */ -/* To be called from screen_eof_*() */ +/* To be called from screen_vblank_*() */ void redclash_state::redclash_update_stars_state() { @@ -435,7 +435,7 @@ void redclash_state::redclash_draw_stars(bitmap_ind16 &bitmap, const rectangle & } } -void redclash_state::screen_eof_redclash(screen_device &screen, bool state) +WRITE_LINE_MEMBER(redclash_state::screen_vblank_redclash) { // falling edge if (!state) @@ -491,7 +491,7 @@ VIDEO_START_MEMBER(redclash_state,sraider) m_bg_tilemap->set_transparent_pen(0); } -void redclash_state::screen_eof_sraider(screen_device &screen, bool state)/* update starfield position */ +WRITE_LINE_MEMBER(redclash_state::screen_vblank_sraider)/* update starfield position */ { // falling edge if (!state) diff --git a/src/mame/video/relief.cpp b/src/mame/video/relief.cpp index c20200560b1..2b4f7432355 100644 --- a/src/mame/video/relief.cpp +++ b/src/mame/video/relief.cpp @@ -20,8 +20,8 @@ TILE_GET_INFO_MEMBER(relief_state::get_playfield_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) & 0xff; + uint16_t data1 = m_vad->playfield().basemem_read(tile_index); + uint16_t data2 = m_vad->playfield().extmem_read(tile_index) & 0xff; int code = data1 & 0x7fff; int color = 0x20 + (data2 & 0x0f); SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); @@ -30,8 +30,8 @@ TILE_GET_INFO_MEMBER(relief_state::get_playfield_tile_info) TILE_GET_INFO_MEMBER(relief_state::get_playfield2_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) >> 8; + uint16_t data1 = m_vad->playfield2().basemem_read(tile_index); + uint16_t data2 = m_vad->playfield2().extmem_read(tile_index) >> 8; int code = data1 & 0x7fff; int color = data2 & 0x0f; SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); diff --git a/src/mame/video/rollerg.cpp b/src/mame/video/rollerg.cpp index 6faa1075b7b..cda4d00aa09 100644 --- a/src/mame/video/rollerg.cpp +++ b/src/mame/video/rollerg.cpp @@ -13,10 +13,10 @@ K05324X_CB_MEMBER(rollerg_state::sprite_callback) { enum { sprite_colorbase = 256 / 16 }; #if 0 - if (machine().input().code_pressed(KEYCODE_Q) && (*color & 0x80)) *color = rand(); - if (machine().input().code_pressed(KEYCODE_W) && (*color & 0x40)) *color = rand(); - if (machine().input().code_pressed(KEYCODE_E) && (*color & 0x20)) *color = rand(); - if (machine().input().code_pressed(KEYCODE_R) && (*color & 0x10)) *color = rand(); + if (machine().input().code_pressed(KEYCODE_Q) && (*color & 0x80)) *color = machine().rand(); + if (machine().input().code_pressed(KEYCODE_W) && (*color & 0x40)) *color = machine().rand(); + if (machine().input().code_pressed(KEYCODE_E) && (*color & 0x20)) *color = machine().rand(); + if (machine().input().code_pressed(KEYCODE_R) && (*color & 0x10)) *color = machine().rand(); #endif *priority = (*color & 0x10) ? 0 : 0x02; *color = sprite_colorbase + (*color & 0x0f); diff --git a/src/mame/video/rpunch.cpp b/src/mame/video/rpunch.cpp index 12ed0ef180b..b3a072db267 100644 --- a/src/mame/video/rpunch.cpp +++ b/src/mame/video/rpunch.cpp @@ -152,30 +152,25 @@ WRITE16_MEMBER(rpunch_state::rpunch_scrollreg_w) } -WRITE16_MEMBER(rpunch_state::rpunch_crtc_data_w) +WRITE8_MEMBER(rpunch_state::rpunch_gga_w) { - if (ACCESSING_BITS_0_7) - { - data &= 0xff; - switch (m_crtc_register) - { - /* only register we know about.... */ - case 0x0b: - m_crtc_timer->adjust(m_screen->time_until_vblank_start(), (data == 0xc0) ? 2 : 1); - break; - - default: - logerror("CRTC register %02X = %02X\n", m_crtc_register, data & 0xff); - break; - } - } + m_gga->write(space, offset >> 4, data & 0xff); } -WRITE16_MEMBER(rpunch_state::rpunch_crtc_register_w) +WRITE8_MEMBER(rpunch_state::rpunch_gga_data_w) { - if (ACCESSING_BITS_0_7) - m_crtc_register = data & 0xff; + switch (offset) + { + /* only register we know about.... */ + case 0x0b: + m_crtc_timer->adjust(m_screen->time_until_vblank_start(), (data == 0xc0) ? 2 : 1); + break; + + default: + logerror("CRTC register %02X = %02X\n", offset, data); + break; + } } diff --git a/src/mame/video/sega16sp.cpp b/src/mame/video/sega16sp.cpp index 7f17e58d3d6..e5609298baf 100644 --- a/src/mame/video/sega16sp.cpp +++ b/src/mame/video/sega16sp.cpp @@ -17,14 +17,14 @@ //**************************************************************************** // device type definition -const device_type SEGA_HANGON_SPRITES = device_creator; -const device_type SEGA_SHARRIER_SPRITES = device_creator; -const device_type SEGA_OUTRUN_SPRITES = device_creator; -const device_type SEGA_SYS16A_SPRITES = device_creator; -const device_type BOOTLEG_SYS16A_SPRITES = device_creator; -const device_type SEGA_SYS16B_SPRITES = device_creator; -const device_type SEGA_XBOARD_SPRITES = device_creator; -const device_type SEGA_YBOARD_SPRITES = device_creator; +DEFINE_DEVICE_TYPE(SEGA_HANGON_SPRITES, sega_hangon_sprite_device, "sega_hangon_sprite", "Sega Custom Sprites (Hang On)") +DEFINE_DEVICE_TYPE(SEGA_SHARRIER_SPRITES, sega_sharrier_sprite_device, "sega_sharrier_sprite", "Sega Custom Sprites (Space Harrier)") +DEFINE_DEVICE_TYPE(SEGA_OUTRUN_SPRITES, sega_outrun_sprite_device, "sega_outrun_sprite", "Sega Custom Sprites (Out Run)") +DEFINE_DEVICE_TYPE(SEGA_SYS16A_SPRITES, sega_sys16a_sprite_device, "sega_sys16a_sprite", "Sega System 16A Sprites") +DEFINE_DEVICE_TYPE(BOOTLEG_SYS16A_SPRITES, bootleg_sys16a_sprite_device, "bootleg_sys16a_sprite", "Sega System 16A Sprites (bootleg)") +DEFINE_DEVICE_TYPE(SEGA_SYS16B_SPRITES, sega_sys16b_sprite_device, "sega_sys16b_sprite", "Sega System 16B Sprites") +DEFINE_DEVICE_TYPE(SEGA_XBOARD_SPRITES, sega_xboard_sprite_device, "sega_xboard_sprite", "Sega X-Board Sprites") +DEFINE_DEVICE_TYPE(SEGA_YBOARD_SPRITES, sega_yboard_sprite_device, "sega_yboard_sprite", "Sega Y-Board Sprites") @@ -36,9 +36,9 @@ const device_type SEGA_YBOARD_SPRITES = device_creatoradjust(PERIOD_OF_555_MONOSTABLE(CAP_P(1000), RES_K(56))); /* latch the current flip state at the same time */ m_video_flip = m_video_control & 1; diff --git a/src/mame/video/segag80v.cpp b/src/mame/video/segag80v.cpp index b643b120397..d3731bb37e5 100644 --- a/src/mame/video/segag80v.cpp +++ b/src/mame/video/segag80v.cpp @@ -235,7 +235,7 @@ void segag80v_state::sega_generate_vector_list() total_time -= 4.0 / (double)U51_CLOCK; /* Compute color/intensity values from the attributes */ - color = VECTOR_COLOR222((attrib >> 1) & 0x3f); + color = vector_device::color222((attrib >> 1) & 0x3f); if ((attrib & 1) && color) intensity = 0xff; else diff --git a/src/mame/video/segahang.cpp b/src/mame/video/segahang.cpp index 0aa4a5efa50..b875aa47fd5 100644 --- a/src/mame/video/segahang.cpp +++ b/src/mame/video/segahang.cpp @@ -18,10 +18,10 @@ void segahang_state::video_start() { // initialize the tile/text layers - m_segaic16vid->tilemap_init( 0, SEGAIC16_TILEMAP_HANGON, 0x000, 0, 2); + m_segaic16vid->tilemap_init( 0, segaic16_video_device::TILEMAP_HANGON, 0x000, 0, 2); // initialize the road - m_segaic16road->segaic16_road_init(machine(), 0, m_sharrier_video ? SEGAIC16_ROAD_SHARRIER : SEGAIC16_ROAD_HANGON, 0x038, 0x7c0, 0x7c0, 0); + m_segaic16road->segaic16_road_init(machine(), 0, m_sharrier_video ? segaic16_road_device::ROAD_SHARRIER : segaic16_road_device::ROAD_HANGON, 0x038, 0x7c0, 0x7c0, 0); } @@ -45,24 +45,24 @@ uint32_t segahang_state::screen_update(screen_device &screen, bitmap_ind16 &bitm screen.priority().fill(0, cliprect); // draw the low priority road layer - m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_BACKGROUND); + m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, segaic16_road_device::ROAD_BACKGROUND); // draw background - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0, 0x01); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1, 0x02); // draw foreground - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 0, 0x02); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 1, 0x04); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 0, 0x02); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 1, 0x04); // draw the high priority road - m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_FOREGROUND); + m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, segaic16_road_device::ROAD_FOREGROUND); // text layer // note that we inflate the priority of the text layer to prevent sprites // from drawing over the high scores - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 0, 0x08); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 1, 0x08); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 0, 0x08); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 1, 0x08); // mix in sprites bitmap_ind16 &sprites = m_sprites->bitmap(); diff --git a/src/mame/video/segaic16.cpp b/src/mame/video/segaic16.cpp index d3b7a6767d6..061ce37988a 100644 --- a/src/mame/video/segaic16.cpp +++ b/src/mame/video/segaic16.cpp @@ -373,11 +373,11 @@ Quick review of the system16 hardware: -const device_type SEGAIC16VID = device_creator; +DEFINE_DEVICE_TYPE(SEGAIC16VID, segaic16_video_device, "segaic16_video", "Sega 16-bit Video") segaic16_video_device::segaic16_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGAIC16VID, "Sega 16-bit Video", tag, owner, clock, "segaic16_video", __FILE__), - device_video_interface(mconfig, *this) + : device_t(mconfig, SEGAIC16VID, tag, owner, clock) + , device_video_interface(mconfig, *this) , m_display_enable(0) , m_tileram(*this, "^tileram") , m_textram(*this, "^textram") @@ -447,7 +447,7 @@ void segaic16_video_device::set_display_enable(int enable) * *************************************/ -void draw_virtual_tilemap(screen_device &screen, struct tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, uint16_t pages, uint16_t xscroll, uint16_t yscroll, uint32_t flags, uint32_t priority) +void draw_virtual_tilemap(screen_device &screen, segaic16_video_device::tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, uint16_t pages, uint16_t xscroll, uint16_t yscroll, uint32_t flags, uint32_t priority) { int leftmin = -1, leftmax = -1, rightmin = -1, rightmax = -1; int topmin = -1, topmax = -1, bottommin = -1, bottommax = -1; @@ -688,7 +688,7 @@ TILE_GET_INFO_MEMBER( segaic16_video_device::tilemap_16a_text_info ) } -void tilemap_16a_draw_layer(screen_device &screen, struct tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int flags, int priority) +static void tilemap_16a_draw_layer(screen_device &screen, segaic16_video_device::tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int flags, int priority) { uint16_t *textram = info->textram; @@ -930,7 +930,7 @@ TILE_GET_INFO_MEMBER( segaic16_video_device::tilemap_16b_alt_text_info ) } -void tilemap_16b_draw_layer(screen_device &screen, struct tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int flags, int priority) +static void tilemap_16b_draw_layer(screen_device &screen, segaic16_video_device::tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int flags, int priority) { uint16_t *textram = info->textram; uint16_t xscroll, yscroll, pages; @@ -1051,7 +1051,7 @@ TIMER_CALLBACK_MEMBER( segaic16_video_device::tilemap_16b_latch_values ) } -void tilemap_16b_reset(screen_device &screen, struct tilemap_info *info) +static void tilemap_16b_reset(screen_device &screen, segaic16_video_device::tilemap_info *info) { /* set a timer to latch values on scanline 261 */ info->latch_timer->adjust(screen.time_until_pos(261), info->index); @@ -1097,7 +1097,7 @@ void segaic16_video_device::tilemap_init(int which, int type, int colorbase, int /* determine the parameters of the tilemaps */ switch (type) { - case SEGAIC16_TILEMAP_HANGON: + case TILEMAP_HANGON: get_text_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16a_text_info),this); get_tile_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16a_tile_info),this); info->numpages = 4; @@ -1106,7 +1106,7 @@ void segaic16_video_device::tilemap_init(int which, int type, int colorbase, int info->latch_timer = nullptr; break; - case SEGAIC16_TILEMAP_16A: + case TILEMAP_16A: get_text_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16a_text_info),this); get_tile_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16a_tile_info),this); info->numpages = 8; @@ -1115,7 +1115,7 @@ void segaic16_video_device::tilemap_init(int which, int type, int colorbase, int info->latch_timer = nullptr; break; - case SEGAIC16_TILEMAP_16B: + case TILEMAP_16B: get_text_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16b_text_info),this); get_tile_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16b_tile_info),this); info->numpages = 16; @@ -1124,7 +1124,7 @@ void segaic16_video_device::tilemap_init(int which, int type, int colorbase, int info->latch_timer = machine().scheduler().timer_alloc( timer_expired_delegate(FUNC(segaic16_video_device::tilemap_16b_latch_values),this) ); break; - case SEGAIC16_TILEMAP_16B_ALT: + case TILEMAP_16B_ALT: get_text_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16b_alt_text_info),this); get_tile_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16b_alt_tile_info),this); info->numpages = 16; @@ -1189,7 +1189,7 @@ void segaic16_video_device::tilemap_draw(screen_device &screen, bitmap_ind16 &bi struct tilemap_info *info = &m_bg_tilemap[which]; /* text layer is a special common case */ - if (map == SEGAIC16_TILEMAP_TEXT) + if (map == TILEMAP_TEXT) info->textmap->draw(screen, bitmap, cliprect, priority, priority_mark); /* other layers are handled differently per-system */ @@ -1370,7 +1370,7 @@ void segaic16_video_device::rotate_init(int which, int type, int colorbase) /* determine the parameters of the rotate */ switch (type) { - case SEGAIC16_ROTATE_YBOARD: + case ROTATE_YBOARD: info->ramsize = 0x800; break; diff --git a/src/mame/video/segaic16.h b/src/mame/video/segaic16.h index 873f5107d24..15554d3f3b5 100644 --- a/src/mame/video/segaic16.h +++ b/src/mame/video/segaic16.h @@ -5,10 +5,10 @@ Sega 16-bit common hardware ***************************************************************************/ +#ifndef MAME_VIDEO_SEGAIC16_H +#define MAME_VIDEO_SEGAIC16_H #pragma once -#ifndef __SEGAIC16VID_H__ -#define __SEGAIC16VID_H__ typedef device_delegate segaic16_video_pagelatch_delegate; @@ -16,27 +16,6 @@ typedef device_delegate segaic16_video_device::set_pagelatch_cb(*device, segaic16_video_pagelatch_delegate(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr)); -/* tilemap systems */ -#define SEGAIC16_MAX_TILEMAPS 1 - -#define SEGAIC16_TILEMAP_HANGON 0 -#define SEGAIC16_TILEMAP_16A 1 -#define SEGAIC16_TILEMAP_16B 2 -#define SEGAIC16_TILEMAP_16B_ALT 3 - -#define SEGAIC16_TILEMAP_FOREGROUND 0 -#define SEGAIC16_TILEMAP_BACKGROUND 1 -#define SEGAIC16_TILEMAP_TEXT 2 - - - -/* rotation systems */ -#define SEGAIC16_MAX_ROTATE 1 - -#define SEGAIC16_ROTATE_YBOARD 0 - - - /************************************* * * Type definitions @@ -45,50 +24,6 @@ typedef device_delegate -struct tilemap_callback_info -{ - uint16_t * rambase; /* base of RAM for this tilemap page */ - const uint8_t * bank; /* pointer to bank array */ - uint16_t banksize; /* size of banks */ -}; - - -struct tilemap_info -{ - uint8_t index; /* index of this structure */ - uint8_t type; /* type of tilemap (see segaic16.h for details) */ - uint8_t numpages; /* number of allocated pages */ - uint8_t flip; /* screen flip? */ - uint8_t rowscroll, colscroll; /* are rowscroll/colscroll enabled (if external enables are used) */ - uint8_t bank[8]; /* indexes of the tile banks */ - uint16_t banksize; /* number of tiles per bank */ - uint16_t latched_xscroll[4]; /* latched X scroll values */ - uint16_t latched_yscroll[4]; /* latched Y scroll values */ - uint16_t latched_pageselect[4]; /* latched page select values */ - int32_t xoffs; /* X scroll offset */ - tilemap_t * tilemaps[16]; /* up to 16 tilemap pages */ - tilemap_t * textmap; /* a single text tilemap */ - struct tilemap_callback_info tmap_info[16]; /* callback info for 16 tilemap pages */ - struct tilemap_callback_info textmap_info; /* callback info for a single textmap page */ - void (*reset)(screen_device &screen, struct tilemap_info *info);/* reset callback */ - void (*draw_layer)(screen_device &screen, struct tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int flags, int priority); - uint16_t * textram; /* pointer to textram pointer */ - uint16_t * tileram; /* pointer to tileram pointer */ - emu_timer * latch_timer; /* timer for latching 16b tilemap scroll values */ -}; - - -struct rotate_info -{ - uint8_t index; /* index of this structure */ - uint8_t type; /* type of rotate system (see segaic16.h for details) */ - uint16_t colorbase; /* base color index */ - int32_t ramsize; /* size of rotate RAM */ - uint16_t * rotateram; /* pointer to rotateram pointer */ - std::unique_ptr buffer; /* buffered data */ -}; - - /*************************************************************************** FUNCTION PROTOTYPES ***************************************************************************/ @@ -99,8 +34,72 @@ class segaic16_video_device : public device_t, public device_video_interface { public: + /* tilemap systems */ + static constexpr unsigned MAX_TILEMAPS = 1; + + static constexpr unsigned TILEMAP_HANGON = 0; + static constexpr unsigned TILEMAP_16A = 1; + static constexpr unsigned TILEMAP_16B = 2; + static constexpr unsigned TILEMAP_16B_ALT = 3; + + static constexpr unsigned TILEMAP_FOREGROUND = 0; + static constexpr unsigned TILEMAP_BACKGROUND = 1; + static constexpr unsigned TILEMAP_TEXT = 2; + + + + /* rotation systems */ + static constexpr unsigned MAX_ROTATE = 1; + + static constexpr unsigned ROTATE_YBOARD = 0; + + + + struct tilemap_callback_info + { + uint16_t * rambase; /* base of RAM for this tilemap page */ + const uint8_t * bank; /* pointer to bank array */ + uint16_t banksize; /* size of banks */ + }; + + + struct tilemap_info + { + uint8_t index; /* index of this structure */ + uint8_t type; /* type of tilemap (see segaic16.h for details) */ + uint8_t numpages; /* number of allocated pages */ + uint8_t flip; /* screen flip? */ + uint8_t rowscroll, colscroll; /* are rowscroll/colscroll enabled (if external enables are used) */ + uint8_t bank[8]; /* indexes of the tile banks */ + uint16_t banksize; /* number of tiles per bank */ + uint16_t latched_xscroll[4]; /* latched X scroll values */ + uint16_t latched_yscroll[4]; /* latched Y scroll values */ + uint16_t latched_pageselect[4]; /* latched page select values */ + int32_t xoffs; /* X scroll offset */ + tilemap_t * tilemaps[16]; /* up to 16 tilemap pages */ + tilemap_t * textmap; /* a single text tilemap */ + struct tilemap_callback_info tmap_info[16]; /* callback info for 16 tilemap pages */ + struct tilemap_callback_info textmap_info; /* callback info for a single textmap page */ + void (*reset)(screen_device &screen, struct tilemap_info *info);/* reset callback */ + void (*draw_layer)(screen_device &screen, struct tilemap_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int flags, int priority); + uint16_t * textram; /* pointer to textram pointer */ + uint16_t * tileram; /* pointer to tileram pointer */ + emu_timer * latch_timer; /* timer for latching 16b tilemap scroll values */ + }; + + + struct rotate_info + { + uint8_t index; /* index of this structure */ + uint8_t type; /* type of rotate system (see segaic16.h for details) */ + uint16_t colorbase; /* base color index */ + int32_t ramsize; /* size of rotate RAM */ + uint16_t * rotateram; /* pointer to rotateram pointer */ + std::unique_ptr buffer; /* buffered data */ + }; + + segaic16_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~segaic16_video_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -126,8 +125,8 @@ public: void tilemap_16b_fill_latch(int i, uint16_t* latched_pageselect, uint16_t* latched_yscroll, uint16_t* latched_xscroll, uint16_t* textram); TIMER_CALLBACK_MEMBER( tilemap_16b_latch_values ); - struct rotate_info m_rotate[SEGAIC16_MAX_ROTATE]; - struct tilemap_info m_bg_tilemap[SEGAIC16_MAX_TILEMAPS]; + struct rotate_info m_rotate[MAX_ROTATE]; + struct tilemap_info m_bg_tilemap[MAX_TILEMAPS]; void set_display_enable(int enable); void tilemap_init(int which, int type, int colorbase, int xoffs, int numbanks); @@ -160,7 +159,7 @@ private: required_device m_gfxdecode; }; -extern const device_type SEGAIC16VID; +DECLARE_DEVICE_TYPE(SEGAIC16VID, segaic16_video_device) #define MCFG_SEGAIC16VID_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, SEGAIC16VID, 0) @@ -168,4 +167,4 @@ extern const device_type SEGAIC16VID; #define MCFG_SEGAIC16VID_GFXDECODE(_gfxtag) \ segaic16_video_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); -#endif +#endif // MAME_VIDEO_SEGAIC16_H diff --git a/src/mame/video/segaic16_road.cpp b/src/mame/video/segaic16_road.cpp index d20ceb9aba4..107ad71ef4d 100644 --- a/src/mame/video/segaic16_road.cpp +++ b/src/mame/video/segaic16_road.cpp @@ -6,10 +6,10 @@ #include "segaic16_road.h" #include "video/resnet.h" -const device_type SEGAIC16_ROAD = device_creator; +DEFINE_DEVICE_TYPE(SEGAIC16_ROAD, segaic16_road_device, "segaic16_road", "Sega 16-bit Road Generator") segaic16_road_device::segaic16_road_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEGAIC16_ROAD, "Sega 16-bit Road Generator", tag, owner, clock, "segaic16_road", __FILE__) + : device_t(mconfig, SEGAIC16_ROAD, tag, owner, clock) { } @@ -69,7 +69,7 @@ void segaic16_road_device::device_reset() -void segaic16_road_device::segaic16_road_hangon_decode(running_machine &machine, struct road_info *info) +void segaic16_road_device::segaic16_road_hangon_decode(running_machine &machine, road_info *info) { int x, y; const uint8_t *gfx = memregion("^gfx3")->base(); @@ -91,7 +91,7 @@ void segaic16_road_device::segaic16_road_hangon_decode(running_machine &machine, } -static void segaic16_road_hangon_draw(struct road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority) +static void segaic16_road_hangon_draw(segaic16_road_device::road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority) { uint16_t *roadram = info->roadram; int x, y; @@ -111,8 +111,8 @@ static void segaic16_road_hangon_draw(struct road_info *info, bitmap_ind16 &bitm plycont = (control >> 10) & 3; /* skip layers we aren't supposed to be drawing */ - if ((plycont == 0 && priority != SEGAIC16_ROAD_BACKGROUND) || - (plycont != 0 && priority != SEGAIC16_ROAD_FOREGROUND)) + if ((plycont == 0 && priority != segaic16_road_device::ROAD_BACKGROUND) || + (plycont != 0 && priority != segaic16_road_device::ROAD_FOREGROUND)) continue; /* compute the offset of the road graphics for this line */ @@ -153,7 +153,7 @@ static void segaic16_road_hangon_draw(struct road_info *info, bitmap_ind16 &bitm /* for the Hang On/Super Hang On case only: if the control word bit 9 is clear, we will forcibly */ /* set the flip-flip at 9J (upper half) */ - if (info->type == SEGAIC16_ROAD_HANGON && !(control & 0x200)) + if (info->type == segaic16_road_device::ROAD_HANGON && !(control & 0x200)) ff9j2 = 1; /* ---- now process the pixel ---- */ @@ -161,7 +161,7 @@ static void segaic16_road_hangon_draw(struct road_info *info, bitmap_ind16 &bitm /* the Space Harrier/Enduro Racer hardware has a tweak that maps the control word bit 9 to the */ /* /CE line on the road ROM; use this to effectively disable the road data */ - if (info->type != SEGAIC16_ROAD_SHARRIER || !(control & 0x200)) + if (info->type != segaic16_road_device::ROAD_SHARRIER || !(control & 0x200)) /* the /OE line on the road ROM is linked to the AND of bits 2 & 3 of the counter at 9N */ if ((ctr9n9p & 0xc0) == 0xc0) @@ -330,7 +330,7 @@ static void segaic16_road_hangon_draw(struct road_info *info, bitmap_ind16 &bitm * *******************************************************************************************/ -void segaic16_road_device::segaic16_road_outrun_decode(running_machine &machine, struct road_info *info) +void segaic16_road_device::segaic16_road_outrun_decode(running_machine &machine, road_info *info) { int x, y; const uint8_t *gfx = memregion("^gfx3")->base(); @@ -361,7 +361,7 @@ void segaic16_road_device::segaic16_road_outrun_decode(running_machine &machine, } -static void segaic16_road_outrun_draw(struct road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority) +static void segaic16_road_outrun_draw(segaic16_road_device::road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority) { uint16_t *roadram = info->buffer.get(); int x, y; @@ -383,7 +383,7 @@ static void segaic16_road_outrun_draw(struct road_info *info, bitmap_ind16 &bitm int data1 = roadram[0x100 + y]; /* background case: look for solid fill scanlines */ - if (priority == SEGAIC16_ROAD_BACKGROUND) + if (priority == segaic16_road_device::ROAD_BACKGROUND) { int color = -1; @@ -536,7 +536,7 @@ static void segaic16_road_outrun_draw(struct road_info *info, bitmap_ind16 &bitm void segaic16_road_device::segaic16_road_init(running_machine &machine, int which, int type, int colorbase1, int colorbase2, int colorbase3, int xoffs) { - struct road_info *info = &segaic16_road[which]; + road_info *info = &segaic16_road[which]; /* reset the tilemap info */ memset(info, 0, sizeof(*info)); @@ -561,14 +561,14 @@ void segaic16_road_device::segaic16_road_init(running_machine &machine, int whic /* determine the parameters of the road */ switch (type) { - case SEGAIC16_ROAD_HANGON: - case SEGAIC16_ROAD_SHARRIER: + case ROAD_HANGON: + case ROAD_SHARRIER: info->draw = segaic16_road_hangon_draw; segaic16_road_hangon_decode(machine, info); break; - case SEGAIC16_ROAD_OUTRUN: - case SEGAIC16_ROAD_XBOARD: + case ROAD_OUTRUN: + case ROAD_XBOARD: info->buffer = std::make_unique(0x1000/2); info->draw = segaic16_road_outrun_draw; segaic16_road_outrun_decode(machine, info); @@ -589,7 +589,7 @@ void segaic16_road_device::segaic16_road_init(running_machine &machine, int whic void segaic16_road_device::segaic16_road_draw(int which, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority) { - struct road_info *info = &segaic16_road[which]; + road_info *info = &segaic16_road[which]; (*info->draw)(info, bitmap, cliprect, priority); } @@ -603,7 +603,7 @@ void segaic16_road_device::segaic16_road_draw(int which, bitmap_ind16 &bitmap, c READ16_MEMBER( segaic16_road_device::segaic16_road_control_0_r ) { - struct road_info *info = &segaic16_road[0]; + road_info *info = &segaic16_road[0]; if (info->buffer) { @@ -626,10 +626,10 @@ READ16_MEMBER( segaic16_road_device::segaic16_road_control_0_r ) WRITE16_MEMBER( segaic16_road_device::segaic16_road_control_0_w ) { - struct road_info *info = &segaic16_road[0]; + road_info *info = &segaic16_road[0]; if (ACCESSING_BITS_0_7) { - info->control = data & ((info->type == SEGAIC16_ROAD_OUTRUN) ? 3 : 7); + info->control = data & ((info->type == ROAD_OUTRUN) ? 3 : 7); } } diff --git a/src/mame/video/segaic16_road.h b/src/mame/video/segaic16_road.h index 9d835582c86..f95e40b0cba 100644 --- a/src/mame/video/segaic16_road.h +++ b/src/mame/video/segaic16_road.h @@ -1,54 +1,53 @@ // license:BSD-3-Clause // copyright-holders:Aaron Giles /* Sega Road Generators */ - +#ifndef MAME_VIDEO_SEGAIC16_ROAD_H +#define MAME_VIDEO_SEGAIC16_ROAD_H #pragma once -#ifndef __SEGAIC16_ROAD_H__ -#define __SEGAIC16_ROAD_H__ -/* road systems */ -#define SEGAIC16_MAX_ROADS 1 -#define SEGAIC16_ROAD_HANGON 0 -#define SEGAIC16_ROAD_SHARRIER 1 -#define SEGAIC16_ROAD_OUTRUN 2 -#define SEGAIC16_ROAD_XBOARD 3 +class segaic16_road_device : public device_t +{ +public: + /* road systems */ + static constexpr unsigned MAX_ROADS = 1; -#define SEGAIC16_ROAD_BACKGROUND 0 -#define SEGAIC16_ROAD_FOREGROUND 1 + static constexpr unsigned ROAD_HANGON = 0; + static constexpr unsigned ROAD_SHARRIER = 1; + static constexpr unsigned ROAD_OUTRUN = 2; + static constexpr unsigned ROAD_XBOARD = 3; + static constexpr unsigned ROAD_BACKGROUND = 0; + static constexpr unsigned ROAD_FOREGROUND = 1; -struct road_info -{ - uint8_t index; /* index of this structure */ - uint8_t type; /* type of road system (see segaic16.h for details) */ - uint8_t control; /* control register value */ - uint16_t colorbase1; /* color base for road ROM data */ - uint16_t colorbase2; /* color base for road background data */ - uint16_t colorbase3; /* color base for sky data */ - int32_t xoffs; /* X scroll offset */ - void (*draw)(struct road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority); - uint16_t * roadram; /* pointer to roadram pointer */ - std::unique_ptr buffer; /* buffered roadram pointer */ - std::unique_ptr gfx; /* expanded road graphics */ -}; + + struct road_info + { + uint8_t index; /* index of this structure */ + uint8_t type; /* type of road system (see segaic16.h for details) */ + uint8_t control; /* control register value */ + uint16_t colorbase1; /* color base for road ROM data */ + uint16_t colorbase2; /* color base for road background data */ + uint16_t colorbase3; /* color base for sky data */ + int32_t xoffs; /* X scroll offset */ + void (*draw)(struct road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority); + uint16_t * roadram; /* pointer to roadram pointer */ + std::unique_ptr buffer; /* buffered roadram pointer */ + std::unique_ptr gfx; /* expanded road graphics */ + }; -class segaic16_road_device : public device_t -{ -public: segaic16_road_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~segaic16_road_device() {} uint16_t *segaic16_roadram_0; void segaic16_road_hangon_decode(running_machine &machine, struct road_info *info); void segaic16_road_outrun_decode(running_machine &machine, struct road_info *info); - struct road_info segaic16_road[SEGAIC16_MAX_ROADS]; + struct road_info segaic16_road[MAX_ROADS]; void segaic16_road_init(running_machine &machine, int which, int type, int colorbase1, int colorbase2, int colorbase3, int xoffs); void segaic16_road_draw(int which, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority); @@ -66,9 +65,9 @@ private: // internal state }; -extern const device_type SEGAIC16_ROAD; +DECLARE_DEVICE_TYPE(SEGAIC16_ROAD, segaic16_road_device) #define MCFG_SEGAIC16_ROAD_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, SEGAIC16_ROAD, 0) -#endif +#endif // MAME_VIDEO_SEGAIC16_ROAD_H diff --git a/src/mame/video/segaic24.cpp b/src/mame/video/segaic24.cpp index d4bb17157b5..0cd954ca3d7 100644 --- a/src/mame/video/segaic24.cpp +++ b/src/mame/video/segaic24.cpp @@ -19,26 +19,26 @@ System 24 68000x2 315-5292 315-5293 315-5294 315-5242 ym2151 da #include "screen.h" -const device_type S24TILE = device_creator; -const device_type S24SPRITE = device_creator; -const device_type S24MIXER = device_creator; +DEFINE_DEVICE_TYPE(S24TILE, segas24_tile_device, "segas24_tile", "Sega System 24 Tilemap") +DEFINE_DEVICE_TYPE(S24SPRITE, segas24_sprite_device, "segas24_sprite", "Sega System 24 Sprites") +DEFINE_DEVICE_TYPE(S24MIXER, segas24_mixer_device, "segas24_mixer", "Sega System 24 Mixer") -segas24_tile::segas24_tile(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, S24TILE, "Sega System 24 Tilemap", tag, owner, clock, "segas24_tile", __FILE__), - device_gfx_interface(mconfig, *this), - char_gfx_index(0) +segas24_tile_device::segas24_tile_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, S24TILE, tag, owner, clock) + , device_gfx_interface(mconfig, *this) + , char_gfx_index(0) { } -void segas24_tile::static_set_tile_mask(device_t &device, uint16_t _tile_mask) +void segas24_tile_device::static_set_tile_mask(device_t &device, uint16_t _tile_mask) { - segas24_tile &dev = downcast(device); + segas24_tile_device &dev = downcast(device); dev.tile_mask = _tile_mask; } -const gfx_layout segas24_tile::char_layout = { +const gfx_layout segas24_tile_device::char_layout = { 8, 8, SYS24_TILES, 4, @@ -48,42 +48,45 @@ const gfx_layout segas24_tile::char_layout = { 8*32 }; -void segas24_tile::tile_info(int offset, tile_data &tileinfo, tilemap_memory_index tile_index) +void segas24_tile_device::tile_info(int offset, tile_data &tileinfo, tilemap_memory_index tile_index) { uint16_t val = tile_ram[tile_index|offset]; SET_TILE_INFO_MEMBER(char_gfx_index, val & tile_mask, (val >> 7) & 0xff, 0); tileinfo.category = (val & 0x8000) != 0; } -TILE_GET_INFO_MEMBER(segas24_tile::tile_info_0s) +TILE_GET_INFO_MEMBER(segas24_tile_device::tile_info_0s) { tile_info(0x0000, tileinfo, tile_index); } -TILE_GET_INFO_MEMBER( segas24_tile::tile_info_0w) +TILE_GET_INFO_MEMBER( segas24_tile_device::tile_info_0w) { tile_info(0x1000, tileinfo, tile_index); } -TILE_GET_INFO_MEMBER(segas24_tile::tile_info_1s) +TILE_GET_INFO_MEMBER(segas24_tile_device::tile_info_1s) { tile_info(0x2000, tileinfo, tile_index); } -TILE_GET_INFO_MEMBER(segas24_tile::tile_info_1w) +TILE_GET_INFO_MEMBER(segas24_tile_device::tile_info_1w) { tile_info(0x3000, tileinfo, tile_index); } -void segas24_tile::device_start() +void segas24_tile_device::device_start() { + if (!palette().device().started()) + throw device_missing_dependencies(); + char_ram = std::make_unique(0x80000/2); tile_ram = std::make_unique(0x10000/2); - tile_layer[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile::tile_info_0s),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - tile_layer[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile::tile_info_0w),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - tile_layer[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile::tile_info_1s),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - tile_layer[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile::tile_info_1w),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + tile_layer[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile_device::tile_info_0s),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + tile_layer[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile_device::tile_info_0w),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + tile_layer[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile_device::tile_info_1s),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + tile_layer[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile_device::tile_info_1w),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); tile_layer[0]->set_transparent_pen(0); tile_layer[1]->set_transparent_pen(0); @@ -99,7 +102,7 @@ void segas24_tile::device_start() save_pointer(NAME(char_ram.get()), 0x80000/2); } -void segas24_tile::draw_rect(screen_device &screen, bitmap_ind16 &bm, bitmap_ind8 &tm, bitmap_ind16 &dm, const uint16_t *mask, +void segas24_tile_device::draw_rect(screen_device &screen, bitmap_ind16 &bm, bitmap_ind8 &tm, bitmap_ind16 &dm, const uint16_t *mask, uint16_t tpri, uint8_t lpri, int win, int sx, int sy, int xx1, int yy1, int xx2, int yy2) { int y; @@ -233,7 +236,7 @@ void segas24_tile::draw_rect(screen_device &screen, bitmap_ind16 &bm, bitmap_ind // about sprite priority hence the lack of support for the // priority_bitmap -void segas24_tile::draw_rect(screen_device &screen, bitmap_ind16 &bm, bitmap_ind8 &tm, bitmap_rgb32 &dm, const uint16_t *mask, +void segas24_tile_device::draw_rect(screen_device &screen, bitmap_ind16 &bm, bitmap_ind8 &tm, bitmap_rgb32 &dm, const uint16_t *mask, uint16_t tpri, uint8_t lpri, int win, int sx, int sy, int xx1, int yy1, int xx2, int yy2) { int y; @@ -346,7 +349,7 @@ void segas24_tile::draw_rect(screen_device &screen, bitmap_ind16 &bm, bitmap_ind } template -void segas24_tile::draw_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, int layer, int lpri, int flags) +void segas24_tile_device::draw_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, int layer, int lpri, int flags) { uint16_t hscr = tile_ram[0x5000+(layer >> 1)]; uint16_t vscr = tile_ram[0x5004+(layer >> 1)]; @@ -521,30 +524,30 @@ void segas24_tile::draw_common(screen_device &screen, _BitmapClass &bitmap, cons } } -void segas24_tile::draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int lpri, int flags) +void segas24_tile_device::draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int lpri, int flags) { draw_common(screen, bitmap, cliprect, layer, lpri, flags); } -void segas24_tile::draw(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int lpri, int flags) +void segas24_tile_device::draw(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int lpri, int flags) { draw_common(screen, bitmap, cliprect, layer, lpri, flags); } -READ16_MEMBER(segas24_tile::tile_r) +READ16_MEMBER(segas24_tile_device::tile_r) { return tile_ram[offset]; } -READ16_MEMBER(segas24_tile::char_r) +READ16_MEMBER(segas24_tile_device::char_r) { return char_ram[offset]; } -WRITE16_MEMBER(segas24_tile::tile_w) +WRITE16_MEMBER(segas24_tile_device::tile_w) { COMBINE_DATA(tile_ram.get() + offset); if(offset < 0x4000) tile_layer[offset >> 12]->mark_tile_dirty(offset & 0xfff); } -WRITE16_MEMBER(segas24_tile::char_w) +WRITE16_MEMBER(segas24_tile_device::char_w) { uint16_t old = char_ram[offset]; COMBINE_DATA(char_ram.get() + offset); @@ -552,35 +555,35 @@ WRITE16_MEMBER(segas24_tile::char_w) gfx(char_gfx_index)->mark_dirty(offset / 16); } -READ32_MEMBER(segas24_tile::tile32_r) +READ32_MEMBER(segas24_tile_device::tile32_r) { return tile_r(space, offset*2, mem_mask&0xffff) | tile_r(space, (offset*2)+1, mem_mask>>16)<<16; } -READ32_MEMBER(segas24_tile::char32_r) +READ32_MEMBER(segas24_tile_device::char32_r) { return char_r(space, offset*2, mem_mask&0xffff) | char_r(space, (offset*2)+1, mem_mask>>16)<<16; } -WRITE32_MEMBER(segas24_tile::tile32_w) +WRITE32_MEMBER(segas24_tile_device::tile32_w) { tile_w(space, offset*2, data&0xffff, mem_mask&0xffff); tile_w(space, (offset*2)+1, data>>16, mem_mask>>16); } -WRITE32_MEMBER(segas24_tile::char32_w) +WRITE32_MEMBER(segas24_tile_device::char32_w) { char_w(space, offset*2, data&0xffff, mem_mask&0xffff); char_w(space, (offset*2)+1, data>>16, mem_mask>>16); } -segas24_sprite::segas24_sprite(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, S24SPRITE, "Sega System 24 Sprites", tag, owner, clock, "segas24_sprite", __FILE__) +segas24_sprite_device::segas24_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, S24SPRITE, tag, owner, clock) { } -void segas24_sprite::device_start() +void segas24_sprite_device::device_start() { sprite_ram = std::make_unique(0x40000/2); @@ -611,7 +614,7 @@ void segas24_sprite::device_start() 0 11------ -------- */ -void segas24_sprite::draw(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, const int *spri) +void segas24_sprite_device::draw(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, const int *spri) { uint16_t curspr = 0; int countspr = 0; @@ -809,39 +812,39 @@ void segas24_sprite::draw(bitmap_ind16 &bitmap, const rectangle &cliprect, bitma } -WRITE16_MEMBER(segas24_sprite::write) +WRITE16_MEMBER(segas24_sprite_device::write) { COMBINE_DATA(sprite_ram.get() + offset); } -READ16_MEMBER(segas24_sprite::read) +READ16_MEMBER(segas24_sprite_device::read) { return sprite_ram[offset]; } -segas24_mixer::segas24_mixer(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, S24MIXER, "Sega System 24 Mixer", tag, owner, clock, "segas24_mixer", __FILE__) +segas24_mixer_device::segas24_mixer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, S24MIXER, tag, owner, clock) { } -void segas24_mixer::device_start() +void segas24_mixer_device::device_start() { memset(mixer_reg, 0, sizeof(mixer_reg)); save_item(NAME(mixer_reg)); } -WRITE16_MEMBER(segas24_mixer::write) +WRITE16_MEMBER(segas24_mixer_device::write) { COMBINE_DATA(mixer_reg + offset); } -READ16_MEMBER(segas24_mixer::read) +READ16_MEMBER(segas24_mixer_device::read) { return mixer_reg[offset]; } -uint16_t segas24_mixer::get_reg(int reg) +uint16_t segas24_mixer_device::get_reg(int reg) { return mixer_reg[reg]; } diff --git a/src/mame/video/segaic24.h b/src/mame/video/segaic24.h index 5c95f172285..abcf5c6a4ee 100644 --- a/src/mame/video/segaic24.h +++ b/src/mame/video/segaic24.h @@ -5,12 +5,14 @@ */ -#ifndef __SEGAIC24_H -#define __SEGAIC24_H +#ifndef MAME_VIDEO_SEGAIC24_H +#define MAME_VIDEO_SEGAIC24_H + +#pragma once #define MCFG_S24TILE_DEVICE_ADD(_tag, tile_mask) \ MCFG_DEVICE_ADD(_tag, S24TILE, 0) \ - segas24_tile::static_set_tile_mask(*device, tile_mask); + segas24_tile_device::static_set_tile_mask(*device, tile_mask); #define MCFG_S24SPRITE_DEVICE_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, S24SPRITE, 0) @@ -22,12 +24,12 @@ #define MCFG_S24TILE_DEVICE_PALETTE(_palette_tag) \ MCFG_GFX_PALETTE(_palette_tag) -class segas24_tile : public device_t, public device_gfx_interface +class segas24_tile_device : public device_t, public device_gfx_interface { friend class segas24_tile_config; public: - segas24_tile(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + segas24_tile_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration static void static_set_tile_mask(device_t &device, uint16_t tile_mask); @@ -76,12 +78,12 @@ private: void draw_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, int layer, int pri, int flags); }; -class segas24_sprite : public device_t +class segas24_sprite_device : public device_t { friend class segas24_sprite_config; public: - segas24_sprite(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + segas24_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_READ16_MEMBER(read); DECLARE_WRITE16_MEMBER(write); @@ -96,12 +98,12 @@ private: }; -class segas24_mixer : public device_t +class segas24_mixer_device : public device_t { friend class segas24_mixer_config; public: - segas24_mixer(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + segas24_mixer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_READ16_MEMBER(read); DECLARE_WRITE16_MEMBER(write); @@ -115,8 +117,8 @@ private: uint16_t mixer_reg[16]; }; -extern const device_type S24TILE; -extern const device_type S24SPRITE; -extern const device_type S24MIXER; +DECLARE_DEVICE_TYPE(S24TILE, segas24_tile_device) +DECLARE_DEVICE_TYPE(S24SPRITE, segas24_sprite_device) +DECLARE_DEVICE_TYPE(S24MIXER, segas24_mixer_device) -#endif +#endif // MAME_VIDEO_SEGAIC24_H diff --git a/src/mame/video/segaorun.cpp b/src/mame/video/segaorun.cpp index 3e77259dc88..469f574a9b2 100644 --- a/src/mame/video/segaorun.cpp +++ b/src/mame/video/segaorun.cpp @@ -20,18 +20,18 @@ void segaorun_state::video_start() if (m_shangon_video) { // initialize the tile/text layers - m_segaic16vid->tilemap_init(0, SEGAIC16_TILEMAP_16B_ALT, 0x000, 0, 2); + m_segaic16vid->tilemap_init(0, segaic16_video_device::TILEMAP_16B_ALT, 0x000, 0, 2); // initialize the road - m_segaic16road->segaic16_road_init(machine(), 0, SEGAIC16_ROAD_OUTRUN, 0x7f6, 0x7c0, 0x7c0, 0); + m_segaic16road->segaic16_road_init(machine(), 0, segaic16_road_device::ROAD_OUTRUN, 0x7f6, 0x7c0, 0x7c0, 0); } else { // initialize the tile/text layers - m_segaic16vid->tilemap_init(0, SEGAIC16_TILEMAP_16B, 0x000, 0, 2); + m_segaic16vid->tilemap_init(0, segaic16_video_device::TILEMAP_16B, 0x000, 0, 2); // initialize the road - m_segaic16road->segaic16_road_init(machine(), 0, SEGAIC16_ROAD_OUTRUN, 0x400, 0x420, 0x780, 0); + m_segaic16road->segaic16_road_init(machine(), 0, segaic16_road_device::ROAD_OUTRUN, 0x400, 0x420, 0x780, 0); } } @@ -50,24 +50,24 @@ uint32_t segaorun_state::screen_update_shangon(screen_device &screen, bitmap_ind screen.priority().fill(0, cliprect); // draw the low priority road layer - m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_BACKGROUND); + m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, segaic16_road_device::ROAD_BACKGROUND); // draw background - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01); - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0, 0x01); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1, 0x02); // draw foreground - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 0, 0x02); - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 1, 0x04); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 0, 0x02); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 1, 0x04); // draw the high priority road - m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_FOREGROUND); + m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, segaic16_road_device::ROAD_FOREGROUND); // text layer // note that we inflate the priority of the text layer to prevent sprites // from drawing over the high scores - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 0, 0x08); - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 1, 0x08); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 0, 0x08); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 1, 0x08); // mix in sprites bitmap_ind16 &sprites = m_sprites->bitmap(); @@ -119,22 +119,22 @@ uint32_t segaorun_state::screen_update_outrun(screen_device &screen, bitmap_ind1 screen.priority().fill(0, cliprect); // draw the low priority road layer - m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_BACKGROUND); + m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, segaic16_road_device::ROAD_BACKGROUND); // draw background - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01); - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0, 0x01); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1, 0x02); // draw foreground - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 0, 0x02); - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 1, 0x04); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 0, 0x02); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 1, 0x04); // draw the high priority road - m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_FOREGROUND); + m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, segaic16_road_device::ROAD_FOREGROUND); // text layer - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 0, 0x04); - m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 1, 0x08); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 0, 0x04); + m_segaic16vid->tilemap_draw(screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 1, 0x08); // mix in sprites bitmap_ind16 &sprites = m_sprites->bitmap(); diff --git a/src/mame/video/segas16a.cpp b/src/mame/video/segas16a.cpp index 88346c30ec1..809263dd606 100644 --- a/src/mame/video/segas16a.cpp +++ b/src/mame/video/segas16a.cpp @@ -18,7 +18,7 @@ void segas16a_state::video_start() { // initialize the tile/text layers - m_segaic16vid->tilemap_init( 0, SEGAIC16_TILEMAP_16A, 0x000, 0, 1); + m_segaic16vid->tilemap_init( 0, segaic16_video_device::TILEMAP_16A, 0x000, 0, 1); } @@ -42,21 +42,21 @@ uint32_t segas16a_state::screen_update(screen_device &screen, bitmap_ind16 &bitm screen.priority().fill(0, cliprect); // draw background opaquely first, not setting any priorities - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0 | TILEMAP_DRAW_OPAQUE, 0x00); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1 | TILEMAP_DRAW_OPAQUE, 0x00); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0 | TILEMAP_DRAW_OPAQUE, 0x00); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1 | TILEMAP_DRAW_OPAQUE, 0x00); // draw background again, just to set the priorities on non-transparent pixels bitmap_ind16 dummy_bitmap; - m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01); - m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02); + m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0, 0x01); + m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1, 0x02); // draw foreground - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 0, 0x02); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 1, 0x04); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 0, 0x02); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 1, 0x04); // text layer - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 0, 0x04); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 1, 0x08); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 0, 0x04); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 1, 0x08); // mix in sprites bitmap_ind16 &sprites = m_sprites->bitmap(); diff --git a/src/mame/video/segas16b.cpp b/src/mame/video/segas16b.cpp index 2302db46d81..026456a1ec7 100644 --- a/src/mame/video/segas16b.cpp +++ b/src/mame/video/segas16b.cpp @@ -43,21 +43,21 @@ uint32_t segas16b_state::screen_update(screen_device &screen, bitmap_ind16 &bitm screen.priority().fill(0, cliprect); // draw background opaquely first, not setting any priorities - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0 | TILEMAP_DRAW_OPAQUE, 0x00); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1 | TILEMAP_DRAW_OPAQUE, 0x00); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0 | TILEMAP_DRAW_OPAQUE, 0x00); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1 | TILEMAP_DRAW_OPAQUE, 0x00); // draw background again, just to set the priorities on non-transparent pixels bitmap_ind16 dummy_bitmap; - m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01); - m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02); + m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0, 0x01); + m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1, 0x02); // draw foreground - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 0, 0x02); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 1, 0x04); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 0, 0x02); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 1, 0x04); // text layer - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 0, 0x04); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 1, 0x08); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 0, 0x04); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 1, 0x08); // mix in sprites if (!m_sprites.found()) return 0; diff --git a/src/mame/video/segas18.cpp b/src/mame/video/segas18.cpp index a7c6229f40e..f6033172e24 100644 --- a/src/mame/video/segas18.cpp +++ b/src/mame/video/segas18.cpp @@ -34,7 +34,7 @@ void segas18_state::video_start() m_vdp_mixing = 0; // initialize the tile/text layers - m_segaic16vid->tilemap_init( 0, SEGAIC16_TILEMAP_16B, 0x000, 0, 8); + m_segaic16vid->tilemap_init( 0, segaic16_video_device::TILEMAP_16B, 0x000, 0, 8); save_item(NAME(m_grayscale_enable)); save_item(NAME(m_vdp_enable)); @@ -200,23 +200,23 @@ uint32_t segas18_state::screen_update(screen_device &screen, bitmap_ind16 &bitma screen.priority().fill(0, cliprect); // draw background opaquely first, not setting any priorities - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0 | TILEMAP_DRAW_OPAQUE, 0x00); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1 | TILEMAP_DRAW_OPAQUE, 0x00); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0 | TILEMAP_DRAW_OPAQUE, 0x00); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1 | TILEMAP_DRAW_OPAQUE, 0x00); if (m_vdp_enable && vdplayer == 0) draw_vdp(screen, bitmap, cliprect, vdppri); // draw background again to draw non-transparent pixels over the VDP and set the priority - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0, 0x01); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1, 0x02); if (m_vdp_enable && vdplayer == 1) draw_vdp(screen, bitmap, cliprect, vdppri); // draw foreground - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 0, 0x02); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 1, 0x04); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 0, 0x02); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 1, 0x04); if (m_vdp_enable && vdplayer == 2) draw_vdp(screen, bitmap, cliprect, vdppri); // text layer - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 0, 0x04); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 1, 0x08); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 0, 0x04); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 1, 0x08); if (m_vdp_enable && vdplayer == 3) draw_vdp(screen, bitmap, cliprect, vdppri); // mix in sprites diff --git a/src/mame/video/segas24.cpp b/src/mame/video/segas24.cpp index 056c9a7732e..74dac813a55 100644 --- a/src/mame/video/segas24.cpp +++ b/src/mame/video/segas24.cpp @@ -15,7 +15,7 @@ namespace { struct layer_sort { - layer_sort(segas24_mixer *_mixer) { mixer = _mixer; } + layer_sort(segas24_mixer_device *_mixer) { mixer = _mixer; } bool operator()(int l1, int l2) { static const int default_pri[12] = { 0, 1, 2, 3, 4, 5, 6, 7, -4, -3, -2, -1 }; @@ -26,7 +26,7 @@ namespace { return default_pri[l2] - default_pri[l1] < 0; } - segas24_mixer *mixer; + segas24_mixer_device *mixer; }; } diff --git a/src/mame/video/segas32.cpp b/src/mame/video/segas32.cpp index 5bad6d3ecde..ca9e7b8e252 100644 --- a/src/mame/video/segas32.cpp +++ b/src/mame/video/segas32.cpp @@ -213,6 +213,9 @@ void segas32_state::common_start(int multi32) if(!m_gfxdecode->started()) throw device_missing_dependencies(); + m_vblank_end_int_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(segas32_state::end_of_vblank_int), this)); + m_update_sprites_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(segas32_state::update_sprites), this)); + int tmap; /* remember whether or not we are multi32 */ @@ -296,7 +299,7 @@ void segas32_state::system32_set_vblank(int state) { /* at the end of VBLANK is when automatic sprite rendering happens */ if (!state) - machine().scheduler().timer_set(attotime::from_usec(50), timer_expired_delegate(FUNC(segas32_state::update_sprites),this), 1); + m_update_sprites_timer->adjust(attotime::from_usec(50), 1); } diff --git a/src/mame/video/segaxbd.cpp b/src/mame/video/segaxbd.cpp index 12de6fcaab2..b7e06d0e311 100644 --- a/src/mame/video/segaxbd.cpp +++ b/src/mame/video/segaxbd.cpp @@ -23,10 +23,10 @@ void segaxbd_state::video_start() throw device_missing_dependencies(); // initialize the tile/text layers - m_segaic16vid->tilemap_init( 0, SEGAIC16_TILEMAP_16B, 0x1c00, 0, 2); + m_segaic16vid->tilemap_init( 0, segaic16_video_device::TILEMAP_16B, 0x1c00, 0, 2); // initialize the road - m_segaic16road->segaic16_road_init(machine(), 0, SEGAIC16_ROAD_XBOARD, 0x1700, 0x1720, 0x1780, -166); + m_segaic16road->segaic16_road_init(machine(), 0, segaic16_road_device::ROAD_XBOARD, 0x1700, 0x1720, 0x1780, -166); } @@ -51,25 +51,25 @@ uint32_t segaxbd_state::screen_update(screen_device &screen, bitmap_ind16 &bitma screen.priority().fill(0, cliprect); // draw the low priority road layer - m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_BACKGROUND); + m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, segaic16_road_device::ROAD_BACKGROUND); if (m_road_priority == 0) - m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_FOREGROUND); + m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, segaic16_road_device::ROAD_FOREGROUND); // draw background - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 0, 0x01); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_BACKGROUND, 1, 0x02); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0, 0x01); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1, 0x02); // draw foreground - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 0, 0x02); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_FOREGROUND, 1, 0x04); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 0, 0x02); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 1, 0x04); // draw the high priority road if (m_road_priority == 1) - m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, SEGAIC16_ROAD_FOREGROUND); + m_segaic16road->segaic16_road_draw(0, bitmap, cliprect, segaic16_road_device::ROAD_FOREGROUND); // text layer - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 0, 0x04); - m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, SEGAIC16_TILEMAP_TEXT, 1, 0x08); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 0, 0x04); + m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_TEXT, 1, 0x08); // mix in sprites bitmap_ind16 &sprites = m_sprites->bitmap(); diff --git a/src/mame/video/segaybd.cpp b/src/mame/video/segaybd.cpp index e5e40484ef5..fb93042f19e 100644 --- a/src/mame/video/segaybd.cpp +++ b/src/mame/video/segaybd.cpp @@ -17,7 +17,7 @@ void segaybd_state::video_start() { // initialize the rotation layer - m_segaic16vid->rotate_init(0, SEGAIC16_ROTATE_YBOARD, 0x000); + m_segaic16vid->rotate_init(0, segaic16_video_device::ROTATE_YBOARD, 0x000); m_ysprites->set_rotate_ptr(m_segaic16vid->m_rotate); } diff --git a/src/mame/video/seibu_crtc.cpp b/src/mame/video/seibu_crtc.cpp index 774507e970e..fb2ee4b2321 100644 --- a/src/mame/video/seibu_crtc.cpp +++ b/src/mame/video/seibu_crtc.cpp @@ -213,7 +213,7 @@ List of default vregs (title screen): //************************************************************************** // device type definition -const device_type SEIBU_CRTC = device_creator; +DEFINE_DEVICE_TYPE(SEIBU_CRTC, seibu_crtc_device, "seibu_crtc", "Seibu CRT Controller") static ADDRESS_MAP_START( seibu_crtc_vregs, AS_0, 16, seibu_crtc_device ) AM_RANGE(0x0014, 0x0015) AM_WRITE(decrypt_key_w) @@ -270,7 +270,7 @@ WRITE16_MEMBER( seibu_crtc_device::layer_scroll_base_w) //------------------------------------------------- seibu_crtc_device::seibu_crtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SEIBU_CRTC, "Seibu CRT Controller", tag, owner, clock, "seibu_crtc", __FILE__), + : device_t(mconfig, SEIBU_CRTC, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), m_decrypt_key_cb(*this), diff --git a/src/mame/video/seibu_crtc.h b/src/mame/video/seibu_crtc.h index 96c1789d175..fe58abbf1cf 100644 --- a/src/mame/video/seibu_crtc.h +++ b/src/mame/video/seibu_crtc.h @@ -6,10 +6,10 @@ ***************************************************************************/ -#pragma once +#ifndef MAME_VIDEO_SEIBU_CRTC_H +#define MAME_VIDEO_SEIBU_CRTC_H -#ifndef __SEIBU_CRTCDEV_H__ -#define __SEIBU_CRTCDEV_H__ +#pragma once //************************************************************************** @@ -46,11 +46,11 @@ public: // construction/destruction seibu_crtc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_decrypt_key_callback(device_t &device, _Object object) { return downcast(device).m_decrypt_key_cb.set_callback(object); } - template static devcb_base &set_layer_en_callback(device_t &device, _Object object) { return downcast(device).m_layer_en_cb.set_callback(object); } - template static devcb_base &set_layer_scroll_callback(device_t &device, _Object object) { return downcast(device).m_layer_scroll_cb.set_callback(object); } - template static devcb_base &set_reg_1a_callback(device_t &device, _Object object) { return downcast(device).m_reg_1a_cb.set_callback(object); } - template static devcb_base &set_layer_scroll_base_callback(device_t &device, _Object object) { return downcast(device).m_layer_scroll_base_cb.set_callback(object); } + template static devcb_base &set_decrypt_key_callback(device_t &device, Object &&cb) { return downcast(device).m_decrypt_key_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_layer_en_callback(device_t &device, Object &&cb) { return downcast(device).m_layer_en_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_layer_scroll_callback(device_t &device, Object &&cb) { return downcast(device).m_layer_scroll_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_reg_1a_callback(device_t &device, Object &&cb) { return downcast(device).m_reg_1a_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_layer_scroll_base_callback(device_t &device, Object &&cb) { return downcast(device).m_layer_scroll_base_cb.set_callback(std::forward(cb)); } // I/O operations DECLARE_WRITE16_MEMBER( write ); @@ -88,6 +88,6 @@ private: // device type definition -extern const device_type SEIBU_CRTC; +DECLARE_DEVICE_TYPE(SEIBU_CRTC, seibu_crtc_device) -#endif +#endif // MAME_VIDEO_SEIBU_CRTC_H diff --git a/src/mame/video/seta.cpp b/src/mame/video/seta.cpp index eeac4a5c1a1..817eda4d785 100644 --- a/src/mame/video/seta.cpp +++ b/src/mame/video/seta.cpp @@ -1062,7 +1062,7 @@ uint32_t seta_state::screen_update_setaroul(screen_device &screen, bitmap_ind16 return 0; } -void seta_state::screen_eof_setaroul(screen_device &screen, bool state) +WRITE_LINE_MEMBER(seta_state::screen_vblank_setaroul) { // rising edge if (state) diff --git a/src/mame/video/seta001.cpp b/src/mame/video/seta001.cpp index 25adb5ce2ba..67ead040f9b 100644 --- a/src/mame/video/seta001.cpp +++ b/src/mame/video/seta001.cpp @@ -30,10 +30,10 @@ #include "screen.h" -const device_type SETA001_SPRITE = device_creator; +DEFINE_DEVICE_TYPE(SETA001_SPRITE, seta001_device, "seta001", "Seta SETA001 Sprites") seta001_device::seta001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SETA001_SPRITE, "Seta SETA001 Sprite", tag, owner, clock, "seta001", __FILE__) + : device_t(mconfig, SETA001_SPRITE, tag, owner, clock) , m_gfxdecode(*this, finder_base::DUMMY_TAG) { } diff --git a/src/mame/video/seta001.h b/src/mame/video/seta001.h index 23e1e4fa17b..2deab65033c 100644 --- a/src/mame/video/seta001.h +++ b/src/mame/video/seta001.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia, David Haywood +#ifndef MAME_VIDEO_SETA001_H +#define MAME_VIDEO_SETA001_H + +#pragma once typedef device_delegate gfxbank_cb_delegate; @@ -82,7 +86,9 @@ private: uint8_t m_spritecodehigh[0x2000]; // ^ }; -extern const device_type SETA001_SPRITE; +DECLARE_DEVICE_TYPE(SETA001_SPRITE, seta001_device) #define MCFG_SETA001_SPRITE_GFXDECODE(_gfxtag) \ seta001_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); + +#endif // MAME_VIDEO_SETA001_H diff --git a/src/mame/video/seta2.cpp b/src/mame/video/seta2.cpp index 938a4bb59fb..6102dfa0b6f 100644 --- a/src/mame/video/seta2.cpp +++ b/src/mame/video/seta2.cpp @@ -482,7 +482,7 @@ uint32_t seta2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, return 0; } -void seta2_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(seta2_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/shadfrce.cpp b/src/mame/video/shadfrce.cpp index a5731909096..21789a93afa 100644 --- a/src/mame/video/shadfrce.cpp +++ b/src/mame/video/shadfrce.cpp @@ -167,7 +167,7 @@ uint32_t shadfrce_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -void shadfrce_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(shadfrce_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/shuuz.cpp b/src/mame/video/shuuz.cpp index 2c721ac3901..eb0aa7089cf 100644 --- a/src/mame/video/shuuz.cpp +++ b/src/mame/video/shuuz.cpp @@ -19,8 +19,8 @@ TILE_GET_INFO_MEMBER(shuuz_state::get_playfield_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) >> 8; + uint16_t data1 = m_vad->playfield().basemem_read(tile_index); + uint16_t data2 = m_vad->playfield().extmem_read(tile_index) >> 8; int code = data1 & 0x3fff; int color = data2 & 0x0f; SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); diff --git a/src/mame/video/simpsons.cpp b/src/mame/video/simpsons.cpp index 5fc201ab186..a25ed485e43 100644 --- a/src/mame/video/simpsons.cpp +++ b/src/mame/video/simpsons.cpp @@ -93,20 +93,20 @@ uint32_t simpsons_state::screen_update_simpsons(screen_device &screen, bitmap_in { int layer[3], bg_colorbase; - bg_colorbase = m_k053251->get_palette_index(K053251_CI0); - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI2); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI3); - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI4); + bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI3); + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI4); m_k052109->tilemap_update(); layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI3); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI3); layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI4); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4); konami_sortlayers3(layer, m_layerpri); diff --git a/src/mame/video/sknsspr.cpp b/src/mame/video/sknsspr.cpp index 8efcd50503a..6e1aed35ec5 100644 --- a/src/mame/video/sknsspr.cpp +++ b/src/mame/video/sknsspr.cpp @@ -19,12 +19,12 @@ #include "sknsspr.h" #include "screen.h" -const device_type SKNS_SPRITE = device_creator; +DEFINE_DEVICE_TYPE(SKNS_SPRITE, sknsspr_device, "sknsspr", "SKNS Sprite") sknsspr_device::sknsspr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SKNS_SPRITE, "SKNS Sprite", tag, owner, clock, "sknsspr", __FILE__), - device_video_interface(mconfig, *this) + : device_t(mconfig, SKNS_SPRITE, tag, owner, clock) + , device_video_interface(mconfig, *this) { } diff --git a/src/mame/video/sknsspr.h b/src/mame/video/sknsspr.h index ca9548c1e98..251387a16e3 100644 --- a/src/mame/video/sknsspr.h +++ b/src/mame/video/sknsspr.h @@ -3,8 +3,9 @@ #ifndef MAME_VIDEO_SKNSSPR_H #define MAME_VIDEO_SKNSSPR_H -class sknsspr_device : public device_t, - public device_video_interface +#pragma once + +class sknsspr_device : public device_t, public device_video_interface { public: sknsspr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -16,12 +17,12 @@ protected: virtual void device_start() override; virtual void device_reset() override; private: + static constexpr unsigned SUPRNOVA_DECODE_BUFFER_SIZE = 0x2000; int sprite_kludge_x, sprite_kludge_y; - #define SUPRNOVA_DECODE_BUFFER_SIZE 0x2000 uint8_t decodebuffer[SUPRNOVA_DECODE_BUFFER_SIZE]; int skns_rle_decode ( int romoffset, int size, uint8_t*gfx_source, size_t gfx_length ); }; -extern const device_type SKNS_SPRITE; +DECLARE_DEVICE_TYPE(SKNS_SPRITE, sknsspr_device) #endif // MAME_VIDEO_SKNSSPR_H diff --git a/src/mame/video/skullxbo.cpp b/src/mame/video/skullxbo.cpp index ae4f5c04d36..3a10189dccb 100644 --- a/src/mame/video/skullxbo.cpp +++ b/src/mame/video/skullxbo.cpp @@ -19,7 +19,7 @@ TILE_GET_INFO_MEMBER(skullxbo_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = (data ^ 0x400) & 0x7ff; int color = (data >> 11) & 0x0f; int opaque = data & 0x8000; @@ -29,8 +29,8 @@ TILE_GET_INFO_MEMBER(skullxbo_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(skullxbo_state::get_playfield_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) & 0xff; + uint16_t data1 = m_playfield_tilemap->basemem_read(tile_index); + uint16_t data2 = m_playfield_tilemap->extmem_read(tile_index) & 0xff; int code = data1 & 0x7fff; int color = data2 & 0x0f; SET_TILE_INFO_MEMBER(1, code, color, (data1 >> 15) & 1); diff --git a/src/mame/video/slapshot.cpp b/src/mame/video/slapshot.cpp index a9a6318ee1b..79ed3b7ea31 100644 --- a/src/mame/video/slapshot.cpp +++ b/src/mame/video/slapshot.cpp @@ -419,7 +419,7 @@ void slapshot_state::taito_update_sprites_active_area( ) } } -void slapshot_state::screen_eof_taito_no_buffer(screen_device &screen, bool state) +WRITE_LINE_MEMBER(slapshot_state::screen_vblank_taito_no_buffer) { // rising edge if (state) diff --git a/src/mame/video/snk6502.cpp b/src/mame/video/snk6502.cpp index fb8be98cea7..46f6a8107a8 100644 --- a/src/mame/video/snk6502.cpp +++ b/src/mame/video/snk6502.cpp @@ -10,6 +10,7 @@ #include "emu.h" #include "includes/snk6502.h" +#include "audio/snk6502.h" #define TOTAL_COLORS(gfxn) (m_gfxdecode->gfx(gfxn)->colors() * m_gfxdecode->gfx(gfxn)->granularity()) @@ -136,6 +137,12 @@ WRITE8_MEMBER(snk6502_state::flipscreen_w) } } +WRITE8_MEMBER(snk6502_state::fantasy_flipscreen_w) +{ + m_sound->fantasy_sound_w(space, offset | 0x03, data, mem_mask); + flipscreen_w(space, offset, data, mem_mask); +} + WRITE8_MEMBER(snk6502_state::scrollx_w) { m_bg_tilemap->set_scrollx(0, data); diff --git a/src/mame/video/snk68_spr.cpp b/src/mame/video/snk68_spr.cpp index a11d9900d47..6ce6e8c5761 100644 --- a/src/mame/video/snk68_spr.cpp +++ b/src/mame/video/snk68_spr.cpp @@ -5,10 +5,10 @@ #include "emu.h" #include "snk68_spr.h" -const device_type SNK68_SPR = device_creator; +DEFINE_DEVICE_TYPE(SNK68_SPR, snk68_spr_device, "snk68_spr", "SNK68 Sprites") snk68_spr_device::snk68_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SNK68_SPR, "SNK68 Sprites", tag, owner, clock, "snk68_spr", __FILE__) + : device_t(mconfig, SNK68_SPR, tag, owner, clock) , m_gfxdecode(*this, finder_base::DUMMY_TAG) , m_spriteram(*this, "^spriteram") , m_screen(*this, "^screen") diff --git a/src/mame/video/snk68_spr.h b/src/mame/video/snk68_spr.h index bbcc05c8b98..d7c9433b811 100644 --- a/src/mame/video/snk68_spr.h +++ b/src/mame/video/snk68_spr.h @@ -1,5 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Bryan McPhail, Acho A. Tang, Nicola Salmoria +#ifndef MAME_VIDEO_SNK68_SPR_H +#define MAME_VIDEO_SNK68_SPR_H + +#pragma once + #include "screen.h" typedef device_delegate snk68_tile_indirection_delegate; @@ -45,4 +50,6 @@ private: }; -extern const device_type SNK68_SPR; +DECLARE_DEVICE_TYPE(SNK68_SPR, snk68_spr_device) + +#endif // MAME_VIDEO_SNK68_SPR_H diff --git a/src/mame/video/spectrum.cpp b/src/mame/video/spectrum.cpp index 0f6ee5485d5..2a26f0f2099 100644 --- a/src/mame/video/spectrum.cpp +++ b/src/mame/video/spectrum.cpp @@ -67,7 +67,7 @@ inline unsigned char spectrum_state::get_display_color (unsigned char color, int /* Code to change the FLASH status every 25 frames. Note this must be independent of frame skip etc. */ -void spectrum_state::screen_eof_spectrum(screen_device &screen, bool state) +WRITE_LINE_MEMBER(spectrum_state::screen_vblank_spectrum) { // rising edge if (state) diff --git a/src/mame/video/sprint2.cpp b/src/mame/video/sprint2.cpp index cfe567c6d16..537f8d9dea3 100644 --- a/src/mame/video/sprint2.cpp +++ b/src/mame/video/sprint2.cpp @@ -118,7 +118,7 @@ uint32_t sprint2_state::screen_update_sprint2(screen_device &screen, bitmap_ind1 uint8_t *video_ram = m_video_ram; int i; - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_bg_tilemap->draw(*m_screen, bitmap, cliprect, 0, 0); /* draw the sprites */ @@ -135,7 +135,7 @@ uint32_t sprint2_state::screen_update_sprint2(screen_device &screen, bitmap_ind1 } -void sprint2_state::screen_eof_sprint2(screen_device &screen, bool state) +WRITE_LINE_MEMBER(sprint2_state::screen_vblank_sprint2) { // rising edge if (state) @@ -166,7 +166,7 @@ void sprint2_state::screen_eof_sprint2(screen_device &screen, bool state) /* check for sprite-tilemap collisions */ - m_bg_tilemap->draw(screen, m_helper, rect, 0, 0); + m_bg_tilemap->draw(*m_screen, m_helper, rect, 0, 0); m_gfxdecode->gfx(1)->transpen(m_helper,rect, get_sprite_code(video_ram, i), diff --git a/src/mame/video/sprint4.cpp b/src/mame/video/sprint4.cpp index ae6883f53d9..9df60a4710f 100644 --- a/src/mame/video/sprint4.cpp +++ b/src/mame/video/sprint4.cpp @@ -35,10 +35,9 @@ PALETTE_INIT_MEMBER(sprint4_state, sprint4) } -TILE_GET_INFO_MEMBER(sprint4_state::sprint4_tile_info) +TILE_GET_INFO_MEMBER(sprint4_state::tile_info) { - uint8_t *videoram = m_videoram; - uint8_t code = videoram[tile_index]; + uint8_t code = m_videoram[tile_index]; if ((code & 0x30) == 0x30) SET_TILE_INFO_MEMBER(0, code & ~0x40, (code >> 6) ^ 3, 0); @@ -51,25 +50,22 @@ void sprint4_state::video_start() { m_screen->register_screen_bitmap(m_helper); - m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sprint4_state::sprint4_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sprint4_state::tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } -uint32_t sprint4_state::screen_update_sprint4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t sprint4_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - uint8_t *videoram = m_videoram; - int i; - m_playfield->draw(screen, bitmap, cliprect, 0, 0); - for (i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) { int bank = 0; - uint8_t horz = videoram[0x390 + 2 * i + 0]; - uint8_t attr = videoram[0x390 + 2 * i + 1]; - uint8_t vert = videoram[0x398 + 2 * i + 0]; - uint8_t code = videoram[0x398 + 2 * i + 1]; + uint8_t horz = m_videoram[0x390 + 2 * i + 0]; + uint8_t attr = m_videoram[0x390 + 2 * i + 1]; + uint8_t vert = m_videoram[0x398 + 2 * i + 0]; + uint8_t code = m_videoram[0x398 + 2 * i + 1]; if (i & 1) bank = 32; @@ -85,28 +81,22 @@ uint32_t sprint4_state::screen_update_sprint4(screen_device &screen, bitmap_ind1 } -void sprint4_state::screen_eof_sprint4(screen_device &screen, bool state) +WRITE_LINE_MEMBER(sprint4_state::screen_vblank) { // rising edge if (state) { - uint8_t *videoram = m_videoram; - int i; - /* check for sprite-playfield collisions */ - for (i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) { rectangle rect; - int x; - int y; - int bank = 0; - uint8_t horz = videoram[0x390 + 2 * i + 0]; - uint8_t vert = videoram[0x398 + 2 * i + 0]; - uint8_t code = videoram[0x398 + 2 * i + 1]; + uint8_t horz = m_videoram[0x390 + 2 * i + 0]; + uint8_t vert = m_videoram[0x398 + 2 * i + 0]; + uint8_t code = m_videoram[0x398 + 2 * i + 1]; rect.min_x = horz - 15; rect.min_y = vert - 15; @@ -115,7 +105,7 @@ void sprint4_state::screen_eof_sprint4(screen_device &screen, bool state) rect &= m_screen->visible_area(); - m_playfield->draw(screen, m_helper, rect, 0, 0); + m_playfield->draw(*m_screen, m_helper, rect, 0, 0); if (i & 1) bank = 32; @@ -127,8 +117,8 @@ void sprint4_state::screen_eof_sprint4(screen_device &screen, bool state) horz - 15, vert - 15, 1); - for (y = rect.min_y; y <= rect.max_y; y++) - for (x = rect.min_x; x <= rect.max_x; x++) + for (int y = rect.min_y; y <= rect.max_y; y++) + for (int x = rect.min_x; x <= rect.max_x; x++) if (m_palette->pen_indirect(m_helper.pix16(y, x)) != 0) m_collision[i] = 1; } @@ -136,17 +126,16 @@ void sprint4_state::screen_eof_sprint4(screen_device &screen, bool state) /* update sound status */ address_space &space = machine().dummy_space(); - m_discrete->write(space, SPRINT4_MOTOR_DATA_1, videoram[0x391] & 15); - m_discrete->write(space, SPRINT4_MOTOR_DATA_2, videoram[0x393] & 15); - m_discrete->write(space, SPRINT4_MOTOR_DATA_3, videoram[0x395] & 15); - m_discrete->write(space, SPRINT4_MOTOR_DATA_4, videoram[0x397] & 15); + m_discrete->write(space, SPRINT4_MOTOR_DATA_1, m_videoram[0x391] & 15); + m_discrete->write(space, SPRINT4_MOTOR_DATA_2, m_videoram[0x393] & 15); + m_discrete->write(space, SPRINT4_MOTOR_DATA_3, m_videoram[0x395] & 15); + m_discrete->write(space, SPRINT4_MOTOR_DATA_4, m_videoram[0x397] & 15); } } -WRITE8_MEMBER(sprint4_state::sprint4_video_ram_w) +WRITE8_MEMBER(sprint4_state::video_ram_w) { - uint8_t *videoram = m_videoram; - videoram[offset] = data; + m_videoram[offset] = data; m_playfield->mark_tile_dirty(offset); } diff --git a/src/mame/video/sprint8.cpp b/src/mame/video/sprint8.cpp index 9319e49ef12..1bd241cfb19 100644 --- a/src/mame/video/sprint8.cpp +++ b/src/mame/video/sprint8.cpp @@ -12,9 +12,7 @@ Atari Sprint 8 video emulation PALETTE_INIT_MEMBER(sprint8_state, sprint8) { - int i; - - for (i = 0; i < 0x10; i++) + for (int i = 0; i < 0x10; i++) { palette.set_pen_indirect(2 * i + 0, 0x10); palette.set_pen_indirect(2 * i + 1, i); @@ -29,9 +27,7 @@ PALETTE_INIT_MEMBER(sprint8_state, sprint8) void sprint8_state::set_pens() { - int i; - - for (i = 0; i < 0x10; i += 8) + for (int i = 0; i < 0x10; i += 8) { if (*m_team & 1) { @@ -102,7 +98,7 @@ TILE_GET_INFO_MEMBER(sprint8_state::get_tile_info2) } -WRITE8_MEMBER(sprint8_state::sprint8_video_ram_w) +WRITE8_MEMBER(sprint8_state::video_ram_w) { m_video_ram[offset] = data; m_tilemap1->mark_tile_dirty(offset); @@ -120,14 +116,14 @@ void sprint8_state::video_start() m_tilemap1->set_scrolly(0, +24); m_tilemap2->set_scrolly(0, +24); + + m_collision_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sprint8_state::collision_callback),this)); } void sprint8_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) { - int i; - - for (i = 0; i < 16; i++) + for (int i = 0; i < 16; i++) { uint8_t code = m_pos_d_ram[i]; @@ -146,13 +142,13 @@ void sprint8_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect } -TIMER_CALLBACK_MEMBER(sprint8_state::sprint8_collision_callback) +TIMER_CALLBACK_MEMBER(sprint8_state::collision_callback) { - sprint8_set_collision(param); + set_collision(param); } -uint32_t sprint8_state::screen_update_sprint8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t sprint8_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { set_pens(); m_tilemap1->draw(screen, bitmap, cliprect, 0, 0); @@ -161,31 +157,27 @@ uint32_t sprint8_state::screen_update_sprint8(screen_device &screen, bitmap_ind1 } -void sprint8_state::screen_eof_sprint8(screen_device &screen, bool state) +WRITE_LINE_MEMBER(sprint8_state::screen_vblank) { // rising edge if (state) { - int x; - int y; const rectangle &visarea = m_screen->visible_area(); - m_tilemap2->draw(screen, m_helper2, visarea, 0, 0); + m_tilemap2->draw(*m_screen, m_helper2, visarea, 0, 0); m_helper1.fill(0x20, visarea); draw_sprites(m_helper1, visarea); - for (y = visarea.min_y; y <= visarea.max_y; y++) + for (int y = visarea.min_y; y <= visarea.max_y; y++) { const uint16_t* p1 = &m_helper1.pix16(y); const uint16_t* p2 = &m_helper2.pix16(y); - for (x = visarea.min_x; x <= visarea.max_x; x++) + for (int x = visarea.min_x; x <= visarea.max_x; x++) if (p1[x] != 0x20 && p2[x] == 0x23) - machine().scheduler().timer_set(m_screen->time_until_pos(y + 24, x), - timer_expired_delegate(FUNC(sprint8_state::sprint8_collision_callback),this), - m_palette->pen_indirect(p1[x])); + m_collision_timer->adjust(m_screen->time_until_pos(y + 24, x), m_palette->pen_indirect(p1[x])); } } } diff --git a/src/mame/video/sspeedr.cpp b/src/mame/video/sspeedr.cpp index e382f12805a..3c9f6096a1f 100644 --- a/src/mame/video/sspeedr.cpp +++ b/src/mame/video/sspeedr.cpp @@ -253,7 +253,7 @@ uint32_t sspeedr_state::screen_update_sspeedr(screen_device &screen, bitmap_ind1 } -void sspeedr_state::screen_eof_sspeedr(screen_device &screen, bool state) +WRITE_LINE_MEMBER(sspeedr_state::screen_vblank_sspeedr) { // rising edge if (state) diff --git a/src/mame/video/ssrj.cpp b/src/mame/video/ssrj.cpp index 02668420cdb..8fd787d3fd7 100644 --- a/src/mame/video/ssrj.cpp +++ b/src/mame/video/ssrj.cpp @@ -284,7 +284,7 @@ uint32_t ssrj_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, return 0; } -void ssrj_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(ssrj_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/ssv.cpp b/src/mame/video/ssv.cpp index 9057c09ac3b..ed500fd9c3e 100644 --- a/src/mame/video/ssv.cpp +++ b/src/mame/video/ssv.cpp @@ -962,7 +962,7 @@ uint32_t ssv_state::screen_update_gdfs(screen_device &screen, bitmap_ind16 &bitm screen_update(screen, bitmap, cliprect); // draw zooming sprites - m_gdfs_st0020->st0020_draw_all(bitmap, cliprect); + m_gdfs_st0020->update_screen(screen, bitmap, cliprect, false); m_gdfs_tmap->set_scrollx(0, m_gdfs_tmapscroll[0x0c/2]); m_gdfs_tmap->set_scrolly(0, m_gdfs_tmapscroll[0x10/2]); diff --git a/src/mame/video/st0020.cpp b/src/mame/video/st0020.cpp index f58b1d4e430..158fc331085 100644 --- a/src/mame/video/st0020.cpp +++ b/src/mame/video/st0020.cpp @@ -1,320 +1,557 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia,David Haywood -/* ST0020 - Seta Zooming Sprites + Blitter +/************************************************************************************************************ - (gdfs also has a tilemap, I don't know if this chip supplies that) + ST0020 - Seta Zooming Sprites + 4 Tilemaps + Blitter - The ST0032 seems very similar, used by the newer Jockey Club II boards + ST0032 seems very similar, used by the newer Jockey Club II boards -*/ + The tilemaps are used by jclub2, while gdfs uses its own tilemap. + To do: + + - fix visible area in jclub2 under non-wide monitor setting. + +************************************************************************************************************/ #include "emu.h" #include "st0020.h" #include "render.h" -const device_type ST0020_SPRITES = device_creator; +DEFINE_DEVICE_TYPE(ST0020_SPRITES, st0020_device, "st0020", "Seta ST0020 Sprites") + -st0020_device::st0020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ST0020_SPRITES, "Seta ST0020 Sprites", tag, owner, clock, "st0020", __FILE__) - , device_gfx_interface(mconfig, *this) +#define ST0020_ST0032_BYTESWAP_DATA \ + if (m_is_st0032) data = ((data & 0x00ff)<<8) | ((data & 0xff00)>>8); +#define ST0020_ST0032_BYTESWAP_MEM_MASK \ + if (m_is_st0032) mem_mask = ((mem_mask & 0x00ff)<<8) | ((mem_mask & 0xff00)>>8); + + +st0020_device::st0020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, ST0020_SPRITES, tag, owner, clock), + device_gfx_interface(mconfig, *this) { m_is_st0032 = 0; m_is_jclub2 = 0; } -void st0020_device::set_is_st0032(device_t &device, int is_st0032) + +void st0020_device::static_set_is_st0032(device_t &device, int is_st0032) { - st0020_device &dev = downcast(device); - dev.m_is_st0032 = is_st0032; + downcast(device).m_is_st0032 = is_st0032; } -void st0020_device::set_is_jclub2o(device_t &device, int is_st0032) +void st0020_device::static_set_is_jclub2(device_t &device, int is_jclub2) { - st0020_device &dev = downcast(device); - dev.m_is_jclub2 = is_st0032; + downcast(device).m_is_jclub2 = is_jclub2; } - -static const gfx_layout layout_16x8x8_2 = +void st0020_device::device_reset() { - 16,8, - 0x400000/(16*8), - 8, - { STEP8(0,1) }, - { STEP16(0,8) }, - { STEP8(0,16*8) }, - 16*8*8 -}; - - + m_gfxram_bank = 0; +} void st0020_device::device_start() { - memory_region* rgn = memregion(tag()); - - if (rgn) + if (!palette().device().started()) + throw device_missing_dependencies(); + + // ROM region + memory_region *rgn = memregion(tag()); + m_rom_ptr = rgn ? rgn->base() : nullptr; + m_rom_size = rgn ? rgn->bytes() : 0; + + // Allocate RAM + m_gfxram = make_unique_clear(4 * 0x100000/2); + m_spriteram = make_unique_clear(0x80000/2); + m_regs = make_unique_clear(0x100/2); + + // Gfx element + const int granularity = 16; + const gfx_layout layout_16x8x8 = { - m_rom_ptr = rgn->base(); - m_rom_size = rgn->bytes(); - } - else + 16,8, + 0x400000/(16*8), + 8, + { STEP8(0,1) }, + { STEP16(0,8) }, + { STEP8(0,16*8) }, + 16*8*8 + }; + set_gfx(0, std::make_unique(palette(), layout_16x8x8, (uint8_t *)m_gfxram.get(), 0, palette().entries() / granularity, 0)); + gfx(0)->set_granularity(granularity); /* 256 colour sprites with palette selectable on 64 colour boundaries */ + + // Tilemaps + m_tmap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(st0020_device::get_tile_info_0), this), TILEMAP_SCAN_ROWS,16,8, 0x40,0x40*2); + m_tmap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(st0020_device::get_tile_info_1), this), TILEMAP_SCAN_ROWS,16,8, 0x40,0x40*2); + m_tmap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(st0020_device::get_tile_info_2), this), TILEMAP_SCAN_ROWS,16,8, 0x40,0x40*2); + m_tmap[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(st0020_device::get_tile_info_3), this), TILEMAP_SCAN_ROWS,16,8, 0x40,0x40*2); + for (int i = 0; i < 4; ++i) { - m_rom_ptr = nullptr; - m_rom_size = 0; + m_tmap[i]->set_transparent_pen(0); +// m_tmap[i]->set_scrolldy(-0x301, 0); } - m_st0020_gfxram = make_unique_clear(4 * 0x100000 / 2); - m_st0020_spriteram = make_unique_clear(0x80000 / 2); - m_st0020_blitram = make_unique_clear(0x100 / 2); - - set_gfx(0, std::make_unique(palette(), layout_16x8x8_2, (uint8_t *)m_st0020_gfxram.get(), 0, palette().entries() / 64, 0)); - - gfx(0)->set_granularity(64); /* 256 colour sprites with palette selectable on 64 colour boundaries */ - - save_pointer(NAME(m_st0020_gfxram.get()), 4 * 0x100000/2); - save_pointer(NAME(m_st0020_spriteram.get()), 0x80000/2); - save_pointer(NAME(m_st0020_blitram.get()), 0x100/2); - save_item(NAME(m_st0020_gfxram_bank)); -} - -void st0020_device::device_reset() -{ - m_st0020_gfxram_bank = 0; + // Save state + save_pointer(NAME(m_gfxram.get()), 4 * 0x100000/2); + save_pointer(NAME(m_spriteram.get()), 0x80000/2); + save_pointer(NAME(m_regs.get()), 0x100/2); + save_item(NAME(m_gfxram_bank)); } -READ16_MEMBER(st0020_device::st0020_gfxram_r) +// Gfx ram +READ16_MEMBER(st0020_device::gfxram_r) { - uint16_t data; ST0020_ST0032_BYTESWAP_MEM_MASK - data = m_st0020_gfxram[offset + m_st0020_gfxram_bank * 0x100000/2]; + uint16_t data = m_gfxram[offset + m_gfxram_bank * 0x100000/2]; ST0020_ST0032_BYTESWAP_DATA return data; } -WRITE16_MEMBER(st0020_device::st0020_gfxram_w) +WRITE16_MEMBER(st0020_device::gfxram_w) { ST0020_ST0032_BYTESWAP_MEM_MASK ST0020_ST0032_BYTESWAP_DATA - offset += m_st0020_gfxram_bank * 0x100000/2; - COMBINE_DATA(&m_st0020_gfxram[offset]); + offset += m_gfxram_bank * 0x100000/2; + COMBINE_DATA(&m_gfxram[offset]); gfx(0)->mark_dirty(offset / (16*8/2)); } -READ16_MEMBER(st0020_device::st0020_sprram_r) +WRITE16_MEMBER(st0020_device::gfxram_bank_w) { - uint16_t data; + data = COMBINE_DATA(&m_regs[offset]); - data = m_st0020_spriteram[offset]; + if (data & ~0x43) + logerror("%s: Unknown gfxram_bank bit written %04X\n", machine().describe_context(), data); - return data; + if (ACCESSING_BITS_0_7) + m_gfxram_bank = data & 3; } -WRITE16_MEMBER(st0020_device::st0020_sprram_w) + +// Tilemaps +int st0020_device::tmap_offset(int i) { - COMBINE_DATA(&m_st0020_spriteram[offset]); + return m_is_st0032 ? (m_regs[i * 16/2 + 0x28/2] & 0x007c) * 0x1000/2 : + (m_regs[i * 8/2 ] & 0x7c00) * 0x10/2 ; } -READ16_MEMBER(st0020_device::st0020_blit_r) +int st0020_device::tmap_priority(int i) { - switch (offset) + return m_is_st0032 ? (m_regs[i * 16/2 + 0x24/2] & 0x0fc0) >> 6 : + (m_regs[i * 8/2 + 0x04/2] & 0x0fc0) >> 6 ; +} + +int st0020_device::tmap_is_enabled(int i) +{ + // jclub2 uses 0x19/0x00 for used/unused tilemaps + return m_is_st0032 ? m_regs[i * 16/2 + 0x24/2] & 0x0001 : + m_regs[i * 8/2 + 0x04/2] & 0x0001 ; +} + +/*************************************************************************** + + Tile format + + Offset: Bits: Value: + + 0.w Tile Code + + 2.w fedc ba-- ---- ---- + ---- --9- ---- ---- 0/1 = 256/64-Color Granularity * + ---- ---8 7654 3210 Color + + * ST-0032 only? + ST-0020 uses a tilemap flag to switch between 32/128-color granularity + +***************************************************************************/ + +inline void st0020_device::get_tile_info_i(int i, tilemap_t &tilemap, tile_data &tileinfo, tilemap_memory_index tile_index) +{ + int offset = tmap_offset(i) + ((tile_index % 0x40) + (tile_index / 0x80) * 0x40) * 2; + uint16_t tile = m_spriteram[offset + 0] + ((tile_index / 0x40) & 1); + uint16_t color = m_spriteram[offset + 1]; + + if (m_is_st0032) color = (color & 0x1ff) * ((color & 0x200) ? 4 : 16); + else color = color * ((m_regs[i * 4 + 3] & 0x0100) ? 2 : 8); + + SET_TILE_INFO_MEMBER(0, tile, color, 0); +} + +TILE_GET_INFO_MEMBER(st0020_device::get_tile_info_0) { get_tile_info_i(0, tilemap, tileinfo, tile_index); } +TILE_GET_INFO_MEMBER(st0020_device::get_tile_info_1) { get_tile_info_i(1, tilemap, tileinfo, tile_index); } +TILE_GET_INFO_MEMBER(st0020_device::get_tile_info_2) { get_tile_info_i(2, tilemap, tileinfo, tile_index); } +TILE_GET_INFO_MEMBER(st0020_device::get_tile_info_3) { get_tile_info_i(3, tilemap, tileinfo, tile_index); } + + +// Sprite RAM +READ16_MEMBER(st0020_device::sprram_r) +{ + return m_spriteram[offset]; +} + +WRITE16_MEMBER(st0020_device::sprram_w) +{ + COMBINE_DATA(&m_spriteram[offset]); + + for (int i = 0; i < 4; ++i) { - case 0x00/2: - // blitter status? (bit C, bit A) - return 0; + int tmap_offs = tmap_offset(i); + if ((offset >= tmap_offs) && (offset < tmap_offs + 0x4000/2)) + { + int tile_index = (offset - tmap_offs) / 2; + tile_index = (tile_index % 0x40) + ((tile_index / 0x40) * 0x80); + m_tmap[i]->mark_tile_dirty(tile_index); + m_tmap[i]->mark_tile_dirty(tile_index + 0x40); + // the same offset can be used by multiple tilemaps, so do not break the loop here + } } +} - logerror("CPU #0 PC: %06X - Blit reg read: %02X\n",space.device().safe_pc(),offset*2); - return 0; +// Blitter +WRITE16_MEMBER(st0020_device::do_blit_w) +{ + uint32_t src = (m_regs[0xc0/2] + (m_regs[0xc2/2] << 16)) << 1; + uint32_t dst = (m_regs[0xc4/2] + (m_regs[0xc6/2] << 16)) << 4; + uint32_t len = (m_regs[0xc8/2]) << 4; + + if ( m_rom_ptr && (src+len <= m_rom_size) && (dst+len <= 4 * 0x100000) ) + { + memcpy( &m_gfxram[dst/2], &m_rom_ptr[src], len ); + + if (len % (16*8)) len = len / (16*8) + 1; + else len = len / (16*8); + + dst /= 16*8; + while (len--) + { + gfx(0)->mark_dirty(dst); + dst++; + } + } + else + { + logerror("%s: Blit out of range: src %x, dst %x, len %x\n", machine().describe_context(), src, dst, len); + } } -READ16_MEMBER(st0020_device::st0020_blitram_r) +// Blitter / Tilemaps / CRTC registers + +/*************************************************************************** + + Tilemap Registers (8 bytes each for ST-0020, 16 bytes for ST-0032): + + Offset: Bits: Value: + + 0.w f--- ---- ---- ---- + -edc ba-- ---- ---- Tile RAM offset / 4000 (ST-0032: low bits of offset 8) + ---- --98 7654 3210 X scroll + + 2.w fedc ba-- ---- ---- + ---- --98 7654 3210 Y scroll + + 4.w fedc ---- ---- ---- + ---- ba98 76-- ---- (jclub2o: switches seemingly at random between 0 and 3f) + ---- ---- --54 3210 (jclub2o/jclub2: 19 for tilemaps to display / 0 for unused ones) + + 6.w fe-- ---- ---- ---- + --d- ---- ---- ---- (jclub2o: usually on for used tilemaps, but it's not enable: see test mode) + ---c ba9- ---- ---- + ---- ---8 ---- ---- 0/1 = Color granularity 128/32 (ST-0020 only?) + ---- ---- 7654 3210 + + Note: gdfs, which does not use the ST-0020 tilemaps, keeps all these registers to 0 + +***************************************************************************/ + +WRITE16_MEMBER(st0020_device::tmap_st0020_w) { - uint16_t data; - data = st0020_blit_r(space, offset, mem_mask); - return data; + uint16_t old = m_regs[offset]; + data = COMBINE_DATA(&m_regs[offset]); + + int i = offset / (8/2); + int reg = offset % (8/2); + + switch (reg) + { + case 0x00/2: + if ((old ^ data) & 0x7c00) + m_tmap[i]->mark_all_dirty(); + m_tmap[i]->set_scrollx(0, data); + break; + case 0x02/2: + m_tmap[i]->set_scrolly(0, data + m_regs[0x7a/2] + 1); // fixme update when writing offset + break; + case 0x04/2: + // Priority/Enable? + break; + case 0x06/2: + // Color Granularity + ? + if ((old ^ data) & 0x0100) + m_tmap[i]->mark_all_dirty(); + break; + } } -WRITE16_MEMBER(st0020_device::st0020_blit_w) +WRITE16_MEMBER(st0020_device::tmap_st0032_w) { - uint16_t *st0020_blitram = m_st0020_blitram.get(); + uint16_t old = m_regs[offset]; + data = COMBINE_DATA(&m_regs[offset]); + + int i = (offset - 0x20/2) / (16/2); + int reg = (offset - 0x20/2) % (16/2); - COMBINE_DATA(&st0020_blitram[offset]); + switch (reg) + { + case 0x00/2: + m_tmap[i]->set_scrollx(0, data); + break; + case 0x02/2: + m_tmap[i]->set_scrolly(0, data + m_regs[0x78/2] - 1); // fixme update when writing offset + break; + case 0x08/2: + if ((old ^ data) & 0x007c) + m_tmap[i]->mark_all_dirty(); + break; + } +} + +READ16_MEMBER(st0020_device::regs_r) +{ + if (m_is_st0032) + { + // bits 0, 1, 2 + // jclub2v200: waits for bit 0 == 0 (vblank?) before writing sprite ram + if (offset == 0x0c/2) + return 0; + } + else + { + // bits A, B, C + // gdfs: waits for bit A == 0 (vblank?) before flipping reg 0x86 between 8/9 (double buffering?) + // tests bit C before changing reg 0x86 and then doing a blit + if (offset == 0x00/2) + return 0; + } + + logerror("%s: Reg read: %02X\n", machine().describe_context(), offset*2); + return 0; +} + + +WRITE16_MEMBER(st0020_device::regs_st0020_w) +{ + if (offset < 0x20/2) + { + tmap_st0020_w(space, offset, data, mem_mask); + return; + } + + data = COMBINE_DATA(&m_regs[offset]); switch (offset) { - case 0x8a/2: - { - if (data & ~0x43) - logerror("CPU #0 PC: %06X - Unknown st0020_gfxram_bank bit written %04X\n",space.device().safe_pc(),data); + // crtc +// jclub2v203: +// case 0x20/2: // 0000 +// case 0x22/2: // 0000 +// case 0x62/2: // 004C (normal monitor), 0050 (wide monitor) +// case 0x64/2: // 01AC (normal monitor), 01E0 (wide monitor) +// case 0x7c/2: // 0301 (normal monitor), 0302 (wide monitor) +// case 0x84/2: // 0082 (normal monitor), 0081 (wide monitor) + +// gdfs: +// case 0x20/2: // 000C +// case 0x22/2: // 03F0 +// case 0x68/2: // 0000 (normal), 0298 (flip screen) +// case 0x6a/2: // 0000 (normal), 0298 (flip screen) +// case 0x84/2: // 0002 (normal), 001A (flip screen) <- mask 0018 might be flip_xy + +// case 0x86/2: double buffering? - if (ACCESSING_BITS_0_7) - m_st0020_gfxram_bank = data & 3; - } - break; + case 0x8a/2: + gfxram_bank_w(space, offset, data, mem_mask); + break; - case 0xc0/2: + // blitter + case 0xc0/2: // source address case 0xc2/2: - case 0xc4/2: + case 0xc4/2: // destination address case 0xc6/2: - case 0xc8/2: - break; + case 0xc8/2: // length + break; - case 0xca/2: - { - uint32_t src = (st0020_blitram[0xc0/2] + (st0020_blitram[0xc2/2] << 16)) << 1; - uint32_t dst = (st0020_blitram[0xc4/2] + (st0020_blitram[0xc6/2] << 16)) << 4; - uint32_t len = (st0020_blitram[0xc8/2]) << 4; + case 0xca/2: // start + do_blit_w(space, offset, data, mem_mask); + break; - if (!m_rom_ptr) - { - logerror("CPU #0 PC: %06X - Blit out of range: src %x, dst %x, len %x\n",space.device().safe_pc(),src,dst,len); - return; - } + default: + logerror("%s: Reg written: %02X <- %04X\n", machine().describe_context(), offset*2, data); + } +} - size_t size = m_rom_size; +WRITE16_MEMBER(st0020_device::regs_st0032_w) +{ + if (offset >= 0x20/2 && offset < 0x60/2) + { + tmap_st0032_w(space, offset, data, mem_mask); + return; + } - if ( (src+len <= size) && (dst+len <= 4 * 0x100000) ) - { - memcpy( &m_st0020_gfxram[dst/2], &m_rom_ptr[src], len ); + data = COMBINE_DATA(&m_regs[offset]); + switch (offset) + { + // crtc +// jclub2v200: +// case 0x62/2: // 004C (normal monitor), 0050 (wide monitor) +// case 0x64/2: // 01AC (normal monitor), 01E0 (wide monitor) - if (len % (16*8)) len = len / (16*8) + 1; - else len = len / (16*8); +// case 0x82/2: double buffering? - dst /= 16*8; - while (len--) - { - gfx(0)->mark_dirty(dst); - dst++; - } - } - else - { - logerror("CPU #0 PC: %06X - Blit out of range: src %x, dst %x, len %x\n",space.device().safe_pc(),src,dst,len); - } - } - break; + case 0x86/2: + gfxram_bank_w(space, offset, data, mem_mask); + break; + + // blitter + case 0xc0/2: // source address + case 0xc2/2: + case 0xc4/2: // destination address + case 0xc6/2: + case 0xc8/2: // length + break; + + case 0xca/2: // start + do_blit_w(space, offset, data, mem_mask); + break; default: - logerror("CPU #0 PC: %06X - Blit reg written: %02X <- %04X\n",space.device().safe_pc(),offset*2,data); + logerror("%s: Reg written: %02X <- %04X\n", machine().describe_context(), offset*2, data); } } -WRITE16_MEMBER(st0020_device::st0020_blitram_w) +WRITE16_MEMBER(st0020_device::regs_w) { - st0020_blit_w(space, offset, data, mem_mask); + if (m_is_st0032) + regs_st0032_w(space, offset, data, mem_mask); + else + regs_st0020_w(space, offset, data, mem_mask); } +/*************************************************************************** - -/* Sprites RAM is 0x80000 bytes long. The first 0x2000? bytes hold a list of sprites to display (the list can be made shorter using an end-of-list marker). - Each entry in the list (16 bytes) is a multi-sprite (e.g it tells the - hardware to display several single-sprites). + Each entry in the list uses 8 bytes (padded to 16 for the ST-0032) and is + a multi-sprite: it tells the hardware to display several single-sprites. - The list looks like this: + The list of multi-sprites looks like this: Offset: Bits: Value: - 0.h fedc ba-- ---- ---- + 0.w fedc ba-- ---- ---- ---- --98 7654 3210 X displacement - 2.h fedc ba-- ---- ---- + 2.w fedc ba-- ---- ---- ---- --98 7654 3210 Y displacement - 4.h f--- ---- ---- ---- List end - -edc ba98 7654 3210 Offset of the single-sprite(s) data + 4.w f--- ---- ---- ---- List end + -edc ba98 7654 3210 Offset of the single-sprite(s) data (16-byte units) - 0.h Number of single-sprites (how many bits?) + 6.w Number of single-sprites (how many bits?) - A single-sprite is: + A single-sprite uses 16 bytes: Offset: Bits: Value: - 0.h Code + 0.w Code - 2.h f--- ---- ---- ---- Flip X + 2.w f--- ---- ---- ---- Flip X -e-- ---- ---- ---- Flip Y + --dc b--- ---- ---- ---- -a-- ---- ---- 0 = 256 color steps, 1 = 64 color steps ---- --98 7654 3210 Color code - 4.h fedc ba-- ---- ---- + 4.w fedc ba-- ---- ---- ---- --98 7654 3210 X displacement - 6.h fedc ba-- ---- ---- + 6.w fedc ba-- ---- ---- ---- --98 7654 3210 Y displacement - 8.h fedc ba98 ---- ---- Y Size - ---- ---- 7654 3210 X Size + 8.w fedc ba98 ---- ---- Zoomed Y Size - 1 + ---- ---- 7654 3210 Zoomed X Size - 1 - A.h fedc ba98 ---- ---- + A.w fedc ba98 ---- ---- ---- ---- 7654 ---- Priority ---- ---- ---- 32-- Y Tiles (1,2,4,8) ---- ---- ---- --10 X Tiles (1,2,4,8) - C.h Unused + C.w Unused + + E.w Unused - E.h Unused +***************************************************************************/ -*/ -void st0020_device::st0020_draw_zooming_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority) +void st0020_device::draw_zooming_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority) { - /* Sprites list */ - uint16_t *spriteram16_2 = m_st0020_spriteram.get(); - uint16_t *s1 = spriteram16_2; - uint16_t *end1 = spriteram16_2 + 0x02000/2; + // Sprites list + uint16_t *spriteram = m_spriteram.get(); + + uint16_t *s1 = spriteram; + uint16_t *end1 = spriteram + 0x02000/2; priority <<= 4; - for ( ; s1 < end1; s1+=8/2 ) + const int s1_inc = m_is_st0032 ? 16/2 : 8/2; + + for ( ; s1 < end1; s1+=s1_inc ) { int attr, code, color, num, sprite, zoom, size; int sx, x, xoffs, flipx, xnum, xstart, xend, xinc, xdim, xscale; int sy, y, yoffs, flipy, ynum, ystart, yend, yinc, ydim, yscale; - if (!m_is_st0032) + if (m_is_st0032) { - xoffs = s1[ 0 ]; - yoffs = s1[ 1 ]; - sprite = s1[ 2 ]; - num = s1[ 3 ] % 0x101; // how many? + num = s1[ 0 ]; + sprite = s1[ 1 ]; + xoffs = s1[ 2 ]; + yoffs = s1[ 3 ]; + + // List end + if (num & 0x8000) + break; } else { - // these seem to be swapped around on the st0032 - xoffs = s1[ 2 ]; - yoffs = s1[ 3 ]; - sprite = s1[ 1 ]; - num = s1[ 0 ] % 0x101; // how many? + xoffs = s1[ 0 ]; + yoffs = s1[ 1 ]; + sprite = s1[ 2 ]; + num = s1[ 3 ]; + // List end + if (sprite & 0x8000) + break; } - - - /* Last sprite */ - if (sprite & 0x8000) break; + num = num % 0x101; // how many? int s2 = 0; int spritebase = (sprite & 0x7fff) * 16/2; for( ; num > 0; num--,s2+=16/2 ) { - code = spriteram16_2[(spritebase + s2 + 0 )&0x3ffff]; - attr = spriteram16_2[(spritebase + s2 + 1 )&0x3ffff]; - sx = spriteram16_2[(spritebase + s2 + 2 )&0x3ffff]; - sy = spriteram16_2[(spritebase + s2 + 3 )&0x3ffff]; - zoom = spriteram16_2[(spritebase + s2 + 4 )&0x3ffff]; - size = spriteram16_2[(spritebase + s2 + 5 )&0x3ffff]; - - + code = spriteram[(spritebase + s2 + 0 ) & 0x3ffff]; + attr = spriteram[(spritebase + s2 + 1 ) & 0x3ffff]; + sx = spriteram[(spritebase + s2 + 2 ) & 0x3ffff]; + sy = spriteram[(spritebase + s2 + 3 ) & 0x3ffff]; + zoom = spriteram[(spritebase + s2 + 4 ) & 0x3ffff]; + size = spriteram[(spritebase + s2 + 5 ) & 0x3ffff]; if (priority != (size & 0xf0)) break; @@ -322,20 +559,12 @@ void st0020_device::st0020_draw_zooming_sprites(bitmap_ind16 &bitmap, const rect flipx = (attr & 0x8000); flipy = (attr & 0x4000); -/* - if ((ssv_scroll[0x74/2] & 0x1000) && ((ssv_scroll[0x74/2] & 0x2000) == 0)) - { - if (flipx == 0) flipx = 1; else flipx = 0; - } - if ((ssv_scroll[0x74/2] & 0x4000) && ((ssv_scroll[0x74/2] & 0x2000) == 0)) - { - if (flipy == 0) flipy = 1; else flipy = 0; - } -*/ - - color = (attr & 0x0400) ? attr : attr * 4; + if (m_is_st0032) + color = (attr & 0x200) ? (attr & 0x1ff) : (attr & 0x1ff) * 4; + else + color = (attr & 0x400) ? (attr & 0x3ff) : (attr & 0x3ff) * 4; - /* Single-sprite tile size */ + // Single-sprite tile size xnum = 1 << ((size >> 0) & 3); ynum = 1 << ((size >> 2) & 3); @@ -347,21 +576,22 @@ void st0020_device::st0020_draw_zooming_sprites(bitmap_ind16 &bitmap, const rect if (flipy) { ystart = ynum-1; yend = -1; yinc = -1; } else { ystart = 0; yend = ynum; yinc = +1; } - /* Apply global offsets */ + // Apply global offsets sx += xoffs; sy += yoffs; - /* Sign extend the position */ + // Sign extend the position sx = (sx & 0x1ff) - (sx & 0x200); sy = (sy & 0x1ff) - (sy & 0x200); + // Y is inverted sy = -sy; // otherwise everything is off-screen if (m_is_jclub2) sy += 0x100; - /* Use fixed point values (16.16), for accuracy */ + // Use fixed point values (16.16), for accuracy sx <<= 16; sy <<= 16; @@ -376,42 +606,72 @@ void st0020_device::st0020_draw_zooming_sprites(bitmap_ind16 &bitmap, const rect if (xscale & 0xffff) xscale += (1<<16) / 16; if (yscale & 0xffff) yscale += (1<<16) / 8; - /* Draw the tiles */ + // Draw the tiles for (x = xstart; x != xend; x += xinc) { for (y = ystart; y != yend; y += yinc) { - gfx(0)->zoom_transpen(bitmap,cliprect, - code++, - color, - flipx, flipy, - (sx + x * xdim) / 0x10000, (sy + y * ydim) / 0x10000, - xscale, yscale, 0 + gfx(0)->zoom_transpen(bitmap, cliprect, + code++, + color * 4, + flipx, flipy, + (sx + x * xdim) / 0x10000, (sy + y * ydim) / 0x10000, + xscale, yscale, 0 ); } } + } // single-sprites + } // sprites list +} -#if 0 /* doesn't compile in a device context (can't use ui_draw_text? */ - if (machine().input().code_pressed(KEYCODE_Z)) /* Display some info on each sprite */ - { - char buf[10]; - sprintf(buf, "%X",size); - ui_draw_text(&machine().render().ui_container(), buf, sx / 0x10000, sy / 0x10000); - } -#endif - } /* single-sprites */ - - - - } /* sprites list */ -} +void st0020_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, bool update_visible_area) +{ + int layers_ctrl = -1; +#ifdef MAME_DEBUG + if (machine().input().code_pressed(KEYCODE_Z)) + { + int mask = 0; + if (machine().input().code_pressed(KEYCODE_Q)) mask |= 1; + if (machine().input().code_pressed(KEYCODE_W)) mask |= 2; + if (machine().input().code_pressed(KEYCODE_E)) mask |= 4; + if (machine().input().code_pressed(KEYCODE_R)) mask |= 8; + if (machine().input().code_pressed(KEYCODE_A)) mask |= 16; + if (mask != 0) layers_ctrl &= mask; + } +#endif + // crtc + if (update_visible_area) + { + int x0 = m_regs[0x62/2]; + int x1 = m_regs[0x64/2]; + int y0 = m_regs[m_is_st0032 ? 0x72/2 : 0x74/2]; + int y1 = m_regs[m_is_st0032 ? 0x74/2 : 0x76/2]; + if ((x1 > x0) && (y1 > y0)) + screen.set_visible_area(0, (x1 - x0) - 1, y0, y1 - 1); + } -void st0020_device::st0020_draw_all(bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - for (int pri = 0; pri <= 0xf; pri++) - st0020_draw_zooming_sprites(bitmap, cliprect, pri); + // tilemaps + for (int pri = 0x3f; pri >= 0; --pri) + for (int i = 0; i < 4; ++i) + if ( (layers_ctrl & (1 << i)) + && (tmap_priority(i) == pri) + && tmap_is_enabled(i) ) + m_tmap[i]->draw(screen, bitmap, cliprect, 0, 0); + + // sprites + if (layers_ctrl & 16) + for (int pri = 0; pri <= 0xf; ++pri) + draw_zooming_sprites(bitmap, cliprect, pri); + +#ifdef MAME_DEBUG +#if 0 + popmessage("1: %04x,%04x (%04x %04x) 2: %04x,%04x (%04x %04x)", + m_regs[0x08/2], m_regs[0x0a/2], m_regs[0x0c/2], m_regs[0x0e/2], + m_regs[0x10/2], m_regs[0x12/2], m_regs[0x14/2], m_regs[0x16/2] ); +#endif +#endif } diff --git a/src/mame/video/st0020.h b/src/mame/video/st0020.h index f3547d33e30..4f3a84722b4 100644 --- a/src/mame/video/st0020.h +++ b/src/mame/video/st0020.h @@ -1,6 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia,David Haywood +#ifndef MAME_VIDEO_ST0020_H +#define MAME_VIDEO_ST0020_H +#pragma once class st0020_device : public device_t, public device_gfx_interface @@ -9,47 +12,69 @@ public: st0020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration - static void set_is_st0032(device_t &device, int is_st0032); - static void set_is_jclub2o(device_t &device, int is_jclub2o); + static void static_set_is_st0032(device_t &device, int is_st0032); + static void static_set_is_jclub2(device_t &device, int is_jclub2); - // see if we can handle the difference between this and the st0032 in here, or if we need another - // device - int m_is_st0032; + void update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, bool update_visible_area); - // per-game hack - int m_is_jclub2; + DECLARE_READ16_MEMBER(gfxram_r); + DECLARE_WRITE16_MEMBER(gfxram_w); - void st0020_draw_all(bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_READ16_MEMBER(regs_r); + DECLARE_WRITE16_MEMBER(regs_w); - DECLARE_READ16_MEMBER(st0020_gfxram_r); - DECLARE_WRITE16_MEMBER(st0020_gfxram_w); - DECLARE_READ16_MEMBER(st0020_blitram_r); - DECLARE_WRITE16_MEMBER(st0020_blitram_w); - DECLARE_READ16_MEMBER(st0020_sprram_r); - DECLARE_WRITE16_MEMBER(st0020_sprram_w); + DECLARE_READ16_MEMBER(sprram_r); + DECLARE_WRITE16_MEMBER(sprram_w); protected: virtual void device_start() override; virtual void device_reset() override; private: + // see if we can handle the difference between this and the st0032 in here, or if we need another device + int m_is_st0032; + + // per-game hack + int m_is_jclub2; + + // RAM + std::unique_ptr m_gfxram; + std::unique_ptr m_spriteram; + std::unique_ptr m_regs; - int m_st0020_gfxram_bank; - std::unique_ptr m_st0020_gfxram; - std::unique_ptr m_st0020_spriteram; - std::unique_ptr m_st0020_blitram; - void st0020_draw_zooming_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority); - DECLARE_READ16_MEMBER(st0020_blit_r); - DECLARE_WRITE16_MEMBER(st0020_blit_w); - uint8_t* m_rom_ptr; + DECLARE_WRITE16_MEMBER(regs_st0020_w); + DECLARE_WRITE16_MEMBER(regs_st0032_w); + + int m_gfxram_bank; + DECLARE_WRITE16_MEMBER(gfxram_bank_w); + + // blitter + uint8_t *m_rom_ptr; size_t m_rom_size; + DECLARE_WRITE16_MEMBER(do_blit_w); + + // tilemaps + tilemap_t *m_tmap[4]; + void get_tile_info_i(int i, tilemap_t &tilemap, tile_data &tileinfo, tilemap_memory_index tile_index); + + TILE_GET_INFO_MEMBER(get_tile_info_0); + TILE_GET_INFO_MEMBER(get_tile_info_1); + TILE_GET_INFO_MEMBER(get_tile_info_2); + TILE_GET_INFO_MEMBER(get_tile_info_3); + + int tmap_offset(int i); + int tmap_priority(int i); + int tmap_is_enabled(int i); + DECLARE_WRITE16_MEMBER(tmap_st0020_w); + DECLARE_WRITE16_MEMBER(tmap_st0032_w); + + // sprites + void draw_zooming_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority); }; -#define ST0020_ST0032_BYTESWAP_DATA \ - if (m_is_st0032) data = ((data & 0x00ff)<<8) | ((data & 0xff00)>>8); -#define ST0020_ST0032_BYTESWAP_MEM_MASK \ - if (m_is_st0032) mem_mask = ((mem_mask & 0x00ff)<<8) | ((mem_mask & 0xff00)>>8); -extern const device_type ST0020_SPRITES; +DECLARE_DEVICE_TYPE(ST0020_SPRITES, st0020_device) #define MCFG_ST0020_SPRITES_PALETTE(_palette_tag) \ MCFG_GFX_PALETTE(_palette_tag) + +#endif // MAME_VIDEO_ST0020_H diff --git a/src/mame/video/starshp1.cpp b/src/mame/video/starshp1.cpp index 2e286a6f3b8..947d6eb9438 100644 --- a/src/mame/video/starshp1.cpp +++ b/src/mame/video/starshp1.cpp @@ -119,13 +119,13 @@ WRITE8_MEMBER(starshp1_state::starshp1_ssadd_w) WRITE8_MEMBER(starshp1_state::starshp1_sspic_w) { /* - * Some mysterious game code at address $2CCE is causing - * erratic images in the target explosion sequence. The - * following condition is a hack to filter these images. + * Some mysterious game code at address $2CCE is causes + * erratic images in the target explosion sequence. But + * This is the way the actual game worked! */ - if (data != 0x87) - m_ship_picture = data; + m_ship_picture = data; + } @@ -373,7 +373,7 @@ uint32_t starshp1_state::screen_update_starshp1(screen_device &screen, bitmap_in } -void starshp1_state::screen_eof_starshp1(screen_device &screen, bool state) +WRITE_LINE_MEMBER(starshp1_state::screen_vblank_starshp1) { // rising edge if (state) diff --git a/src/mame/video/stfight_dev.cpp b/src/mame/video/stfight_dev.cpp index d434b61fea6..5a89418055f 100644 --- a/src/mame/video/stfight_dev.cpp +++ b/src/mame/video/stfight_dev.cpp @@ -9,11 +9,11 @@ #include "screen.h" -const device_type STFIGHT_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(STFIGHT_VIDEO, stfight_video_device, "stfight_vid", "Seibu Street Fight Video") stfight_video_device::stfight_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, STFIGHT_VIDEO, "Seibu Street Fight Video", tag, owner, clock, "stfight_vid", __FILE__), + : device_t(mconfig, STFIGHT_VIDEO, tag, owner, clock), m_gfxdecode(*this, "gfxdecode"), m_palette(*this,"^palette"), m_screen(*this, "screen"), diff --git a/src/mame/video/stfight_dev.h b/src/mame/video/stfight_dev.h index 24b5a0227a0..e399726116e 100644 --- a/src/mame/video/stfight_dev.h +++ b/src/mame/video/stfight_dev.h @@ -1,14 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Mark McDougall, David Haywood -#ifndef MAME_VIDEO_STFIGHT_VIDEO_H -#define MAME_VIDEO_STFIGHT_VIDEO_H +#ifndef MAME_VIDEO_STFIGHT_DEV_H +#define MAME_VIDEO_STFIGHT_DEV_H #pragma once -extern const device_type STFIGHT_VIDEO; +DECLARE_DEVICE_TYPE(STFIGHT_VIDEO, stfight_video_device) #define MCFG_STFIGHT_VIDEO_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, STFIGHT_VIDEO, 0) @@ -73,4 +73,4 @@ private: void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; -#endif // MAME_VIDEO_STFIGHT_VIDEO_H +#endif // MAME_VIDEO_STFIGHT_DEV_H diff --git a/src/mame/video/stic.cpp b/src/mame/video/stic.cpp index 85a38be4580..bd48a7978eb 100644 --- a/src/mame/video/stic.cpp +++ b/src/mame/video/stic.cpp @@ -12,17 +12,384 @@ #include "screen.h" -const device_type STIC = device_creator; +/**************************************************************************** + * * + * MXR 0000[..0007] MOB X REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+-+-+-+-----+---+---+--+--+--+--+--+--+--+--+ * + * | | | | | |XSIZE|VIS|COL|X7|X6|X5|X4|X3|X2|X1|X0| * + * +-+-+-+-+-+-----+---+---+--+--+--+--+--+--+--+--+ * + * * + * Xn x-position [0..255] * + * COL collision detection [1=enable] * + * VIS visibility [1=visible] * + * XSIZE double width [1=double] * + * * + **************************************************************************** + * * + * NOTES * + * * + * 1. If X=0, the sprite is not visible and does not register collisions. * + * 2. The horizontal handle is 8 pixels from the left of the sprite, * + * regardless of width. * + * * + ****************************************************************************/ +#define STIC_MXR 0x0000 + +#define STIC_MXR_XSIZE 0x0400 +#define STIC_MXR_VIS 0x0200 +#define STIC_MXR_COL 0x0100 +#define STIC_MXR_X 0x00FF + +/**************************************************************************** + * * + * MYR 0008[..000F] MOB Y REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+-+-+-----+-----+-----+-----+----+--+--+--+--+--+--+--+ * + * | | | | |YFLIP|XFLIP|YSIZE|YFULL|YRES|Y6|Y5|Y4|Y3|Y2|Y1|Y0| * + * +-+-+-+-+-----+-----+-----+-----+----+--+--+--+--+--+--+--+ * + * * + * Yn y-position [0..127] * + * YRES y-resolution [0=8 scanlines,1=16 scanlines] * + * YFULL double scanline height [1=double] * + * YSIZE quadruple scanline height [1=quadruple] * + * XFLIP horizontally flip image [1=flip] * + * YFLIP vertically flip image [1=flip] * + * * + **************************************************************************** + * * + * NOTES * + * * + * 1. A sprite with YRES=1 will display two cards. * + * 2. A sprite with YFULL=0 and YSIZE=0 will have scanlines half the * + * height of a background card. * + * 3, The minimum size of a sprite is 8x8 (XSIZE=YRES=YSIZE=YFULL=0). * + * 4. The maximum size of a sprite is 16x128 (XSIZE=YRES=YSIZE=YFULL=1). * + * 5. The Y-position is measured in double height scanlines. * + * 6. The vertical handle is 8 double height scanlines from the top of the * + * sprite, regardless of height. * + * * + ****************************************************************************/ +#define STIC_MYR 0x0008 + +#define STIC_MYR_YFLIP 0x0800 +#define STIC_MYR_XFLIP 0x0400 +#define STIC_MYR_YSIZE 0x0200 +#define STIC_MYR_YFULL 0x0100 +#define STIC_MYR_YRES 0x0080 +#define STIC_MYR_Y 0x007F + +/**************************************************************************** + * * + * SAR 0010[..0017] MOB ATTRIBUTE REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+---+---+---+-+-+--+--+--+--+--+--+---+---+---+ * + * | | |PRI|FG3|SEL| | |C5|C4|C3|C2|C1|C0|FG2|FG1|FG0| * + * +-+-+---+---+---+-+-+--+--+--+--+--+--+---+---+---+ * + * * + * FGn foreground color [0..15] * + * Cn card # [0..63] * + * SEL card memory select [0=GROM, 1=GRAM] * + * PRI sprite priority [1=behind set background bit] * + * * + ****************************************************************************/ +#define STIC_MAR 0x0010 + +#define STIC_MAR_PRI 0x2000 +#define STIC_MAR_FG3 0x1000 +#define STIC_MAR_SEL 0x0800 +#define STIC_MAR_C 0x07F8 +#define STIC_MAR_FG20 0x0007 + +/**************************************************************************** + * * + * SCR 0018[..001F] MOB COLLISION REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+-+-+-+-+----+----+----+----+----+----+----+----+----+----+ * + * | | | | | | |BRDR|BKGD|SPR7|SPR6|SPR5|SPR4|SPR3|SPR2|SPR1|SPR0| * + * +-+-+-+-+-+-+----+----+----+----+----+----+----+----+----+----+ * + * * + * SPRn 1=collision with sprite #n * + * BKGD 1=collision with set background bit * + * BRDR 1=collision with screen border * + * * + **************************************************************************** + * * + * NOTES * + * * + * 1. All collisions are latched. Successive reads read from the latch. * + * A write will reset the latch. * + * 2. Sprites with VIS=0 register collisions. * + * 3. Sprites with X=0 do not register collisions. * + * 4. Two overlapping sprites with different priorities, one completely * + * hidden behind the background, still register a collision. * + * * + ****************************************************************************/ +#define STIC_MCR 0x0018 + +#define STIC_MCR_BRDR 0x0200 +#define STIC_MCR_BKGD 0x0100 +#define STIC_MCR_SPR7 0x0080 +#define STIC_MCR_SPR6 0x0040 +#define STIC_MCR_SPR5 0x0020 +#define STIC_MCR_SPR4 0x0010 +#define STIC_MCR_SPR3 0x0008 +#define STIC_MCR_SPR2 0x0004 +#define STIC_MCR_SPR1 0x0002 +#define STIC_MCR_SPR0 0x0001 + +/**************************************************************************** + * * + * DER 0021 DISPLAY ENABLE REGISTER W * + * * + * (MSB) (LSB) * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * + * | | | | | | | | | | | | | | | | | * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * + * * + **************************************************************************** + * * + * NOTES * + * * + * 1. Any write during VBLANK enables STIC output. * + * * + ****************************************************************************/ +#define STIC_DER 0x0020 + +/**************************************************************************** + * * + * GMR 0021 GRAPHICS MODE REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * + * | | | | | | | | | | | | | | | | | * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * + * * + **************************************************************************** + * * + * NOTES * + * * + * 1. Any write during VBLANK enables FOREGROUND/BACKGROUND mode. * + * 2. Any read during VBLANK enables COLOR STACK/COLORED SQUARES mode. * + * * + ****************************************************************************/ +#define STIC_GMR 0x0021 + +/**************************************************************************** + * * + * CSR 0028 COLOR STACK REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+ * + * | | | | | | | | | | | | |BG3|BG2|BG1|BG0| * + * +-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+ * + * * + * BGn background color [0..15] * + * * + ****************************************************************************/ +#define STIC_CSR 0x0028 + +#define STIC_CSR_BG 0x000F + +/**************************************************************************** + * * + * BCR 002C BORDER COLOR REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+ * + * | | | | | | | | | | | | |BC3|BC2|BC1|BC0| * + * +-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+ * + * * + * BCn border color [0..15] * + * * + **************************************************************************** + * * + * NOTES * + * * + * 1. Affects overscan, and column and row blockouts. * + * * + ****************************************************************************/ +#define STIC_BCR 0x002C + +#define STIC_BCR_BC 0x000F + +/**************************************************************************** + * * + * HDR 0030 HORIZONTAL DELAY REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+----+----+----+ * + * | | | | | | | | | | | | | |DEL2|DEL1|DEL0| * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+----+----+----+ * + * * + * DELn horizontal delay [0..7] * + * * + **************************************************************************** + * * + * NOTES * + * * + * 1. Affects both BACKTAB and MOBs. * + * * + ****************************************************************************/ +#define STIC_HDR 0x0030 + +#define STIC_HDR_DEL 0x0007 + +/**************************************************************************** + * * + * STIC_VDR 0030 VERTICAL DELAY REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+----+----+----+ * + * | | | | | | | | | | | | | |DEL2|DEL1|DEL0| * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+----+----+----+ * + * * + * DELn vertical delay [0..7] * + * * + **************************************************************************** + * * + * NOTES * + * * + * 1. Affects both BACKTAB and MOBs. * + * * + ****************************************************************************/ +#define STIC_VDR 0x0031 + +#define STIC_VDR_DEL 0x0007 + +/**************************************************************************** + * * + * STIC_CBR 0032 CARD BLOCKOUT REGISTER RW * + * * + * (MSB) (LSB) * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+---+---+ * + * | | | | | | | | | | | | | | |ROW|COL| * + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+---+---+ * + * * + * COL blockout first card column [1=blockout] * + * ROW blockout first card row [1=blockout] * + * * + **************************************************************************** + * * + * NOTES * + * * + * 1. Generally used in conjunction with HDR and VDR registers, to achieve * + * smooth scrolling. * + * * + ****************************************************************************/ +#define STIC_CBR 0x0032 + +#define STIC_CBR_ROW 0x0002 +#define STIC_CBR_COL 0x0001 + +/**************************************************************************** + * * + * FOREGROUND/BACKGROUND MODE * + * * + * (MSB) (LSB) * + * +-+-+---+---+---+---+---+--+--+--+--+--+--+---+---+---+ * + * | | |BG2|BG3|SEL|BG1|BG0|C5|C4|C3|C2|C1|C0|FG2|FG1|FG0| * + * +-+-+---+---+---+---+---+--+--+--+--+--+--+---+---+---+ * + * * + * FGn foreground color [0..7] * + * Cn card # [0..63] * + * SEL card memory select [0=GROM, 1=GRAM] * + * BGn background color [0..15] * + * * + ****************************************************************************/ +#define STIC_FBM_BG2 0x2000 +#define STIC_FBM_BG310 0x1600 +#define STIC_FBM_SEL 0x0800 +#define STIC_FBM_C 0x01F8 +#define STIC_FBM_FG 0x0007 + +/**************************************************************************** + * * + * COLOR STACK MODE * + * * + * (MSB) (LSB) * + * +-+-+---+---+---+--+--+--+--+--+--+--+--+---+---+---+ * + * | | |ADV|FG3|SEL|C7|C6|C5|C4|C3|C2|C1|C0|FG2|FG1|FG0| * + * +-+-+---+---+---+--+--+--+--+--+--+--+--+---+---+---+ * + * * + * FGn foreground color [0..15] * + * Cn card # [GROM=0..212, GRAM=0..63] * + * SEL card memory select [0=GROM, 1=GRAM] * + * ADV advance color stack index [1=advance] * + * * + **************************************************************************** + * * + * NOTES: * + * * + * 1. When FG3=1 and SEL=0, COLORED SQUARES MODE is enabled. * + * 2. When SEL=1, C7 and C6 can be used as user-defined flags. * + * * + ****************************************************************************/ +#define STIC_CSTM_ADV 0x2000 +#define STIC_CSTM_FG3 0x1000 +#define STIC_CSTM_SEL 0x0800 +#define STIC_CSTM_C7 0x0400 +#define STIC_CSTM_C6 0x0200 +#define STIC_CSTM_C50 0x01F8 +#define STIC_CSTM_FG20 0x0007 + +#define STIC_CSTM_C (STIC_CSTM_C7|STIC_CSTM_C6|STIC_CSTM_C50) + +/**************************************************************************** + * * + * COLORED SQUARES MODE * + * * + * (MSB) (LSB) * + * +-+-+--+-+-+--+--+--+--+--+--+--+--+--+--+--+ * + * | | |D2|1|0|D1|D0|C2|C1|C0|B2|B1|B0|A2|A1|A0| * + * +-+-+--+-+-+--+--+--+--+--+--+--+--+--+--+--+ * + * * + * An color a [0..7] * + * Bn color b [0..7] * + * Cn color c [0..7] * + * Dn color d [0..7] * + * * + **************************************************************************** + * * + * NOTES: * + * * + * 1. Each color corresponds to one of the following 4 x 4 squares: * + * * + * +---+---+ * + * | a | b | * + * +---+---+ * + * | c | d | * + * +---+---+ * + * * + * 2. When color 7 is specified, the color is taken from the color stack. * + * * + ****************************************************************************/ +#define STIC_CSQM_D2 0x2000 +#define STIC_CSQM_D10 0x0600 +#define STIC_CSQM_C 0x01C0 +#define STIC_CSQM_B 0x0038 +#define STIC_CSQM_A 0x0007 + +#define STIC_CSQM_WIDTH (CARD_WIDTH / 2) +#define STIC_CSQM_HEIGHT (CARD_HEIGHT / 2) + + + +DEFINE_DEVICE_TYPE(STIC, stic_device, "stic", "STIC (Standard Television Interface Chip) Video Chip"); //------------------------------------------------- // stic_device - constructor //------------------------------------------------- stic_device::stic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, STIC, "STIC (Standard Television Interface Chip) Video Chip", tag, owner, clock, "stic", __FILE__), - m_grom(*this, "grom"), - m_x_scale(1), - m_y_scale(1) + device_t(mconfig, STIC, tag, owner, clock), + m_grom(*this, "grom"), + m_x_scale(1), + m_y_scale(1) { } @@ -56,7 +423,7 @@ void stic_device::device_start() save_item(NAME(m_left_edge_inhibit)); save_item(NAME(m_top_edge_inhibit)); save_item(NAME(m_backtab_buffer)); - for (int sp = 0; sp < STIC_MOBS; sp++) + for (int sp = 0; sp < MOBS; sp++) { save_item(m_sprite[sp].visible, "STIC sprite/m_sprite[sp].visible", sp); save_item(m_sprite[sp].xpos, "STIC sprite/m_sprite[sp].xpos", sp); @@ -80,7 +447,7 @@ void stic_device::device_start() void stic_device::device_reset() { - for (int i = 0; i < STIC_MOBS; i++) + for (int i = 0; i < MOBS; i++) { intv_sprite_type* s = &m_sprite[i]; s->visible = 0; @@ -178,14 +545,14 @@ bool stic_device::sprites_collide(int spriteNum1, int spriteNum2) intv_sprite_type* s1 = &m_sprite[spriteNum1]; intv_sprite_type* s2 = &m_sprite[spriteNum2]; - x0 = STIC_OVERSCAN_LEFT_WIDTH + m_col_delay - STIC_CARD_WIDTH; - y0 = STIC_OVERSCAN_TOP_HEIGHT + m_row_delay - STIC_CARD_HEIGHT; - x1 = (s1->xpos + x0) * STIC_X_SCALE; y1 = (s1->ypos + y0) * STIC_Y_SCALE; - x2 = (s2->xpos + x0) * STIC_X_SCALE; y2 = (s2->ypos + y0) * STIC_Y_SCALE; - w1 = (s1->doublex ? 2 : 1) * STIC_CARD_WIDTH; - w2 = (s2->doublex ? 2 : 1) * STIC_CARD_WIDTH; - h1 = (s1->quady ? 4 : 1) * (s1->doubley ? 2 : 1) * (s1->doubleyres ? 2 : 1) * STIC_CARD_HEIGHT; - h2 = (s2->quady ? 4 : 1) * (s2->doubley ? 2 : 1) * (s2->doubleyres ? 2 : 1) * STIC_CARD_HEIGHT; + x0 = OVERSCAN_LEFT_WIDTH + m_col_delay - CARD_WIDTH; + y0 = OVERSCAN_TOP_HEIGHT + m_row_delay - CARD_HEIGHT; + x1 = (s1->xpos + x0) * X_SCALE; y1 = (s1->ypos + y0) * Y_SCALE; + x2 = (s2->xpos + x0) * X_SCALE; y2 = (s2->ypos + y0) * Y_SCALE; + w1 = (s1->doublex ? 2 : 1) * CARD_WIDTH; + w2 = (s2->doublex ? 2 : 1) * CARD_WIDTH; + h1 = (s1->quady ? 4 : 1) * (s1->doubley ? 2 : 1) * (s1->doubleyres ? 2 : 1) * CARD_HEIGHT; + h2 = (s2->quady ? 4 : 1) * (s2->doubley ? 2 : 1) * (s2->doubleyres ? 2 : 1) * CARD_HEIGHT; if ((x1 >= x2 + w2) || (y1 >= y2 + h2) || (x2 >= x1 + w1) || (y2 >= y1 + h1)) @@ -216,13 +583,13 @@ bool stic_device::sprites_collide(int spriteNum1, int spriteNum2) void stic_device::determine_sprite_collisions() { // check sprite to sprite collisions - for (int i = 0; i < STIC_MOBS - 1; i++) + for (int i = 0; i < MOBS - 1; i++) { intv_sprite_type* s1 = &m_sprite[i]; if (s1->xpos == 0 || !s1->coll) continue; - for (int j = i + 1; j < STIC_MOBS; j++) + for (int j = i + 1; j < MOBS; j++) { intv_sprite_type* s2 = &m_sprite[j]; if (s2->xpos == 0 || !s2->coll) @@ -247,17 +614,17 @@ void stic_device::render_sprites() int32_t nextY; int32_t xInc; - for (int i = 0; i < STIC_MOBS; i++) + for (int i = 0; i < MOBS; i++) { intv_sprite_type* s = &m_sprite[i]; if (s->grom) - cardMemoryLocation = (s->card * STIC_CARD_HEIGHT); + cardMemoryLocation = (s->card * CARD_HEIGHT); else - cardMemoryLocation = ((s->card & 0x003F) * STIC_CARD_HEIGHT); + cardMemoryLocation = ((s->card & 0x003F) * CARD_HEIGHT); pixelSize = (s->quady ? 4 : 1) * (s->doubley ? 2 : 1); - spritePixelHeight = pixelSize * (s->doubleyres ? 2 : 1) * STIC_CARD_HEIGHT; + spritePixelHeight = pixelSize * (s->doubleyres ? 2 : 1) * CARD_HEIGHT; for (int j = 0; j < spritePixelHeight; j++) { @@ -268,13 +635,13 @@ void stic_device::render_sprites() nextData = m_gram[nextMemoryLocation]; else nextData = 0xFFFF; - nextX = (s->xflip ? ((s->doublex ? 2 : 1) * STIC_CARD_WIDTH - 1) : 0); + nextX = (s->xflip ? ((s->doublex ? 2 : 1) * CARD_WIDTH - 1) : 0); nextY = (s->yflip ? (spritePixelHeight - j - 1) : j); xInc = (s->xflip ? -1: 1); - for (int k = 0; k < STIC_CARD_WIDTH * (1 + s->doublex); k++) + for (int k = 0; k < CARD_WIDTH * (1 + s->doublex); k++) { - m_sprite_buffers[i][nextX + k * xInc][nextY] = (nextData & (1 << ((STIC_CARD_WIDTH - 1) - k / (1 + s->doublex)))) != 0; + m_sprite_buffers[i][nextX + k * xInc][nextY] = (nextData & (1 << ((CARD_WIDTH - 1) - k / (1 + s->doublex)))) != 0; } } } @@ -284,9 +651,9 @@ void stic_device::render_line(bitmap_ind16 &bitmap, uint8_t nextByte, uint16_t x { uint32_t color; - for (int i = 0; i < STIC_CARD_WIDTH; i++) + for (int i = 0; i < CARD_WIDTH; i++) { - color = (nextByte & (1 << ((STIC_CARD_WIDTH - 1) - i)) ? fgcolor : bgcolor); + color = (nextByte & (1 << ((CARD_WIDTH - 1) - i)) ? fgcolor : bgcolor); intv_set_pixel(bitmap, x+i, y, color); intv_set_pixel(bitmap, x+i, y+1, color); } @@ -294,10 +661,10 @@ void stic_device::render_line(bitmap_ind16 &bitmap, uint8_t nextByte, uint16_t x void stic_device::render_colored_squares(bitmap_ind16 &bitmap, uint16_t x, uint16_t y, uint8_t color0, uint8_t color1, uint8_t color2, uint8_t color3) { - intv_plot_box(bitmap, x, y, STIC_CSQM_WIDTH * STIC_X_SCALE, STIC_CSQM_HEIGHT * STIC_Y_SCALE, color0); - intv_plot_box(bitmap, x + STIC_CSQM_WIDTH * STIC_X_SCALE, y, STIC_CSQM_WIDTH * STIC_X_SCALE, STIC_CSQM_HEIGHT * STIC_Y_SCALE, color1); - intv_plot_box(bitmap, x, y + STIC_CSQM_HEIGHT * STIC_Y_SCALE, STIC_CSQM_WIDTH * STIC_X_SCALE, STIC_CSQM_HEIGHT * STIC_Y_SCALE, color2); - intv_plot_box(bitmap, x + STIC_CSQM_WIDTH * STIC_X_SCALE, y + STIC_CSQM_HEIGHT * STIC_Y_SCALE, STIC_CSQM_WIDTH * STIC_X_SCALE, STIC_CSQM_HEIGHT * STIC_Y_SCALE, color3); + intv_plot_box(bitmap, x, y, STIC_CSQM_WIDTH * X_SCALE, STIC_CSQM_HEIGHT * Y_SCALE, color0); + intv_plot_box(bitmap, x + STIC_CSQM_WIDTH * X_SCALE, y, STIC_CSQM_WIDTH * X_SCALE, STIC_CSQM_HEIGHT * Y_SCALE, color1); + intv_plot_box(bitmap, x, y + STIC_CSQM_HEIGHT * Y_SCALE, STIC_CSQM_WIDTH * X_SCALE, STIC_CSQM_HEIGHT * Y_SCALE, color2); + intv_plot_box(bitmap, x + STIC_CSQM_WIDTH * X_SCALE, y + STIC_CSQM_HEIGHT * Y_SCALE, STIC_CSQM_WIDTH * X_SCALE, STIC_CSQM_HEIGHT * Y_SCALE, color3); } void stic_device::render_color_stack_mode(bitmap_ind16 &bitmap) @@ -306,13 +673,13 @@ void stic_device::render_color_stack_mode(bitmap_ind16 &bitmap) uint8_t csPtr = 0; uint16_t nextCard; - for (h = 0, nexty = (STIC_OVERSCAN_TOP_HEIGHT + m_row_delay) * STIC_Y_SCALE; - h < STIC_BACKTAB_HEIGHT; - h++, nexty += STIC_CARD_HEIGHT * STIC_Y_SCALE) + for (h = 0, nexty = (OVERSCAN_TOP_HEIGHT + m_row_delay) * Y_SCALE; + h < BACKTAB_HEIGHT; + h++, nexty += CARD_HEIGHT * Y_SCALE) { - for (w = 0, nextx = (STIC_OVERSCAN_LEFT_WIDTH + m_col_delay) * STIC_X_SCALE; - w < STIC_BACKTAB_WIDTH; - w++, nextx += STIC_CARD_WIDTH * STIC_X_SCALE) + for (w = 0, nextx = (OVERSCAN_LEFT_WIDTH + m_col_delay) * X_SCALE; + w < BACKTAB_WIDTH; + w++, nextx += CARD_WIDTH * X_SCALE) { nextCard = m_backtab_buffer[h][w]; @@ -340,7 +707,7 @@ void stic_device::render_color_stack_mode(bitmap_ind16 &bitmap) //advance the color pointer, if necessary if (nextCard & STIC_CSTM_ADV) - csPtr = (csPtr+1) & (STIC_CSRS - 1); + csPtr = (csPtr+1) & (CSRS - 1); fgcolor = ((nextCard & STIC_CSTM_FG3) >> 9) | (nextCard & (STIC_CSTM_FG20)) | FOREGROUND_BIT; @@ -351,17 +718,17 @@ void stic_device::render_color_stack_mode(bitmap_ind16 &bitmap) { memoryLocation = nextCard & STIC_CSTM_C; memory = m_grom; - for (int j = 0; j < STIC_CARD_HEIGHT; j++) + for (int j = 0; j < CARD_HEIGHT; j++) render_line(bitmap, memory[memoryLocation + j], - nextx, nexty + j * STIC_Y_SCALE, fgcolor, bgcolor); + nextx, nexty + j * Y_SCALE, fgcolor, bgcolor); } else { memoryLocation = nextCard & STIC_CSTM_C50; memory = m_gram; - for (int j = 0; j < STIC_CARD_HEIGHT; j++) + for (int j = 0; j < CARD_HEIGHT; j++) render_line(bitmap, memory[memoryLocation + j], - nextx, nexty + j * STIC_Y_SCALE, fgcolor, bgcolor); + nextx, nexty + j * Y_SCALE, fgcolor, bgcolor); } } } @@ -375,13 +742,13 @@ void stic_device::render_fg_bg_mode(bitmap_ind16 &bitmap) uint16_t nextCard, memoryLocation; uint8_t* memory; - for (h = 0, nexty = (STIC_OVERSCAN_TOP_HEIGHT + m_row_delay) * STIC_Y_SCALE; - h < STIC_BACKTAB_HEIGHT; - h++, nexty += STIC_CARD_HEIGHT * STIC_Y_SCALE) + for (h = 0, nexty = (OVERSCAN_TOP_HEIGHT + m_row_delay) * Y_SCALE; + h < BACKTAB_HEIGHT; + h++, nexty += CARD_HEIGHT * Y_SCALE) { - for (w = 0, nextx = (STIC_OVERSCAN_LEFT_WIDTH + m_col_delay) * STIC_X_SCALE; - w < STIC_BACKTAB_WIDTH; - w++, nextx += STIC_CARD_WIDTH * STIC_X_SCALE) + for (w = 0, nextx = (OVERSCAN_LEFT_WIDTH + m_col_delay) * X_SCALE; + w < BACKTAB_WIDTH; + w++, nextx += CARD_WIDTH * X_SCALE) { nextCard = m_backtab_buffer[h][w]; fgcolor = (nextCard & STIC_FBM_FG) | FOREGROUND_BIT; @@ -393,17 +760,17 @@ void stic_device::render_fg_bg_mode(bitmap_ind16 &bitmap) { memoryLocation = nextCard & STIC_FBM_C; memory = m_grom; - for (int j = 0; j < STIC_CARD_HEIGHT; j++) + for (int j = 0; j < CARD_HEIGHT; j++) render_line(bitmap, memory[memoryLocation + j], - nextx, nexty + j * STIC_Y_SCALE, fgcolor, bgcolor); + nextx, nexty + j * Y_SCALE, fgcolor, bgcolor); } else { memoryLocation = nextCard & STIC_FBM_C; memory = m_gram; - for (int j = 0; j < STIC_CARD_HEIGHT; j++) + for (int j = 0; j < CARD_HEIGHT; j++) render_line(bitmap, memory[memoryLocation + j], - nextx, nexty + j * STIC_Y_SCALE, fgcolor, bgcolor); + nextx, nexty + j * Y_SCALE, fgcolor, bgcolor); } } } @@ -418,7 +785,7 @@ void stic_device::copy_sprites_to_background(bitmap_ind16 &bitmap) int16_t leftBorder, rightBorder, topBorder, bottomBorder; int32_t nextX; - for (int i = STIC_MOBS - 1; i >= 0; i--) + for (int i = MOBS - 1; i >= 0; i--) { intv_sprite_type *s = &m_sprite[i]; if (s->xpos == 0 || (!s->coll && !s->visible)) @@ -427,16 +794,16 @@ void stic_device::copy_sprites_to_background(bitmap_ind16 &bitmap) borderCollision = false; foregroundCollision = false; - spritePixelHeight = (s->quady ? 4 : 1) * (s->doubley ? 2 : 1) * (s->doubleyres ? 2 : 1) * STIC_CARD_HEIGHT; - width = (s->doublex ? 2 : 1) * STIC_CARD_WIDTH; + spritePixelHeight = (s->quady ? 4 : 1) * (s->doubley ? 2 : 1) * (s->doubleyres ? 2 : 1) * CARD_HEIGHT; + width = (s->doublex ? 2 : 1) * CARD_WIDTH; - leftX = (s->xpos - STIC_CARD_WIDTH + STIC_OVERSCAN_LEFT_WIDTH + m_col_delay) * STIC_X_SCALE; - nextY = (s->ypos - STIC_CARD_HEIGHT + STIC_OVERSCAN_TOP_HEIGHT + m_row_delay) * STIC_Y_SCALE; + leftX = (s->xpos - CARD_WIDTH + OVERSCAN_LEFT_WIDTH + m_col_delay) * X_SCALE; + nextY = (s->ypos - CARD_HEIGHT + OVERSCAN_TOP_HEIGHT + m_row_delay) * Y_SCALE; - leftBorder = (STIC_OVERSCAN_LEFT_WIDTH + (m_left_edge_inhibit ? STIC_CARD_WIDTH : 0)) * STIC_X_SCALE; - rightBorder = (STIC_OVERSCAN_LEFT_WIDTH + STIC_BACKTAB_WIDTH * STIC_CARD_WIDTH - 1 - 1) * STIC_X_SCALE; - topBorder = (STIC_OVERSCAN_TOP_HEIGHT + (m_top_edge_inhibit ? STIC_CARD_HEIGHT : 0)) * STIC_Y_SCALE; - bottomBorder = (STIC_OVERSCAN_TOP_HEIGHT + STIC_BACKTAB_HEIGHT * STIC_CARD_HEIGHT) * STIC_Y_SCALE - 1; + leftBorder = (OVERSCAN_LEFT_WIDTH + (m_left_edge_inhibit ? CARD_WIDTH : 0)) * X_SCALE; + rightBorder = (OVERSCAN_LEFT_WIDTH + BACKTAB_WIDTH * CARD_WIDTH - 1 - 1) * X_SCALE; + topBorder = (OVERSCAN_TOP_HEIGHT + (m_top_edge_inhibit ? CARD_HEIGHT : 0)) * Y_SCALE; + bottomBorder = (OVERSCAN_TOP_HEIGHT + BACKTAB_HEIGHT * CARD_HEIGHT) * Y_SCALE - 1; for (y = 0; y < spritePixelHeight; y++) { @@ -511,15 +878,15 @@ void stic_device::draw_background(bitmap_ind16 &bitmap, int transparency) int j; - int x0 = STIC_OVERSCAN_LEFT_WIDTH + m_col_delay; - int y0 = STIC_OVERSCAN_TOP_HEIGHT + m_row_delay; + int x0 = OVERSCAN_LEFT_WIDTH + m_col_delay; + int y0 = OVERSCAN_TOP_HEIGHT + m_row_delay; if (m_color_stack_mode == 1) { m_color_stack_offset = 0; - for(row = 0; row < STIC_BACKTAB_HEIGHT; row++) + for(row = 0; row < BACKTAB_HEIGHT; row++) { - for(col = 0; col < STIC_BACKTAB_WIDTH; col++) + for(col = 0; col < BACKTAB_WIDTH; col++) { value = m_ram16[offs]; @@ -534,21 +901,21 @@ void stic_device::draw_background(bitmap_ind16 &bitmap, int transparency) colorc = (value & STIC_CSQM_C) >> 6; colord = ((n_bit & STIC_CSQM_D2) >> 11) + ((value & STIC_CSQM_D10) >> 9); // color 7 if the top of the color stack in this mode - if (colora == 7) colora = m_stic_registers[STIC_CSR + STIC_CSR3]; - if (colorb == 7) colorb = m_stic_registers[STIC_CSR + STIC_CSR3]; - if (colorc == 7) colorc = m_stic_registers[STIC_CSR + STIC_CSR3]; - if (colord == 7) colord = m_stic_registers[STIC_CSR + STIC_CSR3]; - intv_plot_box(bitmap, (x0 + col * STIC_CARD_WIDTH) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT) * STIC_Y_SCALE, STIC_CSQM_WIDTH * STIC_X_SCALE, STIC_CSQM_HEIGHT * STIC_Y_SCALE, colora); - intv_plot_box(bitmap, (x0 + col * STIC_CARD_WIDTH + STIC_CSQM_WIDTH)) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT) * STIC_Y_SCALE, STIC_CSQM_WIDTH * STIC_X_SCALE, STIC_CSQM_HEIGHT * STIC_Y_SCALE, colorb); - intv_plot_box(bitmap, (x0 + col * STIC_CARD_WIDTH) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT + STIC_CSQM_HEIGHT) * STIC_Y_SCALE, STIC_CSQM_WIDTH * STIC_X_SCALE, STIC_CSQM_HEIGHT * STIC_Y_SCALE, colorc); - intv_plot_box(bitmap, (x0 + col * STIC_CARD_WIDTH + STIC_CSQM_WIDTH) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT + STIC_CSQM_HEIGHT) * STIC_Y_SCALE, STIC_CSQM_WIDTH * STIC_X_SCALE, STIC_CSQM_HEIGHT * STIC_Y_SCALE, colord); + if (colora == 7) colora = m_stic_registers[STIC_CSR + CSR3]; + if (colorb == 7) colorb = m_stic_registers[STIC_CSR + CSR3]; + if (colorc == 7) colorc = m_stic_registers[STIC_CSR + CSR3]; + if (colord == 7) colord = m_stic_registers[STIC_CSR + CSR3]; + intv_plot_box(bitmap, (x0 + col * CARD_WIDTH) * X_SCALE, (y0 + row * CARD_HEIGHT) * Y_SCALE, STIC_CSQM_WIDTH * X_SCALE, STIC_CSQM_HEIGHT * Y_SCALE, colora); + intv_plot_box(bitmap, (x0 + col * CARD_WIDTH + STIC_CSQM_WIDTH)) * X_SCALE, (y0 + row * CARD_HEIGHT) * Y_SCALE, STIC_CSQM_WIDTH * X_SCALE, STIC_CSQM_HEIGHT * Y_SCALE, colorb); + intv_plot_box(bitmap, (x0 + col * CARD_WIDTH) * X_SCALE, (y0 + row * CARD_HEIGHT + STIC_CSQM_HEIGHT) * Y_SCALE, STIC_CSQM_WIDTH * X_SCALE, STIC_CSQM_HEIGHT * Y_SCALE, colorc); + intv_plot_box(bitmap, (x0 + col * CARD_WIDTH + STIC_CSQM_WIDTH) * X_SCALE, (y0 + row * CARD_HEIGHT + STIC_CSQM_HEIGHT) * Y_SCALE, STIC_CSQM_WIDTH * X_SCALE, STIC_CSQM_HEIGHT * Y_SCALE, colord); } else // normal color stack mode { if (n_bit) // next color { m_color_stack_offset += 1; - m_color_stack_offset &= (STIC_CSRS - 1); + m_color_stack_offset &= (CSRS - 1); } if (p_bit) // pastel color set @@ -574,12 +941,12 @@ void stic_device::draw_background(bitmap_ind16 &bitmap, int transparency) drawgfx(bitmap,m_gfxdecode->gfx(1), code, bgcolor*16+fgcolor, - 0,0, (x0 + col * STIC_CARD_WIDTH) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT) * STIC_Y_SCALE, + 0,0, (x0 + col * CARD_WIDTH) * X_SCALE, (y0 + row * CARD_HEIGHT) * Y_SCALE, 0,transparency,bgcolor); for(j=0;j<8;j++) { - //intv_set_pixel(bitmap, (x0 + col * STIC_CARD_WIDTH + j) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT + 7) * STIC_Y_SCALE + 1, 1); + //intv_set_pixel(bitmap, (x0 + col * CARD_WIDTH + j) * X_SCALE, (y0 + row * CARD_HEIGHT + 7) * Y_SCALE + 1, 1); } } @@ -588,12 +955,12 @@ void stic_device::draw_background(bitmap_ind16 &bitmap, int transparency) drawgfx(bitmap,m_gfxdecode->gfx(0), code, bgcolor*16+fgcolor, - 0,0, (x0 + col * STIC_CARD_WIDTH) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT) * STIC_Y_SCALE, + 0,0, (x0 + col * CARD_WIDTH) * X_SCALE, (y0 + row * CARD_HEIGHT) * Y_SCALE, 0,transparency,bgcolor); for(j=0;j<8;j++) { - //intv_set_pixel(bitmap, (x0 + col * STIC_CARD_WIDTH + j) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT + 7) * STIC_Y_SCALE + 1, 2); + //intv_set_pixel(bitmap, (x0 + col * CARD_WIDTH + j) * X_SCALE, (y0 + row * CARD_HEIGHT + 7) * Y_SCALE + 1, 2); } } } @@ -604,9 +971,9 @@ void stic_device::draw_background(bitmap_ind16 &bitmap, int transparency) else { // fg/bg mode goes here - for(row = 0; row < STIC_BACKTAB_HEIGHT; row++) + for(row = 0; row < BACKTAB_HEIGHT; row++) { - for(col = 0; col < STIC_BACKTAB_WIDTH; col++) + for(col = 0; col < BACKTAB_WIDTH; col++) { value = m_ram16[offs]; fgcolor = value & STIC_FBM_FG; @@ -627,7 +994,7 @@ void stic_device::draw_background(bitmap_ind16 &bitmap, int transparency) drawgfx(bitmap,m_gfxdecode->gfx(1), code, bgcolor*16+fgcolor, - 0,0, (x0 + col * STIC_CARD_WIDTH) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT) * STIC_Y_SCALE, + 0,0, (x0 + col * CARD_WIDTH) * X_SCALE, (y0 + row * CARD_HEIGHT) * Y_SCALE, 0,transparency,bgcolor); } else // read from GROM @@ -635,7 +1002,7 @@ void stic_device::draw_background(bitmap_ind16 &bitmap, int transparency) drawgfx(bitmap,m_gfxdecode->gfx(0), code, bgcolor*16+fgcolor, - 0,0, (x0 + col * STIC_CARD_WIDTH) * STIC_X_SCALE, (y0 + row * STIC_CARD_HEIGHT) * STIC_Y_SCALE, + 0,0, (x0 + col * CARD_WIDTH) * X_SCALE, (y0 + row * CARD_HEIGHT) * Y_SCALE, 0,transparency,bgcolor); } offs++; @@ -650,10 +1017,10 @@ void stic_device::draw_background(bitmap_ind16 &bitmap, int transparency) void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground) { int code; - int x0 = STIC_OVERSCAN_LEFT_WIDTH + m_col_delay - STIC_CARD_WIDTH; - int y0 = STIC_OVERSCAN_TOP_HEIGHT + m_row_delay - STIC_CARD_HEIGHT; + int x0 = OVERSCAN_LEFT_WIDTH + m_col_delay - CARD_WIDTH; + int y0 = OVERSCAN_TOP_HEIGHT + m_row_delay - CARD_HEIGHT; - for (int i = STIC_MOBS - 1; i >= 0; --i) + for (int i = MOBS - 1; i >= 0; --i) { intv_sprite_type *s = &m_sprite[i]; if (s->visible && (s->behind_foreground == behind_foreground)) @@ -677,7 +1044,7 @@ void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground) code, s->color, s->xflip,s->yflip, - (s->xpos + x0) * STIC_X_SCALE, (s->ypos + y0) * STIC_Y_SCALE, + (s->xpos + x0) * X_SCALE, (s->ypos + y0) * Y_SCALE, 0x8000 * s->xsize, 0x8000 * s->ysize,0); } else @@ -700,13 +1067,13 @@ void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground) code, s->color, s->xflip,s->yflip, - (s->xpos + x0) * STIC_X_SCALE, (s->ypos + y0) * STIC_Y_SCALE + s->yflip * s->ysize * STIC_CARD_HEIGHT, + (s->xpos + x0) * X_SCALE, (s->ypos + y0) * Y_SCALE + s->yflip * s->ysize * CARD_HEIGHT, 0x8000*s->xsize, 0x8000*s->ysize,0); m_gfxdecode->gfx(1)->zoom_transpen(bitmap,&machine().screen[0].visarea, code+1, s->color, s->xflip,s->yflip, - (s->xpos + x0) * STIC_X_SCALE, (s->ypos + y0) * STIC_Y_SCALE + (1 - s->yflip) * s->ysize * STIC_CARD_HEIGHT, + (s->xpos + x0) * X_SCALE, (s->ypos + y0) * Y_SCALE + (1 - s->yflip) * s->ysize * CARD_HEIGHT, 0x8000*s->xsize, 0x8000*s->ysize,0); } } @@ -719,7 +1086,7 @@ void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground) code, s->color, s->xflip,s->yflip, - (s->xpos + x0) * STIC_X_SCALE, (s->ypos + y0) * STIC_Y_SCALE, + (s->xpos + x0) * X_SCALE, (s->ypos + y0) * Y_SCALE, 0x8000*s->xsize, 0x8000*s->ysize,0); } else @@ -728,13 +1095,13 @@ void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground) code, s->color, s->xflip,s->yflip, - (s->xpos + x0) * STIC_X_SCALE, (s->ypos + y0) * STIC_Y_SCALE + s->yflip * s->ysize * STIC_CARD_HEIGHT, + (s->xpos + x0) * X_SCALE, (s->ypos + y0) * Y_SCALE + s->yflip * s->ysize * CARD_HEIGHT, 0x8000*s->xsize, 0x8000*s->ysize,0); m_gfxdecode->gfx(0)->zoom_transpen(bitmap,&machine().screen[0].visarea, code+1, s->color, s->xflip,s->yflip, - (s->xpos + x0) * STIC_X_SCALE, (s->ypos + y0) * STIC_Y_SCALE + (1 - s->yflip) * s->ysize * STIC_CARD_HEIGHT, + (s->xpos + x0) * X_SCALE, (s->ypos + y0) * Y_SCALE + (1 - s->yflip) * s->ysize * CARD_HEIGHT, 0x8000*s->xsize, 0x8000*s->ysize,0); } } @@ -745,11 +1112,11 @@ void stic_device::draw_sprites(bitmap_ind16 &bitmap, int behind_foreground) void stic_device::draw_borders(bitmap_ind16 &bitmap) { - intv_plot_box(bitmap, 0, 0, (STIC_OVERSCAN_LEFT_WIDTH + (m_left_edge_inhibit ? STIC_CARD_WIDTH : m_col_delay)) * STIC_X_SCALE, (STIC_OVERSCAN_TOP_HEIGHT + STIC_BACKTAB_HEIGHT * STIC_CARD_HEIGHT + STIC_OVERSCAN_BOTTOM_HEIGHT) * STIC_Y_SCALE, m_border_color); - intv_plot_box(bitmap, (STIC_OVERSCAN_LEFT_WIDTH + STIC_BACKTAB_WIDTH * STIC_CARD_WIDTH - 1) * STIC_X_SCALE, 0, STIC_OVERSCAN_RIGHT_WIDTH, (STIC_OVERSCAN_TOP_HEIGHT + STIC_BACKTAB_HEIGHT * STIC_CARD_HEIGHT + STIC_OVERSCAN_BOTTOM_HEIGHT) * STIC_Y_SCALE, m_border_color); + intv_plot_box(bitmap, 0, 0, (OVERSCAN_LEFT_WIDTH + (m_left_edge_inhibit ? CARD_WIDTH : m_col_delay)) * X_SCALE, (OVERSCAN_TOP_HEIGHT + BACKTAB_HEIGHT * CARD_HEIGHT + OVERSCAN_BOTTOM_HEIGHT) * Y_SCALE, m_border_color); + intv_plot_box(bitmap, (OVERSCAN_LEFT_WIDTH + BACKTAB_WIDTH * CARD_WIDTH - 1) * X_SCALE, 0, OVERSCAN_RIGHT_WIDTH, (OVERSCAN_TOP_HEIGHT + BACKTAB_HEIGHT * CARD_HEIGHT + OVERSCAN_BOTTOM_HEIGHT) * Y_SCALE, m_border_color); - intv_plot_box(bitmap, 0, 0, (STIC_OVERSCAN_LEFT_WIDTH + STIC_BACKTAB_WIDTH * STIC_CARD_WIDTH - 1 + STIC_OVERSCAN_RIGHT_WIDTH) * STIC_X_SCALE, (STIC_OVERSCAN_TOP_HEIGHT + (m_top_edge_inhibit ? STIC_CARD_HEIGHT : m_row_delay)) * STIC_Y_SCALE, m_border_color); - intv_plot_box(bitmap, 0, (STIC_OVERSCAN_TOP_HEIGHT + STIC_BACKTAB_HEIGHT * STIC_CARD_HEIGHT) * STIC_Y_SCALE, (STIC_OVERSCAN_LEFT_WIDTH + STIC_BACKTAB_WIDTH * STIC_CARD_WIDTH - 1 + STIC_OVERSCAN_RIGHT_WIDTH) * STIC_X_SCALE, STIC_OVERSCAN_BOTTOM_HEIGHT * STIC_Y_SCALE, m_border_color); + intv_plot_box(bitmap, 0, 0, (OVERSCAN_LEFT_WIDTH + BACKTAB_WIDTH * CARD_WIDTH - 1 + OVERSCAN_RIGHT_WIDTH) * X_SCALE, (OVERSCAN_TOP_HEIGHT + (m_top_edge_inhibit ? CARD_HEIGHT : m_row_delay)) * Y_SCALE, m_border_color); + intv_plot_box(bitmap, 0, (OVERSCAN_TOP_HEIGHT + BACKTAB_HEIGHT * CARD_HEIGHT) * Y_SCALE, (OVERSCAN_LEFT_WIDTH + BACKTAB_WIDTH * CARD_WIDTH - 1 + OVERSCAN_RIGHT_WIDTH) * X_SCALE, OVERSCAN_BOTTOM_HEIGHT * Y_SCALE, m_border_color); } void stic_device::screenrefresh() @@ -766,7 +1133,7 @@ void stic_device::screenrefresh() // Copy the sprites to the background copy_sprites_to_background(m_bitmap); determine_sprite_collisions(); - for (int i = 0; i < STIC_MOBS; i++) + for (int i = 0; i < MOBS; i++) m_stic_registers[STIC_MCR + i] |= m_sprite[i].collision; /* draw the screen borders if enabled */ draw_borders(m_bitmap); @@ -785,41 +1152,41 @@ READ16_MEMBER( stic_device::read ) //logerror("%x = stic_r(%x)\n",0,offset); switch (offset) { - case STIC_MXR + STIC_MOB0: - case STIC_MXR + STIC_MOB1: - case STIC_MXR + STIC_MOB2: - case STIC_MXR + STIC_MOB3: - case STIC_MXR + STIC_MOB4: - case STIC_MXR + STIC_MOB5: - case STIC_MXR + STIC_MOB6: - case STIC_MXR + STIC_MOB7: + case STIC_MXR + MOB0: + case STIC_MXR + MOB1: + case STIC_MXR + MOB2: + case STIC_MXR + MOB3: + case STIC_MXR + MOB4: + case STIC_MXR + MOB5: + case STIC_MXR + MOB6: + case STIC_MXR + MOB7: return 0x3800 | (m_stic_registers[offset] & 0x07FF); - case STIC_MYR + STIC_MOB0: - case STIC_MYR + STIC_MOB1: - case STIC_MYR + STIC_MOB2: - case STIC_MYR + STIC_MOB3: - case STIC_MYR + STIC_MOB4: - case STIC_MYR + STIC_MOB5: - case STIC_MYR + STIC_MOB6: - case STIC_MYR + STIC_MOB7: + case STIC_MYR + MOB0: + case STIC_MYR + MOB1: + case STIC_MYR + MOB2: + case STIC_MYR + MOB3: + case STIC_MYR + MOB4: + case STIC_MYR + MOB5: + case STIC_MYR + MOB6: + case STIC_MYR + MOB7: return 0x3000 | (m_stic_registers[offset] & 0x0FFF); - case STIC_MAR + STIC_MOB0: - case STIC_MAR + STIC_MOB1: - case STIC_MAR + STIC_MOB2: - case STIC_MAR + STIC_MOB3: - case STIC_MAR + STIC_MOB4: - case STIC_MAR + STIC_MOB5: - case STIC_MAR + STIC_MOB6: - case STIC_MAR + STIC_MOB7: + case STIC_MAR + MOB0: + case STIC_MAR + MOB1: + case STIC_MAR + MOB2: + case STIC_MAR + MOB3: + case STIC_MAR + MOB4: + case STIC_MAR + MOB5: + case STIC_MAR + MOB6: + case STIC_MAR + MOB7: return m_stic_registers[offset] & 0x3FFF; - case STIC_MCR + STIC_MOB0: - case STIC_MCR + STIC_MOB1: - case STIC_MCR + STIC_MOB2: - case STIC_MCR + STIC_MOB3: - case STIC_MCR + STIC_MOB4: - case STIC_MCR + STIC_MOB5: - case STIC_MCR + STIC_MOB6: - case STIC_MCR + STIC_MOB7: + case STIC_MCR + MOB0: + case STIC_MCR + MOB1: + case STIC_MCR + MOB2: + case STIC_MCR + MOB3: + case STIC_MCR + MOB4: + case STIC_MCR + MOB5: + case STIC_MCR + MOB6: + case STIC_MCR + MOB7: return 0x3C00 | (m_stic_registers[offset] & 0x03FF); case STIC_GMR: m_color_stack_mode = 1; @@ -827,10 +1194,10 @@ READ16_MEMBER( stic_device::read ) /*** fall through ***/ case STIC_DER: return 0x3FFF; - case STIC_CSR + STIC_CSR0: - case STIC_CSR + STIC_CSR1: - case STIC_CSR + STIC_CSR2: - case STIC_CSR + STIC_CSR3: + case STIC_CSR + CSR0: + case STIC_CSR + CSR1: + case STIC_CSR + CSR2: + case STIC_CSR + CSR3: case STIC_BCR: return 0x3FF0 | (m_stic_registers[offset] & 0x000F); case STIC_HDR: @@ -852,30 +1219,30 @@ WRITE16_MEMBER( stic_device::write ) switch (offset) { // X Positions - case STIC_MXR + STIC_MOB0: - case STIC_MXR + STIC_MOB1: - case STIC_MXR + STIC_MOB2: - case STIC_MXR + STIC_MOB3: - case STIC_MXR + STIC_MOB4: - case STIC_MXR + STIC_MOB5: - case STIC_MXR + STIC_MOB6: - case STIC_MXR + STIC_MOB7: - s = &m_sprite[offset & (STIC_MOBS - 1)]; + case STIC_MXR + MOB0: + case STIC_MXR + MOB1: + case STIC_MXR + MOB2: + case STIC_MXR + MOB3: + case STIC_MXR + MOB4: + case STIC_MXR + MOB5: + case STIC_MXR + MOB6: + case STIC_MXR + MOB7: + s = &m_sprite[offset & (MOBS - 1)]; s->doublex = !!(data & STIC_MXR_XSIZE); s->visible = !!(data & STIC_MXR_VIS); s->coll = !!(data & STIC_MXR_COL); s->xpos = (data & STIC_MXR_X); break; // Y Positions - case STIC_MYR + STIC_MOB0: - case STIC_MYR + STIC_MOB1: - case STIC_MYR + STIC_MOB2: - case STIC_MYR + STIC_MOB3: - case STIC_MYR + STIC_MOB4: - case STIC_MYR + STIC_MOB5: - case STIC_MYR + STIC_MOB6: - case STIC_MYR + STIC_MOB7: - s = &m_sprite[offset & (STIC_MOBS - 1)]; + case STIC_MYR + MOB0: + case STIC_MYR + MOB1: + case STIC_MYR + MOB2: + case STIC_MYR + MOB3: + case STIC_MYR + MOB4: + case STIC_MYR + MOB5: + case STIC_MYR + MOB6: + case STIC_MYR + MOB7: + s = &m_sprite[offset & (MOBS - 1)]; s->yflip = !!(data & STIC_MYR_YFLIP); s->xflip = !!(data & STIC_MYR_XFLIP); s->quady = !!(data & STIC_MYR_YSIZE); @@ -884,32 +1251,32 @@ WRITE16_MEMBER( stic_device::write ) s->ypos = (data & STIC_MYR_Y); break; // Attributes - case STIC_MAR + STIC_MOB0: - case STIC_MAR + STIC_MOB1: - case STIC_MAR + STIC_MOB2: - case STIC_MAR + STIC_MOB3: - case STIC_MAR + STIC_MOB4: - case STIC_MAR + STIC_MOB5: - case STIC_MAR + STIC_MOB6: - case STIC_MAR + STIC_MOB7: - s = &m_sprite[offset & (STIC_MOBS - 1)]; + case STIC_MAR + MOB0: + case STIC_MAR + MOB1: + case STIC_MAR + MOB2: + case STIC_MAR + MOB3: + case STIC_MAR + MOB4: + case STIC_MAR + MOB5: + case STIC_MAR + MOB6: + case STIC_MAR + MOB7: + s = &m_sprite[offset & (MOBS - 1)]; s->behind_foreground = !!(data & STIC_MAR_PRI); s->grom = !(data & STIC_MAR_SEL); s->card = ((data & STIC_MAR_C) >> 3); s->color = ((data & STIC_MAR_FG3) >> 9) | (data & STIC_MAR_FG20); break; // Collision Detection - TBD - case STIC_MCR + STIC_MOB0: - case STIC_MCR + STIC_MOB1: - case STIC_MCR + STIC_MOB2: - case STIC_MCR + STIC_MOB3: - case STIC_MCR + STIC_MOB4: - case STIC_MCR + STIC_MOB5: - case STIC_MCR + STIC_MOB6: - case STIC_MCR + STIC_MOB7: + case STIC_MCR + MOB0: + case STIC_MCR + MOB1: + case STIC_MCR + MOB2: + case STIC_MCR + MOB3: + case STIC_MCR + MOB4: + case STIC_MCR + MOB5: + case STIC_MCR + MOB6: + case STIC_MCR + MOB7: // a MOB's own collision bit is *always* zero, even if a // one is poked into it - data &= ~(1 << (offset & (STIC_MOBS - 1))); + data &= ~(1 << (offset & (MOBS - 1))); break; // Display enable case STIC_DER: @@ -921,11 +1288,11 @@ WRITE16_MEMBER( stic_device::write ) m_color_stack_mode = 0; break; // Color Stack - case STIC_CSR + STIC_CSR0: - case STIC_CSR + STIC_CSR1: - case STIC_CSR + STIC_CSR2: - case STIC_CSR + STIC_CSR3: - //logerror("Setting color_stack[%x] = %x (%x)\n", offset & (STIC_CSRS - 1),data & STIC_CSR_BG, space.device().safe_pc()); + case STIC_CSR + CSR0: + case STIC_CSR + CSR1: + case STIC_CSR + CSR2: + case STIC_CSR + CSR3: + //logerror("Setting color_stack[%x] = %x (%x)\n", offset & (CSRS - 1),data & STIC_CSR_BG, space.device().safe_pc()); break; // Border Color case STIC_BCR: diff --git a/src/mame/video/stic.h b/src/mame/video/stic.h index 14b1bf1999e..b09422591c1 100644 --- a/src/mame/video/stic.h +++ b/src/mame/video/stic.h @@ -6,20 +6,8 @@ * ****************************************************************************/ -#ifndef STIC_H_ -#define STIC_H_ - -// GROM/GRAM cards are 8x8 -#define STIC_CARD_WIDTH 8 -#define STIC_CARD_HEIGHT 8 - -// Intellivision resolution is 20x12 BACKTAB CARDs, minus the rightmost column, -// for an effective resolution of (19 * 8 + 1 * 7) x (12 * 8) == 159x96. -// -// MOB scanline height can be half of a card scanline height, so y-coordinates -// are scaled by 2. -#define STIC_X_SCALE 1 -#define STIC_Y_SCALE 2 +#ifndef MAME_VIDEO_STIC_H +#define MAME_VIDEO_STIC_H // the Intellivision emulation scales to match the output format at the last // step. The Intellivision keyboard component appears to be 320x96, but can @@ -30,425 +18,6 @@ #define INTVKBD_X_SCALE 2 #define INTVKBD_Y_SCALE INTV_Y_SCALE -// overscan sizes in intv pixels -// these values are approximate. -#define STIC_OVERSCAN_LEFT_WIDTH 13 -#define STIC_OVERSCAN_RIGHT_WIDTH 17 -#define STIC_OVERSCAN_TOP_HEIGHT 12 -#define STIC_OVERSCAN_BOTTOM_HEIGHT 12 - -//Timing constants based on Joe Zbiciak's documentation -#define STIC_CYCLES_PER_SCANLINE 57 -#define STIC_ROW_BUSRQ 110 // CPU paused during backtab row buffering -#define STIC_FRAME_BUSRQ 42 // CPU paused just after end of vblank and before first row fetch (approximate) -#define STIC_VBLANK_END 3790 -#define STIC_FIRST_FETCH 3933 - -/*** STIC registers *********************************************************/ - -// number of STIC registers -#define STIC_REGISTERS 0x33 - -// STIC MOBs (Moveable OBjects) -enum -{ - STIC_MOB0, - STIC_MOB1, - STIC_MOB2, - STIC_MOB3, - STIC_MOB4, - STIC_MOB5, - STIC_MOB6, - STIC_MOB7, - - STIC_MOBS -}; - -// STIC Color Stack -enum -{ - STIC_CSR0, - STIC_CSR1, - STIC_CSR2, - STIC_CSR3, - - STIC_CSRS -}; - -/**************************************************************************** - * * - * MXR 0000[..0007] MOB X REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+-+-+-+-----+---+---+--+--+--+--+--+--+--+--+ * - * | | | | | |XSIZE|VIS|COL|X7|X6|X5|X4|X3|X2|X1|X0| * - * +-+-+-+-+-+-----+---+---+--+--+--+--+--+--+--+--+ * - * * - * Xn x-position [0..255] * - * COL collision detection [1=enable] * - * VIS visibility [1=visible] * - * XSIZE double width [1=double] * - * * - **************************************************************************** - * * - * NOTES * - * * - * 1. If X=0, the sprite is not visible and does not register collisions. * - * 2. The horizontal handle is 8 pixels from the left of the sprite, * - * regardless of width. * - * * - ****************************************************************************/ -#define STIC_MXR 0x0000 - -#define STIC_MXR_XSIZE 0x0400 -#define STIC_MXR_VIS 0x0200 -#define STIC_MXR_COL 0x0100 -#define STIC_MXR_X 0x00FF - -/**************************************************************************** - * * - * MYR 0008[..000F] MOB Y REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+-+-+-----+-----+-----+-----+----+--+--+--+--+--+--+--+ * - * | | | | |YFLIP|XFLIP|YSIZE|YFULL|YRES|Y6|Y5|Y4|Y3|Y2|Y1|Y0| * - * +-+-+-+-+-----+-----+-----+-----+----+--+--+--+--+--+--+--+ * - * * - * Yn y-position [0..127] * - * YRES y-resolution [0=8 scanlines,1=16 scanlines] * - * YFULL double scanline height [1=double] * - * YSIZE quadruple scanline height [1=quadruple] * - * XFLIP horizontally flip image [1=flip] * - * YFLIP vertically flip image [1=flip] * - * * - **************************************************************************** - * * - * NOTES * - * * - * 1. A sprite with YRES=1 will display two cards. * - * 2. A sprite with YFULL=0 and YSIZE=0 will have scanlines half the * - * height of a background card. * - * 3, The minimum size of a sprite is 8x8 (XSIZE=YRES=YSIZE=YFULL=0). * - * 4. The maximum size of a sprite is 16x128 (XSIZE=YRES=YSIZE=YFULL=1). * - * 5. The Y-position is measured in double height scanlines. * - * 6. The vertical handle is 8 double height scanlines from the top of the * - * sprite, regardless of height. * - * * - ****************************************************************************/ -#define STIC_MYR 0x0008 - -#define STIC_MYR_YFLIP 0x0800 -#define STIC_MYR_XFLIP 0x0400 -#define STIC_MYR_YSIZE 0x0200 -#define STIC_MYR_YFULL 0x0100 -#define STIC_MYR_YRES 0x0080 -#define STIC_MYR_Y 0x007F - -/**************************************************************************** - * * - * SAR 0010[..0017] MOB ATTRIBUTE REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+---+---+---+-+-+--+--+--+--+--+--+---+---+---+ * - * | | |PRI|FG3|SEL| | |C5|C4|C3|C2|C1|C0|FG2|FG1|FG0| * - * +-+-+---+---+---+-+-+--+--+--+--+--+--+---+---+---+ * - * * - * FGn foreground color [0..15] * - * Cn card # [0..63] * - * SEL card memory select [0=GROM, 1=GRAM] * - * PRI sprite priority [1=behind set background bit] * - * * - ****************************************************************************/ -#define STIC_MAR 0x0010 - -#define STIC_MAR_PRI 0x2000 -#define STIC_MAR_FG3 0x1000 -#define STIC_MAR_SEL 0x0800 -#define STIC_MAR_C 0x07F8 -#define STIC_MAR_FG20 0x0007 - -/**************************************************************************** - * * - * SCR 0018[..001F] MOB COLLISION REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+-+-+-+-+----+----+----+----+----+----+----+----+----+----+ * - * | | | | | | |BRDR|BKGD|SPR7|SPR6|SPR5|SPR4|SPR3|SPR2|SPR1|SPR0| * - * +-+-+-+-+-+-+----+----+----+----+----+----+----+----+----+----+ * - * * - * SPRn 1=collision with sprite #n * - * BKGD 1=collision with set background bit * - * BRDR 1=collision with screen border * - * * - **************************************************************************** - * * - * NOTES * - * * - * 1. All collisions are latched. Successive reads read from the latch. * - * A write will reset the latch. * - * 2. Sprites with VIS=0 register collisions. * - * 3. Sprites with X=0 do not register collisions. * - * 4. Two overlapping sprites with different priorities, one completely * - * hidden behind the background, still register a collision. * - * * - ****************************************************************************/ -#define STIC_MCR 0x0018 - -#define STIC_MCR_BRDR 0x0200 -#define STIC_MCR_BKGD 0x0100 -#define STIC_MCR_SPR7 0x0080 -#define STIC_MCR_SPR6 0x0040 -#define STIC_MCR_SPR5 0x0020 -#define STIC_MCR_SPR4 0x0010 -#define STIC_MCR_SPR3 0x0008 -#define STIC_MCR_SPR2 0x0004 -#define STIC_MCR_SPR1 0x0002 -#define STIC_MCR_SPR0 0x0001 - -/**************************************************************************** - * * - * DER 0021 DISPLAY ENABLE REGISTER W * - * * - * (MSB) (LSB) * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * - * | | | | | | | | | | | | | | | | | * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * - * * - **************************************************************************** - * * - * NOTES * - * * - * 1. Any write during VBLANK enables STIC output. * - * * - ****************************************************************************/ -#define STIC_DER 0x0020 - -/**************************************************************************** - * * - * GMR 0021 GRAPHICS MODE REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * - * | | | | | | | | | | | | | | | | | * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * - * * - **************************************************************************** - * * - * NOTES * - * * - * 1. Any write during VBLANK enables FOREGROUND/BACKGROUND mode. * - * 2. Any read during VBLANK enables COLOR STACK/COLORED SQUARES mode. * - * * - ****************************************************************************/ -#define STIC_GMR 0x0021 - -/**************************************************************************** - * * - * CSR 0028 COLOR STACK REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+ * - * | | | | | | | | | | | | |BG3|BG2|BG1|BG0| * - * +-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+ * - * * - * BGn background color [0..15] * - * * - ****************************************************************************/ -#define STIC_CSR 0x0028 - -#define STIC_CSR_BG 0x000F - -/**************************************************************************** - * * - * BCR 002C BORDER COLOR REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+ * - * | | | | | | | | | | | | |BC3|BC2|BC1|BC0| * - * +-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+ * - * * - * BCn border color [0..15] * - * * - **************************************************************************** - * * - * NOTES * - * * - * 1. Affects overscan, and column and row blockouts. * - * * - ****************************************************************************/ -#define STIC_BCR 0x002C - -#define STIC_BCR_BC 0x000F - -/**************************************************************************** - * * - * HDR 0030 HORIZONTAL DELAY REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+----+----+----+ * - * | | | | | | | | | | | | | |DEL2|DEL1|DEL0| * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+----+----+----+ * - * * - * DELn horizontal delay [0..7] * - * * - **************************************************************************** - * * - * NOTES * - * * - * 1. Affects both BACKTAB and MOBs. * - * * - ****************************************************************************/ -#define STIC_HDR 0x0030 - -#define STIC_HDR_DEL 0x0007 - -/**************************************************************************** - * * - * STIC_VDR 0030 VERTICAL DELAY REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+----+----+----+ * - * | | | | | | | | | | | | | |DEL2|DEL1|DEL0| * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+----+----+----+ * - * * - * DELn vertical delay [0..7] * - * * - **************************************************************************** - * * - * NOTES * - * * - * 1. Affects both BACKTAB and MOBs. * - * * - ****************************************************************************/ -#define STIC_VDR 0x0031 - -#define STIC_VDR_DEL 0x0007 - -/**************************************************************************** - * * - * STIC_CBR 0032 CARD BLOCKOUT REGISTER RW * - * * - * (MSB) (LSB) * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+---+---+ * - * | | | | | | | | | | | | | | |ROW|COL| * - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+---+---+ * - * * - * COL blockout first card column [1=blockout] * - * ROW blockout first card row [1=blockout] * - * * - **************************************************************************** - * * - * NOTES * - * * - * 1. Generally used in conjunction with HDR and VDR registers, to achieve * - * smooth scrolling. * - * * - ****************************************************************************/ -#define STIC_CBR 0x0032 - -#define STIC_CBR_ROW 0x0002 -#define STIC_CBR_COL 0x0001 - -/*** BACKTAB ****************************************************************/ - -// BACKTAB is made up of 20x12 cards -// (the first 19 columns are 8x8, the 20th column is 7x8) -#define STIC_BACKTAB_WIDTH 20 -#define STIC_BACKTAB_HEIGHT 12 - -/**************************************************************************** - * * - * FOREGROUND/BACKGROUND MODE * - * * - * (MSB) (LSB) * - * +-+-+---+---+---+---+---+--+--+--+--+--+--+---+---+---+ * - * | | |BG2|BG3|SEL|BG1|BG0|C5|C4|C3|C2|C1|C0|FG2|FG1|FG0| * - * +-+-+---+---+---+---+---+--+--+--+--+--+--+---+---+---+ * - * * - * FGn foreground color [0..7] * - * Cn card # [0..63] * - * SEL card memory select [0=GROM, 1=GRAM] * - * BGn background color [0..15] * - * * - ****************************************************************************/ -#define STIC_FBM_BG2 0x2000 -#define STIC_FBM_BG310 0x1600 -#define STIC_FBM_SEL 0x0800 -#define STIC_FBM_C 0x01F8 -#define STIC_FBM_FG 0x0007 - -/**************************************************************************** - * * - * COLOR STACK MODE * - * * - * (MSB) (LSB) * - * +-+-+---+---+---+--+--+--+--+--+--+--+--+---+---+---+ * - * | | |ADV|FG3|SEL|C7|C6|C5|C4|C3|C2|C1|C0|FG2|FG1|FG0| * - * +-+-+---+---+---+--+--+--+--+--+--+--+--+---+---+---+ * - * * - * FGn foreground color [0..15] * - * Cn card # [GROM=0..212, GRAM=0..63] * - * SEL card memory select [0=GROM, 1=GRAM] * - * ADV advance color stack index [1=advance] * - * * - **************************************************************************** - * * - * NOTES: * - * * - * 1. When FG3=1 and SEL=0, COLORED SQUARES MODE is enabled. * - * 2. When SEL=1, C7 and C6 can be used as user-defined flags. * - * * - ****************************************************************************/ -#define STIC_CSTM_ADV 0x2000 -#define STIC_CSTM_FG3 0x1000 -#define STIC_CSTM_SEL 0x0800 -#define STIC_CSTM_C7 0x0400 -#define STIC_CSTM_C6 0x0200 -#define STIC_CSTM_C50 0x01F8 -#define STIC_CSTM_FG20 0x0007 - -#define STIC_CSTM_C (STIC_CSTM_C7|STIC_CSTM_C6|STIC_CSTM_C50) - -/**************************************************************************** - * * - * COLORED SQUARES MODE * - * * - * (MSB) (LSB) * - * +-+-+--+-+-+--+--+--+--+--+--+--+--+--+--+--+ * - * | | |D2|1|0|D1|D0|C2|C1|C0|B2|B1|B0|A2|A1|A0| * - * +-+-+--+-+-+--+--+--+--+--+--+--+--+--+--+--+ * - * * - * An color a [0..7] * - * Bn color b [0..7] * - * Cn color c [0..7] * - * Dn color d [0..7] * - * * - **************************************************************************** - * * - * NOTES: * - * * - * 1. Each color corresponds to one of the following 4 x 4 squares: * - * * - * +---+---+ * - * | a | b | * - * +---+---+ * - * | c | d | * - * +---+---+ * - * * - * 2. When color 7 is specified, the color is taken from the color stack. * - * * - ****************************************************************************/ -#define STIC_CSQM_D2 0x2000 -#define STIC_CSQM_D10 0x0600 -#define STIC_CSQM_C 0x01C0 -#define STIC_CSQM_B 0x0038 -#define STIC_CSQM_A 0x0007 - -#define STIC_CSQM_WIDTH (STIC_CARD_WIDTH / 2) -#define STIC_CSQM_HEIGHT (STIC_CARD_HEIGHT / 2) - - - struct intv_sprite_type { int visible; @@ -475,6 +44,42 @@ struct intv_sprite_type class stic_device : public device_t { public: + // GROM/GRAM cards are 8x8 + static constexpr unsigned CARD_WIDTH = 8; + static constexpr unsigned CARD_HEIGHT = 8; + + // Intellivision resolution is 20x12 BACKTAB CARDs, minus the rightmost column, + // for an effective resolution of (19 * 8 + 1 * 7) x (12 * 8) == 159x96. + // + // MOB scanline height can be half of a card scanline height, so y-coordinates + // are scaled by 2. + static constexpr unsigned X_SCALE = 1; + static constexpr unsigned Y_SCALE = 2; + + // overscan sizes in intv pixels + // these values are approximate. + static constexpr unsigned OVERSCAN_LEFT_WIDTH = 13; + static constexpr unsigned OVERSCAN_RIGHT_WIDTH = 17; + static constexpr unsigned OVERSCAN_TOP_HEIGHT = 12; + static constexpr unsigned OVERSCAN_BOTTOM_HEIGHT = 12; + + //Timing constants based on Joe Zbiciak's documentation + static constexpr int CYCLES_PER_SCANLINE = 57; + static constexpr int ROW_BUSRQ = 110; // CPU paused during backtab row buffering + static constexpr int FRAME_BUSRQ = 42; // CPU paused just after end of vblank and before first row fetch (approximate) + static constexpr int VBLANK_END = 3790; + static constexpr int FIRST_FETCH = 3933; + + /*** BACKTAB ****************************************************************/ + + // BACKTAB is made up of 20x12 cards + // (the first 19 columns are 8x8, the 20th column is 7x8) + static constexpr unsigned BACKTAB_WIDTH = 20; + static constexpr unsigned BACKTAB_HEIGHT = 12; + + static constexpr unsigned SCREEN_WIDTH = (OVERSCAN_LEFT_WIDTH + (BACKTAB_WIDTH * CARD_WIDTH) - 1 + OVERSCAN_RIGHT_WIDTH) * X_SCALE; + static constexpr unsigned SCREEN_HEIGHT = (OVERSCAN_TOP_HEIGHT + (BACKTAB_HEIGHT * CARD_HEIGHT) + OVERSCAN_BOTTOM_HEIGHT) * Y_SCALE; + // construction/destruction stic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~stic_device(); @@ -500,6 +105,37 @@ public: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); private: + /*** STIC registers *********************************************************/ + + // number of STIC registers + static constexpr unsigned STIC_REGISTERS = 0x33; + + // STIC MOBs (Moveable OBjects) + enum + { + MOB0, + MOB1, + MOB2, + MOB3, + MOB4, + MOB5, + MOB6, + MOB7, + + MOBS + }; + + // STIC Color Stack + enum + { + CSR0, + CSR1, + CSR2, + CSR3, + + CSRS + }; + required_region_ptr m_grom; @@ -524,9 +160,9 @@ private: bitmap_ind16 m_bitmap; - intv_sprite_type m_sprite[STIC_MOBS]; - uint8_t m_sprite_buffers[STIC_MOBS][STIC_CARD_WIDTH * 2][STIC_CARD_HEIGHT * 4 * 2 * 2]; - uint16_t m_backtab_buffer[STIC_BACKTAB_HEIGHT][STIC_BACKTAB_WIDTH]; + intv_sprite_type m_sprite[MOBS]; + uint8_t m_sprite_buffers[MOBS][CARD_WIDTH * 2][CARD_HEIGHT * 4 * 2 * 2]; + uint16_t m_backtab_buffer[BACKTAB_HEIGHT][BACKTAB_WIDTH]; int m_color_stack_mode; int m_stic_registers[STIC_REGISTERS]; int m_color_stack_offset; @@ -545,7 +181,7 @@ private: }; // device type definition -extern const device_type STIC; +DECLARE_DEVICE_TYPE(STIC, stic_device) /*************************************************************************** @@ -556,4 +192,4 @@ extern const device_type STIC; MCFG_DEVICE_ADD(_tag, STIC, 0) -#endif /* STIC_H_ */ +#endif // MAME_VIDEO_STIC_H diff --git a/src/mame/video/super80.cpp b/src/mame/video/super80.cpp index 6fbd782fc1f..a1247705b67 100644 --- a/src/mame/video/super80.cpp +++ b/src/mame/video/super80.cpp @@ -54,7 +54,7 @@ PALETTE_INIT_MEMBER( super80_state, super80m ) -void super80_state::screen_eof_super80m(screen_device &screen, bool state) +WRITE_LINE_MEMBER(super80_state::screen_vblank_super80m) { // rising edge if (state) diff --git a/src/mame/video/suprslam.cpp b/src/mame/video/suprslam.cpp index 92214f0e1c6..8797ef12594 100644 --- a/src/mame/video/suprslam.cpp +++ b/src/mame/video/suprslam.cpp @@ -60,19 +60,25 @@ void suprslam_state::video_start() m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(suprslam_state::get_suprslam_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); m_screen_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(suprslam_state::get_suprslam_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_spr_ctrl = 0; m_screen_tilemap->set_transparent_pen(15); } +WRITE8_MEMBER(suprslam_state::spr_ctrl_w) +{ + m_spr_ctrl = data; +} + uint32_t suprslam_state::screen_update_suprslam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_screen_tilemap->set_scrollx(0, m_screen_vregs[0x04/2] ); bitmap.fill(m_palette->black_pen(), cliprect); m_k053936->zoom_draw(screen, bitmap, cliprect, m_bg_tilemap, 0, 0, 1); - if(!(m_spr_ctrl[0] & 8)) + if(!(m_spr_ctrl & 8)) m_spr->draw_sprites(m_spriteram, m_spriteram.bytes(), screen, bitmap, cliprect); m_screen_tilemap->draw(screen, bitmap, cliprect, 0, 0); - if(m_spr_ctrl[0] & 8) + if(m_spr_ctrl & 8) m_spr->draw_sprites(m_spriteram, m_spriteram.bytes(), screen, bitmap, cliprect); return 0; } diff --git a/src/mame/video/surpratk.cpp b/src/mame/video/surpratk.cpp index 5484d1030d0..a88c327d468 100644 --- a/src/mame/video/surpratk.cpp +++ b/src/mame/video/surpratk.cpp @@ -49,20 +49,20 @@ uint32_t surpratk_state::screen_update_surpratk(screen_device &screen, bitmap_in { int layer[3], bg_colorbase; - bg_colorbase = m_k053251->get_palette_index(K053251_CI0); - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI2); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI4); - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI3); + bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4); + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3); m_k052109->tilemap_update(); layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI4); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4); layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI3); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3); konami_sortlayers3(layer, m_layerpri); diff --git a/src/mame/video/taito_b.cpp b/src/mame/video/taito_b.cpp index 5935e46ba21..49d92ddf513 100644 --- a/src/mame/video/taito_b.cpp +++ b/src/mame/video/taito_b.cpp @@ -173,7 +173,7 @@ void taitob_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect if (color & 0x3fc0) { logerror("sprite color (taitob)=%4x ofs=%4x\n", color, offs); - color = rand() & 0x3f; + color = machine().rand() & 0x3f; } #endif color = (color & 0x3f) * 16; @@ -481,7 +481,7 @@ uint32_t taitob_state::screen_update_realpunc(screen_device &screen, bitmap_rgb3 -void taitob_state::screen_eof_taitob(screen_device &screen, bool state) +WRITE_LINE_MEMBER(taitob_state::screen_vblank_taitob) { // rising edge if (state) @@ -491,7 +491,7 @@ void taitob_state::screen_eof_taitob(screen_device &screen, bool state) uint8_t framebuffer_page = m_tc0180vcu->get_fb_page(space, 0); if (~video_control & 0x01) - m_framebuffer[framebuffer_page]->fill(0, screen.visible_area()); + m_framebuffer[framebuffer_page]->fill(0, m_screen->visible_area()); if (~video_control & 0x80) { @@ -499,6 +499,6 @@ void taitob_state::screen_eof_taitob(screen_device &screen, bool state) m_tc0180vcu->set_fb_page(space, 0, framebuffer_page); } - draw_sprites(*m_framebuffer[framebuffer_page], screen.visible_area()); + draw_sprites(*m_framebuffer[framebuffer_page], m_screen->visible_area()); } } diff --git a/src/mame/video/taito_f2.cpp b/src/mame/video/taito_f2.cpp index 89f039d2ded..eb6ac55efcf 100644 --- a/src/mame/video/taito_f2.cpp +++ b/src/mame/video/taito_f2.cpp @@ -871,7 +871,7 @@ void taitof2_state::taitof2_update_sprites_active_area( ) } -void taitof2_state::screen_eof_taitof2_no_buffer(screen_device &screen, bool state) +WRITE_LINE_MEMBER(taitof2_state::screen_vblank_no_buffer) { // rising edge if (state) @@ -882,7 +882,7 @@ void taitof2_state::screen_eof_taitof2_no_buffer(screen_device &screen, bool sta } } -void taitof2_state::screen_eof_taitof2_full_buffer_delayed(screen_device &screen, bool state) +WRITE_LINE_MEMBER(taitof2_state::screen_vblank_full_buffer_delayed) { // rising edge if (state) @@ -900,7 +900,7 @@ void taitof2_state::screen_eof_taitof2_full_buffer_delayed(screen_device &screen } } -void taitof2_state::screen_eof_taitof2_partial_buffer_delayed(screen_device &screen, bool state) +WRITE_LINE_MEMBER(taitof2_state::screen_vblank_partial_buffer_delayed) { // rising edge if (state) @@ -918,7 +918,7 @@ void taitof2_state::screen_eof_taitof2_partial_buffer_delayed(screen_device &scr } } -void taitof2_state::screen_eof_taitof2_partial_buffer_delayed_thundfox(screen_device &screen, bool state) +WRITE_LINE_MEMBER(taitof2_state::screen_vblank_partial_buffer_delayed_thundfox) { // rising edge if (state) @@ -940,7 +940,7 @@ void taitof2_state::screen_eof_taitof2_partial_buffer_delayed_thundfox(screen_de } } -void taitof2_state::screen_eof_taitof2_partial_buffer_delayed_qzchikyu(screen_device &screen, bool state) +WRITE_LINE_MEMBER(taitof2_state::screen_vblank_partial_buffer_delayed_qzchikyu) { // rising edge if (state) diff --git a/src/mame/video/taito_f3.cpp b/src/mame/video/taito_f3.cpp index b2028d09e98..184079ee0af 100644 --- a/src/mame/video/taito_f3.cpp +++ b/src/mame/video/taito_f3.cpp @@ -506,7 +506,7 @@ TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info_pixel) /******************************************************************************/ -void taito_f3_state::screen_eof_f3(screen_device &screen, bool state) +WRITE_LINE_MEMBER(taito_f3_state::screen_vblank_f3) { // rising edge if (state) diff --git a/src/mame/video/taito_l.cpp b/src/mame/video/taito_l.cpp index d275c363fc6..75fba56f811 100644 --- a/src/mame/video/taito_l.cpp +++ b/src/mame/video/taito_l.cpp @@ -309,7 +309,7 @@ uint32_t taitol_state::screen_update_taitol(screen_device &screen, bitmap_ind16 -void taitol_state::screen_eof_taitol(screen_device &screen, bool state) +WRITE_LINE_MEMBER(taitol_state::screen_vblank_taitol) { // rising edge if (state) diff --git a/src/mame/video/tank8.cpp b/src/mame/video/tank8.cpp index b0f292c8ac9..d38ca8dbbf4 100644 --- a/src/mame/video/tank8.cpp +++ b/src/mame/video/tank8.cpp @@ -193,7 +193,7 @@ uint32_t tank8_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, } -void tank8_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(tank8_state::screen_vblank) { // on falling edge if (!state) @@ -202,7 +202,7 @@ void tank8_state::screen_eof(screen_device &screen, bool state) int y; const rectangle &visarea = m_screen->visible_area(); - m_tilemap->draw(screen, m_helper1, visarea, 0, 0); + m_tilemap->draw(*m_screen, m_helper1, visarea, 0, 0); m_helper2.fill(8, visarea); m_helper3.fill(8, visarea); @@ -277,7 +277,7 @@ void tank8_state::screen_eof(screen_device &screen, bool state) index |= 0x80; /* collision on right side */ } - m_collision_timer->adjust(screen.time_until_pos(y, x), index); + m_collision_timer->adjust(m_screen->time_until_pos(y, x), index); _state = 1; } diff --git a/src/mame/video/tankbust.cpp b/src/mame/video/tankbust.cpp index 42e8fdc5531..e179c067f6a 100644 --- a/src/mame/video/tankbust.cpp +++ b/src/mame/video/tankbust.cpp @@ -41,11 +41,11 @@ TILE_GET_INFO_MEMBER(tankbust_state::get_bg_tile_info) #if 0 if (attr&0x08) //priority bg/sprites (1 = this bg tile on top of sprites) { - color = ((int)rand()) & 0x0f; + color = ((int)machine().rand()) & 0x0f; } if (attr&0x80) //all the roofs of all buildings have this bit set. What's this ??? { - color = ((int)rand()) & 0x0f; + color = ((int)machine().rand()) & 0x0f; } #endif @@ -191,7 +191,7 @@ void tankbust_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec #if 0 if ((m_spriteram[offs+2] & 0x02)) { - code = ((int)rand()) & 63; + code = ((int)machine().rand()) & 63; } #endif diff --git a/src/mame/video/taotaido.cpp b/src/mame/video/taotaido.cpp index 0bacd6ec616..53189033c2a 100644 --- a/src/mame/video/taotaido.cpp +++ b/src/mame/video/taotaido.cpp @@ -137,7 +137,7 @@ uint32_t taotaido_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -void taotaido_state::screen_eof(screen_device &screen, bool state) +WRITE_LINE_MEMBER(taotaido_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/tatsumi.cpp b/src/mame/video/tatsumi.cpp index 20df26758dd..f1c117bdffc 100644 --- a/src/mame/video/tatsumi.cpp +++ b/src/mame/video/tatsumi.cpp @@ -493,7 +493,7 @@ static void draw_sprites(running_machine &machine, _BitmapClass &bitmap, const r index = spriteram16[offs]; // if (spriteram16[offs+1]&0x7) -// color=rand()%0xff; +// color=machine().rand()%0xff; /* End of sprite list marker */ if (index == 0xffff || spriteram16[offs + 4] == 0xffff) // todo diff --git a/src/mame/video/tc0080vco.cpp b/src/mame/video/tc0080vco.cpp index 774ae2a44fb..a0e4a622081 100644 --- a/src/mame/video/tc0080vco.cpp +++ b/src/mame/video/tc0080vco.cpp @@ -78,10 +78,10 @@ this seems to be the only zoom feature actually used in the games. *****************************************************************************/ -const device_type TC0080VCO = device_creator; +DEFINE_DEVICE_TYPE(TC0080VCO, tc0080vco_device, "tc0080vco", "Taito TC0080VCO") tc0080vco_device::tc0080vco_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0080VCO, "Taito TC0080VCO", tag, owner, clock, "tc0080vco", __FILE__), + : device_t(mconfig, TC0080VCO, tag, owner, clock), m_ram(nullptr), m_bg0_ram_0(nullptr), m_bg0_ram_1(nullptr), diff --git a/src/mame/video/tc0080vco.h b/src/mame/video/tc0080vco.h index 62007085527..52670b67efc 100644 --- a/src/mame/video/tc0080vco.h +++ b/src/mame/video/tc0080vco.h @@ -1,13 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef __TC0080VCO_H__ -#define __TC0080VCO_H__ +#ifndef MAME_VIDEO_TC0080VCO_H +#define MAME_VIDEO_TC0080VCO_H + +#pragma once class tc0080vco_device : public device_t { public: tc0080vco_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0080vco_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -82,7 +83,7 @@ private: void bg1_tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, uint32_t priority ); }; -extern const device_type TC0080VCO; +DECLARE_DEVICE_TYPE(TC0080VCO, tc0080vco_device) #define MCFG_TC0080VCO_GFX_REGION(_region) \ tc0080vco_device::set_gfx_region(*device, _region); @@ -99,4 +100,4 @@ extern const device_type TC0080VCO; #define MCFG_TC0080VCO_GFXDECODE(_gfxtag) \ tc0080vco_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); -#endif +#endif // MAME_VIDEO_TC0080VCO_H diff --git a/src/mame/video/tc0100scn.cpp b/src/mame/video/tc0100scn.cpp index 7489bee5b9a..a919f4379bf 100644 --- a/src/mame/video/tc0100scn.cpp +++ b/src/mame/video/tc0100scn.cpp @@ -147,10 +147,10 @@ the wide tilemap mode) #define TC0100SCN_RAM_SIZE 0x14000 /* enough for double-width tilemaps */ #define TC0100SCN_TOTAL_CHARS 256 -const device_type TC0100SCN = device_creator; +DEFINE_DEVICE_TYPE(TC0100SCN, tc0100scn_device, "tc0100scn", "Taito TC0100SCN") tc0100scn_device::tc0100scn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0100SCN, "Taito TC0100SCN", tag, owner, clock, "tc0100scn", __FILE__), + : device_t(mconfig, TC0100SCN, tag, owner, clock), m_ram(nullptr), m_bg_ram(nullptr), m_fg_ram(nullptr), diff --git a/src/mame/video/tc0100scn.h b/src/mame/video/tc0100scn.h index 62cac593657..0b98a5b1b1d 100644 --- a/src/mame/video/tc0100scn.h +++ b/src/mame/video/tc0100scn.h @@ -1,13 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef __TC0100SCN_H__ -#define __TC0100SCN_H__ +#ifndef MAME_VIDEO_TC0100SCN_H +#define MAME_VIDEO_TC0100SCN_H + +#pragma once class tc0100scn_device : public device_t { public: tc0100scn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0100scn_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -35,7 +36,7 @@ public: dev.m_flip_text_yoffs = y_offset; } - #define TC0100SCN_SINGLE_VDU 1024 + static constexpr unsigned SINGLE_VDU = 1024; // for set_multiscr_xoffs /* Function to set separate color banks for the three tilemapped layers. To change from the default (0,0,0) use after calling TC0100SCN_vh_start */ @@ -118,7 +119,7 @@ private: void restore_scroll(); }; -extern const device_type TC0100SCN; +DECLARE_DEVICE_TYPE(TC0100SCN, tc0100scn_device) #define MCFG_TC0100SCN_GFX_REGION(_region) \ @@ -148,4 +149,4 @@ extern const device_type TC0100SCN; #define MCFG_TC0100SCN_PALETTE(_palette_tag) \ tc0100scn_device::static_set_palette_tag(*device, "^" _palette_tag); -#endif +#endif // MAME_VIDEO_TC0100SCN_H diff --git a/src/mame/video/tc0110pcr.cpp b/src/mame/video/tc0110pcr.cpp index f1e1dab12c4..a4ddb188236 100644 --- a/src/mame/video/tc0110pcr.cpp +++ b/src/mame/video/tc0110pcr.cpp @@ -18,10 +18,10 @@ The data bus is 16 bits wide. #define TC0110PCR_RAM_SIZE 0x2000 -const device_type TC0110PCR = device_creator; +DEFINE_DEVICE_TYPE(TC0110PCR, tc0110pcr_device, "tc0110pcr", "Taito TC0110PCR") tc0110pcr_device::tc0110pcr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0110PCR, "Taito TC0110PCR", tag, owner, clock, "tc0110pcr", __FILE__) + : device_t(mconfig, TC0110PCR, tag, owner, clock) , m_ram(nullptr) , m_type(0) , m_addr(0) diff --git a/src/mame/video/tc0110pcr.h b/src/mame/video/tc0110pcr.h index 3f650d0a72b..dae0f99626c 100644 --- a/src/mame/video/tc0110pcr.h +++ b/src/mame/video/tc0110pcr.h @@ -1,14 +1,15 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef _TC0110PCR_H_ -#define _TC0110PCR_H_ +#ifndef MAME_VIDEO_TC0110PCR_H +#define MAME_VIDEO_TC0110PCR_H + +#pragma once class tc0110pcr_device : public device_t { public: tc0110pcr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0110pcr_device() {} DECLARE_READ16_MEMBER( word_r ); DECLARE_WRITE16_MEMBER( word_w ); /* color index goes up in step of 2 */ @@ -32,11 +33,11 @@ private: required_device m_palette; }; -extern const device_type TC0110PCR; +DECLARE_DEVICE_TYPE(TC0110PCR, tc0110pcr_device) #define MCFG_TC0110PCR_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, TC0110PCR, 0) #define MCFG_TC0110PCR_PALETTE(_palette_tag) \ tc0110pcr_device::static_set_palette_tag(*device, "^" _palette_tag); -#endif +#endif // MAME_VIDEO_TC0110PCR_H diff --git a/src/mame/video/tc0150rod.cpp b/src/mame/video/tc0150rod.cpp index c85d6cf8ede..5e9fc0fca9b 100644 --- a/src/mame/video/tc0150rod.cpp +++ b/src/mame/video/tc0150rod.cpp @@ -12,11 +12,11 @@ Road generator. Two roads allow for forking. Gfx data fetched from ROM. Refer to #define TC0150ROD_RAM_SIZE 0x2000 -const device_type TC0150ROD = device_creator; +DEFINE_DEVICE_TYPE(TC0150ROD, tc0150rod_device, "tc0150rod", "Taito TC0150ROD") tc0150rod_device::tc0150rod_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0150ROD, "Taito TC0150ROD", tag, owner, clock, "tc0150rod", __FILE__), - m_roadgfx(*this, DEVICE_SELF, 0x40000) + : device_t(mconfig, TC0150ROD, tag, owner, clock) + , m_roadgfx(*this, DEVICE_SELF, 0x40000) { } diff --git a/src/mame/video/tc0150rod.h b/src/mame/video/tc0150rod.h index 82677caf929..403bdb0a626 100644 --- a/src/mame/video/tc0150rod.h +++ b/src/mame/video/tc0150rod.h @@ -1,13 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef __TC0150ROD_H__ -#define __TC0150ROD_H__ +#ifndef MAME_VIDEO_TC0150ROD_H +#define MAME_VIDEO_TC0150ROD_H + +#pragma once class tc0150rod_device : public device_t { public: tc0150rod_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0150rod_device() {} DECLARE_READ16_MEMBER( word_r ); DECLARE_WRITE16_MEMBER( word_w ); @@ -23,7 +24,7 @@ private: required_region_ptr m_roadgfx; }; -extern const device_type TC0150ROD; +DECLARE_DEVICE_TYPE(TC0150ROD, tc0150rod_device) -#endif +#endif // MAME_VIDEO_TC0150ROD_H diff --git a/src/mame/video/tc0180vcu.cpp b/src/mame/video/tc0180vcu.cpp index 19cf6694bee..e3a8aacac71 100644 --- a/src/mame/video/tc0180vcu.cpp +++ b/src/mame/video/tc0180vcu.cpp @@ -9,10 +9,10 @@ #define TC0180VCU_SCROLLRAM_SIZE 0x0800 -const device_type TC0180VCU = device_creator; +DEFINE_DEVICE_TYPE(TC0180VCU, tc0180vcu_device, "tc0180vcu", "Taito TC0180VCU") tc0180vcu_device::tc0180vcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0180VCU, "Taito TC0180VCU", tag, owner, clock, "tc0180vcu", __FILE__), + : device_t(mconfig, TC0180VCU, tag, owner, clock), m_ram(nullptr), //m_scrollram(nullptr), //m_bg_rambank(0), diff --git a/src/mame/video/tc0180vcu.h b/src/mame/video/tc0180vcu.h index ae1b25dc51f..7d2a6800f19 100644 --- a/src/mame/video/tc0180vcu.h +++ b/src/mame/video/tc0180vcu.h @@ -1,13 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef __TC0180VCU_H__ -#define __TC0180VCU_H__ +#ifndef MAME_VIDEO_TC0180VCU_H +#define MAME_VIDEO_TC0180VCU_H + +#pragma once class tc0180vcu_device : public device_t { public: tc0180vcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0180vcu_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -57,7 +58,7 @@ private: void video_control( uint8_t data ); }; -extern const device_type TC0180VCU; +DECLARE_DEVICE_TYPE(TC0180VCU, tc0180vcu_device) #define MCFG_TC0180VCU_BG_COLORBASE(_color) \ tc0180vcu_device::set_bg_colorbase(*device, _color); @@ -71,4 +72,4 @@ extern const device_type TC0180VCU; #define MCFG_TC0180VCU_GFXDECODE(_gfxtag) \ tc0180vcu_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); -#endif +#endif // MAME_VIDEO_TC0180VCU_H diff --git a/src/mame/video/tc0280grd.cpp b/src/mame/video/tc0280grd.cpp index 86504d584b2..35f1920c4c5 100644 --- a/src/mame/video/tc0280grd.cpp +++ b/src/mame/video/tc0280grd.cpp @@ -25,10 +25,10 @@ control registers: #define TC0280GRD_RAM_SIZE 0x2000 -const device_type TC0280GRD = device_creator; +DEFINE_DEVICE_TYPE(TC0280GRD, tc0280grd_device, "tc0280grd", "Taito TC0280GRD / TC0430GRW") tc0280grd_device::tc0280grd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0280GRD, "Taito TC0280GRD & TC0430GRW", tag, owner, clock, "tc0280grd", __FILE__), + : device_t(mconfig, TC0280GRD, tag, owner, clock), m_ram(nullptr), //m_ctrl[8](0), m_base_color(0), diff --git a/src/mame/video/tc0280grd.h b/src/mame/video/tc0280grd.h index 912919726a2..93bd12eea06 100644 --- a/src/mame/video/tc0280grd.h +++ b/src/mame/video/tc0280grd.h @@ -1,13 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef __TC0280GRD_H__ -#define __TC0280GRD_H__ +#ifndef MAME_VIDEO_TC0280GRD_H +#define MAME_VIDEO_TC0280GRD_H + +#pragma once class tc0280grd_device : public device_t { public: tc0280grd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0280grd_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -45,7 +46,7 @@ private: void zoom_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffset, int yoffset, uint32_t priority, int xmultiply ); }; -extern const device_type TC0280GRD; +DECLARE_DEVICE_TYPE(TC0280GRD, tc0280grd_device) #define TC0430GRW TC0280GRD @@ -60,4 +61,5 @@ extern const device_type TC0280GRD; #define MCFG_TC0430GRW_GFXDECODE(_gfxtag) \ tc0280grd_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); -#endif + +#endif // MAME_VIDEO_TC0280GRD_H diff --git a/src/mame/video/tc0360pri.cpp b/src/mame/video/tc0360pri.cpp index beba1fc556a..71ca816aedc 100644 --- a/src/mame/video/tc0360pri.cpp +++ b/src/mame/video/tc0360pri.cpp @@ -43,10 +43,10 @@ each one of them can declare to have four different priority levels. #include "tc0360pri.h" -const device_type TC0360PRI = device_creator; +DEFINE_DEVICE_TYPE(TC0360PRI, tc0360pri_device, "tc0360pri", "Taito TC0360PRI") tc0360pri_device::tc0360pri_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0360PRI, "Taito TC0360PRI", tag, owner, clock, "tc0360pri", __FILE__) + : device_t(mconfig, TC0360PRI, tag, owner, clock) { } diff --git a/src/mame/video/tc0360pri.h b/src/mame/video/tc0360pri.h index d64eafb96b2..65fe0c7820c 100644 --- a/src/mame/video/tc0360pri.h +++ b/src/mame/video/tc0360pri.h @@ -1,13 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef _TC0360PRI_H_ -#define _TC0360PRI_H_ +#ifndef MAME_VIDEO_TC0360PRI_H +#define MAME_VIDEO_TC0360PRI_H + +#pragma once class tc0360pri_device : public device_t { public: tc0360pri_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0360pri_device() {} DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); @@ -22,9 +23,9 @@ private: uint8_t m_regs[16]; }; -extern const device_type TC0360PRI; +DECLARE_DEVICE_TYPE(TC0360PRI, tc0360pri_device) #define MCFG_TC0360PRI_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, TC0360PRI, 0) -#endif +#endif // MAME_VIDEO_TC0360PRI_H diff --git a/src/mame/video/tc0480scp.cpp b/src/mame/video/tc0480scp.cpp index 8a1aed0fae1..1ca4156d1b3 100644 --- a/src/mame/video/tc0480scp.cpp +++ b/src/mame/video/tc0480scp.cpp @@ -150,10 +150,10 @@ Control registers #define TC0480SCP_TOTAL_CHARS 256 -const device_type TC0480SCP = device_creator; +DEFINE_DEVICE_TYPE(TC0480SCP, tc0480scp_device, "tc0480scp", "Taito TC0480SCP") tc0480scp_device::tc0480scp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0480SCP, "Taito TC0480SCP", tag, owner, clock, "tc0480scp", __FILE__), + : device_t(mconfig, TC0480SCP, tag, owner, clock), m_tx_ram(nullptr), m_char_ram(nullptr), m_pri_reg(0), diff --git a/src/mame/video/tc0480scp.h b/src/mame/video/tc0480scp.h index 46ed5fdf63a..b63fd3442df 100644 --- a/src/mame/video/tc0480scp.h +++ b/src/mame/video/tc0480scp.h @@ -1,13 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -#ifndef __TC0480SCP_H__ -#define __TC0480SCP_H__ +#ifndef MAME_VIDEO_TC0480SCP_H +#define MAME_VIDEO_TC0480SCP_H + +#pragma once class tc0480scp_device : public device_t { public: tc0480scp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~tc0480scp_device() {} // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); @@ -110,7 +111,7 @@ private: void bg23_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, uint32_t priority ); }; -extern const device_type TC0480SCP; +DECLARE_DEVICE_TYPE(TC0480SCP, tc0480scp_device) #define MCFG_TC0480SCP_GFX_REGION(_region) \ @@ -134,4 +135,4 @@ extern const device_type TC0480SCP; #define MCFG_TC0480SCP_GFXDECODE(_gfxtag) \ tc0480scp_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); -#endif +#endif // MAME_VIDEO_TC0480SCP_H diff --git a/src/mame/video/tc0780fpa.cpp b/src/mame/video/tc0780fpa.cpp index 590a657ff15..32a34796395 100644 --- a/src/mame/video/tc0780fpa.cpp +++ b/src/mame/video/tc0780fpa.cpp @@ -390,11 +390,11 @@ void tc0780fpa_renderer::render(uint16_t *polygon_fifo, int length) } } -const device_type TC0780FPA = device_creator; +DEFINE_DEVICE_TYPE(TC0780FPA, tc0780fpa_device, "tc0780fpa", "TC0780FPA Polygon Renderer") tc0780fpa_device::tc0780fpa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TC0780FPA, "TC0780FPA Polygon Renderer", tag, owner, clock, "tc0780fpa", __FILE__), - device_video_interface(mconfig, *this) + : device_t(mconfig, TC0780FPA, tag, owner, clock) + , device_video_interface(mconfig, *this) { } diff --git a/src/mame/video/tc0780fpa.h b/src/mame/video/tc0780fpa.h index 7c947365571..a7d383434db 100644 --- a/src/mame/video/tc0780fpa.h +++ b/src/mame/video/tc0780fpa.h @@ -1,9 +1,10 @@ // license:LGPL-2.1+ // copyright-holders:Ville Linde, Angelo Salese, hap +#ifndef MAME_VIDEO_TC0780FPA_H +#define MAME_VIDEO_TC0780FPA_H + #pragma once -#ifndef __TC0780FPA_H__ -#define __TC0780FPA_H__ #include "video/poly.h" @@ -21,7 +22,6 @@ class tc0780fpa_renderer : public poly_manager; +DEFINE_DEVICE_TYPE(TECMO_MIXER, tecmo_mix_device, "tecmo_mix", "Tecmo 16-bit Mixer") tecmo_mix_device::tecmo_mix_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TECMO_MIXER, "Tecmo 16-bit Mixer", tag, owner, clock, "tecmo_mix", __FILE__), + : device_t(mconfig, TECMO_MIXER, tag, owner, clock), device_video_interface(mconfig, *this), m_sprpri_shift(0), m_sprbln_shift(0), @@ -154,7 +154,7 @@ void tecmo_mix_device::mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap, { if (fgbln) { - dd[x] = rand(); + dd[x] = machine().rand(); } else { @@ -171,7 +171,7 @@ void tecmo_mix_device::mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap, { if (m_sprbln) { // sprite is blended with bgpen? - dd[x] = rand(); + dd[x] = machine().rand(); } else { @@ -230,7 +230,7 @@ void tecmo_mix_device::mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap, if (fgbln) { // blended sprite over blended fg pixel? - dd[x] = rand(); + dd[x] = machine().rand(); } else { @@ -242,13 +242,13 @@ void tecmo_mix_device::mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap, { // blended sprite over solid bg pixel dd[x] = sum_colors(paldata, bgpixel + m_bgblend_comp, sprpixel + m_spblend_source); - // dd[x] = rand(); + // dd[x] = machine().rand(); } } else { dd[x] = paldata[sprpixel + m_spregular_comp]; - //dd[x] = rand(); + //dd[x] = machine().rand(); // the bad tiles on the wildfang map (shown between levels) are drawn here.. why? looks like they should be transparent? // most wildfang sprites use this and are fine, so what's going wrong? } @@ -259,7 +259,7 @@ void tecmo_mix_device::mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap, if (m_sprbln) { // unusued by this game? - dd[x] = rand(); + dd[x] = machine().rand(); } else { diff --git a/src/mame/video/tecmo_mix.h b/src/mame/video/tecmo_mix.h index b305b63d754..cc2616b2dc3 100644 --- a/src/mame/video/tecmo_mix.h +++ b/src/mame/video/tecmo_mix.h @@ -1,11 +1,13 @@ // license:BSD-3-Clause // copyright-holders:David Haywood /* Tecmo Mixer */ +#ifndef MAME_VIDEO_TECMO_MIX_H +#define MAME_VIDEO_TECMO_MIX_H +#pragma once -class tecmo_mix_device : public device_t, - public device_video_interface +class tecmo_mix_device : public device_t, public device_video_interface { public: tecmo_mix_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -49,7 +51,7 @@ private: uint32_t sum_colors(const pen_t *pal, int c1_idx, int c2_idx); }; -extern const device_type TECMO_MIXER; +DECLARE_DEVICE_TYPE(TECMO_MIXER, tecmo_mix_device) @@ -70,3 +72,5 @@ extern const device_type TECMO_MIXER; #define MCFG_TECMO_MIXER_BGPEN(_bgpen) \ tecmo_mix_device::set_bgpen(*device, _bgpen); + +#endif // MAME_VIDEO_TECMO_MIX_H diff --git a/src/mame/video/tecmo_spr.cpp b/src/mame/video/tecmo_spr.cpp index c52c3bc0f43..6bc94adb2a0 100644 --- a/src/mame/video/tecmo_spr.cpp +++ b/src/mame/video/tecmo_spr.cpp @@ -15,13 +15,13 @@ #include "screen.h" -const device_type TECMO_SPRITE = device_creator; +DEFINE_DEVICE_TYPE(TECMO_SPRITE, tecmo_spr_device, "tecmo_spr", "Tecmo Chained Sprites") tecmo_spr_device::tecmo_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TECMO_SPRITE, "Tecmo Chained Sprites", tag, owner, clock, "tecmo_spr", __FILE__), -m_gfxregion(0), -m_bootleg(0), -m_yoffset(0) + : device_t(mconfig, TECMO_SPRITE, tag, owner, clock) + , m_gfxregion(0) + , m_bootleg(0) + , m_yoffset(0) { } diff --git a/src/mame/video/tecmo_spr.h b/src/mame/video/tecmo_spr.h index b9c879d25b4..b8b3d8075ff 100644 --- a/src/mame/video/tecmo_spr.h +++ b/src/mame/video/tecmo_spr.h @@ -1,7 +1,10 @@ // license:BSD-3-Clause // copyright-holders:David Haywood /* Tecmo Sprites */ +#ifndef MAME_VIDEO_TECMO_SPR_H +#define MAME_VIDEO_TECMO_SPR_H +#pragma once class tecmo_spr_device : public device_t @@ -31,11 +34,9 @@ protected: uint8_t m_gfxregion; int m_bootleg; // for Gals Pinball / Hot Pinball int m_yoffset; - -private: }; -extern const device_type TECMO_SPRITE; +DECLARE_DEVICE_TYPE(TECMO_SPRITE, tecmo_spr_device) #define MCFG_TECMO_SPRITE_GFX_REGION(_region) \ @@ -46,3 +47,5 @@ extern const device_type TECMO_SPRITE; #define MCFG_TECMO_SPRITE_YOFFSET(_yoffset) \ tecmo_spr_device::set_yoffset(*device, _yoffset); + +#endif // MAME_VIDEO_TECMO_SPR_H diff --git a/src/mame/video/thomson.cpp b/src/mame/video/thomson.cpp index 26ba2d2189b..8dac9d2f8d8 100644 --- a/src/mame/video/thomson.cpp +++ b/src/mame/video/thomson.cpp @@ -1022,7 +1022,7 @@ TIMER_CALLBACK_MEMBER( thomson_state::thom_set_init ) } /* call this at the very beginning of each new frame */ -void thomson_state::thom_vblank( screen_device &screen, bool state ) +WRITE_LINE_MEMBER(thomson_state::thom_vblank) { // rising edge if (state) diff --git a/src/mame/video/thunderj.cpp b/src/mame/video/thunderj.cpp index 837f978d5b0..940333496b3 100644 --- a/src/mame/video/thunderj.cpp +++ b/src/mame/video/thunderj.cpp @@ -20,7 +20,7 @@ TILE_GET_INFO_MEMBER(thunderj_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_vad->alpha().basemem_read(tile_index); int code = ((data & 0x200) ? (m_alpha_tile_bank * 0x200) : 0) + (data & 0x1ff); int color = ((data >> 10) & 0x0f) | ((data >> 9) & 0x20); int opaque = data & 0x8000; @@ -30,8 +30,8 @@ TILE_GET_INFO_MEMBER(thunderj_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(thunderj_state::get_playfield_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) & 0xff; + uint16_t data1 = m_vad->playfield().basemem_read(tile_index); + uint16_t data2 = m_vad->playfield().extmem_read(tile_index) & 0xff; int code = data1 & 0x7fff; int color = 0x10 + (data2 & 0x0f); SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); @@ -41,8 +41,8 @@ TILE_GET_INFO_MEMBER(thunderj_state::get_playfield_tile_info) TILE_GET_INFO_MEMBER(thunderj_state::get_playfield2_tile_info) { - uint16_t data1 = tilemap.basemem_read(tile_index); - uint16_t data2 = tilemap.extmem_read(tile_index) >> 8; + uint16_t data1 = m_vad->playfield2().basemem_read(tile_index); + uint16_t data2 = m_vad->playfield2().extmem_read(tile_index) >> 8; int code = data1 & 0x7fff; int color = data2 & 0x0f; SET_TILE_INFO_MEMBER(0, code, color, (data1 >> 15) & 1); diff --git a/src/mame/video/tia.cpp b/src/mame/video/tia.cpp index a4d3729b636..601bdb7b1f1 100644 --- a/src/mame/video/tia.cpp +++ b/src/mame/video/tia.cpp @@ -352,24 +352,24 @@ PALETTE_INIT_MEMBER(tia_pal_video_device, tia_pal) extend_palette( palette ); } -tia_video_device::tia_video_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__), - device_video_interface(mconfig, *this), - m_read_input_port_cb(*this), - m_databus_contents_cb(*this), - m_vsync_cb(*this) +tia_video_device::tia_video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , device_video_interface(mconfig, *this) + , m_read_input_port_cb(*this) + , m_databus_contents_cb(*this) + , m_vsync_cb(*this) { } // device type definition -const device_type TIA_PAL_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(TIA_PAL_VIDEO, tia_pal_video_device, "tia_pal_video", "TIA Video (PAL)") //------------------------------------------------- // tia_pal_video_device - constructor //------------------------------------------------- tia_pal_video_device::tia_pal_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tia_video_device(mconfig, TIA_PAL_VIDEO, "TIA Video (PAL)", "tia_pal_video", tag, owner, clock) + : tia_video_device(mconfig, TIA_PAL_VIDEO, tag, owner, clock) { } @@ -389,14 +389,14 @@ machine_config_constructor tia_pal_video_device::device_mconfig_additions() cons } // device type definition -const device_type TIA_NTSC_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(TIA_NTSC_VIDEO, tia_ntsc_video_device, "tia_ntsc_video", "TIA Video (NTSC)") //------------------------------------------------- // tia_ntsc_video_device - constructor //------------------------------------------------- tia_ntsc_video_device::tia_ntsc_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : tia_video_device(mconfig, TIA_NTSC_VIDEO, "TIA Video (NTSC)", "tia_ntsc_video", tag, owner, clock) + : tia_video_device(mconfig, TIA_NTSC_VIDEO, tag, owner, clock) { } diff --git a/src/mame/video/tia.h b/src/mame/video/tia.h index a73a1103287..e05789cf623 100644 --- a/src/mame/video/tia.h +++ b/src/mame/video/tia.h @@ -1,7 +1,9 @@ // license:BSD-3-Clause // copyright-holders:Wilbert Pol,Stefan Jokisch -#ifndef _VIDEO_TIA_H_ -#define _VIDEO_TIA_H_ +#ifndef MAME_VIDEO_VIDEO_TIA_H +#define MAME_VIDEO_VIDEO_TIA_H + +#pragma once //************************************************************************** // MACROS / CONSTANTS @@ -61,7 +63,7 @@ public: protected: // construction/destruction - tia_video_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, uint32_t clock); + tia_video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); // device-level overrides virtual void device_start() override; @@ -229,7 +231,7 @@ protected: // device type definition -extern const device_type TIA_PAL_VIDEO; -extern const device_type TIA_NTSC_VIDEO; +DECLARE_DEVICE_TYPE(TIA_PAL_VIDEO, tia_pal_video_device) +DECLARE_DEVICE_TYPE(TIA_NTSC_VIDEO, tia_ntsc_video_device) -#endif /* _VIDEO_TIA_H_ */ +#endif // MAME_VIDEO_TIA_H diff --git a/src/mame/video/tigeroad_spr.cpp b/src/mame/video/tigeroad_spr.cpp index 40c8383e0ed..f26fb04158a 100644 --- a/src/mame/video/tigeroad_spr.cpp +++ b/src/mame/video/tigeroad_spr.cpp @@ -19,10 +19,10 @@ #include "tigeroad_spr.h" -const device_type TIGEROAD_SPRITE = device_creator; +DEFINE_DEVICE_TYPE(TIGEROAD_SPRITE, tigeroad_spr_device, "tigeroad_spr", "Simple Capcom (Tiger Road) Sprite") tigeroad_spr_device::tigeroad_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TIGEROAD_SPRITE, "Simple Capcom (Tiger Road) Sprite", tag, owner, clock, "tigeroad_spr", __FILE__) + : device_t(mconfig, TIGEROAD_SPRITE, tag, owner, clock) { } diff --git a/src/mame/video/tigeroad_spr.h b/src/mame/video/tigeroad_spr.h index 21ff8afdd79..11b1c1b98aa 100644 --- a/src/mame/video/tigeroad_spr.h +++ b/src/mame/video/tigeroad_spr.h @@ -1,5 +1,9 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_TIGEROAD_SPR_H +#define MAME_VIDEO_TIGEROAD_SPR_H + +#pragma once class tigeroad_spr_device : public device_t { @@ -15,4 +19,6 @@ protected: private: }; -extern const device_type TIGEROAD_SPRITE; +DECLARE_DEVICE_TYPE(TIGEROAD_SPRITE, tigeroad_spr_device) + +#endif // MAME_VIDEO_TIGEROAD_SPR_H diff --git a/src/mame/video/timex.cpp b/src/mame/video/timex.cpp index 72602d6639c..e276e6af323 100644 --- a/src/mame/video/timex.cpp +++ b/src/mame/video/timex.cpp @@ -32,7 +32,7 @@ VIDEO_START_MEMBER(spectrum_state,ts2068) m_frame_invert_count = 30; } -void spectrum_state::screen_eof_timex(screen_device &screen, bool state) +WRITE_LINE_MEMBER(spectrum_state::screen_vblank_timex) { // rising edge if (state) diff --git a/src/mame/video/tmc600.cpp b/src/mame/video/tmc600.cpp index 65c403e64ed..1c7d1fd2642 100644 --- a/src/mame/video/tmc600.cpp +++ b/src/mame/video/tmc600.cpp @@ -128,15 +128,15 @@ GFXDECODE_END MACHINE_CONFIG_FRAGMENT( tmc600_video ) // video hardware - MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, CDP1869_DOT_CLK_PAL) + MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL) MCFG_TIMER_DRIVER_ADD_PERIODIC("blink", tmc600_state, blink_tick, attotime::from_hz(2)) MCFG_GFXDECODE_ADD("gfxdecode", CDP1869_TAG":palette", tmc600) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_CDP1869_ADD(CDP1869_TAG, CDP1869_DOT_CLK_PAL, cdp1869_page_ram) - MCFG_CDP1869_COLOR_CLOCK(CDP1869_COLOR_CLK_PAL) + MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_PAL, cdp1869_page_ram) + MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_PAL) MCFG_CDP1869_CHAR_PCB_READ_OWNER(tmc600_state, tmc600_pcb_r) MCFG_CDP1869_CHAR_RAM_READ_OWNER(tmc600_state, tmc600_char_ram_r) MCFG_CDP1869_PAL_NTSC_CALLBACK(VCC) diff --git a/src/mame/video/tmnt.cpp b/src/mame/video/tmnt.cpp index 15686a0a58b..7da27c28eee 100644 --- a/src/mame/video/tmnt.cpp +++ b/src/mame/video/tmnt.cpp @@ -165,9 +165,9 @@ K05324X_CB_MEMBER(tmnt_state::lgtnfght_sprite_callback) K05324X_CB_MEMBER(tmnt_state::blswhstl_sprite_callback) { #if 0 -if (machine().input().code_pressed(KEYCODE_Q) && (*color & 0x20)) *color = rand(); -if (machine().input().code_pressed(KEYCODE_W) && (*color & 0x40)) *color = rand(); -if (machine().input().code_pressed(KEYCODE_E) && (*color & 0x80)) *color = rand(); +if (machine().input().code_pressed(KEYCODE_Q) && (*color & 0x20)) *color = machine().rand(); +if (machine().input().code_pressed(KEYCODE_W) && (*color & 0x40)) *color = machine().rand(); +if (machine().input().code_pressed(KEYCODE_E) && (*color & 0x80)) *color = machine().rand(); #endif int pri = 0x20 | ((*color & 0x60) >> 2); if (pri <= m_layerpri[2]) @@ -546,19 +546,19 @@ uint32_t tmnt_state::screen_update_tmnt(screen_device &screen, bitmap_ind16 &bit uint32_t tmnt_state::screen_update_punkshot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI2); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI4); - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI3); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4); + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3); m_k052109->tilemap_update(); m_sorted_layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); m_sorted_layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI4); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4); m_sorted_layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI3); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3); konami_sortlayers3(m_sorted_layer, m_layerpri); @@ -576,20 +576,20 @@ uint32_t tmnt_state::screen_update_lgtnfght(screen_device &screen, bitmap_ind16 { int bg_colorbase; - bg_colorbase = m_k053251->get_palette_index(K053251_CI0); - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI2); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI4); - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI3); + bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4); + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3); m_k052109->tilemap_update(); m_sorted_layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); m_sorted_layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI4); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4); m_sorted_layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI3); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3); konami_sortlayers3(m_sorted_layer, m_layerpri); @@ -620,20 +620,20 @@ uint32_t tmnt_state::screen_update_glfgreat(screen_device &screen, bitmap_ind16 { int bg_colorbase; - bg_colorbase = m_k053251->get_palette_index(K053251_CI0); - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI2); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI3) + 8; /* weird... */ - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI4); + bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI3) + 8; /* weird... */ + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI4); m_k052109->tilemap_update(); m_sorted_layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); m_sorted_layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI3); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI3); m_sorted_layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI4); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4); konami_sortlayers3(m_sorted_layer, m_layerpri); @@ -725,20 +725,20 @@ uint32_t tmnt_state::screen_update_thndrx2(screen_device &screen, bitmap_ind16 & { int bg_colorbase; - bg_colorbase = m_k053251->get_palette_index(K053251_CI0); - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI2); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI4); - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI3); + bg_colorbase = m_k053251->get_palette_index(k053251_device::CI0); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI4); + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI3); m_k052109->tilemap_update(); m_sorted_layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); m_sorted_layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI4); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI4); m_sorted_layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI3); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI3); konami_sortlayers3(m_sorted_layer, m_layerpri); @@ -760,7 +760,7 @@ uint32_t tmnt_state::screen_update_thndrx2(screen_device &screen, bitmap_ind16 & ***************************************************************************/ -void tmnt_state::screen_eof_blswhstl(screen_device &screen, bool state) +WRITE_LINE_MEMBER(tmnt_state::screen_vblank_blswhstl) { // on rising edge if (state) diff --git a/src/mame/video/tnzs.cpp b/src/mame/video/tnzs.cpp index 803c39d67ac..65e11063e5d 100644 --- a/src/mame/video/tnzs.cpp +++ b/src/mame/video/tnzs.cpp @@ -54,7 +54,7 @@ uint32_t tnzs_base_state::screen_update_tnzs(screen_device &screen, bitmap_ind16 return 0; } -void tnzs_base_state::screen_eof_tnzs(screen_device &screen, bool state) +WRITE_LINE_MEMBER(tnzs_base_state::screen_vblank_tnzs) { // rising edge if (state) diff --git a/src/mame/video/toaplan1.cpp b/src/mame/video/toaplan1.cpp index b7ef0a39596..db50ee4b8b7 100644 --- a/src/mame/video/toaplan1.cpp +++ b/src/mame/video/toaplan1.cpp @@ -987,7 +987,7 @@ uint32_t toaplan1_state::screen_update_toaplan1(screen_device &screen, bitmap_in assume it happens automatically every frame, at the end of vblank ****************************************************************************/ -void toaplan1_rallybik_state::screen_eof_rallybik(screen_device &screen, bool state) +WRITE_LINE_MEMBER(toaplan1_rallybik_state::screen_vblank_rallybik) { // rising edge if (state) @@ -996,7 +996,7 @@ void toaplan1_rallybik_state::screen_eof_rallybik(screen_device &screen, bool st } } -void toaplan1_state::screen_eof_toaplan1(screen_device &screen, bool state) +WRITE_LINE_MEMBER(toaplan1_state::screen_vblank_toaplan1) { // rising edge if (state) @@ -1006,7 +1006,7 @@ void toaplan1_state::screen_eof_toaplan1(screen_device &screen, bool state) } } -void toaplan1_state::screen_eof_samesame(screen_device &screen, bool state) +WRITE_LINE_MEMBER(toaplan1_state::screen_vblank_samesame) { // rising edge if (state) diff --git a/src/mame/video/toaplan2.cpp b/src/mame/video/toaplan2.cpp index 589d445430e..86bddaec96f 100644 --- a/src/mame/video/toaplan2.cpp +++ b/src/mame/video/toaplan2.cpp @@ -108,17 +108,10 @@ VIDEO_START_MEMBER(toaplan2_state,fixeightbl) create_tx_tilemap(); /* This bootleg has additional layer offsets on the VDP */ - m_vdp0->bg.extra_xoffset.normal = -0x1d6 -26; - m_vdp0->bg.extra_yoffset.normal = -0x1ef -15; - - m_vdp0->fg.extra_xoffset.normal = -0x1d8 -22; - m_vdp0->fg.extra_yoffset.normal = -0x1ef -15; - - m_vdp0->top.extra_xoffset.normal = -0x1da -18; - m_vdp0->top.extra_yoffset.normal = -0x1ef -15; - - m_vdp0->sp.extra_xoffset.normal = 8;//-0x1cc -64; - m_vdp0->sp.extra_yoffset.normal = 8;//-0x1ef -128; + m_vdp0->set_bg_extra_offsets( -0x1d6 - 26, -0x1ef - 15, 0, 0 ); + m_vdp0->set_fg_extra_offsets( -0x1d8 - 22, -0x1ef - 15, 0, 0 ); + m_vdp0->set_top_extra_offsets( -0x1da - 18, -0x1ef - 15, 0, 0 ); + m_vdp0->set_sp_extra_offsets(8/*-0x1cc - 64*/, 8/*-0x1ef - 128*/, 0, 0); m_vdp0->init_scroll_regs(); } @@ -143,7 +136,7 @@ VIDEO_START_MEMBER(toaplan2_state,batrider) { VIDEO_START_CALL_MEMBER( toaplan2 ); - m_vdp0->sp.use_sprite_buffer = 0; // disable buffering on this game + m_vdp0->disable_sprite_buffer(); // disable buffering on this game /* Create the Text tilemap for this game */ m_tx_gfxram16.allocate(RAIZING_TX_GFXRAM_SIZE/2); @@ -153,7 +146,7 @@ VIDEO_START_MEMBER(toaplan2_state,batrider) create_tx_tilemap(0x1d4, 0x16b); /* Has special banking */ - m_vdp0->gp9001_gfxrom_is_banked = 1; + m_vdp0->set_gfxrom_banked(); } WRITE16_MEMBER(toaplan2_state::toaplan2_tx_videoram_w) @@ -214,14 +207,7 @@ WRITE16_MEMBER(toaplan2_state::batrider_unknown_dma_w) WRITE16_MEMBER(toaplan2_state::batrider_objectbank_w) { if (ACCESSING_BITS_0_7) - { - data &= 0xf; - if (m_vdp0->gp9001_gfxrom_bank[offset] != data) - { - m_vdp0->gp9001_gfxrom_bank[offset] = data; - m_vdp0->gp9001_gfxrom_bank_dirty = 1; - } - } + m_vdp0->set_gfxrom_bank(offset, data & 0x0f); } @@ -388,7 +374,7 @@ uint32_t toaplan2_state::screen_update_truxton2(screen_device &screen, bitmap_in -void toaplan2_state::screen_eof_toaplan2(screen_device &screen, bool state) +WRITE_LINE_MEMBER(toaplan2_state::screen_vblank_toaplan2) { // rising edge if (state) diff --git a/src/mame/video/toaplan_scu.cpp b/src/mame/video/toaplan_scu.cpp index 2402e1df285..a6d02b4df4e 100644 --- a/src/mame/video/toaplan_scu.cpp +++ b/src/mame/video/toaplan_scu.cpp @@ -11,7 +11,7 @@ #include "screen.h" -const device_type TOAPLAN_SCU = device_creator; +DEFINE_DEVICE_TYPE(TOAPLAN_SCU, toaplan_scu_device, "toaplan_scu", "Toaplan SCU") const gfx_layout toaplan_scu_device::spritelayout = { @@ -30,8 +30,8 @@ GFXDECODE_END toaplan_scu_device::toaplan_scu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, TOAPLAN_SCU, "Toaplan SCU", tag, owner, clock, "toaplan_scu", __FILE__), - device_gfx_interface(mconfig, *this, gfxinfo ) + : device_t(mconfig, TOAPLAN_SCU, tag, owner, clock) + , device_gfx_interface(mconfig, *this, gfxinfo) { } diff --git a/src/mame/video/toaplan_scu.h b/src/mame/video/toaplan_scu.h index 89b6d90fb6a..3466380c102 100644 --- a/src/mame/video/toaplan_scu.h +++ b/src/mame/video/toaplan_scu.h @@ -1,14 +1,14 @@ // license:BSD-3-Clause // copyright-holders:Quench /* toaplan SCU */ +#ifndef MAME_VIDEO_TOAPLAN_SCU_H +#define MAME_VIDEO_TOAPLAN_SCU_H +#pragma once class toaplan_scu_device : public device_t, public device_gfx_interface { - static const gfx_layout spritelayout; - DECLARE_GFXDECODE_MEMBER(gfxinfo); - public: toaplan_scu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -24,14 +24,19 @@ protected: virtual void device_reset() override; private: + static const gfx_layout spritelayout; + DECLARE_GFXDECODE_MEMBER(gfxinfo); + bitmap_ind16 m_temp_spritebitmap; int m_xoffs; int m_xoffs_flipped; }; -extern const device_type TOAPLAN_SCU; +DECLARE_DEVICE_TYPE(TOAPLAN_SCU, toaplan_scu_device) #define MCFG_TOAPLAN_SCU_ADD(_tag, _palette_tag, _xoffs, _xoffs_flipped ) \ MCFG_DEVICE_ADD(_tag, TOAPLAN_SCU, 0) \ MCFG_GFX_PALETTE(_palette_tag) \ toaplan_scu_device::static_set_xoffsets(*device, _xoffs, _xoffs_flipped); + +#endif // MAME_VIDEO_TOAPLAN_SCU_H diff --git a/src/mame/video/toobin.cpp b/src/mame/video/toobin.cpp index 5cb499bfc10..e895cfbb662 100644 --- a/src/mame/video/toobin.cpp +++ b/src/mame/video/toobin.cpp @@ -20,7 +20,7 @@ TILE_GET_INFO_MEMBER(toobin_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0x3ff; int color = (data >> 12) & 0x0f; SET_TILE_INFO_MEMBER(2, code, color, (data >> 10) & 1); @@ -29,7 +29,7 @@ TILE_GET_INFO_MEMBER(toobin_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(toobin_state::get_playfield_tile_info) { - uint32_t data = tilemap.basemem_read(tile_index); + uint32_t data = m_playfield_tilemap->basemem_read(tile_index); int code = data & 0x3fff; int color = (data >> 16) & 0x0f; SET_TILE_INFO_MEMBER(0, code, color, TILE_FLIPYX(data >> 14)); diff --git a/src/mame/video/triplhnt.cpp b/src/mame/video/triplhnt.cpp index b4d2be82e17..79d8863f6e1 100644 --- a/src/mame/video/triplhnt.cpp +++ b/src/mame/video/triplhnt.cpp @@ -23,6 +23,16 @@ void triplhnt_state::video_start() m_screen->register_screen_bitmap(m_helper); m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(triplhnt_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + + m_hit_timer = timer_alloc(TIMER_HIT); + + save_item(NAME(m_cmos)); + save_item(NAME(m_da_latch)); + save_item(NAME(m_misc_flags)); + save_item(NAME(m_cmos_latch)); + save_item(NAME(m_hit_code)); + save_item(NAME(m_sprite_zoom)); + save_item(NAME(m_sprite_bank)); } @@ -31,7 +41,7 @@ void triplhnt_state::device_timer(emu_timer &timer, device_timer_id id, int para switch (id) { case TIMER_HIT: - triplhnt_set_collision(param); + set_collision(param); break; default: assert_always(false, "Unknown id in triplhnt_state::device_timer"); @@ -41,12 +51,10 @@ void triplhnt_state::device_timer(emu_timer &timer, device_timer_id id, int para void triplhnt_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) { - int i; - int hit_line = 999; int hit_code = 999; - for (i = 0; i < 16; i++) + for (int i = 0; i < 16; i++) { rectangle rect; @@ -107,11 +115,11 @@ void triplhnt_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec } if (hit_line != 999 && hit_code != 999) - timer_set(m_screen->time_until_pos(hit_line), TIMER_HIT, hit_code); + m_hit_timer->adjust(m_screen->time_until_pos(hit_line), hit_code); } -uint32_t triplhnt_state::screen_update_triplhnt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t triplhnt_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->mark_all_dirty(); diff --git a/src/mame/video/tubep.cpp b/src/mame/video/tubep.cpp index 5c405588957..63fb519ab92 100644 --- a/src/mame/video/tubep.cpp +++ b/src/mame/video/tubep.cpp @@ -338,10 +338,12 @@ PALETTE_INIT_MEMBER(tubep_state,tubep) } -VIDEO_START_MEMBER(tubep_state,tubep) +void tubep_state::video_start() { m_spritemap = std::make_unique(256*256*2); + m_sprite_timer = timer_alloc(TIMER_SPRITE); + /* Set up save state */ save_item(NAME(m_romD_addr)); save_item(NAME(m_romEF_addr)); @@ -367,7 +369,7 @@ VIDEO_START_MEMBER(tubep_state,tubep) } -VIDEO_RESET_MEMBER(tubep_state,tubep) +void tubep_state::video_reset() { memset(m_spritemap.get(),0,256*256*2); @@ -553,7 +555,7 @@ WRITE8_MEMBER(tubep_state::tubep_sprite_control_w) m_mcu->set_input_line(0, CLEAR_LINE); /* 2.assert /SINT again after this time */ - timer_set( attotime::from_hz(19968000/8) * ((m_XSize+1)*(m_YSize+1)), TIMER_SPRITE); + m_sprite_timer->adjust(attotime::from_hz(19968000/8) * ((m_XSize+1)*(m_YSize+1))); /* 3.clear of /SINT starts sprite drawing circuit */ draw_sprite(); diff --git a/src/mame/video/twin16.cpp b/src/mame/video/twin16.cpp index 9ddcec4937d..e5233f19876 100644 --- a/src/mame/video/twin16.cpp +++ b/src/mame/video/twin16.cpp @@ -544,7 +544,7 @@ uint32_t twin16_state::screen_update_twin16(screen_device &screen, bitmap_ind16 return 0; } -void twin16_state::screen_eof_twin16(screen_device &screen, bool state) +WRITE_LINE_MEMBER(twin16_state::screen_vblank_twin16) { // rising edge if (state) diff --git a/src/mame/video/tx0.cpp b/src/mame/video/tx0.cpp index 8fabb0735dc..1c02e8636d4 100644 --- a/src/mame/video/tx0.cpp +++ b/src/mame/video/tx0.cpp @@ -39,7 +39,7 @@ void tx0_state::video_start() } -void tx0_state::screen_eof_tx0(screen_device &screen, bool state) +WRITE_LINE_MEMBER(tx0_state::screen_vblank_tx0) { // rising edge if (state) diff --git a/src/mame/video/tx1.cpp b/src/mame/video/tx1.cpp index 246ac3a005a..019b007d18f 100644 --- a/src/mame/video/tx1.cpp +++ b/src/mame/video/tx1.cpp @@ -1113,7 +1113,7 @@ VIDEO_START_MEMBER(tx1_state,tx1) m_interrupt_timer->adjust(m_screen->time_until_pos(CURSOR_YPOS, CURSOR_XPOS)); } -void tx1_state::screen_eof_tx1(screen_device &screen, bool state) +WRITE_LINE_MEMBER(tx1_state::screen_vblank_tx1) { // rising edge if (state) @@ -3017,7 +3017,7 @@ VIDEO_START_MEMBER(tx1_state,buggybjr) m_interrupt_timer->adjust(m_screen->time_until_pos(CURSOR_YPOS, CURSOR_XPOS)); } -void tx1_state::screen_eof_buggyboy(screen_device &screen, bool state) +WRITE_LINE_MEMBER(tx1_state::screen_vblank_buggyboy) { // rising edge if (state) diff --git a/src/mame/video/ultratnk.cpp b/src/mame/video/ultratnk.cpp index 48a207f1e96..797089cd82f 100644 --- a/src/mame/video/ultratnk.cpp +++ b/src/mame/video/ultratnk.cpp @@ -34,10 +34,9 @@ PALETTE_INIT_MEMBER(ultratnk_state, ultratnk) } -TILE_GET_INFO_MEMBER(ultratnk_state::ultratnk_tile_info) +TILE_GET_INFO_MEMBER(ultratnk_state::tile_info) { - uint8_t *videoram = m_videoram; - uint8_t code = videoram[tile_index]; + uint8_t code = m_videoram[tile_index]; if (code & 0x20) SET_TILE_INFO_MEMBER(0, code, code >> 6, 0); @@ -50,25 +49,22 @@ void ultratnk_state::video_start() { m_screen->register_screen_bitmap(m_helper); - m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ultratnk_state::ultratnk_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ultratnk_state::tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } -uint32_t ultratnk_state::screen_update_ultratnk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t ultratnk_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - uint8_t *videoram = m_videoram; - int i; - m_playfield->draw(screen, bitmap, cliprect, 0, 0); - for (i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) { int bank = 0; - uint8_t horz = videoram[0x390 + 2 * i + 0]; - uint8_t attr = videoram[0x390 + 2 * i + 1]; - uint8_t vert = videoram[0x398 + 2 * i + 0]; - uint8_t code = videoram[0x398 + 2 * i + 1]; + uint8_t horz = m_videoram[0x390 + 2 * i + 0]; + uint8_t attr = m_videoram[0x390 + 2 * i + 1]; + uint8_t vert = m_videoram[0x398 + 2 * i + 0]; + uint8_t code = m_videoram[0x398 + 2 * i + 1]; if (code & 4) bank = 32; @@ -88,29 +84,24 @@ uint32_t ultratnk_state::screen_update_ultratnk(screen_device &screen, bitmap_in } -void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state) +WRITE_LINE_MEMBER(ultratnk_state::screen_vblank) { // rising edge if (state) { - int i; uint16_t BG = m_palette->pen_indirect(0); - uint8_t *videoram = m_videoram; /* check for sprite-playfield collisions */ - for (i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) { rectangle rect; - int x; - int y; - int bank = 0; - uint8_t horz = videoram[0x390 + 2 * i + 0]; - uint8_t vert = videoram[0x398 + 2 * i + 0]; - uint8_t code = videoram[0x398 + 2 * i + 1]; + uint8_t horz = m_videoram[0x390 + 2 * i + 0]; + uint8_t vert = m_videoram[0x398 + 2 * i + 0]; + uint8_t code = m_videoram[0x398 + 2 * i + 1]; rect.min_x = horz - 15; rect.min_y = vert - 15; @@ -119,7 +110,7 @@ void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state) rect &= m_screen->visible_area(); - m_playfield->draw(screen, m_helper, rect, 0, 0); + m_playfield->draw(*m_screen, m_helper, rect, 0, 0); if (code & 4) bank = 32; @@ -131,8 +122,8 @@ void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state) horz - 15, vert - 15, 1); - for (y = rect.min_y; y <= rect.max_y; y++) - for (x = rect.min_x; x <= rect.max_x; x++) + for (int y = rect.min_y; y <= rect.max_y; y++) + for (int x = rect.min_x; x <= rect.max_x; x++) if (m_palette->pen_indirect(m_helper.pix16(y, x)) != BG) m_collision[i] = 1; } @@ -140,15 +131,14 @@ void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state) /* update sound status */ address_space &space = machine().dummy_space(); - m_discrete->write(space, ULTRATNK_MOTOR_DATA_1, videoram[0x391] & 15); - m_discrete->write(space, ULTRATNK_MOTOR_DATA_2, videoram[0x393] & 15); + m_discrete->write(space, ULTRATNK_MOTOR_DATA_1, m_videoram[0x391] & 15); + m_discrete->write(space, ULTRATNK_MOTOR_DATA_2, m_videoram[0x393] & 15); } } -WRITE8_MEMBER(ultratnk_state::ultratnk_video_ram_w) +WRITE8_MEMBER(ultratnk_state::video_ram_w) { - uint8_t *videoram = m_videoram; - videoram[offset] = data; + m_videoram[offset] = data; m_playfield->mark_tile_dirty(offset); } diff --git a/src/mame/video/uv201.cpp b/src/mame/video/uv201.cpp index fdbd98ab2af..d6485b2c556 100644 --- a/src/mame/video/uv201.cpp +++ b/src/mame/video/uv201.cpp @@ -90,7 +90,7 @@ //************************************************************************** // device type definition -const device_type UV201 = device_creator; +DEFINE_DEVICE_TYPE(UV201, uv201_device, "uv201", "UV201") //------------------------------------------------- @@ -98,7 +98,7 @@ const device_type UV201 = device_creator; //------------------------------------------------- uv201_device::uv201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, UV201, "UV201", tag, owner, clock, "uv201", __FILE__), + device_t(mconfig, UV201, tag, owner, clock), device_video_interface(mconfig, *this), m_write_ext_int(*this), m_write_hblank(*this), diff --git a/src/mame/video/uv201.h b/src/mame/video/uv201.h index 48f34921cb3..97363c4b118 100644 --- a/src/mame/video/uv201.h +++ b/src/mame/video/uv201.h @@ -96,9 +96,9 @@ public: // construction/destruction uv201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_ext_int_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_ext_int.set_callback(object); } - template static devcb_base &set_hblank_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_hblank.set_callback(object); } - template static devcb_base &set_db_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_db.set_callback(object); } + template static devcb_base &set_ext_int_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_ext_int.set_callback(std::forward(cb)); } + template static devcb_base &set_hblank_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_hblank.set_callback(std::forward(cb)); } + template static devcb_base &set_db_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_db.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -153,5 +153,6 @@ private: // device type definition extern const device_type UV201; +DECLARE_DEVICE_TYPE(UV201, uv201_device) #endif // MAME_VIDEO_UV201_H diff --git a/src/mame/video/vc4000.cpp b/src/mame/video/vc4000.cpp index 46cbe5f4e8d..18af3fedbd3 100644 --- a/src/mame/video/vc4000.cpp +++ b/src/mame/video/vc4000.cpp @@ -218,6 +218,7 @@ READ8_MEMBER( vc4000_state::vc4000_video_r ) case 0x20: m_joy2_x+=5; if (m_joy2_x > STICKHIGH) m_joy2_x=STICKHIGH; + break; case 0x00: m_joy2_x = vc4000_joystick_return_to_centre(m_joy2_x); break; diff --git a/src/mame/video/vendetta.cpp b/src/mame/video/vendetta.cpp index 21d2cdae864..66686c97b00 100644 --- a/src/mame/video/vendetta.cpp +++ b/src/mame/video/vendetta.cpp @@ -54,19 +54,19 @@ uint32_t vendetta_state::screen_update(screen_device &screen, bitmap_ind16 &bitm { int layer[3]; - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI2); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI3); - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI4); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI3); + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI4); m_k052109->tilemap_update(); layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI3); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI3); layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI4); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4); konami_sortlayers3(layer, m_layerpri); diff --git a/src/mame/video/vertigo.cpp b/src/mame/video/vertigo.cpp index 8903dcc2223..a51b34f15c4 100644 --- a/src/mame/video/vertigo.cpp +++ b/src/mame/video/vertigo.cpp @@ -56,7 +56,7 @@ *************************************/ #define V_ADDPOINT(h,v,c,i) \ - m_vector->add_point (((h) & 0x7ff) << 14, (0x6ff - ((v) & 0x7ff)) << 14, VECTOR_COLOR444(c), (i)) + m_vector->add_point (((h) & 0x7ff) << 14, (0x6ff - ((v) & 0x7ff)) << 14, vector_device::color444(c), (i)) #define ADD(r,s,c) (((r) + (s) + (c)) & 0xffff) #define SUBR(r,s,c) ((~(r) + (s) + (c)) & 0xffff) diff --git a/src/mame/video/vicdual-97269pb.cpp b/src/mame/video/vicdual-97269pb.cpp new file mode 100644 index 00000000000..2ae3c31c4d0 --- /dev/null +++ b/src/mame/video/vicdual-97269pb.cpp @@ -0,0 +1,157 @@ +// license:BSD-3-Clause +// copyright-holders:Ariane Fugmann + +/* +N-Sub Daughterboard 97269-P-B +----------------------------- +Reference Image: http://images.arianchen.de/2017-01/030320171775.jpg +Wiring Notes: http://files.arianchen.de/nsub/97269-P-B.txt + +|---------------------------------------------------| +| PR-02 74393 PR-57 74175 74367 7417 (A) | +| | +| PR-56 7410 74393 7400 74367 (B) | +| | +| 74161 74161 74157 74175 74365 (C) | +| | +| (1) (2) (3) (4) (5) (6) | +| SEGA 97269-P-B | +| [---CON-F---] [-----------CON-X-----------] | +|---------------------------------------------------| +Notes: + PR-02.A1 - MMI 6336-1J 256*8 PROM (DIP24, labelled 'PR-02') + PR-56.B2 - Fujitsu MB7054 1024*4 (DIP18, labelled 'PR-56') + PR-57.A3 - Fujitsu MB7054 1024*4 (DIP18, labelled 'PR-57') + + CON-F - A 3.6 Pin Connector for monitor (different pinout!) + 01 - NC + 02 - NC + 03 - GND + 04 - KEY + 05 - NC + 06 - NC + 07 - CSYNC + 08 - GREEN + 09 - BLUE + 10 - RED + + CON-X - A 15 Pin Connector which is wired to various places on the mainboard + 01 - VCC + 02 - GND + 03 - CSYNC (U53.1) + 04 - PALBANK-B2 (U18.7) + 05 - EXTBLANK (U84.8) + 06 - VIDEO (U54.13) + 07 - PALBANK-B3 (U18.2) + 08 - VSYNC (U53.12) + 09 - VBLANK (U17.5) + 10 - BLUE (U8.7) + 11 - GREEN (U8.9) + 12 - RED (U8.4) + 13 - HSYNC- (U13.9) + 14 - HRESET (U13.6) + 15 - SRCK (U54.7) +*/ + +#include "emu.h" +#include "video/vicdual-97269pb.h" + +#define S97269PB_TAG "s97269pb" + +/************************************* + * 97269PB PROMS + *************************************/ +ROM_START( s97269pb ) + ROM_REGION( 0x1000, S97269PB_TAG, ROMREGION_ERASEFF ) + ROM_LOAD( "pr-02.a1", 0x0000, 0x0100, CRC(8e633b5c) SHA1(7ee40abe0e8a56aae2cc5f1102fa8c334a19e075) ) + ROM_LOAD( "pr-56.b2", 0x0800, 0x0400, CRC(f79c8e91) SHA1(eafff661e2aa1a6ef64f51faa9b1dac7af843557) ) + ROM_LOAD( "pr-57.a3", 0x0c00, 0x0400, CRC(00d52430) SHA1(5f4de97cfe6fe39da75761e0f434de28d30f3e3b) ) +ROM_END + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +DEFINE_DEVICE_TYPE(S97269PB, s97269pb_device, "s97269pb", "N-Sub Daughterboard 97269-P-B") + +//------------------------------------------------- +// rom_region - device-specific ROM region +//------------------------------------------------- + +const tiny_rom_entry *s97269pb_device::device_rom_region() const +{ + return ROM_NAME( s97269pb ); +} + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// s97269pb_device - constructor +//------------------------------------------------- + +s97269pb_device::s97269pb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, S97269PB, tag, owner, clock), + m_prom_ptr(*this, "s97269pb") +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void s97269pb_device::device_start() +{ + save_item(NAME(m_palette_bank)); +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void s97269pb_device::device_reset() +{ + m_palette_bank = 0; +} + +void s97269pb_device::palette_bank_w(uint8_t data) +{ + m_palette_bank = data & 0x0c; +} + +pen_t s97269pb_device::choose_pen(uint8_t x, uint8_t y, pen_t back_pen) +{ + if (m_palette_bank & 0x04) + { + // TODO - starfield + // gradient is offset by about 10 pixels + + // bit 2 enables the gradient and starfield/gradient + // bit 3 seems to be used for cocktail mode + uint8_t offset = ((x + 5) & 0xff) / 2; + if (m_palette_bank & 0x08) + offset |= 0x80; + + uint8_t gradient_flags = m_prom_ptr[offset]; + + switch (gradient_flags >> 4) + { + case 0x1: + // blue-to-cyan + return rgb_t(0, 0x80 + (gradient_flags & 0x0f) * 0x08, 0xff); + break; + + case 0x4: + // black-to-blue + return rgb_t(0, 0, (gradient_flags & 0x0f) * 0x11);; + break; + + case 0xf: + default: + return back_pen; + break; + } + } + return back_pen; +} diff --git a/src/mame/video/vicdual-97269pb.h b/src/mame/video/vicdual-97269pb.h new file mode 100644 index 00000000000..c2d239233b7 --- /dev/null +++ b/src/mame/video/vicdual-97269pb.h @@ -0,0 +1,42 @@ +// license:BSD-3-Clause +// copyright-holders:Ariane Fugmann +#ifndef MAME_VIDEO_VICDUAL_97269PB_H +#define MAME_VIDEO_VICDUAL_97269PB_H + +#pragma once + +#define MCFG_S97269PB_ADD(_tag ) \ + MCFG_DEVICE_ADD(_tag, S97269PB, 0) + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class s97269pb_device : public device_t +{ +public: + // construction/destruction + s97269pb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + // daughterboard logic + void palette_bank_w(uint8_t data); + pen_t choose_pen(uint8_t x, uint8_t y, pen_t back_pen); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual const tiny_rom_entry *device_rom_region() const override; + +private: + required_region_ptr m_prom_ptr; + + // bit 2 enables gradient and starfield + // bit 3 seems to be used to flip for cocktail + uint8_t m_palette_bank; +}; + +// device type definition +DECLARE_DEVICE_TYPE(S97269PB, s97269pb_device) + +#endif // MAME_VIDEO_VICDUAL_97269PB_H diff --git a/src/mame/video/vicdual.cpp b/src/mame/video/vicdual.cpp index 12c8c83d34a..b3c80d2d677 100644 --- a/src/mame/video/vicdual.cpp +++ b/src/mame/video/vicdual.cpp @@ -112,22 +112,8 @@ uint32_t vicdual_state::screen_update_color(screen_device &screen, bitmap_rgb32 fore_pen = pens_from_color_prom[(color_prom[offs] >> 5) & 0x07]; } - if (m_gradient == 0x04) - { - // used by nsub and starrkr (maybe others) - // bit 4 on palette_bank_w seems to enable/disable the starfield/gradient - // how exactly those work is unclear right now - if (x >= 24 && x < 105) - { - // nsub - black to blue gradient - back_pen = rgb_t(0x00, 0x00, (x - 24) * 3); - } - if (x >= 105 && x < 233) - { - // nsub - blue to cyan gradient - back_pen = rgb_t(0x00, 0x80 + (x - 105), 0xff); - } - } + // this does nothing by default, but is used to enable overrides + back_pen = choose_pen(x, y, back_pen); /* plot the current pixel */ pen = (video_data & 0x80) ? fore_pen : back_pen; @@ -164,3 +150,15 @@ uint32_t vicdual_state::screen_update_bw_or_color(screen_device &screen, bitmap_ return 0; } + + +pen_t vicdual_state::choose_pen(uint8_t x, uint8_t y, pen_t back_pen) +{ + return back_pen; +} + + +pen_t nsub_state::choose_pen(uint8_t x, uint8_t y, pen_t back_pen) +{ + return m_s97269pb->choose_pen(x, y, back_pen); +} diff --git a/src/mame/video/victory.cpp b/src/mame/video/victory.cpp index de0b82ff60e..b9680cf13b6 100644 --- a/src/mame/video/victory.cpp +++ b/src/mame/video/victory.cpp @@ -48,6 +48,7 @@ void victory_state::video_start() m_video_control = 0; memset(&m_micro, 0, sizeof(m_micro)); m_micro.timer = machine().scheduler().timer_alloc(timer_expired_delegate()); + m_bgcoll_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(victory_state::bgcoll_irq_callback), this)); /* register for state saving */ save_item(NAME(m_paletteram)); @@ -1117,7 +1118,7 @@ uint32_t victory_state::screen_update(screen_device &screen, bitmap_ind16 &bitma int bpix = bg[(x + m_scrollx) & 255]; scanline[x] = bpix | (fpix << 3); if (fpix && (bpix & bgcollmask) && count++ < 128) - machine().scheduler().timer_set(screen.time_until_pos(y, x), timer_expired_delegate(FUNC(victory_state::bgcoll_irq_callback),this), x | (y << 8)); + m_bgcoll_irq_timer->adjust(screen.time_until_pos(y, x), x | (y << 8)); } } diff --git a/src/mame/video/vindictr.cpp b/src/mame/video/vindictr.cpp index 4ad03590a5c..1575a10c134 100644 --- a/src/mame/video/vindictr.cpp +++ b/src/mame/video/vindictr.cpp @@ -19,7 +19,7 @@ TILE_GET_INFO_MEMBER(vindictr_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0x3ff; int color = ((data >> 10) & 0x0f) | ((data >> 9) & 0x20); int opaque = data & 0x8000; @@ -29,7 +29,7 @@ TILE_GET_INFO_MEMBER(vindictr_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(vindictr_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = (m_playfield_tile_bank * 0x1000) + (data & 0xfff); int color = 0x10 + 2 * ((data >> 12) & 7); SET_TILE_INFO_MEMBER(0, code, color, (data >> 15) & 1); diff --git a/src/mame/video/volfied.cpp b/src/mame/video/volfied.cpp index bd4181c6a22..bc61f879cf6 100644 --- a/src/mame/video/volfied.cpp +++ b/src/mame/video/volfied.cpp @@ -24,24 +24,24 @@ void volfied_state::video_start() READ AND WRITE HANDLERS *******************************************************/ -READ16_MEMBER(volfied_state::volfied_video_ram_r) +READ16_MEMBER(volfied_state::video_ram_r) { return m_video_ram[offset]; } -WRITE16_MEMBER(volfied_state::volfied_video_ram_w) +WRITE16_MEMBER(volfied_state::video_ram_w) { mem_mask &= m_video_mask; COMBINE_DATA(&m_video_ram[offset]); } -WRITE16_MEMBER(volfied_state::volfied_video_ctrl_w) +WRITE16_MEMBER(volfied_state::video_ctrl_w) { COMBINE_DATA(&m_video_ctrl); } -READ16_MEMBER(volfied_state::volfied_video_ctrl_r) +READ16_MEMBER(volfied_state::video_ctrl_r) { /* Could this be some kind of hardware collision detection? If bit 6 is set the game will check for collisions with the large enemy, whereas @@ -52,12 +52,12 @@ READ16_MEMBER(volfied_state::volfied_video_ctrl_r) return 0x60; } -WRITE16_MEMBER(volfied_state::volfied_video_mask_w) +WRITE16_MEMBER(volfied_state::video_mask_w) { COMBINE_DATA(&m_video_mask); } -WRITE16_MEMBER(volfied_state::volfied_sprite_ctrl_w) +WRITE16_MEMBER(volfied_state::sprite_ctrl_w) { m_pc090oj->set_sprite_ctrl((data & 0x3c) >> 2); } @@ -69,8 +69,6 @@ WRITE16_MEMBER(volfied_state::volfied_sprite_ctrl_w) void volfied_state::refresh_pixel_layer( bitmap_ind16 &bitmap ) { - int x, y; - /********************************************************* VIDEO RAM has 2 screens x 256 rows x 512 columns x 16 bits @@ -98,9 +96,9 @@ void volfied_state::refresh_pixel_layer( bitmap_ind16 &bitmap ) if (m_video_ctrl & 1) p += 0x20000; - for (y = 0; y < height; y++) + for (int y = 0; y < height; y++) { - for (x = 1; x < width + 1; x++) // Hmm, 1 pixel offset is needed to align properly with sprites + for (int x = 1; x < width + 1; x++) // Hmm, 1 pixel offset is needed to align properly with sprites { int color = (p[x] << 2) & 0x700; @@ -121,7 +119,7 @@ void volfied_state::refresh_pixel_layer( bitmap_ind16 &bitmap ) } } -uint32_t volfied_state::screen_update_volfied(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t volfied_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { screen.priority().fill(0, cliprect); refresh_pixel_layer(bitmap); diff --git a/src/mame/video/vrender0.cpp b/src/mame/video/vrender0.cpp index 22b514d1840..772a41fd679 100644 --- a/src/mame/video/vrender0.cpp +++ b/src/mame/video/vrender0.cpp @@ -23,10 +23,10 @@ DEVICE INTERFACE *****************************************************************************/ -const device_type VIDEO_VRENDER0 = device_creator; +DEFINE_DEVICE_TYPE(VIDEO_VRENDER0, vr0video_device, "vr0video", "VRender0 Video") vr0video_device::vr0video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VIDEO_VRENDER0, "VRender0 Video", tag, owner, clock, "vr0video", __FILE__) + : device_t(mconfig, VIDEO_VRENDER0, tag, owner, clock) , m_cpu(*this, finder_base::DUMMY_TAG) { } diff --git a/src/mame/video/vrender0.h b/src/mame/video/vrender0.h index 913c5de66b3..607e24a2905 100644 --- a/src/mame/video/vrender0.h +++ b/src/mame/video/vrender0.h @@ -1,37 +1,15 @@ // license:BSD-3-Clause // copyright-holders:ElSemi -#ifndef __VR0VIDEO_H__ -#define __VR0VIDEO_H__ +#ifndef MAME_VIDEO_VRENDER0_H +#define MAME_VIDEO_VRENDER0_H + +#pragma once /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ -struct RenderStateInfo -{ - uint32_t Tx; - uint32_t Ty; - uint32_t Txdx; - uint32_t Tydx; - uint32_t Txdy; - uint32_t Tydy; - uint32_t SrcAlphaColor; - uint32_t SrcBlend; - uint32_t DstAlphaColor; - uint32_t DstBlend; - uint32_t ShadeColor; - uint32_t TransColor; - uint32_t TileOffset; - uint32_t FontOffset; - uint32_t PalOffset; - uint32_t PaletteBank; - uint32_t TextureMode; - uint32_t PixelFormat; - uint32_t Width; - uint32_t Height; -}; - class vr0video_device : public device_t { public: @@ -48,6 +26,30 @@ protected: virtual void device_reset() override; private: + struct RenderStateInfo + { + uint32_t Tx; + uint32_t Ty; + uint32_t Txdx; + uint32_t Tydx; + uint32_t Txdy; + uint32_t Tydy; + uint32_t SrcAlphaColor; + uint32_t SrcBlend; + uint32_t DstAlphaColor; + uint32_t DstBlend; + uint32_t ShadeColor; + uint32_t TransColor; + uint32_t TileOffset; + uint32_t FontOffset; + uint32_t PalOffset; + uint32_t PaletteBank; + uint32_t TextureMode; + uint32_t PixelFormat; + uint32_t Width; + uint32_t Height; + }; + // internal state required_device m_cpu; @@ -57,10 +59,10 @@ private: RenderStateInfo m_RenderState; }; -extern const device_type VIDEO_VRENDER0; +DECLARE_DEVICE_TYPE(VIDEO_VRENDER0, vr0video_device) #define MCFG_VIDEO_VRENDER0_CPU(_tag) \ vr0video_device::set_cpu_tag(*device, "^" _tag); -#endif /* __VR0VIDEO_H__ */ +#endif // MAME_VIDEO_VRENDER0_H diff --git a/src/mame/video/vs920a.cpp b/src/mame/video/vs920a.cpp index da5811f9fd8..a6c0cf10a32 100644 --- a/src/mame/video/vs920a.cpp +++ b/src/mame/video/vs920a.cpp @@ -30,22 +30,22 @@ t=tile, p=palette #include "vs920a.h" -const device_type VS920A = device_creator; +DEFINE_DEVICE_TYPE(VS920A, vs920a_text_tilemap_device, "vs920a", "VS920A Text Tilemap") vs920a_text_tilemap_device::vs920a_text_tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VS920A, "VS920A Text Tilemap", tag, owner, clock, "vs920a", __FILE__), - m_vram(nullptr), - m_pal_base(0), - m_gfx_region(0), - m_gfxdecode(*this, finder_base::DUMMY_TAG) - + : device_t(mconfig, VS920A, tag, owner, clock) + , m_tmap(nullptr) + , m_vram() + , m_pal_base(0) + , m_gfx_region(0) + , m_gfxdecode(*this, finder_base::DUMMY_TAG) { } void vs920a_text_tilemap_device::device_start() { - if(!m_gfxdecode->started()) + if (!m_gfxdecode->started()) throw device_missing_dependencies(); m_vram = make_unique_clear(0x1000/2); @@ -101,16 +101,6 @@ READ16_MEMBER(vs920a_text_tilemap_device::vram_r) } -tilemap_t* vs920a_text_tilemap_device::get_tilemap() -{ - return m_tmap; -} - -void vs920a_text_tilemap_device::set_pal_base(int pal_base) -{ - m_pal_base = pal_base; -} - void vs920a_text_tilemap_device::draw(screen_device &screen, bitmap_ind16& bitmap, const rectangle &cliprect, int priority) { m_tmap->draw(screen, bitmap, cliprect, 0, priority); diff --git a/src/mame/video/vs920a.h b/src/mame/video/vs920a.h index c05e3bf5508..5d53191630f 100644 --- a/src/mame/video/vs920a.h +++ b/src/mame/video/vs920a.h @@ -1,39 +1,43 @@ // license:BSD-3-Clause // copyright-holders:David Haywood +#ifndef MAME_VIDEO_VS920A_H +#define MAME_VIDEO_VS920A_H + +#pragma once class vs920a_text_tilemap_device : public device_t { public: - vs920a_text_tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static void static_set_gfxdecode_tag(device_t &device, const char *tag); static void set_gfx_region(device_t &device, int gfxregion); - tilemap_t* m_tmap; - std::unique_ptr m_vram; - uint16_t m_pal_base; + vs920a_text_tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - TILE_GET_INFO_MEMBER(get_tile_info); - tilemap_t* get_tilemap(); - void set_pal_base(int m_pal_base); + void set_pal_base(int pal_base) { m_pal_base = pal_base; } + void set_transparent_pen(pen_t pen) { m_tmap->set_transparent_pen(pen); } void draw(screen_device &screen, bitmap_ind16& bitmap, const rectangle &cliprect, int priority); DECLARE_WRITE16_MEMBER(vram_w); DECLARE_READ16_MEMBER(vram_r); - protected: virtual void device_start() override; virtual void device_reset() override; - private: + TILE_GET_INFO_MEMBER(get_tile_info); + + tilemap_t* m_tmap; + std::unique_ptr m_vram; + uint16_t m_pal_base; + uint8_t m_gfx_region; required_device m_gfxdecode; }; -extern const device_type VS920A; +DECLARE_DEVICE_TYPE(VS920A, vs920a_text_tilemap_device) #define MCFG_VS920A_GFX_REGION(_region) \ @@ -41,3 +45,5 @@ extern const device_type VS920A; #define MCFG_VS920A_GFXDECODE(_gfxtag) \ vs920a_text_tilemap_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); + +#endif // MAME_VIDEO_VS920A_H diff --git a/src/mame/video/vsystem_gga.cpp b/src/mame/video/vsystem_gga.cpp new file mode 100644 index 00000000000..b320f3b6828 --- /dev/null +++ b/src/mame/video/vsystem_gga.cpp @@ -0,0 +1,69 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/****************************************************************************** + + Video System C7-01 GGA + + Skeleton device. + +******************************************************************************/ + +#include "emu.h" +#include "vsystem_gga.h" + + +//************************************************************************** +// VIDEO SYSTEM GGA DEVICE +//************************************************************************** + +// device type definition +DEFINE_DEVICE_TYPE(VSYSTEM_GGA, vsystem_gga_device, "vsystem_gga", "Video System C7-01 GGA") + +//------------------------------------------------- +// vsystem_gga_device - constructor +//------------------------------------------------- + +vsystem_gga_device::vsystem_gga_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, VSYSTEM_GGA, tag, owner, clock), + device_video_interface(mconfig, *this, false), + m_write_cb(*this) +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void vsystem_gga_device::device_start() +{ + m_write_cb.resolve(); + + m_address_latch = 0; + for (u8 ® : m_regs) + reg = 0; + + save_item(NAME(m_address_latch)); + save_item(NAME(m_regs)); +} + +//------------------------------------------------- +// write - register write handler +//------------------------------------------------- + +WRITE8_MEMBER(vsystem_gga_device::write) +{ + if (offset & 1) + { + // address write + m_address_latch = data & 0x0f; + } + else + { + // data write + m_regs[m_address_latch] = data; + if (m_write_cb.isnull()) + logerror("Setting register $%02x = %02x\n", m_address_latch, data); + else + m_write_cb(m_address_latch, data, 0xff); + } +} diff --git a/src/mame/video/vsystem_gga.h b/src/mame/video/vsystem_gga.h new file mode 100644 index 00000000000..e8804972e85 --- /dev/null +++ b/src/mame/video/vsystem_gga.h @@ -0,0 +1,57 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/****************************************************************************** + + Video System C7-01 GGA + +******************************************************************************/ + +#ifndef MAME_VIDEO_VSYSTEM_GGA_H +#define MAME_VIDEO_VSYSTEM_GGA_H + +#pragma once + +//************************************************************************** +// CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_VSYSTEM_GGA_REGISTER_WRITE_CB(_devcb) \ + devcb = &vsystem_gga_device::static_set_write_cb(*device, DEVCB_##_devcb); + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> vsystem_gga_device + +class vsystem_gga_device : public device_t, public device_video_interface +{ +public: + // construction/destruction + vsystem_gga_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + + // static configuration + template static devcb_base &static_set_write_cb(device_t &device, Obj &&object) { return downcast(device).m_write_cb.set_callback(std::forward(object)); } + + // memory handlers + DECLARE_WRITE8_MEMBER(write); + + // temporary accessor + u8 reg(u8 offset) const { return m_regs[offset]; } + +protected: + // device-level overrides + virtual void device_start() override; + +private: + // internal state + u8 m_address_latch; + u8 m_regs[16]; + devcb_write8 m_write_cb; +}; + +// device type definition +DECLARE_DEVICE_TYPE(VSYSTEM_GGA, vsystem_gga_device) + +#endif // MAME_VIDEO_VSYSTEM_GGA_H diff --git a/src/mame/video/vsystem_spr.cpp b/src/mame/video/vsystem_spr.cpp index d7ffb4ce830..e271b648fb2 100644 --- a/src/mame/video/vsystem_spr.cpp +++ b/src/mame/video/vsystem_spr.cpp @@ -64,23 +64,21 @@ Abstracts the VS9210 #include "screen.h" -const device_type VSYSTEM_SPR = device_creator; +DEFINE_DEVICE_TYPE(VSYSTEM_SPR, vsystem_spr_device, "vsystem_spr", "Video System Sprites") vsystem_spr_device::vsystem_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VSYSTEM_SPR, "Video System Sprites", tag, owner, clock, "vsystem_spr", __FILE__) + : device_t(mconfig, VSYSTEM_SPR, tag, owner, clock) + , m_newtilecb(FUNC(vsystem_spr_device::tile_callback_noindirect), this) + , m_xoffs(0) + , m_yoffs(0) + , m_pdraw(false) + , m_pal_mask(0x3f) + , m_gfx_region(-1) + , m_transpen(15) + , m_pal_base(0) + , m_curr_sprite() , m_gfxdecode(*this, finder_base::DUMMY_TAG) { - m_transpen = 15; - m_pal_base = 0; - m_xoffs = 0; - m_yoffs = 0; - m_pdraw = false; - m_gfx_region = -1; - m_pal_mask = 0x3f; - - m_newtilecb = vsystem_tile_indirection_delegate(FUNC(vsystem_spr_device::tile_callback_noindirect), this); - - memset(&m_curr_sprite, 0, sizeof(m_curr_sprite)); } //------------------------------------------------- @@ -137,11 +135,6 @@ void vsystem_spr_device::CG10103_set_pal_base(device_t &device, int pal_base) } -void vsystem_spr_device::set_pal_base(int pal_base) -{ - m_pal_base = pal_base; -} - // static void vsystem_spr_device::set_pal_mask(device_t &device, int pal_mask) { @@ -181,7 +174,7 @@ void vsystem_spr_device::device_reset() { } -void vsystem_spr_device::get_sprite_attributes(uint16_t* ram) +void vsystem_spr_device::sprite_attributes::get(uint16_t const *ram) { /* attr_start + 0x0000 @@ -205,21 +198,21 @@ void vsystem_spr_device::get_sprite_attributes(uint16_t* ram) xxxx xxxx xxxx xxxx map start (lsb) */ - m_curr_sprite.oy = (ram[0] & 0x01ff); - m_curr_sprite.ysize = (ram[0] & 0x0e00) >> 9; - m_curr_sprite.zoomy = (ram[0] & 0xf000) >> 12; + oy = (ram[0] & 0x01ff); + ysize = (ram[0] & 0x0e00) >> 9; + zoomy = (ram[0] & 0xf000) >> 12; - m_curr_sprite.ox = (ram[1] & 0x01ff); - m_curr_sprite.xsize = (ram[1] & 0x0e00) >> 9; - m_curr_sprite.zoomx = (ram[1] & 0xf000) >> 12; + ox = (ram[1] & 0x01ff); + xsize = (ram[1] & 0x0e00) >> 9; + zoomx = (ram[1] & 0xf000) >> 12; - m_curr_sprite.flipx = (ram[2] & 0x4000); - m_curr_sprite.flipy = (ram[2] & 0x8000); - m_curr_sprite.color = (ram[2] & 0x3f00) >> 8; - m_curr_sprite.pri = (ram[2] & 0x3000) >> 12; - m_curr_sprite.map = (ram[2] & 0x0001) << 16; + flipx = (ram[2] & 0x4000); + flipy = (ram[2] & 0x8000); + color = (ram[2] & 0x3f00) >> 8; + pri = (ram[2] & 0x3000) >> 12; + map = (ram[2] & 0x0001) << 16; - m_curr_sprite.map |= (ram[3] & 0xffff); + map |= (ram[3] & 0xffff); } @@ -286,7 +279,7 @@ void vsystem_spr_device::common_sprite_drawgfx(bitmap_ind16 &bitmap, const recta -void vsystem_spr_device::draw_sprites( uint16_t* spriteram, int spriteram_bytes, screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int prihack_mask, int prihack_val ) +void vsystem_spr_device::draw_sprites(uint16_t const *spriteram, int spriteram_bytes, screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int prihack_mask, int prihack_val ) { int offs; int end = 0; @@ -323,7 +316,7 @@ void vsystem_spr_device::draw_sprites( uint16_t* spriteram, int spriteram_bytes, attr_start = 4 * (spriteram[offs] & 0x03ff); - get_sprite_attributes(&spriteram[attr_start]); + m_curr_sprite.get(&spriteram[attr_start]); m_curr_sprite.color &= m_pal_mask; diff --git a/src/mame/video/vsystem_spr.h b/src/mame/video/vsystem_spr.h index 8167cb5a31c..c033b0d6903 100644 --- a/src/mame/video/vsystem_spr.h +++ b/src/mame/video/vsystem_spr.h @@ -4,6 +4,8 @@ #ifndef MAME_VIDEO_VSYSTEM_SPR_H #define MAME_VIDEO_VSYSTEM_SPR_H +#pragma once + typedef device_delegate vsystem_tile_indirection_delegate; @@ -25,19 +27,47 @@ typedef device_delegate vsystem_tile_indirection_delegate; class vsystem_spr_device : public device_t { public: - vsystem_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); static void set_offsets(device_t &device, int xoffs, int yoffs); static void set_pdraw(device_t &device, bool pdraw); - static void set_tile_indirect_cb(device_t &device,vsystem_tile_indirection_delegate newtilecb); + static void set_tile_indirect_cb(device_t &device, vsystem_tile_indirection_delegate newtilecb); static void set_gfx_region(device_t &device, int gfx_region); static void CG10103_set_pal_base(device_t &device, int pal_base); static void set_pal_mask(device_t &device, int pal_mask); static void CG10103_set_transpen(device_t &device, int transpen); + vsystem_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + void draw_sprites(uint16_t const *spriteram, int spriteram_bytes, screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int prihack_mask = -1, int prihack_val = -1 ); + void set_pal_base(int pal_base) { m_pal_base = pal_base; } + +protected: + virtual void device_start() override; + virtual void device_reset() override; + +private: + struct sprite_attributes + { + sprite_attributes() { } + void get(uint16_t const *ram); + + int ox = 0; + int xsize = 0; + int zoomx = 0; + int oy = 0; + int ysize = 0; + int zoomy = 0; + int flipx = 0; + int flipy = 0; + int color = 0; + int pri = 0; + uint32_t map = 0; + }; + uint32_t tile_callback_noindirect(uint32_t tile); + void common_sprite_drawgfx(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap); + vsystem_tile_indirection_delegate m_newtilecb; // inline config @@ -49,37 +79,12 @@ public: uint16_t m_pal_base; - struct vsystem_sprite_attributes - { - int ox; - int xsize; - int zoomx; - int oy; - int ysize; - int zoomy; - int flipx; - int flipy; - int color; - int pri; - uint32_t map; - } m_curr_sprite; - - void get_sprite_attributes(uint16_t* ram); - void common_sprite_drawgfx(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap); - - void draw_sprites( uint16_t* spriteram, int spriteram_bytes, screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int prihack_mask = -1, int prihack_val = -1 ); - void set_pal_base(int pal_base); + sprite_attributes m_curr_sprite; - -protected: - virtual void device_start() override; - virtual void device_reset() override; - -private: required_device m_gfxdecode; }; -extern const device_type VSYSTEM_SPR; +DECLARE_DEVICE_TYPE(VSYSTEM_SPR, vsystem_spr_device) #endif // MAME_VIDEO_VSYSTEM_SPR_H diff --git a/src/mame/video/vsystem_spr2.cpp b/src/mame/video/vsystem_spr2.cpp index 74712e37021..19e6df502f9 100644 --- a/src/mame/video/vsystem_spr2.cpp +++ b/src/mame/video/vsystem_spr2.cpp @@ -27,17 +27,18 @@ #include "vsystem_spr2.h" -const device_type VSYSTEM_SPR2 = device_creator; +DEFINE_DEVICE_TYPE(VSYSTEM_SPR2, vsystem_spr2_device, "vsystem2_spr", "Video System Sprites Type 2") vsystem_spr2_device::vsystem_spr2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, VSYSTEM_SPR2, "Video System Sprites Type 2", tag, owner, clock, "vsystem_spr2", __FILE__) + : device_t(mconfig, VSYSTEM_SPR2, tag, owner, clock) + , m_newtilecb(vsystem_tile2_indirection_delegate(FUNC(vsystem_spr2_device::tile_callback_noindirect), this)) + , m_pritype(0) // hack until we have better handling + , m_gfx_region(0) + , m_xoffs(0) + , m_yoffs(0) + , m_curr_sprite() , m_gfxdecode(*this, finder_base::DUMMY_TAG) { - m_newtilecb = vsystem_tile2_indirection_delegate(FUNC(vsystem_spr2_device::tile_callback_noindirect), this); - m_pritype = 0; // hack until we have better handling - m_gfx_region = 0; - m_xoffs = 0; - m_yoffs = 0; } //------------------------------------------------- @@ -93,42 +94,42 @@ void vsystem_spr2_device::device_reset() } -int vsystem_spr2_device::get_sprite_attributes(uint16_t* ram) +bool vsystem_spr2_device::sprite_attributes::get(uint16_t const *ram) { // sprite is disabled if (!(ram[2] & 0x0080)) - return 0; + return false; - curr_sprite.oy = (ram[0] & 0x01ff); - curr_sprite.zoomy = (ram[0] & 0xf000) >> 12; + oy = (ram[0] & 0x01ff); + zoomy = (ram[0] & 0xf000) >> 12; - curr_sprite.ox = (ram[1] & 0x01ff); - curr_sprite.zoomx = (ram[1] & 0xf000) >> 12; + ox = (ram[1] & 0x01ff); + zoomx = (ram[1] & 0xf000) >> 12; - curr_sprite.xsize = (ram[2] & 0x0700) >> 8; - curr_sprite.flipx = (ram[2] & 0x0800); + xsize = (ram[2] & 0x0700) >> 8; + flipx = (ram[2] & 0x0800); - curr_sprite.ysize = (ram[2] & 0x7000) >> 12; - curr_sprite.flipy = (ram[2] & 0x8000); + ysize = (ram[2] & 0x7000) >> 12; + flipy = (ram[2] & 0x8000); - curr_sprite.color = (ram[2] & 0x000f); - curr_sprite.pri = (ram[2] & 0x0010); + color = (ram[2] & 0x000f); + pri = (ram[2] & 0x0010); - curr_sprite.map = (ram[3]); + map = (ram[3]); - return 1; + return true; } -void vsystem_spr2_device::handle_xsize_map_inc(void) +void vsystem_spr2_device::sprite_attributes::handle_xsize_map_inc() { - if (curr_sprite.xsize == 2) curr_sprite.map += 1; - if (curr_sprite.xsize == 4) curr_sprite.map += 3; - if (curr_sprite.xsize == 5) curr_sprite.map += 2; - if (curr_sprite.xsize == 6) curr_sprite.map += 1; + if (xsize == 2) map += 1; + if (xsize == 4) map += 3; + if (xsize == 5) map += 2; + if (xsize == 6) map += 1; } -template -void vsystem_spr2_device::turbofrc_draw_sprites_common( uint16_t* spriteram3, int spriteram3_bytes, int spritepalettebank, _BitmapClass &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ) +template +void vsystem_spr2_device::turbofrc_draw_sprites_common(uint16_t const *spriteram3, int spriteram3_bytes, int spritepalettebank, BitmapClass &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ) { int attr_start, first; first = 4 * spriteram3[0x1fe]; @@ -156,30 +157,30 @@ void vsystem_spr2_device::turbofrc_draw_sprites_common( uint16_t* spriteram3, i { int x, y; - if (!get_sprite_attributes(&spriteram3[attr_start])) + if (!m_curr_sprite.get(&spriteram3[attr_start])) continue; // pipedrm - curr_sprite.ox += m_xoffs; - curr_sprite.oy += m_yoffs; + m_curr_sprite.ox += m_xoffs; + m_curr_sprite.oy += m_yoffs; int usepri = 0; // these are still calling the function multiple times to filter out priorities, even if some are also using pdrawgfx(!) if (m_pritype == 0 || m_pritype == 1 || m_pritype == 3) // turbo force, spinlbrk, pipedrm etc. { - if ((curr_sprite.pri>>4) != pri_param) + if ((m_curr_sprite.pri>>4) != pri_param) continue; } if (m_pritype == 0) // turbo force etc. { - usepri = curr_sprite.pri ? 0 : 2; + usepri = m_curr_sprite.pri ? 0 : 2; } else if (m_pritype == 1) // spinlbrk { - usepri = curr_sprite.pri ? 2 : 0; + usepri = m_curr_sprite.pri ? 2 : 0; } else if (m_pritype == 2) // f1gp { @@ -188,55 +189,59 @@ void vsystem_spr2_device::turbofrc_draw_sprites_common( uint16_t* spriteram3, i - curr_sprite.color += 16 * spritepalettebank; + m_curr_sprite.color += 16 * spritepalettebank; - curr_sprite.zoomx = 32 - curr_sprite.zoomx; - curr_sprite.zoomy = 32 - curr_sprite.zoomy; + m_curr_sprite.zoomx = 32 - m_curr_sprite.zoomx; + m_curr_sprite.zoomy = 32 - m_curr_sprite.zoomy; - for (y = 0; y <= curr_sprite.ysize; y++) + for (y = 0; y <= m_curr_sprite.ysize; y++) { int sx, sy; - if (curr_sprite.flipy) - sy = ((curr_sprite.oy + curr_sprite.zoomy * (curr_sprite.ysize - y)/2 + 16) & 0x1ff) - 16; + if (m_curr_sprite.flipy) + sy = ((m_curr_sprite.oy + m_curr_sprite.zoomy * (m_curr_sprite.ysize - y)/2 + 16) & 0x1ff) - 16; else - sy = ((curr_sprite.oy + curr_sprite.zoomy * y / 2 + 16) & 0x1ff) - 16; + sy = ((m_curr_sprite.oy + m_curr_sprite.zoomy * y / 2 + 16) & 0x1ff) - 16; - for (x = 0; x <= curr_sprite.xsize; x++) + for (x = 0; x <= m_curr_sprite.xsize; x++) { int curr; - if (curr_sprite.flipx) - sx = ((curr_sprite.ox + curr_sprite.zoomx * (curr_sprite.xsize - x) / 2 + 16) & 0x1ff) - 16; + if (m_curr_sprite.flipx) + sx = ((m_curr_sprite.ox + m_curr_sprite.zoomx * (m_curr_sprite.xsize - x) / 2 + 16) & 0x1ff) - 16; else - sx = ((curr_sprite.ox + curr_sprite.zoomx * x / 2 + 16) & 0x1ff) - 16; + sx = ((m_curr_sprite.ox + m_curr_sprite.zoomx * x / 2 + 16) & 0x1ff) - 16; - curr = m_newtilecb(curr_sprite.map++); + curr = m_newtilecb(m_curr_sprite.map++); if (m_pritype == 0 || m_pritype == 1 || m_pritype == 2) // pdrawgfx cases { - m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15); - m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15); - m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15); - m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, priority_bitmap,usepri,15); + m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, m_curr_sprite.color, m_curr_sprite.flipx,m_curr_sprite.flipy, sx-0x000,sy-0x000, m_curr_sprite.zoomx << 11, m_curr_sprite.zoomy << 11, priority_bitmap,usepri,15); + m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, m_curr_sprite.color, m_curr_sprite.flipx,m_curr_sprite.flipy, sx-0x200,sy-0x000, m_curr_sprite.zoomx << 11, m_curr_sprite.zoomy << 11, priority_bitmap,usepri,15); + m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, m_curr_sprite.color, m_curr_sprite.flipx,m_curr_sprite.flipy, sx-0x000,sy-0x200, m_curr_sprite.zoomx << 11, m_curr_sprite.zoomy << 11, priority_bitmap,usepri,15); + m_gfxdecode->gfx(m_gfx_region)->prio_zoom_transpen(bitmap,cliprect, curr, m_curr_sprite.color, m_curr_sprite.flipx,m_curr_sprite.flipy, sx-0x200,sy-0x200, m_curr_sprite.zoomx << 11, m_curr_sprite.zoomy << 11, priority_bitmap,usepri,15); } else // drawgfx cases (welltris, pipedrm) { - m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15); - m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x000, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15); - m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x000,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15); - m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, curr_sprite.color, curr_sprite.flipx,curr_sprite.flipy, sx-0x200,sy-0x200, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11,15); + m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, m_curr_sprite.color, m_curr_sprite.flipx,m_curr_sprite.flipy, sx-0x000,sy-0x000, m_curr_sprite.zoomx << 11, m_curr_sprite.zoomy << 11,15); + m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, m_curr_sprite.color, m_curr_sprite.flipx,m_curr_sprite.flipy, sx-0x200,sy-0x000, m_curr_sprite.zoomx << 11, m_curr_sprite.zoomy << 11,15); + m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, m_curr_sprite.color, m_curr_sprite.flipx,m_curr_sprite.flipy, sx-0x000,sy-0x200, m_curr_sprite.zoomx << 11, m_curr_sprite.zoomy << 11,15); + m_gfxdecode->gfx(m_gfx_region)->zoom_transpen(bitmap,cliprect, curr, m_curr_sprite.color, m_curr_sprite.flipx,m_curr_sprite.flipy, sx-0x200,sy-0x200, m_curr_sprite.zoomx << 11, m_curr_sprite.zoomy << 11,15); } } - handle_xsize_map_inc(); + m_curr_sprite.handle_xsize_map_inc(); } } } -void vsystem_spr2_device::turbofrc_draw_sprites( uint16_t* spriteram3, int spriteram3_bytes, int spritepalettebank, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ) -{ turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spritepalettebank, bitmap, cliprect, priority_bitmap, pri_param ); } +void vsystem_spr2_device::turbofrc_draw_sprites(uint16_t const *spriteram3, int spriteram3_bytes, int spritepalettebank, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ) +{ + turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spritepalettebank, bitmap, cliprect, priority_bitmap, pri_param ); +} -void vsystem_spr2_device::turbofrc_draw_sprites( uint16_t* spriteram3, int spriteram3_bytes, int spritepalettebank, bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ) -{ turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spritepalettebank, bitmap, cliprect, priority_bitmap, pri_param ); } +void vsystem_spr2_device::turbofrc_draw_sprites(uint16_t const *spriteram3, int spriteram3_bytes, int spritepalettebank, bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ) +{ + turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spritepalettebank, bitmap, cliprect, priority_bitmap, pri_param ); +} diff --git a/src/mame/video/vsystem_spr2.h b/src/mame/video/vsystem_spr2.h index 646abf8d0c7..2ab7b87fffa 100644 --- a/src/mame/video/vsystem_spr2.h +++ b/src/mame/video/vsystem_spr2.h @@ -1,6 +1,8 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria, David Haywood // Video System Sprites +#ifndef MAME_VIDEO_VSYSTEM_SPR2_H +#define MAME_VIDEO_VSYSTEM_SPR2_H typedef device_delegate vsystem_tile2_indirection_delegate; @@ -18,54 +20,58 @@ typedef device_delegate vsystem_tile2_indirection_delegate; class vsystem_spr2_device : public device_t { public: - vsystem_spr2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - // static configuration + // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); - static void set_tile_indirect_cb(device_t &device,vsystem_tile2_indirection_delegate newtilecb); + static void set_tile_indirect_cb(device_t &device, vsystem_tile2_indirection_delegate newtilecb); static void set_pritype(device_t &device, int pritype); static void set_gfx_region(device_t &device, int gfx_region); static void set_offsets(device_t &device, int xoffs, int yoffs); - struct vsystem_sprite_attributes - { - int ox; - int xsize; - int zoomx; - int oy; - int ysize; - int zoomy; - int flipx; - int flipy; - int color; - int pri; - uint32_t map; - } curr_sprite; - - int get_sprite_attributes(uint16_t* ram); - void handle_xsize_map_inc(void); - vsystem_tile2_indirection_delegate m_newtilecb; - uint32_t tile_callback_noindirect(uint32_t tile); - int m_pritype; - int m_gfx_region; - int m_xoffs, m_yoffs; - - template - void turbofrc_draw_sprites_common( uint16_t* spriteram3, int spriteram3_bytes, int spritepalettebank, _BitmapClass &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ); - - void turbofrc_draw_sprites( uint16_t* spriteram3, int spriteram3_bytes, int spritepalettebank, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ); - void turbofrc_draw_sprites( uint16_t* spriteram3, int spriteram3_bytes, int spritepalettebank, bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ); - + vsystem_spr2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + void turbofrc_draw_sprites(uint16_t const *spriteram3, int spriteram3_bytes, int spritepalettebank, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ); + void turbofrc_draw_sprites(uint16_t const *spriteram3, int spriteram3_bytes, int spritepalettebank, bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ); protected: virtual void device_start() override; virtual void device_reset() override; - private: + struct sprite_attributes + { + sprite_attributes() { } + bool get(uint16_t const *ram); + void handle_xsize_map_inc(); + + int ox = 0; + int xsize = 0; + int zoomx = 0; + int oy = 0; + int ysize = 0; + int zoomy = 0; + int flipx = 0; + int flipy = 0; + int color = 0; + int pri = 0; + uint32_t map = 0; + }; + + uint32_t tile_callback_noindirect(uint32_t tile); + + template + void turbofrc_draw_sprites_common(uint16_t const *spriteram3, int spriteram3_bytes, int spritepalettebank, BitmapClass &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_param ); + + vsystem_tile2_indirection_delegate m_newtilecb; + int m_pritype; + int m_gfx_region; + int m_xoffs, m_yoffs; + + sprite_attributes m_curr_sprite; + required_device m_gfxdecode; }; -extern const device_type VSYSTEM_SPR2; +DECLARE_DEVICE_TYPE(VSYSTEM_SPR2, vsystem_spr2_device) + +#endif // MAME_VIDEO_VSYSTEM_SPR2_H diff --git a/src/mame/video/vtvideo.cpp b/src/mame/video/vtvideo.cpp index 225af086bdd..79b9019987c 100644 --- a/src/mame/video/vtvideo.cpp +++ b/src/mame/video/vtvideo.cpp @@ -70,12 +70,12 @@ PARAMETERS #define LOG(x) do { if (VERBOSE) logerror x; } while (0) -const device_type VT100_VIDEO = device_creator; -const device_type RAINBOW_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(VT100_VIDEO, vt100_video_device, "vt100_video", "VT100 Video") +DEFINE_DEVICE_TYPE(RAINBOW_VIDEO, rainbow_video_device, "rainbow_video", "Rainbow Video") -vt100_video_device::vt100_video_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source) +vt100_video_device::vt100_video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) , device_video_interface(mconfig, *this) , m_read_ram(*this) , m_write_clear_video_interrupt(*this) @@ -86,13 +86,13 @@ vt100_video_device::vt100_video_device(const machine_config &mconfig, device_typ vt100_video_device::vt100_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : vt100_video_device(mconfig, VT100_VIDEO, "VT100 Video", tag, owner, clock, "vt100_video", __FILE__) + : vt100_video_device(mconfig, VT100_VIDEO, tag, owner, clock) { } rainbow_video_device::rainbow_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : vt100_video_device(mconfig, RAINBOW_VIDEO, "Rainbow Video", tag, owner, clock, "rainbow_video", __FILE__) + : vt100_video_device(mconfig, RAINBOW_VIDEO, tag, owner, clock) { } @@ -108,7 +108,8 @@ void vt100_video_device::device_start() m_write_clear_video_interrupt.resolve_safe(); // LBA7 is scan line frequency update - machine().scheduler().timer_pulse(attotime::from_nsec(31778), timer_expired_delegate(FUNC(vt100_video_device::lba7_change), this)); + m_lba7_change_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(vt100_video_device::lba7_change), this)); + m_lba7_change_timer->adjust(attotime::from_nsec(31778), 0, attotime::from_nsec(31778)); save_item(NAME(m_lba7)); save_item(NAME(m_scroll_latch)); diff --git a/src/mame/video/vtvideo.h b/src/mame/video/vtvideo.h index 1293fdd6cc9..f753e2cb4fc 100644 --- a/src/mame/video/vtvideo.h +++ b/src/mame/video/vtvideo.h @@ -9,20 +9,20 @@ DEC VT Terminal video emulation **********************************************************************/ -#ifndef __VT_VIDEO__ -#define __VT_VIDEO__ +#ifndef MAME_VIDEO_VTVIDEO_H +#define MAME_VIDEO_VTVIDEO_H + +#pragma once class vt100_video_device : public device_t, public device_video_interface { public: - vt100_video_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source); vt100_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~vt100_video_device() {} - template static devcb_base &set_ram_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_ram.set_callback(object); } - template static devcb_base &set_clear_video_irq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_clear_video_interrupt.set_callback(object); } + template static devcb_base &set_ram_rd_callback(device_t &device, Object &&cb) { return downcast(device).m_read_ram.set_callback(std::forward(cb)); } + template static devcb_base &set_clear_video_irq_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_clear_video_interrupt.set_callback(std::forward(cb)); } static void set_chargen_tag(device_t &device, const char *tag) { downcast(device).m_char_rom.set_tag(tag); } @@ -33,6 +33,8 @@ public: virtual void video_update(bitmap_ind16 &bitmap, const rectangle &cliprect); protected: + vt100_video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -64,6 +66,7 @@ protected: uint8_t m_fill_lines; uint8_t m_frequency; uint8_t m_interlaced; + emu_timer * m_lba7_change_timer; required_region_ptr m_char_rom; /* character rom region */ required_device m_palette; @@ -92,8 +95,8 @@ protected: virtual machine_config_constructor device_mconfig_additions() const override; }; -extern const device_type VT100_VIDEO; -extern const device_type RAINBOW_VIDEO; +DECLARE_DEVICE_TYPE(VT100_VIDEO, vt100_video_device) +DECLARE_DEVICE_TYPE(RAINBOW_VIDEO, rainbow_video_device) #define MCFG_VT_SET_SCREEN MCFG_VIDEO_SET_SCREEN @@ -107,4 +110,4 @@ extern const device_type RAINBOW_VIDEO; #define MCFG_VT_VIDEO_CLEAR_VIDEO_INTERRUPT_CALLBACK(_write) \ devcb = &vt100_video_device::set_clear_video_irq_wr_callback(*device, DEVCB_##_write); -#endif +#endif // MAME_VIDEO_VTVIDEO_H diff --git a/src/mame/video/williams.cpp b/src/mame/video/williams.cpp index ef82e0a163d..17b621f4107 100644 --- a/src/mame/video/williams.cpp +++ b/src/mame/video/williams.cpp @@ -14,13 +14,14 @@ Defender and Stargate simply draw graphics to the framebuffer directly with no extra intervention. - Later games added a pair of "special chips" (SC-01) to the board which + Later games added a pair of "special chips" (Special Chip 1, and Special + Chip 2, abbreviated for clarity as SC1 and SC2) to the board which are special purpose blitters. During their operation they HALT the main CPU so that they can control the busses. The operation of the chips is described in detail below. - The original SC-01 had a bug that forced an XOR of the width and height - values with 4. This was fixed in the SC-02, which was used on several + The original SC1 had a bug that forced an XOR of the width and height + values with 4. This was fixed in the SC2, which was used on several later games. Beginning with Sinistar, additional video tweaks were added. @@ -57,7 +58,7 @@ were added to the ROM boards of the later games. Splat!, Blaster, Mystic Marathon and Joust 2 used Special Chip 2s. The only difference that I've seen is that SC1s have a small bug. When you tell the SC1 the size of - the data to move, you have to exclusive-or the width and height with 2. + the data to move, you have to exclusive-or the width and height with 4. The SC2s eliminate this bug. The blitters were accessed at memory location $CA00-CA06. @@ -91,7 +92,61 @@ Bits 6 and 7 only blit every other pixel of the image. Bit 6 says even only, while bit 7 says odd only. -***************************************************************************/ +****************************************************************************** + Special Chip 1 and 2 aka VLSI VL2001/2001A Pinout: + _______ _______ + _|* \__/ |_ + /E <- |_|1 40|_| ?-> /WINH + _| |_ + TCF <- |_|2 39|_| -> A15 + _| |_ + /HTCF <-? |_|3 38|_| -> A14 + _| |_ + D7 <> |_|4 37|_| -> A13 + _| |_ + /HALT -> |_|5 36|_| <- /RESET + _| |_ + /BABS -> |_|6 35|_| == /4MHZ + _| |_ + D6 <> |_|7 34|_| -> A12 + _| |_ + D5 <> |_|8 33|_| -> A11 + _| |_ + D4 <> |_|9 5 V 32|_| -> A10 + _| 4 T |_ + (not bonded, pcb GND) N/C |_|10 1 V I 31|_| -> A9 + _| 0 L |_ + D3 <> |_|11 - 2 30|_| -> A8 + _| 0 0 8 |_ + D2 <> |_|12 9 0 2 29|_| -- VCC(+5v) + _| 8 1 2 |_ + D1 <> |_|13 6 0 28|_| <> A0 + _| 6 |_ + U/L -> |_|14 27|_| <> A1 + _| |_ +(not bonded, pcb +12v) N/C |_|15 26|_| <> A2 + _| |_ + GND -- |_|16 25|_| <- /CS + _| |_ + D0 <> |_|17 24|_| N/C (not bonded, pcb GND) + _| |_ + R/W <>? |_|18 23|_| -> A7 + _| |_ + A3 <- |_|19 22|_| -> A6 + _| |_ + A4 <- |_|20 21|_| -> A5 + |__________________| + +The full silkscreen markings of SC1 (under the "Special Chip 1" sticker, if it is present) are: + VTI 8220 + VL2001 + 5410-09866 + +The full silkscreen markings of SC2 (under the "Special Chip 2" sticker, if it is present) are: + 242 + VL2001A + 5410-09958 +******************************************************************************/ #include "emu.h" #include "video/resnet.h" @@ -458,7 +513,7 @@ void williams_state::blitter_init(int blitter_config, const uint8_t *remap_prom) m_blitter_window_enable = 0; /* switch off the video config */ - m_blitter_xor = (blitter_config == WILLIAMS_BLITTER_SC01) ? 4 : 0; + m_blitter_xor = (blitter_config == WILLIAMS_BLITTER_SC1) ? 4 : 0; /* create the remap table; if no PROM, make an identity remap table */ m_blitter_remap_lookup = std::make_unique(256 * 256); diff --git a/src/mame/video/wolfpack.cpp b/src/mame/video/wolfpack.cpp index c96da80ffe8..871c3dd01be 100644 --- a/src/mame/video/wolfpack.cpp +++ b/src/mame/video/wolfpack.cpp @@ -44,51 +44,51 @@ PALETTE_INIT_MEMBER(wolfpack_state, wolfpack) } -WRITE8_MEMBER(wolfpack_state::wolfpack_ship_size_w) +WRITE8_MEMBER(wolfpack_state::ship_size_w) { m_ship_size = data; } -WRITE8_MEMBER(wolfpack_state::wolfpack_video_invert_w) +WRITE8_MEMBER(wolfpack_state::video_invert_w) { m_video_invert = data & 1; } -WRITE8_MEMBER(wolfpack_state::wolfpack_ship_reflect_w) +WRITE8_MEMBER(wolfpack_state::ship_reflect_w) { m_ship_reflect = data & 1; } -WRITE8_MEMBER(wolfpack_state::wolfpack_pt_pos_select_w) +WRITE8_MEMBER(wolfpack_state::pt_pos_select_w) { m_pt_pos_select = data & 1; } -WRITE8_MEMBER(wolfpack_state::wolfpack_pt_horz_w) +WRITE8_MEMBER(wolfpack_state::pt_horz_w) { m_pt_horz = data; } -WRITE8_MEMBER(wolfpack_state::wolfpack_pt_pic_w) +WRITE8_MEMBER(wolfpack_state::pt_pic_w) { m_pt_pic = data & 0x3f; } -WRITE8_MEMBER(wolfpack_state::wolfpack_ship_h_w) +WRITE8_MEMBER(wolfpack_state::ship_h_w) { m_ship_h = data; } -WRITE8_MEMBER(wolfpack_state::wolfpack_torpedo_pic_w) +WRITE8_MEMBER(wolfpack_state::torpedo_pic_w) { m_torpedo_pic = data; } -WRITE8_MEMBER(wolfpack_state::wolfpack_ship_h_precess_w) +WRITE8_MEMBER(wolfpack_state::ship_h_precess_w) { m_ship_h_precess = data & 0x3f; } -WRITE8_MEMBER(wolfpack_state::wolfpack_ship_pic_w) +WRITE8_MEMBER(wolfpack_state::ship_pic_w) { m_ship_pic = data & 0x0f; } -WRITE8_MEMBER(wolfpack_state::wolfpack_torpedo_h_w) +WRITE8_MEMBER(wolfpack_state::torpedo_h_w) { m_torpedo_h = data; } -WRITE8_MEMBER(wolfpack_state::wolfpack_torpedo_v_w) +WRITE8_MEMBER(wolfpack_state::torpedo_v_w) { m_torpedo_v = data; } @@ -96,16 +96,14 @@ WRITE8_MEMBER(wolfpack_state::wolfpack_torpedo_v_w) void wolfpack_state::video_start() { - uint16_t val = 0; - - int i; - m_LFSR = std::make_unique(0x8000); m_screen->register_screen_bitmap(m_helper); - for (i = 0; i < 0x8000; i++) + for (int i = 0; i < 0x8000; i++) { + uint16_t val = 0; + int bit = (val >> 0x0) ^ (val >> 0xe) ^ 1; val = (val << 1) | (bit & 1); @@ -114,6 +112,21 @@ void wolfpack_state::video_start() } m_current_index = 0x80; + + save_item(NAME(m_collision)); + save_item(NAME(m_current_index)); + save_item(NAME(m_video_invert)); + save_item(NAME(m_ship_reflect)); + save_item(NAME(m_pt_pos_select)); + save_item(NAME(m_pt_horz)); + save_item(NAME(m_pt_pic)); + save_item(NAME(m_ship_h)); + save_item(NAME(m_torpedo_pic)); + save_item(NAME(m_ship_size)); + save_item(NAME(m_ship_h_precess)); + save_item(NAME(m_ship_pic)); + save_item(NAME(m_torpedo_h)); + save_item(NAME(m_torpedo_v)); } @@ -233,7 +246,7 @@ void wolfpack_state::draw_water(palette_device &palette, bitmap_ind16 &bitmap, c } -uint32_t wolfpack_state::screen_update_wolfpack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t wolfpack_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i; int j; @@ -273,7 +286,7 @@ uint32_t wolfpack_state::screen_update_wolfpack(screen_device &screen, bitmap_in } -void wolfpack_state::screen_eof_wolfpack(screen_device &screen, bool state) +WRITE_LINE_MEMBER(wolfpack_state::screen_vblank) { // rising edge if (state) diff --git a/src/mame/video/wpc_dmd.cpp b/src/mame/video/wpc_dmd.cpp index fc6338f3301..755c4b7fbc4 100644 --- a/src/mame/video/wpc_dmd.cpp +++ b/src/mame/video/wpc_dmd.cpp @@ -5,7 +5,7 @@ #include "rendlay.h" #include "screen.h" -const device_type WPC_DMD = device_creator; +DEFINE_DEVICE_TYPE(WPC_DMD, wpc_dmd_device, "wpc_dmd", "Williams Pinball Controller Dot Matrix Display") DEVICE_ADDRESS_MAP_START( registers, 8, wpc_dmd_device ) AM_RANGE(0, 0) AM_WRITE(bank2_w) @@ -32,7 +32,7 @@ MACHINE_CONFIG_END wpc_dmd_device::wpc_dmd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, WPC_DMD, "Williams Pinball Controller Dot Matrix Display", tag, owner, clock, "wpc_dmd", __FILE__), + device_t(mconfig, WPC_DMD, tag, owner, clock), scanline_cb(*this), dmd0(*this, ":dmd0"), dmd2(*this, ":dmd2"), diff --git a/src/mame/video/wpc_dmd.h b/src/mame/video/wpc_dmd.h index e5c51fd04af..6fc3f1b57e7 100644 --- a/src/mame/video/wpc_dmd.h +++ b/src/mame/video/wpc_dmd.h @@ -5,8 +5,8 @@ // A 128x32 plasma display with 16 pages and refreshed at 240Hz (for PWM luminosity control) -#ifndef WPC_DMD_H -#define WPC_DMD_H +#ifndef MAME_VIDEO_WPC_DMD_H +#define MAME_VIDEO_WPC_DMD_H #define MCFG_WPC_DMD_ADD( _tag, _scanline_cb ) \ MCFG_DEVICE_ADD( _tag, WPC_DMD, 0 ) \ @@ -32,7 +32,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(scanline_timer); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - template static devcb_base &set_scanline_cb(device_t &device, _Object object) { return downcast(device).scanline_cb.set_callback(object); } + template static devcb_base &set_scanline_cb(device_t &device, Object &&cb) { return downcast(device).scanline_cb.set_callback(std::forward(cb)); } protected: devcb_write_line scanline_cb; @@ -46,6 +46,6 @@ protected: virtual machine_config_constructor device_mconfig_additions() const override; }; -extern const device_type WPC_DMD; +DECLARE_DEVICE_TYPE(WPC_DMD, wpc_dmd_device) -#endif +#endif // MAME_VIDEO_WPC_DMD_H diff --git a/src/mame/video/wswan.cpp b/src/mame/video/wswan.cpp index 4ac72c2e596..cbfe7219f2f 100644 --- a/src/mame/video/wswan.cpp +++ b/src/mame/video/wswan.cpp @@ -17,12 +17,12 @@ #include "wswan.h" #include "screen.h" -const device_type WSWAN_VIDEO = device_creator; +DEFINE_DEVICE_TYPE(WSWAN_VIDEO, wswan_video_device, "wswan_video", "Bandai WonderSwam VDP") wswan_video_device::wswan_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, WSWAN_VIDEO, "Bandai WonderSwan VDP", tag, owner, clock, "wswan_video", __FILE__), - m_vdp_type(VDP_TYPE_WSWAN) + : device_t(mconfig, WSWAN_VIDEO, tag, owner, clock) + , m_vdp_type(VDP_TYPE_WSWAN) { } diff --git a/src/mame/video/wswan.h b/src/mame/video/wswan.h index 8a6b550b3ca..e6735ba768f 100644 --- a/src/mame/video/wswan.h +++ b/src/mame/video/wswan.h @@ -11,8 +11,10 @@ **********************************************************************/ -#ifndef __WSWAN_VIDEO__ -#define __WSWAN_VIDEO__ +#ifndef MAME_VIDEO_WSWAN_H +#define MAME_VIDEO_WSWAN_H + +#pragma once enum @@ -142,7 +144,7 @@ protected: static const uint8_t WSWAN_VIDEO_IFLAG_HBLTMR = 0x80; }; -extern const device_type WSWAN_VIDEO; +DECLARE_DEVICE_TYPE(WSWAN_VIDEO, wswan_video_device) -#endif +#endif // MAME_VIDEO_WSWAN_H diff --git a/src/mame/video/xbox_nv2a.cpp b/src/mame/video/xbox_nv2a.cpp index d5a112912ce..3052cad0644 100644 --- a/src/mame/video/xbox_nv2a.cpp +++ b/src/mame/video/xbox_nv2a.cpp @@ -3382,9 +3382,9 @@ int nv2a_renderer::geforce_exec_method(address_space & space, uint32_t chanel, u pgraph[0x100 / 4] |= 1; pgraph[0x108 / 4] |= 1; if (update_interrupts() == true) - interruptdevice->ir3_w(1); // IRQ 3 + irq_callback(1); // IRQ 3 else - interruptdevice->ir3_w(0); // IRQ 3 + irq_callback(0); // IRQ 3 return 2; } else @@ -4486,7 +4486,7 @@ void nv2a_renderer::combiner_compute_a_outputs(int stage_number) combiner.function_Aop3 = std::max(std::min((combiner.function_Aop3 + biasa) * scalea, 1.0f), -1.0f); } -void nv2a_renderer::vblank_callback(screen_device &screen, bool state) +WRITE_LINE_MEMBER(nv2a_renderer::vblank_callback) { #ifdef LOG_NV2A printf("vblank_callback\n\r"); @@ -4504,9 +4504,9 @@ void nv2a_renderer::vblank_callback(screen_device &screen, bool state) pcrtc[0x808 / 4] &= ~0x10000; } if (update_interrupts() == true) - interruptdevice->ir3_w(1); // IRQ 3 + irq_callback(1); // IRQ 3 else - interruptdevice->ir3_w(0); // IRQ 3 + irq_callback(0); // IRQ 3 } bool nv2a_renderer::update_interrupts() @@ -4821,6 +4821,7 @@ WRITE32_MEMBER(nv2a_renderer::geforce_w) ((*dmaput == 0x0574d000) && (*dmaget == 0x07f4d000)) || // only for mj2c ((*dmaput == 0x07ca3000) && (*dmaget == 0x07f4d000)) || // only for hotd3 ((*dmaput == 0x063cd000) && (*dmaget == 0x07f4d000)) || // only for vcop3 + ((*dmaput == 0x07f4f000) && (*dmaget == 0x07f4d000)) || // only for ccfboxa ((*dmaput == 0x07dca000) && (*dmaget == 0x07f4d000))) // only for crtaxihr { *dmaget = *dmaput; @@ -4841,9 +4842,9 @@ WRITE32_MEMBER(nv2a_renderer::geforce_w) // machine().logerror("NV_2A: write at %08X mask %08X value %08X\n",0xfd000000+offset*4,mem_mask,data); if (update_int == true) { if (update_interrupts() == true) - interruptdevice->ir3_w(1); // IRQ 3 + irq_callback(1); // IRQ 3 else - interruptdevice->ir3_w(0); // IRQ 3 + irq_callback(0); // IRQ 3 } } @@ -4858,8 +4859,3 @@ void nv2a_renderer::start(address_space *cpu_space) puller_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(nv2a_renderer::puller_timer_work), this), (void *)"NV2A Puller Timer"); puller_timer->enable(false); } - -void nv2a_renderer::set_interrupt_device(pic8259_device *device) -{ - interruptdevice = device; -} diff --git a/src/mame/video/xexex.cpp b/src/mame/video/xexex.cpp index 57d154484d2..3ce65d86128 100644 --- a/src/mame/video/xexex.cpp +++ b/src/mame/video/xexex.cpp @@ -43,12 +43,12 @@ void xexex_state::video_start() uint32_t xexex_state::screen_update_xexex(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - static const int K053251_CI[4] = { K053251_CI1, K053251_CI2, K053251_CI3, K053251_CI4 }; + static const int K053251_CI[4] = { k053251_device::CI1, k053251_device::CI2, k053251_device::CI3, k053251_device::CI4 }; int layer[4]; int bg_colorbase, new_colorbase, plane, alpha; - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI0); - bg_colorbase = m_k053251->get_palette_index(K053251_CI1); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI0); + bg_colorbase = m_k053251->get_palette_index(k053251_device::CI1); m_layer_colorbase[0] = 0x70; for (plane = 1; plane < 4; plane++) @@ -62,13 +62,13 @@ uint32_t xexex_state::screen_update_xexex(screen_device &screen, bitmap_rgb32 &b } layer[0] = 1; - m_layerpri[0] = m_k053251->get_priority(K053251_CI2); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI2); layer[1] = 2; - m_layerpri[1] = m_k053251->get_priority(K053251_CI3); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI3); layer[2] = 3; - m_layerpri[2] = m_k053251->get_priority(K053251_CI4); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI4); layer[3] = -1; - m_layerpri[3] = m_k053251->get_priority(K053251_CI1); + m_layerpri[3] = m_k053251->get_priority(k053251_device::CI1); konami_sortlayers4(layer, m_layerpri); diff --git a/src/mame/video/xmen.cpp b/src/mame/video/xmen.cpp index 9cc6991194b..e3592f4f678 100644 --- a/src/mame/video/xmen.cpp +++ b/src/mame/video/xmen.cpp @@ -71,20 +71,20 @@ uint32_t xmen_state::screen_update_xmen(screen_device &screen, bitmap_ind16 &bit { int layer[3], bg_colorbase; - bg_colorbase = m_k053251->get_palette_index(K053251_CI4); - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI3); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI0); - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI2); + bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI3); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI0); + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI2); m_k052109->tilemap_update(); layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI3); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI3); layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI0); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI0); layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI2); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI2); konami_sortlayers3(layer, m_layerpri); @@ -135,7 +135,7 @@ uint32_t xmen_state::screen_update_xmen6p_right(screen_device &screen, bitmap_in } /* my lefts and rights are mixed up in several places.. */ -void xmen_state::screen_eof_xmen6p(screen_device &screen, bool state) +WRITE_LINE_MEMBER(xmen_state::screen_vblank_xmen6p) { // rising edge if (state) @@ -191,20 +191,20 @@ void xmen_state::screen_eof_xmen6p(screen_device &screen, bool state) } - bg_colorbase = m_k053251->get_palette_index(K053251_CI4); - m_sprite_colorbase = m_k053251->get_palette_index(K053251_CI1); - m_layer_colorbase[0] = m_k053251->get_palette_index(K053251_CI3); - m_layer_colorbase[1] = m_k053251->get_palette_index(K053251_CI0); - m_layer_colorbase[2] = m_k053251->get_palette_index(K053251_CI2); + bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4); + m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1); + m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI3); + m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI0); + m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI2); m_k052109->tilemap_update(); layer[0] = 0; - m_layerpri[0] = m_k053251->get_priority(K053251_CI3); + m_layerpri[0] = m_k053251->get_priority(k053251_device::CI3); layer[1] = 1; - m_layerpri[1] = m_k053251->get_priority(K053251_CI0); + m_layerpri[1] = m_k053251->get_priority(k053251_device::CI0); layer[2] = 2; - m_layerpri[2] = m_k053251->get_priority(K053251_CI2); + m_layerpri[2] = m_k053251->get_priority(k053251_device::CI2); konami_sortlayers3(layer, m_layerpri); diff --git a/src/mame/video/xybots.cpp b/src/mame/video/xybots.cpp index be9a0711093..f0eec960268 100644 --- a/src/mame/video/xybots.cpp +++ b/src/mame/video/xybots.cpp @@ -21,7 +21,7 @@ TILE_GET_INFO_MEMBER(xybots_state::get_alpha_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_alpha_tilemap->basemem_read(tile_index); int code = data & 0x3ff; int color = (data >> 12) & 7; int opaque = data & 0x8000; @@ -31,7 +31,7 @@ TILE_GET_INFO_MEMBER(xybots_state::get_alpha_tile_info) TILE_GET_INFO_MEMBER(xybots_state::get_playfield_tile_info) { - uint16_t data = tilemap.basemem_read(tile_index); + uint16_t data = m_playfield_tilemap->basemem_read(tile_index); int code = data & 0x1fff; int color = (data >> 11) & 0x0f; SET_TILE_INFO_MEMBER(0, code, color, (data >> 15) & 1); diff --git a/src/mame/video/ygv608.cpp b/src/mame/video/ygv608.cpp index 0366048e3c6..2b622eaf786 100644 --- a/src/mame/video/ygv608.cpp +++ b/src/mame/video/ygv608.cpp @@ -36,6 +36,187 @@ #include "screen.h" +// Fundamental constants +enum { + p5_rwai = 0x80, // increment register select on reads + p5_rrai = 0x40, // increment register select on writes + p5_rn = 0x3f, // register select + +// p6_res6 = 0xe0, + p6_fp = 0x10, // position detection flag + p6_fv = 0x08, // vertical border interval flag + p6_fc = 0x04, + p6_hb = 0x02, // horizontal blanking flag? + p6_vb = 0x01, // vertical blanking flag? + +// p7_res7 = 0xc0, + p7_tr = 0x20, + p7_tc = 0x10, + p7_tl = 0x08, + p7_ts = 0x04, + p7_tn = 0x02, + p7_sr = 0x01, + + r0_pnya = 0x80, // if set, increment name table address after reads + r0_b_a = 0x40, // if set, we're reading from the second plane of tile data + r0_pny = 0x3f, // y-coordinate of current name table address + + r1_pnxa = 0x80, // if set, increment name table address after read + r1_res1 = 0x40, + r1_pnx = 0x3f, // x-coordinate of current name table address + + r2_cpaw = 0x80, // if set, increment color palette address after writes + r2_cpar = 0x40, // if set, increment color palette address after reads +// r2_res2 = 0x20, + r2_b_a = 0x10, + r2_scaw = 0x08, // if set, increment scroll address after writes + r2_scar = 0x04, // if set, increment scroll address after reads + r2_saaw = 0x02, // if set, increment sprite address after writes + r2_saar = 0x01, // if set, increment sprite address after reads + + r7_dckm = 0x80, + r7_flip = 0x40, +// r7_res7 = 0x30, + r7_zron = 0x08, // if set, roz plane is active + r7_md = 0x06, // determines 1 of 4 possible video modes + r7_dspe = 0x01, // if set, display is enabled + + r8_hds = 0xc0, + r8_vds = 0x30, + r8_rlrt = 0x08, + r8_rlsc = 0x04, +// r8_res8 = 0x02, + r8_pgs = 0x01, + + r9_pts = 0xc0, + r9_slh = 0x38, + r9_slv = 0x07, + + r10_spa = 0xc0, // misc global sprite attributes (x/y flip or sprite size) + r10_spas = 0x20, // if set, spa controls sprite flip, if clear, controls sprite size + r10_sprd = 0x10, // if set, sprites are disabled + r10_mcb = 0x0c, + r10_mca = 0x03, + + r11_scm = 0xc0, + r11_yse = 0x20, + r11_cbdr = 0x10, + r11_prm = 0x0c, // determines one of 4 priority settings + r11_ctpb = 0x02, + r11_ctpa = 0x01, + + r12_spf = 0xc0, + r12_bpf = 0x38, + r12_apf = 0x07, + +// r14_res14 = 0xfc, + r14_iep = 0x02, // if set, generate IRQ on position detection (?) + r14_iev = 0x01, // if set, generate IRQ on vertical border interval draw + + // these 4 are currently unimplemented by us + r16_fpm = 0x80, + r16_il8 = 0x40, + r16_res16 = 0x20, + r16_ih = 0x1f, + + r17_ba1 = 0x70, + r17_ba0 = 0x07, + r18_ba3 = 0x70, + r18_ba2 = 0x07, + r19_ba5 = 0x70, + r19_ba4 = 0x07, + r20_ba7 = 0x70, + r20_ba6 = 0x07, + r21_bb1 = 0x70, + r21_bb0 = 0x07, + r22_bb3 = 0x70, + r22_bb2 = 0x07, + r23_bb5 = 0x70, + r23_bb4 = 0x07, + r24_bb7 = 0x70, + r24_bb6 = 0x07, + + r39_hsw = 0xe0, + r39_hbw = 0x1f, + + r40_htl89 = 0xc0, + r40_hdw = 0x3f, + + r43_vsw = 0xe0, + r43_vbw = 0x1f, + + r44_vsls = 0x40, + r44_vdw = 0x1f, + + r45_vtl8 = 0x80, + r45_tres = 0x40, + r45_vdp = 0x1f +}; + + +// R#7(md) +#define MD_2PLANE_8BIT 0x00 +#define MD_2PLANE_16BIT 0x02 +#define MD_1PLANE_16COLOUR 0x04 +#define MD_1PLANE_256COLOUR 0x06 +#define MD_1PLANE (MD_1PLANE_16COLOUR & MD_1PLANE_256COLOUR) +#define MD_SHIFT 0 +#define MD_MASK 0x06 + +// R#8 +#define PGS_64X32 0x0 +#define PGS_32X64 0x1 +#define PGS_SHIFT 0 +#define PGS_MASK 0x01 + +// R#9 +#define SLV_SCREEN 0x00 +#define SLV_8 0x04 +#define SLV_16 0x05 +#define SLV_32 0x06 +#define SLV_64 0x07 +#define SLH_SCREEN 0x00 +#define SLH_8 0x04 +#define SLH_16 0x05 +#define SLH_32 0x06 +#define SLH_64 0x07 +#define PTS_8X8 0x00 +#define PTS_16X16 0x40 +#define PTS_32X32 0x80 +#define PTS_64X64 0xc0 +#define PTS_SHIFT 0 +#define PTS_MASK 0xc0 + +// R#10 +#define SPAS_SPRITESIZE 0 +#define SPAS_SPRITEREVERSE 1 + +// R#10(spas)=1 +#define SZ_8X8 0x00 +#define SZ_16X16 0x01 +#define SZ_32X32 0x02 +#define SZ_64X64 0x03 + +// R#10(spas)=0 +#define SZ_NOREVERSE 0x00 +#define SZ_VERTREVERSE 0x01 +#define SZ_HORIZREVERSE 0x02 +#define SZ_BOTHREVERSE 0x03 + +// R#11(prm) +#define PRM_SABDEX 0x00 +#define PRM_ASBDEX 0x04 +#define PRM_SEABDX 0x08 +#define PRM_ASEBDX 0x0c + +// R#40 +#define HDW_SHIFT 0 +#define HDW_MASK 0x3f + +// R#44 +#define VDW_SHIFT 0 +#define VDW_MASK 0x3f + #define _ENABLE_SPRITES #define _ENABLE_SCROLLX #define _ENABLE_SCROLLY @@ -149,11 +330,11 @@ static GFXDECODE_START( ygv608 ) GFXDECODE_END -const device_type YGV608 = device_creator; +DEFINE_DEVICE_TYPE(YGV608, ygv608_device, "ygv608", "YGV608 VDP") ygv608_device::ygv608_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock ) - : device_t(mconfig, YGV608, "YGV608 VDP", tag, owner, clock, "ygv608", __FILE__), - device_gfx_interface(mconfig, *this, GFXDECODE_NAME(ygv608)) + : device_t(mconfig, YGV608, tag, owner, clock) + , device_gfx_interface(mconfig, *this, GFXDECODE_NAME(ygv608)) { } @@ -667,8 +848,8 @@ void ygv608_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect /* draw sprites */ spriteClip &= cliprect; - sa = &m_sprite_attribute_table.s[YGV608_MAX_SPRITES-1]; - for( i=0; i>2) - -// R#7(md) -#define MD_2PLANE_8BIT 0x00 -#define MD_2PLANE_16BIT 0x02 -#define MD_1PLANE_16COLOUR 0x04 -#define MD_1PLANE_256COLOUR 0x06 -#define MD_1PLANE (MD_1PLANE_16COLOUR & MD_1PLANE_256COLOUR) -#define MD_SHIFT 0 -#define MD_MASK 0x06 - -// R#8 -#define PGS_64X32 0x0 -#define PGS_32X64 0x1 -#define PGS_SHIFT 0 -#define PGS_MASK 0x01 - -// R#9 -#define SLV_SCREEN 0x00 -#define SLV_8 0x04 -#define SLV_16 0x05 -#define SLV_32 0x06 -#define SLV_64 0x07 -#define SLH_SCREEN 0x00 -#define SLH_8 0x04 -#define SLH_16 0x05 -#define SLH_32 0x06 -#define SLH_64 0x07 -#define PTS_8X8 0x00 -#define PTS_16X16 0x40 -#define PTS_32X32 0x80 -#define PTS_64X64 0xc0 -#define PTS_SHIFT 0 -#define PTS_MASK 0xc0 - -// R#10 -#define SPAS_SPRITESIZE 0 -#define SPAS_SPRITEREVERSE 1 - -// R#10(spas)=1 -#define SZ_8X8 0x00 -#define SZ_16X16 0x01 -#define SZ_32X32 0x02 -#define SZ_64X64 0x03 - -// R#10(spas)=0 -#define SZ_NOREVERSE 0x00 -#define SZ_VERTREVERSE 0x01 -#define SZ_HORIZREVERSE 0x02 -#define SZ_BOTHREVERSE 0x03 - -// R#11(prm) -#define PRM_SABDEX 0x00 -#define PRM_ASBDEX 0x04 -#define PRM_SEABDX 0x08 -#define PRM_ASEBDX 0x0c - -// R#40 -#define HDW_SHIFT 0 -#define HDW_MASK 0x3f - -// R#44 -#define VDW_SHIFT 0 -#define VDW_MASK 0x3f - -struct SPRITE_ATTR { - uint8_t sy; // y dot position 7:0 - uint8_t sx; // x dot position 7:0 - uint8_t attr; // 0xf0 = color, 0x0c = size, reverse, 0x02 = x hi bit, 0x01 = y hi bit - uint8_t sn; // pattern name (0-255) -}; - class ygv608_device : public device_t, public device_gfx_interface { public: @@ -303,7 +32,100 @@ public: protected: // device-level overrides virtual void device_start() override; + private: + static constexpr unsigned SPRITE_ATTR_TABLE_SIZE = 256; + + struct YGV_PORTS { + uint8_t na; // P#0 - pattern name table data port (read/write) + uint8_t p1; // P#1 - sprite data port (read/write) + uint8_t p2; // P#2 - scroll data port (read/write) + uint8_t p3; // P#3 - colour palette data port (read/write) + uint8_t p4; // P#4 - register data port (read/write) + uint8_t p5; // P#5 - register select port (write only) + uint8_t p6; // P#6 - status port (read/write) + uint8_t p7; // P#7 - system control port (read/write) + }; + + struct YGV_REGS { + uint8_t r0; // R#0 - pattern name table access ptr (r/w) + uint8_t r1; // R#1 - pattern name table access ptr (r/w) + uint8_t r2; // R#2 - built in ram access control + uint8_t saa; // R#3 - sprite attribute table access ptr (r/w) + uint8_t sca; // R#4 - scroll table access ptr (r/w) + uint8_t cc; // R#5 - color palette access ptr (r/w) + uint8_t sba; // R#6 - sprite generator base address (r/w) + + // R#7 - R#11 - screen control (r/w) + uint8_t r7; // misc screen control (r/w) + uint8_t r8; // misc screen control (r/w) + uint8_t r9; // misc screen control (r/w) + uint8_t r10; // misc screen control (r/w) + uint8_t r11; // misc screen control (r/w) + + uint8_t r12; // R#12 - color palette selection (r/w) + uint8_t bdc; // R#13 - border colour (wo) + + // R#14 - R#16 - interrupt control + uint8_t r14; + uint8_t il; + uint8_t r16; + + // R#17 - R#24 - base address (wo) + uint8_t r17; + uint8_t r18; + uint8_t r19; + uint8_t r20; + uint8_t r21; + uint8_t r22; + uint8_t r23; + uint8_t r24; + + // R#25 - R#38 - enlargement, contraction and rotation parameters (wo) + uint8_t ax0; + uint8_t ax8; + uint8_t ax16; + + uint8_t dx0; + uint8_t dx8; + uint8_t dxy0; + uint8_t dxy8; + + uint8_t ay0; + uint8_t ay8; + uint8_t ay16; + + uint8_t dy0; + uint8_t dy8; + uint8_t dyx0; + uint8_t dyx8; + + // R#39 - R#46 - display scan control (wo) + uint8_t r39; + uint8_t r40; + uint8_t hdsp; + uint8_t htl; + uint8_t r43; + uint8_t r44; + uint8_t r45; + uint8_t vtl; + + // R#47 - R#49 - rom transfer control (wo) + uint8_t tb5; + uint8_t tb13; + uint8_t tn4; + + }; + + static constexpr unsigned MAX_SPRITES = SPRITE_ATTR_TABLE_SIZE >> 2; + + struct SPRITE_ATTR { + uint8_t sy; // y dot position 7:0 + uint8_t sx; // x dot position 7:0 + uint8_t attr; // 0xf0 = color, 0x0c = size, reverse, 0x02 = x hi bit, 0x01 = y hi bit + uint8_t sn; // pattern name (0-255) + }; + TILEMAP_MAPPER_MEMBER(get_tile_offset); TILE_GET_INFO_MEMBER(get_tile_info_A_8); TILE_GET_INFO_MEMBER(get_tile_info_B_8); @@ -347,8 +169,8 @@ private: uint8_t m_pattern_name_table[4096]; union { - uint8_t b[YGV608_SPRITE_ATTR_TABLE_SIZE]; - SPRITE_ATTR s[YGV608_MAX_SPRITES]; + uint8_t b[SPRITE_ATTR_TABLE_SIZE]; + SPRITE_ATTR s[MAX_SPRITES]; } m_sprite_attribute_table; uint8_t m_scroll_data_table[2][256]; @@ -376,7 +198,7 @@ private: }; // device type definition -extern const device_type YGV608; +DECLARE_DEVICE_TYPE(YGV608, ygv608_device) //************************************************************************** diff --git a/src/mame/video/zx8301.cpp b/src/mame/video/zx8301.cpp index bac4b89729b..6e2184f9f42 100644 --- a/src/mame/video/zx8301.cpp +++ b/src/mame/video/zx8301.cpp @@ -52,7 +52,7 @@ static const rgb_t PALETTE_ZX8301[] = //************************************************************************** // devices -const device_type ZX8301 = device_creator; +DEFINE_DEVICE_TYPE(ZX8301, zx8301_device, "zx8301", "Sinclair ZX8301") // default address map @@ -107,7 +107,7 @@ inline void zx8301_device::writebyte(offs_t address, uint8_t data) //------------------------------------------------- zx8301_device::zx8301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ZX8301, "Sinclair ZX8301", tag, owner, clock, "zx8301", __FILE__) + : device_t(mconfig, ZX8301, tag, owner, clock) , device_memory_interface(mconfig, *this) , device_video_interface(mconfig, *this) , m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, nullptr, *ADDRESS_MAP_NAME(zx8301)) diff --git a/src/mame/video/zx8301.h b/src/mame/video/zx8301.h index f3e1b8b252d..d2729eed02e 100644 --- a/src/mame/video/zx8301.h +++ b/src/mame/video/zx8301.h @@ -29,10 +29,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_VIDEO_ZX8301_H +#define MAME_VIDEO_ZX8301_H -#ifndef __ZX8301__ -#define __ZX8301__ +#pragma once @@ -63,7 +63,7 @@ public: // construction/destruction zx8301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template static devcb_base &set_vsync_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_vsync.set_callback(object); } + template static devcb_base &set_vsync_wr_callback(device_t &device, Object &&cb) { return downcast(device).m_write_vsync.set_callback(std::forward(cb)); } static void static_set_cpu_tag(device_t &device, const char *tag) { downcast(device).m_cpu.set_tag(tag); } DECLARE_WRITE8_MEMBER( control_w ); @@ -115,8 +115,8 @@ private: // device type definition -extern const device_type ZX8301; +DECLARE_DEVICE_TYPE(ZX8301, zx8301_device) -#endif +#endif // MAME_VIDEO_ZX8301_H diff --git a/src/osd/modules/debugger/osx/errorlogviewer.mm b/src/osd/modules/debugger/osx/errorlogviewer.mm index fcb7e4ffc3a..98ea30fc98a 100644 --- a/src/osd/modules/debugger/osx/errorlogviewer.mm +++ b/src/osd/modules/debugger/osx/errorlogviewer.mm @@ -19,7 +19,7 @@ NSString *title; title = [NSString stringWithFormat:@"Error Log: %@ [%@]", - [NSString stringWithUTF8String:m.system().description], + [NSString stringWithUTF8String:m.system().type.fullname()], [NSString stringWithUTF8String:m.system().name]]; if (!(self = [super initWithMachine:m title:title console:c])) return nil; diff --git a/src/osd/modules/debugger/osx/memoryviewer.mm b/src/osd/modules/debugger/osx/memoryviewer.mm index 0081820f257..6e86ba43ede 100644 --- a/src/osd/modules/debugger/osx/memoryviewer.mm +++ b/src/osd/modules/debugger/osx/memoryviewer.mm @@ -88,7 +88,7 @@ [memoryScroll setHasVerticalScroller:YES]; [memoryScroll setAutohidesScrollers:YES]; [memoryScroll setBorderType:NSNoBorder]; - [memoryScroll setDrawsBackground:NO]; + [memoryScroll setDrawsBackground:NO]; [memoryScroll setDocumentView:memoryView]; [memoryView release]; [[window contentView] addSubview:memoryScroll]; diff --git a/src/osd/modules/debugger/win/logwininfo.cpp b/src/osd/modules/debugger/win/logwininfo.cpp index 3ca2bee6eb4..1df89b73256 100644 --- a/src/osd/modules/debugger/win/logwininfo.cpp +++ b/src/osd/modules/debugger/win/logwininfo.cpp @@ -13,7 +13,7 @@ logwin_info::logwin_info(debugger_windows_interface &debugger) : - debugwin_info(debugger, false, std::string("Errorlog: ").append(debugger.machine().system().description).append(" [").append(debugger.machine().system().name).append("]").c_str(), nullptr) + debugwin_info(debugger, false, std::string("Errorlog: ").append(debugger.machine().system().type.fullname()).append(" [").append(debugger.machine().system().name).append("]").c_str(), nullptr) { if (!window()) return; diff --git a/src/osd/modules/render/bgfx/chainmanager.cpp b/src/osd/modules/render/bgfx/chainmanager.cpp index 40776bb20ce..653caf0626e 100644 --- a/src/osd/modules/render/bgfx/chainmanager.cpp +++ b/src/osd/modules/render/bgfx/chainmanager.cpp @@ -61,7 +61,9 @@ void chain_manager::refresh_available_chains() m_available_chains.clear(); m_available_chains.push_back(chain_desc("none", "")); - find_available_chains(std::string(m_options.bgfx_path()) + "/chains", ""); + std::string chains_path; + osd_subst_env(chains_path, util::string_format("%s" PATH_SEPARATOR "chains", m_options.bgfx_path())); + find_available_chains(chains_path, ""); destroy_unloaded_chains(); } @@ -133,11 +135,13 @@ void chain_manager::find_available_chains(std::string root, std::string path) bgfx_chain* chain_manager::load_chain(std::string name, uint32_t screen_index) { - if (name.length() < 5 || (name.compare(name.length() - 5, 5, ".json")!= 0)) + if (name.length() < 5 || (name.compare(name.length() - 5, 5, ".json") != 0)) { name = name + ".json"; } - std::string path = std::string(m_options.bgfx_path()) + "/chains/" + name; + std::string path; + osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "chains" PATH_SEPARATOR, m_options.bgfx_path())); + path += name; bx::CrtFileReader reader; if (!bx::open(&reader, path.c_str())) diff --git a/src/osd/modules/render/bgfx/effectmanager.cpp b/src/osd/modules/render/bgfx/effectmanager.cpp index 3affa36f2ec..8627650aae2 100644 --- a/src/osd/modules/render/bgfx/effectmanager.cpp +++ b/src/osd/modules/render/bgfx/effectmanager.cpp @@ -51,7 +51,9 @@ bgfx_effect* effect_manager::load_effect(std::string name) if (full_name.length() < 5 || (full_name.compare(full_name.length() - 5, 5, ".json") != 0)) { full_name = full_name + ".json"; } - std::string path = std::string(m_options.bgfx_path()) + "/effects/" + full_name; + std::string path; + osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "effects" PATH_SEPARATOR, m_options.bgfx_path())); + path += full_name; bx::CrtFileReader reader; if (!bx::open(&reader, path.c_str())) diff --git a/src/osd/modules/render/bgfx/shadermanager.cpp b/src/osd/modules/render/bgfx/shadermanager.cpp index e4a665d967c..c4a92e1ff32 100644 --- a/src/osd/modules/render/bgfx/shadermanager.cpp +++ b/src/osd/modules/render/bgfx/shadermanager.cpp @@ -41,42 +41,45 @@ bgfx::ShaderHandle shader_manager::shader(std::string name) bgfx::ShaderHandle shader_manager::load_shader(std::string name) { - std::string shader_path; + std::string shader_path(m_options.bgfx_path()); + shader_path += PATH_SEPARATOR "shaders" PATH_SEPARATOR; switch (bgfx::getRendererType()) { case bgfx::RendererType::Noop: case bgfx::RendererType::Direct3D9: - shader_path = m_options.bgfx_path() + std::string("/shaders/dx9/"); + shader_path += "dx9"; break; case bgfx::RendererType::Direct3D11: case bgfx::RendererType::Direct3D12: - shader_path = m_options.bgfx_path() + std::string("/shaders/dx11/"); + shader_path += "dx11"; break; case bgfx::RendererType::Gnm: - shader_path = m_options.bgfx_path() + std::string("/shaders/pssl/"); + shader_path += "pssl"; break; case bgfx::RendererType::Metal: - shader_path = m_options.bgfx_path() + std::string("/shaders/metal/"); + shader_path += "metal"; break; case bgfx::RendererType::OpenGL: - shader_path = m_options.bgfx_path() + std::string("/shaders/glsl/"); + shader_path += "glsl"; break; case bgfx::RendererType::OpenGLES: - shader_path = m_options.bgfx_path() + std::string("/shaders/essl/"); + shader_path += "essl"; break; case bgfx::RendererType::Vulkan: - shader_path = m_options.bgfx_path() + std::string("/shaders/spirv/"); + shader_path += "spirv"; break; default: fatalerror("Unknown BGFX renderer type %d", bgfx::getRendererType()); } + shader_path += PATH_SEPARATOR; + osd_subst_env(shader_path, shader_path); const bgfx::Memory* mem = load_mem(shader_path + name + ".bin"); if (mem != nullptr) diff --git a/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq2x.sc b/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq2x.sc index 66bd69f253e..38f81111567 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq2x.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq2x.sc @@ -43,17 +43,17 @@ void main() vec4 p3 = texture2D(decal, v_texcoord0 + vec2(dx, 0) * quad); vec4 p4 = texture2D(decal, v_texcoord0 + vec2(0, dy) * quad); - vec3 w1 = mul(yuv, texture2D(decal, v_texcoord1.xw).rgb); - vec3 w2 = mul(yuv, texture2D(decal, v_texcoord1.yw).rgb); - vec3 w3 = mul(yuv, texture2D(decal, v_texcoord1.zw).rgb); + vec3 w1 = instMul(texture2D(decal, v_texcoord1.xw).rgb, yuv); + vec3 w2 = instMul(texture2D(decal, v_texcoord1.yw).rgb, yuv); + vec3 w3 = instMul(texture2D(decal, v_texcoord1.zw).rgb, yuv); - vec3 w4 = mul(yuv, texture2D(decal, v_texcoord2.xw).rgb); - vec3 w5 = mul(yuv, p1.rgb); - vec3 w6 = mul(yuv, texture2D(decal, v_texcoord2.zw).rgb); + vec3 w4 = instMul(texture2D(decal, v_texcoord2.xw).rgb, yuv); + vec3 w5 = instMul(p1.rgb, yuv); + vec3 w6 = instMul(texture2D(decal, v_texcoord2.zw).rgb, yuv); - vec3 w7 = mul(yuv, texture2D(decal, v_texcoord3.xw).rgb); - vec3 w8 = mul(yuv, texture2D(decal, v_texcoord3.yw).rgb); - vec3 w9 = mul(yuv, texture2D(decal, v_texcoord3.zw).rgb); + vec3 w7 = instMul(texture2D(decal, v_texcoord3.xw).rgb, yuv); + vec3 w8 = instMul(texture2D(decal, v_texcoord3.yw).rgb, yuv); + vec3 w9 = instMul(texture2D(decal, v_texcoord3.zw).rgb, yuv); mat3 pattern = mat3(diff(w5, w1), diff(w5, w2), diff(w5, w3), diff(w5, w4), 0.0, diff(w5, w6), diff(w5, w7), diff(w5, w8), diff(w5, w9)); vec4 cross = vec4(diff(w4, w2), diff(w2, w6), diff(w8, w4), diff(w6, w8)); @@ -69,7 +69,7 @@ void main() vec4 weights = texture2D(LUT, index * step + offset); float sum = dot(weights, vec4(1.0, 1.0, 1.0, 1.0)); mat4 transposed = mat4(vec4(p1.x, p2.x, p3.x, p4.x), vec4(p1.y, p2.y, p3.y, p4.y), vec4(p1.z, p2.z, p3.z, p4.z), vec4(p1.w, p2.w, p3.w, p4.w)); - vec4 res = mul(transposed, weights / vec4(sum, sum, sum, sum)); + vec4 res = instMul(weights / vec4(sum, sum, sum, sum), transposed); gl_FragColor = vec4(res.rgb, 1.0); } diff --git a/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq3x.sc b/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq3x.sc index 8e0f46a80f1..a29c2c00da8 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq3x.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq3x.sc @@ -43,17 +43,17 @@ void main() vec4 p3 = texture2D(decal, v_texcoord0 + vec2(dx, 0) * quad); vec4 p4 = texture2D(decal, v_texcoord0 + vec2(0, dy) * quad); - vec3 w1 = mul(yuv, texture2D(decal, v_texcoord1.xw).rgb); - vec3 w2 = mul(yuv, texture2D(decal, v_texcoord1.yw).rgb); - vec3 w3 = mul(yuv, texture2D(decal, v_texcoord1.zw).rgb); + vec3 w1 = instMul(texture2D(decal, v_texcoord1.xw).rgb, yuv); + vec3 w2 = instMul(texture2D(decal, v_texcoord1.yw).rgb, yuv); + vec3 w3 = instMul(texture2D(decal, v_texcoord1.zw).rgb, yuv); - vec3 w4 = mul(yuv, texture2D(decal, v_texcoord2.xw).rgb); - vec3 w5 = mul(yuv, p1.rgb); - vec3 w6 = mul(yuv, texture2D(decal, v_texcoord2.zw).rgb); + vec3 w4 = instMul(texture2D(decal, v_texcoord2.xw).rgb, yuv); + vec3 w5 = instMul(p1.rgb, yuv); + vec3 w6 = instMul(texture2D(decal, v_texcoord2.zw).rgb, yuv); - vec3 w7 = mul(yuv, texture2D(decal, v_texcoord3.xw).rgb); - vec3 w8 = mul(yuv, texture2D(decal, v_texcoord3.yw).rgb); - vec3 w9 = mul(yuv, texture2D(decal, v_texcoord3.zw).rgb); + vec3 w7 = instMul(texture2D(decal, v_texcoord3.xw).rgb, yuv); + vec3 w8 = instMul(texture2D(decal, v_texcoord3.yw).rgb, yuv); + vec3 w9 = instMul(texture2D(decal, v_texcoord3.zw).rgb, yuv); mat3 pattern = mat3(diff(w5, w1), diff(w5, w2), diff(w5, w3), diff(w5, w4), 0.0, diff(w5, w6), diff(w5, w7), diff(w5, w8), diff(w5, w9)); vec4 cross = vec4(diff(w4, w2), diff(w2, w6), diff(w8, w4), diff(w6, w8)); @@ -69,7 +69,7 @@ void main() vec4 weights = texture2D(LUT, index * step + offset); float sum = dot(weights, vec4(1.0, 1.0, 1.0, 1.0)); mat4 transposed = mat4(vec4(p1.x, p2.x, p3.x, p4.x), vec4(p1.y, p2.y, p3.y, p4.y), vec4(p1.z, p2.z, p3.z, p4.z), vec4(p1.w, p2.w, p3.w, p4.w)); - vec4 res = mul(transposed, weights / vec4(sum, sum, sum, sum)); + vec4 res = instMul(weights / vec4(sum, sum, sum, sum), transposed); gl_FragColor = vec4(res.rgb, 1.0); } diff --git a/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq4x.sc b/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq4x.sc index 8e769bee46c..e6c0e1c2aaa 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq4x.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq4x.sc @@ -43,17 +43,17 @@ void main() vec4 p3 = texture2D(decal, v_texcoord0 + vec2(dx, 0) * quad); vec4 p4 = texture2D(decal, v_texcoord0 + vec2(0, dy) * quad); - vec3 w1 = mul(yuv, texture2D(decal, v_texcoord1.xw).rgb); - vec3 w2 = mul(yuv, texture2D(decal, v_texcoord1.yw).rgb); - vec3 w3 = mul(yuv, texture2D(decal, v_texcoord1.zw).rgb); + vec3 w1 = instMul(texture2D(decal, v_texcoord1.xw).rgb, yuv); + vec3 w2 = instMul(texture2D(decal, v_texcoord1.yw).rgb, yuv); + vec3 w3 = instMul(texture2D(decal, v_texcoord1.zw).rgb, yuv); - vec3 w4 = mul(yuv, texture2D(decal, v_texcoord2.xw).rgb); - vec3 w5 = mul(yuv, p1.rgb); - vec3 w6 = mul(yuv, texture2D(decal, v_texcoord2.zw).rgb); + vec3 w4 = instMul(texture2D(decal, v_texcoord2.xw).rgb, yuv); + vec3 w5 = instMul(p1.rgb, yuv); + vec3 w6 = instMul(texture2D(decal, v_texcoord2.zw).rgb, yuv); - vec3 w7 = mul(yuv, texture2D(decal, v_texcoord3.xw).rgb); - vec3 w8 = mul(yuv, texture2D(decal, v_texcoord3.yw).rgb); - vec3 w9 = mul(yuv, texture2D(decal, v_texcoord3.zw).rgb); + vec3 w7 = instMul(texture2D(decal, v_texcoord3.xw).rgb, yuv); + vec3 w8 = instMul(texture2D(decal, v_texcoord3.yw).rgb, yuv); + vec3 w9 = instMul(texture2D(decal, v_texcoord3.zw).rgb, yuv); mat3 pattern = mat3(diff(w5, w1), diff(w5, w2), diff(w5, w3), diff(w5, w4), 0.0, diff(w5, w6), diff(w5, w7), diff(w5, w8), diff(w5, w9)); vec4 cross = vec4(diff(w4, w2), diff(w2, w6), diff(w8, w4), diff(w6, w8)); @@ -69,7 +69,7 @@ void main() vec4 weights = texture2D(LUT, index * step + offset); float sum = dot(weights, vec4(1.0, 1.0, 1.0, 1.0)); mat4 transposed = mat4(vec4(p1.x, p2.x, p3.x, p4.x), vec4(p1.y, p2.y, p3.y, p4.y), vec4(p1.z, p2.z, p3.z, p4.z), vec4(p1.w, p2.w, p3.w, p4.w)); - vec4 res = mul(transposed, weights / vec4(sum, sum, sum, sum)); + vec4 res = instMul(weights / vec4(sum, sum, sum, sum), transposed); gl_FragColor = vec4(res.rgb, 1.0); } diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp index 78a435e1501..72fdb1f27a0 100644 --- a/src/osd/modules/render/d3d/d3dhlsl.cpp +++ b/src/osd/modules/render/d3d/d3dhlsl.cpp @@ -323,7 +323,7 @@ void shaders::render_snapshot(IDirect3DSurface9 *surface) // add two text entries describing the image std::string text1 = std::string(emulator_info::get_appname()).append(" ").append(emulator_info::get_build_version()); - std::string text2 = std::string(machine->system().manufacturer).append(" ").append(machine->system().description); + std::string text2 = std::string(machine->system().manufacturer).append(" ").append(machine->system().type.fullname()); png_info pnginfo = { nullptr }; png_add_text(&pnginfo, "Software", text1.c_str()); png_add_text(&pnginfo, "System", text2.c_str()); diff --git a/src/osd/sdl/sdlmain.cpp b/src/osd/sdl/sdlmain.cpp index f8bcb231796..31f65e2ba66 100644 --- a/src/osd/sdl/sdlmain.cpp +++ b/src/osd/sdl/sdlmain.cpp @@ -181,8 +181,14 @@ extern "C" DECLSPEC void SDLCALL SDL_SetModuleHandle(void *hInst); #endif // translated to utf8_main -int main(int argc, char *argv[]) +#if defined(SDLMAME_WIN32) +int main(std::vector &args) +{ +#else +int main(int argc, char** argv) { + std::vector args(argv, argv+argc); +#endif int res = 0; // disable I/O buffering @@ -210,7 +216,7 @@ int main(int argc, char *argv[]) sdl_options options; sdl_osd_interface osd(options); osd.register_options(); - res = emulator_info::start_frontend(options, osd, argc, argv); + res = emulator_info::start_frontend(options, osd, args); } #ifdef SDLMAME_UNIX diff --git a/src/osd/sdl/window.cpp b/src/osd/sdl/window.cpp index fa9fe2989e9..ea86d851bdd 100644 --- a/src/osd/sdl/window.cpp +++ b/src/osd/sdl/window.cpp @@ -420,9 +420,9 @@ int sdl_window_info::window_init() // make the window title if (video_config.numscreens == 1) - sprintf(m_title, "%s: %s [%s]", emulator_info::get_appname(), m_machine.system().description, m_machine.system().name); + sprintf(m_title, "%s: %s [%s]", emulator_info::get_appname(), m_machine.system().type.fullname(), m_machine.system().name); else - sprintf(m_title, "%s: %s [%s] - Screen %d", emulator_info::get_appname(), m_machine.system().description, m_machine.system().name, m_index); + sprintf(m_title, "%s: %s [%s] - Screen %d", emulator_info::get_appname(), m_machine.system().type.fullname(), m_machine.system().name, m_index); result = complete_create(); diff --git a/src/osd/windows/window.cpp b/src/osd/windows/window.cpp index eec0e496d66..0fcb9ccceac 100644 --- a/src/osd/windows/window.cpp +++ b/src/osd/windows/window.cpp @@ -770,9 +770,9 @@ void win_window_info::create(running_machine &machine, int index, std::shared_pt // make the window title if (video_config.numscreens == 1) - sprintf(window->m_title, "%s: %s [%s]", emulator_info::get_appname(), machine.system().description, machine.system().name); + sprintf(window->m_title, "%s: %s [%s]", emulator_info::get_appname(), machine.system().type.fullname(), machine.system().name); else - sprintf(window->m_title, "%s: %s [%s] - Screen %d", emulator_info::get_appname(), machine.system().description, machine.system().name, index); + sprintf(window->m_title, "%s: %s [%s] - Screen %d", emulator_info::get_appname(), machine.system().type.fullname(), machine.system().name, index); // set the initial maximized state window->m_startmaximized = options.maximize(); diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp index 665ec73f13b..efec6700849 100644 --- a/src/osd/windows/winmain.cpp +++ b/src/osd/windows/winmain.cpp @@ -230,7 +230,7 @@ const options_entry windows_options::s_option_entries[] = { WINOPTION_YIQ_IVALUE";yiqi", "1.2", OPTION_FLOAT, "I filter cutoff frequency for NTSC signal processing" }, { WINOPTION_YIQ_QVALUE";yiqq", "0.6", OPTION_FLOAT, "Q filter cutoff frequency for NTSC signal processing" }, { WINOPTION_YIQ_SCAN_TIME";yiqsc", "52.6", OPTION_FLOAT, "Horizontal scanline duration for NTSC signal processing (in usec)" }, - { WINOPTION_YIQ_PHASE_COUNT";yiqp", "2", OPTION_INTEGER, "Phase Count value for NTSC signal processing" }, + { WINOPTION_YIQ_PHASE_COUNT";yiqpc", "2", OPTION_INTEGER, "Phase Count value for NTSC signal processing" }, /* Vector simulation below this line */ { nullptr, nullptr, OPTION_HEADER, "VECTOR POST-PROCESSING OPTIONS" }, { WINOPTION_VECTOR_BEAM_SMOOTH";vecsmooth", "0.0", OPTION_FLOAT, "The vector beam smoothness" }, @@ -260,7 +260,7 @@ const options_entry windows_options::s_option_entries[] = // input options { nullptr, nullptr, OPTION_HEADER, "INPUT DEVICE OPTIONS" }, - { WINOPTION_GLOBAL_INPUTS ";global_inputs", "0", OPTION_BOOLEAN, "enables global inputs" }, + { WINOPTION_GLOBAL_INPUTS, "0", OPTION_BOOLEAN, "enables global inputs" }, { WINOPTION_DUAL_LIGHTGUN ";dual", "0", OPTION_BOOLEAN, "enables dual lightgun input" }, { nullptr } diff --git a/src/tools/chdman.cpp b/src/tools/chdman.cpp index 87b9b9d799a..cc807e622c8 100644 --- a/src/tools/chdman.cpp +++ b/src/tools/chdman.cpp @@ -2460,7 +2460,7 @@ static void do_extract_cd(parameters_t ¶ms) if (mode == MODE_GDI) { - char temp[8]; + char temp[11]; sprintf(temp, "%02d", tracknum+1); trackbin_name.append(temp); if (toc->tracks[tracknum].trktype == CD_TRACK_AUDIO) diff --git a/src/tools/floptool.cpp b/src/tools/floptool.cpp index 190e2004ea6..a1a5f5a44d7 100644 --- a/src/tools/floptool.cpp +++ b/src/tools/floptool.cpp @@ -46,6 +46,8 @@ #include "formats/applix_dsk.h" +#include "formats/hpi_dsk.h" + static floppy_format_type floppy_formats[] = { FLOPPY_MFI_FORMAT, FLOPPY_DFI_FORMAT, @@ -75,6 +77,8 @@ static floppy_format_type floppy_formats[] = { FLOPPY_ORIC_DSK_FORMAT, FLOPPY_APPLIX_FORMAT, + + FLOPPY_HPI_FORMAT }; void CLIB_DECL ATTR_PRINTF(1,2) logerror(const char *format, ...) diff --git a/src/tools/imgtool/filtbas.cpp b/src/tools/imgtool/filtbas.cpp index eac4b9d5173..bafd3222dce 100644 --- a/src/tools/imgtool/filtbas.cpp +++ b/src/tools/imgtool/filtbas.cpp @@ -652,7 +652,7 @@ static const char *const dragonbas_functions[] = "TIMER", /* 0xff9e */ "PPOINT", /* 0xff9f */ "STRING$", /* 0xffa0 */ - "USR" /* 0xffa1 */ + "USR", /* 0xffa1 */ "CVN", /* 0xffa2 */ "FREE", /* 0xffa3 */ "LOC", /* 0xffa4 */ diff --git a/src/tools/imgtool/imghd.cpp b/src/tools/imgtool/imghd.cpp index ba1618951a9..17e47a7bf87 100644 --- a/src/tools/imgtool/imghd.cpp +++ b/src/tools/imgtool/imghd.cpp @@ -131,16 +131,15 @@ imgtoolerr_t imghd_open(imgtool::stream &stream, struct mess_hard_disk_file *har imgtoolerr_t err = IMGTOOLERR_SUCCESS; hard_disk->hard_disk = nullptr; - hard_disk->chd = nullptr; - chderr = hard_disk->chd->open(*stream.core_file(), stream.is_read_only()); + chderr = hard_disk->chd.open(*stream.core_file(), !stream.is_read_only()); if (chderr) { err = map_chd_error(chderr); goto done; } - hard_disk->hard_disk = hard_disk_open(hard_disk->chd); + hard_disk->hard_disk = hard_disk_open(&hard_disk->chd); if (!hard_disk->hard_disk) { err = IMGTOOLERR_UNEXPECTED; diff --git a/src/tools/imgtool/imghd.h b/src/tools/imgtool/imghd.h index d2add05121d..d4ae341af1e 100644 --- a/src/tools/imgtool/imghd.h +++ b/src/tools/imgtool/imghd.h @@ -17,7 +17,7 @@ struct mess_hard_disk_file { imgtool::stream *stream; hard_disk_file *hard_disk; - chd_file *chd; + chd_file chd; }; @@ -25,7 +25,7 @@ struct mess_hard_disk_file imgtoolerr_t imghd_create(imgtool::stream &stream, uint32_t blocksize, uint32_t cylinders, uint32_t heads, uint32_t sectors, uint32_t seclen); /* opens a hard disk given an Imgtool stream */ -imgtoolerr_t imghd_open(imgtool::stream &stream, struct mess_hard_disk_file *hard_disk); +imgtoolerr_t imghd_open(imgtool::stream &stream, mess_hard_disk_file *hard_disk); /* close a hard disk */ void imghd_close(struct mess_hard_disk_file *disk); diff --git a/src/tools/imgtool/imgtool.cpp b/src/tools/imgtool/imgtool.cpp index a0986d6a62d..fb82e0716c7 100644 --- a/src/tools/imgtool/imgtool.cpp +++ b/src/tools/imgtool/imgtool.cpp @@ -10,6 +10,7 @@ #include #include +#include #include "imgtool.h" #include "formats/imageutl.h" @@ -783,15 +784,14 @@ void imgtool::partition::get_attribute_name(uint32_t attribute, const imgtool_at } +//------------------------------------------------- +// imgtool_validitychecks - checks the validity +// of the imgtool modules +//------------------------------------------------- -/*------------------------------------------------- - imgtool_validitychecks - checks the validity - of the imgtool modules --------------------------------------------------*/ - -int imgtool_validitychecks(void) +bool imgtool_validitychecks(void) { - int error = 0; + bool error = false; imgtoolerr_t err = (imgtoolerr_t)IMGTOOLERR_SUCCESS; imgtool_module_features features; int created_library = false; @@ -808,18 +808,18 @@ int imgtool_validitychecks(void) if (!module->name) { - printf("imgtool module %s has null 'name'\n", module->name); - error = 1; + util::stream_format(std::wcerr, L"imgtool module %s has null 'name'\n", wstring_from_utf8(module->name)); + error = true; } if (!module->description) { - printf("imgtool module %s has null 'description'\n", module->name); - error = 1; + util::stream_format(std::wcerr, L"imgtool module %s has null 'description'\n", wstring_from_utf8(module->name)); + error = true; } if (!module->extensions) { - printf("imgtool module %s has null 'extensions'\n", module->extensions); - error = 1; + util::stream_format(std::wcerr, L"imgtool module %s has null 'extensions'\n", wstring_from_utf8(module->extensions)); + error = true; } #if 0 @@ -828,23 +828,23 @@ int imgtool_validitychecks(void) { if (module->alternate_path_separator) { - printf("imgtool module %s specified alternate_path_separator but not path_separator\n", module->name); - error = 1; + util::stream_format(std::wcerr, L"imgtool module %s specified alternate_path_separator but not path_separator\n", wstring_from_utf8(module->name)); + error = true; } if (module->initial_path_separator) { - printf("imgtool module %s specified initial_path_separator without directory support\n", module->name); - error = 1; + util::stream_format(std::wcerr, L"imgtool module %s specified initial_path_separator without directory support\n", wstring_from_utf8(module->name)); + error = true; } if (module->create_dir) { - printf("imgtool module %s implements create_dir without directory support\n", module->name); - error = 1; + util::stream_format(std::wcerr, L"imgtool module %s implements create_dir without directory support\n", wstring_from_utf8(module->name)); + error = true; } if (module->delete_dir) { - printf("imgtool module %s implements delete_dir without directory support\n", module->name); - error = 1; + util::stream_format(std::wcerr, L"imgtool module %s implements delete_dir without directory support\n", wstring_from_utf8(module->name)); + error = true; } } #endif @@ -854,14 +854,14 @@ int imgtool_validitychecks(void) { if (!module->create) { - printf("imgtool module %s has creation options without supporting create\n", module->name); - error = 1; + util::stream_format(std::wcerr, L"imgtool module %s has creation options without supporting create\n", wstring_from_utf8(module->name)); + error = true; } if ((!module->createimage_optguide && module->createimage_optspec) || (module->createimage_optguide && !module->createimage_optspec)) { - printf("imgtool module %s does has partially incomplete creation options\n", module->name); - error = 1; + util::stream_format(std::wcerr, L"imgtool module %s does has partially incomplete creation options\n", wstring_from_utf8(module->name)); + error = true; } if (module->createimage_optguide && module->createimage_optspec) @@ -876,8 +876,8 @@ int imgtool_validitychecks(void) imgtool_exit(); if (err) { - printf("imgtool: %s\n", imgtool_error(err)); - error = 1; + util::stream_format(std::wcerr, L"imgtool: %s\n", wstring_from_utf8(imgtool_error(err))); + error = true; } return error; } diff --git a/src/tools/imgtool/imgtool.h b/src/tools/imgtool/imgtool.h index 5640b3cab12..7c3728f7bd5 100644 --- a/src/tools/imgtool/imgtool.h +++ b/src/tools/imgtool/imgtool.h @@ -261,7 +261,7 @@ namespace imgtool }; /* ----- special ----- */ -int imgtool_validitychecks(void); +bool imgtool_validitychecks(void); void unknown_partition_get_info(const imgtool_class *imgclass, uint32_t state, union imgtoolinfo *info); char *strncpyz(char *dest, const char *source, size_t len); diff --git a/src/tools/imgtool/main.cpp b/src/tools/imgtool/main.cpp index c6f3056e7f0..9559b687c9d 100644 --- a/src/tools/imgtool/main.cpp +++ b/src/tools/imgtool/main.cpp @@ -708,8 +708,8 @@ static int cmd_listfilters(const struct command *c, int argc, char *argv[]) for (i = 0; filters[i]; i++) { util::stream_format(std::wcout, L" %-11s%s\n", - filter_get_info_string(filters[i], FILTINFO_STR_NAME), - filter_get_info_string(filters[i], FILTINFO_STR_HUMANNAME)); + wstring_from_utf8(filter_get_info_string(filters[i], FILTINFO_STR_NAME)), + wstring_from_utf8(filter_get_info_string(filters[i], FILTINFO_STR_HUMANNAME))); } return 0; diff --git a/src/tools/imgtool/modules/macutil.cpp b/src/tools/imgtool/modules/macutil.cpp index 3765f976319..1bab14487cd 100644 --- a/src/tools/imgtool/modules/macutil.cpp +++ b/src/tools/imgtool/modules/macutil.cpp @@ -2,7 +2,7 @@ // copyright-holders:Raphael Nabet /**************************************************************************** - macutil.c + macutil.cpp Imgtool Utility code for manipulating certain Apple/Mac data structures and conventions @@ -10,20 +10,25 @@ *****************************************************************************/ #include "macutil.h" +#include "timeconv.h" +typedef util::arbitrary_clock > classic_mac_clock; + time_t mac_crack_time(uint32_t t) { - /* not sure if this is correct... */ - return t - (((1970 - 1904) * 365) + 17) * 24 * 60 * 60; + classic_mac_clock::duration d(t); + std::chrono::time_point tp = classic_mac_clock::to_system_clock(std::chrono::time_point(d)); + return std::chrono::system_clock::to_time_t(tp); } uint32_t mac_setup_time(time_t t) { - /* not sure if this is correct... */ - return t + (((1970 - 1904) * 365) + 17) * 24 * 60 * 60; + auto system_time_point = std::chrono::system_clock::from_time_t(t); + auto mac_time_point = classic_mac_clock::from_system_clock(system_time_point); + return mac_time_point.time_since_epoch().count(); } diff --git a/src/tools/imgtool/stream.cpp b/src/tools/imgtool/stream.cpp index 0bcca455010..9a29180c9da 100644 --- a/src/tools/imgtool/stream.cpp +++ b/src/tools/imgtool/stream.cpp @@ -492,7 +492,7 @@ uint64_t imgtool::stream::fill(unsigned char b, uint64_t sz) // is_read_only //------------------------------------------------- -int imgtool::stream::is_read_only() +bool imgtool::stream::is_read_only() { return write_protect; } diff --git a/src/tools/imgtool/stream.h b/src/tools/imgtool/stream.h index 4d968ca9551..2b7afbacd5e 100644 --- a/src/tools/imgtool/stream.h +++ b/src/tools/imgtool/stream.h @@ -50,7 +50,7 @@ namespace imgtool static int file_crc(const char *fname, unsigned long *result); // returns whether a stream is read only or not - int is_read_only(); + bool is_read_only(); private: enum imgtype_t diff --git a/src/tools/romcmp.cpp b/src/tools/romcmp.cpp index f45ff7f6eeb..8341353c029 100644 --- a/src/tools/romcmp.cpp +++ b/src/tools/romcmp.cpp @@ -11,6 +11,7 @@ #include "unzip.h" #include "osdcore.h" #include "osdcomm.h" +#include "hash.h" #include #include @@ -114,31 +115,45 @@ static fileinfo files[2][MAX_FILES]; static float matchscore[MAX_FILES][MAX_FILES][TOTAL_MODES][TOTAL_MODES]; -static void checkintegrity(const fileinfo *file,int side) +static bool is_ascii_char(int ch) { - int i; - int mask0,mask1; - int addrbit; + return (ch >= 0x20 && ch < 0x7f) || (ch == '\n') || (ch == '\r') || (ch == '\t'); +} +static void checkintegrity(const fileinfo *file, int side) +{ if (file->buf == nullptr) return; /* check for bad data lines */ - mask0 = 0x0000; - mask1 = 0xffff; + unsigned mask0 = 0x0000; + unsigned mask1 = 0xffff; - for (i = 0;i < file->size;i+=2) + bool is_ascii = true; + for (unsigned i = 0; i < file->size; i += 2) { - mask0 |= ((file->buf[i] << 8) | file->buf[i+1]); - mask1 &= ((file->buf[i] << 8) | file->buf[i+1]); + is_ascii = is_ascii && is_ascii_char(file->buf[i]); + mask0 |= file->buf[i] << 8; + mask1 &= file->buf[i] << 8; + if (i < file->size - 1) + { + is_ascii = is_ascii && is_ascii_char(file->buf[i+1]); + mask0 |= file->buf[i+1]; + mask1 &= file->buf[i+1]; + } if (mask0 == 0xffff && mask1 == 0x0000) break; } + if (is_ascii && mask0 == 0x7f7f && mask1 == 0) + { + printf("%-23s %-23s ASCII TEXT FILE\n", side ? "" : file->name, side ? file->name : ""); + return; + } + if (mask0 != 0xffff || mask1 != 0x0000) { int fixedmask; int bits; - fixedmask = (~mask0 | mask1) & 0xffff; if (((mask0 >> 8) & 0xff) == (mask0 & 0xff) && ((mask1 >> 8) & 0xff) == (mask1 & 0xff)) @@ -146,7 +161,7 @@ static void checkintegrity(const fileinfo *file,int side) else bits = 16; printf("%-23s %-23s FIXED BITS (",side ? "" : file->name,side ? file->name : ""); - for (i = 0;i < bits;i++) + for (int i = 0; i < bits; i++) { if (~mask0 & 0x8000) printf("0"); else if (mask1 & 0x8000) printf("1"); @@ -163,57 +178,68 @@ static void checkintegrity(const fileinfo *file,int side) return; } - - addrbit = 1; - mask0 = 0; + unsigned addrbit = 1; + unsigned addrmirror = 0; while (addrbit <= file->size/2) { - for (i = 0;i < file->size;i++) + unsigned i = 0; + for (i = 0; i < file->size; i++) { - if (file->buf[i] != file->buf[i ^ addrbit]) break; + if ((i ^ addrbit) < file->size && file->buf[i] != file->buf[i ^ addrbit]) break; } if (i == file->size) - mask0 |= addrbit; + addrmirror |= addrbit; addrbit <<= 1; } - if (mask0) + if (addrmirror != 0) { - if (mask0 == file->size/2) - printf("%-23s %-23s 1ST AND 2ND HALF IDENTICAL\n",side ? "" : file->name,side ? file->name : ""); + if (addrmirror == file->size/2) + { + printf("%-23s %-23s 1ST AND 2ND HALF IDENTICAL\n", side ? "" : file->name, side ? file->name : ""); + util::hash_collection hash; + hash.begin(); + hash.buffer(file->buf, file->size / 2); + hash.end(); + printf("%-23s %-23s %s\n", side ? "" : file->name, side ? file->name : "", hash.attribute_string().c_str()); + } else { printf("%-23s %-23s BADADDR",side ? "" : file->name,side ? file->name : ""); - for (i = 0;i < 24;i++) + for (int i = 0; i < 24; i++) { if (file->size <= (1<<(23-i))) printf(" "); - else if (mask0 & 0x800000) printf("-"); + else if (addrmirror & 0x800000) printf("-"); else printf("x"); - mask0 <<= 1; + addrmirror <<= 1; } printf("\n"); } return; } + unsigned sizemask = 1; + while (sizemask < file->size - 1) + sizemask = (sizemask << 1) | 1; + mask0 = 0x000000; - mask1 = file->size-1; - for (i = 0;i < file->size;i++) + mask1 = sizemask; + for (unsigned i = 0; i < file->size; i++) { if (file->buf[i] != 0xff) { mask0 |= i; mask1 &= i; - if (mask0 == file->size-1 && mask1 == 0x00) break; + if (mask0 == sizemask && mask1 == 0x00) break; } } - if (mask0 != file->size-1 || mask1 != 0x00) + if (mask0 != sizemask || mask1 != 0x00) { printf("%-23s %-23s ",side ? "" : file->name,side ? file->name : ""); - for (i = 0;i < 24;i++) + for (int i = 0; i < 24; i++) { if (file->size <= (1<<(23-i))) printf(" "); else if (~mask0 & 0x800000) printf("1"); @@ -229,21 +255,21 @@ static void checkintegrity(const fileinfo *file,int side) mask0 = 0x000000; - mask1 = file->size-1; - for (i = 0;i < file->size;i++) + mask1 = sizemask; + for (unsigned i = 0; i < file->size; i++) { if (file->buf[i] != 0x00) { mask0 |= i; mask1 &= i; - if (mask0 == file->size-1 && mask1 == 0x00) break; + if (mask0 == sizemask && mask1 == 0x00) break; } } - if (mask0 != file->size-1 || mask1 != 0x00) + if (mask0 != sizemask || mask1 != 0x00) { printf("%-23s %-23s ",side ? "" : file->name,side ? file->name : ""); - for (i = 0;i < 24;i++) + for (int i = 0; i < 24; i++) { if (file->size <= (1<<(23-i))) printf(" "); else if ((mask0 & 0x800000) == 0) printf("1"); @@ -257,9 +283,8 @@ static void checkintegrity(const fileinfo *file,int side) return; } - mask0 = 0xff; - for (i = 0;i < file->size/4 && mask0;i++) + for (unsigned i = 0; i < file->size/4 && mask0 != 0x00; i++) { if (file->buf[ 2*i ] != 0x00) mask0 &= ~0x01; if (file->buf[ 2*i ] != 0xff) mask0 &= ~0x02; diff --git a/src/tools/unidasm.cpp b/src/tools/unidasm.cpp index e360f503790..5ae5df132c2 100644 --- a/src/tools/unidasm.cpp +++ b/src/tools/unidasm.cpp @@ -274,7 +274,7 @@ static const dasm_table_entry dasm_table[] = // { "h8_24", _16be, 0, CPU_DISASSEMBLE_NAME(h8_24) }, // { "h8_32", _16be, 0, CPU_DISASSEMBLE_NAME(h8_32) }, { "hc11", _8bit, 0, CPU_DISASSEMBLE_NAME(mb88) }, - { "hcd62121", _16be, 0, CPU_DISASSEMBLE_NAME(hcd62121) }, + { "hcd62121", _8bit, 0, CPU_DISASSEMBLE_NAME(hcd62121) }, { "hd61700", _8bit, 0, CPU_DISASSEMBLE_NAME(hd61700) }, { "hd6301", _8bit, 0, CPU_DISASSEMBLE_NAME(hd6301) }, { "hd6309", _8bit, 0, CPU_DISASSEMBLE_NAME(hd6309) }, diff --git a/src/zexall/main.cpp b/src/zexall/main.cpp index b4e87ddf299..69d3e7b4d1b 100644 --- a/src/zexall/main.cpp +++ b/src/zexall/main.cpp @@ -76,17 +76,25 @@ private: zexall_machine_manager* zexall_machine_manager::m_manager = nullptr; -int emulator_info::start_frontend(emu_options &options, osd_interface &osd, int argc, char *argv[]) +int emulator_info::start_frontend(emu_options &options, osd_interface &osd, std::vector &args) { std::string error_string; options.set_value(OSDOPTION_VIDEO, "none", OPTION_PRIORITY_MAXIMUM, error_string); options.set_value(OSDOPTION_SOUND, "none", OPTION_PRIORITY_MAXIMUM, error_string); //options.set_value(OPTION_DEBUG, true, OPTION_PRIORITY_MAXIMUM, error_string); options.set_value(OPTION_THROTTLE, false, OPTION_PRIORITY_MAXIMUM, error_string); + + zexall_machine_manager::instance(options,osd)->start_http_server(); zexall_machine_manager::instance(options,osd)->execute(); return 0; } +int emulator_info::start_frontend(emu_options &options, osd_interface &osd, int argc, char *argv[]) +{ + std::vector args(argv, argv + argc); + return start_frontend(options, osd, args); +} + const char * emulator_info::get_bare_build_version() { return nullptr; } const char * emulator_info::get_build_version() { return nullptr; } -- cgit v1.2.3 From c9e344d4128b1249c44877df06fb42e8862ef1e4 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 11:56:32 +0700 Subject: tidy --- src/mame/drivers/interpro.cpp | 6 +++--- src/mame/includes/interpro.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index ad16c88538b..3b376291950 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -280,7 +280,7 @@ static ADDRESS_MAP_START(interpro_main_map, AS_0, 32, interpro_state) AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, n82077aa_device, map, 0xff) AM_RANGE(0x7f000200, 0x7f0002ff) AM_DEVICE(INTERPRO_SRARB_TAG, interpro_srarb_device, map) AM_RANGE(0x7f000300, 0x7f00030f) AM_READWRITE16(system_r, system_w, 0xffff) - AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, scc85C30_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) + AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) AM_RANGE(0x7f000410, 0x7f00041f) AM_DEVREADWRITE8(INTERPRO_SCC2_TAG, scc85230_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) AM_RANGE(0x7f000500, 0x7f0006ff) AM_READWRITE8(rtc_r, rtc_w, 0xff) AM_RANGE(0x7f000700, 0x7f00077f) AM_READ(idprom_r) @@ -304,7 +304,7 @@ static ADDRESS_MAP_START(interpro_io_map, AS_1, 32, interpro_state) AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, n82077aa_device, map, 0xff) AM_RANGE(0x7f000200, 0x7f0002ff) AM_DEVICE(INTERPRO_SRARB_TAG, interpro_srarb_device, map) AM_RANGE(0x7f000300, 0x7f00030f) AM_READWRITE16(system_r, system_w, 0xffff) - AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, scc85C30_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) + AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) AM_RANGE(0x7f000410, 0x7f00041f) AM_DEVREADWRITE8(INTERPRO_SCC2_TAG, scc85230_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) AM_RANGE(0x7f000500, 0x7f0006ff) AM_READWRITE8(rtc_r, rtc_w, 0xff) AM_RANGE(0x7f000700, 0x7f00077f) AM_READ(idprom_r) @@ -333,7 +333,7 @@ SLOT_INTERFACE_END static INPUT_PORTS_START(ip2800) INPUT_PORTS_END -static MACHINE_CONFIG_START(ip2800, interpro_state) +static MACHINE_CONFIG_START(ip2800) MCFG_CPU_ADD(INTERPRO_CPU_TAG, CLIPPER_C400, XTAL_12_5MHz) MCFG_CPU_PROGRAM_MAP(clipper_insn_map) MCFG_CPU_DATA_MAP(clipper_data_map) diff --git a/src/mame/includes/interpro.h b/src/mame/includes/interpro.h index 851e745a949..db9b99aac10 100644 --- a/src/mame/includes/interpro.h +++ b/src/mame/includes/interpro.h @@ -151,4 +151,4 @@ private: u16 m_system_reg[4]; }; -#endif //MAME_INCLUDES_INTERPRO_H +#endif // MAME_INCLUDES_INTERPRO_H -- cgit v1.2.3 From 405a80b0fee3e62fcd4294d5f045fbd014a45549 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 12:34:02 +0700 Subject: tidy up --- src/devices/cpu/clipper/clipper.h | 6 +++--- src/devices/machine/ncr5390.h | 12 ------------ src/mame/includes/interpro.h | 2 +- src/mame/machine/cammu.cpp | 6 +++--- src/mame/machine/interpro_ioga.cpp | 1 - src/mame/machine/interpro_ioga.h | 2 +- src/mame/machine/interpro_mcga.cpp | 2 +- src/mame/machine/interpro_mcga.h | 2 +- src/mame/machine/interpro_sga.cpp | 6 +++--- src/mame/machine/interpro_srarb.cpp | 2 +- src/mame/machine/interpro_srarb.h | 2 +- 11 files changed, 15 insertions(+), 28 deletions(-) diff --git a/src/devices/cpu/clipper/clipper.h b/src/devices/cpu/clipper/clipper.h index c94cfdac747..a00b8d5ce1c 100644 --- a/src/devices/cpu/clipper/clipper.h +++ b/src/devices/cpu/clipper/clipper.h @@ -1,8 +1,8 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay -#ifndef MAME_DEVICES_CPU_CLIPPER_H -#define MAME_DEVICES_CPU_CLIPPER_H +#ifndef MAME_CPU_CLIPPER_CLIPPER_H +#define MAME_CPU_CLIPPER_CLIPPER_H #pragma once @@ -267,4 +267,4 @@ DECLARE_DEVICE_TYPE(CLIPPER_C400, clipper_c400_device) extern CPU_DISASSEMBLE(clipper); -#endif // MAME_DEVICES_CPU_CLIPPER_H +#endif // MAME_CPU_CLIPPER_CLIPPER_H diff --git a/src/devices/machine/ncr5390.h b/src/devices/machine/ncr5390.h index f30381d3626..018f9fb5098 100644 --- a/src/devices/machine/ncr5390.h +++ b/src/devices/machine/ncr5390.h @@ -44,13 +44,6 @@ public: DECLARE_WRITE8_MEMBER(conf_w); DECLARE_WRITE8_MEMBER(clock_w); - DECLARE_WRITE8_MEMBER(test_w); - DECLARE_READ8_MEMBER(conf2_r) { return config2; }; - DECLARE_WRITE8_MEMBER(conf2_w) { config2 = data; }; - DECLARE_READ8_MEMBER(conf3_r) { return config3; }; - DECLARE_WRITE8_MEMBER(conf3_w) { config3 = data; }; - DECLARE_WRITE8_MEMBER(fifo_align_w) { m_fifo_align = data; }; - virtual void scsi_ctrl_changed() override; uint8_t dma_r(); @@ -234,11 +227,6 @@ private: devcb_write_line m_irq_handler; devcb_write_line m_drq_handler; - - bool test_mode; - u8 config2; - u8 config3; - u8 m_fifo_align; }; DECLARE_DEVICE_TYPE(NCR5390, ncr5390_device) diff --git a/src/mame/includes/interpro.h b/src/mame/includes/interpro.h index db9b99aac10..5217ec01719 100644 --- a/src/mame/includes/interpro.h +++ b/src/mame/includes/interpro.h @@ -50,7 +50,7 @@ #define INTERPRO_SCSI_HA_TAG "adapter" #define INTERPRO_IOGA_TAG "ioga" -#define INTERPRO_MCGA_TAG "fmcc" +#define INTERPRO_MCGA_TAG "mcga" #define INTERPRO_SGA_TAG "sga" #define INTERPRO_SRARB_TAG "srarb" diff --git a/src/mame/machine/cammu.cpp b/src/mame/machine/cammu.cpp index 41c043cba7d..320c7a9b397 100644 --- a/src/mame/machine/cammu.cpp +++ b/src/mame/machine/cammu.cpp @@ -103,7 +103,7 @@ DEFINE_DEVICE_TYPE(CAMMU_C4I, cammu_c4i_device, "c4i", "C4I CAMMU") DEFINE_DEVICE_TYPE(CAMMU_C3, cammu_c3_device, "c3", "C1/C3 CAMMU") cammu_c4t_device::cammu_c4t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : cammu_c4_device(mconfig, CAMMU_C4T, tag, owner, clock) + : cammu_c4_device(mconfig, CAMMU_C4T, tag, owner, clock) { } @@ -132,7 +132,7 @@ cammu_device::cammu_device(const machine_config &mconfig, device_type type, cons m_io_space(nullptr), m_boot_space(nullptr), m_ssw_func(*this) -{ +{ } void cammu_device::device_start() @@ -497,4 +497,4 @@ u32 cammu_c3_device::get_pte(u32 va, int user, bool data) fatalerror("can't deal with pte faults va 0x%08x %s\n", va, machine().describe_context()); return pte; -} \ No newline at end of file +} diff --git a/src/mame/machine/interpro_ioga.cpp b/src/mame/machine/interpro_ioga.cpp index 90297634e88..6904c3bb09b 100644 --- a/src/mame/machine/interpro_ioga.cpp +++ b/src/mame/machine/interpro_ioga.cpp @@ -804,4 +804,3 @@ void interpro_ioga_device::dma_w(address_space &space, offs_t offset, u32 data, break; } } - diff --git a/src/mame/machine/interpro_ioga.h b/src/mame/machine/interpro_ioga.h index f478f70d896..1fd3520a4be 100644 --- a/src/mame/machine/interpro_ioga.h +++ b/src/mame/machine/interpro_ioga.h @@ -274,4 +274,4 @@ private: // device type definition DECLARE_DEVICE_TYPE(INTERPRO_IOGA, interpro_ioga_device) -#endif // MAME_MACHINE_INTERPRO_IOGA_H \ No newline at end of file +#endif // MAME_MACHINE_INTERPRO_IOGA_H diff --git a/src/mame/machine/interpro_mcga.cpp b/src/mame/machine/interpro_mcga.cpp index 6aeb2e13a63..5ccc934f54a 100644 --- a/src/mame/machine/interpro_mcga.cpp +++ b/src/mame/machine/interpro_mcga.cpp @@ -94,4 +94,4 @@ WRITE16_MEMBER(interpro_fmcc_device::control_w) m_error |= MCGA_ERROR_VALID; // else // error &= ~MCGA_ERROR_VALID; -} \ No newline at end of file +} diff --git a/src/mame/machine/interpro_mcga.h b/src/mame/machine/interpro_mcga.h index 67efb168801..9b39c1b4592 100644 --- a/src/mame/machine/interpro_mcga.h +++ b/src/mame/machine/interpro_mcga.h @@ -21,7 +21,7 @@ #define FMCC_CTRL_MASK 0x8fff // mcga error register -#define MCGA_ERROR_VALID 0x00008000 +#define MCGA_ERROR_VALID 0x00008000 class interpro_mcga_device : public device_t { diff --git a/src/mame/machine/interpro_sga.cpp b/src/mame/machine/interpro_sga.cpp index d38a3702b16..8cc35fd82b3 100644 --- a/src/mame/machine/interpro_sga.cpp +++ b/src/mame/machine/interpro_sga.cpp @@ -22,10 +22,10 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_sga_device) AM_RANGE(0x08, 0x0b) AM_READWRITE(imask_r, imask_w) AM_RANGE(0x0c, 0x0f) AM_READWRITE(range_base_r, range_base_w) AM_RANGE(0x10, 0x13) AM_READWRITE(range_end_r, range_end_w) - AM_RANGE(0x14, 0x17) AM_READWRITE(cttag_r, cttag_w) // aka diag1 - AM_RANGE(0x18, 0x1b) AM_READWRITE(address_r, address_w) // aka diag0 + AM_RANGE(0x14, 0x17) AM_READWRITE(cttag_r, cttag_w) // aka diag1 + AM_RANGE(0x18, 0x1b) AM_READWRITE(address_r, address_w) // aka diag0 AM_RANGE(0x1c, 0x1f) AM_READWRITE(dmacsr_r, dmacsr_w) - AM_RANGE(0x20, 0x23) AM_READWRITE(edmacsr_r, edmacsr_w) // esga + AM_RANGE(0x20, 0x23) AM_READWRITE(edmacsr_r, edmacsr_w) // esga AM_RANGE(0x24, 0x27) AM_READWRITE(reg6_range_r, reg6_range_w) // esga AM_RANGE(0x80, 0x83) AM_READWRITE(ddpta0_r, ddpta0_w) // dma 0 device page table address (esga) diff --git a/src/mame/machine/interpro_srarb.cpp b/src/mame/machine/interpro_srarb.cpp index d87fa81f397..a389a272317 100644 --- a/src/mame/machine/interpro_srarb.cpp +++ b/src/mame/machine/interpro_srarb.cpp @@ -43,4 +43,4 @@ void interpro_srarb_device::device_start() void interpro_srarb_device::device_reset() { -} \ No newline at end of file +} diff --git a/src/mame/machine/interpro_srarb.h b/src/mame/machine/interpro_srarb.h index 7b7cc7d0bcc..f1b5c9a34d5 100644 --- a/src/mame/machine/interpro_srarb.h +++ b/src/mame/machine/interpro_srarb.h @@ -49,4 +49,4 @@ private: // device type definition extern const device_type INTERPRO_SRARB; -#endif // MAME_MACHINE_INTERPRO_SRARB_H \ No newline at end of file +#endif // MAME_MACHINE_INTERPRO_SRARB_H -- cgit v1.2.3 From 192f7b8911af481d9de9d2cd5aaad8751a9e1f1b Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 12:42:11 +0700 Subject: permissions --- src/lib/netlist/buildVS/netlistlib.vcxproj.user | 0 src/lib/netlist/nl_base.h | 0 src/lib/netlist/plib/pfmtlog.cpp | 0 src/lib/netlist/plib/pfmtlog.h | 0 src/lib/netlist/prg/nltool.cpp | 0 src/lib/netlist/solver/nld_ms_gcr.h | 0 6 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 src/lib/netlist/buildVS/netlistlib.vcxproj.user mode change 100644 => 100755 src/lib/netlist/nl_base.h mode change 100644 => 100755 src/lib/netlist/plib/pfmtlog.cpp mode change 100644 => 100755 src/lib/netlist/plib/pfmtlog.h mode change 100644 => 100755 src/lib/netlist/prg/nltool.cpp mode change 100644 => 100755 src/lib/netlist/solver/nld_ms_gcr.h diff --git a/src/lib/netlist/buildVS/netlistlib.vcxproj.user b/src/lib/netlist/buildVS/netlistlib.vcxproj.user old mode 100644 new mode 100755 diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h old mode 100644 new mode 100755 diff --git a/src/lib/netlist/plib/pfmtlog.cpp b/src/lib/netlist/plib/pfmtlog.cpp old mode 100644 new mode 100755 diff --git a/src/lib/netlist/plib/pfmtlog.h b/src/lib/netlist/plib/pfmtlog.h old mode 100644 new mode 100755 diff --git a/src/lib/netlist/prg/nltool.cpp b/src/lib/netlist/prg/nltool.cpp old mode 100644 new mode 100755 diff --git a/src/lib/netlist/solver/nld_ms_gcr.h b/src/lib/netlist/solver/nld_ms_gcr.h old mode 100644 new mode 100755 -- cgit v1.2.3 From 405daa611efbf3c352383b66cf64550d974115fe Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 14:54:35 +0700 Subject: scsi dma improvements --- src/devices/machine/ncr5390.cpp | 72 +++++++++++++++++++++++++++++++++++++++-- src/devices/machine/ncr5390.h | 35 +++++++++++++++++++- src/mame/drivers/interpro.cpp | 35 +++++++++++++++++--- src/mame/includes/interpro.h | 12 ++++--- 4 files changed, 141 insertions(+), 13 deletions(-) diff --git a/src/devices/machine/ncr5390.cpp b/src/devices/machine/ncr5390.cpp index 729e486856d..c140c2bd8b9 100644 --- a/src/devices/machine/ncr5390.cpp +++ b/src/devices/machine/ncr5390.cpp @@ -7,6 +7,7 @@ #define DELAY_HACK DEFINE_DEVICE_TYPE(NCR5390, ncr5390_device, "ncr5390", "NCR 5390 SCSI") +DEFINE_DEVICE_TYPE(NCR53C94, ncr53c94_device, "ncr53c94", "NCR 53C94 SCSI") DEVICE_ADDRESS_MAP_START(map, 8, ncr5390_device) AM_RANGE(0x0, 0x0) AM_READWRITE(tcount_lo_r, tcount_lo_w) @@ -21,8 +22,25 @@ DEVICE_ADDRESS_MAP_START(map, 8, ncr5390_device) AM_RANGE(0x9, 0x9) AM_WRITE(clock_w) ADDRESS_MAP_END -ncr5390_device::ncr5390_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : nscsi_device(mconfig, NCR5390, tag, owner, clock) +DEVICE_ADDRESS_MAP_START(map, 8, ncr53c94_device) + AM_RANGE(0x0, 0x0) AM_READWRITE(tcount_lo_r, tcount_lo_w) + AM_RANGE(0x1, 0x1) AM_READWRITE(tcount_hi_r, tcount_hi_w) + AM_RANGE(0x2, 0x2) AM_READWRITE(fifo_r, fifo_w) + AM_RANGE(0x3, 0x3) AM_READWRITE(command_r, command_w) + AM_RANGE(0x4, 0x4) AM_READWRITE(status_r, bus_id_w) + AM_RANGE(0x5, 0x5) AM_READWRITE(istatus_r, timeout_w) + AM_RANGE(0x6, 0x6) AM_READWRITE(seq_step_r, sync_period_w) + AM_RANGE(0x7, 0x7) AM_READWRITE(fifo_flags_r, sync_offset_w) + AM_RANGE(0x8, 0x8) AM_READWRITE(conf_r, conf_w) + AM_RANGE(0x9, 0x9) AM_WRITE(clock_w) + AM_RANGE(0xa, 0xa) AM_WRITE(test_w) + AM_RANGE(0xb, 0xb) AM_READWRITE(conf2_r, conf2_w) + AM_RANGE(0xc, 0xc) AM_READWRITE(conf3_r, conf3_w) + AM_RANGE(0xf, 0xf) AM_WRITE(fifo_align_w) +ADDRESS_MAP_END + +ncr5390_device::ncr5390_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : nscsi_device(mconfig, type, tag, owner, clock) , tm(nullptr), config(0), status(0), istatus(0), clock_conv(0), sync_offset(0), sync_period(0), bus_id(0) , select_timeout(0), seq(0), tcount(0), mode(0), fifo_pos(0), command_pos(0), state(0), xfr_phase(0), command_length(0), dma_dir(0), irq(false), drq(false) , m_irq_handler(*this) @@ -30,6 +48,19 @@ ncr5390_device::ncr5390_device(const machine_config &mconfig, const char *tag, d { } +ncr5390_device::ncr5390_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : ncr5390_device(mconfig, NCR5390, tag, owner, clock) +{ +} + +ncr53c94_device::ncr53c94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : ncr5390_device(mconfig, NCR53C94, tag, owner, clock) + , test_mode(false) + , config2(0) + , config3(0) +{ +} + void ncr5390_device::device_start() { nscsi_device::device_start(); @@ -866,3 +897,40 @@ void ncr5390_device::drq_clear() m_drq_handler(drq); } } + +void ncr53c94_device::device_start() +{ + save_item(NAME(test_mode)); + save_item(NAME(config2)); + save_item(NAME(config3)); + + test_mode = false; + config2 = 0; + config3 = 0; + + ncr5390_device::device_start(); +} + +void ncr53c94_device::reset_soft() +{ + test_mode = false; + config2 = 0; + config3 = 0; + + ncr5390_device::reset_soft(); +} + +WRITE8_MEMBER(ncr53c94_device::conf_w) +{ + ncr5390_device::conf_w(space, offset, data, mem_mask); + + // test mode can only be cleared by hard/soft reset + if (data & 0x8) + test_mode = true; +} + +WRITE8_MEMBER(ncr53c94_device::test_w) +{ + if (test_mode) + logerror("%s: test_w %d (%08x) - test mode not implemented\n", tag(), data, space.device().safe_pc()); +} diff --git a/src/devices/machine/ncr5390.h b/src/devices/machine/ncr5390.h index 018f9fb5098..0f62fe69c5e 100644 --- a/src/devices/machine/ncr5390.h +++ b/src/devices/machine/ncr5390.h @@ -22,7 +22,7 @@ public: template static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast(device).m_irq_handler.set_callback(std::forward(cb)); } template static devcb_base &set_drq_handler(device_t &device, Object &&cb) { return downcast(device).m_drq_handler.set_callback(std::forward(cb)); } - DECLARE_ADDRESS_MAP(map, 8); + virtual DECLARE_ADDRESS_MAP(map, 8); DECLARE_READ8_MEMBER(tcount_lo_r); DECLARE_WRITE8_MEMBER(tcount_lo_w); @@ -50,6 +50,8 @@ public: void dma_w(uint8_t val); protected: + ncr5390_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; @@ -214,7 +216,10 @@ private: void command_pop_and_chain(); void check_irq(); +protected: void reset_soft(); + +private: void reset_disconnect(); uint8_t fifo_pop(); @@ -229,6 +234,34 @@ private: devcb_write_line m_drq_handler; }; +class ncr53c94_device : public ncr5390_device +{ +public: + ncr53c94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + virtual DECLARE_ADDRESS_MAP(map, 8) override; + + DECLARE_WRITE8_MEMBER(conf_w); + + DECLARE_WRITE8_MEMBER(test_w); + DECLARE_READ8_MEMBER(conf2_r) { return config2; }; + DECLARE_WRITE8_MEMBER(conf2_w) { config2 = data; }; + DECLARE_READ8_MEMBER(conf3_r) { return config3; }; + DECLARE_WRITE8_MEMBER(conf3_w) { config3 = data; }; + DECLARE_WRITE8_MEMBER(fifo_align_w) { fifo_align = data; }; + +protected: + virtual void device_start() override; + void reset_soft(); + +private: + bool test_mode; + u8 config2; + u8 config3; + u8 fifo_align; +}; + DECLARE_DEVICE_TYPE(NCR5390, ncr5390_device) +DECLARE_DEVICE_TYPE(NCR53C94, ncr53c94_device) #endif // MAME_MACHINE_NCR5390_H diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 3b376291950..715459fc73d 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -243,6 +243,28 @@ WRITE8_MEMBER(interpro_state::scsi_w) #endif } +READ8_MEMBER(interpro_state::scsi_dma_r) +{ +#if NEW_SCSI + return m_scsi->dma_r(); +#else + u8 data; + + m_scsi->dma_read_data(1, &data); + + return data; +#endif +} + +WRITE8_MEMBER(interpro_state::scsi_dma_w) +{ +#if NEW_SCSI + m_scsi->dma_w(data); +#else + m_scsi->dma_write_data(1, &data); +#endif +} + DRIVER_INIT_MEMBER(interpro_state, ip2800) { } @@ -251,7 +273,7 @@ DRIVER_INIT_MEMBER(interpro_state, ip2800) static SLOT_INTERFACE_START(interpro_scsi_devices) SLOT_INTERFACE("harddisk", NSCSI_HARDDISK) SLOT_INTERFACE("cdrom", NSCSI_CDROM) - SLOT_INTERFACE_INTERNAL(INTERPRO_SCSI_ADAPTER_TAG, NCR5390) + SLOT_INTERFACE_INTERNAL(INTERPRO_SCSI_ADAPTER_TAG, NCR53C94) SLOT_INTERFACE_END static MACHINE_CONFIG_FRAGMENT(interpro_scsi_adapter) @@ -334,7 +356,7 @@ static INPUT_PORTS_START(ip2800) INPUT_PORTS_END static MACHINE_CONFIG_START(ip2800) - MCFG_CPU_ADD(INTERPRO_CPU_TAG, CLIPPER_C400, XTAL_12_5MHz) + MCFG_CPU_ADD(INTERPRO_CPU_TAG, CLIPPER_C400, XTAL_10MHz) MCFG_CPU_PROGRAM_MAP(clipper_insn_map) MCFG_CPU_DATA_MAP(clipper_data_map) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, inta_cb) @@ -395,7 +417,7 @@ static MACHINE_CONFIG_START(ip2800) MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0) MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE2, "cdrom", SCSICD, SCSI_ID_3) - MCFG_DEVICE_ADD(INTERPRO_SCSI_HA_TAG, NCR539X, XTAL_12_5MHz) + MCFG_DEVICE_ADD(INTERPRO_SCSI_ADAPTER_TAG, NCR539X, XTAL_12_5MHz) MCFG_LEGACY_SCSI_PORT(INTERPRO_SCSI_TAG) MCFG_NCR539X_OUT_IRQ_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir0_w)) MCFG_NCR539X_OUT_DRQ_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_scsi)) @@ -406,13 +428,16 @@ static MACHINE_CONFIG_START(ip2800) MCFG_INTERPRO_IOGA_NMI_CB(INPUTLINE(INTERPRO_CPU_TAG, INPUT_LINE_NMI)) MCFG_INTERPRO_IOGA_IRQ_CB(INPUTLINE(INTERPRO_CPU_TAG, INPUT_LINE_IRQ0)) //MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_CHANNEL_PLOTTER, unknown) - //MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_SCSI, DEVREAD8(INTERPRO_SCSI_TAG, ncr539x_device, dma_read_data), DEVWRITE8(INTERPRO_SCSI_TAG, ncr539x_device, dma_write_data)) + + // use driver helper functions to wrap scsi adapter dma read/write + MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_SCSI, DEVREAD8("", interpro_state, scsi_dma_r), DEVWRITE8("", interpro_state, scsi_dma_w)) + MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_FLOPPY, DEVREAD8(INTERPRO_FDC_TAG, n82077aa_device, mdma_r), DEVWRITE8(INTERPRO_FDC_TAG, n82077aa_device, mdma_w)) MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_SERIAL, DEVREAD8(INTERPRO_SCC1_TAG, z80scc_device, da_r), DEVWRITE8(INTERPRO_SCC1_TAG, z80scc_device, da_w)) MCFG_INTERPRO_IOGA_FDCTC_CB(DEVWRITELINE(INTERPRO_FDC_TAG, n82077aa_device, tc_line_w)) MCFG_INTERPRO_IOGA_DMA_BUS(INTERPRO_CAMMU_TAG, AS_0) - // memory controller + // memory control gate array MCFG_DEVICE_ADD(INTERPRO_MCGA_TAG, INTERPRO_FMCC, 0) // srx gate array diff --git a/src/mame/includes/interpro.h b/src/mame/includes/interpro.h index 5217ec01719..59c81239398 100644 --- a/src/mame/includes/interpro.h +++ b/src/mame/includes/interpro.h @@ -6,7 +6,7 @@ #pragma once -#define NEW_SCSI 0 +#define NEW_SCSI 1 #include "cpu/clipper/clipper.h" #include "machine/cammu.h" @@ -47,7 +47,7 @@ #define INTERPRO_TERMINAL_TAG "terminal" #define INTERPRO_FDC_TAG "fdc" #define INTERPRO_SCSI_TAG "scsi" -#define INTERPRO_SCSI_HA_TAG "adapter" +#define INTERPRO_SCSI_ADAPTER_TAG "adapter" #define INTERPRO_IOGA_TAG "ioga" #define INTERPRO_MCGA_TAG "mcga" @@ -97,9 +97,9 @@ public: m_fdc(*this, INTERPRO_FDC_TAG), #if NEW_SCSI m_scsibus(*this, INTERPRO_SCSI_TAG), - m_scsi(*this, INTERPRO_SCSI_TAG ":7:" INTERPRO_SCSI_HA_TAG), + m_scsi(*this, INTERPRO_SCSI_TAG ":7:" INTERPRO_SCSI_ADAPTER_TAG), #else - m_scsi(*this, INTERPRO_SCSI_HA_TAG), + m_scsi(*this, INTERPRO_SCSI_ADAPTER_TAG), #endif m_ioga(*this, INTERPRO_IOGA_TAG), m_mcga(*this, INTERPRO_MCGA_TAG), @@ -117,7 +117,7 @@ public: required_device m_fdc; #if NEW_SCSI required_device m_scsibus; - required_device m_scsi; + required_device m_scsi; #else required_device m_scsi; #endif @@ -140,6 +140,8 @@ public: DECLARE_READ8_MEMBER(scsi_r); DECLARE_WRITE8_MEMBER(scsi_w); + DECLARE_READ8_MEMBER(scsi_dma_r); + DECLARE_WRITE8_MEMBER(scsi_dma_w); DECLARE_FLOPPY_FORMATS(floppy_formats); -- cgit v1.2.3 From 2da04cd29424714e97efde1d6e87461d029c070f Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 14:57:09 +0700 Subject: relocate preproc directive --- src/mame/drivers/interpro.cpp | 2 ++ src/mame/includes/interpro.h | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 715459fc73d..613f99b80a7 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -1,6 +1,8 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay +#define NEW_SCSI 0 + #include "emu.h" #include "includes/interpro.h" #include "debugger.h" diff --git a/src/mame/includes/interpro.h b/src/mame/includes/interpro.h index 59c81239398..d2a45e24225 100644 --- a/src/mame/includes/interpro.h +++ b/src/mame/includes/interpro.h @@ -6,8 +6,6 @@ #pragma once -#define NEW_SCSI 1 - #include "cpu/clipper/clipper.h" #include "machine/cammu.h" -- cgit v1.2.3 From bacc4578d24fbce515ea48c7de5437763dc43fb6 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Fri, 19 May 2017 15:19:59 +0700 Subject: minor tidy --- src/mame/drivers/interpro.cpp | 11 ++++++----- src/mame/machine/interpro_ioga.h | 2 +- src/mame/machine/interpro_mcga.h | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 613f99b80a7..23195e9656f 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -191,16 +191,17 @@ READ8_MEMBER(interpro_state::rtc_r) } } +// these wrappers handle the two alternative scsi drivers, as well as the weird memory mapping on the InterPro +// that maps consecutive registers at offsets of 0x100 (and with lsb = 1, but we're ignoring that for now + READ8_MEMBER(interpro_state::scsi_r) { #if NEW_SCSI - u8 temp; - switch (offset >> 6) { case 0x0: return m_scsi->tcount_lo_r(space, 0); case 0x1: return m_scsi->tcount_hi_r(space, 0); - case 0x2: temp = m_scsi->fifo_r(space, 0); logerror("fifo_r 0x%02x at %s\n", temp, machine().describe_context()); return temp; + case 0x2: return m_scsi->fifo_r(space, 0); case 0x3: return m_scsi->command_r(space, 0); case 0x4: return m_scsi->status_r(space, 0); case 0x5: return m_scsi->istatus_r(space, 0); @@ -225,7 +226,7 @@ WRITE8_MEMBER(interpro_state::scsi_w) { case 0: m_scsi->tcount_lo_w(space, 0, data); return; case 1: m_scsi->tcount_hi_w(space, 0, data); return; - case 2: logerror("fifo_w 0x%02x at %s\n", data, machine().describe_context()); m_scsi->fifo_w(space, 0, data); return; + case 2: m_scsi->fifo_w(space, 0, data); return; case 3: m_scsi->command_w(space, 0, data); return; case 4: m_scsi->bus_id_w(space, 0, data); return; case 5: m_scsi->timeout_w(space, 0, data); return; @@ -250,7 +251,7 @@ READ8_MEMBER(interpro_state::scsi_dma_r) #if NEW_SCSI return m_scsi->dma_r(); #else - u8 data; + u8 data = 0; m_scsi->dma_read_data(1, &data); diff --git a/src/mame/machine/interpro_ioga.h b/src/mame/machine/interpro_ioga.h index 1fd3520a4be..766a11e9ab9 100644 --- a/src/mame/machine/interpro_ioga.h +++ b/src/mame/machine/interpro_ioga.h @@ -169,7 +169,7 @@ public: DECLARE_WRITE8_MEMBER(softint_w); DECLARE_READ8_MEMBER(nmictrl_r) { return m_nmictrl; } DECLARE_WRITE8_MEMBER(nmictrl_w); - + DECLARE_READ16_MEMBER(softint_vector_r) { return m_swicr[offset]; } DECLARE_WRITE16_MEMBER(softint_vector_w); diff --git a/src/mame/machine/interpro_mcga.h b/src/mame/machine/interpro_mcga.h index 9b39c1b4592..22535746ddc 100644 --- a/src/mame/machine/interpro_mcga.h +++ b/src/mame/machine/interpro_mcga.h @@ -21,7 +21,7 @@ #define FMCC_CTRL_MASK 0x8fff // mcga error register -#define MCGA_ERROR_VALID 0x00008000 +#define MCGA_ERROR_VALID 0x00008000 class interpro_mcga_device : public device_t { -- cgit v1.2.3 From 775df687d999444ebd885afb7bc16765d6e14a85 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 23 May 2017 18:47:20 +0700 Subject: remove broken caching --- src/mame/machine/cammu.cpp | 95 ++++------------------------------------------ src/mame/machine/cammu.h | 21 ---------- 2 files changed, 7 insertions(+), 109 deletions(-) diff --git a/src/mame/machine/cammu.cpp b/src/mame/machine/cammu.cpp index 320c7a9b397..9e44785a7a9 100644 --- a/src/mame/machine/cammu.cpp +++ b/src/mame/machine/cammu.cpp @@ -18,14 +18,13 @@ * - bus errors */ +#define VERBOSE 0 +#define DTU 1 // enable preliminary/incomplete address translation + #include "emu.h" #include "cammu.h" -#define VERBOSE 0 -#define DTU 1 - // each variant of the cammu has different registers and a different addressing map -// TODO: decode the cammu registers properly DEVICE_ADDRESS_MAP_START(map, 32, cammu_c4t_device) AM_RANGE(0x008, 0x00b) AM_READWRITE(ram_line_r, ram_line_w) AM_RANGE(0x010, 0x013) AM_READWRITE(s_pdo_r, s_pdo_w) @@ -75,8 +74,9 @@ DEVICE_ADDRESS_MAP_START(map, 32, cammu_c4i_device) ADDRESS_MAP_END DEVICE_ADDRESS_MAP_START(map, 32, cammu_c3_device) - // following is actually tlb - AM_RANGE(0x800, 0x8ff) AM_NOP + // the first AM_NOP in each range is in fact the TLB in the C3 CAMMU + + AM_RANGE(0x800, 0x8ff) AM_NOP AM_RANGE(0x904, 0x907) AM_READWRITE(d_s_pdo_r, d_s_pdo_w) AM_RANGE(0x908, 0x90b) AM_READWRITE(d_u_pdo_r, d_u_pdo_w) AM_RANGE(0x910, 0x913) AM_READWRITE(d_fault_r, d_fault_w) @@ -193,6 +193,7 @@ READ32_MEMBER(cammu_device::insn_r) // if not in mapped mode, default to main memory space if ((ssw & 0x04000000) == 0) return m_main_space->read_dword(va); + #if DTU // get the page table entry u32 pte = get_pte(va, ssw & 0x40000000, false); @@ -207,21 +208,7 @@ READ32_MEMBER(cammu_device::insn_r) case 1: case 2: case 3: -#if ICACHE_ENTRIES - { - const u16 slot = offset & (ICACHE_ENTRIES - 1); - - if (m_icache[slot].offset != offset) - { - m_icache[slot].offset = offset; - m_icache[slot].data = m_main_space->read_dword(ra); - } - - return m_icache[slot].data; - } -#else return m_main_space->read_dword(ra, mem_mask); -#endif case 4: return m_io_space->read_dword(ra, mem_mask); @@ -235,25 +222,10 @@ READ32_MEMBER(cammu_device::insn_r) } return 0; - #else // FIXME: currently maps addresses with upper bits 0x00 or 0x7f1 to main memory and everything else to I/O if ((va & 0xff000000) == 0x00000000 || (va & 0xfff00000) == 0x7f100000) - { -#if ICACHE_ENTRIES - const u16 slot = offset & (ICACHE_ENTRIES - 1); - - if (m_icache[slot].offset != offset) - { - m_icache[slot].offset = offset; - m_icache[slot].data = m_main_space->read_dword(va); - } - - return m_icache[slot].data; -#else return m_main_space->read_dword(va, mem_mask); -#endif - } else return m_io_space->read_dword(va, mem_mask); #endif @@ -306,21 +278,7 @@ READ32_MEMBER(cammu_device::data_r) case 1: case 2: case 3: -#if DCACHE_ENTRIES - { - const u16 slot = offset & (DCACHE_ENTRIES - 1); - - if (m_dcache[slot].offset != offset) - { - m_dcache[slot].offset = offset; - m_dcache[slot].data = m_main_space->read_dword(ra); - } - - return m_dcache[slot].data; - } -#else return m_main_space->read_dword(ra, mem_mask); -#endif case 4: return m_io_space->read_dword(ra, mem_mask); @@ -337,20 +295,7 @@ READ32_MEMBER(cammu_device::data_r) #else // FIXME: currently maps addresses with upper bits 0x00 or 0x7f1 to main memory and everything else to I/O if ((va & 0xff000000) == 0x00000000 || (va & 0xfff00000) == 0x7f100000) - { -#if DCACHE_ENTRIES - const u16 slot = offset & (DCACHE_ENTRIES - 1); - - if (m_dcache[slot].offset != offset) - { - m_dcache[slot].offset = offset; - m_dcache[slot].data = m_main_space->read_dword(va); - } - - return m_dcache[slot].data; -#endif return m_main_space->read_dword(va, mem_mask); - } else return m_io_space->read_dword(va, mem_mask); #endif @@ -409,19 +354,6 @@ WRITE32_MEMBER(cammu_device::data_w) case 1: case 2: case 3: -#if DCACHE_ENTRIES - { - const u16 slot = offset & (DCACHE_ENTRIES - 1); - - if (mem_mask == 0xffffffff) - { - m_dcache[slot].offset = offset; - m_dcache[slot].data = data; - } - else - m_dcache[slot].offset = 0; - } -#endif m_main_space->write_dword(ra, data, mem_mask); break; @@ -441,20 +373,7 @@ WRITE32_MEMBER(cammu_device::data_w) #else // FIXME: currently maps addresses with upper bits 0x00 or 0x7f1 to main memory and everything else to I/O if ((va & 0xff000000) == 0x00000000 || (va & 0xfff00000) == 0x7f100000) - { -#if DCACHE_ENTRIES - const u16 slot = offset & (DCACHE_ENTRIES - 1); - - if (mem_mask == 0xffffffff) - { - m_dcache[slot].offset = offset; - m_dcache[slot].data = data; - } - else - m_dcache[slot].offset = 0; -#endif m_main_space->write_dword(va, data, mem_mask); - } else m_io_space->write_dword(va, data, mem_mask); #endif diff --git a/src/mame/machine/cammu.h b/src/mame/machine/cammu.h index bb23900b162..cdeb036f49c 100644 --- a/src/mame/machine/cammu.h +++ b/src/mame/machine/cammu.h @@ -6,12 +6,6 @@ #pragma once -// the following enables a very crude instruction cache - it has known (future) -// problems, but speeds up cpu execution quite noticeably in the short term by -// avoiding some of the delays in the mame memory subsystem -#define ICACHE_ENTRIES 32768 -#define DCACHE_ENTRIES 32768 - #define MCFG_CAMMU_SSW_CB(_sswcb) \ devcb = &cammu_device::static_set_ssw_callback(*device, DEVCB_##_sswcb); @@ -57,21 +51,6 @@ protected: private: devcb_read32 m_ssw_func; - -#if ICACHE_ENTRIES - struct icache - { - u32 offset; - u32 data; - } m_icache[ICACHE_ENTRIES]; -#endif -#if DCACHE_ENTRIES - struct dcache - { - u32 offset; - u32 data; - } m_dcache[DCACHE_ENTRIES]; -#endif }; class cammu_c4_device : public cammu_device -- cgit v1.2.3 From cece32b2b80628f7dd63350e46ad6b3d80ba8367 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 23 May 2017 18:47:30 +0700 Subject: fix some log messages --- src/devices/cpu/clipper/clipper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/cpu/clipper/clipper.cpp b/src/devices/cpu/clipper/clipper.cpp index ffdc3177bfd..69f00ba1f15 100644 --- a/src/devices/cpu/clipper/clipper.cpp +++ b/src/devices/cpu/clipper/clipper.cpp @@ -1269,7 +1269,7 @@ int clipper_device::execute_instruction () case 0x04: // reti: restore psw, ssw and pc from supervisor stack LOG_INTERRUPT("reti r%d, ssp = %08x, pc = %08x, next_pc = %08x\n", - (m_info.macro >> 4) & 0xf, m_rs[(m_info.macro >> 4) & 0xf], m_pc, m_insn->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 8)); + (m_info.macro >> 4) & 0xf, m_rs[(m_info.macro >> 4) & 0xf], m_pc, m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 8)); m_psw = m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 0); m_ssw = m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 4); @@ -1327,7 +1327,7 @@ int clipper_device::execute_instruction () */ u32 clipper_device::intrap(u32 vector, u32 pc, u32 cts, u32 mts) { - LOG_INTERRUPT("intrap - vector %x, pc = 0x%08x, next_pc = 0x%08x, ssp = 0x%08x\n", vector, pc, m_insn->read_dword(vector + 4), m_rs[15]); + LOG_INTERRUPT("intrap - vector %x, pc = 0x%08x, next_pc = 0x%08x, ssp = 0x%08x\n", vector, pc, m_data->read_dword(vector + 4), m_rs[15]); // set cts and mts to indicate source of exception m_psw = (m_psw & ~(PSW_CTS | PSW_MTS)) | mts | cts; -- cgit v1.2.3 From 377de998e8930ffe5a5ec97a65310606b8a6d608 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 23 May 2017 19:55:21 +0700 Subject: defines after emu.h --- src/mame/drivers/interpro.cpp | 3 ++- src/mame/machine/cammu.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 23195e9656f..295e49af7ff 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -1,9 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Patrick Mackinlay +#include "emu.h" + #define NEW_SCSI 0 -#include "emu.h" #include "includes/interpro.h" #include "debugger.h" diff --git a/src/mame/machine/cammu.cpp b/src/mame/machine/cammu.cpp index 9e44785a7a9..f62bfa167be 100644 --- a/src/mame/machine/cammu.cpp +++ b/src/mame/machine/cammu.cpp @@ -18,10 +18,11 @@ * - bus errors */ +#include "emu.h" + #define VERBOSE 0 #define DTU 1 // enable preliminary/incomplete address translation -#include "emu.h" #include "cammu.h" // each variant of the cammu has different registers and a different addressing map -- cgit v1.2.3 From 4da908aae7faafedb4fcd9dcf6f072bad6c97635 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Wed, 7 Jun 2017 13:28:19 +0700 Subject: added cpu id support --- src/devices/cpu/clipper/clipper.cpp | 22 ++++++++++------------ src/devices/cpu/clipper/clipper.h | 18 +++++++++++++++++- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/devices/cpu/clipper/clipper.cpp b/src/devices/cpu/clipper/clipper.cpp index 69f00ba1f15..ab4f1482a18 100644 --- a/src/devices/cpu/clipper/clipper.cpp +++ b/src/devices/cpu/clipper/clipper.cpp @@ -28,10 +28,6 @@ #define R1 (m_info.r1) #define R2 (m_info.r2) -// convenience macros for dealing with the psw -#define PSW(mask) (m_psw & PSW_##mask) -#define SSW(mask) (m_ssw & SSW_##mask) - // macros for setting psw condition codes #define FLAGS(C,V,Z,N) \ m_psw = (m_psw & ~(PSW_C | PSW_V | PSW_Z | PSW_N)) | (((C) << 3) | ((V) << 2) | ((Z) << 1) | ((N) << 0)); @@ -57,17 +53,19 @@ DEFINE_DEVICE_TYPE(CLIPPER_C300, clipper_c300_device, "clipper_c300", "C300 CLIP DEFINE_DEVICE_TYPE(CLIPPER_C400, clipper_c400_device, "clipper_c400", "C400 CLIPPER") clipper_c100_device::clipper_c100_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : clipper_device(mconfig, CLIPPER_C100, tag, owner, clock) { } + : clipper_device(mconfig, CLIPPER_C100, tag, owner, clock, 0) { } clipper_c300_device::clipper_c300_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : clipper_device(mconfig, CLIPPER_C300, tag, owner, clock) { } + : clipper_device(mconfig, CLIPPER_C300, tag, owner, clock, 0) { } clipper_c400_device::clipper_c400_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : clipper_device(mconfig, CLIPPER_C400, tag, owner, clock) { } + : clipper_device(mconfig, CLIPPER_C400, tag, owner, clock, SSW_ID_C400R4) { } -clipper_device::clipper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) +clipper_device::clipper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, const u32 cpuid) : cpu_device(mconfig, type, tag, owner, clock), m_pc(0), + m_psw(0), + m_ssw(cpuid), m_r(m_rs), m_insn_config("insn", ENDIANNESS_LITTLE, 32, 32, 0), m_data_config("data", ENDIANNESS_LITTLE, 32, 32, 0), @@ -170,7 +168,7 @@ void clipper_device::device_reset() * ssw: EI, TP, M, U, K, KU, UU, P cleared, ID set from hardware, others undefined */ m_psw = 0; - m_ssw = 0; + set_ssw(0); m_r = SSW(U) ? m_ru : m_rs; @@ -425,7 +423,7 @@ int clipper_device::execute_instruction () m_psw = m_r[R2]; else if (!SSW(U) && (R1 == 1 || R1 == 3)) { - m_ssw = m_r[R2]; + set_ssw(m_r[R2]); m_r = SSW(U) ? m_ru : m_rs; } // FLAGS: CVZN @@ -1272,7 +1270,7 @@ int clipper_device::execute_instruction () (m_info.macro >> 4) & 0xf, m_rs[(m_info.macro >> 4) & 0xf], m_pc, m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 8)); m_psw = m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 0); - m_ssw = m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 4); + set_ssw(m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 4)); next_pc = m_data->read_dword(m_rs[(m_info.macro >> 4) & 0xf] + 8); m_rs[(m_info.macro >> 4) & 0xf] += 12; @@ -1348,7 +1346,7 @@ u32 clipper_device::intrap(u32 vector, u32 pc, u32 cts, u32 mts) m_rs[15] -= 24; // load ssw from trap vector and set previous mode - m_ssw = (m_data->read_dword(vector + 0) & ~SSW_P) | (SSW(U) << 1); + set_ssw(m_data->read_dword(vector + 0) & ~(SSW(P)) | (SSW(U) << 1)); // clear psw m_psw = 0; diff --git a/src/devices/cpu/clipper/clipper.h b/src/devices/cpu/clipper/clipper.h index a00b8d5ce1c..4a0492f91d4 100644 --- a/src/devices/cpu/clipper/clipper.h +++ b/src/devices/cpu/clipper/clipper.h @@ -8,8 +8,13 @@ #include +// convenience macros for dealing with the psw and ssw +#define PSW(mask) (m_psw & PSW_##mask) +#define SSW(mask) (m_ssw & SSW_##mask) + class clipper_device : public cpu_device { +protected: enum registers { CLIPPER_R0, CLIPPER_R1, CLIPPER_R2, CLIPPER_R3, CLIPPER_R4, CLIPPER_R5, CLIPPER_R6, CLIPPER_R7, @@ -101,6 +106,15 @@ class clipper_device : public cpu_device SSW_P = 0x80000000, // previous mode }; + enum clipper_ssw_id + { + SSW_ID_C400R0 = 0x00000, + SSW_ID_C400R1 = 0x04000, + SSW_ID_C400R2 = 0x08000, + SSW_ID_C400R3 = 0x0c000, + SSW_ID_C400R4 = 0x10000 + }; + enum exception_vectors { // data memory trap group @@ -167,7 +181,7 @@ public: DECLARE_READ32_MEMBER(ssw) { return m_ssw; } protected: - clipper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); + clipper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, const u32 cpuid); // device-level overrides virtual void device_start() override; @@ -195,6 +209,8 @@ protected: virtual uint32_t disasm_max_opcode_bytes() const override { return 8; } // largest instruction virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const u8 *oprom, const u8 *opram, u32 options) override; + void set_ssw(u32 data) { m_ssw = (m_ssw & SSW(ID)) | (data & ~SSW(ID)); } + // core registers u32 m_pc; u32 m_psw; -- cgit v1.2.3 From ef6cc1eb4ae8ff7f3348bdd5fcf21fd74a31ff9c Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 10:36:52 +0700 Subject: minor fixes for logging (nw) --- src/devices/machine/ncr5390.cpp | 20 ++++++++++---------- src/devices/machine/ncr539x.cpp | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/devices/machine/ncr5390.cpp b/src/devices/machine/ncr5390.cpp index c140c2bd8b9..f4ad2ca4cf3 100644 --- a/src/devices/machine/ncr5390.cpp +++ b/src/devices/machine/ncr5390.cpp @@ -577,7 +577,7 @@ void ncr5390_device::delay_cycles(int cycles) READ8_MEMBER(ncr5390_device::tcount_lo_r) { - logerror("%s: tcount_lo_r %02x (%08x)\n", tag(), tcount & 0xff, space.device().safe_pc()); + logerror("%s: tcount_lo_r %02x (%s)\n", tag(), tcount & 0xff, machine().describe_context()); return tcount; } @@ -585,12 +585,12 @@ WRITE8_MEMBER(ncr5390_device::tcount_lo_w) { tcount = (tcount & 0xff00) | data; status &= ~S_TC0; - logerror("%s: tcount_lo_w %02x (%08x)\n", tag(), data, space.device().safe_pc()); + logerror("%s: tcount_lo_w %02x (%s)\n", tag(), data, machine().describe_context()); } READ8_MEMBER(ncr5390_device::tcount_hi_r) { - logerror("%s: tcount_hi_r %02x (%08x)\n", tag(), tcount >> 8, space.device().safe_pc()); + logerror("%s: tcount_hi_r %02x (%s)\n", tag(), tcount >> 8, machine().describe_context()); return tcount >> 8; } @@ -598,7 +598,7 @@ WRITE8_MEMBER(ncr5390_device::tcount_hi_w) { tcount = (tcount & 0x00ff) | (data << 8); status &= ~S_TC0; - logerror("%s: tcount_hi_w %02x (%08x)\n", tag(), data, space.device().safe_pc()); + logerror("%s: tcount_hi_w %02x (%s)\n", tag(), data, machine().describe_context()); } uint8_t ncr5390_device::fifo_pop() @@ -638,13 +638,13 @@ WRITE8_MEMBER(ncr5390_device::fifo_w) READ8_MEMBER(ncr5390_device::command_r) { - logerror("%s: command_r (%08x)\n", tag(), space.device().safe_pc()); + logerror("%s: command_r (%s)\n", tag(), machine().describe_context()); return command[0]; } WRITE8_MEMBER(ncr5390_device::command_w) { - logerror("%s: command_w %02x (%08x)\n", tag(), data, space.device().safe_pc()); + logerror("%s: command_w %02x (%s)\n", tag(), data, machine().describe_context()); if(command_pos == 2) { status |= S_GROSS_ERROR; check_irq(); @@ -787,7 +787,7 @@ READ8_MEMBER(ncr5390_device::status_r) { uint32_t ctrl = scsi_bus->ctrl_r(); uint8_t res = status | (ctrl & S_MSG ? 4 : 0) | (ctrl & S_CTL ? 2 : 0) | (ctrl & S_INP ? 1 : 0); - logerror("%s: status_r %02x (%08x)\n", tag(), res, space.device().safe_pc()); + logerror("%s: status_r %02x (%s)\n", tag(), res, machine().describe_context()); if(irq) status &= ~(S_GROSS_ERROR|S_PARITY|S_TCC); return res; @@ -808,7 +808,7 @@ READ8_MEMBER(ncr5390_device::istatus_r) if(res) command_pop_and_chain(); - logerror("%s: istatus_r %02x (%08x)\n", tag(), res, space.device().safe_pc()); + logerror("%s: istatus_r %02x (%s)\n", tag(), res, machine().describe_context()); return res; } @@ -819,7 +819,7 @@ WRITE8_MEMBER(ncr5390_device::timeout_w) READ8_MEMBER(ncr5390_device::seq_step_r) { - logerror("%s: seq_step_r %d (%08x)\n", tag(), seq, space.device().safe_pc()); + logerror("%s: seq_step_r %d (%s)\n", tag(), seq, machine().describe_context()); return seq; } @@ -932,5 +932,5 @@ WRITE8_MEMBER(ncr53c94_device::conf_w) WRITE8_MEMBER(ncr53c94_device::test_w) { if (test_mode) - logerror("%s: test_w %d (%08x) - test mode not implemented\n", tag(), data, space.device().safe_pc()); + logerror("%s: test_w %d (%s) - test mode not implemented\n", tag(), data, machine().describe_context()); } diff --git a/src/devices/machine/ncr539x.cpp b/src/devices/machine/ncr539x.cpp index eedc81e2d05..3e9853a784f 100644 --- a/src/devices/machine/ncr539x.cpp +++ b/src/devices/machine/ncr539x.cpp @@ -284,7 +284,7 @@ READ8_MEMBER( ncr539x_device::read ) { uint8_t rv = 0; - LOGREADS("539x: Read @ %s (%02x) (PC=%x) (status %02x irq_status %02x)\n", rdregs[offset], offset, space.device().safe_pc(), m_status, m_irq_status); + LOGREADS("539x: Read @ %s (%02x) (%s) (status %02x irq_status %02x)\n", rdregs[offset], offset, machine().describe_context(), m_status, m_irq_status); switch (offset) { @@ -313,7 +313,7 @@ READ8_MEMBER( ncr539x_device::read ) m_xfer_count--; update_fifo_internal_state(fifo_bytes); - LOG("Read %02x from FIFO[%d], FIFO now contains %d bytes (PC=%x, m_buffer_remaining %x)\n", rv, m_fifo_read_ptr-1, fifo_bytes, space.device().safe_pc(), m_buffer_remaining); + LOG("Read %02x from FIFO[%d], FIFO now contains %d bytes (%s) (m_buffer_remaining %x)\n", rv, m_fifo_read_ptr-1, fifo_bytes, machine().describe_context(), m_buffer_remaining); if (fifo_bytes == 0) { @@ -415,7 +415,7 @@ READ8_MEMBER( ncr539x_device::read ) WRITE8_MEMBER( ncr539x_device::write ) { //if (offset != 2) - LOG("539x: Write %02x @ %s (%02x) (PC=%x)\n", data, wrregs[offset], offset, space.device().safe_pc()); + LOG("539x: Write %02x @ %s (%02x) (%s)\n", data, wrregs[offset], offset, machine().describe_context()); switch (offset) { -- cgit v1.2.3 From 5f6d2c5e5336687a1afe4034b51b28f8fe63af27 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 10:43:50 +0700 Subject: added enum masks and unknown regs --- src/mame/machine/interpro_srarb.cpp | 3 +++ src/mame/machine/interpro_srarb.h | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/mame/machine/interpro_srarb.cpp b/src/mame/machine/interpro_srarb.cpp index a389a272317..d3074ea2847 100644 --- a/src/mame/machine/interpro_srarb.cpp +++ b/src/mame/machine/interpro_srarb.cpp @@ -25,6 +25,9 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_srarb_device) AM_RANGE(0x14, 0x17) AM_READWRITE(errdomhi_r, errdomhi_w) AM_RANGE(0x18, 0x1b) AM_READWRITE(tmctrl_r, tmctrl_w) + AM_RANGE(0x1c, 0x1f) AM_READWRITE8(unknown0_r, unknown0_w, 0x0000ff00) // boot code writes 0x10 + AM_RANGE(0x20, 0x23) AM_READWRITE8(unknown1_r, unknown1_w, 0x0000ff00) // boot code writes 0x07 + AM_RANGE(0x24, 0x27) AM_READWRITE(tmsrnem_r, tmsrnem_w) AM_RANGE(0x28, 0x2b) AM_READWRITE(tmsrhog_r, tmsrhog_w) AM_RANGE(0x2c, 0x2f) AM_READWRITE(tmscale_r, tmscale_w) diff --git a/src/mame/machine/interpro_srarb.h b/src/mame/machine/interpro_srarb.h index f1b5c9a34d5..d9adccddf20 100644 --- a/src/mame/machine/interpro_srarb.h +++ b/src/mame/machine/interpro_srarb.h @@ -15,6 +15,12 @@ public: DECLARE_READ32_MEMBER(sdepid_r) { return sdepid; } DECLARE_WRITE32_MEMBER(sdepid_w) { sdepid = data; } + + enum snapid_mask + { + SNAPID_GRANT = 0x0000000f, + SNAPID_HOGLOCK = 0x000000f0 + }; DECLARE_READ32_MEMBER(snapid_r) { return snapid; } DECLARE_WRITE32_MEMBER(snapid_w) { snapid = data; } DECLARE_READ32_MEMBER(prilo_r) { return prilo; } @@ -27,8 +33,20 @@ public: DECLARE_READ32_MEMBER(errdomhi_r) { return errdomhi; } DECLARE_WRITE32_MEMBER(errdomhi_w) { errdomhi = data; } + enum tmctrl_mask + { + TMCTRL_UNUSED = 0x00000007, + TMCTRL_ENNEM = 0x00000008, + TMCTRL_ENHOG = 0x00000010 + }; DECLARE_READ32_MEMBER(tmctrl_r) { return tmctrl; } DECLARE_WRITE32_MEMBER(tmctrl_w) { tmctrl = data; } + + DECLARE_READ8_MEMBER(unknown0_r) { return unknown0; } + DECLARE_WRITE8_MEMBER(unknown0_w) { unknown0 = data; } + DECLARE_READ8_MEMBER(unknown1_r) { return unknown1; } + DECLARE_WRITE8_MEMBER(unknown1_w) { unknown1 = data; } + DECLARE_READ32_MEMBER(tmsrnem_r) { return tmsrnem; } DECLARE_WRITE32_MEMBER(tmsrnem_w) { tmsrnem = data; } DECLARE_READ32_MEMBER(tmsrhog_r) { return tmsrhog; } @@ -44,6 +62,8 @@ private: u32 sdepid, snapid, prilo, prihi; u32 errdomlo, errdomhi; u32 tmctrl, tmsrnem, tmsrhog, tmscale; + + u8 unknown0, unknown1; }; // device type definition -- cgit v1.2.3 From 31712cc379b2f3fb1b081c012f53433978f3075e Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 10:44:41 +0700 Subject: added enum masks, disable bus errors --- src/mame/machine/interpro_sga.cpp | 6 ++++-- src/mame/machine/interpro_sga.h | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/mame/machine/interpro_sga.cpp b/src/mame/machine/interpro_sga.cpp index 8cc35fd82b3..b33dfcce297 100644 --- a/src/mame/machine/interpro_sga.cpp +++ b/src/mame/machine/interpro_sga.cpp @@ -93,13 +93,14 @@ WRITE32_MEMBER(interpro_sga_device::ddtc1_w) // when complete, we indicate by setting DMAEND(2) - 2 is probably the channel // we also turn off the INTBERR and INTMMBE flags - m_ipoll &= ~(0x20000 | 0x10000); + m_ipoll &= ~(IPOLL_INTBERR | IPOLL_INTMMBE); m_ipoll |= 0x200; +#if 0 // if the address is invalid, fake a bus error if ((m_dspad1 & 0xfffff000) == 0x40000000 || (m_ddpad1 & 0xfffff) == 0x40000000) { - m_ipoll |= 0x10000; + m_ipoll |= IPOLL_INTBERR; // error cycle - bit 0x10 indicates source address error (dspad1) // now expecting 0x5463? @@ -112,4 +113,5 @@ WRITE32_MEMBER(interpro_sga_device::ddtc1_w) // 0x5433 = BERR|SNAPOK | BG(ICAMMU)? | CT(33) // 0x5463 = BERR|SNAPOK | BG(ICAMMU)? | TAG(1) | CT(23) } +#endif } diff --git a/src/mame/machine/interpro_sga.h b/src/mame/machine/interpro_sga.h index 4232a436fa1..eb6d3a63fdf 100644 --- a/src/mame/machine/interpro_sga.h +++ b/src/mame/machine/interpro_sga.h @@ -20,21 +20,60 @@ public: DECLARE_READ32_MEMBER(gcsr_r) { return m_gcsr; } DECLARE_WRITE32_MEMBER(gcsr_w) { m_gcsr = data; } + enum ipoll_mask + { + IPOLL_ATTN = 0x000000ff, + IPOLL_DMAEND = 0x00000700, + IPOLL_NOGRANT = 0x00001000, + IPOLL_SRMMBE = 0x00002000, + IPOLL_SRBERR = 0x00004000, + IPOLL_RETRYABORT = 0x00008000, + IPOLL_INTBERR = 0x00010000, + IPOLL_INTMMBE = 0x00020000 + }; DECLARE_READ32_MEMBER(ipoll_r) { return m_ipoll; } DECLARE_WRITE32_MEMBER(ipoll_w) { m_ipoll = data; } + + enum imask_mask + { + IMASK_DMAENDCH1 = 0x00000200, + IMASK_NOGRANT = 0x00001000, + IMASK_SRMMBE = 0x00002000, + IMASK_SRBERR = 0x00004000, + IMASK_RETRYABORT = 0x00008000, + IMASK_INTBERR = 0x00010000, + IMASK_INTMMBE = 0x00020000 + }; DECLARE_READ32_MEMBER(imask_r) { return m_imask; } DECLARE_WRITE32_MEMBER(imask_w) { m_imask = data; } DECLARE_READ32_MEMBER(range_base_r) { return m_range_base; } DECLARE_WRITE32_MEMBER(range_base_w) { m_range_base = data; } DECLARE_READ32_MEMBER(range_end_r) { return m_range_end; } DECLARE_WRITE32_MEMBER(range_end_w) { m_range_end = data; } + + enum cttag_mask + { + CTTAG_TAG = 0x00000007, + CTTAG_CYCLE = 0x000001f8, + CTTAG_MAXBCLK = 0x0003fe00, + CTTAG_MAXRETRY = 0x3ffc0000 + }; DECLARE_READ32_MEMBER(cttag_r) { return m_cttag; } DECLARE_WRITE32_MEMBER(cttag_w) { m_cttag = data; } DECLARE_READ32_MEMBER(address_r) { return m_address; } DECLARE_WRITE32_MEMBER(address_w) { m_address = data; } + + enum dmacsr_mask + { + DMACSR_CH1ENABLE = 0x00000080 + }; DECLARE_READ32_MEMBER(dmacsr_r) { return m_dmacsr; } DECLARE_WRITE32_MEMBER(dmacsr_w) { m_dmacsr = data; } + enum edmacsr_mask + { + EDMACSR_CH1RDONLY = 0x00000010 + }; DECLARE_READ32_MEMBER(edmacsr_r) { return m_edmacsr; } DECLARE_WRITE32_MEMBER(edmacsr_w) { m_edmacsr = data; } DECLARE_READ32_MEMBER(reg6_range_r) { return m_reg6_range; } -- cgit v1.2.3 From d4b5731dd93df82660581e3784a95df1dfb6372b Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 10:45:20 +0700 Subject: added enum masks, 1 unknown register --- src/mame/machine/interpro_mcga.cpp | 19 +++++----- src/mame/machine/interpro_mcga.h | 75 +++++++++++++++++++++++++++++--------- 2 files changed, 68 insertions(+), 26 deletions(-) diff --git a/src/mame/machine/interpro_mcga.cpp b/src/mame/machine/interpro_mcga.cpp index 5ccc934f54a..2447d2498d9 100644 --- a/src/mame/machine/interpro_mcga.cpp +++ b/src/mame/machine/interpro_mcga.cpp @@ -41,6 +41,7 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_fmcc_device) AM_RANGE(0x28, 0x2b) AM_READWRITE16(reg28_r, reg28_w, 0xffff) AM_RANGE(0x30, 0x33) AM_READWRITE16(reg30_r, reg30_w, 0xffff) AM_RANGE(0x38, 0x3b) AM_READWRITE16(memsize_r, memsize_w, 0xffff) + AM_RANGE(0x40, 0x43) AM_NOP // unknown AM_RANGE(0x48, 0x4b) AM_READWRITE16(error_control_r, error_control_w, 0xffff) ADDRESS_MAP_END @@ -69,29 +70,29 @@ void interpro_mcga_device::device_start() void interpro_mcga_device::device_reset() { m_reg[0] = 0x00ff; - m_control = MCGA_CTRL_ENREFRESH | MCGA_CTRL_CBITFRCSUB | MCGA_CTRL_CBITFRCRD; + m_control = CONTROL_ENREFRESH | CONTROL_CBITFRCSUB | CONTROL_CBITFRCRD; m_reg[1] = 0x00ff; m_memsize = 0x0340; } WRITE16_MEMBER(interpro_mcga_device::control_w) { - m_control = data & MCGA_CTRL_MASK; + m_control = data & CONTROL_MASK; // HACK: set or clear error status depending on ENMMBE bit - if (data & MCGA_CTRL_ENMMBE) - m_error |= MCGA_ERROR_VALID; + if (data & CONTROL_ENMMBE) + m_error |= ERROR_VALID; // else - // error &= ~MCGA_ERROR_VALID; + // error &= ~ERROR_VALID; } WRITE16_MEMBER(interpro_fmcc_device::control_w) { - m_control = data & FMCC_CTRL_MASK; + m_control = data & CONTROL_MASK; // HACK: set or clear error status depending on ENMMBE bit - if (data & MCGA_CTRL_ENMMBE) - m_error |= MCGA_ERROR_VALID; + if (data & CONTROL_ENMMBE) + m_error |= ERROR_VALID; // else - // error &= ~MCGA_ERROR_VALID; + // error &= ~ERROR_VALID; } diff --git a/src/mame/machine/interpro_mcga.h b/src/mame/machine/interpro_mcga.h index 22535746ddc..780ea8c8233 100644 --- a/src/mame/machine/interpro_mcga.h +++ b/src/mame/machine/interpro_mcga.h @@ -6,23 +6,6 @@ #pragma once -// mcga control register -#define MCGA_CTRL_OPTMASK 0x0003 -#define MCGA_CTRL_CBITFRCRD 0x0004 -#define MCGA_CTRL_CBITFRCSUB 0x0008 -#define MCGA_CTRL_ENREFRESH 0x0010 -#define MCGA_CTRL_ENMSBE 0x0100 -#define MCGA_CTRL_ENMMBE 0x0200 -#define MCGA_CTRL_ENECC 0x0400 -#define MCGA_CTRL_WRPROT 0x8000 - -// rom writes bit 0x80 to test if fmcc or mcga -#define MCGA_CTRL_MASK 0x871f -#define FMCC_CTRL_MASK 0x8fff - -// mcga error register -#define MCGA_ERROR_VALID 0x00008000 - class interpro_mcga_device : public device_t { public: @@ -32,8 +15,31 @@ public: DECLARE_READ16_MEMBER(reg00_r) { return m_reg[0]; } DECLARE_WRITE16_MEMBER(reg00_w) { m_reg[0] = data; } + + enum control_mask + { + CONTROL_OPTMASK = 0x0003, + CONTROL_CBITFRCRD = 0x0004, + CONTROL_CBITFRCSUB = 0x0008, + CONTROL_ENREFRESH = 0x0010, + CONTROL_ENMSBE = 0x0100, + CONTROL_ENMMBE = 0x0200, + CONTROL_ENECC = 0x0400, + CONTROL_WRPROT = 0x8000, + + CONTROL_MASK = 0x871f + }; DECLARE_READ16_MEMBER(control_r) { return m_control; } virtual DECLARE_WRITE16_MEMBER(control_w); + + enum error_mask + { + ERROR_SYND = 0x00ff, + ERROR_MMBE = 0x0100, + ERROR_MSBE = 0x0200, + ERROR_ADDR = 0x1c00, + ERROR_VALID = 0x8000 + }; DECLARE_READ16_MEMBER(error_r) { return m_error; } DECLARE_WRITE16_MEMBER(error_w) { m_error = data; } DECLARE_READ8_MEMBER(frcrd_r) { return m_frcrd; } @@ -44,6 +50,11 @@ public: DECLARE_WRITE16_MEMBER(reg28_w) { m_reg[1] = data; } DECLARE_READ16_MEMBER(reg30_r) { return m_reg[2]; } DECLARE_WRITE16_MEMBER(reg30_w) { m_reg[2] = data; } + + enum memsize_mask + { + MEMSIZE_ADDR = 0x007f + }; DECLARE_READ16_MEMBER(memsize_r) { return m_memsize; } DECLARE_WRITE16_MEMBER(memsize_w) { m_memsize = data; } @@ -69,8 +80,38 @@ public: virtual DECLARE_ADDRESS_MAP(map, 32) override; + enum control_mask + { + CONTROL_CBITFRCRD = 0x0004, + CONTROL_CBITFRCSUB = 0x0008, + CONTROL_ENREFRESH = 0x0010, + CONTROL_ENMSBENMI = 0x0020, + CONTROL_ENMMBENMI = 0x0040, + CONTROL_ENSTICKY = 0x0080, + CONTROL_ENMERR = 0x0100, + CONTROL_ENMMBE = 0x0200, + CONTROL_ENECC = 0x0400, + CONTROL_ENRMWCOR = 0x0800, + CONTROL_WRPROT = 0x8000, + + CONTROL_MASK = 0x8fff + }; DECLARE_WRITE16_MEMBER(control_w) override; + enum error_mask + { + ERROR_SYND = 0x00ff, + ERROR_MMBE = 0x0100, + ERROR_MSBE = 0x0200, + ERROR_MTYPE = 0x0400, + ERROR_VALID = 0x8000 + }; + + enum error_control_mask + { + ERROR_CONTROL_CYCLE = 0x003f, + ERROR_CONTROL_TAG = 0x01c0 + }; DECLARE_READ16_MEMBER(error_control_r) { return m_error_control; } DECLARE_WRITE16_MEMBER(error_control_w) { m_error_control = data; } -- cgit v1.2.3 From 8bb75751d2c40c3db288236f00d6ee8894cfd4c2 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 13:10:29 +0700 Subject: configurable ram, improved system regs, enum masks also initial implementation of unmapped memory handler --- src/mame/drivers/interpro.cpp | 286 +++++++++++++++++++++++++++--------------- src/mame/includes/interpro.h | 114 +++++++++++------ 2 files changed, 264 insertions(+), 136 deletions(-) diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 295e49af7ff..21a2845671d 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -3,7 +3,7 @@ #include "emu.h" -#define NEW_SCSI 0 +#define NEW_SCSI 1 #include "includes/interpro.h" #include "debugger.h" @@ -20,91 +20,81 @@ // machine start void interpro_state::machine_start() { - m_system_reg[SREG_CTRL2] = CTRL2_COLDSTART | CTRL2_PWRENA | CTRL2_PWRUP; + m_sreg_ctrl2 = CTRL2_COLDSTART | CTRL2_PWRENA | CTRL2_PWRUP; } void interpro_state::machine_reset() { // flash rom requires the following values - m_system_reg[SREG_ERROR] = 0x00; - m_system_reg[SREG_STATUS] = 0x400; - m_system_reg[SREG_CTRL1] = CTRL1_FLOPRDY; + m_sreg_error = 0x00; + m_sreg_status = 0x400; + m_sreg_ctrl1 = CTRL1_FLOPRDY; } -WRITE16_MEMBER(interpro_state::system_w) +WRITE16_MEMBER(interpro_state::sreg_ctrl1_w) { - switch (offset) - { - case SREG_LED: - LOG_SYSTEM("LED value %d at %s\n", data, machine().describe_context()); - break; - - case SREG_STATUS: // not sure if writable? - break; - - case SREG_CTRL1: - LOG_SYSTEM("system control register 1 write data 0x%x pc %s\n", data, machine().describe_context()); + LOG_SYSTEM("system control register 1 write data 0x%x (%s)\n", data, machine().describe_context()); - if ((data ^ m_system_reg[offset]) & CTRL1_LEDDP) - LOG_SYSTEM("LED decimal point %s\n", data & CTRL1_LEDDP ? "on" : "off"); + if ((data ^ m_sreg_ctrl1) & CTRL1_LEDDP) + LOG_SYSTEM("LED decimal point %s\n", data & CTRL1_LEDDP ? "on" : "off"); - m_system_reg[offset] = data; - break; + m_sreg_ctrl1 = data; +} - case SREG_CTRL2: - LOG_SYSTEM("system control register 2 write data 0x%x at %s\n", data, machine().describe_context()); - if (data & CTRL2_RESET) - { - m_system_reg[SREG_CTRL2] &= ~CTRL2_COLDSTART; +WRITE16_MEMBER(interpro_state::sreg_ctrl2_w) +{ + LOG_SYSTEM("system control register 2 write data 0x%x (%s)\n", data, machine().describe_context()); + if (data & CTRL2_RESET) + { + m_sreg_ctrl1 &= ~CTRL2_COLDSTART; - machine().schedule_soft_reset(); - } - else - m_system_reg[offset] = data & 0x0f; // top four bits are not persistent - break; + machine().schedule_soft_reset(); } + else + m_sreg_ctrl1 = data & CTRL2_WMASK; } -READ16_MEMBER(interpro_state::system_r) +READ16_MEMBER(interpro_state::sreg_error_r) { - LOG_SYSTEM("system register read offset %d at %s\n", offset, machine().describe_context()); - switch (offset) - { - case SREG_ERROR: - case SREG_STATUS: - case SREG_CTRL1: - case SREG_CTRL2: - default: - return m_system_reg[offset]; - break; - } + u16 result = m_sreg_error; + + // clear error register on read + m_sreg_error = 0; + + return result; } -READ32_MEMBER(interpro_state::idprom_r) +READ8_MEMBER(interpro_state::idprom_r) { LOG_IDPROM("idprom read offset 0x%x mask 0x%08x at %s\n", offset, mem_mask, machine().describe_context()); - // abitrary fake number for now, not working properly - u32 speed = 20000000; - u32 speed1 = speed >> 24; - u32 speed2 = speed >> 16; - u32 speed3 = speed >> 8; + // compute femtoseconds per cycle from main cpu clock + u32 speed = 1'000'000'000'000'000 / m_maincpu->clock(); - static uint8_t idprom[] = { + static u8 idprom[] = { // module type id - 'M', 'P', 'C', 'B', - '0', '1', '4', '5', + 0x00, 0x00, 0x00, 0x00, // board type MSMT/MPCB - detected by feature[3] + '1', '2', '3', // board number + 'A', // board revision // ECO bytes 0x87, 0x65, 0x43, 0x21, 0xbb, 0xcc, 0xdd, 0xee, // the following 8 bytes are "feature bytes" - // the feature bytes contain a 32 bit word which is divided by 40000 - // if they're empty, a default value of 50 000 000 is used - // perhaps this is a system speed (50MHz)? - 0x2, 0x34, 0x56, 0x78, - (u8)speed, (u8)speed3, (u8)speed2, (u8)speed1, + + // for a 2700/2800/2500 system board, the first feature byte selects the variant + // model = (feature[0] & 0x2) ? (feature[0] & 0x8 ? 2700 : 2800) : 2500 + + // 0x0a, // 2700 series + 0x02, // 2800 series + // 0x00, // 2500 series + + 0x00, 0x00, + 0x80, // board type, 0x80 = MPCB, 0x00 = MSMT + + // for the system boards, these bytes contain cpu clock speed (as femtoseconds per cycle, big-endian) + (u8)(speed >> 24), (u8)(speed >> 16), (u8)(speed >> 8), (u8)(speed >> 0), // reserved bytes 0xff, 0xff, @@ -113,8 +103,14 @@ READ32_MEMBER(interpro_state::idprom_r) // boot rom tests for family == 0x41 or 0x42 // if so, speed read from feature bytes 2 & 3 // if not, read speed from feature bytes 4-7 - 0x41, 0x00, // 2800-series CPU - //0x24, 0x00, // 2000-series system board + + //0x24, 0x00, // 2000 + + // 0x31, 0x00, // 2400 + 0x39, 0x00, // 2700/2800/2500 depending on first feature byte (0xa, 0x2, 0x0) + // 0x40, 0x00, // 6700 + // 0x41, 0x00, // idprom reports as 2800 series cpu? + //0x42, 0x00, // 6800 series // footprint and checksum 0x55, 0xaa, 0x55, 0x00 @@ -124,13 +120,13 @@ READ32_MEMBER(interpro_state::idprom_r) { case 0x1f: { - uint8_t sum = 0; + u8 sum = 0; // compute the checksum (sum of all bytes must be == 0x00) for (int i = 0; i < 0x20; i++) sum += idprom[i]; - return 0x100 - (sum & 0xff); + return 0x100 - sum; } default: @@ -138,19 +134,74 @@ READ32_MEMBER(interpro_state::idprom_r) } } -READ32_MEMBER(interpro_state::slot0_r) +READ8_MEMBER(interpro_state::slot0_r) { +#if 0 // a known graphics board idprom - static uint8_t slot0[] = { + static u8 slot0[] = { 0x00, 0x00, 0x00, 0x00, '9', '6', '3', 'A', // board 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // eco 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // features 0xff, 0xff, // reserved 0x22, 0x00, // family - 0x55, 0xaa, 0x55, 0x00 + 0x55, 0xaa, 0x55, // footprint + 0x00 // checksum + }; +#else + static u8 slot0[] = { + 0x00, 0x00, 0x00, 0x00, '1', '1', '1', 'A', // board + 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // eco + 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, // features + 0xff, 0xff, // reserved + 0x05, 0x00, // family + 0x55, 0xaa, 0x55, // footprint + 0x00 // checksum }; +#endif + switch (offset) + { + case 0x1f: + { + u8 sum = 0; + + // compute the checksum (sum of all bytes must be == 0x00) + for (int i = 0; i < 0x20; i++) + sum += slot0[i]; + + return 0x100 - sum; + } + + default: + return slot0[offset]; + } +} + +READ32_MEMBER(interpro_state::unmapped_r) +{ + // check if non-existent memory errors are enabled + if (m_srarb->tmctrl_r(space, offset, mem_mask) & interpro_srarb_device::TMCTRL_ENNEM) + { + // flag non-existent memory error in system error register + m_sreg_error |= (ERROR_SRXNEM | ERROR_SRXVALID); + + // tell ioga to raise a bus error + m_ioga->bus_error(space, interpro_ioga_device::BINFO_BERR | interpro_ioga_device::BINFO_SNAPOK, offset << 2); + } - return ((uint8_t *)&slot0)[offset % 32]; + return space.unmap(); +} + +WRITE32_MEMBER(interpro_state::unmapped_w) +{ + // check if non-existent memory errors are enabled + if (m_srarb->tmctrl_r(space, offset, mem_mask) & interpro_srarb_device::TMCTRL_ENNEM) + { + // flag non-existent memory error in system error register + m_sreg_error |= (ERROR_SRXNEM | ERROR_SRXVALID); + + // tell ioga to raise a bus error + m_ioga->bus_error(space, interpro_ioga_device::BINFO_BERR | interpro_ioga_device::BINFO_SNAPOK, offset << 2); + } } WRITE8_MEMBER(interpro_state::rtc_w) @@ -271,6 +322,19 @@ WRITE8_MEMBER(interpro_state::scsi_dma_w) DRIVER_INIT_MEMBER(interpro_state, ip2800) { + // FIXME: not all memory sizes are reported properly using fdm "5 inqhw" and "optimum_memory" commands + + // 16 = reports 16M, banks empty? + // 32 = reports 16M, banks empty? + // 64 = reports 128M, 16x8 + // 128 = reports 128M, 16x8 + // 256 = reports 256M, 32x8 + + // grab the main memory space from the mmu + address_space &space = m_mmu->space(AS_0); + + // map the configured ram + space.install_ram(0, m_ram->mask(), m_ram->pointer()); } #if NEW_SCSI @@ -280,7 +344,7 @@ static SLOT_INTERFACE_START(interpro_scsi_devices) SLOT_INTERFACE_INTERNAL(INTERPRO_SCSI_ADAPTER_TAG, NCR53C94) SLOT_INTERFACE_END -static MACHINE_CONFIG_FRAGMENT(interpro_scsi_adapter) +static MACHINE_CONFIG_START(interpro_scsi_adapter) MCFG_DEVICE_CLOCK(XTAL_12_5MHz) MCFG_NCR5390_IRQ_HANDLER(DEVWRITELINE(":" INTERPRO_IOGA_TAG, interpro_ioga_device, ir0_w)) MCFG_NCR5390_DRQ_HANDLER(DEVWRITELINE(":" INTERPRO_IOGA_TAG, interpro_ioga_device, drq_scsi)) @@ -296,50 +360,49 @@ static ADDRESS_MAP_START(clipper_data_map, AS_DATA, 32, interpro_state) AM_RANGE(0x00000000, 0xffffffff) AM_DEVREADWRITE32(INTERPRO_MMU_TAG, cammu_device, data_r, data_w, 0xffffffff) ADDRESS_MAP_END -// these maps represent the real main, i/o and boot spaces of the system -static ADDRESS_MAP_START(interpro_main_map, AS_0, 32, interpro_state) - AM_RANGE(0x00000000, 0x00ffffff) AM_RAM // 16M RAM - - AM_RANGE(0x40000000, 0x4000003f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_fmcc_device, map) +static ADDRESS_MAP_START(interpro_common_map, AS_0, 32, interpro_state) + AM_RANGE(0x40000000, 0x4000004f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_fmcc_device, map) AM_RANGE(0x4f007e00, 0x4f007eff) AM_DEVICE(INTERPRO_SGA_TAG, interpro_sga_device, map) AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, n82077aa_device, map, 0xff) AM_RANGE(0x7f000200, 0x7f0002ff) AM_DEVICE(INTERPRO_SRARB_TAG, interpro_srarb_device, map) - AM_RANGE(0x7f000300, 0x7f00030f) AM_READWRITE16(system_r, system_w, 0xffff) + + AM_RANGE(0x7f000300, 0x7f000303) AM_READ16(sreg_error_r, 0xffff) + AM_RANGE(0x7f000304, 0x7f000307) AM_READWRITE16(sreg_status_r, sreg_led_w, 0xffff) + AM_RANGE(0x7f000308, 0x7f00030b) AM_READWRITE16(sreg_ctrl1_r, sreg_ctrl1_w, 0xffff) + AM_RANGE(0x7f00030c, 0x7f00030f) AM_READWRITE16(sreg_ctrl2_r, sreg_ctrl2_w, 0xffff) + + AM_RANGE(0x7f00031c, 0x7f00031f) AM_READWRITE16(sreg_ctrl3_r, sreg_ctrl3_w, 0xffff) + AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) AM_RANGE(0x7f000410, 0x7f00041f) AM_DEVREADWRITE8(INTERPRO_SCC2_TAG, scc85230_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) AM_RANGE(0x7f000500, 0x7f0006ff) AM_READWRITE8(rtc_r, rtc_w, 0xff) - AM_RANGE(0x7f000700, 0x7f00077f) AM_READ(idprom_r) + AM_RANGE(0x7f000700, 0x7f00077f) AM_READ8(idprom_r, 0xff) AM_RANGE(0x7f001000, 0x7f001fff) AM_READWRITE8(scsi_r, scsi_w, 0x0000ff00) AM_RANGE(0x7f0fff00, 0x7f0fffff) AM_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, map) + AM_RANGE(0x08000000, 0x08000fff) AM_NOP // bogus + AM_RANGE(0x87000000, 0x8700007f) AM_READ8(slot0_r, 0xff) + + // 2800 (CBUS?) slots are mapped as follows + AM_RANGE(0x87000000, 0x8700007f) AM_MIRROR(0x78000000) AM_READWRITE(unmapped_r, unmapped_w) +ADDRESS_MAP_END + +// these maps represent the real main, i/o and boot spaces of the system +static ADDRESS_MAP_START(interpro_main_map, AS_0, 32, interpro_state) + AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE(RAM_TAG) + AM_RANGE(0x7f100000, 0x7f11ffff) AM_ROM AM_REGION(INTERPRO_EPROM_TAG, 0) AM_RANGE(0x7f180000, 0x7f1bffff) AM_ROM AM_REGION(INTERPRO_FLASH_TAG, 0) - AM_RANGE(0x08000000, 0x08000fff) AM_NOP // bogus - AM_RANGE(0x8f000000, 0x8f0fffff) AM_NOP // AM_READ(slot0_r) + AM_IMPORT_FROM(interpro_common_map) ADDRESS_MAP_END static ADDRESS_MAP_START(interpro_io_map, AS_1, 32, interpro_state) AM_RANGE(0x00000000, 0x00001fff) AM_DEVICE(INTERPRO_MMU_TAG, cammu_device, map) - AM_RANGE(0x40000000, 0x4000004f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_fmcc_device, map) - AM_RANGE(0x4f007e00, 0x4f007eff) AM_DEVICE(INTERPRO_SGA_TAG, interpro_sga_device, map) - - AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, n82077aa_device, map, 0xff) - AM_RANGE(0x7f000200, 0x7f0002ff) AM_DEVICE(INTERPRO_SRARB_TAG, interpro_srarb_device, map) - AM_RANGE(0x7f000300, 0x7f00030f) AM_READWRITE16(system_r, system_w, 0xffff) - AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) - AM_RANGE(0x7f000410, 0x7f00041f) AM_DEVREADWRITE8(INTERPRO_SCC2_TAG, scc85230_device, ba_cd_inv_r, ba_cd_inv_w, 0xff) - AM_RANGE(0x7f000500, 0x7f0006ff) AM_READWRITE8(rtc_r, rtc_w, 0xff) - AM_RANGE(0x7f000700, 0x7f00077f) AM_READ(idprom_r) - AM_RANGE(0x7f001000, 0x7f001fff) AM_READWRITE8(scsi_r, scsi_w, 0x0000ff00) - - AM_RANGE(0x7f0fff00, 0x7f0fffff) AM_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, map) - - AM_RANGE(0x08000000, 0x08000fff) AM_NOP // bogus - AM_RANGE(0x8f000000, 0x8f0fffff) AM_NOP // AM_READ(slot0_r) + AM_IMPORT_FROM(interpro_common_map) ADDRESS_MAP_END static ADDRESS_MAP_START(interpro_boot_map, AS_2, 32, interpro_state) @@ -360,7 +423,7 @@ static INPUT_PORTS_START(ip2800) INPUT_PORTS_END static MACHINE_CONFIG_START(ip2800) - MCFG_CPU_ADD(INTERPRO_CPU_TAG, CLIPPER_C400, XTAL_10MHz) + MCFG_CPU_ADD(INTERPRO_CPU_TAG, CLIPPER_C400, XTAL_12_5MHz) MCFG_CPU_PROGRAM_MAP(clipper_insn_map) MCFG_CPU_DATA_MAP(clipper_data_map) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, inta_cb) @@ -371,26 +434,47 @@ static MACHINE_CONFIG_START(ip2800) MCFG_DEVICE_ADDRESS_MAP(AS_2, interpro_boot_map) MCFG_CAMMU_SSW_CB(DEVREAD32(INTERPRO_CPU_TAG, clipper_device, ssw)) - // serial controllers and rs232 bus + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("16M") + MCFG_RAM_EXTRA_OPTIONS("32M,64M,128M,256M") + + // TODO: work out serial port assignments for mouse, console, keyboard and ? + // first serial controller and devices MCFG_SCC85C30_ADD(INTERPRO_SCC1_TAG, XTAL_4_9152MHz, 0, 0, 0, 0) - MCFG_Z80SCC_OUT_TXDA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_txd)) - MCFG_Z80SCC_OUT_TXDB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_txd)) + MCFG_Z80SCC_OUT_TXDA_CB(DEVWRITELINE(INTERPRO_SERIAL1_TAG, rs232_port_device, write_txd)) + MCFG_Z80SCC_OUT_TXDB_CB(DEVWRITELINE(INTERPRO_SERIAL2_TAG, rs232_port_device, write_txd)) MCFG_Z80SCC_OUT_INT_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir11_w)) - MCFG_RS232_PORT_ADD("rs232a", default_rs232_devices, nullptr) + // is this the keyboard port? + MCFG_RS232_PORT_ADD(INTERPRO_SERIAL1_TAG, default_rs232_devices, nullptr) // "keyboard" MCFG_RS232_RXD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, rxa_w)) MCFG_RS232_DCD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, dcda_w)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, ctsa_w)) - // the following port is known as "port 2" - MCFG_RS232_PORT_ADD("rs232b", default_rs232_devices, "terminal") + // eprom uses this serial port for console (show_config calls "port 2") + MCFG_RS232_PORT_ADD(INTERPRO_SERIAL2_TAG, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, rxb_w)) MCFG_RS232_DCD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, dcdb_w)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, ctsb_w)) + // second serial controller and devices MCFG_SCC85230_ADD(INTERPRO_SCC2_TAG, XTAL_4_9152MHz, 0, 0, 0, 0) + MCFG_Z80SCC_OUT_TXDA_CB(DEVWRITELINE(INTERPRO_SERIAL3_TAG, rs232_port_device, write_txd)) + MCFG_Z80SCC_OUT_TXDB_CB(DEVWRITELINE(INTERPRO_SERIAL4_TAG, rs232_port_device, write_txd)) + MCFG_Z80SCC_OUT_INT_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir11_w)) + + MCFG_RS232_PORT_ADD(INTERPRO_SERIAL3_TAG, default_rs232_devices, nullptr) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, rxa_w)) + MCFG_RS232_DCD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, dcda_w)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, ctsa_w)) + + MCFG_RS232_PORT_ADD(INTERPRO_SERIAL4_TAG, default_rs232_devices, nullptr) //"terminal") + MCFG_RS232_RXD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, rxb_w)) + MCFG_RS232_DCD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, dcdb_w)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, ctsb_w)) + // real-time clock/non-volatile memory MCFG_MC146818_ADD(INTERPRO_RTC_TAG, XTAL_32_768kHz) MCFG_MC146818_UTC(true) @@ -408,9 +492,9 @@ static MACHINE_CONFIG_START(ip2800) #if NEW_SCSI MCFG_NSCSI_BUS_ADD(INTERPRO_SCSI_TAG) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":0", interpro_scsi_devices, "harddisk", false) - MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":1", interpro_scsi_devices, "cdrom", false) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":1", interpro_scsi_devices, nullptr, false) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":2", interpro_scsi_devices, nullptr, false) - MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":3", interpro_scsi_devices, nullptr, false) + MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":3", interpro_scsi_devices, "cdrom", false) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":4", interpro_scsi_devices, nullptr, false) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":5", interpro_scsi_devices, nullptr, false) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":6", interpro_scsi_devices, nullptr, false) @@ -419,7 +503,7 @@ static MACHINE_CONFIG_START(ip2800) #else MCFG_DEVICE_ADD(INTERPRO_SCSI_TAG, SCSI_PORT, 0) MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0) - MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE2, "cdrom", SCSICD, SCSI_ID_3) + MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE3, "cdrom", SCSICD, SCSI_ID_3) MCFG_DEVICE_ADD(INTERPRO_SCSI_ADAPTER_TAG, NCR539X, XTAL_12_5MHz) MCFG_LEGACY_SCSI_PORT(INTERPRO_SCSI_TAG) diff --git a/src/mame/includes/interpro.h b/src/mame/includes/interpro.h index d2a45e24225..e4163ae1278 100644 --- a/src/mame/includes/interpro.h +++ b/src/mame/includes/interpro.h @@ -9,6 +9,8 @@ #include "cpu/clipper/clipper.h" #include "machine/cammu.h" +#include "machine/ram.h" + #include "machine/interpro_ioga.h" #include "machine/interpro_mcga.h" #include "machine/interpro_sga.h" @@ -39,7 +41,11 @@ #define INTERPRO_RTC_TAG "rtc" #define INTERPRO_SCC1_TAG "scc1" +#define INTERPRO_SERIAL1_TAG "serial1" +#define INTERPRO_SERIAL2_TAG "serial2" #define INTERPRO_SCC2_TAG "scc2" +#define INTERPRO_SERIAL3_TAG "serial3" +#define INTERPRO_SERIAL4_TAG "serial4" #define INTERPRO_EPROM_TAG "eprom" #define INTERPRO_FLASH_TAG "flash" #define INTERPRO_TERMINAL_TAG "terminal" @@ -52,36 +58,6 @@ #define INTERPRO_SGA_TAG "sga" #define INTERPRO_SRARB_TAG "srarb" -// system board register offsets -#define SREG_LED 0 -#define SREG_ERROR 0 -#define SREG_STATUS 1 -#define SREG_CTRL1 2 -#define SREG_CTRL2 3 - -// control register 1 -#define CTRL1_FLOPLOW 0x0001 -#define CTRL1_FLOPRDY 0x0002 -#define CTRL1_LEDENA 0x0004 -#define CTRL1_LEDDP 0x0008 -#define CTRL1_ETHLOOP 0x0010 -#define CTRL1_ETHDTR 0x0020 -#define CTRL1_ETHRMOD 0x0040 -#define CTRL1_CLIPRESET 0x0040 -#define CTRL1_FIFOACTIVE 0x0080 - -// control register 2 -#define CTRL2_PWRUP 0x0001 -#define CTRL2_PWRENA 0x0002 -#define CTRL2_HOLDOFF 0x0004 -#define CTRL2_EXTNMIENA 0x0008 -#define CTRL2_COLDSTART 0x0010 -#define CTRL2_RESET 0x0020 -#define CTRL2_BUSENA 0x0040 -#define CTRL2_FRCPARITY 0x0080 -#define CTRL2_FLASHEN 0x0080 -#define CTRL2_WMASK 0x000f - class interpro_state : public driver_device { public: @@ -89,6 +65,7 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, INTERPRO_CPU_TAG), m_mmu(*this, INTERPRO_MMU_TAG), + m_ram(*this, RAM_TAG), m_scc1(*this, INTERPRO_SCC1_TAG), m_scc2(*this, INTERPRO_SCC2_TAG), m_rtc(*this, INTERPRO_RTC_TAG), @@ -108,6 +85,8 @@ public: required_device m_maincpu; required_device m_mmu; + required_device m_ram; + // FIXME: not sure which one is the escc required_device m_scc1; required_device m_scc2; @@ -127,14 +106,73 @@ public: DECLARE_DRIVER_INIT(ip2800); - DECLARE_WRITE16_MEMBER(system_w); - DECLARE_READ16_MEMBER(system_r); + enum sreg_error_mask + { + ERROR_BPID4 = 0x0001, + ERROR_SRXMMBE = 0x0002, + ERROR_SRXHOG = 0x0004, + ERROR_SRXNEM = 0x0008, + ERROR_SRXVALID = 0x0010, + ERROR_CBUSNMI = 0x0020, + ERROR_CBUSBG = 0x00c0, + ERROR_BG = 0x0070, + ERROR_BUSHOG = 0x0080 + }; + DECLARE_READ16_MEMBER(sreg_error_r); + DECLARE_WRITE16_MEMBER(sreg_led_w) { m_sreg_led = data; } + + enum sreg_status_mask + { + STATUS_YELLOW_ZONE = 0x0001, + STATUS_SRNMI = 0x0002, + STATUS_PWRLOSS = 0x0004, + STATUS_RED_ZONE = 0x0008, + STATUS_BP = 0x00f0 + }; + DECLARE_READ16_MEMBER(sreg_status_r) { return m_sreg_status; } + + enum sreg_ctrl1_mask + { + CTRL1_FLOPLOW = 0x0001, + CTRL1_FLOPRDY = 0x0002, + CTRL1_LEDENA = 0x0004, + CTRL1_LEDDP = 0x0008, + CTRL1_ETHLOOP = 0x0010, + CTRL1_ETHDTR = 0x0020, + CTRL1_ETHRMOD = 0x0040, + CTRL1_CLIPRESET = 0x0040, + CTRL1_FIFOACTIVE = 0x0080 + }; + DECLARE_READ16_MEMBER(sreg_ctrl1_r) { return m_sreg_ctrl1; } + DECLARE_WRITE16_MEMBER(sreg_ctrl1_w); + + enum sreg_ctrl2_mask + { + CTRL2_PWRUP = 0x0001, + CTRL2_PWRENA = 0x0002, + CTRL2_HOLDOFF = 0x0004, + CTRL2_EXTNMIENA = 0x0008, + CTRL2_COLDSTART = 0x0010, + CTRL2_RESET = 0x0020, + CTRL2_BUSENA = 0x0040, + CTRL2_FRCPARITY = 0x0080, + CTRL2_FLASHEN = 0x0080, + + CTRL2_WMASK = 0x000f + }; + DECLARE_READ16_MEMBER(sreg_ctrl2_r) { return m_sreg_ctrl2; } + DECLARE_WRITE16_MEMBER(sreg_ctrl2_w); + DECLARE_READ16_MEMBER(sreg_ctrl3_r) { return m_sreg_ctrl3; } + DECLARE_WRITE16_MEMBER(sreg_ctrl3_w) { m_sreg_ctrl3 = data; } DECLARE_WRITE8_MEMBER(rtc_w); DECLARE_READ8_MEMBER(rtc_r); - DECLARE_READ32_MEMBER(idprom_r); - DECLARE_READ32_MEMBER(slot0_r); + DECLARE_READ8_MEMBER(idprom_r); + DECLARE_READ8_MEMBER(slot0_r); + + DECLARE_READ32_MEMBER(unmapped_r); + DECLARE_WRITE32_MEMBER(unmapped_w); DECLARE_READ8_MEMBER(scsi_r); DECLARE_WRITE8_MEMBER(scsi_w); @@ -148,7 +186,13 @@ protected: virtual void machine_reset() override; private: - u16 m_system_reg[4]; + u16 m_sreg_error; + u16 m_sreg_led; + u16 m_sreg_status; + u16 m_sreg_ctrl1; + u16 m_sreg_ctrl2; + + u16 m_sreg_ctrl3; }; #endif // MAME_INCLUDES_INTERPRO_H -- cgit v1.2.3 From a55447401bdbd1a3ad59c21e976e6090e84516a5 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 13:17:15 +0700 Subject: dma/irq changes, some enum masks, serial dma regs --- src/mame/machine/interpro_ioga.cpp | 259 ++++++++++++++++++++++++------------- src/mame/machine/interpro_ioga.h | 80 +++++++++--- 2 files changed, 227 insertions(+), 112 deletions(-) diff --git a/src/mame/machine/interpro_ioga.cpp b/src/mame/machine/interpro_ioga.cpp index 6904c3bb09b..15de89df772 100644 --- a/src/mame/machine/interpro_ioga.cpp +++ b/src/mame/machine/interpro_ioga.cpp @@ -45,6 +45,7 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_ioga_device) AM_RANGE(0x1c, 0x1f) AM_READWRITE(dma_plotter_eosl_r, dma_plotter_eosl_w) AM_RANGE(0x20, 0x2f) AM_READWRITE(dma_scsi_r, dma_scsi_w) AM_RANGE(0x30, 0x3f) AM_READWRITE(dma_floppy_r, dma_floppy_w) + AM_RANGE(0x40, 0x57) AM_READWRITE(dma_serial_r, dma_serial_w) AM_RANGE(0x5c, 0x7f) AM_READWRITE16(icr_r, icr_w, 0xffffffff) AM_RANGE(0x80, 0x83) AM_READWRITE16(icr18_r, icr18_w, 0x0000ffff) @@ -59,6 +60,7 @@ DEVICE_ADDRESS_MAP_START(map, 32, interpro_ioga_device) AM_RANGE(0x9c, 0x9f) AM_READWRITE16(arbctl_r, arbctl_w, 0x0000ffff) AM_RANGE(0xa8, 0xab) AM_READWRITE(timer3_r, timer3_w) + AM_RANGE(0xac, 0xaf) AM_READWRITE(bus_timeout_r, bus_timeout_w) // boot code writes 0x64 AM_RANGE(0xb0, 0xbf) AM_READWRITE16(softint_vector_r, softint_vector_w, 0xffffffff) ADDRESS_MAP_END @@ -133,8 +135,8 @@ void interpro_ioga_device::device_start() m_timer[2] = timer_alloc(IOGA_TIMER_2); m_timer[3] = timer_alloc(IOGA_TIMER_3); - for (auto & elem : m_timer) - elem->enable(false); + for (auto & timer : m_timer) + timer->enable(false); // allocate timer for DMA controller m_dma_timer = timer_alloc(IOGA_TIMER_DMA); @@ -243,7 +245,7 @@ void interpro_ioga_device::device_timer(emu_timer &timer, device_timer_id id, in { case IOGA_TIMER_0: m_timer_reg[0]++; - set_irq_line(IOGA_TIMER0_IRQ, ASSERT_LINE); + m_hwicr[IOGA_TIMER0_IRQ] |= IOGA_INTERRUPT_PENDING; break; case IOGA_TIMER_1: @@ -260,7 +262,7 @@ void interpro_ioga_device::device_timer(emu_timer &timer, device_timer_id id, in timer.set_param(true); // throw an interrupt - set_irq_line(IOGA_TIMER1_IRQ, ASSERT_LINE); + m_hwicr[IOGA_TIMER1_IRQ] |= IOGA_INTERRUPT_PENDING; } break; @@ -278,7 +280,7 @@ void interpro_ioga_device::device_timer(emu_timer &timer, device_timer_id id, in timer.set_param(true); // throw an interrupt - set_irq_line(IOGA_TIMER3_IRQ, ASSERT_LINE); + m_hwicr[IOGA_TIMER3_IRQ] |= IOGA_INTERRUPT_PENDING; } break; @@ -361,11 +363,11 @@ void interpro_ioga_device::set_nmi_line(int state) m_nmictrl &= ~IOGA_NMI_ENABLE_IN; } #endif - m_nmictrl |= IOGA_NMI_PENDING; + m_nmictrl |= NMI_PENDING; break; case CLEAR_LINE: - m_nmictrl &= ~IOGA_NMI_PENDING; + m_nmictrl &= ~NMI_PENDING; break; } } @@ -462,7 +464,7 @@ IRQ_CALLBACK_MEMBER(interpro_ioga_device::inta_cb) case INPUT_LINE_NMI: // clear pending flag - m_nmictrl &= ~IOGA_NMI_PENDING; + m_nmictrl &= ~NMI_PENDING; m_active_interrupt_type = IOGA_INTERRUPT_NONE; break; } @@ -488,25 +490,33 @@ void interpro_ioga_device::interrupt_clock() return; // check for pending nmi - if (m_nmictrl & IOGA_NMI_PENDING) + if (m_nmictrl & NMI_PENDING) { m_active_interrupt_type = IOGA_INTERRUPT_NMI; nmi(ASSERT_LINE); return; } - // check for any pending and enabled hardware interrupts + // scan all hardware interrupts for (int i = 0; i < IOGA_INTERRUPT_COUNT; i++) { - if ((m_hwicr[i] & irq_enable_mask[i]) && (m_hwicr[i] & IOGA_INTERRUPT_PENDING)) + // check if there is a pending interrupt + if (m_hwicr[i] & IOGA_INTERRUPT_PENDING) { - LOG_HWINT(i, "accepting interrupt %d - %s (%s)\n", i, interrupt_source[i], m_int_line & (1 << i) ? "real" : "forced"); + // check if from an external device or internal to ioga + bool external = m_int_line & (1 << i); - m_active_interrupt_type = IOGA_INTERRUPT_EXTERNAL; // TODO: flag internal/external - m_active_interrupt_number = i; + // check if masked + if (m_hwicr[i] & irq_enable_mask[i]) //(external ? IRQ_ENABLE_EXTERNAL : IRQ_ENABLE_INTERNAL)) + { + LOG_HWINT(i, "accepting interrupt %d - %s (%s)\n", i, interrupt_source[i], external ? "external" : "internal"); - irq(ASSERT_LINE); - return; + m_active_interrupt_type = external ? IOGA_INTERRUPT_EXTERNAL : IOGA_INTERRUPT_INTERNAL; + m_active_interrupt_number = i; + + irq(ASSERT_LINE); + return; + } } } @@ -598,6 +608,8 @@ WRITE8_MEMBER(interpro_ioga_device::softint_w) WRITE8_MEMBER(interpro_ioga_device::nmictrl_w) { + LOG_INTERRUPT("nmictrl = 0x%02x (%s)\n", data, machine().describe_context()); + #if 0 // save the existing value uint8_t previous = m_nmictrl; @@ -606,24 +618,25 @@ WRITE8_MEMBER(interpro_ioga_device::nmictrl_w) m_nmictrl = data; // force an nmi when pending bit is written low - if (previous & IOGA_NMI_PENDING && !(data & IOGA_NMI_PENDING)) + if (previous & NMI_PENDING && !(data & NMI_PENDING)) set_nmi_line(ASSERT_LINE); #else - if (data & IOGA_NMI_PENDING) +#if 0 + if (data & NMI_PENDING) { m_nmi_forced = true; - m_nmictrl = (m_nmictrl & IOGA_NMI_PENDING) | (data & ~IOGA_NMI_PENDING); + m_nmictrl = (m_nmictrl & NMI_PENDING) | (data & ~NMI_PENDING); } else if (m_nmi_forced) { m_nmi_forced = false; - m_nmictrl = data | IOGA_NMI_PENDING; + m_nmictrl = data | NMI_PENDING; } else m_nmictrl = data; - - //m_nmictrl = data & ~IOGA_NMI_PENDING; +#endif + m_nmictrl = data & ~NMI_PENDING; #endif } @@ -647,47 +660,118 @@ void interpro_ioga_device::dma_clock(int channel) { // transfer data between device and main memory - // TODO: figure out what indicates dma write (memory -> device) - // TODO: implement multiple dma channels // TODO: virtual memory? - if (!m_dma_channel[channel].dma_active) + // handle device to memory dma + if (m_dma_channel[channel].drq_state) { - LOG_DMA(channel, "dma: transfer started, channel = %d, control 0x%08x, real address 0x%08x count 0x%08x\n", - channel, m_dma_channel[channel].control, m_dma_channel[channel].real_address, m_dma_channel[channel].transfer_count); - m_dma_channel[channel].dma_active = true; - } + if (!m_dma_channel[channel].dma_active) + { + LOG_DMA(channel, "dma: transfer from device started, channel = %d, control 0x%08x, real address 0x%08x count 0x%08x\n", + channel, m_dma_channel[channel].control, m_dma_channel[channel].real_address, m_dma_channel[channel].transfer_count); + m_dma_channel[channel].dma_active = true; + } - // while the device is requesting a data transfer and the transfer count is not zero - while (m_dma_channel[channel].drq_state && m_dma_channel[channel].transfer_count) - { - // transfer a byte between device and memory - if (true) + // while the device is requesting a data transfer and the transfer count is not zero + while (m_dma_channel[channel].drq_state && m_dma_channel[channel].transfer_count) + { + // transfer from the device to memory m_memory_space->write_byte(m_dma_channel[channel].real_address, m_dma_channel[channel].device_r()); - else - m_dma_channel[channel].device_w(m_memory_space->read_byte(m_dma_channel[channel].real_address)); - // increment addresses and decrement count - m_dma_channel[channel].real_address++; - m_dma_channel[channel].virtual_address++; - m_dma_channel[channel].transfer_count--; - } + // increment addresses and decrement count + m_dma_channel[channel].real_address++; + m_dma_channel[channel].virtual_address++; + m_dma_channel[channel].transfer_count--; + } + + // if there are no more bytes remaining, terminate the transfer + if (m_dma_channel[channel].transfer_count == 0) + { + LOG_DMA(channel, "dma: transfer from device completed, control 0x%08x, real address 0x%08x count 0x%08x\n", + m_dma_channel[channel].control, m_dma_channel[channel].real_address, m_dma_channel[channel].transfer_count); + + if (channel == IOGA_DMA_FLOPPY) + { + LOG_DMA(channel, "dma: asserting fdc terminal count line\n"); - // if there are no more bytes remaining, terminate the transfer - if (m_dma_channel[channel].transfer_count == 0) + m_fdc_tc_func(ASSERT_LINE); + m_fdc_tc_func(CLEAR_LINE); + } + + m_dma_channel[channel].dma_active = false; + } + } + else // memory to device dma { - LOG_DMA(channel, "dma: transfer completed, control 0x%08x, real address 0x%08x count 0x%08x\n", - m_dma_channel[channel].control, m_dma_channel[channel].real_address, m_dma_channel[channel].transfer_count); + // get access to the bus + { + // iogadiag test 7.0265 + u32 mask = 0; + + switch (channel) + { + case IOGA_DMA_PLOTTER: + mask = ARBCTL_BGR_PLOT; + break; + + case IOGA_DMA_SCSI: + mask = ARBCTL_BGR_SCSI; + break; - if (channel == IOGA_DMA_FLOPPY) + case IOGA_DMA_FLOPPY: + mask = ARBCTL_BGR_FDC; + break; + } + + // if bus grant is not enabled, set the busy flag + if (!(m_arbctl & mask)) + { + LOG_DMA(channel, "dma: delay for bus grant channel %d\n", channel); + + m_dma_channel[channel].control |= IOGA_DMA_CTRL_BUSY; + m_dma_timer->adjust(attotime::from_hz(clock()), channel); + + return; + } + else + m_dma_channel[channel].control &= ~IOGA_DMA_CTRL_BUSY; + } + + if (!m_dma_channel[channel].dma_active) + { + LOG_DMA(channel, "dma: transfer to device begun, channel %d, control 0x%08x, real address 0x%08x, count 0x%08x\n", + channel, m_dma_channel[channel].control, m_dma_channel[channel].real_address, m_dma_channel[channel].transfer_count); + m_dma_channel[channel].dma_active = true; + } + + while (m_dma_channel[channel].transfer_count) { - LOG_DMA(channel, "dma: asserting fdc terminal count line\n"); + // transfer from memory to the device + m_dma_channel[channel].device_w(m_memory_space->read_byte(m_dma_channel[channel].real_address)); - m_fdc_tc_func(ASSERT_LINE); - m_fdc_tc_func(CLEAR_LINE); + // increment addresses and decrement count + m_dma_channel[channel].real_address++; + m_dma_channel[channel].virtual_address++; + m_dma_channel[channel].transfer_count--; } + // TODO: do we need the floppy terminal count line here? + + m_dma_channel[channel].control |= IOGA_DMA_CTRL_TCZERO; m_dma_channel[channel].dma_active = false; + + // TODO: do we need to throw an interrupt? + LOG_DMA(channel, "dma: transfer to device ended, channel %d, control 0x%08x, real address 0x%08x, count 0x%08x\n", + channel, m_dma_channel[channel].control, m_dma_channel[channel].real_address, m_dma_channel[channel].transfer_count); + + // dma ctrl = 0xbf000600 + // = 0xff000600 + // = 0x63xxxxxx + // 600 = scsi channel? + // b = 1011 + // f = 1111 + // 6 = 0101 + // -> bit 0x4 = read/write? } } @@ -739,68 +823,57 @@ void interpro_ioga_device::dma_w(address_space &space, offs_t offset, u32 data, switch (offset) { case 0: + LOG_DMA(channel, "channel %d real address = 0x%08x (%s)\n", channel, data, machine().describe_context()); m_dma_channel[channel].real_address = data; break; case 1: + LOG_DMA(channel, "channel %d virtual address = 0x%08x (%s)\n", channel, data, machine().describe_context()); m_dma_channel[channel].virtual_address = data & ~0x3; break; case 2: + LOG_DMA(channel, "channel %d transfer count = 0x%08x (%s)\n", channel, data, machine().describe_context()); m_dma_channel[channel].transfer_count = data; break; case 3: + LOG_DMA(channel, "channel %d control = 0x%08x (%s)\n", channel, data, machine().describe_context()); m_dma_channel[channel].control = data & IOGA_DMA_CTRL_WMASK; - logerror("dma: channel = %d, control = 0x%08x, ra = 0x%08x, va = 0x%08x, tc = 0x%08x at %s\n", - channel, data, m_dma_channel[channel].real_address, m_dma_channel[channel].virtual_address, m_dma_channel[channel].transfer_count, machine().describe_context()); + // start dma transfer if necessary + if (data & IOGA_DMA_CTRL_START) + m_dma_timer->adjust(attotime::from_hz(clock()), channel); + break; + } +} - // scsidiag - // dma ctrl = 0xbf000600 - // = 0xff000600 - // = 0x63xxxxxx - // 600 = scsi channel? - // b = 1011 - // f = 1111 - // 6 = 0101 - // -> bit 0x4 = read/write? - +u32 interpro_ioga_device::dma_serial_r(address_space &space, offs_t offset, u32 mem_mask) +{ + int channel = offset >> 1; - // mask + if (offset & 1) + return m_dma_serial[channel].control; + else + return m_dma_serial[channel].address; +} - // iogadiag test 7.0265 - if (data & IOGA_DMA_CTRL_START) - { - uint32_t mask = 0; +void interpro_ioga_device::dma_serial_w(address_space &space, offs_t offset, u32 data, u32 mem_mask) +{ + int channel = offset >> 1; - switch (channel) - { - case IOGA_DMA_PLOTTER: - mask = IOGA_ARBCTL_BGR_PLOT; - break; + if (offset & 1) + m_dma_serial[channel].control = (m_dma_serial[channel].control & ~mem_mask) | data; + else + m_dma_serial[channel].address = (m_dma_serial[channel].address & ~mem_mask) | data; +} - case IOGA_DMA_SCSI: - mask = IOGA_ARBCTL_BGR_SCSI; - break; +READ32_MEMBER(interpro_ioga_device::error_businfo_r) +{ + u32 result = m_error_businfo; - case IOGA_DMA_FLOPPY: - mask = IOGA_ARBCTL_BGR_FDC; - break; - } + // clear register after reading + m_error_businfo = 0; - // if bus grant is not enabled, set the busy flag - if (!(m_arbctl & mask)) - m_dma_channel[channel].control |= IOGA_DMA_CTRL_BUSY; -#if 0 - // flip transfer count zero on immediately if needed - if (m_dma_channel[channel].transfer_count == 0) - { - m_dma_channel[channel].control |= IOGA_DMA_CTRL_TCZERO; - set_irq_line(2, ASSERT_LINE); - } -#endif - } - break; - } -} + return result; +} \ No newline at end of file diff --git a/src/mame/machine/interpro_ioga.h b/src/mame/machine/interpro_ioga.h index 766a11e9ab9..4d3f0f319ea 100644 --- a/src/mame/machine/interpro_ioga.h +++ b/src/mame/machine/interpro_ioga.h @@ -47,11 +47,6 @@ #define IOGA_INTERRUPT_NEGPOL 0x0800 #define IOGA_INTERRUPT_ENABLE_INTERNAL 0x1000 -#define IOGA_NMI_EDGE 0x02 -#define IOGA_NMI_PENDING 0x08 -#define IOGA_NMI_ENABLE_IN 0x10 -#define IOGA_NMI_ENABLE (IOGA_NMI_EDGE | IOGA_NMI_ENABLE_IN) - #define IOGA_INTERRUPT_NONE 0 #define IOGA_INTERRUPT_NMI 1 #define IOGA_INTERRUPT_INTERNAL 2 @@ -85,22 +80,10 @@ #define IOGA_DMA_CTRL_UNK2 0x67000600 // forced berr with nmi and interrupts disabled #define IOGA_DMA_CTRL_UNK3 0xbf000600 // set by scsidiag before executing scsi "transfer information" command - // read values // iogadiag expects 0x64400800 after forced berr with nmi/interrupts disabled -// bus arbitration bus grant bits -#define IOGA_ARBCTL_BGR_ETHC 0x0001 -#define IOGA_ARBCTL_BGR_SCSI 0x0002 -#define IOGA_ARBCTL_BGR_PLOT 0x0004 -#define IOGA_ARBCTL_BGR_FDC 0x0008 -#define IOGA_ARBCTL_BGR_SER0 0x0010 -#define IOGA_ARBCTL_BGR_SER1 0x0020 -#define IOGA_ARBCTL_BGR_SER2 0x0040 -#define IOGA_ARBCTL_BGR_ETHB 0x0080 -#define IOGA_ARBCTL_BGR_ETHA 0x0100 - class interpro_ioga_device : public device_t { public: @@ -141,6 +124,19 @@ public: DECLARE_READ32_MEMBER(timer_prescaler_r) { return m_prescaler; } DECLARE_READ32_MEMBER(timer0_r) { return m_timer_reg[0]; } DECLARE_READ32_MEMBER(timer1_r); + + enum arbctl_mask + { + ARBCTL_BGR_ETHC = 0x0001, + ARBCTL_BGR_SCSI = 0x0002, + ARBCTL_BGR_PLOT = 0x0004, + ARBCTL_BGR_FDC = 0x0008, + ARBCTL_BGR_SER0 = 0x0010, + ARBCTL_BGR_SER1 = 0x0020, + ARBCTL_BGR_SER2 = 0x0040, + ARBCTL_BGR_ETHB = 0x0080, + ARBCTL_BGR_ETHA = 0x0100 + }; DECLARE_READ16_MEMBER(arbctl_r) { return m_arbctl; } DECLARE_WRITE16_MEMBER(arbctl_w) { m_arbctl = data; } DECLARE_READ32_MEMBER(timer2_r) { return m_timer_reg[2]; } @@ -160,6 +156,14 @@ public: DECLARE_WRITE32_MEMBER(timer2_w) { write_timer(2, data, IOGA_TIMER_2); } DECLARE_WRITE32_MEMBER(timer3_w) { write_timer(3, data, IOGA_TIMER_3); } + enum hwicr_mask + { + IRQ_PENDING = 0x0100, + IRQ_ENABLE_EXTERNAL = 0x0200, + IRQ_EDGE = 0x0400, + IRQ_NEGPOL = 0x0800, + IRQ_ENABLE_INTERNAL = 0x1000 + }; DECLARE_READ16_MEMBER(icr_r) { return m_hwicr[offset]; } DECLARE_WRITE16_MEMBER(icr_w); DECLARE_READ16_MEMBER(icr18_r) { return icr_r(space, 18, mem_mask); } @@ -167,6 +171,15 @@ public: DECLARE_READ8_MEMBER(softint_r) { return m_softint; } DECLARE_WRITE8_MEMBER(softint_w); + + enum nmictrl_mask + { + NMI_EDGE = 0x02, + NMI_PENDING = 0x08, + NMI_ENABLE_IN = 0x10, + + NMI_ENABLE = NMI_ENABLE_IN | NMI_EDGE + }; DECLARE_READ8_MEMBER(nmictrl_r) { return m_nmictrl; } DECLARE_WRITE8_MEMBER(nmictrl_w); @@ -180,14 +193,36 @@ public: DECLARE_READ32_MEMBER(dma_floppy_r) { return dma_r(space, offset, mem_mask, IOGA_DMA_FLOPPY); } DECLARE_WRITE32_MEMBER(dma_floppy_w) { dma_w(space, offset, data, mem_mask, IOGA_DMA_FLOPPY); } + DECLARE_READ32_MEMBER(dma_serial_r); + DECLARE_WRITE32_MEMBER(dma_serial_w); + DECLARE_READ32_MEMBER(dma_plotter_eosl_r) { return m_dma_plotter_eosl; } DECLARE_WRITE32_MEMBER(dma_plotter_eosl_w) { m_dma_plotter_eosl = data; } DECLARE_READ32_MEMBER(error_address_r) { return m_error_address; } - DECLARE_READ32_MEMBER(error_businfo_r) { return m_error_businfo; } + + enum error_businfo_mask + { + BINFO_CT = 0x003f, + BINFO_TAG = 0x01c0, + BINFO_BG = 0x0e00, + BINFO_BERR = 0x1000, + BINFO_MMBE = 0x2000, + BINFO_SNAPOK = 0x4000, + BINFO_MSBE = 0x8000 + }; + enum error_businfo_bg + { + BINFO_BG_IOD = 0x0200, + BINFO_BG_ICAMMU = 0x0400, + BINFO_BG_DCAMMU = 0x0800, + BINFO_BG_SRMASTER = 0x0c00 + }; + DECLARE_READ32_MEMBER(error_businfo_r); + DECLARE_READ32_MEMBER(bus_timeout_r) { return m_bus_timeout; } + DECLARE_WRITE32_MEMBER(bus_timeout_w) { m_bus_timeout = data; } DECLARE_WRITE32_MEMBER(bus_error) { m_error_address = data; m_error_businfo = offset; } - //void bus_error(uint32_t address, uint32_t cycle_type) { m_error_address = address; m_error_businfo = cycle_type; } protected: // device-level overrides @@ -231,6 +266,12 @@ private: } m_dma_channel[IOGA_DMA_CHANNELS]; u32 m_dma_plotter_eosl; + struct serial_dma + { + u32 address; + u32 control; + } m_dma_serial[3]; + devcb_write_line m_fdc_tc_func; u32 m_active_interrupt_type; @@ -260,6 +301,7 @@ private: u32 m_error_address; u32 m_error_businfo; + u32 m_bus_timeout; emu_timer *m_ioga_clock; int m_nmi_state; -- cgit v1.2.3 From 08592aceb6229acc43d1c6454a9b55b0103cc244 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 14:20:33 +0700 Subject: file modes --- src/lib/netlist/nl_base.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 src/lib/netlist/nl_base.h diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h old mode 100755 new mode 100644 -- cgit v1.2.3 From ec43d98f669c48f016ca94cfc83ccaec5c7d1d8a Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 14:24:01 +0700 Subject: more file modes --- src/lib/netlist/nl_factory.cpp | 0 src/lib/netlist/nl_factory.h | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 src/lib/netlist/nl_factory.cpp mode change 100755 => 100644 src/lib/netlist/nl_factory.h diff --git a/src/lib/netlist/nl_factory.cpp b/src/lib/netlist/nl_factory.cpp old mode 100755 new mode 100644 diff --git a/src/lib/netlist/nl_factory.h b/src/lib/netlist/nl_factory.h old mode 100755 new mode 100644 -- cgit v1.2.3 From 98c5240869695b8515c7ce00350178647b68c8d8 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 19:04:27 +0700 Subject: minor fixes --- src/devices/cpu/clipper/clipper.cpp | 2 +- src/mame/drivers/interpro.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/cpu/clipper/clipper.cpp b/src/devices/cpu/clipper/clipper.cpp index ab4f1482a18..357cd4b3f08 100644 --- a/src/devices/cpu/clipper/clipper.cpp +++ b/src/devices/cpu/clipper/clipper.cpp @@ -1346,7 +1346,7 @@ u32 clipper_device::intrap(u32 vector, u32 pc, u32 cts, u32 mts) m_rs[15] -= 24; // load ssw from trap vector and set previous mode - set_ssw(m_data->read_dword(vector + 0) & ~(SSW(P)) | (SSW(U) << 1)); + set_ssw((m_data->read_dword(vector + 0) & ~(SSW(P))) | (SSW(U) << 1)); // clear psw m_psw = 0; diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 21a2845671d..dc3ea441252 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -452,7 +452,7 @@ static MACHINE_CONFIG_START(ip2800) MCFG_RS232_DCD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, dcda_w)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, ctsa_w)) - // eprom uses this serial port for console (show_config calls "port 2") + // eprom uses this serial port for console (show_config calls it "port 2") MCFG_RS232_PORT_ADD(INTERPRO_SERIAL2_TAG, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, rxb_w)) MCFG_RS232_DCD_HANDLER(DEVWRITELINE(INTERPRO_SCC1_TAG, z80scc_device, dcdb_w)) -- cgit v1.2.3 From 66d825fc52dd0cb10b4ab217eb02bf6ec48f62c4 Mon Sep 17 00:00:00 2001 From: Patrick Mackinlay Date: Tue, 20 Jun 2017 19:25:33 +0700 Subject: formatting --- src/mame/machine/interpro_mcga.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mame/machine/interpro_mcga.cpp b/src/mame/machine/interpro_mcga.cpp index 2447d2498d9..66ef3f30411 100644 --- a/src/mame/machine/interpro_mcga.cpp +++ b/src/mame/machine/interpro_mcga.cpp @@ -82,8 +82,8 @@ WRITE16_MEMBER(interpro_mcga_device::control_w) // HACK: set or clear error status depending on ENMMBE bit if (data & CONTROL_ENMMBE) m_error |= ERROR_VALID; - // else - // error &= ~ERROR_VALID; + //else + // m_error &= ~ERROR_VALID; } WRITE16_MEMBER(interpro_fmcc_device::control_w) @@ -93,6 +93,6 @@ WRITE16_MEMBER(interpro_fmcc_device::control_w) // HACK: set or clear error status depending on ENMMBE bit if (data & CONTROL_ENMMBE) m_error |= ERROR_VALID; - // else - // error &= ~ERROR_VALID; + //else + // m_error &= ~ERROR_VALID; } -- cgit v1.2.3